diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 216993fba02..193c5fb7a70 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -2,7 +2,7 @@ "build": { "dockerfile": "Dockerfile", "args": { - "GEOS_TPL_TAG": "286-547" + "GEOS_TPL_TAG": "290-594" } }, "runArgs": [ diff --git a/.github/workflows/ci_tests.yml b/.github/workflows/ci_tests.yml index a1803a9e008..7a28f313d01 100644 --- a/.github/workflows/ci_tests.yml +++ b/.github/workflows/ci_tests.yml @@ -183,6 +183,15 @@ jobs: ENABLE_TRILINOS: OFF BUILD_SHARED_LIBS: ON + - name: Sherlock CPU (centos 7.9.2009, gcc 10.1.0, open-mpi 4.1.2, openblas 0.3.10) + CMAKE_BUILD_TYPE: Release + DOCKER_REPOSITORY: geosx/sherlock-gcc10.1.0-openmpi4.1.2-openblas0.3.10-zlib1.2.11 + ENABLE_HYPRE: ON + ENABLE_TRILINOS: OFF + GCP_BUCKET: geosx/Sherlock-CPU + HOST_CONFIG: host-configs/Stanford/sherlock-gcc10.cmake + BUILD_SHARED_LIBS: ON + uses: ./.github/workflows/build_and_test.yml with: BUILD_SHARED_LIBS: ${{ matrix.BUILD_SHARED_LIBS }} @@ -192,6 +201,7 @@ jobs: ENABLE_HYPRE: ${{ matrix.ENABLE_HYPRE }} ENABLE_TRILINOS: ${{ matrix.ENABLE_TRILINOS }} GCP_BUCKET: ${{ matrix.GCP_BUCKET }} + HOST_CONFIG: ${{ matrix.HOST_CONFIG }} RUNS_ON: ubuntu-22.04 secrets: inherit @@ -330,7 +340,7 @@ jobs: DOCKER_CERTS_DIR: "/etc/pki/ca-trust/source/anchors" DOCKER_CERTS_UPDATE_COMMAND: "update-ca-trust" - - name: Pangea 3 (AlmaLinux 8.8, gcc 9.4.0, open-mpi 4.1.2, cuda 11.5.0, openblas 0.3.10) + - name: Pangea 3 CUDA (AlmaLinux 8.8, gcc 9.4.0, open-mpi 4.1.2, cuda 11.5.0, openblas 0.3.10) BUILD_AND_TEST_CLI_ARGS: "--build-exe-only --no-install-schema" CMAKE_BUILD_TYPE: Release BUILD_GENERATOR: "--makefile" @@ -346,6 +356,21 @@ jobs: DOCKER_CERTS_DIR: "/etc/pki/ca-trust/source/anchors" DOCKER_CERTS_UPDATE_COMMAND: "update-ca-trust" + - name: Sherlock GPU (centos 7.9.2009, gcc 10.1.0, open-mpi 4.1.2, openblas 0.3.10, cuda 12.4.0,) + BUILD_AND_TEST_CLI_ARGS: "--no-run-unit-tests --no-install-schema" + BUILD_GENERATOR: "--ninja" + CMAKE_BUILD_TYPE: Release + DOCKER_REPOSITORY: geosx/sherlock-gcc10.1.0-openmpi4.1.2-cuda12.4.0-openblas0.3.10-zlib1.2.11 + ENABLE_HYPRE_DEVICE: CUDA + ENABLE_HYPRE: ON + ENABLE_TRILINOS: OFF + GCP_BUCKET: geosx/Sherlock-GPU + HOST_CONFIG: host-configs/Stanford/sherlock-gcc10-cuda12-sm70.cmake + RUNS_ON: streak2 + NPROC: 8 + DOCKER_RUN_ARGS: "--cpus=8 --memory=128g --runtime=nvidia -v /etc/pki/ca-trust/source/anchors/:/etc/pki/ca-trust/source/anchors/llnl:ro" + DOCKER_CERTS_DIR: "/etc/pki/ca-trust/source/anchors" + DOCKER_CERTS_UPDATE_COMMAND: "update-ca-trust" # Below this line, jobs that deploy to Google Cloud. diff --git a/.integrated_tests.yaml b/.integrated_tests.yaml index 00502a919e4..ea7e4b5b516 100644 --- a/.integrated_tests.yaml +++ b/.integrated_tests.yaml @@ -1,6 +1,7 @@ baselines: bucket: geosx - baseline: integratedTests/baseline_integratedTests-pr3339-8707-7c55c70 + baseline: integratedTests/baseline_integratedTests-pr3395-9832-31f145e + allow_fail: all: '' streak: '' diff --git a/BASELINE_NOTES.md b/BASELINE_NOTES.md index f4dcac6a76e..fe597c2c6c8 100644 --- a/BASELINE_NOTES.md +++ b/BASELINE_NOTES.md @@ -6,6 +6,85 @@ This file is designed to track changes to the integrated test baselines. Any developer who updates the baseline ID in the .integrated_tests.yaml file is expected to create an entry in this file with the pull request number, date, and their justification for rebaselining. These notes should be in reverse-chronological order, and use the following time format: (YYYY-MM-DD). +PR #3395 (2024-01-22) +===================== +Add new fields and change the default input for some tests. + +PR #3416 (2024-01-21) +===================== +Refactoring of induced seismicity EQ solvers to add coupling. + +PR #3310 (2024-01-21) +====================== +Scalable rock toughness required new field. + +PR #3228 (2024-01-15) +===================== +deltaVolume added in multiphase. + +PR #3495 (2024-01-08) +===================== +Add missing logic to support switching from fixed mass rate injection rate constraint to max injection pressure. + +PR #3384 (2024-01-07) +===================== +Added plastic strain output. + +PR #3486 (2025-01-06) +===================== +useNewGravity became gravityDensityScheme. + +PR #3479 (2024-12-15) +===================== +Refine inputFiles/compositionalMultiphaseFlow: shift reference pressures to initial pressures, make nonlinear tuning more reasonable, minimize output. + +PR #3450 (2024-12-14) +===================== +Fix timestep selector flaw in SolidMechanicsLagrangeContact. + +PR #3450 (2024-12-08) +===================== +Added test for explicit runge kutta sprinslider. + +PR #3480 (2024-12-06) +===================== +Add "logLevel" parameter under /Problem/Outputs in baseline files + +PR #3361 (2024-12-03) +===================== +Revert default gravity treatment to old version. Make the way introduced in #3337 optional. + +PR #3361 (2024-12-03) +===================== +Baseline diffs after reimplementation of wave equation acoustic gradient for velocity and density parameters: new field "partialGradient2" and "pressureForward" field replacing "pressureDoubleDerivative". + +PR #3393 (2024-12-02) +===================== +Fix netToGross bug. + +PR #3381 (2024-12-01) +===================== +A few baseline diffs for order FaceElementSubRegion::m_toFacesRelation map. Not sure why this was changed by this PR, but the previous order seems incorrect for a couple of cases. + +PR #2957 (2024-11-27) +===================== +Added ExternalDataRepository. + +PR #3448 (2024-11-21) +===================== +Switched the FaceElementSubRegion::m_toFacesRelation and FaceElementSubRegion::m_2dElemToElems back to array2d instead of ArrayOfArray. This results in a reordering m_toFacesRelation back to the "correct" assumed order of "original face first". This fixes a bug that failed to remove the CellStencil entry when a FaceElement splits two cells. + +PR #2637 (2024-11-21) +===================== +Added numberOfTargetProcesses. + +PR #3439 (2024-11-20) +===================== +EDFM bugfixes: derivatives sign, frac/cell element volume, fix apertures inconsistency in test cases. + +PR ##3440 (2024-11-18) +===================== +Added Lagrange multiplier with bubble functions stabilization (sli only) and possibility to specify a slip. PR #3339 (2024-11-14) ===================== diff --git a/COPYRIGHT b/COPYRIGHT index 75b72981c2d..8f0b0b47cbd 100644 --- a/COPYRIGHT +++ b/COPYRIGHT @@ -8,7 +8,7 @@ contributors. The following copyright applies to each file in the GEOS distribution, unless otherwise stated in the file: * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/RELEASE b/RELEASE deleted file mode 100644 index 4d39ef0a36e..00000000000 --- a/RELEASE +++ /dev/null @@ -1,13 +0,0 @@ -******************************************************************************* - -GEOSX version 0.2.0 - - Copyright (c) 2018-2020 Lawrence Livermore National Security LLC - Copyright (c) 2018-2020 The Board of Trustees of the Leland Stanford Junior University - Copyright (c) 2018-2020 TotalEnergies - Copyright (c) 2019- GEOSX Contributors - All rights reserved. See details in the file LICENSE. - -Unlimited Open Source - LGPL v2.1 Distribution -LLNL-CODE-812638 -OCEC-18-039 diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md deleted file mode 100644 index 5a0dc167c94..00000000000 --- a/RELEASE_NOTES.md +++ /dev/null @@ -1,82 +0,0 @@ -[comment]: # (-----------------------------------------------------------------) -[comment]: # (SPDX-License-Identifier: LGPL-2.1-only) -[comment]: # -[comment]: # (Copyright 2018-2020 Lawrence Livermore National Security LLC) -[comment]: # (Copyright 2018-2020 The Board of Trustees of the Leland Stanford) -[comment]: # ( Junior University) -[comment]: # (Copyright 2018-2020 Total, S.A) -[comment]: # (Copyright 2019- GEOSX Contributors) -[comment]: # (All right reserved) -[comment]: # -[comment]: # (For more details see:) -[comment]: # ( https://github.com/GEOS-DEV/GEOS/LICENSE) -[comment]: # ( https://github.com/GEOS-DEV/GEOS/COPYRIGHT) -[comment]: # ( https://github.com/GEOS-DEV/GEOS/CONTRIBUTORS) -[comment]: # ( https://github.com/GEOS-DEV/GEOS/NOTICE) -[comment]: # ( https://github.com/GEOS-DEV/GEOS/ACKNOWLEDGEMENTS) -[comment]: # ( https://github.com/GEOS-DEV/GEOS/RELEASE) - - -Version v0.2.0 -- Release date 2020-06-20 -========================================== -* Extensive updates to Data Repository -* Discretization - * Finite element interface - * Kernel launching interface looping abstraction - * Element formulations for 1st order: - * 8-node hexahedron - * 6-node wedge - * 5-node pyramid - * 4-node tetrahedron - * Cell-centered Finite Volume method with Two-point Flux Approximation (TPFA) - * Hybrid Finite Volume method with TPFA and quasi-TPFA inner products -* Physics Solvers - * Solid mechanics explicit on GPU, implicit assembly on GPU - * Single-phase flow (assembly on GPU) - * Classical FVM and Hybrid FVM formulations - * Porous matrix and DFM fracture flow - * Compositional multiphase flow (assembly on GPU) - * Fully implicit isothermal overall composition formulation - * Fluid constitutive models: - * Equation-of-state hydrocarbon compositional - * Three-phase extended black-oil - * Two-phase CO2-brine - * Multi-segmented wells for single phase and compositional multiphase flow (assembly on GPU) - * Surface Generation - * Topology change (legacy GEOS approach) -* Embedded Discrete Fractures - * Enriched finite element method for the discretization of the mechanics - * Piecewise constant displacement jump enrichment - * Hydrofracture solver (legacy GEOS approach) - * Small strain aligned contact using Lagrange multipliers - * Discrete fracture model using a low-order stabilized mixed finite element method - * Proppant Transport Solver - * FVM formulation - * Major physical processes modeled: - * Proppant-fluid slurry flow and multicomponent transport in fractures - * Proppant gravitational settling - * Proppant bed build-up and development space -* Mesh Structure - * Introduced the concept of extrinsic mesh data - * Fracture elements to represent FV cells in fractures -* VTK output -* Linear algebra interface layers for Hypre, Trilinos, Petsc - * Common interface for supported linear algebra packages - * Krylov solvers (CG, GMRES, BiCGSTAB) - * Preconditioners (algebraic multigrid, incomplete factorizations) - * Block matrix and vector support - * Serial and parallel direct solvers - - -Version v0.1.0 -- Release date 2018-02-15 -========================================== -Initial Code Release containing: -* Data Repository - * Group - * Wrapper - * Input processing -* Physics solver hierarchy - * Solid Mechanics -* Mesh data structure - * NodeManager, EdgeManager, FaceManager, ElementManager - * Silo Output diff --git a/examples/ObjectCatalog/Base.hpp b/examples/ObjectCatalog/Base.hpp index 19ba0cb73e8..c8e320afe48 100644 --- a/examples/ObjectCatalog/Base.hpp +++ b/examples/ObjectCatalog/Base.hpp @@ -3,9 +3,9 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University - * Copyright (c) 2023-2024 Chevron + * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors * All rights reserved * @@ -46,7 +46,7 @@ class Parameter class Base { public: - Base( int junk, double const & junk2, Parameter& pbv ) + Base( int junk, double const & junk2, Parameter & pbv ) { GEOS_LOG( "calling Base constructor with arguments (" << junk << " " << junk2 << ")" ); } @@ -56,14 +56,20 @@ class Base GEOS_LOG( "calling Base destructor" ); } - using CatalogInterface = dataRepository::CatalogInterface< Base, int, double const &, Parameter& >; - static CatalogInterface::CatalogType& getCatalog() + using CatalogInterface = dataRepository::CatalogInterface< Base, int, double const &, Parameter & >; + static CatalogInterface::CatalogType & getCatalog() { static CatalogInterface::CatalogType catalog; return catalog; } virtual std::string const getName() const = 0; + + static DataContext const & getDataContext() + { + static DataFileContext const context = DataFileContext( "Base Test Class", __FILE__, __LINE__ ); + return context; + } }; #endif diff --git a/examples/ObjectCatalog/Derived1.cpp b/examples/ObjectCatalog/Derived1.cpp index 8f688f3d486..ef257e85a78 100644 --- a/examples/ObjectCatalog/Derived1.cpp +++ b/examples/ObjectCatalog/Derived1.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/examples/ObjectCatalog/Derived1.hpp b/examples/ObjectCatalog/Derived1.hpp index 49ec9755ea2..557ae84e409 100644 --- a/examples/ObjectCatalog/Derived1.hpp +++ b/examples/ObjectCatalog/Derived1.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/examples/ObjectCatalog/Derived2.cpp b/examples/ObjectCatalog/Derived2.cpp index 3c43129c014..59e61ad94d1 100644 --- a/examples/ObjectCatalog/Derived2.cpp +++ b/examples/ObjectCatalog/Derived2.cpp @@ -2,10 +2,11 @@ * ------------------------------------------------------------------------------------------------------------ * SPDX-License-Identifier: LGPL-2.1-only * - * Copyright (c) 2018-2020 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2020 The Board of Trustees of the Leland Stanford Junior University - * Copyright (c) 2018-2020 Total, S.A - * Copyright (c) 2019- GEOSX Contributors + * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC + * Copyright (c) 2018-2024 TotalEnergies + * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University + * Copyright (c) 2023-2024 Chevron + * Copyright (c) 2019- GEOS/GEOSX Contributors * All rights reserved * * See top level LICENSE, COPYRIGHT, CONTRIBUTORS, NOTICE, and ACKNOWLEDGEMENTS files for details. diff --git a/examples/ObjectCatalog/Derived2.hpp b/examples/ObjectCatalog/Derived2.hpp index bb06254d07e..bc3ebede41a 100644 --- a/examples/ObjectCatalog/Derived2.hpp +++ b/examples/ObjectCatalog/Derived2.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/examples/ObjectCatalog/main.cpp b/examples/ObjectCatalog/main.cpp index 11452b82e93..88c52c48d95 100644 --- a/examples/ObjectCatalog/main.cpp +++ b/examples/ObjectCatalog/main.cpp @@ -3,9 +3,9 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University - * Copyright (c) 2023-2024 Chevron + * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors * All rights reserved * @@ -31,10 +31,14 @@ int main( int argc, char *argv[] ) GEOS_LOG( "Attempting to create a Derived1 object" ); - std::unique_ptr derived1 = Base::CatalogInterface::Factory( "derived1", junk, junk2, param ); + std::unique_ptr< Base > derived1 = Base::CatalogInterface::factory( "derived1", + Base::getDataContext(), + junk, junk2, param ); GEOS_LOG( "Attempting to create a Derived2 object" ); - std::unique_ptr derived2 = Base::CatalogInterface::Factory( "derived2", junk, junk3, param ); + std::unique_ptr< Base > derived2 = Base::CatalogInterface::factory( "derived2", + Base::getDataContext(), + junk, junk3, param ); - Base::CatalogInterface::catalog_cast( *(derived2.get())); + Base::CatalogInterface::catalog_cast< Derived1 >( *(derived2.get())); GEOS_LOG( "EXITING MAIN" ); } diff --git a/examples/pygeosxExamples/modifyBoundaryCondition/pkn_example.xml b/examples/pygeosxExamples/modifyBoundaryCondition/pkn_example.xml index 94db4f07eb6..23aed51fc40 100644 --- a/examples/pygeosxExamples/modifyBoundaryCondition/pkn_example.xml +++ b/examples/pygeosxExamples/modifyBoundaryCondition/pkn_example.xml @@ -62,7 +62,7 @@ diff --git a/host-configs/LLNL/lassen-clang-10-cuda-11.cmake b/host-configs/LLNL/lassen-clang-10-cuda-11.cmake index 74c04803ed8..9c9ff7de26c 100644 --- a/host-configs/LLNL/lassen-clang-10-cuda-11.cmake +++ b/host-configs/LLNL/lassen-clang-10-cuda-11.cmake @@ -1,7 +1,7 @@ include(${CMAKE_CURRENT_LIST_DIR}/../../src/coreComponents/LvArray/host-configs/LLNL/lassen-clang-10-cuda-11.cmake) # Fortran -set(CMAKE_Fortran_COMPILER /usr/tce/packages/xl/xl-2022.08.19-cuda-11.8.0/bin/xlf_r CACHE PATH "") +set(CMAKE_Fortran_COMPILER /usr/tce/packages/xl/xl-2023.06.28/xlf/16.1.1/bin/xlf CACHE PATH "") set(CMAKE_Fortran_FLAGS_RELEASE "-O3 -DNDEBUG -qarch=pwr9 -qtune=pwr9" CACHE STRING "") set(FORTRAN_MANGLE_NO_UNDERSCORE ON CACHE BOOL "") set(OpenMP_Fortran_FLAGS "-qsmp=omp" CACHE STRING "") @@ -9,8 +9,8 @@ set(OpenMP_Fortran_LIB_NAMES "" CACHE STRING "") # MPI set(MPI_HOME /usr/tce/packages/spectrum-mpi/spectrum-mpi-rolling-release-clang-10.0.1-gcc-8.3.1 CACHE PATH "") -set(MPI_Fortran_COMPILER /usr/tce/packages/spectrum-mpi/spectrum-mpi-rolling-release-xl-2022.08.19-cuda-11.8.0/bin/mpifort CACHE PATH "") +set(MPI_Fortran_COMPILER /usr/tce/packages/spectrum-mpi/spectrum-mpi-rolling-release-xl-2023.06.28-cuda-11.8.0/bin/mpifort CACHE PATH "") include(${CMAKE_CURRENT_LIST_DIR}/lassen-base.cmake) -set(ENABLE_CUDA_NVTOOLSEXT OFF CACHE BOOL "") \ No newline at end of file +set(ENABLE_CUDA_NVTOOLSEXT ON CACHE BOOL "") \ No newline at end of file diff --git a/host-configs/LLNL/lassen-clang-13-cuda-11.cmake b/host-configs/LLNL/lassen-clang-13-cuda-11.cmake index 428274e26d2..c57f0014e51 100644 --- a/host-configs/LLNL/lassen-clang-13-cuda-11.cmake +++ b/host-configs/LLNL/lassen-clang-13-cuda-11.cmake @@ -1,7 +1,7 @@ include(${CMAKE_CURRENT_LIST_DIR}/../../src/coreComponents/LvArray/host-configs/LLNL/lassen-clang-13-cuda-11.cmake) # Fortran -set(CMAKE_Fortran_COMPILER /usr/tce/packages/xl/xl-2022.08.19-cuda-11.8.0/bin/xlf_r CACHE PATH "") +set(CMAKE_Fortran_COMPILER /usr/tce/packages/xl/xl-2023.06.28/xlf/16.1.1/bin/xlf CACHE PATH "") set(CMAKE_Fortran_FLAGS_RELEASE "-O3 -DNDEBUG -qarch=pwr9 -qtune=pwr9" CACHE STRING "") set(FORTRAN_MANGLE_NO_UNDERSCORE ON CACHE BOOL "") set(OpenMP_Fortran_FLAGS "-qsmp=omp" CACHE STRING "") @@ -9,7 +9,7 @@ set(OpenMP_Fortran_LIB_NAMES "" CACHE STRING "") # MPI set(MPI_HOME /usr/tce/packages/spectrum-mpi/spectrum-mpi-rolling-release-clang-13.0.1-gcc-8.3.1 CACHE PATH "") -set(MPI_Fortran_COMPILER /usr/tce/packages/spectrum-mpi/spectrum-mpi-rolling-release-xl-2022.08.19-cuda-11.8.0/bin/mpifort CACHE PATH "") +set(MPI_Fortran_COMPILER /usr/tce/packages/spectrum-mpi/spectrum-mpi-rolling-release-xl-2023.06.28-cuda-11.8.0/bin/mpifort CACHE PATH "") include(${CMAKE_CURRENT_LIST_DIR}/lassen-base.cmake) diff --git a/host-configs/LLNL/lassen-gcc-8-cuda-11.cmake b/host-configs/LLNL/lassen-gcc-8-cuda-11.cmake index fa12811e52e..3e9fd6783d7 100644 --- a/host-configs/LLNL/lassen-gcc-8-cuda-11.cmake +++ b/host-configs/LLNL/lassen-gcc-8-cuda-11.cmake @@ -14,4 +14,6 @@ set(FORTRAN_MANGLE_NO_UNDERSCORE OFF CACHE BOOL "") set(MPI_HOME /usr/tce/packages/spectrum-mpi/spectrum-mpi-rolling-release-gcc-8.3.1 CACHE PATH "") set(MPI_Fortran_COMPILER ${MPI_HOME}/bin/mpifort CACHE PATH "") +set(ENABLE_CUDA_NVTOOLSEXT ON CACHE BOOL "") + include(${CMAKE_CURRENT_LIST_DIR}/lassen-base.cmake) diff --git a/host-configs/Stanford/sherlock-base.cmake b/host-configs/Stanford/sherlock-base.cmake deleted file mode 100644 index e7e0e0ee83a..00000000000 --- a/host-configs/Stanford/sherlock-base.cmake +++ /dev/null @@ -1,50 +0,0 @@ -site_name(HOST_NAME) - -# Compilers -set(CMAKE_C_COMPILER "${GCC_ROOT}/bin/gcc" CACHE PATH "") -set(CMAKE_CXX_COMPILER "${GCC_ROOT}/bin/g++" CACHE PATH "") -set(CMAKE_Fortran_COMPILER "${GCC_ROOT}/bin/gfortran" CACHE PATH "") - -# OpenMP options -set(ENABLE_OPENMP ON CACHE BOOL "") - -# MPI options -set(ENABLE_MPI ON CACHE PATH "" FORCE) -set(MPI_C_COMPILER "${MPI_ROOT}/bin/mpicc" CACHE PATH "") -set(MPI_CXX_COMPILER "${MPI_ROOT}/bin/mpic++" CACHE PATH "") -set(MPI_Fortran_COMPILER "${MPI_ROOT}/bin/mpifort" CACHE PATH "") -set(MPIEXEC "${MPI_ROOT}/bin/mpirun" CACHE PATH "") -set(MPIEXEC_NUMPROC_FLAG "-n" CACHE STRING "") -set(ENABLE_WRAP_ALL_TESTS_WITH_MPIEXEC ON CACHE BOOL "") - -# CUDA options -if(ENABLE_CUDA) - set(CMAKE_CUDA_HOST_COMPILER ${MPI_CXX_COMPILER} CACHE STRING "") - set(CMAKE_CUDA_COMPILER ${CUDA_TOOLKIT_ROOT_DIR}/bin/nvcc CACHE STRING "") - set(CMAKE_CUDA_FLAGS "-restrict -arch ${CUDA_ARCH} --expt-extended-lambda --expt-relaxed-constexpr -Werror cross-execution-space-call,reorder,deprecated-declarations" CACHE STRING "") - set(CMAKE_CUDA_FLAGS_RELEASE "-O3 -DNDEBUG -Xcompiler -DNDEBUG -Xcompiler -O3" CACHE STRING "") - set(CMAKE_CUDA_FLAGS_RELWITHDEBINFO "-g -lineinfo ${CMAKE_CUDA_FLAGS_RELEASE}" CACHE STRING "") - set(CMAKE_CUDA_FLAGS_DEBUG "-g -G -O0 -Xcompiler -O0" CACHE STRING "") -endif() - -# Blas/Lapack options -set(BLAS_LIBRARIES "/share/software/user/open/openblas/0.3.10/lib/libblas.so" CACHE STRING "") -set(LAPACK_LIBRARIES "/share/software/user/open/openblas/0.3.10/lib/liblapack.so" CACHE STRING "") - -# Python options -#set(ENABLE_PYLVARRAY ON CACHE BOOL "") -#set(ENABLE_PYGEOSX ON CACHE BOOL "") -#set(PYTHON_DIR "/share/software/user/open/python/3.6.1" CACHE PATH "") -#set(Python3_EXECUTABLE "/share/software/user/open/python/3.6.1/bin/python3" CACHE PATH "") - -set(ENABLE_VALGRIND OFF CACHE BOOL "") -set(ENABLE_CALIPER ON CACHE BOOL "") - -if( ${ENABLE_HYPRE_DEVICE} STREQUAL "CUDA" ) - set(ENABLE_PETSC OFF CACHE BOOL "") - set(ENABLE_TRILINOS OFF CACHE BOOL "") - set(GEOS_LA_INTERFACE "Hypre" CACHE STRING "") -endif() - -set(GEOS_TPL_DIR /home/groups/tchelepi/geosx/thirdPartyLibs/install-${CONFIG_NAME}-release CACHE PATH "") -include(/home/groups/tchelepi/geosx/GEOSX/host-configs/tpls.cmake) diff --git a/host-configs/Stanford/sherlock-gcc10-cuda11-ampere.cmake b/host-configs/Stanford/sherlock-gcc10-cuda11-ampere.cmake deleted file mode 100644 index 62889988335..00000000000 --- a/host-configs/Stanford/sherlock-gcc10-cuda11-ampere.cmake +++ /dev/null @@ -1,13 +0,0 @@ -set(CONFIG_NAME "sherlock-gcc10-cuda11-ampere" CACHE PATH "") - -set(GCC_ROOT "/share/software/user/open/gcc/10.1.0" CACHE PATH "") -set(MPI_ROOT "/share/software/user/open/openmpi/4.1.0" CACHE PATH "") - -set(ENABLE_CUDA ON CACHE BOOL "" FORCE) -set(ENABLE_HYPRE_DEVICE "CUDA" CACHE STRING "" FORCE) -set(CUDA_ARCH "sm_80" CACHE STRING "") -set(CMAKE_CUDA_ARCHITECTURES "80" CACHE STRING "") -set(CUDA_TOOLKIT_ROOT_DIR "/share/software/user/open/cuda/11.2.0" CACHE STRING "") - -include(/home/groups/tchelepi/geosx/host-configs/sherlock-base.cmake) - diff --git a/host-configs/Stanford/sherlock-gcc10-cuda11-volta.cmake b/host-configs/Stanford/sherlock-gcc10-cuda11-volta.cmake deleted file mode 100644 index 1de72e32fe5..00000000000 --- a/host-configs/Stanford/sherlock-gcc10-cuda11-volta.cmake +++ /dev/null @@ -1,13 +0,0 @@ -set(CONFIG_NAME "sherlock-gcc10-cuda11-volta" CACHE PATH "") - -set(GCC_ROOT "/share/software/user/open/gcc/10.1.0" CACHE PATH "") -set(MPI_ROOT "/share/software/user/open/openmpi/4.1.0" CACHE PATH "") - -set(ENABLE_CUDA ON CACHE BOOL "" FORCE) -set(ENABLE_HYPRE_DEVICE "CUDA" CACHE STRING "" FORCE) -set(CUDA_ARCH "sm_70" CACHE STRING "") -set(CMAKE_CUDA_ARCHITECTURES "70" CACHE STRING "") -set(CUDA_TOOLKIT_ROOT_DIR "/share/software/user/open/cuda/11.2.0" CACHE STRING "") - -include(/home/groups/tchelepi/geosx/host-configs/sherlock-base.cmake) - diff --git a/host-configs/Stanford/sherlock-gcc10-ompi4.1.2-openblas0.3.10-cuda11.7.1-sm70.cmake b/host-configs/Stanford/sherlock-gcc10-cuda12-sm70.cmake similarity index 83% rename from host-configs/Stanford/sherlock-gcc10-ompi4.1.2-openblas0.3.10-cuda11.7.1-sm70.cmake rename to host-configs/Stanford/sherlock-gcc10-cuda12-sm70.cmake index 0fd52e8d3bf..153a177e37c 100644 --- a/host-configs/Stanford/sherlock-gcc10-ompi4.1.2-openblas0.3.10-cuda11.7.1-sm70.cmake +++ b/host-configs/Stanford/sherlock-gcc10-cuda12-sm70.cmake @@ -1,17 +1,14 @@ -include(${CMAKE_CURRENT_LIST_DIR}/sherlock-gcc10-ompi4.1.2-openblas0.3.10.cmake) - -# OpenMP options -set(ENABLE_OPENMP OFF CACHE BOOL "" FORCE) +include(${CMAKE_CURRENT_LIST_DIR}/sherlock-gcc10.cmake) # CUDA options set(ENABLE_CUDA ON CACHE BOOL "" FORCE) -set(CUDA_VERSION "11.7.1" CACHE PATH "") +set(CUDA_VERSION "12.4.0" CACHE PATH "") set(CUDA_HOME "${SOFTWARE_ROOT}/cuda/${CUDA_VERSION}" CACHE PATH "") set(CMAKE_CUDA_ARCHITECTURES "70" CACHE STRING "") set(CUDA_ARCH "sm_${CMAKE_CUDA_ARCHITECTURES}" CACHE STRING "") set(CUDA_TOOLKIT_ROOT_DIR "${CUDA_HOME}" CACHE STRING "") -set(CONFIG_NAME "sherlock-gcc10-ompi4.1.2-openblas0.3.10-cuda${CUDA_VERSION}-${CUDA_ARCH}" CACHE PATH "" FORCE) +set(CONFIG_NAME "sherlock-gcc${GCC_VERSION}-ompi${OMPI_VERSION}-openblas${OPENBLAS_VERSION}-cuda${CUDA_VERSION}-${CUDA_ARCH}" CACHE PATH "" FORCE) set(CMAKE_CUDA_HOST_COMPILER ${MPI_CXX_COMPILER} CACHE STRING "") set(CMAKE_CUDA_COMPILER ${CUDA_TOOLKIT_ROOT_DIR}/bin/nvcc CACHE STRING "") @@ -20,6 +17,9 @@ set(CMAKE_CUDA_FLAGS_RELEASE "-O3 -DNDEBUG -Xcompiler -DNDEBUG -Xcompiler -O3" C set(CMAKE_CUDA_FLAGS_RELWITHDEBINFO "-g -lineinfo ${CMAKE_CUDA_FLAGS_RELEASE}" CACHE STRING "") set(CMAKE_CUDA_FLAGS_DEBUG "-g -G -O0 -Xcompiler -O0" CACHE STRING "") +# OpenMP options +set(ENABLE_OPENMP OFF CACHE BOOL "" FORCE) + # LAI options set(GEOS_LA_INTERFACE "Hypre" CACHE STRING "" FORCE) set(ENABLE_HYPRE ON CACHE BOOL "" FORCE) diff --git a/host-configs/Stanford/sherlock-gcc10-ompi4.1.2-openblas0.3.10-cuda11.5.0-sm80.cmake b/host-configs/Stanford/sherlock-gcc10-ompi4.1.2-openblas0.3.10-cuda11.5.0-sm80.cmake deleted file mode 100644 index 4d33559f0ad..00000000000 --- a/host-configs/Stanford/sherlock-gcc10-ompi4.1.2-openblas0.3.10-cuda11.5.0-sm80.cmake +++ /dev/null @@ -1,28 +0,0 @@ -include(${CMAKE_CURRENT_LIST_DIR}/sherlock-gcc10-ompi4.1.2-openblas0.3.10.cmake) - -# OpenMP options -set(ENABLE_OPENMP OFF CACHE BOOL "" FORCE) - -# CUDA options -set(ENABLE_CUDA ON CACHE BOOL "" FORCE) -set(CUDA_VERSION "11.5.0" CACHE PATH "") -set(CUDA_HOME "${SOFTWARE_ROOT}/cuda/${CUDA_VERSION}" CACHE PATH "") -set(CMAKE_CUDA_ARCHITECTURES "80" CACHE STRING "") -set(CUDA_ARCH "sm_${CMAKE_CUDA_ARCHITECTURES}" CACHE STRING "") -set(CUDA_TOOLKIT_ROOT_DIR "${CUDA_HOME}" CACHE STRING "") - -set(CONFIG_NAME "sherlock-gcc10-ompi4.1.2-openblas0.3.10-cuda${CUDA_VERSION}-${CUDA_ARCH}" CACHE PATH "" FORCE) - -set(CMAKE_CUDA_HOST_COMPILER ${MPI_CXX_COMPILER} CACHE STRING "") -set(CMAKE_CUDA_COMPILER ${CUDA_TOOLKIT_ROOT_DIR}/bin/nvcc CACHE STRING "") -set(CMAKE_CUDA_FLAGS "-restrict -arch ${CUDA_ARCH} --expt-extended-lambda --expt-relaxed-constexpr -Werror cross-execution-space-call,reorder,deprecated-declarations " CACHE STRING "") -set(CMAKE_CUDA_FLAGS_RELEASE "-O3 -DNDEBUG -Xcompiler -DNDEBUG -Xcompiler -O3" CACHE STRING "") -set(CMAKE_CUDA_FLAGS_RELWITHDEBINFO "-g -lineinfo ${CMAKE_CUDA_FLAGS_RELEASE}" CACHE STRING "") -set(CMAKE_CUDA_FLAGS_DEBUG "-g -G -O0 -Xcompiler -O0" CACHE STRING "") - -# LAI options -set(GEOS_LA_INTERFACE "Hypre" CACHE STRING "" FORCE) -set(ENABLE_HYPRE ON CACHE BOOL "" FORCE) -set(ENABLE_HYPRE_DEVICE "CUDA" CACHE STRING "" FORCE) -set(ENABLE_PETSC OFF CACHE BOOL "" FORCE) -set(ENABLE_TRILINOS OFF CACHE BOOL "" FORCE) diff --git a/host-configs/Stanford/sherlock-gcc10-ompi4.1.2-openblas0.3.10.cmake b/host-configs/Stanford/sherlock-gcc10-ompi4.1.2-openblas0.3.10.cmake deleted file mode 100644 index d29b6180e11..00000000000 --- a/host-configs/Stanford/sherlock-gcc10-ompi4.1.2-openblas0.3.10.cmake +++ /dev/null @@ -1,43 +0,0 @@ -set(CONFIG_NAME "sherlock-gcc10-ompi4.1.2-openblas0.3.10" CACHE PATH "") - -set(SOFTWARE_ROOT /share/software/user/open CACHE PATH "") -set(GCC_ROOT "${SOFTWARE_ROOT}/gcc/10.1.0" CACHE PATH "") -set(MPI_ROOT "${SOFTWARE_ROOT}/openmpi/4.1.2" CACHE PATH "") - -site_name(HOST_NAME) - -# Compilers -set(CMAKE_C_COMPILER "${GCC_ROOT}/bin/gcc" CACHE PATH "") -set(CMAKE_CXX_COMPILER "${GCC_ROOT}/bin/g++" CACHE PATH "") -set(CMAKE_Fortran_COMPILER "${GCC_ROOT}/bin/gfortran" CACHE PATH "") - -# OpenMP options -set(ENABLE_OPENMP ON CACHE BOOL "") - -# MPI options -set(ENABLE_MPI ON CACHE PATH "" FORCE) -set(MPI_C_COMPILER "${MPI_ROOT}/bin/mpicc" CACHE PATH "") -set(MPI_CXX_COMPILER "${MPI_ROOT}/bin/mpic++" CACHE PATH "") -set(MPI_Fortran_COMPILER "${MPI_ROOT}/bin/mpifort" CACHE PATH "") -set(MPIEXEC "${MPI_ROOT}/bin/mpirun" CACHE PATH "") -set(MPIEXEC_NUMPROC_FLAG "-n" CACHE STRING "") -set(ENABLE_WRAP_ALL_TESTS_WITH_MPIEXEC ON CACHE BOOL "") - -# CUDA options -set(ENABLE_CUDA OFF CACHE PATH "" FORCE) - -# Blas/Lapack options -set(OPENBLAS_ROOT "${SOFTWARE_ROOT}/openblas/0.3.10" CACHE STRING "") -set(BLAS_LIBRARIES "${OPENBLAS_ROOT}/lib/libopenblas.so" CACHE STRING "") -set(LAPACK_LIBRARIES "${OPENBLAS_ROOT}/lib/libopenblas.so" CACHE STRING "") - -# Python options -#set(ENABLE_PYLVARRAY ON CACHE BOOL "") -#set(ENABLE_PYGEOSX ON CACHE BOOL "") -#set(PYTHON_DIR "${SOFTWARE_ROOT}/python/3.6.1" CACHE PATH "") -#set(Python3_EXECUTABLE "${SOFTWARE_ROOT}/python/3.6.1/bin/python3" CACHE PATH "") - -set(ENABLE_VALGRIND OFF CACHE BOOL "") -set(ENABLE_CALIPER ON CACHE BOOL "") - -include(${CMAKE_CURRENT_LIST_DIR}/../tpls.cmake) diff --git a/host-configs/Stanford/sherlock-gcc10.cmake b/host-configs/Stanford/sherlock-gcc10.cmake index aa6308538b7..b1590980f04 100644 --- a/host-configs/Stanford/sherlock-gcc10.cmake +++ b/host-configs/Stanford/sherlock-gcc10.cmake @@ -1,7 +1,45 @@ -set(CONFIG_NAME "sherlock-gcc10" CACHE PATH "") +# User defined versions +set(GCC_VERSION "10.1.0" CACHE STRING "Version of GCC") +set(OMPI_VERSION "4.1.2" CACHE STRING "Version of Open MPI") +set(OPENBLAS_VERSION "0.3.10" CACHE STRING "Version of OpenBLAS") -set(GCC_ROOT "/share/software/user/open/gcc/10.1.0" CACHE PATH "") -set(MPI_ROOT "/share/software/user/open/openmpi/4.1.0" CACHE PATH "") +set(CONFIG_NAME "sherlock-gcc${GCC_VERSION}-ompi${OMPI_VERSION}-openblas${OPENBLAS_VERSION}" CACHE PATH "") -include(/home/groups/tchelepi/geosx/host-configs/sherlock-base.cmake) +set(SOFTWARE_ROOT /share/software/user/open CACHE PATH "") +set(GCC_ROOT "${SOFTWARE_ROOT}/gcc/${GCC_VERSION}" CACHE PATH "") +set(MPI_ROOT "${SOFTWARE_ROOT}/openmpi/${OMPI_VERSION}" CACHE PATH "") +site_name(HOST_NAME) + +# Compilers +set(CMAKE_C_COMPILER "${GCC_ROOT}/bin/gcc" CACHE PATH "") +set(CMAKE_CXX_COMPILER "${GCC_ROOT}/bin/g++" CACHE PATH "") +set(CMAKE_Fortran_COMPILER "${GCC_ROOT}/bin/gfortran" CACHE PATH "") + +# OpenMP options +#set(ENABLE_OPENMP ON CACHE BOOL "") + +# MPI options +set(ENABLE_MPI ON CACHE PATH "" FORCE) +set(MPI_C_COMPILER "${MPI_ROOT}/bin/mpicc" CACHE PATH "") +set(MPI_CXX_COMPILER "${MPI_ROOT}/bin/mpic++" CACHE PATH "") +set(MPI_Fortran_COMPILER "${MPI_ROOT}/bin/mpifort" CACHE PATH "") +set(MPIEXEC "${MPI_ROOT}/bin/mpirun" CACHE PATH "") +set(MPIEXEC_NUMPROC_FLAG "-n" CACHE STRING "") +set(ENABLE_WRAP_ALL_TESTS_WITH_MPIEXEC ON CACHE BOOL "") + +# CUDA options +set(ENABLE_CUDA OFF CACHE PATH "" FORCE) + +# Blas/Lapack options +set(OPENBLAS_ROOT "${SOFTWARE_ROOT}/openblas/${OPENBLAS_VERSION}" CACHE STRING "") +set(BLAS_LIBRARIES "${OPENBLAS_ROOT}/lib/libopenblas.so" CACHE STRING "") +set(LAPACK_LIBRARIES "${OPENBLAS_ROOT}/lib/libopenblas.so" CACHE STRING "") + +set(ENABLE_VALGRIND OFF CACHE BOOL "") +set(ENABLE_CALIPER ON CACHE BOOL "") + +if (DEFINED ENV{GEOSX_TPL_DIR}) + set(GEOS_TPL_DIR "$ENV{GEOSX_TPL_DIR}" CACHE PATH "" FORCE) +endif() +include(${CMAKE_CURRENT_LIST_DIR}/../tpls.cmake) diff --git a/host-configs/Stanford/sherlock-gcc8-cuda10-volta.cmake b/host-configs/Stanford/sherlock-gcc8-cuda10-volta.cmake deleted file mode 100644 index 18213ea9857..00000000000 --- a/host-configs/Stanford/sherlock-gcc8-cuda10-volta.cmake +++ /dev/null @@ -1,13 +0,0 @@ -set(CONFIG_NAME "sherlock-gcc8-cuda10-volta" CACHE PATH "") - -set(GCC_ROOT "/share/software/user/open/gcc/8.1.0" CACHE PATH "") -set(MPI_ROOT "/share/software/user/open/openmpi/4.0.3" CACHE PATH "") - -set(ENABLE_CUDA ON CACHE BOOL "" FORCE) -set(ENABLE_HYPRE_DEVICE CUDA CACHE STRING "" FORCE) -set(CUDA_ARCH "sm_70" CACHE STRING "") -set(CMAKE_CUDA_ARCHITECTURES "70" CACHE STRING "") -set(CUDA_TOOLKIT_ROOT_DIR "/share/software/user/open/cuda/10.2.89" CACHE STRING "") - -include(/home/groups/tchelepi/geosx/host-configs/sherlock-base.cmake) - diff --git a/host-configs/Stanford/sherlock-modules.sh b/host-configs/Stanford/sherlock-modules.sh index 316116271e2..17a5453d8d0 100755 --- a/host-configs/Stanford/sherlock-modules.sh +++ b/host-configs/Stanford/sherlock-modules.sh @@ -1,3 +1,6 @@ +module --force purge +module load devel +module load math module load system module load git module load git-lfs @@ -9,4 +12,6 @@ module load libevent/2.1.12 # needed for silo module load py-mpi4py/3.1.3_py39 module load py-h5py/3.7.0_py39 module unload cuda -module load cuda/11.7.1 +module load cuda/12.4.0 +module load ninja/1.9.0 + diff --git a/host-configs/apple/darwin-clang.cmake b/host-configs/apple/darwin-clang.cmake deleted file mode 100644 index cdf690c0e5a..00000000000 --- a/host-configs/apple/darwin-clang.cmake +++ /dev/null @@ -1,38 +0,0 @@ -site_name(HOST_NAME) -set(CONFIG_NAME "${HOST_NAME}-darwin-x86_64-clang@apple-mp" CACHE PATH "") -message("CONFIG_NAME = ${CONFIG_NAME}") - -set(CMAKE_C_COMPILER "/usr/bin/clang" CACHE PATH "") -set(CMAKE_CXX_COMPILER "/usr/bin/clang++" CACHE PATH "") -set(ENABLE_FORTRAN OFF CACHE BOOL "" FORCE) - -set(ENABLE_MPI ON CACHE PATH "") -set(MPI_C_COMPILER "/usr/local/bin/mpicc" CACHE PATH "") -set(MPI_CXX_COMPILER "/usr/local/bin/mpicxx" CACHE PATH "") -set(MPIEXEC "/usr/local/bin/mpirun" CACHE PATH "") - -set(ENABLE_GTEST_DEATH_TESTS ON CACHE BOOL "" FORCE) - -set(ENABLE_PVTPackage ON CACHE BOOL "" FORCE) - -set(ENABLE_CUDA "OFF" CACHE PATH "" FORCE) -set(ENABLE_OPENMP "OFF" CACHE PATH "" FORCE) - -set(ENABLE_CALIPER "OFF" CACHE PATH "" FORCE ) - -#set(GEOS_BUILD_OBJ_LIBS ON CACHE BOOL "" FORCE) - -set( BLAS_LIBRARIES /usr/local/opt/openblas/lib/libblas.dylib CACHE PATH "" FORCE ) -set( LAPACK_LIBRARIES /usr/local/opt/openblas/lib/liblapack.dylib CACHE PATH "" FORCE ) - -set(ENABLE_DOXYGEN OFF CACHE BOOL "" FORCE) - -#set( DOXYGEN_EXECUTABLE /usr/local/bin/doxygen CACHE PATH "" FORCE ) -#set( SPHINX_EXECUTABLE /usr/local/bin/sphinx-build CACHE PATH "" FORCE ) - -set(GEOS_TPL_DIR "/usr/local/GEOSX/GEOS_TPL" CACHE PATH "" FORCE ) -if(NOT ( EXISTS "${GEOS_TPL_DIR}" AND IS_DIRECTORY "${GEOS_TPL_DIR}" ) ) - set(GEOS_TPL_DIR "${CMAKE_SOURCE_DIR}/../../thirdPartyLibs/install-darwin-clang-release" CACHE PATH "" FORCE ) -endif() - -include(${CMAKE_CURRENT_LIST_DIR}/tpls.cmake) diff --git a/host-configs/apple/macOS_base.cmake b/host-configs/apple/macOS_base.cmake index 836e2b15936..6d56f70755c 100644 --- a/host-configs/apple/macOS_base.cmake +++ b/host-configs/apple/macOS_base.cmake @@ -25,11 +25,11 @@ set(ENABLE_CALIPER "OFF" CACHE PATH "" FORCE ) set( BLAS_LIBRARIES ${HOMEBREW_DIR}/opt/lapack/lib/libblas.dylib CACHE PATH "" FORCE ) set( LAPACK_LIBRARIES ${HOMEBREW_DIR}/opt/lapack/lib/liblapack.dylib CACHE PATH "" FORCE ) -set(ENABLE_DOXYGEN ON CACHE BOOL "" FORCE) +set(ENABLE_DOXYGEN OFF CACHE BOOL "" FORCE) set(ENABLE_SPHINX ON CACHE BOOL "" FORCE) set(ENABLE_MATHPRESSO ON CACHE BOOL "" FORCE ) -set(GEOS_BUILD_SHARED_LIBS ON CACHE BOOL "" FORCE) +set(GEOS_BUILD_SHARED_LIBS OFF CACHE BOOL "" FORCE) diff --git a/inputFiles/compositionalMultiphaseFlow/2ph_cap_1d_ihu.xml b/inputFiles/compositionalMultiphaseFlow/2ph_cap_1d_ihu.xml index 07a0f5d4731..8c25605b332 100644 --- a/inputFiles/compositionalMultiphaseFlow/2ph_cap_1d_ihu.xml +++ b/inputFiles/compositionalMultiphaseFlow/2ph_cap_1d_ihu.xml @@ -94,7 +94,7 @@ + name="fluidTPFA"/> @@ -117,7 +116,7 @@ @@ -92,7 +90,7 @@ diff --git a/inputFiles/compositionalMultiphaseFlow/co2_hybrid_1d.xml b/inputFiles/compositionalMultiphaseFlow/co2_hybrid_1d.xml index 99e5d1ad3b0..345c17b0b96 100644 --- a/inputFiles/compositionalMultiphaseFlow/co2_hybrid_1d.xml +++ b/inputFiles/compositionalMultiphaseFlow/co2_hybrid_1d.xml @@ -14,8 +14,7 @@ targetRegions="{ region }"> + newtonMaxIter="10"/> @@ -50,7 +49,7 @@ maxTime="1e5"> + newtonMaxIter="15"/> @@ -108,7 +107,7 @@ + newtonMaxIter="10"/> @@ -46,7 +45,7 @@ maxTime="2e7"> + directParallel="0"/> @@ -111,18 +109,18 @@ + materialList="{ fluid, rock, relperm }"/> + newtonMaxIter="10"/> @@ -57,11 +57,11 @@ maxTime="2e8"> @@ -51,7 +51,7 @@ maxTime="2e8"> + newtonMaxIter="10"/> @@ -60,7 +60,7 @@ maxTime="2e8"> + temperature="300" + targetRegions="{ region }"> - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/inputFiles/compositionalMultiphaseWell/isothm_vol_inj_table.xml b/inputFiles/compositionalMultiphaseWell/isothm_vol_inj_table.xml new file mode 100644 index 00000000000..d39421e36fc --- /dev/null +++ b/inputFiles/compositionalMultiphaseWell/isothm_vol_inj_table.xml @@ -0,0 +1,234 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/inputFiles/hydraulicFracturing/Sneddon_hydroFrac_base.xml b/inputFiles/hydraulicFracturing/Sneddon_hydroFrac_base.xml index df05297ad3d..e23f6d8b315 100644 --- a/inputFiles/hydraulicFracturing/Sneddon_hydroFrac_base.xml +++ b/inputFiles/hydraulicFracturing/Sneddon_hydroFrac_base.xml @@ -37,7 +37,7 @@ name="SurfaceGen" targetRegions="{ Domain }" nodeBasedSIF="1" - rockToughness="10.0e6" + initialRockToughness="10.0e6" mpiCommOrder="1"/> diff --git a/inputFiles/hydraulicFracturing/heterogeneousInSitu_base.xml b/inputFiles/hydraulicFracturing/heterogeneousInSitu_base.xml index c8d741170ae..d4547ebc54f 100644 --- a/inputFiles/hydraulicFracturing/heterogeneousInSitu_base.xml +++ b/inputFiles/hydraulicFracturing/heterogeneousInSitu_base.xml @@ -53,7 +53,7 @@ diff --git a/inputFiles/hydraulicFracturing/heterogeneousInSitu_smoke.xml b/inputFiles/hydraulicFracturing/heterogeneousInSitu_smoke.xml index eb7b96bf286..3fc20c5c95a 100644 --- a/inputFiles/hydraulicFracturing/heterogeneousInSitu_smoke.xml +++ b/inputFiles/hydraulicFracturing/heterogeneousInSitu_smoke.xml @@ -71,7 +71,7 @@ diff --git a/inputFiles/hydraulicFracturing/hydrofractureSinglePhase2d.xml b/inputFiles/hydraulicFracturing/hydrofractureSinglePhase2d.xml index 7ac70ce7a6f..9fe4afed5b4 100644 --- a/inputFiles/hydraulicFracturing/hydrofractureSinglePhase2d.xml +++ b/inputFiles/hydraulicFracturing/hydrofractureSinglePhase2d.xml @@ -34,7 +34,7 @@ + initialRockToughness="1.0e6"/> diff --git a/inputFiles/hydraulicFracturing/kgdEdgeBased_C3D6_base.xml b/inputFiles/hydraulicFracturing/kgdEdgeBased_C3D6_base.xml index cc461b52ba3..0120cd3f6dd 100644 --- a/inputFiles/hydraulicFracturing/kgdEdgeBased_C3D6_base.xml +++ b/inputFiles/hydraulicFracturing/kgdEdgeBased_C3D6_base.xml @@ -49,7 +49,7 @@ diff --git a/inputFiles/hydraulicFracturing/kgdNodeBased_C3D6_base.xml b/inputFiles/hydraulicFracturing/kgdNodeBased_C3D6_base.xml index d7fbbd5d077..f9d7ac88c37 100644 --- a/inputFiles/hydraulicFracturing/kgdNodeBased_C3D6_base.xml +++ b/inputFiles/hydraulicFracturing/kgdNodeBased_C3D6_base.xml @@ -39,7 +39,7 @@ diff --git a/inputFiles/hydraulicFracturing/kgdToughnessDominated_base.xml b/inputFiles/hydraulicFracturing/kgdToughnessDominated_base.xml index 96d400a8390..74b8003e223 100644 --- a/inputFiles/hydraulicFracturing/kgdToughnessDominated_base.xml +++ b/inputFiles/hydraulicFracturing/kgdToughnessDominated_base.xml @@ -45,7 +45,7 @@ name="SurfaceGen" targetRegions="{ Domain }" nodeBasedSIF="1" - rockToughness="1e6" + initialRockToughness="1e6" mpiCommOrder="1"/> diff --git a/inputFiles/hydraulicFracturing/kgdToughnessDominated_poroelastic_base.xml b/inputFiles/hydraulicFracturing/kgdToughnessDominated_poroelastic_base.xml index 8f4284dd838..ad91b77dfaf 100644 --- a/inputFiles/hydraulicFracturing/kgdToughnessDominated_poroelastic_base.xml +++ b/inputFiles/hydraulicFracturing/kgdToughnessDominated_poroelastic_base.xml @@ -38,7 +38,7 @@ name="SurfaceGen" targetRegions="{ Domain }" nodeBasedSIF="1" - rockToughness="1e6" + initialRockToughness="1e6" mpiCommOrder="1"/> diff --git a/inputFiles/hydraulicFracturing/kgdValidation_base.xml b/inputFiles/hydraulicFracturing/kgdValidation_base.xml index e2d16b6d247..a902e5f5fab 100644 --- a/inputFiles/hydraulicFracturing/kgdValidation_base.xml +++ b/inputFiles/hydraulicFracturing/kgdValidation_base.xml @@ -44,7 +44,7 @@ logLevel="1" targetRegions="{ Domain }" nodeBasedSIF="0" - rockToughness="1.2e6" + initialRockToughness="1.2e6" mpiCommOrder="1"/> diff --git a/inputFiles/hydraulicFracturing/kgdViscosityDominated_base.xml b/inputFiles/hydraulicFracturing/kgdViscosityDominated_base.xml index e9b55058b17..5138b7c1eca 100644 --- a/inputFiles/hydraulicFracturing/kgdViscosityDominated_base.xml +++ b/inputFiles/hydraulicFracturing/kgdViscosityDominated_base.xml @@ -45,7 +45,7 @@ name="SurfaceGen" targetRegions="{ Domain }" nodeBasedSIF="1" - rockToughness="1e4" + initialRockToughness="1e4" mpiCommOrder="1"/> diff --git a/inputFiles/hydraulicFracturing/kgdViscosityDominated_poroelastic_base.xml b/inputFiles/hydraulicFracturing/kgdViscosityDominated_poroelastic_base.xml index 15a381c8365..32f2f25e7eb 100644 --- a/inputFiles/hydraulicFracturing/kgdViscosityDominated_poroelastic_base.xml +++ b/inputFiles/hydraulicFracturing/kgdViscosityDominated_poroelastic_base.xml @@ -38,7 +38,7 @@ name="SurfaceGen" targetRegions="{ Domain }" nodeBasedSIF="1" - rockToughness="1e4" + initialRockToughness="1e4" mpiCommOrder="1" isPoroelastic="1"/> diff --git a/inputFiles/hydraulicFracturing/pennyShapedAnisotropicScaledToughness_benchmark.xml b/inputFiles/hydraulicFracturing/pennyShapedAnisotropicScaledToughness_benchmark.xml new file mode 100644 index 00000000000..6d05d924d31 --- /dev/null +++ b/inputFiles/hydraulicFracturing/pennyShapedAnisotropicScaledToughness_benchmark.xml @@ -0,0 +1,182 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/inputFiles/hydraulicFracturing/pennyShapedAnisotropicToughness_base.xml b/inputFiles/hydraulicFracturing/pennyShapedAnisotropicToughness_base.xml new file mode 100644 index 00000000000..63c2c6fb575 --- /dev/null +++ b/inputFiles/hydraulicFracturing/pennyShapedAnisotropicToughness_base.xml @@ -0,0 +1,228 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/inputFiles/hydraulicFracturing/pennyShapedAnisotropicToughness_benchmark.xml b/inputFiles/hydraulicFracturing/pennyShapedAnisotropicToughness_benchmark.xml new file mode 100644 index 00000000000..6affb33bc1b --- /dev/null +++ b/inputFiles/hydraulicFracturing/pennyShapedAnisotropicToughness_benchmark.xml @@ -0,0 +1,180 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/inputFiles/hydraulicFracturing/pennyShapedAnisotropicToughness_smoke.xml b/inputFiles/hydraulicFracturing/pennyShapedAnisotropicToughness_smoke.xml new file mode 100644 index 00000000000..a566f9c4c42 --- /dev/null +++ b/inputFiles/hydraulicFracturing/pennyShapedAnisotropicToughness_smoke.xml @@ -0,0 +1,106 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/inputFiles/hydraulicFracturing/pennyShapedToughnessDominated_benchmark.xml b/inputFiles/hydraulicFracturing/pennyShapedToughnessDominated_benchmark.xml index 59abb35871a..eb9183bcf82 100644 --- a/inputFiles/hydraulicFracturing/pennyShapedToughnessDominated_benchmark.xml +++ b/inputFiles/hydraulicFracturing/pennyShapedToughnessDominated_benchmark.xml @@ -67,7 +67,7 @@ name="SurfaceGen" targetRegions="{ Domain }" nodeBasedSIF="1" - rockToughness="3.0e6" + initialRockToughness="3.0e6" mpiCommOrder="1"/> diff --git a/inputFiles/hydraulicFracturing/pennyShapedToughnessDominated_poroelastic_benchmark.xml b/inputFiles/hydraulicFracturing/pennyShapedToughnessDominated_poroelastic_benchmark.xml index e830a52c5fd..b20f9c443af 100644 --- a/inputFiles/hydraulicFracturing/pennyShapedToughnessDominated_poroelastic_benchmark.xml +++ b/inputFiles/hydraulicFracturing/pennyShapedToughnessDominated_poroelastic_benchmark.xml @@ -68,7 +68,7 @@ name="SurfaceGen" targetRegions="{ Domain }" nodeBasedSIF="1" - rockToughness="3.0e6" + initialRockToughness="3.0e6" mpiCommOrder="1" isPoroelastic="1"/> diff --git a/inputFiles/hydraulicFracturing/pennyShapedToughnessDominated_poroelastic_smoke.xml b/inputFiles/hydraulicFracturing/pennyShapedToughnessDominated_poroelastic_smoke.xml index a1c1c302b8d..8d074c2ea9e 100644 --- a/inputFiles/hydraulicFracturing/pennyShapedToughnessDominated_poroelastic_smoke.xml +++ b/inputFiles/hydraulicFracturing/pennyShapedToughnessDominated_poroelastic_smoke.xml @@ -44,7 +44,7 @@ name="SurfaceGen" targetRegions="{ Domain }" nodeBasedSIF="1" - rockToughness="3.0e6" + initialRockToughness="3.0e6" mpiCommOrder="1" isPoroelastic="1"/> diff --git a/inputFiles/hydraulicFracturing/pennyShapedToughnessDominated_smoke.xml b/inputFiles/hydraulicFracturing/pennyShapedToughnessDominated_smoke.xml index f433335ab6e..acf8e93e6b7 100644 --- a/inputFiles/hydraulicFracturing/pennyShapedToughnessDominated_smoke.xml +++ b/inputFiles/hydraulicFracturing/pennyShapedToughnessDominated_smoke.xml @@ -43,7 +43,7 @@ name="SurfaceGen" targetRegions="{ Domain }" nodeBasedSIF="1" - rockToughness="3.0e6" + initialRockToughness="3.0e6" mpiCommOrder="1"/> diff --git a/inputFiles/hydraulicFracturing/pennyShapedViscosityDominated_benchmark.xml b/inputFiles/hydraulicFracturing/pennyShapedViscosityDominated_benchmark.xml index a8f78adf606..eef546604d1 100644 --- a/inputFiles/hydraulicFracturing/pennyShapedViscosityDominated_benchmark.xml +++ b/inputFiles/hydraulicFracturing/pennyShapedViscosityDominated_benchmark.xml @@ -68,7 +68,7 @@ name="SurfaceGen" targetRegions="{ Domain }" nodeBasedSIF="1" - rockToughness="0.3e6" + initialRockToughness="0.3e6" mpiCommOrder="1"/> diff --git a/inputFiles/hydraulicFracturing/pennyShapedViscosityDominated_poroelastic_benchmark.xml b/inputFiles/hydraulicFracturing/pennyShapedViscosityDominated_poroelastic_benchmark.xml index 0d1b9485772..eb476baf5fe 100644 --- a/inputFiles/hydraulicFracturing/pennyShapedViscosityDominated_poroelastic_benchmark.xml +++ b/inputFiles/hydraulicFracturing/pennyShapedViscosityDominated_poroelastic_benchmark.xml @@ -69,7 +69,7 @@ name="SurfaceGen" targetRegions="{ Domain }" nodeBasedSIF="1" - rockToughness="0.3e6" + initialRockToughness="0.3e6" mpiCommOrder="1"/> diff --git a/inputFiles/hydraulicFracturing/pennyShapedViscosityDominated_poroelastic_smoke.xml b/inputFiles/hydraulicFracturing/pennyShapedViscosityDominated_poroelastic_smoke.xml index b3a8341224e..5cb156cd184 100644 --- a/inputFiles/hydraulicFracturing/pennyShapedViscosityDominated_poroelastic_smoke.xml +++ b/inputFiles/hydraulicFracturing/pennyShapedViscosityDominated_poroelastic_smoke.xml @@ -44,7 +44,7 @@ name="SurfaceGen" targetRegions="{ Domain }" nodeBasedSIF="1" - rockToughness="0.3e6" + initialRockToughness="0.3e6" mpiCommOrder="1" isPoroelastic="1"/> diff --git a/inputFiles/hydraulicFracturing/pennyShapedViscosityDominated_smoke.xml b/inputFiles/hydraulicFracturing/pennyShapedViscosityDominated_smoke.xml index 4b20bae5125..c84b65ef8f5 100644 --- a/inputFiles/hydraulicFracturing/pennyShapedViscosityDominated_smoke.xml +++ b/inputFiles/hydraulicFracturing/pennyShapedViscosityDominated_smoke.xml @@ -43,7 +43,7 @@ name="SurfaceGen" targetRegions="{ Domain }" nodeBasedSIF="1" - rockToughness="0.3e6" + initialRockToughness="0.3e6" mpiCommOrder="1"/> diff --git a/inputFiles/hydraulicFracturing/pknViscosityDominated_benchmark.xml b/inputFiles/hydraulicFracturing/pknViscosityDominated_benchmark.xml index 2b8dce7a719..4943e0f6d78 100644 --- a/inputFiles/hydraulicFracturing/pknViscosityDominated_benchmark.xml +++ b/inputFiles/hydraulicFracturing/pknViscosityDominated_benchmark.xml @@ -66,7 +66,7 @@ name="SurfaceGen" targetRegions="{ Domain }" nodeBasedSIF="1" - rockToughness="0.1e6" + initialRockToughness="0.1e6" mpiCommOrder="1"/> diff --git a/inputFiles/hydraulicFracturing/pknViscosityDominated_poroelastic_benchmark.xml b/inputFiles/hydraulicFracturing/pknViscosityDominated_poroelastic_benchmark.xml index 72b1be2f4d8..e73a06ddcc4 100644 --- a/inputFiles/hydraulicFracturing/pknViscosityDominated_poroelastic_benchmark.xml +++ b/inputFiles/hydraulicFracturing/pknViscosityDominated_poroelastic_benchmark.xml @@ -66,7 +66,7 @@ name="SurfaceGen" targetRegions="{ Domain }" nodeBasedSIF="1" - rockToughness="0.1e6" + initialRockToughness="0.1e6" mpiCommOrder="1"/> diff --git a/inputFiles/hydraulicFracturing/pknViscosityDominated_poroelastic_smoke.xml b/inputFiles/hydraulicFracturing/pknViscosityDominated_poroelastic_smoke.xml index 7e8e3463e18..f6e44b9bc91 100644 --- a/inputFiles/hydraulicFracturing/pknViscosityDominated_poroelastic_smoke.xml +++ b/inputFiles/hydraulicFracturing/pknViscosityDominated_poroelastic_smoke.xml @@ -44,7 +44,7 @@ name="SurfaceGen" targetRegions="{ Domain }" nodeBasedSIF="1" - rockToughness="0.1e6" + initialRockToughness="0.1e6" mpiCommOrder="1" isPoroelastic="1"/> diff --git a/inputFiles/hydraulicFracturing/pknViscosityDominated_smoke.xml b/inputFiles/hydraulicFracturing/pknViscosityDominated_smoke.xml index 0545171c3bc..87e732e3f37 100644 --- a/inputFiles/hydraulicFracturing/pknViscosityDominated_smoke.xml +++ b/inputFiles/hydraulicFracturing/pknViscosityDominated_smoke.xml @@ -43,7 +43,7 @@ name="SurfaceGen" targetRegions="{ Domain }" nodeBasedSIF="1" - rockToughness="1e4" + initialRockToughness="1e4" mpiCommOrder="1"/> diff --git a/inputFiles/hydraulicFracturing/scripts/hydrofractureFigure.py b/inputFiles/hydraulicFracturing/scripts/hydrofractureFigure.py index c8cb897201d..81dde7f93f7 100644 --- a/inputFiles/hydraulicFracturing/scripts/hydrofractureFigure.py +++ b/inputFiles/hydraulicFracturing/scripts/hydrofractureFigure.py @@ -36,7 +36,7 @@ def getParametersFromXML( geosDir, xmlFilePrefix): poissonRatio = float(elasticParam.get('defaultPoissonRatio')) injectionRate = -2.0 * float(tree.find('FieldSpecifications/SourceFlux').get('scale')) / fluidDensity tree = ElementTree.parse(prefix + xmlFilePrefix + "_base.xml") - toughness = float(tree.find('Solvers/SurfaceGenerator').get('rockToughness')) + toughness = float(tree.find('Solvers/SurfaceGenerator').get('initialRockToughness')) elif xmlFilePrefix == 'pennyShapedToughnessDominated' or xmlFilePrefix == 'pennyShapedViscosityDominated': K = float(elasticParam.get('defaultBulkModulus')) @@ -45,7 +45,7 @@ def getParametersFromXML( geosDir, xmlFilePrefix): poissonRatio = youngModulus / (2.0 * G) - 1.0 injectionRate = -4.0 * float(tree.find('FieldSpecifications/SourceFlux').get('scale')) / fluidDensity tree = ElementTree.parse(prefix + xmlFilePrefix + "_benchmark.xml") - toughness = float(tree.find('Solvers/SurfaceGenerator').get('rockToughness')) + toughness = float(tree.find('Solvers/SurfaceGenerator').get('initialRockToughness')) elif xmlFilePrefix == 'pknViscosityDominated': K = float(elasticParam.get('defaultBulkModulus')) @@ -54,7 +54,7 @@ def getParametersFromXML( geosDir, xmlFilePrefix): poissonRatio = youngModulus / (2.0 * G) - 1.0 injectionRate = -4.0 * float(tree.find('FieldSpecifications/SourceFlux').get('scale')) / fluidDensity tree = ElementTree.parse(prefix + xmlFilePrefix + "_benchmark.xml") - toughness = float(tree.find('Solvers/SurfaceGenerator').get('rockToughness')) + toughness = float(tree.find('Solvers/SurfaceGenerator').get('initialRockToughness')) found_core = False for elem in param: if elem.get("name") == "core": diff --git a/inputFiles/hydraulicFracturing/walshQuarterNoChombo_benchmark.xml b/inputFiles/hydraulicFracturing/walshQuarterNoChombo_benchmark.xml index 957b63bd278..a14bdc856f1 100644 --- a/inputFiles/hydraulicFracturing/walshQuarterNoChombo_benchmark.xml +++ b/inputFiles/hydraulicFracturing/walshQuarterNoChombo_benchmark.xml @@ -79,7 +79,7 @@ fractureRegion="Fracture" targetRegions="{Domain, void}" nodeBasedSIF="1" - rockToughness="3.0e6"> + initialRockToughness="3.0e6"> diff --git a/inputFiles/hydraulicFracturing/walshQuarterNoChombo_smoke.xml b/inputFiles/hydraulicFracturing/walshQuarterNoChombo_smoke.xml index 9990dd5c291..1a9a5a0ae73 100644 --- a/inputFiles/hydraulicFracturing/walshQuarterNoChombo_smoke.xml +++ b/inputFiles/hydraulicFracturing/walshQuarterNoChombo_smoke.xml @@ -64,7 +64,7 @@ fractureRegion="Fracture" targetRegions="{Domain, void}" nodeBasedSIF="1" - rockToughness="3.0e6" + initialRockToughness="3.0e6" mpiCommOrder="1"> diff --git a/inputFiles/inducedSeismicity/SCEC_BP6_QD_S_base.xml b/inputFiles/inducedSeismicity/SCEC_BP6_QD_S_base.xml new file mode 100644 index 00000000000..1257f1ae3ec --- /dev/null +++ b/inputFiles/inducedSeismicity/SCEC_BP6_QD_S_base.xml @@ -0,0 +1,217 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/inputFiles/inducedSeismicity/SCEC_BP6_QD_S_explicit.xml b/inputFiles/inducedSeismicity/SCEC_BP6_QD_S_explicit.xml new file mode 100644 index 00000000000..ffab615c0f9 --- /dev/null +++ b/inputFiles/inducedSeismicity/SCEC_BP6_QD_S_explicit.xml @@ -0,0 +1,139 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/inputFiles/inducedSeismicity/SCEC_BP6_QD_S_implicit.xml b/inputFiles/inducedSeismicity/SCEC_BP6_QD_S_implicit.xml new file mode 100644 index 00000000000..87d8a3e8455 --- /dev/null +++ b/inputFiles/inducedSeismicity/SCEC_BP6_QD_S_implicit.xml @@ -0,0 +1,140 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/inputFiles/inducedSeismicity/SCEC_BP7_QD_base.xml b/inputFiles/inducedSeismicity/SCEC_BP7_QD_base.xml new file mode 100644 index 00000000000..8df6ff94139 --- /dev/null +++ b/inputFiles/inducedSeismicity/SCEC_BP7_QD_base.xml @@ -0,0 +1,251 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/inputFiles/inducedSeismicity/SpringSliderExplicit_smoke.xml b/inputFiles/inducedSeismicity/SpringSliderExplicit_smoke.xml new file mode 100644 index 00000000000..a1a67094f7c --- /dev/null +++ b/inputFiles/inducedSeismicity/SpringSliderExplicit_smoke.xml @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/inputFiles/inducedSeismicity/SpringSliderImplicit_smoke.xml b/inputFiles/inducedSeismicity/SpringSliderImplicit_smoke.xml new file mode 100644 index 00000000000..fce79ec0157 --- /dev/null +++ b/inputFiles/inducedSeismicity/SpringSliderImplicit_smoke.xml @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/inputFiles/inducedSeismicity/SpringSlider_base.xml b/inputFiles/inducedSeismicity/SpringSlider_base.xml index 9f141031607..876457fa2dd 100644 --- a/inputFiles/inducedSeismicity/SpringSlider_base.xml +++ b/inputFiles/inducedSeismicity/SpringSlider_base.xml @@ -1,19 +1,10 @@ - - - @@ -80,27 +71,26 @@ - @@ -139,6 +122,7 @@ + diff --git a/inputFiles/inducedSeismicity/SpringSlider_smoke.xml b/inputFiles/inducedSeismicity/SpringSlider_smoke.xml deleted file mode 100644 index b10580131d8..00000000000 --- a/inputFiles/inducedSeismicity/SpringSlider_smoke.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/inputFiles/inducedSeismicity/inducedSeismicity.ats b/inputFiles/inducedSeismicity/inducedSeismicity.ats index 08b031177f0..56aea6b5820 100644 --- a/inputFiles/inducedSeismicity/inducedSeismicity.ats +++ b/inputFiles/inducedSeismicity/inducedSeismicity.ats @@ -23,11 +23,18 @@ decks = [ check_step=100, curvecheck_params=CurveCheckParameters(**curvecheck_params)), TestDeck( - name="SpringSlider_smoke", + name="SpringSliderImplicit_smoke", description="Spring slider 0D system", partitions=((1, 1, 1), ), restart_step=0, check_step=3262, - restartcheck_params=RestartcheckParameters(atol=1e-4, rtol=1e-3)) + restartcheck_params=RestartcheckParameters(atol=1e-4, rtol=1e-3)), + TestDeck( + name="SpringSliderExplicit_smoke", + description="Spring slider 0D system", + partitions=((1, 1, 1), ), + restart_step=0, + check_step=343, + restartcheck_params=RestartcheckParameters(atol=1e-4, rtol=1e-3)) ] generate_geos_tests(decks) diff --git a/inputFiles/inducedSeismicity/scripts/plotBP6_results.py b/inputFiles/inducedSeismicity/scripts/plotBP6_results.py new file mode 100644 index 00000000000..e869c3d5b5a --- /dev/null +++ b/inputFiles/inducedSeismicity/scripts/plotBP6_results.py @@ -0,0 +1,78 @@ +import argparse +import numpy as np +from geos.hdf5_wrapper import hdf5_wrapper +import matplotlib.pyplot as plt +import os + +def remove_padding(data): + """Removes trailing zeros from a NumPy array.""" + nonzero_indices = np.nonzero(data)[0] + if nonzero_indices.size == 0: # If all elements are zero + return np.array([]), np.array([]) + last_nonzero = nonzero_indices[-1] + return data[:last_nonzero + 1] + +def getDataFromHDF5( hdf5FilePath, var_name ): + # Read HDF5 + data = hdf5_wrapper(f'{hdf5FilePath}').get_copy() + var = data[f'{var_name} source'] + var = np.asarray(var) + time = data[f'{var_name} Time'] + + # Remove padding + var = remove_padding(var) + time = time[:len(var)] # Match the length of the time array to the variable + return time, var + + +if __name__ == "__main__": + parser = argparse.ArgumentParser() + parser.add_argument('-d', '--dir', type=str, help='Path to hdf5 file') + args = parser.parse_args() + + normalized_dir = os.path.abspath(args.dir) + if not os.path.isdir(normalized_dir): + print(f"Error: {normalized_dir} is not a valid directory.") + exit(1) + + filePath = f"{normalized_dir}/BP6_DQ_S.hdf5" + if not os.path.exists(filePath): + print(f"Error: {filePath} not found.") + exit(1) + + time, pressure = getDataFromHDF5( filePath, "pressure" ) + time, slipRate = getDataFromHDF5( filePath, "slipRate" ) + + # Convert time to years + time_in_years = time / (365 * 24 * 3600) # Assuming time is in seconds + + # Plotting + fig, ax1 = plt.subplots() + + print(len(time_in_years)) + print(len(pressure)) + + # Plot pressure on the left y-axis + ax1.set_xlabel('Time (years)') + ax1.set_ylabel('Pressure (Pa)', color='tab:blue') + ax1.plot(time_in_years, pressure, label="Pressure", color='tab:blue') + ax1.tick_params(axis='y', labelcolor='tab:blue') + + + # Plot slipRate on the right y-axis (log scale) + ax2 = ax1.twinx() + ax2.set_ylabel('Slip Rate (m/s)', color='tab:red') + ax2.plot(time_in_years, slipRate, label="Slip Rate", color='tab:red') + ax2.set_yscale('log') + ax2.tick_params(axis='y', labelcolor='tab:red') + + # Set x-axis limits to 0 to 2 years + ax1.set_xlim(0, np.max(time_in_years)) + + + # Add grid and title + plt.title("Pressure and Slip Rate vs Time") + plt.grid() + + # Show plot + plt.show() \ No newline at end of file diff --git a/inputFiles/inducedSeismicity/scripts/plot_springSlider_results.py b/inputFiles/inducedSeismicity/scripts/plot_springSlider_results.py new file mode 100644 index 00000000000..ac56838015b --- /dev/null +++ b/inputFiles/inducedSeismicity/scripts/plot_springSlider_results.py @@ -0,0 +1,74 @@ +import argparse +import numpy as np +from geos.hdf5_wrapper import hdf5_wrapper +import matplotlib.pyplot as plt +import os + +def remove_padding(data): + """Removes trailing zeros from a NumPy array.""" + nonzero_indices = np.nonzero(data)[0] + if nonzero_indices.size == 0: # If all elements are zero + return np.array([]), np.array([]) + last_nonzero = nonzero_indices[-1] + return data[:last_nonzero + 1] + +def getDataFromHDF5( hdf5FilePath, var_name ): + # Read HDF5 + data = hdf5_wrapper(f'{hdf5FilePath}').get_copy() + var = data[f'{var_name}'] + var = np.asarray(var) + time = data[f'{var_name} Time'] + + # Remove padding + var = remove_padding(var) + time = time[:len(var)] # Match the length of the time array to the variable + return time, var + + +if __name__ == "__main__": + parser = argparse.ArgumentParser() + parser.add_argument('-d', '--dir', type=str, help='Path to hdf5 file') + args = parser.parse_args() + + normalized_dir = os.path.abspath(args.dir) + if not os.path.isdir(normalized_dir): + print(f"Error: {normalized_dir} is not a valid directory.") + exit(1) + + filePath = f"{normalized_dir}/springSlider.hdf5" + if not os.path.exists(filePath): + print(f"Error: {filePath} not found.") + exit(1) + + time, slipRate = getDataFromHDF5( filePath, "slipRate" ) + time, stateVariable = getDataFromHDF5( filePath, "stateVariable" ) + + # Convert time to years + time_in_years = time / (365 * 24 * 3600) # Assuming time is in seconds + + # Plotting + fig, (ax1, ax2, ax3) = plt.subplots(3, 1, figsize=(8, 8), sharex=True) + + # Plot pressure on the left y-axis + ax1.set_xlabel('Time (years)') + ax1.set_ylabel('slip rate (Pa)', color='tab:blue') + ax1.plot(time_in_years, slipRate, label="slip rate", color='tab:blue') + ax1.set_yscale('log') + ax1.tick_params(axis='y', labelcolor='tab:blue') + + # Set x-axis limits to 0 to 2 years + ax1.set_xlim(0, np.max(time_in_years)) + + # Plot stateVariable on the right y-axis (log scale) + ax2.set_ylabel('state variable', color='tab:red') + ax2.plot(time_in_years, stateVariable, label="state variable", color='tab:red') + ax2.tick_params(axis='y', labelcolor='tab:red') + ax2.set_xlim(0, np.max(time_in_years)) + + # Add grid and title + fig.suptitle('Spring slider solution', fontsize=16) + plt.tight_layout() + plt.grid() + + # Show plot + plt.show() \ No newline at end of file diff --git a/inputFiles/lagrangianContactMechanics/LagrangeContactBubbleStab_FixedSlip_base.xml b/inputFiles/lagrangianContactMechanics/LagrangeContactBubbleStab_FixedSlip_base.xml new file mode 100644 index 00000000000..91a143df5b2 --- /dev/null +++ b/inputFiles/lagrangianContactMechanics/LagrangeContactBubbleStab_FixedSlip_base.xml @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/inputFiles/lagrangianContactMechanics/LagrangeContactBubbleStab_FixedSlip_smoke.xml b/inputFiles/lagrangianContactMechanics/LagrangeContactBubbleStab_FixedSlip_smoke.xml new file mode 100644 index 00000000000..5da14675d94 --- /dev/null +++ b/inputFiles/lagrangianContactMechanics/LagrangeContactBubbleStab_FixedSlip_smoke.xml @@ -0,0 +1,94 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/inputFiles/lagrangianContactMechanics/LagrangeContactBubbleStab_singleFracCompression_base.xml b/inputFiles/lagrangianContactMechanics/LagrangeContactBubbleStab_singleFracCompression_base.xml new file mode 100644 index 00000000000..3be52a9bcdc --- /dev/null +++ b/inputFiles/lagrangianContactMechanics/LagrangeContactBubbleStab_singleFracCompression_base.xml @@ -0,0 +1,137 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/inputFiles/lagrangianContactMechanics/LagrangeContactBubbleStab_singleFracCompression_smoke.xml b/inputFiles/lagrangianContactMechanics/LagrangeContactBubbleStab_singleFracCompression_smoke.xml new file mode 100644 index 00000000000..bb51f950d38 --- /dev/null +++ b/inputFiles/lagrangianContactMechanics/LagrangeContactBubbleStab_singleFracCompression_smoke.xml @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/inputFiles/lagrangianContactMechanics/PassingCrack_base.xml b/inputFiles/lagrangianContactMechanics/PassingCrack_base.xml index 1f38c231aa9..603fcf59ed7 100644 --- a/inputFiles/lagrangianContactMechanics/PassingCrack_base.xml +++ b/inputFiles/lagrangianContactMechanics/PassingCrack_base.xml @@ -7,7 +7,7 @@ diff --git a/inputFiles/lagrangianContactMechanics/SimpleCubes_base.xml b/inputFiles/lagrangianContactMechanics/SimpleCubes_base.xml index 32e64f498de..ce7f07de63b 100644 --- a/inputFiles/lagrangianContactMechanics/SimpleCubes_base.xml +++ b/inputFiles/lagrangianContactMechanics/SimpleCubes_base.xml @@ -6,7 +6,7 @@ @@ -134,7 +134,7 @@ - diff --git a/inputFiles/lagrangianContactMechanics/SingleFracCompression_base.xml b/inputFiles/lagrangianContactMechanics/SingleFracCompression_base.xml index d9da50caf95..c3f39da2632 100644 --- a/inputFiles/lagrangianContactMechanics/SingleFracCompression_base.xml +++ b/inputFiles/lagrangianContactMechanics/SingleFracCompression_base.xml @@ -9,7 +9,7 @@ logLevel="0" fractureRegion="Fracture" targetRegions="{ Region }" - rockToughness="1.0e6" + initialRockToughness="1.0e6" mpiCommOrder="1"/> diff --git a/inputFiles/lagrangianContactMechanics/SlippingFault_base.xml b/inputFiles/lagrangianContactMechanics/SlippingFault_base.xml index 5299794fe0f..d9f4997f3c7 100644 --- a/inputFiles/lagrangianContactMechanics/SlippingFault_base.xml +++ b/inputFiles/lagrangianContactMechanics/SlippingFault_base.xml @@ -9,7 +9,7 @@ logLevel="0" fractureRegion="Fracture" targetRegions="{ Region }" - rockToughness="1.0e6" + initialRockToughness="1.0e6" mpiCommOrder="1"/> diff --git a/inputFiles/lagrangianContactMechanics/Sneddon_benchmark.xml b/inputFiles/lagrangianContactMechanics/Sneddon_benchmark.xml index 7750053d6fa..d45bc7ded1f 100644 --- a/inputFiles/lagrangianContactMechanics/Sneddon_benchmark.xml +++ b/inputFiles/lagrangianContactMechanics/Sneddon_benchmark.xml @@ -13,7 +13,7 @@ logLevel="0" fractureRegion="Fracture" targetRegions="{ Region }" - rockToughness="1.0e6" + initialRockToughness="1.0e6" mpiCommOrder="1"/> diff --git a/inputFiles/lagrangianContactMechanics/Sneddon_smoke.xml b/inputFiles/lagrangianContactMechanics/Sneddon_smoke.xml index 5e64b204ad1..5794ed344e5 100644 --- a/inputFiles/lagrangianContactMechanics/Sneddon_smoke.xml +++ b/inputFiles/lagrangianContactMechanics/Sneddon_smoke.xml @@ -13,7 +13,7 @@ logLevel="0" fractureRegion="Fracture" targetRegions="{ Region }" - rockToughness="1.0e6" + initialRockToughness="1.0e6" mpiCommOrder="1"/> diff --git a/inputFiles/lagrangianContactMechanics/TFrac_benchmark.xml b/inputFiles/lagrangianContactMechanics/TFrac_benchmark.xml index 60f1a1f537a..5a6d6b5a8b7 100644 --- a/inputFiles/lagrangianContactMechanics/TFrac_benchmark.xml +++ b/inputFiles/lagrangianContactMechanics/TFrac_benchmark.xml @@ -13,7 +13,7 @@ logLevel="0" fractureRegion="Fracture" targetRegions="{ Region }" - rockToughness="1.0e6" + initialRockToughness="1.0e6" mpiCommOrder="1"/> diff --git a/inputFiles/lagrangianContactMechanics/TFrac_smoke.xml b/inputFiles/lagrangianContactMechanics/TFrac_smoke.xml index 5ab56b69af9..cd3543f0806 100644 --- a/inputFiles/lagrangianContactMechanics/TFrac_smoke.xml +++ b/inputFiles/lagrangianContactMechanics/TFrac_smoke.xml @@ -12,7 +12,7 @@ logLevel="0" fractureRegion="Fracture" targetRegions="{ Region }" - rockToughness="1.0e6" + initialRockToughness="1.0e6" mpiCommOrder="1"/> diff --git a/inputFiles/lagrangianContactMechanics/UnstructuredCrack_base.xml b/inputFiles/lagrangianContactMechanics/UnstructuredCrack_base.xml index 628fd884589..81cddb50913 100644 --- a/inputFiles/lagrangianContactMechanics/UnstructuredCrack_base.xml +++ b/inputFiles/lagrangianContactMechanics/UnstructuredCrack_base.xml @@ -6,7 +6,7 @@ diff --git a/inputFiles/lagrangianContactMechanics/contactMechanics.ats b/inputFiles/lagrangianContactMechanics/contactMechanics.ats index bc4a2e43d0e..6f35259f76c 100644 --- a/inputFiles/lagrangianContactMechanics/contactMechanics.ats +++ b/inputFiles/lagrangianContactMechanics/contactMechanics.ats @@ -1,9 +1,19 @@ -from geos.ats.test_builder import TestDeck, RestartcheckParameters, generate_geos_tests +from geos.ats.test_builder import TestDeck, RestartcheckParameters, CurveCheckParameters, generate_geos_tests restartcheck_params = {} restartcheck_params["atol"] = 2.0E-4 restartcheck_params["rtol"] = 1.0E-7 + +curvecheck_params = {} +curvecheck_params["filename"] = "traction.hdf5" +curvecheck_params["tolerance"] = [1e-1] +curvecheck_params["script_instructions"] = [[ + "./scripts/fixedFaultSlip.py", "curve_check_solution", + "traction" +]] +curvecheck_params["curves"] = "traction" + decks = [ TestDeck( name="ContactMechanics_SimpleCubes_smoke", @@ -90,7 +100,15 @@ decks = [ partitions=((1, 1, 1), ), restart_step=1, check_step=2, - restartcheck_params=RestartcheckParameters(**restartcheck_params)) + restartcheck_params=RestartcheckParameters(**restartcheck_params)), + TestDeck( + name="LagrangeContactBubbleStab_FixedSlip_smoke", + description="Lagrange multiplier with bubble stab and fixed jump on the fault. " + "Fault with imposed slip", + partitions=((1, 1, 1), (2, 2, 1)), + restart_step=1, + check_step=2, + restartcheck_params=RestartcheckParameters(**restartcheck_params)) ] generate_geos_tests(decks) diff --git a/inputFiles/lagrangianContactMechanics/dataTables/gaussianSlip.csv b/inputFiles/lagrangianContactMechanics/dataTables/gaussianSlip.csv new file mode 100644 index 00000000000..9d62405dcb4 --- /dev/null +++ b/inputFiles/lagrangianContactMechanics/dataTables/gaussianSlip.csv @@ -0,0 +1,10000 @@ +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000001 +0.000001 +0.000001 +0.000001 +0.000001 +0.000001 +0.000001 +0.000001 +0.000001 +0.000001 +0.000001 +0.000001 +0.000001 +0.000001 +0.000001 +0.000001 +0.000001 +0.000001 +0.000001 +0.000001 +0.000001 +0.000001 +0.000001 +0.000001 +0.000001 +0.000001 +0.000001 +0.000001 +0.000001 +0.000001 +0.000001 +0.000001 +0.000001 +0.000001 +0.000001 +0.000001 +0.000001 +0.000001 +0.000001 +0.000001 +0.000001 +0.000001 +0.000001 +0.000001 +0.000001 +0.000001 +0.000001 +0.000001 +0.000001 +0.000001 +0.000001 +0.000001 +0.000002 +0.000002 +0.000002 +0.000002 +0.000002 +0.000002 +0.000002 +0.000002 +0.000002 +0.000002 +0.000002 +0.000002 +0.000002 +0.000002 +0.000002 +0.000002 +0.000002 +0.000002 +0.000002 +0.000002 +0.000002 +0.000002 +0.000002 +0.000002 +0.000002 +0.000003 +0.000003 +0.000003 +0.000003 +0.000003 +0.000003 +0.000003 +0.000003 +0.000003 +0.000003 +0.000003 +0.000003 +0.000003 +0.000003 +0.000003 +0.000003 +0.000003 +0.000004 +0.000004 +0.000004 +0.000004 +0.000004 +0.000004 +0.000004 +0.000004 +0.000004 +0.000004 +0.000004 +0.000004 +0.000004 +0.000005 +0.000005 +0.000005 +0.000005 +0.000005 +0.000005 +0.000005 +0.000005 +0.000005 +0.000005 +0.000006 +0.000006 +0.000006 +0.000006 +0.000006 +0.000006 +0.000006 +0.000006 +0.000006 +0.000007 +0.000007 +0.000007 +0.000007 +0.000007 +0.000007 +0.000007 +0.000008 +0.000008 +0.000008 +0.000008 +0.000008 +0.000008 +0.000008 +0.000009 +0.000009 +0.000009 +0.000009 +0.000009 +0.000010 +0.000010 +0.000010 +0.000010 +0.000010 +0.000010 +0.000011 +0.000011 +0.000011 +0.000011 +0.000011 +0.000012 +0.000012 +0.000012 +0.000012 +0.000013 +0.000013 +0.000013 +0.000013 +0.000014 +0.000014 +0.000014 +0.000014 +0.000015 +0.000015 +0.000015 +0.000016 +0.000016 +0.000016 +0.000016 +0.000017 +0.000017 +0.000017 +0.000018 +0.000018 +0.000018 +0.000019 +0.000019 +0.000019 +0.000020 +0.000020 +0.000021 +0.000021 +0.000021 +0.000022 +0.000022 +0.000023 +0.000023 +0.000023 +0.000024 +0.000024 +0.000025 +0.000025 +0.000026 +0.000026 +0.000027 +0.000027 +0.000028 +0.000028 +0.000029 +0.000029 +0.000030 +0.000030 +0.000031 +0.000031 +0.000032 +0.000033 +0.000033 +0.000034 +0.000034 +0.000035 +0.000036 +0.000036 +0.000037 +0.000038 +0.000038 +0.000039 +0.000040 +0.000040 +0.000041 +0.000042 +0.000043 +0.000043 +0.000044 +0.000045 +0.000046 +0.000047 +0.000048 +0.000048 +0.000049 +0.000050 +0.000051 +0.000052 +0.000053 +0.000054 +0.000055 +0.000056 +0.000057 +0.000058 +0.000059 +0.000060 +0.000061 +0.000062 +0.000063 +0.000064 +0.000065 +0.000067 +0.000068 +0.000069 +0.000070 +0.000071 +0.000073 +0.000074 +0.000075 +0.000077 +0.000078 +0.000079 +0.000081 +0.000082 +0.000084 +0.000085 +0.000087 +0.000088 +0.000090 +0.000091 +0.000093 +0.000094 +0.000096 +0.000098 +0.000099 +0.000101 +0.000103 +0.000105 +0.000107 +0.000108 +0.000110 +0.000112 +0.000114 +0.000116 +0.000118 +0.000120 +0.000122 +0.000124 +0.000126 +0.000129 +0.000131 +0.000133 +0.000135 +0.000138 +0.000140 +0.000142 +0.000145 +0.000147 +0.000150 +0.000152 +0.000155 +0.000158 +0.000160 +0.000163 +0.000166 +0.000169 +0.000172 +0.000174 +0.000177 +0.000180 +0.000183 +0.000187 +0.000190 +0.000193 +0.000196 +0.000199 +0.000203 +0.000206 +0.000210 +0.000213 +0.000217 +0.000220 +0.000224 +0.000228 +0.000232 +0.000235 +0.000239 +0.000243 +0.000247 +0.000252 +0.000256 +0.000260 +0.000264 +0.000269 +0.000273 +0.000278 +0.000282 +0.000287 +0.000292 +0.000296 +0.000301 +0.000306 +0.000311 +0.000316 +0.000321 +0.000327 +0.000332 +0.000338 +0.000343 +0.000349 +0.000354 +0.000360 +0.000366 +0.000372 +0.000378 +0.000384 +0.000390 +0.000397 +0.000403 +0.000410 +0.000416 +0.000423 +0.000430 +0.000437 +0.000444 +0.000451 +0.000458 +0.000465 +0.000473 +0.000481 +0.000488 +0.000496 +0.000504 +0.000512 +0.000520 +0.000529 +0.000537 +0.000545 +0.000554 +0.000563 +0.000572 +0.000581 +0.000590 +0.000599 +0.000609 +0.000619 +0.000628 +0.000638 +0.000648 +0.000659 +0.000669 +0.000679 +0.000690 +0.000701 +0.000712 +0.000723 +0.000734 +0.000746 +0.000757 +0.000769 +0.000781 +0.000793 +0.000806 +0.000818 +0.000831 +0.000844 +0.000857 +0.000870 +0.000884 +0.000897 +0.000911 +0.000925 +0.000939 +0.000954 +0.000968 +0.000983 +0.000998 +0.001014 +0.001029 +0.001045 +0.001061 +0.001077 +0.001094 +0.001110 +0.001127 +0.001144 +0.001162 +0.001179 +0.001197 +0.001215 +0.001234 +0.001252 +0.001271 +0.001290 +0.001310 +0.001330 +0.001350 +0.001370 +0.001390 +0.001411 +0.001432 +0.001454 +0.001476 +0.001498 +0.001520 +0.001543 +0.001566 +0.001589 +0.001613 +0.001637 +0.001661 +0.001686 +0.001711 +0.001736 +0.001761 +0.001788 +0.001814 +0.001841 +0.001868 +0.001895 +0.001923 +0.001951 +0.001980 +0.002009 +0.002038 +0.002068 +0.002098 +0.002129 +0.002160 +0.002191 +0.002223 +0.002256 +0.002288 +0.002322 +0.002355 +0.002389 +0.002424 +0.002459 +0.002494 +0.002530 +0.002567 +0.002604 +0.002641 +0.002679 +0.002717 +0.002756 +0.002796 +0.002836 +0.002876 +0.002917 +0.002959 +0.003001 +0.003044 +0.003087 +0.003131 +0.003175 +0.003220 +0.003266 +0.003312 +0.003359 +0.003406 +0.003454 +0.003503 +0.003552 +0.003602 +0.003652 +0.003704 +0.003756 +0.003808 +0.003861 +0.003915 +0.003970 +0.004025 +0.004081 +0.004138 +0.004195 +0.004254 +0.004313 +0.004372 +0.004433 +0.004494 +0.004556 +0.004619 +0.004682 +0.004747 +0.004812 +0.004878 +0.004945 +0.005013 +0.005081 +0.005151 +0.005221 +0.005292 +0.005364 +0.005437 +0.005511 +0.005586 +0.005662 +0.005739 +0.005816 +0.005895 +0.005975 +0.006055 +0.006137 +0.006220 +0.006303 +0.006388 +0.006474 +0.006560 +0.006648 +0.006737 +0.006827 +0.006918 +0.007011 +0.007104 +0.007198 +0.007294 +0.007391 +0.007489 +0.007588 +0.007688 +0.007790 +0.007893 +0.007997 +0.008102 +0.008209 +0.008317 +0.008426 +0.008536 +0.008648 +0.008761 +0.008876 +0.008992 +0.009109 +0.009227 +0.009348 +0.009469 +0.009592 +0.009716 +0.009842 +0.009969 +0.010098 +0.010229 +0.010360 +0.010494 +0.010629 +0.010765 +0.010904 +0.011043 +0.011185 +0.011328 +0.011473 +0.011619 +0.011767 +0.011917 +0.012068 +0.012222 +0.012377 +0.012534 +0.012692 +0.012853 +0.013015 +0.013179 +0.013345 +0.013513 +0.013683 +0.013855 +0.014029 +0.014204 +0.014382 +0.014562 +0.014744 +0.014927 +0.015113 +0.015301 +0.015491 +0.015684 +0.015878 +0.016074 +0.016273 +0.016474 +0.016677 +0.016883 +0.017091 +0.017301 +0.017513 +0.017728 +0.017945 +0.018165 +0.018387 +0.018611 +0.018838 +0.019067 +0.019299 +0.019533 +0.019770 +0.020010 +0.020252 +0.020497 +0.020744 +0.020995 +0.021247 +0.021503 +0.021761 +0.022022 +0.022286 +0.022553 +0.022823 +0.023095 +0.023371 +0.023649 +0.023930 +0.024215 +0.024502 +0.024793 +0.025086 +0.025383 +0.025682 +0.025985 +0.026291 +0.026601 +0.026913 +0.027229 +0.027548 +0.027871 +0.028197 +0.028526 +0.028859 +0.029195 +0.029534 +0.029878 +0.030224 +0.030575 +0.030929 +0.031286 +0.031647 +0.032012 +0.032381 +0.032753 +0.033130 +0.033510 +0.033894 +0.034282 +0.034673 +0.035069 +0.035469 +0.035873 +0.036281 +0.036693 +0.037109 +0.037529 +0.037954 +0.038382 +0.038815 +0.039253 +0.039694 +0.040141 +0.040591 +0.041046 +0.041506 +0.041970 +0.042438 +0.042912 +0.043389 +0.043872 +0.044359 +0.044851 +0.045348 +0.045850 +0.046357 +0.046868 +0.047384 +0.047906 +0.048432 +0.048964 +0.049501 +0.050043 +0.050590 +0.051142 +0.051700 +0.052262 +0.052831 +0.053404 +0.053983 +0.054568 +0.055158 +0.055754 +0.056355 +0.056962 +0.057575 +0.058193 +0.058818 +0.059448 +0.060084 +0.060726 +0.061374 +0.062027 +0.062687 +0.063353 +0.064026 +0.064704 +0.065389 +0.066080 +0.066777 +0.067480 +0.068191 +0.068907 +0.069630 +0.070360 +0.071096 +0.071839 +0.072589 +0.073345 +0.074108 +0.074878 +0.075655 +0.076439 +0.077230 +0.078028 +0.078833 +0.079646 +0.080465 +0.081292 +0.082126 +0.082967 +0.083816 +0.084672 +0.085536 +0.086407 +0.087286 +0.088173 +0.089067 +0.089969 +0.090879 +0.091797 +0.092723 +0.093656 +0.094598 +0.095548 +0.096506 +0.097472 +0.098446 +0.099429 +0.100420 +0.101420 +0.102428 +0.103444 +0.104469 +0.105503 +0.106545 +0.107596 +0.108656 +0.109725 +0.110803 +0.111889 +0.112985 +0.114090 +0.115204 +0.116327 +0.117459 +0.118601 +0.119752 +0.120912 +0.122082 +0.123261 +0.124450 +0.125649 +0.126858 +0.128076 +0.129304 +0.130542 +0.131789 +0.133047 +0.134315 +0.135593 +0.136881 +0.138180 +0.139488 +0.140808 +0.142137 +0.143477 +0.144828 +0.146189 +0.147561 +0.148943 +0.150336 +0.151740 +0.153155 +0.154581 +0.156018 +0.157467 +0.158926 +0.160396 +0.161878 +0.163371 +0.164875 +0.166391 +0.167919 +0.169458 +0.171008 +0.172570 +0.174144 +0.175730 +0.177328 +0.178938 +0.180559 +0.182193 +0.183839 +0.185497 +0.187167 +0.188850 +0.190545 +0.192252 +0.193972 +0.195704 +0.197449 +0.199207 +0.200978 +0.202761 +0.204557 +0.206366 +0.208188 +0.210023 +0.211872 +0.213733 +0.215608 +0.217495 +0.219397 +0.221311 +0.223240 +0.225181 +0.227137 +0.229106 +0.231089 +0.233085 +0.235095 +0.237120 +0.239158 +0.241210 +0.243277 +0.245357 +0.247452 +0.249561 +0.251684 +0.253822 +0.255974 +0.258141 +0.260322 +0.262518 +0.264729 +0.266954 +0.269195 +0.271450 +0.273720 +0.276005 +0.278305 +0.280620 +0.282951 +0.285296 +0.287657 +0.290033 +0.292425 +0.294832 +0.297254 +0.299693 +0.302146 +0.304616 +0.307101 +0.309602 +0.312119 +0.314652 +0.317201 +0.319765 +0.322346 +0.324943 +0.327556 +0.330186 +0.332832 +0.335494 +0.338172 +0.340867 +0.343578 +0.346306 +0.349051 +0.351812 +0.354590 +0.357385 +0.360197 +0.363025 +0.365870 +0.368733 +0.371612 +0.374508 +0.377422 +0.380353 +0.383301 +0.386266 +0.389248 +0.392248 +0.395265 +0.398300 +0.401352 +0.404422 +0.407509 +0.410614 +0.413737 +0.416877 +0.420036 +0.423212 +0.426405 +0.429617 +0.432847 +0.436094 +0.439360 +0.442643 +0.445945 +0.449265 +0.452603 +0.455959 +0.459334 +0.462727 +0.466138 +0.469567 +0.473015 +0.476481 +0.479966 +0.483469 +0.486991 +0.490531 +0.494090 +0.497668 +0.501264 +0.504879 +0.508513 +0.512165 +0.515836 +0.519526 +0.523235 +0.526962 +0.530709 +0.534474 +0.538259 +0.542062 +0.545884 +0.549726 +0.553586 +0.557465 +0.561364 +0.565281 +0.569218 +0.573174 +0.577148 +0.581143 +0.585156 +0.589188 +0.593240 +0.597311 +0.601401 +0.605510 +0.609639 +0.613787 +0.617954 +0.622140 +0.626346 +0.630571 +0.634816 +0.639080 +0.643363 +0.647665 +0.651987 +0.656328 +0.660689 +0.665069 +0.669468 +0.673886 +0.678324 +0.682781 +0.687258 +0.691754 +0.696269 +0.700804 +0.705358 +0.709931 +0.714524 +0.719136 +0.723767 +0.728418 +0.733088 +0.737777 +0.742485 +0.747213 +0.751960 +0.756726 +0.761511 +0.766315 +0.771139 +0.775982 +0.780844 +0.785725 +0.790625 +0.795544 +0.800482 +0.805439 +0.810415 +0.815410 +0.820424 +0.825457 +0.830509 +0.835580 +0.840669 +0.845777 +0.850904 +0.856050 +0.861214 +0.866397 +0.871598 +0.876818 +0.882057 +0.887314 +0.892589 +0.897883 +0.903195 +0.908526 +0.913875 +0.919242 +0.924627 +0.930030 +0.935451 +0.940890 +0.946347 +0.951822 +0.957315 +0.962826 +0.968354 +0.973900 +0.979464 +0.985045 +0.990644 +0.996260 +1.001893 +1.007544 +1.013212 +1.018897 +1.024599 +1.030319 +1.036055 +1.041808 +1.047578 +1.053364 +1.059167 +1.064987 +1.070823 +1.076676 +1.082545 +1.088430 +1.094332 +1.100249 +1.106183 +1.112132 +1.118098 +1.124079 +1.130075 +1.136087 +1.142115 +1.148158 +1.154217 +1.160290 +1.166379 +1.172483 +1.178601 +1.184735 +1.190883 +1.197045 +1.203223 +1.209414 +1.215620 +1.221840 +1.228074 +1.234322 +1.240584 +1.246860 +1.253149 +1.259452 +1.265768 +1.272097 +1.278440 +1.284796 +1.291164 +1.297546 +1.303940 +1.310347 +1.316766 +1.323197 +1.329641 +1.336097 +1.342564 +1.349044 +1.355535 +1.362037 +1.368551 +1.375077 +1.381613 +1.388161 +1.394719 +1.401288 +1.407868 +1.414458 +1.421058 +1.427669 +1.434289 +1.440919 +1.447560 +1.454209 +1.460868 +1.467537 +1.474214 +1.480901 +1.487596 +1.494300 +1.501013 +1.507734 +1.514463 +1.521200 +1.527945 +1.534697 +1.541458 +1.548225 +1.555000 +1.561782 +1.568571 +1.575366 +1.582169 +1.588977 +1.595792 +1.602613 +1.609439 +1.616272 +1.623110 +1.629953 +1.636801 +1.643655 +1.650513 +1.657376 +1.664244 +1.671115 +1.677991 +1.684871 +1.691755 +1.698642 +1.705532 +1.712426 +1.719323 +1.726222 +1.733124 +1.740029 +1.746936 +1.753845 +1.760755 +1.767668 +1.774582 +1.781497 +1.788413 +1.795330 +1.802248 +1.809167 +1.816085 +1.823004 +1.829923 +1.836841 +1.843759 +1.850676 +1.857592 +1.864508 +1.871421 +1.878334 +1.885244 +1.892153 +1.899059 +1.905964 +1.912865 +1.919764 +1.926660 +1.933553 +1.940442 +1.947328 +1.954210 +1.961087 +1.967961 +1.974830 +1.981695 +1.988554 +1.995409 +2.002258 +2.009101 +2.015939 +2.022771 +2.029597 +2.036416 +2.043229 +2.050034 +2.056833 +2.063624 +2.070408 +2.077185 +2.083953 +2.090713 +2.097465 +2.104208 +2.110942 +2.117667 +2.124383 +2.131089 +2.137786 +2.144472 +2.151149 +2.157815 +2.164470 +2.171115 +2.177748 +2.184370 +2.190981 +2.197580 +2.204166 +2.210741 +2.217303 +2.223853 +2.230389 +2.236913 +2.243423 +2.249919 +2.256402 +2.262871 +2.269325 +2.275765 +2.282190 +2.288600 +2.294996 +2.301375 +2.307739 +2.314087 +2.320419 +2.326735 +2.333034 +2.339317 +2.345582 +2.351831 +2.358061 +2.364274 +2.370470 +2.376647 +2.382805 +2.388946 +2.395067 +2.401169 +2.407252 +2.413316 +2.419360 +2.425384 +2.431387 +2.437371 +2.443334 +2.449276 +2.455197 +2.461096 +2.466974 +2.472831 +2.478665 +2.484478 +2.490268 +2.496035 +2.501780 +2.507501 +2.513200 +2.518874 +2.524525 +2.530153 +2.535756 +2.541335 +2.546889 +2.552418 +2.557923 +2.563402 +2.568856 +2.574284 +2.579687 +2.585063 +2.590413 +2.595737 +2.601034 +2.606304 +2.611547 +2.616763 +2.621951 +2.627112 +2.632245 +2.637349 +2.642426 +2.647473 +2.652493 +2.657483 +2.662444 +2.667376 +2.672278 +2.677150 +2.681993 +2.686806 +2.691588 +2.696340 +2.701061 +2.705751 +2.710411 +2.715039 +2.719635 +2.724200 +2.728734 +2.733235 +2.737704 +2.742141 +2.746545 +2.750917 +2.755255 +2.759561 +2.763833 +2.768072 +2.772278 +2.776449 +2.780587 +2.784691 +2.788760 +2.792795 +2.796795 +2.800761 +2.804692 +2.808587 +2.812447 +2.816272 +2.820062 +2.823815 +2.827533 +2.831215 +2.834860 +2.838469 +2.842042 +2.845578 +2.849077 +2.852539 +2.855964 +2.859352 +2.862703 +2.866016 +2.869291 +2.872529 +2.875729 +2.878890 +2.882014 +2.885099 +2.888146 +2.891154 +2.894123 +2.897053 +2.899945 +2.902798 +2.905611 +2.908385 +2.911119 +2.913814 +2.916470 +2.919085 +2.921661 +2.924196 +2.926692 +2.929147 +2.931562 +2.933936 +2.936270 +2.938564 +2.940816 +2.943028 +2.945199 +2.947329 +2.949418 +2.951465 +2.953472 +2.955436 +2.957360 +2.959242 +2.961082 +2.962881 +2.964638 +2.966353 +2.968026 +2.969657 +2.971246 +2.972793 +2.974298 +2.975760 +2.977180 +2.978558 +2.979893 +2.981186 +2.982436 +2.983644 +2.984809 +2.985931 +2.987010 +2.988047 +2.989041 +2.989992 +2.990900 +2.991765 +2.992587 +2.993366 +2.994101 +2.994794 +2.995444 +2.996050 +2.996613 +2.997133 +2.997610 +2.998043 +2.998434 +2.998780 +2.999084 +2.999344 +2.999561 +2.999734 +2.999864 +2.999951 +2.999995 +2.999995 +2.999951 +2.999864 +2.999734 +2.999561 +2.999344 +2.999084 +2.998780 +2.998434 +2.998043 +2.997610 +2.997133 +2.996613 +2.996050 +2.995444 +2.994794 +2.994101 +2.993366 +2.992587 +2.991765 +2.990900 +2.989992 +2.989041 +2.988047 +2.987010 +2.985931 +2.984809 +2.983644 +2.982436 +2.981186 +2.979893 +2.978558 +2.977180 +2.975760 +2.974298 +2.972793 +2.971246 +2.969657 +2.968026 +2.966353 +2.964638 +2.962881 +2.961082 +2.959242 +2.957360 +2.955436 +2.953472 +2.951465 +2.949418 +2.947329 +2.945199 +2.943028 +2.940816 +2.938564 +2.936270 +2.933936 +2.931562 +2.929147 +2.926692 +2.924196 +2.921661 +2.919085 +2.916470 +2.913814 +2.911119 +2.908385 +2.905611 +2.902798 +2.899945 +2.897053 +2.894123 +2.891154 +2.888146 +2.885099 +2.882014 +2.878890 +2.875729 +2.872529 +2.869291 +2.866016 +2.862703 +2.859352 +2.855964 +2.852539 +2.849077 +2.845578 +2.842042 +2.838469 +2.834860 +2.831215 +2.827533 +2.823815 +2.820062 +2.816272 +2.812447 +2.808587 +2.804692 +2.800761 +2.796795 +2.792795 +2.788760 +2.784691 +2.780587 +2.776449 +2.772278 +2.768072 +2.763833 +2.759561 +2.755255 +2.750917 +2.746545 +2.742141 +2.737704 +2.733235 +2.728734 +2.724200 +2.719635 +2.715039 +2.710411 +2.705751 +2.701061 +2.696340 +2.691588 +2.686806 +2.681993 +2.677150 +2.672278 +2.667376 +2.662444 +2.657483 +2.652493 +2.647473 +2.642426 +2.637349 +2.632245 +2.627112 +2.621951 +2.616763 +2.611547 +2.606304 +2.601034 +2.595737 +2.590413 +2.585063 +2.579687 +2.574284 +2.568856 +2.563402 +2.557923 +2.552418 +2.546889 +2.541335 +2.535756 +2.530153 +2.524525 +2.518874 +2.513200 +2.507501 +2.501780 +2.496035 +2.490268 +2.484478 +2.478665 +2.472831 +2.466974 +2.461096 +2.455197 +2.449276 +2.443334 +2.437371 +2.431387 +2.425384 +2.419360 +2.413316 +2.407252 +2.401169 +2.395067 +2.388946 +2.382805 +2.376647 +2.370470 +2.364274 +2.358061 +2.351831 +2.345582 +2.339317 +2.333034 +2.326735 +2.320419 +2.314087 +2.307739 +2.301375 +2.294996 +2.288600 +2.282190 +2.275765 +2.269325 +2.262871 +2.256402 +2.249919 +2.243423 +2.236913 +2.230389 +2.223853 +2.217303 +2.210741 +2.204166 +2.197580 +2.190981 +2.184370 +2.177748 +2.171115 +2.164470 +2.157815 +2.151149 +2.144472 +2.137786 +2.131089 +2.124383 +2.117667 +2.110942 +2.104208 +2.097465 +2.090713 +2.083953 +2.077185 +2.070408 +2.063624 +2.056833 +2.050034 +2.043229 +2.036416 +2.029597 +2.022771 +2.015939 +2.009101 +2.002258 +1.995409 +1.988554 +1.981695 +1.974830 +1.967961 +1.961087 +1.954210 +1.947328 +1.940442 +1.933553 +1.926660 +1.919764 +1.912865 +1.905964 +1.899059 +1.892153 +1.885244 +1.878334 +1.871421 +1.864508 +1.857592 +1.850676 +1.843759 +1.836841 +1.829923 +1.823004 +1.816085 +1.809167 +1.802248 +1.795330 +1.788413 +1.781497 +1.774582 +1.767668 +1.760755 +1.753845 +1.746936 +1.740029 +1.733124 +1.726222 +1.719323 +1.712426 +1.705532 +1.698642 +1.691755 +1.684871 +1.677991 +1.671115 +1.664244 +1.657376 +1.650513 +1.643655 +1.636801 +1.629953 +1.623110 +1.616272 +1.609439 +1.602613 +1.595792 +1.588977 +1.582169 +1.575366 +1.568571 +1.561782 +1.555000 +1.548225 +1.541458 +1.534697 +1.527945 +1.521200 +1.514463 +1.507734 +1.501013 +1.494300 +1.487596 +1.480901 +1.474214 +1.467537 +1.460868 +1.454209 +1.447560 +1.440919 +1.434289 +1.427669 +1.421058 +1.414458 +1.407868 +1.401288 +1.394719 +1.388161 +1.381613 +1.375077 +1.368551 +1.362037 +1.355535 +1.349044 +1.342564 +1.336097 +1.329641 +1.323197 +1.316766 +1.310347 +1.303940 +1.297546 +1.291164 +1.284796 +1.278440 +1.272097 +1.265768 +1.259452 +1.253149 +1.246860 +1.240584 +1.234322 +1.228074 +1.221840 +1.215620 +1.209414 +1.203223 +1.197045 +1.190883 +1.184735 +1.178601 +1.172483 +1.166379 +1.160290 +1.154217 +1.148158 +1.142115 +1.136087 +1.130075 +1.124079 +1.118098 +1.112132 +1.106183 +1.100249 +1.094332 +1.088430 +1.082545 +1.076676 +1.070823 +1.064987 +1.059167 +1.053364 +1.047578 +1.041808 +1.036055 +1.030319 +1.024599 +1.018897 +1.013212 +1.007544 +1.001893 +0.996260 +0.990644 +0.985045 +0.979464 +0.973900 +0.968354 +0.962826 +0.957315 +0.951822 +0.946347 +0.940890 +0.935451 +0.930030 +0.924627 +0.919242 +0.913875 +0.908526 +0.903195 +0.897883 +0.892589 +0.887314 +0.882057 +0.876818 +0.871598 +0.866397 +0.861214 +0.856050 +0.850904 +0.845777 +0.840669 +0.835580 +0.830509 +0.825457 +0.820424 +0.815410 +0.810415 +0.805439 +0.800482 +0.795544 +0.790625 +0.785725 +0.780844 +0.775982 +0.771139 +0.766315 +0.761511 +0.756726 +0.751960 +0.747213 +0.742485 +0.737777 +0.733088 +0.728418 +0.723767 +0.719136 +0.714524 +0.709931 +0.705358 +0.700804 +0.696269 +0.691754 +0.687258 +0.682781 +0.678324 +0.673886 +0.669468 +0.665069 +0.660689 +0.656328 +0.651987 +0.647665 +0.643363 +0.639080 +0.634816 +0.630571 +0.626346 +0.622140 +0.617954 +0.613787 +0.609639 +0.605510 +0.601401 +0.597311 +0.593240 +0.589188 +0.585156 +0.581143 +0.577148 +0.573174 +0.569218 +0.565281 +0.561364 +0.557465 +0.553586 +0.549726 +0.545884 +0.542062 +0.538259 +0.534474 +0.530709 +0.526962 +0.523235 +0.519526 +0.515836 +0.512165 +0.508513 +0.504879 +0.501264 +0.497668 +0.494090 +0.490531 +0.486991 +0.483469 +0.479966 +0.476481 +0.473015 +0.469567 +0.466138 +0.462727 +0.459334 +0.455959 +0.452603 +0.449265 +0.445945 +0.442643 +0.439360 +0.436094 +0.432847 +0.429617 +0.426405 +0.423212 +0.420036 +0.416877 +0.413737 +0.410614 +0.407509 +0.404422 +0.401352 +0.398300 +0.395265 +0.392248 +0.389248 +0.386266 +0.383301 +0.380353 +0.377422 +0.374508 +0.371612 +0.368733 +0.365870 +0.363025 +0.360197 +0.357385 +0.354590 +0.351812 +0.349051 +0.346306 +0.343578 +0.340867 +0.338172 +0.335494 +0.332832 +0.330186 +0.327556 +0.324943 +0.322346 +0.319765 +0.317201 +0.314652 +0.312119 +0.309602 +0.307101 +0.304616 +0.302146 +0.299693 +0.297254 +0.294832 +0.292425 +0.290033 +0.287657 +0.285296 +0.282951 +0.280620 +0.278305 +0.276005 +0.273720 +0.271450 +0.269195 +0.266954 +0.264729 +0.262518 +0.260322 +0.258141 +0.255974 +0.253822 +0.251684 +0.249561 +0.247452 +0.245357 +0.243277 +0.241210 +0.239158 +0.237120 +0.235095 +0.233085 +0.231089 +0.229106 +0.227137 +0.225181 +0.223240 +0.221311 +0.219397 +0.217495 +0.215608 +0.213733 +0.211872 +0.210023 +0.208188 +0.206366 +0.204557 +0.202761 +0.200978 +0.199207 +0.197449 +0.195704 +0.193972 +0.192252 +0.190545 +0.188850 +0.187167 +0.185497 +0.183839 +0.182193 +0.180559 +0.178938 +0.177328 +0.175730 +0.174144 +0.172570 +0.171008 +0.169458 +0.167919 +0.166391 +0.164875 +0.163371 +0.161878 +0.160396 +0.158926 +0.157467 +0.156018 +0.154581 +0.153155 +0.151740 +0.150336 +0.148943 +0.147561 +0.146189 +0.144828 +0.143477 +0.142137 +0.140808 +0.139488 +0.138180 +0.136881 +0.135593 +0.134315 +0.133047 +0.131789 +0.130542 +0.129304 +0.128076 +0.126858 +0.125649 +0.124450 +0.123261 +0.122082 +0.120912 +0.119752 +0.118601 +0.117459 +0.116327 +0.115204 +0.114090 +0.112985 +0.111889 +0.110803 +0.109725 +0.108656 +0.107596 +0.106545 +0.105503 +0.104469 +0.103444 +0.102428 +0.101420 +0.100420 +0.099429 +0.098446 +0.097472 +0.096506 +0.095548 +0.094598 +0.093656 +0.092723 +0.091797 +0.090879 +0.089969 +0.089067 +0.088173 +0.087286 +0.086407 +0.085536 +0.084672 +0.083816 +0.082967 +0.082126 +0.081292 +0.080465 +0.079646 +0.078833 +0.078028 +0.077230 +0.076439 +0.075655 +0.074878 +0.074108 +0.073345 +0.072589 +0.071839 +0.071096 +0.070360 +0.069630 +0.068907 +0.068191 +0.067480 +0.066777 +0.066080 +0.065389 +0.064704 +0.064026 +0.063353 +0.062687 +0.062027 +0.061374 +0.060726 +0.060084 +0.059448 +0.058818 +0.058193 +0.057575 +0.056962 +0.056355 +0.055754 +0.055158 +0.054568 +0.053983 +0.053404 +0.052831 +0.052262 +0.051700 +0.051142 +0.050590 +0.050043 +0.049501 +0.048964 +0.048432 +0.047906 +0.047384 +0.046868 +0.046357 +0.045850 +0.045348 +0.044851 +0.044359 +0.043872 +0.043389 +0.042912 +0.042438 +0.041970 +0.041506 +0.041046 +0.040591 +0.040141 +0.039694 +0.039253 +0.038815 +0.038382 +0.037954 +0.037529 +0.037109 +0.036693 +0.036281 +0.035873 +0.035469 +0.035069 +0.034673 +0.034282 +0.033894 +0.033510 +0.033130 +0.032753 +0.032381 +0.032012 +0.031647 +0.031286 +0.030929 +0.030575 +0.030224 +0.029878 +0.029534 +0.029195 +0.028859 +0.028526 +0.028197 +0.027871 +0.027548 +0.027229 +0.026913 +0.026601 +0.026291 +0.025985 +0.025682 +0.025383 +0.025086 +0.024793 +0.024502 +0.024215 +0.023930 +0.023649 +0.023371 +0.023095 +0.022823 +0.022553 +0.022286 +0.022022 +0.021761 +0.021503 +0.021247 +0.020995 +0.020744 +0.020497 +0.020252 +0.020010 +0.019770 +0.019533 +0.019299 +0.019067 +0.018838 +0.018611 +0.018387 +0.018165 +0.017945 +0.017728 +0.017513 +0.017301 +0.017091 +0.016883 +0.016677 +0.016474 +0.016273 +0.016074 +0.015878 +0.015684 +0.015491 +0.015301 +0.015113 +0.014927 +0.014744 +0.014562 +0.014382 +0.014204 +0.014029 +0.013855 +0.013683 +0.013513 +0.013345 +0.013179 +0.013015 +0.012853 +0.012692 +0.012534 +0.012377 +0.012222 +0.012068 +0.011917 +0.011767 +0.011619 +0.011473 +0.011328 +0.011185 +0.011043 +0.010904 +0.010765 +0.010629 +0.010494 +0.010360 +0.010229 +0.010098 +0.009969 +0.009842 +0.009716 +0.009592 +0.009469 +0.009348 +0.009227 +0.009109 +0.008992 +0.008876 +0.008761 +0.008648 +0.008536 +0.008426 +0.008317 +0.008209 +0.008102 +0.007997 +0.007893 +0.007790 +0.007688 +0.007588 +0.007489 +0.007391 +0.007294 +0.007198 +0.007104 +0.007011 +0.006918 +0.006827 +0.006737 +0.006648 +0.006560 +0.006474 +0.006388 +0.006303 +0.006220 +0.006137 +0.006055 +0.005975 +0.005895 +0.005816 +0.005739 +0.005662 +0.005586 +0.005511 +0.005437 +0.005364 +0.005292 +0.005221 +0.005151 +0.005081 +0.005013 +0.004945 +0.004878 +0.004812 +0.004747 +0.004682 +0.004619 +0.004556 +0.004494 +0.004433 +0.004372 +0.004313 +0.004254 +0.004195 +0.004138 +0.004081 +0.004025 +0.003970 +0.003915 +0.003861 +0.003808 +0.003756 +0.003704 +0.003652 +0.003602 +0.003552 +0.003503 +0.003454 +0.003406 +0.003359 +0.003312 +0.003266 +0.003220 +0.003175 +0.003131 +0.003087 +0.003044 +0.003001 +0.002959 +0.002917 +0.002876 +0.002836 +0.002796 +0.002756 +0.002717 +0.002679 +0.002641 +0.002604 +0.002567 +0.002530 +0.002494 +0.002459 +0.002424 +0.002389 +0.002355 +0.002322 +0.002288 +0.002256 +0.002223 +0.002191 +0.002160 +0.002129 +0.002098 +0.002068 +0.002038 +0.002009 +0.001980 +0.001951 +0.001923 +0.001895 +0.001868 +0.001841 +0.001814 +0.001788 +0.001761 +0.001736 +0.001711 +0.001686 +0.001661 +0.001637 +0.001613 +0.001589 +0.001566 +0.001543 +0.001520 +0.001498 +0.001476 +0.001454 +0.001432 +0.001411 +0.001390 +0.001370 +0.001350 +0.001330 +0.001310 +0.001290 +0.001271 +0.001252 +0.001234 +0.001215 +0.001197 +0.001179 +0.001162 +0.001144 +0.001127 +0.001110 +0.001094 +0.001077 +0.001061 +0.001045 +0.001029 +0.001014 +0.000998 +0.000983 +0.000968 +0.000954 +0.000939 +0.000925 +0.000911 +0.000897 +0.000884 +0.000870 +0.000857 +0.000844 +0.000831 +0.000818 +0.000806 +0.000793 +0.000781 +0.000769 +0.000757 +0.000746 +0.000734 +0.000723 +0.000712 +0.000701 +0.000690 +0.000679 +0.000669 +0.000659 +0.000648 +0.000638 +0.000628 +0.000619 +0.000609 +0.000599 +0.000590 +0.000581 +0.000572 +0.000563 +0.000554 +0.000545 +0.000537 +0.000529 +0.000520 +0.000512 +0.000504 +0.000496 +0.000488 +0.000481 +0.000473 +0.000465 +0.000458 +0.000451 +0.000444 +0.000437 +0.000430 +0.000423 +0.000416 +0.000410 +0.000403 +0.000397 +0.000390 +0.000384 +0.000378 +0.000372 +0.000366 +0.000360 +0.000354 +0.000349 +0.000343 +0.000338 +0.000332 +0.000327 +0.000321 +0.000316 +0.000311 +0.000306 +0.000301 +0.000296 +0.000292 +0.000287 +0.000282 +0.000278 +0.000273 +0.000269 +0.000264 +0.000260 +0.000256 +0.000252 +0.000247 +0.000243 +0.000239 +0.000235 +0.000232 +0.000228 +0.000224 +0.000220 +0.000217 +0.000213 +0.000210 +0.000206 +0.000203 +0.000199 +0.000196 +0.000193 +0.000190 +0.000187 +0.000183 +0.000180 +0.000177 +0.000174 +0.000172 +0.000169 +0.000166 +0.000163 +0.000160 +0.000158 +0.000155 +0.000152 +0.000150 +0.000147 +0.000145 +0.000142 +0.000140 +0.000138 +0.000135 +0.000133 +0.000131 +0.000129 +0.000126 +0.000124 +0.000122 +0.000120 +0.000118 +0.000116 +0.000114 +0.000112 +0.000110 +0.000108 +0.000107 +0.000105 +0.000103 +0.000101 +0.000099 +0.000098 +0.000096 +0.000094 +0.000093 +0.000091 +0.000090 +0.000088 +0.000087 +0.000085 +0.000084 +0.000082 +0.000081 +0.000079 +0.000078 +0.000077 +0.000075 +0.000074 +0.000073 +0.000071 +0.000070 +0.000069 +0.000068 +0.000067 +0.000065 +0.000064 +0.000063 +0.000062 +0.000061 +0.000060 +0.000059 +0.000058 +0.000057 +0.000056 +0.000055 +0.000054 +0.000053 +0.000052 +0.000051 +0.000050 +0.000049 +0.000048 +0.000048 +0.000047 +0.000046 +0.000045 +0.000044 +0.000043 +0.000043 +0.000042 +0.000041 +0.000040 +0.000040 +0.000039 +0.000038 +0.000038 +0.000037 +0.000036 +0.000036 +0.000035 +0.000034 +0.000034 +0.000033 +0.000033 +0.000032 +0.000031 +0.000031 +0.000030 +0.000030 +0.000029 +0.000029 +0.000028 +0.000028 +0.000027 +0.000027 +0.000026 +0.000026 +0.000025 +0.000025 +0.000024 +0.000024 +0.000023 +0.000023 +0.000023 +0.000022 +0.000022 +0.000021 +0.000021 +0.000021 +0.000020 +0.000020 +0.000019 +0.000019 +0.000019 +0.000018 +0.000018 +0.000018 +0.000017 +0.000017 +0.000017 +0.000016 +0.000016 +0.000016 +0.000016 +0.000015 +0.000015 +0.000015 +0.000014 +0.000014 +0.000014 +0.000014 +0.000013 +0.000013 +0.000013 +0.000013 +0.000012 +0.000012 +0.000012 +0.000012 +0.000011 +0.000011 +0.000011 +0.000011 +0.000011 +0.000010 +0.000010 +0.000010 +0.000010 +0.000010 +0.000010 +0.000009 +0.000009 +0.000009 +0.000009 +0.000009 +0.000008 +0.000008 +0.000008 +0.000008 +0.000008 +0.000008 +0.000008 +0.000007 +0.000007 +0.000007 +0.000007 +0.000007 +0.000007 +0.000007 +0.000006 +0.000006 +0.000006 +0.000006 +0.000006 +0.000006 +0.000006 +0.000006 +0.000006 +0.000005 +0.000005 +0.000005 +0.000005 +0.000005 +0.000005 +0.000005 +0.000005 +0.000005 +0.000005 +0.000004 +0.000004 +0.000004 +0.000004 +0.000004 +0.000004 +0.000004 +0.000004 +0.000004 +0.000004 +0.000004 +0.000004 +0.000004 +0.000003 +0.000003 +0.000003 +0.000003 +0.000003 +0.000003 +0.000003 +0.000003 +0.000003 +0.000003 +0.000003 +0.000003 +0.000003 +0.000003 +0.000003 +0.000003 +0.000003 +0.000002 +0.000002 +0.000002 +0.000002 +0.000002 +0.000002 +0.000002 +0.000002 +0.000002 +0.000002 +0.000002 +0.000002 +0.000002 +0.000002 +0.000002 +0.000002 +0.000002 +0.000002 +0.000002 +0.000002 +0.000002 +0.000002 +0.000002 +0.000002 +0.000002 +0.000001 +0.000001 +0.000001 +0.000001 +0.000001 +0.000001 +0.000001 +0.000001 +0.000001 +0.000001 +0.000001 +0.000001 +0.000001 +0.000001 +0.000001 +0.000001 +0.000001 +0.000001 +0.000001 +0.000001 +0.000001 +0.000001 +0.000001 +0.000001 +0.000001 +0.000001 +0.000001 +0.000001 +0.000001 +0.000001 +0.000001 +0.000001 +0.000001 +0.000001 +0.000001 +0.000001 +0.000001 +0.000001 +0.000001 +0.000001 +0.000001 +0.000001 +0.000001 +0.000001 +0.000001 +0.000001 +0.000001 +0.000001 +0.000001 +0.000001 +0.000001 +0.000001 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 diff --git a/inputFiles/lagrangianContactMechanics/dataTables/singularCrackSlip.csv b/inputFiles/lagrangianContactMechanics/dataTables/singularCrackSlip.csv new file mode 100644 index 00000000000..edf811e7742 --- /dev/null +++ b/inputFiles/lagrangianContactMechanics/dataTables/singularCrackSlip.csv @@ -0,0 +1,10000 @@ +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.128977 +0.225371 +0.291349 +0.344835 +0.390990 +0.432169 +0.469683 +0.504350 +0.536722 +0.567193 +0.596053 +0.623527 +0.649790 +0.674984 +0.699225 +0.722608 +0.745213 +0.767111 +0.788359 +0.809010 +0.829106 +0.848689 +0.867793 +0.886448 +0.904683 +0.922522 +0.939988 +0.957101 +0.973881 +0.990343 +1.006504 +1.022377 +1.037977 +1.053314 +1.068401 +1.083248 +1.097864 +1.112259 +1.126442 +1.140419 +1.154199 +1.167789 +1.181194 +1.194422 +1.207478 +1.220368 +1.233097 +1.245670 +1.258091 +1.270365 +1.282496 +1.294488 +1.306346 +1.318072 +1.329670 +1.341143 +1.352496 +1.363729 +1.374848 +1.385854 +1.396749 +1.407538 +1.418221 +1.428802 +1.439282 +1.449664 +1.459950 +1.470142 +1.480242 +1.490251 +1.500172 +1.510006 +1.519756 +1.529422 +1.539006 +1.548509 +1.557934 +1.567281 +1.576553 +1.585749 +1.594872 +1.603923 +1.612903 +1.621814 +1.630655 +1.639429 +1.648137 +1.656779 +1.665357 +1.673872 +1.682324 +1.690714 +1.699044 +1.707315 +1.715526 +1.723680 +1.731776 +1.739816 +1.747800 +1.755730 +1.763605 +1.771427 +1.779196 +1.786914 +1.794580 +1.802195 +1.809760 +1.817276 +1.824744 +1.832163 +1.839534 +1.846858 +1.854136 +1.861368 +1.868555 +1.875696 +1.882794 +1.889847 +1.896857 +1.903824 +1.910749 +1.917632 +1.924473 +1.931273 +1.938033 +1.944752 +1.951432 +1.958072 +1.964673 +1.971235 +1.977760 +1.984246 +1.990695 +1.997107 +2.003482 +2.009821 +2.016123 +2.022390 +2.028622 +2.034818 +2.040980 +2.047107 +2.053200 +2.059259 +2.065285 +2.071277 +2.077237 +2.083164 +2.089058 +2.094921 +2.100751 +2.106550 +2.112318 +2.118055 +2.123760 +2.129436 +2.135080 +2.140695 +2.146280 +2.151836 +2.157361 +2.162858 +2.168326 +2.173765 +2.179176 +2.184558 +2.189913 +2.195239 +2.200538 +2.205809 +2.211053 +2.216270 +2.221460 +2.226623 +2.231760 +2.236870 +2.241954 +2.247013 +2.252045 +2.257052 +2.262033 +2.266989 +2.271920 +2.276826 +2.281707 +2.286564 +2.291396 +2.296204 +2.300987 +2.305747 +2.310482 +2.315194 +2.319882 +2.324547 +2.329189 +2.333807 +2.338402 +2.342975 +2.347525 +2.352052 +2.356556 +2.361038 +2.365498 +2.369936 +2.374352 +2.378746 +2.383118 +2.387468 +2.391797 +2.396105 +2.400391 +2.404656 +2.408901 +2.413124 +2.417326 +2.421508 +2.425669 +2.429809 +2.433929 +2.438029 +2.442108 +2.446168 +2.450207 +2.454227 +2.458227 +2.462207 +2.466167 +2.470108 +2.474029 +2.477932 +2.481814 +2.485678 +2.489523 +2.493349 +2.497155 +2.500943 +2.504713 +2.508463 +2.512195 +2.515909 +2.519604 +2.523281 +2.526940 +2.530581 +2.534203 +2.537808 +2.541394 +2.544963 +2.548514 +2.552047 +2.555563 +2.559061 +2.562542 +2.566005 +2.569451 +2.572880 +2.576292 +2.579686 +2.583063 +2.586424 +2.589767 +2.593094 +2.596404 +2.599697 +2.602973 +2.606233 +2.609476 +2.612703 +2.615913 +2.619107 +2.622285 +2.625447 +2.628592 +2.631721 +2.634834 +2.637931 +2.641013 +2.644078 +2.647127 +2.650161 +2.653179 +2.656181 +2.659168 +2.662139 +2.665094 +2.668034 +2.670959 +2.673868 +2.676762 +2.679641 +2.682505 +2.685353 +2.688186 +2.691004 +2.693807 +2.696595 +2.699369 +2.702127 +2.704870 +2.707599 +2.710313 +2.713012 +2.715697 +2.718367 +2.721022 +2.723663 +2.726289 +2.728901 +2.731499 +2.734082 +2.736651 +2.739205 +2.741746 +2.744272 +2.746783 +2.749281 +2.751765 +2.754235 +2.756690 +2.759132 +2.761560 +2.763973 +2.766373 +2.768759 +2.771132 +2.773490 +2.775835 +2.778166 +2.780484 +2.782788 +2.785078 +2.787355 +2.789618 +2.791868 +2.794104 +2.796327 +2.798536 +2.800732 +2.802915 +2.805085 +2.807241 +2.809384 +2.811514 +2.813630 +2.815734 +2.817824 +2.819901 +2.821966 +2.824017 +2.826055 +2.828080 +2.830092 +2.832092 +2.834078 +2.836052 +2.838013 +2.839960 +2.841896 +2.843818 +2.845728 +2.847625 +2.849509 +2.851381 +2.853240 +2.855086 +2.856920 +2.858741 +2.860550 +2.862346 +2.864130 +2.865901 +2.867660 +2.869407 +2.871141 +2.872862 +2.874572 +2.876269 +2.877953 +2.879626 +2.881286 +2.882934 +2.884570 +2.886193 +2.887804 +2.889404 +2.890991 +2.892565 +2.894128 +2.895679 +2.897218 +2.898744 +2.900259 +2.901762 +2.903252 +2.904731 +2.906198 +2.907652 +2.909095 +2.910526 +2.911945 +2.913353 +2.914748 +2.916132 +2.917503 +2.918863 +2.920212 +2.921548 +2.922873 +2.924186 +2.925487 +2.926777 +2.928055 +2.929321 +2.930576 +2.931819 +2.933050 +2.934270 +2.935478 +2.936675 +2.937860 +2.939033 +2.940195 +2.941345 +2.942484 +2.943612 +2.944728 +2.945832 +2.946925 +2.948007 +2.949077 +2.950136 +2.951183 +2.952219 +2.953244 +2.954257 +2.955259 +2.956250 +2.957229 +2.958197 +2.959153 +2.960098 +2.961032 +2.961955 +2.962867 +2.963767 +2.964656 +2.965533 +2.966400 +2.967255 +2.968099 +2.968932 +2.969754 +2.970564 +2.971363 +2.972152 +2.972929 +2.973694 +2.974449 +2.975193 +2.975925 +2.976647 +2.977357 +2.978056 +2.978744 +2.979421 +2.980087 +2.980742 +2.981386 +2.982019 +2.982640 +2.983251 +2.983851 +2.984439 +2.985017 +2.985584 +2.986139 +2.986684 +2.987218 +2.987740 +2.988252 +2.988753 +2.989243 +2.989721 +2.990189 +2.990646 +2.991092 +2.991527 +2.991951 +2.992364 +2.992766 +2.993158 +2.993538 +2.993908 +2.994266 +2.994614 +2.994950 +2.995276 +2.995591 +2.995895 +2.996188 +2.996471 +2.996742 +2.997003 +2.997252 +2.997491 +2.997719 +2.997936 +2.998142 +2.998337 +2.998522 +2.998695 +2.998858 +2.999010 +2.999151 +2.999281 +2.999401 +2.999509 +2.999607 +2.999693 +2.999769 +2.999834 +2.999889 +2.999932 +2.999964 +2.999986 +2.999997 +2.999997 +2.999986 +2.999964 +2.999932 +2.999889 +2.999834 +2.999769 +2.999693 +2.999607 +2.999509 +2.999401 +2.999281 +2.999151 +2.999010 +2.998858 +2.998695 +2.998522 +2.998337 +2.998142 +2.997936 +2.997719 +2.997491 +2.997252 +2.997003 +2.996742 +2.996471 +2.996188 +2.995895 +2.995591 +2.995276 +2.994950 +2.994614 +2.994266 +2.993908 +2.993538 +2.993158 +2.992766 +2.992364 +2.991951 +2.991527 +2.991092 +2.990646 +2.990189 +2.989721 +2.989243 +2.988753 +2.988252 +2.987740 +2.987218 +2.986684 +2.986139 +2.985584 +2.985017 +2.984439 +2.983851 +2.983251 +2.982640 +2.982019 +2.981386 +2.980742 +2.980087 +2.979421 +2.978744 +2.978056 +2.977357 +2.976647 +2.975925 +2.975193 +2.974449 +2.973694 +2.972929 +2.972152 +2.971363 +2.970564 +2.969754 +2.968932 +2.968099 +2.967255 +2.966400 +2.965533 +2.964656 +2.963767 +2.962867 +2.961955 +2.961032 +2.960098 +2.959153 +2.958197 +2.957229 +2.956250 +2.955259 +2.954257 +2.953244 +2.952219 +2.951183 +2.950136 +2.949077 +2.948007 +2.946925 +2.945832 +2.944728 +2.943612 +2.942484 +2.941345 +2.940195 +2.939033 +2.937860 +2.936675 +2.935478 +2.934270 +2.933050 +2.931819 +2.930576 +2.929321 +2.928055 +2.926777 +2.925487 +2.924186 +2.922873 +2.921548 +2.920212 +2.918863 +2.917503 +2.916132 +2.914748 +2.913353 +2.911945 +2.910526 +2.909095 +2.907652 +2.906198 +2.904731 +2.903252 +2.901762 +2.900259 +2.898744 +2.897218 +2.895679 +2.894128 +2.892565 +2.890991 +2.889404 +2.887804 +2.886193 +2.884570 +2.882934 +2.881286 +2.879626 +2.877953 +2.876269 +2.874572 +2.872862 +2.871141 +2.869407 +2.867660 +2.865901 +2.864130 +2.862346 +2.860550 +2.858741 +2.856920 +2.855086 +2.853240 +2.851381 +2.849509 +2.847625 +2.845728 +2.843818 +2.841896 +2.839960 +2.838013 +2.836052 +2.834078 +2.832092 +2.830092 +2.828080 +2.826055 +2.824017 +2.821966 +2.819901 +2.817824 +2.815734 +2.813630 +2.811514 +2.809384 +2.807241 +2.805085 +2.802915 +2.800732 +2.798536 +2.796327 +2.794104 +2.791868 +2.789618 +2.787355 +2.785078 +2.782788 +2.780484 +2.778166 +2.775835 +2.773490 +2.771132 +2.768759 +2.766373 +2.763973 +2.761560 +2.759132 +2.756690 +2.754235 +2.751765 +2.749281 +2.746783 +2.744272 +2.741746 +2.739205 +2.736651 +2.734082 +2.731499 +2.728901 +2.726289 +2.723663 +2.721022 +2.718367 +2.715697 +2.713012 +2.710313 +2.707599 +2.704870 +2.702127 +2.699369 +2.696595 +2.693807 +2.691004 +2.688186 +2.685353 +2.682505 +2.679641 +2.676762 +2.673868 +2.670959 +2.668034 +2.665094 +2.662139 +2.659168 +2.656181 +2.653179 +2.650161 +2.647127 +2.644078 +2.641013 +2.637931 +2.634834 +2.631721 +2.628592 +2.625447 +2.622285 +2.619107 +2.615913 +2.612703 +2.609476 +2.606233 +2.602973 +2.599697 +2.596404 +2.593094 +2.589767 +2.586424 +2.583063 +2.579686 +2.576292 +2.572880 +2.569451 +2.566005 +2.562542 +2.559061 +2.555563 +2.552047 +2.548514 +2.544963 +2.541394 +2.537808 +2.534203 +2.530581 +2.526940 +2.523281 +2.519604 +2.515909 +2.512195 +2.508463 +2.504713 +2.500943 +2.497155 +2.493349 +2.489523 +2.485678 +2.481814 +2.477932 +2.474029 +2.470108 +2.466167 +2.462207 +2.458227 +2.454227 +2.450207 +2.446168 +2.442108 +2.438029 +2.433929 +2.429809 +2.425669 +2.421508 +2.417326 +2.413124 +2.408901 +2.404656 +2.400391 +2.396105 +2.391797 +2.387468 +2.383118 +2.378746 +2.374352 +2.369936 +2.365498 +2.361038 +2.356556 +2.352052 +2.347525 +2.342975 +2.338402 +2.333807 +2.329189 +2.324547 +2.319882 +2.315194 +2.310482 +2.305747 +2.300987 +2.296204 +2.291396 +2.286564 +2.281707 +2.276826 +2.271920 +2.266989 +2.262033 +2.257052 +2.252045 +2.247013 +2.241954 +2.236870 +2.231760 +2.226623 +2.221460 +2.216270 +2.211053 +2.205809 +2.200538 +2.195239 +2.189913 +2.184558 +2.179176 +2.173765 +2.168326 +2.162858 +2.157361 +2.151836 +2.146280 +2.140695 +2.135080 +2.129436 +2.123760 +2.118055 +2.112318 +2.106550 +2.100751 +2.094921 +2.089058 +2.083164 +2.077237 +2.071277 +2.065285 +2.059259 +2.053200 +2.047107 +2.040980 +2.034818 +2.028622 +2.022390 +2.016123 +2.009821 +2.003482 +1.997107 +1.990695 +1.984246 +1.977760 +1.971235 +1.964673 +1.958072 +1.951432 +1.944752 +1.938033 +1.931273 +1.924473 +1.917632 +1.910749 +1.903824 +1.896857 +1.889847 +1.882794 +1.875696 +1.868555 +1.861368 +1.854136 +1.846858 +1.839534 +1.832163 +1.824744 +1.817276 +1.809760 +1.802195 +1.794580 +1.786914 +1.779196 +1.771427 +1.763605 +1.755730 +1.747800 +1.739816 +1.731776 +1.723680 +1.715526 +1.707315 +1.699044 +1.690714 +1.682324 +1.673872 +1.665357 +1.656779 +1.648137 +1.639429 +1.630655 +1.621814 +1.612903 +1.603923 +1.594872 +1.585749 +1.576553 +1.567281 +1.557934 +1.548509 +1.539006 +1.529422 +1.519756 +1.510006 +1.500172 +1.490251 +1.480242 +1.470142 +1.459950 +1.449664 +1.439282 +1.428802 +1.418221 +1.407538 +1.396749 +1.385854 +1.374848 +1.363729 +1.352496 +1.341143 +1.329670 +1.318072 +1.306346 +1.294488 +1.282496 +1.270365 +1.258091 +1.245670 +1.233097 +1.220368 +1.207478 +1.194422 +1.181194 +1.167789 +1.154199 +1.140419 +1.126442 +1.112259 +1.097864 +1.083248 +1.068401 +1.053314 +1.037977 +1.022377 +1.006504 +0.990343 +0.973881 +0.957101 +0.939988 +0.922522 +0.904683 +0.886448 +0.867793 +0.848689 +0.829106 +0.809010 +0.788359 +0.767111 +0.745213 +0.722608 +0.699225 +0.674984 +0.649790 +0.623527 +0.596053 +0.567193 +0.536722 +0.504350 +0.469683 +0.432169 +0.390990 +0.344835 +0.291349 +0.225371 +0.128977 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 +0.000000 diff --git a/inputFiles/lagrangianContactMechanics/dataTables/x.csv b/inputFiles/lagrangianContactMechanics/dataTables/x.csv new file mode 100644 index 00000000000..aef9f0ca8b1 --- /dev/null +++ b/inputFiles/lagrangianContactMechanics/dataTables/x.csv @@ -0,0 +1,10000 @@ +-19.010000 +-19.006198 +-19.002395 +-18.998593 +-18.994790 +-18.990988 +-18.987186 +-18.983383 +-18.979581 +-18.975779 +-18.971976 +-18.968174 +-18.964371 +-18.960569 +-18.956767 +-18.952964 +-18.949162 +-18.945360 +-18.941557 +-18.937755 +-18.933952 +-18.930150 +-18.926348 +-18.922545 +-18.918743 +-18.914940 +-18.911138 +-18.907336 +-18.903533 +-18.899731 +-18.895929 +-18.892126 +-18.888324 +-18.884521 +-18.880719 +-18.876917 +-18.873114 +-18.869312 +-18.865510 +-18.861707 +-18.857905 +-18.854102 +-18.850300 +-18.846498 +-18.842695 +-18.838893 +-18.835091 +-18.831288 +-18.827486 +-18.823683 +-18.819881 +-18.816079 +-18.812276 +-18.808474 +-18.804671 +-18.800869 +-18.797067 +-18.793264 +-18.789462 +-18.785660 +-18.781857 +-18.778055 +-18.774252 +-18.770450 +-18.766648 +-18.762845 +-18.759043 +-18.755241 +-18.751438 +-18.747636 +-18.743833 +-18.740031 +-18.736229 +-18.732426 +-18.728624 +-18.724821 +-18.721019 +-18.717217 +-18.713414 +-18.709612 +-18.705810 +-18.702007 +-18.698205 +-18.694402 +-18.690600 +-18.686798 +-18.682995 +-18.679193 +-18.675391 +-18.671588 +-18.667786 +-18.663983 +-18.660181 +-18.656379 +-18.652576 +-18.648774 +-18.644971 +-18.641169 +-18.637367 +-18.633564 +-18.629762 +-18.625960 +-18.622157 +-18.618355 +-18.614552 +-18.610750 +-18.606948 +-18.603145 +-18.599343 +-18.595541 +-18.591738 +-18.587936 +-18.584133 +-18.580331 +-18.576529 +-18.572726 +-18.568924 +-18.565122 +-18.561319 +-18.557517 +-18.553714 +-18.549912 +-18.546110 +-18.542307 +-18.538505 +-18.534702 +-18.530900 +-18.527098 +-18.523295 +-18.519493 +-18.515691 +-18.511888 +-18.508086 +-18.504283 +-18.500481 +-18.496679 +-18.492876 +-18.489074 +-18.485272 +-18.481469 +-18.477667 +-18.473864 +-18.470062 +-18.466260 +-18.462457 +-18.458655 +-18.454852 +-18.451050 +-18.447248 +-18.443445 +-18.439643 +-18.435841 +-18.432038 +-18.428236 +-18.424433 +-18.420631 +-18.416829 +-18.413026 +-18.409224 +-18.405422 +-18.401619 +-18.397817 +-18.394014 +-18.390212 +-18.386410 +-18.382607 +-18.378805 +-18.375003 +-18.371200 +-18.367398 +-18.363595 +-18.359793 +-18.355991 +-18.352188 +-18.348386 +-18.344583 +-18.340781 +-18.336979 +-18.333176 +-18.329374 +-18.325572 +-18.321769 +-18.317967 +-18.314164 +-18.310362 +-18.306560 +-18.302757 +-18.298955 +-18.295153 +-18.291350 +-18.287548 +-18.283745 +-18.279943 +-18.276141 +-18.272338 +-18.268536 +-18.264733 +-18.260931 +-18.257129 +-18.253326 +-18.249524 +-18.245722 +-18.241919 +-18.238117 +-18.234314 +-18.230512 +-18.226710 +-18.222907 +-18.219105 +-18.215303 +-18.211500 +-18.207698 +-18.203895 +-18.200093 +-18.196291 +-18.192488 +-18.188686 +-18.184883 +-18.181081 +-18.177279 +-18.173476 +-18.169674 +-18.165872 +-18.162069 +-18.158267 +-18.154464 +-18.150662 +-18.146860 +-18.143057 +-18.139255 +-18.135453 +-18.131650 +-18.127848 +-18.124045 +-18.120243 +-18.116441 +-18.112638 +-18.108836 +-18.105034 +-18.101231 +-18.097429 +-18.093626 +-18.089824 +-18.086022 +-18.082219 +-18.078417 +-18.074614 +-18.070812 +-18.067010 +-18.063207 +-18.059405 +-18.055603 +-18.051800 +-18.047998 +-18.044195 +-18.040393 +-18.036591 +-18.032788 +-18.028986 +-18.025184 +-18.021381 +-18.017579 +-18.013776 +-18.009974 +-18.006172 +-18.002369 +-17.998567 +-17.994764 +-17.990962 +-17.987160 +-17.983357 +-17.979555 +-17.975753 +-17.971950 +-17.968148 +-17.964345 +-17.960543 +-17.956741 +-17.952938 +-17.949136 +-17.945334 +-17.941531 +-17.937729 +-17.933926 +-17.930124 +-17.926322 +-17.922519 +-17.918717 +-17.914914 +-17.911112 +-17.907310 +-17.903507 +-17.899705 +-17.895903 +-17.892100 +-17.888298 +-17.884495 +-17.880693 +-17.876891 +-17.873088 +-17.869286 +-17.865484 +-17.861681 +-17.857879 +-17.854076 +-17.850274 +-17.846472 +-17.842669 +-17.838867 +-17.835065 +-17.831262 +-17.827460 +-17.823657 +-17.819855 +-17.816053 +-17.812250 +-17.808448 +-17.804645 +-17.800843 +-17.797041 +-17.793238 +-17.789436 +-17.785634 +-17.781831 +-17.778029 +-17.774226 +-17.770424 +-17.766622 +-17.762819 +-17.759017 +-17.755215 +-17.751412 +-17.747610 +-17.743807 +-17.740005 +-17.736203 +-17.732400 +-17.728598 +-17.724795 +-17.720993 +-17.717191 +-17.713388 +-17.709586 +-17.705784 +-17.701981 +-17.698179 +-17.694376 +-17.690574 +-17.686772 +-17.682969 +-17.679167 +-17.675365 +-17.671562 +-17.667760 +-17.663957 +-17.660155 +-17.656353 +-17.652550 +-17.648748 +-17.644945 +-17.641143 +-17.637341 +-17.633538 +-17.629736 +-17.625934 +-17.622131 +-17.618329 +-17.614526 +-17.610724 +-17.606922 +-17.603119 +-17.599317 +-17.595515 +-17.591712 +-17.587910 +-17.584107 +-17.580305 +-17.576503 +-17.572700 +-17.568898 +-17.565096 +-17.561293 +-17.557491 +-17.553688 +-17.549886 +-17.546084 +-17.542281 +-17.538479 +-17.534676 +-17.530874 +-17.527072 +-17.523269 +-17.519467 +-17.515665 +-17.511862 +-17.508060 +-17.504257 +-17.500455 +-17.496653 +-17.492850 +-17.489048 +-17.485246 +-17.481443 +-17.477641 +-17.473838 +-17.470036 +-17.466234 +-17.462431 +-17.458629 +-17.454826 +-17.451024 +-17.447222 +-17.443419 +-17.439617 +-17.435815 +-17.432012 +-17.428210 +-17.424407 +-17.420605 +-17.416803 +-17.413000 +-17.409198 +-17.405396 +-17.401593 +-17.397791 +-17.393988 +-17.390186 +-17.386384 +-17.382581 +-17.378779 +-17.374976 +-17.371174 +-17.367372 +-17.363569 +-17.359767 +-17.355965 +-17.352162 +-17.348360 +-17.344557 +-17.340755 +-17.336953 +-17.333150 +-17.329348 +-17.325546 +-17.321743 +-17.317941 +-17.314138 +-17.310336 +-17.306534 +-17.302731 +-17.298929 +-17.295127 +-17.291324 +-17.287522 +-17.283719 +-17.279917 +-17.276115 +-17.272312 +-17.268510 +-17.264707 +-17.260905 +-17.257103 +-17.253300 +-17.249498 +-17.245696 +-17.241893 +-17.238091 +-17.234288 +-17.230486 +-17.226684 +-17.222881 +-17.219079 +-17.215277 +-17.211474 +-17.207672 +-17.203869 +-17.200067 +-17.196265 +-17.192462 +-17.188660 +-17.184857 +-17.181055 +-17.177253 +-17.173450 +-17.169648 +-17.165846 +-17.162043 +-17.158241 +-17.154438 +-17.150636 +-17.146834 +-17.143031 +-17.139229 +-17.135427 +-17.131624 +-17.127822 +-17.124019 +-17.120217 +-17.116415 +-17.112612 +-17.108810 +-17.105008 +-17.101205 +-17.097403 +-17.093600 +-17.089798 +-17.085996 +-17.082193 +-17.078391 +-17.074588 +-17.070786 +-17.066984 +-17.063181 +-17.059379 +-17.055577 +-17.051774 +-17.047972 +-17.044169 +-17.040367 +-17.036565 +-17.032762 +-17.028960 +-17.025158 +-17.021355 +-17.017553 +-17.013750 +-17.009948 +-17.006146 +-17.002343 +-16.998541 +-16.994738 +-16.990936 +-16.987134 +-16.983331 +-16.979529 +-16.975727 +-16.971924 +-16.968122 +-16.964319 +-16.960517 +-16.956715 +-16.952912 +-16.949110 +-16.945308 +-16.941505 +-16.937703 +-16.933900 +-16.930098 +-16.926296 +-16.922493 +-16.918691 +-16.914888 +-16.911086 +-16.907284 +-16.903481 +-16.899679 +-16.895877 +-16.892074 +-16.888272 +-16.884469 +-16.880667 +-16.876865 +-16.873062 +-16.869260 +-16.865458 +-16.861655 +-16.857853 +-16.854050 +-16.850248 +-16.846446 +-16.842643 +-16.838841 +-16.835039 +-16.831236 +-16.827434 +-16.823631 +-16.819829 +-16.816027 +-16.812224 +-16.808422 +-16.804619 +-16.800817 +-16.797015 +-16.793212 +-16.789410 +-16.785608 +-16.781805 +-16.778003 +-16.774200 +-16.770398 +-16.766596 +-16.762793 +-16.758991 +-16.755189 +-16.751386 +-16.747584 +-16.743781 +-16.739979 +-16.736177 +-16.732374 +-16.728572 +-16.724769 +-16.720967 +-16.717165 +-16.713362 +-16.709560 +-16.705758 +-16.701955 +-16.698153 +-16.694350 +-16.690548 +-16.686746 +-16.682943 +-16.679141 +-16.675339 +-16.671536 +-16.667734 +-16.663931 +-16.660129 +-16.656327 +-16.652524 +-16.648722 +-16.644919 +-16.641117 +-16.637315 +-16.633512 +-16.629710 +-16.625908 +-16.622105 +-16.618303 +-16.614500 +-16.610698 +-16.606896 +-16.603093 +-16.599291 +-16.595489 +-16.591686 +-16.587884 +-16.584081 +-16.580279 +-16.576477 +-16.572674 +-16.568872 +-16.565070 +-16.561267 +-16.557465 +-16.553662 +-16.549860 +-16.546058 +-16.542255 +-16.538453 +-16.534650 +-16.530848 +-16.527046 +-16.523243 +-16.519441 +-16.515639 +-16.511836 +-16.508034 +-16.504231 +-16.500429 +-16.496627 +-16.492824 +-16.489022 +-16.485220 +-16.481417 +-16.477615 +-16.473812 +-16.470010 +-16.466208 +-16.462405 +-16.458603 +-16.454800 +-16.450998 +-16.447196 +-16.443393 +-16.439591 +-16.435789 +-16.431986 +-16.428184 +-16.424381 +-16.420579 +-16.416777 +-16.412974 +-16.409172 +-16.405370 +-16.401567 +-16.397765 +-16.393962 +-16.390160 +-16.386358 +-16.382555 +-16.378753 +-16.374950 +-16.371148 +-16.367346 +-16.363543 +-16.359741 +-16.355939 +-16.352136 +-16.348334 +-16.344531 +-16.340729 +-16.336927 +-16.333124 +-16.329322 +-16.325520 +-16.321717 +-16.317915 +-16.314112 +-16.310310 +-16.306508 +-16.302705 +-16.298903 +-16.295101 +-16.291298 +-16.287496 +-16.283693 +-16.279891 +-16.276089 +-16.272286 +-16.268484 +-16.264681 +-16.260879 +-16.257077 +-16.253274 +-16.249472 +-16.245670 +-16.241867 +-16.238065 +-16.234262 +-16.230460 +-16.226658 +-16.222855 +-16.219053 +-16.215251 +-16.211448 +-16.207646 +-16.203843 +-16.200041 +-16.196239 +-16.192436 +-16.188634 +-16.184831 +-16.181029 +-16.177227 +-16.173424 +-16.169622 +-16.165820 +-16.162017 +-16.158215 +-16.154412 +-16.150610 +-16.146808 +-16.143005 +-16.139203 +-16.135401 +-16.131598 +-16.127796 +-16.123993 +-16.120191 +-16.116389 +-16.112586 +-16.108784 +-16.104981 +-16.101179 +-16.097377 +-16.093574 +-16.089772 +-16.085970 +-16.082167 +-16.078365 +-16.074562 +-16.070760 +-16.066958 +-16.063155 +-16.059353 +-16.055551 +-16.051748 +-16.047946 +-16.044143 +-16.040341 +-16.036539 +-16.032736 +-16.028934 +-16.025132 +-16.021329 +-16.017527 +-16.013724 +-16.009922 +-16.006120 +-16.002317 +-15.998515 +-15.994712 +-15.990910 +-15.987108 +-15.983305 +-15.979503 +-15.975701 +-15.971898 +-15.968096 +-15.964293 +-15.960491 +-15.956689 +-15.952886 +-15.949084 +-15.945282 +-15.941479 +-15.937677 +-15.933874 +-15.930072 +-15.926270 +-15.922467 +-15.918665 +-15.914862 +-15.911060 +-15.907258 +-15.903455 +-15.899653 +-15.895851 +-15.892048 +-15.888246 +-15.884443 +-15.880641 +-15.876839 +-15.873036 +-15.869234 +-15.865432 +-15.861629 +-15.857827 +-15.854024 +-15.850222 +-15.846420 +-15.842617 +-15.838815 +-15.835013 +-15.831210 +-15.827408 +-15.823605 +-15.819803 +-15.816001 +-15.812198 +-15.808396 +-15.804593 +-15.800791 +-15.796989 +-15.793186 +-15.789384 +-15.785582 +-15.781779 +-15.777977 +-15.774174 +-15.770372 +-15.766570 +-15.762767 +-15.758965 +-15.755163 +-15.751360 +-15.747558 +-15.743755 +-15.739953 +-15.736151 +-15.732348 +-15.728546 +-15.724743 +-15.720941 +-15.717139 +-15.713336 +-15.709534 +-15.705732 +-15.701929 +-15.698127 +-15.694324 +-15.690522 +-15.686720 +-15.682917 +-15.679115 +-15.675313 +-15.671510 +-15.667708 +-15.663905 +-15.660103 +-15.656301 +-15.652498 +-15.648696 +-15.644893 +-15.641091 +-15.637289 +-15.633486 +-15.629684 +-15.625882 +-15.622079 +-15.618277 +-15.614474 +-15.610672 +-15.606870 +-15.603067 +-15.599265 +-15.595463 +-15.591660 +-15.587858 +-15.584055 +-15.580253 +-15.576451 +-15.572648 +-15.568846 +-15.565044 +-15.561241 +-15.557439 +-15.553636 +-15.549834 +-15.546032 +-15.542229 +-15.538427 +-15.534624 +-15.530822 +-15.527020 +-15.523217 +-15.519415 +-15.515613 +-15.511810 +-15.508008 +-15.504205 +-15.500403 +-15.496601 +-15.492798 +-15.488996 +-15.485194 +-15.481391 +-15.477589 +-15.473786 +-15.469984 +-15.466182 +-15.462379 +-15.458577 +-15.454774 +-15.450972 +-15.447170 +-15.443367 +-15.439565 +-15.435763 +-15.431960 +-15.428158 +-15.424355 +-15.420553 +-15.416751 +-15.412948 +-15.409146 +-15.405344 +-15.401541 +-15.397739 +-15.393936 +-15.390134 +-15.386332 +-15.382529 +-15.378727 +-15.374924 +-15.371122 +-15.367320 +-15.363517 +-15.359715 +-15.355913 +-15.352110 +-15.348308 +-15.344505 +-15.340703 +-15.336901 +-15.333098 +-15.329296 +-15.325494 +-15.321691 +-15.317889 +-15.314086 +-15.310284 +-15.306482 +-15.302679 +-15.298877 +-15.295075 +-15.291272 +-15.287470 +-15.283667 +-15.279865 +-15.276063 +-15.272260 +-15.268458 +-15.264655 +-15.260853 +-15.257051 +-15.253248 +-15.249446 +-15.245644 +-15.241841 +-15.238039 +-15.234236 +-15.230434 +-15.226632 +-15.222829 +-15.219027 +-15.215225 +-15.211422 +-15.207620 +-15.203817 +-15.200015 +-15.196213 +-15.192410 +-15.188608 +-15.184805 +-15.181003 +-15.177201 +-15.173398 +-15.169596 +-15.165794 +-15.161991 +-15.158189 +-15.154386 +-15.150584 +-15.146782 +-15.142979 +-15.139177 +-15.135375 +-15.131572 +-15.127770 +-15.123967 +-15.120165 +-15.116363 +-15.112560 +-15.108758 +-15.104955 +-15.101153 +-15.097351 +-15.093548 +-15.089746 +-15.085944 +-15.082141 +-15.078339 +-15.074536 +-15.070734 +-15.066932 +-15.063129 +-15.059327 +-15.055525 +-15.051722 +-15.047920 +-15.044117 +-15.040315 +-15.036513 +-15.032710 +-15.028908 +-15.025106 +-15.021303 +-15.017501 +-15.013698 +-15.009896 +-15.006094 +-15.002291 +-14.998489 +-14.994686 +-14.990884 +-14.987082 +-14.983279 +-14.979477 +-14.975675 +-14.971872 +-14.968070 +-14.964267 +-14.960465 +-14.956663 +-14.952860 +-14.949058 +-14.945256 +-14.941453 +-14.937651 +-14.933848 +-14.930046 +-14.926244 +-14.922441 +-14.918639 +-14.914836 +-14.911034 +-14.907232 +-14.903429 +-14.899627 +-14.895825 +-14.892022 +-14.888220 +-14.884417 +-14.880615 +-14.876813 +-14.873010 +-14.869208 +-14.865406 +-14.861603 +-14.857801 +-14.853998 +-14.850196 +-14.846394 +-14.842591 +-14.838789 +-14.834986 +-14.831184 +-14.827382 +-14.823579 +-14.819777 +-14.815975 +-14.812172 +-14.808370 +-14.804567 +-14.800765 +-14.796963 +-14.793160 +-14.789358 +-14.785556 +-14.781753 +-14.777951 +-14.774148 +-14.770346 +-14.766544 +-14.762741 +-14.758939 +-14.755137 +-14.751334 +-14.747532 +-14.743729 +-14.739927 +-14.736125 +-14.732322 +-14.728520 +-14.724717 +-14.720915 +-14.717113 +-14.713310 +-14.709508 +-14.705706 +-14.701903 +-14.698101 +-14.694298 +-14.690496 +-14.686694 +-14.682891 +-14.679089 +-14.675287 +-14.671484 +-14.667682 +-14.663879 +-14.660077 +-14.656275 +-14.652472 +-14.648670 +-14.644867 +-14.641065 +-14.637263 +-14.633460 +-14.629658 +-14.625856 +-14.622053 +-14.618251 +-14.614448 +-14.610646 +-14.606844 +-14.603041 +-14.599239 +-14.595437 +-14.591634 +-14.587832 +-14.584029 +-14.580227 +-14.576425 +-14.572622 +-14.568820 +-14.565018 +-14.561215 +-14.557413 +-14.553610 +-14.549808 +-14.546006 +-14.542203 +-14.538401 +-14.534598 +-14.530796 +-14.526994 +-14.523191 +-14.519389 +-14.515587 +-14.511784 +-14.507982 +-14.504179 +-14.500377 +-14.496575 +-14.492772 +-14.488970 +-14.485168 +-14.481365 +-14.477563 +-14.473760 +-14.469958 +-14.466156 +-14.462353 +-14.458551 +-14.454748 +-14.450946 +-14.447144 +-14.443341 +-14.439539 +-14.435737 +-14.431934 +-14.428132 +-14.424329 +-14.420527 +-14.416725 +-14.412922 +-14.409120 +-14.405318 +-14.401515 +-14.397713 +-14.393910 +-14.390108 +-14.386306 +-14.382503 +-14.378701 +-14.374898 +-14.371096 +-14.367294 +-14.363491 +-14.359689 +-14.355887 +-14.352084 +-14.348282 +-14.344479 +-14.340677 +-14.336875 +-14.333072 +-14.329270 +-14.325468 +-14.321665 +-14.317863 +-14.314060 +-14.310258 +-14.306456 +-14.302653 +-14.298851 +-14.295049 +-14.291246 +-14.287444 +-14.283641 +-14.279839 +-14.276037 +-14.272234 +-14.268432 +-14.264629 +-14.260827 +-14.257025 +-14.253222 +-14.249420 +-14.245618 +-14.241815 +-14.238013 +-14.234210 +-14.230408 +-14.226606 +-14.222803 +-14.219001 +-14.215199 +-14.211396 +-14.207594 +-14.203791 +-14.199989 +-14.196187 +-14.192384 +-14.188582 +-14.184779 +-14.180977 +-14.177175 +-14.173372 +-14.169570 +-14.165768 +-14.161965 +-14.158163 +-14.154360 +-14.150558 +-14.146756 +-14.142953 +-14.139151 +-14.135349 +-14.131546 +-14.127744 +-14.123941 +-14.120139 +-14.116337 +-14.112534 +-14.108732 +-14.104929 +-14.101127 +-14.097325 +-14.093522 +-14.089720 +-14.085918 +-14.082115 +-14.078313 +-14.074510 +-14.070708 +-14.066906 +-14.063103 +-14.059301 +-14.055499 +-14.051696 +-14.047894 +-14.044091 +-14.040289 +-14.036487 +-14.032684 +-14.028882 +-14.025080 +-14.021277 +-14.017475 +-14.013672 +-14.009870 +-14.006068 +-14.002265 +-13.998463 +-13.994660 +-13.990858 +-13.987056 +-13.983253 +-13.979451 +-13.975649 +-13.971846 +-13.968044 +-13.964241 +-13.960439 +-13.956637 +-13.952834 +-13.949032 +-13.945230 +-13.941427 +-13.937625 +-13.933822 +-13.930020 +-13.926218 +-13.922415 +-13.918613 +-13.914810 +-13.911008 +-13.907206 +-13.903403 +-13.899601 +-13.895799 +-13.891996 +-13.888194 +-13.884391 +-13.880589 +-13.876787 +-13.872984 +-13.869182 +-13.865380 +-13.861577 +-13.857775 +-13.853972 +-13.850170 +-13.846368 +-13.842565 +-13.838763 +-13.834960 +-13.831158 +-13.827356 +-13.823553 +-13.819751 +-13.815949 +-13.812146 +-13.808344 +-13.804541 +-13.800739 +-13.796937 +-13.793134 +-13.789332 +-13.785530 +-13.781727 +-13.777925 +-13.774122 +-13.770320 +-13.766518 +-13.762715 +-13.758913 +-13.755111 +-13.751308 +-13.747506 +-13.743703 +-13.739901 +-13.736099 +-13.732296 +-13.728494 +-13.724691 +-13.720889 +-13.717087 +-13.713284 +-13.709482 +-13.705680 +-13.701877 +-13.698075 +-13.694272 +-13.690470 +-13.686668 +-13.682865 +-13.679063 +-13.675261 +-13.671458 +-13.667656 +-13.663853 +-13.660051 +-13.656249 +-13.652446 +-13.648644 +-13.644841 +-13.641039 +-13.637237 +-13.633434 +-13.629632 +-13.625830 +-13.622027 +-13.618225 +-13.614422 +-13.610620 +-13.606818 +-13.603015 +-13.599213 +-13.595411 +-13.591608 +-13.587806 +-13.584003 +-13.580201 +-13.576399 +-13.572596 +-13.568794 +-13.564991 +-13.561189 +-13.557387 +-13.553584 +-13.549782 +-13.545980 +-13.542177 +-13.538375 +-13.534572 +-13.530770 +-13.526968 +-13.523165 +-13.519363 +-13.515561 +-13.511758 +-13.507956 +-13.504153 +-13.500351 +-13.496549 +-13.492746 +-13.488944 +-13.485142 +-13.481339 +-13.477537 +-13.473734 +-13.469932 +-13.466130 +-13.462327 +-13.458525 +-13.454722 +-13.450920 +-13.447118 +-13.443315 +-13.439513 +-13.435711 +-13.431908 +-13.428106 +-13.424303 +-13.420501 +-13.416699 +-13.412896 +-13.409094 +-13.405292 +-13.401489 +-13.397687 +-13.393884 +-13.390082 +-13.386280 +-13.382477 +-13.378675 +-13.374872 +-13.371070 +-13.367268 +-13.363465 +-13.359663 +-13.355861 +-13.352058 +-13.348256 +-13.344453 +-13.340651 +-13.336849 +-13.333046 +-13.329244 +-13.325442 +-13.321639 +-13.317837 +-13.314034 +-13.310232 +-13.306430 +-13.302627 +-13.298825 +-13.295023 +-13.291220 +-13.287418 +-13.283615 +-13.279813 +-13.276011 +-13.272208 +-13.268406 +-13.264603 +-13.260801 +-13.256999 +-13.253196 +-13.249394 +-13.245592 +-13.241789 +-13.237987 +-13.234184 +-13.230382 +-13.226580 +-13.222777 +-13.218975 +-13.215173 +-13.211370 +-13.207568 +-13.203765 +-13.199963 +-13.196161 +-13.192358 +-13.188556 +-13.184753 +-13.180951 +-13.177149 +-13.173346 +-13.169544 +-13.165742 +-13.161939 +-13.158137 +-13.154334 +-13.150532 +-13.146730 +-13.142927 +-13.139125 +-13.135323 +-13.131520 +-13.127718 +-13.123915 +-13.120113 +-13.116311 +-13.112508 +-13.108706 +-13.104903 +-13.101101 +-13.097299 +-13.093496 +-13.089694 +-13.085892 +-13.082089 +-13.078287 +-13.074484 +-13.070682 +-13.066880 +-13.063077 +-13.059275 +-13.055473 +-13.051670 +-13.047868 +-13.044065 +-13.040263 +-13.036461 +-13.032658 +-13.028856 +-13.025054 +-13.021251 +-13.017449 +-13.013646 +-13.009844 +-13.006042 +-13.002239 +-12.998437 +-12.994634 +-12.990832 +-12.987030 +-12.983227 +-12.979425 +-12.975623 +-12.971820 +-12.968018 +-12.964215 +-12.960413 +-12.956611 +-12.952808 +-12.949006 +-12.945204 +-12.941401 +-12.937599 +-12.933796 +-12.929994 +-12.926192 +-12.922389 +-12.918587 +-12.914784 +-12.910982 +-12.907180 +-12.903377 +-12.899575 +-12.895773 +-12.891970 +-12.888168 +-12.884365 +-12.880563 +-12.876761 +-12.872958 +-12.869156 +-12.865354 +-12.861551 +-12.857749 +-12.853946 +-12.850144 +-12.846342 +-12.842539 +-12.838737 +-12.834934 +-12.831132 +-12.827330 +-12.823527 +-12.819725 +-12.815923 +-12.812120 +-12.808318 +-12.804515 +-12.800713 +-12.796911 +-12.793108 +-12.789306 +-12.785504 +-12.781701 +-12.777899 +-12.774096 +-12.770294 +-12.766492 +-12.762689 +-12.758887 +-12.755085 +-12.751282 +-12.747480 +-12.743677 +-12.739875 +-12.736073 +-12.732270 +-12.728468 +-12.724665 +-12.720863 +-12.717061 +-12.713258 +-12.709456 +-12.705654 +-12.701851 +-12.698049 +-12.694246 +-12.690444 +-12.686642 +-12.682839 +-12.679037 +-12.675235 +-12.671432 +-12.667630 +-12.663827 +-12.660025 +-12.656223 +-12.652420 +-12.648618 +-12.644815 +-12.641013 +-12.637211 +-12.633408 +-12.629606 +-12.625804 +-12.622001 +-12.618199 +-12.614396 +-12.610594 +-12.606792 +-12.602989 +-12.599187 +-12.595385 +-12.591582 +-12.587780 +-12.583977 +-12.580175 +-12.576373 +-12.572570 +-12.568768 +-12.564965 +-12.561163 +-12.557361 +-12.553558 +-12.549756 +-12.545954 +-12.542151 +-12.538349 +-12.534546 +-12.530744 +-12.526942 +-12.523139 +-12.519337 +-12.515535 +-12.511732 +-12.507930 +-12.504127 +-12.500325 +-12.496523 +-12.492720 +-12.488918 +-12.485116 +-12.481313 +-12.477511 +-12.473708 +-12.469906 +-12.466104 +-12.462301 +-12.458499 +-12.454696 +-12.450894 +-12.447092 +-12.443289 +-12.439487 +-12.435685 +-12.431882 +-12.428080 +-12.424277 +-12.420475 +-12.416673 +-12.412870 +-12.409068 +-12.405266 +-12.401463 +-12.397661 +-12.393858 +-12.390056 +-12.386254 +-12.382451 +-12.378649 +-12.374846 +-12.371044 +-12.367242 +-12.363439 +-12.359637 +-12.355835 +-12.352032 +-12.348230 +-12.344427 +-12.340625 +-12.336823 +-12.333020 +-12.329218 +-12.325416 +-12.321613 +-12.317811 +-12.314008 +-12.310206 +-12.306404 +-12.302601 +-12.298799 +-12.294996 +-12.291194 +-12.287392 +-12.283589 +-12.279787 +-12.275985 +-12.272182 +-12.268380 +-12.264577 +-12.260775 +-12.256973 +-12.253170 +-12.249368 +-12.245566 +-12.241763 +-12.237961 +-12.234158 +-12.230356 +-12.226554 +-12.222751 +-12.218949 +-12.215147 +-12.211344 +-12.207542 +-12.203739 +-12.199937 +-12.196135 +-12.192332 +-12.188530 +-12.184727 +-12.180925 +-12.177123 +-12.173320 +-12.169518 +-12.165716 +-12.161913 +-12.158111 +-12.154308 +-12.150506 +-12.146704 +-12.142901 +-12.139099 +-12.135297 +-12.131494 +-12.127692 +-12.123889 +-12.120087 +-12.116285 +-12.112482 +-12.108680 +-12.104877 +-12.101075 +-12.097273 +-12.093470 +-12.089668 +-12.085866 +-12.082063 +-12.078261 +-12.074458 +-12.070656 +-12.066854 +-12.063051 +-12.059249 +-12.055447 +-12.051644 +-12.047842 +-12.044039 +-12.040237 +-12.036435 +-12.032632 +-12.028830 +-12.025028 +-12.021225 +-12.017423 +-12.013620 +-12.009818 +-12.006016 +-12.002213 +-11.998411 +-11.994608 +-11.990806 +-11.987004 +-11.983201 +-11.979399 +-11.975597 +-11.971794 +-11.967992 +-11.964189 +-11.960387 +-11.956585 +-11.952782 +-11.948980 +-11.945178 +-11.941375 +-11.937573 +-11.933770 +-11.929968 +-11.926166 +-11.922363 +-11.918561 +-11.914758 +-11.910956 +-11.907154 +-11.903351 +-11.899549 +-11.895747 +-11.891944 +-11.888142 +-11.884339 +-11.880537 +-11.876735 +-11.872932 +-11.869130 +-11.865328 +-11.861525 +-11.857723 +-11.853920 +-11.850118 +-11.846316 +-11.842513 +-11.838711 +-11.834908 +-11.831106 +-11.827304 +-11.823501 +-11.819699 +-11.815897 +-11.812094 +-11.808292 +-11.804489 +-11.800687 +-11.796885 +-11.793082 +-11.789280 +-11.785478 +-11.781675 +-11.777873 +-11.774070 +-11.770268 +-11.766466 +-11.762663 +-11.758861 +-11.755059 +-11.751256 +-11.747454 +-11.743651 +-11.739849 +-11.736047 +-11.732244 +-11.728442 +-11.724639 +-11.720837 +-11.717035 +-11.713232 +-11.709430 +-11.705628 +-11.701825 +-11.698023 +-11.694220 +-11.690418 +-11.686616 +-11.682813 +-11.679011 +-11.675209 +-11.671406 +-11.667604 +-11.663801 +-11.659999 +-11.656197 +-11.652394 +-11.648592 +-11.644789 +-11.640987 +-11.637185 +-11.633382 +-11.629580 +-11.625778 +-11.621975 +-11.618173 +-11.614370 +-11.610568 +-11.606766 +-11.602963 +-11.599161 +-11.595359 +-11.591556 +-11.587754 +-11.583951 +-11.580149 +-11.576347 +-11.572544 +-11.568742 +-11.564939 +-11.561137 +-11.557335 +-11.553532 +-11.549730 +-11.545928 +-11.542125 +-11.538323 +-11.534520 +-11.530718 +-11.526916 +-11.523113 +-11.519311 +-11.515509 +-11.511706 +-11.507904 +-11.504101 +-11.500299 +-11.496497 +-11.492694 +-11.488892 +-11.485090 +-11.481287 +-11.477485 +-11.473682 +-11.469880 +-11.466078 +-11.462275 +-11.458473 +-11.454670 +-11.450868 +-11.447066 +-11.443263 +-11.439461 +-11.435659 +-11.431856 +-11.428054 +-11.424251 +-11.420449 +-11.416647 +-11.412844 +-11.409042 +-11.405240 +-11.401437 +-11.397635 +-11.393832 +-11.390030 +-11.386228 +-11.382425 +-11.378623 +-11.374820 +-11.371018 +-11.367216 +-11.363413 +-11.359611 +-11.355809 +-11.352006 +-11.348204 +-11.344401 +-11.340599 +-11.336797 +-11.332994 +-11.329192 +-11.325390 +-11.321587 +-11.317785 +-11.313982 +-11.310180 +-11.306378 +-11.302575 +-11.298773 +-11.294970 +-11.291168 +-11.287366 +-11.283563 +-11.279761 +-11.275959 +-11.272156 +-11.268354 +-11.264551 +-11.260749 +-11.256947 +-11.253144 +-11.249342 +-11.245540 +-11.241737 +-11.237935 +-11.234132 +-11.230330 +-11.226528 +-11.222725 +-11.218923 +-11.215121 +-11.211318 +-11.207516 +-11.203713 +-11.199911 +-11.196109 +-11.192306 +-11.188504 +-11.184701 +-11.180899 +-11.177097 +-11.173294 +-11.169492 +-11.165690 +-11.161887 +-11.158085 +-11.154282 +-11.150480 +-11.146678 +-11.142875 +-11.139073 +-11.135271 +-11.131468 +-11.127666 +-11.123863 +-11.120061 +-11.116259 +-11.112456 +-11.108654 +-11.104851 +-11.101049 +-11.097247 +-11.093444 +-11.089642 +-11.085840 +-11.082037 +-11.078235 +-11.074432 +-11.070630 +-11.066828 +-11.063025 +-11.059223 +-11.055421 +-11.051618 +-11.047816 +-11.044013 +-11.040211 +-11.036409 +-11.032606 +-11.028804 +-11.025002 +-11.021199 +-11.017397 +-11.013594 +-11.009792 +-11.005990 +-11.002187 +-10.998385 +-10.994582 +-10.990780 +-10.986978 +-10.983175 +-10.979373 +-10.975571 +-10.971768 +-10.967966 +-10.964163 +-10.960361 +-10.956559 +-10.952756 +-10.948954 +-10.945152 +-10.941349 +-10.937547 +-10.933744 +-10.929942 +-10.926140 +-10.922337 +-10.918535 +-10.914732 +-10.910930 +-10.907128 +-10.903325 +-10.899523 +-10.895721 +-10.891918 +-10.888116 +-10.884313 +-10.880511 +-10.876709 +-10.872906 +-10.869104 +-10.865302 +-10.861499 +-10.857697 +-10.853894 +-10.850092 +-10.846290 +-10.842487 +-10.838685 +-10.834882 +-10.831080 +-10.827278 +-10.823475 +-10.819673 +-10.815871 +-10.812068 +-10.808266 +-10.804463 +-10.800661 +-10.796859 +-10.793056 +-10.789254 +-10.785452 +-10.781649 +-10.777847 +-10.774044 +-10.770242 +-10.766440 +-10.762637 +-10.758835 +-10.755033 +-10.751230 +-10.747428 +-10.743625 +-10.739823 +-10.736021 +-10.732218 +-10.728416 +-10.724613 +-10.720811 +-10.717009 +-10.713206 +-10.709404 +-10.705602 +-10.701799 +-10.697997 +-10.694194 +-10.690392 +-10.686590 +-10.682787 +-10.678985 +-10.675183 +-10.671380 +-10.667578 +-10.663775 +-10.659973 +-10.656171 +-10.652368 +-10.648566 +-10.644763 +-10.640961 +-10.637159 +-10.633356 +-10.629554 +-10.625752 +-10.621949 +-10.618147 +-10.614344 +-10.610542 +-10.606740 +-10.602937 +-10.599135 +-10.595333 +-10.591530 +-10.587728 +-10.583925 +-10.580123 +-10.576321 +-10.572518 +-10.568716 +-10.564913 +-10.561111 +-10.557309 +-10.553506 +-10.549704 +-10.545902 +-10.542099 +-10.538297 +-10.534494 +-10.530692 +-10.526890 +-10.523087 +-10.519285 +-10.515483 +-10.511680 +-10.507878 +-10.504075 +-10.500273 +-10.496471 +-10.492668 +-10.488866 +-10.485064 +-10.481261 +-10.477459 +-10.473656 +-10.469854 +-10.466052 +-10.462249 +-10.458447 +-10.454644 +-10.450842 +-10.447040 +-10.443237 +-10.439435 +-10.435633 +-10.431830 +-10.428028 +-10.424225 +-10.420423 +-10.416621 +-10.412818 +-10.409016 +-10.405214 +-10.401411 +-10.397609 +-10.393806 +-10.390004 +-10.386202 +-10.382399 +-10.378597 +-10.374794 +-10.370992 +-10.367190 +-10.363387 +-10.359585 +-10.355783 +-10.351980 +-10.348178 +-10.344375 +-10.340573 +-10.336771 +-10.332968 +-10.329166 +-10.325364 +-10.321561 +-10.317759 +-10.313956 +-10.310154 +-10.306352 +-10.302549 +-10.298747 +-10.294944 +-10.291142 +-10.287340 +-10.283537 +-10.279735 +-10.275933 +-10.272130 +-10.268328 +-10.264525 +-10.260723 +-10.256921 +-10.253118 +-10.249316 +-10.245514 +-10.241711 +-10.237909 +-10.234106 +-10.230304 +-10.226502 +-10.222699 +-10.218897 +-10.215095 +-10.211292 +-10.207490 +-10.203687 +-10.199885 +-10.196083 +-10.192280 +-10.188478 +-10.184675 +-10.180873 +-10.177071 +-10.173268 +-10.169466 +-10.165664 +-10.161861 +-10.158059 +-10.154256 +-10.150454 +-10.146652 +-10.142849 +-10.139047 +-10.135245 +-10.131442 +-10.127640 +-10.123837 +-10.120035 +-10.116233 +-10.112430 +-10.108628 +-10.104825 +-10.101023 +-10.097221 +-10.093418 +-10.089616 +-10.085814 +-10.082011 +-10.078209 +-10.074406 +-10.070604 +-10.066802 +-10.062999 +-10.059197 +-10.055395 +-10.051592 +-10.047790 +-10.043987 +-10.040185 +-10.036383 +-10.032580 +-10.028778 +-10.024975 +-10.021173 +-10.017371 +-10.013568 +-10.009766 +-10.005964 +-10.002161 +-9.998359 +-9.994556 +-9.990754 +-9.986952 +-9.983149 +-9.979347 +-9.975545 +-9.971742 +-9.967940 +-9.964137 +-9.960335 +-9.956533 +-9.952730 +-9.948928 +-9.945126 +-9.941323 +-9.937521 +-9.933718 +-9.929916 +-9.926114 +-9.922311 +-9.918509 +-9.914706 +-9.910904 +-9.907102 +-9.903299 +-9.899497 +-9.895695 +-9.891892 +-9.888090 +-9.884287 +-9.880485 +-9.876683 +-9.872880 +-9.869078 +-9.865276 +-9.861473 +-9.857671 +-9.853868 +-9.850066 +-9.846264 +-9.842461 +-9.838659 +-9.834856 +-9.831054 +-9.827252 +-9.823449 +-9.819647 +-9.815845 +-9.812042 +-9.808240 +-9.804437 +-9.800635 +-9.796833 +-9.793030 +-9.789228 +-9.785426 +-9.781623 +-9.777821 +-9.774018 +-9.770216 +-9.766414 +-9.762611 +-9.758809 +-9.755007 +-9.751204 +-9.747402 +-9.743599 +-9.739797 +-9.735995 +-9.732192 +-9.728390 +-9.724587 +-9.720785 +-9.716983 +-9.713180 +-9.709378 +-9.705576 +-9.701773 +-9.697971 +-9.694168 +-9.690366 +-9.686564 +-9.682761 +-9.678959 +-9.675157 +-9.671354 +-9.667552 +-9.663749 +-9.659947 +-9.656145 +-9.652342 +-9.648540 +-9.644737 +-9.640935 +-9.637133 +-9.633330 +-9.629528 +-9.625726 +-9.621923 +-9.618121 +-9.614318 +-9.610516 +-9.606714 +-9.602911 +-9.599109 +-9.595307 +-9.591504 +-9.587702 +-9.583899 +-9.580097 +-9.576295 +-9.572492 +-9.568690 +-9.564887 +-9.561085 +-9.557283 +-9.553480 +-9.549678 +-9.545876 +-9.542073 +-9.538271 +-9.534468 +-9.530666 +-9.526864 +-9.523061 +-9.519259 +-9.515457 +-9.511654 +-9.507852 +-9.504049 +-9.500247 +-9.496445 +-9.492642 +-9.488840 +-9.485038 +-9.481235 +-9.477433 +-9.473630 +-9.469828 +-9.466026 +-9.462223 +-9.458421 +-9.454618 +-9.450816 +-9.447014 +-9.443211 +-9.439409 +-9.435607 +-9.431804 +-9.428002 +-9.424199 +-9.420397 +-9.416595 +-9.412792 +-9.408990 +-9.405188 +-9.401385 +-9.397583 +-9.393780 +-9.389978 +-9.386176 +-9.382373 +-9.378571 +-9.374768 +-9.370966 +-9.367164 +-9.363361 +-9.359559 +-9.355757 +-9.351954 +-9.348152 +-9.344349 +-9.340547 +-9.336745 +-9.332942 +-9.329140 +-9.325338 +-9.321535 +-9.317733 +-9.313930 +-9.310128 +-9.306326 +-9.302523 +-9.298721 +-9.294918 +-9.291116 +-9.287314 +-9.283511 +-9.279709 +-9.275907 +-9.272104 +-9.268302 +-9.264499 +-9.260697 +-9.256895 +-9.253092 +-9.249290 +-9.245488 +-9.241685 +-9.237883 +-9.234080 +-9.230278 +-9.226476 +-9.222673 +-9.218871 +-9.215069 +-9.211266 +-9.207464 +-9.203661 +-9.199859 +-9.196057 +-9.192254 +-9.188452 +-9.184649 +-9.180847 +-9.177045 +-9.173242 +-9.169440 +-9.165638 +-9.161835 +-9.158033 +-9.154230 +-9.150428 +-9.146626 +-9.142823 +-9.139021 +-9.135219 +-9.131416 +-9.127614 +-9.123811 +-9.120009 +-9.116207 +-9.112404 +-9.108602 +-9.104799 +-9.100997 +-9.097195 +-9.093392 +-9.089590 +-9.085788 +-9.081985 +-9.078183 +-9.074380 +-9.070578 +-9.066776 +-9.062973 +-9.059171 +-9.055369 +-9.051566 +-9.047764 +-9.043961 +-9.040159 +-9.036357 +-9.032554 +-9.028752 +-9.024949 +-9.021147 +-9.017345 +-9.013542 +-9.009740 +-9.005938 +-9.002135 +-8.998333 +-8.994530 +-8.990728 +-8.986926 +-8.983123 +-8.979321 +-8.975519 +-8.971716 +-8.967914 +-8.964111 +-8.960309 +-8.956507 +-8.952704 +-8.948902 +-8.945100 +-8.941297 +-8.937495 +-8.933692 +-8.929890 +-8.926088 +-8.922285 +-8.918483 +-8.914680 +-8.910878 +-8.907076 +-8.903273 +-8.899471 +-8.895669 +-8.891866 +-8.888064 +-8.884261 +-8.880459 +-8.876657 +-8.872854 +-8.869052 +-8.865250 +-8.861447 +-8.857645 +-8.853842 +-8.850040 +-8.846238 +-8.842435 +-8.838633 +-8.834830 +-8.831028 +-8.827226 +-8.823423 +-8.819621 +-8.815819 +-8.812016 +-8.808214 +-8.804411 +-8.800609 +-8.796807 +-8.793004 +-8.789202 +-8.785400 +-8.781597 +-8.777795 +-8.773992 +-8.770190 +-8.766388 +-8.762585 +-8.758783 +-8.754980 +-8.751178 +-8.747376 +-8.743573 +-8.739771 +-8.735969 +-8.732166 +-8.728364 +-8.724561 +-8.720759 +-8.716957 +-8.713154 +-8.709352 +-8.705550 +-8.701747 +-8.697945 +-8.694142 +-8.690340 +-8.686538 +-8.682735 +-8.678933 +-8.675131 +-8.671328 +-8.667526 +-8.663723 +-8.659921 +-8.656119 +-8.652316 +-8.648514 +-8.644711 +-8.640909 +-8.637107 +-8.633304 +-8.629502 +-8.625700 +-8.621897 +-8.618095 +-8.614292 +-8.610490 +-8.606688 +-8.602885 +-8.599083 +-8.595281 +-8.591478 +-8.587676 +-8.583873 +-8.580071 +-8.576269 +-8.572466 +-8.568664 +-8.564861 +-8.561059 +-8.557257 +-8.553454 +-8.549652 +-8.545850 +-8.542047 +-8.538245 +-8.534442 +-8.530640 +-8.526838 +-8.523035 +-8.519233 +-8.515431 +-8.511628 +-8.507826 +-8.504023 +-8.500221 +-8.496419 +-8.492616 +-8.488814 +-8.485012 +-8.481209 +-8.477407 +-8.473604 +-8.469802 +-8.466000 +-8.462197 +-8.458395 +-8.454592 +-8.450790 +-8.446988 +-8.443185 +-8.439383 +-8.435581 +-8.431778 +-8.427976 +-8.424173 +-8.420371 +-8.416569 +-8.412766 +-8.408964 +-8.405162 +-8.401359 +-8.397557 +-8.393754 +-8.389952 +-8.386150 +-8.382347 +-8.378545 +-8.374742 +-8.370940 +-8.367138 +-8.363335 +-8.359533 +-8.355731 +-8.351928 +-8.348126 +-8.344323 +-8.340521 +-8.336719 +-8.332916 +-8.329114 +-8.325312 +-8.321509 +-8.317707 +-8.313904 +-8.310102 +-8.306300 +-8.302497 +-8.298695 +-8.294892 +-8.291090 +-8.287288 +-8.283485 +-8.279683 +-8.275881 +-8.272078 +-8.268276 +-8.264473 +-8.260671 +-8.256869 +-8.253066 +-8.249264 +-8.245462 +-8.241659 +-8.237857 +-8.234054 +-8.230252 +-8.226450 +-8.222647 +-8.218845 +-8.215043 +-8.211240 +-8.207438 +-8.203635 +-8.199833 +-8.196031 +-8.192228 +-8.188426 +-8.184623 +-8.180821 +-8.177019 +-8.173216 +-8.169414 +-8.165612 +-8.161809 +-8.158007 +-8.154204 +-8.150402 +-8.146600 +-8.142797 +-8.138995 +-8.135193 +-8.131390 +-8.127588 +-8.123785 +-8.119983 +-8.116181 +-8.112378 +-8.108576 +-8.104773 +-8.100971 +-8.097169 +-8.093366 +-8.089564 +-8.085762 +-8.081959 +-8.078157 +-8.074354 +-8.070552 +-8.066750 +-8.062947 +-8.059145 +-8.055343 +-8.051540 +-8.047738 +-8.043935 +-8.040133 +-8.036331 +-8.032528 +-8.028726 +-8.024923 +-8.021121 +-8.017319 +-8.013516 +-8.009714 +-8.005912 +-8.002109 +-7.998307 +-7.994504 +-7.990702 +-7.986900 +-7.983097 +-7.979295 +-7.975493 +-7.971690 +-7.967888 +-7.964085 +-7.960283 +-7.956481 +-7.952678 +-7.948876 +-7.945074 +-7.941271 +-7.937469 +-7.933666 +-7.929864 +-7.926062 +-7.922259 +-7.918457 +-7.914654 +-7.910852 +-7.907050 +-7.903247 +-7.899445 +-7.895643 +-7.891840 +-7.888038 +-7.884235 +-7.880433 +-7.876631 +-7.872828 +-7.869026 +-7.865224 +-7.861421 +-7.857619 +-7.853816 +-7.850014 +-7.846212 +-7.842409 +-7.838607 +-7.834804 +-7.831002 +-7.827200 +-7.823397 +-7.819595 +-7.815793 +-7.811990 +-7.808188 +-7.804385 +-7.800583 +-7.796781 +-7.792978 +-7.789176 +-7.785374 +-7.781571 +-7.777769 +-7.773966 +-7.770164 +-7.766362 +-7.762559 +-7.758757 +-7.754954 +-7.751152 +-7.747350 +-7.743547 +-7.739745 +-7.735943 +-7.732140 +-7.728338 +-7.724535 +-7.720733 +-7.716931 +-7.713128 +-7.709326 +-7.705524 +-7.701721 +-7.697919 +-7.694116 +-7.690314 +-7.686512 +-7.682709 +-7.678907 +-7.675105 +-7.671302 +-7.667500 +-7.663697 +-7.659895 +-7.656093 +-7.652290 +-7.648488 +-7.644685 +-7.640883 +-7.637081 +-7.633278 +-7.629476 +-7.625674 +-7.621871 +-7.618069 +-7.614266 +-7.610464 +-7.606662 +-7.602859 +-7.599057 +-7.595255 +-7.591452 +-7.587650 +-7.583847 +-7.580045 +-7.576243 +-7.572440 +-7.568638 +-7.564835 +-7.561033 +-7.557231 +-7.553428 +-7.549626 +-7.545824 +-7.542021 +-7.538219 +-7.534416 +-7.530614 +-7.526812 +-7.523009 +-7.519207 +-7.515405 +-7.511602 +-7.507800 +-7.503997 +-7.500195 +-7.496393 +-7.492590 +-7.488788 +-7.484985 +-7.481183 +-7.477381 +-7.473578 +-7.469776 +-7.465974 +-7.462171 +-7.458369 +-7.454566 +-7.450764 +-7.446962 +-7.443159 +-7.439357 +-7.435555 +-7.431752 +-7.427950 +-7.424147 +-7.420345 +-7.416543 +-7.412740 +-7.408938 +-7.405136 +-7.401333 +-7.397531 +-7.393728 +-7.389926 +-7.386124 +-7.382321 +-7.378519 +-7.374716 +-7.370914 +-7.367112 +-7.363309 +-7.359507 +-7.355705 +-7.351902 +-7.348100 +-7.344297 +-7.340495 +-7.336693 +-7.332890 +-7.329088 +-7.325286 +-7.321483 +-7.317681 +-7.313878 +-7.310076 +-7.306274 +-7.302471 +-7.298669 +-7.294866 +-7.291064 +-7.287262 +-7.283459 +-7.279657 +-7.275855 +-7.272052 +-7.268250 +-7.264447 +-7.260645 +-7.256843 +-7.253040 +-7.249238 +-7.245436 +-7.241633 +-7.237831 +-7.234028 +-7.230226 +-7.226424 +-7.222621 +-7.218819 +-7.215017 +-7.211214 +-7.207412 +-7.203609 +-7.199807 +-7.196005 +-7.192202 +-7.188400 +-7.184597 +-7.180795 +-7.176993 +-7.173190 +-7.169388 +-7.165586 +-7.161783 +-7.157981 +-7.154178 +-7.150376 +-7.146574 +-7.142771 +-7.138969 +-7.135167 +-7.131364 +-7.127562 +-7.123759 +-7.119957 +-7.116155 +-7.112352 +-7.108550 +-7.104747 +-7.100945 +-7.097143 +-7.093340 +-7.089538 +-7.085736 +-7.081933 +-7.078131 +-7.074328 +-7.070526 +-7.066724 +-7.062921 +-7.059119 +-7.055317 +-7.051514 +-7.047712 +-7.043909 +-7.040107 +-7.036305 +-7.032502 +-7.028700 +-7.024897 +-7.021095 +-7.017293 +-7.013490 +-7.009688 +-7.005886 +-7.002083 +-6.998281 +-6.994478 +-6.990676 +-6.986874 +-6.983071 +-6.979269 +-6.975467 +-6.971664 +-6.967862 +-6.964059 +-6.960257 +-6.956455 +-6.952652 +-6.948850 +-6.945048 +-6.941245 +-6.937443 +-6.933640 +-6.929838 +-6.926036 +-6.922233 +-6.918431 +-6.914628 +-6.910826 +-6.907024 +-6.903221 +-6.899419 +-6.895617 +-6.891814 +-6.888012 +-6.884209 +-6.880407 +-6.876605 +-6.872802 +-6.869000 +-6.865198 +-6.861395 +-6.857593 +-6.853790 +-6.849988 +-6.846186 +-6.842383 +-6.838581 +-6.834778 +-6.830976 +-6.827174 +-6.823371 +-6.819569 +-6.815767 +-6.811964 +-6.808162 +-6.804359 +-6.800557 +-6.796755 +-6.792952 +-6.789150 +-6.785348 +-6.781545 +-6.777743 +-6.773940 +-6.770138 +-6.766336 +-6.762533 +-6.758731 +-6.754928 +-6.751126 +-6.747324 +-6.743521 +-6.739719 +-6.735917 +-6.732114 +-6.728312 +-6.724509 +-6.720707 +-6.716905 +-6.713102 +-6.709300 +-6.705498 +-6.701695 +-6.697893 +-6.694090 +-6.690288 +-6.686486 +-6.682683 +-6.678881 +-6.675079 +-6.671276 +-6.667474 +-6.663671 +-6.659869 +-6.656067 +-6.652264 +-6.648462 +-6.644659 +-6.640857 +-6.637055 +-6.633252 +-6.629450 +-6.625648 +-6.621845 +-6.618043 +-6.614240 +-6.610438 +-6.606636 +-6.602833 +-6.599031 +-6.595229 +-6.591426 +-6.587624 +-6.583821 +-6.580019 +-6.576217 +-6.572414 +-6.568612 +-6.564809 +-6.561007 +-6.557205 +-6.553402 +-6.549600 +-6.545798 +-6.541995 +-6.538193 +-6.534390 +-6.530588 +-6.526786 +-6.522983 +-6.519181 +-6.515379 +-6.511576 +-6.507774 +-6.503971 +-6.500169 +-6.496367 +-6.492564 +-6.488762 +-6.484959 +-6.481157 +-6.477355 +-6.473552 +-6.469750 +-6.465948 +-6.462145 +-6.458343 +-6.454540 +-6.450738 +-6.446936 +-6.443133 +-6.439331 +-6.435529 +-6.431726 +-6.427924 +-6.424121 +-6.420319 +-6.416517 +-6.412714 +-6.408912 +-6.405110 +-6.401307 +-6.397505 +-6.393702 +-6.389900 +-6.386098 +-6.382295 +-6.378493 +-6.374690 +-6.370888 +-6.367086 +-6.363283 +-6.359481 +-6.355679 +-6.351876 +-6.348074 +-6.344271 +-6.340469 +-6.336667 +-6.332864 +-6.329062 +-6.325260 +-6.321457 +-6.317655 +-6.313852 +-6.310050 +-6.306248 +-6.302445 +-6.298643 +-6.294840 +-6.291038 +-6.287236 +-6.283433 +-6.279631 +-6.275829 +-6.272026 +-6.268224 +-6.264421 +-6.260619 +-6.256817 +-6.253014 +-6.249212 +-6.245410 +-6.241607 +-6.237805 +-6.234002 +-6.230200 +-6.226398 +-6.222595 +-6.218793 +-6.214990 +-6.211188 +-6.207386 +-6.203583 +-6.199781 +-6.195979 +-6.192176 +-6.188374 +-6.184571 +-6.180769 +-6.176967 +-6.173164 +-6.169362 +-6.165560 +-6.161757 +-6.157955 +-6.154152 +-6.150350 +-6.146548 +-6.142745 +-6.138943 +-6.135141 +-6.131338 +-6.127536 +-6.123733 +-6.119931 +-6.116129 +-6.112326 +-6.108524 +-6.104721 +-6.100919 +-6.097117 +-6.093314 +-6.089512 +-6.085710 +-6.081907 +-6.078105 +-6.074302 +-6.070500 +-6.066698 +-6.062895 +-6.059093 +-6.055291 +-6.051488 +-6.047686 +-6.043883 +-6.040081 +-6.036279 +-6.032476 +-6.028674 +-6.024871 +-6.021069 +-6.017267 +-6.013464 +-6.009662 +-6.005860 +-6.002057 +-5.998255 +-5.994452 +-5.990650 +-5.986848 +-5.983045 +-5.979243 +-5.975441 +-5.971638 +-5.967836 +-5.964033 +-5.960231 +-5.956429 +-5.952626 +-5.948824 +-5.945022 +-5.941219 +-5.937417 +-5.933614 +-5.929812 +-5.926010 +-5.922207 +-5.918405 +-5.914602 +-5.910800 +-5.906998 +-5.903195 +-5.899393 +-5.895591 +-5.891788 +-5.887986 +-5.884183 +-5.880381 +-5.876579 +-5.872776 +-5.868974 +-5.865172 +-5.861369 +-5.857567 +-5.853764 +-5.849962 +-5.846160 +-5.842357 +-5.838555 +-5.834752 +-5.830950 +-5.827148 +-5.823345 +-5.819543 +-5.815741 +-5.811938 +-5.808136 +-5.804333 +-5.800531 +-5.796729 +-5.792926 +-5.789124 +-5.785322 +-5.781519 +-5.777717 +-5.773914 +-5.770112 +-5.766310 +-5.762507 +-5.758705 +-5.754902 +-5.751100 +-5.747298 +-5.743495 +-5.739693 +-5.735891 +-5.732088 +-5.728286 +-5.724483 +-5.720681 +-5.716879 +-5.713076 +-5.709274 +-5.705472 +-5.701669 +-5.697867 +-5.694064 +-5.690262 +-5.686460 +-5.682657 +-5.678855 +-5.675053 +-5.671250 +-5.667448 +-5.663645 +-5.659843 +-5.656041 +-5.652238 +-5.648436 +-5.644633 +-5.640831 +-5.637029 +-5.633226 +-5.629424 +-5.625622 +-5.621819 +-5.618017 +-5.614214 +-5.610412 +-5.606610 +-5.602807 +-5.599005 +-5.595203 +-5.591400 +-5.587598 +-5.583795 +-5.579993 +-5.576191 +-5.572388 +-5.568586 +-5.564783 +-5.560981 +-5.557179 +-5.553376 +-5.549574 +-5.545772 +-5.541969 +-5.538167 +-5.534364 +-5.530562 +-5.526760 +-5.522957 +-5.519155 +-5.515353 +-5.511550 +-5.507748 +-5.503945 +-5.500143 +-5.496341 +-5.492538 +-5.488736 +-5.484933 +-5.481131 +-5.477329 +-5.473526 +-5.469724 +-5.465922 +-5.462119 +-5.458317 +-5.454514 +-5.450712 +-5.446910 +-5.443107 +-5.439305 +-5.435503 +-5.431700 +-5.427898 +-5.424095 +-5.420293 +-5.416491 +-5.412688 +-5.408886 +-5.405084 +-5.401281 +-5.397479 +-5.393676 +-5.389874 +-5.386072 +-5.382269 +-5.378467 +-5.374664 +-5.370862 +-5.367060 +-5.363257 +-5.359455 +-5.355653 +-5.351850 +-5.348048 +-5.344245 +-5.340443 +-5.336641 +-5.332838 +-5.329036 +-5.325234 +-5.321431 +-5.317629 +-5.313826 +-5.310024 +-5.306222 +-5.302419 +-5.298617 +-5.294814 +-5.291012 +-5.287210 +-5.283407 +-5.279605 +-5.275803 +-5.272000 +-5.268198 +-5.264395 +-5.260593 +-5.256791 +-5.252988 +-5.249186 +-5.245384 +-5.241581 +-5.237779 +-5.233976 +-5.230174 +-5.226372 +-5.222569 +-5.218767 +-5.214964 +-5.211162 +-5.207360 +-5.203557 +-5.199755 +-5.195953 +-5.192150 +-5.188348 +-5.184545 +-5.180743 +-5.176941 +-5.173138 +-5.169336 +-5.165534 +-5.161731 +-5.157929 +-5.154126 +-5.150324 +-5.146522 +-5.142719 +-5.138917 +-5.135115 +-5.131312 +-5.127510 +-5.123707 +-5.119905 +-5.116103 +-5.112300 +-5.108498 +-5.104695 +-5.100893 +-5.097091 +-5.093288 +-5.089486 +-5.085684 +-5.081881 +-5.078079 +-5.074276 +-5.070474 +-5.066672 +-5.062869 +-5.059067 +-5.055265 +-5.051462 +-5.047660 +-5.043857 +-5.040055 +-5.036253 +-5.032450 +-5.028648 +-5.024845 +-5.021043 +-5.017241 +-5.013438 +-5.009636 +-5.005834 +-5.002031 +-4.998229 +-4.994426 +-4.990624 +-4.986822 +-4.983019 +-4.979217 +-4.975415 +-4.971612 +-4.967810 +-4.964007 +-4.960205 +-4.956403 +-4.952600 +-4.948798 +-4.944995 +-4.941193 +-4.937391 +-4.933588 +-4.929786 +-4.925984 +-4.922181 +-4.918379 +-4.914576 +-4.910774 +-4.906972 +-4.903169 +-4.899367 +-4.895565 +-4.891762 +-4.887960 +-4.884157 +-4.880355 +-4.876553 +-4.872750 +-4.868948 +-4.865146 +-4.861343 +-4.857541 +-4.853738 +-4.849936 +-4.846134 +-4.842331 +-4.838529 +-4.834726 +-4.830924 +-4.827122 +-4.823319 +-4.819517 +-4.815715 +-4.811912 +-4.808110 +-4.804307 +-4.800505 +-4.796703 +-4.792900 +-4.789098 +-4.785296 +-4.781493 +-4.777691 +-4.773888 +-4.770086 +-4.766284 +-4.762481 +-4.758679 +-4.754876 +-4.751074 +-4.747272 +-4.743469 +-4.739667 +-4.735865 +-4.732062 +-4.728260 +-4.724457 +-4.720655 +-4.716853 +-4.713050 +-4.709248 +-4.705446 +-4.701643 +-4.697841 +-4.694038 +-4.690236 +-4.686434 +-4.682631 +-4.678829 +-4.675027 +-4.671224 +-4.667422 +-4.663619 +-4.659817 +-4.656015 +-4.652212 +-4.648410 +-4.644607 +-4.640805 +-4.637003 +-4.633200 +-4.629398 +-4.625596 +-4.621793 +-4.617991 +-4.614188 +-4.610386 +-4.606584 +-4.602781 +-4.598979 +-4.595177 +-4.591374 +-4.587572 +-4.583769 +-4.579967 +-4.576165 +-4.572362 +-4.568560 +-4.564757 +-4.560955 +-4.557153 +-4.553350 +-4.549548 +-4.545746 +-4.541943 +-4.538141 +-4.534338 +-4.530536 +-4.526734 +-4.522931 +-4.519129 +-4.515327 +-4.511524 +-4.507722 +-4.503919 +-4.500117 +-4.496315 +-4.492512 +-4.488710 +-4.484907 +-4.481105 +-4.477303 +-4.473500 +-4.469698 +-4.465896 +-4.462093 +-4.458291 +-4.454488 +-4.450686 +-4.446884 +-4.443081 +-4.439279 +-4.435477 +-4.431674 +-4.427872 +-4.424069 +-4.420267 +-4.416465 +-4.412662 +-4.408860 +-4.405058 +-4.401255 +-4.397453 +-4.393650 +-4.389848 +-4.386046 +-4.382243 +-4.378441 +-4.374638 +-4.370836 +-4.367034 +-4.363231 +-4.359429 +-4.355627 +-4.351824 +-4.348022 +-4.344219 +-4.340417 +-4.336615 +-4.332812 +-4.329010 +-4.325208 +-4.321405 +-4.317603 +-4.313800 +-4.309998 +-4.306196 +-4.302393 +-4.298591 +-4.294788 +-4.290986 +-4.287184 +-4.283381 +-4.279579 +-4.275777 +-4.271974 +-4.268172 +-4.264369 +-4.260567 +-4.256765 +-4.252962 +-4.249160 +-4.245358 +-4.241555 +-4.237753 +-4.233950 +-4.230148 +-4.226346 +-4.222543 +-4.218741 +-4.214938 +-4.211136 +-4.207334 +-4.203531 +-4.199729 +-4.195927 +-4.192124 +-4.188322 +-4.184519 +-4.180717 +-4.176915 +-4.173112 +-4.169310 +-4.165508 +-4.161705 +-4.157903 +-4.154100 +-4.150298 +-4.146496 +-4.142693 +-4.138891 +-4.135089 +-4.131286 +-4.127484 +-4.123681 +-4.119879 +-4.116077 +-4.112274 +-4.108472 +-4.104669 +-4.100867 +-4.097065 +-4.093262 +-4.089460 +-4.085658 +-4.081855 +-4.078053 +-4.074250 +-4.070448 +-4.066646 +-4.062843 +-4.059041 +-4.055239 +-4.051436 +-4.047634 +-4.043831 +-4.040029 +-4.036227 +-4.032424 +-4.028622 +-4.024819 +-4.021017 +-4.017215 +-4.013412 +-4.009610 +-4.005808 +-4.002005 +-3.998203 +-3.994400 +-3.990598 +-3.986796 +-3.982993 +-3.979191 +-3.975389 +-3.971586 +-3.967784 +-3.963981 +-3.960179 +-3.956377 +-3.952574 +-3.948772 +-3.944969 +-3.941167 +-3.937365 +-3.933562 +-3.929760 +-3.925958 +-3.922155 +-3.918353 +-3.914550 +-3.910748 +-3.906946 +-3.903143 +-3.899341 +-3.895539 +-3.891736 +-3.887934 +-3.884131 +-3.880329 +-3.876527 +-3.872724 +-3.868922 +-3.865120 +-3.861317 +-3.857515 +-3.853712 +-3.849910 +-3.846108 +-3.842305 +-3.838503 +-3.834700 +-3.830898 +-3.827096 +-3.823293 +-3.819491 +-3.815689 +-3.811886 +-3.808084 +-3.804281 +-3.800479 +-3.796677 +-3.792874 +-3.789072 +-3.785270 +-3.781467 +-3.777665 +-3.773862 +-3.770060 +-3.766258 +-3.762455 +-3.758653 +-3.754850 +-3.751048 +-3.747246 +-3.743443 +-3.739641 +-3.735839 +-3.732036 +-3.728234 +-3.724431 +-3.720629 +-3.716827 +-3.713024 +-3.709222 +-3.705420 +-3.701617 +-3.697815 +-3.694012 +-3.690210 +-3.686408 +-3.682605 +-3.678803 +-3.675001 +-3.671198 +-3.667396 +-3.663593 +-3.659791 +-3.655989 +-3.652186 +-3.648384 +-3.644581 +-3.640779 +-3.636977 +-3.633174 +-3.629372 +-3.625570 +-3.621767 +-3.617965 +-3.614162 +-3.610360 +-3.606558 +-3.602755 +-3.598953 +-3.595151 +-3.591348 +-3.587546 +-3.583743 +-3.579941 +-3.576139 +-3.572336 +-3.568534 +-3.564731 +-3.560929 +-3.557127 +-3.553324 +-3.549522 +-3.545720 +-3.541917 +-3.538115 +-3.534312 +-3.530510 +-3.526708 +-3.522905 +-3.519103 +-3.515301 +-3.511498 +-3.507696 +-3.503893 +-3.500091 +-3.496289 +-3.492486 +-3.488684 +-3.484881 +-3.481079 +-3.477277 +-3.473474 +-3.469672 +-3.465870 +-3.462067 +-3.458265 +-3.454462 +-3.450660 +-3.446858 +-3.443055 +-3.439253 +-3.435451 +-3.431648 +-3.427846 +-3.424043 +-3.420241 +-3.416439 +-3.412636 +-3.408834 +-3.405032 +-3.401229 +-3.397427 +-3.393624 +-3.389822 +-3.386020 +-3.382217 +-3.378415 +-3.374612 +-3.370810 +-3.367008 +-3.363205 +-3.359403 +-3.355601 +-3.351798 +-3.347996 +-3.344193 +-3.340391 +-3.336589 +-3.332786 +-3.328984 +-3.325182 +-3.321379 +-3.317577 +-3.313774 +-3.309972 +-3.306170 +-3.302367 +-3.298565 +-3.294762 +-3.290960 +-3.287158 +-3.283355 +-3.279553 +-3.275751 +-3.271948 +-3.268146 +-3.264343 +-3.260541 +-3.256739 +-3.252936 +-3.249134 +-3.245332 +-3.241529 +-3.237727 +-3.233924 +-3.230122 +-3.226320 +-3.222517 +-3.218715 +-3.214912 +-3.211110 +-3.207308 +-3.203505 +-3.199703 +-3.195901 +-3.192098 +-3.188296 +-3.184493 +-3.180691 +-3.176889 +-3.173086 +-3.169284 +-3.165482 +-3.161679 +-3.157877 +-3.154074 +-3.150272 +-3.146470 +-3.142667 +-3.138865 +-3.135063 +-3.131260 +-3.127458 +-3.123655 +-3.119853 +-3.116051 +-3.112248 +-3.108446 +-3.104643 +-3.100841 +-3.097039 +-3.093236 +-3.089434 +-3.085632 +-3.081829 +-3.078027 +-3.074224 +-3.070422 +-3.066620 +-3.062817 +-3.059015 +-3.055213 +-3.051410 +-3.047608 +-3.043805 +-3.040003 +-3.036201 +-3.032398 +-3.028596 +-3.024793 +-3.020991 +-3.017189 +-3.013386 +-3.009584 +-3.005782 +-3.001979 +-2.998177 +-2.994374 +-2.990572 +-2.986770 +-2.982967 +-2.979165 +-2.975363 +-2.971560 +-2.967758 +-2.963955 +-2.960153 +-2.956351 +-2.952548 +-2.948746 +-2.944943 +-2.941141 +-2.937339 +-2.933536 +-2.929734 +-2.925932 +-2.922129 +-2.918327 +-2.914524 +-2.910722 +-2.906920 +-2.903117 +-2.899315 +-2.895513 +-2.891710 +-2.887908 +-2.884105 +-2.880303 +-2.876501 +-2.872698 +-2.868896 +-2.865094 +-2.861291 +-2.857489 +-2.853686 +-2.849884 +-2.846082 +-2.842279 +-2.838477 +-2.834674 +-2.830872 +-2.827070 +-2.823267 +-2.819465 +-2.815663 +-2.811860 +-2.808058 +-2.804255 +-2.800453 +-2.796651 +-2.792848 +-2.789046 +-2.785244 +-2.781441 +-2.777639 +-2.773836 +-2.770034 +-2.766232 +-2.762429 +-2.758627 +-2.754824 +-2.751022 +-2.747220 +-2.743417 +-2.739615 +-2.735813 +-2.732010 +-2.728208 +-2.724405 +-2.720603 +-2.716801 +-2.712998 +-2.709196 +-2.705394 +-2.701591 +-2.697789 +-2.693986 +-2.690184 +-2.686382 +-2.682579 +-2.678777 +-2.674974 +-2.671172 +-2.667370 +-2.663567 +-2.659765 +-2.655963 +-2.652160 +-2.648358 +-2.644555 +-2.640753 +-2.636951 +-2.633148 +-2.629346 +-2.625544 +-2.621741 +-2.617939 +-2.614136 +-2.610334 +-2.606532 +-2.602729 +-2.598927 +-2.595125 +-2.591322 +-2.587520 +-2.583717 +-2.579915 +-2.576113 +-2.572310 +-2.568508 +-2.564705 +-2.560903 +-2.557101 +-2.553298 +-2.549496 +-2.545694 +-2.541891 +-2.538089 +-2.534286 +-2.530484 +-2.526682 +-2.522879 +-2.519077 +-2.515275 +-2.511472 +-2.507670 +-2.503867 +-2.500065 +-2.496263 +-2.492460 +-2.488658 +-2.484855 +-2.481053 +-2.477251 +-2.473448 +-2.469646 +-2.465844 +-2.462041 +-2.458239 +-2.454436 +-2.450634 +-2.446832 +-2.443029 +-2.439227 +-2.435425 +-2.431622 +-2.427820 +-2.424017 +-2.420215 +-2.416413 +-2.412610 +-2.408808 +-2.405006 +-2.401203 +-2.397401 +-2.393598 +-2.389796 +-2.385994 +-2.382191 +-2.378389 +-2.374586 +-2.370784 +-2.366982 +-2.363179 +-2.359377 +-2.355575 +-2.351772 +-2.347970 +-2.344167 +-2.340365 +-2.336563 +-2.332760 +-2.328958 +-2.325156 +-2.321353 +-2.317551 +-2.313748 +-2.309946 +-2.306144 +-2.302341 +-2.298539 +-2.294736 +-2.290934 +-2.287132 +-2.283329 +-2.279527 +-2.275725 +-2.271922 +-2.268120 +-2.264317 +-2.260515 +-2.256713 +-2.252910 +-2.249108 +-2.245306 +-2.241503 +-2.237701 +-2.233898 +-2.230096 +-2.226294 +-2.222491 +-2.218689 +-2.214886 +-2.211084 +-2.207282 +-2.203479 +-2.199677 +-2.195875 +-2.192072 +-2.188270 +-2.184467 +-2.180665 +-2.176863 +-2.173060 +-2.169258 +-2.165456 +-2.161653 +-2.157851 +-2.154048 +-2.150246 +-2.146444 +-2.142641 +-2.138839 +-2.135037 +-2.131234 +-2.127432 +-2.123629 +-2.119827 +-2.116025 +-2.112222 +-2.108420 +-2.104617 +-2.100815 +-2.097013 +-2.093210 +-2.089408 +-2.085606 +-2.081803 +-2.078001 +-2.074198 +-2.070396 +-2.066594 +-2.062791 +-2.058989 +-2.055187 +-2.051384 +-2.047582 +-2.043779 +-2.039977 +-2.036175 +-2.032372 +-2.028570 +-2.024767 +-2.020965 +-2.017163 +-2.013360 +-2.009558 +-2.005756 +-2.001953 +-1.998151 +-1.994348 +-1.990546 +-1.986744 +-1.982941 +-1.979139 +-1.975337 +-1.971534 +-1.967732 +-1.963929 +-1.960127 +-1.956325 +-1.952522 +-1.948720 +-1.944917 +-1.941115 +-1.937313 +-1.933510 +-1.929708 +-1.925906 +-1.922103 +-1.918301 +-1.914498 +-1.910696 +-1.906894 +-1.903091 +-1.899289 +-1.895487 +-1.891684 +-1.887882 +-1.884079 +-1.880277 +-1.876475 +-1.872672 +-1.868870 +-1.865068 +-1.861265 +-1.857463 +-1.853660 +-1.849858 +-1.846056 +-1.842253 +-1.838451 +-1.834648 +-1.830846 +-1.827044 +-1.823241 +-1.819439 +-1.815637 +-1.811834 +-1.808032 +-1.804229 +-1.800427 +-1.796625 +-1.792822 +-1.789020 +-1.785218 +-1.781415 +-1.777613 +-1.773810 +-1.770008 +-1.766206 +-1.762403 +-1.758601 +-1.754798 +-1.750996 +-1.747194 +-1.743391 +-1.739589 +-1.735787 +-1.731984 +-1.728182 +-1.724379 +-1.720577 +-1.716775 +-1.712972 +-1.709170 +-1.705368 +-1.701565 +-1.697763 +-1.693960 +-1.690158 +-1.686356 +-1.682553 +-1.678751 +-1.674948 +-1.671146 +-1.667344 +-1.663541 +-1.659739 +-1.655937 +-1.652134 +-1.648332 +-1.644529 +-1.640727 +-1.636925 +-1.633122 +-1.629320 +-1.625518 +-1.621715 +-1.617913 +-1.614110 +-1.610308 +-1.606506 +-1.602703 +-1.598901 +-1.595099 +-1.591296 +-1.587494 +-1.583691 +-1.579889 +-1.576087 +-1.572284 +-1.568482 +-1.564679 +-1.560877 +-1.557075 +-1.553272 +-1.549470 +-1.545668 +-1.541865 +-1.538063 +-1.534260 +-1.530458 +-1.526656 +-1.522853 +-1.519051 +-1.515249 +-1.511446 +-1.507644 +-1.503841 +-1.500039 +-1.496237 +-1.492434 +-1.488632 +-1.484829 +-1.481027 +-1.477225 +-1.473422 +-1.469620 +-1.465818 +-1.462015 +-1.458213 +-1.454410 +-1.450608 +-1.446806 +-1.443003 +-1.439201 +-1.435399 +-1.431596 +-1.427794 +-1.423991 +-1.420189 +-1.416387 +-1.412584 +-1.408782 +-1.404979 +-1.401177 +-1.397375 +-1.393572 +-1.389770 +-1.385968 +-1.382165 +-1.378363 +-1.374560 +-1.370758 +-1.366956 +-1.363153 +-1.359351 +-1.355549 +-1.351746 +-1.347944 +-1.344141 +-1.340339 +-1.336537 +-1.332734 +-1.328932 +-1.325130 +-1.321327 +-1.317525 +-1.313722 +-1.309920 +-1.306118 +-1.302315 +-1.298513 +-1.294710 +-1.290908 +-1.287106 +-1.283303 +-1.279501 +-1.275699 +-1.271896 +-1.268094 +-1.264291 +-1.260489 +-1.256687 +-1.252884 +-1.249082 +-1.245280 +-1.241477 +-1.237675 +-1.233872 +-1.230070 +-1.226268 +-1.222465 +-1.218663 +-1.214860 +-1.211058 +-1.207256 +-1.203453 +-1.199651 +-1.195849 +-1.192046 +-1.188244 +-1.184441 +-1.180639 +-1.176837 +-1.173034 +-1.169232 +-1.165430 +-1.161627 +-1.157825 +-1.154022 +-1.150220 +-1.146418 +-1.142615 +-1.138813 +-1.135011 +-1.131208 +-1.127406 +-1.123603 +-1.119801 +-1.115999 +-1.112196 +-1.108394 +-1.104591 +-1.100789 +-1.096987 +-1.093184 +-1.089382 +-1.085580 +-1.081777 +-1.077975 +-1.074172 +-1.070370 +-1.066568 +-1.062765 +-1.058963 +-1.055161 +-1.051358 +-1.047556 +-1.043753 +-1.039951 +-1.036149 +-1.032346 +-1.028544 +-1.024741 +-1.020939 +-1.017137 +-1.013334 +-1.009532 +-1.005730 +-1.001927 +-0.998125 +-0.994322 +-0.990520 +-0.986718 +-0.982915 +-0.979113 +-0.975311 +-0.971508 +-0.967706 +-0.963903 +-0.960101 +-0.956299 +-0.952496 +-0.948694 +-0.944891 +-0.941089 +-0.937287 +-0.933484 +-0.929682 +-0.925880 +-0.922077 +-0.918275 +-0.914472 +-0.910670 +-0.906868 +-0.903065 +-0.899263 +-0.895461 +-0.891658 +-0.887856 +-0.884053 +-0.880251 +-0.876449 +-0.872646 +-0.868844 +-0.865042 +-0.861239 +-0.857437 +-0.853634 +-0.849832 +-0.846030 +-0.842227 +-0.838425 +-0.834622 +-0.830820 +-0.827018 +-0.823215 +-0.819413 +-0.815611 +-0.811808 +-0.808006 +-0.804203 +-0.800401 +-0.796599 +-0.792796 +-0.788994 +-0.785192 +-0.781389 +-0.777587 +-0.773784 +-0.769982 +-0.766180 +-0.762377 +-0.758575 +-0.754772 +-0.750970 +-0.747168 +-0.743365 +-0.739563 +-0.735761 +-0.731958 +-0.728156 +-0.724353 +-0.720551 +-0.716749 +-0.712946 +-0.709144 +-0.705342 +-0.701539 +-0.697737 +-0.693934 +-0.690132 +-0.686330 +-0.682527 +-0.678725 +-0.674922 +-0.671120 +-0.667318 +-0.663515 +-0.659713 +-0.655911 +-0.652108 +-0.648306 +-0.644503 +-0.640701 +-0.636899 +-0.633096 +-0.629294 +-0.625492 +-0.621689 +-0.617887 +-0.614084 +-0.610282 +-0.606480 +-0.602677 +-0.598875 +-0.595073 +-0.591270 +-0.587468 +-0.583665 +-0.579863 +-0.576061 +-0.572258 +-0.568456 +-0.564653 +-0.560851 +-0.557049 +-0.553246 +-0.549444 +-0.545642 +-0.541839 +-0.538037 +-0.534234 +-0.530432 +-0.526630 +-0.522827 +-0.519025 +-0.515223 +-0.511420 +-0.507618 +-0.503815 +-0.500013 +-0.496211 +-0.492408 +-0.488606 +-0.484803 +-0.481001 +-0.477199 +-0.473396 +-0.469594 +-0.465792 +-0.461989 +-0.458187 +-0.454384 +-0.450582 +-0.446780 +-0.442977 +-0.439175 +-0.435373 +-0.431570 +-0.427768 +-0.423965 +-0.420163 +-0.416361 +-0.412558 +-0.408756 +-0.404953 +-0.401151 +-0.397349 +-0.393546 +-0.389744 +-0.385942 +-0.382139 +-0.378337 +-0.374534 +-0.370732 +-0.366930 +-0.363127 +-0.359325 +-0.355523 +-0.351720 +-0.347918 +-0.344115 +-0.340313 +-0.336511 +-0.332708 +-0.328906 +-0.325104 +-0.321301 +-0.317499 +-0.313696 +-0.309894 +-0.306092 +-0.302289 +-0.298487 +-0.294684 +-0.290882 +-0.287080 +-0.283277 +-0.279475 +-0.275673 +-0.271870 +-0.268068 +-0.264265 +-0.260463 +-0.256661 +-0.252858 +-0.249056 +-0.245254 +-0.241451 +-0.237649 +-0.233846 +-0.230044 +-0.226242 +-0.222439 +-0.218637 +-0.214834 +-0.211032 +-0.207230 +-0.203427 +-0.199625 +-0.195823 +-0.192020 +-0.188218 +-0.184415 +-0.180613 +-0.176811 +-0.173008 +-0.169206 +-0.165404 +-0.161601 +-0.157799 +-0.153996 +-0.150194 +-0.146392 +-0.142589 +-0.138787 +-0.134984 +-0.131182 +-0.127380 +-0.123577 +-0.119775 +-0.115973 +-0.112170 +-0.108368 +-0.104565 +-0.100763 +-0.096961 +-0.093158 +-0.089356 +-0.085554 +-0.081751 +-0.077949 +-0.074146 +-0.070344 +-0.066542 +-0.062739 +-0.058937 +-0.055135 +-0.051332 +-0.047530 +-0.043727 +-0.039925 +-0.036123 +-0.032320 +-0.028518 +-0.024715 +-0.020913 +-0.017111 +-0.013308 +-0.009506 +-0.005704 +-0.001901 +0.001901 +0.005704 +0.009506 +0.013308 +0.017111 +0.020913 +0.024715 +0.028518 +0.032320 +0.036123 +0.039925 +0.043727 +0.047530 +0.051332 +0.055135 +0.058937 +0.062739 +0.066542 +0.070344 +0.074146 +0.077949 +0.081751 +0.085554 +0.089356 +0.093158 +0.096961 +0.100763 +0.104565 +0.108368 +0.112170 +0.115973 +0.119775 +0.123577 +0.127380 +0.131182 +0.134984 +0.138787 +0.142589 +0.146392 +0.150194 +0.153996 +0.157799 +0.161601 +0.165404 +0.169206 +0.173008 +0.176811 +0.180613 +0.184415 +0.188218 +0.192020 +0.195823 +0.199625 +0.203427 +0.207230 +0.211032 +0.214834 +0.218637 +0.222439 +0.226242 +0.230044 +0.233846 +0.237649 +0.241451 +0.245254 +0.249056 +0.252858 +0.256661 +0.260463 +0.264265 +0.268068 +0.271870 +0.275673 +0.279475 +0.283277 +0.287080 +0.290882 +0.294684 +0.298487 +0.302289 +0.306092 +0.309894 +0.313696 +0.317499 +0.321301 +0.325104 +0.328906 +0.332708 +0.336511 +0.340313 +0.344115 +0.347918 +0.351720 +0.355523 +0.359325 +0.363127 +0.366930 +0.370732 +0.374534 +0.378337 +0.382139 +0.385942 +0.389744 +0.393546 +0.397349 +0.401151 +0.404953 +0.408756 +0.412558 +0.416361 +0.420163 +0.423965 +0.427768 +0.431570 +0.435373 +0.439175 +0.442977 +0.446780 +0.450582 +0.454384 +0.458187 +0.461989 +0.465792 +0.469594 +0.473396 +0.477199 +0.481001 +0.484803 +0.488606 +0.492408 +0.496211 +0.500013 +0.503815 +0.507618 +0.511420 +0.515223 +0.519025 +0.522827 +0.526630 +0.530432 +0.534234 +0.538037 +0.541839 +0.545642 +0.549444 +0.553246 +0.557049 +0.560851 +0.564653 +0.568456 +0.572258 +0.576061 +0.579863 +0.583665 +0.587468 +0.591270 +0.595073 +0.598875 +0.602677 +0.606480 +0.610282 +0.614084 +0.617887 +0.621689 +0.625492 +0.629294 +0.633096 +0.636899 +0.640701 +0.644503 +0.648306 +0.652108 +0.655911 +0.659713 +0.663515 +0.667318 +0.671120 +0.674922 +0.678725 +0.682527 +0.686330 +0.690132 +0.693934 +0.697737 +0.701539 +0.705342 +0.709144 +0.712946 +0.716749 +0.720551 +0.724353 +0.728156 +0.731958 +0.735761 +0.739563 +0.743365 +0.747168 +0.750970 +0.754772 +0.758575 +0.762377 +0.766180 +0.769982 +0.773784 +0.777587 +0.781389 +0.785192 +0.788994 +0.792796 +0.796599 +0.800401 +0.804203 +0.808006 +0.811808 +0.815611 +0.819413 +0.823215 +0.827018 +0.830820 +0.834622 +0.838425 +0.842227 +0.846030 +0.849832 +0.853634 +0.857437 +0.861239 +0.865042 +0.868844 +0.872646 +0.876449 +0.880251 +0.884053 +0.887856 +0.891658 +0.895461 +0.899263 +0.903065 +0.906868 +0.910670 +0.914472 +0.918275 +0.922077 +0.925880 +0.929682 +0.933484 +0.937287 +0.941089 +0.944891 +0.948694 +0.952496 +0.956299 +0.960101 +0.963903 +0.967706 +0.971508 +0.975311 +0.979113 +0.982915 +0.986718 +0.990520 +0.994322 +0.998125 +1.001927 +1.005730 +1.009532 +1.013334 +1.017137 +1.020939 +1.024741 +1.028544 +1.032346 +1.036149 +1.039951 +1.043753 +1.047556 +1.051358 +1.055161 +1.058963 +1.062765 +1.066568 +1.070370 +1.074172 +1.077975 +1.081777 +1.085580 +1.089382 +1.093184 +1.096987 +1.100789 +1.104591 +1.108394 +1.112196 +1.115999 +1.119801 +1.123603 +1.127406 +1.131208 +1.135011 +1.138813 +1.142615 +1.146418 +1.150220 +1.154022 +1.157825 +1.161627 +1.165430 +1.169232 +1.173034 +1.176837 +1.180639 +1.184441 +1.188244 +1.192046 +1.195849 +1.199651 +1.203453 +1.207256 +1.211058 +1.214860 +1.218663 +1.222465 +1.226268 +1.230070 +1.233872 +1.237675 +1.241477 +1.245280 +1.249082 +1.252884 +1.256687 +1.260489 +1.264291 +1.268094 +1.271896 +1.275699 +1.279501 +1.283303 +1.287106 +1.290908 +1.294710 +1.298513 +1.302315 +1.306118 +1.309920 +1.313722 +1.317525 +1.321327 +1.325130 +1.328932 +1.332734 +1.336537 +1.340339 +1.344141 +1.347944 +1.351746 +1.355549 +1.359351 +1.363153 +1.366956 +1.370758 +1.374560 +1.378363 +1.382165 +1.385968 +1.389770 +1.393572 +1.397375 +1.401177 +1.404979 +1.408782 +1.412584 +1.416387 +1.420189 +1.423991 +1.427794 +1.431596 +1.435399 +1.439201 +1.443003 +1.446806 +1.450608 +1.454410 +1.458213 +1.462015 +1.465818 +1.469620 +1.473422 +1.477225 +1.481027 +1.484829 +1.488632 +1.492434 +1.496237 +1.500039 +1.503841 +1.507644 +1.511446 +1.515249 +1.519051 +1.522853 +1.526656 +1.530458 +1.534260 +1.538063 +1.541865 +1.545668 +1.549470 +1.553272 +1.557075 +1.560877 +1.564679 +1.568482 +1.572284 +1.576087 +1.579889 +1.583691 +1.587494 +1.591296 +1.595099 +1.598901 +1.602703 +1.606506 +1.610308 +1.614110 +1.617913 +1.621715 +1.625518 +1.629320 +1.633122 +1.636925 +1.640727 +1.644529 +1.648332 +1.652134 +1.655937 +1.659739 +1.663541 +1.667344 +1.671146 +1.674948 +1.678751 +1.682553 +1.686356 +1.690158 +1.693960 +1.697763 +1.701565 +1.705368 +1.709170 +1.712972 +1.716775 +1.720577 +1.724379 +1.728182 +1.731984 +1.735787 +1.739589 +1.743391 +1.747194 +1.750996 +1.754798 +1.758601 +1.762403 +1.766206 +1.770008 +1.773810 +1.777613 +1.781415 +1.785218 +1.789020 +1.792822 +1.796625 +1.800427 +1.804229 +1.808032 +1.811834 +1.815637 +1.819439 +1.823241 +1.827044 +1.830846 +1.834648 +1.838451 +1.842253 +1.846056 +1.849858 +1.853660 +1.857463 +1.861265 +1.865068 +1.868870 +1.872672 +1.876475 +1.880277 +1.884079 +1.887882 +1.891684 +1.895487 +1.899289 +1.903091 +1.906894 +1.910696 +1.914498 +1.918301 +1.922103 +1.925906 +1.929708 +1.933510 +1.937313 +1.941115 +1.944917 +1.948720 +1.952522 +1.956325 +1.960127 +1.963929 +1.967732 +1.971534 +1.975337 +1.979139 +1.982941 +1.986744 +1.990546 +1.994348 +1.998151 +2.001953 +2.005756 +2.009558 +2.013360 +2.017163 +2.020965 +2.024767 +2.028570 +2.032372 +2.036175 +2.039977 +2.043779 +2.047582 +2.051384 +2.055187 +2.058989 +2.062791 +2.066594 +2.070396 +2.074198 +2.078001 +2.081803 +2.085606 +2.089408 +2.093210 +2.097013 +2.100815 +2.104617 +2.108420 +2.112222 +2.116025 +2.119827 +2.123629 +2.127432 +2.131234 +2.135037 +2.138839 +2.142641 +2.146444 +2.150246 +2.154048 +2.157851 +2.161653 +2.165456 +2.169258 +2.173060 +2.176863 +2.180665 +2.184467 +2.188270 +2.192072 +2.195875 +2.199677 +2.203479 +2.207282 +2.211084 +2.214886 +2.218689 +2.222491 +2.226294 +2.230096 +2.233898 +2.237701 +2.241503 +2.245306 +2.249108 +2.252910 +2.256713 +2.260515 +2.264317 +2.268120 +2.271922 +2.275725 +2.279527 +2.283329 +2.287132 +2.290934 +2.294736 +2.298539 +2.302341 +2.306144 +2.309946 +2.313748 +2.317551 +2.321353 +2.325156 +2.328958 +2.332760 +2.336563 +2.340365 +2.344167 +2.347970 +2.351772 +2.355575 +2.359377 +2.363179 +2.366982 +2.370784 +2.374586 +2.378389 +2.382191 +2.385994 +2.389796 +2.393598 +2.397401 +2.401203 +2.405006 +2.408808 +2.412610 +2.416413 +2.420215 +2.424017 +2.427820 +2.431622 +2.435425 +2.439227 +2.443029 +2.446832 +2.450634 +2.454436 +2.458239 +2.462041 +2.465844 +2.469646 +2.473448 +2.477251 +2.481053 +2.484855 +2.488658 +2.492460 +2.496263 +2.500065 +2.503867 +2.507670 +2.511472 +2.515275 +2.519077 +2.522879 +2.526682 +2.530484 +2.534286 +2.538089 +2.541891 +2.545694 +2.549496 +2.553298 +2.557101 +2.560903 +2.564705 +2.568508 +2.572310 +2.576113 +2.579915 +2.583717 +2.587520 +2.591322 +2.595125 +2.598927 +2.602729 +2.606532 +2.610334 +2.614136 +2.617939 +2.621741 +2.625544 +2.629346 +2.633148 +2.636951 +2.640753 +2.644555 +2.648358 +2.652160 +2.655963 +2.659765 +2.663567 +2.667370 +2.671172 +2.674974 +2.678777 +2.682579 +2.686382 +2.690184 +2.693986 +2.697789 +2.701591 +2.705394 +2.709196 +2.712998 +2.716801 +2.720603 +2.724405 +2.728208 +2.732010 +2.735813 +2.739615 +2.743417 +2.747220 +2.751022 +2.754824 +2.758627 +2.762429 +2.766232 +2.770034 +2.773836 +2.777639 +2.781441 +2.785244 +2.789046 +2.792848 +2.796651 +2.800453 +2.804255 +2.808058 +2.811860 +2.815663 +2.819465 +2.823267 +2.827070 +2.830872 +2.834674 +2.838477 +2.842279 +2.846082 +2.849884 +2.853686 +2.857489 +2.861291 +2.865094 +2.868896 +2.872698 +2.876501 +2.880303 +2.884105 +2.887908 +2.891710 +2.895513 +2.899315 +2.903117 +2.906920 +2.910722 +2.914524 +2.918327 +2.922129 +2.925932 +2.929734 +2.933536 +2.937339 +2.941141 +2.944943 +2.948746 +2.952548 +2.956351 +2.960153 +2.963955 +2.967758 +2.971560 +2.975363 +2.979165 +2.982967 +2.986770 +2.990572 +2.994374 +2.998177 +3.001979 +3.005782 +3.009584 +3.013386 +3.017189 +3.020991 +3.024793 +3.028596 +3.032398 +3.036201 +3.040003 +3.043805 +3.047608 +3.051410 +3.055213 +3.059015 +3.062817 +3.066620 +3.070422 +3.074224 +3.078027 +3.081829 +3.085632 +3.089434 +3.093236 +3.097039 +3.100841 +3.104643 +3.108446 +3.112248 +3.116051 +3.119853 +3.123655 +3.127458 +3.131260 +3.135063 +3.138865 +3.142667 +3.146470 +3.150272 +3.154074 +3.157877 +3.161679 +3.165482 +3.169284 +3.173086 +3.176889 +3.180691 +3.184493 +3.188296 +3.192098 +3.195901 +3.199703 +3.203505 +3.207308 +3.211110 +3.214912 +3.218715 +3.222517 +3.226320 +3.230122 +3.233924 +3.237727 +3.241529 +3.245332 +3.249134 +3.252936 +3.256739 +3.260541 +3.264343 +3.268146 +3.271948 +3.275751 +3.279553 +3.283355 +3.287158 +3.290960 +3.294762 +3.298565 +3.302367 +3.306170 +3.309972 +3.313774 +3.317577 +3.321379 +3.325182 +3.328984 +3.332786 +3.336589 +3.340391 +3.344193 +3.347996 +3.351798 +3.355601 +3.359403 +3.363205 +3.367008 +3.370810 +3.374612 +3.378415 +3.382217 +3.386020 +3.389822 +3.393624 +3.397427 +3.401229 +3.405032 +3.408834 +3.412636 +3.416439 +3.420241 +3.424043 +3.427846 +3.431648 +3.435451 +3.439253 +3.443055 +3.446858 +3.450660 +3.454462 +3.458265 +3.462067 +3.465870 +3.469672 +3.473474 +3.477277 +3.481079 +3.484881 +3.488684 +3.492486 +3.496289 +3.500091 +3.503893 +3.507696 +3.511498 +3.515301 +3.519103 +3.522905 +3.526708 +3.530510 +3.534312 +3.538115 +3.541917 +3.545720 +3.549522 +3.553324 +3.557127 +3.560929 +3.564731 +3.568534 +3.572336 +3.576139 +3.579941 +3.583743 +3.587546 +3.591348 +3.595151 +3.598953 +3.602755 +3.606558 +3.610360 +3.614162 +3.617965 +3.621767 +3.625570 +3.629372 +3.633174 +3.636977 +3.640779 +3.644581 +3.648384 +3.652186 +3.655989 +3.659791 +3.663593 +3.667396 +3.671198 +3.675001 +3.678803 +3.682605 +3.686408 +3.690210 +3.694012 +3.697815 +3.701617 +3.705420 +3.709222 +3.713024 +3.716827 +3.720629 +3.724431 +3.728234 +3.732036 +3.735839 +3.739641 +3.743443 +3.747246 +3.751048 +3.754850 +3.758653 +3.762455 +3.766258 +3.770060 +3.773862 +3.777665 +3.781467 +3.785270 +3.789072 +3.792874 +3.796677 +3.800479 +3.804281 +3.808084 +3.811886 +3.815689 +3.819491 +3.823293 +3.827096 +3.830898 +3.834700 +3.838503 +3.842305 +3.846108 +3.849910 +3.853712 +3.857515 +3.861317 +3.865120 +3.868922 +3.872724 +3.876527 +3.880329 +3.884131 +3.887934 +3.891736 +3.895539 +3.899341 +3.903143 +3.906946 +3.910748 +3.914550 +3.918353 +3.922155 +3.925958 +3.929760 +3.933562 +3.937365 +3.941167 +3.944969 +3.948772 +3.952574 +3.956377 +3.960179 +3.963981 +3.967784 +3.971586 +3.975389 +3.979191 +3.982993 +3.986796 +3.990598 +3.994400 +3.998203 +4.002005 +4.005808 +4.009610 +4.013412 +4.017215 +4.021017 +4.024819 +4.028622 +4.032424 +4.036227 +4.040029 +4.043831 +4.047634 +4.051436 +4.055239 +4.059041 +4.062843 +4.066646 +4.070448 +4.074250 +4.078053 +4.081855 +4.085658 +4.089460 +4.093262 +4.097065 +4.100867 +4.104669 +4.108472 +4.112274 +4.116077 +4.119879 +4.123681 +4.127484 +4.131286 +4.135089 +4.138891 +4.142693 +4.146496 +4.150298 +4.154100 +4.157903 +4.161705 +4.165508 +4.169310 +4.173112 +4.176915 +4.180717 +4.184519 +4.188322 +4.192124 +4.195927 +4.199729 +4.203531 +4.207334 +4.211136 +4.214938 +4.218741 +4.222543 +4.226346 +4.230148 +4.233950 +4.237753 +4.241555 +4.245358 +4.249160 +4.252962 +4.256765 +4.260567 +4.264369 +4.268172 +4.271974 +4.275777 +4.279579 +4.283381 +4.287184 +4.290986 +4.294788 +4.298591 +4.302393 +4.306196 +4.309998 +4.313800 +4.317603 +4.321405 +4.325208 +4.329010 +4.332812 +4.336615 +4.340417 +4.344219 +4.348022 +4.351824 +4.355627 +4.359429 +4.363231 +4.367034 +4.370836 +4.374638 +4.378441 +4.382243 +4.386046 +4.389848 +4.393650 +4.397453 +4.401255 +4.405058 +4.408860 +4.412662 +4.416465 +4.420267 +4.424069 +4.427872 +4.431674 +4.435477 +4.439279 +4.443081 +4.446884 +4.450686 +4.454488 +4.458291 +4.462093 +4.465896 +4.469698 +4.473500 +4.477303 +4.481105 +4.484907 +4.488710 +4.492512 +4.496315 +4.500117 +4.503919 +4.507722 +4.511524 +4.515327 +4.519129 +4.522931 +4.526734 +4.530536 +4.534338 +4.538141 +4.541943 +4.545746 +4.549548 +4.553350 +4.557153 +4.560955 +4.564757 +4.568560 +4.572362 +4.576165 +4.579967 +4.583769 +4.587572 +4.591374 +4.595177 +4.598979 +4.602781 +4.606584 +4.610386 +4.614188 +4.617991 +4.621793 +4.625596 +4.629398 +4.633200 +4.637003 +4.640805 +4.644607 +4.648410 +4.652212 +4.656015 +4.659817 +4.663619 +4.667422 +4.671224 +4.675027 +4.678829 +4.682631 +4.686434 +4.690236 +4.694038 +4.697841 +4.701643 +4.705446 +4.709248 +4.713050 +4.716853 +4.720655 +4.724457 +4.728260 +4.732062 +4.735865 +4.739667 +4.743469 +4.747272 +4.751074 +4.754876 +4.758679 +4.762481 +4.766284 +4.770086 +4.773888 +4.777691 +4.781493 +4.785296 +4.789098 +4.792900 +4.796703 +4.800505 +4.804307 +4.808110 +4.811912 +4.815715 +4.819517 +4.823319 +4.827122 +4.830924 +4.834726 +4.838529 +4.842331 +4.846134 +4.849936 +4.853738 +4.857541 +4.861343 +4.865146 +4.868948 +4.872750 +4.876553 +4.880355 +4.884157 +4.887960 +4.891762 +4.895565 +4.899367 +4.903169 +4.906972 +4.910774 +4.914576 +4.918379 +4.922181 +4.925984 +4.929786 +4.933588 +4.937391 +4.941193 +4.944995 +4.948798 +4.952600 +4.956403 +4.960205 +4.964007 +4.967810 +4.971612 +4.975415 +4.979217 +4.983019 +4.986822 +4.990624 +4.994426 +4.998229 +5.002031 +5.005834 +5.009636 +5.013438 +5.017241 +5.021043 +5.024845 +5.028648 +5.032450 +5.036253 +5.040055 +5.043857 +5.047660 +5.051462 +5.055265 +5.059067 +5.062869 +5.066672 +5.070474 +5.074276 +5.078079 +5.081881 +5.085684 +5.089486 +5.093288 +5.097091 +5.100893 +5.104695 +5.108498 +5.112300 +5.116103 +5.119905 +5.123707 +5.127510 +5.131312 +5.135115 +5.138917 +5.142719 +5.146522 +5.150324 +5.154126 +5.157929 +5.161731 +5.165534 +5.169336 +5.173138 +5.176941 +5.180743 +5.184545 +5.188348 +5.192150 +5.195953 +5.199755 +5.203557 +5.207360 +5.211162 +5.214964 +5.218767 +5.222569 +5.226372 +5.230174 +5.233976 +5.237779 +5.241581 +5.245384 +5.249186 +5.252988 +5.256791 +5.260593 +5.264395 +5.268198 +5.272000 +5.275803 +5.279605 +5.283407 +5.287210 +5.291012 +5.294814 +5.298617 +5.302419 +5.306222 +5.310024 +5.313826 +5.317629 +5.321431 +5.325234 +5.329036 +5.332838 +5.336641 +5.340443 +5.344245 +5.348048 +5.351850 +5.355653 +5.359455 +5.363257 +5.367060 +5.370862 +5.374664 +5.378467 +5.382269 +5.386072 +5.389874 +5.393676 +5.397479 +5.401281 +5.405084 +5.408886 +5.412688 +5.416491 +5.420293 +5.424095 +5.427898 +5.431700 +5.435503 +5.439305 +5.443107 +5.446910 +5.450712 +5.454514 +5.458317 +5.462119 +5.465922 +5.469724 +5.473526 +5.477329 +5.481131 +5.484933 +5.488736 +5.492538 +5.496341 +5.500143 +5.503945 +5.507748 +5.511550 +5.515353 +5.519155 +5.522957 +5.526760 +5.530562 +5.534364 +5.538167 +5.541969 +5.545772 +5.549574 +5.553376 +5.557179 +5.560981 +5.564783 +5.568586 +5.572388 +5.576191 +5.579993 +5.583795 +5.587598 +5.591400 +5.595203 +5.599005 +5.602807 +5.606610 +5.610412 +5.614214 +5.618017 +5.621819 +5.625622 +5.629424 +5.633226 +5.637029 +5.640831 +5.644633 +5.648436 +5.652238 +5.656041 +5.659843 +5.663645 +5.667448 +5.671250 +5.675053 +5.678855 +5.682657 +5.686460 +5.690262 +5.694064 +5.697867 +5.701669 +5.705472 +5.709274 +5.713076 +5.716879 +5.720681 +5.724483 +5.728286 +5.732088 +5.735891 +5.739693 +5.743495 +5.747298 +5.751100 +5.754902 +5.758705 +5.762507 +5.766310 +5.770112 +5.773914 +5.777717 +5.781519 +5.785322 +5.789124 +5.792926 +5.796729 +5.800531 +5.804333 +5.808136 +5.811938 +5.815741 +5.819543 +5.823345 +5.827148 +5.830950 +5.834752 +5.838555 +5.842357 +5.846160 +5.849962 +5.853764 +5.857567 +5.861369 +5.865172 +5.868974 +5.872776 +5.876579 +5.880381 +5.884183 +5.887986 +5.891788 +5.895591 +5.899393 +5.903195 +5.906998 +5.910800 +5.914602 +5.918405 +5.922207 +5.926010 +5.929812 +5.933614 +5.937417 +5.941219 +5.945022 +5.948824 +5.952626 +5.956429 +5.960231 +5.964033 +5.967836 +5.971638 +5.975441 +5.979243 +5.983045 +5.986848 +5.990650 +5.994452 +5.998255 +6.002057 +6.005860 +6.009662 +6.013464 +6.017267 +6.021069 +6.024871 +6.028674 +6.032476 +6.036279 +6.040081 +6.043883 +6.047686 +6.051488 +6.055291 +6.059093 +6.062895 +6.066698 +6.070500 +6.074302 +6.078105 +6.081907 +6.085710 +6.089512 +6.093314 +6.097117 +6.100919 +6.104721 +6.108524 +6.112326 +6.116129 +6.119931 +6.123733 +6.127536 +6.131338 +6.135141 +6.138943 +6.142745 +6.146548 +6.150350 +6.154152 +6.157955 +6.161757 +6.165560 +6.169362 +6.173164 +6.176967 +6.180769 +6.184571 +6.188374 +6.192176 +6.195979 +6.199781 +6.203583 +6.207386 +6.211188 +6.214990 +6.218793 +6.222595 +6.226398 +6.230200 +6.234002 +6.237805 +6.241607 +6.245410 +6.249212 +6.253014 +6.256817 +6.260619 +6.264421 +6.268224 +6.272026 +6.275829 +6.279631 +6.283433 +6.287236 +6.291038 +6.294840 +6.298643 +6.302445 +6.306248 +6.310050 +6.313852 +6.317655 +6.321457 +6.325260 +6.329062 +6.332864 +6.336667 +6.340469 +6.344271 +6.348074 +6.351876 +6.355679 +6.359481 +6.363283 +6.367086 +6.370888 +6.374690 +6.378493 +6.382295 +6.386098 +6.389900 +6.393702 +6.397505 +6.401307 +6.405110 +6.408912 +6.412714 +6.416517 +6.420319 +6.424121 +6.427924 +6.431726 +6.435529 +6.439331 +6.443133 +6.446936 +6.450738 +6.454540 +6.458343 +6.462145 +6.465948 +6.469750 +6.473552 +6.477355 +6.481157 +6.484959 +6.488762 +6.492564 +6.496367 +6.500169 +6.503971 +6.507774 +6.511576 +6.515379 +6.519181 +6.522983 +6.526786 +6.530588 +6.534390 +6.538193 +6.541995 +6.545798 +6.549600 +6.553402 +6.557205 +6.561007 +6.564809 +6.568612 +6.572414 +6.576217 +6.580019 +6.583821 +6.587624 +6.591426 +6.595229 +6.599031 +6.602833 +6.606636 +6.610438 +6.614240 +6.618043 +6.621845 +6.625648 +6.629450 +6.633252 +6.637055 +6.640857 +6.644659 +6.648462 +6.652264 +6.656067 +6.659869 +6.663671 +6.667474 +6.671276 +6.675079 +6.678881 +6.682683 +6.686486 +6.690288 +6.694090 +6.697893 +6.701695 +6.705498 +6.709300 +6.713102 +6.716905 +6.720707 +6.724509 +6.728312 +6.732114 +6.735917 +6.739719 +6.743521 +6.747324 +6.751126 +6.754928 +6.758731 +6.762533 +6.766336 +6.770138 +6.773940 +6.777743 +6.781545 +6.785348 +6.789150 +6.792952 +6.796755 +6.800557 +6.804359 +6.808162 +6.811964 +6.815767 +6.819569 +6.823371 +6.827174 +6.830976 +6.834778 +6.838581 +6.842383 +6.846186 +6.849988 +6.853790 +6.857593 +6.861395 +6.865198 +6.869000 +6.872802 +6.876605 +6.880407 +6.884209 +6.888012 +6.891814 +6.895617 +6.899419 +6.903221 +6.907024 +6.910826 +6.914628 +6.918431 +6.922233 +6.926036 +6.929838 +6.933640 +6.937443 +6.941245 +6.945048 +6.948850 +6.952652 +6.956455 +6.960257 +6.964059 +6.967862 +6.971664 +6.975467 +6.979269 +6.983071 +6.986874 +6.990676 +6.994478 +6.998281 +7.002083 +7.005886 +7.009688 +7.013490 +7.017293 +7.021095 +7.024897 +7.028700 +7.032502 +7.036305 +7.040107 +7.043909 +7.047712 +7.051514 +7.055317 +7.059119 +7.062921 +7.066724 +7.070526 +7.074328 +7.078131 +7.081933 +7.085736 +7.089538 +7.093340 +7.097143 +7.100945 +7.104747 +7.108550 +7.112352 +7.116155 +7.119957 +7.123759 +7.127562 +7.131364 +7.135167 +7.138969 +7.142771 +7.146574 +7.150376 +7.154178 +7.157981 +7.161783 +7.165586 +7.169388 +7.173190 +7.176993 +7.180795 +7.184597 +7.188400 +7.192202 +7.196005 +7.199807 +7.203609 +7.207412 +7.211214 +7.215017 +7.218819 +7.222621 +7.226424 +7.230226 +7.234028 +7.237831 +7.241633 +7.245436 +7.249238 +7.253040 +7.256843 +7.260645 +7.264447 +7.268250 +7.272052 +7.275855 +7.279657 +7.283459 +7.287262 +7.291064 +7.294866 +7.298669 +7.302471 +7.306274 +7.310076 +7.313878 +7.317681 +7.321483 +7.325286 +7.329088 +7.332890 +7.336693 +7.340495 +7.344297 +7.348100 +7.351902 +7.355705 +7.359507 +7.363309 +7.367112 +7.370914 +7.374716 +7.378519 +7.382321 +7.386124 +7.389926 +7.393728 +7.397531 +7.401333 +7.405136 +7.408938 +7.412740 +7.416543 +7.420345 +7.424147 +7.427950 +7.431752 +7.435555 +7.439357 +7.443159 +7.446962 +7.450764 +7.454566 +7.458369 +7.462171 +7.465974 +7.469776 +7.473578 +7.477381 +7.481183 +7.484985 +7.488788 +7.492590 +7.496393 +7.500195 +7.503997 +7.507800 +7.511602 +7.515405 +7.519207 +7.523009 +7.526812 +7.530614 +7.534416 +7.538219 +7.542021 +7.545824 +7.549626 +7.553428 +7.557231 +7.561033 +7.564835 +7.568638 +7.572440 +7.576243 +7.580045 +7.583847 +7.587650 +7.591452 +7.595255 +7.599057 +7.602859 +7.606662 +7.610464 +7.614266 +7.618069 +7.621871 +7.625674 +7.629476 +7.633278 +7.637081 +7.640883 +7.644685 +7.648488 +7.652290 +7.656093 +7.659895 +7.663697 +7.667500 +7.671302 +7.675105 +7.678907 +7.682709 +7.686512 +7.690314 +7.694116 +7.697919 +7.701721 +7.705524 +7.709326 +7.713128 +7.716931 +7.720733 +7.724535 +7.728338 +7.732140 +7.735943 +7.739745 +7.743547 +7.747350 +7.751152 +7.754954 +7.758757 +7.762559 +7.766362 +7.770164 +7.773966 +7.777769 +7.781571 +7.785374 +7.789176 +7.792978 +7.796781 +7.800583 +7.804385 +7.808188 +7.811990 +7.815793 +7.819595 +7.823397 +7.827200 +7.831002 +7.834804 +7.838607 +7.842409 +7.846212 +7.850014 +7.853816 +7.857619 +7.861421 +7.865224 +7.869026 +7.872828 +7.876631 +7.880433 +7.884235 +7.888038 +7.891840 +7.895643 +7.899445 +7.903247 +7.907050 +7.910852 +7.914654 +7.918457 +7.922259 +7.926062 +7.929864 +7.933666 +7.937469 +7.941271 +7.945074 +7.948876 +7.952678 +7.956481 +7.960283 +7.964085 +7.967888 +7.971690 +7.975493 +7.979295 +7.983097 +7.986900 +7.990702 +7.994504 +7.998307 +8.002109 +8.005912 +8.009714 +8.013516 +8.017319 +8.021121 +8.024923 +8.028726 +8.032528 +8.036331 +8.040133 +8.043935 +8.047738 +8.051540 +8.055343 +8.059145 +8.062947 +8.066750 +8.070552 +8.074354 +8.078157 +8.081959 +8.085762 +8.089564 +8.093366 +8.097169 +8.100971 +8.104773 +8.108576 +8.112378 +8.116181 +8.119983 +8.123785 +8.127588 +8.131390 +8.135193 +8.138995 +8.142797 +8.146600 +8.150402 +8.154204 +8.158007 +8.161809 +8.165612 +8.169414 +8.173216 +8.177019 +8.180821 +8.184623 +8.188426 +8.192228 +8.196031 +8.199833 +8.203635 +8.207438 +8.211240 +8.215043 +8.218845 +8.222647 +8.226450 +8.230252 +8.234054 +8.237857 +8.241659 +8.245462 +8.249264 +8.253066 +8.256869 +8.260671 +8.264473 +8.268276 +8.272078 +8.275881 +8.279683 +8.283485 +8.287288 +8.291090 +8.294892 +8.298695 +8.302497 +8.306300 +8.310102 +8.313904 +8.317707 +8.321509 +8.325312 +8.329114 +8.332916 +8.336719 +8.340521 +8.344323 +8.348126 +8.351928 +8.355731 +8.359533 +8.363335 +8.367138 +8.370940 +8.374742 +8.378545 +8.382347 +8.386150 +8.389952 +8.393754 +8.397557 +8.401359 +8.405162 +8.408964 +8.412766 +8.416569 +8.420371 +8.424173 +8.427976 +8.431778 +8.435581 +8.439383 +8.443185 +8.446988 +8.450790 +8.454592 +8.458395 +8.462197 +8.466000 +8.469802 +8.473604 +8.477407 +8.481209 +8.485012 +8.488814 +8.492616 +8.496419 +8.500221 +8.504023 +8.507826 +8.511628 +8.515431 +8.519233 +8.523035 +8.526838 +8.530640 +8.534442 +8.538245 +8.542047 +8.545850 +8.549652 +8.553454 +8.557257 +8.561059 +8.564861 +8.568664 +8.572466 +8.576269 +8.580071 +8.583873 +8.587676 +8.591478 +8.595281 +8.599083 +8.602885 +8.606688 +8.610490 +8.614292 +8.618095 +8.621897 +8.625700 +8.629502 +8.633304 +8.637107 +8.640909 +8.644711 +8.648514 +8.652316 +8.656119 +8.659921 +8.663723 +8.667526 +8.671328 +8.675131 +8.678933 +8.682735 +8.686538 +8.690340 +8.694142 +8.697945 +8.701747 +8.705550 +8.709352 +8.713154 +8.716957 +8.720759 +8.724561 +8.728364 +8.732166 +8.735969 +8.739771 +8.743573 +8.747376 +8.751178 +8.754980 +8.758783 +8.762585 +8.766388 +8.770190 +8.773992 +8.777795 +8.781597 +8.785400 +8.789202 +8.793004 +8.796807 +8.800609 +8.804411 +8.808214 +8.812016 +8.815819 +8.819621 +8.823423 +8.827226 +8.831028 +8.834830 +8.838633 +8.842435 +8.846238 +8.850040 +8.853842 +8.857645 +8.861447 +8.865250 +8.869052 +8.872854 +8.876657 +8.880459 +8.884261 +8.888064 +8.891866 +8.895669 +8.899471 +8.903273 +8.907076 +8.910878 +8.914680 +8.918483 +8.922285 +8.926088 +8.929890 +8.933692 +8.937495 +8.941297 +8.945100 +8.948902 +8.952704 +8.956507 +8.960309 +8.964111 +8.967914 +8.971716 +8.975519 +8.979321 +8.983123 +8.986926 +8.990728 +8.994530 +8.998333 +9.002135 +9.005938 +9.009740 +9.013542 +9.017345 +9.021147 +9.024949 +9.028752 +9.032554 +9.036357 +9.040159 +9.043961 +9.047764 +9.051566 +9.055369 +9.059171 +9.062973 +9.066776 +9.070578 +9.074380 +9.078183 +9.081985 +9.085788 +9.089590 +9.093392 +9.097195 +9.100997 +9.104799 +9.108602 +9.112404 +9.116207 +9.120009 +9.123811 +9.127614 +9.131416 +9.135219 +9.139021 +9.142823 +9.146626 +9.150428 +9.154230 +9.158033 +9.161835 +9.165638 +9.169440 +9.173242 +9.177045 +9.180847 +9.184649 +9.188452 +9.192254 +9.196057 +9.199859 +9.203661 +9.207464 +9.211266 +9.215069 +9.218871 +9.222673 +9.226476 +9.230278 +9.234080 +9.237883 +9.241685 +9.245488 +9.249290 +9.253092 +9.256895 +9.260697 +9.264499 +9.268302 +9.272104 +9.275907 +9.279709 +9.283511 +9.287314 +9.291116 +9.294918 +9.298721 +9.302523 +9.306326 +9.310128 +9.313930 +9.317733 +9.321535 +9.325338 +9.329140 +9.332942 +9.336745 +9.340547 +9.344349 +9.348152 +9.351954 +9.355757 +9.359559 +9.363361 +9.367164 +9.370966 +9.374768 +9.378571 +9.382373 +9.386176 +9.389978 +9.393780 +9.397583 +9.401385 +9.405188 +9.408990 +9.412792 +9.416595 +9.420397 +9.424199 +9.428002 +9.431804 +9.435607 +9.439409 +9.443211 +9.447014 +9.450816 +9.454618 +9.458421 +9.462223 +9.466026 +9.469828 +9.473630 +9.477433 +9.481235 +9.485038 +9.488840 +9.492642 +9.496445 +9.500247 +9.504049 +9.507852 +9.511654 +9.515457 +9.519259 +9.523061 +9.526864 +9.530666 +9.534468 +9.538271 +9.542073 +9.545876 +9.549678 +9.553480 +9.557283 +9.561085 +9.564887 +9.568690 +9.572492 +9.576295 +9.580097 +9.583899 +9.587702 +9.591504 +9.595307 +9.599109 +9.602911 +9.606714 +9.610516 +9.614318 +9.618121 +9.621923 +9.625726 +9.629528 +9.633330 +9.637133 +9.640935 +9.644737 +9.648540 +9.652342 +9.656145 +9.659947 +9.663749 +9.667552 +9.671354 +9.675157 +9.678959 +9.682761 +9.686564 +9.690366 +9.694168 +9.697971 +9.701773 +9.705576 +9.709378 +9.713180 +9.716983 +9.720785 +9.724587 +9.728390 +9.732192 +9.735995 +9.739797 +9.743599 +9.747402 +9.751204 +9.755007 +9.758809 +9.762611 +9.766414 +9.770216 +9.774018 +9.777821 +9.781623 +9.785426 +9.789228 +9.793030 +9.796833 +9.800635 +9.804437 +9.808240 +9.812042 +9.815845 +9.819647 +9.823449 +9.827252 +9.831054 +9.834856 +9.838659 +9.842461 +9.846264 +9.850066 +9.853868 +9.857671 +9.861473 +9.865276 +9.869078 +9.872880 +9.876683 +9.880485 +9.884287 +9.888090 +9.891892 +9.895695 +9.899497 +9.903299 +9.907102 +9.910904 +9.914706 +9.918509 +9.922311 +9.926114 +9.929916 +9.933718 +9.937521 +9.941323 +9.945126 +9.948928 +9.952730 +9.956533 +9.960335 +9.964137 +9.967940 +9.971742 +9.975545 +9.979347 +9.983149 +9.986952 +9.990754 +9.994556 +9.998359 +10.002161 +10.005964 +10.009766 +10.013568 +10.017371 +10.021173 +10.024975 +10.028778 +10.032580 +10.036383 +10.040185 +10.043987 +10.047790 +10.051592 +10.055395 +10.059197 +10.062999 +10.066802 +10.070604 +10.074406 +10.078209 +10.082011 +10.085814 +10.089616 +10.093418 +10.097221 +10.101023 +10.104825 +10.108628 +10.112430 +10.116233 +10.120035 +10.123837 +10.127640 +10.131442 +10.135245 +10.139047 +10.142849 +10.146652 +10.150454 +10.154256 +10.158059 +10.161861 +10.165664 +10.169466 +10.173268 +10.177071 +10.180873 +10.184675 +10.188478 +10.192280 +10.196083 +10.199885 +10.203687 +10.207490 +10.211292 +10.215095 +10.218897 +10.222699 +10.226502 +10.230304 +10.234106 +10.237909 +10.241711 +10.245514 +10.249316 +10.253118 +10.256921 +10.260723 +10.264525 +10.268328 +10.272130 +10.275933 +10.279735 +10.283537 +10.287340 +10.291142 +10.294944 +10.298747 +10.302549 +10.306352 +10.310154 +10.313956 +10.317759 +10.321561 +10.325364 +10.329166 +10.332968 +10.336771 +10.340573 +10.344375 +10.348178 +10.351980 +10.355783 +10.359585 +10.363387 +10.367190 +10.370992 +10.374794 +10.378597 +10.382399 +10.386202 +10.390004 +10.393806 +10.397609 +10.401411 +10.405214 +10.409016 +10.412818 +10.416621 +10.420423 +10.424225 +10.428028 +10.431830 +10.435633 +10.439435 +10.443237 +10.447040 +10.450842 +10.454644 +10.458447 +10.462249 +10.466052 +10.469854 +10.473656 +10.477459 +10.481261 +10.485064 +10.488866 +10.492668 +10.496471 +10.500273 +10.504075 +10.507878 +10.511680 +10.515483 +10.519285 +10.523087 +10.526890 +10.530692 +10.534494 +10.538297 +10.542099 +10.545902 +10.549704 +10.553506 +10.557309 +10.561111 +10.564913 +10.568716 +10.572518 +10.576321 +10.580123 +10.583925 +10.587728 +10.591530 +10.595333 +10.599135 +10.602937 +10.606740 +10.610542 +10.614344 +10.618147 +10.621949 +10.625752 +10.629554 +10.633356 +10.637159 +10.640961 +10.644763 +10.648566 +10.652368 +10.656171 +10.659973 +10.663775 +10.667578 +10.671380 +10.675183 +10.678985 +10.682787 +10.686590 +10.690392 +10.694194 +10.697997 +10.701799 +10.705602 +10.709404 +10.713206 +10.717009 +10.720811 +10.724613 +10.728416 +10.732218 +10.736021 +10.739823 +10.743625 +10.747428 +10.751230 +10.755033 +10.758835 +10.762637 +10.766440 +10.770242 +10.774044 +10.777847 +10.781649 +10.785452 +10.789254 +10.793056 +10.796859 +10.800661 +10.804463 +10.808266 +10.812068 +10.815871 +10.819673 +10.823475 +10.827278 +10.831080 +10.834882 +10.838685 +10.842487 +10.846290 +10.850092 +10.853894 +10.857697 +10.861499 +10.865302 +10.869104 +10.872906 +10.876709 +10.880511 +10.884313 +10.888116 +10.891918 +10.895721 +10.899523 +10.903325 +10.907128 +10.910930 +10.914732 +10.918535 +10.922337 +10.926140 +10.929942 +10.933744 +10.937547 +10.941349 +10.945152 +10.948954 +10.952756 +10.956559 +10.960361 +10.964163 +10.967966 +10.971768 +10.975571 +10.979373 +10.983175 +10.986978 +10.990780 +10.994582 +10.998385 +11.002187 +11.005990 +11.009792 +11.013594 +11.017397 +11.021199 +11.025002 +11.028804 +11.032606 +11.036409 +11.040211 +11.044013 +11.047816 +11.051618 +11.055421 +11.059223 +11.063025 +11.066828 +11.070630 +11.074432 +11.078235 +11.082037 +11.085840 +11.089642 +11.093444 +11.097247 +11.101049 +11.104851 +11.108654 +11.112456 +11.116259 +11.120061 +11.123863 +11.127666 +11.131468 +11.135271 +11.139073 +11.142875 +11.146678 +11.150480 +11.154282 +11.158085 +11.161887 +11.165690 +11.169492 +11.173294 +11.177097 +11.180899 +11.184701 +11.188504 +11.192306 +11.196109 +11.199911 +11.203713 +11.207516 +11.211318 +11.215121 +11.218923 +11.222725 +11.226528 +11.230330 +11.234132 +11.237935 +11.241737 +11.245540 +11.249342 +11.253144 +11.256947 +11.260749 +11.264551 +11.268354 +11.272156 +11.275959 +11.279761 +11.283563 +11.287366 +11.291168 +11.294970 +11.298773 +11.302575 +11.306378 +11.310180 +11.313982 +11.317785 +11.321587 +11.325390 +11.329192 +11.332994 +11.336797 +11.340599 +11.344401 +11.348204 +11.352006 +11.355809 +11.359611 +11.363413 +11.367216 +11.371018 +11.374820 +11.378623 +11.382425 +11.386228 +11.390030 +11.393832 +11.397635 +11.401437 +11.405240 +11.409042 +11.412844 +11.416647 +11.420449 +11.424251 +11.428054 +11.431856 +11.435659 +11.439461 +11.443263 +11.447066 +11.450868 +11.454670 +11.458473 +11.462275 +11.466078 +11.469880 +11.473682 +11.477485 +11.481287 +11.485090 +11.488892 +11.492694 +11.496497 +11.500299 +11.504101 +11.507904 +11.511706 +11.515509 +11.519311 +11.523113 +11.526916 +11.530718 +11.534520 +11.538323 +11.542125 +11.545928 +11.549730 +11.553532 +11.557335 +11.561137 +11.564939 +11.568742 +11.572544 +11.576347 +11.580149 +11.583951 +11.587754 +11.591556 +11.595359 +11.599161 +11.602963 +11.606766 +11.610568 +11.614370 +11.618173 +11.621975 +11.625778 +11.629580 +11.633382 +11.637185 +11.640987 +11.644789 +11.648592 +11.652394 +11.656197 +11.659999 +11.663801 +11.667604 +11.671406 +11.675209 +11.679011 +11.682813 +11.686616 +11.690418 +11.694220 +11.698023 +11.701825 +11.705628 +11.709430 +11.713232 +11.717035 +11.720837 +11.724639 +11.728442 +11.732244 +11.736047 +11.739849 +11.743651 +11.747454 +11.751256 +11.755059 +11.758861 +11.762663 +11.766466 +11.770268 +11.774070 +11.777873 +11.781675 +11.785478 +11.789280 +11.793082 +11.796885 +11.800687 +11.804489 +11.808292 +11.812094 +11.815897 +11.819699 +11.823501 +11.827304 +11.831106 +11.834908 +11.838711 +11.842513 +11.846316 +11.850118 +11.853920 +11.857723 +11.861525 +11.865328 +11.869130 +11.872932 +11.876735 +11.880537 +11.884339 +11.888142 +11.891944 +11.895747 +11.899549 +11.903351 +11.907154 +11.910956 +11.914758 +11.918561 +11.922363 +11.926166 +11.929968 +11.933770 +11.937573 +11.941375 +11.945178 +11.948980 +11.952782 +11.956585 +11.960387 +11.964189 +11.967992 +11.971794 +11.975597 +11.979399 +11.983201 +11.987004 +11.990806 +11.994608 +11.998411 +12.002213 +12.006016 +12.009818 +12.013620 +12.017423 +12.021225 +12.025028 +12.028830 +12.032632 +12.036435 +12.040237 +12.044039 +12.047842 +12.051644 +12.055447 +12.059249 +12.063051 +12.066854 +12.070656 +12.074458 +12.078261 +12.082063 +12.085866 +12.089668 +12.093470 +12.097273 +12.101075 +12.104877 +12.108680 +12.112482 +12.116285 +12.120087 +12.123889 +12.127692 +12.131494 +12.135297 +12.139099 +12.142901 +12.146704 +12.150506 +12.154308 +12.158111 +12.161913 +12.165716 +12.169518 +12.173320 +12.177123 +12.180925 +12.184727 +12.188530 +12.192332 +12.196135 +12.199937 +12.203739 +12.207542 +12.211344 +12.215147 +12.218949 +12.222751 +12.226554 +12.230356 +12.234158 +12.237961 +12.241763 +12.245566 +12.249368 +12.253170 +12.256973 +12.260775 +12.264577 +12.268380 +12.272182 +12.275985 +12.279787 +12.283589 +12.287392 +12.291194 +12.294996 +12.298799 +12.302601 +12.306404 +12.310206 +12.314008 +12.317811 +12.321613 +12.325416 +12.329218 +12.333020 +12.336823 +12.340625 +12.344427 +12.348230 +12.352032 +12.355835 +12.359637 +12.363439 +12.367242 +12.371044 +12.374846 +12.378649 +12.382451 +12.386254 +12.390056 +12.393858 +12.397661 +12.401463 +12.405266 +12.409068 +12.412870 +12.416673 +12.420475 +12.424277 +12.428080 +12.431882 +12.435685 +12.439487 +12.443289 +12.447092 +12.450894 +12.454696 +12.458499 +12.462301 +12.466104 +12.469906 +12.473708 +12.477511 +12.481313 +12.485116 +12.488918 +12.492720 +12.496523 +12.500325 +12.504127 +12.507930 +12.511732 +12.515535 +12.519337 +12.523139 +12.526942 +12.530744 +12.534546 +12.538349 +12.542151 +12.545954 +12.549756 +12.553558 +12.557361 +12.561163 +12.564965 +12.568768 +12.572570 +12.576373 +12.580175 +12.583977 +12.587780 +12.591582 +12.595385 +12.599187 +12.602989 +12.606792 +12.610594 +12.614396 +12.618199 +12.622001 +12.625804 +12.629606 +12.633408 +12.637211 +12.641013 +12.644815 +12.648618 +12.652420 +12.656223 +12.660025 +12.663827 +12.667630 +12.671432 +12.675235 +12.679037 +12.682839 +12.686642 +12.690444 +12.694246 +12.698049 +12.701851 +12.705654 +12.709456 +12.713258 +12.717061 +12.720863 +12.724665 +12.728468 +12.732270 +12.736073 +12.739875 +12.743677 +12.747480 +12.751282 +12.755085 +12.758887 +12.762689 +12.766492 +12.770294 +12.774096 +12.777899 +12.781701 +12.785504 +12.789306 +12.793108 +12.796911 +12.800713 +12.804515 +12.808318 +12.812120 +12.815923 +12.819725 +12.823527 +12.827330 +12.831132 +12.834934 +12.838737 +12.842539 +12.846342 +12.850144 +12.853946 +12.857749 +12.861551 +12.865354 +12.869156 +12.872958 +12.876761 +12.880563 +12.884365 +12.888168 +12.891970 +12.895773 +12.899575 +12.903377 +12.907180 +12.910982 +12.914784 +12.918587 +12.922389 +12.926192 +12.929994 +12.933796 +12.937599 +12.941401 +12.945204 +12.949006 +12.952808 +12.956611 +12.960413 +12.964215 +12.968018 +12.971820 +12.975623 +12.979425 +12.983227 +12.987030 +12.990832 +12.994634 +12.998437 +13.002239 +13.006042 +13.009844 +13.013646 +13.017449 +13.021251 +13.025054 +13.028856 +13.032658 +13.036461 +13.040263 +13.044065 +13.047868 +13.051670 +13.055473 +13.059275 +13.063077 +13.066880 +13.070682 +13.074484 +13.078287 +13.082089 +13.085892 +13.089694 +13.093496 +13.097299 +13.101101 +13.104903 +13.108706 +13.112508 +13.116311 +13.120113 +13.123915 +13.127718 +13.131520 +13.135323 +13.139125 +13.142927 +13.146730 +13.150532 +13.154334 +13.158137 +13.161939 +13.165742 +13.169544 +13.173346 +13.177149 +13.180951 +13.184753 +13.188556 +13.192358 +13.196161 +13.199963 +13.203765 +13.207568 +13.211370 +13.215173 +13.218975 +13.222777 +13.226580 +13.230382 +13.234184 +13.237987 +13.241789 +13.245592 +13.249394 +13.253196 +13.256999 +13.260801 +13.264603 +13.268406 +13.272208 +13.276011 +13.279813 +13.283615 +13.287418 +13.291220 +13.295023 +13.298825 +13.302627 +13.306430 +13.310232 +13.314034 +13.317837 +13.321639 +13.325442 +13.329244 +13.333046 +13.336849 +13.340651 +13.344453 +13.348256 +13.352058 +13.355861 +13.359663 +13.363465 +13.367268 +13.371070 +13.374872 +13.378675 +13.382477 +13.386280 +13.390082 +13.393884 +13.397687 +13.401489 +13.405292 +13.409094 +13.412896 +13.416699 +13.420501 +13.424303 +13.428106 +13.431908 +13.435711 +13.439513 +13.443315 +13.447118 +13.450920 +13.454722 +13.458525 +13.462327 +13.466130 +13.469932 +13.473734 +13.477537 +13.481339 +13.485142 +13.488944 +13.492746 +13.496549 +13.500351 +13.504153 +13.507956 +13.511758 +13.515561 +13.519363 +13.523165 +13.526968 +13.530770 +13.534572 +13.538375 +13.542177 +13.545980 +13.549782 +13.553584 +13.557387 +13.561189 +13.564991 +13.568794 +13.572596 +13.576399 +13.580201 +13.584003 +13.587806 +13.591608 +13.595411 +13.599213 +13.603015 +13.606818 +13.610620 +13.614422 +13.618225 +13.622027 +13.625830 +13.629632 +13.633434 +13.637237 +13.641039 +13.644841 +13.648644 +13.652446 +13.656249 +13.660051 +13.663853 +13.667656 +13.671458 +13.675261 +13.679063 +13.682865 +13.686668 +13.690470 +13.694272 +13.698075 +13.701877 +13.705680 +13.709482 +13.713284 +13.717087 +13.720889 +13.724691 +13.728494 +13.732296 +13.736099 +13.739901 +13.743703 +13.747506 +13.751308 +13.755111 +13.758913 +13.762715 +13.766518 +13.770320 +13.774122 +13.777925 +13.781727 +13.785530 +13.789332 +13.793134 +13.796937 +13.800739 +13.804541 +13.808344 +13.812146 +13.815949 +13.819751 +13.823553 +13.827356 +13.831158 +13.834960 +13.838763 +13.842565 +13.846368 +13.850170 +13.853972 +13.857775 +13.861577 +13.865380 +13.869182 +13.872984 +13.876787 +13.880589 +13.884391 +13.888194 +13.891996 +13.895799 +13.899601 +13.903403 +13.907206 +13.911008 +13.914810 +13.918613 +13.922415 +13.926218 +13.930020 +13.933822 +13.937625 +13.941427 +13.945230 +13.949032 +13.952834 +13.956637 +13.960439 +13.964241 +13.968044 +13.971846 +13.975649 +13.979451 +13.983253 +13.987056 +13.990858 +13.994660 +13.998463 +14.002265 +14.006068 +14.009870 +14.013672 +14.017475 +14.021277 +14.025080 +14.028882 +14.032684 +14.036487 +14.040289 +14.044091 +14.047894 +14.051696 +14.055499 +14.059301 +14.063103 +14.066906 +14.070708 +14.074510 +14.078313 +14.082115 +14.085918 +14.089720 +14.093522 +14.097325 +14.101127 +14.104929 +14.108732 +14.112534 +14.116337 +14.120139 +14.123941 +14.127744 +14.131546 +14.135349 +14.139151 +14.142953 +14.146756 +14.150558 +14.154360 +14.158163 +14.161965 +14.165768 +14.169570 +14.173372 +14.177175 +14.180977 +14.184779 +14.188582 +14.192384 +14.196187 +14.199989 +14.203791 +14.207594 +14.211396 +14.215199 +14.219001 +14.222803 +14.226606 +14.230408 +14.234210 +14.238013 +14.241815 +14.245618 +14.249420 +14.253222 +14.257025 +14.260827 +14.264629 +14.268432 +14.272234 +14.276037 +14.279839 +14.283641 +14.287444 +14.291246 +14.295049 +14.298851 +14.302653 +14.306456 +14.310258 +14.314060 +14.317863 +14.321665 +14.325468 +14.329270 +14.333072 +14.336875 +14.340677 +14.344479 +14.348282 +14.352084 +14.355887 +14.359689 +14.363491 +14.367294 +14.371096 +14.374898 +14.378701 +14.382503 +14.386306 +14.390108 +14.393910 +14.397713 +14.401515 +14.405318 +14.409120 +14.412922 +14.416725 +14.420527 +14.424329 +14.428132 +14.431934 +14.435737 +14.439539 +14.443341 +14.447144 +14.450946 +14.454748 +14.458551 +14.462353 +14.466156 +14.469958 +14.473760 +14.477563 +14.481365 +14.485168 +14.488970 +14.492772 +14.496575 +14.500377 +14.504179 +14.507982 +14.511784 +14.515587 +14.519389 +14.523191 +14.526994 +14.530796 +14.534598 +14.538401 +14.542203 +14.546006 +14.549808 +14.553610 +14.557413 +14.561215 +14.565018 +14.568820 +14.572622 +14.576425 +14.580227 +14.584029 +14.587832 +14.591634 +14.595437 +14.599239 +14.603041 +14.606844 +14.610646 +14.614448 +14.618251 +14.622053 +14.625856 +14.629658 +14.633460 +14.637263 +14.641065 +14.644867 +14.648670 +14.652472 +14.656275 +14.660077 +14.663879 +14.667682 +14.671484 +14.675287 +14.679089 +14.682891 +14.686694 +14.690496 +14.694298 +14.698101 +14.701903 +14.705706 +14.709508 +14.713310 +14.717113 +14.720915 +14.724717 +14.728520 +14.732322 +14.736125 +14.739927 +14.743729 +14.747532 +14.751334 +14.755137 +14.758939 +14.762741 +14.766544 +14.770346 +14.774148 +14.777951 +14.781753 +14.785556 +14.789358 +14.793160 +14.796963 +14.800765 +14.804567 +14.808370 +14.812172 +14.815975 +14.819777 +14.823579 +14.827382 +14.831184 +14.834986 +14.838789 +14.842591 +14.846394 +14.850196 +14.853998 +14.857801 +14.861603 +14.865406 +14.869208 +14.873010 +14.876813 +14.880615 +14.884417 +14.888220 +14.892022 +14.895825 +14.899627 +14.903429 +14.907232 +14.911034 +14.914836 +14.918639 +14.922441 +14.926244 +14.930046 +14.933848 +14.937651 +14.941453 +14.945256 +14.949058 +14.952860 +14.956663 +14.960465 +14.964267 +14.968070 +14.971872 +14.975675 +14.979477 +14.983279 +14.987082 +14.990884 +14.994686 +14.998489 +15.002291 +15.006094 +15.009896 +15.013698 +15.017501 +15.021303 +15.025106 +15.028908 +15.032710 +15.036513 +15.040315 +15.044117 +15.047920 +15.051722 +15.055525 +15.059327 +15.063129 +15.066932 +15.070734 +15.074536 +15.078339 +15.082141 +15.085944 +15.089746 +15.093548 +15.097351 +15.101153 +15.104955 +15.108758 +15.112560 +15.116363 +15.120165 +15.123967 +15.127770 +15.131572 +15.135375 +15.139177 +15.142979 +15.146782 +15.150584 +15.154386 +15.158189 +15.161991 +15.165794 +15.169596 +15.173398 +15.177201 +15.181003 +15.184805 +15.188608 +15.192410 +15.196213 +15.200015 +15.203817 +15.207620 +15.211422 +15.215225 +15.219027 +15.222829 +15.226632 +15.230434 +15.234236 +15.238039 +15.241841 +15.245644 +15.249446 +15.253248 +15.257051 +15.260853 +15.264655 +15.268458 +15.272260 +15.276063 +15.279865 +15.283667 +15.287470 +15.291272 +15.295075 +15.298877 +15.302679 +15.306482 +15.310284 +15.314086 +15.317889 +15.321691 +15.325494 +15.329296 +15.333098 +15.336901 +15.340703 +15.344505 +15.348308 +15.352110 +15.355913 +15.359715 +15.363517 +15.367320 +15.371122 +15.374924 +15.378727 +15.382529 +15.386332 +15.390134 +15.393936 +15.397739 +15.401541 +15.405344 +15.409146 +15.412948 +15.416751 +15.420553 +15.424355 +15.428158 +15.431960 +15.435763 +15.439565 +15.443367 +15.447170 +15.450972 +15.454774 +15.458577 +15.462379 +15.466182 +15.469984 +15.473786 +15.477589 +15.481391 +15.485194 +15.488996 +15.492798 +15.496601 +15.500403 +15.504205 +15.508008 +15.511810 +15.515613 +15.519415 +15.523217 +15.527020 +15.530822 +15.534624 +15.538427 +15.542229 +15.546032 +15.549834 +15.553636 +15.557439 +15.561241 +15.565044 +15.568846 +15.572648 +15.576451 +15.580253 +15.584055 +15.587858 +15.591660 +15.595463 +15.599265 +15.603067 +15.606870 +15.610672 +15.614474 +15.618277 +15.622079 +15.625882 +15.629684 +15.633486 +15.637289 +15.641091 +15.644893 +15.648696 +15.652498 +15.656301 +15.660103 +15.663905 +15.667708 +15.671510 +15.675313 +15.679115 +15.682917 +15.686720 +15.690522 +15.694324 +15.698127 +15.701929 +15.705732 +15.709534 +15.713336 +15.717139 +15.720941 +15.724743 +15.728546 +15.732348 +15.736151 +15.739953 +15.743755 +15.747558 +15.751360 +15.755163 +15.758965 +15.762767 +15.766570 +15.770372 +15.774174 +15.777977 +15.781779 +15.785582 +15.789384 +15.793186 +15.796989 +15.800791 +15.804593 +15.808396 +15.812198 +15.816001 +15.819803 +15.823605 +15.827408 +15.831210 +15.835013 +15.838815 +15.842617 +15.846420 +15.850222 +15.854024 +15.857827 +15.861629 +15.865432 +15.869234 +15.873036 +15.876839 +15.880641 +15.884443 +15.888246 +15.892048 +15.895851 +15.899653 +15.903455 +15.907258 +15.911060 +15.914862 +15.918665 +15.922467 +15.926270 +15.930072 +15.933874 +15.937677 +15.941479 +15.945282 +15.949084 +15.952886 +15.956689 +15.960491 +15.964293 +15.968096 +15.971898 +15.975701 +15.979503 +15.983305 +15.987108 +15.990910 +15.994712 +15.998515 +16.002317 +16.006120 +16.009922 +16.013724 +16.017527 +16.021329 +16.025132 +16.028934 +16.032736 +16.036539 +16.040341 +16.044143 +16.047946 +16.051748 +16.055551 +16.059353 +16.063155 +16.066958 +16.070760 +16.074562 +16.078365 +16.082167 +16.085970 +16.089772 +16.093574 +16.097377 +16.101179 +16.104981 +16.108784 +16.112586 +16.116389 +16.120191 +16.123993 +16.127796 +16.131598 +16.135401 +16.139203 +16.143005 +16.146808 +16.150610 +16.154412 +16.158215 +16.162017 +16.165820 +16.169622 +16.173424 +16.177227 +16.181029 +16.184831 +16.188634 +16.192436 +16.196239 +16.200041 +16.203843 +16.207646 +16.211448 +16.215251 +16.219053 +16.222855 +16.226658 +16.230460 +16.234262 +16.238065 +16.241867 +16.245670 +16.249472 +16.253274 +16.257077 +16.260879 +16.264681 +16.268484 +16.272286 +16.276089 +16.279891 +16.283693 +16.287496 +16.291298 +16.295101 +16.298903 +16.302705 +16.306508 +16.310310 +16.314112 +16.317915 +16.321717 +16.325520 +16.329322 +16.333124 +16.336927 +16.340729 +16.344531 +16.348334 +16.352136 +16.355939 +16.359741 +16.363543 +16.367346 +16.371148 +16.374950 +16.378753 +16.382555 +16.386358 +16.390160 +16.393962 +16.397765 +16.401567 +16.405370 +16.409172 +16.412974 +16.416777 +16.420579 +16.424381 +16.428184 +16.431986 +16.435789 +16.439591 +16.443393 +16.447196 +16.450998 +16.454800 +16.458603 +16.462405 +16.466208 +16.470010 +16.473812 +16.477615 +16.481417 +16.485220 +16.489022 +16.492824 +16.496627 +16.500429 +16.504231 +16.508034 +16.511836 +16.515639 +16.519441 +16.523243 +16.527046 +16.530848 +16.534650 +16.538453 +16.542255 +16.546058 +16.549860 +16.553662 +16.557465 +16.561267 +16.565070 +16.568872 +16.572674 +16.576477 +16.580279 +16.584081 +16.587884 +16.591686 +16.595489 +16.599291 +16.603093 +16.606896 +16.610698 +16.614500 +16.618303 +16.622105 +16.625908 +16.629710 +16.633512 +16.637315 +16.641117 +16.644919 +16.648722 +16.652524 +16.656327 +16.660129 +16.663931 +16.667734 +16.671536 +16.675339 +16.679141 +16.682943 +16.686746 +16.690548 +16.694350 +16.698153 +16.701955 +16.705758 +16.709560 +16.713362 +16.717165 +16.720967 +16.724769 +16.728572 +16.732374 +16.736177 +16.739979 +16.743781 +16.747584 +16.751386 +16.755189 +16.758991 +16.762793 +16.766596 +16.770398 +16.774200 +16.778003 +16.781805 +16.785608 +16.789410 +16.793212 +16.797015 +16.800817 +16.804619 +16.808422 +16.812224 +16.816027 +16.819829 +16.823631 +16.827434 +16.831236 +16.835039 +16.838841 +16.842643 +16.846446 +16.850248 +16.854050 +16.857853 +16.861655 +16.865458 +16.869260 +16.873062 +16.876865 +16.880667 +16.884469 +16.888272 +16.892074 +16.895877 +16.899679 +16.903481 +16.907284 +16.911086 +16.914888 +16.918691 +16.922493 +16.926296 +16.930098 +16.933900 +16.937703 +16.941505 +16.945308 +16.949110 +16.952912 +16.956715 +16.960517 +16.964319 +16.968122 +16.971924 +16.975727 +16.979529 +16.983331 +16.987134 +16.990936 +16.994738 +16.998541 +17.002343 +17.006146 +17.009948 +17.013750 +17.017553 +17.021355 +17.025158 +17.028960 +17.032762 +17.036565 +17.040367 +17.044169 +17.047972 +17.051774 +17.055577 +17.059379 +17.063181 +17.066984 +17.070786 +17.074588 +17.078391 +17.082193 +17.085996 +17.089798 +17.093600 +17.097403 +17.101205 +17.105008 +17.108810 +17.112612 +17.116415 +17.120217 +17.124019 +17.127822 +17.131624 +17.135427 +17.139229 +17.143031 +17.146834 +17.150636 +17.154438 +17.158241 +17.162043 +17.165846 +17.169648 +17.173450 +17.177253 +17.181055 +17.184857 +17.188660 +17.192462 +17.196265 +17.200067 +17.203869 +17.207672 +17.211474 +17.215277 +17.219079 +17.222881 +17.226684 +17.230486 +17.234288 +17.238091 +17.241893 +17.245696 +17.249498 +17.253300 +17.257103 +17.260905 +17.264707 +17.268510 +17.272312 +17.276115 +17.279917 +17.283719 +17.287522 +17.291324 +17.295127 +17.298929 +17.302731 +17.306534 +17.310336 +17.314138 +17.317941 +17.321743 +17.325546 +17.329348 +17.333150 +17.336953 +17.340755 +17.344557 +17.348360 +17.352162 +17.355965 +17.359767 +17.363569 +17.367372 +17.371174 +17.374976 +17.378779 +17.382581 +17.386384 +17.390186 +17.393988 +17.397791 +17.401593 +17.405396 +17.409198 +17.413000 +17.416803 +17.420605 +17.424407 +17.428210 +17.432012 +17.435815 +17.439617 +17.443419 +17.447222 +17.451024 +17.454826 +17.458629 +17.462431 +17.466234 +17.470036 +17.473838 +17.477641 +17.481443 +17.485246 +17.489048 +17.492850 +17.496653 +17.500455 +17.504257 +17.508060 +17.511862 +17.515665 +17.519467 +17.523269 +17.527072 +17.530874 +17.534676 +17.538479 +17.542281 +17.546084 +17.549886 +17.553688 +17.557491 +17.561293 +17.565096 +17.568898 +17.572700 +17.576503 +17.580305 +17.584107 +17.587910 +17.591712 +17.595515 +17.599317 +17.603119 +17.606922 +17.610724 +17.614526 +17.618329 +17.622131 +17.625934 +17.629736 +17.633538 +17.637341 +17.641143 +17.644945 +17.648748 +17.652550 +17.656353 +17.660155 +17.663957 +17.667760 +17.671562 +17.675365 +17.679167 +17.682969 +17.686772 +17.690574 +17.694376 +17.698179 +17.701981 +17.705784 +17.709586 +17.713388 +17.717191 +17.720993 +17.724795 +17.728598 +17.732400 +17.736203 +17.740005 +17.743807 +17.747610 +17.751412 +17.755215 +17.759017 +17.762819 +17.766622 +17.770424 +17.774226 +17.778029 +17.781831 +17.785634 +17.789436 +17.793238 +17.797041 +17.800843 +17.804645 +17.808448 +17.812250 +17.816053 +17.819855 +17.823657 +17.827460 +17.831262 +17.835065 +17.838867 +17.842669 +17.846472 +17.850274 +17.854076 +17.857879 +17.861681 +17.865484 +17.869286 +17.873088 +17.876891 +17.880693 +17.884495 +17.888298 +17.892100 +17.895903 +17.899705 +17.903507 +17.907310 +17.911112 +17.914914 +17.918717 +17.922519 +17.926322 +17.930124 +17.933926 +17.937729 +17.941531 +17.945334 +17.949136 +17.952938 +17.956741 +17.960543 +17.964345 +17.968148 +17.971950 +17.975753 +17.979555 +17.983357 +17.987160 +17.990962 +17.994764 +17.998567 +18.002369 +18.006172 +18.009974 +18.013776 +18.017579 +18.021381 +18.025184 +18.028986 +18.032788 +18.036591 +18.040393 +18.044195 +18.047998 +18.051800 +18.055603 +18.059405 +18.063207 +18.067010 +18.070812 +18.074614 +18.078417 +18.082219 +18.086022 +18.089824 +18.093626 +18.097429 +18.101231 +18.105034 +18.108836 +18.112638 +18.116441 +18.120243 +18.124045 +18.127848 +18.131650 +18.135453 +18.139255 +18.143057 +18.146860 +18.150662 +18.154464 +18.158267 +18.162069 +18.165872 +18.169674 +18.173476 +18.177279 +18.181081 +18.184883 +18.188686 +18.192488 +18.196291 +18.200093 +18.203895 +18.207698 +18.211500 +18.215303 +18.219105 +18.222907 +18.226710 +18.230512 +18.234314 +18.238117 +18.241919 +18.245722 +18.249524 +18.253326 +18.257129 +18.260931 +18.264733 +18.268536 +18.272338 +18.276141 +18.279943 +18.283745 +18.287548 +18.291350 +18.295153 +18.298955 +18.302757 +18.306560 +18.310362 +18.314164 +18.317967 +18.321769 +18.325572 +18.329374 +18.333176 +18.336979 +18.340781 +18.344583 +18.348386 +18.352188 +18.355991 +18.359793 +18.363595 +18.367398 +18.371200 +18.375003 +18.378805 +18.382607 +18.386410 +18.390212 +18.394014 +18.397817 +18.401619 +18.405422 +18.409224 +18.413026 +18.416829 +18.420631 +18.424433 +18.428236 +18.432038 +18.435841 +18.439643 +18.443445 +18.447248 +18.451050 +18.454852 +18.458655 +18.462457 +18.466260 +18.470062 +18.473864 +18.477667 +18.481469 +18.485272 +18.489074 +18.492876 +18.496679 +18.500481 +18.504283 +18.508086 +18.511888 +18.515691 +18.519493 +18.523295 +18.527098 +18.530900 +18.534702 +18.538505 +18.542307 +18.546110 +18.549912 +18.553714 +18.557517 +18.561319 +18.565122 +18.568924 +18.572726 +18.576529 +18.580331 +18.584133 +18.587936 +18.591738 +18.595541 +18.599343 +18.603145 +18.606948 +18.610750 +18.614552 +18.618355 +18.622157 +18.625960 +18.629762 +18.633564 +18.637367 +18.641169 +18.644971 +18.648774 +18.652576 +18.656379 +18.660181 +18.663983 +18.667786 +18.671588 +18.675391 +18.679193 +18.682995 +18.686798 +18.690600 +18.694402 +18.698205 +18.702007 +18.705810 +18.709612 +18.713414 +18.717217 +18.721019 +18.724821 +18.728624 +18.732426 +18.736229 +18.740031 +18.743833 +18.747636 +18.751438 +18.755241 +18.759043 +18.762845 +18.766648 +18.770450 +18.774252 +18.778055 +18.781857 +18.785660 +18.789462 +18.793264 +18.797067 +18.800869 +18.804671 +18.808474 +18.812276 +18.816079 +18.819881 +18.823683 +18.827486 +18.831288 +18.835091 +18.838893 +18.842695 +18.846498 +18.850300 +18.854102 +18.857905 +18.861707 +18.865510 +18.869312 +18.873114 +18.876917 +18.880719 +18.884521 +18.888324 +18.892126 +18.895929 +18.899731 +18.903533 +18.907336 +18.911138 +18.914940 +18.918743 +18.922545 +18.926348 +18.930150 +18.933952 +18.937755 +18.941557 +18.945360 +18.949162 +18.952964 +18.956767 +18.960569 +18.964371 +18.968174 +18.971976 +18.975779 +18.979581 +18.983383 +18.987186 +18.990988 +18.994790 +18.998593 +19.002395 +19.006198 +19.010000 diff --git a/inputFiles/lagrangianContactMechanics/dataTables/y.csv b/inputFiles/lagrangianContactMechanics/dataTables/y.csv new file mode 100644 index 00000000000..1d65b3e555f --- /dev/null +++ b/inputFiles/lagrangianContactMechanics/dataTables/y.csv @@ -0,0 +1 @@ +0.00 \ No newline at end of file diff --git a/inputFiles/lagrangianContactMechanics/dataTables/z.csv b/inputFiles/lagrangianContactMechanics/dataTables/z.csv new file mode 100644 index 00000000000..1d65b3e555f --- /dev/null +++ b/inputFiles/lagrangianContactMechanics/dataTables/z.csv @@ -0,0 +1 @@ +0.00 \ No newline at end of file diff --git a/inputFiles/lagrangianContactMechanics/scripts/fixedFaultSlip.py b/inputFiles/lagrangianContactMechanics/scripts/fixedFaultSlip.py new file mode 100644 index 00000000000..64cbb7e5575 --- /dev/null +++ b/inputFiles/lagrangianContactMechanics/scripts/fixedFaultSlip.py @@ -0,0 +1,213 @@ +import numpy as np +import os +import sys +import xml.etree.ElementTree as ElementTree +import matplotlib +import matplotlib.pyplot as plt +import argparse + +class SingularCrackSlip: + + def __init__(self, mechanicalParameters, length ): + K = mechanicalParameters["bulkModulus"] + G = mechanicalParameters["shearModulus"] + poisson_ratio= (3 * K - 2 * G) / (2 * (3 * K + G)) + + mu_star = G /( 1 - poisson_ratio) + self.tau_0 = 0.0 + self.tau_r = -1.0 + + self.scaling = 2*(self.tau_0 - self.tau_r)/mu_star + self.halfLength = length + + def computeSlip(self, x): + return self.scaling * np.sqrt(self.halfLength**2 - x**2) + + def computeTraction(self, x): + if x < -self.halfLength or x > self.halfLength: + return self.tau_0 + (self.tau_0-self.tau_r) * ( np.abs(x)/np.sqrt(x**2 - self.halfLength**2) - 1 ) + else: + return self.tau_r +class GaussianSlip: + + def __init__(self, peakStrength, length ): + self.scaling = peakStrength + self.halfLength = length + + def computeSlip(self, x): + denom = 1 / (self.halfLength/2) + return self.scaling*np.exp(-0.5*((x)/denom)**2) + +def getMechanicalParametersFromXML(xmlFilePath): + tree = ElementTree.parse(xmlFilePath) + + param = tree.find('Constitutive/ElasticIsotropic') + + mechanicalParameters = dict.fromkeys(["bulkModulus", "shearModulus"]) + mechanicalParameters["bulkModulus"] = float(param.get("defaultBulkModulus")) + mechanicalParameters["shearModulus"] = float(param.get("defaultShearModulus")) + return mechanicalParameters + +def getFractureLengthFromXML(xmlFilePath): + tree = ElementTree.parse(xmlFilePath) + + rectangle = tree.find('Geometry/Box') + xmin = rectangle.get("xMin") + xmax = rectangle.get("xMax") + xmin = [float(i) for i in xmin[1:-1].split(",")] + xmax = [float(i) for i in xmax[1:-1].split(",")] + length = ( xmax[0] - xmin[0] ) / 2 + origin = 0.0 + + return length, origin + +def curve_check_solution(**kwargs): + #-------- Extract info from XML + xmlFilePath = f'./LagrangeContactBubbleStab_FixedSlip_base.xml' + + mechanicalParameters = getMechanicalParametersFromXML(xmlFilePath) + + # Get length of the fracture + xmlFilePath = f'./LagrangeContactBubbleStab_FixedSlip_smoke.xml' + totalHalfLength, originShift = getFractureLengthFromXML(xmlFilePath) + halfLength = 2.0 + + x = kwargs['traction elementCenter'] + x_geos = x[0, :, 0] + + return analytical_solution(x, mechanicalParameters, totalHalfLength, halfLength) + +def analytical_solution(x, mechanicalParameters, totalHalfLength, halfLength): + + singularCrackSlipSolution = SingularCrackSlip(mechanicalParameters, halfLength) + x = np.linspace(-totalHalfLength, totalHalfLength, 10000, endpoint=True) + traction_analytical = np.zeros(len(x)) + i = 0 + for xCell in x: + traction_analytical[i] = singularCrackSlipSolution.computeTraction(xCell) + i += 1 + return traction_analytical + +def plot_traction_solution(inputFileDirectory, outputDirectory): + # Read HDF5 + import hdf5_wrapper + hdf5File1Path = f'outputDirectory/traction.hdf5' + + # Read HDF5 + data = hdf5_wrapper.hdf5_wrapper(hdf5File1Path).get_copy() + traction = data['traction'] + traction = np.asarray(traction) + traction_geos = traction[0, :, 1] + x = data['traction elementCenter'] + x_geos = x[0, :, 0] + + #-------- Extract info from XML + xmlFilePath = f'{inputFileDirectory}/lagrangianContactMechanics/LagrangeContactBubbleStab_FixedSlip_base.xml' + + mechanicalParameters = getMechanicalParametersFromXML(xmlFilePath) + + # Get length of the fracture + xmlFilePath = f'{inputFileDirectory}lagrangianContactMechanics/LagrangeContactBubbleStab_FixedSlip_smoke.xml' + totalHalfLength, originShift = getFractureLengthFromXML(xmlFilePath) + halfLength = 2.0 + + traction_analytical = analytical_solution(x, mechanicalParameters, totalHalfLength, halfLength) + + fsize = 30 + msize = 15 + lw = 2 + fig, ax = plt.subplots(1, figsize=(16, 12)) + cmap = plt.get_cmap("tab10") + + # Plot analytical (continuous line) and numerical (markers) aperture solution + ax.plot(x, traction_analytical, color='r', label='Traction analytical', lw=lw) + ax.plot(x_geos, traction_geos, color='k', label='geos', marker="o", lw=lw) + + ax.set_xlabel('Fault coordinate [m]', size=fsize, weight="bold") + ax.set_ylabel('Shear traction', size=fsize, weight="bold") + ax.legend(bbox_to_anchor=(0.75, 0.9), loc='center', borderaxespad=0., fontsize=fsize) + ax.xaxis.set_tick_params(labelsize=fsize) + ax.yaxis.set_tick_params(labelsize=fsize) + plt.savefig("traction.png") + +def output_tables(x, slip, name): + # Save x to x.csv with one value per row + np.savetxt('x.csv', x, fmt='%f') + + # Save aperture_analytical to jump.csv with one value per row + np.savetxt(f'{name}.csv', slip, fmt='%f') + + +def generate_tables(inputFileDirectory): + #-------- Extract info from XML + xmlFilePath = f'{inputFileDirectory}/lagrangianContactMechanics/LagrangeContactBubbleStab_FixedSlip_base.xml' + + mechanicalParameters = getMechanicalParametersFromXML(xmlFilePath) + appliedPressure = 1.0 + + # Get length of the fracture + xmlFilePath = f'{inputFileDirectory}/lagrangianContactMechanics/LagrangeContactBubbleStab_FixedSlip_smoke.xml' + totalHalfLength, originShift = getFractureLengthFromXML(xmlFilePath) + halfLength = 2.0 + + # Initialize Sneddon's analytical solution + singularCrackSlipSolution = SingularCrackSlip(mechanicalParameters, halfLength ) + peakStrength = 3.0 + gaussianSlipSolution = GaussianSlip( peakStrength, halfLength) + + # Plot analytical (continuous line) and numerical (markers) aperture solution + x = np.linspace(-totalHalfLength, totalHalfLength, 10000, endpoint=True) + singularCrackSlip = np.zeros(len(x)) + gaussianSlip = np.zeros(len(x)) + i = 0 + for xCell in x: + if xCell > -halfLength and xCell < halfLength: + singularCrackSlip[i] = singularCrackSlipSolution.computeSlip(xCell) + gaussianSlip[i] = gaussianSlipSolution.computeSlip(xCell) + i += 1 + + fsize = 24 + msize = 15 + lw = 6 + fig, ax = plt.subplots(1, figsize=(16, 12)) + cmap = plt.get_cmap("tab10") + + ax.plot(x, singularCrackSlip , color='k', label='Analytical Solution', lw=lw) + ax.grid() + ax.set_xlabel('Fault coordinate [m]', size=fsize, weight="bold") + ax.set_ylabel('slip [m]', size=fsize, weight="bold") + ax.legend(bbox_to_anchor=(0.7, 1), loc='center', borderaxespad=0., fontsize=fsize) + ax.xaxis.set_tick_params(labelsize=fsize) + ax.yaxis.set_tick_params(labelsize=fsize) + plt.savefig("singularCrackSlip.png") + + fig, ax = plt.subplots(1, figsize=(16, 12)) + cmap = plt.get_cmap("tab10") + + ax.plot(x, gaussianSlip , color='k', label='Analytical Solution', lw=lw) + ax.grid() + ax.set_xlabel('Fault coordinate [m]', size=fsize, weight="bold") + ax.set_ylabel('slip [m]', size=fsize, weight="bold") + ax.legend(bbox_to_anchor=(0.75, 0.9), loc='center', borderaxespad=0., fontsize=fsize) + ax.xaxis.set_tick_params(labelsize=fsize) + ax.yaxis.set_tick_params(labelsize=fsize) + plt.savefig("gaussianSlip.png") + + output_tables(x, singularCrackSlip, "singularCrackSlip") + output_tables(x, gaussianSlip, "gaussianSlip") + +if __name__ == "__main__": + + parser = argparse.ArgumentParser() + parser.add_argument('-a', '--action', type=str, choices=['generate_tables', 'plotTractions'], required=True, help='Action to perform: generate_tables or plotTractions') + parser.add_argument('-i', '--input-files-path', type=str, required=True, help='Path to the inputFilesFolder') + parser.add_argument('-o', '--output-dir', type=str, help='Directory containing the output files') + + args = parser.parse_args() + + if args.action == 'generate_tables': + print("Generating tables...") + generate_tables(os.path.normpath(args.input_files_path)) + elif args.action == 'plotTractions': + print("Plotting tractions...") + plot_traction_solution(os.path.normpath(args.input_files_path), os.path.normpath(args.output_dir)) diff --git a/inputFiles/lagrangianContactMechanics/scripts/generateTables.py b/inputFiles/lagrangianContactMechanics/scripts/generateTables.py new file mode 100644 index 00000000000..9c83614b2f4 --- /dev/null +++ b/inputFiles/lagrangianContactMechanics/scripts/generateTables.py @@ -0,0 +1,179 @@ +import numpy as np +import os +import sys +import xml.etree.ElementTree as ElementTree +import matplotlib +import matplotlib.pyplot as plt + +class SingularCrackSlip: + + def __init__(self, mechanicalParameters, length ): + K = mechanicalParameters["bulkModulus"] + G = mechanicalParameters["shearModulus"] + poisson_ratio= (3 * K - 2 * G) / (2 * (3 * K + G)) + + mu_star = G /( 1 - poisson_ratio) + self.tau_0 = 0.0 + self.tau_r = -1.0 + + self.scaling = 2*(self.tau_0 - self.tau_r)/mu_star + self.halfLength = length + + def computeSlip(self, x): + return self.scaling * np.sqrt(self.halfLength**2 - x**2) + + def computeTraction(self, x): + if x < -self.halfLength or x > self.halfLength: + return self.tau_0 + (self.tau_0-self.tau_r) * ( np.abs(x)/np.sqrt(x**2 - self.halfLength**2) - 1 ) + else: + return self.tau_r +class GaussianSlip: + + def __init__(self, peakStrength, length ): + self.scaling = peakStrength + self.halfLength = length + + def computeSlip(self, x): + denom = 1 / (self.halfLength/2) + return self.scaling*np.exp(-0.5*((x)/denom)**2) + +def getMechanicalParametersFromXML(xmlFilePath): + tree = ElementTree.parse(xmlFilePath) + + param = tree.find('Constitutive/ElasticIsotropic') + + mechanicalParameters = dict.fromkeys(["bulkModulus", "shearModulus"]) + mechanicalParameters["bulkModulus"] = float(param.get("defaultBulkModulus")) + mechanicalParameters["shearModulus"] = float(param.get("defaultShearModulus")) + return mechanicalParameters + +def getFractureLengthFromXML(xmlFilePath): + tree = ElementTree.parse(xmlFilePath) + + rectangle = tree.find('Geometry/Box') + xmin = rectangle.get("xMin") + xmax = rectangle.get("xMax") + xmin = [float(i) for i in xmin[1:-1].split(",")] + xmax = [float(i) for i in xmax[1:-1].split(",")] + length = ( xmax[0] - xmin[0] ) / 2 + origin = 0.0 + + return length, origin + +def plot_traction_solution(): + # Read HDF5 + import hdf5_wrapper + hdf5File1Path = "Output/traction.hdf5" + + # Read HDF5 + data = hdf5_wrapper.hdf5_wrapper(hdf5File1Path).get_copy() + traction = data['traction'] + traction = np.asarray(traction) + traction_geos = traction[0, :, 1] + x = data['traction elementCenter'] + x_geos = x[0, :, 0] + + #-------- Extract info from XML + xmlFilePath = "/Users/cusini1/geosx/GEOSX/inputFiles/lagrangianContactMechanics/LagrangeContactBubbleStab_FixedSlip_base.xml" + + mechanicalParameters = getMechanicalParametersFromXML(xmlFilePath) + + # Get length of the fracture + xmlFilePath = "/Users/cusini1/geosx/GEOSX/inputFiles/lagrangianContactMechanics/LagrangeContactBubbleStab_FixedSlip_smoke.xml" + totalHalfLength, originShift = getFractureLengthFromXML(xmlFilePath) + halfLength = 2.0 + + singularCrackSlipSolution = SingularCrackSlip(mechanicalParameters, halfLength) + x = np.linspace(-totalHalfLength, totalHalfLength, 10000, endpoint=True) + traction_analytical = np.zeros(len(x)) + i = 0 + for xCell in x: + traction_analytical[i] = singularCrackSlipSolution.computeTraction(xCell) + i += 1 + + fsize = 30 + msize = 15 + lw = 2 + fig, ax = plt.subplots(1, figsize=(16, 12)) + cmap = plt.get_cmap("tab10") + + # Plot analytical (continuous line) and numerical (markers) aperture solution + ax.plot(x, traction_analytical, color='r', label='Traction analytical', lw=lw) + ax.plot(x_geos, traction_geos, color='k', label='geos', marker="o", lw=lw) + + ax.set_xlabel('Fault coordinate [m]', size=fsize, weight="bold") + ax.set_ylabel('Shear traction', size=fsize, weight="bold") + ax.legend(bbox_to_anchor=(0.75, 0.9), loc='center', borderaxespad=0., fontsize=fsize) + ax.xaxis.set_tick_params(labelsize=fsize) + ax.yaxis.set_tick_params(labelsize=fsize) + plt.savefig("traction.png") + +def output_tables(x, slip, name): + # Save x to x.csv with one value per row + np.savetxt('x.csv', x, fmt='%f') + + # Save aperture_analytical to jump.csv with one value per row + np.savetxt(f'{name}.csv', slip, fmt='%f') + + +def debug(): + #-------- Extract info from XML + xmlFilePath = "/Users/cusini1/geosx/GEOSX/inputFiles/lagrangianContactMechanics/LagrangeContactBubbleStab_FixedSlip_base.xml" + + mechanicalParameters = getMechanicalParametersFromXML(xmlFilePath) + appliedPressure = 1.0 + + # Get length of the fracture + xmlFilePath = "/Users/cusini1/geosx/GEOSX/inputFiles/lagrangianContactMechanics/LagrangeContactBubbleStab_FixedSlip_smoke.xml" + totalHalfLength, originShift = getFractureLengthFromXML(xmlFilePath) + halfLength = 2.0 + + # Initialize Sneddon's analytical solution + singularCrackSlipSolution = SingularCrackSlip(mechanicalParameters, halfLength ) + peakStrength = 3.0 + gaussianSlipSolution = GaussianSlip( peakStrength, halfLength) + + # Plot analytical (continuous line) and numerical (markers) aperture solution + x = np.linspace(-totalHalfLength, totalHalfLength, 100000, endpoint=True) + singularCrackSlip = np.zeros(len(x)) + gaussianSlip = np.zeros(len(x)) + i = 0 + for xCell in x: + if xCell > -halfLength and xCell < halfLength: + singularCrackSlip[i] = singularCrackSlipSolution.computeSlip(xCell) + gaussianSlip[i] = gaussianSlipSolution.computeSlip(xCell) + i += 1 + + fsize = 24 + msize = 15 + lw = 6 + fig, ax = plt.subplots(1, figsize=(16, 12)) + cmap = plt.get_cmap("tab10") + + ax.plot(x, singularCrackSlip , color='k', label='Analytical Solution', lw=lw) + ax.grid() + ax.set_xlabel('Fault coordinate [m]', size=fsize, weight="bold") + ax.set_ylabel('slip [m]', size=fsize, weight="bold") + ax.legend(bbox_to_anchor=(0.7, 1), loc='center', borderaxespad=0., fontsize=fsize) + ax.xaxis.set_tick_params(labelsize=fsize) + ax.yaxis.set_tick_params(labelsize=fsize) + plt.savefig("singularCrackSlip.png") + + fig, ax = plt.subplots(1, figsize=(16, 12)) + cmap = plt.get_cmap("tab10") + + ax.plot(x, gaussianSlip , color='k', label='Analytical Solution', lw=lw) + ax.grid() + ax.set_xlabel('Fault coordinate [m]', size=fsize, weight="bold") + ax.set_ylabel('slip [m]', size=fsize, weight="bold") + ax.legend(bbox_to_anchor=(0.75, 0.9), loc='center', borderaxespad=0., fontsize=fsize) + ax.xaxis.set_tick_params(labelsize=fsize) + ax.yaxis.set_tick_params(labelsize=fsize) + plt.savefig("gaussianSlip.png") + + output_tables(x, singularCrackSlip, "singularCrackSlip") + output_tables(x, gaussianSlip, "gaussianSlip") + +if __name__ == "__main__": + debug() + plot_traction_solution() diff --git a/inputFiles/phaseField/PhaseFieldFracture_Nucleation_base.xml b/inputFiles/phaseField/PhaseFieldFracture_Nucleation_base.xml index e339684d116..c69b54535cc 100644 --- a/inputFiles/phaseField/PhaseFieldFracture_Nucleation_base.xml +++ b/inputFiles/phaseField/PhaseFieldFracture_Nucleation_base.xml @@ -52,7 +52,7 @@ diff --git a/inputFiles/poromechanicsFractures/ExponentialDecayPermeability_conformingFracture_base.xml b/inputFiles/poromechanicsFractures/ExponentialDecayPermeability_conformingFracture_base.xml index 133e70876ff..d47a5af1807 100644 --- a/inputFiles/poromechanicsFractures/ExponentialDecayPermeability_conformingFracture_base.xml +++ b/inputFiles/poromechanicsFractures/ExponentialDecayPermeability_conformingFracture_base.xml @@ -44,7 +44,7 @@ name="SurfaceGen" targetRegions="{ Domain }" fractureRegion="Fracture" - rockToughness="1e6" + initialRockToughness="1e6" mpiCommOrder="1"/> @@ -89,7 +89,7 @@ name="Fracture" faceBlock="FractureSubRegion" materialList="{ water, fractureFilling, fractureContact, rock, hApertureModel}" - defaultAperture="1e-3"/> + defaultAperture="1.0e-3"/> @@ -265,7 +265,7 @@ + values="{ 1.0e-6, 1.0e-3 }"/> + defaultAperture="1.0e-3"/> @@ -131,7 +131,7 @@ + values="{ 1.0e-6, 1.0e-3 }"/> diff --git a/inputFiles/poromechanicsFractures/PoroElastic_conformingFracture_2d_faultSlip_sequential_solvers.xml b/inputFiles/poromechanicsFractures/PoroElastic_conformingFracture_2d_faultSlip_sequential_solvers.xml index 845f3151232..a5e47f2cc74 100755 --- a/inputFiles/poromechanicsFractures/PoroElastic_conformingFracture_2d_faultSlip_sequential_solvers.xml +++ b/inputFiles/poromechanicsFractures/PoroElastic_conformingFracture_2d_faultSlip_sequential_solvers.xml @@ -53,7 +53,7 @@ name="SurfaceGen" targetRegions="{ Domain }" fractureRegion="Fracture" - rockToughness="1e6" + initialRockToughness="1e6" mpiCommOrder="1"/> diff --git a/inputFiles/poromechanicsFractures/PoroElastic_conformingFracture_2d_faultSlip_solvers.xml b/inputFiles/poromechanicsFractures/PoroElastic_conformingFracture_2d_faultSlip_solvers.xml index 2c8d9f8936b..73f5391756c 100755 --- a/inputFiles/poromechanicsFractures/PoroElastic_conformingFracture_2d_faultSlip_solvers.xml +++ b/inputFiles/poromechanicsFractures/PoroElastic_conformingFracture_2d_faultSlip_solvers.xml @@ -45,7 +45,7 @@ name="SurfaceGen" targetRegions="{ Domain }" fractureRegion="Fracture" - rockToughness="1e6" + initialRockToughness="1e6" mpiCommOrder="1"/> diff --git a/inputFiles/poromechanicsFractures/PoroElastic_conformingFracture_2d_openingFrac_sequential_solvers.xml b/inputFiles/poromechanicsFractures/PoroElastic_conformingFracture_2d_openingFrac_sequential_solvers.xml index 4112be144f1..d11f90503d8 100755 --- a/inputFiles/poromechanicsFractures/PoroElastic_conformingFracture_2d_openingFrac_sequential_solvers.xml +++ b/inputFiles/poromechanicsFractures/PoroElastic_conformingFracture_2d_openingFrac_sequential_solvers.xml @@ -52,7 +52,7 @@ name="SurfaceGen" targetRegions="{ Domain }" fractureRegion="Fracture" - rockToughness="1e6" + initialRockToughness="1e6" mpiCommOrder="1"/> diff --git a/inputFiles/poromechanicsFractures/PoroElastic_conformingFracture_2d_openingFrac_solvers.xml b/inputFiles/poromechanicsFractures/PoroElastic_conformingFracture_2d_openingFrac_solvers.xml index cc365b429c6..d2c9d1fd433 100755 --- a/inputFiles/poromechanicsFractures/PoroElastic_conformingFracture_2d_openingFrac_solvers.xml +++ b/inputFiles/poromechanicsFractures/PoroElastic_conformingFracture_2d_openingFrac_solvers.xml @@ -44,7 +44,7 @@ name="SurfaceGen" targetRegions="{ Domain }" fractureRegion="Fracture" - rockToughness="1e6" + initialRockToughness="1e6" mpiCommOrder="1"/> diff --git a/inputFiles/poromechanicsFractures/SlipPermeability_embeddedFrac.xml b/inputFiles/poromechanicsFractures/SlipPermeability_embeddedFrac.xml old mode 100755 new mode 100644 index 27a00a1005d..b0426e12899 --- a/inputFiles/poromechanicsFractures/SlipPermeability_embeddedFrac.xml +++ b/inputFiles/poromechanicsFractures/SlipPermeability_embeddedFrac.xml @@ -173,7 +173,7 @@ faceBlock="embeddedSurfaceSubRegion" subRegionType="embeddedElement" materialList="{ water, fractureFilling, fractureContact, hApertureModel }" - defaultAperture="1e-3"/> + defaultAperture="1.0e-3"/> @@ -249,7 +249,7 @@ + values="{ 1.0e-6, 1.0e-3 }"/> diff --git a/inputFiles/poromechanicsFractures/SlipPermeability_pEDFM_base.xml b/inputFiles/poromechanicsFractures/SlipPermeability_pEDFM_base.xml old mode 100755 new mode 100644 index 0d8af6099a1..089a856d6a7 --- a/inputFiles/poromechanicsFractures/SlipPermeability_pEDFM_base.xml +++ b/inputFiles/poromechanicsFractures/SlipPermeability_pEDFM_base.xml @@ -65,7 +65,7 @@ faceBlock="embeddedSurfaceSubRegion" subRegionType="embeddedElement" materialList="{ water, fractureFilling, fractureContact, hApertureModel}" - defaultAperture="1e-3"/> + defaultAperture="1.0e-3"/> @@ -132,7 +132,7 @@ + values="{ 1.0e-6, 1.0e-3 }"/> diff --git a/inputFiles/poromechanicsFractures/WillisRichardsPermeability_efem-edfm_base.xml b/inputFiles/poromechanicsFractures/WillisRichardsPermeability_efem-edfm_base.xml old mode 100755 new mode 100644 index 5227b229979..03f827efd1d --- a/inputFiles/poromechanicsFractures/WillisRichardsPermeability_efem-edfm_base.xml +++ b/inputFiles/poromechanicsFractures/WillisRichardsPermeability_efem-edfm_base.xml @@ -68,7 +68,7 @@ faceBlock="embeddedSurfaceSubRegion" subRegionType="embeddedElement" materialList="{ water, fractureFilling, fractureContact, hApertureModel }" - defaultAperture="1e-3"/> + defaultAperture="1.0e-3"/> @@ -135,7 +135,7 @@ + values="{ 1.0e-6, 1.0e-3 }"/> diff --git a/inputFiles/poromechanicsFractures/co2flash.txt b/inputFiles/poromechanicsFractures/co2flash.txt new file mode 100644 index 00000000000..8de4352642b --- /dev/null +++ b/inputFiles/poromechanicsFractures/co2flash.txt @@ -0,0 +1 @@ +FlashModel CO2Solubility 1e6 10e7 5e4 367.15 369.15 1 0 diff --git a/inputFiles/poromechanicsFractures/elevation.txt b/inputFiles/poromechanicsFractures/elevation.txt new file mode 100644 index 00000000000..9f9ff9d4f67 --- /dev/null +++ b/inputFiles/poromechanicsFractures/elevation.txt @@ -0,0 +1,2 @@ +0 +1e4 \ No newline at end of file diff --git a/inputFiles/poromechanicsFractures/initCO2CompFrac.txt b/inputFiles/poromechanicsFractures/initCO2CompFrac.txt new file mode 100644 index 00000000000..f3c5e203d6f --- /dev/null +++ b/inputFiles/poromechanicsFractures/initCO2CompFrac.txt @@ -0,0 +1,2 @@ +0.001 +0.001 diff --git a/inputFiles/poromechanicsFractures/initTemp.txt b/inputFiles/poromechanicsFractures/initTemp.txt new file mode 100644 index 00000000000..da7b374fdb7 --- /dev/null +++ b/inputFiles/poromechanicsFractures/initTemp.txt @@ -0,0 +1,2 @@ +368.15 +368.15 diff --git a/inputFiles/poromechanicsFractures/initWaterCompFrac.txt b/inputFiles/poromechanicsFractures/initWaterCompFrac.txt new file mode 100644 index 00000000000..c88775171f6 --- /dev/null +++ b/inputFiles/poromechanicsFractures/initWaterCompFrac.txt @@ -0,0 +1,2 @@ +0.999 +0.999 diff --git a/inputFiles/poromechanicsFractures/multiphasePoromechanics_FaultModel_base.xml b/inputFiles/poromechanicsFractures/multiphasePoromechanics_FaultModel_base.xml new file mode 100644 index 00000000000..fc1798c6851 --- /dev/null +++ b/inputFiles/poromechanicsFractures/multiphasePoromechanics_FaultModel_base.xml @@ -0,0 +1,207 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/inputFiles/poromechanicsFractures/multiphasePoromechanics_FaultModel_smoke.xml b/inputFiles/poromechanicsFractures/multiphasePoromechanics_FaultModel_smoke.xml new file mode 100644 index 00000000000..cb87c0a50e3 --- /dev/null +++ b/inputFiles/poromechanicsFractures/multiphasePoromechanics_FaultModel_smoke.xml @@ -0,0 +1,130 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/inputFiles/poromechanicsFractures/phaseVolFraction_gas.txt b/inputFiles/poromechanicsFractures/phaseVolFraction_gas.txt new file mode 100644 index 00000000000..e2d1da1f128 --- /dev/null +++ b/inputFiles/poromechanicsFractures/phaseVolFraction_gas.txt @@ -0,0 +1,21 @@ +0 +0.05 +0.1 +0.15 +0.2 +0.25 +0.3 +0.35 +0.4 +0.45 +0.5 +0.55 +0.6 +0.65 +0.7 +0.75 +0.8 +0.85 +0.9 +0.95 +1.0 diff --git a/inputFiles/poromechanicsFractures/phaseVolFraction_water.txt b/inputFiles/poromechanicsFractures/phaseVolFraction_water.txt new file mode 100644 index 00000000000..e2d1da1f128 --- /dev/null +++ b/inputFiles/poromechanicsFractures/phaseVolFraction_water.txt @@ -0,0 +1,21 @@ +0 +0.05 +0.1 +0.15 +0.2 +0.25 +0.3 +0.35 +0.4 +0.45 +0.5 +0.55 +0.6 +0.65 +0.7 +0.75 +0.8 +0.85 +0.9 +0.95 +1.0 diff --git a/inputFiles/poromechanicsFractures/pvtgas.txt b/inputFiles/poromechanicsFractures/pvtgas.txt new file mode 100644 index 00000000000..9da1273477c --- /dev/null +++ b/inputFiles/poromechanicsFractures/pvtgas.txt @@ -0,0 +1,2 @@ +DensityFun SpanWagnerCO2Density 1e6 10e7 5e4 367.15 369.15 1 +ViscosityFun FenghourCO2Viscosity 1e6 10e7 5e4 367.15 369.15 1 diff --git a/inputFiles/poromechanicsFractures/pvtliquid.txt b/inputFiles/poromechanicsFractures/pvtliquid.txt new file mode 100644 index 00000000000..b0bfb5fc76e --- /dev/null +++ b/inputFiles/poromechanicsFractures/pvtliquid.txt @@ -0,0 +1,2 @@ +DensityFun PhillipsBrineDensity 1e6 10e7 5e4 367.15 369.15 1 0 +ViscosityFun PhillipsBrineViscosity 0 diff --git a/inputFiles/poromechanicsFractures/relPerm_gas.txt b/inputFiles/poromechanicsFractures/relPerm_gas.txt new file mode 100644 index 00000000000..d6c4e7c035e --- /dev/null +++ b/inputFiles/poromechanicsFractures/relPerm_gas.txt @@ -0,0 +1,21 @@ +0 +0 +0.0118 +0.0333 +0.0612 +0.0943 +0.1318 +0.1732 +0.2183 +0.2667 +0.3182 +0.3727 +0.4300 +0.4899 +0.5524 +0.6173 +0.6847 +0.7542 +0.8261 +0.9000 +0.9760 diff --git a/inputFiles/poromechanicsFractures/relPerm_water.txt b/inputFiles/poromechanicsFractures/relPerm_water.txt new file mode 100644 index 00000000000..d6c4e7c035e --- /dev/null +++ b/inputFiles/poromechanicsFractures/relPerm_water.txt @@ -0,0 +1,21 @@ +0 +0 +0.0118 +0.0333 +0.0612 +0.0943 +0.1318 +0.1732 +0.2183 +0.2667 +0.3182 +0.3727 +0.4300 +0.4899 +0.5524 +0.6173 +0.6847 +0.7542 +0.8261 +0.9000 +0.9760 diff --git a/inputFiles/proppant/FlowProppantBedTransport2d_base.xml b/inputFiles/proppant/FlowProppantBedTransport2d_base.xml index 177a83e6c00..d8bc681d588 100644 --- a/inputFiles/proppant/FlowProppantBedTransport2d_base.xml +++ b/inputFiles/proppant/FlowProppantBedTransport2d_base.xml @@ -50,7 +50,7 @@ diff --git a/inputFiles/proppant/FlowProppantTransport2d_base.xml b/inputFiles/proppant/FlowProppantTransport2d_base.xml index ab806c51cf2..8f4608a6577 100644 --- a/inputFiles/proppant/FlowProppantTransport2d_base.xml +++ b/inputFiles/proppant/FlowProppantTransport2d_base.xml @@ -53,7 +53,7 @@ diff --git a/inputFiles/proppant/ProppantGelTransport_base.xml b/inputFiles/proppant/ProppantGelTransport_base.xml index b4e7e74b4d6..425b5bdb5da 100644 --- a/inputFiles/proppant/ProppantGelTransport_base.xml +++ b/inputFiles/proppant/ProppantGelTransport_base.xml @@ -53,7 +53,7 @@ + initialRockToughness="1e6"/> diff --git a/inputFiles/proppant/ProppantSlotTest_benchmark.xml b/inputFiles/proppant/ProppantSlotTest_benchmark.xml index 4c123fc1fc6..73025434ce8 100755 --- a/inputFiles/proppant/ProppantSlotTest_benchmark.xml +++ b/inputFiles/proppant/ProppantSlotTest_benchmark.xml @@ -92,7 +92,7 @@ diff --git a/inputFiles/proppant/ProppantSlotTest_smoke.xml b/inputFiles/proppant/ProppantSlotTest_smoke.xml index 0576291d3b3..757e67d5f0d 100755 --- a/inputFiles/proppant/ProppantSlotTest_smoke.xml +++ b/inputFiles/proppant/ProppantSlotTest_smoke.xml @@ -102,7 +102,7 @@ diff --git a/inputFiles/singlePhaseFlow/FieldCaseTutorial3_composite_smoke.xml b/inputFiles/singlePhaseFlow/FieldCaseTutorial3_composite_smoke.xml new file mode 100644 index 00000000000..9312ecaae37 --- /dev/null +++ b/inputFiles/singlePhaseFlow/FieldCaseTutorial3_composite_smoke.xml @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/inputFiles/singlePhaseFlow/synthetic.vtpc b/inputFiles/singlePhaseFlow/synthetic.vtpc new file mode 100644 index 00000000000..6fa5973442a --- /dev/null +++ b/inputFiles/singlePhaseFlow/synthetic.vtpc @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + PD94bWwgdmVyc2lvbj0iMS4wIj8+CjxSb290IHR5cGU9InZ0a0RhdGFBc3NlbWJseSIgdmVyc2lvbj0iMS4wIiBpZD0iMCIgdnRrX3R5cGU9IjM4IiB2dGtfY2F0ZWdvcnk9Inhmb3JtZWRfaGllcmFyY2h5IiBsYWJlbD0iZGF0YSI+CiAgPE1lc2ggaWQ9IjEiIGxhYmVsPSJTeW50aGV0aWNNZXNoIj4KICAgIDxSZWdpb24xIGlkPSIyIiBsYWJlbD0iUmVnaW9uMSIgbnVtYmVyX29mX3BhcnRpdGlvbnM9IjEiPgogICAgICA8ZGF0YXNldCBpZD0iMCIgLz4KICAgIDwvUmVnaW9uMT4KICAgIDxSZWdpb24yIGlkPSIzIiBsYWJlbD0iUmVnaW9uMiIgbnVtYmVyX29mX3BhcnRpdGlvbnM9IjEiPgogICAgICA8ZGF0YXNldCBpZD0iMSIgLz4KICAgIDwvUmVnaW9uMj4KICAgIDxSZWdpb24zIGlkPSI0IiBsYWJlbD0iUmVnaW9uMyIgbnVtYmVyX29mX3BhcnRpdGlvbnM9IjEiPgogICAgICA8ZGF0YXNldCBpZD0iMiIgLz4KICAgIDwvUmVnaW9uMz4KICA8L01lc2g+CjwvUm9vdD4K + + + diff --git a/inputFiles/singlePhaseFlow/synthetic/synthetic_0_0.vtu b/inputFiles/singlePhaseFlow/synthetic/synthetic_0_0.vtu new file mode 100644 index 00000000000..f3c0c2da30a --- /dev/null +++ b/inputFiles/singlePhaseFlow/synthetic/synthetic_0_0.vtu @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + _BgAAAACAAACMFQAAOAAAADgAAAA4AAAAOAAAADgAAAAfAAAAeJztwwENAAAMw6DOv+kLOSSsmqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqo+fzgPIAF4nO3DAQ0AAAzDoM6/6Qs5JKyaqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqj5/OA8gAXic7cMBDQAADMOgzr/pCzkkrJqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqPn84DyABeJztwwENAAAMw6DOv+kLOSSsmqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqo+fzgPIAF4nO3DAQ0AAAzDoM6/6Qs5JKyaqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqj5/OA8gAXic7cNBDQAADAOhq3/TU7EfJKyaqqqqqqqvDyxKBWQ=CAAAAACAAAD4IwAAXVMAADN6AABOegAAgGwAAMpuAABfegAAQHoAAGwiAAA=eJx0nHlcTt339zNkKgoJIZkaSEoJJS1DaRKVkiJSaEApEYUkzfM8a57neW43zzRJSMrYpAhFqOecvr/72teRxx/net3v177X2Wftvddae386h4GB7p99BUz/wj30v/9ug3/yv//93f5vTvxjHZqampJ0m2En6TnJH83gI4MEN4qdwfWm7aTO4DHvCW6XOYPH/SDt5M7ghszERb1wBhfkIv+7dKb9hcTFu4zGZ/fQPQ+df5YM0T0PHS8aonseOv6/50+dwTMH6Z6Hjv/PL7kz+FbS/snCGfzSdH9KZ3CHYYJ7lc3gsdN+rJjBa8j2FlUz+P/8WzPT/mziV7duBjeY9nvDDH6cnfhVaJrBhbjI3ycz+K0lxG9g88z+T49TywzeOpf4dW2dwSnj+N+/v8eRjlPGkY5TxpGOU8aRjlPGkY5TxpGOU8aRjlPGkY5TxpGOU8aRjlPGkd4+/TjScco40nHKONJxyjjScco40veffhzpOGUc6fj0LxF//hlnCP7POEPwf8YZgv8zzhD8n3GG4P+MMwT/Z5wh+D/jDGn/rzjzmvOlhrlbOYwfjPgYbI3v+0A5jc9coxH89/A1vzyHOUefdrSrcgbUsnl+OCaSReMl7RFOKWY1ILvizHWlpwUz+NWnUivPmMXRuLzM6PK+e4XwiP+009EDmPNI1vmvcG6GV8tMhpIEMb+xeX1LgUUz5F9Z6pqZj+2POdu07tIugsuLQgTDbbAfXs8ifr/GwMv/+/2Pf7A4xHS4JBpuNx60mxrF7Tk5LB+GuJfDcRmOyqPekTRuXJHQzXewEdwYOk2ubomgcTuFal6nY41gbb5rYpNWMY1nqJbefBtVDlH7WrmXSmPuKaexYuB8JrD3bFmw8RvmHQ88om8bh4NJ3uGBzQj7uSxhYHzBhUx4/K361L70cBr/odMhJW3aAm4716XY78TtiwO+tO82KYZu480i50IxN3jqsMbLrBqMoeeNSRjdOK5uavcdaoH59UaZiRBM4+mr/sdjmDcvfzqF58/TdxYjxQWBsO3N/37/4+Gad27z+laBzIftZ7iyMD95vDSz8/UTmNJNmnzdmUHjB/MuHJfZVwfm6acfSV/E7YM2O9Wt560D9r6RQi1TROO75udC/KFSmDD1uapahfv5VNz/pvTTKrgT0DD1zQy37+9duuDnsSewcd1zHT5zbJ/L2OiN164n8Pog9H9Yh9uXhAb/kkoshQTLsYjBQ5hvsTtwfs5EAIxxvpPV1cD8ZvLivUIZ2RA38S2msCSZxlVqT7LLnaiDvh3ZqWmr02lcRqNyDZtuPrx5tSPjpAm2M+/WVZZ0zXroKvGVuaydR+OL7ENzVCIQ7KwYQS2c2P62rPxByfmtMGj9WU1IPRHP89qkjsEfLRB5VMogYWk+jR/LPHnlrHMlpEY++HXmUxKNf0j21Twi+hgEJGO9cp/j+w5FPPzzntsfflrMcjexxu2lGLS3ps0qg2K+oNZTe7H9CQn5nxXWlVCi6iU0th3bGdPc1Ga2JB+EdWTWtLr70jiaHHL7wZ0EZiEt+SPZfjTO8imo6GVeEnCwf+bK98b++a2XMCgokAfV999YbK7MofGN5U0aj7b7weHNixbn/Mb3DbUYvGxlmAip0RIvXjBj/4swnrAdiU2Ak8k3ndcEYzv6+1tWalk8hpuXbdjDXeJpXMDmM3f7aB20XL3BfdMcx5+cpZEZj9zSwJxjaJZNC+YaS4lf5UaYeM3EedvTk8YjmJTNbig0QvvctUEhgTjefrAM25xBxNsFR6Z6rTScabzIwKhuV1A5yEY8XfE9Arf32emYWhudDno2aNJkNY57i+xWHfIwbQb/IM9+h1L8XF0nliyviG+GQ4e8JLLEvGh84aHfdwUJLqfBUWi5Htvn/czPxMJE9PPLpQGNYynYzsJMlryj+RBZ08HMuQuv3/s6dbttDtbCjRdXG7744vuqzCqe4DLIBcXlcmf/DOF+js/xX6U1lAWmiiKr4+XwfY/sDBLmNPaA667yK6PFsH3+iJ7dDpat4BFTYzvZgsfxUEaf4wWmbLind2Rgq7YHjQeLh0WNhUZBeJ0qn9UjbJ+/Wa6mdrkbHNPcPKHgGEXj7NJLrnJcroF3cnvlnjlgO+z1RyU3ebvBRGdw6Me5OD5vPX/I4a5GFDQWrmRcn+NK43Es1nHndXLhQEJ4euNNnF/+SOwbGv2ZDHr9hTKTetiOa2to3Nm4Khg6fvviiEQRjXdyqoNiZTMYmKl/K5VNo/HVxW8XHXBrhd6Yngfir3A+Wl30Pz4vnmX/+Q3Y/mSsTOThOzUQeOhkf5QS3fxJtBS6frIOmt9yfDK6i+972Fs2M8cDwXs4+MRtHPvnurb/uxdro2DTvhwpuzd4PjS1fS8yNnsCcUKnL71nwXYmxEf8+T+WQiiD9s/5/pjHc75UU/OqhPUK3DE5Kdh+dpbLxBerVtDTX/P97S3cz+j/46cyNp/sMXan8YODca5BOa1QHzF4TXELnm96Cc3fv40XQfRV945JuvWyPorn0x+fckjfqrU/8xvuf7aA1orCSgSeyoNeSwdx3TIx6HVTf6IYbgU0vlnej+sr7ozlZ2Pup0OfhG+M/go8LhohR5f3riuGkt9uKP8Irt+6pZgmO29VglPD48A/Vbg/NuyXjbLO18CSXonYXQ24ve66JphH1BUb18hpfLyK77vvtFoqs04lSG4/2aGthNfFsRs6ceHuRXC6Ra4+sgDPw8f1SqyiKBL6lWKZHJKxnROzFwRWXa2Ed+J3lGr6nWj800P/x6xXakDf+9PJ56ZhNG5sG7dym0k9RPPr1iR+wO0N/4/vLnY45FOHn+tNfnrvaWK+sSqeUv+cWILnuYfk7YrjbvDw/37/417KI0M9Z6uhNm7LYX5/3M/rPc8FeK0QVLsP6Cr8xPHQZkB5OH2iCf6UHU56fgD7X3RZYqn+vnooPLtWVOIOHsfDKXx3knVboP/3mOU9VzzfWHZ8LpDVaoHRWv+SexV4ftoabogUZXwMGXCrI+IxttPC8vTH/M40iAh6YKHI7UjjPxKXpZSIPYaFMe9d377F/ul9kJ5czPcYFLk27ShoxP6p5pzXGuQZDUc9XgiumIf9PCZjvGD+lzRwzoyIYniH298Net8gH10OoZkePk8UsH9sj19M7BQphJu/t4qk+mM7lvNOhKvbF0HwdcNrLfNwnfbCJ1VzS7EDBNiWPHE4iNdLwEcZ6byzjyBT0mf9T8VozDMkxhVsmyG8vK7PcDuuMy2L+v11LJth73GDdXOP4fFtuVrszmnoAnZ839gV03H/03T/9IsuegzCmjF3wqRwvIr8/H69ikIL1IqjiZ3PcH8kGXYU8QQjsDfL3iT9Gtuxl1je+cgwGTq38zxUEsB2lsUJKT93agFtyfWiSS54npTH/o/vYQ7dt6UU2+kyduC+qpQNCU/MRLgb8Doy67nvdDo5C+p5XjeraGI/T9V6HBq9XwGNK7xMmU8EYf+IbJ783FxBzKvZGzjMsZ8z+tUUEj/Wg5oie65ELK4za7UickZXN4Czt37T1mLcXviy1nyPe6FgHORp7qOA47b6+dOgdK0Mlvu9fZC3Dte3pXdMPSVfPQGt3lE+25d2NP785J5+tfYnsPKUwta9jOU03vdS2WHukXxA/kwj90Zx/XaG4+q311xNYPmz2WhkFa6v2oI3uJzteQITW0NZTLfhOvN+r8gbhespMNSxqmUwDe8XZqsZGPBxxcBv5mMZs4zxc7E0ztKU6qwFWKkvsWoHXnc854wWWIjmw05lP5WL7LifFu+Nxq6N1wPbCzW+Lm2c3wM3Dm4ozcoEJhezyI3GuL6yyTfd8pDYr7oovPjNW4bve/x9X/jYc1tYd7r0y6xF+HkZjj56y++TCCy52nX7xfF90arhN9rtObBPLO6CvhOez6kFv43COluBTYLtotYVXFdHyXZauna1QvZ6YHx9Gde9f15o7VI8lwivciT9Dr60oXGR41vnbJyDgJ/x+4OMOPxci2bZqi5pJMbr+h3Ru+9wvbrj/glR9xgHGNj9UybWHI/799qGT0ln80HOePG855wPcT/LOjSYhqug13T2qT8fcL1aOei4qKeyCrZujqxedgzHyY260W+LZcvBvmbD8Qp3XI+5iF+v6AorgeAN9iJCMtiO+/ZXe24+jYU0q4vfGB3wuHNxs253rrKH55yw3GI1nj87mKcu8FwPAv5ZOyRif+F1J6oaIz3LtwXuHPpuFS2G+7PZajXL4TgbcJw+78H+LC/uaDZf2wDZS3+4XTiB9+OWYl91fUWCwZnhzHaG9Q64/S1uwa8VtVDKfcZRcxced62GmwtUu8vgEceR3GXb8XOZeZ2sORX5BA7Wr4848xvPT0UfDtmS9bXga3lA87MAfl7x5tqWns3VULjhT6bNejx/7Czmyr0eaoQw14x5865jfzZ3D02lv6qFw45K9c832dPN5zHFL0rpoDX17NIfWey3nK+nLRpZq8A6J5htn3Y2jd8o+57REt4ERVmvrhZX4HiSXrXn9o+9iRDHUB6U2Iz9pvi2x/HaVBXohCytYP2F44Oin+MzS/FCWOQff1hwDNt/ENTx6fTzWoitv3ph7C628yN81dVbAxUQN2vJ72Ip7P+GNfYOSDQdZjM65S/zCaBxW6bzCg/Lc6BJl0NUZz4+79p8fO/2V1yJ0N8er3bcDa+jJY5GNnIF+fDBMU88jwnHPe2OEoUn+c3AKceT1kl3LnFhDVPqsHEWrNokKX+DFffnAJ9h/XKJFtir6x50VxXbt10WtKHYMwBUXzQKDNTg512unRVqdqYCjqe8ulnchOPJ4qUHNkbXtUJJd4/jhU84zquz/I8HvolUVFmEx2uE50yLIX8IFC9YU6g0iOezWlp3p/1wLWxX3CXzlQXPE00B59omlgKI0FAxTj+N/Xzz2VavwyvCwS53wzyz23j+uDaNn99ongbRTL6jN8Zwftyz9GFs9LdGuL5MpQHCcP8fGiwzajIug6g3f4R6rXGckf3N3CNDzFu7Lyq/+zpx3nwvfLfvp0ED7BCFwpxT2A7rtzOf2I/Vg2TT5G7lWbi9+J8vJ9a2NkGpYf6h2X24XuJf1WF9//QTWKd7ds2LK7ifQi5uPZbbWqA8aFmpQC/25+WPZdXL+VqAV8mbT24B9ufx4p6Aj7kV4DBYeMdHGY/Xm6EBHeaFJcDyXUPRehNep8rNDkKWd8ugWf67pLQM7k/s8UyDtRr1IHuh5MbBcJy/LoW8X3SdqwXsnE64LtLH/r+uIT3pNtkKF4ZFdjMI3Mfz8LDSrv1z2qDEPsLA8i4eR5mBY98lv7dAkoyjpvct3E8HAxsmM+174HDjf7//cYZ//TvtSeX/6QJ/c+Jf4Ovo7meRD2bwq1qyad/Y7GbwGr8JJLPAcQa/pzL1udbNeQbfx3y063mB6wwelsXdqCbvPoMzzf/4Q3alxwz+wL49a331X5x4rv8f/6cdgv/zvgT/Zz8J/s/nIvg//UDwf/qN4H/72Zk8H2aaOS4r5xAX1/IZPJLUB5bO5ALzGPC5Oh0vmE8am8mlyHP4QDSDtywiLutm8rxVxOW/83w6/mQNcZEumcE/cBKX/+pMOj65gbgoF83gbFsYsI5Ax7fxEhetghn84DYGnMfp+CkB4mKQN4MbC5GX3BncToS43MiZwUN3ExfL7Bk8R4y4WGfN4AsliIt95gy+nrTjmjGDmwgSF+/0Gbyaj7gEps3gO6WJC6TO4M/2EBeF5BncgvTPf+e0dHwjOS668TN4AytxMY6dwY3JeWgZPYOzjZE6UeQMXthH6nXhM3hpDp0+Rcet4kk9MGgGf5FN6k1+M7hgOXlfrxmcK4ROF6PjzdN27P4/7e/N4DDNjWZw35BQvsBPJZDT2oNq3+L1bmx3/UKweBhUM5qs1nmB+ahaitWxdenw0Tvbsa/DgcYnei06hdjzoGjHoc9Md3A8SY+NU1+kWAb7Ht8d/lTvRuP3qjz0a/M84P6mcz/Cb2BuNba564lWAvQPjXKwxeF4lXZpd9r7okJYUqfFNyqF22tc1JNm2pMFHJeZ5M8uw3zJG+J5A8JA/Ow7hcY5OB5e4SYu69Jg4GGzRb0i5kPrRy+vcC6F136LTtucx1zdi835y5x8kI6IFW4xwvzJ0s7IVOly+GZ6Z/JjHebPRWu9OXQfwNk7E88if2LOScafGzFwZUG/jZs35ktFicvPbAjui69sKMM8NZXov04A+A/1iwT3Y/7ojq6mvmw8XHw8vGHxJ3vML/zZbm5bBiZrWVvnG+Dx8jV/lfGM0R1OabR0DehgHre4YMmHA0Q9Jf/C2mO2LY0XXh3wniD293t3ZjAd3Inj/HLbyqbwVRngO7ho4c4FOO/w7yQuyknw2VmFYRkj5p0lh0/xNRTBRLKNU+1czK2WpipcaUBwYM6LQTdmzJsfNVZ88/KAUp2ACcttmJsxsBYuiiuAE+l8+712Yf5anLgwZgH3nZH4B3S8xks5veRWBFTxf0jW3I75bP2X+wWTEKRzfb4Udf8hjaccEb0o0+0L5asLes2dMCcS5txZ2wshI0JZe+wL9ttOlLryxFAU/HpwZkPFlAuNcy5ru1i+DcHRq7wSavMwXzyQyVMdkQXJKadb//zGdtplAoNQcglI1xe6KZzF/bymsXMivSsXah6Hb5+jiTl7h6+TiWY5HB05XXmrGtvXSDWZt6zeGpRqTz2+/wbzNctquu1OEnG1oajv4GL8XOfzzd8puqbDde/rKZF5uP3V/1sXqRq/OZi08H05As3PGF4OBM5204OC8ri9evazBK3NcWDr25xXo4Tb60foy/KP5sDYyJajtxXw+m3udWpgXF4CXBNVzxTi8Tq95XI6o7u0DD5wLiuRPIXtaGvnhR6vKIfekB8Hgq9inpX9gzM79ib8GnY/4HgDc8+nMfofukLhajJPeJk85r2Lmdf0roiBZ587vu1UsKFxreqzExtUEeRpCUj81MPt25+MpDr8yIevi0Mvu23C/ff+ubZ2e08ZfPXQvx532JbGf79m3cZ2xxF0Ltt+ZZHG/I96lcN64WhIs5cZyLuE7SsnFPZ3BZdDRtJFnRiE/ZCTbSO3htcSAk9MbFXNxtw8ttnrQkg+/FYcOxRBN0+q+H99ie1KhrJFo923DHG8zSjr9Z81qxhuqio1p6zAfA9P6WLF0WyIeyUs7hyA7fzQycji/O4ETBfW+N3KwbyStaa7YaMPPDuRqWGQi7nHqaL1xknxcDxA6Y3LHRyX8rvvLkuoLIaBy19Khn5jP1hppmxVbkqHiozwLOVe/FzRJ3KjOp8UQosQa0BwFN08J+sQpkyQCAibvSYJcxG1xWeKefLhqXPS1LApzjuep9J5+pxjQfSrbHVzgRONj8rzXkEBAXDmwhenBfn4vtUHD23MWpMMrMKbi94uxv1XG2afl7KtDLYw7JaUSMV+O2X6jXeljBeUHVbzSnLAXKQ1+ajqz3J423Ti0ooCbCeq3v2YYqEJyB9YpiRPF89nmWl/VNhVDqoJjzz3h+Ln+sav5DTWXwwGR9rztjzF3M/5a6GBKwJXS/9gz53YTsDJuwtYbQrgmnym5/u9mPe7yK3iFc+G8KHafBMrvE4dHL+x83oEwKmYdfN047F9TQMLk8l9GRB1UoBNOAOPV6Shmsu7pekQWuk973YiXRzYxMl1QTkFDHMf2XDR8fGm7VYDceWw88BKpYP7sf8XPRLx9Oq1gGC+fsNJCcz9Hjw/xB9YBghGlg6E4v6nVK14sNw3FzYUCBpcXovX6VTBBx5H71QIjee+PnYVr8cqHjuuJTdzwchVbi3LZWxHa2ucQM6qcJinJrQvNAj7QdA4zH7XyQRg8WBcFp+P+9/D5CYUooWA+ckO48gQnE95DFfdKpUIgLiH6pz8YZgPr6j2YY8PB5+PoY93rcf5kfHu88vzxTOh2wE8nxrg/mzrGvlQYBMJO3RDt7bIYX5rrch5wWYESX2y5mIVuD/hKgGxlctdQK/6iODB27h9lbraUsvIIgjnt7wjy473WTsFHidr3PMGl4Z9bzxu4fbCI2FxvqZZIOitXvZRGbePUw4QGU3PgsShQDZ5c9y+PnyM/cfTLHgkFLT6XAbuzxLughg7plzQrnzZcbkec8YCifT32RHg7n/x5Z8mzDU2Wv24f+oB2PEa/zYpwpzXSI69vDMHmD9oyXp24vV7QG5HY5eHB4iEWZxf/gq3j0ve/9jPIBME9oYcHRHA4/jVObb6kCOCOu/VmSJceF5J3dvNdln4PnTbXk55fQ6P1/v3eZ4J18uBO/u9r4825pFkvntZAOdT5/A1teH7fu68wlXTHQttFf12761x3GiMCHh1b7wI7owwx8wpxO2lBgyl7i/NgOGHz0VdWzD/Hu48zKmSBBbjukqedPar74bm/ZJJgbVn/QqNt+P+LHsuKS47EgXjUj+adF5j/9iFMTxRW1kOz/ijciu58DhyCsx10dpqByE/WWqrVmEe6Gg635qlBKrWSu+Njcfjq2fLpvu5Jhva+bfFZVbi5/I3r7k7VVAKygPbpRfNw/zE8Na8prhC8JRihwZfbOf65VY2nbNlwK8gtkX4BX6uZ+//LOnYHgpJ1SdGhyJw+waFUyKvVvpDRo527alVeLx2cEfdHTVJAA+j1CnvCVyf1O0RD0gpCYMQdeHrDK3Y/ma/5yHuxoWwOMDn0o0deD4wvV26FzkkwsHnnTKq961pvPRuzoh1QxlY7N6RrtaH7exavfHtaWd74NhlJexOt+8wE5bTMZwqg4dDr4JcIzGvCexmt8kohe79PN7BdOuUi41v0eLuHNjfZGcksAXzWh6zRw7l+SD4Pd1xbidd/NffwRU9nAurkkB60zfcvk6YQ2vALgbGnGzl5HsxF6ttW7C9ogQcd0jd6x/CPNG8paciOAWauJ8frWrH9h3d/VhCB9Nm8PS1DbsbfmfC+uviZVMvsZ1hrlP6WqWREH1m8ROhOTiv7T5jsLvuRR78cOsJf0C3rpOGAkUGq4ogc11FA8cgnp88FY85hp/nw1T7MYPV7NjOUMQl3+LOIsirV928mh/358Pv5NbdRJ35KiLSzu4Ntm9R4WkZq47Ayp9PuZvueXXq07hF12SC++T+zMWH8X0Xas3+LuwbAm/fb1qwiW58EXnO0JsP4WLbiUoL8y7mvXm/06Ig9eKzYOExunqVx2/u0iYE3+w1Lux6iPPL7PdLXcYkEQw/9lda2oL7z60n6GUmnQDHdEyL7q2ns285egT886Bf94HA4d14/vR2V8Zaz3UC1Q/Brls5cPtVXbuz755KB4Wh1ivzbuN5a7SSuBjEQTZjiKkCnR+GxHZPiKzIBg191uFDXJg/nhdtWNOaC8f1fto82Ijz0WRyT/4+rgq48nmp6f3XuP1563a7ls/6M3jFt/syH/SjwOPMJ6V1r/DzihpM8q61KQEfj4DTFg543T0/fjrudnkY7FfZrP/gO+7/bRUe9u5IH8g7cyRMbRW2/zR9v6+cvw+sSfi01vYg9nNQ4bvDHpmI8OcdgVJebGdfhWzjih++sPj6b1GXbZh73CrQaDFOBONX+74YVOP9lBKb4NSnbaHgeOb90RWF2H5o9ZNUnYFyuBheEZipgfkB/vnzHDNNZ/Afv1foPw2NgGQ1957QBXgc9Z8ZBZ9dVQZhwolGm9ywf7o/cdy4x5oJhcHNX0XY8POyeTIGX+QoBC/Yi0qScZx3WLD2s45QHNwo95R6U4T9+WXPdSHRWqKOSrt55OJpHA8NGs1b9v68OYNv3r9XGTVlQJKysUhcPu6/5HXJ/gy9DLia+fxF5QMcb6M6xArkXuTDEQnFFS/vYH+y3jrqWrWkHBpf5SP9h3j9WtkdF7B5YQfsfeIHoqwxv8URtL4mqwyWd52cayWI71uYb/gtzyIGXpvPPikrgedhbnWs3bkdFSCeG6q5Xhv7Z+7HmmSPzRfhbqCsI7cu3fxUORwxfKQUPLSqKjhv4bymmKl586pnORxnZ3jZTBcni3yTI/Q6y4Hp9CI7o3bcz99nNzhqTZiB/ePamKKnmLff2v1Hf04qDHsaP2WNx/PnwMIiFn+fUrjRd+xGziJs3445fX6+eDSkpG1lFs/F82GPcEZWmVIZaIzJ3VRfi8e3FjZEG6Z5wPmYlkUv6PiQ1N38yPI8SBI+qNdNd36ytNDrTJixObSbNzsofMf8wCnLql7+cFge7MfuFIXnW5/pthbx90lwzrz761cR7H+JdTES+SNF8KD9/MTsU5jPLTFyjXieAJJ/uH5IdmA/8B/pr62TewDq73JmtWti+2EJr9Ui9VyhNUQ6kW8ZthPXdFtP0zcNIs/lD2xYRZcvnr962nQ+B5LP+eRmj+P5JhxTbZ/fnAZeN3JNw/iw3+Q/dBVrbq2APcnMHvZpmBsZ+umril0En8sKBRVxmJc4usLErjLYb9uZoCWH/fNEmrm3OqUYRlfKONYo/x//+72n/845/36/iY5PvP3HuSjB5/T84xyV4H6D/zh3/fv9BTp+//s/znUJXjL0j3Nggu96+49z47/fg6DjPoP/OJcmeNbgP86xCd5McovoGZzyPgUdn36fRid+Bv/f+y6JM7gsyeWTZ3DKexl0/PRX8pw2bQb/3/sx6TN4bj/BXTJmcMr7HXT8Kdn+ftYMXj39Pk32TPtkf8xyZnDKeyJ0POAPwfXzZnAn+r/HoOMWpG71t+7z9/smdFxr+u+gi2Zwxen3dYpncMl/6VZ/v7dCx9+Q+sjfuhjB//d+z0zOSvbzb93t7/df6LgE+bx/63oEb5t+H2gm1yf99rduSLeuKXooHafooXScoofScYoeSscpeigdp+ihdJyih9Jxih5KF3/+f/yfdhj+0qPp+D/7yfCXHk3H/+kHhr/0aDr+t59HPpQnNRwOo+pEBBeplWoSGi2h6kQEl2pSupc2mk3ViQi+0m7BseCvyXBuMZ1ORPBPgwViyU88qDoRwbkbmkY/HC+j6kQEvxH8aal/Tz5Is3zFOhHBY5Ff/rdnGVQ9iOBrdD0eicTEUPUjgpetI36JfRZFJyL4DlIHHM2h6kRkXijerZDAEkrVicj1y/ns41pyc0evExH89tx75YwrbKg6ERkf7maqlSiVU3Uigg+Q6+5pIezNotOJSP9/JvrDnk7ViQiex0KesSKqTkRwsWdHleUNC6g6EZlH+tnc9zO7U3Uigi9ViVooZVdG1YkI/pbV+Y1wcDxVJyK4ZckKQ8aSdHjFQqcTEXxuoPhOrfEsqk5EcFL+YviYR9WJCP4g5cbRZIcoqk5E8LVxdoE+73yoOhHBB41sL91XLaPqRAR/tLfHYeBJHFUnInjmR8JvizKpOhHBbavVYrnaiqk6EcHN9+z9KpqEqHoQwSuaNi+82+0LqpMjWD8iuEH2x/E/VbFUnYjg1jt5vz0NKIKTMXQ6EVlvRF2qG+oNhC/ydDoROV5SCp17r2SAkjOdTkTmcbeG2ruVYVSdiOAffYOYgi+mUHUiMp6neEo/q7Wm6kSknaf+r7U0y6k6EcFNPYNZ9+nmUnUiglsZ2K1Jv59N1Yno1gVFJyLroi/HvU3EEFUnIniNmHdC858Cqk5EcNeHvjlt69KoOhHBr2j36X37GU7ViQjerrf7BZu1M1UnIrjq5FfeIR9zqk5ErkfxBSfL68upOhHB1dR9L1Srl1J1IoIfn3vbhIWxiKoTkeuUcfb2z74BVJ2IjD+PuMKGBBKIeR6CdSJyHd0QvLvpjiP4GtHpROQ6HVUsFugpo+pEBFe5uE7c+EYRVSci+O/niVtKY8qpehDBQ5sda8/r3qHqRwRXGNXqFHmfQNWJCL7Kbvb8pA15VJ2IjNux+x7/XhcFa4TpdCKCK03BaPq6dKpORPAXXVlsKbVlVJ2I4L4beWxi3iKqTkTwBQMbPtfsLaDqRAS/rjP7ZaJvBFUnIvjsSqWnyQezqToRwXMcPHIUrWKoOhHpT3Jdz82i6kQE/+X2XuphcyLcMqDTiQg+pscz5CRbSNWJCD7vt8ZozQlE1YnIOGnePbzFOo+qE5HzLV7midsbT6h7JYp1IjIeXu/l+MNZRtWJCF5aLyWn9vQasG+k04kIvvn2A5cto+VUnYjgjV19DkLbHlJ1IrJeajjTv0whgqoTkfP5iQ5XQqMfVSciuLHznJHXK+OpOhGZB4OyPz5rT6fqRGQdfn3DnxeqiKoTkfEN2bjMasui6kQE11j4xajpQy5VDyJ4cka8yZrJbKp+RHAPRemJ1DcWVJ2ItKN5VedrXDlVJyLrh3l65eKvXKk6EdmfiPafnV9TqDoRGcdKmYcKpHJhooFOJyLj1Z8vJW+FUqk6EVmv/kzsi3pQQtWJyLr6dar4hXf5VJ2I4FfHu1hlziGYG0enBxH8SaudKbt8AFU/IrjJn7XZ18VLqDoRWT9Ecnv9aP9LJyL44U32zhFHi6k6EcF3HTs7bFniQ9WJCN50xTa7IqeMqhMRvOOqyqv5z6OoOhHBO/dLJ7D9QFSdiIzPe86e1A/OoOpEBO9rvdiwWCuDqhMR/J31wv75YhlUnYjg22ZJnzKfm0bViQgeKKzNszi7mKoTEXx46mbPJeVyqk5EcLmC7H6J3WlUnYjgnrfLhPSi/9KDSDuVFfW9n/yoehDBQzhuX6wk6gSKrkTmzbRr7Wq77kO9J50eRPAW+6L9ddfLqfoRGYfJfbF+HFUnIv3GW2cUzFVI1YnIOvZ942EGoSiqTkTwx7u8C+5OZlF1ItJvtfn2xh/yqDoRwZd1p22yHswF8/t0OhGZ37ecO6/pX0TVicjnKtyxUmNFOVUPIuvGge8sXovsqPoRwbcvXv3lF0MEVSci81fUYBCLTDpVJyLjv+abubNPhFB1IoILn0xw030cQ9WJyDq86vKpj4c9qDoRwWd5g6WjTSlVJyLX3Yvrp+Y+RFSdiODRDCnItiOfqhORdZrJ+cy4tBKqTkSuU8ajld37Y6k6EcHTN918u14+n6oTkfX2Cf+5LTVOVJ2IjFc9TUJiU2VUnYjgtwZON8g62FN1IoLrtTyMGjELoepEZDxf/uz7qFAaVSciePXnFWVDgQlUnYjg+26Fl2YfTKHqRATnmBhtXtRYSNWJCF7grj4cHRBG1YkI3qDlxxJalkvVgwju7aL3WXtzzgxeNG9Xrcjyv3QigkdZqTQcFyyGWVZ0OhFZtztt87hikETVicg6XKbel887iqoTETwh53z9pssJVJ2I4PwfBNtsrkZRdSIyv69X3l5L1JkUnYiMD2sN1lTeDqDqRGS9feXY87pvf+lEZH/MSmebJpRSdSIyD5LnUWcSqDoRwT87vY28n1tE1YnI8foq/fLmMx+qTkTWA6zX/OQhkKoTEfzI20uiVUP5VJ2I4LuPrTG+N5IELgfpdCKybsl68DT3WRlVJyL4ueO1cvdzsqk6EcFHyfOWlwVUnYjgYgO1jA0T6VSdiOA/d+fwXrudQtWJyDhf9Q89iOCtKf/QjwiOVpa+ZH5ZRNWJyLr02JyUmpXhVJ2I9NvrlsTylBKqTkTwsxziEjZtiKoTEVxeYE/yWDui6kQEv9R4Q/pPHKLqQWQeV3rRaRbpS9WPCM74OkLZ72Q+VSci+I/5IlZzH5ZSdSKCZ3D/Qw8i48y/9COCCy0zk/dBxbDoFp1ORPDLxvfXzrnjRdWJSD8Lv3ewmvpLJyJ43ZdvNTsHY2E3J51ORPp/6eh8xfECqk5E8Nzd/9CJCD7l9Q+diJz/H6uTJQ9mUXUiMp5nI/ajsVlUnYhcXxccnQwME6g6ETkPfXnXxHrZUXUigsv+5Cg+uaicqhOR8yROcZ6rsAvk5tPpRGQcE65/uKm1kKoTEbynRyb/yo4Kqh5E1kvmS9i7eS5S9SNy3Q0N35DiekTVici41+LAJpRxl6oTkfXD8aMJg6NmVJ2IzJvfU5i2d5ZTdSKynzq6s+Rdc0Eum04nInjYStayR/0hVJ2I5M48lptMiqg6EcFF7a5qjKZ7wGQbnU5EcImXmk6jSmVUnYjgNgVzXPICk6g6EcEtdJb/uV1ZTtWJCB735sA6t1slVJ2IzJvnDFaeD8mDokA6nYjgyl8ybVwgCngy6HQicrzEavMEIvMheP0GrBMRfPaVazoqKuVUnYh8rgWe9WbhZVSdiOBDqg/9om7lUHUicr0c27h1Z3IaKO2n04kIvuDW3pvSkjlUnYjgveGnEtiJ+UDRgwjOpVZtz6p/iaofEXx/m9Ov7e6eVJ2ItB/wUcKkPIKmE31e4R9gpoTPOU/r5RzeEumJcn9zvu5Zi/mE98cB9VFPpD67fj7XAP5uldTyD1I8Ml7IRsVDezwPc9nZ9515I73QjlobqdUOmEuIqu5dPNsbvexyr+bXwLzkwaZrYTreyDSLx7V1G+aeUeNPKqq90XpVzfVxf/B3tCb0Gu9d2uqDOOf+WC73BPOmsaUuVi4+yMz24my1MMxLfx4pmRz2QRVbLpRdNsbcWiP+a/lRX7SJsTF/lyTmT91EVP3ifJGb6eVWHWbMM3KS1bZN+qJ7Cqd2Fj3D3/sqPa1kyH7UD90Wi9nLGY55ekvUi3defuhE/No+Rz3Mb5feeCrY4of0mD4U8Qpgrtg58bNqjj/alxciZ/0Of2fMdg6DfM1Wf9T0OVriigHmXArWnA1S/sjNsGbd0PBjGp+6b2Dw5oQ/el56bXmzCeYmxrGWDur+6ElYilnjGP6+WVRCn5eDkj8yW7t+4LIF5glXAuM7wB+9auvjF5qF+bNLysJV3P7oztJbASX2jTRebbtcIny2P3JJLFm0dhnmLmXsf+I7/NDq8/P2bwnB31u7pD6uGhPlh3oSpNOS+TBPrvdJ6rzihzRe9Hs45NbTuKZreDK/sB9qfj3V7C6NuWHbaT+V777o3c4lBY868HfeziumrurI8kXKV/d0+F7CXOvB69lcJr5okMvMVONnLY0b/A5fZ7/dFzGuVFzX6oS5ss0nR9WPPmhUv2ZlHyfmhWOcHhWPfNBPW/9x+wz83bmBh65n5570QVEPfu6LlMbc5HPn0kOLfRDDLIsp7pfVNC4Q3CEcXe6N9reLpDAaY77sfNuI/E1vxNYo90SIEXMx+bCvJ7Z5o6dm756EBuLv4B2+YbrtZbcX0pPf3QmCmL/m/nRy3MMLDaRGRzNXV9J4YsaIIzrshXJ3br44rom5EKuVm8K4J7K4tSh47Av+/p50zeSRtHhPdMybn/JdvvsTulNTmp5IbK76+YWcmNu4teYcW+KJuNbI+C/IKqdxnTh1o0zkgQLnNat/lcX87vIvppKmHujmQhnu0v++10D2P+lXzAJuD1QdFCWgbYZ5fPndts3P3dFww5Edjxdhzh6rwZTo7I66Iy4en3iEaPyRrCBLFrijdy95pzpFMK/zMPTNHnBDgloXHuR74u8ThmXeenFL1Q09mrt7yXBBCY0zq2yQHC9zRTVNg0073hTT+IGYFV3mRH7POjdcrrkAc/TFue9EuAsyOJfOLr+9iMbTvuypGGFzQQpZ+5Raj+PvJXp7tv8odXJGh7pCHZBJAY0fOizfpDLPGS3pa9Ts9syn8ZsqC5vVHzohNZ/5L4bS8micsSogMmahEzq5USskqhF/p/GSU2O0orcjiogZvJ/9PofG97zbopLJ7Yh2izr01fzKpvF3W+YzJpU7oKuTGxqsl2D+ZULoYbGBA7L7fjIqZF0WjQcO9PibbXRAd1Mn+bj58Hcj28bvJCkP26NlUQPLLu3MoPGKh3M7hxrtkQzvtWdnxdJp3NIpYd6nEns0LNNeznMwjcbN18ttE6+2R2aX1ebJ+6bQuOPa/RX67+zRcd3I1rHkJBrvWHjB4BqHA2J/sJG94HECjYeKOzNf13NAP2YlFMX9iqNx7geJqqFNDuj8WKDgkt34O5mihWfkRWUcUePgfkNO62ga1xtn3tr21BGJybwy6O2KpPFfyWoq8aaE/0+yCCpLR9D4074jai2czki+x+xrQFEYjTtsUlt9m6jH/OeuffbodiiNR0QvtZnt6YJehZ0p0XIKonGh8ssfJk+4ojfJ2gvuRvvT+OtrAwxCa9yQyZH2Nc/KfWh832abc+Zv3FBVm7eP8CtPGteqX+R29oQ7Wloy6+izLvwdUfaclurRbHd0gmtZ4/JeBxq/cT/Q9BlRtx8pPcU4VfiAxtOXCBR0GnkgYNMVra25TeMX721eEVvlgViDi4WEpQxpvD38WOELNk/UkjwkTOP2FRDlJzvN5+XM3kPamZr633dAH5WvnrajtNNzHu2+RPtPQWun73tJI6WJ1k+C9yfdn+7nTakdx2jPRfCyzSnTzzWh1udL8wPBX7a9ciX9oCBvso7mN4LHFrNN+03xrNwimp8JfqL/4rSfXdndEG1cCJ5q0vmeHJcOVZ/ntHEk+LE84wfkOD658+IbbdwJLr4lcRU57tZLY4Vo84Tg6g+9VMl5Yn4k/jJtXhF8j8gjZXJeaRYdukKbhwS/vUidj5yH8SJdO2nzluDzE9LlyHl7Ztm2Uto8J/gSbpbpeT53Rd8q2rogOF8p4/S6cDRPfEpbRwSftfmXPrmOHvaELKStO4KzKY6Vk+su861PJW2dEtzeg3d6nTraKD6nrWuCC9mmT6/rn429bLQ4QPDsc7um4wB3JDM/LW6Q983snI4by2stYmhxhuAig1cDyDhjJareRItLBB8++2U6Lu081zhAi2MED7g9Mh3Hhuv32dDiHsEzVHaeIOPeUFvRI1qcJPhuoZ8xZJx8a3uzixZXCS7v+j6KjKt6avJatDhMcK67xi1kHJ57e4czLW4TfMGKx4/JuG20vEuFFucJXqxvNEHG+ZXpOqtpeYHgwrKfKsm8MP47vYqWRwi+6az6AJlHPgigZlreIXgE+/grMu+kHedcSstTBN/CtPoAmafytp+xJfPaf+soiPthF5nXHiglMzz/Lw8S7Qu4nfzJPAgM35RoeZPg0rdkWcm82c7XLUjLswTndLdkJvPs25zDgmRe/s9+D2tCO5mXux594aHlcaK91DnBODKPO+k80KDlfdK+lYAZmfflNBgDaXUCwdHGUGOyTqgWXa9LqysIbr6SK4+sK+6wTTLQ/r6N+F3oXjD9dzI651pDaHULwRl/KciSdUt1wZtLtDqH4Dxvqt3JOufuWc1YWl1EcOabAs5kXfTw/dvntDqK4ImvNp0i66iJ13YtZN313/OmmIbzk3WX4ur3zbQ6jWh/wK3qG1mn8fLWpNLqOoLnDo18Juu62QsZZ/G8xNzkyoAIWQd2v7HYT6sbCW57+u0ysm7sl17+k6wz/7vv3F7Xc2SdGbJTbDWtLiXav4AVnmRdOs6cz0nWsf+1T1j63ImsY7O1Oq/T6l6i/c9Ga06y7pVg9n5Gq5MJ7iKZNYesk+vrzxfS6mpy/Y7dXE3W1Y6Miq20OpzgiwtX+ZN1ePRCIS+ybv/vvru1jqWQdbuSjl06rc4n2o93iCSTdb5mEEjS9gUEzw95qEbuC9Zs+8pE20cQ/Hif5/Q+4gVDbCBt30H2X/j29L7DNm+JAG2fQvB3faHT+5SF2pKD5L7mv/5UsjdO72v28tTfoO2DiPY6AnO9yX2QhKIdG23fRHCJm4nT+6Z1Jk85yX3Wf3YWnlOb3mftXJWwn7YvI9rrz1Kb3pcJbfWRp+3jyDzysUiO3Mc1D5wqJvd9/9lJHo6Y3vcl9dnjfSLRXjaXeXqfWPdooRhtX0nw9dkC0/vKOx8z8T6U4A22rQbkPnTO/FK8byXnucDW6X2ro/aqAto+l4xjScknyH1u59dEvC8mOH/Dhul98ci3GLyPJtfZuqpich99eUKIjbbvJvM1j58zue/OYvPA+3Ty775+qU/v0xdOnsL7eoL/8nea3te75ZbicwCCOwghY/Ic4FxhKj43IP35488e8twglT8XnzMQXKxr9/Q5wzGlPnwuQXCv3NTpcwnZXOHpc4z//Mw0v3r6HIOJORKfexDtJ3/ETJ97GFV/f1FT2wB5VStWbectBy4hlrZZeX7orGJNEdreCF1sIp7WWWUwSyfG2r3XD31kVsg7d7QRjMortZ/vK4eS5tQRt09+SIBfR+lnQCO4HivxvptWBn4T9yvPLPBHo+4aL1f71oD6Fh73Cp9yYI8SC8g85IPWvuv1/d1QA3Xb8t57riHyvt5jPzE9HyShfTim7UoNdJ4Oujy5pAIuXtkpIMTrg+K55jXr3siBsj/6Ot7ydiCSpLQt8LsD6h7X/7m3Mhs81yrUN447w8kl9oaVSQ7IdFOBy+bwbLiT6fuT3eEBRLltnqX6yAEV95853Ha9Br69yVdsOmYPd7RT1v7m90FWW8ZL1tnXgFNU3ycjHVd4nMQgtk3MB4n2q0s489ZA8QUf7YFNLhCzfOMhix/eaNnQqUPcujWg4DAZ/Hq7J/gcvn3bdYMPOibfIKoPpaBxWTV1aHY5GDjMvjq41g1tHN03uHpbKYi9UWFbkFgGqUlbc1WXuCE+Vq8v1e2lkMDZOKZdWQam6Z6bOR64IdaL72pPOpSC/Yay3pEjZbD2+ZMDc465IZ9z+qbJtzNgYk7sA6OOfHh/ofR+Zbs9crt9GjYZZEKFZ5PkaY4CCOA4GsYzYY/GFliNy/hlAHihrVwJBZBpxpGm3GmPDod0qI+8b4Zds0r+cGUZgzaT4JuWPX7o5eAhJYG0Zggfn18bGn0DxDT2FN+/74ekOK/l8WY0w8A81J5ufAGuTlybM/+eH7IcP73t8fcSgD0hd83E7kLZjtUFY/2uaOf8p/q37UtAwsD/iuwKQ1Bd59Tc+cgVWXfwN7gfLoU/XKdyLcWugvpY9rLK9W5o760v7QlH24BVo6XLpD0PUmtPXHwQ54kSc+b9zGJvgwtlTIq3j+bDSiUmZsXfnmiju6DCTo42qHpafLVSIg/YPSMN48Y80cIBl8cnTrdB6JVCd2ePm3B9w9r2Jd6eKFW3pe0pTxtUrNEvSbtjBN3iThqzej2RdRHXpcPn2kCa0XJggfVFiPXI7cxy9UQ3ZRny/Z9eAKahW0GmDeXg3P1225dNnohzwJnJaZE57D47T2LhogoYMTKLnuzwQMUBHkaNr3RAfr5a1/h2og7hkOWR5/NE8w8Vsvx8rA186z5sP6FRDpmHAgLaBDxRr2La3dYEA1huyLrY81sZGLPyvXJm90S153sWn9dtAwE37w3FL6zhaNHFi/wOnkjWLk0/QbkNcu2S+HpEHYDZWnyJabgnathv8/ahfyHskYm95CmdAM9sxxf35jqjizuySw8MFIDyWMtlNtF4cD89L/vuUWcUrGHnIx5bCPKnVTO5muNg5euXA3+QM5KOX6Qrb9EAN9jmL9iYgkAjpX8+h48f4vaoTfCZ2wDJGuknWHwQPNpWcnafph/SZ1sReHNbAxisYli1TxIBz8lLhoVX/ZBnXxIDRJTBaPvL+KSaYjgdd9bX5qc7ChYfGmBmLofN4Y9WDn4tBiWBJxY7pT3QgzXpaqaPy+CNQLebXEkJaAj46d5b7YFelzcaBxy+DMeW7pc3NUmCi6+PXV64zBPNOnNs8xllS2ho3yg6+2EiWM+Nup9V6IEsovRMv927Db9CQ4dq85NBpvNOn0mNB1plyWq27HwLqMvtstr13B3e6FxUndTzRYUm0QWzb7VASkSIVhmzI/xW0eMVlvBF8aJ77wcFt4CEfEhjynwP0F59psNtzAdtebylzvF3HfTV3RT/llAOz49q9s9u8EWPq1XtMyTroYOhahUXMe5LZ7v9uv7FF90SOdnlXVgHbrHXdB6uqgBnoTTXtihfpH5uhaLUznA4kaz89ZtBGSxovXEuOdgZiY7HW3heCoPMrBWmF3vLQLkt7JfDH2fUL59g5f45FASSdWaLqpXBo7c8k1uuu6Bl+6Ku/bjlDifFr53Y/y0VYvJXlHNEuaMlas0H1zB7Qbh9b6FSRRpI7uu7sFXRHb1/nLCF5647dDw/odU8Nx1UeOsOekS6o8cxG6r96xuhMJQ/KPCOLUwM34zyWOmPLnxsWr5+aRNoRojtiax3BV0Ft54mIo+PDDuaMKQ1gqL4+FCjgivoPZcVNmbxR1/TeYdLr1QB06W8ghj3CJh/ee8ZixIv5PXAQ3Z0ThXEn+W5JrAnAtJVZD83XvNCl8z3H3E8UAWCRXr+lyPDYErBtPduqBfi/Y5is4NaoHH+e5OughRYYfhom/YPH5STdXoNU0wLbN1UcMfaKwk+BdQf0Xzrg3o3iG91JfKy6WvnuVsGk+HbmZDoz84+KM1m1n6+2y1wZOTEnx3KyZAs/FpiXMwX7Th97kRdYS3Y3fw4qr3FG0y5v7xRnEfUbxw/lHSe1ULvSvOQjZPuUGrttvbHSl+0/l5BRAB3Hdgn/1gfeMkLDogwW3+V9UUGQipLznG2QKamGreHuDE8Yud9/KHHF4X5bFU3X9oCO6tHsu5cs4JFjKtL5475ou3n7t5s2WgIi/Xq0Jo4HxCIFnUUX+GJGq0ZnOW/JECWYNsuvZ85IDLBc21c2wF9OmtWdFQiERrdisTefM2GBOORxQInHJC8J8uavGdJEKpet2SyOAe+IEnuZ2wO6OsrtjMFRH4X6vxg97sVQcTxCrPKCE/06+F7K+W0eDhoFbDbWTwHWDt+378V6YC2m6/qzHArAnO7/eFu50ugTFLvo52KC7q+fXN8zqJiGOPWevTQvRg4G87c6opwQbpTKQsqjxRDP+uf53pPSuBVSU5gbL0LstrJeoX7aAuMv5s8ioovwbaiY3eD3XzRRMvD7ayyLRAsE1M0mH8LtsSfiJjy9UVdbF5iXe5NsH2Zp8TOZTlg9rFhzqXD/ujp4NnEFbpNkDNi+TjjTQ4sdOlKiNnnj/hThFiXEPPwB3ryA35ng/IR3cQ6Yh6GuvYpbf7eCjcaFjzu4YkCQacK8zoRL1ScmGViurUNRrTWZlsuj4b0NTu/f+ryRAeuBRR7DreC7nHZY7NYYiCoWUJRlkiKro4B1ZZEfb5L+ZOd0gQCld4fRoioz2e/flR/3r4VtttYLftZlQhG6DX7/TneqF9299rXeq2wPHSj/8iGBFias0005TCx3/kx7/5mn1aQlEqV6e6Oh0h2Zb/Efi90vNAmZWdIBrgKisuy6WXCxdnBb9mf26PwgYomS8lM4OypKPObmwUuo1c1YNQevVGxqz6nngHl7xpDDPdkwWNGPbFnzfYowiJtfbRkEcgvmRcxvicD/pSyujtzuSD+BSI9GcuKYf8RhvEtbJmwoUBzgDmOGJe1lXerRwtBRud0APu2TDD5EOS++rMzui5nqzHqkwkGD9+G8mzKhMrvW6LaZzug0PA0vwjhYmhfu+qc5Fg6nHMYHrMqdkEWpwpiCzPTYczRxPuSazHUdCwu3lNhj2x3bzYvIJ6ryPBFrMnTYtDPKXzESzyXusYgc15LOkQeSRFs8ymB2VbL7Jmq7JGWjyfbQ90MEO/7rn+qrAje7nZUFGy1R6pXpYW3Z3nA+I/PYVknC6F9NesCfQt39LmN44Y3hze897T14hguhFmnwhO3b3VHWw/d/1XY4QHrXn3t1ztYBKlBzgvf33BHnV7a4QEPiqByltc5vSsxoPl61Yd6eRe0hFVIN/JaMZw36pCc/TgGlGy+/1r9wQXVnvnyh2OsCC66DSpL/YkF8wr5hDs+LuiwhCHz0JVWUFIJHo2TiYVhX0Y3TjFvNBcVHLY81Aryw6VBfYtjQLRb2n/IyxtdrZSWOanfCimLFgteiYgGk+sudzIOeSPBLVe/HzvfCqt+eS/3XhsFPb9ElK4reyMVf+VHt4l8bdWtwLM/mVi/p/lWvCDytbVS94iZRRGslc8eX9mfA9XNGzr9pF2QzCzZ8dephcDd2brb1i8X1JcmdGtUO6OkqkLRy6eKoFZFoaq3KxtsN3y93Sfoguq/iUhv06yC0xMnIT2+BF6eU7VgTvdClkZbO932V0GCnpM2q3spdLR63lEL9kL+hnHlvB8qIf44Y13s1xIomQxj3HTaC7EwxPOZedRAvW2gu6xjPhgK2w87gA9KUeQW3xdVA0bdp51Fk/KgaY+xxfGjPuil1nG7rI81kPJw9/3JM/kQEji05u1tH7T/4I6JgURXaPbJLS41K4IOI+6YQ3XuaHIlL0uqkxtIye+UGM4pBJZBldQ1he5ofzDfWEquI6z8Irx3c3IhRNftNXo73wMtkzBj6PNohTR249Z9e6NhAZv/oOBnL7Scp7pT1bUVhjfqBlwMjoFwpW+P9Me9UN7bfXxTxL7Jf6kAt8arGOBhTvdbTeyb6tQ3VjrejIBInvQsJy8EVwtvn9660Bldq3i8SzMkEnbnHZaf/wWB7uTWz3tcnNCCc233rveFg5XUlLQfQxks1GcXrpNxRjltilVpNREA36448+qUwV2GgrvXPjihI/GFup9FWiDwhbOBmKY/tN/WXeVf4Ivat52RfLGpBTxW5BbvbfSGVbb7oOKZL/IyDtxcqtQCJvuzjg/d8wY+gTuhEna+6MhvaF6xswUOXuSbxWzhAcehrs2+1Bd1VDFc5VfMg1+MFVF+h7Mg+pSyYu9TR/RBzkYy+0QuuK8SWb74ShYkHIHILRqOyIt3Afuc7Fx4Fs0swpiQCblt/A7R9o7o5SfP4nZiX/c0W/NeSGMY/Np3ye7rPA9Uv4xtm3FLGcw7uMukZCoEGsyrbeLXeCDpzcWSz/jKIfpj3JW0PWGge2Td7y5ND9RVfnDJqcZcEI8xHTDbkg3rxPaI8nk7Ij7V8sZtYc1QKHasOvgSgvbdQScYiXoy+0jqLNvIZnDXkFBMyS2FN45ZG+d6+CFn4T+7GVqaweG83kVXdgQyqkdHrqr5oS1qMnILif1+iMaLBL45pWB9o6yUVdEPxb8pem+9PxbsI7PaOecEEPV4gNmklCPKcr/0iW9zLHwqkjhwQTsEjLZW5nQddUTnovhZ5uVFQ3hqmEmIUxAschYxWV/hiDyWylXn2EVDj4ehXMLqMHDea8LZ3eaISrbm3rhBxNU/5ZajjY7RIPMxNPJ9rAti4t+fvPt6NJztc60eulkCie+CNmS9cESFwQxKW9XIv4Pkcx53KgaPzBu/JV0d0fLwxQNpm2LhW/mW5bbyJSCgzsA8S9ERhX46sJB3Qw5sfK/TbJiZA+4XD4m2tzgg57TqOTZ5OdB+R66BQzYXbtY+2nN9mSNKzWHx8xvLhti7BQv1rHPhp/wmokpzQGrC3CxCI61Q4eWT2NWcDrfmfwvYKemFms7HMJbUtoLY1qDePCKfcCrs6OB/6IWO5fF2rKlpBYvvZ29a3UmHdYJBByXtvdA+2VeFW/tb4a1bSeH12gy4HS598KWsF1IPNv019LsGJs+5qRT65cGgFNSscfBBi5nk3X/tjYQ5a4cMBTZeBvl1By9x5Dgh67ZrDQnhUXCOr2Xc6PkN8Ih9c+wsjxOSqlGYE7MlEn6fies5deUuXJDqfx1Q4oTUdV0rFq5tgjezHx6eaM+FAr85ambb/RHPQ8ULZ/2bIEJ1Vpx0Yi686hfa7yvljzSCxbwQVwtsU10gf3NlBbwP8KsY7fJFGw/ZFdZ/bYYvD1I9RFrKYdfPe3uOb/ZDeyPsDskT6+53IKuoj3c57Gc3XpjZ6YvyAgWf+jogKHr243Dsl3g4PaXC/kaQyCMlK0LCifVvmPB22bmWODh4eR9H5m0iLs1jbbj/GQFn3NaiiqwE6N7R8uH9LXcU1ejG8fpqOGRxcMxddwDBnF6b4ctWzuhm+ezXjiWPYH6mogKPJgIb7mUrvYCI5zW710rKh8GitO8KWn2lYGIpFXSKyQXxXuIS434ZBtJ6v3iswhA0nP1Y87rKGVkZaTO5ZxsC1xrd7bXE/3ff9tOrkOWeqKxsJfOJ+blwNcw4hWusEMa5PF3nizqiseyd1+/vzYHJ2M8LPWYXgXjOSqHelw7olbvISIUxUV/uSJOc/asA2jqYAwS/OiCvjKevvY+3Qdbexf1rBkpg/5/tG89HeaKmI4IW5jtroOfg0yP9QkS91/qBRX3KGxkz821IUKkBe5NNdo5EvbCnV41XnN0H2Yc83yCSUwNvarW5GF8Uw+/MsXirUz6owjzlppNcLrxs2JcuubsATv3SjlBTdUS50iwf12nmgIFj0ZOKoXy4fCtg6Ge/A4p4cMH1l0k2uF77+UIquABuBt0y2OzqgFb93OopEl0DJnPaBM6gIujesoT/J5F39Cp2ubEVlsJQcN9RrqJw4FbhTle55oY+S/PxF5iXwstj9jpNeZHwJNov2OuQGxJb0jLgn1kC56bcv383jAAxw3HzqSJXtOvyUv3GljzolGE4ouuYAe2qi+fuWuOERss2CRtW5EGs+RzuJJ1MYJDV57Be7oTcvlzslxnJBQ3t4KjGwAzw7pNHntGO6P81XKbxUChcHJ6kSCmV1L1EligmKilLcRKyJVuRtC+UlMR7c+mmLBnrjJkxaFF2WbLNYBgOpuEy9pAkVwkhS5aU7Z2v59P5nd855/88fy9LmVMby0H8X+W9KfXJoPGK7W7eFImVafv4WsE1oDcu8lWbnQWSYxP7P2nTkV6sGPjVtgY8HG/GTa7MhOyQ+KGCLXTcwPBZ8yCjBg7Kbqv4TnoNrt1PU/qs6agll1ftq1UD54jcwFmLDCjtSVy6tYKOs9pBeECFBxISsiq73fNhOFfYPE7AIZX/DT2YJvPgYxAxbGVuPvx3Yd1SRCQNDXh1ziw9How5E/XizxXAP0eNC/cJ+MS0bqCyKZAHDfoPlcJSC6Cp33NsIYiGQTNb7y0MIcx+788wSSqEiTrXapIXGUXjvN6vfYhwpf1Z+MKFQgiz79D33E1GXaFXfk7vEMRmJlRTCgtgZGLQ5MM1Mv7aSZbyDUWIvrGu9uW1AvBa7t8XsI+MxONFX4IFPEfhBSpSehAu7Hiy4aJCBIbqm468iygF/S8zZvbfET6/Gio0ygtHpbvLChr8UtgWP96cF4KQTVG9P9cZjuKkNdtzltgw/uaJeYkg3yfTH+Y2nglH3561HXxOK3BObv3LV5ENyb6N3K9xVOQy+n8v5Ah43o2v3mVQAvUfjln5sAQvxr1oV8GHVlBRsc/5Yl0Cesy0xNErVPzqX6ATcF3wn/8gvKyOK4Qs5sjB5jESCk+kpr4Q8FzblZLEWH4B2G8mYKJ4KIq+m05dRa6Gv3vfx0RMMGFzi7fQ50vRONk6dMb3YDVIxunb5SELjLslXHR3RKPrfUgykKmGsmuv57z4TMi3rDAiiEej+Qm3g95QBqYuZjL0FA4oWZxzkZCPwIVex4qqLiaYubco2P9ZCMIWtj9UmSR0GyI2Un38od3BWVR3pgSIlmc1RZ8L8tpeSlyzKwgWTie5rUstAcu9AY1nbSgIw1P6x52CYWl+27hILBt2Wq/PnTaj4PuSqbJDSQiLx+2ab3elgfTHe6NLhmRsWoq7omBcC7pVIUr7/ErgW3z67k0ldNxZ/A/YXK2FurXbfM29iuHF5C9tSgMdy3Zv4EX5VYPS2Adb8y150Btfk/TMLhofKGmnBnZVg6VHS5bVyVzwOyES95YRjfXXo7JzZqohh/VcdcEgDxznH/y8kRWNojJRLqE7IuDCRpFI64J0aAjqHhH6TMbw05sW7lZEQvZ3uzir3NegHr3ZR7SWjNc7VLYnj4TAtgLPpqbpDGgtsAl8pEhBjUzboho5CgyJXx/wbk6HVRMX21mRZDylqLyhzrsYgnvPnQ3KrIKmIs2A+8OhKOthGsC6UwK6Bn7lSolV8LQx4mbq3TDsPrt8w/dLMXT05hfnra+GQ1dtNYqUwrBrYSl1/kUrmMVwsx1YbDDZ/VxusZ2KuX2VfB9yK3gYCg8fHCmB8dtpKZJTVKT1ysrm/K8VUv2bf9oVs+Gfw+qkQRWBR/R5ElClFgr7haJy2Syw6lIsSEyhI0PuNN1BthaUpXhvDPOLYKm35smVBDpKNP9i2jcKuL1CozNmkgW+rRTvpht0DPYIJSgQ+BBupRgzYBsKnVLOvhebGLh5o7nGq2N8MLGQl5YPJ8Ne5y/2I98YaHXnUFhYYz2sYOUsHD5GAauAUqlHbAaOv/T/DnEtIF8S3K6sxQG2T1uVwyIdr295P/UktAXm3VbPyCuXA1/MmN30ZwyuPq97QNGtBWJGjicd2cqBA9fUHD86xOBRdoNmWBYXrImGt8ZkSsHVfqhdZT8VDzhbs52MuZCccuL00gQb5iofiFcNRON2FcJ+TgAXLnLrdkjas+Hz9mNe5yWpqHHG9vpcWQsYyZmSCXMcmL6z+e3vAsG+vSKLjY68gOz368WSmUnwr30218Y7Aos0TZvdOxNgRv6gTm7bK1B8w9C/phuB5zw6vPsHXsKay+ZPqyeSoBimD5liOLb9YD2+m/sM5vdQen5pJILmbbPodaKRmKlVXMq7UwtlUg5viYssCF/bECPRLphD8OOTX8urYMz76MbqrDIgLIkeT6ml4PqQjTsbr1fB4Th7r3vSHPC5tuGpWQgF1z3KH/waXAVKK0UnG36WQo79ai4rgYK3enNP6flywHviEq1ILRc+a/cZuI5G4P9ETm4anBDMnXRHaoCbA1Hhq3YY6kbiglZFZkBgOby5MtdrKZsLjdcI6sTnkVgmHKu24hIH/Ix8fvQIfHHv2Z9L6t0ROPs6VoWvVA7UgY5mxalSuMDjyfQ5R2KDyK7a00fLIeWAztOjk2VQ/cl449KdSExpTP8UZM6HoXX+IeJTcaByclbBf5SBazarDxS218Nbp7/cjsvGwbh3o3IMh4GGrhMGF9T5wGTjmIkWHYxCXww29DGw+9BOoa9r+DBj/nR39vIzKG6sOOfUxsCjFzisJJtmIExNpZots+CPiSGt8AEGPkwS1aDINYPWt3fU3GYWaHfa2Hitj8W1jYwTyhrN8MGtZ5KwnQWG6b77V62MxfKfDndHiU1wT8Zb/Yh/JYQRqz7XWcViYvbjVCKzCdDLqXw5tBJMXfNlyg7G4r055SSGaxOoMWedtOYrQXA/BGmTWAw4MTbhHZcNuzL3yI0pVUNtDLHSZDEErXWmjhVlZAKx6ZGDneBPv2x2+p50lISm3q8XtmpmQ8yvet6T6ir4sytrv94aErqvGfM+ufwGrB5bSDuqkoHygfJelB+COpefOd93yQYNEe6DlNIoeHImS/i3EAn9m0SX88g5AOK3My3+DQGFjUx6f38IytwObr+bzQPG2g5ximslCKu2FjxNpOH0hs/CPa48CAmxkdxTUwlCnvd/6nrSUFj1ko+5IN9vpqndS7GvBPGbVxf6bWjIGs3QP9TWBI6Hv/NWGbLglHGf6XmNWHRx9NwbeVmQl2kO//w1T4Y8g4vWV7eQkRF0a0khDcFeIiBdXTwcdDs+ib01FuT1LvFQpiDfFRYvX34XT4GQ8+tWS18nY8QPlx+aQa2gP29Eft5XDPln29oJYjR89lZ5Sda6FbibHH8PTxYD/3j4g5n7NJwT9w10vyLwFJLSkbbZIohviQqWtqahc6rapZ/EVuj8dlm653Ax5I7HV1lyaSgpusIu3JcJ3ccIm3VtEOSybm80p5BQwZwgvHhT4FF+M/KhVxG0qu9TiydI2EiXMhRbwQK12X2rqzgI+/7r+ljLJaHeNze1mu9MCOQMR7kMV8DS1A1bSQ4J98hYD34ZrQNXE2EPqn8F6NQ9qZQ5ycD9vzWNW17Uweu2J7v8jAW80Uz1mtzJwCGL6b+rahA+Gm/YpOhRCV1dGTKDzmQM7EmtqBXwh61IyppegWcTSavkt2iTUbHtzNa7Zgh2OvQc6q1KUDLSS+CuJOOxrkfhw1uZ8Ikzc+SZgD/3vRTjjrmTsMzKVH+loP/1mf4fPg3mgcguezGeoP/Zvl5px20s6I9Wd00QKYDc+pAynUYS1mwSnT5syoNWL6fkgXIyOFU4+G07S8N/B58TD/rxYD5eS1dsfwR4qu2WGX5Iw4z3QmyVcsH+/CwhcJEMW/NfaTvk0LDDVDtpnRgTzDl/Og+E54FK8ynVwzdI+Gri2qXbywJf+mTiltpZBVnPFq10ogXzdI+ZrcjMhFPupycs4qrAyeXRNivBXVDzxrJV7bMh6IRldPxuDuBe8UcGqwQ+MkmsLRbOgmJat35SHAeScxOCpTRJ+JfU4FZyTiaED7/V/11dBra8CHonkPCP0VTXCloArJQXGrtJjofSmzH5qzwpGHBe1Nm34zFcSXbk8x0SYGRmluDvR8ENwdr0nhEfMBNeffFtznNQmZ20VKyn4NC50Tnlj+XQmZUWVSOcAfeOFMgFvI9EYv/t7fcFdY9s1UG77lSQFPY3Ygvqj8t8xqkxFdDVRt4exEoDnYIEjrxjFJ4wyxN2GmmF+gC1xB9aCEec/z7x25iKpSlv7CwnW8GzNMRfXLcCNCU8sh/qUbHzdy3ZekcbLKBRg1VyBeS/4KR9HI3G1NmLObOfOfDrEjPUYmM6/OFnvXpxbyQmWBgWSbCiIZ0W6JV5lwy+9MBzYWfI6FD8WCeskAb/B6iyCDd4nAyXdzzUfxzHzUqRkVWEUhIVFdm8RUnDXklISbJHg5AZZ96dc3dl7733/jh7c0glO0R+RkNS6Xf/fh7fx32/936/P6/38+lQEyzqWouHW+Jd2zgeLDJsY1jJqMFBk+pBnf3XCSDw7G3JiDcWkTDV3zUk44BOXH72lUUMzDVN5qcyY9FB2/jvSRZUGP/hhuvxagGbMPM0T0sConq43axWpgK3B+b3sHQLNFaK7nVOI6CIdLvSJ45U+MinWNW0i6DO6bDuGRUCGr/chm7IUsED8x9ODt8C58rpjCzLCChGI7v+t8kInJVV3uy3z4KKomF3x3g8YtDcp6UvMgKVY8wfmi5lg6DbZsjEKh4NFueL4Yd94OrtrdfvuCnwyfDw6ec1OMTlJSRikegPu5stScczKZAy4Sh+Ih6HGsh3awQEPcGAR2TPXi8KBLirLgut45BqjOwT7/B68CN7+7aKIeD1aPC8UByJDsk3sBhO24LZjn+n+lg9cF74hnsrikfMSWHIvP8pJCgphog+rIeJna7zZVM4JFc2VrWc9ARCPUz5hYMboLixNf/7Ag6llthW13KPgMfzBOunF0JBj27xbeg/PGrN2RXiYRwBk7/Npwru+MCZodjxCcFYRNzdjY2RGwGSgvVUzLo/HFxx5JrtwqMzJ51vqFa1Q/FegZULfK2gBh6FDV9j0bpwgkTPmQ6wnPqhaLW3FVZ9Xa1itQio+GqQo+lrR2j0iWZr8M4D95v1Koc58Sh2qrm5T2cEQrefq6dQa2H/5QDsUhYeiVMdr7nmdEK0UMc1dVwdiChQ5CT14pBgcObVttROqDgwLmSSVg98xFa+9BtxqK5FRzRVoxNWBC4bOMrUw/UBjIr0gThkZiGyfnpfF1jnORuJ7KHVTUtrbxI2Dh1na65oud0CERUSHlcuOgL/VoGBRjsWJTzKHJOdR/Bv7wiJn9sVpIcaUxxdsUhOcJAuM6oauMSdxCJHMsDPVGHT5Uk4ujU8/+vEvWpYo1Nh2vDLAqd1t/yD1uFoUCYujJlUBa/+sijPz2XARkTNZg1jOHI3SRFILuiHqocPIuzmaX35z94y4RoZdWlf78rz6AeNwqMnLKbrYWms0OKFGhmxmwSLVL/vBwzrJ2fb+noQz+u64K5DRt9yk2q5BPthwIx4z9WvAQb9hb2fnSWji0c80mZKh8Hc32snMjgTHF1Z7jL3xqHSk07Hg/HDUH840V5lMh00K2Vn5vcT0QjDZmBO3zD4BT0rvk9Ih+b9G5MHY+PQD7YQf6awYQhRMTk3upMJ8vllhT3CRKRUwmsxxJkIDLnF/zV3PIeGGnOe6rUolH66ZjvOMhEC7j0zupH5EM7rsUWOfohCVf7G+WGsKQARNZLWGY5wQvPew1MSUSg+5mDVjSEK5F58Ilzk3AhrmU0PrcdwqKSUatH0bwgMBA+4XljDw5j1E7WDXCQk27i6Ps4yDEIPuu/uMkQDv+GOoTwDCQ1dO4llaKGCc0Bzk4VDATBJaZK7YmNRSnHU1utaKvB+hAfuY3mQmbVzbCM1Fh1ZtXo0+h8VZMRlOfiS8sB6zL2HrB6L4gsjz+H+w8O2x+FPn7lbwM76k62sARbh++xkHjyPgwKv0gNxMi3gWPcuNngrBnGy3tFkrYqFD1W3bprjWqD359JfohwWcSqGe+LPEYGH911XRk4LDNlmNDq1xyDNhzFDJ25ToUlSVID+dSxsYx5yDdoSECx7//WSpoJZ1rKQWTwe2tyyJBobCMjkJ/tc0k0qqK993pm1jwHXhost9v4E1P3qlSzPSSo8F6uZn/wWBcfmCnJvjhFQwWfvJ37NVNjk9tr/jDMXDn0WWMkjxiKP55Ncyv+lA6/r4W9PN+uA62nhg1NOEYjHuMLN+FQGrMxrWzcP1cIvO4OXWiYRaN1+X5yvYSaIdBfYKjjUQdUnxQitxXBE97W6JCZ0GN7MpU0ddGuB910WVaUiROSVrog5VTwMv1AQd+tYC5xdLJzIGIpDvkczj7i9GIYsvVdxxXQUwOzlf+UlT0QuHw6dvF6SBkbThNiLUAe+KSn7gzYi0PuafHwgYwrY24XKYqqx0P5GJjThXBS6yznvGRqVCLMles0DohGgFOlytWogCvEzH9N49iAFpAUH0/c8CQPzK7tLrP8i0WBp1mj/h1pwv+DUL3W4FZpYIyePF0WgMTmu33NVw1DhLELf00IBXYZ4jwwUh8bVs1N4y4ZhJmiY+vhsK7BJYWvjeuLQXp3KL86vhkGg7aa/M08rnPMhXl89TkSeASm5kzf7YN/7xMz/eiiQNX5Cy+o/ErIP8P0z9LEXPgd/lpEUb4WBd36DyYiETMqJofve9oLi+ZtsvikU+O2mwlDXSELtEuVHZPT6oCTDcXLpTCuseUxPxa+RkI9/V5fsVBmU1Tl5qjKUwOFgby/5uTAUYEBULiOWAxf7JZ5Q9SII4HY/94cBg9bZ1s72rZZD0erFSKuzJcDQ+CQFeDGoZjd544h+GzhlpeT7dWSA9IvZJfN1PNJRMFM/m9tGu0dGXCeW00GNe5SlXCoWNfLR/TyKaQN9lpXLL6WzwCM0lP0mfyyqOhzRX6bWBo8OtLNkXk6HntbpwKQ5PIpS+xAaKzIEeQnxR3V7qyFVIySmkY2MwM9VVnJuECRYU9/K5tYA03tVsceSZNRUKNL5ZngQ3ko1HaMuVsPHFL7HXVJk1BLBlp1+dwSiDiefcOwqA9t089kreDz6R8djLm4+Al+V59Ybv5bDI8LqDAsJjzKVKiISLoyAmML22dsM5fDV6cCM1RAe/V75bVee1AM1B/9a2+iVglnF+buzJ0noxXOiJdm9B7BPrIxTYksgJnJscZyNhLauGjM8WeuBwJcmJrahJZCW4vLwiy4JUfBhVtw3GoB1OmmsxbUZckMxgX2nolBT1LcNTmIDUGXYoip0ESzNnbVKMI1Cif8YM5e5yqGf0fL6BB8RhpM3x6JXwtA9u9Cp+aFykG8/shaZRgAlnMtYETsGWXhMqk4ulsNc/EAe/X0yLLfmx45yY5DymOG9iqvlYCdbddNgBwePq0aVo76FIUt30pBZcD8oD9Z5rlMQZKyfeGd+mYxqYz5KHxPph/OaMs/2/0ZgV4j76nSOjN7bmgz4n+oHpweiX2u8EDi5V4WdlCajv/1lZOm4fngnk6LvatIC3XRuI7xXyOhI+6kql2fV4Dou0p/HXw08Qxd+1DwOR817IxMYz1XDFjY2ppO+BrAMN15saoUjD8b0PybPWiEj8ld58W4xdAk8Mu3SxaPpydwKfFMrWLnzP//NVgxnjoXHMAXj0QjzWvu0ajXkq9Ya6KpXgU7MnNi4bjgKcHEYkCG3wo/Ml9THbNVQVM3uNmeHR1TTg+KW+q1QNfoBPx1WDfVvBEw3LuLRy4DNeCZvKqxea14s52wF1w/3jf6JEBBjoQG3kkMveJryrqnFNcPemRI/XBQJsS3q7FOQHAJ+9nsPXlJq4Nd+wSN/mMkoqIjsIRdEhUXRrLEKe2eI2b9ewXmQgNwWGXmeqpeB9LVy+z/LJXC/sMfQcSAMKcgOEAMXyqBtoWLsQn0paG2LOxnOhyE2fYZIo6pSCDxUrK3fUApTFqanLFvDUFLZVn3dfSqcHnbMxNF4xvDZq5NeugTkmeJ9wFuRCuWhS/QbtbWQLV5yXzmbgKzvMJ4Ou4mFpgVn/tsHW2FnW9FqLReLXrmTt2YZeyClqof6RwLB48ADYpqDRLQcVKa253kPkJ4dKqtMbIYjnW2NoxwkpLDzPYaqVA+rfmcNYiya4dLHuctf/CLRPxMORju5Ovhwi9VZUqQZPHX3ncfORyAujlFJp391INSU8dE3qwlkXZsOXTaPRBSVS5erprEQiOfU2xPrRMtRt3w6EhY1he5rnFUrh0sl+vy9H2g5s67vavA1DAXpcYU20jg56nPQ2qmLRWB773UXhcbJeeOs6/tmqCDU3VWk21kJ3CMznMrmsejdWMPvgC4q3EetDdyDVTBodSE5MSQWzRuf7V7Pp4IX/Q1w5q6CKLmQceeGWKTXxfxmQSUHNuYTpzZIFKD3FLLfv4tBO5TW83rvcuDmOdvDn1ko8LfQzEjvLQYV9AxIeCnkAX6k703FPQp8GJR4ufcVBkl9+c9HMIoKSWVN5xs4q+FnZ+Pmp1+xSLCZ17ItPw9IdLMTf6Za4Hip07KYCwbxmg97uws1gWsb+ULBZiWwfnypkGYWjRreCjXEljVBy5BfS8aeSpj4uU7QaYhGEy45PlUczTBlum535kclDHAeL9L5E40EeufXfqz0QWxQZ/p4SCJU+sSgUREyUrij1MSk2Q9GcuFdbqIpUClP52x9iYzEYn5ttff0QVXHTE2SVgrQ1dVzJPORUTjhuzHJsRl+r45qH/hWAUa47ZdKSjFIfWVNLfBkDhwu/qLpW0OAzb0eorFM4Wh8So37/Nlc2Ino7GuLIkEdXV1QUQsG9fWtUd++qYAlC5OZ2qQ3EM4TPJV3BYPYf+fXVJ2pBMVnxUmReWRweuksy/MEgzb1POnOWVbC64LaAqxCAqRl6b8n0OpZGxa0uIdQAClOV+/Svy8Aaxo1MglhEH1+sKzSg0JIc2uQ1BfOh5vbc7PmjBiUnB1bruZVBIPKdlF4vkJQSnwyvr4YhspNyQfUgobgpaxoxdwGgtcH6G27KkmoXoteXdtmCMpUYowvExFctOCJkR8nIdO8z5tM/rkw7TMZ13maVn+X4fW7RRiEnvceVa/po/FnSXqwIoLZqPJXDFxkFFNinu13rw+Wq6RaHngjwK6whHz5TkIuXSUn2az6oPFdx3+HmBHQH8ytZ6GdLxNKj1kIF0DyfCZ2NbgOtGNY79JJYRDz5lfGfJ5C+P5evnuXWAuNKpsPplkxSM/vQJUfZxHY9KeoaBrWwRiTpHT2Rhji1jxar3K2CM5WDHx70FkGNsQBh6//hSHbG4sY7rwCkHpx9qiMaBkE42Wu/DpC68uZa1dEu4og9HU0uZOWJ8Ya6XVaM2HoAu+xo0yu1SDenZ9QdqEezpXwR562C0ejU0nhC8o1cOdjNr2+cz1IJAXy7PSFo0+369XrK6qB7G/vF79ZD5fVcSqBYeFIqUry1JRaAaxPyW76cJfDcXOhEiEJDFLcQ3RIly4GeeMrgeGO+XD/AOeYw7swZG1/vI/4phROGwQvROOLYdLV/upqSxg6cK3sIX9rL+Rf3L50RiQAOqf1m0Jp/eJ3FDoVZNgLqeHmsv117nBMH/dOM5CE1GKfRNnN9sLl0ttXDZicgWHfQhKeQkId7Fu/z14agIEOuZ6I3xlQ/1Pr+gMTMvp6/HPFu9oByG7IywmLyYC6Y+OkAVMyqon917U/YQDUnFmUFXmz4P65+ZBIMzKadlM70Co6CPsjp4wyTbIgqqlhekaXjDyKTu0N/1EER4dbTywG1ALjONeL+o9hqEo2UKLqZw8kqKa5qNgmwKv08oV8IxKKGl7d4vbtAbzw3QAbnUS485hgHX+IhIzeEw4NhfdAcst+ge3q15Dmdb9SQICExIyTwuhkWmFWeBX74BaNk5mrOOyF8Oi8xqW0DSoFRIXedQvy1MPZya+9uuM4VHQRS9/aRwGLlyX5Fax1gMO6mfdQcehr9u41O7EeaOjRKQs51gxljIpjR+aJaK7Z8Nm/iVbwnNabuhSSC7rLauvE13j0osrdgl2lDdIZlJw6fmTDUTGuiyUzeFTcLbirrNEGRzWoOcQ9eRDFYpApu4BHnZsETh+hHhg2ERCuMHsDZQfFtAlTRPQherKjd6oJ7m4rq4eu5UGlGYeQ7odopBo0kPqfaxMQ9xbF8HwpgM3bN5q3Y6IRa9LLVdJCI5x79wq1hOaDfs7HgIYL0Wg07XQas3w7qOqPVIz8K4V3O0ekX5NiUXQV4zxLRTtwsE0rdvuXwfd+3VGxzVi0z6ouX+xROyS0b6g4nSwH39nEOJe6WOQu3JsccLMXniwWvTfyo0AfD8Hskx8JySSSnN8a9EKy7j61pzSPuMV1o2czgFZ/Ao+n5o1WOPi7VILi0QR2m+qGz6TwqOjF/c+4rxTwPd1RpGvZBE1sCoPP1nDoWfdzbWZR2n7NaOk9ld0IdLgdyhYnHg2HqXmrCNPqrB+w+NOhGSzcRv3Os+ORYfiniPq2Vrh2IDbvhXwqDOytKwgLw6MtIzUm56NtIPM0Lcn6fiqY3CEfD+vGI1/1SxU7q62QXHn6UclwGqipGCqxZOHRKXoUQtmg/c6xVFsRbBK8m5MIGMjBo4kelpy1hnZYfTKezhZWCk90teIifsaiodcvYi+8a4Gm1yY3mDgq4XkrS3SMCG1+9npSn1nQ/Krit8nlmAqYdeLwuNSJRQb7mSNdaJ6ZORxfPLtSDp8Ti3f//MUiacMwrDi2Av7w+mhqthWAphLa8ryMQT1x2+knwitgvQarFDWTB6rKO9fyAIPSuqbpbK1oe075uFGmTD7c7UhnYw7FIGuqFkbakOaxZY/yjoRVAsH+6Vg4wiLV/fqckjQ/FROeuJuWVgkHlQeSrQMICHufeeHyC5qPsxhyaZ6ugl7XYUZnIQIK7sQZKBhRwcn1w6tT01UgGB0nq+JKQOjxqM13pWFo8Fj2zVVIhwsHmZOMi4ioFItj27w3DEeDjzArRWRAzKb0HhV7IqozsfNplB4GitEn0VN9meB2lOLzoYWIes46/dh3hQrzNi+vC9M46sLOzno8loDmGDnNyugi4fV0mylDEgXWxCNl+79h0ZH73NlLQ1jg3nnVUVxMgQXrS/QrZCyyeOIckOXVC7salTMsl0rgFZroNyaQELPvbLfXSC/oaafuGXtXAhm6fVspDSQkp/SSUuraCx/HYpceniyFb5CkfAJLQiEmHc/np/FwYuOR/fQyBRzGL5OZjLCIhhjxiqIjoJjZz1FzsxROOqtqqH7GoxL/wPV6+RHoknjAv8ZWBgc9+OKPduIR9tC98tNcIxDyR1qyVrsM0n5xcNUyxiIbrJrTTjYVzozf31up5gtc4x49F9piUbVzdMgmjZNDuw9I7d3/AgSSu3d5hAlodvKF8s/4HpAXoL/IEVgMny7/N2R3goTihvnWFxl6YTZ8b1fEdhE8H74UeM+chLoK2oPpzalwaHLs/HarB9RWb2z9vk9Ai2MDOYXLLfCcA4ANi4UB2b4h5bM4dGtcc+iTIgUYBLk0LhoT4Oz8jVtaj3Bo5BjjaQxtngM3t5lv8MTBgeZ8vQHaPE8FXEm7eJsCw1ILp+d9saAZyIq764dDB7kaTQ3E2sGr+bPp7pMW6BN+LdUaHos4WI5KC4y1Qd0agXT7LwIftd9lNbqxyDE3Z/ypXDussQonmywgqLYbKj5Py58BUf88VykC+Auesj773Ble3h9nf3AKi4pnvt7tq2qDpznojcbzFvB0EnRJU4hFOlocLNSzVLjKFHnBhoVWh0StjCcUAhqTFXXEWlIB+9jbn92lEN4e07M2NyegAy9UhCtuUKF4GLlaPyiGyHNUectA2pzT2bUpkBuBvyvLa+lBPTi77x3y/xeFLoUZpr/vaoRIY2n+O9g6UM11+JktHI1M7JbvyxCaYE/94zEXyXqgxzwjtWZHI6lzNWUvT9uDyJfTTLK/m+CjlvMtyhE8bf9inGQy78O78bydY0xNMBItI/DpNB653DtIb1HuCTORno3nTjdBCsuJ2KgvOCQ5ablZbDwCt9vjnsaeTgGbQpc3Col4xJsgE1RtPQLfHAQuvOFLgz+B124ejsYjNZXQPHnZETDyQuqZ/akwG6AkZd+HR637/RaLu9thQIU5q14gC6Z7ieyVdARkr0rY5Q9sh3VSmPbx99lAFLFtONMfi2Ily+/2uLeDutggnezeLHgh4J4kTIlFQsFH0gQFu4Du13tplYFMWHrd/XcpMQ4pBjLYYu90wRY5SeHEvyxY1uAbHemMQ2S1bl6GnU6Qfs1fN3M/G1QNog+Jh8Yh/k9eVD1yOiR6OOWkHWiABwp2vFdiIpBQX/k7Bs1MCJiIJ6g8rocgK5knfV/C0cT6h//8LDNh5fXXQfqQBhAtJdtbzYWjAzVGCYaVJaC4pEu31x+B81KEMTcKQ5j8PNHwcyXQMKkuwiyMwP6Q+ee2zjCUF3oq7PypUngqtWQZxUXjxtebmpVNYSi+bOeq6scSYOJTjJm+2Qysed9L+JrDUMTi/q3zY6Xw5tEUx5nAZgjML4+52h6GuEIX2fWutsCZrA/njjM0QDsuaPl6NRadw3d/Uwlvga/IvNrleD080mwTl/qMRQcdv72RTWwBgy3bAFvWBpDcULWY+YFFkc9jnwtXUkF8z9k6LBsFwucEJHF5saj+lMDt/A0qPF5Zn/3T3gKY6wI/XivHot6ZLOrmJBXinr4PjzOgwCelTHVmy1h03XRp79brIfBPWPMd5K4Gu+EkNcMEmlde6NvaTR0C10MYNemLVeArtZH2Dk9C9NGZEuWjQ3BzR1ehx64KcnrOyxvok9DVEyZDj/lCwGifx/3v+hTgE3333toChwIPmmco5QWBOP/zg2K1LdDt+fn7qCsO7ecLnpAdwcBbrssrHfsp0HgsK7uAB4d6s8d5C+W6wO2BU694bw4ck9A4IFUSh3z9fHM1p6lw5Fh/V611ECx/PCWWfIfmj81PdYpWqPBIF59Z9F8kMNo1NUpoxaK75Sf0H9ZS4ctK7x3cSCjkvTIzM0yLRcWTB7otLEfgAvGtMzauFNgnDn7XxuGRYsWjdQ6LcKATFbv7PSsUvvzXOerMhkPTmTxThJVAEDbZmDkvEgkVS4P7H77AoVXGtYJ29RBobjEwyDYJAoqGetPObRzSfPT5JZ/KMLw/6fa4y6ERvNrv0BkXENEpbMiv7xbD8OLH2k0NySZg2VgwjXYnIvZs1p4EuWG4milDl6jYBJfc+PZsVhLRBE/dBL5iCE44cGQ66FWCj8rJfb9fkJBK6OvcMv00CLnL8KzxWjo8SXF61XM4Er19PskRZJoKPeycRXe7U+GbpW/Y1YhIxHwKP49W0+DHHd4DLD9S4Vz4nTuJbyPQYShRfhs4BFrf1Ef5NspB7NSKnEIVCY0FzCQvFAxBgPxU2X33cqgV3L9DDCEhkWOC2MD8ISi55vWDwbICSsbcVG+FkhCBqUVo3KEeav6T35nXroNr+92MDBIikY7lEfvBiHrokxl5HRFZCw/GspiZSyJRmBifgOzNBhBavMe5zVQHecf8aoPEoxDr/hPVExNDIO5QFKxlVwHpi/mftLRIKJgv+6oYYQB2josp9JfVwud6upR0Gv9nffur2/h9AN4V1Szo7dTATT2xORcjMjrUoMiS/G8A/jbKGZ3aXwfne2dEwgzJaEaz52WEbi/cTtr73YwTB7at9e/u+JPQm3eNL6UzeuGpaPew7ToB0nmur45kk1Ayt1dR4tNBSElRc6E+qIXaM2yvszTIyCg721h2qRN8yNm8XsYFkMlCKYvyjkP3cdac2ac7Ib1w5U2oZDOsvL38W/UXAR0kanV9qu4AD3o6f2pkEzx5I/Tsay4B8eT2fGFu7gBndZWKzpBmYJ9h4vxWREC7HwX3lvc1w6kXYp/GcMkQvBs3HuhL8/1/J58LmiG4c2GxwnRPKuj099kfPIhF3XE2ijt6CJwOmzyeFE+CruQWFjYWLCLT5x/S6hgCZqu3WXtel8B++cMxPx6Q0OAOvboa7V5b9eH5vpQXg9jDjBeNsSR0m309OmZkCNxWN+gWJotg/sr3zEUDEnrnG6E/Q5uTd+LcjmORJaDK7291jjYnlJGtgvOUbvBslxrJnMBC0i2hgJYcIpI6FM/V9K0biLiZw8IfY+GO1N1vn9qJ6LT7cefD2G6QuMZbOE1HAOvUjJ2WcCKaJn8KY/XoBLvRQRWG3yWgB90jbZJxqAw7E+fzqwNW8ZgnAZdLwfHqrtbgOAEZWLT0FTF2gvYpqUlHwxIw+qHcvTRFQI+7+ScNnIZAj9X8t/Z5Gn9G05Ne9JHQkLFrq2/QEAj6d3+rjagE56oT/cE0b+UOyoq4ldkDC/ulXOV9aB4xOertfJp2Lpx9OX+qB/ijajeGzBvBzIZ4AtHmUCvS07b1eC8wlULzy1dNkN8d527/mIT2KLLf+TWOhwa6G/2PHCkgItfrx2FM4407o2uFQzGwHlLBTKdGAWm96+s1VVjEcWcG80grGpzfSQiO5hXAfKsuljiIRTf7+j4wG4ZD3j4f0a6afDhOQ74dWv5ILEWC0rsaQOlHTeYkUmHnTd2FXKEIpEjnd9pCogZW6Vv+hEunQ+nn0JPereHopk3+DHagGkrHElJDxFKhT/Ri2uW4cOTJmPfxJY3r2snNenq1ARAjTS3YsCGgeykYrDeGCnnJqRn/YoKBkamSQ4uegPb91NNuPd0L8la6U+sqNeDSz2Q970RC+5Sf5+m69IKO59xiXmg1GDE+bvSNISHNk2cKWGJ7gSB3VWHjeQ3cBp4fbCkk9KJn9sTb3z2wh87XPSauGjKY1T52mpDQaw25fOacVNjfrf3LUqcBrjzsiOR/GInmFS9cwdSlge6RgTHhrQZwb3lF5l+NQFP/HIc/4Eoh/rSI6pkhCjCyjz4JaQlDGW4tBjbzpbCTGvN54mwr+KRc33+5IwwVSZ/TjGAohdvqlWNWQq1wzKGZJ4u2r+98YvjvK/0DKLlnTf90qwqexImbL4vjkQoxTyRDvAt6a3lv9XflQQLvLpNiVhyqb6Tz4vuOA5zO5kvD9RY45rEcxuaBRVubX+utnKPBRVn3jvxICzSLB8WL9mMR4Qvj4MD4MLxl9NKlQS+06py94PkiDlkQQwqk/hsGVkMjtijpJvDEGzwZuhWHjv+n5vSUhQruCodqHXibYXIl4dAmRxyyD3lBn2dBhdGSIvmEmxRYZnG8fteSgDIIOJtNFyoo879K2kOTCgv11eIlWQIqnih7HxdMBd4/fp/PKdM8+MRJFc0DBLRW2HnDMI4KWZOCV21p3wlHWH1vLceiwQh9k6ZHVFg+y9VGDsfANNPhma+aBMSXKcIQRaCC9NC36943I+CJpM+DjyuxKGPbm4eDMR5EvSpNfFlSoLSF6SG/VzTq8SPY/Ct4DdKkvzFzTangp0LItB6NRjonOG6SPpNgxGxJX2cxGbI3r5gL6cQgPdK9ZatKPEg/En6iXBUEp9lcKtNuY9Gu6tL4sj8OUpZK+IjJ4VAh/VWXP5CWYx5TtmmXsFBsz/6cszEYulJrKPUFtHtEWAkjGkfDsX1KSfnaETBYNhZYNoBF2CpcO6WACqVmDdgg+UYwxD+Rp9bFIn16T2d2Gv8oR3dYStg1wurvVdMUq1iURhd0W6mNCseNAhml7ZuAqC22vzAqFl3VGr7B8ocKZtGBhGKpJmBcXjwwLR6LsAZHNxQeRUBwftIwT3E6CCqTqCdo3l2Q+CfJ1TIEKiJ+/BzST4caS90b5mY4lPdAXzzleRhMPHE6mXqLxtUnpK8bSODQQ7tXGf+kSuBrw7VHcVYNoLxVbpZF48yDrjI48+4SGIoMstvTUg/P7es3/Gk8SflR03XOohS2cRkzMTYNsC/xfmAS7bz3Qs3kGLUYPmjNq2uE0bzDyXDw9kAYcnj+64F0aC+4UY8K10SEg6AdW2PiGxLiZdcWfEaugLECb+qLkFQ4Hxdn+U0Tg47rWNikJVRA6/M57cEn6VBwZN9X2asYRByM3dDvKocbpEMU8t9UkPsgx1/HhkGmX2sxZY3dkG1pkNntkgoMMSqVPFlERFecUOlc0A13RyriHmamw5+MlD/d8UTUfkHGl/5KN7iwe7zovJoGsbdaLr6zIKKPxxMaDqt1w02Oq21SZzOgXiFLXvo2EflJS0x86OyDvl8vzjzQbwI2S4w34iUjh5EyzrqePmhbE+DW0G2EYC/jsHg+Mrr6V0n32IV+YPz2MoedrQkWHLIKIy6QUYo5O3eqeClQPK2lCE9b4AHWWreGlgM7S9un28zKwPivjti/iy3gUsrHPTcUhmJkgtPp1kvhvK+PFuvbFjAt4nglSOuLkuOPZ4v58TB+cp7t1dMG8AuNtnh0Mxr9cmdzPHI8EcoctvaK4uvBL5JO3XclClUGDk/fFkgCNVbDrmza839/vtW4mReF9AqIJKb7w+DyJzXeywsB7/oFjJwdEUVb1vtIWg3DcTrtCvuvzTAb7FPs5ExE1ckuj1kxw5DGdM2NXhNBzuhrBXSUiObfjqc6y5ZCcIeh5vIqgpO1u2ETtP+Vkr/x8atfANxuux+Wh1JhRHraWTgGhz5ilw4dvTkEK5Nqh05JV8L+97ybdl9IaGLiVmWe/xBYboXvnW2vgOdcn/0ia0joVtXhtYlTqXA7oIgWYGR4ZGKSiE2NRDFH9PdlXE0FnppoAcOnCQBe5rknYiORkt1qrMJ6MjDsCZ35JvwG/pOR83spE4Uqil4RDD90g6HN4YWpeSJYipWzM1UTkVzrJ/vakDpoyxZIkj3cBDM/61dDOCPRlnQ285muOjBOftRpcaER+mNxw/sVIpFbpE2rsG09VFhzuOktNcIu3QOBC+RIdKfyJ9teTSrsz+ovO6icB3wuSsmteAL6pd4TvGZE852Gzy+qCPmQLpeW0OBMQGl77H5XiFPhmt8CuD7MB3VHZPCin4Aq+9v2sc8NwelbjCrXJ7JpvGkX6KRKQp6H+kneO0OgedfO683+LPAPhrLTR0joJGurvgDnMJTtyuUbemWDvYFk15stItIJCrn8qHkI0kpd6kxcs+A45wwPizMJOY79yvZvrIerX2/pR/9qgMUhZ/uRARqfD77fUV0sA0qhOuc/4Vba//Y/6zofhhS1rAMJ8+WQJDjPy0k7/wYceFZuDPoUyVxVY9EKl74KuGBlW+G1EXqpoYxHJl80xzjyWsHkbZ334y0KfIxWFfntiUcpk8eua5W3wj/jD/Kf4h9A8ysL/4YXeHROaV5i3bYVfOVCckouuMO17alpJg08aleVLXOMzIXMr/U808rVcNHr2PGIfAxSNzVakTuaA1Wphu9SJqtAu/Pw4uCecHRb6LdUQGE2zE4UBq0sVULQNy+J1pPh6FnClSyM7gDc0a43FmVqhbhHjDEkUzL69ydpPch+ABSex2XI4Cnw+fH+z5Y0ns9rHbp2Cw3Am80Lt80pFNAObZmIoT3vdKbe78qzPKDf4cut/1ANFTjeU15eGIS7X2mwczoXmPocevxZa0A/xDbcnYJB5E09dtJEGmwHiBV5XEJwyGmPwn+TEYi3rW2lRzyNxu2Cv8Tym2HwGf/HVclIJB2NZV9ba4O1sruVh9ZaYFMqsCPYJhYlVvWK2Txuhy4njE3qXgqc0FRKZm2IRdxiMxucxygQKOCb25aEAf/iQYUXxjg04D33PjGzBZg0Hd4uM4cB0+Lle99+Y5GXxhvhR9aVEHJxvk1JsRgylM2SbEIxSP7i/Rk/5SqQiaI8iv1SBNGCTZHCkxi054+z8GpNJejZBZVUq5VA2k/mJ3Y5GOTHf1DzrBYWyuybmpYdWiCBsW4hMQ+L7PeFYz974YA0YPfuQUYq6GOuUumDsEg9ts+gqwwLIp7sOo/V08FAp0CxLwGL3mYouTJ/jYLqosMKBZup0OnV7rk5ikX/2Z+ciwiiws8hhqd0s1jw67NpfMBG48BNOQFLz17wfe5iledRBJ37bf0mcSSk1FXgcs+Vdo/Mo1z7VZpABy0r78oQkKk/yWPUhwoiZlLT2i6NgFzj2s4LEFBkq9KAC5kK4T3vN0/zNcFWUTvp4Hwsko80vOoeQoXrE3evJ7q0wL3HG/cDWAio88W8e2R3NUSbuFumZRWCCfOzOx34cJSlIyogpl4NLRP1DpFxxXAw/cb2Z71wJNNf+rOIs5p2L9Q/njpdCL/G8np6FcNRKrY4fkIcC4qMxwp5WrHw4uDXeL8iLDojtVAtoFcD9T89Lwd2FMEp+U7t2bfhKOT9xieG1VzQmRPpZC+pgaaSctEHRAzKkVKLVtzqgd6FcZJobzmcOufovmxIQpfytKWA3AOpBu0Lt/jKAYXfEXp4nISEjVDO/J5eoCO5eyaulcFxlZROOwsSssb+ubrvYS+sydyXENAoBwFmKrtgBAmddpujNFf3gkN36pd93eW0+4TpiyghIedsS/NcrV4Ia7yfqn68AqRzsbMRPiQkmv+F8ehoM1x+nOtZKNEAA6kuLzMCY9BkLfnkgiQCHo83uOqr9XB+r7rWxakY9EJMidT3GIGqhdHasmIDaF8sPy4tgEWuXstceroZkOou6B1GDYQMvcHPlKsRqL/cx+j3v0xIOtwirWriC/nimIXSvHDEP9/hHUHXAg/PXr2CxdeClXLET5MQLJLI8004FolAcVXyOXt2LRhU8D0tvIBF5zIkzxHrEfjEudgmLtTAhvycoIYRFh2T6d3HuzsEVQINr8bNKZDmaOWdxE1Csr/+pdN1DYGdb4ywTiIF+KIrf2XZkFBb6TZjkX4OwI1YC5kjj2FvgthCzzYGlbp7Ze2aZEHQ5h5dP6ITtETQNDIqHH16wdjY5zsEPh2SMQm0/GQaXvtCqichlSteHiKNQ3D35mODLM5WUPv6U4TBjYR+68iZDTKkgrec8XH3hEpwclXVZSmPROeqK9ZfLyVDvzaGxYutCnbu+s7aXIpC0ccm4qZ7k4CeZwbbcKkSmg5sDtj7RiHqa1/Dg1L+gCUuFmb9rYNf8aPoewoO3R79pip86ymwdzZ+cnpQB3Mu/+q6ZnFopN/Om5etBrrH1MPIgq3gquQWQ6wIRxBwu7G5oBo4skqXDtVQoFTEEE8KDkeW0RoHugNpebGrSXeR7w34H92+cXiRxo0eWGl5gRIQYy3cPvWFDMdVv9M5dYehtloQW+gsBvM83lQVpQQIzzhw7BuND5+Mdk+c/TsEuSdfLWVSidCkvOHBxEtC9+cWmQQ/lECXfVubXGs83Bnq3DxG48zJwVnrtxIZkByqMbP+DEGTB5PvslEE4oj2vWDtMghb/Lyqx68gKHj3RXhDk4w6vu13ebczACq3mqYybBFsnPLM2TAko4rOvhUhoUEY/9ChTKJD0PPfLUqQHhl97lFX8/mNgxc547e9d6oh1Tw6lccdi8Y4f1hYn4uF+5h98ffkqkH2Z098sjYWycpP7ml7SIAI3ftErHANqM3Px/wVxiIHuztnTqYNwC0lXTNtdgSkGs1P7rT98tisL6J4tQGSFqx6qFsVwH9s8f39mCjEPfJWgO16I/BYqWRnna4A44y+62J9UWjqrqm7I2oE/kiTu1sclUDvGJjCdSQa0R0ia5fvbYKscQtHIdMKqGpnuOWuHY1iLYuiVngLINUv8cZOWzVMZucMakvT9pGGhZKReT7EqGyIfw6ogbcoU5dXF4PmbsWmlvhUgTNnNMPvZyXgUyUlqEub58LPZ+be1FWBnAJnJ71JKQx4tj67dygcic0VmpKoldA1J1zasVsCmLj5/DtlGPRX0v9LoiOCwIQD39/8pgCTqpDfM0EsCmuT1Or72wzbcQesZdhaYcEOFYQnxyC1qoa3Rz06gFvhn2IYJRuU6zzBx4uA8Jp/sti7OkBPjhQrQ9v/Oz4GP65VElDQj/Vzotc7YK/uYsQJl1xIS3fucbMgIGW5+OP9JpmQgqfKGDmEQkiOjvaRBRoPlJQKvNLJAl01LYV25yiwfGX8pAEbju7YrlwM3coAzikrLVneaHj8Zkvg/d4IdIz+H8mjhwwTbF8tJ3FZEH+PGKjCGYNY4rHvuy6TYb3zo7lwQg5sPbRy6ZGNQcM/osUfLMdBjuhdU9KrLPgTv7DK/S4G1QQUSdqkd4AZIepRaqQbuF85jw+LJ6A+MyXuI5yd4OViO/ylzBn0R62GFD8T0HXPLG+xySEoW3Sbvs5JAQZeo2L3KyR0VMGIfKaJlj/2OxPcpS1Av/H6UqYLCRW+vqcstTwEQXHPpxKyWsBS/ZPqIRkSevCEzO6VVAPBkfWsVzcRVKUQEib/haMJ1UGdGuNaiAik3t5TgED75n9k6fsRKOtU3ndSQC0kzq2NxZ1rgd6xo9uZLyKQ4GvnBeNPTWA0qcTTsy8R/P56XDk0FY2gMDRwZV8zuPVgUjPUU6Ba6fX6ny2ad+uLpGt0NUPrq6+p23/ige+nt4Gbdwy6GdHsZPxnGIbkTc9JUeohMmLyqPrZOFR8pfBcKyMVLiZXH2hqqYMEX71JlaNx6OTFRLPKM1S4dJxW8ap6sG6IZZtoIyA603KP4cROmDVwD+/qb4bDgdiVb9fikONu6/PIiE6Qp79nc3a9CVSOF1UGKsehl/f6w6YkO2FnKL/Peh8C9ptX4jp3CKjVIcpVnj8eHpm3u/y9mAPX5iy2vT2ikeJPQSeW4/FwnyL0VftZFtRxXng84xqNSmQrPT8lJ8DKbSnWmpoMeDA9wWPJGo3QJdMiH4dEGHY9rL74LwvaD82efjkehUp+Mq5sJiUDI0MLo0FoJiTYXW90uRaFdMkiQlKr1cDOJSKXsv0GzCXJdMwZ4ei+bETJUY0a2Fv0vVPbiATvPl6SPDsUjvSNGo21KmpAxzQ86YjFG9gX4nvF5UAEcuSt4CJxtEG0dMLtu4WVUEe30iCC8MhfC9N8wKgNCtg0VgbCq2DZFosP2MSjyw/8di1mWoGVf39jiW8VsP9c5e5JwKP/PmauMh2qBfIhGb4lLhII2ZQ2+qlGoDeSTldnuKph/M4ftnXOcjgw/z7fTCkc3XvBW+Mm+xDCXDqXdBtr4e/vfSMrx/FIseTXtaem3ZCyX84U398EMlq/2xQfEdHS8R15v4Uu+HYiWW+ttwmot8Rtv4oQUTejps2pyzTvPihQfPtIExz+QrLivkNEZzc3LDuGOyAiw9xWdiQbdnsqz/E2EBC3y+Fa269d4Jp38uXf5EbwixvPPHaaiIwVOGdsjEegpvVYyW2HPPhsMfktIxGP7iWeP/edvhVS2c/aJL8qhQzbAt2GXzi02qCt/r2eAm0vV3jOh5RAzzcWZ78OHKqoaqNPl6L5izSzhi6+BNT2aH6RFcAjRy23QN+3w8Canlmz9KMOfK4+0KO9HC2H7XLNjg0DwWFuxHi0HoI/vtSIfBmHvB/8sAkxb4P9rcacAywNwB3itKWyhUfc3+mX1adaoSXXXrQ2sR5GLslvqMbj0RCbbqJ3JQUMg+5N3mfNgr0n2lgoLTjEWUb0HZVrBfIcJ/bPkyyQZ9awkzuGR9vru9uEjxQ4Jy7V5ieZA1Mh/E8sp3Doqro/nr5pGHhu7qXPLm+AhVvvNYdL41Dy9hE2w9JhuFf0eJcDWw93gwsZJPri0OrA437e6GGQ3GAZ073ZAO4jh4waDhFR/y2m5UntfrB7euWG0G4O7NqJa+PlyAhXsM5ycaYPtJ+NbU8/zIWYcoas0aNkNFQ6PXt9oQ9Il8+SLt/NBj/f+02XhcnI+JCbG7trH0gGOV96058Dxv0ifwR2aLmkLScgfSwRrP0IjTq7lfBHzJupbiUKZQ7+ys/8WAuBw7iXjMnOkEp4Gi1dHIHGFrABcy/q4JNEhbHuPx/YYue4VHUgEnUoHcCPP6fNX2KM7+Bhf5gZdFlsfhqB5j1ctz6Wl8JYd3w/EOvg4n/WrxVbw9CRKxK+w3plILLqoFCKr4fVgDyrPUNh6OX74DtvPEpBu/vQ0RL3evjNQ1YwQmHo1Z9mt02GVvCX1dbSV6aAbFb52JMdHKI/YcLnRfND1gbb4nIzCkhvaulL5uCQ4LEQ1oJcCiR16W4bfmmBnh93ZoRrcaihX7/m1Il+UF9dfxKuWwd7dx9ct5IiI86bZ3m4A/qhbfPeFb+NOpA6/455QJ2MsPuQ68jfPnjk6lg5a1sPlJf+bz+dJKNHVCXRsbR+4P1uP6Q0UwvPU7n3ndMio0z0n17oNQrojR1anBWhgA3PF8lL7jjEPqsTfZCtDXQ26CK+1AUDntdUIrwRj/zUcj+/8m0DaQkmlvbvgTB0sKZolD0WVam4fzN82AbuJ0jeqAcDe+iShGd28chmi7n4eWcbDJCHE2bdXoHyedbR7iux6FOY5d+MgTR4P5dWqt9XCNF1hVZP5yOQ16ujuhOb6bBtJJ93sbEY3l+V2NJ3iEAywrqV3x+ngf53m7jNL8Vg/ZdaUXgwEmlGih6Oc68AS0fH7HdeLTC5FGDeqoBB8zeukXkuV8LUW88YMY8WCK36xRzjg0H/rJ2EnK9XQor8NZbNmRZ4evm1edBLDLphdWrt1WYF5MgMG4zzt8DRGJMDnPcwqH/TZ39Idi9Mhkg7cWfmwJ2emXaDXBLCdwYnNwv2Qpmz6Cur+7lgl//R2N6OhHKma6zKr/VCVFjVvSO22dAe5fOB1ZeEHnYVyid/6oHKwapFc/lsmHYWpxu/TkJ20q4iYmN90DzX8/JHpStwsChW5h0ho/7Pu117HveBbhonyRtjD8j9tOGvnyT04+DYry8LiRCZ/N380WYyUO6R+H9XR6GBHhL7fodamNkTc6nrVA3YKlFPHnCJQL+jCY9P/qqFzFKD6Zdp1eCYrP0ttDkC5YtbyATu1ALkOb4SSa2Bqvt/cHooAj20quRPzR0G7BFTzsxDzWAcLNzO8DEOyXNIG+Wm1MGTaJ/FqWc1EPsrheRDE6OEq67P0x9TYaiB4/e6VwkMMpkJ/QYCWmYlHOxwocJJps4X30eLoNGhekf9EgFtYWy39iVQwUcirbIDFUOGcw/m40QsKv49keuSmgfyrasvpM+9AcmBoABxNwzC5L+vcruWB+/D5v6rl0gC9avCz74GYtC4TpPVFK0f3C66e+TD42FK48zHnTkMOlygBnYmQ2Aa/Yjt+dVCcNB/H6M5R0J1EwWtteeH4DvnDusHzQIYPBMVdoCejFJHmTxuug/BKYoIj/zbfLjlY77i20nrl2dVWU/RANzniRd/VZYNlZgxPnEab68l765KlQ3AUlp1ciQxFw4GP6Bnp51HOheG6V+i8Tnhyl3RmByY29tx5aEJGZ0YqfcsvjgEkYxCoXGXaR5ZVlL86h8JyYl5Z/9VHYK9J3P7ZjDNIJFL2ue7RULfbqNtbY8hGNXbrmjmRTD9j77Sp4OEuLQnvwy4UuD5qcux4iZ1sPbeQZwYg0Pf8auEszAEWWbWpgGJeWDXb8wd9IOEjAUR9/nkNgjTsn1f5JELWUt73tmLx6Ko+wP+g+390FtAmAjLzYVos4K7e26SEe/HB/x15f2g25wifrOVxs96DFsJ2mTUyHWGVzC3Dt5EUd5yCbVC0AlFh0CxSJS2Y3rkx9l+OMjdcTv8SxMIWQxeTzxPRmcepXg8D+mHj1xeGmx5TeDwyW42/DIZyR0+3XA2uh/qnm0uC0U2w61jJ0u2NchI3jxImXp3BKQI5yv7x6vgpcEetz14PDr6xfSH6zMKvLPl21CneW4hg0OEEwGHKENVjb47FHCpXGx4yN0KF+x9vmt+xyHHpz4J2W4vIddXsr3mTBXgH5FyT2TTPPSdjWX9JSfoSXqefeRwFRSrse0zZ8ejMYVZwu3gp4BvPGfTbUPjnwWBGs8Z2t6sa9wfQ24DlRm5n0FSj6HUMcMTLxqLdGYcLgfytEH7UFm73qIjiPMlHqhvxaNb3/4ZjFDL4V5ZUgyfdAo4rTt+FeHAII6NpfF0nnK4GlzqOtKdAp+VTh5g/BKGWCxnRndpPNS6/C8yfSYRvO/ozNqthKG/bkovfZuosP9Ics1oUDPcfUifQyDHovzBIj1tIhW+tMTqSiw1gYvQBxarpVh00OVH/UAMFa707PM/394MjfWJROfvsYhRFmd2oCkdOCtdJPbJ5cLd3H93Gf0jkJqZkV3ZoUxY+Cf7H8NcLkwoaPfI/A1Hdb3rEN+bDhbvHZ35PfIhyEdJF+cdgR4s+dcaSNNyvITpY6F0EkxcmZNyEKZxTjF6N3YpGgyT6szz9VOAyqbyM2UIi0bLb/iI74mBi/3DfxUkE6FCtMIe14pFXTupvrjmLuCabc/uS0mAwXlt2YZ9RBT98iJu1LALtJNWr6ZtvQZ5bya9Zkoc2vv6fNT9yi7oXNIwDGkigc3sy1cXGIgoPcp+odKsCyZV4wrxuUlQVhai8L09Dj0a4ybKaw5Aq3zbpEiSExiZ/+YSNCWjtKIDNzum+sGPwXJ1V8MehhP68ph1aXMYlxvH7TMM6yMTraoFAXBGcc9xJTkimgpZTjfRGqbVf3XZIjIYso1Nyw6/IaK/BZY/zgTVgWoD1+MzNO/Oy57UZeKIRC17PnHrnB4Gtw52fIdIDdxx1P4bM0BEO1/oJhYVhkExKMbMRqwaTh92uLJRSkSXN2fNqgyG4c8lTJHL72pIXHYx9AohIl+Zf4sNj4ehvy36g/zlajiqMb6RZEZEKst7cgzx3aDYNKvwOSQTpKrbrx6JJKKq6fVx/HY3kLwHTL/PZsDfyzvlFV1EVOBy5uRPwR746HnmUhtXOvD3vsZXThLRmJ0zr81YGrAcDbQM/hYH/YdTRAgzESjmejl2pjcF7Jja9FbqCNC+kSAq0R+JevmCgsXb0mAy9MQCo+kbEElWTvqxFIG+YUlfDM8OQ+cRlpyYbgSuKcYplZ207/G+/TfIeRhm+hab0zYQSNAXDj3Wp70X393kLTUMrq+OWgurILBQdQtmbiOiKHrz8NZHKVBY1x+36ECB6YdP4n/8iURrh5KUuX+mgkCyzduRyxQ4NUWfJH05ErEwUetnVIaBqbb4fDWGxl8HYpi/5hERJzNZVZnWL+OuM3tPu5RD0cY5Pm1av7oGal1+CA5DtsnU0583yoH83dxXbZ6Iruf1hl6deQZzZbo3+YWqoaH8UOmedzjEVcRxblE5EI6efFgxYloNvla/Xk4H45C214mEc/IjcPr26ZP2SxUgTYye2uzEowjmH21yJiPQcBN76TO1ErKUmZJ9aB5ESu6ZZeUfgY1nob8dxishX3/rosgOHvFqbIgL/60De8vBrj3QAOlbuT2TZpGo6PLIiPvROkj/WXi0BtMAGl/F0n1GI9DfRyWWj967g/rj43PTZ8sgOiHpQ+4WDnV/a77+it0eMHGaBwgqpTBzJDpxP80vYlriGvKEXoBZ3WuO14alQPz2Qt+rFYfaanR+sg3XwupS3PutR41QWi3Bjs+JQM+0t522HIZhW7xHW7GvDKSiw85fNyGiRH+72rrcTDiN9eSJcssHH3Yrd9aucPSQ1HjzkWc5lJ2xkt4r0AQVH6cmj/8JQ9KrOnRCQ2Xw953Y2pvPTTC18ODDsf9LNvN4KL+3jydKllKRKLtQCFkiKZclRSFCZSkRCqVkSSQpwlhmzGrJTvZ93+bM2GUnISpbIkmyZKme+f6ef89rXvdcc+5zPp/3+4/5HILe3H4n5nuvFyx4k1b8v+VDLR/24+0rJPSC4xPvmQuM89//GHemMg9SVZ9H+lJI6Mu5sDvzNpVAm7s++UDoKbjcSnvJ9jEMvc/OrnUfqwQ7tkYCUTIYXpM+X/EWxSB6e0h7845KKNn2qFViLRjaHqoITxWGoVGZvFybDyUwP2aoG9ldD9wflFgE94eiV+yBSb18jXBb4ZrT4F86qOnFZEs1R6PmVK5XwZGNIGWza6GVrwGKvZzkNQXwqPLubhd++W54l/rHZbErGyzfBDgHG1GQhNG1VJf0bth8Ppkm/jkLBFLEBS6qU9Cu6pXvh950Q+1jjchpxr55KN5Vnz9FQV18fx7o7+4D5xO+I0OTFNg7ZutYsIuImIq2JII0GHle0ydxyyEWpL49TxpOISBLprzx7/x98MZyR9qT34yczFFUv/WdgLzc/n3J1+yD4bf4ZPebCTDN7yi3L56AHBV/pdbkk8HkiK4cxgXBvp9axBqbKOR49teL/TUEGBAvir1+GoGbaeZwEQ8WzZU/nFXbQYYLZ2+EBHVRgSR+W+QZJgq5FoSv7btJgEuygk5+D6nQeUdVY4coFp05UZD9YX8fHB0JnerpyYXTUhiVN1sERDjumvZYrQ/sX75qupGbC8WWoXswOQSUo2kQElTXCVL/Eq/oyzLOldzh+p8GDF7ac12FiaULAgui2Nv+FkPwb8PABlMKevKpxfp2RCdMnI+eQpIl8LtLSGiIwQNxwWx0+plu8LU5A8VCaVCwdds0icEnv87sq8T0d8GpdFs+QmcKJMZOZWcw+GrPyR/fss0bYXj4yvq7BzRIqr6hWbQUjTTHr/Tg9zaCS5j0By0WGrwsr7suhKKRjwTTCItnI6BjJSVsrDSol5k+9poNj7SVd9+DpQZ489de2YLhCzxmp22/ZEUjBT8tHvNqOnTXXFW5XIWF0sFGZNSEQ1frh+Rd/9FBOLlI8qcgARJk7DPG13AI/VGW3Iylw1XfW3bFrAS45ao9aJePQwcGhfBUwQaoUByzNkrHgvbEVCL/nmjEmZR9U26NDnobVTxKEg/hW9wr86GfOLRxW8DH5zkdfk2lPW3sdIF0amUPisOhKOkdBqd5ekCmISxo854r8DBn9qnxUlBsjdovk6oUuB9FPvNdshy29v2MT5jHoInFWxUXJlNBPPuC2p5tFcDHVHZY4CEGbaS+x369mAKmdgtuM9cr4LR84Y9rAoxekzbJOC7QA6o1e2LaXj6FgT4hqf69FKQkmqLYR+sG3dcFLCZ9L0Bx517BaiUKwoe/cWGhd4Od7SmzGXdvaBZxnM5jrGNNhFOQcA94rUpOTkQGwVyEXZ/pHgp6F66yZXKYDqOZ1/JM+POB51xgyCUTHLL+fVzDc50Goi8kG0V3FgL+2t6+QjUcUvPnGj5aQIPZraCgXSgfSosrHg1vxyHxg9Y7Xx+gw5cvh3yP46ugqxiEJA1xyKA8pph1L6M/kou7q/MqQeUE9yavPg5JY3AjFzF0CLdWab5jUAW8f52Ofk/BIV2lg31ST+gwJ3OH3/BEJejE8XTeIeFQneZ5+8WUXkiU6XgTbV8JE7Bzo2iWiLR07RTVWnuhSZWTfVd8BXieFhi+E09EsFgsnNnbCxHTVh/W0ith7aD+gH8IETF7SPswEXrhiNK/BQXzCmCuguszrCR0jWVqY2Y8AWrSZcyyDfOgvHj1/ZB3BLovNXVB0iQeyivHb9dX58OP8faIFZFI1GktsaRgEQfpB5ZsVhn3cewT08we+0gU4f8l0jA4EViMXo4lcBdAEEE3jmAUgW7tiRo6cbwZbvktYh7y0UE701dx7DwBfcIUhV5OaYaa5BFeuEyH16EO7K2xBPQsVPC+bGszcKpvJYT20uBA61shmzICeq+bt2a30QhKEic50tezYTbS5POwMx4t9KS9/v2vEVq+jrKHNebChU9amrP38UhR9IBq6ctGOJSV6yWHyYFxF7+p/QfwSMWRxR/X2QfAXnoh83oNeHd07JHwwyMXjrEV660+WA049PvhoVog+0h5GTM8hSYtf3bhfR+c/aGum4WrheWZ/n1/7uDRV5vKSQ0OBAEmkWcCFmqh1FlbpLAwColxsxQHY6gw7+/JFPupDjjuJCi9vByFZOUTOkS1qbD351dh/h+1UFlBPMMvFIUGqZutPHn1kOu9rKb2pQ60zg6sECsj0YrLJp3O0gLyNzj8/2mnAVtFc9GbTwRUqHjtYqJxCySaa9Ru2abAs84m0UfcRNSVI7g1/LwF8uf08R3iaUCoIepNqRDRiN3yIePSFpiVPKdSr5ECYiOkQ2rXiAiFb6oOExvhD+XbcYe6PNh+W3qFLIpHc/iDx7omEGifcIeZ38EQ+aewS+wBFjknVvsW3ENgef3ro7++L8Bv2nldVRCLmEp9bxcrZANn4Gi978Z9uDHfLjb8KhTpZ/VR+s8j8Ph4Zd7BCQNFznu/pGzHom+/ZDjTeTvBYOLIRMsMY59S2LBHZSmIDXdAqofUCSO5gooGDD+t0lvedu0cBQ1+E3tK+FUCu6amdmkmxkNfaRLL9MFQNG9Y7pi1WQw1GZVtSvqxoAnW+1q+hCBl4dijV7R64Ef8ubNCnA0wbnT6JnaZjOZseDpuEUshIed4SuF1BNX/mmp36IaiJP/ciwIKZXDiZudYSjOC/JFceR2vUJRXVNfsqVoKgdYh5srTCOJGRA+ePxaKdv1RpwlbvYa+/L1uxmIITgRdTq36EIHSPhRr73sZBzu+DeoES9KgbrRlYN4iEhkq/FLEXksAVZ3N9K46BC4LXtJ5sRGod+RyqPxiLDxlM0haIiOoO2LWeNg/Ejm57jb/9LMJfqtLfTvytAZuFnvGvBAkoOcD1UU/A5uAV3fh5JJODUQIZRxq68SjjvezFVMVTbB8T+edhlc1OG1s2c3/wqMT652mH7W6YDnN0lJ3NR6iz+al/GP0lCCTjuTxyi4oVTq5p+9kIjT5PcSOMTzFO+3vfmW9LlARptuPHUqCad+sS0qMdV1exxzunl5QEDCYbJuLhr3aT+4OYoiIxDb7bzajF7wGY7de7SaBmPrN8/hxIrp6PUJD7EMvBLeHfH3DSYYrKvrn7DyIqPlbR8nWrn5o17zfMKpbA9QyL+P5/Xi0mGBWfNrlFYzW+rAluL2BqvMBU+LqOLTzQZ+1csxzCI4SpKK1dDB7+jqsPAKHWnu3cX3ZHQyl3wmfjf6mwSG27QlXjXBoodljM9y+CV4c6kq47VoNY4PypwUq8EhH/DptkZGHu/LGlMYv5cBnJiX+6VdEtJyipGab3gszUSLbD0dlw1iYfFLlFBHxmlV81KL3wofYaG/LvVmwT9lx//dMIhobf62Sx0eD23Hnj05qvQGR5GfTRBIWLYuEMYe8ogHbLf2U5TdvYBu/X7T6Fywy6jwuu9OYBgR2oWPIOwu0b8lTwuuw6HT2fur+KhqMp81ftlXKgnPl3id3sONQAc+tDoO1ZriQ8NJn7mIxrKhMbb8wSED/Ym8+WfvWDKU9C6jNluH3qQubdl0EdMzmfazLSjPIPD907qwrgs2u78c3BggIv/fDQQ/5FjDVjRlUKUJQcPb5Ee0/BKRr+qDamJGr99tfyN4pRZCxmDTsychV3qxNv098CNJm7lpxNpfCTGbqZHZDFIJk2vg5ScZ6squGSlIJeDwV3mM5GIWqD5340qLYD/t/lPEv7c0DumzcoGBPNGo6aaeefbUfrLovfaWY50LPHq/oJ7HRqP+8grXfcjPMsX5WcdpBA8my1CdXGHMuXLWue8rw1Wdux0ksOxLB4FOO+MP6MHRJyT90opvRc51u70kJr2Fn+a1Lcocw6JHFgTjjwregYLRb+kc6DZY+sg5q5pHRRbjA9YC1EUKcyulMA7XQvDJo41oVjTqTDkTsTmgA6RLlDkpLLcT3UFhlXRnzBNuPLwq2w9hp5oOk3jyYSF2g6H4kofCl+sv1tW1wf2WE0rmaC/yXdvu/TCehcV/ZTLHVNhg+b0s53JcDC2vXE/UZvhnpZSXp5dIAKUxnSvRZa6H7kJr3/vPRSFCwULKP1A5JvDcOOXblwRdlbokkUTJykx576KjUDo67JgP/4ApARpLe+myOhLbzLi9G7WqA9p64J1veafDTzDwF/xeHRHZdWut81ABtGZ4sLtg02Lx/M1fBkMFpN2eGQtMagOewUKzrvgwY29AI+f4gGj0qeOcGJk2gPHTTbVWgAZrj6C6fsvCIuU0m0eJoPwgZsqtcpeXDkTMqsmqfo5GVmX3e7ZIcoOeGtNhVBcKOr3vjOCEUyd3ycdpWmwc64uMFYdnPGOcxl/x0PQSxm4rY6XnkwqRm1MGg0hAY642/4C8Wiv6tmAfjDyF4mZ15m/MjBRQS0u6xN0chQkbd+EEaFWiihRIm5SToUeJq8PWMQpU+IaaFjF7A2uU9rI8ngUuVp3wYoxdqsu2w1Hoa6Dt7H7lNdwaJTAeCyB7GfVcl5L84jEAyQFSqmYcAd6er+K+3RKHsxr9mi2f6QPGJ9MNn2YVw4wTCdSUSkMT2qC7f6RzwFYufU1rxhpTvCu83VEPR025pCV3nAvjlGbKwhEFwtPt0fPhACOJIUXS44p0P7MkZx07uQQDvJW8fnglBzhfP695R7IPqv/3WQd4psITjO06sJKDlIe7STxf6oK790e3vPUkwHt4x6xRCQEpfpos43ftAr+CwvczHZOhKchp4eYKAmkna8cv3+oB/2DPIZioRAh+FFHKqE1DPUWuadWM56EzgzQTFIoFFm+VZ5cEwpHRyQ8TDtwt+0CTFdJ8iYPmVbP7f/3FYI3mT3a93wdV9F2xFNhGYj437/2Tkc1VEsbPGSieMkhX9LuMY91X4bZidCQUJZaaem5rsgnfh+do/fyL4PRzZnmXO6NP1iJ9R8kXQdGrnULwVBYYN8fi2+hD0WXW/9kZ4EVSH63a1qRLggNSrGSNaCJpiPugqebQYPpI2xISNyKDT1WC+9DYEvfjbxnLqWiHYOw+ca88jAP/0hcu5jSHo+MPbcdkRjRCcyPLwSDwCVZlscsJhPAr230UW/ZYFiX4SNhLYevAPf4cIpFA0k5GUH3wiB2x56p+c8qGCQHzJ33MWoSjVONOOciYLGvTK/+54RYWB+jej7XWhKODvzG3zQDq4l/d6j94gA3dIxJ1b8TgUze5j8d6yF3yE+UPefngN56PjxZ96kZDG/p8XE8x7YSmTRd9/OhZmyVlN4gEk5L/tg+md4F4QzWYQYmMciEoom6yLkVBay6c8lzuMPhD6FPrtBILOxRLTR36h6FBR5rmEirdw5aiB5bWnGYAdaGZ6WkhGvJZGu3O13oJ2ysErXIPpYDRSQErxIaM4G9anDxLewrzuO4+JU2lw4OC8jEY6GV0T/7rlL/MWzpPKxFz50sCFk5+bep+MxqrOMnc+6QC+Gw8aj/2rhCsldtyjf8ioNfV8STtPB8wzf3kjEVsFfRcHl2rfk1Ga6sle//W30BE0b7W7uhJuKJCH0jvIKGxbS5Lz7Q6YkXSLviFRDZBRdvf3CmMdskbELPvA8I/otbayEpAQGrhfZk9A22McB9ZN+8Cg9C37ZlwxXDTyKZ90J6D2ao+1XcF9kJVkEjS9vwTe+NnbG+4ioNwygaVTCc+gxbNu3/2IN/DCjXfnZjrDj7Ylresn1YBZoiCmhZE/5s/zOQprw1F4bODqsZxaQHeqq1nZGsBR+r74EYcI9PrplZaAlBLA2kQFsFbTQHo8YsV9RyjyTT+7vOFYAhF898wxBjQ47td2OoKRP7l6GdUaX4sh3z7r7AkqDX4YE+XqJ0OQILNMk0xKJyQsHrjD0lEHV1OmannOU9COZ3L9MWc7IeKZWPIF8zpo3HEk7KwKBaWQl9g8fnVCx4em77uN60Gxdy1IhXFf1keCmGKnOoEl7mPqO2UqxD9RcMk2pqC/PmxBP1aLwUm86XrkwxSw6k20Z2VwpqbjxHfW1BI4WJzL7eyZChZL7wOjGPNv2K3evzlUDIhj9FF2XRqknhGQvT4egix5vysk6LRB71CRfebcXVAkOdzcsiKhtRusp2yrW6Hz5Tg7sdoNxD6q/3PcQUKCNouTr08Vw/ODGK6jAcnQGfxQK6UzBIVNBfCoXy2Gjma0e+xuIsxbx4pU9DDmKQi8eserFegqk4bkPeXQ4bEu4jBMRLlGbZwFg63AK6vIdeZbORyz95AKOkhCLc6RMusrrfBKgF1Yqq0MZI9itzvIkNDb5/eE3P2K4B6HYZnUQwT3BNW00lEI6kh32kRCxfCHqHoDcxpBljHFiIeRA5dt5/HXVurh6Im77E0CtSCfcDQjYzYSTbzZeD0hWwfx39vev1kvhC8OtW38VRHIIvbYTrx2LaQyF1IwF4og5qU1chKLQLL3b72dYfgVDBZpNEoXQofQLvxPswiE8WttcWRphz/kIlmXiQR4PCzDjOsmIbVIZYdHDD86o/rknufjGPgZLv38AcOPonESi7OLDI46F2EgNU6Ax1likoO9BPTE/fbdnistwLKUL9tIJ4Ieq+NTc14iEqPdbyYW9MB+o0IZpTMvQP9IpRwEkpEip0uj91QPtBZ7ZO1MfQXNLcK/ltQZ9/ej79zdsh64NiDVP52OgR6c2JW5J2T0rSGs2H+gB1w0Ppp8LMACyhjkiTMhI5Nzu7sdDjVBa4v+aVuJCmB7mNpzOBCPXgrnRAepNEFCZ48nVakSmNaV1NqIeCSp022xNNYIBlL0L99VGHy0sZh51AKPIvdQAxOt6uBn/caTH2MxUNpW0/HmfQSSvvtIyUikDn65lbxg+hoPk9w/LGYKI9Dyt9RPLC618Fk/m3h/dxz8uph86bBGBJIJ9vUsym2DpdFbpyfnY8GoHTP7M46EjnXMV1GTe8Eof425tbYUPu+9Uyk0T0S3lzfyn93rhT0jx+06i0thlvpR3voKCXHfYwuQ8e6Fq4/lLzb0l8AXYwe7RiChPQkSB995NIFF3b5wcnYFVJ6XkIlpYHDIWsGS4mwR9EunpskwfCs2lLSR1xyC1Cc+qJv8LQTbg2kPutJLYTpuky+X0UftLjedoiOLwCjZ3yuX4WE+A0YvbBl9FG57Q47s2wsHA7QqPIPLIJg8ZC+vRkLxs0nsvhal4HHTurdYswYKhR/mN58IRfa43AK2eyWQImyoY8BcC6frEw+Ub4SgZ6cwGa5nSiAJzxx+Q6gG0g3tv47/DEHnHfgKuQxrIDFDyDrsTgpkGx/dcA8NR3Q9v3n6gxoY7pp2mudNA6XN9sVrieFo3YLl2a/QavCdxlRFRqbCif4dH3bwhCOdSRTnL9cMwlK8Z4MmXkGVcY9Q+wUCGqUpRV4sbwY86Xw49mEolHQqKvRnMvi8IvVXml4dWGOHf6UvlIGg2N6xb20RSC3c5PbzcQTxLGez3rPRAQTOjKu4YVGQF9u1UobHltZYjn9ZpIGoVUWdLBcWOR0OyjcYaIWl+iSmdnUGJ4Rt+f89QEIZF5fnvT62wt9//3S84qgwS5o8+USAhGomW+PjxdtA4GfxvUWGzwZe4n934AIJJZOlS/fbtcK1/kLfU5cQjE2w1/F1ENEZ1lObd3CtkLjEoX2viArRH4VEV+eIyKea58/pTHuoqufsdD9ZCH/Vbec/HItGrg9fbBFPtcE20tfOq4FU+LqtKqfRnITiBudqShYzwFDHZdvhnGpIVBZ3e2wThvIuPhvuqGP0K2G/W1BrDVRKvi1RuxeG5rtf7uMs6IPypKu+fidqQX2z6ItVOR7lJdUt3CT2AVXrBnXmeQ00fjvMozyLRxdJEltsFMb7TTBkCZNAcMspW1qHORQ9sJLcfTe/BMx4hTiigxGkt3/j/8sais5pbn/XOF0M1fS7yoJ2DF4yYA2xYfRLxFOz/vCBStiJKeLX218Izo+YWAsEMKh6ALd/565KkGsyPF+uXQg7fuW07CwOQwEnNxdVIqkwxoNX9ZyuAIcalwQb0yg0wnWA9xETFSqpKXoGaZVgJW6dPf0zEgVwOvGV1tVD+QbLd9RZAQq848+HGiLRnP4d/pYuKvTMMS8Q5ythGl/N9ss/Cqk5XEp6IYyBP9f3yvDXpYPvnxdSBCYcCv6nF15mEwnV7ge4xwXewITE6pB8FxZRD84FDza3A3vDcFfxx3KodS4w1jtNRk77yr/GaL6FLWesh1t9OfBNHZBIekxGhw4eFwpva4fGII6LmoINsK7JnVqiQUYUeWabNNlkiD3G/oZpbwZkvqsMMGGc/yyJthQZrRS4KI+/XdmfBk0v45j5RcNR7pfnbBFDKVCu/UavcTMdAkuKA099wqANuYaYF7QOeKPGVV7K3gBGP2g/3vNQ0NSCiMM9u16QJnM0jDJ86huuMfbKHRLS/hQoM6zZC/YJUrMcGbXA0cyz4PmGhJLqY6ojlXpB+/0z+ZylGjj4w1X5Ty0Jwetjwqk7CiGAQ99nLK0Y3E5/iX/I6KmT838yntAK4Y1SF/Ukw2dfhIf5lVNDEA8t74vg0wJgKvCpmQwuAXODNA/L/hB0KG4gpIjaAQJB4xYRr+hwv+vXPQPGnAtBD7IM/3RDeIPRepk2FTY2HilTxSkol3v0MoWzB6L5xA9f/0cFrpQuTcXDFBTx09Cf5JAJ5scOfepJroEGJ7sfkb9CUXT4V1ZPYjdgB/2XPyzWQ0yll1DhGQp6z2NMcF7vhv0XcIQqm3owX6Q/mjhCQeeUNW3cErtBJOq9/Y3JOrj1cfIS+TQFpdbNGvAb5gKVKvE4/FwisNPPhUofDUV2Q2N9mKEc4OvGWL09Hw8qvMXRbOqhyKjXXECO8VzhiKc5e1+9BM/Gl+cKAiMRe7nIWzOuerCUKojyr/OD0JbHGaFGkWjnK90jt+byoL10atTybBKEjEfoxS6HoEfldq62jrkQurqEPXUnGYrIy2S/I6GIjI1L7urLgxxSYt7G1RRwGLIQ51oLQVI4fVujbX1gd3M7IelvEZhZPHhbdISImOjmNtlSfdCkVDIS+qoYWJcFr1Z3E5BY/YrzR5Y+2D207qzH4K+eRebJkUNEZKPTHfNLoQ+MtiyunTMsgcWvFIuKGgK6zN9QjGHrA8/UF+k5zSUgOPfraMNeIjJzFzoSMtYLAYM1F91ulMDv8nnT825ERHcvuXH1Sy/Mps680MczuHL7jKmPNREduzvDcZO7B1Lm+z+E5RCgF3d6sZ2XgvhEJEbMp7rBQZltsC+fDGKVZ537pSnImC5y6G9UN8g91lKBUgKU5d2Q7TxLQduD8athOXXwl5fl2tjUSyh2/7OixRmJ7myuSew3TgPDsbgTDyLTAeWc6hrRw6DLPIQ6GdY08HdQNjdXfQM6Q62y03YYlP+ch0W9pRRc95jfeyDRAF9zjC44XQlFt12O+Wk9TQWfh879d/+kwr6+h+rGsYzP76TmHHcphXDBhHfnbGqBwKO6lMzwX9n8YA/TpWo4OPHk2YmnOWAf1CRmaRqONJ3eY+pW+6BSubxZbrIQXndkE7cr4lHxz1Fe0fctkM73/JzvKTpEn3UJrmPs24JD49fXbAyeFE0xn0+iw71XBbokHBEteZv3Oagz+HPU7myrCh2qaNGpm0VEFGys8UPcgbF+jiMy6lIyeD/nPX24i4iUqoSXgxl9JF2W7uHnlwQ+4OX8ktFHLjLept0e3fBhp14A95NKOJ5F613XoaCAm20bUSJdEN6/sPIsohbWlW+NsDJ8to9mbNB4pAvGC2VHbvvXAZ/v5Q4TxvrIk57+DKYG+KlLVzK9VwUiEhvpL9ZxqP2Tyr34UTpwfvYJTMdUAovb91n7jziUIVVuuk2pAY7ObxwXdKuErB2B2nmC0ch5gVDiMIBgYbXspQEHghuv7WHCAcvgLr5/vftpIKsgRlG9ToVcZt83DtFY1GGLfayuRwONwtvZ744iCObYc/d0BRbRs9hCBDA0kLz7eSad0YPHTwTVdX/FIim3yldfq4sgcKDc9s/NdLC3FQtIbghBywqLUk0MXiql9KZy8KRClkJsTSWDl55/PBMWe7oZcH9+1uRMx0FxWPQ3QVMCCmUJsdnYaoIedxmERhLAg1XF1VOCgO6bZ7g3tTWB6CYbyXQ9FoLdd4Q0biOgV3YhY4LUXtj52mTmjSkNYsZ5bzwrICL1IKQlFhkPSGyjH2XjQIBrRYNpXyRyPJ8VM/CyCfoGDv7VVkmAfgGTEIluPGK90KiOraqEMZas56rMCE463ajT3INBFg4XLznqVQH/pyAeeSMENdu6nMosMch9YvJus2MlJPj7Wjl6MLhm8eqD1IkwFLG+Y5+OQQc0Y5z+cHG/BPzQRw2neTJSle9YjZLugG3TSWs3F57Ar0N/bK98JqM9jUJvaAkdEAdqdeqm/jCrxm76nY2CJvRz3ZnlaeB9azc7x3IcKG7JmBEysKh85/50DAcNjN4VX3vmkQgJz+XuKUZgkR17I/UpFcHO3ddjyqzi4Zh/usWuq1h0BVfCPeVIg29qReXCMwngcHVwdzmjT8PK/rXlTFVDn3cYwSu5Aq61hWHEDMKRIrfFp/LwaphTDRH+7V0O6uahnpkHwhFMskZufW6Cyf2ZCf5sCKTGzHJd9hFQxPgzXw+WZqh43M77WZEKv3n5sjulCcj06wWTwMvNoNiUj9u/ToVOwqOyNVsC+vlkYeVwVhOw2PJxqllQQaKQb12fwTmbF3JcLLanwOwVM2PzKjrUWx42EjkTjnasikXeSEgGS9ctClWhAegyU+5BzuEoYr/Kpgc2CdRmL94o/UkHRKXqVM6GI3xAcNtpBi99iZx25lSog9K3OG9DBi81Dyg8PaZXDraeGpdZXKNBWXfL9uh4KDJI/P7834MysOt4klsWFw3GYi2PnSNCEX/0j2Nygv3g4Ta3yqpYCEeefOIf+xmNIi7TH7oa90PdjpuGdpqFQFv4emZHRjTK+9gyXbb4FtzE/9mG69OAU8TvKFMbGX3U5Fh7f7EDlGYjrp89TQOuV37b/zLOg9jRxTTh5GaY/ztWyZ6XDjX+E34/YwhoZVVqVVe+GZoUTz9208yAing286v6BPR8ksO4ibHvn/1Lh4zqq4AzOvl9en4USnLxecF1GcGQE03t2WYleO0qundnFxYJ6Yg+SnxMhZC2bf+aL9dA8utl9ec6UUix2uC+OFDBT+jspJZ7NXCHXU+uEYhi5OT5tRerVNDrMfbyjasGVr5LxX6xUWiU6Nt39RAVXt2/JOw2Ug8XRchvx7dHoUzibsyFeSpkFLvMz1TWg5BhbI49PgrRqcc13gS1wL8adPOrcxL8CLg57qdGRLPToeFd/C3A5Tq5opyfBL/J+J3nFgjIZM4+B8OZBAN5XhvKf2pArf3sNwnpCFSqckX6+p5G+Hz1GdnqXA5ETWZe86uPRt+yqHN2So1Q/KFPumRXHsg47Y2LG45GkalyLP9GG+CsWIQq0soDxYhQLdPYaHTJ7dHkXfce0PKtIugLF8Bm2gSfbQsZ4dKMdZJwPXDrcGdu6lgezLv4P55OJ6NUjR2jpuu9IPAu0vzRJBb2lijr1CoR0fyf0h/DjN6n/H0/IRVNgOM7TX68FCeiCL+wy0b4LuBGRl+vsNRB5ynBe+nXKMjIIybnUVoXbEy5fe9QqoXHbMfdnBjrp4tzq3+eSoLwwLhH2jx10G7YbtvLHYH239UVrnZ+DeJ8dbceXayDz1qKLkUML256J+z63bILmplrfZif1YCH5j3PP1cpKGTdHmc7RwGPwkNBA840GJx9wJWxKwrxqZJ+27pTQCR3ZkfNCoJTbUlHVo9GoZZMcenpm32gHNwV0sKP4LGuGMJcJaCb35+177Hqg+TvDRMZDI/YqY9u028R0PmmNfXXMn2g+iHW8TzDzxx71utPthBQ4dmZ3DLtPlBR7F+tbkNwzLHsDZFIQGu7rM7mPY+Gqn7JqIaHcZB9i0nXwxaL0rgSL3J3RwPyPznayk6BYxKT8WcssMh+ZVROtpkITCn7Cho9Y4DnnwAmejwKVaY8OpFuRgBp+dkLR5eI8G7Z8JqzGOM8i+d4DSS3A8lCOTLpfTT8mxBNx0qRUUgci9bwbDuIjB0y/42w4M1GYccYktF8Hct6u9hbyFpsi78RRIBdEZJq95zJyBzX4LWW3AusY2KBVdwpMMZ14GTeNyLqb+LzOXi/F576Rws9P5gCQm6FmuqmJBQjzz15XKQfHj7Y0Eq4mgXbfQu6uL9HI2abnUynpPph+Dj5xpRnDig+DU5ZHY9GdZ3/9j855w352xz/vXWtgvFJG832DzjEKmLENVbcC93WU3rpxUnAbVqgvdlKRGWTjjx72nrB8PPL3IY1Rs7JTrRkxBJRx+6IB2IM3iv0WKCv3U0CY2OpJeEHRFRUftZheFsRZLIkPBwVT4OvQraGmfUh6AHpt0HK50KQ2cBfkp5M/59XMjO8QLHumHZTZBUEXtuwfz1IhQ9enYvsLzCoqVI0oS+6BUyt1I++cXoOHY9f73isRUTf1NdVZBtbYGDvgObYnVAojpL4+MuOiKoWnl0xb8fDgejxhdiMAqi/1McyqYxF51h2hHxiaYVtM6FYbakXcIQ2S3aJJKKPJ7gXvTfrYVFnWkz1IR16bJs0+r5HIhUYqU5Prwe+uN8lnks0cHNIF48siUSNnzmm43nrIbDqdW+IOR3sD2arO16JRFhNHsXs1W6QkasViNweB+7GMfh8CQpqaYUnwind4Cyyt7303WuIiBzYy8zwCLrxypVs2254JO4paiIdA75ekaddz1PQb8zYnfSvEfDAS/nvp/5SWAxprXz1Dovgn/HEAX4MlNZzKFv3lkGT0dkbvxke6nxXMvjhVAg40LfNvJ4qBXdOpY0FcRwqjE4Zou0PAkvPD8yXwssgVXnaLM0ah06atRVxcfZBV7VZj/RNGhxqVhsx4yAidKUPTRxm3KMcil/UFILZwMonUrMExK64V0zR8gUQZtoDWb1Lodn99gVtTxxCl+NEyXsD4Aybl6mHQhk4FJ7ZE5mCQznb+MMxej6Q/23UhXytFOS0BGmnu3GofMebryxUMmge6XiapYeD53uPGFhcZ/SC79LPfhoJFoXu8708TARtri72otdRSDv3luH25m7AtO/7Lv68CH5Xq/iXKFIQV0EPJNZ0w5KsfEXR1ULQ07MbU1WhoMjpGSXBAz0wVHGzd6G/ELhilM+mHKAgnwGXxzYG3cB7wKOmbqoQard7jXwwoKCzB//5i25Wwc3O7hM6jgiKk0xO5iIM4nLW0fgcXQjvaD4cB/USgPnyWssdWggSi3BKTXheAKYB7vGyFolwQ/dU6n6Gt/LbnEy3d++FhS25jo1uMqzfCr/1R5+ELgh58BzRrYJSr9Z/L7wZvenDvOV5HYO+fNy88aO9ChopS1IR71PhtKi/9oF0DBJxd3nPK1kNBk/njF/Ep8MleSabZ8MYNLRsffNocDfc33PREpNQAj67e6/UAwW1Wf3i8tBl/C7fEZ7NzWJ4pL24r/Qi4/dus6X9q+uGzpMsH44VF0Pb2N7HGcoU1P2+p2fAqgBSFwP7+1yTIbZkjevpuxCkcTdLE6vcBzOzXTvYFdMgT+cM6WcJATXeNNNqwOUCQ3KEDjH63INkcN1cKBSFf6dfXbyRB8vnu7tqJKjgTTVpWmdwy3ifUsTPxBzgZJpyLgioh7y3pb+0dEJRsknlxezmLrhy4kW0lT8VkjysXQ0YvcDMyWqQL98NduXxO+3VqVC19Wr5kREFNW8c1YdT3bBxdePvnev1sOdWwD11Qwq6XBiUKDvcDEeK5ZtesSRAXky6og6NgNqePRcbxTRD5M9ZaT+fWHBynDi+GkZASRE+Z6JvM/rDrnjGQLsO8JPYHd28WPQlzT3AtAnBtbIoQ+YvtXC8wv2vjBWWwUsVW8RGRn8UpqxllNXBXCfHkQxLLCL7uVNO4ltgZpUTL22WCQLOnKK1jPzJ/X6bXSu8HqRa1PfdN6mG9a0aZYeUSLRQ/Psq91o9PHDUSRIProLjAWpyA3ORiD//ktG9nGZgynhu7ByXCo6rNZkKyQQ0+jYjw/NCM/hmOxxRsUiD6U9bCKwI6LCxKuHuxWZIzzo8VVyaAhyDByOu2xBQzclzMYEOzfC7aIGun5QAv8/vOvLBjYAyziSd+cjZCxHGqYMxEzQoXr75w+kPCbEkrHnuGU4FW9pnjL1FGDSu1qzLe2KQ9+Ndwm2fs6BJMkk57GQhjHNMLfZSQpHb02aLka/ZsFbI+jxzrRCSVt63htqHor3qeW4bElmgmb6yKna/CN4dVJx3bAhFNpXb9vy2SgSOOpV8a/F6iLBKNj52PQJxb9lTliSSob9q9M387now/fgjxislHL1NPmIw65kM9y8fuBRjWAdECRMn6afhiNc4bo157jXsLVL3GBWnQprr38sL5RGoX25dvPFYPDgPmbQe16yHhXQrDX2ZSLTiQZa5s5QNUWJdeTvaiiAseCuOfisU8aif7dE1bYbGPu18y2e5QLQSsVO1IyBsgO/eF9XNMBbyA4aqc+Hjg8DJ1hwC2pcV237kVTNQBawad3PnQ1ZbulnKK0bu3ern4VbogbkuuTq+8Sr4oOtteXk7BZm89E5NcO0BbgLLSSpfNSjuSXkk10lGW0mz2dvVe8DgZ5Cc+mo1vB4X5n+1QUYFNIX8ax498LWjUj1SugYwZ9W2320io3XFb8Q0wWaoNvbr+p6fB3yqSS6tGgTkf/FOK4dCHzyFE2cHTUhgP7LncXYdARU7pTcd6WyAgFechw3vIzhw/MKlkshoJGCEV9c41QhyVZcCRxIQ7NpXTZwci0bXq+Tltr9pANlDzDWZbDSIj29XrXOPRvumrXgtnhHhw3KafVMdgkeSZrszlqPQn0sh6h+0G+DQQLoUuZMCu8uGSi4di0ZvmZKbGgbpcEw357uMPhn85V2dBUZw6MGfr71/7jSAovG0VPUSHlaen2/VPheN2t/IeSpkNcDtE2Nvc+/mgEbHfYqFRzTi+/BJudCrASoCTJ863KuCh7y1bEbGjPn1SKIq/nRYcal3bsSXg7SWhdiNGBwyajD7UShAB7WzjR2jX8vBU/FW20VTHBrIsheplaDDrSQvGfy3MvCT2c/9+RoOVWqoFqb50kGrs7RY06QCpgbTPviTccj1eJwJV3QjbD0bt9vvVwjhZ1iH+oXwSMpx4pPpr0bw9Si0EpEqhI2NH5vlDnhkhnmZ8GCuEeb2rxrcPVIEVwXWfOEmHjk83RcQZtAK/yrTLWNlfCDLP+92Si0RHZH/M0oeaIHkNLn+KmYfuKRYqrjrPhEps6nKORIaIWgZI6vytAAceqjcoSJ4tF9vbbfYsTTAexs+FPAug4SxzDK8OaN3DpuwpVakwh72xIUbKaUgYzXVSw7EoK2J12xvz6RDzp+Lzq7tpVA7kse5cyEMvfNyVvFZaoEdc17tYRnO4KxVd0UgkIhkWVPudJu2QvjFJEnBcSewkDGP5aYTkUKXMsuQTTfE1d88/bzpGeCyHkqMM3iD2xP3kROXBvHpciFf1kogXvIzMe04Bp1qNjOjV+eDZ8zRvRmFdKA1DrnZjIcgrkbhWjWDPBgz+CF/6xwdDrY4MbvtDEXUZ+p/NPO7IDCxJKP8RA4QxG5/kWF4xM4MXIvRiT6oEjGqazlWCk4JFZy/qgnoUwjvdLJNH7QTdKQq4kvhXglnh4k1Ad3rqFC0/9oFN1vFWn4Z58KqH8bCypyCanc67NrNmP84YdzBdi0XBD+xljFdoKCSpPM3Up/2wlnFio8V3FXQyltqcUKZhIqFMBwHHveCxZj8lsjJSjC2c9m3TZOEVI7oblWk9cLt/Np8EzuGn4p8Mt37hYjY1zTPW+lngunMJM3sHA3CCk4V/d0IRVLnz/NayWUARWPOpvwJDbyGax3Ox4Wh/p9x3T/rM6Dsw8488i8EfnyZsmOuYaio6+cFdvkEMLjtSRexzIGgEoWLuukRKDDqt1eSaRKcDY8c0vmdA2zFZp31rBHonsgmpt6wFeZudb/q3tcAGB+jW/X1RPS3deSQemgrbFws+y6Mp4PO/VbVjGkiMnGLTl0dQDBi8OVmwfVq2PjNb6LviEVMLwK1Eu4iqOPibR6yqQbNqqEnVocYXlNDy/V/iUDJi7O7iKkSOmLCPusfx6K2Flvqdcbcdwap+y6pVYKKJvyY98UiMydsyteuXtjdIHptfaEIngQ88TRicPId5c/p8196YfAoLLkqFsFAFmJWtyKi4JThG3vkusB/Wv/CfuViMGYtTphjvK/GKJAM5e8CuZIJPYGbRVDd9zsjyIyCDE0PNUSR38I7FtfLR8OzIa4riyqYQkYyDg1FvcffQu9tPa6XuBwIX30sOu1GRkkGfHNMmmVQKb7/WHc5EXZoRz308Q1Fs1dY7xwrKgWtlQO1bop4sMzzV3x2KRS9lns7YbpeBvnPHtjRLEnQFnn4WwEtFM0MbPA85yyFr3m86T8scXDOiKrFw+CZ/EPiKlHOHYDXdz3uPIzg+Hpkz7HfZKTwsbCJp6ID/E7xlE2I0kB12TY+fR8F3fva7q5AYuT8bQfySh0O2tZz/QqTyIgn1+7CQmwPrB4wCrnZRYQHlorUE3FkxLL+WvL0jR54cNxi9L43AaTMl+c4P5CRdDDe9+nqW+CViWkeb0CgjqDL6S0ZrVRnejvvzITpv6TZU1UI3BW7BbbvDkPX3Bxr03OzGOek9rL2AgI97YUTF9NCkXBrL/E+uRHUWKQNohg9WWwSPkEVwyOv7K8d6EQjfD2i7DXZEgvV7XMhd4eikWiK18ydZ41QutBgX79EBouni33K+/Ao3oF5QtOmEWwFCrJzBBKB68njFo3fjHz+dP079jEdpOW4mzu3M/bn0hW6JhGHBHi0lDQ/0mGI+wyOWR4BC4+yN+kTDikEM/GRsXQoNtJTygxF4KmQK/s2A4f2ut8/jIrpcOZrKfe7C1TwYcs62UDFodkibeE2jj5YePUzvWO+EM7fyzz1neEjiVzf1Tw5O0FEIqhCyYsGv05uRaUdo6DEqGtFH4L6wE1RVXmbby1gfo3OZO0ioER7y5r5y32w3Vnw8wytFk5ncA1rehPQfTnFdF3zPthI/WN9N7sOjjC5f9hxn4DYntzpsdtVDxaeVUuLriVge3nxxox+JFrebtPuPFgPc8uocmO5BOqCuuJeD0Qiyzhzy5uxhcBPYfe5lV8ECr7tFw8wvEDonXSuu2gRHK9eE2DCF8O70fzFbIbnRm75NmPFsOCnoa7y+1g6HK4jOV0qwCIZiqucwkM83LQfOXMsPg0cPtOLEWCRqrK1RKkMHjT5bzyRfZsCUhqPr23oY5FzfO3IYVQPW0b31q37i4HletKyT1Mkys7dvlt0oBz4Zj9dSsqKAUWlWy7NQmFI3PQxYbtmBXA4/Dj4auQ1hOO/BM4YhyHru9gilavljL64QhJtfA37dIZ4rnwNRek/VrWJC31Q03LePsCgGh6nPBvTBTwyJ5cT7715Cy3Ou14+MkCwo8tA60IWGeWB5nP3ybdQj3GIu5FNBTPZ2QW3BgbnZJ959VqqH7QazX7Lu1XDUo3Djevj0ehJb9wV7iQalA3Hb7t/uhIspYvsl9aw6HHh9nt72OngWx56mA9VgNHXGj+qLg6p7wuupeYHQh6L+zWV8CyoKrO+k+uPQ+IGIbwnix6DXZKkjqF0FnR6RAbN9uHQ2iGSVHJjJRQuNbIhkTo4aj1Jk+LBIKmDL5cv7KyCbE/dU6Kq9bBuc+FHpCoG0UUCPucwcp9nV3IVzqYWatq8te2cMWgwt+i7C7YOZF/LbJlT6WBdF4Kx2ohApsEN16a96iGe5C4zxViPkbTr/IOPRJUznpuNOaVgdLr9Bc6pDnYRTgq+MwhFhd60F6tHSyGYXyL7yUodqO5PsnSVCEU7pEYy592aYIL3HdORrDz4HoRidiM86smScPi5owlOCs/ldSfmw7fpX7fgER4dYBWNMCvtAsOMJzP2GyWwNejN/ZfhTa81Vk+6zXZBS0vx8opCCZzebH9xgZG3d0u6/+HFGN40Y/Ho92gJjOgX4JkvM9bf8/Aux1TDfj1VvdIYHDzg92N7LhiO1lI6MbsaGBwWYKqncRgL1sZciqQkDFooXQ22flAN/7b5vbV7gYE9+c4231jCUU3RC+fPLxl5nrONM2quGI5rDFgVMvr9l1qPzN6aNrCu8bOU1KcBsw5P3Ms0Eiq/XDKgIt0O1Bm7CT1fBn+mrdvrTZPQ5F8pU66BNvhe+iOhupoGGmYRZ66UkJCcxM6h5pEIYE2g65yjVgNpRWHBYRCL/lpqFHDfCgP97w5T0cNVUBfvcE10Nw51WXj7cA5HATDlsP+OrIKJQRO8QjkW6WVsFKng7OFsE9MDCzFHMNTN4D8kHY2OznT7Y428gXolUOPgKTe40bQ5gPuAQ+2j24R8yhzgddORfWeHvUA5MH/9wpFotPNcEmHMth+ynTQzvOQbwNjG7Mt0RDS6M7Snvkm6HyQv7U49zNEA3sLL0vdHoxFTZOtuonU/HC3z4jrZS4fuFoOdFXgGh8sm/wnwpIFspfVqVEEktMnM1J0exqKTkSGfTVVpEL69pV3hTDRESb0LCM3Fok5mUfaOQzT4a7I9UhcTCc6BhtqHKFiE8aSv7MfTQGbX4uy2+Ghg8nHojFzAIgud6e3PYv/7/0LANtbXNFD39tFu/IhHYanPRfOGmuBi0+0v14EGApeTA7w4CMhr/deq0koTHFrpLL+YSINtYj7108IEtFEhw/HdrwnO/siceKbM4JwrekoP2/BIZfTjyAnlHhBY/Xrf92MdOMlcZhX9R0aRVQW8E7+7wdI+rHI4sA58iKbi7BIU1GEeWPHrfTa83aG9yd2VApWybb5ljqGoQN5BL8Q5F8INf2UYCaXC3bWSh5Piocg9Mz/77IkgcON4NOJJyoGqgMSwOUsciuOutuQNxYFN50mqm2gdpBjH1rI+x6Ihh2UTPbUIUJUcOshhWwf39GplQj9jkWBCdtuTU02w912pQ4tKHWDu12W8oeBR4ZAs7e2+JpDVmrPh+lYHba4jg6O+eHStq+BLy2gjxEetO24I1gGzZvYtY3NGD+5/NzpSioWl7x3LFWt1UHDVdvxVPBZpiAexKtj1QeiroxFqbWTgWkwLqjAloMyX6qfG7/aBXu+8ueBUHOzh/fYGp01A1FghwW9W0fB5c/OXcBSCRdK1964OWLSpZmP24j2DP+7cYcndjSB4d8pauxcW/T557YB8bB+M0dVvc7umgvCwtUrUJzziLArXbhduYfQ6t+v6+xeQRAtCzksMHwxctHL5TIXbb06YBxgwvOdSwF1pTBS6ld5cFDdIg8dlJ13USlNh4H522h1hHOodYQblvzRY+gQ64/op0LaLWVpcA4dkN38fUlOiw93eFyc4plJBXgSTWGiHQ2Zqxu4jD6igLiL499npEiiajnhy7GwU4uNLTEj174CEfPKZH6PJwBImxC/POA8pT4OebOl1wPv43jtuHEkwPPPoy/FvZDSCo5WJCdPB6HdC+hyUgs6C9dp+MxzqJ6Rc1zOiwzaLOTUadxmEOmtrOXrhUPWv8ZioPbXA8+nZGbeFUtDMutEZwRSB2H888LSwqoGvUgfYzarK4N2RBPYT0eHofpK1TN5KNfzevMK6bbQUhscEW2+ahaPKfVpqDds7IPOGvmG6fDL8yRTvf9RDRuGk+dnG423QM/xJiGWlCBT/XWx2MSIhbH1h7vGHbVDHdveo7aUiEGzce2LLm4RmvB5XiIe3gfKV4vEUkWJ48S3unE0ICakpXV8q2JUDDXwNC2cwxTB40Mb1jU0o2qU0Sriy1AiOy0Leut3FwN8MF//cxqNfuVYZVbRGkHQqbjm7VQQ5s7X1MVp4tC5V3J3u1AXXnrTPX+UuAKFdSS/MGLmKXWxI7u3uBJXD/ct31vNAoUn2yzlDCtJltrnA6tIFJ3V4fkF/LhRs7P/syPh8HoFtj/NWG2wsNFID1YtBckN79kc7CclY2X63c2oHawoN1yBdDEEtDj4ZrGRE2PdcVfFwO8gpOmzwSZYA34dTrMWjJPRRrYyfMNgHeZBAf9HzGKx279B57MK4F9tPtPkdD4Zfut/GfWl0YF/dqn11CYeUYiY2rmW0QViMbirzdDGUa9idlKCQ0O0t/c22/HDwO7Ck8TfgKchRY6r2zmKRhz+m5b/nCGVc/N/zKe0H6v57DouFamFoSh9wJR/c8zuODvpWOno/uvBIUevd/+Zp6/n/793/r037v3kOeu75nG/QDzaZMSZ+nHRIfJWEac6NRsasx6JJfP2wwjd9N0yAce6Ij0y11qOR8PijuXNy/UA+r+fAwsjRdJuKLpb30ajy39cUT6Z+uNJknX8+nQ4vt8Suxgvj0VHt2M2ozPuwT8Hii3rlK3jrfNXjFEc0ony/8dhqxBcWJ0NvXa8Ihv8Di5r0VnicFJt3ONXvG8eNUmiobBUN2YqMkNxFpKyyS6WUnfItlWQTh4NzOMvee+/Nc469V8OqzIysJArpd37/PtdzfT7Pee77/b5f7+tcn6WNN7l1dXiUX1z/yN/pJdxlD8qu1A8DwrSqzNYYHlXgY1Nu9HmBEDPIsZm+hYB3TRlWFDwK3udyuErnFSx/fH00JIEKH7OQauwIHv1iqtTrEh+An4pHJORehYJU0qjjw9FwxCz8++Q13z5w276WFipJgGtsFWInxUgowyz4i8T3d2BreHuvTkYt5GZftCRdxqPjKRdcuFrewbBmyoaeXR3sz7VxyFWnn4dWUmLL6g32hJOrF4TqQNI/esaGiEdHsZq1w1EJwGHw1frKbipULDnHFE9hEWVSK/adli+cfpnPrLm7HiI+MMxov8Sja56VEnuPVkACOlEWg6kCQcuqXZI1QShNVz+NFNEEBXG7143SKsDPW2yrbSgCYaQF39/qbYIGybXg0NRy4DBaCXy9m4C0fskI4e6UgW3Dc/yVZzTQYs7QEJ/HoAOW8S8O1pTBV0OpsudUGpz32/uZhTMILTQSzXCppRCjt3yrsoUGX3+u/2FMxCCt1cHC3qAXYPDN1u3acS8Yiyn77rOAR24e+nd+X6XC006lU+hjHnCXWv9gL8ch5dHax6cdqMD1MnDhD1sulITqP2nqw6HbdluiuRY+IB5Tmiu8XQNneGYowr549DDaNJQr4zWsRxX/HLpfC5k6y/MnB/Do1meofS8/AFUm114LvKPBWtJFTveOcNQq06ijyNMJH6XzRhwEk2HnA62gZJCM9p2JOLvlVwvKwow7AW+fgGppj33/agjSNGf8RDxYC5cErKrccB7g9zG2lyUtBIk67JJi4CbAaP/MELyvguOT0xrt4jhEWxBTzbHHw+XOZjvdgCpIYlO1/+uHQ8F9/7FZNqSDmcjERn1xJbDPqE8TBYPQ7+nXgaKlGSBXc9N/6EkVOM2mTgp8xSBs4bCrrnY/xEo8mL7jkwFjz9+HuQcQ0N9P9y6Ev+gHxw/TJrYfMmDJuNdcS5KArPabmBDsMqH7FQsp+HUllMn6nvEvxiA5M9wwUaUO5O4VzGQeawCqb3b2ScdQ9FFFV8v8TS0E7VS+cxFtgG/QRRn4HoL8XTVjz9LrntMgHy8p0gBxHa4OjPS6Vz92DPaQ6oMDF6fsbCML4ajqqTLHFhKyPJA+LW/fB+OF/LuYpwpBOHoaH29OQpj9S6+473fAPiaRJNLdUnAlPpfpCSCj103f5K1/t4MWr5+66HAJcHWpMrMYk1Ggp5npCd8OkPsvfXAnrQQOVF2n1FLIyLqade0qaxVsqqv82+YthNw73hr9rcHIu9W1J8q1CoovLU9HbxXCTcf0kbtsWLQmym/biqmEg83uQb17i0DXSwapegWjLEkRF8e2KkCBLwwmzhWC4txdbLsSFknp/ek7r14FOTUxzd2VRRDh+Z+v83wwSohLH34kXwffnq2XXK6rgA+LF6q2bUIR/zmvszcv1sJgLa7Fr7cCBE46s0g2hKBc6/tTRZO1sMK7+81SezmsfrI4+kYmFO2qybjkI1QLvZCpoF1ZDiN+jsqshSFo7x+/VscDvXD+qssNrs/VIMKpvrSbn4KMtm4qcWz0gNaCiZpNXhW4DKgewwtTUCGrG5FfKwf+iDuFaD1KgwlmGew+MQzalk8Yfu6YA2cd8iqff8yAvVFHPsWcwqCSy9pF0kFZoPbJUpc7LB02H9n8K3fBoLEBfoN65Sq4YjSefP2DH8RFnTjgOx2MxhxpfDlRlXCY8QAD40AgML8YItRiglHARuAucl8sTAh/bpob9IVrGvc2ZWtDkGkRYaXzVxt8sVU92iJGAy/OwzU89H7wOhTBVKDeDg1CAq5VU1To5owdKvlJQprfxnHfsvpgQFjikfN1GigmOHhZDxHR4s03qxM67cBEKT7yroUIP00lAsZ+k9DA3rYjvz71ws4rUzGslBfsm9aobtYho+4pnX8fHtbAWZPUzcJTFeBdYqA9rRCCPP61W7ma10DO66EjpCOVsOeB5MjKuRBUKpgyOitUDuFMXYtZ9PfOM72p/nQ5CPWWrMzzlhfD5dcPFqYbS4FzdTVwghWDuCK4RMdWisAXF1gkLVkKE2w9ApzTgUhWp6NNbLUYjvEH+xQ0lsBSkMF7LA8G6Ycu2e+4t0HPxYNOdqIIhBI9p9s8SSjulD6+vY3eP6HH+JiJOAggsCqxd4ai/6Q6PkyI18Etceqf29RgIFx36v1pGYqUOU/jMTL1ENqu2s28GQg2AR7UmsNhiEXN68beM3Vg5xZ1t2EwHGbX+ENK7oYi6U75Zv7sFvjKMxR+34UKLKL4J5s3iWg4fm0P63YLCM0a63K3UWF3tZ2ObyAR/XpcPej6qgXePvncdeA3FWzf7HbtlCaiwq01jt1/W2B09lsiVpIKn2QOTUpgiEhP6y5nybtO+P71iPq19nyw7Je5vsJIQS7+IiXGGp2wM1sr4P8+F1wdsi6cnSejiOEbYVW0Tvh8ibj2mSMPdCkX2BW4KEj/hI1Mdkc/jIZtR/N8TYKXRUGLBZ4RqPHIjeLxvn6o7v1Z+kw3EYb3RFBPvIhACh4XFBr+9UNKz3ZK1NdEiLPXtPM8GYGSss9K9S/2w/BxgwYnrgRQuLlSGXM5ApHjLFQfCw+AQ9rRSH3LZCj3P3Hz/VQ4chu00+FR6QTdV+rqSt8LIFv2K3PBNzLCEreVe3c6YEn3GamyMR+c9qLdH7vJ6B9yvvGxrA1yp97GXe0thd+OiUYMSSQkZnfN/kBJG3CMk0pUWEuhp//YZ9MEEhK8eLalm7cdznNYmLMplsKDPj8zwxES2qNfScyk6+J1oP0KI5SAUuCyCDNdF1jHcy6fxKlQs3VjSuMiFVpq/+wnJ+MQH0ga7BpD8AhjuYhbRZBip0g+44RDY7kqE9do1cBLzYqe7Y4C7NXnNl19WJRT54F5mlsNEltCYcI7sZAV0Xb2UyMWSU/P/eo+Xg31829evhqOApzhl73qT7DoQW92gOh0E/gOq34avBsOqy+bl205CahI3TBj62wzFE395/s6mwBPCM5WQ9oE5L5otbv1chfkF67JnPQqgoRObrc5eQqKdngy9ud4F5g7qEsz3S+G4w6Z50SlKSgtmO1o8OdOYOHhHnEaKYJ1RueFI8coqLlx4cQNrmbwcTpjfW4UQdpCZPuAAgGFGvseJxR1QnFoKlMzuRi+0qp+XOKgoFah9rGSTQTZt4+3v71HBBKTiaKkNw7NTsR8PDPfB/c/BjmzSBXAZ7C0u2lERGV/LWJ4j/eD6e5mT7fufDBPyfJ/MEVATDDT9t/tAQhpd2yjpFbBs2aeoGRSOHq48beRbD4A91af2Bo0VAPb5N2pXnI4sjrGpXxRcQAYMY/a3qhXA+FqEOleWzhqU7bWfBncCgx3kwJPZ5bD4nbRN74ZIlIYuj7wcYjuFysHqYcf14HJuNIH2VI6F3U6cJ+bLQGscmy4VRxdr8qCjQz3MKiwj4tJ0L0U9CQylAPKa4Gp9AvuCx6DHjxNklC61Q2OXpesVPYkw6CcX2yhKQUx3999S168BJKOH5XO06yEJ/u47yBhDOpg1kvQ1imFC2U0zdeulbCPGSwkvTDIMfzlGaunJRCerkZlulgFEC1m++kCBn0/E54d6esI3x7Xzh67VQtfvWe/mRwKR9nDT/dfn7CCoLyupPyUGsiQlWFSEwtHwxgl8029AbCVdyoffpMMU8++fEtLC0d9Ku2iIpb0+5wVCrr4IQXM5fgej4aGo2O/HQNSJ0thIJ2f1epsPZxI2eTgqMQgw8KHFln+3VAnfilrjpAINfPuVQVmFPTz6/lr5LAUEPGUYh0wo0Jk1e41GelglJF26r8d8yx4maUxRTAogWM/i3/c9cSgjQlFc6nubMi54KJtM033XeJRsWIVDNrlbJeR+zEbNPV7Cs3HS8D6yBKTiTIGrYy0vD97Iwu8BPyVua2LgX3nXNJDHwwKVQufyNClga39SO9Jlnr4F1Hv9tMFj4zEBGLDfGgg4Op/vk+2DjJ2wUJwDB7lRF89pCsbDoWC8i07cfFwVfXJyWl7HJrbw13zb28/yOs9sPZIKoEhyVXNH4eISCQlWWrkUT98bufSBtF62N5QH+PXJSCWL3+7nR6HwVOPnXdlOAp81HjJganFoZ0f/PZD9cHAah6n0XKIAKfXGc+2buDQ3qulEwV/A+FPQ9KW+joZ9usbjTidxKOJ9GeY99h+sNdtlJ5zQXCktGL55WYECjxaI8eY1Q/n3Z14Wui5wAcz1auIIpDpPH22cvRDkuKXOLa0UhA6E3/GgomI1gL3Ce/73Ac8vMRTDVKlwJUU8kT/GRH55+FDMON9wDadTxXYXQbHrtlP1lgTUVyHG1vjRAt45eSjNEE8zKQoZeFfEdEqLWjDizEY2AXYJXL5GkCmX7vOhhmPFN5d+f0zn+7nqWdUSwkOICdTcZlSQvdnUQW5H/R1G8h62Ejfn0P5mhxLX791pdZtiP6cuvQjxjOhDsDo9ufOQ/pzwm6W7v70rQskX+2UDO1KASN0FWb1KUjc9IMXlbsWsp7y+ozV5AH++R3jgqwQJK46+fow6ocIbhcvRQyCxaOVp/HECDRyM4hp/k0deKTYeYbbU2FwwpixmBSKFFhHtExojXDGkXWx6kgCTHiTZtmvRCAlb7yJXXAHlMk9G18KzAHZZBGPsBgySnE+fvrxng7wItdfx0vnwq6z408yLchI7VqmxBV/GmC1NJX/tGDALzr3gl8cHmXdeYF1odcAMUh6+HRhQPKskXnALB51Z9YU7UoqAK+wD9yZMbawMPY7uAkFIkgKLn8RWwh/7nAWN91zhPuvlJ4fpAWiEe8w6texArA8JSXmqfoGHl9M/cJUH4iEhmN7Z9NbwSvr+H5m2VIw/Pftm+8fImq133eP81oraFYLvbpxvRR40x0UmauJ6KzXa+pMjC8Ep1fJLoo3wCdkwhrujEe7dX9Seb/T57KE2c1iDRugkbLWn2hGoJ3LuzaXib6wIz52sEHeBvpizn5Yo+/nyQEvA/r+e5frf4pKNAD7aJE4O30/116sZef3TBB/Nhv1UKkB1pTefXtKwqBfPgnva4MaIbrB2NHrOxUecAa2uPFFIKYQ9DxIuBGOk/gHRejrIrX9aa97wpH5tcMpzr+7YVTDXUPPjj53CEKhp4woyHQlfyF6fw/s8bRR5k4shM6Y/e4Xb1EQxp05+bd5D4zwHSw9xkLfr/v+p8c1CpLlbln1IHaDgOdK4/76QhjkRG4JdP/h+qRk0MndCymHNeWVmYpgejh73ouTgrZX9jKqstfBx16567jGTPjrVviy+0YoOipW4c5aVAGnhnmpvuYVMBD0cEeVLRjxTh+0stathM5pI6KkSCUUM7/wItyj5wv96W7J2ArQPNJjZi1QCYqst2ak/gWhVbHONw4uxeCfcebAu+4yqIv0u268HYhyCp1sf2iXQIZkW8dttzIoKOn9oSONQUWTKzwYoRJ48SBXjh1bDvKOV/MV6Tw/8TKZ9sStHV433ljqsigB3roX2sWHyUi1obfUMT8fHuJn5ycKXGBBsqbBqDcQbU4cbQ140Qxj+yTnbrxC4H7VSO7tGwK6KFua5PG3CVLYhcc0rBEUMfX8GxCmz+WgMvlnIY1QZ4KNuVuVCD1GtNXnAhFIoMosNeRtM/QGL3TKbSHIUbabE/Gi+1u16heluUK4azj0gUckF6Ryqt/mNQciSjIToyxrIaiHaXPnG+eC6hBxIr4uEPEecucteFgIH9a/aJraZYPaZZpUJ72fzS9paL2ORkBzDCMk+FNA+wj2o68qDt3bbH3ofZgK7QbXfg/uj4Tgn8d3SYbjkO0R0xD2jULoEAxK4SrNhGCroLtVLYH0WDfIxyxeCKl+RU+jpjMhbTvGrpr+3oeN23f/i0BwZdcDvLk1AW5zrvIOKuJQHqaoSbO5EBYERB1LbIpB6HW+o0FjIHqgY1A1Jl4FBz3o4NiKoPhcnqzWaDDCFoyV/3lQDS2oNP9bTiEUXqfcUidh0WzVvxM8dG748q1EqSWgCCZWEr7c9sWi7/b50jQDG2jVb58UnymGC1qXJMYEwxF7T4twwctqmFSQZfbiKgH2kSsxO0lYpGnd3FP0tgYElH+0mguUgP9WtORDrRDUdO8CaSapC8okF7E/O9+AbY5l6zktCpoup1l5iXYBo8vtSQdJTwgUv6RgeY6Cwo/Wp7yz7IJrLF+vink/gS8N3wW2VSiIc25TzeVOG/jw3vguG1AMJmxnkvPtSUj3mPjJa5VtoPbyMU4tvRhmvuKFXZJJ6O2Ws9iBuErY+8YuW/9lOoj++dKVGhyMqr4fPHMysAqkKO0Z9y+nA4Z/hrx6GIt+rFhfeL/aBtjCxzN40RpYcuEtsWgioXKWgePlou0wlhRqfty5GkzFJwwdp0hIta+D2K7dDvUPV/Nt6Lmt92Jm46kNEkrsJh31bG8DEyU/0xHDahjQmDuam0tCOq+CFLU/BUBGnfNt9rkiqKzxnes7j0cMvN+OvAnGgNVm5J2b3EXwwPuPyx8+PGr0D5PQmMDCTuCb4kL6/nqa+duxaRwaPvrDCzvmBw4qifUUiyJ4Wp2v9+Y+HoXy8wi9n6Hn912rdkuplWD7ceL7BblQtM7IlPdFjAormuE22CIqsJ5bHZhKwqFzXtVUu0tUWP9e8MxUnwamwQqP4gtx6PB6Y7qCF5We203bFxep8LT0Z9LPMRxK61mpyaPPqYyvh7RG5Etgc5VpwYYQgUz27poxKOgH0uRtrveHS+FGQKX9ZHEESsdNmfOG9QPFsetEzKUSuObPWfD1VwSy8y1MuTrUD03zDEHV70vg4CHnW4HWEaiiwdL+jlwseCjeWn0nWAR+36z20aZD0MpU/3spswS4d+b5liumCOa8yvVZd4egfTrRY8HkWKgjDbiUsxVDbnmH4YnOEHRR7MG5GskEoHAcEvgTVQheHd22OvwhqOJPkllRTCzcysTkdvGXAOHf1fSu9hAkQ64q9paIhmxGj9og+2KwfGwffdcpFN2JJjDW/4uE8LAk6dzLJaDugalSrAtFqsbauKGsXqhGmxWiKhmgh1qljwWSUVdAcWzGQC9s6Jzp4NfLhHtHWVcbbpHR7+cRC4Ffe+HW9YR/6QzZYLhs47XvChkJayMfk7ReCP61yyLzQhZgtjZn4kLI6OMi5eStsl74dljM4pJDDjz0/32kwZWMDJtlPA669cLgfZHsI1YZUNOqyetaR0Yk4n+nTnxrAhz3sOsF0xCIxpWyCXARkIGmpSqprwl+NJ8aDQzyhZZS4WhLFgJ6P+hq2hbWBJ1pw0anEjHwrMTLYt+nCNQj3TP5nL8f0qVGZRGdq1+GN3eoLRDQebkj148v98Ezwa5/HWk1cLssxjFbm4gYZLhHi3fR8wvlz6Vp01rgMHhSpCBARHIZKXMZ7CmwWHTTuZ41FnzXbsYIPQhGE997H5CKkiCLIb+xvCoWDgcI3/BfDkYhZU28V3+SgI1c/EO6NwU4gp7/MsWFofldwkkBWflwpVJ/5plgPXycYboWS58LAZzZp4NZ+kCZ3VgvrKseqEqnrj/dQ0Yf0jQFc2X64IBj1kP9xHrIy211V0Uk9HOreMlMoR9eMdkIdUTUA9GWOUyggICmT7WZJ13sh2T3JmNunzqIfJ//OyqJgDoiCAeknftg/5rTq2efM6GC6YmggQ4J1Yf4SZur9UFcVGDQN/0sEDr8iWCWQUKF+0Va9K70gWpb4vJdxQxY2fZe56H7T2Ve4ZkWtj6wuPu4JvV+Jqy8DXevYaDXi5nIaq1Lz/MhJawDc0lgVPP8lH1TIDJzP6v6/kAhdD+2+RFtlgQ2/eT6WLr/b6eX2yYezYeF3JMyGHquMcI3hHwaCkRW5ObA7bluOHwDxygTRdf9t/vel4wp6IRLXMLfwG7wO7/vwu+JWnh0wPxgIZ0fPnI9PiKq3QOT4q4NjvQ8tZKVkrj3BgVZzCnvnfJsgT7lYcGIdSdIi5e+HSJHREiudEBVswUip366jVHfwKefR6X/7iOiWeewIFOheji9l1vAZF8DeDMKTm2yhKHNb/9J+9Hv99/C0thKIQ3sm6vf7TYJQy1or9p+zmpocs0yeEyhQqE0b3KNNRbpsjS9/TVSBT7rG4vMR2nQUFkY+U0Di8gflGQajlTBe4ej5YvxVDg/ZnFvvDsYPeymifvYJIHW9o/jZ3WqIV2Bi0mGA4v4OW7/bVhLgLn5xzEHvaog9Mf+jYJKLLqOjfLl3k4AvslIxdc+1XDldIH4hTIsui8otv8BeyxcDvdJyqHP+WtK3oUPV0JQW6CmcEZuDIDKs5FXcgVww0c+uXlvKErX+GeSXxcPRbeCr/V4FoBAzzhLEISgv8xMo33mUbC0mMCGf1MIxoc3uc6khSJmGdZZ61NRMCD84o9waBEw+LSP5pWEov2ODYHP+Ilgf/2/yv6VWNib3uE7tQeHnlfPSg6WEoB5gsuwXyARClO1DB9z4dCJ7SLVwMUyiM7heWGwjsCqJtxETTwI3dnjfu70p1Kg7CcTzgpTYcomp/VUCQZlVuY68YRGghHZ+PDj/hQ4//2sfNZoKHI2V99VIUeBVa+z8TLPkuHl9vm7RKUwlKgsaLH4vAEWDbYPepEzoZk4XailG44OsKrtuaHSAB3MD8YeamTAGexpbeqpcOTDuTokndkAO0zJrnMt6WDgMm5v/CIcsSixeTyX7AEV8W86HxszwK5OJnFIj4Lqu/JbalEfaFaVYol1RbBr+nckXw4R+dyJvK3ahkD8SkPPQ+cCaLESubB2F4cqwq1ow1MI/m3Yv6pcz4OQarf7FGc6Rz0ovMd5nAo/t+wD71kVgJOnaeTzKBy6vdk+eDGpE4oPsZMVlWvgxXrq3H52Cprpn7vrdrcT3pov1udcrIb5r97qr3+SUYWM0opmMAKpOd/3nth8GL+6zX1EFodecno+8vreC8W+WaLEN6Uw8pXMlH2OjG64HS3d1VMC+uM8QwF3UuG98K+tMWMMspyc/ZurXArtja5144bpsFU2LrbmikGPTnlLF10sATfBRo1GnXQ4/u6VfIE4Bo3heitoms1gO/hFIDauDEwxSR/YbxPQcp3hzbfyzfD68vuA27HlkNnuMNlAz93PWZ4rtPxsgg91D7+b5JXB9eFH9WPHCUgj61nbm5xOKCuauDrpHQ4XNLwnDQ9QEK2bgSnJLh9OdC/kxWjnQyM3637y+0C087LNOzaxAMwyjwtkPMwHjKpnbBs9rxn4+be5iBTAvanEgJ4mep5j5Ttu0RqIKu01HvUdtYenqxGe2jsUSMf/WePnDUcpYhp/XrS+AaXPa8winSRQ9ETUpCY6t4Tgv8W/fgm0O0nBI24R0Djzc71mDI8MyxXuNhsOAGF6b6+CLYIz/HvYp+PDUfaUgOSXowOQMP1G0C0PwTmxS5furoajUVFHr2PSA3C+MjjUj5cKB4qZWNU/haNLjy+xzFKawUJlQ3b0ajksGf+wESUQUJ1lmdxHHip0yphxu1HKYObCIM82EYfmy9OHR74ieNdjurHgWg4+7FrtrE50Xtr/17a/GYFb5b8CPvr93xU+G3vRAodEDRc0L4Yi6OIoLh8XLYfCZwbtYnI45BCvX7q80QR5qaKDn58XgD33mTvDJwgoLe9VzX3RZmDmv96xopAPYm/itJw06HVRPXHBTLcZnjy0OKj6qADe7qNUVNwjoM03L08sCBaCadTwLcGGAkhl1CnMoPv5Md2Y+BH+JpD7HT15VxGBTu0RM2efCGSaxOIwPtMIezeG2IZj6fq4/67U6m4EcjHcHJBJa4Qo9rQ1+YsIjkba7nsnFYEszdlU9Ej94DDYE0IRzADrzLPixjMR6O/8zWmt2mhgTTrsMXmyFJarOD/3a4WixeWAhg0CER4kazqw7SSBnFQ/DCyFIWWBxz201ijIs1ApUHqUDB8/GWeSAkPRgsv5nbcmTfDs/DbB0wuBhad6WGZuBPp9+8DWO45W2Jpay+Y8VgNahsxLMiQiOvrMg2V0qRYaqrPiztenQlVVAue3C3SO+nDghHt2D9Qu3oyv600HnqrD3qsXKMjwa/D+Aul+yG/YCPuDq4Wjg+r3yIiAuto9zzwf6YNNblGhsbu1MMHszl/2nIhGNl/fFtDrA/LCumyLchlkS5MGv4aQUJyJ6wwrhu4z/vvufKLnUG415fNNx0hISHVFbMakCK6IlF7xl6iAP8/Mj+XR+eHjWhT10/lioPXIbNxvK4cr3fnOZ1fo83fFK/gHnSMz9H0za9YrYEKQyffSXCD6Is8gP8zTB5byXtmSXGVQP1LCkPadhD7f8e2KUu8DlrgXNusXS+H83n+PWhNIqMDfxC3sZBEkbXz+6rG3ErKPcD580hGI3gq9P/VeohHkczTHqp2KIdSlWPHI+3B0uSxC1bCrAc7/6hK9O1cMzhXWdz+E0n34kfBgX1MD/M7bUPFYLQJMv1uZESYc1Uj+C7Q43AfllNdWl76VwC+jLVnCGgnF64mEHanoA42H+i+MqKVgsWheJ1FHRMKxzB8u0n24QqkD75ddBuZcj++L5BLRMb/tl85Pi6Dl0fFnusfL4cUetS/PBgJRR1iXqvTLQjjmcPGoQmo5DBybOO1A941ys7KXfwb7INX4jd+2QQm8XPMv/POaznvCqwEmYgGwHimTa0W//9Y+VZtNVTzaP3tS1zkwES4nMQDlUwFwzijoRb/Aoodax3MSDyWC581C9fvl+ZAlrKS8NweLjBkwOraXk+G/b1ipn78LgCK7M89UHIxEynhZf+1OAoa+3ZGPRwuBjyVXyUsFi1Ywp0PTzHuh7MKaocJYAKTOLCrrfiWjyAm8/3wAnZ9zzbwvQhBwHFYcLy0goySzrYphi15YyzhxVWgzDM5kSpwyGSUjK1u+47FZyaB3ZX2S/0ARLDD2tA8FBCOy5GbZudxeYPVX0X5lWgXxCtL7lP3JaJdmYtQxci+o7Tf+bqJWCZ86uy3j48noPYhcKzwfBZbTPhVx9VhYGA50MioIRZlRn+6p57XBHiTLf1unHnYzjKlMxJCQUpuuh1BGG4w+/WytIVUHiqXq0gqRJNSWPPW9caoPWu5Nc7LUUEF/+0vLh/tEJH9I26HHug3G05fW/bhq4aNiyY9UZxL6Y2Z+PWmhDUK0uRMJgrXQdbbUoZ5KQoIhfJd9H/XCEhuL9i+FSuhnuunL84GMBI03Hpz+RQVFYuQXDv8oqH53KDNUHo+sDpgRj4vSwGaaP/PsTTLwo7rrMbfxCD9iLtltR4N1TMJtg3tRcP/0h5+uQXjU7XqG2beSCicGG4yYL1KAKlzmbMKGRy7j3HNXqytBa7dMpfF5GkyP6qVIxQQjTrl7iiKnK+HKD0VKJP13nRjjFfisFYyu/mvfbOivgNnWQL0MFRrIFTz9WCkQjOaG0v86a1aBWMzw7uokGlRLuGqYLAQjdov/suO2ksG0lOifeLACWl+GWr+wCUbH9nkuC20nws/y7syTZhUwfim/e14Ni97emVv0UcoGu2/K9xQP4yD8y5z0sBEG/XQyucd6KhOSdnG0P/2Bgzw1+MPfiEFLn5bLhXizAPGeM1uJCwSc9562bSwG/VZbSKsPTIVSvMfxYf1iOCinhPceCEIpMkcOavxNBvW9Z5srThSDjsn5D13WwSieq3DmIjkVbse/Kpi0LgJ3qeS5F91BSMverjB3KxZoMTz1XzQyoY7Gdd+mKAStjRf58PAlwLL2HENMaTpYCWoyr58KQWagLvUlJgHOVPjEHzicBcKj2KPVk1jUNs75jP9IBsRnUZ2ejQbDIqtDRAhrEJLFkFqF6f7wpOXOyYC7VJAZxRUu0P3hT8NAjaZBH+Te+fuvw4gK3vms0wsYej7iYrcV/pMIulkee7AyGTCRXHf/ymUsGlVOTWyvTYQNUeWihEg8qLB2bQhbYNHSSYUtffEkCL83vLvBOhjITMRoNQksMjFZIvfnJQMhNJWj1RAPtSdq1c+8C0aR0qIj9hl9oOK6nhz7pApa5Nd2e34hIld7Zf8Nvz5w+OPKB/LVoJQnNdQrTEKZy/msZfQ8xcd3bzSijwpKB1lOWiaRkNbLcRs7lz7Ab0WLH9pbBeGvDLzFNUiozoeDo/1aH4xEYHim16vg19sPk+5kEpreUVvLU6fzxNep4yvx5fBq/liBTSkOpc6mj5JVqMBxgDkgpq4CHnWsukTm49ChsOSAVCcqBDImafVElkGGzsadG+9xqEB7UlOnswkYMhh5T43lQfZR30kCEwH9J9WavVetH940qSs9zq2CN0w7b11iCUjVxeaDwqcmsH4XLH4BkwPmCssH7dkI6DJUPX2Q2ASr6Qd9lV8WwNyMXEblZATS9mTkn8QRYDD086RVCz0/Dn31MOfHoSefhNkevQsHkYYncVqxWRBsHqT24T4O2V/kmvGPqAbPyybz2cEVcH7eR72tBIusmAU+Sf7LhM2+3C+feGvAQqNJRyscg8LaTPtlzmaB7ZXedCaBaojaP8QhFohB7j8tGixYcoAfm1q+klsN3rztfh9kMYjlgVvk+XMIbAr/lRxjfgOcxCxQnApDh/Ofrx59Xw8/9/Nd2QQvSFE2fZ7iE4b6lom/KXsRVA4KOTLkOMEqr7P6rtww9KzshWPn12YQD2g/MFNOg3a2PqupJgKiOVMjfgi3gCPHE5MVXxpQxgx6ctcJSEtUl91mTwtszrZv6u9vgC3TrTH3cQIi8bqd+TzbDDZbFrw/iW/gdIhA64VOAjJZiO0/KYLA4LOUhUExDQxviliHfgpDj9jDNiQYeuB2m9uPTO1qoC6QOtwMKYgBE6911b0H7thl+1o6V4FJRzOv0xUKKpZ75Jkc0gMTbO906hKrId5yY5emGgWl34wXminugXNhpLe43hq473k4fo8iBR2mlDx/d6kASgy0RPc7pYPZztQl72Y6Pzfaft9pzIOx+3vqlY5mwmjBVUzgWCC6yyrUe1o1D94/7CEemU2DxmXCa6eFQCQoWBArb1kAac+7VuXcM2E546ONSGMgcv4lOsZYlguiFvqVGykpEPTukeepzUC0V+43QXkyG1pRspWDTwqQPyzqmFyg545jwqlRM93wPDNjtZePPmddtLXtjCloUOYNOWO8G6bdI7w59uQBS9guox76utZhJQcBwx64XC6pwaqRDymr44Jh2hTk9SkEgpp7YNsnLWTlWR4UYKW/42UpSPbTQNXwOzp/ygx9H3QvhVBPMkMqdwTyvNXbmNbUCBPzfI9aDMog2UhT56VGBOKLW5l/nNoItnHbP+pulsP8pI3GD8kIVNS8v8JHqBfO25zIMvGnwnjiQ7e2/RSEfyO56mbVC8ONJ8Qr7KgQ3hg1eeQjGf3RNmLBafTCidknn/u2qOCiWmAz+oOMBiwPvgvx7wVSTQNBtZ0KQo93CrSLyYj5xvJVYQwNpjbvcoqEFwLeeePf7UQ8ehededH8Og1+bZnHXKgvgPe9nSWY53j0++Feo257GtxwMCtPf5sPh74VDMsF49H1i22vcP6VwDl5Jf7daibEHSZ1fnUPRqf1b07hxiugUXLPN2pGBpxlFB3POxWM+M+6ZEJtBaReuqLsR8mCsheH9BQ5glGr0IFj6zsdcLAv21ouqg40X30Mm+4mo3vDe7M6ejpgKeDvr1dxtdDJrKbFXk3nlqeel3B6neD5+l63VHMt8P1MdWdYIqMaNk73yt89cF6tSLx0hQrN/xSWuIQpaFyS4fQ2Ry8UdcjG3+jIh1cGu4steClo0YmliteqDTq+JJs+UakGg/NNlPtP6Vyac2XX0+g2kB7ns+44UwMplCUVMp6ElpWs7r073wY+DlzRgvtrIDF1rprhFgkdEkx4zHmiDFhsvsRQvydAYdYVsc4+DDoq+GO/yIsyMHDgjd2sSoKD97dYU9YwSOdJbd7wu1IouRI9o+CRBNfq4yRciRh0aSUXO6lZDXGGre5199LBFT87l+OPRQdO75PY+FoFSQnbB55GpIL26x28nhYWGVTwfN5dVw3BP5VGVnanQVGngc6ZHiwqftdXbTBYAUaXXFyPsaaDjNv72pLjweh7JJfMf66FMFa0eEHIgn5e3VpGDJ1Xt0o/y7V403UaUiW8crYcYt/gPivTApFuk2/6+ikixM+MYLl3V0JZxu7pGBYc8rya7JG6RoSQrEunKn5WAsuHa+r7PoQh/8Dc4qNfwoF47fWWCrUSzC9mV4MRDq2fPCepHlIAU8rbuFzjMqi5rliTRQ1E708e2JA93As5f3TZNLVp8PCfzjKOh4JYVnbtiT3pDO33l28cF6bCp9gP8Y0M4Ugn1JxiXfIYpp4N3LJ+S4VCoaaZG6fDUbIRCquNLYWNc+qttzRpkOB5u4E9js4n5L9fg+0aQfM/Fi/D+4WwOf3mtTJjBBJ6tWw95tEIdbiZj9oxRRDvr8fXxxGBHuYtn7OZq4XfWLsKxU9USHXDrGjIh6Ly3PDdRy/XgtnV0bfMFfTzFJ4j6jaHINoZDGUyvhawCV8l62yp4KEWfC9sVyjSeCaj8upaLXBIk19US9BAyXG862hHCFJZZVVZP94KsseyOlg/B8FJhgvrnfFE5F7edX8iuBUOnjI49ygcC+wnN/gsZ4jo2793Hv0PWyHTTDXESBoPa2jWidRJRNrEf7XdaTTQeihJTSkohcQxpeY95XjUfEYxt5REA5DxffDgRQmEvie0qGfj0S8vuVHk1QpPP0uoVLT6Q+mxQ3dOjRGRkZ2e81v1AZBQ1/eo4YmAvXe3dWTKw9FY/Pp9ssUAyGuaH+mxwIFHb9BwcUQ4Eqf5CRzSaoFmwRKPoF+FsDac1xq6n4hwNgxdrsUtcEVY+m1/ayGw5ldEpJsS0c3Yrfr+uRZYzWYyjFktAHu2FUH9t0SU4adm1KjXCunc1bX3D9aCA9tsnn09EY11337sutkCJfu+qx/dXwvia07zrwKIKClY9jjtZSsca0bT7PI1IJktUBo/REQMI5+uZXvX0n0waHTjdzI4ZCuYpayEoL2Bgs+tJOognKZbGrM7BVqzD4xrPwhFhdV8y2kFfXBUsqvYt6EYrKR3EUK6iKgtbnrtDiMVqEdfH5SbyQGZsYru7/44lORsR36ShGB/eLuBd2E2FP44M/b0Cg7xDZ1jKS1OAb54le6qu2XwpHu4N1IoGNnJ1m3xPEwCPZVR+2yWUqgs5F3HH8aiasfblW8jS4FCpTjwCaSAZsLHy84xGGRg9/Gtm0EvcJCsoyXc0uDnhaccETNkFGqi0Iih6+Jnr+vJF1J0H5AMaTel6+IsZ+rWF/5e2N1/4OzKu1SI85Z+UnWIgsIXBEMibREIfCEbSUulwZbkrFAKHw7Z3cmg2hxDMCahYWr6NA2GsuW6t9rCEBhJDT09gcD/4ddLg19S4JyO+lhUTxjKr3BveqSGICJ77XCxdgY8J+SYvfwThhz/CukN1ZeCskXgg/GRVGjiLJk4nI1BxvD0aWVjPzjbs+8vs8sDh0KvvDpsBHpaJxknRO6Hk+Z57gYoF37dUaflTUeg6gQN7zL1UhhndJPl6UsAloufFU+6Y9DmXK1xMWsrlN+LM7hKKIL9SkRcCp6IPv2TOZfqSF/P2y7+WF0Et2UZ43YNENHbEa1TAoqtEDTJqr8eXwzpqdR33flEJIJUIl3+64TOrR/5P9LqQHDOa+LnJhk9qfjzC5tNg/iOOW6vWi+ISLZy86zCI8OARS8BYxpdv2OENhM/OH9Y0+yBGx71WvC7PjlN9xH1kosF8a5QwjsevmCKR7Vqu8Q+SXWCzDTtlpJIDZwpLpGNHCejOHFP35L+DniXc/1MxO1q+BMpeFqnhoyazHOiddKagck79kvtZjWotWDSiXTuvSd+K3jnRzMoaEn8eD1UDWGa+A1SPwHpvf1wGbfUDKceNY5EJNSAj2BJkmwvAU1M2PAF9zTDO8XQnutLdH4e7DN/V0VA0x/ah/dd6oY9Ymd4Z8eKYfhyokuPCQX9/FaqOFNZCqJPbdjKjmdCe0oXe2sGBl0wSzg2YVYGB2+x0qqd0+FEx2uevXMYxDHs/rRfqAEOhZh78HzwBv7oQI3bHOFol/tltuePGmHnF3ZH5C0NgvRb/Lz+0n24x9RzqqoRTk5mWUdcoYHX0kJ63MUI5LZLOiD8eyOEW7F7MFXT4PF3wydHLCNQ9PVbF117WkDtFDsT59M86JQg1hPsici690rktG4raPpew7Jez4WoT6zcg3VEtLgbH8Gl0grJijV6Vnz5kOdi0va0iIh8pXJxUssNMB/LF5hH55Fny6Tq1PRwVJHR1PxJlwxqN6/NPz7kDPiZ8cTJV2GonAXfIjxKhpU6kaEXB3wgRuj0vOvNMLTe5sBwbo4AVF2hrd/B7sAtdnvY+wAOhcT9foZn6QPri0GSmIvl0KU6cf/xHjLKukiTiPzaAHtbcuLTrlTCzcmPwcox4WhgRPG1REEDiNjE5B5zqIL9GpbrL1zD0YGPlMKbxg3QbZmzP1m5GrLEjzB9VAhHK+IlvieP9MPW55LeF/9oIHK5TfrANgE5bVQlq7L1wwj/nSJeGxqd093Z1A8SUWgEF8MTpX4wCj1zISGaBipNtsIemQR0Cf7uxe5rg6lpsycP7uQDx7iNS6ISCS1JBHxkd2kDAyPzYm+bfMDXcOyYviEhoRNcOItLbfCeScel9WkByM7wbVWZkVB/BE9LVnM/9JlfcrK0LQCtPHMFTkwEEtu4Pf/4ehuUHun0EXqaCxM66ImUJQnNcz/w9i1oBZ/ZwIFKKIZEqevuB/8RUafi3kf5Iy0wwzlm9lS0AHxSj2V3/0dE6nZ6aXtutcKS/Zux9RcF0Fs+dRFHJSIVFY9vWap94Fhs0ntTrgRkVZb23swmofNFfw8IsPXB3Ml/usn7S6Azw/99FyMZ2f41npyZ6QXsyNuLbVeLgc/Nzm5VnoweaLF9vXalAXyO3GcR984GtR/dNuOi4UjuWActMawU9AftMfXmFbA49KCsjoJB3EPZP1R5y2DvPV9j5v2VILiN5zjbTV8njw8sirfC1Rcvf/O8LQQrl/fWdelEFMG/K6ZzvhX0Sig9v7JqoPxjRK/BaRK65cxu4t7dCiOPx3Wu0PXrWt2/on2YhBJtA8zOLLRCceFzm8us1ZB25a6QJD2nTziXpJbq1MDtPS9/MdBS4MDPIJ0PoiGoIFDnetS5GjDgDr/2vDkdHN5eMdjDE4LsWxR5Mo8nAXdDorrdVBGMhbvaO5/Dor5CPKeyTRL46ebVDq4Ug8CibIYBBxY1TSV6HJRIhrxrfj+aJCohIya3zrgmGG2mTxWWrZZBier50BvLCRApRHsZJRmEdrpc/qi/KYZW77PnvCLqQVz8UY7W30DE1ZZkdiavCMr6dc9ena6HLGmOeLORQHo+Jbf9oXQA9nXFZV1iHQzveq5PSyKjeFNnLvmoRIhcIj6IflUJsbvvxjs5YhF/RCHTvvVe4Ppm9iFQowKeflTPmBUio36/g/1DfH3wQOXMhI0svYOG8afvz5LQZqBS787BfjjwbKzYwTYduDfV2D8yEdH93QvlDrf6oKr3MIfejwoIE768yviOhP7rv7aTF41gOWfk8/0HucB+VzogSxWHOD8b8Lny06Bk04h3Wc8GhPKDO/IM8Ij/6ui3d78aIaArSr1RvAGYzxPlbtpEIFLj+9Pf+1LgoFHSoXMVuTBUM3XPjCsYMXeyDCx3J8I/FtRiOZoNBnL/BZkZYZEyewvjT/dekL7gd/1OFwUG7S67PaXnEa1WpxmBtX7QtCnqkqDr7kxE3hpRIQLximHVXzTQ+3bItgsXFQn2Ejt7y2zJ6PyN8Kw3wb1wVORUXGdvDPCLNde35pDRKn91V9N8HPSMtCnpXSeDxx5FhhiXENR1eeig7aNY6J0uqJYjRMEDPqHnhkMh6OkDLemq2GhgGR7/lrZMBvsUvylhg1AU+z5+Wl62AJwKSOj0Eg2uiXbavG4JRBV/hiQk2fJBx7a47u3ZBuDIc+Y5R6/vEL/OcgShFQQWbFkeGGUDzw5tnHmRiFqujT8+5dQKlrr+va8mM8Fn3zPfHfr8fUk0yjJoaoW7LYZTTamZcHncW8VhHwl9uxZ9hECk+7ajgNLokwwQGKgYzaQ/Z6lGMcswsg9ctcIly+IQcB2M+SHzl4hIT066VRb2AU3Z4LqrPAJq5n96Jh1EpFRiZ3G6uw/apbS52YMQHHSXP7gYRkSpGcvBxpvNsIUTkOc4kAZoh9PCepA+N7lzfh/p7YCXT2j2oVbxUMtIfSVOr4tNnlzGedVWkOjsOPn9PBG2vu3MfygmIrI1w0dDPyqM+jsf1T7XAFvRIqzfJ3Fo/sTDmYm/VDh5utvJT7gBXC97cM2q4NGo+BEnnaFa4KpR0vVeQKARXOGCFw9FbQ2qeb/4W+E9SxKbT0AJvI6wGjkVS0SDqRsORwZbIC1JeWr9UilMb+DLLJ8Rkdy5ceaTjJXgcrOlJRdbDud/GfPT5ILRJc+SPT9OV4Cs+GdV9pRyiPEgfi9FQWipAzMrwtwKT/6LUBTZLgWndwIrV0OIaM/WvFhOcBMUPTzxoWLxMfyX0LbO+T4C6QoTeI8dbgImm0j1qThbqLV4M8/zNgKpOGYzDl0phsGMi/8esqSDYZX0yPBqIPodYqD/NKIImNge6o0EZYC6JoP9+0+B6Mq4X4GycRHQPearbXsaBF1hyPXsDUQylvXG+r6l8C5GQE1AoQGckiZeiBIw6JZ9402YrYXPy8vxB6KL4FTJo1EvuVBk9Gdq08KkDioIfHNhM4UQfDbak98jFD0bstVK1u+Fx2JbLVza3pDxn4nArVkySgoUaDnUVQ+H6y2Fq+fD4Pf5zzaN7mGoTvKe/mulelitLupLNyeA6hgpRpw3DFnrp34+FJkAiW+OuDLy1YNW08pq2DQW6cWlCr8Sa4F/aN91IwwV2Fyf9h/7Q0Bmp2NW1Z+3wE8lvz/t2wjYTpQ2zEvQ+1OKwiPOXAfL381S+FkLIU3LdZejZig67Edw4TuQB7CU1sGCLYCk4rQ7f1cCUcZ3vXQJlAMSGZyGBmKFwK6jeGKTB4NaOm+/nvmeDcvRyVSduwWgWpwrs6GAQfFFUl+pX2hwtTc7iScoGzQGDQXXv+LRoOP1F/fXaMBp/qjiuHEucF/H9LUt4xGFvXFTCU+D4ekoJtDJhRM3PkheSccj7Cr1Tc3vGhAzo80ttiF4dfyNuCw5BMWFut50HKuBJiNsEftlKlh9vq7mEhCC5ouYh+631sCz6+6f2HKrYX1e/NXyqxAUmHop6sdEDSwMt0g/bqoCAmbJlhsTgkYbTpxRjy4G/r+5acwumSBwlP3OEjMG5cFpVh5qEZzny8y1I2eBmvLh6t+fA1HNytL62f2NEHa6SyO5jwS195yTk2rp3Jie6CP5sQ9I/duzVDofhpWS5BY8iGg9SGH/Vnc1GPCONIVPVYPlwORa2RAWSbqzvLzyuwqqZFg+SMpVw74Qu7glYywycPI9//NMG8SvI0qHehqskTttJK6TkNmdS83efm1w7q7REuFxOlC5uP/W+pLQ1i/RXNOVHhCeO1TZllYJZ0TmFd1FKOhB19atyV99ED5pN2LATYOFKRsPIRX6eaTX9vYyNYDzpDG5IxdBiYirxd1NPGra6HAtHMWDVV/MOstCHWy/Ivkee4lDBWsULQX5TmB4tsNjPVcCUvP/dT+bIiN1UqeVv2wnZNEwD5uai0FufyeT7SQZjZs/5e2O7QRCdoXmHccSmGyaPB7HSkHeexad+rdbAG/8kuPt8RQY/a69mw1DRN2SSm8/NFRDlMil27MJZNAfd7/f2I9FGYZeFxQLa6DzAsG+ooYE+57JBu+xC0GEAeNREYNG+IxVCLeVQ/D9dBl35lI4IvRVeDvq1gCgpu43FyPAhy/4trZYCGq4qX7t3Nk2iNTwunMvAsGJwHv79PRJ6IrlxtSj8lbolxkj2BYgUIh9EfKW+f/fMT36bfSrFUqMHX9kClDB7TPjyb/iJFRNM0s+UdMKH1/ERFeVp4F3/1liAAudM2daRxWPRcOlxbzn44Z+ELaxQxD5j66jh2EyjgZJ0JSJqsN0siDPuCXyNj8W9S7/xnmp9YFf6Olnd2cqgWO1ZORwBgmxKYkbZtA58Lqun+oRgyqgo7/bIgMZPXJNN3doxIBu/NW7XvhysMhhXwjjxqPXUxdO91+iQm6UjxqPXjb47lu4Pl+IQ9YvmU4P1tNA7G7bk+qYKKBpBc2ZtOHRPx2hb+09jVBgF5qePhACC+NT40M3ItDsl8siX+wbYeoIu+WFDhzkx5TSZJgiUOnO37XTmrkgP8dJOsKSDyy4b4oLLBh0/cAAnzzQQEvG278piwrTFYeOn3Gk6zQTM3gilZ43B7/+pDhRof3kadXuUjzKqFnm3Fy0ggmGL/Vv+ZOgzXbhkaAYPUcUny8U++AIDHdcJe9xpUCHXvXTp/T8deiSjdppYhv0t42yC9gGgdHoxZ3OEBIKVnpy8NTudpA0uW1qwxkMDnGnVv/2kBDlt2Ff+4lIAMZX2qv8AfBSdoap/k8o4ooE5deJDRB90KXO7EIF/Nc18DTXKRxd6zxiukunDbyK0+XeWuBg0em8vtQDElKuxahh1hqgrzbpvPzdcsC6S/4Izw5HBR+lEhkVigD3kbt8E18EnPnYZc2uQBRxOMXmxYFGuOhwdiVIuwKKXKk6uLpwpMWS7/9rpAvSE3V71GpKgLuAS6BEj4LEv0SZ+th1A+O4CqMZXUeMOKev98woyLg8a2SCqRvOGz/eYGkrhcw/N/Zk3aL8/3/GpgCnBmixFvDVy8+FyQZ93C3tcDTaY838k78Bwi719JY+zoed14f99+0LR7fZN/YObxeDk/Pf4zYyhVB/I2RdnB+D/E3Vd+oTWkFLCKm+l88Ho9KIV1NrRHSoiFzY3kXv5/M8Uvb6uVC4WtTw6RAJMUQct4x3aYGkFWaebJFSoJw16A6QIiKhsgDvifoWsJcRCAq6WQK4ll2T+y2JyKQswqbhVAdkO7u0lLxKANsGu+FZezJK7PxguGjRAdG9Aad6nJMAvnQ+anlHRsn2ARKK6+2AZqx+8D5OAht1KJsxJKPNaLMevocNYMS5QcQiBHvObWrIQzhaTWHt4RFtAFBU+ut1g67HqhHnPK5wVC/P2JhFboD8fX5fBd2o8Dc1QcHdJhwpc1VGX+mi/a+DM4+G8n//cKFSCEURWSpLIiItCrcolL0QZV+zRamPZCfMWGcsM/Z9y77vvGfs+06IhEiISGUpv/n+/n3OnPM8z7zv+/W6rnPmDESrtpn07CNgCLhYIzCEQxJNpWIL+U3wUV9BI+5WNAhIMtZ2/odHsfe+iX1dbIL/cnZY/8zh4HwwR6hmKh5Fvb9wW9ulCcSezlAftAoH8pRrh48GHjmZ85rX32mGGZvw9Ui5SDiQUnv3wzwe7dB/NaeKaIPodPZjf3+Vw8NHqTiiXBRSYxAtMrrTCJecWQ5ePFkCb+4Q0+S5whCK+VXF/aMBJHtmOHVOF0PcGemG1oVQtO6h94+zvgmeVFqcsvpMAj2PtpANHzzy+147AlwD8JCZkb6gNxeOuNIRz3yORjeinvBsHB+AUvbQ8eQLBTCsLO7DshONSEdwzHowAMefHzIU7iwE9aJ9qYjMaFRzi/f4Sac6YDOQ6JzNqIPeZjX937IhaFggWmrMlggk33Wyxu1yuFSkJlktFIa6qQw99tr74KHliEeodhmYTRx3+XWFiGiUijWY5vvg8FQ39MeUQs7jHMMFISLq8+y7o8zRD1kmgZqvFMqg+TCdgBMzER39cYRovdsDLE1S9TiVKtB9tGq9o0lEVO3/QsNNKXsxKLRl2FkJUyGOPJKUvdBtfOf+Tq8XhLgMrs5sVcHbnEL2DV0i4j1rhJnQ7IC0FafwFjEyHMXxjbaaR6Orzlepwn+0w9t8Lb6QIDJg7d9qxApGI1P+pfvf/7TDy1+OpJ/UZLg29JIkLxKN+rRu1M4/aYH7EcZPT54qg1E9+lR8cQSKD6o68JuuBSrYSuMmYkvh6L9ov+T/IhD9jSL58vhamF48e2aY9R3c0QmQc6kJRsaKmackZOug/nmqSGWEJ+ixvNZU4AlB87amb6j566B/v6nT9CAGmnYZA3WYQtDT2U+mRP5+iIixr5eSKIUerZh9K0o/thyRKtsuyIQu2W/tlgfKoLKl9PC0ExYd0nIwffAmGzAC5/21TSn++/e7k913DAoM8p8aL8+G0Vj+1SyJMhj+pHRxbRqDrMUU6BpuZIGgeYP2dGsJ5Ddb5ZYrYtEPeYVY4qN+0PNe6x66XgyPpvxbFih9feyfw1q+Uj+EuJLCJ64Uwcn1YHHD7wSkk3D6nPhWDDzoMqrpZ0IgtbBgeowUisasiogdhkNQ4Keo7kzh35W9a9wV4Xhk/vm2iqDGECwtC7Ekf60D8b1Qj910PJpyWM4h1XaCyJdNv2TDXGBKFgcbSQKFM9c0Cr4NAKeME+fLsXhoG7slKvowCgmldx6c02qCxAXvmNBnWOjJ13rBIIlHHKRsUrbuAPgccneeaM0FuuS1cWM3Sl6t0Wddk2qAr4Yq9UemGqA0PEfjum0ouhMwKnfqYz3QTg3dkt+ph1XWcRdb4VC09IMq8up6G8i4tXGUhCTDzpzNOYJXFPrH7m3nz9EOojQq38LEUoGRr57Tj+I17QPzvGT7ekivjEow/4qFsQZ9QshcCIJ0BxUZv3roe7xwLLQwHHpcWFh0NkLQ7IT+O2mxevj2fPv6CfEICsdq/lSuDUHpy4vPjqbWg/hxKSn1pGhgWUp6unPof/seKvrscTv4lP62NBoigY0+2wdSSxQKmPO5+lm1HTyFmVmOv6B4m2rBlZEGSg7HKI49dW+H73JvXGLPkuC2J4nu+1QU6hgIstiVaYdEzCrVqTIE3+cuz1GVR6Gzo01Dtct94JxjzXezKQ/YZDKn2wWJKHfajDH6bD/o3792wWQmH2RHPz36wEhEkcZn97wP9cIrqqdj0/9VwsV8c7svlD7qH2xQUVbvBeGrueSjHRXAqaZ+PIqyj1GgXXVrtghm7B5uT8eR4efqOd6/DYGot/6Tr0p1EQS0frBPP0iGIUmi4M/GQJQ4qHttMbUYOuUdzb31yfCXof/mI3IgOlL+un5tuBmaPgo8vONeBjrX5I7HqEegRQwrrDv0w2pfppOWTCmwOVzy/dRJQPRhmqIpmpR5JnkYFrCXAY9e+6vQBQIS8iEetGOqh+VrJ6clJqrByvIiNT4zBGk/cQ8aNB0EmsxpskpKLVxnqvUz0YxETwgHmx4MJcOojKiSQUMleK64fUrsCEY2rtf4FtSSoWMocfBkaRVISYm0hh8NQYJZvLXpxFo4JcXzYYhcBD4D1Bd+VgajF8k2jX1aeGjsWOg2m8qEwTMLLkmW4Ygn0ba6VbcDmMkbl6r1KLlKNJO1s45Gajeaov0oOfY334dlUKMCjvTnf8JRcsyPzb2seKUVZoyavqqvVsCS/I3Z+d5INNrhOb/0uRXuVIU1stJUwZY/MdGwLRKlky585WdtA/7TqcweX8shl471+bHlSMR3vGKtyKINeguUVyS+VIDUcKt8wrkoJLp2ItTt+XsIbXW30ZGtgUHJHzNH3mJQtkqiUu1kBszmWRwfraVwgk1cwEoFFmX9vZFjcYPS+8GCuTIFlaCVKiPsSB2Fmg9tSj0+j+CyRCY+8VwR7MXknVYYDEMes1o/Ll9BMP/unNd35gIQmlZ5Ff0lDJV4M3cnQQsseps9uUxbDrutDQdHEiKQVro8tP9qhDLyBLeYQDGUDqaz5MVSPPfFbp6fdiNUHR33bRYqgm4h0TSzS2FogHTF4uzr1/Al0LpOTKAUyEUldt0zODRaRU/vuGEOr1XGHIvWS2DgPB/pKT8eZV2XF4090QGCxTUkOZ5skGSnknkuHY0sHacYPdwzgY/x25ZjXAUwzTUkh3tjkQvnlSFXjQzIQZ4uvmqVcES7sFNvEYue7zVthxQ2Ap2rlHJyUwGoz6VrGjwLQ+Vzu3v8dZaQ9H7JekkdARPhP7E3vHgUkMVwiX4kAxr1FdYjS8qhWbuMT7waixqRjKc3eyYQNwyfsDysglHdM6kiqViUc5fxY4j+EJTwGQwWoxgocLLW9YjGI2ejhUBLxxbQmhOIrkqphhP/ZjMsUAS63+jg3MfeApcf44xaGaqBTfNCToF3BEo8xt71qaYfsNKESCVKz6Yl842vvCSg2PdqDZqUPfI/ILutw14FVd4nBty7CIg6qfKe02wFzKam/CjMjgIbGjbum3xYVMu25HhypB/KrvUG3bevhBHWRttuDQJi2qgt0un3g0rpA0/uDNSCqX7zXXNjHCqkWk0Lf+wJx5Qb+Wq3a+FspQhNN8Xf+6A6JUAjFowjHLzUt+LglH70bHJ2KJo1eS1j+CAeDtQ+oI/4Gw/MM7p6b86FosiN4GSbM32gGX9gnfdAFcimPVFZ1iCibsOuQpmGXjAl2fykF6gCBbmEonRK/og+rA0+8LkX3OzPnzQ5UwkVJv9dntAmIibOk7Hn199CTzvHBPZuFUhLP8m70oBDepP3JP9K+cHH/PvBj29WgR/mOnurNQ6txj70czDyATyPqm4p5fuU/b0qve+DQ3VvrZHI92SoUFfQ4ausAMnnau8G6oKRmfIDFsfbphAasb1ReNgH6OuOZBaI4JFDMXPDSFoinEgu5ij5XQHLlmMpwQEhKH5oz+f3LKW/vKgntY8iGCv8GlloFoX0Dtiz3W8agIXl9/xx/Y3AW37oSVNmFCoRmeQOMBuCWuH+A1FWZDDAbeppYvFIS8HsOvepQRBvtQ1L+kICoSYPx9itSNTabrfJWdkC5+Qi//gRymCB2NH0dDMCWdRxuMpH9kM5l5ZtuG8J9G6d8/ySSkDbpw5fON3SDyKnfV7ROpSA7Wd+E6wlAUGfSzA9FwGS5RcZjvBjYYR4n6vLLwxlxJiYENIHoZC9i3gJSkDPt/79p84IJMxusvjAZRC4aJiev75UAn8y2zNCL0Sig5JzFa832+AUXSGr5ckauN7PLNHqE4Wqsh6+dhTugXObX4l4JTKI17zIu0vhyeQzXborRj2greNQEzhAgsoR5aOfbhHRxbySCqHyHvC6JfCGS5wMjyc5D/QrE5FfQcZfe4VwAGbWx/xjpcDFW738+304ihW6m/lJHQfsrD6SGl0lwKT/XeNNYDhym1B2ULqJgXKLbXm+L6Xgxpz1YpYLhx5uXC05TMm3pMFIt3mjakjjOEy8TMk3W//8ZD7VNlDZwmvHJVZB6Rf51QbmKGSq3tl44z0OmKmN67J68+HgCYeCcrdwVPWR1PLZEQdi4gFd4sx5oMd2MOayXzgatFw3yxuJgHSpd0mmxnlgxH3noLFEONJaWnre0VoHg6JyQ/N/Q+FeQQd26XUI+nd2im/mRy2wvh4VEt+rgdZDSwKYtWCEE5ZzEJJtgzICkegoXwMPNt0FOGkpfoHGqr1RO/zl/mlqGUSCSx+s7uscjUZJmS9FY3VrIV2Twye1yQ227qz+WggLRtUP+V8+WaqBgh9e337zvgPv8lqunyrB6JpIjpb5djMw/mVT+XeiBl63jlby2EQgCfNT3c/dOkDEySLqURoZfgRUxY95RKOnn2zPrmV3wOk/ca/ctchwqoz4ozgmGh27yP6fCb4D2qsr3yRskGDyrUX8ueBolH5dW0s5hpI/NvMzbxOKoXL9BidnAgE1Nd/bb3qQCVK8Y8+OeSF4bgJpqTgs+sPX4papFAq6Prd4554UgIboJ4JPXzgS8rs+5NkcCPu6zMPavvlwPOCO7jAfDl0d1o349x8WLrFa1FqZFUJCKaaugQ6HZmh+MVfeywGh/gN0H90ocz5eM5Bei0FxOxkFU0xZwFhyGEeTVAyqGsYh+Q+xqJDOoMboZAbMH7VcfmpVDDInnvZr/cWijdhog62WTHiR4ily0qYSTCU9WfJtsOi/Z7kzOT+ygFkvV/RsayXk/buMLT2BRVS3dN15XuLB6Ossj1pnGXybsZ4xNA1H8iy3r1+i7gCrJ6PjIRQe9n/ZdapGIho98pHgfCzQARGLBu1HmnJgxeeCsc39aPRxrY3/zqsOWBeSueV1LxeSzquefuMajfZSP7+8HNgBrHW4ZwqQAy6EvMN/3kUjvlrOU7MX0qDakxiHO90E+qVuO8sNQehTdqSrumc9sHySCT4nkQ9kRzz96bUQVKYyT/2zehBuaAwVnZcvhZLYPkn5lAhE5qv+JRndDnmWgQ7EtXr4786HhhPfo9DWsRhp3dR2MC+tc5c4Ww8J4nji8lYU8pJkmP3j1Ay3Gf5mSU83gHS5x3mzIxGIy9RaaTSxGZJyXRXyShvB1+5XhIBgBKK7ibg+KzbDufD8T5PYRiB0rFDHfcWjrZiFgr2rZXDo0tsbbp2l8GbotmWCIAY5arywV6Ovh0eJ398r3E2Fwc5Rgy9pIejbRfk4wf46uFkRoi04ngaYRmXXn24hiG+Gkc3+7iDInN+ulpsnwbxnVXdLWCRa48DQqXaS4D+n4Ypy+nzotef76n4Kh8Q5qOiszpGBP2A0YJcjD2wWs01e6uAQ6VM615FEMujmbRT6mVF64C31VHwRDv1SeFF10YlMmQOxVTWnBIh4kGP3IQyHjHTyPnO1k+F+/LxXOEsiOJ8w2zPvw6EXc4PeoS5lMJ+ua7q/XwJ0Nz7Pe9zCIBk1TVqL9yTg2WO56XmH4jVBU15W++Ho8XI+YwexCzKsIotOdCXDRICJcB4ltye0+ruzMF1Qy+RgHKKQADZXaspQHAE58ydP5GcGAcvHnydxhsXgLvdtR2s7HAWGnvm3ZfoOYhZ2Sh01iuGXQGgY22McUngV3VKp3wWhDNBKGCRC9OHbN6rfEVDe0LRr+ZMgWNrknMAmFcHWDT7fr3/DEVXMrfRg+n7QvnE48axoEgSatxff5KB4ujYnefFSP6xfM8UEQTx01SRLvTlERLF5iV/kE0rg0e8fX/rsCmBG6ss59vFA9DjA29n1USUIBx67qOiC4N4h9uaj+lhk/Ypcn52dD5EdZHSdtgGyeh6ZEncDEVNBkACuuBJa0m8kM9iRQPxDsc1PfyzaT/DRS2qogB32/hJHDxKUBFSrCbFi0XUuaq6h65WQraXP/HaOBAFqviKBKljkE2frdfliJJQweZjM38JC3OXTElKC4eiC2PrVAa5+WLOxl/GYSIFPH2n8do8T0ZuRL3mNVX0Ubw+9kLCbDAN4oX9fJInoYLob59TzfvjDeivxsHIjnMyIvLPRQUBZr3+ILST1g9F2HL/lTANU/mje140ioE8ChBsEcjZEm44O/eJIgmdyBYK1kxj0b0Nd+tMFH0gJ9PzSfL8UfE2WmEX8caj4+syLhZd9cPTn8maSeiW4Kpm5nlcgIsG9uE7O732Qkets1U15v4S0JUUuisdFnbxdOAZZEBhO4rlulAyvbJ0UVO9i0aPTdDkfKLw6ZPme85JxLowutsyHU3i1e8ftwqW3jfC20wTntJgH6ezKWLm7YegrIw+T4dIgvOU7ce3DZCmUte/88lSOQFd32Xj+m7SGEvc89QO9VZCv9cs+jgOPun3XlW4mNgJrFItXRHQOzNP6mVkZhCEenqCymuYy4OiWMNp9UQ6ZJh8lErQwaLIscdNQewgGSr2ti95Gw7X+KNv3CXj0e/9x4O7VIfB7/W5I/TcRTj4619TSjUfLfzr9sLxD4Cnx5RjLhWiYdvfn+vYNj4zza8pSKmpA+7jGxBJ9Etxkqn8XfjkYtb55ohyvWAPzbm0C+39jgW/v9zua1SDE3nHOVfF7C8xOhs5ZH0iD7ZNjF3+ciUQ94wzex9tb4Injdo3zzRQQmztjgNmPQAtVz84nxrWARupB1wuu6XAduDkiPkUghfKUBH/iACjxPLZBNKXg+V9SSt+/KJSp5LRjKNgLlWlvQm6/JUHL4buDoRT+fPDSw0a6rwcM8GN3dCl5c0Js74OEKhF1bVBnyifHw67qUPgcSxOgtWPSd+lD0b1sZT3N9iYA1ooTe8sxIK3ojbsYhEdXgr6OLrR3QBiPi1rtmC9Yl3A61+ZFI/vuCJcqXhJgtR+EdIXVQyQ2o/t4QjhK4lxX/KFIAikjeH/3ZQNw81u8fV0VjlIuXeWX0nkGAYGKyslVCJivcRTePUPxlOdvfk+2OQOzrGr6vWcIrt9iMmFepuRY+9nOT6lvYOE6d0tZEwKj20G/N7pxiD9rXNHQmQTcZxJkNwfr4HyLm4bNh3B0gI73eoe9P7jVVK08eVwEJt32IiNKONTONJxZoNgE33tz3L3uI+CajnQYFcajEueR/wLb0iGuwED7LkMTlOamjkiwU3rqgcPF8zsZ4C0mrvDUgwxCf2lXsvKwqLIyr14Qkwlhl4p2bh5rgsFodbNRdyxqXuTcv88cApnImP1hWAX4+inbb82Go8LbLL89T4fD9a/mOwctKiHnaj13RRGFD4eoPy8q4iDu9839Ic8KSLeRveODoXh6psbHYNlwWByWxqaWloPLS9RGyA1HacOfi7y5m4BTqfpAWwoZrsRfdDNjxKMjLQpXvCrIEIRemecVk0HUyVvXm0zpkbNERRm/JoiNnLJdnGsE3ZRT9TJ6eCTuo6Dusd4EtAVfvnK3uUHo4g/f+Gw8arPr7/XUa4Z7Y5aOLztdQexfSLbHFh7F9rs4ND6uhOVnt1+3DRXB7AN9TaanWORda1voxdANnpMyGmoqCCZEtHP7hgnI56hvFSmoCYY4nDRMi+IhyevvHZIhHh0+rvpJdicNxGNFELsrGV6FfODetwpCrI1b2c4NA/AvVeJBqIUd0G9uLc4URaGRFzWO3BeHgFg3E1jHUgctfhe2/k3j0XRY4O32tP9A003n4sjXDDgX/HnWcxyHnppLaAlPvQQzsZuHJryywAE/YhazjkNf3szKZfBaQk/H3b0Vx2xYVvNk5D2PRy/8syevfCuDcyLVVTd0yaAwLFabbYhBW3l8mTSBmSAzzH9QSLoA5gOm/CU8sEjPtq7IcyMLRE5+IjKeyIcNpd1kFwpfGU/qe96vyIL7NOnLa4mFUIhtOHfvPBaxvREWGT9NhiKWvwwZzO/hk36tQKsaxU93YPv6azLoX1ZfWfn6Hjg5Vk5iInBIKsHnh0LZIJjaFgp3CSNI+pXRfj0vAlXZFD0zXiyHEmPt1cmGGDgblzaLqcGga/FTMzV61XDhkzOVElUj8L1iv2ZjEYRKJkXiuycRyMlt1XsQS8DZxkiA3zYczYc+q+rRJUF5UAPvsksJBP15PjHZFI50f05NdN8kwVcDz/LNqFKwHleW0CgIR2yC97XfNFbDV7oWoX2TBhjln9MKTwxCJ5TPekh97ASfzeVusmgJvO4Y4Xh7j4AU/Aft/hzrglOSLFx0FF59dWb1s4shAWELUnHUDl2gurSp7XCtBOyaGG0/hxLQ7sc/N3yvtEKZH0echnMZFD/MO7N+PxINii0vPR9uAUOuvkbnV6Vw9SkDlx1tJMIlJn51rSWDAG94a3RrDpC8q3P5WnFojEHxTPnJJijUNVpHtTnwbMGSruEwHolZZv+5JNsMVC+HCj+yVYP+9MDorVk8svmmkPwkpRm0VpvvYBSqgVwdiv13MQK5/sf8QlKoGYa/xfEaHamBRcWu2LlBPFrZMEg6V0KCqkn1H6y7JRB/lvzkwCEcyizdPXiUhgw/lX5Z8FGec0/L2N0IcMgZ4/vHYrgBuvdquR3MC6C6/nOkzFAoEmY4MmBC8YLMVm1i5ngsJN66e739f16QKtUdQOoDpwNx/WFBGZDc8lK8W4KIGk6sFyw/xQLZ+VfBO+8wuLFrmGjCgEMT05N9RznKgerohuJiVyNsyOz67DtgkEuKUI/WVcq85Uzc3YsqgVVl45ceZjgUY9RuzajkD/wGGn/vPsNDW67v9wMPcCha4U8eW3APzLItJ9NTfOrN4w75VHkiennw5AN6ml6gSnt0ZCKKDB9ek9ybtSieOxeVylY+CIJyzBmLYSRw8AswSXxP4XPpFr/GkUE40K4DY1IkyJ2wZN63o/S112Ixay8JUji2lCcPl8Dgt9qQW+w4FJ/FKD3/qBQ+H+56PyvuDqmRkfP8vwJR4hVBcdb5EuBarXYcHHkHGRI9bRxzgYhOfdEn+UwJfFreUDkh6QWHyddZyzsD0W2xmOKO3grI45wbdZEoB9NmVWETTizSusmowaZUBfec48x2OiuAr9jgSMMgFpEXIkM7bKtAtNkSE7RcDoQfhgOyX7Bo3R3TfdgYC49u7DR8x5Mg7l1H9BXK91yAK6u/010J99eu4jJrG2D2L4cgVyQWIaP/ZBmVKuFFf/JD0Yp6+P6810DoERY9EbY8nH2lCpKMvmqeH6uHmSb9ask2LOJ1j2L/SNsPC/C2x0qkCdiztYZDzhLR9D/dEf3CPlDhtmcMpMyvUwzmw4kbRLTy0usMPU0/vD8SVfy9lAzP7G8t+fEQ0T8GV3KPSD9sS7KVpmYGAzL4tXyMhoi+JLaGZv7KhcaVBIH9dksgdZRcV5TEIAfWX7d3MvJBtidN4qSDHaWP/k7PUTi2mHVB3OC/d9BaMeUN0iSodSeWr1H8YpZOJXmfkj9GYgExgpph0PjuRHUv5XxZuDRf/GQagIX9A6z/ehqA3+Om0/ivaPTAXdXATmkA7Ma/bAr8bYADra/8+InRqPvwRK7sRj/c23ofcWa6HlJTZxdS+AloXqKCzYJjALZC6HuDuuphPaMPP/wlGg2ZHorWrUoDU4Wsy399k0Fn8weTuk8Q8jvNqJ+2lwLzeX91PfmSgZ7Rjq9INhi5Cku6TcaUQTpFPG5nvoX6mqhlw7sYlPDSDasQUQr1jSu6dwzsQLD0Tb8iFQY5p9i/Vfo4COa0fXIkXYoHt3KePWYSgWwxfFZ986VgqtZoQ6z0AykT1Se6LJT8/3plCf+7DMqZ1QazMWXwVvaRLZMZBklNjLVV9pdDWvAN46M85bBnYH0vuRiDQsFiZH+3BRyFdcbvh1VBe7nRPfKFSPTCSbau9E0reL2+P+asUQXVJw6dv+ARiRhPhm4UK7WC/pmra+aq1ZCWWxFh+yQSfVytnP12vhxOnhktpoouBVrzqPN0LzDIskY1Na67FTA3eRwXT1cDSd5G2qUqEhlJJ7GpBrXCc4IAjlWgBkpKMhVx2EhkQHkE8kI/0IsV6R/xTQWdHXOexOsExGkZ0F1NMwApSbZbgo+SYa6Y8Oj+MUpu11EpK1LOZdlaenODJxUqZNMqDi1QzpfgXUEJHnjdxOf4arMR6notvpNDcajjseme9kNX+JEXlyDJ0wj3/SX/hLXjEJmx3mWqqgb2P2z0s8RHQ3Pjp9gvosFIWvLx/Xtb3SCq8NqOTJUK1uzF1innicieFrcQVN8J1l51ogt7UdDD1SVqcI0yJ//mvYx3OsGd6HmnMpAI/157/KLVIaB7x2rcCir7QMFL2WyAIw1yKkwk+a8RUeoH20tX5ftgzAr7MPJGKhx+tTc184CITn3c9Jt/UQ3WJpvz2lv58O5lb6/dyyDkM8UkN07J/Vdjn1rKxnKhem6NfkIvCDmus/u70NRAk1J4DXVzLhT+uS3J0BqE5jW/vrwfUAXBineL7oznwfuk0o/pm1j0ta9OI1S6AwwmijtzezEUvpbmvfU4GrlS0cYkLrQDTIjSVy68g+8VAZE5vNEosUV27f29DrDbK+k4beMLhplcGp8MotFclASH2WQPsE+NPL9O3QS+y1MmaWpE5Go1uMmu1wPLHdpsShxN4DOqLoeXIqJ4wbkXcmm1MJvlaWwxRQKaA1/z/BuC0U2pdI41szqYIgbKMHKSwcTwynXi9RB0RqJtbTO1luIDR6V+a5KhQIIrVYfyeZXJVSWsMMXXbO2TyoxyQSF15Yj+AywiBjynUvfKBhMxXibbuvewfCP9edwKBnWGK5x7P1QLEpH9Pxy1SWDFaC+S9jEYsaoIY914EDxx/zUcOoNgsVAkTLGX4nHaap2R3gj4Pruf1D9KggmqA323LoWjfxn5hOD4Znis+/dJYlApGNstcrrxR6C5cJ+vM5TzpY6X53PysYC/P6mMz1DON1nov5X0G++hvzb+Z5N9HkhPzJtK+GPQz8bb1oPHiqE/zbazz9oXlKVStxMbApEodYsQ1ekiWO+u2nCV8IFvlt+lezsCEb3ZqohtaCs09NUri25FwOyzd5eagyNR3e9A65cvyWD3UCndxK8UGi/BnC8Oh0R8LZT2S2pAS3DHyVKQBPfqbVsthIORNTH2e5MwGd6bbY141RSDmo7O/F8DHLrvZ/955zMJUH3g0YLjxbB0lVo+SwCHRt9ZG/r8aQQq3aSEflQC6gdH5qfjwpB/v22l8AkEsUvPqXLpSmDo2o11nZowZLv6+MTtuWY4OeQl5KldDiHD+pxU+hFo5S4Dz6HLLZD4Qfu35sEKCF1nbHgcHoGaJo/GnVd4BTfD36IRKgQybF5GXF9xSNamhMbmVyss/vRyPMybC6EmVva5I5Eo8Kk93ZfwVrjzc/rcf5dz4UvKxTO+oZGoVJRJ/ZpFJmhMrFE9rcyDYw5vV40wWNQnfr7q7N4gOHL8oIWX8WBoMLlXKxiBNoueSVZzDcFwQaoPT2MSBP+cx1us4dHpJ9QPaSWGQAtPNSUhFA8/jouTavvwyKwszuJQcQ/kb941/hHiB1R6LsK3lYnI1yeg+aptHhzyqj++OkuChQ3r7M7zGPRsWj/bjJwLzFfHIxNvkiGZjqYoVhqDMi+LSk549sP15h9Duk9tQH98stqmmoD+M+cv/f6gH6Q/Bnip+5hDISPfzfBlAvJ6q36KOa4aAq4fk0jhqAGTQy3uvzBByGZe+XQ55XzdPtFUxZ6pgagattCblPPdveJaOMBZA73cax/mR2rgxcdgRe7hIDRnVEIn+roJ3tcshcgm1YPDkIXWmhoe0doO+Y/VNUHD7Dazr1cDaP5rSWz0waOZ3B0DxnPZwEl9kD4JFcGMuii/9yEsEpLyJyqnpMM2R7UT24NU2LrmuOArEITWdkMSfp2nzNsXnhhj+2rgi54Ml/8QhJ7zBD78u1QDhgx9+d63KBxb0BCgrRqM8nwebPbHNMGVa8tzXp8pOb/6MY/pGR75K8q9EXzYBKH//Zzc5koBBidlE5DEI/uvJ8tCIrsgQnmy/zw3CV4Y3aRtTCagEAWvz5FhmbDHnaGEzyqCgLMq051vsajiY/xx1650wHTxSGhGFYFocuXbutNB6O5SRVrJ4x4I82Hveb0ZB0qTCfoelFwipH8wvpDeA8536V8P/SNCevT0FyNFImIRPzBycawHaNvQnzf4OFgM4rnDT8m3Gx+rty4uVYD99EeON7IlIDVFXJMXxKIpo+TzceUdEMEcZlxejGCVPuo/hZRodNtR5VjG117IiJhxe/o0BZIzK2t1tIlosoubi+b8IJDi7ju58lbDXHXGC/J4JPr0M5AnlcJRF248D9kQKYcKYSPCRQpHdTa7HlCaaoFjsCInUkYG6m+MLU3HI9GjdfU/DC4tEHOM+Z59BhkCGIwnV1oiEOvi+H6lOAnO6/c26rq6Qq6AyK3bOeFIp/Ic7QaBBK0GklK6Wm7ge3HzwsmNcPT6z4gCK8WPsmr/PP9zh0zZ9xc1VhQ/Kg3kTdna7ISPtFG0e40k4LE9G9CoRUDHz/Me8id2Urx415/zDwmeYf0+BZ0joCeYjBavBxmQcJVF/j9BBHqDElXcS1hU3+B627c6EzS1dt1NDiNgzqzdCXPAIjWJH0gnpg28OG7RMtSUwJWKtZHFu1GIzzJ595JcG2j5hk+GDJbADpeshcfRKGRxT+w7xqQNso9Kq5JTS4FuPa6ziTsKFbZoPqlUGwIN/pyEW3WVcK749NKhLDxaQjLm0eJDoJq6ruFeXgEBJCN41o9HMqd8B8uzGmEq8o6PkEAZzDqUb26YhaGwUi5crEY8CBH7DsovUM7lob3gGd5Q9MaTM2bhSgJY3UuV9SHVQOb9M7/NF0LQvWZdzDWuOEhmpZFXXqsBOnNt2nmnULR/ucdjfisRvIQKj9w0qoGW9vHjvS9CkHWIWeeKaQYw3fXZe+3VCKprrGs9M1jEHqa1IP+iEuSNGRTkOD0huCw4UNoai3LsOPN1OIdAQE9o86B9JThJCXtf28Qjn3rup+qU3N86cfTc6clckLAxw8nvB6LWQ3Ns9dUl8Gch6bpvTh70fm7DrH8MRArJzuZ8Z8Ogkon32rxVFehLa9w+Sw5HXDTo9+dvIcDbpiSq+wjBctDijNlIOLpsRF+m3oqBqjc7XUdJVcDF9m/yxSkcojlX3pa5nAWzIbv/vlL8UiNf9tZTFizaf7s67CCbA7ZLJF3rAhIEiIkMPanHIEzR/Q011Aehj+kDFFXJYJyRe5TtKhHNd6r/0JUpA90WaYM/mY3wW4pe/9wlDNo7EKM0yRoKxB7CuZGQRhC8up9YMhiOnjU3HVX51Q+jCXetWF4jwMv7FAfwEFCCz9lvjwbzIeTJYf/TB0iQUaS9zfE7EOmQhn2fk/Jhp6fCwNwZAd2OxKGvfwIR/pnQ3PGYQQgr+29WNj4GaM8trPZ9jkASv081VcUNwlkjW9vDcwkgOx4f7/YxAoXYD5hunqLwk+PTOKpgBBJn/r1SEsOgg+3HLbj2B+FruvhVvsQK+MI79pp4PgIpvpjcocJmwUT70etdCa6guKtK/CqKRc9vXWCPDEmH00eddU3DiFCVonpw63IQKrWYYTcOywUqVzQgc5AE7NZ23IfvYZDuvdl+fbEY2M6mScucrISFfwePj2yFomc5zxTaRAkwhvUM7rGvgvKta+8PeoUh+UIAnbvRcEyoywxztxKeuRxHyo1hiLOhQPyYdRssen6+yOZWBtmjy7k3L0Sh4IerS1pMbYA9yN5rvVsGF4uDMUWLkeiOeZ4m9wgRsu0ursXvkSDmnTYYHg9DKcO2usLyUaA6RzUtxkqGuXP5izZU4aiLJkyfA1sCvm8qDcZwDqD995Fe1mggai9757o20w4bGO6Hp85XgYPVXDE9VzT6KW1z//LuAARqXjsRlBQIS9QbNXWiUejA2M7XPolB2A7mT317KQAYOsMehpVHokYxCeGAonZws1qWqVeqhoOnKseZ96PQdUII0d+tG14lTR0sMMkD/Scypc7/CCggcmThJWMH/Jq9d2XiWjU8MD+96XwrGsU9mt5Ok30PGz8fGwU+yoD9tZQskh8G1V3jNJ+16oDPkwZ9so+rwfiOMai9iEbEoKY/e1conDzWGJJ8vQYkakeY6DWjkWTqjdO3tTtgOFKDkKdVBel/Pi1OWkYjKRuGyxLEDjDarhCspuz794cG4+lh0ejMO5VbTdH9sLWXuXOC4sXU8pvBRyj9pXP5yEswfAWz8hefvjcvgrOPqJU9F3HIq8bWfvSpNzwWe/e+GFcEETnN9pvhOORzx/Hs+L0KuNSsHqOzUA49e4fmnD5j0MnfPS66FuUQv/lboIm3Ah78YR26hMGgEvrt3U/visAjJobO6BEGokNijhwmU87FlVqRaqcITtg5nBg3D4f9fea5Ugp/RkrZmnBzdYC5xa+WoE8uwHi3ST9LIRq9MChaO4PtgJPxUdTZIa4g4Twvei4gGt3DJy3EVSTAR6O5L1SXyDCs6CJ8rjkEObp38DcrJ8KBHi/WymIy4KzFPV4khqDQviycYlYPfDtHtcNpFAUFAnv3Ryk963bi2RF2nh6wm72BsagjAF3OyiG7y0S0bMky6szdAzx+k12LtRGwKmKicJdyHV/HWd07Vwv3Yx6oRSIycG+dr6leCEYzD7uFiWdqwaeByXoshwx7fLv3y2yCUUmaiAg1awvUJsQa7ByvBb7R6mFxjwjkgD/APJU3ACpLTPkV+e9gbyJJzGAkCnEl2anPpA3A1RdbO85FrnAoZSqhfTEKWb6TeeNf6weLipuVOc1RIDljaBRugkM81fbt79S8oHRG4EJnFR6i9XsvqibhUACDVPf52UE4fWCn3aYPAVVDTPJznQjU19w0EHRoCGrnXGoXxEj///vbErYI5MTcynervBhkpmZU797EQPKJVFm1pkD0iKFpTL+Cwuc7BWwXAMGlwdUaBlocOmvwNgz9IIFyVrwVsbERvgeoVLJJ4NAfpy06dQ4y1GhBuKMuAi8jC4v7mjj0teDK6Rc5g5DxJjn/R1kK6P5Hl61BikAzO3NrCfskOIK7GS5WVgMdQaEfL0rjkEeUwpUzhmRIs/ldkyVSC8yTX5zXvXHInVhqduUgGa6O8XpMV9fC018639RkcCjdkonBlKkFcvGFM4mV2fCt+hbvqGsEujZ8OvhncTPoO2auljdnAW0264Mz1yLQz+MVR3gYW0B6XmfVKD8TDicwSa28iUDH6Fw5I/+SwGe4sq+G0jP/652CWzj05lhyWYw9GQacDDQ1NbPh3hLLR5kQHIp+LqFS4RkE7LaVAf1XGuD23KBZ+W44Wo/ZM6191wVselssjpU18E6tIexHDAEVp7xLCjnRBU5FAqwb/LUgIm0sq2JKQPkHLp5k4ekCc+8LjSGiNRDneOL3iWcE1IZ1vuX2rAvC860VHEm1sHyz/XlDMAGNuvKdYFathCH3XPuawGzYiruRGqCDRf1FBTR5LFWU3vXFb3dnwcsHvwsdqrBoMEm8CvOvEupiMjAZ2TmQTWumIZ2PRSVeRd1p77MhbEkosBBXB98tcB+bKXttV3h3QVwlC56KCfhlxNeBFqfim3U5LPJonRb36i+G0ACzzhbdcHhZePHU7+ZA5D2umHRIKwvyoz9n6WyVAdXx+qQbgEVMMa+jCLWRML5BfKlnVwxZouwHk1nC0dvXDB2efHgY4I+XSOwuBnd5DqMIu3BEVVJvnqbXAhMuVOLDMrGQctXp33phBHqVLBglxdUC0V1bBXi5BDj89jZ5zi8CTVdxUBf9bAbHyBNNzn4x8KPMaLnMMgKZT74Ynv1eC3Nrp2Noc3Kh+kuUR85qMDognH1U+E4FRF8Pzvd1yYNueg4L908YZLx7fvOiXzlEpN/WmHmTD6Jkb+83kRi0ES/nxHtsAB7F37P2pEmHv1/ySpoOEtB7w0fHGTLLQEln+cRcYwFgGEw/nlTGIGe/tbLQO6FQ71wYW9XQABQIDZ3vC0fUp8t+nvJthgxtSRxOoQqwWrSHvpyMQCKDQfOTY/2QlL87dNY/HS7s8Rz6pkJAdEGw5IofhPF+J6MrCcnwnEfYjXYtAq1O0mldWuoB3szRkh881UB/B18noEFEJ4In+5Nf98DoZattGnIVHJhx3zkARBQidfvZPfZqCMebpTJR5s207MP1JbkgNJXNIeDoXgUDe9/ruYXq4CEp9+mb71jkKkiHQfQ1IMLLPh1VUguhIzQ6w51BiF6hzG7haS1kXbY+nmqbDznN/Xf5I4KRm9kR9+3TkSBINdzIYl4Bv1iYWvyFwlGm6rSxGhkPNTJy6fVl5fBxU8Z/VTcclWn77Ec51UCnr1V/D3c+lNc3b6UdCkZeVNMF3c3d8NvXO/58TA2kUSktjbAS0QWZjpAz3d3gEfmB1SylGjQzLBlp2IhormrueURsFdBP+F28RJnH6TPbN3r/YtGxU5VOdRWVcHiCypU3sRi6V/zdPCg+/p6Ij4nRofBKnJ67+W4RpBYvqkhPYJF85Q+FAxQfD7pU2TEy3wBMbnybwet4ZBShUfPd0xXke2TsHukkww08K8PLNhzK7+a4pKg5BMX7Sk7s642gXsqdb5mGR945AwHaAkPQth90b/sGAoNnn/52fMaj/yZ3n9s8tQXSRYxUrGc8zOosaMWw4JHOrNixRCEXkMNe65J0iYVDGhepro3ikLyFe7iYcDUoK3qoPKAphohxLvxdlSA0nDvQb/6+GkpO9JQx9xeCa+WhkAR8EPL4T+64MF8nVEg8YEw6WwHj3a1rlrPRaGjpPb9PcCd83uY9eU6lArA2bitHOCneFGl/I/RWJ5jOVphaHa2EZfLIOa61aPTglwFBQbQVZvVSPQhXU6DzRSizrnIkeiZG/Jszg+CVcNaXklcNMP+ZJTDeIRw1lu49+/F9kMIz437moVVQ75kcmyobgaoHW/lkFym9E1LDv5ZTCWSbbwqKqhHIBq+W063lA7Qbjj//Xc4HqO4/WuiLQ/9Gqsv7fXzhfi+zysyBQrinEUimfolDbGL76eXZeXDpcPrVq83lcG/HR+MiBwY9HUu1fcFcAGNGoo3N9BWw7RNolb0eiJp3twp/Og8Azz/D/lDyC9h80N1NdzcaWfyoq2oS64HtBxUZg++qARNOPi4jTkT9EcUixdvdYKedG6c2VQXHHy/Y9l4gIpvSf+Zz5yuhb7b0ZsoVPCy9xW3flMeia7nMfxJjEQT4FxDdU1JB90Hf5W+3wxHdBRfpFyIIyieYnjXUp4Icrf20wUwYwj2hk2J5h4CXOnlM9VI63H5zyLhUJBz9nZe+aPqqFUqMrRehsR4uszUmnHobiTSN8hTDZ1tBx+BzEHdxPTz30h0abItEV0ISzFawraD0bsFWb6cOpnvEGVWxkWj3h5k8jXc/5Oz66eHYXCEwWfCDcBUB6VL/LJhQpVzv0R4/K/aKMhfHNOeWCKimKMMv/k0//JuMQhd8fWGql/fsXiMB7Qk4lIplDsBhqiQou5kFUxddLI7PRaHkTUHzuWd1EKtkmKZRkw+pb1o/md4KQeiv8LLXfB38LLovcQOfC47ytEls2BBkYlesMvx6ABIqGOuvdmaBtvoCt70chd9wYdXjWwPgc6V8xZkvFe7dGjgneSsKEd4RffxZM6Bmh/pozQYJwhTPTmL3sChR/BexqnYAuB9d9eNii4VQi42yqIooFL/92ealCYUnrur6NJeUwMq0QGwCpUdYVet69yj31fTukVzhbgSeBv9GLsp9WdikeLPaK6BmNH/6SE8jmIuxp6WyY9G3IsKRJnIFCOqctI8taACPvoCvB09j0cgIrRBbYDKsew9hVVASbA3dvdRE6YsnZ2WUDGmGII1BIvfRlzKQ+fNXr/BMBApWsZ9nL2mFVHKNSv7TMsia4JD6nBGJcv46OxvRt0H8/ELlNCPFd9S+s2zMR6KUl2VDLfTdcLJN7YPaRBbg2q0U/YYJyCHs7u4YWzeIINHPfrQZ0GkbmKg/Tun9/IenlATKgDafSfGFKRkmPmhd2r2AQf5RV7OeupVCRNxt2mlOMphz+DIX/w1E/j125WtPyqA2xDBIc4cEudV919QkMEhFmMuv9xqCRXodqsnQRjCVTu99sRqGZoTCvow4IOCoFpI76dAAv5984D/CFY4Guy00lXwb4YLIQNyh6UZgnhWhGbsfhqi5S1dP6lWAdeU1ick/JPjms8F3dgmDHLDzLofPItDJPvD2+VA9mEYEijt3hKHt6NWsaymt8LHMUqFJPgXOGscXHIyNRHj9p2lrexi4bDjIfrAYwdiyUq3QSRzaK0Hpx6/6g/+rxcNWOgjmjsULCajgEMmES5JOvQ1WmFVG/JQT4Aox8SrDyShEHzMku73RCqjz7ArPm1RQXWIovzsUiaolaG7LVw2CUS4kF1dHA+ctVTrf9Aj05+HCUtXoIARZHFNUw8eA16WqtKu2EYgXb8gj8a0PfhEN7rWTwsHv84lr1y4SUbO4EHH6cj9UKsutpw3i4F7sz95b1ERkLDfZvLzUD5xzJlVWrxLAyuhN+D9xAroyJ9QuJzQAONWuNDbaBLhs8YBzozsaLVHdzyvlfw+yVIkPhlm9YNPoncR3ih+lFTcfuJ7ZD1Vw2m78XyoYfo9jaQkhoJn1WpaWjH5YICl+6z6RAVGJ/rtqoQSUhx8NY33ZD6syW9+eRabDTv+hreJWAroEvYJHcyMh6gX5ndN6HVyL1Hn44VQ4ctzVy3wdGQ1Jiq9P7yrVwV6Idu9aThgKcV7I0BEkAFenYlKqfT18lrBYovYJQ89z/1OrOzkIwBz8SNgmA5JWSPuknUjkKBg6k354EFgtn+QWf04DTqYneodPRyH/gb89XPxVYKczc7p6ggQqJjPz6iQsSn+c0ZcyXwnS1vkXJpXI0Iq+70snY5FIRPd6p1YHHKCNvR7olAxmz85s6ltEo26rLkm35A4I2pMF5tpEcIo+np8cGY04Pf1reZ5Ew269iE/PZi6ofGhvtK4OQ6ZtHV4yEURol+iIEYA8MKJpkefgCUNcsXnKXV6U933wjcD9JB9ss/Q7ZArDkKbqcxE9uX7YbvhySsuXDDdwDKZBPwloLr9Ru0crBySLPRuKfBBEipwq7KvCICMjM/YCoWxIpPntwyBGyXsv/PfL1Fh0kDP+W11XG3h8FH01VI8gW9ormdE6Cn0Z8+vy/t4GT7iyIjX1EDytyCe+9IxC9woXMt4eHARXL+naa+4I6iPeKwmei0IKoxHKfoENILhKzWKtGQ21zYqun5JCkVa01sH5Ow3wdcXK0+BVDDC21TvSOoUiHSnt0LvWRMD9TTt4X4cIxwMmXhZeCkNH/R2/OlPmwf9WqJ+RNhmsf2kwaFLmgeiy5v/Nph8mk2cu9pEp7/tN/N5ULyVnsl0GrTTfwx52kabZhAS/m2wenfXGoP+anj1879UDv3jnDj3LD4aXA5scdXJEFBV97uGn7R5w/P7qg+BsECj8ZBIf0SSi032+XaW4fmhrC7zSkJ0Mru9W9PoyCGjqjpG5smU/pL+R9ckyTYWXrxOGTIYIaOnt4XB77X5gIBx1iMpLguI/G1n8cwQ0SP3VJCktG9ZZPixWCvkC1YgNbcgcBr24hO27s5QNcm5LCoRMF3jtkqDIM4hB1ZnS5qOvo0Hr+vHlR9kNsBvzK/17MSXH5F6XCvvGQHbbnhtetwHuWR76QfgUiggKPFlyJCJYq1bv8wo3AoOUm0jlyTDE2RL4wWqjHIaNHCQliCTIubLLtdKAQQXC0erZ7K1wxP39+In993DVw6J3/WYk2ttSedKX3gniGotTu/51oBlaVSF0kYAsRTBtVH87oaxRUYyTws9asoOPTHQpfLV6/UnMgRRwnzsTYNGWDxePfbjKWhaMhsYjCeytyVCuoM6o5V8GjHwaXqt9waj8b/oPiYBGoH9U5EvGInB59vEfRjUMZbGrzjrzIDjd83o7/RFlrp5zz97uDUMFyjIP6+q64AeZbqrOMRVcSe2KDSUEZO7LrdCHKYKE+I+q//tfgWI1/+ZhUiAiHk29Lc1TBF/fi01cTSDBSqqo7m57IKpR/7Sx5FYIR4jB/yKVSJDWolJmMBSIFO5PDvcXdEJLTpTNFYTAjLq/xf8yAek/uf/voncFKKm8ICao50CaEdfH2zsYRJsuennxSgWsjYfrrFS8h1tftI7XfMCg6PFAkUX/IvgTl2tNuErhw4wQmm3K80iJ+xRyKRTDoJUk4XhvFZzT+THO2hiI5OKfJtK8bAfcXUO34vu1wHWFu/zyWBS6eOLpAyvldpCJq9O9Q/GGel+LkNnaKPRenz3zSVQ7lHNcduCTrwH2vgmVd6tR6HTDisf222owzbMtTfxcAvEEZg8vlyDUeIWL4ZpzMqS33NT5HFQKwdVnyBa/g9FOU8Q5PdVewKSyh9GxksHuHkXBdYloTFHOrvp/vwNzWO410AuBDwdPX/H5EIjy3phgtbko+7K2EiiQS4a0RiR38DIRfVDqGuqm8GQNYaMW95UE9PLGdSMUnvTyHprVKCoFmsPBj+IPB8NuiFWxFS0G/R9kkjMEeJwUl3c81e8bxivKyIgkq5TsKBlJJTeSrBTfREYhu2whMpPN4cxQ9s7e+zmHY29SmRFChYSG0u/8/n1e53U+z+t+rvu63lf59a5NTEMlqHY7LoZyxkM138z+Rv1IVPZTyuEOaw3wVgmcovQVwEbjSb+eC1EohDn4sf6NXmBmnakRO1EDq/07fktfiejCJ2vQ7uiBhyvvbCsmq8GFg+ezaQ0RBdHJE02P9gKXY02SHGM1rPtWirW+I6ID5+6H+XzrgUSjkgJMag0o7XhfMuiind9ILmFyKIfXfyRf9iwmgrbr14aK4Qh09ohNC8ZwCNq8nKx0TSgwJc90YjmUgAYsGC8v0M7T2wyYbYcosI+gLn6Ddq5a7HzySWY6DIg/4Ln4OQQiHYbLpe1jUHeqr+JYWjrsa9djVxl5DPt78VnWDjEoXv9KDMs9KuAbo1caXpcAoZfr03gFFl2KHtraKCXD8OvPJhlKNeCd8LZJmD4B5Y1kfX0a2A27kr+M+KMzIMhgweorFxEJUptX04e6ocPRpP7BWiaMUn77bgAR/RtIrf9+KxFu7nF8GfqmFnr5HOwabTGox5BoG7oyBHNCQ2GShGygv3/7RLQhHg1+S9K8tzsEDUlhR0wkCqE4vHB8UhyPWgJWFbBfXgB7jT1ew6AU8tZN95u0xqG8Xwsc28eH4cvuH5/+pHwQl4ozCp3DISuftWKMUCnshvsqrakWwZcXN4I6OiPQ/nRmuq/0SWCUdL/wyN9a+NBZtfdNYxzyq6F/F/COBHL6qpgO+XqYibIc92KNR6Nil2TBnAj57gH/NV+rA21Ps+J6j3h0WP1QytOxPgh+ekjulXEGNF5rPcR5g4QWzjGOEoP7wHRi9G9QTSbEZrnrzauSULKgR164XR+4qChnG/xJB5mGA3u1lUko9ofHsR6fIpjpP+k8v1YB0k95Gn/uiURibudffVVMA1hw31W3DYALnQVm/VyxqC9R48a+4CFwmA2Z7cNRAHspp48kTUAWgv7Kw354EIwVczlJfAaHCpJUSVvxqO7ZCdYU3mJodx44g+OqgviGI0/H1yKQvdvFSTWZYXgfxrYce4UC7zkPzsg14VDDFcMc11kyXD3JxLV3rhHKPOvp1MUS0Ovf+hKKMiMQ0nhmXmenCd6ye3MzjSaiwX28KbFnqBB3CvNS2CwLWk+eqmvAYJEZ6WbVFL83bLTOnVjkzwAjqQDD3skE1GSV8dIBXwnzJld3oqmvIOykBTfj1UgkObQ8dWJtEGzS/u33lmkFJgNGe53TRHRELE/4V3sWBH6f8lWZswEus2BxB95o5PSh3aYZVwgK256dlJ8F4Kt2q19QIxLZ9nzM2Gzrhd1/rbWx91og2v366uwREtJ/HtJwyqAAaje6z3+l5sPjd/v3/QiKRAICp/QWK4dhA8tX8NQbC3seZhb/K8AiHP/EQ+MNMqBH6z0S9NlwUplu47lcAqq6XNV8K4YMirJTjesoC7LnV8eKlzGoX+yz0Q8qGQpmvae5JXIgy99D4+7hBLQSrpS7LlAH62ahOtEylfBwZ1tqRT0a2XxKuvrh2iBs+Ck+qy/OA2U574+f1ogo/K/2BWOXQcjrjXvFQV8AV1Plfb27iYib28/89oMoCJ3c/XyBlwy6H3h+r7IkoEMRomOzliMwk3A4ZiwlBYpJeO7wmER0a4KwhMMGguNdm/pT6uWgHwwiajkJyMqykdh1jApqoidZ3sY2wtFxnpaEZ1h0PtTp62wwFSI/EMe2Shph36+Sf/R9WJTG8Te/l90aarObWbuWWoDM0Pn78elEhJwYjVr3EuE43a2C9/ytoNV06qJzTDzSKnKa4K3FAVfLQ2NFsVawe/Jl4ugRDCrb51a35YWH0gKucIViCqR+oROQ+hGP5BbU3s8fHYbFx0bvfzE4wbS1eVL7NxwyFJk+Gnh5GHhvP0z9IWMPqTd9Xi1m4JCDhUpSBk23C07WHc2KfvDBObTOphGHzmQxG282UmHyeHZL12oBLDBlF8b/wCLmj8RToSrdUEz0z/IcrYOY9QvKd78RkC9Pj1FRQTfs4Aey8+rr4OVZd9GbUkQUfEnOzdehGwIZRY0GUurhiLuaZz8jERUWxpkwfUiApr0Go1et/MG7QTmmyAuDwm1kL0vPdEHGxn+255LqYNenpmeqjoDmYo4Itl7shsbvC8x9THXwYLxQr3CVgNiX/Rz/OQxDlZr5+69ZFHiVTfAwUMMhTtZv5gp6VHhg8LVR8ncD0M17im3kYBHV+5zWi74u+LvcMp771Q5Eo8o6Q0oIqI+uhafMoBsK09wXPEIewX/lHvtP/iEgQ9GogdPM3XCe/nhZ2wl/iDvkVrU4TEDXMWOPwp51Q7VSwBCLoT8Elp50LzpKRCalk1/ipobgtpxI4z+BVjA31Z+54IJHydspRWU2PZDCsD7OE94E7led6L5HEZH356TzHLlJsC84Yh8HcgSjagWIS4hDFsKTFRp1teBdaG4d86MO2kD8AA9bNBo+QshQcaoDxnaqd39kNVRVUfdJuESjN4rnL1mJD0FcT8/uWSkKiE4/6BQcJKBgrLD66p8MuN8YemlPUxgcT9pjjQai0dgC989O80F4SNCgn0hIhlnU0OE9QUSJpQ4M2ypD0P9ySECLJwZy18p61HIJiOvvw7lwSzII3fzr4/SyDoondkrGuzGoM3zWO+t7KNxzD3lq2Y1g7ZTcKnqYgNq5UjTuEwIgzFVEffscGeYPbRWOvU5Azv++Neo4dgC+TuEt/dUSkOYtLqSK4JGM09y3J+IdIMjVJDIw/xoqWll0XH7ikFFhqb7hWgTM3ReXvZXbCCOo1EfrVAJyWvlVFrA0DA5jxa5X1vAAfCxPWXWwiI1qZF/EOgIfl2717i1PhARru9ljB2n+Q/oQwMY+DCHHl82EGBGI8TgdnKLHIxVL0VtH44kQRG0+9WU3GcI2zh+7ZhuPNCs9tF+J2EEU+76pz745YK2HmO+cSER3mysNk9EwJP4oC4gfyoI8/sWRGBwW+bUWDD32RpChWLSU0uQGTFv1tnzCGHRzPd7OtqEHtPOKHq6FNIJSYvmcWDkR5VKaj3Op9ECx214GNwiBff6vJi18iKhKm8MQ09wNLbnRIZ5Kz0Dtv1zhT+eJqCNKVuv7WjdI+PHvem35wUGxXvHSm0R0y4y4fYChB5z5lg0sPkRBokxQsa8ZEV3Vwp2LJLXD9Zkl7sO/KaD0KS55AYtDm/fy9WadqkCJaIXrKWgAS9CTjYmORCNbtqc00qrAdF7k2CNKI+T/C32yJzUS8ejmaB1QoEJ63cQm5kQUwNjPbw/xWLR28aHSXicq/Lky+eSieShk71nEBTZi0Z++f1W/xsmA8XFe314ggyZHOytWKAHh7ILbd7PIkOUtZCxlQIEzKqxOQTsYtI+Y5EWx7gY1czzbOQot7/YGZWfuJyK1G3Hnz68OAQ8Pwg60v4a7P6RMX+rgUcPZtSuKe4fhsW4xwVWlGIR8X7Y2COFRbKBiq9Z/XaC7NLc4nvsCnprs1FyzJaAe4zutbSFdECil8ajuDhF+RZceLg0hoAL5YI5zQQjGru5xt7uIgCvl9m+QxKCkvEcnvuYjCKbb8+epfQvkajKVNmti0FKIFm/k3iEYZyWT32mWA8f1kRUNdiLSGagW1Pw9CLfimG1jJcqAaqPp6sNHRGFimKIxDztIHG8MjlxJALJF8sNAQZp++M6MXrtMBYl+/oDoowT4jFRxxUlY1KsfGO9PVwkX35u9nlUtBwZGw7BB/kh0UsPTkoG1AnqFvM9NJJVDWkIkK2E5AlHU7zqYRBfARccfvy2zmoB/6izTU69IdEZSQKM2KA+cKgqePMI1QTHnJaWgL5FI/5kPOdcxDxawS78rc5rB//Hz7ksbkShfYev1vTOl8NNKTNzNnQKCumI2nR0RSJncpK3Z1wn9wbVNuw9L4czr2rZQDgLK7vPrHUjrhA108dxd6TK4PnCveHUTjyoub4nVjZAhNqo5jo2K4Mjzb/a3jiWggdGPpQdLKRBkcZhqiC2H/XNys51NCWivq136Oe024Pf7bO0eVQnm2qfCdVcSUasKYgxFrbDsofc9aqIS8r/qe7uGJaJVszwDHpMROLLQMVCsTYa81XvYIFIi+jfnKvF7FsG5j84lmMR0eHuQdSraBYPChIX5Dtwiw9jiF94V/XTY0llw+NOMQb65ZsaaymR4J6rR90QoE/TaP9EPlGLQ2Twm/KR0O0SJt5D9rzXDiMTtVqPrOHR4x/PTr2YqZGePbTDbN8NMJhDpfmHRQHY9X8YQFWLnBtHxwCaQs4o/7nAAh0rJFd+juHKBIp5v+iMiDO5Mse1JMIhCf04wWcV4d4L52Lxkzrss6L+1v/DUOB5tCQ8XumUPwr7u2T+uZynQ++PZSEUcEWnsWwpnZysHKa5Z+6KNZEie4qckd9He/SZTiL3oCLipHUi5uVIB2ne9ril/TETiY95H+v+2Q/JfQ63l58Ww5Om+PDiOQ61eo7zHDcug39c7/CflFRwx+8xi0xKBfP9W9EXRdcFW+e9L5gJlQBnzNNqWIyCvQlUOB41kWFP8lWJyvgXmbuXfD7KLQ0WjojkOHyxBa/LQ8fdC5eB0IvdX1plElEKnZndopA8knbCbzzuqIXnmzdECPRL6/uM/uc2IYdg7/qRllwsPQkw3Woz34ZDS9Tyh2A/x8J+evdHTBQQ68ok3qqsw6DhmqcfwwCBcSzR0iBItBH7l5x8EBUloerRLQqW0EioGKbr7rGtBk9++/rxuJFKJqbxdnd4PYVUh/hsBZAjcPLzmaUxC8j7zF2s5SJCoI+qs0UKBR289h/erx6Mwh1TnnFoiSPl53pS0o0Cd8aoxm2k8ami0HEtpSIL1SSJjSyQFVphvnOGOiUMnk4P3PcaWgIrT+/txI5aww/SeZWcoAj2kHwp6m58Cl5/NPRDmw8PVZGlHKlMcKtnZsU+XToWkQfFY4i4WAt6JZnY8iEV63O+8/KtegNSVA5MkjlZIFcyX5RuOQw1xW/EssjVAn9ZDxp1ohcwznKyjWlFoX8VqlFXTEEQczPZomEeAPVBy9VgFHmEVtr6I4IcgiEn+kDQjGbYt74ql7CegUBkX0xbbXqg/qR/N6hIFtrzKnP3bRKTAvWrLfqgf3uul3pRnQ6Bx5df+LkMSwov9PODxYARI7R1rnGuVoK/5tuZIZCJScHsde962H7iuNH51tmiBijKvY7q0eXLMStxd2o/gg2nG7p2GcLB+QuHUzI9H51Qay44yd8D1NUk/bRYKFB+cDzD7iEOXv8kGMErEQznRQOvtjzKITMgvNCNjkEzpWryOdx30St2VDv+RBPetGgPmvKLRQK+tVUd7HeQc3n7YHZUKZZRZTE1GNOJ+WueoMlgHs9KVR/b8JsCv9hpNgbxodJjMv1flTiF8kT4x7uVbB6o7nJmp+pHIQO2nb9+nHuDeFibXeFaC9dtbMteoRHTO9daBqFwy+LGK8DUJ14NLtybPnb8YdOnAz6lfl8iwtGI4rW5WD/UTo20zJRj0feVl9jVXEqzECn/VcWiAZ0tsiuES8SilIN6rlpcAOnHCjp98GyAx+LYxa088ctXQ/OfzjABxgsc49XvqwSLNKguK49ETXkKxlz0VXDN01sPG8iH3lltZXj0W4RXyOIQmqcB9VV/7a0g+nNs2OviNFYdm7DI8tfE4+BX5+9qV8HKgIz5wpfBiUNu7FctdFyJUftxDDGwtg8P75tQLnePRp8yE1MhrND0HYvlbCsthx+Vz/KQv7V1c2F4ISxGh7kCownZfOox93LPxJygeHd9/xmOgdxCmtJYatqrSAKtE8JagcUKVobkuO01X9yxSngqOtMB5vc6ULpqussiM95WPDMN4aWUlnUQzkA+kqob8wKFAR49uy7pBmNlJfBHA+Aq82XLb3nnReKbwqyzz2VTw82iLCvyeAj4/Ixkf0fT/oSW8yeVdDbwyMrPSHW8BNwciUSIpCtG7n1kWSmmE8XdfBoSSXGHd5DIu0DQWWb4trp1qHAZuazlpnE8tNPhkkIqTsehos6tg5uVuiL5cxKoaXwAG1jPp9WsEZICRfniQhdYvbK/oefjnQYEpnf/OCAFV1Hrq6SV2AyF6SCL8ax6ocLj7SQsS0aCJgbs8pRNKHQ5+PkHXChMbL/Y/YiagF38vHCr70wsHp6Y173JVgvpdNQpJhIRYpA2VLjD0QdL5hnNms5UwfeV6xi1xEspMKvfJmKkDKvPas84jGfDks+DnhdJo1HXluI8EYx30LSwG3n2SCZffsBriLkQjh9uKMXcdu+GLLg/ZRb8JPnFW0OkwEVGk82NtT/5uEKfkxK2JN8OZIZlPbycJaOL9n+a334vh7gGlcuz7anje7O0zORmBTHq3ztuQS+DXnu+tvdQqUJnpfqk/EIFObUezyzC0w6XGGfyRvlx4Y1T+jCyFQ2GcLHRONgPgU2oopuhUCbsvHV5kXiMhj5IP6HvSAGhJz+hclKuCVtaLvNGXSSjwZPahccYB2KEa62B3KmFTlDOuzICEFIc4HrhkIuhUL3jgdLoBjKumb4iqY1DNvNcK26MX8O6+tLXGXDWUVE38F74Qh6Jabf4NmxDhTVpACL9MNey/czM01zMe2Xu77twTTIJZ2aZT4r+q4EjKwUeUqjhkM66/uKg3AGLvUU+KUDVIdDMK3NEmIZ7bF+el1nAwvcrDZf6mAD6b9XFUsmLQaSfKP6weEfQk8pu2nxbA8MTz1S3veKT/xTjFmIvWc1/Gn90aqwMDIFu5/sIhK7bqrDcPmiCCekvByAJB7atTx8qnYpEnM86bSagJxLPtruv0tUCT3PY/hvJYtOdKMtdGbxM4iZYrTPW2QNUEHL0nFIcUlSWPZUATXAk62KgymQ9Z9JdX/lJj0eMLebrDY1TYny/1hj6kDmTckjZPMuPQT+E7sumW3WBa+vrXYaHXwDoW/dGTnoiWtdRj6yNL4Fzzxaf1dTXw0E4LlzgcgQoM5OQFp7sgbygh78t/BZBgXqigQuu/Esdm15an+iFPjotj7CfN//8Zi7AYkdAx8+nnHb59YFZ4d7+PYhU8v+nUEAskpCx5dtrIvg/exey6+UlVApF6XdBVmYSEZS9xcDIMw6lnO/lSh3whwXu0jo8bjzSflqb7swyDirUO6y2GEPhFfJ3pwIxH5/ZlBU5NDoHwI677QfmBMBLS2FruikfFkZbuW2LtgOTVNVQf1sM1odsYoas49HmGs8v88ABUIx3X4x4UOGervpB3i4T6qNFXS4SKwcvd20CE1gOwPPkpP1YjkEf558UwyxLgZtKkdxWg5Yh4YtqxNxEoRKpOufDLEOxT8TY4k/AI1p1PPfpyA4+mTOQbw7nr4CL18HS+gwvk3pwwdYBo1P2J3f75Ui9IdPJWvDJ+DTHU/CrxEyR0oUvBof9uLfzFvLGk6DpCrG+Hq9NkFHpUZ3LaygAHS0H9JI6KZrCZXxmoEcKgt7ciSr7WYeEuT0YGZbUJLvlM5nAqYtBcBASc1hkARczXlyViruCXIT3TRNOndmLTz5a1CmgRCJ9XuZIN0RcFD/3gjkT+0gbmpxVew0EXy8AlDzKoXsssqT4diV7QHXYzuN8Jn9gDipIFMgHDeXx2oxuPtE7iOCOonXBl30FBv+0MuLiyVBvHQkBDG2GUXd9KKN4O47RrpIBJ4ynRlUuR6LiCdn6g6iAIewrN8LKTwSep18dpk4jS8zLejOwdhD0o6H26MBkGnHroJ0+SkJeaurGuXAEculEdPU7FQuPpxNkb4bT/eaqzOHX2NUQfntbW5cbCg1ejPCFSkajy4zWdvIwmyM27yJGp0gQ4U1kN6wNxqM3cWDpfqxgGde/iSI5YoNZutKl+jkBPDquKzcQWw8/rmplH9hBhqdr/ndBCBMpSpPvVHjwADw/J6946Sobb48KKeFWaf6616F12GoA/Z8f4g3IQSAZVvc7VICHO1WvI06UPvj+uKtstoOk/Sf5IwxUSIneKXRnV7YOlH5Z0bJs5sNtCZyt5gYT+WAb/tC/uh7iRH1Xa61UgIrfYIUnjljHVcpkElj7oT6bnIpILIDflOrZQgoR6fYn0EcWp0Des+EE2qw6+Mrbejbsai04zDey1/NQB2LF8H6pEPpxk9zpQ+ASP8gMi54ycemH+6IvEvGc58LHwT7XrTyLyH00Kdd0dhhnlzJSXAkXAub5mRhbGIszceclFJQrItrUvS+dTIIB7/W2sXQLq609+wzvWBtm9jyhq435wj2FNzP0mFjX1WcoJT3bDOxuFNMcCCvwHZUEu14josVXhpoBRD/imnw6P2dsKc3bfUp6FEpGM87VUx8NkqPE4/t/cqQZo/rLUNZxI82HWnAJW0SFodE7n2UgoBf7ErCr2UQIqty6f6dwegj+Ch6bteqsBv8I8IKuER06z0zI1v4Ygx7f7v6WFGjDdctGbl8UjcQNvfXaRYRi76J6QrFMD5id+WJu8waG45H/2KzbtUM83dXBatAFMvFzyhF1xKE/40vbY4VI49Ts6VjS/ErCsOTE83RFoLKT51BLNh0df0nUGXk8DvrOW5hd/4tASP3N+Kf0ArR9uPKkNJMA47qoJF41LM9Otz0Z1DsOl2OD7Tj9TQJ6kez4uDIuCXAviRpqHIVTJQj7rWBp8O7sbu07Eoj8XBw7GsEXAMXHCq68DLdAoUiWGlUlA21gw17o3BAedRoMan+aA40PdCQVnAsJlYSfjRSNB5O+hMPW9LcC7NH50z4kE9OSF4aWNXgTlMfnOI/EUoH8YbUq4j0GggmtjVW8H4Rrip4T9gXDhpHWWwx0cwn8/o0Zv3AH/LdEvTcVlg4dvk4YSLx6lMTFP3RTrg2spcIVFLxtGvssH88mQUPf11Qq6+j7wV75vIkLMhsZLnu6+/881vpe/YxKHwd8pSXOErhau8Bkxz69iUd3ipLnPIxzUXeFw5vlXBGVyYf1HBTFI9GxlF8WlG4bu5TkfuUMBG2WDQU0WIjozb3n4wP1y2NOTpXGlgQJet52ES2g95VgQ7l2HYiHcE0j95p5UDPC4c1b8diQy+nz6S594PlDaOPPtQoshyKdBpp4SiSSvzjM/sOuFoAH3e7zfyiBHhbzI+IOI3sh7L+t79MLMPMfL8Ply6L+s4Aw7RGRJmT3c9qMHbqod+nf+bTkM7GH/vtpDRBaEyUTRjR4Qcul7kFhaBoy/DxcndRFR/pGuEnnyIAS9Yd12XWsCvgZm7SInIgqVTl47FTkI08F0Ej6LTVDlJ/zZvISIliLNnSYZe8Bn1XJda281nIlNx9mZE9HpxQT8K5kc0A6+4NOqlAF7vyu4RtB40vnHeBs5NRcKeM4zm52nnScZ5L2WiEKhxqeng4K6YQLftifuWQw4F1ae8DtCREUrMRqi2t3g+jhC6qPvM1h70qZ+5wdtX35Wrc9bZsEcU1j3MK3XB1+weJSiEo3aSsWnX/VkgPz2HffCL03w8+gAK2We1l+4XcN1DGrAd0r2xOJOBhwLyviyxyQKNTg0dxc+64WHb4pGs4VfQtmi6ROVvSS0qpNpltXfC3wF/B++BSYBaw6stPKQkPFVc9y5Z60wjvm78Ue6BRq6xh8qmCQiH3KNU390K+iMDsixRKRCVrY8ttsiEdX7m5r+XB8CbFuFk/PFfCjSNR0s08CjLp10U8lxWm7SjRF6r+SC7xf6cLfHeHSlr3f7V1gSjO+4XD79rAnSeqWP3kuKQzdS7m9qxfdA5Qh1c4ejGjgPb+0avSKiW3Z5SmHiBLiIuSBqfacScnIDcOwd8SjkhMwju0AsjGrU4e+9rgCr52oTk1cwqCfUM76F0g+41bds/AyusPRviO3xHVoff0wfJKSGBxtFG5jwqgLpX6dz4vZhUKljpOay6DDY//Os83WtBtPHN0bvDuHQm0Z88bMqKjzQvnjClbERgjdtFRU3sOhLaWlatAcVqrFReg71TfDmzZ3zhRQs+rppfVJ/iQoHi7CqbnGNQJDsayrgxqEG5sActxQySH9l5L5dmgH1oWbDBlsY1L8QKceg2grOt8PVYnYzgP7kNn5LLBF5GTwXLhQhg0H8A0N2xmywlpx8PJeKQQUiVc1SD8iQYKXed0QyB8bjIorIvRh0QLNi7cxnBAo93P3rCZnA4HU+ku8xBiXKXXfUMqqG9mPe1PXCJjBn0zVY+xSJcmylVj6YD8MZ8dyiGs8yGPgg0dprikMWVEyBiAzt3Kv3ukBFGWADhhvcm3Ao3e8vNc+zG/SPtJMvvc2BiZ1vK7/ZiOiVm7f3kHA77E1FBAbNJiid1UULqjh00iZw7yGxNkjkcXX/8q0Y9qsEz+EHExHBNlfgzHINsN9W3mvuUQc+IdIczzKi0KqImNG3JQqYHZQlMxNrwEn2GK/TpwQ0lSbb+7O/FSKs0qbrME0wp/DOgRmTiPS/erIQt/rg+Z0faBTVQ09UrZMTjesOYfQMwgebgPetYwyCDFBXLPFqEY5DzanLWz1infDx5BQ5mbbvV3IZMgqy8Ugo8Hev9Pl2sG2g8l28Uwb++29KqN3AoQk5t2yVuErQTDGtZZgmQLGL8d6PqpFIern43/S9EXil8fEJYzkZWGurma7EJ6KYWDpR9q5e+NdBqt4qRHAh9WWQwFESmsQdlww69ABm2Jtu+dyLBVP81W2yeCJSD5EtOyXbDRnsMXKixARwsJxP7VwmIIi96uteNQTyU0X/tSq+gn3WLYLprXik9PW9+njQEBwjyoiIy6fBsPjQzU/SBMTWajYT+R5BjmW5llZdFXSaM1pFOWBQ12M4GfOlBo7ZJqmrJNXC0QVVglxWFOJiPNBQzF4DAXLaX95y1cGhW/qEGaUoFC9x6YnY5UJwSU7MiHUmAJuq8Fmr/2jcGLEPd6TqNZj8+ZkboPgCTE6nufny0uZgL6GEXRqE+Jajtrf6X4P4nnMDP+SJaM9dt+WKpFKgLGHSom0L4QLD30YOcgSyL8T0xe4bgoHDLXkZQqVQtsxDKWElIoUea3uepi6wILJ37K2pBi1PdY76bAJqvTOVtlLRC7V9QltVlQTYqHCdyj9EQtcmON1Gsuvh3Vj6gdfGpRCrEGkTJxyDOCwXLJtp82FnnXrHkVsInaupv4+dIaBD3DXTAg5keFmkKSLIRQD+dH43/UEMYiLQCX3MoQLvojq/PxWBs5pTfOknLHoKDm+y/w3CIOHp+SqVJPhNwoI8J+2e49TvpeG0HA/qnVzmKQMrc/t1lxMEtL/+M0+eD+27celnD0qVwoIi3+85ZQJ6t0UR3f96CKLsNW1DNEoh7CinI+9bPGIT1ErJnaaAwMfGYwFpNL/qnFuYm0lATwe9fdMsM2EAZ5czO0mGGZ1h7oLsaOQcmti08ScdjjwjKSg3k+GxS6NrjEoMOjjKa3IhvwzeCXAOuLfUwZ/SexK5lAh0LrpH6m1WLwyNTt6niGRB3OCS2/xBEhJdTOH8OVgBHr9EAoto/eMKR/uTCvZIhJYZ2S2Eq6AxPpUKN2uAU2GhR9Y9EvHa0N8dKSTDK4VDgRcF6kDx5fp/rnsS0IkHhplSD6iAy2nfF/2pEEyenMqPr8Giw+nLDfoGg0DZilmRZGmEzHannY0FIvo82US9hxmEkAHJzHMnGiHGPeSFfi4R/SyUXceYtULSjnWKsHEFnL/x7bbo5UR06BiPZxZjK7jf/D6+kF0Otjdu52fsJqDmAwGyjHdbYcXuhvhfhUp4sB6do30xEb14dHrP4xODwJt/PUO8HsFcjX/gMCsJDRetWerPDYD1uUcWK/cRPHmfanL/NG0O89dFgu61wvUOvIncVRo/pN6T0LuSiB4/7adu0LhW7TtzBsu3BrB0LNZs+JWA2hXRBVa2Nnh6kNi4qJwDLULqNVebE9HZEr32DzwDkNFPxj19hAUiJzb4CM1//vQdjJbyGYBDAe0YXdYEKE5PVLNQJyFcenzYtkA/8IUslNPP1cHkWqJM+3+0nL0YdV8vrQ2CWuj8RZiaYTnBzUBJAouuLU2llrtQAD37zlDFmgHG6uNF7XG0+0gqG7eI1sNCk7DNWGgeCPz8LDn7PhppKYcWSJrWQ98yZaLrWQFg17x+Pf4ZjVixN0L4aDydoNhQEbaFwKnRV/dJWhQyXJ4e/H2MAhcOryUd/ZsC7X3HGi4ZJqC6LyYKyjAI9x/WBypMFsM/Sf5zj7eIaFAe8YWZloFcQVvQ5GAuKFRYHkpqiUD6HDbzWjLd8Ppg7aVx6zLwPeWCaVgioL8H4oN7zryAXsN7Sd8fN0KW5Scz2I5DHaaYvCttXSDtcDtp4UUt9BAqd37mE9Cc1un9921qINCYsa/O3xW2mTOZD1tFoaNm1D/t020gZ53oxDpLAIe+FZ9WIyyaH7SdiB5vA4M9fvYih7EQ6ZUwU2yIRboRQ14tslSwM9bA6EUmwEmtJpt2LBZNf+OkUzpHAWG8h8E0zZ9V7vx8ftkyAUFgzLhJSgmYu2yW5sTVg883apk7jVdZHLw+vF8qgtsCjgsfpBug1d4xibIZgeQpjqc8FShA2ugzSKblczlKELz1IAHdtgt9BlNkUFTw0h8zIsNzd1GCknAC0jk7PrP+vgv81x99uW5VBuiE7m5XNQFxf0ud4OXtBp3k2pSTWaVw/M3vhwETNP/vd/vyqbaL1ne0FHcsS6GqY2X8UiYBPbrgMmVQXwqjK/8uZv6oh195fDxfaPMnNcrl/UopgI3eIYpRCgJtaUEVBtr+upzglNm/0QaDQnS89YMtUGKSoNH2AIsiL0n6X+Gi5ff3qDvjgXWQ84PJ+2tmFKJH2cSy9CxgqLW37KSrg9ffppGZWDRKc8hc/znbA29qT3VO1RRBnauq7CCFiO7sE2zbtz0IOrXB1/98Q9CR+zNn+wQRCSbJD4zFZ4F4pOvvY6U4MMdOLfGeiUYFpqX3o0+UwpPf/u+8viDgsf8bvNkZgc4foVbfqhkG9nKuPVKkGjj7uEzwvxwsujNZZpIa1QRTfDf6LSeqwTDuulXkdix65Wj9NGwOwYJF3vETrI3wDet+aM0FgwJuC0oa85IBt0e6Jb2yEWymgmUPETHIrUepM3ebCqIG6WGN1VlQnFfXunYChzZf5Yj2jbbBoXCvzV8CjbQeenoqUB+LNlanKoYuUSBfZ++o9UI21F7VfPPdntbLZG5tDd5tBsHp50wFb6sBJ8wbyhMchziDeO0sJkqB633Ese7/moGudOgtP+1dSpn2Sd/HlEKH6t93H7Wb4ODGx+4wWg6K87GdXCWUgGQ+3Y1PB5sh5cW3JCpNb1Z8X7hGuvtA/nx2inReKnRvXHLO0yUhTqMB75+C/eDwNHFE5146/FtKlv9L8w1Kot7TxAtd4Cr36IYmWyu8OiKOO3WbgIx2ppZMRcqhxE/94MUXhXDSiJxW0hOBksK9Teff1ENAnfPl615O0LzNVqKmGoOqj+E/fK5qgPPD088CaFVK+7BrsEB3DLo79upLQ24H8HFXBTNO10BPwZ72Un08muejTOrIZsNnMXHhlVXaO6xUqIluRKH3bA6xP7pofZ8aK6I7FwMrY+1yDSQ82rxn+OXS2z5gEYp8NUeugHwrjvviN0ho725ekO7nZBi1ar+GqsggMXJrrOJSHLK1HbnzM4kCnFtcmrabmSApdbXrfnECavxe9mpikQIHLeSYjWQy4LCpo8H8QgIKvJ+cx+DVBmx3Ayd7jzRBsSmLYioTFmnNxVoKS7SB8eKH36M/mmDsVVsR/3AiYrfgPaO/RLvnTyZdhd8IXO/Imaob49GiY58U684LUH1ulnDbGQdfPrZo+LbEoZH/sp8rBPUDr4h4hntMPSQZfftYaExCZWc0H3a96YYjeKZ5Qs1DaH99a/W4OhGxFn7ZW1RXA4eXPF/6m+NgSYO/Zj0qCh2gUxLmIg7Bz1deB59N5MGfa0si9XsJqOwDjpX3UjfEePy54U/zpRvFa/MTqwQkMdV78GtVP1wrrb/pdo8CdW6On9dp/aXmUK3U0cJBmGxVc8NsN8Kx0I8Ph8KJ6G3Wjzc6doPQeCInXfRoEzx50GRlN0xEwXvPeNNPDELzpORv49VG4NxVvudznYjmBTJmfUQQkB7HRMSdrgFGsYY/l97EI2mj+gADvTbYGN/fcya4BgZ1/rkRviSiOu7DIUUUCrAECDpmHCsBHgZinENPAtr758BV4oFc+EC9x87GTAFPKdjoNopCx9tWbZ8s58Br6XH2m+ezoKYs4F3JvShkbaVi0dObB6LFSafMYjMh7aL4N+n3kciOdfSLn2gemL6Ujyxcpunr5oMFffoodK038Z7d7WwwjJ+KXpPIghe+jA4vFqJQpYmXo8SjDliSUL6c6vkCPCoTIhrF8Ig/S00mjr4fHuz+Mr5B8gdLTZffAwYk5C/2bFdB4wUk1nzmkdIqBvbfVuEX1+MQDqud1N9BAO1Z29/XNErgcffu6OGUeASKjnduCHUCZ/m9pEs0/zx2P6V4fwYeBRgUlt6eaAK5o+93FnZToO+9AOHz6Th0Qr2vz0OiAh4Q0rYOjyF4+1/t4furEchIRprzP+lysFZ/5n2qFMGX3/5dLr0RyPubV5dcfT88POxSpnGqFbgbdYx6aO9b2v3KcC2qESzUauNaj6dB0YujEX43Y9GeIrcbm2KNMPP1Vk46LgM2Wl+oYzhikejYcZ6oiAYQZP310qwpDfYupf75VxSD1Jg8qi6798MAi5q8cWEpmC0a6oTTdJvTC2Sl331Qf+/YC/nzpVBT5N01ReOWiKYL7+0D+uD0t38eP4+UwiWNyTETVRJqE81yXLduAjbRgxXyt9PAK/pvA/9ULHIekFHx2t8NZud1hnajaTySHOcvPUhA897xwo/VuuC9uPheg6s1QL4+eVLDlIBI8SpRQUkNYJ9RIDKNLwHYEErnq4tBG2rTV7prO8B5sxhnoICH3Msv6FRN8chn2NyD8m4Q7C/t01zTI4Ns6XJKjg4REY8pBJd/7AA9S8dPg+4kqBQ2WTnng0fI7qxYr282zB599tp3MAGMOs7zNL+LQu8GREJf9zRDYxh9gs0UgoCCi9cM+uLQZLO+ittqMzh3rqUWGSAwsU3y+z4fh8xXXBkXx4cgQfvC/cWuOlBdVb8754lH5+WJrll7h6G+OnXPw5Va6GIg/Td4Eo9OF9hXtIk1w/HO0/R0VghUHwgOTVnEofV37PX8Fp3g3mmlarDQDNXznQqBXXi0zT+qfPAmAa7OalaS8kuh4e5RXdvGeNS8EWN8oTgTTksXDj+j3Ys9kw3/4Hk0ajJ9VFNNm2+D54OXvRKVsMjn/P7QkRgk48hw+uxyPdy1JOdL3qmAPROvfN/rxiDZcXe16dp2SCeBsrgQgo1XgYnpBTgkYDg+uPmWAh/CezKNCqvB+Fdcyc54AspYPVRodKEN1ivkWy89KKX5pTbm0lQiMmdkrz15B4E5d0J+w5lkOKOQ7WDBikG2+85Q7mCpwH3p3Wp6RzUcskjKSXmPReyR0tu1JVSg37ygxFtbRdNFsyDLKhZJqbWyUANrodGgTsXGmgxi0m1K5WtRyHZ8WTXPnwxxJa8OWVwvBZ9kYzPraQxiuKWpI1XdD8LVb8nB22EQsSb2dpW2F8whLB4HffsBmQ94j+EDgIJ1ePySpufgtql81+1+eHoltzk0KwD+S149rUfLx2a/hmeilmR4PbTnvJtxGew/oZWF68ag6d0avM5EHRTUs9z0yauAEf24BsfiaLT3x8rwqTd1kBayemKyoxIKlV2bFwuikUwVQ5f92X74sHVr5k5zDlx15Sv4d5uE/nl4zb5hG4RRnpjAi4r5IKEbc4rCS0KqcwF34UYvrL9N9/rMWgtEI/W5ua9ExMuTUYd/3Qv+j/+UiP6ogX381g5mbCRUebcxpJqnGxxY2dmnrNNhc2+SkwaNA//bUyC3XFkJr+xUn5XMhgMLaeBdnl4kUiSeq1vvT4I1OuWYs9EFsLN6/Mu353GIoVxpgjWyG87Z4Y61+1XBkwPzT0X5iOicWPHuWwEqFDTh43BGFBhQkbKcC8Wio7bNe8W/k+GZmP2RGu5QyLwqlHpMPgGlYpvyiR874dzm7Z45j2h4qnhAtkmQgLZgp+CFQzckbAiFZ7qlQd4co/YHRiKy+/d2ww5P68W/tbt7/5KA8DPR/+h+AjJVzyfRifTDuySLze4eEizQMbMZ0ebGdZlCLynXDxH77eRSGPDgY/7B+YIRzfe0NY+IEfuBff5ho5YbEQJNyiRTaO97MbWVVyWkFlq77514Yo2FJGebnt31KDTEnrpzu7oWmpMtmIzOt8DlqYDkcJZodHquJX+buRFcn5swrXjGg+tE+H/a/2IQzq9GacGa5j89F5N2RLHAze6wx40Yg7rCmd/c1W6As/sS6WNaY2Bu21K9J5zGP6Jk7nbog9A2Z70/xWXwxC0tvkKBhEba/5AKCvsgJ/qMyEWxMsjzM9T0vU5CjCtqLNkSXeCoEbPPYqwchE1tWt7rEJDAHyqOsK8L+CNrVP++oe2pKemBmRwBiSWI/7leag+CHy3L/eirIHTk+sPDAokIuGQytYURiNo+H/LnqIXRmQ8ahJF4tBOue7UikQwbrmtSr3jI8MCaq15rFYMk68ska0PIkOh2Rac8mAwlbStSlDkMKp5+Yh9gTOshlXb/imm5wyC98+FuGwY1Y0NrdZ9SQdLvG5bNDwumNq/Uq7uwSDbpMFUzlgra0fXVj2QxsPnUskP5DRZxPCp9GFxDBYHNrPnwegI0RSvtyf6ORYZC5pFHaXxi/un+9sQoFoz/vh3/QdvTteP9P8ZNRmCvaQZ13iYPLh00MPUkJqKWMPtp7rheSDzIupZOLQDn/1DaI3ravrAoXv76OROOp3lOdf1oga6TX4xfP4pGr73exoT96odoL7xI9f548J388J6Fttfdo1GOj836ITDtyDXFYQyMVj3xZqLpJNTN8GeITA04V5gvBMmGA5NFCpeAVhS6INPKL5tYDU3PBuIitgNgKcKf+GpvFNreTNm2pNiC1nr0YN1bWm8+dInD/iTN9zwYfPiyekDSwV3/bW4dZPxuouvOJSJs0+bb/C4qsPq53/q8QwYFVePq0j04VNXqadlELAUjlcrHdM1pMN/3iF6WxvktXf/Eja6RYW4Eu6BNjgDVRSNt/RoMElF6yPlgTy90DC9sbQfWg2q9V5TfABHtxqp3stF4jPXFe2uhcwVAPqX+LXc0Hn0/d282b6kd3DHCqXObddD58ewNrl4cSj5OHKY69wF3XquU59MEWKbspidfoXHOSeoXZ9c8EOe65DJwohXoPm0erF+PRD05l0futfXD7897ZpNLmyEy/bX2A9p7TSnRPVzBDwP+O+tErEgZ7BG9UnZsCYvaLQuf9Sj3wf3Ig9ppa6WQoqE0x0nTf9b3sqgm+UE4R519fxlLAlbDi5MVu0REqOR68TiyE9g26AK8/quEf/4/w/oW8Ei+tPPizpVeuL78UV9zvRFM+PBikku0/vhv/VaaagdghK5eeHS+EUIbuNP7mfBoYXZJ/eT3TgiWf+p+uqwSWE7xWJEkCCijPyKyJaUFAhs4SSIV2dBSITxlZRaP+hmZrabDB8BapVBsmkCB1YpuXQcgoes7J9+Xl5SCZJ0Iw4eZOhA89p/TVRSBuMdd09IoNWCNFfc+0h8POIEQj7vxUUgY+7YXVVbDTfpsq7sNjeC47xmm61AUssgnSubU14BrdndmZH8jsDWy3XeKjkJ/hX5EyrF3wHHFYtfLpgmgm6m3u7SIQzpR/aIsqx1AjRP8NEDL/X0SRuXCgXj0XHVQ7bd6M9wlVmjd+C8N6LXb2Vrd4lCat3xycUE5NGt6y95gqIa9axZJH8Yj0B+9hUkOnS5IGexLYn5BhgQ+jRTifQKK+h0190p1CMzIZ8seUtOg46lb980sAtob5LlcL1MCr98JtxecawJTjZ2zju8i0MPOwJ8S73PgzVxinWpKPnhbmIvVPIhClsuFOfeq8kDGlnKMDvJg9ua1P6wzkaiC8aud2hYeGMVLBz+ZV0Bv39/tWZoOrXcYXnEpDYAM10jL0tcwYExVkgY9EmLoMFh0ix0AbpE/6fcXomH0wadlfRUaZ2Ke1EyZt8KVIU2LCqYq+FwcacynnIhOTd1wfdHQCrlne9WeHSiHonZmm7HgRLQlybB/uQvBnRSMs/GBVpg+iiScLTDouM/iDve1dtB4aLRnQ94V7PcvjyWY4JC5X6JU78dWoDhZx6cQWkBY4nTAjdREpEwhjchJtYLQ9G1K7MJLsLXcDC7jSURliu6qa3S9EOvM+b58Nh+kmc5qrA4SUcCLV710dxohVvlFtw/KB/5BbNn9s7HoS0x2BF1fJ3zTy/9gxlEOFgP+HsYcBPQnf07qo1IpeODY/mb8qYXzf7NeTrZHoEv5XgeGnbug1++Efuv9SuCq46uNfkxAXEefmrGODcKLVHmHjKIyeFHj7OGqT0Qr87Efn2LbAasnpr6/uAS0Zitb7mBw6LHFwqVcm1p4t7tXCOuVDX+vn/rDOheFsJUadfRp7RDpp0uv3VkK9/9cvif5AocWz65a7IvqBQlDHS0BnWr4IBGZwEZHQl7JTHzlqBZkL8sWko7GAQP9yyZWzmjEu6LWcPQvBcYvltKbUMnAtXWBIrWdgGbd0dUlzjZotuapdJGMgeP1Xcoj5ETk7BbH29aQBLqcEg3l9Q1Q7JPecDAmDkmkX91cJvdD+QcNvqJbSbAUVbQTQPMTv77p1/zrCHQPiFwmP0XAPMDB99IXg87c7NP5JzoA7Mmbd4aKU0C9+0xKkD4Jzbbv1Z4XbAfN87WHt2+RwP7CoxmrKzjE6s8aGlPQDbFC+YNtobXwoms+8YoUEU24bSsWC3fDwK/NQcGTtWBq95ZHcI6AHqhrkgSOZEBjjBAxtL0ZBOpedFfJxyC9xdZHkid74MiLXx6xZ+tAz8W76aUDEeV8ylCOaeuG17V9wgLhqTDj13WI4yIRSc7civaf6IBI4un3ASMpkK5F9Xjtjkd2d3Ttbg1Xggvffqt9Yvmg3yDds2oUifg7ZwQV7w3CjegLgbtJzXDAedvxxDgRpS6c24kSHQS7MjkbXdp9LGJbe9yYSChKrPXOjEw+OHz8JKshnE7rg8s2/SgSsTxX+7qHoxf4z0YMMvnmAFUjy+zCGBEdI5MGDKUHYDuf/HPoHwWk8b9Umm+Q0Ha4mmE8EwI+0aTypK0qiJmY77hbHI9aY5XK2w8WgsoC/TNfbBqU5U2PcJtHInujhF4ls3b4PepHmDzWAgr3RAQ1HXDo2fSnxPYKBKboSFtMZyqkCkYI193AIAkJTY8YlT7ATIYsCuwpBo1d/Uo3mv/LDv4Vod7vg6WLh7ofKr2G5WfL0wyXSajieolKL10fyL2mGg0zlMJEidxDNzESuuXtPmzvgiBevujTSFsZnAq3i3U+jkGul2+0jSW1A2eYnfvJa1XQpqIz8QyPQx+ov87ATCWw3xlcK7QvBbWKdSKPaSS68eajgc5yHdiEc7Nc7K0CkoXMxqPqaIThKSiQe14PJTbf+cueV0HNqWnZfo4YxDbwfnS5twE0GXO/eKbQfDh9dO7huxgUcmJz/nYwghPstd0nb1bBImeDJ/tpDGJusLFWjmuHH0ViqmGoDMIiFj5kxuDQ7MK67exoDQR6mE13Pi+E6tmQPw9IUajLJsAGe4kMN9UFqjxPhwKj65QqoQSDZr91Jz8cpULI64jK67cpINDF1uLAiEO1E6llib3J4Bjqt7rvAa0XHx9i6VGPQ5J618rrq5KhVGLE951mLdgfrkgb1IpDeIFX9zQ8u4GpMo93hEoBYzMF2TY2IpKr3v5nLzQIj+s43Ho/NYL/XnEWFxYSMnsiPNwV3Qj0w8K5vBRazzL/q89wKxYZenj9u8bXBu7P96l53ymHwx4px5Q6EtHvwL6iFqNq8EmvNftc5QiPtb1VTi5Fov4c5ZlfOxS4K3O7zT69ErAHvt033UpAwkSvE+vdtcD94JFlz3YlxOU/R+FHo5FRHS+d15U6sJD0yPsYVQXeHUHfDIyiUTPOUPW7fQWkHL1HPp9LgVijm75ff0WgfMHv65S5Prj5sfTicc8E6NoI23lM8wFcSD4oV5RDp+PpmF+qFMgtFPJlnoxAif3eLe97BoHN87zCUiUOhHD9G4/NiWjGNbGLO6UR0oRLbI9HU+AAhfZL01iUbnU0LYzGw0rvgprfVCaBzWHNhpc0Hrb1aLR6QuPbM1gtTZtzCP4ytF6zovHt06ajJyVy6uFFerHJ4LV0eLfVZUIWjkFCy3t06i+/BK9JGQXKUi0cHU3YT/wYi/QIxiMuKi3Ab7WeHlRPAoUMrRQQiEcqfSqHrrp2gLDbxpMSVwQ+h/5bn5TAI7qubccd3V5Iqt6tS9ZqgZYhzv8caX3wROF4olAwBRxvTd/i+4tA4+sps+DkBLQtxP1oKq4N3nxqd5W+gwOxgsHMAAEs+i/KfDw8tgo25+Y7LpxOhb/nLFu2iJFIFm+w203LKfJJ9mrD8kBwMm7efEvLqTiJmVESuRQs6r4u3nhSBUIoLquqJQKVvccMeEwMwrWDfLG6lnXAehm3Oa5JRIJ3HzSZDHbAFX4+sZHHFRCG0oWknPDou/FDPaa/XaCoKKwaeTcHXHSCjXV7CKhT++3TkJCHMMgyxT+TUwzZg8G7JhyJaLz76zez3h7wO/Vr0uB6FQTg8ZHxdUQU3f7Nf16tD4o5l5S0ip9D+XPxcuHzJPTA6jKjY40feBRRlcOMS8DttEd+WksCCjp/umR6rA9K6b5eTSothB+hPZ7HaL6XwazpJDHeCdIJA60SHVnAlF3R2MhLQJF3H71GgkkwXhFyaonGwwy1N3F5VXHIYyfDlyKTCxQV739KV1tgoqOP76h2FFpUjt6iWxwC+qKMHTVaTzJxEq86bY5HEwla7186dEI4v5Iq/98y+CZ02YVpCI8MN7pUKs2rIDo20VJc2RGcv93/bv88Eu1/JVzwRywHLtjreEcm4gHfPBVk+TIKmZxd3Gb+kg3qyo3jsm9JMCt275NtWRT6bfrKgTU2FUjRmiXNLA3wysr+2YJuLEqk3r1xt7wDNg7IKLCz5sBA/1bLvBEeZUQJuV3R7IDpLiPW7qu5kJMlcKCYFY+yJhzaVwxr4HxorcxH3Ra4XlWVTzWJQtzNiWTx8+1AzWiPfIKhQBvtwldu4NBv//81cd7xWH/vH8/IHhUpiaRkJUoDhWOFFEKpqEiSUlkNZe/t3rcRopCMkJV52dm7UBpGoWiLhr63z+P3u0/+fD7O47yv97Xe1zn36yELPRsCdF+NPzfvkw/i6eS+UutEADaVexNK9Y7IuslgU+PLUrRoZmdxT4IEehZ1y38FlCODCot4q9Y8pPnIpfOtYBRo6ztoTr7wQSvVN99om7+LqC3Pn7FmE4GQrO8U2taCFtdVbb2cXYpOWl64aZRHg9RmRbndx+vRwc93rfNf1CH/59P38tVI8PfYgpeDVz1qdnQ2dztfh0afuqV6W5CgX3L+aUtJPbLX94r85nQV8Vputzb1IYHDNrnABHI9ClTlHhqe90c3sjJOBZwlQecR852xfH2oqAfV1QhVIZG1/B7zfGTgPL+RRTsAUHS/tN38kk585pp2MaPPl7MNS87GNiGWVGPLzp809Ol3GvtANAW2HSkx1tDoRms+zmV/33QPzW8MO/r+x1Leiimr8XSjGsmHGmI/76Kq0B2fC9fHQfvd8qLFkG4kpOI61UXOQKOZIiWlBXQQ2l+okcTfjg6Iuo/+msxG0R+NlJ7300H4s6JAi0UN4r/EziP+pQSdVQo8pCIfC2oOMtZPWHPRLaNNs5KVVJRdbr1ORzAcLOg/9k50diHpC3t7XnUBiuIQpXkqx0EFVb5waLYXuaQ+bXix4T7y7VGybtciw/abBawsT1tRivnrg1sZc6NObvbPvbp0kFvbbXA6qxbtF+fNNSivQ1z7hY0eLBJgn8DZ6hvbapHgKUVf4mgd2h307INyBgEK1j2LUZZuQc3ptYfWUmjoTH7+ulVGjPOX3MPSO+caUcLCOgueUk8E4rElRx6T4VQ3TTv0DYMLH/3dleuB2iWlhbpWUiA8UW9DEmsLAhktrjpKPOqq1AiyVaFB5lCE4fLmdpR67PRfbpECxFXdT/UTiYNj74onFuq6kZm9vUjOAKAH9xxHrBhzmtyWJzlerd3I1MRyYt0lQNzZ75VMT9OhN1UKtWl3opvhPwsORz9AnXekyxaPxkHSl+zeI0/bkYJDQUqFbCGaufMwh1UsDmpqViuIieeiKD69nj/lZWhs3+Wwz7zhcCJm+cntJpnoOE9QtUcDEb1Wcqk6rh0BOU0ridMC9xBiDSEtNFYijgTW7MHTkZC+dl3jU+48VPlJ2THFqBK9a86edPocBtMnfDRv6TShy+d+tOXvq0TkqNvBLFYUcLE+GaqYzPh+5fza5Wxai46Jfsqwo9OBd+tAX1AHoBGVUfvkjHRkedEpdNGWADLo0B9iWjEKenZtyDPzBprQeH7qVUo4fJB7ukLFtA1lBhD9dYsZ51AOY5XtfnTY6+6UuT2lFZmZzaVo+FQg3dUNdtJb6JB23vdDxtEeVBO2Prvicz6yPDDvvs+HBns2tX3knU9HyVnZjrfWZSBe9/Z669wIeFPtEFaulYm6bG98mgrKRPUflKdS9SPAraDWM8wrHc16LfDqKt9HrgJ00yfPImBMIt/JaqEL8coUrQ7fHYEkWuw4Jzcz5sAGVYmO+HaURXP2aDtTjEh1E/tNueJAmHXvo9btnehgnZvNXv1gtIf/+NwmRryslntmnLnSiTi8MmX0HSJRDVpLvHUsDubZUpKUerpRd4HkdreVlWgsWLRG8SgdLq7peiec040M0cLUvsMViLRe6GlcCB1SE/dYfxvuRrRtfebPv5ajihNFG2MN6UA4pXqgfNND1Gez8dAH3zKUUbfe9shQGMypPpAKHspFDfPKbyuhFI1at0admAsDRcuygvGT3WjhLMeKt0aFKPsVbejkczoYP1YUy7pTjWJ0WOYyemrQ9UmF/G35MSBiltMtFlSK2L++EmWroKPBI4HWfS4RYKu1dut31xp0+obw8dRJQCknvYbea8ZC2na6rMxMB+p31/7rwl+LHrFXG5DM4qCfJdjzO38PuifBqzNfUInCg91dsn7R4KrEnndmik3INs9gzqekGA3yEU2/GjDq6+DFCu7XgJbvvaGtbFOAMkLL3eQvE0BQ9J7WDG8PktfmdTvrWoF289s5Ti7SoI7bfOzaoTakWuEulhpcix4+RgMnfOkQPDw3VzfQijJGTcQ2aTPyM8goRozRN77OjxTPbe9Fowsq7ZlTRcixaRs5/DEFvlyoo69RaUE6kXIcO/iT0GWLa0MVh2kg/8NiUHyyB23zsfliUVGHeLUWv+Yco8IYi6ev1GI82uDj9Nif6olokzUiGdUxsPfC591fg3pR98CovYd2MdqnHakezEOB7yuDNvfw9KGdqaG/aOseIS7picMvBcnwg+tx2mLqE3R2ql/zungdClj/40ThdyqU9Osf+sKYg1lvXlOWkglBhnaeZeZR0VBVFtKpv60eabzhPHq1txJtDU+b27WOBKbrB4/kPG9HFw0O+LxbXorKL3l5RjL6eVZ+VPHlqh7Ge317xSFegK5cf/mK7REVlqmlKZW/qUdyeQuWq2/dQ4dC2Llak0jQLL9qIZLtPqL4fdokJFqI/t5Z3tfKHwGRQ12yb+xbUeQhr+OyErVoVfiyh0XLGXN7hbuxeVwrWi8q3OtNqEXl3O8mr0jRwY9PRWTHsXr0YO6g//qhWrRVgvPrZ1USFBU+n9q8LxnN3mXJcuqoRUmWN76+T42G6Nw3Ux2l9Sg5cmJ6z2wE2nGYi1/AlwQsFKtfU2aM8218wd2PR8lIN0PjXohtJMTqeExuPVKCaA/UJ5K1y9DULm/d6+/C4albbI5MQiu6cUXS3zS5FO1fPRB9aRMdQJNtnfG1OLS92nxW7cojRL4jsGZSJhZOrCEKeNF60PammxKtJudRbpqtzgdWGphWs+blEFPR4stSeepaB7Rheqj/hAtjTlhY7dx6pAdF6U/nJKnUo+OJ20m9vjTY6GHXryfahd5G9PWqESuRTMu7Pp7DcVAuseJ+WGgRavRy5O0wO49YZ8z0x7XCYY0ub81WtnzUuvBA57FQOuLdKuO6pGeIejwgYpnUhKiB3t/dVEtQbptOsj6dAgkZ6RMWFwHlz6435x5izL/HZsxixQjwTW31xqfQg77OjmgNXHqIbE7tynibTYVNT5bv0L8KiJV/bdCYXglqFhkZiJEigE2NqK3qvi6kyWPiL6Z7B+3Q2HBp4GAclKx+fn7SogU5sciqjSyvRa/57jbynKNBB//Kwq23uxC7RCr5KKM/OI368RgxzsVr3iw7QuvKRVTHO161P2+jXi5+pXM/wsDfQK2+V6ID0X9WHdXIvYsUj5jNSmyLg/BGt19NnYmoU/Lq17WJJeibEIvtbsY58ceabo8bn2vRy/Yfbs9P1KHiWbLd+A4idH2XjAyVaEQlIzqdhr0BqPS+bbJYMBkyzW6uuFDdivSkaji7UsoRarF607ubDk/JhZ4cx5PR65Lonz9ZylB5z0qe2IRomEmzluPuz0N+w4ZSl48VoZ/w57blqzCINf1dfvJ8D1qnc6pvLLkW5WrtDt1wkgYC0jlKq/7cQamHt4zUEWNQzNnFGSiOgr7lPqPfGmvR+biHgZNbSlAZ4bzPMSEihBvoNUsdaEQ94iHLV03lo4YDf+6W3SPDKI+VzzR/Cqq6tEE9d0s9cu599RKco0HaPMtXXwPQ7xGJ3++ns1Eq9+Mf3nOxUPEk7P6Fuhb0kTfUJKcwD1lt+W0+dp8GSnuTbsfc60EcVb3Ea4mRyFgrpfvsWyoIvWnbsXOiEz1v5M51XlaAGl4EHiAfiQOL/gt1JYz65ZE8WxffWIY2p6yWrGHU7zY7sSa7qAJEH7pq/100FR3W7LAzrA2D+XMyCiTjTiRqLvjULKAa8U2Ltl62igMIYVkWKliOWv9S2v1byOj+g6DCy+2RoK1gea2NpRXpCNqwNq2oRXYc8/cFOmmgZvB87XWxHmT2y/uuYEoo6vvuMFEyQYNrOQdCtF0BzTp6Log41KHTj7z1KjYQgKB65mp1chPaYTnSEbstAB2Xv16mF0eBmlw1js3JPUhA+Mrl3zyFKGoDVdbjKxWia9aKiVW0I3rXm0y2TXXox0G7i2Or4qDnwPHFtMEG9O3iFeGz+9PRNo+xiQPmZFh8ITR8fE8d4nlyve21cyV6OMbdWehAhNTgb3NuI1no3H2K5bdPlejB/fKbkfHhYFtzwCpopBslDGbONO0rRw8m12jO6NFBus63ZtgvDv2tKAq5zV2Aitf5kgWlY2Fx+lvpPt1e1LCGq/wgqRTVVVHjPSgUsGnM+9vysx6d4/jOIpBXjp6Jes3I5JPA87WMiPz+VpQT5W4R1vYImdvrtIt+p8Gg7NuvohNP0OuDdbWxQuWI7dKG/EJJBhc7XWRf34rmj7RrHtmciiaOC/p5qNGBxpvsnLW2AYl4ppgdfVaNRNneq/I0kYCzWIyndbQHvdOK3N5YGI9YJCvzV5ylQmVrIvnojzpke/zhKQvXO0hNT6v5+2cinD94cce8SxYSbGtxlcnMQNNX8jh6CsLhcLHbgTn7RCSqubf8gVgd2uzwZ8HpdAxsLvj2pS44D43MXy10TKpG2muqe59OMOrozFlx3Qu+yHPV1Q9TVoC6xsm/j2QSgc36RmAy43u3yKe7vVQzHt3uKC/YsYIMu15WP7Pp60GX279NByeEoJgjH1ePBlGh1eaYLnG8BfGKDmZE5FSjKK/N+zmraHDr/vZbg03tyE/2l17OcDpSsu+Wd2fM1b8y7u+88iEV2apV6U8+zEMR91cp/9kfBUP9G9u2Sd1DZZfpsrM7qpGS7YmyA8ciQcyLs+jh1TJk80JK0yOGwSU7Ki5MR4Dd8pmvR8cZ8TikWWtwtxwp+AVUqAuHg9V3i8d/JxuRmWpOfr5kMXJXOqwmt4YCDxTNo5fJ1KL+jVQw/ViA3skbLjy9Q4C3fmfcDGy7EVFMbU58vApRHpY3bBiig8uzqILftp1o2f/9NRne1E6XJMAXHcen3HNPmLzz+ktl46dRkNkV8mu2sIfJWR25jBu/xkIHGnOUEG5kcl8xv1VyjO9gRVXnHh3DNibv3tNf7BtHgtd7ndncT+Lnmj2NSxczpIDcnvP2TgW1TK51g8Pl/cUwmBj2+hyf1c3kX/quia18QQK/272dllXYzgih97SrMSTgG5Cs92KcN5n2NzWRT58gQs1l1/E/L2hMfm7XI9Mq9VA416lKX69azeQrjjz5eXhNKLD/cN51R66dyU14Nd66aFGhVMKHXUAX29N0BOKO7aOCPnrc97mmgcnVnzVmxt4kwDqCyDydt57JJ7mfTdg4x8C7Cy4lq861MnmbmvTLglgKdM+2vhvOx37mi7W1OjRFAjK7ko+JWBeTBywGZffqMc53MVppl78+ZnLyuS3ytZwhYP/O4PDdW71MXqh2S/qgDhFIt9gm6+bx/odiJ15ejQ8Dr4fcrC5OaUwudGhL3SfrEGgLio63v4zfd1XDfoMVhpHw+xvV2/xOOJMLX1onntMfBS7Frn/f+HUw+WeBT/eM3GiwOrdGIuPNAyaP2lP2JHEmiOGH7OWa3NieRbe47zKpFNA9fqP1XnY+k1uGnOG7qxgEPlI/dQYO4riwHX40/iA0DG44OY1PcLQw+bFnff0pOhRQebpeLpCO84q7Y2cxa300nCLcSbTSBLy+XN45aHsUXBhn8zXQL2JynhS77xr1QWAv9VZ/n3Mzkyuybfd22EyGYJZAnY9+2M/6Hfn+MuPRwJO45cr8PZz/Hxd/v5ttjQHFzrG5MnW8vqj99Y/KChIsaGm0BFOxn639VsbSVQjwNTpTTWEd5q+duspKrtNgvC+5uvASzoc/JkUyObtIcFRBfu8dFWzn2soGB66doXA4d9UXt1/Yb7WZVQUbdcig9CqufNNhfyY/09ISsLI5FvgNqO+tlHFdi+9q46luJkIRofmciwt+r59G7irau2lw7+sVnxuKcUzOsaH9/UxmBKx/qulxNwznfwtXLX98LgHs6s9RGjhx/q/XsfBRqifAofHlnoIZ+H0jrp8Wvb2GBgSXGPHNs7iu+yZ28HPfjga2zBVcv6Jw/rwPSjks50gBKt2vXGlVJZObk3b3XxgJB1JVqC47ZymTN33jX/NEMxTaClRXKjlj/zQ2cH6JXPq/cOwn51fw9jF54rWP+T8DiUAhkxeNf2M/q+1yeLNOmgInulmMK09hO6+uXNlweZgEewZqIyRf3WHy3NP7GiOSw+Gr+ukfRC3cx/wukL8XhxPArUTVdwcP9s/o1uca2X9IYBUxdEpTA/dP35AEKn0rHRycvrd+VsR+0E0b3KTlRITmmIoLmddwfwv/UVA5WhQJ8lembLe64P1Pty88Fe2iQtVl85t2VFxHgiV71244yuhvxymfHF/h/VMvmG6+GEkEV8e0H70suO+9XOSdiUsNhjQTwX75v7gvDbrF23qzhIO5AnehkXIdk6se/KJwi4UAN7JE9VxI2P+rDk89stMlwlTZ41Gx99iehsw+2nvHUIgyM31TpIP9oLzquuGrogjo1q73sJnFduZLLVbuayBDeOmDZ4MmOA9PLdfQnT8XAZS0D39jDLD9Yv7lnulxRHhIOO1+TgDn4Zhpqe2tZDKYFRtGfPTFdWf42fvRYx06lH9YrfzmA65rWW22YSVpAsQu05on2uF+aPx3TyIvHxWGRirWCwpjO0WnRutK86jgk9qxSu8FFdtTN7gqdlM0sIx/CN7BgdfzaAVszXILht0rCH1/J2KY3JpP75JXWgykle4YKM7B9lx/89IxwZ0Ez1JZm1iPYftpXg9W0RYoEFldOWR5IoPJOd+HCbi0hsKW1eS/Q0fxc6dk6u7pt0bCQm7I/np1zCc+6KwNiibDs5P2cs3uuD8oLFfOlP1Fhm5Jmkf6nTAmJwlx+uYYhIPYCvaFx7+xf9w23vcO5CNBT4kIDwd3LpNnbPVuXtsRAscuP7DZ9wbnyYvyymIDeTpjkLfX+TuF+5Ve9LJr10djoeVigv/OGBzHve82LQvYSYFj8b6dP7qwH3Jndlz0LAmBQ8ZGv3wn8XdBwnrtuxuBMXBJqknZsxfX+8fbw89WFxCB45325mPl2M/mrTdMz0hEwMku8PJ5UsDkRiFkJ+nIEPiy88vtq//kbYwjK2/jbcY5Qvzi64N5eB8zrQPrIkeCYUSgslGYrxiv56NuWZgJgZmrV/ySJrCdorZN4we8AyGpgBL13gjn885Tru5Exvcu8MWc30fV60x+ZCtr1MEiAvDt/HQq6C32w+WHrMv570UDZ1tQl7ct9puRJty7GUqEreEbFIfKcb+yKtvQFTJKAfOJYzOWt2uYXOhElW3fsnDY0oDWOwpivz1OXqme18qoR10dDtFoHK8bq7k+Z5eTwKdJ1VbHEefVgyx6usReKrheMDtS54bt2bVl4sLpWsY5NK9OZtYN5w/JIr+7+Xg0yKckum1xw/0/fCO37ej2SPjQsXarZ0sdk/9NNU2QpRCAU/e1FN0S98PvZU8uqTPmnEELUSmPjFAmF0xuVh68xphDlLW4uyk4z5PUz/GSWmjghtwMlqnhOIo7D584zOhvFrNwm2c3Xn/f9vWvH1xUOH5Mu1doL+Y2gVwB2z8RYHyhM6AlC/shJa59rIQzCKb3zu+48h5z6bh7K9/1RIHUZNYy1hns/2u+ToJtTtFwcfFRHCps/Gf/QcPSiFCQNfzqEZKF/TYo0E/jjA4CC+NlKkplmMv1b2MRu0gHAba4RJ0wPEfRY9S6yiJjQTfV/+lcHM6f80ExYXseEIBlOtcqYAjn+avI9ofHLtDhO0n//KGbeJ/C+gq2O9URUJgvokpahvMqI7GTRN8aAT+Sncbf9eDv9d3Bt33JjHm1z9Cpe1YhiclD/amvG8iBoFqZZXJWANvPK3TazL2XCvGnHNo+/fBk8tWyuuzRu6Ph0dmoU+efJzL5WHfrkFNNJHCt/3bk3D2cbzwvTeRDeahw2LfHoq6ijsmn/q6bkDWPgpH9y1U9svB3SjjM+YThFyIkrpI283XF6z0vEB7UBwZBexNNYP0nPCc8VB/onNYkgfX4lnm7FJy3xY67SXvcAqHdqH9mRxr2887Rn6egm/FdfpXW2N1zl8lLor703BAKh5B5qSr59ThPOFOGyiMfxkDNj2SNY3J4H+lDsxosx8mgMpzmHH4a5+E9VZ7ynYNBcLm+oq9TAe9jYqdzTAuRIMx/p585F56LqG8+H9rJHQNmViv3l+rg/K/5zc4R6kOGrR0duXeIWUweVCLWZi8WCt/mJYQqDXB/eONvozE6Hgu73gT8LZ3Bz4195HOJ4k2Bib8/P2jvwXGRl+kdb9tPh7Btrqbeu7E/3+yeDNZkfEciSP6B7vU4//uCBHb/FiPCg6xyt9FwnG9tVmWJsxFkeLBrnV99Gp4TVp4vW2cYT4Q5x6FHVFvcV/12VIvYGTD8cNM6xU8F+4HvummCYg0BTjie0l9TjfvJu1T1/faXaOC70tjg7VVsp7Lrnta0lAiQ2ndRXDEG5/m68PV0U5FA+BIUMFMzgvNKHSkbWP2hQvf1jY3eHTjPZZrnI4O+Ms6/kjkvvJK9mPzJhX1Pv0tFgvY6k/zUEfzddPs4xVamTYHE0vS+ECl8zjKbpfqsjQ6BJxGtK78NY/8kqTzLqLgaCKzsE7lnSrE9W3To2yS9KMDD25lzL6KcyWMEzq097BYBN3UN3a2P4ngVXHvvSOelwdXVNq98nB8x+aI4sZLlYQhQsu1zM59VMfmlzeIZXuPhYPFRr035n3PWlfbfRWPsZEhffUEtB1GYfOfufdwdATGgMOD+Y/wk9rNBsdpo8bVAsHvkfz1XB8crzrxnTzQ7CV6PuOcOK0Qx+fqd4UVxywmgc7X+0po6HEdv654zx0rJMOyU3qz0Hb/XfteFASNDGuwIP/fK4Z961JAb/pg1GACqJ54i0UVs/8+MlC3eh0jwZCGw+8gCzivxJiOO4hAS6JqOHDwxj+uxS5xEYXtFhdo8k90B+4lM3hn95NdG6wiYcR9bmBDHeSvJJzYVr8qYT3L4w0T5sP1XdNLVF0NjYMVN5TxVPhzf2nrV+xn3YsAprLwehvC8IZ916xFVJwzeLt+lHp+N1+/85HTFJpkIKymCFNnX2A8yj3JqJQfJMPN9w2K2PF6/S+/bx5QvjPpVm+d8ZIbrXcNh10mV0xTYiRqdTrrg/HzZts7Q6Aoddg7LL3oL4n6YyzMv++ERI09eB45queD41vxwFfLOJsNEccdLbRW8z+HX1rZmBBLQjl/uuvQK94Fiuzu5pbeiYcBjJHV5Mu4z31O+SqnmkEFhQmcnOOK4pK2tFzHuC4McxyYVO1H8XTN0vi7YfY4GUq9kn9T/we/rcd3+TKAfY67r7OobeYz9s/uKtvWrEhpYne3axn+8jsnPeXRXsUvEwCmdLSIvpZKZXCmGfeFwdCgcELv90sAQ21lZZMHhfyYMfpQHPTP9Z96oGlK2zH5LhOeP1c8ER+J8GLGcokXXRoE67aLDFUVcv1N7Ury+9MSCb1KLnLs55qqXgg4duEAG9uHvKy/tw/YTzoxdTkgiAViEb85uwfwwrVM/e4YI1d+HB3iqg5hcmHeerz6QAJs4uo9Z/NPPN530Dom2IcGp8bYirZ/4exRVq+WlEEMBX+PW/Z9WY/97ZvKcrvsYC3GcRL6gTTiOPtN0bluRWPi0xpdTRhj3jXXavfWndKOgaePQb5tW7J9L7dI7T74nQOKQgp2tNj6PJ53RYNf3jQSnPYk75rpwXHLv6a91LwyFZrl918aEcXxb6RPSJW9JcJzPdLVdDz5fE2U/C5qdjwZzlp6f0/vwfD66zGJ3ZkoMFPEbXlT+gOu6mbyrc3ImEj6rupO2hWP/zPYp6LUJkGCHvy/H7ke4zxts2UvU5aYAxSh+hx4rnqPYNrJBW3AUJPsfFOwlJjC509tScwe+aEiW3hsYcRX3AdOfufZ/7EjQOnma/XgOfu4n7pDtnmMUiBCy/eS7HvdJJYuOSGudSDj6y9R52Sh+7vUPihxi/gRImc5+MbkT112ObEFuYgIZWsSShob3YPuFrzjHDvESQOiQjO7Be2VM3vH6t3Z8YTikFXv7KUf8M//73c7pnybAGlt2JbZ/znHixsG3Q4ajgahgl5SRiP1s8XnAYOR3CNRdPqVv9M9c+uqkZgNQaRDXGFMVa+PM5O5/DWyuHSVCdGCSj7g6rus7usbj5A46SF85Yph2qAT7QTbWOP59EGwKMoaTxrhPbj+lpWbjFAC71ga2lv7AdffiWpb8LUESBHVlS77RwP4f8dimNn6KBtO+XdwOn7CdtuW3LSVj6KA6NGchsAnnSfbmPvH65zSYN/itPbYujckNP/ne7PgUAUedmh1WKeE8zyB7vI3+QgDPNec3OQzjeglPOFthZESGd6xCCtsvVTC5+YMPzzYdi4SUppqO6TfYD6NtrN/7wqgg0b3ylnYO5kUSSZr1+TTQID1dYSSPn+t0xNlQaTMFlt94/1mlE693/J4ddd6CCO/j/FUufMN5Ito1fNAhkgaTC0KqX4Zx/T6qYl8pxMM4h74pUnp8GO8/omSce042EvRfiyWZKOB+Vf1zb7Dgn3BABYJ07jYcr9gMy4sHp8Mgm93FjaaJ8/nKn3B2UnMsGFcIclkcw3llV7Bv8QgtEC6rz2/f5o3vr8LXWnDfsopg9KXfjuyl+J7kSFNh+hmTYNhql3pjPAG/77O7F4OQRzTU6/OrFOzBdlpKbdnJ+YYCs9WBY9pS/8xvq7t6areSoLhiFV/izUwmv7v64k8P9XCYzpXqllXA+ROU8zPZFVFhr0a/tuIfXC9CAicSCavIMLkR3WvTw7xlR7ZwqwYFThleSMiuwP7kOywfYllKhKaj7XXdqq5MbuPv8dWJnwBuUOPPa/bP7xefJUfb+mOh6C/f85P8JCaX7hNP7AqIhXC2L2WTb3HfXnDe/VhYighP2X7bVcj9c46IErtUf4kAwd5pJ9WE8L2xcWPhYDZLDBTe1r/y8hhef8Jp++8bZVT4NLzoslwZ77+++HTrg5cE4EgD+nk2fF+0/dL8ik73AAjao6uolIXjontXd2GCTIKBl1ImZYZ12E7SfNpsDwFCYz7XtLDguuso+eCumEUF80pxL/DC/X/tddmHW+woEOky2KVlhvPqVmodd98lInTWD3631sP7z2+XbSOrR4DHXKinjCBe/+O5fOvMUcZ5dv/a64PxuA9QGvfl1KpFAI/F0Mjdf+431N9YuLj8CYVK0fhRwn3c97bsDTVqEI2AjALygCYBz1elb0u9JxrIECT5wt39LM7DFoX0VNcxKrheWTO+UxevJ854acVzEUHnj4XXTgLOk8U9ATTSBQLsL/p5uvwutmeVz5Vvroy4rG3cFXXmLPY/P6fwzWj5MFh38gCBsAvfS8Q7ch97rBIEGa/cP0QO4vntu6J5zq9NZLAS9qi6G4LjnhA59kj6XTRcbK53jtqF/dMuEDPB200H+86Ju04pt5h8W1uJVYUmEepJ14SNZ3ActfmX9dzaSYc068gVBoK4rhe/nRR1oISC6033Lw9bcX3dSvYPPypOgMINF/elVeF7PDU1dn6/2VA46EqsuvQe++f8uQeBGzoDYHR1bMD2f34vy6V7dMoHMM6/GavUqkSCmdy/jLc11S8G1pt6+Js9LsTvpXs6M+x+AJy0jlrhOYL3P5BjnohaSMC6Jnm2KRTvLxdutcHrVyikC0y47tLG569TfIZXMlQY553OlO4XXf/c40mczuVKpIL7IbNou2R8Tkn4LTimoBsB2/Kl0x974/XFg/0ii9FUUO1Vqat4gPPkpaSa+Ew3BUJqG26ceZCO1w+pq+hSwsFuLlPygzqOlzaL48U/shRoU83b/rcV54/AeP45zXEanFnUtvXhx+vtzcUsYnwDQfXKh7EADjxvSCcGOMK3WBC8K3tDrQv/Tvd91JJt/84wIJTf5pIXwHFX9DiZE9kSBnonLdKl39OZ3Gv7ukNruaJgRkzSy9gwm8mfaJmOnNoXBq/SHxJW/HPfaC5isanZhA4OFj+iQw7iewxzpOp6ICkM+Cq4y9zl8T3SxH6uhs1i4TAX4ar1lR33n216tRcDpykQpZ5ifdMI+6FGD+W9TadDooiil94afK/1RV71wdWQCLh8bZfxHT38HW+SnBa/KUSGXaxXWU2T8fsW75JaS75GhZXCXztVEnAdOZL+xIk5U0H0jEfy0ZMBTG72WkGmen0ANC/rjvO6ivsbbfrPvYPcoSA8/Cy3O62OyfetqOyUlCfCyMmv2mftcVyORgv7pVoSgF01Vs7ICdc7MjTa2GQdBflWkzyVn3Df7i5TqTIeCgC1GG/1oTo8DwhrV1E/bKDCHIse0u/F/u8+8+7qH24ijHeJKZfX4/uK1fOTr0TKQiHrmUR9fs9VJr/upb1VLDsG1ujueftOGPv509WLv88ERoBk78Zv727g/mmyI+ElL+N7PV66qnIjC/abftOa7CMLJHgnWTvj/QX3zzh9QdGEF2QY2F8mfPaf39lXa1ILP3wjwpvzh1lW6j1kcgGCVuCrrlDQ3a0wV7Mb78+f8IQkv5EGDnn6Xw12/PO7/57moxuUqNBOnVqwH8XfWaB9C7zXFQkDv6JO/27B66U2KRTPVkcAx4K5c+Q7MpMLPnV+mtARBBW700+OR6cyuW7dZJ/0yjB48EhImmsB9738CqcnJHsKJCQ7BWvN4HqExV0X7mpQgaz0J8nlEvbDfM2Uj3wJCUYOxWz+FY/96eo0Jq3rFQuyzTRO+Vycn5tju89O5VJAXStzdIc1jkv1zCePl+x0aKE1Koe14HshfZ3u5+0cYVDmnCO1QhXnz/M3Bm8bbSOhNNfmspcNrgt7w/e/1l0kwIrETuHFGtxXN20YXnt5MBQa92wMzw/E+RbaHrZmU3kAvBXcLCI6jO9VHrEYDqSeiYZjwcEJ2wH7c9TQLTzlaxjkHTfQ0DTG+ZkeVO+b70kBiTZPy4vfcJ9k2X2bGzH6/2f76ubib9gP1K0TQS+dafBV+ALVtQ774RSEf5qcoEPFmAdXeiSuI6u9SuU9/RFgPCDkQL6O1+9uj7GxXUOE7P45o6AveP+MokWaH8MPeYPUM71TOI4/12c/TV76//Now/yzPNyXUtX8yvK+0uFF+PfbL3hwXnX5F3dFXAsAd5O3C8um8fsqJBl4Sp+JgGepoRmFYpjn/5yyFa+lwur9n8/cSMB+aJWnBvu7kOCVzc3AdRJ4/WNX2a63LbEgolkvyvIbP7f8hRFfYVEMeDnJu18uw/WVPVPfEShDBvUT9nIG07j/FI+GZcw8jwHfKtaEgWg8r653Ujvf3RYA4l1qf6Kb8XPDMsYDNwRRYO/Kn/VT0XgOORS8+qeJNwEibIM4BKWx3/KvhrGtHqTBkwHOXAlFXC9f9Ta3zf8JAG3Zcv+tbXh9ZJZpR/4XEtxl7RGRkcTnrO2r1YyM1oWB9mxAu1U63udVlt8t2jUiTCcQvQ0bcVxkBXmL3Zb+/wDnzIWywH9+Z5Sj61yMIINd/C4Ty6OxTP45P2Geaz4EjvJFHddS8WHyxYWV6862h8A+vuKHxuPYb0f49919qBEFPyv5Pt0twH7rX3v8XiUlBkJSCTseiuXh9eqpA26/goCgaOxgSPnnHsDIlWr4OhhMfS5NvyPjPBxqOWvXo0GG3wfeP1rhjO1nObMuheBEgiL2v7EnEnGeGCl5Sl39HQjjvq/Ot9/F+0iKh59sf0wEKZM/Uz12AUz+07co8MQvAmyeu9hVJoLvCU8bNWxmF4kC+TexnKbJ/9wbLBg9jd9IB+XmwDZjDtw3XnPe/1hqHA30aSnxtCwcl+e7lqUclKFCZ0s+0fqfPn+OrfWIvkEYcJF9L3cE4O+mU4uf1onTVHjkpBjvc/o+k78XHHq4hisQCFWrN5v04nyT2Wggp7ubAuN1Rr9U+nFf0nHy7SXl0cHu4KJJ4V2cD2F3ClqGDULBe9Jt9eq72P6G50+P7d9MAu3iEvFWDWyP9jbX8cfKJCCEWwwHjuL89FXf0/3Jhwg8Emds4k/+c343PeQmN02Ge22r+r6fxvXYYLzcdN87EijxSr/P+uec2yId0vZXlAb0v3tuyB3E849B6lj69GAwRImJWV7ox3ERqRkRX2MRBp8Eax+G++HzfjVNXlFVKhKU9DU/bPXHfS89QGDsrkkMeO/sezmwFZ+bduRfNzhnEwyK3S9G7itHMDm3l5N3Bksk+Hbud0r6if0zUXOzoqqGDI86NnPs/UdnksNz/X7JnWCYskwlr//nXCyB5PpPK0RBmYhTKi8Zf0e4HmjPrf8RBIcsWh7cP4Hvr84ryb38pRcMc0MrAjxOYb8lHd1XMVRMgX4pa3/vyjomv7RK8MIaxnl5iIWj3i0bP1fORLKw4Hgs7Eh6J/DqJd7HrDbzhFgtAXw+F5ztS8H5c+FGw46PhrGQX/P+/rQOfq/bZ1Al+SwFRAurNthtwvu32TjfTtoUAovf4s/XhuP1n/YoPE4rjIFlIsJ9jkl4jppwfL81cyQMdkfVRtzSxvugA4VKA2yBIGdvcmdrHq7fhcQsdM82Ch5/M3szZYXzLfV8BVXJOBYCEqXHdsXh37kEtBwkdZLD4VhKnFZXBX5ftddhsp5yjP5sJV/B14jr0fiMpHrJPAkeH15l46CC55DrLvebLCcJIGWp2cN61x77uWff6ZQCApRdVS7incd9wITGfd+vMQo2iOk0d487MvktVY+aVW3RcLD51l95H5znLN1FHEKMflth2JD+wgv3pbNNdbkcqnTgP8m38cwt7M/N3y7dsVxOgxd5V9PrcnF+XqnK4BT3I8AJT82WWEV8zy8N/XVT4VHQ7EbhJn7AdjaMdKwUX0+F7HlBQkIn9g9v3YMiYWsyzAS1mAx9wXl+1PRvZXQCCe7vmM2fl8P75Fml/Rlg5I9g9BfFWyk4LhWfLxDye+lg/t60jnwH77/xbEeIYVwI3JRTSFD3wfOPhYkPq9ypAOiK4Lr2wRP7f7N0rd73ZRTg/zT4kDMc2zM3tChRkxcOFAcxYs0PHMflB4oUrrtHw4edr//wBv1zXo5TP1m0lwS2WXP9kdV43tOUOaE/9YIIloLjL9/L4T7wybG8y8WbBMpBHljPHFaP/BV60JKe+TEvesbUMzP41od+u5b0zHJai1jPzOBddXsPLumZdyudcmLqmRlcqkZCZEnPPDs/psrUMzP4R//WkiU9M/f8D6xnZnDZUrOMJT0zi5CQA1PPzOAB872uS3pmtm+NWM/M4Grjh/7TMwuGbO5m6pkZ/IPXlrglPbNYSXYDU8/M4GORqtQlPfNYcutbpp6ZwddEOpgs6ZmfXFBPYOqZGTwoROX3kp55ZaHzbqaemcGPzv38T8+sR2vCemYGF4vx+k/P/ND74gBTz8zgD2oPZS3pmcP2DS8w9cwMfoRl++SSnlnMKqGUqWdmcD/ipldLemZKN/ckU8/M4D8lJP7TM7uvncV6ZgbPt4/5T8/crMmVztQzM/i5PDWFJT3zVKIP1jMzeEvco//0zEmtX94x9cwMnsW559WSnrnU+gA7U8/M4C/vvIElPfNA1JoEpp6ZwQ1kXx5Y0jNnuxr6MvXMS/F947x+Sc/MI2O+bPT/9cwMTn+nkb6kZw6xj5Ni6pkZHA2ONC/pmd+wf8V6ZgafD9b8T8+8u6OonalnZvAGgSneJT2z8w8DrGdm8P7Zmv/0zHz25RNMPTODn7ecHFjSMw/V1csz9cwMPnlbvXRJz6z6VTGJqWdmcNfmhUtLeuYM7yp/pp6ZwTmPnP9Pz+xic9SAqWdmcJu1l3yW9MwrKquxnnkp7qGRgUt6ZrcpZxemnpnB0zMTppb0zE9MhX4s6Zn/B6+zWjF4nEx7dzzX7/d+Rka0JEVDRSqRFU2cjCgqDRklUdIiaSAje4/XJtl77z2PvTKjUkahJUlRCPm+Hp/H7+f57r+ux/24n+e+znWu+5wby5Yx/3nXgCVX5HRZKQU3fZhp8qB3wLL/h89XdwQFy5Fwy0XWw3uFCJxeEFxUYMPAP8dqK3Is2pfwkZNPd6XJUzAqOuBolFzDEp7eH3aTa78X7mT5/st67sUSvovVL2e7ChXn5W+Wipx1WcIlbW64rm0IwuPeit/1pOuW8LtD+3grGsh4+c2YuZVVyxL+sn3X/mMKDIzbd8fZVjJkCW/yfzn6PdEXPz9Z+TiW+f//j19b83vVs3QSlj+yo9dyNi/hO7z5n0rVkDB37Lzd6gTivBXW0xvDNjAw9nDSVtHx+iV8oaZlDXdYAO7tP8U159+5hBfIHj27x5yG+2vUy6X4ypbwqd2pPbf7fXCodP1xds7CJTz42MsNjUpeKCWkzid1l+Ansyz0l18mA3+72s2s4Xm5hH/buCX7rxsZ1Y8sLmrNEzzbbHAbEtpJw4znQdplV4g4Od7r1lm+peAKp2v+2wajlnAZLbla3wgfNPxrM0NWblzCT9nSp/N9SGjsft9ZdgXBjwffnFLqAgWR3GSspNi2hPeUldCDJYLxt5JEy09Jggd3G1FR5VtkfDuUZpH4uGIJL9MzqRjK80PDOyKmElbE/rvft78WbKcjW06EvQm9iYjz5F5B4Yt0FLrfPmE+SOxfN8klesePjN+e2c12sdQu4WflAsZDoj1wsiX3lfhi8RKef/y1iSOLDyZ9K8k9IV29hD/yWSdpz0JCs0sjalYUgv9Oybt5Jqpk5FX8PbTpGxEP9kSGfTP3wnXLDD7kqRA8oPhyjcE8XzR3nH14eZyIc+1ATNnRWioqk0/0vjlN6DDkr776zA1fdPdNZgnSIOK/6bPdPj6EjA/5Qx/cWEXokMvJ4qp9BBVVs8T8fjwl6k7/2uXcYpVglIo+LP1hrGsJX/0j7K3UThK+CVs2SzZpJfhM73zOw0vHj+TlW1bzE3FuefuwujCDjvolVvxqffQl/JOgKF+QSACe5g3zkOUg1qvvuSmZbO2Bhd2xPYsfA5fwv3/K7zrEBGId66We/DQintN3WsxDH1Dw4dekelZ9Iv7RlW18jFka9uuq9F0wTFjCF9gdV1o1e6GR4eJi70Xiu1FOEQnqzX54e/rF8ZrDBB42wLnRPYCKzZ3XxRseEP4w0cabtHuOit/cVB7HR3kv4TkzHx3TNHzwqEr2bPE8wU9vU4KjGy8Fe3jSVnJwpy/hJqu76ze2emLqQoHR0Q+ETlbYSRZoiAej+6UPqotfCb+SfHbNzmYoCK/bDLrsDyTyyKbVsOiyn4ZZft1t0+0EDxEfW+/ZFXii9rH380+/4BJ+sHTHV1u3QLSvkZa16yLq3TfGund9NhnFecRE9UsIno9s9dEx3eqLx7aOOTk1Zi/hU1P3bu3080S9jtTwR//R7YtfF3jqwui4RujOe+0MYh8Dp/JNfv0eeOLugUZ+3vwlfJU5567Z7574ZVWIS/hHIs779NqPJx3dMHjz2cBvJwg9X/5y4TG5JgB75V67/Dhos4S3RA/5aeeRsIhv3tj9E8HDWeHznCvjApCxqbrd8SrBW6fIcNwTLzJqRjju6y0h/OqokGiH5xANW+PvT1wIq1zC/XYbmb5c5oOJn3GL+WqCNz36kSMZzVQU+DnMKRhA5MtC5dyv1BIKNso8uapiTujqRPCu+K1H6PjlaYputTURj/SA123jKuY9qNq0a9ya0E9QklR7g0EAdipceSRmTfj/wJoIkyEZP9yh9kbSrql6CZfXcnq+m0bC/s87RIIvEH5Y9tHW+rCmH27RV9z5MMFrCf/OUS315rE79o7fXNFBI3Sec4qbl9LEQHuXSo1lh4g8pjwzvHSW6W9f4wbDVygQ65Xrcuenueg4fV7r5bojBP6x8o+rzAQJF78muzYlEzyYpXYMFXC6Y+p7Q7l73wh8WaPxus+d/ni1IYeN9TvBv+Kk9tqWWwHok+oYCjkEz93cLdqFvl74uu/KI89kgre9RXqhnAHueHkP236pIgJf5X6dZdOdYFTyPxKu4l21hH85YNZZ5BeE4XpVr/6EEPrJF5/yOpBCQoZOuL5rL6Hz9L6mTP3bwbhjfPzWqSfEPm1bQpdHVfjijy0ShyjLCF3p9A4HB0v4omjll0+fO4n7OotrrDvimTf+rbTpHt8bvoS3KhYO1lLdUB69zlxfRcQvefqzzoMuOpI5XrdMTNsRedTNYQtQCMCWsMGrN989X8Ib7f+8uVXphxlGRy7eiCP01uP3bY/XCjoeziLpVpcS+gk3PvR59zl/FBTQP/QwmbinGgdvX9L8RcbRhs3nnt4n1qfasKfVuLnjcx3+NZsniD7h8KNdHaNKFHRJvD9nEknoNuwaC+WAtRuO6zmOy8YQPB+QmLqCHXT8q5re0NEZu4RTdSY6bNf54ImsF+XimwmdXPGQKPPLDEThhBFF/T3EPudWzimyGFCxp/DEXR9jQodnM0ZK979xR5/emZdte4l9zusc1FcGCv4ZUXM+x0X0RfPkNWf2cwfiIymV44UqhP43NeUu93KiIgv7cFYUOXkJjz1xqPnaJi98avmEv0yD8AeLzfzHhkaCcMKpeLHwO/HdmgwBC5ojDV9UmXw/doDIy1Yt15GW48GYepflrKMCweezV6peSsx7RKBJ0ONBDaF/wVnXA/ObyHgvaf3DIR9CbwciB8PGfanYmPzepSaG6BMWLq3brPmMjEf0Gfn0q4SvWras32iiQcFJtruRznIED0YVdqGSlSTsynl2fEPFf/zk4OzxaxYM9KTEan56RMSpaCTcFhPpi1rHioUlAwmdWz4uDz4j4Ib6lm3jlf2ErloNV2jqLdBR63J7nWMrofPOz7H+7pMUtLl4u98hwmEJ9/ng0fN7hx8uSIlkR/cT9+aaL5nsRcdoeJAW0+O5I2sJD2iWctoY4In0MA2+qbcEPwvnqUmlj9zQ0EU007SQiIcn7rnUNgca1jEsM+N8S5bwvtImwbPWviguGvrg0kUiX3G/I8yDeRjYlVzwwelu7hL+PTWnjCXTE8dlT2Ulvi5fwkdOpiQ6jPhguOL9FmlnQld/ckvzhtmpqMD4dDgNaEv487cpXK2ugeiyXn1mxIjguaZJZTj/sRu+HqbYpKsQ+arjGzgQwE5B/WDtzLd7/Zfw0CH9vJDlJDRI+2C5oZrIY6NZ9zX9QiqaMH41SP0mznUqzb3nhCYDd2/V+WD2n3oMO/JrPPmNKw7aLoDgPyJ+45RoMcdTFHy9U65Ld5bQ1arkUM58TwrK2Y6dMpwh6nG1tjqdbZCO7iccD7geJy/hfH9r/26/5IvJnalzH7cQuh3dojv67CAZh8JqvQV5ifg3Nagr/fMKRIP605kHeYn8mmxSSUuIC8TNM8L12Ev0G1UrDuXRVbyx9537kWepxHpwGLO6HEFG58PnabvfEzw8lTet2vaGiv13/BdTxYn1WrpzE5G/aNid/4g7V4eod4exM1fkjGmoWP/ptpEVoc/u4wzNE/eC8anmShan1YQfngNF8bFcT3RZsW5E2YrIb+BMNL9jKhXZgnIHj8kR+zx4qGWiQ6JgqE1Lh8Ug4QN7v6tlF9oHoDKfUMzyiP/429rIHQfTqKimKqGA5kRe+C+MbtR66Y1SuRH7TQSJe61mT/7qjhvMvKd6NNUsEOedW6V7zc2Zjppuot39xQQ/B0tfGQ4WMPuWLe7SKw2ql3AOi/FK9q2BWDR3Q3BgR8QSThrLnj4b4IXyYecHNDSJOC1qujhdTL0xr6bs9Zn/9Bvkim0XUj+RMTpt4pqHH6GHmuJLzwKq/DF9p9SNe5JE/W5KjXP+1RmEux6t2/vgHIG/Oxd3+uRtKvL8OsZncZSIv+NQi2VoOAXPGJeJpjYR+BaVdvXU78x5kMz7ekWF+xJu+LiLt8aNhKmbuA3O/8fPkyKVPQMuU/BHuFa+8l/iPlKqXeWwN5CGJavSNCfWE/z3b1Azrf4RhF8OKaxyFyHyuONtC+9VgSDkv3NyxS5+wjcas5zrrqj64/gTjoXLzQQ/95p99ht9Y8az7pnp1WPEPD5vc4dN/akf/n1zff+fdiIvzXMrhR7keGFFznObYX4iv3hLYlfBJwo+WVTaaNJJzNekwaa1OjcD8GOz/vzoUaI/f9WnezAxMhAnX165Iz1G1HXnk9L2L9/98CNLOmWfD8HPry071VpWUdB1WoJTIZfw+WK2n2RVbhpqn1fYr8ZK9FFqi1+qWjz8cU++xdoucugSvv4s+zkz3gCs33zd3fcR4QNXN1deXzCh4LIrz9kN0ojvYsJGGbthGv7gujzxdDPhk87R4f6XVPzwsNWsxbIh4ruOfhc5N7mQcOEfuf/LfqLuwldGZDwPpWJihETv2wNE/NvBM7CXh9nf+sSra8cVLeHx1ftUn+X4oJ5GoLO0LxHPlFx3WvcoCb0elEmx/WeOCy18GeH5lsnzLrbIhOcEz6IQdKJ/3hP1pUSPn/hPX1rov6sW6QwsiuOuDLp8dwm3HVe8/PgiGX+fjHu65TBR1/M3TUaorcFolzZzMuZUwRL+W1VS+9k3d1y2lb3aSIvwycleyqHLt1xRjfXki8Jpou72WXJI2K+moKXA5PYPigT/fNtmD41cYaB0YsYKswkizpwk4wvbAoPRxnWf7ioRQielms5ba94x8H1dnOqwUMwSfudRsl3rhC8e8uW9wSdF6PyvaMingF8kXC3AvtPsLVEvRZlRZSdOUNGcv1JSxqJ0CX8ddb9XRN8P6w/cbhv9QPAQOyX0+6U3Hfdt+2J/LI3AV0UWKNVkMZDymWvtCXHiu4vcKzWlRGn4OI/ll1zbf96p3sj73zxPxhNku/23pwidwKz+KTM/BiY7jR/+9ZaoX8pgC9+6FQE42f9Bqvgssf/MwLLMG7uZ9dJXFX56L+FXRT4H/FYv+KAzy+Nn3C1EvsJfqt7VHvXGEg97a4YSoWeemW/slIYg/Fh3mOu8PqErq+8nWC8y3NB8t+v+fY7E+9X3PdEr7PV80blk4jZ7IfFO4rLvSZzpaQ9UYu23Gwn9z1x/g+YKDwOQpcp4f/YBIk4LRzF5zg80tBRWGzm2g6gLb+eErioJCtqPuK56/iRxCZcmxcw+POyDOauNOnfvJfTzYGw08j7Q8ZIlp4rkAlEvsfu4npP4qLhd1CWuRY3Aae81+JsVabjXghGaWkrwec3rpOeFQjJ2TrZWdxy8v4SvHDw+eWsls/+x83Tj0SH0XNX7aqSlOwgFVlzoM1pJWcLrzFJC212D8CslvOTLJ8K3X1MzS/h3kPEyl7pp6R4invqFGosaCxLuFHY1PrSOeDfOsFn/JpUlEIvLfO8N6BPrpX4Xz9kW0fFpQKX1cmlif5knnS0pAyQU12gJu8lGvBep+NmtbXvgimTn35JSyURexDIcZj9SKdh17dWZIs3qJbyRujtuvJOElyaFqppYiLpjMS18KJlMx4O6jo7oQPh/9cThLDETGu4aGmlX1iF0db/mFfdLCzLGC1KnL6kR+5de2d1KPeyLfM8f2+1aTaynOUU2f7/ojbWUbps3zwgfaOfyTa865IuvGsf6Y//zvtFJ1beyWvDC58GyI6Qkwvfm7bW1agWZ65dxvVYiEf3VRO+g08daKuqXyT56cJ3QYcWiV8z9YTrqbwj8uF+VWF8TL3jsGRcZux/4O+wnETr5rfeXQblNwpCDLVdLYol4VD70Td1n5iV5lWeQ6XWCf6X8MLsAcW+UOMBBJckT7xK6c7wGxXLu2Mzz57vfG6J/E1UNTJ8ToWJM01x5rCeR95uk2PydnwMwgLvUwl+e4KdX4cFHno5gfPdDL/5WpP0SfmchWq9UiYxvbkas1/pO5LGOhdxpvz8Y469IrtNYTdT1SmtrITOaF0rxRE5mNhP15TKi4ntxCwmL9lgqxZQT73jOZzhXOo974VUFr3KLbwQ/yy+9dxNuc8Vs50FXGUvCT1g7pNvEXakou9/gcLmAxxIutJraFO0ciD1Wf111inOW8IPvzid6J7liSEnGGrt+Yv9LW2WeQxMFb8lWjdd7Efs7t27a4TDnhdZBfQ/ljxHzV1gIv1WCnBtukhnt6Gsn1jtVTKZxPadjQYZskEkEMacYiOwf2qvqizrbLOKLHYn1ggPWAv8C6JgwmlpTmkLoRPTo8a3fO2iYJvXniWlK/BIucMhUVpXmg2nLtm4fO0zka28U5c7CbhpyJz+XXWwm9KP369sNpREG7ki0NXFaSazft8ztauBT5rw55fbRlYPoNx6rZdzCqSC8b+j45FB73hJelD3Mdny/N+p7e3CJryLyrvB0MsevyRt5fssl7vwWvIRvcDihvZHLH9Uq9j3V0kwl9p9O6bty1BsN7/CR1/znvXGM//uOhtPB+Eu7kOSpTbxjJNo8sToZ7o19U94lD8SJd6To1g/Vopt8EHftgUl2wn/G6+Cu2ygNL1ZmX35yguBBztIv41N8MP6kVjupbSDetfx3qiQ/8vTF8OEB7Sg14h7/+U1C+Mk6Klrv9mU7E0Gc95vH143Ux3RUl5Fplwsl6sjK2iNk0106OtesDr1o5LqEH3hzQ6xisys+4MBnDo8IfxtY6Zakze2Fw0wD74ipXsItmqfat4mTcZMRRfX6NSIvs9b7XaIvkFBhkSJx4hZR7zxsa0TqL/kjh+p+3rIJwrd3B98o1+p1xZWLxkd6q4l+YGLNHcaYMB2nMRXUu/7z3tth+HiBm4zXJVfIltQQ7xV7DcoHBYqY9cstX5PV+WgJN25u3bspNRDffXn18TM/wfOY+MycqZsvZuhl//5sS/jnzq3e73mY93Xe7otl21kI3mYthlN0Zymo+mRm3PEX4Z9r1wgLhfZRUURgiP+6PVGnQpJ+OWNTZPy0bJR9rVrmEq725pPrYLsXasQ//FOpQOy/UfgURXw7AzWP+U1qyBL4231GF4Wl6Hjo44G5a0PEPStfJOwW1+6HL9/9NJ5vItZLXrYuGK/wxW29Nyz9PlOXcFMT3p7QVnecJrsajwREE+fKLu7audYbPbr3inHNEr53JPxCE+UaDSvzWT2VvxP1SBveeTtWkY7dn09HWlkQPCjEcDqLF1Dwa/pmsblnBJ/B0/92qToEYRZnDJd4OqHPCsVws6/pNAxXiB2WvUTkxcRB/dEAezByyrLLeTcR70JhLXv7XnB4480n+qJrDhL6mdRw+lJ31Q/vy/y+53CZqAvpBY8FoTsk1Ds+IfCvkvBV5zFWQcs3Xnif75pPlhuht5BTHkIiJa4oa2u+QfAt8a6ytjqiO9o0AH26zoTJIMEn/8QF78hJb1zz20dRSYvQ57Kz1k+z7Gh4Tn1I984U4ZMHBptXANP/qY7djflTBA/qRz09Bu4yUELfnnG/muCBn6dg4svHYIyqe8oT70fUUSXtbWlnty+eoNSbUW2I9UPeYZeubiBjemX1SfdfxP5/LkoEOzN5UG40u9b1lcjjeotHryKYPMtGi8y+ziB8iWvIqShjMhj7SJ/C+lb8R5805w7fx65Y1SHzd9kocV53t1/2O0190fDoq4ScTQRuppFzdUsVHTNtTl+3DSV4yO3+4+liRUHTJxvchbYS632aRDo/NQWhC/tuIZZ54rstac9W5uQF4skfZx5YFhH11Tjk2+q2i4qSjNV7NUYJ/1EUT0/6/i4QVRU5wnoCiH5VYqj8ZkeLKy7UuSwENBDf3RHv5CbsTkNTtcd1XwOIPsRlKGPutCMJ92oacK7eSfAmWOPGtv4Nc/4aE0rfKknUS0cte+vMgiuqK250lWgh1rPVSrRm/aKg1SeG4K5txJzlp+5x8oSQN65WDmjViyf2mWF3cWA8JqO8gaGTZh2Rl97bx/KtX9CwYsfGO0VuBA9rL2ip3PGloj/jxtkLF4OWcPh9cZprxhP3//xwSVnOaQnXtT8leP2FJ9akXs/WGiF4+7nmYHymoj+Gl7f8jM0meDPOdE4sowXih+xKhcxNGUs4Tx/0WM+5Y+iV1eaaNGKffJf3DM33HugjfufbZyqhw/rr+qadisx5U1Mwb81dIv60jj8RpFsUjMhqIBs+J3Rys15sx6N5N3xz8fWtF7HEPsPHbl15UUzGgvQ13zpNXJdwzqRnboZzJJx22t5VJEC8Ew6Hm4qxC/hjUPAY55kIIu/bR9/1PNsejIw4nlYtDsI37n+SmCzUCsDw3JNbY5KJvJiXfY7U3kXH6ENJ5Ev/8fmZR+SL6hreWLfw6V6rK3Fvelo+AUNjOi7P+v7cyThpCT9/2TBzA5cbHpkJ33m6i9BbcI65uKoCDX2tzefluglfGrj2oYuSEYwK5o/P5MT+Z47OV2l9q+GF6y+s2bA+loh/o6204XFRCm5U3SHcrEjE46Y/9rFYmoIVda5v3YYIfZ788rJ9womMP7xJl58Z/ae+zH7f3zNKxTU7z738bUzUY9/ZV6ePfqagRPCXb8n/mXNd12e2LAoysKvjlP0ebaL/Ed4WGjf6xgMf9/29eLubyIvaW3XhDee90bKCkePjTMz7etN1+w7u8ENW40M/JFwI35uUY/0YezoQHWKbBnokiLlJNstG48ZlD7wRcGUwSdp3CX8W4uWQwOKHjzk+3A7/S/DzmT+lrLySium2nVxH/vN7Jo7FiqkFUcw4txVQN/9nLjZn3fXKeK8/TuWGxfJQiXvkz8iuP5un3fHmbuv0JEPi/Sq2pnxgTs0DHZbpuD68QvC2POFlSW8+DUuWbXRzLKtewpVX3rm7gTkvi3w8UGOdSnz3q4tlbrZBEKp/Fl09OEDsE51523BTFQnVKwVuvIwk9BPlNiX/QzMIy7IHkkdViHORFUTKqddpqCRQJ2wiQux/WOHw83ART1QKunSryodYT1lOzY/JCcSPq426zcOJPmrqnZlEYr83ynws8bU/RuwzIhom1cPmhlaV5tESGUT9bpj7qhZ31R83mvAOfdUj9PbapJAupRWEoBnwUT6E+DlXU4/TdpUIH1Q50KXcXkqc9xZ51267PTRsumZYxltH1CPT9o4UzFAwIOmokZkc0Yc458g0XvhCQqVlgl2ssdeW8KMNCsaR2SRMPNeaxzND+MDe2t0pznX+OMjp2dAxYr6Es26Tq+RrCUCV85OL4k6EzhlBfpzrmH67QWo2oc+B8CUHEeMMjoPBaP2LY4epPcFnO79g9IXlDBzv35NYnU7oc3PnU84tziTU/13VEiRJvPPjSqHqrz7+aOvVx00eI+I06jNfu2UzHePkTpBC2wh+5A4b5vFfoqLn4lWd3l+Ezk+81q4ICKWgmMvJ7Jk9xD4yp9sXepj6WUMb2mcfSeTlcNRhUlZXMMIuoWpq1H9+Xqzq6KkZ4ol79go8P+xE9D+NQl0se664olemls2YHcG/XEyP+u9lNHzzUjab04eIh6SWsaMywwc9DhqTK6eJPCon/5S2eRCAR0O2/+NxJ+IcUZAzyjtCQcPDya/8Koh+D3eXH//aR8bPN/8OfNtD+AAa5bVbOVKQwciazbnVBnu5v9oGNuTCj4uFf5KNSehIyYncY9cGdctj3ztwxEGPzCWr5jAK+j17pfbeqw0eNIg9OPWgHIR0eDdzFFPQ89H1g93vm+B3lkT+ea1SuBktMCz/LgA3r4iJtv/RBJdqB+u9dVNAln4/JEgpENVW6wmkb+2Eeyen22WXJ4OgvlTPTHgg3geZsMPindDiqHbubnsxqEpuOGJfHoibvMwkpF7XwY7nIUrS/rFAT7lcqyjih7slQ1OEreoh+x2jQeRmLrR+n6sJueWHUc5P9ZvKm+HvoNyGi92VIEvyjo8ypWCXQeov4/Q6mK5r50ibKoc3yTdoAmv9cNNspn6mbBMoO+sf4efPg5iN0rmzHGSU0Zw/cWBtOwx2lnBWjGVBbF536/l9NPzZFqeW9rUDzlT+Wy+xmAOhMxsWlbLJ6NY1ynAsbobNtseGB/iewx+3lx9/ZlOQ9qKmdGItc/5XKT2TyZ8B3n/Orz29wQdzElYMvyltgckYPr+dP7Pg5s9yIZtjVDQ0CtPVXNYJei4VV/hWIZzw+zrTlUpGLjFh9rj71aA9cmlsZDAcRtu/gVcZc35flONe9H0BJRraMQW1hbDW31SxLZCKM6e3mzH6G0DXYktfOm8U6EdxRIuNM+u6hSPq+j7m/P/XaWGlZBEUnSv4+OCCD/Z/eJIlxNoJ/vXPs9fEh4LZAbm/+UNkzHl3nfdYTxNc/nBn8vHfJLi7YbnX9XwKcnsfualt3AFsC+SHUY+LIO9wuX2PERX9WldztpY3gEP1aOhqrIT2LwvykwMkfN9zf7ODbAPce5cfvu9XKoQlp1+frSGhtreznU93E+wU4Vc1myqGuY6RT3GRTN6GjhW6C7SC1/tqNuN0BMeM11Yz4TRc5K3doxLfAa/WrGRcDUwGhyNku8o5CqLehbs7FutBa/BSWUk5M54Lpg3LdEnIIzksf1irGtYJymmff1kJoVMRoRJ13rinujP8nmU7xO7umzWvZ0CXwCWZ1mYaXrsdn+Mv3QVntDu+V+nmgDHLT2MynYRtUTdbG5IqgYUCHDsH4sD/1F4P/8+eyC+9+e9d8ReQXZJksD85AbbK1zwrNqAhTey490GRDihu5UuoT0B4xLJqp/05GhoEiDj+2VgL2ijA8mmeDp6ZZ9mZDTg+FNzvur0B4cKP5GzDoVyQEppgeRfmhbSfu9dLyXbBtJGej2NgOfzb+vF3DI2E86q/SjcLdoHFPROxaOUY0L4uTdpZT8LsoB92UqpdEL7LLGEPVxFsSDO5oJ1Gwo5NKXV2ajUQztMfVi4aB6IW7wZ+uAVgCn5g62ioBS1bt6POgxnQpuD9XaErEH1IW6YlrNvgtkY5dfeGEjh0kGUTQ4GO07eCx80vtgJr2hG7p5x5cNrhVfatQ3R8sF5m7RXeZ6Cta7S1bxDBdE8cZabUE2crCi6KqyGsHaOcqeUtAdMNZVsybnlh/l3GObO6F3Cnxvdo5XMGPOrf/imjnob3XONYNnrFQewjCcHBu9ng3eo0KKbrgaVFbcOWAzUw17vO4ZlkFZTV/9vwjekbpy1FdM3utEGNsq317ahEkIfv77nv0XEop0B393gLyCTqCD6tKgM7x8UT4EDDl8mV6354M6By2I+67Gc8XMHlRR2vPdHF2lFM3aYTTs1XGPDKF8Pn5XIsCiEUtLc0/nuH2Re1sYXY/WGlw1aRIMbCexJubWH1IvNWQlvB+bkGEkLeCkXS2KQnnt5z92EU02fDucIE9pfnwvyg5O2muADUbtz8idW3GTaMZ+3Y9CkP+HvLW1QnqThq1APSmk3gU2otvWo0C0pebr+69SgVP1t77YRkpl8NfLgaNxALhze+bXMMJeHpPhYGXznTJ1UFvR4mpEDwgrFQwxjT552POoj/aQd+vypuHol8OB87nHZ9Hx0ddfMe5wsxfd44RKupIQmiVRPC94n6IVe371RHQBv0hdVndRtWwNMap33VFXSUE3z0KT2sHsYDl7/RYeRCfcLD/Zl/SXjVaQPHiWWN8F3I9ZyLGxm4JG2SLJ0o6NKx7tGNLbWwfOerXsV35aB4P2lOQSEIW9me6zIMaiFA951A/fsieB7F/dNkLBAjZwZiFI9XQ1TkVIC/QhmsvcwlWHTZH/+RJbITwjogyHJ4NHNlORzk86kouUDDUrOavuiYJiA5nPp31CoQNK0iJaY5aPiC30fys2QUqMYfgTwZGrDD7IcCFw9k1Y6L9S0IhvuKIntuL5bCe7FXpf0WnmgV9Gbs6r5K4HY/5PLlKg32ainHnWDxRvqT00KBuSWA3m+qDh4MAbF+4ZJKkgcWZf01i1rXBZd5l12vIJFBtjaEPGtLxm38RamjKR1QkWNo/ZOTBGZucvSmEhq+Fa7drJlbCh/2KPm0pRdB8hTl1M5hD7x/2FKkQLQF6J3qzuwJVbDlmKqp8CwNN+5SnZ5qKgPFMNkjeg+z4Tlf2NFHAp5409kvd+/tJvhg6XDtdlgVCMsrm6QPULHh4RobOnQAi7zZj+C78SBlYpSStZ2O7M0TIys8Q2Fjq0SGskI+vFS/cn21jSd6/VwX0S7bBl+kNbtSDErh+I67EhKcfpigvV72u04VnCKhqU96PFTkZ8yyuvthZ8NFiU3GCPS4mfsFfBmQej4s/uVlH/Tx9tyyl3lvvj//XmDvySoQqehkrHlNQkn+EmORM52gc5vtfqVfFSgVX84VeUBF+TPnqiyKg8FoHcuhpPBM+DF0QiMy2wunZJ4OcY2UgFitHmtqcQWcGS/w/9jpgU1rizlUbBoggKR3nt+pCkp/GUS0G1OQf3CVg4I3Ge42a6gNnwgGDjVJ640vfTB4ZOiB1lgjOJu9GEqOjIZJk9U6rCepqJsknZDwuwP6r4XIj8vmwsR5VY8wGV+8il65WWL1ULsycmJkvgzW6S0TTDxJZvaNKyX2VXWAfg1Ho2tBFjhTH531OkDD0Jnd674z750czbWP2xIywIxvYdLGjo5mltdLeRW7YL/ZA3H6uirYdFa+5xMnGflkw6vlDjSCN2b2qzH7B8dD+nHW66g4sKOU4rSlGtTTf/Hb7CHDuO/+p72V/th/9PYJ03cNEP5g2PXq4TJ4qfLrmjWzv/o8+spa70EnVAr1aY0mlUNHHJvmoCIVB+XE7Ll2lYLm3Rpb9/ZE6Jgk/Sza5InvMvZ5Fpq0wD6dXLEv96PAIdlioYaph4PyY3d2LCsEgyOvTDpMq0AqkmpPz3PHgKKymdA1nTA9HyEp+yYGSn4MWJv9ouKWXVY7ev2bIZsnqVvDJxRMu1dl/roagI8SJ+K2TddD/c0nJjYl8eBznyPkggwFi82H5UpCq+Bbh+PnT3eqgDE2K7Cd1R9XnHt1dWqmGXR22HUZpqUBFU9oTDbRkL2GZRmMMO93mfEKI+b9KxN+Tj6PWdeRGb6B+ecaIIjlvu7p8Sw4U3rvs4MHBUs5g8dI35vhqFbGOp4HxfB3/lNeTw0Ntyfu8Px7ogFo22/Qr+4uhNajb/N+u1LQVm/1pdbGNsgg1+Gxx1Xg6/mq+/UbOmZyG3/Q+NgG/d/c3A27cuD5kSLVOGkGclooVKW9bQe25m9069xMWOfE2xyzQEflnROrOyIDoVXqoaTam1g4OKnj7PjADy9sUWw9fOEFyMdkmzc4JgP375IbvsvJ+PJ48sern6th6872d57fUiHA/VvgNWZ/a89fo9q+qhCMHcV8pk6nQNGs2oObz9yxP8jfZ4dfEAQeKFYae1IAjuHXVf35mfvzKhcLRndBS035W/qdFEg8u8prQZiM42btYU2XO8FgaoWWLmcu2BbcdDxVT0XL74xTidptUNTK38hrEADzHstpLNsYqLzvnNqUVTuQn0uU+q5+DmMO2wc33QtEv+G66WoLMqi4a+yIu1cCgTENO6iZvvjh0YqVdkz/3yyzspviGQXs4vd8GoUZaBDO3abdEwtxjEyt966xIPIzd82BdR4Yu9i/YdX7Rti6/PaVD9KFELJTa7qxiIrHPc/0sMy9AFaT7Jt8wYVwi1srMqWHjl2XTprw/qkCvpC5w3sOFcCEyPKCfub8eG/5wdOq0p2gwTel082D0FDXl7p1yhcDy3jSc6qaoVvmQ6J7aTb4VudUqzB90velSEgZ8/64YFlnFfQqF3QEUt5Oinigiu7P+7vfxwFjv8t072OEvTofqhpXeaCI7O2McZcO0ChbVX1+qAru0H0mLJyZeljIj/4n3AF2JbX10scqYOfdlLyIL3TkWBHVXWZUCPebHfq8A4tg/5tNZ16UuqNel946Xu4W+P53y/EsReZ9ofnmsoo0HcfeW+f+yu2EhMd1ESlVYXA+Y3ev4HkffCj6b+O1xy3g9/vT6i+zuRA8r+4/7OyDbhb8Gzk540FYdo9eY08xaAea3L2R747ld89yjD1MhGYN69Wqifkw5nfT5FmMOzYJvpr0826C/VfZSrIvl8FEb7jpkV00NHUKiVfo7IQqq7Xbu0LzITxPIcP+GQUp9BQ5+cogkJt6ZJ5WkwpiEus1QsX88FJv/IlT21rhzrNDNL9PVcA9eXNqag8Du/kDps4WVIH8uh/uIfNZsF+aZSD1oj8eFeKv3/GvAa7L6OU26TF1CF6PKvZQsXIhNmD3mQ7wbpdpFHlZDHc9PqyQtKHjjRr+dV+YeS8XuGRisbkSfE+c+v1tOwOdPyi8fMORDOF2x3UX1crhncVTR/0XTP85sAtsNzfD+pHNFdU68WC5k3v+vSsNXck/K5qZviR6/NKgwXaEoeAio9Y7NBx23UlutOwEjk1znsPqAWD04xY/z1MqXm+KKl+WkgRPKhUXRWMpwGNoGGt7zR1N4sTuKhzPgKdW4QH5tCq4eGLalUXaHXeqtB3STs0F/4hth/m2InO/Zvrv726oXnnIXtMQwYengtLsVgGGYm8DrI188XgOl0thYxq8Euh1O1lRDC/3lCdIXXdHDZM3dqxcVTCR2PP4nXcYJC+fCpbZ6o919/dv/W3VCeOxwW4a59LByFj+fW88FbE+5vwcJQjW7tk1ceYT8ztWs3KrN/thoNr7gwHZdZCyqFy+IJwFhS+nGd8vkNH8o5nw7tWBIOaUlZbjlw1NjqO9kg1+aDYjr1uw6wVEjJxJkQwthYMl/lSyAXMusznVqXOqEeJun1KTZ/IWpbff3f88FRfZb5on3K6DkAOjbkkrCsGOtbZz3UYyzq9P60gW6ISSLK/bYicKwLLqwR31EzR0325rMqHXDowjU1W8Gghhl60lW3sD8ViyyT8T91oIfMO/etAjB9h8BCw3PCfh8mUKTncrOmH/w6Cgf6mRsEPivMm/NxRUNl7ppXCkAPIK/MztvkXDoJRr1Eofd1xfIoNx0gWQLvldc/1rKtz7MND9+LU7fuk8Nys8Vgsv/zx5lSqXAiuEAlUW5km45umtU/HlLTBWdtOZuyMP7Mxhce1BMtplDZheZOuCraIf2I4uVEHqoj23QwwFz2eI/25n9us3JwXXmj8uhda/+38uPPXEgaCetU9TWkDfiX/junN5cGvDlOF8IB3TvDoM5zZ2wKDEsMD+AT+wvVHm78rBwB0Z/Ys3CstBpZkeLfmgDDSGj5/q+O6N/tZD6mGfOkFqlD1BlD8bXosnqfPSKXjVaNj+XxSzz/9S0/91IhJsXe0i0yVJ+MAle5cQ3wuIdHfg5NJBkC/zKXsUHYCyGbQbuzO6gD/yyIyFYyhEvFohVsvsQz4qReRBDMLKEBnlMrsi0DtcO/LJzw/L5jmPkloqIWt+Kvh1UBWkbKl4Ouvli0HFwV16D6thh+YbbYm11dAqe/MYaTYQnwSvL2jKewGyJc4aszKJcOKfwPnJrQx8xmpn837mBcwXR19TvRAJSst4bTNlGRhPb82+fLAaeg/KK4vlVkLgq2+/IkoDUDzVT+7H2SYoft3P9cYoBQLeCjQ+NKNhnzB33cktbTDLzi1fIUkDu79rLAoOU3DFuonhw0Mv4Jn/TIt7WymItt3ncdzIwFIa10YFfxqsOVhoqPGlHEpudo360X1RrtWxwJA5V4/Drt+XQvzhwXJ2ro9MnYj+0bzla94Of5+Vl6acLYKzy1fte6XHwNPijF+Pe+qh669rWJdDGPTdGajdeo+CP5xYzqTTO+Ct0ZUgN7sw0DM9cmfBiI4phfl5Il87of/9j2d8egicTyN82Qso6G+4wKfP1wXHvoVas6wqAwdW6gczSwpau/ZUtDPzcmlvFXl8ugSez+msOs+sx+bOOaN2wzLofsM7zFbjAwnXr/t87fbGNpXOqyyD9VBW4lToh5Xg4iR4pyWKgjNmo+PcIllgvz7x6deVz+HmZ8Muy73Me19um+VNegXsNuhYU3yuAJpYV2zitfHBMZGmobrYDghvLFLc1lcKt4fZHdcgGXV4rHLGg8pB0kawrzs0GR4pt3422+aD2kOVDst+1IL4brXFD/qVYCd4uxjXM/Xz6F/Njw3e4CNs8/zcHAluevMmZIYFYOIhra47FR3Q8O+nGO+NVLDemHo2SoB5L28Z1sor6ICcfUqPDZjzaVKIvRRVjo59BsukXvUkgm0r+6fmzakwyfZRpJ7ZN7qe1ZUM72qCH2/cJH6teg7rTpwZe9hAww3sdtdu8uaB+tONJbtjSmDoZMR+JWN3TG3aO+m5vQys7q7eUPOiCq6JnOK7bOqNlgO2LGfNW2DCPOIh51QlrHn/jqyuT8eNFM1Sce1sqHXoMPbZFg8X5gr0L3C4o5Lo/SM9Q50QmNi+yiC/BB6USZ5dE+yFHFbmJ17xdkJbp7v4zPdiqPWZZWt3ZPbt/LdaP1/JhS2fpd23JRfAfqs/5bxi7pgsrXSNxbwWqowcXnem+sPRQ46bq56RsHFR5ZLf6xfwPvjl9xKVQNBWVc03PsNAFR0J3kWzevA9EL1rel0JdOlovl6+l4K6ORI8k6x1cDfQOuqMWwmsDG/4M7GPjCfyJ5K1DrSDcFPZVKlFOmS3r9F+JElGm8Nz/4rvNID7wzHJizl0+D1QQjqn4I9CZ/Y4X1veBddOrc+Pfx0PvnO60R7lTB+r/vk2grsd3m6Ymk4QKAaXfqOdB9pISGtxhMjMNlguDS1JHIXAf5DVs8WYimvDforrcOWCW0Q0v2tfDpyIYR+31nPHS8ddfT+Id0C9ka3Lq2tRoJt5nqqoy5yPVn3Oj1Wqh4o822UXh1Og4etF+jltCm74JdXQe7cLTibeS/o3TwESzhYotwag0M27P0uzosAlWSV7vbAnxN1y2zmT6Y0CEeFhB6Rb4by96GnLjmewbfejzro2bzyt5kC/uaoD1l7MCtmbkQxWqnvSZdQZKKVhyxt+pxEu9dzj0mErgUqRDH+RLioK+HhNBl+qBIt30veUOaLh8JMglfc9vripQqA0NKYMao8bzx0xDwdnxTKLiGFvvGduIzbuz+zz4/e1xQtXgRNcTFBhzok9vQ9CdZO64N1FN+f3h/Ohv5r9abImGXecFey0uxwJPgNXphrNK6Bc5mjKIz9vdH0x8KpdPA1GTu+KXJ2eDaytl0dpdu545XxD643wHDBIxH5lchpsOnRwvnebO45vlxDOud8OfNPsQfv2IJyd0Vr9nMzA7Cv72VWCGsCJms3yxIk579AtZaDTF61bXqjNyXeC0LHmlidiIfCR/+WRYSca7kiMLXQ6WwkCfzkMNg16g0ro2neB332xVvZdaOzJLrjMebxG7H0imI8EGvvk+CMPRDgZFiKopyp3iIflQrzpk79RzH7j6Hcx1rGkRuhral7jp4VQMBZt8u2YLz5IlNP4eDgVtL4vPnAWj4Os/Ms97+vdMeTqacFN7NWgMHX14WbNYsi7M/SZjzsQH0b+1BvYlwUn9ZwPto+Xg96EQvMWA3ess79omGFaCEWujz7I11YAK7VAUHTSAxdP6kqmHYmECcu7nfOZRWDoSE5RLvbCfybCz2tOhcKxIsUj+2Ki4Jenl/VjNx8cuFcyx2dTDwODlO0pfAHw8sa2SglDCg5kzoiKdTPvFzzrXlUYA1HX+5dv4iPj5Z76+dvGHRDQucHokCfC5pyRiJszdPyu5H0t0KcUeuAXv59aPuT0FmYflvXGk9/Wt3B4NgP7aSfdaUommOeeiggTJWPyPbaihjMFIPVY/mXdWBZsxYbl24SY88Itr7pbu9uAetJumeNCAWTZf3CnpTFQS0PUUf98NQQ1VH6mrwsHHbfHKtrvA/Exz7e694NdYA7mjgebY8Hs468ndyyYcVrTMxxDGyApYKO0IH8xGHDOcVYJ+uA7x/U3ZCS6QIHj9sXNyfnw+MXiosUVP0y9KwbH1teAMFd3upNVATxZs+IaBzUIx9N8euzvdYCK+dT+q+Qq2GK/+q8Qkx/N6onoP8cygHQxf3ekUsH//g6R2uqOp9k643Zn+4J0dbKU1JpKuNfWZbygHIAZ5K3JN563gVa6wBnNvWngtCNFq5PKQGOx+S77hlwYO+J2jmu4CoaWTfBs5PHAdUbTbd29XZCQHPo7k1wB9rTBvlemZPzttIKL8ZLZp3Y32rvJpcK5Ku9TH4L9kdZd16G1vAOgfLWEv3coLPo8Y7RfYaD2X7vVpNUd8LQ1dlxgKAh+C3sPJVVSsOKb/NRkQwO8p4UNFhyIh5d7V1ytoVKRW8T66lGGG6zV0L3G3ZQGT/nZyAmTAfhHwfyc8IciyDmeRjpX5AtqPmVsJrWeqPWMda9tdCskCHYp857Khr7l5+z3BzJwejzay7qsGcpu2DjnT5TCmpCq6fq7zHnkmlPsXEc11FT6qsx5e8CAneJk/rcg7Cztj7KaqIbvseyqWeLZcMZ5w91kiyD8+qwsYtSoA94Z+Hl0fI+F+3lKoLDLBx8klJs17uqAssw13+60xsHRfoGiFQ0k3CfF0s9YXQ0/bCoOfpZKhLH9rP4iAYHYPKXdUdnUBUFMhRgXZEG6sPQJZPYPIXcEq8NtX4DO3ctfSn5FwN4Bz200Egndst785PVvBTOX83yKXOnAPctGEfpJQYfYPVmtxxACk7Z1LfMohdJabbn1RX54indiKuNeE8CHxd9+16pgR0HKuyB1Ml7YU9v2KagdRkapW0cvlELwjWrNjHsM/Pj23OZVMp0gMhjU5pwZBz76vsv/dpBxa4ygmaZEB3Rliu8dK8iBr4nS4YXMPvD9DvY/Yvpd0Bo6VzAQzMy/oZ902GV/fCw0auuv0QJPN/9+VS2RCA9+JvG5X/fCzLhw77F/rXDd8u1gdlQx8LW8vR5XycAnY1cn5I91QnWMiYGERhJkm0WwsEYyfc8sQ0A+ywvScIXH75JCSCrwmOudCUDzyMYHf4QqoOPu2i7O/hw4vbWVyprkgxyd+0qLi2ugytmONasvARZSWfZYmJKw50n8wti2GlgZYT2Va0wHilvjm8q9JFzmxL09lrULjthyXHP46w76Ynq8Smup+Mfn1vr171rBn1JXY34sD6gVG4e7ihl4+RtdZt+CG2TfezE3FJANngru5/FzIE6NmVRkdnbBK6VyRf4bPqCifD5T+QYZCx3g98/qFmgV9W3I4wiEV52+XUOKVFRi1da4/cALDj+4/cnapBRqbcOt+/oCUFTJeFs9lzdYyDbuVtpeDeTahZUvWQLRMUSM0iLiBetU+X2VEsKhetXKruYfAVi//Ntz2/Q2Jp/dwlaROfAm5+ftgH/eOLNb+UDYz1pQSDrpN3MqHAYdjSKTzpKxxLVSSiuuCc66ZiiZKGTB5oGBOf8WGhpse7c/3YmZx1u6x5NrSsCWsXZGqTYA50+uvL21IxhsVZ9u0lhRDdrxJPVTqb74rrshukmyC/RbdF2Lc4qAZ0yG/NeFgv17VfwdNaPhE/tGJ3X9OFgjmr6s8YI3/tgwXzclHQ3/Dvd7cq5JBdSap+oXeaH4dIBgKE8FfPbSy35FLgbLMhavbnFfFC8M2y4q+wIq9TZGGhtng2pUYuXt9QzMKA16qnukA4Znv9oeuJcLLsJ/KmyBiocUGsLObOkEtYeld4+VVMHGvwL+Vn9paLtdj41nnAarfnz1tZXyAvbLbmx7HvihZ1M3x2J7B9hKCRqal1WAnh2ryTUvOk48Hixqc0wE1eozHGvGq2D+iKOs56IH5ryk3+8WagKuu6NOXDq5IBeRvpvDgIZ/ily49/C1wGnZ8df4vgC8Hntf8aTS8eJjjRpu7hoQNVAw7G8vhZ3KbDeMXgdhXeIjk9tSoVASqPHm5GWEv3JiSiJ7fXEq51Dqud0vAB/+8G7sQxAon9EIkWKg8s9/y2+k14PTXOONMWoeuKrI86alUTBzk+04e0gxCEwp2D0rTAfbXzN9GWu9sOCjy8GKoBY4yw+j1R0esGqk8+Hzt3T8w0v6sVyvC2aFL+mcWRcNNtlPOsGaglutDsVxenfAar14rpWjBXBPt1HrbAkd+xUz+Z7pv4DG/ND14RejIPCUUaW6GhX7Ekv9FbpaYeRPw/1dtDjIPzJQY1fA9PPG1Y+O9bbD4VF7i55LqcCv9/qZugwN3/8QWgzz8oaTXgcy7fXygC3ZYnJ7QQBe7YuVPWpZC0fn6jXuU2KBO2OUevYoGQ/EKxv2LjTAX6n2v8m87vBMWsDIqJOK/ammuPNtF1S+e60ic6QabBzTWJQcyeiTR2bVcy+GoUbuuawyhGWzs/5uR7zQdP3iHu0tLSBlHHuLVBQPy3is0izi6MhVs61mT10dSF/v5zvqwOwTNsR+OShLQcq44tty5rlyo6/842b2Dx0QVPcli4Hda4s8hY53gtPIo021JAqc3yx47OvbQMxz7rlq4twEQwnRqiuDimFTQoBuUgkNZSpEPm/Njodam3LdFDYvMDk7ESIw64lbryr1P9FqAXnW8Cq+URL0P3on/ruehL+OmmalX++CFaGlcSEfc2B4q0fzajkK0quyKiV0GkBY4ZiJkX88KEZyZBw0D8TJg+vcNh5vhCB+U/rm3zHAZl5RHlPgjVJvDZQV38WAEW2WVWGyFPx/Sf2RTvXCRwFvT8up1sKLVwE6lQLVUBx+XVN9lIQalvJ8J743AGdO0bkvi6EQcn1lWrwfFRXJE9HX02rA5Z2kuZldBrwIu6nA5kdC41sp40I57aDH117idKYUgl6qBEm+pOLMWVH1oYlOkLbhzfZLSYGqI4zm3+eZ88JsvIt4cjlYue1sP05GMBYZv5i61RfTZ09n1p7qgtt1NgO0uqz//d16eYgfPrRT696jWAfrPcbXe3zyhN6aG89215FR2WLLDcrHdvjeqHT/QEQcXOyd5B1j9s/l+VqnXNc0Q3Dk/BqDT7nwV+eAb80BOr4zXBPoHt8Om/gmrojvqQaps4Y8PkkMjFRY/vYSqQhOSD9v5dhSDad9/hxT0PDCp6Z1N/1P1QP3Y/dIF+lqyMWUMhY3po/573dpm+uENwtaIhdt6KBRsi5FmYuKzykPk3/K5wIc2fiEpTISJEWat1Zs8EC9l5sbWzIq4fHmbB78mQAlTSlyk8z+LSNTSINh1An0PWVFh31TYS0bu+preW9MTpTLg5oGCNc9f2lGrRoUdZzKSfFU/HA6U2n+WwuoBBrLKjqlwvAlqaIvmxnY07l2xRWXTrgmSslp0c+HR1h57vMx5rSlafl5WWEL/JzJrt2SVwI+LG+i//Ez0Cc87ttTUiN4qBfL32BJAPFbfv4XR8iovdnHZawnCTxVdN4ZGRSB/T4Rw7/6nthIKxQ6/sUNmhw5hTsvJECyQuDa08x7TUmx3dNDqx1cNPnkjZ+7gW5enQ1HNwM3t5APiX9thXGb09PJJRUwcFM2eegnAxXp0Z5lNyohMpD1isqFYKg/IDgt4eGHRi+X1+0IaYVNXtNJxtM5IPP9+RxnCQWPvPvRm7SiEdwnbOP/3MmG37Q49wPUQHzm+6CyK6AdWqQjOq17mb6xTuLF33wGxl9rWO6y6gUEs7M9z+DKguHIzQ6vNAJw3fL3u15JNYHwtPeKG7xUEIpWm+jTJ2F27KEYD6sWoOq+7qxbVg7BN/M0Uw96IRv3+UyZ5S/g070Zg4+OVfDafM2GSqRg7QW70waqXSC82Sonx70CljvyWcxSKfie4lr0XDAa6lF91bpt1bDhp0bIG4o3FtNzbv+QKYOagk3r3hnHwRPK3cvdGj6YkGwhoBjO7O/rNZK8+qOZ97vLFp9jXqhpovRjm34atN0o0UkXR3hdULz+6mUPjK2eUK870wmH3iLpU2kVKKOpGJcGGSM1Sfp/o1rBJOiqLO1ODNTuElwzYU/D0vCdIyzUDuBYJrpYHJoFp87P1xe9pqNja8SXa6GNQFNvPJaplwEl9Vt2dqaR8fHV++1jgm3w8Kti5t4ABLOfifL3ZbyxaW7gdYpjB2T82np05mMBFPj2nG0ZJOFgtO3jXt5a0FFzzVgflQ9bD8xb7nhLwicNDnC1uhMmNdO8qyoLgXfcje1NLBWtdrA4OU63wKvw1LFv0rHApys7aHeagW7m7E8tH9dBs+31stynCXBUK1vY5w8ZRR/O0cJHg8HDo76KsTPvf7+nV2fhi7MTl64o3OyA+22yDVqdRdAvsb1J7rQ33g+v6o51rYPogAOr1o7kQghp94aWCTJO5ZYkqhrEAutI2gOexXD4nPhEXDzOC482qIqfX90Me0+9WObL9AHq5s5i3yN0jBR5NO6iUA6jVd88pU2rwbyLe31bsi/OF3W/5Rwthf/r4Dzcqf7fPx6RbCqjJIUKWWVUSDchSVqSkMiIMsvIKCt7HGfae2fvzevY2zlKmSmjfMgsDRm/8/39A+/3dT3PfT/vx+O6zvXW8xD01DrTDOKO7JECD0ORYSOv9De2OFjuzxLmP1IDzaGls2cwYaiJPWVJcB3B6c53dC9Hg0DziEWnlWwkyvYI9GOhzSez5IepMrsYaDh8iSJ+gYRY/jtJ3nMtEexPEzoe7daBxAWd3qROGq866cR10Dzx+gbM3/mEYMLopvquMxatJa12N+2rB37bCkqPVxn8LGol8aWFoE+pVpsP9BsgY3dKXY9YDClFy4b850KRP/PhZOF1Wj+WTacprFTB7h8ucZ6IYMR4rf6j5dt0WHdKqGGn5eziFOJ4tTkYlWpk+j+YqYEPCTdSv4ZVQZjU0I6iejA6ZJCZf+tcFUhuXDaOfFUJUgLk2m+8QWimQKr/iCfNH8LMK63i0iHwuqLSpGQUiqaIViuXtEKRxna34a9aiCyNIdUVRyNvDcECyUNkcJJKOKQ71gh/LB7eTVKORLbSZ8LbHvZDGXE+4nJDPvBUSmpxNJKQzAemxBza78WfMvpIKCmQxq1+nOdViSi1xPZ3YnwHSM1MnBnjaoS+rYoEnU4c6nkZQnm70gHWDy9NVgQXgtvJTYtmKTw6Qt1RGKRvhfdyckKZTrQ8RW9xhJyKRjf4I2e0vAaA1QDUZExo81Bq0Ca3REI9jec1RlP6wYBY20N/MgYOvTX/bEXzkfhp541L221wkpFTuimdCDo+v8f2eAajgc1Nv7jiPlBXKfIYY2yGNmcJC/EaHOKOmV8MeTIAox4a8o73GmB4Ar3ToZDQ6sDl98fD+yBT6JQbGFbAy6BHqcIRJJS71PNqY6gXnufuqq5cbgGTh4ufVPhJqGr7Pf8RgSDgUChRMhlB8GZFoYYtNQop7Hd49WixCxxJJhT6T1mg2mda1RhJQPEeLoliRl1Aaug1+Hi1EZJZNXrzDhFQS6FFg5dKNyiujvP//NMIg0Oqi9FeOBS1fNVwbjoVTK71SXvYlcLjF2cLJwNp+9U1oWxxpAtWbrwcXcKUQsr58W3TD3j0GqO9tuhMgcEPpcn9uSWQ5NXrEZwThejFT3z5LU7rYWxSe5JODYwsywYsukaiMMePc/qxLXDBO6VB6GQm3Do5hk7zRaN0P8PEi7/aYf05x9aFK2Tg5h1vpxyOQLZthurJxUNAbJ2CC+/J0KRrZaN/CIO65FwRukgF/tQB8w9FDUCumN6820pA58YPfImsKoKQGB5ZB0IBMDsgMtfSG5QMzPmX57OANejAh1iaF4Z6yzjGnwtG3sqP1n487gF5/Y66UekmCPkz/fXHKyKSCtNm67ahAknNafeecgnUnFtv1aqJRq5Cv5a9zGMhkqeZSbIyG2pknjoo/g5D4nzssf/73uNl5ZYXP5cDoLVUcWpwhoC+nK9ZHBfoBQuHAs+vJZlwJp+e32eeNp/y7JKlSoOgMiCMNjnwYPf3/Y+qZRq33LEYPFU+APKUcuui8BK4VJxmy/SLhOzTDpwVN6dAotuJ+vOfK8D6leNLLWMSCjwdOMgZWw/d/wzEdnZrYPWvP46qGYrcHr23PjHYB846l2fMSbWgnMdx6etbEmp/feJBTA0ZfqW7nR04WARBSQ7ae4Oi0MLasV3HtV7QVRZiWMFnwdaSxMnRsQi0JBw+ucvaDn7Tj2Sa+3KgX11f4+nfSCQXHU888d8QPHnuSofXqoGSnJk7SYFYtFnnXfIygQJJRU8uCNg1/D/n314gIpXrT1jN0nqBvezCMUaJfHj+c+q45i8cYjdzFG2Xp0C17JPz9J+aoGOv7+HNRByqoiIGjXfdoFwwzcjZVgXcS39sfaYJyCGKczylvQ62Tq3fHhtpAK5H3mHk3hBknObbIixWCqwVXM3vsxBcaA1tvnAnEM2NF4wbh6UB+7Cw8kIrAnOZpLQMbAgiV6o0/JltB8rqUodxTxrMW7IdP3UHh6Q2igyGq2JontjMmcxWAjz2pkpkmXD0tPHVdHAWFU4F3Xl1+049CJ3HvjswjEfyxR6sXo/fQEP+rADFtRGKvIa5dRQwiCdhzCA2sRV61z7b3TvXCEab/6UzU6PRmt3dBI3bbVBlkqJVTyiHSS4HsYmAYOSZduq/njYK9HJusl+VywD7ve6pDvlElGb016LlOAWOTdjz9Io1gNI2V0C+fhSqXPRPWac0Q/TNxqtf75SCEhhwhJWGo4AZTe7r9KXA4RTTrmlQD37XhKcHTQORgfqcU4lkCzCsy2w+sCmH4hiO7210GKTVP/pEAmjcuOCwBHbhICnsLBnjhUXM38KpKntqYKowvHCmMgYWWTV+1coEIy5XzwCpK91gOW2xM/2Bxm/rH/8S3+OQttLlECp/Dzyy/vrjgkIYXFwXMmjjx6EfEruM/kadwMdFyLMgNIAt9iIrs0gUOqQRMvPbuwC25KMqcv0DQT7LaMatNRCpxj6xMlIZAKOtPa+eu2UDpyBLDYdANIp4smCd2ozg890wwaPWLVBYeEKRPSISzWmVJZ80pMC5pDU14zkMLAq4D+Q8jkYyfzPrvhn2QyExkYPKWg8qKt6+jhg8Oi7vUv/naz84dKjsvGj2BdMzJ3+WcMegJ4fislcKBoAktf0xjebd8YVt91ZtCahgQPNzoUs70BEcNUYEkiC5k/McAyUKiXKdl9yupYLMMEfRabtM4NqKzWyYxqM160mf/SF9IPHC2BPD1QK5XnevugYTEIFZ6kBkFBVE6b96XqXdl/XcKeHLGgTU8dc3fnqmC45l8X6rdKsGdgGRLxUkLIo9OGXB0N4FAu2j1emTVRBwQlFP2CEStU4dGXtSPwiP9cYnZ6VaYP5kIdGbjohMX+3znz07CBMOQS6fRhuBTyCvcJwuBv0Uv/QtKKMPrr8Pit+jHQQCRUIFExUEpO7baXfl6AD8tjN99GoLA179QlhrcQLy6E0A8mgXiEa1KAZnlQFvwem8Fp8QNHqPX8D+LAEyb2QW6a4ngc8FZVPDSxFI+ixm1dW6H+4npmlced4Ivy8tFE+VEJD0gQknv4p2eCoTzltcHQMGJ/K9W9VxKPCXUa+kfw9sKqV3274vgzvvblb0KOPQCd9152pSO9B/frLDvt0A0y/reuhscCjva2Tj/XUK/L1wKK6eMQ0000TICuYYZCVp5PPBvQfIHkV5kXdiYe+uzQ8xtyD06Wfg1xcP2mFUS0jrwGY+ZH5Cwxl7QlH8Ie8MdKYdknxHAx5GV0JnmGfTzIEoJOZe/ragkAI/hwUH5DPfwN7699+KPhFRVIHHgKhWJ8w0FHrEZtRC2C7db0MHPHp2MhWtO3VCSt3QN2oGGWS0boQqHo5Gyptb58w8e0Cb0fKXajsCE08H38gQIjLpP7xhb9cJqttvqacOhQO/j2L/r5RopNh5V3ofjas5P32JiZrBg1Q978xT3jDU4i2XAgtBUFwu8sxk1Q8kjv9ei2HCIPqJOO6cPzWQP6WyG3OnCWYq62ruC4Wgn8ad4sdpvJ69wV/0CiHQEQvGf5yKQH3rDC7LwgPgFsNRPfGVDIqPVBu+HSYgV+xigXs1FerNLzXPhDZDhL+lhA5tbk+r3oh4JkYFtrmAUTqbYiCYz77m4CaiAudGjWttVDjILk59FF4Bh+gvbed9xaMX3/mLz0xTIDkRz7NBKoaYOyrvVG7gUGs/9cGxhF4Yce64T0lphPCJl0dv7qHxkssl2YDmChBTy/YKu98IsqpP5KAkEKU3Rt/GHqSCSIfgA1xbNRADDpaw3yQips6V1FO3emB1ad9At3AeiLkJOMu6EZHrBidMlvbB3RIyn0h0Ceg0V3exK2PRE9vYmBHFPlCcyVgJsaqARu2fLgvxeIRhCxPIplBAtrSB4RIVB0rSPF/2jhORZLJt1jGRXrDnnBxZu1EC0S+v7rmzQUQSZ1jYPmy3w1qAbdmJo9WQmK7Rye6EQ+8nmHNvfCTDviWeJK6UCJBzcccbK2LQ+yVBryt3yVB0r/PBzYckKMzkmerSikIP/zTWndMfgia/Pawp7oWQtVKrcoWIQ8ymMlbzp2tBlPHAKfb9tfDuHTnbezMY/ePWqxALaYNOH1vxDKMiGKi6KmXmg0WqIR6i32vroPPtbVW+7wQ48ZBZ1pQagjh9hGzcWQbAXSXmPQdtX0jNXAWNB6JRLy/FYramE2j6294iWA1H9s50Bg7iEThX6mq2UuGu6oBzT0AJbGVTzTY/41Ey0S5PkLEFzr6jS5B90QhLL6p5eYUx6A73fws+hU0gpoPz979WBHtrihuwtuGoef5S3uzaAKzfaXECfA7M3lxjJX+jeX18u75UTR4US51vLUR1cKS7ff5cWhAawWqfpkR1gccRw+C4ZjzsZAe/U75GQB8cxIi5NN7lgEQrepr35ZLWDuz6ByLZReFtqnsXZHKjoWEJGsdxOp3N5CKgvFpxHNmZDIKpGwrervXwKGumvMUzCumrbWwZTyZA14EDH9wzsGB59u3lCVIY6kt3eywg1QMpuYe1DSXKwN4ReJ03I1G7O9N+ze9k4Lq1fDRuB0HQ1/5VOiEMCnFj6o+PzQdfNadfZIUkyNVJlb01E4joJzU4Dps2g768uKXoVAXcxgUekVsPRx2t/LOS1j1w/iaFe+1KOnz692U/B4mISPlWSQHmQ8C78TCZR40MR/oWDmqvB6HiIq2Y/IBOUFG+1GHQiYB71tSmk4xHB/mrU5/TdUPC0ZD0QzgE8zg/B/tSAsrPM7vn/JQK6Rv8LZxLDbDyoMrI5AoWES7/fkfaHgLb8/Ve9C1lwHIzsLcBj0Unrp9Z3xYbhHL2muS13XTo15eKcowloLl9L9jrMFRYTq3bF34cwaFfc+VqFhh02p+3QyaNAh8fa9k82Ka91zFpjO0eBgVhMvQxvzrgk62jeX5ZGhgdDmSV1sMjb84hsmT2IGi8Xqso9qmCr0lg3kyOQGOXQtehahAS9+owHlivhrXipX0FiQTk7rB+xJWzBXp4zqXcFskBF8vCJX/9IDTw0GGW6k2FY99uPzTtRVDcKpqsjSGgo/7vpH/gu+D1425uW7dKELaenNh1JSCmkxu7jln9sKIc9DBDGgsXj68+NH2AQWofU7OVB3uB+Y2Y5gWuGuC0rPUeu01CzXbNVkKumXCzoPBHllkxnHsb/piRHIxEmEbrgl/0Q00Vr/XPL1VwwD6wZvElFmn9Xfys+LcVtvcKrGnIZEEG/7kKXVIIOmEV28iQTwH8u+1Swdoc2Lsp91xjlYjM5VmuhHDXQ1132zeOzDyIvIzfaDoViljMTcnH2msgaTb7RFF+LvywKLxlXhmMRmXqmd7UDMFh4fIlrGcqpByzFO1gxSC2gzMM8ukD8LHryOi0diXAyY/TPKFEJOdETLD92QP7pyUEJWur4T9dg6NLh/FIJ/12v15TD0yOej5RU6uBEPH7cd0l0ahEKd27pbYLAuYNc4zcWoCjOHbwBM37OtLw0QGr6fDmWklOgQABqlM/SzDphiDlmC3vZbVWGH1snPF4uhx6xu8+veQXjSSTtjTb/nRB8x1xzuwOP2jbZagwySKgRcYaiUP+zdBstcJC59ECDfwKJwfcaPfl2cHEDu8hMDJfCIr/i4H5MzKkUWsaP1uuzA4Pd0MhW6tDOWczlGWls/kei0ap+c3ffm90ANvaS6bR10T4RI7Lc7uOR0z0JTw+oh3wUjGg0pq7FGLvyXUs5+DQVm/E7K+nQxAabxiZ+hNBG59HwjN7mi8QfNb4fQdhO5GjqkS2CRSWMqtW9AmIuOP4Wc4lGcbObkzxuxXCcRP+E95iYahS7ZFNCSYHzvlJ/i2tKoepQyyJqvNB6O2Iju9p0R7AnPUTS0krhB6Gdwn5fnikMObPxXyiFEQMu2PHJGvg9RvMn0CnQJSd3PTspxIZ7M7v3+FPqoZ0V8WpI6pRqH6x7PmiMxUUCPaWetupUCy58Ms/l4DqyVp9zUqdQGcY+iBcvhyM9PnOXQ3Ao0vDXXI+Ft2w/sXKlGkNB/UXLY828RKRY7Pl1qW1LnD67sAhYJMGX8R4r6/wRqGik7dZmiZ7ILD2evJ+Gj9Tqyd6zy/Q8lH5NSGU1g42p+RsdIIi4JzOsRXJPVFobqaPt3OV5qHmowUstmR4XhH39002Hj1P9PVN2k8FFnneWaoLzacQ5+7VuzhkaeN3TMofA++0+45p69bAH1xrSVRREFqJb67POtAO++L+1SjqkGk5/bOqZMKhqCT1QmMdCpB7Nflcolsgk1OjXDGbhPC9e+TJMoOw96WD572LQZD3QEE9aI2ArDYUFxevEuA2n15mq0IDZA5c//IoKgLpp7ON32gfAt3Zn5I/LCpp/OJjpNkfhb5msKUNplBAqKHa4NnJFljsSRONHsEjwn06l4dXybArsJ4QqRcBVx0E/arXQ1CU4wOcbmEn6A5JRARU1MNgZ4SwxzIe8a9tmwR3UqGLo+6BZnY8jGB8JNXW8ehEcYjhPlUKjGFdzxL++kBaa5VodT0JsVk/3zwvQwWm7o7MQu8yGHcqfzcmSEThXm+ebqFGELA6qaI/ngnNX/emGEmHo/379TaKlykgzT83LGzVAn/jw/7i2oiI76HrC7WvfbCzrMc4EVoGOzklERe+k5CM73KvcGIHSFV4WuYJk+FboeKHEH48Yh+wTDlE7YQQenkFidRamBAx35PVg0VNHw7d3yrugjkJKnucegM8Xefn2EiicabarSOd5D64w9C5rJ9ZCljOC0eWXAjoR9leDzrZNlBMztknPo6gdUluPEAQi44+bL+I0++FM+aE0PUoMuiyI+3v3tHom4BZUdrNZmAoTJ1DPAisXxWMczBHIIXk0md000Mw3+byIToED6UlI+x2UtGoUPdrUxA3Ba4ddjU86JEHAqFKSxtHIpHgqornUY0eYLGqVBMRr4N+/mXXpUwiYmENN3Cmeccz2eEL+ydqwWZb4fnxKQIaiJMyGJavgYUvJ29zWJbCI9uAyHyjYCRlyvaiaWMQqqzFY0aOkiHuwd3njBQSmn6y54aCKRXu8PWoU7dzwN3/2Nf0fXh0zcv0MvM5CiwSvxkXNDdDsvrqamUHCS3qso4L5HXBr4YkGw/+NEDqmUW84QQUR1K4VZ3QDuT3zzcvL9fD39T3N4dLolBS+YncNgEKSHE53C/92QheP/3UWc1D0CUzE6O+bCqUXKJ8ZrDzgfvJv3Te3SGgGsd8jmeOCHwHnjXEJmfC5Rgv7lL5SPReIw8TwZIGTsEi6WceVoHiG43Qj1KhaC6g9Jvro0FYP9V0lZEpFQyiD8527pIQd/MlIY6RNrhnnMX97U0N1Ct7z/hRsOhtZOnXeGwu1Op6i3o+Q6CbaacZtRqErob+MXENqoL4kfBmMaEcwEWF9m39C0LDxMcC3UmV4KRp9dTjQDlY7LdxbgoPQn5FxzBef6jAyStdob1QBmLDBME3dYFIiUhKNBaigEblizx9XCE84ddjcH8djGzlknwkdgag7GYF2mSqgADhvozSURqfpF00sxKlQPymdtMp3hJw2UhSTablL3LHeUWfngJP5spv6CqUQfvnjF+aYliU+OaodTB0wH88oyEve5ohgGxVEsSBQdPSDIGNSW2QmU45LW7XCCzlyk+pmVikruTyibzdCreZU/gaokgwiqUmqx7FoptuoUs3WGh3v0tQs4/mNQeK08LObkejYNyJp7i+Hni54XeMzyABhNCrl7U0ntd+WMpdM98Hwac2dfpmEEgw3PYqWyehsaCES5OUVpA9k3LQ+NFbSHI9DCa0vaBfwLrt2gzBgmCJ/X5aflf+hgXvC8Kh7MB9ctdovYExShX5kdsIpAxi5awgbX4yIiSHsmie+DYhRHU2BqQyby6ZPcQjezeRNy/G8MDwu+bLubAWEExR53hxPhL1ps03PbAchBPixp7PspOAm/Au8KEXFvl6nGLCCJYA5kVub5hKOajORdUNxAWiL6/XrFm8+oFS4L3g4dMCM7OjwMgZgzgtYgWO3O8G+lqty4Znm0BRO/b92E8COnb97AWJpgFgP1AyrC1ZAstTLx77u0aioihBmOGggC5o/o4iV8Gfhm628QYSCsN8IT2UaoLoJ3sXBOWb4MP15RFx7XA0uJ9H9FdYN8jeLzFrVa6EZLNd1/VUHOoBUdaeZ3ngKxfgpbpcDG2rWiInzILQXlVeL+XmHqi0cl7y42kBNhGj18v38ehmKF3MY8534PE7w8havRDkrVh0OMuxSCd0v3ZsTxvM35fK31eC4FHT/HnlnUAUrvXHFvONABh4uTl/LAyow4ZLLb7ByEbL9fy5oVbgCj/yubypGZKy5mo9H4cjbHbxHI6lDTgN2ExyPBvgfNa0oHhGELpbP5byaAYLk7W4Wp/hWqhyP4t2vCORxs212LPaseA+5CNWrVoHLxySPz/dF4HUFA7YXOjvhT+X8056PKyDbRHfB1gbPJJWZ8dNZw6BrNdKneoJBBbf1jI3KzAoJ/ZZ6zOzbPBIKyNFc+VAI0c92OylcV37JVvNnXZYOEmHj/mYCWGqN5OfWwaiq/ZLMq9sBqAmBeMlJVYI0gwftkMnCcjz890TeOt+mL69t+3AbAO8PfYgin6bhOJcrhuQTduhkbNbws+/FoYS566y8IahT4P+d6Z5+uHHuXAjm2dVoBOmwsQyT0KsP+zq9JhLYbnXrHjtWgu8xZka8WcHIim1yU+XusuBkh84+E69BP41d9ZuTwaizyqmX+WH+iD89CHf4t0iwPYKfUhPCUbddp/QO50OSBzFQo5SKezsff426XsU2rH1vyH+YAhUL7pmfNybB3nnd1KiFnGoau74QYMBKihWZR75108GBn7lIFFKFOKJVWV4yNUKl7VvSk8UkeHtoGcSs380wm0sCyZt90OUSBzXbEoufHWfmH98OgZtX5VnD9yLB5fqJmelKSL0nLp9MOZWJJo1eD5z9+MQJMs5zh9nbgSckw7H0CIG3bKvNr/R1QEXk9kLCu7lQo3CAcV9yniUW1HMqq7WAVWwir8rlAU9m7IrBxnwSMuF++eF/xCoCeeLay41wrejx5ua5APRt/0jii84KeBsJO3kplIIhGs3Q3e+kNCp8ntq7SM9EDotPGXWRoa0jyLb/9hJ6KYSg9UPngGgpxiGxGTHwhQ+VRh/jog0T/V6/Bc1AJblLPn+E4mQ2vZNT98Xj/bH3bvVdrYHPt94tc4aUQNHS1HyMC4EPYoSsm+d6oPXVnpcO6drwKjdt41oTtujHIduPvshYOD6oZXojwX+5ZEpu84gdI3fa/31B3/Yo+nlLcxZBfXlAsL4NAx6p2f//osIBa748W6UldeCpG7SzaeVJNTF4q1RUEyFiOcGFp+GG0DDQWRt5G4kUsS/9dwb1QP0v/KNrvemQr2wMcvQf3ik7HjauyR5CD4YNrljlxtAOWAtbk4Bh/b3JjaYq/UDaY8pr35+HthLTTpw9hPQKZY7s/z0veD/c4vV3b8J8BXr2+rHCSj8MpkvZ4QCC35HZ86k18L7AxrwuIWIhIRPqvDktsPahypmqb3NoBob/dUgDIdG9st+hUcIrveMPrZ6QgBn5YPHRvUiURIH9zfDuA7g+Wn5upBQCnucefBmAYHoXqhPwB9JCryu1zshQfNoHSdfIasDYWizf2v0gEIj3IpoFAhtI8KWa73Q07IwdO1svClTEwVEzj28vewYDJnqXfXhTHg0fOnsz2Yaj7L0x1xI1kuHOuasPjpXDCq49b0dV1cLeuQBTq7gFgjaDLpvxh6KBIxN3L9G03g+xTs140EZqEaVftBpjES2aQy2s7R+HNvrdnyQFcGNY5wluZZBSOa57qGAE70QL5ogIjwdCKEpRiM7TwmIW/+0VdKPHni1aDJ2P552x/OY3/LRcpvBsy+r5fdCqttd1i/zlTAavTdFzIqEFLsLfF6akuFcmMBrr3gy/AtX3ld5Phi5j8aYyE0OgZ99+Fjh1TKI45/Fzk5jEO5w4osF2yGokx4zMpoogjJUJhVF8/ea3EXDqOhomJWQFWODPJCLarDzr4lEKlOvFceXWuEfwyjvx6f1wH8m3rbTKgL5Sye5lEo3g9aBL6Z7nhTAf1dbxafevUGPCucmPRcokLlZpOP7BsHSXQ2V/elEtGXCWjU30AmWRsTPQql4WEgZWRMTD0LPP8SHOaX0Atdha5Ya5Tgoyq85zcJCQKWiAWfncluB6W/u3eTparB1fnOIuAeLej7/u5h6j8YVD+fulMmmwbTXmMpfMxIa1bUKrvndAVGLXGUy6iHgY+D0tvkZHqXksDAbnKJAjIJn1AiR1lcPjlqcqCWgyV8Hgs5cH4Bten7TsqoykBB959uvGIMW9WNyMY6dIL3yKKyNvhluvmcL+VyMR8vK40/si1tAqqn6ioxtLkRcMfh2VzMcjTjq6LmwlMJexcM8w6ppQOSRquPeCETFHp2yNzuqYGRhi6iWnAJTAtq1lReCUUPudYEEQh/wTP7Vm+UthvKJJ4MVJSSk4JITUl/WB2R6/jfpJ/zAK0/uzv/+l5JjFN9jKegHy6YNU/MUMvTqnv7SyRWNakTeRh4qwkJR6vL1H/3pQIcKigSbI9HPXKq0WX4XMEjL2l1oygODMvGXQbei0WFuSrvEASq8kVFwjlaqhDoTZ5mJF0TUdPJ7zOgcFSQ2cc/IwWVwFFuZ87ISj4JFtfu2aBx437SxSdu8BYw1frxpaaH1QL18mHxmD5i5zSo+LcyFpxY8DN3/RSPv9N7jH6azgXMSCcRcTQfHf0WpHdeD0bHis61a6RXg/WBv4anRfHDpHjCX1g1C+zRLW1bGq6Aj5NCxsyWFwFXA3pLORbuPL3YX6nKH4H2m99PD043g+cNss24yHFnU750LqW+B6k+5fu2juVB+8MdXjFY0+vFkn7L+l1YQyjm7TR/aDCkiGDllSSwSqDnSg/9QBS6nB80ZX9XBf9HNOUUrQajM+tffb486YJ9ji1udSAqofuTyeUXjw6CPKdQbomT4e0c8R2C9GUIUh6bfQxSqNZZUUioqh4mdK68/niEAZ890wiVJ2nOK7nlmdbdA11ucSLhlE4xopex9ZRSNwr1lzciD3SDD9r0C01kK9ywGm82diMiBeGcmPp4K3cJKF7bZyyBHfPToNZpfVKpVKSVOdoG1AmY2ybEUFEdOt0xTCGgh/vKXvxe7YPWp1v7LY7kwYHBpFnedgMaXzn/N7euCAeGt/gusOXD0muduyQWa1zgSxNe+9YHgpwgX0RPZcMZzDWNDxCEDMb2ejIBKyL/GWrZ4MAZKWTBR+YzBiOtvsZSTEwU+Wj/HRBnnQ9PVVp1LjFj0wknEp5zma/LZmacxhxqgdzJrokeGiHTltKPOhPfAvPhnS9W3BSBnwNe59zMRfcZXWpxyG4L0Of80qzUfOCjEIrmdgUPLMeXH3+9S4e65Fy2fPWphzmqBji4Jj+ajmK1fJCDIWxpmMD5eDEFz5Y+P4WlzW237527EEHz552Q3FdoC9/iVNvuccEi/8BYn63AF3FAqkm7krYE3X7Li8KeDkGJBZbP/HgqsWbDzpbJkw9Xnr7S7ffAoIoTl/VxYF+xkl72LZisDwfBih8urWBTTX/hETbMXegU5C9XdUqF1ff/Ck9skVPVdg8fdogfw4ro19VNFsLw2xdmdGYpifz+pOsTeDfdemUnfWfeHwjVVuQc7OBT3p1l/iHbHRxPS5qdx6XCAxZv1kEIMuuVw2/DKJBUGPerCdaULQfuOXrgsBwG5qx2awYXSfHN2LO4JTyGcUepz2wYSWtLh2Z7wG4Rcrfvlc5wtEH5HvUTiPB69KtRbTMUOgPbxKczL/ZlQtaQmPlYZiER4Ax82iw7A51GCsTepGsZOJJzvOkNE3LIa2udp/HzO4WN6fHMKGF03EXZLxSLhV3zq1tFDcNIT1+65mwkXZ4IjvCxxKGLhfoFQRwswN9Ty/aBPBMztZI/GN9GIEvZRY72+E7ZOYfCXNytA/3LPzB4CjcNPg9U7GtcVYS3e849kgbffUdXMYZonLoXLf6rrBJ/SDo+X0xXgbrNhvnKEgMwwgtORC22AufG9BTuEA2tDI19zBhzyf5ecFZM8AP7DE6x9Z8hwZj789xGBGJQeik5Mf8PBmqzFyzGzQije+pCj+yISCac9EQjZxoLi5izTcH8gjDEWLaqPR6Kps27E+xGtcK50i74piNaHB/mstXpCUenJsDtKYu1gdtddOfJpC1yfIgTP7GBRTt85/+qudmB0vrxNvugLpltd+99l4tB3uHWJ6XIXaNj8CwnSroE+fnyDlgsB6VeymOmNUuHac4syglgdDPomqImoY5HCyR9MM/GD0Pf0b3qVfSUsDrv8CxnFol686LJwFBUYjxyalT1TC5+ZM80JbgR05tCNgShsNzT+Xsm3cKmHtSX6nlY1IjKxzeVTKhqABrpB+uKBZphitMhxko9BxzOOksLPtkOh/2Ysp3UpbBy1caJK4tCVuwqRG5WDkOMZ2zrwkeanqy0EeT8iYmKf+jjGQIEfsgklFO5UmDvM6vrpFBFFvonfM3CCCis8mtIYqUS4xqqS+MCdiNpcBrIoT33hr4pEEotnM4gqLiVSD0QjImtt4taLNuA61Rp0OygVpoNI7vK74chmcTlraKsaljZ+MMxklMNGOseE1EAwouYZld106QY78vmfk0PNYBm3eWvPPSL6+XLklkpyP6hJrtzdjkkFPOch/WG+SNRk+vuNwPMhEHIyWRWwiIWMVmb7JTyNGxd+BhyjG4JEDsvzipkJwPi8deBnDBb5mB10NpPtA1M7w9REsyo4GPAw9SmVgFrps6uIWWSwIODa+JVL4K79MdG7DIHI2qAu/2FrK7TBZ0midClcfxB0YeEQFv11aEkyrq2FFjs9Pt45X3BHHWyJSyHIIfy8RPjbLgijlvb9DK+HsuE5gm8GAT1xOkAVf1gAP0bT4vY64aGITnblj0cQUmJI3G3b6oGhJLFr9P8QnHdLGljVDUEJ1ywdvWQJwJ0nsM+tuhwm3Ym+B2cjUCeFLKPJhYc5xK9I7q0E6Mk2x92IRGJ90T23HrZAXBHTyDOeItAyrazalohGRY+7vsmllMF1ouVbNqcm+PpL47wKWxDarD01cu/jINyIybk58awUJk1UwzQ3SMgif3Ryv/UgpNukXCHwlgP7WbJgkFgMooqqptqwUsHrsvvI8/p6GP+a5OpI45/LA9TbwW39MEr0c5YWi4bW0GbDdpkYxJBwm/zP0g9GZRqSbvyIBTb6qNK0dQxaCss+vixGBvn9dGO7H8qg+4s6k/n9KBQsP9vwa4P2/Cd6Ky8tc4Hz0dVYhVPRqIlHjHvJngLD1ha5EpergJu9MfzoeQLS5JlLv3I6BRhF/Z5EeZCB7P5rNVovDEUkNhSo7dL6pRMvHZPzBqZ2A5fkVwNR2UFpxuQ9bZCokuCf+zQQUvfap7JdiEI6ujru2nGtMNYwZJN6MAosbP0/8C2Forx97/pN+UpBsyGLb+xoCYy/Fp7NrglE6zOTltPRA8DWf+6Hv1wc6Mgcf9ovEoMk7H+rs1MQNOz+OztFrIUCy56dqi+RSLBjgq7oNhVu4PV503H54Lz786CdKG1PP8PjPyQ/aEtreNVc8Ra8yvkEdPmiUezGnEHR8xZ4fsZWBPjqYPRc5Ow+Wg6E14KSTAcH4GNtRdPf96Xw+P5TsQBeIgqiE9ZusqPCL/qdI2/KmoBNeCX3ZicB+U0Pn9UW7YHp1/vunZ/CgVZbY+dUJRFtvN6ZCu3ohvspb4hfXpLB+HLBcYPgSKSxo1Ghq9cCohSM3M2Oagi2Oaz3mD0arYSzTk55tcIF/Ut4zNUM2K57OSvLjEWV0ZMpEXgiTOPCB06/q4aM7+eSv5IjEB2GaTlTqgdeqymcr/Ivg0Mjlcd9abz3RjayaGmAAl/v3u9OUmuCXcMeies1GHRGArEYoR6I0L+lXa5ZDlWPRY9b/CUiNqFrL7UC+2D1TTmljDsdtMb3/zrLSUTWriYGSixkWLsZs4j9kgREbzmGefcoFEdqM6K3pEAVq8lraMHDqO+ePTwhJJSpq69+K6oBbshp/wxqzgGz9fcPNcbDkCWlLMb3WRf8kdNvve1Ehv2Teqs+VgR0g/ELY9jjAaDj8a7bqsmFnCpnvusleLSp/8uwK7YNvLp7Cq4rZ8Dq6aq2sqsY1I+v/UhV7wOG8puCKysFwIsDNUFdApobx92sNiwFpw0n0QX5SugqyjJ/wRyEfjMa5ylUlIOJ/qNk44IKOPVHQvi4fBCKVn6lp6XbBBfQVsVmfz2tD3AXM16Fo/I/4y3eq51QVK5pLKGYDqVrvaecHXHodSIzZTS6BfwKx0q0af2Zb5UlJkQIRYctZBLt7/VBereirD99EwiUO/mbtZDQI+NhO0PJLGB22TPJLV8G//5eba3mD0GLZqsv0m0pMKbhYq0cQwZzcnrnKomE8l3jup/8roJBU+u56ftkGHd72tH6IhjNWZfF4EUpcM5Rd9fRqRFOmNAFei6QUKlKKsuV7D6gU6NbSjpeAYOe6qh8NBJdbFSN8tHFw9WxaLffgklgcyvv6DfnQORpL6N7RfMVmDy+xqL8H4JPJf/xSz+KRt+rlewHcinQsvQhdiOvDKiGY1IsmiTEmKDZVqbbBvuV7OhH0nxB5pND/85rLLJ+JcYoJUcBCUUhRxOHAGCQs6vElBFQpt63kMgL7RD6+cFxyZy38Oe3t9rZizgUPs9jUP4nB+ZTZGZ5t+PgaLvhbw6lYFSjFuQxf5QEw42zfCkTzWDsoZg4aBCBIpMbjfeFh8Hss5cHeORb4Pe9tyf7PoYhGwOr9uw4Krycdd2J+Y0D9D1ZRcOZxs+HC98rhQ3BrFITUlgvgaIkpn/l7jjE9N/rL2Lkdvh+/xO2GV8E32pXr/EX4xCb2dMPr+ny4YQM9c+liDLwPRvPW/YpCDn1f226KpQFRpVZJ03EasG1MG0zjjEEJW3sq4ix6IAQ6385HEdyoWdR4d8jJiyqqCIImYhTIT04cKV+F8HMM7boQO1AZP9S/2rnIAXiMBQnxetVINN5yKX5WiS6OviXfsi1B27mmpwm/yBCXKjJTRjDo8cm2LspGArcDayCeVwdfFQ6XRDjTLsLd5QfFI6+gr2a3jIxLmXQ9jr0PjfNR+Sf3bvqVRUATzKmSZzH6kC2mNK+049BXPdtSl3GqUCduK58KzGZtk8UleKcSMTn5PTrZ9MQnBb9LJKwSoYjzIbJDaLhiJfTfHHwzBCMYPFNjdwlEDV268Wve1h0k6p7+PtcBYTYKsdvSZJh2GDkOlt3EBo+9vedViYVKtIesdRdKwe7nwGCi/FYpL9rMNy3Pw18b69OJ0Q0wEIwvzehKRS5xeUZp/skQrUJtgmwjfB71455nCkcad99F9mbkwSS2iHvOR+9Bruzb4eUF8NQSorC7SttXbBg1Iw7fD0femN2WngTAhFFZu0/TvtW+NeL88x2iwIlDvx4Ls1P/eLZ//4y64POotJHVowIAgj2R34NklCo2EXw7qeAiq558KmLFfDN7O19Yg0esY7CgcuiVDh567CtcXgWXHYXesfgQqT5V1rsjko7MGcGnotprYT/AxOhFcd4nBSXdzzV/xfHM0KZUWSESCSrFKFylBlFhKgQERLfFFnZe13Xvdfee+893/fa87qECklKNJRkpfK7v//v437en/fnnNfr+bxBOKOgqhqPBG3OsLFrEwGTNOHORSyGF1/keEhtsWigqDZckQ2Bb9DkHN+lDojkG7oivxqN9AmXHG9zTIDEf579dFbFoPfo19JiDRYVrcGQB7EUGM5/uvEgkARMuGDXy9WhSPo74Uia2iBUabI+/upQD321NXyr/QTE5EG7Xm3gD8PjbnG35argM7HMwU0pDs1b/g2gv9cG+yLKvmp8aAGOFuWGOvtIdOPa8PKb6V64opyoE7ZaBZRsUl+KHw4J4dLSbrBPUM/BoRFk2QA0GOK38mYs0pcQmX/UhgXWuRTuPisiuDhOfnnZFYNeesxi6ibH4KhqUyYXqQMkQ7Qzpc/ikOFp9dlTsm3wRHxGIUW/HVi+7Hu43z0SBX4+cED2ejAo1mnxcl3DwOL6xpWTdHHorMyCUbd7J5xlevl1uLYZinPdR4k20Ugg6LfYC1ES1Jqa38DKJIDNVe5vIv8w6IoipvS+0QAYSEzITFyqhyUWtY+h0gQk6pXbU4j64LrCIaORu9nwu/Ni34WDeCSsLCsVV54FfHI6Mw8W2yGAUi766XkwyuGzV59nHQJc3trcNZYi+Ei3svefMx45nx5OIfSNQ8b4P5eSxwXAvLxsG5+JQaVTz+qTg8fAGolPnn2ZDZGhT0v8XfDI+iz33lZ9CZzuUY90DG0Atetin/m+hKKYWv1G345+kP8U+y6cifod5RujlfziUVzo7MVHP+oh6bhopH04CYL/aw19yhOGtEUET5Kj++GWvdzpDINOcL2sJ50chUdRQoI86jlEENA5FfCFpRqwEiXKbVIYtMeukOmp0wLcofgDgE2H7vRfoTMCESgkoZqu9lofaM9gknbr2oEu0Ztl348QNGXG63z3bR8w8o8JMgvXQtKpejk+LTyiEQ/af6piBGh+hPu3OmZB5my6IYErEXke34l7UUQGe8oh5n+TbfBMJm1qVwiLMASN9OOSZCiiWHnw4eLh6nx0kKV6KHqIhm8UTiaCzch6utmzXBhpOYy9aBWNksidlN5DE6C68V5ZXSUJGG6c1blKwiLNu7eyCU7toEaXqXdLux4c/rz11z4ZhbxzY6d+PqJApY70zo0LdUBm5ZLZHsQjTGdP1M1uItywvzTFfrwBrITzbRXsMOjB54mMIeIwWEkUuFo4RcLQdL/IoywsMohy/DdXMggZB6xEjW1fwKx00fqBTQIamTzXJjXTC4Zpw6dWDzcAHe2+ZwnOOBS/oM+Zw0SElf2DC0ZORLg4zvbdzCQW/Qv5deio8hAw7U0/nttAwD95UH/IKAF5uex5BTC0QOaDh/53qfttc0h1aokjAvW9cRMIZyHDLM3v02k+zSAookFOPJOIUO5ql4tFJ8ydZHcH10YgzLvk5ClHI+kXIVx54oNwfuaE1F5nHrQf4y7s345EcviCEyaxaTDKSCPxLTIFPpq3PTm/GIncSV89UgNG4N79NeYaXACQKJlavhMEhPWBEPf0PshgVLG+mYIDucPONCJseMR31bcsSIsC0QE2ziW3EMjcF91b2odDoENXXNE5Bl6lDq47XxEYhGids/LB/f/+nVP5e2CJ1/vWf4wk8BBZKC2bjkXpKQHuycZj0COSHPd3fxWw6R+8gXoTEIOM8PPaTgQ78xeA3r4ezM3ej35qjEGEc7PWPnpjcIcQeq79XAVsr+hf5zpEQJGG3CfElHPAVVTZNP5hC/Rc0H9DvhqBaiqzDG7zDMNHFlJz4HQidIf8/PXsYDzSzguWqHnaB5pszHQn0gLhI2tZyxnZePT2yosSvM8w/OCNYJ041QnOxe0PJRAebZXyRrrNDMN0RVpE+E4OXONiyhhaSkAf5A14lc+Nw7AcWeF6VzrcwC4f7NTFIfu/gW4COGqeSKUP8QYh2Cx95PXkQzx6TvuF2fZ0L7Bj5wu9/FuB4UvPEyZmHNo8o87YwomF54dflWucqQG3wDGTUd5YdLYnud9nOxce5As4xK52Quqh5GtCFeFofOCe1Z3cDNCjmIp/pcuDQ/4MKne9qXn4fLKPUFkB/Md/3/EbLISB3fLChu8hiOWdoB9HcjUcrucpk9kuguXH9Dh51lCUIzRIzxsxBg8ImAyx6A4YnGNidPZLQConb4f8kRmEGZ+tboWifFg5LS52s5eA3pnnffF1I4MZbQ6LS3EJiHJ/J7uLJqJMB7aw+fku0GRx7X8mkAGB15b/e3EdiyYeXu5fW2oF9nkFrbdLteChejk0QyoSlUhx/3F36gXxBqM/dHOlcDHAkuXbXAwaVT712PXmIIiffKbHK94Ex4ZaP6/VE9CxFyXTUpZdcL27SyTHjwTFNz8y/tiKQ7StrH07MX2wy4rjuhhfCS+fhP8+9QOH/B5z2avFUEC/pRZzOKkBFGjlpz1S8egy69g1Pup8lg12KtYrFkCK6jLlqRcefd76+9omLw0czSyhn7YG/sQl3JArjkTM4oZpL9SHQLTQevLGcRzkN+nLN+sloPkIsz1KNhno32pzFtQRoZaOEFvcGYdM5Gb56dcbwaU/sz06vA3y7Tnmi/jDke7mXyMW7WTw8zzJ9k6mAdqK3j282RKFTgR7Z8Rrd0IMru5UB7kEuKo9FcbdolHzhm1GqOoY1L30+Bq7godRuPjCRIGAfhT7JmqVDoDYZHNOn3gZfDQxvFB3h4B4NmQXQ1spwMr7OVCxoAgwMXPYLgU8CtBocf2XMgi2LUvm9/NJMOgcRrvwh4DKC81G9+WNwh5tz/PA383g/6nn5P6UeOQpiRLkq0dAiPOJOlMGEYQOYoZ+Kicip1P7rhytocCz1oDTfVFEeH1MyUXIB48YH1/Xln45DuYeNe3Fek1wz//B9IYIBhXvEhm4QkdAVC5RYfVXPZTf+nYy9AAevX9xu01qLw+uLuLzvJuJsPcxbUxZORxxdqsojKW1wkPC/o6rrxCYMO1VOe9FIHrPKw1zRhRQYffvzB5JBH/Zq1/Y2HHo14ZrVlZRP7gUCjw/uxwCUgJTsWpOWDQSLvWEXpgMvAF/bNb6G0DuopC8plAisp60TnfgLoPNd8qavkXtYPXuwnO/xFA088Pw+0m5cSg5nG7w8gYJFjEBKEgVi+wC8vjuZoxB3+bKkfwjedB1Fitt0hqPNtPZm/YrDoMGZ8HfGLc2qDoUOmU3FIMmR0+E2km2wC1UWDZmngeqvsZ+RhoRyNz8tSnTUB0EmQQqd7plgVnJnGrHD+pzuQKvd251Q4ZKnPD8ag4wVi5wLpyMRwy1jpZ83UNQN+qUxIopAF7hqs0/qQmor8mqET9ZA5pch0RTdZrBLHXnU+ntULSd+ObLMvWedSyk//w82QQ+UjuVvdKJSD39NJZZfQAqhObER0IqqZxSeuLdBgbFWfQpaoeNw7u0vv315GC4cBLnJPwTg7CqK0y7WxQQC7bl2U/Nq4X2VOP+SRz6a6Ex++3mADgHPZ87eAwLy4XNseWXIlFZs/zfH2W90JrXJWhHroALKSt+hB9YZCJQEXDWtA+kvi7PdwlUw7DQjG7xYBySjPbGWs6OAY9kWxUG0iD8amcAnAtBOQz/DhI3WuH83ATb6PcGWB8U+1EoGIkOHK9e0PhNBFvL3Y+2GdnAwHlY9RpLHGJRH1lQrBsHffK8RLlhE/yNq8uTPBKF6NNS+2VZy2Hg44yFQ2AdxMzdb3nnH4psuNjor/7oh++811+bGDRS96xY6M5nPPrwqD/6iAkFnl+cj9imb4KNHvy/W9tx6L9g/vtrCaPw7fDn/CifNuh2T9Oircaj2kBF2yHhCtAv1zbZo2uC1YE1rzrzULTw5WAe64MxiKU5eoI0ng/XCl4xJ+UlIA67D0L/XUKQif3xOjIoC34FyJx+IxGD4q+0P2a2G4CLq7M43oZciHJZshxTI6D2+WH9qcEaeOskK9R+htqbQ6GOX8JDUfqNpkNnVCjAPiKwVXU2HgYlCSEOQEAFJcYieRZ98N7gpcelnHpI1zt07NVFDNJTCHIc4a6F4I3PJ/xjSXCifpGgmR+Kzs+WXVA2pebJ6r8RrGAn/Gp+v3upFI8+XjpJ1/GhF2zbUn3mg9Lg34ir+41kHHILC1ie0hsGIa9PxcPSWfCscJlhczYBPQvBBpkdnACRn5R/Y7ptYNYgnC/fhkU3zRQEbp8ogpQ9q5Xrfm2Qfu64s054GLpI9sylOdILaowbp4cbgqFBbUPik0ccMg2UlWp8Vw2rzPg91xfJwGmcQqJVCEWcJy3oOF3HoXmz/vKDgRboCxrUfVAXj5KSDzyP7CuFnegXP7REiXDm7pTkk9pQpGXtKCn6agTCnfpNtTgQJEgFmu/aEpCZ0/s16bQhqBd/RAqCKpj8XXHNvAaPxG9Ku3x3GAQPK86bsy2tYFxZoXdxNQ69c+Ly7aWvgqb3S2lYSyLE+PErEWxD0dEQj4tXLargSQDmyuoeFmQ9SwfzLoSi0/u/+JdY90D8nUbWQdpWWC6ai/1lHI9q6F4ftufvBlMO3xlnar//uMYtrGuDRfLRpV4txxoBO0wK5WtqhM8PzCt9k8LQbDf2mXboMDy6p8w+FUSCuegPF89MJyBl19AJ4Z/d8CFc53R9GIJXjo7npOox6Fzzqqy7yxi0by5JrjG1wp+j9euHJfDI6K2b9PkjfVQPiiOL92eAIf6ZNTY/FkU7RanW7pFB5ETruyyHCOAJG8NziSWiSOnIndyNQQgk2HeyMaTD6Tsm4h7v4tCJlxfJ+PgxyH+KfxP1vAlalHT9Ppbj0cOXP+3dz/eBvKB58lfLRGBYN+3XO03NSXstHv20Adg9dM2P7zoRHsbI7WJuEdAJ7Us/v9q1gGk3aS+tswUkptVpMg0ikKMJmWd5dRjS6Fr+uOmlQQZ9i9ATkUQUHiQ27VQUCp8/Zj+gnwsExveCmtYNUeiWTYCUoXI/6HVwx8YyUb3ywdbQ0fV4pHpvtN2EawDeSYTM3yoqA+P2Y/eSPsUjXJS2K+fcEAjQKUQsr3WAdLqOVxX1vSosNHyN9BEIsTKY7GjXgOGzp3ONITEo5/VeWx/jMEzlHftmWNAErI5XV3kWsWjd57yR6XY/fNJTjBL0z4R8liwm70ksCtek9PNzjoBHkZVNxusO6HrNJPRXMhEpP5+n82QbB3JE6W2XCw2QSPemODMWh7DHb5L0gsYhWIW4lmObDcLj0lfXqiLR35njnl0rffDKQOYZPrUD6F7GJ3Ddj0cjOLyGFC0RgFnNe9Y+G6SGTtv6zocjpYGhHctIClz+gd0+4kWietLsmtZGPJpT7BHgv9ULMpM1YYt3OuECo7Kw1z0symKzis3VHQd1qf1hSeEBoHrr1eFTBli07Msmb8RBgc6NfZyP2EtgaoA38lMlFmlfVFKvO94Brox3ElR/pUPhojh2pSkYYSp8E8Tb22G6XE5IPJIILe3WR5zwUSi4K8alvmsc2qJPK7MfQuDFdaDvsEg8qm3xvVdxuQ0Kk8dLfSxK4UFW0rs+UiT6Y/SYm31xCDhciua357AwyLo2+cmUgM6XcpRMe3VA73+nqo+G1sOGdsrzKtVg9Krvq23JeSKMnlX7LW+ZBA12Xbon6oMR08Pztf1TY3A8yvlL1YdWKK2oopiORqIb/1xOfhimQEvVnQNdLJ3Qqi/6MMsHi14f7u3sremFHM79PpeeNkA/nWmKhCR1bluZsWf6AsDk6sHg86eawP1K53FJgTgkZnDbcpeBAs0J2O9D2FYgn9U5x1dFQKcvjRb7fRuC24EZZ1viY2Fue4DxKm8Metw8f44PmwiH6GZdxu+VwOX+QHHhs9GI3/jn7z5OMtA2jf2SGqFyuiDP8Z7+CGSW+k8/aWgUZFi5csP5MMD17+bVabMo9IFeKjZ4cAyemA/qS/I1g4u3OPNtxnjEaHM6Wc+JAlYbZ97FbLTAGaM8loIveGT84G2fXHIf2Hem+Zz5lg/kN3oHiD1xyMA+dnhorRsGfl7Zb3G/Bn6plL9KS45BCQX7wvpvj8C7V2edfFda4EWI4pnXJxJRKzv7X5OADvhXVaX+mKcWHvB0CMbQR6OwibI/jtoUiFw7oNGGJ8FonazdMyUCsmzZEdpd7wYnRgftLqqfpiquGziJU7koV7RL9eAYEN9tY47qtQDl9CuxQMV4BB1fHfNCqsAkp01je8sftAQfCvZcCkVlh/z8dot6gfFzyzuMShOMPqXNkbbFIcuxf7t/lruAuaXFZ2G1BMRWBmlzCMFI3eiqzWufEWjX8PDXFSFBSPeA6lZEPCq7svfomGE7/Fg6W2sWHwxaS/9mSIJR6JSEWwsmsQ9m1VxC1wZLYTypXVKV6q3Po8kfpuVb4I/sQtWEXRVIjTisc1D9ujGS/v4Afz/YjpD8L3ogsO4zod11wyNF92/4NP9mqM3mn2l3q4PooN9+O5vhCHnnFGwF9UBSJ8u9pNhY+BrvwN+dGY8+YCRwDYo9sGOTe1W/sg6K7y8XPAqMQzaa4aeFzQbh691MY17uavBHlyo89wjI6+d7pWcjFNh8WfKKNioMVkN+qw/xxCGyrPh4knEStDOo640dIsIV0Z1e8m4UelRHHsioGwXc1OV6g5w6sI7oeY6BRJTbx1vkZtIHpl65TJKGpUB+GPiah7qPQd8JwfiROhj2GeYmt7WAzGD7dNK7UOSGI1cm745Ch8a9nFsl5eB3E97L/Y1HQmI0HssrA/A1NSDC2CQPmNdvc37lx6FrE8VvTop3Awx95Y/sLQUldgaRPzVRSNDxQQv3+wZwfB19iI4xCD7bsesxO4ShyrzAbb9/Y3D+w0Pu69AE+z+S+X7Z4JBMlZGaGPcoJFo8NbW3IsG78zQrjakEdHJSxbRAqxvCMfgF9LsBfF/TjRbkYdGdAO7zxvJUvj2OOR97rwAqpDCXLqglojs71iUrxxFcSuG5s0ghwtwtn9/csTFoH13BEXO1TiDKj/sYchOhw4BlP19CNLrddWjWIqIdzldInT0zWgXuWxGjc9S92w7W6nxjWgEaAblVhbY5UKVlcHQUE4rO3v9VzaFIAdNhvYFHVZ2g3/99JduDOv90WkVVNykQi9wV2Vip/ELwLG34FY/OZQkk5T2hwPVf2bo372aB8co/gQtrcYg5/atrv00h7BPKlmI7UQanQH3/ekgYOsW/Iu/qWQr7tY85S5WWgisT81xuXSjSfuvr5ehAhLGipuD5s23ATz57I/19OHqXKUZ+d4EE7/HyMuatzbAouboZ9S4Y+UqDZPHSILwVtSc+SiFB0t4Xxc03eFTuUlVnyD4KpfuK1ZWonvVySV2yf4h6aj62i6ZDI7BIfKrKLlIJ7X/fuD+m5oBXg1UgSWoUcgLO4G77VYJK4hslhe8EhF9MGPXxaocL+bpig8npkD9xWTP2WhRqs1CS1qPOrdJWqPdH1mZIn9r/+EpOFCLrz5RsPKbAqqT09+5kqndfYzbm9Q5DuBqevf92hqD/9+PmjbcIeJU+O2W/xKPr5VMHHhKGYNHRBVewkwsKMx8OqMhiUbomTcDJkG6QlaXb5/K1BsowRcNNXVh0xNB0cT5qHCJZnNy+mjVCzsBqYnNuPJWfbUyvFoeA9nxkcXdOG+wIyLJ/+RaJMnc7fyoP9kPjaRUv760iCOn1ndXaR0AufhdPKFRQYJt4QCC3gAgU3a19g9cjUV2RM8Oxt2R41fSg8c9oB9wNvLKuqpKImmZvfzjtNwL/3Zdo4h2Pg28/o2k6NAhoYcHMqZbbFyTeJJg/5WmDd0zmKQ0Gceijpf1TNp4JkD9ibF7sXwfPaFX1q6jnZ11kXnz+jwTLxyzzyZIpoNbXYzQ+GYV6bnOsG0mOw71clDnGXgcFyvq0cSI4FD2py/If3Tgs5I//qTzZCWwdOavvC8LRU4mQg/3rWdD49SAn5xvqfE4Mn3U9EImaKOF2B1/3QrT9hb1r9CQw7nfaTXPDobIXg2aEC8Pw5M2fSJ04IvSd5a5inUxAkv1X1E4fIMOqhEWLe2USmBltrpzdJqDxrun4/iPjYMU43teQ3QGyJBMaXjwO6UnM586PjoHmTJLZ4wwicLNFTzooJKArwQsDpY1dMGQ1s/DbjAT9CpF3HGUx6HdfPq7jaxBMtgiKnZOtg4tmapcVDlF9kHsq5bY3BRxPawzZf8kDoVF5C2n1KBTGxC08rjEOSyOR0WV/idApPlWseQ+HnAfChsPXBuBIddIN+eNNcGeYYN1FxCGPwp73aQON0BKP/cIjmgcm62scqlthqPPnosy4Qy+om380687sAGXK8rdHV3GI2UFbZFynGzCa5K3uhQIQTGKz+VSFRcJle4/kCIOw78HNaCFvqu9Xd0fcmYtF/kPrZx7FZUHCvq0sjE8dPMXVvtKli0RpPZzMfPZjsBWOsX+XVQeyulIH38uHICWVMpFXnFTfngv/+1QtBVJl1h7JUvMk5ftwhFFtFuhrZubTMRXBnf791l0tESjRSfTE928EeEC8JqbE1AHPUm+ZryxHo6+yOiPuGUMwfZ0ode9lDZwfdfLQdElASpjJpWofMtxObdGRCq+Eb2TmpGWlRDR2upZklT8Anxk8q3MHE6FW6eguJBJQae+/MxkPCeDvvey89bEK1MhSkpLcMeha0rhNHW4Y9mdYj8WtFwNj4pixw48E5J3pU33GIBuOK89dtJvIgCba+We3aiPQHJNPy6oPBW4pccq8KmmFq7ol241e8Yimv+6tA5l6Tn0+DwPzGpBlt9TK2sMjZ5VoSe2vFLgnyL8oQooFH0431+U5HOIof96YEDIAckFObkHUnObTtlvIkApBdv/K7Y5qjkHch4UOij2CU7F2r5upfkEat264Od4DHcILwuXPiYDLO+P9ei4e6dpPTu+U9gONWsvx0FuF0MnOfe7y+Wg0rZDUKVg5BjrOLFrNUv4w86zlfdM1POJ++XNE91wuZP60emux3g6bkyEteWoRyP0RbeeRz4NQ+JLSwMTQCgLCFtsfjRLQfMxXnPT+ITh3Wu+3olAztKS9etAjl4Dc6/+T8+Lqg08xYqfs3dpBSuLG0mY/Dn1/dN4wuXkYBM27tB2PEqCL9Y64/3YCGt7RjmRY7QfOaoy/2bVkMNwb0Sml8tvCfV4Fxq5esHPCsd6ZQfDUd3jPi+qJxideyr7e7IP8/D2ZzBupIIM5fMTkZDzSuCrZ71ZYDh/41ww/9VWCgbJZg3x4KDpEeal/NYr6vjMHXwQv1gI50OCty1sM8vrz9K70oQqQf9Lu1lrfCo+tvh9/ZR+KlFdtZs9e7wElBx+Zc+KJ8FVs2oJYTc3z3c3If5EjgC9vPdb0sQzcNfNFyCQM0lXw5JoKJAO/Ks1az8cCwFza2sgIJSAH5ktHakLIMLNzLPnQUjNE57KvDPxHQJwH5G/trx6Fw+4KO4HYTtCq4OFrkcaihbmRxdjIUViJYdRu7n9B5e0MLgdIQBcNchx/d0RD6oMjWwtFNdD8KdV6DROG6LJ+fr52gurvB4WLLkgXA3v9mkGzdAKycpl7JCY8Ae+Dz6cW2fjBqIeRx8IUFonkTrSb1Q9A6pxoeiGbL8zimyorP+NQoogH9zkrBEHO6uv3RVqBPjPJ+PUQldt3jJVMY/rBXkzP7+92M1xHeg9tqb25HfSC7vxWIzTXblxg+dAJQl3pn7fvhKNx7qZcLVMyiOacg4ifpWDnEpzlFUVA0p2zp6p/DQL9o9lKE696yDtN0+sZFItO+FB0uPRJ8BG9tRx5nQ3/dcmSaHFRqN5tXSjYcwT+FA5zEB9nwjXFX7OM/7DohcSzM0/rumD7W4pE7nwVWAUHDIlJRKOtuzj5DolxcB75Kpb7tRJOJZUP3zDDobO0gymfTw9DyTGLXxNbrXAohctxuT8BHY3J+ZAung0MAyuyZbKNIHM69TWvUTDaHR4q3+9HBENe9mfn/F+AlCAh/b4CBu0T1tn9TpcMroE3/V0uJ0ImxwZXvHM06g57dtjHawB+raz9OiBdCKuyBtEP7xDQvQGsZvd6BETCBXOT9Vo4ULa/YxATiQxqYrSqgvvhyL84OYxmM/wLVzjrcCIOnRrpivX5NAqD5KrDBiUt0E3naXkvNgSJq40bex8YAX5NRhbB4zg4adMrBpdxiLFwL4IlYgDUae4ZJnjXw708A26+DRy6OvHthDr1Hs7/MYqnWWiD52HjSyHPccifGOotZz0GL8feFnO+y4Qvffu/SDVh0d2OSIOWPArMjXG4iHBUwEq0/+rfdzGoL2B0tG6VyhP7PycTz7cC04dbNnEFoSj47rqlV9oIYBMNfCWJ9XBkJyXy/gIBDT5u2h4lY+CGxsZ6tG0VPJDjzRXJjEXzUUq9jb/JcP9HKpPduRIQDNh/c8KA6r/tQ09iZsbA+li35gP6cojoFPzdOYhDo+FE9rsfe0H18xXDXVkEzM5KFEIRtdf47K3b5cigOI0XmViMANeIhZ/FYljEVVRio+E6CJ1d914qdnWAgJuVxxs/Kv9fkztR6d0M90iTkWxUDheZTftnyhmB8OWHSyY4KZDJINumeL0Y/hwTf3WziYAie2a/7Ij2wrdc9rAkfRwojazoTx3CoYawP3Rtyv0Qennj35dH1D5tST1IeROPyOJ096yax4GOp4l8/r8MqHimWf7QKB41NWud9L9GgV/YvzZ3jtbD+n+FvBhlHOLTGX76H24U5sTS8Y+3IuDL48brOVqJyJj5qbJTFwJOs4N7dj/r4fz12DWXhEikeIf2+l3XYbBke21Bm9gIF2vsROzXExBlPj7kge8QcLjWNnG864SSSMuH954lIDfBp9y/fo3CXuJMeXNTNaQH/Bfx3+N4dEEk/TCHWgn0bk640+flQ6b/UgEdSxjyDxOTE3tCBKOc0fOSt0jgkiBBQyOCQQ6xPdsMYWNwPTinXj67Cco6BzVv2SegNbcR3EulcYiSf3JENjcR3v6j8V5QiUNpu4ZmTc1Uvj1RXq4xEwNZTS5bHRxRaO7Q0ouYtRHYsep+81qnEd5mGpx4GBuLfMwjiMbeY2A+96H4XEEqWA6qK4ulJqAT/jPOzldaQFted84kvRF86vGsfC8iUGaSZ6Z9FQUKfwWs4ywxMJfOQegxi0fZV6/sa/05Bpdmfz3er0YCD8ZjvCg+Hgl6K80QcBT4m0+jD3sVQHPyD96oEk/dx4skUQcsnPryDzf/FIH73WEDknEsOq3Zg9f09we3c2/88VUkqBW0wVH04xDn2yPtlhWtoM6rK1Rd6A/GjSqf2bwi0Xv3mx+jq1pg/xVrh032aHggYLtxbD4CjekmSyQkDsKdr9m9rpatYGnjntLOiUc/jB3qPk2Mg5dzDKvf8TB4OOi6n+lEFDoj6u/pROoBt/y2uxc6msD6RdHruKF4NJMbvTm4MgaKWf4dDxnaYIJLPzf6SQjSGlziqNkbgLaDXN1PtxLgxmeseH4AlZN31zUfn66C9tb7rKr4TuC/v28wzCgU/circNcY6QYmnfu63Y5tMNvDfMveKg7xGvdkvKwaA3EbOsZmQSIMKj/ntmrFo9JrDwZ3r/TDt5ua9TVKDSAT7TEzPhiP/my9nr7tNwg9Eo/ui+RUQt87r+c+cgQUd2jqhvXJXpCwPKdVdrQBEjp32DkUwtCdD9YW5PtkIK+XFX453g4H3bE++DkCmnd8Jt7ytxdC72BppJWJ0KDluDciHIbejdYtW5FGQEyTFoWKEoHTLstIOI2ARok37rKPjMF9iv04nW8dfInqHX8rkYB+lvp/X2Ajw8/jfqzVjiGgceGNrJYpNd/0OSt5x0fgob4NVQyqoKnCZCO3EIdMShkm+T3GYbhu0aDxYiNEP1I+uCAeimJuZEu37PYDOf+6xgKe2vvFQW3cVD8NSPqnSPpOgoMe3BxMJtQcO/h9srA2DkV3Xr//xWMIeNPiZ0m0NaDbL6HroRiHbnJdPKU8EQKBt6f/hNt0QrXBv7/oPTVnXhy6anq7D8accvfFh5BAUF9fOy0iHp204TasezUIJEYOmbLb9TCrXCbT9188el+jP//62ARQOnMiuAOJYK+Kt3rZh0VMPf2ZHp+HYcKR3KXykQglroNPks8mIkN22q+8l9vgaX4E4+iHVsgrYpUzLA1BPpqvkxlme2FKnvvWrZskULC2kOGRxCLCsNHCH4Ux0OgZ+PZzPgcea34qvV4WgwoVPrK5BA6CsWDhejc2HKxs1V8636LyZ/zlMxaC3fCB0Z2hb7EE1lv5KRn2GHT6WcoFE54hOHFFrKRlMRdkgoPMa4OpfirwxK+ovQbm+ox59QJyQWAnfVLlRShqW+pmttifBVnO907mbDVBGC1LsPLdSETT9YLhSw8FKlW3qnTYK8D46WHvzop4NMkIauVBZNCmHWc0x3SCT4OswNZtAnrbRpkLvpgOEwdTbUPKSGBCCXtRci4KvT/pTzceMwSbp2RjRpmz4JJg1E2azQgUdbeazC7cCyH3eh/rctRCQtJDsRjq9yWF6TNQloYg6rn/FUvhIlA9dv3vmhsBjRjFKlh+H4VrUUSZZo08yK3V/iwqn4DkTQ9p2Q2NgPT0/ZaggTbgZqrkdxwloEcbPTcum43DL6X6kYLhTrBvWJkuPIZFWe6tFrk/+2FXZM9R4lc5cGyz3mtgJKCtj5eeFxaNgOSy4vdzPp3w4YEd5kkHDh0wK/vlWzkA3we5ki/EkIDHlXdDWIbK4dpfrZgku+Gm/vPgoB8YsLP1G4gqpvoXrS37RdcRePXBIjpEqAW2Z0TMdKoJyLTNusZxeAhqa29efrvmBcd38OWZBQmobubr8JAMCQaMrYqdvnVCP90vl9c8cegH+wXfq1ZjAL9U7tw50gDZey9lZlPiEc+l3hXfjR4IUV7hf2VXBuN2jCL+d+PQ0pW6nBiJfmC+4WjafjQPdL3fLpv44REXeUBLSqoL2nI075b8yITZfK2ziVxYlOpIxRu3cXi1JEa8ZlcBSeR/lWffhCIB98P2D7PJ4Ggyw67EUwsXanzdCCpU/6IZnSGrRUHI2UN+TJNE0LRrtu4YC0USnPfZcu+OgufnYfq2D/lw5ouE92OnRDRA8Wsx+T0ENrtPrjZ4xoK3tNPm/qoEpBLU3XnkJQmU1a8uOgrWgPJPMxqLkjik2METE7FEgaK7L6v3r2VBmov6FlrEoX/bmAsbj3rhLFfLW9nxRlhzOLT7fSwaueoIacwxUfflHT0/3gsHNjf7eOu5E1HPmsnqRNM4lBpq1u872QwnDOKXw+/EI9/hXN6zd0jw+MhpOX79ACin2dfgnhyDfkomVgkY9oORuKa04PUIOP5GoYiLJhbBvQoIZxiCopSDnvKxFcBwcELWNjUY9RhlGvcujMHuqxX61mQS2LGVmRoV4JHkmn9qOGUALKVF8oZdMmHb/PT5nzgC4jvsyN9xdwyy6tY3Hmd0wkjHvTZ6x2hECHc5Gn2zEegFSEssF7FAOnd2aX5/OBK1Y886SKwEce/bDaEfmkFmI4IkEx2KNP7LeeUROQiL9iK/8f2d0H5HTpRhl4DG7ZvlplbIYBfecLG8xAeuPvW5oJZFQHqm9Trc58fg06hRzx9MK5AJZyY8ZhKQ4LxO0DFfEgR/T3sWqV0PFe8qqw7EB6OCPWcyB8sovMo6yN5M3wyRUvR70V9wSNXik1bSzXFIOpL+JlgaAXfiEQNjQRwSfqRxNoa7BBhzkq8eXX0BZ20vBL7XCEOykQy35MQRSC4eXHvg2QQ+NsF9R+JiUNwkv1CaGxk47uyRFA0QMCWr2Lpw45CtfP9qOvV+9lnV15WNNUOhQ6Dzrcw41B4/937qRzcMBqV0e60lgPF+s/3bmnHIoSHlZpNUL6gUB8gjbQRNd1MqQs7g0LFI9pbgLS8qhzcMlBzNgRIL9T9PY+MQ3wWFXQ5iNax67m3Pm9XA68Q0t1ivUKTY9LmhUW0MvFdXku411wLhzluNM1TP/bJg/GP2Lhlos8avTz9qgFsWonL61HsWNSA9nt4dgzIVq89FLNVQcAb/U3OVgLrwUe1EjXH4dtjWjH6nGlQEOa+8E8Whwc9NrY7SvTB8uG1m9FwmJG5eSDbmxaHpOeJ17Ceqh7PaPpu3J4LyocRtD+4IpPSf/VyN6jj085jIfm4rBGWlA73lJVj0+9vCdwGLLvBNm2Y698sbtn5kXmc7gEWjTxsHX5p1QdXlOJNshWyImPdbM9YJRtVFd9mjMRSoy3h9+EdWKrQSHU6YTOCRnn4S/bfsMbjLXXKdTpgEjhubNqMDcWiF4YHgCcFheCVKhzNMzoKysSvSjhdD0DCZcf5LWSvgv4mnKTZXg6V/dKbqk0i0ppB/Tu9GLyxg8H9nMKXw47YIg94NHCq8zM7JGtIHM+w9M+8P1YKLzYYqs1I8UsPar8k9bQfyL8OyF5GN4KI0IBDtEIUWP1jyhbB0gZSG29Fs2jLoeNXO6jMeh+qE2SNvMI5CcWLrza+7RVAlpOZ2tBWL/H041SwnRiDOw0n1lXInHPiY0DypG43S/2wX4P0pcEzD2OZXTx5oCft9tHqJR4F2ra1CL/rgR3CIiyZPO7wX1BWSOYlFngr1EdOzZBCXOMCqptgER/aSDBXOJKKVclZyIpW7HuZYk1R1ENSVFzV7P09AUpg7uXLJA2DYt4T5TZMDUu1HWNlk8ehWs5C55Js+OHzg2MuivTKwfcxYYeUUixSvFmg+vjwAvupn1uNO1MLj3QAhHhoc2uGVXtk6Mg53q7cn2ffqIS4nGh0zwqL5j6fZRo8mwolhfe+M3xhgPE7mmfkUjV6P/QjoNR0BZROBHxZTtUBUrBq4aJ6IRKsfDrP0jsFXg8gsBslyOCDBW2RgH4W2+AmxaUU9wLZpIjN3sApwLrP+vyhR6Faire/Rsn6wqqztIdDGwmLIdI73GrUXmE40mT7uB/cPqUPNJQhGHpT9apnDovj1KgbX7jG4sSB/5TdPDTDKXbx/mhaH3LOuB00EE0FHSDjI+EkJ2LvTiUaHRSB1wULjocFxUN4ik+2pfbHGffect2E04n4jor3sOga/Tcz7Hp4vBqkoUxxtbQLyDr8vwXmYCPumg3ZoDhfAaouFI01aLIqQEqw4XtgDnBm/rC5xNIOto9uS1L449NkdYdiLBqCnOUb9v5RciPyl0TY3FIzEbxnMXjrbBQeSswNwbFig1a78d20kGDXxL/1xuNAIrQJRc3cNSoDtReXkGn84OjT6ZTegZRCGU03eXL1fBVVMkxcm/+GQxhOpdK2kQTh4epij7mUUOJ8qf0d3NAENMDX732AZBjHuUW53xwyY1Z8nrI0TUOWr4E++hmNQif3yld6qDcbdCxNYDuDQ3oEp1UssxZAgq+lhoYoFzWiD4dxnYahRNnimqoQC2MWcQCmRNnjfOy4VUEidn6Utx9GxPlg/eUD4GTUPGfRyn54fiUFmsinfnohQgDaVjtmDxx9UEpOOGVTjkFbM8KGLqmS4UPdz4jwpBjo/P36Vuk1AwoWh2QyvOyH8aHLsO7IvUHhfH44lRaNhnkzirUoMCF7PUHvCFgsWPwqqN49ikBu3r/LAh1y41mKUt2UcBbJf6fJfcEQg150dwhQNGV4b/2Oa2aoCdVcnAWww1SPcWy/+SaLAuV2VD/cuE0H818WqzwbxKE3ogcGnTh8A3FNpHVF/8GhxiU59GIeeTrUX/4zphUXHg9thu6ngfD/5Ts1IOFrSU9O7Pd8F/1X6FuzPbYCPD8NphSEaeV3o3HoLIyBQo/j3lnYuqEiKu5gPExC7zzOrlEAS6KKZ0v8m6+D8LfyDly5xKInbz+5JzDBwxL4/KRXSDhEzCr0HsgmIX8pOU0RkDBKm43k/7zaCa2n7TM4sAaWamwiPfeiFL1fJNRaTeeA0rSx+sQyHFOWYTmV3DsHV+EFfnkvUnqrJe/mVg4CIwQ6lWoeovPgoq66EyuGT58xfjuVHo4CgcylPf46DdspycqprOVxwF9S/rBaHnnCGSh2+GADqTo0brw52wOi3dcPDT+OQYPVMwhUL6ryRbrNfjYyCjMkenlfWsUia6ROOvi0Sjql0MX19RAJrNoY+kV4MConzPBnyYQwy51MaCSYZ0GTbtLzhhkd7lREWz0hE0LDdp6Yvmw+HBNxtOH9gUF1O8qpQRw+YCmVO89UUQWrQ+perk/HI0tSp7+9EJdB8ey62Qr0fxl2CUFRxKDp476/3VW0KjF5SmnqDqkDPL3Bk4xge+azLuqhYjUKMespqb3Y7NK7qvGy2S0RFjuIn8On9wCeu1lXi1wZtymwmTRqRaGQqzkn2STf0oezZWPkSKGnzSKldxSJUJ8N0mX0EsJq3lg6q14Aq/xufmRYCMv+LsuruDUCTv66/Zm84xC1RR/w5Aa2uee8PnBkE0TzV8fDGFOCvPTLwMQ6PJtftZlQZBsDWRmbXJ6oSLqvtxRVtRaHotGSv38rj4Plu3CzKrgDeqxkQ77z4P5+czeaUG4D7/hHt33fToMzuVKrmNxzCvJn6QxSggNLC9J82QjvwV5ZiftQTUGhM74yh6zC4DJWX/RzOh5KXXwP4mBKR0+RCUe4TIhDLInXS6jqhwc7HXepyFJIxWpgOg2FIrmYKZ/CPg49cNuXmuiEo4fBCafTBCTC6EDK3ZdgCuVVlVT+msSjzQ1ZuwZ8xuPUl8UdNQwYEqioUGUvgUMhjOt8MiQnQrCdtq1K5UdUuzmBtEotOvengsbCm8vOjM7GMVk3gqcsoZkrN+TMOelVqiSOg9TaSdK60FQpL3MJiqL/X6fP7pz9fDx5eDTp4jQ5gqDCSybkdhhSvpa4sH++ChvKPLB8uN4BYuiJ99mwcelP24E1cIxm4Jo9cUv1aD27it7Suz+DQuUWlxQkcEfpK3du9aDNAdFKg5984Bu1dKX6vHp4CAet76x1UnjkW7VG/vhuEgk/PmKecHIW64+3X9lWlg5FWhkkUlcccaZMr+Fz74Db/UhBsuAOr16J18Bk8mmbs58RNjYFRhqjqycBkYPJL4BU+loCudqytR5wbAc/ffoT2OQQWrPEKTdR+0XnTzvd2tRVoxHZ8KBbZwBxAJ7kSGYnGLyX5jA1GQ+dH3O+yVQJMQNaatiIGRcj/mslxRPAgUIwtIKMImC+7ciyMxSDHTZOzEzuDEHk58Xp6GrWPKoe37Wap58k7Y08bSoGxz0G6ztRcPRj7wdirJR41MPzpOO7SDcoxHTQpdVWw32+Zp/MTFtWc/3DV7D4JphrPdH6vJMFJRe04RuM4lB9+StVvnQjMN690k0RKIFr/7krbEap/aXOpoUkySO7tYYI9PaDTaW3+rFoimm50Sbkz3AunGnN2aVErZHZdGdUtwiElTfdTWzpNUHbN1i24uAUem1+QfeoVjn4P0Hvvxw5A2Z+TIpqCpUA+9ErY3pTKCQcLOI+874FWto4OuzMtkBVY4qxGDEaVj1gUiw7FQM9vi1INjk4IbXXOqaDOZ+iHloAjY+OQo0hDf6ClFsIe/sA73IpH7+9n6bMkEyGfcWPk0UwzcPsEbFYUYFDRqkH2ddk6KL05RAz5RYS0p4n4NNkwtDnrzKRyZwSyredefrFIA0H9EprCURxK5Cl++iiKAr8KfOXmuRMA3/6pSXowDnH4/u2LoW0Bszb7CdHwDtD/olC0UxyBdq8sxrDgasDZ2vdnjXs5RPLle0f7hqKMu8+QTiQFNArv/XXLjYC/br+D8t/hURfjicjDYWR4sFfiYGecDAviw0EjlxLRqSGNoCn1YagRuHk1+FUNZB2TUfuiGI/+cjtZmUTkgnLCk3X4nAzFyYt6idciUOfAd4UmgzEYYd9keWxdDPVDsZ2hlwlItjlb/NhKE3gd9Yh66pEM818sP/PQRyAriZqD9+S6wJ35+dGYKqo3xWW8c9yMQx0hZWZMtMOQNNjAgROphFNVHRFe3QT04G+C/iRTPxQQVGxLlhPh2puQkckODGIo+PV6WXsMODdYpwz4UkFUvXMaruFR0uYp3uaf7SD3myV33iUWshlruXKEqRyr5HxH88AIRH8cW18LRKBoa3xcbJ6AblR+DPG0HIabV9WaB9d8YFytinWS+twNm/o9S2cKGPFtvuf3xEDQZ4Ho6eeh6L5/mbU6UGAyu8iSIaEZvr36VB9pS0B3Hid5mX4fg39DxklnrCpgnAPhZH8SEMvsWT0bzh6IKBkarkn1A5KtqeH1gjhUFrwRMvw5BETkXE9hgjPAckBxSvR1JBJYUjl0sJQMf/YZabSaJcGLTXlxgikO6U3pVnMxEoGv3JWx1ygOdHzqzCZnYtF6gIaTBksfLPwW/fm0PRs8FuXeqHRgUcLP+hddXK0g+vbUv+IhIjgovo58Ix2MCMIqbir3+kFiqflchByVN14Rm5PFcGjmNc+jx7+zoLNOumj7E3X/rImeTFbB6GYfPeW+eSpQFGTEHZOyoPD5lV7d0SjkcOjTtWFbCvwTN9RJFM+FF7+VFU5/i0dudy35xUkUyJK5x8u8PxfeZuAZs2ewKNTJrEweDcKlB9+mvSSr4EX4kbCp6Hj0SVf1PCP9MOSZnxfakaPmVYBT4PVMHIpWcWvS6h0FV7E1++f/IUieVdN3qSKgnhs+lNDeEegbMiH76YcAw/P1BB5qL/8MnSVmrw5CpYFmoaxTLhx9SPr4XC8BLf6XZcj1sA9OjVbm2toUwVta3YKAbRzKOfr+2mxmHETgqyP32bWBBGOrF0teLFo9qE4TfG0UruskHVFbbYFfz5YnnO8nog4JMZmpjBHYehiRwVxWBJthfirSbAmoYDM8Vym+AY56Z549k1cFfot+tS404Wj66G6lJf8YnH9v0dIeUAi6RJFXM0KJaL1EfN/BE12wW3v3Y3ZdHLQr2v5k24lBK4rCMpjtGjg6wnbjbqw/cJR9rTXzCUUjxjOVDzBDMJzivl7LngwO5t60xroE9N7xZfEpzwYo0l5f73BHkCrIe727LQxZKY18Fb8/AmKWb1LKdptAL/54gZV/PKpTDpD/9o4I8ax/dS1GmyH0hV/BzYRItL26r/zBvglQm341TIwnwhumVCdsWBzaOnPgP9maUTiW/dzX/Y8nPPhAOXvaPhG1Xfz6/NLrftD3KMkND28Bw4vMqe0rwcgUsyvJotUPuHNq+h3HG0C3/vGxXrUQpE33xC9Ghsot5zOEnAnNQOWe7/us4hCPSJwm9tIQvOgXj7dXrYWBa3DwLAaHwopYNr56ZgHF/6OFXnIVlDgdYE1+HIk2+zbe/c7ogrFt1KWbRAQm/PVmu2tYZBNMyYwzJkO3cdAtNy0iKLkYhsma4JFoqu1nlDAGBzol2pwYcCB0+ClejjGe6rN8fz3/DIIHd25E4GIdZP/ZfHX5RgLa56xMwVL5ikY+5g37ciQ4+j9P/KOeiIS5m/QMDo+DzwFlGyezOpA8r1lxMzMWGeWW7xM+3gvf5Usrv7Hngsu+oeBe1VikstN/TP/VOHjb8Hz1bi6F2aSflb4nY1AQizlFbGQQ9ld2C+NXG2DF6m9m3w08MlThG0lmHgPx5aWkzRwi/DU6yZL+gYDOONv/Wj7eDcEtE/xN3c2g10WmU8/Botduk38Vn7aCGq3P2wInEuxUqUcFPYxEXyh213wsuuHf5cV5+XYinIu7fPTyGywKupo/dNOvGywXDhS1U+oA8yZSkJ5C5SKlkSWdv6NwW6Vg0jWJBH65M3wJW9Tcq+nNCfL2hdcrzLAqUwCPYoWNlKm8bUNzqXD2dz8kW2jZaJCJ8F5RchYjSkBXlWgZBWLIQKJPzfuCRZB2qyr9LZWvMM37tErOtYGj27NNdh8Ez8xsmPI+hKJjBgTjtzQjcLdjotdMIAGsLVifZL0nIFGrTqxz2whI3nviczu5HqKju1swN6n/898o/SqVS09BDd3tTzngxYNne3gTh7xlo90v3RwAWjmZaqdLtQDt6Y/J5gSkGSRVaCk2AcuOU7FL+zAQOczXPdyDRa3HbOLZmCngVvLE2EfHG1R8NN/pdhBQ87fvKV6YHpB24Kw30aiBRqHtM/eZqJypu7Mq1EyBG3U20wuvG6k9yORlvxSLogipl01LBmA8ZCWwObMSVpPp1+FoPHpk+fHOI7UeuPsdq++JSwcFh76hEq94NGph+GDtbxg4tPhJtxEKwUeoItMsLRzF9AVltvnGgOlFh4fehaXge++iq0h7MHKNPfpCgX8QXh/f0efJbINDXQZ+aXME9PFDiDXtRRJEJVjnieiWg2qGlbteSRR69WgnOuDRELgI7HeeQmUQ/N/fHJ1PGCTztsoz9UQRLNFUyrUqE8HchN5z6mUYel8oz5dFjIaCRzc9d4M6Iec75um1Oxgk6ZuhRKByfrn2b9ZSmw54d1lI9EIjDkkVPHEy9CWCJb2BEHdfB1yfz69l9MUg4f7XrRLUOd8cGD8xdb8S7Lz+O1ymFo9K8s2O3WuqhYaAbg8yVw1w3HAKG+4LRZ6ChcSwu93wx8zk4fLPLIiNfbKkS+0Fa1Fesn3lKPArK/ZuNrRAl/XtVS+rBPRcl1XBiJ4MaRY3mojny2Fq2XWK142aP5UGy/7ZoxB4++mJVOsSaBE+dIDVIRFxM/D0LQ6PA1nZ2e7RIQJczLnixnWbuu9vF+/MiY7AX+Efcl8yq8DjcMept1TOYXumEPbg1CD4JHG3T5KLYFT0eafuPA4F+ZUtpSsTwF6mWZohtQBUj7vx0UjEoGcEj41x6twKvL/3gbO8FnyWrzMtBoegiYUrHZ83quHwxPah3OdEIAicap1KDkWlHb28ydgRMOWZLACRGlDkmtkcu5eIjvvJ3Bj92weKa5orr2VJkG7rOVTpikUGQXoZJ1ibIfl8DKf+jRr40Fxy+vCvcJQqMZ5/mTIEdrGHjANLSbAyuS9/gZuADB3EeS3ZuuDin8z0duYOuMb+UWnqdwzqyGyv3qsiQ6dbkZCVLRH4Lwfz+swGIy/OnMnd1B5oXjLvCnUhgdfO/BXP5jiUpR8Tb64zDndTOncSPGKh2azu06crOLTxyR/z8RQF4tqT1kqLsoFPw7p7leqVSkz0zg90RkG1ptJ4ocgX3PabGqwfIaA+/LMdJpFx4P79/sI1kVaQ5IuOeReEQ9Pif7GdJ8mgfJqedriOBJqhzLKF1Hsw8ML6xCyPQu83Jsv/KA1QoYO12P0UhnpGlF6N8eWBb6Ia7eWrVJ78TFQ/2x+O2uWyPycZYqFwXjgy8lwHJJKvb1aUxiJ5MeUplU4KhDIVytzHNoKk2nO5of91dN7hVL//H0epRBKhVFRKFCJklHpRMiqFUIqQVZlJtqzscba999573Y7NwXGMBhFpWOFjVcjvfH//nuvM+37dz+fj8b6u93V+YtFZg14N2/MtUKTiWHtxuBoeUmVURAkRaLfZvpiKmmq4HHns11ZQBmBtjd+qd/qjiyYtjka/+kDgiGWmLlMpmNkVCBS/jkLFFsEPbf5RgZUnCGRccdChGPCEtR2PsDOMh7d9qUBTia0okIqGKNX/Fh71h6PDFpv7VoYpUHfO9d+B+XR4MZSSIXgiGC0IvwqmxA7A2eHqJpneNJDiPKvx8F4k8qwf9BmvHQDsWBDz1SQf0M4RxAq8wSIb+003Hv9YiN+PvMdm6yBoJjuCIhmG+Fzq8d4MNfAhmtglM44BtTPpGoZLQehUEwdrrnsPXHzuVOXAVwipdz6/7g8kIe/amGkWW/r83LXFpU7Re7Pnc3DLXBh6Iqg3ZdbQAQUVtGlRSg04ejx6e1Kbzs/PIynnWnJgYsUfin40QvrJP1tDLwMRV9QlfQ+mLgjxPHNqM7QethZlyLfk6PPgxhHPZ0GBQKKixTdsPVAWB2xfsOERTfaNMb6VAr/HEjtqSTlQME/RvPkOj571POgO6+mE4Ch9/oHGdDhsGmy6Te+XL2/Ja85pFCgp8+9LTSaD8ePtL58rieh5ne2u7uwBMMk7kvUxoQyeYrY++QziUGLlV/nflp0Q96HwbEplHsg/OPXQv4aA3I6ZcM2oDYBaWabD234Ep2RVbxGsiMjDO/njUh4V4tYvv9ltRIYzIjMm/v4kdJ+jcF5OcABCdEb3JTuRIW6FYSg7A49GhiVS2i5Xw9Wo6Pjzv5JA2NCLmpwQhOoXaictl2gwlnSoPzGuFpyKPzffZMSgr9pb0j9MB6BMn/mkpWw6SLrtaeRPD0AMR0aRZWE3SOVq+r5pyIMn7QMqbOw45JWS/jsllALk0/JTZ/9VgASbqzdpPwnZ7GHeL/KpC0SvKk29DEyCCZe5Wj8GPNL6LuQZJFEHveOxF9blMuHyO1V3FdsQVHDN4ciHohbQERasaKWUQsC3wpzWx1ikZ9WQqSRH98ckZsfHvrWwPmTh+FUNi7jFE8p53pPhyj2xrW2uJqiMXuGTOOSPHvnwfRaUocLV10xG8jewIJP08haeiYBYIzkOmSk3Adn5EmGMzslnGC/s2f87DFlPCAZ/NU0Dj9xPXvLbVbD4pEniklowYqmX7ja3cYFD9xSPHZVHMFaPM37ehUHHjB6G2iVWwITiQH0W/XXBy2wFH8MC0UHbEt65n5nQMcS8+E27AmhMEk5CLEHoGOd0BsF3AHjPTbNV0rlic/hw0TNuLOrech8R8C6GkVebOMXpdBikvDZiKw5A4pcPRtqL9IJ1xfY5PgUEB7fe7qXci0IHHx/3mPPoh9jdYkpVcUHQFeROkIuOQD/fjac8kauE7raknwai9fAg6tGrC5WByF8rY9CFZwAi86QzI2eagfbrDbvachjyPPeh4KEsDaIEjP/97ayCKvjGJmCMR8X331qmuLQDbvl1hFkjGVbue/cmmuPRV5Env983UyEnO8dAWzwZfI24xDikSEhcSoTcZkqFzd6XbBOMlVClOvd2bp6EWP7rY/3eT4GMzMpR1Z5ccPXcUYdvRHSzyoy0hiGDoVfdviKXFBismS6uzMKghJgEqTrGQShD30/hb2RCD8XVn303DlEMzhnGUl2g47FDhOueCmjv3crXLMOg69qvHZXsu2DEPvDwjjQJRnGzTntOEdCcUWiyoV0rcKi9sbx5OgaSJ454sX7DomqH7z6uKt0Q6fvK4rp9M2w0Mk3VvSKgvoYT1YvTfbC/neHM+LFEyOE9ap+/RUDftVsWbgW0wmUdaWOd3mrQGLLYeJ+LQZw8F9+151DBeINfJeG0H/zi/PV7xRGL7FPSQzgWusF0T9En0lQJrHebxOc/JSHGlsuRuMUOwHwJueK7GgKVDp83jIMICH+0YftvMA2iszrHlDeSwTmeWZPBBIt+BN7jO7xMgZDO3O3It9nQePDofHSvP6o/Mnlz4OAgFJ91iX15MB6WaVxVswQM4iYUHeb1w0KZsZ/gnbfV8PsF1ZSCi0Ckbf7wM0CFquXusIvpZSAXpK39L5aAhK+HVg6c74a3ElEmvsdwcEJK1kOhlICW6r3WyVe6wLf2iGUDmQzxegFqbMpEFNRv4fbAswaK8keH+2qKwfngPmFMlh9ifGvp/HqRCicalUKc2EtgczkyA768Q0+CPhywPjAAi65YfObHEPA8bZ/s10VEX8aV9i/c7YbYtd2mLGpk+I5NVa76iEXu5bpZF/n7oVLMp3ptqg7cLX61P6bzNvGZhaWLMBlk5CaYqAnNcGVff6OKMgal23Tck/iXAZY3dAYjb9QBaa1c6NWLIHQ/K2kjeoMKgxGuOXpPGkEo03a0i76/nzsCl9ve90Nj01lXyv00OHgQftmJ4hBG+nW+OEsUFH3WDuFPz4XWH2MGaSrByFqIcKo2gQpdi2/Uqz+4QB3jwKO3eBLS4qValM8jUHHYexZHrgemeVuTnfoI9CV85TSuox0cZ2+cy252Bi2RY+6b2XgE5xiDMR2d4N9f2To4FQL8GvW6sx/wiKsiSm8nsAdCPCwfN7HWgd5Y8YOTMwR0b4jnw126/2gqlexEzyKQIM+ZKwVh0CWdl46rfgPw9SRpo+oYgtCC45IimwSkdE2v/uTebKBGOH4fI9DX88ZT46yCQIS5dXbdKtMLzibLB3RJ5UD4o7iXTvzhKDycxhqyGAqOTzLuRjlWwVdFP8OLuZHIY+GX8j+6r7KtUyf7pKpgWVXi0XBnAPLdFv24bNMOCx9c7fC/auDeMI1n6gEeXWVyyPvxiM7J/5nn33lcA9W4LTaMCh5dnggTrNybBbJvlwueTb4GLvfcK0rBQSjVV9qzYLwbbnno81z7VQ9725pfHlYgoWf86zd0hlohVZfzy/zLTNhcNyt/YoNBUefOsdBudAMyGVWu1GkGXnxrmRUbCSmq1Qsx/CADm1cNL2dLNXh7hN9tzcegH26ZqgIFAzDvM8/tQu8jnYc5yUwVBETrCuoWrqXBnRnDGcuBPIhoYVaxfoBDdek+0l5UMijXx7cmrCG4fUVivKQ7DIm8cMZkN9Lg1FrWqkYp3Ud95Tq72uhegzM48bN+AHo48S+nrcrgtRLj7uV4Arr87de4r1Y/aH9IeYwKm2E6sfAX25ModGxJpzZetBMYCMmRct+boRvHwcsZHoacfy/8ot1sBBWG07FnD7oC52frj8THYSjQYpFyL7wH9lakMUxiXeEgf1VO2kEiapOb0MKaUEGMzTzoZhoCwSecJe3fScj4K2PtUE0/aCazU76xl0GJIebrH4dwpEd7fui6Khk+1fjvuadcD//mfDZ9tTEo4t0/46kRBPxW5WV/3PKhU118gb8kArnw9NUoXqZC4bRB17cUMlycUUp3DCGiq09k92HbB8Cr8qj7185G0FS+IKyTg0MfTzj/lDXvhD9PXqr//VcGwtlRfUc7CCgwyPLj0UIa7OG1kpWXT4Wkgzee22XhUNmRvVKVH9ohU54Y7xZKgEfhZJ/9mEj0Vqx6TE/fF7ILFHOLRIvA+LtJ08/WUBS23froUywFTA/fXi0yaIbtsLDAl4P+aMyEZzs2JB0iza6altilAU9uhInrdBDyERWoUTBqAGc1rBYtIAw6Vz3KY/z90dPKTlvDV1SIeE5OE+QJBZpgStD9JhKa3OZVcmyuh5ra59oXA2ugn/mg78TTUMQib/lraK4LdE9nfMvzpM//gfM8GAMcer8WxNj0rR1CKo/5L4lngW6SboFOdhBCh1V8Y406QVfdY5pPMReUePhZqStYNKKXsn5EpB1yz43mLtbVwmCSj89dGgatrvdVOzohGP9tVHHFHYH7qN7Gxc1gpDaoaZ/q1APntfYVtNY0Qx/7pNivRBI6MVyI/62ABWKTNOLoyoOAbOsk408RSKX02FplIg6y/Z/9lT+SCOpdvqulkhHIh73a33iMCjKi3zlra6rgfi+guyIkxPHMkqJ8Jgpehzz7c1jOHVbi0hSzhsIQV5GhvaJ+DzQnt//gOeYPX54fGr66hkXMv70yU89XQdlvp/A4xXq4FpWjfp/TH522v9925Uk7DO3WkR5Eb+Fu/7QEOR6LsrcY250nfMFnLvLIvF8NKAT2Ct+TDUP1vaQVba1WcE6aOOKsUwXYy6HJ9ZLvUOfrtvUTc80g1M/+T8uwDE6ls1wVEQ1Dp3wX04Zw/YDdG8zCS/fFO5U9nbG6eNTVp3UkcZ0CDKwBprv808HwhUjbzl8M+sY+aa3jnwcoV/zfT6EaqOGMOGx0g85dmud+KS/QoLEhaKbsB/28lM2OWj8IR9IsrQ59ozRQz0qN20pAoCs7MZS9E4y+fv3FadxL73GK1rPLmEyQVJ2NNsJj0I1VRY7Bw1R4F0jctRyXCOX8p5w7TkWhH9GtzPWaJMhW/JXad6kSOAukWu6sB6FdYiF3OOlct3Da6k97eDEwrU7kND4KQVl734/sYhuAKGOdkGfizSBxYt+uACMccu3v8clvoMKX+3FP702UgIFGVYoSHxGVm3w4J/akH3QJK4zZqWngblmuK3M3CvG/3H4jINUJv756fKJ9dYaWh0vzVpEEVGi3csafaQDQ7whrCzF6v/cz8q5/JaKhhJwP51ZaQLkoFf+mhAwbm6HNznFY9OpmQqPYARrYPzj53SrbHWLLtjp96X00YqfNxyneDi0uaV4HBYIgmnfse9BVPJJqEs36ltcOW7Qw4YsULzB7abbqnopDEZcqpsv4abAzp2TyYKoRJIlo/LpiBHo0ODYcO9oGSXvm5rCZ5WBsFjXFso5DxhkXav1f9MHiR/fXRpJ4eKfe+crDJQpdGhhombvUC1GbWfX87NXQsadG+C+RgMLjDlwvQ0lQbS+053M1gm2u1c6elRBkKronf4PcBfIT58X2x8YD34UR7g9iGCQqzS9K1e2A+mKP7EMdJXAj6yUP8wECeu+TH8vnSf/cA0ctcU7V8Fp0n9oXbhIq7M2UYCrpgbNZZquSxuWQhmykvPJJiKnXeGX0QA+IzBCYxA1qIZCr5slNfhyS4N56su/xALz/6zTE+z4LarxRdJkDEUXJjE3y0Tl2954H1JtuGNhfe7I/3w2DxHyiyvxZemDkbhXTvfEKCFVTxoUn+KOCmPKpqyfouUH7XsL0Mwakn+s4uWMJaNXOYX65txX+kfUzCvZXAeuzwH2zd3BI0v2Z8J+GXviLahQsGZIhP6pyttWOiGwtae63HzeAq5XDTfHNJviqNfRFIi0Uqb94Y55t1A7zCo3BzFOhcJ/xICYoNhitD3LSXCppEH5Gvt41qxns5+5iZtRw6EjehctnURAI2c8du+xXAGmJl7EhezFIYGpm7usuD8iKwxrvMS8AW7LBvnkSBjFddOv+FVUEfPVpJwasK2GU7bc79Aeg6vLd98819MBBt44+jFkhcDBmG2lQsEjwSCel0IoKHFyfqzLP10CwTEr1MeNw1Diu++Tkgx4484IS9neIDDsjZ7l7UkgI8yT57OJNCtSc7JFjZ0ZQJzEnfKOKiCZPeNHqTXqAR7rXwtcjFk6Y43qmgkhImHtt40B5GnDvU91zPSMfuN6uWLheDkZLXYFFryt6oLxJy8bUhQzCexzKXvXgUTJj0DBrexcst41dOS9TDN//e+TJWEZEdzPZbkmqdMD1A9F390Q0w1iTeOxxFgJ6mX+w/OObAfBXESupe5oHtdkLWN4wDHqG5rjNJwagbUBqg/9VPMy68uxbKfRH2v6mOW7BXaBmVbFkHlsClbkxjvEMWES9sa79904H1Nzgmko9lAr6qxn103ahiNB+R9DiBhU0a6rOf0lthl0R3ba/3hBQ85TEuKVVN4Q/Dg655lcB//mxqf4cxCA+k/S7mrVU8JbYsF1nqQSye+ywpQUJnVkftDpBjod2z5Iy69V8CDI/gJSy/RC/W2vNb9V2ECa9n7pyKgb+e6Z21lIfj9ajQg1dDbqhJnyvOwNjA1Sw7C0YjiKgPL68L2KdzjBwLfhKbl4lsPVdybnWhkEONAXV5NZ2YEvMLiBLpIE9C9OTwFsYRC39J/foM90vXvDu2JSSoGx2Y0FsiYCcojRWlPXbgXfS4n2/VxF8up5bX22AR987P6vyJnbAUOr6wZ+BCIwUjjhzxOOQaGoL9wAnBQjxuy4lCFdCEIy9cnDHoU/nPE+dsa8DqxQb9eMXY+Dt/kF5P3qu/nj5Ac2rN0PBpYnrzdJVMHtj0+vnYADa28lbVPiZ3iu/Z649JsRC3Aec0jB7IIpem+TFeFEgTqf71ENeMpxgCubfUcMigej9VB16rj6prbw8iS+G2wOWeHm6H1Gfal65L9sOb+QntMEuHXy3ChlOhWNRz6EGx1f0Hhk0k2+reF8JsUnSsmUhGHR0zDW9vqAIOgUHNzdelUDLhj9s1QaghUaK3n3nLlBgdks/oVMNlBeDVxKs6Dl/KCzI7kAnHHC9MHeWvRy0W8X/OPOFoQUDHdFn12mwlvItR5e/Dq44CTxdv45BLr7JI24X+wBnaMxrPVsMbFPZPhMLGDThdY+iUEKB4AT7C1nazfBv7/byxjO6r7l6aue69UGwYuS2DF8SfFOZbpF5FYU8ioTMnx3thalx1zzenGaAitl9qfMhaPL64rUjygMQoPUufH9nKXhe6w7iuoNBVa9zum3O9IA19ubGp9cNsDE8+22dg4hwd68wyeZRQXxb/c4xrSA4N92gLpgYjoQeflB+/aQb4k+vpT4cy4AK2crMxEUsyjqxpKF+shYSj5qbAlMlLNGiFnm6g1E7LUn0qwkGIiZJ/hb0nEzq0CQl/Y1Aixl+TU+506ERly0q+6MYLqmPx+wXDUbf/tiONT7PhQdOrVLe9SlwvvaxZ9jTQHTyVU1zdAt9HyXGxfHuRNiTec/Xid539k9l48OhF8SHHZQb23OAb1r1acPTKNRcp3xwfrIcfnLYk97oYOFL81vdPW8CkSNO5mmuKhUMY5DxrK83MFn1fTSyxyNa05maZ+KlkGW5/UElIwx2QO+G/XAAOtLGqLmwG8HBQCdn47YyqJRkEQomhSMbeeZka9E4mM1R2mUxEAh+XVxPRk6Eoa4H5iEZxgOQvNfMaPZ6ApSQItw3ZvCIMH87jOtsF0zfvvL1J7EZrHv3U11CAlC+r6eM2QQFjmXbVC/vKYDFNrlN05tR6JfkufeXp1vAP4vtxYNLjXDoPhPvlWQsCtXNlrl8bBDKyXJvkXcq5ONu7rHewqIv1ZmdKlKNoMPKM/TlSxYc2fPl/FHJMFR4+03RWUI/tH5ucCxLSoGq1ZZnertIiIfkaEk0GoA/BvHGDBVRsLJyiTJ8n4hOjyp+aqQ4Q56L/L6RiBqQGL6PJ1MxyPI/ju9P6DzT/226K7S7GLg50uNl+jEojHm4Hs/TCdGWa91uR8rAONz1WkcpBnFpEtqpPBQIQPssvJVq4F3p0tr/7r/+eg/bda+nE95PW/XtOUOGKWVZo7+MGESw0cc5XO0FocbBJsndziCBkTGc1YpC5fobalyNA7DuYDFqHE6GxC/5tFAqFuXn3nJ1ONkM91QfNLUMFYEIx40YaYVItD922erxfTLccCQ5jJiTgfG5w6MlqTDE6l/5qHWzGMo062ymJfMh67OA/qmuAOSMz2xPKMiGDZma5pqSKgitcDgjyRCEPp5O1/l6YBBUR5mYqvK9IH8/s856OgZ1kXp6/npWw6WLWbsznxRBd+Shsqz/XV9l7d1RbmiBBpEwEd1/TRCqmM9vrh6BONa7ZBhPDkKM3wEWCr3Hw2WKRP/4YpFObrrZ9d3tYC1rOmoimwXBEfPPHrpEoo8Napc4Vikw8PU2B8fDMrg+pZ8vn4VBjngHRz2WATjFfRa7eq4Bav/pin98hEMBogWdroLN8PNrn/ZsMQKF3138i6cj0QtyQ/rU6S4gv+9MvfcsCpKFA7X0rcPRW/XPDgk4GijL7czGnqNzWkmm+EMzLBo0J7kNEtrAzDj9qFcmGc4vi7142oND/p9IjrVMLWBod/qTTBeCJqNzPGgPFiXPiTwX2EPvfeWZUnwQGUL3VRCf34hC983cXMQIFNiI/Ji9X9wH9jwhW9qb4NGtT038texU4DVkujXhWQH2l295D1yLQlsjCX8P+fdA3NfGYLPOZDhXsnGG4zoO4S6MJOhyloCjfOj7lU9k0Dg1s8v7cCCSeiRvJGJJAcm2L1pc+FqQsfyDPTEWjOxPm1+aGW6D2nPcj5LLqoGoAixDBCza9Pih3VHQDr8qlU56ehHhz/eFxncqOJRTFT5Vi2mGkUnFz5fEqmF+f4di03AkinHuyqgZ6ICP9nYFfEezILaixNw9EocOsVd4kb/Rf++7KaqDFQHco+LP9FfSPYWkstvrejsQM+Tk8oixwNJ/k/U/QX90u4WxLdLEG/T+CZ4v0k6D87KbGqW7wlHJnxDTyxfawSxNbsLvZxlYuoj1Xl+MQCxHvCYvCcTCtCjGz/ROFFSo/dNpXwhEB3QozBx6LZBd9HwwmD0b4nkZN3a8I1Bmn5pqQEo2fFvLJfKeqIZsp4vVSkO+KD1VpMWUTIH3DZ/vlzEXA8PSqPamJx4FHlx5+tSuFxRz3R0epxRA1kOZfZFAQIRIPu/R7VYwq2XIVEwohGxpv9ei93GI/b3kxWbpLig80DjBsvoGbr8XvP7aiIjOtE0mlW8i4LvGl3WrtwTMYsLLJyuD6b25grPsaoLTH6+YMj8oAbVmzIW/RwMRh1fzX2WxeqhkEvOoLWyGoUEhmsHnEPSq1CrOXKMPZh+kJVPEK+C+k2Bg6A0c0n5uVL99tAZIinX1YxoIQvp9WF8n+aFJR8fF0mS6P/vFJOd714M1622uZnYM4r4chLUooAElQbbC4VYpfOmU9jmWj0P75noiHLNo0Cn8GSyOlkP5h+9/1KWCUOWsmW6GAxXeu29eE4EK+GZyLf/sLSLqGPj30/X4AFQFDFR/XMEAQ5BxcykBhxKSG27K0s+RQ7u5l8BGNbBV/uynKOHRPYy6yOsHKRDxdCpD91wEtAvIOercCkFlChbz8cdaQNFUuwsz2QSb078I7TsYdP55z2+FzGioNVPFM6w0wwWeWvtfCWHohnHPs8O6VXDqYmCBzoFGOOib4FNrGoRE5PZFDHFEg7dp5gs3CTJEDn7Kk3YIRNryNzNoco3A26is6JDVCLpfbZblc/3Q+hQxiIOMIJdv/YSudBp8vNRwglgegeROnREtutsHZ8r0La3o+/NKW2/U9yYJ/XuVqK+dFwwPnfmOGZ5MAqf4e6OJ9BzGswn86F5oBXXKFw0Gh0bgzNwb3HAbh/J1ZJ0KHlHhTAI/e+LeUhi4nlzF/IuE/r78sz35ogcqxOtmO1ezIKpz+uHoKhZ9NKg39mDuA/2Xtr/nyKUwaSes8EqWhOSy+8JmOTDwuGc+gjyTAjs3L9F8lIJQSpiOR/KbTOCr4T7Hs5IIRR0T/Cz0dYhnxR2ty8qAywdl+RsLEDxhvdbSkxuEtsVTrtmbDkBz4Vw0jr0EDtvwnRCWJqIu7FTLEb8eWOGTKvzwGQtZlwiiyrcJ6LxuWPe9qS4Qt5a4drKvHJaEvrJuSIWiNql/vxi2G4BZpewsn1kt3LJxYWBVCkPfOSMjI4UooHrm7Ae0EwfR4trEHw7haPaFaGfHvlY4EChcNj5fDNMDOsz98ZGIyWsoRuhpF1Qscu0+t1oAayFMH3YOEZDfLr3fQ+btUM9XYGBxnQxB+F2Rf+n8Ix/nO3Hsdz9kjuuujBU3w0Mwu0IuDUd20/k9N/r64VFHmdmuYwQ4zWn9B/hIKMFW1GTnbiMkabnzSJ5uAt+MkWFO3yCk/ljw9L2DFOipiGTzJ+aDYjNv8Mwyvd/fHK4Vp9JgckjXsMWiAh43HVicpPsgi+6Vr2JzPeA1sObbh0+HsE6L7ZtaRCR9MDxD7FovrFiIlR17VgnbSzXS5GchqGhUILn7IBlcoh8V8W36wgmO9ydTr2EQJibpWe7XXjiMIq6mGZaBXNcZw//YCajlqfi3uOUumFMiEBh0cbAtH2uovAuPjIYfn8LeaoWWqyKp8m0Z0Gxtfpm9IBT98tqyUMXg4fh8k13ApTq4JynvLqcagfb1v5S6vaeFzkUmjK5bRIhcFxJs34tFGlr7YtR+9oFA5IFHvBrpwPG2QI24Oxw9+PDm0CuHPghdeiQSHd0I9pEF3jJ0z4rJeyFZJN0LWMof3tpXjTBV6bdz0c8fKe4+bupnT4XsQx3NncW5wM4lbuzEQ0Bc3vxFX6EHuOTIX0v35gFTr77kPeMwlHDl3NjaTDsMEX9RlH77wz0XFk0RswgUhin397vfAo3lDyfcJ2NBzdlNoCOY/v0FXJx4vlBB/RnxaZZPMlz1NVRxcA5Fr5g/5K85dcCVTb2fB7vJcHRca1+FFAHdyGm/p8TXCnac8bivdC/YzPm3lSYZiWp8LL5E5NIgRUX38IPkRuhQOpQuk4RD52e9Pj3taYQJMnYPy59EePTq85fOsDD0m9+tQNapFaSJ3ykMscnwRqE7mT8Ggx7sSES87a2BSBR44To1C4zeuWjEpAajLKL1pLd9C6wUxbxQM8uCmb+rEfLKWLSwtvh26zQFUg+Lbb73TAAuimKXUDUByT81R1MSfdD4Yr6Q8XUaYEgrBv0eRMSQOt6WpEGBJ2VaTAX2FRAQ9ceB4VAU4m2RTJNZpEKZ4CppB1MKLM3iZRnCBDS0RybTbKkNxs7OnyUqNsBV6cCdxfN49MOCuEdkvg9OcM3pqkdUwlHCt00zurfOZl8Vxn/qhoUBvUPPbSvgeIebBG2ZgBiFpqPHogZAYpWyYfwVwfSewuqMMDy6tOnAve7TAmT8EY/L+DSgOF+SYBmJRPXVl3u6aTT4os85TPjuC5shm8UWxjiUu5huNF3WC+nahuy5/nVASe0SHv1EQJ0rD2tOZVFBn79HI2m9FnpK0thNjxPRByHtY5rH++CS/BJW508lxLfjJSQDo1AJbq+z8NV+YOZ7qbggmgUKqvqdEkZYJNj9d392Pp1v2Z5cvcQYByUP+Xc6baOQlJaVk/JWE+jY8brxXokDgxT90yYJ4cgtwXqvbBndrwN793nsL4Uw3SPExW4skpc0KcHt7oD5NAPzCts6oJ3Poq8PDmkdn7FfFs4BoWnlZo5nJYDfpgkdbAtET65a1nMZpUInMT2XUd0TVPC513Ing9HbuUWfK28G4GY52enVvyowffeeWfMwEemc0ndMXu+G0o1JI08bHFwjqNax2+GQU6HMhavx3WC3Ldt3Mr4J3iakZV35RUCyArh45aUe2F/GZPDAtRiKNRttX1Lp+WP/6Jh5DxXqaxI9ev1zwSgPI+2hRUK7KNid/OQ2QDnGwvf5GmGkd9xj9BIGcdQG5pSdaIP6dspU0P4muELbaeEoDkdaHlM2vTED4C0UE3TapQ5GN5dn2Znpz6+ZNHqUTZ/Dq2qTepw4yOBMpF4RICJf0YvppR004D2tUMuFiYIRmd3s5xZC0LcfQq1FP2jQfVKhH/VnQGX/pXRX7zB06XO71x7zd3BitIeJdDgC4ntelUx3ByFvooYsTXUAOPfmeFVzNwF7ZlyadjsefUsPuH+Uzg/Ur97hImwIxq4M/3j6v3nr1Da8HNkNsyGxBPzZZmC9sKqSZYpDyh8EFm3sydCVeOF9rksqkB48iBU+HYEkohUKFbsCwcuGvUnhaR08HDgV5+8RiP79YfmUu6sMEliv2Rg2JkGmWPUzybOBSE7qMFeaJg0qNkIJ23zNUGJG0ut+gEetXizZmsEBEOD+JvDhSAX8pyrDGboWiCKAv8Jr1yBk5zGp7B0LAPPZEKGypAhktf1aQ6e4E15mSVrcZs2D73btj17V4pF+SYdKsVQr+Ip4CHrJlYPnn0LtvMJIlOOUbj/BVgrxt5hpXt/KgL8reyxyOQAJrgzfi6rugR/vuMQwLs3wY8Rx7nApETmlkni/r3fCTx2VPknfWvh87/elSwlYVKy1W/PizVZ4HXjuAuc+MvzxjK3Dvw5DHI4LlUYJ/aDw68x5Z/YiuLst56DWR0DKeRUyN8c74E+3Q5YFexXcXrnCGtuAQZei1hiT2qkgUvnxQM5MOnSwfIwNf0FCyHlLqVmhDLDUMfP9djnws9DR0ftnAFrLzu0qps/J0AG35+H2ZRB712Upn5eIxKsdO84H9MD02fvCNh7JcFS+y+jDHzxqUJzaWds/CKz7+3/dJpChVD+vesYBg65eFhxlWqHALYnzeYTdmeC8mqj5fR8RNRlcGDnEFAPO1vHSvL4FUP7K4U4BKQz93JgpU+7rg86vlerYADIo5K/usuokoAc+YYq7RluhPIfyxtKnGNTctdZ4CBhUPfXOwIqvDVg/Sac1f2uGma21musfg1Dpj4X/OIJawe1c8IUerSAQnLGKbD+LQ6bXGQbb1loBWyVrXKDvCYMxfjVWljj0+X1ytmxPB/zlGnQdCskEnON31XAfAvr5bM5d060J4jcCGDT+hILBTNmHCtFw9NR06JbRBg1yS40CwpnLIfr8zkYake77zqDzUmsAcp5earCvyoDFXjZbkVk8+l6TtuS0gKDNSlXuw10yCKTY1+4LCUHiCUeoLh0IljI0y+4WEcDDZRV7JDUEdeW/avluTIY32W68tXSuCN/9BYV5YhAXlanjxYozFA3V1YzmY6BDXKJIGmFQK6trmKYqFdqLBieKf6TDRu3xyWsi/oilQUfa6k0v7FwjTnirZ8LQsoz+3k945BxvIqcTSQWjXYSsYLovFH2aw5vuIaLVA+xbwZP0XtiZWNirXAvcHS2ODVgcevbXcmB9vBdeP2K2uNqLoIrY3CbxNgqxip/bmFjshQG3mIDkfQiIprkH5J7Tfdb1XcuWMA0cfretjteQoRy3oiW9jkPy9oXbn/dTQcnK6R7qrIEKqxvrS68ISCBdxEVgtR3OpxDkVw8jGBoNWrxD9wLbEaf3w40IBr9Kr2dW0h+v8J+xd/ND3n4TQmu7KoFsxTnn8l81CP36WD83EIiKhWJHqkKocD7hJqFQvxGqOFfXZe9g0b2pyO+mHV2Q6mJ4+oEnAnbqjYjnLUQUdIp0dZOjASbPT/ZQjGthXB0X6NIYiGIYSiWGgxrBVkd5PKejBtqtueVx0v5INLbdn4We+/6XPA1P0L1+TVTK/FJaEGJh/nghLL0L0u/nPzUeKoE10/ynp18SUP7JnN5XLb3gaZeefEomH4azi3+k1BFRhtTM8emXFJDX3nX7SFET3Pnw+zePfjD6cnuk+0ByMEzFfdB/hK+DCv366ZjuSIRdiPLX+zMAQVXXvRWic4E3a9EuTYiA5C772J7jawepxsn/rpVVwimBy8HVGZHowiefSYxsPQQNHBKZKsLA2zhMDAtHKOI+93sbb1IF73VfFcq+JYPh21W1Zf0gJJ1e0WtzngqD7zudVg1iwbMBo7Zug0EbHKrF9k5dsGB61NZ2tgl8nk6KKvhg0XzS+NUzJ3rhgdvf3ySdGjBP/Lkl8SwKGZ2xfDJ8rB2itK42nb9fCT7P038oKOKRo+bXL/RIARz3KIY9IgHeSf3dytcJQSoD3a7MF8qhaJPUHa/dCMb/LZUWiQYimcOfs8wjeqF939Oh/477wPO7x9nXTtNz4L5Yx1tLCmhwcK9aLJX9v3e7tND7lLVDSHKGAu1n5s+EFmSBEz1cmA9HonSWa3O7Fmvgoll5vXBxJZhO5IzetPdDff1MYrJ8NPA47n1M3LIcoih2yUqMdH8ncWE/7+qEA9NKxeEelSBEIGLtcQTUjLOLdDHqhQ8/eSJ26FwggpqFaWfwaK2n7NFFkX7AB2lPJ+bXAP5LHFd9Zjhae1UQkm3WA6PFIoGeZXVQtCdUNrmUhGQY7xA0hVpBwmd66KaXB2wlGh8RNMGg2imHxT9r3dD+QGffZgwedu9yqhM9EoK8HTTeifEMgNby+Oo53mbwOWR7SE6WgHY5tSyRZZtAWI1f6EI4GUoiRgy9V4PRztDF8d3tTTCqMZIZcoIM5ppLnq2qAai7Ntzc0bkTOvs+fWh60QCKyR1+ZnQOedIWdqworxzsdAL3Zb2vgAYhyjaXSiA6KfxY985IJ7Rx+0uwBiDwksnXPCeEQUYppV5MBV0w42rRpOFBho8OVperJ3GoKtk15XdXPxx8rMn2ORsDPISh/nxRInq+f8lo8n4v5Kl1ik4XNYJi7sV3l0Wx6NVXtqkAgwFg8iR9kh4tgJkM+WnhXiy6zBilaFFCP+eflP7UfIoGhnke410oArnmyOiqLfeDNm3XnFR/FWyPrHxS4sOhkpVrhjSuHrhfX3CM+KgKnrf4Ohc4kNCH43nf9EZ74e1nTMt3qAOJyawxGp2j7ExNIr0i+4Ft+3SUUEsjfKRH85IOCV1TDN3PiOuDa6+P9qfKF0M8yYCvNcMf8WX8F8J3mwLXWz/9rRSrAu/uCYOYpxhk8F02wG28En4QfEjXBSsgx92wBrMTiIyeLATiRvrBPeKhfC5bOWQJesctmEehN5EOBTHQBzHJdwS06T1+k3HV6BAXFoWo+IZ0H+6H5gdMDD4+dXCxw7zuuzcR2XdjbQIKqKDwV/2O5b5mQNUXhBjiSMjnXb6QfDkNJj62V0vk5YCpisjmVZ9gpLUUdvTOSAfYNDVdNlFthK6B6JMqTvT9VWNL+zbeDgqRDRLXk/PAWaZavP2bP+pauXY9ybENMm5+f6bmlQH+rlHpa704dFHPncrtRYWfglHf39SGAdVurth26B26eFF10uZoP/ybiVqVdKsBVZzSC1tTAsoxf3bAq7QcOK8kvk3jzQQzDSFa48tAtChzRy3+ZB3c9GVgNDxcDyN/XCyL7ELQ/AIrx3VpIrQyFvQnbTXDuztc5mP5fojK0HTYKmcAHJJ62vt86fyZTnaCiziU+NdW+NdzKtx2uby5aNsEu+QPtn4rJKLqmifz1+m9lWAck85BJYNHu5f6A6UItMPzd/TxUSrsNz3V+722CP4K2WIf349Cy6PVZpZD/fD12YWT434VoH9gK9DqEAaxvBZ8e/ViL9jKeXT1V5Cgjl3rSbIYFp0dVd8bMdsMn7etkhO+RkH82aqxntoQtPBOfXOkPxEmjkvuqEEVHNktNJzKFIr8+sbDtpIH4A0lR8nmeCXUHI3s80/Foy8j0axTqZ2wh6U0fZqZDMGOrkfsYvFIo54okCnWAouJK3KctGawGBiZyZl+h9SZp6wlC4shaHel54+EEjC4vGt1LNYXveZ4l3LoB31fQvNxbGvNwBXL/XJibzDa7WJyXOAGDVw/svWbMxXA3uzRJDZ3PHLbeh99W4UClllzLrOPa6A49vFETz8RTTXvXYy/TgM4nhZEY2yGTlW2cq6LkUh4leNJ+SEqNHqW68p2NEN9gtTDK9JRaDoyBs9E6gaaXZKa0zsEcT3zzuEbGKShk/FX4AURKKQu9du3m0Cs1qD9PoXO29fXhNz+lYOVQjH+F0sJbNpy8Ye+DkSUGaZHq24+8F6i6xnT42Y4aa0U+F0/DBmSGsf23uyA0rka1lOGGHAlEq5/QVj0t//dL7NqKpwkztsXihaBWJxjv8FBIvKSLwt/4jtA90zPR5YRFUDWrBtzPhCOEj+fV8DSz0VWkMaH/WbZcDOc4c0uExySTO5idH2aAoPW0kpK+aWgxynd3CITgv4FYjwtkgZgl4eni8pUJngHWfWP0XNJ9PYjk6OFrRBOI92g2tbC1RYH6zRRHEqtCB7Zau4Aqbu/crkvpcKbQr9x7av+iO3P0d+uOU1AZemWSIsoArx8/TU5k3B0SOliBN/zHshwfb3kvKcQjm1vx0/S8Gg166dywnAXmHtrs0zrlkGUG2VddZKITOL/CTEmBMK1G6nVruJYoL0ads0c90f9f3pOabn1QlDtSP/h+w3wTuOBXvFdPBIZNDxdItoLGw+C2UbnQ0DpU/yIo20Iqu5pvb90ggqqQTXTQfrlUC8+aJIXF4x+mJR8Zl/uBNzm2g27lDIQiFs/v68uAukSlvL/KnQBuXp2obWiFrSOLJ5u+otHy9/vBx7Z3QkUh9KmL8fIEPbZRe+/dwT0KF1sx3KsBEZ/JZacnK4HyT3Ph9saAlDfaaVGxDsIUcPd85phNcBwka9f8D0GPfvY5Pv9Xx/cSzr+OJGet6E7V1JNcVGId/HpdZPRSgj4ubzLw74UGIgD0adFgpBgSZj6s/5eUHhoy3xaOQ1ensz6g9yjkIJUIs8PyW74k5n7Xb2yEVRisC++qeJRhFhkz+zxVBjpy1ESOloOEBvd827HD7lEmqnr/+sFmp9eb+6PYqAcsr7CTH8fPTP3T/enwsAx/PzF5qfNIOql8xAbFokU9BpaSYfp81PRHRm8SIQDmvsPN3/Fo5fCtPV8XAdkW/2+EZhVA7lDzYz8AeFIWOZlWiA9l78NQ98m/byfNqo+rXkhEo3N+8ku3B+A5n3ExEpqFazDBYkhLgJ6u1hk/tJkAGoySO2fdKugoerBS80NHFJ4YR2pbNMLH3eZnY00LYE389MX/Usj0A2tVU01ll6Icdn/QuN3CcQciz+5NzEE1dno1dUdHIQO3SspdCwEU+65C/yPMShfR3Sk0bUHLEeQQpNTMzDIPeJdpuLRngVisO1POm8bN50weNgEKcyru9tvkpDIbqQXpEmBj2ste8vEykAzpTvuUB8R5XXpHR4SGAB5vOfL2sg8sNnrVSQ3hEM5ZjYo5WITmK5lPKqdyIAuho+VofzhyG7fUgxJbAAcfR1r++j+tWlTeyGaRkQ3uLWb9a1bIYW2Db9exsM7u4UAG7FI5J442pVNoZ+7tddVNwCBg8OfclVfArrhe8mxzBTBf4ubLN5Xw0Cw8cRZ5RsRqHMjHx49pMKNflcPrT9l8LWSRX6DhkUckaKrTsqdsDvp8lZakjvc4hMy+4jHIWylb/3bI/1w+02iLkk1B+JGPszxlRCQgVrPAHUpEJikFvkv9hVC8NObswwqQSio5eHi/FAnNK+MrttkNYBgri7+8mg40uCivFM6mgr3DkdWppJTISCDan6CLwSp7z0w1mtAhWErJSKPtSuouq9f2T1IRBOvP72WZe8DwZ6H5beulsMLkv7S09Ao9FlBT275YQIUjpXWlV6thejnuRwtln7o3Y3yVUbnCHjxe6eBO64WNm9WNcc4+iFNTKfNexcaSD14p/WwLBlOD5+5vHgBj24zTx//E9MCrKYhRZFp5aD358PV04ZYpHE+a9icPQtCZ+5x7r/ZBN68Z3crGgah9V//bQRad0BTcBzn6PNq8PVIdEUiBGTY9nyQ5ESF023No5/fRMKv362v2WKIyGbKTUjqZj+UDJ6/I/g7Bdy2TrZo0Xnv4mHn0q7T3cCk+GH3gdE8yBmbZNJ2IKCRRLZpge50yN9bX0hKioNTJ802fZX9EdVDoPzfmwE4xMgdusnlQuf6D7a7eYjIOtMh4EI+Da5/Sje7+qkeKJ17P7GxY5E0mgtnXKeC9oa1+EXFCrCrs7lE2IVFqmd5TGePtoH2v+fYzVgEHM2tJnevYlFjup3TXZFqWKjnF2bg8wdsZdy5d31BSPlYgXvljy4Ikfg2VXW2/v/vm8sQxyHxoHtKe3VpUPf+hXsszht6mPXZ3a3wiKnl6M3PjmSYfvrF0yTfH8qqWJl2+4Sg/hfc7f9do0HmG35Lz+U0GA/ZWBsoi0CSL+ve3CrtgppnmJdvLRthyOk/KdZSIpIw4B0/u06DZrzjYFk3nVe3hZ6d+RGOhiWzL2jsH4TJNs0bih9SIc86JFwbMOjAZwV+plfN8HxH9+df7nJwVWLSNA6MRJuze2k/AnJh/cj4VqJZOdgLrEcfSAxE/wX8N33LtAseHDiOP9BUAwGUpb894UR0UGFL/blRN1zBtvxx3YkCmnRoa6IaEakTL+of4CeDMSv3upNTMRDFFi6K0/PhTIFhotE1HJz4wc1b2/0atjf/GV9pj0DPo8XIk+/qQUO+3P50GwJ9EQ9ZXvNQxCl6Kr5FgQqityjcty7HQParaNnfAlEoosBW6KFIAvguDoV5f0iGgvPiyRk3AtD9FC1qOZUKu2yOeDpn1kHxnrapBBkMSl2a6a4RRsAqwaj98Xg+MFlMYDvLwtHu0YLa6sOD8F1tt+GTkkzo8ZR7Pv4TgzjjVCsyaFQ4UcXkci6uAZbTT6c8vktCRw+cCKmkz62buj8HY20DbDtLPbK9RURkR3JjIN3rOep9XLfk/SHX5mE4ysGg0GqhCQGeLtgScCUZLyeC8lp6gPpNInptttJ2b9cAXHUo8+/l8odMt/cq/53AoOMym0/GCDTYe2dvyPHhWmCsFzrZJuqPdASsQ0dpA8DHKVl7i54P5CETtd/H/NFPahg6pkgB/0tuqnmNsdDLKqq/hyMKMV56wN5H967jb09+TNHLgjM9WjE5zzBoAv++7r+AASgNGphOPkyG0kO36pK4iIgrZIX3+bcecOE1vPnVAMHsOYNmb0EcMqjZ8rv0GsH9zpFsmaUgSFRTf9Vs8w75X9+6zi3fCSqXPGOiT5XCzQgNRUW6/8bsGO7iUGmDSn9Bx2rRetA7RQnJpnv694NqyxhEAfbOtO89W3UQd9F336FFet6G6wscFugB+/2dmBd2TjCjHjMkHExC2C/2vq4bGWDUnPoOr0+CcQwOn9QQhMJ1RI+89aDAq3TTchWZZuDVJen8HMCjs3opJRpdDVBuZSg2ZZcJB+Rud4kH+yF3zHOnAG4qCG7eGcL5FcNM6fCVis0Q5IDedDRP00De9wjLK89iuN71LbQxOBx5R+toT9a0QJ6634T7RCG87hWqvueORTrZ5yV75dvhTmKUFGZPIhQFZEhU07lR6L+at4+VqVD8XEdaezUXbK4Tc+3ORKFUvyP2dSd6gXvIWr6P7mUsj+5v6HbjEANH6ULDUDT8t3oLoukcyN7SEnp8JBDdl7tTVRPWDMkjF+aDXuSDnZeq55XdGJS3nfZImacfcr6KRPHRfZN1WD180ISIDqcpBZINWkG7DnfkijTdR3iruJY3sOhYjvUJQlYd2Pw4WbTbvAK+MPobezSGoP35vKymf6lQFcY+S1XOBjl9pe4bpXjEk6qofesHBe4VSe/7OFMOyQ8FcZZ6USiHmHTeYbAdyo42rsSElcMFi/bB7XI8+t1zqZfTqwPe2wl0UvZVwB9eA4aeY3g0IlEQrk6fm8+TjYJkRmfoXCD3B5yOQMn92T+KLHpBg5Gj5By9l6OfG/lK0uetyrZ84+zRQagpO8V0Qb8BSHNF93jHMWiG619LGvsglKu/2m1xqgkyvzzmH3uEQX0Jb50pa72w63OGZSdfPrxcSjjOaRSF9pjYtruReqDUdfa6p3AWLLe4LxguRaLhrU7JeqY2OBCwbyYjLxkaZoJXVHH0+alt1I7h6oOtP0WKQkNkmAlpj378JgrNmaKfigXdYHlOj7nXrwa4iy+LBBPwSEs1tzfjMhYChMejBb6Ugdb1ZZPHjRGIlDv2Q4CdChp3O1asl1JhQG7MuMiYgPrTX+29rzkAz47cfXDUoxLOomob24dE9OaYqFSgaxuIpWttYvxTYMJhj960MRZBkL7EI90BoKUrMedv1ADp7tzWEyIeLX49+GNHJBL+ZsWYuurVgjX7jzsY80i0z/cPjqrXBxLmbeeMnmSAon9EzrcXdP9NFUhxlqKBcQDPOVurHNCLPsVkn49H7bjlZ67bBXB8au/Pv4lY0OOyM7Sn9/t/HgddWWyoUD6ZfUrmRRb4CbzglqPzTMGTmW+VQ93gW+h5dDExGyRfaKxm/odD73tjnqhldoCwcbnX6s9CIOerSUWOYRHrvOuXs9WtMMxi+FtrpBKeKY675u/BIK9x6dqKv90guJ95ITOgEYrvHvL8q0pCvlWzzxVCemFZ1OCMyYVG6A6alXwVFIV2+u9xN823w8McV4bZqlxwfV729mErHvlaOfjdyO+GAJkHu5kt3EBJabFQZ42AAt7ZyiQa/e9/S2V4uwNeg/kLizq/3EC08ALjR3taDqi9aclmigw3Fy+/sPQIROOTA0uf1gdAuNApx+h2PmToWDyvbwpBGp9fvG2n+8aAZvsuClshfLAZXQjgCUFWF3Yz6Hb3wMNCCr9NaA4sGnjMsPSS0BVqwjlyO91rfr5YqDhVCarCt3/wPcQjJUUvslUsFey0+W7M95Gh9nroM+tWIvogwCQ9U98P6yafPgxdqIU5oR9uBfeiEMauY2LFvwfSfxzwvB1fAYLVq2NqBwkIXYvn1HXMBtKsqvgltlrQaXkMcjxBqLDt9aY7Zwuw83kH6rnWgYsuU8gejWDEwXi8+Oh8HGj8UojVMm8CVHbcmu9PKKpOYR3M9EuDBd4XvMsGFTBz7OXjbw7BSC3fJGg6gs5XJodIoQZJMB1zbOsvNwEFCVtJ7ZurhwuNKhxNlaUgyi10/LtGKMJ3WnWyqvaAkcPow5LWd/CA/CadkEVC/wcQPijheJwcl3c81e/7x5OIkiIUUWRUyMoWXUIyQxlFVlP23kr2PhvJyN57z9ux9zFClE+khBIqqdDvfH//vx/n/T73fV2v5/P16CvtPGabAq0q/hWBn0tgYkjrpHtqAmLWwVlqb/aBykHsydtB3vDte6ySXgcRrTsU8e+yd4Jsk4GxEy4LnKz3dHOWsYgrVsZ29iiC7TaZLjeRAogvWYUIUiS67i9tzuzSC4Pj2XyfunNhss5G//h+IhKVlowLrhmFkDk9lBrmDf8F1J+e9sIj709RXpG+vTAn5qYa9q4cDFea1g27MOhZp+SNCeU+yDzebfP7ZhaMX5atX1XHocYmix3xzgGwvmI5OdX/CnyMfvwpXSOh2CN3lIefNIHI38xVU4dMuKxV/iNTNBRlh16rX7o8DFcyzvWmWFbDJDOnPWExFp0/cUubwDIGaYodxgWJfiD2YOSW5UUcWsU+KhK50QzY2/HMa/zFoOr5QePCejiiBN/iqnekwM9c+p+npCqgY1lvRmwHiz4f5TthoT8GPovqD/IP1sF3subhlYx4ZKclYaDmTgFNqST6pzgy6FVsNcw04RDTixO+4RwjYMm9UtzythR0NId3sLdJyM7f1z7qGBkWPP96ZDWnQOoH1xh4hEFZXq77yX6D0Opp+8m4tBGcSujxGXyJSPCphGhnQQvcNcjDOXaTgYXUr+IgGIs6MCpKD8+MQbUz6/y3zVpYsQlmdffBITGhvxyCD+NB3+ruL3+fatiyqGf8iAtBOml3L/5oGYFaDtHfRQkVcFeOL9RtjYj8sy5saRjEwP01nRkt5UowCukcvb6WgGzCT3s624zB7QL+w1qPGsCxfECH7ykWvbx53Umavx7mM/mnHhbUAaNy9WbEt0j0y3OzRilsFL77NiS2G7fAK+OnS09PERFG8PnHjbYe6PA6p3fNrQQ27hoNrynhUWiNkunJ1EEYc6MN2CO1Q8XrouXaawnIVZY+V/fQGAT/WVUdaqyCjnGRB8EMBMS2HYGL2O6H19c7jxc754JlA+/NBi/qPIhnzr4XoIA0w7pmTWsx7Fm3FeV+IqK1d/Fv79gMA1/79xu7s23QJH4g9hgJhyQbhvc9demH/BCrlHvGGXCjvfdxpyQJiUTvTFY+6IaQi6phocx5cDrHs5e2LBb5c7wk7G4NwF9bjlE9HILJvIyBmr8k1MhSsH0XQ4GhIJW73VAHRqy6bMZ1JCReWHdyXDEAphON2t2LUoGDrrzuZgoGeZEYbHvfjwJ383fJoJR60BO2iDC0IKAY8zsJcQ0VkFhHMWbCtcPeXFZE6NxzRDOLzdO0HYVM8nEh23/V8KK6oHFgF4t6z9yto/RToFdkhblIrAaaj2UNX8gnIIGXFPOIphFonvEV11Vsh3LhMfEmRRwSnn2RHOI/DIdHzxIWAslgzG174jMDHoWnmRqpSWNhZ8G7ZPgDGeRlMwLH+RJQe3l+Gxt/P7DsX3IoESGDqXZPyBNlDJrgc1fCKwxDyaekWqPMF7CnbGXgJU1CJaVwJmSUDEO+dNbBcu0w/wbp3JJKQL30w92OGYMQLXOs4eO9IsBWPFUrUcGhb2yPFf8dGQX7bU69rZ9PISyq6n0N9Tv9F3rdRQ5SoEK58fvcKQQNiq1dSRtExCHk9t+hBx7AIKqrbsNcDtzv3IW4fmIQjX/Wn5O11P8prrFLOlEATnGhcZ7hsWhqNvO7bk4KzOgObdodaQC262uRPNKxCLW4i2tyj0Kgymt+Jh4SVNWYn/76jogkGAZ9Naa7oUUumGtaphKm3C/WaE3hkMLp4/mhnGPQTXs9z3KmCB41pU4bfceg2+IND1zNquHww358lFYVHMu6Di8CI1C1+euenw4t8LXPWyb8QSHctDoS1swQi170f3vkZDgCfwLvqzXyt4Iff1DTfatYpHq4/eW7tSF4730xjy+7AUhLAgwKCYlonPm5n+abOjhKeXqDo4UIX7QMr9t8ikStqcIn42W7gP1MKPHpNAaOq9uAwD4s4mj52JwhSIFHN1Tq/iWSgfmbrTjpBAHVO/QedFvtAyOZrd47BQgsU26uiPUT0IDkaFvJ1Ahsq0f+nA9shn8mpoXPzBPRD6Hc2SLzTqhtGpsRFWgF3Fzm7dp6DDI6xb/MV9gLr1RYdWkHq+FjZEnE9DEcEpR0l7puNAgvq0L3ZzwJgxrKveGZQxjUiRG2cJDqB9WKXc9KyXrw/LN7RWk0DrV/zhH5G4CBjI7xeKHkHHCw06DvGYxHswl/H6wlUoDTT+ie3koVDMyo6de0kVCyzJrew9NjoOJHuKwdEgK3W6rJTYFx6OZ5Clvb8WRQHxp+gSVUguFayzV9g1jktRxsL3btOWSLJZJoxwjgNOmVjGWPQY8KfKyqUkdBJfKyaq0bGXye0NVre2PQVauP3xePdgHDaqvWXAcCWj1Ot1UcDjG2OVpnuXeCT52clWs3Ap19z20LqHsXQqSTDWdDENNT2XtEGUH/L1n1xJY4JMybrtcdMwTZq2P374eUwEjjoze1rlhkeFVK/tmLZDDeGUR4cjWMVd7UkYyLRSyHabj/S+2HP+GaPdlGtdA6liZnpE5CMcdeLKz1jwDbrZEVnY0C8Lde35vjxaCF7nua6VEIWMYzRj8/bIVTc2ZkzvvxiP6HvObz7k5IL+OMna5FUCRDZhVPjEXexoL/bb4vBYhwurJsR4ar9P5zB45HoGgBB+mKLArwD5st6uU2gu+rfr+qWRxSlRgOlqR/BnXNqmIt6ZVQcbnEz52aezPEgzomZTVw8L6GO833AmAzDU6un4lATF8SbP4THgUn6Zs1WTZVMP/7r39bBQ5Jd7JrpWe1wVHidrYSTzpcvUIcYKyIQJgkk9O9gwiAjSb06Y0KCL7D3/gPG49OX9P5Jpc3BBZ/T5AkHtWDl8jNj3eoOeyP7SQHvm4BOZsMetmCRDjwgHnm35VYxCD6eebnQCdEmZxSfmwZDinXU1ykbWJQ++/Z70XLFDh37N1jtoVCeGbxkIabORSF2fc+FvcZgJ+XuFZ2nzXCXzuDTVZKAqpcIEO9VwfIKxp0JQVmAunUabPiyWhk7z6xHjYzChMT9xiPCJIh21T5ykQAAXFqLD/RniXDkdxrHx+M5oBW/dg9owkMMtMZsP4y3wHFht2+FudfwfYkD4u3QDyqdt6426pLAR4LNU/F8+1wiuXC7Vh9Isqupvf5WBIJs81fn588ng82h2NSDrBhUFPJOU7K0BiILkm5hc8haJfimfJyxKEWzG15MdYu+LJmw1L8pxL80P6GH3441N9T/zImrA++juc2NzvmApuCrh7fCB4tcfxqiAt8BQ96z+SXNZIh3/i5VKtRNJLQ7TCO0PYA13rDB5KVrUAJZx/VOYBFLzY8zVOFxmFmPlUTvSiHY9MxprTdWJT2S89cgnccEre/it6Nr4DvKY1vrn/BoM8H01+v9HTBwJwT97/0QrBY68Qr3sEiyuufSPHFCERHccnWybfAwcNZEn948Gj8GCtfDGkI3AZuPGGNx8LVoe+37Khz3vMi+M3ZpDE4OZNiqcfoA/WNx+yu9GOR1+2+tJSr/aDcIdOfa9YEC4SG3/QcJEQzh7V8yFwB+xLpfiYZISAXl3NYH4pAg1GMdEULfSBZuWXy3wAZrD6E8zk1E9HEatG30sPNsMS9dyduvhVKpQTPPuOOQZst3u6PrlCAsPiYJgCTBQGkWAZnzkS04+NW7UBLAbnk0y6Fu41UPufd1siJRvSu3kjXrgDMJYzWlY63g2e7FRfXuxC0fMdJ+VTtMNgls+jKhJeCElfWjd2oKPS9UCph4sIYlOoTvU/MNcFNUtJL/pVo9Az3eDqtZhia34/4XGqvgYZze3M7T0nIM0d1cn/oMGj3z17ep0qAGIcLJ7fDSUi6vlLjYcUQmDk/rw9KSobJWaeU6qehqFSL/vSEwxB0yK3K2beQoafmWsFrNhJKn8kvGUygQP9m5qcCXwSGTGyvok1wKH4aSjVFBqFpaUflpUsViIWtiVsyJSKJHzTkL88b4PZU7nfXrnowLj2u4t4dhXbX6Y7fMuqHNMID/hT5SPhsJpmWbERA10qO2wr9GgDZUlP2dwJ5YDnelabOhUdSXx3fKWwPwBF+IEuKNkO0wNb7nTgi2lB+uyjH3QvZAevjpv1kOE++zPWuhYCMO0WF318fhbLrQVqxX6h8WS6bzbbBoSb8gYtu6lTO6l+35rxLBjFuMcwFhjj0uuls80DwMKjhjnjV/W6EO3lWFr8RHqn26Mt/2BmDgbtpnqpebfD+/uVun6Q4ZHLVgFXg6whofuBhCLYlQ+Ol8vlfq1hkpGx8t+zyKOj8+vbzwMV20D+6rGS2mICejijkdXzsBm/NXoHPLvUQ/HApnT4Zi4TqiOX9Sx2ge0770LOeFHCIuj/f6h2FBPL/utmeocAhQWuWvuVm8JGPutPARUA1RswtVRu9gLlWVe+YmAP6B+Tc5S2IiMbV2/LO2T7wpz/8TJELgeBM+uueTjziZ9T3NGnqAALbu/0C9BjIG5I/0lCTgGid/h6+9aof1uT6Kwr2kWD/2tvz58VIiINoStq4PgS/duyDGqLIkMohX36mDY+u7n8/j/3TDk+dU8+q2FUCZ61lY+UlDGr7JmosJj0CZeNC03zfEby5VJv6y42Etl7K/sc/6w4v3j+7SuflDnnfMC00bFgk/Ms3msazH55mlLnM0L4Cg6vzLwh7WOSnmkUWzg+CJLOyU1UvyGDbHkRjrB+LrAL37O/N9YKMEf0NkbBqcFrCMGuX4pH5kro9/nI6kLvbXG81FQJNrOvVRZ4Y9Hh1lGVoigJ8d9huXjraDvd1NDgvH8Oi1Bbsxu0LFLjENvqM6W8rnP70eJ7tAAaVk3I2KqAP2L20NKtZCkGA7rQkXxARHRx+8utvyTD87EmYmykuhIUhCDHiikfem0VVBU2D0H6pYHV1phlk7BxYGbQS0bnRehl2+xfw+v6B62HPX4LPvZdcSi9i0bHSJX/ajxR4b7pf11j9FQy+/OIkfhmLlA5H1tvolcJDx/ANbmMESoMJueLsEQgUC/L3M3YDZ8nVN3HOmUAp+e+BMuBRT14vg+zlHviV9Xr29GI8HDhpQfC9REAXqjaan6REgHMAb0iAjAcY7PinLqhhkBqtM9GjYwgkOz+wzWW1wvL6cMHrbSKqrzN2yf0wBFOHDv10M2uGvg+D/IYR1O/X9dm7X0EBZ4VS/rj0XIjt0lEf2ItBtzsP/BOr64TyTl7nh1bVYPdD0/XsUjRaP//It4+9AxR0XCNYaVrB8bWaE/YM1UM8cSoT1PP8cUew79zdWtD+zStbKY5BJR+8P1Y/o4Bbx+aNQywt0NC38O5IDQlpn7WUPylDgRzjSyRbUjPskxyx7z1BQi1/SnW6UkYhhlGE8887Mvi5NGyiHQKagNywgd/lMEMToecelwoCG1YsPAci0DVWD+lo+25I0Po0csq7FS7aLN8cAhxy45X3tlgYhVfn44ZZ39ZCJClcpESDgMQj2na9I3sg5ZIAJkAwHX4Q8bir73FI4FSJfDP3OCTV8/8KMWmFQVJx9ATVx4LW+g1bgnxA9Od0wLZjOzD0xzM2L2PQKhPHsx3dEfg5dXzsIT2C06aXzc4kJqKZfQMv3cJ6QY5+VGT4eyVwS0YbtJbjUcIFh+PLEz1QbLy/6HNqC7StM3iFqeLRsUuBnP4jORDzsPqYt1IuuAXhbmEnI1E/13unPM5+mEj4MlJpWQ/PPgT87aTm20iDli6xawA2YEhTh9p3NoKCu0yOEtFj4RHeI1zt8BOvSfkYkAk3BSZPGJ0JQ+aeikzMxvWQ/LK2vYzKN/f4yD7F01FIsf6zXC12ABhcGwM8nVuhzcWc8/MnHDo1j19Z6x8GBg2Lg9ZL1N5zltaL1B6NQtuDi6QpnfAlLWHO/1YeuG+V3Ak3xqGdw/muBzNHoIn7+qtAav7/9rz1XV2NhP6bvCDKQN1H/4D9sc5n62Hfk0OPhPeHojIHOzVOjmB4ljdHp8dWCzpGxy+4h8Wiq7OMmaEy/UCKZkyQfFALqeR7mcuaeMR2y08l/SyCm2VV7w5R59Zt6+MB9olINOYPora4bhARin+LDSgDlZ4bO+MNGDTexlVRrDoKL/0F9z0IS4DyY/0NFpYEZMmbdeElvguOm9mKLRu1gn0iz9Pb0Vi01jFOMCnoAX+PKaHmo/HQtbFuYfUEj+Y1HBw8wwdASl2OJ7y4HrL7QnbivuHRW7Kc07RjBzzjPXT6xHI5HHF22s1wDkPLL1Rfy2SNQlClH/ORpRb425Bc78fwv5wU0ONx6YOOwkG92PwCYJdQVsEdikIsVgP7H1X3wOMc7r/bdW3giK0+NWpHQNyLXkfz/XtgTeB4jF52ANT8pmWu5ccj9Vbpl4evdkOovFJ9EyYPtotSq/c4cWhzamKv+Cy1Vz55E77lXgOfn4hspcxj0fbngA8b7D1Ax7T6O3OiHN6F7+8Xp41FOs2CZ/gwCEjvMgfSxivhuDbhD0NwCPJfPUO/L5zKO4/itxxNVdDbXVzsv4JD7vtNb+TeGwGT5ozoBhsMTCJuSwIbAVlLOBD3iseABiPMZ8vTBuEuxtmqBmHIrebaPH6mH6YrbmdVniuCMs+L2hxUb7x8PsCcn5gI4x/PWhbgI2E9Sez5tegQZPtpOtejlAISUVIBT05UQJDLq3TxVBJibTErCmzuBmFXmryYU61Qq3OZm80Sg2QoM3dW5XtBPxqFpzUQQPifv4OJOR6lXkli9VnuBRe5a2PhsxhI6ns8kDmDQ8J1bF9oNgtBX/iuwM7PZMh89yTle3oEqm9798KVej4ci8Y/aL81wkuff/R/bLAoNmGG/atkH2hDOIPqYDnY78g+P+lEREzje3hB+0FYtj0VLvWsAq4t0p1t50tEtw3vd/k96YZ1moFzrEZNYKfmtv44Pwa5666VOER5gavym3hcSyFcbO6YoKXmxtmmp6eiHIdgwwT/JYyxFChRDwI+CsYiS/VOr6GtUXhii3q2GarA404+h25YFCqMZV16fpECA75/1+X6asFO3WbPmZmIzJI/PjCn9kN+ZppM/+YS4K/eDHdpjEHrCkLw3/NA2Dunly8inAhrN7ynl+ri0AHnfSFm1PuVqFI6WMNWB+sDYkZLflhkcJzgoaw+ANX0b86wlpZAz+dHESLpRJQnko2Sf43A1opPTmBREPgeVu66ehOHPK7JH5VeGAMj+4k6hsYaWK89AdeTY5BhZfAJDuYuqLnKd1Z5qh1e8vPrSytgUYTvD8qiAYIx8/YGvulauN/V1qS7GIde+GwdIXENQfxgYGz27VoQxzlJXTpAREadqnX73wzBPinhbN1jCG7bx/wnlZKA6sNDPmL7xiA3i079mW0TiN5Tk/ulhUOYIAUdYY5xeOU56ZomXwjG5xusmbIwSOppV9FnOwqYPfcK8m8oBdXQTZ78VTx6mWd7TOjLGEgx5J78ZU+Gmg/8NUFUPzRdNZ65SjsApbZ+4dGHYuBkPmGd9joRNeRpy8hNjcJS8U48jlQIZJFDiqKPQxFpwS/r4p1+SOSepDy4VQYdVUzRH6mebLb5Q79sjOoPSm8SeI2qwLWOm1QVnYheEZkiahlGwdqzxrLUvRb+88SmNv4gIhZ/WZngTgr89/b0MZUpKqe2MB6n5wlIE9fY0kEYAdlh2TP+cfkgtBrFEuQehZTZIXLSZgjibnTzpKSWQ7h1wuNWCxzK5Csx1Y5qhGrpWZZdniq4KC5/gCAWjbAx7HmhyWQQ+rMu2DFeBmYPmBKbw+PQolyOX6bWCNjkYKW64gtg9aAjL6siCXFreDyQpW2Hi4b1hGD2TJDqXRW7KxWLWKaDxizuDYDB4y3J2rAK+Kg5G6D7Cot+OGT+TKfrh69ZewuXKbVAZ3Bh/4sJIvrcvnBsX3keMGessl0cKIMTee75dYKR6A5l4dLI9CgY+if+o3tDBuWzDskudwjofWDVj6huCmguX444uBML09dODSB7EtKwfRqzb2cU1h6yHd+m9txfn6Nal6uovCacTHcVS4YhQ/vQdAoZZKVbrabqY1GGq9T8O59WWLWyzPo6VwIcbGcbVV9EIm52Ovf/jMcgKXWtY4upEsLc66SUFOIRpxPZXVl8FEh5wX/YtIqgTzpz6LIYAa0Q7r/q9RqD0Smn2a86OdBmIXGXswuD1gPqb/Ax9MGF+xEB9E/r4er9gdGbagTEdIOz6HFxL5TmVqfJG2fDWqWVt1QrHuXslWsybXRBQXiIdqwEGX7j7/ksK+FRwW8ed7r93dCAoT8idygOLALjN/c9xqKH+Pfeij8QwJ0mNd60Rji3fX/I8UICsrD5G/qoshesH3/PFnvmBxxt9r2sPXiEVXwVgU5RoCWpCD0UTgI+S6llldM4ZEePK7gYMwbqMSL7PPrboSXPcPBFNwZF/VXlOa82BkWfuQr/cyaD44GM2zeXEhBOj2frs0wkKHT7Mvj510NF2ISPe2QUun33wtjf5/Xww9b6y33vXNj+gH/1TCIKPYhkqeVwoEBMeGfRKlMJCAnKpFRTfeCvhSEmR3wMniTud7vzLQs8z93SPPINi2yhhqVMtweq8zgE/1hlASHvk+FXEQIiGDz+FWbdCo2mmsz8ts/gW7dNdVlFJLpMm2EY49cHu62VGnWjuXAl179VRQWLstSECrVkRsAOJ9thIFcPQxL/pMKCElHE7a5pOaFx8J3as7uyjIe3ob9EtVmxCJ4I1J44Pgyy9Ph67Ul3YKbk1ielJSKTM+ot/sZd8OuK6PCtVQIYlwR+vjGCQ5f4t+WPfB+E2s4h0kG+VBiLqHx/Q5Sah64ja1/N+oH26YHdLcEM6Ct7pxE4RUCnh3k3V2xTQIUYqavOUwGPBeueHBKIRZ/IRe+qc7tA/N3yenhVEeTZyx2umcehaI8ahuvLFIjmiVTxnyCDwnpMDzInoe7SkWiNum743b35YkCxEi4p+wnV9+PRvY1fOa/kh0DGdQdJ4apgXfbis7lrJPS2cDdb89AoEPq/esc214NLjuDWGZMY5PJck42lrhnED1XYfCeUgvlD3pqgqzHIf8EwjX6vBzYDNxt7rBqhaC5ezG8MhwIPBA04lQ4DT/TMNVrnWjh79mJAWh8GLRmo6reGkIFDiVPixiAOtB5t7/vNHImys7BH+EXT4FTjOwXz/U1wnkHGP781BvHHBNK4v+0HmmOWdlPfG0D3DWvEc8VQ9CXE3Th5fBiMN5lKUqjeQUe5k2gfnIjO9p+8dZvKF/+pGRz9pzygsLa1LCQS0LG14N7+rQ44jHTyuHURNC/xpw7IYFCKXRCT92AGFB1JGRoWIgHuVhV5nisaSZ/8SbumOQw31j/lFP5pBb0WPVql5ET0LOaPzc33Q5B23KPGlIEMg/lnC2dcSUj5h1nJX2Xq+QcdYeUXq6D2ocyDURIkZLKmqOBxZAzmpy+GcqhWQOLHVanHBwioq1N4sbFhAI7wdtbI/KoFXUaTo2VLJJS+dCXi/M0RONUqUX7+Xixg6S12tO0SEZNgR7DHSRKMqtS+8I1ogO29wL+n7kSiC18lVJ4VNsHJ8+9icJX1oMUUw/36UAzK/+sprk7tOWuee6nRpxrhzfbFZTuFWFQgabhY82oMroaupsvsULn8KzuxzxqLLqje/JVvMgBNOTrLsseeQv3XXylXTPHoxpuWkYilLpBonDijlZsK4atPjGMoWKRNH9zaYN8DR8qQzbH4VCC1h4gyUfsj90xGOI/ZANyxLnLXaqiAXYOPMecFCGi+czHtscEgVB3VU7ISJ0JO4Ms9Mj0GjUhG3s+UGgDOGZ/rTwzIoDTiuHMghYiKOxVPRR7ohZRqD1KIRDNUiy383s4ioC25nyUSPj3AcFR4QR81Q8GTzs6WuwTqXnQUDjWNgEL73EhnTyXIeb54u8lCQNrYgND6n4OwMWEhPZxXDrU8jCtcVJ7+cHqcd76gCwqHzTMT6hBIKzAEyO7iULPMlG39QCFIV06wB/9uB8H2iq/btRFI4AbL6tQbKvf5LtDStDbDt67mS9+FiKiQ9miQ56tOUHN1NLjTXw7eZcS/qZxRiIKz/I/BigLnM5re9lzOhCbW3YoTD4noB9eZO/P5g9Dw06DT0yULxoOMouep/q/or+Q4+XQURCwVu9u1K+CpWKAFtheLsO6CMnamDVBgNqnYno9Ax3tex+VVFOoV9/08PUOGRvcSV0PbcNDdQJz8sxiU80CGQttOgaI7AdOyL6qh8s/lgvSnOJTA3VHEwtoISd3Cz0tKm+Gz9DHHu/dC0Le7kS0tIj1w5stWWuRQJfDuO3M7OzsBnRModvVcRxAQYGn/sjUfnO7oHv8jE4Kc20+b0rNTQN4wYCfyShgkGJpmDz2JQQURP+48Uu2F+at1T7nSkuFNB9fhVa0oBPPWHF+dR+E76w15P+d20LshNxFgSESzK/U6owyJsF7jbRCrFQBlphiuxrgo9OSxdqac3BhYv3csY7dogYcKagYsVVjk3T8qkW/VCk6RbnqGPGSQIZXLHhqORdMlUVXnP1F7zU1lF874Snh54FrfEDse3WKN+CXiQ4HYCyNsUpcq4V0f5RqFes56x5e+di2NQmHUrHdFTx5Y6iyzl/rh0dXO+x45VO6+/pdzwDEqDSYyltMCp0PRys1x8oJtMygcoojofciGe46affZBMUiVu2ks9dMo/Jfz4bOXVyO0KzPqMKgTkMmcAsuiFwWKPQRK/m6SwKjot5JyGxG5ltT0PaHth2M3E9aWTpLhsYnidTsaEvpj5ltg9JgCAj/492LD2sDrbtVXeclQJGfUU8nZPwCNLt9Jd94XwLMI33bGIwRENAj7bEX1+WOkCn0l7WZInze8Wc5HQG+k6PfjI0agr7PyK11uLgRfaXxf8CgRBXW0CWiL9UJ6/8Lcw/QSkMwa7HTwxyAHsvfP05ojEGU/5e+a5w0FMRXpTdwkxKmw7roWPwbCH4KDKAZVQFz1zNbgxqLCOx3WpqOj0ACJDHEp7RB+o7VPWg+Lzqg/aU15PQrOh01sU+mzoKIzI/0gHR459P+X/NSZAjTsokal5ZUw6qYxTOtHRP6ye05HY8kQyJcU7d+ZDT+WoHTkeyTilCkRD3IfA8bZWx+QVjOoPfXpvbaFQ231O4I0c2PAXnr8vv1YHVxhBX+1OzgkVcMzPjHfBTPBHZGZOe1Q72AuqTaMRd2+s4plGQNQfII+CAJb4R1F0v1GKwltpOs3jangYXlxWjOWgoO4qFOm2pnx6FJGTTKPLXWuNORpb2vVggBNUiZgYlG2dMHSQSpPW5vflYff8ob1c1NjpqsEVElr0rIIY3BCMjLMRgoBo+WHZX42HHqbbJj5e2UUxNefJ/5DCHZF6yRUGrAoqUlJserLKLR9aEH/XMphR/FINg8nBrm8wvVWXfGDY3mL3p51kdB+V8aAmRKHGOq2Onhoqb+TN8sUqd4OOZ/2RBdSiWhtcYlsbDAKx43V0n1n06FVpft0txEO9bqyGwvz9wBxpqD77ddECBvfmztAnZObH88LalI5Qm9suXLsYzWo/QzxCQhPROwUlsTy6V54f8nLxDakHHg6lrwTqDximrtymNiXCaUmEvyfytrhjvbSzCVKFNL2aPbN4hkANaGIOduFWgB7X7UdphjEdL1Y7s0KHrgVWEqc/NuA1+vPyKV98chzxfr9uesDIP5tdqlmEkGsbJqivDkRZf/Y2QotbAGr5W+v/WLIcN9GOnVbNBLNyLUYnRgiQ9LV6yM3OCshruh9ltavWDR79ozwWap/0pzYd1xFtx0s/qSzH6fyyPtNz0GgG4fNvWm/SflGuCiakPHJIw595OLs83/ZC7fUi3RLN17CxkOxLxNUL7KF7Dm77HqwefXi9evFJsh5f5vH0DAKLTb7xZox9UDvqN3YTmUJvPX4ETe3h0cm49ibzgytwKfJe/LUKwSbG8y4VZ1YFHlI+WnNFoLVe/GZT7aLgHt1/PBHz3BEfDiFD+AZgXo5iluV6ivwNRN1MnyRiPSq8nNlDFrhQaZsi+SJLJDEvIhc74tE0wenrP87UA8k38NJqTtk2DfsK5GiG4V89x50cL/tBK4PaTqXQ5uhM6Gm7O4tHKr7tf353HAfZLbpJh4iVkLBZ5ctOBWKjjg5VbuebYen4jpBc8uNwPjzHG2LdSwa3rAKFFvPgMp946/N1tpgxKprf6J5OOoQiWFn3uyFIGVZ1TtzjTB08BlNkRERpR0VYSGxkkHC8F1jt0YtfGVLe6v9iOrnSd9Gk6V6IfF96GRFLRkuWpjY1MXjUE5pbR0/ngy2Z/dSt6l9yF4u2fmGUgxSV7NmsOnqgsguaTORK41Qoh5xt+47DrXjZ5h/FiIozv2UyGxXD96sl4PGOuLRPebBFtasXmiqDmWb06Hunw4dVlQXizZditNU9MaglbdiEZW3Q94/vMUrqucLHRef+O3zCjQYhUJiwlvh9GkCYsZGo2OvNfbkqT3xivs1dpYrNZDp2/1ffDUBrXc4Ljiv9cG1+/dlH19sAOEikUSHv0QktUtXf/9SB3x8YGx4b7MdmmUrrrmei0PNsb0Oh437wbhnORDxtIKWPp31/QdY1IV/elgrswe8bq96iF0sAJ/Pp8MtmhIQS3jLW4ntdogMS3Tk6yYDJ0OcyauNOCTpFvfVxqQcfkYfcUb3miAuXP66O28EGnH8fKJVvh6MFD5sPKpv//8eZzsfiUbkzZqytoeAO3beZkY5EnRt/b+H2mDR34eVES5sY1BWFfTv691s4GUnvPX4ikdzV3/7n9jMg087BFW5k+VA//qcTPq+ELQq8gaELeKA7nKBgS8mHOYesMqN/ElASV2zzFK8FODXWMsLL82FE+dCxUV/EZGbVFDtl6JOsGHo1M8XxMKHTxsH+U4koA2d5xIrmd0go5Kyb+l9JohVx8pFU/2h/aLWVanoYbCBhwOJ4+2QVqWZUR2biLpqFYSrubvB95Hyt4XuJihb+6nqQo9D7vW8bDwHB0C79vCHMf8WEBMV9UrxSEBVSa5qJyi9wGjSGhxD9VUv89+JwjxE9DOVZkGnsANCl/zKJ8VqIaSq++F0GBblDBXa51V2wGRjBe23u6WQLTjeuZYTj7KKbbPXatrhcfeWUswNLCQ+tVqWpPo81KZ/vUfshbJog/d1d2uBS6LHt8w7Cn1xZ5fAyFBgIeVf/K+D1ZAfXfBDKZ2I3B+9O0e+QO3FTCcMFkqaAdvANC93KB71XP7tLxxXBJ6Gk3tXZKuB7rySo+ujEHTK+kKcmusw1Omda5VXaIc3fHs2aqMElAdB+iEX+sD4XJYbaxACnrY0XXEq7w4ocqfdTxsGy0GH2PjUVjhb3yh5vJiELtl5H1Qo7gRdYUshVst2cITWewY3MYj9CpMC0XEMmGK32qyLW0BbxNw7RwSPaGMFiidaRkFAfcDyeVU5KO0dPmBYQUAWMQLpsjnUOTfWE+geqoCR+7aPTl7BoY5PIxeTTo7BS4XjZ1SO1oDN+m2Hnz/w6LZjFVaYZRxkF7byN6jzm3I+/OD9p3HIKn8ni96sHXp2jnPEh2VC9o3BLYmhBIQ30Eh5pN8DdZnT9pwi2dDgMLW99xGHCkrpZoIwY2B1OPAZHlMIg2wlTTWEBHThYD+v3Mc+OOiY/9V+oAqGDj19YKxCQMZBYabXgylgp/7fqafPyaBzLVTGjMpTPZ5D6i59o9AlHllCJ5ALgnW7dzUw1P7OFY697NAPF+rMnz+XK4Mb3+T3cjzj0Zf2M5T9Twdg4PZ91tjoV8D25M1LtcEE9F5n/uV10zGwccBtCXQ3w1WpOtN7jfFI0cE1KEhqFFQ5TLIWm4qh3OzKkdMUIvqzYBxeRVsKPkIeFyOKvcA/MPkRl2oEYsroQ5s2rVCZv/G0QrgN3vhW1WVUxqLnGWYyLbsU2FkfPzizkQuUp0OqXedJyOmsTarmh35o/kfDePzfM+DiyCp90IJBWttwePtvH/C6ChEpN4qAZ+N3yr99JOSsxPeIu7sXNj9dP5SZkwL7hPNXoiswSCClP8TGtAaa3WS37cpL4CsNo9dAcQS6scA49+DHGIyvP3MrH68Aaf6j4SsGVO47n+JRqaHy9ZLGP+GZKjBjYTDYHo9HP11tYz7/osBU/a1NhudZYFlXMlb6hoA8u2K1y3vaQf9+YgvjoXQI28xqmBCLQ5FX7k2lio3Bf+fHCzBrZOhY3KGNGMWjvXpm7y/S49Dq3bi5k4ZgxNRSNOstFv2JOxR271sC9L6UYGyJxUJFqfrT6ykx6Pqs8V5tNgWOGnoP/2Frh3e4hQObFUQ0yF+av01PgTp+2fHH5xHsuQu8WbqdiE7tttU7645Avu+ywMxaJtQWfVAUM8GjLP202FtWJCjXUwspf5MFdG+Lz7GOxSGnmyxnBphGwetn9YfzjjlAd3RHefUwHs2WHf6kNjUCVyqsL09V1EJeqNyks1si2pU80zFv3gfZK6FlZtG1sBukMMgcQ733ykT8V9FeoFdgeOv5rQYOaEprenfg0UsRztya7GIwJf63kl7TCMH3a5UKnSLQkoMROffaMLxNlLAXOpgHfo6yJg+tSSiAyG5yKrADHnNU619yfAEa/daTOc0YtLNQe2fxXwcoTRp7nZ8kwRmKyt8ZBgw65+G5cD6kF9bL2J9/l6mF0kNmKfnsRPTB7bXdKv0IdLGx2+grkYBSRthfGIRBl0RLGydth2FIlfJHk9oHhUNenw4RJiGJ5lvdXbm9oGAS8YJ8KwtOmzM2xzAQ0bzWGpc5AwXyeEcbpeNrYNwuZeUPFwkduRza4dXdBneOOCoG2NTAlNjTU9KYODQn6LcbSySD89zIzxzfKmjmfsNIrMMgxrCk3P+ahqFXfNqwsbcOZNMC5B32sMgjhClJi+4ZZCYcmZFtJ0MOQd7DIzUefSaGaN6k8oWQb1B6lbYJvtjlD5lvEdGOKbd5zpsxuCHHSKcYFw8VdjnHnjng0BHOuNq7mh3gMxbzGmcSCuQJ9sZh5ViUcfH2j1HjMZD0VFP77zARHu3RupE08OjEkWTm2wmDcCuSt1GD2qPHDtDzTrDjkOhX4xjLA8MQFHo3780XBHNyfHzr7XjE8fiy3f6zPUBrPyfFKNsK36Sf3bKkesh5xZ4zZEIuzDoJ0gXr1AELpuix2FQkijAP03rXNgDO0/qC44zZoBelfMKkFo8YM3op/m5dIL9GMujAl0PLQoHm6TEcGrxQ3H6nZgDEPL2VVo61wD4a+9d/KCSkmquRjS95AVVXeh7VDTeD8I7MpffvI9F/9H9P/KDmHcTzxWoI1UBkzu4nXmrvsGrySC19Ngq/xeo+08tWgSur+1wyEFG/1iOtgoPD8O0CV9s9tXa4OpqocD6IhMLGlMJGDlFggrNaULOkEtzULyxlaCSiw4unjywUjcKtw0GqF5LwMOMu68IZjkdj5Zf63f6RgQn/XVwDGuGw214HdhuDiPzxM5NpXdBprG+un5UC++P6pU1JGMS3xZj8ndrvtv9ZXmt+mQaWzq9vrYUR0L2/QlEer5uhqOWJPD8bEU7ffZCRfToSBe/hVgQzeqEtKjNLv8QNLjK62jicJ6L9pLH9EDoE61mNz7tCImG6YuqtYyoJrX5hIV22HYOxo1IeZ3ypPet+S7bObTx6d/Gf2tCrDjD69jeQz7oSGmkPiVdbYZBax9KXgGgycBdjyVXuJHj/kNXV7VccCk7NY++OGwUzx82SWcEiWFFUqnVcwKFMg+SncYLD0EIYOW1BkwW6uY4uDJJYdE5y94ap3yC4Ww1OpwSSIfra6kOVNzj0oY2HNcV+AI4Uz9jue0z124PNnUvqOCTvKsHvXVUPPjaFt1uY2+BSXnfBhEsUisZIP/kiQvUoN7q0/eQy+KCtEcD8GYNGHa9+iKZykNPLLC2wigxp++lC1N9ikMxvBQ6X0FF44fY+/XnTK1j76jkp3oJHicVrGDWefrDykLnm8KoRWI6/0DjWSECPWxp+nG6qgaZQ8Tns6WqwSkq1SHkfgYz6z9QGPRoEg4wpvDVfFFgc586nEU5EP76E2a4YtYDBxGVdDbNc+EUslThEG4G+sOwOyyx2QRfv/YvMlpVgIjU10XSU6gN6RdaSU31wH10YPCDkBTmJIQ/VZ6hcZt2NX89FcFOtg4fpTDBE8k04fuqORtve7RN3DQvhlbDmWG57PpBix33qsyLQI4cLVUvebTC8dF36TWMj6H4uNMiLjEPCq9ettQzJ4CPPRCf1ugmGCw/03sHEI4/4oOpnBzHQmvw7Qng0D048p9CJB8UgedoHLqvenqDsymbFiKd6goBG2+9pDPp1VqPu2XofVIwTx+77B4JXtBd2fhyHxCdfnr54qx9+K7+1Gn9GAKuXtfpHFDAoajOa5EA3Clyg99bfLwJOATmvNCAa3Qw/Eyzx/AVEqU4cs3VG8Hdelv5tWCwSZX9UPzvaBZ8Y1KRoAomg8Wp/1VudBERSsYg+Y98HrSNFwyGLOYBtzrLh84pH5Zd0bpoF9MPIi7Qkf/YqYI48ZrrQg0HNhm4SmSs9MBqsuTQ3nQk5I2Ya7bMJCLuPm07oSgvMHWTwH5JtgUf9SYNbGzFIl3DWkDeqG/gfHe4Qd2gE2yuWAoLf4pGWLuGWitAIJMcdrSC9rIDjvybaizNISP39gqQz9fkWwWaFed8yMDE6I/77XyT6lPglZIG5C06dHn+2jdoh623PKaE0HNKkk1v8G9oC5nXszG+O18PRjdPhU8ciEb1j9BUx5nq4MN5n9zWhGFSdpjm9NyNRb3L1tWbBEQjqkSkbJeSBgWri+BwZh/CuJkGtHGNAVxW2zikdDzi5ZR2iPQ4JFrucxppRc36qEZes2go2Q1xngs4lolnF8yNnKwYhxeKmVS4bFlwDXZnePSCiaLGYwVNuPTAp0JAQI5gPLaU7YV9SsYirBJ2ii+4G3UVMjupXBCe5fEJkGaneW1SZI8nfBd9YcFj7iUIYmj3rF5OSgE7IfhnQleiBEb+KrdcGtfAi4/LCJj8BXSZ1173tGwOv+Ru0Y5dTYTuU6+d9swj0IM+cLpKvCQrkuSntDs9BvXSTcconHF3U108g3CADRe/PcRlNMuQtFux32ohEWT1PLPQ7R2G8f00zv7EZvv74F9xMzaVMRTYZS+5+YH+CnY86SfU0RTtHASrXZl6zuOcHj8IfoejHZhwt4KrC+lypPwo1X4yS+JnTDdMbkz+x5+vg0L0E30wKHgknnMyJZ+gE15gbUmPPi+HEYvJdl0EsUt+SjfghRvUZG56tsHUytAku2ahPEdH0wQYOiB+hethtrWFGBKoHaHOsVQlIv/CvXW1DD/gt27YlSbfDkJlxkbYCFrH+jnr3NJzqFQ4foy8daIe72a4C5oeJiK9qeLJAqA7U9M+GdDWGgGmG188e+VA0YnFUPyO5ErgO30uynG6GXamT/Gs6IcgppjXczn4UDsRttbeUpYOCCu/GTeo9ip3skfYZHoLGM+yXy46XQ/m58YHtNQL6yWpUSBSjQJbprnqc+UsgnCk2nXeJQFzPWJ75vR8Ahoc/W2kWaiHLaor+QgERPQnPGs+71gt9b2Rx+uRWKLC9GRBUgUcJJ7kvVAZ0Ad+yI/fBI61QX4FrPvQ5BC3RicUXs/XB24YM7UZPMpxm/+d9+QYWaT5fefKhlgBeh5RoHmlXQuxr542/OtHo1dbr88XHB6BQ37UvZqoA0hVlToleJiKvPMsex5tDcFjjTK5paSlEC5554WhLQiduzdtpNnRAFVitniQ2A/tSBFGbOp9t3+1Wvod0wrc3Rpq3aUuoPmV94ZoPBkX3yp9NofrGAZ7y2pWyCMBSuIo90xKR3hZTb/HZcRBRP5m/qd0EdCdJV6o+YZD0Mr0we+AIVCoy3BUcbYA/Byu5nviSEPr57UNqfS/wN8264t5VQyrH7VY2FSIiVHxJxSV1QraGdfIsTR3QLPYKZRyMQix50lZv9dsgovASB/8gHiwvdXvSW8UhzA+ZwkMfUmHyiX7Pse5SaMi1aNIvjkHDjm8//KTO843e6W60kQiyVbc+nWsjIDuC6nDpDAK9Kj42bAUZZBremwkIJiBC9Ke1/aytYH+kQ7Q1uB126zMV5NijUMhsQSYvYRQkKvY5HZUogE4u9tdnNwloouq9vbnLIJScbqj7cQULIVFXounZCNS9qzCVDBiAS58r2n1yK6BRhTe+opmIFCvFxTBy0bA4Zeyj4tIK3aoew/WcGJTVxzDwoqwcNod47+m11sPgn7gCIncE8sgVJXJfHQL9gvCrZZutoLzC+vyfMBHVbWq0lGt3QXCbSmK8YCLw0Fco7VljUZNGId2Pgn54cO0nOW03B7TO1eHEGvCI/d2U6NftURj+7GfgK1INl1d7FoGCQXrOx6Kuq41ChFS+wp1cMtDxnicdnMSi4++XFfa/HIAGwX0fma5mQ22n4Fn7eRI6dfjRkRUffxjsNVDh464CXqekSs+ueGSm6RJb9pUC6iLunSXEJliztmFjtSMgsoi5x4/kMmj+PTmmeKIaiF6v+wqlI9DQinj/GokCAvzE17utafDRzyrsQiEeXVYRz1dURbBpP8Wsf6wdziku9lnKxCMdWpr2gb1BiDgUyoJ6yZCbKz1E45yI/nTtFQqp98O6ogFF4n4lbFofzMllI6EQQQlTolUXfLHl//qAthku7CshXZnDocuWrOJFsv2wSbRzZdEthg9CJ/g+a1P9qsx5/wFXao9uPcH3ntr3fRerdT9Q76vDUtm252cPhM1E10X9iwDfsBRW9DQaVUnVnCrHD0NYNxpWVqymcrBEVNOchKq5vw33ZA3D1RlN/JkABPPYnQqxbBJaq9OtYgwcBKWDJfzWueXw9eJzozQFIqq8ncURv68fNPSTT57Hp8DjMpXTHIN4xFm+G2P8rw1mH9hZ8jhUgQ0bS8OQRTQ6xsYz7aFNhlKfh7y6gtkQtPir8hm1L8/5W0bcMveE2YltNjruekiN4l/rW8KgJHdpDuzkKPBI1SgKU/niEaO7v/cxAV1naj0y09QHOlvMaPJjM6DGMEYcJxGFsaSfH5wbg8r9tgMS30thn/GLl2UO0eh+Tvz5HXwfXPrl48L7rB1uYR9wl5bjUO4cJ5eYZgukCadrG668onLJESyaqXtXrO/gLtkDgpSHqVwbreBxYmutuxKLRKfPVT143Q8N9CLt+5Oa4F3rkOw8Nhp9uaMVcSa7CS5o/GN/JIIgwWKQcXkmGrWSEz14/lGAjdwpeYiat8vaH1LiH+HR/RtYBeXiEUj6jZ3dV9ECiaJ+yyqBiSjjmDzTiS/ZwFN5+IdjbjPoH8g+GkEfhUwZakKiTMegyaH2hemTGmjFfEz4TxmDyqzcv15cHQZhj1g1abpqiG5argyqC0Vle1pkBkwP8A6Hhwl9LYdp+aFePep7F08Ge9Lf6YK4XfScRS4f5vh4G68wxqBzvAcEf8RlwY4X+9sE/0igG+wn6fiFoO1+Xq9XhsNA2Dx+tOVwDcy6adpuOhNQHTPveWaLUSh+fOG7mG8MpBYsHfUPIaK1o7xJ/v/1gG3ictb13RJI0RO7dzWBgJbT5Z/wS43ChblS81aveoicU06Zniei38O4fP7zA3Ahwh+OiDTCvYenEjIiiWhy8p9wzFov8FYA176XDfDvYoTkSFIMEoH75pOH6qFDdcHhPF0DXJHqUZim5htBSGcjxrkLTuP7d/h/tYGBffDMmQ0csvy83tm74QtYiTveasnpsJZoGbyrkoAkPij376lGwiQji4nt2RZgPrtly8ASh4w+vfC7uVYDzcxvnnP01QKj5t+PFjsR6Law2dZ73WxgCFEW7N6sgnu/P6kNOEWh34blH3h2uyDKgMksopIM3Vv+c9wlWCTLR27TujUAuY3/kM8+BOUCBUuvSaEo4Ug+by6tNyC4KPFthwRBB+X2YcgY9NJwjLJ5B4GxoNC2JM9LuJlKSN1WiUZ6q3nFWRVUTp00HzroSgC7lHK5xRt41BC+ZcaAzYHDxm9MLi3iYT/zs8sB98JRWCE9PkRgHOIIRfQxZmWQoCF09uQ6BvnMiFG45TvhvJdonc+oG5Akf6iIMuDQdKbDvwaqt9BPKS3G+pBgRcvF2JR6zhy78rWvqjOh2SfbT2EjH4wyHgcf6gxFLB/TVkZZSSCZzEQeG0QwvK17zywqDv0RC1XF9oxCYvhXpTnlGnD2j5ZZxRPQox1+4fWNIejmPztht0CG8E/mKXo5JBSsUfDRSX4M9nLtPsYGN0GJTZlGsg0WvVOJVVzPGIN/IZtO/XoNcKtaq5zsh0GayueidLUooJT4n3XKyXporPewK9ohoYCA132ltUOw6eAperYkEgwiJhnpy8NR10M9hfLFUTCfnOSarAqHlh72NSUXAtolHf/spdEFbPUj3xiZiqE6LG2k6nMsSriWz5mcOwjHRas5+tpbYPWN/6GmDTy6iNeVmamkzvkXTYOAUQRqdaac/zpi0X/JauSkhgHA/fYz1GqMBMQjGhv/h4BiE9R++K4OAK+cy7nFV8/gEz0NjcP//DZ6IcpWsR0yKXd9SIml8JilpNmlLAapfBlTKFtrh9iB/ZfvqpVDpY7yeAcxCuWfM00y4RuC65edxj4He4DbCZtoWRsSuvNDU17QpRBoilrxXlZkqNwrSikdDkGO6TYs9PtTIL6y2qSKOR/6Sj7F1t6PRe7pQyZ/+8kQtCNnvzJcDeGKeXW36WMR5z7mQPPvUeA1cftFNY6aqz4lF2xYqP1Ld+UgeXYE1FxTdxmmyPDvBKdYrxwJWT57bx+qOgpvDlDwjUzV8N+JxEI2EhHFa4mRM5hHQcwn18lmvAqmQ7Q2csYJyEVPh9aO2mc+nPeYkJEgQ/nkLt+uIgYJhaje5bk1BPJSS4eSbxIgqy39UqdNIqL/9OrGO6NeeECxvnWlLBtEGHAyXlTeSVUl+l6VoIB2J+H1Tk0qVJ+ioUPSMchpGsS/XOgBZ4VrrJLO1N66dZOphoOATvVijFcbeqE8iULPxYQg+oqdqJ8IET2wj8Ucse2CfQa31wxOVYOe1zkJmfEQdHettHr8IQUwAVg/fzYyrFRlhEywJSKjKdEkxWYKwKv+vZsxeDgS12ka9pKEHu5Hsrpv+8HcXrexX5bK8Sp5BtNYEpJyJPwaLKSAbhudFZY/D1SPGqkV1JCouZ1aN03tISa/M5/cq/AE1YNXHPj/r2Izj4bybeN4UVoUIRJJKlRaECHbFalQJEtF/EhECyGJ7GTsZreE7Lvs+3bP2NeZIdkJoUQllCW88/4/5zxz7vu6vt/P55znyQ9BOnIzyyFCbSBPDBENa0CAZIxy/mNyjuMJr5bh0HroxnUyDLkrwMH0dOH3tzgUqWxT/9auFWZ+e4olClOBTfT2vGwMCeXT9Lwn7OhA2jDo1KtPAa4wzgt1iIAKZBeftJ51hLiwl1Ta6yr4XKIfqsaBQyUCTj2febvg4vLF5GsC8fC6JMbDy4GIToiNrfNKd4K0mkcTG18JIIvhuXQ/MrL9sSl9o9cJVswV9D/PUiHWdVdhyX4cujarHYOZaQXUOfpZKTgfLvNHFaqOEBDXHyn3g09q4cZGMO5HTgG8v/XSpzIvFKlTspWkd9LgTJ4APntXHQSB6eLlS2+Rvvz6ztXNCtBBp8d10qLgcID209ecwaj5eIGpe28VRCcdecRdmw1X9uvx62/5Iu4/tij2dyMMcEV1CoWXQUyurwLekIBeYVYf73/kDUKCkacE9RDoxpU+vJUYigTGKzUiE7qAzfxvrAKBCsISh907cyLRzZ2pGvVOnUAriPdcLKsDlbzoFbcsMgojvEh0X3kFegT5JjW3AngkYsLtModFu++cleL7xYD7GU+69Cpq4Vrg+ECHMREZ24yxbfwuAaWHBd4F+Doo6PcPYOMKRAu6NKvYWwgOVIk/0qorg/UbEs+vVQQi1aHd9ntrGLBxy4RtEF8O2dxboS5i/ih0JML87zUmr3+rKBSkR0EaS+9w5iwG7R9t4X5ztBv+211YUq8dC+qnD5zds0lAXUZcO4/H0eHl+ff6mvgk2PzCb6ZeSkZb+4J5B5m+cPim/Ma2rBrw6KXyvGEQ0e/J8JZlbzrYz9PeFBxPBVMj4UPUXub8jNLabfnzwT7ysI98wAfoSsyZgFMY5Ht9l1zfkxY4Lh8qZxqeBOKyP3JuvcKh6F8jhMu7vZnetclDlkwDCSOx/0pYQ9Cvtb0ZTj2tcFsuWFqeswKoE3O5ySY4NOdp/xfJtoOYFL+baXg2fDB/f9ohhoz896mYipPaoKPoQJRNRhqMfuo4IHSQhG78Sp3rNaJBNPfX6/fGaoFjiyVlVAuPDJ7sSD3xmgbLZdLtPNlFsL/yaZpnBh4pSr09tZLOgDTjVP7N/dkQcTy1fI1GQPdukJuSmPM5YDBBnzKtgiClnC+nmXMyaykpszaHwId685KNKgKLcJ0V0/oARPY6F/4oqQaeGL7eSJ1A4PrI9NedJD902vfo7gMVDLCpcYl6P0QFF5MFseNhBOS8Rzj04sVOWLAluh+JYfLbQTaW4vNkdKHiUnfnWhcI9mKqSwRqwIeHJWExJhL9tcy5m+tDh7vrelqjO+tBcvbhnAtPJGoxn2yvSqdDoJfDQ7PLCOS66VdmJzHoh/Cv4KOvusHVY8zh/3tduPa+Z1Oauddz2bYOch1gIH4P5+gRAu/xTg+/j5LQ/p7WZjHvKIjSDf3Wc6gUdCannytCGBLBjHx8mNcGx8sX1B3sEZy/xB5Q5hWOUo5xeFyvZ0BF0oQPr0YNNMt9r83cxKF7UqeLzG+6QFsrfSmclck739988UmMQPXPH7HrjLSBF6boeEZCAURsmx3hkCGggD6zuJcxXSCB37Aoz6iGlX0y4+sTJBSdp/ypI6kbXsS16VG+IdjtHlky4IFFT3EpeXvC62GvofQFqmAdtDpzfZC9ikVKLZKR/uMlkLVfMKwugwKO/laxGkcCUaT0dceHMrVQTj70azi8GNw/uGyWFYSiVukKhU6JRli7k/jpYUIF/Lh49110LB45bDfirQ5qgqIXgyajBAQFX9JGkp7ikU+6f5eTTAKoBStbix5OhBTLTymX/wUjNd4LIw0vqkH3if63DWbvV937uGP6PwzCWfxH+JlCgys9+EPXXN3g/ud0HytVIsJPcnzyE2DAb+O2/WUelaC9yTERE4RHHL7SF+cDuuEvvhT/PSEPNrSaSjZZCOi6pTFWsYDJvfH2/ddG04HN7fOh35Fh6KAQXE33wILASOz85xUX2FZYLZSPCUWCk/UquYYtcMjNMuh7BxXafrXMZ/YQ0MMMmQ3baAq4a1NLjqUhuD9zaVpbPgydVH99g2HDgGWNpYGphXeQOsF/duBRBHp7pIV2tYHZX/q1En4XS4EScv1lpV8Q4tYK1fuY3Qmcck1dP7dKwd3Wwmd5Bo+4QwrdZe63wUuehier0bWAH8vaUShLRiGOLOGVpEZI/fUrQuB8LqyuP1SrHMKho7xyjk04BpRjbdT6GgqAU/8ZX00aAS0W7vTbXdACMvS5z3O+1XB5fZHlw1cc2lGNb7slQocXiv5TnvE+8PhVQ+3SLmYfufFfH0vtgHHxrlJvMpP/zYWaf0bhUWloeqCWIQM4H56h3hSpg6dC1q7F3VjUcDNjrEmxGUbWFyzz8EXw/Tu3vK8SEV3IseXfE9YBf7O5pB4xMmGOy912x/dgFGsQdInvXCPolc6zDRvmgfB+vQ7JF2/RoMPXNPmiFhjT/pv87FshFIkVdVYdIiFpvxNa/FxUWDavLpiYz4Lq+FvTdqLhaDnTQvy2JAJFSb+JF7Ip4J51X/+fcxAqyZJ/0OjYCPd279A2u4eAMfAqSlo3CHUsnU8N/N0K/EVS7SXUEAgLzlkUnySh038F70RnM2DLx01V9DcFrqldRjtCCEjdqq/Usy0IUm8allVtVMPC3TJJXiksynnwt2G/JR0ahyW0Mq/WwkwEm3p7HgGpFPo3FJJ8wPHo3+IsfQpUPplaifMPQuctXgh/ItChul1K4kxjFQSfwXl2dZLRz0f79ly/0A249Z2Bu2oocILdjPfULwK6cWKvcbobBW5VXFG8MUkGVHUm+NIuLGr89c/+/3tq6/nF8XY4Myd1LuqdccUhTC/putwUFfxHlwiM1gSIVqLTb3tFINX/1NU7zzbCxpyof5pVCnD+SnkrbopDsvkprothjbA9Tib8g1Q6VH24xsO6iEVN4a8vGJl3Q363YMH9YabvnLLmP86cE6fdfdWqHe2QQLj0hdOrFiwnJmYfMPlN5dbAiGcXAi4bTxtflUqYqv1ixfYtCA1ctPz68QaCOadUqz6FLLgb+qqCtyEYJdxSwd8RboZ7clzfplywME5319JoxKMlQSnblCcM6MsT+ymojoB4/84pjhkCamvcnJu2bYYt8sXzJWfKQeWBJIpQIyARrjinpuUmIEyo9q5tZ/qI4GhKCw6PwoJG6u33tUHP9WqCNncxnOqz92mWJCDZ9aXOBbEOEHy3F3fBoxB+nk+OOV9OQJNHBoRb7WgwXiva+bDCF4KOa5Y8wkail8JTv3ktOkA+0kArklELBZnnDKyvRyLFclbOXMdS4Pb9W7vwxwkOrDd+x+oHoqvv1V+5rXVDpzTjN8ErBq6Kl974boZHEW9mGyt6GTAfYFNwT80BChd2dhunEhG75cQNzZhusN28/X01oBa2zqvrrFpj0ROJYsdtit2wSyjxUIVSBSSL8QjYnopAfcprqa9K2uCQoIn/Pw8mR3HIDHA8IKP1o2e09Z0K4IqBgWbx/jpYP6bc78GHQTdUi+AtOwPMS39Gt2flwzXOYc9LvGGoXvIjT8hEKxSIvvh3NTkDNLt08YXlTA+KrqR+dGoHgdj6uuW8CiZnaWeerSWjro06weovTaB0DbPW2oxg9uC9WrclAtKoKE71MHaBw/MHs47gX0NQlIGVAGcEIh3fNsuxxIAjVsTuXXcRPLDg+ZecgUXbgkVt2U5+gPtHWTwep8aDvaitHcUKgwI//ijpu9UI3EUYq+Vm5nNZxrA48TCE/j0IUNdphNnQyj9ZWWXgJST5Z4yKR6tPWCys6lpAejw36dUsAdQvFSiNXSahyipRMZXaFiBbrPz5nVYH2RupZptGeKQVOWcXvE6HifN2XRVPquH2wTDjaSCjrNafnO+VaKCHG+v9UkaAc4Vj7IMieKQztc2x6ks3XDoW8VlXJAUqj1gVLT/Boxb0cCH+ZRfMSGlgLVjzQIf19qfMN5HoLi1/McmyFUocKpNeHUHgbzdk+1A/DFV828/6oboZdH2+OH3vYvb1KqaNox6HhkgLB9ZCWsBX0veMbmgBEByJnE+3E5Didm1QHqgA8w22hvGfVChdXBEcUgpG3w6cui+2SgOewdGCr0zeSE2ZMJZ8GIlkBQeEZisagXfJrO0ULwKra+313Rgs2pLJ+n09Ph3s8AqUEQYFzt9f6tbzC0R9bdtujbi0QI4N7lFcexW0vvy65F1EQA3VYxaSmS2Q0SS+FCtRAxXORXwaR5h+7R4n0vk3Hm7uz3WRQZVQ8r7khcQLDNr3T6fwQnY9rKwM5XWJvAXLbN6yp9E4xD7J0+SS1wB6kzja3kkq8HHkTp7RwSOKtP3+1Vo60MqfVD+YoIB0zYUlUiMRsRZM5Xb7dEBZotH0GnsM3Lb+MdM5TkAXEhoYnZMdcOupe9SNyBiwFj81a1WJR2bv5VKEqrqBaH+2mSvaCRyWUp1DivAoZm5HrC6Tb4+4igLucy4cNtybJfGdhJ4827k7ipsOXk0e/xm4I5gxvJytzvQIeecIOYvlRujOR/luPQlwbfEyxY4Ti9YSXx1ZcWiDRjk3LWf9SnhnFtuXYkZGVnE5XUNODHjs8VP39Eg1SDkU4cx2EZHPF0t5ixt0eIi7t8ficRzoXgyZ38PsEZm20nMnWOjgs90y78dcNHSX3SO8sSGhpB0NSVP360FC/3EPVt0VHog7fnnwKxydu6n45pBEGwRZFg89JhcCkefCdetPRCR8ixXLI8UAY5LMidiJPKgI4ZTbMU1Cmrrcq5yiH8CXN8uoVZG576XDL7pNMEj0g9M7vfetcKKjbMSPJRv6qdb/HX5DQNnT4c0n2DpgwWWy3ZVEhAGTcycrf5MR+4bTIMfBl6DZmDtdY1ADVNUV/CU2HFJ6f+HU+Eg79PtLUeNvU4F+LSxsz3cyekAR0j5jVAufejjo60/Lgd5MJmbkh6Jbmh/ljvMwz8fksKCzERUYj0rypDOZecVXyKKT2A13L+u+nmT2wJjJzp+073i02MFhF7qnE9wJcpkijQkg8INu12EUiWzbq8RXPCkQsE3m+W4sBSYfDGf2FkWg2up3QX9o7vA0SfWc/GweSNhM6n/XDUdrnqd/dsfXw326zzB+P7Nnn3GlFDPz85C2lM/UoxbYOGiSc4n2Hm7r8V2m1hCQeJp0vuQoA3bm1qvlO8fBG4V61crnWHSeJ124d6Ab4j+VDQ/LUuEGZipR+wsGCVTEJSXp0sDgLBed+1M+bIa1nrwrgEXGnvnOYwZEMLKR7wmhl4Iz2zNRrjvhyCDqu+BfAwq8N5vYg7sUDMbiLyZLViKQXWUwKwulCTwNKMYconjwq2/deW+AgP6EqnGHSWWA0H1vhaoYH5D/Gr1pmeePNCuanhhmdUKL4Z0PTqVUsL/ZLpxWTUSD7mPQ6dYE66T8qtPsCeDviJOaryKgK3sLbxWrp8Cfa1wXB8pKwSgpr+0XNgg1FdrQCHaVkN1pur9OvABeO7Ny/jMJQJpuAjdG97cAjtUvcOFTJUBHwebfHCIisTiZQ209nDJh5+MOSASOzr1ee8g4tJqStxkx3QrfmmSWbnJSgeSo5ftvMAgN/XeRtWZbNxQeflomHZAHz1JWLjucJqKNhaVLY750+PDHtJ6WmglalVpxhYoR6Dvb2thnxQJwW741f1OqEk48cd+tLIZB5B0dirXM/Az8odfj+ScI/COb5RZPBCDe2cbYvS+64f56Ye5/G1ngwXtG87YRAa2pyKU0FLfCVqNfw9PkYjh9p2PX2xoSeni4omC5NwSiWcQa6nZkw+ffVaay7Fj0rNv6SFo0Aw7pbsastqYCIUB9B/4xHuk1mZ+YcWZA7M08Gza+aniLj9jM0ychnWD+aNnqRjh5J9rsCmc+/JQV7f0ggUUsbSJVqQPBIPJO/oelSAEIbtINrRb9kNZ2yXrn1BZgHLqmG8fkoMqHOt+SpwmIp3l/B5tWJmQd7RVP6imEJ7d+9IocC0SehVXJpZT38PL5FqVvNYjJsdEvA31C0JklTf7Sby0AhzLdbyplgLu9imLmTiLax54aZH24GNij9ih0hFbDJYMHlXpXMeiM1g6LXiY/S62kh3U3J8NZC0uBLLEwdDnhjWNrMh3cDjiuFtiWg+v+3xbJoSTExsP9+snfLsjjF/g0caQOOEQbw7ABBLQdwvBh77uA3d1tSnSjBNSabDNfekaiNymcXKNMPzrfl903tUaBCYGCnK60AJT+C9OqsMiAJRGV7IJdFJAUp2g3n/NDspsm9w6uVcGV7Yq1WVdioUxxe4+mRQgqulqcvi7cBTcmB2K6cTXQmbE9NsiJjAwPaRXk0ejARdymLfMwA9IY9Qa7jpCQ9/BdVnnOJnj4CidAtUwHrZUScwlrpjCuiQQfRgzQfHTs3B/3JNDNjz3QgiEif/2GBy4qLqAaKPXq+hkqtBtUyLWMMHnDKquKN5sE27Y79Pow8/D8g+5TJmNhaOVLRnQkSzeUC+j/h+8rhHxOoRZFAh5d/BF15R5fN2CvtV9qYBTAY+8MzJ8MHNImVr4PtU+FHYUbjI5t1cDS65NCZXrKOcp3jvxEKsjl/njk/acMDnuKrBj4hqKbI38yzLtoIJTlfnIquQw4Arpbfs74oRUOQemCbgy0ike+dhQogB71NQ41NSzSUghpZKmrBBObmY+VBTWQ1N1Wop8YjK7trRLk3EEDmz25l0rD80E5p57nT0IkOiir6XvnWhfcPFf+dyYyE872lbz3eoRByrav35Tc6oTVeDvtamsy/LIp353pEoo+djadrznZBC36YlduiziDwUYoq5k6Ad071rTOltEB1w8dGOgnFoO4lr+K6jsSWt2QoCuGM/e8RVJi8JAjROxL0ds7iEU/j5M5BDwY8DbK0hrP4Q9/2Y7L5seGIbdVFgMTYSwsYt43+KYnwpD8Fsvk2wgkzB5NHFZwhPPCqoztEWmQcPngfuHDOMRQ4R36+YACgp7e/XYLdWCocGNScCsCjd8UPhhs0wQ3P7WJejdVQ4+WZY5PPNOv8/lWgs5Sgb/vYBX/XDZUq45mb+KwaH0kVCvYrhuepT3Pk7gaCwqZ41V846FIS68KOy3UDsS0ij27G6shOfeppJIAER08zjcXg22Aq9cG/OvSqFBLpmrK7cGif/0DJfk/SqBfJQ/1ZNbCvMCF3R4bvugN55vNZ4oUyF2V+cvFmQY77S+hh3mByHjJokf5FXNu94yHm1t5QKJBwYyzLR7xlbmMf27uBFGqR8jt8RrQtRvNo2UHopXtf5pIWx2gVnDvygyuDEaUp5SH7CPRfIy0l3dfJ9RX4C05exKB53RImxeTSwkb1i/38XTDgP9fiZPpMcCSe/Ny6Vs8iiR1/GvWaYXpIhl37jeh8KnM90F5KRHJp8YdN/Jvh/SXw794CAVw1n379M8GZr/zejfkPWuDeDlh3m+/E8H9Q21PURsGHfxd9Hmwkek7IQt/h9qT4fTb+SlPDRLqo0zc9N7XAirz3maXZt7Dv6hdkZPFRLTlZVFw0egDpAw+N2D3Dgf3r/nSZAUM+uZz7fTViDg4M6qnxatDgUCqMcW3PwRdX5BD84e7gWZmMG9NrwMpd8Rj8ZuA1F63TXKU0oH3BKv2vFkezG+/NlAUSEbGWjYa5H4G7PFx4h2WJAGvNlHmn3444n7uu3SXmwG8B72+mu16D4F8PG47jzB9ZDnH8HQgGTojMhyeDidAZdXrANanYSjv8Y66kJJmaP/0FvNvNhMk6Qo2/SQisr5kmnvwQBvcdL+vR3xeC2Ql9ZGzWUSkpVIlokenw87glRTWtgpY2b2v4UUYGQkdvR1grE+Fpq0M0hIfFaJruaoTi7Bo0k/r5ud9mbB65edetiIEzQ/+XJ00CES1hoLFLH+yIENDrrdXmcn/asu/qkcxSNE6xUBjrAiutkx6Lv0pB6HVlXBPDwyKpdVmXw/uAhZPDdWQmSzo74tuyksmoVrhStp7sXYoyqiZ9lRm5obxpvTDDhx6pUHRSaXVAuuEYvUy8R00fj2oGpQdhLyHvIysdQKhbI29SdmsAu59Cm+KkAtHRZs7paLnasH9pMR6cF41iKw/uSf09S2KmBAwZe+thm99Qb/mfasg3rNZtKwzBJkltj2J3UUFk2hsdb9OLfj9Fl1gaGHRLz72uQNvGGBHl7yYXpULTttVeX3ukNBrO9eeJ4nNQKKf37zyXySklKqO8DLw6Dm9KDW8A8Hi8/L0Ko4CuNXTJlVnFYr017m+m36hwaPDBZtue5KA91AWp/QfMqLpZMvsdqNDzs8Ld9ZtSSDNRZ0ytCGi5qVP2YFMzlG48kzig08dPF7lbaLUEpClIbk8l8mZdI1yhxMPakDUlbZxNpeAhHqLL31K6QJlnOK17O8IKkoEbj58hUWPh2XWKxzoYJ8uUtUumAipvwXbDz7FovnECmyjbyHEfNdMz6ZFgnVSUyjprB9S83hH2fhChyd3TpVq5+eCK0Gk7tZpHLprF7s8GtsJ1hfGNsZPkOEDH/231B1mLx8OkT9/ugRmR1qPsZbHQqDnerr/DAZ1PLyxv1WhB4ZyGIWJ21Pg6OH5b+MmOPSPdf+e/9jaIYqPunHKrBymMuZfZFqR0L9/Z57vz+kAWe5zuaaZScz/qTSAqw9HQh5O3L19dLiTr7M30g4D5r2ObSBEQur9JW52u0rgLzkCi8MWg4fXV5FlLT80NLXpb11OhbM6Hzk/JFdD+dr6p1/jWCQXqTO1yvTW2plsL1a2JHA+JBlz8DMBvTDUOKEe2Qy/Tvq9G66vhFRrx1FlfizKXPVoO4trh/j8ghPfZZ1BmYU9aWKChDSorGxTS82QVly9gyFWAS/ulhHK6ESUTRHtK7jSDQLqRTfupvrCrvOrhycxQWjA95F5SXY74BTkpoxPUsApnBY/PUhG1KNqF2V5aNCo9U57W3MspMoVtbzwj0SppTuddvylAncPR8tAJRUIg+vV9y5FIL2ePf7Gb4uh5dQUjam9YOoetp0lA4PWPSXTZHmLwVNQOXDjcx14fh0psghletAuHi9h0yLo4IjgVuSlgJEwZf4HkzOVjyQF5z1igFQ0f2OyRQksO4b/eiZDRDY7ELswBwNydW/7Rs0UQcJV1exTG2HIym+ZsWpDh/Rrtg8k+R1h50317cv7ItHHl1pV0kt0MC5geJkFB4JK4z31t1eI6L0oxz93BgnWy8JtzTRD4GXFQpDhyXA04Xj5dZt9M2hY3f5xVKEYNK9z8PP6B6KmZy9yfsvQ4GSPFWuMJgme6rJOacVHoo6779tjHrRAXrrroalJf9jl6/5Z5CsR3VEtXnuaQ4OvuIgn9E0qnHrxX2OqTyTCRQ53ZKzR4VJR+4MjzLlKEJG9fdqZiIKsPcZkQlvhU0Rb1pcTeNj8/NJ1qYmELiw36J482AOi6y4JoX758HluNHmgPgJ5Wp8ZvlkbCZqpi33tRlXg1lF9tsUoDHE23J8RMKWBKCsuSKiiGEQejqpMNJLQUfy9O20fqKD931MMWf4DrH291yUxi0V4HcucQUYp/DXf9YJf+R1QNCg26raBCHdAqPNYQhOsvHpE4RErhWghF39ufzw6olNyfJqrA/6FHlO+NkgFFWuXIhmmd3/dnxpjcLIZAnGhzeVJ/lDdfypzUYKI+imXzUuZnGZe7bB5/0sWFIptGBs/xaNRg5dGY3sZMPJW+IMWXwF4h56jVncQkcYfto3EvA6wQCzcYyIxEFH9JnrIgox+en7cumvRDn6bDP9+pRogrAatG5fjUKG++UnucwWgVpZytWerFL4aoi93TmDQCXh0Lt+3G9DF+PbESArIsZIVFVfwaMxV6cKxuHcw/YNrISvaERJ+lUq8DA5FChrnDxaoYOGI5NS2sVIELXvfn14XCURhg8+P3PvSCk+rwr9PPcwB/b/knNZIPLKpYQS5zBOAkX/NxFWQCil0+tWHL5nzs+B4JT8MQb8V9T5reh3Q9XEtAgdDUauJ+NwH2QamPypFX32fBmJBbRJnu8KRrI+VGVE4FUb+psh+Ol4JZPry+SS1IPQvVcFA7+or2K3Ovlptg+CJiPBqiVQEuv0gbNq4kA7h7pfvvpLOBJWLSZbY9kA0HqEiQcPRwa+Ss3G3pSeYn5f1lxMhoY81YjNfRklwQajlxaszFGjTY9hLoCCU8ktckvy2EaZfG7WeOhwAq94Wzjy8BFTz5eroHXorLDIjr9UpCcyxlwJMfpCQM5dSt+toOmSeFJqr1QoEGY6Ul0IagSjyC7K8xpULTfGWP2qzCyCaa7JP6A0GldjHZyT20MFpsPfDgkcClP4u2j/D9DXxg5XjTTktoHPw7tWZc/nAy2d+AwmQEPkN+VFjfTfousWxboggCA749NHvJxa9VTs7a6DLgLGX82IXzN+AqI78Tr8lLMo9O0012EYGNvlhSZvZKvB+w5C8bBGM1ljml7TetcBqcOvvNu5oSEyyFp7oIyC0GY+xr/CHF8rYriPHo+EJqUnfETCIjaMyx+otAzxzb5cpRSVB/h+zw9/lSYjHevuD2fMU0Ch5+XBYAg/vPh48efhNKNqIE/Nh6WuHhu2/LfdQKiGZ6hHk+oWM3OLcPBhVXdAoctIw+loVkF7f0Fpm9kjk9eeGt4yb4ca3idSS0EzIL3LZGuANQw1L3yqePu+GGVm+nfyLVKh77/y1WYuA2NjH6iU5WiCK3aPPti8PMuor7HE1GNR0hMu6ytqFeV+fyn6qUqC+SfxMDl8EihH2edF0jwwmgwKCDr4OoBS/yRLGG47SBf+15qc0AUyVHMhzpYCjtXnQwXN4JKOq+bbaj1lNCewlgzdeA9X46aj9PwIaO69QWxbWCjLcYgel76TCnJj/bbZuEtJNwLAduEiFEQVZ9WRfZ0hpOlLSpRiB5E9vshxizklGvUIuWbka9mTtIBxk3juGvm3OP4bpp79UYpwXSoFNUJsvYoaEPs2duUirq4e9Pl79RHIqxOotGh4txSHF8+beF2Q64Yq2n47rZCFIJ9vGaMRGIufFA2ZRDW0gK/Rc69RtCnjpPpEb8iMjBVY+J7aNLuiN8xIecUZg1Gq61/JZCPrk7O2Q8KMWXnDqDH2byYeDzlXxlCdBKMuDJfm9mSPIBKCgO6aJkNK1/LnwPA7tfcl1RkKvGI73/DHufUqGkdbihVAqBo1EftCfHqQA553Iap5jVdB0Uyzy81EsYrwMcosvaQSttEc5odLvQPK1133lTTxyOFk0vn2RBtxmA9tJouVg9PlB1nWmT4kFru7OGnkL2zYepJmrlYCzgYupkSMWGZuUpebUMD3O8VOeTHgR6BfG+lfeiUT2qqwc5S7N4LWxWhH2BIFvb73p+RdMnr8VZ3zDtROWnu75J9AXA9qLAhtX95LRtHxDz+F+GnCmWbaJNuRCQ9q20TpmvwhbXsqlcNLh1i/jIOvSGrhVu7a0vsLsTb8PxHp2Bmy1uLb96yyFHbcPWC2PRaDIO1Yqz9zaIFlYmIs/ORPOONkb+isyz3lwRNHcrAkOld0Xd+HOhufDpR6354IRv6l19FudBqCfZf9cvqcYzOQui5Qx9zFKUu2Ty0gT4DHx+j6Easi78M3Y9iMOfRO6xzcRRgIpk/wLSxtUoF2wFtW9Ho46x0xsrqR2w/LItYvrCWlg9aMrSigCh5wNaUc1DnaB/IGI/iu3k8HrzSSPgEkwCh3ufiMWQYNLfZNWDM5CwD2YSruCjURfY6jds5QSOEcarpJnpcD9NIbL7LlAdELuF6vYcwQbO7ZPf9MLh84zf1cSvoWg7ddvD5ho0OCnfMLuRj5HpkdkRkt5RCKWM3wtCZt0WNvKoJ0VRHB5JMmiZyYMRcvKbnMI6YCrElLEfIsUUNuF5k72klB/ksf6sioN7LaBC/qSCRLbes1My/1Qm4mditu9cmjdSdgWNlTC5A7+1ID5QOTXN3l+SZICrCZeahVrBTCT5uh1PC0CBXxbsfNNp0GTXz6x4146uEZqDisRyEhE71BB351u2Lc+t0PWBAvd3dfTzvpg0Qe5LuNxbDLcM8MlNBJfw9n0gHUROgbhTSredf17DxxJGs8lcZ5wltRwK0k2AO3G7Mir9U+AoUOFmnvSSyA/Vf7USZYQhNZeXD+2XgqZJZ8rueITwWKC/YkOk3NmVlqyrmVSYE5vL15Z0QsWMnCEzd4Q1L43eShbuQH8WbSfqt1+BxXDXz7rxmLRqLqyibFfOyweFPur+a4QpIbwr91PhaH5FN7LDYEM+Bsk1cp9EcGE+hfdx/x4lBOAzVr8yoDad7KnrgkUglpi2VCpPRHdLanf1lbeDYn0ekybdjHYTgzVt9P8UKkjb9o9fxq0lTkPaNvkQP974cRGGzKaC4vWnWjohFrZeqPinDTwSGgPzo6KRKrzZzjunaBBgUk2j2liFXzqxY3fbo1AHTvHeiafUwG3i1p8xjUVVtb23GbPDEV0lsdB928Vgn+m3or0hXyYPexq8u84BlmJcRF/S9Kgb0bZwhPS4Po0TvUzOxEdrx69Tc2uhu6vTZLxLElQEnhKTHAPBnVHDWhFGTWA7JXxP546NWC277fdt9kgFHXUQkGY3Aijg8Eyh05Uwwfj5lOT3RhkOBSkU9NQD6f/4ZffMb2py3qmTToHg+zKMD1PMxlwe/WKo70YBUTCy8Io20lMPox9/ce3E7a4/H2KuirgbcY5RYdkIlL+/O5hdjmdeV+ZTYI6FdAvdOUz+wgBXUijeWV4toJaYKiNFKkSfnhT2W/exaKADRk41NsGgg6BKtF7MgDr8+ss5rUfwuM2W6sU24E9ZNM0N4sINtgpButDAurdzf9LeqUGpqSunigOKwbzo/qLn89i0EH3iLd7a6pA0tdDcu9WEWjof3r2R/gtkro1tPydkQ9XMswirDKKIbup/0xYvC8KYnnSUvamE+73z/jG1pTCnErf6ZQ3kaj3sfkSH64Q9ItiYdSlBHgoFfKeIhjU+qg9JY23Fq7ufrPNRzUPuj26Do3mh6J+UDo0o9AAhxuNPDl2VoBc3sl7DQshSKSA5Fdk1AJONiqq8S+CYOhAW1TlAQIyrzn/Sim7GZIU9lZe+04FN95aS5IDAR2cqrZZT6CA5vHZtE21cij2FpfWEAxFHmqpZZ1PO2DykdU/snsmWHwZP3iqjYg6xF0tb/fVgej4g4frnkkgLjUicWQuDL22jz/eqNUBWp8CDkulOcLZ89/8oi5GImuXzNO3xHNBpHZGARNRAs/O7AqeDsCgj//wZ4nCGBB12Dby8SeChL12xnWFfqjIJvYix3oVvKtZGq0dooIm+3JTplkIqll9TCTHBEMoT1f9o+VySPkcylF6CIvOlO/XqWfy/X0v7tZtx4OBgPXo7GjyRa4dW6S+J1T4c/Vd3a5LVcDpycq5WI1FaYs/D8r2d0IOdr42WLAIZLp+5V9KikT4kEeZHsJ0OFHUFVDKGwU//bt6tsL8UNyH23clZ5oggWPBtms8C3KE3T5x/MKjj8stXwVpqdDXw6FaVkiFO6lZZxlfA1H/9lASpzIDjp4SSDz7Ng7en48tmS8kIiJftSRusAtYCrML5RbKQG+krGRfBxnVHUhyPRocB7HrvYyzLMkwdnLurNBqCMrMy1zUG84Ac76Q+/O7q8A629GBd9APvVxNJkxfaIPtj65bRG+rgcYnUdf4wwgo2Stkmk2PDnaiQcJ2fB/AgSv0CoZ5/h6RMj2Rks1gLhP+xmVfPvgXjbFSDCNQ8lQEd589Fbq0fvRnZ5CgycJtX04+s5dndDzH17rh5uzndH33avjrIYsdfxCGhiK5T4R51cJ1jp+Cw/gasHWlkRi1oWjSdL+hqD8djnHv4nEqqAPWpnFbygAZpWyvXPKVZ4CMUzWpsKIWBDRqPFKZ/FMQwnccK9QKottvZfr0lUIoZ1HkVB4euWb6el9zSIQSkTmJvK8f4OlvqWyP5mBEnAvt2a3fATqxPK8TH0ZDuHW5utdjEjroRU1R+tMFw6rHMqWYnPLB0CF6TyQZ9bpHm7Nb0qCqbcJL8DcFLNYm3mT0kJBpFJaoZNgICYL7ZQ9/L4TrbEYW59oiUI1K5GGdwQaQim2LOpfF7KOKMGHGbRzKE387P5dNh1cTaYNbpDLgVIPaZ+l4RP6ZdVOpjQKz/b7yCfUUGOScXN/1KQwpZX/D2d9vgj9R6kJnOpPhXQCPGSGXgHAP4zK5yhtADxNhc7SSChoMdmyzEg7960puC3bthnf3jlwok6wDiYtNrBtnCQhcC1v2rTVA1byTy4qrN7w3Ddkx0haOXorHqd60zoLjksV9yUzfbFN7tYd9E4Mu7kWXVxV7QKPXWp/rfhk8VugvTlzCIVx6h7LYhR6g7r1bK6hRBrj65Yff9+OQ1phU5K/KZvC0+qgyElkGM41ZNQQyEQU7L7bPH6LBF/cgUlxkNaxMOhIEo8joiGSYUs2hJohbL+Gr+5EPgVX3d318TkAypg4Zj/+RwN81d+MSTxkUVEhcftThh6z+JXy0OdcA274aNC+olsOt+e703h84NEhxK0hTbQbuNq6vGRxpQAghDhoyvXiAd+gRI7YT9Pmfe9dTMqC4P+bpse94xFtsvVs0pwNsXiugopwKiE9keAeUEpCi3J+JhPoOKD42E5uGqYUcuZzEIqsIFFLR++TWORoc8XFWYh0thp26Y5cT6ojo/rvRQ7/j68DYvqpThb0GUrPYk1u/BKMkdcuNFp5EaNBINRfbToUdRg53bT8Fo+d3rGqf0qmw2fTI9NQ0cz/Ex1fcv2PRIaFduKrMTlj8IWsht5gKT2pDjV/4kdBUP+5d52YapG/esE61ywT+ea95hYxAZKrSwasY2w3iu1Pv2MQRwFpglpX9Bx4ddD5+lRclgEpmds2B5XcgFCJvPsIZgkJkDxYanugGr+LV9G87KPAoRfPn678ERIzZ/+/6Fh26Xi/I8AokQb9W87EbomR0RZnXuLa+GUJ9ApXHmP1o99WM49czIvLPIjyJn6LBrJBxBdtPP/jl8Lk4x4mM8vqrZsm/GuD3ASFnv5Io0KQNOTc54lHLIct7mCYEYUaVt2/PVAL1E43z9Lgf6rS+a9V3vwgE4s/w5UyGw1aD2v3fQRikc8w1pd2KBtONCZotudVAEw669WqGiNqo4/I5D1pgyWH4aumZEpgMkSc5YbDo6WATbTamBbT3Pd+59y8VfLSeZdoeJSGDwovOjt7d0DxnQ+jnKoe49xPynxUJiGGVVokRq4KPFpM37I8R4cQ2WZWjvcHo6ljt08Hz7eDpdm4lMzQR7rlb/9IeCUWErnNcevwtEPjXTTm4IBbcVsb3vL0ehpxttK8+/tsBdXG+/bvUi0DzaKW1/RoB3Xi8w2FAuw2Ung0V/SdTDCa5kbSf/GS0W4FWKPM+EKobmrSuLSWDmELA0SeF/ujlfNLbphQyLJ19kJJ9JB2sdvEpPKL5oqy1bxpXnjUB9fqgqW1iAXQpBrqrVzDnhJ2B7SVTYd+34oZv+DKQOL+wtK+T2VNe+eZHPtOAXoFnTeP/AM9b2/nyLcNRuJ/OQ3ueDvAOyAtWr6uFsMo7aRcPkNG7BcKRDwbtcF+6X2ZHBYJrfCPyGmwEdMlO64LLFTpsLbzIfXaWAhhIak6XjkT9uxxvEGNIMC+krf37cTKwcOxwvirFPLfAXy55AVlADX981PFKDVjwbdvuPYpBwqJHBS6eo4NBg2Xi4NUcEAl4rH/iGgFVtAXU+99ngOqd3am/6ihg/iMHKrSJKPeqjjJ7eQc8jrnFk65LgXJPw6Cp62RUmZat6b1GB0Hehweed1OgqcGvwo+N+XvM5sRpLgbICTLC2ctr4N1ex9bDg6Ho0/ud9+Qj2uGXi+9SGYoFbO10hjMPAZlkvep24m2Bbsrb0qp/NXD4u6E6VQSLFnXPDHz9ngQC/3lJD4dWwdvCQG5lnmDUNLK6P3uzGS4ZJ7XXTpTDJe+bqYO1BFS5qxN7jxgD4cflk1Kdy4Adv3XjQl0oGhn7Y2MvxAB/+rMJyQeV4L882LxnhYS4C5SeFSU3geKbiKD+mUxIvZhTwXIAiw5o5F0yxlDghZtAZ/xYOuSMrA0YMj3RmCZkE3K4CXp6NuV2RgVBt94rzR333iLHz3rBKsdpgJtO4nSSqYUdjtd3vd2DReut1c91j0QCi87g9vYX0bCjPAlfXxKGSPYZzi0sLXBaX49f14gA9vMtPrt7iai2p7jv/985R700D3IQSAWd839WJWmhSNfure74mQp4YdRtKWKfBN0PXiYIpQYhXUHV4UqTDlC5bDxi+w9Bm2dw4rYrkegqt6v5XGUrXEI2RP+mSrheJWjIOkJCD+qT+VcpdPiyd86vZbgEvM/3876MICEzS3UMd3AjrPe9WfUVdoGeM6Z24Z9wSOPyzEqqajeoBJ+1t7lHhfNFai9WlILQMygQxjPnpLYviCE+QYWKcpKLvBMRfSPWKRx90QFHbryaFpzIAWndvoxEAxJSGOA/YLtMZfLzYM/XsUKQ7m34ZuEfgfzeChxMwxChP/Yi7V8NFdIuvo+YUw1Bn25hzLsfdcBYEiO1drQS1DyXDGcSSYhz+zx3yuVOAN2H+9IUKHBZzllu0y0SnW8rnMiRqweNr6Kz3vWZ8P3yRY3VGzik+3WcxuqVDU9xkRXlDnmQ2LEmKpCLQcUbUeOFynRImbxwaTCmHD6O0H92dROR49PquNa6QhDo16CLjRfCpLqOzDs7DKrJxoqKLHaC98nMuyfvFsN6ye2w360k5FicrW/R0gBtRL/AlZgEoLz6oRHmhEfNUCA+yOz3xVv5Klrs8cBb+vuj12Mssp3tO/tAqQNSih4tyfFUwU6vMzJSqkRUEvllSvFuJrTfEb7+WpkMtBS2bWrygajhvw/Wh7Z1QibrMO0O4zW4/KAQtSRIyEJ8ir+SrxteNf7ME25/CZjh76fymHtkSLXztimmg0XElXe/sXVw7ftsQLEpERW0tQtacOFh4tRW959hCgSd3NQr4QpFAXp9zve/M3mMP/JlWW8FfOg9+ifg/++B6NVPdA+3wZClsItCOjOv1GuafT3ISCJoQHYgpwFqElxcJW/kgJd26lW5u3hUMxHed3i+CfT5rO3IY2/gyM59VY1MnoQBKzmPnma46v9mSlrNA9Tch8OrTuJQzmpQ/1snKvTbhX9+EV8NegHh6l7iAYj1R7vLzXYG5Dfff22vVQZuwes8rmVYtPMCx4JASiU8FhQ6aLErGZzLOEqUA4KRzYOiwvS9zDmPXk4Se5MBtL3duWP6eJR0XW+tarQNpEYkZ9UT34Eu7lH3bA4Bfcm3epWjmQMtLLz/CQulQF25lyj1PQbN3dvKmlmuBJG4DOXkZ5ngsjDOFlwRjCKiDRRWY7qgbaeR8F/eSLCuUhOe0yei3WjzxAGgA8+Z4fVedgpQjR7RLB6QUW6Q/6SuVye8NE9puHWECvMX/9sXExeJXrxJUrYv7gaHqLOKjUJUKG+r2TV72h8pT5vYJbVWwJ/TuIml/goYztQMlKjzQ9bKH2UtZjrB6P27hSAzZwhvqdBQNCMjYsjrU8JKPcA+FJ37wKAKtC9OPXg+j0M77hY+NC9sh6fUa2fq7OLhykFbO68xMhLM1Vsat6uE25UGkrXFrjC69eZN6qtgtHuWVmNrUwWLVo7P7lcGwTBX6Y82gRD0njIdv6mJwBk/Au0JqTAkurH14E04GuJUyzjhVw+9PMm3j3Xh4cbbbkKYFw4VcinwGvm0QQW3KM+feArYXgi6HWhIQmJ/S04a+lJh2zwlMSEAB2NeXv3pQhFIRfbH6faUQkg8Ya4aY0iC5yHvy4xuYpCihJuHyOVGSKz+u2hTkws36rV8/i1j0Zp+T9B/Eq4wHWyY/x+9GHhBmPY1IhxFiW370/6iCUw/PLZbPfUOphMtGxt2YVFOSNLXYFEGDAm+ViYoIUiR2N6UyEZGmoGvX7KepUODwQmvfgcEy5o/8selSajK+pmpIV89fF2Or77olQAry6J8vl9CUZiw35mWM63wz8t31tKjEDrcjttWtoegz1ILavsudcM+tiwXO0SFkH/lO1PY8AgrafjXdasZpvkNOeU/p4NkZ63Sj3ACSj0mmuo9QIDzlY84j8sVgPCoxikzcjgaptXKyPP2gFeZqm9dTSlk+jMWU49HoM5yi3jWYz3Q+PWV9os/ZbD+2GvbCdcw5BCv7Kmr3gXfBJZ+T5Ny4JLip5KtcgLKPM13ofZ+JIgPpa+rfK2GhrdCzjsjw1D0LuXhwesZcLc4p++LSypUr7zzc34RiE4e89vPtr0R8r5dr3MgVILH9q3QhdUIxMr9/jV5qhW2z5tU1MTUgaKylrfIFAk9L7jcK93VAFtNSy9Hf5eAbe/lolRpHOIpL3m/25MG+3RmNUuPvAfbL/Z3WJkeF7VZfYDftwt8JjmzAklxwCuQ6eQvh0fFEbubBlEDvDLRviE8UQ1b3ZoBh+XD0NXTLg54Hwa4L++XOGJXAmoumrG3jpHQpYrGyQU3Org98Lp5yogKGAmWBpWicHTKI3vvb8keaNu9vx57gArVErcbjwEOHVDK2aebSQLTScWnypOFsG93qOs11nA0/ndn/g6DFPim+e3P93IHYAkR0PtYF4QmOpeWjop2wmQkvTJTKhXCNk/wBr9i5ttq9McfTgiyzf5eahdIgM3K3E/yaeEoaXDqfmAGHS7M/3f/4SoC/yyLu/xSoWivLXyRd+6C7/2vMine7tCcuDa6sElAgf0VUVoVcWBSfjxpB1sxXKA8XvR5HYJsbp5+mrpAh/z6N52SLP7wPaFfIkGbjDB6iyO19vWAz6bXKHvkwPUklvl2Jxx6TAzzC+OhwQ3+wVglH2aOBS0GNZeTUTPXk126tp1Aua4/eL29AuTGiuz+3ApDU4cerVOu9kD4++Zo9oPvAJurEuSzikOafiWKxa50kD7WN8bzJgtUj+WF2P8koZsOrxnCg0xf7pplF54ugJctjmVHtvBI3LTkFFtUEpRWBeIP6FXAIWHbme3ngpFSw3+J2j+6wOnz1fYpZh47qz2yeRwdieqfvE6wHekAz9hBry42DOwTGA8WjmXyFWEaZ41vgXcChaabz7wBO2LOmnsCi/brnSthX2uGo5fJnGtf8HBaqvboGX4cmjixO1J4igKL9Jt7zkcgYHvoyZNsgUURF5ZyWN50w/nP5Bw7XC2cv/xHdaIeh+gNLK52Rnlw7keM2tDxLLii227y6RgGRaRYpNa6dMDMsu9AJCYRPPpPJvn/IKEcyXC1+Nst0Ndl2HQtJgc8xSt2hkTj0ZHXNf9lD8WDGj4uKLEUB8eebKoKpAeivEc+l8cnmTzvhqEMu9XBao1d2AX+CNTbGf6q9FQPHJtWkJo3DQFmAIrZDmJRaQi2ZZArB+SX6IfEezPAfunOuQV+P6SJOdsfKdIDclt/dzc8zoahDtKWvBge9f9rVYm71whTekkDadwhMDqQZW20F4tOqyvnBvaT4PQphz0St2oAn2I3avvPF3WK18/jcA3geMr09+JyCjy7qXIWL49HeJyQSrJ0G3BWXvR7/vkDfKxvcT31kIh4uLXFj2JpYOgfpSA1QgWevaSMe2Yk9OPVULkeSyfMen85+fRyObwcCfVJYvq+3aV/BuHM/aodb6jK4qWAqobF/Tg+HMLG//IzyeqC68l+Bod8veFKvV6GsyQeNXxlSBG+dAPf6sbkeEENZC+c2+XB5B/JYLr42M4k4Ja1Of/OGcFc/4t0pbhglCX9ODfVMQf+lNXqczwoA+/P8aniGRh086j58zihLBBl3FnYl1oFS9VIz4QtED2263JJ16VBuK5sTcu1OriTGVA1vUZGGcYHMLjwJvgyfG9ShzMGxJ66BjtH4pDExLaICK0e0Kdk2DyfDYDn385yTKzgUMmSec4oc08PC0n2xpzPgCYz45iM7EhU0H5FnmDVDVe0uyYXhJj5QyxKIN0goMUTg0Ur22hw2M+yKZxYB8dl2JqEWcnIIOMAbm26Beaw2w0fPs0HFeG97PpmeIS7F+XSNNsF+TZP2LbtcAJLs6xr+6vI6LimuILRqW7oLPb48zwRA7+293TIdRAQYu0pS3aPh+vcs5mWlxC8LY97tfglBIU5b13gf0eHQA7L5Gq+OMivlms5EolH6hmPsafC2yF+n23572kqXOO+s2BNI6GXDLL/LVEsJG8jxSY3l8Ob/4ZOZ+aHIGU/9nMBr+kQsOTAq9qUD1d6z/wuXSAiN9vvdDK9A2qTfRTQuQRQdFneQ79JREeK1kY7/ekgVTpZldVeBPSLOVHoNwl9/WXjopBSDjLkkQwkXQOh8emvhn2DkNLPmD07+HqAFl/jgF4UwTP+0xht1XBU9U3HEdabobXiUUlGQxnEEXaVpffi0JPLbvVTQbUQ+d/tlI/DVBh+kZZJPBmGsgxPBnpV0mH07sNE1VUnEBbPU/vXy/SFvQlLnzdbwMJOwvrVUgHEcf/037WdiNYMt26saTXB/wBTrzy3eJwNl3cgFV4Ux42IlBUyMpKRnbRkdDIqkiSrRBQKhUpLyM/e3n4oe++9133P3rtBVkaFqGQWfu/f+9e995zz+X5O7Kxij2A6BRI2m8+dccWjOp19D0UtO0A+uTrguUAqZIpfe+x+mYRMDjy0934zAHNjQmJ9OW/BSKh0dP0UHlEFO34FewyA+tyNL/8iS6BSLW+wYCwKaag8txaLaIHghk0/vc0c8NgpvX7ECYuWGB1MSOpdQF/P3CNL3wj/RpAm92kyGuq0ID8u6YflyOx3UpGB0HCZKck7F496/7vkch11wFXLPccJrRTQ1i578U7XH33Q2LDiGO8DCXybzPngEjDbNe6aCyKhtO9ALlrugOR45y6WyDiwF5QXOxVHQgkGZvJ32avB5na6Ss3ncHhozYQnq/ghd6u8s39226Ez++D3hcpk0F2f4xuZIKA9Kv3LWsf6QTO7pv1rVD7s8MQzvJclIK6paJH2rVaQFO4UfaxeCNE/FLX3xPshBelpBy6TPtC3vbm0plAANlLMFgxrRFRYeTmlYqcPrvSWF6kZJEPkjnqxFgaHHPxcJId2sECfFBuf5E8FO5mDxw1/BaNQgeQrj818wcRKz/e/ICp0v8ES3d8GI+dv2EcJ4V0Qjmxtf96ohL8moy5aUkTkPlM/FLDbC06GB7WszmSDgbM5l9JTMiKLTqm8KB2Am7jStYXZLLihHMJWOeKHepRjQp8t9EFTuYLYoVUqfHZaLh98SERHfXR+Mj7tBlH72Rtpqv4wyrtl8ziEjNjNi85fTRmA7f5YbMnFV/Aig7tvqQmD3C/OtgnodsJJEW4P2KyBtewJkt4CEYUtpDSZ/dcMe7g/x1ZFpYGKl8I8n1EwEtqxWY0+Owj6ERitMasSUOk0edGwiUWvv4g91xxG8M+d+sitkAIumWW1Jp7hKNlM8kFkaic0Xd6XQDxdCsIgmFWcgkN2yv6HNxpDYMh4aXJ5OQ2cxkZPptBFIL5TCTfLNAZhzo7pBosSAa76K1oVbmDRcF+1ktmlPnhlaC542tQfXK5cylu7QkYePEqauKQBkJ3a/wqXHAyrQ1G/jcZxKECmtXbPvWZ44Xrjl6xSErgRHeXDh3HoVUYVlX6wE5odH/3OfpIMo4O1PvqJBFT5U8olLrIZDPEGr6qO1IMu5v2tISE8eiGwPuTV3Q9f5FXOzwrmg7SM6SU5IhbFhJEmJmu6QNI3nYvbogw6lqeM5PQIyC98yhl7sB30vHzmjHVo/zDCuT8tjoBq9OflZh4+B98/HGwtXQhsYj+e2MuJRd7zfAw7fwbgi73HqSsiSYANG7/f5o5DrRL7lraUEMxfD63K9i+EeUuGjhnTSPRAF3l+0mgHCaaxG6K/imBns3e7P4aILPk5HBNiokB2cPNQ+d5CaL5o8yo+NRw54+0kkjtz4TthTPnjGhUqGm+PnksKQsd4wksaFNtB65CSxY3hBsD8TBUXJhBQ03MbBQ2DFCjz1m50v4kDyb++mvWMoYhTcN2ZMtsHC0/8zIXEELTpOFOcbDCIL9/zcYxKP5h2lw/cHE8By47bEZokDPKmb3RImOgDhd/xHxQFqkB1kxrfXItBh/5qHUTkt/D6uZ3HhW4sCPgIO8W8C0d5cjY/S792gLTX6qpAcyFMJNwiJdPmPVur+clGZCF8erc8OytHhscb251uukFIAcb2Y1QHQXVR5bLsAhVSEoQVZ0Wx6KCl+2DhDILIkgj7kD1UYLZXswwyj0ITFzdy9rcOwLDXaZd9y1Qwtl9/oJWJQyfvXz0kMjEA61GJ3g9/UiEWU/eabRqLKvEu8+VBA6A/p56qMk4F8mLka2IRFhlxZXTNXWqCMuO96/0mBAiko/8qL4JDOBvKvngRChxSVFCLIj8DFU/Web+UCLQwezxDLZIIswNWleL4AigvHIq33xuJCEviZI7HnaAQNxc1JV8EyWo3cmbxQeiCfJBaeUsPSLbXyb99RoEL8mc5kpzxaHU+WLL6fCMk1ilcnFYtBIMRwRP77LDIR0jBdzR1AHj1NivGV4tgqD1Nxb8Ri3TnLB4FLLVBUYW6fOjhXIgSEjqw5BmJboqa7mN//hSOyH3H0tHqdXcvnclFFiyambCZV+jqBUu19iPcWbXwwO6iIoM/CT3EHzK3XuqGblbCnmJ2KrSsNF5bCwtE7qGBZ/c1p8PFw08+806UQGJe5TOmsWDkMBAwL3okA2KYniqmeheBmuDHC8+owaiyVfKloXYXnP3NoTa6QYGxd2kNgg5EFPP9/rLmcjXItDxZtPlUBUKCL7qob0LRRt6Gb5dQJxw9o21u+ZoKtlYHzqiyY5FA5HShBkMJeFNjB+7vT4cJE6F+QaMgdLbKhVnnRRMEBa+cGD5O68+HGvRGD7GoR9GCwsjcChQWixs4nUJIe8d300OCgJI3J696HugC7/lVA3rafSk+PHIxZ8no8ajDu/pPsfBqstrt2lwdHJZ9EHy3MxxFiRQXO1q2gcWxNo9Wp3SoDTW+l98UiX5w8vY3sZVDu5He3tIIAtiKFXxo1w5GH3cqTT+xtcHwXuOhkkQEZJJ1SHGKH+LZad0rF9sMXQrXylsYisE4nLL94gMO/XxqQ2fp0QNudOfapGcqwFuFHxXohaFKswhLibwuiGIIvuQYWAjtpc5v2h39kKHB7LDG3RZYKeg3WbTIAw6ZJjnFbBwy/+T309qWCtWUkz+Hb+WAJhNxI4nghzrDbVbfSA7A3eGTVauNFbA82u/tJBSCHiWxcRGpbbDLcZKs+bAeHrp9M5QAIsIzzYbemRqA/Vqre/9G1INo/b4N5pRgJCjm9OLElyao5xM3329RCjeODkouvqDxfFGVNQm6IUmqkrLiFwl3zhmLaxkQENt79+P88y0AcVIEnaRMaJHOdze5jUN0vHuv7iH0gber3cVF2nz/a3F3Z76ARxxoO+Lk9T5Q97XLuThVCqY3crh1JclIUrmpLN8yECJT+ZoUzShwayyIQ8sBg1zSHbefdbSC6+uv/ob36kG8vgTmP4ahW48+n70g3QoyFQFlMSepcKmF41yVGAFNa18Nb6X10+bEkN6DvQgEUu3uSnRjkB4dNy9ffju4KpfOPUgrgSHCFR9eDhxyyvb8Lm7aDQ/4Vp6COwWISkzrdcIE1LJRfrnftgtqylbOrd+l8Qm3ZV5gh0NW7PN9Am5xEBt3JX7AuwxCbGWQNmc4+vttUTmbxsPXOxIOy5w1wLh32FfcnIS+GL/Fv7Tqh7Bzh/sI3DlwepJuqaM0DPGcVS85HtkH3FDN4iaSCCGOxGvtsyRkKxf8YS8tT+Xjr78hRTbA+ZycwCo7Air6fb53i7MJUM93cavxItCavajY0IpFjxwXrGukO4FbiFjD4kmF9wvsnNgrUehl/XadUF0fGLSVPJm7XQGjjP4XGNfxKCjddUDDoxE0Jk87BvNmQzh+Qe2ZBs0TfPaZfy2hwM8I35+YP1SQbwiOMJHAIIL+qxM8pkGAMxCTZHqUCnxaqjS6Y9Cij6CzoVk/vEQbJFd/Aujst2O7P45H/FOlbkLaSeBYefoAVsQXekUCLY/tCUMqnEr6BqG1QP3GzrJiVAo3U48Q7qeHoR76neNvVLrhmGyspPzlNFDyCawrfR2OVr8a0Y1HFMJlxeQM7vVieBmj9pnVIgi98ppI8+KleW9G4k2TESocYCzYbP5MQCzp4W1vvTugheL1AoOo8JDlUd3eLTxyvPO6zpVEAc+U5vnhbgTri0uavIQQ5PHP5+tJzgEY/EtHXGmrgAfpd+n2MxMQxwuHrZnRXnAgMdyLyMoCrByOgWhLy99Qfa99N3vgylkhmOwtgvgLAUL3C8jI1SeZLzO/Fyx2pS29FSiwy36YQdKLjOorlErHi2j9GWMeHI+lwPdz9Gx7tPDo2d+uc2KnkkD+bHpy/9sCOJBM7RKdDkBhd025Tiv2wdK/rAf/DArBjHQ/V8/ZD0XlH/tVtDUAef4DW56hiRAUmDAV7RaOZN/EDXjTPBwrKnwNvhaBpGgNWzQtf/l/8J+r6O+HMx3KB7kqKkGmHtO0PYdD1vS37G5I98GXOb2HKyGF0Jl4eNv6PhE5XfnIbUNqg0sKN/zVdWvgVitH7FGfSJR7uv75RR8El14Ii6+/q4C/bb7tZpdpXBLdXRudHICnU5krR10DIPkSi8M15gD0iv3DTCTNN6Q/eYv+liiH+YXN2P4oAhoQHht+6oOB98fkI3gt8oE1hrGGcCIKGf/NFd2v3w3S6re+G/+rAe53iOgeSEa7WV4kS1qfe75mFaVEZkNHBd8Mb1QwwoidyLoi2gKYoxcGrFYRcN/P3JHzwqPPq6fK3hu0QOjuy16Z9Dqoa7vSL2Ueibo8eRia/9J8pvLzm0NKxSBg2haxaUxC+dKJl7SjeyDTs807+nIxlDx8x9jxBo+clh/8Cg3sgb6ku6VCJ2qBW0eaaEgiI+eC+bTfdD1AOP8Wx03KBpJIoSg/LTdtm/7Qt/3rBrly1h865STooJa382aT0Xfp4xj22n6wdSj/b9CyAUTOP6qw7SSgsHM2voUP2oDIdDFqYY0C8q+OYuJ5iYhMrfkRsq8MPuzxDyMdzYfyJNywfZgfYuTn1g+06wTVpPmsUokcmL8gJlR3FosCXNLWWLqTgYqv2fa6ng3vGJzt2flD0YFfm+mhMX1wSPfQ+27AwPUHbw/uK8SjDw+KGXi+UCCi/Ijd1NlioNfKaLp4PghhM9EL05B+YEYJl9s98WAucmzynyIRdX++fk+J1lcZmXJC7LkxIHEt50r5fjzCfFzX2IzoBw9/3YvKmQj26MnRfaHlyILHGScpGueVZ9x6/hbUQTXO7Z4fLS/khXPD1dy7oFQj4KMBzdN4PA8kdl4kIc/oa6kWzDVQvPUs5UcIFQ4ZGwmeGA1Ej/nMJcytX4Mwy2jwgb56qH7zY+KQbCSqZRZliHneBPTEvpFrkAZ1ihRvOb4ApCb7PtzKvwX6Bg13naTzgBzXH12E8EjVNVVzQIDmVzOepOSdLHCvOdiI6SWg4+Ulc+evdMM+VTcDpfQy4LEZaj4phUEVhyYvxbq1Q7zw/Ln5nFr4IKQcKtFARJRoUaIL7b0/SigGtpNVEDhn+ZZVjYh4Tp0LPcueBFx2SaRDWgWgW3l1KjQ1GMXU1jDtwzdCQHa40AF5Kox5sK1ExWORTcPJLx/FBsHiX9sWJaUMVDWe7i4NYpD/fnoezrpWSK0+8nudpxRydfrnHfMISJwlx9ufqQ2MdvVS6ZXKIPCY+R3DGgJSdCMWvNkphTfHhE8011eAqtj+kpClIPRDnEdXVr8fOFxu8fa/qQGhxN8VIkcIqGz3tcORp33wkIkTGydWCi7MxprP6sLR+/f61kp10eBtMm6lPVwJWXveprWYRyCF4qNjwvcbabyuO/hvmgq5o5n3PwZi0YTvhRUztVb4VdKymhpSC2D3x+ixCB4x6/yZYurugLgvUUpbz0pBjeVnV3woEb2XX5vXKPwPRDtzWThqMwFble+Ky6LluEynVf3RGhAPtVq9W5AE138UflGvCUZp2zvvTv5rgRTJt1wTVhTIyqK9KzYCTXR0jw2tt0BQ7vN8Vwkq8O6WZtATQxHCJb/nWu8F9Q+bqS2+BOi+YBAzZxKO/uBjQgr39sNZvuzj9Z9zQWniU/KpbgLSFKq1VTHpBJOK+qPPo8rg4IngNVwuEdnMSn13Mk2CxLfJWImdMrjF3hNiERuIdtTaikfY2oEipZawo1IHEyk7HqyvCUik5NuH+9ONcH3LSehlaw1opZ0r5nmGQayb0oK4pDiobu7i8v2YBm56sxbhlWGIVR3X4OjWD9nNGSkqtDrK7KE7Oejuh+5cFfxmZ5YKudRPL4K9qRAe/1/BWHEgeiWnbZDWWANnduoTfuoWQrw0J2v5iTAUNPdDkjO1C7yupYOHSy68CT7AF0njz9+G2KA5jT5QuT8dNtCZAjvbZTvvVUjI52fQ09TjnTDw4FnaXXMSGBy1DqBvJ6GcM5sbv/T64foX+W/N1fngt2nwpKINh3L8P34QhEq4LtQ05E/b3yvyOxnwF0NQlOICzsG/F+ZxSmEkgzhYufJjxGiMiC7wMNYd/94P3pzead1lePB8UEtH70JA9jb9w1vyXaDe7klWx6VA7AL5H5MIGb2POTzNy90IzgYzmUH30iHGdyAlZycKMZn3ZYtw9MEL997DJ7oxsFnzd3/7CywaoacvXzHthN6Hoi2GulFQc32TC9dNQutpM8tWkxRIFCF39L4NBP3x9vM63wOQyZ0aVmaHHhhNi0wXGi6Awr67/ssHcSg5ns1WKXgAVCVafkT/LQQuxk/UeVMMshA/GGDR3gLMp0J5X8jVQnTypHFJKAaxN1glmF2JA3IFuhVbQoW7oxkBicIhqPrstsvz5g4IFfvzbfELBv49+eJrqEhADB2fuqJn2iAwKJpOq4gKIyc3ViYF8Ehq49+2+qUB2D4lXsneTIJFM9bVy/VY9IQo0iHwqQlqBzMq6GQawPOoMI5lJgopuJcWrL5sAG1jxq5W8wbYMdLdSSRHoK7aA7KlUlXg5sFCrPlBAUmCXJ5OXwj65UV388P1NmjpHadOW1WAm/LQW//fNA8fuVfxSW0AltVL8LPDxRBFb1pSVY5HFsZRXKF32sBMLtNaxSQdlOVHXlSKEpBx3saa/1weJArqGWA+10LBcrLKAY8glMvy+rnIYA/4dha9u2FXB+Xzacv5XXj07rwuo8vpPDC7N1JYqJ4J41xU2yTvIGSbF8i3stQD+22f3Wqi7emJVuX+xEwS2gnbPSznUASp44TSXr0UiF8u/1V6IwgVF0qpH1uIg0vjsWkBmyQQvPi5iflnGHIaE1Hsj64HtgNeFX+Fc2CSeNUwIywUhZ/UVpb1aoYjmitr28JP4Oov9amlHRwSnFy5zR/YC7+lTUQVNwsg/ets+zFxHHI5A40tV1vhzn7JkQ+qcaBm4p5onYBFO+019GLR6eDfN7+PGJQLi0a8CRNHQpAC/reEC/cAJKXxt96l1sEivaH+AyECOjONzx4oyQHGEfxyy2AE8EsnB4jUBCEZjQGRHyMUODc9HN1bkQdjjhOxFU8xSNN+91DN6WaY1eCcdXetgARrFQ2xveHotvGrY1TWMhgzHs4xzX8L1ukbwcfpA9BGCup1E2yCZJmyZpnZMvCVxN7mZsKhR70aqhURzVBVfPtD6UwDLXc23KhRWLT8y2iv3lQLoNGyboN9hSA7senwYQyH8sMi9EP/1MHQrdNHi4OjQJ8v1v4rfSiK+a248HKCCkeF7IJqecuAn7qLecyNRYwxxJ2FI/1gGa8lrBpQD9eWrZv5JYnolYjtBra1CvLHDreXXC4BhtcPNpfPBKGv3QLfZwSrwUJTM5j/UREUGtew3ZIPRR+/fZELnesD/xb7OY/5Bsh7M/Ex9ggRFVkVuXDmu8Pvz3Kyg78Cod/PiP/1BgaltV48rOmbCc07raen7RvAl/ksZylTAJJac0/fPk3jYFHN0ybJKvhQ68Zyk4xBIxnrtrcu9UOa+lsdYj8BhFrfasrVYVFU3kZF1aFuSL4iLnXKPBNk3pWO0pWSkL2bFbphXQoa7/kuK39PBgz7AwHUEYQ07nraOy6/hK9SZW6+MrXQLLAWoZwYiU5FfGZWv5QOEzEHY4R7I+E0iflMFHsI0p+Lslw50gfvd1/JtO26Qs/gwmf752SkXx/VUNrRCOOYA+spArGQ/EuHk6MFi+BD8Ccx2v7C8E9CZHg1HyaMnX/8DSCjXjJn53DIANDn7rP/5BUIg8v77XLocKiV/ceEuG0fDEjbfikMzgCh4uyVEy8J6FBA+dKjwVawVPc7mSpRBDOtAw78OVj0WWuT3YTQBfEiaMmsuBLeHCiKYtElo4dunY1Mie3wspBJ2l42EXQw7wrWaJ75a1uPKGTcDwzZDFKanykQqdm86uOLQ0EOjJYeCoMQxyA8YclYBY4VBup3x7FoT9JlrpsSfXADGo92i1fDXz7/qCFnPDJxN4zYc7AFHsx02eYuV8KZAopC92Pa/m6C73VUbIPMMvd/I6+SQf3TUuwVJzwaL02Kes/TCry3IHv5dyLsNT1+hZGNgIKWnmfE0fafQquscYe1AhjpvVWZRPMusljtjOKpQXijYP+VN6ceLBqmJXWPYZHi19gCTdNGyNj4utV3rw76q4UNftZEoSBuxeAzDt3wKt2RVVUcwZUVNbZ6LhxK+njfYOVcGxxQLXucyJ0J+DDOZF1xLGrVy8HNDnZC7beS0THvfDhU2dzKvD8U7Q3QayRhq2HXJfmHeFUDRH+eI1qkhqLbnr2nDI6mgq9CLv8tDwTO9Au+5E8haO42/45nqBeIZcj+WHSoB0se+SbWxjCkGB3krqXWAiHbDpc88KWw+b2T5wYOj3ipGwwnfufCEZtwoV3aHL3FjjdqxwYhRQ1G95vX++HZ9T8XX8zVw69Ur1tLlYHodVWGEqLNo+rihk89CQsC/Ve7p9lJ6NC7UELqSDuoEI2FUpaiIC33w2iFOhF90e6Krv7VA3Rsg3cyVJPhAPPPV+c8iOjO9xKFf3m10MRk1drtWg5bv1Fvf30YmsnNazSkeYIt41RTTUoUXOA+HiOoSEZ92e4S68p98OQsiwKrTTXIHxe/OWxMRgo3ngUnnGqEu5Vlepc2amHzNWcC20Mssm810WakcW+cj8j7mq8MWF/el5YywiBj5+5YqOoFJ2R/XFMEA2tiWbICiSQk//VTbftWEvgEvLR+GVEBH/BS7XMhoWjX9bbms4R+wD/qV5p6SQVP9Pu9dmA4cleYpXLMdsBdU7nU83fyoIQUuO/vXjw6V8yqt1++HSb7AyxDCuOBcu/A9Vz+IBStyMpDnKQC/ZB/RqkIFToxHy6MsWPR9NDUKUX/RtCz5w2cHqyG/7YnZG89xyJqI9OkmFkeyOZaDzd4R8OxjOqU8qwgxFYlp7dV1wNlcd8H8t81wE9dP4UQISIKvyb3s/tOI2yJ56g+Hq4HsogLI8kXi7wzTosYcHTCPSvnqljDElD05Rx5mULLO2l5bl8dP3i9ofDCsOgZfOz4kNEXGoH2bmUIttPqHmhnznNI0APGTMIkfSwIaHNoTV8lvxPSD5+K88aVwMwF2x+MVgRUl55BVBntB6n3rbo/PWuBCWMWXkWHRdiJpvST3BSYMR90GCmvhVHFPfGi0mFIoqLCr2KhDxTGOL9VyiAQCmkjj3ngEdW1Nu+JTxksNzxSDlqjgr4dI4fx5WA0GdfGPvE+CxxNZd2FIQH0uicY5y18EfPHpMLrTl1Q+Cm9L6YzFx5FyAyln8UjN07ZSi1qO+QnJ1RRWLNguprzMtcAETEocKWfmXYFhzvsBCFSMXBOj6xKG2FRYIvLdy7af+41N+yvSQiEJVvHhu1kIhLdIkY6stHm0bn/LKa6Hg653s4bciWijCzzasY/PfDShYI5rZkGxp+uen5NJyPMYb07LwopYE1vx7SR/hyEvpsJ3NHCILfhSNfi0UZonfPNcZ4tByW/p5ocChikIwXrdP49YN6qPGgsFwuYHLy1zvlw1DA1+Y4jrAeczSu+v31dBUuFB5h048lIQupRq49DM+QIDHYoe5TB70qHLakVHJJMvYgP+tYEYnGv7+ZbhcKa100zx0wcWsvYE3DuWAU4Zp2u/h1fDhlrm7dYK4MRh/Dap0y6djDV9LVPb0+GUp/5nj00b09yWVtzYEqGxSqZHnxCGhzszoxXVg9Fj3RtAoZta8H4hKmuamwWqHyz2Rc/HIbaJP8p5FZ0wdpakTlHTQMsqk+6zT4ko5JWJ65Wxj7ISBCNM2YuBkWpioSNrkC0cEPthkRcJywvXI/jovFKCH89I/g3EbkajNMrLGXCy69D1vH8iZC4+UmkxzoY1Qivz0v6dsPL6L43HfQVMJtzbXfuKgmRn3I0spVR4M6fjU9uyhXA9IZVKvMKBi2fUQ01YaiFIQ+uoDzHWsg68yyf0z8Mxc8xzP9MaQZjm/+uP3uAgwsVlVpnZrFoQVl++yN9F+Trl2Dm+UkgYp22ulRAQCuWf3xF3rUDn1boF5duCujtM92do50fPbBwtnc1AgxePB3scSqB/4L4yE70GESNVpK7ptMGadL8KjX8pcBS1zVf+A+PEsgT0/LZXSDbqoxxa8eAiEsmgf0+Gb35Wf/x6kYzVCsf4hnB5sHR+WKzLns8OlTF1hli3wrTzaZe/LIZULiv69egBh716c29mTDvhcm4wbXqBzVw2PppzaliHJqetUqT9E8EuopzZqtDtfB16evAtHIYKlKqDW1yTIZLmtOn0qAO/rom0K/HhKL1cBbGf5e7oFdmNP3732fAO4HjMf9OQPKCR2PsLEMh6d/pkS7VcsjklT3mex6D7Jt+ru/1bIcJGQ5nwhoOlqNUWxlFcGjn2t7gn+4dcBo4vP7yVoDsvfwBfWUiSrZTKZxiouWFyj9VzvZouJbP4muRiUcL9oeHN04OQIbRwZAW+ULYWHl2YtqN5o3t9RcieXug3Wvtt9j9Krid1nib6Enj1bHb99iuNkJ0fQezz7symNK82YNtDUIXmLPKKXS90BhWeKyUkQpPces1wjI45HMnd1eV0ARlDoqvFiaLgHxw7HKDPg5dY727zUTjzCsVBe6Go1RwPWdK5+NLQsrO7Afvl7UD8+77Dfe+MnhIL6kYsUBEy9TFlk7aPTFbaoIRfxJhzNzx9c0BPGqX0c6p4muGYBc9E8ZS2n79RX3dtheHdAzvGn543ASmAYozxw3jwLYzEPPbAIc+Ty/oN8h3g4Ha/kGjLSrIYb1HDlNJaHJ3Umr64ABcOGik5HQyB36wDGuQ1CORuJXI0iClGUbC7HWEOaiwsq8j+NW+APSiYnlYW7gMJl6lrws+q4SiM+0Qv+WL3tsqRj8XagHfvupjbUfL4ESU5rhIEwYNW7XJXGjuB8f1qLlP2/WQZBDP+Q0Xhh47f7m49K4FfCTwuOz1dJgsnMp41oNHPT8Mq0s9qsHmPHMt2wIFHJqcOq9YhqLz7xcO+MhGwj0Bl1MSd7ygYQ4YGotDUOq9j3ScuoOQey6BZdMmA9x5ylxCN7GI5zjDHvXwJjixms00XhgNt7jOhbJG+aGVRE6/OLEeeMYm2fd5Ew+x4e5G2lQiWoy6l/bnbjd456v8+L6DgEfyCLbchIQkvxByz3d2wEmJlVRXgUTQngytXfYlIuHnZ2wtRPogLG3SaPl6BQyeMF7mGscjEqFuOp/GYW0N/cWIunwo+pa3KGFPRF/lVuMTXNPBvnJjQTOvDnTo1iQpLCHo8c2iJ5u2acB18Wjntc564DKULuG4G4KcgutZs2O7YNHVIEXsMYLdqv/sZ/XJSPr2YWHMeBGI/eigWlGyAblKntZwCkI5Idpxzf59oBM8x+qlRoWK3nzn4cgw9PSEAmVrJAYIKVE+2uv1MNpje3ZhTygi26Up9pbioPl35q8HPxpAT+r6c6JYKLqcJH2apEWBzK6hMsDUQc5G3zX9gii0aHa8bvtEIhh+1ViySSmG9V0+Vhf+QKR74Ij1E+k2mKpa98E8yoRtSrP8gVshiCH16hEbjwHQeciLuXwuA7JUjbjfWeFRQ8aX6jwyghs+slkNngRwtGBsN+KKQqX4HZb6nBpYvML4bvdhBWTtX5hYHA1C57IohNRJBNWSLi6UL/5QtKR6x3E6Es00qS+eVu6Apu7BiZgmBJfDN3lqNEhI4Lh8DyalHaZIgsL/BMrhDIdSkm4IFv0PAvpNSQ==KgAAAACAAABgLAAAiiUAAHQmAACnJgAAOicAADYnAABAJwAAeicAAIQnAAB1JwAAfCcAAI8nAACaJwAApCcAAH4nAAC8JwAA2ScAAM8nAAD3JwAAuycAAPcnAADeJwAA5CcAAN4nAAD6JwAA+CcAAM0nAAAGKAAA3ScAAOQnAADiJwAA5ScAANwnAACmJwAA1CcAAKEnAABpJwAATScAAOsmAACAJAAAzx8AAB0gAAA7CwAAeJx1nXfYz9X7wClZ2ZuMDw8pFA18S9EyskJSpNIyC5WyGggpM/OrSHYiZTSoJCWSrFRERNt+KkXW77p+79fLdT3393o+/9zX+Zx1n/ucc59z7vVefk6W///9VDaBpUsncE65BFbNmcDrsifwYtILKH9NiQS+WDKB51yQwO0VEtiweAL38f/AUgl8pnwCJ1HvIvJPU34xeNxE+YvKJDAH5R9MJbAs9ZaCz8vUf5H+P6H8A+C5n3K5KyXwx/MTuBf4E7A/4x9eLIHn0k5r8HgM2IR2x9NvMfAtSP19/D8VPOdSvhLjP0q6CONtR/nOtD+G/L7gXS4tgQsqJjA7eN1B/Wr0cyXlS5EvfaSX9OlLfzfxf13wKkZ+Y8aTl/FsoZ180O9y8PuK/puUytjOUdp/FTw2UW4b7eej/svAownI8hvp3sChtHM77Q+knQZFErib9AP0Ox36rGE+a9N/OvUbQ98VWemQ8c2jnYYXJnBdngSWZNwNyG/EPPxAezn5/yH6OZBK4LhcCRwPHAvcRvkt54EvcCawOfjXZ/w/0k99+m1L/suMfy3tXcw4elLuBeg2D3q/Rju7ya9P/t3UKwn+eaHjpkIJXMX6OE76Xcr/AH3n5U3g68DL6W8k+OcAv+9I16T94vRXi/wviiawFfPTAXyblc6I/1H6L5otgb0KJvAU+PRgfPkY3/nUdz8NYD63kx7C+HaBz6RUAt337nf5QUfad9/LB9z/FemvPfXWAPPnT2Bn+p9bOIG3Mo995FfQpyDje411Mw84Anzb0W9X+r2XfgpB/2nw7W7AJcBslK+aL4HVod9M+psIfvVofxn9zQO/j+hnAvN9FXA/sDb9X8d8PMs+GgJsw/jm0O8R6FIYeDX9DRVC55OpBM6n/gT2yzv0U4X/P2J/5Ie+t0Dftxhf7gIJfJTx/EH7XzGukuC/OwFZjlLubsptAY/GzPPtrMdd0Os/8Mf99PMT0HWwmvaPUf4H8MzDeIuSv5V5yk0/1cE/jf6HgM931KsMntfRz2/UG0l7f1FuPes3D+3lZF+/xHo4wni22R903cr/HeGPjenf9dAffDuwfmYx31OAvZiv5yhfj/42U+9y1sMU8D4H+mwF9gJuYBxdwbso624P+2Mi+F4JfrmpJ5/+3X1CfknKZweP+6GXfOI1YE76fYr8W2nXc01+NZP25StPk478pQ/1y1Jvp+cwdN7L+fQu+Z5Pnlc9wb8j7S6ivUcYj+vF9VMjrJ92tJ/uPcpzlvza4D2F/n7NwXgY/8zcCXyb+vfDXwqz/5owLx8z/3VI/8j6O839cwewIfAr1klF8PmH9h9lHqaD32DweYHxvsD99Cbwexa6tGQcX7NeyoJfdc6bHPCHNOizh/52QPdXqH8V7a2lf+fbc8n14Pwfhh7lwKsodGwDLEj+OeyDQqTP0N4B+OGbwEfhI4XJnwPs4/2P/ptCj1ykl3ovpPwf9N+A/Bnk72Y9/Ar+U8FL/nAGPGZBv97QYzDtTmK+vK/XIf8f8tfTX3XmsT379WPG1Y50E/BfRXu9qL8SPFsxv1P4/xDz1pJ2l5Nfnf4mM97a0KlVKoH5z03gcM/58B5az//PM56O4HUp63cX+OWh/c/BZxHpR+j/ddr5mf6/on/3/Rr6+5Hyb1N/PuV/Ib8M+cPhv0VZt19Cl9/oZ4b3WPDz3eU7bB79t6S998j/nPLfkm7qfY3+vwWugg4rvF/Sr/cEz4MHWE/O0wPkO0+F4PcXgs8m/l9Euhp8oBr0LkX+bZyvJ2n3v7T7F/eza6HfQvjNddSbKf9i/f4N3lUo/wR4P8743M/u73gfnU39m0nX8v0D/jdQX/4zknIPyx/BuynQ/dKX/j0PzgX/RrTTiPU9xHXLPHxPv2fI3wg/uc33GfB88o9C/9P0M9x3Pvg1BH/vi6XYH7+AX3/qrwP2Az5IP7mpN432C9PetYxHvnAO6Yn0P535fRe+UBf4DnAZ7bs+v4cOrs8LWS+e7+LhOe/5/jL8rC/rrA74Z6edI7Q/j/pt6GcI7Z8kPR2ofCE9lcAK8CXPmXi+5KT8S8DzaecN8PR90o187w9HSPue8F7ZjXPW98Urnn/Qawjt/UF56Sfdagb6fSU/4f+F0PNTxtePdBbae4hx1VCexL12OP//Ah17eY+k/fbkx/uL7+3Haf8Y45tK/yco7/03HXwGUW84ad+huyjne9T9eQXt/0t+f9pvD7+4C3gncBHlNoJ/Y8o3or1fSBci33e573Tf5/1YD20Z71ruUx+RPgT+7t83ab91Wsa0+Zb/kfUd30/1GKfvqDLst7ms/7LeR8hPcT5+xziyw8+r0X5W3l3HwDsL6d3U9356h/Mdzs8m5P8JlA5/kP8F/d5L/U/KZMxXPuM6uQN+r3ymUrhPe9+uT3oU9F/mOQT+/cBjNenPgJ8C32d9nySdFTwuBo9/Ugn0fee77mLWv++77IEv7aW+/Kk5dOkEHS4kvy4wyh+UO7wMzOt7T/kK9FkL/hWo34ByhcCnNveL4fDbOdSvzPovDn++Cbw8P0673ml/BXQdBmwh3szjTsq/yf+ed55vY6Bvd/CuSzu7mT/f79up5zve93tcH8rxdqUS+Jf3A9bB36TzU24J7Y8F33uh817mqxX4NOXeei33/EWcn61p93bgQfbZMNrrwrkwkHbP9T1XNiNeo9My4vU99H+PcXdnfF3AYzDjV56mnO0I6WnKMxlvfeBkxvMl5QeCz1/eyxj3QMbXiPlpCBzMe+Ex8JK/ngrvMO8/OeEn9ZSrMI4nmN/D4HMAuB/YPJXARyi/kvTOMD++Gwt4P6bd6ZQvpVwpk3P8X8opd1cOvxz6j/DdSr3K8Mse5K/gPpqfdi5hf9UjfYh6OaHLHuVr1JdfyD+UE8k/fB+tId93ku8j5QfKDaK8uxT0XAr/Lk26G/hN5X7h+3SK8jnyfR/ngi57WP+95fOst+GUO0a5MZngp5yjF/W/oN/72cfrSC9QP0W6Bngrx1R+6frz3u36q0j7BeBn6zj3dpMeQ331B+oN1CPcR33l2d4nvGfMJP2z/B981zFP3zL+95m/Zr4vKJ8dPO9nXp6HD/jOnUs7V6u34h2YDTiD/qJ8y3twKeWP0PU4cCbtet+awfxcBF5dqF8A+sj//gb+Bn6ve8+GrsqH0qivfOhn8OsBXdUzzKJ/7/+byW/l+w36qr/bE/R46u/kf+oX7mQ/ql+oQ//dwOs595/vpaDfU6+3AvoVhG6eYy/RTnfOz5ysz+zAHMAXla8H+adyz9zwmy7M/8+MIy94fEE59TNfQTfpp36mKvULUb43/SwGf9en94ua/J+X/rvmzohH7H+R9wLo2Vw5QiqBfTlXirIO+pA+RXnnqzTtq38dx/rxXHle+Zx6AvUPjLc46YmkS4B/Mcb1A3g+RXoh44z6QfWCN8B/pzM/s4AzgL2Cvsj3me815bvqqz0/I//vSvmirnvS7cDvHsbbAXg9+6s49buwH3zHx/d7CdrzXeM7x/dNFd+X4OW6vxH6H6beCP6/lvFsVv7DfWYQ944W4HGF8nHmrR39Rv1WfdJ9mK93qNcf+qtfWAb9Oqovp/ww5Rm+n8jfQ/ou6qvHe4XxTKH9uay72cA5wD9SCVwHfdcD23O+taSdBrR/GeP7lfQtjOMF5mMYfGwC87g58G/5tfy7IePrST31rlEfOwp6t4YPtQRWZXylfQ8yv+r5N0PP06ynU8CTwA8Yj+ev5+5A4PhUAt+m/Z6U/wT6X854PPemUD6ef3cyL+Vp55hyVMo/z/+XUi6+/1rQXjnfXfSvvmUe6/Mf2n2O+SjF+pA/pkM3+aT8sUl4l/pO7UX/VWi/qnJKoHJK9QZLMtEfKA8Tf8cj//C9tj6858T/CPNalvIzWR+Xsv+VBygn2EJ95QfaL6gPu1t9BvR6GnxzUL8feDSDPsp1PnU9sk8+o1zUv6tP0/5jNHRX7jeG9Er6n+37m3Xem/2nfE795PW0r55S/eQy8D6uHIFxflwmY/9R/mj/x8G/AO1vp9xU6Pct8zNWfEg3TCVwM/UPQJ9BykPJl//L988HL/l/ZcpPpf+5jKNYkJ8rNz+m/oH2C6Uy9tfdcwv+oNzzSWA/oPJO+W1P0vLhT4HP0H8N8P4K+r/N+lNeEu0HlJ8Ugd9F+chw6D/G9y9QeU0W6o/Svon+vY/IPzoxv+3gux1JLw/2DY5T/bXj8/3ruzdFP75/W3tfpFwV9Ubqb3kfKj+7hvehdnbeP4qwrn1n+L7QPuTsuRnsnOqF+XEc4q99j3Y9V0Bn7XtaaQ+TSqD6UuV36h9XwldWwv/vYX2mab9Ce0MZt/qT97kXtAW/5aSbUu6zsD6ifO0E+Cs3vS7YOU3U3or/PwPvO1nf5YI9Tlb6eUn9HOPpqn6V9CHG9zX7YSuwBOWme58Cv0K+1+SnjD8f872TdTAU/rAEPOX/6kd8ny0nHfXf5elHPXi0J9PObA/lfoSfHQJv7W20r7mVcTUD3g79m2eib/Ce+yHr33e9+q8nGc8/lBvPuvkAur4PnE8531tRvqJ9o+8r31W+s/LR3yvKtYFdyH8L+vdgfUb5ezfSvocqgc90+r+L+tq35iStnav2rerTlL+rbztD+/fSnuee9mfyB+WLyhWVM1ZMUY/84uCpPd/76gNYV95f23r/DvaRfaGDdpLaRz6s3pB+y5P/sfpT3p2LfGfzfm5CfgvWs/vH/fQi7Z8gfRLoebuG8TzOuP9Wr0r7x3zfsS6167oG/Cqyvz0/b+D/D2lnNvT2/SBfr6RdIfnzua/8wH5YQNr71NXUry2/ot7vzL/vxhvp/xT1doCvet1XqBf1u0ugxyTot4i074Ne0MN3o+9I34++S33nxvep90rvw/F+Kf8eC53l4/Lv31hP6r/Uh9WDHqPD+aa+SP1QQf6fCv6dwGNpmB/vFXtptzH8oDbrrz/t/Em6D+2M0u4LfNtwjs6nvvYJs4Md40epBDbnPjEGOg3z/km6s+8u6nUhXQs834J+j4bz9XnWv++BKuFdoD3DBuWawKi/ivJB5YJPMN5uQb7/P/azjPtK36fOA/Wr0P7P/N+QcSuPflF7MOeFfO0bb01AltGUe1m6AF+DH85Tzwi8kv6jfXuUt2t/oN2BdghFoe8t9Psa5e4C5tV+kvWrXFo5tfLpC6Gb+933lO+na2j/J+WHjGsk9aO81nkqRv5+9m86/W5WXqx9feBP3t/cD54nnjOnWEfabzSnfG3aKcI4fgWOI1+7UPXk2odWp9+DlFdOpH2j/E/9qfpU9acDkU88DV94CnoPUL4KP9hE/9uo15D2vZ+qf/Seqj16bfBXb9OWct9A37Lwu0X0W5/92Ir1o3xkBveiVsAXwG8L/deAvj9Ad+dZ+6B5lNM+SHsh77Mv0t/H4FeT9eP5onzvL+q53pQrKU9S3nSQctoHvMp4lUNoH1AmE/+ahsF+SXsl7Ze0Vx1MPfVd+snoH6M/jfzbd+9bQO2ttL/SHutV36fUj3pu9Q8vUe9G0pNJ/0z/ykt2pBI4Cfrngb6Z3ctn0b/yaN+Fbd0PtKP+7DD9rNbeKfjLHKe+/jT6z8ykfHn6uQ74LfhP4N40QftM8r/QP4j62sts8T6hvMr7AvlVacf7cWPW907OpfHQYZT3b8b3KP1+p5yJ+esAX9ReaDv1f2B80W4xK/im6Q8U9o92pO4jz1fP1by+IymvvEX5i/Zg2of+4npk3aTR/k7lF0G/oByocyqBDzKekuyr84FpjE++pD3j89SrBH2+018Ges+h/wvpfz3jf853d9jn5Vmf2mfNh96bqX8R9XeSP4j6+6i/kfVT3nOLcSpf0j9OPUM5yukf1xO8lPsqB1b+21r5Afl3q1divMdoV38j/Y98/31Gfi7q3cP8rqD9DYxvuXak7h/vH0H/oN6hjvop3i871LtT/0Pke8rbq2nPHOTvq/UH9D4NnU+Tf6X6fvKrgsfDjHMt6XX0/x/gpakEzlE+wjn4G/PzKvl30n9V/TOor5wi+nM5P9JX+aFyuyjP0z54P+PXTlj74KvUR0JX9Tja35/g/FJ/qz5X+5WJ5LcPfhlj6V95r3LgkaRvBI/o3+A9YjbtV6TeVcxLXfkn9eN6UD/VmbTykbPyENqbDn76S+mHVAh+pP+U78u99Os70/dlXf1T1c/SXzbyq3D+XUO7V+uPRv/KB5UDKCf0/d+Gdk9rzw+9WlC/kPpc4B20VwQ8p9LeUu3CgQcpr//kpfop0Y/+U5+wfv9k/fZFjpCH9bGX9k/R3hbwVh5yOfgUUI5AuYIVM/7/ZemM5dUPKVdQzqB8oRX0rcy6+5R73oWks2q/UTxju/Zj/7ezH3NSbyvrIVsqgb5/L+V88h3s+zczu9RctD9FfZZ2WdrpQT/tVtqAV7Rfaa39jvcN5kf7f9eP8iPXkevH8Ub9W1fyq8hXKTeZ9o56HrFfXwcuCPIQz3P9QUaCr+d71Pd4/s0I90fvT9H/eDvndwXoUpZ1OJvyA9XHMm9DmZ851K/geUK7F9BfY/2BSG/Qf0q/PuannPJO1kEx7UHJd36up/3or+H+cD+4P7QP9/zVH9pzWP/qLdBvEnY2Z4ATobf+4fqF/y7/I1//Eu9n3te8n5XlvlEQuh5hPxQN6+8V37eOD/xvIF+7tCnyYeZX/bp+8erZ1a/7vslOf75zfN9UYl/OYt8vBL+HoO+X5CtfVN6ofLG5fqv6daUS6Pu9Ku19Bv0P0u408j2f4vt2duBf8hf5m/xLe0PtD7VHXEh/T2oPDX6/Mo4V0Ev9q/pW9a/rqa/d5A794Sm3yfgFwV/IddmA+r7f9RtRjqn8MvrtqH9ZwTiqqv8O9pO+v7VDuZP29ukvx/1Df8L92uFRfwD4b2R/P6Z+GHz2Gl8Aum0n/z325wbG05n+VpEupvwK/LT/j/7n2ucV9n0O3A4cxvzPTcBZO/5ov6+9v34AeYCnlLPrH6feXnowT+/qD0q++2my9jL61zLOu6HzMmA6/et3pr2F/mf6r+i3skm/IfC/Tb+WTO4fxm9QXlCPcurvjU/wk/qm8L7owH4tR346fLwq6VbMfw/1B8CGyns4Fz5iHTSDn9VhfXgu59M+iHFO8B4X7OG156tFff0B9Q98Q7vGFJD1oP2h9ohDlfewHlcBVwJHMr40zqvM/MCben9V70L/P9H/CPib9vIv0X5B8vXX9JzWn7MZ+0/9iHLNKO+8ivtJH+2IwK8neNwO/V9lXm4mrX9EY+g2SHmFeif63wn/nco6mAJswXiUnyk3U0+s/GyS+iHyt0GvX/TvZX70A84FvR8wPgXj7cd4HqFf5VtjtT+lX/0rN5LWvkG7hgO0r31DDcr/h3Y2ki7D+Mvpl0b+W4xjof4rpD1XqqQoz/hug+4byU9xT6ka4lvMoB/tbNyfLdWvaxemno/848jVlU+XIH8Z411H+y9IR/k4+Gh3rlwp2p93Z9+mMe9bwKcB8zOHdp+gnSy0/w3tOf+bwMt14PxfhnxZP97ov6vdzULa0/4mPZwPMU6J58M14L8Y+nVn/q+n/kjWd2/KDWH/LFf+z//ZKPcN6QOMx/U+KNgRaR8xi/2hHdlW8Pqb9F2sjzfgizVJN6Ad7WLXQS/9e+9Xfhj0D+od1L9pf3eV9vzMl/Z3ym98pyvP9b3eSL8y+MYXjOdd+r+C9TCa/zur1yc/2jdo16B9vvv390zuU+qbWnn+gZ/6O98n2nVp56WcO9p/KF8+zXj3UF+5SpS3NKffceSfId0l2Cd01P4JvLRP8N5ZkHztLUtrn4l8rBPzsCGVwPy0r/xc+0Pl58rTtU/RLuUy+tE+Zbv+WdBnAv1UVd/KeTSYdb+b+dyk/T/4GudrMPW9z0X7jgLuM/jnbOWjyn2Dv5jvmx703x3ofVC+Jx9soTyV9Rn5mXxuCPgXYXzKjZQjaf/k/T/ab+h/pL/tXP7XH1f/W/0vFrFO9cPQ/0K/tnWsh+jfdgn1fOdUC++dUfAD43h0Z70Yz0O7OfW76kkGGj9NvzftZch3/9dgXxegX+2IFlPe9eI6eph15HoqT758I+p/1J+uRT6k/tTz6jbXV7CzdX03CH5tU+C/nfRP1v8j2DtpHyG/lf/Kj9MZv/JZ5bGeL7ug337y99Jufc9N+vO+7T18GOW9j29l3OdSbxj4F/GcoL5yqCh/+pG0foLRPzDGFzM+kHJp3xUPQQfjXfi+0D9Vv1T9SHw/38l6yE67i+n/YeMRBXsS9a3K37Q3OBPsEdqnEqh+cb3+L+qVWD++X2r6bib/E/jLYdq9AHr6zv2C8c+APveA19n7Ie3sg39rz1kbfur94wHW3Ymg/9tKfhv2p/e8eL/T3lS7H/U82p9u0n+ddbKL9vdpZwK96wA/18/d+x79ZoGPntHfxf0BPvrr67/fDvx+0c4olcA95G+E/q6Pmxi/8pWF6kGY/1vAozlQ+5z+pFuxjtqH88k4JzuUf+mPQf5q7XW1x9LeBPp57iqfU16nfE5+pH76feVtjE/92TLaU4+m/qyl+wx6RX2a9xPvJd5TnP/oH6lf5CXBPkg7FO1P5pCvfW0e+onyHe/V1cEz3q+vp/0d/N9Ifyf2T17ScZ7npBJYK+A3TTkN+KmPUD9xCeXUT+h/kRV8tH/Q/+I7+SN4xPh8+rfp1yZ/eoZ84xlE+7UdzG9mcac+p/4Q1uVg4CjgI+QXRb5RBGicgUm057twJ3Twvei8aM94NfTxPa99o/6DWcFLP0L9Bz+gvxHs/wfZ5y9Q/3n626X/A+2v8P3MeHYD1YO6//W/2A40Ppx+GB8G+cX94NmN+dA/WL9g7Yk3sD9ugj7qCXuB71Pa82r3Sn/Gn9U+5j3jNtGv/quPgX8P+tXeSHsk7eN9X2un5vu6lvaj0LM27Vajnvr9adQrAV7Gd7g62J/4bo7vafWL6hW9B6hfVB6lP2zdEB9nbCbyae+nrp+bqWf8PdeR8UhnADvDj9fpD0H7ixnHaOoVp58SrDvvMfH+ol5Be0P94Zcy/8YVM56Y8cbaMl/6j+g30s54M+Qr/zZ+kvZu3h+MT6H/xLCwXj2v1Kdp/zuM+u5r93lhoPs7Db6rv9xPnjPwz6zaT0HHEdSrSL76LPVb6rvGQl/leerrov5jL/ffp+H7A4BL1GPQr3F7p9C/56H6PfV66vnV7xvvRPsU7VW0T9GfpCn0NP6efvjaq2vH3j7Ysxvfcr/2Mfanf432G5T7l/xVjH9g9ox4RfuZCYx7Ae2rTz9O+9v062Z8xmsyPtMJ9sPT7KPd0Ds9xMczLp7rubfvlBDv0HiID4Gf9k3aNek3fda+iXa9912nHMH3m/Y91FN+cBT+dxHvzfzGAaC/+xh/ZdZnb+pVoL1V6qn09yCtfbtxzS6h3iD6P6I+C/y0pz5K/SHQU/mMcvV/oI/y9T3aITMfnksdvU+kMrbv/cp+bD/S56ydAvklWZ/n8f9p1uV48s9jPM/RfzbK/U76V/p9mPIp/r+A8f9O+5czH9onr2X9GFe3OvjF+Lqu/we144Terv9V5BcGdvddBFQfZZz0GB/9Dc6FmqzvSdDzW8b5BPz9AujSj3Q+9of+Wdo76af1FPzta/pPo998lK8E/r4/9R9Wv6V8PAfrYjXtlqH/x6HnbuorV1XOqnw1xmvXXlL7yCivUI4xM8Tv8h7yG/vI+8cj0GuzfpLe/xi/8TqN32k8z4vAJ8ZvNR5wZfVP4JufdjorH9QOgPRq0h8AG0O/ceoNwFd/ev0pjGtVPvB741sZT3ox8B3y+4D/7aSj/8Fixq+9nnoG+cMu7Xw5z/XDiP4Xng/as2vnXgh8oz+Dfg7aMWgvpf2U/N9zoRT7Srm0cmrl08Y3KwS98lPeOGebmL8ntOs2PhL4b+X+eAnjfJH99mYqgcYX28I85AAv56GY/huM+zDj0P67H+XHeZ/Sz5D9/Rj75w747rv0UyS8h/UjivED/O6A3xvwewSej/oldDA+iPEbGN889bnQJZ35PQ/6vEp+O+AYyk3l3teF9lzv7oOftcOnvHysFunV0GWo/mKUH6v8jPWhfqqZfj2kfR9F+xHl1PpH/JmA/+Efys89v7vRzlbq12N/XMn/z4Cn8VqNv6g98jbfZdD5OetTz/i/Z+M/yl9KZcRX/fNG/a+1R6C/NOZ7O/hPZl4mAf8LvJr+9T9xf+p/4v3N+I3e64zf+Dl4zGXefuVedIZ99BrtaJ/rPWAJ/FV5lf5Uxn+L8SMPe45RfzXtVte/R74Ensfpr5HxIyhvfIRo35tX/QDjN06/8flj/P5lobzykunAGpSbK/8D/+/pzziwxn+twL6WPw9jv58I8YsbsC7vA3/PWe3O/D6J9mjaoUV5hXKMnbTj+1a/Cv0sngr2EcYxjd9LWEZ9/UoaU1+9eSX+107JOG/ax8S4PfpJGv9nMOe2cv4o319EvXzec1h/f2bin2T/01MJ1F5BuZpyNuVr2hNrX6y9cQP4teer33HQ/81zdiX1Y3ytf8Df764Yv147Uv27/B7Nvb4fldOyvo1nd4J67jvj291M/+9SPgfzZnws5dfGT1COrfxa/zD9wp42nh71tQd8A6i9oPaBxiUwToHx0e8n/yHwG8W41MOtob/4vRq/YzNOf3T4x0Tf+eDh+2sQ9NunfFk/Y/DPBb7axUd7+fh9oUOktaf0PNka5BjGx/Q89nxWn+X57D7RrkQ7k7XGXwV/7aO8/zp/6geWMC71A920Z1V+Bf5daV/5nPd37UuVx6azfowfbNzgiZTXH+pG8g/oF6B80nsZ96P72J+dSBdkfKugt+d7T9aL53unYHcVz8O8nGdjmcd01ter5Lv+9a9yH0g/16Xx+uP6NH5H9P80frrfR9oG/m9Kb+1flVdCf+Xv6leMd2b8M/nfl8GfTP8y5Zz6l93KvbQ95S7QDoF0K/Jb0u4Z8qdBhx3gpx7Se47xStUvPQ591S+5P9QfxPiI6g+M96adSzX1Wr7PqDeC+dK/8RbGNx5+47l6kPQG6hv/QTvTc8Bb+8kB7IcrWXc3GWdGf1ftx/i/E+uxH3iPoN3LwC8L//+XtPYd2vto56F9R1f4k/pF9Y3qF+eDh3Zn8bzuxXgPktb+a4B+HtC/OfLbRsodud8VYz1nZXz7ocu55FcFnyrybeVkqQTq16T+XH268Ynkb8ZDMV5KVsYnPTy/pZd2ML53Ylzwit6PfL8xD/ohZ6H/E/xfBLoYf0n/pwOM/zDjP0j6NvKNP2PcGeW1xp+5okRGPH2n+T6rRb9NgOvVX5CfWdwxv4/g++NP2o/2PMb1NK5wjO/p9w3qMh6/b9BG+R18V/sC93kf+lduuZ72on9+jM/nuVeC8pVYL77L5Ofy76/5X7lICf0gg/zX93KUT58EnyGUb0u/PY2fp96F9V+G9Cz9eVjXviPj9w/8vp5yddfzx8H+MMaRfRL8fG+ql1NPly18/8H7/1D5MPmd4Q+dgAWBH5HvvBcI66E9+zjGG1IfWlL7HuipXYN+zvIfzyX1JlGf8i37dQT9nKL/LH5fgXb702423yPMj/Txnb7G80I5Bfe2TcAK9KN/t985WgV8kP7PsB6MhzOL9m+g3Bqg/lP6+0Y9jN8N8XtA+t9fTH78fobrZgH57jfjK7kfRzP+kqzLa6CjdvjGh3Z9KR9QXqB84HfGm8tzh/S5tKP+X/8x7QDU/xtv8TvwvUE5K+tbezPtz94L9meun/HGfQ3+8urHP6Fdz68LWB/tSHtvi/ErhgS+H+UP+pU9B//Uv0z5ZYxXGuUryn8/oX310MZrmM1981rj9LEO9Y9+NpXA/ZQ3fuxh0vvgX8b7fNj7MePrwHkzGbo+Av6HKO98OD9f87/zE+Uaxv3zfhPjSafINz6pfinWtz3lI9GvWLsp40Mr3zwRvqOgfFn//6Pg/Y52oKz/qK+M/FV7Mv0S9FPQP8H408abls7zKZfZdwPX0L9xNY2zWZl58fsbF/v+pn3lRZuhn/bX8d5vfNvoL6MfTbNUApuT77viMeBL1Pf7s77rfef7vlc/d6nxXpjHLxmf/kXx+1bqY7R/UF6jHYT2D8/qP8b/+nmUo78e5D/p+cl86t/9IOthCfeAxcbnC/57vpP1z8wJvunst9Gce9rB/Q091gb762rwU9838hW/+6c9oe9G9anRD1f9oXEhjBNhnDLPC78LcYp9ftp4fdofM/7ZlK9L+yehz0MJOPv93AX04/dz8zJu4+DkIz2N+VlK/a9ptw1wpfoh2lnEvCjHlX9G/bTyEfXU8bvIT0NH/bL8nmPUu6iP74t9lv7HMb6IcU+Mg9IIqP9Fa+bf76fqb278OuU1ym/uU/9o/G3ta8HX90A5+If+UfpFdU0lUP8o7cWNN2A8Ar9/GuPrV+E95j1cf8eZrIPDpOeTb3xU46Ley//GR32U+VlK/uTw/RflMd28z4LnM4zDODnGZY7x3bVLqgPUXkk7Jf1JjjPeGN/N7wZP4v/4/WC/yzFXeYNyDPrXfvgS6KMdsfbDfk9L+epw91XFjPU9HzwvbKcm/EC5ZVnytS+M8W/1C5P/SU/5pfI39dfa7+uXHP2VjcvruWy8XuMfjwY/47YYJ28F9Uvov6nfK/nfqF/hf88HzwvPB+0iS6vfY70a328A873MOFzg00H/Cs6jRZwT/Unr/9OIdFPOWe3OsqbAF3z0i/5L/ZfyNv2ZoGt38CzG/B1ST8F8/Uu7fr9lPPxhHPBl5lN+pf+Z8hPvo+qDtcdWzh3jNMbvRulnrf1tC+pX1G6S/F3QP/JL8fI7RrPDunadu75PMi7tWKL9yv8BAuaHxnicdZ152M9F9/hvuyTc9uXGR7ZsUYhIkl3I2hMRZSdbWYqEsm8Jt/DIFqEka0giyl5uWbNHSZsSkpDvdf3er5frMr/H559zzWdmzpw5M3Nm5izzrpQz7v/9TgEP547g8nwRLJgngicKRLBQ/giWKBLBiuS/QvlXqd/53gjelRDBZuQvTh3BcuC7eFcEq90TwUukl1D+XfD/nT6CffNG8J1YBOcli+B90J+Jeq0KRnAY9a8DL+SgH9IXH8Gx5E9IE8Gt0H0Ieg8Df6P/s2l/T7oIDskVwZeoNw06KmeIYCrwp6L+e/T/ckb6d3cEbwCbQd9p6P2GesvAO5z+jYdfI1NF8E/Sk6nfm/ZnQF9X2jtPfgbwV2Xc5lHuMPm9SH8C/c6P9wtFMC38/4Z+VwXfvdCZnXEpTX5m/r8Zi2Cf7BG8xP+lwF+C/Ergq8O4H4OOFM436MsJP9PSXkbov5/8h8mvCN4/4d9G5lVj+L6OdAnaa818eAa4nPaXMf8z0N5F4EfQe5hydUnXJ/2E6wV6bmSK4LbMEXye+XgC/i4CbzX415r0PfQvC2nHJx38ywX+dOT/RH/KQc8g+PcI+Z2p57xKT/+uUb4Y828m9SZT7hvS95BfDzyPxSJYmv6cZh6+mzKCB6HnHvpfNUsE7+b/AtR/hvErAB3Fae9v2nsqAnGZKdcLuvpC/2Xq/Qze8tTbQv4y+PYX8G34kUT5RMeVdrsrl2inNuvtAPKhGHhSMn6ToGsEfJkGPQsol0D6BOW6gX8D9c9Q73vo6QU9eyk3n/aHIYeWMY/3M1+usd6P0+/XGIcL4G9Cu8rpt6Cnyr3/u/91IxBXgvk1EvwvMY7LSNeA3hmsm2bMgwz8/0gsgouTR7BQCuiinXXgL0H7g6HrLugaCvwG+stQbwHlq9PfjcF6dn1XZ/xywV/3mbTQ6T7Tgf//gT+/QMdm+Of6WQyeYZS7Dj2vUL4GeFw/j9K/stRzXSfFIvg79JVGLixmXLcx3m+C717w1yJ9ifbjCkfgU/g7B1gOPvfNGsFW1FsDXQMZv5XQ8Srz+hD782FgbfK7Qf8M8BT3PEH/ZkBfVvh5jfKTqL+b+TGW/MbgSc34zWW+zgf2cZ2SPwr+ZIX+FOSvZH5Upv2Rri/aX8L43YDecbR/CL48Ar5Qnipnc4N/Eum59OdF6l0lfyvpCtBbg/H5ify28PMC43pf2gg6X/tD3wj6MZT6WxjfjOR3Af4APdmoP5zxfIj2L9OfxtBbIVsEB8Kfl6mXkfwzyOvvgZ+Svwj+9UNur4auGtTbBr/K0O5j9Pcd9vsiyN9UyA3lT3g+DPc3zyPJ4OtJ1sVC5F9N+tsJOoYxv6pQfwx4a0BPXtpPAxwBveXIHwPfF8G31NB5kvX5HPJiO/w5hHx5g/rZoeNBzx/ut6QLZrm93fs955Kfg/Sj8P0z4HXwt6L9KfBtMrA79H7M+G6nXj3nNfxPBj9H0n53+jef9ttCbwPwPQQ/spO/nfw/4K9ytHiwP+5kXNwn3R/3gE95W4v2Pd/3Ylyuss43g78M/Y+HP5mAP9NeD/o3hHo/Mz5PA/uCfyPrzXkXzsdTnKtPAn9GDu2Ej0+53ih/jPntOkoifzn57rf/gd+r6f+Dnkvg52X4Fw9dyWn3JuPQBv6toX466PGc/wD1xzE/ZtDv6cD4WATd79wH98O/lOQ/zbjNgP418Dkr45+L+eX5pBL/Z2N8vE+NB44DVofet6G/v/IO+v+CH52hrzJ0VCBdF76+QPme7ivg20N6KOM5BPy9qf89dCZDfuzzXIkcORmDfvi1jnoDqNee+RXu/+77X1GuNfTVgX8N4dcV+DMTeu+mXFrHMd/t/TmV+/Z+LYI/yr2y4F9A+k/onwj9z+W+vT/2Yz3z6lPgJ8DBtL+a+ZDEuH0DnAo/d7F/7QTuho7c4A/Hz3H7gP6von/j6c8v3nfIL0n5p8GbnfLloG8t+/VM6lfwnEz79SjfEbwD4cNGyi1kfbkulQMlWD+HHXfo6ET/v4pFcBLy5Rj1diBPGoG/Ge0/Q7vVwNOK/v0BXW0pd5VySeTPAe9l+DuXdEb63576F6DnF/mCfBjN/vId7fam3AucHy5Qfzn8S+89j3Jr4ONn0PMi9J0j/b77secP9w/oWMP6+gG5kYgcLQ7e3ziXTgFW4nxahnYWgj87+MLzY2XyS5O/Gzq8X7/MfD9O+/1IN6R8GcqvBbZjHKbSj8vgf43yz6qPof1E1sda4BT3H9pvAJ4kYFP1bPDvY8blMnAi+I8xPj1JD1CfRD31a943R4Hf/fg72p9G/sPUT4Du88CczN8DwPqewz0/Ik8W0a94+DcOvFUYz5vM+yzkj4X+NOTnpf4Y1k9f1tde5y/0bUc+ev9L6XmZ/JHAogX+N91vMF7K7yfhn/er3eor4N+HrKuP2CcuQO+v4GuBPGxA/34Hb2X6l8R89J5ek3bcD923ZyL/KlHf/dvzbILri/rzwX8X6abwuxztrCLtfcV7zMus9zj424L+PANcwTh0p7134e9c+PKRej7SQ2lvMPz+2fsO9d3/kvP/W/THffAE7W5lnJYiT894vyfteL0AvxZB/y/qx+BnK+CXtL8w0Lepj+sDfz2/56Af6mkv0X5l5M0Az2vk1wZ/a+q/7T1ZfaP6bOZFBfDf0vciR5Og5wT5/zC/Z1P/fffz4P6fkfH33Oh50fOk+o/e1Avlb0HKtwD/59T7hPGvT7762U3wQz1tHvCrV3uV/3dEIG476eHwJw/tzKadyfSvgOvDeyDpQ/TvBPVniZ/8C+Sfof1h0NMF+l8mvx3z40Hm0V7q36S9fMivcqwL9fKOfxHwb1CPQT3vLy9C32L61Z5ymZkvV8lPgP7vwf8eeMLztfecleB3XaYG/0vQk4l89aJF1RMhr9SThvomz6GeP6dAXzz0uH83An9Xxl8+nIKOfLEIKt/S0d7zyJsutNeD/DjtPKQrgj8b+0F2YA7gVdopQbt5qa9+ZwvjHdpXrkDHacZf+X4nPVoN6nle+5d0MeTDAfBfRT5/DX3XKL+T/JKMQwL711XXT3Ae9Zz6Pf2vBb/aMx6vgGcu7atfVZ+qfnUM/deeMgvYBfr70b72kzTKNfVN8KcU+GtT/x3yv6H97fRP+X2Oc9JG6CnH+a0qsAZ8akH/zvJ/K+T7XNr9C6j8maS+hrTy527oUy+hnkL9xBjOu/3AP4r1vpX2l1M/HnozgCeR9DbouwjMirx+XvsbfElL/0srL8FTDXmdRnsD5Y4zPuq3pwNnAtVvK79X0a8Jwf3f80oT+vEG/w+J3U7XIugZ4jmXck9QrxDtJKN8HfgzJgJx/6Wc+2Md+PuU9x767X1kK/zRfjYaPm2hH9rTcvF/TPsIdLl/XKR+R/qzlvovQd8W5F895uFC6OgOfvUB91FPfcEe0jlIn6fcd8C+0JENfjwOf3ZT/hL5p1nvd9Jz9kDePgVdE5lHjejPTPBeJK3erSv83U997+XHuefs0j4Dvf/QXgr+b1/wf9drlfx2vJlct95/Gb+D8C8f/e1EvvbXPq4v0h/S3qP0fxryIR76foe+CtC3iP4eR/6UIn809CQy/htZP+lo/w/wNSU9iPWYHDquc35KAT2fMT/KUK8R++kx9YS5b6ezk/sy7S+i/96LwvtSCuRJSmDyQP+nfHDdzQns44cCvwDtF/oHVAWPfA75mzJoT3rUfxel/f3g/Q+wGO0/p32O+iuh7zT181L/Jv83BE6mvP4QR8B7DXyzoF99bzv61189jPcv9oODwEnMy9bUzxror9Vnq7/ej1z/Grq2IT8fZ//4Hnqct85j56/nO891nvM936k/CO1P6hPSMn8H0i/1uC2073DeLMO6P0z+ROrPVf/KulS+7aO+9r/QfqH/xKvg3UP+Sfihnr8v/V9B/lfUb836KEH/+3suhb6PPG8zP9NAbzHWm/418lv+Ox5HqD8aOsbGIrhbea4dhfS/0DeMdEno83ycyfXK/8s8fzIfXC+upwLk/wW+etAzEjy1GP+t0N+Q+Tde/R74akLXNvp7Wn0O+LULtQe/9iLtRN6LvQ97X36A8n+zXmsxT9bwv/qX66yHk/y/kvZmQX9hxqMosKb9Z/6sh95m9KcS/bsL+stq3wS/9hztN68jf9/2fsp8b055/Soakq9fxQ7aqwn905G7zr/VzIsnkNdVKZeG8VxI/9xv3Yfdd+exvr+j33fB36PQsV3/F/i6gnWyHPgEeA6BPz90HaN+HviTknzX93Xyx9C/icCP4XdN7aDUzxDIf/2klP/e+77V7qs+gvrXWb83yG8BnMn4FHb/B4/z8xz1vV/8oF6CejH1f/xfAv4+Q/m91K9Ie9qrusHvs/B/B+W1o6SFjl9jEfRe7TknvF/3Z931A24Cfx7yf+X/drS/CfnSRv0C8127lvoy9WSrGe+2rMsd2iuYX9m4X7XgXnXO+x78CP2T2tGPDPTf8cnJurgRjI/+RfoVXfF8Sft3084I6i1RvpOfQvuD+jTaG03/x7FeNkFXW/Ut6qfJn8o5qBD9HAn9jk895JD6EMfJ9Z2d9ar/1DXaVz+T0vGCPvU1/RmfSfrfkV8APMupXwc+/Oh9k/o/Mm7aZSYwH7TXNKd8Ff0T3S9Jp9HuDb3aI7Q/aNepClwHHXmRH/vg21r3KfbpF2L0F/mi/fgn5mdGxrsNac9nW5Wv5BeFvs2ub+hQjqqnSUt76m9aQn8qzoPlGdeC0NOW/HnwfyTrahRwJ/3Tr0W7gHYC7QPuT+5Lnn/dn7JRf4tyC3onUn6q9mfwamfZ5H5M/Y0Jt9Nh+563lB/6A2m/2et+rH1ZPwz4e8s+7rqmnPby2qzbv7SLs995XioALKkdgfH/kn7+4Hk30D/2hL43mRfbtO8if+THY9pd9G9Vv+R+Dz3uO5egtwr5ng+qgs/zgeeFD1g/7wNPBfvoo7Tr+Uj/wgehfwH0PKT/If1+yvHxfpRwO93d1F9q9yRf/chN8DSi/rOUP0D5zYyf93Hv54P091DesD73MR93gXc187sk7V3zXoy8+wj8dchvT39X6geGfDyiPpX6/6V992vnVzx0O88Saf9f9f/8vwI8aWk/BfRUD87Tnp9rs35qAfPr3wXd3ge0++TTrxP6k4G/AHz6gPp7yS8OnpWUc7/vQ/urwL8E/OnJ1//F+6D3RO+FIxiPh6l3nnGZpR+C/jvUv0G9OurzwF+a9JVATzGX/Dnkn5XvwBj4w/mjvmcV+ern0rGu1M+pr/sTvqRi3ymKPF9COe11NRnPxqyLFuAP/c8rU15/vibI7Zvgawyd+hOG8Q/6GVRk/G7dn4J7lPppz+0f8P987T/Qmxt6ZtPeLbs59FVFXt06JyBvlMehfsP1Pgg+eG7XTqBdwP1rKfXnUX8f/ThK/ij484T6DejrSP/0949Bv3rs/OCLZ9wSoL8L6abgb8C6+Bb8niOH0/+i2Pdqg/caeHvC/6+Nf3Afo5/1waf/mvum+6j+a+4f5aHnuOdNxke/SvUKx6Fvvfo1/XDJ14+yKPSpv9I/fHigv5oW+HVNgY/6d42D/g7IDfVQxoecDvSeLcGr/nOl9i3a7QAd2tGNb+jK/8Y5zCI/9A96KfAT0h6qnbQsae2lRfUP5lzQlPR71M+L/iMBeJr7wmTkV3rwlQT/k4zLVGBhyicAlaPK1cHgzca8+wq+/YfxWUD/8wX+PeobjnDe6IX83wVdzj/X6V387zo+5vzi/PEI/Q39Z/Sr+JJ8/dX1r3gRfneH/h5A7RN/Qv9O6NhH+7nop3732i/0x9cPPxG+TQEmQscu8MVYf+7Db8KPo/Rf+XtJ+ek9HPqVl+pDlafGJzzi+QD6CjPeU6iv/esLz1+kp8Qi2BX+dAN6vvC8oX6lHfWfpd5P0OP5XrmonFQ+6j8wy/3P+yX91z/MeaOfmOfRUuQnkq+83Ub+VPj+Bfua/I+HrqnMD+V96D+1nP0hD+tqFelklK9Gf7J6zpVO6M/O+Gi31U9f/3z9BV4NzsfTpFN9G/N6HPBp6NfuLZ+1hxeA/saUN26hCWnjGcYqP6HvJv1JE8T3qX9Uf6/+8Rz5m5A/P5GeQ3njHr13hfGPZ5C7p4HnjNOhP+c5t+hPkkL9PPg7BnEjns+Nv3oOPB+T35L+VTS+MvDXVn/fh/raDfboH6D9mvY3B/FAg4zbQr/h+vDcHZ7HE5Ff6ZgXzVlfO/R/YvyzMH/7kr4AHZvg92bw5GMc5tGfkuQPYNy1Y7aATvUD64xvIf8L0k94Pw3uczuY345PvmCcHJ8wvvMC/dD/JzGITy2uHQ/+q19Rr6KeZSXtG/8QxmEaf/JikO/9QX+yNuSrr1MO5Gf8UiM/8kH3M9BVjPYf1Y8augrpd0Y7/1KvtPsG8/sc9T1fqjfVD9I4vAX6bfD/faTH6n+gfZJ06F8xx3VNP/TzTgT/AM41W5Rf0NcCfKOYj71od4PxFOAx3rMq+EoF8RnV4a9+zI7rEPo/PgJxCfRD/72SjI/no3toZ7t2fvDs4nz4dSyCY6EjI+331S/Fe6n++EF8jP7h+osbH1NNewL0uL/3IK3f+UDaDf3PczGfve/Vox99oM94wnq034py3n+2eb7kf/1U9U9NZDzuZZ4VAGon70X/Txt3Qv8zQP9e8GcG36+BfVb/iVy0qx+F/hPxrO9MQOPUGwX2Z/0x9dOcn//2+tZrnvn2+pvp32zk2u/UV79bA/r7sL5df12NL47ArfhM/Yn0H1oDfYv163O/ZnyOkN+S+f4eePOrzzF+FrxxlFtA/S3edymvP3o66H+D9ZcGPrwFnfrzqQ8K/TfU27tOk1Fe/1L3L/299J/UH0z/ry6sH8/9L3tuIu39xfuK9xf9x40HMT4kOfzSX1W/rLHKAeBv4PH8rh98Gu8X4Df+ybip8H2DTfyvP5B+QrZfn7T6TPWdQ8HfCP7nZTw8dzQl7f3Ge83P1PN+kxic6ycbXww/9Md4nXPmUOAP2u8YL+M79e/Zxv6jf5b+WBUor/1f+15n2jdeeynjpz+m/pmeR/TPXA9/1MdNd1wC+9da4yK1B4F/PvQUoP3PwbMtFsEFQfyNfj3G33i/9V6bxDnC++0K+Oe9c7v+k/C3WeB/r92zifYr6FuoXwbtHiZ/Iv35h//Pu//Tvz7kJ9LuO95HyFfPq9xWjjdnfHexrpdA107S3q/U++XyfEm/doA/s3YH2vfdkd3Uf9i4XO9N4CuifyX7j3Yd7T3DOW9PgK+NWYfzjEMA73bSW7k/bAPOYT4epb0b0FOd/h8l3/teJf5/nPFoz3rSPuI9wfdSvB80o/6z1F8HX5OAdVkfh+jPAWBd92v4lg3+ql9+ivR541Vo9yPae5D+L4Nf3Ug/wHl0lPpn9q0H4fdPzlPoywT+f8Hb1bjsWAR9r8D4CP2JjY9Yp30O2BL8B8BvXJxxcp4PU7q/cF/Qb0M/Dv03KlLPOJ89yk/G4wr5l+G/9tt/SasHakba8R+N/ErHvj0Y+jNyHvlb/xbPPzHaB/9e6Btt/CH5xk1Vp3/q5dXT68fVRX99xmcZdJQh7X6xLuCrclj+VuA8shr+/aIcBb9686usa/Xnxj/+yf+daeci6Ym04/sOxvdcJW18z0b608v4TNKpKK/fsnEoi+nXAu2j2t9J1zJeGfr0C6rLutBfSD+h0N9Pe6/23Xash4KUX017V/S/sTz9PgP/lwbx4+vB/xb1N9K/SvqNU74QfDjI+If7m/EIT2pHuUP8pPePMF5AfYr2aO2C2gm1D75Jfe0fj4JfO4jvF/wJf40LDuOF9XcfbFyW8UbMv9D+8THtFdM+x/7XkHHqCX79DXz/IIH6n1P/Bv3KTdq4SN+D8nw6jfop6Fcy9udx3kPuYLfUX2gX+epVntPuxPxIQ3sD9K8xrgvYjXPBLuAztN/EeGrjBemP73Spp5gAXdPBr7xSTk1hXZ6Fj7530Au69Pc23tT4U98Bqsv8zwmeHMBh+mXQvn4Xvr+Szf2ZdTGWcfuL+Vg2FsGLcbQD9B5jPMS79jeIIzJ+qBn4n2Bd5wR+Cn79p343Tpv/9aPy/YBjxnWRngY/jJ85Aj+Nn6lC/XW0PwjoOzv6byxk/jflHnIG+DLtbYbeXsiRnsAi1Dce1/jcl9RX0Y9H0K97/1fPrn27uPbGPLf3x3tuKf0X2R9GME+6+X4F5dW7GI/dF/zuT+5H7k8nGZ9M9K8n9Xcyn/SfLcS8yMk+eBA57btzn0NfS8+/7ku+nwL+7tTXPyyd8W7wqzzz9TXmwQbwGF9iXMle6hlfMhy+lDdeHnp/IL8m/e9Jf3yHR38I9SnaT7SnGL833vh+6v9IuSzu74zvVPbNCqTV73TXL4by6j17I19rw/eDnmeMd6Gc92Hvx9rJvB8fNS6a8je0zxq/r3+I91b1IdA3nPqNaWeWcUqxCNaC79Xh80Oknwf/OvqtHO0NX8fRv6bUG8O82UTae5vz/R3HHzzPgd/4HMfD+Mo99N/xykM5zyur7tBf4xBuvf+jXpH6p+j3atZHSfC7rn7VnkA/tU/eyc/jHfDq3x7Gy2sP76g+ivlu/HEexic19Vzntm986Gn+zwmdlWhPPwfvd8Yhn2Q+NkT+XWF8jAM0/m9XYA/WPqweNLSfaR8Zqt2UetolwvfLmsCvBsa96qdNvvr9I+y/6vnV7+sfdMvvjPYTaK8g6dfh81LjKuy/dmzjyQP/wPGMR3/k/ifGVRkfq38t9Pzhvku+/gc74U837Vr0T31dEfj5AuV8L60h/buHfiw1fpX29HfpQb0T+veoT+c8UFW9P/O1F/kDKT8MvMqBntC3k3lRj3ExjmYh7ddAHvhuVRf45DrNw37qfdL7pfGp16GnGO2mIf8K+MP4JeOWHuD+4PzS/uw8c3518F1D6M8Kfe2o/wD5s4FlGc/K9FP9nP6x6unUzxmXa1yyccqP077vIbWBTt9J0k+lNPOrm3ZO4Mf6TzA+bWhnnv5Y8G+q8WSU70d796uf0h7teZ12a8GvDuTP1q9Qf134o15ZPbPztTL13a8q0O5y/v8VaLyd8XfzqW/8Xf7st9Or36X2hor0W73XEuPHKPey/o3w23i7daTVX16AjizOZ/BkJr8bsAzrJcn3J5GPZb3f6WeoflV9PPzXHpgsuB87jh9QzvFTHhSnv8e130F/PuOToX+z+ijK78J+mQX5qH1nA/Qvp33vteWg3/uu8upJ6PmH/C+0fzJf93p/Yh0pB++BHt93Mk6hF/j2MJ9vwFf9zLR3zgJ/L+NSfP/R9zUD+7z6cf2gO1NfORTKH/W33akf7s/DtEfrTw/9y+G/dl/twPrV+77il5QvCJ//8X4B/eqH1QsbH6N+eB78eJ/6xik8AP50yJ/i9Gsh/ZhjnA7n6/Pw7Tjp12g/l/pE+vmY9nbSc7Rv8H9b+JqV9o0HNN5tN3w2PlB7gPpW9bDq7/WrM77HeD7fLwznv/vkYNKfgv9OfJ6rPQ++5UR+d4OedvD/PHycqf8l9XyfTznl+3zpmP8Pc95ZAb7a1KtA/30fc5fvTjE+7pPu58rNAdD/MPifpd419X9A71H6c6vfV9+vfj8r5U/Bx58ZH/VbxwM5I1+HgH+w8xv+GsftetC/+j76oZ/1v+BRP/46//tOovb3EtQvTD98H7sp8mk89UM/oJHkv0v/MsOnd/Vj1c8D+Ab0+M7JL7Rv/Kxxszv086W88T3G9Rjnc5bx8f3jDKy/0L8pjIc3Tl7/pBdo97L+cfC3E+NzmPLxyNWDvlcF3ubQl0U9BenfGH/3a99hOUp/l0FfZfiXWnlH/xrRvvfyNvB3Q3CP157q+03h+3vaqzbS7nPah5gH2ne9x26jH95ftW++Qnntm9o7a7GeywG/5JxWi3acV84z55fvq/2X/md3fdOe90zvF95bvGd4v9gPXv2wfN9cfyzt6eotB9CO79frv/IZcEPgzxLG04XvR/ruSg/1bsYDwD/j34x76+D6Y/2E57P7wOc5zfdDfDekI3h8P8R3t31vW/tu6SB+3/dFjeP3fZ541y+wKvLxb+Wa+kjtPdBXgXR4vttpnAn7i/uC+8El0u6/TyO/fbc0fH8jCfz6t56j3Hjae5Bzy07gH4xXkVgEfT/Fd1PeAJ/vp6h/1Z6h/nUj9Y3rGuf7FcYJATt5nmFdNgMWVI5Ct3oe3yPTv0V74D7zqae90PuX965vkC+LjP+8w7glgUe/Dv28Bnl/9X2vCNx6dz98jz/JfPAdYJ5ton3fhzxNf/QTzAr95dG36cecmvOw/luZmdeXkG/z7Q/4KvteN/PkJvz+i3ng+0++++Q7UL7P5r1C/wjfr+nM/PS9gB+hw3NUUfdX5FEu6MppPIx+/r4LYzwA7S9UflKuKXzRv0b//43I32LaJ5C/vv/q+zyu+176M/seEmn9F8PvSxiv5bsBxnH5fsAu3x9Ezj7MfMtpOfIrc+7Svq29W3uIdhLtIp4zVni/VY8LfTm0vwT6QOPmj0O/8bd+x+DJPLeXM97Qe5n29Hjls35l8NvxkP++y7yeenWhu5/2Zdptyf8N9H+5w/sWk0n7zkV4nvWc+wn1fa/P/Vq7s+/3+d6E70/4HkV96NOOpf9t+L2JAvDd9+XVR1cwPpd088C//Yz+b7Sf0fepWCeNaM/z2+vaT2jnSfrhfus+rJ+b9kPP9ca16l+rf31D1tuXzLN3oeN+xtf3Moz70h6q/fNbxuMQcAT1Wrn/gl++h+OxMAK34jtPsl6NZ38VuvPTj1Df5PvfPwbzrBPjV4b5kA78pUkXdX1y3skBXu2dzenfU4E8Vj5Ph7+dGT/vHd5D1lNOfy/t4/qf648ext8Y920cTvi+XBra8505z2eeyzyn1YFe/QeNU1cvbrz6d3fw/zhL2v3Q/VE9pfuj3w3poP2M8V5Cfd9rfIx21df7Xk7xYP34/QPjtGuoH6Xf4fpMYr6eYX9T3+h+H8ZHGxdtfLj72wHvucxj97kD2l29H9GP/MZ/Ui4989b3i2v7fQzmRTLoTA68Rjn1/5+DV/3/cvCrz1a/rb/wLf02/xv/8rrxrPDHdx3SG79s/Aj81R6URTs0dPh+Vi344nsqvrPSCby5mb8plWucP86qf4Ae7f2hv5J2ce3k9QP7+D/aS3zXwPrg9/0n/Rt8B8p4tVPU6w39k+Gr8nEI6+tOcXR+t0A5qr5E+al9w31Se7j6y2vMX/VmyZiP6veNnzJuyjgq41P7MD9nUq93oB+Mo33351CfVIr+fw0/9MuJA7/n1pLwxzgF4xNC+7V2a+/HYXzXW4E/ru8j3StdgX4k9PfWD7wU60d9pt8JSc/5ze+FlGG9lAbeb5r6xtd43/QdDt/fmExaOVUUepRX2lc+Y/y0r2hvMa6iJfN+P/n6O2nf7UP7+mk00f7KudD3IFKSPqp9G3zea1+C3q/ZX/ex/g6T7/vA36pvpb3Qvu/57hx06TdU3fc1yFf/qN5xKnR63/S98ZXQtQI4SL4xf/XD9p28svQ/9JvxvZdW8Nf4FueLerYaxpfTfhPjR4C/q6f2vk6/1GeqvzQefh/1/O6R8WvFwO+73qko73vf+ifpl7QRqL/DF5Q3bm+C/vf0V/7L953ky3/fywrjw+pB35d3sG9UMQ6J9bgb/udg/Rgv8//pd6jv+UH/usLg189O/7o47QX6x+snQDr8vlZ/5oPf2crAvfUB6h1jPvt9p5yB/9MX1Nf/SftwJ/J9b+QV1sdjvpfreQC+Hdd/GP6o5wvjKdpQ33d19L/cBx/8/qHxBsblbqH/G/zuIXiGwI8ptK9/ld9h87tr+lf5fQq/S6GftN+nWIK8y83+WQiov10YX67eMTfyL/T31C7WV/1B8J7+Y+pLyff7Nb+xT/odG9/veN7zh3ZX6EoOHR9zrqsF/w/Q/kPU97sTrrM6nvto3/cHV/G/ctT3Bz3v7wd/QfB+S77jd4N66k/9nqX+pH7P8SB4XB+DqfcTdLc0HoR6+l38Gpzf9MNQv6e80F9K/6iOEYh7hfa+JX8C9Pu+te9Z+771C77fDX7fX/M9tqL0J3wf+UfSvpNckHQ11uVZ4L36UegvAtQO7Pf/fA+9B/+vDfzX8vj+FOX1pzeeson2PPGSf177Ev1bCJ4JxreQVl6E/pN+f2kb++0Sx0W7QyyCdVg/H1K/Nv0sSX5h1tsW7x/Bep4cgbh80HVRfwj6Z/yS7xH4nlA/xt84+i/oj++B/M18+Ixzx61zE+NTm/5tgs6ltKc91/dXJ0HvaeReBu+XtK/eYDrj8zntFPZ9XvK9n37tOwbg9/3QgUD1gS9Cl+ddzxVVwGd80/3Iv9/B77nP78MZH6l9Q79R4yWvUD8Z/bvOfBxIfqjfM35Z/wX9Gfw+ot8P+NzzCfmdfR+E9n3n2+8/Lgvm73rqN6X98rYPnre03zFflYu+n7rC+Gnmp++LNWA+zw70T+E7Z/qj5GRe/QbsE8Q/uN+5Dybj/OB+OJ5xTQuddwNj1O/Meauh+wx0v4Z8+Yj894GLgb7PUJj5eYb6hUhnAL/v4mShf77jOIP+659u3Jb6W+O3wu8tfacfAOWPBvoJ4/MqhPKW+g0YD+OE9cdZSn74zpTxg7n1o6E/W/RfDvyf9Ke5SP99/0A/vtD/a6p6s8C/bgvru20Q915ff4jgvSPfP6pBed8/Un/nuxnh9zc+pNx0+qsdWvuz8XVH1Vs6jtDveyjGc/udYPu/gPnXH7nVlfXu94Lj6K/v5BYGX2vq7wdvQdJ+x7gj8k39ruM+Ixj/v5H/PyBfUrM+1A/5XcYz9NNz1tPq96h/FbrP0o8E6MoHX/3edHnmV0fa11/E+37oX2k8cgvKaSf2/XX9ZX0XPy/0pQZfG+U/fPf7MsaXhPY57XL9jT9QP+V78UH8hfGsg+FTOdLa//3eaBGg7xE3gD792X3XT7923/fTH7w//7ue/f7rDeSNdlK/4/4O+I0H1X+4g3YU3zdB76f/hPH+2qty6FcMPA+ftPfXYN70hH7lZG3a9buqGeHHCe0RtH8Eupcgn1Mwn96g/iPUN36odQTixhvfpr+j+zflS8ciqN5Hv4hQ/+P3tbIE9wS/r9We+XqSfWkjsLh+bLQffh/vNfj3f01odkV4nHWdd/TP1f/AP1ZW2fGx3/YMycweWR8ysgqFIispu+xkFskeJSurIrJDkWyJ7D1SyAqpr/U75/d+PDrHPaf3P89zX/fe530+n3c/x303j435/9/tzFHYIGMUTo1EYeMkUbguUxQ2JV0/SxSei4KYqtmjcBP1E+WKwl0ZovAW+T/Qzuw8UbgwURQOA98dymXKEYUfgW8/6WJZo3BF7ijs/GQUZqBcI/KbZIvCa/DXHvw74GtpzijMAz3VyX8CPF9RPwv03wFPdsoNoJ1dlB8N3pF8LwL/G9NF4Utpo/A0sADybAfeS6SbAJuB7yTt16Cdx5HP18ozTRSOSx6FE6HvG/hrlZjy8NmSdCXqT0T+BZHvWdrfiHy3Un40cBuwGvKpCF0zoHMa3xPSv2v5Xga5fAYdxcD/DPwP5fsQ6B9P/lfkXyW/MO21oFxsyih8mCIKl0P/XOi4h1z2PQ4exu8C5DMhWRSmp9701FHYhvxytJ8ZeWWAjjLwN5T8ZdAzGfqS0P+5KJ+b+h8hj0J54Z/xuzd9FJ6EjkvQP430VtLnaO83+qstsCr0bIXfkeA/lBA6KNcf/hNA3wzaTw5dSaAjZSQKm9BeJ/IrwN/P4Hub9jrTTg3GxxXk9xzlV5KuDN53ofcT8E6Ez29o7wpy+5X5sxY8x5BDR+Q5/7Eo3Ev5DsyHUuQXAu9l8kuApwL91RJ5NCR/l+Od8doymD8tSPcmPxH4dwIfB/8y5HuIcZeced+G8fUe8ijB92cZv4mh5xbyTcf4XEO9yfD/DvknkVcz+B1JOhXzpzzyPQ+/H1KvBPK/Rf7b8LcdPrpQ/j34aQi/H/I9N3hSPBGFY6CvUdIonAn+stQ/GonCY8DHoa868lwA34/BR2HwD6HdZHy/7jhAfkug/yZ894mCmM6Um4tc5wFnA7+ifg/GeyXoSky90tBfk/y/kMsy5HSM/k1LuzPdR4CTwbeC+veonxB604E/K/W/h89/aP9r5FMFebei3C76vzT4O/E9OfXnkn5N+cSPwhPAlsB5jKtGtkc7zqOf4G8Y+Sdo733KPQR/T9bf5ci1Cv1/k/66TP0s0JUbOluTH4/15wzz/CjyyUg75VhXygOfBRZErqkoH4G+TuBtzfp3j3ZnMJ5eRH7vI98D7H8Hgb8AH1B+EvzMgJ6nGefZwR/n+AP2plwP5NeG9pcjhyXOH+jtA98dkfsOxklD2r9PvSHgfxX5/UX9i+BvQ70WpOPD32+sP2epN4h+WwF9c8Gbifq/Ip/L1J8A/4eh+yfoOQO+u8zbu3yvivxeA/9Y2r/L+NhKO9/RT0dJZyf9OXI4RftfgPcB7d92XaL9+uD33HiCcV0lEoULwf8P8Dry2Y18b7H+9AJfT77HY36WQz7/g64r4O2PHOuSP4f6e6FvEvQ/gXxupIrCa8CG0LOf+fMO+A8zvpaAfyrfj8JfDuj/Ffrqkf+S6z/y2kB6M+WLZ3+0/G36Zzjl36Hf+wI70H4+8ivDX1H4S0M55/O5SBQ63xMjx7vIpx/1KgO3AauwfzRh327A9wbMr23QXxB650D/u6TTId+0QM8/N5BvEeSZEzqvuZ9Bb2vwl4LOmZRLD/1HaU/+36dcDuSZJPWjdGV0nQf/ML5Xov4l0vfIv8T55Q3qfcz3Ysj/Tda7bsC3gPnhfy/0/I7cDsHfh9TfxnzYTP4F6H4R/p5GbsWA05hPbyP/V8F/hPqedzPSfnfSx+BvEeXa0c4A6PkN/oY4/6BvledhyiVjXD0N/sKUz+/6AJ5xkSj8mPqn+Z6M8km8H8DPcfCnJt0V/pJQvh/5zcEXi3wGxovCmpTLxP55gfxUtPOPcoL+w9D/Auv7SecpcnqN+kfAe5l0Z++tpG8wLxJRfy3rayL7kXQL4BvI9VPWn9LQtyACXtrvCn3VWY+m0J77fxz5daHvEHSdQE6bKB/L+pkcmBGYCzoa0y8x0NHVfYb8DLT/Dv3SFzgbOi8gV89znvPSQ+dQ9pUarKNbTEPvLOpdJn0jEoWrkU8MeNxPPoC+Kch3HXhLen6Aj1+Rz2HmY1faPRjctzaxPiyiHz9QDuSPg7+HtF+H/NdZ30tD/33oDtf/KdQf5vpB+bzI13vLMPgZQr77nPviGsrvo9wLzI9RrAtzqfcC/FSnfHzo6eE9BHr+BH8m0o3g6x545pN+H/oSw5/nkOTU74vc4ug/9Q7uh78g90TgW0t/5aJ/dkL/FcofZr2dSXsNoXs17ZYgHUv9P0gnpH4L90H4Pwh9fwAvAyvQP63hXzlvBNZyvoG/MnLw/l8A/FWY156zwvPVYuqvQw5p4asp+P9C3jmRz0LoKQg/39PuOPC9SPslmR/vg/9T+w3+b9FOGvBUg95p3tvh/wf1Be6v1DtJ/kro/oB5PxP5fQe966j3mPcG6Hkd/lJS7nPoGE17x6E/vvst4yY++e5/uxnP7judGD/jqL8AeSyEvwLQfwp5xULXFeDP0DcIevZwv0kAHx1JD6bcUvqzHOOyM3hGIJ850HuEdmfB7xny1yC/E+oFwd8aevvSbkX4bY880pPfEPxb0EN4D+kMvuHeO8Gj/nY8dLoeuD58R7ou8lR/tgu6DyLPt5Hvt+SfVf8Hn/OR73LaLWa/gudd8G9k3PwNPYWA1agfD7w1qNec8+YntNOZ/bkIchsNfXugz/61P+3fS66v4NvDuXMp6Zzg6UN59czPgWcE7TsePqIdx0V7+GsM/59C/1b4ukH/H0Uu/5C/OQpislA/DeN5OPm3Av3vPOpfoZ3alKsIfVfhax379GbSBxhPOfj+NPvec4zHIbTfALwH4L+q6zf4r3G/TANfDan/GfzZf7mhK7vrJ+Vzk98J2AN+hlH/AePxPvAC60sN+q8J9E1G/uqrlpNuRbu7oPdZ+qc542MafE8BTgVOoL56fttZCP9P0v5G8Ffz/Ef5cuSrn1nI+tCY+iUovxK8DyhXHbgbep3Xznvne3X5ob7z1PNHac+X0PMe5dwv6pK/3PuN+nbGfz7kk4P1rTR4FntPU3+qXpZ2D1Dve84f6oPVD6cK9MP9gdoVFpCvvaEc48lzc3ieXs153vU7W4IodL7v5f6UEP7mUX8D6S/p79J83816dIv+q0b9qsCUzL8pjF/1es/AX33kPFD9F+N2KOmN9HsD12/P59Q/Qf1BlN9Cugf8jYPvOuDJzHzuwDyOo70PKZ/H+zvps+CtoB4auapneZFyKehH73+JobMedP/I/PT867hTj+35Ny/4rkeicAPtfAv96ovyUl690VLtC4zHPPD1JfOoC/SXhy7PZ/Khfqgi+WNoZznp/tB7l/X1c8q7D9+Qf/q7KeXbMj4mQF9f5Dc06O/HoG8k4+odvu8Aet7/gfWzBeNLvWAf6KmCfGupN/d8Bp032X/eJX8s6ZfVw3gvhu+f6Y/a9GO3wC76t/cz8peqn6DdJsD6tK++/Sn1gPCtPl77Z2ifcD/Unmq7j1NuJfjVR6if0D6tfkL97l3wqudVv/sN7f9C/ZfQB2ifHYjcLyHvJxkPzejfzfTvfPUT4H9D/QHrU0rgtGD/KOp9kvaKkD7C+uF+9Snlj9HONsbfeea149N1dwv98zFye8LxDb5DlH+W9WELfJznvDQb+Xlu70e/tab+BejzvOT66nlqDfjfR/7joPsP5DMtGF8r+B6eX7W/rFX/5r2T/PXQvR16/1S+9I/9eYr69vcN0oVI53H/4fvv4EtO+6Geowz8V/H+yTpwhnrq4R0fjgvHif1dnfY934xw3wPPLsbNbu1bjL/nKbdM+yXwG2Bp5KR9cyjtqi/QvtmU7+7vXVlPT2mnYz113Xf9nMn4y0a6Cng9z46BvwGMr+mUG0Tac8VF9ufCyCcH3y9Rvwnj8T6wPPT8ox5Xe5vrGHh6wk83vmcjvQv8cxkf6p8XgKcA+dc99wATMa48xzTVvkL9Jz2nkp5He5nVj5DOCT3uzwNJH4afzZT/CPkn4HufSBQ2A/8cxtcrlNf+3ge6tL/nYvy1BM9l1gvXCfXXvaGvLPzdB89d2tNv4zL11I8/zPho/WKUT0x9z2fqMz0nul41877COtOc9E3wrud7T9r1njdQ/QzzYSftt4pEYRz586HnE8cV8srmPZNxtRP4C9/3gCdLcK7XT6gj+NPp1wQ/2/QjQP51vP/C/xrw/KN9H/qvw98p0huor30sL3i0k6nP3M35YRPtnkN+xZH/CugvDh7tRBOZv66v2/X3AO8++OvHfD1FOz/RztuRKNzvOUm7JPX20v4Z/TPg+4L2Z/hLz/6aAXhTvxjwX8YO7D6TBjoT085M+KtMe085/+GvEecp7e512Y+0x3vfKAXej5FPFfAlgP448I7wPEK6Buvlbv3qaG8F+H9kXOWiX0eSTqs+A/rVz7oPqZ9NBv/NkEtT9anez6iv3qQa9dWfjKHdFqxfq2i/tOd96sen/i/U24w8tF9NBE4I7Fltmd9tgI1oLyX5twL/CP0lPqOdGO+r5FeEjqTQV4FxkQo5Vyf9JnLQ70D7pPZK7ZOlWO+q0S/f0W5b5N0beZxlH8riedLxSXoTeL/Wjwr85aBbvdQa1qsczh/afcg8GkB6Iv1XAHxHvS8jj+H6MbB+jwG2od5bjM8PPB9GorAvcBnjvzLrgX44uxj/Kyin/r6Q9j/XEfjPCD+ZgJmBfcB/hX7vS7/vZZy9AD/TaLcreFPwfT7t/0r5y8ALwGTB+S8e8nB9cr3qptzUFyKPeMjH9bEeeOsDL5J/ArpmQI/3j0P6b8Hv/5BPZ8pvgn/nU1eg8835lQ16bkFfSe5fhWivIOMuP3zO5rzaEvpKg9dz8ZusP+pv1zOevE90g/5XwT+a+XaUdq+STgBduZBPb+ZJVuSaB/60b54D9qGedk79m2oyjl7xfgC/2hV3Qo9+rd+CfyV01aHcNvB2Uf8HXvfB5Nq71DPSn4Ph4xjpXfDhudfz7r/+fvRvL/Ad1M5AO0XAX4v15iXy40hvJ10WvBUdN9TLq/0e/Oo91PcVIn8w9HwWjK+W0L/L/Yd2SgEzk7+UflNvtS/QZzm/tZNqn8ulfYH+u67/J+2nYv/R76Wq9qzA/0V/yh3AnfqHwm8bxk14f0wR7N/VaMd93P27nfYK4GX9dfRTYfz/jZxSk/46EoVjWe86UD4TeL6inQ6Ur833TKyz+0i73utnGvqX5qOcftn6a6eGn/bUKwP/nbkvXkD+1cBfn374g/IbnO+092ugx54LvMN8jgX/KsrvAn9v8M1yvwVvK/1DwLueclXhw/tLcvDp960fuP7f81i/1NuF+ryq1H8WvN6PDtL/4XjQLqh9aC3jeRDr8GrSQxif2jtP0L520DOMH9cl16NPgA+1z4OvGHIZRToL+L1f5tG+BCxP/g3GV3btevBTLwJf3uf046P9Qe7vgX1cfaz+efoXNNfvlvk+HPnrb248h3Ee/anfEX46ATsDd+ov5Lzy3Af9HzB/MyPXPKQvWt77C+WNl/C+pH+s68PuwP/X9UH/K++X+l/Vp34Eut6g/G+UX0z+LNb7OcDZwEnU+5h0KcofoJ1l+v/rfwKfC6j3BfLTHtWPctqppkGPegP7UXk00/6kPgmovvQB9OgvNhB56jc2i/rLGfc/ux6RrkL5kZTXX+eeen3mj+fjGdTXL/cLxk9o90kFvuy0v4v6ceSXg7++tDeZ9b2p84ryWchPQvl57tvIsxf4Q38p/aiGM7+me1/XL5Dy3xgvAT79stUnag/3/OC5wXPEIvAX5T5TDLiT9X8l/ew5/CLQ+2U+8B9nPumnGvqnhv5/3p/0A/yd9bu3dh3Pu/A5i++r9ZNnvVVfrZ68hXEkgf34qvd/yi8Bfz7k38n12XsTcAP5W4N4IOOD4pgfr2nvp5001L/o+KC9U7TTie8rgEk5/+2nfnfOt96PU7H+tQfehd8l+v8w/kZR7y/qpQS//nFfQr/3pUaRKDSeQ79n42DuU+846YvAGPgdy3jazXh5lfLqefNBXy3W65+pV5t0PNqvTFq9SgQ+9M/rSLtPg/cj+NpH/3q+c932Hqd9uRrpxtp9KRfGDxk3NCCIH3oRep5Ezr9Tfzb41Gep32pPf6ejfgXSbxlfqN6AfOfFpuC84/mmN/OlZiQKj+tvr/2P81Y19AMTGCelwDtPfw7pop1q0Kt/qX6l+plepP0Drlf2r/6T9IN2s5KUX0v59eoDA/u8do4CtG98w26+PwCf/iP606pnVL+Yh/4dTv2XKdeTdHPk2I10av2pqK8ebbP9z721EeN5Oe1rH/ScEca7/c34rcn5RP35Kv3pqKffpXrLKYH8u9CO8k8S8Cv/VfS3gf9Y6K3NOIkDpib/MfK7gHc561c/1q+U2q+1J4B/FfKZiFzcf0fA73TG7zzt6+DvxPhTf/YX+pEM0JUeuBz6btF+E/2tkMe4YP103TxMvuun+1Qf5LkM/HfVD7Ev3aO89zDtd/pTFP6P+E39j/SDDv2fW1MvfyQKR1PuIvUPQY9+mUeAnv/C+AXngXE+4+G3Nd/bQN8Z/bO8t5Lv/SyW9W2PdgXWB/2N9C9qG+jHU+svDD7tFp5bjWMzfk1/c+M4U1DP+JsdlO/JOKzDPFH/pX7d9X8D8lS/npr9MT9QPzDlb9x2BuiJg4916rMdP67TfHf9jEd/xACzQE/j/7gfqM/PDn3qPdSD6K9l/+t3ZByjcbbG13agXzbSn+2NKyB/MvgWUX+qcdnkp6H/NunHRXn9ufSH009WPznjfwZzntLuqD1yC+1Mpd5t/Q6pX9/zIPwbT7uB89wo0hfo9+asC7k5H+ZCPi+Dv5dxAeAvSj897/4In38jnycY35dYjzowzjoZzw+9N1nfN0BHA+jQXlAQuRr/aTzoBOjx/vsG8hmrnzH8bQL/d8D70HuGcqlZP5MDM9F+TcppH52tX4L3cO3ojmfwjaL8Rui7z7htRvv3SF81bjrg737A3wbS5T0nup/Dn/oF9QoJoEv9wjnkrf12KTAB7dcK9IXqD6+BPwnrxzrmXVLSdZkPq5FHuP/8yPyPQ47GYRl/NQP+PnP9hK45+jfBxwT1/pR/l/w3ab9SDHyqP1P/qJ8QdO3wfgA9BZHPGe248uv9zfs1fGcFZgMm107JehnGKRpfsZT51hb4DevkccZZGJcqv9qH/gRvBu97zBP30yL605HWPlUcfvLSX/mA+YFtjVOlXeMLntefj/Vngv57yO0Tyvs+wf1g3wr9mysy/tJoJwOqH82pfxEwB/AM+I4wnrS/HyV9Gjq+Cvw39YPQ/6GMcbHe/71fk17Mevol/K3WDm38OPIvAyzLed44HP2RLnOOThj4J40J9Lvqe9XvjoTe+fDxKvJJR/2XtJfAr3G4+tlpD4ih37QXVKC+dhvv5x3B1532Q/8n/Z4ys377/sLa4P7p+wv6LxrfoB+j/ov2817yK5P/O+1rD3a9vwc92oeLcT6tx7g3DnCZ8QHQpR9z6L8c+nPJp/4P+jVr9/A9B/2bD7MvFAUeAWqf8Xygv9PrwXkhKfP8R+gYw37v+zPXyD/JuL7K+CqA/K+pP6b/ytNOV/djxs9i+JrDPFFOxvXqj61/dgHWt3ng1z9Kf6kkyPcW/PwFvA1MSftrgnjAVaT1ozZ+zncRjJ8znu42+Z+RVu9sfLP3uTXQ/wz5yegf42mNrw39pdOBPy1pz+fa+RLoLwOeSpRfCn7fa+ih35/7vfMReeinvo7xq3/6d+ozoD/Uf7puLaBc6H++xfgH6P+B9EHK1YZe9WPqy9SPvQJ/L0O/fqY3oUd/OPVyK8hXP/cB+Rn1t9QPCPkcg37tnYvUB4Ff/+t6wfzT/9pzt3EF2iF9P8T3jdqrz3DfC+6P2mU+8l5AfhhfUMvzj348zEft/r31l4X+isyvSvpRUX6U5zv91Zi3J6G7D/2nf0AD/YfVjyGPvNQvBt6VtHea/HPwl4x99Kx6XO/HznvoP6d+hXY8Z6lv9jw2nvo1oMv4mJzUz0//eN82nsF4B+/f5ynvvHmB/tpP/YKkPTcMoH4j+NO/KXyHR/+mvsilDt/jMb++DPTHufQL0/4C/mWs16sDO10s4+grzmNfM6/itIODPzyvntYfjfzFrN89oasR+8cw3weDrv3GlZNvfF1n49fhoyvtXfP9FOhPq3+y/rWRKPTcds73GbTz69/nfYrxOQY61jIeRtB+CvD1oV3vx+/AV19gL6D6K/XTvkNUC3zqpwvTH/q7ap9MD70toU89q/7v2h+0/2qf1Q6s/bci/XqCeVsreP/J/eOCcS7uW+DvDv3GrRvHbvy6/qT6DepHqP+g8c+eu8PzeLi+6GdUnvb1G/xUPUXgr34A/Cn0i4D+N70Padc0Lku/NvDn1/+Ocpeg61X6/y3lrT8M+5n6bOe1+6P75QTtkaxL7v+LAjtqK+rVcv103dO+xbhcxPxbCCxOfnXG+yD24fbgex361O94j/H+Ekv+NfXzwOzQ1zR4r2QS9fSr8f2STYz3zfplAi8xPpow/oxfMp7J+KXd3PtmUq4s+bHI4yzjYz/j4jzppNAxnXLu53H6g3p+pJ0Y+M2sPxPjMyt0GX/fzfsS+Gqx/n0OnV8ij8LgG0H/f0672kceGO8FVO8Q+jek4z4UvjtonIzvLxZi3A2nn3xPZzL7YS/kov9eRsbHc/pXgnev4x/8PyR6FJ/vPPr+hvoW71fHnN/INwH0+K6L79xpn/rNuJ5IFGpPiqOc98EIdHkvPI18zoLf938+0r9f///AP2cM/VGE9sJ4AuMMXF+Vt/HNxoEa/+n+1p72PR9sD85/+lGbPxX8vZm/bZgX7zPe3F/2kn8mGOfaX/owLu6rdzCOAn5mk7868GPUf7Ev46ZDBDzakaG/K/02j3LHmf/p6D/j/5LCn/dA9b/GvZSE3ryUH6r/oeOF+qE/2suUX6bdP4jf0++7DfX0+x4NfRnVqwB3Io+BpL0XP6RfmsHv84F+rRHl1a+li0RhGL+kn8L30K++Qz2Ieo8lyEO/cd9BqUn72se9n9Q1/iSw539BvSzwdQE+XtI+zbp5lnl/Hqi/4+3g/Sz16erPMzNeXBfa+t4Z8vE9AO8F3hO8HxSHf+/Vq41/096nXzry6Oo+jfyGwb9xLGE8yh3OP+o9wvcFPF96riyLvDxfjoEe32MsD9+vMX7yw59x42E8+WPEGx+lvRegs7L+TL6PiHycdwNYP4zPKwN9rm816T/9bUYjh8TG70DvU57/aV9/OP2NjjO+CvjObBA/v4fyP0DXVvBrn1yO/GJZl5aR7gGdRWlffwv9MXyfyPcBfBdgL/V8H0B/L9+h1Q8sM/SF9gTtDMOgN7v9SrmmtPMN/fcT4/+O/i/eA2lff+vpjGvfNdN+P4r2SjFOSqpfhd8NtOu7Z/pn66+t/2+7wA9Y/9+0nB/uQkcd5LEe+mtp16Z/F5KfIHh/9VPgaPqjD+VD/f0p1jvXhy2cW3xX8b5+oNC3h34ZrX7V/Rn6+iF/z8Hh+bep8WXI03N9Dd9fRE7taDf0f/b9stzgcd3w/bIH9Md2+LpP+lvtedRvQH39cPW/9b2OUuDVD2ek73B5/6Z8F/D5jk4YT3id/sro/Q+6jBM3vtJ4cfWR6if101Y/mY30Vcpnpdzv0Ncuw6P0NyN/JvW1c5clPYX2rkbAYzwp9cL1yvjQaUkf5cd40S9ZF7bAV0nm3yHa/a93OasxfmPYF4yfMZ5mEPgn0X586J9Mehb1c+hPCl/Gh2yHP++9+iPrr9za8xntFQ/mbWrqe27z/up91vurdtv+3p/AM9H3IchvTL72bv25b6o3pp2J0PeK7/0g35nBOzMrqK99tzfzyvP4ad+HIF+7nnY+7Xvhe4O+Q7gL+n2P6TztpWS/870mzy2+21aLfuyuPRn+H4cO9V1PI3/f7zV+xvcEfD9A/5verNv64fi+wi+eD/Tno77vtPam3WbU8zyx2PWXfN//XRuc3/QXSQu/xod3d/8mnV17NO1vYn3TX0z/Mf3JfH/B+FDjQk8E8aGeN72fe+5UP1WK8TuafS4r82yd8Rn6BUOn/jbG53j/L81341rUXzk+jyhX5D5H+5v+iep/aedP8rXr+t6sfphbwd+Q9eZnxs9V4x6pn5590Ti9bvD7PflnGR/6l50n/S54tLOMNd7Z9TawT14Bf3g+nwDeHHx/I7An6f+Wj3Ze4/uPkSisw/x9NfATfah9kXGdB2icofEF+p3uA38s9DxB/XLMx718f8d7HfLN5D2G9JvU0790j+OL9p4DOr6991fhe7vg/n8D/u8G50DjFYtCX2mg8ZeuJ78gf99d9T1W+1/95njW/TqcL5L5/iXjR31ZVfAUDs4Pk2jX9/09Rzge60DvmcA+q11YO7FxZL5Prf+Xfl+7gvcKnX/az26AT/uZ+iT1SxOYv+t93yvwa/3XzxX+/T+PM9Dr/3osJl+/SP0kM8Gn/pGjkKv+J75Dpf9Jbu8l1E/C+rTDdzrAb3yLcRLGt/geku8jqc9+AXnkYVwc8b2mwN73t/Ez+nOQ3530z9xn6qrvJX2K+r6f43s5643Tov/C9+F9F34q9OtvN4/2loFX/7vyxo9AZz/fYzF+GHqGUK4j550b5Pt/EP4/hPZj/x/iRccL/er5ogLzcyfnguvAtkDPf76r7HvKT5Ku7fqlPTuMUzaejP6ZgJ/HRmA98vvq/wOsAb2Lyf+e8ZOJebrZ8RTEP3re9/zf3f1NuzPQOKv/ReDnP97X0P/4Avui8yycX9rPK/l+if6vyNe4rP96B9Z4cNdt48V9v9D4hu6UN76hIfnZab8t7Q6Dr/j611NfO732ed8v+zjwn9rA/ud+G8ZfuU77vofnH+OufU/F93fC9wbUs1z3/RntL7TzJOVKe5/Tf4j2k1LP97n1U3oLvreox4D/7cRLqx/23aaHzE/1oeOhW72o699Q9t1naP8U8tlL+29Qz/tYH+hNAv+boEe/TM/7+mf6LnYJ5NcMPL5vWg55/cX3h4yf7Z7jyd+n/Zr0JO+vyNd3jeTf+HHfZf0K/P4P0knoH0B+FuSUVf9Zxxtp49KMV/N87HrekfwR4Pd9X/9foqz6AePjfF/R+zLf08GX9kntlu7n2i87IV/vZxmD9wm8r83gPDAd2J/+9n04/aX60X+ep7X3Go/p/uW7eO5f4fszq4GtKD9EfRLrSgzla1JO/cQ9oO8Pq59Yj97pCvLZwfdr2gONAyZtHFoV2r/D+TgLeN4GzzLa3wp/3v/VB3j/X8N6/JNxW55X4D8h8nS9Uc+vf5fvW3k/0T9c/1Pf3Xe9+Ro8x7QHMB/9fxz/L0d9rPaRXvSjdpGM7A8N/8O/1fdCjJcuRnvGU+tf7nkhJXQUgI5s8O//JdUC/1zoaAwdvh9h/Lrx7L4fMSbQR7iP+z7i68jPOMDL0L8Eufn/Da7jYfys99mT6n+cF96P6F/tYivVM9G+8Q3GNXh/nsL6URA4Hfg85XqBPz7yG6t/BLAi8jJ+1ne4XD9cT0L/cP3CnyB/lf77nEP02x+M/GPhS3vITNrJSvsVoCeM3/L+rX7/O9+L9BxD/xVy/VUv6T5GffWCxt2G79Wo/1bvXZJ1yvud/xfju80dgMlZ/2LhW79e/XzdN9Xv/GhcGvSdBn8Yv3WA8aDe0vub48t7Wxv692vwtyQ/9B9QX6ke83v4nO/7A6yLxYFjg/XPe9FTyHsW7fn+r/6VxwP/Ss/Hi6BnFvmhnnEu54cL0Ov9rofneeShP/gI32uHf/0mSrA+yP8d8mdpF/cdBfD6/0pVaS/0k59B/jX4WQEe/WG+oJz+4/p96Qem/5fxlL4HZpyl799cYrxcgc/bwKzUV3+aHrzqUQvSL6E/iHqi30j/Sdp9Zz943H+0T2ZiHGqn1P7gu9r6GYbva0/ie6so+Pe9PP8HLYz/MO7D/zczrtx48kzGg8B/f+1Oxo+ozzHenvwwPsr/oShC+/oRhe3VDvQ+lZBHPOprVz1Pff0xtK9G1O+BV/lpf/Pdb++dvn/uO+A9+e776vXY/4Yz34Zy7vRdmPLgfw383q9jgQeC+7bx9negIxVyq238Mvn+H1bHYH1boN4jEoW5GJ/dyA/9tV1vrtJ/6gfVC6onXEl7xn25b7iPuH+05tzku9rSp59uZf2qWD/fY79sGuz/pYJ3pP59Pyr+o+1Jh/q58cF9zHX4bCQKw3dFtAN5/53sfRP6F2vXYn4VZb/x/OZ7QoOof0u9tPoI5NuBdBffR+acm570BOg1vkA7f2HSxhd0Z3y10A9Xv0P6Nw38qT9Rn6L+ZD/96/sTvkfh+xPGL2gnKwMe/wfrIN9X6e8AVF+7mPpLqbcXefj/IHn8PxxgbuAS/YHB4/+Z+H8nDeFvMPx4r8rqeQ/86ju7MO79H6qEkSjU/ug5d0gU/OufGGu/ADMA/X8m3xWaCh3G3S8O7kPek/R/zQv+Fcjfd/TU3xqfOlT9EXIwPkL9svpO/4/S99fUf6rPVM9ZDDzG7+/wfmrcGXRto/3wvRnfoSlG/4zXv550KP/nfJ+BfO9D3n+MPz3s/cP4B+gcTPoZ/ZbcD6CzNeMhhfdE7jeZoGs055NBzKu6nD/yUD99sD+5X7k/pWP8GB9qvOhp4/k8X4LP+7z3d+MzjMewPf9f0/uc8d/e87QPvRm8f+B7dvpPGA/UGTn4/66+m5ZPvYb+VY4n2s+IvObR7nza/Z3xNZT6+k/rT63/tHGT+t2F/nr+74n/kzTKe63zn/rKTf2A+gLjNXwvw/cztAP5vrvxZsaj+b67+g71H/6fivoP8fu+Tfgerf7O+j8Pp52fkNMM6FitfZjyMbRnfItxLca5nIP/8P/u/B8854//q6bfq/6wUyjvvHUeZ3N+wIfvig4m7Xuj3l/bgTfUY1VGPt3tn2BeeP7WP3or/bARWNT4ucA/xHt3Tvq5ceA39m98AvVDfyvX+3m039H/I6aecWTGj3me9pzt/PK8rf+h67R+iA3pT9+XfZHv49Rnkj+Qevm1zxqnB31rOZ88zblIu5z2feONjD/yfyCMP8rI+vV2DHxT3v9X6Ufa/dj9+XXwqy/Zon8L/VNC/Tn8+V6E70hof/uWeq7/4fsLvvfnO4Clg/cAMwf6AfUF6gf0J/FepL1EfU4YL28cfU3Gg/GIf6jHBxqf6PpWlPYfUN717nHG3SrGT4T1PRXy+T/lvIHGeJx1nXfYz9X7wB8rPGTv8fjYihDZO7KKyMrKVjZZRWZIRlZWJZuk8GRlZI8yQkZWMp9vtgYR8buu3/v1cl3e19Xnn/s673POvc6+7/ucTyR11P//sqUNYOZUAeyTI4AJgZkiASyRNYDTcgUwb/YAto4J4MAsARyUO4AjMgVwWOYA/poxgHUpX43yOUgXI78D9DpArwvwheQB7Av+98H7MfXrw0+enAEcmZLv4LsNvSjyP6f+FT4vpv5flH8xQQBPgn8T9Rejlz3IN5HyValfHP6GIs9Ryhen/k3y49D3JeD4bAGcRPl3aJ+G5PeEj1r5AjgOfPvRT3PoXcsLvfQBPAifScm/A55c6GcNdL95KoD34a8s5V4DHgNPFPLWAF92vv+JXhfSP6qQXxM9X0KuLvB/BLnyJg5gHmAK8VD/PPV3w8dg+GuG3LvAOwn2NsBf7aQB3Ih8+5IE8Drls6HfVdEBjAV2of5a+HsNvuLQ12Dw3YC/npTPTfsvRf7PyZ8FHIuersP3KPrzhhQBHJMmgI2Rvz381Efu5NDvnCeA2xxP9IMK0H0a/aZHvjngPYA8LXM9WU88EfRyF9g4AFEzkDcN7dAX/JlJv0T94sh1GD1Ujx/Ah8CR6D8R42oA9EdQrz36iab/Hn86gJORfwzla0QCOEy+oed8Mgz9HESv1ZnfqpIeRfn84K0HLAgfJcFfPcuT+ZY3/wH44vN9N+UT0D8XwF8s8vSAr3norxv10qLv1NDvTfvYL5ail42kh1BvDfo8mu1JfmOhPwx8d+C3Gfkdwd8A/ho579Geaci/TLsVAv9fpHdS/kDCAP4IvEf/vA+91OCbS/pt+P4B/rbA3/vI/xpyDqX8AeTNRn4c8n6E/raBPxH40pK+jb6PIW858KaA7/HUPwg/74E/L/XPka6TIYB3wNMXPLOhlyhRAHein8SkXZ8KU/5r6JSi3Nfo9xr5OcF/AbotGP91mL+PwndDypUB3w7oXWae+5v63ZEvJ/Uy8/1v9J0K/D+D71okgEng7wL5fegfS9FLDuBB8L4L/wWdf6jfGHp1yZ8L3Wbku5+4QrmspDdRvjL8ZyCdHXkzgWcL/C1hfisPXylJD6f8evgqAb8VmAffpn2KI197yqWh3GXwT2Xe38+6uA84i/zw+v1DaB1fSXnX14TQeQe5e5C/EbgIOM92RJ4ZyHMW/uvD/w3wtiF/IvraR/2bpC+hnwzIm5d67hec93ZFAngI/PHo/wnQywzwpaV9ajM/V2KcfgbeaOo3YF54gFxNSDeH37epnxH6q8j/nvy/0H8/6N8m3Rf994SfavC9Gvq7yXd8jOL7afTg+NjJ+lue9WEE+CvAz/l4AXyOeW8T6SXgG057zoZ+feqdYXyfQr8PofuQ/GeQ7zzpFJRvTbnF6C8/9efzvQnlT0BvKnxvQw8x6QJof87L9/72b/huiX7SIu9q0ulJj2adGoK8M6BXA3xxlC9A/8gP7A+/uSj3L3JdAt94+Hjo+sz+5ifgQvp3QvTTFTwF4Dup/QD6lRhv1YCVgS/bf+l32ZIF8FnoNwRfFeStCkxJ/XnQKcv4S833bXxPz/gag7yTaJfJ4N0M/w8CEDWN/I2042/uj5DvXb6PB993pL8C/m0/Ar/zd3fwLo4E8BPkOMP614X+/Zb7E+g2hf+L6MX5fyDfp4B/iOcb+ChAffdXtZ1P+O75rzb6Hw5/p8kvQPkC9Av3nYPIvwkd968rAxD1PXIPgs+Z1D9IvuvjKtJbyF/PfiS36zV4mqCfougnD+NoAOU+ID9C/SPopQTyFQR/EegudJ2lH/9G/fXo9yX2LRtIR9DvZfpVTehfg79PwO/89xx8LqA/VoIf94XN0bP7Rc8Pv6JPz+3H0Xdn8ktDbwn9oxH56aHfi/pZ7dekz0C/DfRPAyejh5zgWwvfa4CHkP/1SABXoJdb7F9KsB68Qv4j6I3yvAR/laAzBbonyc9P+cHw5/zbkHznYeff2nyvDb1zlO+DftLBX1vSf8L/W7TvZfQ9n3ZaBv+Vwb+X9SeOfdwj5slM6PMF+HHf5DySif5/l/5RHf3UAK5FvoKe62mvPNDtTnqj53Lkc33uDH73k92BXdHrJeqnpX488Oag/nTwnaa/d3A+5bvray3kKcc42gMez8fH0PdL0N8MrIm+XyBdGXmTws8fpEuRvgnfv/F9Lnw0Qb8zKZcGfoa4z6N9j8HfCcZXS+qPpf4i8VLvNPNfeP/gvuEZyuVGvvC8Xxv5p9OfEqC/f8hvzzzUEv0WAX80cAn0ne9dB2aSLg//lcE/Ej7HU875IY78/wEL0D5z6d+xpHO6LqDHhPBXhPYpaztS7gDwW/Yjn5HuCd1B9I9p4FuEfo6hh8LQPUi6hOcx0tup77r9IjCGdlyHHitpN6TeMuWH/3XQ74wczUjfhc8MfB9MvU/pH21ov7G0zxjgJGBRyue038H/J3y/hH6vo/fuzBsTSdeLBLCT53XShZErMfI7X8WRv5byzl+z3U9S7yP3x/Azkfq5+T4TPIPoX1WpvwC+yyDPUs9zpLUbrKHdWsFfAfZzI9DbQ+cX9J/HfRb1RoPvdfS7hvZcDdRus4j8VvDtfPgMfCWE/7XwNd3xQf19rs/a56AfB3yE/prDT3zgV+AZT/482i2aebks7d8cOic5z7RCfvdXPdHPX9D/gXZ7G/yp4X8T+ZuQ0/3z5kgAT1FeO+u/foe/ffBVjfHxBetJUfJtvzbwW5rvaULnkffQSxvG8wPKjSM/bN+4Bx+/sd4N9RwCn9uQ4xz9ozx8HkZPk9FP2P6u3f0o7VcbPKvoTwvJT0H+FegehW5f+FsI/46LP4BdKXcB/vOwvs9Eziykb1G+F/hzQ/dLyh2mvvvPV+DTfaj7z6eQOx7w3cRPyvU9873n2qyuL9oLoaddrQN8aV8bTP5wzxnU20/7Hkff26E3APz74T8V+feh3xu4HPxv05+WI2dv0mnB1xa6V9F3LeBNYEfy18F/Dfg/D59ZwDMSvvLSPlcZH2vYV9Wm/ij6WzT9Jwf5e9DjKPrvy8iRHviO5xftSBHo8z0r8Dj5BeH/efQzjfZrQdp9Vlf4zgd/05CnKOkT7D9OUe846d7Qr40eipEuDL749J/vSU8Cr+eG5uRfQr9vwncP8Ayh/c4wfz2k/cowf/2Ofpeit+/Q23Xw7EEfy8BfyH5I+zRH/megtwS+EsPnr9A/QvnTyJEAvbh/+AK8Yx2f0NsFvgvo7VvPL6R7ka/9Tb/W7JA9TvraiaVfk/q5WY/bMI/nIl0S/tdSvzv1poM3A/y/hD5vMs/10L4UCWAX6icmbT9PRv8aRnntwfpB/6F9M6KXCeTvge92tN+HjMdvqdeJfvoO9RO7Pnou164PLMH8OwH7V4R0IehkoL9mAtbh++P5BbwV0e8u12f0M5n8y9D7gu/6EbWbFEK/FSifCf1fAm968v9G/42grz/pAXj0M+Uh/3nqnyf9J/gPMH+UhK8O4H/Zcwb8ZaN8NfBeAF8Xyu8Cdkauh/AzOhLAtNTP6r6J+u0or19VPR0g/7Gflf5V3HmZdkpP+95nXP8CvkXU24m8pcmvSP/+m/42Rn86dDfQT/QTpQH/q+QXQn792+20g1LvO/qj+rpGerj+RPhqqD2X9nX/sw587oPc/8Tnez3kKU/9E6RTavcO+RHWQs/9VzbkyoeeXoG/dzk3DQRqH9T/mpX6+sfnab+KPJn/c9Yn8y3fPuSHTOz8Rv0j2A/0n7i/WED5a7RfXcq3sx+F7Gv62XYDXwut/6777gOWkx+r3Yb86dA7SzvE0W+mAS8BMzN+9C+8j5xR4JmBnndTfpt2f+A58J9CH6mQz/NUKedf1qXm1IsmXUq9Uj4j7b0B+TaQnow+91J+O/3/MPn5mdf6US6v8xz8xEN/S/leiHqHGB/aoyOsoweQv6D7p5D/6VX0Mh/4HviHwt8j1p+p5Gek/g3HEd/X0H6e7+ppB4HvE/B5gO/H0ffHrA/dQ/414zOM14iFH/dnDZyP6X/uzzojr+eafPDjeb4y+4/1tN9A9HgGfgpSXrtOKvAcgz/jB5znnddfhf5m8C1h3U8K3oYxT9a76vkP/OOgNwP69pOF5Jcm/zm+HwJvZvCl9jzCeWED+ppHepnrD+0ZBT7P72PJ/xj6paH7rPOHfhXoddFOwnf3d8nI185Xmu9dje8Bv+tUXuhcBs865h/3X4k8f6Hf+OxrDvF9IPX1/x9H3mv0m2jWq5dov7nw1we57C+jGD879Nfx/RD86t8YRP5++M9AOj/4r2qX0p+nHQ75E/A9HfWPeJ4Av/FiBymnn2mG9nvPJfqxKR8f/Rmv9njfpp0P/N3ct8PnAvSsvfZd8vUztIT/gdQ/ynmnI3zNhv+JlH+a8ZwceJLxfAb5/wd+z4WeE92/bYcv5239iHPRVzLav6P+duTNSf0O1C/pfhs8XdHfp9D7zfgMYITyRUPxdtfZ3/wI/zdZjz5jHrmOHhpFgNAv4z4XvehfdT8ymO9h+/Y08JZCnsPQc31Mwbz+Ed+7h+ydi+HnEfPnQ+0w6EH/Rn/Pr67zpOcz/r6n3DzSe9z/oS/Pkz9R7gD8F2D+K4h8v9MPXL9SMh5r6de0POM7GnzNtLvpR4Leh+ivv3ZZyrVB/gj94ynmOfcnz9B/v0R/86j/EP0lgj/tNingoxxy54W/NMZzQvdKSB8JyPe8f9f4FtpvivEtyKWd8y32Lx/h//4MPPprv3MepX5r5J3lOQD+XR9c113vo6B/lfbQj/ILUP9JR8r/4r4fOTcgfyn0+wrjejX9qzh6+gT6t8DzKfU9r26lvUfTPk9DPzv890Ge7K7H4MuO/MZ9rAXGo57xH8eQrzP1+5FOjfyNmC+WQj8t/eE68uVA31tcF0nn076OXMYrGs84gP51lnI5+P4b/B2FfjfkeQc8I+BzP/p7BL3M6O0M+KqDvxTzrfYj7Unaj1xvXIeMZzaOtab2APReEXgd/vqij2zgvWg98H+EPoujvwmk36J8U+aljui5Gen14JljfAly1kePg4Ce71qSP8Q4WuOCPZ+Rfw95tSdPJR0HnGN7Ip/ruXE0y8Bv/Mws+N4G3zvo7/nR40/UP+v5S/sJ/Wc3+fqXPgRmiwQwifEBzPN52SfecD1Dn+uAk+jXJcD/LOtRAeR6g/lCv439yn3rG9ol6D8jyZ9NvvuHq+hvCPn57X+0yzr4fxm61dFbPPB8HvMk3ikxIfz075Xgn8L3DurHuFHSCaD7AXS0S95k3z6fdpoDnOY4Yr0qA4zm+zXqbyFt/JP+atfnnvR//RDheKn76Pt/xveF5mftEcbf24+Nv3/IvBlHvzpKujr4d1Le+BTP01Opn4R5LzGwl/ZY9P075bU//cB3zymeV+uhxxXQaUD/+JnvJ4C5aTfji9VfvEgAnYedf413+gg+vvccYLwgel1Nfy4Kfc+vX8O3+8m22t2dX6k/he+ex4zfXkk6E+NMu0UX5HgXvo5TrqfrC+1VDrqnwJ8Ofvq5PycdRzttjwRwuvZQ+mMTxrfj5AzlXiL9QHun8Uzo7wXSxsUOg8/LofntT/hoBV3nt/D4cFyc0E4JfuNv3J+egr+54P+d9APSr0PnCP22NvV+JP9F9KNf9h/0uZN0ffRZF757eL5h/dkM/2H/oPO8ft4txqOwjzAe3Tj01ux/VzKOt9DfZwJXai8zfg78b6Of1qyP0Y4f+vdG9kfGX2eJIB/1jL/OyPmoBOt0Qcp1JP8k83dXvtfQHoR+O9NunYDl0Lfr1Td8106mXawK9fXLfoe+qpLv/Zd87s/A1xn5j6H/5eDdz/q+D2i8aU3kKiT/ofjMRrTHPeN3mN+0hxlPGb4/EUv+a/CnvUT7yQvk70cfF2inOvT3YuhX/4l+kzrenyBfe+1I51PwJkc/aZHvPv0nlvneuK2f9R/B93bXOfB1p//1AGaAf+M4jQczPmwN+IwP8zzk+eh34/8YP87vzuvDwe/8rn9Hv85o8vXvFNGeyXfjmLrD/3n6+wzjzNDvBOMRXV+o53xWmPr34bcR31tBLwf6/Yr0W95To/wVz3P6O0mXc91ifqnP+DK+QnuK9hP9M59rvzK+EH15rskFfu//eR/Q+1P9kLcS6RXab9mvDWd+f9/4Qcp/xfx03fgW5Dlp/BL+LPfX65kPLob2x2Odj4xjjQRwJPRGAU9TfyX5rq+1oKdd2fV2OvI3Bm859NkI/j3fe66vanwV+J0vnUc7w/fP0HnRuGXmkS3eLzB+2/hA6n8LH73ht7fzAXT3Qncj/H9r/AflliL/LcoZd228dRT0vV/ajfnoO/YHxqd7n+mM8VPgcx5KBf3MzAcLod+Seq+Tn4L2tV0aAW2v543r0F9tPBh6+Bj8s4xPZZ7zPt5t+sdW0m+Cxzi4FvCVmO9jjdPR30X+D55bvF9pfALlT8HPl3yPcfyQ7z5F/28z5D8M3qSUn4K8S2nfQqyf7YyPJ12IfOP9vG9TQDsI+C8wPyYg3/1rdsb/Tdb5eewrpkUCuBDYAr6LwNdW74tqZ0fvTZG7DGnjx0az/jxNP9KOuxI9fGPcF/wlZHydov4d8P7g+AP/P+C5y7iZD557pGfBf3i/9jf6So5+rsJfU+810P8buj9kfYs2jgD9bkV/Vein9by/ghz1mL9fYF1MTDscQM9DjYNm3dD/qz9Y/6/2uZiQnU77XAz196CXvcDX0F8F5x34P+H9ZvQVQ39yfjI+fAb0C8G/94GyMb7u6YeF3lbPd8gZi36zeH8dWEP/eySANWmPRHxP7v0+41egu4jyT+vnhj/3h+4H3R/2CMXX/OK5hnYaAj736/qXFpN/XPsRep8Mf1+zvvehnPbDdeQbZ/OV8SHQ1/6+V7uY9/PJN17tcRwb/SfW9Rv8w+mPw2hf96faFbSjfQ/92+C/rNzaT6G3h/JZwNPJeQ76ZWg3+3Nj+tsq0mMC8NgvsNj5gXzjl41XNn75DmnjKo17+hw+51Nf+6jx2r2gP4n+1Yf2vwfM5DkI+esynmrRL43PXAcd4zaMawnHb7yFXLFA4zikMxX5pgDbo68jyOn9HO/1uN8YCv/G73UEdmU+MZ6vEfzUigTwCukM7u/A15F228l47YI8xpU5DtTz0/Qf/Xqjqa9/T/viPucJ7wOCZwH0d9IfN9FPXyf9nOcl5FEfi9DTdvRr3H9f2sH4/yS0v+8LaI/VT+j7ApMZj973/oZx1Yn6nrcmOn6R1/tyXeCvfSiO0vhJ46OMFzYuqgh03kTuZawbC0h39RwF/uLADMwnGUP+vLzgMw41P/zrP+0Gff2n+qcPwJ92k76U076ofdr9cmb0p31av6bxkJ5H9G+6bjgvpzZ+h3ILvK9He16A/l30536wiffHwVOa/qN/Mrnxpt5nQD77i/0nvuceyj9n/Bzfq9OOXUL+ef3y3hPQPx++X3zC+PFIAI1HH6b/3zh6/Y2U3wF992/u5zow71Sin26EP+O3HFe5oOc+Mg3zw17qn6B/HQf6PkYm40aoZ5zJIPSTkv217f88ae/LeL8lWeiei/dbwu8XTAqNN+3PS7xXajvQf2d5vkK/E0j3ln/2HyPgvxby6X/y/OQ7CeH3EXqzH3kb2Jz9X0Xoa1833u9EKN7Z+4LdtaMj92zqGxdoPKDxF0XI198xFbn1e6yCP/2D+gX1P+kfnATd+MAH8NkU/npRPx98NuF7Wc9/0F/FvNuW+ec0/Wwn6X+9n0/6M/Ccpn5N43Q9Z5NfCr7C9kvvx7wFX9qFtN+0Id/4x718d/00/nFzAKLe0y4CPu+Ruv6mgH/X4dTQe0C5IaTno6+56N99n3E3xme7/oXvL5fyPIa8vk+gHft1/Rfe3zDegvIL2IfkRD7j/ufCp/cB7sHPVvr/FuAY4wvA73nTuKDH9wBJ9wjFTRhHoX+mEuPhhPevtYN6/wX82l+WQ9/4EeOOY/luPKjxn8tZ16YzTpaQHk//Xkj5xsg7QzsY+WWYd7x3mTR0/7Iu9N3HeB5YSP3sxvuC3/cWeqH/zNTvZryD9xsjAfR9kt58T4k9YTPj2/3aVMqH71e7z/mL+tppp0A/BfR996Gk93SAk9HrU9SrA75+tH9W2stzZir2v8Uop39cf7j+8RTwN4j9byv9wZ73kGdqaN9aCLyut3mMr4PPWjme5M/4Z/3KB6Dv+S+F7xnB/0bWk2b2B+b7acDpQM8L4fc6fMfjsPe02N/cQX/6Ib3/5Hsivi+SNfS+yHD0k4727oQeXiK9yPcLjAuC/6eg3wR99Xedgs/r2oe1k4T8SeH724nQd0/4vB2Kn9cua/y89lnvZSznex3bwfsN3v+j3EHwdaK+/gTnuyjq249bUU87Vi741o7l/Gl9588J4B9vfCDlvjRuk/YZRf5lyo8k/Qj8Zz1/kV82dL/V84t23zzQ1/67nrT3o70HsBX6PeBnjvHk6OMn+l8xxodxoEWBLSm3E3w30f8S+OvneYl+351+5jsq3v/VHmWcm/Ft+hsTMN630+9Ogq8Q/dPzrefZ8P1D35e5Al39o0vIN35hFfqL1Y9qfDrzz9foKcb3N9DfP76DRHnvmRifmN9zAnzMAn8S6IfvVd/X/kH75oI/72kZR+Z9Le+rFwaf/vNnac9e8NcUfC3085D/J/sm75W9EbpvltR77dTP5H0C6nt/1nuzJaCn/fMi++Xt6G007fUF9b2X8RT0ryHPAOjGA/+fzEvG8xq/q/0+D3r3PRXjCqaid+3X2rO1X1dB/qqsu4mh+4vjXPsj9JzPnb/dHxr37z7R/aH+Uf0D+0P+0XjM37vA0wp9tVQ/oftb3lvx/lZu+Mtu3AVyGX94GL08B50jpM+Bz3sztm9Z4+W9vw8/H2ufI50a/ssb1016E/ie9X0E5C8ejjNGP/3hvx90D4X238a3Gdf2F3wZ31aH9dz3OhuQHol+Unp/CfzGQRv/3Bb77Qvai2gf4+NjjDfVThd6Z2cM/U0/7VjSuxy/6Cs5foYi9LdzyNPA++T6C5H/G+RzfjT+13myk35O8C+Gz2Sk22inYz+uHSj8XtIK8F2E/wmU24s+fZ/E+3kXXM/A77nN85rnuT76yxnvxgUnJX1Vfwnz+VTgN567kO8T/QPaSbznCP45yKc++6LnFtoXmDe+cX5FT863zq/Oq8brOr+uIJ3K/TGwBfTj03+iQvekvR+tPcd48nJ8174zHX7t540pbz+vht7qsP+qRDqV/j/jaEP7CfcPvvPguuM65PozmnnB+ON98GMcchvqtyb9u/fkqe9+3X2x+2T3x+3Ab7z0KfCc1X7NvOs5YmcoDqai7UW9VPqPkC8J9ccBBxpXSn4Jvt+ivTqCfzX7B/eNeaCnH0j/zxe05zjkGgn9l903Ud7zzRe03wXGr/frwu9vNYVen+xPpi1X2/fh6P/PMu8UAKZy/KOfC8yvrZh/CiBvDu2X8NtWOyL5c433gv495DgH/8ZPGS+lPUz7V/h9H/e77p86MW7XA33v2Hsrnmu1S2in0D5xHvy+y3jCeBbjmGmPtPAVjofRvhkPOto3F2ivIf918KWjXHn6h/GDxpMYP/g36ZqMxxpA/ZGFqf8v60kf5qHbyN/jP9YH57Eaxn+SNt5nBPzc9P64cdvGOcLfLeRzHvI+iPPT1/D/X/c+jIP0PS3f13K/bJyvfCf+j/XtW/1L8OF9e+/Xp9EfgH7ak3b/+B78+n5DLPAZ34civxGwMTC39/zoP//Y3+AnxjhWxo1x/fVJjyF/Ke3ak3Glv1X/qv4p/VKrwN8EOTegl/XaDUl3Qn/XjKcH3gAWJt/4Md81XeE51vuWtFsU/d52tP3egK+zxr3qD6X+Rb6/4fu1fI9jflZfy/lej/q5wH+D/us70N5DMf5kPu0aj3GQxvur5O9HrsfxDtp/aN9ylNf+/jvto5/LeyM5yf8FPrcizwT4mwisAPwaev1o99G0S/h9zpXuH4Cer4wPMj5Q+6/2YOMDjZ8zbs44Ot8/8d6B8VUT9SdGAqh/44hx4iH/xnnvt5Ov/077le99et7wvqL3F46y72pOP0/O/JUK/vKS3kY79GB85vP9CdKeOxx3nj98V8x3EnxvzHfGBpCf2Lh5+EzK+PJdQP2OvtebiXLv0n7t0Ud7+Jjr/SPmgxj65/OkM6Kv5sjV3/M/9FbQfhH4fewPMw4Leq/SXvoTHsBfXfVLfe+F9Q2dzwYyn3ku1z65Fj36vpRxJMlC70zNYX8TCx99Sbu/cT4aj/6OUG+o9zuYz0bYX+CvFvwNpn52+PPeRUPwez/EuFLPWUUjAWwKPe2za7VPg/886czkR1O/nfZB2msa89th9GM8dC7630zmF/f1CcDvun8P/L7j4/uf7m+NH3R/a/yg9p6F8JmL8aD9pzLrwlfgLQif71C/eci+edL7cdAvSrv9RbvNgJ8K8NOc8an9uBL9/bFdifmwj/2G+h8Yp+t+0vhY43nBnwe8ntM8n3m/KL3xGJQ/Z3vYXv/xrpjvdyZFX58DXd+iad/wfVLvmf6LfkrS733Hzvcam7mf930mvlcivRk+qtMvagJbAXtT/qr6Rj+e830fvCNp7WzeS4nzfglyNYDPLcBXKKc/yPdY9RMVI/0l/Ibff7sfGn8DKJ81EkDfH29JfgL6WSbo6q83/lO7uHGgxn+633f/73lgk/GT3r/z/ZvQPk6/90TPfZRbA0zH+PBeUBXwTwD/AuwRvhPoO6e+D+h5fXpofOufL0353vqLnDfRz3vIVwu6Jd2/U8572d7TPgm/ZZHnFdr38XuNlF8Mft9z931336Pw/0HyMT8VMK6R9A7wG287H/70R76HXOH7aWVD99QGUN73dX0/c6TvK0bBP/wNd99L+4ffl/Fdv6+Q7zx69x3mrp4zwJ+C9mmNXClJG5+8Hv6WU953OYb6/wieN/juewNLfR/XeL5IAPXvniSdRv8s7Wn87z7yL4PnGOk6yk//Scf8e1I/chR0Gd8/gv8N8Pu+UBHyWyOf7zTNJv8n171Qe7UL3S98ivxk+iXZj3QF3zW+++6L78AYpx9+T8Z7et7PC7/bXNn3CKBvvKbxm8ZzPvB+qu+PI7/xDye9X8n8X59x0pB+cJD88ehHv4D9uxftH36/5Kb2N+a7LbTP8/pljGczHpp4noPUP8x+5rhxasZn0M+uRwI4CPzen/B9RO9R6D/z/QDnmTLI8Qf9Jxq5fect/L5bfvgzLncc/N33fQLtH8YHkt6kfR85/f8e4/V9n9j3uXyX603K+z5XZ9rbONJw/KjvIPruQfi9Jt8XN07Id8aNE1oG/eeMU0R/p+DvM9rLuB/jgD4F/w7664fMu2F7uu99lYEP3wNLRDvofy4Mfv3Q+p8nhPxblaC7ifq2/5fGJXvPhPzD4P2V9DjKj6P/Gp/mucq4NM9bvn/qvTrv2/n+6UHPQ+Trp64O/77bqx03DnmzQV//kH6zPyin/2xFKB7KOCnj6+u7/jsvGwcEf/3QfwPyD4bezzJeyfgl45nmuF6S7zvJvo98HPraDytSvorxaPrXKZ/WOCLK+/6Ocd95KOd985Lkl2fd8n6H9z283+H7b2W1L3peNz6MfO3E/k+H9mHPF9oTu3meId//rYug/77uZ+H7U+/H6Hczfg54nv7lvZXjwD7I5/tIvgtpPITxD/4vwzLqec9/Hfw9JP9hJIDTkSeJ/kD4Tcs5yP+Z8P8lTtO/HN+Nwa/93fcumqLX8P9/DQNfY+oPpr/5npjvIXo/3fewvtX/zPnnXuhd+7bwN4z51v+JCv8/lO8v6A/WP+z78ovoN8bfLSb9RySA3gs3zsL74Vmo77sxvqP3JfTOh/4/JSP1isB3Sd+fQK5i6OUA6Q20fw3mS88tOegvnl88P3hu9/+MPL9rl/Gdzqn6Z7XvGv+F/MY/r0H/o1yP6f+u08aPeD+yE3hWU3409Lyf6L0378F5/62Y9hT4cT6uGPI3Gjfqe4v6I30f23exL5P2fWz3dyXA4361GvwZ/9ffuCK+34GfwtpHQ3GDvj9Umvl2FuOkMu2aD/23g57xCq4TC+kfTcHrueZmaH33/Q7tKtpZtK/4ftYV3zMIva98IRSfYbyG8RlJ2X8mAb5PP2yvPYnvHzDPfgisSvtHIZ/3jn5BnkgkgOsYv/WoF36fK8p3O6jn+4LOD7n9/wnfMQCv7y84vzuvO883Ab/v6n7AOPL/ybKE/EPGEfm/VMYP+b+Lh6AzinbbQPs6/vV7ht+P0m5+XT+Q/wdKe/8P+c8j7xXnR/jXL+B5wf9BO0398vodkecm8tygfgb0dxW+/V+fBPDv++i+i+7/KPk+ej7qr9EvD52z2ofpHymRqxLngxa2n/sa7TiRAEaDZzf0dnuvDD58P+0N0hW9Z+x7KMZVeX7zXhz5i8h3/+a+zX2c/1ekXzqG78a5Gt/aLeR/+JhyRylXivq+S5gIeX3ndjH9rovnJvJ9f3MF+LwfOYj9e2vfH6L8RqDvffluvPGpPeDD+17jwe9+xn4f/v+xapxfjv7HPbOz7G/uQuc8/dv4zuJ81z7sep5T+wz9ORFy9QCv/snwuwPGj+s/8f9Z/F8W/6fltvd5yA/H13cEn/cZjKv2fqX3G4zn3wo9/TvG9x9kf1QUeAh4zDgwxvdd5PPebw7mV8eT/0dWn/XC8VWb8XWI9Hba6ZHvr8K38b7G/8bBr/4J/RKTSOufCL/PGb4v0A++0zOOU9NfO0Lf86T3Ez1nuj700Z4O/1XgaxzQ+4/ee/QdVu8/NgbfLc918LfL8xP0/d/U8dgT9Y/8DN7RvucIfs/n2ie0v2mP+wD64feufUcwqfdtAxBVFz43RAJYj/xr2Ec+AU9K7zGAf4v7l9D7GL7vo//Q9ztmeo8MOuH9s+viRejHZ95NqP+cecb4vLB9Svtifug3gv4p6B+i3nfwvxR6zY2XA7/3s32fwfiT6sirv8X7LD3Ru/dapgKNGy9L+qL3iGi/T+H3M+AnwGUR+NWuDB79Ifo/GhqviHwZtL97nyLk324X8nMnIt//7ynhe2DUv858cAN4ynso1C8Hf/9479R73cwP/p+E77P4nnEn5PN+pu/W+479kJB/Lg3y+f9j+ucu0F4V6Kf+34n/b+L5zbho3zN8k/btyD49D/pcSvoR+ZOMF4au9yC9/7ja8xryatfz/a4d1NdOMQR+dsB/bfDu8ZxIvnFgvjsrnTB+/5fBeMcC4BlHO9xhvvN+a17a0XuulTwngi8/dNeiv7nwr981mvVTf6z3Xb3/2hZ5vP+q/Ckorx6U/z77w7Lo/Zb3D8hPa9y99zyAJdUX+NpAtx7rg/FtO+gXh9Bjc/r/O4zHrcg70/lJeXxfXbsd42IgeHaSrz3Zc1BK9PQy+f8H7IxginicdZ11tJbF88AveenufOlQ8pKK0iF9EVBJFUVCQLqRFuEinSqItCAdCoJICCqltAJKirSINPo75/d8Pt9zeM7x/WfOPrs7OzM7W7Mz+9ZLFvX/vzrA3AkD2CJHAGtlDWCK3AHsmS2A8fMF8DvSPbIH8HTmAL5N/QVJA3iY9KrkAbyTM4Bfxg9gNPXj8gcwSYEAjswVwHORAH5MueXk16X9nyi3DrpSkV8ldQB/jw7gR/AxJG8AW8cL4EbwXKSdXnkCOBR+etHuU8gjJ+3cJb8A9VfIF/jzIs8z1N8FnbWpvzlVADcBx6YL4LuU2w3eBJTvSvtzC8IXeLvA12zqLYOPash9Id8zUv4Z5FwySwD7kp+a9qJp71faK0u9G+CdDn8PqX+IdupR/yD1nyX/NLAreLJD7zDK/4HckoBnAvK/gv68yfeT6GlX+H+YJIBVEwVwBvr1Bu2vpH9S0M+5oaMzfHWl3mDSa1IEcAX8paM/3gC2h94L4I8B/1L4eoP88ZEANgD/v3xviJxHwX9S6h+ErpiMAUwmf+R3AP/34OlIeh75lZBfMsbTIejPDD970wRwH/AR+a9TPy34SiOHCOMnmvaWUn4/6V/h/2nqvUz/JKb+APibTvlX4bsgcAf6l53251B+HuULR+AX/KeAX1J+D+23SBvAIuhFYeAP4G+BXCugT7ehLx38/EW6MnJqT7s9wZ8DukqRvoi+fUD/dGJ+uQ6+2VmfLL8mPXzAVw3wxULPAvhaBpxBuQ7g3wD+5MD1wEW0V5r5ZRvt5aF/D9k/6N9I6Hqa783o35N8P0n7C5Hv79A3jn7NEAlgefNJtyVdh3IbwTcLfeycOICdgGOY59ZRfwrj6k/k/xT9twb+iiMPx0F78Jahf19wngBmp/wN0hmh6y/qnSJ/M/UTIb+EwBXIoTlyGsR4TA29WzMFsDLpdfC7AbzL0bfe5MfxfQTtR4G/FHpwlvpDaK8A6Uv2H/Tvon6e0Pp3mHQRxlUh5NQD+ZWBnp3QE0s6i/M76+L39M9p0hPB1wt9a0i/PUoZwMXo53zaLwq+A7Q/kHRu+MlGuWPkryB/iPMFfEZD3wu0nytBAK/Bfy/mt6HIL0L53cDM4KlG+Wy0N9L5kvbyIb+C6F1h4DD4G4P8XgxA1Ie01xx8q0gPQm5zqXcM2B06qgAHAdPR/h7SGcH3GelfoLsr9L2O3F2Xm9AfR9HfEqRPAFdD92/Ap5l/EtCvOYAtke992s1M+WzQN4l0BvR/RwCifs76ZL0PmH/HQncT1uu50H8eulMg/8bw2wb5HWC8l4HOoeCfCX3TmW9rgv8Q89nbkQCmp9+fo/xc51Hy46g/3nkbuIf5IS/03FZvqB8F/a1p70P4mgYdW9H/LtBfknLLwZsW/c7G95/A+wJwM/xPZf5zHzgaPUwP/amRbzbnReb3VLRTiP3OUPSuKOnZ0J+Q+epb4Cz6cw10DAPGwNdA2h0K/RuQzyTkc8n9P+V3kx9FvvuI9CH+lmV5kk/5KwSeHaQvUm4G/FVE7q+A/xrQ/ddk+P2TcbiE9Dr092PoSwPeadB/DTo/yhDAc9AxFD28B/6KjlfoW0u5n0lnYV9ZNwBR08F7ifFZBH2LRj8XuU6QXgJ/r9HOUtJx4KkKfTVoL9b9P/K5CL6SlB+LnrSAfvfns+iP72i3CfiSUf8X8qvAXzvkV4ry3ckPn9M+Qr7Joasw+CajfzvI78t317+Z4LuAvkej52Whqyj8nWK+/8FzDPxlBP9w9P5X20UPJkN3WvhPAX2doGca+dHUH41eNmJ8PU/+DOofp94d6F8Pfa5nq7I/Wf4gcswJ3TcoN5l67heLMD/MQk9mAp9hfhlOvRbwdycSwPbUPwW9p4EngbtoJx90JSM9EXwnkd8b0LsD+VyB7zj6Zz77ol2e/+BnuvMz+lqK/ptBOjf0h/vDfjoOH56bH3m+hr4v0K/5yHEU9V+lfBHqX2O8d6UfG/P9PPLZC38lqB8fuA3+7jIv/s68mIX8vcjnFvy8Rz+5v5gC/prQmxX51YKPQ9C9h/kkO98/ZDwXoX3Px0c959N+D/j3XPW5+1vKn2d816b9f8n/mPo/Uf867Tej3UroR37ro2/t+b6e+XoD/Ht+8NzgOeI38hfQfj/4uw5f3Wh/Bfm74WMa5YaiH4fJT8n3teDvQfnt6N9j5LON9Hjku5b6e+H7TeqnpH+aUW5S6PwXC33VAxD1F+3ncl8Dv3XA/zPfe0DHFvAdIb83+fmgowD4X0Wu3ZHjBuR73XkQfqZCZ4TvaSMBTMe4qkI/HfQcTf4k9NdzTnn0uB/4PoC+otA9C/4rgOdrxwf49lO+BP17x/UBeZyinT7031Dm433IOyP70Jeo/zX43gOP9qoS4PH8P4nvr0BHXeT7NfP/VGB9zgMNoL8E8jkKv85Xzk/O9zfA/xz8/wj+QeyHEzL/JwJ+Dv3pXF/Bdxl5nUXPm3r+ptxLpMdAz+uMu2SkD1LO9bsZ9PRHHhHo1X50mXLK93fbgb5Xob8tsAvzYT3qXQDfdvjvRnuHSB8gfZz2z1BeO2gP6I4H/+9Q/jvw76W8dsawfbEM9Oag/vgARN0G/5vQ3Qp8w0g/gL9ujJ8M8LWBcl3Qx7yMpwSes2j/AXR/o/1MuwX9lwM+CkLfu9R/ETqrQ99M5k/77Tx43Y+NAt9ixxt4okL2Be0K2hnKUM5x+iXl2/D9IOlH8H3dfSR0LEEfxlC+I/TsgZ7kyOkW7V6Fr7B9Lh1ycR+4ifLZwJ+U8r9KD/JYxPgfwby2Az4Wsp+7TX3PpR1ov6/rB/l1qFeHtOtgAfo/J/Q1pF5H+PqV/MTw8TTfE5F+C3wx2qMjAWznPgb9cb1x/XE9Gq29me/aw7SXSe89xndz+Psc/W2PvD5BHvOB84D3yS8Gfbe1d4D/Kej9kf3HWuTYCD1YCT0tSH9N/hngFuTalvXAeby250Dan8137evymRr5/IU86rmPp9wt8n9gf7cPuIr5+B33AXz/Cvgp33vTf9pv1oDf/dVO5NsO/l0nw+tjImBL8E1HfoPRz2HMH4OhqztwqPZA8EXA05n2j9F+C+hKzfc/gJWRXyfqe9/lPVhZ+DwFXIRct8Hvn9TvBv5B2n1p90fy04TuHTrT3xfhV7v1Iva/teBDO/Yy7bvo19vgqa99m/ZnaeenXEfoSMx6+yJ8OZ9Xga94rP+P6adHwJvw+z38zvN+iu//Ot6hrzT9kYv8ovB/Gf3tRDspodfzoPuVyuCpz/fZ8Jed9Gna7065n2l/LOnTtD8Aej9FDtpnH4DnCu1pn41lvDcGDgRuRv9cH98Dr+vklND+9STfS9LeCO9B6f/k6H8U+lwD+oq4P4sEUDvbEtovTDsHgM6/i+F/Ne2X0e5H/SzUv6u9x3NR6Dw1kv5+mnIrkUsf6B/AeHN+GU25qtB7k/7NTPs/kG7m+R16RlBfu9J82mlFfnf0piblktJ+Wfrjqusu6U3wn4B56XXq72a9fR/++yGfo+Tfh37vd4cjjz3egyHnAq5/1C8LPwPI/xg+ytO/V6jfC/pjaC8n+F+j3jLyx0HfbObzmZSLRzo/+R3Zz16BzwOs1xO9Tw7dx85CPpUiAUzL/JIG6Hqxnvqe1z2/e56/BL619L/njxzItxf5xal/HPnMA3o/on6r1/fgU/2eDr/vkF/P+UL/Ae0KyC058Bz52i+b0s7byPmC50fa+wW6NoXOD5+Tnkj9OrQ/MxLAmrTv/Y7zifNHffYPk9lX/QieeNTPh7z2e//IOUj78xfQrz3E/aH3s44/x9376FtVyqeBPv0WCoT0+1/4j3YepXzW0P2K8tWOlAz5fsp31+nP4NP1OcJ+ZRB0Habfn/L+HfzaFbeDby/4ziKfgdQ7Q3oW+E+hH+9D9zT6Zxr4y0Pv357X6NfnmT+83/Re8x3qbfB+hP77Db5aANXbCrTb3/0d+N6C3sms25OAf7HOtYa/D5D/Ncp/Bf8j6d804NvH99KU6wR0v69fSE3wDte+S/3fKHeLcm/A/2b0zfu3OeoHclJvwvbl+ODvDn7PV563PF9lg79SnovBl0n7P3KZBqwAXBOyD2sXXkla+/Bc+n8G/dAU/Nr55tF+fudf5DDa+pRfnPtJepN6vww9v7EOngE+pLz21fD8qH3zEvmNaSev/jL0r/un6uR7/9Ib/Mp/hffufFf+6ZnPMwC1W1dkfHxLva3Ioy3j8BB4PFdn8z6B8vrXaI8M+39orwyv3/qXTIP/0ehHRfcHlNcfqTf4Pb/s009HvJ5PIwGsjzyq0/77jMfejFP9sFqBv53ypf2m3sNSvx7zyVztXOjTFuQ7Cvq9N0mnnQj90Z8hnfcArKMrkW9j5ucY9xPozwXk09P1CbqvQVcp8rW/dqfdbMjpCvk/wp/35Y7jy7RXgPyV4odO1+EHnDfuAe8DL4N/MPykZh7vTNrzfkX4q027t6BvHfqnvSmOdrvCn+ur647rzWPwRdC/q9CdBnrSRQJ4WPuTegTUX6kR+FvSv7XR+6v0Vxvqe77yXKW/kOer6/B9jv3Vz0DH8ybmoxzwccJ7QPrD/a/73s6h/W8uYA76S/vbMuiLAe9b0PMr/ByEv9r0b2vnL+dH6k9F/h/rX6GfAe0VI/8Z/WZofyflc4D/Ct/z811/zeLsu0sASwLzkT+G+qkiT9bvpx8D/XUb+rUv5qL8X+Dbwr52K/A7yseE1pt8yCuW8XnI+ch9EPz+4vyp/Ri6sjtvgH8h8izoeQ78N2lP/x/vQd3Xev85DX12ns2DHuak/6rA30Pvg0lPQP8XML8dYn7TL0M/s03oZyK+H+Y8oP24BvRFoD8aeQxDP8Z7HnFfrH+Z/n3w9RV4WkdRD/oLw88/4gdfWfI7sH5mAWai/9qH/Affhv8B7gfpn7YJn6RHOls7f9I/5+m3cfBXEv5f4/tQYFPy75Hv/uof9NR9lvurR5T/MxLAM9pXqH+K+aM3sA/0toT/XPA7Wf0B3zHyp0C/ftBTab8b/HuPUki/Rsr9Cz0FyX/eeUI/QORTXL/PyJPl4kO/9wPOy87Tzs/hc+FV1i/9c4+A3/sC/W0K618KPvWjFXgGQc+ULE/yJ79DkL/9mZV2alDe/u3N+BpHfl3Gy7fgOQs9bT0/0L796flUv4W/qac/3378P+Jot6P7O/24GG9VqXec/m+PfPZDf13KH2a8/Aw9LdGPNIz3npSfQ/+NJV+7Q1r2ed4bxVHee4nd4L0Pf++T34Lvp9GfraS1u2uHHw3eZcj3HutlfPi+T7oeeP7he2Pw/Qmd1aB/InRtA75Kexf170FeR8h/Fv70D9Xe8wi826hfnPp/MF9dpVwd+t84gAn0z1fMk5uBXeif57X//Iedsjr5x+j/q/C7Af4aeJ+j3Zh87cPNwXcEuC4AUbOQr/fL3ZDndvgqD32vhfwD9Rcc5r49dL7yXBUDffqvpWPfoB+b/mtVQuu/637TSAAbsd+Jwk7cmLT3s2norz+QXzfo0r90N+NnjPeU4E0PnaWhZ4L+r9CxH/lkYr4ZSb8VZ7zHgsf9zRD9VN2nQEcH5JMPvNNo9wP9L9G/7xiXcaQPIH/XS+2srqeun9ddT7WvUU77wTO0r31jtXZW6L9DvbzQ1Zf63p81Zj/eBBgbuh8aCP5b1IvV/gX+DI4340a0c9PuWOSahvxyxrNQP877Iej/nHKeQ/V7N36hEnQn138Y+gZT/lXoPBZaP/uBx/XTOAr9G/Rr8BzXiPyF4P+S7+PBcwD6W1H/lHZt7/egdzIwP+VegM669j/7liQhP7Ks4Fcvk6E/Yf10X5caeldBn/u7yfTnZu/fyc/p/aL2R895+hUCZ1JeO0cD6C9I/efI1y8sv/Y3+PN86LnQc2Ju53/mjUx8f0y6Kf28EHzGZR1xv09910PXR9fLfJ6/ocv99ivaacB3m/mlN+XvII94+p/QnvdE3g/p33KX9aAH9XKwj24TCeDzfM9Cu5PAZ7zVFOQ3EHl7n+P919PMT38yzz5L+gHlp/Dd+SkT+LKSr/1zL/nHyXd+OKH/iPFs+iEgn0/Qt2jkOgJ5j6T8PM6bHxongn1jBfjdr0WB1314RfDXIP9bvj8PfQmRj3Z/x6V2Vu9XJpDvva/3wPrXeT+Xwvg+0t7PzWB/vBR4H6h9crb+5tD3kPYyeD6HX/0uJiCPrdbX/5jyT+vvz/ipS3o4en+E8mmhvxf19Gsa63mC/GjknpN6u6CjjPFN+r1RfzL6p//n3/prUe4t6n+DfOLBz2j0/Az6nZVy8fQDAk8tvn9Me8aBZiE9T38I0t9TT/9l/ZabI78X3D94/gNu1H8Ofp4CPq9/PXA8eL+kva6Um0l97UfZKVcROdTVDz10fnceGcX4b8T4mMY8PYb94ofIfzDz9nz6qQPlWoFnG/Id5v6f9ETaK+n4oHwL/f/hx/iohNq/SW9A7jmZH7zneMd5A/6Nz10N/mPk/wD+P7zf0y5IPe3Dn8L/FtaveaTzI5+qrD9nwK//4VDq36H8AehtQno140O7e2XaTeA5DPyzmZdSMC/ddL+D/M/QH0doLzd8FA+df/pTz3OQ558v0fempPXzvwO+iSF7jPaaeODPRvveV+bwngf69uo/g1zqaSeivXcyPsl3NeabXpEAGr+iXS/sb1eEehtdbyh3Rj9y9Mv4knfAuwz+lqOvE9Hjz42HdpwDk1DPOII78J8W+rUrGf9z3PuAUHyqcalxzO+ZkN8A9nGZSW/RDwy8++DXONxE1H8f+Y5GLuH4xyPwVQS98z4gF/TnQH+zA3MCBzl/OC5oX3vOcfTTfVFj7wnhb1YkgKkd90D9DPUv/Nr7YOBN70fpzxLU877ceWoe+I3XOwad34H/e/i/yv7nCvAa0PGZh/KrkXND8YB/BXTVo33n8Sbwf4356DLj07jGnODXL0n7jfHSxud0pP1vKGcckfFDzcj33G98zWLqx6E3c8GrnWAQ/dXa/T/1nG8e0v9VkV8G73X0A4CPWswPb+hXSH4t+M/mvUHI/9342aWuT85zxjlRLxb69EPXft6GfP3u68Dner7rf18cfOWNAzBuD/rf1n5P+3PA7/lO/xL9SvQz0T9Tu2ZK6m1HDz4i/yPWnQPGN5P2/nC69xrAdvoT0X4N1q/ngN1ovzZ8eF+s/ntPanyS/qD6ZYbjI85Ad2byt1Bvnedv6K1G+9WBM+nPN6g3GLyNPC8ZP0l545e8z/P+bhT7Tc/V2mm1z+pv7HlyNXhSUT8L+74x9FNK5rEM4AnHAxo/5/4qjvVkIO2/Qrsvw18X8G3VLxSoPa0q9Ljvch/Wg/am0t5w6J3LPLCO9FbjhmgvHvgToB/1WS8XUu8W9EzX38p7XPB9rV0GPuJBT3fgBfLfpL7n87TQMQ+671O/Ev2rf9Qf+lPBt+97/EQ6BjxHoKcs6UrATdRfjbyexe6lX9cF9KE/+hfeH5aC/vehb6v+/rTvve8/wIPI/zPgUmBn+KzBfL+IeWQJsCTyuUd/nEdOhUh/5n0g7Tfxfhq9q0b956j3jf4M2oWcL6k/TP8D+NRekwq9rowe5IHuNvr/hvx5jYNJjz5dQ54lHZchfwzjmu7zPRzfpH2ri/OO8Q3wmQC87qOS0y/nXF/hp2XIbzYe+v0TdCRBHpUoP4pyp2l/FO2fIP8l8F9H7t5Dec/xIBLAMYx/7eSuh66D8Sn/iPqJvMf1/I988gEf6E8AvZ7bS4T4lc+6rm/uO4ybhT7vd4yHNb5bO7X3L8vRW/fPxq0WoL7rj/dqJZCv90neL3nfpH/6u9iPs6An3m97772UeiORV3/OC4mR1yD2g9rRT1PuK9/9oLx26JiQPToc79wFvPqnDvF8GgngZeNs4U//w4r6Z6v/lPN9h3LOe/r70V/TWN/0v9UfV//bc/C3Sv8h1q+cxlfoDwFe41+Mp5sHvzmQz6ekG7r+IueBtO87L4Ph3/dQboK/K/nGv66m/34Apme+9PyeMxQf6j7B/UFb5JLbeynyS4K/KOXeBerfPzT0Pkgu+PCdkA8pfwL5HgdeAv4I/kLQ5/nJ85Tnp1Hwn1A/SOMPQ+cL1x3tsdphb0JPH/A/0F+L+sm8/0Xe7UhPR7/065/h+kR7C0i/Bd/uu+cYt0p7XZi/z7LOnAcmpR/3I4/V2A8uMz73g6cc/dYMfFeZn2sif+On1oXiCwZSvyd6cZJ2EjO+o5DPberVhP9z1K/l+yb0Q0HkZTzTKtLG57iPnR+Kz0nLvPki81Yr5U39b5nf+jLOnFcaox/a22K161L/Lvg/gJ6ppD2XvQX+epRvBmyLvFyfKjDefSfhGf3HvL/zPj1kvzF+dIjxC5RrTjtTaX8b+uL92HrkHQ2+BewnFgLXef6jXGvw+R7AOPp9KemjzlfA/iH7qXb79LRvnIfxHb4r1gp+6tJeBfD/Qv5s6MlDOg3lz9PfHfVbA+YB/0HoKaH/KGnjfIuy/9a+o71H+04s+tHQ+Grm3xHwp7/HSuOH9Evwfpnzd1VgNWAN8tdBr++WrQZqV/H9gDvQ81j/NdrXz3ET/D6m3AXk9w779i7wnRQ9z+V+EHzKoy/49A/9Cf06CJzBeC6gnzH9oV/sKr7rH9vD+CjaSc33GkDtB2eRv3YE7QcnmJcWOs/TD+fI99zjPZX2aN9H815+G+lPfE8D+RQjfdt3lownRQ7/6O8Dnu9YP7/SXgL9xl2G3+MYHgX+SAA9Z3ak/QLMi8ZZdKF/jO9uiD7eNd5SP2zWhwbkG//QH312H2J8h/vcScjXeBjf1ThB/XC8tfcL9ZDPHO+RoX8+9atQznfw3N9sB1+E9u8Bh0D/9+xLlutP4fwVCWBN+n828pkFXAZ/+n1776z/t/fRZ+FrOfm+H/MP+jOB8fYIOgYjf+OltqP3C71PNv4a+fnuUTT1fP/oNvkr9X9CHt5jOf8bt+q9UD/fJQFuoH/3QH8F+xf6lxtvRr7+TbvINz7KuKit8FON/vM+/iRyWBDybzN+Ngny7AedNd0vk9+H9v5GbsMZ3/uMv2YdvQ7cDX7v/fMj//f4vhN8DWnP/g3fT95AH64Ax0NPwwjljJcF7xbk6XsItahXjHnlPeAXyPHTAES1J52J+W8V/ZeMfneeDc+v2mt8H097jv7kedRT6NVfLiH0LWX89IH/RshrA2n37QW8d9AfzfOV8TbaW7VH0p7+hRU8B2vHdV1hPzBJOcGP93cZtE9rf0b+X7lvC/kvzsz8ZHv6tRl/735Sfxfth8Zr36We8eXF0euyrG8pPB/Bn/bzRtDVEv6KIo+wf9gi/SlpvyXjZxH8z6N/e4Jfu4H7xe3UO0E6/N6n77P5fqT+vfUp5/1TPvpvI/R5DvP8VSpkr0sIjA/UrteU+uvBn5J6fyK/VvD1Ef3QhXLJKPcK9f8F7vK8xPydPrT/cz/YST8l6Sb9BXLQf+Fs6L1i36l1fa1ofAd4rhsPi36NQx/2RwLoeSh1yH9AvwHn378or13EOPKwfcT3EZIhJ99H8L2E0vBbBhgDrAN9bzF+vgG6H3Wf1Rh6p9Dui/A52fhF9K0psDmwEfIyntA4w7xA/fe0N7cEv+8Ta38Ov1+qnIfR//mQj++iZdaPwvjh0H2K7w35vpD+i9KjHXAw+Z347rrnOuj65/2e+0zv+Q5QX79F/RgrI4885Psu0BSKtzWOH/l+A71jKbeN9CTfF3L+oH3fI9NPNHnoPdFepMt7/87+xffi/qL/G3u/Cv7a0DWBfo1A33vI1zhE4w9zu96STki+/iMP1R/ytQ9UDO2vra9/awPyd0Cf84jvunWHb+8HdiCPJOCvDR7vn7Snhvefzpv61+hPkwT8Y6GvH/uHx+Cp5PnC+A3tw64z0NkcfLGsB42BiY1/orx2f+O7D4LP+G7v1+TH+7VTvn8MvcPBZzzZFfD63sBu4zf1r6G++4vvodt9hvsL3+szvsb3Ywsin4/056I912P9SJLqF2ZcOPL0HuBZ+O1Nff2H3Odrv9If0/1aNvo/L+vNHMbfmpD/y4/aDaHT875xXsY/+26udg79VSqzX3MfF96/ac+qxbgaz3hbRr7jy/jGAkDfX/M9fPcv+uPof1MrAP97h3Kyfiauz+7H6C/9hL2/zEJ+Sr77zn0V8E/Rnod8wu9Hp2c/Gp/8Pb6fCD7jLY2/1J77GPrus2757rXvYe+AXu9ltVuE7RkD1B/S2uNT6Z/hfZt0g8/xtZ50A/dVtP93KD7Wd0Wmht4Xcf51vnX+1T9/MfJIhVyNp7sVCWCc8ztwXMjfyPO78Z+e230/U/8H/R70g2hC+S3IdwzQ+6/O1Pe+2f2/8aPu/40bLwe8w/fW0O/4SMx3z7V/Oz/Rbji+shbtD/ZcDr4l7o9Yn973Psv4EdL/i79kv1DDuD/a0T8pHFflOjSG9nKhd+6L06LP6q9xCcYj3HHeQj8+QC76TTnO9Z/y/tv7bu+/k0JfVua7ba5P0HfI93/B5/mtB3AQ7V9Anp6DPP9EGecKXZtJr/LcCH79vdWLA9DXDnpr+p4D8igG9P26ndr3wR9+PyDsz7kA+XWmfPi+1Xj4k/TvNNj5m/a26/cE/cZXPaYd46yMr2qm3Vk/Ot9Horz3lQvI/yTkz7cn85P0ZIKvQvqPef9CfxrfNMf9H/meL43fKEt546l9Ty0aupeT7/tP+tf7DpTxPe6HDpB2XjwPnlPkuw6H19/z7Mf3okdXqaf/5+fU099U/4LXkUdF8GlXCdtb0oD3IfXeZrzEkr9O/0f0eifz0TLwaS8qRHpjyH5k/JfxXov0j0L+2tvyh+To/0E8C/36hbif1R7YGvz+f0sp7+sob7zFQf2QSN9wnWb938s8sw/oexu+x+j7jL7X6Dt0vaBXO6H2waruj+kX7VLaqbRPGd+1JhLAeuBfSPkazBfGd7cn/xXj3/UHge418Pe9/lX6lUCn/+Pj+d3/e6jqPRrQ/eZv5Fej/QW0v5t0ZvZrmYBrGRf+f0Ic8+NY/fehR//+19iPGd9kvJPxTVnpz+y+a2k8J/gyMv9d+o910HjJHcbF6P8Hfd776j/l+d37X8+z2hHcZ2k/8P89+jEvaa/RPjMVej+GznLG75D/X++GzKd/fDe6Eu2ecj6m/nH0Oi31vwD/S77/g3y3hPbB2jOjGd/D4XMj43wV82dRxod+5xeR05SQ/c75yn2w9jvjw/W7Suo+1fMB9IT9H3JEAvgL9HmPeR15en8Zvj/STyA/+nOD87zr2CueX40nov8uabekH323aA71s2MnqJbgyfr6Z67zvYZQnJvxQDn4rh11FfKpgF5kBcZCZ1/w+450Vu2BfPf/CTZAd2XamWp8JO2E7T2byfd8o/+p60f4/ectlPf/VEZEAqj/0lz416/lpHEW+oeBz3iOA/qhUd73WXyPxfdZ3qb98HoZvh/VL9P/BzButztwTgCi2iCfX0n/7b7L//2h/aukqyMf320wTiAj9YwX2Eg935/zPbox9K/rmfsB9wsjyT8KXy8ar0y5B74/TX3XM+PxfZ9X/2X9liuAV/9l362/SH/p7/Uu8jnH+PZ9YN8FLu17Y/q9ML+0oj/vGD/H+PUc67tK7rcaM+/oV/7I8yXlwueHdejJMOovgX7ftfWdW/9vZhX6uxC6Ehq/rp803/UTkk/9g+aD33tb73G9v13AfU1d2s3KfOD/w/XgPNgT2AuYgfy1rIv94M84n3W+P0F76vfKkH6fRL67kaP+Svr5qr+bQnqs/vpeku92a/fw/e521Hsd6H2q96jGHfaATt+jSYeeFUL/9JPZAJ/6x/i/XIlZV/xfriNA5xfnFfXf+eWUfprazSh/hvrez2i3/Bf90Z9Gvx3f3/c9/vWU9z2tibSvPSHG+EbvO427ZBysp7zvs8WCfyfyPg39fbS30p/PqIfI3/fRI/D5DHxu9v9HtIeAX3uNdt7FtKc+6/8mfv0vpiMX/TD0vzhrfJfjyXtw+u939OIi8KzrBOW1Kz/neyYh+7LvJ71Mu76f5HtKDZBrYv3FqO87BWH96Yn81aPwu1U/0x/GJx8En/9P+KvvkpGv304b4xGhz/iRC8jJ+bk+5X1fK3zfqH/GLfqhEvKtD931gBv1/w6tn8ON14sE0PfRfA/tX+jz/xk3G5dOfh/4SAL+cvrfMy9V169d/y7aT0S7q8Dv+8SdSMu/65Xrk/E3zvuuA9ox++v/YNy87wTQ/ozQ+9nb3X9B/wjXbdd5YGn4TBjSi/A805z9onaSb8nXTjKN+f0w/VdYfzL4039ztPNoJIBHyP+a765bvjc8h3zvw31/Uz8Q768LsH4tZpwc9D1t6uvf7b2Hft76d88Cn/5t+rv95vs8ofsd7Wza13w/x3jFguxvfT/H9w1eZh/gOwfDqO976L6XvhM9m0n/1Te+C/7D/+eyHXr938xp6OuskD/mMvK/oP+MN9Iv331N2H/d/3Pyf56MBzUOdAX8ZNauDhyC/hSDv6y+I6EdGfylQ/Y54xiMX9A/yn2b+7kzlN+FfLzH8n8vvL/ard8ReCeCZ6jvW8GP78beQK+Oav+k3yYA44AvgC+GdAf3HdrHwF8KuR53f8/+Zy31G0K/9rOwP8ht8tNq74ef+r6Pw7j8gnGwCZgJ/TN+4qbro3EqrjfaW6BT/yL9jVZTvxvt+n8f98G/mn2V77Q7/72K/vqexnHfLdEvQfsJ7fek3Tf1J/AcwnjWPrVU+27ofZb/rRvQ6fqhvcd+KUN/af/Rn8n7PO/x/kC+vus6gPq+y3vX8Q2+CP2QmHQ7yv/XuxeJIwFMC3++1+b/3K4hPY71byzwRebjGsjzJuWNc3a/f1O/MeiJYZxeAc8I+A3H9y+Brq7kl4Nu/X70A9L/ZyP0J4WOCPrne1t/gr8c8vgZul4jX3vKZfK1t2hf8X0f/wfyN99vgF7jf/Qncj+4F3qrgq867SQD6n+tf+R26QOf/pGHGK/eSxdgfj9B/Xzs97VLZgN6b+u7EN7nes/rvqg07emX6f8l7YgEsDb93dn1jO++X3Mh5BcWA17vR8ojL999CfufHtcfgHrZoc/3Z4exHk1l3fA9sY7Ip4l+TtRfij48Bb3Gxz2L3ix2naO+75Hpl+c9nfGVns/7+7536Lxu/H9Wz5PQ7/+veL52f/Udac/Xl0gfRU/6Qm888HRgvOgP/gd6vpl8///Z93mNZzJ+6XPGwzHyZzBP+P6r/mf6ndWGT/3P/D947dBh+3My5NGSfmkMLO/7H9Tz/aZ74PP9psek30M+xbyPQJ7ez/puuO9sbSM/HH+uH7n+LsYLFgvZBfx/Nfcl7keMIzH+2Xj/4eDzPdUXjXdFng3ppwbAZ5GP/jXeI10Gj/41vlfq+6W+Z7qT9hexL/bd0PB7ov8HPIyKrnicdZ119FXF97A/dEp3XlI6pZHukJIGAQkpkVRKQUKQUFpQpFG6EQFFulUalEaUlBYp8bfWe56HtTzr/d5/9pozM7um9+w9d2KyqP/3e54xgK3SBbBa1gAeTxvA8lkCGCN9AJ9mD+D7cQOYjfzomSiXLYDxKV+b/O/jBbB9zgBuSBHAeckD2IN0CfiZFjuAf8NX0yQBLAidguDPRvoQ+N+D3i+kP4Lft+CrFfSvga8G9CskDuDMzAHcCN1l4MuPPpKCJ3OGAEaDfhX4+SwSwHjUX8/3DcjzM/jyxA9gXmA+4HvU65gavqh/ju/rqF+C/Lboqxz5aaDfL04Ak9PO8ZFzG+37HH2fRo55wMLUX5YmgNf5foX0XepvixXAOi8FsC763kB+DvjpQL1V6Ck//O8nvyzl06HfBLRPFvI/Rb4i0PuO9Azk+oJ+eAD8tcE3EP0cAe9h4GboDyU/G/IVhd5x2n8c+lrA9yeU/xk6OUhfo3xd+GpE/+hIe2ejfnv7M/mVqV8P/dQHToL/u9EC+Cffv6YfrIPfetRvn/6//B+KBLAx/DSg/z9A/mQ5Arge+R7QD94DnoK/BeDvhbyrqTeP9ikdA/6iB7AQ9OdCNxN8n+X7IOinhP+aMQPYMyl8Qncb8CjtfRr81YHdka98qgDWAN9rKQO4EPqxqB8HOIbx0A/8bZCvJ/qOTr3+5MehvRIDv4b/N9BDF/Q+Tj2TPw79bEwYwE3AMughC/Rywvda+mNc6n9Ce7Wwf1FuCPTKk78aeTcmCuBS9HGW/viU+aQW89oUvl+CfhLk+he+6qKnNZSrRftNR74m1KsK/T60x1j4zkl/KIR+rsPfS8jxO+kDyLMQugcjAWzN92bg30W9uJR7Dv0xtE9p8t+iXkHKVYX/+3zfBP6S6O8q6Qj125FujBzjST9jXqmEXp6Svgv9A+DrxPj4EH0lpD3XMr5mMK7ast7cot7fwBXotyD1r8J/dtotTYIAZqP8YvAfYH6oxffT8PE9/a8t8pdBnrvgf490AuSdqZ6pPxb8K+m3N8GfjHqzgTuptxq9uz5Uh//erAupqX8QfspSPzX9by3tet5+hn5nMF57UP9d9JEe/D9QPgXlN1IuJekv4a8vfFXk+zhgEeQ/S719yJGU/reA/DropRHzVBX4fYo8x8jvirw70N8UxuVs5rlppNfBfzvo2k5ToXcR/M7nrk+9kMf16Rr1qyHPVcolZfwloP+doB2XwEcC6pd33JMuBswF/ynQ2yjwxnBeABamX24AT2vgWPh/GX7nUn8+8v0SCeD7tN+rlL9N/kv034rOG9A7jbz1aJ9nyFOM7/HZf7R0fwC+erTPHb7vRF+9aM+hfG9D+cvIH4dx2w+YhvntIvReg78V7gf4vhD+5qK/Me4P0ENd8E9y3PE9PuWvwc879Pca4G3IfD6c+gPQ90fUewc6R2j/GOTPQ7//UC8n+WXdd5Af130z6QvoIzH8HITfyaR/ga8F1ItG+bTUHxoJ4HngVsovQv/fo7djpDdTrxvtb//YQjn7xyvQG4g+VgGbM7+uC42n+9D9GnkzkR+X9SgD6euMl8uOZ8rfQY+VwHcCPgcg1yzgGvLX0P5rwXuH/JzI8x3852VcpoL/3KQXgL8G3+3fl+jvLcDbHD7/AT6D3560bzPqdfR8Qn5D9Ov54hjlXqUdypMfi/k3JnAz9GuAf6PnQ8c7fG2gfgH01tlzI/ReQT/2r+j028/5/jf400MvP+M6A+kF0KkG3jeo/w5ybnd+R97f4MPzWTfKXWL9meD6QvtEg369KPDD91fkt4TPmey3fuZ7AtIlqN8Kvb1nPdKr0dc56MZBnvHwm5by9+C7Pvm74aMb8hVjPTlJ/i7KDyf/HPJFZx5ZzXmpC/hHUO8Z+ujvfAR/o+FnLOVyRQJ4Dfnv0x5b2B+dodw+2qM+/Tc2+ybPkfXQj+tZU8bDN+AvDf87WV8e0v7HGR9F4W81/Wcwel0I3cfgT0a93cidhPRN6NyHvvvhHfD3M/23KHpZAt4e7ofhdxz4vmMdyYKex1Dvb/Qzl3bojz4uQj8K+R7xvQ7t4nzZjvYdjP4agP87+JkOHc9NnqM8P71NOhly3UV/x0kvhc4x5L9Hf2xK+85mfpwAX+uh9yb5+yifF31Mdb0D30L6RWX4TeE4o31c92yPC/Tf38A3F/p1GFcjgF+ANzftFwu+WtIfzrkOIm9u6PyNHIvgrzn7tU7ApcB/4W8x7dsOvItIN4G/Lsh7HL4zUO535LwP/13g+1PSnoNrAN3XuM9xf9Oe9Uj7TIJIAC+QnwA9dId+bNLpKOe5NU7o/DqJ/InOVyn/y29/9NQa/d6i3gy+v4/88cnvzvce8LEN/WVFP3uofwV6+ZF3I/Vrkf+M+nNoz02M2/z0+7/Id/ztQ96ytPN+0q3I38q8cAw8e0hXgr/3oXsB/a4Bzwr6R2b0Vh35SjGe1jE/fEz9usizx/2q44m0+6Te7m+RryP8XoXfXXyvCH9XoBeP7xeZB/bS/jvh6xH09iDHj9TXHtfQeQF6j+FjNu1ziXpp4LM9/Fxg33stEsCq8HEPet+hn6+A8+i/1aHv/NGJfdlx2t95ZAr0v6Heevh4mfrh/Zz7vMbuF5FDPVRA32+oR/rNFdr9k5B9N7n2A+onBd9I6A+Ef/dZ35Oe4fgHXwb024h0I/TjuWkY9G5rB6P9bmv/Rq66rAfTIshFe+wGz1jt6fQ/7Xkv7HzI04b8Iei3M/y3otwV9JeY+v9C7yp890L+R/A7GP4P2Q9JN4b/G8xT/5B+DJ0u1C9A+ifsFXHg7zr8RZGfjPJl0K/9wf6RFPz2j/Lwv576dSif2/2XdlPwLqL835RLh75GoNcEfP+N+g0pXxz6X9PPPX/UQu5+tH8EaDs1pf4Q5eP7JvQ4ivwfoLuH/OHQq629Gv61W7dEf1ehfx697AVPT9pXu6jz9hL0cVD7HHhTRwJYmfyW9INDrsfAnuSXg49XmFe9N5pIein10/L9sec85qOY0GtD+d3IGU17O/wX0l5F/ZK0V0bkv8i4PgSex8AN6C98Pi+Bfr+C/rfkx4FP+3Vy9DMevvLCR2/qxXN8kx/RHoW+bb/+jgvqf8v3KOcvvlcGXzLyf4d+PPh76P0W5eMj/yjSF0J2zePap5ArBe2/kvKpwLcZ/O/SnjU9Z0N/tec15EyFfJu137Je7gB/fPr/A9dPvucFjna9hM/09NvLzhfQLw0/SZDLeyTtpNpHCzi/UW459ZdDvwf0jlH+F/bj3lc2Yj6/wbq0l/Rhz43Qe53yjfn+EPzaa9y3vqE9m/Jl6I/aS4eRf5d87WO5wZfa+Yb0CMZLPupNZX1YSf/RvnQS+aeH7HmLaY8lwCPgG4aeikK/BvUWg0f793L0NYn8Eshj+46B34HavcE7D9gdff6NfgvBl/OP/K1Gz8dY7xOhn9ehP5r8P9m/LAbPfu4fGrjOBiCqJuvrAPibD/+ee+dD/y/S2ge1F2offOq5DfwTkLsS+ano/+W0Q5P2HHoJ/V6Evu2YFfppKZ8eWIT8/vC/3PMoUPtkJe2jtFdL6s2iXJNIAPN6/+l9Nvw3on4J8FWmnvooB331qX7Vdxf4j05/KIf+BsHPYehVYb96gnb+kf3Rx+hPe1s57/2xr2qPKw7/C8DXhnpn4O9j2mcscAzwuecVoHbf7Jynbd/qyPca5QY4v0UCuIF+nRX6M9Sn9kvkGs3+bTTpbtox+Z4WubqQ9v4rEd8XodczwMLoMQPrWy3gTe1I2rmQtxdwLvjnMX4+hN941KtCP1lN/iHKa1eNCV7tre3J9955pusJ+hjMefkqMCX94SHyVSJdGTgG/Wv/WRMJ4EL4cR/oPief+1PwraA9EtP+zZBvMOXikv8c/tPRHh+Bdx3ydIPuN/TPLfTLicw3x0PnQc+Hnhcrwt8G6teH3lzwlKb9b8Gfdviw/f1d+HvMvN4aGMX4nEa9nOCvBb5CpDvB11XkS8X+ehX0HT/tHT/giwcfnv/PAL2X9/y/AH3GjQQwAd9beE4A/xjq5QS/9jv3X96LVKHcNeprb82j3QP9NoK/sN0xG+WaUV9/nMOUexf6P1E/lv2a/JGkr6G/peAr5H6FetvR/ybWy43a+YATkS95SL+eIz0/zmRc3iR/C/mu/6+il9x8L8t82IHy3jdlo196H+X908AARGUi/Rg5q3j/T/98Av6nyN8B/t+B/zLIXxm+OpOuSPmT6FV7nfa5O9TfmOb/L08SxrvrWkXmCe3ZFZBrFfmJaZdP4e8P8N3gu35EP6Pf4uBfzr5hGVD/pm2ULxAJ4H7w5GH+qE39OsDy8Pc17f+M+eI58Ahy6UfxG/yt9DwEvaHUj898XpZ6c9HXeOofJu242O05hXz9FbKTn4f2cJ9fhfoxKa8f2En0k5j+VIR+Uw8YHz0tQd7PqD/X9kJ/3p95T+39mf4DsZjvpiH/Peaz3cg/Fr2NARYCTwvaNyf4lkHnOXImAZ9213HeGzL+antfzbrYAL3dpD9tCu3/i9G/nK9mw98E7YnI0xq8ieDvO/j5k+87wTeC/M+ovwD+JoO/MeX70R6z4K+M9mHSWSj/L+X0Y3kK/1vA/yvlm1P/a/DH8f6W/IHeL1P/Ee29kn7QxHWD/r8X+vrvJKa+94XeL3mv5HjLS/4E6A8gnZf6TyIB1B+mO+2pn4z+Tz9xPoiR+r/lPyY/jfMl9TyXbQRfEehp989DuUfopyD923voQqRzIf8O+m8b6NxnXCSkfU/Qv44wj//EfFqH/pMQul31CyR9m/5wkvKb9CskXRP5EjNePAeFzz8HwFeY+t5XeT+VA32E/RvSkb+Q9koB/uvg177d2POn5z/wnI4EUH+qiaF+2op8z/Oe8+8yPpOhP+8NjoA3DWnvD56F/J8853u+1z9Lv6x20O1Cfcez+w73IZUpF7b/vOU+H/1on9cer31+Dekj8Kc9Kxt8zqF+Mv2fvK/QDwv+09M+u+HvAnw1DPn35QD/MMq/rH3U/T3tth387leyuO9VfvDtdr1n/1qafr8BeAc8rsdn0Ocy5KgP/crgX0r5UvB3C/zVoHcFWJjvZ+BvCv1hMnAq8JT+xtqXSMeCzjboq48B6PMKcl53/039z+HzC++hkEO77jDvPymfBfzHwe++zHP8M+8v9X8Guu/W36w43zt6vwifFSMBzED+FPdNfI/j+Qx844Gd4U/9uf7rv6g/4+Hs/6VfQ38RxxHrv/d++qt675ca+W+x73+dejHQYxr4GUb+Debpm/Qn5/Gwf9hD6usn9pj1Rz/v/qT1m80AvO7+GHwV4G8Z/cVzvOf3UegvHuels8xv54H6P6wD/yDk0164Dv5fh59P9YNGr9XQVyb2LZmBheEnNfJ4f/BMuwx8ZdO/CrrJaZ+T3ndBJwl4GiCX8+acHP/F/zX67Ub52/C/jP3Or4xj7XXDXS9pv0rAnq63+m3B95jQeUT/xorg836gLeul+/Ne8O15xXF4i/oPkP8H+PkNeZpB7z3Kz4Ovh+C5QP3eyPs95X9FD/Whr93fe4DfgEeRQ//kJ0D9uvRPLqx/O3wOR86a0PPepR50X2f9Tk3+Iu2t5DeiffXvGw3+JpRrrP1XPWPPLA8sB+yjvyP4/vGeGryZ9ZekPW6yPtzR/gD+PNCfpX+B5zjkfZf+PBDoecb9x2P6vf4p0Rhv0fWTpd3eYvzkIm38QCroL44EMIf+v4xv903/aOdEzlqUD9/XuI43Rv6uyHuVdrHfFYZ+WviqDp6X0OtR90fodzzybIGfHtC74vjVLsD32vSfCZR/lfpF4X8r4zsv43In7XoNPbtOdIevXPCtvWcH9b8Bv3EJV51Hka+h/uvke68/FvnGoZfx+g0gRw3ql2D+6wQfe9FXbvgrxfg2fuZ11hP9eUprTwKf91SN4P9V6m3ynhp9e5/yJfQnQGcOfO4k/13G7RHgL8Cn0NlJvZzM+9GodxL6r3teIP2G9l3Sa+jPnitH0s89X85nfsnjvgl5R6LfrORrXxmMHmOA/xD8LQZqh9T+WI/yqbxnCp1jLpEeSv+4pB8W+h6KfNuNF2P8pYF/722q6r+CfpbC/w7my+3ASdA7qn8N/EXpTwu99MgX9odVP23dfzAvDaPcR/D1CuUn8r05dEqAvy/yTaJdLuoHTHtNQD9J6P9h//2T3tMYtwGdcPzGWOaP4qxzY0gXjQTwBvXcrz1yXSGdi/L6aeSkP9SGv0/c/8NPA+P4SGcn/zxwqfZL5NUfO1pIX/pnu16lp94Nyt8G1tafFH6q0Y7nqLeL/pKf+n3ZJ5Qn3/hC7bDal1KQfxR95mfeuAidIt7P0/6ZPf/C92X6Ty70NYLxmz0UjzpDfzLoP/JeBzq5Q+X1PzB+tRP1S1JeO2Bm+mdl2qO58wLtWUx/VOM39CsgvZXyZ+B7FXr7l/lxF/T1r48OHf1sfwB/Wu9X0EdV+vtV+BuC/tNDbx1y6n/g+T8K/K3B+xr92/1EBeB8+I9Pfcd5TeOZnF/g5xr6jmVccCSAveHPfZDxtSfh3/jaKOP/3I9Qfy/0Gmj/hW590hnB7/mpLfPGl+BZRn5G/d/Ir+F+Tvsnac9/jpPoyB9uz8G0TzT4TMn6NBbYnH7+I3x4/56cet6/50cf7uurA9PTP9z3u590f9k4tL80/iAl9PTzqER5/bftZ/Yr4znqcH8whXXTOM2f0H9V5NT/V39g/X+N55yNnrUXGt+ZwP6n3zf8uT6cob7xn52o733PTeafO/DTB7y1aL/q1EvAuHT9/Mr7I+jtAl8Mvm+kvvcP3jckJj0FPO6PnJ+cr5yfXJ8zeL9mfAD8pgy1h+21kP4wB3kbUm4J8FvaSXux9vXC8N+Z8VMs5N/3E+UnGp+HPJ6Lvb/3fPw9cn3ufS31K0GnPviNK3Q/ewb96X+/GXkWu96jH+ObE5FvnLPxzQmYN41/jc0+Q/tvV8p7f7TN8Wx8E/uuf7Sjk14pf8h9lfnNfaD7P/1GvC9vyvxyy/ON8dLw0xb5R8K//jiNqb/XOE3nG/3jwbPc/RP0M8HXJOp1Ql/ToVfafSd8u/78Dn3jb/U/3ui+EPrPAhD1HXSn6QcGfe2pxtsbf6//R9hvzHFg/7iKPlJSz3PkD+i/NN+jqH8CfnPDfzPkaQ5sAUwBP9rfB7AO9qN9tL97fvXcqt+m57/93j8bt+v+Cn0ZP9kIPoeE7MO/QF87hH6yxuc4vxnXVIt8/e/ehL73YcaZLfL+F/w5kbc05drQPto9N5HWP1X7Zz76l+ey8HmtDPN7DuBR5vdD4Ont/Yv7U/j3fJkU/pxfnW+dX4tC/3rI/9Bz3iT6YXH99cifAH79Tx5Q/mP40P9EvzX70Y/Gp5EekPq/8uoPnAr+MiHn5EgA8wI70X+a6IcLvq36e3p/Rn4WYB3o53T+An96+tNlvr/p/TPrx3n7FXgins/YFxqnP4d0W+/bQ+fCarTzYPCH/Ukb6u9Ife9zfZ/Cdyn2UL8Y8+Uh6veCP/0vR4biKoy3iKJ9PJdkJX++9jvoxGM+j0P6VeY330upQr/0Hu8x/dP7vI6OD+rdJ90M/vSHVm71oPwbmV83AL8FHteOy7z6LXqMGP9H/T76g7E+ac984Y+Bfi/QLpdIp6T+dPSxDH7Xw99y0q6nf0H3G+AO8sP+XSvZf+jn5fydHXr6Pxgf5P22/qz6t/r+zhL0+Qn4m9C+8+gf47QP0B7DjTuE3k7w6WenX11F5CwC7Arc4X7d/Qt6O0s/tN/fhX/vbd2/vwz9fZEAxqLdsiFPHfhtCv+H0O9r2vVC8e/GBb4DXuMFl5N/jvRo6i3yPR3yw/4pD5FDP5WqyKvfsn7M+i/rXx4b/A3g833gQ+p/7rs6lBvgfpP+OIR9WGrS2t9998X7rnzQGxehPvi2g6+z52nqp6E/lASmBTagfE7vd40DCe0fK8J3M88H+muT/6H3dXy/7X7G+1vw9/SegPQs+CvI/igPsACwIPlZXV88f4A3g+cf/SVCfiuuz+29X6KdpwOTUs71x/edvN/dBp3k9O8x8N+IeeRP1z/o90cP5+2v4PP+tyb9wftO9ee90lyg9ybeL3nf8SPt5n2I98RrAxB1BD6ND5mh/xz0niFvU/hcqn0Cuuq3lf540B8B/eHAMayH3ietZ1/n+wW+Z+D7BcZBZgWv58TMxpkZ/8x8Eo6/0/6o315p7VTwNwB/yPPAefChXV//MP3CamqnoP2MS/Edgnjg1z/2XdrPeUT68qP/t3Y8zxUJ4f8w+liL3r4FTnN/At7P9PuAD/WTCv5L8934vYzkez/uvfgY8hP7jhPz+mjo6kenv88q5p1jyLXSeGz96IHhe73Ojg++G1d3O+QfmQk6Z+BrofpC/s3Md2Po1y0pN0R/J+ONwe95wP2/fM/Sv8r9q+d//QND8WqdIgFMB33vn72P1s+mSQCiOhqPDb1+tG8h6hkXb5y88fHeh3hPMs77ffQ3Qv9b53vkS0s6N/Wmu36iF+2AN6mvf+Bu9Pcbaf23hlIvHP+Wmv2q+2r32e6vc8GP91dn0Es75Hf+0J/mD8aV8Xsfgd9zlecsz1f6R+oXWYt8/SO9hzceaaj6oHyE8WX8zyLS7o/0DypH/ZLGLYTsR/qvakfSfvQR9ROT/yH5O6jfjv1iT+bftsY5a38w/iYSQOMevD91/vCdIeNH2ujfRn52+NEv+gT0O/K9N/pwHD6mXD7wev65Dh/aV70P3UI5+/PvtGMW+vPnzBtLmUdKwOeXzNdfACezHnwAPd9LO48+3L/5flrZAETVc1wahwKf4fdcPH9/4vtP1NMvW38Q40m+YD83E/glsLt+UPqXAm85L+nfCv2t0Fln/CT19etd4bhGn9tD8WvGrRnH9hj5DtBvfMclLbC775NQrwb6e2KcHvz5HqH2P+2Bedxf8b2F71uQb/x6DeZd78+3gu8N77+0F/LduHHH/3Hy9Z/qhx6M701Bfinjc/SbRK4TAXjxHpnvky1Gfv07j+o/RL7+nc9Yr6KxLwu/B7Hf92WcH0l7vunLfPEMOuXBr394f8qfBa/7usnk+/6Z7575Dtpe5WC8OH7KMN98hbw/o7f2kQA673h+1W7q/b/2VO2oB7A7FJe+cf/e01Hfd3GM8zW+d6L3Y9DvC17f4VvG/K2fdn3o5UV/3ZDPe7gOnjegb3yz/cL+YjxQBfYnecFTzng82rc+5Y/Dp+8AuT/N4/mK/Bneoxhf6HsZjO9t4F9oPAlp4/d9t22w76PQv5pQ3/ux4+DXfrTd8U9+TPj7l3nxH6Dv/mg/SkL/qcK8+Y72V/Tf032X8fHQTQbUX1q/zVm0wyj4MD7ZuOSZ0Dc+2XOd7zr43kM/+H+J/VACYELgWepno3xf+nU/oO+ruX/u53qBnjogX9g+oL+39pNd0GtB/Z2kH5Kvvc97ianQ9X7iHnr1nalqvr/l+wD0U99V850131ebDH/Gm+emfZow/lNBdwp8uO61Q77l9J9lwN7gOU++734Ugd9S0PP9j+q03ybt68wjtbVXgneQ/kbaS9GD55ZffOfM+G/f//BeHHxh//Hd9M9dwC2h9zlKef6gfB7v7bx/9F2ASADD9iftaFfgRz/bxNovwO+7gtqn4/n+D/BEKJ7cONhm1PNdBu0wG0jPBxrH4XsGg6DfGL2/DJ2fKZ+XfN8jWcN3321u7f0388YgYELjH+k/3i91ZZ7NFwngH/pPgdf9j/uhbZTLjv3VuHbtrsZPZPRdIOZB75lO079+p72L8n08dCZ63vA+OLS+GM8em/FYC70NCL3TVQn6deC3ImnvBz13/Qn+8PnL97HC+++Z6Lc/+jBO2vPmJ9C7A/742l+047j+o/dnQO8xPA/dYr44i1wfoLcbzA97oHfYeVR/FfJvovdt1NcfS7+MRf/DvtDU/TvzVh/4yE/a/Yfv57peu377fu4H4NsI3EB7f2T/hq7xFsZJn4f/M/Yb+D5L2vjAKr63hB5iG29J/jTjfcBbAP3GhN+CyFMA2B74i+sj+kwGdH/hfmM+9K/p94KeMmnfRD+96R9dnb8jAVzuvTz6MT4pNe2sP00yoP42pai/G/qJ6Nf6mXp+0p7v+wB39INFv9XIN+76E+xYdWlf7Wva1R5BX/taLO8DgDGBvq/b1X6FPuog7xPHj/7ttIv35c6rk1hfJgOnAKd636L/RiSANzkP9yK9nPUrPvTfJH82/Lcy/oTyYX8V4+dWa/8l/y30p/1L+3he46mQz/cjfTeyKuUreD/guCV/BfmnXT9C99quJ95v6x+iP4jx1KVp//D7Jb6X6flvKvtC/Ur1N43hPEd/8N2ewtyveV8xiX1zT+0kxvWD3/h249p70H+Mb28G3mLaFx3H6O8g+I2PNF7S8a2/cjrf6/AcSNrzxSTqGSfQD/1+4L2Vfv/g873e3L7fizzDkcPzn/7a+m/rj6//tv76c9w/+G4B5Y1/MO6hEmnvXzqF/JfKe0/N+MzgvtX513sQyv+l3y16L0B79IP+JMprv/EdeO03ZcUX6uf6wWdHP8Z7XGa+8L3tHPBf1vmH8fhUfzzWA/14N3gfhnyfaYeF343Q60B+N/Tb1Lg4+LwN/Rd+q9CbTTn9WMcZrxcJ4B706fu6+j/6vqX/m7GScvnQb0Habzxy+B5rW+Rpw/enoThv3z+dC95Zni/hJyP8foBcB40rQv5V0B0FrALeg+T/r3vniciXh/a5BB3tiIm9X2T8HQK/9wkbfCcF/kfCVzvSlzwHgS/8LqH22tX6LaLHaNrZ0MMH1GvKd+PzfqR9fQetsv76pH2/rnIU+Pg+mbT7Wf9vQ/u4cQMFfD+WdXUx5cPvn/jenHb9sL3/pPqEX98RqYL+XX9KG4+KHJvR7wTyC4Ev7E+bn/VQP/aw/7r2X+16xidpD7Y/v62/vv6tzi/6RbIujAJug/+7+lUAF0F/HfL6/pX2gHB8dRfoTSC9zfUf/X/M+BkFbB6Kn/bdTt/RDb/f2df9K3An7ef7Mp3p39eo15W059Ec9M8dofgF31fcDv/aD7bDxwe+nwY+79u9B9tP/VOh9xV8h3ua8ytp54nw+8iTjTfju/OdfvuJ0JfvqrTmHO37Kt8az2CcoPMp+o1Pe2c1vtH/UQF/+P8S/B8F/8ehU8i/0Pd59S/UPqPfvX74vifnvjUz+ML717fhTzvGZdppKfz7/x+9A/Di/sz///B9wprg32G8DPi173+hXyx6WwX+VvoX+b8ApJfpT4v8ScHbFjp9wKP/5WPXN/eJxm9CVz+YCPX1f9nC+Poy9P5ZBfD7XobvaCyzfzne2Bd4b2t81xLyjY+f4b035XKTf934cu3yIT/jBvDl/uAY/Op/7Xv+vg+3X/8V9Js+5Jenf0AH9GTcg37p4f8buEz5C44T33OAjv7J5/R7AJ/+yZ6rPGe9iOMDj++xjKC9l7k/AJ/vBugXGn6PXP++V4BFgdpn61B+m/6R4LkcQQ7416/JeUj7pevCBfgvFFoffM/jCfzMobzvS4Xf743tfTr0FvE9JvX7wE8C+B/B/NkHvVaHfnLqdyTdAfiM/tgC/uqCb6XxMOA5xfgoz/rqvPZSaL6rDd7ZzPulSP9Iv9QPVP9i/UT1Lz6IPrQvaG/w/OH+0HXUOB/3hzMd96H4EseL/4/g/Yn3Jtq3siHPfPgzLtL3zY8y/x0BGl9TnnKur9oXtDdoX2iNXvzftrbg6Qoe/Wf0B9F/Zij8+38/ffi+Wrnh93fwe6/Xznh36GsP9VzbD361ly7mvPkZUHuj+wffufH/0NKF7Kf3jWtWL+yH+5Cv3ewb+N0K/54/j7K/mwod44iP0j7Gb2aivvGJTXxfW7s8/ObzHTLqa+/V/ts//X/lqkT/W8r+JRx/31t/RvD3RF7903x/1f2z+2n/f0H7ifcvJX2PHPnD9zl/MG7Uv+/C+/8Waxkf3l+1gV/9nLxHbU2+/z/lvHuC+e8U+Gc678HPBfrLPvTbDfnqU38o/AwLrQfal4xncr2YynzzKfAb5ocf4M+4ZN/l8J7Z+8NEtE9r8j3HeH4pzPdx4NMfPC78F2V+fEU/EOBB97G+j+R9gfYB8L/m+ZH8NJEAXgEWY/54k/Ye5Pmc/YPvNy2H7xVA329qSn/wXWXfWfZ9ZfcN+n+F48P9v0n/hzJ83uign4vvTVD/JvrZi7zbgfv0nwTPq7RXBt819D4Q/fh/GP4/RhLoXIT/XODxf+HC/xdXCf3cRY+T2E/NAf8D+p/xW0nBk1N/IPK1q2tn138wrv67jCv/XzAn+tnN+NgDnEO/s//6rqrvrBqf9TH1fbdVf6z79IMmtO8T9JmZeTEjMA/1jcd+G72dgo77133wv590au14vh9Af/pffi5pmF+Pgtf7EeOLxlJ+L9Bzfm3y3zNeA334TqLx3ffYF0wynoR+cCqC3PA/hPR69HU3tD/1/xXcp47SH4T64X2h9vcX/YK0/wdXh7RxzUvovwVZT4xvdn8a9vN3fzo29L5OWfqPcY7GA1jvD9rT/WFt4ylJa2caSHvOo3xG4B/ocWzIXqCffwfkn+A7K8ijv1wf/dS9v6ee8X3G+92Dn7GMu++Ny/QeUPsM43Ev8+SHxlfSH36lf78M3jaU7+n7Fc6z8NtSf2za5x7693+1Bvm+DvW1l/VlntDvU/+7U+B3Xc6oXZr6L97n1q6nPdb3bajXQrqUKwn+Cd4feu6h/X1forX3k8Yf+N6L9g3o+/+y7qO8n/H/TH6Cj/D4C7/v7ThxfJxhPe9KO/Sgnz/X34X656nXgvlgfGh+mA895wnnB+MfjHvwfySMfzBuw/se4zn0Bwz7xfqu3ij61wP6zU7tXszD2rc20Z9uUn8k6+Qt6v/qfoz8S+xjT5Pv/tf9rvvfuPQP78+1n3iPHj0SQOPD/V/F8P8tGo/h/0VGh4+EofXhBnRdJ1wfBjmuobfEfTD94wbtuYp2Nh7M+/a36T/d/Z9NYFLot6X/ej7xf6D8/6cYjKu02t+1Bzg/+b878PnUeHv7M/oxnkH/8TXGT8L/58AHwFLw5/9rG+cXju/73P+/he+awF/JN97EOG/vE6cY/w49/+eyCe3r+3W/0r9OA/WHOhfy19H+dRp+E4K/F3i2RgJYEn2sQA9r0VdF8LpvvUV950ffI9hPezg/+h7nQOj7fxW+9zud+dH/+Qj/H0M0/WKg6zu0xWkf33NqBvS9Q+MkM4JXv3/feTng/8+g7xXw5TuQvs8wjP7axDh09NAcvJdC/D6C/h7t8OD3ntt3WLeAX/9V313Sj9342BfvT8L35kgA9YdY57kE+DL9bQH1/f+mY0D/v8n+8CvrgX71vr+nf31Z9Dpd/0raobfv/4f8Z/SnqQJ/3keG31fwfvL/AGyedZN4nHWdd/TP1f/AP/aeEZlvu+yZIlvI/NgzFFIJ2XuEbBkJfW2ZScYnOyt7RiQrRMgo2Yn4nfN7PR6d43VO73+e577uvc91930+n/f9IEPU//+GZQvg5vQBnJsrgLtSB/BGJIBfpwrgRcrnSUf5TAE8SbnNOQOYPm4AE6cJYDTpFZkD+JD6v2YJYCbwVANPefgpCp8vkI6h/AtxAtghcQDLkd4PnpvU+yYrfFP/K/DfSRvA8cANzwewJfXXJg3gkSQBnE96xgsBzAy+ztDZhlwrkf/l5wJYCfoL4wWwBPq9jT7OQC8aPHspvz/Vs/ymyBHA4sDC0O+FPp7CVy3on0C/JTIG8Bz5U7IHMC/0GkA/E3J2h/62FAH8Hfx5wHOI+impf5jydZMHcA7yZab8AeoPgk6D3AH8C/7XUD8r+YvJLwj+fcB3wfca9FNT/kfgJvidSDtkpT3LgH8a9TNFApgT/WSj/APy34D/xLR3CmAS4Nvgq5gogK9T/0PS+xkfe9BncfpBFvrpXfI3Qv8K8rVGHwttX/kBjqF+M/Iv8P1b6g1BruToJ3EC+AYmBaaE38HQbwOeYvBRF/mbJgvgUmAJ8p+SPxO9t4VeD/Lzk5+E/paQ9s8I3THIXwX6Ryk3j3KnwZcBfPWR9z3k60e6J3zfAF8W8HwK/QXg3w3e/4HvCuWPkJ6BHK3Q41PadyvzVgzt1zplAI+T34l6+eHnLdr7PPSvw08p6OdE/uPkOy6b8/0x88G3pK/DzzjotUeeCuhnGuNtJnS/oP5O8H5P/cn2T+TdAT+bwbeF/PXUS4s8p5AvM/ldqV8G/X1I+U3wFxd51zP/LAT/Iuo9AN8u+I/FvBsHPQ9Hzy9QLjb47oCnKXS7w98axtsP9OunsQI4xX5GvbPweQo+7sJfF75PRB8J0Ocw+JtL/WPgsx0G034HqJ8afFnAc4j5aw71W1N/APVfjARwO3zvJ38S8vYDX230MB1+7sJ/T+SvBL/jkHs4ePrD30XGbUe+z6f8VPhw3mkMHeej9ug5Ketpk9jwz/x6mPz6AYhqRL2R4FsB/vTULw6cA54etHcy9NcbfCcYXz+RPgbervC3HPg9+M/SvxuTboD+X0H+j5gv01HvNv1lIfr8FH2PJP8l+PkF+vfJjwP+6sAqtO/oAETdgY/kwFfB7/i6RHsWBt8T0g/I/4rv9+CjJfUrkb8Zvn4C/3Lac6HrOviywt8K5G9M/Ul87wGdl5HvEf2mDHjbOp7pX10Zj8538+FvAvj/Av9Avh9x/JMuACwPvn3Q6QG/eegv2SIBLAe9luA/yXx2zPnW9gDfm/C/FjxvAi+D7zz0NiDXCfJX0k/2wP8Y8M5Fr2fgLxffD1P+b+T5Dfr5wZcVevvhMzv8N6O//wIcRv92/OQH3zDwz4TPr6h/Id2zdH4BtoJObuaPM/TruuDfTf1R1G9FvV7QS+R6yfdl8O/+2PWxIPudAsC70OtBfkf08wb894ZeF/R3k3Qn8jO7nqC/QtD7Gjzuv/aS/xv0FtMuV0gPZHz0pf5Z8vdBrw75L6CXjMBCyJGK8buKdAxwJbAC8k0GX3f09BZ4o91/kL8Nuc4iR1bq54K/WpSvgx4yQH858/E9+M9Jegfl78QP4C7wLWad/wY+MpIeR/0anBfGQGcDfJ+l/o8JA/gG9R+wP77COryXdHrqL0aeD5AjvH4n4fsmvkcBM9L+7uvc57m/24x8iWjPhMAyyJuAchfg93+sO9OA3enf9aE/Cbo5+L7K+Q/5v2K8nKP840gAf2Ud2sm57DrzzzzKez4sCXwP/fRDrkfwtwr9P+L7354n4Lcz+H+lf39Ce6yh/mbKeY5ZiX7cvyTgewvk6Q//tksi6I1Hb+1pn23050ec40uzH7hI+T3IVR94BHzr4S8BfGdh/GQGev6MR3584E74zAB/7s/juN7yfT3tk4L2jg8sTDnn/4rIv4l6v6DfWdBPDb8taa/OyJ9M/UL/LPl53OeCbz74h1CuM/12JfTtz53Q+yX4ewX6Lan/A/gGQr8ZeD6E373wc9dzNnj6o89+wGj6Q33wFaT+q9T3nLmU+WMN9CtTri9yHKR+esZVjdA50PPfBPQ3h/qD4f+i6y/5s8Fbhvyp4G/F/uo+6dX0t47I34p6+5C3OPyqn6no4zrt8zzwNeTrDb/x0U8f0gsoVzUAUbXhPxo9LYX/KdBLBB8VkHsqcjQl/3/IuZN2vgVfQ8Gb13OU5zjvv8j/GDyFIwGsA7yMPq7B9xXSF+DjGPW3wd9Q8NREvkrQbUF/e0Q5zx97SX9GuXzw5fy7g3GZHrpX0WMn9PuY+e495EoEPwvJj0P5KcwbR5mnltOevdBXU8/B9IeO1L/uOVa+KB+b+ik8P5FfIxLAd0i3hJ8lyHcTOj3htw38J6Fefubz88ifD3rPU68z+6Pv4GsueN+Hj+7QG0b9k3z/0vMD7bOP9nmO8udoj07Ae8C0jOfngGmAt7x3g77n6CHg8/4xQrkm8Ps2+T3Av495PTlyfQv+Zug3B/ymo/4U6PwN/6nIHw7eNsDGyD+D/fV0+LA/riBd2Pq0l+NvLv11AfuTd2135IpP+9kea6hnO3Wk/gHwn/deBznawl9z8DaKBPBt8N6yHah/jXq1wPM68id3X8L3cuCrRf4pzh/9SH+EvheTjse5din7+3XgKer++z/OpynhPyH7tR7OB9CLQf5+jLftfK/HeI5B3h7w3xI6I0h/5/6QcZ+SfeVY6Hmf3pTvN8FXhP5RGv7dn7svd5/+Nfzepb89pp3/IJ0A/AfhJwvt+5XzBPjbw18svjdD3g3o6WPo1yW/OHhvo8++zE89gRfhMxXyr/A8QPkC8H8Ifu4g/wTkeRf9vgP9t6l/B7wnqb8Y/gezb7nK/DiQ9EnwrUKeCHSyAWdB/3fwLwBvR+QsGwlgeff30B8LbET9t9x/OC8iZ1rqd0R/g6h3j/RVyo+G3zHAnvTvXfS/IozPwsAp8OM5tzv0C6HvXdCpSf3ByLURelvQ6x3yM7i/QF8/eE+Gfq+Qnwk87zqewbee9nqTfreWdDz4q0N/GQDdtt5XkF4G/s3gX0H6NfAnZHwvAl8vxnkM6WPIqx3sJfC+jD5cD10fXS+Xu18l/SH1LlPuDdbPjeDX3rAa/g6S3kF7/Mg4WoIcxZz/6W9/otez9MeekQDugu/10L8NPx1on1bgW+a5Hfrfk25Nv1nCvJICOMT7fuTPyf7H8Zqc/vu+9zXgSw3fOd2/UL4Z5V5Dbu8L//A+hnpPkasL/eec98HAeeizFvq9Bn73R6mA7o8yoh/v7+sBq0N/GPrJwHf34doDptFfpgUg6gFp731c//MiV0/aqT74PR8v8n4a+BX58ZBnq3Yjvt9Cf9sYDw/ha7T33eRXhN4O9Ldb+wf8D6S/tIJu+P63CvPeQfCvBl97yvdhPqlEOg794xTyrmXcbqUdUlA+mvJ/Mu/k5nt86tcgfzztNcFzLv19K/jH0m+Gur5GAngbedfQL/7R7oz83cE/Arl2o7cIeIcCk0AvMfAz+NiLfrUbuH//hv7k/j0PcucEZmA/uxo+6yDvSPQwGjgdfG3Atw6+tQdr/y2rnRp50iNHR/jfov2R7yPQVynyU6L3tsAOtNc7lPsN/G2Rcx56vOB5hf53DXgVmE/7l/YQ+pP7rtzwPw3+yoI3t/sH8j9C34/R3xNgJfjbHoCoh9Q7yvmgsvM5+loK/eHQ2w5/bZGvF/mF0NN3yHeedEXwpyV9F/xL6V/fRQK4l/RT+N/H/JiJcb6c9n0Y2p8eUL/a98nfSLou+BpSLjX8b+Je53P4b6p9Ff5vsq+cAv9L0dtJ0g/hz/EWm/wvSH9JOjHp5rRHWebPCPz3Ad/nwHERysH/RNrB/hkX/pPyPQl0ylN+OvK3Rp9pGM8x2lNJD3T+Rt7G6EH/g4LoZybjbgx0JlB/EvqZCPR+7mX4T8b3Weg9Belb0BsB/79R/t/+Av697qeAdxlnO+CjM/iWMw+sAH6I/J4HnJ9bgN/zwTjonwJ+Af9dkP8Q+kwB/20od9rzGOOpIHRf1s8D/NqtclPPefYG7Zee/AHeP3tv6vqE3vsxLo/B3yHwd/D8hFwX3aeRn9j7CvKb6fcBnxuoX4Jy9ekPr5Ge4f0P+juh/RV+U6Pf/LRPUdrjS+gvht/t1O9G/bjen7Jepgc+ZZ3oQH560hu9/wJPA/rPVPSSifJPkUf7dS7m457QzUM6G/1rpOsjfNaG/6I5npXb9SA+eJYi3372dweAB4Eztf/TfnkZR09J63+SAf0m0c5FO3lP34zvV6A3l3z143nqRfYZP+vvoH2X9nGcroLue/TvEvSHVNqjGVeDqL88AFGZ0EM/z7XwMwV9H4fPhehns+MP+by/9D7T+8sann+QZxV4m5P/PPP9JsqlIx2H/NJ8741eLrmvBk95yuejPb+nXA3S+g9oh+5EPf07+tA/5iF3X9K/et5wPob/C9B/QH3Pr/3R0xuh8+tj+G/ivpTvNfUf0v5K/c9oH9e/tbR3f89VjKNY4GlCuzcDrqQ/JKW8+4cFyDEc/K+Av4P3YfDdzvVd/xXG02TKfwD9VbTPcfTfif75E+lG0GmmfUH9aIegfi76dw7qd2L+b4J8+x0P1K/J98roU38W/Vu0F40A/7gARJXgHBuf9TI/42Sy87r3e/AxnvqX4Pd/6CM26Qe0327SL9EfDsJnbOrPBd819hEnhfS3z5hXtW+3hZ/l4Cvluo9cO6jnfqYQ7baVtPuJjMg3H352hfZnpZBnIunR+hdFAviE+u433H+4H6ngeYi09ttK9n/w16L/1AbWBL4Pv71pb89Jnovqor8D2teBY+CvIPp5HIB/73Wrk/4N+qmR68WQ34P6Wk1+Leov5vtn1B/GfPAxcCjQ+6ci4P2ve5yq7us4976pHyZyTCZ/tfZNYB76l/dW3lelAJaDv34h/9h2lkM/H8LvLPRblf5XifqLoO/93mfu98HXCDkaOr/rh+H+kPXuJvn6E8aivvtz9+WHvK+lHSowb2nXSUe98fD/gf4Z6tV5QP8I/SaR+0vv48FfmPGlX0wR0ico/wvz1R7a8xP6Z0Hbn/l3J7AbfFYBf/g+bDN0/kSObPD7D+kN8H2J9u3J/DeE+pOho792Ns8/pPNCty/1jwUgagF0u5Kepj8w7f8XsArfvW/XH2CO906kE8Dn6+h3AvyXB66hfDX4+ytkX95OuaSk/3Bcc87byPhupH0L/vXz+Bj6xcCvHaot5VqCvyXz6y326a1Ip6Z+XupXRe5L1G/o/gx/hg/Yv+kPUlh5KJ9E/0H0kxD6dz1/QmcN7dMK+U7AT3PGX3fvMcCbBzo3kO+WfkW0b3bwe+92HPrev11yvoe/XMi5AvlG0e7ug8P7X+f/MtTbme5Z/DXZf99nnFeDf8e5+xv3M/pnnSBdHLlzeA9E/lL4096g/aEQ+tf+YPss0Z+EdFzqe+880ftE5PEeemgkgG+E7K83Sesf/br2cf3kjF/Q/kM7fQkfFcC7Gb0eBn4LTEj9DujPc/Vjz3fkvwr98XwfDn39Xb9jfv+Jfdc6+vlu6j+C3p/UW0t/mwl/KYDlgPrtDNbflPUgNXhTARvTP8L+LPq59If+UvrFPvTyO/hnw/9M+DNuYgf9IRXlRzEfX4LOfNrtKPRGoh/9M71HqkH/0o9+Emn97JeQXkL97OD/mXbwvrkEeBtSr5B2Mug0Qt4GwIZA149x3u/o5wW+eaF962nKeY73/K69Xb9o/aT1j/6bevP1O9fPhfYpy75Wu6t2WNef76kfy3ULvmfpx0L/HE87es72fK3duQh4bnsPBr8V6G/aU7W3fuX9N3zMAo4F30PS3dBPO8cX/NXT/xm+PyD9Mvnp4O+gcTnkDwB/PObfkuIL0e/k/gG5vKdpQ/kf9ANyfwZ/xlO53zKeQDtSNPW1H3n+buL5h3ERn/z26L8IcBTt0AX8yxgfXaH/LfjPgWcl69Yc5sXWfF+N/EWRKxN81ERvEcbHC/Dt/Yf35J4fjIszHq4F4/c+6a30t9z0w26k9Seux/ylvUw7jPFhA+A/J/x/qz8m+knJfuwC/Sox6Z89b8H/Zdphj+dO8s/onwzdM8pHfj7qD0P+iZT7gXRp5DqKXAOBJ8i/Tn3Pz+W1C4Bf/9e50I2iP9f2Ppb0sdB8UY72y4D+MgFTsQ5UdZ/p/Z12CPj6g/Zz/7zGe0HKXXF/Qf3UlIuiXEnoa0eIoVw/7VL0i6lU81x9yv5GuRSktU8aR6N98jLy6D9fj/2h+8V74P/NuEX4yBMJYF7qadd6XTuu/rnsV17ke1n60Xj6XzvvV6l/y/sP0qXh9wL8pCH/NPUra59BTznJdx5/G/wdoK8fmPuPcuz/O7MO6//bG/zXGW+5vYci/wb48zN+3iG/p/Yz9GK72Y7taA/bz/bRDha2HzvfOP84HxV2f4h8fam3E7766P8Ov430ywBe9j6SfuO5/RLQ87x2Le1cDxgHxos2h/86lN/i/I++f9Z/n31vN9Kf0r9n0j8qo7dl3s8zPt2PeD8bo38A8qeBD/3vKqCPXMZP0b+15/alfCnyu0F/BeUqa/8GX3bmn97MO7lIn0R/Yf/Oq9CPA57bIf8e/X2Swn9P/ae1ixknYXwM+k4JvTHan40fdP6AX+ORjtH+KUlP04+CdLT3x8idArptwHPc8cX3CPwXhV5W+DU+KFo/FvRgfNBp+I0mfZH+2A069Rh31fR/dn6Fv+3g127UFliE/MesVyUYh3fhKx/4vT8aDhzNePb+6AbfPe9cB08l4ynp/72o9zbpI/DxRL95zxPIo/9DHfSuX4X7Yfe/+s81plxq9KD/2QHPP7RDDfL70n9vwk8D+CvBftB46Cjw2n766a9E/mz6o4Hfe8hz3v9oX6Bca+PYIwH03qc581U8vg9gfL8Cvzkp1x980/X/Yj+xhX6yFTga/oqx3x9v/yN9CHp90PcdxvFA0kn1X0Qu/YtiIccI7fzMpxOYnz4B9oW+8ZXGVepPP9H7c+NN9IsPwL/n/02huArjLIyvyIi8+qPOIt97mBj642r6+V3gY+SqQv114B+BHjZQ3/b7hPzwfXm6kP2nb8gesw997DKuF1gBPN7vu/9w3+H9/lToG6+1En1Whv5K2r8ffKxl3OxEv64nzUPrivEU7u/C/m3u945qd/T+CzxlPc9A/xzlipE2viep70cAkwBHeF/E+KsVCeBIxzHy6a+m/5r+bHegnw69TQxAVDPw7oLfffpVUt44t4T6S6HfD2ivBsj/HPXbOb+Q7/nN89zrzBvbqWe7LkP+xXxfB574nn+Q7x/nW/k1XpC09jHtYdrHekQCGAv9GV8RG1gduoOB0e7PjUeivvEL+oOG4yGLMR++DCwOvKIfLfiOo89S+hUif0Hmh13or4RxSODfR7+dx7q2jPQ++nFp2j8d/LegnvHBtaF/Ffr6Fy2g/kXGdxXaqaHjHX3eAH825DaOP67nEOOVoO95W3+IWdTv5nxsfDp4fkJfXcifTXoS9E+G9td/At1fG9d1mXlrRCSAxnf5/ojvjfj+yGT08xz8ZhQvfEWBJ5r8pMj3K/XHeD9C/mn9l/XLRb/GF44BbzP063reiPZvCt4hyH/f+EruDVYDbwC9P/D8uES7AuuTcfKeX7UDa/9tQX/4lnqTaf8yrA/vwd/v4Pfce5r+1wL+vkO+09Dzfsc4kTPMd52Qc4D7GvR0y/UVOAH5/6Y9tBdrP67iuI8EsCn0jffVj9n4Zv3m34due+TQfz5sP/WeIRPrwyTjVqH3DuNwGvW1C/wIv9nA8yL19yP/IurvgN+z6Gc+/bMXsKf9Ff693/Be4zD8DAef/oX6yxnvo39hN/grYnvqVwt/aeG3H3CG6x3ynaW/VQG+Ap4qxg9yXinH+eURMBv5t2j3evp7wX8B/YGg5zk1fD/VCv7fJL8Q9fuB33vj0+QPZ70zzl+70zDkO4j8yZFDe6L+ndobtS9WQL4eyLUemAD8+ld5T+17MN5X/8n4yh0J4D7WJ8fPX/SP5qQfkr4Gf8YVuX/rRX40+rG9bD/bczr0WtCffJeqObAk8taj/jnKGw9YCX70u17B958dt/B3VX9h6m+C39bUr4ue4lPuE/D9TnqS7/+Q1g5enf65gvE/B77nAY2Ti8d8tIRxuRhY3Pj/0L1H2J/+uPYh46L0KwLmDN1XLqJeEecH6J0Lzd/GN2of1y6uf4f2cdcj7zt8P8P1aqTvbVAvOXJcdf0Ab2fKaU8wrnBvAKJSk25EWvtx2P4aPr+4f63kOxzUc/9qnN8b8GccYHXS+sctop72xOvIr/+9fvc/M1/of/+WfnfA7Hw/Tzt8xH1iO2Bb4Bzoua66nwivr025F4phfksL9Nz5PPwviQRQO15V7Y3IU913VXxPgfy1pPNRLuxPrN2lC/rSHmP8n/H0X9Ief6En4+sfaS/3XoR+kEa/QPs3/LcGdkN/BZGnEbCN9h3oFQSfdhXtLdp3PC8dA98p6G5kvFRg/6D/mP5k5Wx/+PPeMhNy+J5aC9rTc90w5C0Hf/Novxz0j3W034fox/gt47aMp9S/xPi3VMYNQPcL8hPQn43z8l2zxchbmvlhCPRXktaPRvuf98azjAeIwD/0dpD2PQnfj5jE/JcLPc5EjwXA53kwH3rXT9bz4ufUP+49AXA/dJ+nvO8l+X7S166/0MlPeePbjXfPAN0h3kd4X2F8sfHwfPc9MOMxW6Pfg+jvXeg4vocj7xbkMJ7T+E39P/OG3o/Svu57D02Q71XjSKHv/bT30V/At/5lzUPxDVec5+gH+kFGk28//xX6CShfCuh+Z63nF9azxsAGwK2u+74vRfpF0uWRpyv4vD+qiBy+v9BQuxjljVMwPmGC91/Az4A50a/3GWPh/6nrgOf7UHzUUsoZJ+X+sDD812G9dH9YHH72o+/4xiGQzgY9170ZpHPrP05/0M8q7F/l+Wap7xvQjzzf3Od7Efh/yXh5/dEcx9At6r2o8Z/072LUz4E8Pxofw/yk38Qm5qf00Hd9dz4YQ/0mxvdSrxz050FP+++7rnPw04V2GQn+P4yf1S8dueb4vgbyZYbeINJbwOf7QL6TZ5xYPcqPcL8Wsp/r71aJ8f06cAPr+x36a3n6zwba/az+M9Sfrf0DehXA34n0Wur5rkAC1hf3CeG4jpuUc3/o+z6+M7EL/M5jF+g/vjt43HdovA+CP/3ifQfKdz4ueC9NvcT6eVBuAvpwHmkYmk/6Qz8KfPo3jnF+0+9d/xvXacqH/Ye+AI4H/1Tkt9+shS/7j3HTT8D7RD2F/KF/sn9Szngu/S70t/C+SD/DQfA/ju/3vE8n3/vHoejRdVr/Xf3fC/LdODrj57Zzr1Cae4CnjP+9IXu5+wTP1563jRf1fb1V7uPRv/sH/Wr1s9W/1veofKfqJ9In0Pdu8E7UL9n3TxifXWnvDvS/36G7R38o+PPdukNpnpVvhX4/fO8Kn6PQzwb2A80YNzWoN4P898FfUT9x36fQPw+9aj82DsH4zjnQ9VwyFn70d9Je2IW0ceolqF9O/y7aw3cAjiJ/a8obp+N7sSmMH2D/+LXvsaFP+7fvfTq/6e+qH4P3EfrP1CcdH/5K6vdJ/ZrMN8WgnwP8Cby/Zn/4nOe3jM/mJ6L8z+4v9QcFv/ZX73nzkDb+ZqP3tPQfzyOdyP8efR1RP6G4ueXw4/tbman/kXYP+Pod/Xv/oV+e8WXGXWnv0/7nPnqJ/huMT8+NyUl7fvwvvyHP3z1D+1/3w9fhP5X2NOi1o9xD0toTfHfCdyi03+oPon+I/iI9tQ+yfvUGzgL+Q7nKvu9E/YW+NwF+3+/y3KQdSvuT7yWlRJ7ngVl9R4x28z3a3p6/7F/0R+0w3rtpf6kCfd8X+5H0i/pfMq5ysT9/BP7JtMMW7sOiWSfc79Wi/Vv7fg/tmwF+3V/VDfkD6U/u+zANmF8aAnOAtz35V5HvqO0EPv0d9rJ+xjDuVwO/pf8UCcUPFA2tr5fQv+8ffq5/s34utFdH+mc4nuII3+PAX13Ph6R9n9T7yhnuP5BvO3L3hq9tpAe5v2b87qG88XutkU/7qu2u/a08/c/1W/9z34HQfnuC/cMg+u0y2tM4w56M1yO0Qxfyp0J/sfZevvtugf6RA5DD/Zj7szLofxHr03joP6F99SeeCb/3gBuMR9O/m35XLGSHjUBf/3v97ovBn/7x+p/rv/cSfPn+SUwUckQC6Dvun5Nf1vgbvq8i7ftwfULxiP1Iv09+bvhzHQ7HVxdivtmM/IPh40XqH0Xvvr/sft37E99DM57Y99J8b/cN423RR3XSvvd7Ff0chb+4wD+Q1/5lv3KfeB79V/G+Hb593yq2+aH3CHz/UP9F/fvPgCe56xjwOv2/POfay9rb0Z/78zP6z0LvOvKVZD6bwjyXg7T/55CDfvkq84z/g/AF8mif8L7Lfb73CfvJ993zv8nPAj/laL8Wxt8zHlwHnU++ZH52XqnO/B1+/994du0bvqunPd/7L+8HfQ+vpO/Res9oPBH18pH2HX3fz49hvB7l+ybfQ4Ofj2mXt/TH0n/U9/CZ9z5hfkkGnj20v/Y/7X6n4P9H42/11yTf+wPfH35K+/veTGH4SQV9z4W+O+h9l/dbB2j32p5/0NcB4x9ZF8v5/glwEvzrj1va9wNor/Lwt5D20W/1nH4h1IsFfv/fwv+7GAX+M56ffBfL+zvkW+w6hN6qos/O0De+27ju8P5yA+MiBeOiCHCh/n/MJxU4B3ifNBt5e8H/AGBV6MToP8x8UwR+WzA/fgJ97xu8f3B+83157Ttr+b6F8r5DvoL+lJ3vh+hvTdCHfu7GZfp/Lsrn+0b+P4DvHLof019du7L+7AuQR7u4dnLt42l8n4nvvvM+BOj77trbtb93C90HhudH/x/CedL4p2ra740z0z6tf0QkgMbp+47sMvSnv/It32My3pH6+ufpr6d/3gLGyyjv7ZjvfN/5XAD+fYe2DmnfozV+2Htd73m93/2MeXEUdH9mviygHzz6KKy/tX6v+ueA9xvqfwNfi8Hv+epV8IxFLs9X5z2X0v/D/wczivGTknEzn3RG42PAH+O8HVrf0vLd/xsaRPqE95fMv1O957Z9tTuE7ou8R9JfIS7zlX5UzvueHz5Hv9fAt4r6s+nfGyl/zPc4oN/B+APq+f7ORt9zgR/9Arw39z5de67vpm0lrb1P+5735rbfdOMcwNNKfwvWpUvAo57Xqf8e9R/Sju7vwvbTapT3fl3/hbXIUU07L/iLM/59d+Idyvn+RPh94eza2dD/NfjXD06/N+9zfQ8mme/+6T9I/nnG6z7oh+NrfC95sfeV4DFe2fufQ8CXfK9SexD68v7bOHLvv30f1XdRfc/W91FL6XfsukvaOCvnN+e1C6F94AX6Z/jeZSz6O0y5bcjn+6m/RgK4mvnXd8x9z61KKC7MODH9gI0Pc/9nnKP7P++7tofeXzGOOaFxKd5P8117Whf02IJ9UXXmYf/nJ7H2AP2P9bOivPeH/p+B6+JD1ynGj+OjFXq/BHR8JNF/A7n1I71pPBn4C6HXNZ6HaAfjAvx/L98nMz5du63+hvoj+h7nS8ij34rnH/1ZSoNf//sN7B/0v69I/ZWUL4G+1vk+FPyk8d6Kcr5/c5B1y32f+8DmlNN+pN0ok3YI6IfPdb7fkYX6rk++97mE/uc65ftQd72/gs4B8Bt/WxA+PU97fg7fb1U1roL2KQB/1yjneXuQ94neoxtvir42k/+mcfu+W6efM3yG/x/B9x99D/IF/5eK/lsVPrZC1/dBNyPPfej4Puga5NUfMglp908f0p+9t+4OndzGryO/97jJPTd5f+L5Gfw9KP8m+tffYJZ+FpEA+n7zNvTlODFOpYT3eszP+o/6Dqz9QbvMEeqtC9lntE/qf6Id0/63MXSeMI6nIu3vef9T5GiCfowT9P7d94u2wrfvY7nv9v9+3HfvhH6zUDx2+H8IPP88yfAsn/K3H/r+b5b/o3Ub/K/Q3/yflfD/q3wN3+/DRzL9DBnfxtMYXzPBOGvyY6EP49aigepnBueajsYD6T/nOxAh/xH9Sbw/LITcrk8JoT8A/rNBrwzjIAp6NdDPNfg3bm+p8T/gP0Z970tf81wG1F92HbA47eE71K7b04xfAd829J8fffoudVf4eax/BekjzveRAPq+Zn7t48bvkl+H/PD75tod3/L9LuaPy9BbZTw54+9N/R6oN535w/sI7cPahfMgbyLy9dfyHXffGTSOXv1775DLd4V8xw38vvvsO9A/Qm+v+zOgfvj6j/ru73Dwhd//HYs8o/VPZv4z/tH3iPzfDt8r8v4/N+Pfd/d8j0//Iudf32V2Hnb+9X2WkvDl/sb3Wdw/Ov/6Tqz2w/XeT4PH+PLpvjuDPKfo9zdJlwLf28zvD4wn9P0v5MsGHf+Xxf9p8f9ZxjAu/X9N/+/F+D/jVnzfYST590g/ZTzUho9/SHv/rH1Pe572PeM33gO/cTVFgL6PMJT5zf/1iw/0//78v9NcwJy0n/dE/n+C/k/6eS2j/3gf6j3pbPjzvnQr+Hqh94zI3ZD6E+TH/02l/A7v10Ptrx3Z88Ns5tf0+m8zP27S38v4JPL36t+Hfr7n/HGY75Uj4DU+hP70F/T7ec4kvwfzR0L6Qfj/e13fvFd1nXN9S4retVvFMc5U+w79zf9360J6nvZjyleCXjzo+P+l7s89txajXdyfr4F+XvBtQS/zaZ9q/t+q+gPqn1eLtHFa9uta4ItL/sfwdTX0Xkde9DpHP2fkPuv7Teh7C3g6GJ8DHv02CgDzA/VvCL+X4DsK9WmH99nvDyG/NONwNvL5vwu3wTcLOYw/1T6rP8pl+E2MfJ47amZ+Vh7955VH+Uqne1Y+7w9agr8N5edTP7v2NNrR/uP/b2Wnf2al/TMC29POqVgf+tu+AfjX/3sw49J7h/bw4f2D78c9B781Kad/yyX6j/tx379tCf+eV0pDx/OM77jfp/0m007heBHjr9OF4rCdfxchv3HbvaHv+xDJ6C/GiZ90/jMOCr71Ow3bVzyfGdfgO9ja3/4k33fO/B/pw/rpMD53A3+h/lD3b7T/XuSZTLu1Z3ynA+8e+PR/yH3HyPc9tNtrL9M+ZvyB/kW+0+d72o7fEfDt/DKAfP836wT8hv8/S78F/cBf0l7q+k//rQBchP7nGF9Au/ziOSf0/8++F+++IBfwKPL0Qf++b+b90UnjHaHjeuA7Ob6Ps895Xz9G9xeRAP6X33QN8I9nvjYOZEIoHuQS/Vp/Jv93w/nY+4Dt4AvbO3wvJTrkJ+H7evrX+P+AvvfWFHqOT8ej4zMGekXRn3HM/p/VYd9Pd/8CPv1jPgZfF+ivIX80eHyP3P/7dX2PJz3vx8k3/sF3pz6lvdKizwrgfRc6i/T/8n6Kec93OS8g3/8BI3qC7XicdZ110JbF14BfUqS746EbBASklG7pkg4BEaU7JKVVQgUB6QZBupQOQUAaJCUEFAT5iYi+oN/Md1+XM94zPP+c2Xt3T22fPWef6ymj/v/3JG0AN2UJ4MGsAXwhXgD/yBTA4ekCuCxbAIslCmDq5AFMQ/3lOQJYKk0A380QwJ+BH2UM4Fngfur1I39rzgAuha/dkQBmpvyH2QPYjPIJyH8LPnPCXz/4ze935Hmd8r/FCeD/gLHjBvAC8r8BvV+AF+BnfuYALuT7edJr4GcI+HukD+AB9LCVcvuAh2MHsALy7zcN/eaZ/ot/APKMzRXAquD9le+HSRcAX9UARH0FH0vJn4T+aqWCT/hujTxvo/8PSS+Fj7nQiaJ9CyYI4GT420F6Bvivo8+vkwbwWcIAbgLfTvC1AF6B70ORAC5KHMB3KX+D/raa9t0F/0XgswRwPPkZwDOI9B/ooTz6i/lCABui9xqkyyH/d/A1CbwP0NMJ2udd8t+Av6N8T6x+yE9HvzkBnmOUi/A9Dd8/gr8h5K+HH/U3Gfrqr1+KAG6kfifyKyP3VuQaTL/fRnof/BWGXizarzT94zva4WXHD+XWkp8aepVp34rwd4Jx9AX1+1I+OXw1A9826HXje0nKJ0aupfA/lXnlEPwXpHw9yh1Gf+Xpb5X43hf51J96ewc51N878Pc/0vb3vODLTf5C+J5vPv0pP3hzI88L8FOPdBHqx0S+ntCpQfvWQV91ge9T7k/4b8d46gbdv6FXAP6m8L0BeLtArwT8raV/HKXeYeb7KvA3CLkSRwL4M/BF+v8N9FUHvh6Bpyr0y9L+++G/FOkFtifpA7TDDvjdCZ1o+H0LvIWgN5T8bkkCuIF+24vxn4byR6i/j/QB8C+A/xHkF0Q/j5B7BPrNTL+1v5aC/gLap/qLAVyOfGORJz35K0gvAy4Fvkx+KuhXB+9h6FwCJqe/3IK/1nxPRP2d1B9L/cLI1871h/o3qFeZ8ueQ/3va9zf00ykA/66fhZE/JuNsMOWiI/BF/SbwNw96u+hfjaE3kvLXqb8U/OWo35h61eG7EfJtpl2zud+An5fBfxO+PmId2E5/qASdu+B/QvosdHqDbyH194M3H/3nfeb/YZQ/iHwtgW/B5xX4y0K9iOsP+r4N3ZmUjws/KyMB7Ex/mAre/qSzUr4X+htCvbrgTUL/bAb95sD9yDWI/CvgiY2+lkNnDu2fK1YAJ4J/V8wAZgBPUeaDRfSvuqQPUv8s/Ewm3RY9nkR/e5D/R+RoQ//cTL3y8J2O9nuM/j6ifxxmfB0CrmOe30L+Wdp7C3J+nyyArSIBXE29H8D7FDgH/qqF9p+fg+eWekNe56u7zJc/oN9C1P/d+Rc4Cj23In8O+O+j56GOX9LDKLeBeu5vnP+6Qr8LeD6jPW+wX8rH9/jo5zL6KcH30sB7tE9j8OeGvvNFCeBf5DuevgK6330X/U1hfOzhe1roxKY/zKDfpABvbej9Bf8XGX93aLeWrAOvuc9D/njgf4f6HdC/60189HYcel2gt5y0+y73Ye6/LqC/i8DuwArUqwrdgdSvhbzxqD8P/rLCV1zK14f/+pS/DPwe+iXBV4jvG5BjWSSA7p8ngv8C/Dyj3iPyU9GeqYFpgLFon7jgT0n5i9A/Rn4q+D7P92GkJ8P/bui6jygOPvcTGV1f4Hs0el9F+5+B/zfBWxg599A/59L+Q6g3Cf0/Rc6H7G8awMfHtpPrNfjzUL44fOdC3rmu757P6Hfu//rAz16+Z6T+A/jrhD6rMa6qez5BvvmkFwLdp7k/87y38Dnnw0XwN4ByCZHrPny4/iyFP9ed2/DXnPopwf8TsAb181G/Pnif0Q79yS/j/KJ+wX8B/ncz7rsCfyH/GPy8Av43qL8rEsDHnn/4Phu+ZkLvN8o1Ru468NWFevORLw/1W1G/NPTa0387gO9l8OUgPx31N5M/E/wToDcLfVTieznWwft8b+v8Sf24fO+A3lLD58T4AXwJvJlo/+2UywP+I6TvI8cq9HsT/A0pNxW9nqJ/peN7S+rl5nseYErkrQn+qZQfDP7pfM/v+s/69wH56VjP2iLHLuQ8hX4j6L8Z3ytAT/vJHPp9bMZxe/TyFvwtYfwsY/ysAMaFr97gfwjetXz/Cv48X3cD78es5wfJP4n+PCfvpB3GwN+P7GcGwX8Z2rka+WmpV4z8v6g/A/mjHd98/9V9QiSAF6HflO+9wPsA+Cn6juX+BTnWkF+c8XQO+Cr6yEX/i3L9AP83fG8Lfwf5vpP+MRZ9veV8Rv227l/Id75uQvoT6i+Ev2y0n+eBtUDPCwPBP4/+05J9UkvkuAl8xnhIQPla2iFovwnI25vvc+D3PPxVJD2YtO3j/GR/tH/aX92v1ad9WsPPdvg/S3o2+a/y3X16VfAvRe4mwOSU60E7hPuf9hn74THSLwCvUi8F+nX/sILyDYCVXD/B+yry5SedQ3sM++ebjN8c7KNigSc/7fIA+GkkgIuBjThvnESuUuzDx8gn9CqDLwZ0p1P/Fb7/RvvlA08D+zf49iN/fuqPAv8p6mk/OI4+rtIPPd95nnM/Wpz8RPS/yewTrjo/23+1X0B3LfJ0hv8rqZELGAs9T6L8PPSThPR80r3hP4P7H+TICcwAnvnIs4Z0Z/UFvrfhNwI/1ajv+NYuuFW7JOko9HuS8XUQeABYh/57CfoJqfcT6Y+000DvCvSbMl+5v60EOe3quymnfSAJ7ZEdul2ZLz0vL6d/fuU8QHulA89o6KVnXdCuOQ354qCfOPB7xn0J+jnB9x/gb637d/f75D9w340eXMcrU281MJF2ZujHjRHA6QGIukD+RfpXhPVtM/3iEPRf1C6G/bk6+FtRfzH8vBAJYDr4LUe/uIuc6xi3nrN72d+h/wfj/RL465EerL2RcVEG/e9mPHYgv7znWb7vov5x6BUinYb1q4R2X/gt67gnfR25c7g/of3Lw8dd8LVBv43Qh3Ysz6FPqP86+FLT3y6hl9y0v/bAf+2DtG9Z8HcFr3pOAJ+ryE9Ju0WAZ+H3I+3D8JcZ/Z2j/gzvj6CbmXL3yPd+ag/fK6K3FKTjIE9H9J6SeS4OeDsgXy3474+e7bd9qN/Y9dh5NLSPfo/6tbxfo773Hp97voPuBvT/J+nvwavdOXy+WQ69Hd5fQedfOy7fi5JOQvkM4F8KvmqMh5TUjwl/eWjP1ozDLvC7xfHD+KsHHAOfX6K/F9FratbHyswz49Ff+Lx1Av4WUL8n/A+D/2LQP0P51uAfCVxH/nzavzTfMwDLAWu4/0Te6+BP7fxE/mb4rer5inHo/UFv5E5B/hrm44aRAD7l+0bWt3nUS+n9KePfe8MbzDf/g34pvp+Cz+6ki6K/P0l/5z0D43sF/e99+L1H/hT4uQ/96aRXuu8B30jwp2X/nh5YDf20Qv8TvL8CDgHulR5yXwIeZD5Opb0KfEdIe2/QMhLAC+BbBr0RtN8R5HuH/lNKu7X2LsrXA997ofne/dNR+lcN9/fUz8f4OuF9EO3RDH7jop/F1M9MvYPaB+CvWOh+YSx8vQn9lfSf4czPw4BpyF+Pvh6hv5dIl3M9Av9y+E8Ov+5PvJ/X7qcdUPtfdvpHcfrhZfYDbb2f5bxWEbgUumfoP40YH02A2+1P6KcMdLWv9IW/H90/M/+8RDsXBuamfnb08Yl2M77vYH4og3xnoev9ZHXgT45b6FVifLRHvsvo7zDpNvDZnPbPAv1MwATIvxU+nBe8V/Se0fmhIfr0fDuF+sOpnxl+/iJ/BnQ+Jr+I6zfrVBXgSPCfDcC/9pmJ9LvltM9W1tWN2sGYh1Mgn+eia/D1RySAT4DuQ/THeEB/mQf+9eDrRPvvgN+06DML+t0InTHgeUj91eQfdB+MHi66HtJ/EiKv9y19wZOf+ifhM6n+KdRPTr9dzPy1Hjq/Uv8x+Puit37QjwF/FdFfBWAV74fA3wf6K8FznPqFpU/5q4zzprRvaehX126DHh/SX1rDT0XkOeV9OnJGwZ9+M5XoL09Ij6V9v4e/5sh9nX6aFvpNSG8E7xfUv0b9o/S3wfC5gPWtBfX/h1zX+Z6JftAGPKWZt3LQDt8wfz2kPddD90XkHQ+/xaD/B/W9N9uMnr1PG8/8MQ44AHzR6OMb+zt83uF8EBO9DoRe+Hy9G36SoLfPwbfE+2H4G4q8T9HTe6RjUb4N+m0MHu0v/+hPhd70s5jF/UvySAAzMW6iSB8FXzftH+ijkvfj8LGQ8t3Ry2PohO35lRnPVYBLkesO/asy5asA8yJfbfSzn/56n3E5HrgUeQ7R//tQbzp493u+gO/48JsM/XifMNH7bPjNQnoA7ZSV8hWpf4bvB0k/g+8nwL+AqeFvMvyNRv416LUfevgCfA3AFw39OaSnk+4Jv+3Bmw/5bsK3/gND2d/dAn9K+l8p/d/AU5D8OrTbJvpvDfS4FbnjQW84fP4OvmjGx3f09+KOR8ax+5dY9LcCrP/Rtid8JGS81qV8AeRND3/On9ngJ5Z+bazPO9DrTmBp6BUG3wT4naJ9yXtc+B/g/gz5NpPf8zn2kWmk28C/54ru7udC54ucyKP/oPer3g8lRu+ZIwFMgB6bw18n5NL/pwvpA8jnvXMq8P2ofZL+sYz2iMU+4CD6uQDfI8F7F7oZqB8T+uvdj0Onqf4k1G9Lf6vP9/20s/fYfah/GhgTqD/iX/o9wH8VvldHv96L6gc5DHrej7a0PvTigKdtJIB5vV+l/ibK6Wc40PMt8GvgXfT7KeNjX8hPU/vTRPpvfujVZT1ZTftfRd5V1NuHPE8pPxj+3oDv95GrB+13j3Ldobeadryh/wztWZJ23kj6LnJ679JWvyG+e/+SlnpngN4jZib/DPLrbzGV8VuL/qG93v2n9vyvyN9BejT85tHOinwryc9H/TfRZxfoD0LvA4Gut57/knkvQbphyB/yNvgn054NqF8X+iPJv027vEf7PyC/LO3zE+VmALUj52S+f8C6mIP5cyzyeu+6FH7Sg6+M/nnef7kf1e5K/1mEvrMi10LSxSOUR/8vwtci+tnv4JvK/Oy67P16QcpNYj7ZAJ8TaB/3N9uZn64hbxzK6d+7h/6R23sz8PeDv3G052XnW/04aN/YtGtc4GrwfOv9D/LWQ39FoX8J/eq/MJn0GPRwkvbz/qkn9b3PrgZ/idF/d+2l1JuF/vUP6o/+vX/SPyiK+pX5HkG+4sg7gf6g3XWR99Teg7vea+/wPET+JOaTN8BXk3Qz9F88ZD8Ir7/b6G/6PekHpf9TcfLdV3wbCWAh6q+F3kjacRVwBPkR5OoD3+noL7XQT1X61zTkvsn8pH+Y5+Oj6K8C5d5GnpLg135Shv52GP61i9WB77B9bE0AogY7r7kPh/556L+Nvh+Tv5F0RvjVT7wmsAX07ff2d/0p9J/Iw3h4Qj8eAZxFP7ukPQh+9oI3A/p9C3zxoTuU9j0Mf+433K+9B/R+70Pym4Jf/7PTof3hZcp5T+36kF0/B+Sbr7+A/ZH6L1EvOfnXPUeC1/uvrvCnHf2R9l/qLXS+tb041/1Cegvn7PHgm8C4HMw4/RZ4GjpLtJ/AX/h8cZx5p6H+9Oi5N/znpf/lAbpOjtLObzyGfjXuw71fhn59+skS/ckcP9SPhl/vyeuT773XdvCmpvxR/d9Iv4YeS1F+L/3rAeePW8jTEXl7gn8961YM6q0jfR/+xzOeOzOO3X9u0Y6lv2NoP+D9vf5p+g8eIf9T+NMeWigSwMXwpX20G+25BbiX9p6NPKvdn8D3KtK3Q+vtaO/L+R4f+vdZF+cCq8LHGfqH979fi492GIm8W/TfhZ9x0BlKegXl/yBdQv+anP+trz+h/oX6EXwBX72sT/97Cf7uRSEX6UPQnwB/xgPkpb+Mpr1cH++gz2+gOws96/+wnvqVXHf1f6V99Dcprb0Q+Yyf+Af+58HX36QLeB8E/hzkj+C781Ac6J00/sjxBf+jsD/s5Xsh+LF/O948F3lOWg//FT3XadeC/22RALqeuL6sJZ2X/cEc6BkfZTyJ/jfqszt6Lkk6L+1Znf1occeTcUbU/9f/Br7TUU7/m2XwO9S4EPh4Cfkawk9Z+ExE+Un0l3jeH0A3Lut9LuT7wLgUxv1M7fbkjzIeCH71E8xCuc7U7wjcD98VvJ9ifrnNvP468B/m4TzwU599R27S2ZAjKetpMmBl9LkT+qko1wJ9aHc/Af/27/3wnxE9fkm54sz7C5lHeyHHZsrtAv/v6HMJcHiO/+Ib6b0p5b2nLe59Bvzrx/eP/gf6ZSf6bznr7aVdPU843+1DPuPvjH8yjsz4p+P0R+PFbvLd+M83KP8let0BbMz4ymv8HnS9n5iBfNvY/3Tiexn41r49Bvwd6F8zWJ8i8Gv81Cj4+5r6D+CvNvkN9G+D/0/1P0NfbwOXMP/spf5l4y49fxlPiP6MZ8gLP+5bm5BfDP296f7FfQP4Z7HfSGlcAumb6C0f9X6H78/cT+inR/oZ9EeDPxX5X6Bf9zMJWR8+pX0+I/8Y+I3/O6b/sfft7lPon7PcX6Bf7W7a4bS/3dFe5P0T+T3QZ0HyX4sEMAlwOPyG78fjUr4D+X/RHsfhay58xYf+GcZnb9o1I/WqQl//6Y7e7+iHR/1yjOdJ3oNAfyLjz/tF/aiGgVf/KeM/XoNuI/Qwm/qpGH9vIfenjJ+lIfz6a3hvWZD8+Mjn+lZFv3j4ML4tfP5cCz+z8auYRf6X3iNTfyL94xv2Tz2hd1N7DetPAfKL6gdBf1hL+3if+yXybES/+2iXhOjhMeNc/xHXb9ftvSH5ukO3PbAB8+FZ9D9Sf03arxH9RD+Rh9DLAt42jMPkjI8V8D+XdWUWcDr49iGvdo7dIXtHcvRXBrzTkeeG/vvI+RX0b+pvAP/t9Z9xHo8EsDb5P/Dd+NFBtN809+foZQJwIlD7Vhf4/937GObbGd6H0S4TgX97voAP7z+99/Qe9Cz13b+6X/W+V/9X/a/0u8pOPf2vWqG33NRroX8i9KsAB1PvmPF9nj+ZT7OSr1/cj+C/hrwfUm4f6UIh/+Sp1NNOpH3I+4gB3hvpJ4W8L+tPwzjx/DmRctplp0KnD3js38Ynn0Ju1+Xb6G8g+UOAi71HJX8D/W8d0POi8fFN6M/GcU6mv+9Avtb0F+MTVhtfqx69XzC+2H0XfBivMY/8TsDY6CcH/WOV7xPA3wrmh+fFdRp/ll77GvQOu07p56dfFOlt8DOc+pm1SzwnPkq/KO8X9I/KgH5d/y7rxwCeEdS/T/kZtH8G0u6jjE8yLj1s3zVuYjlQf9gCyGO8tvHbk+DD+O3xtGd43joC/+0Zd0Wo1w7830Ff/8A28KX92Pvn4uD9G/gr5ZzfF4L/c+b5BaQf0M7lWO+qGf9A+hf65xL0r59lIcrpf7Qduk3Rn+87uA84rv83cmgX2oP+frX9qF/W+GTyO5Gv3S1sjzuvvdd3Buy/vm/Cd/3b5MM4o4ysp2uRewP1u8JnT+p3hB/tbRPRc0z0uga8oxgna9G/cRt1oReO38gFvQLw21n/ZNLR8DUKWBP816kfjvtqHjrf3aJ/XnS+IP01/CVl3upu/Jr3hPTPW/T7lsxf3zEffEj9ipT/Fbpvo68m1K/peYR6NUhnh9/CtK92ihzo6Sz1TxiPDJ9FgTf116L+QOPUjL+ifg3jv4DN9Kum/Yr5zoV+/vDl+vuH8bDo51XGzwzaJ6/34doF1QNyhNeHQaF1oq5+UdDLpD+R94u01/PuOcLxvd5XGH+ZivJfosdj9NdmxpHwPRXtPIP11/gx7T7jQvcg2puzILfvEvlOUWraZxryXCPt/eZb9J93Kd8LfjqiN/2f9Z/Tb64Baf3ntlI/Efw6nyR1/tT/lXYrjv7rGw+N3PEp99Ry7qcoZxyQ60Ni6Hlu129MfwjPXytC8aEJjI8Dr3HJw8nPQr7xyW2R131xeL/8SuheuLbvGKAv7ze1q44N2SPO+O4M5c5D94r7Neab9ZEAbtZO4Psd8P8tfL9DPe0H3jvr52scme2XD3zGZxqvOQj8C9mvN0F+421aUj5s330S8mf8WH8sxsEo5vtMjI/6If3bHuq/MPJ/wLjo7/kN+T6nnvGnxp0+9n6BcsYL+36F9gv3t4/47v3CdeTX/3sy3/X/9v2O3PQH7c/HSPfT/zD0fon+SL5jkgH9VCQ/UygO6CP2L4ONa2C9115Qme/pn2O/3k77hO/vmyLPt7TrIeBh45Ggb3yecXkr9HcD/1TyfZfAdwo6POf8cB78xjfmpL5xP9o5jAcaGYCo+sZHQqeG6zP19adx/+v7EC3Qq+dL55XY6N9z8wjjM6jv+Xk67dGF/BmkSxsfYbyUcVrec0G/rf7q3k8hV2fPl6wHP4J/Kf19EXj0v1hCfzOu3fifttT3HaTw+0fGHxp3WIK08YfD9ffUrmS8GPn7kO8X45LlMxJA/cbK8b2mdiv46wr/xgM7T6XRf1P/YfiraZwf+GNTPrXxg9DRvy4N+6KUwNRA40WLQr8WeI23PK59w/eLgMuATZDDd7zikfZ9r3aud6xnL7AOJGKecv/1IuP1H8+ZjOe04F0Mfx/AXzfk/g7oveV29GN8kfNnX+bTW9rlyPedpyzw/ZL7Nb7voX18FyC+8Zj0vyLop5f32fCRjH7QSPuF+oCu9+Tej+fkftpzh+eRgeRvpz+2oL7+TsO0r9KOvuMz3vOo/rvQf8L3lI53yleLgl4oPsz93Ur9vqjXAHwT1Q/7Zf0BaxhHiX5OwL/xFfo7rvccSP069IvqlLsGXeMWnJf1szwAf77fZXumor7vd7Uyfp92Mk7L+Kwh1DdO2Xu7O0Dtob77ZRzfNOd3+qvnSt8R9P2TwrTvNu6lipD2/u09+Gunvz581kM/j+i/59BTd+axaPgrD/9XnBeQY4P2W8ZVOfhMQPo77e2uX75z4b0b8o2mnPb8GtjjklFuBfbh2dB/k7T717vgb0F+S+1K9O9XkWc24yom/aWN/j+hd5+0PxeLBND3AArwXT+INrSv8YXGkbqfK01+MvI7GN+unyr0D3k/rR8r+H1fpDrf9WvzfNpH+4LvRdAeH5Bfi/adzrmpCeUXoB/9U8sGIKoTdD2PnYwE0HjJCPWNo9xC+y32HMb30+DriPwpjT8AJqIdXtX/B/3oX/EKdLKAfxP5k8nXTvUqchSlv+/n+xnKrdZ/g/OMcUvnWJ9GUf8x/eMp8JHvyYJntPHr+tMg77fAGHzPCf3BfB/qOYn6R8hfR/l25F9l3PTXL5v0Y/jNwnjS7vSF400/PP07aeey2rnQ90bouy/qYXwP9HvQv7QHen494XzvuY98/bT0z8rKvLoLfEd9v8X5BX3MQt++q9vP+wfk1i/H9z4zgn8S81q06wnl340E0Hhm7abGOXej/X3/dB77ir8YJ6Xhx/5nv/N+0/63F/l9JyH8PsIK8j8z7s54Ge1fyLNJv3fknkl+CepV1s4GH3fgsznjJQZ6bkZ6pusM/PpuTlr9tdBfSdKNKF8JeBH84fd3jMeq5n0V9cNxKaty/Rd/Re257qvJ93w1Evyes5ag/5HI04V16BTlqlB/Kv15mnGQzjP6o6NX7f7eA2j/b6A/J/o7bpy27ytR/2PPxZ77oO/84z2y98fFqO+63jm03rvO+36W597wedh7+T3uQ6nn/bz7leLQbQn+xJ6fjPcBn+ug8YXej92hvO9ReD//Ou3vvVz9kP95+D2VU/r1QO918ncbH6H9Huh7tsbV1c7+X35dD+dTfgz4Znq/y3zXNeRXkzsSwK+ZL2dTPopyF8FfNHQ/kgU+vd//xf0m+UPA/xR992H92IdeVvq+kPfLxmGR1g5/kbTxreuQ3zhX41vTkr+NcXCadmiK/pMzHjvBX1LSt8j/nfHVmX5dnnnuA+jo96C/g/14APR3wmda9OE7n0koX5b6vh9zDvlSGD9M+dm0Y23yB0UCmIH+lQ++8gONf/o+NL873zu/J6d9vOfQPzM99H9G/hvo8TJwFuXC80IS0iOg90kA/n0nIwn7y52M/yraB5l/fDenNvR9P9P1cQ5yXWb+/YR95StA398qSf2O7HffBPpO0B/at5DDd++839+g/MgT9msuAx3fdX1bv0L9qH0/hf4WDd6r2ll9H475U/94/eWNb1/Md/2YfR9olfFjtJ/xjcY7uo7EQL45lJ+pH6nvy4BPO7vvGVSkfAHGv++Mj2MfZHzNONrN960SMY4zwU9F2tf3OdIAbWff+bC/+57SKdL7ff8PPWiPMX7P/xdw3+M+yP3PRfT2IvT6IW9C9P8jeOsF4N93nb4ET/j9VN/3+wf5uiPPKt/3oZ8NAL/7Xf0i7pP2/xN8V9Q4Rd8TO6A9DXt0J+cR7fXgdz7Iil7cpzs/HKK+dsKy7M9bwu+f2gNJ699hfLv+KAvR5yeeV6Dvuy2+45KP+cV23Up//go4Rbsd9V9hPqnPOEkKP74LkId6fdBzD+bnxcj7hXFZ8PUQuvWonxC8vuPUHnmSwod2t4zAo7Sv+3ftr7Npf+1s08gvSH5pvu8Tj+8nw6//K+H/TNzTT5d66ZHD9y98h+IR+rRdC8DfVu8nkKst80sboO97LKB9ksK/5++Wniee41dwD/47ey9n3Aj0H1L/COP/KND48ivU176hXnyfrxH8nSetP73+9Rn0P4C+9jDtZQWp/xv49W/4Fny+p9SV8gv1A9HfhnQ7z/Pg1z7aQPsn+5MxwDXAc8jv+0H643YD35mQ/cJ3230v3PeRfDfvIfkzkXcgfI9nvBdg3jBO3vXAOHvj+YzzK+/4pn58xv1PjIfyyP8Mup94vxKaf+uSbuh6AP91wT/CuHz6ofEhA/RvpP4vkQAaT268iP6o/j/FFfjx/ykykp8JmAG4iHJZmT+MQwvHn9k+2T2fwcdnQNfdfeT7DpJ+vvp3+i6E59ARxuuhf/8fx3s279fWM+67Aseh/w3ku97E8/4IOsZzSGcT+vJ98Q3I97dxScCw/2sz1m/9cHewf58QCaD2Fd8N8v9p/gTPm8wnnwO18/m+SFrkaeR8Sv007O/C61s4vmUY85PvP90gfQv6vqevH6Djx/f111PP/7EogL0qHvqtSv9vxzw8g/HfD/5ioRff3daO15X6n7mfBf9V5BhH+d7gvYT+Y4Bff/KO3v8h71z0/FrofXrt9CmhY3xmCsaFdvnE+unoj4c+fD9+Jvs07wd9H+yw79ZAz3dm/V+I/pEAtgLvMuSPhh/PV9Hw4/wfF/1H6TfG/DMR+nnpb8mod5L+6Hsy2oe0m+gPbxyY5z7fw7igvzjpg9RPxvdR4PF9rpd9LwH+i5GuzvipS/k/0Xdj+Ezje4f6l+g/TbmH0Pf9c9899x307JQb5//ikG/c3Czk0y58GHzah39B/753aPyq8d6+H5/F+x7t1vBzSX8X/UNDcX7G95Wg315lX3IN2Bz+nunXA55mpD1XlIU/3+F3P/m+/Qt6vlesPecE9LX/a/f3HsB3UowPPheKT/A9Lb/rX2F+U+pn834PfbSIBHBvaP/Tg/a+xPkmBvztYHxH+z9WpCtS/wx0W1E/uXGU7u/1C4TuC8br077+b0b4/b3ptHfd0PowVb9U4A7jy4G+69OY+cX3fIzHM07vB/3T0I/rvPdrrvcj+R72/+vk/QD68n9D4tPf/f8Q9xuZ3YcxP7r/cL+mX+qH9D/j9/qx3teh/AD9xNF3Gt9X008OPH2B+l+8j35f184O/76j7HtYvrO8Xv8b/Zep53sm/n9aAvSl/5Nxpln1P9Zeqb3JfRb5FSjvvZr2Re/XLrDeVtD/C/1W8T0g9U7+EN9fgU4M8sP/+3AN/k8b18A88Dfj/Ff988jXjzE7/OrHtRf53kR+zxFFoHPA+/KQv5bvr2t/1+7u/4Npfy/MfPMSsAgwD/rR/qnd03lP+2cd6C2C/tv0P98H7Q//2q3uQV97lv/P5346/P5LYv104Wcy/HREf7Xd11PuNfDndX/o/89Q7g75RSIBfMH/leL7VL63pn74f+V8RzoZ9BKyn1qDnOH3rXxvx/+32am/s37onqu8l9JfG3lL024vMy9OAa40/hK8g4GZjS9DjgWU9x3Mg/obQ0/75Db7nedl8DelPW3ncPuWNu6D77Xg9x34f969jPc9p9mvlKEfjPM9JcoNY9zsBv895q9T9I8EjFffvZkG//Pp/77f573556H9dfj/IR55TvE+NHS+1g6h/eFX+P+G/DTgaww//r/GHeTx/zr+hn4O40Npjz+hnwb9D6U9fb/JOMZ96L+J+oROU8o1Rf4t6NV3iFfCv/GKBwMQ1RY8+rl8pp+G77eRfxW+vT956v1K6D2Aisbr0V6LyW9M+rxy0i7Gy+nP4P9XXWP/W8z533sw35eA3r//Y6Q/EvL97LvZwJ+Ao6Hn+xK+Y/UT+jvtfIa8g6BXA/560L/PeX9O+yUBz2nnR/L72v6ec+g/jrfe6PkI9KbQflfg1/f236P/Kr/v8/guTwP40H9zJPrLiP7Kcn77Xnst+d5jPPT+1Thyxk9t6Ot/p3+w79XpV/ezcZT6x1NfO9xZ9JdV+xXfu4L3nveNyHfG+xv4Cf8/XnvjAiinX73/r6L/2Sz4+9jzIvhfIx3+H5lNxul5PvP9Hs8jEfj33TJgRaD91/fwD8D/377X4ftuoXEXAf928Pt/NLmQJ6fvedL/wu9Z+55tCeo7L9UkPwH034G/G+T7f4HD2d88Id/36qZ5X+17NOD3fUv3wb5zGRd+rxuXQL91X9SH9te/wvuFw65/lKtAvfK+O8I64PsknteMq+qMPL7PNQ55tENEmK/1I3oFeVYgn+86P4N+R/169XvQDsn47MZ8Znyg8YLGB+4Bfx3pw+cn2mdC54FM+i2Av7vvF/qOOePJ/4uNCfS853kwlf4Z5Nfgu/fDryJnPNbnq/CdG9gePo0v+ga6xhkZX+S7/suA4ff9/V+1GLRfLKDv/+2mvVt7HoM//8fJ86Hnwsl893w4HPnWIU+UdnDvg+GrAPwPIu15Ovz/Pd5X+j8+ubwPpFxW8Gu/jx2Kj95KO/j+mvFN2hfD99e+/75b/1Hj2bTPh94tqeP7f45b8CcC3xzvD7x/dD/kedY4O/qH74d0AmZj/vIdkWSsC7eNh2K/+4N+A7Sv71z7rrX+VNPoX+n4nhp+rkSgA+zve6nwv9d4Usr3116Kvvz/u03Ik813G9yvI98a0r7fGw0+7am14E/9ZkGOQ6Qn698O3dh83wV/uxkv0fRP59PUvv/ovhQ5M/s/OfoxMr5+BxYCn+9Z9w2tD3HQv/7Hvnulf73+9nOhp33V/4n2fVH/Lzrc/zJRXv/lNKH70pKsN4/gz/OG9k/tofmgr/3f+2HvAVqjf/+fzP2g/qK+h+i7gf5fbxXk8P1A/e28/9Bf1/Ov+27/9/VL74HBN0d7M/Q2Qj8x9d9hvR0OfvfB7n8dz45v/Twd3/8HPtNkYnicdZ139M/V/8A/RvbeI7ztPVP2XiF7fLKy90h2UQnZyoxKpMgKIbIyK3vPkGwim6j4+p3zez0ezvE6p/c/z3Nf997nuvt5n8/7rpo26v9/5TMEsE2mAMbOEsDDMQOYIVYA3yN9gvxiLwbwVfA84vtbOQM4hu+lsgawZCSAG0j3iBvARC8EsBfp5LkC2DAp5cHbgHR78NyLF8C7wKzxA3glM/iRa0gO5KBeFfD3otx4vudPH8BM2QNYE/5rZwzga8BqyJclXQBz8X0c6UHgTZcwgMmQ7xh8Zqf8auQZid5XkR4C/mLUy4ocu0jngt/96H8a+mkN/5WR73P4bwS9L8DzPekc6Kt3igBuRf/zyM9JOgfwAt+X0X6DwZ8JumeQozf8d04SwKnw24V0Odoje6oA/gOexuCtRP5ovjeB72/Q7x34eJv8VeghI987oP+foTuA9qxLuYHgPwG+XyiXn/oHKR8LuY6j377I14n8reQ/QN7TlNuE/rORP4LvzcCfGjlzkd8NPipnC+Ax4NFEAfyJfrSQ8sfg/zLjsTIwO+U2Qn9vggCuA64FDiN/MXTzw18L+GsKf+PSBPAmsGzqADZGD5VD/Cfke1P00Yz2+Zn2+4xy8aC/AX7HAn8E1owEsBjlZ9KetcFzAP0fIl0MffWD/xfJf4n8F+CzCngbwN9c+HsL/MOov9z5i/E2GjgKOAh9PYbfuNC5z/h+CJ0rjKs8wLzAuPTDhPY/6scH7yrol6H8n/A1G7x3aJ9T6DsOeCLoIRX94wfwzoNeBsbxCdLrkwXwBcrdRJ4Z6K8l3yfBx2LwX4a/YehvPvgaAm+hz5jU+whYGHqDnY+onwz+JyN/Jeino1wm8JWnHTcj/7P5AD38Tvm94HmD+WZp4gDeYDylBZ9620O9rfC/j/5ZB/n/4PtkytUEfyzSFeBnEfj+Rf/xkPeH2AGMS7o4evyD8VgJvt6nXAnwNQLfWOjVgY8T1E9Ge7UFFkBvZ2mfsH7Ww29l+DsHvd+BO9UX9Eqg733AU/B1CfwN4X84369Arx75lZF3XiSAS8D7lXho/8WuX8iXhfw04HtK/aTwkRH5jyBXNPnfg68lemhBvxtLO56gH5ygfPIYARwC3RnA19FPSvRSjnE/Hv21hn6R5AE8Bh+FSX9C/3J+OU2+88x18E9BnrzgHQ39pvS/wnECmI7v3UmvJv0r+ukO3tngmY589ShfBPmj2MfVofxi1v9vgTfAext+B8Ffc9IJSJ9QDuh34fsyyt0j/zH8xEFfrnuvIN+H1NtL+b7oKzfl/qRfrERfCeBvNPVLo++t0I3p+kq999hPdY4EsCX5B8B/iPzDwE/oHyXg9z7rXnngDOp/afvSf2qB/xz8XybdhPLf8b0efI0H/2n0lxV8eZGvBvWzUi8N8nUmfyr6OOC6A50LpOtCZyv1+/E9G3gGo78mtHt/+x3p7PBTnf6Tn/o1SPdkfJWDTn74Hcf+YCn4bzOfuG89xXzQEv0Xh78/4OsD6LwL/eXkx0Bf8aj3K+nJjM9JwDKsb0eRZyfr8RLadzLzwRXyL9PeV4CXgL8xfy2nfdLBXxfSyeFjFvhTUS8l8CL9+j79w/1qc9LOV7OQLxv5Xam30Pkefn8nvQb9pYG/H6jfnvqeXzzXDIfvaqRzwf8R6Lvvch+2FhhBvo8o/xN4b8DHCNo/GfreQb/YBXwT/eaHP/e/T0L737rkr3Q/TL2P6N+nGN8XwHsCffeF/5Xse/9Fvnfg8wn6Gc+47UW/rEW6Gf2nOOePcfC3m/Q+8C9kPDjvtwW/++N69NdMyDGS73PA7/7Vcek8fZ1yR2jP5bST560k5OcB7zX4ywQf7clPSv5S6i+Fv+TI7/p9B/q1KPcE+RKg35nIOQL9FqP+efRblnXjpPsA8p1ftsPXZuBw+N2M/EXdrwEfAK8FIKo1/MyHv/uky0DPc7fn8ILQP8a4bovefkWeNeg5O/NPDqDr2k/037fAvwn4AvXOwP/LyFeNftkO+oWofwH5vqf8LfS8inRhxu9CxtXH1C/G/BiPeXE4/Heg3lj00wu+SkQCGNN+7voE/YuU95zd2/mdcROb78WYn85RXv21Iv8o6drgTwv9OcifG30Uhs+azLu90fubwAbop3XKAE503UM/MRjfP0JvEu3ivL2c+ikYt53Q28/gqwq/xZFfe8S34B+K/H20z6C3NsBt0F/E+MvA97/Yz66mfzWF7iD4Gw0/v6GfjOijNPXnQH8W8mpvmev5H32ehn5r6l+lXG/wDkL+GuDdg3zDGJ8XSLtfd/++ifT71JtHv4uJXrtAZxv1J9DvYtNu40hXof7b4CsKniGkPVe+D/87IwHMjZ72w//L6P8M+BaS3xx91NXeBp7+6Pt39N8IuaKBm6HbAnxlqTcDOm3JH09+H9Jj3ddTrjH4dzK/9QXmYp4rYj71ZyLfb/D3C+03CPp/U24TcC3t2Jn8f/jufrkS+X8y7yZFXx3hsxf9ty/l51F/D3x4Pi1M/lX0uRO5G1LuAvTdV2qneEg7TNB+Jd/Um0H/WEG/KAneHdohSedkfquK/t6l/2h/ase5tin0C7l/Rb8l4f8tvntOmwz+V+A/Pvw4jhw/tch3fH+iHdvzEPi1H5R2PwT9eMg/knolwT+D/DvMz0uYN/8mvzz5mcC/BbxtgeOQ/xT6aYleRkCnAni6Uv8KcgxAD/fAXwv+BvP9MfVTkf8RfHmOdF5fTH+qz37mdfrtbubPHtRfxn6oC/qJZn6bT/+syXh/FRgN7BYJYAz4z67dn3RH+NinfNBvCZ+lKX87AFGFXBf43ov2jQG/c5HnF+q30v4JvAJMT35u7Q/Q/wD6T8ifBJ1c9M92pPOQHo382sdXIa928cPId4vx8TPpM6wneWn/fLRrPPrFMdrxZ/dHjJs59hv4+4b8D6hfkPwx0L9v/yY/B+n48N0LuJf2LcX8HZ+09gT370mASYHa/+qhj4fws8h9Kvrt4f6PfPdv07y/If86+Yuh6/joQv9NB+yk/Rz+PW9Nc7+L/B9BPxfts511uwr8Ok5/JL829VuQbg99z1uev6bSDz1/XYT/RPDxMekt7rO1NyN3Mb5HtB+zv+kO/dGkF9BfKyF3Meh+Szuepvxj+D2N3qpQbhn8fwK+SvB7EH4qUd/7H+97nt3/QOcY4z0P/SI3cCD1OgEXQP+0+wfqT0PetuA/Z7vBn+eSZOgjfD752nsJ9qntgavAF0X5P5GnO3xMyfl8ubjInx3+UqLfich3GTw9ka8pfM3xfBQJ4Ouue+DXPq09Wvv0eNKd4KcA+tCecQh8nm9mQWcYac83WeF/pveL7lfBP5t9z7DQ+cLzxgPqfQq+VdB5F/mP0D960i5bmK9uI98A8jezr8wI3hTg8/6tKXQ7wt9W8s9D7x/0kJP0UPsB9dpCbwtyJaJ/TPTeiPqvoMd/wN+K/pGAdSAD5RZqXwd/P+dV+H1J+wzt/BdwLuPpsveB4K8H/Ak9nIP+IvA9BF8q6LRwf0C9v/heBvz/aF9FH95DZyF9xfsx5HffvBw87p9fgv4b8NPB+wj5of2vgec87TfA+1fwPQV/PMr/S/uE79O8Z9tJ/fr0jyrgXQu+TfBTlfWiIrAC0PVyMPppB73N4F9J+3u+3k35x/Dp+bo6+yfP8+3A35H2P+j+HL42oId74Jvj+uM5MWSfbkz9UqSPkp8SecPnIc9JtaH/D/0yAfUyM99kRH/7WHezQWc58/3r4KuGfF2g4zy+F/5LItdF8D9CjtTo8yvnX/T1bByh3zKcZ3ICD1D+bfjXHhwbfrTnaB++7v4Tuo+cbz2Pei9PvQbkZ4Wfgd67QCcf/WEF/E8H//+Qt737Jer3QD8V0HMS0m+g3x3w1ZX6+ag3GDgi3fN0wvjLwl8s9PEIPXzs/T373V9pt2jOA96nRpArC/UKan/Qnsn++yfgeuRoT7na8FUYvR31HAz+U8AXkO+r0PyTFX5KgG87/Ghni8F6mo/8HMxvY5DvGvboZJ63WG9egl569+3kV0Wfno/rBCBqA3wPJ7+06yr81PdcpX8K+t5CvVeh4/3hy8iZgvyKzo/wcQp8OShvu/5KveLw/4B2m4MekmZ+Xt4u7Ncr069qM74nQO8i43cP3wdD90/w6/cw13M6eDvQvyfCV2z4egn5s5OuRXtEMy5eB06hvapDfzX9Z5n9ifYtAv5Y8PPM/kz/HgW+6vAfQc/d4W8l81Vs/WjYH3nO7Mj32dpF+Z6X+s3oL82BrwPfoX0b0t8bIHcb+B/vORx89Vz3KVcH/quw/pxGD1HOy9DvTf1O6H8teLpTfz/t3o52fsJ4eQqeGOCPCYwFvE796bTT5/B7G314v1Kd/pXF8z/9aADjqyJ0D3g/A97awIzwnYH6J9wnIl824C5gUvg+yfgriHyd4Ts/6Rvuz71fot4P0DsE/a9onzW0Swn9t+hHHeg/M9FzA/B2o31zu/7wvTD6eg96u6Afvj/RP6wG69JU6u2g3pvI25fv9+FrFvy3ptwk8mOSvyVkR81J+VbIk4Ly9q8kpM9T/zLnx1XaG8B3Qf+yUHslZX3YyPgaDaxP+SGUf+y5F3z73J+jj+Ho6XfyX/O+jPp90G9W6KYn3/N53dA53fP5TfTeAvpLwTeR/M3w+5r32fBzADxLKO+8rZ+O87r3T8/Od3z3fJea+S0/8noP1YX8JYyXdNqTGS/v61/ifg7+88HHYfjVf+pH8m0v/ae8f/HeZTv788K071X4TwfeQ+B9l/6ifUC7QAXK7/M+lfHWkfHXCbjLe2r9ibQPwM8K9FsR/r/RTwt6v1G/DPlp4X8P+FpGAlgffry/vOh5y/0d82Yl7Ez6C+r/oT3sL/BpJ+uU7Xl6OyifmPw+4Pe8VRw818kvRz3vZwswzj8lHY/2icN6Udz+qZ0S/BfQ1znPAfA5mfk1P3otg9xVXPeovx7+3oO/msgRD/lqeL8K3Z7AhdA5SL7+d56Lj4jf8xB4e7l/A/9I7SK04yL1Dp+/8d39T0vqJ6E9P+N7FfpDPspXAb/7Tf0vMiOn9pFSlB9F/lzw7Yf/h8z/ib0vob7nza9Y30p7znU+Qe/pOLe0cjySzg5/H0N/N/me4/R/eZV23Qy+dtB5A3mTk77h+Yj5RPvCItbzDJTPy3x8nLTj23F9U/sI+XFILyH9mX6g4NevSL8T7Rn1bV/v/dFLKfrDYspX1r8a+DLzxW7yZ7L/ise+Szt/0kgAvw7AMz/a5tA5Dl890G8c+ssLwM7wN0a/7ND92yztk/A1Fvg7/H1N/nbk3ax9kfqr4W8j+i8CnZ2Ue0k/Zvhr6P0LsBbyZ2H9SUv6b/In0z/7s671BfYDtqB8He329hf0l0v7AHo7Ax+1yHf8NvfeE7kWIMd25pcifPd8NQ25D6KfEbSHdsTsfPf8fZLxo31qCfPdcOT0fOy+xH2K5+Oe8D/VdQF+soM/J/O793O36P+jwKN9YA/1jsOvevuI+bgK5coxT9+kfBHW4+SkP4Hebuqn1N4Dve8cB/Cn33Bx4CnWR/2KH9IuC+F/OnS6uv/z/ozvp71vIV97g37R2iO0P7yH/vSXiIbP0uS7r/d+Yiz4khrfAf04yJ2ZdAvqt0Jv8+lP88B3lfraTbSjXIBP7Sf63+h38wmwmvdB0E1Ivz8D9D55CelE8LWU9Cfwd4b2GUi/OEt6Ivreh37WwWdK8Fa1vzAvOD6/o5+ORN7w/aH3hlegfxn8gwIQ1R09rKF/lHBcuC5Qfgl4PA/1JP9X7VHw43idD98tkcPx6z75U/2Z9QuEvw9ZX+pqD/V8Sft5v9GGet5zDIwEsB383sv4fPmvwX+c+XQx7dINaP88avwFcKP7GeNX9CMENkDvKeBPu6/22UPSh7/57ifgLwnlT3gfynx0HvgYuCG0vqjnh+hhC/p9RPlO0KvgfI18u1nf1tNPXqG+9oTknDtzAxuxH/H+Vn2dQI/q0/F+iXZPq/2adtxE/XX663m/Dt3j1G+MfAO0T6LH/vSvV+G/G/wPJ12A+tU8V4C3kvEztNNXji/SxUP6u+55HXiA9XQi8uj3or/LY8rdhD/9MtXHbuaPM8h/if591LgJ7ZXwUwB+G4HfeJlvvJ9EXv2gEqCHaPcT4B2IHl33M0O/Ovhya1/XPg2/VeGvPLAcUL8n7R3aQcqhT+0hZ6HbCbkqOr6h/4Z+1wGIau3+FfnyQM99gOcO548d1E/q+T3kv/UHfOqvrj/7U+/bmD8H0I9bMU+nonwS8A8Fj3aUR/C/wvtb7bvaM4wTgp73f9oVvf8bCt10+g+H4r/O639DflHnYerX8L4RvKOwF3eH3mP2N7kpX8F1APydoN8R2Bm4jnLe327WTopeHtL/JyFfM77r36//90PkeQC8D3T9Tcv62Yz17xZ8P4DfOa57xouG9o/tnB+hVxR97Ee+FvC9F77C/o3Gb+4E6gdvPGch6LsujUfeBfD5iP3SbfjITfqi/pCUL4K+XCdcH87TPkPRw1nSs7wfYtx4b+h64v3hCPfb0PtQfy7aI6JfBPLYX3eDf4J+ZchX0zhd6mv3iaO/IPxo/1mBPLMiATypHZHy+sedCPnHLfT+XP/9UBxZHMppT9TvrJjnPOOToH9Re63nVPhLQL117kOB3k8Y92E8gOfg4saPQV/7kvam76D/I9+NEzUu1Hsu40nbu78BXz/yKwYgqjL5+hF2JP0N7Tncey3S96Fj/GFbzgHaQYw/LAVf8ZHrsP7N0C/Juu49VtFIABN4PwDeu9DVP3uZ8XvQj2Z+vkI/XuG6Qnn9T8P359UZLy8DiwOrw6/+VfpV5dH/2P0ladc756lo+nde1sNH2j3p39qhEsOX58LJ4NO/xP2f9olz6NP4ptXwdTnkJ7ANvJ/BTyq+z6e+8XSpSc8grR+285N+7xnhS3/4WfDvfYd+6WXh5yb9w/i6frSj4+i8/nek+1B/T8ifrjLzddjv7Gf3D5TXv/EH8OjnmAf840i3Mk6T+u3R2zj4No7R+/st9LsL7ruZHy/AR3Pk13+yi/5vyL+d8juAP7I/W0H9ePTbaL73CPnjf8O6NB+4ADgb/px3J/zH/DsL/ZUEb2nGRw3oj0H+ZOBz/Gr/2E27uU9xf5LCfoe+mqB3/ab089K/v4PrF+1hPxsEvpOew+C3Af3b++4o8K6IBHAe8rXRfwQYthcu0S5D+nPk0P94GnqZApxq/JrzNvTfRd6S2j3QTyzkMh4uCfp4k3QD8keQ1s+rJvUfo3/vvzxver407bnT8uZ7X5YyAl324w31z6F/aX9z/30J+i3pD62ALbxHRT8zaL+bzNMHgPqbGG/ZHqg99RPqez88APrd4X828hT0/QnShfRL9b0E7S/679LubcGfh3nhsvc/pHt7nkD+44ybvshXXfsn8r0VCWBR5NP/eRX89YYP438eZH9ert3emyPfa+DbDr6VAYg6BL0d3pvQvttIv80+7rJx0Ma/GofuPTL0c9JPvVcznjYH8t0FfwH6fUbw6392g/XIdwluAhdQPz3rfgO+NwSOME4K+vorfY2+WkQCuAZ6t4BrgYup1ygAUd8h72j9V2lv9x2FtHPA11vI39D7SeT723UgFF9Rzn0DMBv8qt8K0NXuaTx9ZuqnoHxc6vej/81ivolB/fnMv3vh7wHt5vsA+gfWor7+e6OMY9Y/JBJAz6Oeb3/Tzm+8M/NzUvpVMfrbI+g7vrZD9yf4n+R6qP8V+UUYH9r/Wgfg2frp/tD9rfYB40vrQW+t5wfWvfHgn057un5ewr6sH5rvB9VA3ljQy25con6+xt/SfvPQ3xDG/xLyyzLu9Xf6l/3dHe0byJsfWIz+mRq6CZBLP/F+8KV/uPF3lbTPGz8LP76X4fsZvqdxVDsz4+mR9hr47wF/xvPrjx8bPMb37/c+Ef18Db/6t42k3DLvW93vIYfxWcYzhvfL2i1b8V376gL029O4cPB5P10N/tfR/vo16ufo/Xb2UNzlAOgaf5kdfVWnXUpRXvtlFvRnHHpm/QmgU5p+NTcUR5HV/SftutfzReh8cw39ZEbOL9DHFugnB+8V8J5l3KSkPffCR2r6RRbfD9KeAn7PccPB24b6Q5lf9JtazvjpT7kIev0wfA43nhb5/uV7RfAYvz4mdK/X1X5EvvepB7THsp54v9rY+37SN6BblPYvyrzUiHYcBv+xKGf7/864PKM9Az5G0Z/yuz4a32ocG/Q/lm/0nCoSQPdHTyhfn/2R7xm5b3/f+Hvaw338x8Y/A5f53g/6iUv7ZIVeYuT0faOrxo9BfyZ4Pefq/6efvuc27XM5mM//Nh4HmBZ9/532+e+vUv8E48f41mx8zwwfKcC/h/p3+X4WfjuQX4fz62zw9ddfgHzHo/cKDelHIyn/N/qq4r7c+03a3/2p8SvuUwfDT1f6W3rG8SXabzflB+qfQnsOdByin+O+r6IfO/k14L8r39fwfbz24kgAjUc7Ar5qfI+m/gb4r4Bc8ejvY+G/P/LPp17Y/h6+94g2jkv/S+YX3y3QL8b3Cy5pP4HeZdJdtfegr676D4BH/4GF6OcvvnvPUZ317SJyGZfUHD6NT8qifwP42sHHHfjzvtb720+1YyHfD9qnKfcq+PdQvzf4fWfjGvXiQz85fA2jnyQk/Q3lhpFOwjy3nP56zzgW8P4Dfc9zGei/eci3fxgv4LtCnl/fBnp+9Ty7w/gi9N+I9Fr6f3rw7yNdEH1Ewb/3nfrDdtWOTPvMQZ7p0PN9M987M27VuKAZ4Ps2grzU1w/hMN8LgP/b0Pylf+Gf+g+B7wvy9Y96QHos46MS+l8JvZu0Xz3KG+9pnFwb+NB/Qb90/dT1X+iA/m7TbufI/w76JWgX/SrC/ha+V/F5aB51vn2T786LU+Avhf6y5C9yfoFv/QOcny/CTzh+cy/pFejhL/Ccov8t4j4l7F+7jvZti/zhd4L2ot9j0PdeLXzfdoq09lnttTuo/4T2S4/cvkvn+Tkcv2DcgvFHJZDLe+Lw/bDxtMbXDqe+8bXT2A9PAU4F/g3e3zx/RwJ4HDk2wP9xxt1G8o33+5T2Ma5d/2vj3bUPZyA/J3o0jqQR+eXRT2LfsaC/+h6P9h73jdqB9PO4R/740Dzj+vM/8t1nnYIP91kZSFc23lj8yDcb+ccg93TwpNMfyHk15NdYA3zGbWmX3Ruyz3qvkEZ/Oc/H6Ec/FNvX9+V8fy85/Bsn67hfEHr/x7h73//xPaBwfH8K6BUh7buOJ+Err/M3/ct48Um+I+D9KOVfRH+zwOs87vz9Nvrz/nE3+O4ify7mH+PD4hgfpr8s9Utq13J+0R/J9Zfv4fct/mteNH6ng/fb5IffH0ppvA369b3SXvSfvbT/U2Bd9iMrwVeY+bSo64f+dr6firzGsd0mvU07TwCiMntuVe/6+SHfetIfwkf7SABPs95ep1++A37fyTCecrX+KtDNSPscpD19p9HxsTv0PoD+zoOhexL5KlL+mPYvxyvl6vj+Cd/P8z029H3/7ap2FOcZ2mk+8iUxHjD0Xp3xp6dC9iXXa+NZv2NeWgY03tX7Le+1vOfyPaZK6KsXeuilXyD5+h14r5vW+Gv0ZfzcZfs1eBJT/yz7Y98RCb8f4vtYVUP3p76TdYT+cBjYiP3FROh3p//o/ygd8b9E+eLAPdqbaJ9SrE/amcP2Ze0h+p/p76V9pBrjYjHyfwr9VaS/dP8AnkX6c1Nf+4zrVHh90r8vnu9kM85e01+Z9i/gO336R/m+J+fVLODfQb1CIf/YsB/RGfenyFFWv3XjtX1fivru+z0H5CTf9yHyIo/vRMQk/1Po2n7heS4c79EdfjyfG//4GXLqp/tNaH3Jid7/0I7l+0/Gn/oem+dZ8FcMwLN503nU+/NtjLfZQO2B2v+8H/HewPuEHo4P75Mo5/7zIPz1pN3nwrfvpfs+uu95+r7n1FB8h+fBCpEAGqdqfGpV6OZAP74D/wF8TIbvsr7vwvjfDD77zU/6sfgOCPnGG48h/avxSfoHMl58z8BzS3Hvz6m/FLpVgVs93zEe/ue+yvmI9hvie9jklwf2gc4W+NYfWTxDyDf+1X29+3zjX4/pd2L8P/gm0D5he6XxBL5POhb9Gz+ywHFEe4fjfyuB/yz9o4zzkXEt8PsO/Bm3dtV7a9Lfgd94CM/nxkFVhF5D+ttN/f/JX498W2m/2Yy/B8xX2x1fofuOwcj3Lu3re5Xb4Mfz7S3jE43ror7r4bvQ/5d53TiFr+wPofdpNvj+CfAf6N3h/KVf2w3f84Ou712spJ7+be7/tSfqHxh+LzoTevHd56nMLyN9pwH8xn8PZFxuRf4tlH+NdcZ7r0nGR3mvRv175Ot/uor2ML7Ld496kp8VPo96vkeeLaH3h9w/uG/w/Ubfp7Xf7aGe/c/333zfzjiUDJTzPQPvm3vrv208COuZfjVhfxvtW+773Ae6/zvOuW0I/ex13w9E/s58L498hZCjAPnJ6N/9ab9OpE9EApgKeVai9zTw29T33JDH91PsP76fYvzlpFD8pe8/em8wBDk/Q2/HqH+C79Oh04R63YB9jBf1/Aa+DNr3oVuS9vJ81MT4F8ZTfO+t2K+2N45Z+04o3qIx9RdxLvWc6v7b/w9YS/80fm8daf2nTqJ3/cqj4cNz9RTk9l0A/YF8H973xPWH8r3xIshvXLHxxMYb34O+66Pr4i/w7/pYHLnGRgJo3LzvH++C/130pyWkr5EeQ/2l6Mn7DP070kFfP8+w/7/2WO2zq6CvffY6+vL/CIyj837Hdx2LAStz/jC+Pi/9cyj185H+nbTxOd/Dv/E5xutoH7mrfxpQ+4jxYb4rYpyM+0X90nvSPt5H19P+RP1b4NUf0vcQDzOvlyV/mn6KyPcv+poMP2nIT0v7XUIfW3wXmfXmT+ob312e+sZ5e/6ZQLoB9IcjX2b9XeCvTwCibgK9h9f/siv9Xz9M/S+rUq4m+poI/tvgT0ja+33Hh/5xmeDP9wxu0d/07/N9y8fkH3L+Ad9q8p3fJ0aoJz/kJ6B8Occn/B1GvpnYQUbBz270lQt4F7rGU62mfY5TfxnwGv2vLvneP7jurEau76E/G35Kwrd+KP5fkfsf77sOoH/3P4noH/tYn/cCteN6PvKexHPSXNLG0WWB/mPfa/D9Juyu+i8lIq1/Xwr64yD4Ks9+oRTl03M+zKB/ENDzg/tH7Yrd4U/7h/5R2vHD9vtHrAev8T2mdmz94+m3BcjXjl6efO303ktov/d+wnc5NtIusUnno32+pN+so53mkPb/F/QL1x9cf/FJ4Pc9zkOe1+DD8fOC77og/2TPq7Sb79lX1E+b+r5vr/7UW9gOuhp+CxinF7rf/IDvw4BjgP2R5yl0fWegjvYW/buh7/nJeCn/T+GA41P/K+3k0H8RfF0YVxlIH9Jfkv7ofbrnFf27m5F+GX2cRJ+X4H88+zH//2kD+PbTfqMpXwr8OYBJIgHMCz8z2B/6Lk5p33ekP8WFThvSjxlf55DDd40cZ/oHnocv75t8v973At03u192P72d/BneL+gvD/8F0Y/71tPgWUL+dvsr/b0y7b7W+APy3W8YN57ZeAbob0budNCvhn6T0r6T3b9T3/9h+Jjyvr9/in2t7/DXp1wp6Pselv9/0cv3K/Sn9v7X+wv4X+C7COBxnvB+LSPtux79pmO+a0z98HvSxrsXjFAevMaV+P5zcspn0P+e/FfA+y70U2BfWRl6n+Ya5VIz/tMCM/mOEP3vHvqICV+d0Yv3J94368foO3UToPMzad9nuwWejcaJMf8673rv4Py7mf1FK2D4/STvRaL53lA+kX8X/cX4puX0J+MHfL+1M7Au5d6j/ut83+X+nXR1/daQ7wvStvNf4J9q3AP4WlIuj/GdjIs1jg/g9JB98jx85XX+09/N+23PrfqPoB/tcr6/8ew9Du2j4Cuqv7v+JBHkoD9MRf6GlNe+fpe07wU1YR9TH/6PkH9Vf2fw+36F743+FhrH3eDPd9997935zPc3DzO+jDdfo30S/l2/9IuuF1q/YtD/fKdWv57b0DPuzfdCjHszvjgx54Yv6Vfa27Sz+f9Jl0gPIj8j9IfRP/w/Lu9HjM/wf8nSUD4ZMAv5vgtWm3Lh98E2Qn8j+ca76me/jXH1FLgaPRyiH14i/QC809CX8V7N6B/GQzYnbXxoY+j5/z/hfVhBxw/1n1LvEONnPuPtOOtjOfrXOugnhp9MkQB6P7EGPCOhb1yr8a5Hmb9uIucR1oVbpPWPm+z9OfTjIN+X6Lcy+jVu2zhu47f9/5DwvdVQ5FN+/dS/NY4CecL/N+L9gPUz/Mf+1/v1HMYb0/4J4WMR4+fZ/6+gn5jI4ftXvmeoP9wT8Pv/aO9xrnwfaJzm585T4O8Ift9/Tqz/P+PG/63xHaik0NuGvhNr5wAmMj6P/uH/XsWiv67I+jz/8v1i+uf5vwO/b4LXea4gfITvx/SHWQ1929/4ix8jATT+rL3nMfRuf/wM/lIz7lqTng6fvj+9CfwR2td36PVHMm7I+xL/P3Mf9At5biPdGXpx9c+iX/h/KL08Tyqf49W4eOgspv95PxgHPFmRr5/xF6S99/Cexf9fSkt97amew/sbP0m+cQbGwfs+9bfuG9Fff/dhxv/6/wLMkx0Yx8b7fgA/RY3r13/V98eYb6b7jglQP7wxyDkOfmoir+//ar84SL7/z+j/WyaHfjfjkNCvdp6PmJceMQ+1Mx7fe23gHOR9SLoi7XsB+9xEvvsexGHot/H/ff/jfxj3BiCqqu8het9O/Wj49l3xV7yXp/4txm9p2m8m7dEkEkD9C33X8yD60d/QuCnvsztDfwr5vq+i32v4/SvXZ9fl/sw3rs/2/x20o/3f8bDN9/nA7zg3vsr/0/P95eHgixgfTH33t94Da3/sSPvqP9GB9F3y/V+rD1l/jQ/cBh++T/kOdMLxlpko35F0ceY3z98dSLcHlmR8+D8nxvcZ/2d8n/F+nflu3JL/o+j71PM471zT7kS5pe4/sR+0Jj/8XoH+efGpF45v1p+hTCSAvl/j+zb+H7X/Tz3G+wj9dz1X66ft+Q38+sd7j6ffiv7x3vtUJR2+/xkBf0+on8j1g/4xxPnW+Fzk9v78rP6R0K0MHc/n2m99l9P3n32fU/8e3x/ISrvp5xP2v/s8dM/hvU2OF5/n8yr1b/suHOPauMI6wKXMJ3kpt8/5Czn1LzgSik/Uv6A47TPUuCDku699yn0F9Hw/xPdEWkHPOK3WpBN6voCu51vtxJvA3xL669mfRKEn3+XxfrCJ8R6ew8F/FPzDtB/Bl/ej/u+YcqWB/9X6V0DX/z+cBT93tW/pf0A93zvxfZMUyNuN/OSko6Hvee9r8jtAdxTrR1bmgwjzQGvgAe93sC/0h88v8d/QLvW9cePwlZB5bL9xtNTrTz85jHwvwscA5oMP4NN383bSv/8P9cuJe3icdZ13/M/V98A/RlmVvddbRtl7RKnMskdW+WSGbNmbyCYrJDMzZPsghPgoJFsyQohsUTLi93j8Xs9nj4fX4/F9/3Me93XvPfecc89d555z3wXTRf3/7/OsAVyePoC7swfwTKYAtswWwLGUr5QzgJtIn6B+1SwBrJ0rgAnJf8D3v8FX9cUAnqW9uNT/k3LTcwSwAfl3yI9D/eciAbxLft20tEO5CdBbIEMA22QM4B7S/anfMVkAOwGrxg9gGtqJ91wAD0DXmwkDeI52CoLvAfivg3ca/D9IEcBczwewOfnLgeefDeDC5AF8j3RX8peQXgQsQbvF4O895Pse3+OSHkv+MNJ1yO8NvZ1I30J+v2YO4B7kuI/+XUv9ZMDPqP8J5V9CLrHoS0u+L4H/m8i1NvXeTxXAe/Tv40QBLE/+I9K3oL8K9DWlPzZC34xIAFsFIOoX9YT0HfpjPOWLkp8Dvn8B/6rU8IU+dk8TwHXQvwd9mIQe7CKdHzw/gb8CfFeDzm3IYxP8PwN/5yi3mvxXqN9B/YTOHuTHkm4I3pzAV6EvFf0ykXJ7wd8X+W5JGcCfkfsY8l+l35ZRPwb61oLnS/LPkl8a2Ir68aEvZ4IAruL7efh4AfleIh0BX2Pwl0Z+GfnelfKlIgHsjf6NoN0c4L9qfeqV5PsM8B2nfGfwfYU+paDfkgPHQNdS8GUF/oAeXKL9JdSvD77FpOuQn5FxWfmFABZPHMCR0JcYvL2AR+AvI/WH0f8N1H/yl9JeSuo9g7y7Q/df1F9J/cfUu0z+T9T/l/otkNPHlM8Kn43Rp3XAycivJfRfY16qAf6bpHOjf18zr61Az6/Rzn364w3auwK+0vD5DvhaQd9v5LeBjvjQ3wN5t6ae+pUc+mcxvy5ifMahXHn0vwDfh0HPKup3B38a6HNcXYSeC8jbfpvnOhhaD78h/yT010N+W5DPBsad+tiB8dif/CfQWzoSwBLgawL9GSi/jvwcyOMw+IqQXwN5fIL+jUY/UoA/F/RF0T+FSLdOEsB2wBTAA9A3A/nNdx0kfzh4trEebgH2TBrAetTPjnzz0V5a6n3q+sR8uxf4EvKtQvmx1P+SfquEfC+BJz/yyMS4nk/93eRnRi5b6U/nuenQ9ybpjuhHHdLjnL9obxXfd0LPC5RfSvsZGf+3aHeF+ynk0gQ4jnHyL/1bMQIe4J/w2YD8P6k3Bz1PzfiLhq9dtLOJ+oWgrxb070af5kCX87jzd13yY9R76k+Cjiq0Pwn++9Iv2cCfAXyFyJ9NO/3Rv+58X0a/zKR8EvB8Af4LtD+LtPp3nvpXae8P9QD6O6Jv44Fr0IO0lCuOvPsyLvoD14D/NvR0pR33GZuRf+G4AVzpvEL5xrS/EHndo15q5wH6Jz/ll9FP4Xm+rPxS7wF4BlG/pesS5U9S/zvaf4w+ZEI+6ZF/Jeq/Rf3pfD9CvXbwfwG5nQdOQl79wOf4yohc85F2nNVG75NBl+thH/A/JD0eeragx+WgQ7kmhf+H9JvyDactdxr9Ksp8FF4/GlH+GfetkQBWoL23yU/ofgv6hpE/Dfzd6P8s8QJYEXgdeT5EnybTv4f4/hv4voH/dfCRhv3SPc9X7m+AS2k/gfr9TACXg+8K621b8ptQbwZ8H6T+Hfj9lvyMpO+R/wb9sxX9TYocioCnC/x7LikN/SnRky/BV9D1AfrykE4O/p7QPx2+F1HvV/Bnpb049F8t2tmN/j2ArgPg/wmYBvxJke9E8C6ifCHKbYA/z2sJ4P8fypdAPrmgI0uo/2uzvnajn/cgD/XE82kv0p+DbyB6UIb2lzGfLIbPPuCfS/nXqV8dOkZB72Tar8U+oiHyaeM6w/jLAcwO3Il+FGTctgAeoZ1fyK9Df7aIBHAT9B3zfIZ8N6N3j6CrDfXX015J8LxOOg74OiGfw9D9Cump0P+Y+SA98q3I/HIZ+Zx3fqW8/beY/k3CfFUGvSsLfBk+xkP/p8Az1F8B/W3pz57Mw1WQUxvKjaL9hKSzQX836KlFfdfFQuRfRH6jAhD1Av28AnzdyL8Mv0PR98bI42/4r0S769GLY9T33H2d9t+A/humqTdH+wjtHwDPceT3LOV+43s6+qkF+Q2Rx7vA5zzvQ291zs+92b+9A77G0H8Hum4D3c9cyvI0na577Wj/AfULMb/3RK+KkI523aD9otRbyXhZDf6b8H2Z/mpFOyvhby7yvIOcXqZ8Kfc75P9D+Z3g0T5SGXl3pnw79Coz/buT/o0F7gK+S/n36O/jjK+J0H08EkDP54nhrw/pbtCTnO9R8PU99C6mf7oy777HuGgMTEw7xeF7H3ylhq4mzK+PwHeb70co3wb+Pyb9Iu2tR09WUv9F0rG014r1oLLrG/UHuu7Q3lHP89B7EDiQ8Z4Q+Wq3S4VepATGQE8i8H9I+4/Qj6zgn0O5rcDvmceGa9/wfIp87kUC6PrRlP5IQ/1ilGtNejP5rstxqJcY/NeY1yPk94S+JJQbDL7m0L+L/r5D/9dmPNUBDnVdoP0xyN/9SHPS++mfMfRHQ+r9AP7K9O8B6LtA/g3S34P/Lcqfo/9q0B+DoX8D9bpB/xjk8RH475PuQ39sAc9Z6mu3046XnfxfQvYR7SJnwKt95BLj7Qb4DzKPON8676UnfUo7E/pVlXZbUL8n5bVTLWB/mIt639KPJ+B3Ivq4GHiE72vpjyPMX3mYP8vQP/Hg5xf0YTjp4ch/DvT8gbwvA6do50S/akHPKej+E/zbkI/2tILwqR3uGPnaj7QbnSVf+1F43jyLHLrSfl6+l5Fv8juA333nk0gA3Y9mBH8Xxr12iI+A2nd2wV8i2kvkOZ78nIznT9CDa8hhOvg9t2an/jH0Ixv0NUGu7vPD+/sK8DcaPj6Az9dpv6fzJd/30d9nXX8yPU33D+BPxPj8Fv06R/8Xgq43gbNofxR8uG4UoZ9asr6cgL9WlLtIOjvplNC7Bz0co/3f8QVe9wPaVebBzyvwd4v6mSh/lP7q7L6UceD+MgL+rsjhIbAJ8vBepx5ycb3yfqc49OeFHu37T6C/F/UfQd9Q8O+jfnn6twLwde+BkM9ntFcGfpqDbx75L5POTP9cof1Yym+gf6Zqh6X8FOgoQr52javwGRd+PP/1p77nQM9/8bVz0O5HpC/C37P0V3zgcvKL0f75OAFMp90VeY4A/0vQsxF+BkL/fvK1t+cF72LKH/R8wbipDH3a04ZAXz3wraFebto/SXvK5zD0KSflU8b9Nv1bjfz89H+05zHqu99wf9Ge9mdSrynfH4D/Y9bVytpPmU9+hP6F4CtA/hTa+xY85ei/+fDzkPK3kU869o9HGB/PQGcD1zHph74OpDeA/x7pr2jf8/Ri5o8+8LcJeg96v0N++DzjOScz9LYD32nwFwHfIPAVon31Wf0uRv0PwK/90HPZEvirQ/2t1B9C+SHwNwn9+RV8acAzkPrpmN+qQX8p0rWdL5h/tPuH7wMirK/16Ncz1N9P+du0m9r7FL6vpn3Hf0/mM8f9DtL54C8F9LwHnzXp/zjs+/9ADy4Bf6B+LfA/R7ujobsZ+R9oP0CuJ5Hfd9Dh/Lqd9rzXbgb9N8B/Hn2P530B+SdYf9Jg9xpDujJ4fwxAVG/wNoVO7dGdwD+d7+WRYxna897zivtOxyP8fMp+p7b2ZtpNS/0ezGs1KD9Y/wXkcwD5vAH+eeR7/3SD713QgwzUGw//L6EXS5D7Bcp/BT32y/vmI79Lrv+k50JfI885jD/t79rbtb9PhL+kpJejP7vB4/y3D/460r/jwL+a9vPQ/g/ea4BvAeW7Mr66ADsDz8J/Q9b3WGB+19tIAFew3i9y/SV9yfttzz9A7aYNkdcpxtsG6HYe+cb9OfTe4vs52n8R+r5n/RqhHiMf9f999n1NgNHAVsjH+5BV1HsZ/M3pn5Sev/n+GuU8L3ieagY/u50/qO/+ML3jl/52f3gAvHfJPwAfiZFTXtIrafeQ+yLwH2U8pqN8BcZpau//kI/+EPpHrADfNuixXwaB/wr9uZv2a8PHHr6no3/L6a/BvFoRPHcp90foXOL+2/v6i+jbBeD7yHVNaH2vCv3asV3fM/A9bP+fhXyrMX9MZHz/DfQ8rj2sHO1qL5vi/pT5OT7wE/j8RP8b6Na+o73nb+ishdxqAt9HPo7v3e7Hye9EvZ+9z4W/EdD5K/QNAE9n6nk+V58qgKcd+XvB0x6608LfIPY3w4CDgbnJdz/ivZ7nJe/3HHeuQ/XJv017w6ifgXaXsB/6mXRv9KA6/A7QHuX5iP4aSD+eAP+70DMCu+4h7dvA7uRnZTxmAS51HUZ/tf9p7/McO0j7q/YP6OgN9P6/C+t1E+geBP7Psj5d/iB49KeryfidSf0ByMv9Tnr02fWpKePIdemQ9hvadd6/HwlgFP23g+R97zfAl0n8yOs6sCXt1ya/APvSi9QfyfntMO1odz0M3xWRZ3r1G32aiPzzU/4S+LqyvpbDTlmd9jaCrwcwBjie+rc8n9L/7em//SH/nSjkk4j6ZWm3N/KrTf5s+rMG/XaG9PMhPV5DefV3AHQPph/tf+0r+n9tRW76f01zvWZeqY+cxpJeGrqfdx5x3jgM/sPo13fo11Rgffpvk/fJ4JnG9zvgD4+nX7UzIZ/ZtKudzPNVafVceyKwIPymp/7r8JOTdhMwfy4ivwxy+wI9eNZ7QPh8jvVsB/j/Yr1bEwlgcupVho9y0LWQ+nXBl8/zE/27kPHxKvxpH5iAnFxnM9C/29GzBcjhy9B56hBwP3QNQ77O76dpvwjldtG+/lSj+K6flevLAMaT618f+Cpt/yHfbp6f4MPx2Zb9WAz5+fj+O/hH0x8XQvNZOfqnGf25gnJlGMfXoGcO5a+i3wm0r0JnDPT3ofwO5LEPOrTr7iAdQ7n+yKcr/Z0UPdhG2n3UDPqvEe31hc+GyEf7airkEk26iuc3/SmoVxa82/QfJv0n+ML+iXHhewh6GKVfKfLzfsD1szDteV/Qgfre72xh/+D9Tnz9XVM/zd8o6JhDvuf4JeDxPD/C+Q197kH6KvUPsR7PA/6gHiL/P8A/BD5OkY7yXOH6j3x/1A8E/p5Ah37RCdXjnE+3eyjUfmPtaNqLQnaBQeBLgH56nvc+yvunM6TrQc9U8LUlPY79cdivbAv9XQP+/qA/1lgP+Whf3EO/eE/7tvOYfm6uL9AzF/x79Vt2HFDf80Nb5p/cjL9EjD/9LR7yPX4kgPW97ybdDr28y/ftpL1/+IJ2+8L3WvpnLfRnAI/rqutsNeh/gfoDkP9q+ElMPf33lO8W8pXzBsZz+Pwxkvp3mV86MU7asw48plwL7e/QnQ69qor8XkY+b8DPEM931C8NvhHINXz/UtP7c/ovD/U20v+ZmF8nMT5n6UeGfHZSfyd0VqB/S2rvp16peE/j20h7eaF/eiSAadif2f9LA/Cf/+p5YEbkqV9FBeYV/SsWQf9S8sujF6eQcxT05UYul4AJwK9/2VzXW8o3gt9T4F8L/mGU+4r1oZ38GJ+hvwvlte+F16/fkZfrWEXWv320W4l0D/07wVeJ8gvJjwV/D9rXf3qc53vyWzMveY/tPYz32dfo1/P6O+v/QP/9Tfn39L+EHuefu6SNxzA+Q/+XKuCv7L0T5U4i35XMf99CT3yg8+OP7Cv3Aa9TvxDtuz6XpT/L005R9Fd/Of3nxiNn/eeus//U3vU78CXoD9+LZCL9jvYv+vMq/aydKIX+ntB3HToOk3+DdH7y6zqe+V5Av1/w5oGvK97nQL/727AfTAvaz+T9NPUmk288wkP3Z9Q3PqIYckio3xv98pz2avA/An8z8BuX0Fn/Eu2L3rdrL4O/VoznKXz/kHRH6Byrvxt0dowE0H2qfifeHx5hvqlM/iL691vOFfq//+n9H/JtAN/Pk56NfA+z7jSh3l7mmWzgbw1dbdyXII8s4CtA/grkcCzkz5qLdD/tzN67QN+r3qtQfyFyvE3/DEZui6nXF+j9Tjfwhv0vfgf/MtofRn44/um/8yHjtDnyrY889Hf3/jd8nx1Ff8YBVtF/jfb78b1uhO/I1/iMQuDfwD7ngnYC4xvg7xnjv8hPCP6wv91d5pGU3j9TfxvlRtN/vZDHXNbvfOjRLua7x97XG5/FPHAUmBj623nfpF8sfC7zHpT+8N7zV8rXp1xL6MlPf+YET03XJ899+lPRn/dJH0O+G6iXnHRb5HSF9aEC4+iy9i3XV/R/oHhYX+fD31/Q29r7V+dL+mMd+ZlI1yQ/DvLrA75+wLKU+ygSQO+vGsJ/R/BVo/8agW8o+qe92fuuU/RfY/eH3gcgn8LwlRb5ZKV/34L/3eAtSvmejm/9X6nXCDo9t1Shff35tDM90g4F/raMq8nIYxpyiEf+featD6k/HXyfQ8879LfyTQ7+ZfTPd+q35yr9Asl3X+e5YKh2HdovRb1+1PsGPg+Sn834EOS2jvmhA/kbqRdlPAH0PiK/O/QNBzYkvzn85PO753/PX/RL2J7j+vcAPvqiz/rFJUPe+lHkAeZCDhUZT8a5VSHfc2A96G5N/7/u/ph84ykLUl//iYPgiYTi28bR358C36ZeLWAM8+9C5LqedH34HwBfjcHbBPoPgH+m9mHodH4zvq0M4/sCfLXz3A1/i/Qvgp7G1P8e/dEuX438N8FXwfguzw2UK8v37Z4rWb+O0i+Z0e8L2onov8TIrxD72Jfo35LwVQW6s9Hev9DzDOuG97vh+EP3P8ZZ96Oc8dVrjf8jv57xF5Gn+dOvIxzv8yL9Mwu5eA546H2241d/FeplJh1J+zT93k9/Tjol+rCS7+uoP4L+XI5eGR/yE/PdGdJj9OPVToIcryGfbcyf8/VbUr/Qnw9C8bj/6h9Jen0ofiQR7SWDv7do9wT8DNDfCD6K8v0F8C1inmkdCWBx9KUp/OgX5P7oOPjjuz+BjoKUL4B8dhlvB97J5NcJ3a/No5z3a/qfjtb+A37vha4YXxaKX1wAvv3I9Sb12kLvQfLv0H4d6HE+buP9OvI1XsT4kffpP98N8F7la+hwf5+M/JLQOZdyLamv/eomePvrJwqejMY3QWdd+uMD6HmF/q7i/af7XeYP59/i6MNYxz3tN0dfezJPjINfz72eD6tQrgDtbwbvDuSp/4L+DPov6L8cP+THrH+39/8/Qrf3/jP1XzDuNBLALxiPxgf1Yb/hua4RdHzu/Ay9d4CjKWe82XHmxV6h+5xB0Kd/5irK/8J8o3+mfq+LjE8Av36wLdz/ez7k+3TgJvDp91Heewjkd8/4Fr6rT/p7fER+TeTm+p8U/Qv7U3h+9v5ee9tV+P2WdDzaz8u4y4Bcv6b9esg/H+U9v+rPpJ/Mbuo/Zl15lXVWe8dr7IvX0f4l8r+j/hr6Owl4wvd53bEPJoCuN7GTJYK+CcjHcVVDPw34Pw/9G6h/Un+KSAC9H6ysXU75w29m8LkffkT+s+D/l/7tzznTedT503gw48TO0L7xYnUZN0+A3r95v1zc9zvgbwJ0ltD/ifyelA/Hh35D2vXgL+8ZfG8B+hMyfsrSj6PgX/+x2u6v+a4/WR7y9eM7TL7zbdi+9TfpOcinL+OzFO33Ib2efO8Xwv7V3i9kRJ/WMo8tI78X9b8GXyxy+Nlzm/Yq3ydBTy+SngC9O5C7/j1fME8WQf+0R2if0F5xXDuc9lz0Yylp3x1pSno87czme3Po018tN/JsQDuvGZ9Ce9Wpr7/Ih5EA/ul8TP4r7EeMU9KvxXvIq8CxnnfY/00GFme86h+gPsejvb+g9zno7Y9eNFf/vIeHP+OIjxkvT3n9HKLBf1m/evDMMD6F9oobVwn+7yh3Hf34ErpPAwfQfnzkv9pzd2h92Qo9vuvieWUd7WgHvkz5EnzXP7+Y8YP60XpfhHxWgW8t/aH9NannT/0r9Oum/nrklY5++dhzcxT0wJ/2TeNatHNq3+yhXU3/O8rHgt/5yLjy8PtP95i3t2kf9x4a/MZTGl/ZA2h8pfEWxl+E/YuyMy9u9v0a5okHxrm5/6S9cHzNQf0noct766ER+CD9IuXuUu5l2m/BePfc6Tk0OfXHsl7prxi+P0gOPzmMD/acAD7v3+oa70P9mca/I+9ZtJdNP0Pwp0e/i4B/TPKn6UsGvdq3bG8l+L0/NX7P+9NilL8Jfx/oHwTsYvw++Iehb2mNY3V/yPwSA13rgevAfwJ6HlKvMO3n9z4/tD64LsT6Pgn94zwdnp+bgv8T6NWPVP/J1cy3zxu/Zpyn7/voj0v+i9D3fCSAuUP3Yi+Tfux+BH33Hro66TI5n05XA94Er/dDnoeMV5rg/Tr0p9duD9/30Z818LvYuF/w9gffRuq7H55Iub6Uc79svIt+K0Pg03iYNMZdey5DP+/DXxbxUi81MCn1vS/2/ngg0PvjJPqrw08J+Cvh+0OkHR+OF8fHNfTH9wtu+j6N5dHvXrTjOcLzw+pQ3MJc8Pp+gvoWzTyYk/7/lvyuzFs34WsPcjoWsr9rd9dvQPv7debH3tBdl/qboT9HSN+GMr6M7/oD/Y5HfgPkM8/7W+OJ1U/oGMo40664GTgyAFGlKR/N+vM79BRgv95NOwryd/89ivQX3o9D1/vw/Z/9DzmnJX2D9mKgey30uV/3/ZX28LOLck0ZV/uRn+c74/EmaF+Efv2A4tN++L0n34GaS/tn0RfjADIg7xj6O5l2U+jIwHp12v0z/atfbG7S+hf+wnz7M3AAeOJR/xDjz/cRckNfNPSXop5xWZfd/ygf45c9n/muBfXLISff4zgKn66PzdDvrcihM/AR5QfT3sdA4/vnQOf10HsF3psb/9+J7820L0HvdtK+39VduwywJnjqQE8a+uUJ7fsO3lHwndOPz/0D8kgN/iV8f8t4Wt9hpF4s5a6Cvyjta0/VvmocvfbVW5SfSXoe6Ty0vx29WE9/3deOiP5lJ/915oGrjC/va4ynuQM9+ikfon4VyhehH94mrX+865brUnj9Ml7M+x/fy9Ae+Arrf3r6wfvs1dDzpf60fDeepQ7yXg1/Z42zIO07FMYXGodunKH7z06U912v24w/4yer0X576kVD93/+S8rTdxR871D/Uv1y0Wf3BdmRz2r47sU48T5qT2g/GAOegvqD0T/6lzhuHCf6mySk3ysgjyfMN/OpPwH530FO0dDn+6vh9+vC9lP9j9JSX/8j/ZF896M9cvP9j/buD50PkE8s/Ht/N837CuMXyDd+wfdPVoHvKHgSGN+NfKKht7p+e8Bk6LXxxd3pT+Okw/484fOb753+Buzme16U0x7n+2W+x1iM/pkR8u//i3a9H9JvKQZ6T0On/ktbtUcCzwG3ON9T3/dgjMMtQTv27zvIZzfy9X3CesgjBrzrgP2gbzP19SvzPVLj65fDr/7L4fdDfb/Vd1t9X20O+cYH+g5wH757P2p8qfFh+0mfoZz+3/p9f4x+6v9dAf3SzjXT91iRxxXab4bcstBOYe3HoXdH0qEHvj8ym3npJt+nsH6vpf/1I5wKXGK8Ju3rz2b89V7mK++5GtJ+I2AD4AT3j5Tfy7w8OxJA7ecl4E//40Te60P/u+jnYu1MyG8v+afAexLYEX7HwY/vm4bj1ryH8H282pR3X/YrMAv6+J3vtNFfsbTvfBJ+3yYl8tX+9Qdp7V8NwF+c+ekxsBXyvoX8wvv7S6wP7vN7gN+4q+3QcYvyX5FeEKEe8jM+QP8097mbXL/Jz4FcV2oHIT2c/ATM38PIT0l76WmvsHY14Dbjl5BfePw+CsB/7yHVoHwq6Tc+h7T2Av1kZiIv7QkdfLcEWN97fvqjq/Z55ynofMbzK/2R2nsr8tM5v1PPd3d8x+0f0vqPJud7cdrXf7SG+wLnG+8Jfd/KeYnv7wK3gq+bcRuUz6RdmLT7B/cNi5DnYtr/X3753pNWov18vo9A+hT4p6EPU30HFPgh/en7U3HBN4l835+aZDw1+OZDxzf6r3i/Q33v/fRj0X5bnu/ab2siT+NxtasYr2u8qvfR+vc2g45a4Ne/bhjt62enf11l6n8NneNdj31fjfGxwH0d8tjhOzXMV+1IR0g3hP8qjNcO5F9gfs0GfQdZNw4AC1B+Pfmp4Puk8oFe/QGnQG8N8vW/TO39KHzNMr7NODPS95GPdsFM5OtvHY6XN45+oHZy6KlKu6OBrci/Bz/e04T9jwsi1+Xu54xHRf6eT6prf4IfzysVXddD8T/joaMO9oKfgKmNX6Zd38fXfuN7lL6Pfwv+fBcy/F5kV+bN3MizC+mWxvlBj++uNSLt+znGv/ruz+PQe5/6vegfoL+A/gG+/7qTco8oZ/8URn7eoxYBbqY94/X1d/Xd3ALgGYSc1mhPpp1Z6Pcc5NpdOzrpxuD5S3s9+KPcD9PfXzGflATvdPZB+tHWpVp96PwCufRD/t+jF4X0LwAWBL/vaC5wfkS++tuUQ35FoW8w5byfM97A8aDd3P1NRurnDO1f9YczrtY42xjOU8bXdiG/M9D7GP1F+qFPhemHcswTo8mvgv5WBb4N9P1yz1vu03vQL89DfxfkXxW5pKUdz+NTAxB1gvrG+xrfOxX73BPgFORoPKb+V7475Ds7vi+h3Dc7vuDf/7eYCH2+f+h65Pozwng+9QLo+XUQ+73ztLMRPfW88rP3PPqjQHdl8Cem/Tz6j/n+J3qgvVE75MiQPTKd549IANWPFMx/9vs12rmPftj/2m+NF73vvRb0+/6994ue9/Rv1N+tued8+PN96/LUfxX5/Ey5GPh3XzzOeCjw+/7jY+aTrOyzhiHfqtQbTP5q33+h3of070Lo8159AfgfGP/GePa9wRPISf32/T7fWzrk+yHkT9eeoV8k7WxG/sP1twW//ydRifbtP+/J9aM/R/0uyC0jeIZEAvi2/v3sB1JRb6fvUZD2fqUX7c6nPd+behTyv/E9jQL0n/HmxfWXA09c6JsKvvD/EhzS/oJ88wA3Yn+a6vucof9PGYz+ryB/N/PTQO+FmD82k+/9QYrQPYL3B3ehT//69vLj+5zwm0E5u1+D/izUz0z+DepnBX8b+KlI+61JGx+clPJNKO/5w/nd+C7julpRz/iukbTvu41NqG8cr3q3Dn6W8f1r4Cz4832wRfCRAvkpb//HZqrxdMb5+v4Q9QpCh/HFsfp3ktbeqn11qft142G1W0NfNOWbeG9C/kzo893Xj5BrPv0vyHd+dV495TyOfLOmffq7+/TB1O/n+/rAVYx/72fnoW+Nyff/VdxP+n8IR6g3wXhz2vH9Kd+bas/3DkD9Q1MhJ+PjUmm/Z35Ljpxbke//a8xAb763n0m3Rx59+X4a/r3P9P2zopQvBrwKH9pZS4XuD56Arxn5JY2/A79+LOnIN77VuNak9J/xrVcZN78ht7vsP94xPhj56VcRxf7a9y17IJepzBPdSGu/Co937wtzeX+AXr0NPAY9r4Hf+GDveX8M2dfzG/8N/W3130K+KchfQvkizNeH6V/PV02p5znL89Ue5GHcWTge7UfjXbRP8b208RXOh/p1uB6BPy1yqwRMD/yU/HnaB8H7Jekp4PP9Rd9dzOA5iPbzQu91yreGj9nk+78angv8v40syG8+afdZ7qv+gb5sofijNMY1oj/6f7o/1j/L/fGz7PfiAXvT/+Wll/Z/934WfJ3Jn8986fujvkfq+6MltXehf2Og1/+r64Z++H80vhPr+7D6r9wI+bH8Tv1XSK+AjpKk3f/chs6k2LdGQddY4AbGu3aCKeDVPnACebmu6ifSLxJA7XPuO/3/utq+HwfezxlfPUhn1A6GPDaC1/dIjO8sB3134MN7nGr6Z7Ju3QG6z3N/F36Pbi764/szt8g/bfyI92Dk6z8+ELr0fz5uefrb865+w8YbnIOus8CRwHngb+f/P9G/XwHzIn/jrrxX8J7B+4XPocd7Wv/HsKTvQ/G9Ot/9nwb/n+Ej5q2UfO9Kejr1f4Tej4xLpZzx174b9nckgP5PV3Ho056bn+8j9V8nP1fIf+tJ6H1h/XucT/Xv0f/d/ZH7Iu8HNnufxnmhIHq0g/nN96u8H/de3HWuv/Yz6N4G/1/SX8+S3w78A5ifCkD/T54v3Bf7ngHt6N/0IfLpgd4NIn0H/TgTsr/4PzzR0O/7B7570JX52PcPtOd8bTwxMAn1R1PvAfh/Zf7JRPuDjJ+BPuOUjE8qS/vnkfdp5rPrtHPR8y3lHDee14ZTPi3413pegf4OtH+UfpmM/meH/sJ870L534wfMj6DdFQkAL4z5nuTvt8zHDyJvYdQP5HHS0Df3RgBfs+hSTx/GkdvfKT2KPjuAx3LkK/3dzP0owDmhI7UtJuP/dkW2m8OHuNvq2s3hJ7t8DONfO/3/J/FKr6Pwfjbw/zcmP6ajHxHsm4Y398J/fb/A/+Erv/1PxDh/0s0/rcp9M8I7Vf7Q89//m36l0G/+mx8nvYJ7RLaKaLp32vILwV8bXJ91f8c/fed0VLQ4f1VDe3DwLrAT+BH+8YK40WALxrvhf695rtd0PkD7Q8O+RXpZ9SdfM+Vb3pvA52eL32PJxzfuJT+MX5sHvTENR6E/k2mfyT4fecrAv7w/7Vob9W+avzBbs9HwLGUe5f1vjVyHwI//g/uLvr/G8ZPLOl67n+ZN4y7Nw7f+NVY9NO4qnXo57/amY13hZ841PN9wUfslxKzjhkH9N97J/BvHPAu8Pr+je8OhN9f6wb9PVhvPLd5jlut/RD8eX0/AzqdX/Vv014ffl/b90l9l9R3SvW31b9C/7nUxk+5nvJduawIQFQT6EiLvmejX7T/DtSOgbxOA983Lg/8SUiPA34FP54ffA/f/5/Vf9L/n80Cf8YRht+vm49+5WAcLyC923t645fgz3484v4UfTSe0HhD/eS/AV9V6KtGuRm+XwO9+tEY52Z8m/8v6X7XOEH/X9L7Vv03fK9fPw7/fzMJeu27s/7/5lLwe68Rvu/4DPzauTroZ4P8KnHumUb/DWecGS/gflM7ZGH49f+un+d7E+BW6iUJ+dd5b+w9svfHv7Ff0Q93ved8xyn0XwvFe0wCv+/R+T+O3nOVQH+q004K0jfp3znU19/Pe+5nMz1N737vxdGnl73HoX830f6r0Lea9owfqIa9Yivn4ur6CUNPNPPDcvRsEfP/NeM5wR8L396vFKQ93z9d5D4jNJ/6/2N3odt3cvS3DcdbG29nfF0N9CMLfM1jvNRHfrP1rwjF/3RHPuF3a8L+Hr9Qv7j+C8hf+9E9341DL/8m7f7A/73cS7oS/RhX+xnySQuchHw7kd+Y9SR76N7mTeg/qV+qfkq+a/I/4q8+Z5wah9Xbd4XR59fgz/cYfVfb+8w50NMe+VZAPr4TkwPo/yoVRK8aRAJ4hO/+3+Qqvm+Ar9q+U4Z+uJ7/y/eK3vdT3/d//N8d34n1fVj/H8H/Q9APyfgC39ty3Aw1Dpr2/B89///B/4M4Cd35jHckPZRy7p//D3M8ofN4nHWddbSWRfewj9LddahHQSWlJCQkVBrpbgQkpDsU6RDxCCLdqRKCKKHSiEh3c0gVUFAaRPyt9d3X9a7FvT6ff/aae2Z2Te/Ze54R0VH/79cuEsBcWQP4Z84ATkoewLwpA5gqQQAbUS4mQwBzZg9grUwBPPlcAGOTBPAcsEHcAB4gPzHpJQkD2DpLAOeCbxv0C5BfFBhLuWbUbwqckCKAxeEvJd+TA2fzfSHydqJ84mwBnA7/nyB/dKoAVkJPo6jfmfrLwdsbfiZSbjj4iiQLYHPKX4f/4TkCeI/yqzMHsE/GAM4h/y76vYK+4lLu7+cDuBM9DQD/ePh/SDoGfNnBdwM+lyHfFPDb/iPg5xD0slK/NXJ3I/8j8G0kf94LAcyF3OVeDOBa2q+Y7QJ8BnrFEwdwLPXy0k++IH8t/O6Fn8bwkQD+96DP7yn3cpoAFqR8LvprNHRyk05O/grkPwfecehvPvykRt+N+L6B72mpn5b8StRfEi+Ap+EvE+2TkvLPUS4b+qmWKIAJ4wcwMbAf+Rvpf7WQrwLydUb/r4N/QSSA12iPvrRHE+rnRv6lyHEU/irBf3H602r4HET9ZPB3KWkAk5A+C/3s6QP4J/Bl9JMFfmbTPpehm4bxcAD5FqH/8vCREHlOwN+n8N2B7+npf63ht/szASzKOCwGvAB9+7f9uQ/wDfhPng78tMvraQOYGPqbkLsjfOel3GP0kxp9pAR2op1+h365OMgD/4efDeBJ0pfpj2tJT0JPX8Jfevg7Srv/i57Gw0cz5xdgQug2QT8vI/8/4L8Lf2+Bfxv4p9JvptOOncCzJABRv0E/Fv38BJ6htEdC0q9A72P0PCx1ABvSD1uQXk29QtBtR/nJ6PV5+kdy5CwO/9spvwT+atA/qgOTsk5No34byl8Hf2f6Z0XknwcfVcnv7TygfpCnLfItAM6jf8xxXXNdBFaEv+7otzZ6PQiMQzsOhL8h8NWU7yuQNxH4yjAvvIucy+B3Mfznonx/5wn4z4be/2YcToXfR8iZlfnqQ/BG0Y8Kwsca5N9G+hr0qiBfM8bfWL6noH+vIf8B47Es46gcsBf8FSR9CzlH0/5FaL/6jIc+0H+L9F3KrUZ/t6GfjnQT2mc38qeA3m/0v1dIPw++f8CfDr2uBn8N5N9FOdfZi8B0fF+KPnOTPgj+rfAzjXaZzDjaAX/P0F+bsC4Oh78cjN9Z1PuO9rVd7oC/UQCiWvG9CfA7+HP/sIX+NRf+3gP/XPLfA3986OWi/hLSwymXnu8n0M8T8K2D7mnK/Qh/Xfh+F/qzgMNsH/TzDbANfOwFngZ/WeqVodxW+PiMcVGA/Bj602bqf0H9heRfQZ7D1J9J+l/KF6K/ZKf/7aN/d6R/tSC9jvb+kn67gfGVDnmzgf8N6hUmHQ/+q6CfX8j/kHpvk98bfuqRfxR6NZhPmqH/+8h7D/gp80t96I2m/ibapSR4H1C/C/jO8n0N6ULIXyS0nz9Kubz0n6Pwe4FypdDzGOrfpr87L30IPzHUTwS9Xsh/GD7TIO8I6sUHb2no1aJ+G9ajzMCp0DsAnaHgSwS+u8jxDvU7k/8++bXgY5jzK/R/IP9Dxms8+m9X2n0D/WYk+4Ab6PcH5GsM/zPBe5r2Lwv9y8B55B+m/iznXcdxJIC74f8wco6nXBnm85aOb/Q1mfZZAN0I/B93X0e7JkF/w6mfBPwTgOXAM4Py++CrAHxtR08F4N994Yr/2B9ecn8IvAg8AZ7F0CuT/f9f/y7zZjzkeMD6Vg/+96OXvMh9gHQ10l+hn47QW4CcC+m/4f1tWI52tPcq5oGa9I/XyK9Jv9xP+ivWw53o5yryxYNuZfiZCn8/8720+znSXWm/gpyvatDuNYEn6bc5wTeX+q9EApjA/SX0v0P+89RbQflNtEc9+E9Efn30k5n5NyV8VYKf1OCfAv0D4G+D/nvQz/PTfyY7/uHnNPRfAq/r4ELwtSX/N/Q9nfRn1M8J/dn0i7isq7fpH22gv5VxexP6+6k/Hnqey9d4fgidzzfDf1zyl1IvCfkVaI+/XYci8E/+BvZb+dHbKtKr6e+Z4bskcD/yFEWfreHnOdpnIt9zQmcL+U88L6DPX+h/aWm/j+lP5eF/Cfn94fsS/fgWes5M/mPwO68l83xBuazw1QV5XgNfZvITM36awl9R9N0JfF+BbxHpQ9QfBb8NAhB1B3if/O7otx7tsxz838DHBerXZjxmBNYCfkV5z/ees8Pn6/Xoby1wHfAb6v2Jvv8kvRR+jiH/UvCVgN5cynWIBHAr8lRwP0S5rtB3/tpIueWki3negX4evn9Ke5wnvyf9aQmwO/B19HOM/fwr2n0CENUR+p/AT2XwPYKPGuh/OfVm0M6tkaMw9SPM34Pp30tJH1Fe9JUbvp+gn5vorzh4M3ieJF0Z/vOCdyLjPD74n9cehl6cv6pDZyDz23Dk2UQ/rEP515HXc8159BA+38yh/jPIo10uCv4uQdfz6JvAH7R/oP8a8FWQ8vtC59eS7rvgbzb04rlfQQ/O587f2+HP83RX9HuO9tlFf55Cuht62EF6I+1TEDwbyS9C+4yGnwp8P+/5Bf4+pf5OvpcA1qF+Jeh/y/pamXQX5B/LfD4aOAr4Ovy5vrgv2ak9MWSv1H45gna9R9rz0zvUSxiyv9YIQNRw5LzqPls7csj+ew881ajfnnn/LPPOfPpnGdp/JvLMAE4H7qe+9oPE8KUdQfuB+/cc0HX/7n6+CPyepH4L+FxI/gXyT1B/resH5RaBvwr52iMeOf5IlyF/lfTcn4bmO+fB4dQ/wXjyfPcJ6YTkJwZvDuofgd5nnj/Q57faGUg3orz2/huuV+ArRP86QbscB54E5kA/0e4H4DsR39MD7T9l4aso+tee3w36h9HDVmBh6LeG79OM32aMA+308TmPRrAzTomiPP33R8qVdT+FfInAr33sT/Srfewm/L0J3R+ROz/8lweOY37x/D+W9GbwbKC/RsB3m+/V4edL5O+Nns6YD38Z+P4zfPaB7nTwleS79pm4ykX730L+M5TXjl6LfO0JDdQT9NuApz7rxjq+r6Z+D/jvg3zz2R/tBR7mHNWW/lYyEsCZpF+En4boLTf4jniOg34c5MoI/R3IH4fyX0GnJ+WyQH815Xex/3xOOwTp7+mvJ5D/d+T6ET7fQz9x6VfXWIeSg2cA428Y7f0vengCzAf+kp4Pqec8Wp/6S8F7BlgI+f9nL4ffEaxbI4HuHx5HwQf0vkcPvzn/YNfs5z6I9Gr0V5h+nY78zej9MDBHxqf5itXOAf1M1EsK/f6U+5r6ucjfitx7IgFMC39foJ+m4JtPOfVfHbyx1HsWfO4/7pB+i3p9odsP/BfB3xJ9audMCv6ayLON/hKf/PXUX0z/T0O/nYf+58PPRO1OwG7w6zxxif3Y395v0F8WIO9B8uuC72vorES+Sei/IvyoT8f3evp7CmA912/aN2z/yYWetAOdhZ8zwJF83wEcz/rcCrnzcv7/FT13pV5613X601boLUefbeB/FPJ8i/z/oLeL7nO8fye/A3Q7AjsBr6KHx8h3hHbcjZ47UL8s9qcf4TsuUPtTX+/PkXch6V3wuxb+piPfTOh4/+l5JnfovNMK+ve063tvwvwwDD49F++LBPAnYDT8jQBvDvAlAU8x13fSndGb42MB/Xkk88oI0pNId6N/VKFeXuTdAr2qpAe6v6W+50/Po3Xor9+RPxp5j1G/DfULU6863yPIk4X+oJ3vUiSAy8jfQ70P+V4N2B76HRk/XdHDZ6zXI5BvB/gPo++PtO/DR37yl3m/hv4+hU710P1BT+lQ/7D9GT7jkD6GPKdIF4Vf7RBXaN8e4H8deuPAP430avC+D3/JKd9aOyb9Ow58j2E9fACezMxf+Rhfn1PuR/s7+LeAvwx8jyP/HOUbwvcE6M1BHxkYH6+RP5j+vZH0ZOSPgh/t+WmgN1k7Duk23mN7v4O8CcHzsfYc6Bclvyjp48AhjI9u5B+kvRwf6cjvDL4joXN1BsrHwt/XfL/PfJhdfPT/VfQ77ah57J+s35eZdzqQjqHcHOR1XphN2vlhBfquBWxNe1Ujfxry1oa/B+Q3dr1wf4/+9YPR/2UA+pkJnvbo4TX4/xP5XAdvuJ+j3Er2E3lJ1wJPsUgAvT/XTrULmBq+KnI+zI4+9vL9HfCcJN2c/NvQmaD/gnZe6K0kPRV9xHI+qEg7TyBdQ/s25T/Xrm5/IX2MtPYd7T3adzIx3pLRHvqT6EdSnflpC/UeIs9a+LtAf7wOvbbw+Rfy2G8K/Ef/8Vy0m/R18svCzxD4X4Wcu8C7H/6Le98O/UruT+FP+7H24lTQcX19y/kNPO6r40I/qffL4O2kvdvzFv29DP2oIuvHH9D/AvwtoK/fwN/03zHg1y9F+/R15LxIe3tub066t/5LoftI7yn1/2sYOo84T5Sl/9zQvwR83an/Ivqxf32rvQd6S6k/gP3MGdqxMuNsO/R3gF//uuvQLwI923cTejgHHdt5EfS6ktZelQ55YphXNpLfAD1Og3/H7072l/rB6P/yPfjaUO8J5Zu4D2V83wWmoN1TAn+jvnaMr21X9PMF+Doi1xja8Tj8lkRfz6KXNOxH01G+uP468D2DdG7yd8BXY+ptpB8uAd8R8jfzfRFwN/yWY1z2pfzy0P1YLubLaqQfUt/9mf6Fi7QHgFf/Qu8tSyFvK/L7ke4M/i3AP8C7xnsKxm80cA39rb/2VcbbXvYHk0l3Rz8lOP/+xL4xC/Ktp337sR4WZv1q7n0+9HN7vkOOU/QT++lF9FGbesnh7z78zUY/+cj3HPc2/fN32u0EfNwj/Sb89YJuIs+38OP9xDjSS/UTQH+NI9QH3xvwnYZyntdOw5/3CSn5nh35T6H38tTrRvoh/N/wvA4fs+FrE/naCz/Rr4X2z8j40F+0CPOo5/e11P8I/N773oWPqfD70HMUcveHnv6m+8C/D/mvwX8j9x3o3XtP7xG8/6yK/qoAKwMPUq4f9EaS7og+00HP89lQ5HhLPzH4m0F/mQ7cTf4r9JOS4L2mXy70pml/Yj5Yyfzg/rl9zqfr36P+evioS/5Oxl1K5NJfYxP4f4VeX75rpy6kHyz47oA/wvdV1B8FP5moHwd+v6F/vQb+xeA9Br496N/zYl6g/tCX6B+xzP/7oduP+vfQX2vwp/Renvy/KN8QubVP30dfQ+CvAPPKbvYlr9KfMmqvgW/tep9BR/ue+y/9Nt/U3oN8c9lfNWcdGEi5ktQ/EAlgCuR9T/sO46eX9gbwPWF++4b8g96fIPcb4Ncfsw7yeS5+lXHg/ewNxstV+ol23/fJb0m9/eCdr78K+L923+q+3Ptu6hdCn4Oh6z4nyvMV+T8wr2sf6Uv9ZOCNpr/tgY+e5D/UHgL/2ZEnD/ophn5qQHci+OLrb0T+AeMaPG/SX+KALxXtV5Zx/AB8f4XOu7MjAVwNfwmROz7wE/AeQM7GrC9NgUPh7x542sGnfurF3SdD7wHlM4O3F3r6Fvnrep8IzI4cGSg3Bf2Xp/8nIa3/w33W1XzQPRuAqPXw85j+PRQ9naHcyhef5lc5xmd4Wh7PUS/Dj3EGzs/HIgF8RPoq9Xobv4BcFWkPz3eOr/3Ikxs+noFP/TFu0l/1k/6Dcbgc/LHse3+jf/0KfEl7DPQvwGdN2nEa/N4i/Qh6C+FjrP6PzJ/xqJ+V+VP7sveKc6kXvl/8jvJXgLvA5370Cfwv0u8LuI76Y2mPfuAvAR+34L8W8tZjHqkL1N9iD/R+Bm8v+LhJ/njm37jgrU/9C7S3+6/80B+Nnq4Cx9K/j4NP+7Drj/6xtUP+sfrLNoO/XfC1gfGtHToB6ezQc53ZqH2B/MTgm8p6lI90S9p/AnLmB88F7Zl8176+CXm0r/9D/3M8hONPtEtm0f6AfKlyPs3fz57zoOv9eSbw56fceudf2v8N/VHA3476mZG/uecz6g9xfYkEcAZ0T+mHSv184Nd/wHgQ40NqaR8k/YL+jOCtg/zuVxKS3wU6o6nfh/F8Vr8OYH/wen723Ky/r+fnfLRfbuCbjC/vybV/Krd6aIh+XqA/30DuHJzHvL8eG/J70K9Z/4eu0KnvfET/yk+5md5TUm47/fiq52vwfkk/y0C9j9FPNOnBnteR43X7F/x7f5WX9WEp9Rcif7T68B5K/2b0e5r6p4BJ9b9l/ogBZnC9cv6kXf/VH49+eAf82jN6Uk57h3bQKaxb+gOWQv+V4VN/Of0B7Lf604X9LYoip/7T2p+cd95F3i3o7zHtk1K7M/UWk+/9+bvgdd72/nwA/XUgcBDwsvYx5m/9WN8nfZD8Rux/knquhp73Y+F7vzr6C5O/Hbzd0NtB+lFp8H/j/QjpGuhjsvcvyO05JJX2BeTUX/aC99nu8+HX++GqQO+JvR8uSP11QurHUn8A7e/5phT913njsP6O8H8V/lPRv0qAtzH8Gz+xGeh9axvSntdT6l+K/K2Qu5Dy6c9J+V/Bsw96b4Lvbe/jlYP0efjrif7zgWcF9VOgn7bsm90fNKNdWwMHGBdG/hDw1NS/jP70Evxpp9E+kwn6dbUHhfxFH9JvHgBzGUdEuXvGB+mPRz3j/VKAPzP6Hwafk5BP/7QNEb6jV+9LTsOvfrM5jP9FfzmY37wv680+/LJxBsit30sH+J1O+e/1n4Uv7QKJaf/O1Ffv5fSvgr5xI8aLROif1eD/MXor7/kCPmIp7/rkejSW8vpvNULf3pM2Jv0J/JVGnhTgHwb+nP/Rf9oleFqeJMZLRQL4CvXjIt+r6Ocx9DdTfizl88B3Cer9RFp9GN85RD8z8BjfuchzhvfB9Ofkrg+0/xjKdaGc9/Mvk6896XXmCeML3DcONu4G/mLJ134/h/xy8DkX/PvAvxd4DD2X0P+L9osB3zX0XJP6Zey34DVePy/jMxPfL6O/ZvqZUn8L9evAn/4LMcj7suc95vn0wGKU/0D/RfC4f5gN/aohf6AJ3n9BPwPnG8eP40Y7wmb95vTDp9wg8Htf5P3RZPTVnnI99BvQ3974RuSbDd41yD2G8snBr1/RVP2yjB90nab/ue9KDD73ZcbrGb/nfW8T5KwCvx9R/jnwXzF+kHqzPV9Qf7r+6s6TnlvBUw/8Eear1fSvK8Df4X+7/oLU10/R/ddR5ouk4HEdc/1aFvW0nOF4xXLQmwm/+qG9D/1L2kehv8A4S+hUIV+/gZ7Kp/8MfDlPL/UeivpnvMc1zkB/V+TzvDmReeE2aefpQvojsU/yHt/7++raq6CTADiUdpwOvS+pt4T+PxH+qlL/IvmlvPf0fEH+J5RP4L6HfP3qviZfv7oW9F/1epl840kuen9vvIP+w8hbzXgYxvso5NUeqP3P+boRdP/Qjk775mJ/kAD8/zCfFA2tDx+SzmwcEe17wPMw+F+g/Afg70T6Ucjeo33H+MsfQ/FFJeH/JvgraA8wHsb1ibR+vDHg0X/3O77rfx4efyX1S9DfhPL6T9kPWpBOr98J/Osf3wD59ZPXPz4P46sv82gD1u+k4DO+oDr3XMYZGF8wmvEzgXb6GGh82xPts/C9FT6czychbxb9IrUj0D7N4Ed/6y88PyDffOQbwzy4g/yfwZ8FeZvCz+/6GcDHQOb975h/y6LveOg7B/LE4XtS1qsc3s/D7xjyRyKH8aI14edQJIDtKaedrx/63Ui5Cuj5lPGD4NFOU5rvSZDf+B/jfowDagesDH9ZyS8M/WzocwHy67eUjLT+TNpnyrrfQ7539UelffYwv02iPz2kfAn0p5/qRcZvv5A9LY9+GOh9vfFLzKtFvAdhfn2sHQH+/ib/K/So/WGT/hGh+y3jUWtTb4njXLsR+vV+MBHf9ScYSroXfJwA3zjwXIR/7YfeX3mfpZz63yeBT/3vF7s+sT9xX3Kb8eb+JJfvG4B3HvwZf36OdE/j5mw/6Dg+u1N+JnKdpf3sL/Yf+1MP+BtG2jgy3wNwXpyifUn/XspfgM482rcJ+E+5/4X+C4y3d5H/JvK7n3e8OH4cT0ug1we9GO82ke8x4O+CfkvTT7uSLkf5iu6f4W8k5ZKSb/zBOf014CMaOqeYV1fQ730P5jjlXgVvK+27fM8Pf9/q/+h7WpEAFtE/V/9L9K5/m/Ea8UgX0S+c+ovB3z4AUauAA2gX/ccyG6+k/6DxV54Tab/WwKaeL9zfIe807abo7RT54XdTjCcthD5+gd42vusHtp3x+T39YxzQd0eMJ7kIX+8xb1w2Pgl93mL++pN0avjYSP82PrkD34/b/40/ha/5xvHA7yueW9j/7qP9s5L+FPy+x1UHvpcjn/d42utbwl8y4Cj9LemfGZh/0wMfep5lvPQO7XPd31aDz5bIqV/sJeOlSRsvvkD/DP170XsW2us246Ow4xu89psaxgUBw/GTxqHmRL/t0etZ43SAt72PAK9xEelo5+7UL2B8FPuA0uj/uvHLnle85/TcrH2Z9awb88IZ6l/WX8T3eUivQy7tByVpj8vMA/rn6a9XnvZ7DZiKcu5bw/6kl2i/Wtpb9Bvyfg/6R93/or871PfdC+2RzfVXD93P/UZ9/abtF/pTz6d99cvTT+8m8uqfV1V/MdcB+2EkgOeBBZkPdsBPauOH9bvyXphxtJLyrufuo13n3T8f09+RfO+nj4Hf8RzteEHOFeAfSf5z2l88Xxk/qf2Eeh94Hwj+cQGI6g9cSf5t/bSBncCXDD5dh/UrMW67tPFplH+Xfr2Q8ru1gzM/akcYC17vdbbA30j1ol8T+jtLuaaON/A34HsD2td3IbKiL+Mjm0Df+CLjihKif+OLUpH/NnxMQK6ljl/tICG/CN8nmkX/mw8/7RifHyPfefqbcdub6T/6P9i/RrBO2c/sX78HIKoKMC98jYO+66/ntHOh9df9ovvI9ZEAup+8QLsap9WKennIv8l+xnE+z3dP4N/74rLgTcL+vTjye/6vDt++s/MZ8hlfMpP20Q6RHHwDwT8Legfgo5LnZ8/D4P0BOXy/4AD5xkkYF2E8o3EP/4t3oHwv8vWbNw7Rd7S0/4zAnrqEecb3RIuAtzLz1XDgYvSTD/kO6R8MnQG+HwH+7OSPovw3yDGU/puP/edA6k2jvRKi/0bGv1D/IPzHR//6E6bUP83zD/QPMf8P9P0T38kkX3uWdLRz/aB/gfM39O8D93ofCz/60xRGnqOUe8/4c/Ld7/xlfAft6b2m7/YNhD/j9Y3fH039DuR30J8fPOP0ywT6HkhG7bjIp/3/c9adL4HFoZ8P+fWL1a9rMvWf930J5z/3Qe5jjO9m/5ARPMuZb3w/LCHzySrmkSOsf330t2f/mZD+d4209nTvl/R3Nl7N+JtfjR+wPzs+oZ8Gfjp5bwH+Lej3uu/JsX95SLn51Nfftguwa8j/1veHfK9wPPz0JP82crUwvpH0Ad9vo/8MBUbBr/vPo57HjQvh+1b0/wL6vYd+FzJ+81Pe/V1e/e6MRwRPUfhvAt97kb8l+vV9Af0JPyC/IPy/A3+xlDuEnL4/l4L5pzzr8HzqdzJ+OWQfMg5S+90s1qudrvuk3d99oB+29iD6+STnP+TS7zcWeq8gn++y1AVPIsqXg/8Xofuy/jyUH0n91rSn/q7zSZ+Hvuf27J53Q+f3U+ilAPPySdJjyD+of2ckgPqJrkI/xodrh3/TdQ+YEX70X5tBf/d9J/2j+wH7A9VXW/Bfof4t9LON+gVI34f+PMrp/7iQ9nqefncF6D6tEPhdF10nfT/B9058/+R/76Gg32u09yXGwQzPGfBfyHsr/Xb0X9HeqX0GvboPXWf8OPpIAp1t8LUF+Rzv2pMGGh8kffiuQ35H6Hn/t4j2/gn8bwPPef/pe0fg+y60/0/OuPfdGO+5vN+KZl7LAjxkHIDvaED/EOfCcugxC/x9w7y0Gfy+R+39uu8SGYfpe0Xe4+RCnr8o9yLpGpEAavduSHnvM72/LIX8EfJdH40/HAGev+D3d+TrQn33K9oF3MckIT8d/VP/v3i+k0P+SviNQi//Mp+NJV//G/fjqUL+N58izyD95uE3AeXD70v4jpf3++noTxvgL5vrcCh+wbgF34k2fiEH/FaiH1cE+v5W7tD9kfHFFb1/ZV5aClwCfJbyxr8aP30J+sZP+35BW+flkL/ln9rnSJ+F/hLku8n4beV73c6H6Pe//F69T9Mf7EPw+n53PPdz2k+8r0COovDv/WEXvj/0XRfvD5lPJ9N+P9Cfbng+830V8K8wPk47hPE7rk+eV6gffu8z/D7xfOprN9KOpP1IfyLfY/O93Rj925H/HnxOd7+pfxb9w/cHZtJ/BiG/89kI8PrOmP5/37q+QP9553X9W5HP/02IAc/kSAB9/9p9tPtn35tqDv0pyF0vpL+4nlep9zz5tcH/wP0c8BFwFvnut0rbnvoTsT4sBK/+jGXgfyDtc4VzVxtga+Bm45Pot2uMJ0TP+oMuY77tw/wzjvreu3rfflG/KL7vhB/9i35xXjVODnkitPdO11X40u/T+yTvl/6iv3u/VIzx/RN69j25O+BviXwnGf/NSfeKBND7GP1xrntfA/9poaPf0WnS+iG7/3a99R1Q99+V9A/wniYUL5mb9GjkHK3/EO2xD36nov8pwFnIlwe6eyhvnLz3P1eZD95XD65D9A/9T79yvw5fr9K/KoTOa/GNy/AeQr9n9yPgM76lFPLpz+v7dKUjAZyjf47vsYA3BfQHwf9g4EBgP+9xQ+dfz8Oef43vecdzBfK8rb1Efw7oagcyvryA7yOQ7zzi/LELerHMM+H32xpoH6Se71dWDL0/5ntjvj9WBP5dDwdHAtje+xHatxXyGQc5Er7ror9c6KsSdM/B7yz90xg3vltqnKTxkep/G+P+X+ZD9b9e/zzfgdb+A79R7C/+Qj8rgfqv+S6577b4Do7vt2RGPz/Qz7yPjdZf2fgB99XU/9b7ZNhYRL0jpL1/fxb8TUk3Jf0z/PXwfVDqD/CcTHnft6qEXakH88+7kQBWZLxGPBcgxwbbGX61T8cFZqEdb0J3Tag/2Y96QH8a88cXwHHwP8r4cPj2HSzfv8pGu/kebGL9XEh/zX7Ud430U//V/Rv86zenH53+cxORx/1AXfhPFglgUebzJ4yzs/Dr+H3H/1MBdgAan7WX9k9Cepn+E/Djvr8FeG+Sdv//iPqum2PA4/p5Dn1WBM6B3xLwN8X/FSGdjnXG9yX0Z12U42l+87g/Nz4GvnuH4l/O0n98ry6WtP8/tNL7GuA2xmdp8puG/M4n0t7FSN8zXh14FzjY87PvG1He/y/Ip38p+Z7rqgC/hN8e1NNf3riBe7TP+9TXb2EK37WP6n9fx3WY7yuA05BH+7X+kr7vXN/1Gn5878L7U+/l07rv1w+K8RM+l4TfQ1pNe0RzrjjPeLTdt2lvRS/6C+gn4HnGd45mMw5836g642+A7yPQzt9Tfw94fZdO++s++Pf+cIDvD0Bff+C+9N9MzO/heMDWAYhKaNwX371nSUK96cAj1K9Kuat8vwYsz/7Wfcgfxn87TuDX90i7GP/LuL3A+tFb/zPq2T6fQN/1cTD60T9ssvf83nP57g98tNBu4P0A/DYEFqdf6T8fE7qf8r7K+ynf899Cu5Ui7bv/zyKv7xeE49n8P7I5+qsaX61/u/Gl1M/P/LQyQnnSdemfztNZfV8O+m9T3/chHkD/MfoJnx9/Q0/uh8vDl/vi877Hxnf3L7aT7XOCfnEM/Q2jvdcZj03+JKD/JzUk9H5PE8/N8JsReu4HSiB3Xdo5NfJlo77+C+nAo//Cl/qv+H4G+vwD+WrTnnWAzaC/Fn1VY/ympH5G0o5f42cXU78Y+LUjhO9fR4XuYU/Cv36Nxj83NL6K+s6zrjPOr95LpaKe79K7/nj+PgT0/O17Tb73/TnQ98Dj+P4Z7dUQmIR+qF+p575KwDV87w8/xmd6/q/Kd8//Q9GncSrDwvFOjFv/H1D/VP1V+zNeo+l/yWmH37Vj6heBPn1fyvv/zsblgCcL9Iyj9R1V7y+8z/D+wjivVkDjwRqSHxOaT2LB6/sH6vM1/aRoV+MXfW8wte8jgN/3B/WD8v/k3Ie5/7rl+AGP89Cr1J/J+puC/EHu90hPR68D0av//5cc/Ged74G7qfc9+bfpNzHGNTmu0P948vWb6hOK3zpCf7jDuDpMWnvWf51b2qNv97P+H1RTxtMz8Bd+L8n3QPy/ky+MmyLt/xvUMb4N+6p+wuWini6/jvZtSbv4/13G4XRlfOi3EPaH1f9ppn5p3gtQXn9u35/Vr7ux50vo+f5FDeA29hf606k3/ex8f6Q2+t2q/Uv7nucB9tX/AtfSTufAmxZ50lP+OrA0+CuSPzTkT9sGOY3v8f9o/D+4LtQPx/t7DngZ+Y9R/752XeT3vZGstIv3ilmc/3wfgn45jnGg3d/4ft9XOh16Z8n424H07zXQ9Z2vpKH7mfqh86/3M+H3AH1X0f8nKE95///vLOU7ad/x3UT4qg2frof6Y+qfqb/mSvSlv5r+EL4v6P9TXvZ+23gV39/w/Vj4i4Z/3+M9RH3vn2NYn7yH9v7Z9/GNrynneg+9//rfoXvQf8u4BfBu9/9BqO+40R8o/D6d/1tmXL//Z2Z8f0341I5Xj3z/5ysben9Reyf8v0Z+E6DvqRt/7X1QRerp71DKdxrgtw7y1QIOop8ug25a5l3veaahZ+ffJvrbQHci/PXXHkC+9wL6m+o/7fzj/0/4P3P+f4DvQZyLBNB9ivs//3/TuLaLof/j9L1wx7/zgeN/LfRnkD9FeyZ8nKN/PfB/i0Pncf1js8FvbvJ9n7c7fI2Cn2Hej6m/0PtDKaD/EvyF/z81OvXT8s/1fpV2O8Z61IR841X1V/W9IuOtarovor/6Tmh66FfT/1R/avgzPky7fnf7r++lUX82fPnO1Rz3WdTPgN79v9F84PkZ/Wh3810A3+fz/yvGk9ZPPeyffpH+9ivlPSd0ht4E8heTb3zJOeA48hOQn4l6h8hPgzx9Q/8fO4ly+ovqR/oj8ulPqv3Td/eMz/CdgX/8f7+QH8Fk6IfvE71ndD/n/9sYf3JKOwXlnE/aQfcM5VzvSno/DZ4G/t8U/OVD7l3g8/0i92npsYveYZ/TBNiQ+r5f6LuF2gt9v7Ac/b8mfLyrn4rnL2AdoP+L4ft2DaF/F5gU/7ltnGPaGbcE3UPoow94uugfwveU3pfAn/Om86Xzqe/fP/K+GTiE+eEg4/MN9j392fccJ20c2Rvaq2gP36U9Tv348DUW/rX/fEa+8bubqGfcboTx6f+Xn6XeNPTWl/w4tHcF8G1kfh3r/k7/a88Rvs9F+XXoORfyFWb+8p6hbej/99KAp7jxlJ474cN3tvS3GM73n+kf7ss+gr9l+p0bjwG/VeDP/x2PJT+h52vPV96fozfvITKTfz4UL6dd6ID+5ei3UiSA2jPf0n+D8dAW/P5f6gv6A6AX/cjfcnwj5/8B0IOUFnicdZ119JbF1rB/lHR3PzRICUh3lwIiIQICItIgSEm3cEAFREoJaQmlO+UAIt0lKdIKCAIi8a713dflWtzfOs8/e809M7tmT+3ZM0+HxFH/73c9TgC7JwrgH1kDWDV1ACvkCGDXTAH8OmcAY8UMYPn0AXw9QwBbUr9S8gDW43vDZAHsmC2Al9MGcFq6AO4G/ybo3SW9OXsAz1P+Nul71MtLumbGANYiXSluACdQrir5e7MEsHCEevBThXJ3qb8Ber3gYxT5J6n3AP3s4XtS6r0BXIC8P0QLYDH0VYT699B3/lgBPJIkgB2gVz1NAPtkDuAa9PgP/FYjfzb6/wR+R6L/qfDVED7nIn8O2q8M35sHIKoGdNrBf1XsIoK+NsRHvqwv4/0OfktkeBn/JsrXRN7NpFPRvi/gdxH1RyLHBfKPYJ+pEwZwGvrMA39Xke816s1FHxmgvyUlfAGnpwpgBfi/Qr0uyN2F+p8jbw/4GkH5RNEDeI30ptgB3Et97bAd/BegfUcj90jg0UgAc0P/Oenn6HMs+E8hdw/s4liCAP4HuRsFIOqR7U66DfwUAH852qUt5YqCPw30DiH3CeSNi33Nh05svuej3Hj4zQ++fMAX0FmC/rSrGNid9qad5Sa9E3x1qL8DPa5Gf2uBNdFHPPhrAD+vgu9t6K6nfk7a5yD8/8J4sJv2uQ3fr6KnWcj7C/i7wl9f6l+kfDLotad/lMdOJ0D/ffRbgvqvwecF8LwJf03ANxd8can/C/mJGT8HMT4UThHAx/CXEbwH0dvf4BuD/fcj/zHy/Un+GvK7oI/x8L8D/ZaNwA/0t9DvZqDPStC/j3yp4Pt12vky8leDrxnIXRt+PqF8UvJzIn8G6kdon6fQOwSczDh6mHQh7GImsDR44kG/AnJfhM8C0J0F/nHQXwndGcCryPd70gA2o14b6D6h/iz0cg876E3/fI/2m4DcpyIBtN8WBt+P4L8Dn2Ph51Pwf0/9QfBTnfyCtN9k5FpO/eHg740cC8jfxPdj6H8s+K5SLiH8FAHPVfhvib0kJn9lSD+/gn8h+LfC73fo/yb0LtMur5GfgvotAhCVlnb9g/S8dC/Llzvjy/K1iQTwZ/QRi/xe8BkH+ufIPwu9h9SfinydoPcX8Gv4vW6/or9VgV5F0jOhMw7ofLId/DlpnzzMN0eYf/oBK8PPeux2HXAx5c+hrxOUz8X368De6GUgfLajfA/ot4Kf6Mw3MYHD6Oc/UK4//f0hekqJPacG33Hs4UfXG6SLI19q5qXZ6D8j+GOQXwj+ZkLPdVhJ9HaA8acX/HaH7gXSy8hfBbwMv5OgNxT875D+yXUQeJKjp1V8b0u5v8Afk+83+d6ddFHXW7RLQvQylv69DX0lQ57SyBMFHtfLJxgXkjB+Hyd9nvIr0FcEOjP4fhv+0kPX9u1FO3anPS4g/xzk/C/8vEM/u429JEauAqSTQece69Eo+EsD/ry0323w76J+U/D/Cj8f8D0H9MrTPguo/y7rpeHYSSPoHYJ+T8aXL8G3knFgHP3TeTMxdM+j99jIr32F1/faVyboRYDP0fM78Bebeo+olwf8C9H/ZfjZAmwOjILfVug9ZSSAvTK/zP9J0gPJ/xg6H8J/dux6nv2M+eUo/CdAP0mR8zT8xgRPG+p1BB6hXDP47wq7R/keA9gAvqphz3OROz16OkF+f+wiPfPUd9B/hfaOgr+O1I8gp/NVL+2O8hWwvxjw1wv7/xq592N/ycBTBbs5BJ4KpGuDvyn9w3nVefay6wf0NJrviSj3I/otESOA2YGTsdf15P9M+QHUXxmAqC60bzT0sph+HZ10Puq7P1mCfvZjL/PgvwTtUR383ShXB/4fo59cwHKsxxbRPpXRWybyHYfXA3OBrzz6Xk97ub4fTzoO/A4HbzTKn4DfKPT/l/xRfyPtsZV22/pKAC85X4N/KfXbg+8I8n3AeDEaWBP8T9DvDebbJ+ipC/J/DL6N4P8v9A6AfzzyHIxHPdrldepPwR47ob86+gVor7nIvwQ6k8AXCz3vYvwoAD31op7UT1b4SxgJYErw7CX/LP0rEXjP2M7kv4PcU6n/H+hsBs8C7K4i/cB1fCvKrYKtRsjXlPQ25OuIvHfQx0TgGfR/HP7LQ+8CeFZSfyz0fyI/M/hqwP9z2m+262zShZBnAvpPCJ472NMj6BdF/oLYZUP4Kwb9WPD3J3ofQfot7GsU9X6ifDPwfw9/X8FXUvsLeOYgzzfYz3TyM8Gv66sZ0JtOvXzgGw6fPzO+DoRuY+z8fCSAE7HHduB/Bzzxyb9K/cvkJwJ/dvL1V+i/0J8RD/6TwX859FsB6P6lAPzv0P5Jd0M/FZgPHsL3Mtr3C/In0O+PIa/6XIV+9iN3CuRIDXxKfmPqxXbfxvwQC/5yY89/I8dO7HwO9Q7B3+/M628jx8chfejP6Up/6wD/Kei/+bG35PqhoH8Yfk8BxwPjUL46411e/THQ7ez6jPXC50D9ddfgsxr6dn01hO/vw8cN9HcNeB2YHfxLXP8jx030fw/9lkQ/ecH/A3psz/iVAvqpqN+Zcj2hP5j2/Rr5BpFOHQlgc+wpFnKPgf9XSG+Hv5rg/Rm8i21/8L1JuyRBny+gd9p64Kuhf4a0+pmEHOpnGvgd92bBh+PeVNr3C9ZfReDjXfiYQftmQy/54PsL7Ggp+psO3o3g3Uy5Y7TPRPBtht+RIT/VavRXDbnWki4FvpaMN71o13joYxP0p5H/DbAB81yZSAC7wX826heBTmXyXT/qd79FedePfdl/3iS/lPtn+B9K/7yPXCngqyowCv24PrxNvS/172OfPwC/I/8k+isAvWj6M8H3N/zHZlxKDv6RjAPl4Fe/wVeU178/hPY9jN0cJH+9eKCfCL0mAV4AjgO/9pgSvWmnA6j/Ifi0n0noW/spST393jeBi9HDKvhLQH37+2zSy6i/l3Qv+HkdPvbAb4Rx61X0URr+toI/Gum60J+IfqoxX19AjpnMVyXI3099/So94S+z+3PsPwbyvE3/dPxpwXj0TDyRAHYGv+PpA+yxQGh+cn/4OvU8T3B/2Jn0E+j3RQ7710rsLjVyj8Oe51I/B/uCrMDT8ON+4rHnGdRvAN6H1J8J/qHUm0G6H/Lpt//YeScA//rvc7mehe90fJ+IPJehq18u7K8rrN+Tcuego/+/FePfYe2e9tlA/bnU/wX8t+A7P/23diSATcD3jf4Y5B8JPyPAf47yx8nfR38dxrg3GnuoDp/7sL9E+r3Bc4L6nzM+ncf+ErJ+aAy/n+g/187Bc4n6C9HLb+CtTrk2yN+HdDzgu+BNj/xbSN+mXfahP9c3Sel3rtu+Zf2yWv8yck+m3APo6n+ogFyH3D9TPmckgB+7fiM/HfLEBE8T+FnA91Wew0K/Mvz/TLuVky75K9FfS/DoFxiH/Buxf88HPS/0fHCB/hXoNoNOSvidzvjgOXI27NHz476Ud95z/CsE39Gh9wqwPvYzDv7PQT8r9Puhr43YcWnolwGWBR71XBn5isBfYeA2/ef4C7K5jkGuA+Rvgu8F8Os+IRnj3zjk+QP+9qHfJfDn+c7s0DmP5zsDwFcC/Aspt97zHcazL4Dpwe/6IBv2GB/+EwBjQMf5xXNK5xnPJ5uQ/wJYCP3uVH+ku1Cvtecc0H+L+ek4ej3MeLDS+Qg8A6n/gfMl9paSdfUG5GrB93bI35/6bckvAf0N0B8cXh/Bbwboj6BfxmSd8Zn7TP2nAYj6jXrpXb/TP5aRPgVMSTnnw9Hgy+86hfHsAfLWQy/FyW9GOiP4L4HvOO1emnqr4H8o8tVHvgXAVJEAzqe9FwKjk+9+rgP8jQL2gN5w7PNP8Fci/6jjCfquwHre8+MlwD7UH0r5eJTvHYCotz1/YLx2HP8A/saR/4v7EuS5D74htP8z7H4AduV5i+PLM/gPxwG4fw77O9XPCPSbkvmmE3Tvki5JeeftPKSdz/VfbEauKsh5EljG9Sv2cIBySUn/Dd5XjD+A/9iks4A/PC59BZ/F4F872AZsgryZqb8De0vA+qcx490A9LoIfhqAdzJ81MI+30Xe951X4aM+7ROd703Qt+fJs0ivYd6pyfju+jyL/i/qp4D+dvIX047hc4NWtP8m8tWPemmFvOqnLvUuuW+B3mL9z+D3nMRzkWjIV4/vdYFb0M970Cus3xy9JHYcQf/NqVeRcl3ILx4JYFfaoQ56+gX5akDnPvZ02PM37OgOfGo3CZAvbD87Kf8WdCuGzkM9P+1D2vPTGsjfkHp1gJ8gx1/Yx03jiah/i/Rw6GfUrwGf7pPKo7+O5I8Cr+0TH3myIafruWiuT8H/EXrZ6PkV+RkZn6bCT1bmyfboOQb5rrdch7nu0n/g+D7E+ZH8waH4pR76KUm/i309DUDUb8BaQPeRmVxPoo/FnmOh30no5XPjXyjv+r4kfJ+F7plIABPAX1/99ZTz/N798k7G97V8Xw3e0tDfSjnP+9d7vkp+HOzN+WEB8A3w7GQ8Xc04k4b0M8oVMH4C/srq56f+t+j1DO2dH330RL5atKf9owbpHdRbhj2Uod4W44XA38j9DfI5b2ZFvl/Id/3/A3AK/CRkvEkMHM769Z7tz7g3NxLASrFeztfvuNw4HPD/iB1sQL+zwH+F+v91H8v6xjiYUaQLg7+1fhvnRcvRv7Mw3tyCb8+z07geg6+12g/fP0J+zysbUG6pflH0+xXyNTX+jPHob/DUDdnFU/B9o/8evKehPx88/cjfw/fm+gWoP8v9I/VPwUdG6C7CfipS/iz1UwCb0v6TqbcYux+KXl2f9mVd2Zt84zEeg78y33fIB3x1pn4V6DuvjnH+QL5UpHOR3k+5jJ6fG3cQiqMyfio/+zHPh/OR3gMfScC/LBLAba7vkH8ffH9J+Urg+SA0vuiHc5xZTv03yZ8B/k+A+v9uwa9+5dLYn/7lY+Rv4Ht17Ccb8sekfYyvNd42Jfy1D63XisF/avJ/Qi7PpbqAz/OqGo6vtOMi6Hak/S4wfg5Cr6OB7cHbm/7fC9gO/PXgpwzft1P+DeqvJd94sQ7wYzyZ8WOVkC81fLmf2Ir+XW+e4fsD5v9TlC+KXksb/026GnQcj2M6bwIdn8+i7yQR5ACP68+NjF9T6BfG2/bSP0/9ldQvRH3nn5zkZ0E/S5AjifE6pNWT8Qv6qZeRHwu82/Q/uP9j/6lfRT+L/hX9Fvor9GfUNb6e752g+xHtZ3z6c+2HdnoOvl3gz8D3zNCvQv5k8K2C3hTlJj0Cuicp/x/s41vyZxjfSrn46NP48jmkN9O+rqMmYI+tod+T9roHf8lZf2w3voD8A9Q7CryE/fRHvhPgcx9fzPgO7KIcfFQEXqCc69aOyoO8X6K/u9jrH8A7wFLuyx0/oNOL9IfgM+6rkfHh0DP+67MARL2Ofh4gR3vyFzJvxQeWpb8dRO8j+W4cRxPy49F/V6PPcZQ3zmKN57voMQN0vwffdvJLh/xd25GvNfWM/6jq+gh530R//aFblvI5KH8D/RivsJZ63cGTSf8r643ZyPEP9LdRfwHtoX/2OfYyF3rGi7ck/SrtkBL8p+lPI8HTVr8040d87H2P/nv4qwU+4wpueA9Afwt49rI/MO5uD2nj775Bvx+BZxrp7yMB1D8bHj8SGJ9AfnPWbz+Btzn8D0FvPYBD6T8X073M/2LoGS9xDD3p10/reYL7ZOxrDvrprz/H+FbwrWL+io9cq0kfBH8P1oXGt420PvldQn5Jz2H0Ty6i332LXVxEv4Wpvwj9pDKOFXrp0NM97PEMeIvxvS743bc3RQ9Z4M94796kp8Cf6y/9dzPR527yPzcOH/xn4GsYdGMgh/c/WoE/yvN2zwdp/07kj+P7d8izxvUU36PBRy3qRdG/WyNfZeOGoGP8WTXsxXHDcUR/wCT0bXyM8R3ed6kNf2Ndv+sfDsVHGRc1DDyFtCfyV5DvOc4q6C8iHQ+8+pMLwX/4vOMy5dx/P2C995jvRz2/xX7GM566bxjH+Fgb/uqBfyB8P6LcUOh5/8l7VpMp532oD7Hv+NCNB/yZ+r2o35P6H8BXb9qvPvSik38hEsDK1P9a/6zrBfB1+x/xzW1pv6rI97txH3yfh37P6S9hvae/VX+252cX0Vdy+FoMv+3Rf23G33j6CZQP+3BdshE+V1M/EfmXqP8P9OegB+PxElP+Gd8/g78x3tdD/x0p/67xvfDnvDoffe9FnrXQD/vT9LMNQd70zF/6tQu7n/D+DvqNDv+/AY0PuQS+TxknjnvO7fkU9Qfw3Tg94/P0Axmnct11QCi+QP+Z8T3TwZOd/p8N+Bf1P1VfUdBHXuMxjH/9jXQc78+A3/3DB8bvY/fLgcXB/xB/cm9gJfzMZzzPxD7KIP9SYHzjb6A/HX0mpj29P1WZ/Hbw7zlZQvCkpf+Xwc4bMV5coZzrn+bwmwu+dkKvbMj/tIV89zdvYT8lKJcEfvrCf3rSObAL7eRL75GSX9v7DfCTy/sXnrcgj3EmabQv/fkR8j0PpX1eo1/uZf72fmk+yldj/DfetoXrHeSrZP9D/iGU+xB+ynoeT7kb6Ds5/Hueugh6KeHvKPzXQN4d5OfynEH/P+Wzka9/ahL4E2HXHaiXmPQs9BwT/mYDw/FO7v89vzmGfHc8/3TdHNq3jof/KZ7rwp/3mt6hfT8l3/iQh/SPaPqPoD8U/Xqv6yHl03mfh/XfMuAd/Yz0K+NSHxnfTn3Po3Ogz5Z8f4Icu+CnNnpLhL38Bv91vf9F+9q/PH9upr/H9TTl24C/Nf1N/1k++qHxrzm8lwBez1mvoN/Y0F1LOePo7KcxkK8S7dsDvHvRb0XK1wfOhL+u3q/wPNh9I+UWUf//u/9APePbDtOvlqLXSoz38+AjHJ80i/HyU/0HyPcedG+Afwf5L2gf41hWGr9uXK3nkNCrAL6ntN+HjE9tge2AZcnPA74E4D8LnlbkL8f/sRdYy3L6w5AvOunGxmHR/s8ZT/IZp2mcKvorCL/fk/89+KZ6XuL+Cv1fB18d+PvE9jX+EnzeP5jL+NPUe7fM53s8v4Gu58oLjRMiP5P7cfKfYM+lwN8He6qJ/La39xOnUV6/hOdt+isi1G9I/nVgXfLjk65p/KX9HHnc964Cuh92H3wPek+NfwDfAeRbj77yeL4NP1+TThE6n94RgH/Pp33X4BR238f4TuBj8DVBX54r6f+VXhbwlYW/JIwvafjuvNUUfq6Cvxj8Z8IOrvF9CvgH0f6uUwaQzhyKq3H94HpiGPqpZ7w5+WeZ58+jX/dnD+AvK/JkoP31CxrP+Zn7VvLrUd5+Zz+0/xVnvL/F97WMB8ZLrqP+Y+97er8S/krC11b42EJ5/SiNvTfHuD+Kcn8YH0i+/SY+44f9pxH78Ybuy+mfB0LxCxWNEwnFM1Rm3rmPXnx/YrztR/sa57sAvo3vvcX3s8g9E7yHkF+/8DfA676jYH91PCW/K/kdsL8mzFcZkCcO9lcjEsAz1J8P3THo9yPyt1LeuBfjYIx/cd85wvgO6unfXU6/ugr9BsZLGB/m/hJ81/UnUH8O48JK9L6Z+vobPK/1HHce+vY89xD46oD/V9LlQufthdBnX/T3D+n8rofQQ17ofA//Q5HrNb6PQB79Nx2wm1WkO2qn8Pcj9pkUOj+RvuR4R/tNdZ1CuTzwf5FxLQXl0sGn/XAl9DxHkv4q7HM+/Br/WFz/PXaqP1E/nf45/Y2vkd6Dfot4bgAcrf+P/tUT6H3qGvA7znu7rIOmRAKo31a70s60r3ukf3U/jTw/kp+H8S43cBj86qfYD937xsljD4eR5xl6ng2/9pec6G8O7bXTfSv93/VtevSdjPYerZ1hP7nYT7o+Ws36tyv4+8Gn85L7l8Hat+fTlAu/j/Ia410+oPdXViCf9/G8n7cTPZUFX0XXA8ij3/ZX7xtCfzXlK5Hv/dKRrLvOGv9AedvH9wDOgN/3AurBf0HaMzb4bhmPTjqC/YyiH+wLxWEbbzgceqs8n0a/+q1bAH9jfCniOX8Aoqb77g189WD89j2f+N7PC/nJspI+QL734WeRbz9dQ3s8Jn8h9tGZeWsf9LqQ/hv+PffwfudF7dZ4fvA9gL73kNuhv8PoLaH+S/T5XiSAMZH7KfVWkv8f8j9lXDY+qT725PnaBPr7ROdX7GwQ/OcBfyzqnw/Fw3xMvvH5DTyvdP3L/Ou9z+/Jb0Q7hf1K38FXdeRvj70MQQ+7gX2g57pstfMH+lwKHu/rPURu92ne50tOec8vHMeOIN8N6ITXx7Vo/0yMJ84Le4DxKX+S/Cr4527Cz2Hw74Ge92U+139Kehf2voR2XAS8iL5Og999S+FML+OPUC4tciaFXnL0/6dxqe7nKTctZM/adznaUfv23r337bvoh/f+JfoO+y9SgM/3CHy/xvcKZlF+M+vqFtBpSro27TURvT7Cfosj93Xo12S8zI8eCwDX0Y5T6S+HmNc8P5ipPxB+jLPM6D1e8r2f6HrsiOdl8NEN+lfgtwX4KmE/U42fof2mkL5L/THgz+m+lv7WRz8i6VqeJ8H/GN/H8f09+FsD3n7ox3sh4fO569Tvzffi+uuRR/9U+F2l34C+u7QC/RpPZbxVHc/vkc977kWMKwV/fej5LtWbofgU/Vq+X6S/Sz+X8Rbzoe+7ODupr39d/+kN8ER3fUX9P8n3HZjN2hf0fSfiHOm9EeRlPj9BuxbB/rJQvyzj7QLseAP6932WOb63YHwFdhgX+znpfa2QHEnBH47v8n54efrfFOjptyuJHPrzItRf4fsw6GVv6P2TS96zY7x/FIE+9byfHNNxGpgKO1ntvQr0lcT7WdQ3rrUAeD1/dD2sHy0u/C+H//HotRjweui9oqWMx8YHPKM9jJ/prN/ZuGPS3dGn9z08Tz4Cn97/mAL/d/gePr92/7UC2CC0H+sd8tv6ftVy6vv+xMe0ZwLkSUr79GC9+jv1q7Ke9X0S3yfzXbIhoffJDkLPdeUE5OkXio83Hj68vvB9snX02y7Q3Q2/PV0HGver/RkfifwnoXMO+q53W9EexsWG3zfwfDI3/Pkeoe/PGQf+lPK+g/Qt+l0M3+nov0tI3/U9Bc9jqO844Psw+t/cD7bEXveB33VrCeRcQn3XsVOg14B0ato1M7At9uK6w/2q55jh84TWfC+qf5b2eTW0D3P/dQ36R5Df+1V/+J4G5avRb/ZDfwXtUND1H+kd1K8L/0mpX5z5ryhwIny3oL+2pb+1Iu1+7S/vQ8HvBfT5CvrOgH04rn2D/hNRfgr2mha+Lxs/5vwfOn/tS3t7DhuT+kXBF1t9huL/ZvveGuVWI/9blF/N+mU3fAxDfscb/Uv6m/Qv7aR93oUv7z/bviv47n0P/ejZ4M991FHk2WU8M/WNx3Kf7zrZe7wN4HsRfCwE1mf8WEl77fecgHQd2uEZdvEV+F3/rQH/DuaDT6jfzTgA5PqB9Wlp7O82eGcir+uPhNBxHeL6w/ODF8Ao8HmO0Ab5vQ/87/oQfk/6Lpnn2sh3xfcX9F+RfwQ8vm/ZkO/6SdpQvjH8z4Qt77mF77d5XtAf6DlCZuMt0Kf31bzHdg/9+p7rPPcf0DW+twH9YQDt2oi095e8H+g7QL7/cxE9b6K9ZsOP7+xV932qUPz2QNqpK/z4/pfxtCfIX0997/d4P6in62/vrxiPgx0YR3cI/L2ZL3sBfQ/D/Ut3+uNEvj9E/r+Nx6P/TvUdL+TzPs0b8OU66030kBP6xk0V8v487f++70tgl4eAc7HPauBZCH7vRXuOvZv2y+i9L9plWij+6T566QO/71Fe/XhvdKH+bfTg/VHfn92CfAvgy3do34bvhr4LiJ06D+WlvPE/rcDXiPr6jfQjNfY9qND+yn3VV56TIv9W7OMaevaenPfjvJdeFb16P/0I9Q+7fqVeFe/HUK6c8UTgO0X5QdQ/z3hQknHyOHq1/51nfTYC+KX+RfBdAb/vrCajnf8hHfaP6xd/5vtV6K0R8v9Cf7C9y7veQd9ZjXOj/n/VH3TWwE915M9AvWr6g2jnjtQ/Dz7v63iPx33oQPd1pD3H3u/7Gugj7Pev5/0Cvq/iexvkGk/9XN5/oJz3BL2feJd+35BxsRbtZFyI668RjGOuw1x/uV5ZB9/Lwe/6xXf1fE+vEv3nff2nfJ8HbA6f08Fv+x8A709Az+98/9h35HPDxxLq+/7aAL43p9w/xgeRv4D27RSK37DfFIROudD90hPel3R8QQ73adPQaxzm5+n6N6BTEP24v8mnf8v7leA3/sNz0D3Ik1a/AXz6DrHvD6dD3rzUc54q7foqAFFLKZco9H7veOBo+z3wMPJNJv8k9Q8hRzf48N143/f1vV/f9zXOuKvxO9if8fdHsH/PIcaSth94Lpo+dC7q+n8R+jGe41v0dA3+fZfWe3vh92m9T/aCcuH9s/edPA+qETo/P6DfkfKfov/HyJeZ/pcJuBDo+f5S6if3voz3z0kXCsW/zjNOyP0C9fVH+A7eY9K+V9Oafq6/1PdsvJ9nPFHEeDvaswHrgzzof6z3BOxf4HtCfzc+3vXzNvgP3/+NH/Ivfghd76nZv7zfV5R6V2iniO9z0l6vh/wgzanved1p6LjO9/xuBXwNwj5r+p4K+SuR5wvjEfTnYd/heO+nyGv8YH6+LyW9AzkTU38d7XOT7y3Qb2zKe37ieYnvor9BfgXatR147C/2j5usLzx3Lxc6j38Nut9Sfh9p/XfT0Ode4MdA71lk1J/qeAe/9SMBDO+vbA/vvxQMxVeG41WuwrdxK+H8LMZvQ899b1z4L8X6qTRwK/rzfqD7Ft917K3fBf4S6s8Er+dsjcBfDPn8fwLfz26BfabxfTTviZFubhw+7R1+P2MXfK5gft9LO/+snwl8r3v/HP6Mbz1jfBj52Snv+aXnmTfQS1zqXSP9k+tz2vsgcDvfN4Lf9yD9fwLn297wk5v++gy8dUjbn71P5Psg3g/thP5Wo/++jNupSC+Gru+PlMHu1KP3zXf4rgT8FQa2pP9dJH8DdrSc+sbDXECeO8hzGn26HjZ+y/Nx/5fG8X2X957A730q4+mNJzJu4TvoGb/g+yCDqB/2b/t+ne/W+Y6d9wsuU9+45vD9e9+1zOf9VPL/fd/Sc+dIAL1fcsf4LeN3Kee8VAr6caH7PvUjtJ/+713oI3x+eh08x31/iPQH0Pd/li5glwNZd4X3/8+Yt54AUzKf+R5d+L19z5cWYx9PGE8fA31ntTb0J0F/BfU9n/vB8xXs42v6re/IOr5s1n/Gd/8vwP8HCPtnbkUC6P2fFsZfgc996ibvEzK+dgv5mXyffRPzQ17mhTvASdCpBN0XtFd18D8IvY/r+Kl8f/o+M/bo+Zr/P6W/diT2Y39xfeT7D3GxD8+lPKfy/wmMj5igPN63cvylfgbsoRlyTUG/3g/uSHsan+X/adnfL4OnG3QmQ7+t8Sj2H8qN9T0c5N0A3fD9/sy0SwZgScbJ6tQrQnsVBm7B3pyf57PfnQx0fbqU9vD/R3y/33fz/P+RV/9H/FXDrC/za7+eF+rfsXzfnHkqLuUb6h9AP/7PTDheaEjo/dyBpFOEzk9LQdf56wTyF4X/k+QXBXo+0Q9+EkMvE/iMH5npvEE6I/Wrgr8j+cZbus/uBP7FofOS333HBDtpbfw29pgP+77o+yeMJ22o19d72vCThf4YD5iG8ct7ZmmZT0sAL1Pfc+0N8P82evLd98G0z2fMH3GpV4vxYAzyGq/x3Lgp8Bq/4f0K487ug8/4szj0/ye0b3zSvofouY7nPH9hR8Og3x2+50C3P/xUMX4dfIlD/7PSgfyEtE8CoP9bdQ44F3qpkD8t6cbwfxfoe+e+Z3MI+3R8cH1QFL5dH+QBn/ffPJ/z/X7fu/Rcz/fMff/Sd0k8b41pnIbrG+zpCvX073R2fw5fzm/+v5XzQxXqlwM2Q8++D+57Ub7ztRH+m4b8j68in+80dsO+3U+G/eM9yR9Off9HzvOSo77fYVw2etU/+MR7B9hrV/rHGO8XGg9P/nvY51L03g/+q2O/9bCPt4C+D/Uz/FVzneS7OvrX+O49AOP+E1L/rO99UL6ZcbDkV2Nc301++P34/Yzn7dDPD4zz18jvRvv4jpNxzL7f5P0s/fD+34Tvs2xHP8fQ1wr41x83gv65jv7hO9S+Pz0Hu2mHnNqP93ej8d13oaKTvqW/AHz2m6ekN8GH/b9uqP87HoT/H2wm44Dn78aH+n8x3rMvH3p/6hH4HIe7eD6EXT3Qn039atT3veBBEdK032D7Le01w/hq/Fstkb8h+shLuhHpJNDzvMTzE9vR+zm3GW/1+9wiPRh7Gsn44/9BDvZ+n/GLtF9W6I4i7f9nhuNZawNPhM7HPO/wnNZz+Zzo9y583yX/BPnei/N+k++1Jnb/Dr+dvC8Nn8bve6/ee/ZH4c/79b6P5Xsul0lnB/9I19d8D/9/0vsB+PedVc/j3W+/B7+5XPcjz6D/4X9uDh/6oYdgD1nwf+rP2Em5JPDnPfVR0J2DfPqT9oBff5P+pWTgH0v+AeLX1oE/qfHhxiWF/l+gO/z7bql+6LTIexx9LdcfR7nYxleyXvX8+AT9szz9ZiHyhe2iJe2zlPnxFdfzlDN+1/ga94cNQ/e3zmMv54AHwL+F+sPgx/Nx7dBztvnozfv3rmMyeH6EfdZh3r0UCWBs9P+hcfXw+RH4fB+yp+c/xnWRdp9he1YE2t76E/+kv96mfkza7wzjzzbmD8ePpoxHvtPVg/RO33kg7T2TJNhlKeBc+NNf6P+n+c65/6Pm/6d9Z7yw/8tEuhzl4rFuyQS+G8yHFTw3CMC//8vl/3R5nvc19pPEd0WAno/tpnz4f4J9v+xN3++k/WJRr27ovQPfQfDdG/03/t+f/cPzG98XKYfe1jkORgKoP7k4/HvO2lI9eH/UOFPgMqD/5/AG7T8Y+65FOgd0MoN/tf2G777/a7y4ceTGjfv/L94XWILeHCebe7+QdEH0cir0/y93sMeU1P+D9FXHKeo1g15u6J3L8TI+8UvP9498L8D/LfV/TP3/0vaMd+pnDGn14/+h+P8xZUP/H6P+EkBP/d3zfSrGp920yzHSZ/QHY18bmEezA7XXmJS/z/jzPnL4/8iHQ/E2hb3vQP5p6ldBT1NYD9n/23ue4f4Vut6rNK6mPfoNx9fcgO5w37sH7+e073P6TRro+p5gLOiUAt6h3mbaqzF4jXcsB5/eh+pAfn/Gix3g6Ufa9489v/TctrNxa75/hjzGLxq/rH9ga+j+yiP48R6L/590EDgZmNb3JdB7f9rP/zfwfw+m0z6F3efTnrPdP9OexnsZDzYb/ryfWMv4KtrJ98v9f5G9oXeC/D/Xcb6/BD/eB23iehc6vvfre8DG1xsXYTxE+P8D+sGv/883gPRKz7vgy3M8/2fiW+T/EnvJi97cH35DvvfDbSffMXgPfutQPxflfe/O/9fMBT3P91uhvxfw6/u6VWg/32P3fd3/A9r0drl4nHWddfSWRdOAf5R0l/QD0iApIC3dSDcCorSAhEhLd4ugdLcSonRJCQjSCgiIKCACYpAC7znffV2ew30+n3/m7L27szOzsz0zz7j4Uf/3mwCMnyCAj9IGcFMAopqlC2DT1AGMGwlg9+QBvJchgL1SBDBx5gCmSxrAvC8EcECsAK4Af6c0AYxN/VnpA7gjSwAP871spgCeTxbAjVkDOBa6bpI/i/Ljsgfw53gB3AC+07SXifq/pAzgF7TbKRXfoX8fdF+iXu04ASyZLYAVwd8+YQDHkK4NXScDELUMuW2D76rQ1xK89aC/KnRkJ39Y9ADOpd5W0rfgs1XiAP5KfupIAGND30PwK5d60KF8ppA/nPabQnc05JUzbgB7wdcS8t8jPy31H0J3RvIrgu+jFwO4g/TFjAH8HPkPpv530LdWPYL+ztSvSH8cBv8d2u+eKID70N+9wDPgzwL+3pR/Qv314J+OfnZMQnn0awDlZtD+m6QbQkdu6p9CnhdoZyRyqEp70am3B75K0F4d8psg1yfIuT/y+Z12MjJeMgEjwLPk70R/ZwIPor+/Q88U6GsRCWB+9GQm/V8JendR/lfoyvdSAJdRvgVyeAk8H1E/Cfi78f1ryi8ifz94C8N/y6zPt/+M+aMN84bzSSLo2BQzgJuBW4CraCc5eH9Hv+agD4tp5y7lypB+E7l1oP8WIs8ElIvDeDpEueX032P6JUeMAD6h/mXqH6R+WvSoGfIbh3xHI78m8PU+sBrzSQ3g/tgBnAC+7tECWBS+k0DHj5EATqXeDvSqCrA79f+gf/6CjhbAk8gtI+UuwGcZ5HgN/vPRH2sYV0UZHwXIH4XeVgdWA26jnSP0xzDorAL9R6hfgPn1FeBh5JkX/mJT7y/KlwDfcuRXGfq/pL3YyPld+nsP8hhP/jH0sSv43qF8Keh6G7n0IN2T8ldIb0ROMal/gn45BexN/Q30fwR6dyG/TKSTIOde4MsAfRmo14zxkYlyl+AnLvSsRf+Wkz5M/ivgOU26A3TdYp7pSPoN8kdT/zXoyAdf88GfF7pTIudC1F8ZCWDj0LoWHXk2h+6/aLcv+d34Pp/257Buvkz72eivLsj7U/RpA/mXKT/X+Yvxthn9WUR7ye1/6IsJvn3QNww6RqDfs12vkEdW+iEn+YXQ+6P073rKt3efBPya9sYjx+Lsp2pC1/uOT+iZjT5MA3aFj9nQXxB6HoPP/dfL6P9k+MlDv8cHPooEcAx0j4Q+13HX75do7yr411C/O/KNAf0PqF+W8fgt9J+EvgmkWwQgKh7yKQBf34NXOSq/hq4f4JmBfBcDG6F/W9GDptBRBPn8yLqRBvx1yVc+9ZBPbvD/Sbl65CcjPYX2tjP/70D/11LPcRULPSyIvC5A/2uUS0B7kyiXn/1aM+bxU7TTOBLACtQbgr7NgP6hpKcg//zI9zvSu5DfZeoPoN674O9H+eHkp0Zea9zHwN9m0jup1w76U9D+JvJ3gW8s420W+WPgfwPyKY5ctgGjkf8G+VvYn3Si/Xisdy3gZyD64fr7Cv3REzr2oU+Voeci+IdAf2X4XQc+90FPKH+I8nnJ3408f6J+ceSYCnn1pv/WATcD36V+b+AC4Lu09wn0ux4MRt9cL1wfZiHvCPJJBJ/1yM9N+jzzRs8IfJP/D+01ob3ywJfsX+Q1ELgJ+AP0pmI+dZ6+B3R+dv/dBbynoEd9SoP8CiG3pND3PvljmC9Se45yXEP/WfK3UH8Z9Kxzfmd874TeAfCbGHlWQC7q5w3wqJ/v0m4U9XuQrgL+o+ybOwJ3AYfA91baK+G8gv7Uh78UzrvIZSR0VKO92tTLTL1n8N+e/llJ+YHQ25/yT0j3pb++5PuARM/zU512e3nedj6Av+vUmwKdReCrO/IryXhcB+wPeueh9ZT/03006YHgm894TQofx5gfWoJ/LHxvpXxq8DwlPxb6E9N1hvn+HvyXZ/1tSDu/wH9n8j+F34+RRxrg1+S3Yrz9e/4g7TlkLumh1BsFnf3Jbwtd+fj+JulGpN3/9EIu7n/cD7WCvg8yPF/P9TYd81tqYHJgUfpVfXMeqw+d36A/taFnFHp9n/xs5A/2HOt8Tn48+DtH/W7QVw66H1L/LeT+Kv3bjvxz4PsBvZlOfxYiXRD9y8H4rhkJ4HvwUYv0cvgbjVxGQG9H8nPCV25gecZ7PcodZF1d5b4G/buAHp0k3ZT85sAh1K9O/3eAr/egdzf8ZaY/k0BPNeRUjPyS8OP87jodB/k2o577t2ful6m/H/nvAw5nPSwNfe3przPg8b6sKP3j+HYdGgj+L6BnPvQ3gu5fqL8DfG+5/kJfO9JtSP/l/hl6egB/Jr8957XcyPFt0uWgbyryPwJ/05D/xcjz39Nk/P/zS9L+cvI7w+8d0n+S/wL8pYKuXsh3COvJfeBgYF/yPffMcz8FPs8/b6MPH1CuLHyOpf3W6N9WYArk3hw4CnxvQl9v0nvIb8n3PvC7jP5aTvsX4Pcr2lvOOKmCfqlPs6DvrPcNyGEO+Fbzvbf3AuArS/0YlPsC/fjQ+Yt87yW9p/R+Mi31iiLPWq5n0P8J9XdTPwX8rgLPGuqPptxd8pNDf17w5oLfkfSH+5Pq4N1Pu8eVL/jrgj8R6dLk740E8Hfmk++AX8H3Z/RPWdcl+n0p+tOO+j3YLyRG/r8x/zV2v8m8NZl0N+jNRv2h8PkGfK7ne3Pkmw16ayGXG/DRGPpmip9x1hi4APk3ha8ljKtlwMLQ4bo2B/rqwP8z6KrFfFATWJbxnQR6wvfvC5F3Yto/QLnp8FUM/MfJr0/9c7T/Avdrp8nvTr0n0HOO+tnJ/5n1qRVwh+dS6MlEv0WAGYFNkG9f5JsOOjYij1zU/5H9xnVga2A074+on4Rxsx3+l5Hfj3lhPN+TcX7YhFyS0O59Ifiqwd/XtBeP/MHwtw36l5Lfnn3DLfLnMT4qM148921ETpNp33vGHY4j+nlnJIAFkFcJ+r04MB7lS6Jfw0knQf92wn8UfJ8h/z3HCfl9lRtwFfTfZDzMg7585L8KXX2RTzfyfwF/QtqrhnyKkN+V+qfp1xjgX8X+sgT03KLci74vub6Afzn4mkKH+88k1Hf/mZH2F1G/OeWbwN9XtF8beQ0h/0faGcb4rhSAqKvgmQScSr77Nfdv7ucmej9Lfhva3Un9B8jvOO15btvsOQ76rpK+gpx+oZ3HwCnQt5X6++G/jud35sN/wFOa/E+Rz+/Q85bzM/qxm/SX5OdBzm3J/5b20jgugIehsyr53h9t5v7IeyTvjzqDvw71B8FXbOrvJj897V9Dv57Az1zwlXC/RToR+KPRH8egYwjzdS7kXgx8beH3Du2PoH9+pf19fM9LvdXkt6K9NYzbRu7Taf9Txudv8HNWfQm9z74MXb7T7nddov1WyOcEeJqB33OV8+0E6NuGPMpTfzv1ulN+NvlbkGsD2ntE+XKu79BTDTgL/pJSvzjlD4FnkvOM9yvoQyzaf0j73u9mZP48bL+F7l+6Md/dZ369B3R8jWM/0A966zHf5kK/t9C/Uyh/APo+IH8X/TEauj73/tz9A/1aF7pagP9D6uej3Fz0YQxy2E16PPLpSP3xtBOf+q4PrgsjQuvDh/D3N/uG+8Dr4J8ZgKgUrNszWd/uA/eg943gYx7p075vIo9WpLegRx2gLxfy8F53FPdB8ym3g/yh8JceuFJ5kM6IXM5Sbx3tlaL/t9DPJUl7z1sJ/K4Lr7p/g76YjJ8K9MM46tVAHzIgzyTol+NwGu1P9V4M/iaR/o5ydaWXtOfeTdTf7Ps/ad8NGsN/Qtq9gD4nIO39YT7mp3XeN5DuDb7E8HsD6Dy71vGBfnnf7D30cei4iHyag+8B+vau5yP0aSSwMuU7k/97aF9eCXmugb9bvg8CfRdMTn4S+s9zhueLotDjecB3jOnw5/nA95fU9ENa5LAC/mKiz1nA+xl0riF/K/2ZFP0fj55Vgb6/aT+O657nJ/goSn8VA+6nHd9DvY8eT3t9SceRf9pNDLwBPzPpvxO0H0E+I2n3bfRb+5jmITsZ7WOKgq8d8nnmuRF6Sgcg6gwwDvytgL5x8LOfdrU3cH7rCV1LtFvwXTkSQN/DmkHPPcq3An809Oq/7Cw2Uv8b8KaHnmjIJyXrx1rmQfdvg8AfC77/pn3njd3eX4O/MN/TwGdh6mufoZ1EXOh41fMb3+dAzxzf67VnYH8+3ftN9KsNdDWB7u2eY4GVaaci/Hmfscb3Rto7Av7j3u/Q7kPgZeQ9m/qvgXcl+doBLIsEcC/lh4P/FPPXU+ga7bsN/Hu/0wc8h6HvD+pvoF9fRK47oHMN+e2BI6GnBvVb0D/qT53QfUoc8gdDb07kO5n6TaHzCfnaC2hH4D1ree20gLcoXx9664DvOPlNyP84EsBDyOeh51zk8CX421J+O+1WIP+870GcL9ZQfg9yXkj+Wfq/CTD8vpKUdf1r8B5lfvH8HAP5XwJvHNJb0fdczDvvMe76AH03j+N7KfApfBSjP14F3zzm98Keu+nXCdR7i++XoHMB9SPuhyjfBr1KAP1lqe/7Z3Hq+/5SkPzp1PM8moX68cC/FH6119A+w3m7cGj+rgp9L9M/+YCbaN/1Lw3z7lXfD0Ln1Yn0R2n6yffk1tBfBn0+w/eM1DtC/h/wUwX81eH3c/irDT19oPcv7yNJD4CeN9mXPSIdD3xHfBehX+9Tv1/ofd73eN/nO5A+Q35UJAAP1Cvonwq+caR7UX8V9H8LHRdovxfyGAm++uBPSHos/ef7aVHqaU+hfUVm8C9Grpn5Hj6/ZgH/HuicD7xG+X/tZbynpf4h8H/P+M/POGrNOLiMfLTLS+k5gPra57WEX+1er7u/QA86ku/9UEHoOgH/XenPk5TzHf6a87TnG+T8iHaOZnkeX9H0z7dXj/LaH/ku5D2870NHwe89xjXaL0G5zOBZSP/P1q4N/sszf7jfqQzefb6Pkz5Gfg7qr6D+36ynj4DTwef9+Dz5Ie19TFfoi8+4Lsn8mBP5LwB/YupH990OOI3xlQ/+o/G9P/RFkZ8VfRhFf/5N/hjwa/+m3dsd5HeA+qVC5x3PP0u1f4Y+573q3tshv77Q11R7D/r9e2Ab33/BvzS0Dx9H/nfIZRF6MiACnd5/W999OvSn5ns65DOZ8bKY/nT/6L7RfeTblO9Evwy1P2k3M/XHBuBf++1E4OtF+0mZn89BVwrS572fpJ7zWvTQ+agy+Re12wH/68jvAOeL5PTzTuaB6pQ/BX23gT2inufT/a/7Xfe/2hf7/rOAtO9Aa0lHp9164KminJFPWtrxnaI+32/C32nXVdr3PTK57+3If7L7Xvid6zuR5SMBzEO9Rr6nei6n/TaUq+X6ynfPdd6/eB/zD/mLSE8nPwv9t4H57zb1WzOeJ5N/Bv59d/cd3vf3Y9Dvuh4BzyXPQdDvvmMH9FSi/7UnjEO+93feIxwHXtXelHop4L88+3/t2T9kPpjE/FDX8xv5nZ1/wHfe+3T6YzflfA/Por03dIbvt3338Xzk+0976AzbxXgO7of8JqDv3quE71tikf8Yul0/q2q/wHjMDf6d3EeX9P6P9vuCLxPft1D/D/T/ru+O7MMHwkdLxoX3AvHQl060lwH5PoDf/p43wf+Ect5np4ePie5P6b/NlHsL/paRX9z1kfpHPC96P0r6HPkbwHOe9EHorQ9sxj7O9zD3N1OQj+9cY32PY/+Ziv1nFfLfAX8X5LSK78eg6xr8r6DcKudn8tfAX0HktYT2fb/uQ/205N9U72hnL/VXIp8Zvg9Q74jzM+M5OfNOKuj4Av52UU974QPeD+u/Af4i2o9Srw56tBd8vu/Ghc4EjM+D1IvrfgF88aB/LPq1mnX5F/jXv2A9692L1P+A+fQ36HsTff+ccdAT/W2hXxXlfdduwnhyn5SO+SwJ7Saj3X7Q1zZk79gMOpaTTqR9OfL2PmQW9Vuhd+PBfwj9i4Z83Hd4/nKf7/lLuwr90cL2FZ7vvRfyPtn7oaTU1y9EPxH9Q+6yXr6BfNyXKodT8Ou7ou+NeWh/AXqlXVnY3mwt372X8J7C+4nzfC+L3mgHn0P7Z+/bwJeXdFvoTw3/2geF7VN7Uv4wfFVzPQL/Fvhvhp50AboO/Jdfzl7fT9Ff9bY383d6+NtAez2Qw1T65wr0he217kHn++RvR6+j0POy7r/on0T6zQDdVxz0fYx6vp/4nuL7ySToHUT7s0mPJl99Ur+2+15G/lLo6Qr/8cjv4vjzPQU96a6dPHS0ZH760fcY+sP9+z7S9ajfANiW8i2YH1aTbk66D/pZgvQq0lO0s5Q/z9foTwLk0Ib222mfBd3aKcVH/ruRi3aD7uvFn4/vA/l+yPMT+MuSXgCeWtqxQk9r+G0D7IA8nvouzHw2CKj95of6fzG/7fPeHnkfov0LyMP9W1X6X/1eRv0OlFtJuij0zXY/A38/oO8FkfcF6PF9JD7z/NfaO9FuWvITaodHvvepl8DnfetE8juGzjeedzzfeP7SriZsb3MI/Nq3v6wdGfhfJ/8N94fwtwk8+vNqxxi2X9QfMyXt3aXeJuXLuTs631NQvgj1HzivQ/8K9C8l8gjvX923ar9Zgu8DgFf0n3EfqH+Y9rfIy/fbZswfB9Cbz7W3At8H+nPAX9i+6zblX6Pca+wzs1MuLuvjXPT3PvyVh76foKux+3foLQv+U+S7LrynXTPyS47e3tXvR/tT2h9C/lDoOs88qv/eOPAf9BwJ3+nIPwm+B9BdH/2eTP9oB5GZ/AvQ/w10TkBfa4D3uusW9H/O95LUz0P9udoNQt9639Pgq6P3/5T33a4u+QnJz+r7Ef2UjfRL0PeGfpzQcwh+3iKdEvsv7enD79u+yyUJvc95P6W9en32H9PRs4PayyL3xfT/KuAW8Ou/0k+7FvKHIMdP4adoSL7a75ZmPi0F/BF9mAr+j7SHonxO5LHO8xf5b0QCuJf93Q3a+Y10RP8lylWh/0ZBr+/93zMespBfiXl/KfVzaW8Ofu8PvTf0HrE/+YNZn8cxjnvqB6V/CvJtR790oH/1/1yHfs5gHT2HfC5T7jH9PxF4zXOC/EH/Kea5M8AKyG8k7Tr/3qDfnyFn+1N/pILkzyA/QrpSJIAttLMjXRv92qX9HPTf8P2P8jUo/wVySgb/NZHnm/qPh+wQ/mbcDKZfwva8iclfj15rx5cIPHGQb4T0VuRVE/5c394h33XO9S0/8ukd2mf7Lqh+LtI/iP5WPzORHhwJoPbYQ9D/NsxnF8GfmPzZIXvereBzPXD+d1+YX39I+utl6m1hXthL/lX04yLyy0FaP7kiwJL6N4T287PBOxz9ukl/DjJ+APAudDxlP7OJ+WcbsAP8RQd/HPpDO9BR5H+B/BpAz1PKl/F85rrGPNCM9Cnw5OX7ee8HSceHD+/dvW+/SjvaZz3iu/d93gNeRx6boW8m32+DN0L+LPK/d/2iXF7od/9VlXGdCLhSOzPGU2r0PBnpn5GP+80Z+j2S/vU/7i/lQ/qzMa7y0J7vKJmhLxzPwjgXMYy/ob2y70ng0X9nIvX099L/6ylyPev+iHoVoPcz3xOppz2+9vmnaH8H9CeLBLABcm5I++73KlB/Cfru/u8F1qXoxiFAHxJ5/wod9zz/ou87kOP7yKMieMsA9UftS79l9n5A+3ro+wL6jUOwkfQ6+ld70V9919TPwXWS8aafsX6Z+lONo700jOvLwO3wlQ356P9QUXst6t9mvvQ+J/wedpL62hN4X9UI/rYx/vVPb6Ifi/Yp+heCLxPtal+7nvGcHLzrSBdDnrOQ1yuOX+Twrfc78NUI+pvT3p/aC7EfeEu/OtPg/4r+/hhYn3LjwdtUfwBgBvBqz/kl+AY7P2l/Rb721K6zhcCfDjwZjStjHAjkqf3FY74/Af4DPACf6q36OhT56D+dGfm1ol/fga5v9b9A/5Zqjwv9z+ivu9SbzLx+z/MP/BSG/rLsI1+H/szGF4J/7bA9D1yl/nnPHdDhPbT3n2H9jEV57UM/Ba/+9+F4F7fol5EBiLrv/pn8+e6r6P97jLdm0F8mFM/A89cj8vXrrabdF/j3k5+D/smDPBsyPpPQfjrko7/AgtA7qufpUb7PUd71LBnyboyctK8rAT7jNV2nfAbyPU8fBZ/vXmF75NfJfxW9GOq6yPg7DD/aHWmHVAB9yo5+PEOuBRjf2ifUC91HeV/lPV5Yvp6f3tM+1rgxzMPTSGeATu32kpLWfm+1/t3w15Dv+nPL/yP4GwedF9lPpqd/L0Kf84n2RqPA351xUwr575c/1xfKT4TfJdCZn/ppyF9BO0f1m3H+gN481Nd/Zhr0raL9iPu/0P1zTe3zqJc5dB+l3ZXz7lrkpR3WHuTrO+MLxoeAj3LMH64rviM4nn1/u8T48x1ukHZc0NkAfLvpZ+3/OkFvI/JHkx5OuhbzZS/jRAB9HzuOPLZB9x366U/o+ywAUROA6eH7L/LPoN+NwHOW9Jv6j6KP3t/cgn7nj9a0ewK+X/GeCb6vUv9nYG7kaDy0osxfrwIXw19K8ktBdzv6aSHpQ9CfCb0ehtxqs55thv4izC/d0dsu1DtM/6REL7xHmek+jvqer9/RL4N2esKf9xkjSPei3DXS+iO3hv7ppN1/G/fOeHfHaW8z9H2GvPLQbvh+Jz561ws4An0sRv8UAJ/v9NucR30fp33jy5wLxd95n/za8PWDfs7eH9FfZ+xn/U2hX7sL/bmy6L8IfR2oZ5yLcHyLOOiF/lOlkIPvs4Wg9wfpo/4H5HfiXsL9ezzW+QngM67HBtdH5HTB+2j6qwryaQgf+veURu43kHtj6i9yfoK/ePplQX8n8HcBb3b04S71azpfMN/8gtwTUT5rJIDl4CcL46AO+q6f8nb4079e/9rWtL8U+q5RLhX9+SHlBofeFfSn9X3B+BH/VU7/grD9gP4FDbTLp73uyGe7fsDo/zT3FdDreWUwfB9A3qmZLyd5/iR/dSi+Ww/wx0a+cYBpIgEcAswNvVvQz+Lsowepz8hfvTL+kfrl/k67ROPDfA99LUL+Z82Ry3HG1zna6++7s3Iif5l+qtDzif4d5HtfpH/VUu2xKG98KuNSGadqmfaE9OcK1oUztH8C/Mnp91L0UwrSxck/Dd91aSeZ96jaP4T0Izz/DOO79xbeYzh/hv1T4tG/3nMfo1/CdsS3fW80LkDo/W859Dl/an/VB360v9K/0HivL5Cvf+E+5gXn5wGky0LfIvcbpCdB11nk1ILyJcE/Rr8i9QS85YExQnYg3jt6D+n9Y1bqh98DfSf0fiYpfLeGvvD6p99zHOg2Huo+5Pkr7TZELxoAh0FfWK7GC9I+fSz0nEIPq0BHS+rrn6xfsn7mxsfJgF4ajy437euftoH2j5CfEL7Wwn84LuVY5sfC0KHfdWPtv/iu/feuUPyl1vST/oc5WBeMQxuOP9sJ+vQjLa09MfSMYX76G9ib82IL/dXo33XMmx8hp33GJ0W+xq8bTv+NoNxw5D6WcdXc/ar2MMhjC+010U6U/F9Zv68DbwA/9D4S/IOQ9yeRAN6kf4/Cz2Lt3kl/bZwp38NIa//1i/GVoLsGejhBu1zjzUFvOr6nBa4xvgH6ssT4XKSNH1SY/nHf4D7iB+ofC8C/djzGS9F+pzb5c31fIL2M8gP53hW5vea+Rv8t9PMh8kxNupv+b/ofsy/wnnGk83vIPtc4TOehbwT9M8H1CTjC9/NQfe0BuyMf92cR8iuib0W8v6P8Ce32lWckgHOR62P6v6f+tPDxLeUvQU8R+EqqfxX6rz/SIOaDBJT7L7sLz1/6v+jvkZtyE8BnfMK39BcJ2z8bD9L9I3q4CX5Tsx7VJX8E61Q34x8YNxa5v4D+ef/t/fRi1/9IAJMyvj3/6ofk/VcN7RDRqyfQWcz2PB8xL5ULnX+ND3OZeaWifsDon/diK+kf3zcWApvTP+mMn8f3Ibbj+u99F/Rrp5gV+lIZ/4HyHYzPYHwk6umnoR+I8+9D9HsR3x+RngN/2rt/FYCoGUDt4Y1HoD1JDOhZqJ+A70eh+cb32SzaW3gvCB3FfL9nXt/AvHdd+xro0z8xs37UtBMT/o0rUZB02P5WfPqZGN/vt2zP8/MT/DzwvEL+Mu3ZWQeiG2cF/uz3DuAPv28ZX854uvoL/UH9/PSHep2btPq+i/FyB6h9xlLtFtFL9Sgn4+8S+N6n/A/gi+n9PONXe2bjI+6lfFP3taznp9CTlsDq+udC70ngCaB2IZUYz0+Mw8X4+SZ0r1wKeWhf28f5Tr2BX+01jf+yB34u8L2ncVKMzwB/xnPSzq2d44vvW6n/Iuere8hnhvfD+v3SXiHn29B98n3w3iF9hfa/8r2A9vVfNF6YccT+ZHwYT+ya8d2Q20T0sJjxm2h/NXL63PlE+0r08ZD+fIw379E6a58BXUNprzfyre/+iPp1SReA/kTwl9TzL3Tn1I4AuBJ5JaTcXuTTR7uP0P2U9j5TyK8Vknc693ekGwLdX18Cf3bo8/0pfB+Z1vgN9HtN43x5vqN+yf+wh9ae17hxs7QP0I/DeNbAuJSfob+UfhHQ9xj5TiI9jH7Xfl97seHeu0LfRuSWD3w/wl8a/aWRu3Hj12unEBr/xqc0Pupe328pn939JulvjB/jfk17ZuTne677y3XQY/wH7YG0D5rK/KV9kPfah2nP90bXd/1it3rfHvKPNT6U8T/0u51H+ceh+Cr6zYyHfuOPvAyfQ1zPkI/+me7z9N8cAj/GvzTuZRHWE+N/fM14HkNaP4DctF+V/dMG5v+PQ/EhFsOf/9+RlfHu/3cYV+NH74PoD+NrTKF+dOb1GKHzR0rorUe7+o93Zl8Vg3a70T+OD/0D9M/VL3cq5WvBby/wVYLPh6S9Hz7Mfky72VyMU+1p80DfGO1G3ZdF4E//LsqH52v1QXtT48MYP+yu8RTA/z306R/zLnTpV/AtfBp/0rjly32vB4/255nRizTs43tR3/gzBwIQ1Zp2jpDuq183+1f985MDPf83pl87uK56/wW/C+nvk56vjfdDef/PJUboPSED9J9Afz9hXuhnP0H/F6wnXwJvOv/Cp//Lop+39nrv0t7BSACPAo1nlhZ5uu9yv2U852z6z0BXNb5rfzsJ+ncZH4DyjnPtZ4xfkAK5GMfA+AVnoFf/6arQHdt32JBfxR3S2p8fA7//k/EQOV2Bvn/oF+erjtC/VPsz6o2k32977nD+pb2awE7om/EUZhqPTj9M3w0iAWzEd/0rfw/5Vw4K+U8ZB7wH+I23MZzvxuH4Hf6X6JcL3iuUH6QfKvL4Dfir8gGP/riLkEtn1yPjoaBfCaDfeFnGz09E2neiKyF/wAPot3Zx/Zn3tI+bSvpv6FrseVz/3ABErQL+pH0JdBrHxTjEfbWbRD7doW8BdNTxflY7HeTv/zIZT9j44J43FvK9V+j8YXxg7wXC7zXnmX9rojfFGE/GaSijP5Lvgsj7HfBt5XvbSAC1r/T/nYx/53zjecz4d5fQ253M+8bP/BT81UL75y58dx9aAvk98D0KvMaX9HzaBbpP6HdJ/06iP/0foaf088/ul7UPA7/vTEu173e/gJz+gs77wHz0awXauYqcaxgfh/r6f/tO9ER7Tf0DKN8Vui6j3604v/37fwkBiLpA/SW0/7l2jdoB6S8Kf8YBmEl7ibR/pz3jGelHkIP8++D1Pcj3If+/zf9r8v+b/D+nm+CNYt59wLg8Dr6a3oOyX96Lnjov+H6oP6Z+mgvAq7+m60MF6rcFuj5kBb/2uj9BX2348z7beTOW/hvGp6A97yW9rzwGffeovxH9Cb8vXaC9Knz/iXK36L/PaM9z7Bza8/x6E7kepZ1TlJ8AHu3HawEL0U/aj8dh3BVBLg2Ql/sc39330r7/W+V430P/7gbm8P6ffN8Hs8CP74S+D36CvIwjarzieLQ3D7rzMm4+gt470DGNdo2DFY5/lZ/yt3lHPwKfc5iXjoT8tw6RPwH6LkNPeejPRLv5tP8F/3vApJwH/P+cn5HfRuppp34X/VkLfv0W/D+70eBvQz3tIWsZr4f8B+z/TjMPzCPt/eAp5HZN+wSg9zCZmZeGhs57u9CPZtrbu6+HHv8/I4HjFfktA89Hofru26zn/u0d5u/1xhUk7f8ZvAg//u9TrEgAjQ+aDnoK8H0o7Rif5VX6Q/+Vd0hrH+t9+A3qZ3e/A/6J0OW9yG3tt6i/2vhDtPcnelXH+2v9T2j3I6Dxlk5KL+0Z78Hzqf+35f9vLaaf/f8t30X1f9Mvw/dR42dH0/4YPKmQ/xbknTESwEP0ZzPyw/eX3lt6P/8X8vqQ/PD7vvvnKNpt6buy8bsYt68xftTDI9TXPnkI+LVLnoP83d/4vwfuc/z/A+c371c8zzm/ad+qXat2cdpf+78K2jE+dT5mnBgfw7gYxsl4jJwGcP46jpwHQEc02tnC/GWc0GaMR/1z/D8W4x1kYp00Ppl+NfrTGJ9xA/naS9xP/3y+8ahqgM847J77jSenvZp2bKmYR7Vny4Te6Vec1ng/0BP22xsGn/5/UAX6dyFyK0faeBreJ3SFj53GmUC+vvflIx3+/5XweddzcHrkNoPxVJV5xviKJ5HfKuhZDQyPl88Yf28wrufTXk74f8T3x8Aa6IP+lV0ZXz3AV8Z7XO3E4buy6zby9X1Q+2XtlkvAp/bL3qvot68ff3/a813KuNDGiTY+tPEItlPe+ND6bxrvqZB28Npn0b9bjZcIHefIr6t9LvXT057/g7kK/o0/53nPuB7et5TRvo9yMb3nh94CyPcP+u8jz3fIT3+zreDRH8z4Dmvcv4C/D2njxKVh3HiPcsX7uFB8K+OhGudqRWj/737f+Mj6a46D3oN87wt/nv/PMr/11E4fPJ2pr3+wdlit0FftsWqh98Y7SMl4MB5UKuTzje8ovpNDf2fkahzpLqT1D8iOnLQvKUG9BtA/Cvl4rjcOl+f9mfTfNuapQ7RzFPr1VytHegzj7JtIAAezHuem/U3UX0z7RaHP80H4/ii99xPQ9xnz80PfcZnPXqJ/Chs3ivb8f9eV+m+qx75Pwdefrs/ozxjktNK4ycAVQOPaDodu46u2J38aaePDVEFPvEc1Por7SfeX7jezIp9j0P+z8y5y6E999SIH/Izw/tD3JfA7j/v/DN4Pu995hvzm8V17CP0Sc9GO/5NWGPzVGR/ZIgH8QH8B+Hddrw3dh0P+K91YD4yrdRD8H1Pf9d59QHvyR9NeCu0S4MM4MifA34P8Wd5PgMf4nMbncP18HTyb9W9Cf1cyjo0X6P/j+i5XC/prau8BfQ0Z34cY17Ep5/+v1qb97CG/NONTnEa+L/qOAVzgOgTefrTzD9D3Ju8vvLcw7sedkHyVq3J2f7XaeEt8Pw3eguSvJd/x3ZHvju9u1PN/jUsz3jxfZ2c93ooeXCf9OvpVkfeAhLxfDGQ+2AF+/zfa/4v2/6RvIL+s8K99U3ftsMAfjhvufs/93f8ARVR47XicdZ11tFbF14Av3ZdukJcQEBDplkZawqAbpCVEkVJAQkIEJJQUJKVDWgFpaQWkBOmUFpTQb63vPI9rcdb63X/2mndmdk2cmT177xudPur//97OFsDSmQM4O0cAf3ohgIuovxEdwMsvBrAs/X/MFMDcGQIYm/p8KQPYBDwTqb+VNYDlwFc9SQDXUk6YPYBH0gVwE/3mpw1gtZwBfC8R/IP/fcqZwD8K/mYh15aYAcxI/TPw/5sxgGf5/QXwZ4GvCHBplgAOpd2I1AGcTP908LEP+SvA72j6XQLWQb9/Qn8Y/U6hx4KRADZFf29CbwPyVKB/DOT6iPor0LsP/Q6Uk0JnK+XXaX+I8gP4fx3+XkP/j/m9H/ykA08m6EfB7xj6fU+5BP3Xgb8/9fWAZ6nPljSApZIFcEbcAD6hviX9NzP+fwPXMx9HoJ/3UwUwHvAcfF8D3kDeG+grJv3LoM8UlC/Dfw7kawq97pEAZqf/M/B1Rx+VoZOF/mnAl53yV/TvgTwn6L8xQQA3ALskDmAt9JQYvBWZHxOgt4D5WYH5XBe9baZcm/Y/0X4W+N4HToF+Cuq70T4W/E4F/zLG5w34fx34EvXt1Q/9u6DPL8A/Jl4AtyPH2ykCOJv5GY0+vwVWA75I/dk0yAXMQ73zexLrfTp62w7+5LRrFICoebQvx7ishf+T6Ks7+ltKuQtyLqJcNlYA4wDXIedryH8UvR1jfOMxf+4yH5fDT4bYATzH/L7Oflc8eQBLo2/33d22B39y6H2CHJnA3xx+e8LXCOiPpF8l6nPSfx36KAW/pxmfssyPKsC/qZ9HOSn4psN/rfgBLEr/agkDeBt639C+LfPhM+cj/KVG7oOs/yzA9uoP+k/Bnxn+64O/N+MzH/5+oH4V5RPooyv6PE45L/xUtR58dym3o34v8yuKefUAuB06yeCrOePxCH7dn/Ig72b08An4K4E/G+2PgmcgeH+m/yj0O4R1NJJyZepPwF96vk+/Uj4GvlTuT+Bth5x30K/7eRLa70ZPPXM8z98e+H3gd575sy4AUa2Z3wnA35j2x+G7XpwANmLefAr+feCvCN570G9Lvd9rv+NJWX/Ox2boYxT090EvLvVP+D6cBmYFX3/W/z3mW2bwVARPC2Bt9NYSPaWB/3nAovC/F7l/hf8fkf8jyp0Yr7LgaYx8+cGfn99jwHcZ2pcE/0/OU8bpc/R1nH3rQ/S7Fzlmws8W9pOtwA/4/QD4q0F3TYwA9oLfodTXgv4h6LWE34vgKcn6rYq+MsFPZ/RTj/NRNui8DP93kXMUfI0EJoN+YfCH9X0F+g2YfynoN4t5/5DxHw6/L9Defa0YfFxhfMai19zw7zpxfeyh3AV8d+lfi3q/93VD32nXS3X01xM87sdrqT9Lv8/gbzXtK6B/z6WjPXdA33NqdfhvSP+ntMuPvu4z32/x+x/AEZEAFmXetGLe9OV7tMf9C/z3PdfBz1X6l0WudJRjw8ck+ieEXkf04jlzud8f1rPn8wLgy0r9dPj5BDgYmNJzL/pqgD4+hs83Wd+JwT+AedICPg7Rfgvzvhl0m1EeBf/vIM9myvfQ/0fw1x/9fEO7huwzlb0/cW6JR3126MShfwHwrQNOgv91wO58/7vTvyfl/oxvMtqlhb+/KY+jXIJxLQ78g36l0c8h6H6DHMfQz5uRAH6IfteC13P4fvTXiH4n6ef3dw78lqa+JuP+iPqM4P+Ietf1RujdRj9LoHvR7w/8dof/IfQ7xXe5HHS/Q/8LaN8M+Ix5cwj6Hfg9Hvq6ixyfQf8O+9ltYBb0mNrx4Nx5iPr5lIdD53f4G0y/fchxAei55AB89OP39+CnJftZQvT3AfqoSbs64Pc78yf6/Bn5joL3B/i5Cd+foj/XdWfqXe+/gO978E+hX23aHQN/hO9nAtrtQf7W1O/jXtOT/vspf0f9MMbtKHguIvdWxu9G6P5YHjoXKM+kvhzzujwwKfI94vt0n3VTl/Jp5C5M/xTIVR59jYO/JJS913g/9L6TB356wc9uynPhowbyLuH7lJ/9YRN4jkI/Gvzew8oz/3bRrwb8bWY+VPQ+E4CoC+DbCf0MtI/DvneD33Oh78XMp/F8n0+wT92jPNbzOuNRFHm0F5SC/jz43k39b+Btif7f5T7QFViA781i8C9Gnt/pt5N58EIkgN4vzjN+3i+8b+SEn7eZL534fQjlZPA3Dr3OobwL/M0Ztwzwr/5/pJwI/ScGej9uS73n52bQK4zev0R+9yX3qVasD/enafAfH7reV9wHnlC+SP8Dkef53U1/v58zgafB34R9aRZ6bEr5PfBkRJ7V9MuLPDPAn5zvZw/0tIf2DZGvDHxdpv8d5vcTyheo74x8rcH/vfYj5IvAT1Xwfwz9UrSPTXmFeKA/jv4xmKeN0NsJykmpz0g5Qn/vv0mgN41+T6E3FP7+pf+39HuLciv4fcq6Kcq66UX5gefY0P6ykPm5ivr9nDeKsg7asD42wO9k9PcW+h8MnUHo4y7954P3D/ivjX6+pBzL+xntUlK/jnkxCfyrKK8D/0LkLQw/vcFXhbLf4+bweQ06C8DnfWoe7avS7l/w50L/2mXcv7TXnGK9L2DfPkm5Af3HQP8M/bfD7xDqW4CvRCSAGdH7GuRfwLqOCR9HqN/JfEhJ/8rI8R770xTw72V8f6P/fuivkb72au2A4JkOfe1f2r2OQU/7VzHwxdWe5r5HuRh6qa79mvnTGPraBctzD9A+GMW69n6fE7krgicT+qxHWT17r97p+R7702zW/VrKxT3P8/37HDyvUH4F/vJB1/PKO+jpJPKHz5OOZwLkfwz/m6B70O8n6/csfJeDn6/hOx70W8NXD/BVgX4e6I+j/2H4KwL+OrT3e3LLeyH12meuZ3yefmb3a+qXaz+g3+fgGU19bdb7UfqXpN1X8DdU+zHz4EW+9zeRoxf4GkDnHnxXQP452v/AP1h9+B0E72j3fegNh/5yypPofx47VC70n5txOQ/ePMiTFD7KMA9PQO8k+syH/GeQR3uF9osfoO/7kOebScjjfrYE/uuDpx6wDXiu0r4N8iUE/nc+1n4AnQHU/+N7B79f0x4I/1t8z0HuSvQbQPtv0f959PYIfm7wHRiIvCvdj4Hh/bk6624u/KTifPGU/hOoj0bvdRmPDtBtAt9vQ7+CdnrGrxF8/wF8Ef6X+T5B+XP0mAh8U6lfHwU96gd5vwKmZ/w7s683Z38qx+8dkXc880U9t/Z7D/366L0YdA+iH9/PLiH3RqDvaLvRSya+25eB67XPIndl8PWj30bfh0L7x1rvBczPldgrVgBXA2OAtzrjcBK+syJPceh5P00O/qTQm0g5C7Cj68X3XOZvVvDnBM9s8Pq+Kf693oe0w0YC+If2d37vT/uy1Pvemyj0DpzK8yfrrRB8l2A8dkA/N/ivI38m2u0Af23qZ1Beon0N/fZlvn8P/TR8nxfRbi2/+y7rO63vs1uQZxd6agocCP+nmS/76Zeacnf03pJ7yc/0K4g+zjMe7dI/L9e30C2P/JfYP88AM7B/HoDfrdo7IvAH/v6UN2k3przFfYxxzsg68n1Ee81R+OjOeGwG9kK+p8inva8+8uyi3EF/AcZnAvz6zpGD/tnZzy7QLwflZdpf0V8r5PqcchT4ims38t0BuBX91fX9gPa+l56KBLAq67kF6zwx5ZW0C9vjXFdj9G9Av/tp5/dA+3079JUD/G3Q4+/UX6L9NPQV33s8+ONxfs/COB2F73v0v4V8P8NvIfo7H9TbaOT3vJ8D/czn/lkMvWpv175emHlRA7lfRb/p6P86cv0GjB86z4bt00eRP4r5t1N7NfXloLMKfbzP/u4+Xw7+3O9fg893gPNYHzvQ3z/wtYt135jxnaueme976O899zf0mx66c4ANkGsl8qfiuzQZ/Xp/6gt/abk/1KRdasp/+v2Erx+o9572FvrpT/kxfHmfjkX/xKyX2sABjGdTxm2078HuP/x+BHlj0U//G/1x9L/x/Oe5T7tsN+ivYn5e0L8Gfaam3RHOV2V8z0CPvSnXon1v2ueEvwWMXyH4T059euZLSvSz1fMt9D9gv08F/kV+L5D/OvL0Bd8k5stK9zPKxZl/P0OvM3jaAd+HfjT6qsC8HAOchhxnoNca/gbpnwB+7ZXi156p/XIo+DOzj0xCXwOcf6zbG+j5DuPfAvx/gt9zj+ehepEAdvF8FtpPvb89BP8s7omPKHcE7zP4cX/3Pft3/VdYbyVZh8VYPyN87wQWRp9vQl87bRzuq3GB8YA7vAcy3t3Q6wTKY6D/Lvp7z3Xk+x76+B19J0OeipEA5ka/7ttx+D28f2u/akT5sHZxynM4z02GXlf4XIrcFWmXSXsp/G2k/Cn8pUSeJdTXDL0vbfZ9ifbp9E9gPvtuP4XyQPR7lvlan33oHvq7A58D0Ntg+CzB7+v9vrJvXWc86lGuA3+p4fc3+PI7mQW8B/n9G8rTIwHMA39jofcO/N9Hn4l9n6P/O5RjA/1O67+UhLL2W/2XrrB/HAZvQ/QwhPYzmO+/sK6mUe6HPqqDvw58NtOeBZ2x7PdveX6hXBc5r6Pvhr7z0P8A4zkVfqYBpwMLQb8gZf2cJjIOe70voJ88+h3q96C/JnIdA+ZkHG7CR3b672Ce1fDdCfpToHuQ31uht5Lat5kP3fhdO532uRSUy/t9Bx6C3/ysv+msu87sg6N812L8NlJ+Uzs29D+j/p7nZ+q/gN9B3CfXArNyzvJ7UdH3GcZ9vN9T+CuBXqLR23H9pJj/3pvd7z8N3Z/PQ3ceUHvHKfprX+6I/rQvn6U+C+UM4P2U8c2Ifm+y/zaAX++HNeHL+bsPeVeCLyH1Yfu8fpL6f+5m3hSg/8eM52H4C5+3VlPfC/yxmP/FmUd/QS8l/evBT2XaH6J+Jny04fxSBLn/An96+l+iHEX7wvp5UdZ+N8JzLfqZRP+O1Pu+ehT6vrMq90T4K059PvB/zbxNwjxOD54u4N/OvvMDMA/r+QvajWW+jgae8x2U+aO/gf4Hr9NP/4NxrN9XrYe/9tSfo76k7+7oey7yRSh/id7SeL/SPs+45QH24fcp4C8Df/rlPtWey3glZ/xnMY+S+f4Fnprorbnvqsh3CPkfow/nne9mzr8B8P8MOf3+dgJ/bL5/MYDxwFM0EsA27F9tge2A05CnOueiIc5/7VvIqX1iD3z4TjUeuDgAUQ2BjZHvV/B5/nwTPK8xr5oynqdZX2+7/r2Phd5L9Lve4zle+zd49QtIjNyJ6f8V+20Pzl236D+S/XUj5daM52PoeZ4pGPLf01+gJXLkY99LCFyH3Ee0NzOvZnFuORF63ynP+trCuPmOewh+WutfAr5avnPDv365uej3knbCSAB9t/kWffgOuB35ZkE/C/QaQ+cs+t0E/9vQU3XwpqH/Qcq5wd8Xfa2gPrw/JkdO90m/37GZh36/W2uP5fuVA/gj++Uv7oeeX+BjMP2yop/bzKd3oVeQ8lvoaxTtsyN/DPA1dP5Qros+3vc9G/wvom/t2dq7P2J8lyBPBugNof1b6CdjyC8zLfz4ntgKel9ql9W/kPbu/77b+I5jfEpK2peiv347teBf/+eP9VuD73LIm5R64zr6okfjO7RLN6D+TfjI6/sT9Y3B8yJy1Yd+P9aD7wkfwvcq6j+kv3YA7/33fH/Sn5t++mHpH7ec/hNpv4Lx/476hd7vabcC/UQzv37k3LQL+Ih9RH/11+G7FHx9CJ9FjK8J3Z8Tw+9d+K0NnpH8Xo7+x+G3H/2f0b87/fYDlzH+uWiv/exjxmcd+9JA/cWB+ke+w3oqwzqdzT7VxDgSvuvJWZ+pkb8F+GPqNwKMDVzmOQj+o6B3G7zvGh9DfRfffZHT99l/+P1d9OT6yUd//SG+Bsb0Pkn5bfSTHzzfIf85+Pc8chR6nlc8n2TTv4b+2hG1H7q/ee6vEDr/l0E+7ZjX4Ccm+N8Ev/ca7znebwoxHrEjAayDHs7BxwDwl6e+CvjGUm7F+K4D7zHOCb7Haq8qTfuw/+9V90P4j6YcgY/27Msdgeu0v/h+R1n7rvb+B9RPhN8XwNdK+zv63QV/feDP8/1K+LtDvyzUn4PPbKwP/ZbjUZ8S+pMpn6FcgvbuX29Bfxj4vkTPJeDnS9oX576THXid7+lF8FxjfvluXY36KYxvPvQ2Bzkyss88pv91+DNu8X3alWb8f4CvAiE/Fv1XjCsxziQuvxdDvrLQGwm9+PC3xPdF7KMrgbHRx+pIAFvAT2zG4yX949DPZd9T6TcZvldA3/mciN+/QA7n90a+DyOhPwm6VelfA/47sY93gI7n+/Pay+hX0Hcy9KCea/p+4fsk8sRRr+C9Sft6yDeZ8+sFYDW+L7/YX/9R5IzDecf51QR64f3B96Ecft/h/wvwpNc/ivqW/P6e7zG0196s36d+WVHIe4v94Tbwju/lrgfkL6WfOPPoL+rTUV9Vuyd0nyD/V8jrfnOUdaC+t7K/bQdeZj/NAZ6O0NsKXzG9V3j/U379713/9O9M/RH4awC8Df0n1B/yvqafr/4XfD/nAPd5z2R+Xmde+v60jLLvTw+RVztv2L7bCXz64ep/W5358Rryz0a+M8h/Cv6TeT8DTzfo/kq9fucTGD/jfIwvKao/MHRfMY6E/sa3es49p50COmuY32uB68EzzPhYzg3fofe1lJPpX4o8+qVXZh9NDX/GG+qfbzyi8YfV9B8M+TG2gj+/79uBw5ln+b3fsG9UNn7KeB3wvAHdasg9n/XdQf9b32/h0zi56qHzvfa7QexnnvPHUY4PvwX0T2P8u+v/adxYKP7mEe31g0hm3Izx6c4n+N0LfynA/5jz3WHk9h1Q/yL9HyfAn3GBr4JvKPy5L46mnftjXs6DhVgfqem/hfGfjj7LsX/6Hjsf/I1ZTw+AxhPdBb7MuC2D7jn4KIR8E7WH+X6CXFfBv4NxC78P94F/v5v6ZxiX6fnDe+Vu9D8rFB9eiPJfofNdD/CvNX6dsnEbvk9k1K7quy56WGr8KPIXRj79lA8YHwv+gZ6Lob+QefCK5y5+H65dGn7dL90/cxnvRf9E0E8P35u4Hxi/qz3Fe6vvQ/vB/wz6Neh/GvkuU9avyrj+K/Qv6jscsLf+eLTbRtn9rwh6cf9zP6zDvKwNfB14jfE7wX71E9/HXyn/QX/9FxIh71vw8zXj9yNyL/L9DH4K0D4j/b1n1GcckkQCaN4H8z2YD6Iz82UD/J6B7iLwb0f+eazvBcD2rPOZ1MdivGLHeV4O+fc+0Vd7Lnx9iH4+8DxAu03we0e+fQ+Gr/D7YhK+h1Pg6zz7ZS/k28nv3u/6Iq/3u16U9YdKhZ4vAsPvW75rfUx9U/iuglzGKbWkPI5xX8N34ibfj/SeWznfbESODUDf+xIxn6dr/wxA1IfuA/zu+dL4PuPZ/X6mgY8Noe/ncMZtNN+XEZRXg68G+qwJrA685PcAeY7zfXyJeWK8dFf2Y+0nv6G3gsyPMc5/32fRc2fqjbcwTisH7UoDL6GvifBdRv8qxv9X5G4O30cpu8/rX2j8kP6F+huehf/ejPNB2s3P9jzd875vUt7sezH4xkNvJO0KMf+0F16C7wX6WVA/iPk5GPgJUDtXWu21+ufT/yX4026uHX0J/O8K+d/rd+/5u5/4qTcvxlX4X+P+TH038L9tfC7yp/K90ndXyleoH8R+9BEwN/Mnlf7dlN9jHa9X/8wP83dU4vewP0WN0P3XPD7m7xnDuGxA3x8gn+9n+itfAC6PBFD9a/+ehVzav7WHD0QfvbRjgP+23wfKiX0f0Q8fOlu1m3tuD/m/huPljKMr4PwB/0LwzUX+Jd6f9W8K+Tcsp+z7TVbk8Rzj/SY2/JkPo73+4bR7g3WXVn9c9sHxvl+BP5y/J792XNbrWOh8wzzoT//1nG+Mv4rB+X809e29tyKXfvWX0Z/+ofMpD4bvTuhHvwXfLcL+C+H9z31P/5JhnEv3AhuxnxjXs8t7qf4J3q/gs0sAoqby+0jK5neagX7eYJ3MpPwIfPr/zkZ+/YD9viXXTwt50vkdQf/heCzjtLz/92e/6wOcyvjEpf2LrIubwETQ6QE8BLrVwCbALfo/Qr+P9nL4/xP+hqH/gvIJ3tKuX+aX87ET8r7i/QV81dD3IeimoX4W8jRj3q5lPpei3SL4ugHe+tArQ/8J6OUL4Pe0ewN68YzXpd8C8Hq+7kO9/niPuO9d9f4NP9sY/7PeH4wf1N4aCWA4/rQM8/ZvxvVVyjm0f4HvVcYzofsj/H9KvX71+tnrXz8WudZAdzh4Bnh+Y76u5Fyyynwd6Ml4Vf1Iwv4jf8BHQcrGm8SBvu/6F5BvK+vhgvk3wGfclnlS9P8znk+76B7fiyjfRm79CvUz1L9wCuu+E+Ww/7H+CfolDDAPBe03w29efv8L+JTxT4U+9RuO5TqAv4LQK6lfMeOVTf965lMO5vfFhM/3j4Yv/UhLgm8D/XtzPo1Gn9o7/jY+FvnMf2Y+tAXmowh9/z0PTIXup5yPS8V+nk/l1K8hNnidX7n0w4LfOc6/SACnI98y5K3ruyPtbqFf7yepnD/Q+RH5t7Kur8LfFsrfQt94ymPw8R6/ax/4h99/NG7Q94OQ/XMq63wKUHvoEebfU+PkwON7Rj/zlgD7A73vzYG+dqPL+u8YX8l+UAm9VwH63trVd2HG+2vuEdHw/6pxNeivh/FJtDffmfnPdlD+xvcEvucVgeF8VsZjzTCvifMtEsAr7C9XgU0ZJ+Mv97Lf7AeaR2Q64+T+2Vl/IPDepD6v78v83kb7MPLN9B4VGvdj2mto777he7jxWbcoGxcxg/aDaJ+T/eVf+F9OeYfxp8ibCDic/q2QpxHnR/MpXoWecVBTGIcl8G9+sMG+h6PvjeDTP6oV8vl+Yv6bxtT7nqLd1vwiSeHf/CINmG9X2BdWes9ifv3J7xnANzXsj2m8OnROaz+i/0PWf3X22W+Z72ugfwD5tDfW0s5NfVftS4zHUeiYP2EB8zUD8/c47ar6XgTdREDtXS/oR4C+fa8L32M8n+tX5Tnd87nxF404H/Rg/Zt/rkUAouZC9xbl1iH/tSHIvZB2nu+ugcf8F3loZ/6LB8Z7a1eH/xLI4/vAAvHS/0/j+RmPfPT7R/8A8Gs/i0X/cP7Jf6j3/Tq38Tjoz/fdcH65wfTvzvzT/68b5XrIGwv5XI+uzx2UdzGfl4J3sf7e0Pf+miF0v/b+2p/2+ovpP1aR/j3Qz03GtTtl7YPFOL+aN3Ym+2t/5Lkc8j/0PS2accgH/XzI1dB1Dr9xwPsyZeMQljA+Xfge5GKfKQk/cZQHfJ4PEvmejvy+G50P+UnpH3WW353P5j3pFIrf+ZDf0zvP4G8dfD3gfpKc+5lx1uan8P3T+4/3odXOb+2mofe2MX6vgK+yD7SEf88F2m214+7V/wu5zMdmvjb9B7J4/qPdy9QPtD3zQX/W/87D3k9D+SdGhPJPeH4rif7awJ/nt7XoT7vHGdo9YH9tybzcj17zsh6ugN/vZybG3/eLMZyvtEdqp9Qu6f1gIXL5rj+b/Xwu5fjM69b0M1/aHfq31X/c9RzKX+P7gP7QKYxroZwNeg/A57lFf6Cw/+DL8LXV/B3ozXjgiuA5gPyt6T/T+Dp+TxjyL1kMXv1MnDcR5td2422g9wD6mbRXQ7ek3x36mx9zL7+bN9D4j3A+tI3oM4F+vuh/Cet+LGXzHJqf0PgS8ZunrLHxcMy32vS7hDzmZTNPWwLaq6fVnHuM/0lLf/MRnUdfy313gP5Q+P+M/VH/2Sasp6vwk5n6iN9v6JWm/2Tk+x28h6E/lXrzd5ivw/wdmyi31x5GvyTmBYH/cP5s8yk8iwTQ/C3zQ3lczN9yHL3tpP158BtftwZ5CnB+zmc+KvT/X7yW50rjnOCnMN+TK8hRhHIz6BXRLxW+0mpfhr8c6M84hnD8wvgQvvusR/1DzIf7v/yYvuL3KUDj9yrpjwu+ZsCWzNMM8JsA/r6DvxzGm5k/EPn0l/Q+3Uf/QP0bjavX3kP/zObTYf+bBjQO4CHwFfOleE+nv/Fh+sebhy4R49yE3/MyXj/Z3nwK6OMz34WRexTjUIXvpvF2xuEl1T9I/2XzHdB/LPtPJ84Hnc3vDSxnPhX66/erH7D+v1Mpv0G7It5fae/7iP7aYf+UaOZzMu3Mxomjn5P83gF+lvK7+Xk9J5hX0nyTx2lnPKvxrca7Pva9lfFcAizGPa4b+pnh/UO/JPAsRA7Xi+dT3+kf6N/OuLn/mY9N+7T+na1Dfp7aFzx/TvVdDVhM/ybofWA8Bfy0od7vUU7fJyIBdP/S/+YEcsUA30/I5/n8EXybx8Dz+TR+HwXeEcZL/g/5m7Gfuf83Z73eZt7VBk8K9FMmAP/lkYzG3mU+pono7W/jN42z9P2J809D4zYo99PeZDyt8RvmEUR/5q/Tb8zvUHba/Uq98W/bwGscqPk3WgPNv1HM841+MOA134fvteYP7BmywzZi/fk98T7ofdHv50H2h9bAcPya8X36JbaB3qxQfpdo8JvnxfhW32euA9uZT4H5o7+wfu36EZsfYgX0t9Hfe4v5MdW7+QMdD/33NnA+i3C+f2KeHO2tzI8u+r2yvq94/pNP2s80vgv5v2K+xQX/ab7jp4C94ecmcrhffx06vycHr+co86dqB1sA9DzwkfcB8Hpu9Tzm+cv4j2rUGwdi/Mdt5B5v/Cz9PT+WYN6bF8w49L7ovzT6NM9fvwBEvW2eOPbNctCNwzxvCX/as/5Xnp9wPhzfx25Q/y5l3+d8r/N9biLngcPM35bsI8npX0D7RCSAxpkN0z5svgDqjTOu7/dSuxR0m1JOqD2L+8zryNFIOzr42jJ/jNd7Qrkt+hrKvpQcvaUEjqbefD4r2KdGhfL9VKC8g/r6QONWd3E+0t9GO5L24iXobwvzwvfHuJ6/GV/93Xcbv+f+g/6a0N//g/MZ9IrCTxHzksHPXfS7lPFaBd6nofxsngfN81DPPAvaRdnPS9O/KPhfoz6cL8I8EuciAYzP+BnHF5ey8XtvMH/0700L/dHGDzJ+JdFjCeQxL5n53M3vbh7FauhzJnLN1y+EdhPRr/pRL+pphu9r0M0I34tob/4z89Ga/yVsfzS+xria1UDjPJuBdzF6vYJc5scPv99WQc+1mT/mX4rv/uf7I/KXYP5eQ/9jQ/ZwvyfKfQp65cCj/4J+L81D/guxWJcxgWF//hXM78bMk9+oTwx+76fm3YwZup96X9B+6XnJ/4+xCv6bA/tQf9/3f8arE3jXub+pP8a9mv65tNN+9AX8XmB8LoJvM3TMh6t/hvlytX+PZ///mvq44Mnme6LfM/Ra0Xsr/SfBr3GkjdC78aOr4GcscBywK/0XaG/TXxh+djG/zccy1PgIxuNf/R+Y/6mYN/cp6+cziHJa84dR7oe8w8Dne1xS/dORPx77RVxgUmBz5CuCfhw3/9+Q+4P+JOHvl/ut+5f7VTP0/wx9nPA8hx70A7hGf89rxpPEB3p+M49E30gAw/ffh+C/i/wFGY9Oxql77qfePNjavztBXz+q5LT/wPcGvocdGHfjAY0vO+n7G+2ND2vl/Ka+ue+/1I/Xn9F4RPrf1h6DvC/TXn+ZntQ/Rf407Iv36d9eewT9fU/zfqedRPvICeZVWs6hrqeK7Gstof/wf/g/zYS99eZ7pDzYcyF6dR1+w+8NfR9FrzX0Y6JsPqkK4O2GXOa/+QN9DNefAHn9vxmO72LPF76HI/9m1udd7TvotSztOrA+Outvh/7c/y8Y30c/84fvhn4r76fsb4epf4i+tzH/WzB+bdBLff/PCnj0P1PvjoP6j0ZffVl3SSlvon9F+NM/YCnymy/PvKCdjIMGmq8yAfcP88l3kV/jX8E/JRSnbnz6Av3k4dv79n3Kxk+8wr5mHIXxE353jU8dGIpP/Yj9bAX6zc33ZjrjE0O7nPEe4B8Kft+/9JPfDx/632+Evzbgb05////XLOS/4buT7yfQ1x/e/Vl/efMTNae/31nzIWZ1HrK/6j9hHj/ztLZD/jmMi/kWR0Pffbs4fHsfyc54mhdkML//YFwY/fNDN6H3FOhkY/zMd7IEeeaaLxd6Q/g9vnGXyGs++drgq2WeI/0ljb+FTgf95tFPI/DmBV9q8D9jHNehP8/NSenv+dn/g6T/6SX6p4Ge8+sp8rlfPZAf9yfu1eb9vgz0/wP6PtIXPDlC7yM7HX/jhuD3NPjP+P+1QnlRYyDfO/Q/TT/Xm+trG/XHKffW3qe/Gvv+Eu7J5YEfoBf/f53+j2H/It/nHB/f6Xyfq4L8F323930fOY4y7k/Af4D1UcX9w/sT/SvQvwPtf4HP7fx+yfM0/c2fNlE/QsqVzf/AfJjJvtGfcg/tzKHz/FLGISHyJ0b+J7TvBJ5tyPeYdbOU/q2BMX1/MD+QcWCMSyHated7kML8Jdr3/P8C4H+f/b8n0PP5i9z3NxtfZz5Q+O0Kv1mBablPZPZ+o/0Lfo0/cP6H836Yp/gifN5Drm+hp502Cf3+1p+K78we+BzhfR97g/9HzXgt47NKAf/L1w9980P8zP5+l3tgJ/N8uN7hL5LteTnk33gq45KMUzI+aRnjcoR2E5gffqe1z+in0Ne8idC5yfjcYN2kcL+HvvegJODro/0Hfsz/Wdv7EXRyhvLnxGM/N4+O+XP0t9MfWX88/e/8vwTGm+nnanyA+YlKQXcu+u2t/1/o/c73vLTguQF/PcyTwDgN8X4GfvPCNoCfCugjbM/Uzun/FzuCfp23vZgPzeBvCPhT0t44xzW+R1C+ilzm29Vf1nxI2nXj6N/C+CUyLigSwFy01/9zLPy9Av5xlL1f6Xdj3umw/8099Br2z/X9tw/fb+OkywKzUn+f+rHswzH9zkPf84LnB/dfzw/erxx350Fbz+fQGwZ8DXrGy5TXP4bxPYN+9AeI6L9E/UZ+36f/re/H+l1C3/wejdFnI2BS5MzL+KZm/pv/OBVl8x9Pp/0L7E+veg+Hz8no57//Kwc/xgUNpH8a9rV5rG/jQv1/Rf7/oqbQWaG/BetlAnqrRPlz5s9D9JrS/0tBuRj6cv+tj77dd9uB/2fqP4e+/h57wV+J/bkFeukViv/0/FEHPeRhHNajX/P5xeF38/q1N06C/v7fTf8Pp/9/03iYnsan+Z5kfAL81GKdHWb+no2Aj/06J+Ws6hk+CsBXefNBUN+d8nzjM9DbJ56nkD/sD6ufbGXaf8X4Gw+ov0A99NsT/tYan2S8L/KZ1107jXaZgdqX9BvX3x09+L5rfriJfEfNE2d+uBvg7wX/5ud8gPzmazR/42L46EW99gPtBWF7nH5f19DHMMbX/5dt/gnzTmin9v+Fm8/sv/xm9Nd/z/gZ/UIz629g/hjWm3EaxmdMQH+fsJ4GA/1/4f5/cN8H/D8oB8Dj+8Bq5t8G9ulNwI+R9/8A1D9rsHicdd159NfT9j/wFErdKIk0+VAZklkpylCZSiUZG5AilSk0KSIuukWGTClDhhCZSmSKipJEZbwoUQhFydSN31q/9+P5R6+1vp9/9jrvc86ezj7Da5999qf/TuX+/9+cuiV4Vb0SHLlrCW6qWoL/gO/9qwS3qFOCB2h/Tf0SPB++z3crwS8ql2An/TqCv+9SggPRPQye1bVKcFCjElxUBT39Nirvil53/b5tUIKv7Iiv3Utwm9olOB2/l+1cgtW0v7F8CVaqUILP4+s99W3I3Qye39EdC/+YGiX4wA4l2AD8ix4ab12CrauX4En4eLasBC8k77nkuJXe/gTvhW8eOveAdeBpRn/NtF/q950aluBW8O8P/3R0mxjfR41Pb3xOVt6WnJdtV4L1wdYVS/Ac+qmt/Sp8PFdNf/jrbFOC+xm/6vR2GziKvj8CH9d/sfoJ+G1BnsuMw3Xs45TtS3Cd31vQc3/8PUH+Bdofh893ldsYp2fQv40en0ZvqvZvqq/KfiZod7tyFfJ20r4b/g9TP5D+hxifEfo3Zl9r6PUh8vxMnkO2KsFm4Cz2Xw0/DY3TYeCH5J1G/iPMhy9qlmBHMHqYb1wPQf8H41kL/lHGry/+Ryg/TL7G8CwtIx9569DvXOPeitxvKQ/W/zryjyVvregVbGU8XyPfluzjYPqugf9m8O+gPAk/U/z+ofJcckzF33no/kSOz+hvJf21Vd8UP4drV17/EeT9Svuh5mcn8h3IvvrrV1Zvc3zP4HcJvd6g/K7+Q6xPS8BG1qlPjU9/+LNeX43f2N8Uci9Frzt+l6p/YosSnExPE/Sfqf1eft/SfIhdnk3+57YtwT7G9dzsD+R92Pi2VF6pvim+ToFvGXluYd87wr/UuP+bfleQdzf1XbfbnN7p5Jup363Go4J19D1wvnF4UflC7aqYH1fSz3fo3UcPNeG9U31V8+tLctys//3a9dL/FP37GqcHyXOifvvifzD7m1h/c/yn1duczv2Z3/T7L3pYqNwbvY/YzcH6PafcxPiW035/7W81/yuVleBy+hyA/nB4erOHE8h3Kf6/0W8FOfdQf3Lwa3cQ/h/YsgRnWn/uJPec2Lf2V8OX+XO78T/DvDkVPAXMueIgdKvqv0r/9/D/hXX1a/XH4uMn+nnb/HiTXN2Ua2g/SbkxvZ6p3Jee2uCjE7muNL5PkP8j7bbFVyNy3cS+TtR+N/2zX2WfOkS5Fv6aandX5q/5WZUePrF+foz/lezrLXbbAfwQP//A31X/M5Q36v8N/k/0+zx81CbfFPV30sNa4z2H/qv7vS56v8LzJPkHkP9y7W6DbzT8lcg3AH9N2fP77OdE/cbBf6D+NfR/mj7WsYNfwB+1P0j7XvA3AX+k5574+53cf4ALyXcU+j20W4qv88hXz35fjd2+a7/7EZ5X9BuO3iz4tkg9e10A71LzdW/0b9K+ofGaC9+e6t9VrkXO/UIHvlfYw0x2Mlb5Nfj20r82Ogegvw/7q09fw+hzX+23gH9f4/23/hvATeonmFfz/V7d/ncs/OvQuww/zctK8AX6baR+BfoZn6uM/yrn3mHgleDz5uFG+9Vf4J/gQ+QaD/9F9FYPn2vwd6DydO1ezL6Gv8fLkS/nI+PwqHaj6efRzN+Mj/4fqt9PfXt0niPnvPDPznY3P85RX5ledqHvvvA/g/5C5S+0X4tePfprqX8rMOvT09lf0T/avn6CcWqt/2z1+Z7LODVE71rjcQOY9bI2PKPQe83v+X77Wf8W9PE8vLcYj8no/6V+kPY/azdH/aPm1yPgY2Az82cAuu3p6zX4Khifjuz9FXi7ov+Y/s/4PefHnCcvh29//bdDZ3DsDP769PAye6uivoP+3zjX9EY359Pe+vVnN1/T24+Zn/Dfg5+b6XkXeGurf9TvneGZjM+38JPvz23ImfP0HWUleIX1dih4HT63pZ/nzf+N5Gpi/p+Y77+cf+HLuPbDXxl655CjEb5OUv+6804Z+2yKXkf2Vt9499RvIjmG6X9a1kVwiPWxBX5H0stq+q2bfRT/f9LPdOUHyf+VcgPztqfz3WD7VSP6ecp+0Vn9K+j0KivB6+GLvyXz5zjynOf315VrWR/Ogn+e/bq6flW0vzbrG/77k/d+8v3Avi5WznmqP3zzyNc652vjNo1+v0C/h/IJxq8yuR7T/w79J6rfCT+L4RtFLw/io5Zyf/xdVKkE18D3b/twHePbT/335O+rfJv+57GPltaxbvjtrn7LfNcah/7s6kb8fYvv3+LHof8e5Lwe32PVr1Y+Fv5q5M331d3wnWicmih3U99E+//Rb1PfPw/nHGZ88n30oPXiM3KM0H6Z/vuYtzlXLgaH4O/2EijXBlwO3kz+cTmfoHcFfk83Hk+w/4vgm2F8vta/BnlOpJct2OF87T8tnI9XaJ/z8THwLyT3c/g5l3x9neevZjeN4BkdPxF7+IfcT8bu8J995zP9cj7uCf8n+T7E7134WwX/3talWfDWNA4z4O+Gr93ppTU7PJA+1pDnH3RfR2+A/uXZyUpwIvrj8be19TbfjXsq53uysXVvqXXvErAC+h/j61NwGn67m1+T0PsB/f/oN1r9wHxv0scj2Qfif2AvQ8k3Ap4VyrdYH+egO0X/KvpPg38nerqBPcf/9DD7XxL/gfKf2i8sfL/sCOb75X38XZF1jLxvGu957OdtcD74pfHeA9/f0MvP7PRx/dvhZ7T6bcj7Fr76KJdnR9fCV07/HfGzQvtD852f/dr61jp+9LISjP/4YPY0NushPD/R79Pw7wDfRPU7Gof4H0bbh+N/iD9iAL3XZ1d/kffQrA/wH5H5o99G9rvEfFgM7pXvMf3PQW8W/lYqnwnfHHbbkl19UFjfDrSeLyHPsrISfCzzFX/r6W8h2BV/dyt3gP9j/JdnPxfkvAtvFfa5iH0ez74WqI9/vDz6L6L/HbzxR/2t/enqL9WvOj5eJd87yjujtwV65ehvA/v4FVxOH1uoP9j4Zp8r7m9f46ci+hmffD9fDu9lYEf9K9P3vvo9YPxex95h+r/FP7AXvc0hV9bpbeIvVl9X+x/wcSn+ptJT9tG28HcmR+ZT5tezxu8D+NbQY/z/12m/xvw80rzfXnl3eBdo31b76+hxrfHobV40Jv8UfF6l/bjtN/+9Brx98X9N/HL4Owieq+Nvxc9g9Seo70y+pvTzsfGIHY5QPxK/Z9LbJej1Yx9f6N+PPFlPMj+OzPdHzp/gUeitZg9T9b8Qf/3wn/0z++Yo/bJ/7kcvD+J7rf7z9T+94P/6OHZGH9X1/xT+udoNQudS9Y30a62+vvqnreet9M+6/jH6i9nTFbnXI+9eOR/7fT1+jrJerVEffVai/8r4ib7XwJfz7BHoxX/xvfVwBD6vhucQ7d+D/wjjVIMcf+g/j9zb5D4Wn5WVq8EzVf+m5K4f/xh+F8F7MfgP/U20H6wHL7ZfjM49hf5bZd+B/7T4Ycj3MfgheDT6/7VvHA5/E/p5ghxbO/9Uil9WOfdrp5KrfO7JCvcZ8dt39nv89v2y/uHnevJ0xsfu9PsUeoNybrIetMJf/Ba9rC/xXzwQfdrP9lY+xvp9If7WKp8K3ypwgPpm+HnE+tkAvjbatTH/GpCjtfKH+N8P3brk/Yscd9P/q/DEXxX/1VTlrsY79+Fd8HMu/B85v98ATst3mP4D6WsCO3yRPuewj2fNp/fpbbrynYmTMO7jjF9/8qxVLvq/nlSOH+xI9llR+0f1vxV/v5h3tfTP+rA3/VQm7xvkjf/1cfq83f4zQfl0fA8kXyvyTkX3NPzM0O4d4/8l+W/BZ76DFuGvS+5VlDeqv8H+MQt8HXwe/wvpL+e9VTkfsa8uxjv7Umfl7Fdvsas79GuS87n6F3235L50N98vo/B3Wb6byVVGf53R76j8svbFe7yGub/XP+eJeeRrDn/8U/FXNSrcD+deq3jftcz4daG3E9Bpa7yn6f8LvnKfehp6PXMfQP6L2XuNQv07O23e7lT0GyvXoY/P4b8G/y2Vx6lvBH/TxHfEP67dPuiuxH/upWqxu3nky/kj9xLt1Q/FVyX2/Ar9FM8/Od/0SlxN7Cl+PvXvaD+QnA8mLkn91+Zr1XzHWkcb43seOXIen0Leb82v662HPfXvBX5gnH9GP37o48j3fs4z2tfH1yXm13DynOl89xw9fUu+B9F/DJ3z4D2Nfk/L/GNXPcjZj/3mfN0P/++hk3GuQD9b4m+o9WEL5afQf1G/nE8uhX8H9Jfj+1j0cj7JfWw3fD2R+W08n4a/F3srr/1viXehvzvYx1fWsUn0Mzz+d+O5B/gz/k8oK8HE79yHvxOM+0rl3D/k3iH3ENvg59Cse8rl9T8Rf0foPz12i9618KyzvnSjx9vQ/QR/y+D7hV56wrcwfmD78kL7XxN4mhqvY7W/MPEz2T/g3x//OXd/oPwRerPpdQD4ZvRM3tfhHZo4KeP2EDhL/eXwx79+UuJV2F/m2Y3kyvzqQD/TjXNl9vl94iPQHa/ci/72yv0B+lnfs94nPqMS/f2HPC21Pwc/7djbGcrt4Tld/9vtTztmncx5Gv1b0Mt9yNvk/0B9H/Tn4vsr9I+K/4P9f4CPzmD8IDfDn/i1djmHsv/X0WuM/7PRqYn/PvbTmc5Z1fT/RP1V7ChxLOusT7Pwt9b4TGM3g5QvJ+8H+PuDHS7y+7MZH+Oae6Wf6eNt68dg/PQi31na5R741RIoV1+7+KHPMp7HKI8hz2R8XE4/OZ9Wos9/6Osn+JtbN1qAh4CH4a8C+W7Xvhb9VqDvevS6lfo7tU/80eG5Dy3E912kf0P8vkO+J/U/nv7a4jv3M3W1vwu93+DrSh+vqj9L/8T37Z74Bf1uyv4E/zu5R6XHkfSXe9vrwNzn5h5qSdZTdGfk/JH7cXbzLD20RGckeXJejL9zoPZ19f8ifmp4i+eXK+0v5+f8rnyG9jP8PqDgn29MP4dbTz9g9++Cf5J/qfp2+B9v/n8G/645b+a8Gr8N/b7Enroqv6w8Cf2H7aePgCvpc772FZ1/9wV72AdWlZXgVO2/I+dMfK+Dfyt898n+lftp4xz/w+7qt45fmH5bWZ8esy4tgi/xI3XxXa8QZ5z44vaF+9P76f9o/J2Fn/XwPcUOFpPjUfWv5f5T/dn424899gVzP5f7uovZZXl2sz7rSOTEb/yL8TfGv9ixBMrdh4/J5N8+8QHwH0LOqcZhaCE+djh6iZPN/cQd2X/tkwvZW/a/a9hzG/3uYn9Pwz/I7wvQ3RMfO9PvufD3AhMn/jv8uR980DqW+8Gu5Pwufld62ROf49CJ/6gp/eSea7/c76i/JXFy6ssb37MS/4f/y53v+uvfV/+i3zTx8T3Mp+7gu/az0fjvoH/uk3ZlR1vi4wfjcxy9D1Z+EZ0u9PEleWfQV/Rzn/XiBna1BJ5h+Bur/S7wnAz+qn4X37M3m9+Jc16nviX+xyReLfcD6mewjwn0MyPnQPaWeL+5+sW/8Ev4NZ7xI3djX7kfSfzG4sSd4jfxHGOM12jwL/PpeHJ8UQLlftf/buUm6Delx9xb5Jx1ovHJu5bsK4nXz/5SFZ2tjVdNfC/Qf4P15r/w7ACej27uoxI/lXiqxL+30T/f46sTn41eB+XPjcd28O+Bv09yP4efS/CX88Eg8/FycK7+0/DzJvv6KnF16N2UOHT4E5f7Xe6b9D/aOH2P/5wH1uE/55tDtEuc9ATy5146/pg28aeq3xa93IfmvnQoffyjnLin5uyxQ+IXrC/nmL89wc/pa7X6rENZdz7W/xfzff/cm4P74ee2+NXzvgi/OS/OJN8b8F4Q/55+L7OPXvrNMX/PLCvBcsZhMX0mfr8F/Afi4wT6Ol/5E+V96OdJv/+TOMm8b7IePYDPHs5HVyROkT4b4OMSfG2Cb7j+w/IOLOsceXP+vwbeK8Gr4auofd4P7Ar/qfjfVbvMs+uNczv2PTz30uofz70MfO38nvdjh+H71LwfMe5v2H+W0O9Z6vskjhNfH8P3sPrs+/3hz/6f+95frXcbwIuN+3c5n9B7BXh6KJ+H/1nsI+8SKiXeD/19lMfh79fENyU+w7hsBbazjv4T/4/x/Qi+n8nbmB73hK95zjfsaTl5P3FuOy/vjBLXrv87+M46MSbfgehtTe9HkjN+4Fu174TebOV831+of84n8ZfF3mPf/Qr3QlXJczz7STxDPfgT7zAj9k0f9XLuxl/e9820ntTMvV1ZCeY83kB9Q3ADeqP0f035R3I1yP5Z8P/H3x///xfqe9Pv2rxPo8cttN8u/uT4aXM+ZB8NtFug/Bj6+X5uTC+H6t8p/pD4Uaxn1dh3s8QTG4/Y4/fkfAg/I/C/Xvv7nRMeANeicwh+ztG+qL9TrR9ztH8o8w6/gxL/l+8/8r+S+BL4i/71vL+Kf/FS69hI/MXPuNq+eltZCW6nvL/+gwtx49eAx2qfeITEKXRVvlL9WfgflvvoxMmQv7t2dQv+iNyPddE/38U5R2+Pv5bkaQUeBjY0vleyr7yL6ca+VqF3rPnb1Pjn/nz7rB/0F3/lNdahG9F/Dr62xmssep2Nd5NC/Fgt6+MO6CSuPPHkiTe/Cb4W8K/OOwr8jMdPR+t/vtM7Kef7PO9uL0VvE3veOe89E4+X70F4L8k7MOtFM/rpU4gvWGg8vtB/gfH6L/3FXzsw6wJ+vobnaHafd1V5b5J3DPmuyPdE4jTzfXBD4ptzr+o8mPcwHYzHbOO8LO+V2NdlqU/8E/wf4X88fSauYxV6uZ/dwrjunPeVicc0/jcm/gLePfU7PfZLv1/7LpgLxo/8Q/yHeWcC3zryjdX/KvXxLyee+9zgM/+r4qOB+rz7yXufvAfqjP5Y8hxdAuX+hf4B6ovnvZwDvyf/Ufon3jJxmL/rP9x3z2vgA2D8wOez9765v8l7CuPTm37+i27iT3ur344+1pHv3QI/71kvqud9RtaTRpvzPwbfm+CfCf//1FdH5w528BD5c+89OXGdhfPsT+btyMSpaPeb+u/hPzT3JjkPotNceRa+BtTdvP9E/X+iz/uUh6AT//Qz8SvlPtj8WKR9X/i7kHsYmPdouVdaC3bQ/kb9W+Hz1HwPqb/AuWKt+dkcXzck3ox91zNeFayHTY3Pj+bnX8ZthPbTcz7I+xjlnFNuJN+n+GpViO+/XXkcf+Ie7HIi+RLPUka+4v35u/Ef4+/IxOMrJ37rdfrIu7AZ4JmJf8Ff3t0U3+Pc5DxcJecW9WWJn1fOvXpz+sn7wb7Ws/6JCyXnzvwYs3PeQf+W3CNn/uDvhrzrQmcY+mOMyynODQeyl6+Sn4G+DjR/PoqfzPgcT9+v0Es75cllJTjS+BT9EN1jp/h6CV9vJR+I8kvs6QZ83KC8m/5bwj+I3IvxUROdxMNM9vt4eJaT7yP6zvfHQuvxqMQfOR+0Ifc1fl9Ev+XJ9V7encS/kfgJ/CZuM+tuJ3i2sD7nHdYc7fMe62nzrgHYMn4l8EN29Tj+Dsq7x8TH+r1T/FLoX5/7hLxfyjuQ3COrX2y/TtzoEuXn0c/3b753LyTn0fTTKflM4HscnnLaF+MzEpfxBv7vx99F8YPkflu7HdC/DZ522h1YVoIvIVfMD9MRPwNzf6T9udpvlf2J3vOO90b2kvPLC7nv1n82/g7H35vs82zwZXAH9fs6n/yR7wrjf4v6WfGPwFuRfFvRz6cF/+aYwnu1ZdafPvj7Uvl98j8X/4n6GoX4yk/x0xn91uz1gfjT6OPoxFmhey/9XRF/r/Z5z5/zxSLrzibrbnmwCvnjv43fNu9z8v4u++U0djA6+y26q/VP3o34+4YWvmdyr3pr9uOyErycvefdRlXtdiBP8i0kP8LL1ovkX0hemMyTu7WbZv2MHWW9W5Q4afp7y3i9lO/ivL/E/y343TLvR/I+V/0w41fV77/TX+ITj8o9I3k/yP1+4g2Mz5/4nGt8JhXuwxKX8rl2+xif5JU4Fcw9/Tj18Tccn3cb5Mn73FHm3zTnsNHk2Ar/yaeU+MzkW0p+pVH4HYLfvLfZqL4ue15XOCePSr4f/OxBH3mPvFXuh9lXW/b5p/Ivmc/20w3xg9LndurvSf4n+lgdOZQ708uR+M+7p3XKc827GvRzifncCp7sd9n/sh8elvhX41cvcaO5N4P/U/rNueFCMO8f4/9ZSp/5fugU/zi5kyehYiFfwozsq/rdmfxBuV+Cf338MuCx6q9U/yw8bRIXi792zq/DEnemvFL/TfR/uPGbopz324vYxfvxe8SfoP4M+v5du6XJQ4WPZ9Gbgd5FmUfsJ9+n+R7N92nyF2zEzziwHD73x89S478Mna/AwTm/WY+eop8m+D4QP3lfnfwgeWed99UHO18cBI4ib95t5756Grx5b5r3pc3gX6l+nfHdFf1j2Ef8FLvQz6DEb9L3AfTbHZ8XGN9l9DcJ7AnmHLM3eTbh95nERaP/78TT4q8D+qfRf/KuxT870TyblPwt9DIo56Tcr2lfD/28o8190hHxf8Rvn+8A5XvIn3xFy8E7rGcN831Ff/FvvJDvK/yPR+fo+KOMS8a3D34uLivBm8Gq2t1nfGM3L6CT9XNjvj9jD7nnVD+WPSbv1nVZn7RP/qbkT3peOfGa1+Ze3O+Tkp+Kfr9Cvx18LeKvV3+2cTnA74vpoxn+ysg31njukDx09NsD/nv0W1NYr55XTr6I27S7m/5/zPeV+sp534G/8cZrin712dd05VXmy0HsdgM58t4r/rKbco+SeZX9BP+JP3sDHwtyP5L4RPi/pcejtVuf9/XaPQ3fOfkeVk587N7ava9/OfLlfXLeJQ9hf2Phz3u8xIG0x9819JE43ZGxB/JPMQ67KL+Brzfh32A8fwJ/BMerj3/t6viR8BH/2kXGK/6g/c2/Xuwn6/A8/fPOp4H6xH8k7qOYH/Fp/S/V/i508n5vTtZ1fN2jXUX1i3P+8vtT7OZt5Zfp/TVyz877F3TiFzscP/GXnU/+9olHM2+L+9sx5uVB+HuGPG+TN/kCkj8g8XrJHzA8743V98x7EfzHLxU/VdG/sgJfieP7SjnxFnX0j51f4feRhe+rO5IvAUx8UfLRJT9d8tV1oP//2W8O1e439tsl373oF89P8b8k7v5W+kw8fuLwl9u/827iq8L7ifa5b8PvEnocg79O2t8KPpc8jOSvbHzjn6qPj3PwX8znkzw/eT+f+5NN4GPw5/5kX/1b4esH/fOe62/+osSFJU4s62+Z9Tv5Mv5mH6ejn/wZyZtxfSF/Rg304o+Nn/YE9bPZywR0FiS/ivlQL/eV+udd4UL83ej3rD9fFuJ7toP3vnx/Kj9cVoK3liMPmHee8VfOzn0BfS2In9F4d1buqD7n1MPxs1H9RniSLy350ZIfL/E2icPZTzlxVV1j3/hKfFU19Yn3jV+0t/Ib+mUdPCl5kPT/Dr3cH3+M33xPbJN4iEJ89St5/x7/Ibiz9tXxmbw7q7XP+7Pk4WliPSy+031C/9Hs422wgv2sTfzghfutfM/3h38F+tvG/wj/9LxXSl4u+hme+I3kY0o+SnY/xXo+Vv29hfU27VPfMes0eU4lR9b/efSVuIzk2xyrfeIj8652pvaZD/PiP6eHI8BL1Ce/2BFg8ovVxtfx9qWd4Bmh/rrksUDvQ7/Hf5e8z7/nvXn8KHnvRr4LtD+bXnNftzzxw/g92zkjeeT6JZ+G748a9HqJ8X8B/vP16w8eaXzep8cG1sW8a9uUe6ack8O/8n7oH2P9aQPf3ei1VW6P/7w7XUfO3vDHv7MXfusnvo8cyb9XfD+6KfqJ/7fw/vsQeB/Qf0oJlPs68xh8Rrvcl1TU/gx6HaBcjjxVrIsXW7/bJk9KGbzwnY6P5M+qrH/d3C+xoz8SH5u44/glyXcnfR+uPnksk79yd/272hcTV5c4u+Q3bKj/tX4v5qk6OfH6ef+ZOBH63U6/vIu71P4Z/+4PhXXh68L6kHf7yc+ySfvK8HfNeS5+y4wTfR6q/nP9j8t5EJ0r1Ofesfg+phg/dd5Om8s7Bt6bwCPZX+LfTrMefWb8Ev+V+5cy694byUME/pvcO6B3AbmeRff63F+zp2FgF/zvlfisxC/h763EgWnXPO/J4E0+t7xfbpb3Kn7PPpX3d83xfxz7Tl7Yh+D/hvw5xxbPr98V4mfG590N/SQe5cGs0+qXgBv8fjW5jsg9C/6ewM/nidfNfQz5jmW/xe//VfrvlHO5fnnH+qr291v/Ts73s3Kt/+N8mHPhuvhnC+8v6inPhT/xiclXnO+NKfirgb8+6GecNtBPvpuTj/Ch+NHZR+ZT5lfmW/JjfJ14ityTwpfzWM73ua+Ln21H+O9X/yd5bka/XOKf4E/egLrW8y74H5vvLPgPSL5e+PNuKnGu36H3o/F9JPEWiQPP++G890heCXSSpz756ZvbPw/SPvti8jd8z27zrmyC/rHfxFskv03ih5N/P/dJz5SV4Iv0PCTxH3l/i882hfe3vRI/Rb5H8q5b/2vxd1X8FNaXO/CZfSn7UU/8PaL/fPznnUbygN2GTt4bPkL/fzsn5H1G8T1V4jrzfiz558agmzx0yT+X9Whw8oejv9z4nIyv7vDGXxD/QM3Eg8X/RM7d4Ene2eShnUGeieq7531m8jIZj6MS3w5fdXx/kHwT+Mn/F8j/E8j6nvymC5w/dkXvLHpI/ON9xrtT8jOB7ZMfx/jWp+eLlN8k71ByTcr3kX7Jf5K8ABXIUYyHfJj+8h67tvHY2nhORG9XcrSlr/hPK9Nb/m9B8uvmnWPm3zeFOK/Ed61IfAFYjKesh37i4orxcjmfJD9S4gDa4u96472te4cD9NuQeHp0JhTi6BPPOIk+Xte+MTvI/28YlfdvefeknPv0ieblhEIc3Qb1X9nXV4AHV98c/8voD8JX/Bgt816ffLmPi/+qmnLF+Ov1y/vBQ+h/uXHZtxDPsyf6if/Y3bj0zP9noN/sn/n+Tj6I8fBdTC/HxG8MrtE/fsdz8Vt8v5O8oS/je3nym2k/G70O9Jp9ewP8Ozu/xM8XfUVPOc/uEr9WwX56mV95p5z74CdzH+v3o+Cto/2TuWfNeNPHJPK+kf3T+rw2/mF4479pl3U/+ZLYybbJD5j3F/ST+699y0qwtvq8C8g5N+8DuvMHjso+rV9N9F9N3IT2/eg77yGWWBfGW+f7GO98b73FnofkXg9M/oYu9Jn3dHmfeC75ks8+ee73pMfdtf/cfJtA/58pn5h8NwX/UvyLy+CZnHsQsHbyLasv5tVKv+rZf3M/VXi/kfNJ/r/QBckfkntg8v9aAuV+Mr+uV06cQ9FvnHi9v+PPSv5H45B7+sz/4roR/+ebhfxAyQt0UiE/0Kyam8vRoubm/Fdjv/ETFv2DtY13HbAumHyh060HeV93HP6upa865P9P/GuJM1WeTE+5Rynen6yB/3x8bWMdaIG/A+L/p7994Tks7yPoOXkgb6bXv/Uv/v+d3uTL/+E5ze/vwZd7gop5X6w++T+Tby75P5O3qlryg+X7nXxnoZ9758TP533BY+wqcTTF+JnMm0PhLc6frQvvorbJOzb8TdVuPrr/g6ch/J+597+gTHvlC5Ur5L4p+dvwl/jqUehtk7zryom3ucX54Hd6PE05+Xvy/jPvPnN+z/vPE+m1e97jsYPEm+2rHP9V/FbvWn9yPzMX3/EfxZ80iD3kvHZ+4hhjHzmfqf8+9yP4u5c9JG6mbvxv+q9i1yvB2O3O+idvz6v0skL5lsRJ4Tt5g5JHKPmD7sn3dvJe4LMv+sk/uldZCT6m/ePq97Zffa6+ce5L8Per+feC/WOA8ViDv/8kX4D++T8Q9yi31+9VeCrRd/PkT9A++SX74Tf5JZfkPhFcD19dekxe7NbJH6Ic/2zjvJfBz97Kef+Y/CiJh0+8fPKjdFfeDb0J2q9X38K4JO7vf9k/0JtP7tfB58kxIvd4mdfJrwZf4rGSDyX//yzv7RK/3lD9ssQJq3+AfNvSb+Zv5nPy608nXwt8PJZ3aubROPbY3TnhW+t13ovNBPP/km5Pfp/k52RP9bR7S/1x6hPvkjiYxL2MtT4kv9U4MO/Bcw7Lup48Clcnfp/8eV9xKr3nnUXeR/xu3aqZ+8uCfzv555N/bwWY99Jn5P2A9ifFj6k+903JJ5P/A5PzyS/Wr/2sD73ApfGXwD8Vv3nf0VH/lebj6cZnVfYhesz9WvHckPxz6+O/KuQ/eSD5TpLPG91R4AdlJfiC82T8arl/jX/moMT9g3vjM/mji3nBEm+bePvkVSl+HyV+fDK5ZhbiHBLfcJN1tRs+ByduLvNDv8zjzN+Zid/IvMLfyeRvT7992VfuTW4lX/ajjez/JL+3sv49q3/+H0z+P0z+X0z+31LeVZ6nXd6LJx/0wNxL53sa3rzfacS+fsz5jb3Hz5v/X9I872/Jmfj2Lvkeyf1t4h3U35TvcPAY4/da4k1yv4/+dfr/G74/td859wPwHkGOXxO/kHgG/Ton/j9+EfImDq2/cv4f1YfgRfBVwN9LyQ+Vd3W5h0dvlvF6DXwVPAX+5NvIPX3+X2HuCX9MXJ1+IwvvzQ9Vf0nGK/8HVbm18T3aeOf/g/1q/BL/kffN+f+HZ5eV4GGJJ4q/wTrYjfzD8Zt1/Gxy53sycYYDlKtYh+fT/1/4+wNcRO7W+B8RPxC57opfSv8BhXwKw5XjH819XPDETmIfx+M/8eF5D5/8SbkHrhNIX0/le48+lpm/HTMuZSW4QjlxO4kHvy/5Ncn9XPx/6LxIzr2074bPu/POVP3J+md/zvdfH/XJe1le/UjrTYPEg8QvkPcW+uf/Jx5M3vnov6j9GO33yT2N9ssL8dWD7UfRS+JQM/75v4bfsLMXlb/M+Vu/5K9rj4/kr2urfCO++4Hr2Vvi1xKnmLjErO9t6SPvP5cbh3zfzrb+DcR33lf8i7x535l3nf+FP+8767Dn5KfbO/4H/CVf2m+J/wWn5/5KuU6+W7Vvid4831v35fvB+vCS/sfhbwM8s/VLHF/+38Ht+DxY/c74b6w+eWsqJT4cP839fq/+WQ/6qE/+6NX4Sh7pvO9OfvhO+c5KfIf+ufccov6RvIvJ/YP65IXL/49uY/6eYNyOB6sY3zfQb2t+lSfXEL8nfuBi/S7BT/LL7pn7P3KdAt5O3rPV30QfxXeYzfCbd3e1s57lfRX+M/+eLMSd3KV93kvlO7f4fbt1zoH65f+Y9Ex8pvqD8LU3uzwQvNe6dig4AUx8fkX6voY8uyrnfUhr56s78i4NTF6R/yU+Pfw55/2c+wnyJw4r/8ct8Vc97Cffqp+a84p2+f+n/9c9d/IdFt9xjCgrwa3pN/te9sHsf2/gP3Hd9ennKfZyFbuYDJ7JPhrS/xB4h4Kj6GdE3mHRR/InT1dOftfkK+yR93fWg+QvvMC43ka+xCkPw98F9DEA/V/Rz/8fu5t/6fkSKPeO/vfgpwf8ycsxVH3y++T/ACW/RW3td8r6jH7ytuf+Ov6v/H+1nvh6Wzn/X+0V8g7E5wbzJ+8wahT+X0j+f0j+v/xn8R9oXxe/yd/6/wAm4HIJeJx1nXXQlsXXgF86XlK6H1IaBCkBQRoUJERCQlKk5CetSEsp3SBKt3QoSEp3qygq3Q2ilN/Md1+XM94zPv+c2Xt3T27vOftkiBP1/79USQKYFrgxSwC/ThPAvBkCeCVtAH/NHsC3yC9I/lrq5c8RwEWRANbIFsCcGQNYJlcAp8cN4IFkAbxB/aeUfz09fGQO4BPo780ZwJ3QHwE/NbIG8DPSD5IH8Dl4O8YO4B7rJw7gAvjfnDCA9an/NvRuw0cN8AwEFkoXwFepn5xyg+C/TooADuH7PvjJRX4f+H8PfNPRT3H4+wW81TJBh3LVqD8xOoCb4gVwAun9lPvlBfhH7kng34F9FqYOYDTwMHTKReAT/mpSrxh4v8d+CfmeCvssQM5J5L9D/dbgfZFyO9HvafhuB55RCQK4jPwvAxDVDDwP0fd25H+OfbqA/yB42sPnx9R7Bt1GwC7otzL8VqPdvEn+Yujngt408MXAHnnJL4ReT4DnblLkJL8z3/fA30upAlgfOlup/4h++BdwkO0Y+pWQMwPfC8N/mkQB/Ai79wG+Cr3vyd9BO29Hf8sRCeAL8HuMdnIcWA5506K/tdD7nXpnSf9k/4CvV9B/A+zzKe0/U0rwIf8k5MqAPttQvjHluqC/buRvRJ7ZjE+NaV/VwfMd7fkM6Q2h/FLk74/8u/wY2lt66Iwl3Ql+kmC/Ush5Cz6Gg+cg6a3wm4ryx0kPJJ2VdCf0tBr6ydFvZfDdg48G5L+O/VZB5wT6vQu+F7FfHuBi7LYIOsnA+zvpBdTPgny/Y+/DjHuHgF0p9xv8JQKP/S8u+L5Hvorwtxc9JUX/bUmfg6+UyJcS/veB9ybtqS10v6b+HupH2z/JP0v6BfQzmX7zOfnnwZ8N/vvDZxR8HkP+bMiTCnyN4G8/9fvQX36k/5yAXlX4rkN7qQ2cRr08yHOT8e0P+uUjIfU/Y96bD99xsHst50e+b4bfePB/hXR55GvGeLKD/ELgj4Lvsdg1Jf0nPvnlkLex+qd/roV+ovgB7ACe9sAn8PUC+mmAXMlI/42+58DfVfj6BD5nwf8K6g2GP9u77fwR9s9CugL1F8LfW4wXvyLH36SrIM9v8NEDveYn3Yr8y6RTY7d3oTef9Hn61Rbw7yQdTf1W2PdP5vVRyJ+O/AzkN4XvGMhxn/6wFv1WgY9X0MtK6DdB399RrinpxpRLBD91wH+Q/I7kH0Mf6dB/efjMSHvvAt6alK8NnlvwfxJ9uC7bDB7XZ69B7z7tvz7jSW3n/xgBLAuey9TfHgngWL6nRb/b0c8k6Kv/nSE7NAfP5/CfBf09BG819Beb/h1Nuhf1vqU9bKW9HwIOgJ/hyPc28uQC7gTugI8y6OtDYCfqf+N6gfRH8PES5XqBfw10d5Ju4joB/WWl/axgnDhGP4kNnmfgHQu9AfD1RySAj9DLR+BfRbo8+GNCrzffZ6KXY+h/H/wXRX+vOu6QTom9fgYupr+/Q/1KzP8j4LckdoxD+/sS+nPhNynrIee3ytA/Sv3z8NkIPp/T326B7xvXOdRfhz5ehM4l8H0LvTroNxH5J6G/mvrb1BdyF0bPudBffcrXA74F3Oq8j17OgH8C9kqMfhx/u7q+QX994a8I/Tch9p8L3t3Ud73h+qMY+AuR34T+twZ8sSmfCv0Vg35a8n+C/iTkbUb7bAO+49TLgfxHoDcDvRTDTtu1L/mD+V7H+Rl6y+CnuOse7FOZ+rFjBdB1mOuu3vARk3EnMfRrUC4J/O4G3xq+VyXdlPKp4G8K6TykY0E/D/z+Qr1PHWeh/1/75j/IH4j+G8B3oZgBbIK9jtkuqPcy6XPoPxp6m4Az4GMj+W8w/iVADwmB7eG/of3bfSv1r5G/ivHsL/C7vooNv50p/xr66wyeBNBfHEqPRH8HkH8L+CaAPy/4ckDf/Zn7sV/dx5G+A93Y4MtDO0lH+hHjyyrwJwa6nxiIfs6xPqzqOAL9he5voXuKeu7vfqf/XYbOR8CrkQBGGG8+Zd0yGPgOfDp/HoNuK/Rh+9wK/XjosQHl4qgP8lvy/W3o3iU/GvnqwO/3yLWN9EbGjbPIt4XxcpXtD/7Sg7cj+n6D/Pi0p1zAJozfS8Hn+cBg7PEQObbD3zTwd6dcbcrFZ/zoxrnDA+T7lPGmBPX3wP9I9LaX9HHoTIXvTcj9EL1n9vwHe9wHXkX+mdT7k/XnBuRJ7fxJ/evwXR699IHuFfJdd5x0P0X9gsj5A/pqCt8T0ONu8l3H1KP+fcolAv9S8A+mXF3svVw7ByAqP3wl9NwHfEuY3x443sHfbPTbGf5WM2+tAaahXEvk74R9ItRbCKzr/Ag/d9Fne/gPr++GY8dWlH8K/hOMG3c9Z3Mdgt0eIf9j5FmIfPPB+yP8nXL8gX4j6lenflLWT/nA/yf8zAZfLOjnQr5M4I8bCeA19PgW7XcW+vsIPE1ZX7uOb4B8v8PfBcq9A55G8OP6bS38un7r7vyFvq7z/Svkq0R7WoA8n5J/xfEzAFGNgQUdxymfBv66Q/8s+tsEnqfQ9/ysBfmO11uo/wr181JuI/wNYb5b6DqM+fyZ4xvfWyNfeP9WGH0MJV0W+kXRf0HoT3P8Jv828rkOn+x5NeN3QvJfhV5P4G74zYidToB/COlTnhdi3+Z8fxf+nJ/ehr/k4PuKdYD7nxTIG94fNwP/96H1ZzHsMBZ6XaA/if7wJuuP2sDY0E8H/lzgyYR96gEz0N/ngjcT6VPobTb6n0A7n0n6L/TXFX2vRW7ns9jIdzM0P7+Anl9EXxnBuw18Q1mPxIL/NNT/GH4O0L9uRAJ41v0t/A+h/CPwdXM/gvy7HNc8LwH+BjyMnlOg/7D9E1P/Q/CfQ/5z2C8J5dZSfyfle4B/EfhXuI+g/h3Khdcff5PfCj7eR6+zyM+tPLSDb1z/wN8V5tc2zKv9ob8dfXTx/BG+r0G/IPj7M19mY51zFbiF/KPUr+S9Avz+Cp6tfO8DX99BPwn520lPpdxO143YP4r8p/CbNxLAZeQvpj2+QrupDt64jj/oZSP0xzF/ZoJObfA3w37j0ec48Hi+4LmC8/0F6u9hXXmFeW8X6VrO7+i9JnZIBHT8/o78Zsi/gfzN2Nl+dZi068QU4B9BPdc/rodc/wxm3KmGnOtIP6NeW+y5FLgEmAM6Gxm/vvRei/S30DtKf8uHHJnpj83g4z7to5HnxdCdSbom8hXxXgk+N7uewX7RwGTYaR/1U6Cvs8Bl8FGX8WUyeIpgz6K0z4yuD5l/HwHD5yDRlL9ge0eulOTXh69fmIfrkfY8dw/yvw7fB8Dfhva4jvayBrga+Az8I6m/CT56AzcDtwJ/Qk73xznh9wLryevAPYyfnjf14nsT6r8K/VLgqUr5LvC9mXQHzxuQtxvtynPIDeA/jj1jAduA5xR2P8F8dRL4HDvEQX+vId8Z9PAD9T/A/oUo1xf+h5JfBf31pF4q9P8+fAxwPIaPN6nfmvp5bN/IG833wqQnM/6sdP2EvBvhpwXtrw3z233gNPIbRgK4l/ErAfjXM97a3/9r3nY9uh583qvGQ77F8PcR6aXARJSbDbzB+LYf/v5iHC3sfp56nh/Hg14E+3u/9pT8huhxBvXn0C8bkO+4NxT73KP+x9DJRbk94GkHf5XRe0XgdPBEaH9bsWNH2lH/SAAfIM87pPcyTpeFfjLsVxW5+nmvi/7qUD4ffOWEn6zIN4zxcib9333AY/ejrKe6gvcP0vHA/y72Hog9kiJfDtfn2N92NcVxA/yJ0dt7lCuDPi9RPil6iQe/7Sg/ivbZEv20Qo7q1BtN/iHK269c5/9Jfnf03Q34MfAC/I2lXl/4esT3DMg/Gf0PdFwjvxL60n8gCjkGYQf9B8ZS7xh8DQbGB080/NdAby8i33z430D919D3Y/1ZyE/EuLac771gpwP1/ge+ZdArCb1a1P8CvkvBd0by34XPdLSnBuBJjf1tP2/TPp4wTnQk7flcEfrXGeAz5r+J2Luh9+vI3xg5yiFvFdKOE56/OT4MB+9S4Afgdx84E3vPAno/7739PeaXCuAtSDvzvGMTcv8Fff0L9DfowXzwGvwcDY2/+h8Mop5+CPof1GNcy0i9leBbA93w/qx3aJ92EPyzkbeu4y/484OvFP2oEXiXY98xAYhK7/04eskHn/m8f6Tey9DpRPu+xHrqZ+iOgb/3wZ+V/fQA8FUknQD9eb76CnQKwrfnq9ngeyrj3GTgY/hN5boR+DH8V0L/H2LfWox/bRxP4Hc09f5AvsvI1zQSwCXk54Xed7SfftTfQ7nTwJ+RY7vjP/XTgN/z/h3uA7zvRT+/QKcF/PehfBnK/Snf5J9lvN4LX53QT0L3gfSHgvQPx1vPb8uznuqKvS6BLyH8ZYf+eug2of5q5C1A/gzyCyLn38iz0/YPfu8Fnf9OeD/GPOm5+dvw9xZy2y4ngm8E/Hmf6f3mw9D95l3a117yn4KnLvTTIH864HPay0eeV4GvOeUXYJ8o8nPD30rwj6d8S+yTFH04vukv5fg2iu/Pwe9+2fv5J/TfGowTT0l7H7Na/zH0UQt6z8HfgvZehXGtOTALcpyG37aeH8NHFujvoj25P91J2v2p9yVvgG8Q8tUh7f1PNfj+H+nb0GlKu12A/fszj9xAnt7ebyFvffA/hL/TjD+30Nv/2O+l15+C7528v/IeifbZkvwj8DsZeS5BfyHpkuS3g+/Enm/pd0p+2D/I/dwx9Nsfe7m/u03+y/BTHD7Lgv9bys+E7ynQiyBfee+LwV8E2Iv8XtR3Hb4P2Az8+k8Ng34s5EtE/pfkZ4GO98a94GcO6SeezzLOzsE+E7DrROBf8N/F+1jvd0j/6jqAdEHmxbLANOD/R1/U1+9Uf9TL5MchXQI+57vuBW5lfp2F/ZIxP+nHONr7cOo30/+G8rXAn5Dv3t+1R39V6H8tkD98DnaZ/pSbtP4Po7HfefCvdH1Pfe9XjjFuVSF/d+h8JzXlz4Hf85pktL9R7t/J9z63A+33Avx8hn5P0d8OReAT/utTbgzp1Ng/P+kS3muQXkz9BqH9iOvNg+hvHfPXEOavRqQT6n+Cfl0nRIM/lv6BjJt30M89xpfN8LeZ8mOQ23vIKejnE/QzBn4r0x4GUv8RfO0Fvgx/seH/e/AOQ3/6cWYAv/4wH4O/guOx98Pke6/j+qAA9Esi5wW+h/1R6gUgaiNwNPJ4vltaP1fo64/TD/pZGU/nMG8Uo5zn4XUon957Y+zXHn7G8X2LfnH6x4CnMfzqF6K/6gv6G7E+aAZsCuxKff2OXFfoj+T6YnQAovZjH/dV62k/eZh/0rtfRd8/kF6CnsaBr5PnLPCn/99k+N6BvO+T77n4FfB+Q/ma6G8K49mnyDUE+BbtQ38L/TD0/3P+P8N6uwz57UmPJD+adJUARM2An3HkT2H8ewDMD//fkn8tzb/TO6Gzwfta8hejf+fpzuj5n/Ut+vCeVf+598lPpt8l8p+NBDAB9rnlPobvrk9H0p+vOB/AX1fwH2VcKAlMC3S94n2c97Pe126lfXivNA5YQz9K9zu0P/vNYPiw/7QOwD/6U7/7yb/IeOo+fy/pTdCPR3/yfvkvx3Pku0v6HtD7yELwkZD+Wwi4DbqLaH9JsV9O+IsJPOH9EHLrB5AYqH/pAeR7F73tJu19ifcz09FXttD9TH742qTfLlB/OelLd0fIv7Ut/DvOxoUP/SnfJN/1m+s51283aA+HsOM5YFnwh8fncdTvBX/OD+XJd55Y5/gd8tfVn/c2+AtBz33rYfZfT8AzwLgS6E3k+3vgX8r4kUM/L/Q5lPL1wK+/2ELPmWlf/WnP6amXE3zH9S/Dfs/1X3QfD/9D4XcYsDtQ/xD95+rDt350+s/ZPry3+0k/IOq3cz/N9x70B/2HYtBvcnrvop8d+d7vJSS9Fj1dJV3a+z7qd3a9CJ5vXH/Cx3Lk+8H1AfrqCyzjvGG8BfzqN5KSdDv970kfIj8u/TcF+TMdXz3fMT4hEsBbnqeTvk67+Aj7dgDfbuTLxvqwEfLtB28L0i/Bx2H9A8hvQ/0S+jkhn/4N4XFU/4b/ob8+wL7AidDbyvprm+tE+CtO/TjGK9FPr8Nfa/jby/eW2KVpnH/L8wA91qT8EPTThvQ9+D+OfE2QT3+AboyrtWifI1zve/4IfePmujFPGU93zfEa/DdcnxjfYVyR97HgPwp/15iX1wOdf/UvXU57LoM9HjpOkr4IH8s8V0be+tDdjBz6q3lekxv8dSk/mfqFwWt8ZFvv2/TrD8VfbGD8iYcdviXt/mAw/V+/laGkc5Lv+e9I+HwpdP5bifxP4H8Y+jtP+n30Uwe7xKW/XYO/SthjbSSA5Ujnpx+vg57r9yy088vwNwv6udHbCcr3J78f8jiu9SU9g/wr+gegx9LALdBfhjy7wH8Fue9R3/O3t5FnKXxOQJ7HjEuHyf+T9N/e03i+7rkp8vXCzqmZFzz/TUE/9X6nEHJ9Q3uaR3pGrn/zXY7yKaG7mvIPoW/c5jXqX6R8TOMu+F6bej8Bh9Pe5tN+KsNfBf1LsXtb1sEjgFX1P4I//Wsi0DsE/Z7sG2pBr67xFfrH6hdF+arUf0L/0V/+B+TLjR5fovyFKORF7xUoFwf+N8PfB/prg38x9IdRz/M8/fG8D1xGf/uvdaDnRkfhS30kjwTwIOOp8TX6BxtfM5T2OtZ4UdKr0W9f8On/UUw7It9y1rtdkasK9ttB+bzuH8DTDT7mUf8k+Z53e3/uOOF4PZ30NONR0Gdx9DEfOecBi6Ff72NWAVeE7me8d/O+zXOyXND1Ps34gmuRAC4F/7rQ+YL90P7n+Up18j1ncfx0/dYPuMf7ceTtAN07wJbaA/n1m50P/Mn7bteb8Oc52AxgdfgoAb9RfF8Gnt7YP9rxC369Z3X9G3Ge8PzA83nHH+i087ww1H6aMu8X1U+Z8WAPfDxCH7+R/4j5IAvyr4SfeaH4jDXGR7P++IJ5YTTpMpEA5kc/naFnHM3n5Hv+aH+fHVrPl9G/Uj8U6o90/LPde88Hf4fAq9+N/javo1f9E1+kXeg3tgP5Y4C/FPorAexLv3Z/kBv+vJ+aDvR+6iXGx4mce3nPWwA5ijG/FQAWBK6En9vodQ528h7IuIrEoXalH4Tx81UDEBXH+1Hyl7i/4jy3BDDsPzsJ+YzrSQBf2uEe/T3sh/oYflZQ/wJ8FgAm1f+U/BfRWwHvx9DzavQxiXY1GXjUe1jGxzKMA7dJz4sE8Fvo1UMfXwXgn/Mtz5n3h+47vd/0/O9L8qvAX2/4rY7cxm9Eh/ZfS8gfRP0KrC/2Gw8N/rfQRz2+G99YGzt7f9gT/h6Svgt+48Xdf+VDPuMf53i+gL2MJ5iJvpowzmcn/Rb4ijDeZ9WvPhLAQ7Qf+6XtxP3HZOidDvk3Ot85Pp2i3knjkYFjaV9xaO9LXTfA9yT9aFkvJoWe52X66+jPY1ys/v7Gy04Gz4eU3+B9JfrbBr9F4KdLJIB5sU8b+KkLnq7Gy1B/GOnr2DmH55S+b0F7ME6kNu2nHnTa6N+CHCX47v3Hj9TbgH5+d79LfmPwuw54h/Trnuf6PgX4czofeR8CvhbYaSP5B50P9B/T75J6KWkfpahXSv9u6i+B/kjsYLzHDyH/f/0l9KPYT1p/Cv2e64fuK/Ma/wG+kXwfoX8zdqjDuJzN+GbHZ8r/TLkIfLr+1H+0gv7foTg34wl8b6ch+c7nuZF3EPrxnYdt0DV+pgz1Y1LP8564rpdIG5/YhvLvwO8u5JmKnKvArx/favrXGvrRcdYH7t9892UX+I0PPkd9/f9Kof+v4Ccb7f8rz/8o7zsTvi9xFn6auF+F/47QX0v9hSF/44eej5L/KXz4/sYN/Y1C8dbZoP8x9NvD7za+f0C6Ovn54OcweI2P/DASwCLY5RvXa9A5Qf31jou+D6T8lNd/MTn2jg2dOdTXv+RHz59C/iWpGN/1zymO/dJ4fsX6Zo3n66SXUr8W+BtTfxb4F8LPDPDtdv7WTxM5jcd2HA2Pn7nZX/2GHa4ynyRzn0q7PE87HUP9KfDXiPEqJ/x0h88e6G9TAKIqAscDmzt/Md4XBX7F+q40+nhI++9hHDv8Og83QT7fRfKdJN9Heor+PQcOn/9u8d0B8msxvpcmX79e/ff07+2m/5/7C/LjG88Lfce7KthnSCSA+mcYzzMRvrIjh/5NdfS3ol5Zyqd1fmb9tZh1RTR6i4L+fb4/AN4D/oKd8iCv5w/5ST/Gng9oD3FJR7D3e8YPsS7dx7r0U6Bx6L5XUYp2fQn76t+u/TwX8rzoJ/J/hV/jgLdQf5nno74/4ns36Lkn/CYCv/7l28hPBH+X7N/kTyU9yP2J72LQ7u6ib9dBxkedpp5xUgWwb3ra70usf3vD/3roVXC+QJ7R6MH7kTLUfwVYCjic9hEb/tw/xSDtPbf+G6scB0PxS6/R7ysAq1BvJ/g7oIeZ1L+BPpvQXktT/g3wFYGPXaQb0J5qY/8BtJ+L5LsuyayfIvhGAH034hb66eX4ir2Tst7o6rsInvdTvqh+hHxPZ5yK55uez5I/gPzD4H8dPhqSPkC5rrT/ZaR/Qx/H9XsFfzzyffctN3AA8q9mfFUPLzPOKn8G9HIevLsoV5f6b+gX5HtYlH8R/nqR/tJ4D/QxCvw3PV/D/jdIe991Ev49H4yl/j1PBO8c362hfDvKr6a9+x6P7/Pcgv+EjC/xga0pd8v4Y+zjOc18+NpFfgLku2e8H3ys038W/SSFr/Xw5ftOO8C/znnRdyzA14/xpzXtNov3a+AZgzy+szKU8eGS/jHG74HX+0/tX5Lv15HjPu14LO1nHvWXe75kPA74PW/2/Nn1iefPvX3/Aflbgz+T7xwaV+05Uuj8W3/Udnzv5/0R/E9lvPf9Hc8H48O//gjuy06H4r8be15H/mPPHcFfkfwlvvdAuYHIX8HzN74Phd8K+i/Rrv9mHOwJnr3Gi9HfYhmXiX70f6rqe0Z897015y/3v2Ucj0lX0z9cvx73U8jv+JeI/hGh351knmuJPAWYX/YBm3MO8Ln3nLTPI8BDvpcD36sZH8dj7+sBiBoDfd+zMq7sUOh9q2rozf5/l3zvS/QPmoyd9A/SH/gH39fQv9X9PHAl/NVw3RraP3o/1p78Ach1H/pDmF/y299I50G+T/R7d7/lezS2b9+jgd/CvsdH+SK077S0syq0l0vwP9jy4NmPXdZBfx/yFDZ+F7xJPJ/FXsnQawfSW1w/uP93fUA7SEN+IfR9Gzkz+f6A+0fG1bXA5ugnu/fb4J/lvY1+6NSvR/vUb/+RfkO+n+N5YiSA+UhnRb/63w6DP/1vF/mOCfqtyjpygnGdjr/YvRr405HW/9z3LR3XvP/2fRr379fdD1E+C/hq+X6LceWMF74v6/sum9kfnMTuvu+yB3u5ftwbWocnZzzwnaB84PN9oNjYRX+5+sbvor/dtJ/z+mEij+8bJDPuhHQF5MpN/Z+9bwN/Ac810V9l2t068g/SHnpQ33dXvX9wPeB63bi15PBtPJv3MeWNj4LvPOi1LPTK0p/2sQ7S32Y99DL4/rB+jL4TgJxR2Gsu8/Ny1tl/GOfg+SbQeLWS0M+M/qdi37bAcdT3nVffGfKepTNyuP8wbtn3V9x/zMV+BWnnlyjXDTt439fD+B3k9f7P+x3PZXwP1POZrJQ/YFye57Ch/aXxr74noX9ZB/L1+xzm+sJ41ND6tRz8G0foe2Z7qec5hfER4/S/hp7nTxOZHy8gf2HKj6fdGG92hH3DKegbn5aI+tmhvwS68/Sr1J+E8W4k9cvTTvqQn8T34NBfcd9hId/3aqLB25T6bX3fJuSvvEg/Yc+nsIfn28YP+/5jx9D8l452UiMSwKu050ro+5rvecJPV+aDo/B5n/Rt43uZv8sz7lQCHoHeQNq/fnYTGL+8P3usfxL87GF9G9P7cPSuf0ulAEQlhX4X5CsO3muk9ZethH1cB5/CvsPR/1n00Yjvg+GzqPcR2EF/3APINZe076sbp37DuEr9xO0f+hMg53nwGi9ofPBY8D/P9m/8niN7Tu377QfJn0H9B3zvB/52jL+rge8B+8K/563hec/z1+LMm1nRb1rSntu+jL0y0W5LkG5D/nj9qbDXKPpJevCPgr7nEuHziqW0t4msS8PvjPjduP+iKf9drgL0Sxu/gL7ToCfPf1uEzn89Dz5A+/W9N/07jjt/ep7D91LQSQH/DZk/xtvPaV93aN85kf8m9ad6n2C8Lfifk/8MvN6PiN99gHTE/xnpm+AxPlz/H/1WfNfa9+B939r3G37Xj8TzAsrvN36R/HqULw8/FclfQf5043ecH7DX04z/5jc3fE3Dvn9RrhfwfdqX98vGBfagvve5XzKezQBOYb3puz6+A+t9qPelvq/2jLT3tyWYv72/1Z7qvQH2mEX7SKZ9oROOL7jjuyfAjJEAbgu1N9uf72Ta/tbQ787RryfRblIaH+L7SdgzG/X1n5zDusi4OduvfPyI/Fu8T0T+edR3v+D+wf1EHfSTlP5zG/27znV9m5Pxt57rGsZv9y/6m33j+WLIHy0e7UP/rnfRw1P0lQ/8+rfq76p/q/f7nvsZ52N8wjTGs6fOd54LoI+vqKcfUSXSk8FTz/N3vj8Gz1jPN73f0i8Y+InxRaF7d98x9Hw0HB9kXFBz5DsD/72o1933Ld1n0H5S8X0p9jZOoKb3j97Hguccad8Xuum+mbTv7KfnvNg4jHnMs8ZfVKK/GCc4nLRxggOonwQ+B5KujHy1AxC1BJgBuiuML4Cfc8AyzF/6tzwOjbeeu9fEzj/SL6/TT9o6rpGfnPZfj3a4B7jWOFLsfdnzGOTMTTsciN6Nm31OP1mOfL4X6fuR+gkYf32R9jPVeSsUX5WS8ekJ/bAN+s8nfeZ113uDSPfy/gr7D/fewDh2x3/ssg/YGT71TyuPPN6/X4d+c+jpT6k/qe/5xIL+EdrNMeBkxoejvguG/D2MZ4V+fPAbv9+D8sbvG88/Hf3Hot3F9L4C/eqf8hC9+o6J75d8Tvmvyc/O+Ob7KR2p9hCYBHmnA7fAb1741U/iGfifMl/txr7PSMcivzvt13O4VJEAev62HH6NWzf+wPitFr6PRLv9Dn15PuF86vzquZvx93noTxfpX75jof99augZH7jA8373V+DVfymt7/XA36/0O9+XaE26NPLr76b/m/4s+u+77pkfWleMhR/jB1ND3/fO3tP/0PNp6vsujX7WeRgfPoavP8Hn+OC7Mfr7+J5MTvDkgN5S+M5K+eroZxH5vyCf7/saH+u5YGzqhc8HOxnPirwfwvdLxr+7XqHdPmT+dP8UD/ue9lwOO5dHnmS0H/93pDvjjf8/8jfy+t7yU8bLV5DvVfS7Cuj/BBnv8YR27f8PDCHdGrwbSbuudN2j/8vX+kNDPwP6mo3+TzNuHTEOAFgI/OHztc/pH1XhfyN0jWsyzsn4pnqMLzeRZwR4CtO+F3q/Dpzt/BuaX4YB1yHPbuiVDMWXtkDO1kDvD9NRz3vEzNBfZ7wDeuwOdB2p/4v3l/rBeI/ZEfr3KK+f23no1zU+gv5xkrTtwvG8XYx/85ETeX7Xr4d0Uv3UPf/2vR3wpfY9N8q/QfpD75fR6yTq/409X9c/DT17/nIR+fshTyLfTcH+t7BbGfrNGdrLdeP/jG/z/It0b+QwPs+4POP0PoHP8HsQvhMxw/mX+SCKdhOOb5lBv3af9wVp93tnkS/snzc9dD/qfaj3o74P6n7C/YXvDbm/8H2XFZ5LhM4ZjF/aB9Qv703w+/9t/m+b/+Pm/9StpT35/q/vAbu+833ep/C9w3MZ5L/D+LXc+zzyv8Z+M8A3Fj2PARp/4b2h/2/guneZfuau58iPSVr/qGrwtz3kL6s/1STq1aDcu5RLhT6r0Z7y0Y7TG7fk+2/kHwYe0f/I8y3vq0j3AS5y/ApA1DD4eNt4nUgAPzMulv59h/QTzy8cH9FvDM+3sX8T6L8LvlLo0//P+gN5EsDPP/7c5LcyXsn4ONIdwHfNfTd49EfV/3Q98vkuTfi9mqTg9X2fcrTHVuD3vRP/z87/2Xrf+Ff2Kw2ZN89g/yPQzwb+hvrLh87nqnmfBV8twO/6ODfrD88f+yOP54TazfeLw/bbgt16Um+K74fob0j5eZ7PoSfH45rgL+65Bnw2R379NvTX0J/D9/b0z9Ivy3ufDd6vkl+Ret43vWo+dP1/Bs/3jE8xfsR4hSng+5zyUfSHtNjpBP1orvEq7Bd813s25Xx/shr0vP+SP++/WpHvez2FgBdpL0/cD+r3BJ4z2Df8/rfvh1aMIC/jUwzspp+Y/mG+/68fVS7ovxHa32zxXgw9xzM+g/XcUOR+k/VCJfT5gP6eGD6O+39a8On/jxQl7fl3Quwfl/Wl60rXma4vLzOvPWOczk3ad0zHGz9D+X3Yy/8zMF7T/0kK/z/SQ9sv9b230D/L/wtx3eo61vXrDNa9XwAzI38L9F+a/nwe+ucpVw05jS8wnkA/Fvdnxr8/QB7j4P3/hAXgWUp+Aui3gv9nxv+iB+NsypH/huM/eB+DN6b3S+RnRD/fk3+b+h3J7wIf5xjfxnt/rH+F8UjYzfdZfY+tM3L7Tlsj3+8A3zjsHLb3Zd9LoL7+10tIb6ZdeV/Rh7T/v3me9jyedn4h9D7Xr+izp/M/+HOC/zjye75XwPsa7Ok5mu9vhO9HewQgainQd0Ii6GeM8U+s28b6fgn4jGf1/NN4V/9voiTtzXjklOjT9yknIfcIxj33O/oPdPb/QOhXH5D2/3iNV/QcprrnmPpfheJPjDuJg50bMK7ccH7TD5ZyPcBvvG5p8Ph+r+sN3390HXLI+Bz0pV/ge6Q3wGcM6Pmuc2P4yQ5+19uuvw8anw5/+WgXc9DPLOAk8Fcj3RK8+rPrv64/6WLo62fqO0F3A/BP/LPnnZ5z6p/kuk8/Jcc59z3byNcfzv2P74NfRI7x4IsZCaDrcs/vPnc/Av+/6A8LnWn6B9F+S6HvvOgxE+3R8aIy+PQ3bGG8g+M04+5goP9/WJJ87z1Wg6c/7fNL6A9CrhT6HZKeS33fx/A9jFH0A9/3+D4AUZnBn5L1ZUb92ZD/IvqoyPfXqb/Zd0UjAYwX8r/dhX6HQl8/QPfv79Bu/N+mnrTLneD3fyHagNf/h0gLPv0LbkEnu+8TgecC+sqIXfx/Dsfvk9itGe0iJ/3lIPa6iz5OAY379v+3k9Nf/D9R/190Ffz5f1++J+J7I/pXub7TP2VlaH3XHL7rIkcryh3BHrVpNxMYJ3xPOToSwJT/cX7g/56v8LyI7y+H3id45n0Uac9ZPF8ZjT5nwJfrBNcHngd7v+99v/Fi3p+u4Xs43sv/zf1nnRFaX7yK3ZLz/QjffV/lBdZfq5Er/H67/+9+ELv7P+++b+C9kX6l+UP+pd9Bdx/2OQTepr6f4/2/76tghzvgLwC9/MCCwA7k/xCAqKHo5xXsdRX7Oy973+Z9XH/oxwzFN+Sl3HXal/G2mX2PiO8TSJ8Fn/40+tkcBc9wxzfyJ4be9x7h+57YNR7llpK/m/liEfpbAhwN3v8DC/x6IHicdZ11tJZF97APSEtK90NKd6g0iIh0N4JSighKI0h3SQoSIqEgfRDpli5BQRAQkFRaEZD8rfXd1+Va3Ot7zz97zTMzu2bP3DN79p4zNG3U//s7EwngwUwBzJgNmC6AcbIGsC7torMHcEfcAG4Dbgf+lCWA6VMHcGKGAI7KHMAa1C8H/+eUt0N/UU5+TxPADvT/iHYjoD8jWQDHA2ckCGBr+H1E/+nQ/Qk8Man/Cv6WZwxge8pjaR+D/qPp9y36ykb9J9T/RTkneDqD/x/4yoc+n6YPYG74v/dSAM/S7z7lk9mexz8EvUyGjwsR+A5AVIoYAcwE/gy0n0L/TpSTw+c88HdNCp4kAVwBrAf+GeCdC95C0D8HvmfxA/iYcRmTMICXwZ8TfcaD7gnthvFtmpLfgT2gMwn6v8NfMuj1Av898B+DnxK0z834RKP/XdhXOvS7ifbp4aM+/C2lfjXtd4P/TIoA3kkewKLwd5n2FxivtdBvye8TkS87+j/E71nBPwf+NqK/ei8GcAJ0i8NfIeTtw+9lkG94jgBWhv/E/N4QvOWpP858PBQvgOfRY3X4Wxo7gJfQy37GsTP9nZ+XkcN56vwsBv184G0HnvG0m4j9pNFuKY9Anvv0P4d9/EO7J5TfQL/vIMfBWAFsi37y0f9z+p1Bzx/Cz236xaJ9XPA1RL7NyJU+EsBBjG9n2t9NFcDVwBnY6RzwJ8YuPsROdlCeCf8Jmf+Z+f0F8BZHf7Ph/zv42Iq+RyDHjTgB7A5/31OfkXE+hD4L0H4MeK5Q35L2PwDnQa+Z8qK3WpTvUJ8F/grR7wBwD/XZGL/xlC8Ct2GHE6Ffi35fUe6H3m6g/1iUB6Ovreh/APy4Hr2OfK5LB+CvOXrdi/4vAdfDRyP0nw17PI79jGccWtDubfh/E33UhZ+k6HMa7UpT/zH028B/F+oXg3cC9ZMTBbAk8hdEjqvIf5p52Q+845D/KfTHgj8J5eK024z+/V51gH4m8D8CfwR8Z8Gz1vUIffxOOU0kgFeAn8PvUsZvB3jXQqcI+D8Ef2LqS4GvNHg6MD6d+b08+qkAbA6+CPxdAV9l+jt+jluE+eD4zWQ+xmN+jgF+gp420X8zcCL67oJcrdHfHfg/C/0L8FMVvqPh8wDtdjMeN6m/hr6SgrcP498LfDdp73ozBP3nhs/7yJsFugeRz/2X+64PGXf3X6vhvxX1yaC3EPxPWO+Wob+S6G8wdArBz2HgWvjZCL9+V17g94zgzQH9r6nPAP3d8HOTci/opeM7dx15/D524/u2g/qHjE9/9Oz3uxz6jY/8daGfnPl1ET5SUK5G+2b8/jL4vkc/vyFfk6jn8a+j/Rr4+xj+htP/G8qVoH8bef3u+B3y+9OU9esLfm/s/hF6Xel3G7l2MQ5vMb/WiR++Z0ZoB/1c4F3JuPyCXOvoX4XxjwXfPYEt6R8bfq7Db1H0/TX1tajfQX0e8KeH3z6OP3y7P/0TPl0XY9C/N/K4bjqfPgBvddonoP857OEUfPVEzjbQH8r6MpV+aVgPsruPYn/TGjx70ftp6hfBz2fo9wPoVGL8H/L7J/DTFDq/op9o+reA/93o4QfoNOE8MhA8E2h3D3zvooealDP6PaL/O8yLHvD1gHWsGHic787/DOgzwvjfpd8+8B6hXU/4Lw3/f8B3M2BM6v0e+X3ye5XC/Tvy1WX/ujP+8/JtpH8L5w/4HW+/0w34vT7juwn8h+B/F/3jYL+T0U8d5ntR6i9xXlDPo6kfA6wL/308P7I/7ME8nU7Z79os5OsGH2Wwt6X0fxG+99L+Lcbza/S/Ev1uQH/d4TuN5wPaf8jvX7ofxD5jwlce9PIecl6jfmHMAI4FngaeQP5r8NWQcl7k6ER/v7+/gncDv/8Mf+6L3A/FpF0X+P3EfQd6SBIJ4AD4dd0qQn+/F63A/xnlKfQrBP6q8OH56ST6Wwz/xWjveXOE6zTwM9r/qH3DR03nDeMzAXvJz7gWZL1cDv4E0D8H3QrwGw/8P4C/P/V1aL/SdRR7u0J5MvSjkf8L+FqPvFlcP6hvAP5XoPc77QfB3y/w85T6pDmely+X6xBlzzcrKa+Hv33IvZFyU/r5Xd4GfIn+fp//hV/P1X2Q7yT414JvDfJNpX4t5UesGzsYN/c/7odeTRzAo8g5j9+HMf/egX4O8FbF7q4BL6O/S/CbHTxzoL8fuVa6LmAPa8A/n/4J6e9+Lg7yxaT/LdaJRO6bqE/B9ycN688p6GxBvxOh9xtyTQJPf/pP53v2G/bzI/vbP9HTLP1PlLvTTj0soD4F8m6BTnHwV4deL74rXdz3Yn9J0NfH4F0D3kzgu8a8mYvc/6Knc66PjN9HyJuA8l7q+8BfYfotoTzXfTDr8Sro12R9G03/SQGI+ptxqUR5HPwlg/+S2Od34F0YCeBD+K7juQ356lFuB91f4esGeDKjvyvwswtYA/gMvodxPj8FH6spt9EPCJ/ngAf9/qL/SczLUuC7wzzRv3WI8+58+IrnOkz9Yr4f67C7DcC58L8Be2qE/g9jbyPpfxT5u3kuZz5kgN8X0Wcmz9fIuYH+ibGv5NBNQrkq9FrBt/4U97sR9D8QeZZCPzW/N4B/9ZMXvHmA6qcj+D6F3lDwxI0EsBq/t4W+/o2X0X8e/YXQy4R+XqPcEv6+Bs9w+m+H/kjm91bP39DvRf+qrB/DgRuhd5H6Cug/Pvi+xV4PoIe90Huffh+4n0e+r5lvN6B/yH0G/T1/eG6Yq77oX59+jagfibx5Gf+4lF+mXRvwfat/BHxxsI8XwDvMdQS8XYScU/vqX6LcGj18Rnkp9Z7ja+sXYR3rSL3+hILUD6f9G8g/i+/P38yvW7SbRX0r+k/n9x4BiIogX0rkOw3/33r+Y/xqoO+blIcxzun1nyLPctaFI8AS/L4/EsBXHS/436g/k/H+BjqH0f9A6otCrxiwOND99AbsOQo5ysF/bManFfZbhXVnK+vNceTdhn5OYQeZ4UM/9km+DxMZl9TQy0p9fddB7OcUfHwMnteYzwngOz7wffiLz7glZB2IR/kb8F1i3TmBvC/Qz/WhBvz0Zh1MCfyA9vsCEHUd6D5/FP3bad/87jl5Hfq/hn1VjwTwI9oNoX9s5mcsYH70uhR7acR450e/BRifJbRb4PrB+LwCvdnwP4fxGsM4zPN7oV8Jftbqj8Jf85TyVei5vruuH2D8UqDvlMDkwNW0936lAnR2o5/m4NmAfR2jfWz4ina/iNzxkOe48xz59T94T/fIeyLwx4SfZvxej3lVBv2WxT6SYmfJgAPonxC+X6b9ZOjk0n+L3d0C7xzGYSp8zuX7WxM8+uMPIO8zxt39Qni/Ux79NARPhHF0/V2C/K67O/nd9bc09WPc1zAeA6h/hvxFwDsU+UcjX2PmwxP0l41yXvSfC7mikfdz6Hk/8wR6CaA/HDxbqZ/L/ngP/a6BZx/t3X9mRD73oe4/T3h+ZFy6Mm7e722nvit0XZ/bwv99+E8K/CoSwDbef4F3A+1Tgece+PUnD2PchgI30M77Pu//VnIOaEx9K/STH3m9B6vH+AxFP+OAe7G31rRbQf+n8O14jEEPrRmvxuirGu266n9FP/3AFwf9/EPZcWmLHLH001DvfjAW/bIB3R+OZT4Uw87db3VFv7/zXZgO3z3dj8Pf1+hJf5b32AspD0f/ndH7CMp39ENSPgmdC8C14BmBXD0o649KxPiug//1wA36f5FvL+1r6bdAP/2R4yjrbXnopqXdK+DPSf/M8FGRcSugf5bfz9PvTe+jsj0v90f/Q/7tjE9W+uvHioN+HzDfqyH/Q8rq/zz90+sXp/8C8KcG71j3a9jxu/CfknGdD9/6FTKA3/velvzueuY6VgX6Kbxfo/2iCL+D9wX9qrQ7Ch876d+NfqPBuxj6Nejv/tJ95TT4r+H9PuvwWejMpr9+iw58N/VfZIe/Jczb6pwLvwHPQvTyrvElxhXARxrs+/UA/HcP6P1fTfdn0D/M96ED7VaizzfpvwXY1/MW4/YEum8j14foqzX0x4KnuPEr9Ne/VIJ+xeCnLvovQ7877GdvIOdwyjXQXzvstZz3+pQHwFcx8KWCrn7U76GXDLzO3530WwFfWZh33SiXYX9UjfE9SnvX9wyMV32/r+6voJeG7+Sv1Jf23joSwKaM3z3aV6b8hfMXeTp6v8C8vU99XORf6DoAv/q9w/v3V19ATuRYgp3FZ3y83/E+pxJ86t9t73qHPOOoz+f3m+/VM2AM/eK0O8v+2XPHKr43nkdOGH9D2fsg78d/p9579RWMp/7uUZQ9r6ej/TX4S+B9EfTvOv7IPxe+PUeUAt6j3XbtH/qXsP9C8NuN+T+IcdEPfAH+JlPOCp734GeFcWr0c31ewvzfBv5U2FMX7LQq82Ab41ER+b3fGOv9rPtT8K10vUK+6ej3HPb8J9/faOjsY77Mo7556Hvv/qu+93vQr4Wcr9G+gvsR+PoGeecYz4P9jkD+GZTTRQL4gPGJhR4GUp7heRl+jS+oT9n4gnB820n4zQv/taFXB5gD/rKgvz/gczD4ToKvEfX9se/R2PU6yvpN+kC3FO3zoocE8G98YWnaG2dofKHnyea0D98fJWfeL9C/jZ70L3tfWoP6adij/sMpAYi6AHQ//I/zg++G55Iz2J/nE+9RtgI762/APuOjr830nw8fG+k/jvXqV8a/KONgPGcq+lUDTzL66w/fwvfCeMOL9JtEu8eOA+0Tg2+9+2fwfuc9Lu2jmC8fsD9bC7766DcB9XGYX0uxmxbo6wn1RdBXYWAW/X3o5zX4aQL/n2APBbCXrehzAPRvwN9I5DmAvVUD727sIab3G8yXS8Ak0DnD+HZHX96bvAmfPajPTLkp7TqCtzH6K8586w1f89nn7EP+8syL/xXH+Rh9JuX39+DvS+QfhX7uGk9pPBN86N8qB/+Z6b+Z+l20X6d+wdeG9rm9XwBPE89b0N+kXx98K+hXGPm8z94F9PtufKb+8WOM38/es4J/GvY+GXt4qB+K/i9Dv5b7G/Clhp986P878N6ifgl8ej+difnl/t7450qMg/6v/uihG+PvParxqOXch8Bvf8b7U+AZviOz6J9Rvul3C/0aP/4e8g0A9qQ+Bu3zUL6OvMaxGL/ifZBxj94L3YHf3+HrMfPiHOUe+ouMV5Meet+KfReEvueCKdDNanwmdqsfJOz/6AS9CPxVAU938Ew1Hgw6hyMB9F62P/aRmt9n0H48eJ7xfb2Hnnsynnv1TyJfd/SSCjq19Lcw/4azzumPHW6cNXgq6Y9D3ymR/yD2tQ6YBrkHGf/BfnMF8DzwR+hPwV4G0a8H+urLOJRAv7eNiwr5m15hf7vHuB7K68AfA7xvRwIYXt9HIE9298veO9HvC/TVUj8/dP8G33S+P3GQqyvl04zbafi+D75hjNOb6LMT+F1XGkFH/7b5BPph9btW8vyF3O2ATfl9Nfqv7PxG3ovQMb5+Av0eo4dq8FkT+u57s9DvJ8bHeOmnyDnafTDzbDn4RzK+o9HbKMq14HMvdPvpP4BOBeRMgV0dZp2bw/c1PnIlQ3/GF0QZJ4scbcC/AvrnmT93oLON72Y16F0Cb2zkv408XVjfKwIrG5fH93ER/S/S/xfm5wjk+o76zPRrQf2boe/Rt/DZj/o18HcZuctS/hQ5vVfWX+B985NQ/H9Z8CeCj6LUGz83n3rj6Iyfu/Y//PMNGf/wviwN/XtD5xbjNpb+sdiHDDWOS38m5ZTouz74I94Xux8EToOPv6Dn970K+vV+73XWsyzobxTtHhmf6HmO312PXYc3YO9fAzcCq6C/mej7EDAZ68/e0H2767H38Wm8nwrFqxpnanzBCObnada9CcBe4CsM3ZmsO4OAlaB7hHl5DJiL8TiLfJ6Pf6Ycvs/OTb/T6O8K5Tfgc4z5MejPOArzqUow33fqPwudby+iz2qcM/dRzor8eZD3F/RQmvnWDX43YS8r6feAcnf0kxr5voS/EvCXG/o1Kbei3njIPNQb1x322/aG/i70sod1oY/3PIyv90YPofMH/Hl/FKU/A3yPzaNwfTDel/on4LlM2fi7QvBlfkJO4+eUDzlWoRfzr8zfqIH86Yz/p75W6D7Qe8LD3vvT3vX4BfAnd38Af3uMO6JdU/C/jN5yA3MZz4p+DjLuy91XAa/QP4P7X+SsZ34a/ZvDzwDsqb/7ffhbxviU8NzN+Fxl/Apo76yTQykn9P6T37eyrt2EbmH4mxuKxyqKPPcoL8bu32Ie/wrsgj13YP5MjgRwoX5K5DluXgr8bEHPcamfjnznQ/coJeGvBmXvS3cYrwe9+uAzjlX/wwf0L0f9APOd4CcX/BSmbNyZcWjGn4X3VykYh5nGv2J/SRnf9ZRTmz+EPf7NuGRAjnbG56PvAozDdWAS6PWBXnHz3pBzO/wZR+l+bz7tc4D/Yih+4AJl4whKYhfG/aWF32jqq9P+MevG78Di8DeSc1sx7LIjv3dH/+7H3ae/BB33656fzAMoSf/7lDuhnyLoZYr26/me/rPA+yPriPoxPjg2+ns1FG/+aSjeOB3fxyrQKQZd171V8FPG+1fPN8D7zAfzYasyT4yvzYK+t6CfKPTm/tT96hzHH/4Lw39cfo/n+Qz5r4F/Bu2NU53PemWcRSLGz/iKI8y7CuDvwXxMCP4blG8CC4DX/IsiyBMN/w2wF/0BnyD/R5T7uj+JBPAc+j2PXhdjL8mpr+q9HuPZyfhlz8/QrQY0n9U81pzQawy+tqy/+oePopdB3q+jD/Pz9mLfpRivPOB9D/n1zxUzfho570IvN+Oj3WmHX3m/A78vMu7ZKJuv5H7P/d9b4EsJP0W8H6W994htoV8F/szrMM8jJfynxt7Le2+tn9T8DfBX976Xdt5nj8Qu2mMHB7B/40XWY2/GDxj/fsj5xvhEse6cpX9n9G/8UXHwG39kPFJ+8I2i3Bg7Wkb/XPD/LuOd0Xt65GkD/QHQrYx9JPZ+AXzGVd0Gvkr9TPB7z+89uvsw6Ut3Z+R5+knAvwL5M/D9iHa8sb/r4DUOyPifcP5kbcZZP/1vAYjqazwt7dtiP667xk+OhM/C6GtkKD+uAPS3Qb8OervFPKpC+SXwt2Q9OIYc+Y2Lpr428jaGbg7KL0ae5/9eiuflkP+a5hVpl8ZVwd8O8D4C/un+g3rj66cDs1M/mPYz0OdrlK8a3w1/5p+bd14CezL/fLL5D55PgWVonw393qE8BLyd6F8+AP/de3gPUhE53Y8tA6ZiPncCz3fY80nGp715M8wP40LH0r435S3Uz8Eu/wQ2ZxwuGjeNfHH9vvuuAvgWhuIW63G+yoh857GXq8AYtPP+rBLzvyKwI/iOmX/AfAyfLw7Q/33Wp/3G0zDfxlLfy/wLxmUEfBc0P5v6hfr3qN/v+sH327jGV7D3G+jZ+GH905fov8N4Ju8jfW8C+6vs/ZZ5M+ZX0r8f/N1iXfS82YPyWujN5nty03gU9GH+p+9D+B7Ef+9DUK9fb7z+Z+z7EPwdpvwM/TcwvwD+vK9pgv15n+P9TQR+R8HnFuygGXS3Yr+/Ac8AjQOf4H4YvCP9boK/HuN9xPiNSABfws58T8A4t7O0c7zewe4WMM+/AaYw3g67SAm+ROAvgfxpsYdG8HXQczv149HfCfqdhY/ljJf5d/F8X4ZxOJn1ebye5+dBb7j7S9aFTvhdusNvctof8/wDnoLIlU1/Q+h+rjzj6T1de/Slf8595R3o7zY+EtgFOiexr1veXzFe+8CzFP3U8r0X/aXoJzf8e1+62P0y/ZeBry72vYZ93ffA1eZXUD8aPJ0p54Ke+YzmOaaHf/MZFjOf9qDfsH99PnyNQy+TwNcA/EvQ00j4fcb62MvzJd/NC8rHPErs/pX54PsM9+FnDvrNzHibF3xaOaC7zPcVvLc13pD6vvLtvgNo3MG7yJkU6DtB55BnMPx+hp1PBGrnLY2H9jwLv6+DJ43+P9q/zO+ZfYeB753nonWh+KGbxtPB91X0v4X6Y+jrEHbdC31W9n4N/j0f5aFc0Pgp5sUXEX7ne3AN/PplEob8Neb/5IPuTfMj6D8J+le9L/c7gf1uAZ/5+eblxzCO1fwn9GFceQ/KtaFvnrvnSc+b6m8u+unKuC2hvAg60ayvM13/zCs1vwx8LaBTFH0NRn8zjU+g3SzKRdBHdvBdpb9xpv9Q1l+mH213yJ+Wz3xH8Hcyj5f6f/l9Bv1GmedO/SrsJRH6fIV2K/T/pn2eP/mVP+93vc/1fjcG+tF/8Y7vhtC/gf4X9l2HqF+AvUwNrd+dzV/S/4F+U3vupn067HES8ngenAa/HVm/EtN/COPVPt7/v/8Z6GeGv5T69bFf/RP6Xc3TH2v8I/V/mRcMXvNv/6a+MOOeyndfaOf7I0OR/zT4a9L/B/TxA79/g5xDkK8A+AfDn/Gh3jd0xd67uI+ET9e3c7RbTdl84vPmz4KvqvernuvQz4/sd4ZBPxvzsyN49zG/vecM32+WM1+F9mUp50NP7m8rQ/9P6LjPjWY9O8Y4e79lPlAs78GB7bwv1j9Lv5rYZSLWtz+o97tRCHoX4edP9JOScT2onxP8xh89Y3ya0r+p5znvmdHLt7Q/Rb3xqcYHe5/qPeta49ON0zXfRXszHth8Vvj823FwHGn3JfXGYRz3fMF30fxz887X038T87s05THU13E95fvmO0aLsQ/fL9rGvmqrcdqMh+vXAX4P53X/hH4eo2/jlYxjqu75k/n+I/yVh4+H1FdDX03QY1HoxGB+duZ75X3oh5TreA7VXwb8K/S+ivPF+fOi71TAv37fEyH/r/5b80nMl/Adtv3ed1D/k/k5vr9nHhbt4+hHDenR9w30u+uPfx/+fJfoFdr9AN6M1JtXsMD1G77zgf8l8wNcx/VLGD+B/eyDv0ysJ3XR7wLqx7CvNQ9iAXy6frhuxPS9R+xhgH4H+Nc+FsFnFeMStRfwzoI/9z95scMqlL+n/TXWt2vQvQ70PZnYaZ7npyL21979O3y/D2wIrAmfxdCr78aE44tqw8+q0LuRy6l33Ix/cPyeoN+Gls2Hg9+OyHed+W/+UzvWycPoZ2vIP6G/4i/o6X+eTv8I67P+6Kzsl4YZtwBcRX/H2/2a+S9zlT+UTz6A+qPo9zH+FeMiU3vPSXv908aDGZfg+xwN+R7sBGZFvnnm0YF3IrAZ+At7nwb/7zMOp+hnfpP5suX5Lsb1ngz5bqKPeOgvAdB70KHsd2p5D075PHL43ovvv4TvI32v9F/4neH7AvBxlPno+2lXfF8I/azx+w38Hui7N5uNv6RfC8bbfKqy2Ftn2v9F2fc5Wph3Dj894ScH8o1EH995fw4d409KMC/6Oo+YLzHofxT+jgA/9D4aeaswnqdcjxjn6caPMG5HmRfGRfQ3/w97HwJ/5gWtpv94+DcPYwrl7Oi3DeNZx/UVPX0Anv3QX8G6s55xNJ9/G/rynaufoOP7VvplzDfqQH1C5ndb+r8HPAx/71I/JPQ+kPmnQ6Hv+7ATjAfV34r8r7CunzJ+g/W+cCSAnn9q6ecxvxv6fm/T087vbl33fYyX7ym0CN3Dem7xnWPPLZepN8/A/uVob/xfWvSywrwj5qvxowuRy33oVvhtZ/wK5YO2M+4O/Rhv4Dut5umtA2Zn3Ed470b/VdS/znwYCv+VKPv+ZVv6RYDaSW7qJzAvJgKn+I4L+I1nMC/cPHHXl/D7sjmMJ6O/72W05/dE4LsMvvasF9vNywGO9RyAvBfA3xd4Ff3vYz2qY9wg8+WG+y7j98yv5fepxg/Rbxq/96RdC8bP++YbjFdD5rv3z+Z/Ghf+K3KZ/+n7vk2Qu04kgL7vO5D+JV0fqP8H+rexv1PoKSf1zan/CHn1f/gdraL/lvlhfP9C5of+rK2+r0I57J9oiz2NRw/9GJ8j6Osu/Oc03wP63sfGQ1/xgb6fWt31CfswXqkCfJ71e238BL+bH5fH+zvfLeJ3822a0X6R+jfeFHl9n8X3+Dz3+16f53/vR/xu+b6u9yPJ+f1j8KfV7wn/k6j3fZTytNtKO/NBG1P2HBiNfSVh/Cuybvr+iu+xpAQaz+h7GRvMf6De+KP4jFsC7GNeAP7L2/gFPG9D37j4h8j9Wej9z/Hod4vx7tjpI+jcYX6mY1x8B6Yg8p6AL++NjqBX75OapX7+94PQiYF8pymXNV4SfMaHD+Y8at7PBso3KTfCricZ/wJfX6Gf1ND/CDs1rusf+BmMfkrxexHa+X6o8a6dgZMYT/MX9C9Vpr/vK+hnWsR4Gwey0nMc4xELvr+j/0jKxk/MoJ/n837o3/P5UPjv6juo4DE/p7j2azwEsCnwBfT3mHJMyhXp34H9zVT4fkY5B/z3DUBUi1DedGP6G9fk+1XTGG/jO7+hfzfgbvYbezyPsh/8jXIfyr6/az7CbPRdB2j+1F2+myl9B5vvpOvLIPj7kvJ1/TnYUdhfl1P/IvjfAK9+tkUhf9tJ5lsj9mW+C3AB+T1/+q6j51DPn5mMG5Y+/c0/fo313H2F97Qt9e/wewbaf0z/jylvAv9x6NXwHhb+4iGfcePmofsOgHHrxqvr1/N9n37OD+aV5/dB3kfp39EPR//azj/Gax3rknEVqYB5zV+Bv7Lw73uhN8xf8hyJ3VSE/8Ppn8ezWT8NfL5Of9//mEe7X6A/0XhSfo9D/x7opS2/3/H+3/fPwH+K9SEP9YmY77/pX6f95tD50HWsEnp1PRzH+niM+vzY43rssB14ooHjoTfBezRgOtdl7LYr7ct7zkW/5o+Zv7+cfgWg7/83+cX7Jecr+A4w36thlyOwt3a+fwN+/y+K99/Z0P8FxjX8fukb6M/7Ue9DP6f9QOors96VAa/vhRjPUAb+p4JnCnCe9zvIHZv+vrPs+8rvUva9cdfdS85v8Lc3rh79DOH7NZr6E6630DE/z/2U76Q4b4dSvwq9vmo8MvY4HvpFWR8XYCfzgcuoL+t9D3jSGDcBvqXuu0LvE5SgPgv874XvLeCbjP4+Rd8D0GNtxmcr42u+mvlr/j8X4x/T+h0ALgP/Wd+jEJ/25vs85vfq30PuhejvE/Tnu5TOV9+rfGa8IvJ57/Ex+mlC/8HU/yxf8POueZT8rp9f/7bvH3ve6ky/981fhZ77e/f1bSh7X7bS/CTwd5Ff77fY1+UF+n7iNNoXcX+tH9v3VWj3lu8V8/vMSAB9j+9L6v/ld/MRS1GfgXU9ATC+edzeHxs3Qz/fmfF9mcbeO4XyxQswjp6PdnqfSHvju78Af1v4N1/xCvJPZz3aA2yqnxt9vMO6+lB/EXzXBv998KePBND3cfU/+Z6n+1D/L4D7z1HUpwZPPOBT473gN+J7GbS/iPzGSzf0HTP4NX7aOHDvndfLD/Rdn1yXhvseE/j1y83nfDiTev1z2ekfvl/x+2hcs/M87N9sBp8vuT9iPB97PjJfD/lfpN1210fv5cEzHD7+hf5+6BWMBDDaPFfzW8xP4vfG7iOQ/1W/h+C/bt4z/f/g+3ISviqgp5LU+/+UziDvJfOs4Oc+89I8yweUzbN8yfcejbMFn++bLoJuefRjHKPvkxfh/s/9whHjPY3/N/4WvOF8+5L4Iy4DJ+GvmE37evDpuxdNjMNAf/96H0B9aeQfqn8Ye/Uca7xHar+X+qMo7/cdA/Tr/y8wHsn/zzDQ+yPGw/c6K1M+Sv0l9H4ZWMrzN/q7jH4813vON/8yPeP6j/nEyPt9zuf59z6zjPFrlJsx3hV9vxL8RdDrM+T1nQL/X0kN4yupXwle351qz/juBG9u7KSM8evwVy30rrhxfAvQbw7oTadd+P3na9jDIOxjjvna5kuitxLAdMwn8+R8v9Bztedsz9dnAxA1G1gL2NJ9B1A/pvNkEvxv9l0s32EAfy70l4X58QfzYiDQ96RaMZ7Gh1R3/QVPF/fr2M1l1oNl1CeEL9/pisU4fA/9eejtS+ypLPobTv0U//8W9pkU+yiGfnyX/V/4W8V+bxX4jCvozXgd119sfi/y+G6Q+QfmI1wy3g95fA8+P/1Lg997ZuOAHwGN948Fv+YDzKa/+wLzL90vPPCdugBEXTX/zH0o+ML+sbWUPWeW5Pcr8G8elO+jluf7NpR5Yv62+dzmb7wa8m9sBp/nbf8vynX4nsr4eb+mf9L/J+L92o+s74eNC6S+tPl12GdZ9iW7sc8MvrNgfgj60b/9KfP7DnT1f5l/05Oy+gnnhyWm3v9n5D2m+5cpxr+E3u+diB59x/cc/czb872o+4x/UuTKz/6lAHCq99PQP6bfALg3FF9jXI1xNpWovwa+M6w/8Rlv4wefsR49BQ4LnVeng08/1AO/P8iflPI28+U8z0Lf9xo8H/r/alzvxnHeeAScCb1N8LcUvcY1/jUSwNTGf6DvNeB1f+b/a/JevK759PDzGfz4Plw73wmmXWvq84LXPAz/v+R70P+B9S4F8ndlnbqondHeOEvfZ2ziOxyMSybk2sX89/1P978XA/DfvI+Nfjp4H+C9JO18H7Is6+WD0PlnHPVT0d8R+PYdX9/vLQF+v+vtfQdK/7n5huYN038l9eZjmJ9hvkZ99JcK/Rn/2979lPfL6Md9Wnh/5v53n34v45uglw/6s83r0m/B/HsCPt89uBx6/6AIdnHR+wTf9zX/Brucy7zyXRvjUy+grzfRj+u86/uYDM/X217/qfcW3lccZTzmeb/H+G3z/sp4YNrnY/ynQHcX+n5q3Lz5VZEAOs6+3+a9iO/ih+9HWqNX9wPuEx5Q1h9qfNN05DO+6Rx2l5B+0axDy+Sf8TUuxfOR77v73tcW8Jaj3vgi94v605PQ3vixvejD/XXvUHzRQ9YP35d4h7L3U3lYP9Iy7rfdL1Efji/x/zruQR/GF1eE//Ss18Ybuz/x/xWYF/mO53v4ct/ofvIT+vv/j7MY34de9kK/L/jX018/XSv6N/L/AmNfrbEv7xFq+O4D/Tb4vYSOflPfQU0H38aXHsA+N/Hd2QbcR7+62ENtYB1gc+jfRT7/v6n3rb6foN/G7/8U/QneL6Dvasi5Evn8/zfeO5RDHymMW9WekXeN75QBs3reY30oDd4GyKdf1feLxtDed8Brwd8g7DMjfGof2ov7dPN2ZlJeop8GeuaFTkbf5od6Hgv759wvp2K+J2U8G6P/2ebvGeejvND3+z8/tD9wv7Ab+r5f5P8tLkU//3/xl9Az7iW27xVS77st7tf9P3P+/0D3iz2R//fQ/vEu+O8ZH8g+NA7yjWbc6qOHesZHYh/GxxyE7zXgNb4oFvJ6X+Q9+I+UX+d7kxS5fJ/JfLA06Oc48m0wv4TxMH7EfYvvShhHMo7vUlXwjaGcAf3NQt6eyDWZfVhxytrHX8b7Q1/7GI9eX9cfFnq/o3UAoj4FPgKmN/4OucsAu/I99v7N+6HffL8mdL/rO/vHzQdHfzvgrwDjYj51e+1E/xZ0P4Vf93vu78z7Ooqd+X/C/f+QDX1fFH52oq83jPdHj8bDhPeXGTjf7sEuG1BuBX/fYpeLgG96f0V//79rAe81kMf/5+3/DfkTuR5HAriY/v8H1oZyFHicdd159NfT9j/wTzQQmiiJ9E4yVCKJK7MUmQoZItJIEoWiZEoiZR5CISlTFOUaokhCRKZwzRKSRFIkw3et3/vxvGvd11q/9z97ndc5Z09nn2mffc57fv2K//fbvnEZXrdNGT6/XRmO3qAMXwRrbViGWyvfdasynNyoDOc0KMON5dfesgxP3L4Mf9m6DP/TtAw/3awMz65ShiMrl+GHTcqwG/zv46fKtmX4nPy2tcqwRakM76lahuvl7wB/C/C1Tcuwp/KX4e9Z6TX4X6T+j9XK8LdNyvArcv6m/Pv0Ej1NBqOfzuQ6BuxG/q7w96lBLvItp/9eO5ThpEplWIvc/fD3Ffoj8H+r/J/AvvB9T39jtfMF8s+j/y/kt8JXE+XuJudr6F0g3YC+T8b/LdI3KDeSnoeT/w3pncm5QLqB/D/RfYZ9jJTek/xp7/vQH4Tfj8l3LXuZR2/DpZfIvwO95vA/rz2HSPfQrn+jew48r5Dvki3KcCn5vlXvO/Bq7fMjvT2p/q/0+26dMvwE/IEdHECeGaUyPA2959A5hfxnqNcE3BS/TeilLbofqXcg+g/D93H1MnyodhlOA8+l//rs5wP47qffr/D/fcMyvER+dfTmwf99zTJcqV9Not9L6ecL7T5mozI8Dv1DtE/s5wX6X7oxPtDvCX9T+LrKHyJ/MP43LZXhK/S6Kfxb4PcNctxMvo74PwJf19FfR+lv0OuM/nHGlWfptx0698LXHf1KvleoP5i8h29ehhtLvwLPhfhboN625LoVXK7eZnXhk16qPeoZj8cadw7FzwD81CdXVfK+iE4X+HdFfxr9LIB3mXK9ifMZ2ALfz8p/0/c79JPX0TtEfkf87J3+B85i39OV3w79Y/C9mfw98fcpPH3Q/479ttU+P7CzfaSnav+V0h9rv7bsrDN6V8J7JX5fgD/z4Vno/4zPbfF3Av11oq+j6Le9cg3wvx98Q5Vvid5U+dewt6H4ma/+6/Q0TPn16LQC/4LvE/XPMe5dT74XyD9N/qPgY+Bf8A9gT59qv7rgQPI/jP5i/fsD9WKnY+n9evB0+L+jj2fofRb4b/zVkv+L/tubXL/S11R0DkH/IuWHqT9R/m7G00fx+0/mT+XvxPcs+rlD+i3tfZXx6mrwWPbSq1SG1fSvHbTPx/g8UP3G9NUA/lXSjytfMl630T8XmS9eMC6P1K9fr1eGS6TH0m938u5BTy3Q/zjjn/ITyP8Z+T8h/574WCb/COnz1d/f+NtY/qXq38c+l7DHZvIf1x9eoP/+9DYAPAuczP7a4LsNvrOueAm+m+htDr0PMD4uxsdb9LU9/bXE/3fwf8DeFoMfwfs5eDr9nYSPk0tluFD94eznHvS3Rr8qfueg14QdrsD/NfRTQ/6+8I5S/zr5y5WvKr8hfnpFn+i30j9agw9pv0foe5x6G4JvaL9/oT9CewxR73Hpq+jxPPJ2Ub+V/Inye+DnLva6SPl3yT0l/Cr/nPQ17KMfOatop83gv139u+Bbof4p+G9u/OlFjuPRf1v+aO32DDwz1f+5VIZHS5+uvW7Hzzz0q8HbFjwLnj/o6VL9Z5X6P+iH1fBbn1z3kHcBO2mmfSeXQcWP9HoPfoeodwB6L2jHf+NjV/yfrfzZyr8K3gb/YvIcgX712I/8EfpHK3pvh0438p2nfx9t3dSLnHfJP4w8x8hvrT8eSa9vsOdl1p+/gHuoP135/fD5jPLN8fczPFfFLtE/Tn4H+v+c3iuBG9LTUPqZS/5Z5H9E+95ivNkSH7dKr1PuQ+PxYnY2Ft6KzNfK9aC3paUy/Aj+P+Bdrh0bmT/S/lvjbyf17qOHrtI7yR+P/53YVQ/1+8O3nXHgNOmu7GCC8WChdsx4lHFoPrn6kmMv8vaX/7H2+lI7jNPe48l/L/621y5P+j6Y/OvkjyH/VugcIP8z3//EV9Z7Wd/tgu6O5P8enX/o4Q3ybuX769KH4WMdfNeiO0k7PQLf2/R9NHmPUf7erF/gfQdshJ+H8DcM31co/41+NJR8L6LXSn4VfDwgvbX8+eh+Df+x6s9gj4+Dm8u/olSGtck71z71Pu1VQ7lL9O9HrK+WSvdXfz90d8XPbvC1zvqTfTyGnwvo62L5dfS/2E3Rnqayl0nG4+fMs9uon3F3O/ycl/0henONK6eSqw68W+B3btaD6nfUHoer/yg9TGEP3+K/Pn7iT1qBj6vo4xj5Ddnvfeytk/o/yt85+Zm/sr5S/hTz0QrrtVn4Ow1/n8pvR0+fSI9Rvy7+st+bTD/R31bWl8cZ977RHtfib570HeqdVSrDgejfxy4eYT+TpceR53Z0nwE/1Q4vq9+P/BuQ6ybldqaHFgX9VqXfB9Q/lj1sFf8dPMPkny89CZ0PM66Rb5Z6VaJ/9BarP57ce/qe/dukUhnuqP50fPxjnHyUvXRB99/wP4afDuxvtfqVjbPjzF896aG9fjGc3CfpHzW17+W+n6/8HfS0Gv0q+N8N3dvwHf/D+wV/4UL2mfX538aNbzJukX8yOu3ZXQ3py7X/GehcR/45+Mz6fU/0vo7fin6ip+jncvUro98Q3+lfU9BbTu+TpJ8j7wf6f21wc/As+KbRbyv8TlCvuvbfXf5keqmOzu/4aIG/9PvY6Vj4hqHT2fcO8LTVfkfGf5j9vvafC/9e8DSRP0P9G7I+YD876ffNwKHq11B+GDzzyTeN/u6j/3vofXvtuwv8m5G3WuYFsDF8U4xLb5DzRelf5H/GXi8Ho8for6TfHIOvreC/MP4o+v0Xvsajsx99/Mh+70u/l35Q/T3U60D/+0jH/3CE7+20x3P0cYzx8Rfj2gjwZv30ZvUax/8N3z/4OIN+f2IXXYO3VIbxL51DH6+pt4lyZ9NPzzKoWANP5o/O5N+CPjqSd4T6v8l/Xr0R8P8J3wHkbUaulfp5/ExbkWcL8m1O3rPRG0W+S+PPlL8J/f4kv7L0cvTbZ/9aKsMT2XvsekT8zfj/y3piNjt8D79Pwbep+Wuedj8JfFv9X+jjaHycC56V/RW6n+PnMnQuw/8hGa/Q+0r9+eS9k71/RY4l4J3K9dc/F9BbI/39JO1/QmH8GwEOj/8p62f9pB18k/FbJ/sGcqzHZwP2Uzn+K99PwNdn5P9K/V/jZ/F9fPbL+BlAn/FDrJLelh7iLxso/ybyZd0wLOMbvrN+OFp7VofnTfq7Sf5w8m9h/HgXn83xtz/9H6r+1xkX5P9M30vJPapwvpf9Q8bH7COyfzhc/kT4T9eODdjHJtbD2Yffrb9clPMy40V/sL7618SfaLy+GBwOnoefFvTxE7l3ML/tQL74NXvlfKDg5+zNbnI+lvOO9dr1WvAj+I7TXk3Id6Tyaf/sB9P+8YeNU/4C9OZnvY7ulsp3kd+Nftdoj7Xgb2A1+b+RoyN8tSKX9KbSn5TK8GB6z/4q82nm1zPxk/m1Av85B7tc/l7qbyfdl55msdcZ0uOsJ7ZU/nbpRtJH0mdxHs7+ri6+cv6Y88icP2Z9/L7vWRfvqb1esv56EZwLDkHnhIJf9ETwaHJPgP9ifFyNzw74OY8809Afrf3+Q39XopdzlMrsN/PcGfBPR28/8Dr62077tDKutQZvUK6N8f0D4/oMsEXBn/gUOtFPa/wtpP9dfc94P5S8lfTH1fg5Tfmc590fOeAbRd5R9FOh/mww8Qbn4+9p48ft8H4eP4f6zXM+4vvO0n/I39K+rDk+PrIfu0V6oPyMq4cZHzK+jsy+J+eQ8VfQ7x30N0f9vfFRyv5M/ibscSx8Y6UHqtcs62V4X5Sf9UPWDVlHPEHfv+J3pHH+KXAlunXib4W3KTly3nUf/T5T6E/pP7ezr47abU/zxdPGj22sL56llwOMbxfB15b97Zb5lf01Vv8c7dFYOxwOdtX+B+K7Hr7rkH+5+kV/W/xw78jPeq0feDu9LIM357nX69ePFPwl6/C7GLwArK/+t8b35zLvZr4n/0b0+wV5Diqhl/UhfnPel/PA7vJ3wtcMdBrQ/7eJl6C/avQ2B6yJzi/wXUL/E9nHqejNw3fOQYrnHzXRqwvPuEI8xlL4nqO3TtJt2NFS8o+ml83Vfxv+7tI9wF3AOuxz95w/4fcQcmyQ81h0W4DNwYX4W0Ce18GLwUdLZdiUHuP3ix/wcPRmsruq5DmV/ewgfbDx+n522Z8eF6tfB/+9pKvi/3b836z9WqH/pPa7Ef4jlX+APuqBJ6r/HfyV0O0Xf6f0wjKoOBQcmvOfUhk+pnzRz3AE/Cutz3Zk9wu1z93mte7atYfyf9HPptp3Gvw1tUf8LodIj0G3GzkzHg4H90TnFfJU1d9/pZ9N1DuI/q+XHof+zuSt5nvivt5E/3j5/5CjO36z/tg6cSXoNVXuB+nMS5mnMj9VJmf8QTm33cN4Hf/QEdblicMpxt9szz7GK1cF/1/K/xv9N8kxEJ1K7KRTGVScRs/3SD+gXNbDWSffa/2Y9fJA/pvvyP0Hen3gn4Cv1sr1Vu9+5S80H3wLXgLOJH8Dcsf/PQUfV8qfafzpa/ypT6+Pxf/BHk9J3AR5pqF/XOIGs64h9+XqryTPkfJr4f/gUhneazwby+7+YY9/4vcWem2VcyF8JE5mhPTW8OU8eRfyxR52B4v+wwn4W43v0eB4+OrCdwI4VPlvpfuZX84Ef0HnxpxjkmsOPu+Ct3bmf3Y9IfEW2vsS+XPxe2zWm+gfmPku7Rd+6S/7mwX0F3/iGdln0e9X6L+rfVbmPFb9FuhVk/+A+keqfze89eTvKH+t9rnM+D3e9yukX8X/Av2htvyXpK8j7xj2vIbdnpnxin19kfhZfN+Z9TH8w/T3etphCj2vi/8r68VSGZ5Djvhxhyf+T/5sfJ5O/nn618vgfHAz/L/JHuLfmZn+BN8/0pXk3+37a/Cfxh5+p+caxoEP8DdIvSPVawPfUdLz6CvnSjlvWq59asP3VPzb6Lya8z721QOsip9G6t9v3Jio/Inqz2C/z2uPEfj5CZ3V0q/T73X4yzhzQtYD9Lcu5xb0uwqeTxL/oN7f7OBH9acZ328073eWPkL9J9nVFO01hP4uwN9N5L4WnAvmfKoa/W0Kjqaf+OHeo5+3Et9J//vQU+JjExd7KPtKfOyB9DeFXNmHfUq+F8lfE72+vt8G5vwu53Z7K5d48Q70+3j8qtI3sK8OiYtTr7lx7in81cbXXvjvQ49Pore77zWVayh/kPprfU+879XKvxt/HPo5L/kenzfLfxOdz0pleH7mC/Z5ZGF90DPjrfx5xpcGxomh5H86cZo5v0Yn7ToIvTuUa4qf7B//iP+SvTQg1xLp39C/Df1bwAHwfU//v7Lb8ex2f+n4+4YZ16ZK/1s/WUqfn7Hv8fj+WnoQ/r6mr5zT/UZPD+f8Tn8bw06P1P6X+X4Ae34P3n2lb9Y/PoMv42vG27TXzfQePRX1k/inm+gjcVCJf1pt/RA/bPyv7xf8JdlnDKWHfon/xu+uvi+Sjv9vX3rZLPO+dqxDP//4/pf2P0E7TJK/TdadsXv8bQj/YOv+xFdUw8fG5NtbvdNz/iVdo1SGA3LvwryZ+KcL0G+Y+w2+Z5wdmPhc/D2gXRPP/QL8V9Drxeh/if+F+G1N3kfk76z+w/IH0tfuiZvG79HaN+cEr4GfwN9b+1Ridw+S+/n4XeivfmFc/zPtgd4G+kN3clTKOR/8i/GzDf7fk96d/vrS66DEVyi3CP3Z7P5m41TiZRMfO8h8sq96E6WzPo8/Y63yfyU+PfH85HmJPPFj5nyugfL74jfj7mPSJ8i/X3vsSH9vy9+D/sbQXyfpaYnP1B9qGWdWSJ8jv6l2yTlL4lsS7/KM9Bfyd4t/jHw/0t8n2qkP/XXD7zJ41oDNyLNU/dO3/F/5Ek8X+d6Un3XqbuT/Nes7+P7GX+JgE/9aU3pY/CLa6xb0fzJu92Yn2SfEXu4mb/a1y/Dxvvzu4Qu9xuR8KesL6UczHuPjXencJ2qQuCMw94sq69dd0LsKv9l/5zy5Hfm/yb5ZfvxNSwt+p1L2vzlfxOdV+uuduX/GP5lz7+J5+Ib0Xx/9KxK3B+6GbvyvDyqX+PV94L8J3qbSOb9Iu3aC7/Gs9+nvQePBnNxjku6tXZokHtC6YAT4M3x3wTeZPFnXNqW/quxttvJ19aMu+Htbf9qXXjMPXZjzc/r5Qf2p+Nq3cH6TOL3MH+PI11O/6g3+zR7mwXce/Kfh+z+Jn0E/8VpZBzyqfRO/tSLnO/Tyg3R3+SdK74jeCvhzPhd/U/xPb2X9m/uR5FuRuBJ4foZ/EXxXSL+ddSr7eA+/s8C/6O+2xAPlXgg7bm/8eTPzUO5H6lejpXP+MVj5QeBAcBU6uTeVe1FTcj+gVIbd6DdxdC1zP0r71sXfX/LrJU6AfCfBv0I7bpt1n/wN6ff33IuMn1g/f4Dd12D388D4Iz7IvTxwB/T3U/9H48lg8rzNvm5EP/PxZuR/Dx9j1F/BLteCiWNrn/sY7Gd7+n5CubOle9JPD/BU9PdEfyy9JG78+uxP1a9u3Ng38e/s5D32NA693cF/4+dJ/J8M/9zMf/BvA39f48Mm+Ml48GziP+XvGv+FdPwhF2Z/R491E4+be5/0n3uvOac+P/d7498nf+Jc5rGvnK9+hP5G8Oa8dRS574C3g/m6lHW08vfS18aJfwx+9bKvyz3Di8kfv9Fz+JtOzsxXM/G3G7wXK/+3+gezy2uNP3/RQyfts5f02fAmjvIM/Fa37tlZ/tX6w9Xxx6if+9vH5XvBP7Q9+e5Sbk/0c78643/uWed+dfx6x5Or6N+bwd4ak69436IB+v0Td5LzFvSzPi/e375D/WPBxMdkHZf4mOyX+/ieffSO8u9N3Jn8QeivhbcYH/aF9Lv4mWW8zLnCM9I5XxilXi/wVnjn4PcF9plz2Nn0NYf829JbjdwLMt8+nfUBfk6GdzZ97of+eer3zrpOemXu20sPx/e59BP/4njjyaTEnUnvht/Ex6f/PYaPEfBv7vvB8Xfl3pz89O+j4Fuj3EjyvQl/RakMjs05PvsdkPsv+vX9+lPubzaCP37x1UX/+Jb/y1fW/Rfjb4n2+BpcCmZ9Ose82grdXcAuuQeh/Ea+V+D3EPlDwTMSl5Z79trvc+PjBvD0w+cP5K/t+8G+x/92HP6vMT6sBxOX9jb9fkT+48mT9wLOkq5F/7n/1EP5GvjbO+cKib+P/4X+n1e+LbxXS0+QbkOOWomHTpyH9EDll8PfXv7G+L/O/Pcp+FH8JvhLfGujnOeoPwv+nM+My/oCnTPV/5G9dwXzvkLm1/jrEifzdEk9+juXnC/JL/rHjrFu24J9HJVzPPhXyb/ROHUDuJYcFyeuQju9nPvD8D+Bv5y7Ds45FPk3RK8hfW6A/zbyJxbWB2+je7vyic/uBX/uE9TTDm8U/PtD4GuMj9/IvSr3cs2375PrFf3ly9wLM07l/Lyn7xuQ9w10WkrPj/8Bn7kHflvuR+V+AroHxH8vv5V6gwvnvBfSz3b4KYGNwcrxK8X/rV88g++72dedvh+I70PRX0+/u7DrJezvFvBh7XAC/g7KvXv6bYm/g6Nv+DdBL/vzY/lLjjY+nKr8g/EvG1e7gKMK8SA34uMe6b3Vfy3nM/C3zbhE/y3p4QXff845dfyI6ufeQ84DmuScXvvEnxv/blNybqd+Q/YzkF4nKL8H+vEPXpA44NyfwucQ6V3ItYfvtdHfD/515M892O3lb659sm7PPHZO/Avyz0jcqvzj8Z9135rcT0N/rvZrR7+LorfsnxJfwp+Qe7VT2FPuu+d+ee6VL4cv98t7s+f4tfoW/FtXkr8z/d2G/v74SzzNMDD+t7zzkPE59w5yDyHz4efWJ5+BOyW+hH2/ZX+Y88ecR+Z+YeLBEx9+Mpj48HeMr++Cb4PpvxuT64yMa/JHw/97xlf67oqvRwrzX+a7p+G5Oufh+DuLXRb9UVmXx3/YqMH/ypf7p7l3mvvR4aMD/bRPHJz1yrvkb629F7KDlllvaN+P2d/f+O0L/zcF/2Du8f2S+8fst5L9yGXkH2q+uVH7PpR+lftC9DNL/WfKoGLjEv5zzz/+FfzkvP1K9b9JPJD8JfBvpV7u515h3rkIHAa2l38r+XK+nPul9eh7NXrTyV3HOPSi/GrssZN+kvuh+2dfoz2m6lezpHOv8CT2MR/fTyaenn4W0Ue/UhkeRe7jtM9v8O4Pz+/Sd6h/t/I98Fu8P9oVHyPJ3xqspHz23w+QJ/HN2X/nvDb3L3Oem/Pb/5C3WeLMjRPnk+cU5V+R7o3fJTn/YF/xf3Yv+D/zfk3erZkpfQ75T9LelbTPL9J3qV8L/QXq107cQN6H4NfKu2qvwbOtcnmP6n3t9kbmlZyf4mdwzjel1+i/veH/0/hwMj3n/Gmxdt2UXmYar2bST85HE+d2Ve6BqJ99ed49+MH4k/15/Kvxp8a/ulXhfDDngjkn7Jn797mXpfyd6HdFf5lxaXN6a6v9N0Cntf6zJb19h5+H1W+Z8Tf+bPR/kp9438T/vio/8b8foPevnJezx9U5B0Uv9zdynyP3NxJPdi29z5K+LO/50E/rUhkmXiHxQ80Sn5P4CXAFfQ8xX+d9oFX46Yx+9t0DCn6vxMe/jv6h5t11+Hw69/+k76KHRtJT815U/Dna8wCwJvtPPFnizJrTY86REn97hHpL0Un87bXq7y0/50IZn3+A71H2UAW+V+TflPjbUhnWL7y/kn1Y3kd5XLnEVzQhZ96TOkR/mgj/ijKouBFcEP984uDV3017JL7ioNiH+fRU9v0qe/4q93q0/0hyPqF+4kfWGD++hGdI4jfhz7sWv5NrifxLE//CPnqyj1HKfUve3OvI/fC8x5R7HlXwvSG4MfvcI/6Bwv3fOoX7vzXhvQX8Ev467OMJ4/UY4/eb8Z/n3QH8dc698egH/4mPyvn5aOuZHrkXWni/Mv7PxfQ3qAwqXgAn4nOfnI+QM+2xHbkOod+8X5L3rbaGvyF6F8C7AByeeSLxuPBmPpuUdyHYXwv8J47xlNyPy/zt+ybxQ9PLUXkfwXjejB1tI534yZ+NLxvZJ1woPRP/h7O78fCPMB/VRudh+KaCd1j/HIr/S/BXO35X+tmXvK3hWwL/yXmviXwz2V0v49KNxo/4v5bj71bwO3zcXCrD6uwr8Uut4t9KP8Ff4hLG5VwP/wvZ0zr2tSG5E7/9Onz12ME76HaC5wp0Psz9dOVzP6ctvqeT+ybzT+IDXlB/Dvy5P1q3sP/Iej/xxNl/1NAfEzd0at4vSBxIwW/0L/gS75D7dtHn+tw3THxF4hOyvwYfRb9U8IfEX5L1ZfpB3rNZD9+d8fdJr6PPfRKnJP8b/J+Lvw99v4x++tL3h/Ccid4geHpl/Zx4DfwnvuMP8l+bc0jpg3N/kn128P136a/gK75XuVvGM/jzPlLeQ8r7SJvD/6B0n9xnUn57+Xl3I+9wxH/1i/Jr6D3vhhXfE+uj/Ku530ufz6s/tQwq1oK5F/U4eRLXmfPkxHd2jv+UvdRSftP0Q/gfzLsPvuce7Ez41unvP+sX34Lzsp40Xi0vleGwwvqoHfnm0dMAfA3K+OT74Zl/c59f/cTrZB9+KXzZj2e/04PcNeC7NO+R4Dfvl7SxfhkNf0f6vkz57KOqw392GVQ8Cu8a6WXqFc9r31fuPOm8/9kwcfjwxv90bN5HVq6H9n0KH7nn0DLzPTw/ZL2En6Plt8l9T/SfYr9Xw7Mw87/y91gPTc/9IPSv1z7r8dU492oSP5nz1fTvnPfmnRb8Pau/XIp++sm/4d8m71Uofwv5Mn7WtC7pAv9a5Warn/uguR/asXA/9PKcG6jfmL0Oj/8h/puca+DvicQPkC/3u4vv8+W9uTOyr1P+VPrZEv2MQycnPhO/d0k3pue80/Qy/ob4nnvmxfeM97Zenm7ebQ7fSvpLXFDKb5z3DPI+Dn5zXzD74zPVL86/LdXPPHyC75Vzz5p+toh/UH97E8w+L/673ubfvLPzIDnid44//DB4u2e+o5+865B3svJeYd7HqmO+y/uP++S9Au3WCf7EVSSuKvEViRfN+4EPao/EZ3/Enl4HR5RBRcf47/HXLnZVGN+6Gl9PUf8rcKR5LO/H5N2YxvST92PyLk/efyu+I/Tf95nwkfeZNpN/FvmuyblLqQxXk28L40PuiY7HzxHyJ8L/SNY9yjXJOygZt9F9Wbqf+q/Q5wGZ/7Vj3q+qm/irvEeQd1Tw/6r0ieo/hf972ccy7f191qdg3m+LP68hfuLvi38v7wmsVi73ymO/rdh/3rfJezd532at9joX/x2tY3L/oXhvfBV97JD4VOl74a+S+w3SXfD7o/XrztbzDyc+z7rofLCy8m/An/j0J+D7WjuOpc/m7K6q/jkx97jJV9/4PD33jKT7Jj6RvhfTY9P4YdE53/e8j3JB/KXap4S/c9hZ8T7rnvTdEL/D4b1B/S0T3+D7yfFTKV9P+/3/3rE8T/3s+7If/JN8U/Ddm/3knDLnkzlfzXlq3pXI/af8v0D+TyD/L7Ai7ztotz3hOS9xrZFX/7ww5y/K5Xx6MfwvxV+rXN7/2En77Aw2A49Vbih5OyQOL/4afL7FvvM+26LcwyB/3s/Pvjvv5/dN3Lf2jt87fvDsT/K+Rmd4zsx73fB3Zs/dwGPAhvIzr++F3/j78k5eY+XP0H+2k/7v/Sv0rsv+Mfewc36ddVGpDK9R/kntE/ubLT92uCbvu9JX3k97Me2t/LbwDVEv72I8m/jLgr+++H5fG+NN/FqjEsdMv7Wsl2qDNcHOuaeifwwpvFt5CPwflkHF93nHTjsl3mRK7uuie6DyPfF/WNZ75D9evU8Tp5t4qqyT8DU39yF8bwfPmfi6Uv/KfjZ2N7xgf8X7Et1zDom/f4wLT5P/88T/Kz8U3byfHj9e3k+fSB95f+Rb9PL+yFt5rzL3dJQroT8Yv/l/hn1yz7Dgf47fub368T/varxdxK4rGR/WK5fz3XON759KHxa94i/3byeYj0+BP+9ZRu7iOzV5dzXvreY91uwPdgTvAU/LOYz0F9nX0O+0xCmz38TP7pp3j9DNfizfu5F3w0J+znOzn8x9kfh/rqSPDvQzMuncI9A/cl5bjO/KemkCeBeY9zU+13/X+f47eAp8i9jfY+yvp3Te362e8ycw83XiT3M+nX1W7rfHX/Wt/NXa+aIyqNibHL2kfy2VYda3/dR/PPd64E+8fi3yx69YGb/xByV+ZLT1yoPqvZ/339SbH38r+u/ic3Dm0dwXhX+w/Oy/Eo//F70mLj/vpyWuJPc6Em+SOJMjfN8652Y535A/oQwqakp3iz7JPz//V6D9VuU9hvipE58K/+Z5v4i8z8KXd4xyb/M18t2f+zzK5d2z/L9LS/ot3pO4NfdL7Temg9mHZF/yMbxbaYdj0Is/N+97L8Xv6fITH573d/Pubt7RzPu7v9FHXfkjpWeQ8258TMg9VDB+oEbauz89bmp86kb/VeWPRjf7xfiJT7C/HQBmfF6Q9Qd95fwi8dzdc58P/h1znsQOH1Y/9zYWoZf3/kep39z4vFy9k/JuGf53pP8G6O8KJo65Q/YXuX+s/kr4i3aT+7+Zj55mH5X1v2r0m/+jaG5cOci6ZCW+bsn4hd4n7OnVnPtr3wGJd0d/Fnni/8y5fx/0VxfO/3N/JfdW6knn/fkluZ8Bf/yp8Z8+ID962I/+timVYfyOm/m+ATlnkP97+v1P3iXB14n0e1HeywPjT4v/7Cf6XZx4ZevrGeo/gn5N/GYflP3P3vBtpV8cZnxPnOLL7O8w/D0S/13GX/W/zL1R9e5J/KP+Hr9tC/01/tviei7rvJX4vge+7Nu7KX973ifRnteS+zbpd/KOAL4OQLd/4b3dnBvMy7uHvmc+yXv5uWffTbmz8T9K/X/yTkDuueW8u/C/YblfkvcEnsZf2/zPGvhz4jDgfU+9jOsZv8aUyvBu/eP6xGlqn4xLdbJeINdk/M81LrZI3E/OzZQ73fyS/WresztGfta38RflHeKsb19VP+ekic/JudCl1jvrtVuFcWY+efKOVfZHZ9L3Kvk3SD+O/nPQTCfvQvjzvmneOcn98PiLxqHzW95nUT/+pvih4nfaooRP8/4reUfD+NdP/f7Gu7yPl/fyEl+a+78d8ZX7v/l/vi7Kn6Wf98n/c+T+DrvqAFZn31ckTlG/nqkd/gZzDn0DfIkTy7x3TeZ342dH5fIO/fNZj8i/0bh2je/T4j+jz3+kX875Jv3UyjpIe6xHJ/FJWV9mXZnzz6wvryd3j8Sja6/cf19GH/k/p+L+PeeLOVfsT76cLxbf9yreA36IPvsk3l25gervi7/9wOL9wrx3mX1Z9lf5v81v4Ms7dT/hJ+dz6a/pJ3kP7tPEJ/r+NH3mnZNl8vNu2qfoNst7E/H/649twX+Bs7VD7qUV12275P4++828uZf0S5k/4Ps672yA7ymfdxd64zvvMsffVKF9p+sfVaTX5j0G3+flXqN0iT7yfyP5H5L4HfaXn/vPX+jfiwr3oWdo10bG7c/ZV94fm238P9Y4NCdxDvST+O4NtNvQwj2ez9jXKYX1/bfkm43/+Mvy3kreV0lcYR9yJ77wnUJ8X+L6Gkonvq8rfPlfj/zfR947WYTfbonPgfdq7duDvnqCp4PvsJPEHw8vleH0rLv1j/x/2nZ574Bc+f+0I9jLkWCttDt8Wc9eD96Hbu7n5f8b8z957dGZl/sf2iXxSHnvOPFsk607si5uY/xqB//H1j/5X8f8z+O58D+U94LwlfejT2JfiRsskacYP5j/fc3/suV+10/K5zzr2NzjKviTztG+lxTezU78Xt6PHALm/9juxEfx3vUS80EX+lqLfh90X8Nfl9wXZA/xH8afGP9hp8QFsttT1M//B+f8axf4Es94kHR9dpl37BrqT1XImf+nGKtfdSr8X0XznA/k3bXENyTegt5yT2Y0/neXvxm7vAg/M9lL7mc30/8H5pwAzPteH+d+VO434ifnQ9vkXQP0J+nviR/O+dMk/L+c+3DxT8U/Qc9Tc79H++X/Dx+y783/IB6dc07j3d/ky/8DvEa+5bk3S44tyZX9wWnG627gqYX3qPJ/NfmfoMyPU8Edtfe6vKOhXs7T99aejfD3h3beGn/5v4XEnY/KvS789WefB8B7VuIf0c/9wJyPXpJ9gPY517wxELzP+Bp//Mfo5h2y2PX76Oe+Xn/fB+Y8SvttYbx5Mn54MP8X1lP5uwvvgkxWP/fvct/uavNYS/k5V/7v/4qpn/8Xy320/H/gc/T9Ib4z/3yU9SuY+edQ+ntY+bwfMkV+4hYy/6wiz+HS7dG/Uf2MBzn/zv4x5zN5zyXvt3zBnnexP8x+NfvTttpt3/hPtXNH7ZP3O3PvPO93Nsn+uxA/mXjKxE9+zp4+A7em/w8Tn4af7Dvzv8GJR16W/2sFX1Q/49PG5DoanlfAMfC3ot/2+L8Z/28U7gfnf0SvUm579JvS77Tcc865DPyrKsil3pjcu8/+RPmcB2Zf9bdy17CX93xPHECLnN8m3kT+f/9vXv4q9tdOv3iMfvbP/XHy5X3s+Pni38v/mXwOf96/30h++nvuBWc8SP+vyP91Ra/kORV/Wf8Xx7fcrz/Y/NEOPAh8lj7/D+tyepF4nHXdefSWU/c/8I+hRCpJGuWDjKVCZtFgKBkrkoREpJQpQ+ZKIirKUMmYImRIxogyhEpRJHNESvGQpzJ+1/rdr7e1XOv33P/sde5zzp7OPuc61z57n+uNTcv+36/HNiXYqXIJ7t2wBJ+oX4Lda5fg1TuU4GL1n9QowQe2L8F12n+h/jL4d9ikBJdUgne7EtywXgl2SblOCc5QnrF5CU7fsgR7VSnBP3YswWPx9Zp+H5Lj+fISHISfPdWv9v+b+BuzGYiPJduW4L7kbFKrBO9vgG/tjlF/S8rwrqxegqfRx8EbleBUfFyxYQmOUD/U/5/j72r891Jfh/z1wbrgZfifT69/gMs2KMEd8XsUWLdiCfbbqQQHgHOMz8NblOA+9NyM/kfWLMETty7B88Bv8bu2QglOo8d1yoP034G886uW4C34G0LOW8jTXH1XfLRXv4y9LFb+Rnkj+Dc1/kvI2dF4TDCOuxu/D/A7EJ5P6Heu+seMw7d1S7Ax+5qkXzPttysvwVPVfwLflsZje/VNlT9lr+eylz7085HyKeTvCs6jh+HG5yjt24NXVkMH/rX6bUr/J6B/Hf62UH+/cd3ffJ2Gfn9436XXy5Q/138o/fyHXifS93/IfapyFXq7QfuJmYf097j6G9XPUj8Kf/+x7uxu3Foa39fQbad9F+0bkf8W/N4MDgNn61cHf1PZxyP+LzOe1c3XvdF/qrwER6tfg+9L0buRncxSfpc8TfV7HZ/Xq9/FfNkeH9civ7P2E/x/Jnrj4Y/93WjcWmk/BD+XaN+QPKeje7D679H/mD0dTi8fgzep3wH/D8E3gt5vYR8Xqz+D/obg4y31U7RfCr6q/gf1l9DvC8rr6bmMfTdhH7GHw8D94XtC8wbknK68ATsZSn/3KB+Azy/R2wi9jcEn6Odx8q/T/xt096P/BfBspLwNfq7Exzj8V9buoTwvyktwN/gnkv9+8+si9Q+A39HvHuhvBv+xxmN//J1Evj+0G6++s/796fE27UYV9BO93E/+k/T/E75z8POw9k+wv0etF69tVYIvg+/oV8XzLfP7Ks+hV+hnW3wNxc+z+tWjr2r4X0i/H2m/UH1fz4sv6OVrctTE7zD9tqLvh/BxRvYHnm+tzIPjlQ/Fx97Gtxr+Di2Bsl/gOxB/ldBfhe4A+E9T39L/Y+B9ln4beJ69Zt362PPga/Ido/9Ucnyv32D1ozw/R+PzCPrup90D/j9f/7n4XKp/1qtx6u/A9wRwgPHaGn9bgQ/Rx5bs4SB6/Y18v4MTjNeX5LjV+MzX/zX//6n/d/Blf3AMeoPtT24Ad8Tf5extLDvsDe8Y8m8Mz4VgT/zcrvw0+9kY/WfKS3Ao/Yy2Puc5Wnx+Poz+yeBZ6J6v/2HkybqxCv0D0M/+MvvKscrZX26jffaR79DX+eg/ovw4fX9Kv9eZXzUK49aOnjJ+jfG9HzhafWVy/mE/UZGddlOe0PDf/HTH558N/s3fYPvDUfT4Djhc/d7oPgrOR38Cfe1mXWwE7gr+hv41+uU9Y4lxzPvG2+zlHXB29rnwL9b/Xf2voee25eix/7PznLc+jDJ+Izx/NwSvBg+mh2H6b2ydn63cHv83sY86sVPj+H74V/8cfloZt1baD6b3d/H9o3614P+InF21X0d/K9R3xW9/43sxuNT4LIP/R3wcAU8F9vkC/G3w1ZF+h6jvoH8LfD2l/XvqX7d+fQ9eAA6mv8b09lg5PozDTvBtZb5sSv4aygfD/6P+ef+6CT+7mh9Ljfs38H7IHuZp/7P1+DZyjQAXq++Cz+zz7qafT9CvyF5+xNeGylXpd6R9xwhwOHgc/J8Zr63syz5RPs34/Zr3QnwcS44h+JjkuTYRnG5852V/YH5eCs9c5S/V32G+Ns+6Rs/n4v9s5XP0f4L9jsX/i/R/tf4/GP/V+r+L32P062N+LMJ/Q+X4B+Iv+Brdiugeht7P/h+Y/apx2Zz9HlYCZYOMf/Zr2cfleZbn2Azyr0DnYvo50Pi+qP3e6p/Sbw78Y9QPzf4FnQvwtyj7A/roZxz31b8Le3sM3krkn2H8J2l/B34ao1c3+0v6bZ3nPXv+Z/3ET2f87aR9J/Sjj9/JF73Uha8Lu76OHjvAf6v1YHP2th7fR2v/FPr30ediel6p3DPvE3nPop9V+Dkafw+hO628BC9E9xDtT4XvA/QOIW9D/R9lV4+Aa/R/IO9X2X/pl/fVvH8sZd/xD32lfCk8H2W/TG+vaJf5MQX+Z+DN+vSYcch6dyR8d2k/Tflc60EvsD94G/5O0n83dH+A/7P/4Z8K/ev1v0K5mvpexukQ5Q7Wy2fJXYeephm3k437InxU8H8P+h8d/wl+njXuVeg/7z+XwJt5OF3/161ro8mxPP4T4309/T+T93r/vwz/RfYzLxifQ9A/Az+rrcf3gq3Z7+HlJVifvmvhr57ylfR3mvbxn/5Xv/no/06+9vTTHH83k6+W59PFntNXGPcf4Dlb/wbwv5v5Cv8Q60cn8tSmr1rw53mxDTzvwPuo/repv5h8K+nxUf3f3hgf5vkg9bfgp+c2/5Yrcr4Nf7Xa/26f94BlWUfx9Sb6r8PfPvNf/+w/tlK/N/xz6b+2+v3Z70D9TzNeH5n/w8nxFTs4AP455SW4GH+P0Ofv6NVSv0L9Jug/Wfff7drAd4r+O7Hn1ubFy9mHKG+ivCv8z9PHOuWrlEcqL9c+75fVYxfkb0a+c/B3vPeCm7RbrX8j9Tvbj632njQaHG9ex79eHXyDnE+iNxO8Gz+t8fsZexisnH1AhcJ+YJfYM7zR27X4O4T+uvr/Uf12Vb9f9vvgA/jpr34deV7H39/w1MTf+fh5nT0cgp8e5SV4MrtZax2sBS5kr1eTb1/t85wdgF72x53xlf3x2fjL+LYhV3/tMt5d4zeknxH4fTfPb/6A2fqNN54ryPmD5/UAcBWYdfwD9nIZvhcrX6v/cdanMuvTaHy1oL/byfcqee/D74Pxb9N/NXzlfTzv4Xkv3UN5JHqbwd/NfL5a/Y300LPw/j3G+OX9e0f6+Un/+vr3oefXsj+1f1il3UvgvfHrwf+e/n3Bmuj/zD6amWdN6XEv9BeStyN9T0LvHPKNNx67k+st/B+HzxON9zf0+5HxyfPrXvXZr8SfmvV7X3jXoj+RvZ0AX/Y78bvuQd4+5PzUOvAefQwF36K/m8j3JtgTfMm6PBK+h/VrhI/HyD+C/MvBv9nZf7VrQV/v4e8C4/MKeY+E/0D1D8D7DPk3UD+ZnMPg/Y58Z9HH5/TYGZ5n4G+svjE99sg+izz3Kq+M31/7T8zHXvYr68jxDf5Han8W/dbA11PsKf6Fs/1/Arn+1m+08kj2MDj7QeVrjO/psR/yHobfPF8qWD/ix33UPN3T+E4Jffiq0OPnhfPLnFe+rnwi/Wefeyd+m2c9U5/315ft014Bn2Lf4/J+mfVPuXvmg//j/78f/t3R+9F4vERvc+l1mzwHtN8+/mnlrumP//gnhhT8Ex2UD8l8RK8a+X43H7qCLeD/Dj/Xaf+r8dsDvBb93ubF7/Tak/xPoBe/RBX18U9Mxt957KEB/o/R/0Tje4/+r5Jj2+gj+7zC+VrO1Y7Q/3H2UpH95Bx2kfqB9tXjcv5Ans74XwdfPfUfon8RORqxt8n420O/nI/WYy+t6HOJ8nPa/QTv0fiZrnyp8sb4rgr/CvJMUb+7+TnTelbffvht9A6wvzwIfN38XYf/GvgvNx45L875cA/1TdnfaP1eUb8Qv2/6/0Ttn4FvL/r8zv+Ncs6pf2fjv5Z8Iwvrw+PGZzr7uYG8X6j/nn2MyPkHPNlPrlT/dc6b8p6W+cBuTlQ+RP3J2T/DM1L/a8jxlfadlbvpN5V9bF5egrvFbwdPB+3+oq9f8VumfLx+j7CfMvhmo/eH9lNy/m48V1mnLsLndHhuJ3/WjecK60kldnOG8s72CUPpt7j/zb73M/AC43KfcT4InqnqB6H/Fb5XGv9t8XcK/d9OPzsY75zP7Wy8dwEbgvG73Ez/D8M3HD95z96Ffr71f13yVqXvIeytHL7DrT8vqu8Df953z4Un/ve8/66kp6If8kb89lJ+kB4epJ8Ltd8L/RvxvZf6d9SPQDfn/QvwU8f6cAh4v/XhXe131X/nrHv+74b/7M+yL7s856rZn+BrtvZ/G+e27PEech+l357Zp6dMP03yXsyuNsz7N7oXxg9AT8u1+yr2St7IPy7niyXwj9/gSf/nfCBxGTnPSrzGrcpD0P+efuK/XaS+B/pjjUs1+Grjv7Jy4iNawzeT/j5jX/FnbY7OG8o5N068SuJYco78tPIK5ewD78XfQfAfCK72ftIw57PmV2d2WNP87oj+5Tl/ABd53zmTnQxnT5PA0/NeQR+Xm+9r4bua/PXI3xLd+FdOMP+uhGdZCZTVtv+4g7wPwt8QvqJfJ/6ZM+KPNR4/FZ6fFWMv+OsBds/7F/1Mip8Tf6PVP4XuIXlv1//9wvnGrfh5ubA/HKvfh+XkNh/2KayPXdDfWrvMo2K8WHH/Us16lfUs61zDvL/Qz3T85DncinxD1I/Uv0PGkz1Pxd8b+DoG/i55PpL/16zf9hk3wHcgfgfrvwP6tfCzGbs7N+936l/Lfp69Li3E2V2c8wr67mDczlfO+f0e3tc64eMVeLbEzwHoHZhzocwv+A9jH3vD85Hyc/hYFb9V4oLo80b4z/A8i19wUs7RjE+eH3Pp/Tf0W5G/Vxl6YObH8ujL+P+t/1nWgW2N7wL6uDPnNNpl//mm9l9m3UO3Cf5mqj/JupB9ZvaXJxi/tWB97U4tL8Hi/qs3Ohvg72tytQSrWQdmFs4jsn7mPDXr507wJ94374+z4K/tffZW77fHgn/Erwp/4pVuwPdF+l9v/cp54a3GJ+vbT/TxG/3W8HxsD19H4x//eyN6yvOnU0Hui+CZAf/qxFvgayL5dsr+oOA/7EbPVfP+qP8V6ifD31f/NeovhHdjsDp9/oC/duAvYCP6P48ea8F/EPx3Fs77cv7XzjzL+V/iWZuhm3jXxBc+qX0t9Nobr1PoZ+/EHZSX4FHm97na98r5AHgO+B0+K2g/hR6bmS9vkWccftbjYwn69fXvaX4caZ1axN6mqT/I+vg5Pbxo/lfAd84Xfo6/n16yv6htPq0Dp9jP9tRuV/1v0H93fPZlBw+lTB/703fiu4aS/z85F4Y/6+/X5H0+fvXyErwMfw/RZwV6+9n8fNP4/Kn/aPwNxG/P7AML8fT3gTfk/Qx/0/C1V+xO/Wz4msV/T457zbdJ4Gn4vhe9vB9cQq5G6lvQW96vDjX/24CHgcvz/kPeWzwfhrGD1vrv4f2vd+KwyfEBfVxOfwPAK8BZ5PgLu9PJeTL5W8B/k/rLwF/Mx/3pt7d+18ZP5P+u+p9Av8ei9zQ51uNvU/JMwHcl5Zz37cUud8XXg/RXDv+38W+Do6y/9+An8e8d9Uv8e0fj8yX+PtH+K+VL0XtD+xf1fwFcVF6Cm1ify9nL38ZrP/jvyLmRfrUTV0tPF5iva8zj1ezlJvKdlP0hfHWU+7CPeomPpd83Eo+Iv23Qe64Q//C8/omreV/75rGD7O/UV8R/H/TOxv8fOd9Sn/O4nL91MC7d8pxFZxL8Z0Zu+vuWPh5KfJ33guOzTnsPbYle2xIouw/dK7U7KfGwxrOP9eNIcLT+j3te/gaewd42g+8y4/mUdbgT2M747EKft+G3G/pn5PzVeDWmx3fobYn2x8RvZh7nuTINbKf/mrxf0n/iq5+l/0Ppd8Pwnfgw+n8fzPvVe/r3NN+60Mslyi/i9yT2XZncf1qffsp6j59X0c9+NfvTxMskfuaDwvnatfBdBw4El+Hv7hIoO4Wc0Wf8SyvQX6qcc5AD8bcN/TbBx8/ot9aue/bN8NQg9476VzK+b2q/HTm3Kf//tw+e3+I/1H6kdltY5+4i/285X01cJP13Yx/3l0DZx4m/Uj5W+0fQO1X9iYknSRwye3wt+VDq76DfbdnFg9bN4nnhzPjHs3+DZxB972S89lTflR0lnqtL4oPocWb8s+bH554Hy/XbGd7/JF7b/Dtbv2nwPkc/LYznQ+bPTvCsj38W/o3Vn0EfnYzPfO2S15F8j2/V35n48dCNPw6f78e/y77eUj5c+/sy/5WL+QXx485E71T4e7GP28k3Bv5nPL9n08c51quJ9peP4PcOeFskvob+G7C3K+i/GNf5mf45P4l/MvkwVRIfwH4uQv+/6CxAZxb9xD+c+XpVCfxzvlRV/Rz6OVq7zfCfeJ+8txbfZ1/yf/YXo3L+i9/ryHsjmPfD/uqf8/+J8E00/9aQ/3Prx3bhh30lH65C8jWUH9VuIf0m/idxP8kHiH9pu+STqY8/8Uj6uco4F+NfV7Gf7bS/UP2v8B2J/p15fwOTJ7kAPA4/reP3oZ9d4E8+bN4zp5vvyY/tzd7neU7X1O5t41GZPj8HM445D1iC3j7o75x4X/XL/H+F8aqrf0X8Zd/fMP4g8izB30GFuNXEsQ4MXvr6Gb2cxz1Lf3muJe+omI/Ul30MSfwnO8j7/NrkO/j/cvzfh7+c83crL8H40/J+n/frBnnO4CP+6hX0v0D7xAkmvmkx+s+jm/PInD9+Yd0vxklPgm945E68hv/rwr+9+uSTnQp/1peq+DlY++e0a6L+TPR2KOSbJU64L7s5D7wK/jmF99P7jUf87JmP+2l/T87Z4J/9P+IJhuMn8UmbKS+GN/6ROYk3tD5P9Zyqj97F+JnEPvqyj8rW7+74aJv9uvaT4T0WPzVDH593aZf836+M76ngUrBu9svm+TP22fUSb04/Oye+iR7reP5XgL+65+dfeb9U/pZ+xuqedekg5ZyXnAR/3tuuzHmw8Z+l3wB6PSznWxk/eu2E7vHkSH7VL/ol/irxWIm/apt4Qu1z/nN11kfr+QJ4blcep38F7SvmnMf8vCT+bHZRRt656ivip4bxr2xcZtD/kfBVYA85Fx5vPud8eJ7yU2B3sD96ie9srn/iO/9kP9l/Jp438YfZf7ZO3hX9ZH05Un3OU+qx67rgPPb1Jnlugbc9frJ/7+H/CfQVv23OIU+iv3novwN/N+PzgH1P18QX47c7fGvwUT/nY4nfhT9x7YkHzL0D28P/Uc7b4FvCXn5PvmvBXxL/0VJ4jjLen9HzAPLN1C7+4DfMq/iLs9+qRl9VwKrgffSR895f6CnnwEehn3jNl5KXRt+J36ytfzE/83f6OV2/PE9yHnpV5g+5m8WvD9+cnA/FP6L9J+Rapr4B+2luHdgQvAvd5LtuoX3yYKtn/2HdnA8uAZvmucL+kh+xofWiMTw7ms/J02mLfvJ0Etf7Q/aRyiPImzy9avR9of4jcx6o30/xm8fPwb5uS/xI8lvpK/nmv9k3XQS+DTaDvwt5TwT742dH41fLelAbrAMORmcWezuAHY5Rvpn+J2s/BN5HlOvi9/qc+6C3wHxYn/lLXy9n3LQ/jj1sSf6Z8L9ayMOtSX9Nk48Sf1X2d/S5yP/bJY9J/RJynlLYh2f/vdr/9xifSsl70r+l9XK++t6eM42SP5JzPeXco5Hz41vJd0z25eUlmP3DptrnXph74vcGp1vv2uk3Cx/l9FRRv6vo9WL4dtF+XM4VtPsG/BLfD2h/SOKW4FmMfj/8D9B+y/hR1F+Gn8RL9ae/qfTRzb7sXPNsM3gSpzaN3SVvNvmETeCbYn2vlftLsl7Fn+/98ulC3nXyF7/F35/KN+M/69HCvF9kPwT/PujvSP6l6q+E/zf9Z5TAP37G+BevQu8E82Wx/4vnIfHXnUL/j6Kb/dNVyZtKnFvyf7Qbm7iqnGvCEz/9k/6fgt9z0B/KPld4njwP/zjt876xtfm8tf9rKue+iuQnJS9pN/wmP6keeo3w2RCde/S/3vqc59MNynk+DYC3qnJ9eFYof6m+GB+zNvlviR/VLv6UivRzO3qjwPXk7Ie/7NdyX0biaTeMfzfnD/S+VH01+LdlvxuD5WDOk880LxK/dwD+dlL/Nf5n0M+a+PWMf2N0F5IvcW09yP86/veNP1z/3KMw0/jHX9mWHhuT71r76bPVV8XHWvq4IPfqoHe+8pfKz2Rd0S95GqMSP4Wf5J81oI/E7zex/k7H//Psqbf+OY/YLPsSdM5N/rj65K/HX5X4uWWed4viX8pzMPn56F+VOMXEpdBPH+vbUbnPIe/X9HhM4l/iz8HHxskPSv5XObrky/n7B2X663cHedomfoG+ZkSv+E3+3XL4so96Kc+/+Nf9H7uKncW+qnv+VAVnw79L7ger/2/+I0/O41orxw+T89icv35Krofh+QUfRyQO0f+xu3Pij0HvLXIv0W40/bRAP+fn49FJPNN48l+W/GT4ViROkn7nq68Nz6bGbdP45+Grn3Nz7e/Sf7p1JedfLylfkngReMvY2+HwJR/63uRtK6+AJ/nJlYz/jvzXm5NzNX09SK6HCvELQ9Afa984BhzgeVVV/d7wfZx8dPQbJT7KfFlh33tf4vka/Jte4ijCx0tg4ufjl08cfeLnc39F7qvI/RVvqP+l8P56M331VH6W3SZf/CT9J9Bf/Jk5n35av+SfZ/29njy74uMY9Huo/xsfvch1dOIH9fsqcem5V0x9nxIoq4rvnKePy3qW+GX9k/8WPB0K9028XxjfA+h1pXW8uL9IXmniPhIPk/iPa+D/TP9vwPHqR+EvfsAJmV/ovK8+eewPqD8r55/Gpy34ZuLI428pL8G8rzVDJ+fLufevuna3259Xp49myrknYNPsL3JeQV+Hxl+hXfI2WxbuL5ubeHv9i/7WvC/n/fhy++8vEl8KRg+5fy73zo2l/2kF/8vPBT9v/DFZL69B/zP9c/9NzjtOha8yPSb+4nftkw+dPOnE7yU+fQH9JE498em5f7K6fcQ6/LSB5272Mw6cA98P+G8a/xE7LeanDIw/Hd4VeW83/lv7vz7YKfcHJH8Bv3ugN4se4ydtnfx1fHyPfvwnyTf+tZC/MZP974W/ZuUl+GLiEnK+E78VfC1y/pD5V8gHfAScDPak98Rb5h6ax+G/m313t688HMx56Hz79Y76v6dcR/+2xuVw8Agw8U2t4X9VvzbKOa86gTwDy0twAjrJL00eYM69cl/JxII/vZi/l/fjJ9SfTw9nobsnvMXn8jT9vgJ/pI/+4E/gqewo+VTJQ0heVfIQkv9SjNMapf7DnId7fp6eex8K9jEwfrL0J2/i4Y6E/wTtFyS/w7qY9aw5Oedn/JPXqb4MbKA+/s3kv/5Mn/Fv3pm4WrB34b7apvSb+/DOgmcYOntZr+dkXJS3I3+75MviO+e4Ob/tH/zJAwcTXzKO/Gdat8cq35c8G/iyX8p9Mnl+f2I+76DdRPbbW/vh8ecV4pjeJO9FWffwFb/kL+Sf6v9z/X8bOrnv8cfEaeb8TTnnj7m/LPf+HZv8Bfjjv4/fPn783eH5UfvkbeW8rUruB9HuTPVXGKc/4f+e33Mp/Z5HP5vmvDjv9/AmPncZ+U5RvkA598t1gb9v3m+Sp5j9M320sn/c2jw6Eb7O6H9g3YmfaQH7in/pTPLkPaT4/pH95Vj0ss/M/jLx7Im/ynqb9Tnn98X8nIUF/1DuL4ufaKXxzT2c68tLsAl+D1R/lPa5b3EefGNzf1byvwr0s56Oyf1W5Fpu/R4Pf+4rSdxq4lizvvcz3ueDF3vuJH+3Erq5R/Ju/CWeLX6H4ntv4hM6aL9Gu+7kPF19u8L5+bvkaoK/or8zftDkJ0wsgbIhYOLXz6L3JuyrivVtjfVtnXaTyD0BHFSIw16e/XTmET5/IP938N8Ivp1znOw34TtS+RT9JoIvmN81s69SPpl8a+lvSp6r8fckP0d5ONgSv5+Wl2A/+M4Hj8NH4g+eYQ9fs6OnlfeF/0J6iJ/qbjD+qbqee/XA6jnXAJMvkTyK5E3k/rnkbSSPoxE95hzwYPN5Lvn6JR8Q/7ua36/D+xi7OQD+OoX3g7wv5H7w+P2vSz4qPSced43zltzPdxfY2LzdJ+3p9VD8Lk+cOLnbqR+Q/AP1n3iefQqOYS8drHuJx+2of+4ry/v/HvT1IzgR7Ktf8iv2Js8u8XuBY+hjF/p/Ht155Hor84HcydOfWY4//Dyu3CDnxzn/C34w+b2J7yne39I9+cjxX3juJV9wgvJP8O+vX4XMr8I5T56ruV/3r83/3f999Ornfco60JN+77Ue9rKuNgVrk3sOfO+AdZInWV6Cnya+yTyonHvcM/7q81xsbH4lfuVr+qnGrnPPQvOcPyTfDr7EXd6ufmfyfx5908/b8LRDv1/2z/h/NvFB7Cfn6jlnb0q/8Qs2wG/RPziLPFUyT5RPy/ljzgfxk/mX+5KeYm+/s8/t2OGVxqeB/fw24Dx6XkX+xLdXhD/zKf60EfFrGPd9rJNtyHs+ern/IHl2iV/O/aOH0n/uIY3/e6j5dCPYgz1tRd85N65GX1Pir09+q+dJn+Rr4SPPkcSDVSrEhaX/kNxHTX9zlNvnnBRMXvaHxjv52cehd6L6JuDf8ScmPtxzI/dB5f6n+KNyP1nuS42/Kvv+sYnLZx9bZb+Cn8zz08tL8GH1yb/P/ip5+MmviX+3Ve5BSf4o+3nYuF8ObsR+ch9x+/h/6SHzuhL8OXdPfFrx/D3+hvgh8p2M+COuRe8aMP6tD8iX+1xrgk3A5FNuCO6gfV/62Cjvi+wneUXDPB+SX7TMvGnJPqvBl/sVrsn9X3lPUZ4Bf767EP9s7hnO9xdyv1Dx/fEy5S3Nr3nm+ang8/Swu3yO3O9dWTnnf98W4sdzj0Xix1fk/Fr75Os8Rr7q5sO0nIsqvwXP7jm/0n838NrkYRvXPeHNeW7yMZInk3jm5CcsyP2riavQ/q5Cfkrin7vnfBQ/6/B/XPKnwKnmT74fk/yEi/F3E3x/Ffyzl7Ob+CXjrx2o/3nJZ8z3KJRzrvpm7teD77jkR1l3TqfXDsrHx5+d8xflleUlmPulytlr1q2qyUdMPDf7y70CL+ceZv07sa+/s46zn1/pN3kg68Gcx8SfcB29fUT/+X7ENcYv/oHcP5T7KHL/0NnkGk6ufmBT/ROvXyv3tyhPSHyC+VAj9yDQR+5Le8K6cT65++m/S/Ircz86vi5IHB754h85VL/4R+IveYi+E8c/x/h9GP964Xw94577l4vx9XsZp8TZJy4mcQ6Jj8n+ZZPsG43XE9bbSVm/0M+9Wh/Aeyd8eT40yT1r8Od58YP1tKt9zIv6NaHP3FeV+6uS39oy+QO5v4kcW5k3Q/BXg9xNtZsAJi7jL/hzP3LiL3Jfws2JnwRzn3qbxP3rf1bi7vyf+xZXZT9vnd/ceB+feGXzJ8/nGfrl/tDYT75r8xc5c1/Ihf7POUXOQ3aCP36cnvEfaN859+skHha95IfunvjO5JvkHlT85fsNs8h1WPwWYPIFB8B/DT6K3w9JPs6x8MxW/rjgn+tD7nxnoA3+joC/Mb4eNw6/J34hz4fc+5k4dvqOPcfOn1KOvVfy/K5JD2+Z/13yPDVfe8Abv1Hu/9xNv+QrJl69XuJD9F/juX0r+8z9WbPxVW5f/3be38h7vf+74zvnRTkfSrzR0thBwT+4ugTKFoItwXynZJT9eV/83U0vub8096NcSr6BOW82Ppuw/7zXFN931uA731n4RTn3AxyBj4mZ1+jkntSLjOsq8uY7BRXQz32SNdFflnOT2J/6o8mRfe0y9R9bb2+w/h6f/JDcf83eEw+Re5duoZ9h9PYX/L8mPx7/+d7WeeQaTF/5/tYq9pB7NfuaJ7lvs/h9hqsST6j/ZPzk3DLnmDm/HKLcmVxfwPcHfP3w2xf8MnH+8Cd+bSX4PZj4tW3xvSs56imfbXwXlUDZpfj40PzagD4Svz1AeX7uqdL/1dxnWPBbZ737Jt+zAe8kd/R7FHzJE70r9yfCn/sKOiQ+llz5ftT60Fc/LPrX/2P6uov+5rGHxfidr35u/MD0M1N97pOcwk7Gx5+S+z/Qzz3q+V7L59odmuciPZ6F/9y/db1x2Rb95BXmPuP29HVM8snhGab/F/Avhvc2esz9RXsoJ35wX/zm/aMc3U3wUVxPJ1gv5qu/gVyHZ/2mn/LE/2vXIfnY6OW7Pm3pKfcDJW79i9yT6P/cL5DvHeQ7CJsoJ3/2VnKsBxPn9CT6OS/J+UnuP819qD+x9188Z85Qnp3zCHab+67nKPdBbxC+PkQ33ym6xfr3Nnu4hr5yHnh5eQnmXt183yz3wCW/cofE07LnjZWPT3x4YT3JevNp7mFgt5OMU+49fBi+n/EzA72e+uX7Il1zPlPwzyS+P/mu/cif843kw+b+2xbZf+S5prwg+Z05z9a/Oj4Xar9z7qtK/i79tjcuz+W8hv4vzf2y3hu2897TBtwU/83QfzTxhfA3Ly/BNfjvhb/cJ3184ojoP/ek5d6P+wr3NeQeh++U56pfXgL/xKXn3ufm+HtDv+b2rcX4oFPYY7fkAYGV8J97zfbDd9aH/9LvJvD2Vv4b/mH4WALPQPWXwDMT/4PMm07GbbL5cyT+L8NPviPXF/74l3Mvau5DfS155Mknwd8v7DJxwjl/6VgC/3zn5SXlcfH3+z/3zxW/zzjJ+pZ1LfHjbZK/6/3zrvISfFK5J/m2Sd68da94v1jy1hIXUcxfy3tlvpdXfL9M/ETiai43fomvSfzdqPgl2WHsd731PHnZ78T/nPNi9TP9P54+LtF/Gv6zf9069zHg7+gSKBuUON/En+b+r8Rl00fm8Qfq/0i+CPlPyr4ZjH8r97TuhY8X8JfvexTvGVoDHq3f98lTAk/DR/wCNdDbJ35d+k7eY6v/sb/9wvhX1v6fe0aV+8HfK3TznUTtzrXf7Av2Bv+KvZsfk8EK/k+cRvF+83/u+cj+qwTKWvs/973lfs490Eu+96v+z/eLWpE39/1ORmd44nfRz/ftuvg/8U93my/5DsYZyrnfK/cr5zxhrvU6+8t9av+bbtsC/U2sN/3Mm9n4yPf/1qF7PPkfhO9K5bx/5L2jTP+8f+T51lG7Wujvp/0q8+Uz8yJ5OlfH/537E/V73XrYkLyJd8n53Cz9E//yRuG8JOcn3yT/H1+v4Xvb+CnxX4xfvkD7e43PTuwxeagv0eOx6I8l1zhwDNjXvMj3PJ4hX/G+yfiPch9a4l6WxP9q3amV71DAm/z/3P+yCfv/EXxY/6vt5zrrXzyf6JN4R/Kdjo/ks4yArwW6g9E7FP5832yCcr5LcqP+P5k/+Y7zEOVvsu+xPjyW5y395Py9jL3n+6xTzY/cP9vR8/LerLv+T/zGFf6fah1fhP7mOT+w73un8B29xLd8q307+rkEvsRHJt9wS/JukXx09Yk3ShzSx+RO/MJP9J/vOSU/cQv9cw9PvouRe3qaaH8ge6yB/9znPU/9FvAfAe+5uf8M/UGF+zSmxd+e9Ux5I3xfrN+78Of7pflO+ur4+7RLfkPifhIPlPyGfFcp301M3v8X8D+Z+5nwuYXyQeRZaL5/AH4IHpb8JPpY4f/cn/+x8c99YNezs8/BfB92Xr7vknVKuTp5/w++3aK3eJx13Xn019PzB/BPRChFSYvUWxHJVhRlyZ5CyLeorCmlbFmyhOxZKglJWUsiWRNZkyVrJdmSvY0sIdI34nfO7/14OqfXOd/3P3Pu696ZOzN37j533tdXrvj/X7dNynDiFmVYrUkZNqxehs81KMMnNi3DzvI33rIMH25Yhq/VKMOq25ThyEplWBd+y3XKcMlWZdho8zIcrd7xtcuwQakM91TfhRuU4Vj0j2xchrM2LMNzGpXhttJT4X+l3v3UN1c96zUtw8kbleE48CHlR8GfuZl66aGJ+n9W3+31yvAa6fnw/7t1GR5StwzPo5/vUh7/H6G/qH4ZPlWrDG9Ebwl99KOnHtLR3x/wdkZ/T/QHo19X+x4FfkvOx7VbA/xtLX2SequXyrALeb+sWYZz6G9b5RrVKcPP8LECnfbkH1WtDGepfy7YW/5j6m8J7330f2NfHbTnC/Q6EV+L2NcJVcuwMfzK0o+g/wZ6nemjs/r6Sn+B/67o9qTHFfLH0tet4Fj2eLL88+GNwO8yfJ7Cvk6it/3AGuy4H36XrYc+Pr+Tbk6+Q+lvV3bxJLxf1Hef9j6WPTSB9yS4cP0yPBJeW/Wci+865O+uPQ+X/5J09NPP9yvQuRb9X+V3Vn8v+nuY/s+Svw77OIDeatPPSO3RD94U8nyD3qnwZij3tnJL1P+Q9FxwD/rvpv7PjT9743svcBj5rqHvt7TPWPZ2svxT8XEOWBm8Dey8sfrYxzzj6BX0tSm+jwAPoI/H0e+mXGNy7+r71eAx8NbF9yj4F5bKsBW8K8n/hHLv0u8+SdPHfvT5X/r7Hf1z4N+p/DT1T0b/GXo9QftNQv9l+fOVvxy8Hn/Pqe8T+lqivifg302e09C5Tv0PhY7+8qXvK7XTfPY/Ht6+9NgMf3vLfxX9Eej1Isd99HGj+WgN+DD4M/4XoLtGeig6c+jvAf2yj3G8Gthe/c2NR4cYR3c1/j0Dvwt9dFRPG/paSY63lP+dHhqhd5XyT6J7N/3Wxd8P8PugP4X+3iTHyeQfRn9XKP8euofi/0jpWuhUgf++8m2NL4/pR4vQvY58G7KrE9C7RX0PS0/Rfzqpp4/0ZfBPJtcc9T0Mvw37eV355+Rn/dIF/U2UfxH/L+PncXJ8C34Iv1H9teU4g/2cI3++8i3kDyf/QHgXsM96+D+M3i/QLnfg7yj8D2SPf5pXDiVv2rOj/GPgDyfPB+qfwB7WUe5u9rA+OW9lN1eh/6z6t4R/L3qXkm8GvFEZv9nzjeS7UD3b4edR9rnY952sk+aVyvCBMqjoCl4L9ob/jHJZn12Kn6zPqqNfA9wYvJtem2nXlWA37dUCnaLd7k2+26WPZ7cZ9zMPZPy/jzz3gh/Q93n0uA9YVflN6ekq+hwl/wX8rFbuW/rdOf0YPwPxuxd9TNZ+j4LDzS+7weuFn6nad0Pt/yb9ZV12LfrvFdZnf6uvj/bbXP6t8rey7jwUfkfpbuTbgVz/ZN2j372v/iPQOx6cr/xF8DP/nyr9snp+QKe6efVY66Ax0h3Qm6K9DyDnHr5vjN5v0lkf/aX+w/TPr+lvW/24rXrmoDdC+W6Zl32fSj9V0L8k6ytwNf7PoK8uWc+j9xb9NGfP+7G/HaR/Qr/lumX4Orq/mZ+ezXxLH0vxNYvcx5DvQnbyPrrZF0zB3zns+lxwANgL/W8arC3f5trrFHRWof+79Bb619PkqyK/he+7a6/blX+wVIYV5H1K+Rczv5Kvl/apjs6v8GqSu6nvHdHvSL4e2vd48L/gc+TZX30NQxd+1q/zjQcHsotP2dFO5LtS+eXwO9NX7He+/Lvo80vtP4r8v2v31errZT67ifx7Gp/2AueR90b51bTHDHQXqa9a9uvGiyXS/eBvnf2X9fFEcl4lvWupDLtmPWxcaaLcNvBvQu9yeuyBn7rkOzHjQ9Z/9PR+5k/2VgP9vvKX0t/e8Af6/pz0TuTPunkk+W7Gx/nq72vc/A6fOQ8Yi34X+t4SfEs73Yr+LfjKfnU4PrK/r80ujibfMfT1H/n97de7xD7Y3b74iz10gf+J9ot9XEqf25JrYKkM98L/cHYxQPpU/XwO+7wQ/lnwhoM7y/+VfexE/hXSR2c9Zf5/yzr3NPr5GJ1r9KdG7OJh8k2CfwF6p9DjluSM/Qwwb92G7jB09sffT/jfX31H0c8m8k+R3kW53ZQ7HP09jZ+LjZs3gxfJb4i/rLtnaM+F9HmX79200/34vEv+ZPVW0745DziP/DUC1XcJOgdKn5jxGd5u5PmU/RXXM/9I/0mPmRcuhv8weo/Cn4X/H/Fxlvw35Z9ofF0Jf4163pO/h/7zI3mPQW9P+j+RvhZk3SSd+XEAu8r+fi/6m4L+lfg5S/lV5Jsk/yT29zr7GxM7hLcx/R8Nbw96qUne83yfqfzOvi8Bj2cP/enhA/y2YzdL0W9l3HgNvV/gV5J/P/km0d/SUhkOpq+n66+NvyX8Q/TfnLM+Qw+ZX77PeVjWS+g8LP/2rNvo9VjpveQ/Bv8+/G2D3045rzI+vQNvsfQw+t/SeLabdr2hShmeD/9k8sxS//vo1C7B0+9nZp2Bn8nwjyPP3+y4CvyDyTte+Z9jt/i/Cf0pvo+C/4322wx+T/JsSB9vKreRdB3t/DQ72JccZ8Hfg/zPk+MFsBs+a6nveniLtP+h8Ffj70f8Xqr+28j/LHme1j5js36l/0fot7Fy99LXF/Abyz9dPQ3Um/15U/3nO/3iFPhHwE+/GSq/jvovp5+/go//f9RTAT/7xTnkP4deGrDjevRxMLx56G9HvmHZn8FrhY8S+jtZ9+1qHb1OzgPAA+H3VE9v/Hwrv4322R2sl3NU+VegP499VwKbFdZLSwrrqQ70M5X+zibXLOUqZX2N3lz1vAceBr8yvrvSz4XoVIV/ifXYQnL9otwrpTIcgb916Ptw+uhNv0uNa8eZZ0ex55HwK+H3OfR74zf7j+HkG4OvjCf18f85el+CX+vnY9U/IP0b7JrzlZxv5VwU/Vfl7yP/dPpuqN3eMc98ju8OOV+F/1bOh9jjc/p1A+WvlJ5P3px/f5t+lf1LoR+10R7pZyeT/2f1rYHX2nizU87Hcg4B7yr87omfn8m1JOfT+JhN/7PZ7VHo30XPp6N/Evovozci9yT4HZTzwBI85W9h/9eqb7L8t9lJU/TfMT/lHupp9HdQfhL9VSXfH+jO1P6faK/u6cfoT6C/v33Pue9P8Pvif3bhfm+y9eaX+Ps+58b02paevoJ/Env+xLg9B3wC/p/sdQ34RuwV/zlfaEC+18ndTf5U5R/JuK3er7Xfceo/HtwIfy2U2x3/s8GO2Zein/XDNHAs/E3xf3gZVHyGz+/At9EfRS87wRtIjnXh/6Q9Gym/pfoHqH8n48fOYC3wGeU/YRc31l6bfvNSGY62XjiIHR8MDtT+92e9qX0Pw2fW+2vYS+aHpewp64OO8O9U/m31X43/mfT2VsYt8m2hfe6gnytiR+xvAPpr1Jfzzavw945yt7On28Aj8Jv9ZTP15/z9G3zUgP+q/rUR+m2kz5D/g/l3APly35D7hWML+4Huyr0gfw/4fXOuB7+qctfC/5Iesr6vkvMreLdrn4Xa72P50+CVyDU380nuyTI+5TzA96+lx+HvEXaySrorPdc0/r+g37fF/6vq687uGloffCp9C/m20a8znjWVHqT9F+H3K/UdQx+3kLcDfRxNDwPxWY/9NrF+PA7fy/C3CL0P8bm/dO5T3qKHnNvPlH5IfdfQb+4VdsPPO+jkfuF14+czvs+UnoresDpry9fa96rk3w79V/BRVXtVRr8Rfi+XP9j5wu5pR+2/febJnK9I19EvtgDv0T8yfnRqsDb+QN//xt8a9IfSf3H9+UTGTXJcSt6n4p+ifQ407y8CX9J+b9nfLsXHjujnvvxL7Zn1c9bTWT9fr75HMk7jJ/eHc+Rvr/xpvg/K+ZN6sl/Nfe6J+DtA+iTll7PzX+nnTPqZlP0H/oen/en7MPmjM/7CL64fn8TvN9IHqb89uvviP+vn9+CfjY8D5e8jv5/+O9s4Olo/vjXrqTKomKzesejkfjvnpxfTU6vc39DX5fjLOf+52nEF+tdl3w7m/rEr/d4qvYvyX6m3Jvv/E/9v4n8wfc7N/EivbeD9ZH7cCH9/5Lwq/jr0uAn819jjDvj7Tvrq7GPUuxv+aoAv5P7YeFcFH2+zj/Xkv1KBbvx0cj5Mz6PQP51cP2ufAzOf6LfZJ1ylfBPyrSM9gtyDpefi50bfvzav3SDdnRyfarchWXfTz6Xsry153iTnZeAvyj/L/jYtlWED66xN0R9A3lbKfRg/rewz6eHHnDPi50RwkPaYQv59jCfp33saDy4j3+HsZZX6H4R3Z+65ck7M/tJ/02/Tjx9S7nz0PlFf7Psb7fs8vAfCP701kH9U4f65ZLzL+d40+poM5n73MPW/Zr6sJH2L+j5WT33z4QR4z9DzOOWr618591038wP5H1LvI+zmWHB9+tsv93vwXtTuC9Cbrb5b2eP66NUi3/mRS7lzpXvA/5u930uuvqUyfAz+CPU3kb83OhvBrye/afyb4E+DP13+P77vTI4t8JtzyfidHUxfOZ9sZ7zupdws6ez/ZrLPTuA/2mMKflahN0O9d/j+g/arpX+vZGeZp1vnnCHjLXm3jX+O9puWdV/u7dhh1r/tCv49U+UPZI/VnG9cWIEv5fsrPxnfbfH7K37q0m/urXKPdb90a+uU4vlaztVyf3AVvd2dc/LsQ8Hr6KWPfej1m6wt9w/p3+T5RH2XaZ/sS++Wn33pjpm/9cdr0T9b+nD42f+9VirD3dC7Hf5F9HUn+fbFTzP1na/8Per9Hp0hqR/+icqvIdcvyn1pXsh+6OPMA+hVwW9b48Ry6QeVf1S7rOf7upGX/u+yXh0L3gn+gJ8N8d9Ue7xEHy+wx3/U2186dn8j+eaxo+hvb/K+lH06+Yr+ObvLbw//T/p9UH5v9c0olF+A35uzvmOPR9Lbr/jrL7+u8oPwtzF65+D/CfNK7pdOls490xj67QPekXah39Xq6xl/TuNf5ofM38PBQfFrUd9jvi+jp9fQuQr+c1n3ZX1GX/E//Er979JXe3QXStfGd0P6ebwM/t0ndkX/dflPqf+S3JP43jXrd+Vz37yp8hdJHyr/pYJ95r57F+PfG/KXmx9q0Pvpxtd3sm9Cb378cXwfhl7uh3cwbjcFX8w9M/z4zVYCsz88xnpnHHgB/X4V/3H4F2mPjvA+km4a/zX8LUs7qT/3dTkPO7Fwf3e+eiusw6aBd6pnPenlyrUo3Hc/GX909V0Wv5ISOdX3jH5/kPE15/tP0fu21o1N8HU/+O96Outr8nYgf4/on9xXop/5PffT8W/IPXXup+dqrzngeHCG/CHmj6G578w9HPvPemFr33elj2HK/zfn0JlftedI+ZXY5wvknEiOD/B/Pfyd4G+ivprxP8HfT+BA8Bd8jI0/Cr3tl/MedAf7/mypDL/IORD+WsjPvLxOzk3iv0ie9uhm/HtW+fg3XYGv+DflXnuT+MPp39f4fg79rjKfZF4qzldPWQfUob/76eV4/B9bIZ+eb5buHn2z73nKn8C+c7+yM/3F728GfXyNn6nys89p6furpTI8E39/x79TvdPxX8r9RPxawdNyvoafGfgcDP5Gv+OlO4DHZL9Fnn3Rj//0CQV7aqN9DgaX4XtD8p+ifYrr8jHoP2P8vE0/flp6e+UmZJ0H/zPfj9S+K52/jATPtd+am30G/PXzHgg/J+f8kn6eAlvSQwv0t4G/ilzTom/446R3j/8RuWbE/8t4cRH9rdCOB8kfoL3boz/IOBf/h8vZ3Y7qO4/8l+T9SM454ccun5dOf9smfink/yD+GvTdCf//0Ftb+Iutn9aRbq//ZH2S+eSGvDfJ+irnb8rnfVj8GOK/MIzeu8efQztNjf+O+XSMfrwKvZx3rpf3WtK7q/93fNXPPCp9Mz52jf+3/nU/+eI3/KZ2zL1KH7Af/NyvDGQf/bOOzj0Feivk7wH/PvZyvfrb5HxBvXkvcSw6nc1rR4Jn5x6BvvL+IvPbVuhkfjs154vofY6P58n3kPXbKvPcR+yvGb0em/cd0mNyn66ecea7lfL3xGf88vfVn/69X9LeuV+ayP7il170V78g90v2P7uAP6af6fcfKP+H/p93UM+rL+Pyxfhpp/xJ0p2zPvG9J/r3kOsW/G9Efwvi50YfY0pl+FLe9bDfitx/yP8o/p+5B0Vvoe/toLWjn/hpbiL9o/K7oH8B+r/n/hc8SPn4pT2A3+Xmzw/ZR2v4f8j/TPlD4Gf9+Rs+ehXWn030x6XsYLZ2/Ir+4/8dv++f4s+G/2bsM+d6xfO+ierfRn13Kbcaf8PZy1Bwtfqzf9mCfQ+U3136HPx8x34WkO9v9tOihN+cu9BPE3IeK/9n/B2S8SV+SuynBvk+zruM7DvyDk/+a+TZBR/V8Rc/ovi9HED+AfGfll8v9x/4yf3nEwX/uN2l+5OnKfv/XPof/f/1nE+jl/Pxy9RzmvzttX/JOH268f3yUhleT+7F8deAPyP7Q3xNz/19BXrky/1A7gXuANel36b4GxZ+oi/6u9r8ucb3z6SX4C/7l/iLZN/yGv5+KqyHs14+A3579R+P/6f0z9yPbIiPo6Tr5j2k9BHoPp37Q/DnnA/SZw/tfkPuGdhlX/Z+qe/H5ZyfHD3J+zi+WuD/uNzP4785+jPJlfOpI9E/ml10kn4293Lw844p5yN5x3mi8fpR9pF73FPJv4V1X11yXque/+DvL/P+n2DeueZ9683qP4PcR9PLEeR/n9zHK9cg7zbZV+z1ZXw3wt+D6N8D77O8x4W/Y96f4fdweukpfXrm15xPoJ93njeh86H+mHeHJ5JvRGG9v37Or3LeJT1Ofu5vc5+b+9sh6A1Rbr50Y/KtYA9Zf4yVzvvMnFsfCv8gcv8n5/PZz6gvfi5XyP/F/P0zuAJcHT8O9hG/ifivxn9iiP151mUTlF+C/xbGn/ivdTQ+30mfOUeOv2ll/WEEfquzq6OyvlPPvfDSrzM+j4dfG/5e5O+hXN43DIv9sa+l4Rtcmf5NvtPix2V8a46Peeifq91q+d5f/c2MHxfgf3T4Vv+qSmvzHTnC/8Hq70YPDxlvMz9/Jd1P/nR8jkQ/731yb5F7jNxf/CZ/sPI5f8v7jivIdyD+N4z/KzpHkHuF8W21dk4/XpLzHeW3ynyF/67Gly7gbfT/CX5bwF8OP+8t9tQ+30ofxD4z3/wgf3z8K9Bphb+3M//T3wHGlYvoexw5rzf/1M27Ful30a9TuG/J/cs09r+Z+fsI9O/Oezz6+Z5+30B/P3SO0z4r834GPyPkV1L/e/Q2G5wDJn7BZvQxJOvX+Hlr71+l8/6r+H7rmdgDee7A7zT0J8U/NvuNwv1f7H7dvI9R7kn1rYd+7GkX+X3kb5W4Bdk/OcfI+cVc+NmPDUGnpvJF/5fPlW+c9bP+fDM4Mucdyr8Re817g4xX7KcmfuNf0gNe/Es+Ys/T/sf+9Jz4Bfq+Nzrfyj86/p7xa8FPndyfy18p3Tb+TuFT/lz8ZPyphP/Fud9TX6Oc22vf64xLj5gXTmBf12X9Vgb/+nskzsH4+O+jf0b8HslR0n7x+46/d/zBO2d+ih83urXY1wz0d1d+ffmnJC4E+hvr38cbF6tLV1U+/sNj4jeIn9/zfo18G2TdkvvTnB+ajzcHu9PXMSWIhfP2ZdILcn+lvvMbrV3/i/BHmp+u164t8f+U+o9OvJq8twXjD7SV8jW1W0vnKfOU2yXxQwrnVDmfin92/LHjn32R/Ieybsq7aOnZ5B2E/hf0tiX8Wfi/37w1Htzc+HwMuWqofzH8Tujem/VR3lfl/X7e0yjXCl7f3F+gdyT8qsblQ8Fq4CaJo2F8iz9F/Cv2h5/5MePXhoXxK35BOQ9flvP4xLPQPq9K95T+R3oD/S5+Il/iJ/eBlfWHzehvhfGrL/0+zO5zfzFZujn+cp4/Gn857z8o9qN87rHrsKPp5C+en1Y33uUc9SXt3aqEX+Vzfpz4DjfnXlF6StYH+stL8O/N+Ub8b+izBC9+YyeTf/34w9PTUO17QNYL8HOvtgG+X0U/fg/xg7gq/v3wNyDP99o57/dzLjETXu6PW8KvFf/QvC+Wv638Xton8U0S1yR+ivFfyvuQGtY5y8C8DzmSPNF/8f5rKHvLe6zK4Nfa5zx6+0a7X8nOcv+b+EDZT95Cj4kPdB/+zsVXMU7Xp+xmW3punXEWH521/13WXZ3Aifh/QboSPp5Tvl/ux61PR6N7Nnt4Gv8L6bVL/NSk46+5Zfx/Mg9nHUXOpxNPzT6xXs45834Y3aVg3oG9gd5p+kv8+K40Pl9Nn1vnvlF9s/POT/ow88N+7Hqj7P/lx58280ve6cS/thf6Tegn8SwuoJ+l9Jdzm4vjT1sqw0Hk751zU/LEz/EV9nIIfeyK7g7soxi/6250ftF+2+W8G+yMv2m5ZzIeTiLXfujkfckf9PqBfnMK/Sb+0C7obQDv/pxD4K+Xdl0B5h5ree4tjLct9KNRhfVj8f1v4pxkXZP18xywbWH9HP+uxP3KPmMcfp8og3/XJYnLkfVJJ/rfULsclvhl9HdS7mPI86B0M/Tz/jzvza/zfXz8b9n1Svyfzo66KHcbfTWkv11znpL7P/Dx+KHjazp72YF97QjmnVPeA+S8JfPNMfRcTbncT8XvPvdS8b9vmPWqcvsqd5n6834gfjVPx1+G/Bvk/ijntdp1NPrd48+Q+GzobQv/BHJ1w8cY7fRE3pfC35M8V+W9Qdbv9Lnkf7zzj39i/BHjnzhY/f3x8yC5m6O/EP/xTzot8550/JPyPrtH/JTQeSPzML0O1X97Ftoj72XiLxZ/sryfuVO/agv+iW7L+Ler9xByTZLfH38t8ddIfY3J17tUhk8W5p3MR/FzyX39UPrLOvdd6ey/co6ce6Gj8TdQey5EJ/eU1cmXe8c+eedduH/M+83cz8ePdoL87uymUeIdsYMttF8f/f1UsDd4Cz4zb2S+yLlHv5yPJB6Geaau8i+UyrAYv+YB9BPH5nXjQuLT7MU+m6kn+//94bfD94HZvxXO/5azg8yviRezDXqJI3NS3ssnbkjOhen9aPaxHr7m4/MS8iW+Xta/ee9/hnTWvyfhJ+dzB6GT87l75C/Xvr/LfyPne/Gv97299AGZL+lnl1IZrgafw18780PO+/ZSz0+x17w/wN8i6bzPXkN/idvVzvd+8e/X/n2ksz44jnyJH5D9yWh0qid+lfn2U3AB+G5h/X9D7ucSRxJ+T3QT/yrj1zr4ybrsZPldsq7KeQL+Fmr/6+LnQT8jjL+v02Mx/u0+6OX8dCn8g7XPh9mvoJc4h43kdza+XZa4t9LHobON8a4puDWY+6GsG/I+sE7eF2R8yXkoOz8952T4+UJ+A3rI/WD8xwey5/NKZTgh+174++ivedewgJ3mfVIvdK/N+wJ6ug/+pNy/ZtxC/y7tm/eRU8G8j8x7yQnSj6h/C/LEv2ae/no//KrkaSU/83Hm59H4zfx8fBn8e44VP7qcY83Wf4dpvz70tjf8xFuK32nRHzX3bc/nnTy9JH5gxr+R5JpHjx3Yd4O8T9e+OQ+5UT/503jxF/h+3onmXLfw/ijvkfL+qD15V6g39wETso5Eb0fy5L74bvi/5f1E4ufRd1N6ett6eDa4jP0ci/8b1FeffAN8/x7+V8at+AF9Lb1A+fiLFsf53ONPx3/mg8wXtfOeL/e9yrXGf+vM7/Jz7vCXet6En7gGuZ9OvIOn83475/2FfWr2pw/EXuw7+7Lj7I//Mf5OBCu0c+7XfmF32d9kv5Px53v6zTrjcvXeDL6Kv6Hky3li/CPfKqy/3y6swyvYwz6516e3i9j3tew/70rb5J2gcoP03/jLVotfEPyhyt+RdXvisGnfyu4DnqG/ZWDiQ1XkvYn6XmJHh5Dv0sTVA3NfcLr6c/5+QuEd1R7yE5/hwbwPKfjL5/wn5z5T8JPzn4XYPD/vEqTXyzvanIfEbx4/iUf1Drt6PvHFwdhx4nb+BiZ+5x+5NzNe9me3Y7Rv4oBdmHgE6K3ney/6G5J1X+IPKx9/8ZvYbX3yjYi/AfkyXlYuvC/Je5Mj4PXA7/bqeT76Ie+5mdfo42f5W5lPm4BD46en/VqTt755uUPGa/w3J8/j6s37mvfjX5bxWfpvelqufdrE/xF+4s2cVCrDe3I+knff+sMZ+B8Sf/z4G+SdbM7X6P/YxCtRT94PLEw8g5ybyI9/9SUZdxOHTP7V6H9CLwvA+eA++NuJ/nPfVkM9VdC/h339aFwaif7K7O/0qzPJn3ugO+mveeJLlMpwEn6HZ3/HbnM/MtV4mPuRxHNMfMfEy0183NcSP4V+K/B5q/qK7wtvzHu13H/m/Az+pMRJgp/4hp3zfs33d+ivZuKiGfcfRT//T1CMJxR/0Wfxv73yGxm/mkvHPyJ8X45Ohfn35cQHMD88lnk8cYzwW4xf3419xn8z8SOn514PvUu0Yzv2kXXfgMQrU3/WNTnfjB9+zjdrJs6O9Gr6fAn+xXm/xd7y3v0x6f7wEg96+8QJgZ94yptFv4kXJ/849jWeHRTHr8RH3SD0zD+5n15ZBhWbG+e+xc/jiV9D3vyPQvyq6rCvvG/7qvDOLe/VjsLPGOm843pZul7Or6QXa9f18Xd45oH4l5In8cB64/tF/OZ/QHL/m/gYiX98ufqu1P4/Ft4T5r1v3vcmHlriN7yS963KZ3+Y+J95nzox9kWebbXvAuUn0t+B7G8Fu8s67D3lpxt33si7LuknyZdzu4Hqez7xYvGf86KtlPsz70VLZRj/sviVfZR+o/xe+M25UOIhJp7bIP15nHGtB7p753wm/szK9008tvgroP+HdOecU9JP4ok9YhzOvVHsr4r2/9D3K+kl8Stmwk9cyO7kyPie99qDyX1e4f12A/PJR7m3ZOf5H5HX1L8YvB38yziU89Ocm3agr5yfvq29dsh8Dh4Rf1T1H8JOm0vXZ1edEpcS3pScK2j/or95/NCXyZ9jXO8JjjaOJu7GAvaWeCULyJP4gPGPLt5jxz96CX7zrm5r65sJ6u+tno/oc1320RKfH5fBv3HOKsv/Dn7iK8e/PPGVEwcw6+P4o2SdnPVx3ic9ic7OpTK8I368yse/ZXvjbfzpZ8f/Wn3t8t4n/qvZHyTeA75zvvC/4taOy3xA/5/S403o/K38LPQbxr89cXTi36d9tgO3BhMP88m87yRf7itO036T8TcCXsbBX3Jvaz6Zrl074Tf/j/ANe/oz81zO6UtlmPvGVwrjbOgPZ28/yb8BnXvoMfHss9/+FN1Xck7oe3flVtFT/Gsf0a876p9DCv8HdIr6Er8240cr+FfnfW72w/Lrqf8y48mLxoUD2dMl+N/B/jDvv9+nzyPlP4ifrvg+Oes1+dW0T+I3JI5f4jfsGn+K+AfCz/v6efheJ++V894w78foP/93VV975hyoHXm3iz+Ldlsc/1H6aaSe/I/Og+x/N+NO/qcq/0sV+9gl8T+lJ6CX85El+f8k/eMWMO+fD8n7ZHwm/lxD+I/TW+JZ5R1S/v/jR/ac+Lo/SI+Rv6tx+Tz6+jL+dfKXas+Jxo3DpPPOf0YZVIzO+2vpjRKfgL7/oIcOBf+e98iX8Xqj9A/yfK7evO/vbh3+uvy8kx2ivkHx7yiV4XF5X5N71vjrkW+NeS5xRIrxQ+6L/1fexes3U+P/A782fTxLn+Pk76Y9a7LDWvGXwd8NZVAxMeO+9CH4u5d91M++STrzVG/9J+9xxuA359t/0H9z7bNx5hHlHzZ+PATWUv6Gwn61Zvx2st4hX+4Hcy94hPK5H3yEPPFvu7fg39ez4J91aMYh6XH0F/+favXXli/3+x20V/xkc78/Cv3a9DSY/pbFX7AQzynvFuMfMp28OV/IeUni1yZewhfwDsbnBuxkffTzPwVVpHvAn4Pfieqror7d6We9jdeWryP8fxK/QP4Y9DOePIqfcfi7Ad//Rf/G3E8bt+7S7sX/s9nX+D5Pv78QzP9ZvWP93zHvk9nZA/jL/U/ufaZoj/wf4qKcC+bcMPGv8i4Y/axvZhb8O3uZX2olTmf2q9oz/z+Rc4rNS2X4Mpj7uWLcope135boneL7+vAukD+hDCom09sd6plOv/E7yHu4g3MeJL2QPD/SW+LN5T19K+3a07jyGblby18FP/cHiTeR/09ooF3r03s98DztV0d9u+UdFjnjT/QX/fxMrvHyG2vfYnyOqdGz+hO/60z1Rb+JjzDVuiL7yo+lt0Hv0dxvaOdifNv59N7W98qF/xdL/IPshxIHIedzub/M//bFnyP3l4nL3kw7jEbvNfQ21v+yvst6L+u7/dhzbfxvBr6e96fk3Iq9VM39iPQW+l/esRbfr1by/W36TZyVeoX3i1lX5tygGv1/ge/0r+wnluFrEPo5J6uNv7yf3p/8p7Gr28h/SeIkmR93Vm9L43Xi47Qvg4oj5S+Xflj+idYr8+k9/8u4nfb9mL3Hj3WEfhR/1u3p+zPp5tI7w/+cnHm/lffheb+V+8kuxqfcU+Z+8iPy5t1v7oFy/5P4lxuSrxifqW7ivxbuteepvzr5NwZn0ud08szFX84HztIeF6L/n4L/UN69xH8o54mJ55dzxmtz3qdfPQA/ftpZvzXM+yb8bA9erlz+P6Nz3h8X/k+jK/7z/iH7jafkxy9n8f+I35DxJf/bmHv03J+/nPgW7GNk4Z37yxkv1Ns66/mcZxg/u+A/54SJD5h3sdn/JB5W4l/1K4OKPejzxcQTg99XvR3Jv0h6K/JNg/83mLgD3dHP+928eyi+hyix98bgb8axPuzrT/XlfyROZ2fxU14e/5O8w6HnWeRNvJ74uycOcuL3nG08T/y5ZWDiz+X+66P4qyROFP3Uyn477+Tixxc/NP2hH9hJ/v34yX1E8f+n9lffRPpYN36U5E+8j8vos238oqW3pr/cN+T+IXFWcv+QcXti/Mfw91n8l/NeNf4duQ+FvxpfbdjlJdLxR6uddUnjtfnJ/JH+n7jreZ+a8a4YrzNxPG9C7w5y5f9iEx9xG/Rvynu2zB/x51HfCcbtHRPvWTt9nX1F1oEFP6yc7yX+VuLUJ/5W4nGdqV+eBV6aOAb0k/g7ibtTI/aT+3v8/przLeUX4qP4f2CzlMv5S/7/Jv9bk//Bqa7+/L/smfid4Hv833IemHPEebmnyH2Zfpv4zYkrnPuXxH9Lux4s/4DsH61f8n+M46S7y3+M3h7P+Kx9Ek+ksfZbYpyurtyw3BvlvIg+foLflXw5r4lfVfys4l/VDf+JmzmH3SR+5sX0ul3iJ+R8I+O//Om5t8ZX3qlchO8LwTOMO21KZdg7+y3pyxLvKfGL4heQc03y533oueTvUPCbS3z9utpvT/VeF39540n8dvP/afHfjf90/hcz8RISRyH+r/k/2Fna9V0w/xcbfUV/Y3MOl/ik9J+49Imnnvj0E8vgX/+G+Ducnf1++rNx8Qn6yfvbB+jzUfSvRP8L/CwwnpXoY5Vy47I+J3+z+Kur996Mn4nDUCrDrDtuob/4h8QvJPGzPgfzv3F5T9BVfU+p//8Axj6PDnicdd13+NfT+wfwooxCU0LlkwaiUkYqmUlGZhIpK/pa36SkEslKpKFBGrJnw05ZWeFbkqzsjEhGMqKU33X93o+n6/K6Lp9/7ut8zjn3OvcZr3Pu+35P3b7c//+1qleCp9QuwW+UO29dgqtqleD5dUtwXqMSnL1NCf5eVoK7gC+ofwH+r7R7cIcS3H3HEvyjcgmuBX8Hn2pQgjekvkoJHgZ/Hfh3g7drnRK8GayFzjL1T25XgttvW4L96pdgFeUnleuSezb8TdF/FnwOvAV/u1UqwV3BH7cowZnoj6HPPeG9wP+PRq+O+q3IVZ++vlXeuloJdqevRVVLsFfDErx2E/xsXoKd8bVN4xK8A/7l6F8G/0p8zMP39eDF6NXRfw39HIffs/S7WH2FiiV4Qp1/0t9B/eTt/ylfa/bTWLvh+Bsa+bTfVf3dFUpwNb4m4OMV+Afq30f7LvhbrTwQXx/5/6/G9Tn9tzeeb2h3I/5uoK9f/H+J/3fA387w3MeufoU/8yHz4HD1V2o/k5zTlR+Bdx24FhyH/yE1SvAIfLyu/GLkgf9Y9E6ij/vJd5x52904HmU+r8HH89pfwZ5OQb+F/mvJ+7T2l6m/RX0D9th6qxLszB4Pxl9X+thAn6PQGwHfCO3W4385eovoZ4H2R/j/QOPfhn6ugP9M9SPg+VF9bfIfQ+7Ryn/CO03/fuR6AJ4G+LpVubpyff3mwH+mcmfj8wY9f4jPZfQxGp7PlcuTb4jxm0Q/Dys/B/+0zUrwZHBKzRI8B72f8f+i8p7kmJb1Bd2T0FtP7w8oP4beAPIdSp516D8Df3ntflNfR3kj/ab4/1fKb+v/aPUS3AJfl25agjext9/gf5XetoFnBf5ahy6+DyfPYPb35JYluAvYBFyl3Sz95+s/SXkU/tYZj9nW7ab0PIA+f7LvVDTvdsr6hv8f2dUJxq8i+2paVoLXka8Lun3ADeDb+h+r34XKG+P/IPpbr/3BykfTz3v+fyD99TbuX4C16fNV/C0g10X4n4ruEcbtKONzFH1NoZ/J4JHm+wXw32Rcz4V/onaPFvbn1eS5Bp/v0GNX/P2qfmJZCT4D/3slUG44+DR8beBpBZ6h/U/0sR/5utgXG9BbA3w2Un+J+l769VceC9+d7GIpvR1tv/tD/+H63UNfj7OXx8h/Fvky/ieAn9L3WPp8jvyj1A9G/yL1Z+K7hvpb6W9n8v+AvwXw9kF/b/Wr8XG2+lPx/6h+q8pKcLb2o8hzgfJmymvxNQz9T+yfl5P7Y+U3tWuB76/hb2X8bobvQuVvlbvirxn8I+0r+xu/Kuh8rX5C+RK8Vv9O1oWzwJ/haxx96l9T/cfqxxf2w+x/d+LvMnKsYO8von+19p9qtzE599R/JnsZY135kt6vMz4r9L8F3JwdDMJvc/9vZZwm4vc19KuYv72sG9fDeyM4nd66gpvkXKH+L/ZezvnvT3SXa3cK+1+O/+7KLdTPIXfOlxfg/0pyzlZeDG5gT9+jc4z+28HXg3wvKC+z302w/h7L/tfAX4PcD6lfBz6T/QG9+43b7vBfaLx3sN7dh97z+LxU/831n6r9TuAX4BPsvat170HwLv3X438lvr5UfpldTHCufRx/h7HPJ43PNPY9CKy+UQnO1v4V/D1L/0vIl/NaR/W3an8I/a3X7gTjnnNvzsGD6WMJPrMuXM0OWuJvW/gqlJXgndGf/mX0Gz2fbz5Hz5+Tayx4P/pN9X8y80/7fNfl+6U9+i3Rr2m+bIS/fvq9SB914T/Z+DTX/y/y91J/Avt6zfh2g78rPbdTX5FeDlbfQP/L1HeGt2/GC3+H428o+sX15Xb8/qR9Y/gak/tI5fvpp4n/fwzfUPJ9YXzbOhddZjy/QGcz9rrGOvCy+b2L+qzPZ5OzT9ZR8HT6+S+5z4bnFeM3mt03YfczwBZlJbgSvE37E9EdRr4LzY//gr3BW+jrRXy1pa9B/l+Jfoervwdspr4Oujnfno7/YeylvXZHq79YOevaLPDFcuiCf8DT3nj0IM9s9I42njdlfVCerF198CL09rRu72tdaO97+MHYM33vALYyfmeRYwvrxTr7RJnycuN3HHsZqfylfucaj/Xof0WuGehfhb/V7Op98D3wJvWPkm8gvI8oXwbfwHxHkPs4envL+DX0/67kvU7/AcrLlE9D7zntm6gfwD7708s8epqj/Url78BB7Oss/F1gvXqf3EvBt/E5mH3/CZ4D7w7qh9LHwOy7yreS7158DmVPm+Zcqz7zIfOkLX2db7y2z/ndOXGB/XAj9avY763wZl73xN9H+Mm497Y+ZPzH0svu9NhF/fv0c3v2Bf1nk2Nv9j3RfH+bfh5Qvl79O/g+A70v6WMePNfQ92zj8p52N6r/3P8nWucm4uPYrH/0szTf//R3Nv3uH3ujr6vVr4K/Hbzn4aMqffVG5y3tfzZPYhdno/9A7m38f6l+uY86Rf0j7GZb+twJfwuN3y/krofPIfjbzvr9KTutne+04Cvcb+W+K/dbx+QeEL5F5JuLfs4HXcAL2EPOB7/j50njVgn9S3I/l/2D3JPR3QXdjczfp/M9rHwjvHfpv31ZCV4JT1P8NcbPQ+x6Pj7/yDiUQLkazhcPK4/E/776tQM/1m4GfZwGTyP83ILPteT9Eb+v4+9sep5O/n9bt6epf4X919P/M/I1Q7+Tc1NV/LU3/07B1yT2shJfE/J9Rc+X4u9YfK3Wrzc++qB3m/+fp/2R+PkWvXezL2adx9+z+GqLXgP8XEe+SezhO/gXwvcn+k+blz3w9yw9n2t8K21cgvWV29m/+ir/jq9djGc5fD+jfg66V6p/UPv/4G8K/nP+bxL+9R8B7b3afat8KjpzyFMR3k/o5x36qWvfKQPbovM0+jkfbEN/Y+HZR/1h+Ml38QLlKfR3p3nfGj/74adSvt/Z82fwX6x/DXrubn0cju5443E2Pp9gT6Ph/4ad7aE+8zH3i7lvzP3iIPhOQr+N/s3wdy97O12/Gtpdgt5w8+d29efh+z763cx+Mp1+FpP/bv33pvcV4Fp29oL+G5H/FvAudPrS/3j8XmOcnjG+P+DjO+VB4LbwP06+U+BdCVbXb1P1NbK+kTv2/Kv6dejXUj+TvvK+0055f/VP4TP76bbw512rMXx532qm/deZj+zlZvXvspfsO5XhaUJ/B5C3Lv2/D/8D6ivYb3qAleyTO8butZ+b+2v0NuBngnF7RP1i6+g16N1n/PNO9b3yheQflO8P/b9WbpP7cHz9ys46o9tb/3nwfkmPW8BTVbvWxuta7VbQz4nkH6Xf/cYp5/936/6T7y31y3kh721r4J+R9vBVxX++P94g1xLy/1E4r29snXiocH6viv6sshL8Qnm+ckvr7d3sogM7rg3/JOO5yrw73P47jn1eg+4EdCeB26rfEb8fgH3IsR39nY/uh/jN/f/h+JvPfp5QXkxPt8E/l7428f+KYH/6XYBeX/R/Bn/MPZF2i9lDK/2Pp/+tnD+nkr8n/ZxcOL8PZy85v+f79sTcB7OLN9DdFL3e/t/DuHQhz0j4HqTvcvr9SV+Hkn8f/U9CJ99lLclVyf/b+f9g/I5VPlj9f8pK8Gb0ZsJ/BfvIfe+p+rUmf2XjFX0fhs8f1W/HHmahu63ysrwPu2/a2P+3cZ7oov7Scsr634zfU9Hrl/d89Uvo7SL0N1T+p3zTtv+nfA9b19/Qf0f4HyHHZcblQPQ+My8q6n+9891wsD17eT73dcYr59A5yuPzHmi828FbHv9LwYXsdblz4sXkqYOfFcqrwG/B9urz3rZl3sVyX5L30BIod53645XfKyvB0frn3eE+fD/EvofCN1G7buj2wX9teKvpf4R2n8B/B3wvKb+U8y383aw/76u/mJ4/z3kx5zl4drefNMfHA+gdatx7+P86+A8zr/eDr73+zYzvlfpfjs5AcqyBpyd7vcI6uBU+1rDfI7O/K1c0ziei9w28d/j/wtybav+675/jlF9Tnq3cj11UQvd6/ffDf0/2fSb4q/6jcj9Bv7vbH69in3uUleCp9HMOOW+zPlyH/n+NVxk5TqWfn9VPLYG/7a2H9i/kfEg/2U+yz8xX7q193ufHwnOw/uPUT6K/fcjfzvhsCd895BtIjlX6r9a/3r/tz+bTxuziQOvVMvxUMj+zvtVXzv6R89+p8U9CJ+e/59hXL//PO0F3+htm/S3vO6kPuiPY76nwF+/XBsS/hryNyf+Hdofi72L1/cF+4Mv0sA273hasBeZ9/TH63YldNAIb4O9D++8H5L+D3J+qnxD/IHzXpoeXlf+L3np8H5h7aPaxzrj8AZ6P/7xTLEE376tt8dst/kToN8u5A93Hwerxl4gfDzvPe9Ya/z+KPnfBX3flNvFDybiq70r++O3knrQ3ut/o/1DBv6Wr8q7a9aTfv9hdT3bbQf8qOXcU/J++Am9lPxPpp0fuceh3Mf0vsT93tf4O0O5G+nxV+VbjG/t6gHzxt7kBHzXLSrCb+pb+/0HeX9WfgP/4h3QmX97/Bpsfy9CfpnwKec6y7t1B3y3ZZ9a/mfbrOejPUr4Qv20K/ifxOxmFv8ezXqPXlzxV837KHs/c5J/tsz9cRH/9wCfV1yTnEfD10v5OdK8lT1vtO6A/3fq0Xv1T+h8febLPq5+rfDT5d8o+Tr+76p/3tTrw/P0+TF+t2cfl2v1AvyvZVzd0vtC/fO5PydNbOfedg5RXo3+b/vto35d+ahjv4/E/yv6V+9/B+Iq/VPynPsfnW8Z1g/XjCfXX4TN+WfHTes46Gv+sncBK+P3NODypHP+F+C3sit/4L7Sk7/3wl/vTebl/yHcpPOfRxynGL/5dV+T9Rfux5DurcH8QP5X4pxyQ7xnrS394NtY/76t1jfdc+sn76oXxO8n9Ydk/5VnlvJH7xp3osZNyvrufINcS+MbBd6D5WsU55yDll/P9kXcH47yffpXJN4e+l5L/M+V78n6X93l8tSH3w3nPoZcPwBvoK/dn2dfPhC/7e+w03ynPw5vvmGXKt7L3+FkV/avq0UfefYfAewW8jfPdjJ/q2pXT/1pybZd7HevMbtrXQa8e+JX1fiN0rifvbdBmHYl9/2D8LtS+JTniR3GU8dkh9zD4uSrvOJEvfqrm045Zb+w3HfGf9+7f479gPr4F3uo8Owj+7Y3bPebPf+Jvgt/x7O40dJcrZ3zOwNdh9N2JXi8Bj4196x+/refBreinE73tb3x2hu8A+hlDvk3o/03tH9D/WvX53n4F/XvQzffPR/hZpNzHuPYFb6e/+GGUGY9L4v+q/k34f817PX6b4H+48V9qXL8B99e/Zd7TtZ+B3j3kedT69St5p+BjAr3l/bByGTnAMviOU3+xcX2C3BPwWzN+2MZvb/zfiP4R5Ds6fvPaPYB+Lfg7lkC5wfivhl7Ob2OsS9/bR5aRP/fE+b5/AV+74j/f988or6D/TtqdqP4N+umWuAN8jyzsH7dl/QWzf2wRe879WO43sn7lfUv97/iOP9RU+C6DL3EjE9D/UP8x8MWOYj9DrMuZ1zvAd77+8Ud+Qv1uZSUY/+S8l/2S+UDf7+CvpvoPjccZ8QdA/xz4/2Mc3iF/C/I20v4C9nc+uA85a4Kr8r0A5v5vtvUp++m3+d5X/7B1aSb4HXgUOeea/z2UV1ufhpPnY+Vu2i3H93L1Z/r/PtrtBn5In5ewn+74aoTODfRXhV5ey3zVb6PC/U389OOf35l81+S8oX/s8EP6uIPdjiX3SO3iX3uK9vE/6oW/k+KfgP9qxv1p61jX+NEUzs972c9zjp6pXwXtq2gX+38M/z9p/2nOHeTvS/7J+Mo+0Trnb3rpCP9WYCvyb5L3ppyj40cJfyP0P4d3Lb5Wwn8j+vXp/VL94+ef++7cf+c+vJf215p/8f+IP0j8LNpYr2rS02/aPa5/7mu2KCvBX8mR+5ur4L86fpPqB7CPncn1Hn00ge8p9aP+5fz6P+vDpdb1G/B9nPm5i/r3nU9y736K/f5g8r3jvLd17mPco+T+Ou+veW/NuM4prG+JE6laVoKf0U8t9W3of1Mw9+xtyfO9fom3GY+/nC86KH9BjmfwcTW5e5K7F1gbv7vT/2HGsZlyA/RWk/+K+IWzn6XKNzkvjQYbmT9N805ZOK/1st7lHiF+FwNzbi6Bv/0vZpHvTnKdo1/lfL/Qf+Jkcv9bF7521rPJ+L3GetcQ/m55P1NfRl/X5F0ncRPoPWzc7zC+n1pPrmdnHytX1u5c8sSP8OS8g6g/Wf1z4CqwWeZt7t3JfWfuY/RfRp/D8D2avrO/5T0679N5r95QiJ9M3ORa9Ymf7Gv9HajdEHh+oI955svl5Cqv/mf9F6nP+1bRf/NZ8sR/J/dCV8M3O9/9sZ+8B8CX+8Uh+BsKJp7nHva8B7s8Of5H6i+ln0viV6+c9/n467yFvz0zH8m3u/VgKr5eNV+ewv+P1peh9H1w4i3Ifzv8r8au6WOfxHfFLxfso/2+7HWt/WhncsePsBf7/By/6/TL/foW6kfSyw/43xKdV9XXIt9Sco0ALygrwe7wvURfWX+3wkful3KflPul4bnvND71wdbw743ughIodxo8XZXnor+ZdWtjcK521+GnG/3vTf6b2ONxea+zb72l/2KwgnUu3x1Xo3cQ+bYhX86Fe8V/wPj9FPvSrw75t8Rf4qv6kqdC4trgyz3GRPpIvG8Hetmc/u4y7rPgba48A39nkWey8e2pfC76zZyrdgVvybu3+sfx0d84T834so8nrD/Hm1dPKl+L/luFe9/cA2eeb8r+7mJ3X1lv9iJv7GUv/MWeYj/bKCdurRjPdrhy7m9vMe6P4b924ga0e578Zxq/+M9P1+98evwI/v30+9n/F2YdwN/32Vfp7zvlHvj5i/zrwQ3gtujFHyv+WSfiJ9+jo+nlLvrePnEb5It/dY/wmflfVoKd8u5PDyuyTiR+Kf6vicPVbjP09zWfvgM3mG+JZzicPX6i/ebG+S/6yXk55+d78Jnz83D7anH/T/xM5nX8nYfG/4l+n9OvY+4T1W+qfmXWf7B5/PETz0zfPxiHA8pK8An1mc+Z5xfhJ/P9E+eN151DHlYur766eTEneQ3AF/NOoPwMOKKwX++EvzHojiNn/O+OMZ+q5Z6TfJ/if4HxqqCc+IepOZ/Q1xL4Fup/Kv13YH/dwczTvCfkPehY+PNOlPuBRvS6hjyfw3+F+i+N3w3s7w3tTqe/vO+MyHeV9ovpYQD7yflhpv/n/DDZfJyUdx3z7/TEH+Ivcf498f9g1hPtbwanwP9Bznm1/ylv7kcSH/YO/J+S+238J374N/9P3F3i8BJ/18v430g/xe/P8ujn3SxxEomPeC/vx9FP3vXKSnCU9fpGcCS4b87B6Oc7LXlC5rGPF3wX9IdvCnvcF//n6x8/6qL/dO7x40/3fe5f0J/LfnPObF04bxbjkxKXNB78in2Mg3c8/eYclfP8J/GjB//+Dsl7XPJO4Cv+S4vIez9YjLMcn3vBjHO+X/N+bX04gt772w9zH5j4igbobVlWgo/kfsV4fOn/p5Ez+Vj2g79dzvns+Pa8P+Gn6H/fUX0f9C9OPpWUG/6zHP/vhuBj5E98VvI8JC5rTd4vnHfmOgcdovw9+c+2rj1ufW0UP0HyTWMPzdnJxrEHfNxuPH/LO1/uu/H3vv67wpf3rbHKk+nj0vg7+n9X/b+D7wn6+z75HtTvnv1Uv3L2od/i/+d8fwLYOf7L6N2JvwGxf3I9C18/aF9N3GbiD9VPBU/HzyPG4xH0Y3ext1r6z4s/UtYP8+0gcrY3fqvZa33z7Gv8JV/N3fh7Gb2HjF/yryR+v5g/4yD416G/En/F+8dT2fXDyifFPwO9auwi79p/0mPeqeJvHz/8Y3K+IMdi/N7GDjsof4qPu5XjR5p78nfpL/lSEo9bvN95Df9nlJXg5omHs978WQLlvkDvafrZH74Ptb9L/6novao8Xf/cv7Qm9/25f7OfN44fb9Yj8sefJXlpivlqdvd9njwJLeFJvoRf0h/dfch1WuF+NOf7nPf3xf+j5Lsv71rWifX5Psj7MPk+yfqT+3723d28Go/vvek/8Rlrtfs265n6l+kn+RlOzb6AflPjn/PfCPyuzn6mf+b/GPtP8it1Yo+vgAPZ6ynwtzAe2UfGOR9m//jC/VqFvNsox/+uH/0cmfuw5ENR7q4+7zY5r+yf9xzlYnzqHfon38bb2u1K74fHfxv++fg9P3Ff5D8k6xF6rfJdTf7/ojdBv4etNy/rvzLvs+oTH/oZ/p61LrVxDzCzrASbq59Cv9Mjp3LelxoYj/V559FuN/QOz/18/MHoI+/ty+MXbp4s9P8fsj+WwN/xw/XYWfz3m2c+0E9/8l2i/Ah+l+c9Ubkh/ddCv7Z9p6Zy8n8U47nPSPxZzi85b/l/4oUuLyvBGebPv73TJp7xa/SS3yH5s2K3ed/Le1/yERXzlyXu/4bkd0B/sXkxOfFS+DsS38fjJ+8peT+5O+ewnNfRy/nlEO23zHcXfHvgP/608a9NvoIq8Z8l39aJSydn3reL+X2up8fEZ86Crym5+mv3Bn5eT5w3Ob7Cf/xAkncr+baSj2uB8s/w3p53ody/kP89620/sHa+3/K9lrxx7K4v+eJ/fZLz5jL9Z4J7JB4Rv0dFj8rJr7K39XMxu2qlXJ58yaPRxvjv4/x1R+LB4KtGX4mjSxzWaXlvoo8/4v/Gvmaoj/95/NHjf568L7mH6Z7x0P5e6/Fp+BxeWJ+/1++gxJXg45e8T9PTS4k/jR8S/hLX8Zv6LvSwF/6+jd8RfpJHLfGz4+xbM/U72Tr5NrqjjWvu69egd7v+yd/XmV6St68q+m/Bk+/YHRPfl3wPxvOExF+BO+F7L/1OQP8Q+Jqg38r63gLcA+yY9Y39XQYOBq+g72aJj4+fLr62o9/EDea+ohg/ONb8iZ9kj+yz+l+S+0XwO+2nabcX/B/iu2nOs8Yp/h/x+4gfyLtlJZj7z/g3tC3cfyY/WPKCfadf8oPl/NrD+XUr5ZxfW7GLcbnfgK8G/b9jPKsnXlB5Z/QTL5T4msQT3at9P/b8mnn7avzL1XfMfWzuPenvdPhq0utQcjdMPF7iG+OvmPwo+FtGX02tt8mL1V858T15n21IXznHf5D4U/y9nDyC7ON6+ttGOfN7vvFKvrA/1cefo7i/HEredfj+STnvMy8kPwr+FiV+D77yySdnXON3VFv7/RLfkPNe8ojh/1P7fRP85x0w73+PqB+Zd7/kw8v3vvHdHKwK1lNfD/28i/9Frm/oJ+/3+Z7P933ufzZYr0ZZpx6yzuZ7oZn+VZQrxj8KPNK82xdf7cB5+d7xXVAJ/lnK8/XPvdcbWR+Sj0n9X85dU7TbkPfaxJfl/FN4307+x/iHPwXOLviJ97Ne/gnvgewh/rzxq4y/a97pk18392TRS/QU/UyA/2VyvwQm3u1c9pz8BZXprUv0wx52MA4zwNxDr6DXb8BG8dOkz/XsMXF8J9k/E8e3wvoS/7Gl8a9JfHvixciV75rEd611/ppv3U0elXx/D8n6Ev8FdBbR38X6N2FHzcED8VvXvHvA+rpBuWJZCb4Hf87dOYcfir9ifsrkpTwo/v709Qy+i/lG836fd/t8t3xEnmH4SV61XYxnU/UzrYezwIZg/D2zL51DnkXJR4W/+dp/Fj/SxMWpL+bHSV6cSYk/Ikfya9RNHmn1r5O3N70cYf7Hj60DmHzNK8zP7C9HK8cPq+h/lXuB3BPkfqCJ+fsuvRf95xN/X5H8N+nfm76aGoe68N2I/ojcM8TeCt9z5yb/j3L8896m1+RdPVp9C/U/qm8Tvz/yz6e/S5N3LnFQmf/xPyzYSfLv5fzUIutL3jnKSnAr+J9Fd0vl59Tn/ib3NifD8yz4IPrzcs+S+O6MD/0uxv/P7Cn5T5JvNPEJFfBxbPy72EviOpeaz4nvTHx0/LXih5f34+SH2xqfbyQfYPwdjd808EfjOwz9TsmvGf/QxDcV/Nvi1/ZQ5mniY/RPvFTegb5WrhR9Gf/phfwH8W/Me2Pyk+Z9KfaVe9eG/j/W+Oe77C1wsHEaTP7kWY5dn47f5JtdjJ96+o1Xzn3xvfrNQbeP9f+E+CfiO/k98/2V/JsXoL8vfraBZww42Hgnj1PyN+2a/UX/5OOMXfWEP/FjiRtrpJz4savpL/HcifPO/pV89MlXMoIekv/wa/b0FbgzPKPopwa7WmVeVVPemhw5Tya/VBX7QfyD65I/3wULnB+S/3YX+/Vi/X5Hp0Lir+gtfhd3k+cY9ZvpPwacD8/W7Gk9/Vygf/xQ438a+07+l9h57Hs6ve9snb6OffQwr7dCZyZ4euK14c/7et7VO+f8rf4T9efrf27h++LC5BNL3kl81aXfxFd1M96P6j+Vfo5iLwvp/RjlMVm/4T/deBbvr+9MHHveG9BLfEIP/bvh6w7rZPJXbm3de6bgj5z3iE/1nwn/bsr99W+fvHLsK3HGyd83BL6O8P1Bn7Pgix3kne3nxDfgfyx7q6T9BYmHyPjk3Qj/yacxWf24fPfn3UW5bt5zlSfRywDr2CbkyX3sJHxfir86WU/YWfxR46c6iH4akmvPshJ8UH3ye/xuvu6Czv3mY+JH25s3A+J3af68Gf8T+t+BPPPo4xz8vBv/Ef2rq++U+FL7S/JsfG0/XVqIP028afzmX0f/cuVt6WMKff6K/3XKp/lOq8fe+uPj5+T1gW8YfW1t/Jt6D45/XPzljkn8BPzTrI+H2D+SD2EOurPBkfT/Sb7frRf709NNJfD3PdVj+Ilf7Q2Zz+q/Q/e1+BVYhxbhP3kvTsy7efzljU9ddneH8amnnPNjD+M9iB3sn/wixuOgjEfiZtFJfN8Z6CVvbNuyEkx+rdzn555/SCF+sTK9dSdv8oQ0wP8V9qsxuf9Xzn3lePZcDb3F8YeAP9//+e6vjs4c/L9IHxfTaz9wy9ynFM6vxyZOOvsku36F3bWjr+QnrAFfNbA6mPNK8s3H7vM7CMPQ/1F94l6TX/gm8k9U3iXvB/RThn7ur4r5z5JvMPmID0l8tvbXlZXgmfipjv4eme/ql2V+F/zs7sz3Vdbz+IHkfjb2Y37kdxSS9yP+12PjF2Wcs67GH/Oi7HfkyH7aBZ5x5kf8r5IPM35Y8f+I30dX+OL/USvfZ+Zh7jtyv3FG7ivppy985+V+Gv3ks0je3A6F+JZNlHPPX1//KzN/2Fnzwn3Vb+bjlcZvWPL40O8hiUuivyfxeT38yVeT+M3ksxkU/2v8FX+nJf4FsbecryeTv2fiJOHL78bsjc928OT8nPNyzs83/8v5dHnhnPo7/EX/wOSPqJrflWKf54FZ5+ZaV19J3H4hv1X8i5L/Jfmfkw+6Bf0mvmJH9pr8gW8Wfg8nv4/TOP7z9Pqc+rxX5f10Qd4PlFejX9v4npnv3uQvSRx7/CuV39Mv99hD1B9NH+39P/HEf//+Q+Ki0dvHuH6s/JP5sQqcCd7PnhM/mO+E4vdB/N5vxF/84Y/S/yV8NS8rwf3Jc03mF/13ca7toH3ylybePf5M0+IXj/8FWeeTPzTnbPqJv0h39OIfnt8n2gY/iQfI77TsbTyTX//f8oS1Zc814L+LPY5I/ohCfMlv8WPB78H02znvK/RbKfE15nf8WpPHspb6D+D/EGxlncg7Q/wy1+RdzPjET/Ph2Kty8rQlvi3xiIlPfCm/N5HzdN41Cnl6D2R/m5i/HbPvKed3Fh5PXGNZCeZ3XpIfv6PyUPUf5RyBv+Qfze9GLNRuv/h76f9j9l/8fYN+vlfiP/M2PeyY98P4L8F7rXNE8qfUdN5cbhxHs5dzkv/DeMZfsJgfo6X1pgV4uHGcnDyS5Eo+uBW5P8x7dPJugLk3D/63cn9QvyAH/g8x3+/2nXFw4v/o63T6jV/xQnJtDU9HfA/Tvyk4O/l4Cnmb4v/cmH4vgm/3vJ/F/yHv8ez/VvPqsNzfZ3+j90753SHlzI//+X/1rAPmR75PRhq/0/4lPqt6zqdgQ3ADPvL7asX9Mff/y/H/knF9UTl+7psp11NO/F1Z/G6s5xWMywxy/A9/2QeXKHfCR0Pr23Dj9yL80wv3BcnrnPwqyfec/Cr5/j8xebTJ3zn+c4nPsY63AveO/2riksmT3wnK7wPl9/n+R+/L8ZPf64vfyzJ4nqeHq+Db2bqZPIxNC++z9+Z3VcDjC3mu4geZfFw98ZH3h+Rt2wjMe3fet9vR7+vkSj6S2vo/pJy4sG/jN6H+Ot9PV4KT4J+m3SD8HpLzLTmqoPdX4puUu5j/v9D/V75/8vtbfegp+WFG5D22rARn0PdQ9Vmf6+E3ebaSH/gj7XMvU/x9kXwf5bso30mJg52S93/jlbiL6fj/kF6a5/uMHT6b+Bj2d6V1KN9x+X5LvMFU8LbEw+C3Kv19nn0ATLzsshL4O79l8l1mfc94bVdWghm3ReQYmXc3+n8bv/EznEg/1eBfrpz8asl/nrznv6Gb/Oe32I8mgsmL2i/+E/TUMudy/etol3fJj/CTd8mb6e8w6+MM8APwwrwz4/ta/c/QP/6jub/Jvc0c7b4B8x2X/NCJtxmT/ClZr7R/IPfrynfFP0L/GcmfrJzfBd3JulWRPT1EL02M3xXmRfH3N/L9G/+HKckzov6bQj6axIUmv3380Q7LO6D1qTz+q9P/B+ZB/HFOhCfxh3mHzO/4bK++I3nzexvJ0zE65wDrcX6HdSOwMnuI/qK3rCujybfSevsVeBv+kz8+9zPJnxk/jfhnNHI/t5DdDCf3QPqql/gq/MaPNPdL8U9uDt+byV+SeHLyPhT/cfOrLf3XR/cj62Zd8ym/D7kfu0i+8OQPT36Ru/GzxPg/jv/96WdT45s89LXB5KF/FX+vk++wrH/k6+u8mLzMxXzNuVfOffIH8S8m/0bsqiI5NjcOiQdN/unkoall3iYPzV8Zv8RN5xym/l3z4Wj6Wwtf8mfmu2m0fqvp9wD85T0k7yO3s7O8j9xK38PIfYvyOHiTPzx5w+vn3h797L9b0Vf23+T/Wu57I/H5rZSHlZXgPub/aPy1hP9V4z8I3eON6yzlx+Inhc+f8v1b8CfN90z20YnoZj9NXuF89z+f+An0Ey+W3+kbYrzz+3ybovcKvGPImTi0Bvi+0ry9Gsx91yuFeODkZ8n9c3NyJW9P27xH4y/xKJvme448i5K/wfjk947zO8j5/e8G6u9G70F6ze+jbEu+R/HRMvd19Jdxe5Q8p+HvXvWNE1ePfuIS6sG/ZfzT2O1a8Db0zoRvJL7LoZf8DPWUW+A/97T5/ZD4b3ySewrtF5K/+LsQuSf4Pe8PziuVwMqF74X8/kDikxKvNEn/na2/e9Lb1dbDA8iT/MHDydscX/l9wRPY3UHmfzX2cwx+R4LF+5fEj93JXvP9cFfyBSSvIfuMn9wnyvGXK29+trBuVbd/L8Fv54J/cBcw/sX5fsm75Tv0nffL5MXcAd8XlkC5AfB38P/4YeddoSZ5G+U+Ku9s9Bb/4Ph1P5N49qJ/N31MTp4P5ZzHk091Vu6N6G0u2NC4Jm/lk9oPQ69c3X+2H2S+tUY/ft214ndmfUvc8f8BQqqCZ3icdd159NfT9j/wT1RooOHSRD6ROTQgMkXGm4riVlSkQaZCGZqIIpGiRFFRpK6rQYlS5mSeKddMyBxlupm+a/3ej6e1eq31+/yz13mfc/Z09jmvc/bZ+3ymNCz7f38bykuwR4MSnL5TCX5UowSX7VCC52xZghMaleAfdUtwqvqL4FuyYwmep/25YO9aJXigdtXRqw/fNduX4Grl1+E/r752+Gyzq/bVS3CR33fC78G7lOAwfH2Jn407l+Ag/XffqgQvruJ38BLy19J/EX5b46dM/ZfKh6A3BN+94Z+Kn9/QnVuvBJs3LsFryT8cf4PU/6T8m/Kn5P8NPy+Ttwp9bYu/L+rgF/7/YvejCiV4qP7z1HeqVIKdq5bgh/htD98ydHvg/xDy/Ue5D/4WatcSX63J/5Vxf79mCX6tfDu5v9i2BBdXLMFJ25XgfvRbHR8d0f0FvT7qt0L3THQHqq+Kv9n0caDft0b3bXD5ZiXY7R8l+M/NldF9Er/t8N8CH8fR3530OgRcQr+D9F9crQS7squO7PUm49uB/TyNn38rL1D/H/bZYOsSrA9+j87j+N8G3+uU79H/euN7A/gsOg2Mz7fwdYJvoH7Ly0vwZ/qbRn918HeM9u/pf6X2XdnRNPOhg/5N0L2YXjrQ4ytl+IVvtPZf6n/JFiV4vHH+vOKmfB6Or1/Zwwp4rjY+H1hvOm9Tgj3Z9w/of8He+oOr2GMFeDqD52l/MD7GoFdf+Tp6uZB896l/oc6mfE1ptCl/7ctLsBNYG77f2e/37KY2u/kH2Bb+PSuXYEf63UP5T3Rm09MicEt28jL8jfFXVf/jtfsn++imfhu/72+92YD/yfrdYxwO1e5Z+D8zL24FXzWeu9DTefRWWb/xfl+Z9dV4/2z+XWc+vYKPb+hjKDgEXKx/N/ydVV6CJ5oHXfE3FV9XgW3wc5r+z5GrO3oT2OWZ9HOPdaM/+FTtEtwafL+gn+bk/A4/k9llLXxPUR6Ezub6DWQ/q/Wfqr4pfVxLb82V9zX+bfR/C71x1of1xu9V9lIbn7P1H43ez+bPGOtgHe0/VF+RPk+hn82Uq9Lf9vh9Ff0/9FtH/0+Yd5PMu2bKP5LnO/1HkWet9fBn8vc1n89GdzF+b0TnG3LtBk/WgRrk78e+zgbXottDfQN89TO+y43rLeQZR183gPPM1wPQ/57+9zaP3qWXl/A/wnxfRr4y/Q6in176j8P/vuCj+FvKbjaCj4BXw5PvV3N6y3cs36+67OFc9t8d/snke898bUuvW8LXA/4/6G0N+Am4XP2n9F+FfIeS99/Kj9DLHubdaO17sqeP1Lf2+z767W7+vQ7fW/geoX3s63j8DCB3VfyfpP5i+l1j3HvqfyP97KLcjjxnl5dgJ/2X4HsJfsvx+TA+x6iPHY7S/034H9KuIXzXwbOEfdQzLqtK4O916Hr9BhufIeBl4Cz6mE/uO32Xy/XfHb3e9HcDvv6d7wj8XejrQeM/CuyV/Z/5Osg8eUz5K3q9T/uF7K8y/CeTfyr93I7+9WAX+Oex59bGpxO8FfCX9bsZOz5TeUH2C+b75eTOepL1Y6T1LOePVdEH+3oNv0fo9yf6D+HztswD9avVryPfA+zvbvIsUu6uvgx/Y6wbI+n7WPL2p5974T8Cf1tZR2qoz3yfjP5F+L9Cv2PQm6h9vl9r7N+yjyvu34bi9yn6G6J8J31tQT/N8Dsk++zyEjyVmIvA4X7vj5/K+Pkx+yp0aqk/kF2tB29EtzX53835CZ671N9L36fQ50J2uKP58D/8/oXfs/WbiP4M/Wub/3PwPU59f/X19Psav9kH9qTfLX2X7sv+Rfsz8X8Kve8M/2x6eEb/5uyiGbiL+TAz9oNecd81L+db7e+H91jtMr6Xsv8J7Oc25UXqZ7GH6ex0JTkq01/Or2vg/Zq+/oW/Eebl6dqvVx6hfXv6/IM++peX4J+xV9/dG7U/3fe3gvpt0Gus/xByTlT/G3n2Zgcb9L8M3d74+o/2O6BzE/0Nhn+x9n2zPmY/bb15Xf0JJVB2ifo7jNu++DiIPutqvzP7y3dhnt/r5Htgvg0DR8L3CXlH2P8cb3xuMT57GL9y9rFC+6bwv0C+p8k3WPtD1f9HfX3yPYG/humf+Yef/4Jfgp3xH/1Fr631v5e+Bxmvy/H5jvrK6I9mLxWcW5YqXwhfR/gfNI4/0mdT9Pegl6yfLbSbbB7WJN9zJVD2L3ByvpPw7anfr/BcSF/98V8V/8+aRwei/7Hf96Svx/K9UH+t+bkd+6wbf4P29+BvItiC/P/OOml+LMRfN7/vhr/M/wvp4QPrTdaBL7Rfhl5Demmn/1/4/ba8BNuT9yz1d9B/R7/3z7mcfLWs20+bd0fg9yj4hts3n5FzHT77kWcbeHtpfzh97sA+9jevLrC/uBA8T/t2+KuIn77kmaB8QQmULSD3jvB3Y5+L9P8JP03ZQ9anHcznKeZhQ+Wq9NCDPL8rX0vPt9Ff1vuTrCuN8HUz+brjpz+6b8KT/e4v+jcgb1t4hqDzHf1sm++D+fm58rf619D+Zv2bot9B+4fY30bwY/TuYq/bWXc6s6fR5OiC79v83oM8O6P3I3pn0+9Jfl9AP+3Yz0HqO9tfTlHf3XhWwc892s1Rf6f+V+m3L9hXu+3ZXU39l9LHZcZ3jfH7BHwaPB3dF8iX/dEG9tKVPZ3FHvuCZ4Mr6edUevvOPmEpeD38u8GXc99N6BxATy3j9wWn02f8A5/HX42fn3L+Mr43w7eF+sbodtH/A+tHJXgPsX78QD9b42901nF8ZjyOiP8o+wv9fsn+MvrCf9F/9xn7nQKeo132J5ubb/PRvyh+dv3HGK9rwafM0znq+yg3Mw69lP8ixwT6G0qeK+mhL/2fxL5uBZ/Exw/632j+bPD7BnSejf/Ceni+9XFb5eHG56HIi/7O+Mn9RjVyvWSceuPvPPxVgW8m/C3pt1P2B+qHga+bz8PQfRTfu+q3Vb7T6u9mz7PA6dp9bhy+Nj77428L9nNh/E3srwb5bvP7R+zxpviNybNM+7r0syt+9kfvS3gaqp+Lr2/1u0/5He1P0n+E+vfZ407ofap+JLy5RzoDfzlfdnTufp18OWd+UW9TPo+mt5non01fe8J3Bf7uxn/NnD/iH8LnwHxH1J9vnP4Tu8XvhX6fic6h+Gib9ZF99tPvZuWe8FfQPue7tfBepv6A+E3I8wN+DsD/cvPiYetuD/yfg36+703R+UD9cvz8Cv/L5mt1drp/8LOrivgufm/LjUtFeB5nTyPIMQ7de5Q/INco8mzHfrsa1zrKP+Gnjt+boXuM8jPwrPK97AWOBs9F7030l9PDIOWx6J/BHibF76L8Gj3tSK9N6Tn++JwHHzfvt4T3Zfqry55Ww3Oa8pTcY+A//olPfJcOo+f4J3bB99LcF6PbyfgshS/79NvZYfbrVekj8h+D7AR43tG/r/o/9R9WXoJTjX8rcj9jvp2iPn7ri+itonPUPO1PyPoR/wX8t5In69vPfi/L/sn49MTXCPjawTc384H9rQfjl29BP2fQS/QWPUZ/z7CnNvT/Ue7R4W9E3h3IuxKfN+d+in4agPXA1ez3BHh30b+t8k6pR+/CnEvAdWmPXh/6OxM/X5CzGr0cqf5E8u5u/n+Y8yk93qX+d/jrqY9fMvfwm+vfTP2x6Gbf/wL69fC3vfJfub+kn/Xs4T3z4Eflx+G/37jVVt/B/uAwfFQxv2qbn2eA56DbDb1f9J+Dz4fptxL7n1QCZYO1+wn9Rfp/SC/d6aEyeeYmfgI/exm/B/VvqP+28A5Ff5vyEnwF3grw3MYO92Rf0W/0enT2vejPQLeZfmXwtI9/OfcT5D0eH+Pxd5Bz/VfwN9J/K/U1td8e3ZNz36v+WXS/ynxTf2Luj9nVuMSlkCf++WPJ/6PfNyTuJOe/QtzHe+rfBz/x+yJ08n08V/0c5/W38dmMfMeyv6Xm07Z+P9XvM/H/hPqnwGt9f5pYH1ah3yD+CXjK8LGG/b7h90+Um9NX8X4y95LxIy6ts+nv+b6k/lPkPtP/TuUjyduLXm7Sf/fEPeif++t32G0LcLzxjn8kfpGN8U/Q0+5Zf+A/Cr3vjd851uux9LleuxuUE99yuXU+8S3d6Df+g8H6TQc/AWuZv31LoGxDID09aT2pic7H7PkGfJ8Ff/yHH+p3Kf0M1W9F7sW1743+eHo5ij6ucr64FP+/2BdcTq4nlDeQfzv200v/xEt9pf4l43F7/JfK3ySeCt+vZj/ADkbAd6Lz9RH4TVzVh+Ct5Dsdf/9C/2P1f5A394hFP9ME+r8CXAN+Dt+12l+Cv3Pgm6T8pfIb9BB/SLPsj/0e/8NI8tZGfxx5b2Zvf2r/vvLqEihbnntE5Vb5TpLrw8L61E7/7trfEj6DD5/xXyc+Kn7W+LMrofNN/O/onUS+p+JPAWezj07kzP5tvfKpyjXYV8Z7WO75449gv3+hVzyftUI//qKz8L+f8c/90icFf0v8McPUx39+vnLsMvFv99Nbzo9/4Cfnx7bknuG7XgmexOfdx95nq//T+jkHnpfp4wxy1fR7eeJE0g+etuR9Cp8z8dcs99r5/ivnu9dK++L37yfrVr6vZ1ovTyTfQfj50rjMgOdN+uhn/fgI3XfsX243XhmPm/Vby+4Wwj9IvzfKS/Be9K7L/lS/d3M/BN+r6hNPVh3eauDzWQ+Mz534v519Pod+4gJWJW4DTHzAeuvPOvAHsBa+H6f/zvE3w1eJfvfBX0O/VyDHIfT3id+3VX4g5yvjcRH8iSM9Dd3f1b+deEH02sB3fr7v7P3LxN0a3+7l+KaPl8CZ4Ef4uQa/j8R+yNOJfispL4bvDb8fnv2v/e3z5LoejB+jSvSm/XX4Pwz/je1/Xi7ESa7FX+ZP7Dv7vdj3bPT3RvdRcL3+p6F3Rc5v8HVQP5c99YT/KfpuDn8T7bfQv4n5lfEpns8eK5x3d9J/Lb73xk/8f/dq3wTd6Cn6iX/1razX6a88w3oTP8jmfh+f+136iB3ugV7s8XTyTMp6g9+m8ByQ+CL916s/XX039ZUSt6ndMvP3ee3bkO9idC7W/279b9I/8TzPlJdgvs+Jd22jfr7+h8H7KLgXehfpv7N+Xcg7A77r8fctfNmHZv85Bv4n6e9f+JvP3mbC95v++yVejPxj6f9S9vxp4naU/4d+4ocSd36C/okXuK3g346/O/7tVsb/EPBR6/388hJMfObp8O5EvtNyf5H4Ku23oIeX1EefB5O/ce4R8HtVzq/WhcSHrsNf4uoST5txOl/9OvqYib/blT9CZyfr2jL71s99L8/H30rr/0L9qynfgb83yZP4if/6/Rbjs6318yv8LVXujL9P6ft5cIBxjP+jAX0fCu7r+zEB/lnwXU+ez/D53E6b8jcc/d0K/I0n9zz7g6nOK9OyXvj9Lf3XOf8thKeK/lnXpuIz61v8i/ErvpzzBf5yn7qscN/6lP6vOL8M1S9x4r+Vl2A9dlkHrAvmfu8K43sleEbOr4lvZJ9/wncKOluqfyz3c/r/zzj9io+3tEs85NWJq6Df7+jzcnIl3vMg9HLe+gH8MecI+rgcf1+x89yvngx/U/6LZb5zI8Glxiv5L8l3Sf5L7h/epa/Y1xr1X9P/Sfx/Dch9oPEegv7n5GqV9dZ4NtE/56ecl0bnu42/i7TfNec3ej1D+b+Jf/Z7BzD3rGPgz3c2ceYt8POi79s08u1GP7mfmqN/4iqvpt/O6rcwXovRGwD/1donv6CXfokzXpr4N/rtxY56g/uwk57sMfez/Qr3s3PINUH7rvC3y3xMvgZ+n1dfKftn8l6O7lz2+IB2rX1/fvfdqWH/lvvwucZ/C+O/Vv/c78zQ/gLy31LIn8n57Fftj9bu8sRv5l4Bvfbkvy37d/iyP24LT1f4c9/ze+Jbwdz/PGU+/QVeDD6ITmv43ybH9eAl8Dxu/RtkHNuzp+wzRxmfw9nFC+xzMfu7Hr2zwfvAEdbtDuTZCDYFH879bAmU3Q/OADMviveFO+LrNfLHzu7D34HWg2/pt0e1Tfntqt1r6P+WfbffH2Ana+NvYBd/x5eQvx/8R8TfmvtufM/OPtT8yn3FQOvLZO3bGKfMt8y/L/TPuesk7ZfBX0v9wfSznH4amzeT0KtcmFe7g5lfHcibPIKN+OtLv8NKoOxOctcwvl3wM5v9/MO4zFLeP/GN2b/m/gU/r+CjM/zXJR8Enm76n2V+nojPMvPpZv0vY2fJpxqifDT+DzSfH8y9UCG/7HD0vk/8kvlxauI7rF8Hs6NvjdfuxuVc+p9oXFYkDge+5jn3Z94kzgh/D5BvJLnOQqeCfn/ir7/yu4m/p6+eJVA2D2yAzpbxR9DHEfQ3BJ74d59E9ylwZ/wcgv+x1tfdfIcXKw+gny70ca/+tfA/Fp0q9Lk3eslDOF3/yfm+lZfgrvpNVn+Z9Wg6mPyWcfTXD766fm+RfM3cz5jfK8Cp9JC4/OSRVdY++WZ7x/6NVxd8PsaOX8z9Anxn6pf8ip3o7xf1ozLPCvGEbawPO+N/lv158nvy/cr3Kt+vO9TvVndTOao22pT/ysYl8fE3sodT1CfefQD6iTfsD99Y43lj4s6Ucz97Ln466p848sSPZ/+ZuO96+iX+e6T1ZD54N35ng1n/tyXnS/g91fx9jl6mJJ9Xu83QT/ztHfolDjfxt8m7+C7fu0L+xbvkKo+dwL8v+l8nviX+Xnhuyv2Z8ZuLv1ns4Gf4HtT/IXAKfg+DJ+tM8rMe1S75FcX4tRn0nP36DdavjTm3J08FvrG+by+wwzPtA/ron/iN5A8emXiSnPfUx2+duIP4r9smr1X73Afl/mcpe18Cns4+tyBf9Bt+o98j6G+q9Sr34afBMxX/R+g/M/Eq6H+U80zsE9/xo+Z+ZnUhnj7rzEHqN7CXfD+TL9U8+0Pz5Wzjcqv9SSvyx74Pw+c5+sW+u8b/mfsH+F/I/a/v7cP6rbROnpL7AP13wV/i+WviP/FHuV+9uxCHtJ4+N2R8Et+W84X9wgD8vVOITz+a3BcmLyN5ZvHfoD+/cK9dn36u8nvyft9Df/fk+aFXN/sL5TEFe0jeYPIIYy+JV0/8ZuI531aO/61+4rf8fhvYkj4Tr5W8nC+NX/H+41D2mnuQg/S/JPe18CT+eaH1tL3fL4VvhfF7QDl5O83o+0z927HPw41T5tn0fN/QP4t8q/Cf+LsX8Zv8qfa5X4+d0OdX1o0vlXM/+RG6LcnXWf1Nyu3hn2cf8Tv73Q3/x2n/TzD5qDmvxn8Zf2W+Zy/qX9H6+7V191Iw8z/xlq3JnzjM9bnnw18LfFWxfu6FfvxIc8hzjvZD6Tf3m/O1f0v73G+OsO6Op99x4Hn6VyTPg4nLBHP/+gu97ZF9n/X8ocQXKm8GloEnJ14m/gz940+fz74S93tSuf7oJr75POv7KznHs6ehiUNQjt8g9OI/qI6fR3Mfyr4e0/4rv99Iv2tz/4C/+GtOiP+b/l+NPwZ/5crPwL9j4iuMZx12sabqpvz/BX958tGSf8J+7k28KPp/v5+h/5oSKNumEIf0pHbJL3wg9+P425p+toI3cROXaJfzRVvlweqnJ67Y+J+tvl/uQfF/pXa7oVfT78U8v3bscYDxvT9xRol/0H9Gud+NS28w55UlhXNM/D8Xq/87jyH5k/Fzq38f/tlZ5/BxqH7HkSfnjtHo35D70+RnWD92138zdDqqf4KcF9BfA3wX86ySn7Yz+52Lzlj6uoB+PsTfYnwn3jzx5evN3zr617c/mFiI99xb/9yXJf8y72uMyDm78L5G8lH3zX0sPMlXTdx94u1Pxe876s+zv+gPfmUdPAf9vehnJTzfJA84+1P63I7cs+HvkfxI8y3x0dPoL/kFR2t/LDoL8T80/gX6+qd9Y/E+Pfm9S/H3YCFffmIJ/B1PlHijx+mjSSG/bS/lfF/6GP+dyZn4p8RD1Uk8F/nr4if5yb3Rb5Jzr3Ly/z4g3xvZp6PfCJ1dlPP+zNXxL+Z+jf7Oyv2Efj8Yv/l5T8HvE/NeA/vNetAh+SOJ2078vPrE/+S+MfE/vazHhxvnFon3hifvMcwyHkPYd95rqJ345cxDco3L/Qz62Zf0yP2K+onW7+T5TrMfSn7vOvSfy7m0vASvzv0A/U1MPkHhfnIkfd+YdzsSDwX/keRJ/mnuAZN/OtD5YiPYjJ/lU+36ol8x8eTwZT+duLaX2GfuW7ZFb5b14HTw2MQj4e9R47OndXFi7hHVP5b8SPhzD7sf/Uz03Ux+S/JaKqC/PbtcZdxfh//O5MeSL/7N5codlWvRx6LE19LT9/BnXWitPMV4ToM/fuj4peOvvsLvg41X1v98Dy5Lfg19d2N3R6CX/Our9KtAHz/j/5jcH5lPeWfpVuV6uT/Fz4IS+Dv/9+HEWbHX5NO/yd4W4a+b8qngaWDb+Hfxm/iPxBskvmCI9peBg8Ga5F1OT03Mn674S/xM8vGTp79FeQnm/v0Y9pZ96yzyPgL/1/AuAReil/Nc3stL3uJuOfejP9D4nKzdX/Gbka8hfDuAbYxD8nWSv9KokMeS/JX5zh1512qBct4buZo9VmWnE5VHwdPP/BgQv6d50jr5rdanF41zRzDnvU+s/5+C1dFPXNOe5E+eYvITn6a/Jb7Xucf4A/zOeF3H/hPH8Au87dnz/+itAr5yX5376Zz355FjdfyJ8Ncx/6/w+yj4h5C/M7rrtV9AT1XVX8Zee2d/le8s/UxRn/vf3PvuiP/sHxfgt4b2iY9J3PZBfr8Vf9XQ/zx5w4lrh38F+0s+avYdibNMfOVi8yn3cQ+AtyQOuPBeX97vS/xZ/MPxC3fXP/7hyPdI7kn1y/44730l/6pl9mv6N9P/SPrNub+3/tlPr8HvKeisoYfEJyYeMf7WxAfdgf9dfWfWGb+hWT9LoOx58+Y95bPjvy/E366HP/G3N5tPb4aP+Ffzrhx+W6JbybxI/Od8dr0ifj923D7v98E/BxwKf855/8VP9vnTEr9TXoKLzNdbzKO/37tBP/nvQ8n5R8H/0yD5PPAV78cTt/mo35M/UF6Il74g74vibyo68ftOxF/8vvXyfg+9Jj47/ozgL76/MtI6mndYXsFP4pjyXtNeiStBv27y4XIvr/7HnN/wf2TyL+LHhy9xinvF75D7Gf1z/5j7yPgX9kk8XPJz0In/sbn65D0kD2Iz9JM/l/zXfB8/y/si+mU9zfraXfmLvDdi3tejjwV5L5L9NPH7YPuo7+j/luRLo/tQGb6S388u3854JU4z8VXs+nn0erDvVfh/0e/JP32JvAtzfqGf4bEPes/+e6X2J8NzOLtI/vwh6MV/NdA60Rufud/OvfZj5Mz99vqCX/rIgn96qv6Jq0lcQe5HH4h/RfvEI8/N95d9v1/Iz1yDn8TXnp91Fkx8eh/030z8KLyHJj+I/FONwwjlX9VfafyTN/eLeZZ8ugaF+8GvlVsljwr93JvlniH3C3lfIe9V5J2FvK+Q9WNlznflJXhK/C/ofWccuhi/xvjfIXFtiW/NeMBfQ/nYvO8G/xX6P4PvzfTPOx2b5x0PMHG7L1vPk798jP4nJn459xH5vuM778XGX5T4yPHJD03cjXmaePJa8aPlXRz8J76lk3X1gbzvxX5in/XI30a/e9BNfEDeRcx7NMX3EafkvA/2YB+t4F+dfH96mh5/EjrXkG80WMy/nFbIV897QvHP5F2ZvCeT+Jr7E69PL9XUX6f8dPJX7UfjB9664A/+hDwHGtch4AnZj8D3XuLBYyf0/1ry7tRX028Z/bZyLu6TeHjnlcbqi/EUibPI+4B/5+cX7CDvdLyhXEX5KvjyTuUK+h2SOCX6/1T7Y+Lfhae6/tfk/s34fkZfuc/LPd7M7P+tH1VyToTnJ/JsnXWPPR4E/7TEhyY+QDnxIVvDtw3YHd3E49xq/Fobt+m5L9Q/75Lk3d685/uu+tu1nwomnvdycmd925L8OX88j/9HzJejzKNDEk+V/RO9rNN/QWE/eGPyUthHzvs537+S+xXfh7zTmv15H3p9spxcxvEv8+cR5bwXkfckNs/32Xk55+c+hfPzA/YDy+PHMU7J11gDf94DORc/o/RfV/CvjwV3oP+8X34pPa1H7+rkBZg/Hcybp5X3gqdu8ioS36VdReX55PpU+565f6WffK/z/U58YObje/iK329O4nOM78PGZzv70ivo6Zesh+TJ++CT8/43/o5DL3FviYNL/Fv8q8/iP37W+FdbKk9IXnne3zHeA+jjZ3zvhO+83/F1/E3qHyLHj/h7Jf5zcua9wUb0c0fiN/B3NLyJr74WvjuNw+3w1dc+71Vci6/kyVeLf1z5Vv27gA2Th0revJ+UeP3kESRu+aSsn4X45V7oP6L+vviR0v//U593kA4jX1N8bGb9SD5WLf03Ju7eeOb/AJxpPbgTnjbW01/yHgN8zyRuSPmyxFfhJ+/2v6hf9cRrop/4qP20yz46cUvJQx9oHFYZx7l5V0m/vOtybr7/6L2g/n3yPQlPRev5w+T91fj/TL/xq+U91rzPehj8D/s9foP4EeI/SDzhJdrlu5F7hHuTb53vWvKwEz9lfuSd58nWlybk/D75N3n/Sru8g3IA+2oJtkj8ec7D9Fsr8SR+bxz/XOIX8VudfQ4zvmfpX934jKWHXvrXps/tfIfaWq+2o6dW/Ia/wXs32Ij8L+if9zu60E939C/KviD5BLkHKSdv3pMEEy+Z+MjFeQ+VfGfC84P6segfD99G+9ntk19sfC/KO8jq8386cr+7lf4rjduT9B3/SmXwmhIoe5r+NppXbRPHA89miYcq+E/jN018zJjEuZM7ecCTtLtefRtyv5zvMfqvwv8x/G8kjgYfq8j3Vt6FzPig86z6FxM3B85gZ7taTz63D0weaeSsjd6uyveDL+f8oX/OIy2cTzok/qTgH/qcfMnvLd7XLKenrenn7RL4ex/bTTn72dHorzQ+91on3yq8L7Bb4lLpKe9XrsXvDrmfhq9Z7NH4XIO/V/P+GfxtrA+DzdNXcu4t+DfXk7O4PlW2v1mE77uS/67+QvqIfzP+zvg3i//XIXl8yd8bCn8N+hmsPAqe+C1zL1vcP7S2Hpzou94hcTzWjbxHk3dqjqHPU9Dfkl66ml+LE4eM7v7qryj8X4C+6E+C966Cv+kL5byblXe0+lkvauo/nv6r5l1E8q0yjo2Md+4JdjBuj+mf+Zv/y9Cw3qb87QD/Ndp9lfg04zCBXOeRs2n2h/STuJnEy9RMHrf69/E33Dr3B/tI/vBm8N+N7tHoXIm/qSXwd/5o8f99tC2831ZBfd5xi385fuW8bxP/ct6by7liafxsxvEa9ckryTtGeb8ofudGiYcwTvFD532HvOswKnGw1o9m7Prp7LOUX0g+TQmUzSLfAvImDi5xIScnHgG/deBPvFfe0z0OHyPxO8f+5XH1c9ljZfjWsKsPjFfOdfHvDzGuySftmf+npP/25Noc3Aw8Dd/JD9gG/m3gaZnvP/2VlZdA3jd/hP7fSBxJ/LXkjf9hRdZz34fT8DsFfzXM67y3nXe4b1Ef+xyd9+uUB8L/HHp5f39vsDX9PlN4H7Ed/U9KfCp6i8D+xnVJ9kvsKe/S5p3a5K9uKLzblnP4tOSXmX/xF+XecA/8532LSfgcn3sYcCW52xXsLvlFLaynbxjP5sqJ57yNfmuD89jX9/Q0nnyvJz+Efn7LPtz3+77Ey2uf9bFv9Bu/QeJks7+zX/wfvD/n/dDMl/irwOHkXKs+7yKN1P9z9D7Le1+F/X329bk/X6H9zKwbeX9Vu5vpv0Lyb8Ht1Of/6+Q+OvfUS/M+BLs+0Pcj8Qa5R7kv++Hcw/ru5f2yR9nPkcqJcx1Df7nXeRvdVfh5XH3eOR/LrvLeWBf1yZ+6gN6TR5X8qccK7xM9V16CeZ9obr7n9P1n/NHo5rya/UnOrXWT34f/geAbxmNt4iOUL9f/J/zk/bq8NzEg8fWJr809TRm87HuI8lHw5/yZ/c6EvIO666b0q5E77+mF/kb1iXdIHMQRynmfIH73re0fGuY9iMSFwr+BnCckv978uC5xG+TL/WH8vwPg+xU/99PvbeZnQ/M67/0vTlyY9Tb+tCrwz6OfP+G7Mv+nL/cL+Q7Q6yXspon5mf9zMDHfd+0Pwmf9nL/I9xz+xvmevUL/eU8l+Uuz8VkfnmH4id+qVexbfRX675K4V/Qaku8fef8p6wf8VyX/M/GM8CdOL/F5K/O+J3s4FZ399b+j4F+eXvAvv5D3aOgv9/vbwPdu7ve1vxTfyS+YWQJlfcBi/viL1s194t9Xnk7/N+H/fONTn3zT8Z/3ik6H9w76Olh99vPxD94NZn9fnTyHscPka3wIb/Ij/6m8D/qLlW9J/DB7+I1+d1TOe7yJa0q8U/ITEnee/UzymxMflPctmsOTdy7yvkUL9nICOzsJP48n/1j9/uSspLxf8hniFy0vwfgre6E/rnA/n7ie3M8X18f98k4wea7M951d7YFu7t/jX9q54GeKf2k1eQaBC/SfYHzznsYy/J8KJj80/2/u45wf0c35fPfklxv3/H/BJeTvZD36wrgdSH9zMl/A2FXR3rI/yv99zH4s/w/yBPK2y7nI73lfPu9LX1jwUz+Kv0HmZ+JtivMz8YHJT0184Os5n6tfUnhfdrz65B8cbJ06QTn5B2PJ1Qf9lsYn9/db4Sfvoo6xnzzSeEzh1x8IPgu+5zv0J3qvw18JnuF5/wXfP9DrXvluqT86+YaF962Oo5/i/1/M/128V/1w/O9V+P94s8pLMPu35KXlfZbEQeb9u8Q75f27J/K+knkxDLyTHcb/e3Xh//2t9z2sBt/d+GmMv/H5/yPkzbuGv2b9N97n0VNN9l4D3Bv+hfrnfau8a5W8niPLS7CScToVn8knyP103oHMu3cV0c//P32a/nP+WZFyziP6H6C+q/6H5v5DOe/P5R3WvG+W/L5LtZtmXTpa//hjt/Z7MY/g2xIoW638L/iGFe7Xs0/P/jx+lPz/0eTlzIAn+TnJR0h+QovEJ+X7bFyagvk/S8lH2xG9xsrJJ/wCnfPhm4ef4fhN/si5ysPh+Sbx1ujvw56K74vlfdu8f5z53Us57x+3he9A/Fya/bb+W8KfvOy/87S1/yDjq9xAffLn837IKjDvh+Q9kby/k/d2WqG/KvnkzjOdzOMBzjtN1L+W9Rv96Xkfj33+lbja5EEYx9zP3uq7cQt4Yu5j8L/Id+1N36kbC/ud1clfTHwrPmurz/vPeS8/76u+jL/sPzr6fSS+OiafVf/4y/fIPlr9SN+/vK+XPMW877cs92d5zwuspf0kct2a/99ViMPc0netauKofe/yfvdbxrUCONj45v+l5b6imP+X+4u8lxf/cd7Ty3kq8TqLfd8eSn44+RMvlf12/r9z8icHsPdD4P3B+F5Gn3k/ZRDYD8z7KWXJrzJ+8+BP/NXogn5XJL8E/VH5f4z4PQrdj8y/q63HI8EdrdOnwX8ifd9nHMaAPWMHeR+THicXvi+t4y/Fd94rPZl8e5Ir72nm/4Tkndy8B3IXfHkX5Ety7Kqce/PsU3N/3tL3Ivu07M+SP/V/7PaGqHicdd13+NfT/z/wN0pDJQ0t6qWBMjIqRJSPXWaRhln2VmRlFLJTaViVSCRRVFRGGZEdfeydrZCQkN91/V63++e6el7X9/XP4zqvc85jncfZj8d5vtK44v//Km1ehjUaleHMFmU4Z9MyrNuyDHffqAxvalWGD9Ysw22al+E06ZuVr1alDHeoU4ZXg1OaSm9Whn9Lr4/+M1uU4a3VyvC6ZmXYuEkZnoVed+m78dtL/aX4qyy9Urkf0XmopB68R6L3qfJj4N9VuQHyJ9DXxfDv3qAM5yu/Bp0PyF9b+W7ovone3vB+W6MMX9y4DC+pVIaRvwd999M+3aXbw/8P+mfJf5cenpU/gDwnorch/jZS7vWGZbiZ+ptoj4747KH8nuSbjd7O6v+j3mbKHwPfyVuW4U/sZyV4lXor8Vcdf83Urw7fo/T7etUy3B1fb0t/Tp/vqv+t/Hn4fBWd+vQ7rc668vdA/wL17i2VYVf4TlH/GvJciq/jlKtQvyF8z2qvhfCNwf8t8B2p/Fr4bpPuUbkMF2xYhs1rleFkeEaz//ekj1T+bPRuoded1i/D/aS/lt8X/XnkKdHbO9rnePimrFeGx0pfp/zHyl9B7lns+Sr1nyfPVPqpBS4j/7Padbb6ryrfQ/7kumX4u3Z7WPnL4K9F/o3BJsaTY/DVAb/36T+b099X2mUz+fPgbSLdg3xH4Wc/+nqBnv+D/jfw3IHenvS5n/b7pgwqLoR/vP7xKHzt2d+18g+rLR/+kvIPonNzqQxbq99B/U7G1e+kF6JfFz8XqF+ZXJ/S707k+1K7HYKPPeH/WrsfTr6B0nO1x/X4e1r9n/E3X/1F2uUh49IO0sPxsxM4B7+7au8XyL8z/naAdwj9Hyq9CfoD8POU/CHSvdU/HX+vsb8z0WuJ/j3Kbef/a+nnMvibqf8tunvDPwy9V+CtB89e9NiGPbYGB5F/FP3spd2qs88aYH98TWCPlY37d0v3xt+V1ctwU/W+wWdP+bfh72rtt9EGZfg9OQah0yD9Cj+r6aEjeTrDcxn4IDu6kFzdyX8g+gPg+xe//4Bd1T8Z/nr6YwW6VfH1u/xN6f8t/7cjxzL0L2Uvf7DzmvJfUP9++jnJ+NkfXAlfJfy0AG9Fb3DWM8bLW+uX4VnSR5H3CO05gb5v8P9O7Lc+vnbx/1v47q78h/AuUm4R/EfiryO++rO3yeQbpP6b+vsYcvU0frRV7hTt+6v0pvRxPT6qonc2Pm6S7oVec//vVK8Mr9COq9U/XL/e2rzbCtwm60X8/Iv+n/Q1g35v3qQMx2n/eezpQvlPwdM57UkfDci/HnurS84p9PEa/h6BN+vQ4vqzifoZX85Db6h0XeXX4P96dt2VfprqH4vRzzx4J5j+1QjfG9BjQ/3/PPp+A91P6ft3dE6mz/n6/9Ngw9gDfU3X/xcp/w16q+l/Kfv4L9gaX6vZ3b5pT3jvYr8bk+8Q/F5FDxOV31h/uYQeW6p/KP0epj0u9P909vJp5nPpYexiWiH/PPydSz9PlcrwN/Q74O8A+XvS2y3oP4KvCvwfrv4M8l2M//7kWi/9BP2/5I9Cryt8N6mfdeMCdjyTHFk/lvA1A/0K8oxiv5trpxXoPcvedkSvkfJvw7NK+a3VHxT86g9S/jPpbtJrpM+kn/XxP5O9PcEO78Ln8/BvY904zLy/nL4PVr87+3oAH7uyz9PkV1VvCb5PqcBnxm/yPmdcSn+Zhd+G9D+PHP/VPofTbzv5pyt/ufze8jfDb+a7LeCflvFD/gP+/0v9k+jhavxuQL7v6Ote9LJfXaH+KvPZDeT/kVx92XUfcHvtcLj+Udc8Non9ZB65KOsyfF1FD33w18l4cjS6d8Hbkn4HwzsffFA7TC6VYVX0m6JXgrcb+d4n7zjlb8XPyfT3j/zR4DHsaLT6S+i3sfrF9fML8p8m32B8ZL/8Ir2+p53b+v9r8Fz6rWIc7GJ8e0W9q+A/M+tl9K9Xv4KeJoHf4bMp/r6Av7F6h5P/D/Z1Bf1/4P8P6flT+Ttor6fV3xndr+TPlf8uuhX02EX+dHJ8Si8vkueorCPopX32kcrVQaeT/NHwvK3cvfC/j99h5Ni73rpyfqL+VfCenvUE/Ecot8z/OW84HX+N2WNbsB/6vaU7Sf+k/vvw7Uz/V0jfmfOgnEOg3wG9U/w/Ep7j0B/ALl4zPh+S9TZ8P6jfF74+6K2H/kn421r5UfKH018H/W6brDvlL4BvC+11IP5ql8rwIPU3MX6MANcq97X+9bX2mKad6rKPp/C3P/5XoXMFO5+M/sX4OSLnL+Q5R/pM401t/bYCvr3Y693wrq/8SnIeiE53+G8BPyLfJ+Qrzi+HSmeeeRLZmzO+gR/hf2rsFt6B+NqW/H3hvRzeH6SrqP+udv8FvJ+8f8F7ifXSgfLnk/N5/J9tvD4HfMd4MBgfv0uvAn8Do9+68NYBNwFnkOct+r5a+kd8vYN+C/rPOeSOGQ+lm6tXR/nzlX9OeoT0hsr1o/dB8quyhy7ys04bx/5W5XwPn1kn5vyssvx29PEofL/Af5L2aIjfOdrpenxkfs98/oL6R2T9pH/VVr+Z9Picx6p/DD56ql+DPP/q7y8pf7f/r2E/lelnV/h3kr9Pzp/Yx5nW17cpN1P9+yrgxcdyfIxUbgZ+hsB3kH7ysHTOufvRZ9YTWT/0zHkRPjuQYyP66cQut2BXjazHBqK/nvXXIfickvkB/kXwb4LvB+AfDX9767k58Jxu//d5qQxzvrICXJlzWPLcpf6P6j1nPM55yTDjWnV2kXloWOH8oxb5NjW/Z/6rjf/r8NOWXPeCa+BbiE5N6fby37D+2RC+o+n/Cu2T+Tjz9Dz1M19nvsu5eiftm/P1g9S7UflbyL2b/Ae036/kmiL9onY4gf5Gq3cMfXRArw76G6LbWP/N+fL32qV4jj0Z/q7wtfL/Oco1x9/fZVAxB/wKHJN1esZ9dvwwPnP++4P0FuzxGvx+KN0Cnur42RmeB6Wfoe+twdbo1c/623gwAJ666O0Hz2P4fYlcA6UHk/d8/TrjR3/pLdF/13zxuP+fAPuSrwm+jmJfy9DvqP4C409L9GrhYxz+M36cC+Z8+KLsQ42fH+XcCZ85nxmrfHN4m2X/gt6X2n+a9OP03o79DMTfq+ovzvkI+WrqH8uMg23Mb+/FjrXHkTlH9v+X8H9OP2MK68ysL4v3S7lXOh6/a5R7RbkT5b8Gxu5j73fS+33Sc+hnU+XHkvMH6ZzbtEEv5zk5x2ki/TC8G2Y8p//N4DtA+V7ke4/8x6pfM+tG9XM/cU/Wr/jYVbmc102T/y08d4Idlb9a/iH0V1n988m/EJ6x+M95yIbad1P4LlO/SuYH9X6RX1f6BHQHkfdX48fYnOOBH6A3XP4X6I6Qfsb4sjl7a4rfl7XLbdKnGw9XZJ0J/0v4Pwh/++P7Q3gfl98Nv+Pxfzr9d9c+NeBfZBxZYPzvn/2g+q3wlXvE/eQvQ/87+f8tleHx5F+ufe6T7keO6/GZ86dZOectnD911N+eNz/UM3/Oyv0B+v3QfV79zck/2fz1Ye7r0Lkd/Z3Qz3ixQc6H6L94n5J7libqj1M/66c9lc86atfC/Vt97fQyPC9Zr7yd9S172Br+fYw/e+IndrU9+aajP4ncj2vfseofRf5Zxs9KytfL+Zn2fRlfVekz57OL4TtUOvcQWT8fYVx7Q7/vAk5Q/mn0dyDfgznPJn81+HPuOh6cAL6p3ZeAS7V/N/J/wl63gr8nPf+C/gzynILvnbXPm/J7609PaKfW7G0p+SaUQcVL4CBwCDnWOB/sS/9TpZfFDunnWnwuI9cC+LfVHtfQw034/Bj8Gr0Xyfebcofhfw553yFHNXT3kH8W/D1zvgDv+fiYRK/3gcPMc4vxt6Cwf16f3EvYT85TtkMnevk250P+/yT3y/Rfrfm6/C1tui6fi/A5XPutlf+o8jepPwV/W+jfB2m/29jH0Kz75O8Obwl/6+tffxgHV5G/LvkOJt9H+KpKjvfUPxS97AuyT/gcnWX63Wr9oG3u0+jpbvj7ZvyAJ/eHF+KnY/bPxouF6k9SvwV+a6LbgfyNsu6Hb4Vx/u2cT6t/vvzJ5Mw+eLz8bXMeIj/7p9fI/yQ4CX/Z316uvXbB1xXw9JR/L/kus86f6P/sL++lt+H0Vh/cjT100/53aY/v1c/97wT0z8l9pfIbw5/76pHkzLh9IHsZg378dJaAx8t/rHB/dZf0Luj3zL6V3qajn/PzafJn+/8b6VvhH4X/7JvuVq8x/M3k10j/zD5a/hr2fW/O96VzDjCc3m8BKzJ+qD/AuDBN++b8fH/6i37Tn9O/P5A+nlwL4dsXH8+pf5f6V+B/pHInyl+uXTIv3I6/zA8l9nOW9j+cnt6EZ33zxd/k6E7OPvBsrb/9y27/ATui3zDrc/gvLZXh+fHfy306ubsZj1ezwxvIPxDeY/D1Bfgnfpppl+/J2wb93McPw2/u63M/PzP6wdfF4Bfgvux3fXY5DrwvflnWG8+AKwLpt7b0OcqfEf87+cX5K/PWUnY423h4AD1eLX2N+mvZVWVyLTU+DaafLXO+zz4Ojj8H+cdkvUI/c/BRKftj+r/V/7PU+zn+ZeRaDM+/6nWOP5j8J9B9Q7kzcg8D70T0j1cu88vWmRfh2Vq9XuRrbF1wKvnas9+cv+zGvncFpym3O/vYAf7i+qAGOjn/yLnHEvk5/xhN35PMf0PiB4P//cugYp76I6Sz/si6POv0as4LTpe/N7mb0k8r8i3OeWZh/Cr6EewPT/y2Fvs//lubKj8UbKm9n1T+D/if8f9n6DxJP9vLfwfetdrvJ/K/nf2CetPpb/3cL+lPi/Wzg8CM8/EnjH/hTvDFv7C2dm0a/13t8LHyY40bs4wr96P7eOa3wvn297lnyv0EvWyb+0z8xP8392rvo/cOvpulf+jvD8LbGn+nyG9l3GoBtgQnkLOCPVQC1wMfwc/+1ie9ydmOPXbF17SC/3RLfMR/5X7tV59cWQ8+Jr+P9qgWv0/phvjr23Bdub+FJ/rooL1zHtaxhE/t9x55LgCvRXee/AvobwA4EKxHjk/Jf690H3ztk/sP9KdnH1qQL/cg74Od+bcdi/459iOxgw3lp/3bs6tH2OFW5sPd40dOv1PI/xR97Yj+L9prD/RPp7+LlD8Nv3cU1sVV8Bf/hKKf3pfKfWx86Wec/ET6B+1TjX38S6/r4f8T9M8nRyVwE3znfLwj/T8nfz77rkI/9cmf8WtqzgnJe631xQvqzcu+D51Z+F5JT9dIZ/3/Kn77wbsVubI+vwreeux/a3iujf+vel/A9wV7uRye9YzLPbXv0dKX4rMJ+bdhv7m/bKt+/F2Og79m/Nrkj8T/KPA2sDv9z1J/6P9xjtmQXWQf+V4Z/G8fWTzPz3lnzjeL9/Mz0i45LyH3I/FnKdyfx/9iKPpXlsow5y8L4f+AnnOemPPDytoj+4v3jX9/hn7md3zUs4/7rNDeGW8ra4+0/40518x9dcZ76V/wXYV8h6F7NHgm/j9DpzUY/6f4D86JHzf8F6N7gfz55L4b301zfiJ/pHoZB9L/H6+xrryRf3r8F9Dtgt6d5LmoVIaD2McTYC38/wle5P/KxrnT0K+Z8wfprItfhj/r443I9Ro9TYa3jfrHx4+aPvfKvU/aP+fY6OwmP/55c2PfYBN87pFzZuPxltnfyX8JvjPo8cbER7C3o3N+TZ9rsu+l52Ho13MeVwNfN8L7TeZH5eugfz49fAffSu1aHRxM3ufgPxveJvB+olydUhneAv8D0jfR/9nq534p90oNEpdBvl2N92eB54AXaI/D0LsD/lPh/0H+8+Tvz06bSh+r/FD4DsDHMOnG+Biq3w4BK/D5qvxvcn/k/9fBz+hzBPuPn/JbYFX6nwjt3vT3VeKR8H8ofg4DDwcP1g6JX8g9Y87rf8j9g3VPT/Bg65+cnzQq+OOuJ3+7xDNlv14qww/Qyf5zvvpr2E2LnAPnfJ8+LgLfNE/HX/4i/PfS3uNzXpfzH/g+Ni5eCd5XWFfcnvs2fGZ9MZucO8i/jX7r0O/D+J4IXxvyfqJ8zk0qwftS4p3k/wRfc/JUQq9m7mfM3wfSZ9Yl/6L/u/nhD7Af/WT9GX/Htbnnj980fFWUP5Bd/V7wv+mT/RS+njF+TJdfj92fTL7tyfEC/nI/3EW5/oX74pH4uhm/Z+K3n/avINcq8Hl67pR7KvTi7xM/oI8TPwTfX+SOn9mD8vfDRwV+68DfWXo7dHuot6N0bfUbJb4T3bTrdvGvsp6JH0IL7Rl/hDnsYXf6TPxH9Zzv0U/iG7rpX1uh1yJxbeCp2ueB+E+pdy05h+sfd8Kfe7Nz8bGInnJ/lvG1u/FroPRI8i/G3z+530RvG/Tr629Hy385frz4T3zncunR9HdJxmd2mfi3Q6W7KN9H/44fZgP6aQ5Pb/9n3or/w8bpB7k/iD8Ffbyf+DLz6SH0ewa6R8J/pf/fz/oj/UR+9nfvg+8W9nmJz0m75L4s92Sd8fsmvGuUW0M/P5g/RoG3gW0TTwX/bjlfzn1s/Pm1e3Pt/bHyiwv+EfGLiJ/EPuSLv1r817K+ybrnO/vyzhkHwPhZP5Z7WPLsTd74j83O/Tn8baMf/Wti/Hfin0LOrUtl2BW9E7TTDPy0pP/rjP+PK/+w8S/xmS+iNyJxTfCPQz/zbj34JscvI+fP+n9P/X8tPq6DZwj7/Ut6Jngb+meR/yT/76EdRtDv5vHniX+F/19RP3r5DZ8PKH+w8nfKz73+KcoNjHz6ax371P9In4GfreLHmfhr/FZDfwi9PVsqw03BZvjch/wX1V1Xvifwsa316Xbgy2D8cb5O/JR6y/Wv39nPHvFLgq+q9sj5dB/rmpHGjTPAI2JHxtPL0flC/8p++nz51XPvVmtdejkf3FH6HnweQj+JD8k+OXEiq/Cf++RX4u+W+HvppfDPLJVhBb530X4z4Dso9zf0nPjfY9U/Tn7iPvoknpTctdjvZPodj857+IlfQ/wc4t/Ql32sDJ/xr1Lu5PhrwRf/rMTPX6C/XAgm/iHny3tqv5yf36n9ni6V4XraYzvlzsj5svzHjA9v+f9R6e7yx5pvOsjfUHqV/rOtdosfajf/j8l5KHx5XyHvLeR9hbcTD0Xuv+G7Ufvn3ib+fWfD8yX5T9Z/6oOTcr+jfT9ir4kvSFxB/C3jj5W40G1zbhd/Q/huy3sJ8nP/v7n6dcmx2v9/w98c/cyT90hnnsx+cePEa5A/55ftc26Qc0rl837EYdZjlxsXhhrfR8fPTfniucO29Purer/mnkd/eyv3KamfdNN16Q8t7Ov2l5/93cbk/iZxNtIjS2UYv+Q98Fe74Kf8EH3Xwt8l6s3VvofLfxE/Oe+J/0IT/I/Hf+bFjP/PoLe99Cn4P0b7xd/3beP/avnx/839aUPt0AjMPerWxpvXc76m/Wfi5xDj5jXxX1D/T+2f+8LcH3aix+WR1/+vs8P/4K9r4sfI/3vmb3q8HJyL7tJSGUbfQ8gfv9L4kzajr7w/sLHx5mN6epS8O8OzBP9vg++Aj8GfuPDNc86Ez9bSwwvxKMX90pdZn+CvduKgyfOi9qll/HsdPI1++8P3lfK5r9gi/kXKx3/8H+l66NUwHg43znbIPkH/6ij/c/PIG/R+e9YX6O8e/zN2Mr4Qn/oRvr6hjwPi3wV/4rUTv32F/Hfgz/37Bhl3sv7WHvXBNfjM/V8D9pi4/vrSifdvQh/TS2XYFf31c76D79+1c/yRusT/gZ3En3uu9AL1V9FX9gPZJ7SN/6d6D8WfTr0R8L+cdxmUi/9KZ+WOIe9cek98ZUXWr+z7BvDL+B/Bcz9YhV47x186caTaZ0H8rqW3wW8V6VbKzzA/biV/DnkPlL9Yeir+Em/2JfkS75j4ur6ZX+RnnZP9zr+JP8g9Lf5zTtLNeL3MOmowOJW9t9Hv76K/6dI7lsrwc3b1ctaJ8ePBT+bls3NOim789xPvm/jf5nm/IPELOZ9BfwH9zU17kG/7wnif8b1L4gkynsEzN+9TGc8Sp3kP2Dvrf/WzPkic4tPab4/4xxgXOklnfTNG+x9pfHmNvmaStyZ7W8P+PtHeE/KegHT2byPp+TL4J+Hvenp6N36yif9Fd7J+XUn/TTztl+ab+OUPLrzfsND6/XvpnLvnHuUg8+Z/4f8Rnk7yz6aXgxOPK71Cfp/Cux5bkTfve9yL/k7uAZ4szGe7kb8N/PvGb0b9N8j/HrneBfckT0/0iv4jy+V3pKesL96l59wXpV9kP5f+UT37b+lNwG3jb6z9cw6ec/IB8cOmn+HqncZOD9euDRL/rP1Gk+NPfKzN+yvovcrO/pTenlw3aLcS+lez15yL3q/8juDZ6JwJ/2vwxn/gjoL/wHf4Pxc8mxxr9NNXyHFgxnvjT/wn30yctnJvSHdF/x74/gbzDljiq2v4/xrr102NHx0yv+HjEumiP3tb9rMD+Cb4X+3Wg9yzyN2LXrdXfxf2OVY66+st8V+JPvePnyP6eX+rolQGuZfMfdFThfvLxO3Np5/R9LcH/BvQR85dsr7NeUHOEfaipxPxWxf+1TlHLq1Lf3f9f4Rx7Sz6WZr3x8iVffQ25Mr++YjE1+T8Cv7X4f9P4gP8/5l+mviLM/C3EbzH+r8P+a42frSjh5m5B4X/K//Hf6RB/FZjP+SJ/or7gxPZ66PwTJKuHT9M+pzI7nIPmfvHxBXdACa+6MqsX+C7B6yC/2PQ6xd/KvWzLnsTv3fkfb/4BbCThzJPqL8rO34p71/hb/vcX+deGZ128HfVftvRZ+Jp9pVOfEEt+kh8QeIN6rCLrPOyX8j+IPezN+vHuafN/ewc8+EscDb4LDy75J0/+DJf3hX/CONd/C0+ld5M/ijz5dU5Z9Cel2X9Qj+no3dh4f2uxL/lXbom5J0kf5f4V+edsRI88vfFb953Kd7nVM17PbmXwv8g9pn36X7CR/wXE+f3BnRdwBPhWZjzrsTH4WtK4gjlJ97gSHytVS7xBz3x96d2mJl1iHKttOu5+M07UNk/XYbvnNvOVS/xU1sYHxbl3UDtdb/8Hek77y5kPZx7sqfpa7/43Wc9wr5OVf40esx7R3mHIPFviZuIf+td0q+y38VZZ4J55+wD4+ct7Kat/cn0jPfSh8F3IBj7fCznCdmv5p2L+GcYN/poj8e007/yhxpPxtPPCvXjv/8je/8BPAT94+A7zvqjFzgr96zKtaOfJ+DPex3xLxqH/h/gKjDrvKzvHtKeg+DLOu9k+D6IPxa9fiU9GZ6zlU+8ffyP+rOf8+gp7xbm/usO/DyGzovSNyW+PvG16uW+KfdLdfAzIvFQ6B8Mf9YLt8dfWLlr4j+A3kHWv4mfSjzVB+i1V78XeufpP8drj17ZH0rnPah+2c9mXQHvHehPLZVh4vUTx38c/IMSf4/vG9nxFPVqF/wNE8+9jfo3590b9feGfwR+B9dYV45Tm64rT/yufgaL75W1Kvj7Jb7i29zD6o9516cNfjqyj/jv/y/uDJ/x46/KLvIOSe7nboh/tX6TffBq6Vvo4zfri7XyT6W/F3M+qd2XafeH0Xua/j403q2A52fz35b4y31V7q9yn1Vd/Ufk18P3sdlv53w6/MhvJ705/N8b33+0LjsPPzuwr9y7Je71Du3WgX6L8cbxE4l/yABynZDza+vMcfh7B/1G0pUS1wl/XePro+S6z3i6G/xfad8F9JJ1UTPtk7i3LuRbDt/nyvWijyPBXek/7yksgb+Ud0rzHij6l+b8gr7iZ/Aa/uM/+yI+4kcb/9n+ea9HvQ3gbxz/GHLH3/Bt7XOl/In0OUb9n9R/nnyjpCfGv5wcjdTP+Wr83uIPl/PVjRM3lvsJ9Z4gX9Z1Wc8tl94q76uoP45drGQH+8b/3v8DwA2Uz/ou/n55F/wUekgc3TXGp+q5X8k7JPBV0/8y7mc+iL9h88SHxY8Q3D/zEbqJy9qXfhKflf1b9m15fy/7t/39P1W9Y/H9RMbvvJeScZudtsv9EPptS2U4K++E4C9xhe3yrqV5/Av4t7S+OAq8Bb3nExed80XtUjV+HoV4tMQvF+UfnfiE7H/B3M/er3/HzzH+jZPIVyvxX/ErIudq7f+Kdl2J/+L7Fhtq79zDVpHOPezJuc+in1Ok817HFrk/pOf409VEvyv6e+fdHuPDjco1yLoi8eXSB5A/69OnwKxPs17N+cbU+Eehk/ONE9If0Ysf/B/4XwTf57EL48OixDcl/jDn9fAtkV+cX74He8BfjG9OHGTud+O/Eb+NXurl/q5n3s2U3yJ+m+pvlfh79fJO61z6f1D9JcbnVux3Rt4hse7rC84Ecy7zrX3xVuBJ9ssLEy9F/0PAL/T/2eTNeNsn967SGY9vJH8L5ePvU48clxlvPtffsu7boeDf+3T809WLf2/iZ/P+wY7k/kU77E2eKdLbyd8x/qHxn8Jf7ht+zfhnvPmaXFnPJd70x7z3nPkZ/tnSD2Z/qt4L5Mh89A19Jg6oGP/zN36+Vq9ZqQzzft5x6FdDJ++OzyZf7C/3xgOzPlfuwvglyp+QOEvp+vQXP5Ci/8dYdOf4P9+HyPsc8Y+oqX78I7L+H6RfZ9y5ozAebYZ+/IpyLjw2719lXwfv3vj+QbkR+kW+izE8/i/oX2N+iD/FssL7yHkfLX5ts+CPv9uz+Isf0m7SeWezXxlUfA8OAVfBMwPe+B9eTv74H7bU/teSfyNyHKR9G2TdV/B32zX8ofOF9kicxo/KJ+6lpfzYd+JfqhTiEzqzj3PoN/FtiWtLfFDi207M+9Hw/Zb37/HXJvFzxvUnjV9jyRd/lp3pKd8nuR++7B8Gq5f9w07wv1DYzw6TTvxE4trngWNKZZj49rvNZ3lXa4j0z+TbjNwL1W+vP+c9lW/066bsIvuvJvjLumey8gdk/Sx/JXvIe2h5J+1x+n/P/9l/zs17ZIl/KMTnJi43/XMRfeb7Dj3YW94D/Uw6/gnn5Rydflbh+1T1x5OnG/q5r058VJe8Y6R83pvJvXru2XO/nvfIM+/lvaGh0pvQb/yKi/7GW2jvzem/pnT85/L+w5L4sWrXxIdHnuOarStv5KtiXsh3K4rfs2hhvdUcPEN+zvMam18akHuzvIeBn/p5X0z5vHOb84kB+s2Jxp++sTv9+4S8r0SOefFHUn8yvluoty97nij/QvXinzikcA/xrv49AVyOn5Hs5VDytNA/sz5JPN4Y5feR/tn+7+rcJ+FvP7ADmPub4ns28XdLfGreC7hBe3QnT+a/VtI/Jx5L+UeyHog9aYc+0rfQz3HxJwCn0G/eB4/f/lT6+DzxI/i9owz+F9ee75Q8xL4ug7en/JelF0q/Sn9HgIfAm/fLZ+v3ed8h7z3k3fXcVzSMfxf+dsv63vhxkXE68ZQ531zK7g6il99y/xt/Yv0tced7GK8Tjz6cXq8kd971H5V4mZxv4e80//+offeqkA8+BDZRPuen25fKcEHee5MejP8uYHt6nJN4nrw3h4+8w7YifoLy8x2fRfJnw5/zxx703CbvgSifeXVl7ocK82t7882n1vlj8Rd/l5O0y574uVx+/B+L7/vMVy9++3k/YgP8xm8m70fkfuED5fIOePyn4m9SR/oz5f9gPxm/8x2bS/B5dfwb9fdGYN4/eL2wb3pGvZH+PxqfG4Az8dsa/by/n/ipyJU4qqrGr5MTd1cqw+boJb6xafpLxrf8n/0Xfed7Evm+RM7rLsw9OvkTF31B4u2sF4aaxx5V/tbE05dBRe+cf8ffO/ThzfvTG4F35n7RvNMw77zkXgN/0+R300/zHYBz4L+RfBNzL6efPyu/+N5v/F9vhf9d1YbFj0c6/SlxVf8ap5pr/7zv2jv+sfDHXg+D//f4RdNP1jlZ31yG3sTs/9nPg9FfzsvBfG/qhFIZzi28/1+ip/gvbOm8u5N56U907qDnrvD1Spxs7onJ83C+D5Xvf4C553mBPHk/op901tff0dcP4ETjRObPsfT8PnxjwPjn5rsh3ylf/H7IhpETjH9p3r/Ie86dS2WYd8ZmKt/OfL8C/y+ww9xDvYX+7eofBv8E+OOvkviEiqyf8Re/iuEZZ9hz/Cvy/ZH4G2yH33x/JPEgY5TL/WH8F3Pfk3ugHvSb+6CsH0/Cf96PzHryK/jz7npneoj/UzFeOO+fJv++wvtBHykXf4SP9ccBYL6XMSr+5fR/KbgU/dyj5v3F1fT6Zc5F4T826x7y3YufjI/z9Y9OYL7n8zT5FxjXBoKXGu9eh68/fY5iv6fT1zv6SfyLjs/9W/yutM/Y+E2gn7iNxjk/z/0D/dVMnLD8/yvu7tusv6T70Ut1+vhefj/t1wq+3ZWfJJ3366slnib+QOrfgL/cq+W8JueES/O+ac5P8FFL/dvh66Z+G+UHscN87yzvq4wyfuWdlUbgb+i1VO4Aeno2+wd0qsVfGP5dlE9cf+L8E9+f+PB8vypx4okPv4je853MmdJZX+c9r08S96vcuYX9afal2afmO6LxCx/F/geyt3Pwd7D/u+ZdUbA2OhXG29/zDof03+y7jnH/Sfab92PynszH8DXI+ozcOb/Me9xTwJfBvNd9ofRcdj5NupTzH/IfnPPR3LuSb9u851Qqw8/jV4X+ddJ5N6P4PZZr4R+E/42zPlK/Mr0Uv09bVfvk+yT5HsnBOZ+gh0l5vyD34eTYGP7EcSUeKf4ZrRM/mv1K3rXKfKJ+/J4n4SffqVmFft4H+42+807Yscr3L4OKj8FxYN7D7G19dD7+Bmn/h+Gvl3fRyDUx37HVTk31zyf0yzvB68mZ+9ncxxbfJ43/Ut5hyXlf/JfGs5t9439PHyvl574276rknZW8r3KeeW9q/Fyl832G/oX971/gXfhJHNdU8n6nP+6d+EX9sSN+emUfiv6p2ncT9X8hR75vkvcPFyX+Pu/XlPCZ853Ee8J/AvrX67/74OPZvF9Fv5kXi/YT/9sl6p9j3Mp7WLn/aOP/n7V/a+nsDyaVQcWj8C+Trlw4v/ky5+vw1CffGPQvJv8N2ifvoDZArzV6l8QOMw7RT75/lfdT8v2rp+ilH3rXsee8f1gl8w888QOO/++SzOfsfq11SuIpT1I/32vN+1Xz6T/vwz+S+Gmwbu5b4/+pnfbEZ6P4OcGX85acw+T9wOK8kXisnG+2tJ7J/VHuk3J/lP3OOPUejz9o3n+LP2LWHcpdkPu9xL/Bvzzzl/RF+n/iQ67XHivUf5le832ZH7RPvg/TTfmFxo2dEz+Jv//gt0GpDPNdoOH4Lb7/kHXg5fT3tfzEB+SeJvczpezzlM85ao2c7ysfP7Pcq3+g/BvGkxI9PEO++LVdSq58x+iT+HckPsJ4k/dmLiVfI/R3Z59/GccTH5J4kZrK593XvAcb/5Li913XgvF/jN/5yJwvF/zP79Qf4pe7Qe4j1Mv3MBK3mDjGxC9epX2zL79M+kr8573PS/K+lXrzwMSbnUueJuheQD/F7w/nHnoNmLj7lYW4+1vhzX143gMuxj/3zvfPyHVyzvdyn2XeuT73zvkOWOIB6Hl59q3hN/ch2jfnPDnfif3me1I/kaeX8fs3/P0/ywZd83icdd151NZT9z/wO5qolCGKcDdI8qjQYAhlqkyRCCnKUJlTkQxJURkaUIaKNEiUNJglZBahHmWWsUSiKFJ+a/2u1/tZy7XW9/5nr3Odc/Z09hk+5+y97x7VS/7/33fgO7UK8I69CvCp8gU4uVIBnl2tAN+sU4B77FyAd5UW4FnwbK1+Vc0C7LtHAd5eowB/UP+wcrddCvDX3Qvw3T0LcI3fH96tAK9AZ+86/4YD6xVgV+3G1y/ATbsWYMe6BXga+fZUf5n6S9B9GP+XaP9pxQL8DPwcHIHOq/hfhY+28IzAT8OdCnA/eMernwT/GvrdMXrdtgCrk79/FXxuV4AfKV+I/5vgPU37rYzHIPin0t8sct/g9+X4O7VqAQ5A9wbwVPJcW7YAbwVvAxfC9xy7eBZcSC+ltQtwXQGUfMwOHlLeV31L/J0K35/464m/oZULcDh4EDqjtG+s/4PG8Tb969DPycanh3Z12OES9n0x+X8zDuvBeeSvrX6C8RkPbkJnsvbNti/AKcpv439DhQLcCB6B73vVP01f17CLMuQ4Sv1w7cfR13r1C9WfU478xm0+vofhb6D+i8h9Az10pJ8X6XMF+guU79V/Jb7PNu4ttNud/t6l3zfY3wj09tH/DPTOIudZpQW4iTwV9X8L3j/0/wu/b/j9TPhHsaMP0F+mvAi958n/C/3UMm/+pqfzyXeS+ue2gZ99nQW+jN+68A/B96H4uhT9U/Q/Gp+t0XsJPyXsZW/j8w97Ohqel7Me0cdV9PWK8amzVQEuhf+sMgV4B30sJc8B5O6L74XKC9hjxvcN68cc/O2r/T7kbE7OXuivZ9fr2N065U3aNbK+NcDPedoNp98DyLMneUvxcSN5e2rfkh2U1+5k/N/t9z3p6Uj1b+lfvca/+ZtT49/8vVsAJffic67y29qvJ/dT8J6C3x2Mb2f8dkPvJ/gb4+8s4/oaO+is/Af6T2l/LT23i7z0U9F63cI6Xp2cVfXvzF5m4OMAeK5GfwV+l+u3mDyX4Xdv9R/D10n/K/X/GD9Xkf8w/RvrP5s9zwHnguuM9xXsczt4ym5dgI/T36/odUL/Ovb7inIX9eXR+xK/TdnfcuVm2mU8LtK+A/3dHHz430C+zcpHGofR+L6U/tv4fRT+u6j/Wv1M68ZI83jzDgX4HX1fTm+tyHssPlvgvyH+W2j3GvzPav8mvHugdwe8DZTLsYvj4N20YwHOh7+B+bwK3BtcYH7vU1qAG8EK5HwX/mv9fiF93UkfP+n/Df2Nxn9vfAzRvoz2FxiPTdqdQb7LzItpzk2j2XM3cnbVvx89VcbPK/D/aXyPBaeyn+xz51mPdqOXfdHrTz8vw7s9ue9T/o4dLTS+TexvBytvi7/sh88bpzVF++Ox8A0gx/7wtsffGO2H4Gu+/fQq+m8dftjF7eAG+utivt1oX3qFHD/BX936vhPYGt/T9G8NXyvj8xY+Wytfhr+l1q2PwOvhGU2v71k/HwOzX6/E//XwPcA+xtJ/KfvZBN9C7Sqr/0N9HfX91H8IPsZe+hnn17Wrpf8+yhvw8w1+TiJ/efLuQN+fatdYuY/2T5cWYEf8tzK+a+F/gl2fD99++GtGXz3UN1cerjzEeL2D7hHGYy36+xu3JdofqPxIzrH42V799VmnjH8T8+oAcLH5fzI6OU+cr/0h5LmafnYgT1ftv4V/V/SvIE8FdvsOfiqTP+v5G+A3+Mz6nvPsUPLnvJvzbSf8vaBdZ3w0xV/2o9PweTv+22bdZY+rwd3AXurPwf9p7LwD+D7892m/Bl9L2fut7Cv70Unw9cdn9qe26vcm3yva3UM/XZVX038jvzfQv7/+f2tXDp6K2vc3rjkXjTMfcj76yn7Uh16qmSenGL+29uNr7NNzwYrkH259mQrvrcq3oZf1YGq+Q+lvJ/xXgG+K8W+k/H1pATbL+JGrOv01Rv8o9Tfh97/6/ZbvP3xcxi72oa9v1LdSjp4XsJPouTK65dGbov0k/F+PfvE6UE591vOe6u9A5zP6r2V/bun3XuxnF/W34bsqfnrkvgP/r6G/l/E7Tr+WWT/RbQ/P9JzX4XvYuK3Vryx+J8C/3L4xk508ovwSfM8Zt83ojyFHFf1/0/4XcAftZuk/DH9bjOtM8uUeZzflAdqfof9XpQV4J/6PY7cj0H+OfGfnu13/nKc/oJ8T6GM1fj9Ddz/jfa7+Wa+znk9WPjjznv7ONh6d6v2b3uH42rHWv+m3LoCSbcjTPesAfE86N8wDXzWfHoPvRP1X4XMwem+bD1nPuoPXsa+sbx2cK04F389+gL9l8J2EryHo7Ii/55yrjmfH68Cu+Y4nV86P5xrnV/L9rXyR9jvgoxP+q6O3F/p74Ptt4/m581Yb+0tb8Gf8NTUeW5QPNG5tjc9ceh3FfqLX1bm/ML5b8P8MfbwHzx/428Xvb6J3LH73tZ79rH49uU+k3xfy3Qv/Yu0uxm8N+JbSU85Je+Mv5//trKvfK+c7YKr+I9H9i9wno38lPj9E7xLydsv3B36OQvcE7Y/SPvcpTfw+hhy5X8n9bO5jv4S/tf7RW2XyRX9vo9eIfVXQvqr+I+DvYD5cYR0YrF/77A/2o/fBO6xXz9uPjrS/zTROnxj//+q/Fl816W0t+jfTz3nKt5P7p9wD6J/7tjrqz1Wf+7fm6q+D5zr6GAn/r+z7T/r7iZ4/yX2C/n3ge0d5e/13Md8Xse++1vGf8HMBfbdQnqP/SPhuZUdPo1df/SHs73Tj8z08L8LzFvrbkusH82Qg+V9QfxJ8peQbA+8A+nsP3+fbP35Wf7f6M9j7EPz1R28gezna778oX5b9Q//JystzPiPH/vh53nhUpfe7wOPxn/PsLvQ1JOcV+E/KeOpXm7wvZN7lPJF7XP0rwVfbd2Vd8CB2WoPdDoF/69ICrEg/NcGbrPub0Ps632PaX41e7kd70sPs6I+9VEW/GjhF/yONz/ZgM+vQbPWN0XvcOL0M73TyPWG/mFcAJf/F5330t9n8/hvcAn6o3Qr7RVP0xxrvKcanm++h7mA9dC8BB6C7hJ66gEfnvGhcRpJnIzlWoPM8fh4FX7e+tEG/j/F5lJ1l/+qQ+aR+S97N6KdZzrPGe1nGndwH089g41He+jaUHnLf8lbuz8h5dtblnN/Z3zb4uRofB+Z717xrzW5HaLdI/SDj/Qa+x2l3C/m34Lscex2j/Ay724Y+77XO1VIeQP6Z9Jl94zLl6qUF2D7fO+QdT547s36nP3gN+IN+DfCR9WcjmPUn3xtL8PMouueQr699pKXfF2Uc1Y9j3xPxl/Uy62T0G70+in70W5U8S9VXw9f24D/0tgXcE71b2PFS/H1O713AI4xH3i2/y/pI3pfhH0fvvdV/zr4G08dB7Hdn8pyp/wFF979l6GVO0f3v8UXnxTLkvQj9JvCdSH/tzePr1Vdi/5fnHUW7qeoX0O9Gcr5gPfs79xfOixerP5I9T4anHr5q5v2LPn4n74v03pGeb8LHgflety7sCLbOPQb9bcXey+OrHDhF/SXwX6R8qf7LlMvR/5P4yTlsSc4H+H9d/Wj6XEP+N9jjjNxTKE/O9wx5zyF/XfTmwne19g+AHfB/kv7n5H4InnX6PaD+UHa6kTwn0sfO7H8//Oa9p6H+d+H/x9yf+n08OvvHP4D+jmJvJzsnLtD+YPOgNjjD/KgNzzDfQ7/S42v4yXvrl/keUK6j/gz6+jjvD8o10L0Hf1vUj4Tnmfg5qH9XfRP8TMDHf3K/Re9LwVXmU8avnf4PwHsNPb6Y+c5eM38ynzJ/LsfXfPI9Yj9vlf0TP+0yP6ynf6FzfNaHnKO1+6K0AK8zPxcb94nsJ/eVY+G7P/f5+KjHXt4wPj/g4y3lL9QPt14N1O8a83sN/uf4PeehpfD8qn/z+JuQ5zPj0BY/T6ufgM8x9P2h/t8ZlxONSyflnG+WaH8seZvCvzn2D//p+GoEzmDPh+u/MucLfB6DfhfyTzS+D4CHxD7g75J3h+hJ/QbjNkB5K3w+hP/r8n3t96r4bgH2sl7XwF/8DOJf8DP+i99/R5cWYL7fd/F7vuPz/T6cvibBswyeG/T/NP448QfI+Vx9A/1eU64F35nZ/9llGevGzspb298P0/8/uZfIdzv5Zqsfgq/N8Fc0TjfQz8f0PpucE9B/Mff36DU2X+6M/07O39a5HcHf4hdgvC+AZ/ecl/H3uPk+GP95l1xSCq9yffyfQH/16X+c+gp5V42/Fv5G4Xc0uLzo/nAr8hbfK5yi/53wvVO0r7XL/ug8sad9/CLlvH+cku9GdG7NvUzOB86De1j3hxZAybe5p9PvF/y+YL6UKS3ACdp3VJ/7oFW5L7ae/YbOYLAJe2oBf+5N4q9yI/1ekXMJvONzDlOfe9+Veb8qugfeiP4zeW+y/t2tfj/9Btb4N9396b/4vjP3oIvJd7v9e6p9YTfjdZ3+s/XvFP8e9T30b2893Le0AM8wXx/X/0z2Pc26McT8OxDeb/Pum/cLcu0Pf1v8fQh+x05q5R6NPq5hL9Pxeb/+u5qfJ2T/Vh5Q9L6Td+dO5KuMj33pdbH59yJ9x//nHnztCY6kx/XG4U9478RfI/ZyaN5/6WtbetwZ7ITffub7crAv+Dz+p5kv89njaPy9iL9X8XMNWAafK/BzJPvqme9768kd8NQnd3fjU5b+co81Ft6u8B4JnpJzH3zvKm+2v18S/VvvmrOTFmA7dJuS61DlvbWfgf9Z5P8dP0/kO5p9dMTfQP23i77pvxJ5xoHvwv+38R9ivrdlB3nXuln9UvUjwR2tQ/FnfIA9tUPvP7knJ39N+tkVrAE+kfse8u9Ob+f4/Try5f3rC/r9kd10xGdH9nI62MN419VuG/rp7vd2eU9XPyffpb6PHje/bkZ/T3rNu8gF6OS95Dh6O1T7r/X/U7kevfck5yT0cn/cAd7HlV8iV/xTPmJvuRebB+Yd+2Hl3vr10L6N/m3o73v8/hP/A+P1O3saq/007fI+/Lvx2gj+AfbRfqRxO4yejmY3V+uf9+be4CdF79Ffste5WReUp8Gz3O+HkvdC/A3PPmPcNtPvuX7/lXyvs88uyruge2/R/nFz7ovjr2F9+cB4z2aXp5YW4Cx6nI+fCewgfi73oxf/yvhVFq+v8Y/+BVwLxj86/ntN8Bc/vvjv9cffALCe/eMbcj6ufTN66QHfNeSPPV9vXGPvH8SPK/f15D5AuT/5Tsj7BjqXq28Hf/zP4ncWP7R74XubfXZGN35G8S+K/1T2r7nKvejjNf3izxd/v7wPb1SerN8p+Mj9bwd2+Q88p7PPB+Gbzv7ib7eDcnf4n7Uuflb0znwc/Pl+X5Xv9nzPo3ej8c45e2DRefsN7QbjuwM5OuDnTON2u3lwlvKA3PeT/8m8v8Ab/5wG2k/D/zCwq3Uq/jU75d2dfC8Y77L01Bu8kH1dqbwl39eJe8g9mvHLPdW3+BltPRnGvkfj7yV2+pT6+PFWsF68Ce+HxvM++plhvC7Xrhv+9qXPKjn3468he76U/f6QdTb+1/TxS95Pcj7O9yK+cj97XN794meC/6a573O+m584g9wv5XxeACWVjMuE3B9nPtnX9mMnM9HLfcOD2se/ZD+/H4HfQex9GX5moLdA+2Ph/9i5pZv1JfdA57G7/2ufzXl7amkBTvf7JPaxfc4f6L4FXqfdMPNhNjjfePXD7+Pw34ffJfp9Cf/Q+F/l+0T7+DH8rdwz78f0vhw8kl7rk/dK9lyLfd2i/4jcD+SdkT0fnvtK9ndvztmlBXg1+RMXknNV4kPyftzbuG7FftqgN97+3ZndnJU4Dv1L2Of8vBNlvcw7Zd5//T4r3z/s/yB6+5L8r8ZPRP8frRMf6X939g/6qUxf4+KnCf9g+KsVxUf9rP+ofOepT/zLwcYp8S+d6OPa+NWz0+/0/55+2vj9RfBi/JfF/83sazGY+KmH8Ztxq1VagGvAxez+OfOord/vgf8tfF+ZexJ8TYb/avace8X4P/6h/xzr3tzEceD30ty/wvu19p3p8af4x7KnKtr3xF/8Z3uzy6mJv2CvfbX7hv3FH/Eb7XIfvjX7PUf7HwugZL3yY/jJ+A9Tn/E/wL54Jzzxf8593K70Ucm4z8i9gP7X0ssM7XI+20f9634/Iu+66Od98R/2tRn+Y7W7WH387qcZt/jfr1S/O3vKe0IVfL+a92H6mqX8CHojMv70c2PONeDNifdgF53Y5VLy/mk8RsB/Gz4X4W9C7qPtKxvB57R/1vi1hr9h3tHNp4nGK/5+8f87hZ7i//eNdSnfbQviJ6LdVP1+y/d+/DPo8379NqPXNv5EuR+nz/PgqxH/a/qcQP93sdNF5lPu8c/F/9/wXFwUz1OFvef78n3lB9F/wnra2D43lZ5ehD/fF0vgOzD7er5P4G2oPn7gzyc+qwBK5rL71cpZ/yqgW7O0APMdOkg5fjvXolfs/x1/mPjH7I7vY+jvUvTif1j8PhB7fhT+d3Jej/3QTyuwlL6Pz/ur9fcWdjIZvz3Uv2784v8bf+D4/55I/ifhaae8rf6578g9yDtF9yEbzafp8B9EnupF/mRT6CP+ZvEvO4de1qG3Xn3OCRejl3uySfDmfmxX8vxm3u6mvAs+XqLP+I2NMU7l4P/F+NVP/Ap7uxb++P/E7+dVeOL/04d+Ts39Lz08nfsZ/K+h33PNoyXqV8C/AP5rc88V/030NuArfiMX4HcveqlUWoBn5L1eeTO7+SLxuvm+RP9d8623dleAryR+ETyQXN/jdzk+foRvU+IG891Fv3PIO894zFa+GH/7/B/n50/Id0zi6dApgTfxUs+w78PU5138DvKOZ8959zkEfyfT9zzyjEn8ADnXkC/+KFPUZ5/O/vyeeXdQ3q3w9Tn4HXrxh5+Xd/7E36DfGb9ZH442PvGfj7984mqOUc73Z+JCZqOX+JdB8OdeZxS5E3+xGD/lY8fKu7Krdc4PidNbo//wUvTgj59AD7+/D/97vi9P1a9/1X/z39J+skW7ScYrcXodC6BkDFjVOr4g+jC//vcOgf5+xifxjVPjx0hfiXd8X/8rwTnwfESfTzsPlou/u/J/jdfX+OlSFL/QN/eT+n2sfGC+j43/97l/SJwr/o+Df5v4y9JH/EgOJ1/il7O/Z7/P/n4CvN/CezM7+Bo/JfjtB0/ib3aMf1vRubC3+oPhPwZ/K5VXo3d67q/s9w+xr7HKTeF7y/hvhc42xmex8rnGY37GmXw5J52tfc6VOWfmfPl63h/w3TlxyImPYXed2P3n+Lkr/mv2laP0Wwt/zvddjXtDevxP/NuSpyH+Xejfzf7/zPmsAEouAPvh9+1SP8DTRP8BsWd87Kucd+W8M38IdnWuPRuc6Jxayv7XmG/97JtH4O/O7DPs4q4i+eMf/Iv6sonbwk8V+jtd+TntEifciP6mZv8jb/x0mqmfkXwZ1uGW7kdmad8Y3sRnriDXYOObe44L6fEQ9CYqZ385Xfvt4BuH/1bxa8n9tvIm/NXXP/MgcQ0L9c+9+r7oXQX/avw31y/+YLvR/zPx34U/7xaJs837RfH+exT5dtE+737LwCfo4xbyvIzeS2DyWbyHzjT4XobvBXT+Un84eV5iF43hPxb+8savl/PPj+pH4b8Xeo3Y4fbKyR+SeOjs9zkHJD76/fhXwZd75UO039Z98GHm5VKwT84R6LXNPYPzRPzmxpq/c5TftV5cEP0ln0r8i0sL8F7818NfbeN/S9618L+S/nLPcIz63C+Mw9dq8DTrYfyg8t6R94+8N+f943J836PcSPvXYr9F3y/x939G/arcH8UPSLuW8c8vOv98lfNB3tfoew7YVLte+j9LnqrgjeTsiE5N9HM/lribrfU/ogD+d+9QfB+xPvcX+jdkj4mD6c4uB5F7O+Xx+O+Ofu7j1ybuCv2Zxi/vMMnrkvj/3DckDrAMOCjf6+Q9k/wV7ZO554p/V/KTnEKuJ+I/Qb4+1sfkEblf+2udV4YqD4mc+GuY+wz98u4R/5l6WS/9/h2+El8wAn+N/F4p/rfqh9LnCPtr3nWTv+K+Aig5x7ngZeXER2bfzHy7i73VJP+Y5D3K+dr8zHtkl7z3GPflYB/87kD+VvSye+Ik8Z/7tR/8/gX+Loj/ofWhETqLjF/OM5+Qqyw8c9Xfin7TIv+xiviIH9lm68sW8B9wgv6xr9hV4mzW0c8m9D7DxzDlz+GfZz/91jh9A7bAf/JG5L3tU3x+kPf4+AObd/ur/0H78X7fif6mwZf4t+QDmELuZkX5AfJ9caP+8UNO/MNV5s/R6L2v/xv4K/a/f5IedtJ/sfp2fj9beWjy/zhv785+E0d1V+Kwjf8g4zKYvOMS32g83idPd/K3gf9D83cJmPfwRYkfxtd6/Mdfq0XR/dw7+NiHPnI/l3PbZuNdO3EG+uf98G785N0w/mXlrdufOjfOcN69LfbJXrbOfIifJvz5vv8i8bfkT/z1SPrNe/gI5fj3xP+xa/xT8Rv/x9h/tfiVoP9AzgHZb5UfUv8R/orjF+IvkvNWFePRMHzT8+fkzfvhA0XvK/2zX1lfOsLbQvlT/Ozs96eU4+96afxF0J8CltDP9+pvt/4lLmk6O028UsfkR8m7DnpH638Wvo8wHhfge+/ER5sPiQ9IvEDuUxKnne/FfEc2T5yQ8lD8PKV/H/g/x1/8XtvGzyrfzejGbz5+9GPzPlOUP2wRfuaQZ2XyUagfnfgm8id/S/K2TLCOX4r/75R7m98TwbmJw8Ff4sDPxWenovPFHvptV3TeqGFelaBfDdw3+YvoL/FNyYOX/HfxH7oQ3fgNVcj6gb922g/W7pfEyeFjOP0kb1r8t/+0P1TIuUk5+VImJj9Skb/VWP2/Ypf5nlwQP4p8X+FvnvrkXeiS9y/6uTL+esZztv6j8fOUdbBm/M/Q34S/N8mduMXz4etArvhz5J0r71vHWf8eMy6fKF9u/F+ir+7ssRp6c+v/W57k7zgS/eTveCj3R+i+VLS+/prvB+2bo9dcebH1qFnyVCRvH/4+Nn+fgDd+QRfG/4H8k8FOidOCP/FFB+iX+/H4XydfzmT0c78Uf7t8//8FtqbnfP8n3j3v3omD3x39k61nj8I3JnEP6s+H9y5855z6EFicH220cvKkLTV/4v8Qf4j4P+R+Zjv6a6ncPnkL6OMjfPfAX/zfHybXQL8P1W9b7T+1nt+YfGDkTP6DzVmfY6+hq9wfvyPhP8I+kf3xDvj/8ntt7WfGbxy9+DNcFvmNT+4jmhfdQ+a+In6mo9Af7Pxxqv7Jl5V7mv/lw8h7TAGUXIOf3+OXj/+6fj+qtACfhOf6+C/Asxz9CWAb4/+R/i/6fSH65+b+GX/xD4nff/xDKsRvLu9S+g9KHJXxmJvzLZh42s5F78Jt2HNX+P/JO7R+F4L5zsr350Zy5/sz8T1v4n/n3PfCl/17N/W3wvsAeCL+Ei9ygnHexvgnfmQf8yNx6M3dp6ygly7W37w7fJp7ppwf8P8Kesnzdw35l6BXm7wV6KdsUX6E+BPH7yn5LJqaz/muagIeFnnJ3yt+p/h8Aj8VyV3PvlQXXIPeYPvKs4mfwVfuJ0vwm3isV5Nfi/x5P/hVu7wf5D2havxa2UfyzZ2Ev4d9z5zh3LCd+TVe/8Tjf4pu9rc38dnH/pB4t+Sfyv128mflvPYVuZN/IPm+OplP83N+Vv4Mf7PxVV0591nLyP0qfmclPhT9gcbly8xz/frSb96Pk78278h5Px6Z/Ea5p8x6TJ+jk++nVDt4riZfncStOKfEPnqojz2tZ2fxN4u/UgtwG/RKivx/HyJX/Ncagwcl3hX/M+k98R5N0X8yeZGS7yBx93mfIN9pfu+BXr7n9kJvNbmznhyLfu/k91R/H/oPwr9Pzjvw7qW+Tvyv9T9I/7/QO1d9e/Y5JvERxn8V+i1yvwJvcXxs/K/jb1039//o5f69Iro/0tOZ+N/JeK0A2+t/fN7zyHcT+BX4sfFIfsIF7O5Dvw+Dv5Q+k8ejSeIY8n3jXJU84Mn7fQ79JP5sHJj9J/Mw78HZN5P/9dDsc9av5BE+Iet23r/sP1nHqhiHrGd5/3sQ/UsTh0K/K82Pceb1fcpX5L6dXteAw82XGvjP/WXuLdfnnlv/M7XbDF6b+0Ttz4pfUb7f9X8k63BRXPXh9JPvw0uUR8VvSr+jjM9V+G2F/5lgI3j3sN+No6efi96/d7BuJI95/B/iB/CycdnB78/Bu1PiRKzrp7DLD5TXJM+sfv0SX5p8d5E//mfmVQPjm3i/z9Hf2/jXB8vEz4z95JyXc13en+I/NzF5u4ryh/4Vv2H0NymPUp+4u5r09hH7OQj/Q9l18i3Ev2Y9+efQbwP66aj8ffKLJv9F7An9BfDXI9eviY+ir+nkb49eudwPkjf3YCeqPwA/8Vcdk/hMctej5wbgVP3yXpX3q7zn5v3qDvjiz3Vv7k2yXyd/Dj0m//8ziV/x+yfwPKP9p3mHtP+vpr+v9d9Qin/z/S/waXCF+lfINwGeB8GW+P0q78Pwno/vD8Bu8PQi1z/anxj/bfrOupB1YlHR/nCb8c4+0V+7WUXnuuL8prm3GsfO8h0TP6DkV7kp+QOS90P/qn6fgJ8J8D+R/DTsK3kHivMRzHSefNt32Cz2m3xey6w/8Quelzxd5Ey+galF+1z+/8IE4z8x76zxj839ffIHkOfe+CXon3icxOf8rZz304fz/yDweU/WSXpfU4K/2Llyd/1PSz5x5S/BfOftkvlLL7vjM/cxvfVfAT5A7/3U570y55Z8H+6h3bH0fjn7H0pPyd+xM3u/MP5B+E889S/qs68nT1f29zHKS9CdnHtH8Lb4d2U/p6eM/wjrxUhwFPg4/vfLvSv6n+bek/5uSfxk8vxp18b490T/Vu2L/z9LY/tbzj85D9XKe1jil/H9DznWwd9Mfav4f9PbFfEPML5HgK3APjkPW08axq+Y/Ml3kLwZ1dndSPDg+GWg3xd/PeGdmfvsIr+D+CGcl++f5A0At7He5f16UvLTgLOsr6ejv7vxybqW8Yidz1N/Gv6Szz75D58n9xh2+ZNy/PXe0r9p8sPAk/wSr5LnrqL4kGXkv579NjOuJ9kf43+Z/KHJF5r8oYfRz7fmZW3jVhdMnoLt8Jc8EQ3Yxca879NL3uNvSpwn/orzZ76Gn+RP+Ar/t4OHJS4p3zuJ18T/nupzf/wf9DvH34l+do3/Bvv6T94X2VfenxN3mnftGfAkLjXvJXk/yX6R+5cqicspLcA26M+hp1XKW6GX+Krk94p/WvJHHwJPvt+r4Tf/F+Zi8+ci7crCn++iYX5PfEy+VxO/mnjWfL92Yl/x+wje/P+ZGUX575IPL/nv1rDn+/VraT9cnftfdp+8s4eS4wT9+6J/t/7XKn+Ln9b4vzzvqvi/iDw7208ftE8nD07yEy1iz+fFv0c5+VV3wO99+udeoj3+8v818v808v81XlMff+vkH/iLPSX/wPfsfyv2nXugiervifyJIwfnsas+6B9B7mf1n4Z+2cTjlRbgfP0eV04+3t+T79Dv8WNLfNgxOXfClzix8/BzoHP1J9bRnvSZ+4bcW75QdH+Z+/vfcg+Gfm32NRGexfS7q/oT9O9Jr5XyHqx8u3L2n7NzPxz+4bk697noJL/oHuSPf2417eOnG//cs/VfmXcz8LnER5uf51pn9oMn++VA8/sGcFXRe0C+H5LvIHkQ8j3RMfGx+NiRnLfC/2j8u/C9bfI06V8TfyXqn8dnOXSeZl8t45+r/2OJh8Nne+Vu9sesryty/4GP3FfmfrIbvreDJ98n8aMrD98G+/KG5PvRP/FeibsrjsdLXvePwFbGM/ktzjPvbsn9PD6zP67W/rDk32I/j7GvG+2r8UuJn0r8UzJ+8TP9s2j8nkj+c/2/hT95tD6k/w3sYpe8Q6u/XP/kZ16X94v4e8Q/gjyx59jvifDODj783ke+68zna8Cy9D8T/1+wl/PBBcknwR42FPknxF8h+VOTN+A6ekv+gOvzfUsvg/BX7P9yIfnznrdOfSf85/s438VXK+f7OH65yQ/ZDz/x/4lfTeLe3i6Kf/sqeU3sK1/HPyDrPf4ezvtezsu5n1D/tvp2+DofTD6QXnkHUc77fvyt439dhxzxvx6Iry8S520e9dJua+f/vHMXv2/X1a8O+IhxuQL+P9GPv2I1cuT7eAP7/Yxe1uL/W/pJ/tXkXU0e1hvgP9r6sS7xZfSQ83nywSZuIXF+yQ97D/7i95K4mPi/7MaeO7DLtYknxccByuuzL+jfMN/P9Jn7qunmyST6K45XSJxn9qvko09eu4rxg4E/+SkyztFP8lXkfDsjcQl5R8fvePyNdQ7K/5fJubk1eyxNHHBpAX6V+7nkt0pcKXo5n+9qf90NrAU+j7/b0dkq8We5H8/9qHLOB1/A/1P8Z5SPxmfO2x3obxZ9V0G3Kpj/Y3EB/DPIdUveU5SL9//p6C3MPMy9FLrxZ7wo/nH6Jy40/yfoPfwlP2byLR6rf++8P1mPkr8n+2n2z1HGtTg/Sn3473buGguOBsckf1TurcEBYN6pD8ZP/i9O/k/ON4mvN/757uwR+fMuaN2fBCbfUPKKJ79f8vodnzhn/L+V8xh+EpeRfGft4w+n/zDt1hqfYbnX9/sz+M35dUhpAS6lz1e0i3/jpeZ9lfwfBbBS4kPIk/+HOgW9xfFfLMov0g695BdJ/uTk80ie1y7a/Rz7R28v9Vl/wkdt7Y+kj9Phr2z9zvljofFN/F3yCxWvE3/j/2D0G9LvwbkvVS5vvS4HlgWbxl9X+3fwF//WgcZ3UNF5cgD7XYJ+7LYJveeeeXtyD8j3f+554l8cfs335F+L/95P9Fcv60nOVcnXG79L/C/MOxE5Doe/Y+4X/L6/9bRaxh+evC/vnHU69x34GwR+Zz/bmj6uAMvk3jx5Sozv6fn/U9v+m+89yJe4+8TbJx4//z+ziXI5sBs8L9Fv8oO2oPfkCX0B/TaJN9e+qf2yLj6PLvIr76/d++j/Tq/PlhZg4oen5/ys30owcYHJ/531KP7m8UfP/y/M/3eui24l/Seq35a824D1Mx7wf6b8Dfzxv8r/j7k8fsX4f5I9ZD0em3hF9YnTq04/2Xey32Q/qqp+J/Ilfrc4f9SHuVdUviV5knL+0/9jeqmCflf0dqKfeuoPhn+/xF/Qe/IyTAKTB7CK8c86NwrM+ha/rvjtxp93EPrFca1LtT8v8Tv2v+THm2B+JD/eIPaWe5/i+6D8P8r3wEeMy465f7VezQW7FsWHDNMv/6+qnPUz94vJN1Ri3B6JXzA6zdlPM/AgsDo9J29NzsXTi/6/V/5/Xv7/S5XELSS+mT6W4fum5F/U7hjnn/z/o+THjP0uM6/f1H8P41eJve1FvsQvbiwtwMTzXpn8RkXxYXlfSV6hq+Arzi90kf75fxsb4Un+urX4fcr8/EE5/3/4neS3B/N/hN6Nf3TyZdD3H+jn/7smfjPv3SvZT+Izlmh/T/I7kK8yfgfgP3kHtwLz/zXz/4Xzf4Ur57tGfc6H2R/y/4CSPyT5XVo6n39rPU6el874bU8/N9sP78t5RPkSsCb7TbxON/bYT7kyPvvSbxPnh8H6PZD1mr6K/3/zFvK/Sb7/B1GsizZ4nHXdefTO1fYHcGNKCmkyf6k0KA2k0oAGpTQPSimRui4NhhJFokKT4bpCSShCorkoaSYiFdHcbaRJlEzlt9bveb3vWj1r3eefvc7nnLOns8+8z35m7FTq/38371KAJZULsGH9Ajx0zwIcJn11SQGu2asAK25fgAfULMALaxTgp/J77lGAB9UqwH3rFWBz+T/sVoArdy/AS6RPkH84+q/A2wIf14GH7VyAx5YpwHr7oAu+7vsYcDV4IH7akPu9quhWK8BK6r+L/uTqBbg/ujs0KMAbtyvAH/G3c3n09y7A29Dbr2wBPindRPkZ4JLaBfg5ekvqqofuYunH4O2Lv73kz1P/V/q9Wn6PHQrwce2zil4XwTNuxwJ8iD6uqFCAl8NzFL4fw3cr6R3g36L+a5UK8B/0Ua9OAd4i/bV2OgLe8eq/QN9rydeRPurjc3uwOli2pAAnSlfDz534Ww4eBf+ScvhU71x6Okn7ldfu71cpwJXgAPhn4mcoO34Kn2vhewG90vjoI303/U6n153o4w/t9Yb8i7X3k/AP0E6L8LdF+Rr4WYDuFdIT9b9q+u2u4CTl9tYuX7HLD9n7GfDP0t6V5b+kvZ6Efyn8R5NjiXQb9S/E94f02g7/W7TzYeSb4PsPyv0g/1f1z8FvbfreTj/bh972pa8K5JmK/rnKT8DfvdKfKf88+vfR473w/YVea+05hbynq78v/I9qzxra9x7plepdq/x18LapWIBj1b8D/Y74eUa5Z9lnI3x1T7+UXie9C/08oV4L+ptPfy3gf0S9T3z/FJynvYfT5134PR7+3WJ/YLvYJfit/nke+Dy571N/ina9rqQADwt/5F8Hb0XwDOX/iZ8n8X05fIvVfxL9Y6Xrk/8q+uit/E/S++FrKzsYqv7+6t8PvoCP59DvYP7bj113kW6o/AL8daa3Dehdh87YXQvwKfr5APyZnAPg+0n/ulT/HAL/qIz/5OuCXh/yncTeTwY7GJ9WkHd3fMwFS6JP9nU8/MPgv5f8T7GPyQVQ6nnwIvJdpv5YcvRG72P1j8j8nHmTvvuQ623pzF8b1a8tvzv8zdGL/M8qXxp/E8i7nvy/g7+EL7A6+fvS9zPad5x27WScG6s/LEJve+Nd7CH20pv9LiDvjvjpUlKAN5F/mfn1XN+fUH+x+tPgPw+9g9BvqH7mqz3V241eMn/dQz996GUSeXek33t8X+r7reQ4Df4G5t0Gvv/CHm5Sv5H8YfQ8lX1+Q5+z2fOn7PxX6cboLdT+30ev0pXRH47/wWlf9SrS5wH4/72kAPvLH0L+3tYXPeD7Bzuaif8BpZRD51Z0HlL+F/UXkbsbO1iOfiP2MtC4XZX8x2uP93yvr149sBw6Z9LbE75XgK8a/W3PPh6D7xL4e2uPYfh+hR4qxd7w+4hxYwr4MHg4/VRXfln6P/1VLSnAxfBXRn8cve2p/sPyq6P3Dbm2k3+W/hP7fky5Wemf6K/RLtspdx773w69t+EroY+r5E9Xbwx8DelnsXp/Kv8XuBVcq/xD7K63caEf/i5Vfxt7rE7+FtJHyj9Z+TvkdyqtHvt5jl67K9+afqbjP/PPCHJ3gu9h/P2bfqqRc5b6k+F/Xrm/wHO03wn0tS/5Hsv6Cf4r0J+vP56kf/YFK7Ovm9BfR76N8KzDzyPqb6/e3eAj5FlEvtfVP9j3sfgdyG7vgO8J+Gfjb578LurPxs8B6k+nj5vwe4f6n5O/Ifpbff8end3Uv0//HA3+A39T1a/PLr4AvwGP0a5r8XMR/qbR7zvwL2cPdcCp9NMFHx3or6vv14JZj5wHf330DvD9RO0/iX52lL+SHvbC/5/Gr/N8350erlV/uvrvk3t6kf1cie/R8u+UPln77IG/8fAMA3vi827j2wXmsfPBcvBV034NlP8VvgbpL5m/6PM0/DXD/yHmnzONa5O1zyr6GKP8z+hNwd8C9X+TPhL+y7VjB/SHqt9f/Q/xeaX68+n3du3+inRT9TsYLy70vR14K3yl2d1ZyrU1Xt5EL2XZwxJwIf72xG9rdL+1T43eK2rvpuS70vesp79B/2rtcTJ53kD3eu3/Nb6yHuihXsbXUvQ+C/3nlW/IPg5G/xXteAp9fql9zkC/DdiPfU3XrouNX0Oc7/QGX8dfY+X2yvqfPnKOk/VF1hWP4T/ri+fwtTv99MPfC/i/nb5uovecu/wGT0PyvStdC55f0j+19wbz+0TpgcpVUf8r8EZ8P4V+1jvXZB+k3b+i/7bs4lVwlvFkkvavp96f+PsV/6eqXwPdE/FTB71j1N8P3gOcq10Hf2V8lNMeY+VPkl7Djv6jP+5o3v1KOud7N4ADM8/jZ7b0anaxCt8PkaMx/TxTAKXmglkP3U+eoeyjfPavWXfR81vWWzmv+FI7v4X+s8avF9jrufi5Q/msN8erl/Vo1p9/0X9p5a9T7tOso+hzMH120/8/Ur619cwz6o1mx/vD/yO+HiDvaPT70c8g/G+L3UkfCN952uVgcnyU9RX6WRc/lHM18rwqPUa7V0T/lVLwSx+HXn98Hqv9J+KvLvxvo19JvdvId5n8G/HTJ/sP+avJcQv9/ZbzDO1dEX/7+36k79mfdjW+ZJ9VvL8awJ5XgLXopwM87ZTPvqJ4v/Etui+UFOC+WSeQP/v17F8HkS/7973JvyP9vE2PN5A36/I5Oe/Bxx/km0rf1dQvDf9g9W4yfk8g1wT2tjP7HKb/9IKvEnxX438GvH3Jtwa/h9JPWedeH+VcE7wWvn7mjWX4HmY+7Ab/3vSX+Xwb/p9UvhL8v8M7CbxU/SX0Gz19g+5p8n8136wAB4NPZ/9l3G7BPo4FK2iv3vI3qDcKPNz3HuyhlfRJ4E/0c7/0NfQ4Tvqz2D963ekp9yX7ae/b6PsY8v07+2Tt91jWtyUFOI1cWb9dh99l4CywKXr3av9/wNsB/e/SH41fX2a/LH0m/E20x0fwzsRP/9gRfo7DX3V6aUz+/ZU/CtwOX8tzj0G/12T/lv4HX6mcn6BTVn89Tf0d2de97Okl5Z5Bfzn9Pgnfcu30KnkfU75ZzjvZ54HqV8N3S+2zg/r30Wc93x8A/8RPncz/6LbV37vjZ4L8Eej9jN7p9FdT/hHoD82+E76+8ucUQKndfH9KOw0nz3Xar5x+tnPuM5RflXsBcCX4HHnamq++0S7fgcPg32RcHWecbiX9Uu7ptHcd7ZP7weukB0g/pvzc3Dtpn6rSu4DL6LeC8n+wjw3gcPbxK/wnZD+pne9RvwT+2wug1BB8PE6uWeB3+suz2mG+9UZt+HYB2+NvhfY9Hf4r8TUWvAocSb+f0FdL+ttd+gJ8D1SuOXlfNB6ei7/Hjfuzwf/gL/clx5gPVmi3E7XHQ+wn6+oDwYVF6+y59LkJ3xuz/1N/ML1VpYcp7LSi+o+i/4H2WIV+WfrJvHiHeleQ90394Rz0H6SXM4yvZ+T+wPfB9FdG+nz0VuOrMngZurPBd7XXGSmPn1byJ+gPD4I70087/LWEt7N2OYLcO+GvDXvL/Jr+92rOr9DLucUJOV+j30n6cxffx0l/qXxX/NQyfv6bvqri/xrlloKj4dlNfmXyL6T/x+l/b/xnXXkMfpeys0vwd7P9xSbzxjL9pTR61fDXhP4a+L6E/rJufMD34vVj8X3JVvnjcj9P7+N9P5w8+5DvzKwv5S9UfqT6i6UHo3+hchlvttH3a+B94Hvs8AH97S14utHj+fDNk/+//BS2aK/TrbP70dPu+u9b9PcrPZSn533J9w26J+O3RLuVl7+a/V2e9X7sUfnd0K0Nfy2wrPbN/vIYcnWmzxHoXIqfjfrBitwLqn+9/Oq515Y+paQAB6oX+9uCvzLwl9DHN0Xj6D+V/1Y79DS+XQ/WIt/B8t8xPmT98wX8v9NvB/X+wueB5BhmPJms/o3gUejPptcq0h3ZR2PyZX1zHL1lnZP1zXHk/YvdrYdvAft4RX4j5Q9gF7lfzf3bczn3yz4cvB8/h9Dz89JfZx2ZdgNfQ69Dg7/nl5T8vVzy2+lvHdnJPvSa+/PDtN9a9l88DtyJXvE64L2Mn0Xjy0iwtPrtyTMfnAi2hy/z5jn0UTx/VoV/AbwHat9nyHkpOjnP76F+7pevjX+D8l3A8vI7Zf3t+0fscYj8QfpbOXZS0XhwNrq5f3sDnwfv+nf63ei/G/t5kR1sjh7x1wr/M9nhCenf5K2k3q7w78v+7tdfco/aBJ131d+NfLW1aynj3Qb83QHfaeRfLH2l/APgfUz/aSi9Oet7+qqC7520a3vlrybfJvJmXJpdNL99QP7Mb1XI94H8HvhbSr5a6P+R/SrYF/6J6n+u/32o/uH0MQj9u+IvUFKAl8DzJ376at8L6GUr2Az+s9V/NvuNrDvjP8JeKsF3nXXq+dl/stdt8geQ/xDy3aXdO9FjL/Jnf/UBfCvAfujHf+pRfP2Se9ech6L/OHmbovMYeSbTY+7Xc5+ee4WD4G8N3yLfyyjXCPxQv6nO7k4EV6D3Ffzj8JFz4xfxt8l6ZjO4EdxGnvjX7aHeU/QypOh8I+caOeeIv9rx5P0SnqPhfTD+ZfKzL/o+92P4/9H80wicpr9mfdJCuQnabQg6T8ufA/94dM9C5/f4QeF3ELtogP4HJQUYf7vt4Ps9933Sg+LPpt7evu9HT/ugfzP8q/G5mfwb8fMEOmfLH5Xzb/jfVH9Jjb/nt7YeuD/+hvJfjr9AkV9A5fgh5fzNuBX/gPgLxD/gDHRb4a+8cj1yP2E+b4SPMlkngz3p90F0V8IzC3+5r66Kv67k3RB/P/27jHHmEPwsy/k3/uOP1Er+KvrP+FEl5xHoXCYdP4fLwNrG35vxn/vaSfjMve3Dud+Vn3GyJvluUy7+XJmfWiv/Vtbx+Fuv3lj87QN/36JznYHafRX5i+/Dck/2Ws63Mq/Bt15+xq83jbd7mYer4Tf+qNfTb2vjwqngVPSmSH+ofbag92nsQ7/dk1x1pMuSY5r2vpV8vXN+pH4X7dHKOr05Pjuqvx18p6h/CL4bkG+ydllX1J5pvy9yHq9eL/b2I/mWxq7poRx4Pnqfy/8UzD3/jvjP+uON2Cc+sv64inx7kudK6X9J7wjvO+h2gmer/G/iV6feM9IH0Xdb5R9Ct0n8C9E/if5bkPdk7Zf7ifhL/gHfzeTZKL3Vfq6b+h9Lx19+Evs+Qvn98JN76Ow7xyv/MPo9c/9KnkbgxeTclnW59VFdcH74z/mM9UX8rFuz98HKXQzPZPx8rtxq+roU342K5pv94H+cfG/BM4d+tup/Q6zHL8X/VOkh8h9HL+vmzeq/jt4R8N8l/0Z6Wm18W2Bd0se50kLpb8kT/6Rm2r0N/k/Svp+YT08l5w74myL/sKxb1O8FX/y33tAex+qXb8aPFH9L2c+j+Ek/u47+4o+W+SfvBqrK34Sf+CfdI30z/o7AX/w7z6CvKSXqZ/7Pejh+fVlvaZf08/TruvHPynoV/Udz3p73D/rPoeRaiY+sH/qg3yL3nDnHJuerxrVD2OWFRX4S8S+Pv0T8zONffiD5c//fqej+fyi7uAidN6wPp8aPxvdq5v3TlI9f7U/Zt2W9Zrz/Jv6v7K0p2KTovH4v/A/Db+41Z+Iv662Tcn9Ivh/jf2s/sVa9KexsPP2tZ2/18NUt5/TwZT/8bUkBZl98O3xb498A5j3HH8qfiv8GmZfxdyr5b2W/XemzsfXQZvxvVH+g/It8fwJ8lt0twM8l2uO7rM/Vn11kv83J30P+mdp/Gjql4JsluSs9vCgdP4lOmU/Bo8m3D/zZFyzN/SU9HK/9xqS/Z56Rzvi1gD46lhRg1otZJ/6B/9/Vz3r8T/KM1P5Pqz9U+z1NPxvoK/dT2WedBP+e8O9Af3P117PJF7+4vYv85XqQb6n+cBO8B6NXPf3LfNfA/dJ86Zro14g/L3mG5z0SfnJvc5Byxfc3WZcNpIfi9Vnuv2+jtz45p8/5iPHkf71jeIFdfBw/NvyfWlKAy9BrnXNV48c2+sp+q4p2yTy5C/kOo/+y6DUiZxn168BXK/dKYNZ/3+X+l95m0sNI/B0Wv0L8X4yfuejn3DjnxR/gsy79fK697wfX5Bw4/tfaf1385HKOrn7eOdym3Tqhc2fe5+DrBPw2Rn+K+i2Nf+Xlf0yei+MvTN7458Vfrwo+4pcS/56MN/W0ww95T5N9iPz98fmq9EfqvxV/wfCvP9e1vt9GTyPxvwv8tfFTU/3r1e+l3VZmn5D7OvSuZ3/PaPdn5e/K3gbKb1tSgCfQ18XyOxp/O+e9Rd5D0N/26GT+GUneTsofQq/xvyuvfD/132R/m8j3lvRfyjfGT8Os3/BZj/wz5VcB43fbFD/99M+n9cuv8fMd/kryfhPeWzKfqV8L3tvY2Sj41yhfvO94mhxNcn5U1B57RE/o5z6pI72eL/8W8lVkV3Xjt8keatJf7k/eJlf89OKftxD/58g/SH5l+DP/7EM/9YyXmYc+V6+NeoOUvwH/ze0Pu1vnfgouwt88/elleF+Wjh/djVnvlRRgnbxLgL+a/GPxU0G56vRUVn7e9bwvPTH+ENJ74f/OnJuC7fCV9XZj/fCR6AfeEfjNffw88mW+G4Fe5r2c/79sPlunX/9a6e944s+c+8mF5H8z7weMexfTWzn15+BnsPrrsz+CZ5n6T8B3MvmfzT0v+S7R32rkPkJ6o/orjBub6eVJ6azXV7HbT+A/Bf578HFQzofh/zr+sOjnXq0XeEHOqei3FPlyL5R7otwPrWVvh4IL8HU+PI3z3k56hvF+GvnOM//Mx/c0clwlP+cvv5K/Zd77kvsC/XcaPm/IvV38/Yruwzbl3BD+G+BpSK469PMv6V7mh7F57y59H/1cof7HuR9DP+9X78DfUTn/kf+a+gfL/7d0Z3ZcP+8r6bUrOBI8J36w9NlbvVfYa94PXxL/POm9yDUa/nvRn0WO3EPWxc8Y+pvBLrcWvS/IuvE4cuW9afwF5+HvdfAy8MjcP+Y9Iv19C8972ifzT+adPvLn4O8g/fsO/B0o3TX7g/hj5N0TujuBR8I/H/5ztNPjmU/U30J/Jyv/H/zdRJ5R6l+Qfqb+0ZkX5e+cfT76OQ9rzq7zPnwmeuviv5n3V/SUc9KTyf2z8q2kc0/8S85P47dd5D+Q+AeJezAh5yR5/63/7WLcu8/6++68wy2AUi/mHWDmU3Lm/CjvynJ+NAD+tvg9lR766OdZ313F3hrFb8V64Tv8dvV9ufT3JQX4deIfGH8WkOtc6bz/n8xezsu8ge7arK/wN1c7dMw9DHq9rKebw99TOv1/n8z78H6h/pno1VN+aPRK37G3UfQyiF7eNE6/gJ+HyNMPnAB2z/xmPJgOzzSwPD7S7yZpl/S/3B+WRqdu/BbIcUriE9BP/FYnSed92fXself0dtJelTL/w59zn7xPzvnPcfSz0Dq4hB3m/C3nQXnfkfceed8xDv3K+ukQehyVeBr0nvXvR6Eb/33t0Zl8P0hfE/+M3A+Be1nH5b1c3nNOBfPeM+87s+94SjsV7z/awtcOvxOtp7P+nEhfz8tfT/5q7PNs7Zp1SO7Pcp+2yPox56TF56NX6x87wl+npAAvkF8c1yLjZcbHHfTXG+EtL533dcX3uWvoZxn+j7Y+bAamX+f9Rmv8L8X/ZOm2+N3GfgZp//Hgw0X6jV6PKtJvL/LkPXL9+OXn/Bb+5ez+QzDxSEZr18v1227a+5rc89Pff+M95J0q+Y9nvx3QmaE9hsV/VntPRG9h/F7xn/PVu/MemT28qNz39H65+jlfK6v+cPocQb97Sm+FJ/ZUG/49tF/uZ3M+vp58OSfP+fhd7CFxVxKPZZ78T9DJfHx73i3Fv0L5ivi9u+h9RZ+Ma75fACYeR1/6WUaPObechP7n9L0L+xuvHZqVFOC/6WsP7XYufJtzD67d865zY8bvxAcI//J70WOnnM+h39733CNnfVxWu7zLjpuy38SPyLjVEr9N6WMMOXOe9BH+c96U86X12rOj7/ex34yT2V9nX53zlIxfuZ8+Hv34t+S+eoXyy8EPwZXwZTwYRT8ZJz6Ef7L+tTb3++aJjE9b9PdJyv0p/Zf8vHfI+WvusXJ/NZf+s3+eB+Y92gD2W9v56Lvxb49/DP3GL+kP/Mc/qTg+TuLiJD7Kbfp/N3ytMV5eDd/38P8HP+/ErwT+jMft2UPG64zP5clXBixPTztkP5vza3Z3JLp5Dxi/l5fw3106/i+bpBOXJXFaEo/jM/a0o3a5OOcG8ivj51p2MVH/Oyvve+DN/mqG+tlfzTHv5P1NTe2VdwAfky/jcfxD38R/zmWamZf31f4ZvxKPaaF+MAmfic90Ut61wb8M3xehPzv2J//J+HfFDwr+vPPN+5m8741+c38xnfx34S/+NYlDUBtf8a/J+VbmuwPyXibr38RVynmu+hk/tmZdiN9j2dnj6Od9YvygBhTAf98pjofvAPXX0v/t6l+t3qfKfYrfqeQppV3i93YrPc3H3/n6z7lF5wzHZv2Q+GvgXejkvv4/6N8e/uinvvrvG28qoRu/gcPx34e95H4v8eRyD5y4PNkvtZTeAR/d2d93xvX6YO71O+H7YHqvEf8q+rnTfH2u7z3NF8/hL/GGntXPLmK/78V/Jn52Wa/Fn4c8mR/KkSvzROaH+LvH/72/9Eb6fAC++O/Hnz/++4lvdFXWL/R7ovyr6P12/WQOOUrl/li7NwR/pvd/ke+oIv+5jCcZR+I/fgu9xI88/uNPGF+6gYuK7pty3n1X3kPS53dF82PmxcyT8b9InJgV8evEz2j4e+U9F7x5N/pfP3HynJf7W3y3AA8mV2PwcDDvqeLXG///y3IeGP829vki+A/2mf3gQfEXIdcafOQ9cFv8X5P7c/W+gr9C3i+A24NN2MNQ9v9W/KTzjlT+2+xhTvyQ9dfsY6qpl7gpNem1lPw+8U8Hx5FzLPzz814AXAIOlV+8npkTf8j0L/YyPftoMOdrR5L3FP34qLwPx98W81kz649R0rn3qYPub7mvzHsZ9vEM+cuT+yh6+F35zhkvwM7xd8t9BHpzwfXgz+gspbcx9NZS+kT832z8zro28X7iH9lOvXVg+lHiGxzLXkrTd9b7ia/XC/6eYB/99xb8Pa19fjN/t7S+ir/6Q/TTQfn4Ke2K/4WJj0jf/5Qf/7qB+OmD7wX0+wf+31E/7dNaft6BLMp5A/o7yz8n8WGkc7/SS7ncszxcAKUeROc76RuUf1v6R3A4uBDee7RXT/rfgR28D9+55N056yXtf6Xxua/+uXNJAR5Kr/Hzqqx8sf9D/J/iHxh/wPgH7ix/hPGjAj1dpHzuL2v4nritieMa/6uX9bel+uEV8X9U/wz2cjT4sPJ3o78X+/k992nWsUPz/oI9H57+wA5vyfl61kclBfiMdjlQ+xfv39spt1j6Afgy7veQzvifuBSJ6/Qye2xPvs3Gw/fU2yLdHn9V2cHV2m1J3tfKjz/TG3lvrb2z/0i8y+y3i/vnTPpOfLrEpUv8geL4uPGDSHzBlfC9Sb7E2+hPP82Ujz9A/AW+SFr7tVf/fvLmfcc6+s+9/zn6beei+4X+iUOad0SZH4vWP1n35P3fJnaV+8T20qXYzwvoJz7SoNzDZX+o/+xh/D8775To5zP85Zw/cV/Ogy/viV6RHl/0vqgzu7gz55TsO+uomvDOJHdNcnxNzhH4ybo08Z6zXl1L/9+Cr6F7qPrd9eceWTeDmR/jT/E0OBr9+FfUJs+Z9Lg494P4X6Lf3513k9K5X3g962dyVCsa3zLe5Z4x7+8yHm5OHFDpY7RHWfTjn3xE9v30OEt6rf74PrkrGE/Kqb8q/n3sLO9kDiPnMeQfCe9q9LN/mpp9WJEdpP0Td3Lf3OeRJ/GnT899cu691H9N+7Sn9+/zLga+fuj/WRQ/shw88/P+zvfER74CvcR3+NC8lLh4Fyb+Ef5L0ddZvv8mfSz8R7LnO+wfjpCeTI74R1wrfXD87sEB8k8wL5bOOXz8Q/Kux/d5ysWPvxZ95J3FdPVawH929jP6YfH+Nu/KJuQ9c+KvyU8cj8T5eKnIv3gse+hCX7W0x4+J70RvfyUOLnhoie/KZ17KPJW43rHP/57bSed8f4b2/UH54TkPyvzOnr8Hh+f9Yd7zgavt73L+Ef/NE+UfQd+v0/Nq9FdkfkE//s2/ZHwuei+W92NPxD9M+w7PfbF04kGPpq916H1VdL8w2LzwPD5PIf8c+LrS76X4G+j7xeQbnXUOelPxGf+8xB/P/UzO/8oon/g68ZfuLp31z2Ljyk6Jm2b9k/VX7ks2s5M6u/1dvnPQS9y+GXlfjP5041pT+Peg3ybkfA9f5+GnFn4S3+JO/fZGfOWd9pclBbiv9v25yH8t/gM96Wca/GPitwd/zkEfjv+c/ni+/GbkfxLsQQ/D4W+Av3HafxM9nBz7hn//xAWir+zTH0XvA3AcOT+ir4nqx+9mD/Lm/n4We7pW/0icosQnSrvnfjb+9LmfrR3/a+PE2yUF+FPOt9VvEr9t6XV5v0Avu7CLG+jnSuUeNh4cDE4G4z/8pXJNyXei9joE/kaJ76F8/FhqkH9VKfjYW+KNJ/7LLPjmkr/Y3iroD6PhqWudtU79+EfFfyj+RDn/3GK82srOy5rPf849gfacw64/Uz7xk+IfOJN+71E+41veb+Tdxix6yfuNp+nnNXy1xmfLjL/sJf8Pkf+FaEP+weaPIeBQcLjyr0ufFb8D8+cI/GdfkX3GL9Z5j+Y9QNbf4Av0cJd2uhffeZ+aeJn1Ej+DfDkHyvlPLXIm/kB3/esT+T+oXyH50okHnPi/+V+Iy4vuJxsrn/j2TeHvr1zi3ddgP3XyLqcASi0if84td9fOGQcTH2ASffyQfo7eGXkfYf7obHyYHz9t/JytXb5Vbq7xYET8WfX3vBdrqP5DmS+zn8h7PPq4gH7a4O9mctxF3vr4G5P7QeXvk877o6PiN4r+DviulPgC8B0bv2jpV0sKMOcnh8S+wZynXMGuhsWPi1x5jzjP94/i95T3k8oVx2tqm/sb9asnnkHeY0i/k/OKxJ0wDnYGv4j9GU82WJ8NL/N3fh40bjbMewn8JH5j1pWfKf8cfZZD/x397wjt+px++Jv8nEskPuLu8RPJ/E0fn5cU4PvoPEq/P8XfRv2ByuW972f4fxnfvaSPzv6ffcU/IPEh4/83gf5OT9wK9RPfO++dc5/cTv28f36UfDkPOJK9d5FfJ/vrvP/Bd9YH+2r3Jeq/C+4e/674xcVPFGwmv7n+kfgWbRLPhr5O12/ekd/RPNGNfIfiK+vL4v8byfvT5kXzcObf3fT/8ui+RP5T5D/P3uqww17SA/D3Bf6/BD8H22V+TnwHeqlfUoD3S483XyXu5kOJ4w3/qwXw37j4n5BnUMYL9MaAo8FTEgeZvvIOYLuMR/RzJrzFcfhH4i/vs/Iuqwo9536+m/J515n31DnfXUTvJyYeAPm+UD/z2hTjb/zwtst9F7rl4Eu8jC/h64+/NUX7xewP874g/7eVdwZ5X/Bq/B3oP3HIsk74GL+rwQH4aQvftfrthsxr+l99/D0B/pj72PhPZ33I3vI/FGXBxDNfpXx79p/4co+qn/k5cfkzT2d+zv+VdErcqvi1qr+CfexPb8ulc37SW/8bBo7VT2rGX9H483n6q3F0d/hH08cv9NQh54bwryHfAfjLOJjzgX+aD/9AdyPYPPF0yJf4kmXoIXFq8i7t3dhnkb/Nc+TKvHo1/mfkvkH553JfnPt/+U1zHp84EPAMo//b2VVdeLuy8xmJ54H+CPImjkLiJ1wF7wblHwS/Rf8t4/572qFC3hngs5H8/C/DXOUSP+mu+F8kjhx5e8nvj+/O2iH/9xF/9jekz4j/rXSjnK+Tv07+v0f7vUg/8a/rQr+XlxTg6eqfiK/cJ9fIvVPWo+ieQ861YP7/ZgT5cs6Z/+forX7isuyS++jEAcLfR8bL+ug0znm8eolPlrhGiXM0I/EtEv8m/mjssBX8p6p/NPk3gReof2v8trIPhz/vp1cWvd/Ke7u5mb/jp4Ru8fp6pHYZBZY3/lyb+ZbevlW++P1X7jmHxh8t/Vn+P7X/vfTXRXpB4jOYT7vDU9U8e2HObxKfmB7Owt8N8uM/cKn6Z9F3zkMTbzjxhRKHNfHbF7CXDeSbrH/k/qFL1r15N6zcbP3zNvV/Y/fF/6/yDX5rGVfLlBRgV/TfLrq/zL3l8+BXebdf1K/i/7PZ+iX76JfA7J+n0vcj4BSwTPweyTtEvfiP9ZW/l/b52r4i8RfezTuV/D9K/EPAP/G/kd46st+18l8ix43o5P9Civ+fLfv2vOfKfj7+7HNzvgzv6+z1NOn4R8/Wb+MnHf/oM8ndwvy+QLnEE7o9+yf0/gXvmvh/G28bmLeezjvDnAcq3y/3k/EnJX/Gy8H4eL2onS/SL18h1xz2knn87PidK38Pvq+WHkDeVfGPRyf+7Xl/mPVGL/VzPx7/tB9zDpL4qfHDprecjz0g/+vEH2YnrdjZidI5Xx9J3n/BMxLM/uo+/FyY+D65J2L/xxsvaoIz2ety9RfTX3903pb+jLyJe5x3cVXpI+/jLqbv0/Sn+CPH/7hjAZTaWb/IOeB78DfRn3pqv6MTTyXrB/RaKj+dXuM/mP9TyP8rHInPxOO4gL6W5B4x8236E7lfgveLxFGNf3/+H8i4NQa+/L/dNPLF76E5WAO+xOcqrX7idCU+1x7xF2U/OSduj37TrFf0n7XKNcr7pcSdBj9gv4vIu5w8I31fr9xp6ifeauKv9jded8NfldwrlBTgHPn5f8f8/1ziRuX/nPL/c7sWvcvL/6/E/zf+GHsqlzgE77OfZYn/To+ttNuF+HmcXZVlB+8mHk72z+TOu8q8t+xG/tfQzf8qjMs4go/Kef+KXoX4TavfRnt+jM6r+Dgw8z++d0rcOOmMR7dq35noTNHOh+V+SL+9Sb99Bcz/y2Z9cz04Az935HzT+PZm9rngc3mnxR7+V5yT/E/P0/Evk+6K/qno5R6q+P6pinq7JA5OznO1+/fs71rw/sRblR//tvi15T1p7u/jz7Qy70hzri//w9hl/NqL/HfaFcVneZn8GQ9Kqx+/o6cSf6Dk7/lbivySLsTH/3pXt4F+1quf9x2J75f/73qQveR/Pvah53fk571I3o/kPUneRyZ+0qv09xqY+EmJ9ziIvXyS+/P4F8EXv+xif+2x6Ff1Pf8HdVz8sKXvLinA+GHXVj/+SvFfSvyA+C/l/Lx37heUz/n5KPorTf91lVtIv0uzv4f/RfVr088G/GXfkf9he0/9+LPm/wAq0F/Wr/Fv3Za4gmD8W0/Q74fnnQr7yDu0/C924ir9YD2f+EpfO/8Ywi7rSrfLOkZ/XOl74uhfmf1N3lnBt1673y/dHV8XwXO69C/y90Qn/9cwgfx539JTeyXuanF89tbGr2b53wfj16/aaxv9N0GvOf4qwLcrOzrZ9yvJk31C4vYk/ngt42nmp+L/DzwfvWvw97Z+2QvsCS4md+5H8745//Oe+9HMH5kvMn+8Lj/xcfOeL+/7El+yL71fTu9VtHP2XyPp91ByL2KXee+f/xPfPu/X2NWf0pXy/1D0EL+D/P904tUl/mPieLZE//8AOKaWB3icdd159JbTGjfwX0UapFSmKE/mKSISGTJkzJDMc0UpOlGKKMmQUEIdlSFOqVAoJTKThCINZlKIikwZE71rvc/ne9Zyv+95/rnWvvfe17zna+9no20r/u/vwu3L8PYGZdhJuu/mZVirsfSWZXjPDmV4xBZl2MH3OaUy7C//26plWLlaGVYCj9y6DHfbqAx3qleGTaSfkN8c/nXhy/dl6EzB3+YNy3BjfK7cpgz74WtT9Xo1KsMZ+Fun/l/qjVHv5+3KcEv5W8K//VZl+CW9bbx+Gf7k+3Ubl2F3+I/Edzt4D4XnZ/odVbcM361dhvVrleGxyp9LL++h96b64+Ffgf5ycKc6ZTic3D02KcNvNy3DxuBp9LACf0vw/zx535K/If1/D9886dn0U1u6ofJb4vtp8vVj7+vIWVm5ben7afX3k56Kj6Hw7CC/EvqvK3cj+VdtVoYHlcqwm/oPKvex+heofyD5ZtBj55pl2KF6Gf7Ofnvzl6fY4wf1d6n1T/qhFz5C91PwJN/vQW+E8t/A/wB8l4H9wAPkX4jfqeh/5vto9M/2vTp7tIZ/F/qvi34D+pyr/F3yV8Ef/zwPnxvyt9/hi9+dp3z8san8V9V/Ar05+LuhAj3fq8BzZakMz/f9xfgh+Y6iv/XY71P4K/v+DnlbVMEH+HrlMpyhXD/138B3K98PAR/F32VgrUpl+AA+2/Dbz8EF/ONp/B+G/43h/zf/no6/avB1hn8BfW2j3Hba/TJ4m0g3k79mgzL8E/wD/A1/B0lfq35T35/E3xn4moLugfQ4j/0a009V+W3p/zP57dVvzW9+h/ca+Z30T9vXL8MTwdOV/wM/66t3j/JL6KdrGVQ8DZ5Bn2eyz2boj4fnXOVW8N8/4GuD7pH6v0rovUcvLfjXanq9Q/1948/o3UEfl5PvVPQWgSPp6UJ6+ga/y5UfRO5TyddH/3IlOFM/05889fhVV+kfYyf8j9SvH4Xvrch3FXrr68+bKH+Kcq3Y+WH8HEX+9soNAQ+F73Dj9CsbluGj5HuS/w4E3wfTr25Afxfg/zV4X6Pf1fCtgP8B+c30D03Ypy07vim9A/47mg80o7+L6OcM8j+Gn9nKr2+8GQj/GzXKsNN6ZXgh+BX5fmePdfQ2D/4p7PcwuaLf842n0e938H0LrgLbwvdLGVQ8Gj+hrx3h+5J9HuZ/B7LT++SbrvzRvrfE9wH4+0v73x69g40fl+Cvj/LXsNdxvm9JPxX0NUG/8zd8D8L3HH30gKcaPJ/B8xi5nsHnbOWvhb8hfVSht+ba6XvwFf3prsyz0L9T/oXg5vAPop/LpDNeZvz8lT5bBh99dSBnb/7Zhr+9Qg/HSTdT/3J87VQqw9HoHCd/Pny787MR+H4Kf/uo/zY9nYKfPdDfPe0Z/aPRfw6dbvyjPjyZv15HnpvTn4ATtbMHMz9Et2cZVCxkpz3Rb0ZfE7WzTfVHD8O/Rv7zmffg/zvyZ143At3M9zLPe1X/NIH96xmf27Hb/fhZSd5jydsEfz2Uu7pUhncq/y39pr0Mwe/T9Lcr+acpP5oeVsG/kfyT5R8O3y74eBa+Z/VLr/Lbn8Bz8XMh+pfi83V2Ol79T8hdnf8eQy9nk29uGVTMBnuDozLvoq+20puZ53RRP+N/A3xmHpDxfy1+15H7XeUqyNtO8h5yD5Luq33/QG87s/uB8Fyg/Hr84ht0W+mnh0TP/GoA/hspvwr94eidDS6kvyH0VF16NH4yH836ZzV6s8Eq/LBD1hf080mpDGdIj1B/AfufDf/F+K4U/8FXL3Acf36XPkrqZT24DL/12f/f+oXh/GSN8byP8p/S79boXku+S9BvBN/79D2FXDPYvwX99lLvFP1AZ/gzj6yh3r/Im/GmFvxd4T8SnnvJ1RP/l4KH0O8c/H5Hnlvp40x+MBv/z5DvF3ycSA/X088i/vApPz+Yf8/BxzzyrYH3D3Ar/DbE/+/4XZj2SD/N9UfNwLroXS7/Y99fVP82cp2X8d/85aHMi/R3Vel3K/rYGmwIHkkfe4GXlspwPPw7ojeH3IeQe4Z0dfzdLT0YP69J/yX/UP1LE3Q+5Z970n8N9kl77UGf36E/i/6W4G9z9joJvfSXvdPe9WO3yz8cvUH4WA1eiZ/sCzzF3/b3vTX+X2Wv4ehX0O+BWc/iZwv8Zp3fLPsn/HIkuJR/7Ms+af+7ahczCv1B9jeyr7EUf9nf6JD1D3xHgM/Lvz3zfeWuo6e+8uvh/yH0pin/fPbX6KsLPdZW7mDwa/bqgf8P0Z8D/9zwi+4T5HhC/uP0ORn8Put15afB35l/PyFdSbm0+1Pwm3a/RDr7Rdk/yn7SPfhcpF/+D7yXq78XezbA1zz0T5fun/0j/rYPv39I+njtbILxbWd6fMP49n6pDBvzu78yfrDHI/B3oK8Svnv5fpL2sxe809nnWHjrwrsE/dHofg3+hN7L6O2BztnSq9lnEv31gnclPXZE/4DCeJvx+GXpndA/E92dyVE7+x/yp8n/HPwy/TD6++PvOfjrodtffvqXCeRK/9LK95fQ21T5jsrdJL2cfBcr/678I9GpRZ7N8dFK+XPofxG4GzvU1698rt4f6Ncl1zH8b4n59bPo3qncmfgfSd4n4dkdP7ul/+G3rcBH9C/Xod8782b97CZg9qmzL3gzfGvZN/3XTfKzv5H9juxvzJM/Gr1lYDvyXaRf+AVf52tvf5Pjt/RL5H4V/Q3xMxn+3vS2k3p/l8qwIXyj6LEmuWag3wI/N8E/iv0+kt9R/9HTOnAQWB+eo417z2vfD4M/wrsNfGfgq5l6c+BPe/+Kn9dXv4ty9bN+Un4cfexDvwOkN6OP9G/p7wbwu0fxsT45FyrfnP6q+34/O24qvR/7rKL3R6WX4WenzD/TX6p/Lfq7Sn9TKsOW7HQT+l/xt+/Ufytyqp/zh2nZp0Yv5w9vyu8H/5/kGaV9fkCvR8nvTz8j0GmDv7bgLvBfQf9DpMei/x98X6b9fclve8Dfj7/NVe6/++NZB+r3p+J/Y/Z5mh98xE4fy2/EDhm/l8NznPwu/DrnWoeiNxR/o+hjG/JkPyb99y387XFwKdgs81f8nUY/R+u/Yr9O6Zfwtzt77C3/IvSzHtoH3h/Z5zT5z6l3Jz4PyflU+lX5fejjZPJfZP77kXG3NXtk/F6e/SnwbfWrqH9F1vlgC/w0pL8rtf9f6PUW+yV1lM+8thp8e/qe+W1n+D5Dfwh5rsj+te/3gluxzyT1b9XeJpTKcCP6/lL++uQ9CX8L+cO18C/Qv59k3tgW/A4f3LFisHnJEvAxcrVXvwOY9fC98N/NX3M+lHX2Heqvo7/j0h9qH83Vf6QwHj7E336QPzbnZvSyXqkMh4Jbyt+ZPHXxc6n6j5qXTQLbsP9d6W/Qz77c3eg/zz/30C7PIcfZYPaXVqr/qfrj1P8Y/i0ynyVfM/x+pf7F+r+tjSuNwNP53/34Hg1mX+AA+MdnXy77mfhYLP2b9L7o7yT9Mvzp/w6Dt7J2dpj6w/jXFfyqI/9vqPxs+TtmP5++FsJ/C76zL5396kPlv4X/9HM/Zx+Lfk7nLxvw78n8d0AJH/yxOT0uo986/KE7utsrfzs93Ei+k7Ofi++h4BFZ3+gPz855lnRT+eex76M5VyfHAvzX5R+/oXe7/A7yf6GP1eAa30+kn/+17sv+T85THmS3GtKz8VezsJ9za+jLv1R7fyrrFP63FJ2f2e8XMOchOU/fnV0SF7Ax/8h57Bryn86utylXH/2O+BuOrwbsdrf0APgHwXc9Oe9WfwZ7dfD9aPa8CX9Z3x5GXw/ztyMK/jeJ/Wqy8zj8PkcfL4Cb4+Mo9M/VHzRQf6n07/TdD1+/wvdMzgHl11RvW/jG0Edz/N1U759y1djkn/Lthd4Y+LbP+A/fTHpsi34J/pelp2g3T4DtwQ3p4V5wif73nfTb6PX0/SR0GuV8Ev9zDDCXsusz5L0v+3fG77b0tJH0A8pXl+6mHZxK3kbys//zM9gUf+fj7xXzgm31E71LZZj+82L+Oj77CNKryHG99v5d9o/N989Xv6d2sxYcCU7E5wn4HMxv/oZ3rvQh+Ms56iz9ac5T1+Ar5zLf0NNdiaPIeSJ99+AXY6XnwdsI3pH60+H4H8x+R5TKcAU9zuI/D6q3AJ669HNw4jvQyz70Eeya/ejvta/sq2T9OgHsVgb/zzx1wbb///rFdXAT/dHH/OMc/eSUxJuof6X6+5Nzb/q5jL0u4PfzpE9BvzJ9PIDeafR9k/wx8E4m/0/K5fwq+F7kD9kH+i9+/eMp5H4Q3wPkL8b/FPmXoD+QffbXHyyGZxQ4OOts9j4JPAXsmPkaf74DX8vAPhl/sx9daL875fxFv3SBfmpd0vTQX/0p4KuJl1F/KHoH4GO8dNY/7ck3BlwHLsn5cOE8fGbWLfR/YOI5tKPx0vcmPoo/L+Ln3fh5dfrLfDLzzIbqZb75Ln7fBy8HE8+3mF6GoXuedCX6ra6/3g6+TtLryP8afd0kfyq+Ep/1E3tfR5/xm5/gr0Vf16A/B/0tEg+m3RwCb6+ch9LfWPQPJs9n/HxtqQzv0j//oB3WoMfWyg+nv8bsMj16JV/WdVnnnQ5/1nf3q9+SPOehu0j+KfL/JX01v/hMug/9jKeHS/B1CT3dk/gAfLyg/vLEY2T9R39VpdfmHAv9X9Pe4lf0d7F62Tf7kf7fJk9jelsCbgP2UP96+v8G/qX4/IB8P6G/A7kSf/h69hUT70EPvaWr5LxIvWL/0xP9xqUybKr8BPRekb8D/5kEzx/wHIS/DTKO0XfXxCep/17BH9qSdyf5/c1n59PLNdLV6O82+twEf1uQb3P5H+X8hV6uIN/m7Her9voovX4p/QL6G5DvNXafDf5NnoH6lZvAg8iT+Ja74P1XqQyPz3hN3pv5+67w7Uh/ddTvrD1V1m9X4HtK9vfpZQ/fB2XeAn9r/cnF9DaRPaajF/vUVa+vdOyzL78ZTY5h9DsPf9tJX8jPi/FxiV/+Cv4x5G0q/3X5p6N7iPwj8Z94trXqr69c4t2qsnv7jMeF+fP59P2A+l/JbwB/4qePgGcreC+W/y/2TzzbTPrM/uRb5rfDzTt6GI8yXjblf4Oy7wRPNfz+jH7WjVlHZv2Y+IZnwcnwPp7xWf1R8M6nn/vjv+zTnV2Wg6+j01i9c8mzIzunfR/DPvMTj0yPz8vvhP6l6lWG72Ly1TE+1AAzb/808ZnGm63xvRYfveEvzlcyj3kn9sPfCnT3gbeR+meQdxf+uadyY5S70vj/Nru9A7ZLvHDi+tRfXBi/7yX3EfSQc4Hj0N9I/iz4VupfHsN/bX6TefdIfGX+vS9+WoDX8NMuWb+iext7VpBvZ3j2NK99Dv2h4EP4T7z/4fDmHsAV8H+VeGF26pE4f/mz9HuvgUexT092yfj/bsYvcm2b+Gr6SFzQdOlW9PgafVeh/8r8+Un8dte+6mbfAN2WiQeX3lu5BaUyPJP879BPzi/fls75ZfAPo7f56m2S9a38t8hZ7F8Hwncl/kboh8fjb4D+9VxyHUz/28F/Kvznwv9w7K3+qb4vot/K6r+mvR6u/GXkS1xzzodvYt+q7PeS9B3wLdb/vZ15p/T70R++i/tcO2R8598Ltf9F4FL4HmDX7F+NlT4Z/3Xo82z6qwHfm/K/I3815QYkLgB/38J3RSHOu2apDIegm3P1GekX4d+TXhK3unv4IOfb9NFc+5jE/xNvWoP+q8F7SOKV1L+Pvregj53x+Qv+jot88H3Cfq2l90z8IX/rpt429D+GXNf4frP6e5LvNfg3872F9jlS/Z70sx99Hq38DcpNhb9F9pEL8VGJC0086OLEb+S80vg5mR6OocesMw+Gvx26c8ibfcAV0hX01973A/D3svH6FbATeiPp/w396sbhmx5yTpz9svOk/8z5M/2czl59lWvNv0ryF2JvQvYdpXPetSbxxvj5PPPrzK9yvs1ebyp/QWH9n/X+TO0w9+F6sMtW8F+S/Rrpyeo1gf8H+Nvh/+Cchyq3n/yZ8G+Gv8XyXyi0v02MF3fp92ZIr0RvInzt8TmksH93s/z5pTK8I/zI3wX9xBfmnCPxhZfR8xj4n6ffKtmfqUAHTDxDB+VX4/cnsBI57sbXQv1RrfRj4D4ZH9gj8bND0RmPvxX8p4V6f4Mfw38Rv018xrT4cc5ztZeO9Ha69rYA/U9zf4Ye2kp/SL7m2l1D+BuAz8L/KLmb8Js70fsaf9P0d1PBZ/SX/dnhLPrM/YpZ+PyW/NfCe4vy0/D5Oft+LT2eXG/lnhb5KmcfS/0uGecTX1oqw+eyX8L+09VPXPWV6l9aBhWTs4/HPjtpZ9uxzx+Jc6KfnJPlXCz78fvAvxafuV/6Su5L5D4juzyWcZCcP6p/gnrN8dkY/y35Q13rwGOlv6DnvdJe1T8q523yD6WP9bK/ovz59Pd0xkvyz6SP7J+1Yb/E9STOJ/E9mRen3X2ddih/B/hqalcHkeOHnHPGPzIfyH1d+tmEvr6Rvhn93E+oiu8G5Mh+ePa/m8C3sfQ68r9Dv+343cngKeBm+LneeHI5vb8JDsn+TdL843rzhTb0l/uFKxInxh9i/wHstS85f0H3Wvbqr/+5gN7eRmc4+a/Snq9O3Da4kfov0e99WfejczX+28PfERyc+Gl6zr3IReyccW0IPr+lz6xbdk3cdfbr1Mt+1XDluyt/VuLJEhehfsb7N+lr/awr0L9Nein7LlD+Rd8Hka8BfDPl91S+G/pDyT2fHRsm/lD+evTxLf11wP9H5B+N78wfsn/X8X/Eh7yV+JfEX8L7e9pD7tkU7s/m3uxlyuX+bAd+9XrGM/qqof728l8h15rC+LVK+jd6uVq5WTm/hC9xwJdLJ/53O/tl2+Z8Ujr7J1lfZd2WdVziDxJPmvVZ4k1v117/5O+9cz9DO9gF/62tK1eR/9nC/doSfW4D1jKOdcNvVeVHGb8n5b6Xcg3x3S7nnvirit/XjYdX5x6Jfi77PWfyhzPArcm9D/o1Er9Ovq8TL5X5Z+jRR/bTs39+tPLZ1y7GT12S/WX2zb7BEnBb+UNzn7UwT7uNXLWNg/3o/6JC/5Bzy/QT6R821b4+V74OvKPJ/4X6Fyk/Fv3HpJfzu22knzSf35u8uymf/cbsR9Ym/+H8+4DsD/Lvp/lhT3a+HOwFnqp84j+uReff2fdDb0EhvuQG6Rbyv9ev9ALPzb0f/N9JnmFg81IZZv+nMX1+Ra6/5B8D/6f4Srx1N/rM+WuF+r3zvoByjyX+jX3/VxxSFfUfTxwHO28DXxt+kf4r+0uX4K+b+onLXCF/cs7Xc99Huhe+El/wt3Z7Q9qj/qBW4nHAs2IX6T/ge4L/7Yu/L8h7H//oVAYV/wFXgx+Sd0rOn9hrXNY/2cfD/0LfX8i9VOXPNx6fBybuLPdDE4+Y+MQLSmVYL/cHyZ9xoSWYcWP/xF+xy46Jx8j+Pv7q0H/21bO+7Id+4tmPgee67E+qd3z6CXz2gb/EbzfI/Vz6vRidI9TbE79X4WdM1g+Fcf/PvK+A/oZ5F4EdPoHvevSHyf9I/WvU/5w8XeRfC1bKOJnzQ/xfDd4K5py5acG/FhTej0jcdeKtby+sb9Zj94HsciN4cs7H9W8PGVefk34h80/jyXVgD/6cfi/3b7YlbxPjb+7fHMs/FpHjBvk/ov8CerlHXrw/3r0MKtaBuZ97Mn3k3mf2c7Pfm/ufBxf2Tc9C90b87Zb79OTIffvcr5+vfPbjN4GvXeL3+F2b3PNLPAY7/ozvCeBn+ufEj36c+87w53w5582vkLcnf32EvJ+Qd6z2OA7si27Wr3k/5OPcG844B+Z9mqzXcg8t79PUwO8d4BjjTORfQN9/4m9q4f5d7vnl3Cb3AXN+8wW+pih3AH42yn1M/P+o/l/K96KnGfJzDtdSuXvBnLfmHLaW+VrOY3O+8T68uS9Wmf4ml0FFo7z/I30e/t7QHhbz25bk6pL4d/6RuMfEey/F3/o535E+Pvd/4M++2F/wpp9O/PhIdlnALlPxl/sJPxfiKRNfmXcm0p9ORe9Q/Bye+4cF+tmvC/21uZ8LX/b3tlH/d/1G4qkHSy9F7zfp28xPjqj+z/wO5DlR+gT8TYR/MPo10x+Se7D0h/Dtq30PZI+B7DMe/ara01vaUdPMR6XzTkR/9ss+UfY/Sln/4edZ+vqSP9+sftb/tdH/mTx1pbcpleFM6byv8Evi6XM/A3/n6Lf7Jw5H/U7o75b2gr+885X3vW7Ab97l+StxNOiPzf0u/ds3/DjnE5vZ77iK/fqCiU99vAwqhoBtwa3Qy32u+xLnkv01/I/w/bbEl5PnwvCnfs4dT8o9DP7RKvFgyu1RKsNz4F/KP+5Kv8geia9rlf3/9Dfy16L/GH8apx+YAH6rfM4tcr87971zfpH7eS0L9/NyX+9/vVu0MP0D/nZnt9wfz/7M8+j9qtzOYPvcR+A/XflPV/hzPnij7y/n3jS4L/y5L1UCi++3/U7uKuQ9AH9Z/18Wu9LXdRkP1J9Fn0210zn0dZH8zPdO1L8X7zf05J9Dcs8E/1+z/7SsH/E/E/3sj9yqvxys3We9nfV17q3Wo8/sh89H/158vSH/SHh/oY/Edfymn/kV/CPnZehkPZxzjJxf9MRf3ktKHOp38ufFPjkvz7tK8OVe7IvGkdyXzT3Zc/n32txvp4fEyxffS8s7ag9K512xmfAdkvgt5TagvwHpD/lD/Gs1++yN78yLP1f/MN9vL/2TTvAfzn83kN6d/bN/VwX9YernnCf95xB+d1bmveAV6KZ/aZX7Cuw1Ddwk8y/li/O7Ztr3OH7bJvF78DXGV/bPs59+qvq36G835DddpROX3wmetuod5Puw3P+nz5yf5n2dnJ8Oz/1pcm8mnfl8c/6QffHOec8Af5VyXpB9GHCv+B/91M55LLo7aj+LM16VynA6eb5QLucNz5MrcZaZz+bdkxfRfQE8NPff+OcO8L6k/oGZ/9Lb1vg4kx23lP9U4f2pjGMZH/P+TjPfR+TeJ/4f1L5aGF+3w+8bqe/7S/qdl8Hz8j5A4iLAvfn7eoX9nZa515T7GPKPV28SPbZRP+9v9cVv3m97WrlXyJ/zksTPZ98n5ydd2fVb+OoYb4cpl/3G7EPmXO8E9Tel72XZV0TvT/n7WU+MB8eBY/BdufDeT8bR3eB72HrtZvwPlN+XfD/Qz8n08pj0yzkPYP/P8JV98ZaJc4Av961+yn3j3O9VvxgfuVL9etkXz31BfpP+Y0oZVPSRn/caH5Y/Uf325H0g8evKP5v79ex7NL19r372FbdIfFfh/toE/vicfvJ5/vyC/BulbwA3Zf+2pTLsqv9YmTgD9YaAD/PfmugexE+2UL+zenkPZ5n0Lepn/+cHetiNfB+Tf5L28BC8Q8nRXf2sF7N+nFiI552oXT0MPgL+jM4tFfgAE6dxOTvmPuNL2Ucu3G/s7ntxH/CPjK/wdcbPYHbuCP9x5j95F/Vg7SHvo+Z8MeeKb4AN4Ml7duPyXm7wZH9C+8m7dHmvbh36Z+W9ufTrmVeo/zj7dzd+nagd5Pxujvq5h/xB4f5x9qWL69B58U/zo7zX8Q558w5Add+vIu/IxJvit2XiChPHpF7O9/5WfhC6nfPOlPqP8Mfr9Rv3pz/JuwDscytYgd+X8H9+4sbhfyfn7ehnvZ19nQvwE/mnZ36Tc6S8F6z8dPrsQ79Hs0Pi07LvehA62RfI/utL5Mn+XcajjD/Zn8++fD3tLfvzWb/kvbOsY7J+2RO/u7LDn+m31d/UfOTx3DuT/hU/iet8Q7oYn/9gBfo5py7EayzO+J/490L8QvvEu5H307wTg79L4euU+Qm4e+5f6T/z3vdR4SP9v/6vPpj5QMb/qdpbr5wrSw/LOwDo38iPHgCzPl0fvppg1cTplPDFnrmHXrx/3oT9To3d1Et8eWN6/M33vJf7lvysm8PXQ9LN5d9tvDgj91r56f74L+5nZp8z/p9zu5zX5Tyvq/yMvxl3h+E34++v8GX8PCv7tfCt037a4f8v6f1zPlF493sL9sj+6nv6v3/x3370mPjnnPd2RD/xaolP26BwP+YM/VvujyQ+9Mjcs8XnXPgyf5rF7i0K86c7jXfPgEvA8XlnxnjVC8x9sNz/yrul7xfGiYwPifcbSC8T8ZX4v3193yDvqiT+l3xZz2d9v77yWd93JO8dpTJsVniHvC++98s9KunM91+glzekTzYeNcPHavZbQ78/SOd9+l8St4FezjtvZt8f+Xvu13xN/3n/t2fe4wN7gHPp7Rt6uVx6VvSofkf9+UOFdpb29SJ8ue/6nXTev8t8pQU7fhB6OQ/Bb33wX+Q7BD9b5f02el1Ez5vB341+si7aFJ3H5G+c98lzX1f5GxN/ql5v5Yvv7/6H39Xkt1+V1Je/iHzz4KmSd6TJl/tiif86N/tV9Htb4ksy/uVeHngrPHnHZRY+sj/1V/YXEx9Gv7lfUox/zPoo8Rl5P+2v3HMEl+HnV/1l3sUovpfxH/aIv6cdZH2b9e+iUhl+gP735PkJ//18T9x5Y/lTk49e3o9M/7YHusuyL4L/FoX4vaHwlfjZBPx1hD/vKeSdhc2zPkp8VN6VzTyQv98tP/G4T8nP++rT0c99k+p5p1f5OvS7xPzt7bznlTh0+G/A34rci8z5LHvk/YYrpP/7fkPiF7Nvho/r4amivZ6oH2xYeC9mkPyrcj8Avrxznf5nHDnSD+V+Xzv1lxnX2qb/I39n7Ws7fv2c9NeZ/8HfM/cO1XuuVIYP8d/jfO/i+2m5Z8sfEuf2gfy98Jn4+Gb8dmzi6vlX8X2D1fi/QH7OE3K+kPOGvO+WuPvgzXsLO6M/B3/r4b8nu+X85Bz2XJ79OfPhPdn7G+16JThZuTboH18hHxwMTkBvOf1tknds2fku8i3DX9YtKTcVf8X9v+wXX0z/iR/L++F5X/ol/OW9jAb4r1O4h3eg9nIvv5wKzsN/3otYIz0q7xRnf0z69dwnYK/HMr8xL855Rt4tyfseiZ+vmX1Sfp7zh12ldwJ3AT8j37/TP8PfEx9b4u94eF8yT7gF/bxP1Y9+El+cfbGp6H+Pz+vQew69jZT7GN6P+E1reA7KeXDmfey6P3uNUi73O1eBue+V96uHSS+Vzj3t3F+9sRCPnTjtfvgfyN675F4be+2Gv7nkmU6+2fg7DX/N+EMfeOeC+R+TaeS7LeNQ4s6yH57zHeUyDt5KHzn3quR7zsPSv3fFbyfwQvZ/nXwj8m4I+19IjgU5H+Z/Oa8Zxt+6J84w9xno50j+kPcIB+KvO/0+mfVS4s/lXw1/3tfLPfDcO9pYP7M5mPtHkT/jXB96ivyj2a8ePLvjM/HpY+ljFjn+wP9Y9L8wr1gCbgJP4qiqJv6mVIbdfB/PfgfS726J58z7MvLHsMuv9Jr3gyvxz7S/tLsaiZPNvAv+hew3Sv3PEk+Q+xr0Mkj+ljl/Tnyr8lvDn/fws15fmnfPcr6rfN53fTVyqZ/7nTdnPYiPmfjI/z3lvDjnuokDzf7Q7dEHefMOSOJziu9vzQcTjzJC+95Qu5stnffrVho/v83/jvGHN8mR97BzD3dJqQzz3kL21zL+Js4++215/6Rv4rjAxGPupvwJ0mfJb5D4Df6Rc6+HpHNfNe8f1c74S38ZHxbw28Qf5d3aublfRx8j6DX737nH/5J0NXxmX6m29tdRe5xDfy3wMSnz7ex/oZ93EPIe1LK8X6tdJv61Kvk3Z8cGYGN8Ts57afTbOe8asUfWT6dJf1gqw7HKH0jfiZ/eO+sPciSeurb6efc5/5uW/a4P2eUpcpxGjtwfyv8V5P8Liv/flvvPGc8yziV+rw79Jy67mnlq9nsSFzecvnOOnPi4meTNPvLgvEOEv2dzXpx3KQrvlXYpg4q14BfkWS6/DX668INu5PgRzPvg89F/GlwlP/EluQ83rhBfkv29V/jFjYX9vbny96ev1wrro/eU3176Buur3C9qkPe96WVD/O2Y+z/yT6an2Gd39Iv/fzMp8TP021J+Cf5JudcL/3rqbZj3tdjrO3TOyLvoYG3j09HZZ1I/7TVx9Xl/4/Os59B9Ku9byc//lyzn/3upn/8vOVv9wyJP4f3hvPed8728h7KuVIZ5fynvLX0Cts45H/9+ogwqFmZ/i742Zs/9pbfKfR7878Je+V+lnujmfa370dunsP+wf84ftNdzC3HkiR/PefuB8DTMuoT9VyQeKO8CKzdO/jvkOR7/7zT4J1+P1vtn+tT6/+SvE3/IvaTi/18dlv0q5Yfqv7rx77x/vhLsqr/IO3DF++eJ4+oNf/7npF7eTZF/SyE+pZXyiYepjf558F+a/WnyT8/+Fflqlcow7zjm/ZnEFw6FN/uO+6a9k/dV+sk+xqS8Y4LeDvR2EDnGxf/gTfxFdfgTf5H77pmHNuIfmX/W0u9/gl78Me+zxP5DlH8/9yXJmfOze7TL+eAIeCqZz2Q9nPVx3u/6XP+5Fbs2TJw0fVyD/lx265/3bMn7auLnfX+oIF81+nsk90gzb2Gfq/TXfcFN9VM5v11F3ox7WQ+uRj/9/yTw0cJ4kP/HeSv3u/CR/8e5vQwq/gQboLNrxtPCeUHOEV5k32Po6zTwWHBZzq9zvxc//bJvmv037bUPeLf2fDE5X+IfOf+tbb6Wc+DVyg8Au8NzZeF+dP7HrGnhvdIT4VthfpD7U4/kfBuerD/yjkvuo42yr5X/ock73Pn/mbf5X135V0nn3csv8JN3dIv/V9iOPyzO/4hIr8J/a3Y9KvPr8F8Yb/L+fW/lLsl9KPL8TM5D+cfEwn3sxuonvizvM/2I39w//Sn7EfCn/xyjn0k/mv7zCf41GrwfnJ790aybc3+S3rI+Gp64UvraOu0w/GU+kX1wchyU9xvgTVx+iX6zf14z753C39T6Ju8TPiE/+887Kdcq7Qv/WZfmf27y/m/u598n/xR6S5xQ1k15py7vGGX9VPw/3rwz0YE8eX86707nnaecb+T/PQ/Xvg4D8z+fb7DHl1X/iW8E+o3w3yfxy5knkm8L/dqFhfcrtkV/ovb6NthDO34Qnc340w3k2kL6KvqebN6Ve0SJQ0z84QnazVn870bt72zp+nm/A/8DEk+T8z38Zn8xcVH7kS/zzcw/75U+vYR/4172wa7N+8L4z/89LkY3/8eV+W/e38+7+5mH5/39Ynx7Y3y8n/kd/Pk/nfy/Ts5vjqOHQ+mtjXT8qRL8X5PnVviuhG82/fQm57TEq+a9CXZ5M+8DgEeRb7usr7Ivkvcc1L8ZTFxE1o2JjxioX/0aTJxW7hc9yz+qoTtEupTxLfGM5Mp7KXk/846sp/K/e2Dec7y7DP577+TNUhnm/kkX35f6/lvuI6b/yv8SJ35Kft7vy/qtNjsMyLtV5K+auJ2sF3MOnXMG/CV+M/Gcid9M3M5e0ofnHb3c74Ev5z0r2fd4/G+L/mL0P8g6JedDGV/YeQ18iVvP/3k3SnwMe9dKnCT/n6kdN5FOvE7eW0pc1khy537Cv+l3bsYZ/Of979x/jv/mHnTuP/eFvzO+z1cv/dv/AT9hlux4nHXdedSWU/cH8CdlrjQo9EpPScaipEERmTIPJQklJBIRmmggDVQilBKiDKGijJEMpWTMUN6UOZmpZCz91vrdn6+1utd673/2Ote5zh7P2dcZ9tl3x4ol//87C+xUqQAn7F6A59cowG9rF2CVmgV4svoOOxfgEs+fLi3Ae+sV4CP/KcCantfepQCfhe9Z5YbwNPd8TJ0CnLV9AQ7drgBPKF+Ax9cqwL+qFuB26E9XPniPAjwW/rvhG4mP5nUL8Hf1XdX/B7+Xk++aygX4w7YF+G2VAtxB/XPlCvBnsN82BTgf/mcqoI/uL/APpZ+y1QuwAbglvm8GH9mhANujO23rArxf/cU7FeAH8DYhx07o34H+OLAZ2NR7Vei97K4F2HO3AqxBvk/ZvxG7DEHvfPTLlCnAkwqgZBT4EHs86P0HS9HF5+no11C/Pfq7w/sleLvn/dnpFM87gFfid4X+8Ap55tHv4fDPIc8O+Ppd+/vUd8PXTPVV8TeHfHeg01L9DPo9SPs94L8bH/vAf45++wXYCaxBrkFg09ICvIycZ9D3SnyVqm8E/7nkq2+8HquftgGfhXd49I/vdwqg5BXyVWXfI9XPob+26J1uPO26YwGuBTup/wu9XfG1EZ4L8Tcb/+M8/5h8e9Lf3vDvQr9vGN9t6PMi709Eb6B239PvHeS723vP4P9YcrWi78vp4zDlxdoPLICSNeB/8DmS/pfD84f2n6JfT/u2/MLbxv27YAvv37RlAY5jp0Ho96OvAeSf5v2L6Lc++etq18a4XaA/jke/uXZHsec0enhV/Qr6uMJ7x5QW4EnqH+X3m4Az0NuXPZ4nf294WtJLp4wn8pWjtze8P0v9rezzGr6aoXun/tGRfz8TPAn96/D5tfbNybcF+SfDf6z6g5VvImc7dH7jl69UfzH+tkb/Tf3z1pTRfVu5DLmuo4+Gyivw86z2L6mfS0+Pw5Pv3/vKI8h5BP7KafciuED7wd4/Qfld+nuF/vvph+0838vzyuT/A/4h5L8V/uHG62zylSfPn+r3RG8s/G/Q7yPkfdT7Z9FnTd+jUrAOeA38rbR/Ct4h9P+W+hn4/52edjEuKpHnYP7gHe0u124COI18h2r/iPIt6tujfxe802If5evxO5neRihfTb5G+ne90gJsrPw2/XYxLrvRX33lKtqvRW+A+u2Uu2c+wh61jL+X9I9K+JtK/uH0Pom+jla/eKsCPB5fn+B/D/z+QK7XlPelp4HoZ97VQ/0x8F+qfBo6v3v/FnapR7+X0e+v+FtH7hPoZx/0+8K7NvMs9fW3KMALjev4wXHob+n51fi+owBK1mt/On/6tna74fdafHTTviw6mdfGf9bBVzVyVUB3lvodq+EXnpv454/Vb5XvE/s2Bi/FR1d8N0a3lu/FC9oP0K8razfZPO8cejqBfqfQ72nknIHfTfrPYeCv/Gcz4/dZ9v0U/m/w87b298A7ldwf42eR9nvol3cbV69mfKtvD99K/G6r/fbk3YD/WvB/QF/Had8Lf1WU44+n0s8689+14ETyd4DvKeWF5Hma3qvj51bjZ3/yv6u8DXrxl9vBNzzfe/Qr7rR5fbF/3TXfZ/inat8/82f6OzL29F5P4+c3/aG8cTxY+cXMV/iTa8wrqsL3ifq59DkXvfvZ83j8/YWf3Tzfnvzn0dNW6qPvu+ixC/6eZo/h+N6bPr6kv2/Yrw54Cjp7lpKDPLfS0/7690z115KrS8XN5ZtEnvijN/C1KusU/FZT/zC6TcGa6k/Fb23tniZHJfJdaP7VgZynGN89tP+jBL/wlOcH+sLzM/t0wt9V5HqWvU/hPzZ6v4N13r70vzt/35p/OpsffxF/a+gnfmKt8mr4GrHnCno+3fgcgv+Rnu+hfKL3v1LuSa4t4D+CHEfgvyO7vkWv3b1XJeOd/i/Gz6me3wtOgf9TeFrBM1n9M+oH0P/39LID/vaG/xx8fciOs7R/Qvtt1G+Ep4v2B6gfob5jaQGeov9WM+7G+Y5UVX5I+7rw3YOvEeSor/0KfneTdmXofwH+urJ/V3b/BhycdWoBlPwOtgEH4HMUvf5pPLQl/xbo/+n9rIMXeJ71b7XM39Rfg68B8L2i/+6sX8zX/+70XiXts/7MenSZ+j2N1yuM632Vx6Nfp3Rzup9nPoR+9pMO8/xW728gx8/0XsbzC4zPivCdUQAlr+NrmvKD7LeAXRaCz9BDC/VL0O2ATmX95Dv4s45sof5r38Ht0v/YfzdyH0cPDchfWX/Yl//LOvA7dA6g70v4gQbK72p/qvE7MfMq9t8b/3+XJR/7vam/HY9Oxm1d+jyPHnooPwbf1fEv9HOw+vn080LWv+SO/yhrfDbVbhk9Paf+QnY51XtHlhbgoeQ/gdw3s2sd+j2GvGdrt5wcH6D/vPo++Mv6N+vhrH9vhX8NuccqP+n9svr/G+y2Uvv52k82XkfT62Dlc7VfTe/3af+18lP4O16/2Nrzmez5UNYxRX6zE31NUv+278Lr+LpE/+igPvtdFeB5xHvxA+vV91L/rfrjtP/Z+B7LHi3Rf0h5a/Z8Rznzu8z3/t3nYJ+f1N9Lf0szP878I/sK2j/mezrY/O5i5ZHxF8bXnfzzZ8pN6fdc/M7DZwfyvJl+ol9drP513/tlpQW4UPvl5DiEnAPpZyN89dVfBk+r7P/6Hs8Bnwc7on+X/vUb+w8wLnvQw07qB2s3UT/am/2yv559jeyvZ39jg/ezn16BnrK/cBT+q7DLn94rUb+Svq8DD2Gn0eTMfm8ldL+mr/n0s0n/np11PX83Ev8DjeeN5HuY/XriYw18a9Adkfkl/VTXL27Hz2p0zsB/R3rJ+Pgi/hx/tY3XM+D7Qfl48pyk/Bi6ywugZEr2R/mLLfSby/H/NP6/Ys9Fnj/oeb7/U9SfYdy3Vd+Ofnqoj9+JH8p+yyTyVFN/Zr575DuKPj6jnzbG20blhfzF0fSbfdCT0N+dXWayY19wvferGD/V+L+zM/+iz/eK8C9C/2z0418jX036jn9tBP8UcBQ9Zx1Vmf53w29F5b2Ux+hfJfjpot30ou/lS8rV1O+P/kn8a/rva8rpv79l34a+Z9LDM8rL9Jsr2LUc2Av8B3vdwbne71h0nvI9Og/l+wN/5qP16KW0aH6affdG+sWH9POqcvbvJqA3y3j7mD4eVs66aoz+mPXVtVnP4q8feAP+RiuvQe/+7GfCP1p/PgX8lr3uwPca/btFaQFOAl+j/y31pwHpr/g8FX85F2qI7jaebwRH01t5cq6GZ0/10/nLEfxfY/Z/Eh/TtN8p82H0x5Mv505dvN+GvkYrl7BXWfLX5ieOx8fz6HcDb8LHRcqt8X0cevXIGf/djf4Wofc22AX+HfH/Hr72JUf6yyHG4wz1x+nf8X+tlRt6byVYP+e9+KxJL6v5k/S/++DdC19XaXemcjXyPk6suWBn/fUjfnMYeR5H53n9r1f8hedv8yM7oH8R/axFb/fYh/5OU79O+6x/L8r8xPjpq33x9+Ew9jmEfaZkPx5/dX33NxhXX2afljwPoL+j9gewbzXlJdnf1n9O0n6ofteLv/6G3l/ib38qWp88Ds4E55B3GrxjyLd39uGzXmD/H9n9DeV78Zl129bKz9FvX+3HwX8Zej3QP7L25ny9ZZz0JO/l5Ptf52ZZP23E1wVgRfjuoac+8E4EvwZnZ/7Avl3xf17OJ9mvGf0eja824JTSAsw57u/k/RyffyhvRf4twansejr8P7LXLjnnrrB5+w7KZ4Bz9aejvZ/zqpxfXckeOb/a3/svxu+bn+X8dAK9ZV8h+w1t6PlsdLdB50fzscxvv0RvoXbZ7z6afVrrDzd77wDPZ4M92fdodtnR9+tSevqMvmdl3CjPwF/iH/ZG/1ZyJA7iKfb4PPvE2g9R/6N2byv/kvM25R18D24kxzT+6lr6+4JdO/FrX2Y+XlqAr9FveXBCxg/5GuPvRnw0UX4G/t70cRF5O8LfK+cJ5B+E3mL6v0t5vvr5yoPIMV7/2o28Kz1fV3NzfP0Tl5JzX/y/n/gW/WEAPz0QzDnxYP4587vM69qpz35y1lXL06/gP8X7g/HVnh03ad+IvI+pb2b8jqKfSvipClYGu8Ozs/2TyezcRPlzeKsYL63ZYQr/MoW9ftJuTdG52XeJnzJ+LgC3pY9j0W9Bn/uR/2XlgTnPIP/V8P5onNwC/8vsc5B2g5R/xV/2s99Ad2DR/vZH7Dc6+/PKT7DD/sbdJvye5TvzHv+S8T8df4+BiY9qCO/t9DeXPt8g7zn0fLB2fcl7G/z7apfx0bRofNQib2/yT088lfcvh/da8GX8vpT9FeUHvZ/zndKcn8P3A/wtwePUn1kAJWPA7DtmffAUu+9In1fzH8PUNzSeX8z3G6yC39/Y+z58TAXX0N8s/uxx8B1yLMTH9fz/K75j/8SfwF+Dvh/D3xXab6X9GcbnWeh9RT+N1d8Ef+b176hvTb4G6ETvsUP0vzX6D6P/dvys8t/G1f+a56b/PYm/fHdy3roc/zt7voyfqA9/T/1xTeKl6L+f9+6F/wT9tH72VXJ+a1w9gJ+cXyd+Z032x/WD7okjw++j+GtL7sPIu1r9+wVQMq5oHtqG/nrj95Wc+7HDy+gnPipxUU9nvQV/zjsHKQ8Ec975nvcTH3EJPSQ+Iue7H3u+UbtD+e+b4R9H7jn0PR+dnbU/1ftLvVeFfufkfCnnL/BVyPeHP7+Mfc/gr77E30z4XmLvdficoj7+cBfPKxjf8Y/F38/i9e0R+v+f+JvOzodqX528HfDVEbwH//2M5z6hm33vzM/0nzvB/vzBL+RpzD75rt+gH1RW3wX9pfz6BP7mDXKUy/kx/i+nhxnkjT8eBO+V5D2Lvo8tgJJ3wej7puzf4ncK+rfAfy35E29wAT76wHtB5kf6XfbbH/feGu3f9z3+gn72V16K323oJ+vD1z3/K98H9s25T86Bcv6znr7Wgt+A8S8N4n/yfULn4dIC3J7852e+zv4V852gjx0TX628mHxn658vmGes52/OTrwIvI/SyzuJM8Bf4oE+Az8Fb9F+CX0drrx95of8y0fkm0QviScaUBT/k7ifzt5L/E8P7ZvCu56c3fA5njw1sl5MHB/8x7HXcnjfJucq+J/m7/bLORvYR7tppfAkfg3/0xOf5r3G3rtNfc6nc34yyXsNvbcdfqfg/7fMW71XPfExxvU1WV8Z7x3ImXiqxFcNQ++8xN+ZP52j303Rn9I/TjSumuKjdtG5XzP2uQDfXcCy9Nc4fkP/OizrKvWJLzkaX4/qJ1957zL0LwUn0X9LdP7OOp6cj6V/0/9d+P4e/BPfn+V8UrkP/WzD38/L+Zbv3xB4R3s/8V/b4T9xaB/gazR875Prdu2f9v7SxG0lXgH/r+acQfsN9DYDTBxd1gFd4P9DeSj9vYX/VsZ3xkFx/9/L9+QJdpqnfmLiJ/m9LfWLrcFOiY/T/74AF+t/VdGf63l/sJ36M/FZvP54kn5qkn8y/Y8H5+Ucj54m6H91s5+f+DD9Iudl2Wco3l8YkPsF5HqEvJfgpy78Od+szV453ywPfw/4LwH/xl/OL3JukXOMnI+8me+//nBb5lnwr2a/3uCn7Hik9ksKoKQzflt4/gH7vJP5H7uuSpyG8l/6z5Xot8g+Nv015/+K4zp/gr+G9ttm30W7A/ExSb8tPmder3479niO3Icb393Vx+/E38QfJb4g46sru5dVboePJfT+HjiM3NnfDX/Vym7OZ/j7kr9roLyInLlfE/6qsHP84/vojMn9A/wvzX2HnE/SR9YDWS/8pP0P5Oni/XyP8/3tRK6eWWfm/A1/jRKvUQpP0fch9ykeob93vXez9uWMh/a+42PNz+rTbzvtW+FvfM4TEr+ceGYw4/yqxHHhv5/nC+H9U/lk4/LExDEoD4B/G+v1cmDZnLfEf+DnYfrJunRm4rfUP4/uscq/Jj67SH85361C3rYl6NHfUOWZ+sutOW8HK4P/0Ns97NUe/l7on0n/D+uPA8Ea+ukx5PuLvxkK33PKF+F/HPy5r5N43Tm5/+P5JOWc5+X8LufDN8L/sPcv9H51/Tnrwurqsz5sSC9d6LeP+viHxE+/ADZAZzX5Vnm+B/tvMD56qL8Tv8NyLlvqOft2xedI/FxBnjvUNyw6b8p5VNPEM+qfX8E7E/8fZX+TPQcb90/Bk/ipjOdDtM94z/hua1ycRL4+9JjzlxX6c3/j70b0Docv8cNdsr8LZp3dSn9qj94M5bX4u8d+TdZ7WQ/eTb5L6bUnPXwLT3f98xL+OPvca43PxD/1yLoBnmvwlfsVOX9fRH8N9d+cv5f6vlbw3qn0e2nWd/pf7k+Vsl/uUX2V+BL8ZB7WkPxrjav/4qszOTrl/pvv7j3oLM49Nfg28Yez2eUa9s79lpxP5zw6+1jZv9rJfPMRequu3MT7Z5XgSz++TTn7DRfRSzewCliZnSboPxPBxDklvqmH8fUEuAt9HEdPfxkfN9P7LOXX8X8D/W7JvlfRXy/6PTz9L+uV0gKMf/vQeNxAngfInfXrduTJfbED9Y8h2X/R/r0iPx7/XQnf52i/M/u8gI/HtP8w/OPjfPxdq3/PY7eR9FQn8wPy575E5t+5/3a3cXurfjxJeT36ufd2fe4Del4+61X8nmJc/obPcvjLvbux6DaD7zf4Hsr5M/2cQx83009v47NH/L/3aid+Gv6jc68NX1eA9clVybhYZ5z01W5/+HM+1gb+68i5LXuW4Qfrst8n+HlRfzyAPu9VPjz374yb7FvXT7xX9lmK7lNPJEfuxxyGTuLtBuC3e+bH9PU32FL729Vfq3+u1k/e5Mde9P6U7E+ik/Vq1qen0de59Fed/xqlffQTfUQ/m/B/ufFcvsh+p0df+utZ4OrcP/b+WPhuA68m/y3sm/GTeKvcg70y+8v81XSwOfgje2d9kfXaveDBGf/6bevSAsw9isQ3fER/OYcuvk/5PL0PNa5OZu+Dcn6f+Ajwi+xv0k8FepleACWTs6+jvh36Vcn7ofrsP7bkF5ax25P4yD2N0co90L+TPU+Ab6Tno9jxq5xrk+8tz5vr3ztrd2PiV+i3+H7KksQH02dn723Sfqn6c7Ifpd3r7Bv5G6DzJDgi9yUSj6L/TtJ/W4B/5D4s/eSeybqi+yVN6G0R+XYHf0En87XM38ayR+Zvz9FvNXoaD+8F9DestAC30P48/ecY/TvxnInvSpzeqMRx0c+7WefS37bwHcp+LcBViR+EryN6uReyyfci90MSr1cG3V3BQ7L+Rz/3nl6nv0/y/eY3v9OvLs09GvVV6aUBeLj66GkL+LdSnpY4xZwPGx8V+d1834fq/7W8X4+9sj7OevmzxAvrJ/sYr+XZbwb5Ey/wWM7jyb+UXvuwc+7flqh/kF0S53u69ofj78HsVyY+WDlxIv3p4wp23Rqe8dkPtN66h/ytlR/yfvIbJK/BQvrckPHFH2XfPfvw2V+NXz8WvTnwraCfsfTfFXwA3BmdxPvk3vt/8JX4n2eMpxa5/w6Oyv1D/rof/q5nn6Oy/iwtwKzHcx5Rgv/c73kZrBw/R54G+Ml54IHwD1d/buZv7LAluRKP/T55NyY+Wfn9xE+j+4t+thbM+cuH+mVZ8mWfYnb8N3/1BdheP/0q96HpZzv9b6jx9mrmw/rVbPAJ8DL1G/W3nL8mLi/fv6vZY3ryroSPrKfo51V2vjDnqOw3FL8XalcTzPnJkqLzqpy/ZPwdk/weYFP2KVNagI+zZ+IFfqDHSuRYjr/78DuFna5Avyu6xedX0+n/I/1zsu9AWf7gwsR/xy8mngO9n+mjKXtUQ6eJcu63L4TvJ/wPQf8O/P+Y87Xkr0CvLf46pB8kXlF/upr+Eq+Q+VPiGRK/0JL+59Hbl/S7vfpO3h9I3kPx0xG96Ods+mmBvxvxV5e954DF8cSb+MvMr+Nv9mWfC9BfVVqAOZfahX4Tb579nuz/JP78U3JV03668dlH+30yPoviPrN/Oh2+dblvnnPT7K8bzwcZh43BmugdSF+JG983cY7Rp3Ij7zdjpyPpv3LuJ2bfDJxHD1cZlzclDwc9Hpp4/eR3gD95SpKfZAf81dVvkkdglffOy/mN+qO0m1t0v/4f+Huzf+7XJ+4m+5r98J/9zUP1n76JuwZf9P50/XMEPZ/v+SW5f6l/tCP/7bl/kPtw6nM/bj29/4P/9K/0q5x/pn8lvibrs5x7Z32W9chnyXugf2W8fUUfT+r3I3OPB/2e2d/Rfr/cY4j9Y4fkK+DvWuJjZdF9kUZF89uL+M3D9MtuyjknrEz+c0sLsHn2o9E7mN531I9aKP/mvW7Jn4LvsZ53Rn+k780Y8AZ4kg9gUQGUXJ/9YfpspX4f66G9weX69z/4y/78WPQyD8g5UxX1xXnNrjY+atDLLmBF+CurH8Veq8D+9Jz8WdmfvBtcgE72J89HP3qdGD+Ve3YFUNIFnAEmD9M3ysPB3fSX+PUG8LfH3xXJu5LzAfPBKdotAT8sLcBhOf+B7zT9J/HczTLfzX3b5LvI/nVRXooK3l9MvlqZd7PnCHzOwF/yK+yZvDrJ34S/1b4Pj8CXezTxb7lXdKZ+/KxyZ/y9kPiv3CuF/7zkSVC/GL3kWfk08VfqE3+b85qX1Of+ZC3ylGb+g7/XE2/tvZz/ZvwdzL8lfi3xbKfQ10nazeY3z8Jn5ldtjedvjKuss5P/oSp/0Vf9jsrZx8z5YQk/vUA537+7VF+Y82L0l8P/GH/9Mz++FryOPnIf+jbtdqP/C9VnXfqj8Zd16X35vtL/EYkLQ294xrf+/bJ+/QD4C3r7Zv6UPFb0emn2f3OepH/NRX8i/BsLoGSF915R/jZ5HbKvj7+D2C/5Z/4iV23+K/OJzCMyX8s8Lvc6Mp8bmPxQnl+f+SX+5+kXuX+U+0gdk7/L+33JnfOm5A+8Qv86obQAL/H+Dd7P9/8b+PdInCl5n+AvmoI9+ZNLvDc08WP61zow+4E302MN/J5ML5co96CX5onr9f6u+O1M/uSd6lSUfyrnATknGK7/5Lwg99Jbabcx+aPQy/lezvUGKud8rw/7XOT9QfT1UOJrE29LH6cZ/zuQb3f6qAF+yp/+ol3ymeTcvF1RfpOe5KpDn9+Qr3v29/WH3J+YrNwl97fwnzjVxOP+my+sKB9V8lQdg/+O7D6B3Yu/s4l/yT77y4mX07//V97FN7P+zP1N9eXxnf2pw71/s/Ij8OV8dWfj7jP6bcbfJg9RF/Jkv6hn7vEpV6avH+j9R3Cw+jHo7YiPk/C5DP2v+aPEB8xLvAn9PGreMCb5O5STTyDrg270dxC6/ZLfTX2+T529l/shddilDvz/4d+7xT8Yn7/Syzrwb/IcqH/106+2gDf5EJK3Lvnqks+uEvmb0d+B6k9Mns7Mj/BffM42An+Jv14Y/6++jPrdjN/eiZPN+Zn65/B9DjkG5X4J+RbBvz3+EndUP/cTzAc3+o6/rvwCfSevzzD9dAO8W8PTGn+5p1PP9yDx0dfxOxNz38I4vEt5TO4tojsDHKH+ZvhHg00Sp6z+XHy1Id8j+KpOvuv1t7v0z2cTp0bPh+Z+VfabPU9+js70eie9vlwA/97nmUFvZY2/IegkH2T8wkp6rMqO16kf6XnyT9Wjxx/IeZXxexC7v6U8B59346ccPInHSvzVanz9l152R/cN8u6H7krPV6L7ofcTn5i4xD1jT/pJftjEMWWfKPFLxd/Vu/F3IvtNQr/4nsLR+Mt6KeunturbJj7C9+QqfA3DT+JTE9/TU3lV8qmQ5139Yz2/sYQ/PQH/i0MfvavZ93Hl3I/IvYjkz0j+u5sK4F/7Jt/YVeov5y9/Il9FephBP0vxe1zWq+gvVb+j71Puv+c+fO6/72n+OAydp8DkBSij/RDt5oOPJ47efC/3A141vr/D/7fJC1KUHzX5ZfZQroWfmehmPrTc+KlD73uC2X+aR/+Xo18m+wI5/8996tIC7ELPOT9dod1eRfefkv8u98Iv8d7wzAfh+7vo/HYYeIj3WoOj4alL7hfQm+n78BK93UbeJvAv1/8+BpMv5zTvNfO8EbnL6OfJ39iPvvqCWd9fqT75MgbT+1n4TX6xisoVc69UuZQ82R+dnfkJvi/Gz53841H841R43oG/snZHwJM828nPmnx1mdeMoKfkn2qsXdZl2af9Uf229JX7NMkXlnt6H6Cf84Bn8LUg97PRfz/58cGdcn+iKB5sFr10hSf3Y34AF4M5n05en+QvLs7vk/y573mvNzrJn3uy5/l+J3/vWeqL7wc+UXRP8ET4s2+UfaTG+C8H/545r/f+S+ob5fvFrslPnv384vxFE0o3l3OX5OMBD0k8O3qXsff2+O4CzwOZP2R/IvEuWecq5z5FDfJOT5x/4gf4u+rG0aai+OLk47wePDBxj+q3zf8RZB8y66TE4RiPq4y/3AfMPcBlxn/mmx8q53wveQ924md/ynlg0XlLcf71nL+MQvcN+ku/3IX8rRMfRa+vwHMDfjbyF+f5/v2jnLiFqegnX9wD2ceFP/flh2WftOj+fPKTHoveSHYoZf8P8Z34vQ/IP5t82Zf/Bd2X8fUDfhonnpr/uQmdGbk/if9Znn+Yc9acq9BP8tz2JUfyL5VNnl/t62SfKPG39FbWPGS28vf4X+r7+jfYGMw++S8FUFJGuUHyEUbf8G2vX+6efbrsX+Vemfd/1f5V5V7eT/7X5IPN9+8P9iiXe47Kc7QbQH+5/zkFvdz/3DbzJfLPNz7+8N5/4cn8+1T4zqCfo9n36+zHoDMIfzfmPkvy2LDzaeQZyH6zyJX/WegPX+Jbkp/1KeUGiX/X38vqh1uCidfNujXr1axnfyT/bfzJMeZZnyj3hP8Y/aU7+76a+2bqP8P/Qnwnj3sr8uf7/BE+8p1Ofpd7cx8Nv4vgW4G/ZQVQciKYfb2D6b2K8bpOfb5nued5ffor/5c4vMTfzVb+GP+Jn0x+orb84zn0ukp/PjDxdZ73Yt+nEt8CT6+cS/+P/1EZlbwD2VcA42+mWg/U17+/UW7FHpmPJo9h7rPn/vpt6N+jf51L7sxvmrJPb/39Pu0vwN8gfj35/64Dk//vavxsCz5qHL3Gvrl/Nyb3a8HEmeTed+5fZT8q+fK3MD5b53sI743k+57fPc/zrD/b6Z/J512LXMlnlvVNziX+/h/378vTXxf9J/8rlPugB7P/L/rJV/kfFfjakXfPxNUoJ/7hAPpslHOF5E0iX9ZjF9BTzrveoY9q/NVT6L1GXyPg34Y8C7S7Dnwy95+yHgcTH5N4mfi73DPPPb+K8FwA/2P0vCD3jvC3Azwnapdzx4zv4vzKyav8XFH+hb1LCzDx0sm/kH3JxFFlfzLxU28l/2PylOsvOadpYjy+Rv9vJs+y+vXajWS3m2I/47x3/BE5853vQ47kna6VuD96elx9/GX855c5XyV/rdznz/5X8tTmnD/7D/R3Xv4vR7sR5E++uLEpo1/H+4kLSpxQzq9yLpL40pyPZH3bfavN8RbTG8RfDgQ/8Tz57bOuT17D1WDy48XeF2X/Ekx8fH/2XAL+kf/hyrwBvzNyD4mcTdFfmfm595blvkruZ8H7u+/ImcbbLPj7wlct65HEExTdn5zovXvYJfcps39Szvf3u9zXzfyT/3lXP60AfpK8+ckbazzU8P1YCf9+5gf7gr3oJ/HddfXvi7WrkPU5+ybfT/YRJxTAv/8v8zr5RtFX8j3snPsB2rVPHJf2E9AfrH3NrAdKCzD5E/Odzzlx1eT7j/6zb67d77kvjp85/HZvdD9PnsrsP/N3x2kfv5f8HbmPtC7ro6L7SaflPAY/yd9fAf/Zv82+beaRmT8mLiXx9KPha6LcnL+5O/+boZz1Z3Xf3Xs9/8vz4fDne5fvSPJ4Jn9n4tmyHs56OfFtFXJ+op8l3q08/N/Dn7wrxfv/2f+50fwl+z/ZD8r42o0c7yhnfC2A/xB8fo/Oo/Dn/1UyDtor5379HeTK+jvr8ay/axtvg4vuL11Fj7mXNw5/xffzEv+a+0CJg836uH/2F+i1fOaH8Of/2TbAm/9Pyv+1bY2v63MfswBK1uL/c3jn4Wcn7+V8pgL+9sHXiuTdAMfDdyq4FXq74jPnlfVyPzH7nfgc4738f17y6CV/Xr2sT9XnHlfuby2l7+R3mAUmv0POH4vzyydfbu4T5J5B8l3mvsHx+tMKfjv575IPbxm/3pdfqEfekuTP0V9/Tz4TeMbgf1fyXazfD4Q36/ut+PW9wFuK8ljknt/9iafQPvfLc9/ybHrNOUjOP7L+zrp7nnLW3xX4q+fgGZJ40tIC/AT/3XPPzvN15El+1z3wlfyuyfe6ynfla/CtnNOgn7wv+8OXe+jNyXc/uRI/lPxcIxN/bF7WhH97T/naovye+Z+GkuS9QP9O+t4P3vnKx6pPfNN28ZvwJr9f8uC1JteD9PxX/Af5bkc3+cE+9f584+9y/agnmPxaB2q/a+Jl07/hz/+xZB8g91uyH3Bf0f9DrSktwPw/1OH87nf84iD9IfsaLxvXU+n3SeNjVfKo53wx8xr0ct/icfgSfzGf/1iiPDHnz/gqzh+d/YN76aM4X23mB8mrHP1kfpD/a8z/OHbNPaXYP/EfOe/NvhL6+T+GfdjvxaJ41JbkO4SeWoLJA5P/nRjOzsX/PzE18fvs01u73B9L3HWb0gJM/uaPMo7Iczb58v8g+f/OT5J/DN3i/cVV5Ons+TP5TpL/Pn6vOT7uA7NeyfpxLv5eLFo/fkU/+Z+318HEaSzK/Uv+b4hy9iPyfyvDyJf/YbkLzHon66BW4YM+h1hvbNB/jw70/pboDuU3jkK/Ef2tZ7fzjMt1yqfU25y/4n6ykX2a6Od/+i7+DeZ+3Z301z77eeS+P+d/7JN7v1nnJv9O4uuuMf4TZ5f4uuS3Gou/efB0QP8L869m/EDN/N+o98aT905wHLgT+Tfw60vw3zH3k9FPnNab7JT/L05+kOSXPaYoz2zyvP+Gn/W554V+T/2ssv6Zc7Xi87bZ8CWe653cY8z9XHTiX7pmPom/7E92SP4H9fk/z9yrvTj768qn0m/+768r+CWYONXifE7/sNPP9Jf/r/op8Q/46kz/+V+S/B/JMnr+wHsLEz9Ivp3gf9D7ye+efbTkec8+2jjtM86Lx3cD+viI3RvW2lyuzL8q5X+38DWZ/ifm3qP3s9+W+LDMKxZnHZ39IHhyn2184rHhS37hbvpF/ud0BH/7mvoK5Mz/VdxgPOT/HU7mP3JPfoPnuR+fe+sHa39m7vvh/47k7aKf9vSR9eHtxm3ulS/MfXnvJ99y1vVZ5yf/8lD4X0Tvv6UFuDv+kg8r5wILivJjnVG0/9iuaP8x+bA+A+fmHp363BfIPYLK+M99gjeL8tvOKMpvm/wvyX+T/znJ/4RM8f6h2h+bONDsD6EXPSSuJ/o4k1zJB3wDez2V+EXtJyvnnPW9xKeU4BvcRn3+X/mIxJujPwi+++B7KPnY0U1es1fYJ/8PmLje/I9F7h/30R+TN7s4n/Yy/fID36+b9e/Pk8/GeMm5Vs65cr51T/KhmZdl3lsFf4kfa8S+Dybenz5zny/z8Nz3K1NagCf4PhyXc1dwD/X/hS//+1T8f1D9+NPEIyc+eQL6/wfvTo53eJx13Xf419MbP/CPUhmVKC3KW0oiZZXwRXZENJBIkWQlI2lYZY/KLJsyGhQSScWXUlFmVkUkMrLJDL/r+r0fz+91eV2/3+ef+zrvc869z3mdcZ/788h6Ff/37yLwZfDFUhleWLcMp21ehjeBnZqU4aLNyrByjTKsBM5rVoZb1yzDNRuVYf2tyvDercuwX+MyvBZso91m25Thp9XL8PBaZXi6cn/9227073471vg33mZbluEk8nxXvwwPw/8djcqwvfpvG5Th0+qbVS3D6g3Vw9td+25+P8zvL29RhieQvzl6j8I3C9/Hb1uGSzcuwwb4flf/XeDrQ783blqGa+hlY/j7wn88/Mfi65+mZTh3kzJ8CfyJHnuR+4HaZbhXnTLsD9bVf2C9MvwAP4ejvwBcg/507ebi/zL8fVSpDG9lhx0rl+FR6hsoL1I/Tvvr1C9n1y/BS9aHX/spfj+DnU6sgp8SPsk3WPta5BuD/yPxfSS7XEDOx8m/Wvkf9b34x07qR1Yrw8PQKbHT9fSwEn8N0P+GnX/T/1bjbSC4GuyM7kX6LQT/xO/F5PuI/72vfC97PEa+ofzncPb+DT+d+d/G6C0qg4rZ8N1snB5Ln93AJsbzQ/gZid5HygeQexz5Plb/rN+Xw/sCfS4lz1D8nav+EP7cwviY5Pct+G8/+I+h7+/Bg8g7hf+MUT4bfweiewX8fenjU/jvJv8Z8G+Iv8fMe7+wy0b0N5Vcx9D3fPL+iP5M9HvQWwf2H6v+fH5TiV/Wpofv8RP97IzOPQX91Nf+Mr8/gf4e8O+k/Ai5VtDDvMhnPn2QHzeG7xL1H8Qu5L4OvpPI3wXefcnfnn7PUH4R/wvwX8LnJfr3pP+G+DpBeRL6R9DXRvDdYpx/qbyd+kMiP37uhP8ddAfhewT+XtT/D3L/Cf5K3p7015B9Xt2wDJuDT5XK8EzlM8D12PkM9ZX8XgN/u+N3Gj725bcfqV+n/l78P2++WQ+/t9LLh+C1/OsCetsP3UH840z4+6sfAD6K/mD8riX3Y8r/Qe9uejsu3xd+cCz+XjJ/NMFPU+Mz/n0eegdvUIat8Hu0+lHoHk3+adYbL8NfEz9342d45lHl1fzrM3gq4ecZ/eP/Y/TLOIj/b6H/caUyvFm7I+jnSd+jDfA7RPkv5cn0OwnszT9H0FMvv680j60Ch5G3IXw9lR/A/+b4O8T38RbtXix8T78xLzeHtzhfngDf+uReVcD/qHltOH3+SP8jlE+lvzrGUaVSGbYh/zT2fgI8ifxN4X8WvZngX/iuke8Dvr6GdyD/WEX/B6Hfmf+dTq/3KU/Gb09yTATraLeB/vXh687e+2X9Zby9YB7sqLyK/L8bfy/wr5nwzUD/T3KNAo8HP9d+Cvt3tv5qRU+zt/o3/sn4Gw//9fh7Fz9/wPMXvKeqP5s8P+F3Fv2exD6L0V2K7jLwY3h+R28Ufubov1T/09VfyU6XKWf93ox/vsovmyhfWyrDw/E3Vfsu8H+d9aN54S7+9SE5L1ffEr0J7Fkt61D4Dlffxu9j2WXbzO/4znct69WS/h2sJx/A78HKg8jfCP9X4e8Q/T5S/xP7dYK/n3a18bGM/n+h9+XG60HwPI3ehfrv4DvURP3b+D8B31+Qcwz7v0WfS/DzKju+qv4J+B4Hq/Gn2votNt6yz+uinP3bLHQ/U94Enx3hb679f9Q/Sv5T1J+kfl3WY/gYpP4x+ruYnL/Q9+fkXF/5buP6GHAY/tfh5x76PhS+Z+Gfo/9JWf/B+xB+qrJLT3Y6WP1f5qd1+K/hO3aN+fWA2N/6oKP125/mvxvx85J5ZR54vu9ZC3xXpvcDydVKeRT8K+nlh1IZ9mLfw9VfZfzUZdeG+L8f/83I9wa+arPPq8bHdOW1+K1NX3Nif3xV+L0W/valzzX08zP9HafcDb6Mh4yPjJdr0V+i3/vGfWXrpcf0vwbdVeT6AZ7axsdoen8bPJ096um/M7vdrl8zehpPP5fQ3zp2+QusjL/sp2KH6L0P+DX+noX/f36s/zf0d6Pfl6DbV/8/4D+fnr4kxzzynW68XIrPtfTUAp6h9LVK/8HKm5K/tfJo9fvRY2v8faa+Ib2sNT9Vhb+z+g7sdAh4OPtvzR/qglkfZr04iP/d4bu4EPzAONqB/MO1fx2f/ennfnq9Gb978P+98Jf9yHb6Z5+yh/ar2Oc6+j+NXjvBv4Y//obuj+i10P9Jeh+D7tnqn1E/l34u9ftm8HyFv+znMq8swc+D6qcp18x6A6ykPvvLZ5V3o/fsL6eTq57fF9DHYPxO50/b88PtlD+Btwq7TzY/7Wn8HkqfT5k3XldeCH6O/jn6z6eHi5V/oec1ZVDxJLvXs064BX93ohc/7wfGv7+B9xf0tqPHceb30fD9x7pjGXu2zPcX/6vA5eBRmY/gy3og64PD9Z+n/Yb46MQfztB+H/PLgeC14CHwXgNfU/rekVxfglm/Pa/9z/jqDv9i9bf4vfj9zbpwS/p83fw1Sv2z+rfL/ISPEej/7vdD6PdOch+v3A++o8yrt5bKcG/9zyNf75y3wtdEu+/VvwbvN1m/69+e377PjxuRY1LGO/7v0W8teBB8Jyq/C3bWfjvyV7O+GgDvAex4Jf7GZ32R8xj8Z3xl/ZJ1y+2F9Us//bPuKq7HavPH/dWX8F2FfL+hd4DyMOP0avp5TvlHsB3YHp5ds44Ed0Ovg/57wB+/ix/G/yZof2LO60tl+CL5vtd+tN9bGN8N9H+l9G95LtA+6+PrtX8JfzcoD9W/KrvX16+PdmP0z/nKjr4vWX/kfKW/78sD7PQd+xyj/yPkfwrcl7wt1B+mfwdwnvE0N+c18OXe4mXfv2vxWYN/9yPHWfD3Id8k894m5qnsx6/Vfm/z7j7or4b/En70qHbr6LcruVuwTwP+V+L/z5DrbfUV6Gb9tAD9rJ+GkW8gPd+M71n6v5H7HrAq/W+r/nL0sz7aCn9ZHz3P3heYN79Vvhn93vpPJt8Dfq8L/6bmnWvwN5kdP836l5hVfdd+V36JHDkPPo2c880H+7HnNuTqj84z8JyDj7HscpV1UQ148n3tCn9D/abh71byzKH/PeltCXo/sEdj/vIEeiX9b8n9Ef3cqv5KfnFe1teZX0tleD2+TiL/H75H35NjMH5z/t+WXA/yu8+Mw82zny2Diib43dvvF5KvCbs2Rq+GdV1/5QH4uwi/veipr/7r4D8dnAGOyXqMfhaS60nyf6X/5sqD8XWMfjmf3FH9l/hvQZ/j4GtJ/pxHnktfHyt/bHz+B54myk3Vv4/fC8ER+Ngo3wP0HjA+/vT7K/jrUSrDWWBv/C+mr9H6v0APG8PzLjpP0PcifHcDu+T8ml2/w39rfnR57t/gPwD9rvT0cNZf7HcwWAPdq/B3tPGU+5iR6O0N/za5H8J/7i+2V/8Ef7jT+HsJPFO7scb9zublvvx4K/r7Ift7/lAVX23Vr7F++QrcC3+vkHMr+t5HuS96b6L/Ebpt9N+QvnM+NdH6cDJYT//d8n3QPuOjM/1lfLTG//Xw9dXvNvo5seDfw+hxlv45F6lmftkYvk1KZdiL/n9SfgWee+npJ/NBf/JdpPw2+bNezD1oHfTXqO9Cn1ebFwfA8y7+Xi2Dip7sfDt4YPZx8M8Bu/Lvz9XvTx/bZLzhe1W+7+SKv1bBX75/f6DfBL5e6Byv/fn005h8y+nnNf13VT9U/Q7ssRH6d5kPZsFb2fjbP/e75HkaX6/Bk/31puyV89ertMv569HwbsA/dsr8pXyN9ltl/+n3njm/1z7+k/ky8+ND7NeAn3bM/TU+T9Uv+/BWuR+GfyP039d+sd+/I18j/fZmx2Xo5/7vncL6/Vb4VpL/wNxX+n0F+1+BTmv4d/f7EPx9oX9N89O92rUj50L8/a39UaUyPEb50+yDfN/+wUcr34tr2es246VP5g3tNoXvb/7xF/iW9c/Tubel/+X4etT6bJnyfeTOuccQeKP/k9l3W/UXqp9YmH8z386g572Ur6GfOvpfoFwd/i7kGg+OA3dhvynKj4Kn0seywvlS/D7nTPH/N8wbY/I9076Z9r3ZowW5rvT7b8r1fS/O2uD/Tf9O82N9djnYPDmHfeuZj34FX4Dvbe0rs0MVcH1wCv4vg28kOu8q94b/ndyr4vuNMqi4Tn1/5dsS16H8Fv5z7jccbOn3nI+MNd/U9v0ZozyBfVvk+8xvt1ZeaV5pgu7LxudRfn8LfzfAuyjxSOzVIPENvsd70tts+qmWev68XP/DSmWY+7+X+Xf8On4e/56I78bgi/zn9qx/9Z+a8wf8t+afWZ/cYJxlfZL1SnXnRuOt03vBc6L+md9+zroMX4+T73t2mZtzMeWd43/wzgcroZf741PINZ9cz7Hf0fpvy3+y/h1mPA9AbyK8iQdJnMha8mXdlvH9CPkS7/IIv13Mb6eC9+LvKPLnPHAFP/lA/QR2X5W4KvBH7Q/nL92sC4bQ/+xSGY4i70HavWq8L4R/APudB54TiP9/+O8d5HzPuN2A/S5Rvzt60+Bvr76/+qXq8z3aRv0++J3Or2eTY3t2GYqPEeT9kf7z/V4Gf+JbOqO/o/az8f1f9RPY/Qz0j6f/Zeg9Df9c/O6uvpv++6N7bb6v5tOOxvFhYO4HJvHXieAjmWfYeXd4p9NLK/xO0b8p+rFHd/JdlO9zYX17X/Yv+DyuEBfwdOLh0Ns58sNTD50/8Xcx/38HPND42hz+HTOe2O07420B/cxCrw557sLfVeoz7g/C/xe5N1XeQPuctzUqlWFL/bfDf9ZBvxXinyon/ku/CfhLfMVo+v6b/M/Qy2z0++j/t3G3HH9V4Mt5Z84/19JH1kcvW5e04hcLlCvRb9bT2R9eTM6sr/Pda2PeOFX5qcQv0e+n+Lq6DCp2Q79D4kbhX0vfjclXUv+F3yeBR+b8xno18QyvGa8fZv+beBD6GUlfzdW/QL8/o7cLPNuT8138n4m/6eTI/PyR/uvU76t/NfWPqt/Z76eR5wf+1jzxafrnnDznX0dpv1B9w8TVgZnfvynM80fo31G/68HF7Nld/zfo48GcKym/C898sLr+F+DnRXwmvq8qei/yzxrK71uPdedfPcDns37ibz2NzxeNpxH6x76x63vKse+B5G5Lv1vw253Ut0d/rH7ro38yeXM/05ucxfPySfSV/ews8s2F/x/j6wZyTFBeTb8PotcmcWDaHQDfRPzdYVwOyfoVP4nn2g5M/Gviu0bQ/wTyfEz+rdjnLfrMfr4neRM/tK1+o/CzAXlvJ1/G39GFcZfzqQ/1n6x8Fv6ezvpHv830mwv/XtofDH9L9Tk3W66+I3/MfdyXOR/H73LrpoH4WKac+felMqioR+7El2R9fVPmDfhzX5X7qX1zf46vJex4M/yJq76DnAfAk/PVafhPnMJgsHO+r/yjLTjF/L9I/RL2uzLxKPg7h30Sr577vJzXzMz8TN628OXcv6P+xXjCxOsnPj/7kzsKekt85RB8DwUHg99Hn/rdRU9jE/+X9W/4Vb+cf0zI/tL8OxwcmX1u4lfosyZ6udeuTx9T4KtC7nv45y7qz9E/cRhnsVfOp3P/M9P4LL5jyX36j/r1ADdBrz+8N+GvFvkfz/eDP/1m3TXW+M86tiH95fwr52E5/zpRfY/EE+Q9iHJ//pv18y/oZH12UPavie8qxB/9gL/99P+TfrO/y/1n7FK8Hwi/Obe7v8G/+c++uHbOU/Cf/fGW+L/fuLgH7KH/h+g11j7nR/GvPonbJ9efyh9qfzF6uXfaFL596C/nZz/5fWLh/Ow6362cl/1lvB4Z+vj5LPE45GyX8zv0873J9yf3syPh+w0fW+PzL/iOK4OKmejcpzwDfxfofw86h+p/BP7ybuso+sl8fgf6s5V30m8UPE9mfsJXznF3AxPv8k7ul7X/L/n+hH8cv3rWOGtOn2NyHpu4idwf09+R+v9Hv8dKZbin8rXk2yPxWPQ1Rf+8b9oH/80zb4N3Z37Xfgftb6evQcqvR3+J3048cd5f4ecect4NDlOf90+7gl3ZIe+fcr82kh1yj5D7g1/p6xfwN/BJcuS8vm7hPD/n90uN74MTd62cfUbR3g+XyjDnr4+YD88z71fkfQr9fZL9nP6XKe+Y9wzw5/xpf3S3I3/O9XLO9x35rk68g+/VMnivAfMuLPH+S+mvae5Lcw+S9Q+5BoA18n6KWI3pLfcWZ9P/t/iqb165S7mp/n+bv3I+N7ZwPjcN/eg7+7xz2a+P8m74+oc9j0D/q8RLw9eNv3Wi/63y/dX/FXJckfnd96thzsmVV+Y+Cn+f0/cUeG4v0Dsa7Ao+nHMY69aNwF2Nj9yfVWGPDdnjNvj75fw9+5Lco9L/l1v/m7+29f/NZ/jbnT229t1/FZ0l6DfNfQq6N2c/Bs9E/XOPnfvrOdkn8r/x/G46eAL8b2a/hO+p+L0CvdbGXeIzK/hrzter8pe16L6VeFX8fVa4n/64cD9dlC9ynaL+q8Sv4q8xPIvovzg/PozPnH/WZe9P+O+lxuev5G+lf4V+O6PTSX3eEwzKvT7//gn+Ntl/ZP2m/xj8XJT4Avjb0t9d9Lc+u39Gz73A5/A7jF4HsvMi5cRTbJv4LfQ+RqdV5l/j+/C8e6b/m9S/Y70ywThdpvw3eRJf+Rw+E1+ZeMuc/+TdSs598n5lEf+bWXintCGYc/nN4M/73JvU53uY7+PCwvvfuui35+99tPtK/7/wdXbugwvvAR9E/zVwO/Pk79lvJC7F/NOVfjqxT+5DHs78gF7Wt3ONj5ez7iTfU/hMfEbiMpawZ/aZiV9N3Op/og/2udd4/hq8AHxK+7O0X5B9cd6hsc/+6PcqleF6hfjljfnFPcbR2EJ84eTc/yY+Ep7sbwfnvtvv2yc+mPwn+30quL72Od+baj4ZxQ5Zv+X9Q4fg1/7jwvrrOPa4M/trsIf2K/LuFd4PlO9JPG/mMbAbeo+S7ynlnA/uknUQ/8p+MfeHT6KT9+8nG4/D0H0FPAaet8wHa/hd1meL4Mv8uDN9Zn48LfcD2Zfg4/ycY+Q+mn2P5adZvyd++dMyqFgF9gUTT3lD4lIyno2fpvrPS3xN3sMV4uPeRD9xQ4n/r64+75+H0dNLhffQTXJeDu/Wym/mfN15TAuwKbgrOmfQ36DEQ+Mj9381SmW4efRCj9Pgb4av5+E9Pefb+hfvi+MHzdV3pZ/sQxNXnf10f/b/1LgbaVw/Qv95t5B7+dzTd+En6wrvws9X7kp/a8yn7cFHzIN5v/iedreUyrAy+Wfib4V+p+h3sPLBhfl9bmFfnvl988Q9+s4sVb4m8bv0k/jCbhk/+Mu9TO5tY8/YbwP1Lck/Gp5XEudMn2+yS94Z5D5xM3a9lz7H0e/V8NZjn4vgyf1P8ick/itxX4kDm5b9nfG+FfmPUZ5u/PQpnAfkfOAN/WvSR9593EVfXfJeFt7Etc8n//S8HzCenjK/Fu9fN0KvBbxXo9dO/+v93o5fPEber/Ezx+/j807f+Mr5Xm16S7xK4lfeKLwPuJy8R+n/X/275/ucuAB2urSwv8w5ZPaX2W/eAv8e8OedXt7nJV4n8TtD9c/7tQ6F922T8ZN3bg8kLg/cDNyjVIa/6p9zr9/hz/lXMV74IeXnE99P3v7gaeBS7T80L5wBvlU4p/ya/U7gF/fnfa7yNeTqaZ4eZzwM1W4q/1jpXKAO2BH+xI8lbuxYfOX+eQB5KuNjHLqPg4v0T1x861IZ5rx5C3xsmPt/dFepb8m/axrX2yv3p7/Z5ps54CxwETwz2D/5RLaIP+NvY/jeNg88n3wr/L0zfVwOTqavw8ifPDFL054ejmX/vNd8Dv5nyLG/+ofQ68N/7k8ejeThUR4F5txqbNYH/K1BSXvz9eX0+Tx+kv9oTc4J8f8Nf7iJHl4At8z7jLyDZI9t4c/5QuLy82407xnzjrGF9mvx1wAfHch3JX3+7PcX6Hn3xI/Rbwty9vb7MXkfoF/uMz7TPvGtU9m7VvZ76G6q3Ig9En9RUp4N/xn4WY3Py8GW5FmpvEPiXchfW/1Z1g+/snPyeOR9a85rE5+Z89yc314G/27sNibvU/A/md/MMO/2VK6SOCfzyS3gTWBb/G3mXPA8+7t7wMQFJd/EyYW8E8m/kHihxA8lnr4ae1xh/C/iJ+9p/7T+8+hhLHqfaX96/DT7cu0/x8euya9gXL2WODKwlfq+9HEDvY8Eb4F//ZyTgt/jM+97cu6TdW/uMXP+c4f2x/n9N/J/rdyN/79vXbVI+VL+HD/6k733LNwf7ZL1LrgXPV+N/0b0l/cus/DZg/w5b048yc+F85V96fvmMvjfO4zM4yMTn+o7sjB5DeCL3t+H9/bsN9Of/pK3qY3fz8XfK+hn/Byfe2B8b02/o8nVKXFY+P/S71kXDs98n/hH38u8D817pQvYKXkPdif3r/SZ97CtjduLjLtXjceP4X9TOe/sjtBuffKdRR/JD3WSeSbvP06l1w3B9YzjpvRxCrZzfjYTzPnZXP32LpXhQebvb9kn8Q2fa5c4lsQ3dKSvKeTfjdw34P9UfjuZ3zZSvjjvt+iveb7jWXfmfJ687cyr56BzR+LHCudV49h/Ij7W4C95HyqhN1L7w8qgoj77Fs9jzk38XqkMr0scmPIn6Oedbd7VJj9MNXguAv+g14E5/8ZX3nNcbH49S/2HxscK8PTkCYEn+Wwyz27CXplf7/P7veBO4NORw3zRyfzQVf3MvO8D74SvT/LVsP9Jyp9k/535vfRvuTfze87rcj6XfCnJ99TSuFqHXtb/qwvr9+S3q8cvLzPPJO446/OOvk+Jv7nP+E38zd3svrnfRygnX2EN9t0EXB+e8+HPujrr7C3y3jvvvfA3mJ4XwHOw+hPpI+eHiVs6nX2nkD/ruq/pZ3t6qKmcc+Vj9E/+iE/Rfw++sfxspPq9zT+zk5/I/PMce9xUBhWLwe5g3oPl/j337ol/yv4+3618r/I9G5v7J/zPgC/7+28S723cTzUP5L1lzpMid/TQSL/Ivzf9Zv85B93sP/O++nH9L8HHzokLyD1k4vngawZP8s8lz8MadJN/Lu+t811MPELeX39CX4nTGVp4/9hR+y30b4e/Ibm/Tzym78xu4LOZ38mVOKfENc3L+SV/naj+cOUB8I81H4xmh4uNs0r4+UJ91lVZZ2V9dZJ5MffqVdhvK+2Opbf91LdNnhBydimDineU8x1L/q8R6u+N/Y3DQ+FPfFjiMk+CZyS4Qn11eE9OHhfyP5Hz3cT95V4CTH6q53Kfku8m+XMflfupb/MeRv+e8Cf+tQv4q/azfA9Ggs+BFdm3WI8OzTtx/jADP0uM5wXq/zbOJ6jfHP3dEz8Cvpn3q+TL+8Onld9M/gL+0pN+xtH/6lIZHmb+ORTc1/lH8iXuh37i6j+knwHG317KtyXeln6Gxg6Fdz2nFN7X7AL/pnnPkTw5yl3g3ynrW+17Zz2O79/BL/DfPuu9vPcBr4c/+ZVqGo8fgTuax27UPvmzlqKf9WTyZ12O3hXgCDB5WxJf/wM8f5XKMPFBV7H/B+y+SDn5gL9mv7FlUFHyvVxOv8/Am3OJu5JfEb85P+ttnltJ7oaJP839vnHwOX5zv/4k/Jl/1kPnQXS+NX/sTO6vlVvxg+R7znnTveRL/ucP4cv9TvJv5n5nN+2PBLvDN5X+m5mvfudn1Y2jf/BXkfdrpTI8kx7yPn5O3uHz56qJJ2SfvuyY9wsN6SfxePtmvxW/9Hvi18eRJ+8XuqvP+4U6+O3rO9Mj70TVf2TdtwX9dtH+e3y15A9v8ZNBhfjL4n1x7pGz/r473x966a5cR/t26D5QKsMLtOuX9xnovZ371UL8wgT8V/guvY2f+E/iFRO/+AeY/EffJp9u8j2RayH93m/c3wcO8507N/cO5uNB8HZUfiHxmfyjar5/4ED149F/EL0x9PJQ4tXJn/ORxMFG/+vULwdvA0fnHlx5BjgcfCnv5MmdvHFLSmWY/HF5T597geJ7reL6fSZ5BtPvz/ypmnH7D/9op36VcZf8Y9cZf6ei/z2+khf5S+XkR048Wj/9PgMTnzYZ3seUj7eOSf6hqvzjSXa7kT89mPd9hX1+9vWLsv9Ivhb8vJ04j5xH69eNnjYrleHR6HcyP+YdcTF+bVP9byvcTz5O/+/gewn4ZuLr9P+BvbP/yX7o/Hw/C/cBH+E/8bGN8l5Z/brk32CPPvAmnn954on1L76nzTvb95SPzPuwxA0mLht/67FHm1IZPqd9Zfp7gv3nlUHFMHAsvnMuknOSquA/8H+hfd7/NKav0zJ/8dt7wLvAk/CZ9cCX4FT4sz54mF1eo7dd+f+F2b9kfUW/xfcOeX9xJ7p5h5H3F230n8QOK9A9B/7p5sNt4HtSOfETw81nLdA9pFSGyS+d/LY5n7wj71jpvz15Mq7/BhvgJ/ZvUPCD2H9z9BN/WAfM/cAs82oP8uS+IfcL+yQ/bPKxKG8N/9HKq/BzAzk7kCPvEgfm/Fz7jvrnvXXy5iQOK/FXA9HNvrou/9wy9zPG9yWJZ9f+ffgPMJ+9Q74zEx+hfrz56hZy3wqOwv9K/F4M/+TEeSufqP36+f8E7HBN4uX4be6Hz9Q+701eMH830q6Yh+d09ZXxmzi30ZlfyT/CvFzJeE0+50/zvsl80o8er9B/Wfwv/38Bnzn/PRZf5/G7oYmvxE/yP+X9Ua1SGWb/+zy9TAM78b+8n0teibz7znvwSfzzHPY5RP/i+6nFeTfMjx+mr6rwJX6xMb5nJ38c+m2M/xn42I/+zsn+JO/56beK8o7k/J7cyXu1Dr3X832k34HqK7Nf4uEvJs+ZYG/wOPzn3dIJyrXw+Ure8/i+zIb36DKoGMK/3jGejnFO1EX5n/zfAvPVbbl3Ad8n1/30k7ymP9DzifST/FId6TV5pnK+0tX465a4GTDftT3xkXyMC9i/eakMa9L3fHRzb3c6+gMSn0zeVnlnRP/Fe9XJ+g/N+1z2uhae5J+7EP4eyWuWeGz422R/of997NOePNPhOV773P8nHiD3/3XJlTiA/djnCPQeSF7I3Cvpn/lsIPzbqM9+5brc39J33uddrnx8zitz7qKc85/Et83K+8fkRci8XirDl/I+XL+BxvduOR9IfhXt5tPXB+SvQ56+8L3l9+8zvxT258V8qjPge0P/PoX3bxdZb0wG/wBP0P8R8sUerekp/+cm8ccH4T/nksmnsjjxBPoP1X/PvA/H7xjtXqKn6eRLfsvktRyUc1v12d9nX7+DdtnfN4L3dfxNAbN/vi1xkehOYY9d4d8wce3ZJ+WdeNaJ9HVN4osr/xvfH75XK8xbH4Fb0k/mr4VZ5yf/GX11wu/ZpTJ8jryRP+8Kb2f/vMPM+8Kt4c+5zOrky6Wft5QPBWfpn/feudfJPU/u0XO/k//nkryg3cDkC62R/zdCjr70sQ3+mvs+bQs+Yb1aL+8fybXaPLyt+TT5yb/Ub6V+c8zPAxOPTp4O9HkQfpJP8fXEhybPbfLTJz9P+M69b/ZD6Ce/62b0cZd2c5WHlMH/vj/5Ho2CP+e6yed9ED/IOe+W2o+BZw0/2yp+hr/EOyR+YTY+epk3e4PVcv6t/Zn0unnyWyVeHN5iPFHijJJHYzj5b1Q/hZzV47/6Hwkenv8jwS65vx+k/BR8yc/fDh+Tcs6Z81/l9uTK/+2pzV9eS1wK/Edqf4B2Z8Kf78N2pTKsqv445Xy/BuX9YOJW1Q/1++DER6LTnX7ybi/xT/P0X8E/mlh35B3PSezTMPHZ7L8remuUF6B3at6L8YtJ2UeRb0v8fZV1AP3l/eXZ6OV9b977Jr/cWny/zl9n4mMS/AvZ+1f2HqLfFjlPQj95lIv5k+cmn5pxW1O7ZuqrJ39Q4t2UO+PnYfPRQ+D4vK/T/wr0E7/wXeaFQnz3KWB181P+v1X8M/npuub/DeFne/QOxE8TdJJ/MO+yPwaL73/75j0ofAv4zwk5f0X/0wIfiW9ZXQYVa/2efBS5x03e5dz3LSqMr4XK/8tfjJ+VicdBt5/ysXm3Bn91/p119xHK+Y69nfeEeVfJn+ajX5/ecz+U+6LcDz2UfS/+sl94Bv2J/LUH+H7ep+c9Ar0kfjzx5Ikfvx29q9W/ju75uT8lf/KSjsZ/8pNO47c5N8r5es6Tkm/7W3zX0q9X9qfmw7bwtAHnJ2+C/k3RnRH59f+A3ydv+8vGR/YLdRNv7PuY+N6Z/O8v7XPflXuwb8hTP/fB8BXzdZ7KHxK/lDj3Kfhrnv9/hP7jhe/77snvXyrDavjL/6dpkPe1eQfv98qJn1Cf/C3J55L8LYnfWVmI40n8zs3mnx3IeQPYRP8h/CdxLzn/S/xL/ew/0a2XODL4f0FvJD+7FTwr+Rzzrk//4v9/TL7MdfwveTRzfpJzq9L/5/wq6++st4fkHYP6SfhJHuvNlHP/m/zsrdk7+T/Pzv0VvfawjthVOe8dk08w+QWPR2d14iITf4u/TQr5H5YmHzQ8j5tHcz7/SfLxFN4p5nzsHPrK+65xhfcLib/Jd7b4fU28xP/mzeJ8iv/E5SROJ/E559FHxlPyuCV/24jkB0t+AO0SH9ss+WnyHg2dptqNyv8XyvrT+GrA/860Hno89uEfE+k3833iSN9Vn3jSpvz3PnbJuiXvp4+GN/Hp+X+YZ+c9e/ID5r0wvieBw+h3XvJ/+T3x9cnHm/dAL7Dzw+g/oH8Tero/cSfJE0e+5PUfnnsn+u3GrskjnO94vt/F+LKayc+q3Xzy5b5mQ/Xt4L/IfP6EdcUw5eSnT/6T5D1JXFL8P3FZyWNSjM/6Bv2ck+9Jz9HXj5FLeYT5bgD6r8Fbm/4WaB879ID/VOXvjOtl2d8oJ/9v8gHn/DTxzYmrTZztMnxmvtzCuIoeo7/su7OfSfzR03k/qj75N86DJ/kYuvPfY8Hbzae7o/MF+U6h50/8/jX6o4yf19mvt+/labkP078VerXih/onf8A889Lj6CR/QA/zWuJiPjH/Zz00L+u+5H2m3+RHu9R80ordTiHnrej/7fe8G6gVPtWfAH9rciReIfE1ic/6HEx8VuIlkle0DX4q4Lk08f/mo+SxzPoi8aW7Z/9JL7XYry3/WkE/eedZWbsO2p2n/rTk1dPuylIZ/kz+5M9IPo3kz8h7+cTZFePrklfkJvX7q09+kVrmy5b8ZEdwWvJ0sfux/KCEz/H0NST/XyXvR/A5Gf7kG4s/t8u+Gf9ZD2Z9mP+3lfVhR+Nvg5xL01879Tn/zP8BOZPf5Tz0/Lx/oo/ESbbP/FShHf438f3si8/kD61FjhfyHhyevGfK9yP5aPK+KeuXnBt25HdZz2S/ugIf2bcmP1WdrJ+TJydxSYn/5Z+/8M9iPsgnC+eP+T9BeQ+42O/Jn9o3+ZXw+9/Mz1nn+X1D/Vcm3xm5r1ZO/tPFxse3yc+Jz/y/3Ob8vzO/GgsmT+Cr2o9n1z20z/9n+cz5yf38eLXyJjlvVf47/wdROfuvIeabRubHeugk3rUSPpvlXABfybNUl7xV8PmLfsnfkf+vuV72zewxPHqHb3ji9EpleBn9DvZ74l7WJZ86/BvB34l/JH5+sfr/A1eAkwx4nH3deRTVU/c/8AzxiBSKSnGFzGOmUGlARZJIg6moSEmlREIyJSqKeJIkQ9FEyZChJCTkMYc0iQyZokjxXet3X29rddfyu//sdT7nnD2dfeZ99l1Upcz/+9XdrQhHgN/sXoTr5Y+tXoSXgJ32lC4U4bZ7FGG1akXYX/70bYqwe80ivFP6gb2K8LidinD/rYqwdtkifGfvIrzB97k7FOHN4B21fC+CMleDlTYrwt12LcKD4Ntv+yL8pGIRfozf8eq1U76N9Mc1irA1+Zfhd7LvJ6E/YZcijB6ay9+f/F2qFuGR5J9Cv9fJP2DbIjy6XBEeAT5D/hO0wy9gS/rvAV9lcs2SX4O8a/H7w3+K8L3tivBH6Qnq74Lf2+mjPHkvVP8u7XkFuj3lDyLH+9IzyfklfYyD7yv81dFu1bXnpeRfXwld8B10j6TfFfg9jJ3cQL4t4H+5PD6la+Cznfrz8HkyegXy9KHfcvC38X1/drCv8t/TT3t4hpD3D/ruVrkIq+1chC9JHyp/L+1bDawKzqf/9fTyFDk2ojcU/4+TZx399sbHPHo6y/cl5OmD/9+kq+hv26NzID4rwbM4dCsU4Z7KX1BzU3mjh1rw14W/3Y7S4K5gL/qbhv+HyHMXvmdJj9u8CBcot1i6MvzT8XlRoQhfY187wT839gbv+Ngp/D3p57/sY5x2+U39T7THIvBj8H/kX0wvS8Bf9KOX8Neb3V7HPufC/1HsjT7fVL6mdBf87YW/y9X7g37roP+1/nOQcaGX+gvIexR+t8LXSPV2Qu8C9nhQoQgnascH5Fegv73U+4CeWsC/mtzt5P8Hnurpn/i/lJ30xH99+TXwPxufR+m/Fcl7rfZ9D94W+uFq/N2u3m3gELCp8tXopQL7/sD4vj05bmXf66WvZh/NybOK/O/h40L5t+J/A/09pN/Ull6r/CL1e5LnavodBf8O8FX3/R16KmR8lz6c3JPg7Uf/K+Uv9v1p5cqzrxf1l58zHuPvNviHKX8N+XfBzwj8/dN/1E//OYw8X6KfdcE15Mj64Dz6bq+dV5l/78Nff+0yH5xUKMIK8nvCN6iwKb0L8PsTe9/HOF0LbK781dq/FXlm4H87+Jvql5X0j7fxu0H5E9hvK3p6gj6GSg+kz7L4maz84drnEPa+J/30Qb8L+h3Jszd9rYr9aZ/G6F1ADwOU+1j+mcbTY+hvKT2/m3UBuc4g14/SU+XXIsex+HmGHCfCfxy77l8EZd4BW+OnJ/vadosivJGc3xaK8AD8b6CHyvA/Sz+j4NuVXXwPXwG+W/TPRvr1cO37ofapQd+/S79OfxvIcx769eg548ke6C8k/zL4+9PLffp3R/azEvwSPI8c95PravJ+i94k+qtLT3fAO5CcV+Kvg/J95b+H/7fRfxq9dcbF17fEr3Lj0B+GzmnknEC+U+CvDX9d9TajrxvZ7+34vQMcClaSX9pOn8m/03rtIvZ3qfaamv5L3/uidxv+OpBvIfxDwfHs7Wzy3LA1/OBo7fRg9hv4egJcC65SfxJ7mQxupJfB+G9Ov09mv6FcU/zNYl8t5W9DrlbSx5rfexlHKpBzOPxPsa9O8AxT7wT4s6/Zif4agk8WinAJfpaCy8Ar2d/H9PIh+BG4jN5bs5cv6G0x+G72Y/jqRF/Hq7ct/l5mX+fLL2i/zBdvG3/fyTgM9mJvlyh/PdhXuz2g/r7GpW/Y90j0KtLjX/Q3h95Oh3cW/a5T/3B2NxRclv1Fxjf1J6FfRf1++PoPvN+S80Tp0/H1Cb22lG7LDjZo9zrsYJz07uofq/+9Rq/N0D8LP4u19wqwnPG7J/lvhqcVec7Ebx/pd/XHKeCW7GML8Fft/zm6AzP+a9+y9NUO/B/5/6afl8jTD7xffhnyn4GfRtlvoXMx/r+hl27qXy6dc4MCfWYf/jP5u9LX+fA1ZKe7o/NK+k/Wl/hao/yqQhFeRv9t1PtVuVP33jT/fHr+ubBp/s34nMwuq2U9Kn9AEZRpAT6a/WDG36ybwFczD+L/G/z2kt89+8fMZ/rTMPUOlT6E/tux77Xkayt9JPo12MUD9HQaPndE/1T0DyFPZfVzvrAU3Vvw9Ss9Zf79wfh5cNbr6tcpFOGf1icDtO8K+tkZfw3xMxXcDJ7z1e+h/hXotGRHtdC/nlzvoPsrPUyUf75+cBD9HkGezANVM67R5x3kPEb+9fiazE6uBB9U/ivpneFdk/aTvg3dP5Wfgc/l8Peg/xe009f4HlVin7HLPvKfkl+/+qZ0mqOf9ehn9FUwv07W/5agv5X59i6wW8n5xGX4WkKeX6VXoDfd+PuqfeAM6Sfkd91mUz5/N452Jc/s7F/Qm6Y97ybn/OzX5S9Xvg37fUU65yCL8Pm58tnv7YXuruwo+7+cG+W8KOdJNbJ+w/9L8B5i/LwL/bfZ9Vvgtubz7BP3MJ69QT/zwcx/jdj3RnYx23g9SP4U/GW8zHj6qvx++LpReh0812X8lf+d/OwzTmKPT7P//cjbFH/p/23lHwtfd+3Tk/1sSZ8b4N1C+lbll7HfR+jjE/Ay/Cwnz0z1byDv6/KPV7999pvq/4H/mfT3Azkv9P097TNA+UrSVyl3ovTHOb+itwXgDvJzDlYfP68p34x+noXvRd9nKz8aH9ezlyr4fwX+7+lnKP5vYSejtf/x9HsDvKeq9y0+HoW/vPbJ+my18jfDf4r2SD+qbP33G/xPKH8dvtuTp4X6X+HnOPw3xUfVzF/yV4FrrWMex+f32vdR7bqldM5bh+uXP+qn58lfh7/PtX/24ZkHXwSb+V5H+aH0UC37F/j+BGfg42vlB5HnBPIvoI+O5N1R+Sna6b/a6aeMj8aHDvR7p/5Tt1CEo3Juia+fyFMef8dYd20BTxnwKfqrS7716t2Kz4Nznuv7Nuj9F/+nk68O+TLvrtWumX93ynkGPifA8yL8z5N7pXbtApbBX/bX2Vdv5Xv217m3ODDn28bHx9F5Xbs/gr+/zD+PqV8F/YJxuTw8LZXPeL0q6wN2mPF7q6wLM0/jrwv4s/a9lH3MAzfQR9Z/Z2jvHuA6euxm3O8OXgZ2Zd+19P+MhwO193+zf0GvFTmrST+VeyL2tju8E8DcTw0l9zBwOPg/fD7BHl/LOTu6OZ/dAj+L5W+rfe+j/yn62fPS59BHzpfrqHdlxkn5G8n/oPXCs+Qp53znffr4Gb3z8dlA+22Nz/HkfwDcBiyn/jDt9xHYhP6q08+CzB/4eQIfN+G/S8l55ME5n0V/ZfZT8A2k/6fQv5W+XyTHZPDCQhE+h/790seBr6Gf894Tff+avvuj95v8Z7Vn9l/l1J9pvKjOfuaS5z3j6mDlN895I/wHSy+htw5gTfprr13P1x4r4Z+vv76Pn7b4e0X774PeRPb1p++n0+fVxrM20m3w07NQhNuCZ6jfDP7n4PnFeHYi+R+k/5HgaLCD9jmv5Hw269D31Z8afaB7DTgb/YroH6/ecvT3wv+u6tegj4vweQZ6t5H3jpTLPgydNdrrDvBLcFbOM/A/y/p8NTgWnQ3ZH+BrI7zNYl++5z63dH/0jPHp/tyDkbMNPK20d9bJq9hVxtcz8DcDX4ep3xH9Cr7nXHHrrHukL0S3jHor5R/DPh82X1zFrm7RH9+EP/dee+L3LOPD69pvq6xXyN0Lnpw/vkHfvcF7wSfg3QV/++FrHD63Ub+Fdngcv43kXyp/JH3toh+tw3/2h+votTw8/aU7obdcvzsFPA//o8m/RPvNgm+0dHX6zf3Cifh7IftE+fO139bst5H2Wpj9BX12zHiUc0L4asrP+n6O9npI+cwvNeDdXPpV9LP+7oL/0+DfifxVtUPWB1kvZH3wmXoX6AcHoZv2WGx8XIbPzeSPRv8Ben1b+a+N7z/k/gzeY/CzH37PV79REZTZjfzV2M+cQhHuqD1ul/84eivgP5l9Lch+FP674b+bvDPYz3ngueSfj79u8HRh7/HPeJrc5dGdmfvW9FPz1QZ0NoJfqP9A/EnIk/PS8ex7vHZpiP8NGd+lcx+xJfvaA3+5v1qvfF/4X6WXneEfpT2asNt7pG/J+EGenMdenPtZ/Ddnb03BEeyzXM5jyN+OfS537xQ7m81+prLDHvrv6fjpiH51+HcDB+JjiPbJvekn6t1CvnXyl9LPxpxb0N80+su88xDYAP+Zn25Kv0Qn89NNsddCEfZX7lfpDdZj3aW7gcPY+5nGh5/op3LOieA5LhC/22vPven/5SIo0w5cBw5A50v9tzs8G+kj6+esF/aSv716/bL+It9S5S+gv4My/2ifHcCGxtfT6Wln686q7GCk+mfT3y/spYtyB0mvjt+J/n4ROZ6W7pbzR/uV3vJfw0fOb3L/98+9H/q5/+vOHgvWZdeA77HDfsaDYwv41s9HpP/Qz9OxJ3ykf5xNv2vQPVf+D/K/yzm9+rvl/Jx818W/CP9X0FsL9Kdn/FSvb/x+4J+A7pqcz6N3ufoT9cO25G0ffzX59xtf341fjva5Bb092feAkvXVpYUifLxkXzURvJk8LfW3atJV42+F/7XKH84e4s+zlfyPc19KTzdL/y3/N/1rLPih/vU0fFlX9ok+6O9O6TPhXUl/1+e8Ofsj9Frhe2/66KydvqHvSTknJO8d8D1p3JsWP4qc88L3Iz2PKxTh0RmP4L9Ef6tOvsbsN/eMjXOeW7IP6KZ+9i9DfL9f+dHSa/Gb/er56GxJPx3Yw165j8F/N+kj9Puu+s0y7XcP+e/B79fk+IVed8XfJ+xxBTrtwd74G4y/1/H9aPxQ4r/ke2flTwLnZX4sgn/umWqyh9wvZd27iF2U7s/HaO9a9NhL+o34kfj+J3k/zToKnxv1r/fNa++BM+MXWmVTvtewx174v8b49Ag9DYofq/rx/zqH3odoj/h/1VVvTuYZ6dzXN8TvDPk34mOx/F/pfzT5BrPbHeX/xR6O1L5b4feI3DvoP4+xz0XSz9PPmvjNyn/QeFWb/V1MH9eitwu7/45+euZ8zDjSS/os+b/ZPyxlVxvQ60veTr7/Qu4J6sef4+asF+R3Ite98nO/mnvV3LNeIL+BftE1+yblH9Q+B0ovoI8x9JD7xcb0m3v0LvjIeq279jtbvQ/jN6fc5fI746+CcndLF9BPf1vFHuOf+xH+45caP9X4p67O/Kf+DeDe+P+avZ9A74u079Kcz+HvI3x8j6/n4L9O+xzt+yL1xmR8K4Iyf4EvwNdRuS3ouRO+KpFvc/Wz/99B+fHo1GNvr5tPprCD242PZ8G3Wv0h8nPuuS+6o5V/ULtUyr6Rfu7zPfqLPqO/evprA7A++G7qKf9syXiS8aOBdmsNf/YjbeFfq9++atxoon3iZ/sW+SrAH7+PU+I/rT+3xM9XJf27Ysn6O+vxrL8/xN9T+Oub87DcJ5P3HfbzN3tqIv9b8pRFr6X+2wKfTxoXZ4DTMj+RJ/fZud8eSv74/4yRzvnXuPjLsI8d6acKPLOVuzD+J+TuK92AnBk/Oqqfc81B5BlPvsfp42T4/8y8RP+5b3sY/pwH5P6tl/77HD3mPDvn2PfTV1fzyG7GyzG5B8LfY/j6Ln4Y8T/G15X4apF1snR/eFvHf4b+vlTuO+15JfgXfg9B/znrh/vB8ew19zEVjYt/x08L3gPwdzz6x4F/kv/R3J/iZwdylfrf70X+db6PKxRhU/lV6f8P9bfD13TtdxO5Wls3zMXndHjij7uj+of6fiP+F8H/k/adh48x9LuZfluTHvYA/4e/JvgvPV/+Xf9+Nff/vi/J+SL8HYx/rxrH2pCrN/5OwM9449BH8VeU31R/uxJfQ6QfI2fWt/+sZ7VzS+2zBN5n5Gc/tj/55tDPcOXPIMcJ8b/Ofsj3F9G9X/7D5NrJ96XkvST7X/3hDfNQRemsL3OeUDq+vZz2UW9z8Ez9YDD9XM0uZoM/guOy/9K+K9lR5tPFOQ/Wf0/Tb/5WPv44x9H7IPu7v4wDQ7I/p99v854MfzXx117/WEW/p+DrfvJ1Inf2b6tK3neUg/+tjOe+/6j+uewz/gEfKp9xbr1+m33VqJwb4O8zen2DXPPBL9D7xnw0AWyu/GmB5J2L3j3otKWfs3O+FP9z/I3QfzL/1ysU4cPkqJ32YV9Xsese7P2+vE/6l/6VdUIr5c+J/4FyOd9uF7/WnK+wzxe10zD29Cm+j3ceEv/jOej/Sr7DpI+WX4M9L0T/b+Wyf4i//BKwFfs7VbmP4Kuu33+H/vU5D1NuF3Lnvcj0vAck/0L6aw2OpeemysfvPn748b8fqz17y4+9x77rqd+SPvcBp2X8jH8n+e5kR7nfzHj1VYmfZ+4bL2ZnnXMOlv10oQjfpIcRYNkS//Hjja9z4KuI/9vIU1P/zHzSnx0cV3J+Gf+EXzIOyn8scvn+JP2Npf+32NcCdvWm9OoSf9/4/zbHX/x/t0b/tfhH5b6H/hsof7Lv5ZTvqh2aGr+ewU89eA5Wfzj9LKPXazLuKjcD/knsYIr2HqXcz+T6OvtA6ew/r2fPc3y/Tvp9+v/CunQfMPdJ8X/J+VgT9p93stXUz/q81I866/Pv2NcT7OpY9cbST2vyveb75tr5Ju0Y/+Naxo3Y5z/+x/QxM+uP+EXR3wf4iv4Px+88/L1Db2PiLyCd9hlgfoq9TqK/jvhvDN9m6O+ec2X53yv/g/ntSfa9H/xV8b9r3rPA8yz+y5mPjqT3o8BB5PxV/9mHfubKj//qu+TfRrvk3rJc5m/8H43+VeysH/wj5OfcopX2Okb9adaDC+W30N674P9K+Tehf5py8/G3iH2dGL+W9Bf9slv28/T6m3aYg/5k/HaA/271asP/Bf0vAeNvH//6F7XvCcbJnejvHfh2N65NBg+l57ol/o65f40fZMOsL/SnzmA/7fl8xgt4c/96VvwV6C/r66yr8x4u6+ucz+U87i/pn9R/vAjKLANbgbfS29d5n533hdI/008v48YgdnYgOvVyHq0/VtQ+z2v/Uewn823O9/PeKuf7tX1vQl//kX+g/Frw/5RzDfLlHc2n2jPrqM+ks37K/cZm+Ms9R+43HqX/AwtFuIL+sz9+O/2Z3Ftq50kZX8mX8/ff9OecvzdFP+fXOc++Me+D6Lctu5gmPVD5ZcoPR6eJ9rmXfIfmXEa6GfqVEz8g7z/N+7dkHYn/rubDPmDpe/mHs98BHwG/gv83+piL36fJu1vWQ/I7yD8Gf81zDhD/XHJOjT9q8pXvV/K+/gr5NdNe7K4Ce7nOOLI1fl/XTyeln+T8Bt6l6DTEZ/Z/sZ/tfI+/5Xbat2zOLXOfQJ6fpT9ij2vQaUTPd2r/H+F7O3E12P9jeU8jf3/5h8M/C/9rjFed827LPLNd/C/0i5fYVfZx2b8lHsGYf/H//5C+LyPvXujMQL8X+b8t6R/xD9hGezyAfkf8rYOnJX1U1V6fSt8I33fqrdU/VkuvKxThEONSK98fpZ/Tsj6OvwF6Rya+hvysq7LOmkdvV2u/vdlNGXR6sKfGef+Q+3z6SvyBi/A3iPzD5Y+Iv6f2PyB+t/AMp+8VOd9CvjFYIfele23K93XkqFFzU/7/o78PVD/3zHl/egz+si5qaHytV7J+jz3GPrP+qYPvl8j7YO6L0R9g/Gls35R36InfUHq/ME9/if90H/h+l38AuEH9j7RL7/iPql8fnY3kbg7Gn/wb8Cn4p4PxZ75kz03LbSd/Nfnjh35Z5k/p5/C9gvx5B5L4AelPiR+Qe7it449csr9bHP8geDeQ/xXl4094vva4HR+X08/p5M772GvBXeGZzD7albzzyXvlzdhH/EBL/Y9qmC/OBM8C56uf/VlT7TxBOvuz9fr7XP3qFfBb+fuxn7yT6oDPvQtF+JX+tBKchN8XMz/nPlq75f1W3mEcKj0LvrNyTqr9K6M/WvlZ6Len793Qi9/0AnLGn3qocW1B3s3AuzD+EfiL3/xQ9OM//416mfezDsj830J/zflnc+m9tX/G+y3wlfO7hvK/gvcT9OPX/yT+xpIv/h3N6Tn7i7wf3oU+cg56p3QV/bO68bsueAX7KKvflp6TvYZ+1pt3K/8QfrP+3NH35+kj9zwryXcXfrNPKd2fxK5uynsp8uQd3kV57yc9gHzjpJ+P/wS+WxWKcGreYxZBmYlgffUeRf/PvF9UL37/P8cfkV4G6ydrtWPu+x8xb3+oXh90zoF/QeL7ZLxSLvvh5uS7C77OuVeSf8W/+J/lfPgZ9S+Ef2ft8VzO13Muk/hheSdFP2/Sf85VtoUn5yu5n0r53FPdEz8j9feBN3HGDkp8H+19dd795BxC/cSLSPyInXIPSh+J23NKzllL4vf8Ff8k9rWL/p55OO13sPxSf+WLyRN9T6aH23M+ob23kL87fhL/aojxKfvg6fj7Cf6R7GsZeXfD157qf5/4Pnn3S495z5t39Xlnf3vuF+k5+4/lymf/kf3IFPa3HJ7p5N2HPOehe5rv7fE9V/2ce+ccPH5cOf+On0Dky3o+8l2cdxDKN4h/nXr98PVRSXytzuoPy/uLvOvD5wv4G5P7M3rtkvd48ldr//rs4lT89M64xa4S32mqeST+CyeVzP95v5H3HC+y77fYxRrpH3N+m/08/qvgL+uv+EucnneeaR/0FsofmXfS8i8l7/6Jj2J8GsFe8z6m9H4598rpv9eWxOdJvJ7E5+mn3XJ/mHeaveM/R6/rwZHyEz9rPns5mzyZt+N/dwx9NQIvLnlfk/XVhYmfBH/Gi6PpfSf038d3/Mvi7zyeHmvhI/EL68Y/QXttD9aEvx/7ODXnj+b3e2If6Ma/oxz9DYQ/++LF+Bwv/bDytdnbo/HTAt/RXsvZ7/tZVyceQeJb0E/ej8R/Jf6Xif81jdzx83ld+kv4EmfkeHTG438Ze8o7iBXgs+rPzf2pdKPEjVE/80Lp/fZWJf77c9RfKj2Ufk+j71vY4QEZD8k/mF4Po9ffct+Ve6Gsr8n3LPx5r5n7uMrSeVc/POeH1kd5l7OZ8XdP9pF95+K8T6b/vI+6PPeXiV+Re2PyN2M/16PzWeKoKdfD+qKDc4FVYE30ekrn3Wb86PNeI/EQLsVHx7wnoN/ELbw85/nwxt/1M+39HrgqdkjuYcrfof5dWY+Qv2zisUjPxtf72V/hb2ChCJvEP4F+DiXPF+Sbb/zO/fow9EbjJ/vEQfB30p++kt9ZOvuAnP8sRj/nQNlv30M/ZeX/kfgi8f9K3DT4y9DTuejXz/yBTun7xysz/utH2beNhD/+1/G7Hpw4VfB/iGz2VZvBP5Acf+sXu4PPaI9f0Z+oXqOc56uf+KnXxH7Z48voF+QfZnyqzX7PYb9Zv8R/ION23oHGfyDt14IeJoLTEo+gUITb597f9yo5fzTezqP3hugn3kv89OO3H3/+//me8+7b8JU4qjn/fg2+kco/l3eE6Md/Ku+m4j8Vf6ovi+Cfc4CVGY/ll54HTJEeUhJ/IfEWbifX5ug/zj6a4C/xcWbSb/xR45/atcQ/dR/8/C3/h9wjyK/DXuoZd7+l5xfkX4X+69q5n/RJ5In/aPxGdyBX/Efn6D+JP/yU+ejM+E/it5bvOU/OOXJ/+Ueh2xi+xIFYYtzoaRypK71Q/SNzHoGfd+M/Sd/7GS+W4f8o9tMgfpj4/jzx5LTD4sQXZQ8N0Ut8x8TvyvvIvIssnR8WZj0nf7e8k4n/YhH8E1foBjDxhl6Ln3ehCGPvue9pTf6P5T+vXoPcv2j/W/Wfd8HEB3kBvcRzTnzny9Tf6Hvi5iSOTuLnLKGfJ/CVe7+tc39Usl7J/qKu/CPwn3OBgSXxSTew2/r0Vi/3kegckfPerA8SfwS/gzM/5d0AfXaPfz15E5fnZ3iyjthXuhN9DPW9avoX/GPgz/ni88afB/BzNPu9pVCEC3M/Y3z6kV2V+vc1tm7qmvho7He2ddUJ+k83eC5PHB/1c9+Z+89d8TMi72vQax5/37x3x//u2if3bnk3kvu3ieaNjYmzIP2X/FPVX87epoDfa///at/e4H3gG/R8m/15bXItk64Df9bPJ+VeUr28v/6YvJ/m/SH6Z6N/Zd6BgX3zPjH+a4lvQv7P4veC/vWZf3KOlXN9+NuQP/Nu3otUib+GcXcjeK7xcVt4ch7xDny5n39J+yzXH/oZZ+5LHA/5A6Vvhn+UcTbvaA6P3gq+J35U3sfEvpXLuBr/y9L49Ynzeiz6uRdMf884kPjFV8UfP3Hd4v9CP6ey/3fZV96fPS6de/i7Ey8r8WHw/6Z+sSBxwcE2uUfBd2v029LL2fi7wfff4e0B75Pkv5W+dkz8C3yfKz1Vu7xKrvTzQeofmPh6vl+tXM6ZVhg3bjPvLQLz/qx/1kdg/C++gC/rsfOqbko//PQ2P1aSnpc4rdJ/x19Vegp8FUre79VXL+/34g+ac4GR5qFjSs4JJsCf9ykZZ3pJV4Mv/uw5v0j8sD2Mg3mvu1S6V/YP+Euc+vixJj79l8abFeDD9DcqdlgEZX4Bh4HP5P0GffRLPGN6bo9O/J/i93Sk/pf7v5XGs8S17iM9UP3P2XuzAv6kv5J+OvEL4N+DHXTPfi3+/WDperIT+/tOeiy5Z6Af/7HETTko8brZt+5ZZim+bpKegv6W+BqiHxWkT5Gf+4gBic8Yv+vsr+kzcaniBxI/2S3zvpw+f0ocGfXvJl/TkvPZxOM6Dt3Es52UczPtOyvnRvBnvG8vP+vDxA1LHLHED+uJn2vzvxrGg9zHHKK9aoO5J8r73/LsZdusW6Rbx781/m95tx4/ZXr8Q3vvm3si6cTVfFS7HcTuRkhPhO/o+BNl3V8owi7kayR/EHoP0mfio9bL+w/wdN9ngLOVn5Dz4OwL5PfT/nn3nzgAef//LL5rWheNlh6Mz+xbc/5Yet87KvF78R8/uz+kcy75C7o7lJxTJv5n4v8lHmDi/z1Dn+vTP8AW2qGZ8f0U/B5e4gce+8z798y3sdPEB8m9ae5Rc3/6HL1fX+KHnf+fKI238E8chqxvsg7W/vXpM/5abyduRvw3yZ/5rxK+O+M79xpHwj+K/a6l9+zrXoI//lCNCkUYv84PtP898UeAv/T9dUfy7A3GHu/NeTx9/07+0vie3ZX/IH4j9Jz7jVOzv4jfC7xXqZ/3AXkXMNj3vA9Ypz2e0R6n4vPOrF/wdV7iDSUOSs5vtGtDcrwCxn8/cfM+TDyXQhHmfmcGeSvn3Y/xPucz/7auuB++nD+sh7cFmPOHc+gr8TWHG7/G5f7YuHQ5+Hveqyif/vA9OSdK7yj/GP1obP63gP3HL3Js/LGlE48n8Xd2Rq8y2Dnxc+P/q/2OLHm/sgP+DyqCMo+Br9PnKnrMuWHOEXN+eEihCBuQJ+vPz8m5GJ074T0ZfAuMv8We5J5Grqlg4gy9kPcDyl+lft4XJ675v70zvsIEP4NeRsF/RPwntGfibw7T3vWMB9lf3qtfJs5I4oucn3cx+tHF9HZN3kvCs1r5vrnfov8BVTaVN+2c9o0/2wnqx886/gtbZ7+K/0vVH6L8vewnfs4vgDnnyP/L3IH+IPJeE/8C+blf6I6f3C/cif9WmZ8SP1T5fX2Pv27i4Cf+/Uvxb6SvvGf6S/mTnLfXxXcT6dXKfyad+LyJ15v39au1//Xa9V320aegnPzvt9q0/HDyp79nHFgFf8aDzf8lfkbuzz7Ad+LQ/olu4s8uxs8X4OfgirzX1T/OwVfeuT8E9s+7EXAAeLL88eqPZSc7G19uSRwW7ZNzsYty3533KvipI3+M9kv8xZzf5Nwm5zj5P6Osy7Iey3rtHvju8j3nczXhz/ncZPJMAaeC3RLHLOsv+sr/OOX/mxagNxyshJ/4jV1BP5W0a+I/5n1k4nYkjkfl+F3m/jr79hL/oPhvzSNfJ3yehL+MP83yvw3sayp7S5yC/P/S5vFPyjk2+u/n/64yfuDzUvQnkauKcakzOp+in/9HyP4mcULzTj5xSXMOnPikOf9NfJrc2yUeYu7vKua8Fv2BeWeW+KrxX8NnK/bUOvtc+imXOLz0MyfvY9lz/N22p4f8/1/i68cfI34a06RLx/Vu0XfOT9BNfOpbS86fcz6Z/yO6Br6Lcv5cEs/rY/ZdEb9pr7Rf2vPh+P/lHlX93G8+Qo7E38j/7rzKvpuqf3r+XxCd/K/DWPKNZt/xA0k8jYwvD2v3strnF/3oUONJ7iMb5J0//LmfHIZ+efR3Ua6iemX15/wfYXvrx/PUr5H1h/Ij8Bf/u7rwTqSfPdlf3s83Ra9b4ltlfav+ufI/zL0mfD+yhx7WNwfIX1by3noye/2UXq5jz9eC8S+sWeLPmveXS9T7CRwKfo3P+Jdkv/Z23kXBd7Xx66r8b43+8Kr8WXmfj/9S/8hG9Jvzx+Plz1T/YPZ+AT4SFyT7gD3g/zT+XyX44z+1AP4v2cMp9J/3IPm/vvjNb6F+1puPK787e8w9bm3jwzDwS+Xy/zBvJr6g8vPgT7yHuewl8Ya/1f47J83OE1cz77oSX3O7xOWFt7f6uV/I/wLkfwKOBffBz0Nl8A12AsvKrys9DmyR96r0uZ49dkz8MDDv++4yH08AR4AfqH8BvLmvz/395/SYc6GcryYOUvyzFrKLvPtqCzYpFGHt+M2wy27WqTkvWY1+3qWV3gc+k/9XZN8fwHO8/t4O/vijXonvR8jfu+R9zWHxC6n1/+f7E/zlPnYR+T8puUdYJD/tkXY6AH85T5rNHoZknkc/8W8S/3Rc+gM57kg8LXwtVO6UzL/aJ+/serC/vG//lL7vi3+PdM7ncn7/vfrx470dvdroZ5zNufJs+OM/k/hGA9WL/8yA+HfkHZv8+GflfHMmPKXxzXoYLw+kj1Z5b6V+/LOPShw8+I8gX+JL5dwg7Z/zg2bspylY0/wzOu+tsv9JXER4Er97a+d2+R/emXmvgN8x7if2pvdaYP+88yb3BPinJ45z5Mu7kvglaseu6g9X/ilynouP/L/ML/n/HPKV7n8z/ud/6jL+5/y7g3Y9hDxr8VOH/hK/MnErnyZP4lfm/nUNvNcVijD3sPGXfTjnFuT5Db2b/uV/MfL/E1Pk76y9sp7I+uHP3M+j94b5OPEr2hq/ci+wv3Eg9wPpBzUSDyf/Bwf/vdIzyJ33vxcrf635/AdwH/bxFjvbx3yQc9Kpxrmcj+7rPOVSsGX87xKXPPESwIuNj0+Qr3P+n8K4fw97uCzvOcybjfExQP455BgI7w3g+9Y72b/mvHYUPInD2Ff+duTpRt4/E1eTfNvBGzsvte9yiTMXv3b6/ox8ua/Ke+7cW+V9ebtCEd7q+9/sIf+PUfp/BzP33JT/vC+N/2z8aX9Xbha5F+DvRem+8OX/qV5mn/n/sTXqb29dUR6MP3V39NfFHwq+o+HJ+/f4/ea9/Jv5f9eMD+zus8SHYn+X4Lf0/5XjF57/h61JP/l/yU/ZSf5fcjq7jJ9TqX/Tcu0a/7n40+V8Nu+HZuAv/0M4Wfn8z2M19W6l3z709zv587/GLcm1RP4n7LlNyToh64PS+9r415+c+72S+Eh5D5P4b9tKJ1790IyDJe97Hsb/G2De99zAnpazryvAvAdK/LQrpONXuwD+0/BVl/xP0lcX+fn/7w7q53+x7pCunnkz8yp8iUf3f+pLr7h4nHXdd/jX0/8/8DSkhCQ0xLsk5NNA2YpERhJRZkJlRVIipERDUVKptEOEyiejqIzsPVLUxyijiOxVKd/r+r1ud9fl9bt6/fO4zvOc8ziPdfbjPF5f1Sz1/34n1S7ApTUKsFydAtxZ+rk9C7D1bgU4b68CnFu5AC/YugB32LEA69YtwMllC7DKDgW4pEoBDoanS7kC/Fr7V8JzDfytlF9XsQC/AzvCX3GrApxYAKXq7FGAv8h/Y7sCvAcsh77++OmH/7HSx5cU4KPSZ6CnAzgXPWWVe1W7f4EDahVgc/Irg7458s9X71fw+W0LcCA5l2yPT/W/8f0u8jkCvRfKf0t7A3YvwKbVCzD6qlupAPcE/6KvKeR/fbUCnE1u58A/UHujyWsUOAn/teRPKV2AjenrIPQcLb181wLsAf9r2m2F/qt3LsAO6K+4SwGWU38S+hYo/7X6J8ufRV6zwfL0tGu9AjxV+2egq6N2voXvK/p5EbwJ/Kt8Af6u/iRyPQ6eQ0sK8PZtCvA36X13KsDjyb+Cel9ob2+wHvqvgv9q8uwKjgFvkb+KHVyk3kfgmVULsCm4WP94DZ1D1DsGntn6xRzwPvZ3L/gq+majvw6+foVngvxG6j8Pb1N6uUS6DfprkvcyejyQHbwB/7vsciR4N/01Uq+b8eMy8HJwMzzttHM6ek4h7x/JpwV6bsXHYvU+Ub6u9B3SR+JzP/bTwLhxcfoX+VZB/0fK14Jnpu8j1S+P77bqH6d8D+2dLL+/fneB/NLyZ7PD8ysUYEewq/wTyH2D9P34H4H/h4y7V+u3FfTj6fKvg/9+9O9ED9vLT788qaQAJ6I3dvqn/jsF7KT/3sn+Nmu3kfS15DmfHT2On33038/lV5U/y/jyO9iiTAGuQNdm/W87cqiFv2HoH4GuS9H1INgcP7uyj7PxXwO8B39V4fsvuazAz0rtfcYevjGPVUZ3Y/qvjd556D9G+mb4e6LnePyfCF5Fnz9rt4r2njV+P4O/2vrL3+Sxl/HnKu3fg6565LoB/bNLCvAo9rIG3x+Txy3qL6bvh7TfUzsvoe828l0DTsDPm+jbS70f4PmaHZxITi+Sy63wDpQ+Af5u+B1ofLpc+iH12+FnLrzvSI/WD8dKf4iOP9nLWvi7ks8V5DiZPlup/4jyTfTP4dqfU1KAlemxqfKzybMy/reDvyz6ZuiPP4Z+5Y/C/y0ZZ9Uvnr8yb51PP2/Sa+arzF/z8H0+vP3p97/0UAH/VfW/q/HZC2yovSXSh5NfO+UP0P4xxuMZ2mspvaf637OH3cHYSzV0LUTPViUF+AM6t8fnE+x5N+2fZZ77iLy/IL9X1O9AT83RtxL+5+npf/C/q/7P6v+pXk/lnlR/IrkOMg6cDh6hvWX0VUO9N9F5h/rn6c+LlVsjP+u7e6WnkccLWS+pXwf/NdldHfK/WH45/C3RfmNyPwF/h7G/RvTyE/vbW/5vvnfFz5/SPeVX1x96s7NX0HG/dqprfyflP8NHGfZbk3wbyL+d/m5E/wzyjTzulz6Ife5gPGgCPo7OG+GvA/92vt9FnnPl3yo9WPtXKL89/I3Zd1t28Q4+W8i/Qv37yLeZdg6Ef/+Ml773IJdOys9hL0/DUwKehp7d6KMH+3heu2XI53j01CX3p/SzsdovDX8zcusvHTs4zvxRk15rgcvw250+rkPXzextn6zTyGu1dA90v4O+muqtoL8K4Bf4+Jq9rjZ+r5P+Hf0PsJ+F+t/zJQU4XDt7GZfP9L2e9Ovpb+S2p/KNpWvD/2MBlNoK/Qulr8z6i9wqgSeBlbN+If9J2p8nPRD//9O/jkXPculm6OnGvjrTW1dwhfwm6NpRugF5vwv/cHJby04ORF9b9CxS/g52uAbdJ+F/mHITwNvk3yo/8/0I8i9Ffoukl+rPGV9XKn8kerOvuIve6yif/cVT8JRWvyt915I/3PjyHjm8iq5u+F/PXjeCt5Hz4drfIfsafH0gvy56dmLPM8lxGvsbqnx3bC9B19/S0+DpH3sFn2HvB8K/VHlqLbXM/LaP+a6S/tcr6wHpK/D3mXY7kPvhmTfA/so/TU6ZTwbIb11SgC3Rezl8t6JvFbqyDyxnHM0+sLrxohv72gUcTR9zye0Udvdf6ZPklyX/FfidiP+h6Gqk3XeUf5597Kb9Hui9xfde5LtE/d+sZ4aB/dD3LHsowc/T2l0OjlN/LP4m5/yCnLqzn3rG1XfQ/5v1eWP8voO/e9B/Mrupr37b8K+9V8HF8msZr1qpt4f041mfwBu73Yu8TiGfl8mnuX7UHt4fM7+z7/Ls6yd8jpTOenkPBnqP/IfRcws5DgCnyo/9/CH9q/xfwI/p6Snjz+/0t7fvFdB3IX0dzW4O125v9O1C7q/Q28fSZ2n/It+zX6kpvzR5nUM+67V3BH1k/zyE3awAV8WO9Ktx8A2G/2Dpd9T/Df6q+BqEzxPpry/5dvP9d3jPgO9e+t0XvTeSV4n61dhZTXAH48x58M3Q7+8HnwN/hn8h+W6v3f/Iz/hyNHksgu+r7G/xtyN9XJjzRXJsJv98eM9Sr6P0E/IvIpe/6Os75YZo/0LjVXdwN/PnMvV30f7p5PIVOh7J+pD8T8DvGfpH5r9r5H8rvR98g+FfJ78d+lqp/yv7ex39vbVbTv3O8ptL/wX/IPIsT04ryGM52F359erfw94Gghtih/C9ie8z4Ruufk/8nxj7Rl/Wo+3x8xp+DoCndcaNnPNl/2b8aMpebkNfY+u/0vpZzg2fgD/zSeaXK7Wf8WEeu6oP32foOFy6j/o7s4vS6Fiu/j7Gk07WTQ+QT0fpofg7BJ5L0NEG/vPR313+g8bDo/Af+U8PXvBSeE+jz07KP4y/I8g/+/fs1/sYv3sqP4je2+l3o42zO5UUYHP0XQ1Ooo+76XsX8nia3P80Tj4lfz78j4AN1M96/WWwWtZ7uc9B/1P4Oxw9nbIPQf+Z0rvjb6x0Y+1XU380vVbRziow67ms77Leayr/SvpYAk8FdtZTucnGg8XGhz7Sc9T/gn0sJJ/96eNB9NcwXy+xDrgD/Ii9vWRcfSPrf+lL4C/B1wJ8j2PPv+A/+/ns9w/Hb/b3M+m1MtiwSL934vNG9A5Ax1baz3rpdvNOe+kbtHstvPvh83P8/a/ofDbzZXvtdUDfHN8HKP8Cu58l3YhezlRuGLqXyS/HHq8FJ7HzWfj5kPyyftmU9Qw83+NjH+X28L0H/B/ojyPAdrlHgH+e8aqvefEI7TwMzxT6aADfSfg/VvpQ6W/I6QN8doD/E/z31+4eytdRLuu/rPuyDmyX9uVfqXzG/x3I/6TcZ6H7Zvo9oKj/rSwpwPTD9L8f9IfD9IMjwF7KL5b/YvoFOA6eauyxOriL9dwG9LTV78ajZ6z+0Rv9f6D3cPB58Cb1Mz6E/owT/4wP+v/+7PhisIfy1en9/AIotQwcBn/m/8z7WQccjb8q6o9Sryv4Cz1+jJ//gV8Yn79F38/0tS955xxwUe7n2HtD9crnvAB912p/L/2y2I4Xks+83Ntq72z1P/X9Dnx29v047W+mzxfprQ35vcAOu5iPHkTnfeDt6rclt0ns/2n0/K2dmdrtSG8vwjs89//sLfPUhqL5qRN5dMw9Vc5Rcj5jfbxGP56I3mfIYTb+LmeHk3Jvif5R6t2h3l3Sw/Gzkn3VYJcDpJ/Ex7e5TwdfV281/Hvjv4fvC7L+xP9W+u/t8g/TTl394w3yzXrgO+kncz8nfYT0DeRYPee7uRcBZ9HP3iUF+B5998HXD+Ap6uf8tQTenL/mPLam76fh6w96vir5+NtofnkTfyfRW+Pcj6HnDPgWSD+p/P7gIfC9mnWz9u6VPk2/aIGenXK/Bl99en6bfnK/+Qe+hpFnC/TfJn8CfFvLv1v98drdSP6t0D+J/KoYPw80Po5nX5HvEvQ/o70jyeNe+LZHb/+i86Gv5F+nfPYVy9CZ/UUt9Jzi+ynKP6p+U/3jtfRHeD5Gzzj0XSL9F7vP+fXp+Glg/NofrCy/hN46sqtZ7O3PnMOQyyryzz1Q7n9653wq6xDtVcXPrcaL3M/mvjb3d+8VwD9+MS2kD0ffT9kfkVcXeOtofzX5bVL/L/J7J/ajfs49S5NTzj/f9P1kcmutfGn4pxjP/sTfNOkR8t827l9OT6dKnyl/Ovoa4/999HWRf7Xxej/1jyOfM9CX+fE89W8sBT/5fJT7QXJZTa794J+l/ZuNE5m3gn9P/eWSrGt9Hw7epf0vwC7gEHLsyP5zrzGVvveRX7w/yr6oPToWs7cl7G+6dPvcW7LP7saVr6UvQ9/36D4b/BkdlfH/vfLng1nnlJU/SXtnk/sU6UvheQb974HxV9km/hlF98O5L94k/47Mx+Aw9VuEPvPSduzvTXawRH5L9tYcfBD+/5DfCOPXneDX4O/xC4H/Yf3+Pf3z7vh7sPdW8A3KPEK+LxVAqUlg/KG+kf+w9HB21A6Mf9lsesl9023g+znn1v+6ZX+m/T7s+Db1H8+9RUkBXqH90bFr9TLv753zUOuXurn3BGfiN/u/F6Q3ovtU9pv5PPv/3ONnvj+ePlqB6cdPar+p/tEN3VdJv6G9+P/kvDLrjC7q34Kfusq/pPwY9BWvz9aDOd8eiZ7N0p/jp27Wv+bfR9Qrx87u1l7O+3IO2KnoPPBy9aZmfMt9Pv22Jd/xJQW4PH6D8vvo1zP0z52lu5Hz9ezrv+jNOm167t+0n3E/80DG/6nGq3Xg9WAveG7NvQ+5tPG9CfyXK1/NuP6odO4XHiGvl62X2pDn7vI3WBfEP2dW1j/Bj8975Q9Gz1L2dj3+rqO/Puicyl5WkW9d9Scrd438i8llSfYD8G+UXom+jfT5hfS98Q9Db+vsx4rWX/PgG4zeZui9E38vaT/nClPUf1j+C/Qde8++qWvub9lFOeWyzjwDv0+A3dE/CD3pf+cbd88GzwJ/LynAW8w7FY37tcF2OefCT0t4z9Ve/F07+V4O3VPocxf8tsy+W7stpH+B5z79sww6HpDO+dn79Pto7h/odQH5xX9lIf3U0378V+rjZ2LOz/A9vch/8U181qDH+C/GvyzzV+az2HFH+r0UvhnaOSfn0PLbKv+z9j5G79/yh0hnn7EQvqH0PqUASj0l3Y6+m5DjPeC25FE2/sfqDQRX6r+5/2yt/YHqZ58yGz3v6s9LwGXy56NzlPoL4TsUfJr8Khs34s+4QPuD5A+Db2v8dGNPLytfy3ib++610Xf8L9hLLXBn8/0C+LJe+hvMfWednN/Qb2v8H4LP6+HfaHxbD/6B3s/J9wn09MX3MSUF+IH68SeIv1z8Chplfaj9augeZ/yJ//Ym65YR6G6o3Ffs6T3tZz5IP0n/eBe9g7R/ofZb5fyy6L50o/xPpHvpl030ozfAt+HLeepb0keTezP6m17kn3QaOW+dfPZwFVhZ/irlh7KHq+NvRW8XZP1aAP+f/8Lp6Mj5W87bzsRfN/xdYr3YVfnHpW/K+T37vga9m+KnnPNW5wY10RX//4yPwyv9+/tP+kPPvO9gtyeAy+m7If7a08/L1jmjcg+C3vbGg1bs+wrp13L+iv74nccfvU/WP+TWBl8v7Plv/uNP+T0Yf8tG7HAn42EjcEXuu/FbiX18yy63kf89Oi5H34vyB2TdhY4h+BqJr1+kr4O/Jnv8Nvsm+j4Mnt7KxU++2D/+RvwfhM74t00gv5PRW1v/u1B/zbuT+caFrP8/Vn+s+tco3wssT88v4fdicn0brMs+4n9a336yH7n3IZd7sn/NvY/66zO+qj+G3QxnVxOkc/6We5Xcs5Ql39yvfEc/l5Nb7ul+Dx3kfZ36nbJ/ZE/fkW8j/ecCemid+2N6fUy7TaTjP/MLvrNva8jOxrKfC+JPKV0i/Vf0zU4X4n9B3i/hP/u3+H/HHzz+3+Ny7q0fboWOpuh7I/479P+E9Fvqf0rv/Yzrn0lfSo4L0X0seeyefRH5T6P/KfQ2Ov5P6D236P1J3qPk/deuxosrwevha6b9V3I/nfO6jIPa710ApcbDv4q+47+R8ej1+NfCfxQ+1pHnLyXwZJ3OHh4jl+fJ9wPyvUJ+09y7sIte4K85x2b/b5Pf49LPFI1/h2j/5+wj8Be/qFH68Rgw+8f27K+lfnudceBcctqf3q8ln13wfSB57qw/nlYApZ5WbwD8bch/BH1M02+qoreC/Lz3yPr2KHjiH99C+ZwHxU/+RfJ8AexFT9vBk/OPG5S/Mn4MeT+C7+yjz2K/z+LvJvVzn9aBHN6KP6x6FcFtwM7on4XezXkXVOQHHMfCm9n9xeBo/GacHE+e8d+Pf/DBeR+j3kTl4md4HXl8Rq8dtHcY/Mfi7+At7Ed7of8A3z+Qvl3+o/TTG1+b4X2bvIbCXwv8NPcG6i9Sv2X8BuG5P+sL7c2Ad4RyWT/nXWX87/srX438j0T3vtp9Sv61WT9qfwp6Kyp3mPYb0PeV8OU+OP7Qvxqvd9WP/pDO/n0r4/UoMPvRO/NOgb0t1S93Qm9r9A3Kep9dPQvmvqkZfi5Dz03kU1t+S/inmwcvQ8d7OYfET843q5JjzjdvyvkxO8q7yOXy98f3q+zrNXBJ/H0jX3LNPjr757uMZz+AM9RbSv7xJ7uKHJYaj+NfNi3nuPE3Vv8J9Q+LfxR4BHgC+d5H7hVz7gvujt7n4n8g3T98q39Z3qdu4Z4z6/ey8PSUznq+tH6RceVidrgNfR6c84f4VRbdL61nT63I/T38bVVSgDn/y7nfZfr/P+d/Re9l8w6p0Rb821bBm/FoK/bxvfRk+I8hp9rk8iX67gFnaH9Pdpd3mRVzbw1+gp74HcR/Yk/yn8u+ts/7AHKMv+ij8ZuQjn5y/5z9bfa1Q9WfL7++/C/jL1ry7/oX6xfpH2vIM/1jW/r5MHYLbstOv4T/b+3mfcAO6ud8IOcC9fGd84H++HsIXVWku+d8KH5F1hVngJ3I42P9rj04UH97DL6B5Fsl52K+r8V/T3Z1LjrPAysqP5M97AvvCPWr4286/AcrPzH7NrAS+99f+tgC+Gf9egv7fhbeYv+0EvgvkP+1/EvZ1x7qr9f+Y+i9K+evxstS4N30+Yf8cb6/zn7XS49np/uS/1fkew2Y96F/s+8zMn7R82jpt+Wfib68J3ib/azBX33lHpbfT/lP0btn9pnou0r7Pykfv9L4Eca/dJn+ciD4DD3m/U0l/MRPv59xYnXWx0Xn8TmvX1Ln3+3Hz7XYv3VR9hvxB9FPytH/VPlz4hdBLvey787WhVnvnEf/o9Tvgq9TzduXSq/NOVPR/X7x+HwV+++RdTX4k/qPq78Wfy9ovz/55dyxEfhu0Tnkg2AZ7e7LPi7N+kB/jl/GtfTcreg8sTd6sj7KOJL3lHkHtLykAPP+J/2zifpP590y+nM/fXfmD3Tmfvp17Z2undHZP8A/Lfff5LOX9gfCt4Y+Gubdqfzl6n+qv7Y2r8T/6CftnKb90+B7Dh2ZD2LPR7Lfivpr7PtR5RM3IfEUDsVf/F2+iz8fOd6d82LyPyD+osq/Kn9kzkXN21PBF9HfIu/ntJ97whXqL4S/nfSGnAtL95f/YN57sKeZ0plfPylBP30+oJ1Xch9ATscY39dr51blP8w7UXjjHzWTPVaBryE7La9cE+PTq+R6GHn8qvzpuX9G32Ty2448q9hff5TzObCD/Ivxvxc93o+uRvTXDV8r4zej/+V+eDN6hqnXtsj/Yxr8P6FvZ3TPV75dUXyaMez0VXayJ/7u0N4h6sdffUT0S0998LFQe9lXtZHeST/K/upd7S4gl33Qf4n0JeR/Y/xb6fFo7Zcm3x+UPxi++DOsVv8W88rp0om301p/7KuffwO28f0b8r6C/D+QrkA+bdjbKeDJ4F765/PqvUJPK/Wfa8kx78aOL3o3lvmpvvr7gVubL6bir4L2FrDPY+Fvnfg99Jd7kLyzzPvD76UvIo8H8DWU/WzQH6pmv6tezrezb3ne9+L9S/w3OoK7Zr+s/PHSGV8/0n9WlxTg+uzLpI9W/hz0nEFuidtzTPov+ZSA8fsezB4fYT+3KH8EPKcnPgT816Ar54Q5F7w293vo+UY7oxJHAb1fkceX4Bdg5sucT5yi/mb1s76+kD3un/fn0ufm/opdVdfegqL9dz/0PcAesk+8WX7WX1tJZ92V++fL6aMUuTWNf5f2y5HbDvrX7/IX0f8q8+IF6FoZ/3HlZuLnNnI+VzrnoRuNR/EDqQPPe+i7TPmK5PO+9B15Z+Z7afPm7fBuyvsC35uBY5Sfj9/N9DM37wj0l/n0tIfxpxa4O9iEfI7Xb38yLl1TFH/mmgIotZRe3pUeKn8ufhMfq1LilNBT3pPnffnu6Mv78qPIbY12V4OJr/Bu4nHE3zBxsPI+GP/X0U/Wp1mv9vQ9985535P76LX0ETvO/eKB6j/MfvfzfTZ9z4yfAfqOIY+TlNsZfbuh7yzlx6PnO+lD4Psi46z+/h/tb6TnjeSfOC65Xz2IXbcix+L4BXeaJ0aCI8A50T96LoCvM5j4FP3Y2xW+j8Dn2sQH0T97oWOo9A70X3z+Ev/eXjlfwH9t6/7G9N9fe73Yazvj0t/4zP6yeZH/zvs5X859t/IdzEvx941/7y/4WwBOANehdxh5XYKO3vrLy+gfb14bB44FN6ifOCB5j9KDnt+I/xB5zSa/Z6TjjzJSvcTXWIffT6Qvz/tgdhJ/+fjHvxh/dN+L7TNxfV6KX53+nPiCwwqgVHPwC/JN/L5u1hs9rW+OgS/vIc/NeWjOq/B1OfxDcs4J3x6Jt5R5jH2M0U7tovh6uR/JfUgn+D9Uf07ud+AdpnyvrO/Z25DEv2MfuT99MP0fXxfLn5L3aujaidwqKBc/297a74y/vXPeTv4T2PVkcCKY+Baj4Ml5Sxt8TGN/ia+SeCqJr9IZfc+x/5xbTzOPlJPO+jfr3ovYwZ/orWQ8yfpucN5/ab8fe30TvpPQuyz38773Vu5d6VdyTmncvajoXvrv1CePl9CXc4Hn4+8vvyo4jr3k/WLiNu2s/yaeT3nyPYA81ur3L8W/Sf3cf5VDT/yAc/81JO8+5Z9cUoBT5R8d/+H44ZHfOvQ/w/4XqZd4a4/nfXbiRYB3kkP8AXsqn3uW5ug4KuNztX+3W3zf8Zp07mNPq/FvPEPU+1r6RvQu1v703AuBRwY/+lvE30z6R/jbq99Qv2kENgZznttS/1vEPm6Kf7jvH9Png+haIf0mfmrR/4C8U0v8IvRWjf+s+jfHHyr+P+QeP8qBJQX4B/nl/fD3vn9CXjl/y/uMtvGfgifvNb41760FX8Df5+h4MeMz+DL4BP7ilxd/vPjrfS4d/Q9H10Hoyf1W6v+J/n3Bt+THr6Mvve0B347qfWi+WxY/0Phj5HxPv3oLLKu/3aad1fiZqt4N0o+Rz5/Z32v/SvU25X1j3u0pn/P1W/Xv5uidmXfMiSOm/EHkvYG9VWEnG7KeyPku+38l9zbw59ymTc43yeE+9F1o3PsbfNz4l/ht8U8tT1+vssO833nJ/HJZ7uONw0fic7X56Eh83ISPxI+qlP22frGtdPz547cXP75lRf57B5NHTXpJfM/byPGGxFsCs16Lf+HMonE9+6iM763ZT+IKHiad+II3sYt6+Ls550H4a4au5uCR4HV534WuGYnPJ90m/j3avVq9Y8izFD3Mx888cDF9XEl+Wxq3cl7RKnE7fM+7hjHov59ecp/4dsYP9M2ml27gBvZ26Rb2e9kHdsn4g5224E1gTfroon8lPkiHvDfJ/o0cLpK/Q+K5oi/je23552s/4/2B6N3P9z7o3KB8s/iDGR9eAeNvNij+4fRen5xrFMVDGkreD5HHf9D3NPr+p/yl+Nku5w/xn2UHXeg58bby7i/vALcvev83GL07Gtfy3u2f8032n3P5nCMNq/Nv+g/MvUiNf9Pfjn2cg/7n5B/Jfsqi90d22Yd9J37Bdew673RG4Osu+K+k7wk5509cDTDvCa9Db+IgZP4aA99Dyk2Hp1nuT63HEvd1FP1MIP/Y60B47tbPX5NfCf1bekda/P72bPjbxj+I/lpq/7PE20Ffj6L7pmuks74clPet8C0ll+V5j4HfvNeNf/yZ0ol/PbIoDnbuw4/xPe8ecj6a9w85X5xOPveTQyvtL47fiHIvsOPEpzmLXbZlR9XAvOdIPJrcO03STuLVjGT3Ve0zJ4OJb/a6+tegN+908z73t8SPz3ly/GBz/w/ffeDo3L/Bt03WX/SY8SLxTkcn7vAW4gzti9+LjRt5r5L465exnxNLCjDjRMaHvEdv5nv8ZHN+eSZ7vB09Y7UzGP5N6J6D7ifB3E9Ff4kzVBxfKPvRdfBupv/sV3c3Lq5jlzcnXo32Xy+Af87rOkifK7+z8Sp+DbvlfXrGtZybw983/Tv+oOSbd2Hxk8v5W/yBGyZ+vvm9lP73GP5uJMe27L+d+kvQU41dr2LPibPaV/487TSln6Hoqxr/O/hOTJyl+EmQ5zr0N8g6m37yfwi5hzot51PksZT9LGUnc7VzMP7q+b7jFsbvSdFX5lvl+uX9jfwn8PcsfvL/EvELzfnHadrbDN/RpfCT+xjlFhft//omzrJ62f+dwA6OB2eDeadZNu/B1UscunfRv1n/jR6L9beZ3uvpJzvB+wD+Eo/7Vf36lUr/bm/3zJfaq0deuadsgr4nc28OXoG/7eGvje6ttd9R+7n3G2oeL77/K4X+ufCWkU5coU2J/wf/RTlHh/8D9H9N733huZv9nADfA+oPk/5S/Xm+R1//7Oelf0XmZ8aXzYl/Lr/4/UpxfOAjpbeSn3ci1bZw/t4BvzmHX6r/rE6ccfPvcfCVZw93kuuTYPyX8z4272Kb5v103r+g70v58ft9n/5rGF+mG6cmGX9+iJ9b4rqxzzJ5xwwelfcD5PYXeCl9JV7RWPVnoXeJ9t/y/aLMm9pfBP+sxKvIe038ZZ95CDk0p4/H8NlS+qy8/ys6p7gw40cB/HMuXpYd94Y38ZJ7GnfPpp/4R/dKPKz4s7Kvrck/cTNyrr4funO+PlY/z7uB7ayv8n5gH/ZzEb6K45U8gK+8ex2f/wOAL/42WZ+tR1/8G7uTd/4fI/+Xkf/HuAv+x+Fdnv9niD2RxxhwOnx5X3F97lWks97Oe/g1ibeFzrzDvAH+qYkfDm8N8rwEvrzffwL/eb+/S97L0M/18N2Jv3Hk8Qh7zT3oRuncf45kr7mXyT1N7mcmyE88hLyrmSf/BnBr+qyOngbwd9LuzPgDZx2p/BHm0/2M643Ae0oKcGFRXIkO7Klf3lOr/0TizyReHv7L0cc5vncj34zvn5FX7oFz/5v7zMn08hI9Rq+TMr/AOxK8CzwP/ZONHzXgXcGOVhX5+8YP+C3f4w/cmH1sKU7sp+SZfpH4COkfT8H7CP2Wl/8X+uvD+55xurf2KpHPb/RfCT9ZR2T9kHdK9eF/Rvlv0R9/+AvB+Mvfp/0XEz+TfX8D763qx783fgcjlD9Y/U/Mh5/m/RT4tvLj1R+Mvt9yrgp/A+vqy/I+TPpD5QflvB19s0oKcBz5VGGP2cc9TT95L/sd+3sSnjvzLk7/yHi1CP5i//vEPauO7kPwnfhnf+VdI7g0543sdQf2+Ba9/pQ4YNpvRh8HwJ//X8r6M3Fh3gNPZmd5H1e2pADjl/wqeleR32Ha35Ifc9/sX+RPSXwW9SfSX+LDnSmdOHG5H0sc2r/lN4F/e/USf2d79OX/Bg7PvirvG6Tz/zjT834E/pX0fXbWP/BETyWZt8kv6+NPyDXxJ7fNPY166afF/fNg5fNup0L82DJ+ozdxSxLHJO+vOtHv8eSZeNoP5X0S+k7Gx2+J46184hPnHUn2l3k/0gT+vJvpC64jv+PkV4T3P/kfHfLIeJBx4jj1836mMXlPNv5PArMvjT9fX3Q9lvtg8jkRf/ELSxzh+IvVy3tfeBK3PP9fkPg0PYwr2fckXs3O1qsTrasm4OMc/K1IHFfl52rvc+nc9ycORQP9LPf/eS96IbktgG8I/Dlfyv+q3SGd/1e7ybyT+J39sg7K+bfxP/97lf/BStzc/H9CxvX8j0L+PyHr96vJIe8Pu6PvMnSdmPg5+Isf1pPx1ye3Mllf0n8D4+lK68a76OHOxBNXPu/eit/TdEfvJdr7JXER4P+WXed/uEbl/XrimRZAqelgF/D1kgK8Xvo8+ntLumX8nfSfjDc5X837/cSX/CeuJPoTXzLxnfaW/x05Zn39CX3fH/8peoz9D0HPBPXznjn+qnn3l/d++T+FzA/3kH9n8u8K5p12/HsuUn/rovXjFfLnyy/+P8ke6HsW3E4/mgrPoezlHPPOAvAg8qyuP+b9Tg3pxOfomvO7zCfsZlTON/Iekj1vq/xDia/Brm8A44f3o/Ze9j1+e4/F3wW+vFf9MuN/1kPaf4N95B3rX4k3RV57gSfkfJY84+fZTP0L6X8cubVFf+alaTlvxl/+Pyn2GbvMfBn7LD4/2pV+co6U+5rEXR4A5nx2k3VHJ+PORun30Zn1UenECYvfWuLbxB+W3F7KOw70jY0fNnoGsN85ed+Gjh7kfzN8uV94xfh3g3l0inT+D2lLcR9nwB+/lY/AwWDi6Hdjr5ehc23iWWf/UwClJoBdEycMP5uK5LVZum/eV+Bnf3LJe8sx+C1Dnjn3bJj/m1F/cNG7rBbSp6L/dnQ9oP3Eofwg/jXaq6cfdYN/t+xPyaN7/C6l18ifkPsF+OoUxSeprN5I5TOeZPwoIY8S9lNbOudruZeNn0nuZ+Nf1R9/8Zsrji97t/zd0H249B7GgcTfGBO/Ae0kDke//G9j4qYp/4f8a7U3lbzzHjtxTCfSy2dg/i/jG/r+Vf16vtfLuQ84NONZ7AN9uZ87RP286yv+f7ITyKVPSQG+op0x6m9tfZZ123n6T/Z3Oe8Zot25uZ+HZ2Ap+fheJZ34U/k/q67w1pXO/1sVxzfIO9x9Mn8p9yCYeOe/kX95el2qfuIwJP5CZ3L/J+60/pH9V2ftZx9SBp7q6p9Ofokvsyj7cvy9Hr9Y5YvHl+L/Dyz2n8z5ds61v8VfzrevRt858MZ+Wmp/Hr08Dc4Hl8qfE/8J8i/+v8bfyONK/WHrjFf6Y3E828S5zf4q54Mz5BfHF3lA+3O1n/VJ/g/vM+ni9fFuGU+K/O7jhx//+8PgT9ytQ6Xz/x9L2GX8IW8gz6viX6N/z2eX88DKmU+L/q+m+P1R/v864+xaMOPsIYlLCl6f93qJ31P0HiDrk/hpJ77LLkVxXhLfpQx9lQVLg4mTnP8Xzz1eWfXz/+L5v8xz8ZX/08z/Z+Z+50f2mXue3O+sMd6fah6IP3PG4wfz/8LWRV+BpeDL+5C8C8n73LwPyfvexOPPO99f5I+X/5Xvq6Xn63+/ss+m7Lg8+WR//yO5b8J3Q3J/K+f1uR8qimOT+DWJt5V7lfwPdOLPdGF/8af72vzRJucD+E8cqvghd8t61PhxX9Yz0ufJv1b78ZPbpFz8ex7Gd+Lr5v8UE1+3O3l0A+N/lfPGvIfLfqM9+eZ9XPbrOV/MfdLW6he/V3uInnL/tVK9xDUo/n+F/B/E4+jO/0XEH39N/OHUr2V82p8c/g+hG3H+eJx13XnU18P7P/CbdpJoJ9wiPh9LhUKIULJkSYQSqWyprNkipZASH0qoRHZaZEmJsiRbSdYkUSTZyhpl+57zez2ezvH+Hfc/15l7Zq595jVzzTXz3qxS2f/7e2e7Av7QsIDn7lDAarUL2KBOAffZtoD1ty/gcu0HlRewaYMCDm5UwL6bFXDDWgVsDt6+dQFfrFrAF8Dm1Qq4FXxzKxbwZfAl8MBtCjgS/WvxVUG/CeTphn7njQvYYbN/8jdK/2MaF7AKPCcqv1W3gGPB1vRw25YFfB0ci+7h5B+i/yYbFfDXzQtYXXkGOk22KuAX+DkXP3P1f3nDAj6xRQHHKA+P/uljGTiFXi6C77V6BVyk/wywFzoX4Gvipuj5/z3o1yTPpcrPs9sT/OMD/rMYnE6e/el/cY1/1rcl9zD8N6xZwM/o5UrtftX/kvr4068l/tqS70v8TCD3rur/Un9B5QJeho8rwDLtT+PfI/nlFfDV0H8l+Zcrd4N/C/qIP55VpYDXoxf/fJheK5DnD/T/1P8L9ngD/hPgf5x+f+Ov48l/sfqd1J9NnM/8f6LyKnZoja/9wQPAaeUFvFG7O9GfT94L4d9Eu8rq71G/p/ru9BZ9PUmfmR/OUK4DPqL9Pfg91vjpQF/3svdj6B7L3zuAC8Bz+Mmt+r+k/RT+PhB/jTdBDz+3k/cm+v++AGXHgJ+Tr7v6ysbH/9hxlnnqePhPgm8f8h/Cno+x94DqBWzD7p34+xXwT2bfa9jlWHR6kGcb/Aylny3IOwX+Z+nxCf5xI/0NUT+GXPuB94Cvw3/uBgUci+9XyHEt+Vqx28bmvWvYbxx+XkD/bP3ugOcb+r6ZXA20W26c/6K+KXudXjLvNkL/GvVL0GtN319p15q8k4zb3dH/CL47yVtRu+Pg+VL/YeovBX8FH0W3Knt/RI5T0P9a/z/JNYL8i9hrDfnij5PwNUz97+zzEP8sw+/n/OED5VnaH4L/FfifpX8V/7883zF6OB/9Suqr4ftMfLbBf39yXeS7+xd/vUX/jfj/Kb6fb7FfI/i+x99X+HkVf7HfndrfDY4FT8PHZ+QfYh79SrkP/PHffvy+En+diP+Mt4zDjLsq+N8K/5eQrxY4kn7PN4+cB/5knA7DfxX81KLfqfQ1qLyAO7HvXHK/r93T+GsP35Hg0/h8EP55+Okb/vnbdPx/bb7btwBlDcm/TYUCbmk8foSfneG7FP5vyDUvfqs8Df6Tfa/K8X2K8oXwNdW+L7s1U+5Bz+v463v8Y7p2c9i3p/9XM681pIev0duEv11EXx/gs0/mV/J3Bjvxk4Xs9wD9P4Df49H9GNzB/DWOnl5S/lL/aeSdbV5+SvlV/b8yfu6Fvx++L8bvufz/ef//kl564X80//uOHr4Eh8A/2bpyuPm1uXIr/jTI/y/3/9vAd+If+FtvHJST60D4z2GfPuwySf1m+OzJHjuobwuuVv8f9AaWwae8Y3kBl7HL1eBCcLF56DH+OA18EhzNzt34RT34JrLDTei/ju5rxv8JysPI9wG7/gL2B09Xfxr/Otm4HQH/Y+oP5T8/wz+LfrZG/wv2fVb5RO0PZN/P8LMCvBs8iP2G0cdycCrYkv88Tt/nlBfwKP53PHobsG/W/7vR6x/6T1e/L3rXket/+Du1ZDx3Vf4P/Bvpfwr8R9HDfHpY5f/nZVyh/5RyY/rdDrzLONgH/T3NU9sat3uTv77//2J+/YRffA4uiJwFKPuI3o9Ufh3/7YyPTtmnKb+G/iz9zjFeBuvfSn1X/rKIPz5Hj/XJf535bih4LXipdheYj0eAs8Cs786gvw/xuze5tlE/nl7GgXeC/fHbxPjYGTyY/96Ov6PI92W+6/Sf9d8y9QvxWxM/d6M/hP0H8fOj8Pca+t3o9S56PRbsrn4yfxrLjneCveE5F/5Z9PsA/irp/ye608sLmH3T/uQZzD7bmrenwtMR/xuS5wj0DtavDvuOg7+6dtfRx4noncGec/XvQ5529LdCuRF+sz+/Df11BSibhL/7ledq39X3fL755wH2q0zOieSZBr6B36b4q0H+E83TB/KDrL+P9D25Bv014Gj9a7HHevL9YL65Xv/Bxvs6cCX9XEH+aez3jPrbs37V/0B83wZ/E/in61/deN8dvJE/reS/Pxsvw8FJ4FXk7MDfdkV/mfL36NfBb392b0TuK9FPPKiBcuJFiQ9l/7E9OUrjP2vodw44mz+8l/kBnweyz9HmrzbwdfX/dTX/yffV/HND+jwTvkr6VSVPe3J3zLpC+/WJ16l/tyQecgL/e4J/7+r/p/LHP9Q/qP+T9PIte1eH/yt+u9L8Pgf8FJ8j2Huy/jcoH0S+ven3E/RXoXck+lfBt5zdh4KT4cl+6hnyjUE3+6sx+J0O7+aJy6nvgv4b/v8WuT4FvyxA2Qx+9SVYAZ2h+v2cuFrie/D/QJ9fkO9K80xX/HbiLxXLC3hD1jfKL8LXl799hM7PysPxf572D+Dn+cR/6D3f3cy3p5PvSX47DXwCfDb+x+/eBC8j/1L8f8u/a/Pjm9mlKn6O5e8L6eEufO8OfwX8NML3KPqZit5A69NXrZM3VG5G/z+jf5H/t9buXPJtQX8d4NuPHerhf4usn+j1QXCB/svV98dX5o0/wJsLUPayfiuVj0HvaeUyfjsI/aPUJ/6VeFfiX1fSz0X0/RU5ys2P+6Lfif0vhndo9JfvJP3sRF/PstPZ/PNU9pmcfT77d8r3Tr9e+d6x0yLl5/GzBdgcvxXpdw98DMm+nxz1yfex9j3r/JPP8HeT8XFG4h7lBXwU/cwrP7HTj/R6Hvwz4e2Fv0OV8325PvEweJ9E/130J7BbY/VLlK8h3ynmzyfV98LvUPwlfp64eTVyJH6+Kb6+p+8B+KsC/8/mvzX0/pPyK/jrx95HwncYuS5RTjywD3wX0v94/fuSpyznCMqf4edD47YBOeuDQ+ipPn+qRO4pynX1/5g/j+TnG6Cb9dlj+B+r/eKss+nvT/UPsNMx5QV8Rv+u/v8u/3pb+/eUd+bXjaIX+Kfyj8H8v732I9jnYny+p39j83It+nwj9rUeP0//rJOyPjqOvv+T+Yycnyvn+5vvbr7D26Ffh388wC82Mt57k+M+/6+h3TKwVnkBbytA2TfsuyX7LqG/DvxpGHzf0l8z+kncLfNA4nEZ//lePMfuM8GryDEl8Q36qcUPGun/knYvk6snvmupr0h/lem1u/qN1d+r3938+0r45qi/Fn9DwQr4eweenfG1CziePgewz0XoDkSnIbxbgS3wtx94Nfqb46cBfVanv3XqK9P/bubn4eAh+NsDfzv4/yr+1wocA//j+GuNv6/gvwP/F/oet1Huzb+Xof8Zv9jJfvt4/tMt9uWXVyQuojyavqoZ91fDm/PhS/jPSv+/gBw74KO2+tnkHZlzGuW91e9Pfy3INZrcV6lvwL8+RWc5eAn+9kl8PPEPdmivf0v0Er/bS/la46+x+esv9KvTwx3614C/ceLJ5Mt50nJyLwMb5Jwo50zs9rB5bCw+8/1uQN85/3tAOed/jY3PbuaR643v7f1/H/PX3uAsem6a82/8zCDXcuM78bZK+k3Sbz9+cyg4D93m/GCl8bOL/iMKUFYZXx2UGyb+x//6gZ+Dl9NPF3r4gV7fpq/Xyf86vDPAZvyvBvm2xv+dWcewb//Ev+jzFHCR9pmHE5derZy49Ks5v2C3xvjcEMx3eCY7tKbX2823C7Q7J+ed8Wvz40/853f8zNd/ADl7a79nzknJVy/nr+q3oa8NMx+WF7Ad/H/5/pWZJyqBv+N/e3wuVm5hPP7F/tuTfwH6i3M+rV/WrTmX/gI/P+q/OvF0dE+nr5UZr+Rth+4Hyj/pfyO/zLyylB1PJV+15A3w77X0f3x5AU/Sf0v2zXp1Hn2tJd/3+O9Fzlb69zD/fK39UvJsnPVdzleyLsHn49rPgX82ulXhnwX/afCfyv5V+Ms22sU+O2e9Td8jYl98J57ThX7e5r+d+Peu6ByXeCL+DmKPBsZNa+XE3z/Fz3fgSnz9lvM/83EV+viNvm9Wjn4v034DeupMT3fwl8/VX1WAsh/JV4s9N6b3+fRdA/5J+J0MTgQHs/cs800b37+HlbMePxu+H8g/Lef9+Blu/ByJj6HKK9DfN+fa8C2g/3x/PsTPQ9kfkSP7l834++3JxylA2Ynkv4++1tPTm+i8gv4L5uM79NsA3x9lvVQib/QwTP974B/NHgvY7378naU8Gb6N/f+G5H+ovyD7LfSb8J976OOe8gK+Rn/Hqs/3IuvYOWC+HzcYF3Ph70yfl9PP/ez2JPvU5o9T8LveeqcR+BJ91Sb/IOvG5uaP0vyHb+g9cZ21yiejf6LxmDhz4stj2HMd/taDP5KnJ/y/J7+BHu9NPAZ/pfGzrJsrqL+Afl8CLwTv0G43/fO9WlOyf5zO3/PdyXeoKX5bGL+7lhfw4eQVZf3Lnybwsz1K/Cv5Yy/w//3I+WDip/C/RZ8j4U/8/g3lrLu7Gz/ba78DumfDv0S7TdTfS57d6aURPzlG++zfsm+b7/+/kS/n4jPBR/lXzs9K/eMc+NaqP0X7w+h5Gj6Sp1BJeQr9V1RulvNy/pp41sPm4duyf6bPXZTboP9f8u9Hf7X0H4Lfd5SPw3fOV3OuejL7jSpA2abZP9PT7PgXuTYvL+BU+q2J/kr2eRI8CJzNvpVjf/3L0a+t/6PRZ+KgWWckDxEs3VdmfHSAP3GH0njEBvB1Vb6MHn4kbyfri62V+5i/sv9/A75z+fMf7NebfIvg/4o8c7WvWpIf04pdK5mPJms/T/+zyFEneUtgDXyfWV7AM+jrF/wlPpv9/z3Kic+eCP8y/S8n59Y5TzBvTuCHU7RbiL8d8XU+Pibpl/3vOvR+BX8DH9N/W/JnP7fMeFmo/9El+W9PkeM79fsn/yPn1uSeqn6V/rvhe1z0kPgC/pOHmLzDBfrPgf9g9RPwfX70Ry+z6akKOAyeddb7t4OPs/Pr/KCC8XMEvMexx0E534SvLTqV8TMI/2/lfDNy4esZsDp//A3eOfy0g/63FKBsBbxtlW9J/F//NeBtxvdDyV9RngJOAkcnfky+Kvz6Bd+VHvylXPka+qiZOA0+J/gu35n4SOKR6v+D76OSN11ewJPoL9/njPMTlGei/555t5p56ZEC/P09Sf5HV3jH8oPkg8zhr1kfZr3YGP1Tk1+h3/jkvYEfkjv7wz/Ilf1h8Afvcco12DvndskfST5J8kdGkvNL8qzAz2Dth/Ov/fjXn8oXwn85/WZ8P5P4B//6kX2T/7Uefw3R2z12xn9lcr1OP9k3HgFvqf1r6vcyOvPh/wb/r+bc3bjqBa6lzw3RvzzxNPqekPNd65Xu5J4KfoTOjvp1AKvxh8wvB7Dry/TaKeey6t+jx3xX+xXg7+/rz8qTEvdVTn7VN/ivhO5E/3+AHn+il/5gHfJ30S7xu1/pcyPlxO8uzfyl/SLy34G/V3IvAKxpHD4H32jj5x56uJacp8Of8fIn+WYkP1W7uuaVa9l5NbhlzjfFR97A35nKWd+MgHdP/Exlh42TX0K++9nhAPI9mPyanHsnH844HkX+5NvczB/alOTffG/e+BW8C9wz+1l2S37jcnSOJl/ui5zo//3xk/3JJfT3ITnrGR+/4n8U/a8GL0k8jB5b5vwP3Cd5Vuhl3s14y3z8TfZB1s+NYnd+ti/+tqPvtjn/wtdOiX/Dn3PYPdHdQ7v2BSi7OPOt8gT8jGKvxHOWsOcg+BP/TB5s4qCJf+5Ib9fgbzE8F5Av64et0ds9dsPfRfh5DTwUvAK+BvhLnuYRyvk+/aacvJeZJeeTX7PbYDD7gJwPDGCPGeCV4FL66pj4hfn3KOVr1P/Ibk0SX/R96Ej+TfLdTbw63zvj9C122yz3vpJ/r/9t/H0d2NZ8+rT248kzDf1+ytlf702PdeD7lL/n/shEdq1Jby+Y7+/S/jv8Lkl+YvKo+MdI9p0I727azUT/Yvjupa9P0GuD/oXKteDtTl857+oD/wnwTy0v4CtgzqeuKzmnOjjrE/PN7ewyBtyL/9ah13H09kzJfY1R5s+RYAX8boX/g/jDffg5WLkn/BOMl7vA6ua5X9n/DHr/TvtH+HFn/NfXr17GIRj/yX7tEPp7NXmG+BtIvjngqfolvzv3125QrgdPD/1/yX0xcB04WPu19JR4avLrLmb/p+Ffyn6ry/EZ/ev/iP9fn3MCfpTvW9aHWS8O1r8h+x7gu7uF8qX4T35q4qGJjyY/tTH95T7XGuNxKvp7kbcFuCdYJ/nV5vse4GngW/Dm/DX7uvPIk/1d7rf8wd+Tj1WT/TfD/yztbsx5gvqm5B0D/2z4c3/mtJL8i+RXJv/iAN+bEea9C5W/yD0P8cBq4DT2uQa+FsbFT+bBOTl/JN++7HKwcXkOva1Qf5l1z6Vgx+TZwP8c+XfPvbysb8j3rvF4Pria/P9T3wbfbcGDwe3Q2Ua/BeTuRY4K+Psc3/vT83/Qvyn5b9ofAV9n5XHq3zHeb8r9Fe1u4X9Z147Lfjp5pIk/kyf5Fe/yj50Tv8ffNua13AN+ir9v6v+ZB2soH5b9RwHK2sD/hnJf+HM+8nHGD//fGf9H5zyPHMnD21X9t+z3u3b7q9+DfDMT30t+LPmvRj/xv+ThDzB+m+DrUv8/F97xGSfKuXe6LvdPk0ej/h3ydgWHgKNzD8F8m3tGBynnntF57HGBckPj6j7y9eRv7YyDNWAn/L8CXoafu+C7NfFr8/ZV4BSwj/aJFydfLPlk49G/JXkr1g1rlN+Lf+mf/cvTyfeEbwK71EbvJu3/1P4p88sQcGP4M78sKcD/l7d3t/llEb0ekvbmgXPwl3zDGVkP4C/x2Qfp6xb8TdSuGXzxz+SNJJ4W/4x/bKB/6f3kxG2SX/FC6Kl/UH3ul9XQLvfL1ht3063P/kweP3r784+q+Dgg523k+9r8Ws04rwrm+7cSvk3xfXfuo6h/HL8D6OVD/H2K/vHJjwE/MQ/uqH0//AwFLwRrq39av9HmvZ3Br9j5QeN1OP2MovdXwJeMp/hfe/h6535kzmPp+118Jz/54gKUTQLng93IGfslDpd9T+w32nhJHPYI67F8nx/xPe9o3uyk/7H88yj6bw8+b368OesP/vYlPeR+/1j2SR5Q8vnHkneG8n3keBO+68oLmPvjq4y3ueB14Inq+/CfcxI3B3NPZjH/rGQcjlI+l70S309cf6lyDXzPhu84+J4rub9dlTx7a38/eQ6gv17sc2vuI+XeYtYH/Kklufvwv8W53wx/7o8+hb8G2pfmB04pyc8frP4Bcme+Pp/+c38n93ay78v9nePIs4Qc3/KP7H8HGq8T/yU/6Fr0Piq5p5v8wNzv7FySP5P1fc6Xemt/uHaJf32jviJ7bkaep/R/Rvklchys/xGJc+s/kp5PQWdi4vvGyzbGTzPl2+FrSa69wb3Ax+mp9D2Kz/BZF3+5P14Dn4nntaTfR43LkfS2F3g2/ieqfwTMexXtUm++eUF9v8RX1Q9it/7GR3d+0okdjsTXQPJuiO9PwZ7oXaX/QDDnR7lflvu1N+XcjX4Wm48/gH8BfE2yf9E/91dynyX3V74hV9ZLM+n3lNyvMF/MAAdmfwEuZc9b2LcqeoeSv3sBysaDn4A/85ej6WcG+UrXv7Wtxzr7/v2mPBz9i9ljvXGwDnw69/3w9wO4GJ//o7/3+e/8vCuS8Un+Z7V/Uv+T8bdb7leQYxF+9mKfrNf3Mp+Mw0/inPvq34a9epHref4zOfMn/Geje5ly4qvdjZe8s1H6vkY18tRN3gE5E/97lPwD2CHnnpXxtxC9D/BzJ9g45+foVgY7g8lfW2DdNwY8BTwb3V3xOyj3obKv1v+vknVRWc6rkv9qftieH+ce9f36N8r7NPmuQ5Pve0X+Uw5uC+Y8sB69JH5yJ32cTA9Zj2d93tL/sz7fU/0+6v8id/PEP3KulHtByi3Q75F3MOj7+JyDKl9OnxdlXWqc5j2j5Oslfy/5fMkPHp57Cfj+Tvk7/PZEf0DuV4Hb4q8Tfe2qf0X2mUz/uY+e++n72WfkfnriC4krZHwlvtAW/ewL+/DfTuQrzb9J3k0V8j1o/Xh/7n+Cia/nPlHmo8xXuV/0GP9aap5/XLk6/g9JPhq87ZSn00fm/fronYHPrN+7aH8vOCvxIvxvm/tV8I2C5xP9B+JnF/6zuXLiZW/ia7X5a4HyHex3d95LIc9DsTM6zxhPw/jZmcq535p48dXKiScnfrwxe+8KjuQHefern/GV+GDihb/znzu0P0T/ecrV1F/o+3wAvt9np+7JxzW/NqSXLcHj1B9Ib83ItS8+luD/UPPOKfD+Qg+dc8/BfP0bvb6t3BV/ExNvB18sL+Bf8Oc+6Xj8j8m5Av5OKkDZq+DT2h/APvVzH9C6pg3/yfla7u/8Qa6F6K+B/0T6zDsfS+kj8d/9jcsJ5Do6cV74Kxn/Y+ipIzgQ/ka+a1+Aie93Yf8Zxvcq7X/F34v0d2zev9P+Zf2nkb8nfnqAL6M/M+cr9JN33/KuXd5/m0g/uReX/OncTzkJvZ3w8QSYfJZ5+rdmv61zTpH1FLtnv5J9zBTlBuxWH1yFz9yzv6sMH2CpHzyU8wmwXe61wT/OeMp7RT2N117qH6LXReROHmny159BZ1f1N6vvqL6M/VuW3IPI+zd9+c9b/OopfpT7/5/hp0buj6KX84bkX56mfe4v/51/mfUrOucl/yLxX3o5wvyxZe7tqM/7gnlPMO8LzlO/k//n/Y7F5u/kH45M3JG9rwITP9mEfrtoPy/noVl/6f+T+ju1z/lns4wn+P6b/Ef1bfnJHHAG/bUk58MF+Pvdlv+ByTfcg991MG/kHv3z+PmE/+Q+6Hj89oj+6PdG8M3EIdV3Qa8T/k7F1/P8NOuZG5Q7kzPrnSX8ZRfzfB/l+eRPvH0teo+AE/hfzoN+y/lV3k1Qn/taub/VN/l48CRfrSz3ksm/dcn56bdZ5+WctmR8/QjPOP1PyPknf21K/5coH0iu5uz/Jb9LvC/nXVlPPKFfaXxwPH/L/e9tcn6V83b23pa889k74yPx9OR7nlUSX6mD7zPw87P6rL/q5v0A8ue+X+73Jf86edff0Vfyr4/RP/dick8m+4tVeY8SvuQTJA8xeVWr844KeBx+DlHuol3p+xg9/H9L/18L5t7+K/zxVfC16v+sj//PAkeCGQel8Z7cExuf+Ce5k0+Ud4Ja0f/75r3Dsq5VbkU/d5XMf8mXSX5MF/1yj3cXMPd4m/GXj/O+JfpV6LdW7s0bv+3IVUn99/rvkPup/OgS8pytPnlopfln/fl14qJtjNe8h/oIebYj32jlFdoPybtE1gdH0G/OWxNvSfylue9U4i8dfe+nWwd8lngE/XyInx7G4avgx8mDJV/277NL9u/PWh/k3PW/+M/7NnX0fxzsol8b/vE1ef5tH3WMfmehWy9xQvjfMH7ng3vqfwE7lBlPNemxt3bnJL9Ju1vIm/3wvvhM3nnee8g+M/nnW+Ev9z/z3kDeGZhPn03o/43k56v/BL3b4Dne/5P/9AQ+T2L/3NPP/fzkWSa/IvmEOV+dT/76ynlnIPHPVckL0/857Ybm/Tn+e5lx/iI/O6u8gI8VoKwVeDR+Hoank/kk34l8H77F/wfk3ivnjeTPOyt3s9sI81g38k9LfM13NfeCck8o5wu99T/KuOiF/g34a63/3ub9L8wfA9B5jn/3AZex88isj7Uf7f83ml9uy/mw/z8J347Jj1Degr9uCb5JXy3yfiV8n/KTaeR6Fv+ZL5qaP3YDM3+Mz3szyruw/2HJT8v7p+jtnvUMOsvoayfjtD0+a+L//OSJsFvyg4eQvxu99wBrgrlvclnuJeR9FPAk+J5FP/dhE3fsCo6wP74xdsk96tzvK0DZIPPejsp5ry33ebbPeWzu0cG/gpzZj5/PHi8kPpB3q8oL+D5976Q++YvJW7wV3cQv/yDfXxv9s92VyR/IuSx9LKOvR3I/B/4Fysm7aoH/X4zXtexWj74+ybth8A3Nuyr4H4N+pbyPkvg1eDi+Wpk/dkH3Xnx8qP8Oedcy+ZI5J8v9t9w7yLoWP+30z73G09VfqL4f+Raj/5p2u+Er+8gh/p9847yXdR09H0a+ruaJAeUFvDXrgQKUrQFL348dl3fn8TdGeSH+rmefvP9SMWX974OvgXHcBLwIv1XZK3nYpfnXv9PHDeR+J+8twp98sNyfzXtXyRfb1LxZvyTvLvlJ2e/lnbnS9+UG8ts6xl1d8AT0/zAfLaHfPcAm5GiL7274LI2fVMdv3h2pHjurb4LfCjnvTp6O8gj++i24eeaB5IfkfXjtX4dvZfLvtV+h/2zlnnnHL3lt/CnvoDzPv7N+aw+uo4+s5w73/0788Abl5HO/Q//N6WnfvE+mfgd6qVxewI74Py7xC3RyvzXvI+d+67/ZJe953eS7WAbvCOW889AP3o/ynVffRf+WyjOtM/saH6v1j9+eip9S/92DXu7B30Iw75g8x35NtW/PLtNzfoWvF9nj9Ny/UZ93kEcTM+8l/6D91vTfijxbJa+O/n/M+yHlBTxK/QXwz8bfan4yAH/Z7y9Cbyt8JJ8177vme5HvQvLg8/1oSR/14T+dvvI+YDP85fcOZpPnT/3zHuqfYPwq+aPrEi/Qf3ny9nO/Gd3f1b+X74n69uh9k/uE5B+N/nh+cWvuHdBz3mc7jz8eWpIf1rscHf2vS/4zfxtFb7kfujl683POjL+cL+Rc4Rjfy5wvnG785J3PM8G897kQ/dLz3+r0VFc57zlVRH8S+m31H2Z9tSeY/WLeZT4M/rxz1RD+jfV/KvE3ciQ/Oe9T3pW4SM6NM/58f7ZM/Dz3CMi/VL+r0F+Kr0Hwr818o35h3ovHT+7/5t7vO/wx64QL+Ou2/LgueIL2W6DfH76N8Z/8tmvJvx/6F5nfRqhvpX/m58zXmZ/zOwbZ9yc/Ovv/Z7KfUy7H/2n0l/drfoKnh/LZ6i+13s19wav4w2r0s15+X/8z8Zf1dPanOZ89TPuczz6U+4jwTeFf83KPBr28B5j39PJ+Xt7PWZfzPPjnwX978r+0620+TX5uj5L8j+SDJP4wn1/1zzktfd6UeGneffRdzXuUef/o0QL8/c5Dbf6Z9x2S7598juR35B5R8qX2165/3ilSXxHdxfnOg/uw2915v508g/FXnjwYcmfcl+ZDNyov4Fjy5p3Zpvq3ynqKvfNOY5N8H0reG8o7RHkvJO/Xhk5jfOQdytL3XVagl/VpXfPNE+A0cGLy0OljvfXPZHAf/C21ftwA/zuQfxH5Ej/K+0z3Go+JH2V/kfuW2VfMwt/5yWsCS89Hcn9mKbmXlhcw36f70ct7APPVZ/7P+6q9wRPA5HmPoP/kVyTfYnj2PwUoex+cAlalv9rkP5z+K+QdKPx3+5f3Ox7J+i737fPdIOf++m9lPFyN7lFg9v3Zv2TfcqvyZYk78/M2YO5ft8dH7g392++85Px+C3prAOb8Pr+HkN9JyO8ifJH7C/wr71Ss5F/Ji859yr35ffKR/s5Dws/X6J1AP9eV7K+7WRe8XbKeOrVk3il9/zbxnJxntE68jv/kfc371e+D7i7ke8b8udA8sYIe9zLOcp6R9z/yXkXOO7JfORl/Hekn+5dDyZ188Zr5nRHl5C8nX3nnkvsbE/E3CXwYzHtRx+S+DP19CT6S+/P4+YqdHtM/7329HPtrPz3v0OZ+B34HkSP5t3tpfwK9JP+sNA40l54y395Oz98lblOAv/P2atD/2+hdpJx7sGvBFvmdK/3yDl9b5cHJPyZf1ol9lfvlfkTmCXLlXkXOr+uV7LuzD98O/0PR+xhcyx+uSPww+z/0sk7K+qg0/zJ5l3nfv/S897XkEUW/+Q6ob5P3LtQPS34oPt7GV8vc02WPdvn9PuXt1H9FHyflPnm+t8rbJf6Q30nSr1vOj/K9ARfw97wfNsh68oCczyj3Ik8n8iYumzht4rN5961M+/ezPsLHpewd/0s+cvwv8a7EvxrnfSz8512p3NfOe1P5/Yn8Xk/2pdmnZn+a8tX4+aHuP+tfz32QvFuPn/y+XU12SXzi1rzTrD7rwuT9lq4PEy/Ne0iJpyZ++mzyv3JfJPlB+f6r/5Af5B36d7M/y7vX/PZW/fM+/LXJFwSngQ/lnJZ9kg/VLu9eJP+Zfv9IfD/34Mn9QMl6NN+H1vB1xn//cnJrn/1uNf7QXX3uS+Z8dVUBys5KvpNyc/6Q9zs3IFdj9tkh+eDJ/4Y/39/LyXcjfspynq/dLPjX4KcVvZ9Evk0S/zaehpjXG+a9V/wnPpK4SOIkq+Draj5bYh2T89q8r5z3J/Pu5Ef0lfyd69UnnzP7h2fR+Z2/3ee7dnHJ+z5rfL/yu0RzyJH3GQ/K7x8lLoTvD5NfCO9o8/sP+L8O/pH0fRi8h4MbJV9Jv/P51Z1g8rvy+6KD8JPfGc3vi/6XnXcCE384EP3J7PNK7n8of0FPeX8l767kHZbMz/ndwrvBFWB+x/Dskvu1ee98OP7O0z7rmOrq875d4inJi0xcJfGJ3HvPffdWOcdUn3dvkk9UO3ko6vO7PomLNi+Jj+b9hPyOSGl+xHPmv/yOZzmY902fti5toV/OC3L+eDC5k/+Q9XEX+mlO331yPqBckf1ynyX3Wy5Jnn7i9/T5LLkuK0DZ5smvQP9B9PN7jnlfcqpy7gXWSx45ffbNeRL+9sDPw9qt58+rla+h/7OyHlP/Df/MuyEdcs+VPrbjT33g+T75/Fl/s88r4KfJs6WPL+j/leTz0cdc/GfcXom/W5O/wf/Oxef54H7k/Rm/P4I7GUfrs44vyR9LPlnyx8Ybb1cYl2OVK8euBfj7Hu6l5QU8lP0Sf39R/xfzPntJfCjvL12RPCT9c794oP//Ra/NMl7In9/b6EL+teoTl9sI/kPgy/ufeT9jFjvl95yTH3aY+eo9ejtc+TD9s57M+rIiPWZ9OZN8HdU/lrgPOXJ/PHkNyXNIfkPeI+/JX/Je+avgoejn/YFluWee9UQB/t4fn66c34vcA/1m+Mt598jkh8Cf90TzO523Kf/buXB+f6VjzjfJk3epz8j5hPoN2GkUfurSb96VG+H/LchVDs9p9JN1Zd4vzf3Kdcbt9frlPebEC/trf6T+v5bsr/vm+5J8eHwlPprfL8r36EX6ye8Y7Zvf80R/be7V4a8m/E2Vcw8++4NyeAaDL+a+Jf4HkC/vKw7ER95XfBL9vHv2WMnv6Q3hR6+D9ZzTJL6b8/LB5Mp5es7PP2C33Ottgr/c7x2dPHL9kscwE7/94P+e3vO7G7VyPmf9kd8/6We9kt9B6Yhe1t15/2Rv/bdPngW7ZT6N/u5JWf/S9fghyQ+Cd7n12MHky3vMeZ857zXPoP9Fxl1+z/GsrDfIORe+X8zPLyn/V/uh+OmW8YKvTvBnPZz4VP2S9XFV8uWdrLXwvZZ3AxKPhP9nenoq8xd+nwZPyn4i48H8OQ/8wPyZuM1L9Jd753OV8zu9WW/8UZKnkPyE7flHfnet9PdF8vvu+V33jdTn990TL8r7sDeDiSfl3Yp+iWfmdyzY9/8Ag7eOhXicdd13+NfT/z/wN8pqoYyyXihbiqSolCQje6WFUkjIisgqCRkZlRSySqElI0oSksgIyQ4ZEZWRrL7X9Xvd7q7L8/p93v88rvM+5zz2Oc8zHo/zalyl4v/9LVu/DNetWoY165Xh7puX4WXbluHKLcvwvR3K8KxtynC/7cqwzRZleN/2ZbhLLf/X7nPl70pl+Ne6ZdhR/TrrleGP8P2Aft06ZbgZ+s/sWIZbrVOGD65dhtPw+R782ylXwu/n+JtLvssr47dGGQ7SrnrdMuyh/drwtd26DM/W7pvaZXirdp21m65+xQZl+BO4Iz0fod3LG1UgWAa7VivDgeT7AH9Po7tQuQX8I9EfRs5ztTtE/9vx9QV9XrBVGf6g/w3K3dSvS88jlWesVYY3gz+DB+L3A3SfIM8O6HVB/yP2nUvuo/H3KfrVKpXhw/RTXfle7Q7DzxT8TORX/dlvRs0yXMivNtu0DG/Svw79NONfx8BTBX878puP1Pci32Hk+ct4eIidfuWffeBfwh9rkHtT/5+Lz+jjFPgX0Vf08x28rfhfe3odpd3x5OkF74bGwyzyDyH/d+Cu9NAQ/3tsUoa70ffx+NiIfw+i78s2LMOT8VNV+y3ovy+97an/+vrXwddu6j+g7y3V92f/evidvXEZ3kz+Jeaf/en5a+Wd0TmA37QEW4BvqR8N/xLj5hewhvpTtH/SuOmivIf6leQ/hp6uwd8L+J1Cr3fRa2fwIPZpo9yP3DP9v0S+W4yvXehzJX3NgH8Y/1iHv2yBr0rKbfSPH9WDZ1f925P/IfRm0vvDyov48/ngCnAsv32Lv31VGOfP0WPtzcqwuXY70Udl9r4M/bvUfwHeSg+/0O9g+o2eJ+JvlPbn5jvA/76Ffy//bwiuxT8W0NMD4Ar6esn4eJ6ejkTvKHBncJ/4K797BBwCvoD/q80PW/vOzFZ+S/97jM9/wAPoayw7bOj/3eltD3yewn4DjK+7lftmXle+kD8+7v+naX8X/Mfi9xjweHC34Oc3tfRrxO7x/xfocyPyDtSuMfwT2GM37Ruz1yxydDdvXI7uV/D01H8cf1qT7w38m6p/zXj4uVSGy4yje+GvWeD3PfPvG/BVGH+LwevoeRX8bfGb728Xfr2J/g+Ydz/hpwPMD6+z7yXo1zYOP+Rfv8O/LP+Hrwf5tqX/dfWvor4S+aZlfiTGx2A38Cz9++Oji/4voVdV/8eVv9LuJvY40Pjaif/cgY+1tGuivkG+y+x2ILwXqL+A//TSP+uCh/DX2f9/zjpA+x21q6Z8M/6b+H83dIrfx07wbaD+Xvaaz44T0b0Ff/luVOGnJ5H/fvV30fdAfjYVvTPxs9B4fga8CLyaPLX0b0/Pm/l/M/hP5A998N9F+/r4vIc8s0plOF15E/2H+y7dBP8h8AzS/yfz1cvs2Jv/N4evee1Ce/j3hr+6/p9mfW8e3U7/L8xXp+a7Yp5bSf/flEHFveTsrTwpfomfwfjrZJwdrn65+aU1ukuVD1K/I3udq99s9n6YPO8a17eCdcHNzQ8bkX8sfM3I31X9LfziNrAZfieWynAOvxij/77G79Xkv8j8vRSd7vR1g/bXlUHFavBC9ntZ/43xez3Y3/z0FD96ll7XwPe1/g30/5HeloM1ybGp/kPwu0D7I7LeV/7B/DsbvBh8ir6fxPdI+G7FzwD+U1X5cnp4B2zNX07BzwB2/BP8gv7fJ88m7HknPS5W3pr+t4VvZ/Xnq3+Yvl9Bd4nye/oNN14b8Nsm4DT6/Fi/GfptQP5O+T6WQcVr6P+j3Jz8+5LnBnI0Un5a/7HsOpdd34P/LPqsZ36qzB5nGef7wb+e8bmAfTNOtyuVYW3jZb5+g/GR/UXtrEvR34LcWWecQ54rwKHsuT3+Jip/YNw0of+L8h3gT1vBl+9A5v9r4HkZzHp2qv7zzAsryTnMPD5V+7HKk+n/UO3uy/xjfsz3/nTtf1TeE//rkftCcHv6/Y0+f80+gt/30/9XcmU9vhJfT+n/IL1+yd9G0ffv+jfD7zn4fM06oiU+5vCX1fA+Bs8/+h9A3wuM49/xM5D8u/h/DfgGw3Oa+sxHV9N75qmfydMS/d785yjz6yL97+Ovc8COYE30PlF+B7wm+wR8DIB3/1IZTmOPEvwf4q8R2N54vFH7x/Sfwa+rgA/Tz9v8/2D0RuV7rH8X+j4F7ByI/ivsPh/9V80PL/t/e/i60N9a2W9l/86+Z4An8p8d8Hmofkexa1N89tV/AXlXaF8DHzeyT030noKnNrma4b8ye3UAx5tP3kZvI/hn8cucu43hvzm/+0T7bdTn/K4L/VYCK4OPo98Z/lr4H4//5fqX8DNVvxbW07ui95PxOgmsS++D+NcU8g+kt+H5zqK/r3lxArs+mnV6zhPNLydl32O83oa/S9D91Hf/MOO0XqkMm7NrB3AsPV+g/1/k6QwejO5D+Mv3e7R58Wpy5/vdxPfxEHqbwP+a5rtJnn7G6aX84gn2y/dkfBlUbFP4viykv/PZdSQ+BuD/cPytpb659ivVN0B3f3x/hO+p6J+Abvz6ceX49wX4WV04P+hHjlfx01a5FT/vqFwP/fOMq7rKWf/9hv8rzYP38I+mpTLcgN3b4edw9r+SHGuze86Vi+fNC+GvxB8foZ8LlO9Dry96q8Hb6a8dv98PXGQctlV/Gb6X0N9N4FH4a8XvTgVrgj3ZI+vq7M+L6+tDKtTTezVwtP770ccKeDbJeph+G2p3M30cTB8f0+eV5OkBz9HKvbJ+yv4Wfzmnn0b+d/D7NjgZvdf519/svQY81XhorH9xfA2gt5zPPaD+2cwXOddT/yV/awRfd3imqz+EfWOfd7WLfRqZP27mZ3spX6j/ffxqFbq/g7eSb23r0zPI1zb6VF6J/qvoL0U/65d26ndUXxP+HfG3M/mH0fts/z856xn9sy5ar7A+mqD/jdp9yj5/Zb9uPORcpn+pDOvpfxG6p/GXMzNP4GMa/exEb88qD9d/Cvpra381+/y7f1Gfe5/417P4PBm+vfnnNvx8ivqu2i+P/vw/8/fP8J+R+w/1F5E/56b3gG+Cp/uOTOZfOS/YQv+l2/+X77Pp73j//w3+wfRyNH84BjyK/dbWP/u9F+FfBM9h5otJ5J4MPstuL/h+n+r7c6xyQ/Xfwj+f/J/lHg79j3wPPwRn+37vzn5/oVeBj3nmwc4536evM8HhYD10rjTe/4b3PHz00v9M/NWn52bkfhy8gn3zfcj34hv4n8XPc+A0sIROvk93w5fvVL5P3cj1ie/GEPJWUX8zun/rfzm6S/hXX/Jmnb0c/IYdfyDXaPY4O+d05O+b+0f/Pxnfsf9BFeQCM48fqd2f/GtI4Zw759t36pfz8vR/EP8noN+UnNkH/YZ+Y+Ut0Tvc+ibzY9YjuRfNPWnuR69lj16+S/Poezz8exg3X4GN8P0W/TzE3uuid37uBdQvQK8S+CM5OhTW770K6/ahub/ULveBPdF7m7z3Z32R/T05Mv/vzV8ugXc+feR+pjZ8z+C/NTrvqt8Iv/XRyznE9/DVUP8++tfwo9nwtYM/9765B8797yP4rW/+bEz/DXL/6/t1BXgQ+2b/0l6/vX3X+oAP0ucq8+Ri9J80vw2Af1xh/XhBYf34TmF81CmRC/+vaf8g2Bndl+gn5ynzrN9/UG6g/lX2+VN9zgFfVn8u/f3Cz2fS/8/o76L+w9BD/0v2yPzYFN0m4GPa3c8fxvPvWuT7Bx/HwB97/5jzcv5xIX1fxQ6/gbNzn2N+/cr8/UzuX/F3D71OJ1ctcl6lfi30/lT/CH7/Zp/47znoPYr/MfpXMb5b8YOqyqfT3x05r9TvKni6km8w/mfj80blN7P+YPffwDfAfYzLT/Sbh8/MK0+hf38ZVEwGm4PZz7+In2vx9zY875Iv9ycNwb3A3J/cZ9xknvxduRX9DTV+vwBzLlRX/Zv4aQXeAHaFL/c/a9hnO9+p3ugfpb4S/ldrt4f6060HHmWHxcpX8r+u/OZW/NyF7tFZnxrPTX1XmoC90blR+2W5LyNnA/2b0WfH7Avpe3XiFcxHn/uOteTfb2l3jXb9wdbGUe4vLkA/55Y5x8z55a/skfiVj5UTn9Edv3tlXYTP49E/B73L6PlQ7c4vrGdv9P+cz+c+90/+eh34ZNaX+h3Dn47KPR04MevV3HuWQcVu4DL/f8/8/j64EOya+cu68Hd6epv9K5E/51Mt8J9zqpxP3UI/4/x/mHYv0c9J8F8K70LlEfT/9f9Y3ye+6z3yvK//ufqvhd+c35+d+2Ry5fx+Ir720v4X9ZnfhuccJf3Qz/x4Ev4a0/ck+FrlvLpUhkeDY3JeTr4DfVf2Mu/l/GkwP9zY/2uA1cFt0N8cvo3wXw1/r+EncQ0DzevF+IZ7jZfB/OG1QjxeA/ifYedh4EtZz5hPeoJng9eT/8MyqDiSXZ5Sfozesr6sQc9ZZ2Z9uYQ+Ep/Tnhw7qP8af8+Se3judbJ/p9+2YDv8P134PuV7lO9T1le/R1/0Xh+8M99bdH+kr2rmw1dz/5vxzD6t/f9gsBf6f8B3F3xrq++kX9YbL8DXUP1s/F2a+2+wGT0+oXwx+Scr5z7+OPQe036N8X8p/OPxd5t2r5RA+sv+P/v+nANskXPCzJ/oDVZ+Hv7N0HsCfDTrV/zs5P+TfNdvz/0u+kclDiPjG/1JypeXQcXwxJWYP0/R7xp+eQA5epKjbtbf9LaT9UL99f5LfxV7HIjvj/R/RP/L+csF/v8V/z2cfEvRrZxzd3x2038D+lpMjpzz5ny3A3l7ZH+JTtbvd6N3NT2OUH4y9xHkmZH7PeXYfxl9LQBPTjn7IP5xKL4z/x+k/9v4+xG/V5L3PPY5VP3aif/BV/3c96LTVPlG+E+Df4X+55C7eD52Sfaj6PfXfnv2f9N43YvcDcHn2PeA3HeTbx76b8C/sXnpanAT8Dz1j/DXD8yzl4PdyfUifB/jbxE73Eye7GtvUF8j55hg4k5e1u5z/RrQw3L2ruR89QPlxMlurH+JvGOyjldeR/t1wcH001q73I89je/cv9XK+sP/ZyTOWn1XfA6E7zpwUPQP/6P0tQE9Jo4888th8N3CzrXwXQe8jf2WobdGuzPUG94V14Lvmg8epJ/e5p3e+G/PD3am3zfwmfiST9BpiL+zE++u//n0cQD/ONC6pS66LyqPRf9qdttb+Xn2yvnR3vAehv776PWNfPBNwecy+vw6329y/wZuZnx/m/hl35fn9d/TeFmQ+GP1WXev7/uS9ffQwr4lcVbZv+R8Ld+XVeTYkn5a0MtIcpyo/HypDK+in7PgnYyfXeHJ/dUD5M09Vu6vZvOrkfh+RTnnwZPNv+crX6Z/W/aYm/um3NuoH0e+5dbj34BfZz9IH0PxO4KfdSPPxuRbxH8b0tNc9v9Jfb4XiTM/i/1z/9OC3u5D7wj6G0Qfc7Nexf/T8LYg3xmJb0p8DXgz+T5D9x18bar/Jehl/bqL+SPr2J3R/wi+Ofi6SfkEeE6Av4PyTfh6HfyGfq7KfJH79sS/0E/2tdnnZn/7XmHf85V+2f9sZj7qYF7/Ap57c8+kfib4LnseSD/9yuDfe7fcw+X+LefvOXefSg85f3+M/BXofpf9Ffz3s9vd7N1U+1/x/2nOb7TLej7r9zb4XkbuN+jrVfi/J/cP4Ch+Og//V4Qf9LrG7+BP/E3ul+6DP9/njwr2jv2vyflkGVRUordl5OtDnsSX/pj7UuPnDvinma9mgNs5f8g8lLij4YW4o9wHVsfPnea31uaHM/U/An/TyVmMD3uFfhIPcWHoki9xFs/jf7X2i9Tvl/VTYZ9xX85/jKc/wTMTv6nd5vi9Ef93Kr/LLz7JvGR8Ji63VuLP+MfP9FOFvqpq1wpf5/KfFuRbjb85ZVDxOtgW7Bv/prc55NyPPeMPff0/+4Jq8Od+Jf7VHv266turr65/Y3xuje+R5Psz97P6ddbvC/BJ9m8Mtjc+/8bPT7mfgOdF5ffQOY6/feo7lHOunG+9ir/EX+V+6mD8nFsGFbfzy/j/EHjW5PsAT+Lw/8z+vhAf3RE/iZOunfgm+A+Gf2f15+Crds7F4N1bfe5n/uFHA5Rzjlrib+8kzk75L3hy/hd/3h+9vejn0a3/iy/ntDmfzf6tC/s8lzwLeL5UPxxcpj7xsF+a13IetZB/H4l+R37TCf056Ob+rSe93pO8P+VHtDvO/6eXyvBSC842mZ/oI/dmiSfM/dn6+J6T8y3wZPVV2O/uxJ+Cj9PvVubDe8h5qn4d6Ptu88UZ4Ajwdvw8gt9F5v0r2XGd7M/49U/wdzCPzCFfB/PZguQ3sUuvnN/AOxwcBtbO+Qt/TNxl4jATf1mVf+8A5vwl8+QI9uhLrjHkWU4PE3M/jM/EdSU+YXf6f4Tei/FuG+iXONFifGjO5zLOM647ZX28+X/b3ardmMxHyU8oleF5uTdDb5R1y37g9uT7kxxZN/67XqX/X8lX3F/+Qa7Dtf+VvIeZNzZgnyez3qLfDY375P9kHkpcR859i/EdyTvZCL1Z+BmJv3a5P+RXxfvR1uzdHexWuI94r3A/WdP95KaJf03eZM5d8LE0cXbov2CcNgbfp68z9KtuvH2Jv5uU15RBxf3KuW9uCP+afAfV707+buyX+KHR4L2FeKL12HsNPf8DDqa/l/jvbPA49Hqgn/3/hqUyTDxR9v8z8Zt75dwz576xu/bL/b81fYwtxOdfXAYVqv+Nr6/Jb2qBTcwnT8H3JL+7jb6f4wfnkG9b7U6F7xTynMg/dtF/18R/Jl8X/8lnyP1EleQ3o1fcfzTQfn326cA/VoKN+EfisHOfk/udYvxSP/i+hf9Z8MCc97Lnct+l79n7FPWJxy/Gj7eIffF1BLmPAsdr19L4Hp78LfZ6Xf/p7DE/82/iQel3gHnnG/PC0fhsoX6I9m/r/3NhfzEh3x90Jyr3oq/kpSRPpTc/SX5KzpsGJZ4x8yx688h7D795Xbk2/IvRnWdemAz/PHwnHnZyIU52C/JNot892X0r8IbsR9i/cqkMV+Pz86w/Et8ENvQdna7dRPhfhPcB8ET8P4HPW/VvDub+cAa+B7HvLvhpQo6p/GsAuxXj2xNX/kDibgrx5YlfvJF9Esd4JtgAv2vzs9vIM1f/4+F/ntwzwLnsl/PznJu34m85P2+Hr3w/8t2oyr9yfpNzmyXK+R5m3ZT4hBb8p5L+x+C/XvaB6O7D/q/7/1/8Z2/+VJ8fP8dPe9HbAPK2Q+8B42Hl/7g/PAk/2edemn0gOTuUQcUb4BPgueqTD5v82OTLLlZOfmI/+jgP/VuUE5e4o37JB+rKT+5JPAM9fU/OYdnX4mcgvRxC7jPxtx56uRfPPXnux/fln03Bg/n3g6Uy7IluZfAF9B9H59WcB8FbJflP7PejfltmXPHPr/hL8gMbFfSW/MDiejP79H/3M/y5I31kfzRY/VLtP8v3Ju+YqJ9F30vwM0L55+RP8a8p7DAZzDsfdxkfg8DtyLdO4mvLoGIBvLkfz315zpcz712bOFb9t4GvivGZeJrsz44xDo6gn8RxX0G+qfiaRc85x8x92FLfu735ce7Rcz9TO/Fg5Mj5Wnv8X8dv1men59gjeTTT6OmA3N8lX5R8i/nP5fgZr90V8e/Es+J/JnkXw3ut+aEN/78DvAX/q8nflh0Xk/PpxPOT6wMw9+UL8Jnvf/LzPsz5W/ZJyUthp+vwlfi5/fHbmhyboH+2di+Rv7ry2FIZfqX/Zeon4Lcq/VxEX4k3HJX5jH8vU77YeL0IXM1/O5LjTPIOI9/Tyh8mX4R9X4DvoEL+QB3yT6LnB8wfP+FrNHxL6PFo5a65n2CXB/HVT//R+Lu6cD6bOKUtyH+Rfq/Scy34Xoa/LrrJk0i8S/IP5xsvbyZPkH1yPrVd4h+034QdlhTyV3MumfVAziffxFd3/rtG/23Vb4iv2Df2jn1voN8SvVyvfDb9tERvz1IZvpR5TH0dduhEvnHGbd5PSN5Y8sWSTzYdfy2N52X8oA/9XJg4S9/lhcZhB+NvqvmqT/L32OV6eniFPmcZN/19Hy5STv5Avv9z8JV1QL7/f+Q+Sb+sI+aT7136zHydd5ryPlPys5KPlfVo7vd6kf9j89t5yj21z3taeWcr8T6J71mMz6H09yD79cPfVezainyn09O+uafDT+JaE+ea+Nae6DRTn/emLtV/N+uxYebtz8Ajcn9ufCR/ZxV6s9R3zfoBvnrZd+X+Bf7R4HSwUyGfdBv936DvXdEbSC8z6XUv+hmC/v/yi/kl7YyfxAFFr4kDuj75NPguvj/xuPky8TNDtU/8zISs1+lp88T9oJNz0LzHk/1ozj//ou9XwLvAtvDn/Drvx+Q9mZxfJ74t+RJ/4LcVP0heVz3j8p1CntdS/nUy2B7cWv+8B5R3mPJeUPK7hrHnH+B48Ct2fT/92W+i8f0D+lsbN9mHZN+xTc5nki+Sc6nkh9HzF/R5E33m3KU9/RS/11skHj3xkcqJ8xwPjqLHnXJ/QZ6jSuQFx5lP6pvXOoHr0V9PfvkneBj+++V8kj8/nfMm8+IzyisSL0BfmccyfyUuaSB4HHh93rmhn+2zf0h8Fn8ZzT4bZ12VPJ3km7B39rfPg/neHoOvnAf9Df9b7HdE8p7x/bbyZ8ZF9hXZZzxK/uvgy/seJXpN/nze9+iLneTB1mS/vOPyZO7n6aFa9Iq/FeTZKefSyuNyv4bPv3MeDE8P9jsbfyvB3/HZMvkxxsMYfPUAh5XKsCm9PImvFsZB8h8T75/4/9/JPyr358b14sL+sp36xKPeTY5Bua9D/wr97s96MetD9HO/n+9/8f2CxGfPprcTC/HanYz7zmBx/jyLvDtbpx1jvbFb8hzgS3zZX8q3Zn2Hn1/z3SHntfxnR/Pd+uB6YM7pkh+UvKADc36Nvy2z/zVOjtVuInof09+W7DeOvq7J/Qj+pqgfTY45+Lufvw+hnweUE5/zMnssTXwluD78S9HLu5rP5tyNfpKfm7z3o+HLezY/WH+0zT6THe5OfptxcRmY+7Pcp03G9/zE4dHTxeoPQf9Xfpn44BlgM+vOmuzwEPs3RT/nwVXzrlbOZ5IHVwYVz4DtwQ7o5X223+FvwU/zPtvG8L2s/aLko2a/SW95HzH7sOy/fjLek+fQxjzwJvxz6Hd7fnM5/e2f/ET+vABsaf2adzsr8HeH9ruVynBCYXwn/rwKORN//kHuh+h5kXIb9bkX7pe4BvbL/fDe+L0k70exzyD6+YN/z1fug7/N8Hc3MbqCR+H3UfK8Ad8k65qG6G8Cz/X6PcqPPlXOedlIfteOHVbT3yj/HwPvifR5Ovufz16JX49fxk8Tv553+XI+U3xfoiu7/q993NY5z8p6zPwyK/Emed8Dnx2Vkz/dhBx5t3SfnM/mHRH4DmTf9ux/cKkMD9BvtPZ3GEeZ71fpv8S8OBSevHOYvKXkK71JHyOUbyFnk+RrJY+Q/mbzjw1zXgHfKuXT2a2HcZP3S3I/Pgm+ndjpdnpL/mju68bm/I/9cn/3bs3//v9D6486df//9blvHIJ+ZXbdDP7f9OuifnDyotRnXdtc/Rb8Ju9r5b2tvK+V+/jcz9dk39zPjzNe6xh/OU/KOVI1/XO+mXeKcr6Z+8bkcRXPfycm31H//enhhsSX0NdO7PML/26S+DL+8iG+WuEr69ncH1wGXlGIx69TeD8r72nFv/O+St7vqmWeTPz9VPVDwV2zv0R/c/z8of0O9JB3DhNfnrjy4/LeE/k7kDfvnua9icPzLkfeM807JGCVxEfzn/uNs/7kG1l4/zb3AwsL67mF6OTdsLwjlvfDLjFebmOfe5WPVH8ifqYqL4P3LeVfcr4N/87gY8bXU5nf9VuXXAvBmfQ+qAwq7kj8Hv3lfZZTSmU4ljzv5vy48D7aWpv+V95/38HLOpH+a+F/ufZZh1cm/wn4bcmfP8+5W+JmyHcsvm8Bs37K++QPsM9cfLwGHgtP7q+f0//2xLXQzwD2n4v/Q/SvQ76f6aemfs/QzwX0k3ii3JOtq33ii4rvk3XLPgG+dvSS/K/E+Sbu7yawe/JVE9dEP5+ic6j/H43emsyPxsUj5Fwn40S/W43rtso19S/BtxZ+9kteq3Lyf75m7yVgW/Ng3nfvwm8e5kd5Zyvv1ub9xeSd5z2T6skfSD6L8rr4mpL7MeXEW5+Z+znlvDuRfKnEwSc+8iT6GAK2B69KHDV8T5XKcL/k1eqf/LvMD8nDS/5d68L7bLeQ7+zcj6vPd/Mi/vec+snKw/A9SXkn7euRryo9Zt+Y9eXKvCeE/ivot9F/TO5hwYez3yDfb+yVdV1v5e70UJ+8iY9KvE7el+iTd2uMr6lgD+3z/ug5eZc97xpmH1KIr6gJX+IrmufdGvNy3mO7XP0i9nzd9+8b9D+nz+/0y3n9DPpNftk15H2sghzo5Z3ybeGbknNm9Abif7x2txTigV+n/0nGVZ+cu6OT/N6T9X9S+yH09bb6v+jnMPLVNv7u1K86/y2xSzE/51rfh6cK+Wt/a78q30f8/aa8IufV1ut3gneAZ9HfzomnQDd6/wT/e/h/9k+7lsow+6fGvg9Zt5wEX/ZHp/ObdfTL+vk69cfTy4lg3vHP+/2V2e16fpD3MS7WLvlTyZsabRwlfyrvp22Dv7yjlvfTct70fN4RAnP+NEj9/Pxuh/oR+m/HH/MeT2f9XkM/72XmHc28m9kK3I/czcBG2j0KT3P+PQaczb/z+wk78u87ss8hb/LVst49gd/nHjX3pxuzT/+ML/ZJ/H5z9j0o8aHqN2L/WvB259fdje+8P/M6/29MjzVLZXgs/Im/S9xdNXQSf3cxuS4F+4Cfqs++NnnAfyRfDZ9597Mf2MD69kV8rA1uzZ7TyLsP/C/R13b0vwKclPe50N8AnpybHA1fJ+ufafj+ERyc+zf2ybj7kD5v4N9H8rvD2bMd+2Z9ukfelabnF8HEJxXjI76BJ3ESbdT/r3XYWfS2Lr09ppz8/ivYPb8r0S/5uuhn/5r73bwPmP3rP+SZpd+D5F+e/R/5qqmvDiZ+OedSyXvOfVHOp67CR+7jR+Qd2Zw/JA5I/XD4E4eQ/LLWiUskd0vyNDb+NjNuNwU3T36P+fhC/HVRzvye/WPymCvQz/6xPr/Oe4zJu9of/3kfMflZMyv+2y6/25K4lOL7ymO0r6F/S+Xu+E/8bOJmuxTeZ1qX3zxmXuyf/Cf8fqc+cUWJb0yexAfwv619b3S+UL6avq4Cl+YcLv6t/xW5VyZn8hO6Gr8/5Xub+Ef624Vf1yuV4Uf0sL36RvjPOf+VYE94rmO/zeMH4Gj9cz9bXF/m/d/H8b8P+vmdgpxvbU5v6ycPFd1DEj9FD1l/HJq8aeXqxldVsBp4Dv3kXOg5ei++L9aHvs/PuXTyzZJfBd9b/Dfr4bx/l/evuoF5ByvnL9nPJD7pusTxJr8bnjOSr0gPOR+axy8yfvMuYP3c/2qfc5mc0+R9gKxHjsRH1iX3a3cw/VyX/b9y7vev5+8H+b79qfxW4mO1PxjevM+Z/Ly18fdg8hbATeHP70fkd3Ly+zj5/YgvfY86ZP3F37dMfJrvcfJLcw+V+JPEbyYv4SL08p7b7smPYefc4+T+ZmXue9iho/oPSmWYvPDkiU9Pfij6zxs/M8EZ4AlZXyR/jvzj4M3vU+Q7kPzE5LccRv68h7YUfzXAvI92cc4P2Odz+PIeTu6jvwdzX72J+vweRX6fYrTvV36fIvkAR5jXGxofGb8HlEHFYHAceAD+OiqfyG55DyTvf9TD11bmsbUyn1l33oju7omDQT/xt6fmHln5DvPTdOXM14lTT1x69rEP4+cxfvgROALeB/jH/vTQwzxxGv5X42+rnBvx19m5nyTfLHBgzlHZKfEriVupo5w459Phy7q0R2F9Ogr/G5qXDlJOfOr47LPBvP+R31+5z373XvB7et4Q/wPo+1pwCP/rA3/OZXJOs5X6nM9cia/X6XEn9u0Ffy/yTgCfoccN4b/ceHxC/03NDx1LZXiG8Z7395+gx7y/n/vu2D/+kPOMxuaFRuC+4IuJr8BXzilzPpnz18RvJ38leSuJ3877ZMkvTfxF3ifLu0HJ216H/m5gn4fIm981W1D4fbMv6XcK2B3M+085X99G+5yzZ/30ovE+yL3Zcvif5teJV+rOf27idzmf+9l+YAWYOJ+sP9fCf34H4KHMc4mfL+Q3JK/hH/Tm0sc09V8pD1ef+I7EdXyS+xX4j0wcMDvlnDXnq7nvPt8+Zmf85D68+F7KBujl96LeNH9ek3hM+joH/sQ9nEb+xEMkDiJ5j3mXeZ+c/8KfvLnky+V3CvK+Z2X+WIPdks+a/NWn9d+Ffa9J3Az95D3lvK9cWTnvK3cm79elMjwEvwPhfyq/3wc+n3eucj5L7ifA+EP8YGjyxej5XfJtT77HE6+Cj8TrNkW/W37n0rx8MrzX536/8H5b3m3L+xdT8fuh+e1NsBP/PihxI/hvrTywVIbJr8/3Inn1M/XPewL5XYfP9cv9X1ffhZ/Y50J+/rHxd77++T2FJfAP1f8zfH0KzqSPxAsnXyX7yOSz5Pv5F71lvfu3cubn5Lckr2UVeAU5ZimPALlfxSnk+pq/5/dhtsJPfj8g8X3Jl0+cX+L72hjvR7Nfvfz+Dv4e1z75fYmzTHzlEu2/BPvjZx3t9vX/avRWPb/vmfML/B2E31vR6cu+z2Z/p1835VX6J6/6TXAomPzqc4zfvfKugfJQ8o3gb/sp35vfYc39Lfnz/mW+N/m+NFJuqXwM/8nv1x3oe5c4qdbKyV9IvnP8PfnQ36p/KPMfefO+Z+JfEoeX+77i+82xX/KlY8fkZ+b9g9Xs1YY9Tox/5j0w/p179NyfJ04x+QDJF0h+3rXJ8yvkD2+sfeItPtY+cRj5/cXv2P1bcLXvR0t057PnB+y7Dv5vyPlT3mNBN/Ga2Tfewe8fAXvCn3nyRf23iJ2Uf8j9Lnx3lsowv0P4Tvaj7H5b4Xy9sfar8Dsh97b6b5T7A+viDmBH8Df9n8BP8hESr5s43dp5/y3xFfSde+Y2+h+R8Zh1Df85z/ekr4lnMng2fSTveiw7JB87cRGfkD/3258p5/c9t87+Pr8rSa+91Y/Lu+S5V2anM/J+Bv5a4iu/B5TfAXovcWzoFO+nJ+Rd9Lw7gu47iT8tvHeRdzCuT/w9emclLhmsUSrDCxOXjL9Doz/6r4v+lNy/JZ5W//w+XeKOc/6adXDeB8+9R94Jz/1H8ol6+P9I5eQX5f59NL12Mr/m/n2J9slPSr5S4rtno98TP73pZxT9573kvFfwcPKQ6PePxCXn99HgeUX9vLx7rX/e6/r3fS70k3eVe8bcL7ZC70vjo23eicNffq8peTc5/ziLfFP8P/czTyjnfuZn5cSdFn9/cqXxugLcnf/nHYpG9J3fQ8rvJO0OXw/8D0WveuK7Mp/bj2xtHVr8vZXv1e8N3wTlOeS/x/9fzX4C//n99d/j3+Ce+BtCT5lvMv90yD2l/ueyx7nabVDIn5mX+RRcmPt69ZskrxKfyRd4lv1H5j6MHXahxzvRTzxU8quL75X+H+asjwZ4nHXdadiXw9sH8LtspZJE2cqtDZEIZYtQ1iRCKuJP9iRlyb6UpVCIiqTsUoikokJkjSSUUkJa7CLKUs+L3+frOFzH437zPeaemXPObeaa5Zz5dS8r/Q2Ac+DhjUp42lYl/Gv7Ev5Wp4RL65fwgvVLuE95Cc+R/rRBCWehd3PtEnaVXtGwhFeg/436d29bwvby+1cv4WublvDxGiV8Av2D8NMGf/OVPwB/S7T7qnYGb1PCTeuV8OqKJXwQLoRbaP8J6XXwfrhK+y+gu96WJfwE/Q3l77Htv+ltid99pBfVKuG+W5SwgvRtdUu4Fv2Dtivhe+Xkw/8C5WeRf/oGJayp/R5VldduLek12t9XumHNElal53vZv+rWJfyWHG/h5x3tYaPst81LWAVeJWO9av7Pbu9vhD7+NsJ/dXLdTw8DpE+rVMKV65Xwtk1KuLN672xWwnboX4D/uur3xO/W+JnJPneS7296/Yg8hyv/UfyHP22Ljy+lr1J+zw1L+BT+DsfXPvh4VPprOI58H7PH6/jupvyR8DV8HaLe2+qdADeS/xx/3FD7F0rvQt6K/HIlfruo9w75e/r/bPK+Rz9fSu+xcQkXsFcd8j6v/nz2+EL5e+nnGPnPVpFm95n4/IJcD8j/Rf4I6RHaa0w/28svh9eVk9N40wTuDAdrfzj5e9D3cPadhN+P6WsAnAvTP69S/hh6W6tfzqTfa/WfWyqUcD58it6eM/50wUdFcr2Lvwn4Ohvdl5WbqP0R7PENOu9qd6z8D/TbMfpdL+lHtv13u3/ifyx6sX9b8jWSX0O9J9B/Qf0D1Guq/FblJVwsf4H628MP6Pdg48d4ftZL/oHoD9avKqK3Hv7r0FMHetlQfh18HI//q7S/Wrn9tfe++k/wx2u0M1p6Pfw9xV6d4a/wc+1URr8RO00hxwvavxa9W9Vra/x9mR/WZbeW6g2n3+XseB1/r02+L4yXD6D/jvFgeuUSviv9DfnuKkHZS7AePdyF/qb4KYPr0k/Qf0s/HGZcqS+9Czv9rX+PLugx+quH/3X8/Vjjw9H4+FX/GEW+t8j3Jv4XYK8d/XxNz6PQ/5odtvD/R/DxNvmepPdP4ePKvyh/uu9DfXIsUv9S/EwynnwmPZD/LMJfGb7mwSfw/yz9fUHOZ9QvU7+Z/APocQV+GrH/QPSHGN/uhdexb8aF2nBv7dfnT7fTz+7au0e5/2lvD/RfZq8m9DCafY7H94H4Gab8eeRogP95xNqSfu+WnmMcWMTui2FV9DK/qsv+jdG7VP4U6SX8TjcrWwnf5YcjyPUKux6H7hPkP9C4N9S40Ut6iPzH6auZ+nvj+zb5H/Df2fRys/ba4u8IjL1Jr93hPfL7yV+vvIRbobun/OnkWYGPqsrvbvzLePw+zPd6CHvvSK9N4I/68bvstZ1xYRX7tqDvKeifxb/PhPvLPxn9LehrPHySHh9ip13Rbwy3kd+UnEeodzP+T+ePe7PTVsq30G9+0A+r0WNlfvVECco6wpPxXwv9VXADesh6ZJzyL6LXTTrfyQOVb8bfe5LrHfRv5w/D0HsSnZn0OzH+6f/78Mv+ylei16fotTV/ait/PL3dCTux3wNZP9DXWHa/pLyEd9DvFHo9gVyXk+ujwvxkJ+1lXlLO/xqr/xl63ym/ULqB9mspt5Sf9i18/05VbhX6+f49ady6gX5bse9M+T/RyxDjUE96aKOfvcE+78A34Rr6bqZf7gF3h3O09wD+zqCPtnAenM5e+7HLROmsj94qQdlf8Eh4A/4+8b2cC+fB+vR9M/vPQL8n+T9BvyP++pSXsDm9PkyPFci5f8ZL+T3Uf1H9DuqPZYe/2O8u+q/NT28zv/7Zd6ScvN+we/x2P/Xbs89B6F9C/5fi50d2+x7+AJ+Qv1b7H8Ov6WNb7dyk/cvwdyS7ddf+AP3hB35xq/TlmW8b1wYbP5qyy3L2nas/30tPXbSb+VFN9brge1f0+6P/F3n/hn/CD7WzMb4zvmW8y/h2Ef31gj3hIdrfmL9Whq/Tz2p8tok/aa+19Cj9p571yMbwHuPlR8ofYz7zBrrVtPNyeQk7yT8J9ib/5tpfjd8/4N/0NUL9ndjlaf4df4l/VMfHAvTe52dfs895xv/flH9U+iryjaHfB5R/mr+8Kr2J9gbpV1WlL1C/ofRi8r0MN6D/1vxiOf5m8L/j1L+JPWfCW/B3lvor6f1U9R6S7pr9EfQz78l+U77vq+mzlfrLyTFc/k30daP6d+NzHX1VQz/zv8wHz8BfX+PBLcpPUP4+9F+hz2n0vLX0aHQy74n/3g8zD6pMno/VfwZuTP670etOvgXZpygvYUvj0DK4H2yg/38oPQ/OgX3Ie1T6HT72Va8N+fb3/w70l32zNcqN0O+/JdfT+R7J35I9H9avtpY+xfiwo/6Y9f0XhfX9jehfrf+1Ub8Z/m6g336wYeYd9LdU/1oGl8PflHsM3Vf1v6/593eZX0V+cl+A78f4x/vGz1lwGDp3k39ZCcoegT3hA+gO4p+Xs8Mp2plSXsIavjcXafdZ8h+Gv+2NN/Vgffgm/2rGX/7Hj16XPgl/J2d/EF6T/S/0v9df+8HN9OPn8HmG/jafHufBW7J/TB/Z59qtsN+1Rv5k/LyI7zL2O5K8R8D5sCd7/8ieP8FG/OXo8hJ+ilxLdBfzr8u0dxT9N6X/s6MX7S+kj7vo53D94F3+s1T9E9jnC3rbOvvb/OkCevqUv3+k/Gewh/InoLdKOvu6C7X7QvYBs/9tPLqIfLuRux/+Z0uX42sQOk3VH0Duh9B50rhwgPpr2f0Jdv8e9sTHoBL8s67MOjPry4X4qqv9j9Wrj34j/aANPk7E13TyF/eLs498jHJf0efu/D7nGDm/uIK8f6h3DXpH42cYPp/KPKS8hL3x11f529Gpi+6OsDp/HM2vesGr8F/DuLAZ3BQulX+278v+2tkEn7fBPuQaia+Z+ssi9Yv7772yjxP/w3cv9PrLPwz/d+J3Bjzc93So+lfj90T/fxg/J/Pbgxm8Afp3Gxfmoz+fXmvT82BynMWe++L/B/VyHnKSch/p5+uj95Px5UT8na7+/fIzD7lEfnP0NlHuRHoanvkJ/34DHse/t6K3jM8ZlzNOn4v/Z+jnUf30G9hX++P5dzv0LlVvLX5fJ98bcAvyTSBHN/U3lG6On+x/vISfg9Eb7vu7rfafYde+8Bu4R3kJK9NPzrcqwoX0NC3jAno70kO+n1epf5p6GYcy/ryMn8mwhvH5EHq4Fv8XaGeo/4+D2ZevS3/ZhzgH/b3Z6wz2Wyu9QPmfpbeHnX1PtzZuHEif2Q8cA5uWl3Cs9Fr8fEnel+m7G3m+8v2Zim7OAzK+zFL+EfJmfHlZvTdh9oOy/7PO96M1ve/g+/kIesNyfqy95+lxE/SnGp9aZ92KzgD2uzXr5+yz0vfF6Fehx+2zH4f/5tlvVP6nzFvgZejvRz/PovcqfR6hfqusL/x/mXGmN/kPIW91/WITOEz+3uzxZ84dtbsQLjZebe27MNZ3uHP213MeyG5X0vf48hIOyX4C/nfJ+Ib+APadDHsb7zqwx2r6+Vt/6oFuJ/WHoz8p59HKT8Hf8fTXAU7CX2397UDli+fkD2a/Tf7v0nfS1xvav7wEZYvhq/gbWJiP/Sa9Pnt1pY9F/ON98o5BfyPl16B7POydczj2H4De7cbRFexwsPxm5B3JbjfC/bT3OXn3a/RvPk6Rfizn7vr/QHgY/hb4nh6inYNz3sRefeh9X+P6pdLt5c/gj1Pil/zpHPpdwv9Gkesr6dez/mGf1+gz34n4x5PGg770NFr6RPZ8A/83af9u/OV871j1dkbvOOnd6OdLep9UXsK20sPVP6wEZXfCH2F77ec8ZgA/2Q//OZ/J/t1L7J59vOzfXa5+C/rM/tOV+P3QePCC/8+RXpb9d/qrwp4n6k8dtX+/fpH4mPvwl/lF9rMHwsnsku9MzmNaw9vJUV3+pvzrfnZtaxzYkzyL+M3G/LYKvEj+XvQ9V/2J5OxJP5WyP8huC+mzNj5+JlfG5YzTGZ9nZf8f7uV7UM4OldMvyLFV9uO1/yR9PwOXZH5I/s7Sa9ljNv7XSW+A7s/61e/k3S7rF+N74h62K8Q/dOLv/1P/ROmG6mdet1+df///oZx/sseu6CZ+J/OdB/XLHRL3AofQ7xLpr2AL9UaQrwX73M//NlHu+5yfGQ+W8INDpI+S35Vc2V+6hj6zv3Qh/qewy2/0fp7809ivD5xK38fi86Ocd2WdSU8z6Pcw7R8Bd0I38RGX0U8Heusj3Y5+rtd/r9XeCvQfJc+H9D6Lnt6HOf+rj++T8V1GzoPYL3Fjie9KPFnmLwej1wb+gq+22l+H3ix63E3/WSz/uez/47s4v/+ffrMANiwv4Y31/l2uS4N/02tNvuzzXEr/36Of+VlX/pL+PEd6b/lV6PcT/CXOLuN1x5xvob+r8S3+V1x/zFAv65AP+eUHcDasSr9Xsk9t+Co7fYTeNdrfVfs/6M+ZH9REbz/19uRH76N/BLtdrtyR0tvzpzPJW42+D9Lu4/EH+k68wQ70W4v+mmh3TuZRxo98nyqhn7iZxNEkfmZa9ie03zjnMuTbCt3H4CPwucyX+c1S/FXhv/GfPzLeaP/bzM+yPqCXsfBq+h2Azw/0r5rkLp6vrytB2Rx66i2d/fOV9NkaPz8ot6n6y+W34S+/aufQnO8bz9rrV8fle/8f8WGbqJ/41yns0cH3aGf2uhP9U+jnZ/qZTj83qL+l8Sjru07WORtLX0ZfB+lfTbX3PfvlXGBheQmL+1Mnaa+n9hvwl33o6+HsR2v3V+nMI1aTtyY/yvnu1ML+0L7G3zsL+0P/U29CYV33XqN/19sP7g/HaKcye/RDdxV9Pk4f9flrH/9fjz/1Rz/7G5m/jpPO/HU0u2X+N4i86V8/0m++p6O3/Hf97dnnC/69GF4mf4Lxoon6p+K3PvvlPGhOYd0T/854nHE943wb/N1O3oHwMvJtpf5k6Yu12xtmf+x2/rS1/58NB9P/2/S/yHfoXvLkfDjxdhmXLyPXOHgc+YbS43D8V9P+IOPLTFiT/50l/3N2XQy3JGdb+uyNv4thL5j935Hs/gAckXVy9pvw8+12/+b31pw/+u5O0n6j7Asr308/bcXup+lHH/r/tMwL6Ot+7T2U8yV0a5Hn6XxPtd8Ov0ebVx0jvSL9nH98ip+cQ1Ym35/60xLj3Fv4fIyfnaD+keyYc9ipGT/oo3N5CW+Tn/V9D/l3ZV2C7nPsN0r/Kpd/Mvsdl/hKfvUCvRb3r2sZrzJfvyDxXtmPQe+1zI/hQ9kvpo9NE6eO/ysy/ugfLeER+D1CuVv44/jsT0m/n+9J1huJc2P/OZmv6U/Z16yoXPY765LvWfx+ByfTX3ni5cnxIXqJb+qo/ovyK9DzD+gnHnCM/x9JrqfIfwO+huJrCDynvIQ14l/0tz79/4ROa/7VBl7Hf89Wfzr6r8BX4VP0ebbyZ8H2+kvLxK/yyxYZH9G9MeNXCcqegWfAX5VrkvNP9BK3s1z6DeW/U66P9CT6Ode4dOt/zKM/5C9V9c9V+tmh5KtmvKwKq8Pe2h+pXM77LiLvqOz/kzvxoIkPHZbvK38/iv6Pht0T36m/Z76V+dd48j2vfM4N5/se5Pww+3HH4/MZ/jYOvfOjT/w3lr9E+8Xz0qyXsz4exK+KcehbJn63sG5/hJ9kPDhQvdfoozp6dRJ/ob1X9ZtqWa/jtwH9VIO3GAfGa//d3Begp5nSZxbOnzrj6156zPe1V867jQtv4ftC9MfrDzPQHaKdg+g38f4Zt7pmHoh+Q/nttHs03Jr8WV9kXfEwullfJC5qHf+/RX578l1n/HkBPsC/7yTvR/x/MXzQ/5vhdwx/eEt6HD720X7isTfP+hI/R2f/VPpVfN1P/twf+Azf2cfrq/ye6I7B1278OvO7zJ+zL5p90v2ksz9aJeOOfre3dic0/P/5CZ9Pop/49E3Jdy56R+X7hP1JcC08Xb/6mL7nwjrGxyX461A49813dDP0r8x3OfuLym9eWH++Lj/r0PjHFcaXA+mvj/Qg8uxE/02086D/z/+P8+kWhe98R/Uq5T5S9jvx05gerqXnZTlfwN8JOe8iT/rJqfITz/Jn5r3Sf6i3qX75in56Re77yR+B3w3zPSdfI/QroHtY9sOz/yX/NP6U+zDXw774rKTf3+j/ren5cf6zM3or/H+h8et37V1JX9PYu2vWw5lv6hfpX4ey9xLpxE0kjqI6PWb+PMx4uH3uDeFnL/zmflDi3mfSW0X1X8TvezkHUz/r36yjcp9iJP7byd+WfbIezT73x9pvhf+x/GMj2Cf3qMhVlX6uV/4Ecu5jvVDGTv39v0/sp37iphNHnfjpQ43fddjxMOlP8Nvc9z73U4rjweHGyyPgkTD75wPJk+/NUPpeI30y+g3Z6RTpafg72rj9Ob3Ols79u9fZ41V4lv7doLyEiZ9uRu7P+VPiqS/Ez+P87RXtnIf+yuwH6befJa4V/238f43/X6D+VvS9PvpT6WtD+puc85fE07JjHd/Ph+h7d///xv8zD8/8+xblcu78Az7OyXio/W/LS3gmfrsrdyJ6ueeSOM98X75O/2bXkYXzv3bpz8r1yX6C9s4xXp3PP+9h5xr53rNXzkdyLtLO/7vR11TlW5LzvMQp5X5r/C3x/9JHGrefZsc3jYOJT2+Q8wHtZb+hnvq5Lz4k5zzSiXfP+niFdNbJWR8njuWL6And1fC+3ItAP9/Nyujtk+86f8w+c85XMz4uKYyP0dd26FaUTvxRv8Qf86879NMm9J/z/dzLyD2NConPVv9rcq3mF5mPZv75Hf6yDiuuv05DbzqcC9fl/Eu5LvipRp+35nw399LLS7iCHi6mnxuzL8HfP8t8U/2nCveL70ico3oj6WcU/N3/B+V8z7iT/the+y+h30j/qkRPO+Q+LbneNJ5txE+X86e3yHk+f879lazzEhcwib2u9X19lv82Tvwa/e9bTm785/7wr/rtseq9krgl+TXw86T2Psf3kuzPsVcjeluAfjX6+K97m8/In1zY725Jzsuyv5z7Z+pvq14vOAr9VvBg+j8df6uMm78mbp7+j8dH9t1e8d1ZRh+ZP2RenvuPTekp+6t/4G9Z4i/Y50z+mrioOuyc+KgN0Mv+9Er1V9Jz9qfrZX2p/En0cE3Oe41fF/LDDwvx5TXQnZr7yei1x1/uF2Te0kA69wuepY9Z2h0nXVv7e9LrDvS3ExybeBX+mzi3xLUlXmAP+hqP/s34XYjfn+mvC/wJLqWnXemzKTxNfn/8Z78469qsc7O+bVKCssfhxTD98ib1z9DPrpfeJXHA+K9Bvtwjr5J9Ef6xAXkG5Jwx+8zym8vfVPqgzH/pd6F2lxpfGyXOUvmd6WM7+Bf5DiJva/+/OfsA/Hcn9HbjP3mPIO8P7EsP1bNfhu870D+MvE/iY5JyI9CfbFy71Xd3beK08LNF4qZy/9j/6+R+m/rj1bsftpB/qHH1B/q6XP3cT0r8+Y3waf/P+DMc/XroHib9duLPC+uVrGN6ZH+e/bNe3EY/ugT9xM/con7iaBI/k3jAnK+fk/WMdHftPef7VKa98/1/tP72ROKa4E34mMWeeS8mcS6Zn+d+6SFwKky852b08il8Ht7BXn35xzx4vP6XONKu5Mm+bs6BfqGP+3w3bsXPeP3oNunmuc9Bvy2ka9JPzfISJh6rA3sdJ7+t8vWMW2eRP/Fnf5D3VHwdI514guPIcyL5ZsGR2ss+eXEfPevfZ7WzkXQn9h8pvVB/nGLcfj9xv/h/iJ1r4uNB6Zz3XaPebON2R/5WCf0e6vXMvRHy5XuVuJy/+VfidRKnk/jjfuT9Qb3EH9dSbvOsE+Gp2v+L/2UeW5y/vomfy/nHPdKJT7w+92JgV3rO/f33+MtsdLdjx+7yuyu/DP6Ozkz8r4ffKrm/R5+jCuPXEfCa8hJOyP4j/30XHk6PlRK/wy6J37wav4nPqMwvs4/SC3/ZT7mT3kbQ407suUr+S/ifAkejk/2ap7J+zrqDnh/D/1nayz264n3F+vSZ9yGW8ofP5H/Kf941j3oHfp97v3nvSvop9bP/sq3vUzf9NO8wtcNv7uVWpMdfpdP/h2d/h37HKHc3+f7Cz995n0f/6M7et0p3prfbpGeQt2niF/S3mtITc08v5xP85hXj+XD5ua+d/YYv2D/3tzsX5r+J/8j+39vsUheuYZ/18L8PvebefNZrWZ8dr15z9SbAXZX/RXuJO5+Xdw7Y4YryEu6e/fC8P1KI753Az86GF6kXe19E7tj91Xyf+e0C+Cl/yHtne+FrSOI16fda7Ven941z7sDO2R/onHv+2n2DvnI+UIecr+XeP/t2zv5s1sXq70WeVsoP5H9Xamf/xCWp3978JvGYic8cKb94n+2uwvhUnD8X74fsRj+V+Fve6XhQOu9yfK9+8X2OJsarQ2HGs7xXp1jZanY+snA/PO+N5J5G3iE5QMWcJ+R8Ie8p5XzhdHY7XP/LfcVL1c9+xel5PwSd3J/6ij/vgt+9+UMz+YegezG6j7HX+eiPK8w3Mx/tIP0TeaejO1F/n5D7XtK94R3ay3szZ2beAbvBi8jRib7Hwc7wg5xj5Z4XemvZMfsL55Tgn/sRuS+R+xE5r8r51Xbkezr3fMpL+L32FvCXXspfRf6c4w/O/fbEaRhvV7DjUfIT/7mcvffNvRvtPQQH6vf94FkF/eS++1R2Old/yfo0+//Z999Fuazf875Y3kvZRf28L9bYeLMTbIKPufQR/4+/x//P1/41xotz8dkhGP/Qfif8fIO/h6U7yo8divoflngb7e1eOH/uk/vQ2U+ij+cxPjj39Qvjd+5v5X7b19ovvu8z3P7OpNzbhUtyr5H9EwdZjH+sbDzrop/el3my+rlPmHuGc2DuG+a+8xa518O/Tla/kfIv4OOXvAdBno7Kf4XOg7mHhs+8G5J3m/KOU87ndqGf3KNNHFju09bKfWfpm/KOkPq91c97BzlnbJXz1ty3hz3gFvhPfHfiuQfxy8S/zKOXY+j5Vumd1c97Fv2Ne3n/5CD5jYyLvQrj1xXaWas/5P3GvOeY9xvnau8i2BkfF6M/JeeJhfih3Jd7yf83o8fcU8z9xNxfXMPOU8ixmj0a+26dlvewjJ8r+c+wvLuY9wvwcyn9HVtGHrg5/W+b+7DauQu9HfSvh9TfDT/dydUDnpH479y/g4nDTbxxF+0Ohptp/5XE7yd+C94E/876JfM3flwv4wn75f2Aq/n9UnIsg08nXl46+zzZ3xmd+745FyHfr/jPemUV+2c9M4H+ci8q946K95Ha514OvxpaeD81+h6n37xEruj//BL8s+96i3Rf+Tuo95v2JtPTRPmb00/iP+bAxH/Uoe+K8GzyH0af/fXP4vi7Lu8YKF+b/mrB2jm3wk/b3KdD79LEG+l/zWAxfj/3AwaQI/cEcj9gJ/w0wV8nejpV/b+Ml4fST1/2yP3W8Pknvc9X/yD6a6j/3Uk/78HL1c99mHNha/zlfsxU/TpxZdOkn6O/Rf7/JbyY/r5Sf7n+0iX3E6Wz31uTHg4gX/YHZmd9RZ68O5N7/1uqv7oE/8TVVUU/66VJ5O0D69FH4lmH8uusp1rh/0L076b/xGfdBXNuPpD/vMVe2e/I/sbb2pupXHP98Q3jzXT/v0m5kwrz2brZR2KvvOPzp/b6skfed8l7L3nf5T7+u3HuNeceMHqzc37LD7Mu3kD9Ouq3K0dX+VP5a1/62Jje+kkfq3zm9U8ZNy6RPjH3odHL+rj4vmF7dpsBl8OT5F9LT4u0d5f0tfSTeKTEJ71eiE+6lNyV8dNVuaqJ52TPC/hdffoYL/9H9b7L+YX8IfLP0q92L6y7u2t/nn6zCb1lnZ394Lz78xx8Xv1bsj+Kv/cyz8z5BH12ZJcR6HeDOW98OueC8C/YXf7RibeUnkeu1+h/MH3m+/5h4T7/nfjJu0B70tf65M/7QWPQL5f/UWH/K+v70wr7X4+bL/TK+pp/5X3Ubc33Jht/vtXPrkP3pcR/0u8vsEXevZW+JOfecIh+2QX/ea+6m/9/h78b8t3nP8X7iQ+UoOx0uBSuUu8i9sg+QBWY9X8x3jlx0LWyvsZfznfzzk/OV2bn3RKYOKzs/5yf+0mJ+yLHj9lf0e405dcon/jFpfwt70y1zH5r9tfoM+/MNYV5Xy5xL58X3nnN+64Xpt/iYzPtb5379cbZ3DP+TPt5p++3vGeInyHGqfX5T/absw9dsbAfXUZfN6A/SHu5L5b3Hurm3SD2uJa++uPnn3sYsFnib9RvnvcuyH81fhfn3ov8jOMZv3P+umPiQxOflfNlds+69QD9JOva4v2uuvAq9bsnvgbdp6Vz7p7fY8jvNFRGP7/XsEMJyq5X/yv152p/rP/f4/8LpO8l91rt1FK+Qr7b9Jvvbr63OX/KuVTGy7wH097/s39TFd8LjaM7Z56tnY/jX+x7ZOF+R+Ke805k3rPom++R9jKf2RM/1yW+IvN5417OIXJ+tcw4kflf7tPk/kxn/lUdnaHsvXPix5TfTv1T8Xmi9t/n/2crXyPjSMYv6aPwPY3czeXPYrfDyZlzyJw/xu+aFd4/y35K4k9yDzP78Ik/yX2jMv0295Fm4KMVvWX/dmjiLbP/nndgtXNg7Cj/lrxvTc6Mp+P0g2MSr6HeTXBM5mf84UbYDyZuqgJ61+FziO9Svg95H3ci/nKP+Gb1E4eYeLLEmWV/PevPD8vIKz/rzz/p7RTtXczeX0pvmHjMxJPnvmLikNjzb3buTb+vK/+CcX9H/f556c3xv2fmxTD37HO/PnEaef/uXvzl/bvs11VSrg95s5+3YyHeZZ36+8pPXMSf9HVv4rJzP0dztXynJkovz++osN8+9DIm8af5Pqn3EhxOnzehv0D/3UH7DfnZ4/Jrs882sVPupaK/WPu551O837OV/n9b3nk3ftQol8Z34pCL8cc7JZ4GNoZ/4DfvI5flfrJ2Pkd/h7ybkN/FSbxa3tfNO4/sULz/l/u1c7OuTByF+v3ptYJ5Q0PyNYBZB36Xd+zpe3720/njXvTUnn+MS3w5+hugn7i5xKkswtdy8nVMvBX+TiJvG/3km+zXo7+B+Vze7awmnfc7z0Av4+Ng+s34GPmyfo2ckS/zmcxvMt/J/tog/tRafuW885D9Zfyfie9vsx+j/cSv5hyoeP5zbH6vht9cAadknUffXdnrlKD6uf/eiX1ezHvmuW8Cf8p7Ivy4M3m2Yb+hJSjbA5ZnPq183nvK/P1J8mc+9Th9vkdfu+d8i14mJv6jsH+d+6inwC4w5yw5312Tdxlg9h8ezrli4V3+/H5K1gtZR2TdMD3zD/VzflB8H+9F+p8Mp+rHtejjOPJ+kocr0XkXfy+in7iDxCEk/qAY7zUxv/8iXbxfPA/mfePa8vPO4Kbo9c59Xd+VX/TDY/J+svon0fc8+WOlH5V/B/4TB5i4vzPx3y504V4ZHxM3hI+8l5PfScr77tm/SPzUjML+xXT9eRX/nqu/5PdJ2pA77z/10W7ef7odveitFb+O/vL+dfH+dd6/3th8cMO8A0POvM/7S+YD+FopfWrO8YxL/WGZcofxmxb+vw2957507kcX3yd+jT7yTnHx96aK+l0qnd/Byu9f5by5aeJ9Mz8m/0no5/7eCXn3q/D+RfH7sm3hO5P98eyHZ3zN+rEp/X5Nr+vT37S852286MZuq6WzX7YB/lqyY9fsp2mvG/m/gJ8nHiv7wb6Xg/JOY+I41c95a85f855kzl/3zvuK2p+SeBr85129/N5cfn9urvQCdvkMzoft8fNO9r/xkXO4nL/lfGFNfocpcRH0e3HuZ6FXfH8y5y6ZB+d3OP65b5zvE7uPy/lweQkz/mTcGYFexp/cN+uTOC12PAC9Bur1IVd+bzD+15M+K9JvD+lh2eeVfgtf2/G3B9hxGn9srt1R0l+wwwP4ek9+O36V30Obnjhf8uxMf5/itz86u2sv8XX3yN+Qfn5VbzN6z/vJeV91T/3lEf2guXTeHU/8YvH98fC5eeJuyJHfbyu+z1O8n9BSubwbl9/DqCm/Lf2ONC+ZoL09cr5auLecdyoSz5N35VfAHwrvyxf3lxL/nflXzveqZ7xhhxbS2UfJ+iXrqqxfKmR+nH0C8vyJz6wPcy8r68TzCvPHzIsTX5b547v664t530F7u2r/duPVHHQSv5r4i3Xo7aXdz9Gtq37Ol3/h1/eww1nZZ0D/Nf2jinHu/sQvSo9k574w6/rf875o1hvZR2CPlvrvAXk3ET8TMv6o/2l5CfMeUvY7a+f8l59fAAdr76u8i0LuspyDkT/zvdwXyn2ixKMuY8+9jfsV8PlW4uMSj5X1XeZzeT8E/+tr52t8jM19NWw9DE+C/+y/sf+e6H+pfz6ifn5PdQbMeJnfV13Bbvl9p8Zw9/IS5vt6mu9UvqtT9ee3jXsZ7zIOJg7kHfXzewnnS29C/nfwld91yu885fedcv84cY8V8vt86I/KeIF+X/Z/GP1GkVf9Nvmu552EvAMJz2Df+7L+LLz3kXdAcr9xVuG8PfONzC/y+wWjC+/c5H7+K7mf8h9x7I/iJ/dmc5+2PfpztbdA/WJ8Xmf2TNzPvKwX0R+b383gf29mv4O8+V2NyzOu0dvx6E8zro3L71nCE5RrRZ6DYN6TzPuReZe9T95NybqMPXK+fkrO2Qvn7TmPT3xq7oN2xu/H+sMn8HJYI/EhxrOR9LZOft7X2Yr+0t9Oob/EA3zGHtvkPYq8K8k+z9PntcpdwU+GZn2l/Qr6cQPpvF+W+4qJe884lPj3ley2IvEi2uuY/dnCvbDcw87963P4ZSd+mbiT0+X3Jm9+t21y7pHlXEn9xL/n/C+/H3MV/urQZ96zz/v1R+Q9De3dgf+fpPMuYH5HMe/zJj7uW/6f3yX4Tjrvz+VdnrzHk3f6R8p/NPdT8bUM/UX42p5cPchVS7pT4gsL7yNknMr4lPj5140b12SfUr0NjKsD8rsjOYfXft4H/4Ve8s54f/mJd0v8W/H3SQdm38u8bCJ/7mIc7y3/4sR/+44cmPfa8bmGXlvirxv5ch7ylfb65fySvRuh+xL/vi33h+j/v96tHVqI//4UvQbsmHjw3I+elvtH+Lkr8TX68/T8Tg6ck3v+mefmXmjhfskfxrMdyfFTxq/8zq/5SOIarinEO1xfgrK/C3GJ+f2Wrf0/98dynyz3x/5A7zt6+xamv5yX7xW95Lwn5zuV2Ptq/nmb9KP4qKF+3tl60P/zvtZK85ch5JxNXzcm/oo+O7DfcfAO/eN1+rtS/StgzkHOIH/9xOdlnoWPF/x/R/7bT7pV7lGRqx25ivGVebc2707mHcq8Pzkq40niI3LfTn7ebci9hLzbkPsJ7fBzNHwDrqOXHXP+ld8R1Z+y/57fG0vcSTn/y/26GnkvAJlecBi+r6LPPjDngTkH7Gfcup092xi/Bkrn/fm8O5/70blf9n/y/XOmeJx13Xn0lsP7B/BPUlGSKFrII0kUQhIVoqyRNakkIVtJlpYvyk6LZC9JobJUtlAhLYTKml0h2fc9O78/ntfbOd3n/J5/3meembnm2mbuuWeumbtxRfl3NVxTp4wXNi5j+83LuOuWZTxkszIO3aaM+9Ur44QGZdysVMZrty7j3tXRrVLGd2qUcZdG/kfvbO2cgs7R2nugUhl/hJfBKRsrL303HAGv1v7GG5TxPuVnr1/Gj+QfqZ2xW5VxofabNi3jhuuU8Qr6OBH9z6T7l6GiMTrjyfNTkzI+hN47W5TxPfqaSH/d65fxHPJfUCrj5ur3xf8gOIT+Hqe/Cva6chPySP+qfvS8VHtV/X8q+a4nzwbkHC79KX3s0JC8+BtLjz+Q92vyPk6+JuTdUf4b2n8T3kXeZtqfvW4ZG2uvebUyPij/YnJNJtdd8Ojwx7++41/LyPec+r1ql/F2dh8P92S/l6XboTdMuqf6x2t/Pnk6ab+e8ieSp6v0JqUyHknfH9BPVfmV5bdC/yjttaXfV9Yr4y7yq7D7z7XKOER6Df+thL+q7LLORmWcIn8Bvdyn/c/oey/0v+GPV9JHSfpn/N+jvXvTj2BV9NdH7yD/V5N+lL0Poq+5+DwX9uEnm8q/EY6Uv4Y/9cd/PzgAnqH9Zvg9Hb1a2j1X/s3knkLeVvxhqvQx+F2g/qn8pz3555ah4hJ0e0uvpK+x9P0ZO3aTvly7n6Dflv9M2rCM1dUfrL8dxf7XSp+Gjxk1y9gXViJ/E/Qmk/+pUhn3wOd4/G9Mr5fTa926ZXxYuR3lXyL/dOlm6FeSfgOeoNxY+el/6Xdb4yP97yfjygR4Nhyh3Lv0tBd+3zbe7Kj+a+Trjt9v2am58pvqF/XYtT48Vv7O9PaJ/rGT9GuF8fpTmPFrjvZP9n99/lTsv/uSf5JxuZvxa3/lFpH3WzgRfoneJeo14xet+M+V6F+oX73k/5dhbfo4mb62kX6U//TjX7fTzwT4LP1UVX50GSpOwO+r0q/T3zR+ebXyvYx3l8lvXbmMH+LjKfJ1kH8tff5J3z3Ycyn5fmCPXvzgfOk5+D8Hv2P1o/8pN46/Xaw/NKhaxvvIMQD9Udprg++vjSu/46cl++0M70T3EfXrG4/rwc3gi/hrzT4bq7+r9B/kP1O6F+wNj9P+C+k/sPWmZczzY2d8n4HvH9hjofab6Y/j0f0y/qJ8F3g9ekvQu1d6EH/Zjt0ak/8W+YsKfvs8vuO/HdnrTfavL/0WOiv1h4/0v174+Qr92vz5LDiIfhcptwS97fSPA42zDfjBN/xrpPLX4uMb7S/GdyV+epX0aPnPGA8PpvddpLuRbyvt/YivuvzxePrvp/xE9avClvQ0hPyb5LmJ3obkf0z+Afx3mnJd1R9Whor74Q9wFPk3j/7J84b6jdA/TflP4Gx4Mz19rP4tmW9LX4Pe/5Svw08aqXeW/OGeC2fywxXwTvp5h312wm97/rer/rWIvmbD1fS5CfoDjTsz0BupP+/BPgPQ/1e5l6XHZ/5I35fCNXBX9H7kl7fwr5vhI/SxmNzpJ8X+UQO//cndlz4u0v4R/OZy/vmu9AP0cS953pRfA/83k2cyfh4zPsyG3dE/m96exscZJf/jc0UZ/pu/VJDjMO1/ajzZULod+zRR/wL+/jk9LZGuRf+no7cC3gG3wccg9G9H/2Lybo//79Bbl9+tNA5cofw1+sUNnl/LPAfq0/9K7c3Ncw8erP236OUj/b+d+o9otw+7fcfeJ7PfhvzjV/lvF+ZPp8gfjr8O+l3e83bHfw38LCtDxf7wSXYehp+L4d/8ox/97Mpfd4Ot4bPaGeL59zY+XjCfmFQq46Pay/v9BHJehv7B5jd12HM+unWlF6m3M31vUG/t+jX4xU/89Al66Mvf9lX/AfgkrISP3uzwJDnW4wf18b8lulvBEow/jdEfXs17vPTz+M14/xL8HHbL+xW91UW3h/bX8P8K5Z9jx0lwE+1X0l/68/Pf/V+ff5yl/Cy4ENYl39f86T79+Ht6Pxj/jennXfq5W/oe/A3l1697jvxBnkP48d/87EP81Za+hp13Q7du/Fa6NfqvGu8n4GsVOlXo7yT8/wk7kuMV9a/w/23+rwF3J9+b+tX7+G2j3v7yD+ZfjdjnAPzl/WAMefZhh5WlMt4i/4oGa8s3ucHa8t2tP43mt1fBT8mbeWs99sz89UD8zUDvf+hlnL9F+l76moqvhvjcAf28X+S9IusEeb9oYjycb3y40DiY51DGl4wrU+AQ/W+nvJ/wm4bqz877MX//Vbnl8ncn72r02kifIX0C+Zey5w2wMqwifzR9fUHurJstlj+V/c9g//XgTHqvia+/+EEz/j2HnuLP8fOF9Bl/f125JtrdRrku9HcAvfYxbnaAg/BXDx8Zb+JPX6PXBr9jybGfdHX01+UP3xfmQxPl70YvC9jjUnZ7gf2vY99fYS/+0F1/OJVdK/B3D3s+lPUlejvO+NBI+YfxNTLvK/rBNfS9r/rF9drM81/N+yU918T/J+z9A/19ge+P4UWwMzsOJH9DdN5F93z6mYfeztIv4iPjT1N6/xv/Nejne/q4ij++RP7XjJffGpfOSb+nj1fx1Rn99T2Pu9LLRtKN+MWO6J7E7jtIz0NvUhkqBsO5+DlK/Svp8wJyb0IfH9DfanS/hV3J+zH6e/H3I9TvxA634f8s9Y4l92zpMfp5Df8/4zk3EF5Ozz/g9wV2exD2xd8N7LOudleXythH+3X4aU9+mefresodzE6j1L9D/3gT/YzvmbdkvjyGvLeVoeIEevxDOuvxWbd9QfneypXwdxt9NqWXD6S/yHwVvcH03Fs68+k5+sds+BjcXv0njC8Vyj8lnedHTfqZx782kW6Lv1/46XHsMEk666u96ONafjONX5xOn8X5QOYJY+njEfbcid1vku6pfjv1p8L2+tfv2hmE7/OzvqYfdsDf5WWoeBcOKZXxLu3/hN5i/rganoD+jvAc/W48vqrRz1D+McT/eW5dQL8Z11cYP4rj+8v0kfFgfMbtrL/Ryx9wCWyp/r/qvcw+TcnTEt3q9PaMdDty/Jb1C3q7VL/4EV5Pf++XoWI6/ztT+jN+fQF7/Uv+Z8if9fvn5U9npx7G/0H4vIG/3Qab+/82ergJHzWlr6bv+6Wr0ueW5LhMugd+HmK/o0plfJy/5vl2Pnp7Zr3bc6AF/rO+lHWlhoX1pZ+N38/7/7lg5pHmiyOl79feJeg3oJeGcDt2yvtw1of3Mm5kfbgG/Tf2f9aDGhs/so/QmF4X8oMF8E70h/Of4/nPcNiX/l4wXtxJzr3o+fesU/KnBslHf4j8ueSaA7+CmdfczD5ZP15hHNlW/ZnGjb/I9YH/p2X9lr520f5U/pX14Tvpax12f4m+si/zMPkHk/tq+Iz6R+FnH/xtBv/MeiZ5z6OHuVnPkb+L/xvj73Byn4P/F7S/RrsN4Tr4m6n9P9mjRQndrC+WoWIvmP3s7F+fSz/Ha/9F+qlOjpXscbj8LrCDdl433hziOT1CuiH+HuUfn0cO5TIOzcBXN/gCzHOwLnrHau9S40UP/lyJ/prpV9vCW/N8Z9dl/Oggevqefk7R//qzU1/pxeQfxz9609cq9XfI+hO5DmWXV6V/096p/LK2/3/mr2+jc51y1bIf7/9J0o3o7wh6OBN/WR+oyPszflvR2wMl8iq2FL4CR9LfgdK16XUj2E37y/jrfcq/Z/yL/89RfwTsAPuQ60H+OQw/O/OLm9A7mN4bs9sdcEL2SdXfKPM3/9+Ov578eUP2qZVxD/2u+Hm9IOc4cmyA/of4fVg7GZ+f87yfBO/ib1cp1548W6Ye/Q9jn92UbwWr6U8l5ffXbs+sx+sXe5TKeC+/6cm/NtZeNfLNy/yLXhYrd5tyP5Izz/P16Xsw/m7S/qHqN9BfWuNvBv22JldxfrQJ+lkP24k+L5HuJP2A8g/j41L+04P/Pqe9zokbSPwFfWV9+Xt6fBq9q/jnQvbaSn+rnPUz9QYYd6pK/6Iffo2/rL/UIv8S9CfT5/nwoMxv0R9YgS84H7bFT/QZ/UbfL5Gzf9Yfsj6n3Qflr9T/V8D34Av0ON34PZde7pW+k34vxU9ruBIuNZ68I80tKlbpH1dI1zZfyj51S9iMfJPwMxE2NZ+4QP4/7PsxuQZmHUT+rfTxhPw32eM7+cOMd5PYry27HZp5ufn80fh8NuvR6j8tfZ7n1lDlhmu3jf8784uzE59Q2L+olP09mH2Mh/A7AL2zyFFL/ZfLUNEL5v3nC/Z5SHt5P837at5Pj1d+KLpP6odjlM++/TuJj4L98defvTajx+PYaQv0TuY38/z/ZOH9bzl/mAkvgdcYr+7W/3Y2PraEu2r/cvm/0Nvd5B1JvvSPWeilf+zKfmPZawz8Bh6OflP+/jC+H4IvZ18O/S/1rzf430mZX7HvArhu1o3I/3f2vel7Of4ukr+APs6FVem/gjxPaX+Y9r/1/wDyjVbvPdge/by/9KDPC/h7T+nFef7T60fy/2Xv540PI/nnYaUybiH9F3nux98U/NUi/+7az/jYjd5meh5sn3V38j4BG+mn35BjPL7ezL4v++X9JPvjiZc5QrmW5NucvBnn66KX8f1j/B2C7z8arc3/Oex6mnH7l8L6xLv4fLrkf/QuUr+WgfF9/eRr2DL9h/6b8pNv6XUqefZG7yTtvUbevH++j35lcq4Dv8rzsAwV39B31s8H0d+/7NEc/c/yPsD+i8h7N35nFfY3dlH+25J0+iH5z8XPm/TeSLoP/rLum3XgA/lf1n/P4g953pbgcnq8mvxPsvty/Xc4fv9HvmZ5fpDzIfwX533tlX8q/l0YFzfFT8bHVv4/B//z4IXot9Q/prNbK/WqoX8SfZwYvcBt6K8fvWX+fKb0Y+pnPn4+fAS+wS+nsFfiXG9kz355P9PeCvgWve+vvWPU/4icp8Dt6SHxn3uS63jtZH+nC3sm/vn5xEmT7yr8fiz/c+lW9Jf3zYvo7wH+1lP9xMslPqY4HiTedrD8HoX42x/Z5wzy7iW9FfqjtH8h+c6GC9T/1fxgvaxDSs9Gr8L78HPGn3/Zb4j66XeJd7pf/r3Zn8T3v+T5B05Sf2XW+9Qbz/+O1A9uYr+L2T3v0a2yvszun+LzHOmm+v8Jed+Ax2jvFXy0oe+fyHEq+4/gnw34U0P4Afrfk2s1fxqsX58m3Zx/LcHvfuQYmvVI/N2Z5xv99tVO+7zf0cvryi3nj1fr703JU4d8k5VLHF4LfNUo4dP7wSr0r+W3E7IumXgg+dfxpy7obUE/g+X/VoaKDdjtbOnsb9ZE/zD0t2CnUfSf9bNX4YvwFPRPKzyvfkWnT+YPxtGx8Dr4ceKj8LuddEf9b7J0PfpoQu8PwqvIG33HDtH7Z/jfPet6yrWHizL+seuGsKp+1ivrb/R7E7ot+FVL9f9k3zXwK/3/11IZz2PfxGknLvsv/M/nFycbt55KP+DffRLXwF+rGC+uoYfsn2XfrD7/yv7ZMcp9j37i/BNfvGPi78n3FXv8nPMa2svzPc/1DdV/idxL4ZLE8fKHE+l1y6wjsedf9NtW+bvIPSX7OPQ7gb/Nx/cV5Gkn/wz83579ocSVon+Z/jKUPl9SboL87Gu+/P/sb9blL3n/SDxD3j+6KV+dfbM/2EP5T9Zfu90bC/xsjP44drsVnof+5+jk3EHxPEKex4OyTyvdlb5r69/TtF+9VMZ70H8g8+ast6tXNeM/+89j/7Y5z0IPm+L/QP16+8QTa2997W3ALs+qd3j2KwrxH4vJtV2h/bQbPkYkvoc//bd/ID/nc/7Qf59B93T62FP+KnY+An5WmM/Uk+4GD1fub/LN9DwZC9fAd7N/x59rsd9f9PQD+0833nSDM2DOWzyg3WO120Q68+XsiyauJnE28c8m+l9tuB38h53vo99nS2U82f/Pqn8x/hO3PVw68dszCvHgN7HnP1k/VP4q9aeQb6h6ibdNXOnR/CnxpaPwdZB+vkfihDK/9ly7tQwVfWAXfOQ8XOIvMk88DJ0PN1ibzyJ/W+jfD7LrK/xoD+0fSO9j0T9eeznv1ll/3kS/OFS6n/bPpP/E59ZAvwf7X2Y8eTlxlNK30G8T7TfWbuLWH2aP7PvnPGJX7WX/vwV/eJEe18DdjIcbkft8/9dRL+cr1qGvp5SvjN6+9NOXv2a9Yjo/Xij9pHrjEkcNm9PPhpn38p/EI38ivx191Ed3TOJMsx9QGH8r0W/2Px/J+SB6elx6GP4+Ybde2t8BnRfp/0zzpY09x/rzo9ryX5a/vvFkL/8nvniHMlTcDT/PPiG5ahXe//I+mPe/BuTeVvnHyLFtzl+xR+LdPqbP7O99mfVjdKbC7KPcxz5bpx/Tzxv0u4o/DSTfKzlXhX41elmQ86Yw6w1NYFv4YZ7n9PSx/vk0O0zEf392vJa/PwkP0x8S33mU//8slfECfHbkv2Mr5MO9YYOcsyDnTuSpq5+doP7ixCvB+PMyesi50JwT3UU650Mfp+8d5JeyXlp3bf5OLPDZXP28L+c9Ou/Nq6Uvw898fjiSH49U/yTz5pNhn6zT4T/z1/n8MvPYzF8Tf9ma3RJ/mffb7M98zi570v+2pTI29VzcBlYiTxPpxAskfuCqPPfovyE7zUy8OD4+5j970sOJ6B5EP/OkBxmPX4yf0s/G+OuN/1fyXNXOptpfpvxS+A7//Ib+8p5ZfP9cN3bXH+ar/xQ8OvFjyu1BjlOkL836MLs+i8558Gv8d1bv5sJ7et7PM5/ehR5yznIs+jnvlPNPw+Vn/b9K4fl7CjyfvR7N/i9/eI9cl6i/Db42p5f4wTz8jSPfRHrP+cacezw7cZDG+QPR6VcqY2P0u5I755XqkOc249r9ORdLHxP51VbGnzvxsUq6SeJ39Zdl8E78LCXvLPwMhevwh7/Vv0L5cfi/BW5JP2/T7wHZFyjEK2XfL/vVxf2/8DuWfDfl/Kv2s293Kb+7DGb/rh89bF4q4wj+kOf3qfQ3El9bkPNm5VvkHBZ6zaW74HeJ+qfg43npT5X7hb90Ur6l9v+h38RvJm7zSeUTv5n3r7x3ZR6Qc/xZv/qNXdJfNjLeJd5oEdw3dibPUvxkvWUxuR+U7mPc+3zztfk8NOdD2WO+epfxs93kJ35mZNbn0V0Nx7FPzl22Jue16g/VfvPE8dPrO/SZ82+X4C/n4HL+7QZ2XQ0vhom/T/zF5cbPrCMn/iLriVlf3A0fWV9sy19PoPeF0vGbrOuMZcess2Wdp2epjG3Q38z4MA79O/lzz8SNKX9k9ifppzP9dsR/zr/mXOtexoXoO+dbR+CnGizx4zP5R87Tvpb3/Spr0/+rDBWj4EfssDc+cv4w+wd3sc+7WX/g/9lPyf5KB/Q31N652S+j/9ryW8lvy993lX4p9qP/4r5s3tfPwt/1+LsBZn19ovlH9hM68bdB2u8uvSX9Ff2lLr56lMo4qzA//1X7s+B58CLlj5Suxm/HSL8hvx+//Yz9c141931k3fDRnOci95Pyc27kNTgS3p19C/b8jn2+187gxOfx98f4f+JpEkfT1fid87gbJC4o8e308330BD/NOmXiNvDfg32W5Xwlez+rfzwHZ+NzGn1sbVx6C76n/Zw3H5x1IONBzp9vSp7e5j/z8Dcaf7/SU86Z/I2/jdD/OvF67LdrGSpKxuu+6g9Bby49PZH3R/07+8OP00eznE/C99/k/gt+i5+s+1Xhx4lHz/pKM/7TMPsq+M/601Dln9buqOz/y1+Nv1FZD9Bu4uc2oL/G9Hci/TXIOMA/BuT8JPw98dn86hf6Srx14htvw/8vcAJ8mf2upv/O2TeXTnzQIvovrhvWhAelH8ifTb5O8Z+sP9Fbcb3wO+P5ZP8nXjnxb1vl/Ax6j/HbjbQ/nH530P7F6l2SOFz+n+fuFOk8f7O+nHXlCdrL+vIS/SPPkzxf5kg31f5G5P5H/d3kV7DDNp4z28KOWadm7y3Yvwn7VdHOAPZYlfWpvD9mH1r56Ymvh+/Rd3f6zPpLP+msvxxO/oPIX9wvvEi/qMk/Oml/F/n7kv9G/PRF5130l2f8gXfArM8dp70XM36il3jUT2OfUhkna6eU9Wz+fIR+fThMvNtu7PEDvq7JPgL7rEPvuXcn9/B8T39Xs/8HifeT/pj8B3iubSfdWXuzM3/W3gg4v97a+XfQ5970+570MnSy/3ZFqYxHsm/24eYY985Q/i3pY8m3kN8fTV935fxX9keU/0D5GxNXmflW4nErtAe767c16etQz4XH0d8064H6/yT8Zb3+FO3tY97VIft+9JnzD4kXStzKCfg7O89H+sn9CJdLj5Z/qP7W3jyxLXyIPg5Gvzf+sv7cQP1GuReFfz4Eb5D/m/G+Lr+YlvXGUhkfz/oQrMXO0/hXa/zWxv/zcEdyXpD+lfgH9arhYwb+eim/NOt69LcTvVXO/Q/q5/60i8rw37mwLrCH/KHsnHW2nKPK+akm0Q98Sfs5/zegMF5l/GqR/khfXdnlInqcnvE1+3cZ7+h7s4w/2imh9wk+6mT9tRA/mXjKxE92pP9O/q8Fx6Cf+eOp2j09+3X4aSf/jtyPA6eivwe5co5t9/hhzp+W4f+9h+Aq/ee2xMHBxLdfrn8eB3Pfw9/ssEh/eh8ugIPwl7jh3DvQHeb+kh/ZawicE3vi7379f6JxNPtv2Y+bRr9t6HXnxA/lfR69+7LuDXvm/kPjydv0t8LzoxP6ZxbOXeYcZs5f5rziIPzlPONdmYdKZ53gV/0z50bq6z9V0fsdXzvk/G+Bn9k5d0q+/fSf/sofRz8DpRP/mn3neYX5Z2X9I/vYy3NPD35H0stUdj0k8R34bKG9ubmXiD8t01+aV5ALXgmr0tcQ7b2m/ZyP/JneivGl9yXuKu8//m+n3dH4OjD77Oy9AiZeLut7iSdvrF9lv+Jn9a/B51n4eRj/r2kv5y+mwZzDOEX98/G/hp1zbibxCw1zPkv5gfJv0D+2LNw7dg075Hzbpvidk31g/pLzJCfjZxzcgv/GPivxd0BJ+/Q5C3+j0K/K7qOl96PnGuZ7teD7sE/2LxKPg37m45l//5FxHT85L/SU9hMX/SW5Exe9ufwB5gWJy98m8arobSzdn98Xz5+sKjw/8jx5A/0/Ez9Eb1vJX+n/LbN/Sq7iPYafaGdy4gvkP80+d9HrvuRcTJ678JPzC6fCxE8PVn8iejlXcYL/c74i9xLdmudS4Z6i2YkHSVyB9quwX+YNf6l3Lsz5+SdzHpL/PSEdP1+Pntqw35PZRyJf1l+z7jqc3rL+2p9/5L7QzOc3VC77Dvew766Jp4799d+j8JF9zuxvdsdvZfq/23h4Dv3dZL5wDD3NkT4r98xkX9n4Ma1wP12Vwn0azyeeC/8Xkqc6O95AD1/i7yl+lzj842Hi77tp7yT87oTP5fT3Jv/fWv6uuc8H/RHaXTfru9nXzv4C//4Rnz/mOZL1M/paN/vO9JP4qIz3P8M8D76hhyMSf8p+J+b8Kv3lftvl+J+Nn9wP2Ul/XkTuxF0m/msq/32W3ybuuCf+fka/tvLr6scz0F8h/8GSdnO/nXaGaj/n3Irjyx3K/1PYb87+clXyZH75qnqJz8z9yrlXOftauV95tH53knF5jHTu59qAXWvCzPe6aSf3/+Ten/r4y/0/mZ8fX7jvIPPz7E9kXyL7FPtLZx1ia/SzPjFFeqby/90fJ537T7K+e1xhnTfrB9eQJ/dBfYb/Q+Tv53n0A//omHhO+RPoqwZ8kf3+ynhThv/uEfkRzs77D7rpf//iP/1vmOfFQ/ATeAD6g/l7xqv79IPsTz+K3yPJfwS8Tj983bj1Bnwt98Wgl3vZmmbeI5372a5n3zw/ck4vz5GcF8z7V97HJsv/Xf2z8fNT7gfMPk7eV+n3NNhE+2caB37gh8PgS/wjcf2Xwfbmi721353+W5E786Gco01cW+LcZuA389+cJ8o5o5wruoL+DzR+fGr8mKn9VuQ4zvgbP+ghHfvflPUi7dwg/QX+s6+Rey8SN5P9jdzX/U6pjLnPu716I8k9F14DS+Q4jH6H0+tS+DR7PU2v/1+c2jjlX0GnA+yIn6fKUPF6zlXmPBJ5jsx+hP8fgYnvfkt6iHJdpbMe9xi9zoJV9c+/1V8/8xJ8Zr1tE+NAcX67XeL32P85/E+F4+XPp/9nC/RCP+t3hxp/ZuZ8Or6WZH03+zfa35n//ZL1Sfy9zJ6/GKfv1X7iPqeoX4z/vJB/bMdeXQr37QzTH4bDi+GN+KtqPK2Jbi04GZ3cN5x4vwH4PQx/C8tQUT37qdK5n3t14d7ZOeSYQP7El15uHNwMfkK+d7Nvis/x8EP5ua8p5xty3mGnwvMmz6Gsk+d59GDmN/R3LHt2QP9F/eJ2flkHdqm2Nr1u+H6kytr05xbiN5bB9eg/9+Hkfpy2uddHfg3yvE2+rf3/ETyb/++Lr9y3eV6pjLm/LvF7xfs5Eh/dqhCfnfjoW+lnceLO8Zf4lLyXb0V/v6GX9/Sfcv4AX1mfeR6d3pn3wT4w51GbFe43L54/uC73KWWfmB3y/YU50rlPN/e3N8/+GnlnkfMnflxHftXEh+D7O/Jcgr9x6N0CP8Lvgfwt9yJmvS3r1bm/8zX+/Y3n/Hq551r9M9Dtkvtncz+Uem96rjwMh2Q/kn7nGa9yv2ruW61HH4PQn0B/t8L3s87CHp+iO9nzK/f7X0e+5ej/lXvq+MM65Bmo3+Y+kwNy/xr/r5zzKPC1UhkfYZcryJP48OyvnpF1FemFuQeFfl/H75tw3cxz4YnsOpBdP8g9LolD4B953hT7R+LpEl83Wzr3+3yQ/WN6eQa/xye+iP4y/896cxX6/dn7VO4Zag5noJf7yXMvefppzuvV0d+7o7PQeFBFfp5ffekt5/Tz/LqV3cfDm9R/Pudx2eskfrIjfAedmeTPvT+5LyH3I/wmnX2h7BNlf+hh/L+O/1lZb9B+5qefsMvm9JH1yVn09Sr/m67+zdkv1p+uLUNFpovL0s/90Y9/LdPOZvjPvncN/ahBqYzZ/94T33m+XVF4vnXX33I/5DmeN7/qty+yy8bo5X7K3A99I3kbJZ5a+y3Rz70FucdgVOH+guPJ+wWsrL2sn25L/pxLzjr1nfw39xc9QY+9C/cX3UP/e5NvunQL+sy60q5wff64Jt9XMF4dRR8fS5+s/qv0vzznPuH++X4Gu2T8z3c7Mv7nXtQB+k/xftQHjMu517ktPeZ+59wX+BK676NzG/0fY9zuzw/2gRfKH4P+9vpNW/rM9xsSt3ZX7omQvj/387DPPOni+2/2Uy6G2W+5GL97aHd32AYOo4ch9N2P/u+Hc3KPF3rZN2yq/QHq/2G8OKHwHYZHE+9Yhv/OUU+Uzv1dWVdNXExxfXWjwvdTfoJD2CH2z3dcYv/4wxT0J+J3DP7P5R8d+OVK40HuWX4v51/oa4R+nftXvkX/IfIcA2fC3HeSc/G5ryr3WGV96kv+2ZZ9t895Bfxlfa5Ce2PInfW51p57u8HEOy/Tf/J9sBK/Kn6vKvFHiTv6OvE9eb7S9yw4MN+nif/qLzOMO7/zh3y/ah//b591qIL/rZLfgt+MyvOLvJeTP9+H+Tf3GOR+GfbKvd655zv3e2femvlq5rN3qD8dP/vm3p2C/n6WvyDzafUfUD/rIYk7TzxZ4sgSt5D3q2foJe9Xi4wvl5L7H/p/QHvXoduYn5yPTj31c39v1i2zjpn1y+o5L+z/9aVzP2PimiqzTzG+Kee6co/hosI5r9M8z/5JXI7+umXiFtl3f/TvJe+Vua9Kuc0L31HK95PyvZw96C39K9/PuZD/Tdf/66jfHH/VPZdOw0dfuDT3C9D7aHYeCVdnvmL8G5+4A/Ienv6Dn1VwP7iwVMbsV/Rk13y3LeuBmZ8m7i73I+R7bd+w1w+eq4kf6KV/dKbPQ+Chuaco90Nk/5c+E++e88UryfUL7Apn4T/ntibl/kDj+N6JnybvpjkfKP0g+Trx/wX8dxvtro//3NeV+4NyP1P2wfJ9gbxnZ511YNYv8l0/9Duin/jOdnmvIP9++M/9RDPzXRJ6yTmLzcj3Cnskbuow6cRPHWQ8yrmYnDuvr/4a/XM7eCJ+872h/76Lhf+st2Z9dZj8h3MO2v/7oH+S/tsc37mfP/d75HtRiYuYBHO/7kn8ow/8BZ2cD8i9WfmeQr6vkP3JRonf0M9q4CfrnhdmvOG3l2WfFv0K7a0Dd8/7Lv8/gD4SL7wTvU0k3xPGjSX42I593sLvEfp37tdKPNBz2s85r+I5sNcSR0nvb+T9QDr3LL6vXEv1T5Y+nR9MTHykeufyk3yfbpXxZD381aOvn+NnOU9kfC2O3yOUa6T9JbBe7kMx/vzouXam9Df5/g17tiB39cTpZB/NuDNK+lt83Jj7HaTPy/5C7muXn/evefi6pwJd/H+u/BHk75lzBPLn5z519m0mnfO7Lf1/Ir30hgvwe6z2Mu/Keckl/Kq4n5197txPPRV/+T5nvm+R7xNk/bJB4n1g1i9zv2Xutawo3G/5Pv3kO0hZzztAP3gWvdPw8Yx0B370XdZD0Vuc+W7i7zS7sFTG4v1704xLB8n/g3wdMl9l33b8cEXucdPePuS7nlzL2O2F7L8Yv3Kfw3jtrUe/iS/oQo+Jm4n+O+fe3tyT5zl6CPlzfrtpvr9RuL+6c84bkG+5cjkfcW/W99k/5xD3137uZ8u9bCO0m/vZEid0bmF9dX/lt9S/v9KvxuQ9Tf2sv2demHli5od/669z6Wdz8vZWLu/ziYtKnFTe7/fMOXHl39JfOmb/plTG2+Fo/Dyc+D39YQf4E3yW/YvnGv67XyPxD+y9F/o11ZtAvkMyn8/zmBxZn8r3srIuknWSrI8caXwanXvM+WvOH+2c+/gyjpL/f/x/lPJD8f8t/TZMfF7he1PF7wsPy31O+GqqnVvl98q+HDoL2SP3e++v/AGwE3wTP6P4b94/jpDO+0fuZTiJHBOlH8dP8fuSf/CPHdFrk/l+9MbPcn9sc+1lv+iqvI/QXwf0apFvBT3dSv819dsr0b8aDkFvJP/pqF+2ll6A3zxfzi+VMc+ZPF9qJd6KPIPV20L+2exzERwI22l/qfF0MWxH3g7kaIOfPeEEmPvJ16Xv5fR8SRn+my9tQK6jsu5NH79l/1q5xIsdlvuXyXMB/x4K/wef0X6+75LvutyRuET50xNPr/19yZnvh7+I3o789J58X4H8z+V7SrF71ntzPivrPsb/zFMyP/mNfvLdhOL3FJJ+u/B/vq/w/917k+8LN8v6Orlzj3Xurx6L7zXKVUI343vvCv/nvk/p7G/muxq5p6CfdO6Rzvpi7nfJfS+536Uhve6U9y31Mj9/XfnByuf+/tyP2t3zdTP6fVv6BnTyvfZ8v/1+mHtsd8l9b43Xbi/0N+GftROnCB9CP9+bOke71Qvfn7rd83g8//qcnTL/GINOC+lG+utU6dyXnPuTX6Cn3J/8tvncpdp5RzrnU/Jd6uxX5dxEvl9yDL7zHa3i97MOZ9fn1XsXnqj9zMNzfibz9Lvl76O/nGnc6ErvzfHzfz09XyB4nHXdediXQxs38BtJpaKFRHJXlDXZImuWZEm2rKWSKERFpGRNligtHkQppSwlCoUKUZaikO1BkT0q2cv6Hsf7+3x7D9fxPvc/32Puueacc5u55jrnnPldX6Ps//4d0bCEZbVK0LNxCR+oWMLlVUvYb9sSHr59Cb/X7IQGJeyiPHmHEk7ZpoR3qt9wqxIuQP9Rz7fYroSnKL+j/ZF1S7iwvITv1y/hNdpPrlPCAfi/F52hyiepb9aohHfVK2E19A+uVsIXybMvOWerfwa9Z0MXf+/i5/mNSzioegkPRGcY/o5A7wfP3U3fH9LHCvyt3rqEB+BvMD1/QP8XoHNAzRKO1f/ELUuoednLW5SwA/7H03czfO2K7mbq6+l/jvoz4EpYDd8VtFtDr5eq33xTdD3Xu0oJP0V/EMZWajfX8821f3OzEj5diVz0M5O9zlU+T7tz4Zn84BnyzUR/Lb32pf9PPN9KP8uUu5WX8LMNS7jLRiWcpPwR/i/iH99WKOEv7LGt/n5hj+0ql3BvfMd/HuO/C5T3xHc3/M2gr5fQm6l8pvqXjccb4Ua1S/iU5zuWoOwmdnxfeYX+rox/b66fKv9u34rcs8jdTPkZenxHf9vDh/FRR/sftbsWjoedyHkcfbWBKzYoYVvl15Vvhztofx7+n/X/jf3/CuVq/Ochdh3ADhcZh+8Yr7dp9xTciHw90T+d/8woL+EoOJb+r0b3ePq7Xflg8vU23g4xDv9Wnmi8vG5cNOEXr/DnJegfonxc6Cp/gv/+m5SwtvF/hfJE9TP45VOwMT4bst9f7LWC/S41H89T/yX9TYcPop/x2pEcI7W7l973w//n5D2K/FPpdz98PKb+Uvgrvc3U/t0SlHWGffnxdZ5b4f8rtL9BeSN8/WA8LyD/RfTdknz/ZFyYV+ebjyrpvxY5l8Cn0b2EfxxEH8+wy1D9dNV+X348EL+T1S/Uf2vj/0v9P0SP8b/J6hfr/1XYAv3u7NaY30+C29BHHf47Bp3N8d+Bfzyhfqh+G+OrNvono/Mw/I4da3rudePmCfzXZN9v+fOV5pMryDNA+Qn0N8dXF3INbvDv+suM11fhbdp/4bmVynuo78DeTcnXVv0+9H688vLyEq7i/0PgVfT5NT+eol3sNhXGnpnPXoJVyZ/57QbPf26e/QK+Tz9N+N8g+ruDXM/pfzZ7Xg430s9d9NmyDH04Dh5G/guNs0fodzL7z9B/f/asC2ex88b4mKtMLWWjYCfPf6y8AF9NyX8+/o5gj0fNT1NgG/T3Ma8dit4x7NiL/M+T+15YXz9f0FfmjT/hY4V5ZBK6A/0/89Gu5SVcjJ9H4MOwIv1MJPjr/GOu8gJ6PA3/+6PX1Tw5kv928HwPfM+Gx9DTEeRYxj6T0LlB//er39Q4rcyuT9HvHPK0I+d8eAb5H9VfT1hRv+9qX4c//mxcbKk8jv67mA9rwyPQfUD9b+TbGs6lp+n0U9n4Hku++yIn/XTT77b4a43OneUlzPp3IPnLCuvgHbV7mX/MQu9NchyK34/Ra4mfu/T/j/dBR+uzv5TPI187/PwDu5LvSPpbyL9P188C5bPQ38D74R/vgTLl+fQww7/bslsb9myC34P19xG/XMu/hho/S+jlXHqpoJz1bw10n0f3VeWm+u+Obr4fJsMG/K8Vfcxkz/8qD6afa+h7Nf0NVt+PnzYn3/XwA/bKfFGG353JO5Jep9JfJc994/GM/+76/8F88SX9luv/AvIPybqGHpfwpwu1r4jeC/ynDN+30s8g9nrU+30OPAe/q+h9FXpV+WUz/B+MvxOU76bHJ5U7018z/L2gPuu/meaXP/ExD5+Pk/ca9trRe2a5+kfRrc7eL/t+aq5cC/8fon8XvzqefPey/7vo70Uf7Yyr+uxUxu4bwQrwMc//pnwcbKN9vsc2s+7IeqIG3ET9AN3UJdd7ymfR8zx6aYP/Y2EP9sj3zi3wODibHzxMb4/Ah2C+z9Nf+Ei/D5P/aPq7h3y7sMtY/U/QbgpsAt9n55WeH0bfrfnfPfrP98rF8AP8nad+Fn9PnKEYX3iFf18Pdzf/1yPHp9pNQX+58pn4+Zbeu8DxcHPjawR/GYJuHfPMbfSyH/9pAbfll720v9f6ZAy8H+5JjpPNDx/wh8P4RyP6r8KfTjTOK+r/DvxfgN8DM66Us56vis/K/OgXengQf3sYl58bPyfS/7b638L7ZBi7Pa6fk/N+Rb+O+g7kX0u+deTrr/7T8hLWx1++qzYg9wz9va/9Ofy9Gbp7wvHqfyTXOHq9CV978Y+X0PtKP8/S2zz1m5kvWsFu9DsEne/5y+r4DX94Rftx9Hc1+1TTvof2Pc2f0/D7D72P0n4N+14Gf4Ad6eMofGfcTENvDPqXGedV6bNyeQlP0N+tic8Zv0OUt9H/AHp7kN3nJ+4CXyXXM3ACeX/VX2v275s4Hz/qqP9F+lvBTouVz0G/duZ988QWyk+Rvzt9nsE+vyg/RY+L6WsP7Q7T7yz6SXxgF/UzlRMfuKS8hMfyiyH85fW874ynlfR8cAnKOqi/nj6a0E8NOIO91ig3gzeZRxKP2jLjB25RGE+Jf9U1nyUOlvjVVfQwTnkCPu/P+OevixKn034f+s+6rn15Cefxr4Oy/jGvroYXeS7fv9tlvoWb0Ffiw5fyux2N253gQvSv9PxaOAHOw3/e74vgq/rJ+/5L9m9Ezkn6W8r+L5t/LjVvjfb/H/P9pn1j7b/hn5l/JpgvK8MW5KqCvy78tpX6zsrX0+tBxu/m9P0jOyY+29V6urJ57jv1r6pfwE8WwgX4+hZ2Jd9u/Pk2frOYfLXI9yO9P4zOLZ7bg772hHvBo9A/1Xh4Gf1V5HqS/E/wt8v5w/zyEj6e8eP5QdoPRm++8hbkfgY+C0/Df418n8On872gvjV//Uf/H/Cfn9UPNN5vYt9ifOZH/N7m+UboZf5/iT2+oq+FiVdl/ZT4un6OgOPUL6bPT/jrTPIdmPc8uZaR62PzRC/1h+ivPfmW4G8Q/V5agv8X92aPfCf9Yd57x/zch/3PIt9S/beEI4yzhdm/0l/s9ic+dkr8DN9baP+B8rmJK279b/6r1fs3/5sYzzPML5fkez7xssSzCuu4rN++IvdwWIf9X2avCej9Blt4Lvta6/C9N3yN/BWyHmOvY/T/EXvn+2kqfS8zv7xCvuhpkvFfJe8V/3+cfjclz3/Y5wH+8xr9TKXPa/nFGJj49Qp8naT9H8q7oP8pP6ig3/Pw+Zr6zvifgN6b5Noy8QP2q6v9l+Ul3Fv9SuNqGj21VR//eAH//fG9CG6WOG8J1ttnqXLsszf+b8D35/RZQ/vPyfsFnKfdMvqrbD5+mX6ux2/m3+qF78UH+MH50X/mH88Ng8fq52h0sx45SnkG/VbH70z06rN3U/1vQx8D6Kml8vn5vtf/eYn7wTOzn6a/PeDH5pubtT8Fvb/gScbbgfRyLL3Fv5eZL3YoL+Ed/r+JeWMf/dxI/rM9P8r64hzlhfrfwHjMvnY/OJteVsOt6ecdehhMP6fqdwS9PYmvAeR/M/umyombtdE+37OvGX8jPJfv26xbMk9kfzv+N1/7AXkf8sfD0a+S/Vz87ULugcZLd/NX4oAbZn9P+Tb8D4c7kf8Xcj6R/Wrjcyfj8ezsT9PvOM/lOz7yjUHvWPb/SXmY8fMifsYkPkkfr5L/fXwkv+BD7Q/V/wp+9AI7/cw/xmm3C/terf1D+Dyf/i7G7yrPVSDPsHzf8av6/LqP/rLP3Eq/E+jzRf5aS/vsr2ZftXrmQfppg/7m+NsZvezzzcHXY+TZn3/vjs5u7P+J/38Kh/GDx43Xd8n9pfljlP6Hav+7+fNbWE99D3JNYf+Llc9p9O9+Ml7PyvqAPNl/v8r/t+O/+X55E79/wcThdkA3cfE53hNdCnHyv+mvFfuMtN78Bv/78ZfMf3vS58Hqzze+NlY/Vnl//vF+YX/9Wn7ZQvuT8ZP5PnHwK7RfRd+/s8NQOBb/P/OnH+EPMOvbKsbN6cbFCd7P7WFxvZh15FD4A/3/ob9z2fF09X8a94fz28PgA+R4hP9+BfvAZ/F3MvqJn7RM3An929X/h/3O5zdHZH7kf9lX7Ov9WKa+Z+Jh9D9L+Ub1dxrvg9jlR3Syfsl4yfjJeLoFf6P5zb3wKs/vqf5D9H81LrJPkP2BB9l3Fbt2hEv0fyy7jcX/a8nzQL8vcTVbv49wd5B9OpHrZfN81l/NCu/fvI/z/l3JP2rQ13PkH5Hv78L+6hnwTfR/zXuVv32t//+y4wp620q/3ypfjP432q+A38LNtP+dvRejO934Har9XPJvW17CF5V3VX+j8VKB39aD7dDvx/++U55ML5vSf9aX2V9sqz7ry8QzE+fchn4S74zf3mQ8FP13KLmuop/F/Ki7fmaw80/8aI/sI6FfJXqGL5ifLkD/78T7YZn+Bqk/KHED/TYxH2b/+RL6G+C5wz2XfZpj8fFN8gvpczT//o/6Jzy/tfl9EX6zT/YW/dT2fsv3wcneJ6/DrINPUt8wcXDtT0B/ifob6bsP+a8nzxDyj+YPbeh3rfG4OT28w18rofMOP38C/80K8c2b6SHxzUfwuzp8abc+f7ME69cXWW+MoK9J+psIF3ku8c/Zxstaep6lXEH9NP1mvO7FP/J+Gkbf35Dza3iD5y8gdxv9D6bHl9R34O/t4WOZJ7TL99Fd9DGvvITX4u9W9S/kOzxxqcTJ1f+u3fGwgfb3s9M13oMfKX+iv7ONy52y/6/cM/sv5P0cfgEnJL6Dn7PYtyH9d0N/nxKsz7t4Tz/Jv6hkPqqDTvK1kp+V/ePkl2Y/M/4/nB53Me52g3fT/83ZNzHPbMqfty4vYRv6WFTI852o/48K+om+sl67h55OV66GvwXoLDXe96Cf/p57Fv2B5o0jyV+L/MlfeJ5fLdPv9vyxNT+rl/1R9S/Bt8ldxfhrZ17cwjjuoZ8D0FtNDyfn+9L/F5lXEne6DH5G/x3Jl/flJPpoqr4ivV5E/uM93y7xY3y9BXfKPIO/heRpTP/DlD/S3wXlJexP33fzl7vRTzw1+0aH0sdv+LseP3vHfzOuk39Kv4mv/6yc+PrKxH1hMY6S/fOzYReYffSXjadT+eevyTtCfyB+9/T/LdH9IN+/+H+X332b9XjyyemjefIfPX8FOsnn3Jj9s8+f/f3kN11UyHP6lP5/44efkGNRYf1aK/FIfrU8ZXrIfmz2aQ8zT/2Q/Mu8j7T71Tqgh362QucI/ddVfpD+/vT8BPQegGvwdzn9dOQf19NzVe2fLCMXbA9PZb/pidOWl/Bk/8/6/FP6SZ7sn8r3qU9+4u2Jx7Nf9meSH5688OL+QyP1O3j+v/y9Mv4PUd+Xvl4i97aF+MwphThN4jPVc56AX9+u/iLt+/DP5IHuTo42+Kmu/2czT/LTXvgcy5/awzXwa3rcp7yEc8nTW/uN9J+8hcvhjvBZfnwJv/mZn2U/chC6b9F/9ruGKk8l/8bkb0eun+nhV/J1o7e55unuykPw/49xV5Z1qH7q43+Z/hI/r5P8bv19Ro5b4Rr4B/q30fvF6J+E/nT6+tr7riu7tU4+lOe3xW/WeZWUMx8mz326do+gc6F+sh95fvIjvHc20v/G/GNI8mPh1/pPfkTyIbLPmf3N6dqvy3qSHy3M/oXnk1fRh/6S73d8Ccrug1fBSfR3JvkqmT86sG9f8h+R8yjJS4PJ/5nAv6eVl7AxXMR/Pk4+Y95riU9nP4R86+dn9DI/D6X3S7JPRb+vop/4buK6jXLewvi6AW6A32n624r+2pF3D3p8HJ3N2W85eqPofS96LU9+JL5GW8ddqPym+jsK8Y8m/PxE89FE/e7ODyrwo+fUd2Kfs2BHuGPmO+1zHukDekx8/hb6Ggz3Jt9l2t/BLh3hb+qvo9+d+EnywTIfZ/7tZF7/nNx16OtKev+YPBXItx3Mfur3nu8H58Hl+OthvFyQcQcfUt+YPb6BZ2t/fM6L6f8pdt4UTiLP9uRN3O5PzyceV5d8xyRvDd6RPF/12QfPOafsfycukzjNXJj4TNazWd9mvdsw8ePko8NV7D2Cf1yJXt7LeU/n/Xwpf3kkcVjYOvlnygvgo/pZR7596LUevgYl/8PzvxpPb9N38kwSn31F+yfw1RS+zU5nF/Jrkm/Th32+ZO+NPD/SONuwvIRDk7eTuAq8lP8+mu8BeCYcQr7O6M7H54XwT/6Q/dycm5io3Jh+c27jau/lmcZH8iv6ZLwoT9Hu+byf2PNjfvWV8pGeP5qeT6GH3ZQblZewS/JdYTF+vJA9km8+2rjL/nXSRD+D++k3+bc98n6jj5XZH2fv83NegB+fDX/Qz5mJ36P7PT7uzPhi79v43d/a9y/k72R9mPVi1ofF/axh5r8jlSeY16rBgxM/T3yPPq+G/WFV9Zd4fkvtq8DTyDGF3iuR4xB2zHmZfXO+Be4Nb9H+U/54G1wKD+Inb3svP6KflvzgdfLtSL/b4becX0+hv/7s31t/O2bf2vMt1O+c/7NzK+V8z5+V+AR9N1L/FbmzzvoSvoH+NvjZj6Mt0/6U5F+zV+KfyfNNfuwA5Sth/+Sn8K8d6Geu+ePanM9Tn++hV/jVVoXvo5axG1xFv5fie2fzzc/JH1aeQh+703/d8n/LM5A8f6t/K/vonluFv6bmm1nG1e7Kt+BvXOJf2Q/T74Tkz6KX7/18/29PfxP1/yM7fqzfVp5vnbgW/S1PniH5i/sB2Z8fyJ5rzItdjItLzV9Z787jX/vwq+roPof/jY2Xydr9rt3Lhe/Dg/VzZWE+qMEeNeHbxuvh6D/g/xPhBDgd/b7GWeIeiYc8rv4n5baey3nDnC98Ev9X08vTyh20340+mybPgBznsPP17HV04rn4/h79j+j1NXItxmf2h7vhb1floeXkVb6P32f/Z3hh/6e2/x+VvHj6uQgfZ/HLVvhNPsxW2lfJ+0m/U/lZK/Xfstd1cE/yz6fPbfjFffrbnp9dljxB74Unc86Bn0xNvKoEZTfDZfBX/F6Gn9no1sfXcfS7B3mf0U8D/VyS/H763T/xS/z2xl8r/l03+WLkyos15/vzGZx4SvbV9+IXX2R/oryEyf/tZF7awbzXWXmO5+vzt3fZuV7eP/TZi30TJ018dEbiboX7F5IvkfyIhuzd0POJc+f8++H02127auofTH4Lvk7iX5ehc2Psrf2m/D/zZ1lh/GfcZx2WONHoxOtzvixxOnRzLvy0nIc13vbX/+H08pfnB3ruePzXJ38PcuS8Zs5n/oreBex+Nr4O0m+N7Ddk/yfzLfo5r3EP7AWXa98Y/Qbob46/xE9q8q/9+NMw9Y3V/6L/5PnnvGMH4+GWxPP5Vz16jn+t0f8Z+t8keQ7w2RKUzUXnCbgF/nMOM+cKc84w5wsPwM9Ydr1I+Th6bml+6cGPG9Bf7mOojO9jjNtiPttBylezy6/a3a//Y/SXde/R+Q7I+aSc304eDD0mnvUmvo7kv7/gO/lbe+U8o/p62YdF/2b6XgOfhNkPnW9+qMBPm6HfnRzvGS+5l6Kueaxi8ge0y75S8fx/g5ybzX5VeQkTX6xM/ifh0Mz/nh+tfLn6xEcm4H87/NWi/6X8aV9+eqP56kN2zfu0Gz1lv/d9ev7W/Jf94HklKNuC391lHF+vffZVEzcu7q+2o9/3k19g/dg2/qld8vNi59g38dVK/PDnQnx165wHxGdXuDDjQLvE4Yrxt5yrzzn7K2HO1/+ccYLvzsbRDezQhPwV8V+VH4zH/yLyjKaXWugfoP4U/jSH3q+lrzvQy/0qzyeeiu+cj8t54Zwfzr0HOT+8SSGfKPlGDbXfHv1qOScBV/P35Bfnu7T4vfqS54fT63x6yvy8kN1fhzfws3nZX/Z+fACfw7VbmvwH9VmI1KTfP42PEeafU/U7Unk3ev/D+Lg2+Wb8d3j25/jPlvS3OzwNH3l/5vsp9yrk/VmbP9zt3/vB5CvPoe8vtBuP/znseZD6/spH0XvOqS0onHu5EJ6V9zl91uY/S5OPRD+5j+ZZfrJY+a58n+N3LnlfUK6Z87fsehH7XWUemZxx7vm34UbGw+Psl3V7zjkUzzfcTZ5X4WTvo/bsOUO/p5PrjHyH4G8pfVXDT1P2Xk7+jvwn+2jJb2uvPvkMyW9ojl7yG5K/n7yJ5FEkf6KR+aGd+eUE8h3OPjlnuwE/OpPcB2l/tvrqypdr94Zyzusn7pTz/Mkv3Tp54eaNN+j5Kc9n/d8bnXwHZP2/Inlhudcm3/n8/Qp+c3vyzvV3Yr7n/D/7R9lPyv5RuXHwX/PS4+x8N/5ez/uJHt9QvgWfOfeWc6MdC+dHa/D7mrD4/lnA7rlXZGv63ctz++Iz51hzrjXnV1/x/xPyHYteE/x3StyUHjaAOQ/bXPnN3Auh/J76auStlfPqygfj70H629k887lyZ/Wb4edWfrEo+ezs15V/Vcx4jH/TXwP91qXn5Tn/gL9B+psHN837D53ce5Z87qr0NR1/NZOHxD6rlbOPFb84KveTeN/HP/KeTjx3vHGU/JmRyo+wVwNyZv05y3wxG3bwvjoT3TElWH9O6h+YvKBLtMs9OvOUN0E/ea/38evLivmv5Iq9PiPfj+T5iT904R9zlL+n/7Xs19PzWWdH3hrKjT1f7v8PwQfZJ/cF5lzFf/B3u3lrODyPfR7Db9ZviUcl/ybrtwPVT6GX5PEmf3cLesx9YFmvvoXfifSzFN0Tkv+e/EX+lvNNibckzlIJ3/PNYznHs/78ZMYlvkbSc3X2T97wb7B4v8gb+KqQc0X4moJ+8hmT3ziwkN+Y77t81w1nj3zfHVaCsrfgbbATfnvSx2x66p08laxDjKun2W2DnO/K+Sz6msKeyYdP/ny+n2/KuaCcR6Sfk/SX9XbW34nvXuD5tfzgtOwnen4aNnOP5UEw50+WoZ/7yp7OfJD7JI27YbB39v+0Py779/rrB0dkv589XocL4ZicZ2Pv3dFvCnO/4of4uSb3ieH3vORHs+8B/CP6/Rr/o9RfQ74rkmep/xHJ52en0+jz5Ab/pp/1do/C/lDel5XN30cYh3l/7qf9VPS6w7b0l/vRquIr+xG5HzH7Rdk/OiP7BFlfKhfj89lfGGfcb41ebfia+p08f7v2a5TrJj8NfzlnslviDtqvY///Jj+Q3sckn8P4H05vpyu/lngP/X2WvAT6W5r1FXscAreByc/PvaXJD8h9pjm/krhy4swv5jxh5vPc1+C9WTw/Pgm91vy2K32fSs6K+P1O/fnGX+5TObkE6+O3q2DikX+YN16lh/vIsTP5vsj9CnAh/nM/4Ynsk32HxB8aJl7LPsk7zf2KyUfdjbz30dd56M9V7qPfc/2/HN6SfRZyHwormoca6L8e/Wa/LPtpjei/hffLkbB39j/xNYc82V/KvtLGic/Sf8bdYfAn8iXfYiBswP9yT8pf5psT8f+P8lXkTz7w/clLhTm/tYR+ck9J7icZrP0t/DV51oML+dVZLyafbHt+OCDnef2/LbmvKSMf/d2S9XDuFUg+buIN5Mn9Amvg7/TzE/tchY9ivmPysW9Ht6r63DeV763m9JvvsfXfX4X86twjmPsDi+fWbtJP4pV35H4G5Zynzv1W9+An9z7P9HzuYZjGLskjyfbFAf5fvH+5s3YHor8J+l2Tz4vvR9T3y7lf9DZMXjh+E5/a1P+n+H977XfXf+JDiRclPrSD+Sd5PLvCnMdL/LJu7sdU3h+d6/h16/IS5p6B3C/QTf8LC+dG/oDVjOcn0Lk553wzPvSXdV15zksnf8B4/Au/exfOl+U+g69zLw98Pfl1uf95m/9/+0bqj6HXyfw4dlyO37U596ic/OXkb6/2/2J+dO7vTv5Uz9xXqr/bE8+Ew2DyAt7N+5J/fYrejug/bD11f+YHfran+n3przr+6idPCr1xxlMV4yvnsHK/VM4fFs8Fxb5Lcv9NCcr6w7P8P/HgxIeL8f+z2e8mdvs9++Tq25jXv8Lf83D9+Sf9PARH0X8v9Tl/kO+e3+kv5w+25JfVvUerwdo5X+99fTQ/Plk552uSH/hR7g2DyQ/Mvb459nUDfEe7+Ef8In6S9WH0MpRdi/oZSR+70dMnynegk/OvOfc6nL/k/OsvyQPNfovx8SL+p+O3F/1m/zjr47oEy/79HHzWSXw45z3h7TD7t/l+7lr4js738z7sl/t23kC/Jv4vw8+bcAEcrD73ag6GuW8z92z28PwvaQeTl34l+6zN+7pwP8ti8qyl33fYIefHbizkrzfT/4vlJcz9HGvYK/f8nKz9kewfP8p3Vi31u5iPV8M65LoH/d3pc7LxP9X4exj/bf2/Dzsel/vjEs8sQdkrcCJMvu93nl8Jv4UL2Gs2f90TPkmOPZL/y9/yXs65rbyfs3+X/brs3+X+pra+m/Y2zx2vXG78vEUvz8HTtK+k/TPstb3+r8TnDsofkbeM/YrrqQtzXol/dMk8r/9K2nVD5jrYV/0+7H8Keneik99/6OT/y/0/+3fdk79Hn83gwYm/0dsl/PhedGqS+4Gcj8u+uHa5ByX3n6zK+CsvYcZl9jfzPs+5kD35V97vHYyL+9lnfBC9h0qw/vcdMp7z+w475PwOf+rpPTdRfT/0R+m/v3J+x6Ff7h9kl+TnJV8v+Snrkg+XhJnsn2uf+5yTP5bxl3n9Q5j5fQI6Dfhb9gGbFPYDcw6leD4lefW5L+qirI/ZK/dH7Y+/xLe/yX1o5SXsgF4VdhuSPLWct1PfKecLlN/Wvq/+PoY35p5rdBJX/c17cbl2ia82z/k2co82Prtpvw695FXsoJz8itw3Pgj93Eee+8efMb4+hmfAv9h7jPHdMO/hnHc1vueaF17I/Ur425K9lxS+LxLHSP5DH+WG9P+o/1ckfy9yLYY/wdX5/QTyvgBzT1Xup7qCX9+Hv5+8v7uw/3vkS15fzkcm7y/70+0K+9SvJX5rvMyCjTl068Q/6DP7qVvgv33eryVYf4/iFcrJc2+O3lh6fRtfWd8n/zp518X7wx7S32h4NWyt/8wjJ/GHnI95OutD89dc/SXPOvnV+X5NPPsN5cQnc/44+SE5h/yd+r/o7Xf6fTr77+TJubacZ/spv2egPvG7xO3yOyeJ37Vl913QXZrxlrwE+qjBD6YV9LOSX5wFH8n4RX9z5esK9+cfgu+n8Pen/u6mz+x3VqWfTWGP3GdL/zlX/RQ95Xx1fg9iALm7Jl+qvIRvKX+T80DwBFjfPPA3fZ2pXe4PmK3/c/A1Lvm9/p/f58k5r+wr5x6V7C8P0+5c+hqc+7qUnzOfTDVP7wxHo5v41QaFOFbin5Xp40B0LjXeu9J37m/KOr+4vs/533Pwk3PAOf+b+9HvNf6O4T+5H/265Efmdy6UW+GvgvJMdpyGzs7Jj9VP4sP5Tkl8uPg+yXvmQ8/35l8jkl9ofP1H/VX86X+dgz5R/SzfbU+Rdzj95XtvceH8eUv2nYC/C+DTsFP226xnnodz6OO55D9mX1W7nIe+Sbkzf/k+v0thnCVuugW9/0SO7F/chd+zyTWbn3RWTv58ue+PbeF28Er635//T8P/FdofrX4j4zLvmeL75dbCuaucw8r5q+ae3xduSP+16OeJ3Eur3+nK68j3fe4l0S6/J1Rd++QdD+JXxfzjZuT7X/cE5/fZDsz3eOJxyf9kjxZwfO5PJX9X9LdKvJ1fHZX52Xx4o+fzO3H5fbgjCvHdnAvN/VE5/5pzr7sknmV8Ju6S90733DelffJtHobJx0n+zRfo5x7uYjz0Du+NGYnXsGP2aQ/5H/G95LdMLPyeUubZzK/r2LNX8mrYP3nE+d2gjPvMB0vK0aGP3F+zAL+5H2A//jsJtoDjcz8ofb2HfuJpy8mR90PeC+F/Wc4fl6CsTuJP9Dsy62nzUjd0zoUj6eN38vfLeVL0kx+e+xaK53uzftmPnoYkn8Y4OId+j8TfWngF+fqoz33Fub8456QST9lXf+9lXwT9rvTzdH4PwnOzyT0P/TeSD5B8enQ2yP0I+q2TPAT2z/moRuQ/AD910LmZflYV1vUzYB/PV+K3F8Dx/OMtes/vljTmR0/jZyk5eprX3vDcJcpZr91J/qH6uwu/63J/CL/eybjZzrjJ/TY9+cPFsBdcTb+34rsV+jtFDnoYYV2wDhbzIXKeOevM4vpyf/PPS+TPfWpZz2ytXe4j/zDxrpyvzX208BR8dNR/I/5fD47Je4p9P2OvpsbPtbEf/irgry/6xfuf+4a+gbgzPxqZfRL1idN3hrkvL79X8Tm6ed/n9ysOw9ehMHHmRuyZfM3cM1m8X/J5fjMHPgeTP7U9e3xZXsLifbuj8H8fHAurF/aXk7daPD+7zHheCquQv3fmH+/FZwrfJ931Xz+/awG3g9k/nsI+P/Kb5JMnf/xd/R1P7uyDZv+zE719AofC49DPunMJfAdm/XmP/tvDI/GxFb/taryPz3mm/F4XP0l+de5nfdDzuZ/1K8+9S3+X5jwQ/3mMPabBx2ET9nkv928b1+/nnGDuueNP08m9Wc4xlJewEns+kP2JzMvo32M8HZt7S5Wnap/8rORlJU/rLfprbzzPZ6+B+d2W5NuVoGxTesr9r8kvGMhfevCLIbnPjD/2I9ed8Hs4PnEp/X+I349g7redSx+3Fs55rPHcQPY4gNwVlXPfePZtvmbXXfnHX/AHmLzVpjB5i/k9i9yf+nXO8eIv55lPSfxdeWP6W0n/uc9mHDtukO8nfL1BruGwX97P7PoC/V/n+VHZF9XvKfp9GyYf8Ubv05xTuUk551Wyn5n9zYfLS5j96YaF80LF82sP4qMBvdXG/2vZpynEVcZ5P66PrxTeR+vy+5Dxx9w3DW/IeYCcfzFOb4I3wwv1txX9bIvPe3P/IjkbsutLyRv3/6vJ+5F2ib8W9zeakye/K5nfmUx+fn7PJuvqrLOzP5HfF/gMv4OtL/L7Ah2SP579Ls9vlvzd5BvRezN2eDDn9Av362YfMfmdf9DHNO0awVra5z6+h/W3TdYvOf+T3zdT/4x+ZsFH8d+CfMk/GZfzf+pzT3Ev/LbL77v+j7zQnL99Hn+5T/RA4z35L83Z91T9H1xewnvxn335fc1j+d6spv/i/v83ieNq/xm+8/vZT5Erv3/8Dv18h48787su2v9VgvX7pclHWIBO8n+uLnwn/mBcJT8lv/vTJfcS0c9ryc/Ff87Pt0S/+Ps0+V2a/L7M+ELeQPIIkj+Q/JFR5slGysk/bcGfs859LPkQ9POS+fpFOBa+i/+c79kkzyvnfE/WP8mryzoo65/e/Hkx3Mc4OYX8J1qf98dfU/LnO6YmfluqX8W/ftf/VHRzfvYV/SY/fA/674G//H5Ozt/ndw3W39dBnpxDyfm7/D59zuHl/EPi94nXJ36f82WH8JvW+Z285COQP98HmX+TT5v7j77nF4PgbPNFzp8lzlqMw56uffE+8+LvMx2tfe4/PQbOjf/nfEe+I+kh+8Bj6P0ccneFuR+7Cbs9nvw98rXB//8BgSBfU3icdd151JZT+zfwO+SRRBIZitssQ4YnhCLzTCQqKaGUeWikohJKylBmFTKn8iSFUuZMlaSIUoRCSUgl+q31Xp9vaznf1fXPd+1zn3vvY9rDufdx7GvBxmX/7/cNnA8r7F7CPbcv4YrdSrjNjiVsKb9e1RIeBg+H+5aXcNHOJezo/XeUP3uPEnbYtoSPa6fzLiWcpL0WG5ZwSPUSztm8hF/CUduVcLR2ztlJOeXPrFTCM+D16Hto1xKOqVjCXb2/H/r+lu7r/Z4blfC4LUvYBT+9PL+vWgkXVy7hLfj4Y6sSXrFBCSfAFvg5sRx96utHDhdIH4T/T5T7EY6UX2ubEjaCHbcu4dyaJXyZPl+CY+EPyq8il93RuVp6LTn8pt4ptdSn/k3p7/kaJRyA7qHaHYD/xeT79aYlPHuzEh6g/CjlL1Jujx1K+LP2LkHXQngCuV1C3zWkm/+nhNeR15+eL8Rvty1KeCp6dqHfNvKfQt8zcHl5CU9HX13vt0XX++RXG93RX/QZ/bWW38Dzq8j3SfnVyHc6udaDe5DPQHq4lDwraf845Y9ijwuqlHA8ex2i/Fb6x43KPwz3x8+T2ovdxI5iP8dIXyu/Az4+1P7Hnu9P/r+RfzflapP7PnBf+Jx+2oo+WsL29HG7/vkle+jv/f3ofZr2J+G/t/ZHSPfz3mvqrY/f7dB/F/mMV+4i5S6GX3lvQAnKntDvDpN+BT2t6aOe9qoYz+5E/+roBS71Xjv5dYwXh8CN9Y9B9HQs+xvMDm7Xz0ZGf94fh4+npH9X/mb2cCK5nwxrk99A9tES3Rdopz36hpDHVHq5X/pRfOyn3Frpc9nNDPTNK0M3vBxm3Lhd+6eXl3AouQ5DXyf8NEP3BcbZ6to7UP7t6D5A+gb0N63gObp+kW5D/5HfMvhxQX7t2d9Z2utP35WVn0Ee49E/XXoz9D9lfpiqnsxv7yh/tnFqGbxd/xmnnrfo78CMW54/U5jfzoKNYOa3nehnMrvZMuOJ8jeVoOxB+rhSejz6xqD7fHS3ib6Vv1e5w6QvJOft8d/N+yu1+yccqP4t2f0B+kdt/O2lvr28/5z67sXHY8pXp4+bvD/B+4/I72U87wkrs6On8NOBvKexq42NZ42la5L7hnAWeoepv6dx7rJyqPxu8p+mj9vY1ZPS39PPdPq9Vbqj/NeUb4aviXCl/vKz9CryXUA+X6BjV+X74Lc3vAWe5b39NilhN3Koyg7reN5OezXItYd2/9LeFvjaE86DF+nHr7D/ruq7Eb6tnqElKOtHjsulx6H/E+kX4GHqPUL5DfF/EPpmsdeN5S+hj0+ln9ZOG/QPsK6YhO/50luzj5rs7WP6qSC9VPpwdvEeu/1Iek/5lfSHetob7nkT/P1IH8eg70Dj+Gven6pfLCHHn+FZ+N2C3u4xP/0CnyKncvJppZ8cA7sZz5qg9zw4jv1dJX8T7U+Qn/k08+h95PYtPI/8dkD/6eo7FZ4Gx5Hve+o7AV1d9YcvMr6wl1vJ5R7pWvIfot+L6fVjOFH9D3n/EXip/luXfGqY1zYk122kz6WnauiZRb/Hqudu/DWX3g99Q8lhIn6q028N+D7+x2d+Ms7cpJ174E3qb4OfH/XDSdK/yf9G+j5yaCJ9ofozvn+Hng3Mf8PkD0dvZ3b0KT4q0/tYuJfvrerkeiv7vQT/E8hvW/knoW8J/rqr51zyX8G+fkHvCPRvbD7pib6XlZuO7kHks6F2N1C+l/JXSjeh35eU6wX3z/eX+p9W7j/a7aP8ScpX9Xw2vq4uL+FNyrdT/lnlmsGL2Ocicj9F+V/0xxfI70ryrm3cvEx6uPcPzvcFeb2Bnt/U/wT5TIMHkUsj9A8n79fJ7Xfpw7TfVDtd4G7obUp/daTb4rs/+t+Rf0EJyhbDW+CGyjVDT1O4v/4+Q/s7pv8ZN75jZxtoL/Nd5vXjyT3zewX526F/FTmVoe8kcj0ZngLHqu809vkweWYdl/XbPulX6NtRf2npvdfw9Wr6AWyOno/Yw/PqmSw9RP0T0f8DeU3E36ny1xovKlq/bAzX4LOXceVFchuPn9/ofx67343+35HO9++N0r9r7+2s88j3BHSPh/PQH/3+zB57mBe7w5bq/5C9NMbnp9rJ+uFh7XeGO+qfC9l9XXZ9D1xMvheUl/BO49b59FIDnf3Jwetlf6v/Dbi18mPZY/aBXirsB12u3bbG/7vZ6yh6Oku7g6Q39f7B5Jf18YHkOkG9r8pvjcDK9FyVPueqbxfy/B997kae36H/PHo/CVaAWY9WV/4D9X2KnsvR0dJ4sKNxpxa8EX2Hspvp6l1IfqeRw5ISlM3RP2Zrtxt+X/F8q3zn4GMX9GwsvzW7rii9E/r2zfzkeZus07Jeov/V7Oa+2I/+3Q3/F+ovr6LvEuW/xleZ+u+gj+PQn/XntTDr0Kw/K7PrF9RfV7sL8XcJef0Fx8JLrFN74Wd7eAc6Yk9j6HsP9adfV6ef51If/B5mfXgJe37U84ukL4Yzs35Gz9Pso7/20+/T3zPOZ36M/b+J7t29H/ufpZ3P4Bz4D3429H5veqxlHXGIepcYr59gl4/DfIfsrd3DlKsHe9Df+vp9Z/y9ol//pt9uzQ4vQf8R7PwudnGs/rJQ+2vYVz/17g1HKr8nuU5HzxP43kb+KvXPwn9t4+uW2uur/rXofY++ttb+KPxvm/0D6bbJp8/P0ZF91jnomENeX8F2+sMz9HsIef8lvxx9fZWvpt4PMt4bL36UPsz7v9Lzx+TbK/v/ytfE3zb6Uy3p9vitip5O6D9V+5eVoOwfOB42l19JfV/n+zn7zOafK+m9Vvbr6eMh9P1KDz9kX4wcMr91R98f+kd9dL+d+SH7N+y4kvR72r+Cfq7A32p0bKD9Q8xjU80PH8PrvH8//TwA74OdlL8h5zv0epTyA5XPejTr02fLS5j16VL21IR9NWan9fHxrP7wHHxM/Qcpfwr536He7BPdgv+b0fEFnOz9SjlvYh+rYG/4Cvk2I7/90D+bHlqp/zP29xW626K7ffadtdc76x90nIH+O8wnb8C/4TL8HE6+d7OTjBMZH4rfC5dqb3/1v4C+uvAA/aQBOnpr7zc4DS7F5y3Gta/g8MwD2m1UWH9lHyfrr84lKJuk3VfQ0Vj792R/gF7vlW6sf22OntbanQB/oI9F6v2T/Aerf6x+NFu/2JH9zJKurP026B5Insu0+3T2A9V3XOYp6QHy26on66esp7J+ep1976d8bXb+eNZzJSj7CdbA773quyDrHvroqfwk+S+aX07Rj181/tSh/yOVr72e85H56BqOr8cynoYf+T3o5Qjtr0R/F+//yU6PrPTv8p94/od+MY39noa+Vvj+Fd5B/heR78+e/wYfg/t47278PY+ug+H75FWNfh8gl2ezD6r9W+V/5vly/f8L7a/A30fk0BVuoP0dyP9p9rUfft+Vf3j2JTzvTw4Dy0t4i/pP9XwH6ZHyjyGvxfR2fOTH/tsZjy+FfbXzsfI16OHZnHczuJXSd+ivFbMfSR5n4r8+/irn/Jh+n5C+S7tl5P6y9/9Uf85hHkZHznFzfnsVPd0n/2HtZ/+qk/oeJJ+My2X0dzJ6bs8+OFyIvqvpa6vyEh5CvmfL75BzJvXuoP1u6s+6M/tYVWJn8qug60q4jDzOjf+CebEJum6lx0u195J+29d7b6gn+vgF/fuhvy3631B/z5w/w5nGt5wT57z5MngGO+2f/kU/Kwrf2TPQ9xZ+34UbFL6zlpPPXp5fI70Fueb77LbCd1q+zwbh+/HM77CX+nfCz/vkNgXunfUdPltq7znz0XjyW6j8o+RzWvTl/RXmiZWwofevR98N6NseXbvB99U/U71L6X2W9Hbsv3bOzdTbkR46KR99VND+FTnv8d505d9gJ1/r/53R30z5pnA0OnqWl/Be488f6hskvYj+f6CX7LPvyN6yv76neveCteGz9DMSXQPMv9kXiZ5fMG+MgAPJ/2r172e8/cH4vAv9NTIu7KU/7kQftTzvkfPRMnyTxzXS8c85Ujp2HrtOfgP6fTR+RuyrovqWet4Efw3w1VS5A5KGt3rvTeXO0+495DVB/6qL///Q9yPkPkc633tr2cVn9F6VHOehL+c7jbxfU70535lCfptptwb5Lpa/UPpS9M1STwfynZv90eyHsNvsL/2m/DXKZx2d8/tzyGkLdnwDeido53jj+5nxqyC3h+lpKX4HZb1M/+9J76/+zux+qfXho9obQW510TVKu33x/736cw6Xfbn4z5yT70HPp5LHMRk/9evP6b2a9n6iz+3kD855r/SW6GiA7gH0XF+92R8oV9/OcBd4JXrm4rMCeU81nz+snpwndiW3FfSV88Vu5HVV9mnht+qpTr7nZ/9COv56h5Dr4/h5OOOv+rO+TD8fXlhftitB2RbSg6SfyPe+9tawj3r4H+H9fKeO1f4x+D0K/6PZWzdyGiPd2PsvSU+T3wO2IP9rtF8T/1dLz0Jfw/QvfA/E59Hk95nxchX6V8Oa6B5sfHiKfuIvE/+YKuaT3so9xV4noT/nTjmHOrBw/nRr/FM8f176TeUzX3cwfi0vzN+L6OtYerxKugJ6d4u/QPYp8ZPzv4uky+ljD3w/I707u99dvc/oR3t4vrF+M5HeK0rnfPsD7b6Dn07aHU0/U+L/RK/3x/8m+2TKZ3/o/uwTKF9f/98NvX3wfZ3248/6u368Asa/NevFHvF/lJ6q/nfZTc6Dq7ObZdLx33lX+fjxjDUOZz2fdf425JP1/sXklnOAi+BX6t8t5zjk0Yg81mb/Cv9z5d/m/eOzP6n/vMwuNzZ+D5ffj71twP72gu3Q3XmHf9M/h70cTb7n6c9Lci4Hj5B/OHqPQOcJ6sn35Sva2dbzQ/OdlP07cu2rf79Ofsdo5zfyuoIdZX8u+3U7q3++/tnEe9PJL/6p8Uvdx/P4p17Nfq6C9xpf4s+8OfvIPJvv+8y3R8e/OfMv+zxR+TcyPilXmTxz/vhBwX8t/mw5p+tIPtNgM/Z3Url68HUIOVUjxw75fkZfzYJfS+bX1saVq+MHClfgpzL5VYS309/22n9V+43i3yh/Z/RfyD7jv/o8+6yh/EHyb/P+EdqN/+YM9vhB/GXx8aH0BPU+hI41mdfw+WEJ1p1jfwqzDmzB3lrCH/IdRD4N1Pu98WsJXCH/BHaY/pb+F//yon/b6/TREP3ns7sL4Of0eH15CfPdeg6cA/P92jzrVliD/u5VPv42V+o3l8L43zxKvvXYac6FOsjP+mUr48QE798Wv1j63oF9xr+2C/4q6Z+bwiVZz6OvM/luBCvCFeg4rQRlw+EPsFP0rL/uQn4578j5Rs73cp4X/7KZWZ+zn8noGoWfYehrpb/9jL/2+mkb9P2T8zT221y5CfLj3/G293713uvy66PvYTgOtlWuFb0sXI//7fX08rb81exrhPrbkPsW+LsxfijKD8s8wO47wXbkFH+iLuj6Hh/xH53G3uIP/rv1w3x8fpfxSz+YQJ4NtT+E/P8Hp9LnAPWfip74kQ9Fb/y/GqDn7fISDiaPbeNfhO4r4Ajv7+n97/Snr+E8mHX8Gd4fQ77x149//jjpsfLvJ//b8Ze4hWvJZRR+BsXPRH8ZF78H6cPDX/pD/K3QF//YbcilE7m9FH8G+psRfxDzfnPpO+V3019ugFPUPyz+1+gcRo8t8HsFel4qQVlHSPxlT7KHf9B3Kf7XSu9kvMp+ZfYvs97K/mXWnZPWs/5ckvmU3DPPLlE+49P+2V/ER8an9vpXV/m91fdQ9i/VG3+HdfEw0uv8+WAPOK+8hLXV96X0GONma/TNRM8cfN8vvb3809nLpey+j/fuU1/2I+N/NLKwP/kAvb8Nq9PDyeqvSN8j2cXyrEfMy5kXcp68it0cqf7e5JPv+6I/SvyXX9fegJwHZv803+novgFm/yf7d9m320s6+3fxf8w4FT/IjE/xF/xfwW/w/Zx/sI8W6j0//qzaj/9q5tEz9a/Mn/uUl/De7KclfkP9H0tfrb6jyXMJ+rekj9vo50V4LTrj79+G3SfOLf7/w/WfRXCG945SPvNV/FVjzxXRH/mcSA+RU+RTn9zjV3iEdPwLNyOPKnBzOJQ8LkLPkMyrMHECq7S3D/09CU/wPOcf77DHuwrnITkXiF9W5YJ/1oOxX/JaQh47Kf8neaR/PouuZ7L/Jn/zxB3q/7vQX+Ivsv+ZeMXsb26MvhFwVRl+5I/Ovo5+P0a6B/quYX/PKX8U7Bf/cnrLvnX2sbN/PY493Q1rs7eu2j9RfbXk70n+O6j3KfQ2hDNhm8RHoW+BdhfTbwfyyf7MRONDY/0h4+/F2llcOHebjr7ift4MeCx9Zr0wDbYwX2b9MCT+T/RzMbl+DicnXkT5y6Wnon9zdOe7L342dQrrk/inZz8l65OMfznf3NHzxG+MIJ8P1N9S/snoO569HVlewnMT55f+V5jv5tH7uu9bfH+7nvFnVsZL9Re/T3N+vlj+GvZShp+rJR+Fa2HidBNvuCG7npHxLt+ZWVd7fpJx9m39vDG9bCY9lH0l3ugS7Y2Gied7VfvnFfwlV8afJvFRvhsWeu9o9nNo9t/Q9yD8Ouds+L8dX9ugb5jxebXyZ9HP79qvS77tyXcofRTjXvJ9Ev/zP+O/U/A/X6r9TfXD6/Cx1PtVtNdU+zmH+AB9M/X7X+Gp9HC99s8ljyaJ/8l3nPbzXViMn2nA/uoW/PkrJt4j+0v0Uck8Mcf7fdV3l/FoD/R1kW4f/aL3KnrZnJ4G6MfxLxiE3z70kfXIH+T2O1yd9Sr6XsNv1l8jYNZf2bfJfk3iceJffSL6HkX/dXAK+m8oQdkEWD3nAejL+H5L/J7p5U7YyvtP08Ov0qdr/4vE/ejnx5NDv/iHs6czjWO7V/x3fvwdcx5WXN/URNdM8n+W/GuQRzN6/YM+GkqfIz9+E+3X4z+ReL34ocaPNv6zj7PLYfAxuAr91cn7s8gp/ino/D7x+553kR5PP8V4/T/J8RvpZ0qw7vvnA9hCfpfsu6HnAnq6N+O/dj/R7mCY9UHOLcaxu2X6z1uFexSGqy/3LDyZ/sce8z3cn/5vlv8Neldqt55641+3e2FeyzyX+S3rknzHFNcnuxf8u+PvXbm8hJnfqqAr81zmt+vZ5WzjWgfpy7N/Sh9D0LNEfx8q3Zdd9YLZv+yY+G328o9x9G/4KDoSH9EA34vjz4K+9X3X3hp/jay32GF/+vob/f3z3ZZxWbqn/MR9dNR/ivEf5eQxjX3vLB2/8Ow/Z14vxr+MZ18L8T0K3onOnI+dL51zsePwX4wPeZU+6iSeX32t4SEZT83fH2ffB34Er6C/+8kj/sVtYPyLG6vvXf1iUPwf8Bl/rqwvH4u85R9TgrINyW+UdCv5Y8mvn3F+x/jNk1/WCy+xq0vM/1k//JG4GnZQST9KnNK4wrr8WNhT+TvoZzK91mIP8ZfOeVXOsXJudUrB/3lPOEl+/J87kV9Hcsu56f3yG7Cj6uierP1W9NOEvrem//0zLynfNfvG5SVsnHlIfveC/1T8qeI/9UP8WvG7gh5yPvWPfjEPf3Phr+w18c6Jf362EP+c/ZML1xO/dWDON/G3D/m8kfg99d5ZgrK6cBa9bo2eieT3Lfv4Cz9/s5vp8D/sYvfE8RfiWRPnOj3nawW/roeKcTjWU33Q8RY6xpSXMH7DieNqWPAfjv9B/A7K1BP/g7c9Xp44Vele7OyKxNXS6zL8HMe+f89+XCE+Nee26b/r+048Lf5Tic/RXua/ndQ7gD5qSn+m/PPKV9LeT/Bw9eXcMeeN17C/7P/01G9aabeG+m7M+QR6E8e7t/aXK/+9/he/6z1iL8qvTNw8/l+HDdlf/Jfit9RUftZr+X74HZ7tvT7yR+a+idyLgo58N36o/zZhD7ewl/nS9+h/fdjZKep5Vfm5JSirBx+Af9JH4pHih5p4pZPob0FhXfRf+nmQHraD2S/eXjr+tTnfuwt9D7DDnO/lHqLsaxb3O7M+zDq3d/Zp2fdK88b2+HkicUg5X4l/k37/I/3Pooc74m+aeDj9P/EJa7I+h5+jI/uObdQ/kh3lHDv3cv2SuFLtb6X+zfG/FXrblqBsPhyAv87anYrus7Of5/mR5F28t6hr4sf1n+b6T1vpKfJbam823KjgH3e6dO536Keeb6Tz/ZM4uS8K30M5j8/5fM7rE194j3aPh6/Be/SvxK3sTh7F+JX4599ED/HTj39+8T6dxGddLX9n+ohfS/xc4t/yi/yz4x9J/qNyjw56l8KGMP77a/B7RvYDtH9HzrfNB0fCo+ALiWdhP9knLJ4/vKj//wR/xu8Z8vP9X8P80ZP+3yvEXybusgnM/kf3xPvBm+KnSz4v4y/3PxX9B6rqv5ug4xH6qav9quz6Bv33cOnHcr5duO8u998dpL34H2xAThslfhsdS/F7rOeTpB+If73nWXd1Luyv5Bz2Ou/3yP0C8k/JvgB8L/Oj9Ur8d0d4vzz7DuT7jvwD1N+UfdQnv874HUSvg2Et9jzbeuQZcvjc8xeVz3nkq3B0YX97NHqXkvtX6l9rHHuLXh6HN8NWucevBGVvwtPhYvNK4gYTR9gbTkxcHns+h50cm/ME8mqKvm0T10TOf2v/FXTvxq5aei/7KtmHz7589nOqaD/n6fHbjZ/RYfEnIIemsBnMd//uxofcy5d55HDyb4GvYdn3CL/09AJ570vPt6P38uzP0G/uAWkLcw/ITerfXL0fwVnsaYR6r813N8z6Od91iWOaTJ5bsJPjjCtH6TeNyLmZ+hsqt0o98YfZUP35Lm+r3pHaTzxt/MiL/uVPwdwPkvi+xPslvi/3b0yJX0fGafmJN8x5cfQ0j5565bwX3Xsmjke54n0JuUehnfID5U+H9fGxr/by/TrHeNY9+8voy/1WVWOv6Mh+eTl72wOdR7K3xOudWoKyP2D8T2O/YzyvAzvA9/BZlz7eoe93M14of3TOT9F/Vc5VjB+z408bucD7vF9Buqt2J8Nq+K9Gzq8m3oa8/sz5NH7vT1yz9Cjl813xU9azMOv7ruT6Lrl2htkfzH5G/CPfxG/2N8aiN+uSrFMGknM/48o35NJfelrOv9jD+uII31PfiXAw7Jp1HXkkrjpx1k9lfE+8LEw87Rj8jEFn/IL/MG7+o56djT8bWtdMYQ/x9/9A//+UHX4GN5If/4P4n+Y8YkHi6uTHH70eurJOfZs+T2N3jeDdmd/xfxT5fquds+V/o/4x9HaH59nnm2KcrSO9h/r6kN90+rg5ceDSHctLmDjmlfT3JX0uZFdHG78OpPf/Zp+GvBsr9733D4W3qf9z6WmxS9gXv0eyk0O1exn9/mg8yPdwvo/zvfwB+SY+/GHtJU488eFVvZ99gtbS+b5M/MkvcBlM/MlI8r/L+7Pi9yT/CPVWNS4vou9J2Z/zPH7L8WeI/8IN9LJS/18Nz1J/f/JJ/OLo7DcV/COWkk+VQv0zjU9bkWvup8q9VRdrf0zO0bLeTnx87jXRbjG+OXFRicvtk/gofJyv/QFwWeK7jZ85v8+5fe5Nzfn9y/Q1kF6aFtYnw8k59zddp77/4n8t+/1Yv/9HOv1orvQ8+FXixZR/KPdVZf9cuU3Ql/OZieTqtXXj7wPkO5xe/sNeDsZn4ooSZ9RLPfFHuDF+DeR1sga2037iyhNPfpX0Xejsop4j1XsufF37C42f92rn5Zxn5t5ceu3ODkYX7LHov5f7quPH11P/TTzNs+p/i3zGeD/96n/qS3/rl3156bfQ31Z6X3ZdDbZkX+PJazV7/pp8E0+XOLrcS5j7CC/MfcDsqY/16PHqPwFWpLd56L8b3ffmngv1l9PXteov3l/+J3rvhrlf6yT2kvkg88O76sv8kHjt+DHN1T/iv/QH+ztSfYeSwwT58b85B26h/evReZFxoQ28GK6lr5+1t3Hu08s9Fuzjdf0p96PFzurh/1Z0P6J/Xkk/9ctLmH3z7KMX46Xj953v0fh953xr79wLm3FSO4nf/Ux9zeCowv3kCxKXmbgQ9E5RPvfL5X7VZeSW+1Xz3fhV7s2S7p3xbT1xNev8++U/iI7a0vn+Oo+8FsEmcM/EzbHHtuz0UunYY+7Nvowei/dnx9/yIpjv2tz/dTB+ch6Rc4r4n0QvOe8vnj/mfqhs/+d+qJyDrpTOPURdyDfxA7vQ6865361wDjW74B95s/50nvw3jBMvqu9q759Mvn31r+fJ5RvpnIebntZ9Ry2Svg1+TO7f5H6lrIvRE7+m7FMW9yeL/hnxw4ufxlLPW8Hcx/4gfnIfdPyg4/+c+6G3ZdfNvbdz/CA8f01/mQhviX9s5F+4DyX3yw2Lfxt6h6NrqnR75d8IvSXINWrr4g/3z/oWv7mnO/ftnKH/d4EHo3sBelrjZ62K781+AvoeosC2+Iv/aevE2xbu3S76P4zIvZOF/Y+J2X8m17cY+Ony99efn8MvsssqFfxJrlnPvT35/4bIN/dgzJfO+fQdKs53XPH7bWfpeuo/DB6C7rnksZjef8r9vsrX0S/eN68cn3tgEk+iP3Y3Dx1nvGlhfMp56td5j5xyvpr7XY+Pf2a+J3K+5fmH6n0B3XXRlfiA+Pu1k38GPTxAn7Ppeb5xIfdn5X6pH+n/Rfad/fn/0VNdcrs98brlJVzueUPtZr+/ZeQnnfi0FhlQ5B9Inul/78APd/p3ewtyLgH3otfbci8SOayhh2PZz2Xs9yv4F8z3xVnkUxvfl7G/YblPkvxrkefFylcsL2HiAxOf/qvxN3GCuQ829z3lvtjcD9uZXXSEnfJ/CN4/kb3ED+Rg9lpN/YlrzLla/MdyvtZMuY0T1wITH7sreZ+lv86Bo9h3Jq5xymW9ke/vDvIvzfkEHFRewmvRczj6fiisfxN/n3tzxsU/BF5I3+/D3LOf+/XjzxD/hsTjxr8h99/m3ttT1Jv7b1uzv9yrMo/9/Or9+uxrH3TvnHkIf4krT5x57qO+md7jH1MBfcuk46eaffhdsw+i3vSfd/G9JueM8ET5OT99FrYonJ+Wk0/iIVsYN3LfwaPkE/+j3KOTe0YSf5f7DeLHn/i7hYX1efF+pXyPnmmcaJR9LvQtN25cyO7yfyn7xL8ZPdkfCZ3xH3gOP5uxs220f0jiN6wXe+g3ddhvY3Z0lPbKco84/BJ/NaWnZD8B/fXQfU/iadlLb3QOzvcce7xZ+i/p3I+e+MXN6S1xjDPKSxh5LYI7Gvea0n8+yLP+TpxA7gnJvWTDYCOY882c9+X8rw995fwv50jjPe8B58bfmt660P9p5Jz15SPkdKb+Mxr9W+Qe/IJfWe4Ti3/KLfjqQK6fZh8E/bsV4meyT5Tz8aJ/f84J4793csZv9caPfLDyixJXmDhm6QPZR+Krn6CH5eygsvbmb/pvOqru8u/2Ex+QfafECWT/6SL9M/H08UvI9/U25Lk6/m0w94x9pf2+xrXc43S0dkaQ94LEsaf/kcPnhfi3PjDxbyd7fzC+eqh3LPq+xFf8UDqVYJ3/SfwGL/Y8/oPx949ecp79/+kHv2vM/+/CM9AXf/PEAT5e8D/P/l7u4Svev/cHfs+D58L4gWU++ES7mS8yP3TX3o2wGxyD/ibqmWr++ZmeGiR+gJzy/0GJZ0788grjXa/EuesH/yW3pezyp6xLiv2D/Wbf+uTsb2f/Rb9uw276Sscfex6658Lm+HkHvYkLyT7kt4X9x7/Rl3v7F6Czt/KJd+8OEw+ffZD43e2Y/bB8z7OT7dhXVXhdCcqaxv9MOvcg5z703IP8knbHwuwjP0+Og3KvM7sp+me3Iref2MeX9Ds28SeFffncE5X9+faJD6efZ6SPUv+bOY9id2/m+yj7uBjKvaZzrfd+Iv+cP+XcaSF8Xfuzjd+JG8u9y4krq8Me839QP5l/ns/3Y+aJ7OckHiDxHezlJHgC7IS++ewi/3vVwLh2lPLF/4/K/0a9C2eibx/yOC33JEtnXZx1cvPC+rhy4klKsO4+jNyHlnPJ7Itnnzz747n3YCR8lH0krjTzR+aNzCO5r+P83MtUeJ77OxKfcEv+58l792f+0W597eb/fPL/PZ+b349glx+xo6HlJWxeuJ8v9/X1lF9Ff94KFu+3yT3lxfvLT0xcfuLB4BW5x149P+FnBP0uxm/uF8t9Uzk3iL99/Otzb0c19FWCh6E/8aRPwuwTT8r8or2sn7Oezvo5/xuW/2VMPGv+Ryz3Pe6s3Z3gEPq+Eb9VvJ84lsSvjMt9/+RzE/xdfvwKz9Cvi/6FtdhnzjWq6N8538j/mXWH78Cs/0823u6X9TN57lpewgHsLv9nVowPL94n8bZyiZ/ZhLy2YI/DyfdQ/C1JvB4+VsOh5HUevi4npzdzfqe++Jtlv2QIjD9aDfNmg5yj5336+Sj3CWVcJb+cz9yXDb3cR1G4fyF+fGvw34+91sb/pvhJ3NBdyid+KPGNWf88Td5Z/5yKrtwDOZo95D6A+LWej6+if+vA+PWwm2r4iR/8ZNjLe+nP6b/5bj8aXfmez3d8cT3yfvxy8JN17/H0WVz/5n7S3Ev7S+F+2uyvRg3F+916xF+UPnJ/UO4TqoC+0xNfoP6DtP+d9od573vpMYnvItcfzMNDyDHxnPF/KsdX/icp/lCPIfwFcliTOFn05v8TF6g3/5+YOKRe+Gxc8LdYFP8Z7+celPPYQ+4/Kd5XmntM56FvufKJCyjGC9ynvjfZX/x72qFvfNaN5He8+SP3k+U+2NwPO79wP+xg/S//S5V7WGaid0vp/G9l/i9nPnu6MPvxOW+BdxXuh38MVlZf7offxPOsE3Of0gxy6qG+T+HhuR9S+/FPj1/6Oewr/umT1J9706+Uznn3g+rL/wrlPCn/LxK/mfjLHBi/TvZ5Ts6n2N1n+M76JPeO7kv+K7R/cM5F6PcB9DdMvFnuQaT3k5XfR/8Yip7c3zFFe58oF//jIfpN/PwXG2eae//lfJ9p52bp3NfUEn0L4veLvsQvNMDvLokHKkHZKPm5Nzj3CA+By/M9y+4b4e9OOBgfOR/8CtZBf84Hr9X/HyzHDxya7y/rg01h7pvK/VL3SG+v3XX/h6f+tvFLQXdl9tFd/V/I3yh+md47Uf/rit6Z8RvL+iL75ux8svZ6oyv+e3WynoWL4Jnqb557z/M/x/EjV0/OX3P/Tf5/Kfff7GlcvpB9FPf/mxb6fcaBxJXnfpSa+tfe8hOX+wB6qht3NiLfdvi9TTsdYdfs56Av+xfZ5+0PE//4qfo/gTNgF/ab87Ed1ZNzspyPVUDPKvKbrf2/1H+99ybD12EZ+9ya/ee+zGHkfUj8g4z/uY8l97N8Qr+r8z/E+s9T5Jr7yL5IvFTiTAv+K/n/9fxfdv5H++3M3/jJ/8Qtif+K9uNP8AN+cn9U/AvGlStHnp+wo4ry4xed/3WIX3T8Q9NeC88Tr7eJev8P1Nx0Gnicdd151NbT+j/wJ5kioVKJcguFZKokCqGBEscUIWMRETJWVKLMQqYcFSkilSghKmQeC0kDjshUpqIMx3et3/16t1af3zrPP++17/3Ze1/Tnq597f2cWa3i//19slEZj9qgjCfuUMYZdcq4ifSsbct4bsMynqHcW+uX8R3YfccyblmrjMdsV8aZW5Vx9wZlnF+ljNM3993GZay9fRlvLUNFS7gYPqu+u6qXceuqZbxP+1uWyli1dhm/1+7J8BD81JfuUkM7Ncu4zU5lLCl/pPZ2Qdfb6K9Xr4zbqa+1/KvJ51b1VYWdK5exATqnwPfql7Eheb6m/afI43F89t+ijHej5yf6W7FlGZvRX8NSGW+vVMbL4Bx4j/o3Rdep8Bxy6I+/3enlqk3LeD45v02/L7GPOdJ98DET/23LULGUHP+R3kv7vaUrq2eu9LH46+L3KtuU8RnyPoC8h6p3s7plrAq/Vf8t65VxFVwEu6HvevWN117Prcs4QvlX2Mfx8HD2fIL2p6DvGPX09Puh6q+jvQHkXpK+t1TGremzDmxNzpegZyf6PNLvbaVvJO9/0PUbu/pGuqH6fqfXY9hPH9/V9fvtvntRP2zF/iahbzT7egh+7vuu+BuBr7PhdfA+cpjGntbT3quwBnlV0Fcz+l1Ue932J9HHKezxTXo5W/tDyP93+VPZ3xnkM1x7XfF1Ef5r+70jXInOD303TH3TtP8x+obD+eo/QP+YQT6tpXvK74GfZ6V3pdfnpd8hpxVwW/IYi896xtuX0dMYPXtlfPb9Hep9qwwVzZQ/mr2uZBcPwEe0P9D3ho+K83zfqFTGBrC671dqbw/prdjzG/R+Deyi3Crj21bsa7V0D/mfSy+Bn8GJBX7C3wUF/hpq/wrt9vTdZujLeJvxdw/8Z/zdBb+rNyzjR75fI32a8e50+An9PkkfZ2p3B3SskR7Cvo/B92P6bxN2tjf73W0z7cLXtXNGqYxvqa9XpXX5XcjOh7CHW/H9Ir4XkM9W8iv5fZjvjpE/nb2fyQAao3eR9hv7/mrz2uP625H4r4Hu8caFk8xXN8TOyfN3fP0Gh5P7jtIboG8Ue+9MPiXph9BzMr0czf732qSM2/n9AP3waeX3ofcp8Cny/xh956l/Pn5K2hmg/k7svZb0ONhI/fONx5mPMj9diJ+LtXuPdl+Dd/u+Lvo/JL9tpKuR9470dwI66qO7v/I12VU7/HeA58s/g5w3MA5dxf6XyZ/MrnaHb8OflXtSOna4A6yhniX4+xhfx0q3Y1+11TMANleuh/azHsj64A7pB/G/gL3XYkcDpM8vlfF+8rlHf2hD/s+of3322p38Xvf99/T+Jf2NNh5MMk++Qs4LyPNNdv2W/rJc/nPa2z39RDvd6H++/Cbs60tyOpV8PlBvf3LrlfEn6zB28Qj6+knPYX896L8r/rvrx6/LX67+fXy3nv5WQ/sH4/8Q2AaeRX6dpX9R/gN0XIffoWWoYLYVM9nHnfJH0HsleC7974i+a32/Eb0+KP11qYz/aK8CHZVgY+Ufkz+UfB+VHiZ/G+PZgVnfwDvkH4yexejbG+6V9SG5Zn3+BzvN+jx6uhOeRY+V0D8dvc/BlgT1EfsYxL4+pJd58JSsc8h9Nb2OoM9m5FtNvVvj6wL2uSX6PyXPZuT7gvTV2pkFn1DfBuivhb7tlLtBuUfgadqtQn4X4P8W5eeR04vmh6bs9mPj8/b4a6z8B8r/Djcj72r673P6a+aDndnnGP3tF+PFer5/E//Z32Q/k/1NG/wdSB8HwRI5Zp15Arrnsqsu0gPUt3dhX7A97FgqY9ZTWV8NhDv7va7x6An1dTdebIr+gdEvO9mNPTym/jPVV5levpNeKf949J6r/BP4fFr+D9p/Q/uZXxaT706+34G8DqWXrE9flD8FzoTHKd+PfLIPPwzfQ9V3vPXUecbdJrCx8tdJ/8puNmLfVel7NT6+8X1b6/OX0HeY9k/R7rPSVyuX9cduhXVI1h/van8Tdvye9HDtZb3Sm93d2mDd8k9o73TtT4N95Lcnr7awHcx+4DD2eBO8Hi7F3670+5lyO0tvgY7HfH+s/GPg0co/XoaKo+BvcLLy8R/8Dr+B3bRTm/2MYhe7KFcFf8X5NvNwZ3Kuq75Z2p1dKuNb6vmNXCOP1vJjfyX9exWcqX//xT42ku5JfzPo7y/lP818aVxdqJ8s0d5tGXey3sVP9j/D0b8C/gYvZ6fb+n4D5b9T35Ha307/bgJLcD76X0P3Kva5Er6W/qi/tsr+mHwvKKynl0gfI38/+nmvDBXjjDsjpV9S3/PGm1vgs7CEvkvZ8/ns/G94l/JD9e957PAg/fht7Y/xe3e/v4f/M+XfQa+N2Nv91keTjceDzU/vwdbyV+BntHTmtfML89vD+M2+clP6y36zG/2NI8fB9Jb+fZ5y8VssU25w9gfoXk5ut7GLpQ3WpS/zcHH+7Se/CfvcQv6v7HqC+ifCfchxtvr31d4LxsU92PUV6OujvrFwQPZHvjs2+y14DBwi/wLy6g9fg18aD14x3syB/fC5lJyu0r9bqe+yknLSw+h1Z3KYJn2Q8utlvUj+V5ShoiX+L8y8CB+CW6BvlfFgO3b4i3Qz7Z8pXZkdL8H/9/KvL6yLusPr5c8mz/jbrsl+lH1+mHz6zj7xRvp5iN4fhDXRkf3wBPrtbBx7E7315Y9BT/yQ50mfQn6/42cm+V6hPx9AHoPjX9dOJXa2A/n+pb6K+B+k26N/vPIfa2cX49nW+O2g3bfQdyXcWD/rqfq/4E3wy8L+7S90LZXOeJf11zTlOhmf4t/aD18z8bsN+aefbOL71X4fRn/74r+u9urBbeDz5HGies+gt9PhTujrhv+X9dtG2jtCOw+ie2P2erp0Y+Nv1uHFdfqOxsdu5N4Hv8X18wz9cn/6asnOTpHeRT0t1b8f3Afdn6J7a9/di78v1L8n/Z+g3mulz8z6RvoR9bwY/1r86PjdBF+d8f1rQb/R6zLp14zbtZRrpZ5nYA9yyH4p+6ddjU/ZPz1jfMq+/gH1zkVfH/K/GJ6Cn5roPES5RZk/0D1J/QdUrFvfb8axk333A3mXyPu2+P/0j3PQ3QOeDV9V33Pq93PF9/ApclmuvpHpd9p5hP0W/e/L2GH2R0PpbQicSQ6t0N9KvR9mfoZ9lP+T/C/Rf9dI/yf+Cfq8iH7nw0tKZfw4+zLj3zXkvwP5x69aUn/Rv9oDv/+ge4h+VwfeUIaK/8Ij4Ax66sBeD4Pt4TPoz/lf/NCdrAPifx7t+4vR31B+X/TfaNy5JOsC+Jv5ozr9jKfvevR2afYv5v0Pc07n91dhM3LZQP98jZ6HNFyXri70u5p+7o0/uTAeri74tybJ/9vvOQ/qg64D8TGGPEer50F4q/6TfVX8chnfT8X/UvJ6Qj87GP2L8b2d9hqo5wP5e9NDU7gXnEWer5Wh4i54LMz55m3GzwHsbpj0B+jcm9xa/Q/7/1s/fALOzv5B+7+y3/g3t1L/WdrfiF1drN6xsCG53qn/VI4fOHaZ81F6/0c7t0q/Tp6bKXdf9vHSo9CXdWnWqX+ab7I+jT8257ht1Rt/eTP29TB+Jig/Vvor/TLnZE3IIf6IrFc7p19Iv0z+Q8pQsQZGfzmnHkff8a+Ohekf1FrxERwI478Zpf+cYIAdLT00+2v2eBp6D2d/rdR/Ef5OU24QOd6X9Th9/gXfhrflvAIdN5Drn+jfP+MBeXxAv0MwNBs9+2nnUOll0sPQvwp9w/XDDX2X89ecm1+pveL5+fPxX5V8X/DPvs9+VuG/KjpHZX7w/Rr4R4G/C31/EewNW6FrTBnW+uGL/veD2dtkdHxn/O2E3q7wevLd0zi1sfYXqu882IX8HqKfauS9EVyine3VG39I/CM5r4g/f7j+cTn53CldDz3F+IM/1duWfLvg7zh4PFzfdwty3gNPzX7GeNnC+NWO3PeVHqN8zgNzTvhF/Gvo+yP04fPxwj65PXmNY/dnG9+u83v66ziY/pz++zF5zoeP0v8n2h9Dn3vAW/XTifS3P7nH3mKPOZ99XXufwMvhNeSd+JWcVy2Tniydff+tsGnirEplXJ88r/T7T/T7BHrmxo/Efu6hnw/8/q72LjMO7A+PR9/v5PEueaWf3q/+m9ntDPL+SjrnHe+zu2dgcf8/EF9faOdzOJL8Wil3nPqPpudW6ploPbY7uU+QzvnoXPy0gHeyr/eMQ5uodzC6b0+8C/7ukj4T7h5/CPl0I9d70XMPfFD5+8pQMRueDBfp3/H7JH5lcM4f0C9ZUSXnqPhYhI9bpHNOXjwfz77n3+r5AzbIfpv9dMJH/MH3F+I7Mn+dBi9HdzGeKnFWOb++HwNXlKSN7x3o925yTfxc4ukSP3cr+m6BB6Iz588z2Mt0OAL/58j/N/t6EV9T6ec98v/C9831m4ukD0F/LeVrw63gKvnroWurnOPLP1V+Vf0g8Sh9yeM6/XspeWzu+//6voX0COv7zdBVFV5CPsvJbXNyu1Z6SvqfflGNfI42fmW82o0e65NHX3R+RH4boO8q9Hwav1PW99YTS2B7dtg759U5b4avwN3VNxRdOxi3DyG/j+L/9f11cAh8jvyyH56Fn9HsL/vjw+jlYHI7FB6Q+Ru/NdXzFX7PkD8SfScpd432J8n/F7l/Du+BP6u3n/63PvmsVK47+nI+eaHvE6cR/+Mb+sfA6DnzGv7/YrfxwxT9LyO1X9nv07KOk79v7ApfndRzn/x/K/897B0/bfZr0v+wl/HSW5Hnhux3c+3vqv+Oxu8j9P2rftkEvoq/4vnrb9LdtXcefW1Hjg3pf0v2X9f8PB49tbW7WnoP9tyPXtor/0D2Z+i5NPFJ6P+kVMbE8yW+bx46PkDv5ewv53CXSj+i/I300cn6qCo5vYz/D9D3X/S9xj5Goa+T8p3hUfB2/M1hj0eaD/6CjbUf+dVC/7Ho7k2+hxgfWqNjYvxP8CDl25D3bYVzgmHGg+rZV9HfCNiY/bVC9wrpEehrVoaKDdnVLdLN1dsfPw/h8530R3xkvRj7yTlr7CfxHon/2Ju9Zn/RCj3dzfsL2cHJ9PPfQlzkPPQkPrJ+1k/66VnqW679seS3SH2LYVvlx+uPz8NXyeF99U4mhwcT/2s+6oiOVWVYO48/QR7xX1+q/z2UdY763pGuIr+5ejeRHpz5Xr21jW9F/2DvnJ+hP/6nnLfm3O/JxB2je7F+eq3fn/F7L3iz/pBz++PJ6/87vyfvDrB9xkH5B6G7DTwq5xnSHfETuQ2UHq3didFHYXzM+DpCPXPgTei8OfaB3py/5jw2568fo3tTv99HzxXq35M83mCfc/CX+OG6OS+Bvxl/sg/vpLr10Z3zzOXoesXvyxL3A58xDmY+GVmQQ+abc/S3t4zDv5TKeAv59yOXv+Fs+JPvRukfLfH/Ydbl+G9NL2Pws7nvPvVdzl8Th7W733MO+zh650dvmc/U913W1exwNPl9TO4Z7zMPLDc+535CVXbfTEeZTS718NcYv0P/xzphUMG/F39f/HvPGFf60cMPcGphPZf13Rr0Zn0Xf0b8G1vrl4k3jH9pIDlcKP2Y704rQ8WzsAJ9g8j7Q2lmXLEx/s4h3wbkeD/5TpWuif9tye9y8qvH7u40Ts4iz3eMS3vJr14q4wDtLoRf5Vwf/1dpb4j220hnX3Mi+ewSufjuIeUHaf9M7Z8Gd5M/wnjyFfwaPoW/aeT5j3mnEX4fJp8vjbuL4SL4gPL70ncG4hbSUzI/ob+xz1bC5fhZor3E+1TVT/fUvy5F713avUy6P/q+oc934b/gCcrfjq7bYFf8jlT+Ov2lDjsdyD5Hov82/bdP4s7pZUYJf+r9GzbE70/Kv6J/xK/bkx3H37tc/iDjZ1OG+gf5/my8vUm5H6W75d4HfuLnLI6v8Rck/mRE7o+o/3jrj8Xs5kTyez/+Qnwdh67L6Wu5+quhf5l66/h+N3a8hr3Wl+4qXZm+z1ffBbAXnJDzYfa9Bz5+zfpAPZuRw+V+n+e7h/2e/v0HbK/cG+yjOf0eSq85N0l8zwtlqDgJ9oOnoi/xu5eTQ3E9txm5bp59ZeIbcj5q/kgcdjH+uiN7v5Jcr4Bbqv9Z/S3+huvUczH6V8TfRC4fktP68lcV7CX2FP/4FuzmVePDN+xgJv4zL32r3sxPXdnXw+Se/elw2CT3kOj3EXzE//lkzk9835Nd7MM+t9beadLHaKep32/M/Cd9gu+6wKvwk3jzP9F9LP4aK39s4rGyvmVXOyY+plTGxPvNKkNFdfT3U29feB/9VSPvvuanabAa+i5J/HD81uxnC+nX45/JeAyvgT8Zr7KuSnxYcX31K3qOV+449nkU+k/xfe5pFe9nVaCzlfQE9XaQns2+E/eQ+S/xD3UL9wdznzD3B8dKr5f4BPRumvu39DOXnVRnT7kv+1D8u/rRb4kDQt+9+v/B6DlKu+k/XdCf+wCJqwv/c8pQcRXsBhOP+Flhfst8l/mtMn2Owl+tnHOwr33j78Hnl/jaO/NzIa5HtWvPh75V/zL4DXyMPiaSR+IHEjfQQ/1dtd8Y/pud/Fv+++Q7N35J37Ujp6b4PUN+PfwtTPxn4tJyP1T67FIZf2FPXXyf+2K5H5b4783N2+9aPyQefFbuN6JrHPrflb+z/rGeflcvfkRyWMzeTkt8k/GiUuJzyXNjWCX3S9B/qfFkDbtcJH2S8icV4v1Pyr1B6cxj/4KJ424uf0fy7IHPc+Cb6q9Cr32yf879GO2c5PfEQyc++mS/31Rj3fZ3yjjOPo+T/4r8+rBbqYz96P9QcusvfQX9XZP40azn0dGenLKuPw3mPCPnFy9lvwTPgXfrf/PpcyCcnjT+RxvXtvJ97GkR/oajJ/vK9ekx+8veiftP/Au5NURfzkHjjyvGj6+ir4PUU/R/Vcr5Mj3/AEfQfyPlWuvHGYcTX1GrcL81ca6537otfY6nx8G575dztjJUnKof5hwn+9uXpNvC7DsTP3xr7k3B57T3dcG/+mnh3n7ut8ymj5wHrd0n5Hyd/PYn9xHp5+q/uXB+k/OcnN/k/OlU+ALcN+dD5PVj4m/JIf7zufrjNHo5WfvL0HdjGSpWw3bwEvxsxm52zD5B+08lfp1eBxuHbvHdZcrfLn1IxmnyuBf/J5L70eQ+CuZ+ee6n5F7K7tK5n5J4x5XoWgUT33uR/twn63f0fI7/jUtl7Iqfh4132yr/NfteBr+BuR+e+2m5V5j7hu3jh0pcnXZiR7GfWui5np7qKP8H/s4mn5xjTqLHXvpt/A7xQySuJf6HNsiozT6mS1dBT/PELUt/7LvcL7qePcV/GH9i/IcHJl4cHom+isQ7o+tt8+f99LhE+fV9d7vyzyROWXvvkdel8BN8dUBv7kfGr5p7klkPjfd97gUnvj/n39Xj1/D7+4nXUX/kvjDzSvys5L+C/d1Ef/30g13Yz/PoORvm/m0D5RupL+di3eFLxuHL2Mcp5Ff0bya+4gv15b2HxFdkffZgYZ2W9Vk/9X+Lj2/g5uSztfpzTvSp9WbOh0YW/D83wbaJh8h6y/zVslTGBdGv9nPP+zD9N+fjY/GT88ecR+b8MfEANdhp4kZbJ75M+z+nHXi78vfI34xd7i39dOI38HMuPsdmHlB//H0H+u4B/TfjT238JP5zL+NfzgdvoP/e9F4j46H2c/75a+EcNOefW7C7C6zrtpSemfNA65SMG4mDiF0vSzwh/r+RfoC84xfuyx72yv2onP+ie0Lebcn5GTrfQc/b8G/t9ELfCvrNOiRxWrlf3StxZxm32ee/0FON3vNeQe6x7q78QnKvU5BT5PMz/f0K79XOp8bf3OvJeymJQ7kB/4eQZxs4wfhVRf7h8augowo6lqh/ELuZUIaKRvA5drY9ee2Krj2VH4ie3NeeLn+C/Fvo74KsA2FL/K9AX94/yL43+5T4fxO3mXvyeScp8ZtZb+Vc4RzprL+K9wdybyDna3lvZwFsB/P+zq7kNwBfibdKnNWR0mejs5fvM75cajy+BB5Fns+jv178MfQ2GbZEf1f99xXyy34k7+8soL/EoSf+vL38j8ynNdU7TDrvqDzPnv6Snkr+17PPkehrQH4DyOfq7Ifl74D/FtrZCD3bys87Xxtp/6NSGTfGV9aV8wrry/3pPf6l+JviX6rPHkpwoO92if9Bv75UuqS/H63++NUq5/0EGP9a/KorC+fZOb/eFr+V4C7428l3OxXuZeX9jWo5f0f3mrznZPxLfMqe2n8v7/xUXrf9pvppR+PitRYgP6t/SPbbcBKcL78YD3hQ4jDIK/N2zquL8/f8zCfkeIrvc3+1EvpfNz58n3gj9G9FHvEbvwLvoaeMrxcYHx7JvQz6yfybcTHrj6xH8v3N8Rfp/9lfvIGer+hhL3zMS3wxe/ye3EbGT4D+E9X3gPrHJT6L/OJXLPrHhmn/YvJ/V3/pCzcvnAcW477i3xlALs/htwt6Vqh/qfYfgrkHnvvf4+nzzNhrEL996Cf3/or3AfOuQ7//8b5D7uHnvvBk9E2lvzG+z73Y1wv3Y7MuqYaufWAN9R7Evuqq5wDpqfJz/yrnCK9K5z5W3kNrCSfkfaPEn6Hn5pwLJX6M3bxsvPgRvpT51vz6I7t6mV3N0Q9yzz3+sUPND/GTxT8W/3TiAAaFfuuMEdI/wjPg4+ivjM5HjSu1tdMMfYkLvwgW919L8fuLem/M+Sv9/Uw+J5HPSOm6+DiZPFeYL3ZBz/DEX5NL7r3Pkj+6VManjWeP6Xd5hyL7xcSvJm4140TGh5z/5/2hxAHED3MZenMvYj47yn2JCuWm4G8L/J9Hjjkvy/nZlMR7aP8u/A3P+gH9LfSH7dhdfXguPvsp387v7WHbvE+kfOI74m+bWogfXKC+heT/iXTu6eQ9xdxLyPp3Rd7DocdS3t9UT+5nTNLuE4nvLvSfDuSzAMa/lfcRsy/IPuF+9Gd/+x/fH5dzyexT6KcbeZxMH6dKd8z5m/lpNVyonVvj/8r7LvBNOJFc/kBf3g18IffAyD/vf+Tdj2Okh+JvlXT83ktyn8v3eS+yiX4X+fwpP3FeHeDXuS+A/sroedHvs+DB5N+OPR+nXx1K//3l572EI9Lv0Jfxt1fuC6lnYvzs8psU3n1K/zi3VMY9K/AB+8JT1PM5/nvDO2Dmz16+/xTmnvcE/TLxyolffrUQv5z3Sf6XnefctFvuPRfOTwfS21Uw9wF75f6h76Lnj/B/ODt7M+sbmPv6r7CfFuRaQ7+qDufpXyO1l3V9D/lZ31/k917ou1j69eg379+w/7z3mvddqWHt/YdT0X9v1vu+HwgnoP9T7VQ1n22aOEr2mPOXO8kn90Tb5z07+J3vD8g7KNIz0J/3F/LuwhSY9xcS7zGM3d8Bf4/9Gu9b+n5ncj8dfcX3YlabP3L+n/OU3K+gropKvjuS3I9A/13Gi28Tf5TxEl13am9Kg3XrvSDrmkL9D5B7F+U+w+9+pTKOz/ul+B3EruvjZ2n8h/TQEz3nwCV57xUf8SPOMb48TN6LYN6pPFz7bfMuj/Xgd9Il8utoPhhkfB4Iv8q9APb5YOIjEo+a92TLsHYdV1X7Wc/tQN7bwwbwQu0nXirxz5vmHWHyOSrzODlnH5n94wryuNi4OStx0Ln/R69N2PNMeC/9d5bfCZ975z6r8nk/K+9mHVF4P6un/jUdXV9L18Tfjeg6JH5g6bw/tL/64yfbrfDe51vofRPmnkLuJ+xmPBxN7tVzTsg+m2v3cO3Gjxr/aaPcM4m/jd4aZnzPehJ2Rkfih5vGL5L3qxPnl/tDZVh7/laML11A/q+yi7yDfj36xqi/+A55/Bb3mS+qqz/7re+Uz34v+78F7Czz11G5X6d/Ndb+ZPIdV2ldPhvmnBafZ+vfea90ovr3yPqO/N/C3+HS8T9m3/QGfrJ/elW/3FF/yPuWibOKf78ffV2H33m+vxB/eV+0uI7Jeq99xhO/70geHfy+IXubm3vq+mPe92qF3kvUl/vQWX/WxO8N7O+I7CfZW01yfDrvF8Jl+PkMu0fCnOfOLZVxovprZB8o3UD7zcm9BXycnt9K/Ah55X584laz/k58yFC/Jy6kU+4H6e9vq//d+MeVH0tu42Av49iUnC/T+0kF+sNP4jfzrnniN/O++RHaH6X+TtJNtZ9xOHF5eU8l++sZ9NnF+HcivF1+xsN66s24eFPuFxbeL8h9tbxfkP3CE+RSPJ/M+z6J/+leuB+efjkVToMN1J/7XbnPlftdL5BP3nO50DyT91Pi/90+78/p9+tLd5S/H/pvxlfeU7qtVMZffH9u3q2SvjvxMewl8TFz0ZP4mE/1rwVwIexC/nkfMO8wFd9fKt53rUnPOd+6kTy2ybxsHMj7NWfR3wxy7ZHzEHruQ18Xw8fQl/elqmvv8Jx347tC/eMlT4S3wXE5XzAf9YtfS3qQ/PrssR7cNetC+LJyN+ZddenuyudcIu+u5P825Hzib/TfxC7yXmDm5zrscbLx60c4NPolz67wC3itdg/O+WreJcHf2FIZH/b9n3AT40HeZ837TiMLfpz4b54sQ0WN+IWkr6S/Rokrx99ZWSfKj/wj94YF+efd4uawBRwe/4b2iu+s5vxme9+/p90H4FnayXlm/IiZ/3K+OY78c36S85Tsr+qpb5Z2E8ea+NUN9N/9sg5Cz2G+y7vZeUd7lPS++n/ucyRO8ZTCfY+/rTtOT7xI/Dbaz/3x3KMovp8Vv3reEcj0nncEFmlvR/Vsnzi//F8M9nUHO8k7s3lfdorxZj3trSG3jD/7s6PEvX/Nvj5U//noyb33xInm/nst9B2mno5wdu6Xyh9Ajtsl7h89C30/2LizWPptchqn38yCj8Lcg8p5R84/ivGlr5NHG+Vq4nMOfd2Qe2rqaQi30f6f5Fsp8wQ7+kD5vMuSd1gasIfEn/fO+9v0MAN958a+zTuPwtnsc5/ER+snf2i3Y96bLJVxURkqmsPc7+yp/lHoznvs08l5unTuQ8VvjYy196Nib3mHPnb4J72ONq58bdysq934VzPebY/vjfPeJfrz7sgR+C6+P5J+l7jgMTDrgy3oqTl6G5oP6yf+3vc5d64TPw/59kfXpvT0KDwQfblXu5BgFsPvtZ/7cy9qP/ub1P87+WUfsxLm/yctUz7vuGTfl//vcKx+3de68crEA6Mv/tDWhXtYWcfmPd7cF8390azf47c4S72N9b87ya8me+tOP5/kHXr05f7mBvpV4kv3VN8+5u0WsDV5vkQ+8QfdDr+g//iH4lfIOi7/lyjv8+V+Yu4l7oGv3E98V72b6gdH5Xxe+Tm5r0oOr0nvr3xndB+R81v5O8nPvbO/4GD15/5Z7jMmjuVbfNxIP9lfbkNvid++u1TGpeSfONFifOhxvj8WVtOfhuRefPzfZahIeFjnvJcunbjD5dJr73tnvUOOF0rHn9WevbRhFx2kLyOfH61T825c9BX9PJ24evKdGj8H+4vf8AZ8TcsCgx3n/tY38v/G18j49QpxCSsyn+Y8OPef8HsyOWe9WIzPS1xe7u9HbonjfD7nVKUy5v8pnA43pafrEr+P3z/Quw16M3/k/4L10s4PMPfv8/8i8v8jXqOf/P+I/L55zjHZ+cPoO0F+VeVOkt5C+fgLm8ITtB//YdZLeTf12rxHSD7nsMOn4VPw6vg/9Ye831T8/2Tv0GdLcnqcHqv4/cjC/fCjCvfE8/+hcq8797xzv3sD/XlDuBHspv0HzOdZV84ulTHryxe1Nwquhm2UX6T9+eT7Nfm3U1/uY11HjnXy/znIv13up8HpuX+Yd/3UWynrP+NwzncO1H47djVBfzkjfnbj0r2JY6CHvC/ZQ7mcoxTPT1qT6xHG7T+1/6TyVXzX1nffoqeT9o9HT97hKr6/Fb9M3jHM+0h5L+lu9pr3/+6Rzvt/nyv/ftYzxqE35J+de4/sshhf9DG+4ucd67v4dysK6/vEyWWd35S+nyaHsficiP9i/EnilXM/K/uNxAEW/fnZv2XfVgW92b9NyP1V9SZ+55fcE5e/l99fhu9qtzb6l+O7L0x8b96V/ijnsHD97De0M5acEo/1Qvzr8qezr+L/26ujvn3Jfxvpvom/N34MZhd5h2UNXEzuWec0+R/rm7X/v6ewvklcbuJ0815r4nPzXs8nMP+PLO/5RI5F+c6jxyfxX9RP9PYwuTT2favEsySOX/n/wh+U+0n7mS965p29+MfY6av0MQSul3mU/Zyhvl/V/5H0JuRXXG9mHVoj8ZP5/2r0cKx0zr+y/8++/63C/8eIX/9N9hS//sbqz/4y+8p7CvvLvGd0Bv7zXk/uKV2R96YpoH/+T1r8WcaVjGsZ5zK+zSvD2nsxuV+a+6aV0TOrEEdWx/gwlD1eqd6+sKr2EzeXOOPi/2dM3FnuGRbjz/Yx37WAeccz75V+kvEXf5XhJPK5hb6u8vv5+tHjOT/1e84Ru8CcHy7Iu93SWZ83zfm8+eCX3MvO/8NE/y3xT/muYdbB6OtRiH9rkvuPsc/IG+aeaO6HVtfuM/hYED82/laS1yDf3YT/vI/WIvG18Fztf0ff32e9lnv+0p9n/Cy8m/kVfeT9zAvyToz2Gxr/TiiVsXL8ieTWFr2j0Rd/ZvybX7GTnL+cblyrBmvkfiz+ry3D2viOxHvkPcL90DMZHZPg9fTHPCu2zb1G6V/wf7Lfv4R1yS/vny3Ady3YP3Yc/4365sPcX87/pd3VuLKUflolvta49R/yzfuNHWHu6+2fdU7enWInD5Jvzsdfyvt45JH/5zUu81neIcx+s1TGxDUmHiv9PP8fZCW7mcpuTpT+JPGy+f+LsIb5YVrWcb5fA+eq5z76fxm/o9B/Rd7LVn/e/805X/F8L+9D75R3PfKejPysu99VLu8tZf2d9zJ6w7ynkfcz5mj/qbxzht42uR8o/zt4vn5UD38H+71W/k8CvA19TeJ3oJ+tYebHwdrN/3EaIn289vPezTT2VTxv71Nr3XS+z/n7T+j9GS5NvJP6j0l/yPuZiWeKf1p9jej1SfmJi7xeMvdUs9/P/v506WHwB5j/b5H3Nz6Ap8LE3+R9r9wTzXtpuX+0We7t+v0JOJ69n0Bed8SPnffcM/8rf5hy78NJxrPcX52Xfab+lfurVa3/865e4kzy/gsy18on8op8tsz/+ck5MDv4TH7iRxM3erd04kez//5LP8g+PPvvB+g374pXp7/v2Gcj5f8hn52lJ8jvir5m6P8z9+wy8Ko3/yeo+P+B4pcqvn+d+NIt9IO8H5Tz6Pgfc18x+/a2MPv6h+hjDHwYZj2X+wVHKzcZPqe93JvL/+kp/n+em5RfBZfAmeTcQb+bSq7F/hh/ff6/Rv7fRvwviZ/O+dsr2s//V6nKLuKHKfpfBio3Dd6VOGz6/D+g6R94eJx9nXXUVkW7hx+QLumOhxZpUGmkQ6RBxI8uCQlBQrq7lAYpQRAJkUYEBEUQBD86FAQkJAUVRCTOWmdf17uWex3P+8/vnWf2zNw1syfue3bKuJH//UsFpgCP5gwwe+IA58cKsA357cD1sQOM/UyAo0k/zh3g1GQBvpEgwFk8Nz91gLcyBjg9U4D5KVckT4A/U185yi0n3Qr6cscLsFvKAPOQfj0aYIsMARbOHuCvmQMcQTtDqO878DZ4nfpXpQ/wnRwB9qbettA3Hj7yQ1+cNAH+QP2Jye+YKsAzYMVcAaaG/8zg9nQBVska4A3ofYN0O/Sxj/bvwPeXyDl1nABbQm8+0i9BX2n4qwh9zQKITKL+raR/pPzM+AG2pp340P+I8uV4fg24GExAfWVpvwx4CTqeTxvg7mdB6j9Huk80QJqJXAQf0H5J6NuAfBqSvoW+kqC/3bTzA/iE9ndjv9fRV1XyR5KeRMNJ+L02WJ78hdT/AXq7lC3A7fzeGf1+D90twEHgsiwB/hd9rAO7gwXgZyT2cJR0KrAn9E2HnvPgVegsSH/qgv3nId2I8veh8wz1p6d/9OW5ithXH+qbSv1lSL8G/d8kCTAh/S4B2Jfy71F/Se0tGuBs8lvSPwZCl/2lPfR9Cv2NkO996muGfF9nXPqa8kWwh/bUXzVpgPOx4y7JA9xE/fvgKxd20Rb5lyQdG367guvAxtDzLeXfBYuT/z3ydDwdniLACPbbHfpmQU9i7H5YogCXwU99+s0v0F+U8lmQ5zuMByfp/8voR13Iz4c8z4P9KX8tGuA86h9D+Z3QWxb5aj8p6M/akfYzEn3Xxg6+gs/ctF8feTRHPiNIv0J+VvQHOZHl0JmP5w+hz6zI+yb0fIt84iG/NbxfVoOPob8g7fUAO1NvZxo8j9xzQ38BMC7lJyCP0QkDHAVmQn8DSH9GPbeRfz7tH/7mIK9nsK9Z8L+V9lJCdwqwMs+P8H2LnkaSfpv8V5BDK+jdg3zK0v557OMYeBQsRrnM6H0x9T4C61DfavSRHLk9wn6WUf9G+DsJdgRzYy9JsefnsJMHyGcL/eMW8rsC/gLeRz72s4ykr6h/2t8EXU3B42Ai8l9AnnV8f0FPFPlFA4ixw09Ia39/Y185kEss7Psw9OSFr+xgbuTTg/av8j7axHuiOvxMpf3x9Otx4FiwN/mtsf/OjLf5qG8R9fxJu39BZ3nkd5f899DfCOiaRrqh8qS9y+Bx+MuMfhIgv6PYSTr0WhL+diOnJuB6+tly7OsI9FSg/FHS31E+B/Unwy6Tglmxv7nwu590SsafBJT/Enu4TntD4Tshz2+j/l3ofSX9NDPl+0N3CuhuBBaivqPIrQZyOwgqn0LUf4N+vIL8megvPL89Cj/Oc7+SPnA3WAD6XoWeodA5g/QL0LcxgEgXcCw4gvJvIe91vM/ywk+E9+hC8gdg33NIJ0N+16B3lvNR+GlH/cUYzz6i/+QHq0HnBzQ3D6wLtkQeE0i/DK4Ef8bu8/vexC6eI/1TNMDs0JuG33OQbo58nK85f6sJjoG/7vDneL+MduvAX1fHI/RSgfRA9FsYff+mXYDjqK8/6ZPIvTTpZ6HvCfRdQD8Xwb3056n0yxaUi4B/Uv8Vfv4Gu69Iejf1f0X9PXh+NOlU8DeO/rMAeywYDXAX6UHo+yr6dz6mfPcx/jwLnRXpZ3so35T+1gv7as44nJr+swf7SQjfc0lPgN434/yz/bewg9Pk14S+hoyPU6CvF/L4G7vISv/cBz3Pw/9D9Lofec+CvuvU7/wjF/U6D1H/dam/KniG8vPIj8W4tx7+umA/zkuWwd8e6FlO+hvSlXjuLHp7GzyAfHci9y/BHWAl8p9SX0Lmwcfh9xzyv4s89kJ/afSUF/q/gJ+68OF60PXfBfKPUP6i7/dogE+g/xOwA/Tfof5j1NeA+rdTfir2tRl5bQEbQ1836C9C+cLwUYD0edc59O+76LEcdN32/Uq/7ES/SgJ9dcnf5riC3LKDXbGP1ui1As/5Hj1Cfa9R/w3SGai/NPR/Q3+JD3+LqecJ7a+B/nHY3VP4OIJ9+N5vjvw+p77h5J8KILIL7Asmor7G6GUmdB0h7f5Kavrjccb17KDz9OPUF4v+14r0MPrrOuj/OxrgIOivCn17kGcR2t2LPL9Fjo4Hsfjd8WIi8u8E/53BOYwPz5DfkvRs2nkPOX2N/FPC93/hpw/6qgK9w+AnDekj0N8X+azj+eaUnwJWQb5DKb8J9HWWl/o+ge6ajE/VoXMT/Ws3zz8Gfc//yPt7PP17BHpvSX0X3f+BnkfgjtD670vaXYR8a1M+reu/UHvScRX+GlGuHPXfpv5cyKcrzx8h/Q3pLeh/B+NSIuopj36zw/8s9NMe3M14r31fg64y6CVC/njssRB2NAP6tvN7OupfF+JH/vZD74vQMwi7PwF2iQZ41vc59N2C/yvIbzPtVcXemtAfylP/KMoVdT+MdAno24U+xrm/x/gYF/2eJ38nctyEHbyBfLpBD83F8NsDuktT7z76ySzs4Q/oXQ+/n1OOYSqyi99vUc8A2olHeg/8u8+7ELzpeIu+3Bdzn2wcOAa97kUeaZFPN9d78L8K/RwAq2FHCZFfPeTdAj3sYN55g/wS1LuaehuCY6IBnsJ+zoCnXafB32DkPgwcAs5Vf8yPdoNfgh8i38nIuwz0lwXvgvGRwxbouhZApAb2+jEDymPGjR95P3an/v+43wGfk8Er5Lv+c33j+8v1TTH09YT6s9DeBPg7hh2kgt4ipEe5bwa9ifg9B3T/jvw+gr56zsvBOeQrH+UyiXQv2v+Z8sPAZZQvRvms6L0C76MDvo8o/xr20g3+l4HJ4Lsj8ixMvWd4fobzKPLPghfBn5Ffe+q5QL1jwILY7+s83xR8A1wA/bPp33Ho93vQT0fPV0j/ynPjoc/1wiL69X46blXoaeD6Rbtm/uQ8yvlTNeQ6F/6/Cq0falLfQfcxse9HlK9Nu3+CtcDN5E9Bry9Ct/vg7n9vgb5LyKUN9ncO+Whn9pMdAcT0D8f9OdTv+6Atv7dhvLwE3qX/tkB/K0mvAFPDb375432zDHmmBfMin8q0mw/sDX/DqD8zchsEf0PAB9QzFLoyYG/pwIO035Z0EuTa2nGA8gVp9+3Q+Hg9GmBC9BkbeWyCv1T0m5X02yKUH0h6N+VbMf94Cp2tPW9y/zKAyCvUj9oiXfjH+bnzcve7PsK+u2FP3cGuYG/yl2LfS8BN5O9DPqOoryjtnaWdnOgnZt8AvsP7B1WgNwLfno/VQX9NkecbYHb4TI8cCqKPgeQPAJPzXAX69TTscgH0dHe+hN21xS5e4LnPoS82dl/R/UrwrOdHtP+B+9ekiyG/Mjy/AMxJfyrgeQty6Qzdr0J3Dex2MXL5EuwETqD9x9T3C+XbkV4APz+R/pP2d5L+Hfr+RD7xoCMumM3+T/9LDr1psNuXyN8eQGQAmAb6WqK/McwHtLvw/moq6D6L/X8KpgnNz3uBzkeLkn8W+ieC+cEc6Hcp/LhuaB5aP1Sm3ozQ/S7pXdEAX0ef3eh/hZFrW+r/jPY20z+2gM/Df+3I/89HV+R7jfoSeb5J/ymAHYym/bFgF/RfGXk1g65KpHdQPhvy9nwpB/p4E/1Nh56OoPuJzyKfxPSPpa7f0Fcifnf8kc8noPP79thbZexvKPRof/PY9+kXDXAmcqkB/e6nVaQe5/vutx2mvUrgHbAM+c9Db0f3R5DPRc8bQ/TKj+NnS55vyPOXoSeD8xry05OOj5x6g/orvMlz+jHo1+D61HVpjdD69DbPr6X9POBTxuHJ2M9C+tdk7ML39wOeOwwdx/SjQL7zsHvPebf4PnJfDrtqQbsDwGHQ9yr96wXG1eLgR9R/Fn2nor5s2N9h8j1X/oP6ojzv+XJX7OwefOR1/k/+Ceg7A+bjuSf0v4+cb4JDoPcE+p7pfBFcTv5vnk9ID3LWT+Qw+b+h1wrItR/p0/Qf90vdP3U/tQr0z0XeD8Ee4IVogBuprxb4DO10R165qO9z6k+LfLfC3yHm8/ng6wDpGuTPh75m0FuNekrRfhR5XmZca4J+p2BfrltvgN3AqfrfuC/KvPd3xq9azh94/gIYFz7XeF7A+3gX7d+knO+f8Hy0OemO5Ovf4vwo3L87+96jf2zlufu0Mwf9j8WekvB7PcrnoD9s1G+DelLT8D7qiwt+RHuroVd/Bv1n9HfQv+Ex+noCPgLvUH8K7KUnfCW3P0PfAtptht38Svs/sC/hOewtyus/dTIa4FrKD3K9Zn/BfuIgH/2obof6yTX0t5350RJQ/65atBsbuksh30X6p9DedOjfRLoa9tACe2wOLqD+0vqr0P4flC8c2r8+S/vtwMngVvTjeZLnS1edPyDf7Nh1DnAc49Df0N/c9zPoPOcY/aIH473+D2lJ14a+Y+ipuuMW6ZzUvwd63eeZD17z/Up7B8Ee4LhogKeg93vklxQ+3D+7TXvf8ZznGEfRXxbthffYFNeT9hP6e2XmST2ovy70XaL+DZ5vYd8lsP+TzPNPgMOpJ6f+hox3i+DnNPZXHPqmIs8yjGOlwUu+H+P+k66/SI+g/oKh9az7bO5zliM/DpgX+srC33eeJ9PP/gLjIJ+fsINzYFnkcRf6MMOY+Utm+slv5Mej3Xr0h6r6S1D/cfrh6WiASxjvL0DfJuzhHNhTPzn9E+F3AXr2Pen7cQr9ag18zyU/FdgWulfwXC3ozI0+u8JPCtp1PnIeul0fOk8Nz09d706iPedzju/5sL8t6LUU6ePkTw3tF7mf1BL51Mbei9E/i4I1KF8CfSZm3hoffp+NBtgbfcSj/SXY2UDK90Qfnmcvxe6K0/5E5DSZ8jeR3/fY9wTozQgf9R0v6b/LA4gUAP8Af9KesZ/F4CJwCvXPh5+S8BnPeaj56DUH+cXcr4euD9DrZ+BgsLr7X9DzAFwK9kP/6Tw3Re6rwcvwp9+vfo4fk66gf8W/rIvfQL4fMm6V8nyA5w9qN8jDfbEfowE6v76X9v8ub7210dcq6nsTnEk9sRivvsB+UjGelUO+JQKInEJuw0nXpP2xtPsd/S8248jX8DeN8W+67xn4yUL5u+itn3ZLec9/fL/4XikP6i/q/I/qY84tPM+7h74K8EA76n9I+9/6vH7npP+DfXgu/r3jHGnXL2XpX4/RfwPPMdGz7++e2IX+IvqHFPPcmfdODrCn+6/o7xWwNHKuSfk+2EUW8h+Czr89NytNP6+G3Bain67wcwK5dCPdgfadlzlP03/O+Zl+lxvhuxfpGtTzK+U68Hsi7Ez/k+dcN4GroLs07fd1Xce49bH+rPDfEDsvwe/TwU6Ud15yEtSOnDcuR6/O8y/TjvN8/b8GwZ/+X/qDNcG+dkHnKvTTCPty3uH7PDz/mI1eHqGXbfS/SpS/hNzC5xOeW6RHzmvA2dCTDv7dV9kM6qd1hvYvw98w6psGvevgPwdyuoodLWK8OKd/MPV5bpXMNHr/ivr0/1/oeQ/ly8H/WMZb4zgKQd8Mnp8J/oZ9f4t8aqC36mA18Bb0r4O/b/UzIb1F/3DofQXUn2I486vzjJc/gc9jb8mpP75+FfTvdz2PIL8ffF/EPvqTrq9/Fs+/j16rw19O7ORv7HkO+tnDc2Wxh4eUv0v7d8BDjs+k0/PcaLAD+fEZ72bCdxkwG+1khY4T8H0cbIP8ilLfYM+jaO8t9JcNup/HMAqSPomeM1HfH/zu/vybyGca/aEhdhKLcvqndtS/A1zhfrPzR37/jd9/BZ2/vg+/r4JXwcWe50PfEfTwBXY4hPq/Z/wfBbbn+WzQ53zZ+fON2P9sPzwfbYkctju+YS+90EdT7PtP/bahV/+TV+G3C+11RG6vUp/npYNp33gQ40MS0N+NDxlCuz2g6xPafRk8RHul3DcAx/n+JB2Bnj36jdLeNOp3nW1/sB9kwh7KguXA96HvvwigIfJvAI7GPj1/GEx7nkO4//sm5J0GyyGfT5FPcvr9NfSegvRQ+JvEeOL+1qHQ/tZpnj8DngKbkD+c5yeg52GkP4U/4yE87zMu4qz+df/iV+D5+X74dd96EPIYD38Tkdck8AB2mIHya6mvKfgV+F/kWRV+qoPt6Of63xk3qH+X/l76d7m/eQI7dJ/T/c18PP+D5076GVC+EPX+GEDkJXC/+5bwUxN8BdwFfQOQ+x9gB+gvR/29sLee+nXC5wHnr8jza+fB0NcB+bUmnQx6EoOj4O8t2usCFkcPH0NfZeZlrosqkXZ9ZJzbEugqQ79JBX1VobsyeI/nfoG+YgFEZoGZoDc1drOE/uX8xvmO8xv3y90/H+06FvqGet7Oe2RwyH9G/7ByyEX/MP3FHkNHTbA3cp5BOx2g9xG4A6xO+8tI5wWzUH8m6ntgPKd2BHZCrtqn9ui+ov79W+ivO7CfcfBTCf2NI782dheL/GKODwHE+CE6Hul/eAv6lttv9ZczvgB6XQe67ntJPyb43QBeAQ9Rv+cDzeErOePEF9EAnR/px/8IfBl5OE/5hnH7PeiZhz0/ZVxsA7bzPITy+sPlgn7jTIwvSeG6BPmlJ72T/DHY+yPkP5Z0ZeRjfMtZ5PEjqH9YQ8ad0/A/H7kcJ/8D6ttIv7zn/gft54KejfSPTqH43VbY0XLsLxvyz6sfOP1pK/ga5V+kfzUNILICjImnoP1w/LDjp/FdnlddA7MrP/g8hf5aY6eTsJ/PqH8zfO3m9wHyS34a9O0+y1PwHu2nQq8vgft5/gDjkPF965GTcX7G971F/kjkMgr8hPafhuxqGmnt6zTtpgztI03l/ZWUdt9Fv8lI96L9t9FTC/I/RR7PIT/Pv1xvJ3bDNBRfu4GfMbfIWuhoST9pYfwU6Pz2GO0fB49hJ+tpbzb1uU8T3p/JgL2PoH+kI50T+VyAjvzQrZ+I86XnPb8Du1J+KeVzo5/LyO0qeBD6spE/CTubCHr+XxJ91aRcf57fTH47x2/HL9L1sffH2NET91WR3yD67wjG74I8/wIKuEDa/def3V+GL/df1xifg9yfQqfrp6To1zjycPy4/nkfGodCPfrn3aC+lsj3IfxvpP7w+s91XxnKv8fvxhUYZ2B8wUr3VcDV+o/C30vQV8hxB5yOHBJBzzrjTEjvpXxx9JIU9LzO8zn9td2HUh/K37idjbSbhfQX2L/2nZpxQzvXvjvx/lqB/U6nvXdp/xfozWMcMDgX/nqF5nXPheZ3fzLezXD9n/if9W/zvB6+jRdzP/096DWOqw1Yj/7V3f0A7Q895tEOGXccfxyPHH/0j9Mvbgf86h+nv59+4voD9qIf6Fe5nN/nuH/nfQfUP8X4TepJi/47oq+V4Dz4yQ59Y6DnFfgaRfpz+G8QQMy551rwc9rvrx86uAl8B/s5BL3h+BLjTpK4nuX5JNjhLfeP0JdxoFNA/aPrYB91wXrgXPhrAL913NeGzzrIPx70Focv59lR173Y1ypwC+UnQd8q0tWQ24vuv1D/BvgbxbztNnR3hD7jBbW/dNBjPGFLfr8Les/HBNfL2FtP5HmPdHz6Z3g/tGcoPtb9eee37tO7P+96IA79K4F+ZvBnfP5t5O45tfH57nfs1Y/BtHGPnicgt928Hz7FfvUP0S/kTsg/ZCzPF6N8UvS8wfg86CkkXdhPYfh3f/sx5XMiJ/e39T/Q72A1/VH/g5TU53x6KnbzFXJOQ72zscNYjG/PuH/P8/ptrQS3UF9DxzvwO7AB/I2P/JPOfiF6PY/xnMb7O4wHqovC64M5kd+n2Nd97KkCcrmCPno5v+L3k/Dn/Q3G7+p/Y5wC2TF+4+08z6f9rNR/i/rzIb/b6OkOOJ36U1L+NOVqgT9TPh713mT8vQEa//8OdB0EvWdJ/968tPev5yC0XxK8wDg8B/pKkV4ZOt8+CP9ZoDezflDUkxX9DoT/mYwHK5Gz8ald9TMEo9jdEfjuHopfj4X+O1O//qaeu3gO4/mLfteesxtHov+18WzGt+VxPxH51MDe88P3C9jvZvcjyG9M/zzj/jLla8LvDp7bCF+fkf8x9dWh/qWkJ1J/Ru8Tgs680JmX/PdJz0N+dUmvxe4vkh5O+bGk98K/fg36F+tvrH9xOuQ/BDqG6GdKfsMAYvzctoHub3o+fZ/ynlOHz6e3wncJ77Nw/gK9w6C/EOnnvD/HcwFwKM81onw574vRP5T0EtcXpD/2/A10v9z4mi30uySMa8nhf7vnumBx/V/h74Rx5dBbF7t0f7mp+4PYxz3Qe5a6hPxW97vfR/vKtcO/yLe5fmH6XSGnurSfE3t97L0WpFvRvvMX45TD8cneR7UANA7P+6nyML+owviQCTyJfbRH74lo/1njccl3PeX6yvvOXL97LuM5TYPQ+UxRxqP+yCu8vvgVPsra/+BTvwbj65tB3wDKG2+vX47LEf1znA+XhT/n0X+ApSjv+Z3ndg953vM7/fOLkK+fvv75a5zngcazlYTOt6DnKOh5qv7o5bBn7/X4jHoyIMeE+n+E3gNP+b0Ter4BPe8yL0qMfG+G7m3yHifvb6pG/8oNVgU9P5iNfAtB93rQ81Dvn5oJzvB8Afl9znx8PuPBKeypkP4nxkfRvzOB/cl3XNTf6z+g4+M47LsA7Y4nfRv6jW9uDMbEOaOfd41ro93jpFNgv5eo72WerwjWon39ZfWfdT9d/1nn7c7X9QfQ/+MEclwIjoS+ksY78XsZfv8ANL7sBO3OoV39Kdyfcn98vOcWngdHA3R+5LzI9Z3zI8+tPbdzH9h94cGhuDfj4KSvNPRvpZ277mMgn+zYo/0+f2g8mAd/ReiHRT0nQT76FS123EGP3p9UwHhZ6k+Pfo95rgwfC6GrsPML6O9G+2nB7uBf0N8HeXpPWPh+MOcNKZ03hOYP7v8dDe0Duv9XivKL0Ut592dz/t/874RP5eB8Xb/7HvRH7185Srn5yOMP9+fJX4PeVoG99Zenf2yD7+Tw3dvzJfJ/hP6JzovAgdhXeejMiFxfJt2P9it6Hxf6D/svp8ROuqC/jqRTeP4Xem+H7xscEkCMf/gPpF2fFaa/DosGmAEcof8r9B4Fj4Fx3B9nfE8GJgU/oH7XzZ4TId6Y86EzyD0h+j+oHzj5njNccB8CfI7fnyft/U6Z0dNf6P0d5Gb8ovGMxi82QC+NwL/p356P6e//NWg8wAX9uzP+83nPMTw/cT+iNbgY9P5R/dKL68cW8k+/rv8s9DV2P5z2vE/NfuK4oP/hUPjxXseMxquSf5Fs95G9v9T94520P4hxYwzp9ZR3Ha/fsuv9O+5nUr/rI+NTvc/1HumhoOt09xGuwVcVsJbjGvanv8d97z0J3Q/q/YCLjdsAf6J8Be8lBd/3HBz+9R/Ub9D1iP6D6ULja9g/K3z/0wDoM37J8/+R2O0JsJPnf9i1fj6er+ZAfpPpB5NA/en1n2+DXJzvh+3f8c1xbXdofPuv4z58LSA9GvqN7zWu13tGje9Nq98t5fRXbRINsB50G6f8OpgIvfVHHy2odxbpo+jPe1Nng7PAPs7P0Pd16tuJXUb1//bcELmMJ12JfM/bXAeE/bfTo/c02MHnYBPknx/+W8L3XbC28d0BxNx7tNM4KtrRL+oMqL9UHc/LSd8H64Fr9f+E3zLgZvpLIvLV5ybfu6D6reN+I+PMGjAv8t/C81v1i0B+zgev8/xN8AbYzfFR/27fa/ZP6We8qur+p/E2xifS3kFws/FKlH+IPWVCXiMdR6jPeAjv/XsIev/fFOx+ghu/3r9E/bWM50Rvro+83+N35G0/dH3geuFt6O7h/hhYmfKZof8wdrQEPB4NcA366w7eAPfm+Ae5XssXmQPugs6R9L9R4GjwJPrT3345dCzTz9N4wFC7131PQ98V2lnluTn6c333LNjMcZ7n40O/8YPed3cSOXq/ZiQ0r2kFer9XMuxhp34V8DPb9TrlmQZFPga3Q49xv8YBH4ePfOQndh+RceAt+kF96vd+mphzFejxfOUL5L0N3AHWYPz4CHrygX3AH9yPgo6t9NOb0Oc+ufLzXlLlqPwO0p5+c9+B7Q0MQj7uazqfdH9zHvq0n4X7VyPobIcczhl/CH/eG9wBDN8f3JD+oP/yOdD7941vGRmKczG+xfuUY+lHCeZyfQo/3hM/EFyh/yDlL+vfo1zJ9345+1Ur0PvmjpDuASZBjt4P7r7eUe930k/K/Q3KOW90Hpkf+fs9AL8PMB/0+wDzsc/B6Cd8zmX85QfeI6zfNuU38FxC76PRHxv64/L+v0v9E7HDSeDfxquAj+lHnvN5fua5WR7o8/zsNeiqQn2NSQ80vivC72As5HuM/GbUm5b3+0rqWQH9jtcjwBreLxINcC30fk29FcHD9GPPA7y/IXw/xXraL4d9vwyuRr4TPU8BM6E/47ePQNcNMAn1ev+299m575NefzTy69MvWoOtQNd32q3fWQh/X2ERdHUGj4rkGwcXjo97Al0l4KckmFM/OOzFexu935rHYu5v9N7vb8Dw/d/O/7LSXvj+/GHo03Eg3P/1Z9W/1fN5/Vuv8d5YhNyGO06RXxM6Xwmtn/z+w03m/+7Lu0/v/vxLzg/B8P0Yykk5el+G92R4P4ffHQn75zfR/rzHDVxM++5PuS+VwDj7aIDh+Z/zvuWUd1/oF+UGep98Qui5EEAE8cWsp7T7fuBWMCntpEafp/yOAKg/awPvJQUbgsWgb4Z+ucjJcXIK5Z1XOc+aHJpfTQrpt5d2Bn3GnRiHoj/IcPh3XhIJvT8v836YFor7Mg7M+C/jBNcyXvo+8f2hf6V+lfq76l8Zvu8lIfMA70dbQ39aC+rHPZbxcxbyqIp8ioBb9S/BvvSv0N9C/4pvoMfz9JveF0j+OeSyB3S/Uf94x+vCyN3x3PE7NXSXxy7S6I+mnTIPzEj6NvyPp/2MvH/uU+4eGI/nt9NuP/TfiXR9+Deu4ibjUDi+wv049+fC98P4PYDfXe+R9vsAxnN6z5nr56fQNzh0/7X3Ybcgfy7vvaHoZ4jxHuR7f1Yn9Oo9Wt6ftQF5vM74t5F0TsoXh9+KyL8N+AP5Lah/l/E+3oPo+hf7NC4kHC9iPM4p5GO8jvE5hdzXpZ35oPczZ3a8hq9neP5F6JlNvd6zWdU4IOjPgry/DCDmnosD1H+e8eYSON57Otyfw35/5/c22Fs9+OexmHtV3I9zfCnmfCp0z6TxMW/zvPc4he9vuoA8XDc8B7p+8N4E71E4C3p/wiHsx3usvLfqRc+3XK95XheK3zduyjiqLaH4qSU8lhd0Wac/ayfvWYaOsP0e1n8UO/RcxfeX8SR+Zyn8fSX3Q9wfcb/E+NxPofsRmJDx6z79TX9l7UR/T/074/C7/mL6k3m/j+cdnn9c1Z/U/Wn0tIn+Nw76XdA3xr5vGleNvMphH7631/7L/k1D7Cmt4yeo//sbztuxww9p5wn1D6G9Q9DXmOenk/8YPa7xXmfo9n5r73PxHrtBpL2/7gv0uh0s5X0kGIpxNn+H4m+8n9lxLHw/YHX9go3LCdmn8f9dQ/cPLdF/FPl4n/Bhfl9F2vuF9evqC04BvV8pPvSO5Pel4JVogLFYfzwDxgbHwb/3Pud0/5i09z9PCiDSFjTOzP3l0chljO936DdeIr/nCqH1XdzQfQv6T4T9o93Xdp/buDbb9x4l/Uf0J9F/JLxf5j7aGdK8PiJfg96j+Bl0G87gPM04WufHR7DXDchVP+Sr0PcIuop7fu09rPrnIO8XwTPgYPrxJe8VgS/vWfB+hbdJr6b+10iX1j+Z96Hxrsa/ej/wRezWe68c54yfMw7OuDjj5bw/L+xvrh+68cv6t8yGXv1b9HeZwu9Nkdvr4E7a749+czGulOR53/f9oecrsAh4FPp+ZXy5A3al/dfg/wFy/cv+7fvFc3r3W8CMji/OD/nd80XPGz1fNH75Heo3jtn7YvpQ327wJ7Ce/qeks1DuJOlS5Len3XGhc0zjpz2fmgdfnlN5PjUmgMgB0PvjXiD/cNp/1uP3Ovw+xyTo+dC4J7AF+t+F/XlfgP7nSXy/kO/80/P3/eQ38j4P3jvGixkflhw5l+S5q7xH9pH/lP2oTa7/SS8l3/evcRXGz3rfi/FRxkUlCcVHvYi9vgSWMI6Y8UW/isug34nUv6IW9vGqfpjY+zzqn8d4+GE0wCjyMX5G/8q51J8X+/b+/ymuVxzo6K+ubxMgt4RgInAE9fek31yF7hF+h8v1GXy4392XdDPHH37HLGPuA3Cfwe+CGi/le8D7d/IzrjUxLgb9v+f5I/pYAX1+328q5X9FLnfANtDTC3nvdbzRrxT+ykD/BtofhJz1V7mKfvpQrqN+tdop9P3bvSnun05z3RA6v5hM+9uo3/MD7+Hx/p18vH9OuC9Kfgbo8/4Q7w1Zipy8P8T35hz6RXHSvj+NC68H3+H48COhdY/rINc/A9Hzt+BCsAj86c+sf/NxD5z076X9Frw3b8HvA+qvB7/eg9Ab+W/Tv4D63b+L+U5iNMDfvZca+fyCHOdTf1HGJ/158mOf7h/4fYHelG+Lvv2OWnbauwkWs9/Tfkz8Bu0Yv/EW7WQLfdfJeDG/78RjMfMU5zHOU3xfFwV9T/pefw/63we9b9/vb/m9gts87/cM/H6B9yvoDxm+n/Ys8izLuDwV1P9yA/LyO1Lqx+9H+b08v5/3bOj7eY4Xjh/h+7v8XhzqizAsx3yHVb8A48zD/gHXkbt+dcXBbdDflvHsRGge7fy5kuexYBWwPOWVq/cCe15o//a7WsmhK/x9Lf234tDuKdLeR+A5o+eOJ5zvoJeJ9LfvkeNl0r4/2qKXeoyrLyP/psjb+ZF02P5T8vd6b6rrLPdR4bMv45HjUvh+o1ver8E4cJfxyf2pfdhTLB3DwD0oPBf5D+Djvt8rIz8u9PUD+4J+/3UZcr3pvi/o96+V+5gQ/8rfebLzZ5ff1ue+iuez4f0Vv2fr+Oj3jvy+kfeZ1EVu9j/74xc87z193ssX/j6386FqxhXr3wg9nnMaL2d8nPHKxi/XcF9E/1PkOfBf5Puh8yXqWULa72H6nTXnQ84nnT/W53njoMPxz/LnOOF8w/3HrPSn37CvbKRf0L8RfvXrPgjq9x3L7/wwT/MeCePLHX8dd41/dPwNry/D4/dh7y1Af6Ohcxf0P6TdhvAVvj+uEHaWARyKHb6D/hxvHX8dj72/zvsyZ5D2Pk3vz+yC3L1ntwX4suf58OO9aFQXcz/aTujBfCNUF7MucVw8Cjr/cdxcox8vuJ3nlsLX/wB3vgqQeJx1nXm0j9X3xz/X1ISkgVK5hqLMlzImkZAMoUkDkRCZGqiQkpQpTYZEyBihMg/JlErmMgt9ZSwlQyj81vp9Xq+7lr3W9c/b+TzPc84+++xzzj57OHfIRYn//3fRlUlcmDuJ/92UxKevSeI0sMnVSVzC80OUW4M1eW8gz7smIcHjBI8T8/jP9dclscSNSbyK8h03J7HZVUm8DDwJtiqUxE8zJ7EADazPmsQqlyXxqyxJzEa/UujnOL7ffHkST2RP4socYOEknuP94eAk2u/E9z+nJLEbeEmmJLbNn8Ss2ZLYnvazUX4C/izi/TFgD7AfzzddkcTcuaCX8rs8fyhvEufcQPv5kngl/MtEfzKD6+HXDfC/0/VJTIP/069N4g/Ufx6+jgXX8t3ugkncBj8KgkPh03XwrxPj8Srtjrw4iXfy/pokJGaCkJN4kXbKMC6FqXcY9b0M/2fT/6r0+9rUJA6m/2NppyXtPwW+gHyUYzwqwd+KYHHqKcT7j1FPO8bnEPS0oFwJegvz/nfwaxN0yd9WyPd6+Ff40iR2vCSJN1MeD/+nU08/6n+O8hz6tzIJiSbgeHAxz3dBt/KrPCu/h6G/DfXfCv1/M35/U98nYJ7EhfRMYTzqUs9Uyh2h/wPoXYlc3Ue5vfKGPEwFK7Ievc33zaGnGXic8XmDfu2nfASsDBamf8eQn/2M80GwLPx5ELofAHeAfZgvH9HfrMzvPylPgb4V9Ks5/CpNu1Wo/ze+mwXeRL/bM/4F4Udl+rOT8TlFPQtp7y+wOpjC+rKb/pyEb3sop0Dfd9T7DPXOcx2l/R2pSSxFe9XoTzfofwA+9KL+V8EPqH8Gz78CZ4I9eZ6L9fUy5PtXxmMn7b1Ef66DP99QXgJdw5Gn72n3W+TgF/jWGDlsxriV5fm1YA3e+8d9CzwGfbWgrxdyk8o6fQvPYUNiMHz7lXIznrOMJG6k/YvBA/z+DuUvwXVgcfjv/H4E3Bvmdyr9awXO4fnbBZL4IPzsyrrxAOU/XH9pbz24FpwG/QxD4hfwS7AT/e1De0vBj6GjPN//zrjdDXaCIbORg/PM6yqM4znK/fm+LXzPj3w+Qzkz9PeGnsKBvnb80AN6bmPc5jDuDaCjBXS0BG8C36H9ZdCzFNzO8+Lwvz/9+gV8ESxI+w/Cp5ehvzPlStR/IoxbRcqOXw3obsj49c8J/Xw/lvEcA1bl/dO0v496a1Nvb8ruX8qvcvspqPzmhV8dkIty7o/0Q73qYsrqW+pZb/K8E/Soh6h/NOC7j/kujfLl8GsK+kx5+r2FdeJN6isJvSXA58GV1FMavpUFy4Azaf8P3n8LhO2J7sy/zoznbfR/E+UHmBjrWE/XgxvA+6j/Neh4nP78D9wMH1bBp8/p/1TQcRuNvD9Mv4fwfl/GpxnjWggc5viy/o9W/tW7eT4L+maznqfQ8TXsP5vhb2P6fR68hnlzgud5+T0VnAF/hqUm8U7aO0T7tcDt8O83+lsZPfwn3r+V994C1VPVS5fT/zTKC8HqfF+G/m2BrvJJSFxFe3WgvyH6YR76/QTjcpj6l8CfuakXPh/B94sY3xaM6yWU8/L8Y8atB/tTH9aRNOp/F7pagOoPDRmP49T3CNiadrbAv6cp9+R5GbA99Q/zPMG68Bg4hufz6c886iuM/unC0CrI7bXUX4L54b7hPnIo7B/5GJcz8P1fsC5yvZH5+DP4GvttTc93lI+yDszju4uofzx0ZVWPAT9H/rMwvtnp13eM50G+v5/3X4SucZQvRd5+o/5qjjf8ysP390FfPbAu2D7sT7yevk/dSzvqzZ6D4/m3IPKTChYAPX/tpZ6tYEP6UYl5+i7zsTWYmfEZznjXpX9jkc9xYE/7i0LvOTyev2Fn4hLq38H8WwT9r0DPy44/8niMdnMhj4dZ3yvBv330ryn0dOH7zmAe+nsz7fzB7+epfy717aVcGLnpTv3uz56rOmRwvvqM9ydDxzzm71ief42cVFW/pJ0C6k+0Mw6Uf2cpT4f+HvCtGOX9jA9in4BNiV5gUd6bT3uLGO8c8PUa2q8Jn+bz+yHKi5kfK6C7AXgJfOwPfSto71vwWXAD9C2AL2/Av97gi3y/nffrBvpH8/1B3j8EHnY8kC/1/qf47htwFeuP83Up/XM+38b3k+FTbrARfG4BfU3Rm4YyjsPAYjzfCz/+B1Zhn9pMPT9Bn/+oLtGH9t7neS8wB3wuQf+X8t556p9DuTLjWZL+NKd/HSkXZfxSkdcC6vd8t47xL8b7PfhePW18ahJX0l598F769Sn8vY3+lAMHgpvox0Lons48mwa2pr6XqO9f8CS/76T+psynEsjRMOr7BDqzMx45wXW8/4nnRyaG68YVlF0/CoZ183Hadf3cxe9ZPFfTzgieb0bfupf1pA6oPlsOvteh/drgHL6/KZwvWoXzBdUnYFuiD5gV/uZjfp/hxeNga+R7InK1BywLFkFOm0DfKrAx2Ij2xzAeJyHga/j/D+V34U9T2n0EHEX/S/H96+BWvv+QcZoCPc3BzeB5vm/Be+WpdwnyezvP5/L8e+jIA3/nMn/uzcD+pl1up/IPPso476P+q6kvLwvtNZQfgj8joWu0/Qab8tzzahr1ng/n18+TkOgO3gFO5rnnxVugu384P2r/uJLfd1MeRP8HMZ6d4VsX8Dvq7wm9n8CPUerb8GMg4zwAHAReq37BvNXOF+17L1NuCmqP6gD96qvqr/NB9ddc1P85vz/B+xOQ75fQt47wfgr7Zw3qH017zcAjYAvXP9aVR8HtyNEM6l8IXwvD/5zgftaJj6DvJvrbElzE87+pVzui5zXth5h30+3W2rG1X9ejrJ54FvyB/ubkve8Yt+/Bb5Gz2bx/AmwPFklN4nLevx06/2Vd0G40kP5W472xlJ+A/vXMi1uZFxsoZ4e/FahnAnzqqv0W+vcif//BlxZ8/4v7L+vpc/RnOah+Oon+qGd6PFG/rMU+OFh7Py98BP3aV8bSvnzQvpLKfKmEHEwC6zEPXkEe14PZkNMV6jeUP+T5Hv1BDPhS9XXXcfp3iO+1B2of7Er7bdQXof9Hxme19iv6wfRIcHxNLAe/0D9CuTS4DNwI3XfA/y+od4b2Ue14PN9KP6L95S79DuBsvne/LMu8yM069Qfjfwb5uZ79ujr9Hgqup3/Pw7c1fH+a339Vv6Y91/1ngv9Ff0tLftcfo/8lF+PfmfrbQ99uz3e8p59iP/3UX7GW+n+kH9optFu04vk06D7l+ZRyAfiThlyUAbsgv4UoZ9ZuD77Nc+0Zy+mX9g7tG/oPN0J/8+A/7Mb8HAE9L1L+hed/wsd60L0ebED7DzNer4DLWRdb8bwa7e4Eq8OXVe5P9H+RdjawOvJzP+N/Cfgl69dK7Rdh3nm+SaV97XdbwZHgfOhcyHd9+K4WOCQ1iV8nIV2v95/6vXpxNulnPFLBLTx/DFwCXsq6pX1hIe22CfaGV2inH+WbGJ/X6P8g6qsEVgSvp331sW2g+pr62Y/QXQq8EvlYrv4OXRug67T+Qvi3iu+u4ruClPfx3gnaPen5HDm4mfFMCX6d+mBuxm+19jXtoshpbe09zn/wPsdRvwH1/U1/9GPqvzzguUS9F5yFnNWBvulgOX4fx3zXf63f+gRy2w/69fu67rge1XEdB+tLP+vRIPrxEfWNAHMzDn/Rscme+7S7go+yjukPUa9Qz1C/OEu9TVm38rPPn0O+TtOefJXP8lf7iHaRLvBF+8hU+j8KPu/RzgH9R6n/DPX3pLyG8ZlIP5bRXkHKk4J9uhF4NfRdDR/dz9eC7vPu+x2SkDgM9gXfh74CrLdFwIJgJ8b3edpbS7+1G2ajn0/Q/w/AAfzu/F2M/ExCrtLgp/EJI6DnY7ANuM34G/qtGUL51m+vXvsyL0T9Njt8rcACVwkcTvsNU5O4l/fPoV8toH3XL+2iHzKO2kdX094I1wf49Tb19uN9fk605r3fwTvdj+HrHnAU9OVAfisif4uYD5X1rzPOqYxbVfr3DvJjPMSt4C3gVOj6gPI80HV8IAqX/i39jD/on4Ufk+H7KXCL51/mn3bdatpxgn23H/QO1P9HuTr9U55s1/1C+SqMfP3Dd/NhtHLpuWk0eBT0/HSFBgrGuZfxG7T/IXI7BBwKXqtjkXIK2F57E+PyI+P8H/gh+A7y5rr/G+t+XP/136WCn4G3wI8OvPcg9TwE5qQ/tZCfJ5CrEmBuxmck7x0H61LfYOlD7rRbTII+7RefMd7PBz1E/WMZ9bmuu867vm+B3zlYF3KCVaHPOAL1lMdBzw/H4cMu+n0x49CFcThHe6uhWzuw9t929GsU/SwJPesY3+zUb1yXcV7Gd02En5nkD+Uv+P40609V5P4o/X6d54ND/JzxdMbP3QE/VkBfVcptaf9u1o/X6Hd35lE39zf44Pne877n+yPM83torxJ6v/bHl6C/NfU3oH9baT8f9alnRv1yTTjX1WccRnmewn9l3FoV6nV/+CoJiVKg/vBhtKN9U7vmHvUJ6F8L3/Rb68fWf60eGPXEo/yemf7dQP/foB/XU3Z+6ld3Xm4z3iiM783IXw7jF4wf5Ln65pXU0864Kb6b6z7H/MiBwaot454Jun7je+172vU+Cfa9x+mP56Dtxl/An1OM13PIWRdwGPTvNB4JPEG797Iet2A/rYC86W8zfqUZ/SlG/3Zpn6D94pSz8zwNHGRcLvXXZADclzxP9OH5aPB36HD90t6iHesFcDz1Ox9pNlGA8kTG7Rhydwd8Og3/noL+6fB7BjgNfAv+j+a7MWB17ed87/n2SdDzrefdlfr/4b/2garQt8zzZrA/aJdQL1BPOA2qH/RlvHsgX64vX0FfW57vA8dD/1XqV/DRuNvMIc5hiH463v+J9eBby8jRv/BnI+XHtX8mLuyH9GvHct/wH82nn29zG+fIupqd+p+nfuO9L0VujQc3/ls+2a502P4s6i/HOloU+XjT8UXwjDs0DtH4w6UIqPvGUOhx/9gKvR3Ba8DT0Lcbvsf90X3zUceZ+b/VfQ46LqLfkJ04CM51niNHtZDrrZRLQt8h5QJMg77e0GfcyN3IbU3XR+jVnt0Q/mnv1r69lnYP8vunvN9S+UHeo51D/WEaHfscHKYfhu+NL+gT4gy035ak3Y/0C4XzgfHix10fwdJ89xLPtStrZ9a+rH/nD8ZFP4/+ne/g1/Xa7ylXoJ1FjPcCcCFYG/pOJSHRCRwHdkMv6MN+ORS+tNLuAH8mUN8r/D6RsvNZv4l+lNWg/hP1Qe0Arwf9UHv+GdB42Mrw5zD9POS+DJ2bQnyV682X8Nf4qm8QiHrQ/y/yew30GTfyaQbxI8bd5YdPMf6uMXQ1AY8wjsZpx337Gcru61WMBzO+JPg39ENHP/VAfi+ehPR18jhoHLzx2T1DnLbx2cXhRxV+Xw22YBxyUt5FvZ7nN6QmcR/yeB/0vUV5DeN3iv3afJuTrHdZ4B/sTqDGJV4Dz9Juafo5jnF9ClQ/bs6Hx2j/b/VR9Tr9XyF+YYb+eeOVef4v7al/1OX3OeA58DHk+ATyeCt0FAfPBPuOdh3jEI0/fJxzRVfWz+HIjfFr2lULBfvqXfqv6V8h5KYe7RSkXAoGl2L/c10yvyUFeouwj51AvvQ/GcDTElyJvLh/Ob+/hb53ad9z4e3Q1wR+XgGWpP0n6c8B3m+rfR756UU/eoI9PIfT/jH4XxU6HgQb8vwo/KxOvf21H5jnpH5Od40TNw+rMetHI3AX87e0+jPvmXejv0T/iHYz7RbaMbRfbIGfZeHvVPg/nvqP0J+VPC8NvzbyXHvZEPj8a7AP/4286RfVT6p/NBPybHxUN3Auz6dQ3zzo+J3vjU9bRrvake4BjY/Oaz5bBn6kwawzu+HLWPpZmPXiVegxbks6pa8M9aWBZUHte57/+kHXMspP6z+ivcrMg0pgHep3/TUuaJFxlvz+APQMANeDP1G/frVVwb/m/tRFPyG4H/mu6v5CO54HzEPU/9WT+l41j0V9V/0VefneuHRwEfU7bvo/9YcaH/Q6/e2tH17/hHkuxiWAO0Djj4vRnxLgQ/Dhfdo37pJjQbqf3DhM7cXaMfPy/qf6l+UHdM31nEv7+v08Bz+hH4lxNp7ROMe70YuMd1wezlV3Bf9uBdaXEeAYMI3vx7A+fcY635hyGv3PynrSCbo6gtdA97XIXV4wH/gy32sv0+6vPa2c50/Gsw58Mo7e+Hn3k0Swa7i/rDLvDbwL+i6h/uHsK/Iz2hc8N3uOnsd88/zsuGkvL+a5gPrrU19dcDr8m8j37nfuf+6HF5nfEeIj9KPoPzF+2bjlGB/UlvdmQffTxifRfmHabc46lp9+GL+m3CmH2mHkT4xLch4Yt9SK+p4C/2c+n3oj7zcCr6Z/r7N/tuH9tsZnmOdFWX9Ye1B/mf6xLNSnXjbfdlKT2I3vuoIbGe8ctGPcTQ3qjfE3mfjuJf1AlAeon1M2L8f4T/Nz+kHfBPAG6tE+uZP2F9OfheDXtJ8bud1C/ZvBw9o9qe9ZsL36G/2J+aX6s8wzHc7vnqc9b9fm/DOQ/sS4eu1nvyLvU5j36gfjkB/9o+ot7cD91N8EejLKgxnNvNoNX2azHjWlfv16+vkmU9Z+u9+4CbAaOAM6nT/Om2fC/DF+yLghz/Oe31+Ersaey8FG0KG9x/O/dh/5/B/jcBYsq/4JfVmQV9epgdRbxfhI+t2G71uD+RnPbxiv1/jd/bI5dC/TLkC7xm95vuvD82h3vo169Vvox/iYsv6LKeynWZHz8XyvfU2/zGDqfwf8iPpdf1uH9df12LyEI6D5CuYplNWeA3rO8nw1k99rgNXBr6GvCfwojj6xmf7UN/7QfZHvPgd/ZnyMa1gPGu9gnMMG89TD/L4CPrqeef5kuiWWUM/7CFhNHpxgfhyg/SLMn3n0ozP0D3V/o73BPPfckVCPoj/3gOe0/yJ35lOYX5EVuTa/wniN48Z1uy4af6Wf1Lj8kF9n/MW35gWC6+h3EeRYO9gX8FX710N0ZzL4DjjB/Bfa/RU+mIcwk32gEnz4Cjn90nOB8cV8b/yp9ylU5vfxDNw4cAL4Jf03Dj/G57dULwT1P2m/0v9k3od5IJ6XzP9QfzS/SP1RfVL9pV7QY9RfdE8bN78HNH6+Ae8vQK7W0g/tJ+rzWRlX9X31+y48N76nJ/33fgrPneUyOH+aD1kCLKkfWLuD8cfgF9pRoMN4zOmg+nFdxs/8nKqg5zvzc+bynXEBximY/7wKXIgc/0c/Hod+/W7SGf1vvVG4vJ/lSuz15of9QPurwCuN/6O9HwNfon+xDeWM7kmYSn+LgkVA4wKNz/Z+B+O0jc9+Ablw3XEdcv1xX+oFdkbghpu/Bw7lufksI/l9E+vAs+r10PU09X+NnFYCb6eeu5i/+Y3zBW8EX+H7SxmHOrR3ivr1J1qv7ZzyHBLWH9cdz5OuP9qvKtCudiztV4WMF6LfReFPJZ6X5PdpvHcYHIJ8LoZ+7VreX9KY9bUjZOwHN4Az8Gea7/UCfDOP0zgs7e3u83F/994I7aTx/gj3QffHe8Fn6Ods2u8FToP/y6HvqHoO9S4BL5c++mP+uvZo72Wxv/ZfP4T9v5r1oC/9GwZmpn/634xr0o9p3Lr29duRi+gfVw/Ur6WeqP6dzfORcZxgf+TPex+8B2IU6P0PMR5gAXRtTk3il7y3lvmzBhxE//7k/XHwdbznRda1GBfpPu2+PQ1+qdcNcp1y/6KeKfz+mfZx5GUG9G+m7H473Pgtyt7jEe/v+JZ+Z+L30vpF4Z95HeZ59ALN7zAu3Tj17eH+nFeZb9tCfLVx19rl6wa51j7/PfTp1zfO17iMXdr/nX+UG9J/7z9wPTYf1fxT85aNe435y9ofS4f45In08yz1HqSeDpSfYx/6Mew/X1DvHuN+zIun3zWCfr3O+E4wxvcbP+o5X314MPqL8U3zkTfjnPRPm+9p/qdxceZ/bmQcFoHNwAp831e/EfgXfJgT4n891xoH7Pk2L3Tt4Xv94Ruhq4j2kwz8X+pz2pmjfdm4dOPULzK+Qnsi/PnHuBawNnzeBB8yMz41WZ9GU39F9Riee3/Gec+prO9FMtC/3TeeD/uG8bvaqWN+pHmTf0NvLXAamJVxVq+L/jP9avrN1A/1p0U/mnE9vn8Pv09C3n8H1UeMxx3P+2/Ld+oxvq0979fw3EA9lyK/0W+hP7kX7d9P2XsInLcrGI+M+JIFveA96PF86nnV8+liyu6f3WjXeeS6qNvPfPl2nntoF0hUBrU76W/Rjn8H3+l/0b+sX31F0A/GUNbO5v0TdyMv0a9Ynna1r2qP+Q7UTqPdZh/03gWOApcyftq9UKfS57t2sRTac/y1r2p3rczv0b6r3dd8GeNWjWM1fnU28uI6HNfffLxfFrpgQ7p9xHsNjePyfi79M2fph3LWCFS+lAPXV/Uq19cByh31z1ceYdxz1Of9Eo+wTvxDu9rltNPNYb/QPqfdWzu493a473/AONbULhD0nyhfypXxG57XvLfKe6z0MymPMf7Bem+h7DngVsrq/+Whby90VQDvo3+ZmafGZxmvZXyW/mDtNH/ynnaaAcZRgO+F+J8WtHcIPKy8pNJv+iv/o31Uf4Xzyzwa/fdAup1A+4D3cBpf/iRonLnx5TfSnvGN1vdzWM/cB2qD5gd1pt/aZ7TXaJ9ZQn2atehO+j1O/WlwAPg783Kt8ffQPcR12TgCz5uUR/Dce7Zm6FdET1yNvF0f/Hmul+7j7t/59WNRj3FzxtEZX94Cw9NIzivHsBd0pL2l1DsLrAn2Nj7NODDXf9B4fPdN75+K+2eMS9YPa9yy5yrPme+BY6D3D+1V4EaR9W9XsAt6j2BPvp8dzoVnw/nQeDvvCYz3AxqXqt805sd6HvN8pj/T85n3QaSF9V//mnmL5jG6Tpu/eD/PT4BT1fewl8d1o7xoHnxo1/sqbN/zWZNwTjN/zfPWZNDzmHn46rueo+L5yfOs+Scxfsx4N+PfXgjxb/bvYAbro/qX+la8L0r7p3qy8SEVoU99sID7Mu+pHw7j/QpgvMcsD+8NoDwQfA/+mfde3ryUkP++JsSHaQcxPky9Tz+G8SzGr+zwXkZwAPzvbvwH9Gqf3QpOp37l5Ri4N8jPhAzO9ebrun64bpwHyzB+2k+0j44EmzA/lOOGQc4XIy/mE5tfXDbkF5v/nIXxMw/a/GftmMbPeJ41fuZn6PF+pw4838T72kvUH7SnqD8YP+v9y90pG5+m3d97AqL9fxT9eRT+PgZuY3yN42pP/71v2/u1n6Sez2m/r/Ew+uep76h+aerVL5OF94070Z9m/IJxGa5rq0DjMzxH3BP0K/Uu9ea1YNSfDxoXDB13U16HfHpvQvRv6Pd4O5y/ZzPvGulX4P2od6iPnoTeO0DjR40rnUA9DxufRzvmrz3Mc/2gb4JLjYuBAO3X3rP9Gd9pv3qIfmvH0n7l/HDddz/Yxjz8K4yv/rWB0JsTfhzg+X79ydp1gt11Jahd9mb3C+3SoHlV3uf1CPV435f3e8nHyOeu1H8e/uiXflo+wp9ntfPz+2jXIeSrkX4lfjefqyt07KBsHtDPzn/zmc1D4rn387xqHgzva3fSHuV+5b1Lv6NIxPuX2uinysC/7L3Bi0HvQ/b+Y+OYPSd6HvR8qN6rHznqv6636leux66/ngfMCzBPwPOBcdfaoaL9STuSeql6qvqpfmPPJ85XFe6Yn5YKapd235Be6X8M+dJ+aR5/zN/3PN8IjPEX8nVtBvzNRL/z8/tD4NPMb88t3oNejfm2IfBzOKg9TH5rbzQv1wOOdknj6TqA2Wj3BN8f5HfzC07CN+/LMn5hb4hj0L6q3NTJQH6MZ9H+6z/jVNyvMsrTs3/2K96zZ/5XDVB92/wv7YvaFfUDaF+MdmvlQLlQLzfOxjwh/SrGDxqf7gHQ+EHvxfWeXO8j9H5c43LOgdv5fSn89/5W7yf3Hlfvb/X+ZuPD9KP49zG2QRbbQLqdzfsC9T+YT2G8r/6HEsGfH++/LEr/vL+unOcL1jPz2/VfG/dtfnsKz71fOTP9zMuE1p4b/YTad+uZfwHu95xCR72vwvsrKofzXWoS0u0D2gvMf/R85vgrD+njrx05xKEbf24+wHugeQKFvBfX/GtQ+6j2r06UZ/L9LLA2gug+eAS6q4KleO76U9RzXFh/lrPetKVe47zqh3Xdc1E8L82jbDyVeQ/mN5kXZn6K+Rjqucq17upfQf3g+q2MY4j+K+348k0+mk9YKqw/8X6cIfzuOeDPoP97TvT8WBH0frEHoEO7pvlQVZA/7+3Z7vw3LkJ7If3V/mseRqew73sPabx/tFKgK95/lkr5FlB78s3MW+Ni1CtjfIx/VyXe3+O9PjHeR/uT9+/GeD/jAD2/eq+w9qEz0O09Daco/8zzn8D1jLN+T/36+kP1g+bFvqfeug8snoG8xPmnXctzqn447Vv6kbVzRPuG5ynPV8OMk+B747AmZeD/Ma7ZOOchoPHNrgfe22Yeg/e3Gdf8LNjd+GHznow747n3yCXC/jYp2IG1j5iXtwCM+Xme9z3/6+/3/G9e0DzQ+07cJ/R/3QoWA733wXOHdvRoh3+Q97VTGT9gfJ/5OJ4bzNMxb0f74J4M9g/jX4x70X9g/Ityo13jOVD7hnql5zLPaZ7P9KvWd16rZ0H/UehsCt3aAa5jfuu304/nOdtz92S+N05uJeNrfM8C6NX+oz1I+4/rifbBMtSvf8p9Sfv/nWF/cn3Q/2G8sOuF9xmrr/wEer/xGegxP+pS9wv473nU+ze1l3nfiH+3YZr7Ks/9O1HGkZg/bj65+ePrw7oT44tyUZ/z6yuwHeuS96Gb/zKdcf8g7L/Ov5ZhfXD/dd/NFPZf90f93vpjvR/YeC7X/R6g8hD3vWg/1W+s/qyfTz+y+qB2ZPVE9cbpfP8+330A3sP3OxO0D2pH/Qd58/5t9WfPB8ZffMP7NziPKHs/nfaEmP+r3cF8Rdc31yvzGlOQ45lhfEvw3HXoeVC/nv5B7028HYz3J3r/hfdemMfi/Rfmw5sfY568efPmJ7ovxL/n0jHY3bRX6h/0vOo6WtR8D/THmuG76B81ftR7b380Xg16chk/kEH7+g/vDOuI68cG9QHQ+ze8l8NxHRnGV7uI9ao3Hwn1T6Re9Wb1aPVn18/uYf4YNxnjTmL+pP5p/UPRP6p/Vv+Aebzm9W7kd/mwhvW0r/E/5ufxXHuCdhv1QvXESTxXP/S5+6/xJ963VCTwxfwj70lS31sa1nf9GvobvV9Hf6T+x93GaWSgr5mX8Sc4Q7sd5xr/3ske7WXh/Ky8uk/G/dG/Z6TfVTuff9/I+av/w3ns/DUuRL+YfjL9Y/p7jFt0fxkQ7J7xfOe5z3b1wyxA/vW/5GE8ENf0/A7vS/Rcbpy5epj3lOpX8e9jRf+Kekv0v2h3jn5/55vz+hno+BT0/Offr3L/8VwTz1/qc65LrlPqd+qLxl0Zh2X81dvw2/O5+1At9g/1Nv3K2kH1L9uu52zXS9fHmE80AdQ/8k2we2gH0f7hfXcPa/fS3wP/5XuDME6Oj35j9bIYP7TMuETqNz+4iPff8J32PfUd46qVZ+VcuTb+SToifbVyXIjqtyuCfuv6He3Xrt//hO/qh++dh3F+Ok/025kGrD9PP577inb7+HestBtoR9CPqP1A+9r2YGfTvmY8ueujfz9uNfKjvV8/ivYA/QLGx3lPLsV0u9RToP4b7b3el5YS9Hb3Add/5TjKt/uf8WEeG9NA/YDmG8X8Cs+5ztM4f23X9cDrOLQTaTfy3kzjrOJ9y/rbHnAeIQ/65eLfN9SO7N85VK6V8xjf59/VMz82/n29+Pcrvd/MOLkY1x3tp4OhV/4ZJ2R+inm25t2aL+09GK4/5kGb56jf1vtLtFOaJ+l54gD0xPhe434/pB3vXT4F5mJC7UhC4nbwNrAk73mfzH2g9hzj19WXtDPEv08T9784v4270z4S4++yu69CV/QPGf/jucR4rVH0/7R2K/AN6h1hnhG/Ow/Mw/Mc53loWwbjrz4S4w/1j3tvvnnZ/h0V/66K9wvBtsRuvjeOQ33Cc5D6hvqF9197P5/3YKfffx3WXddh1/Xo1zTPXL+n+qHn/fj3T12H4jrl/mW+kPn3/j2py3JcSI/7ToNAX4z7006SHv9NO+6b7qfGP9UL8nsgzA/9ssaVRf9sjA9VDzO/z/O/+rr2N/2r5mE0JV7XfLrm+S587u++59+vHEeAifF05l2bh+1zf/e9ddCRkprE2vTXexPq5Lrwub/7nveRf6KfX32OcZ983YXP/d33ioGb8l9Il/QaN+jz2E/p3wV9KfA7zYly2YXP/d33NrJ/+3d+/Xta/n0t/46Az+Pf3SpH/xZ7zzQXv1SEzq/zXPjc333vTuIw5/F7Vf9uHXzqye//B1ZsrVB4nHWdZ5RVRdaGCR3oREe43bcDFzEnUFEHZWRABRRFVMCImBWVpOIYRseEERUVcxYwoWAWDIgZUcxZDGBWFCOIDPqt9d3nYa1dq+0/e+33fatu1a5w6tSpc3pOU5v//+vaNW+3q8rbh7Hdcnn7TGHe9ijI251KIy+urpR8f6jL2xfIfwn+wtroy6v/vDlvNyzO247w6+NvUBx9efVf8vvLyecl8n0L/ILayIurO6I+b1+jnmuh27Q6b18vjb68+mUNeVu9Tt5+Tf6vZfK2f7fIi6t7l/RTyHcSv1PVMW83z0ZeXN21tMfDjXm7iN8pJU5f1kdfXv1kyjNs7bzdP5e324B3z0ZeXN3O1GPgunnbkd/rSP7X1Sd8Y9TdTn5HU66RJXnbjfpuT/1q+f1pxP2worydmvjy6rtlI39IUeSnJnp59aY/mnaaTT06U48vM9GXV78Ufjj5TC7L20+65O2YisiLqxsGvjn9aGFN3n6Dv2tB5L9JdE9Tru1pp9W5vN2O+m7dEH159R+S/jT4mZT3+/K8nVoceXF1mZa8fYR6LajM2wL0I5siL65ugP2Beu1CPOYT18KmyIurG0Q/Wod2mYY/g9+7NhP9aYn+mmzkn2qKvOn15dWbfgPq9SfxvpD+tTAXeXF1fxL/AubpEvIfSfu2q4q+vPq5xL9srbz9DDsIXfts9OXVDwO/iPmjJ+N0RN606Z2Jvrz6x8l/PH4J9RxHuh2boi+v/j7miX/jH0E9D6W9u7VEXlzdU9jystZ508un+Zt+Mu1xOuU7A/vf+ujLq78il7e/Ur4LqOfz9LNXspEXV5eBv57ynAN+BnHbK+HF1VXCv0k9p3LdaAc+tSXya3B0bYnLytLWedPLp/mbvgbdEYyLsxkvn9dHX159C/XoQFwfZ37pTz3/u1bkxdXNxT5R3jpvevk0f9MfRrs0UL4yyjspE3lxdaup36S/4U0/6W/yN/2t+D84T5GuvDny4urGEpfv6F+XE9f3yfemxsiLqzsrl7cdaNcJ/N4xzFP3FUVeXN1U8l9Z3jpvevk0f9O7fuxEe7lu7J2sI+XV/059TiQeP3M9uQ3dOYWRF1eXoR88wLx2Gfn1Rj8+4cXVHUUcG8l3HnFuBu9cH3lxddsxj+xNvoeD12CdN/Xl1b9M+mLK15f1QiaXtyMrIy+ubhXx3x97Hv1pd+L2SEv05dXvw7x0GPkWU56rKPf6zZEXV9eF/N8i3yrsx8Tt/PrIi6urId9p7fL2Fn6vkThVtY++vPqXmceuphyfcj14lfluTHXkxdUdR//wOv8e+h3hjyiOvLi6Z1w/0J6XE8+j7Q+N0ZdXv4p4vkr95jCuHsHuWBV5cXUPkf9nrOdm0k+/xd+iJvry6kd7P+V6G/1E5qvnqiIvru5H6n8hcd2J8jxG/baqjr68+h74cynXFOJxLPle1xR5cXXV5PsXdnN+bzPsIVWRF1d3Pfk/mcvbwYy3IdjdKiMvrm4O6T+iPn3RjSFOi0qjL69+BeW6D/w11wGMk3VzkRdX9zvx+E+X1nnTy6f5m/5O+sGKznnbA322c+TF1T3ifZfXMfI/m3a9JeHF1R1KObqTfy/65Wzae0Bj5MXVfYcdWNM6b3r5NH/Tf57L21e9j6B8uzZEXlzdsbT/DVzPLuX+/0rmrcmJL6/+dOwM5oU3Ke/nzDved8mLqyuhPKfSv/bjOvE85b0rE3lxdVdSP+/nvb/3/sL7e3lxdd6frCQOdZ3ythr7QUPkxdW9wv7PVsxnYynXOPwZhdGXV/+S9x2U70HicQf1rG6IvvwafWPkazORN72+/Jr8SO86YwnlSdcj+vLqF8G3p50/cj+B3/moJfJrcHRrkc9S8t2a8gwA3zATeXF1baif8+POzJeHYp9J5ldxdc6vab+6lPLZ//TT/rnU/Sn69yDi4fq+bWPkxdU1EJ90X2xbePe/5MXVtSd9G+KzCfP6b5T30ZrIi6vbgvQLGBeHMM914HdfzERfXv0l5DuU+v2A/mbG6xuNkRdX5/3/ZoyH84jvHejvLYy+vHrvK2/K5e1C7gc/Ruf6TF5c3cvYydRrK+pzEOWb0BB5cXVVtMdPza3zppdP8zf9btRzIv10V/zBhdGXV/8+8buRuB5Gft8m+33y4ur2ox2vpFyduJ4UMk8fVRN5cXWryL8T7bA11nG7IhnH8upvpH/sSf7dmE+nUL/LCiMvru4cfr/Z9JS3K/bfVZEXV9ee8nXukLcLicdJ5JvpEH159bviD6Q+Q/mdz1znZ6Mvr34Y7fCr+3PE6S/w1V0jL67uY+J3JeNjFNfjcq5PL9RGXlzdbuB3k//RlHcj4nJuQ+TF1d3hvk4ub5sZl03YlqLIi6sbQFxKGZfj8begnie3RF5c3eWUqz3tMAdde8p9eS76a3j0zzmewIto1z1Y3w4pjby4usnErx/l/IDf+xA7JBN9efUrqM9XtHMl+X0Gfm02+vLq7yG/n/DPxp/pvnVD5MXVLaX/zCLfKu4r3oP3/lJeXN3h2Lmsp/vAP0c/+0+n6Mur34T6fUE8NiHO39GuuzRGX169+1GX0M/7wzcl40ZeXF0D/chxlfLpuEvzN/00r5vMKwdTrxs6Rl5c3Q7UYzVxLoQ/3vuQTOTF1Q2kXCPpzzU+z8LWFUReXN0k73dzeTuKep3E7+Uy0ZdXP5j+tQ3801xnDuX3TshEX159P9J7H7O199H4V1REf+vkvsf7qn28fjGe57uf3Bh5cXVfYr2+/Mb1bQJ+ev2ZkOhOcB+S8fE+9TmYev/SGHlxdaPdp8vl7ZHkvwfx+V9D9OXV/4P2X0JcDsTv7POU5siLq9uMfrQYfDjz2ubE9+KKyIur241yuQ98ovsh7jvmIi+uzn3kUxlX7zBefO72dsfIi6vzudxbHVvnTS+f5m/6B3wOyXqwzn3eisiLq7uO+K1HfNyPmkd9OzdEXlzdavrDhvSDk6nn78Slayb68urXJ//r6Ke7MK/OzOXtLZ0iL67uevDbwRfQri9hv+8SeXF1E0jfk3i4H7sFfp+y6MurX0I9riYuF7hvQT/p0xR5cXX3kN+R+HtR34XYWZ0jL67u38Tvedr1DvzbaVfXr/Li6i6kHVfanqyrniMu39VGXlxdb9ZBP7FOvZl4787vVHSIvrz6fuTThTj8g376Atb1m7y4un/SL91f9nlgO8rdUhp5cXUPk75Laeu86eXT/E3/FvHZmH3x9Wnn2c2RF1d3Rdu83bBd67zp5dP8TX+X8y7rmadop68LIi+ubiXx/c35yfVb3rR5OuHF1U3w+kv/OprrYxnxfqIl+vLqr6V+Pl/vQr923+PPwsiLq1tAOwyua503vXyav+lHMT4PhV+MnZb48upn1Ef+086Rn5bo5dWb/mTa9XbKtQz/xnbRl1fv85h68jk2Oafk/oq8uLqXieu2f8Obftu/yd/072GzrCs2Y34cXhh5cXWPMJ7u9bkg/WI3fm/7TPTl1V8C7z5BX/q154a2q468uLo+1K+a/tyD8r5GP60pi7y4ur/cv4D/yPMbtMuTDdGXV9+P8t8Hvpxy/c7+7qqSyIurezU5l7KKeM4iXsMSXlzdAT4PYny7vp7IfPdXh8iL1ybr7+W057n83q/4NZWR/zXRtSXfWbRPL+o3A9urJvJrcOz3roNyebsz5fP8ZXo+U1yd18MTie9Y8DngfYoiL67ububVo6tb500vn+Zvevf3e1LfD4nbDsn+v7i6/cmngPq5vr0fflhR5MXVuf6dxjjYnvZ4izidXxZ9efV30b93on+9S3/5J7+zU1nkxdU9SvnTcybnUe70HIr4E8l5iNMZl5/RH+/zvGjXyIurmwVfTL/s6vkuyllUHH159eWk35j++RXjuS2/c1rX6MurX0R+53MdGp8jX8/f1kVfXv1i6jGD39nU52Ge+6qPvLi6TeDdH5xEO+9Neec3Rl5c3QXYleS/I+PkXPRzWqIvr3405TgKf1f6xSf0q2W5yIurG4ztyLjamfJdi19WGn159TvhH0s7LMNuQLk/zERfXv1bxMf78RbK0wX7Y1HkxdVtRP//ietBBeN9GvPb2aWRF1d3o+1B//6EOHleaveGyIuv0VE/17mes9ua35lfFn35lmQ9PAL+cM/J0i8OKIm+/IjkOefm2DuZl+ro35+WRV5c3UbgO5Hv1ayLrm6Dvn3Ct4m6jel/zbm83ZTfm009y0sjL65uCr//e03rvOnl0/xN35f+cSXzu+dbny2IvLi61+l/FxS1zptePs3f9PMpz2LuyybZj7ORF1d3sc8RPB/EfHK847Qp8uLqbqRepxOHh+jnT9NeX5VHX179EvLzXFUt83J34vx+ceTF1d1L/Q9nfI9iXd6ddXr7TOTF1U12/9T7H/I9Bjs44cXVjcZeS5wOIC7n8rt7N0ReXF0F7ZOeP96PuHq+WD89f/w5+bo/U8E8sQ/5D85GX17908Rlstcb9qd6EOcR2ciLq/uU+g+lP41zXwi8V3n05dX7fst71CvdX3T/UT7dp9wcO5j2nE573U5/6dM5+vLqR5D/k7TvEcxLOzDuBzdGXlxdNXaI44f+7f50j0z05dW7f/0C8elHPefjz8OuwLrvVEj6f1RGX169+1czaPcdqf+v1OeybOTF1W1K+Y6kXDfSnj1ov+rmyIurK2DerKLebxOvIuJ6cC7y4ur2S9atFcT/Lt9H6Rp5cXXnef1J3h+ZR1wGF0RfXv3YhshPboq86fXl1Zu+HX45cZ7ovmE2+vLql7ge9fkZcfma8Xdgx8iLq/sX/eE+2vVV+sv72PcqIy+uzn3LW4jvmbTnVVyPDqiJvLi6dp4PAT+eeWcQ4/GfZdGXVz+UOCxOrjMrcnm7TkP05dV/zzjw+vMN/dLr0j8rIi+uzvyKuP8bRH1O8vxmVfTl1W+Pv4T4nE55f2Xc+HxTXlzdCvz0+cRuxKdHNvLi6fOHYbm83YrxcTf9amY28uLqtsHu7Plv5s3jKNfSTpEXVzcUvx/xvZa4Hks/P7Jb5MXV9WB94r5ZI+vBdH8t3XdTt4/rKfI9hHifynhZr1vkxdV9TTzqG1rnTS+f5m/6b3N5+w3l60X5ujZGXlzdeKzvoazvupB0z9VEXlyd/dHzj/1Zt/tc7fKGyIuruwj/Qdr3aPrXg5S3IBt5cXXn0f+mks+W8L3dt6iIvrz6IV0iv1Z55E2vL6/e9FMoX7Pv91HfV6ojL66uBfwD10e0x3Ts8naRF1c3l/j4Pqzvya5Dub5pjH76nq3vz3pdvofrTT/aZ2F55MXVeX33nPSdXE+fxZ7TFHlxdRsRB9cDb4Kfzbi8skPkxdXNpvyLfT8E+6XvjyW8uLrh5Pse7bI+80oV5T6iNvLi6jw3u3Zd67zp5dP8Tf+5z89pnzrmq7KG6Mur/wK+O3j3XN4eQH95sj7y4uqepf4LuE6+Qjt9S7tfXR59efV7k9/Bnkemv4+infpXRV5c3Tee//E5eXJOfodM5MXVeW7+Beajm5kXp/I780uiL6/+XOI4knrsQb86Df7UysiLq/M9nVXkW4/ty3y/dyby4uo+gF/COmLNOtL3ByuiL6/ec+aedzvR/kdczqiNvLg6z8d5fmJn94/pF2eVRl5c3RTyexH7C/PCz9hFTZEXV/cEcRyD7Utc/oXtXRN9efWn0v8PoH/3ob77EbdjaiIvrm49+t8ZxOE+7ufO9Nxgp8ifmeiuIv2zbVrnTS+f5m/6g4lPKePMdXUL8e7i8x2udyuwRbWRF1f3AO12IdbnaSN4LtymS+TF1+iS8q2siOWsLG+9/CuT+4NVubx93X7ie641kRdfo+P3/6R+F+GPQT83E3lxdaup1xeeH2A+eIz+u01J5MXV7UP/7U55NiH/ffG3rI++vPoxlKOUenkd/ZE4TS+Pvrx6r3vzieOxxPU47DUVkRdX5/PX+4lPM+VZSLnHdIu8uLoiynMWfA/G2xB4x7e8uLrfKNc45r2RPpf0XFFR5MXVnUIcF5e1zptePs3f9Ot6n8g8sBb9pl9j9OXV1xgH74eIx8dcTyqLoi+vvmuObJm3NoP/iPgc1Bh9efXXJ3xdJvKm15dXb3qvv6cwn2/FdXnL5Posrm4ecZhNP6ljfHj/dmsu8uLqMlifB/7FvPQX1682HRK+OOoeIP5bMM/dz3hY5XOS6ujLq/e5yNnk732P90Pu78un91HeH6X3lXMYX5t1iH56f+n9572Mjybi0+z9VS7y4upe9v0V7Cdc97am3r6vKS+u7lvieDL9Yyf8EtLdXBl5cXXjKNer1a3zppdP8ze9+y9/tw8pL67uFd9Pg7+Yet5MfK9siry4uimUb1FN67zp5dP8Td/Bc5GU5w/itVdT5MXV7UR+7nPUkt9SxtmPlZEXr03G2Srq533/NZ7raYi8uLoRzAdl8Hvhv4H9tCXy4up+Jh+fD6S86eXT/E1/KnH60/eqc3nr9V1eXN1Y5vVfq1vnTS+f5m/6a9wXRL+K69ybTZEXV3cP9Zvo+xPE1/cNL2uMvLi6Q3zPOtM6b3r5NP9DkvWZz0V2Znyvk4u8uLrNqf8flG875qs/qHdNaeTF1fk+8trk7/sovid8cjb68urPdHxQn8VelzzPkYu+vPonKdcj5D+NcfkI9vjCyIuru578tuB3ljNPV1GvCysjL67uXurnc4B+9LM93Acriry4Ot8L/4l2OIrrwWjKPbYw+vLqve85jnz7gw/AzqqLvLi6gdgTiGM35pfpPvfoEnlxdQO4TxvgeCReH9O/BjZGXlzdeOwTXBdf4v7iS8r9YUvkxdXVcv+0Jf3qMdblj2LnlEReXN0+tN9z9K8XPL/OOL+ta+TF1e2fvF9wIPE4GOv7BfLi6kYaR+8/6C+jsTeWRl5cXY78f8zlbbo/ODfh0/3Bp7D1nvMz/r7/0Tby4urcf30U/CLKdRntOrEq8uLqvJ4+QPncTylnH/qZgsiLp/sux5C/z9nPJ95n1EdeXN22lL83+V9Cvtewvri+OPLi6hrp16Pon2cyPs7ATimIvLi69pTL86EneD9N/+zZJfLi6l73vWTyr2Odsq/7WiWRF1dX6LkC5sGLfO7o+fv66Murv4zrUl/mh5l+L9Dz410jL65uQ+LzHPneRTkfoV53N0RfXv16vh/J+P4Q3W+U+8jmyIur2yyXt7cxDz5DeafjX1ARfXn1Pid9hXJc5z4TcTkrG3lxdT433bOhdd708mn+ph9OPAqI5/lcn9sXRF5c3Uzm58H0A8/n7sL1cfPayIurG+R3Rrwugt/s+z8VkRdXN5b0/SjfjYyvC6n33JrIi6tbQb7j4SfSv87CPtMceXF1Z2ObqN8b2BeJq/f9+vLqjyX/Sylnf3DP2S6qjL78pcn524W06wJ+bxz+x82RH5foVlN/96fW9/s/rC+27Bp5cXVn489P7rvaw3v+Q//v7sv8ndXkl+P3ipsiL65uMPlu7L4I83tP4nJ/u8iLq9vT7yeR//Pkdzz248LIi6tbmkMH/w7joxv5vtc18uLqqsj/CNphpM8vsV2aIy+u7iBsG8rhvtoy0rn/pi+v/iX4DPNDCfPjj6yLbmqJvLi6+eR7cKfWedMfnODqTO+55n5c19fzuVxR5MXV7UI9fK/vL89HUU/f/5MXV/c96XclDj+C70a5/2iIvLi6dfxOn895qNf9tHN558iLq1vu+of6LWVe/QG7e0vkxdX1ZBy9bfy4rqzlewelkRdX53P3Isr3cC5vhxKvvesjL65uHvPvxrRre9bnnlt6Mxd5cXXP+H0I1oPe7y/Dr24XfXn1txLPV2iPR4nLbOw15ZEXVzeD+A+hfL2YV4Yxvn9OeHF1w6lHe+JzE7o/idOW2ejLq38hWT+6r358sr8uf3yy/z66Mua7l8+vPJeXjby4uvGMj/G04wTiXUxc57SLvLi6k4mr31F81/PZzGu5wujLq7+sOfLXFEXe9Pry6k1/kPu7ubx90u9sNkVfXn13+IsYH9vQTqW+99gUfXn1fi+8L+viX/wuGO0yoTL68upHeP6ZdhnquQp+Z3km+vLqCxifd3Kf9A78NMrdvzz68urPT/Q/l0be9Pry6k0/xP0mxscN9M9NGiMvrm4R7dnovnvetOmDPa1N5MXVZcGXUY53nIeJy4Lm6Murfz0b+V9ykV+Q5C+v3vSDWcdMpV/eir2lMPLi6mzH/fwuJO18iPNyWfTl1fch/c/4bemXfq9hUCby4upO8r1K6vWJ5wDRn1IWeXF1r9K+fata503/EeX+0ueL6CpbIi+u7ivs9cn3vH/3eVVz5MXVXUP+fvc75U0vn+Zv+lncx9zq/b/73ewnnVcbcXUpn6b3+3mdfb7F7y+Cv6k58uLqdiX95eR7Lv1qkuffSiIvru5B0i/w/CL4CM/lFUVeXF2d63bK2Qn9GK6LfZsiL67uRK93jK/7ua5m6U/1VZEXVzef8l9C+/f2e5j0y//UR15cXXvq9SfxfYLyrE1/vKU68uLqJlKvn4nvXNp7kt+Jq4u8uLpDic/I2tZ508un+Zu+LevMWscJfv9O0ZdXfzXxeZ96jsjl7besy77pEH159bNdJxOXrbhe9MRuUR55cXU+D3jbduA6WeT6NuHF1fXienSA36NBV0G//LI58deO+gbG+UfuyxDX7/1uYS7y4uqmk35t+scw2uc62uuH2siLq/O7Fp6TuZP6jvc7wNnIi6sbQHve6jlT+OnYXkWRF1fn7z8OvwdxPYhx6vfp5cXV7W570b+9n0zvR9P7TfV7uM5z/qOffc48s31j5MXV9fS8H/lczP3QuugmFUdeXJ3njdP9x4vpn+4vyour28pz5NRvJuOihnk23ScQV/cu8elIPDZkvD5I/1jSGHlxdX/Rn9L7u7uoX3r/J67uV9p1IOOiJ+V72u8YlUReXJ3vJb5JP/R7uz43ntcceXF1Ffz+j/Tn19xHpL0PzERfXv1w8nuU/KeRby/mtRvWiry4uhnYY6iH54HHUb/xJZEXT88Nj+J6+Dbzqu/lHV4VeXF1v9OOvodZ7fcX6Bc+31vznmc26rZmfbUX9Zvn83jiNbwx8uLq7iCOdT5/YDzPpt96vyIvrm4U5bgDfgPKdyfjze/7y4ur87t+e/h9EvyHGG/PZ6P/aaKvz0S+pEvkTa8vr970heBPUU6/T3RMffTl1XtdKkb3A/n6XUu/e6svr34I8fB81Sa+RwrueSt9efVXk7/j0P0V91ue6hD5dB/G981OBF/t99Kxe2YjL67uBb+zQLkWsC8wEfteu8iLq9ud/jcFfjfK05lx0rZb5MXVub/3G/xQ8j2H9VnH9pEXV9eZOHTzfFuyfn2nIPLi6lzfDvL7RsSliv6xf0nkxdV94Xmtjq3zppdP8zf9ubTPB7TXbX5XJRN5cXX7uv9K/zqCeq2dy9sjiyIvrs79F895P8b1aFOuU4dkIy+u7mt8z9Usor+OIe4XN0ZeXN1R+F/A+32nt1zPt0RfXv1AxvUb+Hsm7zeuTN5vlFd/r9+VYnxvSvvcw7y4cVXkxdW5rupMPD1PXYFuecfoy6uv4/drmVdme/9KuX2PUF5c3SeuW8l/vM+vGC+lHaMvr/5+x28ubxegPwU7POHF1Z2BvZrx4fe2R2H93ra8uLpLKYf/1+V5xsuz2HEVkRdXty/5v08/fp910TfYb0sjL65uL58LEpd9mU8G075n5CIvrm5331NB9xXjwvvFT+siL67O/clDWU/s6/s99IuO1ZFf3Tnyd3SKvrx60/v//9yv8Pv/w1sin/5fAL8b9JT9B/xtzwUTv6bKiKuTPz7d32JecH9LXlzdpYzvSn5/Y/xNsMdmIi+uzu9rPY69GN0D9Mdn66Mvr76D758ThyG0539d13eKvLi6vfFfqm2dN718mr/px1G+S+FvRd+N9K5vB3BdHIj9sF3kxdW5Pi4g/je7D4z/YkPkL0t0h3sOMTlfst/fnD8RV/c2/eQg8i0j7h1p11sbIi+ubiv6r+/p+H3dG+D9/q68uLrbk33IlD8h2WdM8ze93xee5//FY15031deXN08/CPJr4B2ztLu72aiL6/e74eW+X0g5qUXua62lEVeXN1ZPucmv6Hc5/h9vfT7e+Lqpvv+CO0zn/l6Frqbc5EXV/cE10Hff/X9r9PQ+b6IvLi60/F/8btkxNnv/LxZFn159W94/gJ7FPxY9xUaoi+vfju/c+K5BuLsdyk3zUReXN2O5DOIfCcTl0uxv5RGXlzdcuKfvt/ezv/P1CHy4ur+Rzlcl2RoD98Tc/0iL67uE+qznt8v4zrg99a/roy8uLq57v8Xtc6bXj7N3/SebzmUdr3H/y9XHXlxdR+AP+T3UJLvh/ndMHlxdc/5HQrmZb9L6/dql1VFXjz9fq3fl+tN/n5n7tH6yIur8/t0vzM+Tvc9fXDnS3lxdUPJx/OFBxIfzxl6vjA9f6juSMbXDN+HoJzvEpcNqOeC4oirS/k0/e6OQ+q9HH0j/eCDysiLq/P9iKG01/7ug6A7rST68uozrguo/+V50+Zw7KdtIi+uzu+fX+79I79X631hTeTF1R3l+yu032ji3Jd+NLY88uLqXvZcZHnrvOnl0/xNv9jnKZQn3YdZnOzfqJvq/9lNns9szHx8RTby4up8fvMa+XelXXLY0WtHXnyNjvmulHbdgvXSH9jX6iMvru5t/48IvzObdpmCfbcy8uLqxtCup5C//+/8AM/5NEdeXF0z4yL9vkMx+yLp9x/E1a3r9wndP/EcAXF/KxN5cXVZyv80+f2AHUK8T2gXeXF13/q+QkPrvOnl0/xNfyHlaODc0HTfP26KvLi6kXnTZiL8Rz5/ZP2yqCry4urKiavfLfyeflXEOLkK+3/a42X8eJx1nXd0llX2tpOQRgqEFNKTl1AVQRT9jQ1sqKDoDCqCDbCgCDjigGADGyqMCoKCqFhQEazIKKCIDQU7ythGRcdeQNAZAbHht9b3Xhdr7Wdl8s9e+77vs99T9jlPO8+Tze0y/v9fblHabsxP2zU1aTuofdrOK07b9+vT9taGyIvv0BWk7S0d07ZzYdpOQXdfY+TF1V1KnI05zfOWl0/Gt/ww7G/8Tlf4s4qjL6++Efxl4vbqkLYv0C+bS6Mvr34w/bOJOG/AD6O/bq+Jvrz6g6vT9gn4o8rS9ufatL2iNvLi6tpmp+2STmm7vS36irTds23kxdWNpR796eeZufxuS2xx5MXV/Zv2zWd8xtO/p9I/h2VHX159Oe05nPrNxP8b/fptXeTF1XWopH1NaduiPG1fpl0TaiMvri6L/phJnPoq6of+x3aRF1d3HePSknadl5W2B7dI2wNbRF5c3WXE34X29W+TtuNod88EL67uQ8Znf8bn5Ly07cY8/6ZN5MXVLaZ/5tKuStrzML9zUGX05dV/yfjn0J6z+J1PM2h3VvTl1U+h/IX0z0LG9zV0D3aIvLi6fOpfQn1eaJW2N4J3KYm8uLob8C+Bf5P+yed3VxRFXlzdrtRjRipt/0z/lJJnu1RFX179abT/INq1hnEejv9hffTl1c+n/KPgzzLefydvZjREXlzdM9inGd/VzNNi5vcTtZEXV1eE34p2zaFdZzBe19dEXlzdqEzaRXvW0683Y9fUR15c3RxsA/FaMd5nY18pjby4ukKPZ4zvt/iX0E93V0ZeXN1ltK+AfliGbj+Or0e0jL68+m3EO4r+ORn/XX43ozby4uqOBD+TenzFOO3M/G7VLvry6m9I8DvlRd7y+vLqLX824/od9Z1K3ndujLy4uskpeNqxlLhLsBtqIy+uri/9uIp+7cRx7THW9UfaRl5c3UfUry/1yyZuBvNmv46RF1f3JMe367Kb5y0vn4xv+ffox/s5Li7E7twq8uLqrmI858GP9zjOz/TPiLy4uv3Jp/zM5nnLyyfjW3467byN+XYwx6XhxZEXV/d/5FUH+Kfg2zGv72oTeXF1VzIPL4afSX/tzvweWBJ9efVTayK/pHXkLa8vr97yczguHEl+d2C93b8u8uLqTqH8J4zPBNc58n7nqsiLq/sQ/h/8Tj7z5DLOK7dXRl9e/WTKfwt+rusn9ZqVG3lxdSupz/rc5nnLyyfjW/49+udj1ssaxre2OPLi6tYwjzLpn4fhhzDOx1RHXlzdMPxV8Ouo3/fk3cclkRdXdyX4z6zv66nnJeTlL/nRl1d/YrvIjyuKvOX15dVbfjX2B8bzDn7nvprIi6vbSP+dRl6eRX9cz3ivr4u8uLo3WIemgt/DOtuS+X1mbeTF1Y1kPbyV+nUBf556dqlM+E1RP5r4v3l+Ar4G/cVV0ZdX3zNRvzXM79ewn9RHXlzd69jPiPuo6xDl1lVFX179SPr/a+Kfmjh+TayIvrz6k+ojvyLBW15/RSK+5evp543U7zDq5/mNvLi6V1Jp+31V87zl5ZPxLX8T+JkcZ1Zgu9dHXlxdC64jJpGfK+nPvtR3W2PkxdV9QB54nHY9npY4nsuLq7uQduRgfyKfR7M+uf7Li6vbm/zpQ36O57p0MNf375VFXlzd3bTvK8+/mJejWC9KSiMvru4V2nc1fAfi9wWfnRN5cXUXet6f0zxveflkfMuPpX2j6ZfW6F+tiby4uiL8M4l3M+vzbOyS+siLq5tL/0zCrqU/s/AvKY2+vPreXv8xvt9Qz2Ow3SqjL6/+F+IdRz+0ol4n0N935EReXF05v/8412P3kOdL8R/Ijb68+p2pR43369Im42XWxdU1kRdXdz32Aeo3ifw+ljyb2DLy4uqeJP4jHI+b8JfjLy6O/PKEbhL9MZZ+7EN/lVDfkxojL65uf+xlXvfRP6tp56HV0ZdX39v7H4n5ncG4J+e/uLrOzhOvQ4g/G93bVdHfwaO/lfptJa/qaU8P6vtkY+TF1WXQn3sTdy558TTnN5sLIy+u7g2Ox4em0vY45uWP1Ouo+siLqxuMHZTXPG95+WR8y1/r8Yjj2zT8yRWRn5bQtWf8xpCft7Ku1tJPOzVGXlzdzYzfCHS1rAs12D3rIy+ubjz9eC7x7+X8bjP9ekVO5MXVHUfcFHxP5tee2D3yIy+u7t/k56X0y3r642Dy7rHKyIur+5X+eJH8bkv9tqFb2hh9efVjwOuoX2fvT5GvbasjL64u+39c97RIpa3XN/Li6qYQ59+VzfOW/3fiOkqd5R8H351+OoRxn5wfeXF1z+MXtGmet7x8Mr7l59Ivg+CXc17xROvoy6vvzzh6fbeE84Ji8vPI4siLq3uW/l+J9f5kOfFzq6Ivr/61VNq6PvZhPj1Ef91WEnlxdX/n+LeGvFpAvbzOmVEfeXF192KfQLc/7S2gv/oneHF1p5P/fxB3Jeelj4IPy4y8uLrZxC1vap63vHwyvuUfYVw7+RzOdaI28uLqWtKfd6B7k3HenXHbUB99efXPed1D+9q5jjFfLq+JvLi6BfCTideT3+lKfhR0jLy4unbkU3fP71kv+2GXdYi8uLrDsAdxntSH9qxnXT44N/ry6vun0vY31rnt4EPIkxXFkRdX53PMixPP97Yw733+Jy+u7id8nwcmecsnnyuqs3xXj4+sMyNp76aayIurO5bjkOtKNXgO41TVJvLi6m6kX4aSlxvonw3wP5Qm+DZRd1SKdmFvxz7EunBkZeTF1V1L/s8i/mLOF87Gen9YXlzdeZxHHEn7Col/Hv12W1XkxdU1kE+Z5Ok6zisWM14fl0VeXN3rjOdr5Pcj9Mtazi+PSUVeXN1b+HdTrwvoj0J+75+VkRdXdxb5uwf9s8zn0dj8ksiLq2ui/f3hN5FPlewr+LZ15MXV3UL7ltG/PYnbnzzr2zry4uqe9fqT/sliPAcy7vfURl5c3dXkwaH001v0SwG66xqiL6/+Q9qVR/0ep7+WY5/A3ks7iyn/MeX61EVeXN1A/D1oZx7r3Tifm9RFXlxdA/lxFfFfRLeOdo2rjL68+iXkzf/R32s5fu2JPyYz8nsmdHvg+xxqPPX5X8+pxNXVki+30r8/sR5fhr2gfeTF1WUz3+4zPvnUAdu5deTF1fWkX8r4nb/Q3y+Ar66MvLi6G5lfY2qa5y0vn4xv+Sby9+xU2g6nvv+pjry4ut1Yv1w/dmM8DvT8r33kxdUdgP8M/HXEXcd8WFkVeXF1F9Cei+EXkxfjqGe7rMiLqzuc+Vud1TxveflkfMs/TfyJ3q8mvx6qiby4uo4cv26B38j8qmdebsmNvLi6pcRf6P0Y6vkH8R9N8OLqvsaW055xnhexfo7Nibz4Dh1xy7wPznFnLPhhhZEXV7eU+bOovHne8vLJ+JavZn5u4/g/nnbv0Rh5cXXT3J/g+Y7PAfBn5kVfXv0A4rVhXC6nvu8yzo8neHF17+DPSawf3RLrg3y3xPrRFduaeVbi/gfzqiby4uq+xS9jHp1OfYZjF+dFXlxdo+f5/E4n8nQM7T26MfLi6np4flfZPH90gk/Gt3yXVNq2xx9Hvt1ZGXlxdfOoVy3tzKSd7d0P0Cry4upOZnweJp8+9zkh8+PjnOjLqz8H/1Xi9iO/5qRNRn1m9OXV7+LzCe+PMB63Mb5t6iMvrm58Km193taW42Hy+VzyuZ26nXwOz3o+m/64E39edvTl1X9P/TfSrl3Jq+n87oENkRdX1wM7iPOgeczz2czrObnRl1f/E+NfzO+s4neGpNJ2bVnkxdV5fGoob563vHwyvuVfwG9FXj7t8b4y8uLqesH3gj+Q8TmFfp3ROvLi6kaSH0dyvprN/NpKvwytiL68+m2UnwheQTvHeJ5QFnlxdXdRn/2p5yb30TFfNhUn/Kao3498eN56EW8L/dOpMvry6ofVRH5lx8hbXl9eveUbmQ99Gd+98HdrGX159Uvpj9cYjwn06xvsAz26NPry6qfgX0qcv6fStjW2W03kxdU1kH+nUZ8vaNdw/FUF0ZdXP5f4ZxCvnPbmmQ8tIy+uzue3f8tvnre8fDK+5Q9jXNqwTq9gvj+ZG3lxdYMpfzt55f2vAa531ZEfkNANIf/+TPwjyfepHDdymiIvru4a/NJU2i5iPX0E6z44eXF1r3MeMZDjycvk12z4WUXRl1fvPp9nqGdv8mE74zytNvLi6s6BH0H7bmK+rqB/55REXlxdV+rzGPk5iPG4g3Xu45rIi6vbkErbncmHqe634fjycuvIi6tb7/U27WpPvYqwmxoiL67un/T/obTjIuLeQrm5lZEXV/c1/beX+8NYF58nL3z+Ii+urjPr84W08xDa2Yp5clnr6MurX5FKW6/jDqM//td1nri6WYzrWuwvjPcQ8m1Jh8iLq/sV+yZxP+V6ZG/0j2RFXlxdT/rnfPDLGd+zbH925MXVTSavn4GvYHzcx/5NZeTF1bm//WjwRcyrxdg7CyMvrm65+/UZlzdZ57bQL2/kR15c3R3U6xmfr7O+dfG5THHkxdUtpv5TiDODuHOtZ07kxdVtSaXtbPjSxHOdqXWRF1f3ms9Lmc/uf57hPrjq6Mur3wn7J/dzuY+R32ndFHlxddsZx2fdp0u8gzi+PpcdfXn1v9N/Pq94j369kfEaUBt5cXUPMB+2eF3JcX6h1/FZkRdXt5vvx7A+HUr8T9EfVxV9efUtGiPfPRHP8vry6i3/BnFf5rzgDPrnu8LIi6v7yn3E8O9yfHgH+2lD5MXV/ZN+LCK/PiFuf69zmyIvru5gjsNn+XzVesC/VRB9efXl+L2In0W9Dsf2y4u8uLoTaZ/3j5dyPrc76/opCf+IVNTLex35IfWcRD9fWhd5cXULacfd4NMZD6/T3q2PvLi6Ve73qWqet7x8Mr7lfW9uM7qFPg9LvFcnru7GVNp2YH4N5vj4LevkppLIi6ubS7wpxB/AereavPpXXuTF1S2jHSO9/8/x4hzWlwXtIy+u7h6fzxPP5yAP067+bSMvrm4M/Tevonne8vLJ+JY375L5Zd7py6t/jfYk9/++SX3PQ+9z0QPpv7HOv8RzVXF1r1K/FvR/Efk6j3FpLIu8uLptjM+p4N4HfBX82tzoy6vvYn7SjnPAx2C/L428uLr/MP9eYt32Pc8r8D/Pir68et8P7cH52ouM3274OfnRl1ffk3p5/7GKcfnA949yIy+ubjL5+RznTe5Pf9X9/S2jL6++lP57g/49hn5ZB39vXeTF1XXCHs+4vEF7/ordVhl5cXWz6b+t3ncib/cB/60i8uLq1rsPtaJ53vLyyfiW35VxfZr27UreLEpFXlzdM563+34q69UW4vaojry4ugmsk3+paZ63vHwyvuXnU88V7kfE71oe+dkJ3X2M7zjWhwbG61bwvPrIi6s7k/q4v7CcfNiXdWK/gsiLq9vq+Qz98znxV9Dub+ojL65uFf6PrCcvkWeb8c8tjL68+h99/kI71nEc9Xjm8e2j7Ob5M1pFXlyd5UfhJ6/T/5odfXn1Xr+PYv1tBJ/C+nFCXeTF1aWyY7uNOxr7t8LIi49K1OunFNb+ZB3aWhh5cXWf+r4w58Puf9vO+nllfuTF1bnv7q2c5nnLyyfjW97ni3szHg+53zPBi6vbynj4/kl31pFi5tWkssiLq/P4dp/nP15XpdJ2TmIfnbz6fZjfRzC+v5K3w5g/Q/IiL65uPPGPIu5L9NOLnkflRF5c3RjKP0R9ricvxhLf9yjkxdX1wm70vrP7YNMmY3tZ9OXV/8T4PJ0df2c6/qMF0ZdX7/sfbRP7M9yv4T5Y+f+1j8P7cu4n9b7clY2RT76X537TVznu/JdqLSPfpmdEXlzdF+TRc+ThQ9RnCnm/qiby4uoexI6SZ3yupt+mFER+B+7+Lr+7QT6sRfcN8/tfhdGX/y2RV7631ZP+Tb6/tcPvGPW9U2nr/blJ9Pcl2BuqIi+u7mr3l3h/j+P1PtTz+PrIi6u7Gev1/VXcnznefRK1kRdX15Z+uZw8bMd4nMp53SGtIi+u7nXqt5F6+Zzyd8bZ60Z5cXWHsR74ns4vHLdfpJ+nJN7jEVd3j+cdxJ/P8aWadnUojLy4umuIf7zrGn4d8W+uiby4urXYs+Bv5PxrNe0sS0VeXF0v6tFEP1zkPjryvD4v+vLqs/n9Tl6feh+I3927Pvry6v9EeyqJO4T+fZhxz8uNvLi6tuaF73f4vJx+m9kx8uLJ+9r2Z0d09vdeddGXV+/4eH+yH/Vt8j3vxP1LcXV+f8jvV3zOengF63Py+xbi6rwvfJXfP/I+CeVOr4y8uLotxFlD/fI5z9jo90uyIi+ubgHryKBU2m7mef/F2LZZkRdX9x/Wh5tpx/ms53v7Xaa2kRdX9zRxZ1O/buT3g9yXPL8u8uLquvv+Avl9Of38BP7ygujLq6+i/dPJjxvcR8r61KUh8uLqfmAc1hL3I8brBPQVVZEXV9fEuuJ7c+/SX9fRP8MSvLi6rfjuM/0Lv7eIeft0beTF1Y1wvybxJ3jfBLsgFXlxdeOxO8EPZ136C8eVW9pHXlxdCvsrv/M243IO6+zEusiLq3sP283vltAfV3N+Nbws8uLqdqIfrmFcjiLf/4xt2SLy4upeZx19hTwYznpc6L6tmsiLqzsDu5T+OZR8XkK/HJYfeXF1D7l/kPz6kvXlStbZ2dmRF1e3r9/NYpw83/qD/HyvLvLi6royP1YSZyD9dLj7PxuiL69+Gvnn83Tfm16DvSUz8uLqfP6efK9+P783Ux/95Hv2vn9/PvFP9bsKXuemIi+u7kXG4074bOZDHbZFTuTF1R3rczms52W+B+T5m/wdifO8fvz+zcQfTX9+xjy5qDHy4urGMD4fe35EXs0nT1/Kj7y4uq8ZV58vbKA+n7FOflcaeXF1ncjf7rRrGnE/R/dSu8iLq3vB++w+R+X4XE+9ni2OvLi6mcS/Af4M4l5KvaqaIi+ubjj2eeLNp52b6K9OBdGXV+99W/ejX+Y+Y8bF/en68urXeX3k+SXryTv0y7kJXlzdVYzDA+6XZ114Af6xksiLqysmPzcT/w/W12OxH9dGXlxdI9b97V04vh/A711RE3lxddvoR7+/M515NQN7fU7kxdV9Rvy/u74zP/akXya2jby4ukOIc7v3D4l3YuJ9OXlxdZWptH2V+u3P7/UlTz+qiLy4uvk+3/L6kuNSN/LthszIi6sbQf9P8Dyb9fB7v9fSEHlxdf1878H9rPiPuL8kI/rJ70D5faZM1qOJ1O9q3zeviby4uovgT081z/dN8Mn4lh/B+O5BO/fzO2YZ0ZdX/wX9ejv+ieTDYOzxOZEXV1fiebv329GdwPXF8bnRl1c/wfewqVcN83MReTq/TeTF1bn/NR/f85SO/F6H3OjLqy+i/56nHm+7rxy7rCDy4up2B+9LPV+gff3wL8iPvrz6xxPnhzvOtx3f2siLq/P++ET4vmmTMQ77U0bkxdVd7PEEO4vxTPE7+1ZGX179Fe4fB/+cde192r1zbeTF1Q1lXPze3ip0J/K7nRuiL6/e7/fJz2mMvOX15dVb3v3oRam0PQ9+UHX05dUPqYr84OrID0r4gxPxLP84cd8iL2a6D6U08uLq3B9wBfmcQTuvxD+zTfTl1Q8g7kDiTgC/HvtUfuTF1dXSn139PgDzYRC43yOUF1f3pt8LZX7XU9/JfiezLvLi6tzH25P6fUM+ve/7oR0iL67uW+ydqebLy79Dv/l9jFHYlYWRF09+X6Mrx6vhnmfjz86Mvrz6zbT7Wp9/eJ+ZvB5Rm+Abou5a8myR1/msux2p35/zIy+ubrHfefE6iOvJL/BPKo/8Fwnd/bSjfYvmecvLJ+NbfhLtWc64H+C+1LLIi6v7zv3s5MERrOffp9K2sjDy4upepvy74Md4neN++Proy6sfyXwvpX5DGafN4CdURV9e/UDi+77mSI67vse5LPG+p3zy/c7LqE++3+WjfwYXRl5cXTX4kdTrfuJOww7NjLy4Ove3D6B/HifPfK+oXXX05dUf7XcY6Nci5vsW7gMsaIi8uLqHOc584HdOGM8J5N2/2kdfXv2HHSO/uTzylteXV2/5SdTjsVTa+r3L4xLfv5RXvwf573u0fp+9i9+XKoy8ePL77sP8rgJ5dRDtfKom+vLql1OfA8iLOvDt+F/mRV9efTX5ezz1uY12/oNyn7eKvvzxibw8nfzKYX7/QrkNNZEXV/czfoH7fvA3Mb+7N0ZeXN3t6qnXauqT53GtNvLi6mb4fgfjM4vroc3k7dTayIuru4TrpF+Yx+63dx9+Y1Hkf07o9iWuz9mnu7+BvBqdiry4uln4H2Y1z1v+wwSuzvJj6Z8C1vfX6Je3E7y4unbg92Q1z1tePhnf8hup5xzyZCJ5OaMy+vLqf2F8TqIfT2Vduwv7WGbkxdU9Qj3cv5/FvNjF71K0iby4uh7Ua7TXFdRvMevGEa2jL69+JL//Pu3ZDbw9urMroy+v/krWhZt8voPO7zpOqoq+vHq/A1nCPGtkPrn/4Zo2kRdXdztx7sF63fuRz6srI/9RQne21yn0b3LfnM9X5cXVDWRd+oT8upe476CfmRV9efXve55Gv8zyOO/7Gk2RF1fXQH2u9/4E43MB5z2n10VfXv0lxFno/TPOD6aSN/NqIy+ubgHjcQ/8Yz7fNo86RP73hG4pdiv980/G9St+56uWkRdXt8nvhHg9hH5q4rsq8uLqPnMc6Wf/r4L/b8HveOjLq/8yEX+285O8v6sm+vLq707w/03wdyXi/zcR3/JD6FePTyPct1MQeXF1kyj/O3EPpV15tPePqujLqz/JfY/EX0NeV3B8rmgReXF1nj9fA57yPUv86wqjL6++Xyptv2A9HYX/JvnRPiv6oxL6+8H7MT9akWeFXNeVFUVfXv1vvq9IO383j/ndq7KiL6/+V/dJMA9Gcl7oPrb88siLq+tDvSbTv8f5/Inf8f3ayQlc3RTm91bPL/yeMseLY5siL67ufO/TEG8u+EdcN/YujLy4uk6MZxHxp5CfU7FXZ0deXF05/bEf8f2OwlWMq9cn8uLq/H7smd6/J+5A7LWtIy+u7lny/13va2C97ltYGXlxdZ5f+57LOvrHfppfHHlxdb4/Otrv/nA+uJTzw8MbIi+ubi/sEOIXkZePptJ2aEPkxdVtIa+XUM/vmFdL8W/PjPzShG6M33nzfT/y8wPG9cmq6MurX8P6/GLi+L0beenxW15c3QDy+ZbEd1bd5+z3V/dN7INWfwr56/3LMeRFAeMzuCby4urOxf6DuBfj70GezM+PvLi6O/n9p8C/Y10ayvqwsCzy4urO8jsG5PdPft8J/QtFkRdX5/uCF1K/Tb63jN+/IfLnJHT3p9J2hftnqJffVfF7KvLi6pbQr5cTx/eAfjRuVfTl1ft+0DHEv4u4fkdhRnnkxdX9ifJ+t+Fn1uOdEt9vkBdXtw27gHnpc5cr0b2dGX159X2ZFzvmHePifHN+7Zh/LaP+POw4xvET11vG7ZScyIure5jfP596HUB7emF750ZeXF0e8W6gfw70+zd+fyc78uLqTmb9+5r4Q/weO351deS/Sui+8H5vIs/Muy2l0ZdX73d/rqV//M7t9hS2Mvr5Cf1Av+9EXPfdt2DeZRVFXjy5P78X/eF+qM+p34aOkRdX5/OCIfXN85Yfkthvpc7yO5GPDeTTe7R3QXnkxdXdnzY7/i9Zkre8fDK+5ctZx/1O5nry9tec6Murd7/zOOLPZ3y+Ii9eqom+vPrTWF96+R0f8q2EfmnnfbNU87zroLy4Osv/4fue/P5an0s2Rl9e/VDi7+L5DfnYgH5JY+TF1U2jXnXUq4J23kU/ntAUeXF1q6m/x986+t39yi1LIi+uzv3Lz/o8KG0ySsmDEzMiL65uEevLcubLDH7H64jnayMvru5Hym+oap63vHwyvuXncf5wl/dZfb8vN/ry6uen0rYj88f9XXt6P7M8+vLq3Rfm9+ervP/J71a0iry4Ovcv30o9BjM+h5Of16SiL6/+It/zYnzGui7R3sy8yIur8/+jdPX9mbTJqAU/JSPy4ur8vwnvUB//7+cDjJv//1NeXN3DXkdxvtsD/wj8l7Oi3yOhr/V6ln55i9/x+2jnVkVeXN391KeI8X0O3fPETVVHXlzdCMY/uT9onu/5JPYPiavbTpyLqU8juu74i2qjL6/+DH7/euq3zO/SY3vXRl5cnfs3i6lHch1zfdKXV+/3FFYT/0H8Nc7bmsiLq/N+zXbiXuR1Cr7vd8p/mdD9Tl534fztnbTJmOB1YUXkxdVdih1A/X5gflzA/DiiIfLi6s73O1a+54DO72EvqYq+vPrH4G/yuTPrQg/fzyyNvLg6v0Pgffb9mS+9sT1LIi+u7lesz9/vdf+P73fUR15c3bPEP4f4/Z2v2AdzIi+ubgnW/z+UQ/zOtNs8kRdX5/8bvMP1zfMZ34duF3lxdQdgm3yu7P9Pc5wbIy+u7iP8IfzO91wH7MN59Q/FkRdXNy6VtvvSzlf4na9dpyqjL69+HfzuxOlDP7Vk3HKqoi+vvnddgq+JvOV3xK+JesvvSh64T3wa/TIrO/ry6t1f9SfqdRDzdQHj1a0+8uLqVrq/keP5p8zzo9EvLoy8uLoy7FTWlVXkwzDvP9ZFXlzdrlj/79dDtG86431GXfTlk/8/rIm43ger8DlMSfTl1Z9Mf/yHvO7HcbED9r6syIur24f2j068f+J7c35/RV5c3evU3/3dRVwHneZ9tPaRF1f3Ae3y/xj4/4AWEP+v9ZEXV7c7+eN36oYzLwf4Hn1p5MXV+f//FsLvA36T/6emXeTF1X1Pe/aif/y/y51pl/9/WV5c3VDsQdjrOL/ug/9UZuT7JHQHJ/7fZ5K3vHwyvuW7Mz7n0t4x9PMhdZEXV/c395PQvv18fkS7H2iKvLi6d5mfI9o0z1tePhnf8v8PzKV72XicdZp7jFXVFcbvzIADM8Md5v0eLjAMDx9YXwWJhKdVsZVAiwLGB9ZHtCo4WtGqxapBRREM2oIVqFhEFLFqnQQFQ5BKG3GosVYQkVITqNopSH3EBzbp+f2arJPb+8/K+r5v7bP32mvvs8+5Z/TAzH9/1SWJ7apIbJ/yxI4eGHF1vZsSu6gmsUsHJfantYn9a2305dVPa0lsti2xK7jeyt74vSP/PxzdfPp1V0Fiz88mthP/nJLoy6s/gh1Nv0ZUJfbMnokdVxZ5cXWd9OuHAxLb46jEjqlM7PTKyIurm9Wc2AXwt9C/8YxvXHnkxdVl+tE+/duE7rpG+lsXeXF1FcSn83IAOzMbefF0/saTh+vJz8nUyZyyyIur66R+NtG/J7jOG/RvcUvkxdW93Dexl9P+G/hd2PvLIy+urqI1sX0KE3tLe2LnMa7+hdGXV38s9XcydkX/xL6P3VEXeXF13zL+OtbDfdTHAPQPVkRfXv3M6sS+zvh6O/+5xI5tjLy4uvsbEjtXPfl+mH6fWx95cXWPEL8M/jauczbtX9EQfXn13dTHS33oD3kex/weLoi8uLrx+M3k823W5ZvkpaEl8uLqzsDvQ/+epX/nMM4RLdGXV/869TOKehhLnZ5C3MKy6Mur/6Iw8ocKI2+8/qGU3vh66vIb6mkAeb9hQOTF1d3J+t/MuF6ifx8Q9+c+0ZdXf4T6aqU/q4oT+zi2pCzy4uqsh7W5xF5IPz/iejWN0ZdX3019rqOdGayPotLE9iyNvLi661hX1zKus8jnJGxRUeTF1T3FPvYtfD/2m5Pp9/Q+kRdXdwQ8V56fN/585qnMvGJvrYy8uLq+5P0I+TuRdbCVej6pIfLi6nrRn8fI0wLWywHipldFXlzdRNbH9qb8vPHy6faNPyaX2OO5by7HvtgceXF1J2H3c51TyXcr++ec6ujLqx9G+5eyD2+j/o5Gd2Vp9OXVz6D/q+DfJL83Mb5VjZEXV/cKeTkI/gr9PI752lYbeXF1U6mLGxjny9Tt1diTiiIvru5T8lBDuy+gG4Ld1xR5cXULia/FX0++ZnPdJdWRF1fXk/PbYep5OHW5n3k9VBx5cXWPsu7PyyX2E9ZVJ/vSi2WRF1e3jPm/gnn9kHl5inFv6Bd5cXXfIS/nMr+rWScf0r+zGyMvrm4/fBn8XvKxBzusPPry6suaIz+tLPLG68urN76C8ZWx32WxHW2RF1d3DfMykvarmN8TabdmUOTF1d1LHa4vzM8bL59u3/jX6Oc29tPnyO/KXOTF1b2G/Yq6mkSd3sx1vjwq+vLqD1P/99L+Ts4rzzCvE/tHXlzd6eSxpCQ/b7x8un3jPyFP32U/OoDd0BZ5cXW/Bp/H/NZxP6n3PNo/8uLqHmI9nAZ/Fderpn8b6yIvru5PtHcC/bkc3RJ06xuiL6/+qLbIF9VH3nh9efXGzyQPnzPexfBr6yIvrm4b41/FPsByy/yAffut2siLq9uF7WRcJdjp7O+DmyMvrm49fjfjmMu+einr/J6KyIur20BeihnPZO9z7HuHGqIvr34J/RvifZXrDMZvaIj84JSujPwtpQ6u75XY67DHtUReXF0H9l+sw3PIy3LW6bvZyIur+xvt7srm542XT7dv/BfYVd4PGd+o6siLq/s749sB/hvm82Hq5B+1kRdXN5v8ncl1XFezqNOOqujLqx9BXV7A+EYwvovwC/pH/qKU7kL8wRX5eePl0+0bv9XnR/xv2V8zxZEXV/cedelzewt5eZbx7a6KvLg6n+872V9noLuevK7MRl9e/ZYBkX+rNPLG68urN76P51b84+nXL5sjL65uCetrKf36Cf61zPfs1siLq+vCr3O9+j6K9ycbWyIvrm4w83OIfG5nnJu5X46sjb68+nLuvz3RjWFcV8F/URt9efU/Yny7fX8H/yn5ndwQeXF1Gxj/efX5eePl0+0bfzl5GMr6uhl+WWX05dVvzyX2Gfq3kPNMN3n/S4oXV9eF7aAu3kM3hP7ubYm+vPpy8jeNfk2nTnqxrtrroi+vfmxT9NW90xbj30nx/y9e3cSmGK8vn473/cWJ5PWfrLMHiiMvrm5yLrF9GdcEdI8z76c1RV5cne8nVrNOXSdTad/1IS+urov8txfn541vT+HqjP8tuOetz+hXc2PkxdVdTL8+ts7Rt+Gvq4t8W0rXynwuo/2v8X/Pde5uiby4urvJYxX3iQqfX3n/t7c18uLqVuCPzDE++ruT+ji9JfLi6m5jHEOZ3z3sbwvYl7b2j7y4um7W9x7fjzC+Dq43rCny4uom078q2t/CPvcr+GW1kRdXN5vxvEf7N3O/aaTO+5ZHXlzdH8n/XNo5mvPUC9inWyMvrm409+PzaP9L+ttBf1+tiby4uoWMfx31Ue59Cvx3DdGXV38sdTQXfBT53oid2hh5cXX30M4vsM8x32NyiT2rMfLi6ibSv03uH9TleOygysiLq/sAu4D272B+1jIvMwdGXlzdEebhAurRc/Ji1sWMbPTl1ft/z37ORYu4zkz2hTlV0ZdXP4G6eIj1tJp5etPnxPrIi6u7NTGZrZn8vPHy6faNbyK/teTjJuqiu3fkxdV93/fn4B8yn5dSn/PqIy+u7h7q4F36cTvrZR7+RZnIz0vpVjKOV2lnOfNyOvP7YnXkxdVdiO//t7tY71Wcs7Kp/3fF1fk/z6nkZyDPh1/T/jd9oy+vfkVz5Pe0Rd54fXn1xu8nv67PMZ7b6iIvnl7f/n/mc05Zj8Qe7Bd5cXXzaadXZX7e+MP0++rEZH6OXVoXeXF1Jf4vzbrZzX54I/as1siLq9tIvY2HH8p++zbvfb6ujLy4uiPeV8n/1ZwbhjGPvr+TF1f3OOvjDfjF2Fb6/XpT5MXVdbB+irhvzvc7Af/PLY6+vPrJ+IPJx7+te54n7qyOvLi6LT63o/P8dB/72oPV0ZdX7/lqFP1bl5jMStbNnEzkxdWNpH6GU38Z6mo48/ZAU+TF1a3PJdbvEJ6g3vxeIdsUeXF1J8CPaMjPZ1N8un3j0/9rnood1iPy4un/Pz1/lLEfX8z+W9o78uLqdoOfwvgugZ/VKz8vrm4N9fUZunbGsy/1fYC8uDq/63iG9n0t0ZNx3ZWJvLi6+1j/N6TWzxTWpetDX159C/UzAf+rXGJriHuuPvLi6n7meYh59f3PlfTvjkzkxdX5fmhfJj9v/L4Urs74g+TlIP26EX9zYfTl1T/P+D3nzvZ8iT0jG3lxdZ6Th6Pbz3zchu0uiLy4uk7W42XcN4eAf4/9obAw8uLqnmA/amedDAUfRP/WpHhxdQW0PwX+afApnucKIi+ubhfnA88xw3yPnzrv6MurX05dbqe9WdxfLsEeUxl9efWPYlmGmRtZZ3vBvymIvrz6ndjb2V/8v2MQtr1n5MXV+b/LbPKwxe9KsB8XRF5cXbP7MXkZzXpaS75L+0VeXN18v5PxfTfyA9hNmciLq+vl8wR1XMD9ZTP+NbWR35zSHSYv6e+7zsb6HCAvrs7vv55nHNOYnz9QH++3RF9efTX7q+99J/k8xPUeaYu8uLqN+Au4Hy6i3eUUyOe0PzWbn5+Sjby4OuMn+f0W181xHhjbN/Li6rqY58do7zLfT/n/U1XkxdUVMa4fM49r/b+f680YFH159WtqIm++5Y3Xl1dvfBfrZRH4Dtd5e+R3pHQfcaPbTd2fxriuIN9r+kVeXN1l1iXt7CQfq/1ONBd5cXX+/9+jJT9vvHy6feOL/M4P/kl4v9uRfzL1HY/f9/g9T5o3Pv3d0JOp74PSzx2l+OnnktKUzueXCa35eePl0+0bn143m4hLrzvx9Pr6D0aaIEc=CwAAAACAAAAYKwAADRUAAP0UAAD9FAAAAhUAAMAUAAC3FAAAtxQAALoUAAC/FAAAtxQAAC0HAAA=eJw13S2DMlAUFtpRUVFRUdGLioo6KioqV1FRUQkEAoFAIBAIBAKBQCAQCIQJBAKBQCAQCAQCgUAgEAgEAoFAIBAIBAKBQDDMek9Zv+Hsj2cHvn5fkCGGGWGUMcb5zQSTTDHNDLPMMc8CiyyxzAqrrLHOBptssc0Ou+yxzx8OOOSIY0445YxzLrjkimtuuOWOex545IlnXnjljXc++OSLb3749Rd+CTDIEMOMMMoY4/xmgkmmmGaGWeaYZ4FFllhmhVXWWGeDTbbYZodd9tjnDwcccsQxJ5xyxjkXXHLFNTfccsc9DzzyxDMvvPLGOx988sU3P/z6i78EGGSIYUYYZYxxfjPBJFNMM8Msc8yzwCJLLLPCKmuss8EmW2yzwy577POHAw454pgTTjnjnAsuueKaG265454HHnnimRdeeeOdDz754psffv2lXwIMMsQwI4wyxji/mWCSKaaZYZY55llgkSWWWWGVNdbZYJMtttlhlz32+cMBhxxxzAmnnHHOBZdccc0Nt9xxzwOPPPHMC6+88c4Hn3zxzQ+/AmCQIYYZYZQxxvnNBJNMMc0Ms8wxzwKLLLHMCqussc4Gm2yxzQ677LHPHw445IhjTjjljHMuuOSKa2645Y57HnjkiWdeeOWNdz745Itvfvj1l38JMMgQw4wwyhjj/GaCSaaYZoZZ5phngUWWWGaFVdZYZ4NNtthmh1322OcPBxxyxDEnnHLGORdccsU1N9xyxz0PPPLEMy+88sY7H3zyxTc//PorvwQYZIhhRhhljHF+M8EkU0wzwyxzzLPAIksss8Iqa6yzwSZbbLPDLnvs84cDDjnimBNOOeOcCy654pobbrnjngceeeKZF155450PPvnimx9+/dVfAgwyxDAjjDLGOL+ZYJIppplhljnmWWCRJZZZYZU11tlgky222WGXPfb5wwGHHHHMCaeccc4Fl1xxzQ233HHPA4888cwLr7zxzgeffPHND/98+AMMMsQwI4wyxji/mWCSKaaZYZY55llgkSWWWWGVNdbZYJMtttlhlz32+cMBhxxxzAmnnHHOBZdccc0Nt9xxzwOPPPHMC6+88c4Hn3zxzc+fQs9f+yXAIEMMM8IoY4zzmwkmmWKaGWaZY54FFllimRVWWWOdDTbZYpsddtljnz8ccMgRx5xwyhnnXHDJFdfccMsd9zzwyBPPvPDKG+988MkX3/zw66//EmCQIYYZYZQxxvnNBJNMMc0Ms8wxzwKLLLHMCqussc4Gm2yxzQ677LHPHw445IhjTjjljHMuuOSKa2645Y57HnjkiWdeeOWNdz745Itvfvj1N34JMMgQw4wwyhjj/GaCSaaYZoZZ5phngUWWWGaFVdZYZ4NNtthmh1322OcPBxxyxDEnnHLGORdccsU1N9xyxz0PPPLEMy+88sY7H3zyxTc//FPoDzDIEMOMMMoY4/xmgkmmmGaGWeaYZ4FFllhmhVXWWGeDTbbYZodd9tjnDwcccsQxJ5xyxjkXXHLFNTfccsc9DzzyxDMvvPLGOx988sU3P38aPH/zlwCDDDHMCKOMMc5vJphkimlmmGWOeRZYZIllVlhljXU22GSLbXbYZY99/nDAIUccc8IpZ5xzwSVXXHPDLXfc88AjTzzzwitvvPPBJ19888Ovv/VLgEGGGGaEUcYY5zcTTDLFNDPMMsc8CyyyxDIrrLLGOhtsssU2O+yyxz5/OOCQI4454ZQzzrngkiuuueGWO+554JEnnnnhlTfe+eCTL7754dff/iXAIEMMM8IoY4zzmwkmmWKaGWaZY54FFllimRVWWWOdDTbZYpsddtljnz8ccMgRx5xwyhnnXHDJFdfccMsd9zzwyBPPvPDKG+988MkX3/zwT4M/wCBDDDPCKGOM85sJJplimhlmmWOeBRZZYpkVVlljnQ022WKbHXbZY58/HHDIEceccMoZ51xwyRXX3HDLHfc88MgTz7zwyhvvfPDJF9/8/Bns+Du/BBhkiGFGGGWMcX4zwSRTTDPDLHPMs8AiSyyzwiprrLPBJltss8Mue+zzhwMOOeKYE04545wLLrnimhtuueOeBx554pkXXnnjnQ8++eKbH3793V8CDDLEMCOMMsY4v5lgkimmmWGWOeZZYJEllllhlTXW2WCTLbbZYZc99vnDAYccccwJp5xxzgWXXHHNDbfccc8DjzzxzAuvvPHOB5988c0Pv/7eLwEGGWKYEUYZY5zfTDDJFNPMMMsc8yywyBLLrLDKGutssMkW2+ywyx77/OGAQ4445oRTzjjngkuuuOaGW+6454FHnnjmhVfeeOeDT7745od/BvsCDDLEMCOMMsY4v5lgkimmmWGWOeZZYJEllllhlTXW2WCTLbbZYZc99vnDAYccccwJp5xxzgWXXHHNDbfccc8DjzzxzAuvvPHOB5988c3Pn4HOv/9LgEGGGGaEUcYY5zcTTDLFNDPMMsc8CyyyxDIrrLLGOhtsssU2O+yyxz5/OOCQI4454ZQzzrngkiuuueGWO+554JEnnnnhlTfe+eCTL7754dc/+CXAIEMMM8IoY4zzmwkmmWKaGWaZY54FFllimRVWWWOdDTbZYpsddtljnz8ccMgRx5xwyhnnXHDJFdfccMsd9zzwyBPPvPDKG+988MkX3/zw6//7JcAgQwwzwihjjPObCSaZYpoZZpljngUWWWKZFVZZY50NNtlimx122WOfPxxwyBHHnHDKGedccMkV19xwyx33PPDIE8+88Mob73zwyRff/PDPQH+AQYYYZoRRxhjnNxNMMsU0M8wyxzwLLLLEMiusssY6G2yyxTY77LLHPn844JAjjjnhlDPOueCSK6654ZY77nngkSeeeeGVN9754JMvvvn5s8jxD38JMMgQw4wwyhjj/GaCSaaYZoZZ5phngUWWWGaFVdZYZ4NNtthmh1322OcPBxxyxDEnnHLGORdccsU1N9xyxz0PPPLEMy+88sY7H3zyxTc//PpHvwQYZIhhRhhljHF+M8EkU0wzwyxzzLPAIksss8Iqa6yzwSZbbLPDLnvs84cDDjnimBNOOeOcCy654pobbrnjngceeeKZF155450PPvnimx9+/eNfAgwyxDAjjDLGOL+ZYJIppplhljnmWWCRJZZZYZU11tlgky222WGXPfb5wwGHHHHMCaeccc4Fl1xxzQ233HHPA4888cwLr7zxzgeffPHND/8s8gUYZIhhRhhljHF+M8EkU0wzwyxzzLPAIksss8Iqa6yzwSZbbLPDLnvs84cDDjnimBNOOeOcCy654pobbrnjngceeeKZF155450PPvnim58/C5z/5JcAgwwxzAijjDHObyaYZIppZphljnkWWGSJZVZYZY11Nthki2122GWPff5wwCFHHHPCKWecc8ElV1xzwy133PPAI08888Irb7zzwSdffPPDr3/6S4BBhhhmhFHGGOc3E0wyxTQzzDLHPAssssQyK6yyxjobbLLFNjvsssc+fzjgkCOOOeGUM8654JIrrrnhljvueeCRJ5554ZU33vngky+++eHXP/slwCBDDDPCKGOM85sJJplimhlmmWOeBRZZYpkVVlljnQ022WKbHXbZY58/HHDIEceccMoZ51xwyRXX3HDLHfc88MgTz7zwyhvvfPDJF9/88M8Cf4BBhhhmhFHGGOc3E0wyxTQzzDLHPAssssQyK6yyxjobbLLFNjvsssc+fzjgkCOOOeGUM8654JIrrrnhljvueeCRJ5554ZU33vngky+++eHXP/8lwCBDDDPCKGOM85sJJplimhlmmWOeBRZZYpkVVlljnQ022WKbHXbZY58/HHDIEceccMoZ51xwyRXX3HDLHfc88MgTz7zwyhvvfPDJF9/88Otf/BJgkCGGGWGUMcb5zQSTTDHNDLPMMc8CiyyxzAqrrLHOBptssc0Ou+yxzx8OOOSIY0445YxzLrjkimtuuOWOex545IlnXnjljXc++OSLb3749S9/CTDIEMOMMMoY4/xmgkmmmGaGWeaYZ4FFllhmhVXWWGeDTbbYZodd9tjnDwcccsQxJ5xyxjkXXHLFNTfccsc9DzzyxDMvvPLGOx988sU3P/wT3BNgkCGGGWGUMcb5zQSTTDHNDLPMMc8CiyyxzAqrrLHOBptssc0Ou+yxzx8OOOSIY0445YxzLrjkimtuuOWOex545IlnXnjljXc++OSLb3749a9+CTDIEMOMMMoY4/xmgkmmmGaGWeaYZ4FFllhmhVXWWGeDTbbYZodd9tjnDwcccsQxJ5xyxjkXXHLFNTfccsc9DzzyxDMvvPLGOx988sU3P/z6178EGGSIYUYYZYxxfjPBJFNMM8Msc8yzwCJLLLPCKmuss8EmW2yzwy577POHAw454pgTTjnjnAsuueKaG265454HHnnimRdeeeOdDz754psffv2bXwIMMsQwI4wyxji/mWCSKaaZYZY55llgkSWWWWGVNdbZYJMtttlhlz32+cMBhxxxzAmnnHHOBZdccc0Nt9xxzwOPPPHMC6+88c4Hn3zxzQ//BPYFGGSIYUYYZYxxfjPBJFNMM8Msc8yzwCJLLLPCKmuss8EmW2yzwy577POHAw454pgTTjnjnAsuueKaG265454HHnnimRdeeeOdDz754psffv3bXwIMMsQwI4wyxji/mWCSKaaZYZY55llgkSWWWWGVNdbZYJMtttlhlz32+cMBhxxxzAmnnHHOBZdccc0Nt9xxzwOPPPHMC6+88c4Hn3zxzQ+//t0vAQYZYpgRRhljnN9MMMkU08wwyxzzLLDIEsussMoa62ywyRbb7LDLHvv84YBDjjjmhFPOOOeCS6645oZb7rjngUeeeOaFV95454NPvvjmh1///pcAgwwxzAijjDHObyaYZIppZphljnkWWGSJZVZYZY11Nthki2122GWPff5wwCFHHHPCKWecc8ElV1xzwy133PPAI08888Irb7zzwSdffPPDP0G9AQYZYpgRRhljnN9MMMkU08wwyxzzLLDIEsussMoa62ywyRbb7LDLHvv84YBDjjjmhFPOOOeCS6645oZb7rjngUeeeOaFV95454NPvvjmh1//4ZcAgwwxzAijjDHObyaYZIppZphljnkWWGSJZVZYZY11Nthki2122GWPff5wwCFHHHPCKWecc8ElV1xzwy133PPAI08888Irb7zzwSdffPPDr//4S4BBhhhmhFHGGOc3E0wyxTQzzDLHPAssssQyK6yyxjobbLLFNjvsssc+fzjgkCOOOeGUM8654JIrrrnhljvueeCRJ5554ZU33vngky+++eHXf/olwCBDDDPCKGOM85sJJplimhlmmWOeBRZZYpkVVlljnQ022WKbHXbZY58/HHDIEceccMoZ51xwyRXX3HDLHfc88MgTz7zwyhvvfPDJF9/88E9Af4BBhhhmhFHGGOc3E0wyxTQzzDLHPAssssQyK6yyxjobbLLFNjvsssc+fzjgkCOOOeGUM8654JIrrrnhljvueeCRJ5554ZU33vngky+++eHX//9LgEGGGGaEUcYY5zcTTDLFNDPMMsc8CyyyxDIrrLLGOhtsssU2O+yyxz5/OOCQI4454ZQzzrngkiuuueGWO+554JEnnnnhlTfe+eCTL7754dd//iXAIEMMM8IoY4zzmwkmmWKaGWaZY54FFllimRVWWWOdDTbZYpsddtljnz8ccMgRx5xwyhnnXHDJFdfccMsd9zzwyBPPvPDKG+988MkX3/zw67/8EmCQIYYZYZQxxvnNBJNMMc0Ms8wxzwKLLLHMCqussc4Gm2yxzQ677LHPHw445IhjTjjljHMuuOSKa2645Y57HnjkiWdeeOWNdz745ItvfvjnME+AQYYYZoRRxhjnNxNMMsU0M8wyxzwLLLLEMiusssY6G2yyxTY77LLHPn844JAjjjnhlDPOueCSK6654ZY77nngkSeeeeGVN9754JMvvvnh13/9JcAgQwwzwihjjPObCSaZYpoZZpljngUWWWKZFVZZY50NNtlimx122WOfPxxwyBHHnHDKGedccMkV19xwyx33PPDIE8+88Mob73zwyRff/PDrv/0SYJAhhhlhlDHG+c0Ek0wxzQyzzDHPAossscwKq6yxzgabbLHNDrvssc8fDjjkiGNOOOWMcy645IprbrjljnseeOSJZ1545Y13Pvjki29++PXffwkwyBDDjDDKGOP8ZoJJpphmhlnmmGeBRZZYZoVV1lhng0222GaHXfbY5w8HHHLEMSeccsY5F1xyxTU33HLHPQ888sQzL7zyxjsffPLFNz/8c5AvwCBDDDPCKGOM85sJJplimhlmmWOeBRZZYpkVVlljnQ022WKbHXbZY58/HHDIEceccMoZ51xwyRXX3HDLHfc88MgTz7zwyhvvfPDJF9/88Ot//BJgkCGGGWGUMcb5zQSTTDHNDLPMMc8CiyyxzAqrrLHOBptssc0Ou+yxzx8OOOSIY0445YxzLrjkimtuuOWOex545IlnXnjljXc++OSLb3749T9/CTDIEMOMMMoY4/xmgkmmmGaGWeaYZ4FFllhmhVXWWGeDTbbYZodd9tjnDwcccsQxJ5xyxjkXXHLFNTfccsc9DzzyxDMvvPLGOx988sU3P/z6X78EGGSIYUYYZYxxfjPBJFNMM8Msc8yzwCJLLLPCKmuss8EmW2yzwy577POHAw454pgTTjnjnAsuueKaG265454HHnnimRdeeeOdDz754psf/jnEG2CQIYYZYZQxxvnNBJNMMc0Ms8wxzwKLLLHMCqussc4Gm2yxzQ677LHPHw445IhjTjjljHMuuOSKa2645Y57HnjkiWdeeOWNdz745Itvfvj1v38JMMgQw4wwyhjj/GaCSaaYZoZZ5phngUWWWGaFVdZYZ4NNtthmh1322OcPBxxyxDEnnHLGORdccsU1N9xyxz0PPPLEMy+88sY7H3zyxTc//Po/vwQYZIhhRhhljHF+M8EkU0wzwyxzzLPAIksss8Iqa6yzwSZbbLPDLnvs84cDDjnimBNOOeOcCy654pobbrnjngceeeKZF155450PPvnimx9+/d9fAgwyxDAjjDLGOL+ZYJIppplhljnmWWCRJZZZYZU11tlgky222WGXPfb5wwGHHHHMCaeccc4Fl1xxzQ233HHPA4888cwLr7zxzgeffPHND79yv/w/dLzYyHicLcUhuAEAACBmQRAEQRAEQRAEQRAEd7OdbbbZZnd2ZzvbbLPNNtvczW7uThCEFwRBEARBEARBEARBEF4QBEEQBEEQhBf2ffP/5Q8WAv+/kMOOOOqY40446ZTTzjjrnPMuuOiSy6646prrbrjpltvuuOue+x546JF/PPbEU88898JLr7z2xlvvvPfBR5/867Mvvvrmux9++uW3P/5z4B98CzrksCOOOua4E0465bQzzjrnvAsuuuSyK6665robbrrltjvuuue+Bx565B+PPfHUM8+98NIrr73x1jvvffDRJ//67Iuvvvnuh59++e2P/xz4h9+CDjnsiKOOOe6Ek0457YyzzjnvgosuueyKq6657oabbrntjrvuue+Bhx75x2NPPPXMcy+89Mprb7z1znsffPTJvz774qtvvvvhp19+++M/B/6db0GHHHbEUcccd8JJp5x2xlnnnHfBRZdcdsVV11x3w0233HbHXffc98BDj/zjsSeeeua5F1565bU33nrnvQ8++uRfn33x1Tff/fDTL7/98Z8DxW9Bhxx2xFHHHHfCSaecdsZZ55x3wUWXXHbFVddcd8NNt9x2x1333PfAQ4/847EnnnrmuRdeeuW1N956570PPvrkX5998dU33/3w0y+//fGfA//ut6BDDjviqGOOO+GkU04746xzzrvgoksuu+Kqa6674aZbbrvjrnvue+ChR/7x2BNPPfPcCy+98tobb73z3gcfffKvz7746pvvfvjpl9/++M+Bf+9b0CGHHXHUMcedcNIpp51x1jnnXXDRJZddcdU1191w0y233XHXPfc98NAj/3jsiaeeee6Fl1557Y233nnvg48++ddnX3z1zXc//PTLb3/858A/+hZ0yGFHHHXMcSecdMppZ5x1znkXXHTJZVdcdc11N9x0y2133HXPfQ889Mg/HnviqWeee+GlV15746133vvgo0/+9dkXX33z3Q8//fLbH/85UPoWdMhhRxx1zHEnnHTKaWecdc55F1x0yWVXXHXNdTfcdMttd9x1z30PPPTIPx574qlnnnvhpVdee+Otd9774KNP/vXZF199890PP/3y2x//OfDvfws65LAjjjrmuBNOOuW0M84657wLLrrksiuuuua6G2665bY77rrnvgceeuQfjz3x1DPPvfDSK6+98dY7733w0Sf/+uyLr7757oeffvntj/8c+A++BR1y2BFHHXPcCSedctoZZ51z3gUXXXLZFVddc90NN91y2x133XPfAw898o/HnnjqmedeeOmV19546533Pvjok3999sVX33z3w0+//PbHfw78h9+CDjnsiKOOOe6Ek0457YyzzjnvgosuueyKq6657oabbrntjrvuue+Bhx75x2NPPPXMcy+89Mprb7z1znsffPTJvz774qtvvvvhp19+++M/B8rfgg457IijjjnuhJNOOe2Ms84574KLLrnsiquuue6Gm2657Y677rnvgYce+cdjTzz1zHMvvPTKa2+89c57H3z0yb8+++Krb7774adffvvjPwf+o29Bhxx2xFHHHHfCSaecdsZZ55x3wUWXXHbFVddcd8NNt9x2x1333PfAQ4/847EnnnrmuRdeeuW1N956570PPvrkX5998dU33/3w0y+//fGfA//xt6BDDjviqGOOO+GkU04746xzzrvgoksuu+Kqa6674aZbbrvjrnvue+ChR/7x2BNPPfPcCy+98tobb73z3gcfffKvz7746pvvfvjpl9/++M+B/+Rb0CGHHXHUMcedcNIpp51x1jnnXXDRJZddcdU1191w0y233XHXPfc98NAj/3jsiaeeee6Fl1557Y233nnvg48++ddnX3z1zXc//PTLb3/850DlW9Ahhx1x1DHHnXDSKaedcdY5511w0SWXXXHVNdfdcNMtt91x1z33PfDQI/947ImnnnnuhZdeee2Nt95574OPPvnXZ1989c13P/z0y29//OfAf/ot6JDDjjjqmONOOOmU084465zzLrjoksuuuOqa62646Zbb7rjrnvseeOiRfzz2xFPPPPfCS6+89sZb77z3wUef/OuzL7765rsffvrltz/+c+A/+xZ0yGFHHHXMcSecdMppZ5x1znkXXHTJZVdcdc11N9x0y2133HXPfQ889Mg/HnviqWeee+GlV15746133vvgo0/+9dkXX33z3Q8//fLbH/858J9/CzrksCOOOua4E0465bQzzjrnvAsuuuSyK6665robbrrltjvuuue+Bx565B+PPfHUM8+98NIrr73x1jvvffDRJ//67Iuvvvnuh59++e2P/xyofgs65LAjjjrmuBNOOuW0M84657wLLrrksiuuuua6G2665bY77rrnvgceeuQfjz3x1DPPvfDSK6+98dY7733w0Sf/+uyLr7757oeffvntj/8c+C++BR1y2BFHHXPcCSedctoZZ51z3gUXXXLZFVddc90NN91y2x133XPfAw898o/HnnjqmedeeOmV19546533Pvjok3999sVX33z3w0+//PbHfw78429Bhxx2xFHHHHfCSaecdsZZ55x3wUWXXHbFVddcd8NNt9x2x1333PfAQ4/847EnnnrmuRdeeuW1N956570PPvrkX5998dU33/3w0y+//fGfA//kW9Ahhx1x1DHHnXDSKaedcdY5511w0SWXXXHVNdfdcNMtt91x1z33PfDQI/947ImnnnnuhZdeee2Nt95574OPPvnXZ1989c13P/z0y29//OdA7VvQIYcdcdQxx51w0imnnXHWOeddcNEll11x1TXX3XDTLbfdcdc99z3w0CP/eOyJp5557oWXXnntjbfeee+Djz7512dffPXNdz/89Mtvf/znwH/5LeiQw4446pjjTjjplNPOOOuc8y646JLLrrjqmutuuOmW2+646577HnjokX889sRTzzz3wkuvvPbGW++898FHn/zrsy+++ua7H3765bc//nPgn34LOuSwI4465rgTTjrltDPOOue8Cy665LIrrrrmuhtuuuW2O+66574HHnrkH4898dQzz73w0iuvvfHWO+998NEn//rsi6+++e6Hn3757Y//HPhn34IOOeyIo4457oSTTjntjLPOOe+Ciy657Iqrrrnuhptuue2Ou+6574GHHvnHY0889cxzL7z0ymtvvPXOex989Mm/Pvviq2++++GnX3774z8H6t+CDjnsiKOOOe6Ek0457YyzzjnvgosuueyKq6657oabbrntjrvuue+Bhx75x2NPPPXMcy+89Mprb7z1znsffPTJvz774qtvvvvhp19+++M/B/6rb0GHHHbEUcccd8JJp5x2xlnnnHfBRZdcdsVV11x3w0233HbHXffc98BDj/zjsSeeeua5F1565bU33nrnvQ8++uRfn33x1Tff/fDTL7/98Z8D//W3oEMOO+KoY4474aRTTjvjrHPOu+CiSy674qprrrvhpltuu+Oue+574KFH/vHYE08989wLL73y2htvvfPeBx998q/Pvvjqm+9++OmX3/74z4F//i3okMOOOOqY40446ZTTzjjrnPMuuOiSy6646prrbrjpltvuuOue+x546JF/PPbEU88898JLr7z2xlvvvPfBR5/867Mvvvrmux9++uW3P/5zoPEt6JDDjjjqmONOOOmU084465zzLrjoksuuuOqa62646Zbb7rjrnvseeOiRfzz2xFPPPPfCS6+89sZb77z3wUef/OuzL7765rsffvrltz/+c+C/+RZ0yGFHHHXMcSecdMppZ5x1znkXXHTJZVdcdc11N9x0y2133HXPfQ889Mg/HnviqWeee+GlV15746133vvgo0/+9dkXX33z3Q8//fLbH/858N9+CzrksCOOOua4E0465bQzzjrnvAsuuuSyK6665robbrrltjvuuue+Bx565B+PPfHUM8+98NIrr73x1jvvffDRJ//67Iuvvvnuh59++e2P/xz4774FHXLYEUcdc9wJJ51y2hlnnXPeBRddctkVV11z3Q033XLbHXfdc98DDz3yj8eeeOqZ51546ZXX3njrnfc++OiTf332xVfffPfDT7/89sd/DjS/BR1y2BFHHXPcCSedctoZZ51z3gUXXXLZFVddc90NN91y2x133XPfAw898o/HnnjqmedeeOmV19546533Pvjok3999sVX33z3w0+//PbHfw7899+CDjnsiKOOOe6Ek0457YyzzjnvgosuueyKq6657oabbrntjrvuue+Bhx75x2NPPPXMcy+89Mprb7z1znsffPTJvz774qtvvvvhp19+++M/B/6Hb0GHHHbEUcccd8JJp5x2xlnnnHfBRZdcdsVV11x3w0233HbHXffc98BDj/zjsSeeeua5F1565bU33nrnvQ8++uRfn33x1Tff/fDTL7/98Z8D/+O3oEMOO+KoY4474aRTTjvjrHPOu+CiSy674qprrrvhpltuu+Oue+574KFH/vHYE08989wLL73y2htvvfPeBx998q/Pvvjqm+9++OmX3/74z4HWt6BDDjviqGOOO+GkU04746xzzrvgoksuu+Kqa6674aZbbrvjrnvue+ChR/7x2BNPPfPcCy+98tobb73z3gcfffKvz7746pvvfvjpl9/++M+B/+lb0CGHHXHUMcedcNIpp51x1jnnXXDRJZddcdU1191w0y233XHXPfc98NAj/3jsiaeeee6Fl1557Y233nnvg48++ddnX3z1zXc//PTLb3/858D//C3okMOOOOqY40446ZTTzjjrnPMuuOiSy6646prrbrjpltvuuOue+x546JF/PPbEU88898JLr7z2xlvvvPfBR5/867Mvvvrmux9++uW3P/5z4H/5FnTIYUccdcxxJ5x0ymlnnHXOeRdcdMllV1x1zXU33HTLbXfcdc99Dzz0yD8ee+KpZ5574aVXXnvjrXfe++CjT/712RdfffPdDz/98tsf/znQ/hZ0yGFHHHXMcSecdMppZ5x1znkXXHTJZVdcdc11N9x0y2133HXPfQ889Mg/HnviqWeee+GlV15746133vvgo0/+9dkXX33z3Q8//fLbH/858L9+CzrksCOOOua4E0465bQzzjrnvAsuuuSyK6665robbrrltjvuuue+Bx565B+PPfHUM8+98NIrr73x1jvvffDRJ//67Iuvvvnuh59++e2P/xz4374FHXLYEUcdc9wJJ51y2hlnnXPeBRddctkVV11z3Q033XLbHXfdc98DDz3yj8eeeOqZ51546ZXX3njrnfc++OiTf332xVfffPfDT7/89sd/Dvzv34IOOeyIo4457oSTTjntjLPOOe+Ciy657Iqrrrnuhptuue2Ou+6574GHHvnHY0889cxzL7z0ymtvvPXOex989Mm/Pvviq2++++GnX3774z8HOt+CDjnsiKOOOe6Ek0457YyzzjnvgosuueyKq6657oabbrntjrvuue+Bhx75x2NPPPXMcy+89Mprb7z1znsffPTJvz774qtvvvvhp19+++M/B/6Pb0GHHHbEUcccd8JJp5x2xlnnnHfBRZdcdsVV11x3w0233HbHXffc98BDj/zjsSeeeua5F1565bU33nrnvQ8++uRfn33x1Tff/fDTL7/98Z8D/+e3oEMOO+KoY4474aRTTjvjrHPOu+CiSy674qprrrvhpltuu+Oue+574KFH/vHYE08989wLL73y2htvvfPeBx998q/Pvvjqm+9++OmX3/74z4H/61vQIYcdcdQxx51w0imnnXHWOeddcNEll11x1TXX3XDTLbfdcdc99z3w0CP/eOyJp5557oWXXnntjbfeee+Djz7512dffPXNdz/89Mtvf/znQPdb0CGHHXHUMcedcNIpp51x1jnnXXDRJZddcdU1191w0y233XHXPfc98NAj/3jsiaeeee6Fl1557Y233nnvg48++ddnX3z1zXc//PTLb3/858C/+BZ0yGFHHHXMcSecdMppZ5x1znkXXHTJZVdcdc11N9x0y2133HXPfQ889Mg/HnviqWeee+GlV15746133vvgo0/+9dkXX33z3Q8//fLbH/858C+/BR1y2BFHHXPcCSedctoZZ51z3gUXXXLZFVddc90NN91y2x133XPfAw898o/HnnjqmedeeOmV19546533Pvjok3999sVX33z3w0+//PbHfw7839+CDjnsiKOOOe6Ek0457YyzzjnvgosuueyKq6657oabbrntjrvuue+Bhx75x2NPPPXMcy+89Mprb7z1znsffPTJvz774qtvvvvhp19+++M/B3rfgg457IijjjnuhJNOOe2Ms84574KLLrnsiquuue6Gm2657Y677rnvgYce+cdjTzz1zHMvvPTKa2+89c57H3z0yb8+++Krb7774adffvvjPwf+n29Bhxx2xFHHHHfCSaecdsZZ55x3wUWXXHbFVddcd8NNt9x2x1333PfAQ4/847EnnnrmuRdeeuW1N956570PPvrkX5998dU33/3w0y+//fGfA//qW9Ahhx1x1DHHnXDSKaedcdY5511w0SWXXXHVNdfdcNMtt91x1z33PfDQI/947ImnnnnuhZdeee2Nt95574OPPvnXZ1989c13P/z0y29//OfA//st6JDDjjjqmONOOOmU084465zzLrjoksuuuOqa62646Zbb7rjrnvseeOiRfzz2xFPPPPfCS6+89sZb77z3wUef/OuzL7765rsffvrltz/+c6D/LeiQw4446pjjTjjplNPOOOuc8y646JLLrrjqmutuuOmW2+646577HnjokX889sRTzzz3wkuvvPbGW++898FHn/zrsy+++ua7H3765bc//nPgX38LOuSwI4465rgTTjrltDPOOue8Cy665LIrrrrmuhtuuuW2O+66574HHnrkH4898dQzz73w0iuvvfHWO+998NEn//rsi6+++e6Hn3757Y//HPg334IOOeyIo4457oSTTjntjLPOOe+Ciy657Iqrrrnuhptuue2Ou+6574GHHvnHY0889cxzL7z0ymtvvPXOex989Mm/Pvviq2++++GnX3774z8H/u23oEMOO+KoY4474aRTTjvjrHPOu+CiSy674qprrrvhpltuu+Oue+574KFH/vHYE08989wLL73y2htvvfPeBx998q/Pvvjqm+9++OmX3/74z4HBt/8PdlHZBHicLcUhuAEAACBmQRAEQXhBEARBEARBEARBEARBEARBEARBsJu7s80222yzzTa7s5vtbOfubLPN3QRBEF4QBEEQhBcEQRD2ffP/5Q/2A/+/kMOOOOofxxx3wkmnnHbGWeecd8FFl1x2xVXXXHfDTbfcdsdd99z3wEOPPPbEU88898JLr7z2xlvvvPfBR5/867Mvvvrmux/+89Mvv/1x4N/5FnTIYUcc9Y9jjjvhpFNOO+Osc8674KJLLrviqmuuu+GmW26746577nvgoUcee+KpZ5574aVXXnvjrXfe++CjT/712RdfffPdD//56Zff/jjwD74FHXLYEUf945jjTjjplNPOOOuc8y646JLLrrjqmutuuOmW2+646577HnjokceeeOqZ51546ZXX3njrnfc++OiTf332xVfffPfDf3765bc/Dvy734IOOeyIo/5xzHEnnHTKaWecdc55F1x0yWVXXHXNdTfcdMttd9x1z30PPPTIY0889cxzL7z0ymtvvPXOex989Mm/Pvviq2++++E/P/3y2x8HBt+CDjnsiKP+ccxxJ5x0ymlnnHXOeRdcdMllV1x1zXU33HTLbXfcdc99Dzz0yGNPPPXMcy+89Mprb7z1znsffPTJvz774qtvvvvhPz/98tsfB/7ht6BDDjviqH8cc9wJJ51y2hlnnXPeBRddctkVV11z3Q033XLbHXfdc98DDz3y2BNPPfPcCy+98tobb73z3gcfffKvz7746pvvfvjPT7/89seBf/Qt6JDDjjjqH8ccd8JJp5x2xlnnnHfBRZdcdsVV11x3w0233HbHXffc98BDjzz2xFPPPPfCS6+89sZb77z3wUef/OuzL7765rsf/vPTL7/9ceAffws65LAjjvrHMcedcNIpp51x1jnnXXDRJZddcdU1191w0y233XHXPfc98NAjjz3x1DPPvfDSK6+98dY7733w0Sf/+uyLr7757of//PTLb38cGH4LOuSwI476xzHHnXDSKaedcdY5511w0SWXXXHVNdfdcNMtt91x1z33PfDQI4898dQzz73w0iuvvfHWO+998NEn//rsi6+++e6H//z0y29/HPj3vgUdctgRR/3jmONOOOmU084465zzLrjoksuuuOqa62646Zbb7rjrnvseeOiRx5546pnnXnjpldfeeOud9z746JN/ffbFV99898N/fvrltz8O/Pvfgg457Iij/nHMcSecdMppZ5x1znkXXHTJZVdcdc11N9x0y2133HXPfQ889MhjTzz1zHMvvPTKa2+89c57H3z0yb8+++Krb7774T8//fLbHwf+g29Bhxx2xFH/OOa4E0465bQzzjrnvAsuuuSyK6665robbrrltjvuuue+Bx565LEnnnrmuRdeeuW1N956570PPvrkX5998dU33/3wn59++e2PA6NvQYccdsRR/zjmuBNOOuW0M84657wLLrrksiuuuua6G2665bY77rrnvgceeuSxJ5565rkXXnrltTfeeue9Dz765F+fffHVN9/98J+ffvntjwP/4begQw474qh/HHPcCSedctoZZ51z3gUXXXLZFVddc90NN91y2x133XPfAw898tgTTz3z3AsvvfLaG2+9894HH33yr8+++Oqb7374z0+//PbHgf/oW9Ahhx1x1D+OOe6Ek0457YyzzjnvgosuueyKq6657oabbrntjrvuue+Bhx557ImnnnnuhZdeee2Nt95574OPPvnXZ1989c13P/znp19+++PAf/wt6JDDjjjqH8ccd8JJp5x2xlnnnHfBRZdcdsVV11x3w0233HbHXffc98BDjzz2xFPPPPfCS6+89sZb77z3wUef/OuzL7765rsf/vPTL7/9cWD8LeiQw4446h/HHHfCSaecdsZZ55x3wUWXXHbFVddcd8NNt9x2x1333PfAQ4889sRTzzz3wkuvvPbGW++898FHn/zrsy+++ua7H/7z0y+//XHgP/kWdMhhRxz1j2OOO+GkU04746xzzrvgoksuu+Kqa6674aZbbrvjrnvue+ChRx574qlnnnvhpVdee+Otd9774KNP/vXZF199890P//npl9/+OPCffgs65LAjjvrHMcedcNIpp51x1jnnXXDRJZddcdU1191w0y233XHXPfc98NAjjz3x1DPPvfDSK6+98dY7733w0Sf/+uyLr7757of//PTLb38c+M++BR1y2BFH/eOY40446ZTTzjjrnPMuuOiSy6646prrbrjpltvuuOue+x546JHHnnjqmedeeOmV19546533Pvjok3999sVX33z3w39++uW3Pw5MvgUdctgRR/3jmONOOOmU084465zzLrjoksuuuOqa62646Zbb7rjrnvseeOiRx5546pnnXnjpldfeeOud9z746JN/ffbFV99898N/fvrltz8O/Offgg457Iij/nHMcSecdMppZ5x1znkXXHTJZVdcdc11N9x0y2133HXPfQ889MhjTzz1zHMvvPTKa2+89c57H3z0yb8+++Krb7774T8//fLbHwf+i29Bhxx2xFH/OOa4E0465bQzzjrnvAsuuuSyK6665robbrrltjvuuue+Bx565LEnnnrmuRdeeuW1N956570PPvrkX5998dU33/3wn59++e2PA//lt6BDDjviqH8cc9wJJ51y2hlnnXPeBRddctkVV11z3Q033XLbHXfdc98DDz3y2BNPPfPcCy+98tobb73z3gcfffKvz7746pvvfvjPT7/89seB6begQw474qh/HHPcCSedctoZZ51z3gUXXXLZFVddc90NN91y2x133XPfAw898tgTTz3z3AsvvfLaG2+9894HH33yr8+++Oqb7374z0+//PbHgf/qW9Ahhx1x1D+OOe6Ek0457YyzzjnvgosuueyKq6657oabbrntjrvuue+Bhx557ImnnnnuhZdeee2Nt95574OPPvnXZ1989c13P/znp19+++PAf/0t6JDDjjjqH8ccd8JJp5x2xlnnnHfBRZdcdsVV11x3w0233HbHXffc98BDjzz2xFPPPPfCS6+89sZb77z3wUef/OuzL7765rsf/vPTL7/9ceC/+RZ0yGFHHPWPY4474aRTTjvjrHPOu+CiSy674qprrrvhpltuu+Oue+574KFHHnviqWeee+GlV15746133vvgo0/+9dkXX33z3Q//+emX3/44MPsWdMhhRxz1j2OOO+GkU04746xzzrvgoksuu+Kqa6674aZbbrvjrnvue+ChRx574qlnnnvhpVdee+Otd9774KNP/vXZF199890P//npl9/+OPDffgs65LAjjvrHMcedcNIpp51x1jnnXXDRJZddcdU1191w0y233XHXPfc98NAjjz3x1DPPvfDSK6+98dY7733w0Sf/+uyLr7757of//PTLb38c+O++BR1y2BFH/eOY40446ZTTzjjrnPMuuOiSy6646prrbrjpltvuuOue+x546JHHnnjqmedeeOmV19546533Pvjok3999sVX33z3w39++uW3Pw7899+CDjnsiKP+ccxxJ5x0ymlnnHXOeRdcdMllV1x1zXU33HTLbXfcdc99Dzz0yGNPPPXMcy+89Mprb7z1znsffPTJvz774qtvvvvhPz/98tsfB+bfgg457Iij/nHMcSecdMppZ5x1znkXXHTJZVdcdc11N9x0y2133HXPfQ889MhjTzz1zHMvvPTKa2+89c57H3z0yb8+++Krb7774T8//fLbHwf+h29Bhxx2xFH/OOa4E0465bQzzjrnvAsuuuSyK6665robbrrltjvuuue+Bx565LEnnnrmuRdeeuW1N956570PPvrkX5998dU33/3wn59++e2PA//kW9Ahhx1x1D+OOe6Ek0457YyzzjnvgosuueyKq6657oabbrntjrvuue+Bhx557ImnnnnuhZdeee2Nt95574OPPvnXZ1989c13P/znp19+++PAP/0WdMhhRxz1j2OOO+GkU04746xzzrvgoksuu+Kqa6674aZbbrvjrnvue+ChRx574qlnnnvhpVdee+Otd9774KNP/vXZF199890P//npl9/+OLD4FnTIYUcc9Y9jjjvhpFNOO+Osc8674KJLLrviqmuuu+GmW26746577nvgoUcee+KpZ5574aVXXnvjrXfe++CjT/712RdfffPdD//56Zff/jjwP34LOuSwI476xzHHnXDSKaedcdY5511w0SWXXXHVNdfdcNMtt91x1z33PfDQI4898dQzz73w0iuvvfHWO+998NEn//rsi6+++e6H//z0y29/HPhn34IOOeyIo/5xzHEnnHTKaWecdc55F1x0yWVXXHXNdTfcdMttd9x1z30PPPTIY0889cxzL7z0ymtvvPXOex989Mm/Pvviq2++++E/P/3y2x8H/qdvQYccdsRR/zjmuBNOOuW0M84657wLLrrksiuuuua6G2665bY77rrnvgceeuSxJ5565rkXXnrltTfeeue9Dz765F+fffHVN9/98J+ffvntjwPLb0GHHHbEUf845rgTTjrltDPOOue8Cy665LIrrrrmuhtuuuW2O+66574HHnrksSeeeua5F1565bU33nrnvQ8++uRfn33x1Tff/fCfn3757Y8D//O3oEMOO+Kofxxz3AknnXLaGWedc94FF11y2RVXXXPdDTfdctsdd91z3wMPPfLYE08989wLL73y2htvvfPeBx998q/Pvvjqm+9++M9Pv/z2x4H/5VvQIYcdcdQ/jjnuhJNOOe2Ms84574KLLrnsiquuue6Gm2657Y677rnvgYceeeyJp5557oWXXnntjbfeee+Djz7512dffPXNdz/856dffvvjwD//FnTIYUcc9Y9jjjvhpFNOO+Osc8674KJLLrviqmuuu+GmW26746577nvgoUcee+KpZ5574aVXXnvjrXfe++CjT/712RdfffPdD//56Zff/jiw+hZ0yGFHHPWPY4474aRTTjvjrHPOu+CiSy674qprrrvhpltuu+Oue+574KFHHnviqWeee+GlV15746133vvgo0/+9dkXX33z3Q//+emX3/448L9+CzrksCOO+scxx51w0imnnXHWOeddcNEll11x1TXX3XDTLbfdcdc99z3w0COPPfHUM8+98NIrr73x1jvvffDRJ//67Iuvvvnuh//89Mtvfxz4374FHXLYEUf945jjTjjplNPOOOuc8y646JLLrrjqmutuuOmW2+646577HnjokceeeOqZ51546ZXX3njrnfc++OiTf332xVfffPfDf3765bc/DvyLb0GHHHbEUf845rgTTjrltDPOOue8Cy665LIrrrrmuhtuuuW2O+66574HHnrksSeeeua5F1565bU33nrnvQ8++uRfn33x1Tff/fCfn3757Y8D629Bhxx2xFH/OOa4E0465bQzzjrnvAsuuuSyK6665robbrrltjvuuue+Bx565LEnnnrmuRdeeuW1N956570PPvrkX5998dU33/3wn59++e2PA//yW9Ahhx1x1D+OOe6Ek0457YyzzjnvgosuueyKq6657oabbrntjrvuue+Bhx557ImnnnnuhZdeee2Nt95574OPPvnXZ1989c13P/znp19+++PAv/oWdMhhRxz1j2OOO+GkU04746xzzrvgoksuu+Kqa6674aZbbrvjrnvue+ChRx574qlnnnvhpVdee+Otd9774KNP/vXZF199890P//npl9/+OPCvvwUdctgRR/3jmONOOOmU084465zzLrjoksuuuOqa62646Zbb7rjrnvseeOiRx5546pnnXnjpldfeeOud9z746JN/ffbFV99898N/fvrltz8ObL4FHXLYEUf945jjTjjplNPOOOuc8y646JLLrrjqmutuuOmW2+646577HnjokceeeOqZ51546ZXX3njrnfc++OiTf332xVfffPfDf3765bc/Dvzv34IOOeyIo/5xzHEnnHTKaWecdc55F1x0yWVXXHXNdTfcdMttd9x1z30PPPTIY0889cxzL7z0ymtvvPXOex989Mm/Pvviq2++++E/P/3y2x8H/o9vQYccdsRR/zjmuBNOOuW0M84657wLLrrksiuuuua6G2665bY77rrnvgceeuSxJ5565rkXXnrltTfeeue9Dz765F+fffHVN9/98J+ffvntjwP/57egQw474qh/HHPcCSedctoZZ51z3gUXXXLZFVddc90NN91y2x133XPfAw898tgTTz3z3AsvvfLaG2+9894HH33yr8+++Oqb7374z0+//PbHge23oEMOO+Kofxxz3AknnXLaGWedc94FF11y2RVXXXPdDTfdctsdd91z3wMPPfLYE08989wLL73y2htvvfPeBx998q/Pvvjqm+9++M9Pv/z2x4H/61vQIYcdcdQ/jjnuhJNOOe2Ms84574KLLrnsiquuue6Gm2657Y677rnvgYceeeyJp5557oWXXnntjbfeee+Djz7512dffPXNdz/856dffvvjwP/9LeiQw4446h/HHHfCSaecdsZZ55x3wUWXXHbFVddcd8NNt9x2x1333PfAQ4889sRTzzz3wkuvvPbGW++898FHn/zrsy+++ua7H/7z0y+//XHg//kWdMhhRxz1j2OOO+GkU04746xzzrvgoksuu+Kqa6674aZbbrvjrnvue+ChRx574qlnnnvhpVdee+Otd9774KNP/vXZF199890P//npl9/+OLD7FnTIYUcc9Y9jjjvhpFNOO+Osc8674KJLLrviqmuuu+GmW26746577nvgoUcee+KpZ5574aVXXnvjrXfe++CjT/712RdfffPdD//56Zff/jjwb74FHXLYEUf945jjTjjplNPOOOuc8y646JLLrrjqmutuuOmW2+646577HnjokceeeOqZ51546ZXX3njrnfc++OiTf332xVfffPfDf3765bc/Dvzbb0GHHHbEUf845rgTTjrltDPOOue8Cy665LIrrrrmuhtuuuW2O+66574HHnrksSeeeua5F1565bU33nrnvQ8++uRfn33x1Tff/fCfn3757Y8D/++3oEMOO+Kofxxz3AknnXLaGWedc94FF11y2RVXXXPdDTfdctsdd91z3wMPPfLYE08989wLL73y2htvvfPeBx998q/Pvvjqm+9++M9Pv/z2x4H9t/8Pd+bZQHicLcUv2AEAAOBnex5BEARBEARBEARBEARBEAThC8IXBEEQBEEQBEEQBEEQBEEQBEFwN9tss83dbLOd29zNNtu5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EsussMof1vjLOhtsssU2O+yyxz4HHHLEMSeccsY5F1xyxTU33HLHPQ888sQzL7zyxjsffPLFNz/8MvB//hFkiGFGGGWMcSaYZIppZphljnkWWGSJZVZY5Q9r/GWdDTbZYpsddtljnwMOOeKYE04545wLLrnimhtuueOeBx554pkXXnnjnQ8++eKbH34Z+PwRZIhhRhhljHEmmGSKaWaYZY55FlhkiWVWWOUPa/xlnQ022WKbHXbZY58DDjnimBNOOeOcCy654pobbrnjngceeeKZF155450PPvnimx9+GfjXfwQZYpgRRhljnAkmmWKaGWaZY54FFllimRVW+cMaf1lng0222GaHXfbY54BDjjjmhFPOOOeCS6645oZb7rjngUeeeOaFV95454NPvvjmh18G/q8/ggwxzAijjDHOBJNMMc0Ms8wxzwKLLLHMCqv8YY2/rLPBJltss8Mue+xzwCFHHHPCKWecc8ElV1xzwy133PPAI08888Irb7zzwSdffPPDLwP/9x9BhhhmhFHGGGeCSaaYZoZZ5phngUWWWGaFVf6wxl/W2WCTLbbZYZc99jngkCOOOeGUM8654JIrrrnhljvueeCRJ5554ZU33vngky+++eGXge8fQYYYZoRRxhhngkmmmGaGWeaYZ4FFllhmhVX+sMZf1tlgky222WGXPfY54JAjjjnhlDPOueCSK6654ZY77nngkSeeeeGVN9754JMvvvnhl4H/548gQwwzwihjjDPBJFNMM8Msc8yzwCJLLLPCKn9Y4y/rbLDJFtvssMse+xxwyBHHnHDKGedccMkV19xwyx33PPDIE8+88Mob73zwyRff/PDLwP/7R5AhhhlhlDHGmWCSKaaZYZY55llgkSWWWWGVP6zxl3U22GSLbXbYZY99DjjkiGNOOOWMcy645IprbrjljnseeOSJZ1545Y13Pvjki29++GXg//sjyBDDjDDKGONMMMkU08wwyxzzLLDIEsussMof1vjLOhtsssU2O+yyxz4HHHLEMSeccsY5F1xyxTU33HLHPQ888sQzL7zyxjsffPLFNz/8MhD4t/7N/39ygdh9eJwt1yETAgCXllFWPxUVlVVUVFR0UVFRUVFRUQkEAoFAIBAIBAKBQCAQCAQCgUAgEAgEAoFAIBAIBAKBQCAQCAQCgUAgEFz9zi3nBzwz78z9Q+BPAv/v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IYYZYZQxxplgkimmmWGWOeZZYJEllllhlTXW2WCTLbbZYZc99jngkCOOOeGUM8654JIrrrnhljvueeCRJ5554ZU33vngky+++eGXPwb+vv4MMsQwI4wyxjgTTDLFNDPMMsc8CyyyxDIrrLLGOhtsssU2O+yyxz4HHHLEMSeccsY5F1xyxTU33HLHPQ888sQzL7zyxjsffPLFNz/88sdAVH8GGWKYEUYZY5wJJplimhlmmWOeBRZZYpkVVlljnQ022WKbHXbZY58DDjnimBNOOeOcCy654pobbrnjngceeeKZF155450PPvnimx9++WPgH+jPIEMMM8IoY4wzwSRTTDPDLHPMs8AiSyyzwiprrLPBJltss8Mue+xzwCFHHHPCKWecc8ElV1xzwy133PPAI08888Irb7zzwSdffPPDL38M/EP9GWSIYUYYZYxxJphkimlmmGWOeRZYZIllVlhljXU22GSLbXbYZY99DjjkiGNOOOWMcy645IprbrjljnseeOSJZ1545Y13Pvjki29++OWPgX+kP4MMMcwIo4wxzgSTTDHNDLPMMc8CiyyxzAqrrLHOBptssc0Ou+yxzwGHHHHMCaeccc4Fl1xxzQ233HHPA4888cwLr7zxzgeffPHND7/8MRDTn0GGGGaEUcYYZ4JJpphmhlnmmGeBRZZYZoVV1lhng0222GaHXfbY54BDjjjmhFPOOOeCS6645oZb7rjngUeeeOaFV95454NPvvjmh1/+GPjH+jPIEMOMMMoY40wwyRTTzDDLHPMssMgSy6ywyhrrbLDJFtvssMse+xxwyBHHnHDKGedccMkV19xwyx33PPDIE8+88Mob73zwyRff/PDLHwP/RH8GGWKYEUYZY5wJJplimhlmmWOeBRZZYpkVVlljnQ022WKbHXbZY58DDjnimBNOOeOcCy654pobbrnjngceeeKZF155450PPvnimx9++WPgn+rPIEMMM8IoY4wzwSRTTDPDLHPMs8AiSyyzwiprrLPBJltss8Mue+xzwCFHHHPCKWecc8ElV1xzwy133PPAI08888Irb7zzwSdffPPDL38MxPVnkCGGGWGUMcaZYJIppplhljnmWWCRJZZZYZU11tlgky222WGXPfY54JAjjjnhlDPOueCSK6654ZY77nngkSeeeeGVN9754JMvvvnhlz8G/pn+DDLEMCOM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GWaZY54FFllimRVWWWOdDTbZYpsddtljnwMOOeKYE04545wLLrnimhtuueOeBx554pkXXnnjnQ8++eKbH375YyCrP4MMMcwIo4wxzgSTTDHNDLPMMc8CiyyxzAqrrLHOBptssc0Ou+yxzwGHHHHMCaeccc4Fl1xxzQ233HHPA4888cwLr7zxzgeffPHND7/8MfDf9WeQIYYZYZQxxplgkimmmWGWOeZZYJEllllhlTXW2WCTLbbZYZc99jngkCOOOeGUM8654JIrrrnhljvueeCRJ5554ZU33vngky+++eGXPwb+h/4MMsQwI4wyxjgTTDLFNDPMMsc8CyyyxDIrrLLGOhtsssU2O+yyxz4HHHLEMSeccsY5F1xyxTU33HLHPQ888sQzL7zyxjsffPLFNz/88sfA/9SfQYYYZoRRxhhngkmmmGaGWeaYZ4FFllhmhVXWWGeDTbbYZodd9tjngEOOOOaEU84454JLrrjmhlvuuOeBR5545oVX3njng0+++OaHX/4YyOnPIEMMM8IoY4wzwSRTTDPDLHPMs8AiSyyzwiprrLPBJltss8Mue+xzwCFHHHPCKWecc8ElV1xzwy133PPAI08888Irb7zzwSdffPPDL38M/C/9GWSIYUYYZYxxJphkimlmmGWOeRZYZIllVlhljXU22GSLbXbYZY99DjjkiGNOOOWMcy645IprbrjljnseeOSJZ1545Y13Pvjki29++OWPgf+tP4MMMcwIo4wxzgSTTDHNDLPMMc8CiyyxzAqrrLHOBptssc0Ou+yxzwGHHHHMCaeccc4Fl1xxzQ233HHPA4888cwLr7zxzgeffPHND7/8MfB/9GeQIYYZYZQxxplgkimmmWGWOeZZYJEllllhlTXW2WCTLbbZYZc99jngkCOOOeGUM8654JIrrrnhljvueeCRJ5554ZU33vngky+++eGXPwbyf/T/AtC86Mh4nC3RoRcBAIDYYXvvgiAIgiAIgiAIgiDYZpttdrOb3dlmm2222WZ3ttmd22wTBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEHY27vvV74/4PcH+b8W+P8FGWKYEUYZY5wJJplimhlmmWOeBRZZYpkVVlljnQ022WKbHXbZY58DDjnimBNOOeOcCy654pobbrnjngceeeKZF155450PPvnimx9++WPgr/+Vf8AgQwwzwihjjDPBJFNMM8Msc8yzwCJLLLPCKmuss8EmW2yzwy577HPAIUccc8IpZ5xzwSVXXHPDLXfc88AjTzzzwitvvPPBJ19888Mvfwz8Df8ZZIhhRhhljHEmmGSKaWaYZY55FlhkiWVWWGWNdTbYZIttdthlj30OOOSIY0445YxzLrjkimtuuOWOex545IlnXnjljXc++OSLb3745Y+Bv+k/gwwxzAijjDHOBJNMMc0Ms8wxzwKLLLHMCqussc4Gm2yxzQ677LHPAYccccwJp5xxzgWXXHHNDbfccc8DjzzxzAuvvPHOB5988c0Pv/wxUPCfQYYYZoRRxhhngkmmmGaGWeaYZ4FFllhmhVXWWGeDTbbYZodd9tjngEOOOOaEU84454JLrrjmhlvuuOeBR5545oVX3njng0+++OaHX/4Y+Fv+M8gQw4wwyhjjTDDJFNPMMMsc8yywyBLLrLDKGutssMkW2+ywyx77HHDIEceccMoZ51xwyRXX3HDLHfc88MgTz7zwyhvvfPDJF9/88MsfA3/bfwYZYpgRRhljnAkmmWKaGWaZY54FFllimRVWWWOdDTbZYpsddtljnwMOOeKYE04545wLLrnimhtuueOeBx554pkXXnnjnQ8++eKbH375Y+Dv+M8gQwwzwihjjDPBJFNMM8Msc8yzwCJLLLPCKmuss8EmW2yzwy577HPAIUccc8IpZ5xzwSVXXHPDLXfc88AjTzzzwitvvPPBJ19888MvfwwU/WeQIYYZYZQxxplgkimmmWGWOeZZYJEllllhlTXW2WCTLbbZYZc99jngkCOOOeGUM8654JIrrrnhljvueeCRJ5554ZU33vngky+++eGXPwb+rv8MMsQwI4wyxjgTTDLFNDPMMsc8CyyyxDIrrLLGOhtsssU2O+yyxz4HHHLEMSeccsY5F1xyxTU33HLHPQ888sQzL7zyxjsffPLFNz/88sfA3/OfQYYYZoRRxhhngkmmmGaGWeaYZ4FFllhmhVXWWGeDTbbYZodd9tjngEOOOOaEU84454JLrrjmhlvuuOeBR5545oVX3njng0+++OaHX/4Y+Pv+M8gQw4wwyhjjTDDJFNPMMMsc8yywyBLLrLDKGutssMkW2+ywyx77HHDIEceccMoZ51xwyRXX3HDLHfc88MgTz7zwyhvvfPDJF9/88MsfAyX/GWSIYUYYZYxxJphkimlmmGWOeRZYZIllVlhljXU22GSLbXbYZY99DjjkiGNOOOWMcy645IprbrjljnseeOSJZ1545Y13Pvjki29++OWPgX/gP4MMMcwIo4wxzgSTTDHNDLPMMc8CiyyxzAqrrLHOBptssc0Ou+yxzwGHHHHMCaeccc4Fl1xxzQ233HHPA4888cwLr7zxzgeffPHND7/8MfCH/jPIEMOMMMoY40wwyRTTzDDLHPMssMgSy6ywyhrrbLDJFtvssMse+xxwyBHHnHDKGedccMkV19xwyx33PPDIE8+88Mob73zwyRff/PDLHwP/0H8GGWKYEUYZY5wJJplimhlmmWOeBRZZYpkVVlljnQ022WKbHXbZY58DDjnimBNOOeOcCy654pobbrnjngceeeKZF155450PPvnimx9++WOg7D+DDDHMCKOMMc4Ek0wxzQyzzDHPAossscwKq6yxzgabbLHNDrvssc8BhxxxzAmnnHHOBZdccc0Nt9xxzwOPPPHMC6+88c4Hn3zxzQ+//DHwj/xnkCGGGWGUMcaZYJIppplhljnmWWCRJZZZYZU11tlgky222WGXPfY54JAjjjnhlDPOueCSK6654ZY77nngkSeeeeGVN9754JMvvvnhlz8G/sh/BhlimBFGGWOcCSaZYpoZZpljngUWWWKZFVZZY50NNtlimx122WOfAw454pgTTjnjnAsuueKaG265454HHnnimRdeeeOdDz754psffvlj4B/7zyBDDDPCKGOMM8EkU0wzwyxzzLPAIksss8Iqa6yzwSZbbLPDLnvsc8AhRxxzwilnnHPBJVdcc8Mtd9zzwCNPPPPCK2+888EnX3zzwy9/DFT8Z5AhhhlhlDHGmWCSKaaZYZY55llgkSWWWWGVNdbZYJMtttlhlz32OeCQI4454ZQzzrngkiuuueGWO+554JEnnnnhlTfe+eCTL7754Zc/Bv6J/wwyxDAjjDLGOBNMMsU0M8wyxzwLLLLEMiusssY6G2yyxTY77LLHPgcccsQxJ5xyxjkXXHLFNTfccsc9DzzyxDMvvPLGOx988sU3P/zyx8Af+88gQwwzwihjjDPBJFNMM8Msc8yzwCJLLLPCKmuss8EmW2yzwy577HPAIUccc8IpZ5xzwSVXXHPDLXfc88AjTzzzwitvvPPBJ19888Mvfwz8if8MMsQwI4wyxjgTTDLFNDPMMsc8CyyyxDIrrLLGOhtsssU2O+yyxz4HHHLEMSeccsY5F1xyxTU33HLHPQ888sQzL7zyxjsffPLFNz/88sdA1X8GGWKYEUYZY5wJJplimhlmmWOeBRZZYpkVVlljnQ022WKbHXbZY58DDjnimBNOOeOcCy654pobbrnjngceeeKZF155450PPvnimx9++WPgn/rPIEMMM8IoY4wzwSRTTDPDLHPMs8AiSyyzwiprrLPBJltss8Mue+xzwCFHHHPCKWecc8ElV1xzwy133PPAI08888Irb7zzwSdffPPDL38M/DP/GWSIYUYYZYxxJphkimlmmGWOeRZYZIllVlhljXU22GSLbXbYZY99DjjkiGNOOOWMcy645IprbrjljnseeOSJZ1545Y13Pvjki29++OWPgX/uP4MMMcwIo4wxzgSTTDHNDLPMMc8CiyyxzAqrrLHOBptssc0Ou+yxzwGHHHHMCaeccc4Fl1xxzQ233HHPA4888cwLr7zxzgeffPHND7/8MVDzn0GGGGaEUcYYZ4JJpphmhlnmmGeBRZZYZoVV1lhng0222GaHXfbY54BDjjjmhFPOOOeCS6645oZb7rjngUeeeOaFV95454NPvvjmh1/+GPgX/jPIEMOMMMoY40wwyRTTzDDLHPMssMgSy6ywyhrrbLDJFtvssMse+xxwyBHHnHDKGedccMkV19xwyx33PPDIE8+88Mob73zwyRff/PDLHwP/0n8GGWKYEUYZY5wJJplimhlmmWOeBRZZYpkVVlljnQ022WKbHXbZY58DDjnimBNOOeOcCy654pobbrnjngceeeKZF155450PPvnimx9++WPgX/nPIEMMM8IoY4wzwSRTTDPDLHPMs8AiSyyzwiprrLPBJltss8Mue+xzwCFHHHPCKWecc8ElV1xzwy133PPAI08888Irb7zzwSdffPPDL38M1P1nkCGGGWGUMcaZYJIppplhljnmWWCRJZZZYZU11tlgky222WGXPfY54JAjjjnhlDPOueCSK6654ZY77nngkSeeeeGVN9754JMvvvnhlz8G/rX/DDLEMCOMMsY4E0wyxTQzzDLHPAssssQyK6yyxjobbLLFNjvsssc+BxxyxDEnnHLGORdccsU1N9xyxz0PPPLEMy+88sY7H3zyxTc//PLHwL/xn0GGGGaEUcYYZ4JJpphmhlnmmGeBRZZYZoVV1lhng0222GaHXfbY54BDjjjmhFPOOOeCS6645oZb7rjngUeeeOaFV95454NPvvjmh1/+GPi3/jPIEMOMMMoY40wwyRTTzDDLHPMssMgSy6ywyhrrbLDJFtvssMse+xxwyBHHnHDKGedccMkV19xwyx33PPDIE8+88Mob73zwyRff/PDLHwMN/xlkiGFGGGWMcSaYZIppZphljnkWWGSJZVZYZY11Nthki2122GWPfQ445IhjTjjljHMuuOSKa2645Y57HnjkiWdeeOWNdz745Itvfvjlj4F/5z+DDDHMCKOMMc4Ek0wxzQyzzDHPAossscwKq6yxzgabbLHNDrvssc8BhxxxzAmnnHHOBZdccc0Nt9xxzwOPPPHMC6+88c4Hn3zxzQ+//DHw7/1nkCGGGWGUMcaZYJIppplhljnmWWCRJZZZYZU11tlgky222WGXPfY54JAjjjnhlDPOueCSK6654ZY77nngkSeeeeGVN9754JMvvvnhlz8G/oP/DDLEMCOMMsY4E0wyxTQzzDLHPAssssQyK6yyxjobbLLFNjvsssc+BxxyxDEnnHLGORdccsU1N9xyxz0PPPLEMy+88sY7H3zyxTc//PLHQNN/BhlimBFGGWOcCSaZYpoZZpljngUWWWKZFVZZY50NNtlimx122WOfAw454pgTTjnjnAsuueKaG265454HHnnimRdeeeOdDz754psffvlj4D/6zyBDDDPCKGOMM8EkU0wzwyxzzLPAIksss8Iqa6yzwSZbbLPDLnvsc8AhRxxzwilnnHPBJVdcc8Mtd9zzwCNPPPPCK2+888EnX3zzwy9/DPwn/xlkiGFGGGWMcSaYZIppZphljnkWWGSJZVZYZY11Nthki2122GWPfQ445IhjTjjljHMuuOSKa2645Y57HnjkiWdeeOWNdz745Itvfvjlj4H/7D+DDDHMCKOMMc4Ek0wxzQyzzDHPAossscwKq6yxzgabbLHNDrvssc8BhxxxzAmnnHHOBZdccc0Nt9xxzwOPPPHMC6+88c4Hn3zxzQ+//DHQ8p9BhhhmhFHGGGeCSaaYZoZZ5phngUWWWGaFVdZYZ4NNtthmh1322OeAQ4445oRTzjjngkuuuOaGW+6454FHnnjmhVfeeOeDT7745odf/hj4L/4zyBDDjDDKGONMMMkU08wwyxzzLLDIEsus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YpsddtljnwMOOeKYE04545wLLrnimhtuueOeBx554pkXXnnjnQ8++eKbH375Y+Cf+s8gQwwzwihjjDPBJFNMM8Msc8yzwCJLLLPCKmuss8EmW2yzwy577HPAIUccc8IpZ5xzwSVXXHPDLXfc88AjTzzzwitvvPPBJ19888Mvfwz8M/8ZZIhhRhhljHEmmGSKaWaYZY55FlhkiWVWWGWNdTbYZIttdthlj30OOOSIY0445YxzLrjkimtuuOWOex545IlnXnjljXc++OSLb3745Y+Bf+4/gwwxzAijjDHOBJNMMc0Ms8wxzwKLLLHMCqussc4Gm2yxzQ677LHPAYccccwJp5xxzgWXXHHNDbfccc8DjzzxzAuvvPHOB5988c0Pv/wxMPOfQYYYZoRRxhhngkmmmGaGWeaYZ4FFllhmhVXWWGeDTbbYZodd9tjngEOOOOaEU84454JLrrjmhlvuuOeBR5545oVX3njng0+++OaHX/4Y+Bf+M8gQw4wwyhjjTDDJFNPMMMsc8yywyBLLrLDKGutssMkW2+ywyx77HHDIEceccMoZ51xwyRXX3HDLHfc88MgTz7zwyhvvfPDJF9/88MsfA3/qP4MMMcwIo4wxzgSTTDHNDLPMMc8CiyyxzAqrrLHOBptssc0Ou+yxzwGHHHHMCaeccc4Fl1xxzQ233HHPA4888cwLr7zxzgeffPHND7/8MfAv/WeQIYYZYZQxxplgkimmmWGWOeZZYJEllllhlTXW2WCTLbbZYZc99jngkCOOOeGUM8654JIrrrnhljvueeCRJ5554ZU33vngky+++eGXPwbm/jPIEMOMMMoY40wwyRTTzDDLHPMssMgSy6ywyhrrbLDJFtvssMse+xxwyBHHnHDKGedccMkV19xwyx33PPDIE8+88Mob73zwyRff/PDLHwP/yn8GGWKYEUYZY5wJJplimhlmmWOeBRZZYpkVVlljnQ022WKbHXbZY58DDjnimBNOOeOcCy654pobbrnjngceeeKZF155450PPvnimx9++WPgX/vPIEMMM8IoY4wzwSRTTDPDLHPMs8AiSyyzwiprrLPBJltss8Mue+xzwCFHHHPCKWecc8ElV1xzwy133PPAI08888Irb7zzwSdffPPDL38M/Bv/GWSIYUYYZYxxJphkimlmmGWOeRZYZIllVlhljXU22GSLbXbYZY99DjjkiGNOOOWMcy645IprbrjljnseeOSJZ1545Y13Pvjki29++OWPgYX/DDLEMCOMMsY4E0wyxTQzzDLHPAssssQyK6yyxjobbLLFNjvsssc+BxxyxDEnnHLGORdccsU1N9xyxz0PPPLEMy+88sY7H3zyxTc//PLHwL/1n0GGGGaEUcYYZ4JJpphmhlnmmGeBRZZYZoVV1lhng0222GaHXfbY54BDjjjmhFPOOOeCS6645oZb7rjngUeeeOaFV95454NPvvjmh1/+GPh3/jPIEMOMMMoY40wwyRTTzDDLHPMssMgSy6ywyhrrbLDJFtvssMse+xxwyBHHnHDKGedccMkV19xwyx33PPDIE8+88Mob73zwyRff/PDLHwP/3n8GGWKYEUYZY5wJJplimhlmmWOeBRZZYpkVVlljnQ022WKbHXbZY58DDjnimBNOOeOcCy654pobbrnjngceeeKZF155450PPvnimx9++WNg6T+DDDHMCKOMMc4Ek0wxzQyzzDHPAossscwKq6yxzgabbLHNDrvssc8BhxxxzAmnnHHOBZdccc0Nt9xxzwOPPPHMC6+88c4Hn3zxzQ+//DHwH/xnkCGGGWGUMcaZYJIppplhljnmWWCRJZZZYZU11tlgky222WGXPfY54JAjjjnhlDPOueCSK6654ZY77nngkSeeeeGVN9754JMvvvnhlz8G/qP/DDLEMCOMMsY4E0wyxTQzzDLHPAssssQyK6yyxjobbLLFNjvsssc+BxxyxDEnnHLGORdccsU1N9xyxz0PPPLEMy+88sY7H3zyxTc//PLHwH/yn0GGGGaEUcYYZ4JJpphmhlnmmGeBRZZYZoVV1lhng0222GaHXfbY54BDjjjmhFPOOOeCS6645oZb7rjngUeeeOaFV95454NPvvjmh1/+GFj5zyBDDDPCKGOMM8EkU0wzwyxzzLPAIksss8Iqa6yzwSZbbLPDLnvsc8AhRxxzwilnnHPBJVdcc8Mtd9zzwCNPPPPCK2+888EnX3zzwy9/DPxn/xlkiGFGGGWMcSaYZIppZphljnkWWGSJZVZYZY11Nthki2122GWPfQ445IhjTjjljHMuuOSKa2645Y57HnjkiWdeeOWNdz745Itvfvjlj4H/4j+DDDHMCKOMMc4Ek0wxzQyzzDHPAossscwKq6yxzgabbLHNDrvssc8BhxxxzAmnnHHOBZdccc0Nt9xxzwOPPPHMC6+88c4Hn3zxzQ+//DHwX/1nkCGGGWGUMcaZYJIppplhljnmWWCRJZZZYZU11tlgky222WGXPfY54JAjjjnhlDPOueCSK6654ZY77nngkSeeeeGVN9754JMvvvnhlz8G1v4zyBDDjDDKGONMMMkU08wwyxzzLLDIEsussMoa62ywyRbb7LDLHvsccMgRx5xwyhnnXHDJFdfccMsd9zzwyBPPvPDKG+988MkX3/zwyx8Df+Y/gwwxzAijjDHOBJNMMc0Ms8wxzwKLLLHMCqussc4Gm2yxzQ677LHPAYccccwJp5xxzgWXXHHNDbfccc8DjzzxzAuvvPHOB5988c0Pv/wx8N/8Z5AhhhlhlDHGmWCSKaaZYZY55llgkSWWWWGVNdbZYJMtttlhlz32OeCQI4454ZQzzrngkiuuueGWO+554JEnnnnhlTfe+eCTL7754Zc/Bv67/wwyxDAjjDLGOBNMMsU0M8wyxzwLLLLEMiusssY6G2yyxTY77LLHPgcccsQxJ5xyxjkXXHLFNTfccsc9DzzyxDMvvPLGOx988sU3P/zyx8DGfwYZYpgRRhljnAkmmWKaGWaZY54FFllimRVWWWOdDTbZYpsddtljnwMOOeKYE04545wLLrnimhtuueOeBx554pkXXnnjnQ8++eKbH375Y+B/+M8gQwwzwihjjDPBJFNMM8Msc8yzwCJLLLPCKmuss8EmW2yzwy577HPAIUccc8IpZ5xzwSVXXHPDLXfc88AjTzzzwitvvPPBJ19888Mvfwz8T/8ZZIhhRhhljHEmmGSKaWaYZY55FlhkiWVWWGWNdTbYZIttdthlj30OOOSIY0445YxzLrjkimtuuOWOex545IlnXnjljXc++OSLb3745Y+B/+U/gwwxzAijjDHOBJNMMc0Ms8wxzwKLLLHMCqussc4Gm2yxzQ677LHPAYccccwJp5xxzgWXXHHNDbfccc8DjzzxzAuvvPHOB5988c0Pv/wxsPWfQYYYZoRRxhhngkmmmGaGWeaYZ4FFllhmhVXWWGeDTbbYZodd9tjngEOOOOaEU84454JLrrjmhlvuuOeBR5545oVX3njng0+++OaHX/4Y+N/+M8gQw4wwyhjjTDDJFNPMMMsc8yywyBLLrLDKGutssMkW2+ywyx77HHDIEceccMoZ51xwyRXX3HDLHfc88MgTz7zwyhvvfPDJF9/88MsfA3/uP4MMMcwIo4wxzgSTTDHNDLPMMc8CiyyxzAqrrLHOBptssc0Ou+yxzwGHHHHMCaeccc4Fl1xxzQ233HHPA4888cwLr7zxzgeffPHND7/8MfAX/jPIEMOMMMoY40wwyRTTzDDLHPMssMgSy6ywyhrrbLDJFtvssMse+xxwyBHHnHDKGedccMkV19xwyx33PPDIE8+88Mob73zwyRff/PDLHwM7/xlkiGFGGGWMcSaYZIppZphljnkWWGSJZVZYZY11Nthki2122GWPfQ445IhjTjjljHMuuOSKa2645Y57HnjkiWdeeOWNdz745Itvfvjlj4G/9J9BhhhmhFHGGGeCSaaYZoZZ5phngUWWWGaFVdZYZ4NNtthmh1322OeAQ4445oRTzjjngkuuuOaGW+6454FHnnjmhVfeeOeDT7745odf/hj4P/4zyBDDjDDKGONMMMkU08wwyxzzLLDIEsussMoa62ywyRbb7LDLHvsccMgRx5xwyhnnXHDJFdfccMsd9zzwyBPPvPDKG+988MkX3/zwyx8D/9d/BhlimBFGGWOcCSaZYpoZZpljngUWWWKZFVZZY50NNtlimx122WOfAw454pgTTjnjnAsuueKaG265454HHnnimRdeeeOdDz754psffvljYP9X/j/T5ulAeJwt0a8fAQCA3mG3zwVBEARBEARBEARBEARBEARBEARBEARBEARBEARBEARBEARBsM0229zNNttss80227nNbbZzm23247PtecP7/AHfP9z/QeD/LsgQw4wwyhjjTDDJFNPMMMsc8yywyBLLrLDKGutssMkW2+ywyx77HHDIEceccMoZ51xwyRXX3HDLHfc88MgTz7zwyhvvfPDJF9/88MsfA3/5//uHDDLEMCOMMsY4E0wyxTQzzDLHPAssssQyK6yyxjobbLLFNjvsssc+BxxyxDEnnHLGORdccsU1N9xyxz0PPPLEMy+88sY7H3zyxTc//PLHwF/Rn0GGGGaEUcYYZ4JJpphmhlnmmGeBRZZYZoVV1lhng0222GaHXfbY54BDjjjmhFPOOOeCS6645oZb7rjngUeeeOaFV95454NPvvjmh1/+GPir+jPIEMOMMMoY40wwyRTTzDDLHPMssMgSy6ywyhrrbLDJFtvssMse+xxwyBHHnHDKGedccMkV19xwyx33PPDIE8+88Mob73zwyRff/PDLHwMH/RlkiGFGGGWMcSaYZIppZphljnkWWGSJZVZYZY11Nthki2122GWPfQ445IhjTjjljHMuuOSKa2645Y57HnjkiWdeeOWNdz745Itvfvjlj4G/pj+DDDHMCKOMMc4Ek0wxzQyzzDHPAossscwKq6yxzgabbLHNDrvssc8BhxxxzAmnnHHOBZdccc0Nt9xxzwOPPPHMC6+88c4Hn3zxzQ+//DHw1/VnkCGGGWGUMcaZYJIppplhljnmWWCRJZZZYZU11tlgky222WGXPfY54JAjjjnhlDPOueCSK6654ZY77nngkSeeeeGVN9754JMvvvnhlz8G/ob+DDLEMCOMMsY4E0wyxTQzzDLHPAssssQyK6yyxjobbLLFNjvsssc+BxxyxDEnnHLGORdccsU1N9xyxz0PPPLEMy+88sY7H3zyxTc//PLHwFF/BhlimBFGGWOcCSaZYpoZZpljngUWWWKZFVZZY50NNtlimx122WOfAw454pgTTjnjnAsuueKaG265454HHnnimRdeeeOdDz754psffvlj4G/qzyBDDDPCKGOMM8EkU0wzwyxzzLPAIksss8Iqa6yzwSZbbLPDLnvsc8AhRxxzwilnnHPBJVdcc8Mtd9zzwCNPPPPCK2+888EnX3zzwy9/DPwt/RlkiGFGGGWMcSaYZIppZphljnkWWGSJZVZYZY11Nthki2122GWPfQ445IhjTjjljHMuuOSKa2645Y57HnjkiWdeeOWNdz745Itvfvjlj4G/rT+DDDHMCKOMMc4Ek0wxzQyzzDHPAossscwKq6yxzgabbLHNDrvssc8BhxxxzAmnnHHOBZdccc0Nt9xxzwOPPPHMC6+88c4Hn3zxzQ+//DFw0p9BhhhmhFHGGGeCSaaYZoZZ5phngUWWWGaFVdZYZ4NNtthmh1322OeAQ4445oRTzjjngkuuuOaGW+6454FHnnjmhVfeeOeDT7745odf/hj4I/0ZZIhhRhhljHEmmGSKaWaYZY55FlhkiWVWWGWNdTbYZIttdthlj30OOOSIY0445YxzLrjkimtuuOWOex545IlnXnjljXc++OSLb3745Y+BP9afQYYYZoRRxhhngkmmmGaGWeaYZ4FFllhmhVXWWGeDTbbYZodd9tjngEOOOOaEU84454JLrrjmhlvuuOeBR5545oVX3njng0+++OaHX/4Y+Dv6M8gQw4wwyhjjTDDJFNPMMMsc8yywyBLLrLDKGutssMkW2+ywyx77HHDIEceccMoZ51xwyRXX3HDLHfc88MgTz7zwyhvvfPDJF9/88MsfA2f9GWSIYUYYZYxxJphkimlmmGWOeRZYZIllVlhljXU22GSLbXbYZY99DjjkiGNOOOWMcy645IprbrjljnseeOSJZ1545Y13Pvjki29++OWPgb+rP4MMMcwIo4wxzgSTTDHNDLPMMc8CiyyxzAqrrLHOBptssc0Ou+yxzwGHHHHMCaeccc4Fl1xxzQ233HHPA4888cwLr7zxzgeffPHND7/8MfD39GeQIYYZYZQxxplgkimmmWGWOeZZYJEllllhlTXW2WCTLbbZYZc99jngkCOOOeGUM8654JIrrrnhljvueeCRJ5554ZU33vngky+++eGXPwb+vv4MMsQwI4wyxjgTTDLFNDPMMsc8CyyyxDIrrLLGOhtsssU2O+yyxz4HHHLEMSeccsY5F1xyxTU33HLHPQ888sQzL7zyxjsffPLFNz/88sfARX8GGWKYEUYZY5wJJplimhlmmWOeBRZZYpkVVlljnQ022WKbHXbZY58DDjnimBNOOeOcCy654pobbrnjngceeeKZF155450PPvnimx9++WPgH+jPIEMMM8IoY4wzwSRTTDPDLHPMs8AiSyyzwiprrLPBJltss8Mue+xzwCFHHHPCKWecc8ElV1xzwy133PPAI08888Irb7zzwSdffPPDL38M/EP9GWSIYUYYZYxxJphkimlmmGWOeRZYZIllVlhljXU22GSLbXbYZY99DjjkiGNOOOWMcy645IprbrjljnseeOSJZ1545Y13Pvjki29++OWPgX+kP4MMMcwIo4wxzgSTTDHNDLPMMc8CiyyxzAqrrLHOBptssc0Ou+yxzwGHHHHMCaeccc4Fl1xxzQ233HHPA4888cwLr7zxzgeffPHND7/8MXDVn0GGGGaEUcYYZ4JJpphmhlnmmGeBRZZYZoVV1lhng0222GaHXfbY54BDjjjmhFPOOOeCS6645oZb7rjngUeeeOaFV95454NPvvjmh1/+GPjH+jPIEMOMMMoY40wwyRTTzDDLHPMssMgSy6ywyhrrbLDJFtvssMse+xxwyBHHnHDKGedccMkV19xwyx33PPDIE8+88Mob73zwyRff/PDLHwP/RH8GGWKYEUYZY5wJJplimhlmmWOeBRZZYpkVVlljnQ022WKbHXbZY58DDjnimBNOOeOcCy654pobbrnjngceeeKZF155450PPvnimx9++WPgn+rPIEMMM8IoY4wzwSRTTDPDLHPMs8AiSyyzwiprrLPBJltss8Mue+xzwCFHHHPCKWecc8ElV1xzwy133PPAI08888Irb7zzwSdffPPDL38M3PRnkCGGGWGUMcaZYJIppplhljnmWWCRJZZZYZU11tlgky222WGXPfY54JAjjjnhlDPOueCSK6654ZY77nngkSeeeeGVN9754JMvvvnhlz8G/pn+DDLEMCOMMsY4E0wyxTQzzDLHPAssssQyK6yyxjobbLLFNjvsssc+BxxyxDEnnHLGORdccsU1N9xyxz0PPPLEMy+88sY7H3zyxTc//PLHwD/Xn0GGGGaEUcYYZ4JJpphmhlnmmGeBRZZYZoVV1lhng0222GaHXfbY54BDjjjmhFPOOOeCS6645oZb7rjngUeeeOaFV95454NPvvjmh1/+GPgX+jPIEMOMMMoY40wwyRTTzDDLHPMssMgSy6ywyhrrbLDJFtvssMse+xxwyBHHnHDKGedccMkV19xwyx33PPDIE8+88Mob73zwyRff/PDLHwN3/RlkiGFGGGWMcSaYZIppZphljnkWWGSJZVZYZY11Nthki2122GWPfQ445IhjTjjljHMuuOSKa2645Y57HnjkiWdeeOWNdz745Itvfvjlj4F/qT+DDDHMCKOMMc4Ek0wxzQyzzDHPAossscwKq6yxzgabbLHNDrvssc8BhxxxzAmnnHHOBZdccc0Nt9xxzwOPPPHMC6+88c4Hn3zxzQ+//DHwr/RnkCGGGWGUMcaZYJIppplhljnmWWCRJZZZYZU11tlgky222WGXPfY54JAjjjnhlDPOueCSK6654ZY77nngkSeeeeGVN9754JMvvvnhlz8G/rX+DDLEMCOMMsY4E0wyxTQzzDLHPAssssQyK6yyxjobbLLFNjvsssc+BxxyxDEnnHLGORdccsU1N9xyxz0PPPLEMy+88sY7H3zyxTc//PLHwEN/BhlimBFGGWOcCSaZYpoZZpljngUWWWKZFVZZY50NNtlimx122WOfAw454pgTTjnjnAsu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cy645IprbrjljnseeOSJZ1545Y13Pvjki29++OWPgb+kP4MMMcwIo4wxzgSTTDHNDLPMMc8CiyyxzAqrrLHOBptssc0Ou+yxzwGHHHHMCaeccc4Fl1xxzQ233HHPA4888cwLr7zxzgeffPHND7/8MfCX9WeQIYYZYZQxxplgkimmmWGWOeZZYJEllllhlTXW2WCTLbbZYZc99jngkCOOOeGUM8654JIrrrnhljvueeCRJ5554ZU33vngky+++eGXPwb+iv4MMsQwI4wyxjgTTDLFNDPMMsc8CyyyxDIrrLLGOhtsssU2O+yyxz4HHHLEMSeccsY5F1xyxTU33HLHPQ888sQzL7zyxjsffPLFNz/88sc/f/j/P39gkCGGGWGUMcaZYJIppplhljnmWWCRJZZZYZU11tlgky222WGXPfY54JAjjjnhlDPOueCSK6654ZY77nngkSeeeeGVN9754JMvvvnhlz8G/qr+DDLEMCOMMsY4E0wyxTQzzDLHPAssssQyK6yyxjobbLLFNjvsssc+BxxyxDEnnHLGORdccsU1N9xyxz0PPPLEMy+88sY7H3zyxTc//PLHwF/Tn0GGGGaEUcYYZ4JJpphmhlnmmGeBRZZYZoVV1lhng0222GaHXfbY54BDjjjmhFPOOOeCS6645oZb7rjngUeeeOaFV95454NPvvjmh1/+GPjr+jPIEMOMMMoY40wwyRTTzDDLHPMssMgSy6ywyhrrbLDJFtvssMse+xxwyBHHnHDKGedccMkV19xwyx33PPDIE8+88Mob73zwyRff/PDLHwMh/RlkiGFGGGWMcSaYZIppZphljnkWWGSJZVZYZY11Nthki2122GWPfQ445IhjTjjljHMuuOSKa2645Y57HnjkiWdeeOWNdz745Itvfvjlj4G/oT+DDDHMCKOMMc4Ek0wxzQyzzDHPAossscwKq6yxzgabbLHNDrvssc8BhxxxzAmnnHHOBZdccc0Nt9xxzwOPPPHMC6+88c4Hn3zxzQ+//DHwN/VnkCGGGWGUMcaZYJIppplhljnmWWCRJZZZYZU11tlgky222WGXPfY54JAjjjnhlDPOueCSK6654ZY77nngkSeeeeGVN9754JMvvvnhlz8G/pb+DDLEMCOMMsY4E0wyxTQzzDLHPAssssQyK6yyxjobbLLFNjvsssc+BxxyxDEnnHLGORdccsU1N9xyxz0PPPLEMy+88sY7H3zyxTc//PLHQFh/BhlimBFGGWOcCSaZYpoZZpljngUWWWKZFVZZY50NNtlimx122WOfAw454pgTTjnjnAsuueKaG265454HHnnimRdeeeOdDz754psffvlj4E/1Z5AhhhlhlDHGmWCSKaaZYZY55llgkSWWWWGVNdbZYJMtttlhlz32OeCQI4454ZQzzrngkiuuueGWO+554JEnnnnhlTfe+eCTL7754Zc/Bv62/gwyxDAjjDLGOBNMMsU0M8wyxzwLLLLEMiusssY6G2yyxTY77LLHPgcccsQxJ5xyxjkXXHLFNTfccsc9DzzyxDMvvPLGOx988sU3P/zyx8Df0Z9BhhhmhFHGGGeCSaaYZoZZ5phngUWWWGaFVdZYZ4NNtthmh1322OeAQ4445oRTzjjngkuuuOaGW+6454FHnnjmhVfeeOeDT7745odf/hiI6M8gQwwzwihjjDPBJFNMM8Msc8yzwCJLLLPCKmuss8EmW2yzwy577HPAIUccc8IpZ5xzwSVXXHPDLXfc88AjTzzzwitvvPPBJ19888Mvfwz8Xf0ZZIhhRhhljHEmmGSKaWaYZY55FlhkiWVWWGWNdTbYZIttdthlj30OOOSIY0445YxzLrjkimtuuOWOex545IlnXnjljXc++OSLb3745Y+Bv6c/gwwxzAijjDHOBJNMMc0Ms8wxzwKLLLHMCqussc4Gm2yxzQ677LHPAYccccwJp5xxzgWXXHHNDbfccc8DjzzxzAuvvPHOB5988c0Pv/wx8Pf1Z5AhhhlhlDHGmWCSKaaZYZY55llgkSWWWWGVNdbZYJMtttlhlz32OeCQI4454ZQzzrngkiuuueGWO+554JEnnnnhlTfe+eCTL7754Zc/BqL6M8gQw4wwyhjjTDDJFNPMMMsc8yywyBLLrLDKGutssMkW2+ywyx77HHDIEceccMoZ51xwyRXX3HDLHfc88MgTz7zwyhvvfPDJF9/88MsfA/9AfwYZYpgRRhljnAkmmWKaGWaZY54FFllimRVWWWOdDTbZYpsddtljnwMOOeKYE04545wLLrnimhtuueOeBx554pkXXnnjnQ8++eKbH375Y+Af6s8gQwwzwihjjDPBJFNMM8Msc8yzwCJLLLPCKmuss8EmW2yzwy577HPAIUccc8IpZ5xzwSVXXHPDLXfc88AjTzzzwitvvPPBJ19888Mvfwz8I/0ZZIhhRhhljHEmmGSKaWaYZY55FlhkiWVWWGWNdTbYZIttdthlj30OOOSIY0445YxzLrjkimtuuOWOex545IlnXnjljXc++OSLb3745Y+BmP4MMsQwI4wyxjgTTDLFNDPMMsc8CyyyxDIrrLLGOhtsssU2O+yyxz4HHHLEMSeccsY5F1xyxTU33HLHPQ888sQzL7zyxjsffPLFNz/88sfAP9afQYYYZoRRxhhngkmmmGaGWeaYZ4FFllhmhVXWWGeDTbbYZodd9tjngEOOOOaEU84454JLrrjmhlvuuOeBR5545oVX3njng0+++OaHX/4Y+Cf6M8gQw4wwyhjjTDDJFNPMMMsc8yywyBLLrLDKGutssMkW2+ywyx77HHDIEceccMoZ51xwyRXX3HDLHfc88MgTz7zwyhvvfPDJF9/88MsfA/9UfwYZYpgRRhljnAkmmWKaGWaZY54FFllimRVWWWOdDTbZYpsddtljnwMOOeKYE04545wLLrnimhtuueOeBx554pkXXnnjnQ8++eKbH375YyCuP4MMMcwIo4wxzgSTTDHNDLPMMc8CiyyxzAqrrLHOBptssc0Ou+yxzwGHHHHMCaeccc4Fl1xxzQ233HHPA4888cwLr7zxzgeffPHND7/8MfDP9GeQIYYZYZQxxplgkimmmWGWOeZZYJEllllhlTXW2WCTLbbZYZc99jngkCOOOeGUM8654JIrrrnhljvueeCRJ5554ZU33vngky+++eGXPwb+uf4MMsQwI4wyxjgTTDLFNDPMMsc8CyyyxDIrrLLGOhtsssU2O+yyxz4HHHLEMSeccsY5F1xyxTU33HLHPQ888sQzL7zyxjsffPLFNz/88sfAn+nPIEMMM8IoY4wzwSRTTDPDLHPMs8AiSyyzwiprrLPBJltss8Mue+xzwCFHHHPCKWecc8ElV1xzwy133PPAI08888Irb7zzwSdffPPDL38MJPRnkCGGGWGUMcaZYJIppplhljnmWWCRJZZZYZU11tlgky222WGXPfY54JAjjjnhlDPOueCSK6654ZY77nngkSeeeeGVN9754JMvvvnhlz8G/oX+DDLEMCOMMsY4E0wyxTQzzDLHPAssssQyK6yyxjobbLLFNjvsssc+BxxyxDEnnHLGORdccsU1N9xy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vPLGOx988sU3P/zyx0BOfwYZYpgRRhljnAkmmWKaGWaZY54FFllimRVWWWOdDTbZYpsddtljnwMOOeKYE04545wLLrnimhtuueOeBx554pkXXnnjnQ8++eKbH375Y+B/6c8gQwwzwihjjDPBJFNMM8Msc8yzwCJLLLPCKmuss8EmW2yzwy577HPAIUccc8IpZ5xzwSVXXHPDLXfc88AjTzzzwitvvPPBJ19888Mvfwz8b/0ZZIhhRhhljHEmmGSKaWaYZY55FlhkiWVWWGWNdTbYZIttdthlj30OOOSIY0445YxzLrjkimtuuOWOex545IlnXnjljXc++OSLb3745Y+B/6M/gwwxzAijjDHOBJNMMc0Ms8wxzwKLLLHMCqussc4Gm2yxzQ677LHPAYccccwJp5xxzgWXXHHNDbfccc8DjzzxzAuvvPHOB5988c0Pv/wxkP+j/xcsy/jIeJwt0aEXAQCA2GFv74IgCIIgCIIgCIIg2GabbXazm93ZZpttttlmd7bZndtsEwRBEARBEARBEARBEARBEARBEARBEARB2Nu771e+P+D3B/m/Fvj/BRlimBFGGWOcCSaZYpoZZpljngUWWWKZFVZZY50NNtlimx122WOfAw454pgTTjnjnAsuueKaG265454HHnnimRdeeeOdDz754psffvlj4K//lX/AIEMMM8IoY4wzwSRTTDPDLHPMs8AiSyyzwiprrLPBJltss8Mue+xzwCFHHHPCKWecc8ElV1xzwy133PPAI08888Irb7zzwSdffPPDL38M/A3/GWSIYUYYZYxxJphkimlmmGWOeRZYZIllVlhljXU22GSLbXbYZY99DjjkiGNOOOWMcy645IprbrjljnseeOSJZ1545Y13Pvjki29++OWPgb/pP4MMMcwIo4wxzgSTTDHNDLPMMc8CiyyxzAqrrLHOBptssc0Ou+yxzwGHHHHMCaeccc4Fl1xxzQ233HHPA4888cwLr7zxzgeffPHND7/8MVDwn0GGGGaEUcYYZ4JJpphmhlnmmGeBRZZYZoVV1lhng0222GaHXfbY54BDjjjmhFPOOOeCS6645oZb7rjngUeeeOaFV95454NPvvjmh1/+GPhb/jPIEMOMMMoY40wwyRTTzDDLHPMssMgSy6ywyhrrbLDJFtvssMse+xxwyBHHnHDKGedccMkV19xwyx33PPDIE8+88Mob73zwyRff/PDLHwN/238GGWKYEUYZY5wJJplimhlmmWOeBRZZYpkVVlljnQ022WKbHXbZY58DDjnimBNOOeOcCy654pobbrnjngceeeKZF155450PPvnimx9++WPg7/jPIEMMM8IoY4wzwSRTTDPDLHPMs8AiSyyzwiprrLPBJltss8Mue+xzwCFHHHPCKWecc8ElV1xzwy133PPAI08888Irb7zzwSdffPPDL38MFP1nkCGGGWGUMcaZYJIppplhljnmWWCRJZZZYZU11tlgky222WGXPfY54JAjjjnhlDPOueCSK6654ZY77nngkSeeeeGVN9754JMvvvnhlz8G/q7/DDLEMCOMMsY4E0wyxTQzzDLHPAssssQyK6yyxjobbLLFNjvsssc+BxxyxDEnnHLGORdccsU1N9xyxz0PPPLEMy+88sY7H3zyxTc//PLHwN/zn0GGGGaEUcYYZ4JJpphmhlnmmGeBRZZYZoVV1lhng0222GaHXfbY54BDjjjmhFPOOOeCS6645oZb7rjngUeeeOaFV95454NPvvjmh1/+GPj7/jPIEMOMMMoY40wwyRTTzDDLHPMssMgSy6ywyhrrbLDJFtvssMse+xxwyBHHnHDKGedccMkV19xwyx33PPDIE8+88Mob73zwyRff/PDLHwMl/xlkiGFGGGWMcSaYZIppZphljnkWWGSJZVZYZY11Nthki2122GWPfQ445IhjTjjljHMuuOSKa2645Y57HnjkiWdeeOWNdz745Itvfvjlj4F/4D+DDDHMCKOMMc4Ek0wxzQyzzDHPAossscwKq6yxzgabbLHNDrvssc8BhxxxzAmnnHHOBZdccc0Nt9xxzwOPPPHMC6+88c4Hn3zxzQ+//DHwh/4zyBDDjDDKGONMMMkU08wwyxzzLLDIEsussMoa62ywyRbb7LDLHvsccMgRx5xwyhnnXHDJFdfccMsd9zzwyBPPvPDKG+988MkX3/zwyx8D/9B/BhlimBFGGWOcCSaZYpoZZpljngUWWWKZFVZZY50NNtlimx122WOfAw454pgTTjnjnAsuueKaG265454HHnnimRdeeeOdDz754psffvljoOw/gwwxzAijjDHOBJNMMc0Ms8wxzwKLLLHMCqussc4Gm2yxzQ677LHPAYccccwJp5xxzgWXXHHNDbfccc8DjzzxzAuvvPHOB5988c0Pv/wx8I/8Z5AhhhlhlDHGmWCSKaaZYZY55llgkSWWWWGVNdbZYJMtttlhlz32OeCQI4454ZQzzrngkiuuueGWO+554JEnnnnhlTfe+eCTL7754Zc/Bv7IfwYZYpgRRhljnAkmmWKaGWaZY54FFllimRVWWWOdDTbZYpsddtljnwMOOeKYE04545wLLrnimhtuueOeBx554pkXXnnjnQ8++eKbH375Y+Af+88gQwwzwihjjDPBJFNMM8Msc8yzwCJLLLPCKmuss8EmW2yzwy577HPAIUccc8IpZ5xzwSVXXHPDLXfc88AjTzzzwitvvPPBJ19888MvfwxU/GeQIYYZYZQxxplgkimmmWGWOeZZYJEllllhlTXW2WCTLbbZYZc99jngkCOOOeGUM8654JIrrrnhljvueeCRJ5554ZU33vngky+++eGXPwb+if8MMsQwI4wyxjgTTDLFNDPMMsc8CyyyxDIrrLLGOhtsssU2O+yyxz4HHHLEMSeccsY5F1xyxTU33HLHPQ888sQzL7zyxjsffPLFNz/88sfAH/vPIEMMM8IoY4wzwSRTTDPDLHPMs8AiSyyzwiprrLPBJltss8Mue+xzwCFHHHPCKWecc8ElV1xzwy133PPAI08888Irb7zzwSdffPPDL38M/In/DDLEMCOMMsY4E0wyxTQzzDLHPAssssQyK6yyxjobbLLFNjvsssc+BxxyxDEnnHLGORdccsU1N9xyxz0PPPLEMy+88sY7H3zyxTc//PLHQNV/BhlimBFGGWOcCSaZYpoZZpljngUWWWKZFVZZY50NNtlimx122WOfAw454pgTTjnjnAsuueKaG265454HHnnimRdeeeOdDz754psffvlj4J/6zyBDDDPCKGOMM8EkU0wzwyxzzLPAIksss8Iqa6yzwSZbbLPDLnvsc8AhRxxzwilnnHPBJVdcc8Mtd9zzwCNPPPPCK2+888EnX3zzwy9/DPwz/xlkiGFGGGWMcSaYZIppZphljnkWWGSJZVZYZY11Nthki2122GWPfQ445IhjTjjljHMuuOSKa2645Y57HnjkiWdeeOWNdz745Itvfvjlj4F/7j+DDDHMCKOMMc4Ek0wxzQyzzDHPAossscwKq6yxzgabbLHNDrvssc8BhxxxzAmnnHHOBZdccc0Nt9xxzwOPPPHMC6+8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/DHw3/xnkCGGGWGUMcaZYJIppplhljnmWWCRJZZZYZU11tlgky222WGXPfY54JAjjjnhlDPOueCSK6654ZY77nngkSeeeeGVN9754JMvvvnhlz8G/rv/DDLEMCOMMsY4E0wyxTQzzDLHPAssssQyK6yyxjobbLLFNjvsssc+BxxyxDEnnHLGORdccsU1N9xyxz0PPPLEMy+88sY7H3zyxTc//PLHQMd/BhlimBFGGWOcCSaZYpoZZpljngUWWWKZFVZZY50NNtlimx122WOfAw454pgTTjnjnAsuueKaG265454HHnnimRdeeeOdDz754psffvlj4H/4zyBDDDPCKGOMM8EkU0wzwyxzzLPAIksss8Iqa6yzwSZbbLPDLnvsc8AhRxxzwilnnHPBJVdcc8Mtd9zzwCNPPPPCK2+888EnX3zzwy9/DPy5/wwyxDAjjDLGOBNMMsU0M8wyxzwLLLLEMiusssY6G2yyxTY77LLHPgcccsQxJ5xyxjkXXHLFNTfccsc9DzzyxDMvvPLGOx988sU3P/zyx8Bf+M8gQwwzwihjjDPBJFNMM8Msc8yzwCJLLLPCKmuss8EmW2yzwy577HPAIUccc8IpZ5xzwSVXXHPDLXfc88AjTzzzwitvvPPBJ19888Mvfwx0/WeQIYYZYZQxxplgkimmmWGWOeZZYJEllllhlTXW2WCTLbbZYZc99jngkCOOOeGUM8654JIrrrnhljvueeCRJ5554ZU33vngky+++eGXPwb+0n8GGWKYEUYZY5wJJplimhlmmWOeBRZZYpkVVlljnQ022WKbHXbZY58DDjnimBNOOeOcCy654pobbrnjngceeeKZF155450PPvnimx9++WPgf/rPIEMMM8IoY4wzwSRTTDPDLHPMs8AiSyyzwiprrLPBJltss8Mue+xzwCFHHHPCKWecc8ElV1xzwy133PPAI08888Irb7zzwSdffPPDL38M/C//GWSIYUYYZYxxJphkimlmmGWOeRZYZIllVlhljXU22GSLbXbYZY99DjjkiGNOOOWMcy645IprbrjljnseeOSJZ1545Y13Pvjki29++OWPgZ7/DDLEMCOMMsY4E0wyxTQzzDLHPAssssQyK6yyxjobbLLFNjvsssc+BxxyxDEnnHLGORdccsU1N9xyxz0PPPLEMy+88sY7H3zyxTc//PLHwP/2n0GGGGaEUcYYZ4JJpphmhlnmmGeBRZZYZoVV1lhng0222GaHXfbY54BDjjjmhFPOOOeCS6645oZb7rjngUeeeOaFV95454NPvvjmh1/+GPg//jPIEMOMMMoY40wwyRTTzDDLHPMssMgSy6ywyhrrbLDJFtvssMse+xxwyBHHnHDKGedccMkV19xwyx33PPDIE8+88Mob73zwyRff/PDLHwP/138GGWKYEUYZY5wJJplimhlmmWOeBRZZYpkVVlljnQ022WKbHXbZY58DDjnimBNOOeOcCy654pobbrnjngceeeKZF155450PPvnimx9++WOg/1f+Py5g+QR4nC3RIRMBAIKAUXOzQRAEQRAEQRAEQRAEQRAEQRAEQRAEQRDcrd1zt/bO7toZQRAEQRAEQRAEQRAEQRAEQRAEQbjZufeV9wO+P/T/LfCvggwxzAijjDHOBJNMMc0Ms8wxzwKLLLHMCqussc4Gm2yxzQ677LHPAYccccwJp5xxzgWXXHHNDbfccc8DjzzxzAuvvPHOB5988c0Pv/wx8O//7x8YZIhhRhhljHEmmGSKaWaYZY55FlhkiWVWWGWNdTbYZIttdthlj30OOOSIY0445YxzLrjkimtuuOWOex545IlnXnjljXc++OSLb3745Y+B//CfQYYYZoRRxhhngkmmmGaGWeaYZ4FFllhmhVXWWGeDTbbYZodd9tjngEOOOOaEU84454JLrrjmhlvuuOeBR5545oVX3njng0+++OaHX/4Y+KP/DDLEMCOMMsY4E0wyxTQzzDLHPAssssQyK6yyxjobbLLFNjvsssc+BxxyxDEnnHLGORdccsU1N9xyxz0PPPLEMy+88sY7H3zyxTc//PLHwMB/BhlimBFGGWOcCSaZYpoZZpljngUWWWKZFVZZY50NNtlimx122WOfAw454pgTTjnjnAsuueKaG265454HHnnimRdeeeOdDz754psffvlj4E/+M8gQw4wwyhjjTDDJFNPMMMsc8yywyBLLrLDKGutssMkW2+ywyx77HHDIEceccMoZ51xwyRXX3HDLHfc88MgTz7zwyhvvfPDJF9/88MsfA3/2n0GGGGaEUcYYZ4JJpphmhlnmmGeBRZZYZoVV1lhng0222GaHXfbY54BDjjjmhFPOOOeCS6645oZb7rjngUeeeOaFV95454NPvvjmh1/+GPhP/xlkiGFGGGWMcSaYZIppZphljnkWWGSJZVZYZY11Nthki2122GWPfQ445IhjTjjljHMuuOSKa2645Y57HnjkiWdeeOWNdz745Itvfvjlj4Gh/wwyxDAjjDLGOBNMMsU0M8wyxzwLLLLEMiusssY6G2yyxTY77LLHPgcccsQxJ5xyxjkXXHLFNTfccsc9DzzyxDMvvPLGOx988sU3P/zyx8B/+c8gQwwzwihjjDPBJFNMM8Msc8yzwCJLLLPCKmuss8EmW2yzwy577HPAIUccc8IpZ5xzwSVXXHPDLXfc88AjTzzzwitvvPPBJ19888Mvfwz8t/8MMsQwI4wyxjgTTDLFNDPMMsc8CyyyxDIrrLLGOhtsssU2O+yyxz4HHHLEMSeccsY5F1xyxTU33HLHPQ888sQzL7zyxjsffPLFNz/88sfAX/xnkCGGGWGUMcaZYJIppplhljnmWWCRJZZZYZU11tlgky222WGXPfY54JAjjjnhlDPOueCSK6654ZY77nngkSeeeeGVN9754JMvvvnhlz8GRv4zyBDDjDDKGONMMMkU08wwyxzzLLDIEsussMoa62ywyRbb7LDLHvsccMgRx5xwyhnnXHDJFdfccMsd9zzwyBPPvPDKG+988MkX3/zwyx8Df/WfQYYYZoRRxhhngkmmmGaGWeaYZ4FFllhmhVXWWGeDTbbYZodd9tjngEOOOOaEU84454JLrrjmhlvuuOeBR5545oVX3njng0+++OaHX/4Y+B//GWSIYUYYZYxxJphkimlmmGWOeRZYZIllVlhljXU22GSLbXbYZY99DjjkiGNOOOWMcy645IprbrjljnseeOSJZ1545Y13Pvjki29++OWPgf/1n0GGGGaEUcYYZ4JJpphmhlnmmGeBRZZYZoVV1lhng0222GaHXfbY54BDjjjmhFPOOOeCS6645oZb7rjngUeeeOaFV95454NPvvjmh1/+GBj7zyBDDDPCKGOMM8EkU0wzwyxzzLPAIksss8Iqa6yzwSZbbLPDLnvsc8AhRxxzwilnnHPBJVdcc8Mtd9zzwCNPPPPCK2+888EnX3zzwy9/DPzNfwYZYpgRRhljnAkmmWKaGWaZY54FFllimRVWWWOdDTbZYpsddtljnwMOOeKYE04545wLLrnimhtuueOeBx554pkXXnnjnQ8++eKbH375Y+Dv/jPIEMOMMMoY40wwyRTTzDDLHPMssMgSy6ywyhrrbLDJFtvssMse+xxwyBHHnHDKGedccMkV19xwyx33PPDIE8+88Mob73zwyRff/PDLHwP/8J9BhhhmhFHGGGeCSaaYZoZZ5phngUWWWGaFVdZYZ4NNtthmh1322OeAQ4445oRTzjjngkuuuOaGW+6454FHnnjmhVfeeOeDT7745odf/hiY+M8gQwwzwihjjDPBJFNMM8Msc8yzwCJLLLPCKmuss8EmW2yzwy577HPAIUccc8IpZ5xzwSVXXHPDLXfc88AjTzzzwitvvPPBJ19888Mvfwz8038GGWKYEUYZY5wJJplimhlmmWOeBRZZYpkVVlljnQ022WKbHXbZY58DDjni/wG4JJNeAgAAAACAAABjJQAANQAAACEAAAA=eJztwSEBAAAAgKDu/8EeAQoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGME7AEx4nO3BMQEAAADCoH/9A5vABkABAAAAAAAAAABwDE9gde4= + + diff --git a/inputFiles/singlePhaseFlow/synthetic/synthetic_1_0.vtu b/inputFiles/singlePhaseFlow/synthetic/synthetic_1_0.vtu new file mode 100644 index 00000000000..5f6097344cb --- /dev/null +++ b/inputFiles/singlePhaseFlow/synthetic/synthetic_1_0.vtu @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + _BwAAAACAAACwHQAAOQAAADkAAAA5AAAAOQAAADkAAAA5AAAAIQAAAA==eJztwwEJAAAMBKHj+4dekCm4aqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqr6/AHwD0ABeJztwwEJAAAMBKHj+4dekCm4aqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqr6/AHwD0ABeJztwwEJAAAMBKHj+4dekCm4aqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqr6/AHwD0ABeJztwwEJAAAMBKHj+4dekCm4aqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqr6/AHwD0ABeJztwwEJAAAMBKHj+4dekCm4aqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqr6/AHwD0ABeJztwwEJAAAMBKHj+4dekCm4aqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqr6/AHwD0ABeJztw8EJAAAMA6Ej+w/dLfpScNVUVVVVVVVVfX+ehA7ZCgAAAACAAACIRAAAVkMAAO93AABJegAAR3oAACh6AAAwegAAPXoAAE56AABcegAArEEAAA==eJx1nHk4FW8fh9EiRdmiyNKKFmUJJTktlHaSbO2bJVJCFEnIvi+Hkl0hIWvWJ3tSKbIkLaIspaQQxTvP/M6ZZ8bp7Y/zXu99fa/njJlzZj7zmfv82Nj+8c84CFD+v0c5bTL3YcdeZrFy4SnYi18ZC4+fir3wsXLZ6dhLyCMWXsAJF2PlGlzYSyRg4S9mYi9irDx/HvZCK2Xhz0WxF80SFv5JHHvZVczCxxdiLzpFLFxwKfaiX8jCV0hjL4cLWPjmFdjLyYcs3EAWezHLZ+FWcvAlj4XfUMRebHNZ+G1l7OVKDgvPXY+9uGSzcC417MUji4VLwHX8HrDwC2uwl5BMFl4lg71EZrBweU3shZbOwptVsJddaSz8Mtw/+qksfBE8LieTWfgTXuzF6g4Lt4KfwyuJLFxwaGJi4kY8Cy/sxnhwLAsvzcW4ejQLd07G+MGbLPx1DsbPhbPwNWXwfYNZuGQUXN+fhdfj69z4P/NXWTgN5+dYOOVfdgiVM7/Xkznz34//s45H8L+5+P9Z///xyeswOel9Rz+S/i7Sdk55T9oPJB7eR9pvJM77hbSfSfzaL9JxIfGSL6TjSOJrP5KOO4nfayV9Tkg8tI/0uSLx7D7S55DE6yG/nMjCv+F/1x0WPhtu54lkFr4c8oOpLFwL8p1pLNwE3z/pLNx4EOMRGSzcsx/+XZksPK8H474PWHhSF/x7s1j4Kzh/LZuFV8H1L+ewrg+3xyaXhd8dgfsnj4VH/MW4aT4L9+ZgQ+dhEr8MrzvM8zaJm3OzofM8iR/mY0PXBRLfI8SGriMkrk6+7pD4Gkk2dJ0i8Q54fmNe10jcfjYbug6SP+dwO5nXTfL+h9fNEFauBv9e5nWZxBvg9dqPlZvC/TaL9byRsPjz/QV7ymiP3jXeu+SPvteL4g/eMuoAtE8l0tcl3BCXXufovz7Eneb7a1mP0g3E09Ph5zniv/VJ5wf7xPJ7Iw0lNJBqyrnwEuIZ+9JV8roLaSKbmq+890JcwSvWL/B0HMv7Ghtg86P5LPNPfmLvuyCD5X07ROYuHbxzl6Y+scCMlzTvYYytw53Lss6ycWydmVks6xyx8rpiFh1I85/4IF/qjHgYTWNjzsF7tPNs4k9ppP22HR5HxvX6qCbigWXoPBPzGHEJHjbic0LmqaTjTuZrJNiIzyd5/SBSbiHzuaTzEnmdZlI+Ic8nf0XnB/L8l2nXn0dk2NLqdbaxp81D/PTr4Ywnr8to5XfXZb0fQTx/2q2VtBdltI9ccgeWkOZf2dQm3GqypcWq6p1oGUbcMi4lxWzhf+9bz0/anpADB0J//rc/1/xFvOkqxjvyWHh9ekrKjqePWNaZlY9xPcDCn9pi69QXsKxzUz8lJcUmimV+riU2X1LMMu+x+cCBV2EJLPPXh381uXt70wY3dU8ZHUc8Mtw1ZMPxUBYe71Cc88EshcZTIvxnGh/iI0c27xBfd5+F7791VulmSCjtcK1ftQIP4r+3tObl9XvTPi7Ska3gQPyKrtLN3Tr3aXFrz6vUcaDzgPCGlFWH3VJo61c7577kRTzlmJiJQ30WTWVPTRPgQjxIH+MepbSaTGUZ9elo/QsjF3LOrH9EU9FbJ/FnGuJWnJ/Mnhfl0mqSq95PmYnWiS/qCHfTeMCyjoy44vJj02NZ1vFnx9ZJeciyjvXFytWz3iWxrDM81mX2nF7EMs8h53dJKi6LtnxD+Wpp0vp/OwYK2zxyaEVLzI9uEkN8Xu9Iu0UMoG1tC4ku+YH45s+b+Lyu36SpZoNp4/xo/WMVzcV+s8pYeKLydm0BoUe0rIb+tmNf0DpTfCKWCITF0t6rTmTQxhD/ZGu/75t2Ke1CY37jdh60zumppTdXK5bQruRUaKqwoXm/vVkWQ/uKaJIVbHtLBRHXi0q/LLa7kFa5U32U/S/KaQsMsPnjD1nm+SdiZlRGxbNs/1SR+UaOqRm01s9NvPazSfkkEVv/SD7L+lExVcq52ndoGx6fU1xJ2n5Zt4C4ZRdzabtX8i25vRi9b8HFuI++tg9oGT+U/uzkRvMHBIdGzh0uoxWs9Dx6m3R86b/WiFTPy6Bpr2wpU+hH77st3nDAROc6LfX1o9qvy9A6i4Ze8xayu9DCPmzb8/g7mv9pvd8yoTmClrjC+KrxEOk+QszvUE98IG3wSrtubjvi0spFlvKG92hq1099r5NH6y/L3LSMHhJIU9svMqygiPjCr5ICu3Tu0crvdc2oa0Pr9LhsZPvzJo7WOd03ZcMg4m9PfJ8AFYCFv6p/P3GtNJ+24PeFA+UL0PoXnmE8rZCF/2zE+IscFr5k9Wpz1/K7NHu/Hjev16T7HZHH4WX2ZbSY9AtPzixE890vsrQHvEpoJr0K54LEEKfrDFkNnaXToi/5jDpuQLxNq5hPj8OEpr4yPoWXdD2tanxnMCFdTrO7+TdOksQrHiipmjXcpbnf3xrjpYrWyRy8Z8DxLp02wlfdULyOdBxjj1qkqD+iVUxo1vO7oHXSijcuTd3wgIXf4X/0Wrc1i7aB7eHqr76k8/8RjFfnsvBNmzEeWMqyTtkBjOc8ZJmv2onx+CIW/ivScYfeQAzLOk8hf5rEwg0OtLjt3+9Du9IUIGBB4uONbwMDnEJpL8rD1FVJucjbNYNv9HIKTe7TRYdaP8Tv2n3bvn3bfdrqDaaggpRzNF6lpPisYuRz0v6/dPzAgaoLgIXb9Hl1f/j+iFYldf+iojviU2f4n6mee4umFBmmnH4VcVXnvGc12/NpXEF7/JtDEFdcOlO0si2DttLGbv1eV9Jxv4TNKxWyzD9nX3DCU6KEliS5zacrkLT/NwYet6yNpw1bZFpJX0acx/bIlFubsmnvXuR0KZWhz/PSLoNDuWtv06aafls4uAd9fu7YGZufGymlydjzn1xE4gNVuopaOY9Y5htVb0yE+BbTVL/l6Lk8QutHxyWbBMUU0P6E8b7lJvE/m4oWH9HJpGkqHH29m7RO8NA92bahBJb1TVKxdR7ksazDVyNb0xRnQhswE/y6jvS9YHuy5vvtpeW0hUeiSp42ks5X7cE3nMJNaN6l+xS/krhE+tRZaVLlNO2tu1LCyN+vq64vwjPLaIPrH7mMkPJ83M55Vq/9HGk1tUFpNE/Ej+5eb3dqYRbtO+ePuEp1tM5MrsWiE+9LaPfFE06dfYzet86CS+vDzwe078HCB4/WI14hYViSe9GO9mx02PfFA8S3Z3K1xj8po307LK3+Nxvxczs/phRZ2dGOCV11vnAIve+QCPbyO4d2+5lSVlo6mu/M1/i81iaO9uPHWTXeo2iecxYbm3MLoB2Xe7xLh8S/aBziPjWYT5vNE1z2jbRO4QaMfyhk4asSPp30rC+jqf2Q5ss2ROuMKdes3MIHaK4rOs7GkvbDWnmMezxi4Wr2AQbuZtm0DGmx4MOapPv0EyURn6KiWebbrbB5xWLalUbq/Myt73YNpiSyzDvbYfOaBSzzxk4Y189j4WfjzyXZp2ayrOPUc9uxR/sR7Zf5VI2Vumh+dXZF1NMjgFYz1qX9isQL/L2zBOuKaNLbbttxkY7vvoEW4SVvH9LmPJl1gIPE2Yz31OdFx9AGFH+m/CUd36qVsm+kxjJpUxKevAoj7ee0L2pjL/tyabNCxgoaCtE6p1PH6tsPJtFmlGTdEDiM5qfHOk4t5cyhda3dunctaV50AN4fhdK822NfjZmgeXd17EXzPs1m0eHlU++g+UZ4P3XQm2X++RLs5XAKdd6jgfbf/06672Zy5j8Sp/TzJE7p50mc0s+TOKWfJ3FKP0/ilH6exCn9PIlT+nkSf/6vngTjlH6exCn9PIlT+nkSp/TzJE7p50mc0s+TOKWfJ3FKP0/ilH6exCn9PIlT+nkSp/TzJE7p50mc0s+TOKWfJ3FKP0/ilH6exCn9PIlT+nnyfiP38+TjNfSPXhTjlH6exCn9PIlT+nkSp/TzJE7p50mc0s+TOKWfZ5m/ysIp/fzk7+/k52uTv9eT+eRefTJn5q7J/Mf/Wf//8cnrMP+R3pfSz5O2k9LPkzilnydxSj9P4pR+nsQp/TyJU/p5Eqf08yRO6edJnNLPkzilnydxSj9P4pR+nsQp/TyJU/p5Eqf08yRO6edJnNLPkzilnydxSj9P4pR+nsQp/Tx5fXI/T+KUfp7EKf08iVP6eRKn9PMkTunnSZzSz5M4pZ8ncfV/PReG5wdJNtbnyBin9PMkTunnyZ9zcj9P3v/kfp7EKf08iVP6eRKn9PMkHs/o59UlV+y/4Yy+14sZ/Tylx8a4OKOft57ZKvSYdB64/a9+HuO2jH6ephs28jYc8SxGP0/p4THO7Ocnvy+zn588/89+Hu5/Rj//iO1j6DfSvBejn5+8jvS/+nmMM/t5Sg+PcTqjn6f09hjfRerniX4b4x6kfp7owzEuRurnyTyFdNzJXI7Uz5PX9yPlFjIn9/PkdV6T8gl5/i6pnyfPv2H082vS8sd1hhE/xejn1Q5W7ZIQRryU0c+LDT1LaSPNtzD6+SMVybek5iF+ntTPE7033B5SP0/03hjvJPXzZF5H6ufJ68wg9fNk/pLUz5PXuULq58nzfKR+njzvT+rnyfO+jH6e0qtjPJDRz0/miYx+ntLbY/wno5+fzI0Z/Tylb8f4d0Y/L9ae9kKVB3FmP0/p8zE+n9HPV9Vf1Vo1QTo/M/p5Su8N/15GP0/p7TFux+jnKX04PO8x+nlK347xOEY/P3mdJYx+fvI6Pox+fvI6lxj9/OR1fjP6+cnzMxj9fFP5hvpm0vrMfp7Sw2NcmNHPU3p7eN5g9POUXhpeXxj9/GTO7OcpvTTG2Rn9PKUnh59zRj/vt2LbijwOxE8w+nnXHaoPq+eg7Wf285SeH+P6jH6e0rdjfB6jn588L8jo5ydv/zRGPy81T+abOzua38vo5yevf5PRz1coBTxpIG0/s5+nPKfA+ENGP7+P5/GU7CmI6zH6ec0G2+hjpOPL7OfTG6TU6hYirsPo5w8s3biWvwdtvyijnzcTz89UkkDzHxn9vFFjvHP8fNJ9BKOf57m+KFVLHnFmP19+JXKOQjtafxGjn6f08HCe0c9TenuMM/t5Sn+O8XZGPz+Zv2b085TeHn7vGP38ZD7C6Ocn80WMfv7GeSEHm7Vo/VWMfv7oPl9Fej+a72T08/S5dQEWpPsCf0Y/f+yG9TSXBsSZ/fyjBuMD326g41jN6Oc9T3IcekfiZYx+3kG78IhNI1onhdHPz+hXWbm5CfFljH6e0ofD8xWjn5/MMxn9PKUPh3mV0c9P5hsZ/fzkdfIY/fzk+VpGPz+ZM/v5yetUM/r5yVyP0c+7ypz7EkTivxn9PKVvh993Rj//fL6329prpP3A6OcpfT7Gt/2rn8f4xX/18xi3YvTz61u0vZ94It7P+V8/X3vKtGZfAOI0Rj9P6c8xrszo5xu9PCozvBGvYfTzk+efMfp5w3f51iJOiFcy+nlKn4/x2Yx+fqHsDpHHu0nnN0Y/T+m9Mc7s55vdv95sJ/FvjH5+8vxLRj9fybsj2XEPWv82o5+n9O0YH2f08wV10UsfkNYJZfTzk9c3Y/Tzk9eZzejn54T28VeRvhfTGf38u5jjm+RV0Xwao5+3oaU/4SdxcUY/n16YdcCU/P1i9PM8lRsdOUnHPYrRz6ustdApdUec2c/zjvAcWl+P1mH28zofjCKDNdH7NjD6ed6z3Xej1RGPZfTz8tNmXJA9hLgRo5/ni20GHEaIn2L089E9zld9H6D3HWX085S+HV6nGD08pbeH5zFGb0/p2zHex+jnKX0+xosZ/fxkvpzRz5fzNPfvzCFtD6Ofp/TeGN/C6Ocn83WMfn5fM6kPh99rRj8/eb6X0c9T+nOYZxj9/OT5C4x+fvK8KaOfn8zNGP385HUcGf08pQ+H13FGP68yVeT+chIvYvTzLfnHPIZIx3cPo5+n9PAYZ/bzlN4enicZ/fxfI8XlpqT9fJ/Rz1OeF2Cc2c+PbNp16Usmmudk9POitYUZtaR5Zj8/uVdn9vOUHh7jzH5+8vwLRj/PnF82GB5ho436MWOT3K1Lx0LAJw6Jd+8XID4a8rlXf0coKOGr5ZTsfUnwS2e6NKRiQoGHY+Cx4XzEHfWcfaTHQsGihW4a8z0RP++lu47HMAxkygVWrTREfKB50fmYwjAwd6O038sViFeODD0vFw8HJ74ZSdz9+4Lgx/ieXD3jEg58q0YEdjxH3GRwjq9zVzgoP3KGQy8GcYMhjZJxTTpw7zz16KwV4j0cdwfLEulgbWPdw7XqiG9QUTgQzhYBpBdbvDzBjfj8I/f0VuhFAAFVQ/mi5nqCL5u2z1woMQIcUL6zTjwW8a6lCa87+yJATJRYt5cJ4h/O2LxaIxMJXg98KpKWRfzaytHflUaRQOx89A6XzucEf3hwYke1SySICrqjZmGGuOQuF/EnUZGg60eN2Jf+ZwSfuGZm1nEvEtxdYy1QfwHxC1Z3rnhmRIKMiXSbuqGnBE9I6Q72TI4EUmcle89eRjzFIjK5iR4JTgn1rpRjRzxeYL9CpVMkyNvoEFHiUUfwIHlBtVjDSPAKlM5cwI+4oYXw32TZSOB5gHPj0qgnBFeYOnIg6U8EqA7ZlpEmg7iDbdi9lsoIIBjbG+iZV0twI7/YtJXeEWChF9uLAE3Ela8eCt+/OwI4Ns0uiG56THDZ0fR5TdwR4PHCdU1hZxBfvvo9h2QtHYBCG2vD3zUEV7obJ+bhRge2F/aIvfRGXMf1q9cBdTpweVgt3C2OeOGQeGD5cDjYFU8f9nhQTfBeN78jU9PDwdLrvzfEayJ+4XsL35ZT4cBk0GFiWVsV2s5bTQqJIuHgVrbi/WlWiPMfb/i283kY+BWz47ncNMTX74wZ1L0eBlQWdD6/HVlJ8Eu1F1a0KYWB0ValFtoaxN8t+3pwuCcU8G1NTOSuqiD42+nfvMCtUKCQuPj0sBHicrzO/rv2hoL8cq5bQwPlBLcXHd+WwR4KNvutmJi4gXj2npMTE1khgLdF7ziXOOJ9yi9y954OAQ7fNOkzsssIHvbn4LmseSEgo/SZ/qAW4g/OfLdWfxIMOlM1l5W+e0RwAfaxpBlYvhJYES97zAZxXnPHhiVyweDCfs3Vz2Yi7rjXYFZqZxDoFz61bzQaEPxl1Oo52fQgsHyr1ESLIuLzxNY+MdwdBOqUj19/GFRKcGUX1a9FHEHgbbLC7P6CEoJ/1faPHssPBMMF3U9XdxQTvDOKy3KDVSBw1O8rM5qB+LaFGhdTpAPB+dE0oZ2rigg+curmB7uOAGD8WEX75b5CgodvM/3zLioATE2M9AQXCghutC7hk4xRABhVqjF6G/SQ4FcvTjG5JxIA3vNyvP6SkU9wu8Gw+KSH/sAkXD8qoS6P4JU6jxP3bPUH9P6uazlduQQ/fnDx/qwmP/Ag7Hp39VgOwavbp067d8EP3F244InLbMS7569xKxbBOK9OQpRYNsETrd7RbV76AomUEZllMlkE/9F55Z7ObV9w3r6T/4z8A4Lv/zOl5csVX5Bda9Z8ZH0mwSVNU6Z/tfQFeflPy6Q2Z6D3vbtjhaqtLwgR05q+M+w+wc1Xq5ebhviCM3JhL4fS7hH8es1ps/O1viCpWVCo4FkKwet7/bgvzvMDgi9vFt0du0vwJW/vH7jt6AcOC/itma18h+Bajsd2Ko34gUPbFMzFXRIJ7i/Jt7zBzR+cbHhl9uFNPMEXdtxLbuQLABGlM9boaMYRXP7Q0lSTMwFg8xzLwYiiGIK7K6dxq5Vh8y/4mqMdbhP8QRfXZvaFgWBt2P6Sw943CT67Tdn6qksg4JDWn+GUSCd41wNbZ3pXIDhW/Vi0uSyU4K5zt67ZoBUEbH+4hSq0BxG84im3/5F7QSDs8uddzW/8CX75YUPVD55gYLSKrU7ggyfBt6y6ad18NhiM8OhMmyi8TnCnAtmClupgEHpEV6mm2oHgp68umXtHLAQMduTJKWiYEzxm977C12dDwPe5dNYcEh8E8v6Is+YQ7L5en4OaQzQEPmlIbQ8GrvupOUSL45qPdHwwWF3jSskhakoH1vFwhIC2NwGUHFJyffH5mBMhwDpbipJDghKGn5dXhQCJA9QcMmpSd/XM8lAgPpWaQ54O8fk6+4YCG/fTlBxS+ntbyXh/KChfSs0hLobJg2W7w8DiadQc8spf8UD43TDgb32WkkMe5KbprRgPA1d3GVBySKmxtrnQ7nDgsD6JkkMyX2A5JDgc6CYvoOQQh1LbV2teYNejWdQcsqcFyyFT6GBDfhQlh7hPYdtZvZwOnn5PZM0hGnTgb17NmkN06aC19DxrDtGng+cx91lziDYd2CyQYM0hNDpob+im5JDmMzoKlcvowJHPnpJDqtwF1GI56MA3tYSSQ3wfCf1NbgoH849Pp+SQM/rDB5ISwsH7FE1KDkmrDb3XYhEODF/3sOYQhXBQ/26inpxDzBuMw/f/CgOd8tQccnwPlkOyw4COpQolhxy+/o5D8kIY6JOk5hCzP7FiHqvCwDThf+SQz6Hgh+k/ckh0KPjt/o8ccjAUJPwrh/CEAjb2y6w5pCwEbGz8Rw6xCwGCdf/IIStCwCsbag7Zamu9ou1tMDDZqcyaQwKDQW86NYekPsByyNZgkCe/hDWHDAeBy/YzKTlEsxrLIclBYG/ISkoOuTaK5RCjILB+qj4lh7j6v8zdOzsISIpup+SQE3f1z2WBQBA5vZ6SQ5wEBqzVrQOBHdd2Sg55dw/LIcsCQdXNBEoOSS5zaljSGgD6n2yj5BChO4azUn0CwNu405QcEq21Zk42LQB0tklTcsjjQPOwnF5/sObwKUoOicmyf21/wB9ET1Wm5BDu/QvVhx/5geqnfZQcsilp7ptLa/xA9tF+Sg4BAz7durG+wOxoJiWHZAyolH8T9AW7sjdQckhIUONIqbcP2PLmNiWHbNm68+n+6T5gdncdJYfY7eeq13fzBnqhnJQcMq0yIj6JyxscXHSYkkPOeNcl7gnxAnFJfZQcotK5dH/WMi+grORJySGdSzmn3SvzBJbjCyk5ZGBUzq3YzBPc+HWQkkMie9/TbRZ5Aqf0cUoOaRh2vKfT7wH4E3opOaTcbWrLlzoPsF36PCWHXPHGckiJB+jf3kjJIZcksBxS5QFszupRcojXgo3lpp0eYN/JeEoOaeI6ZXZexBMIXV9EySG3VX24L5p4ghH2FEoOWXY99cDtp57g+FAkJYcoFR7aqbTdC9T1baTkEJNh7uUNr7zA+u3tlBwylqa3P9ka2/8H51ByyKvubXovxH3Azvc2lBziuVhvvkOjD6BPXUDJIXGJfK4cQb6gPeYQJYfIlZ39NK7rBzrSjlFyyLvzvWxyov7gwrZGSg7ZsMT16KUOf1DZEELJIYdrZ/of0Q0AfCXsu8k5RCj3RdWPnACgK8lPySG21yKtmwUDwbZSA0oOyZyN5ZBzgYAmeJI1h1QGAt5bxZQc0hi7t/C1YBDQUfWsDy5Ax3fm71cG+xd6A/d9r4VyH6Drl4WC2H69qxFghn6+VsYv9PnJq9+j0LjEG0xbKfNaKhRdp06VSH8KdYwAq9R42Th/oM9D3gIsl17wBm+SRdSdGiZdZ/UiQMfbuk4+bvQ59yhSkrcu8wZr7bK5hz3RdW3H+ejTVbIR4OqtHT8litH3SEnpz1c+Ux/wJXt8qlUmuq41nk+eYddGBwJlJULBJsnouHR84mnl8QG2L6tvfTVEeeBHxnl7Aa4I8GarqpmPMPpef+G8slN1pi/QFp54vG4qWj+1o9mgw4sO3E7UCOfOReeN0aOnkgsX+QE/s2mDS6ah6ya79r3lcePhICNLbOv04+j8c6+kuKN/wA9cNWh68+cwum6uKv7iOyM8HHzKlR7p4EbnN4EZi6ST2APAmyNFLn6epOtmgmCzwexwEHPcdOutcnT+HN0/9/2XwAAQqev6Ru4+uj7OUZglIeAUBs5Nq1oYrIvOz/1zvoV8VQ4ENUdfvzlbiK6DZUPCZvwtoaDFMSaldHcSwY9dm9Jd/9MHzP1hOHN7CdqfKaYXfMJDsf1juFr65AZ0vXC6qOE6uy0QVDrpNd1sQNfNhOK7DgOKoSA0I74/gLeM4BrgCk+FNXafa/NszrkJdN3cvf/IgOqtEPA8ru24Xyeaf5jL3rNgdjCQmluVMUMJzZuJZUz3nxkC7ujFDv8MR+eNllOZDvHffYGu4quj7HNR/hQYH9t8X5gOhIUUXcbcLqPjVbrq/LnWINCz7Stf93yU268adfgFKIWASmflWP4gdJ6xmOVWMnOzP9gwnplabIPWL4mfETtqGQ4icmXb0j290N/1XUBaXikILO4SuPYgC+Xzc1qzW562hoBDy/fFP9W5RXCfsi8W2RoBYPnumKUNZWj9K89Ng3bWhoHqvtPayuvR+Sdp1dlXqj6BIGbOKy/jk6T7i/Olyyuuh4L5J7rO6dijXCFmnJsmeTUYFCq+/RnkFU7wjwPjntbtAcA33bNebw6p59ypb+sjHwYWCB2dc7IJXV/4n3lcm9DxAkIN24efLkHnGRebBerOnyLARE7yM/cJdH2h3+mKPHbRC1g3Ht0pvg+dN+6mpMs/fxUB2m00b9oYpxP8fmTe3k9zfIBNsTa9QwXNf6zc2MI9IwK4Jn1PyS5D2/NGSs3fid0HdJ26lZwoi7ZHabtePm1OBGC71P+kRQRdZ0szDM0rEr2Aly1/RDAHOu9F8s2rFSuOABXqB2/1PUXXX4lt79lCtH3A9i9f1syUQfNn1Y0m1n6mgzu/io4tWY8+P8V+2SsUEoKBAmek/2dba4KvVzFurDMPBptOdK8pL0XX09Y5fIonXnuBgDOWEZxr0PdOuELl9LO4CLD576HeCUF0nnSS/1naougNPsv0cjlPQ+fV2f5Z0cE2EcBlyDHItgKdN36rC8Tf+OYPkp7b5lSkofMGTTVs1YZ54cClzUQwoBOdl+JKAGfZ+wDgsMT7Z54YOi/VXjMZVlsdBvLKr2TW30Hn+bmbl5/1avIBU+1OJAlvQNtzf2H844IEOnDab6LyiZTfHPYHzhzWCQBehQkd3KT7iPkl93/OKA4Dntan3jrxou0ZZ2uTmVrvB/bvjvQHN9B88aHtvX/vhAN3y62bVUg57ZbL7H2g0xsoRXa3fyTdH9UV3miOFosAz81yq/gDUwleqkVTMw/0Af0nHye1z0X7/5hx3LEd1XTw9qPwtgoldP5f9i1AUjCZDnbtLTpn9wDlSWexe8XNT33AjBQvt4SN6Dw8GvY2PtUvALRyzrc3eoHOw/OfrTLSvRYGZouaP6qLQfn5yAMFRwvbQKAhNBIVoY6Ol9DZD9eCIkKBwju+K2yjaH3+gVt73FUCwU0zR5eJuWj9lr9GGfbNoUDvJtfRr8/ReftNXOpIXmMgkDW1vs1PQ+ft3YvXTt+uGgqUaHeXucSXEXztCX/9n+eCwPHS8URuS3Qenub26d2KhBBg88A5PjIZbY9/XneSQUcgGB3kMTp1Gm3P0o2C+kmrQsEV7el7Dzuj7UkLq37j5hwESq2vpsf6o+3hpS9Z5OAfAryaOGvPa6PtUflRceuVUDDgaul+6lCCtqdw/pSltN/B4M+iXbrVfuh4beSfXr/wUTjgybt44DwHOl66dR8PF0X5gfwgtZnluujz0zulwsUz2Bc8/M7lcPsU+vxccaFtVNWkA3l/+6aliui6nxT4zcW6zhdEtEcLfLVB1/3E3a/UqmToQGKvgmtnNPpcLSm1FTbdGIFt/3BbGw3l5NPh716sivcGh1sPTuO7iHLIjyW7KotO+QOee+pXhl+h9e80PLi18FA4iP/rWytuhnJ4dZzWEZl1vsC3+uCyIgf0vrxGRfvMrengTM/Q1lTFWIKffP1jkQKvH6h5qBRudgxdd8ZvN1p+4qSDZ2UOTyc+3SC45HPZd4bPgkCZ3nX2mhp0vVDh7pdM3BQCjERyfvhMQet8W/ZcqiaTDpSm7zOhL04g+LauhZnninwAbZXLS5kmtJ0Hzqz7HTkSDpqO/DbN9EP3C2HH9WbXyvqBY9NS3r91iSP4rjvt45Jc/mB7QdHiBGX0vrO8253PeYeDqcZGClKpLgSPllg6KrYvCDgaH6xK+oG2/yDHt2kdpSFg9/G42wVm6Lp51iXGK+FrEBDPTrLs/YP4nQgztUjvYHBJ4L1EWiPK4eyHVMV5hjxB24TaueREdD0Sjeux+i0YCcZXxPIJ7EXvW322Y1vswjDwcsqyzmd+wQTffdc4/3B/AOCfxXt46UO0/ufBPGn5fT7gRo/gPosstH6mclrfJ+x6pHfI1bPhMcr59zzmmxRguTp3xr71Qqno+iUv8ezJIixXRy9997RbF12/TPtzNULOh4Dy08qzI7xNCT52bk+B+e0g4C607XhmPlp/7YuO3k/cXoCtqGP3nSy0/tL5x718uCLBU3GpOQs50PXCymw+1/RwL6B77IrdNz90vUg2Wjl2pSICqGrKVXH1o/sOtYmDdckHvMDO57G+jo0oDxydziayogu7j9jQmKA+JYzgOQFidzSPBYKC2YHT6qTQfh78stLg4f1QsCLfcsum9jSCC2aYili6+wDX2zr30+lofaOmXz9q6uggMUfwe+wddNzvy7oP9QuHACD1/R2NHXGazKYF6reCgVerJu+Te6TnC4J9nk8++oCZUl9tIx+iv7eioWa9yG06EEpes7zWL5DgVVOc54eJBIGUpRqHBM6h7ddNzPxk+isEPHo25G46LQptJyfn5UETf+C+0uxMch76/Mscqd/sboTdp5y51NA9G53fjgqbvhrb4g1a6nRCvT3Q+U0ztEuQwzICWKy3tjn6GJ1PXMPild/89AJxpTwDDZboezqj73JnYGgEaNyn0Hxjpw/Bb231+f4oLhDwKa59FJ+Itl/iV+icjRahoHuFZ2+XFMrVVjaJM7fIB4Cvga6bp1xH289udu9XUXsYeHtE+mnsS3Qf93H74i2ie31AS43VvPQkdJ6Ps+g7dKGbDtrT51kEy6G8cWHqgblfd/mBk2DndqVhlB9SV4Rf9OwJB6nxb9XU3NH5VmD/lCsXl/gCdqOvRz7UofPtkR0HHlU60kHyjqRomT6UT/b32c9WP+kPFD71y5qLoPWl9vTbvcfOz/NlFrjW6KPrhdaCFF7umQGAQ6Gh6OYJtL5dTlz/4LRwEJY/wM/zFvUSHT9WZ884HgC0DFNlJUbR/vHdtnTXcFoYWP1t49nX8qjf+B3p9VvpTQCI9REweNmI5m2ja6c/VggDG/V8+l/NRtv/ISNc5Bw9AAQ4u3KGeqDt742P6gywCwOafQnrR8+g/Pkkfe22Q66+4JXU8w8cb9DnR+SlgPGL3XTwKuVMcXY0yjOyv+9YzMTua7bMGYteSkN55v0Vy8Bf2H1Nou51trJKlFcVf1o5GcoEAndPm3FxUl7l+nzfOfFTKBC5LZqiuALljZKsG5w/KgLByns3dJ90orxRZHB9mGdnKJB3b9A/mI6u+xqrNT67ivuDb8mJOroq6PPjqF3nXewcDirlkmd2caJ8EtvNs85MPwg8Vf46KDIDrT/3QV9laF4IyPxYpBXVjuYL9y4+0zkQBB7oVGcfl0d55rZzebioeAgwm1FvN38e+jyrG369NGuLHxjUX7xlcAran6+e8G5x6A8HJaBCWScB/b1pN2/1GVQGAIG9jVVp5mh7zuafEkjaEQbef99Rav2a5Ht8bLrnLBwBfpy1nHL8LLqeznCQvTP+3RtUm+zmML+Etj8n3uBAyfFAMDZP+U9IONp+C7+Q5E1poWBu568Mp11lBJeSkykI/BsImrwcdl8rR3msvit7qyV/KFAsjRFYIYbOk6uOK4iqhgcB+c/R41pmaH7lWHeWsH8wGO2aK914Io7g3Fu3Gexb7AtaDGod3FTR53lvf2bDQSc6cLXNi+R7e43g5QXpL810g0H7IQnrOb/R+YdudnpVaGEwkJe03yRDen7XMxK3oGh5MLjawbP5iDnq2exETT9u6QoGV+aXSyssQvdrv090a9zHzg8XH/pGPtyC9rP+TP32u9j5YU5EaessDvR3JX39GLjuagh4XPorUoX0nGtA5WFUsRAd2HQtXqaqhHKg19UTla4/fEHjmMSn2ltoP4fFLX8vdykYCOpGvExkR/vh3Vq3hZciwoFaarjpC3mUr5T4bxTP+eoHltxdX/K0GPWiEwqmCdy+fkC8f2Tx4ltonaPSQvftH4cD5XN1js6cqM/kKPi6ozMwCLgq/h0r90f7M3etao6oUwgQ3c7HcV8a7U+TZ6MhbQ9DgH6ojv3VRjuCB2+eY75ELwi0dWoEmKxH6zi9zXvWuiEUrHzp+Nu2NYTg0qOhcssaAsHWsehHcT7ouhxv/sCDRyES+PuZD13kQT2DhPzj/s6HnoAzoTNJ4S3qE3ovq2wKy/ME2dHn5lrPQ+vwGru8U1SMBFyi3w8skwkguK3u4BJL2UDAr+QbaeGGtnPzzbVtgR9CAbdfesiHSNQPOLmYTA995wm2NqQo+m9G+Uck1OvKWslIYK/FscQ4G+Xt3bQN73d99Qfea/UvX9RG+//TUdkAg/nhYPmbCZGj424Eb6Q99HN7HwiqeoQnuFvQ9uj0HT3vsDoUVGzuunT4ODq+UxcKJ+gkBADeDM15r2PR+o2n1xmnmYeB+ILHj3Iuof4kNEXi2O6l3qBtfLl44n6UJ2fMO7XXwDECuN7oSbu2Er2vq2VX27WgMPDOxF6iKw/15FIGh5c4OQaABsMi3wcW6LicVbCdFaeN3dfIpxkFX0T739PcfFT2TAQItHf1rlNB5wfphX9vOv8MBm9VsXuwBLSfJ/Jr2edaeINfyaXi8WpoP+sEdzvZGESAGr4W0Uwauq9vDbMuyszxBiP289/0SKDvXQB91iKptRGgz1Ta4cTiSIIXVkw77NjhD/atVK553IX2G7++jvYj8XAg5L8hyvkDyrHmxwUFCnh8wBYF5wx1CZTreP2lhhZxRQDh45F2GrwRBL8eYiFiuS0Q/C4+cndsCK0vOfqpK7AmFKS5H7Ky/3yG4LeXrlAo5A8Gqg6iPHL66Pu1YsObuq1/g4HU+JbptxTR8VrlJL/DdV8kECl9PFCdi47vghcm5sNOnmBtb2necA/6XpxvvX4+dpk3WE1fyOcyFx0X40Xa29KvRAC1hrUvm6xRjrUu1pvZ2usJThqNhgo2ob/3UWasQ7BIJLh9+sQIz3N0HP8eMd7mit2nJ4086jV1RPlTv4y/vKvAB9TNLeLaqY2ud4n+/OK+D+hAkVOyuGoNur9Yk2t6a6WgN3i/wD7m1jA67uvKIjN73CLAwLuvT/9Uo/w2ck84JzfQD1g09Iez30P5auRXdcKS6nDQt+zs9YKZKA/U7A624PDxBYl7TxfHeaE8IDlUUjOuhZ3PR5KiW93R52eLQsOnQ9h9U6T4LDYFLpSTtXoUFbZi91nTtRQarYTQ8RoStT9edSgY5FyUG6g9cYXgTzNvRq17EAzM+R7RPl5Ax2XDRIZrWo8PeBY1KrtNAR0XTsNyNZmbdNC6rF3qtCnpuUaE/Iorv/yAX/+Mvl1taPt//H3Tsyk0HPiL8hvZF6HPA29IaWzKax8QOCtYu1wOfX4WHRBMT4mjA4uV3LkDCig/21yqqjpk5w/6a14u5hxC+XBg5VtRbd1wsHNxXNlyE/Q9vaa3TOxVjBcoHcmO6jVCx+uRg/L50NIIMKaR3a3BgXKIXUROnJOJL5Dhv7057zPaz7EcQunAiA5Mwm+phXWjvBo0qNInqhUAVNIG32WLou2xThgQ6KwKAwbPC1bx3EX5s/uFMfB7FwBm8tef+a2K8qTvrvyN59eEgQJPT1PuzaT70EF/o7yNdGAoPrr88030fV9+ZcP2wDhfsHnob7nhQ/T3bu9v3DsDywM5U3ijdBTQ36s69KZ5DMsD0ZeFtdp00ffomO+t3c3m3qBY6ZphUBd639VP2QwEDSPA34+6gnby6HsUEnl6b41GMHiR9kWBeA7oUU5LCNfCnwNOz+VQgc8NJ+C/G+W06LL5+HNDbfmg6cRzRmz+680F+HPGM4b3nxLPJTHec+8a/lzSTmP1XuI5JsYfLbmPP8cc1esOI557Yrytod0PPvfctfOCGPGcFON3igXx56R7juyYSTxXxbhuz2n8uaqfkD8gnsNiPP1CSxd8Dtt0ILSVeG6L8b35Vtfhc9vnjq9/Es95Ma66NHUefM7rwndHjngujHF9t+AD8LnwpW3JZ4nnyBhXUYzWgc+RjYq2WBDPnTHuMFNfBj53TlZ8I088p8Y4Z0rmDvic+hD/ilLiuTbGZy+bgz/Xnjq3ex7xHBzjMqXT8OfgXpdSXxHPzTHOvmTMFD43d3sfxUU8Z8e44J6hMvicPetjaAXxXB7jHoHS+HN5L9c9rcRzfIzLuWfiz/F/130QJJ77Yzzn6Fr8uf+yeO6VhCcA3zerBfcEBGouJxFeAcYV+ywjoFfgrKT/lPAQMN5/ZAD3EOSP1vUS3gLGIxy+4d5Cf+0GV8JzwPiD/fK60HP40lAUTXgRGFeW+50EvYiP7nZvCI8C4zv9uhKgR2Git/Mw4V1gXNLJ6gX0LqY6rPYhPA2Mz5j77Bn0NM4JvNlPeB0YLzY9Nwq9DuHME/MJDwTjClpfK6AHMvwns5LwRjC++Ih+L/RGPsmCesIzwXic0HA79Ewy9onzEV4KxpfOmr8Jein5qw65Q4+F+T26ucztDfRYrmunsbUyvRdsvmCZNx16LzS2n9qEJ4NxTXstXujJNMq8XUN4NRgXD7jCDb2aj7lb10APh7n+e96URujhvIkekCK8HWxe4+iau9Db8T5x3ZDwfOD6zrI20PPZYTgtkvCCMA4W3baCXlCVksRJwiPC+CVhyXzoETkKjrOh/15JOY0roAD/7xWcOPoyivCUMD5tbJcW9JSqCjrOEF4TxqU6qgKg1+R0xOgO4UFhnNtO1gd6UG5dH1sJbwrjqe2LDaA3NfruxgvoWTH/3vvWsSuhZ7Vnflc94WVh85v8K39CL0taujqd8Lgwnvfl23focXFwTWOXakP8gkWvIvS+3nZc3kh4Yhh3N/7IDz2xHk2B39ArY77v1A9+R6FXFiW/fj7hoWHzr2lzg6CHNsz9UBx6a8z5FL5Wb+it5RxuuUh4btj87zoXcei5qXGHNBNeHMZ91bOnQC+utvZ4IeHRwe/vkN186NF5TdvzkvDuMM5TOI8OvbtELrlg6Okx31f58N770NPTPnEjk/D6sPnhJsU06PUZ3aSpEx4gxh9GuelBD1B0xeAswhvE+L7uINwbfM12J5LwDOH2KzjgnqF7/mxZwkvEeGf3bdxL5Dqm3gc9Rub2VAjV4R7jOqlaW8J7xOZPyE4Ngd6j2p4bgoQniXE1u1TckxS78EocepXMdbiO6uFepfy8lI2Eh4nNm7Lr4R6m3PLQnYS3Ca8jn4t2QG+zvtegGHqezHXS+uNwz/NetwfyQrF5rTxu3At9HM21nvBIMS6RI4t7pI6fs5B3ivEn7i/NoHc6hbMUearwcy67HPdUvY7NKyC8Vngeu5emC73WlsFU5MFifOWThbgH++1nEvJm4fdMrLIYerNnR+UECc8WXq+lwn2gZ5stGIi8XIxHjunjXi7XuAHyeDE+RvfGPV7/vFLk/WLcUw5YQe/3aGE68oTh/hz5qwI94fSVecgrxvj6N8q4V7xXuxt5yBgPzkvHPWStPAXcW2bu51mcVbi3PIs7HnnO2Pz4SBLuOYeKdeI5hDmP55CzIeCrMKcK4S95MHKIWAhocA7EcwhzHs8h1cFArvu/HMLkeA45Gww2bVpCySG+9fdxr3vRlg5KDrl79a0f9MBDYs5SckjMzFm4Ny5btIWSQxo2K+Ke+fFwN0oOOX3o6wXopZvH+FJyyOtDDzdBjz28s4mSQ5wS9XDvfZZwHCWHHKmoTYGe/C2QQMkhPRr7cK/e2lAdzyHMvzdP3UAGeviJLs2UHPJncdYO6O3z6ktRcojSzzm4529/tRPPIcx1hsym478LqPa+g+cQJj+fhuWQWl+gczWCkkNkcrAcEuIL7LKDKTmkK0sa/52Cpc4u1hxi6QvmZ7/DcwhzfYONa/HfQQjFzMRzyDjz+O5swX830frAnpJDKo5hOeSlLxh6pEfJIa9HvuO/y/j5tpaSQ54+68d/x7HaQ5WSQzbVyunC330ojhVSckj1nZEk+DuRr7dtKTlEWQrLIQ/9gYvnDkoO0R/Nw3+H8jFEFs8hzL9rtOn0Z/i7lbNCbZQcUrtb+S/8nYt85XFKDjm40rYD/i5GNpqaQzj/rLCBv6N5UVGK5xDm+uZrx/Df3RiliVFyyAwdnxj4O53bicaUHLI7eHM//F3POAc1hxwK1qiDvwO6cG6QNYfQg8CDyHY8hzDXwXNIZxCYu/QfOUQuGJSyU3OIffbqu/B3TPpNLpQc4tC4ygb+7mnO9H/kkHkhYNobcUoOSTWXyIe/q9L3/0vJIWqdD/H/Pptw0wtKDlm3F8sh7KHAbT41hxgpYTlkbygwTzGk5BD1J6t84O/Cwnb+I4f0hAJppf9yCJN/qI5ZCX93Nn1PJyWHXPxY8RP+Tm2daRWeQ5j7p4+G5ZDnYWD9uamUHJL4qEcR/g6udjU1hxRkdPDD380p0/lZc0h6OOD1XUfJITyhgkHwd3lyR/IpOaT9VIs3/B3f8hfNlByyaiGWQ9zoIDktmDWH1NLBnmP/yCHcEeBw3G7WHLI7AuRXrgkmfi+AcfMHe+7D3y1qif2XQ5jfazyHVEaAoO3/yCF/IkBl7Q88hzC3H88hspHgW2QSJYes9LDHf3f568R/OYQ5j+cQp0hA4/wvhzDn8RxCjwQFdY8pOSTMZUoI/B3ow1/urDkkIxKsE/svhzA5nkPuRYJ3VcmsOSQqEhjUhrDmEBds+8v+yyFMjucQo0jwoekfOUQmEuhF/SOH9EWAgIH/cgjz78VzSGIEeNlfwppD9CJA8Ip/5BC2CHA+hZpDRmwX4b8LzrxDzSFPa7AcokkH3dHUHHK+AcshXeHgaloAnkOY23P6jgH+O+WrodQcUr3VB/9ds9Jcag5Z5PnICv4OumQxNYesTRhXgb+b1m7IpeQQTg8V/HfWzrLUHHL0RAb+u2yjW9Qc0vygCv8dt3ZbHGsOGQsBPvV/hKHnzJznluDDPWc7UduXhBeNzad0Psa9aPOo023Qc2bOd0iewD1ny5IfOwkvGt7nrge4F/2ni0aDnjNzHv88YMclIqF8CuFFw8+/CXadveANbFc95YGeM5FzJgZxz9lBt/0T4UXD75dkM+5FF+yaNR16zkT+lxHigp6zUpTGEOFFY/P1nTX90ItWMO2eT/jPGM+Ywo/7z8kumlHQf2auo9jYfwn6z5u28j+BnjOT158xMISecxGfxlnCi4b3U6NWu6AXXb5910/oOTPnNwSYroCec9VHdRHCi4bHsfdFCvSipy5a+BZ6zsz5FbUlftBzbh+P0iS8aGy+rEG3E3rRPKKirtBzZs6nNv3BPec1Qw2jhBeNzauumSoDvWiTod/t0HNmzgcozZSEnvN6I81thBcN718S5nyAXrROx+m30HNmzt9yWGMOPeeaxt2LCS8aXsdVpoZBL7p9z/Y0wn+G90dNvJ+h/zzaV4X7z8T7nmn1hv6zssyfZug5M7m6Wetl6Dl7TH8pQ3jR2DrZYhfdoBetVuLOBz1n5vwl8bgf0HOeq2v4nfCisfkWhZLZ0IsWOLkn6vwKNK9yZYHwR/YQMFvsxN7h1jKC35hr+dtqWjAwC1x6DHrOTJ5/1Qn3nD/8OP2b8KKx9S0q2HAvelrKVH7oOTPnf4sU4Z6zU9ElV8KLxuY/3ZHAvegnFgO458ycX7XSPwZ6zgf3X4ojvGhsfj/Xl2LoRZdsVcM9Z+b8YyvQDD3n8V69dsKLxub9+X5JQS86S7MT95yZ89JdbwOh57xc5Hci4UXD+9k3YbgXzXOT3Rt6zsx5msxx3HPmNI/SIbxobP6r2hbci760ZWtAWlg5MR/jYqLzLgC7j1B5gnvOxHV5Zp0N9JyfPzgyTHjR2DptR+7iXnSyEn0Ees7E92LmZtxzfnjhPh/hRcNcc7wJ96JzSqJ2Qc+ZOe9jfA33nHucq18SXjQ2P/d+HO5F5/JZRUDPmTnvryiKe84BBsO3CS8am79t54p70bcu16RAz5k5XzPrFO45N+WwpRFeNDa/+JMO7kUrLNOMhJ4zc97O4zDuOe+tX/KM8KKx+Y2zP+JedORXbnnoOTPnhTmjcc/5r+fZ24QXjc3vKDzIDr3onqyEAMJzhvdlF3fjnrNtWw3uRTPXWU+/gXvRnQenR0LPmck3u384BT3nNtdiRcKLxtaJs/BQgF50luPUWdBzZs7bBMyPgZ6zx5ULXwgvGpuPP5UNoBdNN/2WCz1n5rxvb6gs9JztwLFQwovG5k+t40qEXnSD1egv6Dkz5xdIHh6BnnM7n4ow4UXDvJ2SOQN60deiL9yBnjNzfu+sMdxzBpZXsggvGps3nlqPe9G6p8Y+Qs+ZOZ+i4PMLes4ZvByqn0j3EXfNTGdBL1qm8k8A9JyJ65SqXB/0nF+9n/eB8KKx+ceFsSugF33ImPcd9JyJ88MevhboOTvQbLeqkO6P2qcLaEMvulN72x3oOTPnDWp34p7z0YrXjwkvGpu36craAL1oB7f5FwjPGePFaTNKoef8bcH+7dCLZq5TJ6m5EHrRScFxDtBzJs6fgzRj6DnLKs+5QXjR8LpzrD8BetF7muyioedMXEda+lyg5zx995EKwovG5pOF1ztBL/rvMhFX6DkT59UIl0zoOW9fnupIeNHYvHM72It70dYLY6DnjPanNSf0nB9vyDlGeNHYfPOJ7t/Qi67lcml1PIvOw0XP/e7MigkB8puWGw7GovP2lzRlyUbzIJApk2oMPWfmvKyUkgH0nKPcRBIJLxr2DAOcd6EX3f1xSSb0nJnzvNsPLoaec7FI8j7Ci8bmt28ZaYde9GH7RUp+JWh73L4YnFj+Oxh4f1eXd9NG22NmIdJWKhQMWm+nHSQ8Z3h+bp5/FHrOOyNsDkAvmrmOu/1d3IvW5eS9DD1nYnu2ZuGe88Mlq7gJLxpeZ6tuXYdetNWvQUHoOTPnuaYkbYSe86tv3K2EFw3vi+NdXaEXfVXJ5S3hOcPz2HUu3HMOPxqFe9HMdUxXfhWCXrSDhKsj9JyZ/F2NbRT0nDdI1XISXjS2jkl8VRX0og9ynH5K+M/wvGfpdBj6z4eKH+P+M/E9bd2A+8+c2x1wz5k4n1/Sxz3ng3G6moQXDb8vdB3ci16Rmox7zsx5QE/GPeeWQ6bPCS8amx+NE8S9aDluSzPCc8b4AlGDDOg5257hHYReNHOdM91bcS/6au+EOeE5Y/MTf114oOdcurcN96KZ8xPNmSPQi9apnLIEes5M/l7oNO45H5Rc2kF40dg6kT/UcS9aRskO95yZ868ySnDPeWTHd0XCi8bm57AL4F60oMONYxqJ6LrpluFoY7QoBBjnuQTOFUBcWCO77JRrMDh/bY8V9JyZXDLwHe45z9bKXEh40bAfWCuLe9EbjDu6CM8Z4y97xXHP+eWUJtyLZq7DdtAK96LLolS0oefM5NqLY3HPeUUl+1HCi8bWCZ55B/eiN3y/ogo9Z+b8Hos/uOfsREvwJrxobJ5XzQr3ok0PaPASnjPGTxRr4Z6ziFYP7kUTnxPZFNyL9nshuRd6zkweLxmBe85RXI4nCS8a3pf93N4HvejL3gmXoOfMnJ8Xdg33nEM69vERXjQ8/8wvwb3ojoEcP+g5M+d37qqYDz3nD4eSHxNeNDbvuf/PE+hFyy9/gnvOzHm6Zbo+9Jx5Kj8lEV40Np9k1pgEvegnS0+mQ8+ZOc+3uAT3nKv3d2kSXjS83xzhxb1oiXRB3sMm6LhvmUrn4hsJAnWX1kmWzkbnJcec9o/AOhiceCxwCXrOTP48fZ4q9Jxd1Cz5CS8aWz98+3Uv6EX/ABdxz5n4vOntwz3nXRw3VxBeNDb/lksb96ItXt7FPWfmfPRlLdxzXqp2xpPworF5od5DDtCLvnLCLgx6zsz5xjPH50LPWVUk7hXhRcPeTFS3CXrRFywtcM+ZOT9TmQ/3nNtfJNkRXjTMpWHsuBdd1W+Me87MefsF23HPeVOwfCvhRWPzAgVncS/6XmY17jkz5+esW457znPfv+0jvGhsXqFXB/eic0Oi5kPPmTl/w9bjMPScX/499ZzworH5z5v3boVedGx0vBb0nJnzVr+sbaDnHCOVc47worH5583swtCLPrVq8zHoOTPn/2wWLYOec7vbBRrhRcP7+j4XR+hFmwwarYGeM3H+Cem4BD3nXclWcYQXDc9jhQd5oRct2r6wBHrOzPk3ZtbfoOd8VCXBnfCisflM0Yt80Iv2dO3BPWfm/Mvsmzuh5/wnU3Mu4UVj89y8b7KgF81dp4t7zsT+yd+Ee84itApLwovG5vW4lXAveqZozwzoORPbs+pGF/Scd6/fOkB40dj8uTeXRaEXfeRBewf0nJnzovV2uOf8bGvCBsKLhveVDwdwL9pT3CEWes7MeeNAuyDoOUfdNQCEF43Nv5ueZgm96M/2XybESXlVL+z+Neg533hyYgrhRWPzYhrmV6EXrS3Bpwc9Z+K6sDx8BHrOjodjUgkvGh7fV/QZ0Iv+Y1GxH3rOxPXr8SUf6Dl7RI8YEl40Nr+n3L8betEKrS6/oOfMnO+J5auGnvPKVarchBcNrxev5NZDL7qRxzIXes7MeQ7/MTr0nF8rHdtJeNHY/I3phibQi14zVWsr9JyZ84YgFvecxZ6M2xNeNNyfn9gcoBfN23qmBnrOzPn2fhdB6DkvV9ddR3jRMI8tyvsCvehVIWXTCM8Z9l0W25NwzzkqDfeiie/1hk24F/1G8u1f6Dkz+QzVyhToOXs5DUwhvGhsnfwRDz3oRbe5Ku6FnjNzPjztlwb0nG/tuf+A8KKxed1Yk0LoRW/R9/zS+KOc9j99PS50eJxEW3c4Fe77loYUJUmKSpGdZJTMp1IpZacSpU8DicwiI0Qc80zHzpa9j81jb3HMFmkoktFQUfqd73X9rpw/n+s+73nf+1n3/cf5+5f1CWgAosend42uVDwhTFjBSK2Hv/8fbzqkdOajNwXbDm1191ft/Rcnbtrfd94rEoMHKyX7ryUB2/8+gQ1ww5Z2QV8kFGf8VJw2/mL+w+uWyu6jVVIwOuJLzKYRn3/4aK1Y5i1jCp65dPzYFRubf/F3heZvj72nYIK79xFJg75/50hv9xOqkqKg5dpVMeXHev7FRcq+vXziGYmaEwxphT2Z/87p1tI+nisaitap1mLfuBv+xQXmVOyaiWR8TL8toXow/V880Nu/0e9LKBbuMYlRTlw+vydpX1w1fyTSX3BuV3Jq/BcXV/u2q5tOQcf9R2x65VP+ndPWPVO18XMYhs2NM1NXLPPmJbJlt2sUHXfoKoqKxC7HD12MyXFro+Oj9ADsqo7/d84R455krtAwbEiQ+N0QvsxnbvK7YkEvKrbHyXh7c4T/w2vvbT39jkTG9eMe7g/67/2LHyCssRE1IWOUnTh7rsQyn84Gb6kvyqk4Mxi5ePcZ9R/+g+jpA2J9JAyd9CZaqSz/7t7Vh7qfqdHwbmvpL2fu3H946cKY6XflBIQdKfVJIU//4b0JpEBuhWg8DoH8TgLLcVEB01FFxWjU+R2WqTCS9+8c/d5FiCgl4Bfvsmhb/+XfTSx49Zw0RsOfMoLnxSSJ//AiVp2idrIkjLo5qRR+tGv5ng7PPZSEo7E3bzZiLLroH56o/XsNbZSAn2/S3Z0NlvmfAUb4xW10LD+kvdesOPEf3urQ49Ezn8NxY5vaX67h5fus993jcH8/DXcUPReyWPL/h3/dkBjm/5qEwSeCBZ4nLp/vIV9yKccmAsfGSe6X/1vO7y+tlmTDFCKW+VzZlWrU/Q/ftd9J76JnFD47P9xQ4lrwD39LRfnq2b3BeDfHYvf7Utq/+JYJQVEvTyKuyxPO9ZFZvufFBdsXPuQI7Do3aEZxXuZ/8JbygqxlFLbc8SQV2i7nkbBXfH2SQTD+/ZXirDDU8A9Pq959/YEgBSm/Fnclqy/zfPOJ+AOXi1H4YaStvjxlmef0MXX2LbbBGLg67eXEruU+mjXK3y2uxMIbWewqgKx/eJn+scqCkmAMqXNpbXu/zJtJU6t+3U46hh8keVwTif6Hv5tuZu75JhwH31MKNHd1/sOffBQwv4czCjXuaT32Hiv5h/8j07a5gjsEd5TEP1mcXz7/T83l96RWGvJ9YLt/nCfqHz6nYNt2u5MkZISLch+4sNwv3Q5tnVp/KGifss3R7YPlP3ziHVGFSl4KPoko+NrCWM5XlEKyzQ8vArqWX+SIVVzO76SZwWk//Wj8kdFY+WNiuf6JO+0dEsWC0a7zHK/vluV8KcconMzziMIFmR10vsHl96rdGb1P2R6Nc3vO9w86Ff8751xv77pnkwQc02zm+ALLefzGrCtz/0VBac+n63QMOpbfdTl0Z2hhJK7175iy9ixdnj82Cw3vK0KwWaY4MfbHct6FuvoKJvyjMEPlVG2zXOE//AbvT7EyfME4deVw1Irstn946ilSqmgLHW01bHt+t1T8w3slxzIYpDDcscGtJimo/R8+ZVKvbelUJI5w3vWvWFf+D3/qV4ode0go0jM/sStwPvkXL3ypK69lHYLTkoIJzx4t15voUa1x8xeRyL9p+kv7NY9/eDUKIe5wIQXZ7mj32/Mv59eV7+h/zeYUHAjZIHdSYZn/caHH6pIxkWg+Yqj11nE5Xyfknf1yJkKw2vfY1JkXy/dPsPKZPEKj41TWQamb1mX/8DuMbWQ8vofhrowSw4YDy/Xg3SiSl5kUiStO85q7VS3XT/PBZ4mZz0NwXZrkXo751n/40vkKIQNjOgpcTSubU6j6hz+k59Jqfi8cs9tn4ycvLedrjaabA602Cm8lvmyUslru0zXaiTsGEoJQ6uDKY6Uflnkrz3uQi5cikWezzKfj7Kn/8OyNLYleVqFYmmExViy4fB+ZT+/53jVHYNjgTYj4WL28R16ITwmeIqKcnr71L9WWf/gBrnpNB7kILAvMk+N+UvsPL3/oWl3YKBHZIpT2fYhZ7l+/Jz+1SUmhOLy/7BbX0eX6f3X866VSjUg8m6MWb6iw/F4BW5HhRZYecCqWaTYtX34vr4GJ/lqWHrh0u+AS+f3yOR57lS7ymUah4NBxnRfGy31karhJd8gmGKPG+z8FvlruIymtsvxD7RS80/z9eUtrB5Q1bRHYJ1EPwgc29q0oo+MV3ZYq3NcJL/kUyb7FdbDiWpovcYyOH7jOlFmc7YQ79Y1Xn6nVQ01P3kz4ZzrKylwz+BXVCWF6NVSv/DqgL/g0mq+NxC9E0xfbIlrgwl5xYgOtHvhTVKKKjtFQ6N1YxO+OFmiTLntPFmyAC1bddBUrGqpf1Urrs22BYbOY20sbWPPZVl72gAQNM4TX9Fy/y4C6P9bXqDoBoJhtIB39nYAjP6x/HW4sAbLQmfbOHyFwfkOgTWM2AZ1EKkJFE0vAsyjiFz/hIaSEi64495iA1RPmWn3OLfDtTblul14geF7NFfotQ0PvvT9qdgS2QHDKx893roVBdzabirQKDQ9OXFAPkWiB6hu0q5MioZC2ec8x959U5J26eEzsegucISzFju4jA03r/v2w3TTU0+k4aA21YHr7XN4Uez3cIrDbfRIKxz1f1D5tk64FlTdGfGuz6iAvW6r03IZwlOShzDX310Lmzs75q4114FRAFt3+MBx5br5rPU+ohcDddWMzJ+tA6NnTIyv1wpFmYe2Uc78QFlamP7wzWA7vb9T6NPYHYvh9MxC5VQQN5C5Ns+0VELX9bIL4QiDOr/X+oU0vBKCglHBmBRS5bM83HA5ErbjBCzPve0BpRc0f4WJ7uLpe7k2vMh1ffDpmIJvfA4k/OFrjU++CiqlytY8PHY/vdCiTKOyByTXYX2B/A+wWHFZyPKCjxw8z6e7vNQDKcV4uKl5Qt39bxfxEGMpzDFjfD6wB9VuRtqe22MC5HcE9w4/D0HdQpoOoVQt/hC+WeqjYwYX5Et7GXeF42G2uP/NsH/CY9r507C+DvFbjmw+fkDGLseZXMWu+3ahbr3v/bDlsNVjPpfubjHuIcmfkt/dB00C1XaN6GfCTk22ezJORczK029isD+JtK4khpHvgvFuofwOVjHnXe/sGxPugQdC6Jt/zDoyoBpuuGCOjb5WwpZZFH5xY7TG51vcmpJNKh4vDyHjvFFt55MANWD/lFuPUUQ8hI2+l50TIuHMyZH3wOlc4dGWNOuc6lu6645K6NEjC6ijSnc5X10CHw+Tlj30s/bb9lLiOJBk5jlVu/NV9FSR3jO8zNq2HomNRUX2yZBzTzfdiZt6CzTY83ORvdWDPI/kqhJ+Mrf+95v7veh/IhlN3Vz/3hbNVN2/KEMh4KiDfOtOwD0oDsiVfHyQAl6/qBqdEMnZo+L31j6wEZe10S/KJTBh69IN7rDQEb+4vqT0yWQGG8723+Q5mANFsTYnX2RCMNQ2gqaZXgo7ZuSLhniewdfTF5B8MwRMZ667ruHfAXT6OtXtyEUxzJzi2s+a/GKk1k7aqA3JMC4w30hAeS9dcUbtER2u+LdH3pDvglgCbgJomgvh5S5tKOzqSP2azQVIdfOl/kZHdUg1mT65E+P0iYqzq1CQXVz2IJj7e+ulrNRjIPnWXP0HCh4IFJk7ddfBGdiT8dE0NmMrSrz/YRsLR+k77KK3boLdJQ8fJMRtujurd5uQl4wpzPVFzQw/o6N9zkN0/C3xXpfgUV5LQPcXK6duD+7AYHz/VWp4D2sOeHx1bSCjgwePC+18vXDit5K30jAhvrt08t2QVgZWOqRXsbr2QmxR3uY4rCH4bWUkoqEdgxsHDPjEsX6OuE9eZy0GCq9vMB8Pnabi3e29b0O82+Nh2T/VbZj08O3tpgr0jArubzwUWarbDIFuTgDAr75vYwxed5yLQTfH8S2plG4SnO1zzF2iAkAP5YX0pEXjBYovucflEMM4x/PrtVh2sZd61yIkNwYM/MtzJlglQVLzF6eZYHRj2JSwS/oTghE6mN3E2HmRzrrEfNKmDx2/Fl/Y6hyKvWorDTzcinFd1MNb4lgdp5Vvqt7N0+AaTnqOCXBRIDByrNGjIB021jzekdIn4vjtzr7gXEQafGV/uWVUARhJtR0nJROxO290c2d4JlfEyMdGej2Bh+l4KaWsk3vjQtXnXpi64lKSinNweBtfPhL/ukorEmekgR7b8TtBV/THVeSYMrJ6dUrDfGIlfCySma22bYL1lWUUaMQk4bh82d69h6e2HpFNfVjZBxhVxB1nlJCgwOjXb6cDyv64aJ4OONIFclVXk7eQE+HvGacwrnoIS3zG9JKYXOjneO76syIUtNo+lr/6kIaPYTHB9Wi9IiVR4+lKy4XNU+8lLb2k4tltVKuxpLziNhqza+ykHvpnHpc6G0DDfb4WG5P1eODlj/Ge/YQ7kKIyq/1CJwP1mFsZtla0QcO/Dl6t7qeAkNvdGd00Epm7/aXBtqBXGtrrG7VkiQq1vuNDPrRG460FFUpRYGwTm/NwVbUmBI4pcvl9PReCtA0YbLHb2QtElEzGSqj085pfoHn8dgQk0qQuum3pBvnmm2NPBG9at3la7aj4C91l43evdYwPcVm0o+IQGsqkHg1S3kLHTly1EZy4TiuX6lKx+MUBxQdzhx1WWv7viUnVWPQs6w6tU3nwtgUz7GW5ZYwLqkDcKlg1lQ/yFtg1L1QyYQ02xIT4Cfn3FZ15h0AcHhscDfjMRkvQbXBqTyLjo/97bMD8DjnpHHQpRZQDP4G8ft2QC7nMVGC4MrwLXAI3E8P9qoE7T6kOAUSg67xPNYKyrhnmxy4/9idWws8Pc7SVLt1z/m7u28WQ1TPD8eWb1tAZe1TCi09tD0Vuex1bsbC/8eLd0FqstQbpKzys2PAIXev338ZzqhVjttKpP5W6wN8M46W9EBL7ko6i8JHbBPl6yujwvA1w+dKy01IrEgU9XsrZc7wLGjEd34RsGcIa+zExTi0SZ3AM8G1h1+BOf/oTfJWB48npWG6sO48M+Goh+Z8LdjrXdr8VTQC64wbVNkYLVWcWOTlJ9MHNZqMRjcyoUCMp///ySjEccoqrJ00y4rn9Kb8XGNIjpUdc9xVqKYUFRzR6SHaBk+DnAYAHBaOznHbSlI/vo4/b/Apmwz8+b91dTFtzBUX6flVScOHVIaNSKCZvj90TO7M6ETQzpg7laVJT4ucZHlMYEzeN52iMjGZDMb0jPmqCgfqVfrnxcIYTJqZ7iY+nWm+yxb/mfBWLiZEOXh2YR7HzdUEdfVQyhX+xM4UsgvjEKaLa4UAj17zrjbJSLoXu1lcpQTyAmuefvStWsAp0Na5J+KBfCn1oeYohwKMqsVXxdyFsNGifZfuzlK4LdFZcmuZ6w8iLU6NX8pRK0r5lF8UsXgeN4DHHbbAg6n35k+oVWBLf838aLixRB4/e9Kf3sBIxPzKcnKVRDv5CAheZ8AVgQpue9q0PR/WJFemVRAcwHOVItw6qhZZC7WrkhEB8dEnWtYL2ryuZ5uuNANVgzKh9LsN51wfQTV1lvASSfzJXro9UAuzdv4PqmQLxMI/P5Xy8E1Y/frS/WVcHbQ0G6csxAPGd3QmFfMQl+/JxNKD5fCf3beNZauxNxtm/7Xep2KrwnP6Jsn66EFRcTs/ZJEVHqmM9i5SAJdrz6OmF1tAryYkI4398l4jDlamLUwypoXEGxsLJNg0ujAuPtOqG4gefA9WSHavjvzqAme3caGPh9X9w2Hoqt5nN/ts9Xwc3wT4bH/6SDa4NOpictFLXUbbimbJlgYBT75Yl2OkxHrA7fqULFVVih5XGMCTrTtTEfudPg4MiJyCkKFe0aT2ift2ZC7jpuOdukVHB0DvUsPEZFub123/X+Y4LAInUzVSgFXi8qGjgbUtEo0vDxfda+9h45I66Rw+pfM8ktz1n72tdgZMbFvQqEdEp+bJ1gQHPP7mH6iVDUXnHqx2heJYgNMw89opfChU2ZI6bNIZjdVHnw9sUqaDU60zT2sgQe7f56/6NcKLZ/UzwhfakJzBbOQ0FGDbywOOfOVUBBjztSw+EaTZBpFXyVh1gLg0yyp0ksBSNtntRLjDdChv7qtvSvNVCzlLBaxIyCG9kyJF1ILdD+KJp4KqgcbBQCpwlAw1xdMVW1lBa4M2IWcjC7DLqU7d31z9LwxWX9gOIPLZDrf8hnybwc4qKnBN/ep6HG0f0Lk1lh0EMrra51qYLBO2Jpx9qIuLRVYmNecDgc15FXn2ZUwsZPRnmClUTUiJWczy0Ngq1zCodFcyohte3wnbccJORVd2H7SGJCPr89U+1wKqzli/wkN0vBzeLNw+fCmDC953rUzdg0SDT49tj6BwXL3qpJ/i1jQuQmWTHTV2kgzlVA35ZMwbYLexqD7iVBsnhBcTAFwa7yvpkUZwg6NHQrXYpLhkNlWjoccwjXl6RmlUODca1F3wPnj4ngffzvCTpbHXBa8yu0aYcgo0+3Kb8lCeCbbYjEtTrwYqvwchgPxpMZlddnFXsh+nnILZVLkdB//7pAZEUE9kubaz4X6QXSltLqw51UEHikBg1DEUixjxatNegFR41i/akHVJCU9YxXD4jAk7+hZ4t8Lxy9KbmCy50E+tDWF1gbgYNNbHYyumWwuLohha5VDKkXDXXHBoJw/LSfZolxKRAFFDdz2xZD5klI3msahBSJtfwrS0phKJVLcXVmEZT2yRBSA4PwxWdydT/L1w2UXHoQ15kAi2qWAV/XkLCdl0/avrcO1hxVcqz5Gwcdrs1+GYIkPCFarTkkWQ+pH57Y5isnwPWTO36/vETCl/VHN1zsLAXVNKdJl70lsENF+aAkNQglz9V3Sif0QKWKXnOsJUL/oRjj1Sw9WXIyb8Wj5B4gmqrr5pbWwpug4j2rSHQMUfhziK23Bwj/Wd0M40fQPnd2xs6EjntNtE9zDvVAnOnzTMmVteB7t66WR5eOGW+q3vtqpENgcnH/zpVRLD0e5bJ0PAiLiZafJUXT4XOV+pEbV+PgjlQj4+XZILRIkdm4piwVEvMSHOOCY2BdiKLjroYgJG063cwISIXXJJvTmdsSIOSw486RviCskSq9e5c1V//Ue3zpDEoF7Q/xye/TQ3G9jEbOIedUuPIxrHnqXg1kvYvZXfw8CCtj2QykTNKAfFwy5EdwNZCK7v7WDAvCzYnck/ki6fCtfu/mRzo1IHuBjWuFbhDGfz7CKbGbAXveX+uxKWIA8eaxg/29BAzJb17pV8aAfs/THdtPlcK91sfKzrxBmMfYSKfPl0C6VwWnlW8p/NIRYak0ApooiG08MMOEBgot62VPAbhxfIuS16Rg139pq2tamaAiFTNWxtonO8/sH5Txp6BemcSgYAsT3L9fueftWQA75GKOagZSUO3Uq0qpCSa8Da+pdG4thPuJJ46+OEXBC7FOi1O/W2DJItyokl4Gn45DiyCBhtzrdYiLh5NhpdCUjeye26Cz46jldkYw+vY5dGQmpoCFZO+PO8/uAin9jd4V8WA83nJmZdreZPht/uT1RVsvuHF8YjSqJhgvXA9r4BTqgjfs/loL/aVQQV9p4rIvEsX9dW9cieyCpHMrnpzIKoVXEwc0Io5HommsCgWFe0H63Fqde1sb4H0UveHLywjccyygsv1rD8w9zCMp9taD0q8HyvqidDycFHBMh9V3v6N5DtKo9aDBb89ZNByBZdFyAxEEhKqhn1rpcxlg9teI/40ca4/UbIlLZPW/TeZbXoveJ3D0ttr2ovusubSGp8NnFmHnE6mqhuJMGNnfO/7ejYgpneHbR+0SoXj79lU7jiCsHPObvu0dgvfq2UeDah4DR5HuGfFLCH5ivFspwJrnLYeENHUSYF3+9zOXP9aCo8fxmIvrQ1HCUlhF7EUCnLBaFPdOQOi48qFltCkEve9cXU8ssQFhwev7Wlnf83n0+VXcZjLW1W3lMuYoBbsE+1zh+Ur4IUwO4zgYhPMl8s4+hxmwlD7LSWKvAlXG1gNjLwj4iqg402DP0pf78zXZFyugb5ArSu4rASmFA6NU/T4oPsw9IThZAxp/9u35L4WMXSfl3F3lW+D10YGTEwdYeo85vvHCXyrac0nuzjRqgUBHkYAgll5QHjORUOWnYWDcs92KjBZ403pVePXzavhdNJ/hfZGGDa6594JPl8KLDrUCzUMVcHHxapLJuSAsPbHxw45LDLgVVPW0YaocbrtFTf2aIGDSwxthi44lEObw6/nx2Aq4F+N2SzSMgAK/pMiKqS3guLJP1hyrYGTvBplfrL1j1aAUzldZC1OxH88KVyWCmJFYgZFDOM6ekJSpcK2FF3qB17rKkuFpKj2WciwcVTb0TkYW1YDFX+L37zZJoGLzw/VvVRgq3d5k3dlbBsPabCevBxVC/znuVUqCwfilTkTBpqEM0l1XimVfKwK2U9bbfTcHY/jczQntmVIwvRqb0hldCNSPOkhODcL7f/lPU7prgLtNTC61IwX2J1bYnn4ahnXpBzqVHrWA6gzHe+WKbOCbnpUfUaYhrUzE771hC9hfuBU1tzILcgKjPxZtoeFGuhunZ0YLHNwpUPuZkAlWL2JSx/RpqLSroMFdqQXMZRr95nUyoPJV0tLtFTScV/ZHRfFm4OHZKS5pWwiT+atOR7F0SN3rj57fiM3w0l8meGV+Iby+wrUUGkZFzeZ2M4ZqM0ybyahGmxeB15HjxQdY+kS7fbzuqV8zdGk8EA1OK4Kn7xynf/tT0f/7VqffHxHmP7/LOJFcDLPtVg0EZyKujXIeXv8A4dpAbMjvK8UQbDyo4ShJRBX2RA/TfoR132elUouL4NPshxPPbxDx114iv3sQAtmaqzXhRhE4/3134OEBIsqcLH37iKXnSM1+IqRXCFeEAzZa7AnFIA3tT/2hlaDx9vsp488IbxI/FmsVhKCow989+zsrQSB6pqcgECGHJOX6cygEuQmcO3KXKmAmL+B0OWu/zz15kN99MQTdX60f7KxmQrXe1nvuIhWQ4t7d+D6Kgo30dwu/c1l63qZT9plmOXQ8P6brxmCNGNtSiaLnTBAXN859q18OqiXpSVPXKPjeu+jww5us+byNLaEhqhiySz4d7Jkm4KrZtLR4lp7ru1aeFNlZBMab2TCJOwjX9n9LW01sgPujwxGhsyWwudeF/c1VMs4xP150P9gAfFEaRgXIgOMveCxVhMlo5QrJmkINUHUj86dzZwkUnqnVYuMm4+mzNgddoAq0LU8J0VKrQVTH3JJndyj+Hr1QW/+sBE7Z9u4x3l4Mq3QMv0iVENDmo0w3xc0bBs6brVX5Xg4yZy4prI1j7Wtjfm6FZ/7w2yTZhiutHM7IPey+ZEBCmPyqcdL0ESwtCsxwRFbAXv0N+d9OkXC4/GvVoWSEPyeNeuyepYPgS6eppaNEfLoUdW3P8VZQqQ8UPeBRDhPRTyR5y2m4t8wLDK63Qvt6AffTzmUQP/dLmdRFwyrJjc3hHg0gOv3c8PSWAhiNbkmONSKjp6hymt+zBjhj35utq5cPHmc5oproZOy4GZ6T+70BchlxUr81C+DCoucP62wyrhUKtwwSDoUrmzjC9IueQJf/i0/sb4gYYsL726E2DHI+G0Xp5meCLHmz29pWIt4cFN+R8ikQBIocnz79lgHMIgM/HxES7s8yLG3ZRYKP3DfHXXqewOpZiwFGGBHPiYhtbHcpg0ej5pf8s+rhaanCQ9fJINxpr/2QcaccVDQ9akST6iGmO/RWmkMwvrj019r9bRkMjhaWFWxogEPXDfeXigbjs99LaYvxTDgV0ZhznlEBJyTjdv0ZoGD+WF2nG5EJ9kdXTR78VA4zdumpfF8pSB3duTP3LhPSvHt+GJVVgJeaLOGDOMtHjDmyoXgrFL9jD8+vYIDuM5GipFQa0neZ0M7vbAUx/ua8o4WlsDTaEnDtMQ15en6VGHezdHvt/qGIOQa4M0kuT61p+Mg+iG0PWyeE6IpEjBsGwRC/mbvFUzpu3nR6f+KxTjihs1twdwgR5MzeGn+aoKPunUPBwd0dsIKR+1vtGAl0H1by+1TQcSbB+zNE9cLu8kcDYkrVUOHWV3/+Dw1vbhn+GhDUC4s2a77vFquBznXHK55uj8A1l1UURWx6IeLTyWT1rdWgeEP6wsvzEXikokshOLsR9GWO3p4WqgQr448D4vIUVDTTrzA93ggpqWdNlmYr4GedJ3f9OBl3iLPJVz9sBIvGdmE+4wp4s+OY82U+Cu6/aHjzZ1UvaO3SJrL9rIZvdzY3LRSx6i2RuG7qUzzkDG9Yl1KSDG3GOY0GLqFYqqDdYzv0GL7vPng4vy8RRPLoGjdUQtHcftDl3XgCcP53OqZhNhnK4NshbQzBvi8MX4f8WFjcR3r1a38SKNidInOtDcMspbLK5jutUMV/vknmDwNC1ndF8AyweHjkq/e+ph6mXY5sasiuAraltSdTW0m4IXDT3u6b9aAWZezsJFgNbjc2xpwKJCGXT+GH94/qQXTl2rmuH5WQa7ymkfGYhLdH88+puleDy+xVaql0PrxRHtO0mgrFuxx6vB9mWbwT7vCPN+ZCeMhq4aMqYfhbqTbroV8N5F37OXpmZz5032CTlYkLw6pVkdIrrlaDh5bbl1csvyh36ceS7ItQnM+MFO8UrQHK+GCPyNdKuNLcLDRmFoZdHBKtJkdqIFXxcMyRuSpoGDm+aelOGKZ2PxnxP90JH7m8A7m/RoG43vwe7yk6cm6WHS8e6IAm03s2J3dGwYxLt1hENR2PWs1qXpHthJIKnD6hRAOtoPgPXWN0fHFoL/t7zk74fjpGMudvLJR115qb9tHxyJVqRrJBD7B9/Zp26i8Dts1+VAoZp+OD5LX7Sbt6QGmin5LfwwDlIQMD5w2RuL6bflZsfw88t3k1x7aDAUefuMuvXhmJNT/OO0zJPAUnIRdZde86CJapf9OuG4lJOb5pMiVPAZ1Na/4G1YG2VaFQ1cFIdPoplky3egrSJfOmSot1wOofNsETkfjw7PSsS1QOSGTt2zUt2gCtETJ1J/4Eov7hr8dKM7JA5qnPeSPWnE7oMf2cfISA2i6Zv7cq5EDEr47mgIZ62P4sW16Vk4C2nNMuen/zQNdXR/CCFBFIz0nDazsD8fB/sWauljmwn6PRM7UyHAIuZq9aYCeg99O1fwuIuQDcdlk6bYGwZ1MJ7d27QBSyezTgkNMM9PWD3CSrOlglxSyKSaLit41vVr2yaobAQAO+fS11wO7o+kPFkYqrpK66nWbt91vp0k6pxnXAfev673cGVGRMZWgc6nsKF9Q+N68+yoBzx8e0L++PRMsLjnJh/7H2Zfp5r3uLRCjQtNC/voWIdP/bS3vSEYx5Hj6R5Q4BlcGRdU3HWftagjuohLXf9/z577/+aBIEXuZaI3iTiKFfLL8o+DNBY1GLGDdWBoWX+gbY1lExtklsaac+Exp5LyxMzpVB58kQz++uVPzJ7e5ne43lUwii6n3zpRDdG/5IUJ+KZmnSV3/IMGFo4j/BV2plkD8TXX+mkYp8a1cYhbiXwItjbJtVDBB2ZdttOk0i4J7TbKv+3GL5KI/vu4OuIyg1uFLKZgnYTeM/um4FA6TnD6ypr0Y48PrZy9ZGAqpO2Ei3fC4Bv+rJcMvJWlj6am3IV03AfUL6H95OtYPViVX2FO9aONweUCekR0f5BYXjvfHtkNkXIOFxnKU3eijOc3vp+FHn2/36FoSXxzfyitjXwbNnGUIfzIjo9yqttpWlPww5UjlHWT5bhrB69xZlIor0XdzqcArB6DAtl3K7DkS1VB83riTisWc+IZNbS2Ck+rt6LEt/HkhY1zhtS8AqXW2Nlaz7b8jyfj7yoQA4JIzXNbPuPz82KnhBgAHvyLJWjzmKIL8jsOpwNwFbeNd+U9NuBqazacp4DRFMa897CFyiYtuHOJmDHs2wGK2ksk4+FBylJYUmH1AxY5i9QryGVT8/ytkakQhbCxOVz+dScVBbOZlrXQmcrt5uNh5SAOI956TUrAmYOHvjqt1fll8aOWGTNlQP2bF/dA+TWXzaRszXZmXBOVuTWZ2oejC19BHQZfUFpWA6R8o4B/zPniFHS1YDynH7aK5m+ZE5mdayVdlQRn2hkRxVDSn5jx/xKxDwHv+HrcTcLAiZbNJYaKgCw+ZQ2hAQcNtUmlUt9SGs3M0+fYsYDZW3IgpXO5Lw4eW1Zu6DvnAt5UJn5/nH8On7PJu3Bwk3PlKmvfrkBqdWrbFoyo0D8fm5MyIdJPxoPvVT7GUNDGWnh7esygAn9aJdD4fDUOad3Q5XVtw+R+qD0Ys04FvlrVXBivtWuc1QImrhWR9xhz8jHQ4XPa7efSEcz54qWGX6iQkdD6WTvighqJvdP7twnIKVqXlGZ+aY4FgZ6M2tUgsKPPY5D1QpOLTQStQX7oPfqNWlm1ILhfHV6S+nyJg2b5E7/6Yafl0tCdLZ9AS2eeiv+SMXho91jpbyMMjwhOrnnOVABHean3nwRSKeL/M9HFxMBZsyPxH7cjKclWj9SWL1qVEj+2RKGQlqNDborjtNBcF7g/l9LN9KJ5R+OyZNAzYJ5bFHZuHwpuZVVuJqIm64EfMt3ozVX98dSO1udfBfoGmS82UqMp0czpSqMYHPibDYK1cH1SUiHHasOROcbFngcpsJL7eqMGqWECpst+nJqFNx6Ggj6igxwYnwmXSIXAeyRWzGlwupGH4svXLRpA/2KanNdVmnQXFur+PtGDKya609acDioWRg9fOag+kg5DDn/4LFw9O8LDFyrwecuDgfNcxXD++Mtkm6lpGQ122nsFmcNyzN1cXvSa2HhBe3JURjSFgVaV4mKOQMhluE13C41YOPo8bEzhkSaoQrudwPqgSvyPueDWII/E5VzvJ5IbhZuYrTaPQGXFjwbjkyUAmb5L+SBkXIuDo+EE277kKsqoq/yM1KeLHQeqBwhISHCgcYE/EuEOB0XmCXXxXkVTdkfXtPwsT8G6XlfH3g5BprcVc+APTZxgcD/pKx4cnSzi0r+8DkT6149iUPkOmhDL0QomDE0hIl/FAf0A9bjITPeMOGydu8Y61klNlrp6PBaII8DsFJ+a0NoAlOOVVfKDizK1aqXaYZLo98V7nC0QBTnvZXKCepmHfi4e3zUbeh2iOMu+p+JjieqVTftomMlJHa2k7dPgj46XokgVkO6476ED+kkVGCeVvb/kkLhO1s1j5CqgDhw/WHpFn+Ucgv9URjYgsUrx/aaZJUCVsjGrYm69Cwok5XJPFYC0wKHjW8rVgJp7sJ6nLraXjBTHhGcm0rWGTaGQuvYfF28iRHPJGGe7hri+susvZrsZTTcYXbIDCfbXisiYixVqkDSm8R/nL00QX47EGupzrhtj0RDwk9ZUsNLQVeCVuxkL4U8Dp/eO6OSxCe7X37S/RqKUyzqa+a9UoD2xmHrA0WQfhUkRa4ms6AR3841d6+SYHZ4LK5spVB6GiSIPg4uwsYN68HW75l5eWz9eVY7UhsPXW6NdOpC47l7BA1G62EDwM5Zu6akbjRxE+49FkXELje2d2orASJzFZ5R5Ye+JoRX84r1AXdFyKu2ntVwVPvXffv7YtEhe1OSa8LesHU220hxC8Vbttzmq/uoGHBXts9fuReqNwWZ63+Khm0SpRev10XgX3sc75POnvB6+G9vGvUZKhdN/tqA4WG37n9vVcF9oK/uols/0IqKGcV5rTvikDVfH6znk1xwJ6R97m22RWqyky3lE6HYrJk2U/a5TjwuXrPWCf1JhzQ5w7pfx6KDO9zWYFcCQDBZdIWKbdZ++LqTXGpUIwJ38DQ6amHDAWXXbl21TCdWnPTYoCE+QVMs5q/PWAotN5efpoMAxYumht46ahUPTUzxNkLO6+3mS+xh4GA0YKRMjsde7T3EtnrmGDnU1tjZpMNq/ZrRbZSKJiQFzofVc4E/pdw3XEgE1LTFnbPJlJw+9QVq/7PTFCUUOLZGp8JFgOO7ZFHKBiTEyJL+kyGn07b3n3kqwNLi3c3lAyJSO60VLzuSoNst4L1NMU6uF0xTPGbD8dNXJe0uBgUeM44e8aUVAcdPz78iThExE0qQc5k2QjYwj/cmvKkDnpupFTbNoWj1s3wHtGLTKiRFhFcEUWBn4SbvE9vUBEm7v9xk2PChbSJnRdiyNDokCZVXUVFkx8b38SfYcKR6Y8LY9bhYF+lUGftzdqDjx4pbdnLBFexsrevvobC7jfZGWcGqJj98b6LVy0T5vjc1t3blAGbPwpOZkZQ0Mn1Fa/a52Tgt9/29e5cBfDezbkubhuMW84VO5wTT4HJt6csanvK4Zel4YOTJsE4Y72W5mmUCsJt2TcO21QA451K8MnxIGT7UpofHtAL0W+SRjY4sHRCqxmjQDgC3ZJVCOJ5vfALH/I1DNTBvvGcFyk9NPTckbrdwb0X0vQf0fLY6oHAIfDITTkC7zzfvPd0fhIYj1IpClABngkJ6x7OsvxmWRbZd2UCWFsGKBFKidAUrRgQK8vyNZveOgeExsFYvn5tt0gwqIbcOcHoDkWB1buP3bueAHJCT5PXuASC6fGlD1x/Q/BpQVp/1/NycJS37dq/rQFquEJe7ckNxoFDvItvGL1QbCe8or2uHvTYY5xSkIZDR9IT+At74fXDXuatfQ3AvZ9YTmunIYduySe7R70g2HjG225LA8h6RJye2hOBzj4JGa/OdMLaZ3Gpn9vrIW1I9OSVz3S09vH83fOyAz76fVSUlmiA7mGvp4+RjiZFEQFrBztA5cAZbs+Eelh0UGevYPmLJqmi7Yr6nZCfcvvVB5kGmHYaHYmZpqOHd2ur0kghFFbYOmuw58M2v/tuym8C0ccwQq0wogh4Nx7cEnAkF3z4HGV/s/T2DPf0vs6pIsidUgi5si8f2KtdEoCfgGVLj2e3GzSCbVpClldzCsi5j30wnSGj7uELR/ZlNLL6yJhXdCIZNPn6OYv2U7B6K9uPHYRGMOCcPPpALg2cAgI2nhGgIGNbcFehZiNYrW/iTD2aDO0No77xb8gYqvk8gCLcA5mxMTv0Okoh8Zh/eDV3JIKXvZL0m6cgxZU4qJRRBqueaYjdkmb5mhzhlujepzC4v2Y3c7wUXiZsvdXK0u11wdzpyeZ9ELrtsejt1kK4kWw6dpxMxr9sW0wlTPvgi9qbmeovRWBFnXrNSSdjqmpxcKx8H4gd/rnvInsRfLFd//pKDxkXJxcti1j6tmzDH4v/9AvgQvEB8zGWvnV3jbgc6dgORJcr5xIo+Sy/OTA+xE3H+RPn2F2m28H3gYnJjYB8SEq4c/MTSyfXkwOv8OlUAddo/ECdfS1kBBB8O8VDsSb06+ymiCpgKnKHFushfHiz70rs+VCM+7sydYK3CLpWXj79YmsE9D6eGwibDMSrlgEjb3uKQLlp+3RIEhVUSXcGcjcS0Mzplcar8SJ4E9OdueJaJEw0ZFH6+QioNmB0tfhEEVgqMc4YLpDgFqNfLfRrIF52pPdc8OsCtacVzjP1CCkzosOmRyOxPPyl3G7hLjigpXhv3SKCZQ7pi61sJD67YdLtLd4FttdFvpS5Idg6MgL3ykXin67CSDlaFwwrJhjYm9RBG5tDH//xSNzeJM64c68U7IeEuzIFSmFLj/z3sltBWMsRErtSthTmiZTwlhVlQGTXcZ87GYROK5N/m9xrgJSQX0V5S3nQKmh1vlWPjKOvMorJNQ1wxVHAdZE7D2R2B4Wv8iNj3+rpplGNUsjSKDfUO8IA3fA3YkN6Qehzx6ZbMbIBvqc+YN7iLoXc0o0ObyzJyDy/QeKyQQMw+p+TRwNLoTJa8PysAhkf+MzFrLrPhCnt2vGiTQ1g//ya8V9hKq7MMeRTtekA5/P805q0WuB4ne9FCqUj97ju2sPSPSCw8er1B/Vl8Gud0Pbfq1m+ODfS6dBDJoyLpA0UW9tB+LqZ4k0bqOgwvnLL3SOFIKddZP17Ih+u5bQb3e5m+Vyl7gjf94XQ+L54QL6yAE7+lLA1ehuI3AbsIcaMAvDdnHfKoKoARszOi19uCMT4wvnKCpYflOy9nUpi6Rmje4/2uulR0Tnh/vr7KkwoCviwYra8HNIl8q+ppVPR4tJKycAzRKh5bydwcUMDLPxUuTKdQcRHjpHzYyvbIYHRzvwthXDLd72Y1tMInHhYqLnGtR3o9zYXlsTVwvaWxup+HjoeXvgWzlSthCmvfYbhZrVw8OWbo5+8QvCvCc9Ky0MV8Pwsl520cC046609QHwbjLw8/dK2fytgZ03KS8+0GlCyr9l81DQE69UPHmWMEsGXvEl/DcWWNUcdstjoRKwJWFs9plkEB/MNBDqes+bMjIG94ZdAfKjPG1DN0smhHx9Oiyvkwo2rUa31LJ2cOcQ1s/Y1E3a2tebqtZQAX9/rTWqmFBweqFr0aWXCNWyo4nvKgKdX5B/H+VPw7bl9bTNZTHBboQN2fAwIPeQ/ZFdFQf3W1dHv1Z/A7Nu4kVl6Paxw3mm9bomAC/UNB/SHn8AZ2RvbPnLWw5+cC8b6gwTMbu+WcjucCeS+zujiq/Xw/KnUA45HBNz/6bOHUCgT4gtrDlRtKoUfLdVz735RUKiW/3JjVibQ2cZe/B6pgz0FthNidwjIb9p733Eny081Rspnz5UA18sHh5MuhGHV4M4qSmEN1PV41aWsYfn4HzNU3aowfHHniQeDpxZGzs9Yynwvge5Ne3J1f4ehYMfb6e+TnUB52JI85B8HJR7h2C8ciYcvqdas0uoC40NBrQ4iCVCizGZncTASxcJ/zTe1dwKj+XVZ/MkEYKuo5Hm8NRKDqN/O0W/XwuJU/6n1X4vBmPTzgapqOB6ZnNb03cvyXXmftDzLqDDH4SRCWRWEQyOafAf2ZcBCcEtnYygdKtgqHubWEbCzc5o5GF0MH8xMXpfHR0PQFr+RzOME3LiYVcaQKQGVe3nxIZmRYPvATmmLCwHn9J3ZZC+XQFR2eTbxcCwkpRk8o7L4LA98OL6Gmg0JtifMVzzLBguWaly1k4ArsvyUVK/nQJJDlbTBriw48/PNmOlKAj5OpxRpuuXCUzXLUPLWHFCNcxmaGQ/EovOR6zUf9sADJZHiN7MIUetX3GgtoWPlyRVHTv3XA4Xq4eeORiAomG0JVx6i4/nMj3OrvDNg1OMVrUWSxf+d3hnzXAKia8eOI2WdLP2Zn+yngjAWWvSInTcSw/NN072udsIEY3/d9fsIxElO/0/f6HinNX8v95VOqB5u/rx5NcKKDRmVnKz4BLVgt9mubHj8NpU45VcBp8K5zNn2E3D13JeVWVty4Nsz5baliHKoVp+7PspFQH2v9QyvTbnwX1eCupZRBQyskpZLnw1EPq0dler7cmFfcffX6y2F8F9Et82Xz4F4Q2ecwJeZDfvd9+1QFCkEP7Li8V/bWXmR0T4u0poLAVFhkS2seXLuWHLFydeBKM+/e8cq+1KQaMuKLZSvBNl8gRBJyyDsH4kPeq9WBpdepq8wsKsEqXjfLQudQfjuYuWRyuJSiPS29oqZq4SjR0jqvoFBqMqQFh/RzIaZEaU5D74i2GO6M3+nFAFV1kTYJMvlgfK5475Bt7Pg2vpNAzbDgWhhvaczIroAJA393oeR8+CVvfWJqbpAXK9deFOgoQOyFH4elBH2gZZRg5oAVr4Ebu8Uf2jUAYlBpkpdFY6w24A0rOVLR02KS6jlWAccLbh4wnCVHbCvfR9Prqdj88b5xX0Hu6G7+VB78GIKVP44efq6SSR+2fOxeLi8G9KrMp8EhqdAxe4hevf5SCyj/G1dF9sNmnacair8aXBN9q1/yIVIHHXQXN8g8hTWhYwYp5qkQWhN1ehrvUh0yhXnCPqeCzt6G0THfcph5RCve+XLQGQo+UoxfrRDrEbSHfUbsfAoueh9ljEdQ3un5vk824G8y9znP904uHSLahGzmY7Gz6ibe4La4XHdOsGfpVGQ5HatRFCQjmLn4gPZFBtgbNcU8fpZlk5ezeCx3knGA8cOJs0y60Fk53Cb0JZK2PfqS4feEAlzFYgrGjrrwexBflYxVwWQiA6m7UwSfklf0rYUa4eqdt1C/921ULhSZWD72wh8U2t07++LBnAe1R856J8BehOaMxFRZHRnOJptVG+EZHZV2+bv6bBDjFch/zUZ89qEltSONcKOY8wnEWsyIZTTMFXpPRlb5qibPHa2Q6+J4K7iC9FQuEHsFHUkAp+HvWruGKkB859qRwKmM6HkAs9OvedhqPGwO/GzfQ1EcOSGb/mUDXMXdWp/hochV/yDKfr7apAdfoR1AVlg8OSlT5V8GPYnSSatVm4CDYO+4r6/BTC8sF0uik7BMMbKt5zFTcDDParS5l0I37r0+sXmKLj2SkWWmFUTxDbNqtvuLQLPsTjanQoKOu7qeOxzpgNcxnOfGXvVQ+cW6oV3XnRUjKPbDRp2wGO9tZp3WT7iLK9O+5wPi3/qFmctnQbYsFggVe9UA5ZzR4zu7Sdjrvu1j6Qv9eAp2Zyrd7kGargPP703TcJ7ba6nVouw9mtKXYd4ejWwkRbq5zeRsTdQ8776rv/9D9Nn/IdNLZg59Hsd2EhGo6B3wZWNDaC9npLprpwI3RwV2YGBZJw31lxlt6MRFO8mxVtcSwSTS5F7AtvI6HnkYPHCVAM8LpG0yu9NAk11I1XONDKKr0D/+lnWObsTbwgT42H4jZRP9xMyvmjnfDJd1QRTLkPJ3IEF4KJ3khb8g4I9Ue4U+eE6qIky0VnFUwKuDZxh4cKs+uFwZt4zY/mr4kWTo+HFMGbL43SwhYiG61aH3GH5zNTemLyxySL4GJe39PsPEeWMAokSxGL4ze+hpdWYDVqqOO98lIDttJ/JokHFMFNGVA19nQkaagvamUDApNZRthtXWHtObY9xqmIWmDcnc68OIKAF8yRBzojlYwutMrcHlgDV+u5AEBJRY53BJmmWPxXb9cI8KakENqh1P7bwoSLx2ur3R91ZfpzTiFdLkgEd9r0r7XZS0a+FZHjYmAm29s8fiY8yQCiMpqRuT0W81f/fN9VeqHKa8Mw4nAzyG1bHn8uNwAIiiXvuai/s8Nu+WjU4BcLn5NaoW0dghYmlR7VcL9QbvxMR70wFhx31Hs/rIrB9n+33tceZ8Pa/B6d3sXSU/MLCTAyRim9WbrpQyBYCUaON59nj62FaIkSp6ysRt1/jS//QQwS+hUfNeXn18N7i4IrJSCKaudj5pLl1wNKxktecB/PhEb7oOkel42rPsTa3vg7QP5W4ZmA4H1L0OucTquh4SPVBfYF9B7wcoHy4ubcAvkK8miiRjv4mza5vR8kgOmtlPTpRDzZDRyNXGRORJTFiVET6QCW1i6fsTAHstdM4pvGRjPnevjOVyn3QKnVdYJq7EDY4bY3Z0UJG4uarRZK8feD/W066/FQhJP3i4S1fScH/iJq2C+lMkBm6xlGi6Qm8Q07t8o0ULLUL859j6eSAtvX7Oda5g+DjtqUtu6g49spd7UdMOygLrlDg8c2Dd0c/91iK0pHWu3VmnL0DxoI4WoN/5oJr70Hfq6Z0bM1u8lthyoTNrwYO/GxwgvLS2fnFa1QcH+h+kjNRB648ANxEInQrdfao7SPh2SGtnncq9cAuxHtM4RwV9r3VOXvSioR9u1dKElj17Dv3c7XOFhqsr83S72bV84jP8SSFi/XQu/+95FtPImj5cpHMvUi4gbf6vKFYE7jVfjy/5FIHnbui9jcEUZCHc4ec4EAjVExT6Rf/IHhoLhaW6VHwdsaTobuHmmCaa9djk/cIpZY9eQdY86dbxDvTfj8VvIXELfa52sGDa0Mbr4sTMe/1F/NORiPcfYLRx1zrwNlW6E7SYQrqnuThZO5jwolVIfL/cbJ4iDuZ4lJPxQElkdvEy0wg3rrvvfFODgzu1rcwNaXienf1XcU6TMjrRXuL63kQIstUvuzLqnM2y8bDkdUg0Jrm9uF6Jdg5cvR4/w3Fg4FGyc9aqyHknJzAJWIFaGTY/EjfFYYmlhPXFKk1sKby1sAd6UpYQbhHb0gPw/2yZYUPJK1B+JPkKqXFGnh50u5s/XYya/8SbBVTr8HwUObC7lU10BemKPhOkox3rm5YYVbkDK9DnKtlJWsggVOUEvqJhNKvLs/lneuDi020uxTJBPgv50704Tgy8scqPiy16IOvNoLy0VuT4Lev9pltYWTUVA/IVFbqA2M3PJLalQhjPqr7rTvJ2LDOazyvrQm61VenVQqmwWhHxMYSNipaa1CXBHybYIYeeGrPs3SIEL5RJdNFQYp0kXm7YxMcEXvKpsSRBu6CjvG76im40297kpBQK7D9eian3p0KH6La/nyIo6GKL/sN4qVWmI+MPyz6Nw0mjm3t72uhYaRmGz/7QgvIRQlUvL6WDhqGYZslAmgo8M6NqR+ZDHFOtk+S1lfB9cOW/MfDg3FnZ9Ewu1Yq+LyIoarfqoSHVxRdOj8F4YuZ55+9LqfCZNSXpyv8q0CkINL6ypsgXF9mHGtUkg8qH/TYOLwR7D4En+PDQCRkZYoEyeZD1asjwqt3IVhvNv3Y2BKImQHigQfEC+Du/g+XQ3lZujFqTqukJhBjChdOaLzMh1VbVcJHz9QCV+a3/K21gRg8vm7+wEABRFuN8Mj41oJvVlH4iaZA5A0Y36h/og5k0p7L7mGvgibSw4nTpUSUJbd9VQ+qgy9oWnpnTyVYaTVK7P9IxA23v0YrxdWB4fwNnxtcVSA9q2H2+jsRQ1wprrtKmCCxZl8Fkbsegt4ISpMyKVgpLngxa5YJtyZnxn431QHhtOD3KDUKdrxOY869YgLt7rMgmmE9vFNNPbL6MgVPn//AMR/VA96x055P+UrBsjde0yiW5SvlO+eXEnvAfjNBU06BAZ77Z5OGyXRcEZYqVdTfA2cW9A63WzLgSfsBZUMDOp4QNem5tdUfjNc6XftmUA9bRYafWZiR0HeDaYpq5kOQEHDdIFZeB23OH7/125Nw3Va/F0p9BBjkPTrZvK4eqnenpWdvIWFH+hB/zqFWcLhu2yHR8QR2Sx1bvz+fhp5enhlao0zYvrurtdziIUy8FBd7fInlH2vv6uZOMsFKj5ya+zkEVlrWVEudpKB5kajBzXImfJrsuETqC4DMRxcuGCVRMO/V+jazy30gHzFoR6QVwMYXG76dIpFRpdhqhscsCNhExMy/pQXAp88t/XbcJBxN3TJCnfSFXSazrw8Ih0Dxh6frbrqTcGrldHbTEX+orTM0TDd5CPXHjtQsXCShltXHB1vVe+HZXodbrTbV4NZ0ie1cdgSKE/1/fTPrBffv02eOSdcA5+z782GOEbgxnas99lAvnEhVZItTqYGDDlvXzJVE4IstFS/IxT0gasOTaqNfAh7qe9cuutNRPSAqo9AgCfzN2e9VayeDS4Lto/ZtITjo+orn4flEaN+4Kde8LRG+/l8H5x1O5f//8WSESCIiK0WioiQy6kVK+pSRERKF7Kw0zGSFYxzHWdl777297b2O0RDZEpVdEf3O7/vv+7qv637f9/v1er4ej+s69zHxCrqJCUX0p3EzaDkZNh9wHWTaTILzIQ8exI1iEA8UKo76DoDauvIw90oJiJ7+JnulnIRG3kwmzOUOwBu5iWJzlxKo4mPeJgaQkNAJPqxvzgAU3nLb3G9SCoUjzlfvviUhPF2jwHu7Gqj8Lrc9o14Nt5idde/FhiINE16bfkwN9FwaeocJrQKLkXR6+sJQFCTKfVzmTi0IzD9m/01XDdknvKv8xMIQC/OpirGxARCzy/dXsyqFlPmcWTU1EvLnzrgpiu+DbWHRK73FVfC1Zl9iCpX/09d3Nes2+uBDfuWc1nYl3NESnXbUJSOOWnmmhH99sFsnq3uauRoudE8KBemQ0aRq12uMZjcYxh/YMGCPhCfNNR8e+JBQ9Ie611Kp3fDiZOfgk594SDl6e3kog4QSON3y4170Q2LiNUeKRRVUnWV9l36djHQzMvRkFtrBk5zB5aaXC2lMTcVh7gRkHvmIPeNMO6TkfYt+K9EA30ZVdq7+waNDRLWO2Yo2eEazz4cSWg/PowVermXh0dGsriX6hjZwUFYqbQ9oALZJOvb1fDza+8x3oKSnAU57iM6ORCaA/x7hva8X1ff/ibziM0Dw4OJ86X2GJNDo7bE5dAiLOglm8ttaCJ7y6NuOi8VDR0IjEysTFpFpcjjU2gaA3nQ0neFdITDL8URsWpBQ/zaN8jVqX5v24LiXSgpA1DLVoy6KhAzZfoZHDA2A8/LKvrnxfJi5sZE2f4+EPnhhtCepdfJBjNN+JLQQrh7zMT1PrZOmoa3cC02d4NoqOZQ2hoX4uwJvGjOJSJIj5kj9eicQIyd5BD9HwQPJh+uzrUR0xkXYgQfbCeK3uPK+7MPDo6TU7cYQIvpCng1iedYOVsP9Svt3Cv/3vUCLBAEVYycJnn/aYBkX/PyNShHY39xT63+PR/eMG3vyadtB/bTkuL1OIehuKnYuTOCRbeex8XtPB0CLxWhH/QKVP8NpSB49JDSg59Ts5TcAfD6d61WYMnAoP9XrT/VWTr90zN20LphjlnSS86R6xPiwu8MZ6rpghkrORBccC6taGTCqAwMz4ilErUO1UNcnzcLdQFcEDa8D6yGnk+BiY0tCDPJsD/68x0Htvv96re2bQEi22/uwHpU3Hgz/yBuIgJ8BpfT7rjWBlNbtn5XlWHT4wWSwtVo4OHwQ5xvOzoWZZk0ssR+L7vT0fKLXCYFsRs+THZU5IExFvm1q/ogvhILCh0pAKfz60+JJsB1dfTFLAIPk93mfMRavhGWaxr8hUilQ9PWtiHtzCLpjljOJ7auAopHYpADRJOg5KZ2sQghBrrTZn19Tua6V3KClVfUGIqQouStmePQ4MRjrHkyB7ISk1H8R/kBLV3ZYjQaPGH9pqTef6QY5U82Jn0qV4NhL92jmKQkxKr7K1nTsBg3X6fnstxWgS2tb5xVBQqoiZ3OZoroBL3vzysqrSjCEo5usiSTk0TV1anSnCxj2eblEECoglf7a53Z9Enp3XTaHPjMJmDvV/5ho1MINy7bQY5ahaEb+4o3g6mTQ5O0bEdyqBZfGQPKxZQya+Gc/+CmyCGLOCF09O9AEtGzDzwMag1Cqc+M9s5ki2E6K+Dp2rhk8E28zq7QFoXyp86qY/UVgqFw2YirQDCfsGo6mU+f1g9n939doLKDw8SOaF1vl8JwgZrQohkNKxGyhVLEO6K7iutvbkQ2xXHt08ukEVFO3z417IxIiNVZf6/xshBPPFoNYn2HR1upajalDODgqaj6QG2qEBjG/mJO9WIRfou3vez8Io7RumlTohWaNcxddPQjImBiQK/l9EFh0dFnDpOrBFXfv+cBdAhL+fu3pCyYKuFzhqLLjaoDxb7Ecq4cJyCbAgybbmALDhflysXeaYJHJ/vZDEzxKxUearTpSQPFYYDwDVSqMlZcLFmTwqGCs+CPBnwJcf72/nlekevApESXVg3j0I6/9Px0CBdLH+W4+oe4TeFm87i5GoX6Mtn69NQUWzx1pIYcEwxc6nsk1VTziThPaH4angNTA+m33Oxh4LuFp8flbFEr97X70MG0MnHQr0/diSoSiRjrLY27hqMsbb/Yv9x1IkXYjpuuTwFsJn/ZoOBxpnDp8h/SVBEMGC9oa8wmQsXrDSEAjAmmRHi+aluFAylrwuWK5H5xhdSxLNsSivasL7xd9IiFxoZCbmBACpVJrmsd8qTn2bOJJ8mUsFNiwvWKv84eOpMqmmlxqH+G/BRH1wuEEo0J8jjoG+otHfIv7sAhbHtnalEuBIoNarJ9cHejgnstRqqOQNo2rAxuVfxTD20zErepgeWf5fqJpFEre52eo0EIBYV1fWimbeiCqizLnhUWhm2qD/zH9pYBBuC++QLIeaBfnD34Ri0LYe/wrV6wx4J8TP3i0IAX4FEmUU1Tvzo37G+9kEgClmM1fA9opUGmi+Z+RQSTKttAWS3wVBGPPn4ok3aVy9Smp2/fEI5GlVWDqP8lCWKu9ZU0wrQXFrRKDdCpnHnK6FGnUWQgDoX5WDI018MqmZsWHypNNm5Ud542L4Hdk6mSEWS0wxpn7xlPXuy9Wjo9QCuCT2ozy9SCqdzzV6TfsC0J2r/5YSL3tBmcKv2AlJgT4rFjr4qJJiItNne8luRRGct0pHgFJcIFAMFlXDUbCGsZmybGl0PxqWr3/eQrk8jKuydwMRsT+qBXtjhL4j8TRRN5NAtlPsseqWYPR/bWq4OK6TsgwuZfW6ZgE+yOUyo6mE9G+gtgyh9xOeDhUSrBMS4G/qYl/O2OIqPXiJS+aG53gyPbMo/1mMkTdbZT+YExEn4Vja3mudcKdwzdbJM+lQs2VdDkpQyLylhIf+9TeAz1/PM5aaNcDq0mwO+IiI7uhYvbqrh5o+XGc87pmHfi76QXFcJPRzV0FzRMXe4F2/XUmG2s9zNml52EuklGiERtnklgRNLk+ksS/aAQL7CPNSmoObC/8PtNiUAx6uxqi/6QbwbGIm3N6IAhFXPJP2fezCC54eaqxjDbC/fzDgXzUc1Gw33w5nxMD70VmWANf1IL323Bj6zvh6I8Lqz2vcBwU220dOImrAe/Qfcpe38JQme/gF8Pj8XCNRacjg3r97q/R63eyw5BWLpFEZz4Ijn+TYtzcEHD9vBgsa0VE4SY1nhKmgyC8T73UZq0Bpvw9C546EFFFgqMtS/AgJNPdcqZRRZA5/O4K4ieimdH3SQ4yReDfpqO6uIxApGovaIz6XIk5K5/XvN+AYYt5UDZKgiGpLw6CEZHoM3aBg//OAHwbv8ZxWqoMmD9yrVotkdDY2N2ybJ8BMNkKOTDVWgqvjnz1Dq0kobvlPD/GTieB4Zt8aoCRwVpfPw6bFIoieLUZU28mwdHK8OM6L2IB3IyyTkWFIgWr5agrPxNgP8PbyXXBaPh+Sdb79aUwVJofiNf51Ak6ZjxzEzNEMBEtYaOrICLZ5lmbqoBqaMk4Hi/DUw+Tv2qWA9hD0ZZUBv3ZjmrQS7BuN75YB71RkYPMV0KRc6hZs+CTGih9dNhZa6EO9vZZHL9IDkUPyn6xHlClAHN6b/EhxWzgdlRIaMbh0R/lLv8fulTfqf3qUY7PgRTZ5NhaBzxKZrDaKRWjwC3vOXCyzAFle3TPoxePynpbGNmmB+DMXVql22MZVN608n16lYRcOXpJ7tsDoPrQyi2aOR18/KH4DC8JibA0ax9nH4TiPdkcHbcMsLkn0RG9RUQafgEq1g0DkFzkWK3vlA7C7JNHmRxIyH7kT4ZPXQ3cXLurHf6nFuYHHGyG+qh83v9x++p8MTTlKbP/E2ymPrfPOaeZICSv9sgXP1MC8XwzXOzU9XU4jGPhDEazofTllcbNcHntuCNWphne6aLX1xVxSH9JdeRwdjPoj1a72241wefwq0I7rjiUOH7itlpJM/zT+yQ3G2MBDYHGPrUeOHReYUb855Nm8JINyCy86AK3fk98obuOQ61XZYrtQ7Mgba3m6BfFCpB2OyGMyQlGyvd1v8nyZ0J5ks6HxPFyUG/nme9nCEGGAjuSb/IyYGosz+/bQhn4rbuJN4uEoJexN9KDNfvggXqN3km6ZiBY00aQ7pPRv7/xP/1s+uDKK0LqJVwTfLVl/mpC5fns5oFbd1EfRK9eNDRqagL1t41jEdTrn56t8b7xMhtotrmzaj5VQGkk12k3t2AUaV52b/tMFtD12HX5sFSCdsCTEJemYERe1WIjjSXD7zei+c8uI+B4ynDl+zgGcbW0fOsSS6ZyO98f0ZwG6H957POyRCiSCsey/fjRAj+KH5Zx/GiEVUnfNn+zKBRX3i1qZtsKHU+DzZIONP3v964stVGIU3Ryhf1EE/ge98pqiQ8Gn4L+Kx56kajPffpjXFoj0KnajS7SBwHdvMrj9R0scrseLWj9qAwCpGdaFOQLIFXRIN7sbTCSkzaf9FYsh0thTdZRS/kQzlcfKjgejBj+OgguV5aBlpVfYcW1Qkj+Rf/cKjMYeR87pHpODQvFNvX1i3aNEEtbPReXjUU2jCHYr26RQOqz+mCRmgTawTcpNH5YpBzVc6+jGAtCrmwatsopcE8jV74nFotGUxWc6NfCoCKf50ruahK0u7W6rg5j0XcbkWmMHwV+Dex/sW8KC949ZnUWrFQOXJU9buLaDV6vHE2zn+VDO/MT7/FIElLoyHV87ETtI6Mwp16letBAi4p7l/Dovg/p2bAnBYQMJL+oO9YBciK0XDiOR6HNCn2OZAqEdH1cPcNdD1v5raRDM1FILlTnpksABW6PPbwd59gIj21XzN8w4VG7x4xLaGcFhOu7mCSn54E+/csHbbgQlK5x8riocgU0jtXYhRIK4FDKf7+/aoWgS71Fv/LZK6h9ofz59Jk8+DOS3dUtH4KSsAUxY2JYkKc9kXe0GQseh9ZivPOx6KzkXMVxrUqo+eWq4tuWD6fl2tWnRkNQwMeV2f3LWaAxLdTOVlgJ9YUlJy2IwShT8lq4/FYXdM+9J53sLoHT5+1dFnVI6HK2uiSQuyDpXuvcXe4SQCEPBCyFSUhQF2XOMHTDPpKLa9yPYhBWSmy3MiahR9i/Nxktu+HHJXPx49dL4Dg9hY0PQ0JnnKebGiq6wa4zaYmxs4TaT8E9mEIScsgwMcpS64agOvMkZeFSkMrCTmE8SehkzhIt/3ADqNhmueaJ10JfkuPrVN8INF5FFpmTQHD0WXRkxc0auHBAWU16IgJ5iCqQemwRXDXW/bEoXwvq0iXCUsexyMlt8YiWZiokufC5B1F8IVWr/2vTTQzqLfHU3fmXBvE8jVJX9b0gRyx4rig7BB2baXPH7GsEy3M3b2BxVWCqiPmlH4BF4tlesSdCEcgvS7xiy6iCe6XcL/IuYtH5VInzxBoEngTHJ3FzlbAiN813XReLTlzqZuTaG4Dy47WB742aINne1D2ek4Rk/vxL2dcxAFZeEYIacU3AHV72J92MhFqKftPma2cC/BdlfInXFg7Eis51/Q5GRS5u6Xv66eC3yqDpTXwKjRiqRoaFoFkP2roerwHwbJOIiKXmJ93gjyVSDQkp3XB7JlQ3AA/v2N5LZ2+Ga2u/hPY7k9COhqxB//4kcJfVE3aJLYOnTlc1mUpC0fmK0p/vFhKgVz2YyY21HLYfek2ZXQ5D4SfGCF+644Hm6CS29nIZ1B9c7bPxCkOUd146hyR9AEucz0vfrYY/McNoIzESGQ6vXxW8+wLY2utmn1pUw7Tjv+qOqUg01GvlzsVaCZ0jykFkvmZwUnCOIJaGIHhjWNeQWwGH04sWOCqboEhIB0fyD0Em4dcPdvpS82JPdZ80dzT48P/+j2eeyo3PsFJyxwtBlCXv9+klMghf3dj3tDMItVSB6Fx7ARhlcyUpKcRCSOrBE+tUPnw+3Dl2bncAskQCF9IoRKhXXHlGx0VC5tPzdHyfCqHDpqVFtjkGHgy0r56gcuZ4/9SjUfFUSHh7ffLnSwT1z+i8FnUx6HC418VHjv2wdYzrqvANBLkflgRXVMmobZ3Z8cN2HyjdrZ9IfYJg5bRr5ooOGZW293wTEOiH95/aFEn7EHR9v9vkp0VGX7uUr3nuRIJH5ntD9+0KSDIKTzrqgkUj7JvGj85HgXkwY8xj2QqQ+dUVk6CORTJy4wwtlnjAaJoTsYKVcG1mJmJXEIvsrB6cFUnug7sKmgbqbAhIlaqzLtT5YmvQgylYroX4OdMuylYpHDsx/9E8IgxxDo0eZ71dB0dNlTLSz5SCXmrPbdGeMDTx8L6LPaqDY6H6D7cOlwGNvW/iEd5wtI+DrF5yoB7S3xvbC9wvhfLW/Xdd1MNRlEl+2DeuXEjyjvtvu6UCxjMy+9WlqPPourGCrlEORCitiH19UwmjKE2TSzMYTd+NSir0LAcH9vD9Oy8LwbNckk+TWs95X89OR1eXg+wV9nYa/SLoc21++ZgjBIlO590nUcqgY1qwqG2vEIIJMzkPioPRroTPUpw9At/YgxvRO01Ad1XA+yUfFgW1SKj17DbAb8LBR5dYm2HOCuWGJESga+W1o/zP2oDzyj/5oKYMUKx2BU83PMKp/k1n62gDLVlS1CXq/N/2vLd5qwyP/DZ/nj95uw0OaM5jTjlmQXKKQ5ezMR4pysYI9+qnQSKOcknX7i0EZGqo885ReaCw6HigRjpoXlO70uoQBiaBes9rsSHowZNv0m+3UoF9wlRNhiscbKO3jn88gEEnaP6RnnWRYYx1zWQ8Mh1iHhN9ldgjEFMM9mOHChl+tn82EozNhC1LU8cumQg0uBkuZrFIgMyTD++TAtPhb8zcMueHCFT5Jl/CLKUNDPBh1kmhzuBy4wIuKAaPegwUOHnZ28HN8cngUrEDaA+bDsh/xaPbrunuouMDUDzv/OU2exPs59ItcLlBQvxXdMln66n5Y7M9xlnUCDQr7y6nOZJQ3rvHipKLA+BHeDURm94IJsqzVzkukZDFczKbW3wl+IfWsNxcRVCeiI8d/xeCxq72a1TqVQHGl2LIkItA/c53spQ5BqWfzt4gvamCuOkfI4TzjdA9wv87zQOD+N45zOnN1oPuuMLRLsY48N59doNjIhxB3lvfb4wN4NwVnJSqnAgVCu9+/t2iere2UMr1jgZoDlxL+v03Brh/ud9zdo9AdzANT/X+DsKA3P3zkk01EIoZ51c+R0AFN/LON9NSQDqh4mB9YzXEemmNK/ETkIh0nEHZWQpcFqa+8fIaeFQbxTrWgkf77pc8G4xrh6l7LiEdvQ3A44v9tn6LgOz3ml+FYtpBjuax2bmf9aAknF/mq0hArx/3Bk1ItMP2QE7PI0YEbHduENq38ajZLsxJ7lgMWBu1Ou5KZ8KtaePf7s/CkfwvvqdMwjFg3iSwpv4yHarZL9pOOoWjQpky19mEWPhmKMlSWZkKFl/GjpqwhCN0+X6+p10cDDrxKM//S4dWjqkzr9+HocJftN9W4xOAdn8j7b23aRBrdbvO8VYY0iQLCUguVwDbESHZxN/RYCRB3kefGoLMZTCF/Ncr4UD+Rru6Lgk+fL4scW4gBGnr1umplVaCxv2QeF7jaGAM8LrheBCD7LlKj5AOt0C4VKzhw7wyqN73rVYI4ZCPWnDDQd0WyGW9/q0vpBwWn2Bxb1ZxSMXCe894shlYjjHXFXqVA9uvZc6uWBz6/jltmY6jCsgcl7gXjpBAwKyozvsqBkVLPL05eaQC3j/4y/qTvQQOznzMMVAIQY89uCqdZSwhyLF9QbOuCnZ3GIe+CeOQfOGfWy/ud0Iis+x9XG89XFLbaZG3JqIF4W0577kOWD+VoPWjux4od8WerAkRUSetqtlpFap3HzpeYMhbDzxLJFPOB0R0bnXFpG2wDTCpRk9khjJgr6vsPFctHnE68lQ9WesAp2yR17sJdeBNeJ924gwR6V1hnzTTG4LK5hOFhnbZ8NV4fD01Docex104v0HTDEls58wSAosg9UmuZu2fSLRcq668UdMELa+/Hb0QUAhd60wO3m2RqLS8hSZFkuovUvTXNXGFcI1BdUnmOA7Zqzn7eo0OAktKWuXCZjV43rTQot4cLQbtHZkaGQS83fSQ3nAN+H9+fT30NQG5W2yaBRi1AHOzHnsfUy1wBjzdUtrCIc4NmkXliWZozLI5WRVXA0OX5VauxuDQAKtmnHtZE+j4PR43Z0mHA6damJoaIxF7MdFrWLYZyNPs2L/P00GO/rqV7Akc+v1z7zf+cxOcF5Ns8ZbIhImAY89NJiLRTWUfHE39IBy9c4Amo6QW5u5+VB0sIqCE37ysOkWD8Djfdu8wtgYe+uftF+8hoOU+216u8EGQWGEa0bxTCy5DHLq1HETUe5ducVy9F6xe3PhPYC8T9qzE1HGyZBSZ+5NJerIH1F+O/P5imQURJfvTh/nJaKDoy9TtuR4gqZwjqTzMAG8v83oVQTLS43B2ZnPqAQk/h8vRvZmg1yv09/g2NZfUZY9LnYiDR974Oo29Mvgr6k5X/S0MpfX/yUn7XAW+g5GvaRMcIAn/IlyqAING5rBvpj2qYVa8VE/znydssR2+XH4wFLUpHMS9f0Wtv7gIr34eH5jsd5xveIFBM8+ctj6XFMFIZ0wvEKtB+vujd/LNQYj3hrjXoFYxCC3bXSnC1cDym2xThoEg9Pqj/4PoZ0Wg3snBX+hSAztHyVd0URAK/NvgvLq/GXxk1NW0FZtAJr1k5Pl2JKI5pc/tRvVDltonBSUGTSC1qqYtkRmJ+E4EsORmNUF8h+ZvnaVG6Np8MClYFYlqe7UrT5/qBeXln89DNKvhwJ7FbVNJMmK/c+4o55teaFl9fMN7pRokL3yg71MmIywjchra7QFrJ/uyqSc10PTaZ3RWhIysKQonR5J7gWvDZkBhsgpeJXEynlcjozT0XevtrSbQGuGYnxJqArOjSxKXXSIR25RG+CHWFtBY2YdZqvYHHNd98ZA6HPK+lvU10KsFpMTpmFo3fGHgUGX+MFsUKldyWdexbAGXUyR31BUMDPviBSf3cMhsi77gVXsL9JEHY6ecA0HxAstw540oNBtkspvalwwfp5OLtHvyILw6z/TFDAa5BfJrjq2mwG9duWzpugL4eFN8S9sOgy4JapZt2CaD9oYZYXWpAB7tUkrzDoUi1dCTPASXUjCxt8/44NYI4wtvjJqvBKOZ/26Rj6qUwcSoa4Tos0Z4W/6HPsIzGP179FTA4XYZJMrdYlqdbIQXKu+M/F4Ho/9MT/8IXC2FzEuD994fawT+CP2D7I+DUe+qJ3NARjeMB0g95UzLhAddk633skgI1+6f0MDXDcUOJwNNzbPAKuezno0VCWV+qTQtudUNYUHlj3mfZEBrmOcnFi8SsuzIk0uY7YKy/vJ5I7kM+OIgtu/9bRKyknISEh3pgYbprtebZU5wmEm+LJuXjHq/7nUw2PaAZjI7yT3YBpDLGZ0/v0ho89DIn6W5OAhN2DCyXk2ApsekYzsVYaivi8TGbFcFkwwRlztOV8ITBYrIQUcM2gnH24r8qYK0ontfXidXgH2C+vrbBgzKETO+5LtdBZBtHyiUVAnl5n8jtRAGWZqWHUvKGgQs7332NI4G0PMXbN3/mYDkDkvpZiVWw/Nwz/mJl5UQ9SeR5EkVo9ibTq9SbCkwUHt456dbIfTTGQjsAB4tsuAPtTlSQISu3WNjOB/q7Cq2lS/j0Vbwky3GWAp4iieXtaECSHXoCv48FoUKdsayHJOyQa552UPqfDRI9Pm9EXMORsE5H8udb2XDx6Dp7zXi8aB8U/Dlmm8weq9RbzpBPQ9OR00GuZAYmLh+9vP2dDDiyb0GVvoDcD/cmvXVzTyw0/4YoTpNQtVjuc1VFwZgg32b5ZNqLvSfDQs6SENGScN0z+64DMDpJqGjcqM5cNfT6JtXO/W8XMuLu/L7wPxojFhgcQaUBY9wi1F5+0fC3rJkcR8sJFckhBKz4JC/BQ0bdT3UIS9I+zKVz/E3Hp6MyITpA203LPXJ6NRQjWuB9ACE0gq8JahQPbK4sCDwHwnJirpn7F4dgAMiWT2TwQ0gnkVi9NoioXVD9Fv92QAMa/0ubeBC8OUfTZlnGwkdUR9f6nNqglenVaLE9Kvhx0c7MWJEJNrALePPwQCkGzy6/yYuG6x69Tj9NklIjw9xXkhogSC1Jx/zn2VB+gLDBxuxKBRm3ufT39oL3bn4saCsLAg3yH3IcIeMuD5bHKsu6QXNhkSxO81UftbavxWrTkZ1R85y8WVVQ3RY0+gRgWbwOyVv5ysaipK37/NunuuFQ5xthiFL9SBg3H877gIZnbVOfPYqoBc+H3G7zppdD3azVlMhKmQky3Om9lx4L1S/XF0UCG2AuydECn9fJyM5Iz9FysMhkMRfKOt9Xw6v7zE4M+BwiH/p/qbTyyb48IR7RZnquXn77TBP8ZGoaaC8zmu7CRzL5mstOZvhoo3nhupGJLJ/4Rmb4fwasrwkWivPlgPOmpR1KoPqoR/MTGouP4Wu+FcZvDzlUHCNldGIDYdGrkzhDf1fAK7uvFmnGZV/5o5Xuk5S52Z1HXMEuQWUJmV/+UnaQpF9qivuZBTSmLRT8T3aAq0Dxa1a8/Ygxh13sKYZh+6u/7s3RCmBx8XxEdxSifD0p/2a0OFgdHhl4X3K0RK46V/kNNSZCF8VRA7SLgUhJpPJ4T0qDzUv/gtNmYwD9wcaU1bfgtCus8Jrr3oKMPMmVA77NcBDS5pMPDkK5fTna6kTKbDUGKUpvlAPjgKfmEwXotAhx82avggK3Ohi9LnQ2gB1NXFEh40oRCsTaXCwPgXYyxzFGWWz4GHWv4e0Phh0zUDXqpgjDeb+yXzfP50FY1fUuy7thqDq7p8Q050Cxh/tHY49ywE/TwXNSHcMsljwqbonRc3xQrrPeVLxMHZjWtJOkMo5BejDyOVw0ImvNsrRTgQKq9KvxAEsGi75z1OMIQKkewd3r0jEQenJUpvIZizq2E7yimzogCNTrRk9ibHQP6MuU8tIROGvpSOHdTpAPX75ZvLWO5Bzp9NqaCKgA+8uhJmXdUD7wnWdgHoSmE29Dry4n4hSwmzmygw6YPwqIQ+XFQ/FxQFXNloJyHqEkyin2gfNci3jQvFPQddo5wjffTJKzj94p22iF7z3myzvXbeBwdiebHpNah0SsgicnoPwc2is+WruGzgrzyCsIEtEEwGLKfpqg9T3v7xoHOoPGXr3i3miiWg312TzrF81XK09YnuW6t3ZGeOadIdDUSPDLKfGmUFwbmPDtQlVwgN79d2IPiLaXto3Nn9lEOT9IgzMRCvgDI/djZUiIlJZnTIovzcIfy8H5zvuVEDcoqOOWwAReV36N19rOwi9LeGf5FQqgP/6+5V4AyJSWmTI1MF1gnz91JWvAWkgWdF6kzeUiMq//HyP+90JJPe++xtTqbCrsl1S2kFEuY5nRX7xdcFn17OXW46kwLHud7iycSIasXLgMhtJBiZ+XxP/dQL08iQK4ScxKOJ2CXayOxGs6Fq0vlXjoXUl9qR4byjq5vbzF2tJhvG3p+Zo70eDUIJi/OYCBq1jSUs65wahnZcpM6ITgVOiXmJZO3U/7oa7fg6DMNkz35C8gkCcJm/AVpt6X1xnvbvkIDgF8j8SVEJgfNXZn76FiMJojEKarRMhr7qXMG/XBF8sn8ds/g1FPzjiFTl/JcHxBLPRIZUmOD1BEy+lEoqY6Cg1k0qDQFdVcKEimMpfByPo17KJiJ2efFWRel56HWcPnHEsgfyV89zq1PPq6Kty3OQbhAz9iRe//isB8oaR17UZIrqd3f325uRLmC7WvHNMoAJqSziKGD5EoiP5h8/PK/oCv4hl6dD9CvAy/fP6i38kUnc7FXtebgjOGJ4RsVkoBSli+MRqOw5h6DdbZPWHoPYO9vJXShmkK9IleFI9iJTQNcVybAhWXr7dsXtfBjnaW9JC2zjEdX1FTHC3GmxM+jsYoBZStrK6xg1CUb7K0JALfzWk/Mrjrwyuhetroimewxi0a11oYv3RBZRthae/nCuG8Nj4T1lbkahzveF2IJsNBBNUD+KVimCSNzyOmeoXEY2E2mwBDzCofnf4nU4RENc9tN2aI1FLpcYv1sEqWF4gfNyyroOiCnE2XCYGvVT//XTLbhB+i3Wpy/cUg2R40IXb+kQU52NVVZ2VBmewrkfDnHPAk83UhaUjBFmS6u5Yu5ZA8VlTqQPH66H088S48N8gJLWssU9goBh2P4j+iP5aDxNzFp9OTAahDIsRYY+ng6DPlbjpvZQPtcewExY6ROR38AuX0i1q/Q+9ilSqzIMU2TfhHmQimr8RYr38sBIavxnOOAl4gd3jVH+miRD0Pju71mW8EsyYWvAE0UCII07qvDyBQU1dQV1t9JVQsu9Zh8ivQOh0lhGcLQxBnyXych+OlcDy+F3V8P564BiTpuM/EozeMvsmDh5rAQspA6vRvSaQu/ku+3QbDrWlsL0NDG+B0w8Zf3Qca4biF1aS1/iiUKUNqx2PZD+MpOzarfRlg1GGj22gBhmJaBik2KX1w86bmdSTk1nAl3yS7z95MmKs3vzOm9EPta8Uw+eo7831oo388hUy6ju266TOSgHbCx6fPsyQ4fD4I8sCRgKiKforEqBIzfMaisjjJ9FweulN4sdkPDKiyZv6zkOBDCP6VPff1JzMuSj/+DsevXD8N59/jQIfu6OSXEzjYY7H8jx7LB5ZXlxPqckngfYp1fMYOwTsq8qEmocRyPLqut+RGjwMnyyKNlRA4Hgv82MRJxZ9K3delKMnwa2rJkEBfQ1APGkh9BoTgewLQn+xm+Lhzll+K0/nBui1llWkP4FFShcKsseOUEDsU/DswEAuKJzGyGT8xSP8OfvUV3IUMPd/22qSmwvFRsGHMDl4lHPtdlBAXS+c/pego36WWlfnj9ev3qby0iFDGRq6PvAtiGDu3CuGwN93fZvvkZH7l3Zji7BemFbDzSLREvjdJyDwgcoDMYFMTU1K/eDxUAmKBVKh4K/FvUQqn6wrsVdihvrgStqjY/jeZEiIns1Op/LVocs/l7L1WuDjR50/I06NkFhtcq1oDYeuTekMRB1uAbsQ8TFlukbwL68zFEA45CZC84nueQugMyUlTAcaoV5i7kwcUxRSucT6FNaaIWPP/JI+1Rc4dRUezWfhkJSnMqdedRP019yX0arCQuloC9JojUT36z9I2v9rAsGkItFVfjzES5inT/2KRGj3kuhOdBPc93hsVnwAD4/tVUbN8iPR0VGBqAb+Zqi4OG6skYYFlenZBJ5DOMSSmG16/lcT3Nyu4pQWcYalmLd6H1Yj0bYFn5vbmyZYn031aum1g7SGygEUE4kixOlvK3AOgERzSMDOU3vgpM2kyHGRUXSN3Lp2VTI4RJCUvouWw1/21dj4ZQyaXnlccWsmBU5m35I7tK8CjtGUHedzxqDtlPfYr/8lwz2zH44LhhWgIFn404CPOtfEtdPP8Q2AbM2hd53+XjBMETg9dJiMpE8kX6Q09oNqXAGdNsUPLjIc5q+WJqOo0Aw7uqZ+MHt0RXfB5SW0CVnO5VHXsdqCyUhwAF5sic5MhwfAtzAzyr1DZDQSKvNX+3gTfM40yNPmyQfOG75Bd7QjkfHvc4rP/zTCCT/RlhMMhRBlcJhSKBeJ5LzZPooVNMLi34AARpQPpcUVzz7uj0QnuY0Z4o42wfw8r8e5qCroKwYB0buR6Hb5u+IDh6nzI6m4vzqvEmQucOxwqUcicUzkp/8wTRBqLNNmfbsKuPasxL4nRyJVaW7Kafcm+CZhzXP3QiVcj+HstSZGorprauYryYOQINGTgTOvhGlg2C5aJCBlVbOLch2D0CrLwswYWwHPFfg+WscSEKwUC2YODkLY3IOxX2mV8Itbfdg7iIBoXcXdaPCDcEr63w8pvQqgrQLDhQNEZEA3u70wFQ81aRK62XfzoLx46/2Hl2HI4fTsLVHtWCivnLKor86Hn1NdYZtC4ajXWGRNSj8G0o6uPdyi9uP4F5qFQ+bhKMx7PvxuYALQafiPx3MUQABeNQavEYYeH4r4cOFcGzz2XME4H2v63/9xjavh0RdMUbBWchvUJH3iAq0miAt+wtwRjUevg/kdzna0AYv83/jgwUY42tEt8LAMj96r5v0y224BaZHLB9P+ZMNiuPbkR9so9GMgNe73vxZo//qZOaQlF259Ub626BCFLp44Klvq3wK8WbkvzmNyYMrOc/bI0SgkY0nnHdlLAWAuvZVpWAMve3oOiXhGIbuD45vGfymw5cP725m3Fkhup19oUj2lUVzy6o/3FLj6U141K7IWNhaG2Heto9DXh5UzigcR+GiHK/n8qIVSWxWhwsIIJMxBVxyIaYBl7+c00V/q4KB1vLS/VgQ6Kxnfc0KlAQ6vfhXk+VkLlRUEJR6BCDTasNPBmVcPuS835OTm60D56vAmoTIcbdrtNDXRtYOkyUHvfyqpwFTRVpTxBY8KLxr8l6DZDgl6irV/HyXD697WE884CKgvh//vxzftkP9NParnZCrgawg3Z2UI6JPZBq9maTssit6QqVdMBuFPRF45AwJCoTuyHwktsEteOvekLg/2W4hvkk5EoW9R3Gf6phGoXHCBhd+BEL5b2CfshEW2CdUeBU8RGBl+fbbn4Qeec7Z/ZPmxiKbUw6JYKhtYfD/Xe2w7gMlyl/DHt8FIPYtCHlJD4Dqhs/zECgNFtofnk/dj0dK6BEsaVy/cnj413b5AfU/JTFixs2TEFHn09ACxFz7l8l+8TfXTqpsb+wxukNHokrAXfr0EGGdnGa8lxAKlNJFujjsYLd8tt8zaKYaa9MpOafVouAbG7O3zQeiSYLSYjvIA/Iy9cVWApRmmNBRMsRsk9O0hZ89jQinE55xLLjREUP2vtZZeNRgleuf+xydVBhdMe8eT2xDkf8qVvP4iGOUV1bU9ly0FX+MgvUtzCGI+neBWOxOMGHflGwUfxAEl/7CjpjCCCwFaKVVjYSh1rFiF3T8G6JdGrweKNkLd5/bhZf1wdFdq/SLWIB5kr++k9dUhsPvxQjwvOgwNftIKllyJBi+m24lrJAR1p3RbjnuHIyt7Vr0vq63wW/700imvGjAtfv7Ojx+P3gxXF636tgKX6o/La9drIEwgnbezNwr1vF+smK1ohY2n10cUX1SD1fZfs+X1KHThT++9CeU+2Eg1MlLdigXc1bzkf9Q5xU9zXfRcZR+USl8+RLmcAK2ezthxqqe8TN07culmH8gINpmP8ybCnEfWHWnquiqXZQ7HwCBI8d2e6fyGg8Mq7jajGAIiMi3+W0wfhBej0X/fshJBWN5ULWqKgO4bhikKjw1CYFfQ1wwWEujIqN8wcyWgtqWekr+MQ9B1zaH5s2oNNJS90Fw+EoVW4nWLFezewudaN6Z4xwyoUvOZPSkfiRicKMaX3r2BwAj+BvQrDXS94kLKwyJRx+A+tnnWQCj9jp/U2EsFXqb98fc1ItGPNtedUPNW8OPti7ewr4bxUUkFvooodP2kYeMKNQ8Z88alp+7kwCSNNM/cWwLaSJaWe5Q2CAsRQvuPR2TDeIhkYuUsAXHpVkwoNw3CWDTupdHhLGC/ZHnkeyYBjU/FyeQdawSLGDWxGeUMEEp6PUcgYtGGUAht0NtGYHqsnryRkQH7eDxx8vNYpNF77iyDZiPgmQXOoJdZoPJYkhxah0UK2UcajlQ1wlTqstYj6Sy4Uf7yMj1zJCrgfNxz+1cb3Ir3d/v2XzFsyszuvzWKR/+iTd1/LbVB6cAP1PmI6vcpP3bM+vDozMP30XabbSDxhvfGVXsEO33fz20P41HU4TFuV8l2uKf6blSmCEHB1TenVHbxSPWeU7UmNVcduvzOWpciSF9J/PicmqtcWTueX44hSF2wecDSVgoLmSkz2c0RCJIap26IUteT7BVlEkvA1UvwkNFoBKrmvTDffnEIjvws41k7nAdNZ2NG+QdwqPWymXz2/SF40H/nK1kvFwYOvcC5R+PQkJqUsedGG3w7MCljRd8IomUp7jrUff64b1znRfXV147niHT0CXD7S85J5/oQdEfaO3i6nzrneh3fE+PjgKH88Z3zvBj0TP9ojGZhN0hpsIr/TGuEtYkDo9fySOg/uMXmdKAFgqzKm2iGa6Ftc/ShfRUO9SYeDWONbwbxkks95PZaiB0gHzhrT91PoPnUCn8XjCvQchMH82A65QdZdYKIQtfqteprO8Fh8xO5dysXeO6wevunEdGUx9lM4a1O+Kj2iHyckgM/fhkmqFN9M/zFA9EXds2QTKNUon6gFvp55V4eUcMhfv5CUQqxCxK5THgt+/Jg/hKHSOIJEnIUH3e2lO4CS8YZ393IApAQbep4/Y2I9nNtrEQwNkPXQIz735epsKqrlxy1F4mEGO/86n3WDJ3pz+nssKmw42CaK3WXymmmCx+CU5uB87hAtD17OoxvKwZ9d8KhZwUjjqDdCpc+mDpu8TVDW0yT3ZesKETbKZGgLzYEAneZZe435sMpJZmzcpM49EDXPM+iJAeacoPazap8gf7r4RgWCEbnH7tZ7avNg+snpwpCsl9T6zGX5PUnCDHfEzK76ZoLM9ciuANKg2B8MPaWt3Aw+repFxjFi8A/O9OCZYIMUvGpT5nbIhA+vW6Ku7EBGk8UimiXE2FAmq3Z43kEqnQLuldInQtYszzn+lgi2FU9lwyhzoWabDNsQ30jqNu+PGXRZAsimU/wQoeo/S6Lz/c7jkDU58TpNk482MxV8Ri2R6Dslj3dFSUKXHQXd36dXQgmF1BkXwIeieyP6POYywEP4dhv0psvIfm71Ptt2WDk1S8uompbAOvPg36sYRCI9SvEhg4HoYPJF5/ovMwH5qT0M5cPIYD3ohbHF4KQ7X9qqtYXKVC9N2Qc8DIZ1iKPnSNU4tHGB47SL7coUNf1zOL7QCJMhfYsWgXhkfT8XBGLCwVuFhw3l5hIgr5Eq2H/C3jURlSJ3XhKAZ6PzwMeziaA77OgQhZ5PBoQM240bimH69NRuvzC4UCnQve6kjsESV/eFnL16IOfjaLCql4I6NaT9P7/e5wD4VxJLoZ9cJ/91iOhHQR641Peq9R8rgortlXc7IXPpIueWpHUfhXsDjHTJiOBzJQbszN9MBKar7K6iuD3x/CuLD3qPP0TthohWQStVxg+xD4gw8e7UVGd9UFoUvaIynZoEVSHqvZ1yuLh6Om3CxqNQWiWltteVKwYJojbwoIaJLje16y31h2E/PY66a4YFIK57fCNrjw88Mzd0sptCULnnC1issNaIDCBzvlULAJZiWxS/PEoFOjNSDqxlAUJniIPRbD14B06gvDEYLSQnpgfeCEHHnHWu19xawC+2JK9G/rBKEUz04yslAXNN8v36N82wHB9xueuumDks7dgoefbBC7lgy8/m5CAIyjM+nFsJMIxu+m/NxoEN0GeoO6xOFDDxZ70ekFEikdW/4vXG4S1TDp177loWCRltZ70ISLvfWP3rAMH4UQ2lRBbYuCEyCXtP8JElNr+Jc/OmjoPBL4EL11A0LtScu+ZZzDiLcq8EV/RDTpit40MvNIBO9xG41VIQlxGGqy5yt2gksytwzaaBhqfCojJbiQU8/CAl1N8NyyrjrhOX0mFo9zLEoppJGRw8utfb4luUCOWCdsfSwU7Fh6OBgcSGq+6Stvr3gPHTJxazvyrBJ0SM47PuyTUkaJW0sXZA8u08xki0VVA+W90rfY9CaXKXh70/tMNPQHLD1irK8FEivQhrYeEQva1J9pa9MCCqCPORKQaIL3M5vcmdR2yPgkbUeDu7gmDzrISEBEYdigzx6P97yyH/9yjwO3SbuadmGL4T8OtfMYFj7qqXX8xBlIgK1E7YO5ICWR4mpvfZcSj3DK+tSvxr6H9eR27Q1gG+DlyMeykUf1oX+If9cQa0E3gx7RT80fvTf7BwtpQFBrtu3UmpxaQdXX1AaZmsBR3OHnqSRiK89Jp90kuAezDCJ8D1Y0gPhW26UIfjDzSrm5sW5ZA2LGnepjbjXDOs1MhjJo/uTfTqxW/FkO+edbVCw2N8FOTcL5+Jgjx00q0SiT3QvzKUWu6njq4nzxby6lGRvSvzw+9u9oLYa+Fk27p1UEL/amQqzJklExaY3Jd74WesdbvrJr1cHHwV4AMtV/+fAqgiZ7tBbqYiZSRSw0Q6y5ll61JRntuTAE/t4rB6mSrYbhzMjwYTDA/QOXMa5bT3w+klAB3cS6H7fMU0F977xtB3f+22ZaD6YdiQAc/P8uuS4UUJb6zhlNByIjru1T89U4Y/FBknvnNBi4Sn5j+fUBEv0wOXHlU3QG9/lPMhGpHEJ6Q/2dJT0T8D1dm4q4UwxtuDJuYTxL0BjorJ/cGoZBZH075+8XQ04ZYx20SYNk4WqhigLqfAt/71i86oElm5i7pUDn0uP4RevKRgHI1OlkKRjuA6+xFNqWlcjhj7no6gJuI2m3DJf5sdsBbPmbB051lcFYMu/+JBBF1v3kq4OJZBE8P3i077YzgKb+cchoKQj1pVjtIoBh2CbImGAUEWZpkDU5qDmg9Wo4y2KwHsQs2zK18tSAZL5aevhiOpjO246bP1kHs9873GX8KYf5JbSdPVRjSjz7DEKVSCym0hWTMrSJ452+MrITD0FmHx90LVL+C0SLFFvFC6BFgjFrVDUMYz452S7ou2CUVnbWbjodXHyVoI/uJSC780pNnVD9SknV/+vzVO1gNFX/jRPUjXKTIyuIKlaNuhN0+PYWHV1nCoqODeOTuYmEzoNMOdGv5Z1uaCHDzgKWXHhcBCTc6tBEKBuCIRqGEtJIfqJ+qPA++JHSRxa7l5ewAdBS7ZjGkvIW2dsH1NXlq/054fLMpGwCD4dNDc2kYGIgU1vnmTkJLzSHF3sMDYKc4oT1RgAWUPsoZo01C2jdY+5/wtkJHu7rCI5EKYHJOGTjuG4X8BXNwATKtEN878LxBuhJo/kjLdRKikOj1fv218Ra4fbpp/rsMlY+2VzLF9KNQ+KEG34QHdbBav+3+c/wdlHbW9GS8D0PiNs+kNYTqYN2xxI/mayzMcPzUXygMQxtLKV/o7GphUj2b4MAaA+v/Jd05rhiGJAI9nhfldsLa58cKM8vRoNGFWVyNIaIzPctVDUmDoJH/i7ajthQmD1tXCiwTkMXGdv7rp4Nw6NM5s97iUlhsmJA01iEijqdMPhIvB+H+K8n/modKYF7ziVkLENGheBHuEddW0K9jDyVlV0ClmojEu2Yqh/wqWLu4WARD4impElTfig4mbue1BSH56TF57b1CeMSd6tSXVgpzMTvHcqnzqMvO1AoXXgQaSd4vcqke5jas4feIOo9CH5mcJ3kMArePcsXzwDIIJH0wl5QjotjFRGYP/VJwNTUeLL5WA/8H+ZoDSnicJJp3PNXv//8zGkapjBQhkuzISskTpeySkaTE21ZaVoRIHMc4xxlOGdnZe69zHXvvClFGZpKQrOp3Pt/fv9ftebte13ldz+fj8bifcwoEH+U1y2GQLT4nn+V+MSQLGmjpMtXA+bq33GVbocj/HDbdVa0YEglM4XcEqiHNwHZu4mcoumLHW8BhUA1v0wVuhzkmQ5bR6a3HmHBUr+27WP+wGoa7px0WeVLh7Hb78s234WjTjNl/FVMFPtPYysjIFJAb2P1pN1c40ppCsX4yzSAoxnMxeDIEKo16BdqvEtEo7WykXlkzEMhXwnGPMFDcJX9mIIOILpWnrKZq18Jt3PBq2lIpHBc+OPatLQKphF//78UEgjjmi5kfWeoB+NUmFN1wKNiD5WaJBYKS6lsTM8s0OGFZXivFgUMOfMF5uoOtsFKXyNCuisA0bMfvLzcZpeutLXp8boW///5pecRSYZ48pfSMn4yqp1rj4kTagP9n0f1lYQSB+kffc18lo6QYiZLDNq1wc6DA55w+grFJ1lreThJS23tu2xHfCm9X2DTvF1Ih+rPAifUFEvKu4vpzPsMWKuvYux4rFcBfVevFT+LRyPVR0A7pXBvsIs91mQdSYW5XZXajKRnFflioLl5OBwMtl1182VXwVkHEzcsqDOXq+Q931qYDjnjYLbi1GipOdRSr3A9Diz0vD7Hn90NZormPr1wNqG4XzliWEVBuYu3SXVI/UDXuUGdfVEPjNz4uhXkC0iOL7rBQ6PebYMAcJorgnkOWhBYTBj20PLXfKa8YTHgE2KJfIUhr/3b0714MuqzO+L5xugiq6p0Ujtsg2NDdG2o1FYoinpsMhA9WwB5s4VHtwwXg/IRhbz4/FlUN4g/v2VcBMk0GV8o0C2D3anbLnqIwFKC0vawYSYUxLoKy+3Q52FW7JFgZR6ERDm6eJwxUqKAma+umVoClyO2s6Z+RKIDdgbektg7Ktpi/o65yOMMz8WKoIRIt6DgebemmQu8C0xJpsQKmCVUsq35RSMVOPzFIEAt/LA5KHq1NA58/QWJEBjx69U87vNQqEqoec3NO8L+DSdH1IdluHKIeWXj1obkdWBuGu4s+l0GNc76R9vkY5HCobO61egfsOOOeutWVAe9XbtFErxh07Ii0QHhbOzQGs+mpH2+ATXXOlOILMYgiy2SVKpUEb8RZ3zEcTIeM9xUB1+n9nynaliypkQx6soT/KgZSoellLNPRE+EoZ+YFS8RQMpRpvtNu3E6DwOKiwHNfsGhLpuF1EK0T3qlwlJWwNoDhD9qPj1wU9HVJyO6+TR9IxLA1jO6tgW/4xjc3HMlI80ug5LB6H9gmiM2zpdcAWzPXkvs7Mkqse10VebYPND/6y2avVMORH64Kf2rICOLFBVN2F0AAm473WGoRuJ2fiXvUEYqUFv+kP6MVwLuz3VSlxGIICg/zLaOGIi5a7szx5/nAkO9dPfWqGEx1U5/eGghFx2IHQwupncAfPGEWEVIPD7pX7+vSz7kU/DDT4E8PhDcYbpZqUmFr64kCVYSCcjhHr1HYeyGaV4TP4h8VOJK71eX5KCjip4Ef2S4DTMWPfelNqoYGB5sfkasYFB0+t9ed1AO4D35rn5br4HWFh0CBGgV95DIiOm/2wOGreGKlVR2YLtc/mTxJQZcV1K3c3vaAUNRH2ztTtXDv85R+zHkKSqmd1z1qkANUqqhX+OW3wFp/GSNxGoNshsb6sUPZwNuDtey4EgeKPEXRLKoYZNhnyi9D31cw4nn2wZCX4N748nJ+YCRiLRPqMOGog1ti+VF+tb6AafFKxxhGoj0hl07eW8iF9pKvo7cuJkLoRIT2m7VQ9KTMxtXaPgcw6yu4c45JUBizFuN7EoNicLFJ3f25kE1+m7tlngx2Q2YiHL9DkRhex9pwVz/Y3GUkJv4tBBOzhx2FJ0mIod7UKkusH5rOFo9gQopg79px86oeIhKu++X8mbkf9g9tOmuvF0HvMtPUyDESstLqeb16ph8Md8xuXjYohuU5ill5NRFdO9pQhGXpB/eUoLTs5mI4vrB6uuEgCZk8FjgZOtYHAR+q9dzuFMNG2aLxFTcSqn9cfMd8pg/mU2aDdAhFkMc4a+x9m4TEnWbZ7nL2QvLiwKewbCL04c8vt/NQEK+Q6Ijp1x6wU2D50J8XA8IVF50HJCjIqF7o2N+oHpDx0lCEEiKU5t6R6rpIQYyvCOth2bXwl4f55tjXl1D0+M8vDfZI5Lj9W/SwUSoYjMXKPYxMA5R9rntEG4uucRFrJfemgp+dgqmp8jvQGmqVmrbBorwXXMyqLSXgesD0/kPRBpjLNrzqcAOD/nMR99V4ngLej5wHnP6kwKH+R6pGb+j1e6jZ0i4lEH484f1lqxogcimvJCljkFTeq6fGK1VwZPKZv9zzbLANbhK+ZRyO1B0+YmvX+6FCoaxZZqoA4juzSIzyBFT0c5TnxMcWSON9cdnnXD1EX3R5VUt/b0t2jXPxLK3AcyLZdDGxHu6H5F8i40loxdO03061FepHbS62KtZDJS06ZbuQhF4ZXfghYkdfv8wWGaWfBJ4veM7zdZPQ2UrBtVd0P5IoTXvq65sI3uDh/JLuRy6SnsY9T3vg0x7tAM5nFSCdSevb1KKggLttW1FC3RA+sPTLP6IGNhXujew1paB+mpFu48lumCiQGvnPrxZ4fa51XqevjzzrHUhnaICfl+rPGt+vBCHRrbSgTTxq/6J4P260HtjHvQPTsBXA7PZ93vYzHqWLlRnvOtsApxe3pI+7VUDm7kDN3OPRyHmJWGw3iGBpvfSlLhuCO/G2MGmHQxJOvP/6DtNA6owwRdmCCjlMPu/sonGo0xrnpapNgwsF/2W9P43gFdsBp/PlOFSfyRLKj6XBKafx2TS6D0rLBdf2zOGQmFtFyFxVIQQOlln/uZsGttbCAUkNoWjtzLJY03whlFD6Uti4UiDzzJvqiuZQ9OKzWtib882A//OzOns6ForCor8dNyYiDHOo1dZOE/Q+lkRoJAGe7lV0dRclogem6Y+b2prgxDYL2XjzDbx6vDu0cRcRhdiEjh2n9sGe+Ouz74xp8HqC545/PgmpBiMN4cg4QMJbAygLD/wcvy4wHIpE9lcyXw++bIL+wSN/NRUTYID/eqhoDwHtvdqoiqusgDHmzBfKTAiUHO7Uqh/AIjM7PX177Uo4+iWYS9YQQfWubofSW1j0eHLKqdm+AhL8fCztn9JzzbL5w5TJMBSxufuQlm4nNGMd/nBwvgTC0OcLDosxSFm2cz1KohN2TSf+vrv0DFaP/bG+MR6DDjQKvKMldEIsqNSqGvvBvAqr8XcWCprUyXnMJEsDz3v7WdnWYkF+R9KEmI5DZXsOp2HZaGD4vuim/9O3kPBC5r58BA7ZsDZSn1MR7Nlv8brUMg7E/dLM9pnj0A18MedXexp8UyksE5xNADvzD/vL6H4aVvqvLftrFfR7hhE9ksrhZlsYVlg3HMlzmn0pC6+CBeVQwQ3PMlA1xbhncIcjmNobuTPeBFOHMxL8WBCIjZnkuBwioogJf5+nzM1Q7tXOMy5PhQ0e3qwuCSIynrt6PfBaM8g35eEPb1Khi/ik9Lc1Ef18tvSLL7MJmK152VXMqCBawLupQ88521ezXcwYk2H+homRaWU91N3iMxRSC0e714Uj7yQkwS3XHQr1TAPUS359HOwcjiIOK24/xSWCyrzenZKf9YCoVK2K+XBECHjVdp6el2Yip53Zz9RCSQfe04Cel5oHzzwX1y4Da/cL15hdo0Hh0o716QkM0n37/cW/h6Vg0/kspzQ2GoyEW7ycIzDoaPQPcZnjA/DUbWF9r3wBnHz25ejYz2gUca3+kavRANTuvmtgo14AtKU5td3p0Sj3c8t06XIHuIn8sw7XoQG7kO9phrYY9Fmd7fdHvU44Ox9hcfE8DThCfBn/0vtB+PRyqmBSMyz+HatgzU2Dar9J35+viejXutj6JdlmaJI/7+Wmng7lcSym5jpE9GKKzaiJ/t7H/UqGDOsqgT066WNaXhRKdPEO4riGYMiBpuK/XQEe+wrvO+7DIQGtE0/eelEhtG3Xv+Zr1ZAUv6b6QisKyVfpPhABKvgKXJzSeFwFnGEWSdX8UXSdvPI7aJ0K2r1GHj6xVbCXV7/I900UGiX59Jsfo0LIA31Bt5E60BOK6ZhgjEIZpP3Yq4tUSC9yWZytqAMBgzfZtoQoVE+VvvAuuAX+VaO7c86J8CPg7oSvCgnNT2PCu4+2AIfr1C+FvETYiCHsubxERNcXbLOx7IkwmOuxpfCnGlTaL34TlYhAJYo3JCwONMK4uX+M5eVsiJrKuOlbF42+ZVIXbM42QtGnfonifbkg6XAwNnY4GkWmyDD/G22Ai8IRykgjF+QjMBrGb6KRvtuTKafHvaDhU0nUEcyH7dRJXuuWGIRPNdJKxPfCPb6unJSxXFh08fOaTotBKRd2jxpv9gH/+0jTJ1M4OFisoFVzloQW/5T8GKb7PuXvx0mxaCJI77n+46UICUX4hl0zJHQDJzKcu8FcC13njt9Pu0lBhk9fZz9J7Yatr27fO8/WgBeLtJsDff18UU7Vz3OJEB4Y+0STqxbaDdqt+zgj0GGnS4JVzvEgwlt774leLYxryLsUfoxATe8FXb/f6oZmphpvJv9qeKp+3/2POQWFbtrirRco8LTgWPCgMw0+zD/kSN8XhXiVyRvWjykglDO7u/oXgnNtiSfXT0ehlgwRiem7/aDwqju05SgCr0vCCGtORHe/+7cfsOyHpO8Nk+l0jtijg/6rv0dEV5p+q8ZL9oPypzf2V+h8Zt+7WafUQkQFF2dzSjX7QVF+YL2qDYG4fek7EomIfu+zvJj7IhoqB05FNTyKhax7DJeeWuNQKsdbPc6eaEB+SqOtrBQQF52KUzPDIdtfozJSzSRgSD6U3+j+Grj+8WOjJ6JQRfITuTQTIkjIzl89vUKC92sGN52F6f0sku0xmNQOZDOFyMSP0fBv8kQaTiwGhcYyawzPt4PQ2DHTDYQDTxYKK9YgBi3WMm+2C3dA5nJb3J1gIuyLOKVy3zkGmeIbPH4n9cHeMeHASs5kGOPgVsr9RkIDTbzeRx70wXO/aIEXR5JBwK1AXdWYjF7Lck5JCw3Ao4dbGgnmmcDok9/N+T0aMVntYTgnNgDD0jF3vrpng/zzV8nrE9Gotuvf4WeXPSFvl/2/DtdKmJiyUm//hEd7hQw5xor6oOf2V+20okTgNM7X3G4lodIpe64DbX1gMP4yp+E3XeekJlvS35BQ5/6Ih8L0vFfwdKn+t1MiGBmJrQg+JKHCsot2w7sKIYM54dGoSCrMCVgbZNSFoofkDd3k8QKQ3CLoS0yl/R9XMtG5QL5WXLMpshICb27Zxn+gwiePrmXWICxqqjiR0B/dAsaWqqffObyATq/43V4aJPRNdVNRqrEFBg8Oqo85YqAoSvTzqg0JVS753zBtJwB39MTSm/R8qNPvZ55SwKHLzLtDvzC3wq5ZDE5TLAhO0uZjXCJJ6LMc57Lndh0sa00LKz+qh17rpgv93yORIoxUpaXVAW/sRrH7Cg3c7NJEIosjUeM423QcTx0EVsb3hZrWg+2RLFX7G5EIp84ln7XeA5IyNfyRjLHw2Og1IU+Uglpa4Zlgcg84Cx1sL3kfDxGRgweZ6BxRb/TrRpZ1DzwRcT9xXeI1+HhEnne9QkEb2DHHtLkIeOih8PfLQAksh7ZWhLzHIfhnNMl9FAsldWwKt/tKocnw4p0NOoc6O5169ehrKNjV75qN/1oCj9nPbi2J4FFBdPIQ7XAw3HL/xKQfXgopCtMmqbfxSMmkrZCDvR+6q0x6Je7S4FizyogJGwmhG/1oko8+R9kU36ivCOYDK56JzRMRq/xBYflbQUCcbQ/c61kCzY//u6rpjkfoWuyJmIMBoMbiYfz0TCnYFagdiEzGo+xdR8Ox2t6Q923UJeZmCchoHKed78Gjst3v5pipMaB+svN5pjYeXhw8qWtmQfcFn5WfAzQyLAs84H3JRwJNjm7WwvgopJlzz4CxuQew7Ye+i7wohI0qRb9ieQriyO+Ft9U9sCIlW15oXgDa2jZjyooUFDk9e/Y4dy8Mld/tWxooAI7XCheTuSnIe9DFy0q3B3i4n1bXfi2AGkaPkU+6FHTxyD+/E9uVcLerR07LHkFR4nWlHIRFHM5aF8ajC+A9zZvtiHYCMF373eJIC0XCEQ4pCS/ywTjgcZyU2Vu4c+lcymE6tx61UkqzfdwHSzsynVs9MbB5L/zeHx0yuirwlOvkpUoo8Wj9F+RJ901vph13Cyya+bx950d7JTRSVsQiPqbA+RN+mtxpWCT02OUjz6kq0H2+YBQUlwb6sgxW/sNYNLR2++7pVz3w4IDeLWxCMXjv77tRBxTUZrnK8fQS/XP5jHBtbxfBE83lQyV69M+7y5r2r7YHupSYP4kXFUHb2EGvdAUK6vnY2ztomQ8py4ED/a5J8Kb4N8fz96HoglOmOk6hH2bnu3ezyqdCrpYa+WcxETXeNdFowOcAHXIEjtH9/ClZ18JUAIPCv9ebL9/JhbUrPd3VolTwpF5v2qTnlon+sxE/32YDO8NX5/yAOsjtKFnV0MKgpOsVelnN3XBDLija0o8KiU9vu+rSfYGJfa9unmwP2JTF7bFVpULlTsjaE0MKat46rQPnemDLfOuvo0UdHLgXcF/VgIKuFQS/lRpuhpNFsk0hzAmQ+zpNXotGRG3+L4RHsc0Q+XNewtf7DTjYT0qvhxFRYoS3WvR/dP+wKZrV1awFwhRudw8PDs2kPg4wbkJwszTKgGmmBqTLH/+VtMTR81L5DqmR7h8Fyb/TS2thoYvtZPotHIrxfUxRIrTA7Do7QcIkA/id2U/U0PUn5/t/rBrhdSDWonrowfUq2NypVrBLjkRLRRvmnL/r4KG9VqLIq0qQDlCRGVyIREfz9A3vZzcDQ/oLI+fYFLBfr844k0REox3p6e5Xm8Eny+6kolkqTH/ZQWBJRHxGykQnvWZIy+T7WlSSDGwfjkRYWBFRtdLl14F2zbBRuFSvk5gAG1f2nfzkRkTpaolqn9n7IMIo5cPrSRoUrd394fCHjJgTfrsfGE4Ba9o41tYsDBrXqzdl3bHI02ufYNt4JjSdSlQIUyqACbavy30UDHJ73mw2MpcFvwv2vsj4XQCJvz62Ymwx6KBqrtuWaCaop/1aF35QCO+PyC/aN2CQVcWuAxuWb4GtVjHvtkgdRFgmGYlbRCDOHVvKimgSDFSOvlvcXwfGn3+89kgORx1JJ3Xn3ZPgwTVu/dcGtUASve4g8Twc8RjF/mZaiIeDhapPR0WokOr699pSWQQakNkUaRSPA+eh663S6nWwlGZ5QUcyEv16GiPpuJIFUcLdubvbCiHs1U5s/T0M4lK92HvJuBka+zXzbvnnAMlSyEbZhohwAT4Hg6qaYSz0BwxV5cDnh4FTrdlEdCjzTfvJkGag8ls27ufMg8y2NJPkELru3Rvg4jzTCwvdMrW8E5Xw6ZLnrWuMFHT9pWdKgmsvcBKZlai8VSB/IPmJTFcM2kmcz2JU7QXdn8EyqutVED8heDRkKwbl087k3XzaC3OdFaqREtWAvajC6NQUgzblv5FSjzdDlZFv9/e8XOBVTnRpvUBEfnqOrWxn+uE5yF38cJ0MtiMHvLJqiajIIa3pZFcDBISw8xk8QMAtfVW/ODIa8RsSVC+cawSZSv3AkQQE+w5VkabGopFFpawM47sGkDrGVJ3BQoO4uHbl2sfR6NC0JY+ZPwk+raXaNtUieHLKZH/6WhT6ox+q+kmzAY4NponFdFFgf+lQsb54NOpgSGpq+FAP4peyv0vqxICfrKsz/wgePfwz1/fHsQHkjabFqlYI8OvFlVbNy9Go/Z2M+5nMBvhPbqwjxykbLnQ+oJg9jUa8n74oFHg0QHmA8XO7+5XwiKeGxdCIfn5t8glFv3r45VLn3EgoAwkNM+E7r/HIsMHkRwF/PahcbOwcnSsDd/l7bXrGeDSYaStUI1oP9xI9JAnfSsFX8jDn+E08qrigXJDqUw8aXSVF6tfL4euH1E9+MXjkKh17nSO6EXb8J2wO+xZAuNreoQEBAhKzn/xivNoIPk8LLIXECmBr68d2mR0BmWBfJjxcaISFw+u6TicLwZz/tw/cJSC754cCwnRb4V9F2q03kt6Q6Zf7X3INCZ2U/TMaM9gCSakyA5VM3qAvXyK/7wEJKbAoy9gTGyF4DSul+Dwf7HqpnBghAjqs/Xu/sHgqEDwNHvF7lkLCWEYpwZTuO3zXWVLKU+AA69ulO8klIGn5tS8mEIt2JuNZOtTSIPuPnrNrewnUjOSy71kKQ+89nBW9V1pg94JHe1i6Mzhr1N7gDyQhqb3Jjj3GrRCul3jq+IQDmEmavuGsJ6Ez3QrMQ1Y9EFt39/yLJn/AZz4SnaDnDU53/Gd2fCrEpcmEzvwuhrhT46RUaSw612xiUl+VB+6vTx9ML6gHWuOQm9VEKOJoFKxR0c2FMd0fsvcu18ORFgcmtz0YRPVX/aOe1w2Bb4vTy+SygSj834wknSP2pONbDOX6oVLIsLZFvAQcEsrZV6uI6Esoz3SSVT+0E7XEyuNK4H4xe+f120R0v7Nc3nauG+62CresGuXAui/WzNKUgmr22O3bTz+/NHHCzvp3Dhz/sreU4SoFFSdeuZPyvA8uypd/LueshFaeEjM5BTIqEsCycXv1gdmY7I6QUgUY2bgc2qVORoonL+2Up/bBf3k1eddt6Hwq9MX44AwJsf5Wv2KpkwHGs1M0k8s0CMs/V/h3C4PErlzhsZRJB8qFBauyZzTwGK6xuxIbhgZ+xvb8rEuH0k97cmNWEfjyZkiNuYahwu6fV1llE0D3P/d6oVvZEFx8Ru9SWgQKjNrwSDROhIvhkUNaG9nAUmTSVbc3At0X2sbWGbTCwr2ekJ5DDYD1NrxXV0dCf1tHjqliWmFLr/S7IKEetB60KqdPk9B1t+iU9UEEI7ozd/MtqmBr4+h1HXscYggK1EhwQlDLwdM8ZFUF6pVDzyyP0bmmmpbj9xLBWQ/2nkKGCuh8HTauI41DbS3WVAv6uR0/UA/pq1SAojr8WPTBIRMHXPJcdx/sbzhxc3OpEJ4FPHM3pOdkR4XxtMWZPvhwGlZc5QthMBMxqVqS0Kvk4TsHZLrBb1rn6mGFIjDaW5SwQL+vxig4hTnaDTLFk9r8dwuhqn8jPdiEggyMjzVExXTAe2bXa6fDsyC2O5N6PDkGSdo1FPZJd0Dff9ocL/HZEL7udWLaLQYl6vIuMKiXQoXIYfGeMhLs1ox65O2DQfM39jqKF5aAxi/uGjd5AtzK9ZP318egeJmOSePNUsjzf2hDu0WGtki+b/k0DJod3OJ6wV4Cc7k8aT9u4eGyIVWDi55n8o6JKEY5dwJBx1XaeRiB9GZkr/hGDDrzuaCJq7wTfM9xlU6eoIHymnVc2iEKuj/X/vgMma7z/9nF/KrFQ9tmjm9BYgziyrG5uvSmF9a5DUPvdpPg4S15qlxsDGLejD91/k4vPJQ2G33gSQQx07UF9k8xSOIVwef5egfwSL5unmhAoIqg26EjBv2qyvB03pMB03/J8+cqETyW7+Fn3B+GbrrZ16TlZNL7pOaa5hICbc0lOb1UDBJs7SM9iGkEFWYJ3Si6TxZdD5+kChOQR9ZcJ5JrhLmTCh5TLW+gqn0h1GkoGp1I9ph19G+EkqUG27qVGDB7vtyvcIiA4uyYJtWtGsGaPz8rm/8tcDzzarmwQdfnLxbfcV71ICHD2dzFSH8/+jfq1Ul4xM+lcVb9cz0McarhmWQRMHMpeJK/4NGZVwy8Mbh6KDLUPpuBQeB+JkeqIx2PDj5+wIeK6kFtroTz/VUqeLNkKjVQ8Wi+UFOwja0flkJ+pnUuFsCV+xnnvtN55C3HdxV39i4QEg0uP+tBg1WlnahUcQp6G3Wz8FNwP7jJKyvs8qkB7OrobOY+Inpre6t68Vo/MDofH5+l1cD5dI5hdU8ieiAjn3bJtB+2Uv7cdsqqhZMMjz/tfkBELM8ce2321YGZe+XKsmsxWF9bvjOrE4nWGK3anT/UwcIaqthaK4ba4O7Y+MFIdCvW9NbdNwVwlMLqfS+vEM74tOtx07lA4L1EzuMThSBd9ZufgVAE70fzlrPonBu549OME8aB7wVVxQ3xNOCrJTvo5+OQJMVV5swjAty1HVETj0sFu/H6IgQ4pKxwW7REkgDqR+88k+pIBrELXje3dHDIOa5mhA/VwY7h/c3bA0XAbJG45t0UibJyGPefGCwD3vkv+omZr0H+7D2XZoEwJGLsRWRULwc2ux9HQkbiIZwwEzhrFIZuO+EKFc3L6H5xg3yiMR4OaQ1x3ZjDoLQf65qkpX6obrliG6BbBV7J/mOXgIBMY8pI9991QIvzvpdPdBHs7tbVuJoZg3JB/cXjqQ6ow9rF3smigonU/JJbAz3nZKmFxIsNgEajyYasWxWsVNvdsZiIRs/6Ym9wJtKgdDhu14PzFXBLotB25TcOeRUw3j/AWg8+ZRg+XlQOhnPVvtRLeKR66FUNNS8Qcpkf31QMz4TK0tuOOX54JKIbyqNU6AU2iae0DCQyoetpZPB8Px79PkYWS2qsgIKVRhYkVAunb0/RxLiwSOzIy7Wreyohy/3SuRPKdbBpdfVHpDIW1QsFjGfTdZ9rX1Il3qoGqts8NW2csehDTuF3F1wtSMVL7phS6+F2bSjWcisCGb9quDntUQdx5MeSX+nrr0/ZdP0hRKKKWfftxuwSMDzfHoR3qIV9RKXj73UxqMCTFrR+ugReHRXNevarFpQPJ95yFcWg3WIjGYtuTTDJ857hZGYufA9Gr/cjAurNFLX7ubsJlAQXcnve5sG36dV78ISAuPeeiDAp6QaD9GeztlvFsPPBk/MvnZviL6wruc13Q0tL0dqvM8Vwfrs96Cpdb52Ke/4RhOncNGv2ZGO0GEZ08glM1+jrH7l41l5XwWFtZe2S13h4eNSX5cXxcPQ7uQu7r4GewwKMtS/w4eC2EYc8ORGLlkrWX91+WAX/dvl22ARh4UCes9U35nBUXRjkPP6SrufZu9ijFopA+sKgZQHd31dVeiUPVrfB7WrfW6d0aMCkxRX7MpWMyq4VDypKtAN11mZS24eeP1M3bbWnyWjqr5gxx2AbfC/5kVBVRYMLJhFqN4rJSEZ0z1DzSATsTajXukytAvKvM0t2H3Do760L+Zz3wkDnu93X6OFKqI2zu3liPx51m3l6sw9HATBks25EVsLkh+uEM2U4pJ2+VaiIt4WLTQwPzYTtweBS+tFjEtHo9GyPH87QE6g3Ai8cOecGd5q2B/Gf8Kh9dJeAd6kdxDedPHRx2AMUAvM2r56MRnsuJxLHrAcgy0E93UO2AYysTGamI6KR49CBuiaJATilvz+Fj60BPAXXJB6MRiOGyNb9pNsDcLrUg0Oprx56WnT3lBPoOVwq6U+AOw2kKm6vR+VHQpvkbO35YRxSigwdN1amQThjS/sZtWiIEnsfgMnBoS6mE6ydx2jw9zpj5CVsJDgHGmgeo+AQ1r3+12ECDST3Lc/viosGBm+7rsglHDLTmmb0f9MEG6oBu/bG00DV01uz8TMBhaW8OJE71AR6Tf/NWAAN+K8lBXiwEZHH5ur62V9NcOxXV5neWxrsEvaumxYkoq1ySbbvvk1w8UfGpL8CPefc0D77qI2AFEc/j8gp9AL/+twDn8+14CB5be+JfzEosjKfZ3KjB27ZhlUMB9aCN8lYhFWUgjpNA8tXP2ZBx27Nbc7uZKiQavMptcegfFk77VDnHAg3WE03FEgBp9/Fj6ZEMOhxRl7WRblgcGN7MuJOzobKgLdhC7fwKJaz6hYPBg9WXUpUtxO1kGz0pmbvCxwaslu7rq0SAcqnho6wWdfCfe0aScw4Dh1PyGp7dq4JDr4vsWtRrAXsg9r0dxQCKhiSonUcagIpjQUrjm+10OY68mHUh4BudufPtIw2QlzUpv3W8VpgUs+6Z2RK98HD70dHSnCw8r1zrfx3LeSbW0+ExOHQBZHgvWds+gETcjpCpS0GOJZTg8uNiSjjpeq5Cad+0O5bND3+NRYO8Hx7h9ckIuobgePfLKNhfHt7VTAKwTL55kdXOxzaVrEyCfpIzx+Ojsw5+xG82p/8u90DhzaUbnLLvumHsXrV/zhdU0Bw+LZi1BcCYi8M12wXbKH7Oqfr5scgSKQFI+cVOg8GLlu6jFPhv3dypgG6dO7RD3CSwEahe2nNhbEfaOBVquSiUpICgw+yUh0F8ahvhAkU/tJg5QtoTegkQ9s+JgmRC3gktb1xTOVsPTj1BcmxfU0BWSHs2wIbPDJRMXo88pAKqkLH//qfL4bC6Yhn4hejEC/v24QUv05IyItR+zGaBMxhAkdl6f2Q/Dz42Y52J3yM63N0Y0uE4dknM9LfYtAInlYqLFgPhhsJaQtQAlpLt38fNsGjAWKyhbZhPewyW1ChcZYCxllTw94Dj6pWJ15HHagBri/+am5LJaCeeacrgiECsf546G5mWQ1zYtysJpWl8P5kAqtcdDh6kHhbMvdXFWxs39i7a7QEhseOt941CUcVhzRUGhg7IeOOjkGabBL8yRAZeNIbg8LJi/ON0m3QO/xFgPlXIcj/02t2MSQjXF1BjvSjNqhlcTptrV8IxxsPyu14ktGsh1e5SHgbKNwomkgWKoKgb7GXrULJSOWsxUr+vmxo4G1YUsMWwYcjVq7vrDBo39lR4o2VRrBfE/C81FMER5tB789/BLSaY5leSWuEUw5FLRd3CiF7vqbutQYBbYoV9aQ5dMPNZ+2L5pz5ILAvMciErqu45Yakvp4uUOQbWHPczIUzTVIzlw0o6BKT1dW9Lt2gpMW1CgM5kL91eNyeXp9LZDngvNMGW0uN1EDVIji1pTn/o52MJC2tv9s4tMNtCg3fIFEEwS123ul7YxDx0Atleb52kJG32+I9VQy8n87tLRolo88qpUeJH/ohFxLqg3q9wHL/bi0vF/pcMMq1+Uq/gtVL3yZ8aPXAur5TE6KPR2dfT27dTG+DsNeXUpimi6Dsgo2SKIWM/tvR2W7LCwdf7pULfwOegwz1deXBeRx66odt+d8+Aul6/7c/pZ279n/7MJspF2CS+4Ej6ciBjdh60LHU0v7RTUDyGu//7zxtvf//uYf/tWn+7zxH3A+M5+kOgFXG6+u+7PXwNiQR25wTjYz2ikeTeQfgF++0Uxg/ve9IT4w1NqOR4MSThcsyAxBzRduOma6jaVbl3cwfo1HFv7lkd4YBuNF0O+9KWj283BE2jxMkoNOab7ajMh7AoTNmM6oVIdDhbP70HFs0ony/42U54gPLU5h7FuWvYOn3s9y6OjzKL6b+F/zAA6zYwrIrjaKAOK0mtz2ORxX4+FS9vgAQoo8fq7kvhLxqyrCl4BGW3f1wlb4n/PjgxR9Bz0cfspBaPN2PfjFWGnbR/WVVmVNSwTMSpJNHXW3o/sIkuiF8NagPfHaupkdKEeEqa4W4sDgZZdzEfpb89gocb9zap59RC7nZF6zJGngkkKrizt3yCka0U38bOtXB/lwHl1wt+nnqS0ocWV6AM1F4RUWoDqSCY2cd/pfnw7VrR94kwsFrX+w1d9OgYulRXPHXcESZuhL/6koQnPTIZ9LeTQXC+12zOvQ5vepfKbmPvwIS0YmyOEwVCFpXMUvVhKF0A6N0MqEJChJ2r5ukV8DLF+LbbcMEhJERHDTubYIGqTVsZFo5HDRZDvXaTURXfskJ4SzLwLHhCV7zYT1cYcq4JLGAQQes3z7lqCmDLzeky57Q7/3sy31je7jC0GIj6SYurRTiDH8YV7bUw5fV9U2GJAy6sjJU2Bv2FK7NOPpcFQiA8biyb4GLeOTjZ2S5Qed5t85zIuhDHvCU2v9kK8ch1dFau5MuNOD2CF3cZM2Fkkij+019OHTLaft07u1AkIgrzRXdqYFTR2YpokF4ZBNrHsmd4QXrb4pXh+/WQqb+jwXhATwyHoPaQcUBqDK76sX3qh7Wki9wPe+IRq1yjfrKRzrhg0zeJxfBFPj7vr6gZCgGsZ8iyG6/rAVVUYa/Ib73Qa20x7l/JQJpWzB8JHHUwkU+2yofnB+8/BDfuyc9Ap12YZbexUOE0f7ZYRisAoGp6UvtEjhUvyiuluOMB43OZieDkCpIZlVz/vOSnhP6HrNaN7yDm2KTv6nFlcA2qzVNEgxDG9NeoadLM0Ch5nrw8P0qeDCXNsX3BYPCC0e8DXT6IV7y3rRlYAaMPxmMeh5CRH8+3lGJftoPru+nzRzfZ8CSaa/FFSkist1vZkZ0yoRuzz1krFcllMkHnQouxiCFm7gR0vk6ULhTMJt5vAFoQdnZwq6R6MN5gysWz2oh7G/lK/fTDTADXZSBbxEo2Fs7XpZ+7zkNim+lxBogocPbhYF+79V2rlg/6T44cOGrk+PrQuBXEylzbSEj6wPvphWd+2Ci8Bgz09dCEI2dxr+1ICPM/iVPnrsdwM4olky2KqXnkCdyPSExyKtpRtF+ox2u8L7UOj1SAtxdakx7TGNQqP9N8xNBHaDw+N3Q3/QSOFClS6mlxCD7apa1yyxVsKV1/t8ObyHkWr641N+KRS9avXveeFdB8cUf07HbhXDd9d0nK9ZwtHb6mGMrphI4mp+H9e4rAoMAOaQWgEVZUmLurm1VgEKfXps8UwjK81bh7efCkbThZt9ZrSrIqYlr7q4sAoL/46BHC1iUmPBu5D/FOph5uF6iUVcB77+rVO04RKJjZwJkr1+ohaFaXMvL3grgE360R6ohAuXa3/1aNFULy7y7ny21l8PKx9v8z+QiEXNNxsVAOv/0QqaSTmU5fHrpqspSGIH2bb5sdT3QC2cvu+txj1WDGJfW0u5jFGSyff3cwd89cGXRTN0hrwrcB9SO4+n5rZDFh3TsSg5sSjyIuPJfOkwyyYWzi2PQjmLiyBPXHJB1yat88iED9r3h/BhHz28lGjpFMmFZoP7R2oAn6h1s/efwr9wdg8YHjl2jqlaBpslEiu77l5Dw5sSBoGksGnetP5rzphIOMxzYxTAQCkxPh4m1GCwK+R3KHNMXD5OiY03zQ0Fw9dKdLfnaCGReRFzu/NUGnx3V+FvE6yGA63DNEXo/BBwiMBZotUODEJ931VcadHPFD5eskpH2zARuJqsPBkQl/3tEz0XKiS4B9sMk9P36s5VJ/XZgpBRzvmohwaq5ZMj4BhkN7Gvj/PWxF/56mouHSwcA+/Sl6mb9GNT9Vf/fe5sakDVL2yoUqYAXJdd0ppUikN+/dltvixrI8RrmJHNWwt57Up+Wz0SgUsHU0Tmhcohm7PqeRX/uAuOz6o8aYai3ZHmBt7wYNLzuLU43lgLXykroJAsGcRO4T48v0/MELrRIRqoUJll7+LimQ5G8fkeb+EoxHD+GDSxoLIGlsGuD4UcwyChyyfnv8zboucDxwOk0AqEk/+k2fzJKEDHCt7fR+yfy+FEmEg5CiCzn2Doj0WPpjveTEnVgLEHbvEXDAlH3Qe+qdSRS5TqJx8hRIbJdrZtpKxQcQvxoNYej0B71AL19p+rAyeeNVcNQNMytHYsosYpEMp2KzceyW+DLkeHou3SO2XMaf3/rOgmNvF3by7LTAkJzpgY8bTTYXe2kHxRKQr/sqoe8PVvA9/5Y14ENGjg+2+3dKUNChdtrB3f/aYHRuZmkcCkafJQ7NCWJISHDK1ZcJa864dsXTq2r7flg3S+nu8xAQe7BYiWmlzrh71wtX/BgLni7ZKnILsQgwoheVFV9J4xdJK2NHcwDA4oKmxI3BRmdcJDL7uiH0aid2CNfksGjKOx7gT8BNXLqFU/09UN172rpQ4MkGNlLoJ14SkBKfipKDf/6IbVnJ/XNlyRIcNZ28hcmoORsWen+7/0wInCt4QF3IihdX66Mo+e0mITbanaiA+CSzv/ayDoFyoNPXB/8Go18hpz0j5zvBANPLa1z3wogW/4LU8EMPWeSdlR7/3bAksFDcmVjPjzYh3Z/6I5B/9AjvQ9lbZD71Tfhcm8pbLgmmexKJiNxp6vOB0ra4OAEueQ8Syn09B8fM08kI8ELsi3dvO1w9uBtC1blUrjX9/LmjU9ktNeokpRJnwuvUOdlBnquPhf6Q4yJPhfhrmfcP0rQoGZb7+ulCzRoqd3cH5OCQ0dB6hrzOIL/MNbfcSsIUp2UY049wKHx3POTV+urgZeWFTvX/QbCLz9x6OoLRzl1fhi33GqQ3BaKEv0bD1mENtmPjeFIZnr+V7dANVAXnnl4jrwB3I3P+7Tuh6N7vdkhp6ebIGhE7eOQVTSseDT/cOSic4rWjYxt2WYo+vo4yCubCPeJj2yHdYjo+Xfb3a0aXZBfuCYnHFAEiZ08PvOKFBTrcn98U6ALLFy0ZBjvFoOAS+aZ0zIUlI5l5ceOdcKeIzyfHnwqgnWGR4ucxymouXHxhB53MwQ+OGV/ZhRB+uLr9gElIoo0DRIgFnVCcWQaY3NMMXypr/p58SAFtQq1j5dsIci+JdDue4cEZEYzZSk6V85Nxn04tdAHdz+EPdojXQBjYO103YSEyv7cjuMV6Afz3c3+Pt35YJGaFXzvKxExwmzb41sDENHu2kZJq4KHzUfCUsjRyOb3n8YYiwG4s3Lf8VpDNbBOWX3tjYlGtse5VS8oDwAD5r+2Z1rVQLwcRr7TFo3aVO21PbCtsMsqOfRkZjl83ymaOTpLQkrDugMfhul6scxBO2xXB2YT597Ll9JzUacLz5m5EghXjY+2TaDPq6pg4647GFTYx80o+LwUDCUzVEPKa4Gx9DPuMx6D7rklS54z7gbXgIu25/emwJDCy/jC//3+fne3saJECSQL8MvkaVfCfXYeSySKQR1Mhok6+qWgUlav7eVdCexMcFsqAINcoz1O2bqVQPQ7dRrjhSqAWHHHjyoY9O1UdPbrIFeYsaudO25cC19ezM2YHYpG2SNu+3UnbSEsrys5P7UGMuTlGNXFo9EI5pzFluEAOCo+KB95lgJfH36eSU+PRn3n20+LWdPf55xQ2IX3qWChcNRuNDIaHd9wDUmbKoWBd8dYbGWpcCJ16+DBSgy6UWhzOyu4G+okLmbNE5OgZuF51f99H/Xl7NWYqFQQ85dmGbhJg9dVu9fkZLAoI13k8V+LLPDIuvSVeK0Ejq8W/7Tyx6Dfk8oW0t3ZkKPiruMwTdddEr948XkMYn7klJH7IRu0jXoKLSZKwJ5zidFMFYOWP7UMyuplQQBfsCqPfTGw/T2TbBOIQZHq0ZMZBvXg6PypV3gPFf4RqD6r7nSOFueLjwqsBz7v4LN98nWQwQyL2Dg8yom9fMhAPhoKBRVb/ia8hctq94WnnXFofi9Pzb99/aBoeM/eL5nOs1Ir2j8PkZBYaor0p//6YaydWwdOU2Hnt9b4MQMi2vP5T/cDuyhw8/v7qgxHgQ+XPA5ianHo789jzsNULLBYJFxqOUSEk+sMsq2/cWjf5dLJgj+hsNmQvK21HgP7jUw+PRDGo8l3DzGD4f3gbNAoM++OgLO04ofHFgGF8tcoMGT1w9nnD4600LkgEPO1VxkRkPkC3VsP9kOy8ucE1vRSEDr19tRtRhJaC2UXZR/rgyO8JJEG6VLgTo64b/SQhILz8BGYiT5gnc6n8e0ug+NXnadq7EkoocOHtXGyBQJy8lG6IB5mU89l4T1JaKU+7HcAAxbY+Ngkc482gFy/Tp0DEx4pvdLcWM2n63naKbVSogsoyFVoUEro+nxaSeEnfd0Bsmwa6fU5lC8p8fR1Y81an2H6PnXvOE1nI12AwWfT0oa+T9T10t0fZ7pAyvNvyTBzKpigyzBnREES5u8DaDy1kOXGGzhekwf4J5amBVkRSEJtyusw6gcCj3uAMgbBd/7Kk3gSAX26Hsa48KwO/FKd/KOdaTA0acpQTI5ESiyfrpjV03nfleV7FWciTL4gz7FpEtC5F3gzJ2wHlCk8nFgKzQH5FDG/qLgYlPpI4KTd3g4IiKHq4mVygVl24n7m7RikfjVTUjO4HsKvaKtutmDgZWyuyssEPMqyfBruTr8DtEvKL7ALA1KyJhYhc3jUnVlTxJxcAAFR73ky4xxhcXwD24RCESRjy5/GF8KmJVdx0x1XuOt57glHfSj69CKK9mW8AKxFpMX91Z6B3YW0z4zUUCQ0Et87964VArIE9jPJl8KNfzMzQZsk1OrMfofraitoVwt56umWAu87F2WmahKSDfCizcYFAfZdlfx3iQb4iMxYoh/h0W6DVRrvN7ovS968XnzJAerJWev3tQnorwbz1g9SEPyVGOdoUHSAvjjZ92v0+iM5EHCNXn9Hg7p6WrIB2EaLJNjo9dz7wq07v2WCxMO5NzbnGmDt3KsZNzIG/QpMHKwNa4TYBlPXgG80uMcV2uJzlIAYI9CTMNFGECAfGxKjr4vV9qd79UQji6uHUx9tdMPopeeXDJ3ovkMUihQxoSDz5fzF2P09sNffQZUnqRA64/Y/v2BMQZjnTCkbFj3w6ShH6fE99HqDwVW/qxQkz9Oy4kfqBj7/5cb91EIY4kI+iXT94f547lonTy+kHtZWVGUsgumR7IUALgraWd7HoMZWBx96FXRxjZnwx6fQo1svEvGLVzxnKaoAkRFeWpBFBQyE2fxVY8Ui3mkOW3uDSuicNiFJiVVCMdPTAOIdOl8YTXdLxVeANmfPTXu+SlBmMZ6V/heGVsQ7n7m4F0NwxqkDr7rLoO71S13TnVCUU/jA8adOCWRItXXc8imDgpLen/oyGFQ0tXwEI1QCT+/lKrCFl4Oi6+V8ZXqen/RIqb/v0w5ejXpLXbdLgLfuqU7x4Rik1tBb6pqfDzb4uYXJAndYlKppMOkNRVuT/K0hT5thnF1qXs8TwfPLJgq+z4jognxpst+fJkhlEx2/9L//1zH2/BsQpftyWJniw4hGqDMLj7OqSoIek/qVJ3wExFd1My3Ctxl6sYudCtsIclSd5sUC6PpWrfb53HwhWN0Yfn9ELBekc6p985pDESWFkUGepRC0onR48k1zQW2YNPm2LhTxHnrOW2BTCO/XP2ubO2WDuka9dCe9ny0uXrriFYug3jWKmBhMAR3O8A9Bajh0Z6vV5sVhGrRfu7oxtP81YFcFmKWicciR0zyC7XchdAiGpXKXZgLWNsyqqiWUjnVDR5kkCiHtZZHbm+lMSN+Jc6qmP9emccfqMQGBJvM9vIU9EW5xrfAOKeNQHqaoSbu5EBb5TruWOBSDkFe+67XGUHRP/1rVuEQVcPjRg2MrguIzefJXRrEovGC8fPNeNbSg0vyZnEIo1KUYa5HD0VzVvxNH6Lnh80zJuZaQIphcTvx8KygcfXPOl6m/5gCtRu1TErPFoHLlouS4YDRi62kRLfCohikleaYA7hJg+6QZ9zc5HGnbN/cU+dYAn+rPVgu+EgjejpWyuRKBmu6okGeTu6BM6nv4auczcMyxbj1zhYKmy+ttA053AYP7rSkXKX8IlbioZH2GgqL5qamvrLvg6p4vl8Vf3IfPDd/4ds5TENf8lrq7ZRsE8up9kw8pBjPWUyn5zmRkcFxC+GplG6h72OHU3xXD7Be8qHsKGfluPxI/kFAJ+545ZRt5vIPTm5+70rBYVPWN45RwaBVIU9oz7mq8A8yx2ZiVw+Ho57K9yuBKG4QX2s3iT9fAkjtvye0mMirfMyBQfrodxpMjLQQeVYO5xOQN169kpNbXQWrXaQeqzUq+A53bei9kNor8JqOkbjK/f3sbmJ17af7pRjUMXJrnz80lI33PMGWdjyGQUffoFtt8EVTWBM33ncWjXbwznM+wGLDdem15nacI7r3YdN88ikeNwVGSlybD4W/os+JCej213sJ3fBqHRvh/BoSPvwSX80lUyu0icKvON3x2F48ijx0RGpyl8zvzitNSWiU4fpj8pqIQidYZGPM+i9NgWTvaIbyIBixnVga+JuPQmYBqmtNFGqx/K3hoblQP5lil/94W4tDh9cZ3SgE0Orebt3//TgO30tXk1XEcSu9Zrsmj+1TGl0NXPimWwNYK46IDkYDM9jHPXivoB/LULe7Bw6WgF1LpPFVMQO9wXy14o/qB4tp1Iu5iCVwN5ir48ouAnIIKUy8P90PTwq6w6sES4Dj0yDjUnoAqGqydLRXiwU/ZeOWVYBG8nLFlr5+OQMtf+welbybCnVNPtr0xRTAfUG7EsjsCsevHjmNj4qGOPOBezloMueUdN050RqAL4vfO1EglAuXgIb7NN4UQ0NHtqH8sAlVsJt8siosH40xMbtexEiD+u/yuqz0CycVUFb+QjIVsBr/aMOdisLZzjrV6EIksY4kM1H+vIToqWSZXowS0/DBVynWRSM1UBzec1QvVaKvi9PkMMEStMsdDY1BXSHF8xkAv/NY/1XHMMBPu8LOsNBjHoI0nhMXQL71grJv4792ubLjxwyGAXTMGieqgQLP0XsD+Yr6dqZIFmO2t2YSIGPThO0XYuKwXZg6L377okgM2wRucDd4x6EaznB+HTy8M3RXL5rTNgJpWbV7vuhhEJj0WOTHTBDieEW8V8wiIxZWy8nET0TVtazVyXxP8bBYZDQ0LgpZS0VjrPUQ0OORt3hbVBJ3pIyYiSRh4WBJwm/0jAfXI9Ew9OdYP76RH5RE9V3tEN3eoLxLRWQVOXYEfffBQsOtfR3oN3CqLc83WIaFdcjyjxcx0fqFsXpw2r4WD1+4XKfGRkEJG6nwGWyp8L7r+iMoSD0Fr1+OE7mHR5Lfee+SiZMjald9YXhUPh0NE9YJ/YFFEWRPv5VUysMYU/5TpTYWDYU9+meOi0AKzaHJIVj5oVhrNPhSkwodZxqvxdF8I4co+id3TB6pspoZRXVSgnRPRddsbg96nawvmyvXBAdcsG6MkKuTltj5XQ2S0ul28dFOpHzwZHYQ6CFQgOTJF8RUQ0bRIm0XyhX5Ied5kyhNYB68H8zfeJBNRB4F4QOZRH+xfe+D5cCwTKhjvC17TJyNqxEsZC/U+SHgTGjZjlAVChz8Sb2aQUeF+sRZDzT5Qa0v6YaWcAcs7L9aP0PWnMq/wVAtrH9y2sqtJu5sJy77Rz2t20e+LicRib0Dn+YgSloH5ZDCpeSLi3BSKbj6XVRs8UAjddg4/Y28mg0N/DDWerv8778odk/jzYTFXWA5D5xoTfEPEx+FQZBvTHLoz3w2H9XAMcm/ocz9z98VFUwo64Z6Q+Ce0G16eZVfZmKyF/w5YcBTS88MHbjvO0zo9MCXh3eBK56nlrNSkfXoUdHtedd9X/xboUx0RJKw/gPS3MrciFP5fB+cdT/X7v3GllKQoIyOpjELDSgivUNJHKLtERogy2rIyyuYMZ9h77725zzn2HqFQCEnZibL6ne/v3/uP87jf9/26rut5Pc7j/SYgJFPar3S9GSKnfrmNU97A0C/+89sHCei7S3iQkWA9CO3n4jM8SAPvXSemNpjC0ca3p+f96Of7b25hfKmQCvZN1e/3GoajZrRfhZWjGhpds3QfkilQeP5Yco1NCLrF1Oj+e6QKfNbW5xn5qUCrLIz8ph6CSAPykrSjVfDBgb98Pp4C0uOmZhNdwciyiyrmY5sEGlvLAhe0qiH9EuduSbYQxMt2d5u2mgCzPx7GHH5bBWHLrOsFlSHoZkiUL9dWAvBMRsq99qkGVaECsctlIcj8xFlWC5ZYuIrzScqh5/wNee9Cy6VQ1BpwXTgjNwZA0XnklUwB/Ocjm9y0Pwylq/8zzK+Lh6I7wTe6vQqAr3uCKQhC0Tbj7tFekyhYmE84gH1TCAZHNjhF0sIQoyTzd5vTUdAv/PyvcFgRMPi0jeaVhCHWx7QAZ14C2N98Wtm3FAv709t9p/Zh0LPq7xIfSyOA8SunXh9fIhSmaug95MSgk1tFSgHzZRCdw/1cdw2BVQ3OUEUsCN3b53FRaKgUyKykiAvCFJiyzWk5XRKIMitzHbnDIkGfZHDkYV8KSP+8IJs1GoZcTNT2VMiQYeXthXhJ52R4uSV9nyAfjhIVTpjOP6PBvO7W4bekTGgiTBdq3MKhQ8wq+/5TpEE7o8W4pXoGiIQIaVJO45APx8qn85k02Nmd7DrbnA66LybsDZ7jEJP8Ac9nEt2gKPZNa7AhAx7VSSZ+0iaj+s785lrUC9erSkMIdUWwZ/pPJE8OAfnci7yr1IpATJXWbelSAM1WopdX72NQBc6KOjyF4N+6/avKtTwIrXYzJ7vQOcqi0IxDgAK/Nu0DzKwKwNHLKPJZFAbd3Wj7eCWpA4rZWUhyCjXwfC11lpWFjGb6Zu+73e8Ad5P5+pwr1fBjzFvt9S8SqpCUX7oejODcrO8Hr5B8mLi2xXVUCoNecnhZv/3ZA8W+WWcIb0phZIy0O/siCf3nxl+6p7sEdCa4P/nfS4UPwr83xw0C0YPJ79u5CqXQ1uBaN6GXDptlE2dXXQOR9Wnv80VXSsDtRIN6g1Y6CLx/JVsgFojGMT0V1OtNYPfxC19sXBkYBSYNsNyNQIt1erfdZZvg9dUP/ndjyyGzzWGSRu/dz5ieXWr+1QgDdZY/DfPK4Oawdf24QARSz3JufZPTAWVFX69NeuPgsrr3pN4hMqJ2MexOepQPJ7vm8mI086GBi5mV9CEA7bxs9Y5NLADjTAG+DMt8CFTyim2l9zVdv3etL0QLwGwq0b+7kd7nmHkETFsCUKW9unUvvz04reC9NHfIkI79u8p7DIdSzqr/fd7yBuQ/rzKKdhBBzgtRkhrp3BKK/Rb/+iVQ7yUFj7jhoWHm11rNOBbplV+636TXDxHT+3su2SEQ4d3HMh2PQ9lTfBJf+PshYfrNCbc8BBfPKivfX8Gh0TOP3x4/3w/SlcFhfscocKh4N7PaEA4pP1Rm+k5uAlPFdanRa+WwYLBseyYiAtU9KJMZ5KZAh6Qxlxu5DGYuf+TeImDQj/L04ZExBO+7jdbnXMvBh0WjjdmRzkus23Z9TQjcKv8V8NDP/77whdgrphh0Rm/u+pUwBJ1sxeUTZ8qh0Fm37awMBjnE65QurjdCXuqZj5+fFYA9l8i94ZMRKC3vVY35mSZg5L3ZvnQpH86+idNwVKffi9LJy8a3muCJpelhJesCcD9Irqgwi0Abb16enDtRCEZRw3dO0AogdZdW4f/eUzt+KyZ+hLcRZP5ET96XQ6BVe9TYxQePjJKYHCZmGmD/+qcDw7F0fZi/L7W6j0cv9Db6JdMaIIolbVX2CgL+SLuD78/h0QOTA4raxD5w+NgdSj6RATaZF8QMZvBo+8ftaY3aaGBOOuI5eaoUFqs4PvdphKH5RX/aegQBLJKvOxzYSQKZc33QvxCOFPgedlNboiDPVLFA3joZBocMMokBYWjuhfSOu2EjOEtvRXi9RWDqpRaemYtHf+4e2nzP1gKbU6vZHMdrQEOPcUGSSED8zp5Mowu1QKvOipOuT4WqqgSOb5fpHDVw6KRHdjfUzt+Or+tJB+6qI94rl8lIbyyYteB8H+TT1sP/YmqB/6OaGQlFoM42L5FnI72wwXVGcPx+LXxl9OAte0ZAIxuv7/Jp9wJpbk2qWaEMss8TP46FElGcoesMcyDdZ94dvDdE76FcKgrSjceJSFBp6eyMYRGoipaqvhOvgL/OJsfz6PwwuBpFGZIuBmq35Lp5azmoduW7XFii5+/S2+BlOkdm6Phm1qxVwNcTu32VZwPQF1kG2WHuXngg+zZbgrMM6kdKGNJ+EtHne76dUWq9wBT33HbtSilI7/9n3ZJARAXvDN3CTxVB0vrnMc/9lZB9lMPySXsAchf8cPqDeAPI5lwfr3YshrAXxXJHP+DQ1TK8kl4nDaR/d565P1sMLhU29wfC6D5sLfyxt5EGf/LWFT1XiiCwz61MPxCHaiT+BZge6YVy8msr5W8l8Ft/UypilYjitUXDj1b0grqlznN9SimYzpvUidcRkHAs48AVug9XyLdj/bLLwITzobloLgEd99t66eJUBM3WAs63BMrh+T6VL879Aag9vFPp/MtCOO5whf9Sajn0H/8q5ED3jXLjspd/P/ZCqsEbvy3dEni5+q7w72s67wmv+Bue9Ye1SMlcK/r5t/Qq2W4oYRHr91O3XAIS4WoSA5CHCoBj5pJ29PMQZKkhkJPInghetwvVzMvzIUtYXmF/TggyYAjUsruaDE+/hZz79acAyFI7P3YXByPRsmPMv/cmAUPv3siHo4XAw5Qr/1YxBC0FCoWlmfRA2eVVvUvj/pA6M69wa4yEIr9i3/3wp/NzrrH3FQgCtiNyE6UFJJRkvFkxbNoDqxknrwluhINIpvhpw1ESsrLjEYjNSgZt1bVJ3kNFMLeru+2TfzAiSWyUXcztAeZ3ipqvjKog/tL5gwrvSGjP9cSo46QeUGE1+GmoUglDHV0P4uNJ6AOI3iiUjoIH0z4VcfUhMDcc4KhfEIYyo4bM1PJaYR+S4r2rVQ97GcYVv8YQkXzrLU/BjFYYdfpso36uDuRK1c5fiiSi1uSpnw1TvdBsNs3BVEMBna0vzQPmBCTLrunQbdMKE+kLa36ctTAoV7Kc6kJEf41NbibNtUKoJldixIla6LxQ6lBPIaIToTxXfa17YOEAk+bvS5XQt/u2L/cACZ0wWLcQ+k0BOULkF7Z3UVD9nj0zTBaLrA4ZEwTOUMF2mjfzwm0S8KK6mzF3sQg7YiLR9YgKa4EJd3XNosBcaOCXaxAWdbmKMPpWUuDkR5o+4xUyUITLXAwPYNGLCa7Za9WVoLFXstJAmgrTo9op52KCEYeMmZyoUCWoLsuRI+nPdXL8GN9njWB07V/bBq2vAr63BGhnKFJBpsBpsJIvGM1+St92uV4FZ2OG91YnUaFa3FXdcC4YsZg+zY7bTAajUsK7xMMV0PIyzOa5bTA6ftBrUXArEX6Vd2WeMq6ACeX8rh8qIcj93uy8j3w2PPqmYCZ3BAO4L7Pnh/UD0S9HQzPm05mQtIetzWkZA3kq8Je3IRAtDC2WCx7LAnTsovFSXABgvPe1boUEoj8qc2n1AalQivUUGNYphsMy8ljv/iCUInn0sPp2Mqjtv9BUcbIYtAylBzptglE8Z+HMFVIq3I1/VTBpUwQe55Jnn3cFIQ37R4W5m7FAjeGu/6KeCXVUTnPbolC0OlHkw82TAIuaswwxpelgdeI649rpUGQMaue+xCSASIVP/KEjWSA8GsJfPRmCWic4nHmPZkB8FsXReTQY5pkd8KHMQUgqkNgiTPeHJ833Tvnfp4DkKKZwju4Pf2n9Ndd1eyH33va/dn0KeOczT88F0vsRJ4ud8N9EuJXluS9EMgO+JteZq14NQaMKqYlttYmwfkahKCESC4rMnevCpiFo4dSlTR2xJMCZDe+l2QQDaTchWkU8BBkaLpD68pIhIiyVrUUPC7Una9VE3gejyPNnRuwzekHRdS059kkVNMuu7vX6QkCu9grv1v16weGvKw/IVoN83rlPPcJElLmYz1xG71M8PGaj+F4KyB9mOvUgiYg0Xk7YPnrRC9jNaDH2/VWAe6XrLaZORHU+bGxtN3phBB/IPb1WBb/dByY9SEQ0vaOymqdG54mxKYGl+HJ49eN4gW0pBqV+Tx8lKVKA7RCjf0xdBVi3r7yIzMcg9vBk/1RHCgTsStLojiyDDK31e/99wKACzcnrWh2NwJCx69jp8TzI5vedjNgdgZ6ea8ner9IHbxrV5B/mVsGb3TvuL2IjkNIL24FLQ41g8z5Y7HJgDphcWjxsfyACXYUqJ4vERlhJP+yr8LIAZmdkMion8UjTaxfvJCYCPoZ9nrRqpvfHT2OeJrwY9GRI+ID1exyI0p7EacRmQbBJkMqAOQbZX+GceYevBq+rhj+ygytA+oePWmtJCLJi5BuS+JcJG725X4aO1YCpeqOWBi4Qhbca9UleyAI71Z703XzVEMX6ie1sQCDy+GVKM2XKAd6Q1PKl3GrwPtbmNyAViJgs3CKlLyKwLfxXcpzxDXAQskBuKhwdyX+2wv+hHn6x8qhuwFtIUTB6luITjnoXCX/I+xFUfhR8zJDjCCvHXNT25IYj57LnjzvGmkDMv+3QTDkV2g70Wk01RiCqCwW/LNwMj9meGC75UoE8rtuduxaBNM7cYrHd1wwb39s2dFhpsGm0Oe4xEYGIx9xEPn9vAttN02O/CG9AKJSv5XJHBDKci+07JYpA9/M5U91iKujdFrUJGwpH1izh6+IM3XC31W05U7MaKHPEdjc9MmIIjNe45tEN9x5l+z5wqQLD9qZjjqpkVCxj7ZUc2g1fD7zXqkushvgH63uuq5BR+u14wZnibrgYTnTH9NSAudeR+H1yZHSEXPLsvXIBlOhqnGF1TAfjnSll7yY6PzfY/dxpyINx83318vyZMFpwLTBgPADdZxbsEVLKgw+W3YSj39OgYTHiteNcADpxoiBW9kEBpD3rXJHxyITFjEFb0YYA5PL7zPiuslw4Y6pTuZ6SAkHvrb1ObwSg/TJ/IhQms6EFJVs5+KQAaWBey/AyvXccF06NmumCZ5kZKz089Jx9oan5yICMPkq+IWVMdMG0B96bbV8eMIXv0e+mr2sckXfg0+uGq+US6szq+ZCyMnEiXJOM3g6FQlBTN2z5pIUuOedBQcj5n1gpMpIa6q8afk/nT8lPPz96lEKYF4khlQuPvO70NKQ1NsDXHzzWzbplkKx/XeulOh7xxC39eJjaAHZxW8t1t8vhx6St+rIEHhU1sVb4CPaAtO3JLMN3FJhItHRrZSUj7BuJFTerHhhuOClW8YgCuIaoyaODJPRXU58Jo94DJ78/+dy7SYEXSgW2o8sk1P/g8PvQdz1ArKFFKLVRQPDhToFmMQkx/rd4TTiQClMb9zlEcYWAdVn/dzcRi95HZ14xuUmF35smMZfrC+BDT0dJ4DMs+mO5X7/Lngr/ORiXp7vnA/u3gmGZYCy6eaX1FeZdJXBMqsa/X8mEuCPEjjGPYCSkc3sKM1EBDRL7vlEyMuDCrjMTeaeDEe+FF5lQWwGpyqoKfuQsKHvOri3HFoxaBA8dX9tph8O92TYyUXVw/dVg+HQXCZkN789q726HBf/t36/iaqGDUUWDpZrOLU5eyhjtDvB6bdZ1rqkWeH6lejAskFDNAQ6Pyj/dIK1SJFa6RIGmf5cWOIXJaEKCQWiLrQeK2qXi/2vPh1e6e4tNj5HRvCNT1TGrVmj/kmz0RLEadKUbyeZOdC7NUd3jFN0K5yd4bNpFaiCFvKBIwhLRoryV2XvpVvBx4Iw+wVoDiamz1Qx3iIj9RMJDjpNlwGT7JYbyMwEKs1TPdvQGIv4Ty6yiz8tA1+FY7EZVEhw232ROWQ1EWk9q84bfl0KJavTMJc8kuFEfJ+5KCETKS7khk9erIU6vxaPOLB1csd9nc96FoENCB8XXx6ogKWHrkBM+FTRf72C1NUKQbgX357111RD8S35kaW8aFHXoaol0h6Di973Vuh8rQF/5hetx5nSQdPtQWyIQjH5Gcko+dS2E8aL5y4Km9P3eqt0VSOfVzdLPMs3edJ2GVgkvXSiH2DeYzwrUAHSr0Td97TQB4mdGQrj2VkJZxt7pGCYM8rqW7Jm6SoDQLOXTFb8qgWnghtrBgXD0LiC3mP8LDgg3Xm8qUirB5Ep2Nehj0NqpixJqoQUwpbCFyTUog5qbcjVZlAD04dShdakjPZDz99aB65pUsPyntYjhJiOmpT37Yk+5QJv54n8CwhQYih2Ib2DAIa0wE7JNyUOYcu6/Y+NOgULBxpn/hHAoWR+F18aWwvpFtZY716mQ4HWXxhJH5xPS9ljwowa4/pTprZ55IWxMv3mtsAuPBF8t2ox7NkAdZmZQM6YI4t9p8/Sy4ZFl3uJF29la+BPyqEJuiAKpboFL6rJhqDwXt5f/ai0YXxt1Z6yg76fwIuFWUyiiigSSJ+NrISRhTKLOjgKeKsFm4XvCkLqzpOKrG7XAdp70vFqcCvKPJzr520OR4gqz4ppAC0gdz2pn/hwEpxgur3XEE5BHeaf51+AWOHxa96I1LgRYTq3zPJghoG//3nv2WbZAprFSqP55LKyi747EDgLSJPyr7UqjgoalBCWloBQSx+Wb9pVjUZOIXG4pkQog6Wth8bwEwj5ENKtlY9HvtzKj6G0LOH0WV6xoeQelx9nvnR4nIP1H2i7uav0grqbjWcONh/33t7Qky3FoPH7NnGTaD7LXTY52m2LAsydouBiPQ2JUPz52jWZoOlHiGfS7EFaH81rCWAkIY8vQ6VrcDKrC5937WgqBOb8Cn25EQLdjN+v7ZpthJXu3XsxKAdgfWDqh405AGX4q+g3aLZDOVV1rfrgWHA58z7OvJ6DxrrsPXTeaoeTgTzV+1loQW3X88cqfgJKCpQSoL1vgeBOaZpGtAYlsvtL4TwTEMDJ0I9u7lu6DQaPrf5LBIfuSccpSKNofcOKZlXgd4Ki3SmP2pkBL9qEJTYswVFjNs5hW0Av8Ep3FvrRisDq/JyK0k4Ba46ZX7+2iAIX/9WGZmRyQHK/o+vkOg5JcHpGeJCFgxbXpehdmQ+GyyLiTKgbxfLrIVFqcAjzxil1V98vgSddwT6RgMHokVbfJbZkE2oqj9tlMpVBZeGwNeyQEVT++W+keWQpkCtmBhy8FricMXnWJCUS6jwbd3XR7gI1oEy3ulga/Ljux4WdIKMzwUkMgXRe/elxPPT9H9wGJ0DYjui4ucKRufuHtgb19hy4svU/9/++5VbGTEW7uRGikHQK+LyT98+fSYFPiu2AKDwY9updBsT2OYFxc3cjIKQ0+Zct0bbaGI9A/98npJIJ3lmPKH7+kwEUttfGo7nCUX+HRaK2CAJ+9eqRYMwOeReQYv/wbjh5vC2p/qi8FBdMAi4mRVGjkKPl6JDsQGYCTU2VDH7jYs7CWPcoDh8K3eXUheORUJxEnSOqDUyZ5HrooF37fU6PmTeNRdYK6d5laKUzscpPi7k0Apiuf5U55BKKN2VqDYuYWKDeL070WUQSs8gRMCpaAhv5JXkx9TF/P2yoerC6Cu1K74vb0E5D7iMZpPrkWCJpk1lmLL4b0VMr7rnwCEkWKkS+edkDH5nL+clodnJh9+/XXBgk9qfj7OySbCvHts1xva98CPtnKzasKi/T859/yGVDp+h2PaDX0A+kj140t3LCox5TX9YkQ3UfUSq4UxLtCybEJ3JwRFtWq7Dk7dK4DJKepd+RFa0CkuEQqcoKE4sS8fEv62uF9zk0R/N1q+Bt5QkirhoQaTXKitdKaYLd37JfajWpQaQ5MJ9C510zsTvDOchNc0hBffv2pGsKvY9eJfRFI233gKmahCU5bN4zgE2rA50RJklRPBPr61ZYnuLsJ3suFdd9coPPzx16T91URaHqgbfigchfsOyty7Pt4MQxfTXzRbUhGv76Vys1UlsIZJ9sDZQKZ0JbSydKSEYguGycc/2pcBofvMFOrXdLhZPtr7v2zgYht2MOpT5AG7KEmntwD3sAbHaB+lw2H9nhcPfDMugF2fofsiLpTIUin2e/tNt2Hu428pqoa4NRklg1elQpvF+bS467gkdue8/64nw2As2Lx3F1NhYc/9Z4cfYBH0TfvXHHtbgaV0yy7OZzyoEOcUB9hT0A2PaqR07da4LrvjRDmm7kQNcTM9bGOgOb3YvGcii2QLFejbcWTD3kvDFudigjI91wu5twiDX7E8gTk0XnEeZFYnZqOQxUZjU1Dt0igcvvGj4fsLoCdmUicfBWOypmwzcKjJFiqE/30/JAPxAgK/XC9HY7WWh0YLs5GAOWW4OafYA/gOnt32PsQBoXG/XHGMvWCzZUgicAr5dCp9NX84T4SyrpCFY8co8H+5pz4NNVKuD05GKwQg0P9I3KvxQtoIGobk3vcoQpY1R+sPXfFoUOD5MLbBjToepDDmqxQDVliR3cPXsKhJbES31NH+2Dzc0nP839UEL3aev7QVgRyXK9KVjrQByO894qO2VLpnO5xQO0wAYXhORmeyPeBfpjI5YRoKig22gl7ZkYgZdjeH3KwFaamjZ9Y3MsHtgnbF4nyRLQg7j/I8qIVdPVNir1t8wFbw7Zj9IaIBE9yYkyVW+HDbq0XLU4FIDXDs1llTER9eO7mrKY+6DVRdnxgVwAaeSaXOALx6Oz63R8Pb7ZC6dEOH0GnXPiqhZ6ce0BEP7gsvH0LWsDne0B/JRRD4rmbHof/EVCH3H7r/JFmmOEYN3Y6UwA+qcezu54SkNoj7bR9d1pgwf7N+NrzAugpn7qCoRCQoqLntyylXnhcbNhzW6YEpBQX9t/OJiLpou1DfAd6YfbUv1vJrCXQkfHuQ+cuErLbNpicmemBkBH3K63XioHH7dGjFVkSstA4MHZDlQY+R82ZxLyzQWW5y3biDA7JHG+nJoaXgs5H+8B6kwqY/2RRVkcORFyfspeVjpXBfjNfA0bWSjixhWW70EVfJ030z4u1wLXnL/9wuxeC1YsPNnXpBITn3RPT8aMFtEvI3b+zaqB8EN+jK0REd1xYDD26WmDk4YSWKl2/rtV9S5pHiCjRzt9YZK4Figuf2V5lroY01fuCEvSe/tWlJLVUqwbu7nv5m4GaAod+BWkNnAlFBQFaN6Mu1oAuF+7Gs6Z0cHBX1d3HHYrsm+W4MwWSgIuWqPZoqgjGca72LhdDUG8hlkPBNgn8buXVflwqBr55qQxdthDUOJXoeVg8GfJu+C03ildCRkxunUFNMNpInyosWymDEiXpsP8WEyBSkPoySiII7XS++Kv2phhavC9cfIuvBzEx6xyN7QDE2ZpkLJJXBGV9ty5cm66HrPNs8cYjAfR+Smr9S26HkNcVV28R6mB4zzMdahIJxRu5cMpGJULkAsEi+lUlxO69H+/4OATx4gt3H1zrAc5vxgMB6hXgNKiW8V2QhPr8Dvd94ukFC0WRr7ZS9AkaxgqZfyeijQD5np3DfXDIebzYwS4duDZUWAZ3E5D53rlyhzu9UNVzhE17uQLCha+u7HpPRE/7buzkRSNYzBn5bG6RCyz3z/tnKWEQx2ddHldeKpRs6B9b1LYFwfzg9jxdLOK9Nvrt/e8G8O+MUmsQowGjNEHmti0eERs+CP3sTYHD+knsFyty4VPNlJkxZzBi7GDqX+xKhH9MqPnBaDboyjwNMtYPQQoszbt+efTA+ct+N+91kuHjo6tuTvQ+otHiOMO32gfXbYs6xem6E8HnrRIu4dGxsyFqz2n0uf1k14mJigR78Z39ZXYkJP0fLutNcA/wi56O6+iJAd6zTfUtOSS0wlvd2fgjDrpHWuW1b5LAc58cQ8yLUNR59dNhO+tY6JkuqJaJiAILHsFnep9CkZOFxvmq2GhgGp74lrZIAvsUvylh3TAU+yF+WlaqABwLiEhogQo3znTYvm4OQBV/P4lLHMgHLbviOvcLNGDLc+G+SL/fT7xai/iIFuCbs2Oy0M8G7h3qBOM8ATXfmHh42rEFHtx61/NqMhN8Djr77tDz9yVBP0u3sQXuN+tNNaZmwtUJb0WHg0T07Ub00QgC3bcf88mPPskAvv6K0Uz67yzUyGXpRfaCqwZOoiwOAefhmGXJbQIiPjnlVlnYC1QF3ZuusggomU+1DdsJSL7kkalQVy+0ndPkYglCcNhD9vB8OAGlZiwGG2w0wSaGT5btUBqgHQ5Tm4/03OTK+XO0px1ePqHah1nFQ+0uyisx+r3Y5slkSCu1gHhH+6mf0gTY/LbzY6CYgEg2DIN6fhQYfefCr3mRBpvRosw/JzHox0nLma/bFDgl1OXoJ0wD16uenN8VsWhU7Kij1qda4KyRv+U9h0A9uOIFViwMtdKU8n7ztsAHpqQDPv4l8BpvNXI6loA+pq47HP3YDGlJClNryqUwvY4te+BMQDIXJxhP7aqEF7ebm3NDykH6twEvVSYYKXuV7FsWqgApsc9KLCnlEONJ+FmKgtBCe+B3UcYWePIULye6VQqO7/mWroUS0L7NH2dzghuhyPLkQMX8Q3ia0LrG8QGPbglHHDt+pBF220aqTcXZQa3pmx/c7nik+Dh71yfVYviYceWfJVM66FWdHxleCUB/QnV1nPBFsPuApfZIUAaoXWew/zAUgFQn/AoUDIqA7jFjdm1pEKTKkOvVE4AkH9Qb6PiWwvsYPhW+SzRwTPr6/ExEILpj33AbvtfC58XF+EPRRXC6xHr0rUwY0v87tWFqWAcVETyz4TOFEHwh2ovXMww5f7LTSNbpgYdnN5s5Nb0h46kh353vJJQUwNfM3lkPR+ofCFf/CIc/0p9tGzzCUZ2Emc5r+XpYqS7qTTeJAKVxYozYsXBko5P6mT0yARLfHHXdxVMPGo1LK+HTIUg7LlX41dlm+IcO3tQPpMABV6e+438jkLFQzIras2b4Je/3t20LwYGTpbQf4vT5PEfmFmOsg8Wfxim8zIWQpuG65/H1MHTEL+IFz6E8gIW0dqaQAkgqTru3vRSAMn5qp4ujHBDP4NDTPVsILFpyJze4A1Fzx93XMz+zYTE6maJ1vwCUinMl1y8Foviic2OUL1S41pOdxB2UDeof9U6sjWHRx8c3n5uvUoHDxLpCwCAXuG4G9rYuYhGZpWFDHkuF4emo3aCVCyf/G5BQTceikBXKm5o/NXDWmDo734rglcAbMSlSKIoLc739eLwGGvVDiliuUsDq802VF/6h6EcR4yfzlhpwvukxdCC3GtZ+iL1afBWKAlKVo5a/1sDccPP5h41VEBG4YMcVGIpGaSdF1KKLgXc7N43xRSbw8bPcW2AMRHkgxMxNKQJpnszcR6QsUFE4Uv3ncwCqWVpYu8DaAOFCnerJvUSoNXNJTqqlc2N6oo/EYC8Q+7a+U+h8GF5KlJnzJKC1oEusm13VoHtspBE3VQ0P+idXyz6FIAkPppeqf6qgSpJpQEKmGg6GPopbMAhBuo6+0r9EWiF+DZHb1dJgldRhK36TiIzvKTd5+7XCxfv6CxEP04HCybVd60tEm7/P5BotdYPwLHtla1oliIj+kPMQJSOLzs07k797ATf5aESXiwpzU7aegor0/Zxf3d+zmwYukwak9lwEJaKupvc3sKhxvd21cBQLVr0xa0xzdbD1iuh7/CUGFaySNS7JdgCD8w63zWwJnPvxtMt5ioTUiB1W76Q6IIsaaNnYVAwyrB277SZJaMLE6VhXbAdEZFdcv/e4BCYbJwXimMnIe9+8Y99WM2ANXrK5C6TA6E/NvQcCCahLQt59gFYNUaLKd78nkEBnwsO8oS8EZei9vSxXWAMdlyPsK2qIcNBZKnjfo1AU0W8wKqrbAJ9DLuHsZBD8FCrjylzAoYjeCu/Ht2oAUGPXmyt48OEJvqt5NhTRbqvduHihFSLV394zwyM4GWB2UFuHiFQfrE9Zl7dAn+R4hF0Bgkuxz0PdGf/3HpP1H/3fLVBi8Hg5k48Cbp93ndoWI6JqqnHyyZoWGHweE11VngbefRcI/kx0zpxpGZU7Hg3K83nPJvT8IHx9J0L0KV1HluGSj3WToDETVYdrZUGeQXPkXd4Q1LP4B/NWpRf8woSc789UAttKyciRDCI6IC+ml0HnwJu3/JSO6lYBHf3d5hlIyNo13cShIRBuxV+7/xZbDqY5LHPhXFj0euqyUJ8yBXKjfFS4tbPB9+DczR+FGGTzcrfQx3oqnL3f+qQ6JgqoGkGzhq1Y9E9L8FtbdwMUPApLT+8PhbmJqYlP/+HR9y9XRb/YN8DUUZYHl9sxkB9TSpXcjUelO9urQtdzQXaWg3iUKR+YMN/k5pgC0c1D/TyyQAUNSe93jVkUmK5gFxB5TNdpZuDHk6n0vvlx7BfZkQJtp4SUukqxKKNmkWNj3gq+Mnypd+dNgla7OesTZ+k9oli68OzAY2C45yphxpkC7drVTk70/sWubKsiRGiFvtZRFj67INAfvbLTEUpEwfJPDp/e2wYShneNbDmCwSHu9Mp2NxGR/+j1tp2MBNj1SnOF1x9eSs3srv8bhjgjQeF1Ig2iD7+oM75cAU87+51yHXHoRsdRoz1arfC2OF3G3RQD847SOucsiEihNlAlcJUGvbVJ0rL3yyHEQ2IZl41DBYPnEnddKgLMIFf5BrYIOPJDFq93BiD8kRTb54ca4IrDhaUgzQoocqVoYepwSIMp/93vkU5IT7zVrVJTAlwFnHwl2mQk9iXKyOdRF+yaUNxlTNfRLozjmJkxGRmUZ4183d0F0gYP15laSyHz73/7su6Q//c/Y6O/Iw2abfh8tfNzYZKmg7mjiUOj3TaMv3hpEK7c3VP6MB92Xh95d/AgDt1lWd8/vFUMji7bAraShVD/X+iaGG8gemektlOf0AIagkjpg2w+6JfiX02tEhB7EamwrZM+z9Lc5+x1cqFwpYg2xE5EDHiBB/EvmiFpiZE7W7QUyBd0u/zPEZBgmb/31/pmsJfkCwq6XQKY5j2TrA8IyLAMb0s73Q7ZLi+aS14lgB3t0fB3exJK7BjQmzdth+ge/9PdLkkAXzqsm9+TULK9v7jcWhugGavlYw+TwFYNymb0SGgj2ribx5IG+hzrhBCEYN/FDXVZwKGVFOZu7jM0ADn57bf/0fVYNeKSx4lD9bK7GrJINMg/6Dd2wo0C26kJlzxscUiBszJatZMKxFvNFp3/ELD6n60S7cciaVrxxW+5NBi9q64brUgEUdnD1W2vcCjq+o+L32do8Cpzg/PPJBZOh/CF3U7CIUKW0BWD1zS4aDrOuMsWA9TPb1p9dHHIxfqkda1qA4zbY5YirkYAQ2L1tY9TOLRx8Lv1bnwzEFN4DmyvlYKefhKWfJWAtFkvFJir1oP4c45dZ48WgasqOVlNIByhyLWKE8t1INs5zm/IXQjRvEp1Td/C0JKnyQ5/LQ3ulT/ksp2ggIlnc+iKDw75LVQPgEAv6LEfPpjXlQ373rCQeSeI6DLhnuDKoV4o5gn7lCCUBx80pXw4NoiIsg/LbgK9cMhpr5lEWz7oFPxTwKcRUZXiyUNHXWrg2H3ptq+pNdDVoH13XSUUfRAlKgw5kIHiu0TVvVIK4gXaspVi4ahjt5nnVks36NkMeIYZlPz/d0HXJMloz41CXbapbmD63AE9kcWQaZxp9k2MjLq9ulU1+Xog3SLg9gv1EmhgYhF1YScj5uV9ZLvNTuCgKdRitSrASH/ebuM2Ge1u2QnDWNJ10Sf226ytHD6HOgvK0nVhVP/O451JF4gJ3JcZ/10Bbpn5PCtGZHTyuHng8O1WSJ5zwTRepAIzVniwyZqIZJ7L7MYst4Bb7h3h0GAqBD1x0406Q0SWIrM3F/60wLM1Z8oqIxUu9T+jqJ0jou47l6un7jXCTfwD06NcJTBocjAJV4hHMcEVDOssjVB2rDh6OKoYmHeIfgmv8Ojg5QK10phq+DJznPcD5ztQNfS/+roqBD3QSOOSVqmBWqekc+V4LzDheHlbXTAUTTlYujKK1EDPP1qb5a5AoG0eDjBkC0WmX8csySI9gI98UqsgXQyddyL/2dLzsXGfQsnfvDRoV/nRYsNQAuWNxUxfXILQ3juOlv+5ZkCg6On3Bpb0/ru94PJ4IRAFBL///Kk0AwajRObTpUvgw9iNs4tfApHdRXWWusvpcMa6zuBLUxHkNthml2oEoWU19Siyfg+YeC929MsVgv7n943f6Hl9YMdxMfdGD4S+oWCGJQvg6FKIlNkCCRnGcp+S+h0J/7WbV/WwIVD49s3yACUMDdkWkFvN+iHPT0PnOZ1/57YunSjD4JD1xBWtM7r9MPtTjCPhew1IbYV5bqbg0GfHn5mU6jY4N/3LL8EsG9gSpMBelkTnzEXdvB+9wK/swv9sKAaahxQvXNAjILGUtl2Td2gQ9807MuxREHTm3nnKKotDfJQMSoZRL/js9Xg+3JQNLAmLnx640/1q8WD6JYU6+G6mVbvvcx0UYzJ15RzCkKr/4FWu0VrY/7lfUW2jFuY5P712kAhDs8u7I2SWmkHZvZmvKDQBNibtT5HeEtAOj/fj93wtcGGP1o/wi0lwWLiW34/ea1p6p05Sn9RCSjkh1vp7EAzV3SWFToYiSHHUUvarhW7jbwfC8jHQ+ZqDw3AlFH0dvvtO6WIt/HD6K3dECk/n2NurmtWhKOXnzCPmpFqQOqSgoBNPBI7ZeNONvf/Te9iFR8Yt4FO8bmPeTwH7u8c+UhoJyH/SR2biVgt4SbBzHHpK72238iQH6ug+HKkxZOrRAgtXXV9HHafAFS8Ky8JnAmrtDX64qdwCcYHzu7lKECxMnp/cXUpAxwdp/dU/u+F5pp2wPC0HjimnfWk5Q0bZX6wOE4/3wN2bl4QsxnNBZXBM/+NhMop4cHzLe28XvNhtOvTlVTmczbV+PE3Po56+Oi1NnS6QkMmmMreWAb+2ziECXY8EMKhQ/FoA44/1/n6JpsLq/KmT23UBqKt2zFersgD8mz4+SdlFhX5Z8pnV+gAU12d0aSapENrUnK2971Jhm7VHXp8agPaVvqxd/NAAtFFRPVWPEjC8dPVQpA4ezQRywpJjD8x3p7ncUS6GY47ivmNtJHQw/PaFxNv0eaZ4muXxlICgScuLsG8kJOZD3vWYrRZ+Xjr6RXq4EmxtzjLi0kKRwT2P4D7LPtiT9oWqlVgNcmzVfha3I9A90i7af/0JMKh84cb9unLwmnMfi2sNQfZvLgl/006A1v64vqPFFaCgcK4JwxyKzqSfrE4hVwOXguDHfmoB+PQyCq2Wh6CnCfb13XdwUN/6rcPqcxr08X57HW+DQYJxDpVNRq3ATl0RrzSh+yrZSuWxHRFpX6YR/eg+tp3rw9GnWwb7enLHsHQf8zvmUVI41wTj5rTvOvNlMKt2+etUVwQabPWamp1oAtWK8HrOPRXw+z05zqw5AqVQhL6LcDaDCHcSu+f3Ushm4XQ68DMCCR8qWyx42AxdeZpz0tNloPChSS32FAFdWDwS5u6UBWFNHvaGKlXQJ7s8vs8tEGVoxd2oHkmFrzkPDw1W0znBPtp/riwIpW9fznx4mZ77IWeylfPK4U6SsoQzIwE17P2lYHwawXnpNFzcqQLYiszhVu8LR55f7yyfl0Qw9e7U2wX2PBD7ovWCOB2OirzZO+KhEWa8re6d318Km011uwZi8ehOihq0rNVDCXX4xEXRQijuS+HIiaL33KebOX4G9VDB/Mm3QawAOsQuJFuJh6NeiuTD4y9fwnSAXc1F0WKgFhQ97hjHosGKgwedV6zhpdaQc8FSEfSeFqaYiuBQupzahagjrXCmsIpyVTADZHl2KzspEZGN8+fDnh5pIHz4x2/n6DJgm6xLwHgHodf8kv1vdFMhE3m99tUuh30G+W0mM0HIaYv2NzS/HljeKGgm0PJAZzLl9v1H4ah0cnNLpMYG4rNm7WZ1ELCRXl10PYlD/ums4gcHUqH+rvpSRFEpNBiUCEtVBqF6pOzlzZMG5BWzexx6FTBoxJt0LikIZV47PBp6tx+KhO/3FaJIyHOxM/Ik4tBz828BNs6NcGdSlFiRWAlHdr6mPkR4dLPe8Xk3TyOcN8aaN7FWwrHbQpl53ngUd4CnfayqB4KUSBE36DmbnCD8ae4ZCUVladfdpuvoPYPKX0OeCqjwPtLr0U5CjPHl112+lsHXpMTl/AwC2O85dkJeOAhVH5t1PjrQAyWXuoJvPimHAc56hw5dEmJbqS4w7PGDciWGe6q91WB5t+Ga9QMsyt89n4wx9oIDmvXC1X+r4Xj5uT0d9P7eDZWJ/rpR8ADv+FbndzRw3SV+TcgIQ18tXiqb/RcDDNX/HcRvxwD7uJGJ66kwFLESkmDP2w23YxiWTjJUgEryPa2fumTUYdaer1zXBZYU+9WDohWgfjW2IIXuPxf0qkMYJrrA/cnpoxa85VBm8er8sAEZsfEfjTq95AadLXzDQdcqQEnpXo5kHRaZjFyX3Vbwg9HcmyHG8hXgFyjH02SHRfNRen6O5j6AE7xlVEw/T5X1eaV/PlhU42aHzi0kQJmOuqFweRnIOmm/660JQVaa/3E4X7GEMPzflXwmHzhYsy8t7xwOORay1w0kx8GRhEK+ovUy+GkzlBjiH4pi+rd81r/S8+st44gBM4Kh/O8R+VYEZMLw5NhNWi98+5klEt1TDydL996jpRFQ0bmRE/5W/VAt0cNAsKXCfewvk9tBOHRH3UruBFcfSDU5hMdPU0CM5ukc9TsCNbU8/sVf3ginrkb88SOVwDdyK830Fx49rOF7oxbRA6UCdxwwvkXQ9fuU13QSCf3lYhLibuyBc9w+L/Y7FoHDhIhFkA0JQffrkIMCJEhQm2HdJxIEA+SbAu1+4Sg10sKClNIH+TztZHEoAhPf2qyxNjyS4LGY+e91HwjsYXN6KV4Ef9JaUsOEItAu2cmyl7+agYsln9PmaBXI9bBLN/kQUEW63ktniU449es7GXeDClJVT3Ou0XkygbfdaM68EwwMHasCeilQPqDJPKZIRmdzisrESjvhraKoq4AUFYxH+Bl6NMnILy91+4k6BoCd01hkqBgETlb+XM/CoCixa2ljOljg4fSR1W0vAra7C7quARjkPqzpeEM+EEof/lUTni4Gd/b0p18FsEhvRaaIie5v8X0R7lPmlZDMx0Q+T/c3h/e5CcK3mkHrN84gOq4CiqfV5uvYCchSp63+chYW2Bkf1KR35cKuI455pe4YVDFKaZxwxsJFKf92KfYcMDm2K/K8Hwb12SxZ5QzgIUXhXbzlgxwwP6G664E0Bt2ZnXVqbaqBvgtX+6e2w+B6XmvQ7MtQtHP8s/D4cjVwvhwUk9qqgqa9s6KBiyEIK3HVUUylGUpIZLKzWhX898tDlH8/vV+goUpv1ALbJ1YtbYIpIP7R9qYhMxHFpz27EGVUDSm3+XySaO7wW3V+7Vt4CKrUE3l2b7YK8pbf/lg/+Q68S6sFVrVC0KVzmXes/zbA4e1jWjtHquBl02C5oD0eSVtzdTi5t8I5l4cE/WQqLPtXxAx5EpHpmMPxxYxW4P4T/cLjDhW4SsjLhZFEdOAszysLXCu0VJa7xq5QYMTtYcypECJKkTO4oxlJ9x/7qXG32EIoX7rMzx9LQrSG6/9o/6WBwsmhRwfeInCygOQkbBD6I9zonnYjDIx8FE9O3ssD3QtjJJ9uDBLzk+v3agiAf0bsHwx8c+GQv6rRB2EskvlghN95FQTinA+rba3yIbY4sKaOBYvG96yxl1/PBLEeBpZRd/qcf6rqTakORNEbqXmf2dLhcBETdk98IdzSfRCaqxeE8lnuV5kfTYUpZpufpraFoHzEtOfOdhBaiSLe/92YBk8Tvc4dtS8HS1kvjlz7IPTqUfZ45nI6sJtkXzjeVA45O+eDio8Eod2KRh6Cz3Bg/v2roHZbCfwYtxs3s8QgNY4rcuKMrWB7b/BTKJ2H3z9r56qSJiJ9H2l+Y9FWwM/cb9lHy4Q5H6EH9jeJaHSxWUT1RSssiSkrvr2eDfGnb3G7viGiraSJZ+cDWoGzBvtIHTLhNSmH6c87IhKu5uf6KpQMlV7kaCw3De4Wu2/8rAtGYxkRb3S8aoFjTDnklHQuUJ1xB7kXQ1GJ1hTjamUfXNbtLzitVgxFUd2yaol4RBWuXJMltkCOTYAjebEWXql+rDuyQEC/D0QqGSW1gHVxjYf08VqIlcKRf/4moLeyrF//uDTAFdbtdKUvdaBU6nnaah8eCVja3RiMa4D47DfqOcX14Pt4DS96Bo9Y5JHAhEYDnMLkjo0E1QOpdY4x+jsO/Y78lrclUwJ7xd0uu7cVg2v/FZvYM4HIWffpE+2DtaAft5Clfi0J+toG708nh6IfZ9Wiz/TUgHxZqMGZT8kQWK/5ZtU9FAmPHz725FofKJ/+W3l1igJTXhUdjeERaJEvkOVWGwVeuXwoKz2YC11PhL97cGGRFN9uFttTVBDxH/Tf5MsB+5kMi2eGWEQZSxHYF0cFo5yVfD8reg64MX6OKcCiNfWnFWddqPQ5uDiv7RIL+P8yH38MxyJzw5wJgRYq3IyZeovhiIPnR6y2rLux6Olkn3fY6xKYSjGy/PevCFguT0x5KgYiZe3b+x9mUUBwi0PeS5Xea4I/v7X9h0HGP3MPt5LbIdU2ouBIewIM+1tI5NB9e/hOT0d6YDtUszk+CFWPBXvJqhIUTULPRRKGc9OCgWN09SjWrBA8rv7YuPMXgwLCeHd+W76DyG8bxc66hbAmGhZ+zBiL1F8QG8vvtkMYKzSR+shAZLpyufIdCeX0f3lTei8YZn/xDwfFF8Dvy8K+37cxaHekYkrIwR4wuMwUd/xCPARYtxTK89F7ugE/dUa8B5YuWQYGQwy0VyUouO4lo6icuGm12CLQX1+e7n6cB+MK06d4PgUgY3/v52/0y0Ei4MBZjdcIru/laWC+G4TsXlBrMzJyIaKViuT210F6p74leTMAseUFi2ILy6Ex5XIC62MKSH0stF99H4T+xfqYxNeVwQZPT5GzJwWK/Cu1xTiDkJwAo0C/XDlk3LnL7jZJAX9t33MBWkHIJ9rh7fmzEVDE5mkxpRgE0ee5pRXOYJDQxSWZXoEeWLR/ouw5nAhjo3v8Ng+RkevAdE59RTe9t4cJxW4mQC9ObGdalox2pbjzf3bqgT+cinFMmvVwNDVCdaWVhNJfLl/8Ft8D5n+jRWzG66B8ueGfEYGExkRJl0nUDCBaDvav8cXDo6t5Z6pHAtHOio7SmJAPJAZ4TTfcLAZfi1n2c++xqFBu/Om3Z93AvPrzV7xOOby5YfXmtDoZndmKbuNf6IbU7Oe2HfTni02e1RCg9zjC0Sv5Q5AOARiKoJx5ArxwcFG/dS0I6XOzZH6k82q/TRa/+INsGJxpnMLQebVjw11I3K0e3NossC4zOZDCoxl09Vo4+n5YkM1stg/chI9c+jhSDCUtG2temngks3lM8NWIHRR55OgwdFVA7p21J9F8ONThu3RDPq4eOAkcb/HETJja72dlez8cCQoGl1Q1lABfh7T55tNSSLMYlY69E4hGSuJ+mRn0Q2+xt12BGxEu9RAcsmJxaP2fccCmTD/4vXzXr7NOhqP6p2iNHTj080+bX9DJfvCSnj7AIUSELx7vBX78wKEHuVUliWVVYHBId3j2YDzIs9W+w5wPQU2u9zRjNKpgyr1Z9N92FAhvrb/bMx+MeFpPvdFYaISvI2GTdgzJ8Pfo0Nll3gjU+YnV+1BLI9xz/lv1XD4RLk7y3g/8h0ffKh6djotuBN2kXW+E3qSAHJzgw4/hkXppYux7ci/cEDS2R3uKwetVfGL3DgGl3XDZMDvTBeXJrqFX3CjQyHStL4zOn/8987RX6u6E+7ghVSO63xy5uPVR+hYZta8wpqklxMDmrX7MJAcN0OIBpWsHw9D1DE2T2y00AM6yI1s/I0FJwxt7NhiHJIO/D35raYVwwdfa1UO+YFfE/7w6h4iedOBfV5ykQJDBf6Ht4bUQEZTacSgWg+L5lzSWNSigYA5Z157VwQmRh24vKzAoUVxGRMHwEfgHaGgmVCBgv8SXf42X3lOcXNdHmp8Du8qtlOuPEMgpslmw/6T7WMvxtrEkV/gmd6KxhIbA/Erw+koHFomkf9Iwe06BE7yxKr/6auB0o7uu/UcMYmA5Kdf65D24V1XM3TMuAIuOJ+cGbmBRC9uHtDwNGix0ZXq8vYlA4EuE46AEDhU9H3gV0JwC0Xn3Da6x0qA4O2lAmoeeU/85nj29kQreF6XUTT2pILa9fy49JwiVl+fUnglMg3Dxgg35AzToI+pYDXoEof8DKG4LFHicFJp3PJXvH8bLKIqKKCKrgaKSxjeFj+yVqCglCdkllFEh+xzzOIdz7L33dsz7HHtvZZWVkVWkMuJ3fv/er/N6nvt5Ptd9Xdf79Zz6Wd5dNbZASEXPuO8Fl4Knl6rN+mQIyrvF8cfteAhcnzPZ3GtaBhlXqvlL80NQZB/9xKwyDqL+3NjtcyuFZEvZ2x6YECSQenc0QDYEZvulsYlFJeBkj5qIWSEoqX8i/yN/HfCqkPc0JVBBIlr0vfHhULS/QUHCvZQK/uiNSXYBFS6+/qj3kYpDl0+SlGW86iCSMGY1O1ULegnHqmUehaLLHgparj/qgCn32xx/03sImv3pGZ0eipqsuzvdHtWD0qcXtvatLnBpJzDddT0URXY7vax9WAYLFrfeNvXlw6S6vvaRJ1j0sdIqz521HdxGZO7e0UAwLP4gq6ufiDyYPcsp/nXQx/P67vP8aIhz/3eb8jQU7Tuk+VV2MwkuR4ojbhcqvAn8zL9r5o84a9fTHWp6YCdRUj3I1BpY1tZnx/PD0IBdhS2/aB+Qqsb9qjiqoMHr9PrOl1D0JdjvVnOSI2i/1xUdmEsBoYCJSbchHHpiIqkjNmYPxpduMA67p8HL0AHjiB849M15Ui5F8AV0tChuL9qmw8Idt8OCp0KRnU/6iMT3YhASJ5f/p0cFhf5LlelPMWg9+0wqg18qyPSf3XtOOhemfcd8JF2x6JFVVb7bahqIH/1KOsyeA6sqW/FO7Fj0bETfTa00DdQYkhdWYvMgD1sjpHQKi7icxcSHjlMhn+MfawpbJnzVrxRuvINDeZuwcf0tFfQvaC0uzmUCL8/iUQweh6RiPH4qFPfCc6s8sTYxBHG/U5qvZ+NRuWW+xbPZEih89mBppCYCTkYlTWIqMOha9Nh4xSMynP7qQKdCVwtn3nBfszT1R4Uj4tHtIwjk5NarXUmF4GBpKHzWKgRNB1mUd+hRoMS/RnDBqRD8/74aHqkLQXq/xobbb1BgzsCtZC2sCMyHVCXv5oYgLhG1B861ZJg72HBu16gGBs9O6YTE+iN21ZOuUqOt4LG20E69WAhvWwZ43ikRkYJPr/XfA21w7CoH30GzAnhzYmnC6SkRYXMTcfQv20Bzfu3By2uFYF132GoiiIi2Rv/+5ynRCMVePFF3HYqh4F72iR9qBNR7aWH+VX8DPOXrqnV4UwRXnrDyWTMREC42ds6lkgrCgiGN4Y0ZQPlIzjrTiEOfWJVPlBytgzw9wx+oMgMsZl4crNkXii69SP97XrYe6Oz78ka5yKD/pWfw5mQosvyuEP84oR50lupvYxTIQCUHYXdE8cjFkc3u6rl66P8eJWi4vwJmldsip3pD0eKqQZxQIQXKR7R+cm4VQvRJ6uM9jDiUWrS1l5mBCr9Ufpueoe1zW+fZB0PAIQeM51/T/hpo367kf2mSC+TqCYJMXxASY93fY+SIhdTGB6TUoUiIval4vfkgDo0nSrX7Urrg9Z6o7mD/FIhvsL/cLklCNew/cheeYIHq8DvX+2Mw/Lf1NNaIFYeGv4x0MfOUAB3zqvJsWy2symx57L7EIKeEcx06V2h6yxhW3A4rhCXVZ/auxjgUYdhsfljFB84a3P2naBEKTVmey3vUcShc4W82V0AHTHItxLMkUcH5YYt8ojwJ2e89qs7C0Al0Sff3D4dR4fNbyod6HRLymgpL5CrpBRE5tpTZYAq89PI1is3EI6p0g1ftQC/sadaFT1IUyBp+wbZrjUdX3GcLODspkMCzrjqyrxB6v1cG3uTGoei0w9LT94tgYl9b5uTlD5BIIEyf/e2HYiVELnNOFwLfEtm2d8AbUiQ7mnim/NBBrVmP+BOF8HVhVYP9qjvso17nLGn1Q7cuRRS0dJZCNu/UoJNkCTyv1xQz4sUinRuH73KplIOSQ5TxZmspnCkw2F/Ti0XUGUJQi1U5XKx/gfFfKAHiz6c9st+w6McHTPu+Z1i4/99mzXIoBaK8W8IlaO85F1dcfbu9DNRWruBSK2tg8h+PCB8Bi5Cho+xhlTKw646/d7G0GpZfdRqcu49Fj8Ve7EuXKIc4wzntU5+qYbxOn3y1CYsEP4RxjzJ1wwy86zATrwPudJ3+wJMk9GVHb0A/rws0+G0O+9H0+zoC85n9PxJatHc/wcLQDZn7wwqWi6hgYXNz3kuAhHZYXagd4t2wcZWrKDE1AJDB74UDDCT0LbYxKPV3FtQuxgjvNr8ASkvhdeWrGPSS8/etzZQckO1Ikjz60pqWR/++TG35oQLOmcsGjt7QWDr2EaQpUPmBVLKii0OTBzXid2n+Y3jJN0JEOxhqvdnJnbT5cvBp2/060gMzu3s4dzpq4KzrjddDv8OR+gdNA2uVHrAe+rYm/K8G9jS+8TpLCkft+4azZFe7QWk9E3/iSzUkJk7OJJwlomnJUi5Tnh5YD2Tp9G+rhh8pXaH938JR33PGcL3yJHiukHbhn2c86K79PKLl4Y+8jh/WT9pOgOnsf3puZ+KB5bD1mXzZAOQidvX9SEQxJFceeXkr9R1UV4QtPFXEoBj791gFfBFU1y7q3TawBpEi525lOgxySLB5pzLaCyZMXXIUvVAwbOQ9ecAIj6wwZ8y6povg+Z1aS1KZF0gZaT7W46D5/5zEfOifYihhu9ObjimGd7L3rY4YY5DU8Kemsu4SSAr47xmzQAlsG5grxRdgUBCYDuxuNYCtmO6QWnA5NJcYKlFPE5Dda9mqIudGcH+r9snhbjmQ2RlPnXYloMNHg1YLVBpB/8SVFRNNMiRlleKtHhPQ6FLZ5PdTJXD0xGABXXgRMJmEnTpoh0EvKjQTo9obAXNDwHb2OBko8pbSTuUEZCgdx6Xp3wiviMI4TuEKKCxMVcZhCciAtgXqTDewXMrX3++ZCLqbJgKx14mI94VvO5mhBxLirNZF7sfDVAHxvtoBmm9X0akq0+ayYC69tiqQCKWySaWMM7T5Ej+W0owH3tadsX2zVgtVnabL1CAcann4fPvBPRf4mR0Vc1WgFtR8rv4NbsYh6uFqp7HyCtj9vNrNER0O9bVfI79dDEDSVx+qKa23w0WFt9ZUukQw5y4wTzhFQjZMuBn/6lYwd6+6OLMdBh18bRcNrtF0sjPt/myzFT6Q3G6X+ZFg563rbyZdIlI6UPE+t6wLFNxVjXt4kiCj1Ojq2WsklPjZ6vwV+S74ZIa9R/gvEfa92R4bVyehY6NrXtN2ZDA3Wpt+sJ4D3vadndb2/shj7IjcEM3333z62lD8KQvIUyssw4/8ke0Pbh8nhgqoUwmpoK/Pgry/t66yNvqjae05ezXfcghQVsy/PZQNmXFFo8lrWDTXVXU3SLoFDIYLWrM6MWAQKi1482E4cqFjioidaQYYvshSNuMNy6W+hAzBcBTbILuSqdQC1tuFLcctPeFpKt/drwbhaCpMksd4pAO4xwZeXaevA8+FMaOkOyTkYta7xv2oAxZaHnCp8NSBx6CWXKgUCUWLTNnJJVXCZJrbM9MxCjDsmcv2qQlAN6SSeVaMq2CM5CdzmJcKRk8lrpOuB6ITkk0ra4mV0LCPWeqPNhVyJfkSdWm/1xhZUsGKpYGflU1csWEWKCQu7tdXxyKS7ys6Lfd0MLokeMSqKhMW/kt+FbWIQa0hCkKZfZUgSej+afuAAmaHbcSTRgMQp4YY9r0AgscffvcHjSOYzRMPVu4MRnMP7rQSPiI4M/HhqD4zBYbp9nTdPB+CdlJyiAHR9fBQ79/jWP8ieGY9y/v+LB5NhXjMjdPmSx8tf+a1hyn8+0X37ARtvvHnHBeT/8uE7sroX3U22SA9PP1c0geDftXeMu89UADdSVatXeaeoCqVuBFb44cu0jecozueDz/ay1ddJD3g+4tl6c4WP8RivCRuFdQINV3VqhfX8TBp4X2+PoCAqv74mdvbU8H6nkqykVcR1J6HKU8cDol7mqrsFlaAjsjm6xciFFCqtmo0FQtA5qTI5ToxKmQarw+4VxTAHV3d6X8GOKTmZTOxOUEBVO3HnHuoAOav0MunCePQoLf5U4+/tUCnFxfTjQpBa+/A9JeoYOTTbVUmxo4gcv4VXdbBQui79t8P3YpgZLX0kP3WVD0c7XM/5/agBAL79Xnp9PFoUZFVgPFCA8R+fvBHe28pBP04XPMwBI/qRpijTim8gRsh79AAHQIZLndDvjkckrUsZLD83Qizv9xt9wlmQZCRmU3WAAH5PbE5+C2kEW7/+iLkeCELviWInvAMIqCii0e0rpmmwt3hFbonZdlw4OW7JUMMFnVdPlV+crsXbHl+MoF9NDw1GNmuFMGjtXyLq2S+PujPTfQQqI2DgF/ToaYroej4Y/p7TJJ9oBNKNyZ5Lhp+HrpMqewKRcbFUaaMBR2Qs6b47GegF9A9chK7pUpCnh6+9VessoHRvfrQ0iQFZlbN01tPYZDFF/10Y2oWsF0ZIsTeoEL8QYb8SGkMSr1w8eqwWzdcr//Zp/fEEvSHRsiWZCJyNDlbtKzeDdKjvu5aHiaQd/jMjZAFInJ/p3WMLYoMvtcPSCbwVIARY8OH3xh/ZDmteryENt/3XxnKI09UQFgFV9AN2ny3JFzyengroJN/5fP0QAXYjQYo8/f7oynDwoMX39ZBZsV8oGxcNbzsM9VZuROKmKz6fD5V1UHN5Aabp3sNaO80xNZ6hKLxrE2Dw0LpwEu/lyUO5cO41sWzHxmx6JyUD0k1IRk2eMivudQTYf2a7YynsD9a2QqM+X2KprdvAhHPbMhwJnwkRP6zP3ol4Hfv33wFPGXtyvl4k9Zjc2t8H2gGoGwP9bXuiDqQuLYw5T5B8/ml0ewjFqHIR1nOWeReHQQ5/hrZ4EsA1teqRnA1FNnMHS0OJLQBXnWk+xQ/BewMbzDVxhNRoIL7BCE4Fbb5U1RC0/LB96TGl9Z3WFQ6Gn3IpS0ZMG0Cktph+XAxvuxd1XF/pDhfmlT4sAOCPbg73q5FgcpIjL4rzZeIyZ+fnU7uAAdFlrd9OyRIDv/yzVCZhDgu7xkQ/dQBTE3or3NoFMz6C9w+S/O3/0bJ66LzpWDzZZTHWbYQpMZIK/IiWDRmGH8qqqQF8GzBz0oKECyxhDkqJISjW7YaB1LmOiEFP/7+yZMEiE8tq9R9QEIjbfx8DKd6gRKl9tpFkAxT5BQ76hABff3lJ5BI61Gn/3sVuCpeAqVihkRRWo9qrXfZozLWAAdgUU68mAr03w831B0ioPs/tP6yOjVAxAE2JZsUKviyPhtZbMAjztmh3bLLFDil31mr5+ICWcLiN29lhCDdMiGmVSIFGg2uSunpvAdP0bXTR1dD0Nu/AwqcND5Kq/z76u9tKu2821WY0fioyE8wYX2tFUaZwpi2aykgYHXSt1aHiA6dEmT0IbXSuHjLh/cvBSywXl/9hYjoMSalwV09BWKucMg7iiB41CtZzj+PRdU1Lrc8yamgrbP1wWgfArbUys3gl1h0R/In0o1oAneem0ysFYUgUboyMKsYhs68iN86L9cEOp4hI4G9hbDJJ2vqyhyGTJUuLWOMmiCdWVqTmlgEB39Etdbxh6G8Bu3HZXf64O7ZjJibVWUgVHB8njEtFM0jGZPwy32gmfjj7oeSUvClGIJFdyiSOebZW5JWC2OE2x7nhIth8mXJ2qpxMAou4sNF3o2Gc6SuvfIztLncsxE5IRiEnN14I2YkYsBMKVHWg1IBqWon/pjMBCKlej3MNb4oiOdkkFddqYCDJg+Ypl8Hod0LHa7T67Hgfi5v/w3DCmhoHjrUaReIzAONWxefp8ARRY/tt+61oLnCudIxjkXcwToz8nZlIP+MVUGO1w0CigP8pM2xKMOaN0eXtw+EH51b22tTBq+lxD5eWwtFHtX8T7Rovr/Ozix0fCQLJC2NcfK7fqiRcYqrmlwIf2firntmZEPnRBPmx6gfUoh3MDlzMhjKjghemzYrB33pu7dOUkMQHwP6M/E9EASbVC7q3Uew4D87bjwQgi4YshRrNWKg3HmzjZlSDnxcOyN2x3CIQaikKXUhDSYDt3bmaHx5N0f25hMOLNp9t9T/UjYDrOYpeua5FPC9JN73uBqDMPlqq3dQFwQ9ZPFV1qTCs5QsZq4rJDTdqvVTT6YY9BqkDf6m1sIfKRZ9ofMYtL0nQmWEMwhIHUShgcBaELmyG1vYG4Is6uuYNX53w2CMohnHWwSh8h4FvgJEFONx8vv93hwIfLzP5/geCqTkP9jg+eOHdCn9nq8oObDZUWpg4oDg4KYk49xfPxRqcW7qUEQvBBc7TspGRwCT0MxS1wQeSf45Vlce1QsnDa2s9k3FgOxQdPT7UTwKtOl5vnaM1p9sn0TRBSCQPLHzRuUSBu1tPmTKt9sLc8mXr5yJLYVvgp/ekk7hkbLdyCYdNg2Gm5mvt8W4gPKWJmnuIha9unmamxCYDMeZHfSeB5OgPEFz7/oFf1RkOs79LDgL6FxQj8xeCnCbW/PvU8IgPaXJbv1LEbCRzpCUOlIGMzt7Dw2sByGLDAuFpotE+IR1C+iwKYeS9WuZe92DkXwegK5iOBw412aMUSwDC6dDSLU2GPHW5F4+YN4Es24TolzviyF9cCHrxukwFHBvaV7nSBNg93J3mm8Vg2hBACZ/loBum2Rr8w+QIN1adCV6mwIR3g/g6aFglNBvpScmHwaaU3RfLnFSYUooZ9aSLgS1MQTr82ALwdO5zOAT7iU8+Hf/UdqgH2ou9nZZGW+GVQz/vWOnyuGl2VQBC184+iVtqXZhqwf8tK+x+8f5wTz9akXVxTC059PmXJdkL2wEnE18d94XWFuD7wWXEFDtJUkx3/xmeG+2IFOtQoa9x8qG2HbD0HViIMnnfTu8iRvbm2uUDfqPZYocdojIlzAwY3+4BX5PKkkMXyODusnxNYeb4Sjq/peNJNlMWP310NDvfgrsriSkUbwwqOoar8mkWQtMjBh0yT4kw7Pbz+COXTgi+df93Zag9eRPtYHx1ytAsnLgCIt2OLqa+N/xWw9aoJ9wl5itUw7Jf7/OjrwIR1KWrBckSS1guFEqQqad9+V7BkPJweHohLfGzbrwbljfTt1kp3ExvfxawH5afule2G8PT9/ApLzok0yTfDh5n17VbRaH3CusbAaffISHl7wzC3D5gM+ot1kLwSGP27Ynh5RK4Xy9VoTuTAl0bDNOvZ7AoKN/Opz0TEsgeu2PcJ1gKaj/5ew7j8GgQpaNra/e+eAaEXHQ8D4GwgMj9u+j0ubiQq9Mt5kP7NYv2YdMQmB3l22qiNY/CVJWRvx8LWBi+rvB/6sTHFas009TCEd2BvkrJ7AtcDQ6jD490AUkHaYvCvmGI6XQuJmo0hgYNZz6RneeCv3KTmJC9YHI9kPL2XrVWNjT4c5ZVkAFnPllV7vYQBTUlYZTTuuA70J0m7yGYZArvK02SMvZ9+wW+7kFOsB68j+MaRURDmYsMlpfIKGFFxyDDvwdIOA10jZbiYclcSMFRdp6aBUvuXOqEtQi1O8QEBX4109VkGcC0Pi9djHSiUrwqDli/imDCttnttSKLQNQYZK4OD1nA1TGRBpsHqqEM4Pk/suuePQydA/bWHYPaMwfySnN8Ybt4bhLBgNhiC/OWms8qQeu2K1vOuS7AGPCWEzzbBh64S3j7FPpBbPKa2UZ9WFwdfypYYgRDgmQbZq977hD0bjw6dbyUAjX7xTVjMMhX1ap9lOTvXB8z2azZRcCupqI+Fe6eNRVX9fjz9gHlVNOlTOXKMCMOzNYyIVHr9kaz9wsKQCZsXFNxRsYiGdPlL1T54fus9Z90i+l9fPNXK7TgOB871IFKxMOnTR4F4x+UkA1LdqMVFsLy74aZVySOPT39fpBLR4qVOhAiK0eAndDU1M1bRyay5U4bpfRCynO8Tk/ixNAz/Fg+l0KHo1vTq3E7FJgP+5GyKXiCmjxDxoVlcYh1zAFiRNPqZBk+aciTbwS2Ea+Ofz4iEMfSEXGEnupcOWToOsXciU8+a37/Y4MDiW/OML6/EgDZIXmjceWpcN38k3BQRc8utZ/POBXQT3o26YuldSnAVM6p/qJa3j061DpfoHDDSA9rbtkmJMK+2KOSC0649GBgy68hH8U8Ogv66qg5cz/cyf3Jg45H4gvjrChQs9rA21t7XRQmucYlQnEofBXkhqlbv7AbVXm2y1RA7emeo1LtkLQj4jt55XebcD1aJ3DtqwCvO/UBP+MIKKCBO+4QPY2eJ0vzLl6thLEpZ/Jajwnopw9okc5BNrA5OPp2sCLFRBly/6H3YKImrAON99btEFIjrmCLaUSFm40v6oJIKJBlzPsbJpl0Pchy6bCLx3Wo/5L9NXFou78XIZsjnJa7nqGbrSngb36n7yX5VjUG3e5HLNTBlURKZiU9AxIZzK+K52DRYXu+e1JmekQPH/OLw9XBcumuNF62rm2zlOcuayRBk8uCXulRFeBDq+y8w85LHJt/HLZvbsAgnyNWxv0QsA+T/TYn3o/9HFIOY5RJw1ywifSdNeLge5Qddx/gEVHIt6GESsJMLRKsn9kXQBpF7n3xnOEoHdvWVvczoRCz9loydj2Avggz2OItw5BdIXVJkmPGmDYie5yv0wkJFx5vfMjD4/exIuESfE1QHjbem6oXAzse3eLOuWFR1/Keejzf9WDLYG9zsErAn4WGy4Uv8AjkxG7/snlSphaOR7BlJEF5G9hrhlLAWiPWDqz2O1SCL8ekOPplA3tLDymH75i0LOtU2uiXiWAT751d9w5By5SP350JmDQarTca8EDPXA/WsncjSEZ/n3LLqzbS0SZT+8fYk0tBhXdBfap2lzAsD4fPaqKQQ5eK8VBt4Og2iEvsrymBmglNGi6KwTRHy/+dcyzHlIeXMXhFMoBq8PE+O0oHon3+k+PfOqGuJytvpM+yXB6W4DxuwYRHfSHeZfQXhjqfm0oERMPrwTE3jOt4NHSyEGd8/MdIJg6WPhTgAwst0OrhO+SEHvASHf82w4YvGC2wUAthz3jHzb3AAkFSt2yUOImQ0ioceIRmt6eF3++Pi/nj8bSeYRtP5RDz/ZyNf+5KrhHyXrivIxFLiIHMYilAsQFub+EFVZC0ACDbn+rP2JRKLaeeVIJaRfMDyVa5UBGfbfiWXwAem+8/8PGcQKI0PXXcpiUwm+OIw0+50JQquaXZ3eooVAhI5dcXVwCo2syPkt6Iaj4gcdu2OsKaPU06+7gz4GS6vr1JMYA5E73Jbe9vh3+eH6MPhVRAUl0KvMDnCR0WqYl8ER7O7gSPnMaJ5BBO+XFYQYuEpoqn3qFjywHlmEv0fM0PX45sfFf5z8sOnCs7HVVaRnsG6ZzEYwtgPZFn/euNB7PJIVGROjS+krUow8mW/mQWDCrIT2MRfJlPxX20Hjc/3xZy8B0DRx5f2Yt4EcoMsTfrVh2cwH5Dhnr+7rx8F8oJ6t9Ew7ltPOcV9bug4JdldfcP2pBq4g/50VSKPqY0eP7QLgPmnb9lTb+Q2Bg8fVfy0QochzZemX5xAooohipSLdomNSd0YngCEW6k5cOxJ5zAjnstbarTpHAeFeU7togDsmbfgi5JEYGVWVXDXWGAsAP8YUqavij/qyebpNMMhSydxSzdeeBSxljYEyoP3J1lDskdqYVSiXVD8edLIWh9saVF5PhqG8+86xHQCtMbAgeFdIoBazl+8X9vDRuItj8F3SzFZ5Plj43Yy6DBeqAEN9KOFL/bUBUuNgIk48SXYlXEqDVLohNT5WALC6R/mWMI3gjlvat8E0NTE9w+EW/DEG1RdsWP5d7aX1myMskqByq3eIjE2XxiNzbeEZ2lpY7gRVnVzLKgGr5XUFZE48sQ+9ktOt4ANOq7a+dCzkA5G7mPE8c2hkgl3R7eIJaJ5vG+J48ULrrR6W3xyGuS7vJJenZcH5f8pUr9SWgtOlxV5QHg558SrSyY8uFT4YXa+tZSmHDw88s/Ycfqt9az/vl0AMCO0+7g6h2sKbe3n5QMRyZ/qwqr7vUARvqpSm93mTAhFAPyVwmoW58gXjBRjtYP8iKujNWDocezlh1niYhy6Idk6lTZdA1WXQjQSIU5t/hNm7IY9G1LLa/sZEIfH1ySR8SEkFPvevC91sh6OBpJ2k7cQQlw0csaqoTQY7J5ovBeDDCPT4oxeGNQJA+/pPm+WS45cz4rEg8BP2blhZ9/qYRCp+Zz0JtNVzgqo059o6AtA2zlUMmG0HXYMKfv6AaXrnr9fU2EZBEYIzxIrYRVLxnrB5tVsGXjsuHNbEEtPXTWJ7hYzdkbHk9wnG5gF+8yGexciLSo/+VO6xJW+94MHTy0huaLg5oT80TUUV+ile0czfsjISh056eMNYpeHK7loi2hV8WXUrtgX10cVB8Iw3GRJ1MD02Fofg1EZMpiyqIVHmadLciBxKdG78+vxmI0D+xBffpKviVryb5X2gW2MozxXFhA5GRdYFG/9seiCk9XH2lNQ0eaM3w28jR+hsumDy03gMeEiWLDmcSQelmj9DVm2GI6E3y8OFMgYpNeuaKVQoEK58cwW5jUezl36Tyyh7gv3/Fi48rEoJMV4vDSsNQ9MaEpb0RrU9c0fOoLyyExS/CkTG0HOHUrOrcpt1X+2PH1UX+WhCo8anlo92Xg0tKMK25FCoGc77s76gFk0vcSYncWPQ9n7i/jloKIrpHbSJza8C1y3du73EsGhhgOsflFw8/PvZhNVAcrPcpnq+j5cXjkzIqTxn6IIlVMuv+t2KQ+fvvUd4JPArQsJnmLmyERGqFRs6TYkgb5pGaSCGgjH8ODoYsTRA9PVP25TCNd+4sc6xOE1CCfXFfA0s7HG268/nOcBrgms2UvfqJ6GWw4tYnrnYQRxcnvJhSoNXKL1Z/iJb7OfeOqQgXA1POEWW751QY/qxzfus0BvmEXUl78r4I8FG3mL7wUsGEx5Ot4J8f8umwLll5XAyVgU/9tTcpkEXuunZHEoM0xPi8Oq8hmGXRpRsJqoXn0smddkvBaPxc8LeBlwh4yOfkjr6sgT+PP5/dzxeCettNtVU8a+G0eE8U45daYJsUZ/ikFozo+YuWjj4qBfOya5Ijfynw3WP1zMl5DHqJnXbadxKBbvqed6/6quE53u+yQ0sw2ghfSruW0AijxS8U6uQT4OSz6Ny9kQQUqv8kaWUbAxee9nLvLUDwaUGl8txRHNouRMmHrviAz5vZfWa6CKYORJ8T1sAhihHf1YNaTbDIpjHgpRoDEqTYK6xHwxBLRJ/sxmojoNaTiwLOiaA5z1qi2EdAZEmGW/LlvWCYBfEF5HDgval50DMZj/7em5kvH+wFf9MDyndCI8D9fHnSFSs8Egx9KiD5vQt+kwyUmikh4DXBfu2aKAnVXz5H+nKhG8pU5X4k9eJAKfJX5016EnomN1K/MN8NvFNG5WZvYsDM0Dlk5zIRSUyda5Y71wM4zbYkLqYYuGCqzrvaHo7m6dSyi85mgixdrHo/pzusGXpLLtP4KKmgfs/11G4oh+PWQzuJ8HQ5iqMhkIjGf1RyNKR0wwxF+Xs7ewqExfps3QkiouzQwWBO+25Ykln/bkFIhs1uxvWCRiI6D50izFkECLOjer/+UQXXCLr3Ph8LQbZbj1LfEsIhTvnt8S2VKtgOfNC5khGMAh1mUnRFiMDXqhyXaFMNE5Km8/QewehVluOdqqO9AGwB98UsUyBukbJL2SQgW5Gg8eR9vcD54nFWwUQS8B55/Gjf8TDk0/Ovg+9sOVjrjh8nD1NAw2h8WouCRckPU7oSpstA2jzn9IgKFRrR8q50PBaJ49t/tOq0wB6myOt+r+PB2OLEmr5pOGo3a7v6Pr4F/Ldlga0yFl6HH8qJJ4QjXjefSoHH4bBVLe7RsZYFGp+ba83Jweh5U4u7DJ4EzZItEcKQDYYMDfI8AsGILzJbtc2d9rzq34n8j3PAKk2/RSYvGGlrvhJ/JNcNGzXfjul4UuE/HOtz/19ENJVT+6BDJwOuFrjV5HsgIIgfy+sqxyBDQ2Pu3HPpEMvwx4P1Es3v3UOXL9Bj0V7e6O9VbU3gOnrxTV81gnRp9/jD5mHo2yevto/LTfCYL42g/QjBk9Ickr1bGFLKm0l5t7cXXNylK699QFCNz1QREQpDCoN4VS+/GhBZoucw1w6Hynpll69xQUgnXGfv9O0amFs0czN4EwGHm6ptmV4HIV2pB0GK5iTA/Uvaq6ZLgkO+w/Z554MRs4/tnANNDz43g7wMH1DB/PddVm2aHkhOKz7fLbthJH5ctItKe97vl5XGOmk+k+7Ua6adCdvYWYZ6Iwr8qbO8f/IjBjnWWdzLdO+A34JTjBY5AWDfs8ZTJUdCYeFC975udIDt8pvPIpP+oPDryOUBbRI63uXZVoTrhqYmP4ma9Hhw8V581JVCRGO3DU1UX3RDsrOsR9rzRLB/G9Nn1EdE8+/2hdg86AZWIvPLsOw4KPi7mnZ2ioh66eeM4pLS4QfH59myc55AN2DJFDiFQXbnsV2359NB7v28AjHVCd46xSgL9GIQOVXaZPBtOOhcP7RwP70GtiJ+Jy8X0HxM7m2RmGcEpDdtvw/VqwGlF4w/iV+DEFFBIE2OQgJzTfKuoFgtsEq9Fy87Gox4G/w+m62WQL/hy6uSJApkSGzxLdZgUK5YuFY6dyPs/5A5xL6bCVdcTTt/3CCg7XWNx13JrXD57uzYlk8VaAeVl54TJaIX4pgmun+tUFyrfImX1p91ZHvvG+nR+tXS9ccRexLgw9QJX9OmHBA98PkKZ3EA6hsiELkb46FEQeuwjk8xHD5z132pKwCV/Ev+KelbCyz38z2pWAROFqM7GM1glMatOekggOB4x9uN5Ps0Xb3in7zVGYxyVWXuVVW1wU/qwbEq20RwoTQr1xQSkYknv0IXJh9iokc1e2UoUHDHp76f4odIzIm3pAXyYS7z0vCVGAosJl7U22r2QxVaX1fn3+fBflLADkGFAkkNGsUGfX5IQW2kvzu3FRoywiwlEAJj+u4GnwtEpP9YbUf0YymoaNiRYrQyIMmQb/TWJgYxJV+8MCtRCitDIbqLpZlw85vOoYrPGBQ+5Cc+65MPf6OyzIlXaP0wJZBhg7YfqcseeXwKBdBrdpV4qLMchHR/DnHW+iG56CexDPbNgFN8+r5ArRL4JPhLLnwKQ6LsT9TNVJtBJqpK7zaNG6o9TQMnK8NQpj536uOwZijhufDyjHwFcHcNa3gvhaHjNYuuG+/I8Dzbqih2ohCiiWyu7k7+qFaCj/WaQzwkN9zQnfAvggDyCarpnwC0WYcXeqTZCZhE7uCDnFSwVqIhuB4JfVKWsyb//39gLxc6DR4Fwue9xyU8PvuhbGcj7AM+2nlZWfQTzqJCUi2S23uBhD6rtPW10/pkBXG1EjdHARb5Z1UDtD7p/rFv8m5+ETDsC7gfvS8AtgLNCsyYMKhQpeVXSGUxyLVazniyB0Ppia+MVVoYVPBXzEKPtQy4S3hPUTsyYbVK8F3bf1jkceDjW6077XCA9WuZsEAZLHduvZtbIqL/Zo1BrakNrL9/flE0Wgqv2LgWHpcRkTv9FeLj4+3AYVkWKclUCj+ci4XrPhPRPoln3k4/2yBUNy8zJK4Mbmw53tRpoa3ficpjtiiE7O1zMW0zoaBmu1RZ1OuHLnKa1obc64H6N1bPNR5RYewKs8C8Zzjqesp06xttPaFe58CLHirQhcuL3KGty+W+FHRJSoAuERMuqQUPwFj0FoqbB6DWOOfrg/EJQNeoeVi27y0wtoclG1sEoGAtmQAWwwYIq/L/XpmdB+HtHLPDRXh0079nfTWfAr3ZC48Sb5SBI+5T9WkGHErvS1764NYKO+c2dHn8E8Fd59vzJQ4i4m+oWU7oaYUmy0cVJitJ0E/ddF4FItrtiqtY0w6Fu3ssYzwHyqH9hIVZ1YsQ1HaP+MLzew9MCvV4nwtPAYZnDwT874Wh7p+RyoY7PVAZ6c35SDQLcn2zhkdFwlCt6/JV/CLNl8vMwxR18iH9x2PGR3VBKH3jG9tvvl5Y3Nl26ozMABGxIF3PSQJ67rSSGyKUDzu+zjdW5HJgMeKOexPt3DEmHKBfYogE3chnWZz/ymG8uWTvQFUQelfG8Nn1MwkkteRCmq5UwFes0fAb1mDUL3zzMhgQIcPO9X6NEhnUHJ7kVtgHo6PyR6I/DHbAxw9HJGMfJkKVUt0R9jsk9E2CqZ/4sQMej/T/cy9LgsBkO81pmp9H8dun+5p1wCtZ6RSd7QS4VLlvr5o0CQX+sT/Z5pQDXzsFX06vFIH4B66qv3swSPj1tdil6/EA3+x25F+4wn/NmU86OQJRR6jiHbqPPWAx4THRQaAC/mZqB0k8HD3lfy/d+y4M+AOFXwkSveBIZqQcaT0Ykb0EWKO5c6HxZdcFAkcJBFdyfhhe8UPmr6VGb1/qhSHvQ/OBMlQYYj/4VbKagCpl7qXaTlBAQZCZY+9kFRQ4VNDLC+NQ9qaW6PVLfeBRdWFafasaPh12PMbcH4q66bijAy80QNCpkJjTT5KhTvAUuTIEj56Q7paM8TjCat2kwAxPIuiKud5rH8Wh6ueJMRZhxTD9SGHLvyEWvAWfHmNSwKBzPfNjAivdYBq/y+h4qQ6YdZjM1c8TEadw+umNxmRwWxtzlp00BY4nH0UsuP2R1XijaQ0hC67+dmim/s0E59vanfyKGPSibSrxV3077OzWlQca1oK/ncryBCcJafl4VJ7SyYTy1dZrSw0Z8PYzI90fdwzi5T2lOVNM42j8icwPjnjYY52Uu5uJRwSeEeuHNC5CNj/aRBlSQFCaftVHEodKbpXUaAdQ4PrlsaofKBlSppcHc+dDUKfwgu6fBgpkTjh+OSaaCsnv7RX1ab36u++NtB+8ZPjxxFPd/1IxWG/9Fvsu749MZyMVxpW6YfXdda+K3HSQlnScml0hIt9/av89fNUN6e1BsWwMmaAQd8XZsZWIjh17Z/DABAueozsL/3HT+t441+YyCw4d8Ts7OGHUB19xRwMGo6MhlxR2zDcgFGmPhM8R8G5gqW9acUq+ELQ+wpnbqTj03KiK2HKyAW6fFWT5FFgFx4e5anFeeHTN02pp4mMDYMaJg+t5VUC3kbfL0IFH8Wz/MtoPG0N5Sg1ry1wtUPY3b749H4qQFZNu3V5aj6XXzhziqQPV6lNSLwOCkWqO1Qh3OQE4aq0fXheuAzOXxZHjnCGogO41ef1NGORncvhezaXS+i09r9ifYCT57fbQ9PFemHmrO7Sx3wq+GBtENv4koHtnvhx3u9UL3A+s4/5cMoe4u06xM4kEZPFUNjKRpttvVsZNNdffwfhLT7JpFQFdSD7w8FdVA4zypdS2LGfCN+aUrOA/eHRginjKU7YVconvkx36yRDw4z9p/Z/hyJmrTTcnsxW2wrpS0ivIEHPR7uxdMSL6eFPytbNFK7gxndXtiq4ATrvbDp1MRJSVFfSIeRwH1Xt1+hWevwfHSumAnDchyNf08i3xry2QuHr/hUQkGXacytrGyOFoMoCTv06qFarWvh3oYCaDyXCWZtZyODo8/85y16IXSm4bDC0lUyE2Jdxe5zYBsbP+NLiq2QAmOktV5zYrgX7aQXg1FY8aHCVUIzpa4N987XDakhmcxRY0e+SFow76Wq4CnVbIirf7Zu9hA/cL7RkFt8PRvbPYrvMHWuEaA19BvcB7CDryumSmNxyphAzaeHu1QukN1x6We+/BLV/QLuc4ET3KH10MGuuBB5JnqnZ568DgsdbX/16Foajf0TkFpm0Qvf/HMJdvNdgpWNGvYYnIcSHyGltaJNB99KNjQ5agW3oVgnBB6Onp0SJFcjk4ZhkYB/whQz2I7OM65I96OcMTZa3IwNTY4NiJKYWSkgY60Vf+aOD6tZvPRXogqK1t56IYFc5+MWnm7w5HH/Gn5Ze3E+FZlefNPdXewBe5xxh1+aPBb8f+Nht0g3W4IsMILgomUGWT4wgRheZb7P8t2wOdMT28qlwBkLZS0HY7LRxx/LOe9KX1bKG7/5ysYsiQO7KVN9wagpp9JxyT1zzB0M7jg1ErgpVTksvIGocaOaIVn4W7grftGfnfEhSYPrKeNZiNQy93f1apWzZBGPnqJwaFPBDnzs1qOBOGLllN/nQRaQJ+juozXdPZUFTHov7qLwHpZuVr3Vvxg8lnIpe106qgD+U7qZ7CIavvGwWuc71gMZhrK7MSBnCC5QOrOh4datA1z2Htg6k57fa9haGAMzabOHmQ5j+kcddDh3vBg2/+iRATAmEuq4NjDGFI1uis9vFgIrg31Jxa3IkC79VrJ5VeBCPlYnu12DNmgD1MN7bgnArGmuiAnkAo0q8pvheFeiH0T4FrcE8ypPPM9AUQ8OhdXWbPW0cEiddz5qKrXwPzesWLE6dD0N0fwWYvKttALT3HesWjCm6EFk4K0/ptGrWGj0O2DXJf793/GjyA7n3s6FMnIipRY7sXUtMKtWn+Hg43vOD2/bTTs9f+/93ksuraSiuIvuPZebP+Dg4Kt4vk3yUi7SfE3/v2t8HLE/M6T8exEHrJPdf5CREpqBIkMKRGUPk6d+zoJhVuzAZFfcMT0C/DDM0JqxK4QXxOaMusBCPQvBzgj0F96y9OKcaXwOPpMydtqFWQsevpsicOg7g0UlX3XW2ABPLIrxABLMDg35/WYXi0ImV9Y69VA2zLjLpIGXhCyp4ZglsVHm137JZs0Pg5xOnlj9/fKKDM1siKF8IhgtnHxp1kCiQ7Cj0U06HCBVlWK/etEERHjHxDNW6F2wZhhySotLzb656SxEhEt+8EXbu23ANcXAjf1ZgN+n/EHseoh6HKiysy12kc+lYjN9xWNheEnGPqKmkcGuh2vU71fgtozE3ODKdFwIdHW2VKL8JR20O9unqPFnATU7Qh6xFhwz//aL5HOMq88pFNwh3BoMIeOzMpBBzRDzbhXAiKTLcRWMpA8JF+z/YH81pIU2bOr1EOQXMeqtyYvT0wzEqhfFYuBDaVvu+Kh4lIvauUX3mzm8ZRB14EihZAg6myrdMJIvIWDskZtDeD0OGqj5jvOKA8jbJ246fp58SFfqVbDSDayePqfzwcFpAcITcSj9q13ILf0xeD1NCT7Am5QtjPdM+7mweDBBUdjPazFkG7kKPESGQhxOMwrOHzfogqr2/xyD8TpCz/bBolVwPP2EXmD28w6MI5XsVy93SwKsp0sSFUQy77zRvuixik5eVESbNMh2/4uc3i1Bp4/9an9eYqBmVcXc82vEDjmufCIq/tqMCvIWza3OSHpCnVasodzdD5sbx6xzofLmSX13uyhaOUjnftXfHNsIqkJPTFC0ClyzB3+VcYKrq1Lkzuo0AgtiboUAMCTp+f5toncairfyr/YD4V3J8ebbiHLwTGScmJ5moc2mtrliChVg887xaM7bDFYKB2ylfjeyiqk0VMnqgO5u0117AjxZCxpOVo6x2Klp+k63A96gPOb01duWoUSF82xLuTQtHupK3o5gQCiamXeSGhCfDpIOuY/6sQ5H369Il92hQYnFnk/q6VAOvq3yy2a0KQc9qTh8rSFPh8VrHDRSgJNBtnGbryQ9DFdOawUfFGwIrUUt4r1UCf6IM6XRUCOrrlMLtR0wApKYOrB8xr4GsSEOk38KgrpeJEYk8DBE52Iz63apB8HsxnsY+A8ilFa1iONKCKZDz+4+cNemOH9uB0sGhbgPl5gGMzGAxOn0v9nAyd2oxZp4bD0Prp3qzXKd1A1zqxbXuRCu1/vPqKgohIkW7O9/ChQhDjmDDPWY2CqDEealQLbe53mT3Mz/bB69v7ou9+LwI1/TdK0lOhSGTQkbPzXyNE/bunOu+TC3MOdvPdwwRU96afm+9eAXQ6O/r+pcYC55MFFlManzr/K+rA0rfAeuHmTQPeAqAOOuj+lgxHb7Lk2CwUo2Dl+kb0o2u1MKmd8czdLAjl9J9NtRg3AtXRI3xDQoVgJZC2kXwhFEXT3zY70tcB56zwv3yaSiHq68DxTE0SWvtzX/KXXy/sHXap3eEIAyHmO7UP6Qjohkq6UOB4MNzXNNf98A2B+pXQO6UlIYgvZK7t3r5uUAq9Z4E9mwU80j7j/Pwk9KW/RVQ2vxiKuqkadMbloMxjXnFNA4NkA4oflCZ0gneJx/tVVwq4/Tq64vCQhK44TUuVs5EgVP3sS8VaKth8cuhllA9G3hZxL1PLiSD2zuHuOTMqkB8uPzz0OBhVVhkNRldGwo9RIlMthgrfD9y5cCwgCAlGfaR7i88DWauhZ0F9RrDFPMSy1eOHrBl63D9lRMMtr0mT0yfCQCFK3LKBOQjlbW2ZJ4jHQWS3SCBxBw+un88mNZkEIs1jn9+8L4kAMZl9oyS2Oojjz7h8ojcIVQatB7NcLgOG+DYKQaAOki6ws/arYhFd0TL2eXUP+B1Msa+cRoDfl6dwsigM4a+uL54J6wF35itHxJko8NtIXziaMRx5Xnr1uPYFjdMFtfxZX2HhBbc0e+dvIrp6bPnF4SOdMKQZd/fKIQSKMhuMLfdIKEz47z57kz4gNTatsK8Ug5bypzJOTCi6+jo78NqLTuCQqVp6+bQWigrenNSgvU+2CVH9OUYE448Td/QqfcHYhcqunBGMJGSrCo4faAKVlXPv1FiokHtw2vXJFAHd+nnZlUk0GAqJOqqf/hQABpeR9YQSgi7lrwSrO5KhXUxf3PdPJDx7XuU6+cYfdbW/eN7USIbUo7+tW7FxUECdCClL9EfHPpAtZbvJMCFezLlnMxw2GsuUedP90VEKz15ZvSxYFBcYfuNMBrkt9qQ4LQzSuf3XuWO2DY79Pk0pcygG40/al5QaiEjCVnsfNo0C71jPnKg+XQGvWpW59P6FoJv7/o5t3KTA3Pd7X+SfVEDFSH/917wQtPY9JkXJlgTfA08vqVtUgtfcoeu+osEoOjP4TTl3OKgHnbacda6E0I8PHrK2BSNbReVdJ69wCOI/ya7VVgFP458nQ24wcuEOz31j3gC2ieo/vAczIE37dUF6BR6FXU1nExptgGMKWmpLHhkg8Vv34E9WAvpqluigFkaADcymkoxvIdATTWyp3CGo/vN3o51XRCie2kN0qyuAo3ST8lkvg9FsEi4Oo0TTsxuepzarELZeLQSPOtPm8upQxGkxIpD3eV793ZEAg1N7VrfdgxEf4wX7rvZuGFOdq1wviQf8jXBHUVpPKLlnoHGYpivDp9Ef+Ptq4Zpmc3QLTVfJFKZn0py9MJxfXEwvWgOUfXFyHn8IyM3SvtWI3A1ft0IjXJliwfFQWv3nN7Q+k7V0+cDFOHhnX491W4sGp78YJhua/sdrfatffS6DWN0nzzWGa+G1BZEoGolFDHYX5oWiq2D482KXUKQt/Hh0i+D2OBAZfcotH6vqhWPGkuIEp3KodEok5Ubh0fEaW/6kW63gfyuHVS44E3SMvyZUrIQjnRBx64MsNL54IaNp/z4dMh/Tv9/qC0dF5Q6amqGtEO7fI+q7lA6ybHbvxPmJqPuRjt0VajPkWxxcEKCvg5HVCEabA+Eo4t9/Rwq22+Hg2BdlfY5ikNe/TSWdISEW8Xs3/tvfAZHXKiWeTBTDFxmVRG0REkqKLHRK/EqGhgMrXs2cieCywL/wLd8ftcjwOYkykaHj24ybvksS3BpgvUf4zx9ZPLgeoG/ZCosaXJRXWtUwy15Er85MRJiXb9UceFpBhJoatCJSAxd6Ls1+Gg1HI0PbNZ/WckF/341C/FAp+NQ4Oo2O+qFH7evXTCl5sLFnra69oQRkv7bGaHX5oVO//Q9f2t8IN6u+hnF2pMGAbqEXRYyAvNlZ6K1Mu8Ap/57wdati2ImxiEhSIiH7vHG0FtkFquJf1aUkS6COVYrb/xYJuQmmHBlm6oKthofq+K1i+HWWPahAh4Su97CZvEpC0CyfaWJ1vhIelny5c1Y+BJVNv/l+yCYCPj8TN1acLIW8kpH7vt+CELbOdLf3EREG4l09eC6VAqPeXc80h2Bk7mi7ZcgfCROXq0+JbJQAZ/RBG2pJEDId1pqZ0ewC4SHUFi1UCqKtTLx6aiTE9UBqWmyFAF+WuTgMBjJh4UkHWzFrCDpvRd3FaxJBUzSj+veHTOgd8VledwxGWosPox9y0Dg3Jvji+iAZdIDy3HaDgJ4fKk0eMKkGvwbtq7pPEZTHnjpZOBaIHA4QHJmFqkEkxUxFvaMWqiV/7+4vDER7ZKI4Vturweps4dWx9looGYHjhkJB6Lr0uZOJUA0y7gerZEczIJnh1vd/DYHo7X/pGr2DDcCYITbA4EGGS68jfwkeIKC/p/UuJxi1wuP87I2jQtnAOug/5cBARPOq8oEVmDyQqJH6UEEuA2szVUJorx/K1JG8wv+lBdJ7cOmL9zMBZ5B1VZbGv6InJ1bmxzohXZKDbfAvzf93H55h0SWhkwZffJqcO+BJlj6j0/US8LlrVRkIJCR97uIXXfMO+Byw8/qdWDEQG1T4baVJ6PTlm2zs+3vhlNdWhtgRZ8A59pNPHAtDyh/yE96z9IKssTqr9n4P2CBmJ1kcCEMSdMluY6M9cNqG45l7hhv0eVTVFdqGoVyMkd26cCOgK/KKctYVoCT0IERIgYAWvrK3GBztglKkbstnTwWJF/Lf0rVJqKPBXyFPKBfe2DnqnKFxAJ4rI/rPsh+yL1yY8TbKg2PMygy2vLQcEQmNPznghzzEyNJZiz1AJ+uocwFnAz9enrJZvBOGxh5dqfI9RgaphqNfMixeQdrdkccW4I9aZw+b+8y1g2gzd1Hsw2wIaMgoEREgof9arlp06pfDv5ABI6qGJQQ6N9lajWKRDfnR+ec6BJhz7ySxFdWA6fT3rjKhEPRJ2y9viYwHfa7EROpyNdx0Gk1lvx6CJv3A9bx6F1wPWYrJE7aFd4niX6tp+lQLrf5bu1IEtby+07IyKeAvxX/kzzEMei+uY3D+ajYcfGXkNmdPATmlpLzS8xgUQX/0tc6zZpg97JoTxZsEIex8E6utYUhVkMDu19AMMnQH+d/9TgSp73PlQSzhqGfVm7rjXAy5v73Zzaqo8Kjq1NnvNzGI76pahptcN5x2EPrKfZgCTpHtTla/iCghPXGgb2837EHuQwmnKdBl1cYwKkhCb27LP9SQzIQjd0r9hxvwUHU+dOKOL+06H9Rnxi5mg//RL2oax/BgEtvP5SGGQcVTSurpidWQli7FliRbDYTHlxWN9wWheoOH4hmqudCtoU8gWeKhoXy1Xm7BD7kclRP+GpgLf1WUk/5XwXmHU/2+cTyprFAqu0i2lBQlyY0kI5XM7JBR2RTJiux1tpGVvfcezzn2npFZFOFbQpIi/c7v3+c613We8zz3/b5fr+v6nM+JfURYqvJ5L7AQijIu0/5uDxiAJ0cuad3jIIPepOBlvBI1P7833772eAB2z4/x+GchEPevLMhWJSG21ZvI3akPfnhWlu7lUes/4dKJ+uskRO4UuT6q1QdLvyxpWTazYK+Z9pH4FRLatQzYtivqh+iRX5Uaa5UgdHGxQ5zKLWNKZVJxh/ugP/HAcSI5D7KTbmHzxUio14t4ILQoBfqGL3+UzqiFb/QtD6JvRCEJhgEayy8dgB3Lfd4mlgunWT0O5XvjUa5v2Lz+4174zBGPyQnKgk/5u1XO20TkM5rwynlvGD4ovE16w1sIbGvfTciCWBQ7Lyu+KEcB6db2ZclcCviyr41H2cahvv7Ed1xjrZDZ+5SiPPkCzOm+i7jexaLGPsuLgtPd8N5GJtUhjwK6UOrvdJOIPB/mb/Lq94BXmkRIJE0LzNuuJwW9IiIpx5spDsfIUO12Snf+TD00fV3qGsZQc5g5K49ZeAgaHNM4N+JKgAeTUck6SkBlVmUfOreGYJfvyKxtbxXgVxgHpOXw6PHcrFT17yHI8urWXVqoBuOfTrc/S+ORqM6zO6xCwzB21TUuUbMaTPl/WRm9w6HoxH92KzbtUMc9wzQrXA9GHk45gs44lCMovzV2rATO/ImIEs6tACxzViRndygaC2w6s0TN4dE3tJ1+t1KB+7yl6dVtHFriYcwtOTBA9cMN7xo/Akzibhgdp3Lp2zSr8+GdwyAfFWDxeDsJLpG0ZKODscjfOS96pGkYXsmZXco4mQrr5/ei1ohYtHt1gCmSJRROihKSvw00Q4NQpQhWKg5tYcFU3XwImB6P+je8zAKHJ1pTMo4EhMvATscIh4HQ3yPBKjTNwLU0ybGPPw55x9+X3+hFUBaZ6zgSQ4EDTyKMCRaxCBRxrcwq7SBYTfwSd9APrpy2yrA3wCH8j3PKBww7QHfpwNJMdCa4eTWqynHhUSoD48xdkT64mQTXD9/OhJEflwK4pUio+9ZqOW1dH/goWBgJETOhQd7d1ev/c437zZ9IzDD4PE5QG6Gtgevc+oyfV7GodnHa9PlTHNReP+rI+a8QSi8G93PwxSLh8xVdFKduGDLPcTxhQAEbBZ1BtcNEdO6z5bFDFmWwrydD9Xo9BTz0HgsWUz3lpD/ufcflfDDnTVl3TSgC8OycE9ULQ/r/SXztE80FSitbru2rIvB/Xi9VRwlD4jc+M1rb9oL/gKs513opZCmSF+l/EdG7S8+W77j1wofPR9+EfC6D/msyjrBDRJaUuWOtv3rgrvKRf7LjZTCwj/XHag8RmRGmMcIbPSDg1GeNKSkF+j/HihK6iCj3RFfxJfIg+L9j3nL+3gjc9YwahY+J6JVk4vczYYMwG0Ar9nyxESpfCP5nWkxES2Gmj6fpe+D5quWaOk0VnItKw9maEpHEYhw+WSoLNAKuPG+RSweaHzLOoVSedPw12UpOyYY8TllGE1nqeoJOToFYOHplKDHr798NU/jWfdFBkeCYX8H/4gQRFa5EqgprdIOzZ+jZT15B8N27VcXgF7VftivXPltmwDxDcPcw1esDrpg9TVKMQK0lorPJPelwacvANf9rI2xzDDBTPlP9hd05RFOnGrxmpPkXd9LhpH/6131G4ajevqk7P6gXnrwrHM0UfAOli8beijQktKr51iSjvxe483g+rvslAHMWrLRwkpDhDVPchaAWmIz9u7Er2Qz1XZNPZIww6Dm5+nF/RAtojg5cPByaAhmZl7DdZhhU52NsvL02BNjW8seOV3OhUMt4sFQVj7o004zFJ6lzk3aM0Hs9G7y+Hghx8cSj6329W7+DE2Byx+maRFAjpPZKcpgnRCPtJItN9ZgeqBhp29w5WgVsx37u6ScT0T3bHLlgUQJcjb0ibGVQAVnZvjjWjhgUyC/11NYPC6OqtXjzgnJ4+Fp5avp6LOp55R7TTOkH3Oo4Cw+dMyz9G2LxNKD6uOcBfwFlPNhctoEpj0qQ/C2RFb0/FpU4hKktCw+D3T/3Wi/nKjD21B59MIRD7xrwRUGVbWCtcZXfmb4BAjYfXb68gUVfS0pSI9zaoAobftu+rhHevTOQzadg0bdNq9N3ltqAqRCr5BLdAATxvsY8dhyqZ/TLckkig+Q3ena9knSoe2UyrPMzFvUvhF2kU2oBR70Q5ci9dDhwegv/UwSDPHReC+YLkUEnxvo+K30mWIlPe86nxKI8ocqms9ZkiHuo0ndCPAsmo0MLyb2x6JBa+fdz/yGQ6WHvX4t7C3QesmHcnrEIc/GWg7p+FbSffNa2lt8IpixaOt+/hKGsR2dXPpoOwznR7MJq91IY+CjW0muMQ2ZtsXlCUtR1j95bvOWlgPUdrndtxKG0F3/bcty74c6JdrL8eBZM7ayv/GEhomSXZ8+GBNuBJgUR6NQaoWROCy0o4dBpGz+aIyKtgOF0dv26XgQHFQPm8YMYRHiUzXtuuRpY9RRoTN1q4Xmg5NGg9HC0KiSiv75EARMmaTIjsRoeS5/kevwlDs2kSvdu97dA6MPU2drYRpiXeW/PGItBd765Hyb+7IPXBr/QKKqDnvCax4+pXHck9rZOyGAjcI07RCJIB5XLxR7NgtGoKWX5Z49IJ3w6PUNOpPb79Wy69LxMPBLw+9MrKdsOj+rbuK8alILPwbtiyto4NHXRJVMxugLUkoxr6GYJUORkSPNJKQxJLhf9mzUfgWTVT970ZWRgrqliuB6DQZFRtMKsXb3wr4NU9TMfwZWUN/68HCQ0jTsl7n/EGj6wNt57bh4FxvgbW2RRDFIJlC49I90N6ayRF4WJcWBv+Tmlc5mAIOqGl2vlEFyaKdRtuZwM+62a+dJa8Eju24TKpP8QnCRKCYleSoVh0aG7XyQJiKXF5EPYBIIsyzJ19dpK6DSlfxhuH4u6POF05NdqOPkoQUUxoQY4FpQIFzPC0XH6Q/VFrNXge1Hj6/jxWjhy7w7hg1w4ihGT9xa5lg9OiZj0KEcCsCgJnn+oS+XG0P24E5UFYLS7ne17OR6MJFJdvLio52AnJoddGoSYZo5H9/oLQHTfhYFfl4ho3wOX5fKEEqAsxaZGPMqHK3R/G46SQ5Fdfmxf1P4hGDjWnJMuUAKly5yUYmYikumxsuNs7AIzImsHTXUVqLurHK3LJKAWg5nUlfJeqOkT+FlZQYCNcueZ3CMkdHOKzWUksw7ej6UdKjAsgSiZMJtowUh01HLBsol6PqzMM++PZudD52rKn5PnCOgIe/Usrz0Z3hSqCfEdJwBPGo/LncFYxECgFfiU1QZciyo8Pm0IHJUfx5R8waKXYP8u898gDBJeylYqJsAfEhYusVH3Odn2oySEOsf9e6eXOUvhoandmhM/AR2s+48z5zn1e6PTzjOdLYGFy9x/5hUI6P1PivDBgiEIt1N7FKhaAsEcbA5c43jEwqeelD1LAd5PDSd9U6l51Tm/MP8hDr0cfOaVavkWBnC2WXPTZPigOcyelxmBHF9hGjd20+BEEElGoYkMnk4NzpGKkYhplMvoSm4pvOdlG3BtroXdEnOxbEoouhDRc3Y8oxeGRqctKEIZED245PKZiYSEF5PYtgfLwe23kF8h1T+uH233LmcNQ2iZntVMsBIaYlLa4G41sMks9Ei7hiEumwMPRvLJkCxzxO8qby1cfrOm67wvDvFb33971roNcFnt+yO+5IOR95ncmGosOpa2XH9HZxAoPyNXxA83wNv2xzsbC0T033Rjm3nsIAQOiL+9wN8Aka6B8XeyiWg7X3ot1qQFEnaskgQNy0FWe11P+BoGHTnJ6Z5B3wKud39MLmSWwSNtvdz0vTjUdMhXmv5BC6zYaov+lakA67WILI2rGBT/VGKfJ/8gcOXeShetQzBf7eM3zExCw4XfLe/MD4DVhadmKxYIvCdSjCwkqOfw+ZaQv3kL3OrAG128QeWHFHOx29cxyPNlf9sGlWuVfzCmH16vB0uHIrX633Go/TK6wszSCi+ZiA2LClnQLKBSfaMJg84X327/yDkA6f1k3MunWCCyYQNOUPNnt48p4uzzATji2x6rxRwHRWkYZTMVEsKlxQRv8fYDd+BC2YH5Wpj+jpFq16XO2avhFrdTW8G/mdZHiKEJluNcdOTEsOjm0kxKmRMFUNAPukrmdDBUmSxsj6buR1zBsFm4DhYaBW3GXuUA7/Z/4nMTEUhd4VWeuHEd9C1TprqC8gD73eO353YEYsZqB3JTeTrucn158E8Ejxu8tLxTw9H95dnBPycpcOXY9wSOv0nQ3neyXv5+HKr9aiSjAINg8aTOT2a6CP6J81zw/ElEg5cQd7BxKVzMa/WfHswGmXLLIwnNoejOUZvP6lLdUMBUIz9pVQpeZ5xi65cI6O+hmICec/HQe9884YdnA2RYfjGBrWjUYRybc721CyTt9RIW4mugh1Cxs51LQPPqEgctbKrBz5C+r9bHGbYY3zIeexiOOEzadttnW+GiFeYx8xwB7PtWnrfoY9HnwUdTEZOtoLPvhZ3QMSyEecR9KLqPRVqhQx7N0m1ga6gaezssDk6rN9q0Y7Fodp2NVu4CBQTxbjqz1HxWNNh+fc0yDoFf5KRRUjGYOm2WZEXXwfP1tlJXKq8etvf4OLFUCHq8DgsfJeuhxc4hgbIZii5RHM64y1CAtNGnk0idz2Uoju+edRzSs30VBDNkuCzjcWdMnwyvXYUJcoJxSPP85Ie1iS7wWXv69dbDUkD8WntdVQTEvp4yxcXVDZqJNUmnM0rg1Ls/T3ynqPnf7/L1S00X1XfUL+9YlkBlx8qk/FsCenrFaUanrgRGV/5dffurDn7ncHN+pZ4/qeFizu+kPNjoHaLoJyHQkORTpKP2rxM/m9TBjVYYFKDlqhtshmKjONVWaywKkxf3uX6cOr9/hBtM+tVC1i+GZ9/ehqMDKJNYmpYBdDV2lp20tVCwPotMRCJQqv3bte25HnhXc6ZzproQap2VpAcpRGSwn691/9YgaNYE3NpdR9CRvZ21xU9EfAmXBsZiMkA0zPnPyRIcmGJnlrjORaA84xKLCP4S8P7j897jKwJOu78Bm52hSPZEW9W96mFgLTu+7yypGs57lvLpZmGRwXSpUUp4I8xwa/dbTlXB/ehbD8O2olCyg9XL4HkEC2Y5p/iZG2Ad63rku1Ms8tXjEzfkIgNun2RzWkUD2MwESB8hxiKXHrnO7K02ENZJC26oyoCinNqW7/w4tJmcJdw32gpHQjw2f/M2UD1UYsbvDhZtrM6UD8lTIFeTZtRqIRNqbqi9+2FH9TKpez8HHzQB3+xrhrzxKsAJcr3iDIhGbP5ctmZTJXB8IvRkt24T0JYMjfNQ76WEYb+kRWwJdCj9ff9JoxGYNj51B1PnoCg3y+lVQjGI59Jqf2FqgqT49YQ2ar095P56fKS7Dy7JZiZJ5qRA94a8Y44WCbHpDzzb5usH+5eYEU3zNPi3lHjpLzU3KJjbLzFXusD54lNtNZYWSD4hijujR0D6OzNLxkJlUPxChelqfD6c1ienFveEooSQZ8b/f2+Ib63jtVsej6Fpi6VYWSkSVZ3Ef/yvsh5kh2eDfKkqpXHMOYC3OxI9GEv+Wp/dAdzslQH0s9XQk7evveQOHn3mpkxrSmfCfyKigiur1HtYKVcW3ghHEyz2Ub+6qL7fFiWkNR8JK2PtF+tJeLRpfv+r/HgfHBYIS54nl0Puw6MWotokRLOX46/1XyKMPmy/iSrJIDZyb6xcPho9ejRisJ1AAbafx9Uebb4F8bM3uiyK4lDDj9LkqUUKMJldZNSXSodjxg46nxfikJ9FYg6dRyuwPPCb7j3RCEXGhy+nMGCR+nyUpaBYKxgufvwz+qsRxpJbC3mGMYjVjOvcnSXqPrcZtGT+IHA2uGisYohHiw59Z5l34kHptUmcniMOvn5qVvVqjkYjupmvZfz7gUtINN01sg4S9Nc/5RuSUOk5tSdd77rhBJ7hM6H6CbQX3Fs9pUJEzPlfaQprq+HYkvsbH1McLKnyVK+Fh6NDtHKCx4lDsJ3swRQ0lQO7N5eE6mgIqPQjjplLvhsi3Xa1fai5pF30/fPUKgGJzfQyfavsh5sldXddzClQ6+Lw3xrVX6qP1JzlyB+E6RZll9itBjj56tOToRAiGs/49U7TdhAa+LPShDkawdu68aHtMBEF0Jx7dmBqEJqmxf8YrjYA256C+fNbRPSZN33uuRACkmdkaLRENdCL1O/Kv4tBkvp1vjq3W2Fj8mDPuYBqGNT850L4ikG17McCCykUOOzL55B+shg46YjR9j1xiGb30A3ioWz42GbOysJIAfezsNGtH45Ota4+8l7OggLJSda7shlQXer7vtg8HFk9VDTr6c0B4aKEMyZRbyH1qui65EQYsmUe/fpCOAeM31wKy1+m1tdd64U7B8LRzV6Mua1eJtyPmYn4LpYB8V709vEL4ajCyMNB7GkHLIkpXEtxjwe3irjQBhE84slQloo+0A/We78NtUk+YKnm9GdAh4R8RIL2ZFTjAVP9H+dZ9SJg/fMw5OpaNMJhNRL6OwigMffoz03VYvDs3hs9lhSD4LKDgbZAJ7CVmSfIU/Pz//+vOZiOR746+SV6U41wkWNiZ2EvCfomeAn/SUQjfpW+PjexcrAmpP48NoZgXLfmmMVqKNKXkmTTlSwDK5WgZ2dKEHz949Pl1BuKnq17dF2s64cnx5xKVc+0AHuDpn4P9X5LupPvfw9vADPlmuiWU6lQGM8R+uJuFNpX6KK9KdIAH77dy0rDpcNGS7xK7NEoJDx2ijM8tB74mH+/MWlMBZqllN1/hZFImcGt8pprPwwcVr5kmF8CJov3NUOodZvVC2S5P31QZ34y/pJsCVQXPuuaoXJLaOOVCTvfPpBY/+e2faIE5FWnx4yUSKhVOMNhzaoRWISZyi/ppYJHxN96npko5DggpehxsBtMZDWH9iKoPJIY7SM5SECfn8UIeip3wYSoKI3OjWog35o+rWpMQKQYxXD/hHqwS88TmsUXA2wIpHHXRqIN5dnr3TUd4LhZhNORwUP2tXhaJWM8ej5s6kZ5Pwh28vvVvt8mg3TJclKWJhERT8oElH3qgNuWDl8GXUlQIWi0cuE5HiHb8yK9XpkwxxFU4DUYB/odspxN78PR+wGhVwU9TdAQfCDOZgaBb97Vmzp90Wi66Y6iy2oTOHZ+TynUQWD0KOHFj8/RyHTFmX5xcgjiNK5YLHbVgtKqyoN5dzySvUR0zqAZhrqqlH1PVmqgi46kO3gajyTy7MpbRZrgVKfEAdqHCJSs+YZmzKLR2nvWOh6zTnDtfKiks9AEVZ87Zfy68GiLZ1SB6S4BbsypVZByS6D+AYfWo4YY1LQRaXil6C1ISOYPB1H3xfqWBW/9OgI1Gj+trqKeb7279ZtesQpY5HacOHIiEkk50EmcX66DB5bkXHGDctg3lew1oRWJpCddlWdr2iGNBAqiAgg2kv0waXk4xHt/cnBznAIfQ3re6udXgeHv6OKdyTiUvnokX/9KK6yVX2qRty6h5qVGrPwMBpnSs9acNkBgyh6XW38uEc7JZNqbMceiR/vPUQywbcAu/341raMKjpglZCVNYBFrmORWTXEbHNi8IsdVU0mtiya+w6tYdFa55XCbXw006NQq2liRQUSyVa7sezh6NLmslONDhuji5CNmt0rgeaKhidVsLKK7p6Z5tqofBKvGyQFbwRD6XWR8ldoXjIGH3Zi8+gGZDjwbw/sCBWvv+YZazwGtM7nOW/3w8np206sMX9BNXJW4TZ2PTS/qg4QtyVAwtE/WxbAUDvKrZ+C6Y9HsXjVec6oW8uoO332eUw4jd6LrHYoiEM2vleEz72ohNXCVf7qjAvIVnJsW8yKQVCVdl935fvj4894Hg6YsuOHMnfdPj4T+uXnMvWMZhFHOSL+rl3NBTCvyDIWLhJTmfR+Adi+sjad5/MdcA0R9lfn5b0TExZleiy/oBR/P3WLhX9Wwn8fK3oSFhCoeNARWcXaDPTMr64xVGmzSJDxWpXKg7r68i8sVFZBsqxRUPBcCh0kD73Nuh6HLxAu1a/0J8J1WIfJ8RB7srJ76uv46GtGVyU0xh3XDBVvcyfYXleB96PNLYW4iuiBStDfO2wZ5jfhonD4FBhTPWs6/wiKOR000oj/IECRid6Ka/RW8vSGQcvJSHErBNuYSP3XChU29nnm3CHh5+ZB0Ix8B/YSdvHj7bojbEAh565IKOfP0Gh/picj23/iGLZ7qxX80unv/koCwjfHhOEhAxiq5JFqhfnifYLbZ3UOCBVpGlv+/F+v4NcoB8Yv9EHrQ9mISHR6em350vKJPzT0NtRMixH5g/fykQd2FCH5GpeJJ1Pu9mtLCpRhYAy3d5vzeVlhIcLTp2VsLR0OsKTt6VTXQlGjGoC/bDNdmfBNDDkcgifnm3C3GBnB+bcSw4h4DzlMhuhr/IhHuRbXcghU1f3quJuwIY4Gd1X6fCzESdYUwvnugUQ/n92MORLZEwvyWpUpPCJV/hMns7dAHr1odb+8WlYK3S2pMuQwJjbTvkvLy+yAr4pzQVZFSyHlxX83rFgnRrygfzhTrAgfVyP1mY2UgaGzTPKFJQLy7bTjC/i7gCatW+vuO2qfGJGuTiwQkEie6e6vEDvg+WZa9OFAJr0ZuPTnGi0FwXOqthiAC4Uevh3yO1sDoh4+qhJEYtBOidaMcQ4YN5+9nkznJYG11vE59NRaJ15WK1wSSAeNyXbMsgAzFrStnKfOxqGjW287XkOohFbb/iqhzh05y5+OD1ljUhH1Vo/WyDcRfrGNZXmDB2CZZpaoLi6QTjrWpRbWBRkRd1VPpWNh8admh8A6Ljj4teRJQ3Qa8mxmfQ+oI0Bghty/zBxbdFzAN46DyiekXi62pUSwY/h2f/EXt0++n+n9NGo0AjXF622ebHJBn0jF2J2JQc7DdLHt0L2CYmL+nteWBoy5KfXqA2i+HL1/79t9bOJXqPtP1qxm6Tn81LHgagQo8xiODf/dDhAdeqOpgDHhNf5w4TO3r7tFwB0+TfvBLPXHz8nAsjFZ6P2Og1skrl/vbgVLV4FhuuuAvHQIMZknHedXD0RWpFh5pTBU0Bg1Eh275wlKoDzGZJhxtbSZtWVIegfpaxGDtONWbj8gftTtNzT03uufcGT0gbu96Zzy7FtL/NNJ2ZxMRtnFzPLerDZhfuN77b4cMMkqGVSX7cKiyxd2ykVgC+ooVnrRNqfC57+kBaSrnN3f9E9W/SYb5EeyCBjkUlBb1Ne5UxyIhuSds1vt6oWN44eeWXx0o1XmEvxggor0olU4WKo8xx09YCVzIA/IZlfXs0Rj044L5XM5SO7jGCqbMb9ZC56fz2sd7cSjxFHG4zbEP2HNazrq/jINlyl5a4nUq55xu++ronAOix+WdBvhbgPbLJlPdWhjqybo2Yt7aD3/+2zeXWNIEYWkFGtbU+5qRo32ygh8G/A/mqSihUtgnfL305BIWtVvmB/Uo9IFFGJNG6vcSSFKVm2ej1n/Gj9LwxkuDcKFtbuIalgTM969Ol+8REaHieLxnWCewbND6euhWwD+f7eC+BTy6VNJ5ded6L9xa/nRHba0BjLjxIuJLVH/8t3YvVakDYgVuXHkq2wCv6tnT+hnwaGFuSeX0j04IuPTSVaK0Ag6f4XxIEiOg9P7QsOakZvCrZyMJlWdCc7ngzEOTGNRPz/hwNmQArBTzRWYJFFgt79ayBxK6tXN6oqy4BMRrheg+fqgFvpO6j2+gUMQ+6ZyaSqkGK6zosxP9MYDjDXR7EBOOBLHjvaiiCu4eyHz4oL4BHPYHxXYdCUdmuUTxrLpqcM7sfhvW3wAsDSwWjyPC0V+BX2EXWTvg1OUi52vGcaD19vbe0iIOaYb3Cx9e7YC2aL4vA9S5v19Mv0zQD49eKw0q/1FpggfEcnVt3VQ4oNHO0uISjVKfXUosyiuDJrVn0tp0VUDz3Szh42Qo2r29MH1UswuSBvsSGOPJEMetmkS0IKDwP+HzyUpDYEI+X/qkLRU6Xrp0380gIBp/9+U6qWIoeC/YnnehEYxVd847vA9FTzr9tsUmsuDdPKZWKSkXnpmZilRbhyPL5fws88ockHpEOUkLOTB39+Yu84cwVE7/zVb5Jx7oRUsGv5iWQ2/f3605ah1a7dAlH5cbAKnjI81L34KBPkVOEm6TEF2HzqJL1ACwC+2mWSxEwKj1l+U7ilTOjPWunjFtgetDamblDJXwX1GYIbcCBp2Z0XaOr2+B7PO9ykGHyqCwndFmLACDforTHVzuQmCQFOtoeKgFZjmQmKNZLDr1fHGH/WY7qD7R37dxyRnsDi6PxRnhkOkLzNneTy1AeWwVk0RoBkExCV/tFAxSoJBGLp5tAYFZPUrUwht4ZLkZUMqJQaWXXZW+0/ZClCPbRNlcLkgynFddHSQi3/jkXlqDBohSiO9+jnKBZxBbanE+Cn2NzAyl7euE9du5H02OloHZgI+b4VEC2s2dP/tJrgTccCx/03drQPZvxpvp9lAkn+txaNixC3pf8N9psaiA47XcNRGeBHSc46UJ89ggxKdcsk8vLIX4akc35ztEtPI56tNLbDtgb4uoHCwqBvW5imaDWBzyNFuQz7apgfd7NAJYj0z4e+vMLvN8OMJWqNYeSG2HsBdaBzQ6S8Bi95q5eDwOLZ5fNdsf3gti9zXVeTWr4KNYWBwLLQl5JDJwl6EakL4mnU/iiAa6A28amdkiENeKcj3HXwpMXi05YNRGhuM/r1DObsWhOVd0Y4mtFZqsOCucxCPhVF2XwggZgxxdorla6xNAi02svqyuHoqep9UzRUYjsbQbm8vkfij7qMpdeC8BlsILd3ypefKib7aAZw2B1iGha+SXCBgHjnK/8YpF5+72af4THgDWxE2DoaIkUOk+l+R/h4Tm2mk0PvO1g5pszbGteySwu/L0w8PrOMTsw/wqMq8bogRyB1tf1UB812fM9bNENOWydblIsBsGfm8O8p2uAWPbcU6+eQKyVlEj8Z5Ih4ZIAeKr9ibgrY3vrrwUiW4vtjwVP90DJ+J/u0Wdr4XbTs8a39gTUdaXdIXI1m4oqOkT5A1JgQ8vuo4cvUpE4h/uRfhMdUAYUWLCdyQJ0tTb3Apc8cjWQMv23nAFOHEffLhfJBfu1Ev2rOqHIZ7OD3yXzQdBO+KK315CExxy3HLgnySilIULO+HCg2BbetFGi7ofs6iWHhcGEgoXaTH4IJUL9p++SKsKplF9cNmmH4Whw6+Vv+072gs850MHGbyyoE01w+TKGBGdJJMG7ksOwFYueXvoHwUk8b8Vm7RJaCtE+X4MAwJu4YSyhJ+VEDn1ueNBUQxqiZIra2fKB8WFA0Fe2FQozZkdYTcNQ3b6cb1yJu3wZ/QFYfpkM8iYC/Gp2eNQ0OwXTHs5AmN0ojWyMwVS+EIFa7VjkZiYmlukYh/ETgcu8u4rAtW9OxUu1PyXHvwr1GbRB0tXj3Q/kSuA5aDlWbprJFR+q1ixl7YPLha06Q/TlcBU8cUnLiIkdO+Z67CdE4KYS4VfRlpL4UyIbZTjqVjkfE27dSyhHdiCbV1P36yEVkXNqSA8Dn1s+30OPlQAq8Hg93y7ElAuXyNyGoch7XefdDSXa8EmhP3w1d5KIJlJbTytikCxnHl5F1/XQbHND57S15VQfWZWuv9oJGIZmBhd7q0HNfrsr+5J1BxOG51/8j4SBfJvftYLQMDPWtN9+m4lLLLVu7NKxCLGehsrheh2+FUoohSMSiE4dOHj20gcmltYezQ3Wg1+biazna/zoWoucNeaFI66bHxtsPJkuKvCW+ku8QronWeUCMWxaG69O/HJaBsEFoRW3NKjAG8XS7M9PQ7VTKWUYnoTweHVi9X91lQvPjV0uEclGonfvllWV5kIJWIjXu/VasDuWHnqoHo0wvMmm6u6dwNDRQ7XSBsFDE1kpFtZiOhi1dY/O4FB8Kw96tL7pQF8aEQPOx0mIRNvweGuiAY4MCyYzUWhepbp3zt096LQfTePfze5W8H19X7lZwZlcMwt6aRcBwb98esrbNavgudpNSb/VTqAp8YzxdNLYag/S+HD7x0KPJDSa7VLqwDsoXUL459xSJDowb/WXQPs1k8te7YqIDr3NQrhiED6tVy0HtdrwUzcLedTeCU86/Bf19GPQE24+0o/7MohicOcLJtNgSj9u17ffoeiXL4fa5T5Prj7qeTqKfc46NoI3vGk5gAuMBcUysug00Ei8rcSBbLzBbwYp0MRpv9Z80TPILC4y8osVeBAANe/4WlKRB+cMV3sSQ2QKlj86FQEBQ5RqJ80jkJpDzlSg6k8LPfev+ldRQLYHFOrf0Pl4UduDQ+9qXx7DquuZnMBwV+6lpsPqXz7spHjtFhWHcSnFRkN3kyD9z+7jMiCkUhgeZ9m3bU34DEtJUNZqgGO0biDxE9R6DbBcMRJsRl4Hq6l+deRQCZdPQl4Y5Bin+KRG84dIOiy4V3sjOD5Ed21aTE8ou3actjR6oWEqr3aRPVmaB5i03Wg+iB//iRGIIACDvdm73H/RaD67YxJQGIc2hJgfzoT3QrvvrQ7SxrgQCRv8K0vLxbphptOhkRVwub8544rEinw94Jl809iGJLG6+x1U+cU+TRr1f0yP3hs2LQ5Tp1T0WIfRknkEjCr/bao7V0JAig6o7I5FJVOxA64TQ3CTSbuKC3LWmC+htucVCMivgfWjUaDHXCdh1tkxLMcglGawNnHePTD8Mlthr9dcPmyoFLYgyxw0gww1OohoE6N8ZeBgU9g8PAMz4esIsgcDNgzOopBk93f1k16e+DFmd/TOrcqwRePD4upJaKI9nWfz8p9UMS2JKde9BrKXouWCcqSkPXDa/QO1S/ArbBNIdiwGFwk3HJTm+OQv6xE8exYH5TQfruRUJIPv171uJ+k5l46o9pjsclOkIwbaBHryACGzPKGBi4CCnvwtADxJcBkeeCZJSoP09XcxeVURiO3nXQvilQ2UBSf/ZO70QxTHX3cHBrhaFEh4ift4hAcKEzfUaZ6ktFj0UoJUzyailOfeGPfCSE8cko8f0thXeCaE8MQHt3f6FKsMK2EiCiMpaiCAziuW/ywex2GDiYL5u2KZMEVO81nYRg84Jtm/C3fhCOj84tbjF8zQUWhYVJ6nARzIuZfHpWGoz/GyfbMUSlAilArbjpcD8kP7YIWtKIQpu2B9oOyDtg4JCXDypwFA/0/mz/r41F6uIDLdbUOmO3SZ+6+kQ1ZGbyHipjxKGPKvn3lfjXIvqqR+qTVDLcqK3PbjMIRexOGLCrbDm3p7WHesRRopW74ujYO/fHJhfEJBDlyzIVFa77A2M/gRLaPRbQXMxbOt9iCcbvambbZati7a3k/4xQG3bhPObgTWAdq9ffjDbqL4Hq5c/8iayRSUrW5vjTtC0evCj7v2X4L+K6p8f35cSg2WdU+pKcL9rgbzzrmV4OproO3ehEBpXVIiskatYDW+lvjkmkKBEytZJTIYdA/w98+Nj4t0GH7RMfVjgLzY65pL+9j0Cj/9lhXVQtYqfpEbNp7AJPuBeM7vhhkc07sVQK2BV5dYZiY3A6A57lZZoHWGNSvp3Mp5vAIVAwBpflYI7BzMrtvH8YiOrvTNEqBCKJGhSy3//+c+DdPpUpqztfRTvKvxrQDTZqmbv8fAqztph94F4VD5/SqNBUUBoHj+1b+zzMZsH06VP+/X/+vWx4pOcZBaOYvVuD58xYaQ6TXy3hJqPdtXcXe60E4dtFleQCbBfPZ7FXVpUR07GaZwhvmXtDgcpvfWcqHqO/q56dGiej4uiRL1/1mYH56gPHkRhVYn391+6J4DJKzETHu3F8IL9TPrPI34CG/zphbmTUM3Sf+kl/oHwAhB/mhDwMIIg9xEbykSKgeL142sToMzmljrdN8OeA3dN64VxGLLniX7qcZ64YUnY9aZ6ncqFyY/0dehYjEOAfVzHPJcPMkU6FaHQXobx5Xz9uLRddYrJuenyMDq5mkX9w8BWSDxr9KZcWiUu7xaCmhLujIJN/mxBHgYUkJN5s61b/EiqtTH7VBwm/u+4zVXoBOxlTp1WKR2SBBKWSOun5cf3eg0B16+YWODRzFobDEG3xv9ncBElGkp+DiYaBBIcjiIgFlT4TfOtjRC2mG5v8Y2EuBvmkU789OQoZfKhd+UwbhrpUVe8E7BHkZtjMGVE4TE+4s8OkehDvaugvcTxEw5P93/o45EQ2nCUCPUj94h/0pvReVB/2pQjV7+iT0ZiN/WG+sFyRsSlPqRcvgW2pxwX4eEmpuPiHBc7IQIg/fGPpbVwOfrjmGrjOFoQfRB00vaGeDEWNQk3trHHw879xopBSOCtqPxq2wZADsf4353dYAhxL25783j0CZnNxtYwxF0LAmZZui3gBfOvKX7NdD0coD3+svlNvB8dGvnpJrDYCNTAqmMcAhZ2PTEMlk6vwq2JF5cocMhlxrWZZEImI6+24kqA/BzMV5q+SsTNB9bB+yZxGLROD237j0Sgga95zwyn4OCwpTZh9SwtBXsbEjF+/0QHZgXIBKJdVDD2levOBPRPJu9tkXUrrh7t2tFAXfelA50WopJExE6XZ+X7P0h6A5lDe/fr0EdDW23a75EtDlMz3fmbYzITk33/YFdxYwufW2GBeGo7kmm9A6xWwYsHi+thyUDS1fpZbTVMORaynZK9QnE1Z9fjOpSOWACwvxTud4OPp0qsTe4PcAMIlUnAiTDYdTXZZ0S4JUDmy9cqovvhdyCU/cex5WAoaycPMOPQkd3y9f3n2hH7QoribyqsFwmdlo6wz1vgwOemU9dOqHQz7ZIqo2EdAMnHEvDElomzblzfmhQRgs5b/gerQBPgVzNUvqE9FjjoEvxwsG4Rb8Xr52rx4wvMfGSK+JKC3xsvHm5CAQzo3oTP2og/oHFadjbhFRrNkVjbozxTBicvr2V78ayKLwWuhNhKKtK3kCwROF0LottdiAqmHeuDvywVYoktStKf1sOgi/rQ8dWVQvg/wPhAnTKSLSrJXkyU1tgmhlmq2soWZ4tiRRcq4kGrHfLRjkCaqGAz8+cNHWE+G93ivjEedwZKHIefanSzOYPz9ulLaEIMXUZ+K/6zEo/QJRVORbH4y6Kf1zZiZD+YEmNcxdEhqlCfb6yTwEGaeYlLdLGyAs2M05d4eAPE5d/nJXsh0sitS2fKsq4f3huDs/1Kj9pfW4nuEjgoPyz5WkTEohK6TOVdwxFrFyZSh+YxoCcSUmV2uXepBltrRd2iMgCoPOJ8/bPXCl3o0nLZgMxbXw7oEfEQVPbm1R3nVD1rw2zxklan0GqUfzUHPjx/ZM5daFYZj/fbE3e7kCbNvPYcNqcWjDgULkuNgFyhFih6SZ34Djfc+J+nsEJP7r/vuTS0Nwztdk4349BZgU934UGOLRJxovP4G9eODzta8NwHsBYamZPaspGsk7rMv+CBqGwXfzVu5KlXBNKeJqMCMO/TwaJDjEOAKX0kJ2CNzlQC+0cG+WFYt+0dem76V1gvXy6PVnJykQyPvrQdlPPKoaVb29QeXg/d6eUgIir+GWpVeNTmQUaqx53a96rgUU5uj0PYYb4GxY+pYMNwbd4X2vVzDVC4/VNHy/HKyGuqc+XhHUPM8tiax0bByi/q7ND4dOloLTs9kPtOV4tE8u/XzdXAuIFf3WPfEiA26/PkDf/QaDOsTZfkfQ5gDOf+3MMa4y+Jd6cKSbORxFTAyIzll1Q8RtHyPRU2RgC9tXXHGQyu31bpo6pG7g5To+/DKWDHUMX5acBIjI//BFdmnDFsjb0grgnSDD2VN0P9avYFBF2dSy4LVkWH1Lk2vfR4Y3us9//JcWhaIK55b7qlsgOWJh5fJqOEjfo2dm8cMgGpzBzvJdqt/Gl779ro8FlSyFjNcWEShG2X3prF4VEPKuLiQr1cCyzEuVZ1/C0JhrTIFIQjc8d+IPuJNcDTdPvIt6eoaI0HVabk1PElxo0lmVcyoHbCoLx5JIDHrAEcfiQxiCC+3ep7q17aAw3UL5634CutO0v6ggLg32ZqvF8Zw2wLcyMfrAmcoJv0886dYbgkjVlYI3F1vAKPECZtiPgE67W47e4BqAxfCRYbm4BhDp+jLCeI+E6k4dyQkNqYA2H1umvrt2sP/bXdXPimGIQ4Wp+SxtCXT/zlOuPZYJTGdFXP7/PENk7Tt23TftgH/18qfrlSoo7FFOViXiUEJW5sL9xwhKVnl1GCao/Gv47W4MTyzalDtxegwNwY/VGcV3T4vBxEwmazEfj850HpRW9UCwn5kz6NONKuhgn3kXLRCLTJq5LK5cG4DrjNoBPCqpIK3A9/SdFglVnZiyW7rfBfY0onIzB8nw8fDbNsZHBNTHfLTsbNIAHDiVhtWn5oP9vD+jOtWLOeb26REGCgFvm+pD/pMEw/TM5x/9CkUBanItw6f6gPinUV+h8C1I6t1dPXWOhMLaXHfa+xOhn9/jB2diFWweo7GQpXriL45B9+frZJjt/eU69YAClatYy8/ScWjgJ39EyKk2qJpR7r81HAjVORbJPMFYlH3X+4hDUzfcEGimG0ipA+gymBuWJaIxbJnXIaNk+FgV9ecPTQ3UDR1ljEmIQt/SjcUYRovAf/KWgKNhBfxBf5N0P4SimDu7daZ2Q8CtbDbyKZkMhYqyIXymBMQiVHCe7W8qpN0TnqHERUO09d43VBmJRg76zm+2kcGOVPxqSbgKamLtfA2PxaEwtRsdAhptMHTy9UG25RJo1fj7tiYDi+YZDXxXmFOg8Snf1ULhFngy/GEWPYlCQjq5fqoKCHZnTu3+t5IPaQy1v15uxaD6ztAcB0oXfGcK0S4oKwID4V2dTzkEdF7+TVJ0xhAcahyO80yMAE3FlEHrRTw6NtcjfWmhH6baGAqf7CuF1ulXGlg9Ero/6kCpovYvI781Jb6tBgRTTvA3U/v3nCVPu2VkKRAnPKx+cqXBvet9lrfIoWj7kYgERrMfuHRYx+4GNsHhFa5uRwMSQq9p9oWw1kH3P1xvQBcWcvKCyhx7I5CShK5nD003KLOa7G8/QgbLQ9s5LP0EJKc2xfmMZwju7rx8y5oSAiM/bRaqFgjIs0DjtZILglVbr9/sNhQwL395o54vFsVeeejRlNwO0rozfTHnAsFI/FnNDRIONRfKHRJMHgKW406Ou4xlEMmHF3X/gUdRzZw8PPW9QByYy6Y9Q4FfWpaPP7GR0JCG0V76+1bYfOx03PpmJpxz/7SgoYNFe9PHJo0uU4Cx81nPxycNUPyJob/MJg6lBW9uuc7kwqMcnO7mWgPk5dR5R8SHIYtmDYOgmUFIeJ/9rf1aHeQtcVz/doOIhCh+zZP+JPhXX/E6iaEUKrn9sKxCMWhvZbP6msowtHLQ12lhqoHSiI93x+GQSVvRv64/LfDo0E8alqI6GOfy+SZSgkFeH0XYxW92Q0Gk2/3QnnLQsVLu5fpJQO9FF39wLXTCRy0KOeZYHdA+5Ssp46eu85hXWLV0w7Ze73U9wTRYMGL1d5cjIgJT8pNczlZg90q5qz/eBFy0/11hbMcgukoexu75IfiiGHGhrSweaPgbSo5Y41FDdyJW/xcFLIyKze67pILcDcWOn+txyE7rsfS2cy6w9nS5iGRnwYpT0aGh0jB0r9JVY8sqEbiuy9fl8VBA0Obvb3vzaCRYurlBCS6CmW2PMts3TaDE0TQ8tkDto4fWJ1Uc/MCLzePrsgGCgc/YXb3sOERr/PxVMnXe7R1WuVB9PR6S+upKpY9gkcxs07jJyBA49m6uBCe8hmi97yfmg/Co28RQJe5zFzBxvc8KL2iCSB/Bm3SNBPQi58KL9+294C+6c6NgMhPOWw2Ku1G5eicr55LT1zSwkGtUXSougvAcNqm/NyPRxOjpnnMCGVDjSBRdlW6C8xYPajQMIxCPD11FsUcNmEwLXHePpq7z99U7rIQjy4Pffuh/pt7H7etktbd1IOEfWH/1eBgy+Hm/9t9SG9y9UlBSwl8JbufvyYlx4FCepE7UPhEyjJ7GozvfS+GL+K3fY6mxaNH/oauaxSDE8chtnfzcCLjiula+CSI6FfhjsqOzB9iOn+CUFKWAbjDLCM2RBFTqRGlAkr0g+lIaE1hBhkTzjMBYuQTUYaFWY3G7F7DiLZYT1ygg5FX0PUY1AcnijO/9pvLnLrke51tCBhtNv1ZTiwR0rth4iovQAXbMIrEteKpv3pGPL08kovbwecJuTwd4B9YsYHhawNCun3gVEdFDNtWskacdALMJT/ZYqHX6VPrc/3lbZGlrwNqzCi6dCrDCaYYAllNTIiEzGm0yG/6Wa62EXi+T7t5fkbAnE/C41SQaPcblRQmmVQKk5v5mD3sFg9mnaPTuRCNMhtmNEfcOeMjcq913JxTUmYt5d4OIiL30V9PJ0A7A0Pz75mQVDYmGNFclMER0vtNIIVK0A4bFCi1XzkSBW7OAyou7RJQz8kBF2LoDYp8wv/kgiQHLNW/vaC9q/W/OyNpTaXpk0aT4634KvFqmq/ZYjEMVFI3/uCSoXOptepw+nwwnuROmxD/EIVfdtPX20WYICZrYsmwlwz0mbbYoLgziJm12GoQ1Q9K5vrnvamRo2vqWGvAvDq0MirkVepdBDHPeK6exWrBqrg5oDYpCDe3CcMahHCaK+xRNuOtgoVU5VSQvCtHMqfy6RSwD312yOH9eHUgPsJXohEYhj/FRw+8Lg/DQYuEvf4UzYOqk54di41F2Btw7VzII+0o0OpMzPeGA5bXGgIl4lHHUuUa0bBCuZe+NljrbAJ2OGy3deDxiXNOT6P/ZBH8CjH09rvoCnyuj6U5vHMK9HbD3Dm2C67tmT9VPPAaJORW7r9S+o4yL9MTeaAZZndPVPlcdgcHZiGH+Sxx6/2Z1NO/2CPzyHZx2Ha0B7wHDR6/24RFfDs3vCvYRMGQ/qu19uxYKzY4d1tbFo05mcS1p7hGwV6lybFWogaNvCx/naONRL89CDemdDZQc8U5066FA5OwnifUXOKSo9owpgvE57BgfUmBgbIF6Hs/MvXM4BAEBTr0zViDDoj/9S7IFhLjVRTQDcKipP6pf12QEzHbrYiPjngH08Y6yfMWh8XtDI+9ERmDfqEFTyUsnmJWPeEAjh0fvC/htb1iMQPPBZyv0gY8gO676fcUiDin0lLP+7reEOIdFSV0qP5SrxMePvMYhppUo3+E8B5DXOcKM2SSD8xGxmUhHHLpg9JH5ofUIbLwgnG6cDAQuO9tHZ+dwaEm+xD5PZwTMP+aIfZQNgwnJayxuv3GorDrmUzCpHpK4qm0xN/PgGvO/12vlsUjAsrZZaaUOBNsXnxyXzYWd80EPmn1jUTomDC+fXQ9uu0/L+QdzIFXf8advTSwyv3DQWvNFD+wt0tILFCEQ/bdIx/0tHrHIteXhD/QAZrNYlxWP4Kpog/m18nh0GLEmPJPogTGPvxzXFBFQ7ts8rm+PR06VlfsgnQxrWu9zCzoaIbLMhhB0D4uuOK6sHD5MAS3nVI7/fjRCzVjfC+lkLDpkUaPv1k+Gh99mYzSamqApMsnazwWLOjmFnONvPIGNuauabq4F0Dt/7wmDAw7RhzWdMdXxgUpTbtn9wfngb54dUHEMh05vtrtu+nmDQ+ybr521hXDsQ8CSKx/1HmUYPNgeDkH22ll/mYlYmBpw09tDJPRpO7VuvxeVq7VJZuTD4WDG7CJ6EU9ClOqLAYlJQyB1LKa3iC4OfgbYjcVok9AlQ8Gu8N0uiDzsLb+ZRwHm9AfL+8/EI9SvG1qm2A3slDZOfmr9qOpH77irx6P0Cr1pXH0XpDC4WQVztkBzcHH0yC4Jydiu3VaVTgN3Pb0fmw7Uc9K7UaKfFYvit2NeYGxTYS2Ow+3RHBlWJ8f+to7For7A5/6xa8lwxs9qv6w+Gfbtcv1jY4tDQvJaLttesSCPe6l7fbMYnnryU7h3MUiq2UmZ5zAW4vRW6u+1lMCT3U0b8SwMqn5hICTiGwvvXM3MBg+UAvfCiHLcDgaxRXC3k7p7QVtRKDHh5WvA/+eREeeUgFSYKMf4jvbBJbsLV952R4PNesTHvsAEVJAX6LqvpBc2+Fe+9mpFg6y42kVn2wS0dU98tflpG5Bl6uuyYtMhteWq6Qt2Auq/Hae+QdsGg0sSLueupEPpffW13i48euMBauFKbWD/4CnpydtUIGW4z/lu4VFifX12ZeIQrAxGuE7XFcG0SJ6EJdXTq2P0eZiyqJ6e9+plILYAuB6MqxnLk5Cxn7R49MAQFLDDAaH/CiHYpzhz7TPVox/tKYh5U3nvPtvf8zqFMKOwoPALQ0LcL811u+o74ZTR/IalEA6yvdfmtc1IyOfc1j2r8U4QX3J7I7AXC8IS0bzbTiRE/7kmPV64C6T2rfMl2GLBPZQp8EcaCY2bWERorueB74kFGbvfVVDxVtXl19FoJMk/XX9bIR/+B0bQIiF4nBSZeTyUbxfGERWRJaUQQpYkUhSJI1KWyNJKUhGyJEsLkiXZGmbMwox933fGOtyMfYtBUon4RUq2okK88/57Pmdmzj33Odf5Xs+T9rFHY/JnJVzBcO0+xh6FNLs8hatHCkA8/93uTRoVNgwsZUZaMEj8yurjAUln4AI6EskhAj7ndMQZVwKCwwfelUXXw9E3J1Oj7zaAVFzFTzorDskYqORSuWhwUsEmOQRLgwS7ck03eRzSf1G7s+UCDfjn10cd3zTAmO7tXouzOJR8V/BWrdkgfOafCd1gIHi4QfduWSMgjXGz3bZiA3BL2VEGd8YdBlqP9E2fJiPRPpnrT/kHwI1ze+XzRwGgwSveyG5CRj7r5wLMS3KBcr3w1OszVDi+51DQM4so5FTA6ypzaQBaC/abIJoD/Ha47J8wE4fsE4IV+QwGwJZGrf9e8wwWiq+nbc3HIcmTYRofsb0QlIw5qyJABd7/Orc5JFCQMZtF/l67Xogn+vSVTVJhZGw0L4tAQTY/Zfh28/cCo6LvD2xUgkTcnfzOIAp60zdlJr3CgI6Fpd4J2Qxojet+2vmaiO7blnp4HhkEt6+7K/32ZMJen1MrP04SkWQGgRYzzwAhvuOmrLxZ8C9c38Qgjoh6qkhtfvLdkJ3xPdRsDUFt+O+HqJWMhDSIXXfDmPnD1gJ/W/NhU31lX6AVCYlqHhMdd2TAtbndcQuH8sAtQEutKIGE1sibAdJEBryjxV389CkX4sfuxubrkNDf8TtFKoll0FeuaCDoWA4KHrFT+8IxaPVuSq+fdjlce1neFMteAQaBjjchDYNSLt9os71eBo9RR6Lz6QqQnLurMRLAzF8dEc/UroeSq+xpv0+XQR1J8KL+VyxK2+46USZAg1Czv6uHBcvh30Hw3n4Uh2ySF/3blusAc/smeZ9COQz8terg7seiSG/3m8vEcmgxa0qSlSqHcPtDGUNlGCQdMx2bdoIGLr6cttqrpXCTJ9wXqeHQAsk9u668FNSEvQkOUTRIKeSknfbEoAC26Se1zHMpvX+f7TFMg8Gc8mQ55rkEArK5qwdK4fjhUuVBIrNvBXaH7fLGoG/nLQRD7MqAW+C3042memAIB5soB2EQZzvLCcUKHPBpzaVUXKsDthcHdjoNxiBNxR5vgjABtOdC8MLzddCxtyBfMSgGJRtorde9xYHzm2+zjufqgf8KkfNLXwxKqLNKJQfXg7lRrq2jaxZkRHF5fvmHRUHtKnbpj2jQb9yuzdaXBbz71/9xG+GQdejqP+HVeii0mDE//y8bDn2RHW6QxKFp+j3uOVcG5Aw9Xs65mA0HyvZGi8WQ0NJwuZ6fLgMK+rLjv/JkQUfqlbi57yTkkwEXrzkxIGZ8Qsk1LROST1Kel8WTUFaa44rpXQZIBnjtIYhmgJcdmHnlkdBX7VfJPnF1IG52QVarkAo0zwyuH+VYFGEssejtWw/sqYW/hWapEPTu8JzROhb5PAj8PV5cBy6t7adexVbBuQf3HyrWYVHLwoqay416OOx+sfXzx0ooGYg867WIRSavz+orWLVCS5UllOY2wC5nK19uThJS1z7+LlqrFdb+ht7hwzaCxvG451d/EREXtaRZbroFFIW3OrJ/NsD8zmwOqQoiyvlGk/fGtUO1eALWIKIGlI1I8+FxsejRM/UzmhntsLhy+7VaQTWs/fHzvZwZi1rId0IrZtqhLE43cPNWDRzf9kdkihGLLh5u/vstPwp+ReTQGr3rYfCwYpbuITw601i8uzgyGsofSp2dp9bBO2OrYpE9eJTUX79SVBUBqY/k1aUL62B4UPvh1G08WvJ4yPIVx4CBZT2GpnomOMllfFe+SEKceo3vrkQxYJGVj3w/IQscnNhSnExJqOGbmvxWNQNE2Dhkbo5lQagELfbAOhF9SpugRzxJY/ZbXUUkHkHjD6NjRGss2pkcrmqVmA4fx0yNdiwhAHOppwliWPQ7PeWF19dU4BpivxDL0gRRTiSynR8WwfEDrSXtaeAx5vVa7l4TGKg6Np42wqJa5zK7xZMDMFmV9EDDKg62iF774wTICPPNQvu91ABs/WihqfcQQDfVGOhKZBQ8gZNuNBuAU84Vl+deEMDSAJN0djwOwZ/T/XtVBkBYW5mV2xcH+66PDIYJkdGZoN1uR02q4dcnakasXgXctLxh8jkkGqlHhmtXWlaB+ZzwHh7XCggYOpd+mCsa+V3j27etsgpeqi+c4Mgrh6D3yuGZp6PRsH80baiiCc79uvgisScFOjF2oT9t8KipnlfBfaAJbn7c59GwlQjkTvrLXE88OqVUoz0i3wwNT5JdS06ngEqc8MbHcjzqWjTcfaOnChSNHb55H66EjWxNNXm9aHTRrbRHIaUfKObn2xIcEHTdKLbk+EFG90ISWF+l98Myh6RJUVUjcFp3S7LPkhHlytwploF+WJSzuR+1D8FZht2CWxEZzcmrGnKO9IO7X0Oe/LZGyE370MiXRUa1dmZfgrSygf9W/pDYNjIMX67x3lyJQg0H5ufkpbPhGbeujv2dRDAo+Er9+C8KLeyj795enQm4SYpHYmQ8TPHc8BD3jEY8xoxWamgmtKo/Msw7kAKuv+PFPgVHozbPxsePmbq6YOW33BORCSrnGQPLCji0V5pWcMorE1wGStrmnjTAtdzOQxUR0Wg7h/PlI1eZe0Xc6PXvSBp0GWRvaGtFo2Qhn9kSqWzgCNff88qoAb6kHeVm3YxCfzDHOOUOUeHdoFW/czkVrvqeURsKjEJulJptL6upsD9Mv1vYoArSJsinvZqjkPuTP6TY1UqQF63idAyqAllOYaE49yhEn93Le3yBAUG/jfI/9pfCwCQfRSWWiBSrYzgaOhggugCfq5n7ZJeq5dujY0QUn73vrUg7U8dU+Z8EPC+Fd060c9oTRFT7q7vuyCwDsHWudV4dZXAqwP7ch1Qi4qkMX5/baIerPygWdbHV4M9p2i7yORYl1Z3GI4kBOIvfYfREiA5Tvyj05ZNkdIMcXNf1sx92RhXhTg40g/22V6cv+5GRQ2OwrhGz/7s1edWIhGZwk3jMWa5MRtZ3Auicor0Qci1Eb22oCuo1Wa56h1AQURDsb8f1wrfEf9n6+VWQr6GkRUqkoFf0U9h19XTIUS13PibpAoI/M07wnMCivJnL3XmpGXAgOeL3w9HHkMuyYHp7hNmHgorbsg6ngzG6P3HD1R92+a4vGJ/CIvPOv29J4Qg01vbqZy/lQmgXSWgyLAaNbQknpjLn/xh3iYDtQA5Au7ZwOSMGWfL19wcuIrA5/IhGr8gDjtZv374MxCDReDPhcbdUiD0vxX5QB4H1wuUnanFYNOlY9CmiIRk8hs2MZa0QkPXxkQZ/sKjx6qaItlEKcx7ZL9l8bQSrPyW9BWNYxFO7pC7zIQXuYVnkAlIQ4Js3pxZqsYjjhPwubKUz/HC+pdjB/NwllfmxRGcCmpwZ3GW5owqqCr2LJFbrIPCfR9SO6Si0XZ7NK1CdCvtSFjhxbPVwnrDt+OfIKGQbKLBAd6eCyqM8bbb1WkhU3YxTTo9CBJbhccLlQdCt3jUr8q0BRiyVJO9uENCN85q+T1XaQYHYdWH2eAN4TszzXr8WixbC1Q7lWbTD/QaB0AgmLzjo28qdcYtFZ0snD52ktkPbxxsSHO9pcLRhIzegNBZNaqY+iTSsgl2Kp0u1T9XCowKrtKsc0eh20t/pg1ZUsNaoeUOfq4HV69i5v+QodIVVJ2rdoxL2VK68P59QC/5KLg+ktaLQ3htqMScz22Gfeu+xW6gePE/sO/qXuXeO/laIFqxrhHN8NZck6lOB2Bf9LpcvBh0plT5a+7QRrHea3OutTgcTX8O+zr841NPT8i2uvAHiLt5aWXFOA+EHT+pfUHGo9ZSsU89ANfyX8FXfLqIMHBv2s6t2R6NqPo0TzvRq8JNbOlxwrxwOpHkLB9Gj0ZtL3rMXF6oggfQoo4dSBj+QOYq5wsxPEzTE9zVAOmNJKbM7A/bYflTLbMShr6Fne1RftYPVQ94vp2sLIG/9j8onbCyKF1V6+cW8HZoiA8hL2/LhHCnta7lrLGrkecn5PLcd0sblG3+E54E9Li3zc04sukKspfuqtsP5r9MvV41yoRqfu+lyIxbN6BPRSdk2aPGWlpV3LQP/A3yGZCaHGPj+fv4L2wb4qycjt5WUwQf3fZuYaRIaFHlnTT3TBh/9lc9QbpVDQZZJxXEmn0xbTJx/87INEq7OJERkMc878YW0MUZC7+QOe258RSD8cSRXP70CxJQ96OE9MWjOMPLdrhcI9HbEvN64XQHUh9NaHoExSOJC37L7EAL3g11bryvKoRjTrP2NFoP2/VApfRaBwPmCxOlk+3Kw9M9UDQqPQY56lVOvmDwXJPhcCjeG4IcQfYfyLBYZ34PvQ5g66IZ5A8sfCHDYRzfTSpjzG7UiqdRTB8L50/2lYQi2b/FrbtCxaKNvRbRosxbazgUa1jD3+1y2+vWZl1h0ZpLtbQ+NAdXr4k98pWoh/tx4y5clIprMe7+2UcSAKl3GsVHtGli5fM3k2W4SOnasWK78PQMKn18rmrpcA71PqWlzdUTk9rJIPfg+FRgNH5Lp5Ar4Hj2r1p8UhR4fz8pKYvLcSMvrtLieckjo22pMo0Whc2WnNNzxdJB9IV1YuVYJqfwu1vfqCYjw3+INXzU6NDNOWpQiKnh/2eeg8ZSAdEnLZmbCdJDfI/12W38lPHQ8vJN0j4BuRruoeUM9vA0AUWImDdiUik+EMfn/jph5Y/NoJZSPZ0laClfAsQbT5SP2UeioU3cv/lkAfCRe26mxUgPYPNsTO1fwiCU+l/vEaAh8eJ/qzJ1VA34a4X1WuXjkthWmdeHmK8DT+RZ2xNXClZuCJb9S8Wjn4J/6U+kIJEWF+t1GmTx86sncJiUG1WoV3pM83wFhjknSx/1qYJ9VpbwAfxyih+HBzK4DZLoVfQ29qsGOc6c67nAcMlkxvrH2gg7HWlSdPMRL4WFA7b+DRQS0p+5M1stROgiv9BSYmJZA0QYnuXWBgHoPaFqjn3Qg8YnujNQtBSO+idotNiLakJN1iJDAwLW6P5jL5TnwL/rzdzYNPOr/E7T+qDEKnlZfJpuU5MGt36LPdkrgkfmratGM72FwYsjpzZtfudDndP1loC8eGZnvrmoXx8GT0dvT3v054JDrNEydZp5r+QBvl3c1zFdZW4XkN0OEvmLwU0o0yiNqBlMf1gDrhE+DdFoztF7XVR3kw6LMqd9OvlPV0KFSVl26mw6H00yUqoaiUR/tZ9Z6EgPy9YYLr1FrIdWkXPyfIgk1ilf1PMMygJWV55va9xowItAyBY1IyFhEUKzoMQOO5rz/bVFdC1k858NnXpCQUXokC5LtgHMX90SX1FLh2a8T5Wn/YtEr30fEa2IdULg4VHyurAqiN0dD7/2ORQWvBamWfe0woXZmhLREBe3z6d5vmmLRV5uXLJIsPUBQFCRNm0dApsMNX1tZCsJvO6eUqtsDkx/3ixx6jQUV1gnL7zoUxIuUIyP7uuHW3cwNTV0ciA5V7wsUoCDrOo8fQB4Ab4EXwzKqNNDPXWi+diUOfR7q+hkaMQDxN7Z+HZJpgGW127VvPOLQ3tkjJ6WcB2BoWD39rBANrs9dvP6xOA51qr87EVnQAv1Vp13mRevgOHVhWDaC6cdNbtbePN8C1oq6VzcXa6FJKoSnWYuIShZ3qtCCW0DavllC0LIWxgcNvGxciGh3q/79P/UDsOqnj2X5Q4PKOIXWtV1xqGWAk2vuexIUzAlyZVSmQ9Ksw2SOAA4RxNrfuI4kA+tTNfWSwVSw7bdKVlnBou6NIO//plPA5c+VePpiOlD+8YhKV2PRvUDzoEclCaAYEjn2VykNFHuPG2y3xqHsg2/q2h52gJqXS+vRf1QQe/OBxKcYh3Y2PDb90tAMAcJq/PSCekjSY7mQKUFAVy4LHO673wxcT428PEVocJ6fL95gAo9sElNmvrxqhrpMnqXe38w9TvhLp/7GowfxjCtnfGnwa9ScUKVQAiM/18VPmuDQR21PgZlFGlycMd433VIEb7/v5jvkjUN9//3ID37ZADZJY+PGYiWwOc0rRMrCoYmJUgXWOzRwLw9YHmP6xer54Bex53Eo5nyDbI90A+QemOmX+lkH1efdo9xf4VDOXYOOqzoNcPrn+XidpXpwli7auRWNQ/u3pX4KMeyBE/neYTw/ySD/a1kyQI+CzlTLTFcMd8P6rQfOF8TIsCTcLUPaS0HcbTPat4/1gFwzdV5flQj6SvEzveoUNF4myvaFswcUnmHlC7cSoMaz/tZNBQpyz6imppv1A0tKT5bBFhVK0n6ovtaiIH1DdiWceD+UDubhS/qp8OCVpZnXfQpqux93SUapH+pzC5ZYDlLh8YaPCocVBUUtwqO5o29gPd7t2NmAJqB9aJnsyqKghkeOWUcr38DfNIuGrYgmeOpRLVofRUFsrQLpsY5v4Fzi0k3V9SbYrfCPRSSJgi7KMha9yYWQ7KskPi9NhwdvlJr0CzGotoGhW5WbDxtWL69ZiNKBXcn2R/oSBqWKeW0InSgEL8c3baH0ZhCKLlc5U4NBow+J3qZbxSBxyFTk+hEsuF8kvdvph0HkQ2D91KEQzBepzzProsF0XxX7WhkGcSzUbJZii8Cz0TnfqDMMxNvriP8RMMheL3L4UWEbVFwc4ME5NgFbyHB5/BoJuVROs485tsHNS5cEFdubgKXX97dGFwmlbjg8M2Tu91YBWc9MyybIEHXa+C+XhHjGsrVODb4B6VnUxnGOClfOf75oE0pB2189VI66iyB+StH/yToWjDRtLtu5xqBSBZdNyWwE/ndNc47xvAaNt5+4WhNj0AkhnohK5n7/c1Xz7hAFB/Vlu7aLNMQgmrvV8okQBggs62ATP1cD98e5YZa7JOTgcmBT7DIDNG9cXfu2VA3Xn+Q8X+knoWchzi9d7zGAg7j37OBqFSzuKHklkkNCO2ZE7vw+yoDPh2+IjGlWQ/Lz+mZjUaaOKU+Yv/athBsemwIaZkz/HnuX31AnCrWQprb9e0AF5fc/D0XYIXj22gVfnRKF1M/+1eFipcImRXl7Mw1BGF/fxw6vKPQDb6zQ/oPpV/fNRDt8a4SIp7fMBV2jUNjpizNTc13wZ37tIT6gEdzowU2i2WT0XEfl/EBSF8igUDm/8wgmpPFeS8/JqODkH5/mdgSTREkBKfcmGDlZKDpTEYOWxYsaO5j8YexYxTnO9Nn0M1yH9mJjkPr+O0KPDJgc1ZBdhHdpgrpV7eQWqxg0keHz+ptQJSgrlJ1NYPJnlerOlvmDUahE56LWNmb9x/nk33+aKYUdcpZcbcz6DeU/iVzfT4VV61mH5B3lMCUeVq/uH4VU23f+0rzYBmHBtzOmG7Bws/Ga3/5yEhKtTzqq5tcG7joXNbhUMMA086LfRkjoBGNbrWxDGyxAJ0sLwsLUrbTT17bHIp8rmuncXJWQ59RgNf26FJDstSOaB6LQ/LEzd9y2coHNycg5a6QZJGnbTdXPRaELm1arjfn5YOJotWhEbgYd/sj9Jsy5uHdDr/CIZSFM7raOocjTgGp+KFC7EoNEnYLaq9kLgE9hQSudTIOgQ7Wv9k1h0FyehhC2KB8es73XWqPXA1EjjziyyJwLjhL2m98ZoKJxJG1ZFUHabb9La4lEpM0otDBeYoBUfkgAj0Yj2Dd6FL7AE9HRL+3YyxKD4B1+rtckoxEMVxuyP+oR0aji2h+Zjw1QZu8Z3c6eCx9eforWaWHyeZvXwafM+CvX+WmLD1kga3hO8hYzrkl8sYAnNYJj0/mDIdRsYBsb+MTHHoPGwwIcGwnBcNH4+48HWApIuMWVcXThUYTjnJXv2yB4tKbe03MtGV5e+sMSMIRHLtgdxLHvz6D2w/Lt1qJE+JW6bCwlRUA9Gg5Fq5M0+BRIjjDizwEPnSPB/u44dCBAooqPGgMJCoFe+Y+woJ8QdiuyNAZl0xzUIysIMHnBR8q9JgaMg7v/4JhzetDoy2xGNQ62r25d4jIkwAHGaMkg07cmmib80lUggpy00udX1tHw+cDn/NRbMcilkfIryZoBZVuuuK5nTbA+bpXmRSUhcyl34ypNBoyxhK4PKDfBgp3MDjemzmCP3y/1dmGA+wF1asMmgpoOUdOjRBKqc6AjI1UGaAXO4k7FNAGBymZpwxWLqh5l1q1fHQTDA6pLvU5ZMH1ryMPlJwE9Dma/YMa8FwWt36MNatlg7Ps75APzXg7XP5eJGfAD/08r5HeCzVCydUD+KR8BCcmxSVgnBsDAelOSZGYzbB93k5P+iUebEjrVIqJegBGT2L7jWTOYiGnPil1g+mIDOW+fiDrIUvJ6TpdBMK97U4NcjEWyk6qcFuP2sDDq364zXAd54b9wb30J6NHfnehm72MIe6oaInW/Dnjyuo+XqRHQ1Cdz6mySN/gftdwv/rIeiva35/86S0B/Fu2qagQHoUgIY/tYJRS+Xpt5G3qN6QsiNsX2bhuEj3vzZQus/OBoP37kgxcRddE38dGnBiHK1PpT9EIAfCC6CnyWICI8n5uRFrUVaqn7v6kI0UEbPAvrDUnIYz3+SNfRNpio+6lxewcd5p6738Ynk9CmFa2xx2QQJp39dFIYNTB8MQQ7s0lA6ex/na+RXaD+ZyhPvU8e7MqoP3vAiYDM7J5fdM9ph2Zq60UdXC1UpPaeUmD6x2/uFfotqe2wv6BX7GpaHQhk9wqlp8ei6rs3pFJ120FY5aS5y8k6EFTGnVW+F4sw2ioL8js7oHzxuaXE9jrILDbfkfSVqQ8FtIqmG00QeUXA8/wJF3iRlG+uexCPGgvTh1WnEATU1sTuF3SH2Kf1KS4dMejqnT6WTEwVtB66IvN6MAMeLJ5eeng4Gg1oTv+VvlMF1hf/bVv0zwITNs/83XzRKF8XF8YRSwW7jcUzU5MZcK6XulRdHoWMM0JFkgt6QemKeaTDVD18mba3SUihoI9DJzryPHshIJNP2nq8DkTf5Fr7xjI5Qc1Fomq0F46IDrnZ19XB77VWFQ8mD5THRdYIiPbCmEnEHXf/emD3EfF5EkJBC0+d0yZKB0CvyWft9ctMiI08cItDKg4xVOwlX8YMQG5ostPZsXR42H9+YupuHGLLng3K6RmAqMuexfcI6SDmszW2+3ssMm19HsAeNgBmo+bHhtYyYbMZFXY9iUMn6tes+vkTIaqX/KOx7SlEdJREWJnikF5mxh+iTSLk371vaZR5H5AUp/4DJqeJBl3MD+NOAf5ZooJthgu86jxRvucHFo3b8FKN+pvBxfO+eJEbDWrNGu/bKhLQ5kKndcNWP8TxSrqrzMdAX0+Q9u4HzP3l/2VhhHMA+sd/3Npki4KCOg7L0zfJqPWDMJatiQHXg7EN1s4FsHb5elzHdyIS7ni5Sq5hAPGNpJ3HcB44HeCWXPxLRDa51x2HfjBAR1KUTygpD14TX3TFkYnoU7jvMdyPGLB6JPTfV8EmIPPO2KvmxaAPmyYn7Z4SYfNW8S7iySY4Wb1gcM4iBoU9uaTHTcXD3zBj45u4Jji+PvuPFB2DRBufe8UcI8EU50hHRk4TmKgNfaJqxCCtJky/9A0GeGw/KMJKxsPqf04Cb2gkxG7z9N8zZQawaL0Xux4fA3L9+UdogrFIM3H3ZJIxA8Tvf1777BQNac5qTU7vSIhXLkR172EG4C7mTY39xIAFrjjXWJHZz988vf0bGRBoaMX1hD8XuC3lv+XNE9HD5isCmj/SYc5M/efjJeYcjTwqw+/GovN3ZB5dkc2AYHMH28b+GvDaaGmU2oZFZwYeEp5bMPvGvMde3bkWflPdIy+QotF7toiYoG0pwJfirhpehQUZlzRdkwUsEpGgeoViEmE7p0Zjn1QktCSclbLSxqGId9t0n9ilgMb1kvTt3mFwknu716sRLNIyIUsblqTB6lIp/gTUwrOpByE6l7EoL72sJDp0APJnUz7tftQEQ6P3qaVP45DO81PhssUD0PMsQJA+3ATyCRUfMuTi0IWJFOFHvgOgSXxJLGZpBrG9Eq+eYeOQmFjKUO/7GtBwdOlVOkCHNbYWN34lLHrWyLc+SR2AYbIYa1cTU29vJXlm7Gd+T3NWyr6yAXiU2s94oEiHrFe4GqJkHHojUPHd7dUAnOw1CnDbSwdbBbLhnE8cIkwk5I4Z94DMXELmj65m4AmQunD7PAWdDPLd6P/YDafcv55UkKMDm6L/m+T9FMTvjA/d+bYbcv2NeJ6nNMM9YU22Wqa/kN5dKnzycg80SruMzRylg2THp0/x+hTU8YrWofqpDDgWznlpsZWAS+vTZ6djMOjbMYJmGakcZh82CIbqFIFL4aNjG/9/77l/QbFnjslPWd8jbyuWQC3r4xRow6DxLcqisFkLtIcn5fu3ZYC919jMzQtEdJFqoaOY2wK9NTYC0rPpADX9nOWhRJSePLt6MLwFGA3bdV8oZ4Efesxr7E5EoYNhvWXaLdCV3cSZeS4d7NFYUJIGEd27zQjFS/TDeZOnB027q2DgUmQ0zZ6CxvBWqgqTb6BEKfCtam41nJzSk3kQTEGGNL52ysAbWExLPMSYroKsbJEHHUxub7bcmZ1+axBmV15Ku3SUwZ0bdz6f/0ZAyo27b8rdHISmudoF2nI5bKb+muBcIKDU1dzIBJVBaNzfrHiDrRzMxoQnbssR0dsOLsdyJt/6R/6yvXu5FOab1G99ZvLtnz0FNnEeXUyeNLuSgi+BhZTP0yP2ZHRsjw2b93wX/J2zuGofWgLqFl73vzM5WVgz+LagUT2EZeGHm9wb4co+XZ3p71gkgVte5CfVw2ubHZgKUwSYeJJS3zYcep80njErUA6h6XcNPwiRIJX4fTiKgkHmrI6fpvrL4Yi5xPzrNAL0mTkOFzVi0E7fOq2x6XKw9RnIY70XB7/x6fihFgyqWztxp0K/HA4FNhibr+FgebFPE5OOQWL3XvVff9kLw58rvBaaEXiA5LubFAr6w/VG+ZBEL7wrVnrCtY5AdTNq2fUVBUWY6/cFyPZCsN/B5epnCNKdy8IOh1FQ0pOMOGViL7Rejzdzv9oEsWZug/sSKSjOTpL68EkVVF8R683bXwXausor1cLRaC9XUMK2Y1VwPAEX3c5aDVc89H2Xfkchr1fPjnc/ocOFs+ePEZn9aS3zMepgDgFxfeF4m9pAh6c7Et/D7mK4zeGXzfuRgKRt5lrHtarA5VGpuakOFYKmPsuMbDF9iqj+ttw4OsRAnUwOXxXAwdCcU4iAPDoeGria0aG/V1CPLbwKakL4H65HEpBOzWI8uw8D7k81TJfz04FTxd5y6ykJ+QxfFDzj3A3eM7vmtYmN4K5Y4I/7QkZFlro71RX6ofKflt2L5mqwapEW3rjF9NenyJ6ngpk66Rc8XOHkBqtlPyr475PQseplwcc6ZbA6leC0MVsC1PkOCxd/DMplbyQFfSmDERfisEpdKciXyLha4DFIo/ZHpCW1FJqGsgzM6kshVfaqrI0nBjm0fKurZfrBppBHmTgm5xT+Tj78LJuEuvpcd/loMMDkxyzrYk0N3C/ovqe5RULt4f/kwoyxkN/rtv/Gbjq0Z5y5Pc+KR67UuNXP27qA2/sNY+MIggdBu2T0ZMnovE2u9vanXbCbLlhWmdgIwYKINuRIRl9+T0UzztTBxRkJ82jrRvgi4ZLqHYtFjysW2BxO1UKO+jY3BYlGUErx2d9hgEXcWw0Krlu1QA8mf3ye1QD1oqOch0KwqMBN7hx1HAus9wQvb8e7wjtVz3yWhRhkzM1B+6xdDlqvpfd3vy8BNV0zd/M0DIpX2h1KY3Jyc7DrvOyJIuhsTOpoZnLyHHVjfucEA7hKXheZtleCS9E/fs0yIiJYFK0H/v+9nndiveAbKkRNXUpOHCOiGgPhzoV8BtQI8YKbIBV8JPJG3ASZfO41QP5yNgfORGR8WoxthgdOR524iqIQ69knxy+/y4G9eW4HvnI2A5XibHn5VRQq6H995Jl6HhC+DFIq7jSDks3pFzvUotCvbx/9RDEM2EWjHK/nr4Jy1oml/8xIaPVk7a2W/DwY1/j2YeNTE1wrfDErIx6FVKT4fD3EGkDvA06lYKkSxiSHRc1e4tBj91v1+LIG+PDOsyljeyUs62AMZak41BA+60fla4SEa7MOR1cq4dwx2Wuyb3GojfF2fuVbD/h97UgfCUmEqkOv0dBTCpLdUGxg1+sFLTym45FUClSNbbjaRlGQ6ZGF1dauHtASmaxOupACfVw1fMkPKaji/fGrsS6NgJ3rNNj1swLiZflR4goOBe+L1A46nAN8ISN6z6sJoM0WJYWvYNaf1LfnuGIuvFht7GnBxMLO9aHgokdR6G1tP+MtpQKaHlhN1CRRQHDF51PeCgZlFOKrqUcrITCpPOl1XhzQue4zOSMKEXSsWI7ZVMIAd3MBVj0BwnIujhKY/+dfRe7p7YQC+PbR9hbraAEk3xbHs/cx99HELtUzdoWg48tQMBPPBwG+pc83yzHoSapcufazImAf9cPECBXCA7YXIwskDGK1CNulHdwPgtyiFZOLCG75C9h38FDQo8kFMLjbD67eL6+cIyE4IiUTfVqJgmY/WC6xB+SCQfkcsV2+EmQkfi7csolCDSL1B3Wqe6DlU176Sw0E/kpFr9geUJDIUZNs/zs9MGig0GTng+DPKY6Q78YU9Fsv7TDP7R5YRU0/9nAw58sqo46TGe9tXZewFi+A+j112LmXtWCnKneLZRyDKnvUt+XvLYSEGuPOTVINJFrstB+vxyCeO9aV/vxF4EUqOatnUQtnr2gqZ6dg0MeT72rPKhaBgdp/P+3ay4DtyLDzciIGeQn5hQvmFUBjsM7Bk1JlYMOve/5vFwYZv1jSk+oogosuyXHtTD0pEsmrvYDFoPmGTVF29ypoXstMKFOpg3nFna/lhaKR27fYiC+a1SDZm8Jq5lYHtrH+e9f8opGKq7JOXUUVsN309o9fqoMggUtng05HI6GNcplP2gWwYqq/5CdYDmsnlEvE3jN/lyjnnK5cDOZ6V4IiXPLhv9L9w85hGKSZzd1DopTCz1/2X6JiimHjlqP+3CMMsuUsvr+f3g3+uxfVjkoEwrGwyw2hzPvSoYvKBlt0g3W+mWpvrQdYZmLf6b0noyiMF8bhcze84LDQN2d3A7adX5JihCnovSvfhqJaH1zi1e6KXM8AS1MDQ7siCrLmYat8V9MH0/MJOWHRGTDv/Ta2r5iCNOyPdHIl9MF32+UzGvuyIDZoMuR1CQUtTbruoku9gVOSmZaZV7NA3rZqfCKbgupkA7dHrBTBx2GG9HRgDQx5ifvWvcagD30+R6i/u2BgGvvwrH0C1CUUf8kvICPv1elVweddYPrcIPCuSSJY8+Js453JyPpw1J7+iC7gIv8R/lNFhhGP25UinmTEWmzxZOsDHSLNL31SC8kF01ntBdISAalFS1vznm2BLd7Hrm0r2aAhMqpScpqIDr08uKmp2wJB8505pO15gOE0z1Q9S0QSvBsXHWS6oKzRoizkUCMcKDg9LHyGjMQIWWEsJ+mgd3gca3epFqZ56/mcHhPQb9Ol1EVGM/zHs9ApurcO9MNQt6kSATl6UFjpPc3Qx5udX8FdCzeXn97sOkJAYV5Yfj+xLuDX5BSvuE6BwNtSBgQ1Mpr+tdzW/akBJp9y6oTO58GqH2+0bCsOWff/SP3h3gAFqi+i934vgNE9Jbc3knHoRCVxLvYLDcyNHFFTaD74za6AzSMcGh3zWq491Qpvg/xgfasUeL2deO4tMPlwkaeWWt4Kgop34qcDyiB5X8H27xdJqLiou4vi0ApPFFzS5Q6Xw5+0Fz5cAiSULNCVHGjcDbG1RaOW/s3A8gB//b+3ZGTrRXR7a94NWis7tB8zOb+i1qBraZSMhDiFvfSM6HCQN/1Is2cD2Buft3gSSkBufA5fccvNYC5QU2Rq0wCL9WfePNEnoJmc5wYcUnQwv1rRLZtNg63v/5pXnQhI21bX56w4HfTTvKZ/OzfCzZ4R/+MOBHSw+7/IuhY6DB2LyfM9nQp9O2oLwiYI6EWcFrvbwRZoPpKcZHsvFa5axUmGHSKi/zjVKtbm6DB69LBjyUAaeODMz3BuElDFaGNI8yIdMguT7SWwSfBu8khgHwsRDef9Duqtb4Vz3ep5+8NKYfTBXbqnKZNnZD5MzIw0QQOfEEOBrxJm6RedbjzFo7Ct0Uxp6ybYPJ3Ueju6AuSSKWlrYnjE/Tf6x/dsZtyuPZryrRykb45+SLyCR1OekVg5bAU4Bszq6rUUQKdC06rXMgZJ7p1Ll46oAELK/TOYiTwIS1i9mLfI5Mz5IRb725VwSBVnkXkyH+Y/J/NwnIpC618nbvFaNIH1zeCmw2GVwPWeY8tjPx5tOZ3kV2D60+FP2FtpaZVQf2lXiu0oCeEwC/+d82VA1Lt9AnryVDB12Nzm9piEuvOfm6tbMsD8a8Ur2XEqaAQi1bMdJCR4uefurzMDIGD+43muejq0DOxJurKdjAx/hfMs3RkAtuADHGciM0CyUnv72aY4ZJVl60dTHoCaM6NSsj2ZwPGq1+/9ATKapLqs7DzPgCtW/obiTI7qNttYiP9KQiU+69fKWF6DzdeWa2xJzRAagFHtNcIj2j7h7Jl+LPirhrYVFzfDgUpV1m+LMSj198PArGfdsGhcPcGpVgLmLh97r8yRkVvb+85ng90wH5e1ffhdCXikdK6mCFJQ0GRgc6l7NyjZxs7cP1wKr+OSNaW/klHaVvPTqfEYmJh2dBqfbYbTwbpx7AUxyDtaNV5DahAcb6fwVRuXwuyEqa4WEJGc/rOFutODUK9wav88TxkMRRyOPyhORFPWFuXyAoNw3OLnkRqDMtgUkxWosSIiQw9t17VsBrAZHdlRqf0cBEY8u1RESUhPAxuy5PP/5wa7lXZw+cJBvbbNvU9ISOpquObv+C44vsVxgi+oGAozfvU7+JERjlVsYZqtG2oit3dE/imCJ0c1gu6UkdGEVttL1psMOFTz9vgfuidI2C6srteREP/O/pzC2Sa46XoWeLBYiP/c068Zgkea1/X6/9NoBoMTAronrhDgzimjSxcQHrkss8qHv2sCoY+LHEZ7iaC9J/9yH7OfS9r1007caIY2oRn5qedY4D/Gg7v1Fo9eHG26Zi7TCl22k9c2vZugyydBiT5JRHFeh5RFhltg7Rw29sY/BD6UzbLqbKbvO1008vj/+hMunHz1C4Igt6Hi40z9ednyKM9diQB/Xh2yVXzqBv/dH+W1exGD7mqu3OqhtkAKVx1F92kTjLqLPUzDERGdto2TociABPuzKnc5i8DZ+26Gt3Asinq0zwVrw4Cc9NMBvA8LofPvA9ubZSQUFaQoXmHEgO9Slu62dsVwwfHXaZv3JNRyp6hFPY4Gydk5z2bs6kA7UcQRXcMhxIZNH+2gwWq9xn4rbC1cOtO1PuiAQ1z0KLuThAbwGXEffqhQB+OffnZ/zsehPevGZS/kneC+5xF21fUGyP3pdqnZg4AaaIdcT2beg90C+WuH2BsgWUNV5L9AApL4k8BiXe4F/8y8aMfkG2CgWgaP0SUgF79bS8VXBqG/AvcYL58C7SWPKOorBDTmfCK4ynYQOCqEVChCaUB8b2B8YJqAUnxf5p1WHQSSfpVOZm8qPDsJSk7SRKRiGzRd3NkKUmW8WXUiWcDvS+atvE5Cl32Jm/uDWkFHMNxAcjQblJ7erz96mIR6D1fe6vJoBT2ZIRbVHVnwWcwrSVyYhJ5oSqSJinbAqYJl5bN9mVCW0vtvZiUWSf/ltMdadYDl5QJ16a0suJQmOjQoHocadjL2sa21g6XlmdqJe9ngZk3YIzcei6z3bAxcjkuHbExUTtqueiBdvhSZJo5FXz5JvmPTy4QX+DrC2Qd1sI3b0bsnPhotzl364W+TCTYde/pZQ+phJanL6XZMNNK+syfBorIEjpWYs+wIQKDME3VF0B2D/CXuSkUcKwGrE/oSHOIIyAdtv7Y8waCxb/+FHpctBfabszYYAQQ43iW9SjcMes5Spq/1sQQYK9rR48aNkMG6WiL0EIMeuHevHB8uBSOBz3xHgxrBOqg4Wt8bgxi+P3kv6zeB0rnxY5Js9fBr9fWsIS8elR5y/nM2ogken1eteihZB7QZkaNKgEfxmlsU1cQmUEt2DLTnrgf0T9964hIebUTHPBWvZEDV8NFaLE8zSGkcVMCxkVBhoPCN/EUGsKLFzxutTSCZJrpCJhDRQlomY2mMAVP6oxFE82Yw1M7W4aASUeeuzztWyf2QvdLz/I1gFdiFZmpb/CKjhazO1c3Ufrhsf09b+QQV/CJ+pr37RkZ0YsqR8qF+CK84qd7lQIVHR9VPm+eSUb312f4HQiHQN+px75dZM5T4jI7aVuARhXgx40xeMNQlP9ktU9MEd3tmfw114NH0bp8PqoPhwCjV+dbG1QwRvVnZBa545CAysa/wVAc8nXvSLdedAyFhF3cp7YxDfw4+z9UbZ8Cbj7UdNbbBUBkmJ5NcTkQfuB6bFH1jQGNNeGbRj9eQ0NBIO5JMRMV7pc3u1zBgARqtcIOh8FjlxnWLNSJqlN7RaW0zCLoBdDcssRS4cXt/GcwS0BrL6QU+6wjY+13s1q+sUDiY2DXkZo9H2fPvxwjfguBP/JeJ4xKvYZrE4Lo/iEdqah0FrTohIDRnYZ59NRjkLug2rJXi0ffmkRdCZwcg6tqtBx3ONEg0fsZyhZ2MuPCP//6yHgDO8c/GugoNQBRnux7VFYdentroTDg1AAdXJFkSNRogyvjk9iUeMnp9uP5DTEU/iOGmMpwvV4JhlOTO9UFmnKSeW2aWBnlNu5/QLqYDP4ex7hc7LPo7+pov+FoqGLoJFt3qTIUcRzO99EQs+nZWeQrNpYF9sdguzpVUsGtrLjTRxaKhy42ab4P64eCxn4NCi+Wwvuv9KfXdFHTs/ULyl4J+sB7HlN3zKAdr899/SWNkdIYhjQ3K7wdW/TMrbDYVMLvfQevSOLOermmxEec6kF1QXpsyqAW5J3pH5LOw6CtO3+lNZB0Y0zvIka9r4J7I5yC2Eiwy7tcXUTWuh+qim/x/2Gshz7jvo84cFh03kav68KEfMBovXl5wqADPj5n/XUgmI6lTOH0ZQh94ZQqq95bVQIUDa0o6k/8fb341pf3qgzyd9C+X16qh1EJu8mEBBQmvHuJM3uqDOzRxS1muWojtm5QIy6egzbWWF5Gm3RBusvXzOj8OTgjWvLN6R0aeE9QXyhndgF1vGLBfIEBmrf7c4BYZDSPbosTHb+BIiNRDhl0NmI3zk7PiKYj2ruKK6kw7cy+n73t2pQCG3LrLMIxYVGTygD9bvh0IQZOUUIVGmHltsK5lFot+0C07/qtqA5OgPy8YrxtgxEL2yTJrLDprPfSdo7ENnIpOVrSHNMIu0i7+n9tj0clE/h3lPUwd0RieGsYlg15Gu3PTvhgk53/oqeh1BAdi6yqubU8FUbEup933Y1DsZ2uNtcsIXCR3PxiTS4J/cTROnjsxiAO17bnQ1g8u4jeytpNL4KDpr6iVejJiF5XT0WbOdfbfC/u+lxfDCP2xL+07Gcl83REdPdgPIhr8LF/GikCWm5E5nUdGcttqzSaYfTLda+c8/LoEpB+a3D7G7JO09Z8Fx5s7oXbPkcHMD1jgWBUNbGIhI0JErEDDz0440Pz2gPhHPKwqWP387yAZYabF3Q5gO8EVw104zkKAdoP0tabJOMQavhzG7dkO6vL9Z9nWS+BFJmOwJTgW8T76QfT72wZBbHjvwHOl8GZr+8U3SrGoK7Wvp2hbO8zIqI25WJQAteh854xaLHq+JTRm7srUq6OK6wbHqRCnwRbrK01BMxc96c+D+8GcQvpZE1kJD60O9b5k+tYTYymRlzK7wHxF3P20XwOoHWP4uAWS0Upv8rn8T10g31Sx2H+TBhirGGnE7MOd3i72dMluaHdXaXzxqgE+N+M8nJrJ6LIQt9XfkRjQyjbsdXRphh+T3f58hTEIFQ3OF/ZHA/+pCg4W7Wb4t264UL0bj4w7tMIdL0TB5jFF0aG8Avg0dANLksUjLKveew6LCOCXeybVUZ0PVY0X09aY+hPjFAZn3lUD5yeTq5NHUkF6d7VKbl80OhPrI299pBpkz/dsRCinAz4l5LCPZzTaNMqYwPZVwRO/itQQmVQ48l0p7dz5aLRfN+/jCybXoSt1ly/XBEK0MqNgsZaE6vvCsT7hDNB5QMzYin4Jp65X8F24QUKqf4wN6PJMv69+49PC2Wrg6mKznWolo1UHzzzTh91g7Dw/nRdaBQtbDrTnM2R0lXK4gBPfDcRhI/XFp8y6cAIrPH/IKOnFhPTb9S446ILxiCZWwbsbWh/bi8jodM1AHkdOKnBlOf21MamH4VM++tyRWCTZjPTCa9Og8ejysPhqPeyXtjbmNsEihsnVgfe4UnAfFtc62t8MkhsM75BHGJSZXGl+d6oUFLijv35QpIMFw4Dr3GMMeqYrphfJVgr/rCuHb4vR4ZBz494s5r6uCPedW2a1g/yH91gfr1LhQ9yRm7MBBIQzqpDIkOuAqQaBS70deRDXw86hsRmLVM+tPRX6hYONhMUXFgtNUNv1LYynm8mThvN1t92iICPUxOr0YBM0ygXHSx3GoxGF9b6+kQF4KexrCrsawcJVW8VrMBa53fMrUPoxACPG13kwyg3woOK+d39mLDp8Vd31MScDXmQdqHHe1wjpbPl7lhxj0aE/Pqx51gwoUCg8nWDcDEF3XA1vUUloax57d+khAxjGL5O2f2qClbgfxTMYEvLcWzZKfMmAovP+X49pNsM+P5mzevdICD/ZZmRBZMCx46L69sw6Rx/xPL+kQ0Lp7GZXGxwZEGDM3xIXEQ75JQcmlhNIaNFJgg1DYMCSzB9DH+NI0Bnxs/t4joQ6AlX28m2LB/ePmVefc6bADxHuE68JOJRgcunuVgEZJCMXoicbUuFp1aC5cjMOkb3HjWK/xsKJe/VmJtPJ0F8kr8i7hUMap0xmb1fGgG+RqLcmNRis6h9VppXGILvfPSOzATjobckVIiVHQHnkiun+90wdw3bYp6lhYWWY6yk/7SX8vVzXXMeOR4/vV4SRrkRB4l7lpHyDSOjjGQ0qk8Gjov7Xrc0FDMCbNWODT9Mg6Lf/aYYACalfdXfjZfJPg3+nzREHGsyW/ryWUkVEt44E3DjTwgA506Btyk4NsJatwFX4hYhefe4z4txgQGVLIKFYqQH6Fr7tGg8goq+05QV1x0ggaocM7C1OB5PvZIY003dD5miSu00IQND4736zdDh418zoZgkeHetUk0t5GgaTO64eTr2UCj5+xw3Ng/BodVMtY0upBNjfmTkSb9dDoEPt9SwmZ1ZdmMXe7CyB9XuRDtub6iDQkLYYwORJqqtHxzHrUvjNnzMRfbceturuBCUx45wm+8aGGcUwpTOvoxtWB0cNrN/c8Megvk+/7JRDu0FZjF+8OjICqPd20RKXyejl16OiT+IqIPuDL8M3JBVCJTA2P39h0NUC3btpCRVwW3zC4I13OrwisSyrrmIQv537ollHOUyXCjTH/UuF1B6l/bU0DKqcqwwvo3UCn5N+ZufDVEiIPFO5dzMOeffHV7oVdIKqcAbxfmY6KP1N3uj8GYdoKyrPWc93wn4tJ1+mBYS1lcYT7yriEHl/Yv0B7U5Y69FsUVLMgLAvWaeVS+OQ54jQh/ftPcA19/ConVkDjFkE+yA3CuouSeWv7eqBr+wCgrqmNJAQuRwW/5Dpx8NkTQ+p9MJ2insOL08DmNSkFkZGUND9gbE9qXKlwKt0V4nwuAlM5W1Nq5k6kDnZKd9yvQy+hJnIbJ1oAnqsgOBkAAbp81insyyUQv8/vwvcb5uAL47nlSjzXl6+9X0ynR8P6nMrPK8e14N+4LVjJ/1xKO3ec2dhyURwUtm9UyqmDv6o4FO0LuGQuYHW+A2RJPhu8KAjm5kffm3zkIwiDg0vRsay3xuA73zJ8c+eIeDmvxB+qjEOqecX+SncHgAZDp0Kp+VGSCskFLu2xaHvePsH3OEDcElM/xGrHoIBw0J15B2HDP+mpLqploKu1BW92TkEN3g2wz4wzwVnGB+X/QPhaqJ5WB5KBeewCTfxGTxquT2/56BxPxjVs+yRVa6E9318Sw66FKSEvVqZF9APBE2jHZ9bK8Cw8JP/az4King29uODbCp8KIhRVPGKg5ePa0w6crAI48O9M0M/FfL6nolYPE6ARH2aZUwqFnnPvMSrLySD6g2niZ/iFLBKlmvUXsYi3KFggsX7TnhwkOfLpykS/JEs5WXnJSOJE61ONSG1cMzhQJLqgQbAh1iuNttikbjsM46jHbVgyHen3VqFBveO1DmGeGER6/g1urh9Hdwhbnt0eYYG6t+KeA5kYNHNwXmeHXoM0L3bXrZbMw+81E2S6d9IaLi48eW8JQOqxfp8qYR86N5Zk1DfRkIEuLVeIceA9/Od4H4/H/q/DJv7Ho5FxxvadvJO9gMftVTT8EM2dHjaBbmSyEhhujPWZ60fnsRpP6NwZYHQqfNl8h5kJJvWaCbCPwB2pXz5Fs+yobdEuYNiQkYvukPPOTb2M33Zodqr7lmweGdsL2cbGWGdZrIDaHUgLaRnFvW3Hj7/Ka1wasSirpXuNa3pMtjupsO/JU4HwjN/RXc8BtnUmQYRpsphu+LUPn5mPMSaO4a7BYNMNDio1dZ02O8p8hCrSgeyJXqhSyAgsxy9Yb48Omxvq/F5sNoMH6O0JNZ7mL6e7ZDhhXI6BAq+P/1fvB0sv7cKqB8koO1hk0cW7OnwYk9ATomKB/gZfxpnjycg9dzYUpfXuSCh9GbvuGYVTB09LxlpFYX23KybPXUwBzoPOrxLGaPCXjHd6TfUKORc7KQUWJgNLfoNwd9mKuGXbPoR+nAUasnSzgo37YPlvzVXpNjp0FnPFh1bTEEN9wkLwU598E4dn3EyphlEGzm/2jB5fse59ouXUB/sFDl+42ZzMxiENn2IZuZnJ+71P/8kD0DpaG7d+yo4QTol+0w+CnGf4zdfk88FBc/ArgDuarCmvo7w8IhCXBtsvLEf0uBr6YkiTzUEvzvxCav6WHRt2etbl1wamKmp/ZXJbwS0V8xt1ZXpg9onFvkPNYOb3+PclqRwuGTVr+5biEfv/5scTcxsAu2wW29nOcKAffrcnZ//K+G847F83/+PQkpJVKQoZSSj3lE0dCCSHaGUkayMzDKyyqqs+77d2957733aW9xUKEVSEmVv+t6f3+/f84/rcV7HcR6v1+t5PR7npReFTl3Gcfz50wwHztwr5frTAG9CAloDqwhot1GPsLltC+jeDDBPZG2Eub9X49m5iag3I0fAxqwU+Py/Nl29kg/KfSZx5pcj0GvS8zHfa2Uw0pxoHfU7D86ItYYJhEcgJOInMFNRCq/mWQvKbxSA5Bn2Z9b3IlB8FNNNiVsYYNGtrftl1wAyD6onY5mikIq4P2bKEwvOOipDFimJMD12i8b4CYe4V8t024swYBqzoGmrkAw6mflXupdwyI31khPzQjgIT2/I5swnQptni9u8eBRa1zrzLTSABngM43OGcQxMvLOotbAkol03rvCZuHVBQaiLaZZrHpiZW/mO/qIgxtEMx0dONLjhQnTquV4HEz3z13bCiAi4cK6D3jTgOyX39bZjLYRIJDRfcCUiUoBsryOZBotbo/Nnj9bBokU36cBVIjrQqaviEkQDm8UHarGODbDRMP/45aP/3fNadAnrKAcBXJNxUlouDGX7PmhVjEReI9f5hBXKIUPwg20YIR8C+O+tTTFEIk3uutU8znLwDHT8JHI2F5yjCzq7piNQln9Y9CdRDCz95c093ISBQw0r0b4sUWh/6nI5n04F4KPnFV615kHsvb7b48GRaPyS4nemmUywDpdt4yioAA/l4dMWKhEo7RNEXFnphIKtb6TTXcWwOGzv8iubglLE7kgBuRPMK7onNY8WQyjWlN/Kiz7vZY0ZEyxdoJXr5Rb7pwiq8Ylt1iUUVLi1rrLHqguaVW3F+JSK4VVuH8fxCQrSejHcWF/eBYNlab/3dBTD0fdB3aF7qIh7r5FR5q0uaK23T1QQLIGu1Ijx0EEK+p33lOXEYD2w21S75YrVgPICAXR5cejFSb6zk+cQMKUsRpWrVIPZJlca7y0cctm8Sum2RRCxMD7760oNSEbxnTnvikPswdWHdLRTAF589XxNewUFvmNTjSuRSOey+t3Nf6ngviV3Xt7AB1R6KJOFRpFIMc74RShDA0joVmpgcJVwNmZl1WAUh94uhcWeCkNw1NfRlyO9EhZWPjzPfYtD8YkECWI1AsLhm7axkxWwEOh+XCkHh/6Jtuw5stMHPf9VB380aoT+fhuvOHsKuu2ykczQ3geNjyIEtGIbYexvzXpaFQWVzr7flXcnA2wrbz6UPmYLI1+kJjsz6POSfS9txyANOBpxWr5EB3itqsq0eT0SLTMz1Hb79AF2TSwyhq6fTOILv0lcVJQi8Nz1ZG0fTAg80U3jbIK965snmTooqP3HoOE7pkRod7EUdIkphalrZemBhRhkpb/7L+VnPKiejGbz3F8G9wYHnS4sYtBh4cuEr11xUJc5h6m5VAquiuE/S45gUX+eiN4BKX/gtR/LTduuAozWMFpai0J4Ryd5Ac3nsDhf+d3BogrGO5mq2+Xw6DjFzOvI/gqYu6Pwmny8CWb/2kcSLSJR34xGbX1OOfSxF/7kqmiEM0saOJJ0JApk6tjb8SoPJh7pMlw8SoVbI0wavMRwJGN077wsXwEIcpWvifwmQ6/hOoODZzgi3WwXmmzLhysfTidevxoDIUaHTi3S8+FrYqjZB7EUUNzUGfvrjkCzB1fnxoRB+LSC3cdHCuC/B13Nl5ui4dpE+/wpes48RECfJLb7QLsj8WcqjQiBd3dcdz+loLs44//MHN+BDiebvKAyAo7L8wJzMVT0SeXP06GNXvCTLP6SYolA8OPzjLlsKvrRkDvNz/8OeLIrr5EYELSr3mkMyKCijZ15ee9NLKDeqfteG+Xw5Cgl8XAnDvH9zn5oJhkFTUv80Y8ul8Pjh4PR8Yk49EM1gKXZCg/sFc+IGIEKiF/9G7ntjkNT0zfEhZJ64e2U0r3bHAgeWyh/d6H7C7cIc1j+TA3kV9zvpK3Qc24682yhABbZunId369WC1N8MulpZ0uAfb+XEJc8Fs1+wbrYo1rYvaxpvHKwFMRy7uqwWWJRAry/XcxaB/9du2PPb1gC/wgE4UpvLBIOYQufPpIDCSX56hvN5eA30fDu9hg9Nz7LvXLXKBtwjCxnp15WwOkjzdpH/oUjG864xALvMjgifJBp070AylWkj2vTzzPtmPQ3alUZND0sbmU0oPNubqv7o6YIlP++yJBEK4WNVxUFrTsFgHs+mf3APAJNsL78HWuPwH/w4BJ1sxH6fvH7urvhkEbv+Vvd2/VAtuEwk97fBPcumxu0iOBQjETjhxOurfBq5PjV143pwNrgAd79RPTwOHM6R3srKKyVRknT/f9cyL1l1f0ktG20JHlarRWK92+FnnHMhIQd507nEiJSn4rxEh7tg5I2569qnI3QLmGe7xJLQQvTKmTxuj5QEl7/xF3YAC3m2ZdS2yho0VX/mtQv+lwze3yJSWuAP6Yr8lxhFHSLTCS5dpLB7N6yySg2DS4L32+IG8Oi1JSjw+2KZIjBTRkJxGTA4Nf6y5MLWHRRQkHU4hcBujjvGZKC02D9i/fzvTdxKM0675x5civE746zSQxzhjTKedzrRSIKDbzKfYyzDVQ3fPt/Fz2FE/5mfVeAhAYqHwj2GKTCyLKL9F27EBjrsbh9jBCJbqtY8gVrpYHuiWXZlqfhwND49FkNRCKP/ISLISspgPauq8gciQDnYc7jw+V0PdTz5/CMqwCT61XsKvMIaqVDYkbz6frZVq5VoV8Jd+X67rPkIDig4qRBZsMgVyxmifSyErDXZ98TJOl1cGfdoh3GIIZIi0n973WAq1zg7twTCyOaZUlsbVj0cNzr1fSeeuiKMklMUUiAkMft7r4DWMQpxp2s1F4PGo7piWtb0dDgJpcpexiHYkWLHfS3+kF68Z6kVGM1+D5eO6EQREKXf8VLNu2iweiH8n11DVWwdM9h9PozEopVxN0rFafB3mSOaExZNX2/2fs/HSeheZFa1/7YNmDocnzb3lMPh2VJ04sJJHT0QpdHWGgbeBQ9MJf4WweDg0Wlr/AkpNX0/vWXc23wtDWt22wPAtcsNUKbLgmtuTA6yfJEQ/bej47bFzPgRhN412KxCP820Z5NMBr0Xp9duO2eBh65Z2WcMFh0OP2a2/f4GKCtyLBXVKQAp+n2XikTLNrX1pDrbRcLYUQxhR//0qAzZBehXgmLhlVtfs3HxUPKnb5duiGpEB1S8eXyFgZxCRzml5oph13+JpcT1qiw2o1jYL4biY4/8Ck4oVQB6+1i7bfvksB/9/lzEv6RiD+9QP9WSQV4OXfHHXtIhYKc58qO1ZFIQegBbd+BZlBMXok1e1MKDxerCpSOENCGdlT9vrvNwPhQbrr3bRkUtZFwL28T0IJI8M7DsSagWTPUFviUwQ3GRe7OJTx66kua2c1VCcZFjkd/HiKBAiWz1vdPJPIPd1YZO1QO2aPN+/9yFoPTj0/Z935HoKQTduXOMlYwN9L8U7u2Eoh6ewemvfCIGrap+tywA+R41QxxPXXAsLjZfAWRkQvXjqzvZDvsJBTp/Omqg8t3xCwXPMhIv0zVXESxA8qkpPLvH6sDdSrVlLuYjFQL10xa+1tBDetvKTOQDo/OVkse4SYh18MClZYL7VBgfMNvO74WVGM+pZ56SUbLhANj5voDUHSYt+C+XRYUPx5fTFnGo3N3KmZt/jXCl+aAtCTzQgiSslT6qo1Hnd6aCkvVjbD32NThC0EF0K61/6kvPx4t6LczJks1waPqXUrauAJwLlX5LeOKR3od5q98PvSDjU1ixc/lKpATCtCBDyTk0Tp3aPx9Pyx/+DqgP1gNn8tjlMI+ktAtNu1Yr9JGWLtgMfqYPQ1YzzSzNfLi0d671wMHLzeB6Js6zNazNOiQP21/2ROPpqNb+QifG0H3gsF/fucyoEkwIsLkEh41SP8zDzJqhsYidc5ethoY/eG2cl2L3scH+34pfGkCM36T05Wx1dA3Iz8nv4hHyUUuOMa6fmC33M2YXlwDTj7LN/vZyGhQjH2/XmE/1Is93jmIqQat8i4msTNkNJzzoOdIRD9ste8MamvUgDnLf3dr7MjIxF7o1+jtHpjUUVLn38mAzRNSt3GRVJS5e9fei2PdQNEbWftqlQkLnHvSBp9RkWz27LjaZDcoCMmSFI3T4XagdZ2iOxW1xHo4czh1g/eQ6yVqTwaEeJ/e4tOlIv7R5GPnT8UCo2xGrdZOKWhY6zAZa2LRl28L2amfK6F9sdxvV/xTeOYld4sshUGBqm9efntRBa/dW/S1/3nDaD0z3ydjDPo6yYD76FEJgoVZPu94/cH8iMyiKRcGkS+Kr3wuLgTy8fgeIFZByx5jyhXXcGT0+bd3v04RCIvbyxXiquFvV7Ipi384wnMqPqC6FsJDsUMnClyqYbSHIHfXKRwtvUbO80xNsJymeuvOtUZg0i15/0wXj8q0DY560vmQsc0qv/heI5yfv3XnHAMeLQcFsedkNoLOY501vd8N0Ln8YEyAE4+YOKFC5EwPbOF+P3urXQXXVs3UTEOoKLTh6GHulz2QceKesu9cFViIDTL3UqioviDXaWC7G8TSLErHLavB5NSLD999qOjLgsjp90k9sKvFvO/qWCWo0BsgGU9F8bOzOiGqjWDz7MiP8ZONYH7497lLnVGIO04r4sD+ZliIWnn7uyoQcEcMxd4eJqAvLzOmgn2aIW9jbk/L0ivY9bg8b9CagFYpzot6Vs3wVPqFF+p8A3J3YwXGDAjInTK9ldKbBCdOtxXe6c6FwcK/UtW3MeiUYbLWp/lkePXwQdbF2nx4xiqxmbEfg/g+fS5Zsk2CCqlAwvzvfOBQfDViYEr3EUHmfI+2ZujtqI4Zdw4Gx6B9gx2xBCRzhZGX4FICH0fs0oc8G0B+3d2o6Vc4Yr9wlnxYsRTkJdwihV0bYE/pH+ZI8QhUkXeH/6laKTx1v8U2P9YAF59HGgVIRaCU90x/gudLoGpvn+5Hngao8VLbx8kZgbqTPfcGpXfB+uAFB+7UDGh0+dqiy0jn968+8fXH6fxocybY9HEmPNEZ1n9ST0GUpBLTYtUuwK4WPjpmmQ5mb71G2N9T0PDRLNn4751QkZn3w0g2HbzshBk+JlGQTYf9SeH33bAZOeW3XOoEN43lSrNcqOhW91Y7i203tD77SvR68wSWWkX11rWpSCj22frvyVgQifxsZDMfD3E/DcO2L2JRxGoOx167SqioCLrULlIBIcx/cUEcGJRUUGgrtF4Je2fVvvollUOEfu5602UMkqQ+l361UQkGcmbBJxMr4OEQ821RWQw62pnFk5jZD3cP6XOmctXD923pFiZpMmJ6cvduZkIVwLDTjy/uFTC8NKJeZ4NBi9kPPZJtaXBsqGnjr2cBhCz582+SiWiWOfBAqyMNFO44v1gazIOvmkMbChFERNbTX9kTQwPFxxKlrSgfNlKm33y+SETupWaZjolZwBO5+OK8JBUwg9EvRU9FIMV83TJn1Sy4+mV5tlosDoxnrrgv/BeBpvUVTL/Q+2GXfZdF9m00NM+pf97ARaAaRzuwNugDLgcedg+VXFCvLIy8eYWK6kQ/NVVe6APR6ap9IzdzwCv6yet99+ncZHjGVcOlD7ofneSW/ZANTfNXpn0EqGgbu17UmdcLOHln0eCidNAOHjgqSs/bJV+1Z6WKekGF82l8GDETMv3NGTno63LU7dd3LvXCdKGa8enIDPCs6lS2yqOiX82ZbvkX+6Dwv4MhBEUEDJ11+cGG9Nx+wjp9W74PbD+GdI+9qYfXPOl7fLSoaKk0d+22ax84wnRJ/REE1zq5S735qcg7N+RXr1MjXJhNixI1qIK2lHJh4s8o9NL/AEEC+iAy8KnBy9gs+BQrxx2gSUV/NB4duhDfDEfrz4/kuWZCwJb6hyf+BJT9j/nlu5YekHAM+vQ6MxNCDxQbs6RQUb5BGE9VcQ9UDaeLajSlQ0Ie60pMIhVdzxM6cjyzCmpuNXw4xN8E/jNUGQU7DGqWv3lsWaIHDlNK77/9XQchmZ1qsW+oyGXxratHUA+EJVko7c+qg4TRx+NvqfQ673DVSET0gFTJ11/8YfWg1XqqYC2ais7Z+l+jGQ9AkPuZ0p6PZeCby+bMMk3XQzHDZSf3RpDm55lToHNuLpNdqMNMFPJ7XFbrs9EIr178qLHibgKr2hdLNzXwSPNjUnS6sx/YCsq1VIiXwUprTOaZf1Eo3SrFuPqSA+D9fNOP8ZYBtxLHHiNrPFob1cPfD3wOKw2y5h3mpVABAhVusnjUtFyzN5LcDK5jZ1cDpGxhEiW74V4Q0MqsreKrw82ALHNbdH7YwwO7mH3VfATkJPBJd4BWDHausZFHzydAk5fFwkkUju7E1X5MPlwMPPnZTgMdCTDEz79vV3Q4+nK4ZHCHnoeEuXfCksdioXBdZdyaGo50bOT8fOposKgcWzEYUA8iDswZ+DkCenY8R+c2kQYHA6K0xX7WQbzoGJvpDSJ6lLhY3RtJAykeFv8LLfVQcySR+FSDiA6589zbV5cM181wYnsuZwLXp6P5jDwYJJg7aFXElQpNx+7PMn3LhNUQ907p3EgkcO45RHclg8od3FMe1+z/931AlZ7bj+2xqNQ9/wZiEr9+yj0fB3D7u5SdexQK/pI19P5SBLA0xBtl30kAO0v51QTRKLRDPO8tyhIJLcsZ23LnYkHjRekTLF8UmitM9MHWtwPZsCS9OyEGmGRvy9SYkdG0kwx2UK8dYph/qyStUKC/n1mn/hgZ6aycD39c2g4fPlzWC6ojgfm4X/B/RmSUWWQ7WXqvHXrSE3JxmXHgaxIst3SCjB5tcRJlb/bCuvTK6Mk4B7hrtHnoeD4VFWHYNFq/9EC1us/MjtIT6I/pzmJOpyKuP2kEbu9+mNcZbpLPeQkY8j7Bq5FkFO49mWxwqx/QwYVfD8MCwancpIh3gYyMnqouiwdUwcI/dlvx/3H3nSkRJjO6TzW/59Y62w/+n/5hW09WAB/h0XakMAVpE5ZGfsj1A69N0D1z4XIox/krz7FR0OFJ2r0y3X5wLPHNc9wsh4cOoXqeo2R63p77UWPbD2dvvBmRVSyHTJfFubgCMpImsWbo4ToAb9gnNxWUCpvmrSrHvpORueHsR9xaBwQH1RsujaeAxe+14pKTFNTld1Zo9XgnSCuevtR8KBn8XMm4UhkKquwRPmL+PglG/piYBC4SoFrV9KCaKgZFUF9hxroSIONHms50FR7OLAxzEuowaA+zTKBocxIYDx2Y3GVIhTIRqXcb6hj04Fzobz2JfuDnYsmI7EBw8altQqkABYXtvbMd8LQf8nO/1yfNITA4Xttnm0lG6dHnQ1TG3MHPzECDh78cQqqOFrKcxyPKpVtvm2wSYMHpHeGHXSOwWtX3eH3AoIZMv2vcq4nwSdnqw4BiI6xssGrzeGJQHrZA4se1VzCzy6lkwLAcxmt3/L5+jkL5k9V1XlL9ELN51EzgOgKd6teBzMcpqO0CrXrsej9U8XldKH9TBHdNI5gXmCjo174o+Wv0/katsLCedSyGg1mXj96m9/cf1DguH+8HJt7i56vqxdAza+Bz4yoF3dPii5GUHYDak2tnnvwsATGmmC/zAgTEqzrXfNlgANxpbpemaKWQtLA33pvOQXKp9ePsPAPwsOnept3HUnBqZpU+qUtA0aaVogLbVSAoMNbOAjXw3frm5NNA+jyOfaC5nKiCU/m3+Cve1MAbAbU78or0uXtxw8Rm2AWqI89++ypRBEg9cSRTC4/SOk+qBXM8gaFrqvvw1wvB0yUydi+dL15T5quz+F9AtnPCQYpeITza8LvjyUfngmCB1f39lWB+unJ4xaYWCr+EsN4WxyBh+TmHFbt+aFGg3L7SXQTh26QLanlktKT+o6IqMxUS7MmHw52z4ePlUBd2j0g0/SZEw8atGO7/ND7PylcHKRaDo4I54WjvDDcDf18RMNgK/6FO1YG088ORU5hwlJ44KPjCoR+oczeWfX/ngb4T9otFNhklvR0/cl21H7gC+LDXK3KBPcg74sUcGUkM+tnMGFcAeQQz4cTvAx5h8YFsEZGoyjiuxmW0AnI+LeAJwsEwFT2s594fieb5vTtbmSvgCim6XWg1GJwokgLfzSJRlr93jvEnug6bq9+MeFcHfi6iu080hqOsvy8T+nmaYXrGwPrDTiPIqlCyRPgJqPQ6R0hwRDPEjbP8aedpgqLn1lI33Ajor6qrHa/UO7AOums315sFEj9dbYPTqMitJTvZLvUd3G0UTjk9RvfNAM7j6jgquoMe/TmW/g5+6ciET9Lr5ld658oMlorEl7uTq/NIUGEhLxlqh2DGIK1zlAVH9y9awKFqPKidzaHev4qAhTl3uNAeh5yPXvsly0yCDdt7r4N66wHvKoepP4FDEfwPVzlN8fAl5Ii1t3M9bLtcv8bsiUMme9adbu+nwS0lw5GhCTK4EJ9Y5ZuRkNnoulDQNRqI3ikVemRJBcPlkIThDSJ6E5oxPstLA8fT48leazGwffDalUfKJOQdsvkj7wYNoiKcE11M4+CFyFNJziUiCktPyfp0iAbl83rf+/py4PFaokz6XRI6ePpRiocsfV1Cv8UkJwfSPiYcCN1FQh+OW70OqqXzyI633m3xItiQFqibT6L7/rC9DOPuXjCycdjbsVMEM5var5qyqMhP7N1Di/AeELrv/x0JFwNW+CT/ED0P3DxzqrHx+jsoaBeEIv4U8NE0102g55OP53krQgd6QVPEjAffkwS0PxNZafR8pcQ6/ztLvxkEV7XW3zs1gNwhsxuFagR0UNCwL+pgMyz6Cn1S2N0A05X19/l5CChrH/PI7mfNIB+ZV8zG2gC1wVNnYx8R0CI3hwMsNMGrZ6bSBnReyM2+ZvaDkYDynBW49asaYdrOSEanEgMlH5qR1gk8unpzSMr+XyMYCpYKz5/AQ9y5x2nj2ngUcFhGeJPaCD9FrMyLWPHwyF7xgzkLHu125Y+qP9EE5cQvD7VSMaD47Xs8rxUeTX7MNJVcbQR37hLui0LOIDAXrD90G48q3vB5er5shNvtZJ/mHjsY4qroQ//7z8YKk9pV7j5gPf4raNPBHnKNMmmyT6kIk9CycKcyCY4IZlyfFS6DUGOslrYWXU+EJspUJ5IB5/hQ9gBDObz9srg/4iAGMTtYYabUk6BugMnp5/1yuL895y5uhUE2M+ppEsf76LzmROkI9IH4YUGRARsqupSG+4/W8A7eOczsvkMLgAuPuE5UhdI5dDDObnfjO0gsen73p4s7rL2zmcylr69eP5qEBPpgZ8dt4ltEEGjOWNN0rajI+Fgrqx5fI9gXrznp8uaB6QU+dc3MKEQN2rr3bL0BDFk/dZ5iKQCDlY0fBZgoJOpOkT6b3wD7Rq693YPywPPBr9JhoyhUwG3NEnu4ETS7+V5IRFXCY6TKL5wahV7V/3eP9WAjSKqR16tyK4Bq+LDySGIUGuMZaFIPbYQq1opGG7VKaNPsOjq7EYUUVSpLhL3o3C1UYap5oYL+vvVb1n+i0LW4S4/nkvrBLrIlHfe4Avp7RTYKFcgIL3bnP9n2fkjqY9m7J6YciB4wbLNEQjK7kgUy+vvhVbrBp9XUCviRajvoO0ZCNRd4PRnx/aARsP3nvH451C2Y3/9pSkZ6pwU3fo7Tc8yQ+t0szVzwSOGyn+HCotIFaVXhOzGweH7boq4qDy5mbrV62WARk5XH/HmDaFBl2G+yQp/HmzSSa8gbLMoIORmhGRwP7g9SRuO48uFXe5Wm2j8MCt3CDV2QaIUegZlQZ55GcDP0/W80nojCx0re6CS1Ao/2xyOg0wi9sjZ72xeIyOT5qafi7a2QYLkW96a/AW659/Ib7yehtz4Fq+YbzaDJLbkvdT0LtHB6Y8ONBNSCu6S09q8Zdu2LM3nbnAM+m4HbU60E5Htd62RJYDNoiJQ6SoZmA4F5eOCQA33ulLd9sD00sCfVqGbcrwYn2ZEDQoMElKkxtPxwi64nufxrzsdqQDxE6rk2nVMwQmLyfz7SIMICbmZia+C05ijnNiKgfwfeT1zbhwC7knHd/08NBGRLH7x3HoemGi8UBYfWwyxrBCP1ay1YJH/hVWTAoZ0X77pPKdYDkXNbgPdvDVStfYpj/4lFRzpOdnDn1sHl9t1ysj9qYVR/ZUOtBIsCbHY1Ne5ug09pl33/KaaAXEN3YfplEhI7aKwer90Gz3zMarbMksBHtOOUqx0JFXCd2Rp+2QZX9z2N6j6dAiaNFJXv4STU/mn1mHZJG0wqW8nUXUsCvTeUY7IFJOSBJx4bIjQD6UFolWVtLmwq9Z0heRLQh7yjZ3u/IQgM1oefa8HwILOwV7Adh64UV7zId0CQVNLiuvMiACbCn6xffoZDWrn6FkXns0BeOLruxcZTuFZKExy+HIHWrPvIA7cQYJyOzlhahwIPF8ePJCMcwgzzsKce6YEzl45+a/tZD/pzuzGigVT0mp1JpI/YA6l7jvynRufTENI8w71YKjJx2fbGLxbD+aEfe27Ex8BDPGn3ZFs4wn0Mt8rcLIJ36lUdF29TYbNXn7ONGI5cfhFE9RT6YB17U56fvQmy9W+YYjSoSDfud9cjQgmsi4onFdxHsNNeWcO8FI6m296oHz9fCjfPdo8mtSLImkqQUhKOQCxAaH12uQR0IERfehKBx+aRo7eGw1GO1AwSeBALWXOcjtqCCBotivo/K2NRuuujbK6+fmDw/m+iYxoH+/QCn3yYICFNnW//fqX1g/TZkK2Q/UQ4nmZ/K0qOjM6ffX1N8FM/uMvYT6Wzk4BvQU/ZvJuEMiTO6X+db4HkDMnfZ3yq4c+5UErAMyJatOgtnH/VAh8O/bm0oFQNepdKjnUIEREvZbP8e3kLjA0pvr/2vArwVWyPZ9SJSOR5ve4XhV6w73hmdHMlBlpxOUn//ncPVFpWWKKiF5b33T9AuxQPWFEXzCidU0IW5g9Jq/QCNy/t8eixBJh8kalxkb6Oz41Q5AyMhqTj75WChRuA6mtj+zwAi7oPlP+HuRcH9c2bqb21CGJdlQgGQljEc0jwjdQcFQbrVBIWSAge7Tv/bT8Ji/wl24u39gyATJpr0+eb1XC3yVd7xpaAamaZi67ahQBRwJYtzjEddDYCv5/GRSH/xtiH0pSXwK3MUY9WUyFYPOFt2WQU4jvec+DH/mA4RXw5prWTAjwWzHGGaVHIOfPVZtjjFrD51BFnYV8FQz/lrh7nIKJTqzoNc3Q9lOiuvDiukQ1D7Uq8k19JyNlFXNYstR9e4tmZ+CKzwFFLPqHiGhnVaeR/UWikc9N/Ee5GBzOBbfP5oVkGMlrM7JPN5WkAaUu/6xMK6WDu0/GT8AeHBs+E7Xod0gD6d0SSltLTgeLkg7siH4XOOQYAi3YDZM0EOSD3TDB50JUWdjgK9e/69u5QZQP8Pot9aXYxEy5iEhWZzaNQRqhTt9pqKxRtYD2n1YugZuEPk6okCZ2+6+S1+rsVRq+uoQ6zYnrfNjbNhUmIZe9Xqt1yK1xRPKwsb4/AVGJRYkOchDBPJ466SbVBuR32g0whAq7Y4DOK+iRkfuxFlTZdV8tCvMVtShA46mYMP6Pratm3oz5feRB8IRg/YG8tgVi1Sef3cjjEWhKWryyM4NitXB2ZhGJgusP6XVwJh27anPvR9t8AyH2m8C4czIUzP5I/nBAloBu7TK9kGQ4AJkF+iqyfA9YNXjivBTySnrn00HupFZ4afJKxZm6AOusMLz36PjVy9Wp96LzKc+oZcTdzPHzaSD/t/DQSyfI+f/PtXQUMSVd9JMbFQpeQsYZkZyQas+CK1i7oAqNf+8T+pjaA0EXWDzeYqeh5jw6HE2sz1FlkNzIO1kBj9qixPScBzbHyh++Pa4KjimLd5LYa6B6JYxVvxqN+HpvxuROd8HJj4QixPxe49ebJNy9R0JerjTp1NR0gSc0g96zkgK82h2/gNhmt+klmCK50AHZGi8xHy4bqZKP423Te/DloK/zcrglihi8W32atAfMAJfdD8Xik31IiTCN2Ql+7/jGr3lzg+X5YKMGTgorUp52tLnaCKrHq1TY2H5ZCOtr9FCno5rmlucg9TeCyN8Zryz0F5u/qJ0UZ4NG9NxqrPa5NEDruutsOkwKbT01zzqfiUdnD6aE3KU3AU3GYas+ZBhxZN17PtuNRpsl7R7jTAjSasePK8SZojW60+8pI14ezp+MNRAdgXuCztGFDHpzIVBSXlSUgouGpXIvibDjN4tBmXvkKRNv4otnnwtEsumLNUJMLN3xb899m+YHy3WKST2Y4ypxofKTilgMFP7BHg0pewwu+LFVfWjgqMdIJjjqG4Mp9Gwv2L2TQVO29xHwVh3yDi8aPNtRDpa6T0J0yIpyIChivPYRD341f6RbQfUES/8y5LoYIAyzOUm/pvnDA7hGmvq4Big0tzlg02sL9LQv8SasodJ4YmRfAh2Bk55dwKzceApRGwnLoz282m7k7d50GhTtjTn5ZBUAfR2zvKhEdvGHc+2KSPuePPKYvLruDf5nsx42f4eisV8KZm7b54MoT8WchFMGPrJsxYYHhKE4z2kLPPQ/KcnLPXjpAfw8laQs+UjhyzVO4afMfDfpa0MMgd7pvpp2RIBwkIU85jpKvqjRoyzK1mO1LAI6F97+sx4iIz2y8kN2FBu3nmB+f+5II28zOg4FviOjEP/mYJQcadFXoBRl/j4ejLzEF7Dgi+vBco+Fhcxlwl+fdPSEYAdq3tn0r2iLQ1d3fTrq96IW3PicEb/ogkL2VqP+/+zj5NYyJLvd7wSUVzE5uInhzYdx3nq7Pr27G2V5b7gGtHDFvHSwC+eMdb80zqShtV6jy94leYPudqjg/T88pFzCdmblU1HjceD5SqhCKM9iHYh6QwaYZF9XxNBypcE4pbIQVAuW5em/HZTzY2AT91HIOR7YOs3bCokXw880/QQEtEni01esvvAhHh9vIu+XuFYDN2c/Knbl4qD6hoZPjFo7u+NhEZ4U3A9gwOJ+JQfBkJIcU50pAtZ4WxFO/6TrIecNYCFMHzzfXEF4lAmUnLeQGX8gGGe6PXnKe9SATS9tRZolAzqc4zMnXM0GrZmCHOaQeKMNdnzsdIlDT8g8L/VeNYEKkuX82IcGtz2E2j5aiUPxlJ4OPRv1Q5i32uutTLLjm5pz26SUjgZWf6nH6/dCyznXbd5IK4yZVLaeHyOjpFE3XJrgf9mgdy8xpjgY/vNKddS96Ht6llWtnkwViGTNvfl9AQNDv13UVj0Bms6nKceVd8OXubaN7Pmmw6t3C6LOHinZ/ur0/R6ELdMIP6nF8SIWpD7nEpH4KMpFg9HGK6wLdzW63b3IpMGH969y1bQo6V/pty/dcFwR/yxa050mBK8ZHuOpbKWhS+OKuHq9uWLBwbT77rwLe5JhwfdanIsY/14s7ubvhnP1MuhC1EliVaQs1UlT0TlWi33e9C3guzD3YX1UBUWejhlLPUFHTalWCrUU36Kc74kyEquBZfOGTNU0q2vspbETQiAbrfVWGHaXFcGWIw7G0moiWOjQG13VpIPDWcu9mdBF06BeUTXTS87nYw9U9wTTYbvgdOHmoGCL6CY81zYjIwDV/Xi7OD/B2hZxPw9OhlJ+XZXM7ClkCZv12QjUk250IbaPrz6Q3jfleGQYdSvNdOZtdA2i0tIqVrQkOvi3lxO3FopSgC23+ScVQVxfhz1rVALzNwcsupeFI/vzRpQ2rYjjxyl4/VK0B9qw1XA2n688Ds5dV16aKQIs1U/5CfQMM5ERK1kWFI0ZLrpZzST3QcpnJZnd3Ldy7NV7DHU+vWzzPAEW+ByxvcCeq6teCuJ7AW/lwKsq6NczmttgDFia5s/u164BRcDlIhj4v8QFPGanfeyDuUkfye+l6sO2SsMtKp6I9EZ8D/64UQWte4/0I5yRI+0B+zErPmWKfa2ZZk4tB90QOl+2zZDjB2vcqkr7/9dXep6ZDRSDG/dE1qzYFznkcEb+PDUe+KTPn45Q6QHYUPc6YfgL/ES1Nt4rJyBvDImdW1Q4sWbv3EaocQfDLlX9WxmSU3F47EStXBB7rwRyi/okg6GCvkOQTjtZO3uG+YlgEJ1Nq9o8+iYfvJwkny/3pOvYm2tDmeTv0Gq9pkg6UwWok2ynLC2Q04P6JPf9DOzSe0eW4/rsM3rr7iwQ5ktFrzoRz68vt8EtJTECkoxQWv1OZLAPIqN1Tit/FuxAitjVLRZwRaL+XUUh1CketD8U3EX8RHJCQNQm9ikB5HqfFTdcBs7Vj+HvLdfB6t+/eluM1oGR7Rm+gG4vcuhnivonXAtU4+WP6egFscY19D5OmC5SDFkuUYg08LC8kh6oWwoEaubGLvzAInQnq+knnK63FwmvNYgUQpx/Z4cGERd6ZTW1WuzuBuZksbvctDlTEzu7CilDQQOclS1c6H5WXkx2eeVDg7fdzL53ofKRyWXTu11wrtMclqomM4+FLzhnhD2dJCOVaPenTawNZzWbx5kYCZO+18dF/SkK5GTathPw+GNs1d+7i9QD4egFJwggF6XZbNLt/74OCgORMluQQWBY/u7iAo6AunOv0k9I+kPyoNzCZGgpkLQm9aRoFeQ68LPId7ANDXkbdL/kYmLWa4I7OpKBl12PvLI+1QI6L4lUzoXK4/CGnj2+EgELGynFBMi1wbajzWf3FCpAyuS7bMUtAHsEjBgujzVAUU/VjVqYCuPesZ4jmEdDGrpJX8Q9qwT6y3evvKAUonEY/BpSwyOuS5UWtk7Uwlv0ygHEqBnZKXLJdz2PRdBP+6267GnA4QiA83R8NWXnqaftXMKgpzeNZYU4H4Oq0rk7MUKHU5e2v+UUyGhEaqqxP7Ie7mbRd7TUlYJmDreC/SUb7Xf/k+Tn0Q7vgIfOeohI6H61IPcwmI/2gLb9z7v3wjp9ZvWmgGFzP+Jo3k8lIOebi0fduLbCqxx5GyiqH4ntS5yh8RLSs4Lnw369C2MeTnnKOzlvvXuE2cp+HI4sDiVfu7BTAw5k8p95Uev4c2+TJofuR8i0Ja1xEIXzlDnieQ+ewijyNADO6H/0Z15IkveiHqPPny58Fl4J758pjKQwZjRc47X1hUALcH+/3F92ohvLix3mt4+HIyNAtn82hGJyq1ZXUdtWAKyPhcFlWOGrx00uzv14M4UJMYSb81cBien9qPDEccTAcLODQrAbNFcmHb22SINmD06cyBoNi3N1mGp2q4efDf9YzR1LgJNdjj5x0DGJk++e7+KYKdnFkV0ZEJINk8stZJnMMSshsiPaVpOdezVPyQd9CIHizj78zgYi2SNIR6mWtcLLZNAzj/AaKe/47P8BAQvxWY4spKrXQLjuwmPqnFPCZ0X+Wr2GR+Es9i5fjCOwHNTI/sjXCsKv8uEwbDv09fuheCZ1jxcbsx3/MNcAdy9pacWsckhd5k6c22A6KhXmMnVfoHC33z3fHgYzutq3NPP/SDmrXeG4+j64HPpUfl7zcyIjM0BkTc7oDzMfrHeboPKu9xvv+cAIZzf64UHLIvB3WFKteyGkgcCNw1PKcISPL/OubNli6XoUfV3QorAesnOCpFUUyqi/HbV3NeAwSW/t7XC4VAAn3aObTSzya+Bq4RZDrgPMi/3oMX9VDSU5ldnMuGYVbqFYXz6XBQ8s3DHzZVXCYQd/RY38kEpCZGOquTQP36xccg9qrIYtxq1j2RCRKvO3LyZ5Pgw9XH73wvlAD1tV1Px4cIKKsiZI/pgQaqLU9qf/5ks6VeyW5pRWISPzk0iYbuRgmXTR2vxVCkMeZIKZUHI4iVNfYn+QVg9WeE/twwQhYPo/z7pSHI8mqnsHmySLIEXoifcIcgfn1fyHGdH85eMp6IGywAjoJb3lVDhXA+/3srPndkWhWqegQy54KeLXKfKtMsQAGf1e3sZhHor151+ZlIuphlxPp8rPJchjJ03gnyYhDRPU7R1wZ64GnKENFLYU+17WK7xf6sKiRNYunpLYOpL1YZlFPORixsCrMVGJRIGPJkbbeesh3PDNHmKmA/tLZAM+jOASGexMCBEKB+HddjLc2FVR2vxbB349CRgd+hZYaR8CKEDPX+PF0OHR+a0hKOArdc5sO/tDaCaTl+d6iL2VQY5uvrRJFQVy5pVOUG11A2Udxc6wr+/+c0kdB4V7n+MM6OqExcp/6jRNNYDbFmVyMpyAGttSHKeKJYKUqkM54MA2ME11QBv38m8VaJJ1TSIIXpmkWFQMpYN4y8TLMBoMi3h1mCx9KgvTuOpXmzVRQ1nRqiLmFQW7t9ZSAhm4g6BwoK9nbBK+UGv5+tKciA6WDlg7m/TA+vd74mc5TGU4TVD1ERlOxzueGb/RDN4Xz1760GmhPufjn2T8y2m4KqYq42A/ysdZS2QvVkOAZJr3NTUHPBVkEkpkLICL4sedoShE4EH/FONN9SvJfb5pXQwG0tn+qv0Tn2ePfQ73LHMPR38uqP0745EN2/NvqieBioFZnuRkFhKNj19+9LqzvhoGyrwbhIY3A1jXvoEbf57dfapma2+9gSlR8vVSxHsIf+0nXv6DnsYcdOmT2PlA7sovv/r96cCwbufGfKxW9F0nzIVpmwIfgS1/7EqvBUj3ib0RyBLp0tYX1GeEdeLgYL32aqwPzY778BQQqWrx+Fm+7/g4mp+zxlcZ1cCK3x/WbNxUVifMZO8a/g4LckscmE7UgBr81SFFUdEnjvhqvZg4wril4hCnHw9iK0RuxoXCESXlICx3KBu1N6oOuWzEQ3dCKY5um+/iA5nFJ+nPrVrSyD4YEwmnj+iRDChbZf+XpustRB59d7SJ9a73BMllu4KYfFpWsV51+NJ0Lsgzzn43kE0BrPVqFmhKO3jsO2JlZ5cDgIBNWziYRjiqxkb0Hw9EZpv2JvbRcINTk524YJkHBmOVpjvRwxB5x0UyLgQZ5FtlRCTuFwLYV31XoTUJTVXLGWSI04OS/OfImpAh+3TcyrBIhIebtD7ZfdtPAODPUVoWev76ZqUyMuJCQQ0kBZfE8DciVPw2VNYtBJnfEoJyLhK7YxhWFstFAz5orNbu1GB4eUzrbZENC6r67zrwe7YfpZht1R5NiyHAQ1rvVRkIdwtEmhj/64bQlJuB2VBFsGPHpeZaQ0Pv80X2mXH0wrszy+W02HphiFOY6n1KReBTXiP73d6BzXfoDLY8ElbZKtgOvqMgP7T+2E/kOVBPsZaAED/4l5uI9RCq6Kf125W12LeQfGTQc/R4ID0w2N06aYFGVyEuhQ9opEPa25IJTRCr4f7TuHVmJRL8Tj9eeY02B79l39PUvp0OvhDfRhQ2DrIzZdl9pKwH17LsOTkJN8B+7uqr1rgiEHa19oeCTDN023gNPtpNheEQrVkQIgwb1Q7Ml7EpA7GjMe2XjGkiTFF1IpPMvm2i4m+5CFbCe9/W74JMNpi8tOCVeYtDmaHto7QoNIh09WiUnCkAssYnA9JaAXL5/OXLqYxsM0F4pv5BrhHNE++Baet2+XmudimVrh7rlZP2ZhP/9d73gJvEXCTn+NaRZXmmHm/OW8u0yjaDLi0+mCzBibbz297RlO/BLcEdEaiSCksTRq3zCZHQsQGApmO5Hknvj3by9E8ATntsG0v0IL2qh+87tHVgdEvPn8qoA8d0t/evRVFS3K38j8mQvFE4PL/uF14DZqOkIK51n+2suqjWf6YWFea4RC99aKHLX6r5DX1fNHh5IY2yCIzHlF3UdKuH4J4a0gDt4lK/rsz/2cyP0Dt20TgutgJu5YGpxCY8u6VqvMVxsArUO2jcBxwoYubJSnfsMj86MxxZbDiJgeo4C1fYhiEh/At9qccjm8ul//YcawKVRnHz5fj0ocgakW07jEJ6f5HFFpQEiC+yy3osimH7C9eQqRxQiHj70+nhoA9iy/fiZSvdB46uhte8gCp3TCAmZqiqE8dsVZtumqfA+QsA/0TUcMZvVirTQ89LFWVryPu5kID0lVlf87979CYW31KutMPR+pzp7Mhom5Ai/T2QRUTFXmPHGVgvMCV1DaCQO0sou2z/zIaK5ugyXlo4WUE/iIOquU0Ggk+V18z0i4qaFKQhGxMDWxvcBlIWFn6Yv4/zNsGhKNHD0RH0/JD/S/pmu2wCbVAETP1YyEjTIoQwGtsBowskdRZk4kDup91pIhIg6tLOuYCor4LBixsvLuxCMD+nU3qiLRJk80hpWKpVQTArgltJCUGs/VmzEjEFqaZ1PWq0qADPv+cDKjV6fG2pOybhIhJIZOJXUumE25OE2B1cgSL7/fM36Jr2//9pXIsW6gYrFrpr+8QKjpk0zPVk6r8Gx9Ia4bpBnlKq9ousLOuN7dGcfUVHh9WSXXVINMOE4zLZvKRouqQjdxe/gUEM/e2rovgbwyvK85+cWDwNeYg7/TeKQlGttvU89AkTjpZQ+iAFcV4LBnnwcOknL4/pu1QBNd1+VCfyMA+st2v4yup/6hoh3Zn+vArFH/vjnieXAtEhT5vTBICGy39eysCpgdAoUWHMvA7jcf2WQngOd+dkjtsZaIPdxWpwvGwIh2Xs5dk+I6I/wmxduu1vhCq75yNh/9bDczZ/V84qIOBru3Hml0wpfqanYQ+v10KnmVbpaQUTlvCvLfJktYGnBzS5rUA9vDvCv36bnnAwi0c6AKQkuMBpq61c2gn/UIRHMcwzy4z8aYRKXCDjcNrn+fBM88HerVAzHoNP9optumATgOKhpUjLfCN99vp363I1Bc5Y6HVfpeSn5xHdb9vO1MJQe7K5Jz0uPRk75nFUpg//4lHR22+NAfXnZTBQbgapzh17+cyoFDUpgTmk0Dnpf1HvYXo9ATCKTZyVPDIC3WfMK638FwKcwxzt6m4B482qc7bUHQE5GXdP8RgEYbs1dZ97Bo9C/DZOlc11wqHbLLOx2A4w4eYoynqKipXqm1Y/q3dCjGXpf/moDcIp7Mu3Qz0NB/2qKQGIrMJnvrdybmwr8oz+95+eJKDtMcuWmVCtcf3LXw/FGGmhpH9A3TCSiL0eSdFrodU95ih3VqqsEFZ3fM7pSODRllB3AoYOgN8X7ut9mBezMDjjYmOHQRkvq83iPeoh7JM3QplMN7+4XxKF1LFq5I+10Guoh6Nb+SQWXKthWvttv/AOLeGoubwas1INW6nfPF9FVIJgfYCQvhENUSyrN8Fg9dKeYCDiO1AGfyYdJp2EsMmk8F6o6Uw+2Y/4zPyvqwGDi4/vCUzgkdPDCtfSgNpDjHTWdsk2Au4GPxr0xJNRLCw/r5W0DjjDGFem8BBC7RWRRViEh470c2aHsCSDIh9uQ3q6GglMly4dmMUi2Ul/s/oFmMMvzJD1QzgaRq1n3vI8Q0GMqY+jji83wM85lqWRPLjxVMzsYc4GAUvqHM/99boLGUxqJLQq50M2xXqW7gEfp5xMnnrj0gROLbtRtgXz4alDCYyZARSJ1zkoJ2D6QeZaTnTyaCxQ/Q4/JbQpKk2X6rLveD4WKfvquExjY/+SqUk0oCdlXFP4dpvu++XjVNxEcHsRqDP8GviAhgzJ7Ha2oXmC4Jj2lt7sWeuROOKQWUNEeAZ9s15ReyJM0nO2+WAPKpRKO1vR1zhGjqnm5BPiyp8xVkbsWTu/2LJgax6C6r038VbaxMNzV/8hVvRbCWjJLh+hcPLbKbD9r1Avn0tI9d/lVQ3qU/bPtfCrCTKpjzabJcKiXJ2jQtgGOjlez6n3GoqudL9bMXMiQzvSduXoZQXS93qEXM1iUmnlSbNKUBrxWfa/beBFkaomi0Hwi2m/j03ngAQ2CfzV/S6NzhG16i0VjJRGNHV66EnuOBve9Y61u0flsa5Sx/pIACa1bTuaUKtLg7/nBlaoOBEv2lemEWSJS0FGWz32JA1mN7Ygm52jIqNl9060Ch9TigtS53uHgoPexz+17ySDi/yPmeh4OLVrWSoq3EgAT8Tev+RkFTv0XpdyhikMSKiYXUu/i4b+jH1VFFwjAmqJzz9YLh355pj0fTOwEhq1zEQkfcdBzUSAV40dBGx//wfCvTmgIPai/hjDAyULcG5pKQYbM/9Y6BbtA2K0+xiQIDx9GT8s6NFLQL1L189XEfpjACL2q5EqCPeeELuUqkVHzCw7Po0/7oWgggf/l0ST4Nt5w40oWGYUcfnbIS9kdNt5a/Ouyr4Sv8o9udF7Eo7LYAxMSJwcg2ei3QpxhJnR9LuvlUiYg3zEGRjmRAWBcCjD5/iwb8Jcik1bkCGhfmArHaFE/kD2+qaQWJYBzQ53i5kky+utpyn2gox+U0/xzmlYToTJ6vi1tgYS0vYKdBOl57zd8b1x9kgCHrWUWBNpJ6PnX3ZbDDIVQx5bi/Pl0CiQ+NtPMeBqOTGfq1JLGCkB1PUZDbCIV+A4U/9hF54LnHQcVWyIq4fXH1cexH+pBMtzUI4gXg87ePRVHw7WBfNwN0XTrl8DQE8PsQaHPqcm6jHhzG/zX/OXGqM0bKIoU+rJYRUK3v3Lp6XdGwW3tuT/UtHz4P1nXJxp4nByYdzzV7/vHCymUfCKRkVGyZUvUlSQ7JFGoCMnOSKGMZB7OcRyHY8/seex1H5vsUZIKmaUiIyT9zvf37/24Hvf7Pvd4Xc/neflgiu5LZAyqaKQJ/UzXBSwLr7BqZ4Mgwn6R6DBPRMw/OVae/GmClC+LAopuLXDc5QHvUj8OefyercvOboILln8qPH9RAC6//a+zDId2exjnktiboLEnaSj0ZgsE7RjzVATg0Fb1AZn8zQHAHXnPHUWTCAw0KfhiPxIKl1J4dipjAPIMhXrIY8mwhnvLQosnIXHR2Rv59wagxSaJ31A0AYrO4C44ppJQRnvIw+xFDJxTMtr7PEIG44W+mhAJPJps35w+zhkB/2SF5cyHKkGk6IrllhkeOe6NBrvNhoJoBM9C8iwZGJoVd3744NExB6VxyrFgCDFYo9WNrISRi9+Ms8h4VMjbWXb08DC0XzYaFL1LgTJv1QljayISrxlAM1zDwFAS7xs9i0BvuvHZ2ctEtMDXwS9zOwiMLk8FHnxCBtzTh5pqfXiklgj8RBZ/+Cr5ysjjXCXsWqkxR+3g0ezZhIgIjaegar/kQDQlg0QSH+XC2Vg0xfBqka6ZCB24Jr88DRyM17GfKaCLQQG8Y6sjlDjwrzXleMlFAEdmh+BxoRg007GsR9MxAGymEsuCAWWgEsD6vCKchDLLfC6n1g9AP+KpKrtVCrdplD8qYkhI1BLkeI4PAu81rcEfI6XQEb6tmuFEQom0i94W2gNA31tR1zhbCmKz1hMfMkgo1mvpOf+fWrCy7JW+YotApEOAy0QJi0LPH1KZiimFzJEgphMaKSD/b7vzoRsGfbi6kJESUAIfiYFJ4iapEC91OfNYEAZNrEpkWz8eAv9Byd6dASKc9ku6/zc9HmW8dWA7rV4Lawa9/4KeZAPy+Pe3jg6LDMnblj97asH57n/CmHeZkHnjYnq4KBbFVDq+YxeqAz+LwwZBSdlwVSaguFkdiz5Ght0VfjUAkdpLZhEpFTD7r+tGUzwJiZWJsnioD4Dtmhvbnz/lkD+1+B85k4Qm/Aop/xoHYPLO4wmR8nJQat57khNJQrWWuoOjd0ogcgQzMuyYDruO+1j8gjEodjvjElZuGGh+Vx9glMmC1yXacatMRBQcXAOtuEKY8cziPcmAoN74ntnNfgzSkeW9tWJZBPpPpvrrzzSDOqtN+3YFBm26vopcTS2A3j9bj0r8m+DA66G1y2sYZLs/USe/ox8uDNrH3HneDOd7LRy1S0hIOWReq1hqAI77vaC3Vm6Gl7SR6+45JIRNPagF5wfAiebD3kOzJshhDXZSziYhPHN4qvj7Djg9bNIeQpcCBeu5Mlc4iag76ZXAZEQH4P7tifo+JYGM07zE5kwc6lgOU415gMAotWFBW60RhHSTDgw4x6D67FV/o3YEXWU4Pdr5BpDN6t0Tq4hB903bdgltCHYSMn7nVDYCh+zx0znlMei/Lp94BXwn6PSK4UWNc0HX4xh/QwIRCZ+/z3Q5sgnYFLL+czasg5PaFSSZPGpuJEbdYv3dBB3tBzIEX9UC46Mt9kd9OMQDRvpOBR0QsZ15/VFiJkj/bc49tx2HJEQKczw1OyBl3u+0vEkWlM7vo0BFHDpdrBJrr9MBqVXSs+XkDBib5MKYVcahpSathECbDuAPYmjVSkuBzQym0x8645DxE6Lqp8NDsP0p823CDAW8Dzv/tLuZgF62N3oyv8+EI2/DI6xNwuG059Iu8RgWSbtF8HZP5cEgqVQuXKEUIoX/rQxpRiE7HV2TicV8aC7kCMj9XQpdHT+6wlijkPSOmMvOmTwIEaD/LeBcBvhNg2Vb9yj0NfjZka07qWDyRrvYXLAJ6M9Nv46lwyHGnaPxv86kw2mZrdfLR5ogwItJ70IeFvHs69Ra8kwHuV/yugl6jeDs3iRLiMMi0Wsyv2m/JoPGiIbHpGAz8OAihZ/I4hA2GivYJpIEVkaWXRKXmuBd7IWULCccYok6JfbwVz7ov/xcdKC7DC73H0tq+S8KzT/RHFQ36gDFOaPi2y8KIea/s1aKdXEIKYWwBNV1gFYAzeXxukLweB7+pYuWiMIFC1P4QjqA48T32ZOsxRDNu22V+jkO8bC1sbGeG4SlEcZGjulacCkKvG1wm4R0lm0zUxwHYePolHwzRx1YiJS7S56h5jblXT6N8iAo+NyVVN6sA+ttCc4QIxIKq+ApNvWg5hLglKNE64FM1qGx5yGhq/zrhCyeDujwwvZ/Ly4Ctu85Dl2xcUjOy7aL6dww7FnzXXxrGAeS08e8848T0W1iXvvpvlYITKfn0nNGwBaqo1sxH4tmOeOVVc63gcPLa4ETKQgOOjYSvsgTkBpJRpLmdStMJuzV5TJQYH9ar2JjTyy6E3KN3eQFAeJ10q3bGxE4tBTS3zCKQRu6Icof1Fqhazn3LLEvHi4zjFfoBsQikc7U9ta3LbBPt/S7mBYRyoMcHnHLxCIUtDj092ErdLjOnK37hQfhtxpdasmxiP3sklypVysIu1/1s3GqBWXvVgb917Go261n+VxeK3wckSMU2RfAR7bTKya9sejvwjjmblQb9ETssJI9S0HcY7hWwIOA7n08M6e/1gYlREdNwbOlcOvhb3ZyIwEdlizUufmhDQ47irQHC5fBR5vxiMuFBPSoOtCeIbYNNq8opt73KYGQm0pmV70JqEtn4+SKXwtMfpx/t4yvgm3xGw1iq3gUIZqyXsjdAicagmo/L1ZBUo7jrGY+HmWN2DhGnmkBBU2//NhvlYD7LWTRWIpH5CgW/3DtLniZn3ybJPYUJocLH2SwxSOLod1J4mgnkBZPj9TSPgVdGbLMoQ4i4gnyyU7wofJBYL+mjWE1RKYuvPH6iUcb/7yPCIhkwcWT5m7cTyphH//3iW4aLNqYHzmUWZ0JCz/yf1hmkOGDBtOSDicWWTJxMLxRzQZdf7NHjj1kmGb4dJg+JRoZyD6Sf/qrE3re2veE5zyCR5cbb3BPEFFPZPrDAaMuuMoSKcQzbQcmYjdJrCfjUXGACN24xQCkS8dfCGh/ASL73c9MU3mjsozl02FcFjB+VA6d/10BPN4scVkfo5EzO59xS10xqKmIseSUtoA6y0cXCxwGfRIZq1fSLoIt/LrU/astMJbhSutShUHnTBL/XiruB89Td3OqpAvAyv3+vFgpCcnUuXXqSw+DsuBiQ6cIGQoadw+vHSOicwlbs+kWw+AS9lmoOokM/l06vYbkOORUJClrvdgPPYp2HWvXC+G+S5DJnSISupbw89AR6vpb7uQ/uPe7ECi1q+T9aSRUbqxgmek3BIoqeZ+qWWuhJmvMRDoyHvlXPmM67j0ErLpnd/kUauD9cvh/+4jxiI5rTOOOVi6MDqxSjK9SoF/QpGwvPwp1mK4dvyOZA0fEfltUPaMA/+Y7m2s60Whyv9zAalMOFNSzFxHXEETgu8Q/ckejDzVyu9VZQ+DxtaLY0KoWCPl7RiwX45G5nZQmo1QK0LrFtvDdLoDnl8rOZIjikPvJaK80ozQYf1AxfmWrANSl2mw/f8CiE007EU16XZC+Mxgy8F8rNPXp3W9ij0fyae9PKod1wVuNuu+n8C2Qz96pmKMaj+rVDHM2RxFkhRnYlJjVwf6fR25oNVH72uB79RR7BPsYpfvGLepgik7G787jGHRdaLLw+UsEvUNsA2X7a8CiJmlKKzgGWT7wbDaj/h4w6P5PV6kGumiu/1weiUH+6S8yFvuH4E7q+K3tH2XQ/1+Kpz6Vkyc3BrKX54fg6tbWqqNMGZhHf6FVriCij627lsyS/VA9zqV5TK4cyIzklK/U88JGegiFcfbDy6EsDe67ZRD8fjcnuJCEVgY5W6OJb6DgiquBcGQ+JPbnNfPsJCB+0+ayIYk3QPprcvQlrgCE1rz45zoTkPC1f0v7L1WCTjWnyEAVATJDX7k9FYtCw93f7UTKyHCR+VSDiwwe+Fu8ZF7sYlAMuXrGaLsSLJwDrSi342C5nfVbiVsU6l//xBZwmAx9dnzZP2/jAHuj5jIblWfmNU/IRz/qhUUfe4lH7xFY/QofFDEgoT6JnHa26l5oiGSpnOGngFKCRVK2PQlJHaI8Phc3CIurccSNRhxYWNX4lm4loJVvppo/SINgdMM39G4/AehaVZul1xLQXBte6ILlIJQ0YCadn8TCzbq/Xw/LkpCAcoSP3+YbuB9J6JhuRXDBRrXfTpCEjAVlnjyizwXfqZyl87UITkf85KZpjEKvuBbqswvzoEq310DtB4LwKkYZHeMotKt69zvWuwVqFpk7+mgQbBndarn0HY+WL16RvfSpBab2FHC0UgiSHeSfxCnGojR3eg4itgX6b6jL5oYhcI8oEX+zh0dznu5cqLwF6O7ls45pUrmOpUih9UQsyrk5TnAmtgFXoZR2NLUPa9PhZpqfEZDx6cVeJN0GVirSXl86SfCd92uo/TkComv0Wnj4glp/mmLd9IsIJn4rw3L2BOTcSztzyaINpKrz8gu4U+HoM+9OFQMCKvCVPtXNNAyKb/Kye5dLQd6k7/x3qo/cH55R8jzcByWiAdWyXhSghGxHZwWQUGOYYdmH4GH4FH5Fbp9PAxgyfVvIuxeHjO4Y1S8bDAMMikwtUKhc58T3/tJAHGIwE89WvzkMZ1YPW9jnN4Ih5fmHAx3UPrucPWh1qAlCfQt/rThWwK+NyJI1XxyqkU7qefS2CTxRcc3OegVUPtnt02/BoXME+dt3SaWw18P29H5xGXQPv9E5TvUCtmymwsf8VB4aoOXZjy+Hp3XFK/nOGOT3x7wDK4AF+t988lsi2TDfSrLTPYhHnWvqkufc8OCg0qYqkpQF3Re7ylF8DFKPv3qGLIaHG4aqz8TfZMAZoo/pTnoMyk/YmOBCTdA6dnvbfKQcJiqsdxrqcEgg/ddh/tEqUKih10vLS4D2NTOHjv4oNMHkHEtzqRqeOkhzhEwkQ0LTdODCvygkEPOiTP5WFdzBe8XxtyXDPqEhthvxUYj+1Yoa4ccwHNvUt/bXrgMmpoiP6vEEZOdQRHB6/QaCreleumsjUO7UuKy5n4T2sDIBj7+8gZe3bida5jfDSt+XHy5cJJRUeT4k+ewI2GSbbUm51IFAh4Ol2XkCeiuXd4M1jQJs3un7nC/UQGh0nfWv63hkFMzsxMzYAkfowrg4UDWUprf5Nifh0aFh+Ybm4kBoBTtT+cg8MHh4/2HhWzy6OCPCrlDmDamqXFf0RPNA1hsbvCRK5RBc09n0thpgDfrFgPga4U7FFuVsWzS6irNZ16SvBV8j0/P8ik1Q+0HxZ9RCNFLXPTtVQM3rByNn63AWDWDAIsgvfQSLhKJLvztgG2F1UXj3ZnMLbHK2tUvcxKHim+2mc15N4O/zWGyWOn7/Wdn8XjoORe1c+9NWQAYr1BmEs2sENV9hnrEdDHo+hw/aFCYDWVAg/9lGI8jyxd52HMOgZqWp3GWXdrC1HNx/Oq8IqiPbEo5wxCH5RVGb1QPtIJX+uWggtRi+wu/78IaAbKTlMMbkftjp0lmw3qmAc2JPWPeo3vSxg0vRZYnaH71t1zfOVcDb311BmtS89TH78Q8vMAC0wOK+NVkBkz8K8LS5JJTfd5B9PaEONLJ1NcgJOMB9qX2JbLFoLKol4lBrLQxau2uocGHhkwUdp44wFk15fH9l7loH6v9S3lgFRcDT4PJiz9tYdG4059HUy344LdDGFP21HCRURu+UUvu7SeuoGEt9N5DaAm8LaVFA/hd74svdeNQ7VzUqL9oD519az2j4UIAm94+1hmoCCn0rbXR0tBsInGspdXUUcLTEq95gSkDqhLB3HRMY0P/ceOVqcx2I057/YSOJR4MB7cWs98MhUtdmNuZ9LbzaczTlt8Gj26LfvA+/j4bwgRLGrahaUMfexp9jxqO0K4tl8jhriFekdzURsAU99RzOk4GxqLCv5jlW/wlwvY1VOXHeBUTddkdxsrHoTO80z9NKG/ibf+a/i++9YJ9kybambyxaP5wW+/HeCHSpX8rxkmqF6xbG83NzsahUlbmpXZQ6Pn44k4upFViebIg6yxGQ9LmuIwTzEciM8TqqMNQCSe469NXfYtGMadZff08KZPDd3IwuiQJJqaXGC9J4dN06bMpIkQLCkuU951RjwHxkzD+MDo8WH55m7D1JgUKaRYx6RBQMBF9XO7kSgxJTWzeO4SnwTWZhaV9SDJAGbfuiNKj7c26J5gWpHXIuPtl3MJkC54d91doU4pD5m2D+ovF2oNOznDcDCnAVZPl7Wceh5tStTdmNdoi63VGlk0qBPV/fprkncUixVYrpu287zBdlzLyQo0AujZasG38cIl99MyEtNwjrXK3OPp8aoZ109yD/LRJSvRzGPrM1ACY/rGveBzbCkT0LQUY/EnrzZbVq7V0+qO8a/2Htz4Bmh1mfSvYoFFg7ejX0USFkNNK/1ufNBLH2LrcvIxiU8eli/kXpYOBNdprwjCuAKoWc8K/leKRp9fw2exgOzkdKNrvwN4JDWXrDwfcxKM3mlaGGEgZiA3tPMN1rBPvdFrEwJWqeuFR3PzvfDoyLRTad8o1QO9KR83qFgNaUFShv/msH9tg5i6PfqOsXmH47OUJAQ99r5zsn20AEt2a7w9MIvWll968XEVACd/rkBBkLbNC+Xv27EQqO2E2HrMegML6gg+eshuHIBg9GqZsIE5u5wdX5cajhgtL5afthiJodv8kzmwjZXT9f40hxKF7pIM+3OzHA92tr7VQ0AgGNO+8cG2MQFF80DnqHgwSNB3SFRxAYsuX87umPQSKmN45LkYYhLID7AatjJuhdtJWPVoxDPSYYtZ5TnfDSVdxx+10QODm9Qo+0qZxP/nPHYaoZFtYv3vTXboFv4m1yBJ4YtG+xtSzxLQV4tvkdlMiZ4OKQm/XwCR6pme8DuT0K2NyTuzKtlQFEs32igrHUcbnNk0qyLTDB/1SaaTYTerjDUkvr8KhNMFR9wrUZNl+8O+B/oQJkG8OL2H7jkFgTMSXzeS9EvUpQ/TmZDsMTXJxS1Pvwadr32a5GL3QrDDx0YUqDD5Gu8xJXSEj6v+CaJJ4WOLwzWdIMZMD7lGv9pnrW7+A8Mw39FpixmFeisFYCH8+1y7b9eKTBeZIUzdwADW1+qi4/yICW0HzHOBZxk4s8Te7Uw/1Rdkbj2kpQzbsfzJGORdqVoWJFG3XQnmlycN8kGWq0uGelArHojvx5pVaaXhD9dUUvWyod9vT4RtyFSYhMR/u1TaIblDZjeOk2ymCL/XaHQ048muNsKpRw64YYlt9n7+mWQcUQh/TuQDz6VxBZLRjZDYzrT6Yz+Mph9t/rqxZT8YjZ/fNqyaECMOca/aEaUQ6Yu+6Or49EoSMrsQl9K21QdO1cKOdAOZCODKRM11M9VNgqp5bSBgYBeZ0Xd8tALYnSlJBAQK0FdIPZdv1wyEl5+RZrCVTfTQ8ypuaq74Xt9KGBPoi4Hrf+cLsIJHxk569mk9DabpHmQYd+ID6v/QUjhXDNiG3KllqPjeVnfrTbDTuGxc2ByuVwytZg6adAArr0yPW7lV0PuLTW4lpFqXwu7vI0524C+hMdoyjD1QOOcw92OIQqgHX5ysFyuQSqX290+Uq8Aqv/lqd9KFS/293XGJKFRy5TlZyxb4fhnsPzlqBBb2ippL3i3UpAjW4bO6Y53WC8IpVJO1cO2tlOCmdW4tHzEeE/3cWR4GK0rrLn7wexLYm1LJfxKJ/Tq/N/8x/Nuvf/8zzwYv//+U+dUygNyxgGd8YTzFuJLVBieVXjp1Ac0sQO//93g52+/v96vCwG1P73XaPtI1PF2iOA5hMMfQ+3gKNsekQHHQG5yAnHxHGMwPeBOftwqt8vLHsYXTakjhu4f70qOQJnMzVs6Kg5erGypp9OioB+Ki9keO4fgVJV8+Jr2VRfvyV0K+kJATHNK/+JznWG9rQb88o1IUBkN/U4bx2LeO/u974z4QNVamH3zapfAd9rv6Im9lgUKOr+INjZCwx+BhTUXo+G7cVL0n+UYlHUYkSWzpA/hDMZyDHe8gVjmY5c6xU8kpm8faxO9wl8CvLmxlD5KMOEoppM7UdS+jX6fdT+wnf8iJjckyjo2P7oaEXtLyWBPwU0g4bAu0o6J0o8FmCoS0QggLrP5aKfxL69gltWNw7p5jbCx0q1e3EJ1D6i99njeOcr2Fee+lvfvgmy7zo6FCXiEfY/a/JDhgD4T5nvlxIflSsV0xbsqL4QYn6qcYKUBu3z07ZqByhQ66TWb9aDRZv4vaRX14KApb6IVuNAM1hO0i1oUd/pL+YMsUPcNfBaQ6IqKawO8meL6MQdoxHjK4ucOHw7qPvu3zTOqQGdi3J/uqXjULqp5KjRYDtQUyMiKrsaxln+hHpbxCGX/FN82DtVoK/sjlNzbYEO8zR1UVIUSrXFehxtqAIJdokqd+q5x6zs/0jfFoWEx4NNsdmV8Cb6h1FtJ/WeLK1s7zeMQt5JpWWD4R7Uvmjvo8nrD0/Xq78Fqsci8YfMd7aont8oeIEfvS0GiXrFVaajeMQJE86nHShACNal3WEsglHtz+7tInhExEQLF5kHwkBiSdGZ3QYI91yOP/MBj8b3ZWKO53rDuF752vu7jXD539pXAbFYFHIUGkflR2D0jqY316sWiNxRZfMTJKCi5kZdxRO94PM2/4PDqUzoFUKl5HMkpK+JkfrzshH+8Lb9DfF1ArtFG3l7QxwavrD1lnC0EVTW2Op8sM+BzKn7kFYMh+RxJeL72GOhRe7Hexitg3KdVfWewBjEofZZpfARDkJLOu31Quogmevao7+TMYjfi8Jwr/U1lOf++91cUQsB5Z5zhIEoRDPXFSJcmQuf/JyD3zvVgf/N4S9c0VFIy3X4qZ7WMIQ+vD53JzAXsubnov0+xyHjYROlGI9hMBAdNnk4lgvz3NNm117GoYqQzJux9nmwO8YfF+FdC0FhhULB1lHogQZ2gnChCapKShbyeFrh0cbYzf+icEghQPua2bNGOJxY/cpTuBVer9v0Lunh0N7hi8lS/zv32/Kp4mdbQV3fy2E/9dzXNR9HPJcYAtOoTPuHCWXAL85Z5XgqAZm4Zs7JPxoC1qrPtLSzZSBguIxLLYtHJ/5besJ+9w3IhUtnxFlUAluMm/TA5wSUVzErb7vVA9k38FeEJ8jg66lCS1+UgC66GN7iD3oDyu+Lx/dyyDDJqBnfuJKAlK4JrV9lqAM1H4V/uxxlcHqfloC9ChbRW+EGSE/rgP7P5lzinzJ4ODvxXdICi/5NKT7sCqsFWzb38MFD5eBxjH+KlwOLeP21PB276+A2vZ/BzDlq/bqSxpwHFulf5BiWvVIH/RLJHf215VAl3kJR0sMiA/LcxAP5Jjhgu0W+3FQDNmHSFnsRVL8oaJIyVKH6TGBk58vBGvBQ0aONO49Dh0YzZ8u/NML61v5nP3qqgV/1KnOjKw5Jjv68GEj1nwbeNAWt2mrQM9VLfnkOhxRLH3c5Mg9CeOh1neMf6yFE+PqPA49JyJ5P+jzL7wEwxctesiuugyylazw4Kr9lH1+IPXmtEHh2gjDXHuRA8KxG5OH3GGQQfWLC3bEQnm2017q/zYUombPvkqj8pkSqLZMMz4cgMR899ujXMFMV9K/6TBTqa2IxaFauA971nUztsZfwIftICEUbi749reYsJNWC/umr+/aPhMKJDvueT9xY5G38GTufPwQ7qcIP3Kg8k7jn6m8rHY8aCISV3o1uYFO+zN0p0gK66FjDCep9uO+Opym90gNbbdxP62Yp0M+W/J6sk4CWn9ynIw4lQ3vom/al8SAQt5TzS1DAoVc9nr9mdHvg+r7XrK86CYAxFgmZMkhAHFmv/o1ZNYBmbuJOmWANzH2uy3q8hkVynDQPnpo1QD5ukDWOtRY0M187ea9gka5TG+vGu0GgCQ8XiZTwB4ZEnfqOLGrfNMNNLvJVg0dk7/d86vpDtdzq361GocMpbV85qivg4mer5bm2SpDUXAqdqcUgPszC2amVcph+GVouKV4Jnm86udgIGMR2KK9b5FcF/JUPCCxtI0OakuZoZCcGOXGuPNrz64YtPIezvTCCZV3/ue538VSvUcf1dDcBghUOWgIWMKIBSQeacKjtGmVsRrQJ0uqeb9+mRAA+WHbxaSgO1YRz48Kkm2HmFG0/7U4o9R003LOcxqFyUQ+dQ0JNoHntkUXreAzoGYZpTLzCobCy8x0nCzqpuf0u5i7VY5Te4Z128ojItXDjIMNuJzx/aKbH3k2BlGMOukFTRCT4umn86ZNOGNCf7GPeop6L38Gnva+IqMJ8m+XA305Izf2aHilOgbFIti9i00TUd9KGjfyKypOfWa5o9pRATICc9ooZCdUFSJBvqvfCRe8WruDRIvjkXKgkpUblHxrz6LqWXsg5Fbn+kaUYyjZVmRScSOhkvZV0wZthODU8m3jicwaMO+C/l74joP3i1yqmh4aB12S60lUvHTLtSRT+XirnF8kptP4bBj/T71mkz+lA4tOzf/GMgOSOiUsMfx8Ge/vLrc7H08DuzmZtEpXTuN1NVW3OjIA7jiXh+r1MqLggbDiqQkC2Dc66Jy70QnGm2pXz30qBRWGatvQiCYmb/lUe3HsD9496xdW2lYDzIXTgrRAJSV14rvO2qhvqlotTrg5WAqU/13jfTjyikbj5iJncDRPDLeQLDJUQL3fm462tePSDrNjZz9EDuYsvzBgVK6FNKtz0hmwCcvzXTsijvovkYd+V/VSupvm6eZaW+i5K5OU834lSYD381qy6CgW2HHePEP/EoMLycwZ0Uwjo1T2+Y38hyGhTJgp1xKBnQhIzmi31YJVZmLjYT4KRPnLFPMKiB/jHYS5F9cBofTb6zF4ytBycJjrUYVGixceNft56uLQb7fVkggTicg4v06Ow6Hx+YYjwXDscNIJ34xYx0CzQ+fOhYxyiWTfO/SPVAU423kHeBbFAv/zY+n16HGKmOB/outwHxS9npAX8y4F+kMNnCUNCKZzOU9u8fWBqoyxJc7cCeB3yzgm/IiGMPRN3xMde2DRj+eD8oRxaityWWT1JaP/sKr/O8Q6wbeO3PTeJwHUtuWckKg6tFPjxxpb3gvOBbJoOYgVoONSuXnxI5f+fHVPkHQTZ7391+1oS4MGNG4riVK/cfIB9K/R1COKkDd3oJUqBuhx7w0Ii+s9JP4mDdxgO79184dNfAl8ke4LvqxDREYu57se3R4DuiGt3fHYdZHieDM/8EYvMrXbbiGYjsJDo8tCgtR5c5+/ODv6MRdKCx5RVFEfg8ZmH3c+u1IPYVlScJT8BPfjPR8Mroguu0zSEns6rhvmHaJ7zUjyyDxUcefu+EqS8jlCO2TTBbzfRMRmbKIS8r7KfWyTDMWJCjHVKE6w3HWvbxxyFjn/6uv+UH7X+erpySHUjRH/qx366HIXUcnLFzhv1Qy67tvWFg5kwLvcyuayEhN5+fGcoL0oGhgkuyWKNWrA/yXgHjWHQ8TGxNC3dSkh8gzS8n9bC9V5Zc/FzUajYQkfI2oVaL3mRQqNSB8JqPA/fLWIQ/bt3+QlBjvArsWGRx6gR/pP+Nm9iH4uEQ74d1p6xhogDvRklWQ1wOVyG5lJALBKzVDTb0R8B/Zt21RPPMoGdb3o+Zy8W/SzvEj57bwQeRJ0MVxnLgmZFLpvJ+Vh0blQrJPtLJVgmczBYSzUD69AyC4t9FFrZMzXPD+6H7DWD/KXYdGj46lf3v/+jHIznrhGjs0Db4zzDiCkFhnMF16U/RSNN5zi3PbN8IOvemI01IANn4eCqhVQUcjhZZCrRXwDHKoK07OYqYGxSRqTiGwYNSo6/LnpbAB79H8vMpsmQoXOA1uQrBoG26qiUTj5g3+CV2W0rYO26XoaVTBQayY+bydVrAY+5sUEB+maQvtLis9aHR9ZRfMnRgS1g+ddXdkimCXLuXlmOWMejxw7wn55MDIT2rnXspaTCsSUngbmWGPQ1fLX+36FhoL190PZ5Bhk4LC5fW7UnomTbNIkPD4ahS51XC4SbYbtIe+pkdhxqHOvrd7aJhmKtL6+qsPEwmvqUJew4Hr3coti/b46AD+rR6p3/xUKo8UGprut49HbWf6b0bygoUjB/rmwSgSn/1gfnZ3gk0uwcNho5DKnqbZJLngg+1Tf89DKKQ46xdXL784fhyarTiU6qF5CVFgYVOeIQZSwbFFmGgftaVgpjTiXIXfgkZH6biPKOrZ4+/HEIXpVYC7ZKVAKOrsvpehcRxVx5igmbHoJZhlgK14EqSF5P/tLQRES/lXwZ22Y6IZ+1GuWcwgHZQDkfN0BEMuzuv/33R0DTKqNYEWcr9IjoNNndwSPMV7WttZJhuGS1p1IZ6wAPg6svxx+OQ9U/5ORWqeMG+/Kt2qj1x5KmM5Op44dW8n3eU+eRmRS4uRDlAKThnTtW1Hl6eusOvJvvg33TRyrf02UBn6MGLL4mIaPra/4U9ka4K8UYONVQDCXW1aKmEji0XT7tfQwNg/AzD3/FMAS8vfWncd8JCEuTRPP1WRM4jz18EfOIAs5fS/3NMnFI1mTymklLG/jTM32vY02DEgniIhOJgL7L4U3sI96AmJv79I/QQvinL/w8ej0BSbWeOm1z8A20p1O0cZJFMDQx7ZRHTkD9P9JHG8Pb4MpxQ0f/bxTYcQjr9HEjoGwSxT38TBsspLGPn6WOrz0cyfE+S0BqlUXldBmlEEQzyZ6X9BDMH21HtLtSeaPbt9ojuQwOn5eqaLd0hJg3Su5HH2OQQpo35fNUKfhvXxB5ofoMnmZmf6JxwaDIRfLg4usuYLMQP0IrUwlzLRvzQYbxiP2QiCWbZhfQ55x9oqNN5Ra354q0rPHoCZ89ZSEpCHCddTLfRVsh0/EWQ0w39byc1ygc34YB9FQMK9TtoCUuf9MphYAOuW5s/yQEwdi11aOt8naQrHlubJ1a/7ntkr8Btd60v2lNWKwVsmTJokzUekK9x73eb3kQw/uNZHW+FVJvRMy7aEShmfg8MbXgFjD4oKa83RkGLxOLlF5u4lGwi0ek59cWKMeJPg/sCwNxKWOzEIhFEekGWW5b/dDVwayub18OKgpcUYKFJPT+JeP3xCMDELzZdZ49vQwefaHzU8knIa46y8wtswFgwbmReejLYUK+Y+15GgklqNCuPSf0w9cjUW1Hmqn7at/sk0bNn92jLga97INgGoaVU6YpB6xW6Fd/RxK6bXVivypTE5wfY9XGtuUBX5bFhQU/HPp1p9mPobwG9ujZKEFmNVCxZbunWheNduVOWdvq1UJgqD5B/GwtZB26CNoHsWjr3Ld+8eQa+Gk6YGrLVQsKD24uSJREI9OsxGcOnhWw4iPC/Kq/CrByPto3CzGI8ca1h6taZIjX63hz26cKln63r+p+wqBJ6Y4TYXxkIOYUyjFFVoOZpnKJIpXn8Q55LU4+PWDyz+JHnzkZ2Dm9tSoeJaAFm6xKx5ISmNqe+zpT6gkttU2txv4Y9O+QYFeIRweYVAot6TxBcE3XVM53OA4136jPeP63HUxX+abUbRH4MYz8G/GLQwFqVfKumDYwsw5PsqhLB5o8yi93dwJK6bbIxvh2QIj5Qq/cHwT5BMels+NxyNpe6NP5pTLo/lc7duJsEfh/r/Ut9sKgiktT+2QYykDBBdhLbhZBwh/CTKozBtV33eYotaL6G+07jVv2BWApSZHopd5n3asXr3knIkhLNIpNC46H54dD3wYRYtDJqFargGMU+LJ6fGv8SAKg5ZN04l9jUNwhBQzT7zIw7nmRdbwyDyrfhljUPcGgDtYiTlrRMphzLXchzeUBjpBkX0/9Ln/QlsVjPIK3uyI4M9tYMK/9wTEeHYPYwjDtGh1lINkn5Ei2q4CcI0WOBh4YpB2pXDclWgffBj2uXOlC4NZtkCCogUUksX012/frgYaeUjJfWAZCZ0zy+DOx6Cwbr8AJKjdYCtad7wwph+P5Zi5FCVhUellUssXADiS7B76ILlRAijaITT2JRboVm2dKvephPE2O1v84GRqYz+m/yMMipYq/A+W+DcCI/d5lxkWGLzF32cv+YJHLf7JxCxl9YB7wO3Kt9xkk7bvXdS6VhMLPNFr7C/cB37bZFwfxF/BzWEXhXigJ8WY0ZL261weRyTtXRQKc4D+Ob1y7eBIKIDGC551usGFQ/yYTUgEvXaQyS1rikZDGBQHNWir3Nj7EXnpdATMriWc8/8Sj3wVuIswptSDgZVNw3es1TCr+nB/mwaJ85mNCAqF1YOk6m3v38mswW1/TeXofi2jGHiqN/uoGk+jnCzjhBqjj5ySb8ySg6dIR3mrhHnhh/tqM160ebonO3HBUSUCKmd2EHq0eUD21v9SO6nOKc6/bBK8noHcMJO4XPd1wWun1rQ836kFJ8xt30YEE1HtDWFHrXQjslATfZloqh6WOsKWhCDwqpXVhfRYRBiVTuXcM2cvBQnGf17YbHmUw8oqpz0RCiXR0RRm1PvT0fd8pVTxaPorxj5x6CQqGJc3x5uWQ2l6p/6waj9KOGfONLjRCt/mm/Y/sWiCjA17cj3FoZYum+JMIBcZdk+wiyymQEbI2MrsTgzKEGyj2FyngX1Pjeut6C5xWVHyQyoBHt561vVbwp4DHsnnP9+8UcKlcy1hTwqMimGgopvYpDp0CjQ/yZDgxL7Fst0xAdjXf5w1KhyHYcY9t9FglyAvNPfrCFIcM3/eYcUQPw4ihPX/SRTJ0SWuWftaLQweuJGddfT8MF0wKwupHyfB3m2AU2kRA6GyD/R25ZOCPNf/16lQ5fGO/Rj+tjUO+zY9HJUzTYEPN78/TsHIg6q+9fjlB9XqRvc8RxGS41PfZs5qxAnaYd/JYLuIQbv+eVIN4Gnzb5uLaJpVBQNQLOaE5LHpaxmBanpQMNVXEor6TZJh4UzViq4pDFjEXKwLEEoF0DtMY/qgCFF3b+ySjccjhn8D+5n8JkPqNLFl0mQz+ksYfuapxiFvNGPs+fxBElrxrhC/kgrFxvSTPVAKiZ2pIzh0ZhMvBRT0n9fOgp+Lvamt+AsJ7pS2Hfh6EN0KM/17vK4CWwZv+h0kJ6HjTcKBJziCIMxjeyVPKB8m3swspcwmo7mqpgFHVILjSG9+56FAIbkYTrK1D1JzcU3t+1GcQNniw+azWuSCeL8fxlJ2E7rG5C/LPt8P1ksmnSrcwkIitZORyikNjEvdU44baQf2pwGRoeBB0Vp5JvGcZh5p+Pr3VHd0OMWFvjQXTw8CV7G9+WCoOEejbv7ifpHIa7RcZROXqoerJN5fUichJ76A2788hkHkx8O9NTgP4z1Q5FqQTqTx8eLKCbhhUNP9dnLvVCCndgeUK7kQ0derKUi5TFrwT1HZrZkgGka0L+thDWBTV4XM/rjwDPm1mtVXXJUPW8ezslutYdHLBh+PqWhzkS+WuSg5mAe3b1h0xvhhE6x2WHpJfArZCtxdcTzXDyhyTZjK1L3x5RTodQT8EA0tq+tF9zbBgo6rtcjcBEa8rniqSHgI18SSr6+nNMPp+xk+VIwGde1Xyw1RhGJ5auPC9wTcD9umRaK5DRCSBaTXLUBmGtLSBm+yBTbCzWL9F2olDxdejmSXdhoBry+yJ68c8qGB9csogi5oncYGSZpeGoPqoZfj89XzgdZqINd2XgLgPC3bqqw1B1duAnxaKubBcHrp5gpo/2LIKoU7GIThgztGQfTcPVvmj/RpMExDjj5sMtnqlMKLfyDCylAGyot6CjzwxqGZyQ2WUuQzw9A6riaYZYDdMbE6m5v9mhcTDdO4SWLh5TjqM6jW/XvRh3oVhUBYxJ3R3qR9+tj/eL01qBJOv9wMuFpEQf4d/2t/QfmCaXlHcmmmEB8xmR8uo/BASo8YqrDUAooO3Wh2pPnWDIT/9UCYJmfUoH5p90QlMT9+fwm86Q06q5G1MJBFlJFeOqGp0An8Ko+8U5Rm8W+OW/PuAiPyv4sJv8TXDBPkEl8nhVqhXZXns9wGH0k76Sr6k7u9i78bUSlkLyF6830pDG4MuSP+9eIStHqwKXhvYxFNgMDTU0DICizr8an03PtTBhPT6d1ruFhg4Oabr/gyLcHh+6VbWOiD3cVV/T6WAjefZEtdLWGTurysaaJcBPheOnZLSrQdK4OkAjntY9MBwY7d1PQ1EbwYkHfWvgyqZVJ9xMha9VlcJYt9Ng5ShGkXvwHrQF3I+zl2BRX9e+x6+z5QMCztRGYXUPl9N/85U2gCHPtpgT+cWJYGpyfMPT+RKQTK73NDaHIfqJhRMSppSoSuYpDnwohS0+sJor25R88Tv8YchMxLI9Bcy4p6VgbMICxNrAQ4ZMkcs2AqS4GVgwPaZqHJwHvV0vlWOQ13rOaGuJwlw6vGl2uGVZKCnGQiavRuDgvt6xMcrY6FVecdomCsdfAt1btg4xaAnFSTV0O9VMOnN7mGwiWC2LsTk0kQUyo27f+70u0qIDouLlTpDAe6C9C7BB1EoPNvQ+URUArTa3ThmM5wFwlxZJ2924NAj+r+0NXLx8PgPf6q0ayasxWUW96zj0KfHyubf3VuB+0nfUX9iHjRUb5ddy45FUY1LjDoXWmGUe4fHWj0XBuxHdSg+sYj5ftaEZF4r9DZ+fbrU+RqOGj1wuNkbi0gJxs/dxQeAJOiu+7YtFy6YCae/zyGhUN+kzkY0BOltzpGEpnJYEeYncdLFo2fh+bdVuxFYXSwasHIrBWFvWaX1yhik/tq9ZWIWASQpP6ndLAb+0yF347upHJXqIH+QlwLCfF08ltalEK24LfHoVwzatGkYV8noBY1wWqKicgN8vJK+dMSahCqZPlr4WPTClNpSc6FKPRhJ+F3x1iGh5B8aKxoRCOav6oy+iCyBSRP6E6zhMUhq1PeB/7dB0NPGCBOeVcJ75USaglBqnggwVdINkAEjRP8+5E42sGX//DN1IAoVnP/4t0i5EgzEoWn6xmsYxXwUWReJQk+SHkmWq5Dh8d1k9Tbd1xBj5iZfOoFBOqZTNS0aHfBV8x1XckoVfFstGmMqj0PriVaGvvIdwEwYCLmdXA1ZHzy/tFK9O5Y+UKFzrR0aXM2/mRRXwTGiS/OUVxxKwdt2PyvsBeaGyatfAmJAecnvyw1bEipJy9ufYV8CGWZ7xUlaVI6uZT5CfIlBf/xeBySnl0LvXT6uXKsSECD4J3dTfS1J7X6359lSGB7LCxloL4WOU9y85t4YVH1923qI+xFoFUe+0NqLB3fVnfWTrrHI1X99y6PrGWx+XKQ92xsHSYEtlAyeWPQ2W3Y+1dsLvpNJER988CDybWOzQSkWHdVTsOi4MQKLWYcGFR4i+NV+kGnudyySZ+ES/8Q9AtKkZ6d8ihF0+1+6aKFNQKXuDv48kiMQuhcR9ZKDAhOWtAxXpAjIokKTfjG+A3JUfspMXq2G6uotO+HlOHT6nntU/wkKxPxrOxUYXwU315lSN7/HoHSGpokPnxHUfLb4vfy0GoqEbvUwdMQgYatj9sMdCHTL9pdxUvf/56Jqsgo5BvWaHLymEoUg2bCuelq4GibmrXtEImMQkUPxvs3vdthZuuXT6lEKacYTtk+exqEf2V/5dIU74OfT4723FUtA98vm9XtJcehLiZe/lF4H9L90ywt5UAo+G6uDiVVxqG71Dv/yqTLg23xrdKqVmhufdcpyqXlOw0t7QT9uGPLo8jHxp3Jhy/Gi6M1LcUgtKiP1w8l2EPZM+GKhiOCLC4ep2wQBDfczOUwvtMFQx1vGiWQEGzbhldaVBKSK/TcindMGyp0Z6/Iq1Hud6nj4VTABTV0YmL3WmAh5rWeefxGoBObmROclHxzyPmDe+juWADJI0oFxLwN6+FzS7K/HoIbNIwMtXSRwvSNXev5BJhTZVBnrJOHQ+/PKe74m7ZD2aDv2hT+C5o+a0XkH4hDn9Mk/r1i6QDaFvpCNpwEm7zH9kP5BRObjz+knfzTC0bMxKbLN2bD/ggGjuwcOye3T5vcrGIDLN0ZSmgZfA6/+gYBfWBIyPPvySKnkMJj8pMFuYxvh2toNSyIHEYmLewi5fxiCT00ifFMWjZAhTjhZ9YaIFo453+bSH4KdxnWZTuUqGMvKG/88F4/uBD1cYAgbgglx+jvvqB56nv+ObLtnPFLgLRdZMCmHPJZ6tWCxGvhbZ8RTTOUHKWNryjvZCsC/kPt9t7sa/u3PcZNKw6BfBzUjVqkc6Z0SnNewWQPkuq3AiwkYJBm2JTdxYgiyql0KxI9XwXIiZV/OlQSUrfesj3RlCCx7rO02VSqp/nTUpmsrHr0aOO4TLVAOaqdnPz8/VAvPGJitnHwwqEuK4uXmUg6+Gadd9XirgUtK6ZNrEAadnP0Tan5sCHTfm1tfnCeDWcU+2VjdBOR4OEJV0qsMXspc5VbIrobKsc+nHajvl/TcbFJstgWE7iydUk+vgPsczl3LF2KRUT2ppVCtFVxc1N5lCFWATkB9hmhALKqnZxGW1G4F9ScSbQE8ZOjhLNAqeBWL+JNZollrhoCMV/EwplTC1YXQJjH2eLSluDKqQs1trB3CvSyoAnUzzN2zB+KRZl5giIlICBRbaxRZU/e5LUTdboeARzuu8V7b40PQzCH/cteATPX19rLtQSIqWiDruoWmwy+hoxD/rhQGI+Ve68Vg0beWioL0/9LBmG74yt3qEhhZkeehK8aiOGkW3YeXM+FNZJLE2lYp4GTiPQOksUjnWfahjQMZ4B3GkmAzWQYtZ1a4kScWOT/mjsoxGwS+d1rGClMh4Ky1oaynSEJF42HBX0MGARudEaAC4fD4zaXpykMkxNO6WjNhPgi9TSFX+XaiIdRKTtBEjoTUd0g8yfmZkGtMN3uSuRwKBQPmlrmwSKZjsepc0SD8esSp9eRWHUiWXjms/DEBJe7Hk3iIg6AmK//N5FItDOA/30v9nYBoqug0y2RJgLntVJPSHAlBy5qKoqU4pPVp3PJKcTfYPYeTt3WbYbhg6sLMejzq99F/zpfbDfsufLdVl2gC2vvqkgqrVG6UnfnWNjsER2Vn2OgbKFBxe7ZzrJqI9v/VdRiw7YbSQMbfL483wsGFqtXs7ngkz39bO2O5G2gUzqbHnmoE0odKh2bOBNR25vDloAeDgOuY0dxQqIV/LRZBJyRIiNl6/f7pDQqYDUV8YgkmgUnQ0bwoDB593rhJ4BVugWCXE3lShkQgNzRoJ5XjUd/pW+L99i0wfj3ltoElCXb4RtaezuCR/0dB2qBaCvygVBvTqsSDcD/ZzcQKj7KMDy5dra8FPkep2puyLcDYJzDMLoRFLRbaimdP14LBecX4BOrvMhNk5vr4OxqJPq/baR2uAeWfIfq5F1rAc9T2be2baLRsmvzXTaMODG3GD9RntMBn5fMCYvpYtPPge37Kn0zYO14UnH60BtQK78vWMWHR12bmn3y76cBePpcnYFoDzn9d7TaeYNHQh7DvgecLgLdVxFLxGBbmOnckJ+ii0DjTjgWDYB7gNn53u6xigcHGZPukRxSK6Uqt5uPIB8NwetOVlFCYfcTRvUttFHrmNjnNodlQkhfBO3G9AmY77HABQdFoQD+GWf1vJpD6lDtq+Cuga778qy11Pa4qQgsqxGzwCg4p/WJL9dkTI0sez6NRUUFDadGfZDjOI9P8ST0PFk+kl8hK49A4863AE5xpkPWHZn9S5Wvwa6rd/2cJi67LfRT/lJQGC6mZqczH8qH/xt2oj91Y1DbS5nKSNReSbgY4u05GgFyXPx5TG4Xag/KJw8WZMI59xtJ1Awf0zMv8rNT7DJ8fp/c0psNWJ2d5WgIO7u2t/jn2CosOHk61O7OdDglcyQcjpXMhyP63VLo3Fqm5Mfy5LpoB4V7JB1ptIyCTPNqX6oRFGrQRXWeoeVXw/I5AiAUFKDsZZcvUvCKGv2nQMBiCDdKff2+MKcDqzjG3PB2P1CI4PjzKHYLwpOXMZKc64HVko3+hEI+0fokE/345BFIkB06QrwdzrP77Qb94VM+fx1BF9SmDd+aT+CEKJAgeE7i3Q+XG1UE7e88h8M6IFP3vUB1w07gGiCbFo5KSvaM9mkNwbZ/HibnNOtCp2Pji95P63UqD9eIrFPC+vMS7kloN7/ZESu2O4JH905kJ4gUKzHLvhic11cBBwyKPhIN49IPde1+8MwWCNTM53ydUQSWdTMplcTzSi/2qodvbDheyGTgEp4qB2Sf0S+ztOPTCJYvzCzYWkMn0F+vOXDD48e252eMYxJzxhuHBqxio8nJNuZacD9+c4i6NVcegY8bOYwrv2kHpRqyoUlghNMauH31kFYf0Ep8JNaW2A7PuYwdH71K4Kf+vOkI5DlUfayg4dGkYwsM1z9sU1cFo4Ak/z404tMt0bSEYXw/5q9e+FkTUQM7GYPqDciy6xeL0VvxfHmyKdHx6x9EANI+/6l5Ti0IBQzlD0lL5gD209JqGqx7ER/+yiChFoUmunBZz+kLoXq+pXimqB/tH8y/HZjCId9I7QfYcgt9aY2Qe2mdw5tqNNC7tGPTgitMv7tFmGPTaubwD/vA9Ie+8EWcMut2G34o/hOA851eHfYXOwBZWxR8oGYOc/Lwcez93gPOzLuaF6hawthq2nuUhIpPdFvzqmU4QPuBgshLUAtJKRgNF+kSkqqrPZHewE2go3TvXj7RCJ+3ulN95InJ97CP0cbEDNJp9OdYIz+A0hqtL6TTV373ThwXOIjj5XNHcoKIFjhYel+28EoPOSD/+LbaP6iMM91fztOphLTHhjU8BCUmeD7x21W8A2Dwig+651cGrsV4OZxIJVemovcjEDAD3U2vdpvR6eNiyR6dBpPqLmw/fQsUAOFi6+2IHG4CixJV6MJqEZjm93V9dLIXsFWPhI86vAR+1dDHAC4PS7v38utdWDCX/OJvPc+eBT+r1sFAsBl1qJAycVi0Gw8VpAutiDuStp3s7J2HQmKNvsvw96nkrvPsl55cH32kn7M56YJDsZvzn/VVFMHzwfu3vrCxIV/Z4IZiPQawD1rHKXwqga7XG2iEwCyKMDuiZLGKQyc2EbNJCP4gbMfwa5CyF53aXteyLSAjj8ouYO90P/wLT/VkOFoNrwO6NAep4PN0nB64bAzCX4abGoF4CJ3i7T0WnkxCx9ubl8A7qvs0YR6y4FkPcl92vuHAS+iz5qW7iVRs8Yxr4Nu5XCbemU/ZlOxOQC91kW057G9B2sTzoNKiCA8zXdb2SCChCdferTXYb4KrWVpsMq0E32VV99SUBsdXuVQfyDcIBN658k2AK5Fo6+XTbkNCaHc8vH+tBSEngFq2xp4Dp/3Vs3uFU/v8fj6TMhKhItqxKkob0yigpofiQyl4ho5SZ3UA4nINzjr333vt9jr1nyh4piqwyM37n+/v3XPd1rnPfr/v1fD4e17nv0fRvbOeIyGz5Di1GqQeaOa3Gev+RwP5BpcXoXSL6fZbqfdC7HmiJIuFutJHAc4Cp4C4DEZmvrSoL+ZMB56DHLhJWAPW82/t6W1g0yZQr91iVDMRJ7egrdRTvEe8p9m/HojYWOq0uKzLYfFAvS3PPg/HQguFL37Co3K/VCfOuAjTvicS9X82Aww/u/VjiwKBKUfUZzFQ5zG0NfCelp8Nqu/BUbn8IMlvyzYCacpjmXL7qh88E3I2TD2RRCGJ33Ode32uHI38SzS8Ra+H4i56Q78JElM67m9He3Q7503/XnGJrQEbz2h0GNiLi6LeTxzzogFNpOl2STTXwcy7u7YHbRNQytONesdkN+MAcsZJlEtSX3Fg8/paIiIbqgjssPRDSSxdzrz0PNpJ6C5/aE5H8EabKEyatYGbVpfPiehVwXWvFGzTjkdVdZRq7qFYIiLtq3i5cDfTRy9cjf+KR0xMr/ffSrTDRJB91hqkaruguVh3IxKPiqQgzdr5S0Cv8GU2ajweFJnnRDm9KPx6ZYxJxLAUZ+tMx25WJEO+6QZecHIyomrJzh99TvHg7cfayRyJUh+HFXZSDEbNW7qdvt6vAb3rxba1+GtSo/HUcJGKQ5VN68Y2JSqgaETpqh02B9wl7KmluGDSozD52qLYK/tPUG1k+lArcUiLC2DoMupzVWaXxtRxGA3RdTtOlAZt0X01xVwgqTf984aVLAQR7rV/hfVoKczRVVP4UTk7+EXGp2TsfrCQahZbPl4HWKdzYtZdB6AS1YNq6QDhI9c5/4jhUAd8sWb9H64ehogrwSPkbDtwSagLlfyrAfbCA770CJd/SDIq4x8Pgt4Xvv+ukCuDbKqmC7DA0/GhBXDEoH2ZYaENztEvBwPdadaZDEDr7mGbjImsPLJ9Vpb99lwwGJY+WMHZEtDy+QBvD7wDeIkv3eIRIkHR3MK5BF4fys+Xx5sVm8Otx/0NzdxK87WicveeOQ0f0MkNqYkrA0Uqh5eFtMjyUfFjP8CAYHXrPxuuYSgZGn2de2fklID0c+qGRGYfuNnMQzoSSAVPMJlb6qhg2JUp/nNvHovS3fy9Y/KyBXiGzctkvJMgNuu2c+DIUjfpGHOK+VQN+hn3uB8tJ0GFNaBO+Hoq47RLx3+JqIMd9UKLWkgTjk2p5d/RCkYSr1HUnlRoYmQ9xrBInw2LysnnwjVBUU093fZ2nBfK9k9vpxgKA/8CV9Y6NSPQ6r8NgOrAFFq3uXDAN+wTyb9ZPGt7Eoyih9x59xi3w96Z8kNa5UDh7fM42QhCPDNKZFaSeN4DufdmbTwwKQO9Cz9VN3XB0hTD8UNWlAYb5rONiowohbt7pSrVpOFLavziKvFoAFgSul7e8A+6mo08EruDR7wE1B3fFfjigpOZRzYmFhOLd+1JHw1H1g3WDyKf9wPtYl637KQZU3QOHi+ZxKCopjOvYnWYQaqzwCFgrAAEobwk2i0Qv9452uhQ1A53VWfe+lgLosa7HpuVFotZ/dKjvZzOsfPj7MHo1H/B2W2fUByJRhL+KVsODFrjt0l1jcLQGotgXc6048WiL09LMZbsZso+vK3Iz1YDuY+dfThORaMXzGg/5TQvwLs18Z5CpBgwdX0mcFB4RB7tUsrxroNv89ejGZhJ8Zzgh8VAjFBn+OfHKRLwWVKpFS6IPJUMT07vl5I+hyEOUZik1vxf8D4YX+dYXwSmXC7ggITzac/yz8YSKBHUKOxyXZrP///mK+bEwVMojQnyRiCDw+z0N74IsqPzEOW1HDENW0rmHSoqSwUlJravyWSksnWHoJfSEoOiqB/84jRNBouCnVRZtCUxsCf5TMcIg5ky1CndCCdwoCLY+yZUMj9p7bzncD0aeH7+7u2n0wOTWGlHcLRW2O4xYsDcpPQJqDf6UvWA7vMnnKJkGs5YebTqUvdgpKfo3fqoHplgrzy2/T4Eke8EXlc+J6O0YfxDBEoGEjq7WOclUMLzwizfZIQwxXcwmWZxGcCjkgI6OXSrwHDo9uysXhj5ynBuy46McvxEt/3U8GWY0+e07b4ah4rR3jaY3EbxMzGMtupsOMelPJKq0wtCrDo4HQ3Ul4NpoZDQ1kgL/XcifZn0SjAhPjO0qGvrgi3glY+nzXNh8R8itnQlH78zOxPJG9kHO0PO3GigH5qT1ybk3IpDYlJR3qWIJOO/5XuTsjQez9EFZfslgdKu1S7uIrgW0lDEayrhCSEiIxyT/jKTwntKFFJsWuPdurGiwqhAqbzPF0ojjUc/qYwEu2RZwsT2gvh5XBEcqO993HcYjjTExwuuXHbDbNZe3kloLi+Ou038eElGt8tbapywyTDbOcnjVeAE2ycTNkxWH0mJ+e3Fpk6EYM4xr/c8PpFlv6xr1Y9EUwymXF4Jk8N7JkcuPc4HiE1NhC3lYtHXu39kvkh2Q2Fnz8KpINYjoFlwkXCWi7mon3+K+dvAl3xHG6lVB8y9uwfvsRCTzrzvqfmoT3HePGq/ZroKOqMS0cAqX0i9bB+6tNIHqMt+K81AVnDFL2ogQi0Tyu99vYRabIF44dwQbXw3T0ijx4tlIlDbpfDKwuwl6RDHdqouVMLIw9vg9ayS6ajA4zCjfBV+M6E7MTRZB6u+E1925RBRskCs7W1ECoRYrdKU8GSDX38bQohuM4j4lnZ7WLYUJ7xJSlUMaVPC7ch4hBKMT3m/t+njrYdxB24PzszeoLX1Q0rPEIfovt+hfmTbA3rr/nog7GXT+Nft5aYcjbryu50xlA7zFpJpjFcjgtbiQFosLR0mPzn0Im2+AAuIRD+oqMpjNP3rBVh6OSkMM5Fy6m0Ete4+K3S4XtjGxdTgy5bxq1Anf1VqgKlTkE51qDuxgWDm+cuBRk1Y09vj1FuB/GfzA5GQeKPrqt9rR49Gn1hyM5FI9VMpyfsyl8MiNqMiqlH0c6rYuafqiFgkusQq/zI45wLmN1Z4VtjB0xdalWWg0EthaBIYcmX3gvvXxteoDYQg3rnvgwk8cJNNw/dsMfAsqX58Oe5uHoQ2TRftQ2l6IHXCS8Jcrg03dVQMzAwKqO94hTpioh1vZcXGpChVwSnk88NpfHKpiVXAWz6+Hvc2gnNPWlfAlxWLdsReHckUSCzS16wHY4piSrlXBq0+nqAeDcUiWEjv8bH1A/aSox3GfDAjfdo5ZKxJ9XqlIukHfB5ymuoUnLMhQOulJr2gRiWCW/cCLq31gSha8Eh9FhoQWKyEPqki0NElH94mxFRQxf2yMnuTBkILd64RQPFI6SxhkeN0KB/NmCr0t8kDXhWtPpw+PSN7imKfyrXCe/sDrFrt8EH8k8q8yH49kdQ83Zzb1QZDjzgtDy3y4MuV0mX0qHGk0m/8yU22FI2YffHjtciArt/mFZDke1Ti/9PbNb4FzGQ79FVAEMhHab4/q4NHOJodp3kgz8GUP6tqdzYe3pSJZXW2RqP2YXurhh5Q5dulNrjvmA+HkghzmJB4xSTv/yLzRC89KL/doXiqGrY3NI5oHCSi4bY+Zi74Xjs1OqCUxFYNFiu9A52MCIvAYfJud7YHOJpBrVS4C3qNPn68GEVCm3Mvxuwr1sCHN+lLcOwuetzEKTHvh0Px+BjkhpAQgxcK/7nE5uOhrl9aqBCMdDGblxolSoI731j7IVAGKX9+znPcIRsuHV/p/i1F+5/Onm5zuBaD/fty8dj8SBW0yRHf8agG3jqrutcxqeOCP79Fwx6M76hz/ve2i9DUXq5oCZX/fOAwt37XCo1eeYbrCCy2gkhhtcYuuCuySTXklKJ4eeyQ7peR+NUhW+awdICeDdptCqtUCBv10uqtKvFANEhcSVF41pQGTPW+67zcMkhRq5MjgoXAhQ5bi85lC8An+r+SKPQYd6+Vjv2aRCAN/K2q+LheBMe1FrbOGGBTsJeBxVDwJIl7HrjSKV8DFmw4TYpcxiFN2pKB0tRRcC24H31uKB47PNW+Io8Foj11hS9G1CLrYJC94Yevg/Em97Ds5QQiaLXSFcwvBUk/tvPL3OrBXPBKnGxiELqV/at3Ct4MuPueWWngtOKW+UCdvE1CXKM1xGWIC7FnnGUU5VUCAZbO6bDAGfTmdTM243gOnHBU+f1QqB6lk3fQ5ZwL6ObfbO3SSMndd5mmLixXAUJoraAAENISX6tk72gcRykNF1pZpwEzSYBjUi0QTn0bKrB/2ArvDQZYHK+XgpWuwSjWOR8fXdw/kRSGYfofGDYxygEPhhH9mOIVLm9RPupwiw7+XyieWHliA1sHA9tx0LJJKHPnxfq0BPgoQFBvE6uHyB9wlzbpwxLWpLTjfmwyjDC3HLpTnQLAxu4FuYwgavIvvW+pKANVDM82Go1kQpfRQWcKHcp09aqj+vO0Bo7F81SedeOh3vedmR/GRq+3Gs1x/+8C7UL9TnLJ3c4b1f8ODw1Fxqo+iY30PlNmEdWKIBIiYp6crRQTkZRSQ6RrYAyVa12M7eqLBfbqrroWGiDBYs87GX7Fg2px99YFqJLyIED7QxRqKlDM/HrU0jQHdBUzVJRwRjgCxIkMpFAmSj5yrjIkC7oj6H6lLkdBuoLrK6hWKxhg+fZe5mA/XKawluEjJycROC2enIMQgSBKXoM+D0LjiWvfz9VBj84rzAmW+HYzaS1hcC/SOq9MaaWWB29OWqYPKeORnOm8mYNsCpIa3PU7fMsCT/MZ3j9K/bgH6mRqNLfDS9uZMY0oGOMx/uG5tikeKW4lsuPAWmLh44uroi3QofFczmkH5npqJ85mPCL1QW4CRKI1FAGLZK1LaeHTo8im3ioJeePNRXdVFBkG5ve+D/wTwqPCDyVPBrl64N6/CwRCAQO6GwtHfs5FIUnwjUHu7Cdy/35VhYU4FgWennppfiEQ7tsmbbD3tELJXaBVsEgd1qTVOYpS5YG9cSpe+0QLp6t3889LhcP763q/PDHj0w4xv8JEfCdC6FffdC/WwfOIm3fx1LLIuNpqd3iWBnmW3rZ9QPbjc8jg+h8Wi4h5+2/tDNVB54pKa9wKCFbmpSpUXoehazaPctVMtMOedQu/zoRjodV6OCKxFIvYcVhu2r83Q2qwwsy5fAq85kksNWyIRb//yQX6qCpgxJjfnfCqDlR79U+SZEBRTWHJ4RbAc6kVGbjAkl0H+9/D5EvsQRBxInBM52AKFEQmyIjslYK4msaz8PRJlzH8TzQ5sBOXJ1oHy32Yw8rthnV0iAplGYU+cZm2EksVAxZlYS1jJd/nFORCOPpA+UQ0pFEHJN6F9Y9o0wF4VHRlODEJGL8XV7bCFgA9TezASkA7Z2H/PBz4EIWPdZ/nXtAvBSSxrwrItFUxO7mR7/u85w8pSbXXfEii+wHWT63I9dDyfcDyrFIx0tfY0Ya4G1PRG45gp3rGlo2wLFG/inw76+/S/Wrjt8XM2ZLYAJj9m32CKDEXRDcZ3ktR7QD/zcsvxu97A2PuE6yEQEQ2OrflYZx0I3GYQqvoVAm2/5qWnOcJQduQjdeerdbBP49qb9hgHEVN3HhyfCUXjF4zHjhHiwfmzqAvVyTpIsPm41dyGQerx6UJOos1QyXtEVcufBHbuDn2nNSn3yeHEVcVXzRBm473VtoNgQKSi/pdvJFpuO8UpdrAWqA3Xk07RFUCmGBv1ZbdQ5PVX5vVJ5lzomypqp/2UD70n8p/sxgehfP3vqeIoG9zGhR5piBaA5Htlvu3mIJRkO+80O58FuaFFpPvP8uGZSp3Uxo8gdFCZHFE/TgaxE9PxvAFZ8C2dx2hDluKhURIqZn/JcOjHhwsy2jmg+I+Ho+sODhV35GrIUfyUi3d7/db9HKh5mzGlSPFTfppm1+rNahj5XPHzdyuCV1Q3jxMEQpEUh5emzWQ1vKHxK2S4RYKElLS4Sq5Q5PqFZ8igpRpST779Qp9TBY/+xVRtsIWiAC174sp0NWitNJwza6wEAYcPlwK5KZ4bQiesGFUEBzK9Ug++zgB7atoni0VByFqJiY6TVAik8fc5zyMz4dYEc9VmUBBy919cP8/UABkDbUpJvRFQo++QlHg8HH1hifeRGOwFXbHtORKFD4NYiJcWBiOR3mtg+tdVBbJbg41hM1UgX+XoOtKAQSyvud8obFYCveH2gMSlKogRvq6+QcnbwJj30n+EW2G9pBjfrpgKj6O6LMQTKXlCutnk7dcKHWawiDNLgyASx27NCB49W2HK0VnuBs7B5fLW1ApY+rgi+9aTiOxSth9+W+sFzIjZiAYHGTTnnnvwYiMRNWnjSA91PRwI14xsz0HwY9Dt6bOHOMR7K9qlYDQUTOgi1mkXamFLMsb3dFcY+tsUfOeyTAd8ekl9wvxnMZh8s+2ylyMieWqyybuLHeByIsS4sakIntO2UFteJyKGF+YnumI6IOhN5e0nNsUwYzXJE2tERItnVm37dprBfR/D4s6TDCO31Q7RT0WihVwJ98/1VfB29rLeXHwk5H2tPG9MwqBiescrsgUUfjimb1VeHQF/Xoc3+jKGoo91BwS/1pGhu6T1RVU0EUSXP/78jw+HwvSzvW3UqqHCI7fLVQ4LgpG3cpIpvHEg7Y7KhfOtsHgl6Ik+FsFDWSPGB2l45D+9P2Na1gIWpss4y3wExH8uQe5P8OjbtsWm1loLcBxxXcngIkHOJxr+XR88uv7rWRJfdQuou8REVZalgqekdPgHfTxKuJ05Kns6CgrKE15NPfID1WbfNrbQULQbe1rKRiMRbl2eqQq5nwmfj+zelzTDoILEWYzXzV6AZyz2z2YroLOnf4T1AAHZvz/xKJ3CgdpUz2+waVTCjcZRt9+6BISjl35s3eAPojKPnnmFloGuMetCiC0WfbgBgn3yJPDT0LzJ+SALTtUtq/6iw6J9rN6oiEYDMMpdDLO8hOCnZwVHxu1wlGrD+6OtuwF+L7qnpfUHwcLUzNRQUjhiwtwSGbdqgAZ5KsMr7Rj4tlxMltILR9+Phf8VvJ0D3cfOR7DR5sEXyT+yC6VBqLiz76QMkGHzhM+7xkwSfC8/xiPcgEXMbwK/8qWQobdg4s///icxcRW60cWEQ6SkPHyrfj/o7t5Wd6Tk5TutK2dK53CIYH39/lmNfiB4iLPHz1VD5D7G498ODh2bNb0pGN4KyQdGGbgsA6DK7/pex3c8uhphdVTgUBto5OvqWLAHwqEovtVdEQKqPnutt42PALnV9ndXT32A1StO3hMDoUha6u4154R64ImwrNW9Ug6JX4bscppwiJx0TIfmfivUGiRdcn+KAS3Oi+qSFXh0c8DsPvpbD9e1G9icnpXBnrGjStXBcGQpcDyB6nIh2FQzlm2HFoI8f8DS7bdBaPVPtoUjcwP8HRNYDrhbDt98m+9jOCgewZ72bm2kExoP3Om+WV0Md2mOcxWnEtEqO1HH53kX3PgsSqVL2SMqjO2Efj4R4fUSR6apu+CO7pMN2tYSGFW7dzgzk4g+7a80frCtB4ZdTt8HeTngzqWJeZiAQ/eHp76LcdXDK7resFvmeaDzdNhZxhSHOtU2jwzvFMHn81U8FlIF4IQJWhdrC0LPh+7t1cW3wDOc840BmTwoZyM4zdzHI36OxIK2zhZ4UzghYaWeA7npFfVfnlPyBF0yjHvdDKbKDJxZIiUg/ke/68O7SGTOFu09XdcM3os8AQGaxfDfBOs3pvJI5JXzyaJeoB0sJa2bi53iwcrSfHiOTECRqOvR76ftUFXgJtDtQNkD31bT5nECkj/gLS673gbnFnVWTpglwvM5udLZLAKSW37SfdK4HsQOr4Z/QgheSO8oyeApXvOLsZvzbD1M0l3e9bpHgqmaMYfcFzj05QV1Q2YkxYtnPSfOuJGgTTPh8ts6HPKyq45S6CSDuUOjUec+gpcB4pUi4jgkJ1B04UdOPehnKWlEXY+AJ/7MVW3dONSD+3lhbrae0l8bxze/hcJ/k6eCNbdxiMNUUE7buR7ea08epLLAAHnMtdUnHYd2WPlMaxQa4Eh44DLuFg4urVUqf5ULR0/uHjCjxjYDzScB+t31ErjHVRSKJ0SisJVjRAOFOhjSVtg+y1YI1X+utPHNhiIacf6KMyu1kPyimfs/zgJgNpY0MGkPRVyv9Pa4a+rhzEtjDospEgiLtQStDuOQswfpM/D0QuHdXIbcrixIQdT4U1cJyK7ZgneVuRf4VHa/xgvmQlY/jw/7QwKS1Yg49hh64YC/3zOJtjzgvbd+DbtH8WUmMWY2h2qQVpFqm06pBgFlsZx/Gxg0zC577Ys1HoLfHK7XkCuBznvFxKe/Q9F+jpvHTks3hP/3ziNYuxiIzoed1/2J6L3UtAbLTDf8lDKCHkIR5C9E6f/wISJEO6lwl6sHmvqlNF8rFcOF2H1hh+f/e79yI9LyXye4P7lYE3q/HGp35i23M4ioxWIpGGPcBSGnT6/pt5XBWJA9rwxlL77tOrx995jy+WX1S5Nr5ZC3m3tyNY+I4L2B/7BmK+x6OGMaL5CBLlRosKma4puvpakxKy1gPaQjFBRIhhqSqwbRC49aTRZUFzdbQE3DlfT3IBmiB1+TFN/hUc5YCT1dMQmayth4RrcKwWGt65whpSAeX6GmpqMhQ/PpFTOh10WAPWT21gCPRYf6UhRLoquARZ7x1MDxdzBCqUy5EgxytonhkL5ZDc8PPJcsw3rCP73ys/xzGGTrpuNyULgasv2T24yp/KH7Oo2S+CQGObLtGeOFKRz4dK36mnQROEj67ltQ+nHQIbtoKzcVPrxcbzE/UAzC2pO043wh6FrAtNE9l3QYFpd6r21cBHLX2F7axAajVNgaHSpJh3bfS7/TpIvhHdZGdCk4GK2VV9LXXkmD+IhO7fGmQqALw2SVbAQjq3A3Il6rByxbxDr6ZQvg2iXtxh+Uvu5fzF7KUekBz5/TIcNS+bA9r3NR/zYRmXwd4ru4RgB/a/3KHhYEa5tuUu/KQ9FyCZl9+7cJmDl+qXM/lQgR7L9Nz3jj0G+rhXzRzzZgnOcgoX88GfDbVXZ2ljiU5/Ezg1TVBgv4Db94/SxQ+isFVkEEFPDtp0bur164sK3O/epLNJxduHP+fFYkarZqo/r2sB5iuT0Jwc8DoDPn4UumIBx625NGStfphc2/Nx2Hm7IgeWN5yHAAj2L0RNMuX6uFpQKtmsNjtfBRUj89KojiiSeXbnGM1oCn18h1xe0a6GJ5XS1jG4qubB3CXVpuhkux41yFQfFgMGvDH/k1EjV1+Nq852qB1RnDXyEXEsHxbB23H8VrwGeIj/yiBvTHdWJM5wLg2HRGe9PdUESONL4v70fh/7u19MF5GBB+Tksvrkn5/m61dzcu1MB5Yq8s60UsNMUKbifLhCKLsS/P6RJrYEF4+6p6XAQIR6ie29Wj9JR5yPnnui1w+/ueuUE/CS7TnvxKOo1HxvvvLk2ptYDY9ZPszC9JcEszX+ozBx5dKlf98vRtC7yQ8XEmnqZwr089w6IMHpnQYs3+ybdA5u5fao5iCucoXPpGzUThlvibA1Xz3WBTuidwtT4bMLq+4y1eRBRPm3w04nQPiL/04TeazIHqiUKtrxZE5Bx5dMf7UBcwWml9GXcqA4y2ic13Sh/B18L7d9W7AEcbR6ZrLQXuB+rM4ZR97Ai5Wn59Oh+egtbWeBRlH7UF+HZtg9Cj+WLf+xX58PXv8ItkKjIctSac/WsXhDZYZC/PJhZA9iN7U289MmQ7dF3VehmE5GFlgeE6GYYWWIJrwgpBBx/TaoKwSOajBCzb9sBe9U2Hh/JFsBzN7jvBT0RDUcbnEzR7YFX5rH7uyWIg/Sx/HSxP6dPUHioblhoYk2cZlx6ugGuxqVR3xUORvcWrwD7jPuDJ/Em+n1AFW2PdfkYZEehRSCz5Xn88HLZWUnlWWwa1woN23dUYJBI3KPjjQTx8+1DSx1ZUDiUbkiYtoxiUi1WsSsZXgf0Tya/95Hw4wc3Iul2EQefWpOq6H4bB5JXhDpOxVIhy/+0cVxuGZJzdK5p0WsHjOJ9ExeMSWNWyvWmDKP272BvhR8mxs08L2fs0SuG5f+lEKCXH0kwxxQULTTDAjebUf5fCtzzl6RnhSDTwK3Tm51QTeFJ9rDtOUw78d1Ji9c9EonvcV+eEjzdDqUfqMY+5EnAQELCjV4xEid9blvLNmqHtoNqC9PdSsMD1K8a4RqIh9mdB7naZUDEVafXfzUrIKjs+dVg8GFUzi6hUjaSAEc9H5sGqPGDSa/iwYB6CckbvZ5hdaYavT4Sz5HPL4ETlfQn7J5Foe+rIdV0BBCyFPmGx/BTvq/7OwH8rDNkwG6yck0LQs//Nc/FYLjidzbvWrhqG9pi4vf7rJsGM/nf6mcOF8Px4/brASyyavmgHLet10N5cfeaCSAGUfzWi/08oDNmu8+f4adcBz6sK3waxfEh0SektoPTR758FpqffvAGPq6+qL4gUAWIotem4gkOq2WEM9qumoGw1ap+/XAhWbsKkpx445Kircp7I2go9H7NJt3jTQdrxkLxdOB5Ftj846vE2FbLJO2v2UaVg+G4hHiMVgsq9U/pcNVJg2hvn7PugDJ5XTLY9jgxBWrzzW0F5dRD0cFslvj4XEsYm0nMZw1BlCPNokF4/JMrr9RUgAtxpfa7jsYhDF6jfiTF+ToFPFlrLuMIS6JCbFrr4PASxy6Z4eJ9MBdsKpyfsj8rh9cr9RMmHIahehbQjXG0OZik/LX+qIxhTcL7g4oJD+q1/P5rbNwLbQ4GI8oQKYDr6O8XsRASSpnF37D7ZCKP8AQZNTBVwp1QyI3coHIUrMrVPVPYAOuKGU6H07GXTS0ML7QSUQaNcq0nZo3TG01v/nSyHHz+4et8KENEKV/pth+lSaP9Ut5KXHg4ldMfOXP0cjAynJuzZPveAd21xoOqLMqAebLfuSCcgfvrH+f/1+MH0pU09hd4qaCpvVTYtxyLesdtJGF1PGD9ZIVS1VQUlzy/SdFD83RnvmfBBgwgLYape6mtR8Er0kYNGdii61ndBXv9eNOTeOcuI3Y0GWe2SbLnnoShG3y3e6lQ3VBJ+LvEdKIfk1Gf359OJaJ1UkSdf2wWHHuv8ZRQpB5bfMfnJlPwxv5P36cBUF7wVYGYzOlUGvkzO54ZziGgs35MgsOwGbIZnhgOUy0EOr58txYFDTbe/Xdq95gfK8xqfdK+Ww9ys3MkmSs7oPl7ztTXwgQDPBzpFlOuZpP3nxv4wFu0QDyHJxXhgy9D5T6isFA5515ItSzGojFmA3V7OGL5VbKzm0foAY/Xh1Nx3OKRBbV3zOSkWBA43cRVulILr1gHNJq5QxHJ63WdjuhfsY2hGtOkQWL3awOVVRaJGZHpCtb4X5q9mC0f11MF3Ec4n9XuRKL1y+MwHk354K9dzINyCDKI3/j7WnKbw556R7BmOPhDfsQiJ+06CJy+97YlqkeiT4pDbBV3KfoVv+a44F8LvUokRfm4sKlKXdVXE9cCZiQkrjG8hKFkf9Py+TUBHSScFORt7gA8r9PqIbSEolzAaBdQS0GT6s0+MPJFwcXOI6bBwADxPOxtidioMqbreN4pM7gPLL7Z4cSiEcZ7ZzAn+CNTreXf2nnMfRPXn2L4RLwTXzc2UYPcItLn5t/TNn2bYlK8+bs5WCe1XTks3DUeipL17b+wlOmFA+gc+TIUMHaX22coUnhTAIJ0Fg06YT7aq/NhLgod9d+gmsERUwZReKlbSCZ8uC7rwXCRDnS/XgZ4EIkrosNt9oYQBzL/zusJfioDrS938BjUlTyr3UybUQ6GpPlxGo70QbtZtaLhMhqHh8v0XKlcpHPaCU0noexGwN2S9nH6DRTcZVAtpKfkWIBHkPmNQATIT7PhzlHxr20LxQmrNIDOM0Y6KLYdsTc3ftc8pPB9uVXclMxRo1yyr07py4Fyfa27JQBjy37ZonLIPhcjIwPaLx7KhQoKJcG40DL3HvTPJ/owFC5XgOGPDbBCS1aAyDAxDgeJjdq1N1aBHzdA/sxsMxauGjY5soei24QHhyZUqCFDqEru4Uwl1qfvYhm4Mam7TshW72QwSMji8vWIlKBkEinAbRqId96EKb9QCNgpUJuaBJGg4/1z1PyM8Oslgc56oUwVO5474JNa7Q6CVo9ufOAxKEOR+9eRnJfQEvfu1wfcOBn/oHXX1wCDahJKHplsNcC6Y5f4eayV89Zwo4yWHowlup4d3CT3wdfDZpFtMAZjSsHJzrxFQscXXvfp7qRAz9f05vRcCTKxpUuKtEHRH7HiHnXsr0NI9D9dKIoPQaFn0l0E8mmWxPr2U3gp/9eNfv31IBo5i/ErBCh4Nwikno7BWSIqsdYlZJUGaiHk0/wwefdzick9VCYaYxwp8357kAufCz0gfESxiKYrt82z4CE3ZrAPavjlgD/d0Bt5i0dey2rA9pwBg2rSpsjDJg44T2OpaEyzqqXA4VnY7A5YtWRhG3QthameoN9k6GOl3nMkdY0kDVgxHKE1cAax8/RiUczAEKQUOVxiwpYCG4Jv5pxYFcP1VYM/DnBCk2Hng2VpjKuh9xkmyWZVB2K8c9pxTIWgijnkyYyUN5oRI5083lYHPZb2AInIwqiEIv+V9FQb1Nw/wPWgrhlPztpP6lWEo6ZiyrPjBVmgzLB4KovDwr94ejspAPAo1ucatK9IK0v8UWg7XZ4CvjKihVSIeTca0Cyu8bgXZ8lPXvW5nwSERdU6XPjzipJ95de5jK3w54/xcCTLg2FIO7eYYHmnuMnBMCybBCzwxKpSzHrKKb+2+lsUgzGyOq7pnDdSUCn/il86Bh5aa7wPVQ5GeQPfBvxV9UFn5Kl9AsQhixzdkFLfC0dJj0rpMRAvIixFt8Us1MBI/Vst6G4++6yfe0ElsAZOlkbfSp2ugUw6Pn1fDo4ti7NObDg0UH1tLuzFeCwMWvgImBuEov81WZTC2Ae7ddVTKLqoDrjP/sCJe4ciUvpln6k4DhManTIwE1MF595WDURCOrrB05+5cKoZuBr0r7m1FgPG7bB7zNQjli1u9eMBYA9LM45lKyokgWzqXuyoaipjZrkad7akGWeH32meHkgD/iu+GK0co+sN09MQL5T5QlVmvuDVDgru+lR2NsxGou8ssXO1/zwUqidqVMubAttT+PQ9bLDqHXWSz5CeDB3dL0i5XNsgVmvM75mLR6G4iz+FYMmi9XcrzM4mH04LUY9FHcKjH065c1IEMCvpnfz9wiIFzKmk2X2exaOF7xhRPCxn2Y6a9MOyxcPSo0Y6pCA4lBJC8g52LwdxFxHh/vxAMeUZnPOaDULqqsJ5ZJgnYvnw55KWQBWcO0FZb6GARrWTq0VZ8O/w+E5jP2h4PoxL6EtmU3J5bb+lI82+Hf8b6hkFKMWA9WFqM/hCQYwvrcE5qIJCt9tlC9QtgYnt1+6EmFtnwJu+uGb+DfWqaYnuNAvgzhgs5kY9FoqMhjWV67bDcKNUU2YcHfNaVKxVjBKQVrOpa8iQQDj4VHA6IywedVUnfOW0sqr4km/yJsQfOxxyKPX0+Dj7UtRdcfUVEnDbHybPiPZDP6O4fCNFg/CLlmsszIso/hfmuGFMIbmsZ37ttcuHL42/8J/2D0HqMhaOrVhm8+XtE9I4zAslsxgY6+hDUHHmqJj09B47Q9SHZIxSfu2BhjM8KQr8kHUVCC8qAE67EM9mQQEEt1erv5RDkqGP9OK62FMoHugvtPUiwL5X3QKwxGHEyLJ7uly2DS+Z6x9y+kWDOwEXy404wignS9DonioO/mk5GM9cDgOB/SvqaVxh6Lb9yqZenB5j4tOU9hhOAVYrG7585EdmJzmTXlXdDaMtHwZh/8dAbJrb3PYiIPvZZco/Z9UBV/8lY2rt1QNecrrDKR0RmvaMXfsT1wOQ9F2HzyVpwPjW2r/ObgPqYWK5EktNBiPln/zpXHLCw95ytCgxG/z3Zk5sQ9AE6x9DvDapFcIp98ZjkOBaJ/Oh/+eNVN6iqdv6JUy+D7A0zV4FoIhpwCWnjXuwGx34Niw7K+UXtLdzhoXjcLdmS3C+QBpeqOnhlDeIh3YqgpLYWjDYOCWZ8pfDqpIUlt7hhFnhTWb9sofCq++9NQXG3OpBh3MI4zGbDsqd6Y/x2KPplwcSi/7MP5kyrZL6OFEHSf9wbngnhCPvZ84zTiCWoeGWrH+gqh9uZGy+iXuFQsjL13auxdeAnOOCJjciAROaWgiLaMDRjYVNc2VAMxhlnDf69LAFU1icdQx2M9oVi/+hr98PSY0/LfLcIOOgeYZ25RuH23zof/13qB/Xvnv3qG3jIzhKobxQMR5tbrX4BfJTj3afo2QUjQNH7I88vhXD0STKvOKG0EhhyvIZ/MsbBoMOIgoodBlmPP7gbfacSdM+viOzvEoE9aVPB5wEGfSwWdr2z2AiHjkR9szyQBBu2w6IrLyOQAe8xb+aWRjhnSlXleDUBjMNOP/PXiUBHrlgJxEY1wksZZldB12SQhTNcWNkI1FgTFvMe3wsm309bIZoisM+sSej+D494+A239c92wXtTxyA5NxJI5Cn2BVP4UynN3upGdycIpvQr6FDyxuXr9lfpFCLizVxLUYyPho7Afsw39nqQYv8Qy68firgzvqTm3qkHFWLSWy9VBL5TEbaDfjj0uOjH4I+WVpgmuz2o+uIL0bTcjlU0BKR7KM65nI8Ew1TKQe0hNSCKz+lgXgtDRiubd1bukGDU51am8qta4B61dnvDgkUCRoeEr/33HDiM7tyNL0cwPsWVp/wSh8qS7m2MNDvCt7X7ybefI+gOO2Z0TBGHcFJ/WicSXWC8n6exuB6B+FzgxqogDkVRTd7RdyTBwjrx5p++aqh08tawukDJh6HyPdVjQXDfwPnko5BSKA5Wf7F2DYsSfPrXPTkx0IBx2qYyKwOGxcYzpUewiHk4+nLri/fA/aR24YluPmwMvZb8HI9Fsie/Ts7eCYVvN//b7/cshQFHZQWfqTBEZ3t+9NNNDFRPPwtILCoBRdeG5siDWJS8pfJYs6UebGdLWXfmCeAQ5RUq+g2HhlbrnD42J8PdD4baykz18Dsi87N0awhaCwBRge0UYHh1RempBxmqEedC2tMQxCkVWnPWPxV+xBdtX6WvB8xLXZNByRCkZzOd732mHvqvlR9oTiDD7h0xdxMLHCqoUZTyKiXDhssb0+wCMhg3eul4n8Kh+/rRd+T96mHtSbf17Lc68Nc4WSNfgEMTTYrqHsv1kL70Ze5MszsEz674Rh8IR8xB3V2ejxvAHPvA/lWbK5g8DEr3UAtHWlQfbet0y2BTZvR1c38+qAcaabIwhqDrgfp5XkwdcHnkmsaD+wjedKtndUsQUcotn3JSYD2UK7/SMM6Phr6BHQVSKQ61MIhO3NxOgvOxF9FJVzL4pf8J2WfAoIB3a+mOtb1wRO7ivWAzG/gauz47eQSPXA3K7M+I9sP9oG8fq9mr4ams6Nre5XCUfPy2XEuSE5z+c0/081wKfAj5Nu0phUOd/UuaEmOvoOjRhUPDXmlw+NegCUEFhwI9cLdS+MxBWR92FuzTwS/V6yifGw7hRTEjUr+KYcizvPyKDhkYfp6tSmcORliluBSaj6kwOaRIJXYjF1J0j3yQPheCxCJl8z1X08Cmdh9/lDUHzv4+k+BM4avgpBEP1dI0wP5pnF+KzQNO32n+2/3B6KTFetQQJxnCsU2Y1GOZwLpwz7kpFYuEQw7tX3lDhva4m+FLc5lAJu33+c9jUdC414pScR/QZORKtEsgiNXMaJGliUCyJrHPDWdLYGXM/PdILQEYPaKn/a0oXCeGJisfV4DZjju1CnUdiNfScJXQY1CdQQN9xwgCryT/WTd8Idyd/FEnVB+GOkhUHTTXSDBw0HLOIrwIUrqyHjnTYlFDlaC2S10F8BO6xfaNain+YSGqIoJBQaOCHtdG20DCcaGDfL4QoGeIyy2WgAoih2w26dvh2wlWHgYKlwLfypRzKQGl+CSEHrRth83ELW3b//1PVX/UeuoHAZmNNb7ykWqCZME3BDXHYlgM1QxeSqT42hMXmYdljfDh2rzAo8hiUNs7w+x7LwKxLN4zfjTQCP5RaVtar4sg0TE4VccwAiX7jrK4VZFhklEuK7IpA5RERVuFeHBI6W+aaAlbPRwVp/5KqsqA3bksjlp9HHKPL9wUv9kAxfea80ZPVIAADA1evxaOmCo14p8kNEDu4WoFf6UKEHwVGbDnHY5e0HK9lBFrAOa4ED6Dw5Uws9tL/CYWjoJ/7v0sfNYI//ldEq1gL4avDdu/J+kjkBiedGCDoRG0JbKjholFQFsc4xffHY7Sr2dvmg3UQmXbuzO2prlg6OGhGkcKRfxs4z1GFC8YmLiKTx0iQs+vO7ItFC9QsNPv+EDqBrfdhz0hgSlAX259sSOQiH78xSWeKOmD2s8sKbMhJDg8+tEoljoC2ZWUdtNxlUBfxeKd2fY64E9Y9NnnCUZq9LpM+JEGKMBksPxxKYZ+r8MiL7PDEftWvV/d5z4wO6QDXyjzZxm3PLbfEI48Lq1kn/jUCQdP/oxnpPjR5IEWxcQoyv7O0t1jpKH0SMrDw8PhZGBsR28bMomIkT43d/5pAMhl/Mh95x0CB6lNYo3MKLxq6mZ5VOU91K0q7yo/DwN9/Y+LB5KwaPiMkY33rUZgLDHfGz9SAt7cV52c18NRvP+O3IxWEZjc/pc5ffEtqHCGzginBiHPB0wXj88UAubXZ/u+z+9gWKK1mQsbhKJsun3iTxXC0RpaNVYZL1CKljle4hqETv2MKGjtKoVR2Z5BZ+kSGOu/L2HUEYxUxDg1TqiUw74J3mS7rRRozhgfrvUJQeTWuOBW63JokTXxD5wvAQUG096b4SGoR8i1g9YwALg/btUuhpHAQqotQopyXm1vg2sUOsqguP5yaGpVLbyTpjvLoxSCGrzUbh5VKYNaSHt0vrSGcn6Vz8RoQtC1oGu06VLl4JW3qSnwpQYIh5QrZJxCUFxKanDqehZkLzuL7LeYwzFSmeyd70Hopnyf3HZKDijkhkqz2drAqiXVxDcKZ4rz2JM7JXuA6otXUWLqJ/Cv252nf0rhvfCwk6NHeqDrh0unhWQ9eGRpDQS9JqJCWs3PenndINdtffQjZQ/oVwK+smKICB1zPcVI0wMXP4QVLBaR4ZLjzZ9+zhRO+9198ZnTO1ilH/OGGyTQ+kwoWaL4xSX2e/H7lPyp839HOKsZAoL+7BVdlPtN+vzNl39ZeuEaxzz7XmcteDz+z2HoAQHZ2Mo/s1HpBTuVr39Edmuh7m6on/AyHp0TaM66udoDtwaCsKfGa+Bc396PBA8CavVOPmHG1Qs3tP52BrbXgIr3QtjADQIKbY8J1ylPgo/bmed2feMh6mvQR5GTGHSoovpx0k4CvDm8o+MpFA8Jj1tYvzph0AStsPsIoRiiqOVt5VLdwEcsdF5/LQjd/mwXoIQtgsO513UVntnAQ2GnnjuFQciUYOOmMtoHK6Edt0g6YdDYynOaviIcfTA9atE9UwQykiNW+DI/kBZSeaLTEIQkbE//DNsohquD5/vS/YuB30LNmoUtGPVktzSX9ZSAoAyfIR1vCZx9Y3w73igYDbY4ft7/1wi6Q5pDqiHl8JTH+jbZPQJ973xQXeTSBOiJ4hdHjXJQc2MREByMQPtJcasFKk2gbymxZKpW8f/va1gXRaBa4bzpXwIlYDUZW0AdUQRktTABBv5gRNYzTIzqaAL39yfsZzkr4PdBpxvOLJGo3q/ohFpgE/ji+EKPi1SC0puSO6HTESh1kLf89E4fbBpNHYFX0bB+dHKniuK5Ez7mMhU8/eBYGejDWxcHyw9/hZndCUf/Fgudx8opvHqPsZc9OgLahm06Vykca1mmoXp7rQNco9xtyNSJcJAjzzLBjcKNZoE/AmvaoH817/yPnXCIsms5/yyYgAyMx70Mt9ugfNdeoewjHg5wu60fySUgqumrLeQfPRAwmad32DcRNBnseGNDCKjmlkdHBU0v9Bt4rJ3VioeM1hQtVWMCUqzdUrlDuU94sx/8WeVNBJWDhaWH5Ano0LtG99yybpAyFzLp5UoCp8MGMsLBRPT5k4P4JcVu2OX3foS7kgjXWv+NTSYRUdOrDb+ZlxXw5E3jjPZaDpw8aWlRegyDzpSevDVEyX0/5ZzG4i9ZEMvpSvubBoM+b/K9d6aphCerrpUHG7KgxjOeSHsdgwocF1+pfigHQdOhPIWhbBh9UDqanBSCjsZWagTfaAWWiJK2rC5/aLgmx3c9H48GX9MSYn+0gHyCBGPZj3egbfAel+GCR/nU8kuZt1vh2G5ZK6eVLzQ+OK0xUYJHyXOSXCYjnZCcOmAne7AefOfHjJJSiWjBvvvPyced0N6jdUKFqx5KxdRvhYURUe7i2MtbSVVwqtLZ0GyMBM/TX/6nWIZByWlJXEsm1XDY7638UW4yDHzCc3X8waC2Q7VLfxKroHmX+tqGJhm4ZBk1xSnH+xVYqARIpIFFf0hcsUEWDNSzH9H7F4w60ueo1L3S4Qn/LRbr6kx4xdNsFxUdjKLz5fkz+6tAIah1xV6bBF/LiiM0mzBoM0EmwJ0Xwd8Exs/BkwiWg2KaBW6GoVMzmm04bwRdojFsenQkYCyk7r7uG4aEBj9ZvnpFhoBepWQjvyJYGVb45vsTizzOeM5NUuZbt+Ag5OBjBq3xBw1PUeb7+OfafPKVTLCvq/xb/yIbBkL2jaUvB6O4vTOWffQFYEN2aeu29IXUp4lbsbZBiLsiVYyaMx+kRqpXXaV9gJtj5UaXSxC6hxYlrYOboFOo9e75NSy4kd6LN8xEoKHAkshP0Q0QXvL3SWxgEYS++c3t7hGO/J21VPYLK+ETccPB/CwlJ2cvfLtoi0HOhrGL9RJksD2+8tmrsgC8Dj2e2S3Bou44h6ntKRKYivrQ5TIXANfMIcU0TyzKfv/nu/dmHTzNp47sQYXguxejsiQUhogpplgJVgSGVzXmMhkK4bcgnYG4TBiSHjRllfvWAH6+r8U8tUtgKciEm7owHO1sneQ9dK4RmgsfbGhSlcJyxola3blwVN1O9eiIdD9MhGyNSotFw3+sl0hVIuFI4E01jdV6E5TkEexp+bJAp972RZZkJBLyf83wHdMEOte2+J3OZcHx7POnfH9EoCmDjw8um6XClAHrwadl2ZCjmfbb4GoIknurXkopfPj5VtD+9Z86WHxruUj+gUVDVqv/tB+5wv3Y6BgZ3jpQmbqyGcJL8Y5H7UQBpdew7+qGPlMjSObyMeABHNpRw5odKuiEnsS7hitBfvCcyklCLoGIfOjFGi5ZZ0OYcSPz72kSTOq/SW/rD0JSpxjTTchZME07iYu9SobOdpZ84u8glPNKUmbYswfkU+UHdJ5awZ8LYxVWx4go6p5Q0eK9HtiXb/RS9zEFFQvhqxhFIurSNOY4FlUBwuQT0glclfA0elb+HzcGDfa84CyhzFeica+MeKoSQJyzmZsy3/sh0Xm93JVQV3NsaOZzJVzy7Ek6qoBBx7LKGc6/qYfugPGgm3E1QPve6uFSKg6Zew69/1JdD4JCv4/5elE891BbbN0wDtHtvHl2lD8dViRZGeNQPshMPRT2LglGYMeGv5uQDNvsTQ4n7iUCq1jUD98vIWgbmxyzLlAJA+1HCYYvKsA6ybGFTwmDbGiyH+3+rIT1eXKO93UKpwv9qs/0wKAqmwd/egj1sKU3/81rKhGql8ezWUg4xDsILmcf1UOv7N+RLZ4EuNWoYgRBOETleLQ4CNcOJzWGegTOkIDpqeyRuk0C4nTem8SFpMLTm6UqYWn5sKn5erxNPAT9OXua2bU9GUyvX5TWDM8HcapZt+rmEMQsk5FUqNsJB+j5O9/8iQIOiSg9D0ouvY9oNRRM7oR0B7Y3/Xt4kMeOfjeII6K1C8sDol86gXmob9MlLAq8P/IoCFPy7cooaU30ZynQ1oZzudwshGX36CXFr8GI5XWiQFRJK7CmRRiWFCB4bxrhpLSFR1/X7tCnzHWBwOMl96dPEyA+tazqvxwiCnzBykMj0AeyyaoOrnwVcD2c/JIsFYlWZTG8iRT++XhQKmhVsgTOuOpFilL4h/qu2wGVsUYgiM3dkiwmw8FfRxvrzSNQrqTGJpNzI1SHMN5+kUKGD0yGIwunI5Dz7Jf9soskeFtTVqfj6gqsPeLX5aiwSHWO78hqJAnkpQSu6Tx0h9K3q4Jsqlj0ueWz0nGKN1FPbNptKpBBneplpQXFmxIK+BLW/rQBbgx3ZKeOBLzWpz/UZRLQzx7eQ+/xbWCjvvOee5OS5wF+E4GuBPQmQq7R614K+JcKKDqdRXC263H5GUIIUvuze923IhUU/jB6GNEiIBVPb4fwhCCffGrSf4RmyHx89QhTZSGEtv37PBsTif4PbYs97nicDJd3PNR/HMeppGGkIiqRrVRW/BDeJYkUqZRRMgrJTIWs7HXGnZv23nvvz529V8gMWZWVUinpd/9+Ht/Hfe8+93q/X8+nekPRn7OXW4HzPWEcM1AMhjI3nniaEtH16iurwaatUON05SYtuQT+K8zsaHxNROTDt4wqbg1CgENinFJtBfiz835i+heN3ryWtyBID0KQ9oiuR1k5nDhjA9ZiePQquG6gLKMB2AqlfM6IloLl6Krr1n4sKuUKiaToxgLJa55RbaEKVti0jmKsolD1fn/SglQcvEyvVvWhVsPF6cQ30jeikOKld0Fyp2LAQo1bTXOtGtqFLu3ZiIxCPyYFPec240H0Thuzgkk1WJ7xYbbkiEIfJ9fal83S4PWZ5O1X3g2QVauy1h0ZgdZ51BfUnCoA0TSvXj7pBdfVAoKUuSOQwu0jefonB0GJmfsbo20F7N5RfCt3A4++B/IY6/iVwD052ulj4zlAOWwWpVaAQSdgiLuuqhjOD1rK+2blgtVUc/B6GAbtmVg0F+aNgIRcCbk5y0qo/fHgEu9xHDpwOvLnzGcMrMVcu3D/LgJepc/T5udwSHrUpDX9SwaYezP/WyqmQpL2fSXjpnC0i4Qt0WkJhuDLDF37qZWw6Mo04WSHQ1Mz4e/sVLPAV7DnvlU+FWIoaoNGtuHIWVph4xbqBQnXfYEaN2lwNrdgP3cYBcmrCn69r1IKmU2KD3+lNwBBhMFQYByDKkXvXB/nDIcadazAEKYBGhZ2JxSfwSGSYBd3NCYV+itM7ptFkGDtsx3j5lQEgtMJn+4O5MGr42wBxxiokHDSfOtEBgY9CLnua0/Ng0NnGx5aOCPQ36XGtJSJQaHOYh/ZyAOQeNN2VjWWDINin1d6FQio3eFoY2XMAARK3rfZ+zEOUuSTY91lCUiv+5rZN65cEMJaxuwKQ3BA58ir69P0zxHa/eTUvwGYf8UmKxxfDuykz69Ib/Doa0vm710hGdDCkCnXGecGHrHGpKUP4UhrX9l+7R99IMmkann0FYIVK1JRoAsZST0z5XkckQO/Erv6VRipoN3wlm/vDwy6kmndZyhJhrVZnpT08QooecsR+HkgCsm8+KvWeoEIzHnYsG7bSkjCig8xcGMR9dq8qr46AUY2Z8yD1SsAr3tkOlUeiyYTaNIHrFqB2WRJnNu9FOxWt3IU3Ilotx3DZ71DrRBKPNVj9acUBHgpwYWqRFQaSb7NN0SCu01ia7HbVOA+eY7/wocoJJhtel9CDQ8HRHZNSXLSwN0tf/GZIRb1eXobnggpBpveLw9Houzgxsk7BhkBGJRrHO22Nt0GXPvU73AJVkJs13IRyysS8rSy0jr/px9ux4gdDk0IgtIDP6prA4nIcffvpV6ZAfh67VTym7OB4NQddSeClYgeLF6WCCxsA5/vrKp116tA8g0a5bhPQmt5FFKAexdIWU4y5pvmwgarWomzPgVVrM8svGBvh6cRTlJjclUw7cj3zRlHQgdltLdSVLNh0tfJJOhuGkQzoAyqbDiy2BK0mLVsB5eRqF7VB1Xw87sF3OogIfja/Wtbqh2khtYwifLVIOk4cYgli4RMfC4fu3SvHQ6w+BJz9SqB+f784ng9CfVHcZ6XIbWD2v45sSr6vPvvNRtNXSShVml1pUZCHwj3p/0+XEKDJ9t/wph/kdG+Cm8nePQSPstKGGdbFMLJgr2aXqrRqKVy+/mw8VuwPBySXRRVCI0lHbbflnDIicuCd/RaOfyKA7L+Qhmc/sjw0TEqHOVPlLrcf1IG38RXRRtPl8PQCMvgWYVwxCQ79OeDfyHUTiYfNLkbDIl2Mcx7nei5chm/tut3ITR0vDw8ahEJFVcPfyyxwyB282emfKfagffodnPoBxdgV280zIgloa+8BWvHQ9rBOzBudybGDSzbPl4Q+EBCTZffLsSUx0FFzsf5XWdpYLAPuDgUo5BdbJFIk2Y8rNu95awookG41klVBVF6bncTozQyusG+f+/vkyZ40BT6rTWcQEFHHxkx8/B3g6COTPCTWiKw3vrE9DyAgiZv7Bt25uuGq79HOhdrcFDj+eiqOv3chXy0qudjDdQbadyKRjTgimSfNO6MRBVPaRKk4zWw7MFqNZJFg66PbsKGmEhUc0Ph3G7OZlA2wj38zVYDgRG0d9LDeFQ39PfQZG4/bNQx5ZXn+cNjhTTJh+dIaLeMjc50Sj94y63+di50A3nd6bg2VRJS7f+vS3B2ABwyt9qe9SKwpMYk2ufj0YVZWn8o0yBMsLnWLEhSIXlJZLjYAY8w53e5BtT4QULOXEVWEx5klcxMIqtwqC1Ovs3/ljdkvz8l1FGJBXxZv/jNnzhksZMmrFRWBDLO32+qKwQDUSpR9dYLDLLsah0xLKfC6rtibiFAIH7uazXrYxxSCPaJQF+pQD4RZ0lqaAC9hdsV3KE4tK9l66DOCRrcsroc6XAfgVe11ROtLBxyThy6Ue4VCjq8hYF9UvXwfOW9edkdHIrS/LoW948K21+UIiVLq+HXOnFCHI9Dyvqbkscf0SA2i6Mm41wNmArlOq+P4tDKnzRzKUYa3PSS9Zyqop/Pa3++RcChk4VHWM0ONUNnRtZ0fEUm6NYpnx4ewKMJfRT6vagJRBw/rJQ1ZYDY4pDW8XA8uvUtkZmfvRnKFd6umOSlg/Moo+JyPx5ZKLcKRP+lQhgj9XANvX+S+6Km83H0e+s5MUO2pcGXkF/Tt29nghtD6LbKPA79TDp3zClrAH5Wh+R9LU2CFb8jmbo8BGRC/mFW498JBzo3jzpUVMOdhJqIr1/JaDvEOwFzuBMM30hwbojUwB/MQ1Xtavo8ZggeOcpPfx5zpgFzoRqsqew/D1PJSNnEVsnduhOm/j296kCtgZWpJvv6OTISwUkd5rhZAfqPJWyrgzLB1lQlOXBvBHqzUbAn92glpJ2Xw251ZcDHdz8L7Kwi0J4DCpXBOxVAlj8fnJaZBdUdT3WVH0agKuL+rpTsTMDcvRZUEFULsb01E030uW40yZyX1s4AzTR1v7TYWugIe+m6/jUceZ2plvbuK4KnXLYdzfcjQd9SlOunMwYpulXHM+llgMDe9Qz9zVIIzFpI+G89HGHlT+GJNdHgLZD0wuB5ETBfFWZMfI5FWJGqNi9hLFQ+zpKJ7yoCdQYRE1wTFgV9bLBIMWgG2fDd0u9UKKAY5rSzzkxAfl/O4hVPNcP0f7/zsZfjwMZThfZxAo/W83h3F35vAoavrI3OfmQIYTH9UlqPR9qCnu9mV2sgr/IEeV9WDqyV3mp41xOJrg9k75e4Ug46VgW5vi65kMt38olHRDjaxyfxTdyvDP5wy+pMu+YBT7nfW9er4ejFKSXH0wf6gUNXxcprTyr8+lFe3GhARi2cBmys6aVASJc4/LEhHzwDzSeObGGQ1/qlT27YATBCJiZScYnwn4+M+z4NAho0bfjO5dsE4gFno6KuVgLf40NM8zZ4RLsUODc+0gfb9TODvAGpcLpYlOlzKhkROIml4VfC4Sg+k1JZXw/pQ+fC50RxiOPMr9tnP3WDB2tP8Vf+KshQiawVzaQgwsHOvsRX3SDaYrG1h1YJjP5uvxlIFISSLllf46kC7w+ryYfoeTMrfS//6WsE2rd/UMTBoxKiOc/X852pBc5L/sau8RFI1jwnCLFUAy7r+RS+uAY8SxbOPFOORLOd1OcLxjUQEu7FlmyTB3zWywK4pEjkKtDnvnUsGqgXvzYctSiHhlfHmgN8sEg8fvXxLRoWuqg2qXWlZfBq/VLASgEWGc+F/sM7VkOkkUVfN18esLDN/+43jEQPU3ryu5q6oPaXR6wguRpYdNU+DdlSULpsDeZ4VxdcLhjjNE+qgoB4M/Y9DhRU0vXXHkepBO6PJuJn6XlMlWZW6MmLQLuPdzvWllfAcXuq6+n4IljvjHL3VIhAypk5ZLJ+JZh3C3pY/CkE1T/ftZVDIpCK4OnqVS83YCyWfn5XPxGYVLhYX/BFoyaN9asMpwZB8lxp+9BcPVw5K/Yt7Dqde/VPnNW4PQgJkxqOPOsNcMKEP+/pn2i0f7Yv8J7oIBw/F3pt6z8Em2j6b7sCHnnMVto/M7aBs5xeihSvWMjftahHfh6NXmhv7Y8/4wIlz0Q7L7pQID7jzC6589Eo8zEhUlKiCnqCLLRv7CmCJUsJrPp2BEqdHuizyK4CzcTGUo6+AkiR8m25dToSPSnRYJMQ7gCNZ2/YE3jLYUS0Y+2pIhkZJeeK+IR1gKXk1SMC2uUgSPNYZnYmI+Iz+//ClTrA03bOzHJ/BfgdHxE4pUFGUxgz4tULLTARVOxJlE2Ctu4ojvtJBBR5I/Vv1jQCg/MF88Uv68Ft7WRQbAsW8aMPmV16PtD51f77zvk8cGwc3l8wjkMXQ9TK+nx8YUCSS3uaoQDU9kbQdnfikHXQd+uvqwPQ3j/kZxFeCb7EfEoykd5TvrXCqosDsMsgU2QtqwLuBG9f1UjDo5mMZ6llmbmQEFMsK9tUBt8fE3XFOzHoehe7jRNHPrwVU25oYimHd4xEy8xEOm8vfy/47twP8Mm0L5zmBAY6PV0H4+jc1Zpb2SjZDZpKZWkD/lUQcrGBTSWEgrS+JZ8r2uqCYlpuzK3JSlC7PWvT405B3aFfLT4K0j3HrVkhSQoLD3VCtxS+hSNWPbZf8RQEjateJI+kZNjQ6D7/ORqLpmtfKDudQ8AyPG5VX5cMAuIya+evY9EU6YDiUX8ESdetRm6eTQX77j2PS/yx6MQ/HXGzly0QsvJ0ERrqwOh9ZxzXIAHZK1RrRM62gLNzfyhfUR3Ezz8eHOAjotuHcsyXQ1pAu/W7jcHvWmCRucR+c5aAxO6YqO152wco/J1BFLcb8N05917iEAU9CFvPH7vZB+b/YkZ5JV/C4izL7Y+XKciLM8Ev1rUP7EpHkJCvL4z6ifFuH6MgIu1piWR6PxybToFShQy4RA58wqZEQsOtihYfrWvhIZtpim51HsjGLNkXbUai5/aXvnjP1cKoyBWZ/7A5oPMuSIeFNwpJCedov3vVD1nZe+tkOzKgzHyDz5ZM51LO4KrRzX5QfpC17CycDCx3PghcxBGR9gtjnwDONHj0hWV/9QYVeKnS4yG5Eahfb41UWdMPd2qO+53ipsAdD4YyPBsJZWPWJpxMEZQm7rdvKi4Gr3hruTh6j7T+yO/Zpr8XH9B8cZmvAVxVEhtO0d+rde/k6Yy2crialj3F3N0ArQsHU5Lbw9GVcSfmRlo5iJgfsaXk10OM/eslxtZwdCSkTZw7KBGsiLQQbZQABgbF+Bl6X1idvXD90Z5BMEpdyb47XwqdXVyGBU54FMTPkMBT3AKBPfEDucalYK72YP/MXwIy0w9xNmFphQu1KxVT7KWwt/7v0Y1LRBTcVTbYzNIFAW1672+NZUBUm6WGnwQFxZ9X+zPC3QWq4+dn/Palwd+GwHhDKQp6nSvHdV20FB5tsGs4mdHggfSNs3/eYVB/AWeGsXsJJPxU2jd1kgbvV905ivIwCDt1q2zNqBQOND0Mvf2bCozqrXK3PmLQvRAxvx45BMxFz3eNhzeAm7eBZdUtLHpvEjc/ZIfgEfnS5SN29SBCnRFhfoVFpw553r7u2wC39n6KYZpqgPidUz42f6OQvmXsyhGDcjC6Jycz/osKJn+WhHnJ4SjH/Y/LXl4ESkPcb+wH62DC4i5P9SUsirixkSGX1AK7+7yvNqolwcmahHzGDQJKH/gvZW07GCJO9fMwFiFQXtOqOWODQ6JZ+FQ22QCgqC3stdRHwFkdf0Y0FYfM8k9fPKjTCovHXg/5acYBISZRltWGiLp2jalubdDnKEV9md81GY6tc5SpnyWicdKuS2qVA8Adp5RYVEWAEwTdg77beGT5Yu5T5fAA8Fxm0LiFJYNnQE2KbCMexSRo8ct87oXx6YhrbdRIKP3CLSf3loK2L/ORps73geuU93rKQBRMZGz3KBlRkLfBQNOXT33w/JlXpeXLOIjmC4jcCSGj0MTTbZfP9ANGez6Fe18cGHgbndwQItN98GBuiUg2cHS733jH6Q3uV7Ayq3Q/kpCiMsin98HuhV3PR3eSYTMx8WjzPBmJnaw92pzWB/iqQ5+7DqcBPj7gz60FMoo4OR7B+aIPjh8u+2wdnQqSHYybRacoyPC9j9j+nGg4KUf1d1yvBam0x3fe22ER5Rhj+qtoAlxscD/253otYC/ILf6UwKIaY2yavhgRiv/cSEi2rQP/XfXfGXmw6F6rw63aIwP0XvO+K/EsDXaM+v9R9Yio81HgdOreATg9eyunaCYF8getDfbaExG/9lL3KZFKmFWZPlY1RgXj4XdzOo4R6Mme6N6kuQqYX80VGr9Og+8e8/+UdSPQELZjvUOvHbDN4fJBjonQwcHzzbCOhG47tF50T2yHMXtR4KiJh4M4lrzEZRL6R9hXw29EgIe5l3y6v+XA56lNk1JZLJpsVPBWwZGgW2qSLAq5kFSymcS6FIUCDp7V7PQmwHPcbyKfUR64tdRbJFzAIjW3p+cMLvdBU8hHLj1fGjB+O2oWqk1BJEfFe916WRAgG1Ff6INg/+2LBb1W4UhodJQ7/0wmtLzd58sqiaA/tGL1fEk4MnyR8rm2kz7XI5IvB+sQqK77JbIjItqqwnS+XW2FQweyo28bIAhDJaQXI0Q0qjKb9oZxAJiXVWrkPBBUppZeF3MjojDtQE2/oHr4t9xyxOo2AXDjfHVrGVEoO1SDce5KPZRXins9fEkGjUNG//lFRiGmP2fD1a1I8OmvL6OWPgkivDaqRlaiEHnNYsmZnof/5DF+Jvdo0HbgIetteh50Ti8FfH7WB3sdPoj30ui/V1vx2qQIBSliH93J9u6GW5fnmazzwmDcdeNELZmC8Be57nzY6ob8c77vxWZDISeWXXooi4JSHnh0lkT1geKDMKn6zERQW/xm0PuXjDiOPrLQfNoH75xFfDLMkkFVIH7Q9CwFKe9jjLS91wdlvvvt8LkJcD3nZ4aIEgVdD9nst7ydDeOPv+9pMqUCxtX/Lq9UOMrNSzNNSMkEk4zkxYozvqBf/2YfBheOwhwf9F75lAmvYxKuEtNdQKYgS4PfJxypc/0xH35FgHwpli93M+tBothP76ckFpV/4i2R8CWDoM8uD+z9evBrDf/V2RqF0n1H0y9TSdCRU/XvtASd0963EsZnotAYh+17y40y8N9rd1GGRAVxyfVTy3bhyNaQopPJQ98ndpWjh/9lg/SoVc96FAH956hh1JvaAX8tlif/BNTCHZmy8jNvySjSwbd1198O0DW4LnmSzs+nI3vvmhaQ0XhntyGZIQlkpJQDn7Tmwc4fP8qBYjrfJskSeVoSIbHBmF0voBSatFTRj4ZIJMRW8VUmsAEEamp8aSEIllWc/zXtRKGwRv1ZZ34EQcsBW6l3EeTYcjmeUsWiosmLd2prO+FcFsNkrUMyFFY3adQfoKDHe5fUeoMLwaX8w80BFSrM/g1qeueIQZXqDpeU+QvB0Et2TDaOCp2HZO//ccGgsFfPNz65F8Dyy6id6OtUOMR0t/ShLwbtfjj2ri+/AzA8+GdSCAHxfm9zQAAZdYQ+2hF/Ww7SSlPEOJ0sYOIRnbiUHY40V+XOL0qVQ0XU53vL5dng8+ceW3VQOEppUTq3GFAIbnplVkTZSui1jNqzRf8+ez2VCk5dLQJtb2UiW08lzPOvj3LaY5BAxLP4PS/a4Ieup3uRVg1oE8TKzl8goaeHbW9YarZBgP3Q/St0b/AHB8zsERIafSyaboRvg5GZW3bCatVwXXZO21+dhD72sHptvakCfz+LkviZYgi0OKwKRyORsmQdi5xzIuR6XdWfCS2BsDahmeLBSKSq6S9gcLMH3gtxRRzkpEEiRdXibQEFSWTyP68iFUPDxp7ehwYYuFd+WMonCIMCFw1D7p3qhqLYz0GiOTQ4YNVwmTGA/jxr42AXnSdF+NZqopaokK76qHaIzpN9RlWzuoUlkLqZfDd2bxh8+GxaZFmJQYu2xd8ja0qBAee54Hs4AtL+jjDV/sOgqUgl6/usFUB7YCtA686GVSexN51L4SiD8uqVzq0uKLP+WCHKXwGCbT/fLKlTkIruQ9Bq7YS7Z6aflkyUg7IZ5xcjdgq6wXKWaHSsC8aaaiky+8pB+EWhaKMkBdUz3vd3+doJp3rKsiMTKkAp0VlJ7zQFZbW8LNhvXQwjJTJxnQtYaBX6VFPig0FgpnvaLSUJzDyBW/GLD0g5O4xyhUWiF04W8sOJSZBvJcyuOvgKvFd1Boro50KMpg2Rd/pBc9naTNuABumEQ/yfxklo6RPTpXn6eTvu9oGn/TQgX78udot+nir6YXOjkArbHV8MkhUqIO3HdJ2QMQ5lhauHsZg0w9AR/881uQVwzotncewgAaVsxa94eHVAY8kn/ROhyXArZdZs5TkZuRZXrSb1d4De15vVFmspkHzkl+sGiYxcJG9Wf7uNBSG213G+Q5WAG3lhWVuPRcptEU99P/eDmW2P/xlCGlx484Q/NIeIrlzAapjs9MMa01NOA/EcOKhXPzbhTe/Bo3cv4pbJ4NfrjFfXK4QwLM0ntyoKzbFPcvw4NQCH1TZceihZoJecpO+rSESv3BvzIwUKITrXR2Htch78M9LzbqXPXebPoF0reyjQEOScw/m3EiJdl72flUehRLnIEc/3JAja0otsla2GshBYqZ6KQgm6PVLwkAjvmiPu1l+rgoq/l+5PcmCRTRVrrMdwN9z8fEom/kEy1F5rPHQ4nYIOUve9I77thsLzc3+9K1IAk+p0c46+52OOPc8MtOwGu9OaaXrbSUA0Z2LUwlPQzLntk50ueTC1T8pubq0ElHRFan8VYtDFlSu3dr2lczvj25nuaBr8JOd0k/xJqMHhdPyKfCLUn9TcUXvqCTZGhuctZyNRJs9T5YE3eCAvCdqfJvrB3sI+/i49LGrKIrPE8uRDRd3E+eijZSDBJOgxloBBYgkKE1ckB0B54OAnjAoN6Nr9QYaTiAYstNMdZqjgLbz/KONsLdzkKtut5kXPgyNnLOZ8M6glJMcJGadClBN/Vc0SHi2p3xKXlxyExp/n5m78qYP9Da5c+yXw6GKSRNnkidegBsP8CyfoXvbe806XbDTa3PaNs8aXglC95p/Q5nhgY7zHte87BuVY4oS2WlKhiCfLVXX2CTCFBYtZt0egT25qT+qjcyD/dEQb7Vc2uKhb9vBtYpDvvaVJ/rU+kM/ZYXot2QhKjAetbviS0Zme/uTvTV1w6WZFJcakAUSPqq3O2FKQ5vpWtaBeNlz6tSC30pwFK4mnd/2UDEf6uo8f3rMIAa2Jv1/+46FC0cfjv1ctcIg29v75A7oX7S2f6BTfkwZB84wbAaE4dMq0pP52GBXyPFHtOkoFFszKcP5lHGIVXNb/2UwFavGjKS7xdHAUc1Y3pHP1eIdWxvrJKjrHe90IlSyFg58Zzn3+FoESXUquTl/rg/aNEN/q/Ex488Ts46IGBamxWvz3wJ7OFaca4zj2ZENFxwnX1wL0/EycvrlQOgAHt45le7zGgfSJ9Px/uwjoXIvw8IzpIITgD4UNx8aCxjqBK3AuGkk9WVmMxnmBoYVDtaBaMRwPuip8ZQeHvjJ1ENt5m+H13hMsI5haOPxFoCFqAo84TbxXZt42w1g5dnizoBYeWzX82yNMQP8sGrK62M2BS7CBtX2pAcJL2n6/8o1Gl/4y6DcyEiFvSTd79EQjOIYc5pU/hUXdFU/GeSqjwbjq+QN50UaQFVkZP2aLRbfnras2X+JByupo4MV8GpxM3sVGuINFKhxqo3PHBsB75t7oFrMNTJk/pLRoEtH2y6ljXpcGAL7aJ/yUtIKB1NfxC78JiP2mKiWZntvZZpPWevk3MG3nW/XkKBEdH2V78L22GeKdsxraV7NhziIzJ0KHgCSi8IK+qh1QIJOQ6vyuCr6T5JUNNclodKdNPy+7A6qtF9Iyq6tgz3sHEV0/MvLVP+/oat0BxZqX9Htjq2GOpurc85iMrOU9DPZPR8G7Rp13V83cYbJeNSyvG4s+LcpdOvehHY7r+zyVolTBBbHqzkkOMlIa4uRrVOyA409ZDnbvrwKLsZybOdfIyPH8m2f/rAcgT9p4dCWVBnuySC/0KARkGcH46OLNZihaXKo987sGiNreohs7eHRXTUqT3N0OSrwdYxkrliASUtTmw0xGGQfquYv0OmDDzmn+hY8tBO19wXT6Lhk9vBbce/ZAB/CZnS9q4ncHmoVD2cIZMppffGfr79cB+xTe9rPccYfiPaed8uzJiEE4WI4jgwLXMa92caBnsMLAy9+aGIXyNXB5RU86QeXI0hh3YB2MRT3d/W2WjIw2x5fDJ/tB6ohQ7b+TjfCjWPfDf61ExDO2UKJeVQnmlm/Mw35WwW3b83u56yNQRUdOsqpNFQj5Nb7uCS4HhR9Wb6PZI1GppaSSmVg/ZPd07FyQoMHpNbs2PjEy2vb9c2V1Oxly3W4pMdT5A+dckNS0aiQSa2f71fawDwxCLPaMR8VAtkBj62sZClLIN2f+odoPMxVjJzW5w8Aut7bzyj8SmuIOng2k8+67zi03m7gqSP3LXjgmgEMKm02vU7/5wmD5Ww/TDjrfvZFdRU04pJ78Sv0xwRPKtoTUfkhRobB2M2d4TzTS3PWv9sazVrjBJT+y52oBGHtW5DR7EJGh1MpXN7FWCDvVKdw7lwvX+4/esNclosTYazp31oLgtQyv9O2MWuh9VeGi+QaHDMi/ijyXBqCzKNtBZQ0PabxsHqwpeDQ3d88qj3UQWhh0uhiLsfDzqfUMrzkevXg67snGPkDf41+MBfYhqPF+dXDSmIjcJbd1j0UQAWtDEFzeiYH0kUQ2wYNYxNx0Rite2BK+Pt2e+OKaDhe20IH7LtFIJ7PgTgwagNZDWM+I/lRIkVgfDFvGI4P3mf2vXiP4OYhbiq1zBIe4qqfH3bGI81ig5dOaTgh/nvl8zacW7ELzZ0XpfPvdqfbUUdVOEHD/t9cRfMBaKG7iUR8Z9SSw3Yms74CoX2E+zgp+kLWdJrQYTkbkuzKa39Y6QFjo6s7LzTcwMtAlVphJ54Ec3I+9zJ3Q93ha79F0CJw755nvWkpGT95HSwWTWiCNf5HryG8aKCyGx8x/ISDF3x43Z2zKAKYfRXdm18CqtbJ0mBKdb80VBNUTy8DhsCivLa0WLhc4uTHohCMBz3TNvReb4UN83/dI/hCA4V9fn6/g0eWvNgqMNs1Q/3jITfGhL4zenY/2OkpAKjiG8i26P6MQx/Uf81Q4UtfCinPDITOjty07qVQQuSH8QEKPBqY4FhvvOzi0a43wkmbeAa/kg9ikaKnwaMcjLeUh/fcO+8nJrfZDCDYQ19uSC7o8l43iUoiIa/GjijzdQ986GhMcVPOh4GZ5Yw3dQ5PGLzZq3m2HE/+aF8YyyDDH+LviWj0JPeS729jk0w6K/Uq2VfeJEB2Uf6RwjIROigRzSHkj8M5nc7JURHA13eg3+GARCnPhX8lCEPsfx7aHVQM4ZB0qrE/AoolZPZ5gxn64feQN9b1GMXj5NX1WtySjB0ItfBq/+yDofskTjHgR9C9dcHBxIiPWlIt5wy8sAVtU9Tb4cxRgDsQ+93odjXC8F95du9QMuhLHPUOPEaDi+ZXo/A08ypBxinDfXQqMnaK5M5eLYX+ejn9fJwb5FBmZMrOWgG2psdQ4pRiGQvxZCWQ6z8QXWRmEZsOuArY/pql1oCdye7+HcDhKFHW/WumdCbdlWt1so+vgjbWFgndsONL+PYUynmVC6TDTn9L0emAh5XcoJYejZ/8N5ZqcLwRhY3ExRycabL4Xf9L2GoMeiPRoaXS3wXdxn7qd54Xww6qxydeahKxcw7t6E9vAyZNZyvBcEWR9tMlf1SYhu5wt0apBer8foYWzNSM4MvPd6vZLHAq9IK/73aQJDMx0lXLdS6H1TQyfvB4e+TxofdTTTIMrqYKxGP9iMFnbcSkRjkZCBS4/3XUaYeRMC8tL2WKYyBsNigiJRrp7MvW4DQZhnKOtN1+LCi8pj3He69HoWZWt+O8ZBLnPtQoisUmQZnxgMrQVi8K4BI7vvU2FuMZ+ns86SWD8/aP1Nhe9r18aPtBQpsLadaFuN4EUKLVb2NO7D4f+5h/DT5xrgZ2uKqr7tXroUTRp1E8koFo3r8Wt+maw2n63ccCqHjKZrhN33yago0F9x5P7m+HugU50yqsOsP3xp6wfEZDRYYdvIUczwFhV3+hnkD8wXRVkiNoVgQYSWMzCXrfBe4+VM+nvU0H2HnOOoDQJaUk05jim9QE8nN52uECDh1zEwZIFMlJoqgxkZysGEvajVd5GDPQNH6PFuGLQMYc/b61EBmGUWhqj+7kE0rxCrykr4ZH1Iz/Onr8tACIWmp8C8kHr/JtPfdJEdIMngefUnSLoZHAP/EWLh/cin1me0P2UhmvuDtndDmyNZUoPTxZBMM5L/0coCXU2rhyyVo8BCbedWAO5BlAjm0ii0Cik8q02zXraFD4OHD01KlAMe1wyt1IDolGBgJzlocFuYI4J+x7QWg67gt4dy06joKSXd2S+Bw3AZU+Xhp2jeLhbqdvwwJCANq8FCmCmIyCq8Km+xzyCQvnoW+WsONTZztl1Z28fKAlfswoRyaHzzrNpvtcUdKE/SVy1sBQkzlO1d5lXwgWaUbXcNt1be+LvlSf1QAG/h/uGJxW8vh9Zcy6koP8kRxUrOUhwkl/ETr2BzkX2lz75bEWhtgisXXolEfgFnHXPWNKAdsFVIpAJi9w/6AzH1lDgzCBxX0MwDSwuiR87GB+F/rQ82fUKVwAvcH2PwwdNQTt9jOXPWwziaMR6j2TFguilVguh43g4JcVXNmsche5llVolnUsAsxJWDHEHBwbPYvvND0ShS7e6X7qXkSFLeu8EiaMRrBbv8bBSoxDru5UIFukKKFDspEbzN8JKOBvru61w5L/nU4hZXT8c9Ut5UTOH4Pvxmqu8B0moaXZ1WRjfDzkK0ofO7aOCoIClaOxDErp3ydKo4WkX9GUrhbLah4DsM8XDPbcoaHti+Cn7oR4404DXlWWjz8fCT6b2HArKt/y+94XFIJBtstcOr5VCSdpEBedMNCK9jcLIPe2B6cjUFbtHDVBS9JJXm36fdWMNRccOtMJxWbE3Wiw0OMK+4GmsRESOxSKGS0wIZjgcd+7XBAJD+KPgFAksunQ/xWOfeASckjfVHPlZBJU/inOMeXBoCjMXceM1nRsU8OcCf1Ig2cRI9evhSCQ7YWrW2lIFM1PKth0hCbBKsW8zEo9ENueznqn2VcH5lAVOht8EiHs5IsgmEYlCRe8xqN7PgSkrlbGXrlXAEXsxJeEfBn08uOravdgJG2JnqRXOpUDquyl5jZeCwoiv9oZkUMGiSup4nVA1mCWbcd+/h0O5NDS9pUQF4y+bM2rG1XBX8V3LB2YcysiWSrvmQII8WemVG9Y1cPIbPqZxOQrZ2Eq/rOQhAJf4uWeLrjXww1s+N0AZi0JkPu64+BEg0VD8sE5nNYjVqujxX8CiYX5s/kurZsi4obbuP5wFL5PtijIPE5DeQiaHwEQzfGl9oLXikwV/k+4f/PqEgKwcbzhr4aPh/YmDGiqBxWCR4+BAc8SiWiM30x17IuAWWIhejUUQ2/Qv6R47Fr0vP5sQfI0I4XdSTjTkFMNPwd3XV49ikdaNMZKQBL3nku0u/uhOgtJBZldPbizy7BR50dvVB/e2Vms2yxKBGp/wWpzOCQ+G9bTZ6bn6r4DkwTfYAFvHJ2Pb6blCxxkfK3MOQMBITelu8XpYPl1w2UeHiLTdbDpMq/oAs5ND9twXD6qdRU3vu8kosi9Q+sCFBIjZnxXi9S0WPgTd9pOj598u+nmd/fsKOPfayEx7rAHe8YUQxbUi0Kyx2CeB2Fpo0OrsFaA4wA27kx0NTFHo6nxK5WTtAPD2nT0X7VIJntcqSPnf8Mgvy4Ev5VIHOJYns16OyIaAiqmkag0yOnZQ4vlBlg5YZL5w84V7JnDs2eX+5ywZhd5zvHkT2wF359vFA1cyIb3K4c2512SUfuq2kyytDb5Vs37h390IbBpkJlszEvr4WOZQ0XYXnBec1DA8WgrZuy7TSB4UNNCnpfAfczdMNFZJGc+UQm6EevJtbwo6AdkuyR+qYE6Xw7+NMxkeXsRsOklGIhKex0V8XxUYVW15GbqlAO3ZwTvRSxGIVVY6zPBZB3wPOkm116mDcvPC3TdMyUiAwVnL+UQHRA4VhK+J1QPe9cLiiCwZHXC3rB/5lg8P5K8V40bL4bior8tEGAbNzdvIPaEWQMvrncau5jKg+g/E6XhhUH9lFLskcwuwH9/Ac3ZnQOLDcj+qHwF11gnstnnSC2IKR0XlbUpBlviEnBJPQen/PqNvlF4ICc64oShTBg8P/McTGk1BG39zD43t64U/OZI3cH9KQewNR3hRNgV1fThvY5+CIN/5spXN2RoYkl68IxJD59u3uz6z2ZKBdVjNXH22HHK5PLIbO6LQqRa2fwMGRNDuIPqckCyHj6ql1DuHsShi5e9vEz4KxKsMCoptlYG1Ml5upjgKvSzQWli42QvyPgmdsQLlsPly/8n7yRS0Gd/zUWItGnbrnj76cCgbPPgnOEqfYNGHgmv/cDeJ8Ha8ou6HRzbMyN79+fsIFi0H34h9cHQAVG9GXNgcroLsE1NmDreJaH0ApQ5Z1IHpxK2L+o8QSPDg2UavRSE5fvLr/QJ1oHXf/PqN7gbYlbb9b7dUFDrgnH10o6sOvBJKLk52NcChmrTQC9ZRaPivPG8y1MFq0u8a1YksMHkrsLmjGIV2zCu1B4abwfi3yNAenyqI9E//ftqMgMZe6UsnmXZAwmjm1hGBXPo9hX50NiYj7s3ssOrgAlhr0fCorqoASpdeNNYHg+IeyMryTbWDzLx35vLdbHi0P/eiKt1/X7b1rn2a7IGOQnaO4V9UaMwxEGbJpyCGlaGAVtdusPiiz+QiXwYrv6xrMCQKcgo4M6Vv1Q1PnX85vpEohQ6e63wOeApSaVLkOMw8AB+eb2ZJHHKFM71DVcftiGgjqSDJnWUA1lavst5m9gHsWl6KtRkRfe5N9pqc6Ae0wfzYO8sLmKQbGovbiOgw1yunTdEWcNME9cvPq2F03jxSIJaADj1han94pBd0u687nHpBg466q/OZWRRkEip8tUAgH87Xe+gJ0z1Amrkk9mc8BqGnMQv+pgWQH6+1x+EkDcotiIm8/hjUylWlnLPcD4w8L/TOR9nCup2g7XI6ET1Mk6gN5KoCSQv1qSxre3iOho2s1yPQTKWwVcASfX5/HyqJf5ALtb0FZWIuFCS/ds66x7ASar2YzWjazyD/YKODTVgEirvJd9ZMLxoGjrWSOErq4c/Xjd4KNyziFrpesFKFg0OKccm01TqIl5pPPxyBRe/8lTzP3uiFhDes8QWiDnD09/kPdfR8/vuW/KthrQScOl3mVFXSQKOd+9DPFgwq/jJnfPZiLpCu2XgtvaCCUHpJQfk4BhkCp6Pe4zZQaAvIizmZAuLP+GY2BEjIRAd/OKi5DTqGDvC9+ZEMewmfKsMtSEhx04G241oKH4X9D1vW0qA7glfk8xcMeh+kkOV1uQ8mdI9/4GGnguPeMRcbbQpaSsQODTL2wc2y16NJQlT42/duz4QrBQlee39fWyYbzD3SQseaceD8InPmlnw4Gp+dnZ+8kAtivUNa2lw4cNOb4/aZwKBEncc3MpPr4L3eFY4U1Trg9k5KljKKQkvy3ySyNPNBUsswmvQMB994t5sux2CQKceAyAdMPhz6fjOFk4EIL1QC3gvgMSiEc/FXy9teaGE5q337GBWq/jsjjydTUJV48s1LNr3waG/nCe90BFTp6tyMOAqKYrdDzvbd8N/frKKd7Gww2lbirCFQ0NXTKirvtLtB7N+z3Wzf0wHvtO/pmUgK4il0/WWV3wNXaubLtNbLQFhmofUMnVuOE3oko1i6oeQGw1EiNRtS9XRwOW8pSOD0x91B+Qlw4p3OtHRqFVyRcTmn8TsS7eEeZjRdbIWn3XUuzeJZUEl13ZszQERxMWGz+jZdENCdgs30Swf33TvlDroU1N0T5euwMwCyNS9j407mgaPJP2OqOx65fpE7s6BAg/cv2z6dy6KBJ9f6CKYBh65yxwzxDDcBf50+7crYG8AZrYo6ZeLRU6bHMkITHUCLu5j4LJsGQdGF3vbxdH80yPp+Ur8TZszPBoYxNoLmofVYv3EyMlFxSX52hApyw0X3ZgVrwNJRqmvgMxbt6c7PZhXpB0l5fe6NqEII7sGXsUuQ0f2bcR/afvQDn83WpGVXOcyF/dcrHUVE1xa7JSu2+uH1m8a7S/MV4C4dfXMuhIg8zS102IUHIHe3cVTMjQrgOsRvYXCOiC6OH7f+/KQFPIonDk6J1IDPF59MoTYCchD+tzl8pBDIbCSMSFYp3AnPCeN2w6AclSrBJfoeznjzrdXreiLkE58/VNQloh7nX5mFe3qBP/Xwm0ovArxYVjc4SudS1yOmF0LaBuDAhO1jm1+x0Kl1Wy58Eo/SbmSED9YPgFPlLdlU3kQ4rbgnfH0Nj7wzsQfD2IKAdRAbv9LbANXelaK4IBzSPKv4UNOkH1ZGW71rPdKh0/vB+MUWErryUH0iQiQYwkRZ/NUYG6CQ8uEYgwsO6Q3dVdroQrAHX2w3GEGj+2KYEaESi4ic0U2sai2QzJG7GMXkBf+dNk+1LiCgPmv5K3setMKTRLmlyfA0GB6hqSs4EpG/EMekrmg3vBjRVmG5mQbPb8i9PR5E388qe0p3V3dDS5mdgTAxDVY/v3Jype8N3a/hv8OwAwANIRqDuyuhXdPpwNw1Apr4Zv3QxTYaWlp47bj/5cGhlOieY6+xiKZR0k6z7wCx9Cw7zvs0eKKs16dhQUb1I5pH9j4uhusyqeoqNTRQS7cSKqB7yu+2E+9b5XPgH1PdVydKPvSuTc6IMYWjE3+zv3SLZUG+tEyWpW8+zMqOSVY7haOAQ58OWFh2QRuHownP1yI4qNa4sE+HgmK+On7SedEFE16ccYFzxWClIGMHdyjo+euxI00/O+H5c85/ciPF0J928NuqIAVZGk1jRTY6wdew1wJbWARJtznzKafpvXOqrECW2gdW7l82HdbqABaFtPIaySiHNXBNMLgPvMKnxFwW6oAjSfHLQ2YKah4xtpnY1wkTh53XNRnLwWwmMdqyjIy87A/h4yXT6bqs4dKokAx6io8dgug8yXRPu4makAFbChoHjOWSgVH9TWbuaDg6eFVsytu7A2420BjC/cJgX2Yx/xtbMqquC1EX0eqAxJZQiY+ufiDQ26h2X4eMPt37b33ONBWuMGd2DNC9vron3DZ2LQLV1TZMxncmw+ljrk45y3Xw48bOXlOtSHTgxPPAG3oVoF8iz7/wJxmOJiQuM+yPQLIvSjpy/LrAVjnrXZpQHCx8uO+makBBLReJxqk9XeBoeHz6qxcF2G8of250oKC+FdNoKb9GuMuwvrF9rgGqhKaeXyyKRqbWFTY9ofT5F+yTYQlKgNQ0WVxHeTRyW9Az+rXeDwdnc23sFLNA2ca2ryiOiA6eIxudGesHW74JQpdKBiibcAU69hDRgS3LH1v+FNh0fHPprF8dvDZPDb2QFoXs7xh914zohGBq7/c/HOUwbb6xo/+DjM4YGCv4ixHg3TMdEfP7pdBjodkRqIRFf1M/P7f0wsH3w314k9wSiPpyY3yCgEVDLg4RDbQe8CB+ZzvB7ABL//rZXhVQkB9Tj5fAFTwMcPnA+Msy+GEokx5uiEXsFU4an0QG4MGwbpWrQzlkvfB6ZyhORA38efl+Zc10blbkd9hXCy41r+XltQiouac+MfRFM0xv+t20rq6DvgVTuZzjBFQ+4XdaZ6kZenQjLjuG14L+nfm6bDsCEnBwT3eMpUII0wbnvcJkuOttOKB3E4fapSNlmC83QvhaxJWwnWSIGfyN3/SKRlPZ/kI5wlTIxSrdYd+XBuZnJl7N/sQiD/7yegkLKsSk8HVznkmHDMXgPKoQDn29XLR2/guC4rnP3etRKWDHezH4eA8WSfOceqapXw5+d1yb13PqwE9WUW+NGI7Klbg+Tz8cAA1P7bwKZ7oXjz1o7CohoMZyt2xhyQEQ139x/WRJEVwX2lXrxElEyb2/mzOdO8CDtZKqNJIOV1LXP/9+SkYZrtGv+4VawOJlHYFZow6cCkzRPJmAdEQiU9hEm0A1ONzr89d8mDmgORsthkee9xJPnv9UAay8wPjwRRXsjxfn8NOLQNFuyr/Wlmiw1FDbup9YAYeZPnE/U41GIXPyXb966F60RZqqiqyD3EsT1geWotG55YcsxM1uiM79hN6hangaWG5jQ+e6VrPLeoF9deCTpRmGIBn4dAerTZ5Foarajc1O0TZwrpijxtDn3a6INTn7LxE9us/SfU6uBeLZu44r3i+CrGZj8SvpdP+dvZumGl4KgZeNK5mnCPCYV5fx41cMKkvJ/zdlMggarz667Sumwph5xX6VxWj0y/KnMHt7F2Bco8s3cxAoXKV4n7Sn88/yuLj3IQuI8a++7WKCAbHL6j+o3tHo0PL5IkHpDnju6C8jQoyCPY9mE9ouk9GqibKrU1k/LGUl3W2Uj4dokR6+pBMk1ODTrzbm3Q/SA3LCYrKJ8FdtRnfRn4SeXbX6EDyKILc7T1Oziu5NNofMQqhY1Hfn0umwZfo9O5HVVCmVsBWrSpC5G4EsZjar89krIKXh+vLI0Sr40qVB+PApHN0Xa3YVvZQDuXsikjF2BDgnpXDBbE84+nsnGMdZRucxRsZMT3kyXAotdHRtx6An7EoKuKU+4GOwfHK7Jxd2vePq/RlGRnZ/1D+VUApB0hWfGPo0B64s7dRyOGIQn2RiN2ZXP7R3P81MFiiEdcRAK3hCRsof7K2469rB8+a9VsaKcrh2Rouj+i8JTeoMJH4u6QJKFPdmWSkBvj+wncyyonuimrDjYFo1UA+U7819UAg9w+3SGs8ikc3EtGk9/X7eNJW+58jIgTOZmb95A0joVWDZ1ElrKsxnSQvzHSWAj+ZxRx0xHHKWOCDwMb0ZZvzghHszAqZN+4hCVQLi3zEZSvvXB1/vxsmVqVKgoTAJZJ+RUaM7+lYY2A9rYRETn7iLQPz4i3V7FxIqHPrEnenSD3321hcOShRCgcqp37N4EnLzqxFhyu2H3X/Zn/qoF8LHgNPPeC6Q0D8/fosHUk3wTDl29q19CVw9ZHOcVxKPZiuvuSaapoA+xS59ZoIKtcIvDg6diUR/057VbWwnQcFq7EXleiqEu1n+1/I6EgnFDTz4L6sIphm4e50aqkCdw1g8wwmD/BvbJUZSu+CqzsfHNOFUCO9bcpwzp6ADNs8P/+orAYsSYa88un+YrVS7lTRgkLPZJ7ZHQmWwzhTTDLoVsHZvrFNaIBxxKLIbDuZQYfout5fiySroyv511+EBDm0N3k+RsGgG1cXmXaGLOXB/SCQrgp2AYnYN1+jo9YF9r8XnMyy1YKng8WdDmYLwV7ObTSL7wP3G7hQp/lpYJJLIOv/ovpkofsi+pBHk3veaj1eUwEtXvezRwWg052wXZsTcBLXrl4SPPyuFXQ9Y7z/kwCOTrK7un2WNsNS9OLJrrBhu2WQblA1Fo0v9PAyv+Pvgv/ZLyWLVCK50BXkNPKGgke1uU51ZuvclmDz6/BhBpkqWwWNfOid7sY97FTZCYZp/eldnKeS4zAwX90ejffih5g0612pPMSSzfK2BXydLNGpuR6ORSup/rGxNwMiPq11QTocHblcrrnLhkSFNsWWauxfseGajPWxxsM2Jf8tJ3z98xb9CJFx6IXBtNVKbNQpyt/FXHsVQ0P7zbv4/TvbA+8T3xXtmq+D1cqRkSy4FVW7hHt9MbILBw3/fCO+vh3kNFz2Ft3gk0j6WUGxPg86kZeYy1mT4pvo+r2UBh6rYLz9oEKmGa6vnngz7ZsLuV6/x61cjkcDvgOwzRtUw97Z5vN0vG24t1bgr3Y1EHylyPsfpPL39X3WJ/yaCxmVbbTfdCAT3x/t+89IgmHmWcuxvLESfOlGjlIND2wm4i8rQB2JrxzwvTuSDlv8XyVc3KYgiFXnc36gIeBZavSf6MuCXx+NDFHu6P/J6z2lKdgDxVIrSmHkRvMd6RtYA3Reei73tPE+G3fU2lG+vaoHU9vY8/2AU6tEnZKo0tQPlahhlnkznzK8Vf34xktHzndNMj5/Q9xJWoLvK3QGOxcUfOHI4Av032bzdMtUEyYYRNqwzBLjo+sWlMR+POOUsx0PHmoC8/tJK+AgO7p3GfsjPwaNWsYGXDdLNUEi8HHkzOApWv9c9afmCRxJax3YrSNFAw9hZb4q+nx33/gm4VIVDsPJp1CC2ABxbGIrSw6vhUUxvkROdVwXD2j6MLuVB4X3X+elzNRB7xZ1CS8Wg8U1bQeeLNAi406sXQ+/nOftovtu1OPR3298PJqnAfdpVZ1ifCl9eihEU3HHohfi3D+uj7cBBVF6+blYEenOGO+1sZGTeVjXOw9MBKJ8cezq1EApJ+209Zcjog3Xw8mJlO6h/45T/Y1oIbh9+jSn9ISHGo0KTetWFkI9lVkr5WQ1cX09yL9Pvv/VLTsZWbDYUJX+g6cci8EcKqsz0+c3rPSbJtNEE6SF/uav7GsDtMV69qRaPqJlhb1SOpsO7Vxn3x7yqoP6PyuuVOxEo9vYxYlFSKlCsfU3bdldB+j5OqvFIBGIISF//NdMJ1QqibZMVeaDXdkW67zgFQQpH064ffZDxw+P69lcEde0sGT9cyOiUwXzPcEQqsL66/Zu3MBoIb/8s8UxFoNKNF49D+Qvhzpm3718uI3jTssvnuwsGXftaUX67YgDyT+/8O0uqgFqtDr67O3j0YOebQUJIHfxlv95jOl4O4lqKRVfvRKHftElv/1kEL0SbTvGz1kIZdfnwWisW1a+dP/OAhwqH3og2JJXWwpY6RvrQGhaFCkJbxo9mcCYW+teWp4K6UX3jmgsBFWFLRLrfNcGwtd33rZO10KhzcdIrA49m3CZK+pVo8B9tc9B8Pg2WSdeGviEcKnWO2uwzrAc+Dd/92SPlMHow+XIYKQrpN3Q/fTReSN//Ebwdd+vhl/jgyAn6/9JgWCbxOLIQ+Eh7Rj9q1QEtarHDn96Dq3+f868SCgAfyHZr8f8Ozjuc6v/940pFRCl8MpJVRmTLSredzIaZyshMmZklosix1xn23uvY+3WOvVdoaVhRUioiqt/7+/vT+3Kd6+1+3a/n8/G4rnNhbIdQjR1SN7Zvup/fsE4ODIPPs9Y08aJMsP+qeK8oj4R+Dvf4bp0cAWbPzEm9W9kgcz5V9g+WG7999R8mKPSDkKiboQ5zJ4w7CyUJlBOQ32zX8vVTZLgUJcaoRCyFfcwdWZWB2D6neVxfmGqGB/duq1y8fwd++z4xy/aLQ3Fsse8/17XAzqv6sCC5e5AqXA/MbXGo+1/9akthL2R8bAqhf9sAm91HeqoK8eidocsbPel8oOeSF/y0hkCoeVL9dA7mIyX20b/6x6Hquc8p/bkoWIoalmn5hkdSH0xWlWeG4eS1hxlzFCznmY9aCxeQ0EfzyGD9z6lAonRrozoK/Ccn/vnl/Xg0RjdptkWigpUaq47Dz1wQFdPstz6QhIJiqjJeL1HhzENpBlPJHAigdb6ycD4JifDlF9Hd7wLZMN83Q2yYR7QdO5dpk4w0DJJtBEW6gP/Yi9/Pf7WB0p/+ci7RZKRqwXbWaHkcJOkP6sv9RjBxROW6RhUe2e1kijHtEIGBQyve5F4SPOZZymltiEfWu1FP5YJHAF1hy/GMaobhkm/zpVUklOis7do/NQCR3RcXUhpcYZvm8hpPKuaPRW/3lDc1AI9RavqDG0kQe5e14ZtSLGq5JSXIih+HIh5fxrDXRWBZ/+tUswUBfQxJYeJQHgDe9H+GD7Bc4rL8tvBam4imfDoYv9SNwDVqg7HHLSo0ebh8/ob5y57QXLH/SsdAtZDDI26zFXxo/7iOvyOiJDQ/pec4Bq4HH2Wf/q8Ncl+N2TqKYr7zg8N33+sxoJU48Nt8rRUyxC1v+WURUa4N+uB3CsHYnriImDMNoG3j+TddPQHRF3UFXTHogjfzOwNnQxqAWH7AM0UzGcWssz0up1LBbYjLJedEJQQxEGOcBZKQ90KnBv5AIRDFnA8zM1CBP/Ha94EDschX2MYhYKUAvGh/HDaWx+7d2ZIXlYdjUfZK5Y3BoSLo5agSsIrOhfIj+uviz2LQSyfN1cDTRWCyZvCsdCUfnm5FLhrVxqA9hWy3HE3y4cq/77ivInmADOScicmxyOSUn4vI3V6gMbqukulNhBcNiRGtj/DoubaKZMy+EXh3icHCkPAAbHTcfo+WkFCM38ofOS0i0NPu5RDTrYB7wj0aJ8bikd+BHuJIbwqwrPn91taqhMHQ+E8HTyegKA0vM0P+PpDdsCcpY/kZ0p5dsf83HkX8l1ll8roNSuYJO4t/02DtGsPgxt141FqRMewlUgNLTZkbx6YRqOlUHbPOiEbcNFss18TJsCQQ5itQhT3/4Nvv9gDj4YMe/TLNI2D47m61lkAnsLfqmQ5i53vuWNLVr5GtIOlaFdPJkwUHQum7ztPEI242B8OfQq2wpW9SkJ2UA5F/+vj63seh/u/HjkdGtIBn4r4Mq7YsKPDR//uvIg6pF1PqVDxHYOnLWxnz0irYOG+iF47t7duXjyiKv4eh8doyQVa+Cj42POyfxbjFk8fupVPQMKg3ffDaYquCfYXz0xZEErp0INHlm10bFHP8IMuaZAHb163ZaO14tCdW4sL9/QNgkH5v/C+uGY5/i34gLkxEHheyBX3U+yHh4bU9VzQbwKT6I59WDQFpeVhFBpNaoAbXfuptciUo+ZKMo2vj0Kun71QHGnuBXoGadEUuGbyXibRqNXjk5mXsRX0xBpD3T/urAQViA3bTCnKJ6NukQgh5vheySaEfxzwJsDR5/ZPUGB55ub0/PeSfD0bmN8v8x+JBlHzleHtELCI8lwktG2wHv3108fazCHg6+QSK2+NRxpTdBY+1dkjt3sgsv4L1JuPzNv+BeDRqbEu/9GoccjxlrJf6m+DfkK3l3BAedchEuOftmYCc7FQa10+NcFK18dqYPx45rPnWdAm1w4iA2D5aWwTuxUnL98Lj0dF61maum31Af9lN7cpiO9ReGJJ7xEdA+5HVeUbjFChju1xLKK6CiD6u0zLyCYgaIWiuUJELcmEDE2HYe/lJpl2S5opD+/8lNtRj8x0ec0kfEqmFL4NU1wjbOCSdLHRGYqUZXq11FYua1UCn4stW16A4dCQ3UP1tYw+0/VA+L8yPgL/4SUL2XjwKkNkjWzxDhUZvPG9XaT084E4165JOQu+a9ZgZFTDexv0HxbergHnYXmGfXDK6FEDfyGeGeexPg+KWs6lgdzbb+aZ9AuKpVqGaJXbDov3EWnZvPcxw5hekSaWg940bxwcru+HU4TY6xcY6iEh5eoZDOwXdtC871P2oETRnGy/Y21GgprpBkZwZi8im62pFDyiQ1B935ObFKni9fcPKTj4RMXsr64nVj4AteZ0SsvkETFKFZ9awe8HltM+L0X8EtD6v+E4nB8HmRyefdGyfkwOfF7tvjgCN/kR7aF4Q8Op8PWOA9aN8Jr1hlTUFqhskpmgtqsElppt4gT8R3fo8kaz3ugmmk44Y+xXVwPm2kRtyEnFo35d9kwJTTeCQ8oP3TW8tZARfuOUlHoc4Qs71O0mMwJ1i43dm7QXgc/JEyb9yEjqlgP8wxTwGv3mGgpTOFcPIaR8BqgcJHeL2tgRDzL8y8+9/ZmqEIaMLc3NaJKTEndKUXDYEloV/K0//agAF1lvOVg4k5H+V/Lj++AB8WNt7eNYuG7p+Jd7RwjgwJy5FZqW2FpCyeVjlh3B4E93/ouhPNIqkT2n8NkICmqxrURK4EhB7K7Dpl4pxEc3510zPBiD2cfWJnsA6eH9w6eFpTyJiWan4O8PdDaYM8TFJplRI/SxmM/c6GT1Sad8j/IMC2uXWbA3soZCryZ95IioRCf5rKcbP98GjIOPBOS8cLLzbJ93mS0BRAhslROcBEGk/Hp7rkQXF4fsvvbcmotTDY98dk8fhZ4nKwNAfAlCO5T747wYBGU+lEGhPjYDPee+fA4ME0C+jZzbF5jZ7pHqfqMwIEE97y6TRJUNZ9bt7ChUktFYjxyaEHwEWkyetuh54eGRRLZqGne9/lXUcFx43AiUqijfALhHGD90c/JsVi46WheyY1DdC34zNQVP5Dkgmu6WGt8aiKG9y8SZDKyg+lzv4yTsW4rsuiObPxKF4wVLFRbsW0DWVI+2cToTnHyWDG3PjkNv43+eWl1pAbiJpX1RnFNxSLM9eTI1D3KNT7D0wDGWNZga7FdXAIpgfWxNNQu4TgsSS0mFwCtt/SkkI850nFjr+WSR0V9z0UL5IP9i9sNt7c5oMYW4eHS9zCYjbaSYpZW8/JBdVqf2ZqoG+/3JvW+EI6J5x+s7FKifQfuZIDtxXB9xnLrke805CHR+u5F4SRHBxCzf+gKURSgn0AoNqCWig1VizJoECcmWbYhnHKWDX/l+zrnYisjKvEW18TIEf5lp65BAKXOReFaMqJSKZlkdOQeYUUH7k/q8C650DEX/fW3InovL8sEb9h93QWL+WyByYCMIsmRr1fCnIQZS1Wye6G/gIjfV3pePg50Ob3vPiKciPg+wa0tANitsFC+HNKWA6r0STr5eCJCb1nv2H8Qk657/5+nkimP+ZefULu6eWzEO/XllMwp/51O4F+yJQdDC57v01CVUc9n3LHjMEbaGHvmZ3l8AEuTvrrhUJ8du+UP7yORdYU+Jn+391AOtAhNg0cxwql+uNerI9AmPl3afq98fCUdm5l4ewe61DDnTxsRoBAghon5uIAzqGAN+D2J5MhGltPZZsgG9ZDxeDpcPBaSCZlXs7BvFdqOeSTqiHPMnFmIjNIBha9MFnVMcgqW2WTRuqA9CFPxtrmmkGBycVFif/JET7iMaPM28Qwua9jWYKm8Bdr4V24B8RKQv9minu74YuxzuXP+9QMH+1rK8yT0EaMoo2bXisL42afGjbs6DZ0n2fNMb5pfU0IqbaFIhRCVm8RIkApgSzS0aHExH7lu3R2zRDIJu5uLH5qBl8azwiA4VIqDXDqI8Z4zFcAN6OX6oENPRKtq5iPFaV6/GhaLkHAn6fyJz72QQbuSqGrIJ4xHi0dPWeexEcOqDqNsrbCTTpO4zNWTGIwZxn8lbXCMRaL75PrWoH/u3yS7exc9H4unbnU/IEOGU0vIo+VQ1NbI7VJyAFlWqGTHTfGwZh3Bsx74fxwNP6Ozs1hYRuHesPGzw/DMmyP3Wzvlb9f44dxfZfTa44sk12DPZuH3qlkkgAhoNqb2pMSehavBDR51kfHDClDbp/rRZuxe97Onwe2//hFqUd1SG4Qj9rpPOtFaiOcUKiQEKhu3uuZKn1gnGWkMJd+VZYGOXPHrHBI6a9fzT4fvTB/qBozzPVtaA4L2hLCCGgGOWYZx1pHTA82o0/VZMPWjeS7kkdSEAy3H9s3oaPgr9ZkdDbFCrw2g3rOxNI6PvI1AtyZRUc5pege/8Om1ux6R1N92i0/ds2K4vaAFdOW/myjcSCsmagl+WFWGRHXzWEauthybLc1rKlFQpiPeP6UQxifmEnWtDcAMX7F3KfjbRCrfLGrTvKsUhTf+uZzOFe4Mpsdle5Hg/HjQz/LqvikR5+8vShtV64Ecb/cRTrfZowC7LgDB693epQ/63RDgXecbqG17JgKeRG+Ie4eESS/keqKCHDalGgtCFdPXwbNyO9j4xGj/Ysv2HR64dn12dIDEQK/Dqhk4ZvxOYwHTKXoTYO94UvVLt2Z0G75uMB410CSnQcW26WrITzHJI9JVJt8LX8gKRLRDTyyNn6JfKyAJpe1TappRVDrWq4UAMr5mtyPAW36org5Y33J2ihCNZOu+wyxcYg62y8o/pGMpwp6hz7eKMGAowid9yxPfwt+judVXEUJBz+dCx/eQJ3c5TFIZ+EzpuqLXlEj4JNn0aO9SIOJjo+rRjhSWjYcTXW4Von9AqqtwUerAN3Md5UkZgklE2tvshP7oQCk6Fs/QNkUJDBFy5OJKEXrAf2r/QjcNVNvmd+oBNYXDtE7tUnoIqNxR127R44zmFP813WHVItlqfjq1PQUDlebGi+E5KIZrFpKR2wJiERZPgrCTUE4ydlxDpBStqMGr2YDqS6HyHV7knoareP2lfaIdhbzfqS/KEYEg5Jaa0JYx5dVTREa9YKK6MZA36oGKp4h82rvsahtvfkCNrhPihJ931vxUIGSsQTL3NnApKRTxKbV6yCZ6Gcf3J2G8GBrjT9jU80Oqr+5MDEvX54viVl1GldC+o8go24EQJyZIy3Ypoeg4fdI0455dXAFHHFy72QiIQZZ6TuJvbALfa1auWKSnBYwu/oLacg4RfzyoX2jfDs80e+xPv5kH1aYJcpIRYNXbnatC+rB3YqTPZd6quCGBvtW6LrKYhlau7m3sgheFlvoMutVw9sAk/ima+T0EnHHQ4yaoQggncp4b8YUM1JbmOixiKLDo2W//5QgVW6cp9FNwVYNxSoYoZJiG+5Q3P5aBe0szLWuolGAU9z//lJjmSkXMnO0dVCguflyi3k5ha41vN+dn9GPHKNlfu5QhmBc2y3Ocsvk6BOvmInCMuZt9oLZVzfEJgpyatQHiKYmmLjTB9PQJJ+SO/f6VHw5mI3H69Igzd8kmnBhVhuR+y7tHCyB76JtRzbvEyAYWW3d7YpKahA8lBoVMkA3ByhjHWFYhx1YiFBNYyImHd3zlUIDoCLFu/4Sb5GiGJ/dfykEhF1GazhudlyQJNWHR/a0w5ueOtFS884ZGWG7oryDULmZVrvaIkmWL5zvy2dgnlEStr5qK4BEG1oEuQOz4QPvD1HWBKIaG/WNdyD172gqHT1ZdBkGhww6PUqG8Aj0RZNx8sTtZBY2GizV6gY/M+eGVw7EIP0JwZPnrs1BpyRrI/+ktrBTuHgHV5pEmpQ5tmJPD0G6peY7fWx9xHMHx/0sCGh3n3nzN5JFoNS2Ka0lmA2CGgyOoy4x6C9d9W+0LAMgc9i+NhB/wLo1sqzUjhLQi/D4kevio/CRxO0Nf6PCj2rvy+0F5BQyJ7bV2MPIhj+mUwmbdTBmurB2+ISCUias7i6h7EUDOyPhfknZkEsx/YkO1MM0tVKG1K06gHXMK+UNyc64C8SO6lDSUHJsfMJPTUI5uImOqP6MiGrK0ywqSABLZs6ekVdGAZ6C8clbpoKUK81rfXA8h+lnjrdbT0Mhrvb/a6KZUBe+vaWLomEWOu7LgzRDsObnEbTCboqYGxWdPV4REKarU8mnNwQWLMlf5zsqgbuH97R93wwv+a91TVN6gHGt06efNp1YF5k+jrsSwq6lEMjAe9qgbrvztdSpyqw3vmOP84Yg95X01zVW2mCrUD2Q0pDddCXwLstLxOHjBWel8g8bYYy9g2u6qd1QD8RyPHROg5VNIw/Xxlqga9ipFXvtHYwynb0kO+KQ/We9IsmIQgIspUDfMZ1UCba7304NAHp8/ranY/pgfRUabUnqBrIF7+/z11IQQufmBw/PG8Aj4zW2b6npRBnHb97+2IsYpoeSnV93g1H/EJrL5pQoY73SIezdQr6/fGhfaIyBWxNGOu8z4SCStcbtRS6RHTsxdHqhKFUQLtxa3tvN0C7ReDTRf94FOBdV91clwqTvz76v9BpBJZrrsbLD+JRiGLqLS1vbP8PFHNMdlOhY5+sdJcDEVW5zP9z4h+DhP7P7kMfW0GdQ/6Q220SKjonONGPa8XuG1chB5UCPHN/C0Np4tGu0hbvAdYu4AuRVcHfI0N0vHxmHmcyKmLpKu8wrQfXH++tPte5AJ2D1wU+QgyyzQqiadqgwkk5j/aIxlrATVrO9VxMQpsrYbzfBhqhJMHZZnCzFg4bx6DwXoy3+YRo76s2QRebb9F8ZB3synf5idDGIc2Jc2o/nGrA7tMNinwhFZ5y6vl/KY5GZzoXvlHnhiFwlazE4x0PkqlhOz5YDsjcj4TzNWTYe/RM1LYaFQStefwZoqIR0/17HS8Hx8Df9obccm0SGF17/d2njojuXo3uZ09rBWGeYgceHBVMc3Q+tuyPR9+Zj2Y9wXjYWeR2+1QtCUiHNFrSMR5+E0C1DcD49smIto69FIKk5l5tW4xvC1sO8YkUNAPv3X6LMe1sWMv8UGbtEoeehttealZJh3iithx1uRE8k2cfD+pin3/FYNLtQgdwFJZnBzcTQJ6Xz5B3KR7dFdQ9ouneC9fDvwZUuiMo5rT89iYEjw5VLrns6A9BwvOfTam6HRDbe+iaC+aDBt/Y7s7GdMGaNdVd3CwJhErGcoO8k1HS59kE/hAqTFjMXub8g8A37bRVyI9ENGWn+yo8ug7uKu70KpzJhJlyi44NnRhEa3757wDWU0FezPVXyY8go6zt5wzWU7vuWc8JlCrgR5tLhgF1MBoUl1fnFo2+pAWPer0eg/fP/kTp2zSBLFPpz1eZRORy0qfNYqwXHjOwC0361MDi83J+sU48ennyjsHBP/0QW8Sq9syyAHIzg831BYgoro/n4ePHrrApPsv1rqACGJ+H/rVwTkLqifPrVkODwHb675srF+ugJib+WSwLlnumKw8W1IdBwmhRUbfiKXBICJEFY0jIPiiWzqUhEDJS+s4/Ma8EFWnf4qz/kpBAgn3l2+lh2GfXqUmqKoWfihPeJ7DcU/ise0fkVR9YbYx2ivTmQfZubWurBwHRc0Zs0C6NQ0Rg1o465j2mfBJ1Z+rwaEn6P3+qZCEYx+D/KWp2QOuTX5z//Y5BmS3aZegkCXxYPAWWMe5NHhS/9Jwcj9ZuWLxMd+6DvHdsalx/qqHxnbbbQRECsnvWfqH2Rh34LL2yET7vAjp9Vj+c5DG/KOwv3hUqAF5mGd9nCckwd2w32MYgFqnVh24yrOYDn3XZK+kZAliLBX90sIlFdQHrTkzRmWB5w7ay/VALfGe5RPX8G4cIT60NLcm9IGl1Ve4wUwEMi2x3LFTg0e9VUQ9VnV4o0w1hGtAsBAZa/gMV9nj0q96459PVBjBSqJWc1++ArMXi4u6D2OcfS6IIy/fAJ7POZwFxVIg/F5OgWpCC7mwWwsxLBI2ly2UV34LAw4fejUJJQHlNbIsSnY4wsKYr0P22AfBFtlfzfJJQXNv0/p3HzXDB9ibRbKACsq+oOv64FYdcVblUl98EgdQCq9/gVi6c5Zud2UubhD536juHD/YDOrIpdq+0AYSu3wvQPUBEK2a/pvvrO+HRi/u4n873QbVI8rrRdBIq7xIOJSV2AmVm38tXWyFQ+if/5uPWJMTTKi4ib9EJWWy516veUCHk9ae8qniMG9u3H9g/6IQtf5crnk5UmJv2zH5YmoROcRjJxh6ahICX6tSOY20Q4HPUe+t2MnqsI7xH7TGC+Sglm61cBGL6D9TqsJxXiHvDuxbbA63Hb1wb+Z0CJjT5+6YWU1CmS5ve+fNj0MXfXLohkAdJnY9NPxuR0BWFU5KKDGPwhNvvPNfvXIh6KLZO9iYhOtmu2r9PxwA86FZGEwuA6zNjfcNBEtor2XQ+nWkItCq85naWS6EjQ1/itRjmuVF3mfuvdoBzMy3Die/1MKg5U8DxJR5VTzZY9u0tB8cMgTXe1mSsz5051TuikevajPLiyCh0fZYYfzeKgJ+VL8U/goQk5E6RX65NgG5Ke9ebk0VQLq94fQifjGK1y/fumR6Ap+bT+mIYN84WF/9WTiWi5WNjOreKKdD3lalcp5kK9NqsuiWmiej6mdvtfmcpsLYu9Sh+jgryYTOrkn8T0ITBVIzkqX7IuVlncDwpBfrNKzmPZhMQc2VFQ5ZDN2TRMV5laPCHHx4x9SYsKej7wxS18A/doKZusTta7g1DvKeOjTqnoAmK+sn0vf1g5HOWnppEBHl7lTBrHAENbxMu7u8dAtsak38H2athsutFcvA9EuJ8VbC4TR0DDscb7GVTCLJ6AmfNME7TEG4sezAwBue29BY57yKwH9sjadRARK3y92BQbQTcrvVXX44ugeEd4ca/FST0+UXNhMn0EIBBcWaLMBmu5FWX7fUioZv+TqJcJ8rBYtRs/E9zI4y8CI1Yb4lGgS1lVlKGhWCjdbvduysebIMi2yzWY9DEx9i4T8x5MBpanLDd3QpsR1NNVuniEMXbvWv6YAXUb6o6Zuq2An6yddk5OxotyzerBqr3QA95/1CVCuazkz1P9lSmoLOehuHiGWNwOf+XnKsRBbij9hTafCWijP3Tk2HDCPAs5XYZBfnA+59L+N/GBPQqX+NPfE4d+L5OeOlf6AdnM2ZuvjOKQXPrw0dkjAbhN3N0iEZdK2j805aRekFElXtuF0plDsC9t3uzzge1AIsDxeZUEBE9YQxZLTAdB7rx2ZKWdawHUje8VKYJKPW0zlfGrXwwPNjrGMhZAJS2rc7rN2JRZ+Lz8OYLhVDORPy2ElYI5/darWRvxCAXqqp/xIN8SOfkPKQhWQRSSt1GfeGx6DVdurPZ9igYtTCzP5OPhBAhR7rlByREtRXnGSYOwTEXN+9B2zrobfmgbWRNQtGdkjUDUiMAmQ+tlLWewB0b800B7LzWbe4U2LqNwM0PSEjLHgcdcDw+sIqEnvTg0iXGx0BA54+kJ0srHCTLdIhXEBFuvOUja9kYWGtOrqhcboFwoug04S0RMeqcuv7z1RgI5pCvvP7RDGyvh/lis4iIkIDXbRaohNYBCYPVR42QYiBsbfIsGl0lMPA/eVkO3wtgqRU1wEv+11GWBdHox8/Z6oUbY4AT8T+8pEsGU0OvlzdksP0pVucqzmqHDYdDmwXjHZA0xG3+X1U8eiSYOcYV1gBZ60c4aVvw8PXAw+uTvLHI9Y6M2IYH1jcXTlpkLyM4rtq7ev9XPJo3fSIs9GUYKEeV/7kzUcBwT6tOQhEJzat4+m8wjcP25Be1repWCGiMdy++SkSdYdofjcV7IKVMYzOovg6y+lONfmSmoL1n27MPvkdQnj3ZKGFVDbfovKxFexKQeEv8hS+M43D77JrHbY8WuJ4U5LhsSkT+O0bzPgaDwEny5Mp+QgF22wtTljNEdJ7l1yZ1agB67hpwCahR4JTkpRguLDc0zDrqNqUm4KfCq8HClVooj3RPfMaCR3sLEf4/mX44xsd6QJopHXIK779sKSag+6tXXpxYHocMf8vvV1uocH6N5mdZFR65mto+4v9LhN6315tCkv2htNaW8WpDPKL/NCP/I2wCvBoj7bzV6qD1S7vSE9sU9FL4vuA4wyQ821LdSeGsgZTtP5ffOiajE77NOX+z+yC2+oOq7wkqGPb9siQbEJBIlLLBd4yDUzZ1JPmFnsJzB0UrEZ54dFQqZkTrbCdYKeya3J9ohbiPhZtynkmoi3vIpOz1EPBe0Qv6uL8Bvjr4+eOwPNcQD6m71zYOzJ617w6cqAbJrM13tIwExA25Es0fOsGcY+MaW2AecEjvpx/YSEK820+3cLRFIG1AI3iMgwwiHWcmB9piUFHKhPAHuwFY1POzEOahgG/U3sraG0SUX+atd4UwAF9+HJt4GEeBp3Ufl90CiMgSJ8Mubd4JKYGXQrhfUmC7n+7HelwS0pCpXxFUyYDasT3FzsMUyOCjbG8Ix6PGex9Whhs6YaP83adza5HgkE/HxDyThG7a6u6sGDeB0I83uV9NE+F3MecVDfo4NHT+1rKYST2M3VZYzFBrhDOW3hq++Bi0sDe+TIg0AIJnlUKMMhrgKGUq+m4gEbHmpnLo+RDgJc3tNUW3GrgTmcz483M8+jkfx/wgZRyCuh/wDBg6QXmOtfqqJQHNamyUl8Vng8jZVNHk4/ZgyujuIh4Xhw52s7oOmIyDfNdKWbpMJ7RnyCRMzBAQEa/2XJNjFMgJdROK8a1wWvDzJEMx5rk2B4oiwmvBzYHEOGzsBMe3DbQWvkajOcuBdjHaKoj70KDedCwfjNPFPf73fQYZls/s19J7IKvTY8NToR4Yla9kaH1NQf9Emxav3kGgZL7nysGXVWDW9ds41isBcU8c4ptG43BmKODC1N1K4B3XLliiJSBr7hPSWvcR+EhzhM1r1kPH7JepmIAEJIqOWiuojMK3OxYhXBpZMJjEe3cqj4Tcld46LV/th7fcMoqz+ymgdSS/m6GdgE56rlWLpY1CqP3jRFMsH6Q1Ixh0MS8Ws3l0LWW0HCIKyA8ov9MgrIlTwqEwGoWkynRO8AxDkc6g6fnyXEj6Y7jG85SEmnNWfveMpEJSfeSP46n1YIU/KpmKeeK6zJi33zoFdkd+e762xLiIlGSzEJmI1CZP4sJ5usFrWm7k4sRj+Lx7K4NrNhntIr8jLu0D4O3XTzea2QxeJ8w+TMQQEdmZwf+ARQYMfsn5/XtPIzw5xPNE51Q8Ylr6IHzwOcbx/0z475nXwgcXuvRrsdEob2Gz+YbTOGjirCbnMyhwfxfCT9YRkMGrcImjf7KwHNh8Q42PAUcvOt/35DgE7168m+6mQF3NQtSP0/Vwy8KjU/1OIjK+Qq1X0eyG5gymD1WrVTBDpqfz2kpGvX91gj4xZYLa7Eml8tOd0P/Hw82aGePwM5vBWucRyLix7X7+VAqbtt27qlcTUH5PcpELtR88ZrUMy8gVsCqz7+o8DRHVXiamxeSNQ/CVtnifVBx80C8cu61KQHrCp2VkF0fgCPlumStNNSRNPLyUWE5CWcXdlHrs/rpvPKASuxuBtlGdtwO7v0huqdsmqhr+HvS12+DIBpnNAZuLHtHo9q1DZxL0RiCYdXPK+HE7gCrHwL1KElo69+Xf08PN8PpX01BIfyIokFUszqnGoUOR5j6DewbAus16b88RCvQe/F3EfJqIal5PHfflGgfek8m5hzPDYe91t8X680Tkym30VM0DQc7Bp9vs9lS4wRyi2eKbgNwe2t5vz+iBocCvw7FnH4OFqG+j5rcUZHzm7AHBjHFY3JW4t8tAhpC0MmFvPcxT+Fm4uFqGwMnuXSGtABUSdG/dmXchoVpH/b85L7qgkPEx623tfKA5/GrxUkkyasrf98riHBU0gvwH37u2Alfg32FyWyI6zKm76TlbDDfpy6/9/NYKZVvvAnC6MejxXkWzsNkxsCoO/9Kj0gzn2iRVv6QRUQnX7/ZXwQSY+9vxNO1gNcxojveHf4pHT3vmG1Q0JmD/2EaTfkIDVBU0E71XU1Djq8Z//b874Wzi8h7mimbICgz9IkSfjIhCsuyi2gOwOfzwasRgDRhx6A5xGBCRgPS3HxyLfWD55RMl9lgz/OM/XUX2I6AMknmtXecAJBUgVRPBbOC8yhjsHU9Egc/yXYuPd8GMVoqx6Uw7PLD5psDAk4ysetgYBubGQearrVQ3mQhn3/dVHWnFo7viqYmmv6hw0bHy5lWPLHAlqPZu6CahN+8npbbci+HS5pKHUGEBeJmMHxi3iUEMRtcvbdqlAuuqUnMJFxXaefb+qQ2PRzm2ht+pTypAUi2U7JjeDlwpQxPTydGI1o73hIbLI3gc5r26YoZAdjl51+RfItJ66ROagfXdE3NlqQZVIuwZb62WdkpGQ8TWGavJcaDhW/j0hPQUTtH/ZJt7g/l4n5lG/EI/sFW8L4gsawc0JqBNx0ZEIR9kA1/0DMGuNa1W2at82GUeF/XCuLovXUHWbTUbZLffay1XVsBZPX5CUGAcSpUqGTjLnweXXjUJr0m3g9OoptWpfXFI4Od8TeX9RlANFlX1jmmHjD0tLS6kWLRd3/LDdKEGGGZVKDq5zfBuwqdFqSsaqQjbNP1b7oZL/xVXVfHWQXaSpaKIWwraZLwRTSNEAUuNCGT0tRoeKhhvT28lIFkPQ08d6zGI1D+2eWKhDdb9h7tOSmGe9T5v7O33EajymXccT+yAO4HWrpdCich42k7rnlIV3NwJE8j4lg615t97nThwyPcIjavv3yq4xKbGXmbeAvdPUr8F/4dDdoYftyt+jUAM3qTtyyQZLmh1hV4MISKJ9yZptUHVcHtOPjmZNQc0UzM70tlx6GWtvBfD5RFY8Yy+L7y/HYh0Joerw4ioouQm87heLQi/VuGjnEgGL9HDMfLBONQuL/dYfGUInrtbtR55SwZqucfqMV0i2ruuvdDtNgoTpa+D7uNqwV7biZjrSUTHaHii53IqAMUmNjZatoMwpXdi+jwONVXeVbZ9PQz6WSejeOxq4E39EWthjAfo3loJy+0fBg0WtSTCBgUu4G+1Thljc1A9fzFngAwOidSBFikEgnZ7Im4o45DYs9ciDznJsCE0KL7fqwmG8g/b3hXAIcJD8b6Q9FKo1Ogyo5Ftg+S5Eb9fOTjE/uNTyerQEOy/b2t+twDBRGpqMLcGEfNT675OgyrIKhsqELhNAWb20K7n2JxpRN/TX5+sBNLhFOFmnkY4tGOUlCCKQ3dmf+owvhuGl2t6Fdd1GuDXHxvXRcw7ZNweGrf2VsHmez2mLSy/a7VXNOuwOT84U8ZjnTYCF0/ImnJHUmG12/nzN+x8tU+vqa+Yj0D5zG3Lzi9ZsBhYrC+DPV869uPoo/IRsHugGcWyUgWUhMhLidg5Zr2/KZXMWA+4wgX+fVfxcB3GeMcFo9ASK2hV1dbA/ejKV+5ZzXBqxb9FyRWH+iaPnJZPq4GGQ1XjD9+RYZyXL++5JQ45vzr13erQGPwdUfCpaayEeqEvZCtNIoqZvc/7ebka6Ji1m2g6S0B9uTWrEpvnX7cv0ye3h2Fl/xJ3Aj4Pwlm1YBnjJXeaC79xG6MgfdPkqb39MzD2u023jJ1X/tQn1YlfZVBwu/gTywMSWK2bXh+5g0Nqox6SVdOjIIPjOHVcDEFPvWl3mwkRMTPs7248Nwz7tBzCpOea4JsChVn1JtZrUcY6FSzDkJagv3dVrwRe6ukllmK/f92A/4JR6BBUj32XMZYuhKLjUfUXzhJRN23f3ojcQag84G/lxl8IG3EPHFVGCEjnTHTEnR81oClZ9/2THZZXcgZndh7gkBOzd53Kn1pgWFBy/o9AAX7LN4kKLTjkF+UpYKkyBvwfyyK9oB26XyS/8OfBfOEF7k9C+ChUz9z2TNvXDnlmFN9aeyJyYFpmBp0K0Jd3C5+tqoOpgkTHoos4NPww9YrF22rI/febv3mmBnj9Kl2NuXFIQTyp/rPRMLC/fJC5n60a9ugqzx21ISJhyYmq+Yka0DBhp/7oywLtHqfvvE44tHjYa80ppgz+XO9wDfxLgfkit6KBQByq5N8c+XRmGOSclN5dK2wH3j1Dl9Ix3n5Beu/FKTEEF9HpxwuHasGCh9dNn4GIFqO/bP9MH4XWyLl/+WUlUNVhprSKvX/my0dffckj0HSlsV5eugzWo5NNr2P7tqIWcqRcaQS45QbLZW+FwDkmi02Bx9i5aB8YSNqpgJs3ilyKmZtBdmm3tg+7j6KR5uPq4mXwks2KbvZ+AzjSJpS64LBcUqirfP91CB5sXNTtTs8A7lMx6Lk+5u8u4hYfJEfA4lzkyXXrZrivkyTZE0xEXn9OX7RnHob175zfnp3LBZtiozUeSyISkn00aNjWAMfDaHPZvrWDZSef8KuVKDTfNy9E1hiCikf8Zjp8HaBJJL7W+l8vSHu4kNXL4RhOY/zwiWygJGVaKGDzjHtzl7TFUgU5ZsNiaTeoIFsjZN93EoeikvaX1D8agfDykOQ6q2Qgl1eJpmF5ePBNzux0bQlkufY4lRwNAmbpKHu2ARyqFsycKRsdBrOk/kTSlVQwlD2pfhrLsaK/X/9L2xwGTsd749H4Inix4SCx+YiIWv8qnVMjFcFFp8g6EhmBdsqTNxEaUejq+WZBs1AsB9kbvpmat0N0zatZ/ms4NPOUJkmTowZGNZ26+J9S4O8l7no6eRyqF75ykeJTBMfJrm6i5AYYKStRjDGJQkTzzzPOBTVwpHFnmF2jEYpp2wNqHHFo5xsyTiXVwuPIxNTGCAQtqr1THLk45P134l+ZHhkMSC/cB1STgaNHcNNfEIdSA4QubscOwNx/XO3uPlnwfPRv7RldAnLbu8QluTwEJZl0TmGKkVC2ujGcjuW/lubMyWiZUfDbSog47/QIXNWkSkp9iUhQn1mjC/PrElvBj9ZdFEAMevjxuwREyGugZZoYhfbRj9XHFRrh1Q6nS991Igqea8p6+mYEoreOpY8UNMD7PtmQC9geFjzzSIqVqoPra1enGJyagPWF1z6lFzhkay226SQ6DA5XPflPd2K9I5GdK4L5PqvFoP+HQyNwm+HAddwEgiXzNp2EB0Qkr5LIqHOADKrv936K8KPCn/Sa0/zMOET7fHlzPr0ONJ3IH5LeZsPYerP26A4OVVhVqWleHYObBpC3+LQWPHDvuUO2CIiXWaCYZ6sBVOkcllr0CWC3cEp6YycKsawlHPdrHIXlSDrqcVEqbO+WHTxuTUTvbLYrljvrQP4z75puIhV0PtPP3jwWhfZJuzb8/TQIfWP3Xq3PIYj+KszHvE5AKrEBrnbHquGweG7w/Rtt0JqzPvAE6yMS28d/sku18N0k17Z/oxKyt0+o/KPgUIeX0nmXCzWQ17w11PqjCsLfXXG/cgmHVC8oDqTZDkKMASFhMzYbqEnsTgy1BMQvEuOqu38UBl4F3a4/mgYaA2fTgrE87wkMS7uB5bxaQd954SEKiAexqDA+JKJnURzbCcKlcAvPVvuPvwMqhB15+xtxyMAVR/GQKINl4umVo48QeFic+HQHu+8ZhOAP1z41g1zawYteccUwf8Jm4H15DPrSDuZenxqBUjIb82a9EY5MuIYUh0ajy399GeXNxyBt1EvlbUswJBX/Pb5BR0Rqd1r86xQb4CY1N/V7Xgt8+Or0O60yCrl7ES66T9bCkTLpOzibWrDzP5Gg1IxDmd6WH9b8x8DphcLdj08rQYguZPT7PAFZkcI0gpkGgNPV6iLxHwWOsZ4zebGLR5VDF5mPVtaDTOuhrxqtxTAQ5jF87HYUWmeyUtyvOQavToxmRPSWQLDWB6G440S0j03NcHS1HjzjzXc/5zdAhMbtvmcPo1CDwyGx96fr4GFQbWjtkQaIUW49+W8Uh0RGisgMimVgefWKszZLDYQdE6rieYzxQ2N+iIdsKbh7+9ZovW4CEcp7N5kGHOI/sCilLlAMPzMdbhRLkoH9gefgtngUihD8U8pIMwbj17JbUvgpQPQc3fcG84Lyj+eIRP8m6DySbuEU1w60eavz53qjEcOxkfbLeXUg7dZSKpsWC7e8V3qJGzjUpe5zdcN6AHoKuSIMj7RAq/2j8BZJAuoX/6ZsdG0I4s2XmRoUH8LXpqDwMyeIaOCthF4Slm90gV1j7DGxYOL7O/B/PKk3du6PrfoAnNMM8ZPjwXozQKRQiJOA3Kl6+ZcdB0CGLzxjL3s1nDwouCkgS0D160K3vv7ohyiLoMhWkxpwc9N/JrSORz+u+aove4+CzWfJyq6ARNBw3PdBw5WIklk21Ks4R2E/o3GOU3ITVF2zONSE5ecF+ZYLQoaj4LlScnZpKBuU+ndm32M5Y5fxhFv2dh3YU5PQufAWiA5hUny6iEPXy1a5KxrqQaHFss65nwK/dMJzuz2iUHBQBV70XBnkufHX7Z9IgO3SN8cfh+HQUQt1KbaERtD0/nKqibcBKlelAniMo1Gw1gVcfmcDuAQsSZzKosJPnsCgyo0o9MY5j9/JcAzMh2PpnsVRYTeNuWAPKxEpD7Q6K2N8UiI3PhUd1wjtfB2acqJEdNpWs8LRFevBO5u2TpzlEDR7l46en4hsZzTZ563G4LFubYXKAQRlCzQG0vuIyF7tNUeFwBDMZnON3qnMhWNPKo9K0hPRd7rulCfBTRBmlzx9e6AQrF+FhF2aikYkt3c5itWNkEHTLfn1aR7YpdyvGbkdjZ47M9CFnByBliLZd6rX6iBF/OLKT+xeM51OpD5O6YerDEXB13rjQXRmfoazAY8WChaqbyoOgkZd3fnv/5qhFZZMRXMJSC6P7ozy+hDo71Hxc6iqhzsvom79xvJ/IjJk2qi9DvxNOy+dEyiAhT01c0dpo5AFYn3Cs10DkcRZ1+i6PJDmepLF6Y5DPgxmlu+YRyF+RomWrh/BM5kULkNsrwYuK0cfzhqDKDwN/5NnbcDOKKrT1UZAhzueC/pc7wfcw2esZ+kQvFZuvcSY8L//P7nXPzKvH1p5Sg9pFlbD0acdZ1078Ehk29XN5XkfnN0MJxJ+FYGr2ejSghoe/bS8Gm3fXwkEiUfn5N/WgCiDRZ2LEA4ZlS32zdeOQrHud5nnpdVwoqq0X0eHiDi3h1nxDjUQvGj06sjZKDD2tq12tMahmhqPDl9+jP85K/okniUDC7Ur1dsc86aogDnK6yqwHVDcTj1BhrTa3b3aPDg0gq5n/kyogcerhip2/8ogzCbO4vxNHOJ+x5pfjHkfdNxVMy4pBIX11Hl6jDd2xsPOpRk2wNwWO1uqbzzsJh6iZFGjkFK8RiyE9cPK1yMjqsVUkOpVUdmoxiOPucc2p8KGYTuh3unjcCvc+zQec8+biI7nJy8xOveD2t+psPWQfLjxNK9lIR2PvEVqR8fFGkBQYN9vl54qiBayEeUnRiHHgB77BS7s5/dX60J+J4NZh7ZxGcardarHW8Wqe+FyE1f/TdZa6PvTsrv5OAWJlAc9CzathkvWEd+42AsAEpqXaDEPreVqM3x9dhCYdrfWXj96CExyK0pqiQQU+kJCag3z1jnnYuu5e/UgvKjWWoL1muHBkGfRHB0QkDxNo19JBQ3rVA360ji0c75tgXRxALJJTpd2P+bCG+4HqScECUgm6K7Bd9M6GK4IHl791AZSb9xylWdxaDdYiT2PaQwK1jgMHnm2wn+f0ds2zO9GltVrDlPHoMskKd1IqxZGnP8MuMQQ0NuP9y/01PZjuVz5Jp6jGQyS08Y5+/BofbKCdG9vFTgr/rK6xVIG9g/evLIQw6ETrcnaDit9wLei/nLKkgyDqTprI/p4JMnbmpjf2g1rg6863TtbQXUP4fpJ/mRkdorHPzW2GZK9jlQdZmuCjterJWHuMUiquC7z15N+KD/QDF6FgfDj1F2mPRV41Lpj2l5aSwapucG3jbqt4Bd+1VGDH/P9yajAemwOZuWk+OobycD28viTAAEC2jot3fDyRgV4HT9GkvnWAvU83h3bZzG/YKj5zM44BC/NLn1QZMnA+nPX/dYvAgpWimhUCO2Fxv26edbsgWDE2FS+dTsFkW8Z/2i/0Q6+Lbjs+WkKJG8EBBLc4pDvEUr73SsUuNfyNn+VlAf8OTtLgl/iUeRRtZXc+0WQT5Z3+LPdBpk7j+L8LaKQwNP3Ud9Pl8F9u+DYfWeqwfbpemJ2OA7tHad+Lcsehr07Tf6Z2VS48HPtZZoFERmZORnjT9eA0OqFM2omdeA1RtdTeh7jz4suW5YP+iBwyUPiVlkTTDSYJ95iwKM1eZmJ2zTN8O5P3AKvOxke3xw/ksEdg0wE+4kfLjdC/Wc6mRAhMjQw9X+ckItGPzfvN1/cbACOaz7pHVgOLeM5OO/viUa1vh0aXVf6Ycqnxf4mjgDNfXKrslF4lGzzvJF+uQiivtFms2ZSwD/vgLrtuSiUpRvkM2XSDOvpWuu/S/Ig5EXoDX/jGPRiyuBLx2grPKof55PLp4AFXa008W0sqmc5OSWx3gLffhR0/DedB216hgmpF2PRHjfc9YCQXhA/aKnH19QEgwkjv6/apaDtz76eiaZjUGTbZXz5QT5QGaO/1DMREUH2Z3H7/75P2yJqnKaHA9r7hm+MilLQmX/ZFgcr++CUKsO7HtdwEDnZ1RN6Bo9wY6r0zSnlcF3gniHzgXxojnN5JHAFh97QT9vacQ9BIV9UXOI4BWbN2e9SaYko1ttIQUEQQVz1pR9z2PNKMcb9Cpzx6Jeoei6qp8Be/f2DdcGtcHGN61SYUgIS+w95mqZ3AuP0qtPlllyQ2bX/F5KUiJZU2/2KPDtBmmZ0j5l0GygpsXg8DExEiQopt7Ish+GvaQb7OFMFvDW5XOuBee7Bul/inM9rQfMgLX79YAms80zI5ZXiENO9ogzEMghS/XmPdjEevkybWv4xnIBeye3/Je7XCrH7PucGxBSD5iVztJ4bi2Sa/92tNBsD/XpGYYaoeqDTJoRIHyIinlSRXgHmEgi323NJ83kGlHy1ZGX4hUOXkxNOqSl2giixx6/6WybsX46yfXE5Edm6r7GLBFNhbuAPj4tAJjDCgcyF7gTUNPf5Vft0J1A87LMnj3XA9EprulB7IrobbrgyHdsFlwX1/E7pdMDGcRsbrktJiG0nNsy7bxRkjPvEd4zrYaldOFTGjoh8NC+Pv83uA+FWIn3SnXyM0wanPLnxyGRgtYoq3g+T5UuXnd3q4HKsQNTGfTy68lEzM/3LMFzUTrY5jDog8ezpwdg4IpqNZOLvfDAI55UnTOcxH3IwlE3d00NAcTnpKzv1Y/DOtDH4+d56aMy+0mxKJKCfovFGt1N64CFbiNJZ+Xx4SP9MQQklo6uh5SaM/GQoOmCwtLOcBgE3O0ivJLA+klhPVOtvAp8yWU/93HB4yB0j/nsjGnmGyVUz0bSAg198yda9B8DdR2b1LotBd7ODN1K6ByC5wfMVs1cTrEnpaDU7ExBHyVecUE0TnBtc6Ws4g2DX6aeO1FY0GsyVWpZvKwT+1P/eSOcQYeXIM4uG6ChEaKE8H6gchNUvAhvKqyUwPnTZCE0TkFn9n399pkMgn8T27bZrM+Ql3bEf/o+IurN3WK7jeiGKfDts5lw+rB+g+C04pyAnkeej46X14PjdYMygkQzgKSO8YxuFGsd+deFII8BrfpK29DSWqwfF3Ryxns31ElGoDmmFK84mwvRC4RB8x2bjelos2o2OV2+J7oOSYwxxVhhvfLacNtc9jHHFQc6yif4SaBhyLupILYSAHa9x2THMH20+OqTYDIFW6qrUa91qcJEIeSfER0TCT28sV7zsgZmGxPsRWG8G3WTwtF5NRp+nelgF1evh28Xxsxr8CGJQ7MQ5hSik94MjsUyuGFZ6bCSfHqoFg3be1ntsUUhI4n0Amw8V8hOZl1bNWqEsUPlnb3sCkpf5KyaV3wT+tXpwuZsAKjYiyVcXopF9BanUSJwCovvzQ7+wN0DzvOA/++l4JCK+EKYyPgp0n/QGej/kwf2Oaw9p7hJRftdaM4t3IYSIWX9z7QgE6QDlqjl8FLrzdqpT2L8ONgKz337JeQhP357UcniLQwHbLF8VfjVA1+dAwwMxheDrQb0mOReFxFVZPbgyG8GjU6NPcakErokNE5evRaNso1DXmvpauMYYzPm+JxXG/nsoKY7x+V57qbWKpDFo4eZRyHYogj8t2el/hgko9svPCx5JTbAVYmBSI1ILm09C+/3msL+rXMz5nvUY8AF71UumOEjMfBjAQENEDVdPYI8aQNqRnro0mQtmM1LaJv5RSOq7ps+yVz8kH81zk9VqB3FeC3vlAjx6LDIXpmrRDZPiLIUJPPngG/UhK3AqCfEH/zA4Rd8CddwNEoXH2+Gv7CHBt1UxKP7n8Qtc6a3AvUCwPUFFIOsjn7NTHYvw02ESo1NNsB3q8Ghtow5+6msPJ+6PQSv/GLTDbw5CpaSh8T2LGviPmH23sZqAiFZsYkvKrfB/jOIhPHicDJeHI9R/GMfJJoQiUYikVCopKx5FRiWrQkIoM5WRkawo2+07e++9N587ezsUoiGUykrll6J+9w9873vP93m/n9eLwnbhl4xIErzgHFwU9opH4pmHX3106YG6ZaJq2r9qGN0d/vziNgnF9TmG557qBWvDhZ0v/JpgLWctXcmPjLz62XYbJ/cB+8UjlzozafB0ITt7wYKCLAx72HXH+mBLyP37j6Rm2J+8f26POwVF2NuExUrUgNF1o57e8QqQvSApeaIlGn0qFPHb0OiAwgnC4HnPHFB+KPmCvouAej1KqrHfuwC7//uw72I0fGC+a+q+SUQtESEH60zaYe/LLYn9EU/gwcJZeXEnPCpgKXyj19IOgz1bwm1FNDBKnR+fy8OjPbyj20+16uDIMqGCz7cBTkx6thAaYpDo53xzlx0DkBjdZPfwcSy41uT3N/yhoJDuwFOhf3rhhtwr6VH3GuDN+jhA2mD835uKyp57miDAewITWEyD/3Ql0ACKQ1YbHYmnTRGEx+copgrXQWX9v54wFSwSO8Oxz865Byo4LeNX7jfBjiBRzu0/JBTJdW3qvXEbHOt5PNnGRgJ7fZ933E0Y5NC+nMbv2A0836OY9boR2K4qy/w0I6Erky+nhSUaoPrF6P4LIeWgkcay8ZQSi8oHXySp1NXBQtKAoqj8U4Bda1wZKrGIetJe6p/1CPQFWBdbZ1Mh4L3qqch/FORpeT/3BFMvdCrrV7oRy6GL7/QHbxsyOtYZfIidioA6laE6PN0A4oq2f0zDsaik/X6Fc2g3sASllhwqy4CSV9ckl+6Q0OdSmS+GT1tgV/kxCUxpNlwmDf5hOYRBScetQ4/TGuDVO/GHU7Rm+LBQ7aLzKxZ5ERSkB1n74PrEZdMzS0mwjh/sfblGRsvk0HbtmQK42jo3eYfYBLs0ti4n8sag49Zurj/sGPM8fvCncQYNuO4JCg9ewiKL2dPRWiw98MRcGXfhZz7YlAQFJNaQ0L9LFC3m5l64OD3WrX8tA+Qukp3ix8loXorQPsDZC6vC7dzPIQ2cSm+GkO3IqEjLfiI8uRDmoiqPjLfXwKNObfpqazQKbwjvsSnpguF8sdLQ84HQWM4idayHiDxm0xNavLpBSLBCPlQRD64jU7+dbpKQauHdbTOxCtjqSS3s+vECrDMyN1OFo9Gp97JFZ5K7IVZ68HfQyTrQ2ylfWP6IhEaY/6ovPaSBoeRpxbOHskH/Z4DxxRYcaotSeGjAS4X+i7PPpa62gJfOEanFJizSv5c6f364B+xNkm2ipPFgVhHjZH2RjLaZ9mYpmZSDpu+5cSm5crgZF5DSuzca8actniy/lwfv9xe9Ws8uB6F48cHLZMY8ddFk41ILaJ01dT20FQPCd/fLV1/CoNbwszo02SagFH+5VhIeB/tbDYROj8ahjKIe/r1LfQC8L66m5xVDhecJSc/HFBTPvtTbcLEXcKWybT9GqKCRMtu8HsmY57RP6ZrWAPCa/v0qfaIF4m4NDFsIJCDxX2a/D9CogE/jfj29mAhzy3sjcSo49K4Mzz57tROefD0ZPn8UwcGqIp/7rwjIvWPRCTfaB4rtuhe+5uXCnIrq6Wt2FJTwPNNj+EYe3AugpJ84FwMfmZ2vO6TGIDOt/VYj1xFosJyc+viyDDgdw60WGbmj/nie4bZjBKIO5d7pFW+ExUOrFbW6CWim32hmx8t+SD9TpHThZy1cxEtc4f1KQf8VjB+IHusA43tdw85lLSCWFDz2yJOAwkYF+GrDukHl05MHtYFNwHfK+ruBHQkV6UlJJn4cgUD8w3SWH1SIvPr0mektCsJ6dP2WO0IHIaua3sq7VCAp1xP3rZNRtuXnw7/1OuD8kzDNwR2ZULTgiZ/dQ0BmVoKDLvYI8m8nK/sYFgOwp2XvvYhFA+dbBIYGhkBxKqM1ZjoGKt3eStTHJ6Ccw8c5zyaWQja7iuiDiSDYE+fo0mgYjeLmHi8k2Q3C6WrV71cMngDnf9/VFJ8loLSB2saWY3Vw+baMVJpAOjiltdUdLI5BicyjeqoH24BJ9XmG+2AhBF90z5utxqB8lunzv81aQDvki36ydyPYiDsU/RbBoLL+NTHVhDY4Z959jLehET7lWYizTWAQLSW3snO6G057lq7P3KyEtCRehydpJKSSrin331gnhChij7qvxMBek2NmiWeI6BUfoZlTnQqGECEs2kCF6Pue7+5OY9G/kY6h8bYcuC2z8jF6rRaymDw0Fs/FoiPM19WcLLIhetTjsBo3ArtMnPHPvFjkLzedsCiWAzbpZL9Ul1aonPtwDWMcizT6x6evXKWB2V6srP2eUqA49n3vzcQhtTzjFi3xPiBNNb2UvVYEfNfKCKI8FHSh5uTAxbBaOHQ2l0+NuQb2a/9Zi7wWg0rw3U+WJUfgmjaOd9++FDB72Hj70tkENPyJy6k8NRuO2vwcOMRUBljJ3LiJiFhUJzYedTE+Dx4o/qZ8iCoB58rPoQbxMShlayLRQLIfQi+of/mgTID3OY/+NOEpSIcP6/WcpwlUzGge32gISD79WO7KOHS0YGWhUoAGz04c9PsoQgP1K38+/vXCofLgYdGrfzug5wr7PQrzCxg5u7yXOYmA7A9vB3wSbYc0uW1P9+ZW2HL623BMFY+s5bGPwrS7wXjYSfV3fA24xJ98UKlCQuYlSQ83Tw2A1qWVXpIDCQQW7/p8409A2idWLrEKNIKcwZbjz9xiGL1paGAtHYfuWuS+rvKtZeT5lGX1zlLw2ql5v8E0BhlYxd2e3NkL1boZAnWn6+CJwa7caScyqlbt0fykRYXFqePq9RMl8Pw+v+vEHBbJvzRqrxlpgnm1tfzor21QojcScfNsPHp6lqp4uqkL+P56z5tJ14HJv0H9oFdEdOp79av7yc2wu5rA8VukFa6ePcf1oTYeFdUPcVlUtIPVNcPv988XQMT85qXpHDwa/+2O8xRAYDP0WvL67gYY+nf4hvpOLDLXaPA28e2HXbc296+m0qBwn0lQBI2CKCf+CDi7FsEbcYfwAyGlwHTEuy20OBo1EEyNTo21QKaNxzfiLQpc5qEzuQAGxXH9/ujJOgJxzTFY3RtVsGA9H3flVAIaTCuk/+Xvg3PR0un0xVIoD7wodHqLjEZbOUoUshH8/lDd0EyoAL0bU6MXTLCIXqC1rbXSBkk9Nex/fyNwFKFJJm1iUPjEvQ55uQ44IrvB/af4KYjSrw6u/sEjA882tfFPNIgXzT9MSaQBlPWf3rUbjy6GxD4Pzehn5GK5R/VOA6iu7g3Z30dBp1NLpF7r9cF3q6+cU5YxwJQvM3dNioLy/JPqV6q7QHPYpcuPlgFrIkZ/pocYebw/fepSTD5EP62tmRfMAo+94VEVl2MQ68rE9UuluVDq7Pdv4UQ6mGIO8E5MMb776x0F8W86gGThSPw1WQeXYrpfD4YSkGVPjYWoVw9c7h5WfMvo/0Px8geSGdzIvCLgN9QWAhdydZgmYlohbCbo4sMqHOKXSaIGR7bCfXmZvY2zVXBl7XfU9RAMGjQL6NaYr4fLD1ae4BWbYCZayeC2Rywq5SLOOpr2Qh3T3/cJw0XAft1/8moUGbHbZOUVvBuBEPrA7rtDOCA2TCrzO1HQPPmXyXZbF/z5GSDlV90E70aTQ42niSi4Td34qnUhPNnP5sDH4Dd5s6kc5x/RiKnaVKztYA+sJ7b9ECssh9oxlSqJQRJ6vcuHqqHcBkqCM2cKq0ph/WdJy5lGDPLhfBAp2E+F2cG3k6W0RgjxsPnv1gUc4gkbIX6O6IT8z2sU89xW+NWoFFi3TUCp5DapvWH+cIclK7MmsBJUb49v1H/EoX0hoa33ryEoDRc1odXlwvzRGaFjZ7DI7rLU+2z5NlhSPDSynp4D64+P7BupwqCm00W91FwEsd1b18/UvYAHH851q3hgUe6WNs39JBUEVFyVnIsxoGJK9KoexiI93qUzGs5dwOJdOBCzkwZJ5yrOdKUQ0fEIF1Psu064v/KY7uFBhTG/NvJlICJi9n4X4RdU+BGnQzccS4cJddsQPUEcqnfyuj+Wng2RPz9NJ+/OBjujBSWzyFj03u6z7C3BSlj6PSy0JFQGEhfHlWPWo9ANHYdAowOj0JB+3zOFgwYa8SLfnwiSEAzxi/1KJEGyZlivHHsETNKbd4ZtY5DOyrbJreIRqL43pDoYVgnGNPlBvgoKcjcbifKZ6gBlYzvPt9Z4OK/KHD8SQEBsZ/u8Is7SgA0fd0xGnApXdiw/UsDjUAXr8Rnnnx1goXh3SdmACn/8RSXNEwgo/R+/DGkfDVhjacnKK1jYZP77Lu8xDvW++XNtQbcV3iUU3PU8UA9/HC1UlB0xKFX/jZ1Cfh+8PzKsWni9GtSzYtTDTSho5zNL70CfXnhsu/hH4SuCvWXbsT65ZPSL8F5JgE6Fgg/sWkNKL0C+16v7ow4OcY9i5QfjaHBr9NwBQmQ4GG7JXR8fYeyJdGzfikYn8L36JJa1mwZ1yd3Kon0EdF+1Zvx0SAccYj/Qek+BBtJzckXymgSEd2H1XYnvgl0yrvi0fAQZX4IbWOuJ6FZvQ6xAMIKinsozzH9IkPWiz+zPTSwS3bEatkluAY+pU7aniDSQO6hrn3sUg0oxa1iX5hHwL+3aOXo4B8662bO9plDQemH4wYqjjH62CIgrr6kC1aNC0dH9cWjdf3DOrqEL6ELiskWWpXAmdJgj8DURNTZHRMbe7IKSh6sPlm4XwbsrZVqiWCKaPvclgmt/HtztSd6oNm8AemCyiFxdDMqOuVpVKd4PqZuaqyHi5bC7bKzjC4mCvlbOhJNpXTAWePQa0bYSsk7kPNRi9P965J7065YDoJcn0+/EyKkBz3UVHGsCWvbbyJ3e2QPh1VfLzl6jAd/jc7wNLSREbnwss8zwhWp0zYYu3Aq/z1Zd+XyBkaMTztr7NZsgLjwpmjmfCjFSJattjP/leK5aWXxzBIQMCzt1M/zBcaJlD12DgvrKlh7ajIzA4cDXlq+9yyHSMFddhvHdBbjjXUvO5EBctJavalUz1FmHqgcZxaJdItFD/fz1YB6cw7xTgQozlypPBgvFoskVb24xBicY39MkjeiEAjvl/aPrMbGIZEKON2vPhEeS1RHqA9EQoGTdZm0Yh9QDW9N03bpg/V/qjckXNXB4zjM0J4mILt+fux5e2wzaZyS8Uqxw8Ma2lz5WFo8M9VbQ8n+dsK3k16h+NQuaG4atfhoSEefq9L2Y2U6oF3amjlmUQtNYyuFKZSKazOoQmt7ohIOXxThYlhleUGS0MmNARG5ypzVvm/TBw83XL6dl24BoDeN8Bynozd2le1dlmsGK98SuY9wN8OOiqNPQo3j0j29BDpU2AXA5pRwsLgb1cowP96l4hLfGCbBaYYEwtDKxt7QV0k4k13QWYdGXkNty+8THQGxadUSVRAMJirN41BECyllT+eK96Q/5Z+i/cpQDoXJH7Jw3ow+HmnjfmFT0waDNn2NzDC6rjz9QF8jgaklpas2XwH44LoPh49uN4Pndp7vbGimI1zra/mlxC0wenXhxrecJHFy0nV85gUGvbfsKEuV7YCrqsK4qw6P36lfZXhshoei402pC8d1AD+iwimPkg1ny70CqKwlpJPPeEc4bAT/JgzTDAgTTNxRIO1soaEr++ub16B7gSOyYy9EshRgM70exXWS061Wb06Oofuj121TQPNYKgeoPc/QZ76ND0rnFLT0GPLKx994XVENI+k9TK3ECmt4lT550boAWC78Rgg8NeMW0V/WHGJ7+pu+2x6M2OGGaMLC6Jw66lZWeP+jHIFfxMNvFmSGoSn7kMlVMBX5WQevs3AT0hph2p0OkG0rzw4/tM2FwrJUC+d5uErpJ1+NOs2mDj/+EWkRvt0BWZytXXzcGjVldVb7EyPvK0ffP/xq2AZmT2yMwgYIaFp2fPDiFAJlzCLYtVsGz2mela6JYdNLApK8rsA28ej5U3HhaCXyz3w9oDGJQ+bdx/h9uNFhNu5DaaUaBpIxZO9dmHBqo2ljjyeqAu4kqVxyfMp43k5RCMCWgDe62k3l/miH53PGTnYrN8L1/+w7bf/Fo+tmx1azpXhC69dhsza0Z9n/9M+b+kYzOKFHPuCy1g8vec3oKUqlgROxKLBvDo6miS/jvQxXQ02vqNbyOwJb9j21kVxSalRZ0IGZhoX55+mkNqRh4eyiJ73uwaEjjxvFR3QzYbc7f1NzVCNUchGPft+NQH0GKVdqBCjnNWe6Urnpgj2FbG/+NRfsPEba6MCNgWPDywxyuEbKfaulQhihovFXrnFpJEyQQ3uxWbqiAZ5seKqGS8Ygu8Zge9KodokQUb2jz1QNtasgTT8WjMSHF6veMnLw0n1NjOoyD4Zn/FD2CYtEAv7j+Ul83vKhr82d6RoX/9P47tS+ehFjkKyrfXO4GjwvcVWLHaTDq+nPQQZOEDPjs5Kwje0ADa/T0BuMOly81uyWJkJE+SzlvsWQXpF02upox2wb5TK8qDZyISP7XP1vMBwRrEeEneVyTgV7k4PW7DosUHzrHfjShwjZ1X8oVkXxYzlo7pruIRaTdwVyh/1FhY2LM93JTLiwpk3W43HDIs6HS6uqTVnh5iUtcdq0JBAz6spSDMMj/PeZB/EA2nGDBsxm4JcIO8VS22eexqKbLM6rVZASevz3WwB1QAVaXqK1pDN9XvuY/XeSQB2oGT8XY29rgyvtXb6oZnl7Z62myndsMbv8dy7VKyQB2vXWHSRSPuD5wOF6VrAfXNRb6k2MtwPH7bVOibCwqtPYQLtOugtM/4wfeHM4H7agv3k/2RSP9+dPaNTpUqBH9HGuUXw5ZZW/LDRj+OHRl7vASdx/wi2y6PWjLgwIR1cCaX2Sk8fwjd4R+D2ykHP11hLke/P1Of7R5z+gBX5LOt+xGMHmRmUqdbYTF/2q7FO/HIZPAV2c/Mu7HVx0vE/9NBD5Bfz1db2HQpYuC5/9od4L9QaVOq4x8eC0cV+PdT0DtRJwTmbMLuG9Pb11qqYN5+/OvzEyJiPBEMPWgUB6cvL1Y3yOYB/Op4zV/amNQae1CxMVhKryvz5xqxBRB4Y2xqmoGJyjwGUXeMUcwHBd6TfC/TBC9aOJepYFFZy53Hc2q64KQAPTNmdACxvVsi4Z0IrK5N8Z+60QvXAsabdh4XQXeD4Xs9MzISOfZAcUeyyrANqpkeb18At1fyl4kiEajyO8+EV7kHOiSfJH3YQTBYEiBFZyJRXe4fli4NLRA3ip16VVrCcwmu1mPqGCQ6g2Wg11x/tD248PkVAwN6um/3Bq/4FDEt1Ws5cAoHJvFOuO38mGEwFTQX8nIO7ZNYSVzBBxq2A06dYpBvozrcAajD1/d9lmdc2yBf4Fabd9u1oB3e0q++T4Movs6ZdlujkKMXyQNz50BKz+f/VC7TUDyVLMMLu1B0BV5W9x/LxcilT99E8AmIKW9+74Oi1DBL2HDhP8NgpSjUkbK7Vjk7HeA9+SvTrhq4n4y/CYRiu8ZFHRfIaJn2JK/SzE9cHJP046G2gTY9Of88YSRI2d/O78Dn0bh9NErhh27KfDt1LhyYhABLd3hMFHXHIbvWwGXBbjLIOzGz2NtcQmoiP/RWlrFCHwfr/V1K3wOPPPaIcPJFNTEL2ch19MNJQc41CvYEXymfI9RIpLQ2QK8u/aJNlAkEWt39PhDQFlX4CcGt4+arFnz/KTBDM8wV80yFnZxLF74KYFHu0S1M37s6wDrtB5rfQavFsaeb+FewyP5u2y9Iuud8Pb+j5dPPuVCbeLk2oYxEe08/9BKaKoFktiYCnuU2sC6p15cVQ2DjnPyho019UCA2aZCezkNgvM+HDmpSkaN/HEVHw53Qmr9d8MkyXIQSbrB3dBEQJdda3XOWyVC8fLqEQmZJpguuFFZE4ZBcrb4wEjGvXb4yWWCs60Fg7a6Hv2DBLTb6DuWskSFzKai/M3VWtD5j+PQsDkOGWOF7NU4h2BYWNPk8XgF2BTfaG/QSUA1mProiw0IJD+e9VFIbIJbPHxRGU+xqKS37Ohjkx4Q2H1F6/rRTPBVcyyXXSGh+gfGoS+e00CIuD+Ys7YcJGb5E/V6cWjC/HewLlMucNkGFKcerwSK2zmJ83yx6G24y507Kj0QMbg1Fs7mD3Kiq08jPpLQ928qb5+N0QGG8snfe4pg5l/tG+FyEsJQf7mUKfQD2c73lNR2Etx8sB3plERBzY0tz63FOmD3GiXaMrEF3uyIpXX/w6MyytOvQ5ajcKEx5uwREhX08023D8YT0cTbe/IPEkdh+8UHW01OGjjatt/M30lEMg8s9AXGcMAZ+YXktj8eFDwid7wJxqLSUEnSvspYMP1ltM619QK0OiTyb7Lg0HPlSBcNznZQIVrmTrwtBbUT2HxPWTw6sk9PUZGxbzVL8XtSGNx7X8f4RmoGBUWwZlh7dHRCooSXtP9qI4wOF7kNyhHRMdsQ1/v8COamGr86BabBo4WllAJWLPpALCQTmLphn8/IJcuTbXCX2Ecz5yEhi+kDpKwT9fCX85v2CSMEFOM7BUbbMeh9qGN6PEcfXLAa4fZwrgdOe/VTv36SkfdTTGdfVQPsHf52nNeQChRdZlGb7Vik0qDWp5neCV1nUYKkRBBInuzkceJlzOHU+mn0gArVTsd/sMfToNYodp28A4cMD6Xcnmbs1bdn5CFumUrY0STMuiBDQDIFVdtdTRWAOzaYI8TUBk6spaovX0WhU/VReSThTjjG18titL8ZPEs3vrSmERD/BwMJizJfuNp0w99NogUqK6yCpTcYHqfU/3z+fAcIkNgkDE1I8DJ5w7PxNx4Nf6vwERulwaEWefXaFgRN6mFxOnvwqDY7eZz/YR4E6u3MIwXXgGT/sch7+BikcIojUL6HCtNJBOEHExXgO9UzuUcXhwy8NtNkFP0gqtPXeg9zLfD7+Nnv+4tDo69THZtvdYB0+VlNJbNSeLI8V1nFyItfsi93tFwTFPhfeDSpkw6pdq1hcQNx6HC6558z+0ZhRj9SfUaPCt1S7pg74iSE5bqoXz5DArkCL7EDm1ioSnF9kPodgzbXLuXG2PVBBucPP8OuAAhzM74ayODzwWcsp/YltsP21uOlxepi+LeV86EvEY9Yjl/acPo1BLsK6FuJP2pg5jn/j+2SBOTIEuuh+moQeMetXK0X60G7682/ieIENJ03ou9xvwNcOst+RdHz4dW//8pyFAioWWj4vDC0Qnwm25RMUAYI7fKw47THoK5elbTwwSbgSQ4n2NrUgE4GUfgVg/933FDrvPupC2psditbuFBB13vi7u8/RPRHcJf4+osR4Pt+3DtajAz+/qLP3CcoKFFfZeWsLw365ANfpV0rAJnaA6f723DIwcl3b0hVF1x79ey8w6sGMBKJaWUdI6IvzOGyq7dGwDN+bPSsez1Y/XXg/M6VgHgzfu08zMjJkKbfeLF9HYRoPXjat4hDi9iEEt1d3TDM9Wc64G0e7Euf2le5h4Scl57ZqeDpcHy7cK9jBBVMe24Nr50loxnZri/OV9Ig7PT9gLjNeAgZ6rx1oDIeGV/8nbbN8HTViwIqONkasJF2OZBFJaBd35xUI9o7YCSkBZNHagBdWg6T+n0C2vOl3EHkZgf4exHqOH7FwDJn2eOb0gTUIpWYsFhPg6lKkZCgeiqEDXJG5C/h0N4QMJ+Zz4H3M2qp7FIEqLD5xLd/VyySTOQVtuChgw3+DOuRpVwQw9klOMtQEOKM0/wp3Q7HpwnexZQm+KTP+jBZA48i3b+m+B4cg9oEJ3XftXqIOXw4SFuYgFwEd64z4ctguKj2p5dePnyN95lNuxKNagNHPgZdCYaqKre3Y4UIbkiGtrsz5l8+L5/m9S4DOgwynkFMMySJji66ZsWhhjfrM7+CM2HxlsVXDrFWSO6dmx6yjUOZHcDEEtEC0s4qX0ICK0Ec6xmtegSDCpQOVrac7AZX9lV8q009fL7gYSq2i4S+cLsJuEq2gpKdg1IEsRzcDWYmom9iEI0kx23HQodgN72qvwJVcHDT9USgAgWJ0uoyTc0GQVKh/mitChVIA7s/eSQmILwcn1IdbQSCmO5FbeAzQKDXUPcugYI4PPsLv5iPwMf/tudTejIA91ZTAS+UgET2RHOdTPQHpas9TccUMLBC5lVl/4ZDN86fiUiO7ABB/98+rDqMu3Yn6WmSLgH9bnndMi9LgzOaTf/pvG+B7csmCanPcMh+UYd2htwJ2hdEfQKEq2BBgdXVkJOIpFk5g5PXRkFK3zKQNa0JOol8p6ZcCOid41I/i2E3/PIv67I/XgFJ1cFqgcok1Hjjw20rh1FY/y2ugLtcDH8wm77ngonIVKs6PY//GVB2ybC5tBSDEknoTkoaDskIv7t0tvkJ3NZ5+Y6/qQwiL32fcFnAIa7/7FXPSo3B444kFkJfC9ye+ao/KEpAo6J/eCZ2P4Oss3TX8KlcOCvQn/4zA4e+zdDSpn2pcCviiLHbZhWsyJVcJHHgUEn17PvRMQSs0kR7rSNV8LzTHT2gYJEd0xBXqsgY2Da/rZ+3yIYntwL3HT1KQA8mw7A5O3JB0zzpW5d7IdTukn+sxx2LzLBg9AvfAFrm8kB+lgFyWnWXX0/Hov2aleJVCr3wxHV2a998PYhwCQafdCSjATMb59febcD0+YDWV4MaEG4+qifcg0HMesGlzxVoEEFP/dFSVQ9bBkOyYy9wKO/6KRuBQBroOJsSo7Qawahd7XNXNyPvVItJiYdNIK3HBS0OzWDOzr2p8V8cEqt5y29ZnwHSpT+sXksjEA/5S3JBcchyQSfJ+Xs7fOYwiPyWUg7sB0qy5SbxqPHz2+dffEvhe958j9VGG+TiaGocb6KQq0nIQkN5Fqzvr5hu4GkEyp7pJvc3sUhOts3i9PUmxvtYVEgH10F6R+FX8lwcaqz/K3Supg2wP7Evnfci2LKNfbTwDoOefTx6OkQ0HWbqO5LM81qg1fX+/e/B8QhTyBd7RYEOh8OVTuk5FMPuafxj6goZ2TnG7RAXfA5hEnWszVIZcHJL7ay+Bw7xfBGIqeClg67iSV/LsFaY/u8quxyjH3Y8DPpx36kLRK0PX6A9SYZwDEVnIZOIDnHtyyTkISh+NhG0vdYGMemrj/fdxyL/7BFmfwYf6p70lNYfSgB3Iq5Iq46AfhrECYQvUuEbBv/4nCGCeF1fQguD9/rwMnPSulRYFvloIsTTBnt0jWidX7BIKIzCoZo8Cvcu3Jy/eSMdruWP8AnzEdHg3y/L9/yKIUBKxkXzSyG8+3Knos07Gn3GjUlhzucCh2z4f685m8Cu2uyfHmssisKEvHiRFAj8MQrGvkQqFDC3XJt6i0M1O0yt1e62g5zCbvVqzQQw4fpxwvExHlFX/ornW9Lh5PAnr6zNPMid/cSsl0pGyF1v75k9Y/Bk1X9QWYgKFucsF94rEZAdp//f3JR2COD3/+yzOw6O3dDcskjCoxeB7/+ae7TD3FGJJ/W5VCh6rcOS64VHrnzHlyQY+5+69/77RxdKIIDwy6/qCAGtCPjstUzuhjK/SJ9PraVQaWXTsPSIhK5JPw9Zt6bDl47yNNOUODh0w/FURDwZndZ5gzxP06HINsX53GsCfDOmWCp8ICOmxkQF02902PtQozkpHcHlwW2LmPsktHhydmvAJQHMjmnsP6hGBm22oFzPTAxKCfH7aGrcDuaPdpjli9aCo3CCY5cdHvlus0ud3p8BVFUd0n8WofDytmM5SSAeXU6cwE1upAP3WfV/e4Wz4Vw+8kyVZNzrd7SaTw9ToCK92r+9PxOsHL4Zb4th0F2nJ4rcHTmMXvZ98qmMChsvbb5bHIhFoYn7KBsfR8Cq/YHbAUwdHAky0dOyoqC5ZFYrrYVRKHDCxY68rINLzLIJR0MJ6IWp17Fyxl6Zn8aDbFkxNFlEOwnWE9DQgtjMjeI+yG3ZYEsqrASd3NqqF1oUVGi7AxvzrQXOULdaYwvzIWq3krXYVQxKOoxj+/t5BDq2RriZnZrBep/ZdY6bFFR9nTzoUhQNk/wvJRxSW6BMs/9r00EcIh9rGpM8zujVmAuPznJWQc7L0XGBn0S0fI/LxUm9HYLfRBSr72sAziYRw/cmePTfJPkOloBAYr7GBVxrYA/nt3P5TlhkEnHTrkCBzPBZxd30sTq4hu3e0l/GILULP23TvtTAXsEtQcJ3BPKvFZ/J2MegA1PiLheraeDzp12Q6yzjOT2ROzzncehXqdpBjbl2uH5Uiee+NwK83rVrCkN4xDr1UOhxTydIi4jH1aylwV6S7bKIDBFJVTzZ08hPh/69rRUPdRHMZDrPsElT0GIl95WHDN+GMCuWT1GF0KZD+PR1KxpdeVP5O+36KEhLyR7cUdACnOKxbiiBiNY6rVh+HcJDhlef5q/BTMgnrH2Cx1g0g+s7r5aZCpy7PjR5pjTB7mZR8dDFeJSPYReVXRqBMtmVjTf7CiE2QbqMx4KCbOXPDdobRMHO2je8k/5tYF5ALf+nikNW4atNT1aGgVXoq9xyqh+0cdQNsUsnoMJSe8F631Eg3zsRuXq2AexLHI9MGRBRb6zNnVS3UTjBLzCzUFMHrrL2OX8cieiIXcC/xe4X8Nnr0lfmIBoEBr3SSLDFIX7niBuYIwXQfPiQe006HlqD/XkfGMYgE/ycOz8PFXYnPxK8/bkQLv6o8f2djEUZo4NfiAwOzMqNeDChWgUZrTtk9D7iULFikrCLfQdIGH2NlXtZBQ7vD72pY+Q3WJ4z96VKB7jdYWrQVagEgfq2jhYuAppqo63PXKODXV8FbfUWg9fumnIJVpKRYeLPK/xC9XDR6fn1w5qlQBRo7d5QjEWWKeMELiwddrU/G1pyrIQKevZryTNkxKrV9Go0PwhYjrsV5c03wLk0piKfLhxy7fjZgrWpBJZg6TKZd40gWZYnKZgWhew6Lp2JPdQJCtxUIcveDPjle6vnQSUBvRpmfofpzoTWTIkT6o9yAThWZLKN4tBVBTWi/j8/8JjyL++UrYa1SdOkl+s4xO1Zb7nA3w6v9rKvKn3NYbz/2tva43gUUOSx84F5D2Sk5XpUO1aB9sazynM8ZFScF3K4gbEPnzrm4++3lEKJ8L7g5oV4NGS4v1azdRSWRXfaZr/PAcGfh0kxHYy5RdnTEu93wp/9omfru2vBYGfg+sZnAvrksFuhfDQb1h61DOmkV8Pi6RXFuNBYpBFp+1P72ig0vDHmUWXsL75kKcqykIiS5IuIp7RG4QYxyf/LZg6YJx75VNpFRGca8r0/25bAhw/fPRCD93A/G0l136IQ79FKj/P+7XD05a2X539XQKuLdnViKB69sZWNimDwz1TRvSPbDD+SlRVX/i5OQEo8MoUXDOgwgfDnuJPqYaeBjFBzPRmdSwm1uM1Hh6jl02bPhxtApeMECBygIKNGF8zVPZUw7VH5IbStDrD89om3B6LQeFbRkZtN7VDd3hp8ndAI7mzp+MIiPNIl6YQvP+6EuyI822/H6oHjTHd+5yoBDU74Tjb+7QWnTWGfrOsINhrTRaP3UFDvBcJrRQ46NB5b+0zEJgNWYb/BxeMU9KPsPFfbT4ZXP/TPPaNeA4+4pmZSHHDourWV1C6Fflg5eEY/cLkOTp4Z/nUtgoKCWWWM3jO4ZXKZV7pDpQYmoqd1LacY90vvMCfr6CjkvXcVqLZrgI29IuNmiQQ0g88f05SPg2rdoFNB1vXAdM3uCP0PFrGw1mthxtKB55nukQCfZEjTMA9ik45HX+vH3sfep8PPeNssyfU2cHg+ofk0kIyGA4eG3fmi4SCbOu/7fzWwrwy3rngUh4bmvOLVuOhQMIQXUmbwW/hs3PYgo6+MJ6S+bgh0Auu8xvGB6QrIdY56F8zw990Tn32sGN9rj/17RXZ5PNDLVZ4NHSCgqgPM1MbAKpBh4rv0giMRInY1/loYj0JWkW9U/5blgAb2lqF6IQ1W39fUz52NRQSBiWzn56PAW31tI7+mGpSO9w1/PEdEJXq927mvRsFhzmxxLbAVFsWFCAOpBLRQe7Nkn2cHNIkGdz082gTfx8q7PM4QEAtn0XFCOR2wmg8p4oUtcFX+6Aue7yQkE6dz8bjYC4hZKuk69rACntU8YQl3xiHm0fk9zmF0GG4i/fE40Qyno5Y5FAzJ6DJr0O83sYNw4XY55e9qOqTpWjq4lyWgiobwkvvdA+AuODBX/aYJZqM7NBxsElC5mz1x8FcZSNGwtT7rGeDn+dvjelYUOobniri7xx8+t01VPX7SBDu0Dpme/opD+d8MrFzER+DiHpyg1SESPApiS3ITT0CSK/khZ5KyIPGwmnzKj3SYuprCtmc9Fk12Fimws+ChzdCdvVW5Amiz7T/8A7AowsDLlfl2EGjfoU0UNWVBNFfyaRjGobr6E6L8Q6Pg7+edcrioEnBJYpUlxQS0dgH/60FUPxBmB5hFUyvgVnzfPd5XFORtfvy+7UQz2PL8xBQwuLcx943a1mcGx67/DrzpHwEnc9FvTslmuKNqUKFkhkOT2jPf1ARGYHfYw8svduQDb1PN/Xm3BOR3ui8cREZhf8eNNA5UCDbzZa9lZUlIvL883LyeDr5GawK87Qlwq/Tu8N05Epq9TFz+dKAJmDl1rLm0SFDI7796uykOtTx4KGLwng6kC9Me7/5WgiZzxa+bSSSUaSKJx59NgFmPNkGDmmKgyr/U3crHoDB+2rYWczXYMjVX15W3Aa3nRmz4RjRq4mo4cuUHAbaC2f7+cKHBMWu6SddpLNLrlTBsVB6F8JFLyTUjIRB0UuCr8hsiKrPm9WgNqIdx/b38K89q4PXCboN1hr+PjdvEWeNSgFytvytwrhxyY76oeh/AoJyFW7kS+e2Q15TyVDy/CjBMOuSELEafPGk4Hjk5CkVW/mYCfvGQz3PIeBVPQPL+in468gwv4PM3cCssgw2Ovvvv1sioyylH/YP8ELzlXM4Y+l0K5pNbsT8KE5DRYN+ArBgjj6dmcFOPK2B18/BUKx8FWau/N62MTAGv1uHfOqVhQGCb1e5n8J5ki7bGm5w0SLGZb/zK4EneLDtCaXk86rtoVjrPFQyVmOY8Ocb8v7VYibj14pDKft7XYseSQLrXf1EqvRnCfV9EaNljED9JTsk5OxOEExQT63LKQY42/PTx5Ti0TmnBs5/qBnPzlrnLnUngUNH7zU+OhKx6OPMOfOmGKxeuKu6PSAGj/eyGbMUk1BNZsCtJdgCyw2iBnok1wD7/fmesegIq2oE7GFBMB8ln/1beXKXBA/FD91N/kVD4U1VWErYQ+hTS3dyTosHo6iCfi0YMslnW/2psTYJPM/6pN1RrQSwYi5KZsKjWMIWvfDADyrMEB+gzeJDKrlIDehyqM2NSuFPTBYoZnG0KPgRoedhV3TZMRPVIdIHCuEM+swMmPjOB8GNeuK98isEbBzh3O77qBGSjYiSOpUEbk+Gpa2eJ6HSD67/km3TwuT54OroqEeLDLmKEUsgo1+CyY/PnUTBWwadtdFPhjdRHvsQAAvorr+kadYLxu/7fKc2c1cB+8u77K7ZERFWQKb3H3Ar+bE+5Yr1a4AO9NZ1PFYOuChYc6WLwxuBr8p05wTT4+DHwT7AKGTlOsV2V82Dwj4psvMCjNvCNM5MyacChP63j6lcj6OAVphvi38zwP/fEOS4NMhJob1DVxzcDjwg/LsagHHZxCmzdaY5Hoaet1Th424FN7mLndFkmFN298FeNBY+YD2I/bQtnwW2t7N2bx4uhziPUt0UpDn0h6f13wmAQmk5+KJxVqAftErAJkEhAWv8OL3No94PqqcC4wOBsmD1j9t/zWQriS6VHitYgsEy6GqV+uR7mvBPNBVOxKLqzdKispBzeHJB29DNugJDZg3sfBEShUUrNxPyXJ7A7dzPEaaAAHizNzod8wqEvvzkLZG77QUtxqcGbb3Xw8JEa/eUGDnEUjTgvGpZAUDlLuA+iQe39Y5+nN6PQ1ocQQz67YZDvsI+/p9sEMzY6NhCfgGqeKfF3jvtCz5MMIY75NrCMozW9ZMejm+qj26lVo3Bg+kaXEDUEXF+JvhOaIqDJyzc8U4c6wYW1a+ZmPoIraY7bt3SJyPKvdN0dLSokMzWZwzYJMAJVPNk9WNQTCibt+W3QyswV+Ha+HGbr3hW00DDIYZ/xycy0FHB/KpFvfhtB94blyCcBDBq42+87ZpEI+84cqnSziQWLsI/2vzwwiL3u7h77/WPA4UytXX3cBpWmz5JUpQnoaqxt9b+sdNCS5az7RKCCtjJLWbY6I78qBxZKd2WCdu/BpUvLCCrUx7S6cHGohtJyeeoNHi5HyniKe7aAfYt+40UjLDolhjWLMk+H3a96z2VM1sFxO+9zR+zjkZG3iMdMTybkTGjj+ELrga8S53/WJA6Z965XZU33g4xlUfC7tiYIlmgWihdIQF8Dh+zstuhAqCafYGfwfzObt4bhdRLqpslpFy6QwHDr+GSDdDOg2cKbtJ8YFFm030GkohlmA37aHX9bBT8l5pIkiuNR1457694yYxBoaX/u04tkEGe/EdomRUAqMfHFV5saIXTRKj8HGPvi2fCtIiYOLSmp6m6G0sHTjxpqak+EdenZVYvrZLRFXf3qyuC9278fJCGdKDASiNvgkaSgadM7LqvTdNBnX9GNr6QC1XLXoUPJJHRQZOWK7sAQyM6O/1K7mw0xnof36ZUmoJgffiyHGP7yea+hxru+JIj2xNWIPSSiWmkDEl0iFkZr105LqWeBcaCKUd1OHBp4VnSRZTsOFvfZhsSJE+Dkha2lnBUsmlJeXxDBMJ5j26bgzkoF3cn3gpZSRKRiw5/gwvCCnXFvvZclK6GyQ9wxLzEKPRoW1Nts6ofOl5xZDodL4dWhxoTvtRS0euiHGu8ABup4883x5Epge68uJ9yARTvDeilWtFowxb7kuCfZAh1jmvoYoRjElIJpchItg3gUy7pFigN9dLHY+10U0t/pzu9qS4flBKH5EOtW+OR2sWWCSEYc2+Nv7ryjw8HL8+mksXwoGdYv+UQhoSif1acGiQzf4X6+FvauAHgbLiwvKJARaWgf17U9keAnkvTVPboRDIKiNIYAh07TVy8c2zkKQdhXG5c6adA8KHY48hQJ3ZF/9lqthQznzn08InXTF17poInHbzFIfXt4x/7RHpjhvX1HENcKXbrGEQQxMoo13ceasUoH+esOr87GlILExrtX59xIaLp1hnVZbxBefHpFfcCPYDsFt3dbJAG9ZENd5lY42Fqx6pL80AQq7w/9dY7DovaIk7a9/qPgmlks7HSyEjg3+kJx+kSUQvsjJzc4ConzrBIyZtWA7ddJic0hoMbEjjieHSNwJTX8CGJrg54jxMuCiQmobld/YxN/D/TqHfsSK1sMN25WSvmkktALnruXI8XGoCfzzTu58jywLlOPuiVLQKfajPYZbbcC/XnzLp4jyfB+4xD5BhaDts8pzrVfpoPwWzAY6s4Gtp4ekG8kIxa9Pm+TDDq8U/Q0xknWw3SZmX8iYw61I+sqPmgUrv9e3Ms5VAOzB7xSyb0EdEtCovBPP8Ojo3zpLH5l8IHbLuizCQ7R/Z5+XkvoAlfv99JLbeXgSzv47f1rIprg98aKb9Jg0ZIemJpRBEwxfb+/C+JRk7eCMc/hMiiRC3/0sgABa1esy9e4aCSZS8qQ0KbC6czUSxIMziGc3CNEWseiA0o8bY+XaOD5617IhYctwFKPdxRcYHgBx40zZDkG5w9z2qp5NUJK1QmWrcMExDR+1srQoAd+NLmJvgqqhU0dN5mkvWQUQMwJ+NTQAEGUQiKppw72XBh39dOJQ8piRIs7HslwY+OS6duRJKgOMvOT0sCgI8+d16cQHcwrlg/P8yKwNX/j/pZOQi08BrG7/vYAi/3lljcjjP5DTJf2+pLRtOSlwUnTUdCW+cp+OCkDdNtyk2MpRFSR8848NbIe2oz2KNqLpYIXj9aZlrhYxM79cF3ubRQIngvqejBQCPnGRVayDN9JCRHN5iijw3zNjz86hT5gdux5B4WJjDymKiVE+CjA/6TntFtWFmRl9T4r78UgNh8tr5WyIUADxmW7LlXD5z2FG7atCahMIHH5W8IA6Eo/fslpSQVuk5zzTo8TkMbK64/kjjDYcWWuUFObAN67V0UJATikLXiVcNcxE9aTOUhP/9aADMvFwUPBccgUW2f17NgAXOxl2ruujaCmxqsp0jABBczaug0nJwLPKHO+UFoD3CkozIv1xSAfNi3NO5aM/G5kxhyKqYL2F/c/JmWTEYWvrYRvmA6/+Z7EH3hSAQlfym3wTSTk2640oDQVAXNx3MtctVRwOdVYfdIQh/5ztR4eT+6A7CuNl9kupoK/1M1eEVsCepVEqpHKq4UugZTVXzdfQG89dxENxSBves/CsRkC3D0n0nK/tQ2uYofvb2hgkd2NkkdNzKOwdyi8M1qOAheLjEVaDUnIYzOowFCAAI+5wzFP8qkQnRxb+sYCi74bSODYZLKgvFroyHXDStDB1fpkiMehFwsKHfrYFAY3f2pt7aNB7NA+5cv8GHRdLSmITXcUbg0IVwz8jIWCaAx2pYaIToq8cz1oTIbei2sX4wNaIYN/cvD7IgbRzf97rM6eDG4a//GbNbXCuyk2ye0rGPRtp47XAY5R+Ppd6IieRgsUTJPVjC6RkPN4v/pc6iiEHBYMFXdvAfHO7HA9FiISWe1nUufrBUfM0iR+sxmCnOQ+/okio7rhx8/srtDh663wLz9MMqB1j+y7zGYyUnIwCD8oTILRKKHWU/mNYNxbwnFZBIuazq3M/GT0bQXb0A6BjyWQov47gS5ARsquO1K9bg7BBb/2C28TKmHY/wJy/JCAhm9f+2n9nQrZ27d1SjTKwVTZuW5BFYe2Z8ptd2gRgXiIPXP2aBEUKNZ4VR7FooO5BndJ5HioPrNz5MWRdKi6c/Wu1AcskteQLGA1G4ZIDlNH534acJwUM60kJyBLygjGQf85fB3vHbdxqAPXt0VKaw9xaFH/Lz4+nQ4chh+0uNgiYJf8eMghITJa3OVgfkukEKYF7p5uyKDAV0/mbCevaOTKbLXkHJYCp/xku3Z3FwH7oqtZtxAjL6dFSyvvtcLJwVO/X/jXQlJsba5MKAYJbKj5OD9tBW7uQd13JQ2A+TospBOHQbv87XSUauiws+ss5vmVagj7+nJNeI2EaPqz8mLnR2EzNvbcxs0KiJSujhIbJaJs3Yl3qo8GQbnfxIfpeiXsnjy1KMTIIyWiUWottBCuh4ml/xSlQtnXC266V6NRjXgqb++RKnBQ2cJffkUDtanzs/LEKBSgwIT9EDgKZ7v+Gry+nQ2nnMPuDl4iom33hrtO3lngtqjiGRHRBJXJ57f/1cei6SiXu6+iGf6bKz6T2p8CDxQ6dHgXKOjMW63t/OhRaHLixS31YsGiI74m6CgR6X3Lfond2QO/jHDIN7UV2sR7D+vNkNCuQ8UFt0WbQa0wsPzaf42QVTmWqXM0HjWdoT/C66QDnfh16NmhNmh57S92PjIe+cSccrm+ZwQMdHgbPjLVwEUh/s6tkAS0I5iD38dgBJCLyvxUXAm89T47n2WVgOYCvI794ewC92s7ukibLTC14mcx+pyIBK9+3H5N7YONL4bsn84hOGepl/ZFhYLg7eASk+MokAkz1NkdCGbxFYbPvIloz/59gxNqo9B5U7d0MgnBMc9DPeGTRLTjh59JXtYovNaeU3GZLgPXCOanI78JiM1sa9etFQZvawauuTWUw4UMxSxZDwKKLKg4Lr9Gh7GdoXp91XUw9fRgoaIHCdWGcYv92+qDAzdv3w0LjgbNdcvL9EwKklzY5mZfQ0DoXq8Qs8yAIuvf7k9fYJGFWe3rhWM9oOSj2s2eSoAOF5YPc7Uk5GmZ+7tjRxY4WHEc9Simwkncl01/tjgkf1VaVFuyBIper0zum6qHF6Hv8nAfo9CnU8wWqYw9H5ISrheezYXMow61t4XJqLIzRw83lQLLL6U3rFtz4GBUPq/NZjwS0tLZvGuOgaOrRWvWzxF83dof+m0Six58YDYx3E2GM8/Djo7npwBT9dsbq58x6Pyb/N1NwqPQN2XyuS+nDXCyKk27ZEnoi3kkn7gNHaS4f4SJHW6E1eDgVeN4hleGLzxhmkuEkDSNaJtmBg/s7y6ufYhBUgZnXtnH98Ou9KSEQG8qDIxsWa5FUlD/oGOC27FCGJnVPnczoB5eUTcj+Bl7bvdZ9+YkN4JdEsJHCfubIWDkHO6OLBa94Ph17bnhABDU+ZVf7ysEB5Q1kW2UgA70t7x8u9YDW1J7zPEOPpDCriRAkCajjN79X/U/D4Nld9+1p+M0UA6v3VvEnoAeCXIacd1BsIx31+2QxsL3dJ5yJykscvS8NxJig4VLleysYZaNMDfAnZ5VjEWvxZxvX0iigxLOnNk8phZe7dkUTmQ8f+s4i1oAw6PNlYL3f7NBoMhfeOCsLwH5zOWWZDO8Q3dm/1DIoUhIvP5ZedKYhJjeXdW+vtAOIuqp0rcONIPB8VMH+z/gkaVbVp8McRDmh5V2Hr7UBLa5uNzMkwnI9y/Ze4rh18cJ13ZfZ/jvVqrt3jEG31bdM5RiDxkFZakNa+wQDfa8HQivYOS9I/aJj8oQw+s/+3w3ZfRkYQE5Z6OMgLwL/JZSHmCg6LOt1PhxH6D7Mvsb9mLRlSaKEF35BZC6JPEhRB+4+cfBkssWh9imZoyEPyWByg+EqOF1cEiX2CxqjEHjzyeyxTT9wP7ZkvRATzq4h97YtmBwWl+itKqFVyKk6Y4EJ6aVgQfrXJttFONOPeup223FuO9Hxbt4K0PA77ScE3MGGZ1hEzQbVq8G+9dc/3Z/aIbzuQUbL4WjUc+Rr2xf8vrgm0x6aHdlAYT2XmbfDKcgJtYWmpdmPYyu83lxr1AheEvTfowQi7Y3xlT9R1IhILpCvGOOCDa/lIyUS+LRUvIDu8uDdJj7yTnOx0qAzBJC2bdGErIeeaSKN2kHnkRvfPZBBMb42M4dgEfF73cYFDC4yyQ5M2/ZMBJEx52ef/sQg3L6pUtkt+mwMKZxtCiiGu48yHbwNWFw9fYhqROWvWDyzPTula4IWJGLUdKZIKPhceJkCyMn8eMmdw/01sFmNn2JowaDXn6hluhWDQIKe6B+1KIIfIb7PXhQAhIRSlbVrB6Fmzq1V7UEiuG5H88fozlG/3ic33zEQwed7y/z+AppcEN12V5Oi4I4/+/ovOOp/N8/rihkRUYhKZkRIknURfZoKBEVlRFNmUXZ8xzb4RzZezv25n3sfQ5llJkPskJJVup3vr9/73M/7vt+3O/rel3P5+Nxn/v2ZjVxaqZAz8W+En2WaqAEap4/nIdHOoMPWM/qDMDO7Yi8Jpki4NnftXaMyhX2gYblaSeoPnsmTSPFxgXYOnf/+neEoRfvLzI/sO6HBox0kAd7MaT626zNuMUivTI9fIj0ByiXEzzuIVYKNLsSPxwsqZwmp3XcTGkA7H5116uq1cHFJ/6Nr7pxKAoT6dTQWAAXWCj2t6TqwdNVwOxiSjBik2OR1aR63GnT5Tvyj8tB9xfZXCI6FvXlPH9rvpYMx5dqImSMcmHld9YvQ44wVFCgcCBUqBJCRks1XJUqQKlwIvI0fwgSe/P2zC/1Wrii+CyXbjgT1soixzTMQhHlnzSzoG8hFLGkhx/jKYHtiVQV2bZg5F16+9B183AwdCJx0/Y3QecIr9l4RwR6f1zb5fxyD6yPxddHUHnMqXCOQQlPQI5pZcXz00RY5HuSObJeBr1tYOoeHoyMQy54vVek+t1d5jsBWbVAT/YVIf0Xi47c2r3y6SaCB9qmLfqZb+Dz0gllluMRKKibz8B8MhqCr6dsTcZkgMmXAcVp9QhkNe9vfutYODiaV4q2Xs0ExetFDtITEcj3yklcE1sUvFd/9fKUQiWI5ckxsDtHoM2VOOzvwDw4tlvUc9KlDF70/FQL5Mcg55tThvnlLTB0N6epgTUdYsLoyXdw0ajHGaYfHxiABMrBi+bbyUBY4SXMKMeg2zweC/IsA1DUbHBO4HcaNFf2u3cqxaDxqhd3arkioPoo5hh3WREcmi+ska+PQHKvJb7L9SbDP/0Pi//KiuEbR6HuefEwFBR2mA2b0gqIWGFQ/yMX3I4e9fJWwqF9Q5XM11o6YCPAaVm2AkGG9qSg7cNY5Nv6xIzpwwCYG9cVzpXWgClLd2wNOw6Z35pdYXgfCSO3pB+Z3vgAu2ZCf1/5RyCxMs6yiYfVMMfS+j3T2hVCxJVD/UxCEBYWRT1u+YPdxqzC+Uel4LGLE7d/HYl+aH759dkOgXnhQBi7aw58LpQ7d+1NBFJ6/OcOQa0fXDcy5C78q4B/LOetBvpikZ9q7sI7egIoNuizsL5DcF4mgGeyJBx5vDT9GMTdAe1xipXlr2vAbkF57VBQDJqmnWIpvD4A7uaO52Sf1kBmaqDLThEObTleLw80bIIDWtmP5ShN0G4l8CMziMpCHY66LvUtwNHs6hm17QzoCz3bXf9o9PW/U5fqX7bBz1Tj+JvU/ekk1kmeHTikcvMsZt06AWxt/ri/OEmCvC5fzxnOcHQ1KxZ3tIoCs/T11iWOJOgS3h+VNIhHYel7oWOLJXD5oAk+aiEVGjptLKxKghGHMetmuWYstNz7va2dWgxsTaUv82fC0UUeVfN2+ibIjt40jyalgLBgEBNveiTC21MsnIoJsCwywMEdTIJG2ct5gcnhSNpyhEPGigJ2xCRV/eUSEO75feyyCgH9m+mRvEyh+l7+xNMG8WogDeollF+MQKPRP12stcrBprW9euR0KTw3/q4c9QaLaFpCyz3W+2Dv6afEn9oNYNhjdx0zRkA7nUMW86VkOIC3DdJWIsDn1DcNCqkEdLe5fPie3ABk4JVzCanlIDk8av33PxyKOWRxhvywFyKPWY9aU/mk0fq8/OkaAvqZEli1dLQUhvAqBYafKmDL9HwW4yAG/RZIM0p/GQlq1ts/Ta3LoUfBQvguta6SH3pfKNCpgYYDZ9mtdBshoyDB7utoKFp91iOu3UoCk6kYF+koZ2An67O9fR6JzsxkDlXqtsL9xPO+1h+bYLOJ8YdfajSq2a659edwMjiI3XXbsqoGbuMQ5iK3MKQ/c8PUvaYY3uoRGdyXiOBz5WmcTiUGzUlJU9h5UqDPWuUWK64MvBM9+CpZwpDHGz1zTuo6cXi/0AhsJAFDzH02u2QMah4/UmbaOgAyg9hZ5++pkP75623i52iU9/TYtQ9KdaDt6oCZ6G0CpjOvWLS+hKHBRlkVU8tOeN7WcuQrYw6ss7cFtX2MRfFfl4j+VM7hVKsW1NYsALv80sOi2QSkrSe2nNZeDOk83wI0/rrCsf5TBnweGPTX+yP33fZk6HxZXL8sngIWo2edMVZhyOo45eg6pR8uNQ8d45Gog+yHZEba+hh07PSTdZTVDx1FQa3sXTUgJ8chHEwTi+by13ufPyGBuOwHvn/BtTD42DGNUhmBVIpUns8lpICtrM6/LaMmSJKl3fPtCkUzYhUR44YDUM6GfW+t1gQ/Hc89NHDHIYz22TkRwyiIOXGEB3/XF9ZiUxNLoiLQVOifP2vOpZAcuayc24WAZ8nxBjYtGK0lXkzk9K0HFLzgVH8qESatQv+qrYchpjLeQFbnAaj79S3zuWwF0BbdC7cyxKEn97ZyhcYGoG3H+2OVTQK8qGc8F18bjWTJV47sxVGAcXK6onvECQr3KoL7cHg0P9jMe1elCz5aXPs1mlgPJg8W+7L18MheqJFu4C0RDmksPvkr0ggP81GWVz0GGWcy/FGv6QF3r9yDL76mQ7XTjWXVEapPdYjoTciQoXvc30pmrg4+5S7UNfUQ0F+oUCnc6oLY/aPxxbJpEL9i9Ur3PB4pqfi2OPj1gLM2puqSSgpg/RIunhvDo1gOMfmrvu1QasGSiKPmyfRrqvolxCD/mdDMhOQKiDl22Pn8QgPkHcX8S+rBIB3nkxZ6zAQgL1XgTlH5MNvCUr6nLBw9wfacqOErh1vv+09+pSmADW16Th4jDKL00pJEbg2A9S+2gcFpHGw/ZBB/jschStE6Ye81Bbr/Jju7UHl19HSpot4hAkq7UBPuf4cCmXspbrotCNabnzKVqxLQa6Ra+XSzH5w0ZNA+RRe4c0dLX8YsBn3RY/SJ7eqET3Q8XG9WK4D94cfy07WxaPVO4+hXiY+QX7ajzG9RBzwbreX5c1EoPunzG/t9zZC+Ojh0oD8bjtNXz6maRKHCNouAmZAU8IpkpZslFAJnfD/pdkUouurEZaEZnw6Q41f7kSkELleEQwNjCPJS2+I/Fk4GYhPN/CXDUihVEsyc6SKg80TFU1zv+oAQY/BD3wCB6j46VY5BApqpOjxeHNgCoqcK8dyDRFDyncrasotGG2kfl4h0jSDJHtt+ZKQBlE7eaqK0hiPbMblWbv0eOGYZSfLOLIFHL+v35XzEI1rl9IpDnE0QqnBr4qdSKTA41Mbu3olE6f3PNfc/KwWbd9ucrx2roSzMG+8UFoyi6vd09yQqwELVQoVLIAFU30aGcBAxiPdVFG4hEUGM7widghoJ/FRY/3lCBGr0GBpfo9aVwqPDdXEZxWB/tc379WcCekjAMbYX9wJe7UWA2ZUG8FJ4tCs6QkA1DNLEA+/JcMeOud9crRFSf9/qCmQioNl9Rxpl77WDelQdu+yJUvg7knwwlyEGnRXDDEk4x0Dg+9P7toVLYWvE/4TCXjiKFQ56Y53cBl2krEgb5yp4RTh74mgQDikvarTKy30EDot0+G5RCtHGCZiMnih0seHLwKnoOug7dUQtejITZNTD3fx4w1EWVqOHyWkAVgRWcb9FXeDxp+j5BBMcOuFnPcNd2AnHDlfQX7lBBMczk6GrnrHoseILuvvkKGgXtdWlI+EgTi4i8KldBGKXF5SgS8WBwulAm3saRRC3/k1BWSACeSUethRu7AFZsTzuqupGYO81ukNPIKB0wey/7wPyYN/cwN6GRhp0XPcuT+bDou9/lEKKfSoA78lLwxtUA7QlGCmBjxhUlH/OMu6ODxy1tGvGMVE5ttm9Vtg5Ek0Rx+leXgoBRp+G8UueZdDDg2F3oI1EDX30DOSzxfAw2ndQx6sK2q5PCH+owiD9T+L2b7KjIQIvmnaiAYEHc5PXV9UIJKz+5rEvxQdKPjbkGu4EwLPeLzG//SKR5hjDwonIFghVXy1YDKoDq3mO7/vZopH/lYO3MO59cEN1auDheBXE2dSwb18kIOZfdEs3N4mwIzaTIzXRBH9N9g9KVWPQ4oC/7sQuBVQutITKeqSBDPpzPO0YHhlUDfLxB7bBIT0k4hqcDYsj5W7FPjj0XycW4+1dAq8suss4+5OBJ//eh9wlDGpgUc5Jnm4HO2OtZ0E81YDdXtdvXo1BjwMdakX9GyHiXAaiVKbCs0NTKnFF4WgjUN5PgNwLdzR1Vb4UNMCEhOdhQy4CkkzxiZt16AP7pYPm2REVoN0VefgK1XMZbsY1tXuWQurY5XWn1ki4JrSVmvYmGNklNxio0LXB29Th2iybaljUKbEfd8Ohhyv/7XPdboGwzxY6q6RS+Kx+muNUVTRqDiL0y6j3QpIH7hd7dCl4fjnN3dhGQC8/yzCGBg8AN8ld5b/hBpBk8fx67ggOTfy4PRa5ngeYta0vTSdq4XpRucPJH8Fot4blBr1XL+h89/DSZK6AHdFY3WfVBGRRnHXww14YsB6VZ32gQYIS47yq75QI5B5+km6BKRsqhlVmRMLrIJqfa1j6ExZtjOT6vj3TAUth6v0Z1zNBS7rMtzAkBrXh+bix7T3A9Mstbni6CLB0fvS/mQmIrbKmQv03gjsv/6xFGmZCPYvguW/2ESiz0VKfYaELLn448UtauhFu1aWYqVbgUVXnr9eHJfphet/vxm9i9SCyo7awTolFn870/xEfD4SqMCvjN17xsKxt0qF5NxKV6NofY2SrgCcVRjQM7USYjvfbDcdi0NuW9bjIwi5I3v4cUMoeB9vk1PBvR/CotiLuZBmV529z2PnO+8bCzIcfmSMHcEiY4VrMu/wi4Dp4OyNOpB5anI/c6RnHoAe8Ji0vGZMh4GarVY1UKUzhJKEvKAxJPDcJ3R1IgJOqBTDenA3d7mzE+3ThyP3fokiFDQEcSg/WplTngMBdDlqd0HD00vBt+L/JGjgs9fgIp/MH2CHyMU+cDEWGOSuhJ9uawe/7gme3ayYYPbMlXfSNQn0FwU+XKAUQijZZu93L4JR//a0WBixiKWh6rDjXCz0zPqpSnURg9iXHGw4TUM7dQ2skaq5efjNc6v2xDu6+aFnxFo9A0i8VAuWo6/5yifPHb2qe52rxjsX8waMC9VenjLyJIEHDeLBuLQ3aFmMWZdowqIR/s9N3qwe2ac8sl1rVQ/CarVT0fgI6oX1Oocq4EFg1s9on/laAo2W2fD0mGMUP/Bne+d4CqipRWkyxmbDv7zdF7PVopFJxXJMi3Qn8BhfOfv9QCMLGAwfd6mJR5sc11oKNDrj0OuDld8kaKC3DhZlFxqIDG5j02ccDYFTwSX/mXSk8On7JuuwRDn2+z9q8NVAKs0f/7DgGFkHfHZWZEqovtP518MXiy+B13amTUp3lcCd3R6+VG4Ny+vX1Le6UwrwXzbtbC01Q5S/34oQYFi2mWtbrRTTAFUclR5qrCNKbeM13boYj4bF43x8L/bDc9GApMLUB/trZdrYRYlC/tNv3qikCqL3a/+v6l2RIPvgfB5dzOKp6Oy3FzEqB8IktYcJFqueS5F9Wr+LRnrp0puIGGXiH+1LGrqTAU3L/ddX/vffJcGrkWX0FcHVMRVT/jYPLb/15R/hDkOO//hEvwRJYCDNa1gsNg6GrNetz74MRvaMM26P+NAj+Z+M2BTkQKJhXxsIRigY5za71T1BA04uxV6a/AOT2XWLdkcGjsi31OtVLZJA6mSdVfwlBQN13sydUnvEnSRyyDymBk0aarecsa+CJHNvkFD0WvXIf4HnqUwqJrhYv6+yrgfO8x0LHWSx6WioppUXl8k8M704dnvgANwJqyjS1o1D449eabdJtYOlNrn17uwQC+48avtfGoZ82LI12V6tBxUXR9wJXKWTrbZ8ypw9B+XdURxnvN8NyVoRF6BqC1+YXGfISotDlK5v9Rhed4FjnrZX3wgUgLH1yUOJ8FAKOzZwAiUKQX7KgaXxXCM4hbwtVu4LReGrfZ62v/fC086SWvlwFiBascUkExqAb9A9VJ09/hFF8zKV5s2AIFZhqbZKORvMfyCcjLMlgFn62CfeyFDABm/x/DhAQJ2H0QcOzPnDZeB82d7IRMFkWfokCBKTqe2XI7lo5bE4ez/UIa4RuBhfPHWUM2ngi57HoNwD6xRlV96Zy4L/LYhNJPDgUeEbbOyk0Fd50yppaZDmBYtxMWxpbKDqp+jZ/nKYYWPPqpgx4aqBHKvleIXXOhlKWr8w198DJdHbeDrEy6KBrellL9d9i+oW0U+k9MESr43ZrtpTqBc35YRkEdOpk6n/k+gRgfR4cRctBnXdRmRMrG2HoQ+z5wIYNErCOGRzg/5UGJ+VOiH8XjUS/PpJVyRciIXOeDoN2smFyLY/e+UME+mIecZmJev2H2bM+eXHXAbZ7/4VwDRwaqf/Cwcg4ADv8lZlfztXCo6OdXo+vxqD/tsLXjBcyoVuy+dFiXCmQpgQc/flCEN4vyNrdtQ+ml5VvafiWgoRwzfFnRwmILkzvZ6tLJ+jG6A+E+1B9UH0x+95WLFJc/bon5NcC+wz6KlmS8yBCblpZ73//z3LhsqtJp8BK7uG0Iv1K+LL0duO/FTxyte8ULucYgMR7hac2PCIho7t3b+5cDPKTJ8kTMxNBrDPM3EnUCcqvTbXxEcIQ3QOpIhqdNuDMoXlzuiAQFnS44sU6cCiyf2SInF4G1T6HNi5dyILYd7QHrDgwSFZVlGijOABJjm49NnlVIGdkN3iqC4ckrgkxC/xuh3+Yaf3smnJgvHGrm9uV6oOPaAOvXK4CrdbObUO2VKB7NMCxnYRFarIRez+pnHDc/8dXmnt10JNgrK70XwwiH9kR8ePPgRoRlo06oxpIailI4y7CIpPQh509V7IhVn+2SsigCda7fB4+nMCiiWvT6AnVP3dT2Z/WyjfBf4Pvv8h8C6XO2bu2o0fb4InM+QCmmVpgOftf+68PVH98X8GbYRAOprM+V82p3L3EWl6E74tAn0bGBGg4i+GYoHBCVQ0B6mlEbA3sg9H3X/5Xg4zLQDBV/x/fy3B4MzCk466ORUKCTZ/a3fvBu2P0Vu9IE9A+FBL8rhaLyhaDbstfyQW99Jv5s65EmFPyUQvxxqL5t9y6pr0Ixg69K6NhbgK+PYv2Kd0IZO+q6+I2TIG2icEp3FYNaNWiDze08IhPWOzsn0M1cMBw32b92Vx433BneNI3BCm437/PyN4GLUcvc+dYUz3AsmqN9SQOkUkMSq7HG0CdeB173TMKCDn/HmUTwpHJYN7BanwlEC4ux0jt5AHW6kLQkA4WRRwkfLkY0gNOKilWX7giIctgzpbDjYAY2VQj72+XwCqjMtZJsxHIbn1pWU+onJOF+fn0RC9crPswM7KVBY217N/9qPlc4nBuUkGrHvguGiKLo9VwKc0hKd8gHHHNdDHhqR5y0JBcIsFYAjUBvqu4jAgkE3LtapLPAEiyDm1+FMmClaX9dxipfSQkTntogeoVk+vFaVcwuUBH8rEl/8AgwX3fZJxs+sBGWXy+oTserER0GpjGCcjL+oq80Ys+YDpsiP6oxYG6KE5Jgp+AoviNuWIbS8HjjbrADxHqfJ9WNmIiBqMjL1+m/BFohJkw9se8R5sAo0u8W0H1lJbf+w2EbueDa028b92DABD6PR/B9z0YNc3d2Pf8fD5wbOFjzRQaQNvyRe54bTA6cHLbPJulC4ScbgY9O1cCTMb5/hrGeKTvMVdCPEDNAT2HarFEItQ89FzovRGDjD7Efh5TJIG96bfV0iM1EMFRqtF4NBKRAmTXrr/ug6fXUv0neBshOHTmZ+wyAV3LdkmoNi+C70/pPSpN4+BnPJ/KFhMWOZiqy/zu7IVfETU2OZU4uMcR3qJDIiCbsFWGRLZyYOkJz9GkTwZTN6/beGYMsvH+zBMsXAW0ilU2/IpV8OebLHcwtQ6vaq7Ezbj1wj6tsR7+U02Qydr/bJfqg9/vNXe0KyB4Epv7Iz2tBIJn9MMyHkUgTyVWDHdoDyiU3NS3utAAuzaKZ8wiCOjsavShLuEM2It4lzm68RoosZ81mPqwSNlsiT2JvwgSKW/EYIgECzfun4mlwaIuXMz8g+vtgKcdOmbrGQCcj1/9c4iIQc4avRYOGZ3wiP2GuYlkDMxGuX5fO45HA+PGI3d+VsBt5tMnDGabwE/TkEbmEwYd9fMpazhQDAe5jD68asuG4b50pgMWwUjrgqSKd3kZfJZy/euamAprg+NiLJPBSPy+LkuP+ABkyJNNvi7EQ3bsqt7mvhh0bRlddJD/CMtn4EfUvxQw5Qxb+dQXhfKd5mRz1tog7mbWeXN1BNnCS7mPlWPQzdiYCRvVDGj4GKp9bJoIp5b6E2wLQhDzPm8PkxMIGNM+9yzxx8GmEK123MdwxMh8XnePyoWWZiehozcDuCnyvz9MYZBdnG7x8U8lcOpF/FdF7WSYoR3k2/8iGLH/G1Z+tDgAJ+mLYuho64GY1aQ+T4hGv+4KbXZodkDRZ7eqwsFiWHs7PnXpfCzazHvq/qmwBPh4Ao4k9CD4b2p4UeYPBpmpiOXv7vRBP3/hI7f3DcBv66niyUtARaZG1RpGnWDaeFmVdbAE2PnltQ6PxSLRLl2zg1mx4PSdndKcVgYrlkGyD8fDkTWafHSvpAf6138vuJ3NgLpMGV/rBAK6va4fPq5IgAZRpdKlfh9YvtM+st8xHHnOG9xJYm8BtDf49pp1NVzzhKWhI9HIw4TvquVcP3zEyapssmXCVHtnnklqDGKuvFxeRhyAx7fuX7HXroKXme7feKietWoLHKNjnbBkKb7C4UACm2vER8/jYtF6m9a7l7dywbj+XuMrUeq6fFf4wuaBRUxRB66FO5RB6+52Yda3JmBPZj8n3hCM3gQG/Qkd7YKrbvpYXHwxlNa11E7V4ZF1x2UtO9F2cGLlk2jrTIMFibdyvnM4dEr73aunAh2AEz2X857Kt08JUoPPOGJR+eMSMYnRKvA+LlG8VIeA8oui6cMViujszzmv+hHBanjRptbBGW4sMz165ROMlOj5wh4MVcNUwfMqfdoaILMqf3P0DkHHTbCfPQ8WwfR73g9k3jhwddFj430djDAV11xKVvrBwE01wsE4AT7Gn1jnw1H74hPnnFA2lTNDmftbFBrhyPWhjKx1DLpyaGQyOoQMz058MhHEkoCzS3i/TS0B/fTNSHuYSwGCl8qreZliOKNVlOa0jUcnVlorpXqb4fH1dfHktApAMb98ZtajkAbhy+nQIz1g6+df8bc4Ax4YYh+ccCWgxaHxDNd7fZDbpLJyn+odV2iWbJXGCOi0cINFz2gP5P5HxD7vLQbOYJoFcjkBfUsd4QnnLAd9e+4+dREcXDq9ujtah0UjTtP5XmVOICNJPxLLkAn7Tc5aSchGIdtKTenyI6WgvLnA9Fe2CS7GXx/CUe/DkSt/V4oW08FkJny/pTk1r3b7RGfZQ9C50L97es2toE92f4w5Ww6k+bA6FXMcSiulDbp/iAwZQVtSH+qKIeXMrRZHKkd5Zn+K2fqFh/VTGYHpYdTzCrRu3ieGox7mmKT/PW9jnPjkVOKzangyhF36NxiDRCo3d/yUymGS/ISgKIOHW0rhOTV/gpHg626JiUPt0Lv9XR4K6mAii2V31ygG9Y6y+ChpVgL2Ce+cCrUeijlbEgWPYVFC3eaUzVEKNN8TvzVytxHir3sOdk/hkUP6lpeQXissqDOwJq1FA2lW6uxpbhzCmhvvTbSQYHYwn355AUHQ3U89o9sRqMXgjEjS/Wwo+lLGyP6uAt5rRTeXp2PQ+lK9uNi9ZpBvEJMy86mEtes2v89JR6Hpaz8w2kZkmKc9H5IJCAw9W5/zDhLQJvnoUc2HrbC+b5BTnT4c7u+bkttOjkbx9IM/qgtJcOJXrTtPAAkaH3iTD76MRJGZUsp/t0shcnV+M+EkCcxqw/o3RLFo7pMSk4N2MWg33BZ7l5MEMoeOxx+4FowkIwqZ9ycMgNJXxChvgsDGTt+GaTEa9fQQAnROl8M1j8XHhWeb4JxaXX/DYQxyHgpZsdDvBrMnB4+J7ZAgwDdaXe4fHhUuWRRniBYDuaj2DM42ArzPG06a92HQ11FxQeakILiWu+Rn8x8Ckcpa1SKTSGTKqXZVeP9H8G1IVK9zzIX8LLybqGg0Wr04tPtBvx/QVymDd3658EpS8EPnq1jEuKNFeslMgUK3xnf/2iJA0y5ckRdPQNNXChmzC/yB8QT7lZ2eKii4aRdsExWJytnz3RcVP8KD6M+mx3RjATfnEeCYG4VcjW+rMmhUwttfyxc6xWOg7K2u675JDKLvkCvHRfaDFaPuntefBvBtJkUPH6T6eHKThnB+D1gnXRwwFkAQv1p0IXoIjybeu7P4ZUTCT9EcjP1yKQTiK8MY30QgD0xLmMbzCgidk5HRaq6CKbbi2wfzMYhG+cqoYGs/nD4gfPLhVBOsnXGrHEii8vz8t4FpkwL4VKkdbnQpBpwj6+6K4YJRPJQvXR4oAZ4anq/ix5vAccflYPo/DGrZtesxkxsAZ5VXxy9xVkI0Y7uG4g4O1ZWfmxB6VAJSMvsY/tXXg9vLUu0RDLX+ZfYNltvkg0pV+r3Kg3Uwo9CG7G9iURVz6mfai/2gPdigbowQSJkbtfanxyLBhA2XgeBGsMa8/n3Dh0TlzPs3OgPC0bVXfx4n2jnCIRWBVXrTBniFs5X01YtCPcu3Pxmxk6FBWtmlToTqZaK0MsPHCIiSN3+WLf0tnA9rOyl8thjOKxlerauMRMY7zcOpNcVgYMnUwsuNoMFl1PA5Kxal6KhY2L5GoHZo+TylqAaeEZaq3tJFoPHmbSXnHjKox16RlS5C4H7k3XHmTgJytO8/Uf+zH7Jcwy7f0GuCZwlHhoLiY1Dh5OdP5Ne1kFMSPkvYywLcKNvoqeowlOf5QKOqnAxRlK6MywxJwD2od/I3NffIJpTThl6lcPFM6X94VTwkW0Xbuuhi0Sx3xaw8lEKve5jFccMEUNN199c5gEUKr87M3QmjQN9JyvGGQ9R1PPBlNMQdjzpuCdwjP0LwSEi0fTgJQZRU3Ddjnwik9JoiIPKjBAgGHLVBE6Xw4EGVqM8RLAqeDbbo8OmAUNMRvoyJMJC0pvE4QopBEnRinv2HKPDb4V08LgFBzo87/r8/41Gk/fhyp30jLC35L8coZkNI6QJD1YEI5ONauHdvtxuCxS8k/HRIgWfqmPbTjwgo5/AL/vHYMqBfaxhOo97PsXuxal89sei25XMzp9R6iCvT+PP2eB5ouJ2oFR8JQyEhj/wnlYtBXYbto9xwEjwftX/pOY9BLuB1Uau2H+wm+laKuEggdL8xVa8hBh3gYK/+8K0MunSKBzR2SuC/qwPPLq0Fo6CT4tX6Hb0wcG6k8JsuCc4fFhE0YCAgyXhD2jqFVlAkq1l7ttSAzimNQqv30eiILPHyXWIHcPapXvrtlwcHdosc2Nap/njjyvDkZh4ITAjGtR6MheMpxEE9S2qOJTO4icuWguqxJ+ZZvyOhO9pGLYcLi3yz8z5fayiCe9qq17DstXCt7SQRDIJR0V+jZGc9IrRjBySkTevAkXGRQdM6GOl1iP5+ZNENou6sxcwfqd6pL3aIfRePRkxlom+jCvjh+6vGXDMTfKKEbt0QD0HbEv1Z7+Q+gmd319yvzEpwdbp957FCNDLKkgxxOPsRmn+7y8rpEsHM25dt8VMUYjxwqbMW0oGYbLm7Lh0JgWJyBAnhUBQ7GaRX19oDfbI3f6AkAvxmfPAncg2PNvZzPht9nwut4iGViTMVYK9H/oYCsCjOgdjs+LgYnlaVnhL73gSHoGedVT0YXfeO0Bwfo8BFj939d5lJEP2e2cZdHo9MIhfav1Q2QbjtAMVrrhhuHqw9wXY2CpF1Drz/ntMH9V4/WQPlHWGghbckVI6AxrtaEuV4+uD1swMjtJ+bwEhv8vCFbwT07w824s7fbqBb6xOQVaoChm+32oey8agtUyjYkppHa1yegiGYJLCSyy7hE41Ed1aSl2RtyfB8epHHnC8Ihkw8G+bIBMTzIPGOnGQPsHN1aV+ey4ArN+Rl5orwiN9CW0y7tgxITdNHvGcCQF1vve+FPgaJHHId1Z0ph95Ft/iGgGwgiv3xfWeIQULyC3/qzvSC2aCP7GOzOAgKb2KNrCegZueLksPDzfDaYCHpEX0TtOloq9b+i0IKjdKfxBSbYS3Wr2+QMRCCVmdr1A9HoVdh2tYO51qBttfzeF43gjKWT4cbGHCI4nsVYcdJQOKy9M+axgH7E+e/qvSR6M1fz6DKC2TgHw/Zm31fBQuKHeeHmQkoWaTQfmquDxYGp04c1UkGoc9Waz9XCIhNNMT5Z2U+0L3w2md1qQHYKiKOmihiUTqfofs53jIInGBbIR6phKlWpaHLFcHoXs5zyfSOMvBvRkTMhSbYqv0RxxKBRc4DkVJqtQOgeQK3r+lpMQia8c5f3YpGiSstYipfemDlqd4zb8d8YDOQT0skEtCB65QRrfgi2AlfIl8aTQbMA9eld9S8WvhsYrRBaQczbntHbasq8GU48e2zVgx6Ln02y2mvhppv+lX8k6nQL3xH+J1GGOoVaBnXHOoGhXXn8CBJJ7jOhuquxeJR2NF9E9eeNwOvjrT9TjwRLkxnWxSoRSERIW8uLSiEihMP717+lQjWKc1x9NT+KrvxBbew7gSfl97j7uvgoHCBPmZdOwrV8tLOv2xshvMaUUNVL6KBK+CSzKpTFBKjm40tMeyGiz/v2hw5nQNtLaoJ5y3wSOm9OtP/vv/yofPqG/OiXDh7/Wmzf14MmvpxuIGJKQeknH1y5BbrgFftNSbkCQZ98Akou/27BeQk4rMEVBqhzvCdb8JcNCp1OLpYjO0Ff5sAWrpxf3huzkPcz01AWZOXHr4xSAUntXsxkz/x4L/fbmNdPBQ1iv5grI4rgy1xj8tnh5og+vHU2pAqFmlxEfPnU8jAdHE5m4uzEFqltZWrt/BIrLHu93ZTO0hkN1cjZzy8O+dwpfRGDBqx15GxvN4H/gZp538yVAHWhGd7fI6AClkYFEcku8A2XvHak8QmcN5fmrGEYtEVkly/15l62P5Q+uINHwLNhGLu+KgwlHVnLGGAmwKUpLlbf+rL4dt2TQ4DlUO2bjqKtAY0QI+F2jXm9/7w+qEMiaUjHDGfPGF5/0cVpBxOSFh62gg66gkPuLup8+vuYZg2IYNfMYVt70IIMDyu2uI5RECyksyXv6aXgiOv+MeAX0XAYDm2tXMZi3IelB8O9CDBvmPs57l66iHJ+sJCoFYkqhT7QTnNWwif2TkGje80gmflqtLqBSyyzjRkkBYug0HJY2ky3cWwT1FExCQpGNmyKUQE3aeAdotq4cx6A4gLRrYFReHRvIGkkZt8AdjPP71eFF8D72JIOw/OUufUWIR7t0gV7NKJH2LnqIFbIr0U/sYQ5GL2toT3Ww5MarGKENiq4b3rF5UqqqeE70h+HeCqgLApA3br2VJIufGkrsAXgyhetRN5p7vg7Bl+j47RarCqUZt1vIdHi9yvtvbxUmDj5Z+VqhoS5A1rJp1IIqCFrJ5T0pg+OHKixOFOcQ5gwyMEykYJqOv6ygOt2V6Q8vLRicE5gmXsdJAkK9WbgiRVvHI7QUbvtrABtd4OecqJzx/Ho0mB4qXq0GxI4zApiFH3A+0o1fTvmRh0+16menQBHs5/F3oYlN0I2y+WjMpx4cjO+HG3CrW+R3i9yE+ONEHjFzNWoRBq/3rNPS1vr4EPlUNcf6nz1oNP+G4MbShya3u8KjZTBMUSnxIL+GvB3pF5j4YGiy5ft18ijiAIP3YK5GQLQYOtQcxROwLRJjof0f3aBSp6RgVir5OhPjpiVmAWj2adFtd088sgVu/jhLByMjga28TQe2OR+Gtleh0VEvgQCy1ZFBGc2GcfkXskEqmlfS+/oVYMzp/4SryOF0B7a8VMYx0GDZWn+H3op/q5l/dsPw+CpnkNaR5VKg98OktQYOgGvi8J2U1PyiFbR4lTTgGPgl4EdF437YCp4lkb75FEePDop+gLrViksSKwT+4lGb65cP01ZG+EHpn0N7rjBETCH+Oh7PVBYM7Vu2sncmHZ2sbgOifVl/OaHpgk94NrQn5HqCkR4jZ7L3T+jUFmR7r8SvL7ION3mMGfpEKYlH/n7M5HQFW3lr9Os1GgkrH3XKRqJUzGWnExlRKQwiEFRjsXMgj8seO/dr0STGtmY/kaCMh60DM5U44MP4nVNLZ1FSB+ny/Tj8q3i8+uGIeMlUK8dPWd/70fesHxpexPHWo+0NXufF5MBrHN5awucyL4Lbix3MSEIZFJFuzoo15QjmBC53oREHXlRL8yEZD3hLazoRMZlg4Kzom01cF3n4AWfSovSRxWNXH+1w/+S009QnQlcLjCqRlJx6Am+XcLbX/L4cCj2j9sVH7zfVbm8vA+BpWvxZiJivfAP5frmpzZ2aDGvYFJpM7Z+E/BTEo3B8AvcPXVo4UG4NT9+CCejEMyzBi5ZN5ioNke1tZnbwJbNikOZsNgpHgiKUQ6rxtUeHw0Op74gI7yi3O2xwnoY2Lv8l3lTvB8qlvFqhgKO/NjB8vOxKLYmYL8WFIvJIdG7EuPywRJltG4d/QE9Jhl9FZ1TSGkKPR8Uf1bBSumvqbex7HobFGdYMqbHjB/SH/6AhnBky0v+xTqdeo6cgS/W++Bxb6XHVGnneDe0VAsxzwe1dnnfA1+3gIvxd+gg28qAR+31N+8GoV4XVb1+lkoVJ4/e3OjtR6+T0prnMwnoOyrRtb7n9YAw3h177mISBCVxp350hmCXtVHafStdcHbt8GDB2gaQIhzi/uoHB4Nd1yInD7cC6/G1B1P2ZDAzS+1x3UFj44F0aZq9paBoniCWsa3cMDPRr4NpwSjDa/bAV/JMeDHWOT06G4KSFZ58947HoGkblt5kg5XQJUGzOtHFoPwnXNX6KawKKLacuMyby+c7Hl5UNunCUxC6BKVqcevEWlyKE/vhc8//4Wv5pTBWM+5wd4ZAuoo9H/nHtQLHCm0L1+GVkBKlabrgT08Ypc2UZHO64AaDGX5P2o+pJbFnVp0i0UZnh2qpTf6YIdwJH7zIgJHhVc6amwEdES62G7/91KIG++YZx+thWHJEL7dk1i08stgym+gFQIyhYzv2MVBGCZfim07GhkGsiKhV2Ugoo3Sj4+kQoFTQmLjMyz6/baNv5BvAE67kfECMgWw5h75jrKEQ1txfyKDKX3w1vvkHiOpBuYUDk38FKB6BzBk2pWT4I/Pv9P62Gr4othqnPM2EvFd+HxUZ7YCkrXUFa0mcRCjoMGlfjMEPek7qiTS2QsBttN0zgnVoP2UWSnnAAF55pv9UCRngvj0083KcyT4Yl7zTJTK+WkzPfxXhNvhrBRF/X/PuX3/WcDmMo1DM/bdeab2fSBnL3fNSyYNZHn3nU2iXs+IJxmsKd3w8PHrRgFqPqy+SnywfpqAwmZip+W9yFC3aPh+2JsIPmetGNWpeW6/KHSNTqgXFl8fLviYVg/9+qod7QPUuuJmHFqRagZXq1DdZ8VlwOhqI6rkHIVSHuRY3wsuBLOipX/h9yqhaXI+fFgEizJCLM3jucmw8a94y1QiFiZP/2X7/pmAZg1WVA9iiWBSmh8f1k/N6SKLpmX9YMTH87mLbogIo2zf1n+MIRjdL8PwegqDCt040Dcq70X0pj5d1M2G5hskJNpIQGVqro2Mzx1h2FVWbPhUNfDr2rLQ6EchV4KsheYmGXanHqXextYDiU6S5LBA9RoJsujItV7wu4Dd4l0KBy7P9eQpOgIK/5o6pXOTAiuhnaXG+AJI31JKGUjEI/cjXIsD1zrAZr14dRCbBcPufnFRSrEoqZP5h2NnORz/0a+wQ0OEGP4M77jPWJSsOLovbZeahwmue9NiCE6L39RoxQWjjtPrpUrvBuDe0xvXEtz9IaOexCPxGIdW7e4us7kSYe/St73zzxvgXc+bu4u3g9FFfOX4jEw3nO7MPH7mWQWsewblBq3iUe2FxawJ6pz6bDMuZcdNgsbLPNYpU8FIPxB3Pb82C8QUNO9XTzQB8+yA1c4eBhW89efT+FEIMb38LJ3sxRB26HDz0A4GlY2nv799mQIPHYhp90yzYWSN665uPR5Jd4txWtQSocf/tS2JMRcyWiZEoicwiHmH8+KUQTyw+Bmcax1xBs6aU4/z3ocj4yGWG60uffDi0rjn3kAGRJApM1rUnPThjDJpzcmGcO7tS2JyDnC1z//nyecYlPlCuMVjjQS0ti8+XibWwv27Yw+aKiKRAGu2xvXxYsAFPJ3SJ5bAJYPFX3urGLSYx54v2UmBAdyM0d2beKjTq5bSU8Ujj4te5hm/HOFY814wcZcE8kZz8Zo3otB+0ULPio1OEEqKVPW5UgtByYI2dQmxyBx/80VhXw7k9jqpXbdB0KpzmUwrgUEOtaw1DQu9MJuveIbR3AnkGja8s34RUIzaej2HCAX23lkGr614gXFXxR+deAICKS3NXME+uH3sC8bFjwha70STLXkIKLKB5qxsCAVYfA6OmUc3ABfeJrD0LAG93Wl231eQBqmvLiivylWC6H4vqLkaioRzDlpU2VdAydpVTUHvCrgem15hm49BLPIpLr06bRDg8u6H3xWqh11yqpOnzqmjjpy2G+Zt0KD7WnpxrQFO1AuZBU7gEPum1UjkUDFEhX9ZXxEsh/TLI9pRHRhkQSGyh4QkgKzj3S/ez8pArZwURMMVjjaecWmncxFB96CrntLPJqBhiZz9YxWMmB4GuA1bNsLR844f+qMrwLVZIr7jSAQSfPHm+dP7bbBpiOJ3VuvgzFu5/HM6OHRu+RY52qsH9g9VWzCaVAKTmwqzTRceOStMPxFfLACXQ9OFE7gy+BG2nWfpEoz8wz4Rb3CUQPhE48RXk2xgYrqzVLeJQY25ZvN8ZuWwO0a0T+0uB3ta28ZoPyzaPGot3cZJgC2+I4L54k2QruTqdXEwHDHEC9FXFrWD44namfSYLBg37WZslotBR8kfjryac4TubtdfHftJ4LjL0/flehQinvmRUlyMYNlnYdpFJR0O/SyNsGmLQEXjqa7dCq1gJuv+nSagHh7b7QsnseOQqYWDz2ZhD4w3Pqv9jzcP/E3POqu149Gtt19tBUeaYCdZafHEqhP05xdeonRHovhG/ZjJCy2gbplLE0D9vXr8VYu0ejRSbaOoHs7rhacKh20kU1Jhdc7m58QRAvLTPpptv1ENI1pV4qUrJHDS0JfRLgxFEZPGkZ9Z+yA8I8zepSkf+qUn5fX5CehVFMfLs8OBgOPPFeIUzQYz4m0excORqDOWmfkUTRXcScjZ2WGsAyfNkSN0LSEo6acafjq7Ar5evnkrT7QBahJLOzpOhaDob0tSYZeyIZmkby+WUgH5I598csVDEKrnTi3e1wdRWocOiyXVwvRzrNL7TwSkSnPxTV1bM5hYL15oV02BsUfvX0g6RKGI+wO/N5p7gO6V1kJOWDkYqBVZuI1T/bQ0QhblV4N1tSXn8cUE8C4pCn/sEYrSdwO0CFot8Krm+qlrvxrhj1S7vkJzFCJbTkU3M5YC04xEovGzXHBodAi+9jgYDZ5RZDJ52we2ldebCnRI8OrdhYcXBAnI67YRZaqsD/iYDFo57r8F9n3TjL4bBFROLnpvodQONwaW9S4m1IDyrqae4gIO/Z2yERjXI4PqgdpTlW/ygSh72+7fMAHhnmj0c3SVwPrGlR/quqUQ4RszwmhE9fTDFjRyrv2wknxsOyC6CPL+JJTmfohFZoa2fw/dzwQlp5nNSFsE939JgpYQFl21bZz/LUmBY6XSZwfvB4HrzIcitTo80vHvajJNbwJjMp+WVEXm/+ftg8hI1DJ/OMzXgwyCkYynMReywY+8SY6k8mHPZJSEI0sPdGcTcBfNEBQT1hgZo/Eo5dSut7ZiE4T+nmqzvFwGUtWiHw6PRSIuESm7s8xpoJh5TN6fpRGipmg3p7xD0P3U76qjX0mwpLA/dd/+QlDEG/1gZI1EsYUbLx5t90CjhzzDVG8VJF09p7VO5fzRiMe61VSPfiN18ABHaBMcPShZXZJOQEP5RUyBe4Xg8nU9j36YBILKpA9B1HWB8vZlp0giiDtU576XrAO7yVsvhNixiPlcc9yLF5VwNjDMLdwnB8asFl8YJYWgx8cOdDFu9IDbMbMSy+EaGKSTWRibwaM7Y5G8h3bJ8Gj13GbEaB6MLekcmJvEI4H/onq9yZ0weCktOCU4A5amUjGc5/Bo/Z+z7LNfxTDBGZqt6VkLkwSmgEwWLDKuevBT8GAH/NN9EVH2Oh2K+mV8pThj0duRe+bjRiWgGDSz02BWAfei7VV43YPRyNJvD66uToipFzevIhKB91izYMElPBo7V0xQH+uBUrsxhofPqv//OwUCH/FoIP7LnqLkR9j8UinY8I3qf/x9o5IzUShH4Dbd0FcyfF2xZf/tVAZfO406u79T9zfbfZ6lTYF0Ro+77oL1QHy/b5OeWg+3B/mz16ZLgVLBe3m+h+rXrHYfWa5Q/VTY2Tl6hQiSfveUqziq4MeF8BkGxWAk8sBST8O7C/wxL657J5EA3FJzCkdi0Tw3A8UMuqCgMoB4gbpdxp/NtcITj84cn9B2meyD+kqPc1YHyiHF87sFkep3ZkNuXIt1fdDRLRjRpVoPBk9Lutip23Hvfr4V4ymGX7/l7Vgv5wPZ+Ld206VgVFiZWvaehwyvKnbVr15pAo1K0l7wIgEFXTDPboEi2Dc3+61vvAmODLI5HWDAIqekRnHn8T6IzcoOWHmVDAkX+dXXqLytPB4lIyxAgSwTyj+OmDSoKMAPd03hUagQN7E6bQBm+X7fjmWvhD7ziuFBFI1ud5HlSj5VgS7b0buFDSWgMG37Z884FB1gqv/l+rIXKIsXf/LvVIKYyUtuFyo3KiqP7HmJl4GzFJvD014SHE0OV1/NCUa0OUdZDot0Qh+NnXyOJgl+vpAn9ByLRdwtG17f71I9SOzwo9cLTaBcb3x9M4Zan28l9Lp32yGRsnfs6sM0WLAKj9R4HIO45SaCiS9z4axYxX9elSRIFvJm3GbBIGu+Mf2P+XnwtY7VaOU9CdQKLj8Q18WijX89HZZuXbDkx8XiP1QJp78FOzB749HVyKl310NqoYwWn3NmrRpohPAHrrwORSnuzstY0wq4q68RuXQjCtZI0xlPzDAoMT7snstWGXT+yDsue6UKvHZLPYyp5z0t97w48GcVyJEraC98o65LWInpbBMWvf6sZnjy1QBcpuuU8ZwigqqbCf8zwCHPYR1LRuk+SNQ3KL8z1wSWXzmXYkQIqD9a+6IhZz9oKVrSlPLkgLJl+FhNSyzaSeZe33zVCx/vb7h4n6f20e7Ii/lxAvpsxEM83tkDR68qWaaXOMDR/YGfRPMIyJLx/HjPoV4IHXtm//BzMSwf74TtWTz612b02uVDBRy7iQvXuNcESS1AP8MXgjTmMvEX+puAV+bRCEtbDIzeW1LN041CH7ZvHj+TRT1+97WB/B8k2Nk/6+7diEd0LeeVXFrzofsTSXpbpwJENR7Mv7yJRaU3PI5/6yTBPf1VIiN3Iwj8OShw2TMSVVYUHjqXXQ4/3jltJbFXQW9ohNpQGRbhI6ViJLT7oPEEWQb/LBjalfkCZKjz9N1qD97tSy+o3WBft16MglPPXN+K0xLQTR6R7DeMmeBWwbHWRUkH+ru1ke9uYdHNBzlWlI8kKOstubYnnwNndk4Jr3yIRF635k302AZAa9o+8shEFlB7kH2UPgZhHgdWC13pA/dlxh4j2WAQ4ZS4qbpGQOfn9yJ3JBD83Z/8SpmhESovur+81ByOXMKjn5EyKoDscePY7FQpZC+ZOdeJhqB4iyWfs5AGp+bUrYfiEKjc2+299DYE0UkMiow05sE9XKlXITYR0irObAt0BaMLj2eF1E8S4ZGR1Ndn/8rA45PHQc01DNKRVFqio/odf4/pz28B9rDFtHhs/zo152+79QuH5cIb0Wtwir8UDqVbq/yqx6IFWz0hM+pcyxV+LVAkXwsrp0KfLw9R+1ejIcY1uBjUq3nd0nlrQI9e8OfISep5GbNm/jlRwLTW8a9qYhr0X+J61R6CR+NJA/nVOb0gNjkxlaFaBodqVMcPbONRZc7iN6/2bpgWG2TRUCiDag/nfkZ3PHI02kl+PI5Apt66d+ZlGbDFnP+yOhiBCp9psDFS+oHm/n7upH/JwOvDeX9yMgY9DJrOY/3dDcID9+S2OLNhsNenWf8+AZlK937UbikGaf5tzasTtdBTZsWWzRuMAnOn7pDHOuH2TOLm7fw0uLZ5S7MsNBZNPjMtkeLugx/CgavSB+uh/PzUbhUHgdrv+Zc+uDfBiU9VGRtVKbDPgEGTXjQK/cGdyMz1qoa6tMfPXtcXgy7GCq3sUuegI1dfDWsidAarcMnb18Co80AOv2I4St3M6BusbIG/Ehx/1mjKIc7eUrqaLxpJXvovLKbQEeh4beZ7AwLg/wBLFeiSeJwUmHc81W8bx4VkVUoRhWSUIjOjpAuhhCRUEskqRUaIkD2PdQ5n2Hvvvd3n2HulkKLoV1nJyIqe8/zrddzn+7q/1+f6vN+H0MZAN2GAQ+Ew+PxJWh98FfFQedyQB98DLPBhO0R0p6B978iZAtAXkNskx9TAY87XNIVqGPT8sm2LptYgWM50+YTKN0P9vsiri94k5KQXWjNzahBMKd/LWlgp0OUq4qw9RURGqUFH9QMKoDEv88yQSxI4oRrinCEG1ZxfTEz43QWWLVcXqqcIMBUXEGTnQ0ATJEauB4/7YLdyA/eSOwRi0ZNZ80ESiiqgYRza1w9/7Tcin55shDWFVd/A3yR0Ip0tJyO9B7auSiuyBNZB3YelFl8xEvolo6P9Y60f5Arj/A/8oYByeP8VKzoSmlFUiR/1okBY3c9nUlpV8IYuffeqNxZVqRoLqMkOwg2DDxp790oAF6rJLlNORCEbHV16QYNQ8cDlsbp7JegT+2t/nychusB7HzRie0BKtYpOW6ICQi/H8JSJk5DhZ/nX8g0ImgZnSsVWi6HwkNC/taFoxH5o/1nDrhzYJHzbZAyuhXbFXQnZt2GIZXyVbimTeo5Or69tUDpc77oW8egRETmY2y0eP4QFU33GimvTzWCYWLHmORmNwPZqDZfUMNRtSZ+cM66Aw5rHJHF1sQgzTZfP8qwXdn/fPvq5Jx7gV1XKvhASunX5rFJGegeQ6D+bvvzaBFn0+UECCnjEdf2349QhZ7i28DBj0rEOeEMFwoJMcegxR5ORjXUCTF4d6Ek0wQG/d29lo1UU0vBt1OccSwPphxRy/RIFHOKs6KySwlFpU+ZPrrZKiBH/NipLmwHjbthcc8EwZHxjrP5qcj80ZiR8/iNWC/ZyLxXwmyQ0O/Xvs9XrQUjWNsPxmjjCC5qPVgKmJFT/btNR2Kkc2h3ejAR71YMl19aaoEkouuTEu/UovBs0PorupjRHQ8VH0sDROCIqdTLkfbrXDA7vkqZWFQJB5R5TeStEI4XXuo+aq4vAmN1OW/5bGcSu/CinOYhBP7DBWXLJ7ZATHZR7USIK/JW9c4uex6IGK8k5TEwFPH8tUbG6UgtYjDXOuSQUlTMY3JjIqQBb3xH2Dbl6kFWpMntQEYpIjrnWov4DQHK8L9HiXAkiGle0s9aIyLyBGILl7IeoB8lZq2lJsNj8XCBjPwn9YDksF/21E7D/UdS8xrKgNJvUtp1BQB/DI3xP+5aDy+INlsrHCDQlF9Kq72BQ7uHHTYQTNWD8uV1TqqgOjhiPTRncxaCuMGmnkcpeODqU4S8SFgW31LgeG3QRkdiD4dWxhB6IPOpLd/8hDuSvzx7kvEBCp6sIFy4HtsGU8OiKbCgZvBTLyLjMGPROlm6yLYQMw2qB7lGTkZDS+l3nhQ0WpehVCezmtMJm7TUGUpY/LBHv7YuhiUFXZZYmaa0p4MawZYu/SgHXliP/nh/GoUONTm6/DJyBVW/i61Z0AiwaTjsHPcShTTGGtiuUXMDcw0QqHM+EWlUxDUaDMBQpIXvATr0Tts/ESCht50K5RE1G3i0CGp5OObhQmQfP5h+C/+ky4DkeNSG8GooerZztsvbNALy4gbZiShb4Weu70LCFo9nfQw+F1fuAx53vEjkvGp6dmnPtGiWhG3TLchaPvCE75X4n52EKvHbyyud3x6LDSn3/HJ7UQvQrM4cGt1oQSvjh11cQgTzGZzH1ht3QuvvD91BaAqSuFH8LxxORvcG6bvW7XnBsOPAIy9oMTiwCn5V6iUjC4qjvAH0J5A/zvA3GZUJSY4WRsWcomhl5RKzHVsJutKSHuEQzdGZ+I8q0Y5DBchfLXe9SsMCvsu8bKIPngY7ZLkKhyPbtWxe7hkEQYY9cOaiTDUsEe4tvl6jfSz40sy3UCoccr9QaS+eDkID6XSuEQ/vd/G9sFFSCl22360VCDrBLtF6snMEgf8v9x8JXMuFtJptMUlcBRHi1ahwvDUeM38TEp6yqwA9dI31gSoMLAoadXmLhqKR4nsImOgI/3rlmrNkiWMsc0/aYwCF1OY6/DX+6YJDvmEJtaQB4JD8VNsgiICy9iXJcSz+cH7nlj/etg+uGxUyff5FQLWGqLDQzABDL/jvKFo0gy5b23b4Wi5oP4yNkZDtAQS3M4KqUHxQ8mtP7tBiLvC7Df8vezSAvGrxzoKwAHL7l+cyIR6NDPT6K1SudEM4TWmrRXQcUTCYfbg6P2Bny91//0QTPBFvUvHNKIba47G78zSj0hN9QJSy8DCJeiHB4ZNfAtoR26kdhDJKd7850chyEstyhqv3WjZBEo/vfyUckdMEwiM1EowwY6JPiX2VEAGfU5Hw6CwYx039heJ/YBfxN463yOwlAZ849fsCIgJo5KTRf4vvAGJvT6R5VB7131X9XTFD7peSvWbduP9S4Lb7TMCDDYP6tD8d/kpBO5UevuLuDwFdZ+bLkSQlQyqMoCo4kpLw09+nRiRHw6TsYTSCUQ+18Yk2tTwxSN6C/aLZZAiyHrdfujcXBSTEx5YGlMJSzJOTGXF0J35UUx0/6kkHbM3mzdAKDirVsZWSDIiFYYO69FfX/EmkPrp04gkU7rF6N1Xk9kHvvj9GTSQLQXfRiogsjouOZX39GR1aA1VWrC1fCnYAQJH/8fVUokqF5pvv9Wi5EUGqi+vlKwZHuOIrTD0M9Gh29odLUPZ76+4NoVj5smf/7IvAdi8xKjReqWnqB8TDXUb+8Ojj0+XjXZjYJTU2EYGzu90Hy46BAoT5qLuNc37R+I6IO2vPYb2IdoKJucOBBiiNM2cd7h4/HooVo+d74A9WgqDAyOWCTDV6f6R6pdoWhpthPhz/qlkFlEHK6xOcPF4wbVLdsQtFFpX9iJrm9cJwh6Ibuk1Rwo3B76yeQkFnIkxdrVhUw+p0Pdy21Bt7FT8yGeWKQhr8uDdaPes53yDvSXgDb313mDr0NRaOfSwj2ORT4JTWreG0vAtZ/fRHPjMAia9fAp5HWrZD8R4T1FJEMFCPNQSPqe3lx6YvwCHV+lNQ9AuYt8qDx3UO1e/7U/l30Le+oTAOkcVnOp6EcrJ/UsfExRqA77iJnSB+q4Xe0vnIiOwUY/7hdsT6HQW6BMf3h34lQpmR4alGzEVgffJrjX4pC1r/lCjj7WmFqCs9S1lsGB069GhC4EIM+48osvWL6wMksYdiUeo5aTMNDB1oSYngyfW3tZRXsfWO+sU/FGawLbFc0lzHo2NuW62EG3TA2pP9+7UUyLIYX5rKWEBCNUPJbRpkCMN7r+iB7qwGaP56a5e0LRQFli/nuOv3wQV6p0pIpHUgnZqMTFknoS+8H49h+CpiHamk2HK+FhZ2Lr+YqscgnGBecskGB1bF7zL5360DQ8GUatQpRqTrjsLpSC2i99J/DKFPAZsQz8xURh8SE+MVrh1ogqPrbGUlrf9BhP/IgzBWH/kx19raFVIIy833l+foGyGU8fEcgD4MiZ78zzRn3Qf6S8JXv5GZ4HZn0w5WaL/wJbwUvyQFwFBBfutpMgIUz1QujR0joWrThTKxdDYQNHnCqTsyCzSbF8K2zEaittO6YX0MnsLYZdHzKKAWB7J/Yb2Q86r4x5MX1vgsmvsS7xl1zgjWMZ5edChFt2BBszb4UwiSdW7X6rXLgvad4X+N+KKqdbTz3iDUD9nb/1n0WaAS5sXs7CwERyNSqxP3JWj6EyKBNkT/N4PpsGEPJC0X/zv/yYGPqgJikXtbff4tBjvaCleIDPFo6Zzj6Tb4RRM4vv8lloQBYpqpsv4hCfBQFN4pTDdguPJawS68A4SfH3oTwRCC5Sftv2501cO/AxqGTgc3gfZ5ha9+NCOTSkbMm0hAJ/gqpbwp4qqFku1Ov9yAW3RjdKJ/ITwGFsgev6dsRTAaN+pa3RyKtz52OvPf6wTaG9wqrSR7wLbGP3hEgIbfuGtfw/Z3g2rTlryLsCGevWz79eRuPNoSfAQf171vfXNsPJvlCUpTKnp4pHnmWygaeDe6Gynl7W3P+NDD3tGqk9BCQTivxwET+AHjOEG4nJ5JhjpYcFbRNRLG7Gq4lUQPAV8S6ws/vD/QNclpt34mIyZaWZaolC4qExzTXE9NA2M3iybhlOBJ/L8+iEVsJ9a6NfEfEC4D47OjagWYMWuM1+Two3w7ae1nXtm84ww7Pouh95VhUsPnRrCKoH7ABZ0/3DFTBMwbbm49WqbmQ54lUrmkDkah38yfHSsGvdaXJuycG7dkZvP/8qxRc3o49JHI1QdW7AUa/nTC0Q0vWoOwrhob0LseS/c1wfJZjcpXav3Y7NRk4xwbQehrY9HQ6Cxg22utwzRFoponw47/WavhMVldgofrOVNgJpcsfw5HqSKbS+1cUEPtYzu2+VAr971aD1J5j0eXNtPBN7jK4ZDOnvbBAAcepcz57ohhUrsNOewY/CHfEQ+mFblFAglev21qUhPaLM7f9+VQF07doKu/GhMOfVW0bT2IYyh3I6NUzjoHuuCdHNoftwU+z+Xe9ajR648ibIaoyDDdfep1n39cCupq/aux7YpFtxvdMYVw1nKs6oO7wpRTY900Q/9Fj0LV97OM85q2Qc8yYZgPXBC9y+27eacShwIR3EeU27XDqIDE8s516H51CzNfvxCLOB7IvFHUaIbzX9tWVLQqshxuv/7gRia60MRN/Yrsh6cKAPvZlGhR+zXpWU0FEe7lPrD3V6sF/4pL5vsUAGFi6lLsbGYnKA37KCS4VgW0tbBZeJsP9iOurRZwYZG86qDjuVAvvb2LLrRyLoM7QuMfsVDj6tDcRY+OXAhePn1d8opsN17irPN6xRCKJN78Wo1J6YXTtropTYjWUqdxTxeeSkN0olkz/rB1uGVTHBbbXwZezvX77TWLR1BeOJwdmWuCRkALv0zNY0CbjL77lj0Huy6+ajieVwYshEXgZWAEi4/5RKVdCEe8BiRseLxAsMjK0Of0qgRFLvebtj1HozIXnc2fyW+CVXMyws2oTlNS1atRdxiFvs54zfOkYoO2LhefcJGB3OvGt8300osK0poZDLxiYtqQ7JNRDwB2jrmXq/Xxz4Xo2QOW0c3SmFpq76fBN6ORP3h4MUuy3Ysp+FQzVjvtaTSszYHbTtKo9EotoXgt8Re+6YPssxXJ9kQLNPwhihteJ6F2DhGb+9Rro7/e5dlq+CYR5D3Gn74Wj9Lpjb2ZkBoFJpW7pqDAZSu6nyeXWEtFdLRoO/aRCOMt9JIopG4Fp7PQx8yehSJsLe+PWkzpYZc/lUSI3wt/2zQIlz3DEP190hP/tINw9H6MzEloOn7s6R80DiCjlv/FQAdQOhcKNKdYMCOpvzq86R8YiPAZr+Ok2grrhO/7+rAlQWtqcF+odjVSV+lxS7XJAQqikplqUDC2lbCdqJcPRXccX68dHO8HKI9b4+nIlSL378zP7Ox6RcQ+2Cs9WgOrKllVcciOc6TO69OI+BrH4/sxR5hiEraHjH8ms+eAlz/CCppSEVI/bsItYdMG56Fmz2I1qWB75UnXuNwHpp8lHGfgPAk6gRGDicCWM3iy6GfyKiFpyP25e/tcNLxiXs1qcKyDXj+/mCNXLBj1H3AoP9oJY04fuDqoH7C2EZFFsSOil1vbjxDeOYPfeS7YyrhRwMRcnr1L7LrVrtaCLej9qSh2vMjcpwESwrPttREKB8bYSoWMIRg3C2JimKMDd/MpPk+r1M2NXrjLKVIAjJeSCorQzDL6K21TVxSB+z7DDXDNdcIeX9owBGxbmF7Paw/WJqKC8dn7x2hAociXGuVD3f5+tNX3vMSLSup5b0MDcBXWturzY0FIQahh+8XOQgBTmF39i02vAW1Xv3tTtWvgjOdgl8BCDXv1KkcQ+bYK1i/R/GirT4QKfPE/YQBSa7pJQ1TxdAW8q6V2ehJdDfyKnCOEpBhmtZxs6RA9A/C+ehPIgqu+ctW25S0dCbHGuuX4aXfBRpE41WtQf9G/xi21dIKA40k2Nw4JVgJZR/fEXZJjxLBT38A5DjBG+9l6b1RBsmmasvL8Uzg11O4Q2hSNB662if1IIhp47PNXfLgRbhZplgdYoZHCmQlTwLQUMnaOI/AZNoH1lnmnxFA5NdcXoGakOwjfjTEf8QiiE3LC6zxRB5eo8Vhw8KgL/I6eyr1G5JZvRhMDJh0FP0t/qigcNwOmIi3ZpVL54+eYGV+0U9fNXJCavTA2D4bFn7gnlTnB+J/b5J88YZPLhZkollR9sOJPrnN7HwpfT8VE/eCNQtudDE6mqWsi5e8RU9FE5sP6b1X76PQKl3j6kYCmB4FkSifWqZR5c5vrqtn8oCqnSZKzMibZAwMfE8ReqZMh7+NU2YgmLClwy/RiGqqAsA9sVdpUMt3scA4MvhCNfXRpWiRNNcJ77aOrdfxRQKnPVeRobhdKHP3BFfMyABUXRM0vTVF/sNfw+vxGOVu7nT4uM1cJsDcc+cmsjYMBYkW8kAp1qspAP1eoGL+WsI2VXC2HR9y1XnxcR4bTNGZnCs4F4hrbCzxOBwuujuipO4SjvMo3M69IBmBs61+/2sAQkBj8XjXaS0FmHdmd3t27wTNAPrRZrgM4HxqzZHwloft4Uc4BUB1/lbnZL3isF3uFR5fXGcOS9XNLPxd8N4lXjZ6cPUefQvrQFxRDQxYpjvouXR+BPm9n6VZt86Jl+IvgvE4eeS9njFmLqQauLl7a5swnMEpgIUw2RiAc3yyVQWQg1IfcukZfTgOWdda7N81AkHtNyl7WtG7aet/To3yZDL07S1GqKiPJ3J7ZjJyrBvEGRH9+XDNEO+Q6SnzAo8Nx5lsKJfogWT4o4h8cCSXOy6tE2Cb3X67Ev+68P2ndWfUpUamBoXwGtxkES8n27xHZ4Kw+UC/7sqxpEcIQQdkyGgEGPnXzGRxtroeZnWEVcfiZsrkgI5l8KRxHBVaYOfwug6mSPBm1iNsRceWYzlhuKSp+C3Pu6Orjwoc9+WqIKcm2zR1qlI1Hqb0Nc9tUROH1pgNX0dRO0G7ezuEXgkHGs/o79wVpg4TKzyZ5qBCOmIKGn+RiUS2fP5pJSA902Wy2bq75wJmX5purpCBQHYsKN1PfbenBGlkGmDkj8jwIIZQRULavxsoHq0XoToSRfXTKsfDFbfRqPR1pStcVzHGRQ9/49EuCRBjwbCt54ISxiStZc6YvrAv/y9zR8BRXgIdN35udNAuoQ+P1fyos80A3O1dlprwL6HfvD5xZDUX6/JeMTsUGwuXbGmk6oCmz6WcjZ8SQ0L9rz/PJKNRx+t7/+i3wCyCjqVC6wY9Dsq5eYce8uaKr/OukRFAcP0cclVR4ismK3CHesQKC1z7rrdUsBiMz2O8t9iUbv9Hn/Gh1DEO8dk531gAL7/RWWvGqjULMj/pnZ/DDcPugrwP+5CLJ6/1Rx5sSgmOjTJjpLMXA9+06FxzoFbty7ntP3Nhqpf9N9F+9aCsFZPA1l8qVwC2M4QC8dilgOt4fOSQ9C9kDZ0dfiCAIY/1h3Uj3xLtNptg/Xh+C/5d2n/lTvPwNePOGhBHRZKG3x4900yF0N/Wwhlg6B/I85B36HI1ehhs5vUnXguGbudbERQTJbboCufzgiHpK51N7eBUWnBIfKs8pg5XHBPM6aysMs27m/qTkKVFzgnipBoMjW0E+PJ6LcdWy8DwcO3iz/wu6mJUOOq636C5loJCgZ9zU1ewg0Pumt2Y5FwfMreNYlbQIyF7jws5HaCzsmvPViOwXA7dK/HwUTUGZDPysxMA/kCxlWToSlwqr2HQkXjjA08kqZ6zVygm+ciz0LR9JhjmNBi/Y5Dnn17T8daVoNenwngy8xVAKWMLmp5ULdwwv6EuN7ddB07Pe6qAiCW+kBOQNcEciKSaiUdyIGFh5MHUgzI0HqYJ3piz9RaODoESfp1QJQfizZaIFzAiuCrUcAlWO5/c5JhM70g+K9GxurtljI0XqvrUL1spGDFgqqFwfARrhdsHU9F7L/4CXOLJCQ0l5mEiklH8h9bb4LolTukl1N5vbHoA5bfmmmqCZoLsFoeXfWQRdn/Gr5hSikeaYusTeqBYw7bl2JYW+C56evD4gs41BN2j5DYtgQpEnEf5nbXwA3yjW+KoYREO6jwNnuzHbYOuiwj8xRBTIXPgY9lsEjLg+P7uX/OmGj/cahY7IN0NJakRu9hUf92rf3Zs7XQkz6lva5iFLg+jE1uG4RgapVvEaxTfWQLWL8nwWQIbEzPfDUj0j0eFqQi/BwAMIv/jeYH1kDHjU+ERXjJCR1xbDxbGkAsFoe0rypgyCzzzeu/joWTReetCzlK4eTjGlbpp2Z8Kb1Y6SqSSg6zmGRJuyQDhVRK7yfIhuhhK/bau9yOHLKXB6NZ6mAlmtrSnLXK2GFvshmzoi6l0rM7SUuxAJH8MnjOtplcEC17sI312hk2Rqh6ZNdBW9cf8hIz+SD4XkrTKsxdc9rn3+zTBgErkmNpf2noyAqmNHvpA21F1bHRL9frYOjdxHzlfhsuM9jcJb/bwSyjY6wMVpvh9beIxy3kzIhaJShVVwHj76QQNe4rQdS3+wvSPlVBphXHOeeXyehCP7ny6eXuyGLfYI1z70e5HDqcilsRCRNef+Lxw3B7Q0P3TaxGhgU6D6g9zsKFalJ7yT6twDFJ9FSXaUYKG/iRv3acejByM/krJNNIPOrV/r2QwpwcvJaPaDywIpJ4vTZxk7g6N64pR1XAa1GHsy60QQ0dojOcqa4DFQSyr4d16Hm1N5bkFccg2Sb7tc2tgzDWHWytQqVM6td14z//7vNbtHboQtWDfCpp9799rUqSPzKUKXNHYXkMxe7hE91gW6KzEqbQjzQTHMPFtITUJp7BGNsbj9ci/Y2+fibApf7f4bwM8ShvyJlYoXHsgBvHBRus9QIjWrla438GCSxe2RVgxPBiJmlPPEPBZb3ZHHvqM+voGUd/9OtD9LtOI274xMhxFXIjneJiLyr5W4VUXlGw/Zv7W52OgSd3X9WJpKEMCEPag20hiBGuip5p5UM+p8C25hfEtDOiXIWl9lGGHelqQlUpPLj5a+rxZ2R6F43/+fU8jxQL1pV2O1uhMLeMtG9egxiLjlR5zITArv6nT9lrhVC2bnbffW0WOTMIsIwrToCt3fpC4W306E543uvoCcOqROdHGzFQuGrlQDW/mskdC6Iuru+wCIn2beNHlLdIGLKur7dEw0FT43+xWUSkCX+7NzYi2p4/fvWgaY16hyuaibl+YWjlPtbORSpIhg9x3JE9FksqDgIHVRfD0PvK/0HdbEd8FqzNL3+YTgYcGNeGDHjkWiiwmM5vyY4YRA51mtEhjE9zocTk1GodQ1dm0yi5meG8cbTX1hw2W3d0umMRvhsJ4mB9lwIaWieyVZoAu92+6fu3GEo7QC/d2ZRNxieZM+s+FQM6bmq7G27BNRjvtAe/nAQLApNPoZ01oKiYVOquR4JZez0F3DU98OXTLafpynFMOjfYvLfKgllW11uu6vWC9JMleJDowi+KGT20QaSEJdf4uV6Zgr4FCSf9aNNgLKO7QbvMSziCD/bfn1/G3xLJscVH0AwXfhV9a1cDLq6tcHB+aUEtJ4f7rRTSIeWFKLkG7ZQlDdWVcqo1AW4tz4iw/cocPG7pM4JYQKK73S+H7vdDDUWs33q1B5z3Dr809U6GlUJnet7b1ADPpcWQw5t4UBEOMPRxxqD8HQc4eOeXcB2MwdL4KuH6FiKxJMjRPTzXBGlBN8IxkknWVeOUkBXQsS0wT0SvVJ0FxP61QU/x3RjVgpzQe6k1rUfgQTU7HlqzHmpG/gc+Yc6NihA1BG7m/eJiIr8bTI4TpPhGlvpxeK7DTCbu4upFMQiN19x6+FTHfA58GpcycdyGFHqVr8bhke0HgU3NA2TwPb6bXKRTAqwn/nh0y8Rhd6vyo0EfeoBrJ38ayupZugUd9xv4kH1F775iyUMHXAhxFZ/4Vk1bAnl0Nq8xKO00N4vpXodcE1EQ6r2RjVMX7yKbRyKRYXV0VylDN3QvNNra2dSAYYatlaVJkRkzNNTy6HXCTHTeh2K/WSwrBykaX2LR7HLgv8dxVBAY0PL9IERgsbS2r6aYCwSNI3qGEqNhRMfkxMCHHKgo0pHf30vCh0KnLBhLekCx+r3W9X+2TC+MV4sY05AB0s5VHEZhWDY2/HhQ3cxfHeyUToohkFfc+JjeIeHoHzDQqgIlw6Vxexdia14VJgi8dRvPg9Uzv3Z+6VQAOYSiR+VIjDopoaYnPW7YeBXzor2qGqGVbEnET/+i0Gim2e7lB+VQdRGnwidJAk+nQwPt5EIRSITwdGUV53QgmfP+JTnABSN3v2XnAmoSELXTspxCFal95nbXCDDnXMGC861BLRyMvjnRvEwdFl5NOd7lUPrp8MXi8/FIvP+C52Tph1QcIx94ldlDXi9F3odUIpH3hbNxrmDbSDmkxSdXNgMLLTOx7a6YxCKSUw0vEYGnJFKnk9IIng/h+8MalhUpaDP6hNZD7k69Uyzto2we8fhZUpHJCrWv7FPZbUTVC/SSty60AzW/7G38LUQkMwCq/xVuQZYps3U588tg7tHf/6UZI5ChR+05bx9a+EFp9InzU9ksD/hxpksH44c02hVOrm6ocynNkhVuQkWtn18zdIJyIcejx7a94LzyWiJXHEKPM7jWZLxJyGJsDNqZ7e74LGjVwmhsxn813dGy0IIaO6k68Zzpkbof0O7lHSOAMvvbOO8jSNRguiWZpxpDdTGnb9z8RsFnDWJ2oeORCDOq+6MRiGDMDrgOpJ2PBjMrjXEXlQmobflzLNwohPsLRutq/wCYMA7XtlamoD+u+4k7B3aD9/np15wG5XB6OnFnXs8JPQw3GhH+W8rcIZ8bkqLLAJFbMsh0UsxyD3zzJnSvBw4NlImz60XCSbxfgKxNmHIuLJm3/59RRDrynCZB18CgnJyFreiQxHve86Afd1VkN8srHhKiwKtDm/yHueEoROzvlr4a72gfi2VWftRLVwR/+tZVUxE2q1n/hyLyIHzsrFXQ94Ug0N9lPJkZhiiZ7den77UBAfxk2VuxythmL15o7IwCsXYtbmodA6CDn/6cYacIki8hTX/+o2ITui7pw4f7oKbv9mvydNkw7c2WWvdP3iktDJCyNVtBeZGud2b1jUwE/yeoepZDAp4l2zg79wNI9jbeyq0WXDM2eae3vD/51NqdqKvAfpnJTuUeIvglF5Lba54JLIVLsZbf2qG10vyJRy9GRBlPuxhcD8a+WnzJDscHAbp2uZ+SaMmuN8ieoe0EYsElNNrWPBl8FaaeMPhtj9MNzw9H7Udhoa8LPgs38VD2WiX3OpMKejgPEj4sCgUNrLv3efVHsAxt1f+HKsDQ6OXz+ZDiUhJ/yb/OisONHr0+Lq9mkBDz5XZ5Gg0Kq4QNhQx74GVrG4XIpXHWDm/CgeoEdGbf7TlE21NICBnkbeQj0DgvZpX/UIUWoP9io3PK2Dom8DZqoVCoBU8rNMZiEFHL/cdsc0iw3496WgO5hrIDL16WNkXi1K/P/dNlO2FgkGCL0WW6n0Vqeec44hIkFNF4wyVx/YFLGWX8mRAktX9DTN5EsrUwB1L+tMG7MaVv3DPc4Fl2pWnOjcW/WDW+U6f0Q1HSFe++zzOgfXZQw8EZwlIo+AY9yvxflhLqv0WoUYBdx6HzjSqz9rLd0zsfKiFOOxecmSBE6jL0BlxNkQgwzVcNTfVH4XeXq2S52yArbRTuskhVA4MsI7iFiuGTLdet33zNcBzpWuYWTwUSbmHiDWFdkGNY+r7u08bYPx4IHPZDQKiYZwoGMxsAqbP/nlc7RRqn2cgxoNR6AOX8fXoO12Qgy+86hhQCrEfvje+OUvN76CTS/bZAZjvzzbU9ymArP8a2G7QkZBnXXLWE7VacKF9cUl7pxrsKyiveYcxiC2F9M+OowJ6uFBJ0L9E8AkoU74THIrm2I91qK81AU54mLmhvgayC6sOmKxGISyq3mcU2QN6R9S4UpgbwKu87ZSyJRH5jAV8WCoaBgu1eo1qqQaQ2NE6J5sZg4hn7iU0sObBeddY+4XOOGgvkzYTbcIg3fMN+a5cXfCtsHXoeRoevrWkjdHv4NFFUInL828FLd+xARZpEvy7w/BOEBODEm6oroRsdcGpfzcMfnGmwIyDBJ+yGRFx3FQq2RbqATY2j9hP1PyqqDb+YJQlols+vfwfqc/JPJdmHC8eBEoBETPXTYlI/2hFASnKAcBRO/HEIgW2ktakJs1w6OOVGTXBMjJIL6aOcs2UwXH96rN63dGosi1hVz2uAwIHWVPcIhpAo0T8S8ABPJL1LIuO+JQDhxoioypTmsFRVlQ02iQMFXqY/0zR7oZLa5gdg1dlYH5zNcuxioCizH4IQiQZIMV8c56G6uNKqbfas6LRdLW+UJLFIDCxGOl61GVDYojAksITEmKbT7SI6u2GlI1YhUa5QPjV/FC5h4aIkvUYWphc62Hn0WMd5+l0UPI8ZH+OPQKlGzsqyxyuhasNO0JvqH7XfOjWAnMWBhV70xxTrEcwHnHo1pBQMgxIVzCtU/PYdvYzvxCuE17ahxbjk2qA79GrHi4q90od8bKgO1IBJ7hfqCrL5kC37dUr9aYYFMKgfLfbIhlwhuXbAtR7OJfhJlDEF4lcs7bYPhSWwmyvS2UEdZ4vLim6qzCHIiZaS/O9fKoPX/mrJSNFhuf2rMcZJcPR+imnRdkEBP6vhe/TPfMEYqkszQQ5Gj1ron/iE9sDWVvdCQH7amBZ+NYvaQUS+sG+XDl/ZQSyXYpbY6IqYfvu2pBfGg71PC0U+1CRC8Wn2LU/1/rBIbMfun4/MKje491/s9ID8IrPuprTl+pT52c8FLhIyKzaYoIsUQgSin9Pc09iQFmKIameyhVSfqkYNF4F5/zmvH92pML50quqNxLCkBPtwZ0Tiq1QeT5t34/HTRCfeT7C+m0MctI84nRiswdkynhDyAypcER999pmGBE9Oo1396A+J6tZsV6Faj0sdtlvJ1Gfs3UgMLUJkw2VFe0+LFQfvZDy7wBjUxhycEzmPLWVDw/ECq3MMxzB8K2KmkldKNJ/0Ux3c6EROLEPOOnik+DtD07T29QeeSTzMJO0hYB0gd3OvCwHzvG4t102ikasnTcaLt/sAIOhCn76E9ngvrPBlFqMR5Ffwv4+cWyE08ti9D4uZDA36D+3+jYK7XDdES6hni9B0BorzsoHxfz6p93ZUUgqfl2t/d0gta+7fxocLgPo6TYL4Cai9uR7B6zPpIHDJyOOrKlEIMkuPXq+FI7cGUxobHo7QPdfStILsXqoOj7R6PYPj2r8E0/iz/TB0KfB5xmlZOAQZKKfmyWhO76K/yHbPnDx/xpSLJwL/D7vHueOUHtfj71/XmkE+rzkfZveUuDCAse1B4E4lLJ2TP5BYAMEVTJdCqBrhE/O2t6efyKQkqBOHGG5GqzuS23fTI8GtVuTUgHL4eh4jXAwg04LXCf1Sj1jLIdJNsrZQA4csp5xa9sTqoVls/eqG+9z4YnQsHOeawRqbyv20kisgxNDeQKxYjlwWYnJ4BAmHK28UP3Ap90HfKIm42vN9bC7+eNx8SgJnTKNNW6m74a/tL+ETn4mUnmvgO6VCxGtihbkZcR0Q1xloJFeMAHyxC3GGiuIaCr9m/y8US+kpeU2Pg4sA9+qAjE9HJVbut/cvLRXA3LipWz3x3PgFYX3lzo1p639m0qYC+0QzsLdbPKhCTTJP0T/sMUi9TtTM9zyJRB7iJ0nQdIR4p/HP8g4jkErnJLnvYjNIPmXifteDQWezf3W89eJRvJCa3mv/9WB/F1J+R91gWD2hpOOfiMcSd72Obhq2gORCSlarNT8dX02urbGQUJ20+yTueqRsPmrVWQsvxF8Os83sfpFI/vbSUEG5mTwRzqE8uRi+Dpj0J9qikVWnGeEoxqoe2lOzvZZB4JHSmc31FcI6KtCiZ3r2QaQOaEm1EzvA2ptrjN22AhU/e56l01JFbDfNJVhD26GgUyXCC+9cLS/Ic/j2qN28NbSSDHULYfU+LTON8uxaHL952u7MArw7AakPtarB2zWOZleIRwi0Yvk3PhcDy+CeQPaXPCQNlHddpQmCn3G/ER3nLrBKdKC0V+YAofEZN+7lhORKstrTQ6hQaCT03bcfVgGT4tknfaSSEjlaTKr20wJKPPaaY66l0NI7T+BiJUwlPQ4wDudrhLY9qCS4b8SiLFPOxzYE4quPMvp5/1SAH9FUF34OgWOy15hmDHEIFmfr07HPlD79fTQn94DdbCZnkQmvAlFi0IfM/uOkOF98Vc53vNVcFFHhXn4UTQ6tv6YR2C3E5jcWPh2myvA4XPbKZplPGqk5Qopme+E2v28A9daI6G3am22kUxAP39wH5ViGYSkhvd963eyIK+JVeThKBGx8QXR7n4Zhmk/Vr+hMH9odiwMI0EMKk/lE8ug8mKSCIPI9H/1sNJ+gUXwMQbxnog6UThdCyGxp8bTqX3n5/BA+/ZqBHJ53VH89dkg9JyU4qucoIBvXbkiox8RLTxk3vcxahCK3XdL/7jmgXXSFTUnSRK6J/6Pkj/XDk28S6jsjztUtuYaHbDFI8pBYfbOG4XQ3dBsaYfPgWcqBWZOMhiUKNgXOSJRCvp0VsuXnGNgnI9XbeJmKCrvT+S7/ysFJFqSI3tHCsD6wHRkSU0kMlEwX7m62Q7GyalfdxVT4KpjzB3xh3g08a/6l/qfRghLtaxNm8uEn9wTTa5lUei6lMaOU2A1xLn9CPtXnAGvesNy2yvDkb6FXRYxrxU07cgySqxkiC/dz1ZDH4P8aT/sZyrshmuLAb8r/Ovg8sxXtaI6Iopgmd9vkj4Iyzw/RsbmyqH9ZTYNhxQJTUq3/vBkqAGTUYvX5+5nwvOj8j/X1DAoqNiTvkGuDdZj5S1zSQgq45lOij6KQcObGf9Ux8hgOH5JtdKRACF1N+dHyrBo+XrvfSuUBqw2GMODl5rh5aGXQTaLEcimM0D2HlsPBFCspltWskH6b+DBgVUiWuJfVDfz6wO5cWfb6S0KsI611jT+ICFM1NEmDu46EHwS0dufWg83azzMw42ouX68dYPXsxc+DZo5/k4Kgk/uovvIiIjOD5RbSB/IhfwnndrrEhRoxn3oyvcIQ58dNBqnX1fCvJqWIkNYHPSsi+V4fMegqcG9B+9wuWDz31HNc0LNsM9gOcFiDoPuKd155aU4Ar1KdWZxHZFQv89OXJSAQ8Vb+z1HC7LB0WQNI9WSCOLt5WxEaq9tJY2fOsXWBdu+B/9D+gjwI1u37NbwiGm+pVhVtxcSwvs93AKD4GnJ/OERTxIqOsPrtve2F7L4b3TbPiFDw+ks2yMdRGpvekrZDRXD45pnO0xcCMia9iULLBg0nWm/fl+LDIEzslKC1/LA6+HcvzUlLGJim+gl1/eA7BX6r8YWZKjPdaB/qEdCe3pbjr5NQ9DJz39F61YEcPSyjidg8UjeWnT6CVsV6DZ97bgSi4XLYd1tznThyOTLc2frmEEwaeoRT1YoAu/bGV9vGBGR+Uze36vrWZAz2OlMM+cPu4nnLwlGhCPZzy/NDx8YhIbXwm++36yH+on0OJcSEkrXEDjwbbIFLD7RGlsuNwNZAfEpauPQoj3dJT2HZnCNYHhl70gGl5O66reVo9HmSPX4nGQFTMk8vfqbuxlYjl+znfUKRTdyHPaFEXvACLuiqaVYBY9vq9r+eUREn3SHXxfa9cBg8OqJP/+SQGz+U/qMEAnVxFpt3NuqAEKwx8G6uRL4prHv+kYFtV80a3jL4nKheuJ89yrJEdx/PeWI68Igu/SvWDfxMlCZ6GDTIWYDFYDyXG+Foqx/8gJZLkNwrGPqZv2lRpBqSGd7UkhApTxc/gWW3fDol2Vw8stK0JGJZ8JTvU/XXWTJULEHmpMdadfPVYDjybzKOCkiMiNePCA3RwG10XaOCzkNsFvZOqNtj0NEZ1PDpUdtwPbEu/yhXAWwdrNjXl6LRRnPJOq+1/ZDRK5I/JdmP4jixcv38pHQdtKrIqGXnbCd9rmERCyDiMQOnE4wHp10vy6rbNMPuZdoFh4fpMDF7OC/9ssk9Cg3dDJWbhCuxd7R91u0B6OyAcZ8FhJiCt3mrvgbCXaZrid4rOqhJ4XYancGi3hFfjIos1bDh+bWMxeLG2D0X3jP0KNw9F5xfY2bvgqkOKQvRfXUgo/mrXi0ikGP+qRHbdzyoe147VnzvVJwYNA4vkL1U+KyzpbEWhn8VJAeVNZvBKMqJqa6jTBUzOaohzop0Cumayb7LBVeDZ8aTQim7oehBaWHpAbgWOo46O5QAHfdswitYlGoiiVnOdG7CqhjffXTXj3kdvroX4kIQ2un7rQNlzVD5M/ouqyuepj94Phx0D0KtagUbfrXd4EITwM2cLgSDrfdzp0yJqC+C570J5y7QPxOFiXnQBUYRZZ2if4joPrHTPq5KT2wma/s80y0GdiNGh+ny5AQC5tNVKdGE7i/bv86XlcGo/EFBaKNUWhe6LBJ575BCMw6LVaSGQWUD5e/jXwlopP83y08kxAINyquvMBXwRqjIGdWTzRKldC/tHxkCBzZ7/F835cK7oH3xNvvENH0mJs8vqUPvI4dff9vOgsOJd16Rr9OQjvm/SkzMZ1wh2YeE34nB8j3pAY+puPRfjrasRFsP7BsrxxKeNUI9evrH3RY4lDs6qttLQMEkt3tFtcmUuC1yO+oY5lUbjn6VOcb8wiYr2DJb95Q91z/3O3BpBi0sdcs5bLgCFVzfxyylBrgjOQ5+z/UObyS9kHK8H0xQGvIvW6dIngrFPBT/AAGYTwnmXAC7TBBir03XloIBd2XV4UmYpHxOevn3cojUE0r73NitBokK7guqAfgkBxnlwxdeSdovNOhM5GjgHYwEa/QgUdnQ9TEsz26gX05vmhAvQSO8EnnG1URUfDbkxnxRzrAvZ7TvNGvEK5tL6Qef4lHzo9z92R/tIGfSFpe96VMMFRTpN3XGYNYUoW+Omo1Q+X2RHH7MoKhCWQ6ey8KjSESa6FAIyTr3dnk+x0A720qyErPolD005jRjOFmyKh6JqaVigczc7U8ApVD6P5GxxYKdwBXE1Pw+3IEUwRm46dlscjVAPeh6UwXtNO5ZXYnxIDgqKuX5CQBPRVsmkv3aofIwYjLc5ezQev1Jr8lNx5hflRcfIAhAzOj8vUachrMgrvuaFo0Ov1xCii/W0HU2YfDxjIC1C7+sRoVikEZrC29V3kpcDf+gUluKhnSI68knp/DIoZTMUYeH4eBmY6RdPB1HTSp9UY3qceg9tiryz5fBsH/3aegyUs58GDU7bdbJxHFtW4P5bwpgyVfqyfDMYXwQaSHu48Tg6q10mu+hhYC74N79+z2N8K4G8fXuw8waJFdmBqTDmjlpF1T5XcA+jZ2mzezeCRuWeZx2YQCo8++jrGu4yDYuuO4PgsO2S55Xrzt2Qfskigwsp4I+l+KvnLtEtHGoW3D7KODsOl3Ed9OXwv7+XHPhT8RUQXRX1VUvgUkJ2hYQxjSwH8y5U5sNtVPE3nW1sY6IOzalaFUcgU8OpJalXeQgGx70m8PV1bDzeDOrAOTzfC9KXh9aiYcXarKtqA73gl8OG5/s2EKeLN3roUb4VETBSse5IjA4fdF6YAyMnRLSAj01EajOrxw+XvmericRFE4G1ALM7wd/3kmR6LLfWQ+1eedoOMtNdwlWQI8Y9PSy+YEdKGoZMqEsRGOv7wb/CykFAxH5MwUtCKp7KwWHyHTDExlnDvluHLIUSl5qn4iGsncJX1Jds6DpfIofoOdaihMHGb0f4dB3kXy552wFRBi0tRbv5gJ2vS7HYfCMCh72IJGgoYCT9PfF1y+4AvaP3yGSO+xaCfkuPnQCQqcbs8b/REeBuF3zgsMD2CRs8t//wYOt8GDVjkDLUsKCCX0XrRSiEHpYxKJFzdaATwrHfkHyHCMKPZJjMq3LpHtnO3RA7C1WFgkezIbvjTrrngjqld6GT57tB4GEhHpsk6YWuDCxctwzkSjsu6/ZxO5qqDpdyAzg0A9FPfcvG91PBw93F3lZHcsAv3Mo2siKnmwd++WwxebUES2d2N+LNwH5s7TtBaQCp8IzhsfZomIh5iDrfiQAnXuhxWXf1NAcpPNbCYrApVvTK57clYAl9fhLMtX1bB+Q0679BEG6WseNzQcb4JZH8oqc38BWBEmTiBdqr+zCn3cKesE4QPy6y6GVD9NeH7MOZmABByOvt9H7IafsV+5k6QosF9d8ILqLAH9mlpQPn4wDigO/9k/+VEF0vFFrZzjUWhvKjJ8ta8SihlDxhZfVEKi2zv09HwYetVR9I6juAmCZcsrJ8WL4VXNMVMKZxSa/GyzEDnaBl6lCcvj/8gw7Pl8kbISg466TR+2v0yGyov5Hx/7BgPrnzLxqzxY5N05Oyki3A6uV3JMSser4OCtuVTL7lh0NsXqqAp7GfRXsr3UDSeDitPVd2IyoSiqNjLH0qoaSmPGlrZ0KkD45y2/s91hyJJzSa3CrB6Y2Z+L8d/OgxeKSdWFXyOp95Bbsb3dDdaPVdy/65Bh/JA3YZyBiPhb04+mHuuDwabKnWnGEvD/oq+3XEdCzh5b3a96OsDlst9fBqq/m5d56TudxqO0KvGI7Ct1sPXE2vsmrhQ+9UvcEOOJRK+WFyR/i/RCE8UepBkLQFEVPhTGENH8PQ23HLs8+Eci7cQmNUBhQga+KxODFM8U05tKDsH8nrf34NkK+Hjv/u1cOSL6ZzhGYz9QCR5HniRdjELwYeJBe5p0GDI3mzjDSPsWuPev8bS6JMHg+thvXn8s4vmvbCBeZhhmYoa77nCTIUaQy++YXyx6Q6shf0pqGMIl35XtmjkC1xVamf1xsUgqqcBFYLce9McrRwWy8sBB+CyG2S0CCfCKVDibZ0B/quJA6QYejhrnZdO6RKBm8WDSbHM/qHDrFh3TKodje5eW6qk9OHTylW7zpX4wqXmqlFtdDvaX/tY83yOhWXHGh5sXBuHLnELp//clr1iMLWsLEV2/1XdmL6oMKuJ7Wxb8EOxrDi7KEwpF7/bGhp7XNcLv54yiDyezYFauGf5GRSJ7Icx9HqZ6kMpqc5nWyIfdBIZLV1vD0Tj/nzc8R/PgwoOoO/3HYuDQX0Gdxs1QFDC7eY5moRY+cB8QTHCPhC9Bb9hvjEcgcoK3b+7rTvDMrMmpNQmCgveyfg8x1H4PqZRmxXbBAw6lN4+r68DrxnmuQgUCssotNWHycoKy5RyFKaZKIHjJSux/hkOXdC6pog/1IBtCbNl1Twajkw+rzOmiUBZ5mlfGqwOcahC+VQ3BxEyWL3kzFhHZT+/ozVA5nC1NxjI/HdJpGfoOS8Wgk8x7tt1JHbDcrnG5LKwA4jI6RESoc/Umwy3c7YkfhObOejHvUWBA8vSbmwVYZHqq2VksvQ4qvE2Eo/5UQaL8KxazunCk9ixznDtqCFguxDeoC9eC+Jj9/v8CCKjgwkt+q8EamLARfHh5qwC+7U9KUDgfgY6r0exdxNeCm4yCRcxWEchvJFk45UegOu3oIDvRTJhsUZkKPloOLzTYeYYYIlCinnXG17VeKGh8sMn8GUHzyr+LHmMkFN5tyZyl6wBhbhsnJnpfAWsZKvtmh0N3JS/vcptWQ3fCbckK72LoPe/QHNIThr7T9BOsBjrg99OzAYdcSsCmfCJ6WQyP/vD+PVba0A31GyF5oVgsTPzyobdZIiCn/xpZFyopkCIhuX7xVhX0Lly6dEsVh5QdRQ/9PVIOctdEJfxMakC18MYgXAhFym/enrxwLx1qvR7RaF3yg37avwpe5RHI7dVszTZ9J5yXjsvD9ZMh7IQBcx43ASksRde1rfUAYemm7ZVXRdB3VdBjwIqEJGKvpujokqFou9cwIZp6T/qmzJZvopF6dWRvjzAZfon0NZ4vrANS/KqH68NohKGraAzSpM6zybt3giwkKL/wby6AC4NiLlc9HjJKAy6TP7ZsebVg1fZg3ISBun/uieslLebCn/pTSqnUuQq+Fr5C+oZBmnZ/+RwdO2GXlj26EF8H1us3noi8pPZm4Y5m2g51rmaXuzj464DDl24j/gIBde07ybo9MggPvknsnyI1wn/3nLwXBIlo+5HKUWe5NsCfK4uhi22C359vrvx8EoN0x1ZMkk6UghrQDfipU2CT/2Rdw0gYmuTm28N/HIAmkZtKz9QrYEjl0T/tzyR0tJpVjk2L6vtTkupky2Z4Hkvzr+NZOJIev0ITaN0Nz+ztDr2Cajhf3fpXb5SArv+12MBnZgJn235Bo/oAOHaqwUfWFIP+3akn0/yths85cy5rG2Ugu62/on4dg4o+3GXEmHVB/2MfDRe7dPDUbD+hRktEOr/jXp06PgS1YiZnlfjwIL26wFLvR0QHt3h9fuO6Qdz1g2xmRwH4a2zLj4wTkPDhVDYRz1yo0dPp49HOgmbWgyb6nzGI2dr0bKJHByhvn73jfZMM8xTHzVBqHmkotB0CXNlwNBqf0G1QB89UTy0HfQlDoobKPp5PsqEqEiv9GFcPaPPIR6eJMPQ11GXAOrQH9s5KJ6lFIxiYYF7U0ySigHkGC3uZfkieNNUjnsZCLyVc8+82Cd3Giftq3myEB5KCGu/cETgftJ3iexqFljGzgj6iPVAh8m6CzJAC/N8nHU6KEJFvknPmvAMFpk4+XJzQqAc7HmK5mSUWPUjeY/DX7YDw390D7g1l0OBLK/KqBI/O7K17pTu0QCklb5RNIgUEr5j6aC7j0NKeb9CszBA43RLGHtokw+pPHTqQJ6KGCt+fZRElYKH25cVqUjN4q+5jEeAORS36Jr4zs4Ng6NS5FX69CXQU7E9wtxHRyy66m7ZB1Pe7XuPrgimH+sHpqUv9BHS1Z++/uIFmGFfyFdZwCgBa3YRDeUFRqO/Ecqi0dxtI/iIKbfGWwEFjjm3l+7HIZmWKYjjZBqVdxdvXuUpA/KPOw5M9MajIjZ3e8UknLITd//PiUBT0hI67iToRkPLL5ROUyDpYuqufeGTLAUILLpyhiw9HId4PHqYotUGLqvQPzdRQ2Ifr/BsmHYt4009Gmw6RIbbnpcn8JzJ82NT64zQZjY7Tv5U+JjYE049OqmnNU6DnKy74QBYBMZ+MlJi7PwhFcqs8XgEIpj/e5ufAEdHfT2aa/LcL4DQN/5QC1ddou4v6LnmFIpLhfckN9Xp4OfK/Ds47nsr//eMpWckqs0iISCK74nPZo7RIdtlZRTJDycp2juMMe++9t/c59p5JpE2ZRWgofc/v9+/9uB/3fZ/rXPfr9XyeP07t2DN8NURr7p0YPByHVv5aHF1v7QB9F9Zzb8/VgpMXq4VjINWDfvNybYh2w8Z32/eHG9IBMYe6StAkoV7hzyOC77th/NnHsOSNQvDdDanpX8ShguWZv82vOkFnl1ECsxcObhFMe4JSOFR3TmtPU6ET5GOXVrio3LpQu7Tv7XssiugiME11DAGpAQqupNSBplmA2+9sEjrrtHfkQcoQrEjvV+n/kgZ7gZ8TM5uIyMRZ5sAbjgH4ryOZRc+tCOgtP1asehPRhPw4+3+69VBOc/sJ6TsF1s0Gz4myxiIFh8b5LWoPLnazr+3bxcGJEM4CDlUCepCQvbGh0QtMfFq7DILt4CXr9OjrXBLqKj30uT+nB8jX5sSipUkQp5x0lk8Mj2pz8G9UJVuBOVhXKIi7GebdTvf4cCWgf+9GhR8cHIfOCJMhcYd60Mwb5Sp6TkS5HvUD2rghGNY4mOJSWA6xm2Jhd0tJiP639Ac9+h7w2vlzR/hEHlxR+GtpMZaEtFU2VQ07x2DgedWkR10LyJnQsdqsEJFyt6r/3LsGmGblcMrJLALex5J0y4Ix6Nh8ltrN2WbQn94MLk3Jg4oflTdi3eKRUQR++/yZNrg02JFWTXan5ud0sbBzPGISoMzUYCjAOPfY88HtMjheeW7/l/8SkRhBPvrRIhl0FCRsg8ZzYOrb1eZCqkecbEMNlXdGIPJu1CWTB1XQOUT7KYMxGR1Rwmpe2s2H5xfxYUfLq4BidXwt5lU06sGRp18Wt8Hd27qhtOnhUCz3+AAkxaPlnIO+X+nrYdA24rhncDVo3Hv0YOxUNMoTjbh14fwksPmOfHQXIkJ2lvz26bs4pPXN8+6yaSGMWfJ8n3JPAz0RrKO8ZizyopNtjnQpAGx0Y/CGRiN8O3TCz8o7FnVx1nRJavdD+Bb27R+qRwj07cg4CRKQbHCsJMNEF+BPBfANj9ZDK+gFD3/EoYlTTrj5l4NgPPPGJ4zKIcIf3nw0PUNCS+9YGbadEUxvVmgr8deDn077L+PpBPRRpTnuhOIo8CopOr4SqAUzl+6op/uTkWyr6YUnJ8YhveUOv7R3I6i0m6mZmhNR1alrb+mZ6qHE+9CzuqoGYA2cvRUnFY2yr3sbpH7pBEO9V/U/Nx6AzztcZqo6DtU0V1TbinXCyVZhfiWGTnj8I+yO7TAW9cbdTZmtJ0NsXdmeknE+JFo5GdL2Y1CgQ6Cpwu0xOF1eUSvGRQEklO6uEUJCv3Se/3tkUgeHjE/MKFO9lqFc40rZixj0ufKS4/Mz3XAgh+l6z9l6eH+K+3PMDRwKZi39uj7ZA+0Pp0SLPiL4+O9MkJ4uHh2LOfKJt60f8sS+SsqIUGDkwtPxeFcC+vK4aEuHPhaa90XyiKa2wmhG8wexXgzKOqZTyB5dB4cVyCdOatTCqprvcfH5GJSq+crtDfc4vNUaOC7ckgAfZuik31PzSi2hp973azv0XHzVaxyQCU4BnKOOXxOQfKTZgq4AGe4u47KSRhJhN02AcvA6Bm0Eiv2Txk1A349neq/kU4HXgo2/9SUOVd4yu11T2QrVV8L+M9HLgQp/w0zlsTh0FFv8pyipBwb105w7/hXBBM/N5QxuPNJZ4GRZvD4OAY8a3mOSygCjg5H5YE5ATZn9at1zuWATW+zaLUYB1Vx9s3TBOFQ2LjR8amYEJiymibwbHSCM+XLmL18yCh95nO5n1wrtd+TWT1TkwBtKlhFFKQH5lhKupl3shJWSfwa5I8UQsknpMS5PRPs+OZ8JP1MJzPZCOd/UqkBuf3Nvil4U0g3O/RmNHwL3s0XRmH0ESHXxSfQtIiErOvpvFSxDEB4XL/9Msw7WgjjfHYsjIi4OVj730jYo0vhdTYmsh4WznMJbKB4d4+9HjeJ9oHl4n3V4VBsclfNR5bXDo3ekL5eXGqrB9oCemMObKrhekhosuxaNBPSfNDF9JUO+xO1f0XNx8LeS7WPcOga1ji+obQt2A5YrTF0nmQx839v5PE4modyFjJMZud0gvbU2X3w8B1a0uv41NOLQE8sjth+PNILyULZxEjU/ufmy9s9wxKCuNm+MeUA/SHoPCa5S90evOO/Ba1Yisgwhbcyv5kMor97opaQ2UNGz2ObxiUVP/VOqVPZVwohRZuNpjnqQVDWiu6Edhe787Fd8q9IMQkewf3x+t8AnvdL7Xw7Eo+QqKTbrlB7A/iykYbTOAd9xUinPzSRUzsQj8NmgB+7JRZSvX8iC3modrUTNJHRvbeGcBx2Cr3RtQxwnmoHl85XMQAcM0ow+nEIbXw/ESkK0bDwCUdNMyFSMRWVHchz8Lo6D4FQP8ym2h1DOypyas0xA6ca3XX9UjIH6f9KaQv1YmLGlIfxhJKFLwqOXI9sGYTNocDT3Awn+MGl//KJGQkHky0KLB9vh4Wi0YuLFCtB7va+jlpyAPoWdfkrSmIQDv6fsK6n58wQru3vydSLisgv7F1GeBmGtF2lfVjWC5fvfBwr+S0BMJnWhflfHYKllUISxIBm24nkPPCsnovd5BsXYzXYoSnr81Ym6j3hxtVk8JwYxZaVXcLVSOeT3N2k2iUrgOH/1cl43tb9O7ey6pzVAhBrKv0Z9X7/cbjXu/RONyrinli98oPaOXeWvTHkEzp8GDo30Un12z89XnLMbChVU5c1DiqH6b7riWRMc4sxUsulvGoUepaWuBPFgwD/48l20m4Qe6xVv9DGMwaVI2SgDS0+w4NbsNqIef03/yyS7mAwJD06oCFvXw/4sj0Yvam7Q0zXYRc8Mgnn7pYxeMwrgChM1tK+Q0JbWdMMjyR44btGgdzwxFHyZJSfXeJNQasbRhzOe2ZDyRfyy2Xw5PDupK2MWGYsk/oy8avk6CM5d5ffe7SsFAkn7RqILNQ8xav4j400g6uHPULtXC9pxd4XOLceh/Htplrovw4Dlntz7lwr1sL7J0F/Ug0XiiucG5IoQnCgXCXo/0Q7WQtP9fAMYNFJw8KnnwybI6NTIfb+XB4dyjczkauPQPprFP1rbg/Brx9v2vFg7vHz1vajfgoQKpiLCCl/UQbzXCWHBX63A3t99q4Ob2o/fDKeLtwvA6TvNd7pkPPwoExtv9otGYiPKxOA7laAoJd2i5ZoPxzjVL2ezxyB+2qoZ89oJuNm+yqVwJguyNuwFpgJwqL/D+uRt3wY42v/H3/FbB3gZpYksHYpB1XcJS4WaFDBMEDh7hD0fUjd692TZEtFDPW7dtpYeiFHrXR7ZJsNqsf/MCSU8Kjl+Umo/tY/4PKtuibSVwvS/1B2bSzg07BBZsjhWBapvM9RDDzVAFGfe6iRPDOILZerp4cwDJZcHXcauHXDF+EBqzvMYxMzHNiP5Mh+yyuZXzO7VQvbtQLO5n9FoyqLLiH+gF84LeX+4e7wAMAVK1+/u4dHnQAuVQuVKKHnj4bewUg3Lw4F+A6pRqOwj1pOjox9Sd/tesMwiMB5od5vQJqL2gcz9x/9VAf6O9GXhgFzw5PV4J3M2CgVNssXfXMuD5im2u7rmFUAfrfhNWy8Gdfs1ORR/GYZTbDsEHTMES7SWCZ17JORJw/1bvGkA/gV8PJC44g43yY3hXxOIKNZQJ4JXpQIYREuSq6kefONECOicjkINNb5VTJ59sHOkiFU3KQccZveSlH0IaMkq5/F/z0ZB6Lf0784ZBL+mCw+47xLR16CT83zHR2F/5kyN+i0yCGsGtjBxktCzhPHbnwwGoUil8ZsMKoWZpA62IWYSUowfua3OMwgZlbN/a1yKgcm/iVSxj4SmBGPiG8U7wFiJ1XFVEwvfeqPccjUTkNnhNcWDmpXwcmnT8rdCOaiRv5Ck5KOQSqBY+5/lCrAdvbXLcgPBw++vpWR5otBRa1iKf1YGv9R8Ar8dKYP9+x6k0QjEoA6luSg1tgGwL3h2yyCoHl53GjdUULmFofaNlDFtJTzT5p2OMK6HR2VcDLxsMYj3AptrXvsgfHesMm5hpcBz7OyLcR8imvU8M8fwow6EjfaV43gioOnwQ+n269HoOYuIHstIPTRiHn1q2HwCP8zGHns2RqO2Nu0BzWvtoCPsJ4k91ATzqkOz/Nvx6CdDi9up80NQmL9yPYZcD8Xll/O7n5GQS/fCJctjqRAdnd2MynIBQsZfxGMTULN0muBzzSKwkxf/T/RHKXw9OUokuEYjme6yL9eKcsGdd8IsmyYbbDmLWGcmYhBY1lnm+I7B0yzfbqEs6vxYj66eciIi1xM+D2wEBkD5Q9RfaZta2HZ/ZWhXREAMgULXK6j8Sfib+VboXCGw+n5SOpwUjfwDBs6cdugBflzxrFVOK6wKhj/nZ8Ajt/b22VO21LzVNKlpMy+Gi9/nPYN98SglN8sqQ7MHhg6KN8QcIENT3osE4ukk5DJru5xp1g3/0V5n/jDZAvK2BpcUqD3lmns+LiA8Cz6faahz7W2BGdYqcnFmPFov+ethdr0Fig+qcrNIdMBjSaFzFlQ+KY2SvttwvguGLd9tm/AgcDxznT7SG4f+JQRmCiwjkLG0OLGYXwm3bcPO05/HIO+YA0emL3SAjOd/fNXnKfBNo+xZys0ENMGp3GlsmwsF2m8/VfWlQ8Eb5YWf6zFoZoXlWUVeD/TLXnNviSLDZYLSuIRpEupISKz4Wz8IKw7HBm3+pgFO996qrS0ROfxnoKd2rA84GLFxEsktkCT/ofKXDR61t1mEWecOwMM0My6eayHgSnfsMl0tEc07MSadE8iHA6m5jZ+qG4BeMc7mpFgMKl/9s2NwIh/obt3upKVpBtPJHO2fA7FoySvjsaVIC8gGlxNYRMshOFGHV5ctDtEGJnBrbE2A2gnMAVxNPaxyR1r4N+GQg0Bx0QsJL6BbLLk1l3cfZPdtaFdmY5H2SOe7tqkJuPt17TzDKRzIXEr5XbeMQ3cwUmTnhVFY3k0yD3iSDawWYqJcZBJSk3tru34RgY32l+ks9iTY3puqxvUlICId3dK/rV7QXlBbLuCpgHOVF1OUWQnomafBi63cVvg6oCmKUe2Ag6RY22K+BHTkaVloXnIr6LNUD+jeyIDNAb36YwtxiFJr5fb9Ux/kRB/0+EMJBh66+I/ztQT0QSVKhGesGyg+L59jsaWwuqyptI+MQ3y2G6NWF9rB7ZrVLeV77vDskM7AqQzq9ZtZu0peDMMRbfsfIu+r4eaV6fi9w8lo4IZuaEx8FLQELrG+CGyH5cYNU2IcFomGtvFVDSMQuN/ucp2/Fv62ng2mzhDJGFycWJDoBcbd0PgLD3LAapK+hYWAR8cp2klPFxAccOBO9bjTAPaT+3C3VDCIEhxap+baA4L3Vq94u5WBAZ277tKlJDRuGUT/nacB/haxT8WOVkGOQcNnx4hYtCZysijEYRzCobozvPUh2CoYjRxSISB7I/tfFz6MgtJy1LzSpSboMtun0TpAQiJKTZw0v9qgbP3Hg6fSOJCkybvjTIlHQ4/rzLpoB+GbXYQdkbEKjlZX8Z0+RkQ4YYLZ98QOePCyzd5VtQlMXmS733FNQKX/DVGYZEfAp7ZUSNGrBRa+tmkonCCh66o/tlVKUuC1s5KHdE4b/DYpnFDYl4DGpDqdOaAYYucuP1r1y4K/0uq+Sp0xKK2wiT9loxz+7i9m1dxoA+zOKVfK4SjE2dUsG0XtC9JPaCjS7YD3O6pyB+LwyPjyHhv7YifsY2xiaO7wAgOJ9JwGh0SU7//f13XxTnAZ8pPYP0uBwDg5S92iRNQnUvdM6ekErLQc8CuicqkSmes//9gkxPlLtOes2hgc/G+4tEidBOP2Nlmf8ST0w9hh2Gu2D/gfpNKMS6eAyBvD1Ce5BDQkddhifLcHtt8b9U4L1IERIW+fTGoS0vbxaFJOrIMAY5YGAfpO4J2+71z3KQqN5T56Jq7dBGK/cyjlJTlwS7jijmtYHMrkSHo0190L4TPIaF6vBuZTzH9a0BCQHul4+Ukq112w9U4ppzTAu3zFqNhxDHpuc7pX6VY/aA6c/HzrbAawubP1MNERUeX54JGKQ83QbZvpjl1shJKJ2IU3CrEo4ZX9Yt8SGeYr67fY4guhmMl9nXcVg6ArbnCIBgFd20NbdqZG4EoSIPCZYdDE1C73FmcPqDmGnvP5mQAWPzKrGslJ6Jui+5+K+00gsMFtwF3bDJF8+hTerDgUEIKr7Ysfh6zAeLGiwxT4eIwpoz+egLbe/ps/tdMDXoTkTvkbTdT+lbdWtMSjCs3O4hZCFrzY97M1lMcD4rhnb2KvxyO/UxeWazaHAD/N+YxVrQyEJV339vqJSF0kJzchdRDcJDhcG+RzgJ6RNZuiS0K0QXvHqjd6ITtruK/7N4Jov6vWLAp49Nig+Kb0yzGI1bjqIvMhBXZGinv7BojoWmF8dsX9bqClK+NnG2yAuT1Dv1WDJGRw5zVmipoPv5KVv6qp1ICOeH1r2hweDc8IKZDze+BcWjrHN0wOPJP/WtuojEcXOLleFDAOwPTqOkN5J4I3BVKMZUQCEseHXl581AdZo0dJLxxz4Ybgpxxj6n66NcYd9n/RAPr/cSHDt/VQnpbBLXwuBg2q/dmvdK0N3imrMEq01cCfRdPcAL8E5M+RdG3lbzdImFlHypa3wd4X68iINzg08bxL4e2ZPGAxTVZJWq6DmWbsqjeVD4fdRKuF5/qgVdlYcciiGF7ZdvjndxMQW0apXz3qg1pxsSuzzaXg60Z7fI1AQPSMM+cxzVnAvf/aT/LLevAQFDn0xTce/XDdHvOxoYC2num+HqFS2PtTZrirgkXug42fT2b0wd/YRi7v7jaoanrI2oehctqVrenqrSKITlPMM9CqATqu8qok9mjkzklffITOE3p/WI8pfCwG96m+ehqfRPSfCD7ivU4l3OR/9LjRPQPOeBruU1uJRFJkw1C6hhJw9y0UuXKHAlwXjH9xJ0ahX7d/ah2baYXYhMLQ2YttcN7zv4rDxgloGR9fq+bYCAEgz15YXQk2bT6bfI4xiJ69P7pdeRLmY/ykXl8pBy3+AZYsHNX7NFs89aj+++TP971jYxGgyUt8MkL1Mv0m/7UQmzF4cE5Rk+EuDk4+zCDPuZJQfPP8OOExGYrlQixaTqYAnfCJyOAUDMrQKV86fWcYbhyOc7YVb4eL/AWuSRNEdM9ER+4erhsKfJzC+oQRtLZ3+wU9SkIxLpPwcv8AoHTmb83OFBjhraWtuE9EWoyqLa+nauAgQ2sMZ04oZG5+mJ74Lwbp28rlforshfW5cmUOh0o4IrfrbTCNRxNloVnR8+PAb3Vgu0Q8BAx5enJejeLRXYGYpdJFBAacuV9XL1Gg4UQS/eIeBr0//aOW9kgHEKde7wm2F0AUU+nVp9S5SQp8UPK94AkRsluLV50RnCx56zX3IBHdKBhneC7ZD49+tFy8EpkL4zTRW3pMBNSap6eiVdAET9Kd7xta5sCltF22OZpYZN9V9/1aTDe4hCSHd1jlQWDDVOqkdxJ6w8+aEWU3CB8i3m+tPHQHi++czs1/iCgm+cdwhSACV2aP9kH+Njjtn9/o8BSD/Hk+ZWgyUWCSePstuaQFurfN8K2/MUjfL7PjMtWzqv6QVTeKW+HL8K0qBhEsOn5B/UzNBtVjN43GE3rbwDWoObIzOhGJ298TkP6YC8LJ8u2ajI+ATvHwB1u5OPRoYMr/0B6CpjXslw73RzC2zccif5XqxZ38I+LZXcCc+euAQH8OUO6ceFv8MRGdOCAz4JPdCyynZR9+Okrlh0NuDF9Z8ejexW0BvUoKxEz+jvM5ieC4+s+un8qJqHvtuoWs5iQI53Xvrfq3gK3ZM3FRAxwK/nzIfYijHjjsrvCfnK8H7vJLjR/pY1EqfEqyPpMG41KnNJcOVoOXefqbirJ4FCkTlB603gvd+zLYj1QR4fkNl+1QFur89b8Wlf3MBXuB0tv85EjozDz6y1kvDuW6hLw/fL4PtM7/xeOo/njvdZeVsz8e7Q0+2//XdQIKzjBsmlwvB23h/c8OiSShTlGd4psqg9CEnuQPXq0GtTMPn962IqI6d66Cn5/GwObzqfmd6A6Ya1LSePeLgObKTH6yqE9C1TH7SCenWlh0x5k2+ieir7l9i55RTfBOToO9OwoHiaY/7ufkxyGvbNUwI7pCSF0jZBuNJsG8hd2NgNuxqNaD9CAtqBNmvzj9G9yPgOwV4r6zloiM1+huv88YAiNlBcy9v60wPpUVOVBIQiY79cd4GlvAe3F3mv4jGcBhhRH+xaNLQR9W1YlESP6WW8SS0AjdNkOaAi4JqIIOq7XD3QvmNku9DPz54Fj7KtioNAk9/PzpttLFSWBfLNK1ng2FMdYgFZu0ROR1IGbaJrwNyJW69e0SZPCJfrXd6xePsoOXDnupjsFRR4e3LQM1cCRLgvEXloQUeL4w/fjWAw5cT4zvr7WB7qsvbVkP8Mja44/DK/MokPySRt+JbwdFLU4lkVkM2gqpXHzG1w/JosfsdAKoXuz/iT74IwHR0Vyfa+vsh7Bzr6UeizTB6bnGUnMral8sp/zakcuB439EPM955cLcx5shEVtxSN1LmTNykwyckcwYg9FW6Nhs47CZwCKFC9vXdjXGQGnL4a1LdgZ8iHQ2l8gnovxchStBTgPQaPMyOPpaHvgLDi70lhPRYJrOL3aGPmAkFXMY3WuCOxRfpTlDPFr/j/2kjkQzCH7T3N70C4UNq7XXx2Ti0W0GN+Uc7T5wffxUy1+yFlTpjej5wvAojfmcefVsLzzqOSHSS0eBSx/l405L4dGr3eD9Ld3dIKkt9uf5/g6wHw5KJBKS0DtcZH52cTjk7+XYVhwugoRg9F2pDoukBc56cra3wZuUdQYGlhZIDzC1cihIQKY/qA3GPAJWbR9ywoerIVz9zgv4SUSFUrpr/ft6wcgtF6ldoMDV32xxM8QkdEj8kpm/Xheo5xoNYs0KAF/QNvGgPBHl+swlZxbXwsYxEcGPP9sgoFhqMiczChkKYHLcJkKAdDyW89zlVpiefK2JW8ci26dDF6N4u4DgduF69QACZgHGQrq7ONRjHnIpj3kS8i/8Eb7J1Akezld3zz7Hof0P+XW60sdgoWzgTd0lBMYaB85Ky5FQUO0t2QhzTxCcaz7Hq1AJWRZhZgxhiajHiMiqfaIfNCoMldkp5fBfYnL/Nj0Bzbw7XOpk0A3kzH3+H0xygHfK7b9E3SR00p0r8dpyM6gPd+rlcFNgo1VlbHo8FpGaVF0TYgagEBP/3P50HXBl263/miAgcpZY9LX4WmCOLPuZJpgEbqE0pxVvR6EQnrv3hCSpPhUxqZkqmgeWARmfnCoSkO5F8YXnpQjOz21MVfbnQvLZ2hEfRgxyd9YwvBNcDWOX3qg4RVRCENdo/+r5KFR+6/0nF2I/eFxZnxsIL4WYhaV0DzEimg2VYfox1Q21IoLhNFNNUFeZUZo3gkPXMPetPA2ofbrtaPuRHwfXOIQuv0shoqPH5QtnC59CO6eKRnBmB3zb5Tp56h4W9R2N0F052A620uGcoVUtIB1qNrfdHI8k3sgfmFLqhpTYZpEISg64TvSp09/AIfvRwTsVfu1gddH54rQTGdRE8hsTduJRA16fnjU+Eyz+O+un/TkKhAJO8SqVxyEo2bxyOmoY3lw7vMvJUQkfwk5K6x8goUcCojuevUkgmZZrVKpKBnYRhuar7xPQknIH2mXsBQt7ia9v81thv+zL6+bZ1DwZ+6ukONUJWD1XT8WHTcC5/YJgapeIAgIzefbukuGlps+jLFccKLHqqoabYZHBTjPX/opucOO0mXehcqlXxcNVvzocEncNuOPC1AWHmFpvK1mVg9VuxjWukETkt/32qr5cIag1hNu4nS+Ce5VF3+XOxaL4iiw1oG0C5v2Ks12RySB9SWG0oj8G9cpYcJpaTUB+Jjs+5RcZkjfNDRl2kxDHA5rodq0J+MpyUHTQnwK/Mz/6q3PgkWIJtuR+MhaKLL5nai8+B/eV+NIfRzHITonpGrcIDnzuhCYZTD6FvO+aoW1/E5BBCUO5Y3UJrFDiVJqONcLhvcWjj55EoaPvJM+ubz4CmYf4wBOMnZDR1qdKX4RFrQ3mFoTOYegYF/2MsUBguLTwhFWVhGxrOnFMDPkwL/mDS96kEFgkM5/KDcYi5hCSR9GZQsjy1yuc3quCcIJ+U4RtLFJbkJNioqNynoQKAb+Lgxlx48PFTgmI5vjpka9SCOR+/xwOU2gBezYxvWfRGPQvqjJSQpECB5pCA6LWmqAgt2nO6iwWvciNeeWe3wf0auHWd+ZawJE/Y1aIyqsutRgQe1sMf/Jz6bKPxEP/2SNO9WNRVB4Q5G6v6QTJ62mCUa15ILZTIe0mhEMGhNHWT5Xt8LPngUqiey5o3L/iLiRC5fMyTjU6cwQB+Z2nb95H4JSBV4qcTEDrKxe8Exx6YSgvcDcnuBaCEt+t3v+ehESfFQiL2Y1C+62Gs1G3HsLZuITskT0i+pD3ZOb20ChEEXhNHeY7IPetus71ZRJi+E9uTf1HP3Sl/XsXHtYO7Jcnrk55ENHUrv8hf8s+aDGIH2s1QHBBMvjm60A8Kjq2M+nxfgLolC3DMtoy4ZfQ1YW+39Qcaz5kKNg+Bn1/xOI92tLh+3LTzJ48EcXypx46EjAGzQxP/Jjt84HekTGJNoiIaulsVn/0jECXvqva7dcdsEoZrur+SqTyxp23GmWFQORcFFvirgMzi/P+SQ+ikbSG+m5U8SCUsyfonUmuBLN8hRw7dyISBsNZbgcKVCgtlW2+T4E1enQvxgiLvrWpKToUNMM37Bcn29pqiJN3YxNTj0cbSxJd80/LwZh8mybtVDp0tG0w2pZGI/bXqXtrb3sgRP2zt4dLMXzHi30eCExCfPu+brVl9cJrhqd9BfkI6jdKbDzX8EjuvfmHTI5BUFcm//H63AiNLY9Vbf4S0U2Dp/y62tlAK3ylp8C1DTQyhSP2u8UjDy7jZCyVf2TkL0U7s9bC3C5ehnaTgFTsF61vJXWA4J+Toxfk2kGPH1N2VRuDRj81qVRQ+f7++QXuHwIdEKBrSNzxx6AhE9sZ6W4ERzbJK0fJzbB818R0YguDCt8ZPJDsbQapd4fVq5aywE1kLlJ/IhZV3dDUjO4ZB7uFDFwvfQ1InB0r/aZMQKne4vKdl6shL2N1OFvyIWhvhlhiNaJQxympkOwv9aBlp33/0/MKSNPy1Za6G4toSkgO+kIN8LixwmY7vhlqrw59cNeNRf0WHWwh6+Pwxv58TLt2M5yTPnPUtA6P0jPyF3NvdsJF1ZTqlucF8FKLYNI2mYg+1LqxT7/sAhmeI96T3ygw1MCfrs+KQ4e+iHp6V3ZBiH/6NCqnwFs2jOKXehw6y9q2Lq5EgVnR1kuYhYewpnjIpm5fItosZI+NpPrbAfXH5xbEHoNP0E4ftykWMa3uvuGoG4CNrmS9+CeNwOrzOnZ7lYCCUpkiSRXtcIlm9dBJ2RD41ksnn8CbgHoeelbXdA+A+cOD2rZ5LXBtpfqBwRQRlTx5xPq8fxh27rQq15VSeYPr45bIAhH9+Vf9XNmxCxSO22wbMKaA2Bc6r5K3iag+lusl+tgLvCr75eVD26Dd7jnDcVoCGlm5LGqs2QCkFf+HizfIIHbz938Bb6KRAWcj09ujY2CEv7l9v7Uc1C5ybHuWEdH+XePAvGfNIDJlJ5/jUQOKPIFHU3Nj0S2ZtBxLETJkPTFlUbeg9gW7FdbUDIM2Gsbblz9Recm+7SNWCgPvevtLnh8noN3rp+rErNuh5xucGqkggvTbI1cvvk1Ax6QFuj8engDWhBjzlcpSqGwG1gEqdxHHl4UXf+XD1iVIq8BjIcpT7b7052ikYpOVon2jF7aHttjXTcrhCkvfd8fpJLRqoODk+2EMnrLLhnMb1IDD6su3EkNEtNbjbhKPaQIN76VUVsE6iDhgTlsvGItCBcczqq0LwMFCvPlaWzt85/0n9tUiFgmXJZBl+trhFucz6yWzdlij6PklnUxA0HMi2uHJGMBGoOVJUTKsECg2Y15EdC0y4kBNbStgfreVFLLEgcXXtSsug3HoFT7r6WPDCYinvz1cWJcDnYl0V1g2k9C6HJu71msKJA8e+3TGuQxMHEPHXudiUcXh406Es7UwUiLByH6xBAoc2OtO5kWhi215Wml2/bAz0PMhj9r7rwoezMkyE1Hf6rkQO/UhaFzyif1n2AKtvCpjylRuH//9LeSxYQ80SXLeb5VAcNW1mpZxHx4RdExqr/dWAttw0n9On7Jg0FqCVUQyBv1wzpnokh4GrX9YpRhqTlJOezbRfSGhlol1kpc9GQz0xQ1W7+SD+7xaMbLEotR3tudSWutB9Merr6cv5oGF7+6/xfvR6P6puI2xujqoM8xQsqf28ofcvD9Gp2JQw9nka+aXBgGuKPp78jWDvO19/V0hav4vfh24tzQGcVqBujBcBTp4XT/aPiLakyd8D03og+5H7L4RDXUwen6R8WMIAVWZwsXnUmMg98R4QYKmE3reRyXKGZNQWbkrpX9tENLtVm6INmFh+6NYaxM1z3tCmq/vcy8Fhn2Z5kMKdSCycYf9ZHYMeu1t/ne0tA1U+ZL05FqyIXng3kH/sHjUKWJ7PflbDnjTbdz3d0DQnXo0l78sDqk8VZWZFx6DC/cZ/S2iMmG35HL992ISOvz9+ELD3wlI62XSpDWlQDurs6xSCw4F1icFKJp3gxENP+ups22QrMBcO+yMQ5eEzz7vLBuG9ZwL5q+jyPBtLFPh6R8S+i1/NGhqcgxOaNwqH9zfCctWYtvB1J6yKBoYC48ahWO912NpIpogcr9d2P/9nlDf9iDr8PcemHPC1o7SZ0D3rL6XP5XTyMNaE/T+bRBIqqfepQFyR1seSMcloFMW0oE5W0Ngm5Ws/1yXAkvnVrnzXpJQtv7JZxqL+TB8jcm3+KYHSDHMM7/OiUWHY63oAkMzwPOX+JrGTCvgm7xYTJQTUHglpytluh1uFvl/Yk/Eg03Z2aDBEwlo+gczQbGqHqRI9kqumEZw55Lhtr4Wi/wSGNLFIhqAqcmiz/NhA0Qtp6Tz98WiYorzRsj4KDja9Maub1KgJmjj6MoiCTElJ0yNTlVBz3dD9a/kVpCSxJnu44hBEZ93Mq4WDcCrG5cCyqj5Y9p2kCmE+l7r5kk97V5qggGHg5xDaQj2hW6MRMzGociG1VcGT/vBh/jM0up4EzR8kFT4x0PlcActt8NfhiBz1+iloWgI/OvRCDXqISFg31ZwLyiBv2cMrStEckEuQSxALjcK9VoKjvAtdEIaQWuhZLkAeG1r7MfFcYhH9qmo/LsxSIu/Upfv4gGZLh9958aJSEDo3xe7sB5gy4mpCXueDyNZ3xuYFZKQ14WbWzf1yGC9V2j6MqICNIwb/KsfYJCcweOHShKTELiD17KMy4bbVRecxYJxyD07y1DvYQsU3dNvXZeqgDzzDHrTnHh0KOXKnadTraDPyHQ3kqUZmkX+UAz3x6MLh3WMrAUb4e89b/GVimyIdfMnSfyLReuKJZPK2e4Qa5V0TEeYAmIzT9LuUD30mnyXkJ1GP3zuPHVB1KkSHv45Z17zh4Ae+N4TYdCaBF++OhsHsxKIfbH4b94YR+XYr/yJMAwZtkkeWs9roEjKLr3nMAkJ0cunZVp0weV4zvRuQSzUMj18RqxMRP13tu/eqaHAD+Pky581yODVxRDkeCcRJSsP2fwyfApr7A1PBmebwaBRVc/aFotwnEs+tVq9sCmS3LLKRIC5PXZLgVdJaPKb0GvhL88hXNvHv8ejGmJNpPFcDFgkwx4RpaXQB8TNNLdR53LoduQ/pn4fjwqMFxZ1yj3B4uVFLnXtGjj/08H6tHsi0nVA8kcfNMOcCNfxZvFGYKOcU5TWjUeSJ+t+3w7tgad0LLjMHwSQjlwbbjBIQqZOqeoRtJ1gfI+DV9SuFTjG4uyfVGJRp5ZLJnZ/P1RFNmSE7FBgQIdHrAcREPO1Du30vEqIYhSOknNtgKcqZFEcTQxyfV1fW21cB34+l/o0rHFgjMdK7oVHI2H3rLUnGgie6MfkjWxXg94juxMaLQlIPUy0oPhOOuAPrmDkPZthe1ZQoEQgHp0m/23uILcBWeRVerVBOyS+O+z0h5pXmJvDBWqXhiG3jpndQKoVQuvbTFmWqfz5SbOzp6sfbJvSzr8/GQKvaRivgwE1VzHFHjM9jZAq+bGgMSIG7E5MlwveiEPuUhw9+bn90PfOW1eB0AZ3WoaD5GWJyEml/lGwSj+4xE50ibW0wWr1AAcfIwEJm+xsPBbzANqsLlfvX2Gg1Fk87FWFRZFJUp5PosehnbmZ19eyDg42vKGt2sSj6OFHtGX9j8AmLIJxo6kAroj0m72rwSItcU7TpwUdcM/xvlrMfiyIT5gY+93EoIGFG4E50y3AM63VvJEcB1tjzz/O7sajq9ybl/f9G4IkLtyZx+3VEC1+MCX8HQn1ldwXDqYhA3/Ci+DAA40QG3reLkICi/i0Et3qrIbgpykx9tUfCmxEHOutTyUhZqtA0gOGTtBR+7C1cjoWXkpoHctLSUQ1Luo2CfRdUPRy+KJHHRm6uK5/MHtEPd7CFJr+sg+Ymb9NmjiTQf7lgst4JQHd4suJMc2shGtbwV5NRWT4kXzJOU41Bn2QX/FqPFAJp1f/tE7FhgGvIivjM90olK7Zc3xzLJfaj/Wbj4Q7INrViHjaOA6tqsbrCRWXwOVoBn4vyUoInM3CRZVHIY/p3tsLUlQvm/3X09qaCs9Nk0+WUxLRQJO9uHNQLXzyOs/rQeWWBzTVJ5UxMei2yQnOla0xuHl5QrzaggJ/F+hdp7uJyEQAU8J9rBUKjHKPGbKR4Z3jSGxMYhzq6ZgjXl4bgtS12dcKzDXwpI3y7E419XtvpnVgv9AHoGbUX5BQBc2ncnebHfHI3WRLYj6rC6RoyiWNXpXBPUmspSoFh/LeXnJpF++C9wGDO3s8uaBcKYK9Fp2IdMJ42vddKQNvL/UcmVwMWPr69E4bRiES81yYmlw52LWTFK2oz8mjqRbANx+NlJbXt96X5EHjs6qLnzAp4PhZTZ5PJwaFMV20ukrsBvWFW0f/bubDv6JLxZ9xOJQx8IKLs6IbNk3uH3Cia4WWhndHSzJw6Pbzg5vFc80w+SlE/UNlLRToxH7Jfh6PzuNM2zfsh+HR7SMRDVR+UOY4GC76hYiKlCVOdKU0Uff7UuoT61g423I1tmk5BmlDmsHQKTJ0HyEpWutEw+zjMxs8tzAoUCChU3a5GxIeKLyPnCSDTS3+2Odmal4NtYmK7c+DVY6gnpX3zWAY++v9KbM4tO1TEX0pnwJyHHaXedpzoDiA3X72diKS43CZq6zsg+oHwpaNdOT//5+3w6N41Mt2597NuBG4kWe4phhABJnRstA/tMlo90M+ReDROAh2Mgjd0yDBZu6vk28OEVD2mVdl3BlDVL7KWnOkfo7SIF79Og8Saizdn9fVRoYQT9epH8fK4X5YJV8ONf/Tm1TNr8wOwp5iZEyiaBtMab4v8Q0goqU+r0ERoUrwUOV2/buRBmmHzB0fG8WgZdNyBiylD3w92cwbatPBy7qt9mwHdR8+Wm1OhGcCzyHWpNyaFphdMmkd8olDbduzn1KIRXACr7j9OqsZYvtMJwWko5HbNfK+lqvtwMB9QfoKTzz4HzWMy3+fgDwKwPtUWBYUmeha4g4R4ax/Hxt3UDxKrk3Q+Ha0HGhIb+WkddyhM+qxl+yVKPTzLn5CwoIMT1mnSgeTM+CMfRrf3wAMSgb52AW7YeD9oXKr26kJPN6c1slZI6EGJGh36FE3ND4o5PAYa4DdPs/0biwOzVsf3VgnjoFUZV33A+dWYHn9l+agHRHNik8eDFrvhkU+WdozgSQIY8wxXShNQtOY0taNtRK4/4qNgzUtFE4nvB+QJsWgrGJnQV7mfth/1+vu6dImaLp8SHLzKx7Bd7O33a198GKB7UtuUyN40dS4BHTiUeq5vAyji5MgPvdpyGIbgX34+V8HIhORgEPam2C7MVA3cGeuwzaBKtMjvzYMESk4ydGnsraD5va3sIBXrfAz+0CNc38CkueROedrT4HGkTdE6+IGeK57v79KC4v8B9Pf3pvKh8WUIX7177mwHKPMK1BC9Z0p6fdxzCGgMvBW9vb6fdj4rC3wYgmLei78nDx2DAH/Z+/ob4zlILR4PU42GINWizWehHmRwfnapC49vgVqNpIVJu9h0RKjR8oQNwXq9EPDTyc3gGxIwC+6BSySliYcxx4cgQ2edlevvXroUtvnO7xIRPZNXhdWTUZAi/VW/vGKBrjJMOjFBVTuUi//6u0VDt3Xic1LttXw9VyUInkUi8rNfGQut4+BQlCuxjJjJ6xUzg2UcJPQx5+Sp5dedkDxP4tCeUUKrHbuOM/ex6DEgN7Qu7Vd4KXdaH3hfhHIM89vbQ3gUNqGjaALphtMtU3PzxlFgGxbSUtgOQ6x+STO4YLIoJfWo1/NQQHpnd0bz6yxKEWw8sKjV11Qe/DA7YLj8eD2R4qdbRaHfka5zUQrUODXQE24PJ4M6hWd5K/yWCQYuqY41VsEHvn3DNVSyoHraFRa9e8YVHeIY1SCYRQy7SemKlRygER/i7X7HxFNV918uBj0CFJMlZqKqPOxfCzHKkvlE7L+ndKR1B6YQG/S6PzqYeMSKjW/moT2sr9f1efshZKGQwfmoR5SMg41KlcmIXnsvw2JKwiqaxw796zJUB7f9LOwIQEt8x6r+EjlQ3G6uwezMe5w+pjgBxHzBMRof5zb6Ok45DRcNobgGpB2ZtPLouYGQ1UDnhsmQcxKuAbvmwmeLzk2X13FIQ8asdGlwTHwfRlrYe9G9QVRGYYYNiLiMtKgzTfvgp8Zlcny2EawWE71TmxKRI6OKhvVsxOAoy9npGXJAfo5/phoaWoOvztppkWcAFX9m6kZ16PByK3lV8k4DgmwX67vliRDtVNlOncIBXIcda+lWmLQtxeSLws3yIAVkPljzFAFjEe/517uxaLGtubdK+kIwDzVd1q9CV4nVtIm/EpAM1xDF36cIMPj+ZOxgaYITqVed0y3xiCW3WQ+joAaGNyvU8fv1Qxpsd7RTQpRaLKO1lD5cS/EvF2OYxVrgvfFqqTOyST0McpuSyysA6pHDm0NsFfCreF/a1aqGNREMdF7fK4V/jROGN6Lqodj5rzprQ1x6HaG1+5TnjEIHvkWuHyoCvTP/LwyUEdCMZ4B/y3ajcLef8s0MyQKtIkr7dVuUfOkY0s/TDECrkZ2Cqyrt8BPK8ObZd1Y5M0gdG7lLBliJD8fvvO1Gr7YnZU6cBaLnEIZHMXiW4CkNvQoIQDBhbe+zL+G4hGXdqfet8Q+YOy0kt7do3pTzN1TPhV45MJ0I6JeqB8y+1MYBcM7QNPX+ROJloAE/75Y47vTBks83L1E/0Z4+iyas8w6HuXX/Vu5qDYJfENeRUWWGcA9OXZOjJiIjrcyHax5jsDADT7FKBRA39jR8l8TGDTCkpx99lAftHRNjpH1EWQpNYt7iBNQuNev9JAXFEivu5+7/rQS6I5Y0WU6JKIrTm2sz8aHwOifpgrfwU4YqhW48HOHiAYZxt7IdvdAQrA7Gb6Gw/VVEvOfB0noyjkXnintDqi4nt3vXpQM/flhd2UVMUiIPf5V0a9haKFvC7IPq4dv956PfvhHQgEFR+aHhqvA0OTeb2sZMpwvqO4+yR6DrsZ7CXCXkYHi4nDwae9D2AmdS3BrxSDZmqsrX2y6oWxd50TXBgXuPC60xxomIZUerjqv3Q4oWOwen39TDMvbJ57WuWHQqBrdGZfpCbh57lxzT3cV1J8wt9h3EYeupSn8hvtjoB1xoJIxNBTWS5R2eLyJSNpSrkzoYz6c/BwS/uM7GVIH3X4O/I5GNet9amQyGTb8WPctEClg4Xnw43AWFj2eiG1VvdoNMomctHc/BsLvu7zHzt/HIe5v9d2nLjaBX0+3xG4igh/Ov94P91P997ks3/cbPdCjbu1w6EMDfFBZjPi9l4R8G0sDFC53ws8BrmmHAx0QKNddlTqRiApS/5u5x1oJ/VrPY+Jk2yFGfeBAn1IMal4KcujP84HZ2PyjUoWJUOx0I6g6CotMm0Q2LkY2QLCY9bMAq1YoqSkpMO6IRtHRjJ/+9uXCm8uybjVpTSDbuElDUxODhIvjgNtiHFbo7W7I1jZA6+Fu31YdAjI/WzJa0FUBC5w/O7J2m6Dj1vWq778jERfxG8MtHBlqny2vtJRng9lhKYqeMxa9DxvrS2UeBim1Fwb3y0Jgetub/fIEEcmNJi1lbrfARJmQztVuLPz92FwtFRuHYl/ODEbM9oK00YZttx61Rxz+HcFyEtCq6xT6ju0FMbsXrW+166EqCzQffMaj5trcSyd88oFPoQgr2tkBj2tz9o5Mx6I6OWn9T93doFzGI8l4LRxofCqln2UloZ2RuAb/u6NwqaFthjCSA/fnWd1Hl0iI6/P4F3SSDN5OTO8vt+TAc50PC9b6GLT152URfVgXZBfpeK9VkIHz+nLnwalEFGg7YPgzigK/oydWTgfHwvK/Dxd+X0xE/o8rN+4VUL3mhyA3I6kREnut055ciEPK/Sec9yV0wYJKxLjFVBaw9SfYXqzBIR6FByvqLC1gJFPcHCCWCoSD4zYDsfFojA1jEtVCzXeC0Gk3BwSDzJbBT7qwSPmuia9JbiMMBZlI1L1vhbKu7VsyFnHI4SUjf4lDKrz/F3flYHIH3HTUmytpjEc8W73O5rNjcGnlxGEloXq4Q9h/9SENEV3kivx7Nqgbbnz4Keiz0wQ1VRzfRZySUIir0hzh0Bi0crJtnrtVBdqz5rQbw0Qkw92bq5nZCa/QMjrzuRgSjhGmFqQSEX3A46sgUQJyqjR+5SsYONn2lJOlOgaxPzHpmlTshZbIxFJcQwd0ztaxvUnHo4OscdliepOwdH/xuFVwHbgseaewGeLQ0gUe4uMv1PuK69i7nK+DIsW9jN9kIuKUUnitOE4Bl/YxSwO2JLi5nrXhX4hFim7nDG6y90JfKpZ/v00zvJH9dcA6Go+2Vd5InM2mXqcn662gfT6UXOlxoREioaDYF3IlByrA9zZDb5tLMQy8uJW9dSoGYaTS2jTCGiDmc66PhHUU6KvXjdUWxiJdOto+D+r5zrl3Z/RkWyEiIo1v/l4Mwt5+HW7q1A8JtNBTSFcA73KUREt4iEhR/q63Yn4PyKyr1M7fCgPRPPJSqi4eyb5iTNLrRCBbcCibZzoZBkxlY5s4MOjTm0G75Z0R8OZ3R1+KK6Fl57+Mym0iKm402PVYaQaWB/eK2NpaYZH9VcKb7lhU1lts7yHaBCuOq+ozja3AnZ6qcYaaG6I+h9geiI4DPklUMn0GQdWop3elBRGNtwzxVUiPAf2RvcIJ60ZwZ7TkVC0iISZTqe2r5mMQ5C4r4mvbAIk5eQRyAgnh7XIUhX53Ab2fdO5ubz68rk17q0eXhJy6fCvDFifAKoODR2u+BpKlsSIq+3BIX//7VUanXJDyiLp6awPB6a+NX5RvxyGx4g2NntxmUCpyYmMuKIH2kKpjOKl41Gq+eoPtfiP8tOnr6yp9CGXz12evisahLOIrp+qdUki1SYfDPxCEHFi2l+eLQS/uMdmNX2kDYbGzwnoPq+A6fwkOG56AJLrCvN8Vj8NhxoYLIeZV8N0iwDL1JgEt+CUkydKOwELpu+UrclnAdbbriDBDMvJ7WXwsMGoMTvpXuKdxItBrtSyZ8SQidplXJlaXhkDmxBHB6zm1UOdhLV1EJCGlb44mjq9bQDt4yunvRAv8GP774jFLAgrfGbv93K4Ggq1cHuVWZIHIlb9Sk34xyIhCn0sYbIFX01F+fvvcgYU7+G9pdhyyUZ+fRSwdYF8h92bsdRPIsfht3RXEoIGLiUWhK32g9fW0fkFdLoizv1p/PEBAb2enxc+ZjcBscYuD49FCGNA0f2u9j4TspPruZuJbwZrAu//rDRIcuMZ2RsgoASnOWOg9Le+CalVHOrVZBJoKZ2ldqNwlw0aeemJNAYrdnu4PtySYF01mTVLFoi2Dw9Pj8lTfzNyfeqaoFDwSWfVmf5JQ5w3tvOOPJuBMpk1wLIEMmJGCM9HbOOStp4f/2T4Bv98P+rM/JYM1Utws409CDZ98S+VVMXDmvPWKGH081KWen3rEh0UhAY/0K/aNAvPLrFO40WpIX9l1f/qJiPCfOUOeRI6CIh/+R45XNTRUazo2HSGhqLi21evkTBhqdd8lciOwVQyM6NqJR1UDZrY5aSSQ7e5K5RuMhSu0ojq57NS+buib+YQZB67NY3wOfiWwU9W169uPRwyeMzsHj1B5aZj/H+ljJrxN5eXSd6B6q3NToaRdHaTzruv5CUZA3dudNypNMajPTVHm3Y9R8MPWH38ZUATG8tNK62NE1PL45kFyRSMUzpnEG5xuBBn2UVYG5zi0IPjsIv0S1ddI8nilI7HAzPRmhbueiP4H5dXoEHicHJh3OJX//8dDCGWFaFBmkYiMSrwko6ioPigrhZBCVpRkhDg40zn23ntv3sfeHFKIkJCWskpGv/P9/XWuc1/nOvd9Pd+v5+v5fNzbGO9AlloqPMBUSZJ7kuBuTJF3YTIeme2dWflimA7b7T8ITC0JcIxD+aqyfySK4jmqEhI3BBX/qu37bqbC4zsXU+5ZktCMc1qNSu0Q5A++jSFXuULHr8wByhEScvzQ0XT34jCcmlyP+PekBG7eNWempBDQHqJFIPZlD/i74g1rbPKhu/OJR/wNCmIqTKXMUfrAjCDq74cvgafFjhXwiYJMb0Q7SZVWg/nnnfSiynzYq65UcMkdg+IbG47zH8uGDP9t85yxZphzLJDtuh+BHL4c2Cp+0Az2L7TjdItTIfHhNb4qdTxy98iTOH21APrVeC3yBJvAdI+Ut8GHMNRv9mul7EQkXHho13A4pQTUWG0WG3E4dG7Z6Yrely5QXBJbG7NKhbCX51Ue21GQYNZ/Sy9ftELYnf8Mw+SKge8iq8X4CAF5SIYD+tgCEX5p4yPiVfBLWYKL3ZSALhIcvs/saYHAvfmtwslN4NCp/BRR8WhMNvXYM5dM0GzxmAtmwoJK1bv67y0RyCxMTys5sQPOHq8SbOIvhUCVhh8bDNFoX4z5q1aeQTgUvzMctqcIwvdLXBR5H4NmHFai/zh0gcTjnyP3zFMgpeBtT5IaGf2RqaUJG/VCqcsNuR8/CiHRnKTmmkVBGiIby2cWS6HmK+Mj7LU6IH5yfHqdEI70uR4XWl5AIBo2w3NZqwEKnnkkeRRikX7D55mo2EbABuYaJNtVwZbo+9Hqr1gU/LuXplbnBvpMp0197meDkcTQ9fuuBITlVEicvNMJyUVbP7gPNkGexu6rB63JaDSygWvrSzTMLPvw2bQVg7axDG3jOg6d/kwaIsw0QzVbMJOlZyN0Zf+Zfp2KR6a2W14nVivghMxym8e5IhBK7l6qVg9HHDm8yVs90XDdSSSS8iYKundUdiS8cIgg3Gui8joUePcHrXtsN0N3ykmh/Sz0c4/NXk78RAWzXhnC0L0GkI1c6T02ikM3X7/4MHYTgd5LkzdRYjXQcPk9T0QWDj3jvvfZ628JKDLsMW21TAGDjs9rc2xhaC3kVsFl30E4krd5P6CqEjTOGHNFPqEgv5aWW7ucmiE2pfLczJkG4P8q42N7moBYteWHNSubgKnGpCO/IgWChCLMyq/h0G7hWydyPDrBRDR/79HzVUC6NTpU/JqMHvGYDblJN4PV/YWdichSeKcYdF/yFx45WBqfpm51QV+3iLRTjwsMc8zu16WQkVD1XY1rwj7AE3Abs7VKf54ryvZdEXg0bC5v1ZRVAFmi6h6TZxG8OavjF2aFQZdlljj+6mdAde7jrt3MJVBjzzwxYYRBLpdHh8S8WyFItlYi2zIQqs42hiekEdHxUWbZiehmOHZc1Zf/RjMw77Jxv+eER24qK7Ey0A6tpWxHmQyToeTrZUmnLyS01O7+qMI9Gmon3mpwd0bA0eL1ZH8CFj1xZsk8ep8ClrbSf7oN8SBsV7a/ygqLsMHvfXe1toAz+736A+ExcOKX0vtZHiKKKuy8l93fDcJ9SSVeybmwERK6fniBjGoFdi7D51rY2JU7nHSBCgwq18oP9kUg4bIT3UqPa4GhbWJihX59LuMRZvFwFDIsP5OhYFED9knona1qJXzknuBc7scgwb/2j2ISsmBMML1t8EIKcL78Gv+cGI5sdoc6OkoMQRqWuwwdRTA7PXRaJZmEkn4PGJ6qRkAejWY3kSRD/BtGTe9VHArahdONYGwAF9772TFsLeA0r3RI8CoWtR1c0XEULYfK6vSnL1PzgIb1Gza4hUF+m04jbrw0EGg/3vd3mwJy1fmzybVkVH7YYljwYz2Epj4cZF0sB5vz5QMYjiikTWHf0E5AMOQzfJ6dUA9UnzLVmREc6sjtPtq63gZc3pOG45+KgEKUk/SmklCOUs1g+uE8WLk6YRD3vRmKKvHVTJ1hCKPjd+pIxiAwmtxm0g7zg5zB3pEBqRhUEPPcoHi4F+60ZQyHHiOBb5SFAA+ioG+YKb/Hbc4gQW211L9cD/KFKOdgLR4FPbHVUv9ZDuePTQWePEaFydtDr7NbMEgZn8qvJDsIdldKyrm+ZMAH195cfBp9Lx1IEP+n2glvJFh3y6vmQ90KnFe/REYy3IohR3AtwDJ7Os5NoRCelPVs7AgR0Nk1EaWukD64NPFj/qZNBfB/XE3d9YuCHqlVhBbuoYHlelLEhnI+sI8Y7chh6Nf3hNm6FBeD+CEO+tcokPPf1TihEobGt9ynLPOoIMv79lfADoJ33+8GhNFzjcWf8i3Zpg2wQyNTc/pESIz6o+zhTER4Ts1zoS3J8Dj+tXaWawNcmtEZ89eJRFeSvPgxOh2g+qSdfXdcCsy+v3u1na5zSZDI6xRjPLzr08zMk6qBlDbMgBoNh/jsuM6k8QbDX35t7TznJkgZZY8VXsQj+UFO8xSuOpC6JhJWUVQLjCfP7LlSFYUS9Z2u1uTVwHdJnod7QxIhxUlTvHxfBBpOs5Q5NtcNzO0VWTmmTXDSaUcnm5GCCtr3C45kV4F/8ANqvV0cfPA9hz35MwKdsHYbjPGoh3dLhQJcu5rggNt49+hkJAqVovT8h+8FjTLXZ2fMECx8LCE/r45BgqP3T+RZdEFv0tKO4dscOLqlaponQ0bEzCEJTYEmQFrpja0Mj2FPhsDC8DksYm/7+KAgiAaHfvmKS77OgYmqf4/+tZPR/T33PPZG5UFXgRNnfRuCBxTdpcuvwpCc/k3rPtEh+MKjw6BNP4cTj7aVVZ9Fo9kXfy4U/aNBVq9DSL0GFZQzv7/kKItGwzbHn1A3goChU0UulFQM6mXikPAOj1baRjK5XdMhOW+Gw+Y2AtxywoROKgYZDn5V3KztgxbPtwsFGwgeDRtUtDPHoo7TB25s2PeAqKAW645tBKTErr3lPR6Dfg9k+K6f7oIIgVOlIfJ0nw0WPN/cJCPJLAUv7qtV8NUHiduIuoD4a7PIG8cwiCsj7/1YzRCsrTpc1dNuht3Ove+f+BNRbMe6mn9+C0TVXxhilqkHm6MDp3qUCIhBO4daqN4LpO/FRqdUY8H2hs0J1xQK8o1bPMXL0QJlOrnmJd8S4KEVS5AyPferHy42jH1qBzUNDhLmUhn4Mju0X3lKQncvH3ztd7QFPhd8vvPUNAY4k0jyPnQdAqwIV823i0Ag7fdAYlQVONxOfPeaJwzxz8V9vsXRBQqGkeTUOVf4lKY5w9hFRqSFz5rdd1sg5sLv0kXbKji69rNT9QMB8Ykf/zH1txn63Rg/+hyshnMPtVgjiAS0KZxWnPC9G/xVGscVXJ+C7vi7HtNtMuoKnm83O06DQZ0/hk4vE2HB9PdyB5mMKClztmOpdRBwNjPjT3Y2sFZed5DcikDOrysOmGFJUGjxx6z8bgEob3nKnArEofGKiPf3jg7B20tTccE/KZD1lk/mWSUJfZh7x1c2NghT7sF6aY4ZEJNfn3v8Hxn5qhBHa11JsJK3/p/BSCNImXxNa8LgkN44i8LyJgXqJq59bhyqhuU/+ceseHBoNW71bzWRnkeU/T4pN/NhdPMVs4twNGIw6Hy4XdUJ6nss3N3kqqDiVI2PxmA0slTcesloTINxxchCWyMEL5it/+unz8MBljvzDqsdEC4r9HM3PUcKjl8LdD9GRgXRokeZL3aCZdIfg8OPmoGi/YO9wZiM9l7/9uLQhRKQenVJVDC2CHy6LbCDTBiE+cfzwVqnFY75jvx1e4NgPh/3n2ESAZksrZ84p0SDgI/a1RLmuTA49nfwy0UK8nHQTZCtocIXG5Exrs81cF9Jhr9qAoee9E3RQiTSoEBsjnaHrse7FyvWl65FoBvuF4vM9vWCmN2s2dAWvefGMO3lC6KgzwXElGQWGpTzah5pdKHCyou1Q+fIFCQe04HdpD/Pn9GPDGNSlRCeuVakkkFAT4cPdi5fbYPCzJrOv2olwNCcfXToFAmV7T6x+OlLFpSF1Fwdf14NOtjzwZ4Pw9HkmeJTexdo4J5xv0/pVQHkxcaXKP+MRmfJ0moKrKkgU6skLPkCB0OhxULP8yPQFwXh1mqRfkhJfdUsUVAD102ZuC13x6LGxRVjtsoBYG4bL4rkrINO9HMXwyLdL6Es9wOss6CuL5XHvLkRPkq9XXPBhqOI46TYgz7NcC+Mw1rhYxEYcV719DPEo/rARCOkFgNn9p7jvfSjGHbhxson7bBo7ZG7qfYEDaJr/qQWCVHhn7K8ZbpCNNrUW+kwPZQOseR7mvNf80CGlFf83xwGBTNcKUw43wPc99NwTL1kkD/YETDDRt+Tk7gffs9SgTVv2PK9XxLoJw1MY2SikLGXZOCbcgTszIt799lFQOdudRUZeh/IPM/ud+EnDTb790nlYsogBSOz7yRXNKKI1WBY2TuA7DfagnMsAeRcKDUQR0JfueBU5OEOWJh4yO6uXgxDac4r69kkJND7xab1UQXUH//N5+dZC+/1VIjq98LRFaGXpp4XmyHcRuTIuUQEJp/b/B3ZCej54M1WpbYmuHYx6HemWiMkTSTc8HiCRV+wunFdZ1pBl30G4zRWDik1Q2annxARx5TpgxsqtRBlxcatyREDeU1i/9IkotD76n78OyYaqCZ/5zR4R4Xn78VYTNrIKF5rjtu+BEH0c7VR5+1GuJPEJVrFjkOUI6drCAJUIKyYyTkbN0IrZ4LvBVscclTLyJhgzAdDAy4P/fwMKPoFZ9QeYtClr1pMMrNlMOsxWxTv1ww1ozitW/phyHND5UJsRgvIzPFuZ7A0QOS78rP6R4jo7Kx9GWl3H3hO/Zz65lUORzGd2mKLMeht/b8FccVW6DkdKHlCqgxGdRe7axMIKIAteLXsMwIRdnpjNSuFLNUyxt0ncGi6QDlWJqAdjsu9Gnh4pwS+8LIYvNYioayAxHgxsWE4dGOfr65ZPRAz3m4aRRFR8KTIg6/YQbBWZVptKSsAL6fmNt2zMehVM89FW8ogbGs/t7Z0aYRUwh6GWT0K+vXQ2CBSdQievqzE2tqVwtV9f1e0XUiodJTkOxBKhdkrr2RGuSqhTPlchtxLPNomZxqw6g6C4R9dvn9BOeCCieCUTI5BzjLiT1waqkF5ebnjq3EzaO5UX9Opx6DBsVoXm4ctcJThVW+ZaTpoke29JjfxyFxB+u3v2XbgvLlXaHgKB1VnZGKszKNRmX1tQ8h8MmR1d9SMTDdCcJr06syVSCSWJjPqS+0Aa1jNefY0Fbrjrlt5rUajec2s1xS7Vpg3nVUTWMiE0aVT9Us4IlIaW1aNjUoAz2b7Cu/2BKh7vOvbPYsoZCBS4uPd1wq+nIdk0i6TIdTAY/QBMxEtPBC3kkwZgPqgn9KiLs0wmp/Fp/UjBpG8iH1jUTTQOX0lPN2pHD7tvMB8w5ORhIdGwy5iKuzstTG9sBMEG5ejQu8GR6DqBdaqIz00INM3mF40nc/gYOgnNjIKzTrP4ivaA43HX2YFLzRD6aWvNJocBR1v2Vc1GUgFasr+qf6xHDDJLW48F4dDeIyPSZJRI+gF04S5VhtgKGvs5J9+LDr8KSrup8YwOO/l8RO43gAl0b8yeF8TUNcE1FVm0+CM8H4ts4oEkLondOZZajQSvOLs9YdAn09G+Q9vpn3BhMeOGsFCRJsnqkNZn7fASOe+2xuUZlASrlR/wkZATAePMTel9MKhFoZun/JMuC9QUnsonoK2Blkil/yGYJgrOXW9KwnmuKxNbmSQkLHWV6kKIRp8qhmpt+SshLFmvy3vZDISH7g0EnyzHQxyJmV8nRG8njPPM5IkIY5/fUo+S8mgXXqcaHC4Cs5UHRi9KxeJ5v0VafPNrWBY6bN2TxgBc7rGyY+dRGQzNJaYMj0EMsYu2ov2idD62vzUuCARdfk3vbB2bIbT/MdS4kKKQG8gpfukFAENNDB5Hhwvh/0JqrKbPYVQKeGjcDEzDOXMTBR7nK2GnUdJjRe/FoHv9wK2XsFIFL+/3XJmoB5ODpPvF8VGgsIV5CtlikVGvgUG4jo0KMOqT9j+wMNG/cccghEZRZQ9dmq0GgB7YS8BneU4MMie/vmRJRbJ6T74cz2gDVrto/2yvAvhQ7jrekQMEWFSQ/VLt4dAZCrpRcFUCVgsvw5ubCeiXfaujvj1FkBiJpMDmk2gaxP27/gdImKVXSbEWqeBVOzajM90OQTLvZlOz4lEBb7nCxswtZCRoMcRzNwAsmsffb7YRaGWPY/nFo1bwGK+J4V2lt7rZkrQu14C8vLQ01BfawdBZ8dJ2+d1UHXly+xl72j0XUhXz/NxKQRxlko7MhdDdbhf+G1lDPLn8T6Cme6C435YFZV9LSD087MSMYOMBJ5xqx5cHwKO3bmjUxZVoPQ9MPvGdwI67UzIOmnUC4R9n9eE5bNggc8+OY3ez/f0rk+TDGkwsMjBSajIBOGqrwuTYhTUJVa/hQtDcKfpPw3NnAYQR2JsAW9xaP94toZWcDrMPdW/WEUqg1ytx8GKDRj0ulqUR8+gAXamtau0dBph/djKLx9vLNJ54dE6GdYO0W9DV1d5GyF3k7QnUJOEaqunCuBIHdjUKURk2ruAJq9R1vWCKFRP9X/KwpoJFRfeDwipkiF53QtLOYRBvsMpxdN0TqsWzor95kzn7qBa88miMDrHbd8edgqFv4mTg677m+HWhdLDbF149PHqy7e254ZhKC/aXrS0Eohq+tcq6L5b/1fFkR3XCvrX+3oFuJ7A6+fVd99MENBI6M1VE/dm4GcJvRzyuxkuhuknySgSkM6g0NlytXYQ+CQd+CKpHG5H++IG1kio6+JAudt3GogOxO7Y07kjQjz9I+kfCdHxJdX2bSs8khXjbhRNAeXFykv3DhLRiRql2r8nEGicOU9IW6mBkrggSn42FlUoaMZtEmngY35YKGs2HbYuqg1y+pLRESWNS6wSPaB9KP1nA1st7G9TMR7foSDBkW8sEh8HYMI9ZnRgHAPHRPifnf8Ug8jdN+yvsTUDWWGuR1qrHDgumvJwMuORB3d+OEahHihq4n+9hMpAy+VkREdDJPLLn1I8fKMbPvNxUibdsuB96FxiSxgFRSTmj2dW5oHkzo93IeoNsCHe8+6eTRhK6hnRGRtBIJ/D0iijmgPUj6WM/Ts4ZCCvzaHv2A2dbLFkv/dNsMi3vXu0jIKu742TEWZogZV5I1ziuxxI30oflyrCIxuZylNixv3AY8oQeGmEzrPiHEof6NwtoM+9mDpGgIZP+11nPyXDp96k3btbcai+qPwKx0QZHPeJ/sSlWAbL+w0z55XCkCTHkelk9XaY8D/Q9qC+BAKuLflFfSWhM/VCOM6FPhCSljZ8NlECHYUix3fR9XnkP+HA+jIbWL7mKMnZ10GHyCNbubMRSMHMqVTm2RAIlg4/3AqtBoGp731C7SRkNnbh4A3+VGg+EDjILx8JSSxfA33DotC8oQ3zSEAXpFR1NNw+ikDc2fmRswwF6Yyfc/s4Qs9fBquJs+RGOMDcdQve4VCr5fodRnMa6C6PsIvyF8IURZGftpuCnikEmRjL9IPO0R/+5nS/TFyfIuEEY5GuhST7lxkEJ3Os8d88SqDoUGNi7j48uj1cxLvzoRh+NPsJZ46UQTZB0NPkZRhyldg6IabXAz3nleaFjtP70bbXIz7OGDQsZo1p2JsHhVzyL9vqcuCWSOKHsGIMsi6wvmVFGgTl4xZHrA5QQe+RNlejXgySlDhhvEPntTN9u3Uqjz2GHUeWpCoTAqr+y5DLwN8Kdunzkt5cLYAREbLWqyYg9yL++qtdQzDXmuf0Si0LFNpPHu3TIqJDtvyXb3xvgweWC+b3V+thVTDAOb+RhGjcMeFjLuHAK4bVkXMvg49uedzPEQ5NKblnVea2wPyDQ5avWRJg142de7vOEVCs+WSBRUA/hJbu7KZJNsL3/o8fTJYpyGhQWNQprhOOHZCS/ooegRgnSutqjkY+nbu0Mpay4CeO3CnRRQWJeyMC6hYRCLkVGq0tIMhtTFx4JJEPJUJN7mbCOMTJxs7IYVwPAzv3snMmyqFTtsHeWgKLgggORXYFHZC0JRjXVRMA8uEtT9smolEJzQcbk0D3RR220PodBSbPKdg3h4Qhc0Mxp6nOMlDvvpvRfJUKuBf3hWkXwtBMYQufHL2X+2WOIdGCBqinfkk/rxaG0nZn2W0R+8EpKGotb5QKZjzYsPElCvq9bPOhTjUfxu9om+is5MO+m14an2PC0BG1kfCPejVw43XaWDVfNPSwt55VHsOgM9n1Mdg2Gjx1PBvf3R0L71r2G50zikaHxD5Mz74oBxoBQ1eQAtitY4qYagy6Zeu33FzRDyX7P5thl0tA/oOd+bWcGPRvL3/NudluGGJgzCrDNYDwbzcZ4icKcsMkfrEdGYCnA/sNUrCN8IRPUzC8lYI0GMXevw5vg88cVX2uVxJgaHfAwkIoEUXk9F8T7YkF8xeFT4tiCsBnhI9XlA+L5KQ8NTvKBmFdscOEh0AFhRrWd6ekKSiyRlvoSFAbFO9sukZJlkO6e5bWcSwRpYlKZ/xJHYCvtRdFPC+mge9jl/P6PyjIIXifZ79nK6i26p9eP1kLF/a9ZVXpIaDgWk1c5Z18SONKENoupMIP4h2bOeswxG0tOXWrshaeUA0W3gpXQ16L2q+ZlghkHE3tJOdXw/7Nq84WZyrBUKpC3Eo1EvWon3br+dINBV4nV0fsmkG/6wmv8BoF+btWmV6j90O3N3UN8dNUwKxKFnXIkBGPz5y23IcM8DQVx3OP10Nv+5baAwEM+i5zbZI7cggOfLhte0Y2GwII7JVxNURkp88Xd0+SBgepfrctTHEwG/hKPvY/CtIdylL9nUuDFoetNPnHcRD3JiskwIuMPtjzL7nH9UDVqHn8RFsFlMvvt2y7EYPcfrGcs5NrgnHdunHnynpQJHkanVbDIqnCipN55+l+LJ9w4qzIBZ1Q1PPQgoRUS94Eui00QqerrgA1ogKKOJ/qvj+BRXGNaqMMiR3gnXby3E2zSki7fcjsyyYJKXi7V4Vv9oFppZ3QkFEzPFKXHvlZHIOUB95bhBwagH6d359slKmwwxuZ/5jO1/yV2BKWM8Pw9FmJIYn6CGoZLS60/O89ZwqTbEVjBwiSQx5nPK+FwEPt8osc0chQMDtlVY4Gd04eSWOgz+n4XTLZEUNGX+6PB/8ht8Od14fJ932bYdB7wHtVh4QYUo5JfDHtgSfjam96flVDazqbxH+qFHStf5JF/WEPbO1nuLtmjoXB9en4cTof+S4Tnp/+PQhn7nVhVw8EQfz3Q3R7U9Ca8r74c3M0yLrnUiEkVgxp50MTHEaj0QtVvTP8e5pgJOlCvv9KKbQr1K2rX8CiXe5rbZkarvDnSqH6Q5MG8LSIkOyOJCAbwU7ipStBIMFw81H58TSYm84p7TqFRyki6iE+RWng9nPwXoNjEXBOqQfYNkci9TPWvSl/hiDFrsLemp6HrKe+/GD+TEDvpeT6nj/JBtG9Pq3KcXnQHPPvjoRmBNoetdhxZBoAdOnqw8jPdeCmqXVUa4OCAmJ3frIn10L829o9H/rw8AFT19BiFoUuXrcTizvYC9q7zaL4Gashex+Fxh8Ygxq22AbPedJ5ZuNFIf+uUph1FjSlzWARQcNxJHJvOzySg3t+ZfTff3mj7/mViK7WYfJFzKjw9yl7nWBOOZiJ+rSb+uDQWQrJdvtIC2zFGwkNZ1VCaoox084AHi3MOajJR/XAonoJTrUqA85p9b78X46k8zIZ7X1PBmnpwjE0RII66/epLxXoPWFC2j/ANxHi5tHND8oYuBJmwZ9mi0Xcij8v6Zj3gcZygUi9kTPwxHSlDq3GIMdDT9mJM1QoibfZPE3vY14xeiy39uPRe8X63w9PtYH76aW6JqEn8Mc4+XveFhE57Kr3d8KVwIeFnC573zTA1rsd9xPFoGvVJKGW/83ru88EN/rnhrPSETl9PDpBqmxTG2uDOyi5wwaDB9uHDN2DrURUU7Z6s3SrD87/lB/+zpwBjzjv8x0+FIsupJXEqahlgpeQ8sD5i1S42ZqLCNsRyF0t4FKrXwfcOYAOrIeUQGT8wVSe4Wj0Zkj48G39HpiWPHTlYlEdBLTLEK1PxSAPguyEmfoASAS4KW7ZlcOipQNP8hQF8R4/UMrWUAUGLASn0rJg4DosG5E0F450+X6fkhUbAAW3S++exJWC5lr4oilfLCoozUi7PtwHZs4PlldRIFyxTLgfv07Xf+BsBKU/FZocfjcPbaTAM6fDnZycUehBW2L2jvsg8GEMZsz7S+DMtekTAV4UlCn25Pch3YeAPB16lr1r4QSeV26jGo8czV4CJ12vk++Ve5L9quHXxs7tq3dxyDZAWENlrho8GiuuceZlQoCytNGrhxjE7tkQTCxuBwxv3rqAWTl8TnH/1fkfCXnvMnFWt4qDu3a72byHwkB+R/rF/r4olMqmaP92zzBAE8WJkzsTmM9q7jSnEVFZ2nOpVw7V0Mn54R6rJxVocRwjazqRiPdmlstLvxYoOGivFHGqBir/ihs3rhKQ/QHd7suNA1DPKEBgvlUPKlp345o+xKBto8suTgvFYM7E9j3vJhX2vr+7PLHzGs0pDpcooJfwfvN4fMGpUnhmqzmSeROPzsuHY4+LkGEs7dqpd2Np0K0oF3LWGofe+B7W3bbsgLgnBeOf3lBhII36y6MlGq3tbhKq56FB81mFKHJWAHz8MLt4q5KMsmjeJXjFDuA6YxbK/YAMxD91m5+I0cggZNrJs6AV+G5ZmLCn1kLCjxkV4zYiunP1pADHLXo/eU8WySovhnLGzJf4Uhwi+t5JjOZLh5zpyUO1jbVwwEmnIH8Yg3DSJYaJx6qA82/8p8qv9J6z4j3GlRmBLpl1sQ3qDsFJVjWHoRMVcOVO9K2AWyRUwj9OO0fnoInpGwlpjTXw5tunlyIkAnL8nVrmrIGFPqZwgdLeXDhw7pJAtiMOnbozu35OowV0hCUslopL4JXx9zr1KTya7cNJutvUQ+6TN7Rz8VRoEraoHI6PRDGiaQcPsdYDNrhZttIdwQT6UnnvVSQKQT/PvB2ngeTc6V9W0rngbdF0V4SXjEpCV73URGhANhzazYUpBqd11VoZTwoqWw3q82WLhfmtdMOM27XwqmuDVfkXFj2Y46veKzAEzV1zFbxiDeAWrmjbUUhCP1uSTy3O9sPJTotHVtuvoOTAYlcEcyzaP2+8s/WyG06x73/c59YIRvvN5ediKGhY/YNmys1auJeQsUzw9AfBYItr5ToRyIpqJJ32agAO73xzilCuhbjLLDo9MzGIwbz9gKw5Apv6BwIWP8sB2+V134BG7zP7VmpeibUDG9PoX7aPueDc7JZR/JuIUKZ/nN94ESzt3FSJQDh4s0DIDefDIKx7ln0/nftk/zjmNOwvhuXAr6r3E7FIdtvw7cSeBtC4XfF9H0MuaHwdTDpuh0XX/T0liox7QfWJ/FbyxUowCCol6eVQUHlFWUaI5SB0YxbiwjUaoU9bIZYrJQapFmjhvbN7Id9T9hAXYw6ofqRun6D3N/uPBXqGe1sh4VKm6ap8DFD1tuUcrQjopwqJmO5K19/harp1XSI8GRwadhslo+OdjAFOqa0w4hQYP57UAA+qGZIeviMg/4cel6Xq6bm1IDl+Mi0Xhoq5dzNLE1HCyPxkGHcL6AlcSgsyL4avtzG4m814RKxXl3ARiYK/IumPOvQr4eJvn9OKeBziydT6LnyAAOLZFqXXeaqhaO0C7QUPDmlL6nExnmgB16X3bKEVWXDS2F8wmc7vL9TivO5O0nnTkSFHmicZTHK0F5fY8OirW1nJmWc08Gh6qpCsUgfqX0e5u0rJyK7M0lpypAc+DU4OM1zyBDajXQ0izjFIJzzaiQDDgOlyiBFZ84SzgeZKr/0IKDdpxIc2hYBF+OG0gGINvBoPDdvgwKOKDfyRdA4anIzRPbvfqQkyn039rHhNQfi8Pfc7DREQPib+eSBfDvs8NV6w1eLQsiGVYWyrCTb+PqV9XiiH04dJ9U9u49BKfAfbN4Fm0Fw5lOAZXAMu3cIx+zbwyGzkoMmdU8+h/+hFad3iBmAz5vIiPcIjxvWF0MLzT2CoLHIt3rcR0g76lA9l4VHAqyMrtK5wqOHgoDKhTOD4ksBoFYxH9xY37rK9GQINt1o5DYSAKhnk+nmTiIr4q95IRLbDZPHA2fDvdSDnHeXx+hIJOQxZfTod3ARXUqtc55sqIYyNtT/kHhYVNjbtvznfBdNeHqJPxmuBrNsruelOQZiHi7Jv93WDycv5oLnTZWC795+MFpaCeiXGDLP21YPJd4fgx3+a4XjeN4UcTCTS5xIKy44sBdHSVgPXbzVwfeNwh9WpMCR/R4l5nW8Aqq88WysaLANa2Xq3qFsM4gh/T6D+pkHjOTEUqFoPGxr704rYo5HqkQXMeWor2Lxg/jCVXQLvrp2+M7lJQD421xfDV4bA+1Gai9DzCjCVLG0b/UtAkn4Of/tdSuC2stXfl7ur4NuW1Crm72tEXRXy4Dk5BBnBUs/VzyL44cNyt+K/aNQw/fig+TANjGz2TUSmN0EhW15O4KVoxOip1XbhShyMUjmXqAUJwH9IyeR5DxbZnQ//Kv5+CBqj2iuY1whgOxZ3mnCBiKYafXGfi7qAj/3TUlxGGWAVvxQ0XSQjAXH9l72C7SCaKZLSoP4C2I98tqodI6HWbNyjGVsEbYKDKvtWXkOWTFHHuQksMviXkN53lAgQ4defdaUCXA4YWl77ikUpDZcl5JOq4e5Dg7G8hSSQtjFrXdLDoKXYPcFGiQPgU/5YLvR7FZjNm9UrdlFQbgPWkkxuA7ua++iAby58+nZf8kI0Ed08q/35iWMHbP/78UMzOwnUm+vZSun5Jf/SVeSDZzPct01I731UDQcuMFhuHSOgGP2BTsGxAYjd8W4xvJYD/b2tZpjxGCSq4bKGlRqk58VZH7XRMuAf11R3LqIg+dHHn0SKacCrKCBZoF8FbTlvmw1zopFQ9+inFe0WKJ4vcqZeqwDeQ3a60nN4FKRRpytu1AacSKXC51gh7Dmm+ej8eRJ6I60RlRzaC98CjdXOhxbDXpwJdyedT8/alDRs/O0A9enaV3kuOHharX48TTcaPS16V5obnwwnW+dkVZ+FwtBEUVbz5yjk9DuI1tPZB2U8J3WuaCfCnSe6bcSdGLSCdxQ1rmwD/+DS9F1vK8AxZ6TWooSIZpV7RbMwXRDAXh2oJk/vA01RT4w0Keh8+oErdYvd0Bt0OVbAEcHRzb6A8kEKYlz+jc8dGoRbkcbjESEI9HlJJhQmCnrgc1PijNQQwBTkGdFzuUGohjwSSEITSv+uOmWnwOdRs6uCe+rgFUVi9t1ABHJwFPPKjG6EHSFx2ZS5JnBmWL0Qt4BFeKMfSt4aNBjETeZIs7TAWF41C0WLglg7Q3XOuRSDjVFGqe6ZGtjDSAtSVMSg0Lpwk74fj0C/4qd4lAwV5h5+7iopxqP/wrfZ7qsMw/C4vO/k/hLgfUNyx1nS50H4+d7/0gZA2pM3kdOnAQT9QzX2/I5By2pMA19a+6GtPtp5GovAZdenY3I/Kaiq9YumDP05Tur8muVTLAejBr7Ub2/wKHXuJEH2TTJwYz7r/3cxH+7ifps9uB2JvBW8WLLsWsATX8ElWY3A/6EP/vA6Hhkq+r6TMY2FyesMN8sd6HN3vLVIWh2LnkluJafq9UNgc8KV60QcbPXMmxZpxaC62kc58wUNkHx4pbccXwQespjaJv8otBi5VLuPjwayZ4edIpJq4WL4uwCtTDJaVRQwHvKvhVl+to4sGUTnGm98k2kUSmQUTjpr3AmFu4zPR7eTQOj63o8fzcmInJfu7RDfAnP31xQVg6ngqCf88jwfEZ25hH8V7dYCG/tOXLfjxILD7zd+rZt4NDyc/cOmoxmyqrfXDcNfQZ/xR2nKYwJqqLjBH6fXCvHxvz9dkWuGy/dvjzxIISCPB7vPxbsngKx0i1QPdxW4Xu257e8RhdjH5I8fK/MHZuFR7PKRCmDO2nKLPUJADC3yE9XkMmgU/hbnUl4LzMWr82KJGFRLKLV540OCSpEH3Iz7W2Ap/vBqUR8WSWBWpXn3VIPb6X9sz7ebQfXN1TMUBgxS5L1lVrZQBNu3DfkCTlbD4VOXBwvsMUhpGclE3UVAOonNWrNPgesBvXsUmrDoR+mSfkFKH7yIydZx8yyC3JrtxxFLMWj+r0ppTGg/dJiUlTSYVoCVAbtlM0ss8j3fL/vOYgD4B7iMq2awcGLzXOn4SgyycfaRfPOiDuaKU0gvUTFcUBE7y0X3o6JVWeueH3XwOGzJOz6+GNyZ7l8XC4hEwbfPWv716AO3ScXPkmVUiOXaxWTnEIPy7CaoD4X6Qb8kQZ/fJQUcVc5c4v9DQbudqJX2DZ2Qa+oVsyaIIGivPW9AERkJLRzzypVtBiSmh+WrqgA/z//GJejntecOTnCnvwxuv5r/mBX3Cha7dE5feR6GnOvzZRjvZIG2TXurbBGdUyw47EwIEQjzMQHOX26G+pxuA8xmDlhsXooOPI5HPEI75nH7e8GsfGX/uncJ8LFc2vszkIJorX4/cp3SIFth1lLzdjHoNOyJbxaJQMrf4zaZPrZCd0UE1DRUA0vxrdt714mI+mv1Cl9rLSxbJIjqKTSDwRqb9oPXUehxlH5/UXIXpOd1Nq17ITg3KGrVSM8RzaLora2PLVDHfe1LKj4ZQnlehmzqEtFJrVffsS+GgC1vFVP3NBfmWr8lCZeQ0Ozvot31Ln2AtfectjQuAfksdWfPrRhU4fnpU+OJGFiu+/YTv4Eg5zhTfvB1LHqhMbHrSVwVFIh6fGmoQnDdTCxAqDMCrVDM6lW0/eEMtWWGQ5QKNZav15tM8WhyLRuNno+APZIj96woBeDQ7v/+PpHu68EcLhPcEPBY+A7c2l0DdwXPHGn5315lqSWFlDaD+YmJl8nLSeD5fP7JcUcCsvu3Q/s+XQJzOfE5cW4I3J6f0MmVCUfzVcXacem9IBlPo1bvjgDP9Besd7tiUD56hHtzowN4c/TKwyJzQNPt4V6GLhL6tI+54V9IGzy4k+/iPlsMBlwec9wBRCSs1q+QlTMI5WvOCcpeOXBYMI/gJEdBRytZlRYSG2H5uc2FByJJ4LRy1pjnABb5O+0QTjR2QY0sr8fpCipgjuNvWVlQ0JMT7oux/DSwbqmVfe9XB0PVLfYKLyloX1lI5saHPnhZqr3NS6mCt6scaif5YxHTx3xNn589kFX234Et6SxYuro1H3+HgnpEWm7yHx8EURnJ54b0Puvy6ExzU10MOt/e7KdPS4Pe1+P4eYF6sLk1dZBvKBJhDMprbsgPwb3IyIkh2UfgZTfHYXgxGv29c03COmsISPkZe1cLqfA8oey1mh8R6Qb1xe0Za4NsaDLj6MyDlJGrN640kdDZYxoJX8tdgA5k/w73RkE25kIgmUBA3s52gW10Xo6gaOGmz1CAlRg18vMdBXnbrP9SZe2CpO++1m4PmiFVM/LtzhAZqasyLu4zyoIaUlHbq/tFUDt88TGrcwQKy3V5tVuTBva21C/SKTHwUmPWavYcBe0VSsdc5xgG3JHLy1a11ZDe1ys1VElE04lKgnech+ALM6Ek1iQL/ui5bRSMkJAh7xKXSWQHyArsdZwdy6f33skPvu3R6NCQ3541thagvTqhvG8zH55WTMTEJBDQV5ZdOkzsbaCk3nRilVoKBw5111XvIyE2F7Z7GY31IDL7Pr3sWh08FRdfMbTCojW71ntjLzrBZ8yxavhOPWScfvbffEg0ykgZqPbyaQWNUt+rAz9LgFXolkV1LhElDn3bYk5sgtA0btzRHFfY5E2M7NHAoVA56Qc5Ue3AcpVx7IKOC2AmtyKNxaNR16+SweEjafCB2eAuB74epGjb9+oSIlDKxjVv50AEMQdz4z2oddCVtFkePYtFsWWn6n/ElMFdxst5tcXFcK1fX6z4WBgyKNATtjEdBBrbnvU7shXwX5HCK9XYGMSOZw7vPNUHF/vXHn9dqYTuF3qvzn2KQWLH1Wsca1rgK3eK/HxMCUicO2Vy7CAR7d9fG673rh/6vuOuRTxLhcBjgDTpXGz37p9JVmE1vAh8bvB4dyyIFf0nyuEYiVj8JHvfq9Agt1DF9PCFJiAmXMoYe0JGHt2z3JsDjfDZeabnBv3/M5t/TZ3cxKIZ/U5x0lYuBPuqfpy/VgM7/5xvjUWHIcn4SupUYSPMe1T7Vennwofnaib1/Fhk3xGa+BxD5z3NfMXxVCq42gr5zLhikPjbR9M4UhcI0x7UyHI2wY1Hr5uenCUjmUv12e5vA+AiW9eyqWEZpD5e2XOKk4DGZLK22VoH4de5y7mudH12ydoqiClTULCbtyNfQBs4158wYzLOhr/pX17/tCchkgGjvt1UOvTvYXH14q4BtTcrrX9UI9HR/qNR+I4gkJgrHz7uXQhlOwzxdVt4FLVReTKsD8Hbur9ZaQ30nDzMtOpG51OvZwJ6RGcqvDZtPub7rRj+fngnl/AcjzptAnPqeNtg76Lzm5H6alAj7HtrQediA2NPY7u/vfCQ9Tf5XiXd745ePk3FFFTnrtVW1t4OE3E8WjMSLiAVsk9Y0ZWE/rtL0I1j6IeVpwccfdMDwFfM5ILoVwriJVlcXlDLged2FjF8jFi4b112uIWeL16NJ/Y+ZuoAGf183p24ZrBWiXDwfx6NxGOVi7rrO2GqljHN25oIHSyHb/LQe3iCWOLoCdYmqNbhmVvNDYfiXZl7v53GorhUL0GnrAFgyCy8vaxRCq53L4tP/YpBtCMhDJZSeZD3Vy9TargWbhxgD+kpxaCJrKvyE1c6ISf57aq8SixMrzc7ETyjUU+cbqRtOQ0ORvyMXJurB3nz3fddrMhIOloi4f70EBRc5/K7PFMLdfzvWY99JqKBf8u/Nwh1kE3eOT9F36uHfqm7VB+JRLj+X4dAqQRKy4o4+vYUw5GLbcPXD4Whrlt7Nu/RkqDt4dw5bQEq7C0NRw4NkSgAxaYQ0tPgK58qUwimEg6GKUtMSUegJvzVzqWHVDj09pNpsDYVGJGsXNFrHHLQ7q25croH0Nkx8+E/lVByic/IRIKCuOdkl3c3t0D7ke67bdnlMKKn5R4DBCSAM4h/tTkElJ2vbJm2+XAx12jSsYmI3k/5Rg57xYDvnySMk10diDKtXVDix6EhwnkVFoYu2HtWMVW3mwq75DZQ6Xo0esfkNRm6vw+WjjkY324rBusNvuc6QxS0S8qn/BItDBJ3TfKI9EeBZMjqyw+NOITdnXDxp18JHGe0ni4RbAKuBw0xYboYFNTx4jw2rgw+eqk/OR3kDGCmL773ShgSi1abOqtVDipXNSrF3hfDtzutHtTacFR7ocbcYLAfjLTfuZ06XgBCojN3IvhiEX5L5NlS3iCwWx6s5VmrgW+n3oQNnqWgvuz7e56218FNXYMcOeZqWJJf2zvNhUWI1dP+9Mcy2P5PrikgLw0Cmebyw+n3fSgUdtGXpx4ST7Ql3HiRAl4B2PNp1yLRr9zD+/80D4J3svp/h0Nc6PtbsuXwAQrqvNfbYXtxGCafue3+wVsE3x9Wi3H8R0Rlv7/qCJ8fhr7oI66Lf7MhT3VnrCSWgE4tuqjcPTsMjnnDr5XJmdCJc2MtpefX6Ep5MIdyK3AXv/87q1kLK8VhAqHedB7/1Smy+0ML3F88s5dZrA6kD15xZbxERM+C2Em3ogdhpiQwUftoKQhcU5LS1o1B/97ZTeueqgGrQjZG1ek62JNroW/uH4lOjjFd/nClB5TKu756N1BhS6HBwVmQgtYtpBIbcJ2AZU/VZVdphKyWQQ4CNho9Kd5tqk7PpwwdV+piVA2Uyacj1icYlOvecQ43HQhuitjco5k14Hbyxsg1RTzCe/+WUhKLAGnlC7f27iKDj7tal507HvVbT2ja9/vDOa5BE4GcXBiybbgTfQOP5qdKlY98QXCIbNS4bykDWhKXm97z4VHvnyTr/nuD8C/Y+kQZax0ElGYI692LQe/Eh7dTXvXQOUeAoZI1B9IfpO0xEYpBxlqac78WOiBFJS4Td7oMCnksOSvkolH6YsOTIJYeEJNo0Y7KS4X2yw7X7dljUI75q30HpPoApn9hnXWq4E+V8sFXXRQk/lmYROuqgn6jG2WC+/Kh6zfDjYerEUjyWZNM/2AZ9NkN5LGZNYOUlfk3u2IMSjhvZUlIK4bqbrtROd0SuPRG10RBCIOmnwUaDtB7C8Z85vFrpTIIsY5KZU4noevfF+91dRcDe53oVX7zOgj63qzy4uNrxD1cXeRlSJ/biVTuGzrNUEGgDL0MpqAXi24F53TqwZA39cbmqxI4uUcvu46+38wkpFn1nJOgSdCQe7cDgvvxXc9CP0aiCrNfZV7jxfAmb2KkXtof7pEO7InkwqDWWNMWHoY0YNvOZHltVgHEdbdNzrsRaDnzsdTCciacZyr/EOofCwO5NufiGul7Ztn/uuThAjgS+tX0fkgcvOlUypBTCENX1Oz2HjhNgyXdW9/O+NUD7RJvPP42vTd+n+uKu0EDjlMmZ3SDaqC4tLBaie4LWrvW1f8u0mAmtlHrUHotdHbuCGtfoKBCbrMDe261g2NGqYAoaw0strBcTWKKRp7VyYdW6PoK6ujJUwZCIczhpmKSBh6tbHR/2lveCjOjtOcsm1Ro+THde3eQiI5EiVz83VwKPUW4J5uWnqB7Kc5CUQODbB5XWetou8C2h/eTvod5MB5/djytGI8+LfEHrPyhQmWFlwx2KQVWh0N0F3/ikCu/8cKz7Ra4Nbybx+d3PWiKMahuPSUgpcitOanLdcDw8pRV32YFlIZVl2LXI1DamBI7q2sjXJSz3aculgP/ZGz/VNH7zysxi8mx6E5w5u171X2jFt6I9hwQIEejaC2pfdF/WsB3xP2hQnDV//eBa7eIqEZKyPbwvyEQMg8hrGykQcrJ577fG4nIp9klF/5SweSZx6HNRLpuKOLtzDQeIdUaAuMJeu7E1D67I14LY0MBcTla0ejDxUT/qX0USFJd4Jp73wCv5o/9vG+JRaNELd97+8rA7VBshKZqFey6VvvztmwY6tVZ4nn2rAxImgv96RKV0HN1LHz5ZhjCp+y7OiBUD3MGz//j/N4Aj5D2huWDSJSiZeUamtMIobG9FzY06qBpP6egCiMO+X9G39o4afDiNK3w2WQVWBy7d9a8mYwu/zt2q3t5CJ79cLD1eFMKaYUVv2fmCUjobWidVUYJjBcp4O4Y18CJWysbfToY9LVN6c/RnXL4Xme9IiQUD64muQ4j5WGI+tSY+d/jASAyPnj61DMZzKvTjXaWKEhH7/bzZPo8JGsk/FJoLQdBBvV9yp1EFL9l9p+RKh5Ues+Ua7iRYeeaY+zGGg7lm/zUuhPVCUwMV5aX7qYAiQ5A71+Skfhz2qhVCxY0mSdlg2wb4Sd3QWkjfd5E0h91Nc63gNxsBcH6RRGk/3XzXLpARLTtT8+Uq1tgkWn/ru+dpbDtpXj74BEi+vc9kVWcVABiPv6WTA4xkFB90ZMQgkEd52JZlMaHIPinxqLeSANgy23ZFQWI6PmshF4+JgPSatKOuVOrgPqiIlLpQCSasBJpz/nWDOri313lUsqgc1RrPPYFAUkrO3QMnx4CuTK2JjIqhCT7XAcug2gkmy2wm8I0BFSOjSlHhSIYPx+Q9P0NCdUbTTiqFiK4MrMWbK5ChX9ejA7wBYfeaNy4+FliAFiaDfZbhBcDVvN2o0hHDJLTaJxtBBfALs0qVd6k3/ezxMN9NXh0cuL3NJ6RBiuhkSVRxzOgtdLvUlYIBS2Vi/NNl7RAOnMVJftIM+T4O+ZHahBQW8TyvIhlC5h3vNj0yAiG9PFIHddBArofPCz9t2kIWPuPcBkN50JUS+pBiztEJApnvwu3dQHna7sjF8waoECvyKc7hIwCX/07qvBmCAzqskQXumPgimSWZz8HCbU7MOurSfUA+ysm9jn3Ulh4diTtLUcMSluvzLv2XxvkRp4XRwxlQHsRfyDIgYj0u/MNahdoUKxiHMEsUgHrZ97MX5+ORm8OXj9B0WsFwl2OjN4xAiwYML1hjCSiGwXS7x50NIMWwynH9r1UIO+PO7ntj0dnlMKimToHoZS/tiZogwpwsPvugZ8UJK+eSNx1rBx8dmW0XztEBAbuw2qfUjDIqTuvlukxDQadG0MXFchgVlA9yf2FjBbs7RqZP/aCUaTJAq95NZRqmE4dqqD3/K0Ncon3IEydvMlKuZ4CrrMCKwe8KIiDIu6kDfWwPfBvxlA0APa0rjzk1cEitjGSZlFqE/wcZeOtCULAOHdRKtQIh+rM+gy5pstBzeby3xrhDPi5M2zvkB+GAn8y5uqv0/X6dP7t/EgpsFS9JCSZY1Bi/2FailUV3B2wKGS6Wg0uZyD+SHY4yrwkxvLOPBtweo+08tmo8O6mG3OoVjgKnb7p8NiWBke/mdYYSzeDdiq75RY/GRWNtbdd0oyDQ3/KiWYSjTAlnHDk6iAWhT3Y+aNNTQZjDGX2Kp13WbOP1CuvRKF3f7vNj32kwfOD1qlZIdWQpBIzs2shGm3f+XWlwQ/BnManhHuR2eCRd4LqMIVFe3oVnTLyh8A93A+9vV0FCRdmlA2tScgV/2yR4U8DbIWClhkBgWFC7L7UoihkGd0XTRrKgqQL5XkPtBCE/hK7/PVGOOIz3lFk08HDK9l/+mqBBeAWdc6dRxSHnFLHiv5UhQDvC9fYM8ZUuP3weMXNATzSGzicrnBkEFZu75KcXH8J1tVBEXdLKEhFhfeHbAQCq9f7b1TfLgXBsEzvS+M4FE8dNGU9UQ9/bF6mtfSQIXLxWbINJhI9sjpYeiuEDCTmfjm+Z/4QOXxl1xcTHNqpoW85riHI5Aqsv+bSDBcwR3cJVJNQekl5/lJEGyx5ao7yhzZAdHDke7lXJDQivzSuGdYCx3iz7StPpcL5JaJezTYenfjEwyP7Hg83VK3nPzzDg/sqj9kQne8ue1838XxfApN11obTKBcOuCwzcttgUGPLAQ2j4mr4/J/bgGNWGdxsNr1m2R2BTvlph0ifK4UrGiZVr/80g2l4SN7B9TDkrq0HUultwEYYLW4qqIQJfrLyhxAS2tHw5eBu6oKe/wuHA3j87rrVa7CMQMIx7KztXJfAbc0jgLv/wEAYHi3OUk62QKWF7DiZLZLAnV2NqHsovUAc2lFF3C2iQHBRucuueZDAN43QKNW80EA6ymc8BVCzQNZAyrq5PpjA+vJ79MShzkAjTOA+J5PCQJ2rOYLQ5pjAqyskj/Km0UB8qAElJEjAQCpY42wmdpfAAb6BCUcygUBSHKLeM7G8QED3xL7hXZLA3MRuZRUMt0DI5XymO2KaQEr+syiseYvAS4JeHWYAlkBHu8zqXIadQDhWOR+sg5HAMqxE7nud0ECWT4ytiZ2UQC4dtbrHRZjAk8v3Z3azwkCGWF23KQq9QFl0Ru/XY5LA8BFBhPtLx0AOlOx01Ly7QDmMkwxOzpXAJtQcmnmXxkD7d+d0vMS6QCAxUe/XL5bAmA7x4u2UyEAgAKxOey2xQM5J94xTkJfAKJP8YQ9dpkDjcvR6SgqpQALgY6b4/IvAMKTcZakux0DBIlaMLOqRQJ3xfXE1xZXA2ZpcNikWqUBW2Y375pW3QJB7WkiHH4vAELGdeqUqskCKL1qF1LedQKXVp1Q584nA9MdrJTILwEAS+rLE5H5wQNckDajCpJDAjHfg6lbpyECE1uXfm5OhQNwSmNIX4ZbAJUyqx8H3wkAPVo5fmWWkQFG8qcxlopLAFQqVDmJErEAX+qLSfRm3QEgaTiw7W4rAxsD4kl5Hw0AZKcoMWYOSQAc0ppqUp5PAiGwcVThTs0AUqvCob0qyQNZkGSTdFIrAvt+yEbNTyUAoulXXxemyQI0cM5pOI5fAGHuaFzKZuEDB8VgoXsdxQC40fLANe4zAnwIpooK2v0DAhEDxNJqgQAZPfBBpapDAn1/0vaMnzUCHFOwARweqQHLtdoORupjAws7BTPK3yUCyD5qnp9aLQB9tVlxcRZjAXpCOaFTtykCfObHCbBGlQJHDFnGU6pfA70EBWWJYsUCG7IpQ63CWQJDQ20eq3YvAvEitWZrMzUAa5GIeQMeiQEnJgvSitpnAEjlx0zvg0EC6gMVhoNm4QN3mdPY5AJjAOcTKcH91x0DY+rbd25ePQB2RjCgjw5bA9PghWaLrr0DdcmDVTAy0QBqO2gke54nAWncOr7ilx0AlP4rqMf/CQFtb/JZqBZbAURAytDSZwUAisOUDw3+FQDkX8zH/rZHAtH2vQMt2xUAKrCroAzDCQOniwsMAYpXA5mjSmA==MgAAAACAAACAbQAAfCUAAM4mAACGJwAAticAANknAADVJwAADigAAE4oAAArKAAAZygAACkoAAAWKAAALygAAFYoAABmKAAAVigAAGUoAABrKAAAgSgAAHcoAABXKAAAVygAAFooAAB8KAAAVygAAHsoAAB1KAAATCgAAGEoAABLKAAAgCgAAGooAACQKAAAdCgAAGQoAABiKAAAZCgAAGEoAABAKAAAVygAAD8oAABWKAAASigAAPwnAADuJwAAwScAALgkAAAjIAAA/h8AAGYbAAA=eJx1nXm0z8X7wK8ta5HtqizXkn0pRVKRRChZkuVrjbIlhEKSbBVSWqiorIkkZYkv2feK0iIl0S4qKlkifuf83q+Xc+7z+937z5z5zLxnnnlm5plnv70LpPzv3/1lkrL4hUnZr2JSLi6XlJdWSMoOZZOy4hVJeV2JpPz38qRcS3lV1aScS//XKQ9nS8rnGLdSsaS8vHz6+eZR/+LSpBzGuOurJOUnzP85v3flu8GXMS7wF2PeMoxXrhTfV0rKqbmT8o3sSZmT8fby/Vl+n8LvnzDPC6zvBPBnZvxdzLee7/sVTMoOzLeI9gf5fktqUv7DuHfTPp7xujDOMb6fQ71w5aQsSL8NlPvZvwb0/ypXUu5mfxuyjw9S3sv8B/i+NOtczjyXMV5vzkk8H1vzJeU9jFeYdTzA/ky5JCnPsq5ijL+Y9Tdkv4bw3S/0Kw48vcH/ZOqX0e9pvp/AeF347inmm0D/1fx+PedmCOvtXD0p24KXz+j/MutaVi0pB1zA78zTn3ob+g3Om5R5PK/MJz47sP+ee++B5/+T0kl5H78PyJKUV7B/N4Kf5fQ/SL9L2P/FhZJyPO1vU5/JftwH3DUYryD158BHzuJJeY5xW9N+kPF35knKrqznJPjaRf158P0w44/k+0/5vjjrv5fxvQee/9cY70Pg/yp/Ut4A/Hk4b3v5vhTjP0T74/y+JpzfUpy/B/g9N/0vvygpmwHfNOb3XHWg3p/+b1COY7+bMV93xp/OfD3B523M9xzrk65IT5qAzxLgYQ/4z8q489nv7vS/tEhS3kX7Q5T5mW8R+F9I2Y/5T/D9RO5/Ub77lPXkov1f7u962jdQ7qLflxcnZUXw8x7tZ8ql/97vHOcY+NkE3cgCXFfy3UVXJuVI9ne0dIF+TcFPbX7vzHctoLedyqdfv+t1/eUZ/w3gycf3Zbn/L1D3fXmP9U5IYx3gtxHzFwWejszTjfNTmPvan/Jr8JWP8S7gPvbku7X8Pgv8/AD96Ag8p4C3Lf0KQh+O8s4eoXyOc/p9WF9r5vmB8Z+l32TgysK42ynrga+VrK9z0aQ8w/rmlkzKTxjnz6xJ2Qv8ZMqZlDf4PjHeQ7SPBr5G1C+nPpr70dz3EXieYp7fGM9z9STriufrKeYvzvp/4H6d5PvB9P+X8kRSpKQBTxr0pjbnsCT1qex7r/D++B75/kzJkZSvML/v30rel5bMez/fr6I8yPetmdf30u8v5vujwDGHcR7jPDQH/o3wM/fT7nvo+7cQ/mYZ+POcrOT7ttDDScAzmH2Yzfw16V+E8X5k/dPAb6Q3B9g/71+HQF+lt+LzHO9iJ+DPxPv6OP1Xs78LaZ/N+n72ngB/a8rmVdOvJzv7+RHjlZSvZf3zkuI8fTvDONK3jzifDwB3DeiZfFTkR+rz+5Dq//96XOd71IdzfoqBj8j/TGZ/N8mv0T6cdVwOfA8D3z7ofX7wX5bfFzJeWejdi3z/OPOPpN948F2M+fZCvw6z355Hz18v+QbaKzPu55zna6E7d/FdPb57CnxdCP0exDxTgOPqCunX3wg6JB5cv/xel3D+m0O/BvCdeH8HOHuDnzzg4wTfbabfUeA/Ajzy3ZEfX0b/7Ozn39QvYv9fZ9zq4H8273l95r8NfF9J+1z630T7ZOoPMt/PnD/P+UTodTHmn0D5LKX836XgXT5Q/m8x78m9aUn5CvCPA/4enI93GK8m63+Z+S8BnutpX8X3G5VH2P9N/H5DuL//sO/Kia/xPj/K+H1YXzfGPwf817A/94K/XMz3Ff2m0k/+K5X2KN/tZD+qcE72Mv9o9v0W6sqXyptTOYdz+X0240+Cnt/G/DO5n9/Sbwn95rG+Qbz/IxjveX4vDv73Q79aMe8Avu9Ov8rl0v9uP9vl/+T75AMvYf+lP9vpJx2S/kwCD52YZw3vSTXw15T9n0r/LMw/mvnWMG4WytnSN9rlZz+mnMx9/JL5lK9fpq58rbyt/Kbc5rzKb1Phr3enJWVO5W/Oz9TwnkvPpd+jWe9w5ukmn8A88fx4bi5l/1dD/0swbh7KY8q7nI+TwHUVvy+g/G/gH7pzn+QjlI+Ui5STvO/yiefoLx+5CPqyGXmjDOv5gv4XAL/yvvoh9QBNwLf4890Tj+LvVuZdx7ylGfc++n0K3MfkKxjnGeDfCV7fYl1DpRP0y+hdVr+xi/djBONtYL4+wKe8q/yrPLwZODcz/nrqkyiPA39L+Jeu/N5XfrVaeniF/x3W0wj8pbDPfcBTM+b7Bvilu+PU83BfX7Y/8N4p/WM9xTjf6gWW0/6NfBTtNeF3fLfie1YO+qccNZBxlDPuYf2nkQumF07Ko8JHOR38lGfcZpy/Y4z/J+UVtPs+f855fwQ4+7D+Voy7ie+2QCdKgV/x0ZH9f4Lfv8+UlNuVo5Hb5oLvY+D/XvDTj/pw2q9n3F6spyn8R1l+/1I5nf2vxvzS6Trszzq+z8m6LuX8qlc7Bf9yVvmP8W9hnM7e16AfVY5Vfp3B+6n+KI2yufJB0BvMUR/G9zWhD1lpr0H9feoVoG9D2adevFd3goeC0Ef1BgWoN2P9bQPfrvwh/94HeG7k99zgZQ/4lb5IVw5Tvy/Il69BX5QzlS/VF/uux/c+6hPlM6fJf1Dv5bsZ9L2ded8nQ0dr0X8U8DflfXlN/ANHNfDvedsH3J5Hz5/newHr8Jx7vuXv5OueYjz5O/UCgyjVF6gnUJ+vfl99fxXWX1q9Ov2rgudnlTf57iv27Wr1guxPT/orV0d5e3vmpFQvqp5U/ehQ+UXlRdpnlU8/vu961CfLt8mvyc/dCn6eZrwPKF/m/KbS/074z/fFL2UR2pU/lTuVQ1ex/pfA9xbgmEU9O99Xgt5VpKyQI/16F4LfdvanvgE83w59Hsm5zE55P/3U56jfUd+Tg++7QD/UD9VgHeqH1P+q9z0S9L8vcb4/Ve8Afgqz/nLQvaK076Z9ivp67o/8xX3AOQI45K/lq+WzKyj/QZ+Wun/Ap/7+L87XYuhsYfk81jsA/aZ6iCeoK798Q/8fmL8d9GwK8LYFvjlBbtR+81/GK65egPNSBfqg/uEv9l0+R75nFt9tY/5U7kNrzq/ypPKl8mZl7q/yqPKp8mol2kdQz89+naF+iPqBNOAE768Cz1nauzHfMfC8BbgPg58ijPebfJD4kP9jX9rR/pj6f8ZfzjgdwWvU/2tf0J5wC/j8kXrkp+Wz1c8pz0kX6gV5bx/6xjTqa5mvrvId+PD9rBnez7XcD+Ur5a32nJfV9I/3U/3rfO6vfGfkR9fIHzOe99j7e4j7MTXYdQrQX/2Peh/1QIP4/gH4vduAvwd0+mb5FeBpSntx6G8D2pUnXXfEh/Zg7cM3sh/ah31ffVcf5nff1185338LP/VO8JeNOG/Xaeem3Kk9kO+kH9r/poCfccCTuVx6OP4WPs6b9uAJtN/J/O8y/tN8fzv9cwJ/KuvTDhXtT9n4znd4s+8480nnm3EeD7NvQxm/Le3LGH8a+9Wcfa7DeZtBqT74N+UA9jtF+z/33PtcgfuhXjLqK0fDv8ovLuO+H/Ldpd/19KvDvG2AV/uJ9hLtJ02gf/8N9g3tHZ7/l5EbaiunsY6Z2teD/SXK08r3yvVrqCvfd2P8HsoNjP83+18Iet2O+T6kfRH3u0xaUs73vWZ+7bM3s193cK7d7z60y5fKj8qvHmD8uYynXVQ7qfbRDdxH9YvvsH/qGdXvOs9dgf/4GPj3cX6+odQvoz/yq/pC9Yj3gh/t39q9U1mn9m/1f+2BXz2g+j/xt5CyNKV4/IL5LmC8FOZpwf1SL6GeogznWf2E7+052n2HH+X77JzPr9TP0/4q97Me9Kc+5e/AM0b+ifNUgN9fpL6fdvWDUf83nfG1X2qv1H7Zi3pm9vdB1vmE94dzcBP7o39DLuD4S/sN69rPuDX4/lfG/4D9yqm/gPwu4x8CPx9AnxbQr7n2Pcbbzfjy2/LX8uNf0C6/Ln/+LvP9h3Fv57yuAD7puXQ+8ovV1RdSPso+rQEPe+X/GV854Qbo69O8D/O1t3qPaD8DXTuNHHeOeivG6cf4m/iuDHC+4PtMe/Oy6eFw/n3hvs1knO7cr4LUS/heg8+m4H8N5919UZ+Vjf2KdoNDwFca/C7hfO4Er134vSrwKV9LL5Wzla83c7+2queh/Czcb+/z/MCnaE9Trz0beUb9tnLJc8D1Av23aJ+iXb38RPXX8tf6tdAv2i/Wsf/6z8nP6D93o/wAv89gPWuBZ3ZSnD838TxpP9YPK/pffce7O4DxjlIfCv3qwXz/yB9T9mR/DsL//a7+hvHLg7+tyCPPeK+ppzBOLeSWayg/lP8HvgFBnlK+Oqj8B3yDKVOZ/ybmz8530vGz0LNb+b46509+Xz5T+8Uw3o3FjPOs8qn8M+ffc+89+CAD+0o+1ql/TS72Rz1WOX5Xj9UF/ikb57YT9+8x2j1vnj/tRJ4/7Sq9Pd/BvlIIvGg/+VX9Fvt7FPrxDt+VoBzG/vSAvzjB90uRN05Sfxz4P4PvO8Xv+jPexPcf8Y4fBw9Dwa/4En+9aBd/x7XH+m4ibyyHfnXlvKg/ywwe3+b7rKzvxmzp568kfwe+d4IX9ZT6A/TPk3492WjXP1N/Ev1MdnH+9TfZzv056PvJ7zezXvk3+Tb5OOU39W4/8t31Qf+m3naT/Djru5XxU3m/jwD/J4w3ke+lS9Ij6dU38l/sT2/wpZ1f+/4FrHes8o7n2PMHXo+wH/K38rsteJ/cX/Xd6rfvBB9v6ocHHtrof8W4nYDrM+0mtOuPp39eFvl47tNH3P+M/ICjPvpjftc/Zg7v9lv0e4z9bkJ/9aX9md/91D9a/+CoN9Y/Un9B7dXqF0oE+V75RnlH+eZu7kvbpEgpxTjXyl+C34/Zp1mspwP92gGXfqu+dx8wz07O10zg2EH9Xf0jwOefrGOA+mXG/wn8f854Y7Tngq9vma+x9mDOo/zKKeQr7cInqf9If/0OfF8GhvdFfxf9X8YyfjXwM4/6Nr5/hnIM8OdlPOnFfNq1bzyoXT34Z5wJ+BEv4ukg52kH+1NTvQ7nR7uH/js1y6dfh/47vju+N75H2k++kl+lfTv9C3D+/gN9/wL6PpV6T+3v7N+dwQ/L+9KC87NPvox71gj49qhvZX79LJVPtJ9pL9N+1pP2ddAP9Y7yofKf+gN5P3NxH/UP+pnz0pv2rsDzcfDv1s9YOUj/bvUD6gPUD7QFv+oTXlReYT71C2ND/EJh9ucs/aP/yxjt1dI74Pqccg7ff+99od6f7xayzgJ8Xwt5Q78D7cNPQd+fQV5qyD5uZX15wU8l+vdlvSPZ96zQR+Ut5TDlrvm0a79qxvzarfR/Vj/XgrI051093VbWoz65POtdDjyFmL8C/bvAD67K4H6q7/Cean/T/qv9TXvcldzf77SX8/txxt/Ke6B/6jzW10M/k7SklJ+Vv31c+yr0QL/h6E+s/Ui7kXakD2j/hPP+KWUXzt+T+gHAz8kXySfJH0X/Z++p9zML4/QG7n78Ppz93cH90a4pn/Yv8P0IPM/TPkM9LPvXiv3WD6IndfWP+6GPxr8YD2P8i/5n0n/9z36F/s+krv3iOPBov3gIfCwHT7Wpd2OeC7mfbaiXZNwjwL81LSn3Kc8H/FzF/Vuk/oJ9SGX+GL+jX0sn5tkD/CuYfxf4zsH6O9D+Pe0N4Qd2A99e7rX6hjzAdyH333gZ42e0r7aifpj6WOVn8HGA+nvwh/mBZ6D2Jeo3Uy9J/zbSMeb33ZmlX194f1LBj/aLwtRTwefbjK9dINrf17Kv6xm/L/ubh/YivGfqfdQDqf/R/15/mBvpr//9CcYb5X32fNMu/3OLfrPaHcCv/mv6rZWjXf+18Zx//cvO+4Frb2L/fDevoZ6V+fSf02/OOCj956K+Vzqpf6n6h5+YV72D/usHuK9PMF5uxp9CP+O/1NNE/cwEzqv+T9IB/Z+U25XXC1GOR36J9ijtVK/pf0Fde5T2qrm0q29qqP8xdeP0yvNeLACPvzDedM5zQ/Ret/N7O8bdpPykPyxwb2H+v9n/78Ff4QziS+6gPorxR1L6HtVlfPVij8KvLNa/j34vsf4YP3GU+6GdaAf3S3tRJvbnCr7/kfIP1uf98F4Yf+D9KEL9JHrAvqx7Fe3v+l4x/43Ar/y8ifOvnjnql6P/h34fp1if+BBP4mUf8yt/5mcdyp/Ko9JN9bj9g/7feDbj27RHL+F+fMd7vox5WwJHW85Pd/ijP5hnJPNeRfurwb9Lfy/9u+ayn9rvtedrv58LXdOO/jrwzeP+iHf1FxH/kxh/Gue6CnCsN36Se6PfvX74o8CP+p6oP/vG9wb5zLiP6H/xmP4i2u15b25hPuN3jds1jvcS4NP/Qr8L/TCWsf6m0Cf1jPN8J8C/9h/tPvpjVGd+7Rf6B2m/KMH82i+0G2i/SKNd/9BrKS/kPvxLfYf+edT1n9T+G/3Oe4Bv/WPUO41jHO3E2ofXs9/ZoUtnWO9l9BvA+7CIfSsHnbqUdvUDm/TXYX71A3F9/dQ/cR58F4wP1l/d90H/I/2O6gCf/kfSbel1jLeWv1tCXT5P/m4D9Fs/Vv1X2zN+XfVb8hm0+7425Lt51OfTrn/Pas6n75j6aN8z46d/Zj7jp1vzfaWgVxgCfd5P+2H699cuIH2gXX+KGHefh/n1Z3+C9m9ZR2P2V/9c/XK7yh+qlwQ/pcI+6J/7G+36+R+mrr76cPDfeBO6oP/Gw5xb7S7RHqO/gfKTfgfGR2Vn3vz0r629B/qkXS4jOq/9VrvtXs7PmHA+PA+ej6tZR0Z+XfL5xqOpXzIe1/i0GK+l/kf91WDq2l9zsZ5Z9P+Dfa7GfpZRvxr0F/pHqL9oT/sJzucI46Y5X4MYf2haUhahfwX1ep5P4NJ/95fAD7Xj/hm39Drn1filGF+mH4JxZpE+a6f/nf1V/6u+N8YLRX9S5SDzB8jf/00pfy+/vx68vMd+/MHvb4Jv5b/qlMp/yoMrge8nvtPOuYzvp2q3Ap/6jeQHPvXL+omaf0I983He76dpv4z2hsyvX/8M+Lzo369/aOfgJ6r+2XiF/8O/A7/3w3shHf2KdbzEeb2cd6iRfDff3+17Z7xP2fTrLxDyi5hvRDqnP/0D3iftxdCHw+BvKf3bA98Y5le+3RjkXOXbV9nXlYw/iVI/bOOHtdtOpm78sH5/BblPUzhn+v8ZT2u+AuNtR1E3Xsk4pm94H4xnUv93AfCoB1T/p73xKPPVT0vKLuBnrHSWfoM5r0WNz4Q+KVc8TV35Qvon3dOOJf3z/fPdM4+I75/nR3rqOfL86E9UR7s7fF5e5vHd0r4Z3y/fK+2avme+X9HfRT+YCpwP7QnS6Rhv2xh6s4dz5vnzPMpfy1evoF3+Or5PvkuNaa8M3oaoHwKfx7W/A/cg8HUd/fUPiPK0fMlc6vqzbWA9m9k3/dvUf0X94ETGj/4z+rEMBT7pvfT/fFybJevPZl4D4KhMXb+IBczjPTNfzSHPJ+UQ+v/mOTNeGLhjfLP2bfWn2rn1v8th3hztAMx/K+NW8H2nzE+/wtoZOC/qTbSHqz+J+XXMq7PL+DrueynmfZ1z9jbw7WbeS/heOUk/HfMHqJczj4D5A/R/1i6pH7T2yY+Y/4x+GvqnGc8MPTbeW/uL9piov1A+L8H6NvEuDDTuDz7T/CUDOB/SAe+9/oUlkFeGUHZGHpffLA2+9O+/knX8xvzGuxr/+kTQpzUGfzF+Vfuk/sF96KefsP7BUf41D8J49l/9rfdeOqD+NsrLjqP9MyO/M+lHRc6vcaEdffcpqwR/w/8Az2LPD/Lf7+xbEe3VjP8Q50+/mz/4Xn/aKxh/EvPt4bwPA7/aB9VrRn1ntK9Hf1jt9doHd/Kd9vvG1I/x3QLq2cHvUuD8mLIQ8so9wT6oXTCXcSGsX/9g6Wikn93hf9UDRv2f+Zz6Un+EeQeyvz8BV03g3aMenfG1a38X+JNv6R/t0dqpMysf8vvLQZ/cBv7lfFw0cMX46OHMN8z3FHq/KuiLzJdhHg31R2M4X1XhPytR1gMvkT7tp258xhTq2Zi/JfvSH/ws4l5KB2P+FPUq6lOMR+phfLn2dPO2BfvENs7fQOBZq58McJQDH8rxo8DHdYxvfLRxxTHeeAbfFdIekJaUxoOsZ/57WNf77OcW5h8Y6Kf0VPoZ7XsxnvEO6I9+KSvARybmifqbkYH/l7/WbmQclfy18NQJ9P1V2msb78P36vmzqF9X/6Vek/as5kfjfjYAziq0LwU/naE3vlfqM2dwHs5gd21J+3T9TIAvxv8NCvbbGE9hnEVP9v8Q498KHtQTlQb+m7gP3wK//qbKia8wXhrw6P9aT/0t8MR8E/vY/1rM34TvtMsPY/y3wKt87WbgfFj/FOia8d3y4fLfxnXLd8uHy3934XxV5/f6rEc/zaqcz2PM/wK/52W9+vOpD9Tf7xzwez+8F+/Sz/tRi/XoP6w/sf7Dp9jf7sz7CP3/Yn9j/GWU76K+9rwel/1X33+ScgN0wDhvf7ce48HHsL5t2mPBRzbWp31H/1/tPNp3jBfSPqS9SPtQE8bXf1H/tyfBj++B+sTnGP9L6l+zf/rBR/939UXqkWI8+EzmvYP1/gp9ugz4jesw74R+Ns+E+++9/4N27/8Q6LP+N7Opz1aO5v1W/9Rc+YP5FymnZOC/MoX33jht47OL6z/H+S/JuOaVbM/45pfRf3iydg7eZ/VJ6pfUNw2nv3xHQ+US+GT5j+LwjfohlaCu/1E71mP8zkDm/0F+i32dTv+N9FsJ/I8A3wTW+0xaUp4GPv2PlF/0Q9L/qDzvrf54+udNDPKr8VnKsfJf75uPg/aHuD+lgD/qY/UfvpjzUw36qN1gPfNVVZ6FXzQPzhzW1c7zyffGF+q3U5f5o37ee+T9+T/nk34/A19Gee/MX1Kf7/TzaEL/I+BH/wP9DsxHp//BXuZ7AnhH6W9rvhTeB+lmpKfKUzG/0DrGy8ivSXy9z/nqzPkZy3hVGL8P39dn/BaMPxr4ojyinNKV/cnJfYjxr419h7k/+rHF+NIreG8OcY7EWwr4169Au2N16Ol+4Puadz0NfORmnYdDfk3zalZB32R+zfug319Cp4y7NT5iQvAvcb+FM+aHjv7jw8G/8sM/ylHycUEf63jan+Yz3gp+l47or6B9cSnja1/U3rhC/y7mWcZ3RcGv9kH5irsDP6D973zeGr5Xf7Gb9/Et5p3Ovdqh/w/we371w9T/sjRwZaL9w7SkrAv8xg8aN9ib+2P8YGbOlX7R+knrH70V+neAeV9Rb8z6j7DetvTfBh3oCj7Ni7eTcc2P15X9ncL9mKRfOe1fVky/vrxl06+zbtAX6LevPkH9gflEzS/6F/3ML2o8tPHRxktvBb7M3Kui+v0xXxvoo/4f6pfUNxk/Vln9ION+nxQpFwL/B8w7DHjf5/vb9J8CvrP0i/E129OSUv2o/pT6B07hPa0AHtbRz3wlUX9uvgj16FdBT9W7DWbd5l8yXk+/aeP5zA+jv7hxS/qT6z/+Ou9hF+6ReVDVL7QCf/o9GMcZ4zenhThO4zevNn8b6zE+QH9w8xeZtyjmI9WvIuqXjY80fr9WeDe6025+sKn8ngt4jL9uqv6O9nsptftrf5KuxXz3hTlX+sVHf3nzAZgfwHwBR8Gv9Ow1/ZmoT2Cfd6QlpfLFEfTT3kPzoRViPeZLMz9aX/CrP41+NutpV086CPhegN5onz+C3OY7G99X4wKvpYzxgfM4F+YlyQd87bn/66BX5jlpyTnrQLv560pQms/ePFvPci8bga966BvuZv/l5+Wj+jOf/JT+PvL1EwO/v5x2z4d+RrXUn9OunSTaR7bTvwf9mhlXDH7Nn2reVPOormYc5ZcCQX5RnjEfkHmC9Af6kP3ZCb6VY6P82oZ6zL9vfIX6BvUPxrmqf+jMeZkLHI+wH/uVx4J+VD79tPH1wFWKc1ZS+Y/xv6Y+VX0X/bW/Xx/+f0WUV80vYF5R8wvcw/cH+f20elbOawrzx/jYy8Drm8G/Rvuc+STVj5oP0PyA+kuNMz8c/KN0SjnOfFB/wu9FOXcG8Jn3rAH4M6/pTNqzQu+e9v800L5Gfy74D+N91XPvNF8u9Zj/IJXx9UfRP0V/lU7GK7H/9YHDPOnr+L40745yYpQPzT9k3iHzEJnvbwjjqzdXj67+vAn8ne96fO/zMt9y8D2Zc3M753Mw51s/LfMxGv+VD7gu0I8ZvJnfWLpn3rOM6J/5f6SD0j/fp93+Hwbmlx4tYf19wNc94PMI9QbGV9DffAHmW4n5+ydCx5U38lOPcb76d74EfraFd2Q1+DEfhXkqzEuhXXoN/Fv8/xLmN9kIflvwewvqw6gbH6/9W3u49u8ofyt3L+X9U287lN9j/jb9M/TL0P9Y/4wl3N8GwP8O9SLqR9SbMP9H1PUfN99ylM/Np3IteN3IeJW4D9lZXyvOhfrljoxj/i3zKxk/YTyF8RNbUvhOOxj3VP7YfG/K9zG/wnLWa9466Zb5Y4w/M+5MfZnxZwdYr//3Jv4/HN8X3xX5RN8X9dfK5eqxU4DPvEX6DRqPdRHzL+T7J2kvzThjaY/8l3yX+fUqMt8e9Uvg4Q7Xx/fGJRmnZHyS/gytMvAfivnb91E3f5f5Bsw/YD6C72mXPmpnjPbFsZyPYuZ5SmE8/Wi4t6X47nbq5qtS3vkIOvYe6x7E+mbSX/15Nd7THpy/mD9sFuOYP0292EjOffRf1d9tIf30g9vP/arL7995/rkv+jepHzF/iXoS9SPmh72GecwTa37YGA9vnPy/1A8jXz3PuIfUP7Kf2uXN3+w5NH/zkZA/zvPo+TOueDp6+xhfrDypf6rxaOZZbsT3raHDvkPmL/iVcZQflCeUHyayL8ZDGo+if5j5/8z7Zx7A540jBf8zfJdZ52nzR3AuU6EP7q/+jerHzbMR82vcwHjmQUqjn3HAu8CPfhHi/x/j3ziPygFTzWPMOnpS9tI/zfg5/XAC3yQfpf4nxqeNCHFq5tcqADy+C9pv5Xvnc5/le80vsQf+cYF6FsrajJeH+czbaR7PNzjfbxrfDV7LIB/N1l+A76J+wXh16a30N/pz3837YB7HmC/d/y8wB/42+on3hb97CbjNb3NO/Tb4uVi7P/M8w/z+fxfzRwqH+SPl++WPlQeUA8y/Zt41/1+V+ddycz/m87t2lXr0lz+WH/YdHgn+V6YlpXxpF9rlT+uBn6sZ3/P4BfWT6iuBowHzLtQ+xf3Rb0M/Dv03/H9L+k14foyXTAt2B+0Q8q9H6e//n7ma8YoD/8OcJ/OPmI/E/CMxf2X8/zmN6XdavSj9rtW/mvfUuKgYL5W5YPp1HwP+0rQbX2BcwaPw78YXLOb++v8PllDXXyfGL2nn8v8P7mb8f4DvC/Nf0K6/lP5T+lPdD3yzuV/6Z+iXMQD69wr7/hPrzGE+L+BI5Zyar8r/y1YQfP7MPlfjPKzSH556K+OLQhxGdvXbzJsP+MSz+I36J/N9VuP+duR8ylfqBy9/eQPnaQTjXiMdAP7N7L961/Nxqoynv7l+6L2YL7P3kf3z/9OZR8L8tG/ynfGst3C+WrG+EcA3kvIQZR72x3hh44dj/hTfo+i35/tk/s4z0C39S5QHlDuMWzWOVfkjB/vTM4P83ObT36d9DPnyH+BTX9iU+c3TV9f3V78RxtMOexb4zUN1F/D4f/RqsP/Goysfac80Xl37kHpU7UTmB1LvJt8S+Rnld+V23wnl9z+Z33MT/9/lSuZ/kHGLQK/mA5/0Tjo4i7r08KoQNzJG/Yp2YOihedmiPqpOyOvquOZX6A9dV19dn37G5/l/ma5iHfH/M2lf1K64Dj5T+6L8iPzJccaRP9H/LCM/XvOTDeae6T8U85Np3/uc91773kbOr3kFzDNgfoFR4Em9T7TvTGNf9D/LzTnR/8z8OY7vfI6v3ncc32sHUv/r+9uHeQpBj31/+4MX/4+BeWT8/7cVoa+ToIvq29Sz/RL4/Rfpr//MadrVb18J/OpB1BdIL8znrf7A/w90inMU/aW/5vuYZ8L4qlPQBfU7/v+V3do3lNsZ70r4gczGXwd5RTnm/P+H8f/DUSqPKn9q1/wFuPTbqMH40f9Yv2P95J7nPsvXR34/yl8ngxx2mvdEvx79fc4A163Qq6Ksv1vwP/C920hdPctJ1vcj9zeF7/W/9P+5Cp9wmY9K+KJ/n359xk8pl1+svpD56oBP/Zv1L9LfSP+iB8HfKeqZtFeBf+0WPwCf/+dAO4b5LNr7zoI381uYX8m8Svp/TVe/wrn1XpmvaQbtV3M+z+eFT4qUPcwzjfOxA/j1Z1kBfubRXgM4c+ufRH/9f/X71Q/4Q9p3sN859HOj3hr8GL+u/4hx7JvUN6C/yshP3f8nZHzXIcY7Bf7Mk+t5vp/9ND/6n+hnXvQdh781HjkT+9eNsiXwbOD7ofCn/ehvnvBV1J/jftwF3OP5Lp/5s4I9NtrfTqQxHt8fpy5/anzJLephpRvBnq+d33yapTkfkf9SXyMf1pfzo94xL/C9wvloT78RwDOS9on+/2rOeyl+j/8fXP/ku4Kfsv7J/j9V/7/qL+yX/1/V+GDjgY0PNv+MfrXKNTF+egTvsvliox+p+SnNS2meym2Bn9X+rz/AQeDRn17/+taOSz3mR3sYPOjHcxK4jYuP8fKrQvyt/pHG324KeUfMQ7Ld/K6cX/OFTgcO8xffxr7FOFnlAeMtt7Fe9VPGX+ofpl9YzE+hvi8jP5z/AaDnNkp4nH2dd/TPVfjAUWZWdlYfyd6hKCFCGkYhypYZEsIXkYzMZMsuI1uDCNmrZEVWRpQVZZQ9+p3ze79eznHPz+/zzz33fe997nOfe+9zn/uM+6meJd7//tLmidL2GaL0U/LnMkXpWdLOfG9YLEpX54rS26SzC0Vp8cK0zxul1YtEacvcUTqc9hWB+1K+KH2H+uOAc+ahKH1NfMgPzR+lfwPvBO2Kkl4sCnzKX0zBOMivp96t1FH6Av3vIh0Ovo0YV3/qJ0pLPfr/MFWUpgO/daR1gfNpIlK+j6L/owXp/1HgF4jSqY9HaVfKSyWJ0p/4PhQ8zjK+hPR/FLiPOV76nxg/Sh/k+/7sUdoC/IfEonQl9ddRby30z5QzSmvS/3rSXOD7K+N6h3azoduD4LcxZZR2oN5454vyV8m/Qn/HctCe9fMf9H+C/rYw/g9of+iRKG0D/jHSs6yvrsmidDD9L3XegXcqW5Q2ZVwlaL8T+jRj3bxP+RHgpaQ8IfjfAP5M9tNg+vmI+etD+yf5/uwT4MH8J6PcdeD87wL+NfA8QT+TGN+LD91brwdpOcrbkK/EuNImjdIFzNPj0HeD80j5JPqvyHpxXTcgXcN8jQLv4dAjHv2coH0y+t9Fuy3po3Q19f9kf+yCLhOAlxr4b7EeWj4QpS8DpyrwM1H/a+g2h/H8TT555ijdCB5XKa/N+DuSfx1488F/B/3nYvx9WI/tXd/M36QHo7QG/S2h/XbWZ7U0UfopeHZ2/TL+vKyn7PJJ4Axj/srxfRvpueRR2pR+nme+voAu5Um/p/9J7L+kfE9Geoq0JfQ9TP5f8DwJ/L/53g/67Kb8OvR4A/q9T/0y4HmYvPROwT7YDrymjM/14XpwfXQC/pPU/4q0FnD+op834N+n4ctj+V4FOh4F7jnw/439lg/4FWNReoH57g3eW5jnjQ9HaU7gFk4cpSOBWwZ8C0OX7YznDvjmzBilC8hnobwo89Ma/v0W5RMovwj8k4zvBGkO6r1J+4zAly/KJ+WPTV33tGsL/ZpQ/gTr83PSVfCTTxjPZfhOP+DsAE426DcLepWCvmloP87zKyv90T4z530a6L2K9VGNfbaZcd+gfCz4jiGdTP/L2X8L4P97qD8DvBswvhj189H+A/Jfgl/ldFE6gnneTPuPweM6eMv3/mC+UlBeCLq3p/9r4LOC/t8B/iLgVGaddoF+If9/FXp6DiRl/75Df+kpvw7+HwC/PfBfTRilFdhfHeGb7Sj/mfO8IuW5GFd14L4OHj3Il2V+ClLvKdbbg+BzmfKXgT8Ofqac+CP86QfSLaT96ecR8aL+WOCNK3zveBzfnAfvHd8PCe4dn+N1fMmZn39IY9R7hvVTPZB/ldOUzwqx319hPr4GThH4w/eUp7cc+BnIv8a+XcZ465KPD30/gR7rgLuA9oeg74pYlDZiPJWUM8jnZz67Av8c5clp/xTwlrI+c9NPd/CvSr4J+IwDzgzKDzOfPfmu3JOG/muw/o7xvTHr9THod5Jy+eJkxit/HKO8Tv+L2YcHgV8SOAdZD/JR+WdX5LNfgN+N/CnGu47zTT5wDX60kn7rBefHAOB4jjxHu+nkZ5F/ifXzC/JLA+Z7KeN4DPyO0H824B4m34LxFYCu3VnnT5M2o78n4Zee67vhk6fJ74IfLaP+fvbPSM9P5qM883AZPBK7zuH7Lajf0fMb/ML70gryVRhfY86HoXxPANze0H8e/HAG87jQcbC+ytD/Eb4/A5xVlI9B3rkG/s8yviHeP1hPW6Uv+Wdpf4t29ZiXQcz3JMoncC58wTw4f87nHerf7574KvSfSfsq9HeCcvfHTPjEEdZ3fcpzMT+zaP8Q3zOQXmY9PA7980GnD8mvZdzej88E9+OazE8jyp+GfucorwX/SEP5X8gziSk/Dt6fKL/T33Hy9dAXNOP7CuTtPt5TwX8W5fWgxxfkl9D/n+Rre4+k/+7w89dYB0notxPzk4z9/hDrqzx028/8/st5VVS9BfDbsL4H0s9N0h3KPeyHgbTrw7qqyvcDpA2h70veYxl3GuUv+MNA8Arvx+3ZH+1I1Y+oN0nB95SknZkf76nenzLApzOSeo9qDP12kiZk/gdAryYBPd9mPvtQnoF2lWn3O/slO/SqR3/rwXs7dJoKXPmafO4bvsvfXnF/so/2km/rPYb1N5917Tnr+VoQvHZBnyTQ5Qr0Tc35Xhx4pVifiei/Nfz0EHCmsR49d2qy7zPT/gXyk1k/T0Kv9spH5NVH7WN93GD8e8lvZx2sRp7pSr/todda4HWjfjrwiyPfC/gVGLf3u0rkFwN/LuOVf4yi3mnwLwZ9j5G6r69A36rIpwsfi9Ks4KG+qDHzPgT4/9J+IvTvx7h/obyBdCC/i/keqtzO9wTeY+ivI/PxDPk/Pd84zz2XPa/ngN+Pgbyp/FkIeB/x/WX1EczDKPLNOa/7A68v/a/3fANeHfjQZtZHBvAoDt320W4f+a7gn1K+Db220M8/5A9DnzG0bw9dupB24PycHshB30PHRvC/1oxTPdlDjO99+j/BPsjJuonH+ngE+eM0cH8E3h/eD+AHdcCnNfV+Af8OzE9v+r/K+oyD/t6HleuU85TvtlFf+VR5Vfl0cixKj7JONzKu75iffPDHOM5dz5d3lPeZjxf4nov5r0J/Y2jXmXQs6Uj1TvDjAsBTz/gZ7bvC136TH6inZXxHoe8tvnsPqAQ9czC+KtR7VL5J+4Xwm4P0Nw28flV/Q34U7bqReo41Yn0l4PsQ9b/q11lfuVh/E1nfi5B/D/NdOeQsfFo5qSf7YzR4zBMu85cO+PNpP5jvdxhfMvcL7T+BDg1ZP3uRnxqT9x5ZAPy6INd3B/4BygcBfxjrowbfPyavPuVN4D8BvJ+AM5S8+hP1JepPijDOq+yPqsA/Rvt4rM/pjG9PLErzQ7f3mX/vh94HvR+up/8+7I8awBvA+q2q/pD5eZT5Vk96mPGPAf/RlKcAz+zAr0N+FfR1HTj/yt/K3crhXennLO2qA38Q53Ec89yA8c/j+w+0r06/GylfyLjqc54Npl5SzsOK0CE8/z4mvx44Q7w/5L0Xbk/o/i3ws0G/A/CVxuDzXZTEa0n9JNDPe6333PXULwu8rayPMuTL0v9m+Kn2gk3k90A/5XHl85+9v7EeDseiVL1scfJNaO/55bnVDjjnmQ/PrZPA9fx6j/XxCfk/GF81+N8y5UPa36G/psBfSfvt7Ff5Tl/wTAT+qdkfych7Th1hPT+kPMB8LoYe3cifYlwHwKev+k7aV2b8G6DrW5RfB88FjCsr+TzqkWm/jfn6Gry+Z97zMb4irA/P+bzAKQw98tD/bOkL/tmp53nk/acV68n7j/YV7SqfqQ9mvBXg/6Whg/r3f5SDuTd5zg6n3lHwz878vUs/L9LvIuBrT9S+qL1xCusnGf2rV42Dzp97D2I8VeGLnehvkveq4N7bn/VQhP7vUK792HuR9uNByMtzqfcVcFozf6H+UH3pUOAtcr6AOxA5aBD5z+FLpcHnOeWEQJ+mfu0A5erXlrNfHlY+gP5F4Z+X+R4PuldnPTYknxL+1NB7D9+/Ap8TrM9v1YvT/27t5eT/IL+D+VgJnBn0d179JPSZQXlx4D9BWoJ0OPWzq9eGDiuBX0j9CvRMSr29sSidQnlp5SLS5NpJ6f8O62s13x9lPy1U3wq8acz7HPiN93n10eqn1VeXg/4dwC8150QZ6KS+6zT7Vf2w/gZ56a8l/a/RDsz3pqyH66z3B+h3AnDTgn9N1mdbxvk798FZ6q/AqwjwZwI/h/pN6FKS7/9Bn7bk79BuPv1mA4+v9c8I1scA1vtS8PsC+V27y0ntVOy/O9wblcNCfX4rylewDyaCr3rfWcxPZvLNmLeq9F+A8lB/c1z8vY95nyLtBH/LAz/KTTqX9nU8P7Wf0J/3rNvsL++vayj33tqK8vP5/+/23s/i4L/eQ8L7x034aXg/vwXcXJnuxaOE+l/Wx0H2m/pH9ZFDmf8unh/aa6Sj+nrwmwpe3qOVP7Rva9e+QF77tv44n9H+GPD+pdzzyXNJe7Hnk/rDOPVCwFF/eJ71uC0Wpc9AjyTa/4P7aXnXL/C6sB860d9q/RHIr2FelpNqJ7D9cNaH51Ax6Ob5U0L7BGlPxreRcu3zpznX1ONrr1efNzbwP/keeO5Lz6Mr8N9J5HPS3yryexiH90v9I/SH0D9iOevnUe3+pE2Qf5SPq6k3Bt4O6LeBfG7yrwPvovoJytWHVoNuj8DP3qTeBdaP8zcHfrmMfifzfQrpGuZTO/Ql1ltHxlmWftQfvaIeBjyysF8KMj/6Z+iXoZ9GMfir/mm/8V3/NP3VLjC/i+A7X+mHcx/5Svut9tzQHqidUH8K5V/l3krQWfl3tn53rJcHqZ+K/rW3e//VDj8DfLvBX4d4b5b/QL8izM8i8uPoLx3tK7N/6/O9kucYeCxj/Pqt6Mei/4r6NvVw6t2qMT9FY1FagfJvaX/S+WW9eq72Ve8APcZxfukHqD1L+5X0/o722mvjM/8HKW9FegX470F/5Ys3aK+coXyh/eucdlX9aGjfh/X8sPZg9ZGUD+FekYx7hvfXhdQ/wLm6kn7zu96h3+x4936/Jf+Bfm25P09lHj6m/1TALwdc9RGTPB+Z/0ysyy6Mfznl8tt3yasHuEQ97//aN7Vnat+8ST4v628eeOUhf4byceA3Cvg1qLcJ/DIC72fpBr2HMf9T+d6T8cXzfGf+tStoZ9gZ3Gd3gscs8uWQd+LR/yTwSQP8mfJD4NfBvrIaP4Z49JMH/PQ/0+9M+Ur/s2nstymkU0kv0E952qcjv1H9uHyC/iror0P5EvArx/zWpd6RwN9N/0v9Lo+yXtUvZwBf/Zs+ZH/p39QL+L1JE1JPf6s88jfSl+hXfvcr53Mtzwf2Q3LK87D/1S82hj512B81WQ85kcOlW6PAPpsnsNNqn32SfTNee5T3BvW78D3vL4fJP0r94sF9yvtVP/0yGJ/+UvLxxeC/l/Fql3mVdkdZf5eYr4mkYxnnz/Q3mf0/Kdu94/gM+g1V/8F8aT/eSvlY8DtAeWntl+Cb0v0HnfTPKUo/n4OH565+kVtJz4CvdmPtyFsZZ3zO36Ssqxn616o/V04Cn8e4B6zTHz0Wpd7f1Pt7jyvEutQuqv15O3BLIW+Vpb+80OdZ+qsJfs8zT9XIN1e+J5+bND/pbOiRH3glmc996jXIN6HeBfAdhfw/WP0B8/cw+Ooff1A/1FiUqo9SP9WSfDHXFfRKSLsOrD/9EfVPbA0e+ieG+tDQ/+fffPfi63hSQ8/ytM/IeqtNu9XkQ39k/ZTz0n8x/TWAv9Z7e4F78dNPaThwjG8YAr9Xj6ycrHx8iPZlaNeN9VWLfKjf68t8VPA+Dd1GBXSUfueCuAv1F+KnvUX7i/aYS4xvJOvBdfEN61B6rw78PbVfvKmfF/AyMN788MHnoL/6YOWfb4Ezh/XShv2fjHSC9mfadwee9vzklKtf/JzzZBvzVhf49cFvZOBvp//de+oP4Tv56b8K8OXzddTHAE+/iYzkv6Vf4xEWQY/xjM/78UT4lPdkz8eenC/ee8P78ETuH7204wb28vC+cEv/a8a3GvnzG/jQE3zXf3E8894TePq3jQB/9/tL0Gcf8SLqq8sjv8/WH458csb3H+NWL/MR9D0eyIfKhf8yH8qH7cBT+772fu37ydkPe4Gvfl59fWn2k/4d+nvo3zERudl9Gu7PLPAj+eLDAX/sob4cfDxnH2V/bvL+Sf3Q36EN+KpX9x6YBPr1Au+m1L9G+Qbw60T5A5QX0++K+cvNvHdgfM2ga3r6i+P7PNpvZRw1wH+28hr1rsFvhgGnFfSf5/wBJzHtczCfzSh/QzsK/TxP/jH9nkjzkF5gvhojpzUiXQ59jL/JoV0U+vxGfh/7Rn3sfsbRmfHr16CfQ0XGq3/DZNr3ZlxPUS8d7bsir+ymfAPnRGrtMfDLadp9me+JgT+J/iXec73feu/qC/zw/nUFuO+jP/qB/Z6N+vqPn4GO+pEbP3QDeuqXHvqrX+K+stv5JT+R/quwX37xfk9+AuXeO7vpTwGea8h/wPi0Q8+PRelZ5lc9sfb7b4Cn/T6En5b1aZxMCe3E2pM4j+YyztAupx9Odeh/OPDPPct6+Yz697NbGYeVDf7qfcb4jb8Zj/bpi66/wD5tPJnrui/96V/9JfDSAO9lxn+evP7f+n3rJ/G59gD1WeRLMD+9lK+hRwHgnYKul1kfs1n/D2uP5p7amP2vf6z+Hsoh6ldXaZ/QL0c9AfC8F/1AeUbtSMZjMa5arkf6OwV9akOPQdKJdHTgX1Gc/aGfhfoM5RfllbvyC+tP+2sy+tcOa7xbPeSXP8D7CPUn0j41+Id2hz+g32DW1SDSgaSXgRfqHY1vuQqcaYxrKmlC8BsJfVbRb1voEfLfeZxfL1Cu/bwv/Du0L2hX+IbxKQ8oJ+QCT+WFcaz/saTrWW9fAl97vPGTeVmf+kNcpLw466EF89mG9sadvk/9c/Av/Wt7sb+TaB9nHLuYf/fTMeQy95v7SzuAcoF66nbQNzfyxwLKTwB/vPGQnAee657znu9s37v+isOh41feT2l3TDuAfrTAqcv6O2VcEeOqAX0KsL69bxYkn5rxtYTextcZb6f99Sj1O7HvNjD+U6QX1O/Rb3fw0h8p9GfVzzU541P/lJj66qHUP+nfoV9JB+b/AuNT/joBHZS/lMeaQxfloX7QORPtJ8J/z/F9Hf0Npv+ljLMUee3bS5j/lcDXXr4OehWAHompn0N7O3h+Dby6jEd//CHg34/1+yP5x8CvO+f5V/Qf2k+0myi/Tue7cU1ZlLMYv3FZ+sfqL3tbeY38FcrLM58/qc9kv9UGf+Ma/qL8Ev1NJ60MnzoDXnfAP7HnPPD2gW919oN2oXC83aF/ZejeWz0V/eu/o1+dfjz676g/6MN41SOoP5BfKr+OZr3IPysjf2sf016mfUx6S3/nIz/884pyM+v+Se0i4BHGt/zIvOpfVx35T3/1MD5Kf+DqtOvEfj9H+/D8GMV69Bx5D3p779gAvb2PqLecTn39RN4FfhPG9xvjeY70Y9affvXPkIb+9d7/ve97/29CfjD4GTeoneoE/bTV/qLcS34t9E/CeMbT/2j6V8/cmHxF3yHQD4Tx6l/XlvHoZ6d/3bRYlKrHOkb/6rGKwA9W6D8FP2vL+PP5DgPr7bbvJJAvBX3099H/R/vHVvhPV8ozgvdy1sen7Ocp6DHyAVf7fhv9AeWbjC87ePzBua7/z9v0I7/ULvsA86W9Vjttc85d9SvqW9SvbOe8GEC/o9UbUf8m+/5dxq09W/3cdPbHNNo/GYtS5dEi0O8d6hnnqr+H98m8wX3zTHB/8L5wgH6N7zO+fw5wnqNf4/vlg97npgOnPuUNwbcB7bJ6L4YO+g1p576iP6J2UvA2Ptt4beOzhSu8qtCpNflp8N2ppJnAN471MYL6h9lHxk0vof2rlB/XjsR33/sYBn3SwJf0B92tHTfQn4XvC6Rk/xh/dSCI/zJ+8Cjr2DhC4wdD+5l6waXGZ7K+XwjkWvVf8aH7Nvku58Ft7XzGt1N/APgNhQ6pwEv7rPda7bfFjFdlfL8jrxqPetL7E+PNBF2vkjeu3nh64+2LUp6A/o0r0E+9N/2XYTxt+K7f0iDStay35PA1/dNP6+dPvYXkN9DfGPpvzv05ge99UP8934cgb/y28dzGbxtv6f3E+8qz+pMC33daDkdJvBL0f531lVX7JXAuMj9Tmf/wfQ3Xg3K/91fvs/on5mD+4oC/Sf2Z9iL2jX7I6jd/U78Jf/PcTMQ4PD9/iEXpA3x3nt5lf5akP/V56vt6GZ/jPZ/Ud5x8v8l9qH92VvUkzM/95O6p1J/p+zvaZ4DfAvr3pf1mvn9Af0McH/Op/6/+WPpfqX/WTzD0DzyIvuIz9BgN6Gcp4+9D++Wcfw0pX0Z5eeZf/n4LPiYfv4T84ftGvnfk+0b1lAe0i0Gf3sy/76P4Po3vpPg+ivY79dPxjPfxvGXdJFMfiPzcnPGH/mz6udWgfkPGXxW4+Uh/BC/927JLT/L6t61h/4/nnH5JeyvjU+/agPH3oHxFEN9XgbzxfdoDbnjvpn0YR+T7TYeDd6B8v2kJ+MXFGF8gP91gvI9Q332s/kl5xPNKeUX5RH2T/qf6o+p/6nrUf9V4ZNfnEfi5frX7SfWvTcz4nua7cSDGf3xKf9qtjWd7E3xbM37f7aoIPX2/awDr+UXw2Q683uR/xx5knI7xOb4f1iXwH9OfTP8x5YWq6quQI5Qf/opFqfrbeOrfGX8L475IjasvB/3rMU/66/7kPcDzBHwWw0cuAucF9zfrRvthWfKD6X8u+0m95K+MQ/+NPu5v0s3s34S+78N6Mc7ae84Q8K/legd+KH+O4LzUfq0eV/u1frHx9eeB3vrHZoZ/pDbuRnsp8F4k/652Jfcp9DMeJYzP1359jXUh/zvLeBLQ/+Pgt4D0EnioL3I+nJ/G9P8S9NmJ/OI9fVOU3L2v1+B8fI20j/ZH0vTwx7bat8AvPfJDP+A/px6c8/pX5v84+1P5S/+5h6GP/tief/prO3/Jmf/wnanGwDee1Hh640prQb/h3Mu7qU+nXiLg+16f8djaK9cG+999Lx/oYfwB9NE/XH/xu/En9N8DfLbSz8vBeez5rJ+05/M09p/2x1XI4wnhL7dZ39oNfL9C//GS0OcT+Eb4Hov6QPWD6gsLgL9x256/nsf1wbcC/M84lBKkxqPUZ3y+YxG+X6H/gn4I+i/IT45Q/wPgzeT7XfmG+ikof5pz9EP1iZzX6m/20M9U4GxCXtQuMUL6016/xkMBv9rNfIZx5cYzyE9Hqd8F/mbSpdDPOEz9KqrCL9/Tn1N/WPIPIW8f154NfYy/vUl/tVg/6jf069TPU/3Gs8ZTkobxlVvgK3XJXyWv//Fdv9ogPrQG/ejvlF98Kdf/qRvnRSb69Z7vPe4L1m1m9mM72o8iX4l+KwC/WyxKPyJfkvq+x9gcem2kfTH1KfSn31lP8Yvd20/X2L39VYTuX2tfRd7QjlOU9f0M+TnUa68/GvhpX9Xeavxj6PdTh/rXaG+8gvELDVg/xi+0gT/5zuhBUuPr1eekp716ntn0PxT+4fuY2m+Ndzc+3LjwndQzPjwd9JjJvnyWdeg7YsZrqX9RH6P+5SDj70L9TtrF2D9/0n8m9l1e+ExZ+l8ZJfF6M07Pn/0Bf/4QvA6xnvUnd9yOV3oY358P/uz7k9rZXb/Gt64N5jm+7+uxn68Yp8H41Z9k0U6u3oP5NL5zJPtHv2v5lf7X6vffoL1+9Or35Tfyof3sj6mB/XUJ432desvVr1Puuzy+06P9MPSbfMT1SH4z8rH2x5TAv05/2/QnAO8d5H2foQ7wapHWJt1L+8+QJyaRTiTdpz8J+K8kvcP62Q/8jcxvEu3JQfxGUu231FeflBD46ntvQO8GjC8Z83eM/f468FMgP52Hnu04z12H4fqbC39xfbo/50P/WsDvRvsO1OvF/BovbPyw8cT6Zw9k37o/96jfAM4l7mPKjd7TfB9KfwDfFZkSi9Jy4Pc4fP8M9Z73fQPoUxz89LtQftf/ojrjv8l6rEp5aeZHO5f3d+PdXJeTmO844Cn39yXVf069kn50c5kf7eKTgRfax79jP3nvWUt5ucL3wlNfFcbPb2Dc6rVDffc40geYz1T0m8g857X3FO8n2ocOwp98p2F/8F5DGI9knFJe45/47vsovpcyk/H2IB/GF7emvAL72fMgfG/S90+7g4/xV/rz+16H9vIZ3pfVr3A+Ov/qc3y/0PdJW7Pu+lL+IvTTj/w/8P+H/jpD5+HszxPA0V9E/3fft9B/W3/pGbR/Hb1af/W2rOes0Oe68jv136a9759qF6/E+LcwPwvIN0I+1++5G/3Np9z3d74k9f0d9Q836N93b30H1/dvfc/Gd01858T3TbZCr33Kz9BlK/tnGPz6EnD1m79G/fC+vsR7IuOPH7wXVpK879cbf2a8mfFnlSnvhn77BvPYTj0P9drGorQNaUrf34Xu+st4fulP04Xx++6/9NZvX//zq4F87XvVytf96Tc57RdDB/VwE6B7DuDU57vvM3RhXm8gJ1zXv5Xxv8f+qkF99RCJwK8T519W5vV7+rsC/fV7aAQ9Qv+H877Pa3wF9ceRnx4ld/12Qn8e3+WS/4Xvc2mP9t2/8P3qfrQzHmkb8mg78geYvz/By3dA10If433SUd+4n+3Qx/Nd+6723lPkQ/1x+H6q8sBf+ulxXjwAfPX9vgeqn01b1tcU1u1J5mcQ9dtBf9+lae79M3if5nn2te826E9RNpCHlJOUi4qC36/I775vrr3K981930K/H+3a+v9s5/7l+/X6efWnfQbPS/jWP9gjmsl/WTD/0o/vs3r+rYbeKZj30uB3m3Re8N6F71n6fuWIWJTmRE7fTdpLP0LgnkUOCu9H+u9dBg/9905TbpxFdeiiHiSv/q2et9BphHZl32ng3DpKvZHa3SgfRr/ql+cxnpHkjV8wXsH4BfnwLPrtDfw48DS+YAj7byHtp2nf077DOI1fNZ7V96yUd5V/lYd9n6Mj+0G7Ux7WwS3W71rmP7FxFMbXUn7BuGHgG+dmfFs3yn03sbLnt/wY+pQN4jiNT9mofl27c8AfW0K/DXzvLN3U7yGfGK9uPPV643XA17hq61tP/+IqwNe/WH/jn7RbMZ7u+v8A33f91EeH72uc0p5Lfd8d8X1p3yM2Ltv7pfHZvq/1Bush/P+DzZwv3qt6MN+Tmf9CnM+FSd3nyr3h/dB74bfqT+BvpYA/RTqAj/pb3w1Sj6v+VruEdoXFyBcF9Weh38auF+a7JvTQ32oP5fpj6X/Viv17Pzn0Fe5Hxo2G8aS+e3iUczJ8/9D3In0/sjN4F9Kf0vObeThK+VzmpyZ4GF+wnfVXmPl9F/obVx3GWy/g/M8JHN8pVf/e0Xcz6Ve9mvbO8P8fQn+98H9NtrD+Z/q+Q6BfqgKf8H0g95P7LHw/4ijtE0Av7705OV9GeG/T/zaIT/D+4n1FPVlW/a9Zd4d8xybQV4byfzb2x17aL4PuW5Sv4VNlwM99tYl+w/2VBXru0G+JcXf1nYxA/qpF3vfhd8J/X4CudXyHVzsa/bVinvqR9/8GwvcAfCcgM+NJz/ifotz3u7V/N0N++4F566Me1/g++UIQH6H90fihauw744eMJzI+3nh44+NTcL6kp1x9mvzvZfjjedbjNt/hJq1D+2997430gvKg+nLWhfZ84/08f/Wf9F1C/Se126ynf9+tbkr/+fQfiEWp8cvh/Uv/KvXy+uOp3/Td5kOk4fvNHeF3paCLcuUU2od2aeMjfP9zBPCOqefQz8/9r/0XuNnRnzwPfN8f1b/Dd0h9f3QN+085Vz2gcm5T1tfXyEXhfe+i/u7guxw4x9kft8D/Jukm/TXy//9w1Z8+Bbyt/o9McJ9R/lfuN25O+b8k9Pd/YUJ/Nu/fw4N7uPMf/l+B94TL5HvCP/1fN//nTXt76B+gX8AsUuUB5QPlhYHyU+ZPvdUK6DWR+U8LXb0XpiYvf1I/o16mP3n1M7ehxy3SgtA5M+W+nzfhPv5p/wX3o1u00z/F95fHBXKX7y83o53xgsYPjtB/gPbN9Wvw/5Kg84vwhyL05/tRvidVh/rGvbwCvx1iPAT09X1K58n48bfhb1npz3dg3qR8B+Vx3mfop7J2Y84X7/0XyC8K3r/T//w/8o+Av36JpfSHB25Z6CM9pNNa8tJL/zP9ivVD0/+sOe30dypJ+SDgX+P8n0o6gfluCr7qX7zn+I5PEfiL8a3qN1tQ3lL/Fc5T/4cl/P8V78/6jyxHnvB9U+2uvmek/fVpytU/qXcK/38yjJevQjvfx2uvfYL9/pVxSuRz+l6e/4OlPYR+crO+7vcOTE/oMxv8f+d86Uc/YXzafva/9qGdsSg1/tT/i1ntOIG/iXlLBH2M02zP+a/ffxgPcAX4+nmvAO9T5MP/G1L+nsf+COM/PL+MP3e9GM9vvP8A9ffwJd99Cf9/yvdYfad1GfT1/52ywJfl2/mZp1SB/tv/4yrIOVDT/Rn4l+hvYnyq7wds0X6t/lD+BL21Y9YP9KufQp/xyFXSPYPxLcH7aw3hx8rTb6pHJl0ln/T9RP19+T4NfGsbf8L6Df9HTn/qCdznloP3Asb/tv65fPd+7X1bPnWR+XCdhP9X5bsogxnn3Xe2KTc+w7gM4zT8nz3jo2/CF9LSzjj1lfR3hnVyzXhQ4FU2Xlp7cXA/ycz6+RK+7Dsavp/Rhf73IL/OI+/+Nm5Hf0LjdtaxvjbrL6A9k3G1YP7kd/I/+eFF4IX/B+k7SL5/NB+8lzp/5JVPXgnu096vfZ/pKfiZ55PxUsZHvYz84/vRBaC38Zhbmdf97Nuk4LuJce4h1Z+wEHB8r9j/1/N/9VJRT/+kq/T/Y+DPWhn6buReo55CPzjv3/5v6Tjaex9NQvvw/678H6zJzM8p+JXv+sYP7C+N+O67bTPUz9Gf669VsA5df3FB3KxxtKep5/vovov+K+vQ99H937XV2n1IfR+gBOVtqb/F+H/oc7//rdC/cBf74zb4dSUdwHgzMj++n+b/Nfj/DN4Hk1C+y3s05W9rf/Q+BZ7bScsy3tHwkXLk1VtNhZ9MIzU+0fuy9mnt0q8xLu3T2oOeAR/9U/XPD/1zw/8/asx+0l+6CPQ/oz+WfILx+X9RtYD/BvykcCxKu7Oefd9N+3Z75ucdUu3d71P/MPnCwB/G+gn9t9aw348Yn4E8sYU09LPx/z19T/UKef/f0/gE/QOMU7jg+QQ/Wqz/FKn+zW8xbt8zNh7A/5nRf1d/Xf0w8qi/ov0Y+M8R8vKTleD3IPtqAHQpCH51kNdXqFegvADl6jPVb6rv9L0p38coD73OUk/5S32J/kn6K52gvA7lO7Wvkvo/Vb5v6rumN6nv+6aj2Q/f6f9I/prnA3CeIu87GP6fcfj/kP6fiu+D6L/su9b6Lfu+tfKV/2euflf/gtAepJ3I9x18T8v7SWr2k/cT5W7lbeVx3wNtwryqn9bOcQP85sCf5O9LwPcL8O2C/KL/6ZfeB8GnNHn1r94PX9MfDPrpN6QethblPaFHfe1N9O/7hOqb1UOrZ1Yfbfz1Qb4bd61+Pnx3ti5wUjxxb3++k2i/LSjX/16/+5zkfX/tfwDZ8FCveJx1nXf4z9X7+G2KZBNvvJAZGQmVPZKEkEpGVvFGlDJC2ckImYWMrLcRkhXqk52sRIWM7GSWke17Xb/n4/G7Lue6vP65r/M66z73uc99zrnv+9zPCekS/b/f6WIRHFUkgk+WiGCGbBHMCMwEXFMgglWzRPCp/BGsTrp8oQg+T3pr4QimzRHBXkUjuCtDBHcCN4FPUtovkyeCmen354IRfIP2dz8awfP8X436A2m/Q6YI/gJ+T5Fu8ngEZ1D/N9r7FfhX8QguJP8g+P/GeKZCr3zpI5gIur0qfqQ3PhLBctkjeIhxjYC+KRn3nLQRzEO91eCXJHcEXwCvpKTHkD+FdkfRb4mstE/5r8A/A+224f8Y9KlD/RrkPw2dlpC+yXjXMv5N5Fcl/yjzcizgixn08xDjzwRMC6wOfXM9FMHMtJ+bdGfaXwP+6Ui/80AEUz8WwZeYz47M+znokIv5qUY6O+0vIX2oJP8znqG0/w/po9SfmCuCBRnPA4xvCvjPhj9/Ac/v4O9U0HcO+S/R78a8EbwJ/sf4fy7tP54zglXENzP4Ue4x4C3q/50iglkeBF/wyMh4TjGeZ8jfB17/Mb6v4d+19L+UdHLab5kmgjfo923SQym/ifRA+j0JH7uOOsI/dah/LFkEZ0O/AsxnAvXzkx5P/32gw4+U/wT6t2D+SlNvEOU7Mu4vSb9Puh9wcvIIOj9TY7RPu0fB8xXW5++0/yh4bGR+y5F+jvY6UX8u42tF/034vyzp72l/MO3PZf7KQLdllE9JuWfh7xHgvxl8RpKuTvlNlE/Mek4OvSoiL65Rbh7lpoDPxdQRrMe6+4ty+5m/HPS/mH4fId2F/s/yf2b+T069E7TfCfp0zxfBseCTBvxm8v9ntFcMeAT+fJD10Ez5znrsR/1J8FcDyu+k3yLIx+cZzzvU7wx/N2b+jjL+v0kfJN0IPHoiV0qQ34P15PooQb/xzOcN1nd70megR2XKp2K9nCL9DvRT3rXPSDnyN8NvK+k/FeNJxfjqs17qArvRnvvPGfaDs8DJ0KEV9KsDff9lXC3BtxnrKy18WZt+l4DHPuC5JBGsSf0q8MFx6DIUvkpCv0NIX1He8H8m8HV/HwZ+X9HvKeB3jHN9qQi+HItgB9obRLkt9P9RBBKVo/28wG8Z3yj2re7QrQj8mIZyT4DPfGAZ1tcRxv8o6S2UP0077yNfSpM/EPxGkv8O83s8ZQRPAMvQTzbK7+d8UBO6Nng4grM8t4D/HmArxhtj/P+jXFb3L+ZpDfj9zHzEsz9MYlz/QP+U9HdQfGjvLcY7IWkEr4P3HvjB/aI7638pcvE//r8GHAj/fUx70+j/Cvx9NlUEP2TdPgzeO5i/wrTTAjqthq6pWX9fg7f0zm+/pBOTHsp4F8A/d6h/l/37SfBax/g3kp5Oug90msz/3WhvIv+Xpp/JpOfAv3OYt3q00xF8D9HOu8iTh/m/PO28CL2GQN+vKb8HOscz//OZ78KkbwOPgN8w+G407b5Hu3co93AsguOgyyrSdaHPp4kj+DuwNvI5wXUIP7xFuh38UsL9EfkykfQ2ypWCPrPkS+A6z2vgt5R6aUh3KXjveMV7PPuOciCB9rNzHl2kfILOayjXjvw3yH+c/J+g9xueb+hvOf8ng3+fgn/LAcsCtzHfSznfJWE+EjGfPUhXIb8qsDT9/w7MzPxdZJxVgPnB5xD15vF/AfaBCYynCXiMob0ewFmBPFY+T4COyudPOL+8SLkv6ScL6zMl/XUj/wz9PQWdzlO+EOmMlDtN/brsfwn8P4L6A8CzS7A+KlKuA/XHx+hP/EmPhm+eZ7/vBR6poWcl6n8k/9D+eeRBK/jnOPKrA/12BJaD/oWC88V88J+KHNsMP1yAr/sBD4Dfi/Q3SH4jvZ72v0QuLqLd9MiX1Yx3DPhL18+Zr8P0Xwb6JmN871G+OfxbkP3wOf6vTTvtmP8X6e8E+JVCDhen/0Hs1x/R/mDShZAfSxjvAvJ7sR/1g/7JKJ8YOdGW/KuM90nSvaj/Afg1A59G4P0+567VzhPte79OBkwa3Le975akvU85D+4K7vcpKO893/t9Z/bteO/jtNeU+R0LvXrSfl7yMzG/aRhfqpT35mcnvxLpM57nSb/H/BaBboWBGTynkX8B/jsPfqXAo4ryi/PoVuj9NOkF9JcFevWGL9X7xJO/Gvp3Yp1+zf89oc9N6QudPBdWAo/tnnf4/3Xau+15GfnbAdiS+X2XfjKTXkx7c6GD598DzF9q26PcGfgjT1wEv/RcR35K2s9Ge93AKytp73kn4ZcxpPN4f6e/dPCL9/a24PMz+cPpz/XlenN9/QZfpKNd5foq+MP9o53nMebB/eND9puB5JdCXpdnfFM839HPIMo9Q777p/vmcfLdP1sx/jXUdx4Xk98h/b31zkLHFbR/lXX7Ffk5yD8M/yRm3k/QbglgZ+Tzbc4jRZHT6n/UB7WNRfAG6TdJt4J+p+FP72spSF8hvwjrJ+a5g3Rf71nIz5ng/ZH3YPLdV2rSvvvNWvAvz/zt4P/3qHcH6P0sOfT0nrYX/p6GfE/O+PaTPxr+zg8/7QSP99mv2noPB687wFzkV2D8L6qfgH+PeM9Cvszl/4X8vwF+KEp7DRjfH5RrSHo/9Z2/jMyf+jznUfmsflI5rXzuEuh11VfVhD534cvxtHOH9ATk3y7G1xK8m9HODfArCT2fp7+9zMc59bfUSwz8D/7ITTuTOa9PYh1eJL2McagPaQ3MTr1a0O8o5+IejOsi6S7gt4d0DurlhW4DPF9B32rI8RvMawno8zv5WTwvgtcq+NP7qXKqNeP7hvzKyIeh9FeR9GzSvaF7afA9RTvtwaNDLIKLwe8L6J2P8h35fzdyoBrjHAB9PL94bvEcU4j5aeE9n/8vu6/RfnfWx2Dy/5SOyJ+yjD8D7V+mXEnGPxq+zkU/M5GnL9H+XvjN8/l8YHno0xe+cX8pBbwFHuoLB3KPnKOdhf69d/7vPvfPEvDrXO83pDtBn+2eD8mPZ32WID2J/esg6ZnM52bGexn8c5N/E3mvXncg7anHDPWXpSlfhfp7aTe9+h3wC/cP959k8G8P72Xg9737D/xTkH3PeXgX+n7H+Uu58wNp7Qfn4efltHuOdCPmt3Ysgg2pv5b2h9N/IdZnLvorTLoefOj+mYT23T+LM/7dnI8f8t4mfzDeh1iPG/n/P9rJBf5x/P8y9UdR/hH1BOQrr5Rffamfg3GNI7+p+mn4Zzrnp/AcNpz18wrle/H/DPVP1O+C/C3IuikP3W5Rfy3ruwL/p0SO3iZ/NuNVP/8D67Uq+KfjPKR+Yg7lq5HfiP0uL+Obyjiygmf5WATTMA7PVWXAJ6v7GPS8hJz+lfafo/5s9YvQay7tF6L8J7RzCPw+Jf0I859efT1pz0HPw6+ew58jfYZ0qD+axzhi0L8GeL0OvtVJzyKdjXRG+rsG/6+G/jPA/1vyTyJ/EnvfZ19PG+zv+Sk/Dnmwj/9/Bu+J9F+T/y9SvgjrXf1/QcerHQy8TgAPxiKoHbkl6+469b2/aycoCPQe38p1BR5tkSMvgU8B1ov60TaUb0T+P9Dja9orwLymZnxbkX/K5wTtJMjHtoFetCP4qz/9gf48P2ehfEbaXxOBRLfI7xOL4BzaWUv+08jp+ay3obR/gf3rWeRWG9L9qF+X9at8zAJ/XqT/l8E7Oemi0GUG+9N1+p/DOBrT3lbK5ebeqZ77DucA9fEl4Qf1HE8Cf6L+Gcbl/j1Nex38OYp231S/wv+VoP+H1O8D/ACY3H0XupRinDO8v5CORx6pnyiMfka9xV/wT2Xam+M5Rn0d6+ZD0t1JdwJP15vrr6HnUfI7ed9GPq1gnrowvzuQjx8C+wAvQd8lsQjO5fyh/j6e/GbQzXO4dmL9LUL5m4/8Ju5vzHcov5uSf5z5Vy/XCfnjvSqRdj/kQKhfb0u9y/TbjvRJ8isoD+l/lvYh9Rzw2zP0o/6hH/Mb+k/oN7ET+p6ORXA58KbnfdZDOeTzYOA51m9r+n+VfbESeM8h3Y78j5iXF4Pzf33Sp9DbtwDPguw/2kF2Q8+b4H8YemxifW+HHlUp/wvt3gYqv54lrRxTfg2DH9eCh3bZyeQ3hB8nUa8h48wBfcay3uLVSwILgt+X8IvrWP2k+pRCtO99tiL1etN+N+UL4+tOehf125B+ALq3Bdby/uv52Xs58ugu8y99pese0tK3BfT5i3N5Ke2R0DMJ9H8BvvmbdF3Pp5T3/u0+9yryNR/7VT3Owe4TJdgf30UevQOUzuO9z7B+BzMPHwEXQp9tyHv9tbpTfzbpH7EPSTfp+ALlasL3CdyLTwP1JykC/sWh1yn9hkhPRR6Whq6hHNX+9bJ2P/0IGH8u92v4cQzr5Cr03aTfC+OdDZzA/I9B/upfNJp0OvB7hf538f9K6KL9fyZyaw94bGAefiX9OfvLBOALgZ6oMfU/16+N/OPg+afrSv20/jfQoQX/D2Wc3ptSgN9C/Z9YR1nh7x8pV5XxaT/S3q/9KA3nO+nr/UT6Hqa9LdppgTOYnwTkm/vI/fYP940GjM/9o2YsgseQe/NZr5sZ3yDS4T1T/WQF+CoR664J4/gB/OT/GZwbXQfyf1X4W3vGDPj7fdr3POL5xPPKWNqPQx/fDP7RvrAO/mvO/68DF5PfHzybMm7l61LoeTjQV6i/UJ+xUP9K5JP+d/rj6X9XDn4tyflG+aq81e7xP9oL7R9bWd8rwS+XdizoNwx8hwJHMB/DyC/KumgOHftR/wbjV6/fl/F9Tlr9vv6Rw4H6R+ov+XagHwjPFzkZ98EIJEoOHncZX3fkyUf6k9F+M9rXf6mxfgz004v6teG71Np1KKfeUP+ZA6Tns+/oPyNd1OdIL+mkXflL5kG/lHPANuzv75D+lvJj6e8h5ZR6UehaH/5NRb11/P+N8w+et6m/VXss5bOC/w7kz0LPZ9AxD/Vb8/9q5q8f9XPSf3h+9Nyofbc5fLWUdVKP/SR5cC4ZDv7LKF8A/urJ+q+D/NF/Vb/W5p7fqa/+PgP4XUMebNe/h34HsF5eQu697X2A+rXofznzMx66zCF9VP8S5vskciSOdq9Cv0nw71v6fdH/IfBrQjol48kDHvngT88FOygXng/GqC8kvQi4Avx7Izf120lQbwi92gX6yFD/dRX67iR/Ov3lVL/E/epdYD3wP0v77q/up+6v35GvPiQZ+HZk3AVJj2S+j0PHaoznGvVjyNfuwA3Iz3TqK+HLZ0hfAL+ZzFMG8N5NfkP9PoDaz7Sb/UX/z7I+89H+V9oDmceb0Kcy7b8MvhVJ/8r8p0Pe6pdUk/+vAK/S32n6/4D6OelvOXIllDP7qF8Q/DYzz31jEXQf8Hy2hvXlPUP/ixaMX/3aVMp/zfxU4v+/2d/zQ8fK+h/cxy+gHe3PZjwJwE/Vx2vfDeizXnsf4zvFPLpenJej9D838MsNz3M/Zr03vyLjUB+4D7mrn73+pdqrXmF9DFafyPrYBD5Fqa/d6Qr8oT2qOPTKD3+0B4/TtJcH/vf86nlWv/e1zKv+Vfpb6V9VmfFkQ/5lzXbveD8n3VS/b+RhS9I1yE8bi+A6+nmV9j03qvedQXn1vy+Av3rkUH9c0ns29EqmfZP5fRm+GUR+Kco/Rv43nI+9N2RADnQg/xn1MdAzrX46tPex/lDUn0h+b8ovoL7vPsL3IGU4f5QFdoI+B4CJoPPv2puBKWjf/WAm8qKnfBr4T+ovqf/kFej3XSyC3gvD83EB9m39w08E/rXTkM+NwMN7cXLwaU75mbT/Ifj11z+Ldau/qu8dfN9QnfwizLvrWD+zpQHevlM6QvoO7Z30HgW+jVkvDdmPX9Pvifb6ay9j/5/G/KjnXgH9uma9F1/l2zzotYD7RWJgHO2uI39ZLILqN96Vjzj/HIE/fRdxFbyPML/6f+vvrf93C/Kb6odFf/oJeA70vVAR2t/BeNRH9wK/xJR/Dbn9hv7/2vO1U9Cf5xXPW74f8tz1uv4N8Kf+mw3AZzn0df38B313wA+en7ohP2fT7nzSp9XHcG7U3+Ms7eVlPKH+/0PlEvmr4Bf139MikCiecnvhS+26ob9xOcb/Hfew74GXtecin7Jxj1jvOxz678H8u/5Tgofnd/cD94dGzP9s6JnAeB/g/9q0m8D6fYt89deZSD9JOfXOb5If6p9/g94P098N8DnB+t/sezXoOIt2h5E/jXWXjXFNIV3L+xf7X2PoNof8MfSn/7d+38PBU//vBPh5GPua95Rp0NN3Cw31lwzeL/RjfpNBryaU/4T1uYn53gD8DzoXYNxpmN/q4PkgafWeLRlPHv03SHfyfMj5rSn026C/O/kHGVdMvw2g/muVmR/t21X4/xPW1239Kd0fGP9I6Oe7It8Z+b7oBeo/qP6edidRbjf0ycb5Yi7066bdh7Tr0fXpeq0Af/di/NmYjy3qqe7jXzUG/ixKOg3t6v/gOswG/tqTtS/Pg57al8eB34vw6ynOb5kYn+9NfX8avv8J9dXK+bW+j0R+9ud/7aXb1Pfzf2bWzQLokYX068xPd/BKwjjW0r/rYynt7UCfV5L6n0DvYYwjJ9D3jaF/dzna8/1aY/jnNfXk4OE93nuG/PeT7yBJH2fdXGecDRjf89D3H/bfpczDOPbRD+CP3ayn4do/SOu/mkK/fOj9J3AE83mM8cTBT28yrq/hjyPkH6Cdq8jpl2jnPPn66+vHXyuwL1yHD/YE9oayjEt+eYzzSDrWh/YX7S6hvqMA/Nza91CkM6v/Zb7P+K6V9IO08wjpTYx/N/9fIz2WeXXf+Iz8HOp/afeQ9hP4qS7la3Bu0t+rKeNJoL5+m6F9rDDzHwd+i6D3aPDKQL77723que/29zwGXrfgi+7QNY75XcL5Vr3WY8DBwN30/xftar+4CfyD9fcS/KEe6Dztv8r6UV85DHzOki7M+k9Lurd2UNKr4Iehnq/BvwTjT8G4GvN/ZvY76TWL/PPqU8BzIXQcTn/aGXxvq31B+5r2oa7MZ2gfysE85OK8on2oAPLgZcajX9dx5n8X6WPkP0m9IeDvexHfkfhuZJvvh6HvNOAW8G9De8Yz8H2RcQ30T/tc/37waA2dRzF/O5iffcBWhe7FW7ux7+fmc//QjvwT+PRkXej3q3xZD718h9GL8+JA1ov+H/pb6AcyNLhfea/qAn28X/m+60Hq+87L913n6Detemngu8yP+ux/A/38LehfAXx20r9+0uOD9em69Hzs+nRfrEV/8cjXGtBH/bX3lenU8/y7B373/O99QPnzL+M/Rf9V6a8g9HnA/x+59/+lrA/jBRg/YCj4GD8gfK/vO/798g/1z9HvdfD0/HwNemjPGg/9N9B/NviuAnK9ENB3NF/C3xV8Twn/9GQcewN7zavwu/ZH39f+qH4Vevl+5hD3y4Ws//zgrb27P+OpCt5NzAf/ouDj/u5+/xDlFoPPP4EfWzH9VZhP/eL0b3G99UH+aGdfy3lhHP17Xr9AvfrcH/tArwm0W1d7OXyg/8xR6Os7Iu17i/RjRr5u95ylnzTthfc9z6OtoG9X9SnguZN+NpAeoDwGnx7B+eJN+htHu95fvNfkJr8iafXvncFP/0/1+/qB6v9pPAfjO/xIeeM76C+/nXPdq8Yv8T0+8mGm61Q9OOtjGPLB/dR9NhH8qz5U/ehY6qsfDe/vF0l7j88KXsbp8J1POs8TgX/A5eD+r50pqf7ArIPCpH3XoF9VTdoxfs0t+Em7WHHw/4z+f0N+xNHPYeieG/r9qv+c+0pAH98t9uZ/3zMmp/77gV3O++9W+nF/vhT4XbtfF+U8rl1QO6H2wf70t8A4HdB5BvXPMr5BoN3C8yvzf4ZxnQW2gF+uqIdAPvi+3PeFvjN/WnlH+b3Bff53xqW/mO8JfmV/2sf5phbthv7Wtem3knpi/doYf3nG215/GNKdvc96PolFsJF+ifDzB5QfRLvNfeeo/cXzspB6izyfM/4faHcj8zED+uyHfkm9zzIfW0ivRt7fZZ9ZRVp96QXWre87fO/h+46y0MV9/yTya6T+BfCX+orX6PfpwL9ev/rWpPWvlz/kB/ljAflx3P8bqidHHj1OPw301/X8C36b7uMPqp9oEfjjK/i/EnTxnd8y9Sv38R/ZRn8nfN8DH3i/SAT/f+r7YfA1vozxZl6j3/7Aj9UP0/4A7i/LODet4Zz5N+MayvxdU78BHXfTvnJL/1D9RZVruT1fQBffr2U0vgv0mQc+u8j3/XYO+ikNvKT/ovdn6NPU+4t+4uTrX/s+sHvgb6tdX72y9v7b+i9C9/Lg9Rvzd472p1DP80xq+Olz0jeot1H+9J6rPyXzot7Fdxa+b62NvMlLf8Wh27dA310vIX2H/nbp/06+fPkN8kJ+fTMWwRPU8x2l78P1l9NOq11Wfy/9Q9tDR/2e9RN9yXM1/09Q/6Z/HvyXgX60M2pfLIF8HQpdldPdwGOQ7/60awT+SdVYX3eRY0/od8n8jKf/dfC9crAw5b4HH+kzEn6dq73X909A3wU3YXzvuH6Zj0dop9N94jttAw/jPJWHrs/od0T6e+0npF1vxsObAh6emwdon4WO46mv/Vq7dX3Gpf06PnifvYN+9I/+hPOR75BGIa99fzSLfpNTviX4NSOtv2Ia5ERB/VioNxm6ltOeyHzPBt9H+f8X5t132p4PF7J+PR+tgb//9h174M8TxqczLlPz++hnF0KXP2h3GvnLfcfB+sjJvjGK/3+DH/QHqq2+Cfk/BvxfY/9S36k+9JL+p+4b2vEZv+fv5aTVy30GPlnIV76sZB6VM8qXNL5X0v4pv+u/RLtfAMdxfvB9qfcJ7xfeNxL5Pj0WwQLQcznjeYD2E4PX5/qNqucl/0/k5xDwnML6PGl8ROrVAP8TnscZ5zHS1bVL6A9EfkvmTbu4flNLmR/jThlvynhUzen/bdZ/Z6D+IxnJnwj/GPcsjIdWAnpOApbS3q0fB/JxO3gbD0n//RPIk+qM8yTp5cyP/of6G6qv2Ub/rbmvxHmeZf9MSX3f9/murxn9hO/7muunTznf9/VhffnuvB9p76fag7QT9YfPtRfVBx/9OvXzVD9aE3n3L+PuoR2X/hfwv+/pJpD+k/nxPWI4jhy+T0t677ilR3byj4Kf7+F8L5dA2veY3ht2Iwe9nw3xvQnyuh7l3gR//WiM/6ffkPH/lE/Kpa9IK5/2sx69V+0lXR/8e7C/GIdmr+c3yo/QvgKeA9Rbah9nfa4Dn1fUg4G/cUOMP5SX8Wt/0e58Djy8x2hPMC6Qet1DtKN+tyzpS8C5nGd9X6P+Rb1LHHRS/+L7Xu2e2qG0f+oP05b/48Gvgfo06L09iHNhfItPKe95/WAQn0V/T/1AHwr8QfV/6wad9X+Loz3t+trzn/Beq/2ZfOOidGI8W9Wnw1fj2SfCOG09oI9xTbuT1v5XgfFt8J4E/sPIV1+v/j5TLILq742PZFwk4yTVJb8Y+QM41w7VHkK/7vtJKNdAPoS/vdf6nn805Vuz3kYxXuNczYI/nUf9D6YC9T/QH2GV65pxuh+7/4bydQP6Ut8fVWE/qcF4jS/8FWnfX91inQwh7fur3Miza9CtGvWld2gvUs+sftn7sPfjacH9eCl8XZRxqU9KRn3Ps55ztf963t0KffUf2478135eEnlu/EzjaRo/0/glh5jfFqwD95ME+DGMu3EN+bMDvjIO4RXkvefKE8hr/T30B8kOfZW/yl39OZW/xtM2vrbxti8xnkGsd+N2j2c8+0grH1ZRXvmwDP64BD1OMx79+y4Znxb+ugxfLQP67mkn9PndfTt4b7AZuj6l3tDzBfAG9HqNeVzJOvyF+t536usfRr7xWYwP6fvnTPoZIF9vgmdu4/NB1/bQX3+XP6n3AeW1h26DHwaARxg/2XhtiZxvzhl/eD4kW7uDcWy1P3SH/jWY95rAX2n3UeTRZfRc/wJ3+56a+ewNXVKQVo+nvls9+HT67wv9Rquf5P/09L+V+Tfe51jG1450V/Ub8Mcu5tH4tPqn9tY+pX6ftOdN34UbL8N4Ghdo3/hBxg3yHaP2Fe1+78ofgf2vMPTVbz70p68H3UaTrgL92mi/of+i4JnKdwXQx/fDxj/xHWBz8ocjj3Lyv/EyNoHf4VgE1bsdIj1GPynmYxf16njPB7/r0PN+98R28Ivn4NWUu+75jfVcgXmcDlwB/v2Y15zAVcjvleQfhX4HGF9h6LQd/L1fea/ynjWJ/EKMqwnz7/sL44PoT+952nO28eMusC9M0P+KcS5i/b8HfrfAYx/j179U+7t29/A90hm/F0D+UvKbsn5Ssr9+Rr+JSF/UP5p+MrAe2kGHOOqH/jp94Zd96jdZ/4eBxjmoRH4m5KbxaysxXuPX+u5duRvK4+veK5iPVrSv/sW46H5fwPnYRfuTA/u29m7t2I/Dv9vppxKwFfO1n/WjvaN7LIJ9mD/9Fg7pv6WdjfnZzHrdB/yUfM+/r7M/zfS9Felr9B9+b8LvUOif4fu5NMgl7yF/kR/ai8P4J6/T/nva1eEj7ezfMK816Cdb8P79DnL7YfLzcZ6oRP9JyK9IP1ugwwzorz+lfg5h/CHj9VQL5JPxe/4GX+NudYV/vpA+yJcV0l1/EvCXfxfx/zxgbuYnHXgno9xc+ilD/eTIb+Osh/HV//87EPkDftO/oDjrTXvhBMbzJ/X30f7tWAR/gZ5dwa8D81kSurjPJKW//uCfBTxKIC/aUO57+C0X+Kh/Up8+mfmsjn7nafKnGx8Wuhrv33veWtbHFM/nwGnAFZ63OC8aD0h9vufLOPB9Xns5eD5L+1fBpxn0D98fxIP3NPQbTxtnBfx7Ml/679wGP9/XZkE+qYc3rtE07f/6LfH/QMpNJT+D8wvMCPQ9zS76bwCefRhHR/bfCdB/Pe1eob/FtJ+C+fO86Tk0H+M/q77F8y/rw++QDEAe6oe+lHNgX/D7Anm/Xn8aYDr6U1+jHmce9baCv/rn7MH7BvXPbdkf9cM5YDwQ2unAeukINL7dCtqbCP7GNV4BPt+wPufTv3pc4wS+QfthfB7j8iwEvweZ/3HIrYLkG79yH3FBirEuCwFTuR7hN/njMHQ+7nsp7n/er2bDB64H5fFK2mkL3sY3XwJf+32DS5yX0oN/mVgEp/l+DHon+B4YftR/Q38O/Td8H6UeqCP9+z5qJ/yr36/+wO94n6e895fQf1/56Pt55aPyMp608auMZ2V8ft9HGbfKOFa+lxrGetFv+1XabWN8tQgkmgT0PuQ9qA78OAz8h7i/M3/yzUTGY3wnv19QGf48Bn5VkWf6j7xA+4vJP0L9DNRXTieBntuYn67grx/PRc+XQfyOqexn2xj3LfC9rv4X+TKIeTSOg/EbPgP/H5Aznsc8f22P0T7Q/T+x9p7A79T3B75H0D6pXdLvMr0A/rXgzxPkaz/Xnr7C99i+BzE+gfo79XK0exd5cFK/B+07+r97/md9Lw78F4yH0dH4WKxL7ZDaH32/qf+WfluF/B4X/a1nvbbgXuP6O0b7benvGPOYh7TroQr1nmOdDA6+d9EcftK+E8arO8X8pmZ+i4F3T+hTh/GURq75vqoT+Dkfzo/fb5lsfELS+ltPpPw69yfW70LuBX5HQ/3Ibc5dft/G793oT6r/qX6nyvnevldlfWkX8T2f/DYkFkHfQaRjnj9g/Opz1fMm9r2P8b2gm+/9/X7KbNLPIc//0V/EfR7+8rsdylXl7F7aX8u8/0R5/aCNP+/7Mu1lvjPbQfmn0t87vmPwo+87tMv6HSDjSfs9oP3sb53hA+NDGS/KeC89jK/G/8oP51s+OOL3LMCzMPxZC+j3+H4Cj5H3iW+i/au6+kH964zXw/nD+EnGTRpJ2vhJ6T2XIRd8H16D+fB9gO8CHoNuvg+ID/wGjLOm/4D+AMpl5bTyuTHrdifjKcL4zvmOlPYXqXem/8/IN7623z0yPofxtq9Sz/fAvg/2+xON4d/11PO9VxLoM5J93bjB/VlvV0h/Sf8z6MfvH2n/Cr9noT1L+9VV6Ksd+2P604/F+JA1Gd8B/R6pr/+K/jz6sRQzfgp07xfoN5XPh423xjj085oKnjMYbxH9A5UPjCeMl6K/le93vyCtnW4/8st4U+WRJ36fYxf5X8Ovezh3/uv7BMZfHP6eDv8a/28aafVXnpeM5+a5qaXxZ8E7i37/0GG99kDOa37/0O+BLYL+rZDb/8FH+t8lo33fvb8C/iMYT0r9C4P4WMbLMt6B8bCMaxDGO3ib89179NsH/GLg/777HPtIv+B8oX1Ifbr2Ie1F+wP/V/VAVbWPIR+zkz8aeaw86MV47/eOPhPQuA/GgygAfp7nPd973m+tnw3yzO8q6H9pfG7jY8wO7ETGx9jpeQXoOcf4XrmY3zzgrb1JO5PfP7Ge3z95zPjuyDfjM8pvvj9ZSdrvcfwLHiPg/9AeU8vvdRofHn7Px7h8p2ocAO3/39LcvsAfYCz936Des/rf+x5VfTT0bws9jH8T6r/Uexn/aCf0HwOeE4F+58zvk3ru9Xxi/PD5yH/jF+WFnsYxSs35KQ+wC+2WBY+qnvP1F0TeLCNt/PY+QRx347d/B3/1ZBzh+1r95rzvhv5znrfTkH6c9bCC/kf5voD62tmnQ1/jlxm3TH2x8cv83ovfgbkAf/o9mBTg7buIlKSVZ8YH0D/IOB5+37En63kv5dqTjmP8YTx0z5lPwJ+bOa/7XY5NpP0+h/eG9LEIui9pf/O90uPw4QPBeybjPhnv6Uf6uct+6PuftZTzHZD2qUWMpxhyzu9WPQwebdUL+d6Z+n6/rAnryXgdxmk0PuP8IP6E8uBn7VvMx1vwQS3+v0l9798vs84uIv+8hxv3823gUu1r4OP3x/zemN8fm+v7QPCro/8X+XWpv5r+jV+/n/H3J/8M+GgP0549WP929qeZ7If6qemfpv3Od0va8bTfnWa9DmT/0q/A7z3qb6TeXzuA+v8RjM93t7c4H/elfd9d+946jKd7Fnua340Nvyebxni+wPB7euqv1Fspd9Vf9WV+/L6k8fsmqX8HX7875Psk/Wf0Z9SfxPisfj97LPUqwXf6b+ynvt/H8Hz7hX5bzM9jlF9P+3/Q3jXaN56G8TX8zqLxNTbAP35Pzv1mC+3NR277nZLw+yS+h8jn+Zb7l+8jvohFcCPzrZ/pt9q3kR9dgR8Az9NeVb9fAfyG/l6nfu7g/up99grz0897H/NUmPXQSH9h1uV60u73iT3fgs8t5n8m438D+obnDc93+rdsCuxq2tm0P3QGb+3iC+D3Cd6TwXs7cAntfEf5Jb6joP9H4bfi0O8f1qd+Ck8xHt8v+j5Me632W+09Fal/PTiHev40nl087XcAb+Pb9Q++q+J3Vvy+Shv48X5xVv3ugn67YZy8icyL9rdJpLW/hd9H8HtIxhstoz86eL8G37/I/Fxj/xhinGjq6a/8f0BeL854nHWdedTPxffAH9k9ZAmP3WPfdyLfZEll33eF7ESWikchjyVZI2vInn2XPSFrlkdFsitrEkLZ1e+c3/v16hzvc/r8c8+8Z+bOnTt37ty5c2c+5dNG/P9vYaoA1s4XwFfyB7B06gB+kiKA8wIQUZlyHyYNYCxwELB60QC+ljCAVxMEMHOap9tpEj+AGYDbnglgvuIBzAN9rxYgH5imBHSTnxN8R5PRDvRnyBPAh4UCmKxwABNBX+KUATyZO4ATqde9YACLpAtgEvDPjBfAOMqtol4EdGWEnt7UL0Q7K4oF8LO8AWxbMoDt4Vdd8H2TKIAtobMCePuCrz/9S0r/p9P+YMolyxHAskUCuJ3+j6N+UfhQBv7WY3xLJA5gQ9Ln6W8f6L1H+Ua0lxX6B+cM4F+U+xP4IfmjwXMM+gpnCuAW6N+RIYA/Uu4r8A+j/1Xo7176MeTZAI6Cr3WQpzTIZ6Hn6A/9PxsdwAn0fy/4V5POkiWAy8H/OvypSvu1wD/C8UkSwBm0v5h6v1I+N+1tZrxXwtdzyQN4Bpiddk5nJB8+RsOnrsDdUQHcA2wPf49SPyXyuQL+LQXffOh5D7xToN/xSUn9dYz3l8BbtHuS8TkC/51nBej/KvDnpf/lwD8DeiKQl9cY3+zkp4XOvLT/AfR8D6wRGcBi1N9Mu/sYtwLQ9xbjtz5rAEdDR1XyD1I/MXy7Rv0+tH8X+jdSrz34DoMvC+P3HPMzNXR1hc7l5N9Hf0zi+wb6tYv8oox3D9rtCnyWcrOjA1gFOfyF8asEvjOkUzNvlI/voPco9M1nXL4QUn8v6f60e5P+bkN+i4N3I3jrUG8f+OeDv5l6lvkwn/whwC+BXeHzfvr3A/jS0P515KMs7cXBnxPAFshhW+RlMeORjPRJ8HSA/q9IHwffcNLFkd8o5Dc9MAMwCno3Q9966l2CH+nBnxN+DaT9EtDfB/xr+P4L+FJCR07kKxZ8r4D/R/KXIJ+58z2NZwjt1XZ+oO8+hc73SacnfyrfvyP9ADktAX0j0IcJkMeqtJeT9AjG6xe+dyKdhP7MhF+NoWss+BLTvw2MW3Paf4P58A35rj9D6V/R6AC+hn7OA/1vkn+b8m9Afx3krz6wD/S1gr6W8OMgeMqhb0ez/kzG/viBetOxQ+LAPyV7ANOhp76ED98BT4C3KP1Obr+hvzx4F6cPYD3oPwt/k0H3cL53p58XkK+VrNc5aK99dABzUT8B7S/OHMCO9Psf6k9nPs6DjoGkX0W+LtCvEuiXNKS/Au8N9MMN6LoFnpLIaRn5QbvTyB9B/4dB10XKNaKeenAa8qHe3kx99XcP7J2EjEcT+DuP8YvE3joHvAGcAP0tGb/6wG/AOxn6rjMfUtC/b6FzMOWcX86rrciP8+sq9H5L+dzM58bQV5f58Yl6iXFOyviNo9269D8rMAfjo91xHvt7Jf16i/rxsGvexz5uCD+1R/tRvhr0LaW9euD/DvkrS72i5O+Hjl+wD5ryvRj4csC/qsyfXtD5BfOnG+Ok3au9+w944kjPgK9XoDcZcCfj/Q7lm1B+Ce1fhP6+rN8J+T6S8kuc/6TzQ08mypWEfymYD79DfxrydzJ/tmm/0o+p4Euq3U47hZGHb5CHBuo75OsK6ULQ8Rf8u5ErgBWoVyVbAKOhYzPzpxzpya4ztL+eeVuPdbAh89fxOES6Lekq0QGsCZ6dzO9dwPvQe5v+1mR8agAXIm/dwbcO+naR3ki6k/sS2otiXKvQ7oeM7yLkpT5ydIH0AsbnHPh+Bv8j6ick/1X48pDvE9X/8PkI8q294zzXPuiA/ZSSeRvWZ8vR27PBu4L0adofwPezzPNnqef+swzycwa8e8l/yPhfAl8i5KM85W9D3zrkUz0c1r8vsT5koF/P08508LnvnUu+drr2+Vv0fyT9L0H5+JRXfvcwPsqx8htHvx/D38OkZ1EuCv09FrzLKPc38zcR9tIv9Ksz/JlL/mfUV59/ph6Fv12ZP5/DD/XLbuovQ18P4/sG2vmedqohz9fAvwU4lPxO6MV3GY8z5I+i/RTus+DnQOxT7Yc22k3Q5/yoA31rWJfGQt/n2tfg+x9y/y78TkJ+P9KfIT+vUj8b+Yug/1PGdx9yEkG5ztT/ifWyE3Quov4Y+pUNu6a3/YCeQeTXZrwbQW98+tmO+bEDft+i3YHUXwY/5yHvpeDLJO0H8KeDn22YB5OxH7eQH4d+iwH/YdKZyB9Keh39Wgh9O8l3vxMLPM33I/RnGfxbCVwO7EF7laMDuJ1xnIo8ql/r0q/n4N858BbEPlBfJaX8AehVf3WBrmZ8fwH6JlK/APVq8X0y8/gD8g+CfxfyMIr1cj3l1zD/VgFXAufAJ/cz7m/c77xN/jBgc76XgO7XGf/OjFd7+t+F9C3oWQ19qaDnFvl5wZMCvVcDed3NOGbTv0X5GcBttLOQ/r+H/DivfnOfQn/m8j0KvpSEjkHMz/zk/8P3duAvS34M7Z5CT74MPz6kf+6vJjJP3Ge5v9qBfMxg/a7K+l+edkdg9zUHby/an0H9e+jlu8DB9CsT9M2hvy/xPTtympX59x72w33m4TXK1wN/b76XY5yOQO9L0DEK/XMXudMPNgPYh/5/R3/WYkeMgL63HQ/4u5N2dof0xzT4eRq8DZGPfMy3VPSjJnTlp3/ltDso/zLr3zrkqaF+O9d77AX3BzdZf37SLwPsBb6a0dBJ/xqS/yn924je3QT8g/xN1N+HXGjfXKLdtNC/Gn7nhL4uEfSL9Bjkthv6obb+MtqJQ54OAw8B58DXl2h3Fnz4CP6khf5PGL9xzMMmlMsIneuiA/it9jLtT2P+FWb9/QJ6/4KuYozvFupfQK+2Zl5/AUyJ3q8B3h7MZ+dDbsanHell9Cud84/0KPKboM9Gkb+Q+duC8bgLP36jf0sioAu4B5jC/oB/PnJYhO+/UD85860q5fKDfx/8dX3uj/zPIt/12f309/Bd+9T9dUHKp6bd5shDW9LX0R8PGNcG8PMn12Pk8kX9Ou7jwD8UvslP+ZuB8f6J9BbyJ2qXun+jfx2guzTtXiJfefmeeu8AP0E+xqBf1Cer9ROSLsD8+B/1EtAf/dsFkd+KyZ+mtw3130IfXSQdTf8ng+8e6cbQE6d/GPrTah+Dtx36YwH1I5lvDaFrOvUzu/9Bv95n/kbqb4T/FZDXOL6/Q/3JJZ/uzxvQP5p0btqfwfhfpV4+6K0J/gbgry+dpE+B5zD0ddSPyfc7jHdb0p5HhP3Pnn81g39h+/wA8hhFvVnQuZn8cshzaaD7nGzkN2T+em5R1vMezw8Zj8bAsZQ7Bn1z4PsnfJ9B+ifyqzD+72mP05+1pK8j3+spd4P0Tfp7ODRudYC7oF+/7yPKh/2/+mO7MV7aDfmAd9B/A6jXAjq+1n8DvZ6L9g/ts0ahn/8GfxPonYp8ZkZ/daH+YfC3QV8dBj4CTme+FkQ/vIDe+YF6tehPS/Lzg78H+A9Bn/u5bYxbT+h6wPir78cHIKIt7TYj7Xr5CfimkL7IersAet0/u2+e7Twlfwj6pYPnuZT7hfRg+BcBfYmQi/qM3zTm1SPwHIsOYB/yS1L/CPWPgLcw/MmLflpAP/KR3kl/ekNvOmAr8HR1f8p8eBZ8+rn0b/VmXr2pfQ4fRyFfyeH/YuiKJF1Zu5/6rj+uR4cLPl1vif79rE/XX4zfch3n+jeA6tOz9Eu7Piv960j/3C+F/T7fAr8k/xz0qH/zqo/ozznoC/vvx4G3JfVbUb+W/ifke6zyBtwBfYX1V5Hug1zpvz6JPB6jnb7QYzxDYuTD/fk69uvuz8/D/8bwpQrlSoH/dsi/Wh96qoD/QQAiDvD9KvuIjtQfHx1A7aWBngfBny+Q772uSyE/3U/I32X0VAzp49BbkfLvU/4P0tfoX1/0e3Lyh1OvO/wvQX53xm2Q9hvy3RD50m9yiLT+lCb072/96p4DkL8U/fQK+c2lg/aX/Yd/8CT8nQZ97stKh/andZkPCaH7S/YxiZGXlnzPQf3EtLMU/VGYfP0fLcmfQHo78uG51RLSaZ2fyMci4BLgM9SvBH3ZSJ/Q70H9TbT3PP2dAP77xqOwL1zBeFyDjneNb4E//cFr/MtNxn8D7XuOXwk723P848yPAtg5S6lfHnnIzHzKD/7inhOH4h20F7QnFntewfeDpOP0pyAf7Wj3EPVqY199oZ0DPAp86Hkm+PKCLy98yoi9NVU/MvW0wxcatwQ/KyHPf6I3tT+vec7muSf06h/Unr1D2vOVvNjLW5G/hLRXEPga+OMYP+dTEuhxnjVBPtWbVcgP689CjGs1zz1JLwrFZ12n3hv6+5GPsPwqt23Bfxb9f5z6l4EX4c9D7N0F4J1D/q/0vzXy3IVxiqQ/s5Gv5Nh7dZHLHeiL5eD7En1QGLxvk1+Y9icy7p+T34b1bhrtZyf/gvFr4H2F/nuu3YL+f6zeIT8X8rhLP2zIP6W+Vn+rz2MZr3bQrz1VmfZeoP+LGK8f0VtHgWfdJyAve6BjN9D1Zw7zx/PACdQ7BP23tUdJr4DeObTvufV248MoPw85eNO4COAJ6s+nf0vZFxpnUI15MoT86uiX18A/knKzkP97+EXy45eoTrkI8PTne0K+HwJeA/9kxu096M1Dui79m4B8dqZeZdL59PfS/ylA4+J+Brp+u24fQb5cv3Nhv5SgX8dp/zr0fUg9/Rr3kPd+4I+En/EYz030ozf80W79jvylyMtHnncxbzx338R89ZxuJd89l/ac2vPpDeTXI78idvZk7S3jRoDlOO8pBn1PkPc14HkZmAn8sa5v1D9H+jf0i3aq+/00yPcU+ON6c0l/M/q1B+1/R/9/59yzGvbX255DMT6d0bPJgd3Jr8783M84tKJ+EvRvDfgxm35NpFwD8osx3sWB/eDvFv2dlF9ovCvyXFV/H/mLkacnpIuAvwry8jJwPHi/hH/heJPwfL4Df/6Bv4s8Xwd/auToovEcrINtyB/IujzIcwLwnAZept976Pcl0kNp5xR0ef7RX/8h41sX+u+A7w/qpYQ/HyNfRUPyrPz2pvyvpNehb7LCb/2z+mP1z55BvrtTvwX1PY9Qv1dF/15BT/0KXOg40D/1SRe+P4F+11XX2VW04/p6DPqqUf5T8tu7P3LfD78uRQdwAWnjFtrSvnELdfXfQ+9o+Od5luP4gPr3gQfg9yX60ZT5mI7yd6h/3nhO+pWUdqNo51noa+d5K/iaM9/+on8r3P+Snwr86cE/nPLGHxinaPzBQvKXU69bNGna78R8qw/9njP/ZXwA8hJff4Dx16TbG39svAfpVdRviz3yq+fu5JdGvrQHK8En7UTjb+4yb36Fz1Ho11cpd579bQzlekO/+681tPc99CyDzljar0z7ytXQkLwdQr8l8NyFdiPQryP0C+q/1i9L+78zn56Bz8eAWTyPQa7Um2F9WpL+eK7rPsPz3cfYN2XY91YL+bffg699gXnIzwK9xmUbj228diLwX2G8b1IuPuu78f6Wt777HesvYn7t4/t55GmcdjLrUh3WFeO7nKcX0YcdkOPa8HUq/fM8LR/j+LN+Asqlgy7j6c5BxwLG/yfmc0vjJ5hvm6Hf84hmwNfhWwranwjf99Kv98GTlvZPIv+bAvBvvEZ95Gszct2WdTc+dBYA5lF+wa/crwzt7z9CPtznu7/fhPx5nul5Zwz0qU9GRAcwE/uBRPCpFuPbh/J3jAuj/9Pp313W0dPUa0T5SvB3t+dy0KvfLnz/w3sf+eBja+b7efphHKPxi9qV4fMV7ctT6IeefL8Hvmn6o+if9y668P1n6F+PPHge9Id2Pu3/jtx6flIdP5T+9x4B+Dd+8Azpf8B/H7pe8d5FKL7/HeidYXy45/OMr/ESZaC/CO13p/2F2DvuS90HTqe+8T/P0j/31+rP8P2dYcyzE6RzUq8U9DdEntfTfmfmh/FCv4G/CP3byfgb138PeSxk/Aj68FPkJpPnzrTrvNTvoR9E/8cu8Gt/FgW+jXxs8XyL8h/RjyukY7x3BmxkGjoywo9X0XMvGl9qPATz+i/42Bp9lpb+L6CeenIhcLz7buhT7vOA/wPSGVj3RvC9AuOvfd0I+e4JPY9ID0R/OL/Efx6+O7/6gN9z1/B5bG/9laRHhuxH4zc3huI4jU8bBn/OK0foAc8n3qM9/dX6sft4D4fy3h9aDZwEvr7w8SPST0gfgL6jjF959QL0uZ8bYDxjmqfbPc78mMP80m5NB9+1Xy+h/4yzD8fXz+B7S/iekX3MQuirbVw5eI1z9f6S9mZm+K8dWpr0VvKHQm9P+PU54x+HvNQHbyL05RT47/nWIvB6vuV5V33o1U45GbJPwvcmIqjXAfi1/iHSxrEavzqd8YqknSXkz6T/w8C/nfKOc37ky3MBzwM8L7gKf1MzH9MAo6DHe5pTaa8m7S0iPzP41cv6BR3/ZZ7PYbd4bhk+z5zH+nEIvv6B/bOG+rHeZ9E/CWzGeNSinnGR4XjJ/Mj1XvJXun4yPr+hD7ZRvjH4MyCfHbEHjE8zXs34tAjW/TGUbwncTn5H+FUMeTJ+aBfpl5Bv47/uk+/4ev/FczPP0Tw/G0D7xjdmp7259HOs8ku/EuufRt70255mn12Peve1h5nf94yjABq/1hf+6j/9EfxXoC879J3VXw/ev91/oV/Vi62x540HnheKS47H+LofOEq9/bRXiH41gj73M+5vwvvp1ei3Ue5vgJ7Pd2O91N/anLTxKyOhx/tXl+lne/CXRn7UIyVJ9/L+J+NfAPr7RQdQ+RvMeaT3jr6FH93I9z6E9yPU096POEV/elAvgfc66d9f+vWMR1Xf69/T3gGPft400BvJ+vUe87sT6argvcZ89h56NvSv99sTGO9A+mv6abx+LP3xnkl97IMPtfdC8SlFQ+dLoxmvufpnkbfxIft1vvHOzk/yR5GuQf9TYN9NY3wLoX9f0A+Dvn0Z/lRG/gt5r5D55DzoLb/pVz74t5J0YujbAZ7H2ONPjNuhXAnj8+lnHucP5eYCw/Z7Wf1UwJPMP88vj5B+ZDwq46H//WPau0r7SWhnI/ITw7q1mHYLgqcu/b+CXWvc3WXSxjfVxX44A2yMHGSF/vah8xPPUzw/eRN6XqeecVSeL43xPoD3laDjHPQfgv4p9PMg6S60tx37xfjnVcznXOCPBz2HgGWA+qtHheKPHyMPxh/Hopcbk18AOchKfjXa7Q+e/dBl/NIN+JbO+/XQ9R35/3XvaALjuwt9P5Z+jzJ+GTzh++y+Q6D/owP88V5td8Z3J/gXUv4S9E8wfsn9W+h9Cd+V8L6N8XzG942BT6foXwPtQN8VoJ3F5Ht/tyf4bzO/vc87ALu9KPn9sJPGQP+/fkHgW/qn6f9z8Ff97H029fNe9PsI4AD69cB4GujVD3KD+dce/uRlXLxHF74/p3+6EvR/hH7cSn39X/qx4kO34/cH8macr/G9/95PBm9u2nsXOvtT3/OJV0LnFJ5P3IT/eWm/LeN3C/p6Qd8W4CbjN5mfl0i3ZTwekR4NPTmiA1gbfL6DMMj9BeW1z3KCZ5Pnh/r/Ga8U0F819L5ADPsu3xnwfQH1/ynqqf9dD+7y3fM/4xI8/zN+8F3jn0LxhK8zb/UvDqZ9/Uh5GO8Nxo3R/07g836Q94K8JzQA+t2/uW8bAF73b9uxf54Dn/GDxq93Y77Pgg91wK9d6vriuuI5r+vLOPi7Ub8J7U+g/d20/wN2ShLaN75f+TF+/jZ0KD8XsceSgM93B2Yjv+4n3V+639wT8q/vp77xTfrXvd9g3KL3HIxfvBxa/1wPS3vOw/it0j4OxfOkZD0ZRP1o9af+XNINkLNsfHe/6rsLF0PvLtj/daF4QeNgjH9ZD/9fhL4NpKfBjxPIVx7494xyYPwk6+Vt5KILcjcW/hq/WRoY9o8Yp1nHfaX6g/6VoV/PA0vR36VCz5v1/6D/3R8Nxr4yPkh/+DzvszBeq+nXE/KzW9775aTjwJeF8V8KXe63jbvxfaTp5M8Hj/6BVtR/nvXF+3euv1Pg7+v6R6hXAzw9oecG/DQ+9R3ajw/+E8zL5cxT3xPwHYFcxl1oP8OXn2i/ButFLeClkH5OHR3AB3y/RTnvf5R1fQjte+eD/0Xfp/K+AfSs9j4b8vhf94C8v++9fd/ZSBjyj+oPdRyL+b4C/H+J791ofy3y34j113j4LeDPQP2vSBsPPx07Jop87/cnMx4beoyDjUf9B+T3gX9bkSf9w2H59RynM/LovY8KjLP+/nrwZzj82M/3Pb7vQj39M2vor/65Duxf1rAPfAT8w7g79jvGZRfEXnR+h9/T8Z2d3KH4LeO1jN/qS/1Y+OH60YXy+yj/GH6vNT4ROuag/zLCN/01+nMOMr7zqXfGuEf4G+X9pqxP02/czWPwHsQe0K+n/+eg7+uwfuQM6XfjcZL4bgr1xtPf+/rXWb+Nk0kNPAU0/s59ke9hGYc3F341oN15pO+STs54RQIran+AX7txLWnfuVlE/3yP4ZrvDIlX+fuPdxeMZ2hCu3cp531M71+Kz/jspMYBMr6dWD/3BSBiu3GonqPDj3Ccifcwf/HcC7wnvAfO+A/UH66fhfk1j/wp6N/dvvdAvvuPbMj7MvC4f3d+6j/RbxLDOOo/+Zn6d/UjU+8N2l/A+K+G7hXG6XkfEv3fD7vM8yzj4S9gf+rXNX5P/25Rxr9qNHRiD+ykP63R391Yd/tix+3wfiH6I633dsDXBfpfhl83wHfE82rvZyMXf7M+G2fYGnzjvM+BvKQD7xvGj6Gv5gErQY/vjFxn39YVvnq/fzbrp/5C7RT9iH/SXnzff3NfQn3Xuc/Rp397rmYcDPUjGd/eyMFM4/ho7zT21WDaPeA9JfKNcyvue2HwaRb61fhr462Nvy4Gfb73oj9OP90Y+Oe86M38yWVcKvjX0/977vOMH6LcB/RfO/sydA+l/1vRdwXUf947Y3zC9zeGoL+8x5Hf97xovwDp9tRX337l/hN82tfTkWf9YGH/l+eYxnt4vtkT+fD9xM+oP0s/rHEe2PsfGRfMejDe91toT/+U9wPrAO95Dmp8Hf170XfymB/61R5Q/n/kd2J+3wV/POr7Pkm76AC6L3Sf+Jhx6Eo6DWnjr6J935Hxc/8etg/fJ79/6J0E4wProLc6A/+Ezh/BV4zx6cE8KAu/jBcvjj07SrzIWQT8PShfaG8W+jo54zuV+dEJfumH1f9ajvW9FeuMfnT951fZ9wyjfjLvKdHeUvi/Cjib+XALPMZzGN9hvMdy6PgKep2/PSiXhvZu0J7vxfoOnvfHk4L/MuUqKVfk64/xnrH7bO+nt4D/3pd/ifyMxs/C/23GgyInFSnXxvgXvnv+P9T7K9rT8PODyKfpk09F6Jf80/+UHv2znHLbjT+BvqPMt6+pn8t9rufB8Nf7jY2Y367P3pt7QTsSO2aP8xx6O0KH/opf6f8k8KV3vwr9jbRnkL9i1N/lOar3pY3vpL2vWcfWMj6Zmf++36X+9v2uk8wr35kKvy91iXllPHf4/Zk40ivIH848Ls941oC+K57bQ0dXxrMX9pf3mr23ehn6jLsvBb5MlFtAfd8DcF5X8N4A9HeGHu3z4vD1AvnXyJ9Nfgzj5/uZjdHfngs18j0F8LzrfSb9pNBRin4eZjy1K73Hb/yy7wZ8rr0fej9gFPpjgfEnpI1X+5r13Pgu472M7/J9Iu2W8aH7j8bdGm9rXNwA/erwx3XXddg4ubPQe5T8/Mz32eS/A70/kn/O9zLID7+/WddxNf4R/uhncZ3Rv+L5pe+i+E6KejiS9meCZyP43zb+m3EdzfwyzkH7tBV2zT/gTUra94gfgXc99XxfsCv0f8r8Kg79x5F345t8Z/At1g/9M7G+Tw295Ywn8HzO93PBb7yE7//eo/4Q70+7v2G98j2Y1cxvz7cOu27SXvj9TP3CfYHKfyztK/eD0D9/I//nQvavdt4Z8HtvrDL6ynuS88F/T38c/HuD8Q/bjzsTP43/TfB9Q/6H8NP3/0pj71fy/CZk/zdxfru+Ar9Cfn5m/WoK/beQw28oNw79nQk/yEBgC89lGPf7jIP3+z1f9914z9XD78e7/rruug6fIl0ZfZZDu9r1Dz70pb/akQ18z8i4H/qn3TgF+h+Snu37ican8r0A4/8R/DfufRzzcQj53fRHGZfDOL3FeOxmvFP5jqPxu7T3GetLjHY8/SvF+MRnvXT/pn88lvbTqF+Mr6J/7r8qYh+M9L1Q2vH9vcf4y2Pox0Xk8Tp0uN8xnsT9kPsf11/X3eyh9Tc5eL6Bj9d9RwP6rkKf52w3gMZ/NTL+FLyN0He5SCuv3rdUbkfSP8+/PO/yfe2e8E/+1KCe/JFfHdDP+iXD/vYSnhvTrxt8b0D9P41PoB/ZjVOgvRjWv+L6b5lPI+i//kf9jvohW8C/9Oy/rsGXM56PGx8PPU2h7wTr4WHXX/1tnt9Tfx7tX2X++G6A80T/XIz3IqID2BA8f9KfZszvvcDfnce+TwZftNOP+W6D52Pw3/uPvh/k+0We2+o3047Wfl4B/66iRzznqaUdD1/nuv+lfGf9V9Dle8p1Kfcm9P8BfcYPxMIv3+f2/VzfzfUd3Q2Mz1z6/y3jmBpYx3j+hE/3f6v3BcBjfIVxFcZZvMr4daB8U+S8jHE+8Mfz3Xuhc95+ofWjJuPaj3b9vwbtE/mpnaJ94vt0BaC/LPV9n+4C5X1f33f1V1Pf/en7oX1pFuMH4H9soafxzSHt+x2xjHMv79WBx/i0cPyw8Q9DvJdnPDD1mzJ++rXC94ucb12Zl8a9eh4xnPTd6ABuQT8a5+55jv5L/Zbuq/Rf+h6d57bh81zfxV0KvvA7KVvQ/2mQ+/XAxvD3B+ATxquCcX6eb5F+7H6U8vs8X6P/kaz/S6C7IvmrkddVwKroc98B8T6i94acB0Xgv/uVGfTnNPPH/y/RLjYOOPy+hfHyzck3bt73yzpDt/Hq/p/KA/2RfH8CrMI4Zaf+PPpfETy+G78gpL+MQ0nHfFKfGa9p/OY0/Vghe1o72/2s9nZS1pdXqb+Ddl7w/hH5pWgnHK/6Fv1xn+a+yv3ZVfedxicxX3+H//ob9T9uZ35UZ/zW8j2H90lIF/B+Yejeku9Z9aJ994W+j/MB67P7Q8/VRnt/KHS+1pZxuQb8HbiGfWYU8hP2wzzn+ox9kRL+eT52CX3h+0/5yPcdKN9/Oul5EOkFjFtR0v+1b1d+3b/1oV52+OL+rTr0ZHO/wDzZDf0VowPo+e2v4DtjHBh2fRbajYc+973MleitU4xzEfSs/3PRDn5mZ35HAytAx2bw+h7rTMeH/Nn6w40LNz4E+bnJfPZcwfenytDfKdhT3qvsSHsP4I/yVpD8tSH5qxkdwFpA3/cc7f0qoO9x7oHOTfB3EvLr/wqdEx/j1BL50C7WTtY+1l+k/0h/knFY3sf3nv5I5NH7+hWwex6STko/jzj/KO/7RsZ1bqP/M6F3N/VnkK5I/hbw+78r4ffVPc97BbzPAGOAjq/vgxs/6jhXQp9PQP6LUq+h78dS3v9l8f9ajoBPu9K4Kv2/xldVY71sDx+Mt/b98//ya2tnNoDvzRi/52nPe7D+75Bxrca5Gt/qvRnf0/V9Xe9X+H6G72Zc9R4c+YND90+8j6I/ZQX9853y8Pvkw+mv8QXXyW/neka6MjAZ+DwvL4W+9VyhDP0fCJ3h9zx85yMR5Xt6HuJ4qX8Yp8bYr76zWpj57ry4Gh3A9cCltPeI9pPoPwV/Ju+f+H4weJoyHnmhX/3sexC+E+G7ELPAb/ztKNoxDvc6+dnRh/4/yHLaW8F4GBdnvHAy9JXv809yfwC/PqX9bPKX8bsa6t8s6nuf3/v9+nm83/8m9rP70q2M75/amaH7id5XrA6/JjHv9Ft6/6KF+yPkcSD0+953JO1nobzxmEcod4183//w3Y934Zvvf/wG/9Xvw6Db+/O36E9m+LAWf8pQ329h/p2FjnKhODzf5/XdfN/R973eA8zLkqx/ZRmPoa4zrH/e828a/2k6w/c/WtGPQdAfy/h7P9v349JqX6K3LsPn8Ps7vltwxfMl5YT+R9Af3xEIvx9wnHr6y/Xbe7/8MvPTeynGAbSCPt/z9n3v+vrFqK897Pua2svax0fpf2vaVR95fuJ9OO/HRQG9n9Qd/vh+hvEZvqNxm3GLot+x4PP9TN+/1e70HVztz3C8+b/vTZP2/Y5jjE+3Qk+3Xz7y6f57z8X3Re9wHvYZcjWTdAHv9yPPnv/87r0v6Dvq/we6b6GfWSjn+ORxfEg7TmH73XgC7XjjGY1vNL7Q9+Z6sn6+DcxDubPU7+V+Sb8b+rsN/Pf/hcLvThhfFeaPfIlDPyRg/Achv97zeZ5yxaAnvD4X9P4++5kxxpvBh8TeN0X/6H/u4vuHxm+wPup/bgo9+p9XQndFoP9zlov52xx72fgK46r9H6Ayvn9C+nnSrehvK/TZQmBrYGn66X34evQvM+vBJMbP/x3Nr76Cr3V9nwW6zobsYe9v+b9c/n9LctLDGX/fG/Ud0uboE98j/Zz55f9Ihv8/Mrweu07PgH7f//HevPHxP5C/jfmpX/UB7aSCvqWM30H6fxI71PNp/4/VuM4dpP3/G9/D9H1M7Zvn/L8Y0toFuZif2vf5kL/M8M3/z4lCfrXPe9JeXu188Huv33dNTrCf8/9owv9nGL5v8A/jYzxoIfTNecqXB/9r5BufUIb2w+tTQ+TZ9+Jm0f8G3i9zv4l8HWd/5P/bRYTum3oe/T32uefSe3z/Efy+G+F7hfrX5J/8Wk959ze+C+X/12SDnr+8f4V94r3m/qS93+x9S+9fJjYuEPgQ/Wxc9FT0Xzrav4P8eO5vPIDjUZL5Wlb51h8C/3w/2XNKzyV9P9l4Ye8Vhe8b5UXevwV/KsrrR1iFfBh/WIW08Vg5GW/v79bzvN77y/TvZ+gqCv63ocf/FfX/RG8anwg9/r+e/6vn/+xlpr2hyE3G6AD6znwP+Ou7JMah+z6Jfl79CfoX9Dfsp//GRfRmHP3fX//foC3zaSblvaeSGvn0fV3f033s/T3q+3+b7re0L7Q3oqDna/rt/zErD96/8VwzHB+Yje/ewzlAvueMnpe9iBz38F6q6wP89b679+B9XyKX/x8DH5vDJ/+fYgzz5QH9iqP8ddp/gH7OihzojzwGn91/7Y0OoP/PJX09ma89gKlo3/dftGsO0Z7jb3zkE9+7ZJxigGnpz2ryPe/y/7X1rxjfY3xR+H5qPO1F+FbIfQP4qkG3+mcd9dU/TdhfbCT/e/Tsp74PwvjrzxhPWvsyLL///n8P9Zejj6Oh0/+XGAZ9D5nvLdATP/Dd9y9vSp/nY9Dt/2z5bmIF0urJ94s83V/7Lz8+ZP7MQS6M13ee7If/HdEPCWhHf5/+ZuOjD4TijNahHwYwH/oDfT9Cu8j/V53pfUXw+/+q4fe3YsCjPzsX9oXvJfl+0nT45750A/mjsQe2ur+A/33h8wWg9uhw9pvVpJ/x1x5tA38dN8fR8fs/MqAzsHicdZ11tJbF88AvIA1Kd7x4kW5FQgRBQEUBCWkQCYELSCklEiJdkpdGRFopCSklLhcQ4YJFKaGggkiJhNTvnN/z+XgOz/ny/jNnn92dnZmdnd2dnd03NlHU//8mFwjgSdIjCgfwi+gAjssfwHpFA3iuWACbZAtgpycCWIH8kcUDOJV6RcC34PEAjqLcrdQBnE77V0kfJH9q+gAeSxvAt0knAV+FdAG8myaA/Uknpf4O6Iun/J/Q8xn5cZkDWK1IADeQn1AigFMo9zr8jKHc12UCWAO8XSj3C3yko/yanAHMUTCAzwAPFKI87e/MG8B14GmCfFODbz34bsLP8ZIBXA6+I9AxNVMAz5K/gPp5yK+XPYBlwL/k0QDWAk/DDAFMDH1rkfdq4FS+bwfWoF4b5PU57bxeOoCz6O9tfB+JfPeTzpElgLnyBHAlfE6C/tTIby71ZiD/LyhXJHkA10DPS9BRkvqL4b8T7Z1FP5qXCmBH5Pkq9YeTrkf6EvxNpL0/0PPEtLMReW+HvvvQ15fySyPQ+5Bx1At5n4G+P6A3O/3zCumtlH8beu7DX+esAYyGrjmkN0DHY/Bbl/qFUgXwSfrnVlLKUX4O9H1Luj/tH6XdVvRXBvjbkTGA70B/DO3lIX8i5f+m/mnkugD+atO/yWnnKcZDHPk5kU9t6p97BPrBs5f6Q8kflDuAl0nvBW9d0k9B35vw14Fx9yr0/0T/30Re39PO0JD+rkP+MfkCeBK6aid9kL5foCcjsChwCfllcgRwAfgngH8l9D1FuQrAqtjHw6SL0p93qF8KPn9BP688FsDLwNXgT03/z0Qv21CvFvUuA/tjH04ix09pPwvymU9/FYLeH7WvpFcwrmdQ/yL17qrPyaCf9o9iZ9KjPz9B9yLK50fPyzJ+s1BvMHAD/dcceVSl3cvAzNiLE9D3A/XSkd4C/fPBvzcSwN+AScDTg/wljLePwLOC/BzoR0vqtQLmgo+26Pc4+JtFvcLoezPyl4L3LfrjGfq9J+33wp6X4Ht7yp+lf7OgH43Iz0Y6K/xuon9/I/8+8+h7tDcI+uYjl8Gke8PfMurPpt0B5H8KffuZt9OAvw/5Xak/gvzS8B+NPT1D+V20+yT9Ph65XIe+4vTnEPCMSxFA54MLWR+kLzPwAv3wGO2mAG8/5DKUdN5cAXye77lJ/0r6LPU72t+M5+Lwnwj9voddGEH7W4C54et32mvE90bgy5wygF1o5yPo/oz8IvCr/hclrf6/in1qD+yK/dnJ+OoOPxH4GYS8+0FPCfojL3Qup1zxEg9+75P/f+fPIP8V6HkB2Jz2v4kEsAr1EtFvjdHfydib4+SnBJ/zbCHkms11GfmVkb/juzZ4X6fcz9DXivKbsN85+f4F9Y8lDmBLyuUgf4Pjn+8pkdMS5PYY+U8j36rQsQj4MuvHReDLTfl36ecSto/97AX9vckvQP4s5O66bDP20/VZZfRxH+Uq8z0lcniD/iivPae9yvRPGuQ7EFiG8VSJ8ruwJ6eQwx7SmeCrCPq7hPYLkF5A/mzsR0r1HjmmIt0C+hejv7tYT952fqa9xdT7jvTj1G/G/B4N3TmRXynkNwF6nkfPXAc4/8fwPSv43iQ9wvnX/oX/EqRnIt/w+HmO746TZPBzCvk8z/z1MnSE+zcndNyCPvddZcl3PzYF/ZqNvX2KeuOZX74iXQb7+STwF/AUo39WIvdo7M1Z9KMP6V7Y3a3U087OZvy2Y/13JAr6gBUYJ+/Q/8Oo14d0Lu0B/ek+JoZ26lO/FPJtR/0slKtI+7vA5/7yIvXO0v+56K8Wro8jAaxOucXkz9Fu0/4s8D9P/71Hfj3WUy21v+hffWBbxtEO+DuMfHvS/kDofJ/xN4z+34ueNqTeXeTfPqSP6ucg6MvM+rgG6wTHWXHKD3B/SPu1oecH2r9C+xcpf5H5ZSTymUn/JlB/PPro+KxCe08gj/PQ81//op+1yE8M/Zmp/y7pBNrfAP4b8H8C+zAaer6Eny7QX4PxsEO7Sz8UAH9Pxz/1aqHPl5DfGfCfBa5XzxgfL8BPX75noL1t7neYb0uzTh6oHQd/b/jZAr1R6Ot8+LuBvlwH/gN83/UNchtE/Y/kn/EfFwngXL5vczwjr8zQN4J812k/I5911P/KdTTpXrSbBXtSGnyTGY8toH8S42MR8vsbfYqH3rPwc49+7osdOux6jf5x3fM4/eP6557+H+Ad4CHoywPe09TPSfpe0QfbtT3peRn69mN/mtBPO+B3HfiHIZeJ6PNrkQDupX5x9DsWuV6j/FLKT6X8BddPjNM3kOdOyudCjk3BMwn8+enPdOj1Zua5o9BbH3obUO9z+LwN/kXUv8r65xD63An8b9J+YuRdA9gXeAB7NwV89aGzP+MjMfW/Ij8rMBP4G+M/uE36InQPwT5fgh7Xhd8ip7aMnzrsVwoiT+fXWbS/BrmMp35J5DOK8XERf+db2DH9oDOQ007s3Tm+x5G+Sv8XYr31B+VfAkbBz2zGfQH4mkt6EXRqLzICt9CO9qQ/+qN/owRwI3Lcj3wmge898EfB3ybo7c4+ZDZ0NHb9gf7vsJ+AE+jf2uhjAeRXTv8U+KvyfR7y2Ej6DvTlor13gecZdyfpn67YizzoQU/4q065Zoy/WuDdjVwTox8f6u8QYj9Ok9+QdufBb0/wbAP/JOTVifpTSBckP7z+7ow+xSKfeMbXDWAVyrVBHh8if/ffuZBfMvj4lXarUr4E9vh38o+y/xjkuE8SwIzkbwTfXuTZg3LrGR/LGC+ZwD8K+xah/HzWN6vIT4TcxgLdn7ofdX+6mPwi7kfA1wA5/+T8xvg8DB1VSNdDP9ZgP+Yi1yyOb+S/EP3+l3bjGb+j4fNF9CcBOvZAbz7oOMP3heh5P+j+CvpW8v0zYBXm33S0Nw54DHyfIqfq4ImGn7CfuAHycj4qi344X70Insm01wI614DnO/CfwC47/8yi/15FPi0ov8/1HPJ6jv44hf58iN68Ah/60XtgF9T/tdDRjPGdF/3PA7xCO//QfnL64zr92Rs8W+G/KfYjmnmhMeny8NOS8k2QR/pIANNCXyfscgywM/AN6qVnXfEzeH9n/Byk/hHK56b8JNuDj1rk/4z+PYr89kHPNfjL6jxJOgb9KUz/D0Bvv6JeR9pfxXrF9XZG9+naL/SilOtr5H+W9HvQo93/mfy/wF+TdEvK94WO/NBRkfXTEfIdr47TKfTDWeR2ju/6L7eQPxy9Lu3+EPrLkB5G/mbKFyX/KPb4PHQ1Jv0F9SrRf431X8NvbvR3C/lN6afNpIdQX3s3BbrbMR9Ppv114KsTCWAc9Cm/SMh/rD9N/9lxxkcr/dOkS1L/UfT6GPmpoGcm42Mp+tKR756D1IG/055jIe/PKdcB+qMY72uZl1KT73qsD/PjBvcVngfQ/hz0Wj/ox9h7/aD5sL9tkctB+GlG/i7k0Ax+h6AnK6DP+Wcz7c9H/j9iD06S7oXd6weMo14+2rlj/0UCqL+hj/xjBwuTvuF6C7v2PXYulvQt8rOid9nhrwdycf+RB33KgH4NQE7fQ19++rstcihIegH0rlP+wPXASrSXGrvhPvg78K7wfJTvJ8HXgv65B/9xtPdDgQfpqut5EOnHqd/V9T/98zfjP575rRp8fIx9X479ehF5PAG+gehnUegbA0yEPNWvyXzPDz3LkKf9mRH75jnkXea7ItTTv1WO9lMhr++grw39uZP+PUg6KfJtyvp4C+3MBH8X8Ofie2/keID24mivlnJlnLi/epf8foyHsdSLAIfB3xjsmfPKPepNp3/HYk9OU95ziccZH9sZ17+H/Atf00/Pac/ct8Gv8o6JBLAk/ZFBuwb+C4yXXtRPQr1PKO95Vw7Pe9EX/UvhcbOa+h+QHmzcCN/vUX8DchgC/pPA2/qBwJ8B+5PA99mUO6W/n31BFOnM6OWf6HcM7V2g3HH4nK//FPrmQm/4fG0U8n+Kcp+Tnuj6Er15mBy/Rq/VG/XJ/XlJ6pcC7qf+Xcp/RvkdnnuQ/wf8ao+1z9rrgsjhNvndqX9DPxPj51fadX2azv089e/D18POqU4w7p6AntmhdWQT+it8Tm58x9/of2/ScZQ7gnzasK78mu8joCue8bPe/Sr5Wejvy+TfYdymUr/0t9LeRL5/Sv8fRU+2Uz88H/3huQf5fSIBzEv7+g31r36CvDNTLwb6WyL/71h/VEae5aFHfWxO/YX4IYxXOO/5LPJPj9zXATsilzzQvxF+d4J/vHFEtJ8AvE5+F/T/GPNVb+Tq+X0r+BkOPQPg33P8iYzfmtDp+aX7xWjqGy9h/E8S8tWPmdi9WcBPyN8N3lOsnzOFxofjpQ76upD1QQ/qf6O9wn52xk6H45duMn7eYd7tDv7E8DMJ+o03M/6sIfltoDuecsOhOz3ySct8dJT6a4DF3f8y7jLSbiHoOkm+69wq7ufhaxX6tYz1mPEfabXP5M9Ffi9BVzb6T39oCuzhAb5r55wfRjJetiHXM5T/EHwd1d8C/5se47pmkm98VwboS0v5CvrNtDvUv0+/1oWu9cx/uSjXAPk3BOr3HQt9bemXf53nPafyHAX690cCGA09xgW8A6xO+cT46fq7jkQ+E8jX3mhfpqBf3aA3BjjKuA72rdNc9+vHQH9cP7lecv1UCT71Z9ufw+gn/dvGbSTQD8epV5r8WOzlQff/wEzwswB7s1t/Bfj/JD0HuX9sHBPwOnhqQl8NYEdgLuzkc84bwJHGITK/Z8O+jcM+eV57lXJp3A8zXtaB5xnwb0X/qwG3AZ+n/gf0507ksRi+5iH/odD7HnLMR34G+jcH9uAXvrfTzwf9ZbG7naHnEfJXgr878pzJ9+PY49bkb0XfC1Lun1CcQWbW+9+Qn519jOPsv7gE972ux6HP8/DPkMd19gPHoHc9/G2G/xvGH3k+EgEfeBxPxtO8S34z/UHoVXvSc6HnLnSWgw73yeI1LucH43ygr6n+U+N0oc/zhyf0C1M/vH69zHhyX+Y+bSb11VvjH8P6+6N+Cfp/hfGtyLc+/TeW/IXknyXdHr7Lus7RT4/8ypN+Glia/nkW+feg/XbU/wP+WlD/CO31x659aVw09auzPnN9ch08ro8rZ3wQTwnk3wD9L8v4dN0Sjq/8KxLAmti5XdoX6nckbZxj1ZD//SL6PR2YGPrahezbbORpfNpPpBuTX4Z0SuC/6hPz/gnKLdH/Tv5F9PMJ2j3EOiIR9K/1fAY9qsb43U352thX40c8h96G/BOwZ8btHSLt/s94V+Nfl4TiX5dC9wrppdxUxtcp9OZ76LkL/hu0/xfrzn3AV5gnltCfwz0voXwfvhdCv5+nX6/o/3Yeof0fkZf+9DPUq4T8NmEfnf/SUq404+tl9jueM6U2Xov+3x2K51mG3PaxvtiIfXddlIx810dn6K8lofhb7YP78e+A2ZFPPPy1YDy8T/4e6GmkH5jxcI32X4L+5NCrf1j5LSetnzgf5c8ZVwM+z6efd/9K+WqkjRf+VXrQj+Ho91D4b8n6ZCn9YJy049f1Xiztuu4z/rYi9qsG7amnSaDvFc/zyB9Ffz5CfiXkfUh/JeUeJT8b/qA7lOsEvd8i39PwZ1xsJBLAwehXCdKuX/vD5weUH49+5NQvA72rsH/61/8lXz97Yuj9hvGVnXI/YgdaU38C+q9f6G3kl2B8bMgf0BZ+Pb/9i/1fVeT8gus78ExCf/9mXrhLOz/Afzz23XsnrvOiPK9DH+oBXye/FfTE0+/GPa8kPzf8daRfZlH+GOnr9E98yD/5Fna8POlS0D0GvsZ4jgX9B0P3D7yPMMpzSuQ/DjgeuAc8G9k3FGLedhzNg/5y2Gf9f/pv9P9ljwSwj/5k+OpG+ymRWwqg49jxuxf57wF+DcxDuUuuV/WPIL9PoM/1o+vGVsblYX++QX/jgPuAe6m/Db7rIuedpN1/ev5v/IxxAJ7/P4ee9wOuQJ5Fqb+W+VN/bCva/5X8pyPwof8OPlrDRzLmT/VmrudayNf7Kd5H8X7KBugbxH7jKnbF8yDPw5sZH0V942wqwk8x6J5MvebkHyR9lfWv5+9zsIfuj5qRbg2eL5I9SO8Y6uu/0p+VHPm0J10OfvTPvUH6M/QqL3zchb571H+c9j+hvRvkF4W/ROCPJ/++51SMr4HYJ88dB5HWD+H5ufsNz9E9P3fclAuNn/HYrwTou8D3zsjjDHR8yvrSfdc6ys2n/7zPoj/hb+yH91sagm8e5R6H7mjgd56bU/8jxvU86v9A/ny+z7Qc+alcFyC/ya7fkccm6DUe0DjBFPSfccEVwG+88HHk1ygSQOPIwvFj0xi3L7BuiyWdFP5ug+9f4E3WY543z2Jcfwm9rmPbMb48X/JcaQdpz5eOML+cZ/7ZxHgc7T4OfOrtdeqpv+573O98aBy68S30n3FPpUP3fy55XkQ7J0iXRd57IgHUr7KbtP6VIdQboL0lnfQh+1/jxH+hfz4Gn+u6/tQ7BOzNOEtK+W6eD6L//ai3D3pfRG6vUn8hdsu4ywjljb9Mznhcx/q8A3TqHw6fl3uO/gLpdtjXVcqBdi6BP3x/zntzxpedigTQuFHjSBMop7/Dc6dPacfzp2H4j4wvz0na+HLHxwesq3/SD4I8+1P+EnrfANjL+7uslx8WRzMY/F2hp5pxv6RfJn8Y6T+pf4p0PO2dwI6dpR3jyMozLq/R3pf0fxv69w325x9hF6ppH9VHyvegvUfdDyMf91Oe23qO6/ltA9bDlcA7ln760X028oty30TaeO+U1CtJe7VJbySdh/lnN/xmdf1FfxfG7vTA7syBzt8Y/963Psz3XqE49oquG8A/1vsqyKMn49E4INexY8A/LWQPtY/1ye8H/cZdZ6K96diXzNi168xD4fXBPfCNxg6OBTYlPw98r3LfGjofPEL/uk+Pwx4X8/4M8jxAvRvQ9xr0HwF/Kb5Pon97IE/9E/oltO8r0Q/PhzwX+oj1p+dD9Zi39ad7T8H7CcYP1qO9rsjD+MFcfH+K8t7jq0H/eW7ufukQ8v6XfP1SMUD9TPqpEtD3zrTTAX7HI5/r0NsF/bhB2n3oxAD8d++kjf4y4z2Yb1wvJKXen/BXkfE1ATv5pXGz3k+An3jqeQ/qQ+yX8cznwH8APHfQP/eb4fvnhem/sP+kGvLXjzIQ+t6k/i3kV4f6HxhnA91VwV8K/jyX8V7MFff9yHcd8uwXCeAW5qts5FdgPfCBfEDv667X2L+uBS7B/riP7cJ47w/eTtBTzPga+tt7KGtdb4P/W/QmAaj/f7L9B179P5vh/33w618eQlo/s/7r2iH7qL2M834j9uAkemr8qff1J6Nn5X0Pg7Tj+yT9l9q4Dfj6hHzPZfsAPa/1nNb7N9678R5Ofdq7g343Cs0DBY0/DMUnG5ecEv3tir52A67yXBf+x4IvM1C/cxHqL3a/Bn8b4K+l/jXjnuF3svcVoO8R411Ddsn7C+OZf96F/nLAnN5Pov+7I2fvuXu/fSX4vb9fhXQ04yc98k0HzAg0HisVdBWC/+rw+yrttyTteuFHYEfyR4fiTdKA5xnknNbzU/dtpG9Cv+crc9DrRMjV8xXjJdx3hvejnjcOoh8u067nj8bnG49vfL5+prngbU75L/Vv038DmP9isFvJmGcPuX4lP1HID5bX+1fwuwY7UdQ4Ec/vGQ/GrW2h/47Qf97fPYz+FwTegT7v/San3gbgXf3U0Of5bRHS7i/qoK/ef5jhPfmQf6A8/a2fIJZ0OO6sB3hHIM8o8Bmv7P2CdsinPfXdP75JOsr7UiF/pvGuzi87wG98ziroNT6nIulnwF+J9AnwhM/XWrMe/8X1Jfm/679m/VwQ/O+jt57Dhs9fnzMeCjiW9r+G/8Pgqc94+G9fCH9nfY/C+B30aK/xC8oX/L35npb6xq0Zx5YF+p4l3/PCfKzLvD/r/ca9kQDqP/2N9HvGb7C+9dzd80/9SxcDEJWA3rwE/75nI31PF3qQTunzvqX3a72H+Sn5B6B7EXSsJu07Fj2ZH3wvQb+A7zt0xr40p1/vMP8bB32N8Wd8zFLG3yLoeIT29IOG/Z/dSa9HHt2YZ72/f9Lzb9bJsa5/vE+KvX6Ufl+EPTHevhz6Os04eP2+6N8Vvl8Dn/4Q/R9nSQ+Arl9Je36037hO6FsTeg/rlPGhQOO7R9L+PvAloz8qYL+rQqf3V1wXhteLJbG33kdwnTiL9H7kr/++LfPRbO/JgN/49+bUq4b8PwrAf/roe0ujyX8Her1/dx55dvf9BPTmNfTa96d8j2oMclM/1Uv9KEWBXyOP3uh7Q+8vwP9k5NiL9jPQP+H3WVqCz3daZmLvK3ruRnon/JaEr/D6x/l7IfLcTr73q4wP/IF+X2M8nn5A6m+Hn9msbyuS73z7GXQnAkYDr+png4+Xga2p35H2+yLXrfq3SDekff2Cd4DRjPd53leHP/dN3j/0PmJv7Lr3kvv6PoHrA/TvZ+RZCXl2Av8Mxqfxr0Ogy/1VvtD9gA6h+wEjQvcDqobuBxhXbbx6dej3fbBHaLcv9LV2nfyQ+xXh92Xuw6/xFcYj3/D9MPrJ94eqoa/au32MH98Bek1/fOh81nNZzzk9nz3F+JqEfZjLeHb8DwvF9xnvJ75x+mUe4r+N1T/J+NgFnjfI/we6F4KvGOWN43b967r3FPbZ8TOM9b3zX07k7fsTC+h3z6eMb/V86i/oMs7kFutZ38/yXUHjO/cCV/uOHO0u8b0c4JPkn4GfbOB7mnb+cr0WCeAf0OV5Qizwe/SjTQCiIsbNw99O2p/G+K9Mu6uAKZBfb+aZhbT/Mfyz/YmaAJ/JsV+rvceN3v7kOS14Xsc++L6C7yo0Ie37CpiDqGHAC+jrWMbnSOr5noPvPMSgn4Wxy75L5zt1vk+XgP1P5noIOa4hXc+4Rr4Pgu9D0J+C9r+g3d3Y08OUc38VA0wV2m9lYLy4fslE2vXLAffnlN/HeNwEf3ed7zyXN24P+XsutsW4AOq/Tf+uo71NwCTeYzB+l/Gah3aeQ47TjSch7fmf54Ge/xXDPrQl/x/fWXR9jd54n6YyfBem/FD06VHwFqf/n4W+7NTvRvkjlEtB/gXs8i7yTzK+N4bk5fhTnsrvJxT8iudlyDMe+XmfPQnyW8v3WPonP98n8P0o6aLgX4k8jCtMz3nKZuhNjvwyI5cptHcLundQfgV098QOZwH/AMbv6ZCf2vdB4rS7yKuzcSbQux/+3T97vuA++j7zaxvwe5/vH+8/MP5TsU5eHAlge9o7jr30fkmsfk39O8ZTuq9AXtmgz3dCjMt+IRRfEEd/Z0MO16IfrLfCeGL9yHz3/oLxAcYF+I6l8QFN4X8q7U6jPeNPUsD3TfgYjTy+I38G+Xmov5n5yPk3B/bJuJiR2I9R4DOupQf1d+KHqkh93/+4D1+eP/j+x1rKK9cnjf+Hv/cDELUdWBE5LkeOD7t36/iLhS7j2zzPXsr4qAt/vgNx1HXiQ+LfGhgPTdpzXe26cezad98r8R0T3y3p6voa+vswvk+AZ4T+Ocq/izx3MN/PJb+Q5xvg6WbcOvBz7GNO8FzBns2gHd/tbUp54xvmQL9xWZMeEp+1nPlhKuv8aUDfraxPfzlvOY8dI23/RLxPTPmqng9Bv+fy7lfdn3ajv41nMd4lBfz4Lu3SSAB9n9b3nd/AbuygnnGZJ53fmX9cR7oe/S/eDvt3Dr69x+55s/7CJsYLIy/to+8xD9PvgB5vgz7XE53Q11LewyKdgP04AHT/PVc7wng2HqStfhjqV4X/n9HPPxnf8z3/hp5LwCH000/eN6Md36d5lnq+U+P7QCVC7wQ9Rv3p9M/LfD+HXMtD3xj0vTHxAX+AR319Ezy5PC+Fj9X0X2f09lvw5qKdj8h/DfvTCjl5T9n7yd4f9Z3F7b6/6no8dK7an/RZ788YH+q4ov+S+r4K8/FS6PE83PNv5f4F9NdkPNgPWwIQ1QE4KBLAI/Axk/qzgGm9z+P7p6H3hNXbG+hfQfQ1A9+/1Z9O/0x1f6p9Yb+yhvxnsX++56L/7wb8Ov9uw66uQR5pqX8QvMXotwbMV33o/zHGY3pfk/78gPoR+FXvfb/kMPL33qf3PROjj3WgL03ofnvYD+p9pBXQ470k7y+sYv2UGvuQD9iTevl9fwN4n+8XQ/Hexn/fMn4A/dhjHD35WenPv0nbH/bTNNLvuf+nPz338hzM86890JUefiuTf4z0JOT7Jes+44GS+r4y/VUD+bqvae/5OfZU//eYkP/b+yvh9wWUv/eTDiBX7yl5P+kR6WLcpMOeLAVPBvuP/AbQbTzTFfh9G7zG5xeHj0fB57uNTbFTvt94U/+f9x5oNy/6Nxt7Ugu7u8/5MPT+n/tT3wH0/d374E0D/X31w0NfI9cF0LfVd0eQ78PmrXy0H6H/ljnvog+uJ39Fn7y3YVyC9zfKRALoOv+2/iDw+15cRfejQP1nCdj7r8A3HzpiGGePYS9iwJOOtPeFp0gv8hiBPH3/eg74XHe4DnH9EfZ3+f6n5wPaIePkpoLvVeQ8xPe3aPcLz5k8HzF+me9Z4Xe3+w/aq+R9QtJbab8x9T2f8v1Bz6fK0P6frBOX+16Bcc+e28KH77JuoL3jro+ZH4vCn+ezfdE73894lvXySeR3yzhV8E5nPGTH3pxjfHq/6hpp7z9eRr9Xk3+VdDTt9wtA1FPYgQWknf8891Yffc/e8+/VzD+V0j7Ih+9bXGc+KQ98FflNZhzuYX/vPZCU+F+bQ9826M2PnfT9Af/Pog90uf53P+D6vzjy/p7yzaB3Oe277/JewXnkEIX8w//H8SL2aojxSZ6ngf8byvtu8h7s8WXaPel6kHa7Gz9mfJH35DwvB39r9Mc4ed/Pc32wFztjHLrrhU+8r4+e3YQu7Vdr5O27Kb6jYrz+APj9mnZvsv+pSX33nb5343sPad1/hN7XGgcfvofivtN96Fbac/8pXfq1pGs4/BdGr5T3JuMuXT9in73P8jL94f4s/B6v7/Rupv4m+DX+agP506g/DP303p73+LwPdxd+rxpfBR77z/cOMnjfCD3RX+K4dDw6Xo1/9n1z3zWfznj1ffM9lI8FFlCfab8R+nOcdD31Evyd6JcGpLVDJ0g3Nb7DfST2oRD4fgm9W3mA9vw/B/8vx//PGUh7/n9OBex+eWA61hNPUj8Z7e4PxT9MpH459GsC+H9Dvq3ov93aI+1dJICvUH4b/a8ebAYaJ1GXdccx4zLdhxpfwnrGdWF4vah9fAs91E5qHy8xbiti/3ynPZ78AdS7B/6P6Z9U4D9Nvn4H31NMb3w0fAyh3hXoe9L3OrwH43sTzD9rwT+C/hwDjEOO66l3GvznjM+E/hSUm45+61/yPqX3J/UP6xfWT1wM+S5BXuPA7/8fDfT+Veh9IM+bPF/yXGm98QjM9xXhT/+sfln9tJWRh/eLp1A//P8XKUh73+0d30UxPpP1ge8D+/6e9zt8l/Mx2vN92wPor/c5K0Xgx3hq7YzrV/CvYjzof47GPurHqof9nUV++P16361fQf/6PrT3E7yv4P0E3xdzfx6OT38OesLvS7QHX/i8wHOE6p4PGv8HnnC8aVPmj/ddh5M23mU1eBvTH97L9R5HLPo3HRg+b24BP0W8j+45Bukh2EPPRXu4X0YP3F9V5bv7qsHwdxB9TgD2dd8G/nmRAOpP9R6K79s6PzuftGc8ZPb8mP7bD1RuxuemhN/fwPMW/Cal/oko6PceJvLP6f0m/68FfX6B9ltD39vg9X97/F8j7U8R62MHY8n3/342Gi9N/94GxntvA/31XHgoac+HPVf40/dJjbP2/xHQF/0cE5CL/o4t4DsP/+vQf/3/1aCnGfS86P9d6e+gff9Pxv85OcV4uef7t9Qrwnxz2XMg5Of7GeH4zhzoTQvqez+2KfJ3vRbWE9dzVZH7CfphsOPc+wHex9H/iL4c9PwZudc1vsV3I8jfxXosJ3pRxPdHwHcBfP6Ph/GKQ5GP99eNZ/J93nXQ7/13342oFroPH9a3kqwzBtP/vofu++i+l659dd/+a2j/vgj5X4avofBfG7n5/n34vR/jSccxXsLnX557qZ/6X7wPMRrYzvenwOt9xSzIc0vofrL3BL2n7P1k4x9H6q8NzWNvRgL4r/f46I82zp/SzTznOxbK/0na9f/tfiPf/7frxfj7Afp9J2Ch7827P/a+OvZH+T9L+75f5TvQEfTH+dy4qf/mdf1P8B/+n6fsvg+DXnpf7Bnw9XN9jv3Xz6x/eTH1XT/XYx6+5H1k8j3fLxza/zjf3EHfl4Df8F7P0WqC13dbKvF9J3Lr7vk9ad892ur7PdhX79l+E3pPvgf8DEJ+a6Ff/3Fh7Jf32ZayHs5N//TEnk1BvtHG/7ufZvxc9H4Rcvb+Vhfo32CchP+/EFofuS7y3QvHr/Fsxrn0C8W7jYEu46uNtza+Op5xPxm9extYNBTvaBzZItI5jT/x/jP1dlLO99WGRQJoXH0a+qUwcCvfG0FnFr7Xhr4O2G3f0y4OXd0YL3mp7/3EMcwX1aFvAfJY7/vAofdjd3vvEfno1/B9+zjW5/+936AfiH6si/6+xTq5K9D/e5gMPf5vwhX41N99zfMlyndkvL0Gf03Ar39Rf6P+xd/JVy7Kqb/xK9itN/meXb68H0W/3UQP2lDO+bwo69dy3mPUfw9MhfxiQvfeZyPPbui/6+Lw/2R6X2sY8/s09L0G8viZ+pugeyJ0+N5l2N/RGnpS07/6qefCj/EQF9Cv8PvzVWj/HPgGYX/8f4xdpP3/G9/3ewk5+77fXWAd14fQ73sraTyfC8VzdwCP77v7vobvafi+xhD02/fgn6J+2YIP1s+NPsajJ95/8z5cNPbL/+P1/3prOz7Zl7xL/TXGO5D/Mf1jvPmHofGk/XwN+rSj2s91jKeXQufWxn8k8N3/H/4RftxPHlJeD9lnfO77oNDtfDoN+eVwHjfe3f0n+U2YH33HpjTrG/+fozl6304/GvnNoc/zDM83PO8oDX7jyo0nd51vfO7r0NMCOtfrX0Uenk96LpY6dD4Z/v9e/2fQ/xf0/+f837nR4LkdWo+5PvP+quszx4f/5+I4cXy0oH3nEf+f2PmkG/rxOvi3Mg5rgX+W+2XofQl5VUBe6ZD/DeZR3xf8zPmX/riHHvt+ke8Z1YR/37d/m7TvLJfHXrsPCf8/8Fe034F2bkHvKv8/g/H1tPGl3ruk/gDoMZ57IOmG9F8849t47jjS+umMdzH+xfddjH/x/7QOMG78v63CntPR732Q52/ud7CP5UlPpF39LPqjJ8LXcuTkuwL6H3bjH/Dc3XeafZ/Zd018d2gZ49n4Uv3p+tf9v4W/qL8MfVcO2gP5r0f+cO89AvUPhN9f+hz5P037bcDnffRaypu08U0Pi9Odl+VBOtrTvvvfE9QbTfsnSe/Vjxj6P5h20Pu9/iv9uOZ7X4n2jb/riV77/1vGq2xn/vNdvZzQ5/t6+jv93wb/x8H/b7jEeUsD9jmHqN+I/CHwU4X+fws8Pek//3ezHND/39SPc4v+bgz+uSH/l/uChfBbA3t0nvb+DzCmONt4nH2dZbSWRdeAD13SSIsHD90pICUd0qDUi0hII6UiKJIiJY00SIN0CEoJSDcCwkEJCUWOpJRS71rffV3vWtxr+T1/9ppnZnbNnj21Z+7PX4j4v9+J3AFsliaAa/IFMH6yACYEJgBOzBHAXkkDeCVnALfkCuCMwgHMTflcwDzAtJR7kXqxrUe6dcEArshIPvzdzxbAnXkDeJryU6n/S/oAPiS/8UsBzJA9gOmovzt/AFtR79MCAbyG3KeLBPCbVAEsAv3b1H+HdOFEAVwLvR+gUxT+C6UNYN48ARyM3vZDPyf1f+T/ZIUC2B/YIn4Av4PPrdCPRf2kGQLYDPpfkr8FOVbB/w7+X086H+Uvpghg1dQB7Eb7r7R9XwlgT2By+KiHPH/Q/vX4vxzy/Ex6WLoAjgQetP2o/x7tdxT9XwVfN/S/HfmaUv4E9avCfwLo9Efen8k/Rv0n1O+DHaShfaagv0WZA7gZPL/Bz3Tstyzp16GfEzgdfgdmQQ7qbwB/T/JTk46C3xjK/U56JfbRDX2fjhXAv6ETG/qjyC+P3a2Cv2fgi/B/5O9J/Tm07yHoTSD/CvqKDX/tSS8AX0H0U4l27wcfLaATAf15WQO4HXrH5JP8mCQBvAP9s9CbQPsUo38XAR4AzoOO7TENfDND7VM8MoAj0HetlwPYnP5zkHZvCb5q1O9K+iX6w0H4f0b+TuS/EhXAX8g/Bf/d6d9f0X6R6GEW6Q3wtxR9z1a/4J9LujT6eRe9v0b6V9KNSeuHX4Tvi/DTFPn0a/q5Huj7W/Bsot41yv1q+yPfNWAt+yX8T6A9p8L3e8j3jPxH4NNffEg7dEI/Zel/ZYAR0NlG+2zn76X8P4i07Xkbf34K/PmRZzDt81WmAJ7Rf0J3PPyNxP6vJg/gY/xbU/TxKvLoh0qS/oV0evSpfxmFvptCvyn8jCd9AHp7SK9H7sPY9SHgGvRWCr6j0ftYYDXqR+Gf+sDvXOptgp9O8JeP9Eu0+zrq98GvJ48TwE+g1xn9vw++otRfCf0B9M+2yHcR+sugl5n6jisrqLeLco4vT6HXkPzO4NsHfwMSBDA9//eMF8Dp1F8BvXLw15P5SjzaNzPp7sB/aLdn4O+N/+rA/4+1J+h9kDCAZ6BzCjvJjhyLnKfAf0vkTY99ZkavQ4GpyF8G/WnQ7cQ4cRU5NmKnD7CP96HX9cUA5odeV/q/86PetKf+tj7+LjN0dvD/l9B/Hb7aMC63BsZAbwJ89Uf+b/m/FfxFgLcL9B9Sfyv6b0m9Y9CND3/tab+d9Icl6OU085lJ4F+G/N3Av5z0CfhfTf1VwFvQexf7G5M4gJNpj/iko+BvFv3tU/r1WOTZCBwNvTHAu44v4H8Av1Ohux85N8PfXOynEfLWp1w08j0kXRC9dqE/LCf/V+wzKf38JnzcJD8/fI8HT1Xk7Ej+j/wfF35qYF9fwP+juAG8hX5bUM7xqT/zMucri2inF+j/q/HLy/F7T8hvh7xrsZ8bpPvAzxPSQ6i3lH43DP3dg14Z2qcsdMrB50vkJ4S/P9DfMOjXgL/m2L/9oB7QflASv1ATvOVpzxHobyH0/wqtCyqjnzHQ3QP8nHLZwV+T9nQ8yYj9fAyet/Enk5jXtiQ9CPoDoV+Fel/TbgugXwu+r6LP2c6f0M9f6PUd+HkAf33NZ36TAjyxGf+i4Hc39BeQTgX+rNRPAL/xgWfAPwt6mdB3b+TpCB7nX/vQf1LoX8efDaL+RvjZC94e2G8x6H9Ef8iDfpag7zLQKUL/SQu+/PD/Cvr7E7qFyX8KnTHk38ce7Nf296rkt01JffhuR7qH6zHKv+D6l3R66udhfFtD+QH4pxrIp75dD2+lnduih1rI+z747+lPwB8LPXSknuPIRtId6Z+/UK84eMfTf66CV3sogT0VQB8JnVfBX2nwTKV+N+yra8jOMkGnnesN8I8l3Rz8PenfR+FjMvY00v7JvPoY87wtwI70r4vUH4wdXyJd0Xk2/a4y49ZV/PXr5PeCn/zoqwF87Yb//6CPl5CrGelo0rWxb9eF0cjperElfL0DfBtYDD3OYl4/A3gHmBP5NqP/j+C3LnwWpf0rMN7uon8OAe94+BhO/STgW8b/16lfkfoLkPc79HGN8i2pf4R6idHvBeS7TH4f+vt+9PI9+HvAt/5xO+vbGbRvb+gtBd8/1H8bfr5i/DoFXMT8sCF0SzNuHqLebeiNwz7nkv4BeB17ekq6FfbmOPU1/HwFv1Oxt83ws935Hf03MfY0C/ol0X8J5EmAvnZgN/FJlwL/bOrnsP9Qv1PIvrVn7bso8u3Hn2if2uVf2Mlo/OM6+P6CdELwpyWdDui6Zwntl510M+p/7D4Y8i/E/hcAnUemIv91+LnDPCYjfDXCXlqB9672Rf342MdI+PqcefEKyr3mOpX2ywef66ATl/zelK8HP8fAP5b0OPz5Sv0T6eS2H/1qInJs1N+R/5b7beDbSbnN6K8OdlUeuz2PHUfRfqng9xPa9QR2fRJYCrmyg/c9/Nk57RN/kZTyN/m/Pvo9wbxqMnrXvs5gz1vRb+XIANZCHvtLWfRxjPLuB7yrfaCfjxkf+wCPwO8F9/tIO89/Q39A/jT0aX+zfyVh/HQ/6WPor0J/R8GXEHy2R1bSN+lfNyh3g7T7uWnQfzTzjOXoJzv60z+mgD/9o/6yEeuShkD3ad2fLUv6J+gdw/9PJn8QfiGB6xH9AvY/Xb9E/kH83UH0435dKtp3I/qqA/7mjP/fOP9y34n60/CHL8KH+1DuP41zvon8MdiT+0OvwddM9HWX9ilM+4xxPoZ9R8HXDuTT7+i/w/7ntOtS8sP7V71pv/9EBnAo+mth/0e+HfB1TLuDjzr059nOf+lfhckfz/q5v/sW0EtNfgLaZwByfAaciD4SQ78E5ddgZ8fRzz7kqw2/UbRfNdrzU+RtSf2ilFtI+l36W0X4+9z9cPTXnfq1+f8k+j1L+1dAL7eARWmn7OBfjHzq9Rz46sDfINIpyU9G/61F+6ZEX/qz1KQ9J8rAvKwQ6Yyh84NPaI9e/H8KOo3Qw3r80yb4SEr6S8o1Rd+tXQ+ib9dZzp+/pb7zaOfPw/Gv0+HffjiL/Cn4v6nAT+w3yH+ScfFIACJi439G0j5v4A8qo+9Z4M9G++xl3NgDjO/82/5PefeZz7tOdD4XGcBJ8J+cdCPkzsr66y4wBXLoTxz36zo+Il9W9LcbvCXdd2I8Xox9uy+1nPYL709NZFx3f24C6ZzQr4f/vQQfA/nf/c7b9JdW1L9BOg78VYO/GqTt/1XQ/xb8XkHaoQDQ/dBF2GuXSOSAj0jyz+D3S0D/CXr8i/TvlB/kuQn+4K7rUeR9AoyivyWH76v8nxp8tehfuWgH+0UMdOwXtd3fxz/Eol0/RD813c9A3ofU0z/MQV970fdM90XgKx72nRs+vqbcz5EB3EL7x3heAt5BztvB3xJ+fnM+Ar55tM8F+ksK5BwG3S9db4Tmv/tIZyEdH7qfIJ9+qhL8foRemrn/ih43w/9y+u9Q2jUNdM/CX3r8Q3/sIB3pDx0Hob+eekXtd9R/gH25zzWd8WOb6zf8n+eAI0i3Qw+uG4qhv/D64Sb6OOB5A/0pk/6LdEH4fUQ6Hv5lF/VGu/6h3n3yK8JPJfjrTtr5qvMa5wn90etgYA/6QypgU8rVd/2Gvddl3lMKPhyfmiFfYfZd3OeLjb4XI9fH2FF78A8Ev/EFTaBjfEEX6EwPQMQlYAvqJ8WeljA/2E29G7EDOMT5Kv35HvnzmT+5v7+d/r2b9szAfO0hafdnHgFH0t77wf+S58PoZwPybwF/HMbDhMi/znNq9Pch9lKIdo3Aft3fdl9yLfZYmXRL6HdgXCqJ/XqOkwX9V8G/JosM4Bvuz4KnPP0mArtrBr+twTOJfjeEfriUelfQzw76r+dETZDb86Ly8JUWPooh1xlgN/fzwOt+7vfwv4L2SQy9LbRjEtLvwnc27G8Qel5Gue3Q1a9+Bl/618v09xXIe4526O18gHYtj31uAI/xFgnAHwGcAt1+1C+M/owbeMXzFNqvCPI5f4ihfd6Dz6r0rwrAAdBdAJ+u3123J4WO6/excZ/PH+y5Fflfw18m8J6AzmD4uxpaVxkP4/pqOfkb4SOa/vEM/muDLw58eY7SBvo32I86D5wIdJ27APw3SP8B/SvwE57/hsebTdRbjb7eolxf1+foeynQ8+TP4c/5huew4fPXUtjbE/AaXxNDfmv8UzzqHSUdB37yYH/V8Tsvex4I/QrImw6YBv0+BX9B+F6AHW2HTizynRe5fppJfddP56C3h3n6edLn0JvxTMWQrzj4KsPfy/SPLMCHlL+E/g/iz6Jd92IPD6D/AeX7hPYlNjC+jWF8eA25qoD3T+dLnh/Dr3Fz7aivf/Lc+gbzmLTwvy00fjqernE+TPvsc1+S9HHoOK5vdF8Mf7SM9v0PfOeCH885Fmt/5F+gfeOgF/VTALnygH8z7dQP/B+iT8cdx6PH5A9E3gFAzz2igQPwW9+5v+15v+sfxsu0/L8rMoDH0N9m5o/dyN9E2vXLIfTVDv6OkP4LPXj++w5yNibf899rzEtyUO578qeAz/iXnZ5Hwd84/JdxksbtGMdj/E5H5gee+7hP24b2HU3/qkT5QuCrT/ll1H8Z/M/IfwX9fYf+bOeayGH8YTfszX3G8P5iNurtJN94kcnw04DxfwNytYavUbSP87mW6Gso+DyfdH/c9Yv75O6Pf4886yg/EbqTaZ/57ruA1/3hmpR/yPpnnvwj3x3KGT9wGPs3fsB4gjr4o0LIs9V4B+aPP2MfZ4A9KV8DetXxt+dox/PAXZ4PwY/r68v034vuP6DfSYyjqykXCX/DQu1rexd1vxP/dRN4HXgW/E2oV490Ofz4G+Afgv6zwu8R5FqD/cxHvvGe4xi3g/3OgA/3G5ZR3/2B1dQ37mwWeKaSXkH7bqb+T/B/DTovwP9d+F4PvcrQH4Lfics4Xlg7hP+3aI/T2F0R8j8jvwx4PX+NoZznR3PgdxT1wvGtPULrGu3e9c0Z4w/Jr8J8qCzy9sIeUyDPFsd/0sZl62fC/uU0/IxAXwWwt4b4p9iMT3FdPzGe/W68JHiru38NdD8lD/baAvlboed3Qvv/XRy/gafR7yTatzN09KMp6G/2I/c37V9z4P8j6j2jnc9T7gX043mD5wP50J/xRbWNJ+D/DLRPBuTrhn96xXNh4/XIP8V8MT5wHPAN+MzKvMS4vXA831r664vwMxb8neBjNfOG9O5bkW/8ymX8f2fPiUh3IV2C/YXW1M+Bvm/D/0LKp0dfpZBzJvir4j/rSZ90ZvjbiDzX4Gsz6cXgcT/IfaKBof0i9fI2+D9z/xT+YtC/9wKMg/N+QG/seT7QfeZLlHf/ZRUwC+Of+zAf0b96A53POH9JR3+/Ct7L1MuAvubB/0nvEdCfqyH/+8ZPkR4FHx9hv41D8XW3aY/h4O9L//oTOvdJvwZ/bejvJ90PRi/R+JfvwbeQ/49T7gz5F6g/3LgB7G06/ObCL3SDzz7kbyLdBHvaAwzPj93PWO+6Hf99nPRX6LU/9j8C2Bf++qK/jpTLB95eyFHceED8Zm3kPIX9vMj/8dDvFeM8KNc5MoCrGAfWAGdCz3iJM/pTxoPK4C+Lv1uNPI5314FJsYdU4PsTfi/Dfwzjg3EK5Ul38LyGdt+HHubCz1b0dAq7L8f/v+MHc3teib3vxZ6SG5+G/bmv4j6L9zvcXxkN/Tc9D0eO6+jxG/Yl1gHrRJLv/Bp9Om91HrsRfsrlfJ5uGdKd4W8Z9Ua7n45/fYv8U+j3KnaaCz28D51+2HcZ4w6MM8W+3jSuifxd9Jdl5Ddgf2gD4+Qe1hfp4P8D/EVeyuUDOl53RC9N4Cs17fuA/JHo90XsIcJzVuxrEePxYuBF6BvHmiQygE+xh9Poaz78Fw/N3297zgd94w2qIP9j0r3hpxl0PV9xHZ8GPjugl3eBHYFtQ/FVrk8bAy8h30b0tRR+viVdCP5/pH5y8pPC52HPz9BHUsalmt4Xgf98xgtAdybyNAdfIfTzUuh8y/n49tC5cSP81yjkrxAJH9SbQj8tafwA/SoHfvst6m2Bf+OEjM8yXsv4rL7Mj3OTTug+ImnHrbz8Pxb9jyAdx3h++rP3gpKj397w2939aOrtR89l6L+lgU/QV37ka4T/cbx1PP7d8yL85QTjW9HfY+PH8Fff0h7XkX8J/C0L+dVRzGf0r67PXY+7Pr9Hex3Gfrzfkxl/4f2e6+zXp0Teavpn8j03Ow9fnpu9SHn3BW/+y/5gSvg3PnUF85maru/RTzzKHQJGIH9KyhtfOh46aaG/mP8HQ+8u+jG+qj7zl7/guy7p5MbX0n/Cft34Ie+dOS73D43Pxm8at6lfMH7T+47VqTcO/C28v4a+xmI385CjFuW8b5GK/2d5/8l7FPSPCNotDekO8F+J9fMz8P/BOtr1sfOvNMa9oJ8dpF3fnIKPDxkvJxpnQn3PMyox39Hf78R+csDfbtLGZ84Ar/GVqeiPFZA/IfyUB47DXtY5H6X/2G+ukbb/eK/L+J3w/a7R+Kc48Pc3ekodGt8j6VffOs6j3zb0v7bwFStkx8ZnHMbvPkCv3ie6SPvnhr7nvxvIfwB/u0N6bAv9C6QTUm8X/nAs8tVGb8PR8y30sQw91IG/PcwTlmC36m8P/sL+vZe066n22P9WYCvHX/pXDuRuYxwv6YXkV0PfQ+CnKumb8D+YfrUQfc4GzwnvkwYg4on3qylnfPx8oPcxxqGn77xfgv5fUY/4g+LGWSBXeeoVIG28VkXjF7GD6qSbgW8m/HvPuy71/gT/EfzvR/Tbl4HGuRs/777xDdqxIPyH43P2UC7vv7S/7X4L/+H9He/reH+nF+2flPmg96Dqgsf90eP0t2zYhfccHpO/LeQf1+lvXCcZp0555/nO771/a1xXXqD3b6vA/33vB5H+gXKu/x2PjK/TfofSbp7Th8/nN2Ef24CRlPO+tPsHC0L7CO4ftEPuz4wbJe09wPnwu4D8xPz/I9D7ad5LM774FHTu4t/vADvC3wXPIfAb74M/LniT4z/q4V8c91zvvGI8BfQzQ/9v9HWb/Kesr7xX7n3zXqHzk/qO/6wXF6LfWfjNGcCZQP3cYWBJ7LoseCPUb2QAWzCvugK9DuR/ZBwM9O0/9qfSlB9H+hl2vJX6L9BeueAjMWn32VOiX/f3VxofCJ/10Ecy+IvAHs9QvgnjaVz4aEW7FHe+G/JH+qmM4I9mPPoRvSUl/wPPN6m/4F/kf491Qzzyf3O9jfy5fB+D/HPgv0f7nyd90n0J+PmL/MXgM74oO/7iS/g7jz4OqE/weX7cH7vOBNzO/OWG/Zjy5Z3Xo8fB0O+AfbuuGOP+BPrNBb95gKUdN6hvXKXxtPcjA7gZ/vfjX0uAvzbt3dfzY/zCY9rnddJz4H8D453jS3yg44v3O7zXURy83u/wfpH3ijyH936R92u7g8f7td6TagLe+6TPGkcK/m3015WU2016M/hXM39YByxJfjz04/3sgYxTxi16P1v7eoidfkH+OGBx2uVt7LUE6ZXowfuBHYwP9v4A+enBPxz+3be7BZwXAK/lRwwALkEfV6gf3r91fv6U/N/4/y3k7Qe/3tftS773eFPSz2sjj+sY41GMP2nE+PcI+ID8T4v8/3yvRv6f0OtK+nkK6GxEX76LYDy5ceaHCj3P/3z0Wi//8/zndpzBHrJRP4n3b91Po96XnjPA3xukY8BvfJDzv5303+Oub91fcr2AXCWp1wz/PZm0+5/h/WP3QSdQ/xn8J4KfivDnvKA1+Izjc35wh/71EJje/TzkfdX7KejjG+ScjHxP8WunPW+Gv0Lkv035f+DHOJpO5KemfY1fz2L8FXz8DF95kasCBnMOfRr32Njz/FD849AI+AZ6DmS88yD892fQa8r8NTP5J8BX0nNn6aK/NcZFOy8E5kBO/Zr3J+fSvvq3I56HUe4w6cLUT03/LIz8XWnH7ujP/VT3V91vrQh/4futt7Gn1rTnZuRK57lwouf5l7505cP9d8/tf/XcGDmd50QxvzAO0nub3k81HjC+42vIfto6XuP/r+qHaF/jQe8A0+OfroG/Emnft3DcbRK6v+W5k/up7od95nzIuGzoN0de7x1ppz+gp4fGO7B+8N6RcdrGDyZEPx+gT+9nVyX/XfCmYP51lPrDfV8BfnwvxvdjvAfv/WrvVZ/EX3u/+i3vrTEvro/8PyPHatIrkecp7fSx8eW2n+MK/mK08fukS4NvFnzFQ/+XIgPofKmJcRPAW9ir63fPCTwfyER/cj/IfaJ8yLef9jcudCHlfO+lH/Q/AF8y9LQO+hVJrzX+zHNg35cIQMQx7PYA6SfGDcL/Dvz0WfydcVbun49z/sj/+eE/mrTntZ7fvgr9r/CXWZBzCPh/gM/w+0TeC+tGfe16ufaDvS2C/hf420+xo8PAv0P4xZs98fP408K/7z596f498nbxvhD5g7CXafCzAHv1XZh46LWH6yfotQfGNT6f+pvoX/dohy2kc9KuddGX70sNgY7vS12iXGXkG44+7jiegreK8wTjWcgfg30OpJ13uY9OeedvFfjf+c9p2iUedrWI/+doB8aPGjfgupj5eSvKTWJ8/kN/xfpjAPb/mPb2/YjpyJeVfOfV+qdhnr/Sf30XxPvWayID+Aj+m9Ke3jvrQvou/M2j/W8aX0+6Afkj8M+eH6SEnvFIl103QK87/uyIcWb4i6nAKcDzzs/xq45DRYHezxyGPO7/x7dfU/8H7K4yenlAfmXqb6N/eO9tqO8VUP8S/KSg3i/oPTb125H/C/3mErAqdua5QxT66c/8Osb4PPT30Dga0n/Sv33/I2PoHRDf//jB9xfwL1uQ033W8PtOd5BjDmnHL+N+00QG0PHL+WoG9JuF+Y/39WvAt/FUC9BffOMfQ+uiDYxj3q/vSfs6f54E/WfgC99nqE3a+U9c7DEWduv9koPGb4beP/E9lM7IYxy69798h83319z/9F6i+6Duf97E3n1H7RbQ99Pmob/jpK9CdwTt57zSeDbj29bDf/j9lWT0/7e9J4T/GEQ7ZATvMOAZ5p+nabfppN0PMr42HB821veFoHvlX/bP10J3JPnep91P+xpfvDsygMYXG28cY/yI63zwDTE+mfn+W8Dv2c++Tnt4blQSvncxHhXw/i1yGBcYvv/k+5e+d+n7l6WQrzLt6f1y49e9X16O/t7Z9+DwByfR/4eh99HyME92/7QD9v8t+u9Iugz8ef/wJeMWvG9M/4vHePlv56i7XW96/sz/R/Sf4BvM/ydcn5P+An80KuTnPR/+Hn1/Df7oAETkQx/2K+9T/u+eB/rd6/k/+podGcBfnb+h3+P4t1zYSQT4w+tP153O8/fib4/BR2Lnz8i/wnc3jPdA7weB4feT9Ce+o9SY9ixIfm/oe7/oMvJcAdai3kLvDzMeut+/kbTzr7Xg9X6A7xo6f/qU+dEa7C6s7360Tx/0sAc+voC/Wsx/fkevO9C37ex7c8YP+h7dTPWDfWY1/ox28p2qhciz2Hdqaa8VtEMR4FbqXw/d30ic6nl+LlPO+UV2/PNC9JKDdF30630B/Vwh0sa/7vNcC31eoj1HY5+7kLcWfiCV+0fAyugrD3xmQl/GWe2k3mn84AHSu21f+pXvquTz3Mvxmvbzvrz36EfTfiM9F4LP8PuZdRhv9+qHSJ8kvxN8dwAewA7eRC+L4SuBdkc7LKV/FsZf1aG850gJjW9nvPZcdWFoHr0V+Yy7930g3596AP5C0NsDngPYXybkdt9nLfO9IbTvfNf12i/5X8PfeOr5Xk015D9K+y/Abv9m/PwEfhfCxxnjWsH/Ifb7Nvwf9DzduCnqxSZ/Jvb6MXSdLz6Br/Pwnxb8A0k/8rwMesazeo7q+5E1Uj4vV1je2thDFuzrjZB9aAfO35zPOX+75PuPyHkb/L4vMw6/lI/2SML/s2jP9fS3HtRvSP/wfnB77KcOdmictO+P/05+C/Csp/4z9OR9H+8Bee/nV/h5Sr/w/uYj5+3Ifwy9FcHPHkcf7hcvh36U+yzwdQc5H/D/Q+A/4PMcrrl+1/hKyhk/Nxy/vRk+i3meCP3jtJfzrijjtRiPvdfWlnT4ftt77h8C7X/GA36Kv34zErridfzA3w+A79z4w1W+ZwTexNh5EmAq9N+Xdl0D3j6k36V+XeOLWBcvBPruxTP6X3/gQKDnkQloz9Pur6DvX4wPw1+7Pz2S/ATkZ6J/OZ7eZv7reyp/oK90pPdB9036xwT4uef5pe93Gf8OveXIk4z1aGrn1+g/kfu2vq9L/b34p2+pbxy957/ZvJ9LeifyJgO//td295023xF93fMj779Dx/h8z/sXk05knDP2/Q7t6b53OL74ffyH+0tn9JPIF95fWUZ6Tmj+2lz785zJ9bPv9zG+ZWWe7Pv619H/WurXo1wb5PI9viRA3+vzfb721K8Pf/Yj+4/xE873jZ/Ij31Mxh46U/8o7X/B+/GMO1OhuwB/43uw3v817uV7+PR9lBj81p/OE13/eb5gvK/+CjoN4a8z9HKCNwfwa+OY0WcL8H/u/Ujwt8PfDEQ+46MP0P99fySJ/ZO07+hOJr0av+E+5Wq/4xAZwAkRyAPMhR9MQ385CN+HgcZxeb/Xdzx8l/IR9rMEv+y52rKQPYb3u5ynev+ugvG41D9PeePBo/nf9yJyGLcD/bv4H+OK7pE23ui461XfrYwMYCvSUfTHSONuXb8VeB6f+H2nXfwn6fcngO4TGp/T0fcJ6A/H0UMM/Hem/ZrgN/2OiPd89CtFgb+F/Msy+o9+/1nI/1cw/hkYfu/I98gbOj9034C074FWhB/fC/V9UO89vwo/9vt2npeE4mW/wd5XYd+70L/vQ+dFHvezPf/2vNvz+zGkjV823tN4UOOXK+Fv/kHPOdGz7//8W9yo77jkQ17fT3kTfn3/rDL+uwzlS8HvJPRwlv4wg3qj+f8b9JHY+GvSvqfVgnRR9HUK+Jv7nL6PAz7j13N47wb+fB+zCn5oMelr1Dcu8NXQO3y+h/tvcW3Voef7F+4X+g6G71/4npvn47735v3F9b4/4bsYofnna4w3xomdg77rjyvI9Tt69p3NNLS/9wdqoudaQOPUMtJu+6Fju56i/hG/nwA0js35mPuHXZkHdAOuAk9b5K9h3BrtmNn9PfTl/pX7WTeQvyDj5y3KJULfZfVnof3+h8g1lPrnw+uhUPzgYeYzvs94hHRm6rdCr74rXRL+fKfec8Pe0P2c/KHg2wq9lPBRn3X+JvjviH6c/7f2Pq37m/Tby9jtaPBnoXxD3ydDPr+/09Z3APCbI4CeW/pehPdv23lPCboHkf8Z8g0x3oV6fn/B+csW310jrX+9A79R3qeFXjfw219yg38aco7CftpTfp/3OpHL98M9X/beh+fLnjfnCN3P9b5uVf0bcIrrMs+pfR/Xc1H+9ztVfp/qIv7iMfg990sJ/x2Y92zCjtswj/gbej3BP5t6Q9DHNvJrkN7i+AN0/Bhq3B/1SyG/7x/6vQq/YzEKPrzHa3yPcT2bPcf1foHnGu47YSez0cMB9Hko9J0fz19PUn4a6dbg+4r6voszlP6YinIJjL8i/33K/wm/X/q+C/rXjxzAzj0PzwG9behnbwAiDkPP+wq7gXuBxosNQW9bjd8kvYT8atircYV+n+EQ9pEBv5fVd5GZr2+Fn3Xw7/7Eef7PQfs1wr674PdigJ5vhN/lVA/6z3D8z1zGC+OPUhj3YlwB/FWj/WPDfyyg8Y5+/6C15++MA64f+lEu/J6V71z5/aVT7v8Yr8R8owHpcwGIiMavOH4u8b41aePVjWfPhnzTqGec7l3mh32MVwnFn3aAP8/J3b8sD9zD+OY+ZtfQeJcKesPgbwbt9Qd0ssJHIsrfpn4S7Ry87ufqX/QrxhnoX6LRr/eCTpN+h3KJ/P4McCfnY36npB3jU3vvPQN/gw/PnUbBz3Tj43w/jHLVyf87tB/7RPldt2KPd8kv6fk1eMfhR/x+h/FMxjdlg2/jm9Z53gdcjJzeIyyH/+tIed/j8P2Nc+h3PHyHv3fWyflA3ufrO09z/uR7gv19z4p8z2t9n8Tz3BnoLRnzIfc1lkDPexhT0F8y5u1+1ye7+6SMi/coF37/1Pdb53h+AX39ld9f8rtLxxkf/P5S+Ptk0fBbx/Nt9LYIfL5rU8f3D6C3HHkigb6jXBv+vPcWvg/n/Fh9O0/OZZyF7xcCXzaOAv78XqT7Y+6XuT+2nfLGi/te7Bnfv/PeItB3kf1eou+i+F0+v+Ph+yi58AdT8Dv74T898vt9Qr9L6HcKu7o+QTzHrfB4Vp/2eDUUB/MrfBjX30Q7Zb7p/aOW9MdWQL/jNYLyrdFXTfjsQb3kyPcy9uM7DOHzX+epxnn6Dqjvf3rf5oLjNXQi8A/T4cfvBv6IfTrPMO7EfVX3Wd1freL75N7PIu37a35PyHuZfldI+z7AfOAS/awU9I0j6os8vnPayTh96Ps+gu8iOD/1fNvvN3k/0O83eT+wJv2hOvbgfOyU77fD3zT3meE/hfd/Qt9nahD6PpPfE/RcOIr2ML7lJ+R1vRabdAPk9Lup/2CHhaDbEf2+jN/o6/4Q9V5BHwXp/+No5w7w5fsnKeA3GvrZGAecXzaIDKD3XrwHkwH9H2Z+dMB35o3b9H0A+x34wu8bjQz57/D7jicZP04AWwcg4ifS4e/N+B2a7LT3HvhZ6ftQjJNpaG/fdS0GnBt659XvY/pdzPD7EZPIP4s+92jvtNMu2tv3QDLAx0PS+ckvAOyMvRwOjXttnJ+oJ/CvZzzrSb3X4WeU+1rAA8Z1h+KH3V/uBV73lSdj/3dpL99DLE/+E+T/t7ja72jvYthHCeo3dx1P+9aE7xrAs0D9+NcBiNgNPAo/vk8cn37hO1zGB/keVwPKh9/h6eL3WRk/VgCPMo7kNb5buyJd3/h89PM6/iN8j8TvRWg32pH24/dWjaf+yfgn7OB/7xeQ9n5TOH7EeATjFMLv+/t9rWa0r/eOyyP/HMcTyvtOgu8jGKftvdxOzGOGUT/8/QrvGXm/yPPJueR7Tun5ZGnWI47PCfFTfj/4A+jXMM7WeGPvp4DvIrAc9uD9Ge+ter/S75BV8P4V9I2H60179gL/B7RbAeczlEtH+xhPZpxZeP/b+4neS/SeYjfj4ULxvz/on9Gv7/5dwI5HkPZdwBLuH4NXe9T+/qE/OX47njt++w6t+3y78fPOb8Lvzow0fgJ5RkH/OO3Wz/0R6N+j/mXo3iV9FPv13LC9+1Sh80O/1+7+jfc0ZlDf+Wht6Hm/aIDv6yN/IervJt84oveg+w9y7QLfRMdn8n1H1ziTmdhDJcZXv6/o94x9D1W9+A7cAfhQP75n6/tBnod5DrYef+T5RVTo/OIc82bf9zhP2vOts8yfjsBXe8bp0d7PC8UPbEEPKbGPxvDn+1s30P8j9N+TtO+IfeE5MnJWxi9lY1yuRFr7Owvfb6Dv+/A1yf6LvEuRow1wLfW/c9/BeH3wGd/yX5C/R7h4nH3defTX0/Y/8OYoY1QS9amQUkQZSshwkZmkbnKFIqRuUabITIMoMmZKKhEiikqiQqlIrozRYI5CpsR3rd/78bSW11p+73/2Oq9zzj57OvtM+5z3up3L/b/fiuYl+ELlEryiRQm+sVMJDtu1BIdKz2laguN2LMH9dynBO8tKsLX8O3cowa/l965XgkfA/4DyKxqX4EENS7CT/PbVSvBx7f8Bz9V7luBR0v+WP3+rEpylfue6JfjE9iX4U+jfrQR33rQEJ/jeVHq1/J7gds1KcKR2doK/qfZH4Pd66dfJ8yPtv4q/T8i7BXzHkd8Z8B5E/o32KsF5+Km3dQlWhH9H9Z+G73z139q9BCOfLch7SSPt4ucB+ef5/qf6PaXn4m9E9Iv+7cFy2nkNvVXQ8ar0evz/LN1EvZr42Fd7z0jftmUJrm1SgkPIczP6vwTfn/n+kPZb0ete4MPq98XnZvQ5UXuPggcrt0D788FH0Xm4cn3Un+N7xyolOJr83/D9APgeYUdnSE9A93nwrSlfgs+S7zmblOA+8HRIGp+TtinBW+QfKr8u/E9WKsGzyLk8+LL608l1/bYl2JiejiafDg3Qs10J3qudYfJ7S49Bx+rIhX0O0b93VG6q/N/Vn10C5XqAbWqW4ALlepPXXOmLwNvZZ4vNSvBr+vkKLLdHCfxCP+W032fzEuwFz0rpk+U/qvwG9PXibz4iry/Qcy/7vZK81sE3W/6fym9TtQTX0vPj2vlYfhf63o6+qtDf29rft0YJ/qj+xfr7fexjT/QPUn575W4m/8FpF/4a0mvI7w763YG8uqNrsvwx+LlU/Xn4XKDcrAolWI4cXqhYgj3RNwC/lWuX4LboPCL6q6UcP7gbvPPJ9372eja6r9OvLkEvcZRbCa5iz6dpd0d0ZVw4Rb3x6KvPf72Kr3rSg9FxL/u6AP/XwTuJfOvBOxXsCP+z+KtBfjeQS9f66OafLmVfw5TbKXZATpfqVwPh3xKexuhfRn5DC/2sM362B+/Cz5XaGUe+J5LPK76frN128tNvBpN7+s2L+DuSX+jj++Ps6U71D6O/FfxQB+V7wXcrBV6Jr1X63zT5x/AHR4NnwjuM/K5H97vk9pr6zdW/onoJDuQXLgcX4uuwLUpwLTk8hZ5byPcCfrGf8vXoYyM62uqfbcA/wcx3JqDnPv26me9Pobe38bSOcXi1cept7Z2rXDd6qct+huB/e3LrQv4zpSO/F+H5r3RndlCLndamj1XaacmO6ih/bZ0SnKO9Osq9oX7GpXvRt5q/W8g+XmQPJ+LzCuWnK/8C+y2nXEXwGu08of2l5D1J+jT6qUZ/K/BVhx6Hwr8B/kPkz2FHi/GzmD4ayD+SvtvA3xO+puRbGVyk/1eh7wt8/zV2pH537XfG5pnSDbW3Fb23kt4B3/8i//uND83R/Z70JhmH8f82PxV/fRV8bxofDma3c/nH69D5jvY20GcX8piI/uP5w/+wk8rq3YC+i/mvAeDvyvVE3+qyEjxG+cPVf0L6XPWWoON39NeN/yXXs+n/LHIYjb7+8B2m/FB4Wiuf+dZq34eBB8r/p3ndZPnV9Nv9tHMO+9hXe0v0x27kdDo4jBwzv8+8PvP8DZlP84/bSTeUroe/18inp37xDro6st+P2Pl48hysnePYZ1/p7+Ffwl7vVm84fmrIr6j8NvK/l38A/PPJs2PGD/2xHrmeJL2X8lvg/0Nyukb9Bcp35Z9jV9+Sa1PtX4n/X3f6O5/hbxN4r2J3x8NzIPkcxu5PAFfCczX8h+gfT2f+DO5MHmfyZ/fod19LPy3d0nixF1hN+1vBv1Z7F0gfj84t0feIeVHX2AX7vkr+veyhM7wfG0e/hG+g8lei9wN2N4D/bUR+sd8zyXcx/Q1kV4fwS7XIsy18sffU/5y/aU5/hxnflih3A//SDj9v829t8XO+7/PR11T+Wu3dj46myr9CP7PBw8j5Uf7qUn5vV+uuJmAf7TTB31Ho/xL+u9lRPeNtfXBHcKX6u5LHFHAhfc7U/uPkXV75P/TbU7K+1u7r+BuC3vH08Ifx9nvpy+irKv3eg582+H6F3Ms3/zv+A5S/VvlD5d+t/90Df9YnM/C/UXov8j4CfQv1r6PJYyf59+NzoPzehfnj5eiYSz6n+74i4xn6n5L/qva+gGcEuitorz//+778ndUfL78j//EAuhbwb7Wzfsf/IvDLrD+18xX63tOv18A7mx7rsus6YAP7Df3Is7P+cLH2BuD/YfIZh78JYA34vwLv0f45/OZx8Byi/TPY/bX4PEu6gXJT9P9nwX+Ra9ZHG33fkp3+IX0tfaQ/nYSfY8l5Jj7OVb4F+VYCV7Lvb/mvCurdJX0O/N/rbzPB/7Dv3ci/BbmfjL/jwEb0VNV4er16J5tH1kBH1tUZP+uxlzXZz9FuA+kT4kfJZw75D8J/V/ptk/GP/+1Jf+dq90j8fUkPm6j/qfzHpd+Pn6Hvz/n/ueT3GL1/g45++ttY9d63vj4N3Q+Z3//OPq5G33+y/jY+bEw+vzUKvs3R21j7PQv7e53JJft7o7X3qnq3gDvjr2/W9dJn4H8oPNl3HUnfO9DjcP3jfP1qc3Jfgo8H0fcRuRxOH2eh9zP4PuTfP0DXleyhn/KT9PuHSqDcLOmJ6F2o/nr1M9/M/PI4/vR4MPPo7vhbbvz6OPu6+H9Y/XX8Q6d8lx4ifx79t5S/D/1/ip6r0JP5SuYvzejzWO3WYV9vwVMH/sx/s//YHr7sP67jT3b1fZD+2EL6afazBz2fX1aCg+nvCfrqp38sgrcy/ZWZX4/XL2/NerTF3+mdFf+Dn6wvLyOvzZRbx17ux28H7Wc/MvuTu7CPr/mvAfrdJeDt2h+VfRV8nYz+qfD9QT+P+L6t9i6E/zztbaH8s+Ev+/P6by396EUw66B/l0C5W8CR4JHkvhb/9+D3oOwzk+/z+nu/wjoi6/Ha7PM18v1O/X3Jdwn9HBF/qv7pWY/pr2ezy13Ja1/y+1G7/+Qnu+vX69jht+zgJvb7En9/g/zj1c/+zd7o+1P/u5W9PlyYn3+TeTn7uEJ+U/J7Ah1NpA+GfwC8L0kvyvkP/Rb3z5qDlyr/MPnn3OgpcniD/IfS91p8rAO3yX4GOzhXOzvwLy/DPwo/j5FnI/nL6Ge6+ttp73/o6w7/u9K15c9Qvof85ejOvsOe9Jv9h9rS2R/d0Xj8CXyN+c+cY9TLPhl8c9h/e/h2gOdU9jyQPx6n/q/sNfv/degt+2FTlHuU/f1u/vKW9jZm/459z8LfJPhakkd99P9E/7+AP4Pzlcv5zQvqx58+o38/L/1O+r30L+o3VK8DO3/I9+fQvxI/h9DzKfJn6t8z0LOEHBpq5wR4q+RcEGzGT49A32r96Wr5n0sfk3mq9Vtn7Y+V/g4fme9tzP5Xzvfg30u/e1t+K+lm9DsO3B2/l2f/U/0+/HEXcEd4fkBfTfbR3PdNtX8t+11oPrAk84xaf6f3OvJ4hF3dwf6z/7IjembB+2ZZCfZG7zHkfizYETyZPedcch14JTvM+r8vvbfzfVP+qzI9n8wf5pyvJzg554bofU/5X+jpm/Tfwv5S9pvC3xTy+E7+QeRRCb7h/NEq7a7Sf3LOsgX//6N+/z667sHfD+yptvInwpf98UX8Q8bPecaRBuyivnZH5/wA/szfr0D3FvAPI797CucXhyrfy7iZdWjWH+3kZ91xMv3OJc+Z6C6Of83Rt5je39XeA/BXZFfZH8l+Syf0Pqf9Y7XbQ7oS/g8lv8b4uoY97p/9V+UX0Fv8693hlzyb0ee56q+Fvyn5v2AelH7aRf4z8MdOngab4f9I+H6TPgI8Cn33k8+jxtWa6Mv5xgrwc/SVkdMe5He4/nFZ/JryO6BvGvrX5hwKfJ58m6N3tHnayIyn/H/OW05VPucwP9HHZfZf1qIn+5sj+d+j6feYjEv2/TLelbffUAu8jT111f5S+I+D/2P416HnZ+V3QfccfuRF+fulf+TcRf2KOd8m9478dm345qOvB/84mn89KnzIr51zCPLohc5lLf5efv6uf69Xpv3q5NGQfS2Xvk254niVcexE6fX8yk/gD+CO9H+g/jwRnur0fH/mM/jO+ukX7d6AvjHZlwP/VYZf+I81n8q+d/bDryXvp42/WR89I72cft7NOTX8JyXuxfh2Iv19B9+p8FSKv2Tff9DTgpwjKN+fvntJHw0uyzlo/KXvF8FzCfsdzv5uBS/Xfl3tJ66gDTxX8V+D0N/dfPY07X3AT1Yg35rovRGeuexlM+3sr9118G+i/N7qP5p9/5x3Zx9D/n/5xd/ouRi/0QnfsZfG2jlCuiZ+RmT9mDgP8nkLvYkX2LqsBDfXL2ZkPo7vV6R3Q2+n7J+i49vED2n/E/Rm/b9t4fx8fcHur0v8lvp/so8zIzftzAU78Z8/oONQ9D1Jv6fqPx20u8H3h7I/qd6X+B2gnfirVwr9J/0p/We9+p+yj2dybsB/XGc+ci1Yp6wE+8hvjb822Q+H7wn0HcG//Qr//uivLL9o/wPVr0G+mY9nnv6cdj5C/1z+JPPo7OPMVK6c+ewM3+/Wn1/Sbjv1l8uvRW7jtF+BPz/PvKp/xkNwtfoX53wGXaerX4Vf/TT7lPTbE323xI9rN+u9rO+yHsz6cLjyWR8eZFwYoZ2srxorP116cuK99Kf19Jfz7swrZuknOf9+ybxlFjgRnJL5Nvu9E57BxtHz4/+MF/vK3w3+rdhB5jWZ54SOrD8Sj9eDX09c3tx/mD/mHCPxL3X0n0r8RCXlXyTXneB/XL0e9FNT/k3oPZodTMs6Dv7y7OJndlUfHVfR/wb+8xd2so38rIfuKuy/v6rd7L9P0P75+tEH7DnzsqPLSrCjeeQx0sPgeYA/OFJ7OdfbXf5q+nopcQH4H8deBsN3E7i9dqpknKa/RerfKD0o+13knvOfr/iRX40PdcnneN/vRl9T/iH72vfl3CnxhOxzAzoSV5Q4o8QX/an8nurvrfxy/FcyLr1pH6id8XI38i+XfXPl5yZOUv5EdtsMf5son3iX7Gt/CDZR7mH2MYL9zPP9tq3+Tu++6J1CDpuws6nwH4/eHchtHD62Q+/IzDezHlDudel2ZSVYTfog6cRL5pzsKvrK+emW9HM6umer34N/SXzO3vxT7LBof+3x14o8r9fPd4L/OfWjx9PYyy7o+cz661J4Py/sl1wMXy10nqwfzUBfW+naOYeVrhf/Sx+t4TtQ/3uJ/pbrv2X4vxOdY9EX+4hdJM4u9vEb/3lBxn/lZuB/PH5v1++6wXeP9m/0PftX2beqUYgvTDzhSOXGwn+o/MMSZwX+gI6tyb+4vp+gfn3y7aTd+8jxef4j64i36PcA/mwx+hL3sLfyF6i/Pfmkv8cOc557nvKJZziUf67OP1+WeDHt7a+dFsr3zjkufnflf5rGD6H3DPnD8X1I4lDJf3v0PpL5Mf9TWf01/Mte6l3FnhLXdwM5Z752ifaGqf8/6QcS7yS9kPzuJp+D8Vcd3sQjrCGvn81jtyKPSdo92Hrj4+yv4Gfubn/na7n0Y9obg75x9sf7J44v++DaH8b/t9Re9k0bkN883yfBvyX5t2Ffv9Pr9/IvynkPPJvrP0N9Px2/FdCR+J3Y81jfE2+xLPvn0pfxUy+T9x7qfYnf83JPAf1d9c8p+kn8U8aXq9lDT/30XLAt/gbwV9OVfxc9J2rvI3LNuNWS/8/40EL6XvC3+En8zDG/mQ2+DC6Frw/5ZZ6dfc3MswfhZ3jmXcqNwH/isnN/J/d5Ep+9El05L/tQuh78HemrGT7HqZ9zm5Xklfj8FdKPJ75I/3oZPAZdie98nxwSl5Lzsw78c85VE1+Y84EqyufcqQb6i+dPm5oPHK/99dlfz36v8fi+9Ft2kviNPX3PvOB9dGTekPVj1o2Vja/ZT3hM/6pKT2fAk/2wm8mtb+wRvsRPHkD/veW3iT+TLi99VuIO2E81cv6MfX/LDr6Qzn7LVPYdv9JVf/43+m7hf/pnnxqeKvR3Ze4npT+T77Hsq7F6OxXOA7L/n/lxB/UyPx4pP/3lFvqYiu9F7OMWes2+5vcZZ9Gf+wmfq380ehqR74HkvYt2H5TO/nhT9jUI/psTD0O+PezHdSXHs9HXC32J33xYvcRtZv48yngzAZ1rzPdzP2gUfTTSfvaXTpPugt7EO0/mn/eTfkZ/Thxve/Vuh3+h8olDekM68Ugz1XsGvj7sYUX0U9ivzn724eRTjLfOeWj2Z1sV7o0tkM79sbPRdRY+EweY86fEdw2mz8R5Jb5rrPo1s3+C/vP4pz0TV6f9W+FdJ/+UnFf7fimYfcLcW/wz+4PoPgN/D8qPv3hR/awvXs39o/gnMPe8lqL/irISTDxi4lsPyb2rxI2Z77ZkXw8qP4r+voRvQvwuv9Ra/S1zHzLni4X7pblXmvuYiQdPfHhH+BMf3kR/e4gfTFzMftpvzT/XlV5AXo9L1yrMP0cU/Pub6Hov8T30nvl31uV3aDfnI1mfPxz/AM8kcB/1x+t/Pyl3hP70Ff4myi/6tyXoPZQ/Psj3ExMHh8590Ncuce/S69OP2HN7cGP2OdE3nb5zf+q9jA/0d2T2DRLPkPkHOh7Tzu/ob8If3Y++PdhHH/zET/2ncL9qkn2cstxXzjqL/zwGXzlHeA08unDuM6Jw/rMh56roX59zcvIv7odnn/wT6b3Yb+afR2k388/cj+2mH+Z+bO7LfpHzCe1/B8+XiS8sxD82pI+X+f818PyWe8z4qUJ+1chtDjkOBU9I/IvyY3IPBd+Jb/tAe9dm3Y/OKvS7HH1bw7OyrAQH5r40/ebe02Llch8q5zc5r5lgfT0QfTPZSyffE+ebuN9N6edPcnuCPrJ+qWS+9Qa+5/s+Ff6d+OvEn8yGpz3+X835r3GrFf8zR/0GuXfi++/4PlX9z9C5HblOxf/Puf9Irxl3c86T851Lcp8cfZeRRzv1q/IP72tnE+nb4VtkvHtO/14s/XTuMWf/DDyHvseyn134o+7yzwITF3K68tXxfQd5PIj+J+hrEvh44rzQ/wK7mA5WTVwM/Ln/f7T+My77gfrHbPrbiI6q+tsB6HkK/f1yP9p6tW3mM77n3uVH6Ms+ScuyEmzNbt4mt5vo8yb2uwp9d9LPrYnPQP8V+D0bvSONn7W0f2Xmm8rfJj/31zv63lM7ExKfjM4PYof0+1DsmV0+l7hS/WWe9iaTR+KC78ffMYk7029yDrcwcdmJb8r8U/7SshJsmv1FfiXxUbuQV+KkPk98FX0Pwt8Y+M8kz9Hmv9knf4c+TmPvibvLeiPxdyvUPx+/ide7KPHV2ss5b/F899/sYRr6s849Cr5/2hevlfsasXftXm4fJu83dMj9YfPP4eD/sj+k3Qey/wjP3uxjpPq5f5h7d/MyXy2cx5yfc3L0v6N+9v+PUO+/8tfrl4nHXoquUdJZv2bdmnVs8vc3Pn/u+3d5NwK8hn8erv7Z/PcD2r+NP4yfHFk4B9+MvKqDDcDE2TZNfDSYOPivwU/1r2XwVc05Ru7pFd6DyDsROX9K/GzuS34CNqef9I+p4O7xB1l/sc+sx26Xrss+dzNfvx4drXPepf3EkyS+5KGck8KX/cibtZ/9yuxPJj56I5j46MR75T2CfvSyq3rZ/3kJvYvZ2Sr8z8j5GXqaFO5bTFO/Tu4RZ/2d+EvpxDGOhS/xjYnTWKZ/ZZ5ZPfv68P/O/zDjchulm+aeQ8Hffyx9UebRhfuNz0rnnmPeneiBr+L7E7Okf03cgHT2U1qzv+zbzCrED9+P3sRNjpZunPv95JP40Zx7d8f/g9q5yfeJyq8np/n0urXxM3H6C9jfNPwu0l5F+a3VL873Mg/sjP+xWX+DY8CT4CnD71H83Fm+v6v/T0HvWYl3ween8u/it3fIuxn8TTX0fKbfbAPvssL8+jD0bp57Y/Rxkvy8K3BC4s20vzX55H2hLoX1et4Xyvl8zuNzPr9Rez+XQLlPQOIod7FyFyRuBrwTX5ugb1hhvGirXuIJf86+Kfoex8+MzIPRm/6X/ph4+sRXJK4icRbD8f9f40f8+7b8c94BOcR85035HYwXWd/nXL6B77eYZ+d8fhC/fZP6V0r/SB+JO3gS3bmfvS35bst+5yWuJPEKuT+Z+YN6OU/N+ekjHMcT7G03eM/k3++F90flO5Dz2/I/lD8bfZuyrz21fyC7z/3oyvr3FvDdrl+OAm8DEw8zFL5a7OM4+J4jl2nklXnbh/g8M/ED/F3up2T9ei39Jj6nmX6bOJ3pic+h32ro2hRcrFzio/POROKkEx99r/HpHvCr3HfMviD6poA1zFfHwd9L/zofzP2j3EvKPDzx18V5zqjQD9/+0jn//irzpaw74M/9qXXKfUufd8lfxV76oiP36JYmvjnxKfSVc86cb2a/6hL+uTg+5/5S8f7HUuXmqd+EvU9Q/h101kx8HrnuQ/8z4bsPf9vKzz3NmtI7w/cx/t7I+2navYZ9nMEezkNfV3LYF/5v9LcLcy6dcyv2VyHxd+b1v2a/I+fQ/MVJ/M7P2Z8HG6E7/jjvf5yE/+zDZH9tUc6RtV+839haOvccjyLv59nNTeDSxBPAm33exAHk/m9b/q+xcv0TN4u+duS6R+4zmWftTr5P8xc3ovuzwj5lOf1tCDv4k/5yjyLv6uQ9ndzD/hodneHtlXGZPpqw++L7ETmHeFD779HP5tpbkjg1+vindzcG4fd6+PNuzdnwDM39KOWzP/dV7jdJZ76Z+ec59JD556/sb0v83EoeU8k/5/05D8j5QH31u8CXff3jc44C9kZ/L/CC3BdWPu9a5H5o7ovmfmhxPyf7PP2zf+J+Vt65eZZ/7Eb+tdF7Nv3fCM8g9N9m3F1HnnkP6yf5zWK/uQ8uP/dDv+N3o4d1Od+Er0vWu+i4Jv0X/ceiayE+92evY/GTexPzwWmF+xN9sl6RnsG+n6LPWfC/CI7Rf06VX1V6vH40Fsx7QhXIJ/dpx+mvH0iP1d8TR3s5+0s8bXH+nnn7FPz3Mm5nH+c86eznbEqunZSPnxhAv7n3XDvr1bwHST/r+MUv4Gsfv5h4Ovw/B76Mj8Snv4T+axN3w74+yP0C/WcxOVTV/ofyL6T/i+i1hnZGo+MFek2cU+Kb7ks/s77chj96nzzOzn3pjEfs4PCcW+N/T3rvS27d8x5l+of+9zS6JoPdyKcqey4HVgHX6g8LjQvPKn8AOS2Cv475ce6f7mIelfuni/mDb/NOX+7xJD6TfN8lj745Z6afmuylYt53yzhtfN1Zv8q+8+XksZg8Xuefc67+mnTu51xs/ZR7tcX7tj8U5h+n4C/7UZmHrsFnR/U+pb/EFe+r/WJ8cT319pQeAn9F9D+B3+wfZj8x+4d5V7KvcsX3JYv7ednnS/zK1+zyq9gnO2/IXz+J/8TvjIE/8Tuj5Z+uncyLD058dlkJrsTnMvaS+PEL2UN3cuwr3RX+3AesxS5zL7AV+7i3MJ/O/Pp/aR9f8fsvSGd/+TX9dpX5V/H+2qeJtyD/DfL7kV/uh+ReSO6J7IK/zdXP/ZrrM0+kj9w36JF4zpxHw599vqxf3s45EPzZz3sw62D6yf5ezg9zbvid/pL7RyPguyz3IcjlLek+/EXvvCMH5vxmHHtNv8h+bfrNq/Q+jNyzzs47q3snHi/3D9nnu9rPfsMdkSt/8DB5jOE/d8d3efmJfztNe02kT4Y/73fNzvt9seOcq5PvAP7kPflD5Kc/Jr78en428eVZh2X9kXVHU/K9Lu8j6W/ZT89+++Scj8GffZ3ifs/4nMvgP+87zGdn4xKfZpyKfleDxf3QrMPuQt9M9tJe+by/O6Fwvzj3ivtkPVXYry2+f7InOeZe94+5r0p+teBPfF72ZROftyzr+cRd+f5f7WxJfx+WleBHYJfIGX+Xq/co/7Ih+zrs71J2/SS7/lB6D+02o7+vwRHZX8fPO+YL+8Cf98biR74kj4ezL+X7N9pPvH7ecSi+37BK/14JTsD/dfKzb3iK/pb47cT/5Z5pee3NRv9pxte8H5N3Y9J/8/7LHPmbZ75jfL0j50z0ezfYHF3z6HOa9rIuOBwfWS9sQ+714K2q3fnZXzRebGKceEl++8SfZj838YXK5X3fojwip03zPkxZCdYvjAe5/7KKva5Ab9ZHuV83Qr/Muutwcsh6bIu8KyE9FL0LyaeG77mPnP3NMvn90ZW4+sTZJ77+Tv1/VPalzHcn03dD/vME7d7Mv9TCX0v4895x9gHyvnsF/rEm+m5K3K3x5Rn6zPuOddGf9x1rkkf2L2oYh7N/kfigxAVlH2O89vfNuKJ/Lct4mfkR/9gO3nPw8Qt4KP5z7p13BTrn/SfyStxT8X5S4ivOLcRZJL5iffSPv5bw/I99xJ7iD3bOfYC872Y/bXvwWvxeTD55b2vPvDsL/9R/eH9rnvFxmvyXzZem6l8XwtMq++Al8Nf+ffbzs3+feMjEr/VPnFvi32LfhXdT6sY+rSfX4+sO6afUz/sKdXIvUrnF9JT7LRnPc88l91vWs88fwVXwjFZ+AHmXz3sruZ9IvovYb95XeEX/yPsKp7Kf7J++kHUG+s7Hf/S/IeuM7IPBl3cDsk7J+mQRvZ8KT86Rb0bfOTv+/8vdmvsu8Gbd8WnW9yVQbjf9ZCv+7AF41pBHNfTOyf6U/rUb+8q7FM8Zp3I/fB6/k/9fyP8uJL4l68OB6Mz6MOvF0dInZb5feH/zMfaQ+Wvms5m/dmLXef8o/6dxafxP4qnY5yP6cfbbEs+b/Z3G+BpJLtvoT9uCW7OzSXm/j34vJId30Hd8IT76R3aUOOnER3+Q9/Tp533pvGc3hP+8UTrxFB+p30084CH6yXTpe7OfbzzMvczEn3Qnn2L848Xkn/skPcg192hG4y/vmNzB/22Jz9yLyPs095DXprkfKP2BctXVj98s+tPiflr22TYmjpx+hycOWbuvoK8+ehv4Plm6Efu6nX8cmXu87C3vhz2V83H6zD3yrN/yPlxr9pH34UZq53v95V5wSfbRcx6M3/roLfqPnO/mXDd053z3SPI5T/320s/yv++ol/i42eR3Mn524VcSH9fQ/lXHxPPh9wr954fMN8m/+B7jjYX4q7wrdjD6EifwiXTsLvG20+kz77UknvTjwj3AnP/lXazETef+S+Kn7+LvNoB7JJ43csx4y881AXMO0974eyeY85yc43Q1L6mX+GbwPXAgfzMGffXxXw3/tQrvQyROLfFpLZS7iL8pTx/v5f8d6DP7M1tJ532IvvxKzv0yjmX8yv8eHQpen7iVxA+w27z/nPegn877nOw+7zLcJ513G3Ju0p8+i+cnn/F3q8EX1E9c6gPmY3mX/Q30f0Qu1fO+TM7HpbM/9av13JHSE3OPQv9IfGbGrfx/UMavb/TnHTKvS3/F/0z63z3vFCvXkhyzf/QZuqfzF89qrwm7np/zOOnL1T+NvA8mnw/oI/PYofgdAmZ+mXnnFhmv8LUc3dvgbzD8o+BdCk7OfQx0Zfw4jh/4a/yAN/exc097Mv66mZePy7kmPpbmvgJ8+R+A4vv/z+hvif8/M+8oyS++21yMvzmBPyxX2KdLfORbiY/JfRb6uTX79frPSfrVmfDlHf8Hy0rwU/Ocr/TfjujYkb0k7nsaO8j7zhO1N0y5gdrJ+UIT7ee9oQN97xL649fpJ+/bHUS/F+lvrdDbEp6Zeb+CveV/L75DX/7/IvcX8r8wubdwvfZOp58V9JP1ctbJbX1/K3Gs2b9C32ryXwrfSvXX5/4Tu34n+cr/ID/viXeQ/hD9uV9ZO/eFtVsr6dy/RWfeJy5PDlXYz7f0dmHu10pXVP/9xDWQ43vSidPN+nMO+C06nsj5s/by7tIN+mPm138an++Cr77vDfHXRf7xYCPzvRY5v9L/LgIzr5+e+Fv0ZFwtxg+20m7uEXfj53Ymj7xv3YYe8r513q840bywh+/5X7C8r57z4G6J6yucBzY0Pud/RW7OPIG+Ghkvfmf3uRf8L/T1o4+LEr+Kz8HgF/rzmPgZ8sh7I//0vxt90F983+yvd820/0/vouU9nFY5V9beEejM/c9j6e24vNOn/Xbgr/Amfrev/vMufEPoJ3GtP9Ff3kPox14eZD9vFtZxmRfMIP+ttPsQ+jKvmKx+5hUt1P8RfZmX1MB35idj4c3+8n/Yy9HaOSD/l6OdZ8x/yvJ+Fvn2QPdi6dwPKN5nzv9D1kTfs/xbe98b4iP/E1Bcv2bdmvtDG9lnBf037xjk/YLWZSWYuLqjpBNvV3zvLe/AXSed/dHsh2Z/9EL8dcv/f+DzC+PJt8rdor3qYM4Z8n7GK+jdht76FP7/ci17ulk/uTr/B5B9Xe3vk/UtmPtyubfVKe+uk2fub+XdhfyvwgDpvL+wvPCe6DfSlfF/nX6Rd/i+JM+8w5f/2/ynezhtzesvUW6Ncs+Rd+7N5z5l7tMvkJ95YXt2MwMfl8h/ndxyDpnzx8SBzCwrwRfBnA+GvswDvsm4nfGNfobjJ+/Hxp/k/yTz/0aZP29nvFlCfvn/xZz7FM+Dcq/1iKzL8fWm/lfJeHUC/vM/j/l/x7zLuJl9ieL7jIPZ037So6Rzj7GDdi/P/+hIZ79mdSHutg1+8/91x7K3+fzzSWUlmHeJ8i7eF+hdpx+3SvyQ+fNb4Cboehn+Xvzn7lnXys89/PiDvNtdXbmzpIv/N1WT/fzK3vK+cd4lyflw3hfLvfWhibdF1+m5B4nfj/j9/emppfovwJf3re/GZ963XkZ/y9Tvp738n2PWF1lX5D2rrC86kee/wdr4zf+ktUFf/r8x9+iqFOZv70tnHpf5W849BmbdUTj/2LuwHluHvtxvz/2s7Ivlnlbir7rAPyh+HT3Zn5vMvuLf49cTPz046zF053868v8cuT/+CJh488SX38O+sy9a3C89DV0V6P036ecjH3zl/2FOVH+8/p/1etbvW9vPzPuKO9H76+j9Tf2Oed/GeLE9/KvpL/PvW/T3/K9o/md0tPbrK38Kv/QQevP+5HT9tg25PC+9efYByPcneDvj4yT05X7W+MRDZV9B+3+9Gy8//4N7tfp57yP38qYV3gPJ/zfkPYl50nlf6kTyGUSfuR/6lvxpWb+hp3nuQcjPffv4p/ir3G/O/G8NO87876/5YJn24RmAnimJdyX/vINQfP8g86/ENy/K/CHz/8L+xvf08QV+jzUeLLevMBbMuWPu418Gb+7zTsn+U/ZVwezfPpn9BeN3OfBNMP8PWIl/zrlwzolzPrwfuVXO/Zb4m5wfm9/1NK5kPpz50QJ2WVH+u3mngT6zf5n78XlnJvd3bkB+3icZIP28/DvoJ3bVGx+xt8S1JM4l8S1dcr+a/nJvLvfocn/uF3pYkvtVyv1WeD92OfgxmHdk855G3tf4tPC+xpv6X94XfKvwf5rF+JfMC/K+2m38T96vGCWd89+l2nsz8TDksUE6/yeReL4/0J33VtrxuxP1i+zj3gx/3v2rkvvz6B+feybw7wweGb+sfiP9M+fLOW9epZ3cX/5EHHT2ze8Gc16Z88v7yDPnlzlvHwDfo9nXBbcsK8FvEpcFz3Hke5X8c/BzAv+e94Gu5JcHgW1zHoTPg33vmfbp4zj2s2v2u3MPiV4y/0/8V96FSZxA3of5PxGjH6F4nH3defSWUxc38ChKGgylpyI/MjWolLlMGZOQscmUoUwhSslQFEUKIZQQKmSKp5BkiMpQiUiiZCqkKBHxvGu99+drLde7vPc/e53rnLPPns4+0z7n3n7ncv/3N7ZBCV65Uwnu3qQE61byvXoJfrxLCe7YrASv36EEL4BnwXYluLJxCa6Gd4tGJXit9Ed7lODnJVDuEHgvk35M+/9Fzx7qvQZ2g2/MNtrZrQTXwdNQ/S3VP0299vVLcKr65+70Tzof3bUEH0D/FvC9IP+XuiU4q6FyytfX/klbluD32n+vdgkuqVWC70qP1O5i+Ouqf3+NElwjXXnHEtxM+hr0R1/nVS7BSfB1l94Bf8duWoKHbF2CR6HrnKYluBW97eD7o/C+I92hSgmeRd+/4Xcv+pugvTroGyfdRvutapbgFerNwW+Z+nexr5PkX639Z7U3nn4vKivBAfh/kn6O2aIEG8AzFh3PyK9Hnuf7fqH2D9m9BI/U3lG+H63dI9C3nFyr0/cq7R2s3BTyPZMcO21Vgvtq/4NNSnAB+CH4vvwjtXsUOtrAe7j2t4S3A3lejY4h0r3p9blqyml/CDw/Kt9Q+a20s1D65aolWIv8d/H9Ou1fsnkJbgLPpeTxGfu4GT/ltHt8xRIcCN9x/MPj5UvwevocJP9HfmUz+jsev/fA34LeNtb+/9DbGH3j0ddEuZba/1p+DfpZh+8j4TmheQmOIbdd2cPt6Hpe/6gmf5L6VaU/ke6D/ovJ5Xf0vAx/a/3hc3b4KPnegr83+YtNYv/S8Se10D+RnQxTrjX899L/WvV+A7fHz9Pl8Mv/fLJ9CXaLX+aPqoOt4P+F/fTCT3n0XC6/I/ncqv3p5NoOnbXxd6l0F/UnklNN5Tuxjx7o29H3fcHl6h2G3qHso6X+8wr8FdBzJ3nvKv2S8h8p/6Lyz6NvvXQH+E/DX1Xt12W3LdjVnmBj9bfhn2uCtcDH2N9J2p+k/UXaO0/9xduW4DXKfSY9V/nKm5XgxeRwk3Kt6XeKdA/5A+qVYB/1e5Lvy/h6lv1dT7+X0d+e6h9C3x9LH88uyum3u/m+CDyPfR6Bji0a/JO+AerfyG+Pouc25NNLf74IXYfHLtW/iL2uUq+9dvopfxV5V5T+k/w24L8c/suD37K/Y8i/MXvpRw6d0DOAvJpIL1TvQOXOgX9+nRL8CN0HkMtU/G2O7jPofSm76qZ+541K8HVwHJjxobF278Hf3uS4nP6q8pvVwDczjpHfUu1nHtIGfY/oH2vp+yt0rdDePPWbGP/78CvV0HEp/3MufayDN/Olxeq3kz9NvRO085j2e5FnW/kHgt3h70seU8HW/G9H8v5O+bfps6P2W5FPp/+UYGfwE3SuUe9Z9nW/eq+yk7n0f716FaXHa7da/Lv5zSHglewx/eck/uM0+OdI/67918jnavLqRb+18HOmfvct/uP/T2FfP8tvpP7p2j8J/1+zi3OM05/S48bkP8v3meBb4C/wDaOfU/FzMno3QV979JzJXp+Vf6j8ndWbAFa3Pjgr4wN9/one+b7Pxt8k5T/0fYNys+Rvhb4dM17STwvw98wfyPtF85QXM5/V/1/G93rphfQ7mD5OIq92+F0k/xjpE+XvZ5z/RH5984ODlRvLnzTRDwayv3HyjyorwcfQ/4rvneEvh55bpR8g7+X4Owa/3envMu23ga8XO9yPPP/U37dT/0j9vbn8n8h/OXq7ondP8q/MvsZk/CDfq5S/kL39oN3TzZ+naK+D/rWX+ufj5w/62Uq5RuBo9O7d+J98Haa9UamP/+H820BwEJh5wwT20zrrCfU/x39L/n0v8F3fvyb/vennbPSfSB57o+fjjG/K3cfeD0T3yfrrEuWz3v0L/h7693HWnfX5ma3hm5j5qHH4YnbcFL4/Cv23Kb434KOW/DOz7qK/bclvH+NHY+31oP8K8G/Gn7VlJ2dLtyHPjsbjU8FTwHbsZwG+mpNDNfZ9etaP9JF55Rhyqc0+DiXvuugfjs65+t8U8nwVPRPN3ybBcwW5lZVAuQ3kuQGes7R7Evl1lX4k62jpk+WfLT1O/qna/1F+8/gl8nuR/Nul35jv/Ym+b83nbld/MP23pJ9nfV8GX23yGkh+20Wf4LvKzVB/DPlNwPdj4DPoPEX+/ODL/JX+xtJf9m9asJed4a+F/8sy3qL3Lfnv4+c+9tNduf/QVx/5M8tKsK/0rRnv4L82eqG3i/F5EL4PzLqcXsqR78HsuSp+N/J9V/wdBt8Z0l+aRz0q3ZH91CD328lvr6zX6fMJ9Ozm+4/a+Ub+t2D8VhP2ewv+Dle/g36yLvsA5LGcnbwsP/ZyBn9XiV8/WPvfgrehuyd6mpHHeOmMR3vpt3uDGa96qr8QHRPJcVH8sXnLQvSVkz5P/tH84xvoPZQeH6X/s9nfKxVKsAb/9hz5fEBuVdXfiZ7PpefIPfuZ2d+cp/5l/Os5+PgFf1l33qj8x/h6lTyjx/P4q2vIaxj6G/FPw6Wvlb+N+UFj+Wu1P4E8j9WfbtD+x+aj17OL2Pl89teN/BqR1zr0Zv42Aj/94LtDun72M9GzK/4zD58AXwPtz1P+aOXulf81esZqr6Xx/jHpyDv7l9urH70cBN4AX1f5S/F3PvyNlWslvYD8nmbvTdXra5y+VPtvsYdZ4K9gV/z0pL9vs0/GfzUlh0rsug78t+r/Y9F7L3v+CTwFfYvQl/VU1ldZb42Gvy7515V+RvkLpLuiL+vnzvi9k738YX43B9yJnDdobyl6Rio/CJ7Jzf//eH9Efz/1O5Pra/CuZ88Hmb+dr96uWYfrb/PJr5d6Vcmxl3Kf6r9XZh2H/un0n33JG30fpPyr9PuL/Efh/5H8mma+rr2sOy9jn2/R3wZyqwD/Fbv8s/2j+MM7SqBcRzD7U1XJZRa7OVD/zf7IV/hvh94Tsr+JvhP4s/7sYIrxY6j8PYwvG+HzIOmj458K64v58LyN/uvNdzbF7yr129PvjubjB+kP26j3DDgZvuybXul79k/v5k8mgiPBpdq7vwTK/QIuBa/Mfqb+EL8RPxL/0Ur77cAL8XlE9vnhWaW9L/jTIehcqPzh2tmWXe6N/1vw/5r+eyqY/YXHpLeLf4fvEPx3o+/u8dvy71Z+Enut4fta+s0++06F9X/2A7L+/0T/ugw98cPfwX+IedND8B8snX2OH4ybj4E9yKs1+VQxX7/Y99kbl+Ch8g8vK8GJ6NtK/9oi53PyL0fXaun7yOf9wnpmFDrrwr+SXmaZn8zO/iv6H0XXTso3k/+l9Dnk2Y4892AHXbIeh2c0envy3zkfuMt6/232fTV7yP7x/zMuSj8tfz39lkPXb9KvZH0M38nwV8RPW/J8Qb165DfbfKc5PlqT32R8NCorwS20P57ddeN/foUv65Vd4DuFfNfLz3qlO/x3Zl9X+mH43zP+n82PnYfu0fpPHfaZ9VAX/a+j/FuNK8PA89nn89rZKPtb8H8D/phzXOuj0zIfCr3kdSa+HlD+ZuX2RP8Z+P1T+XfVLy9/Lv2vBT+m38X0tTn5vpD5FDw96HcJ/peCX4Cvo+N0/r0BPtuAJ/KTn5iPvISu+/AzVHvVlX+Rfl8AO6PjVP2nIrgGnqdz/q6dQfhaJX1f/In541xwoHKj5I9Czye+f6q/fU6/+7GP/clrAHmtRv/d6s2nh9o5r+Ef6voe/7Yd2BT9f+pPS41bG6Q/hPd5+DLvuJ39/Ea/rcpK8O/9GHp5lf4+4e/u4AcbgVujvzb7O0I/KjPe5pysFn30J4+x6CmPv5eMWw3wNTXjGHpyHpbzsZyXtcDPZvzHauVmsNPd0XcpPG8r/65+NoX8htHrULCa7/ep/xn7eps8Y5+Vsr+S+Ufm6zmvDh76H6ZezfSDwvlRezDzoobkU8H8KvuV2b9cQH+96XN99k3gmab989E3GP+9Mq+C/xzy+on8Bqt3FP5yvp5z9XfoNefrc8yP78x+lvwD2c8N6C/6nw8L48U++sXp/GTGj9tyroT/r/F5kPxx8PZXL+P8Mfj7Sn/YwI5XJl4FvT+T19bo+i3nvdr7vKwEn8X/zJzvSz9d2D/O/sSb2o995fwydhb7ulF/yvxhW+nMH9KPsv5fB8+F5Lstf/Wk74fha2f6+0F7j+tXH9L3DepnvD+UHWU+kPH/k7ISXAhvzrP2If+Jxqv/kev25PCX8iP5hfvxkXiWxK/cCd8K8vxW+3VyXs3/n2D+O9N8vQZ57R95wvOz+lkffMkf/1f7T4Nvo/NX488+ka90HfRNp+/Z6Hsy63T2u5z+M08eWpgn5/zxV/TN0f5m7KOd/tEWPBp8XbnR2e+RLsZjNYe/Gfi7/Jnsp6Lv/xZH8hV/+FT0Lv05/upo/xvpnvR9O/u4m/28pt639H5K4h/YZ3N83YKPDfBlXzRxDQ+UQLn9Cvsnf4Ar8ZF10LTsD8rvSQ9vkO/N/O5XkWfOHcnvxuy3ZL4EX734T/2iO1icX3c2r7i+YD+D2c8g+ngy8Wb4HK/+w/JHqf+Z9BHqXy09HX1fSO8GT+ap2U9fhJ/t1H9Ufs7TH5HflPy6oX8r6bP4iefRl7idltpvyE8/Al/izrZK/1C+TP5d5kcHaHeJfnwLebyn/PM5Z9ZOdfrbm/72BfcBF9PDKvTMh2ea9GD03Ecf2Td7wDpvBP5upte1YJWCH/0z8VnwvwL/s+h8nD0+UdhfynnAYdp/VLvLwIvg35K/767du/WjLdX/jV1Xh3dfdOR8rXh+Uzv1pHfRX3cGvwKzT7As+1L4Waf+F+znS+1m/dcFnbuxt/jr+O9j5cd/V9XedH6gDX/xp3Z7qx+/XTfnM+pfZP8o+5y1s47W/qf08xP8I8yv2mS9z96il+gp+rnb+JK4s+J58WT1f4389Y+eid9B3wJ03W4f/3Hyy3nsXPlnwHOs+icn7qJwPnAq/e3NfiaAsd+28ORc/yHyz7n+ZO33Nt4fYJzsIx0//Dj9tDVP36D+QP2vOK6cTC6nga+jfz/1vlfurZwXWR/crL3byP8h+RXIqwK59/F9Iv4zDmY/M/ubu+GvYVkJPob+NTknYB+/oKche/oifk/9h+T3R1fW+YvRkXVUefUWSP8q3Yj8qvALR6lfJedI5h/7qpd4gJz/15O/KvGTiQdM/JH87eHNPll//muG9rNvMZQ/aZnzNfUvYj/Z/2iV8Yjfzf5xrYK8Z8G30vfp5tHdyS/xnZ8aRxLfeSh+Xtdu/MYb0omvXcZ+DoH/YXRsWVjfZ13fP/Ee8G9uPvg4fAdlfzbxq+z+ZHbYhty/UP5O/vYCeGeVleAQ6f2Uz3nrPHzcTz8v0vtbiatAb+LwH9KvPyqM20PYZwX1E/+UuKfK2tuef/sL3t/AzEcr8V9trPN+IN/Ekc/VblV4P6KvxfGf8rdG74noXZR4D/JZk/kkPifjf578TonzkD9T/R2kB2l/Vs67En9H/6eqX9wfukT5fomXxvfonE+ST9adWY9elfNN/qWi8WFT8Cx0rSG/jfn1tdI5/9sVvurqbQFm/NuWnBM3eB56O7HDnD/n3Pk56T3V2xYdidM7AZ4lsQ92X0P+JtJHwp9xbjm4Dv0PyT8Nvf9D17f6e+Jp0r/K4lfA3A+Yr980zjl5/BD6dmF32ZeZzj+fTX69tdshcdHaPZf9DEdf4t4SB5f4tx2MV7Xpp1zOJbP/iP7KYF/yyT2HxdZh/3YO+WHWXdId1RvGvnZLnCv5Z/9zRdbv7OMR9Yvxu9n/GFjYB0l8wMx/iU8bgf/Hs2+uXuKrbiS/N82vt+HnHpT/Mv+ceJeb6PNUcr5X/lPof5N9TjafyT2TjuY/76NrJX0n/vgV40Pim7eRrkc/d8P/UvQK70nk+wS+Nk+8Mb7GoK8res4Cx2TenHi/shIYkX0Icj4efRP0h6z/4+e3g6eh9k9E76DE5+Z+BL5GwJf7P/dIz0FX7heNkT8NrBS/jf/cgwkfa/j/Wuhfge814DGJx8v9MXaS9VvsJ/PX/2on9ycij3uUu1M72aeZ73vuaz3FnyY+7Wr2/CG5HAf/ceRTW3+vC9YBmyk3HP766N3B99ejv8ynrduzjs/6va3v07LPlzhReHIeuA7+9NeNyG/jyCfjifQz+D048eLZN5LfJf3F/OkO+e/Lv41896efg81Dns8+jfI5x+lB3jnvqYTe39lHPeNUbXS9rP2BxsMbwDeyTsn+PfubXoZe7XxAPw+R7y3gF+ibgP5Zud+m3bnkfDj6ysu/Ad7B+HlPegO6uifON+dQiccrgXJt9MO58A3O+Sd7nArPosSVo2cCf5O48k2MR4fT7zPkfonyG7I/i/61/OPP8M7G33c577Ae3UO929B9WPYHyLeechemPHwr6OkJ7V0uPUv6A/Pl7PMW93cnGP++ge9l7deGJ+edf5+DggPIrx+9LiXXN42Xt6E/+8XZPz4cvsSPvcf+W5PLEPY4P+cQ5N8KzH2H+NEW6Q/scnPjxTr8Re/n01/03zn0of8U9RKffgn95l5o7oPmnkbuZyw2nx1Jn4kXGIee4/mzZfg8V3pQxjd8zqSvd/ib6c3+yd818B+l/pv4O7KsBJ/gx4/LuK797bNvyI6OJef427lZD2tnOnr6wl8Fv8flXqf6mR+3kp9498S/v4r+idYDT9s32Ej69cQp8ddvojvn9EPYx3b65ZzMK/B1IvtbRF7xe/uAWYevQc//yHsmP3dF4gMTF5p4D/zN0N7zOZ9if9kfujfrJHbxh3HuBO1kvRE7PZjfzTwg93RyH3pz8qxKvyewhwvkN4V3T+3vnPM09pl5XW/pxzPPNS/LPdPe6j9EXwv5s9/h31Z/yD3bo9G7ce6JGI+6qn+X/AMSt4uu79T/jH+8I/MesEP2wXP+mn2dnM/qn99lX5WeKym3UnsXafZ08m+Fj/FZz+j/P6qf8eEP9rUPve5GLlmXH0D+iSesm3m9elPlV0Zv7j9mHM/9x0rkezA7uhMd95DDd9rP/Lap/K3pK+u5rO+y3ov/yX3I7FMN0J+zP7VM/cznNuEHFub+MrmNwf8B+M19lqH09x/0fIefA+E7Pft36DpNOucMA/jVYfSwZ/b98JP7b+Ev/jXz9OvKSjDx/suVj34Tb3ohfWSfNvGnzcyPTkhcPHqWF+w19pv5d+z3Q+Vb4OcM7YwDJ+uvFdH7HjleTn7P6i/z4M05ZM4f19B/J/XWS78CXyPfc776Ort6A6xLH8ejbwf6vwt9G5Nn9lvXK/dezrd2+id/eSfgHulG6Enc/DbyEz+/hH2swt9q/fkK9UfmfpJ6byROJeMzen+C72jpprlnRv6ZX2W+lfnVisSlaf/nwvj3HP/XFb/7y7+f/HP+lXOvxFHm/Cv7CdlfqGH+sh4/A8l3EHgDmHFlOPpm6v/3o3sU+zje9+PA9mDOuauYn1UDc79vB3ha8Bc3oLuy/PbwZ/2V9VbOy3ck3yH65Tz95BP8jcz+lPF6KbkV59m5P5F4+17SuT9RVftjwZ/NU4ahv5l2jkNf5r/9pHfP/iT95Rw69yk78Ge5L/a59O65X1lWgtkfGAdPRfR9rv8mHnM6/Lk/8z75vEXO9dhj+cTH6n9j6O0BMHq6yvxrafaXpC+Wn7i53IPsww5z//Gg+EWwMf93u/nPDPbdBT0j9NMP1L+cPqclbke5H+gr69Ff2M9U/Sv3+nLfYRi6cg9iBjneXFaCLel3Onwt8j4Evh/T/peJ94X/a/OxQ82PvpJupPxq+qmGjsXa2TLnXYmbTJwO/9MdP2/Sz0P0l/27r9G/gt2fiK7X4kfQV448M2/KfKqM/I+U3wbMuL+efSZeM+friedM/OYgfCUeoHpZCeb+5Zjso8dvSd+j/bPpaza850oPiP+D70py7A1Ohyfx7ol/n5z9pazv2dt16H8YvTXIN/vJOcfOvaacX9/H/qbAu8B4kvO77C9mPzH7i0+z3/jZPdW/G5/Z3+1IH5frpxdq7yv5Deh9Q85f8b0/+vLewFr85D2COvJzTv0HOJ59Jn6/+P7Dt+j5MvcP+YP/Zh6KvsS7RS7dEpeRfgb/fPQ2o5+jlT8/8zn2nX2KidLZr6iScyt4lqDzGvj7sJeV9HEvO879g0es2/LOyxLpvPfysfSJOU9gHw3os63110++b87edk+8FX4j78g/7z/ciJ4W5FfF/OCdxHkX4t8ulk4c3P7afRAdI/mZvCu0EF85V8o5U86X+sjfFL1zjO+TpOP/4+/j/3P//uHCvCLx2cvhr2O8eoqetlB+G+XPRvcR9JN5StXcb2ePK50rTKCHB+kv5205f8t5XPW8X6J85mez9ePMz8rk572r1tq7LPED+M/6aV92mHPO24yXeZ/paXKfEvtQvz2//T1/nPeW4rY/AEeBWfc8Qt6zsh9U8Cd72++6UfvlyXkg+y+Hn7xv9UfmMeR3E/3czm4WKLeV/Cv1/yPQm3PWxEtlPyz7ZJkHZr9sDfnuo91h8QfoS7zR1+Sfe3E/pX/S75fZF8l9RvrZQ/0G2uup3F15T0D59+NX2Fvet8r95pqJu5T/p/rz8L+PcXhvMO89PaL/Zn93oPYmoS/7pevZ47uJX8j9ydwfpIcWyvVn/9dlfZx4wcTRkk/ujeW+ZPF+yKfk1429Z59/rPqXmL+8ST4DpJ/K+RZ7GIneS7X3o/QU/uyS7GuBU7N/m3g18jmMv+qL3mPVX5v346R/Tzw2fr4v3Nubnvey6D/7YQ8HL36/t65YAX4H5p5h9odeTXxA7pniP/G70fflhfs7vyd+Cb4rjTd5p24B+hI/ckT4y3yMP8n5T3329kDiN+0Pxr5ybtAMf8vQf7l+Ny3nNfK/QE/iztYlDgB/N9BHzlNql5Vg9od74PdisC/YDb0Ncr8d3i34gU70cEfiG+h3T3zk/v1I8vkOHTuTf+53jtW/BuecinwexucG/nRn5XrhY3N4cr8z9zr7Zt1LfyPQnfi1xLMlfu3cgr/8Bt9b5v4AvurF7+a8CX1zzR+etM4cK90EfR3yrqV5Ve7hNyCnzHs3Uf4B8jxH/qL4RfJahZ9bs7/+L/OK58m/Kbk1AZvlHQZ4XsJXzk2yv5P4oK7KL2BvX8J/Nvm8wp987fsHmTfKvwB/uT+S+yS5P9LceJ11WTt2siT3owvvCnyf8336vY28Zvq+CzqWKl9R/7oncd/avYZ8vqSXZbmnpF7G0b/oK/PPftLf4OON+Af4d6SPbbRzAPvN/eH90Vcz8yv41mpvFTw11B+gfDn8Jb7yauXzfkXerXhRvbxfUS7nJfRZLX6b/WwGX63sH2j/U/Ruj5964LHkNF69S/i7S8Eheb9Bfkf+a1jWnznHBZ/S79trrwl630N/Y/Z3Mr+zh3T2L1dYj/Rj/03wt4P+8g66O/Kfc+J/E4+Hjqy3Ex+e8XOE77m/kvssx7K/Yvx04qbPlt+Aff5bHEfWT1MK66cq+s97iStFb8Os47K+L9h33imKnSfeP/H/uQ+wNfrG6b/z2M9I/LVUrrl0M/AP7eT+Qt5XOheevK80mH7+i//Edexo/2MZ+n4nv5+zjofnNPhfKcRDZT1dWf4B5JN1fs7Pst6/H92jwV2yr5L1svFzD/345fh/9D/F3z+I74mJn2dfHdnvcnZ+D3nfmPEe3Xkf+K6cV6I/8Szz0ZM4l9/5h8xLcr+4+P5ob/LNvmb2ObO/mXP5n9Qvns8vxU/uuTdDx1b0k33gHXNfER/v4v9h497qxFVLT9J/PkVPBenB6r9UOB97AV0LtZdzsnfZR+6N/EzPeT+xT/ST+J/E0Se+mrz68VuT4J+ovd2tD57UPw/D50r8tVEv78h8n/cA0L8r+8w+RwPpajkfgX/v7Acr9xs6877eweiZVnhvb0LuK+An58Bn0U/W7Q/yb09kn4j/GM9vJt4n7xgnPrEr+z0bbGe8SnzUkrISHPEv/q8Yf9xP/04c8pfW9TnfuL7wPs8Fxo127OZi/Ge/5gt6GQPvJOkj8f05+UTfb8D7E/66yX8OvkryE8/+hPwVGTfgzf35htqbDf6Q+KmsI9C9R+SuH+T9g3fErzSXf4H1fN4/yPp6Fph40cSHrrZ+yP2O3PfI/Y7+8hNfNYCcn1P/BfOnnMNNkc453I74yfvgwxIvhb7M+8eQ7yj4M//vlfe82NmynPOSc1v2P9P4sit9Z59nM353cfZ/4dsW/sPYa+5HJx4n9zrfZ7fP0lf2O7O/mfdSr4F/B3rr0fCf3/O+6tCsb9XPuyEZN4v3507jX17RzhnS3xT2X/M+30fkNI1/eJm/WAVvcf/nSfnx6znPin/vWoifzbp3R/qaSW6T6f3qzHtyvsG/5v3vu8gj95PznkYT/OS9jT3Rfxy8eceq+H7V6rw/J533NHI/o5d+XTPzVnwcyn+1yf3C3Jsi94ra70D/G9HfNeDKrH8L55k558w4Nj3vKue9H983I5+nsh4z7iTePOfjV5Jf7rU0Yld5z/Ms/izxYXlnJ++r/tu5ad4bnEV/iVtLHNu99N+WvVUl95PNdxP3Mpb8eyT+wDh2SfN/0pP3v29G98Xyt1A/8Tl5DyPvX/xFPnnfZxNyfF79Yrx84uh/oO/y2SAFNwbzPvx3yl2b97TJKe+nJv64t3ab8y+zpTsrn7i0OxL3m/gC41HGpcGpn3GavD6F59fclyb/r8i/f+ZliTfJPD/x6+Ynuf+Y+5A3Jf5e+ceUy/tyndVPvM8m0g/hf0nhXZAaiQ8OzHuX7OpE9Wvpj5fzRxXJ5zTl/iO/Vvbl6PcA/bce+R3Lv5+j/Ej95H309bbvmfV8zr8Th3QTeS6Et37WeeR/OXu7hT185vtU+M9n9zlvzT2sm+KPyfM69D6o/lXq/6Tdpeh4WDr3aVoW3mXNPYLcH825TM5jFifeMeOz/EvJ/SD5n/FPo+AfDeZ+8Qf6y3XW02+yl2HkthA9nymf84acQ+Q9wIOMux2UG4qeFfTxqv77LH5vCz3wb8Su/kfPef8268y89/t3Wv5+eR+PPO9R7iflfsRHd/7qZPl9jbet0ZP3QEZHrujukvg+4+ETec8s5zzsJfOuifKL869X4c39lAUZD/Cfe0aPkO84861+eX8195rgu1J7eX92NP4rx+/Tzxu5f+j7aPLYK3HI8VP8UjV0PJP95txXZd/b0VviExKv0Fv5/P/KJzmvJI8J5heNE9+VeZb2K8CbuLvE4SX+Lvv216t/qfaPhz/3L+rQc+5hZH1xrPziPdzsZx+lX06F/5Tcr1XutYL+cn8h94uuMn6tyzs77Gt/5TO/ynxqonTie8cqf0TitMzT2if+jD1kX3amcrdrP+/v5d29r6wPumr/K/zFX9+m/bwP1Uz/Oy/3CnKuCz5qXHoq94S1e17ed0ZPxpsaidNAf1905z7Vr8aBY9A3mD+/CbwFnJH4Z/JP/MCm9Jz/Z8j71+9qN+c937DHjvA19L1rzuVzfsD+l4BVwJvib/GV9ULWEzkfORHezGOL89cpxuvttHs5+beDL//vkvPvvFeY93968icVwGr8ZLPMn/XPd/mJ/QvjyTj9LfZ8e8YX6Q/Rm3t/r5m/dqLfa7XbifzrSOd9nseNO4nT3zbvpaE/+52tyDv/F3WS9IG5/6b9nvB8pv/nvdW8v5r3WLM+rk++7dR/QP85knyuYP9f08+y3DdR/0z2eGji++Vnn6MxfdTiR7pn/YD/EeiZo/362nlP+/F7ue8Uv3ca+fRSvy16ZmSfSrkT6bemcu2lT8++HX3fB44qjPN7lZVgXXq6OfO+vN8bf6F83uPI+cca9to669rMr9A/Vf191LsWzP8nncpePrVPMUY6/59UJe9f4Gc/3z/XXhf9ozNYKfGxOZ+A75ecl2kn7zXNYY8nk99KePvkPezcn+Anst+Ufdr+5tNzYqfmO3kv7qLC/YOu6lfPfQ/+aR67mgMOoofsJw7NubN2Mn72KZy75Hw85y/l9e8Z6nUrzGc74Hu0dn5H76n0V4a/3BNfzo/kfvg4/SPxVzlPSPzV9YX7b7kPl/tvie/7LPEO6M/75r/lvA++xN/URN8z7OndnD/Lz/ssXUrg7/+FelE6/w/1a86ntZP3sr4g/yXs79Ts90k/I3+wdH3tb6rcDOnnyS3v4I3HZxf8XZv4pdwXprf838uB7Hp14g+ko++sn7Ju6indCv6sv14rrMMOkF+Mr7rW+Jn47c3178zrTuIvD8n+I1gz8ezs5wL1825J3jF5nZ9MPH32v5Zm3yTnhOiJf35Y+cThxj/n/ymyfti5zHf1K9H7cZm/s7+NyG9j/SP9YW4JlBsqXVN/+Tr7i/DkvcOjjIe5l3GkdA/8N9Be9Jl3AvL/PR8br/M+xkfSL7Hvzckz/x8ygT3l/0Mu4T9yjzX3uPI+4Uv661Tw3sQPwDscv3kHOu8/t0dv/h+xgvJ1yCv/lziV/palP2k398wS15R3217lL4YoN0b/HW+cyDwz88ustyujZyW9Rl8XkO9B+vHx8N4tP/Fb9cFFOQfL+yXoqmHfJe8oJX4l+/PZP/g+8fjsJ/cXe+gnl4C5z7iR/pr/Jzs9cUD4y7wp54HTCvOnjoX1XdZ7Wd/N018Th7MsUHt5dzPvbcYPPZP33fTLe+j1NvaUe1IXoSv38VaQ85WJTzbfbZ+4O+mF8R9lJZj58kJ4/+Ln8v81+d+azfIOjfKHpL+jY+PMZ9Uv3ifJPZMPcl+1cL9/sv55H/pX5/9KC/H8+f+dq/jN4fpn8T2r+uSfd5fyfw15zzn7nfPyXgs6s/+ZeO/EA+Z/Ll6kn/yvY97/zDscmf9n3pn/icl8NPPQmfSRe6G35HwHfbuVlWAX+J/Ofgr+J5lfPA02gifvP5Wp3zLnZer3pP/j6Wsyux3Cfi7LeIXfvIOySD9sDd8HW/wTb+LIy9F/V/hao79/4lPIuy189eT/af63QP3sH10lf2P+5FPyyf7dUOWyj5f9u77o+4ycZyiX+Ms66Mv93OL9vdxnuapwr+UW8t9KuXMK71MkfiH/l5H/z8j8Kf+fMQ3ea9j57fpR4rRPIZ/ts6+r/b+yX6Peb9K5R5f3Sdfz34lT7px3/tlv/u/hktzvk+5Lfrm/txbM/b3c5yvGhyQuJO85nWdfY7Z+OFz7w/Gf/cLoNfuE0ffW+mvmmTWln0T/CONtY/QnXu4D7Y8vvE8ykhzy/4H5v478f8fivPeg/cOk8/5v3v/rBD5E/8X3xXK/oCK9fa4f5Z22KerlvCTv9p5eOD85kFyzL1vcr+2L/ye1MxT/m+b+CfuZmDjdnHOjN/e3E7+b97pyf7sReeV8bh/tZj/lLvociO76/NcT8K1ln/uSy0v62x6535/7ONrtrJ9kf7wJfs83P7gQnIOPY/O/0llvqp/97fTvumD6d/r7anJdlX3vjEvsszifzjz7W+3cn/kremrKH0r/p6if+Oti/GjOx3sXzslzPr7E+HGfecC9iQegh7PoO/cHNwE3xf/SEvj7/y7yPxi5P515VfZTi/Oru8l318TN0POojJfmV4krzz5R4uMqmu+0YEfn2J/L+yCNykow/y+Q8S3/L3CU9gaQT/4nsDE+815n3u/M+UviEU5Q/23lfibfA9R/UP8eUjiHbU4/w9G7qfG7k/R/cj6sfPF/ffP/EzlXzv/HJU4q8VGj+c9L0fOU8rmfnveHWsLbX7t/vz/E3uKX4qfin/KefN6Xn43PvC+f+Mm845i4yXvZ/2z2l3fKXzeejsn5mH51cf5nPXFMiV/i96ppt7f+cib8/wcaajf5eJx13Xf419MbP/CykmgZScOnPSgi2YTIFomQEaKSTUZGvkKZiaykkoqkRVaRFFEqUYiiYZXdNxkZv+v6vR/P73X1+l2/9z/3dV7nnPvc6+z73O/Pdyj3f38tapRg56YleG6zEvyiegme3KgEP9qyBIc1L8H/NCzByrVKcK56x+5WgldXK8E16l8jfdnuJXhdkxJss0cJnte4BCdKH7ZjCU6oWYLjwEvRecD2JdiurARboucfeB/cvAT/wl8F6VotS/CFTUuwCTgBfzvJ/2mnEly2Swn+KH08+gbVL8H/avcU+a3Jp8PWJThC/Q7bluCuu8JHXhdLtyKnOi1KcN96+IF/P3h/lv/ZdtrfpgTfIN+TyfEB9eZpvwG5rMXfW/hdrfxM6ZHKVyPfGuiqLv0R/ifT+/7w9mBP8+lnoHq94dvV981blWBb9TaA34Jz5F9Eb0+AL+F/a+2XY5/91LuTfg/Q3lh6vU3+CeS5v/xb0Xex/IbgcfI/gb+173+D26GvJXucTX6/0/9c9J1auQQXamcQ/p8n/wfprwG+3qKvgdqPHi9Tr6b2++o/1zYowfPgnyO9O3wt6qATHAvPIeyun+/DpZ/V335F32D63Ie9vYSeTvr3YPJ+Qfur0d1X+cPZ+xr1DkX/Eez9K/J9Q/3R6u+FvwPR8T24kDzXyH+trASvgbemdDd8XlmxBE8mj5crlOBx2t8Sf+do/3f1PlT+XfZ9Mzm9I/2z9s6mrxfx10X918jz381KcBw51VbvTfiX6G8DyOFhdMxA3+/62xT4f5OOPXyzs3ZCB/19r35N9U7U7i7Sl9DfWHxtA98o+d3I+3rtLVfuYvTdpPy32n0YvweXleAQ+r+SvA7Tfweh60twCLoaK9/S99b0W439HEVOPZWbon/NhX8OOB/8S7mT2csO6O4L/zT8HYff+sq/vFUJviL/OfbxIrscjt9q8j/V/5eAn4EztdNb/SXq1YbnbvnzjU9nouNk6VXyf9ikBPfy/RDjxT/s5zT2/ST+ytHXa/j5gj38Bf8hxqc36W9P9TLezKLHj/A3H/554Fx2mv4203zzJlhf/i7wPY7v6tJVq2ycvxt6p6c/oru38XUmfbxP/7/howL76Kk/10JPd+k/4L+M/UzE7xNZt+BvBXqWkes3yg8ml7fpcx9yawPuqb3n2PXZ2rvU+Hs0fpqh/0b0X6teXfS0Z6/V6Wlm7RJ8Q7lO1hcz6GUKeX6Bj8Xwfkoui6Q7keNX6o/X3oHwfo7eCRm3pJuWlWBV48M9+N1S+kvp4frfUOW/MA59Dr6Fvk3I7w/pytqbRz4d8H0CeDE6qtBP1n/L8b0Ffpqyj0r09iz5tKG3VdIdyP9EsCPYTbl+6LsTvA28QP6Xxu/LpUdJn4vOX7OeIe+DtfsC+XyI35XKbW39sSv+jtBe1hWtC+uLzC/bk98YeCbSx7XSD4C3Kn8U/BXrluBW4CmZ5+Qvtz79vlIJrpBep3+1ZN8Hw1uD/Jeicz18bfDdU/629Pscut5F/1fw7Ex+i7V3BTktKIFyd+F/x6oleKH27jEOrZXePetl7WccuFz67ZTT/kTtVEffn+oPUL4re1uL/3v0xzpZX0r/hf5j1X9P/aeNH5+T70z5B0m/As9E6Z+NF6vV3xKdC/C/F3ttA+4PfgPvfOPXX+ptkK6E/ifZ13BwGPit+mvI8wdyuZa8X0TfEOP54sL4WZf9LdAfngS7KtcSPxeYF0aAr2hnqnKHGk8WqT9JvR76043m7xvAk7PvI/+3rEs6+T5LOuv7Q+yLnpZ/mPTW8nfB/0zt7ksu12v/WePZaeofjv5XyWc75e9H315pl309nH2Y9If0/wz9fEH/ndldD/g2yP9O+fHay/rwKuPLm/TT2fd57GOy+s+RxzhwZ3z+E/rI4xEw+4httDdKvfd9PxS9O6qfeWdXeIebzyqzj0vxlf1GHXLswr7fIq+b4PsXvj20f5Zx6RvltkDHo1mfaW86OB4cm/W18aY3PHfC01H7c+nt1qyv6f1W+HfD/zPofos+so96RX+/nh3tpN2/8T9f+9dsUYLvyb+ffp5C7yD0XG98mSTd0Prxisw37HGw9IPkcTV6NuDzBPJcLP0R2BmfleT/5vtIfM2yfoieztBeB3BzcIP6a9H/pO+voutecnwU349m/6y9bvibjf5jtVcengfIfwG7nA++D/ZT72fy+hH8CbxNfn14G4DD0PEd/N8aD1vio2LmLfQ/bD35Fnzv468R+i/X/95R71X4e9FvK/0l68LX4HmeHaxjf9uptzM6G2unFfnNk18ePFq5uuqXR8dP+lkX9ldOez+o973x/SL4s25/Cj3F9fu97D/nDtl35vyhKJdH2Fcr8tlTe1spt4f0iQX6KsA7lf63oJ/v7A9+AKujY2985rykKfnfTP/3a/9T+b8qf4505rEaYC/095H/Cf6e1x+2poer0fug8l9aV+2S+cX65w7pp+i9Dzn2BVewryv0hyeMH52lnyOf0fAfzD4/g/ch/PW2fmpuHDpY+mN8dMRfY/KsQN9L1V9SvgQbgE3JuQXYnn0dBf6B7s3NP9871ziSfK7MOEJ+WW9+je7Hcs5HX1eTR/bDq9G7E/6zPs66uBY5ZBy+Gp8fgUfQ81D6+ZD8LlJ+jHTOF7Oe7EPPdZXLenOp+WsZ+Cg+vtRO1m8DtJ/12zhwKbzvKn9E5lFy/Ni6Zww5dtR/muF/P/b0Onw5Z8n57c3wP1rYX2b/mPPZnaTvz/pIujK9LoF3a+lPtH9Gzp3RPRkdc+nrPfT2V/909Q9HX+1aG/O5Jz6zPnyEPIv9s6L6a9hhFe0P1v5H9DtZvbN9Pw6+ZepnP5t97i7S7dD/ufOV5s5XxoPHwvcMek7P+az2xrPvnOuVB0fjM+d8H5o/6qC/i/QE/aeZ7y/BuzLjvfZam/8/jT0rPwx/w5V/DMw6tjz7OiX9w/cDyedh+ZPh3Rm+DfAvw99F6g/Neab6X7OPF40nVcCpyl8Bf+wu9wHDjTNDyP9c5T+E/4+cc6uf9d4sdK6W/lX+/uQ5xrjZxvjXEp5++ucv9rE/sqdJ8LycewX9uy96z0DPZr7P0f5A319C/6HG3X20P8r3Nei73H6/OjgfPadp5yffL6Pvaxps3N6s3OuAD+hfk9V/VfnfzZsDpI+Vv5/zkTHm3Z7Sx4VPcBF59aePKfR7FvpGy39f+XLsZR/yq8/+u4M7Kt/RuNQGf+f5/obxtzF8h7C3Helzqv7R0/g8gtw/Vf4/8HVGzjCwvu/75nwVvr3AEcaB6fB/hd7LlV8lfQz99TB+bUsOuQf4Tfm72FHu5cann6mf+6TcL+W+6Sfyu1r5b8Ab5DdE353s6iHf92YHNennEfraoL2jsi5SP+f/56A39wCH5fzT/NrJ98eU/xL+FeafU+mtEzwv5f5N+Zfhe0f7q+nzf/3DuUT6SfrHM/pj9skd8FOW9Ri6BsE/Xn4l7S9Df1nuq9HbU/qEjKtZt8fe4Gvp/KEh+U7IulD+xMx76n+c/Yb0beyjSlkJ3i79kvxn8NUbnQegZ0fyGUo+92rnNOl7lPsev1/Btzk9dKWHBeaH1vph+mNd+BuSxxHoOB6+hvCPNt/lfPIj82FtcngaXZdm30x+Z5HPUONjefnr1euGvqbG40bgIvm/yr+MvHJPtFj+f3M/pN4J+m/ueS/O+ou8btEvzjc+5v72Z+PHT+AEdPchn+7sL/dgx5DfX/Dn/vRyfOYeNecZ2xTmvcyDmf8WN9qY7xG+D0dH5vPhKa9c5vdH4V3r+9v0VCH2aFw/iHz2LYyv2X9mv5n9Z+4riveFuUdsrP8Pxe8jyq9lRyOUr0E//4G3Gblcm3MO9LXKei/nufDNpveXc3+oP34M/33k2Zm+5uaeF3/7Zl+g/HT9s7/y5dF7U+SK3oyfk9lFDXhuk35Terr6L9DHleh8zPjTo3A/fKt6mR/iP/EMvuI/sZX8Zfrv0eAccowfzdnobWoe7Sp9Z/b/vp/se+bd9P8byO/GnP84H8x5wg1Ztyv/IjrrkO8n7OF1+sr52ZvstR+5Xq/+O+S1UHqy+vXUy714M/lTjD/d8V1N+hz5t+Lrd3j7SVfB5zv6//qcw4EZL7cxb69Xv0y6kvoX5LwUnZuh7zP141/0vX7yHXhV7C7zqXpH4+Na9pH9e/bt1Qr79870My3nbfAMkT84663MN/iI/0Nxf5x9ce6P5qPnH/WL65NB+ksf7VfNeZlyOa9ZJ51znKrw1WBXteR3R99h7LsbuY5C1xrlhslfTj5bZx2VdT14kX6xpfpXarcZ/jL/Zd3ZSL3Y/0j6a8pOt0PfAP15hvxu8L9tXPgd/MW42p9dHgpuGns3X8wBa7KPb7XTGv9Povsd6YXo3Eb/fUv5dto7F3/VySX97W39s1780+inCv7ij3Gf9PHmw0uyfyn4Y03L/Gh9ttr+IPfb/dG1e/wu4L2KfO4ij1/Y8c3sZ1vlRxofuzbZOD/y28R+sL9+eQZ9vKvd+Pkdw26yn83+dQR6V8B/l3Qz9nUwvk5Rf7B6f6L/JvJuGrrhWU3+x5g/K5HbL/jJOXd/6du1d4J5oIL632c+QcePOecjx0/Y7yDt1i4rwaeMH2XS9cCcD/fN/QV5HOR7E3hOxW/uu3L/dWTuoUM/uT+Lj1XGg8j/J3zfAO8t0p+mf7L7oWCDnB+Q70L2ui85Fs8fppRAuR5g9m/7gLHvr8g39t2W/exQVoIT8TsC/edqf4D27yfnTbU/Er42+M++trjfvUS9Suz0R/AB8sn5W/w7iv6U0wv79+bo/pz+rrM+z3r8LXrYIv4x5Hoveibb5+e+YRf9u7L+d2T8eeR/g/858R/BZ/w3KqL3Bfg7qP9I1qclUO5M9X6VvoV8Z5k/f6aX3dDRTv29Cv4y8Z95T/6mxv9TzWMNyGOf7Mfit5H9n/Rc6XPJq2/Bb/YG+c9aL4wFj5R/U+6X9Muu5rHp5NCT/Fcaj1aBJ2lnivyzCvYznH5yPjIav/ELjp9wO/rfD9652u2melv1e5Nn/KiL/tPz2dl9+Mq65Cz4u6Pva/pfp/1O8F9Yb+Nyyf8Tvu3K0EU/VfCxl3Yyr9+pv3ZVf3P2dwb9Tolccx8l/3zj4Qnyt4dvHP6qqn+48rXx8Yv00co/rR9kHEj/b2vcuVu7V+jPXdR/Rv0rtLc/OnqRX85nP4O3VeE+tpz5Yxo95Nx9JDx7lZXgseyiFnhG7kfw3wn8DR/3Zp9lPXEUOTwufV/uq8Fp6BkXvxD6PQm9642L8UO+Bj+rtPeB9jM+ZLzYSnpr/HyXfU7uL9jvOOU/kS5vfLnMuPcn/L3iH6v+Q+gaDP5qvDsGnfs6135EPx0G3p7zjPhf4X93dMzDf9/s37Lu0H/6yX+KvR7DfuNn9pv0/JzHgzlPe1j9nH/PN47uY/3xW9bzxpX4d8Wf/D/yc1/5rXHvXnaZ+8vsB/v4fhY8eV9RjT3cTc/j5D8O/9/s5jDff2B/O5HTn/HbsX7up51N4I9/dBl4J/3ET/p3+v3MuPyY7+eoXzxX3wHslv6j3ezHXmA/L+H/UfRvMM43Ue4g+GuT95/4OZJ+jlD/XOPVpui+nV77yT+fPT0aqP4Nua8krwX0s954siL7xZwj5j4EHR3179PMO5vB21l6L+3nXcxycl+PzoXwbR+/NnT/pd1LpfuTT/f4MaA7/bfoz/Aauf8Lf86tbo/80LOZcmejexS88eddrv3mxr9R0rtK7wb/VfGbyXpK/ZxjPWo9dYp2lkrPU/8h339Bf94NvJ39D3yLlW+n3A/Sy9hls9yTg5XRO815wZX4fkD5benvbeehO9jn5P62au7Z8LEluj5Az+jcZyif8/2eBf+L+vp/A7Ae+CQ8/2GX8Q/JeVXOpxZIvw8W9T/U+L658pvFD0e50/Tfi3KPXLjfPgy9e8AzS3o8+TUKf/g/At1r2Pdnyn8KvpDzCfVH0sdR5PFk/EHNHy8aL3fNuVP8M+i5J/t4Vno1Ot6RHqjf1jFvzcbf8sjf+HCtfpf+vRTe+FN+jf73Cv6WBxj/H8y5NXnsQP/b4uc9dpZ3XiexzwOMq6vUbxt/VPQPQ8865Y43Dt6Kj8Hk0Rk/OR8dIP1q9sP0mfOH1vrPqdp7Eb4vyOlr9W83fp8ov37useg378tyL1xOO53xN4R8857mKe2dRT6Vle8P37PkPjb3X/R/F5h3YvHfeIbdd8s9D3vegP7f6G20egPlHyv/Znq/j17G5P467wPZz57KPy8d/+uj0Jv7utvIu6n0fto9F/4K0kPxPwZfWXdlHZb++xH6D7GOKJ7z534m9zGb+T4BfdlP7GNezX4j+4v4x7YFDwYbwXMqeeQerXh/Nlh/WIePnCPm/PBy/eM4dLbDz0nxu8LXbuQxw/dO9PsEvP+N3xfYXTsDyeu5zBPGqTsz/trXZN78AF0L6KM+freH5yb0Dafv2EP8MxbFPwidy6R301/bwtsS/R/kvSc+F4Jbor96zpfAlebxzLM5f4l/7QvGgQ+18278luS/nHMa9teWfh4gx5Hs8yTyKq5/zzL/TUP/Wcavqvg4R7o1+xrn+zPWx23IP+/V7tO/ehkHevheE739pCeT3wL014n/MfruVv6erP+U3wP/fyo3RHpH/F+YeZG88n6mUd6XKJ9z6+J5dtY3N5NL1jl5X3FTwT/+a/y3V+559vcmfG9ovwn6iuvN3Df/lPcFxpsKvh8v/SL59868ip5+WRfD/4v11ELjeNZZd6An+6Hsk/4hr5fId5T+saP8YdL3k2dd80WN3K9I551f7qdyL/Wzcjmfz7rjE3rvDH/WH9PYVVn8XaQ7ZH9d8DuOH3L8j1vSXxP44ge8XvmZ9HEJ+Z4cv1dwW/Rdhu68w+kI/ybq/cjOz1fvAvznXfAA9Yrvg7uxt/iLHgqeid4H2deW+GiB//o5xzcedDV+xN899wPz0DUfbE6Of8X/L+3mvtx+4iP6maNc/PSqWZ/uy85WsZ+V4HDl7iCflfh7NudO5BD/mo/yLjr+Gvg7H/6sF7L/yH7kQvJ9pawEB+f9JDxPk2878v7D9/jj18Tv6/jbI++s4d0h793YY+aVzDd5P1kv756bbMznH+S3Bbw74HsROiZpZ7z+XDvvcdB1pfYfsz8+V/518Nyada72bttlY3py33RJzj+Vu1i6jH1kvZj1Y9aTT5DfcPjiV7if8Sb+hUOtR29kfxXJZWH8a80/A8ivGXseQi5/Wo+sYXdPsdNv47+t/Y/haYSOluR7k+9LfX8cHKn+YnbZSz+eofy52m9svJgVPzbj9fnyc985mLy3gX8L+tnLfHpi5J77ePKshN+cy7Qnv2/QF/+Ws2P/+nn8W8ag9/SCX2EH9eOvcAd4O9iUfHJv/qz2c3/+Ffrjbxx/3PjrXqN+BflPq38v+5iV893C+VbOteJ/sRl5PqX8LPX/0n7eT+Xd1Gn6/wP4zHlmzjd7lJVgzjera380+reV3ifrMPVna+/jvPdGX/b9ee+Qd8pt1D/I+uZ86fhD9Mj9inXBavAa8E7yaICeLr6/oT9HDl/hM/4oG8hviPQl0Z/0+/rZofTfj/2Nk39x7t/l534s92I5Hy+P/63MH09qt5L0xMQfsB7dVv6O+KqC7pw/t0g6/knwP8jeZim3TH/8A/7YyyXKx49hjPGnVfwRsz8lt9wHjDV+DKXH+BPGfzDrig74zvnG75n/9Zf2GdfB+dpvof28b31F+7/nfDjng+CF1j9nqDc3/gWFd9wL2G9N9jVV+aPNNzPROd26LX7ti/FTnbx+Md78KP8n6ezPKhpvnsr6C/3R1xL981PwKPhzz9xQ+ZxLL835S+Jx4C/vAbuTa0P07c2e8l4474gTX+jMnN9p7wqwPXs+nNyuLSuHsBLIeulb9rW2oOd72X/e5x6a/ZJ6eZ/7F/leYp3wPDwj6H8M+p9D51T4y+BrZXzO/eOcxDuBP+ufx+mhiXTWP90TvyP7g5yLZn+K7ZFga/3nPnayOH6U8J2YdWreV7GH+A//a37J/cUD5LeV+bmmcndlHZt39+RSLeeC8o/Cf8Psv3NvDX858m2nv8Rf+Ub0bgpvc+n4Jbyb9Se5zQXzDndQzrPhOyf3w+yxEv7Hq/cq2BKdo+k379tjn/Pgj33Wgm/7vHeT/178D+ljOr13Jb970RN/0v8W/EpXyi/608TPZgn88Yf4PP6f6F+S+0r6W4GOA6WXsove+vU14EnsfGHGM3znffpDxq+8T8/7up20m3d2uZ9qr7069Pa38olvNTTxqcitFjhT/SnWR+ebH1+Q/gWexJ9JvJnEn7kr76mtFxaBZ7LvzO+JL3ZLzrv15z70f0pZCU7S0f7B57v00Cj+9fCskF8u/vb4u5x9rQWzXh9WWJ/3yjuPvH8xvyZewWVgFfLpi58fcy5eeF9RfE+Xd3avsqe8SzrJOHOO9P/iEGU9As4Eu2TdTy/FeT7+HX3QPyn7jbwXIP/frCfXx78B3hXqN6e3nuhpic9LpfNeK++3mkonPslO8F6X95+Zn7W/n353qfqT6H+2/APob47+cwR8k/DZ2nprVc7lpddqL+9rvpK/yjiwTv7j+JmYeCjKLSavQ+k3/iOHSN+Fv1HG5byryzu7vK/rqH98hu8T7aNyDtHI+Pty7j2V+zb+z+5/N4A/5/wB/zPNMzm3zTlu7hHzbn4X+BOXIu/oN5BrXXa0Dp6bM/6wnz7svQo5/JP1rfOr6G+y9I3oPDj+ZuTwHbquIv9f4cu7hN74z3uFjoXx8E3t3J3zmkL8rbx/rmz8WG+8aobPrJ9GxH+X3g6K37j08+RfNfee5JV+0lV+4kJ0My4nXkTiRDysfz2UfSu6Ez/gEvafeePS7HNznwxPdfb0NHvN+mUA/Q8G+4OJe9MLXdkX5n4q+8N+2hvFLhuDWY/MQNfawvuSQfpn7j8+1l7xfcPf6t/ue95h16CfSuwr5w1jC/uXPujYWXvT8k5Beh55dzVuHApP3uEXz71yTvt67p/pL37B8RPO+eZ89RcaRzYhhz/JbwvjQd4n/y8OjnIL8berdseyg0XhD725V1konfuWq+jzNfR/Bf9a9FXQbvwC4y94PP7+jb9bmXLarR//6uYbt3cB/LnfuZv95J58oPTN+G9m35r3pnmHWoV+F8e/Ou+l4H8dHf/ga0XOC81Pk9R/0H4vfpzx34wf1w+5r9LPO8IXe+zre+KL5Pw1/pfNsv8xvv4//jz0cYv24pfck3x6sZfZ5LI8+2X87SmdeCVzfG+Av+L95Tj0baOdE/POrnAe/pb84v75QvqunfOXnM/Kj3/6lVk/obsXPHmHf4D69djvWDDxOmrANyH7OXZ0R8aZxP+ivzJwFfyJ19Im/vp5/8ufI/4/iTeS+COJR7If+nJeF3+qrRIPF10PofsO/Tvrx4Xq/2p/NEH9+AdkfKlnXrwCf7k/ny8923w3kR0NkE48tX18z766uN/O/U/ue3L/86n270V31uU59zmb/RT9U+KXMjV+RdaLif+Uc8Q18tuRV9/CvN2dfI62/jvM+Jd9eoWMXyVQ7jsw9xd5R/khfg9LP8i76fgH4C9xPXqQ26H4X5T3qcbB/cC18d/L+xX1Em8tcRCak8tydPUAlyd+Ar5Hgx+S18LIz3x5Ov5GgIlfdHz8Y8ETwbPkb4a+unn3yb6G5Hzc/PE8OU8G897hkjL0GCe66q9v5t4ZfF/5vMf4nfyfN58/B16X+zB6WGc+2gr+3BNkvD489NBDE/DIrK/xe338d+V/go68x0y/r2P8Sf8/nLwTF+tAdjaffBJPs3388OD/kv1lXdMl90qZvzKvqbdUu9PxvSf73p397ZvzFP3vWvaR+EFn5JwC/vj338++8r4x7x275v6aXHNfmHOxcuy/YiHuX+IAZr+4IXad+AplJXhe4hsX7k87WK8MUi/vTF4F8x5lFfnuZHz8Et21pKepn/dxeReXODd5H7crvWV+PD3+xOT3AXkmLlAT9tLK+DU755fay3yS+aOF8eMI8jyeXHrAvzV+K4IzEpdJuS7oWUlOef+4MufY9Pv/87P+07oh7wcTx2sa+rN++wM9xfVUb/0n8cVqay/3nN+T3+fwrMh8qn7e62RdcUfhfiTv2KKfE/B7ceK3se/E2+kF/0vkWb8wb8S/Me+XE59mkH6c+DSJGzJEf6wLXhH/Rf3zDuX7g8V4IYn7eyW5JR5w4gDHz2YBunO/HP/Wq4wf46wL38u5hPKjle/ie198H0t/NykX/5pJiV+Q/SG9PQiOyntw9H+r3of4TZzf+DfNsT893TiwEB2foWME+8r5W1nuz9lT3t/l3d0o6bz/Kr47ib/yUHR9ze5nk0/8laZrv1biB+Z9HzpyjjiqwcZ0bad84u03Nq4mbmjiiOa8J+8O2pFH8f3Bsuw7rfMSJ/JX/CcO7jXk20s7d6h/ObtrnXUL+baQv868u3v2TdI53y1Pr1nn7wxfxq/H2Vf8h3+yjsr9/ihyu0u5Ieidx37qGU8agIu0c7hySwtxq7Kez/6zl/x70P0O+cWO6li/Ji7IPP3nR/QV40EcW1aC2b8X18uZBxIfoyH9n0zPOQ/Iecxgdn0kObQHE6d6sfHkc3r7hn3kfdBtvidOVO7RWsg/0Pg/Ivv3nDPFH1V7iVs8u+Cffiu6V5LfFPx0Ur6T/vBszil9n5n4+frNUHI5GZyU80n6yDuv/XO/ib472NMSfD9kPfM9e857wmvxn7hwLekr7wezX43/f+Jjxn85/sr5f4rLEp8Y311zj2J+T/yVm3N+jf6B7GF38miH/8QRLvo7DC/4U2R/2hZ//xovvvT9MnQsyHmHdm7D79jsS/Bzbxk+c46e9+Lob2vcKJ/3LOo3wX/ixyZu7JPWcYkfO1g6frrH4KMW/XbO+Tj6T835mXKL9PvF4IE5L0JH4gPk/xHyfwmJD/AEvFmfPQBOif+C+Xwg/VxMXjfkfSH+74m81G+c97fSM8l7g/QQ4+MKfP+Mn0PQk/iw52VfErtlL9knTs17a3Bd4rFnPE18ZrAuGH/66YXxJOe7M+jnFvwlrtfggn7n5b2N/ImFeGgdMu9JJx7SiYmfjd7fjBPxB4z/X032kXVf1oGJH1H8/4zu+k/+R+Nu81sr6T3Vr5f4kOrtXfB3iz53I6/Y597knPE8/0vwp/rF/ydYo//Fr+ZH80nxveAhiUOe9wPk/0sZftGd8Srj07rE3wUrmw8SB+wd/SLrvgvi51HYfx2O3yn6d/ZfiReXOHJ5P/O4+lVzX82eqmn3rcQHNt6Pj186Oj7M+2h23S1+rOSX90NFf+/4gcf/qBV6L1E+fp/5n4QP4i+s/Y6J28/+Ej8+ceNXwpv3C0/Tf+KPvARPTeV6me/Olt4591nar2E8qmyduYP0tuxv9/x/D/u/yXw7UDsv4/fKvMctK8G843nR/qUmeR+A38cSH1Q68TUTb7MufV2c9ynx52Zf8a+oiP+MS8XxapL8xLtM/IL15FuOXWfeHmO9kPcnOf9JvICH448dfvPuHd6cfyY+ceJGHh1/e/ljtN9Me7lHXp14QvFDoK/4kw2UniEd/8sR6I8fZvwvT2G/6bcVwcXGp8TtvzDvE8h3D/XfQccC5Y6EL+/VTzH+ni89Nf548R80Pk7zvZtyu8rfg12NzHkxvb9JfvG/i79d/O9+UX5r81/6Vfytr5ffhD0l3lLePyyi34nGjZ2M0xUTJzf6pY/cn9SD52703Uleo9F9l/Qp9DNMvXLqJf5GK/yfyj6zf7lGuarkv4x9HGL8bAsuiZ8huczIfKv/9k//x2cV6QXK5/+hEi8x/k3xP65YiH+2qfRy42Duh/Ne6Sr2kXmnCv5y35x3rInTnfesv+FnvXF+E/hyTnIV+I/yn2hnAfzV4C++n4v/cw3r0czbY9nFBfEvQM/D5qU3lGsfP0vj10jfN5Xuic7a7DNxmg5if4nPdB/7PjFxkqW/jx89u/sOnuyfjowfNHknLtn1+HmFPNuX4Q//Jyi3jv110T+f9P1w5avS06XsL/FpE6828evG5P9dco4unTgALeGtp70+6Ev8z5ybTVAu52Z14o8d/7u8D5LfMP4T5DM9+4Hol3zPy31X7BDM++Tm8OY95fPKJ35Z/r8u/1u3V+IEaq+xfrE5Op/IvTr6ct65o3qZf3Petsp91THk3ML6IXEPst49DZ6sh3/PO0/20CfxSNjDRdrPvLFE+/FDeh8s/h9D/qfhRunrjY+x59h33p+dk/9DZN9nS1dJ/CV2XSv/ywfPceQ73foh74YHsq+8B7wu75vJ9wv0Rs5V4yeR/ZT1Rt34f5qPLjXuDYifIf4T3ztxvfM/LYnvHT/vd8H9lE982qmF97ePmT8uar5xvS3k53/Ybkt8HvrMeiTrk7wfGUmeJ8HzlPR66TPp+3X20Fy7eb+xnfy8V1uPjiNyvpj3GOSaeGd5Z/gH+7mu8L4m7226s6u8I867rWb4+1f/7Ab2U2/HxLfGzy3qj5DupFziS71fiDOV+FJ1CvcNm+LjcvxNtR67Acy5c/TfOP9voX78C07I+WDOP3y/Qjr+W7UL55k/oDP/H5f3Cy/Rw+nG/7xfSPylxF1KHKa877iOPGeBiYefeGlnmZ87sqOjEk8v/vl5D6i9Tuh9m/zyfzMT4tebeSbjgP6feFfxo0gc+u19zzvvvO/edbeN24+/cYXC+mlT8+pcei2fdN6Xw5v3hvlfkF/iP0WuM3w/Tv9ejb9v5f+EjtXSif8Wv9mcIzxfBl/WHyXwPz+kudJliX+nvaHoS1zUFfBXY18H098W4GvK3Zx3X/DFL2sm/X1Gr8vAmurlffOSxEfJvkn9W9WfgN4l5vku0lnPJx5BzlMSryD7tUfpI+udR6TPQG/u1wbB87j+mPu2fuaz5uTcQDr/j7bAfJL/L5wvvRQ920onDufdzuN2y3oR/zvn/azxt23iTyi/Xc7f9Z+TtJ941Yez62J897wnbsN+8399/7C/z+C/jrxHJc4Y/U9T/wz1ZxjnRik/27yUe9+8s8r7qsvsPzKuxx++DfoT//VksEFhf5lzh0PyXq1w/rCCXd1SVoIrjZNrtJf/CUo85Pzf038TX5Jev4pfKjw34mOZ9ovzz0nG17wPybuQg+jxDuVzHlex4D+T+BMXZv9Kf98YXxJfLvHnks79/dbkU4y/k/Eq49Pj6k3V3o3qd6Gfd+W3970Bfd2X93/ar6lf5H7ieO0lnlzizBXjFebdeN6Rj8+6LvEzyvCFjv3haxH7yf0lPD3IM+f3s4yHV5DflWDitTU0X8TffR795/7qAPD2jDeJx4G+66TzLuwLMO/FBlkXDNfPX9d/N6efxNXPfXzifuf/j5bnfSj4uHL5f+EnzdcHkWv86n8A8z75X3gzvxyp/cSD+5S8WpJv4sVNcr5y5/9nfdjWeDfFOn8d+J365xg/8v+Wt2u/ET7y/8exi2L8yq/N//Fvjb9r/M8Woa+y7zfCdzX6sh+8QPoZ89W/+L/Z+cl89PWHZ13uq9l19oefoHtv+pmLv/yf7HvS+f/m1uTZkZzz/+GJXzes8L4k703yvqQb+nrHLynrwJxnk9cX1mX3KJfz4grGvy3AroX194j8f2/OZfD7F/neQv5vx29Lub/lT8x9Efp/zjlX4X3qr+i+NP7a6N9K/zvMOPK3/pf4nPGv+zJx76TjZ/d/ACT1NBV4nHXdedTOVfc/8FsUSoOplIZboTmkSaOQopKpQZQGmlCGpJ5ShlRCRShppFIhKlERkjSiiTQoUVIa6ZEm/db6Xa/3s1bXWt/rn73O55yzz57OtM8+5xq/b8n//w0/sABfqFuAdQ8uwCd3KcAjlZsnvVF6+Z4F2HH/AnzA95cOLcDZ2xbgTHAWeF+9AjywMvx1CrCv/N0PKsDuFQuwG/gJ/Peht9t2BVhn+wL8G/23af/XHQrwWfUH7ViA1eD5o7QAj8bvzP0KcPohBTgG3v/6fhT8g9C/H7pbHFCAZ1YtwC/R9+Q2Bdi4WgEegZ7y2t9xrwLsAc9l6g3D/3bqrSHfI5TbHr3j0HMD+sbhbyT6Fm9dgFOUH1y2AE8gn/NqFOAFvp8vfYv2u9H3A+CDYCX1K+HjV3AvsJn88hXgJ5cf0dcaHyvZz5novxg//0X/BdLHk8u+6p0qfbh0Q/Su2xlf2h9K3vtXKcDx8D2o/sHab0Y+y7T7A7hxqwI8WTtPkFNl9cvDPxreCtLD5P/j+2vSZ8FzI3oPJI8btd9O+XHab0EfVZRvJv9I9vm09E34a+f7hAYF2IVcp2i3HjpK4dtTvUny95Jezp6vqlWAPcHHlftI/guVCvBueA+UvwD+nug7jP3+Hj1LN9qnACtIHyf/HvIYsSt+4NsN/tnyr6Xvb9HTd48CHK78d9KV4H2NvldJn84uHy9fgPf5foP676u/FFwCPq9cA/X2RX896U3k0RyeRfTyC7or0G/3nQqwBr6ukO6m/nPkvi97nl+7AFtIj6uJ/90KcI72pmivjO+L0i/pI/b0Ij4eQv9c+P+Sfzy6jpZ/nvxbyXsK/UwFnwY/xOdC9bdFz/fav1r6T+P/d2Av+cPQNU39H/SDweSykH2/ia/tlX+DPQ4hn8wrnTNesLdzyX86fhaDvfF1nfqfG3+bm5dOBAdo7zT0ViSvl9Pv4b9T/S3wn4bPBtqptHsB1iKvM9H7k/pr9cfTzHNz5S/TTsbRGeipaLxtpf7p8nsqf0jNf9Nbwv6XkNtmdA6hn+70fg3YV/5/yb9Ee7ejb6z2pmmvH/mU4u8i1Qai7x/yuEG569Czb/0CPEV+C/BkcBR+L1JvMzv4DbxQ/UXG7+bommv8Lq/948ljHTw12Fll+EfR90byaaP9v/FTlx4j35nkE/meTy7ngYvMx98o30T998BZ6i8l/yfR/aPyg9Fdl/zvlN9c/V2sV1oqNxcfn9Df/sp/Kr3G+Hn03gV4j+8btD9J/mzfp6JvKv7eLICSttYF06QvVf4icvqCPqbST1X0/0jeGZ8/oofB6q0j99bwvU4Od6g/r1wBXkWuV4L99POn8btE/d7w7Uw+H8gfqb1P4G8n/zrj7yblqpHTb+kf+u/O4EO+H4nf1uwl88NA/I+irxvY35/VC/AxcuykXFP96zJyqQnPUuPTEuvHpWBH5Uag/x766qe949SvSH4dzGe74u9s6XHoHwhvGXLYXv0x9H8QOnvTX+aL+eRYRX9uqN4u4A7av938VFb9PvA9qv617ONhfLU1f3fH/ynscyO852o/9rlE/ZXkeq12tiGPzKcL1M98m/n1DemvwRL1P838Rl6nwD/c+PI7Pm6wHuzOLtdYH2Sc+pXeV+GrUuZb+P+xb/lCu1uk16J/MP3cLv91dHxIfsOVr6m9asazRfjbzD730t417PcK9vOR74f7fi49vKH+IHLpiP4rMl+T/4yi9XPW0xejrxX76KSdU7KOgr+M+XNM5ifp4+AbRX9l1ZsM7+XoXxZ5gNfQVyvlXobvMvL5wfqrHXnWtX+rDXZBb3Xyn0q+G7PPqvjv+vXop6FxYxJ975f5qkwB1gCfBPdA/3Hs5VLjwEfoO0L7va23+oBN4f8663/6/gz9M6wnTtG/9yS/U8mvmf6yPPtN+j6HPtuSey/2cD/8C3z/Xr096e9i7fYnj+/xc438D8ntPfiPY49d0b8SfRcbzy9hJ2vBC7S3u/S74Yf8zpVeTd/vK9cM/mfL/Ju+q/BbjnyGoH8CuR9Iv43wW4LeI+BtC8/16h/Cbq+g7yfIvyf+56GvIX2Wqr8Xeuerd7d2J2bdmf6j32Vd2MX39+Bfr789alzaUzvtybuh/ltbvdPgmYef09nvAnS0lJ4vv4/xrbb0YvKrTf6brHsWst9v5e+Bj3noewl9JdrP+u8k/a2Gfvqd+tlXvWL+PNr3Enx01H5//SHz7db4KCGfr9H1KT2eh4+t1M++vqb61dnboviLSgvwZuPKZP3nNuX7y98BXz3QNwM8wHrtdXjrk8N66WfZx4PS76l3H/4/xd8t+sdA40Br9B1jXVLd+PML/heTf0fzZ/wuHaTjf2mAvoHs9ibtjyC/o+n3GLCx/t0V/sPw/bB6D7LjJ7NeZn9V0Vcen320fwB8A4wzz2Zcld9Ju8+DW2vvAPinS8dPlnX00+oP139msre25FPL+FBPuw9rd394bs16kb57oftj6e/g702enehrOHrelT9KOvPX6dprLL8rvprEb5L9RNaB1k+xi9hJ7GNL9MAeK+P3JPk92G1XejiBHQ1G1zP6593SE9ln7PUZ9hW/Tfw5m8jzGvy8gu49yHeW8lPJp7L55GH2/hn+y2g3/qIp8ifiZ4j06fC18v3g+DfQu6/0ofAtR98a41n8jGezw9bK7+L7qPjLyOsr6Q+V/yh+SOlD6OPbAig5zPhynXRl9nNsqfro/5P9zGd/n5t/Yhexk9jHbvr7bfR6tfTQ+LHI/Qn16pD/ieR9M7pXobcLeyohn4rwLFJ/Bf1u0H7mlay7sh7L/HIf+X7p+yb12+N/RuSe9Qx+n9T++cbnl8ivMvoPJp8jjP9d8f8I/FfDm/3WanAQeIX6s81fa/GZ/Xb21/PI8zXtHEUOh5Df19qZgJ+/1R8u/xXp2uAuvh+Ov2PpdbT8P+nrDPJ71fjbzPqjFznEr9Nc+WbgSWD2y8uU+5B8vyTfsug9TP9bJj/74XLyy1mfbU2PrcE/0fcNebYhvyP1j8Hk94H+8J38scEr/zjjTjft7A2OZ08bzG91tfM7eY9lfzeRz43gbTlHgv8lcpsG3kLuj5u/9iCvLdrbGZ45yl0E33XkswGeu+HvSx5v4Ls6uTSF/z722NU42ZM8fmYHO+kXseun7VNekz8PrIaecuhYqf13yKczOrvCH/9RL9/fwd9j/CXd0fmg9eldYM7/XiHfk31vAR6k3mL8dUf/55lX6bkfPXfO+kA/qwBP/F8DpBtLH0b/B2qnP/yr2HMt8MrMZ9aHpxgnWoDPo+9A/LQh312l7yGf061rOsM3R3t/5xwo/or4a+RXIf8fSguwuXGipnHitZxTkn/2t1dqfzj8J7GbH9QrI//P9Cf1n9N+/NfxZ4/Cx3b4vV6770g3k78E/Dn+Dvb0XOQW/278pMq39T3nLzXZZ85fmqnfHDwJjL/sPf1pKTgevlPg/1W/uM/3n6Rbyv+P9d8v4I9gWfSPUv5I8+Y+GZ/J6xZ29zZ6Kjlvy/7kHnRdnHWi9ALy3cI+1hh3V4NZD5aw18lg9g2z2Mex2lsH30PaaYD+c+Mfyvm0dM63M95l/Mt4OB9/R5qvjwAbRv/x47CXnuzzH3Q/QE4HmX/qZ16Vzrz5Lnpr0P9j7PUBfC5hT7/D90/6GfqXSe+E3heVX4m+AaHPODqltABP0G5F/aK9dcYf8K5Bz1z0XsfuykrviZ5e7LU3WA0dw9A/gv2sMA8Ok8469QXwE3JrS46Han+B9uaD99LfrvrHnerHbxs/bvy3M8zH1+H3+fiZyOek0gKcEP+U+XKLdLH/Zbx0/DBd2EtL9C9Wb6usf/k/boN3kPSb6PzAuqqxesei6y323Yo+mys/Mv58cr5Wf+oHPgouU76b+kuU30c707K+w9dk/CQeYmv0j2ePTxXZ/bSMD+brlfTSkJ00yHkn+2qi/zzj++X0twL+T9FxJ72fRH/fk89ocBM5X8i+zkJXnYyrOZfGX2d2OVa5x9jXw/FvoD/xKqfja4D6441P/cEbwWWJV8n+En3z9J+z4T8b/5vo4bqcr8aPwh6nkkuFnB/Jv0x78cu8gN6D8f+yftUYPRukd1P/aPg6aj/z+tvo20z+b6P/69h91nfsoZfyjxufD2MHz2Z9r96txuPx6n+hv3wFZp90T/xxpQX4sf7xJT73wk8VsJx6nYv8NT+Rx53wrZP/NXrbkEe/nKskDoB99TU+LivaV2YfMRk/jfH9Z+Y3dDVF76vS66VPZkcHSJdXvx0668I/kf5/Jr/B4Ivoz7lbzttyHveKcq3xd2nmL3AzPlbH3y+dOJU50kPJa3TiotD3Fvlcyv66qdctfuv4Y6WHqP+neeZ3/N+F7srml7HknPieO0rwR06/Sec8u4P+exf7WIq+xA8tN658BF4f/tB1auLpwMuM13/JfydxU9ID4kdMvJPx7BT6nUS+nchnsvX3W+gZI/8k/McfH7/3BfQd//zU+F+tT3IemXntYXydib5HpA9V/3b9ahjYIX4G9tVUvz4Pvr/NH4kPuFX7Off5mHy/J/9G6DkKfCfnQeqvVn8t2Acdm7S/xnzUXvu3J54OPzvqF9uDM8HZ6cfs56MiP1A/+O/VHztk/1kUr7cD/fzp+w/K53z8LfbwHvrO1c6u9NeMXJqwh6OUW6v9W42fW+FnG/R9nP5ALmej56/sE7R/Pvw/GUc/B3MeWAn+HcFGme/gW2F+qYW/PtZXr6jfCt3NpeMPzfndGPLdFv0r6f80+p9In4cr/4b2b5GuSr7VwIvZ8ePwxR/0h/JZ98Y/VM7+9DrtPImPE9HxC3s9GL/V8Zv4hbbKny49W7mZ8O8Kb/xgH0TP+s+qyNe49QR7SLzoNfpveXrcCp+3wbd7kX9jiXrHoeenjM/xL2sv8T3baG91/P/amcD+9tVO9msXoT/+jQONa5/HjyN9j3KvWO9kP/uqdKMi/2f8njepF//ndezjZXo4xPgTf9sI/WWG/no5/uZq73Xr3cnG7+nksQO+Jmt/nnanSl+Cvvj3viXPc+THv5d4yMRHJl4y8Z9T5X+C706Rg/wO2v0I/fE7Hp/1i/Eo5+Nlis7HT8FXQ+mm0gvJ82j9uar8o6RzvtuX/AaBd5L3r+ST9dVzYNZXR+C/M33kHGiSdOL3dkbHn+AX+BzP/tPfjs28Tu814N+Jfb8o/wrlpyp3Grp+Qtej+lv2yW3MGx2iJ/LLOdcC65sf9fdOyq2QfxS5N6D3E8Dst3ZMXDB9lvH9cfT/gf5dzQ99s27DD7GXTARzfpDzhGu0f4H0aPVmZ57E75e+9zff3aH9Scbj/8Xt659z0HGecacN+5yIn4fVf0a5nK/nvD3n603JYyx6TlC/k/q19ccmpQW4WD+O33U9fqsaf/6mz9jDQPWyvlytP3+nvUeMO8vR9Tr8U+XvhJ6f1F+D3ofRvxP+P866S7sd0L+JvFZlX6fcUPZb7N8brHz8fG/L75z13h7/buez+NfgvQR9TYw3PfG1NX5mgm+y/8SHJh60vX79edZXxrsntfsYuroq92lpAT5Fv9mHvYy/PuzpanTeT44vxy7YV0d6iF8h+4ByObcFtwHnKZf9cPbHTeP/QX/WVeeCY7V7DP21kE7cW+LhLpQ+LOtO8GTtDVLvqaL9VfZb76NjamkBlgE3wL9efubTL4ybl+ecp/6/+S1XxPc98qcZAOoljpfeG9LPbPTkXkTuSeR+xJLE7bO73Beopf7Z6n2Oztx76az91833NeF7Rz+cIj2XPcwAc/7SO/EX+lsF/WiA9BnK1UncsH7bKf4o+llOrycq1yhxolk/G/82aW+l76fS/wHkflBpAb4pPQH+O7Q3mh03wl8neLNuyHrh16yT9PcH6OPurD+VO4b8nlf/Fe2dSZ9HKNfBvnMI+ztbenf9+ADj9wh6m0jfNfA3IeM3+VbPfS7tP2u8uNE6sar8b9WvQg+3R5+Z9/A1n/wXgUvJZw76tpgf67CTW+GvD//Z0gty3o+P29GX/fO5YGV4s49eRy/fgsdbv3+a+ZV9nw3v/uR9NX1sQ14VwE/ir8z+X38fDY4BbyCHu4xbF2vn7/j9jX85X22vvUcSFyJ/JDv6XbuX4Ws8+HDu/RTFI3+sfmvtDmE/2+OzMvkm/vMh3/uSY+JB428/Qv2cy1Rlv5NyP0i5xDXWMA70Me61osfEx3RA7zrpjeyi+PxlDHvPerNeaQHupP7f2t0r8ST654Ki+M+sZ+MHyP7/ZPjW6AfF8eGJi5xPj13Rewi+5+gfL2X9xr5ay8+9n4PR+ULWieST+4e5d3gFO8v9wyXGxcXgrfQzE50V9ctDci4N73T1d6P/+N9uRM8xiWMm99/RdSk+psP3s/zX6PEQ7SUe7id0X0T+X8P7i/r16GMH8nsaHR8kPo58B2o/cdKfJD4OPTnXKD7v+Iu8P0wcSlF8wp6+N875ivb30372X/GLzi+Ks/gYvk/BT8Dz4XnAuDUWvyPIoXrWD9LDis5Hm5Hfb9Z1H5cWYFf5R6LvYfbQEvwl/vecn9HHI4kzRMc8+p+WeIrc06KPHdETv3n86I+h61lwrXG7Vs5H0PFX/Nvs4i75d2inJzr6Gd9zv6atfnYb+Y42vmUfuhJciJ+F+uu8xPWS/07ob0V+T+R8Q3qh8WmyfnNh1ino+5kcM093BM8F55vX59Jvtdz/087c+F+ke8pvnzhB+TkfPd/3A4vOS9vAn/tgraUHoq8/OJu+22QfSb5f02/LyMH48DD82+J7sHp3Fd2/2Gx83Up6vfLxr8VPOVa9+Nu/gS9+vzPVn6l+7p/lvDzn5zP0y5yfT/R9XeLhi+b3w/DTEPxZfp3Ef6G/j/GlIXltD3877fdjx0caz+J/qFZagGu0f6P5cCj83+gvfykff+1k8mmedb/6N5PXOu0nXnkDub1qnzMRnb2NXy2tT3Le8hh55v7eevgTp91Y/rXy1+oX94JZp+V8MeeJOV98lXybo7ep/Jwz5nxxlfEl/Xu19JfqJ76+n/KRQ9vcNyX3r+IX1Y8TX1h8P+3Zontqx9PHduaJo3I+lngh+m+mXM5Lcj6S+MRR0q+xh/k55xWfer91853KnYaPgeQ3C55ryb23+kfA96Jxqp38E+Svou8vwW70kzjxCvR/a+IVpN9ER8v4E/XvA6SvTzwNOU4A9ybn6fL3N968CfZHx57Kx2+xQvncX8v8s5Q9Zv2W+1Vjcz+jVDvZt5u/Z8OTeNnEzyae9lz8b42vEvAP+qwv/wz+msyjvci7EfmO0G4z9jhFuTLoeyj3SJXP+coZ7DX7mh/xuR+5ZH+zi/Lbor9K7lslPgZ9PY3bD7KbQfL742cyfHXh/106+/PP2G326dmfr8+57P9xz/ki9DczDgwouo9yKtgj+KRXaX+I9Pzcd9O/RmZ/A1997ZbX3ojcr0Nvy9IC/BX/u8E3gd3lvsA24Ej6uSr80ONQ40UHesx7B3kHIX7v/olLY885931H+jftDNNfNpHvSDDjz5HmlSuNHzOUT5zkJvZcNvdOjEP9s39TP/7n3BPL/bDvM55a97ybe0rku9h649H4k7ST88256NoHvnl570N+LXwkXjjngAuyP4I355mdyXmI9i9lf3n/YmDOifF3E3soJY+r5Z+RczT6vZoec86S+O3G9JFznrPwcUXsQ/lt9fctxoGrpG/Rr7Iuz/nt4/DsWFqA1cG8D9Aq63H4qudelnI/5f6p+Xxk/MXSV+ofy8i7ivpn8j9lnKkD3zPkOj/+mdzLRn/el3m7AP6337vT+q1s4jXU30Z6g3IH0fNd6Ly3KD5uc1F83CP4P5s9npV7jOy5Tfzw9POqejfr343J/xLlGmmvPv5PYk/V4E3cSeJRJhWtJ7LO+CZxK/BfbH59O+eA0m/hd4D+NjL3NYruadUruh93rPn1Ku1U1S8uAdfhL3HR68z/uUdVfH+qs/HoUu2UJa+8S1Eu8xZ6zkNf4gv7lRZg3cTdoPMm9pXzxpxDFsf5lxrXa4EfWGckHjj70uxT5/In1COvnH/k3ON66QPQkf37fvhdB8/V6md9Hf9OJ9+zvk78f+L9438awf7qks/32TdlXmffW+N/NfxlyG2j+vtkP4W+r/DfNvcz7S8bqXeGcTb7g4nK59w85+kzE29Kr7m/sUU680tv/eUZ+vsPe8z5fi/jwwnwtcbnSvSXKp97Yg3k5z5735zbofMR4+gM7Y8k34lZz5UWYCv5ZeGrlPUhvt/U/tXkmnF9YdqH7wP48y5K3knJ+er0xGPkHDD3XHM/a6d/0/sS/d9MP58W2WX8JrHPL+lrEL4GgjnfyflH4gsSb5Dzjx/YT+5/DdV+L/THvs9R/3P1H2V/dfCbfdsLuddPHn2MB2usy5dp5zH87Uy/7djhB/Iflz9Mv07cX528E5P5F70Dsh/Ed+53jiP3exKna5zKuzGz2V/5+JXhq6/9nomjkx6k3jZ5/4P84v8ZLn0SOXRlV92lD8v7LuhbSX5vmQfGoeOrxD+RX95nmZP7dPj/XP3EVzbc/d/167GbA8G8C1ONnC9Gz4asT7TfQD+oVVqAicOM3zPxr29r95ycpyX+XP6j8F+VdbP0HPnn6LdlzfN7G6d31r+ewM8uNf7N367y7yfvp+nxUXoYlvWL8fdK8ig+TzqVPKv6Pph9r0bvD9bvl4Bvg8/Dn3GwXO5r0NMhGd/J48r4FaUn6T9TlK8Bz3Tj5+15n6+0AKdl3EVXs9zvw///JYd71B+ZOGfpd3K/DT0ZH3/QDzM+xp88Sj/Nexw5n0lc/7vwHAOWqJ/1ZdaVt+gPsxK/ofwT0tXxVzP3u4yPGdeX512L3OOznz0Rv7m/H/9Bbe3WyzpGuYXSq9G3yTi5SnpLzunZxS+RV86P6O+5vGco/yvlz6TvN4r6e8aBivpX7k0nviX3p8sqn/sAz8QOlevOPl6zn867RQulX0LP4ewq70il/+1HvlfgN/u/KvAnHnhX9pjzj92kEwc/SL8dip7ce9hB/grtdUFPzm8vj7+TXeWe/QFF96cXFUBJX/Bd64DEpybeKPFHO5LnG+Sbez0drd/yjmXu9xzk++PKN5AeRz5PGh8Sr7go63z5W4xHixJfT37l4W9nPMn+I/d5cn/nPuvp8WDijq5lX8ezy5yrFp+3lihfUbt5Ty3xAjl/OyxxTUXvkzSEfw397pH5K/Em5PUOOJF8877Ay/i5yjzdkt5yf7KC8Tf3UXJP5Xzljs59GzD7+LyfuRd64j8OXfFHfar/vSz/S/PHsdE/vmbJfy73tsk340fGjYwjuX93auJHcy5Dvs/GPyq9XH7eYboMf8XvzeUduqPgP8N4+zc6ZoK7o/st6c7xa+eefd4FQu8NiUvRbt7fXK79L7SX+Pe99M9/0PMF+s5jz3XJKfdvcu8m93C+jn8l9+LBMmDi1Nqzi/Xs7gewCv6u0z9yXvYjerrG31lagC+BmU/GZP9tPnkEfAgcxb5rkG8PMPu8rKOPyP16dpX4x7wfMV/+P/TdQ/449I2RPkf9htrPudND+vVfyk2X/j3+58Q3oqeJ+W6M9h+wPoqf+jN8x19dz3o274Tsk7iV3BPW/xNvlfiry5XLvYhXch5UWoDvs4/i84DYz3cZP+GJXyp+qvinNmYdkvv27PFe6ffwUfzuYTP8TyWvQfBlnns285/5qDr+i++P17ceit/noOwf1M97xoOyL0dP4u/yHkDeBxiLzzn6V13fX49/Kfft2d8G80nu569HXxPyjF1fgI7YdRvtL9Afv8fP/hl3tZ97BblPkPsGT5LXVsaPb7JfBmurv4b91cLH/ezvVPaQeyvfab+b9gfm/nXR+2J5b2xL7h8aj+/GV96XWgpfFfQUr3/yfsxo/NwbPzZ9ttD+APg/jn8seog/Xv+5Fv6J+HtAfscy/6Yv72Dl/av32f/BYN7lmi3/NvaXfegk7WQ/2sx4EP/vt1kfkv9n9LsS7J9zMvJZX1qAiT9KnPQK9jGLPG/3Pe90jFR+AzrOVz7vcuyY+DR8zQDXxp+Iv37s54Ocu+mPeyd+Gb7T8g6edjrKr6beTHrI+WbOOxM3mHjBpfQ3Ju+Dxb5zX0t7eV8m572535z3A7bDd97FOR/Mewa55xh/HvJLngDj3xtufpppnzMl94Dhq0/u16NvlPXZH/Dfwd+Zd5O+9L0FOW02vkxMHC84UTu10Rt9fybdknzG6B/3oS9xAonnGh3/Mljs34488s7CqiL73lZ/KU/OW9Cb8eF79w3zrsK75vsm6ud8cw65dJHuj7+b2UUP9StZbzdVf0oBlCxPXLp07v/F796evuOPvyP399HTS/mNWafDn/Xh/vRyTtaT5JP4lj/IoXj/9Zb0fvQzLv56+L/P+6LaPVh7W6v/ovXSrnkPI/sZ6WvYX8a3C/GzO/4OM25cz4BPzH4+7VlvPWic2xtcIn8342fiIRIfUS9xlMaDG8Bu2umTc9HSAnxIu09Zb7xEft/YN0S+xyc+0fh3Lnw18b0PO11NftXV757zS3rIe2YnsIvLtT8Kv/vKH4G/Htr/TPuLpZvav25M/KX8aeTxrnZzP2O0cfK+vJ+D3jfpqSq5/Sb/O/x9C55qfbCPcr3wk/sWLfSHnDMfg65r2UMT5fYh37/1qwvhz336p9TLvY6cY6ednF83lu6D32PxMRl9xfGBiQs8SP3i9/svINe849899+cS742uV5WvSD+HS+cece4Pl6Hf8Zn/tTeI/dQ2Xg7VT4eD2+eeHXusTD7HSD+Ye8BZd+I/54EZH3P/cEDiVXKvSfu/hR/z7oHs7v3Ez5Jn4iPWss/69BF/X/yA1c2X8Qe+l/tY6GqH7vjHEk/QJX7Jovs3w/IuIrvNO/eJx+gLb+67nALf57kfJD/v0XUnh5/A3EfJ/ZTcVzkh8Zv0l/9LyPv38Z9n3Rk/Wd4RiH/sUPgSt5w45sQvTzL/PGgdm/PWm+Mn1J96Szcwvn+HnpzPFcdhT4f/+rxfCu8u5NqEfMpr9/ysv9BTE/59zWefWBefp9xu8mvYH/ygnw0wHszd99/05P29/J9D4sS75f3Z3J8ues85frv48X4jh/jv9kLfO+BSdP4XnWvit2VH5bU7mH1XLPJv5nxjgvS2eXcKXB27zPmH8evd0gJcz5720O70ov1z9tMr2UcX+sz7kj2M5z/BvyLxD/K3s375gzwbGy9zvvBE0flCsX9tZPb7iY+Eb++8R1H03nbxe3GL4jeg/920X498Ex/7VPbF6Epc9KfavZH+5rDfkcqvI78X875l4pvwP1K6jv73FLxD8fd67sXRb87Lco6Wc7P8z8IW+PKu12LjV973WuF74imzz/on76/E75b7OInr1X78fp+hrzh+NO9sJJ56CXvYjnyyf8+9zuzjs3/Pedqe2s852zL2NUz5p8kp/zeU+9vlEvcv3Vg/25z3xtjLXfTxB/yj8Z/3NfKuxnPozPsaM8wXM8Ht5Cd+5KD4J6WfMI58hP8NReuLjdJ5Ty9+97xjWvx+ad5LTnzI84nXRt+AzGvBl/PrxO/5fmLmd+VXSU8rike6Ez2J3xho3GirX+V987yDd7jxfYJ1/xD2mP3AV+SVeOvi85xfjD+Vc59V+jTy3EV/Slxn4j0Tn9FA++fp54lfaE+/FdHdhl7OAEuyX839LXLZyvcV5PtUkf8v7zq+Ct5gfRF/ad7Vzzz9hfEj8ffx98eP/hp5xG+4W8YJ+K9WPv0m//Nzi/qnWFcd5XsH7MV/9Zf56W/wMXK+l/5zXjbA95yn5fys+P9Xsl/JPiXv1eb/NfJ/G/l/jeJ38fO/QbvT7xD05v8y4ocbjv9O8I9J/ETu5yi/2XyReSTzxyx4yrOnKfYJNfWz+Gva5v1bdhC/fwX8x38937oifuz4r/P/I9lP7F20f7qL3DbR69bkt5T+sr47XbpH4probzC+EsdyB3tLHEveM8l7knmnflzON7Sfe2ubsr7OfEO+d8dfArbK+yvozjy12XiwF/0tYN/l4/8g//W5B5z1YOZv6f8kPtf8GT/uA4lPThy3+SzjfvH/yw0t2m9kPxL/X+5Pxv+be5Tvks+ViePM/ZGi95HiN0y8aN6XvN/40Ig9HAneLD/32duzvxGxN3aS+ePmxN+iL/8f1EO5s4yrB+Mz967z/kbiwxL3cDf7SlzEWP1+D3iL97/16Okr3/OOad4vzft0eS9xLbp3xH8v/bsOmHVIOfmVSwsw7xvlvaNzcg9HfvH81ivnH/Dl3dy8o5v3c7+BL+uv6vj8Gx85j885/aKi8/rZ7Osc80fefcj/OW5mDy9Z9/TV/05D557muyvoYZL5/XT5XbST99HyXlrm+Y7sMe/wdJI+S34z66NO6LhFeqecT7CP47SbON77cz9YvfyvYt7NmUU/2Vd1T3xn3oUouj+U+8tZD2b9t4N2Z9n3dgCvUH6B/cyF6K6gXvm876M/n0h+o+Knzj7beJ1xPOP23vR/u/L5P7ac/57MTi/F/2fGqVb0l/fXass/G759pC/O/GPdvTD3DPP+Qt4zgjfvR+Q8K+dXX5pPE1/8Te7j4T/7l+xXsn/Je/xr1W9Pzu3A/G/dS8bj57WX9xdaJz616P5i7jPm/uIz+X+L0gJ8wzhYX34Z9vif6C/x95EP+vLOT/H7PnfnnC1xBVkHyM/7ycXnCyvo7968pxK/vXJ/kv+lxs/8D9rl0vl/of30jy7y60rn/4kSH5a4sO3Ze/Z/iftOvHfiwXPfrGXiNbN+Vf7d+Nvy3lfe6YX3evA48s+76cdI552LFuzhM/kryS3z78rMmxm/5ZfKXyQ//6+W/1vL+9h5VzT/r5r3RX/N+Q97+xDMu7RZX6+k78Rv5H9c8v8tt9FH3qUbJp341nH5/0r9pzk8T8DzpHqJo7osfhj5vdTvk//tIOcu6PwAfROyzlXvbfAe5aeAV5pPsm7pYT69Eoz+apLzR+aP6fIPwndbsIL5YbT8SvrT3rknRW//+x+Fonf08v8ad2l3hfk89rY0/iny3D5xfJmftd8TvJldPSB/P/aW/38swy5ezn0b82X8URdIV0u8mfEkcYz537LEM7Yh/9wHbsaeH5HeiVxyX6qJ8Wy8+n20+1/6utt4XNX4+Db5JJ7pHek3E0+v/VuKxpmcX75sfiqO740/4nDpi/WLzFM5X78MPdnH513YY+F/xXyY+2EPZZ5Exwf2o3nvMu8P1abPWezle3ycwA5yH204u32NXXwe/xD68v9dVY17xf7Lf9Rrrv+sgXc5/eZduLwTtxFcLH8WPIlPGqJ/L5Gf9xMui9+7FN/yryqAkgngSnBrdLYzLuT8OPe/OpBPzuuHk9MO6Ih/sil9Jc61+L3I89nzmWDeOch8s6Nxbz96vlL9htq/TLtl4Ruh/xyaeGP2eL9xJXFsVeQX288l0rGj7saDvJt7QmkBjsffNnn3htx3pcdp8ivRX+KqE2ed+OqF7L8iO2+RuIzc/9U/c+8o95By/6iEPF5mx73J69XcT0j8ZPwiueek/v15n0W7Ob+pFP940f8ztyLv63M/AH9D9YP8P/MN8kuNN/l/yz3U/yjxq6UFWPz/0Hl/t/j/kC+y3rkg7/CRSy3pvFM/G/9DEt8Zv479fPz4uU+R+xW36y8l6H1WOuvhB7M+RV/8K/kfwvhZ4l/ZHr2V4I+fJ+8X5F2Zb+Tn3Yo/yD/vAb4S/7DyDcjjcvLMO3/LpNMPftSvnlHvF3baVH4jdB+dd93J4+fEF5DvArDYv/lzaQHm3bBr4OmTeDl2Gf9o/KWp//8AkbwguXicdd159NfD9wfwQqWQIpSlPpWkooVkl2QJXwklqZQU0SZbWbNkCyWUorJlJ7JlKQqFFiQhSd/Kmm8osi+/c37vx9M5vc7x/ueeec3MnbvNne3OvB/duNz///ruWoL3bVWCW+9egvc3LMHlTUpwtx1KsIn8sduVYKtGJfhD7RL8pXEJ/rlzCdaR//cuJfjXbiW4tFoJrqteghO1X0P9x+GrCc8T0i82K8GhNUtwCHi8/Lu1cxd8w7R/hu+3NS3BQ7ctwQ/wt2+DEtxS/pIaJfib78dUKsE75N+ErvvI462tS/BN6Ue2wZf6Zdq5X37HqiV4OXmcID0d/hqbleA36J+jvWn4v4PculUuweOU+6h5CQ4m317a/4aeb4J/SJUSHEHPX0tPU26e+nPBLr6/An9//J2n3TPx9yJ4W60SHANe4vsi/N64RQkuI49L0bnbHiVYTXv1Y1/02ZR93E/ek9RfiI926ldQ/3Pt1qf/U7Xfmf0e5/v7dUtwZ/n1yPud+iX4oXY/wf9V7ON98AP5S+XvSz77gfuAB5P/Kfgdh79XtXMgPOfCO15+d+UPkN9X/ih8jqhYgmtalGAL/eEz/M1Vrp/2Gys/iNwOlL5eev1OJThc/Tb6WXP1X0PvPHJ8Xr3a6L0QfRew09j12eRzFPveTL9qJ/0IfX3CbpbXK8EvtbMZ/t/Szhb0tYI9TdXO+eg5WXuXKL8T+SxD3xhyXbFlCf4J3xDtjSC386Uf0X6/8iXYCL7H+dOrpdeS34d1SrAX+JX6ZZuWYEewL7hGew+n35LHOvb4LP7ma2+9cnWka/AP/fmFj8lhKXgHfP+rUIKTpTfOOID/Tur/zC+NZAd14D+SfU1gF6Pkl8k/kH+t5HtL9v8U+dyF32rof5JcztKf31dvFbrroucw9M5X/2d0PwbP7uo3I+9d1X9Q++XZwyL9/TJyHaf9Feq3Lsg/+oj8x7PL8b7voj/sKn8tPM/itzZ+fpI+BX09wBklUK4m+rqzn/boOlr9/fi3UWUl+JHvu7LvyfI/iX8Fuyl3Av3uhd6n4d8bH9+h/y/+9UXy624c+CnyhG+E8mdqvyv6d8FXb+U60dN69nGF/jQKPdPQsTn6h/Ibh2gvfqpqxlHt3Rp9a2ec9GPwHwX/CPx9If8a/X0Geg+Gfy79TFOvPHqnspOG8ofG3+HrcPOjY9HXgr3OI/+nfd8Tvkv1nznkdLP6P+BjJH94L3r/RP/D0q9knIj81ZsP/1Xq140/RudW6J/O/i/Fx2llJfgSOjcnv+XqDd9eefVfNF5My/iB37HyN9XfKoE38ecVyPVgcmkDPkHfm2t/Dbr74vNX8v9B+mb9b1LmWeAu5NSJ/e6Nzn3AXeVXx29fcl+r/q/keLByC/HfBX3VyP++HUtwJ/lfq9cN/5lvHYyfo6Vvlb9woxLM+HFRYfxYBd8M6RPxfZX+UZFfrgRWBrcht23YVVv2cDj5rYZvOPnN5r/7qzeNPWVed2zGK3CC9ieZL44k5xvIpxL9NmUXL0hfGDsgvyvQexY5Hx882n/T+HQ6Oioqt179OWXoB7eVX197A/jPq3xvzd/1h//f5Par+s+z/xfBifjpqlwf9T4h18r4b6H+puTTTPvPKD9I+7PVG5b5svnILOmj9Je5GQ/h6UifY/FzG/gi++pIPz3Js4N6lYyXi9HXkn/I+NQD3srqT1HvJHrfjz12VW4f/Gyt3JfoHoy/T9D1JPllPJwjvyl+229egnUyfstvS94N8FWVPj8l/ytLoNwssA+Y+XZ/fuWOrKusH6bh40DwMvKYjf49tN9Q/W8yvkvP137mx++gM/PkzI+Xy38O/YfQ9xfauYd9ZP6zC/rekl+Hv90JzDwo85+/zZvHqj+CPmvRzwj+/QP5feApZ7wbxz4yblaR/gP9LeBvBq4Af9J+1kOPaq8FPrM+2iPzMvnF9VFb84k96GeK/JPY3yLj8zB8tdRulaxvybMF+o9S/wn67AX/YvU2Iodm7LAG/zKfXB/VP57W/hzt30LfGVdmks/Rxo3bfD+Pvq/RXvxZ/Nvl5BH/doDx/3zpA6UPIq+r1b8GnAnPEnxONV781zhys/R/5G9N/z+TRw18HkN+PxivP/H9YX7gXvx/rv8+mv4M79noizn9Cn4df63+yelvxt3nwZ74eJq8z5feXP7L2utB7xk/vy74mfj/+P030dsWf3sh8FH8zYf3c/T345cy75wonfnnx/TRkZ1dwM5uV78u+5iNzy3ptwN8W/rehf1sj46J5Hwn+seDa9hl5nPHGpcH4Pd7dLyddTS8g8Gjsn8FfyX0naV/VZSelP0D+nrHOm0f/Ncmv03Y9yr20x3/leC/Qrsfou9d9M2LPyD/Mv64vfqbxr/Qd3OwPPksABdrf3d8PY/uetpvyh+P0P5H2u+N3gn4HUkP65V/Bf6F0nfi47TsH6GvPboHmidN1c568llt/vc/9PVkf/WU65X1Nvw/Kn8U/PtL7wsuYD+j2d8Ycrk7653M/6WX4PdG/F5Aj9tnf9T8rwM6Bku3Rs/56r+u3Quyf8gOK+D/Wf7nR98n4X9bfGyqvazT7kb/nvBm3pJ5zFXqrWF/E/ih19RvL/9e9tgSvA/8nh3dyN/eAN4M1tTe+/zHW/BWxN8KsHL2f4wTa9jJ0eR7Cr10ov/e4F/4naH+YPJZA09f7d2FjivAw/Hfgvzql5XgV/SX/Z16+J9Gn1eiN/19b3jmKT9H/Yba/V3/GIS+HdH3ODrOpJf4i81iD76/K31Q9O57+tWZ4I70lnVo1p/10DeL/7pa+enovR//lc0nLjAOPJB5ofybfH9K+5nH14Pvcfp+DJyq/+W8oTz7nUef2YdfgL7nlO/Crqrjoxd4hvnZ6WBfsC58M/AzRTs90V+FfTzNnnqitw1/1DT7c+oPQc8QfF6r/1xCnr/JP8Z43lz9Sup3zT6y9cJT6Mi+Y/YhO7OP7D9uQb5VwUPpY7Z23zaf+A2/8f8bZ/9O+8eT99fwX618K/b7Ob4WSA/C30j1t0y/jH8nr+r0Ui3jMvzbZvxXvzp5TCycj0wljyrk9pT0Iu0PJ5+99PN2ZSX4gHbKs9/p5gEbSd9J3tvD+5Ly34P747c5edaXbs8fZf68vf75SuQq/xn6+5/v52V/xzpprHQv/J4V/6D8Iun96HV7dph5b1P6w065F9n13dLZx3sL/grSH8O/m/R8/mEueDm5fCv/Z3h7Zd4HbqJ/v0L+4/TDmdL1ySfz7cy/X9d/XmYfWU9m3Zr91axn4z9uLPiR2Ncj5kUPgR3JaSPlHoDvVnr9xnj1HvrulP50kxLcXfpr+dvyC9uBO2T81v4O8P6qfA3ymsM+15dAuSHomCh9Rezd/Kgyetf5vhD/18F/VfahwO21d5n8nF8ebPx6Cp427PM08BbwL/20Mfv4G1/b6aeX028b7b0AbqZczgcnmR82V68ZOFL5i+jlQnA5OUxi/ydk3Yz+O/HTUvtz5a+Gbxn/My/jqPazTmgFZp0wmL2eC54NjsX/XvEfjTfkayR6ztBe9xIo9yb4Nv1nXftczkcK69v65hudld8HP+9kHsZvdcDf3dKN2E9X+1GvorupfpDzkDv12wH0Wlv6T/gboe9GMPtGD8kfRV+1cv5b2H9eV1aCbfGVc7vWOb9G90z1r2NPl2hnb9+rksd78A+TPlv5p5Q7Jnqmv6HGvb/4/T/Bc9H/E/39DF7HDx0TPw5vW7Cb9pqgvyZ7uQDeoeDDOaehr4H47pr5T/btpTvD/2LO+fF/MX2NNM+6Cawd/fErd4Bbam9n8m6v39zs+13SFfiHseyrb/bDjfcr8bdH5tf4iV+chf6H8FsXfASsp9zO+Mv+6Eh8raS/Y/WP8btuyNcv6N+VP75New2lMz5uw65rkttjGf/Uf9m4fQ5+rst4In0Rf7uO37tQO9mfP6ysBLdCfzd2Uk37M9HbKPv69PMf7Wd/ZzzYULns7xT3q7OPvVB+zjVznvkue6hEfh3Z62iwEn1Vwsc32l0NtpF/D7pvMz8ZAy5A9xnayzqqCvoeZe8V8b+C/Bcrt1z6O/UXkevv2ltBPwPV787+yjlHf9h4djr6O9FPR+0fI30a+QyLf4fvD+nX4v/NF3pod4H0/eTaR/mN1K+m3N7wZ//8W/Wyjz5O+exb/AlfM+k62Uezv5BzxXbKJX6lynYb0ldZ+p3sF/HLFfjfzA9HoW+A8nuC95Jfm8Q/sdv+2su8vDL9rMh5Db5WSl8b/cGTeKfEPz1Jvheyh5xvvAL/Uvp6WfsZH3san7JOel3+ZOWnkNMf+JuLnvngPPBh5TLvy3wv88Gcr0+MvWd9jZ+v0J/5QOYHmS9sKv8B/rAzeD7/uWP8Hzo6ZR8cPwO1dyj5vO17P+uFWtnPkT4t+8LmjwvQH/1H71knRP9l6m+m/k/yp6m/Ej/ZXy76nx/1z1PZ+e/ke4NyQypuSP9MfI3O+T57a6Wdhjn/Nv+YxV5Wpz/m3B996/SPH7TbFB2T5b+JjvO0m32sPvD9qN4vYB36vwC/g9D1vXGpFTyng1/An/2XxHckvvB0fnWyhdKlvjfR/jH8/bb0dJn83eT3468/05+/QH8r+SeST2dwIT/zPLqeTdxA/Ih2eqF3Gb3cmbgd6dPJoYn+1gZfUxLnKH9kYV2UdVLW4cX1XNZ5z+Ozg/6zDl9XlpVgxu9G0okvyv5e4ov2ZO8fWj/dDTbV3u3kcip6Z6OnAfuIP4ifODzjJfrKF9brWb8fmvk7/fZA36vs5OT4f/2+exbK0tdkHgPvgYVznPSvzfXPleiqKx3/kfi2ZYU4t6znzyGvZ9B3eeIyyOPy9HfpZ7Ju0v73xstn2M2h7Cvj5da+t4Z3Ajs7Cb4F7Gkiep6UPgf9N0jPB/9U7hv2PYe9zAbLyR+l/qn0/xm7G06uG6H/K/sdbyT+jTxG0n/x/Hk/6b7yf2RPd2jnLunM7zKuVvwX/9qL/97Y+PoUO7gG/bew/4z/q+Atx/+tU//JxAnRc+Ls5iVuj1zu0M6R8OyMnnb00UC6e/yj+fB3vi/XX06Cv5N1wQ3Z39XeDeifJX2/cpdopzv6P8Lfkm03xJv4su3Y/RR23QN/NyW+kz3Vov920i+h92rt53zke/7qZfX30z8Tn/yp9rKff4vxva75493g2+h8r3DecaN2n0n/Re9W2pnAjv9LPtnfzrr2RHaY/e3EQyVOqmohXmppYX6xI7rHqn+R+peBj/g+N+d/WS8mPgee69HfvKwEE0/wu/Kj2cfV+veR6E9cQUv1y9BbD6yv/ZWZT5HLUOV3h+cw+s+84/jMu+SPpb+W0pPJf3T2g7J/zR9tCr6Y9V7wqv+S9GDwOfQ9xF9uplztMvnxX/Sfc7PB7Guc9rvRz2Tynk4OXdB/ZwmU605vc6S3YB/L2PXIxEWR92PkvJ/5U/gfoPxo7ee86AR85dzoQ+nEK+Xco49+lvilVvhpmXFe/aPpZxPp+KX4qfinXvrTtfCtZ4dzEr9Grp/jbzj4nfxWxsP4xfjJ+Mcx9HMEupuVleDr5PE5+uahI3HfM9DXjj03UG8mfK3gTxzfFPg2p+/4j7bk3zrrTvI/Tv0r8dsfnunaGcHen0HXC8pn/yD7CeP5s03JdaFx5FV8/MIf36VcTXSMhv8l7Xdhh13B05Rbi9/j4P+SvBqy7+qx56xf5Femz43Zz2bm5YkLGQ+eqJ1ryW8hPf4F/2r1rob3CvRl/tJF/snhl74OJZ+dyK8yudWWXp95TOIL+PEmYNbJreWfha6lvie+dDffK6G/Tu4X5T4Fu3uBXZbhYzo8Pc0vRtNPzn2m5vwo51Xw/orvN9hXzrcGqpdzrpxvPU6/G6HnWvxl/789uu4nlzci55yDGp9+hucX8A30tC4rwSrwf8f+b8/5Nr86Bt7/wXsY+hN/n7izYjzao+zrXu1cpN5C8GV496bPrui6ifz+Mu/aWb9rADanv2El8E8ceeKI5pHjInJ5EMw+UuKzG5HfOey8cc4R0JP1VtZfHxXWX7O0u1B+O/BI+beyj1rZBzO/3Ap/q/DzeeafWa/rP9eja5X8ltKb5P6X8jlXbYzu2vLL8yfbJH5NepD2/0t/Fejv5pwvwndB7jtofwa720L9i/XX7dj1SvX6a+84/ifxU8X4iUbqnwdfZ/WXJJ6Z/HI+2pz8cj46OnGz2s/6YAftX6v8XvA/QS9N4K+P32Hqr1U/+/NT2N+F8CWObB94qvDPFyd+EL5mie/B/wVlJfgK+dWEfy/95Uvy3V96iXL36r9fZf9d+qOc//EfDdh3+v1A+M/R7rDoE58/4D/nejnPWwdfR/TnfkRdeKfAM0869+G2oqfckzte+8V45ezzbSP/IOlN0FUj+2qZfxp/7zXPyf3KA7XzAv3n/mjml6vZf/Y1s5+Z/c4lsQP0tYN3B+kTtN88/hQ8BZ6z5K9BX+L7V0snvv8B9L2Gv/baaY/+0/nX+b4Pkj4f/kNzbgvfm+rtj/4P+fMbykrwGXCW8j/rv2dnPyjxysaXlvjdgT7myH9B+62zPymdfdwpud9ifTMQ/ffwJ0vg+5a/KoP3EHY6GH2Jb2rAnr/CX9/E19DXY+jIvbboL+VTP/gSHzXI+J77FXOMR7lfcaHyf8KTeXbWF0uVr0V/mXe8o73EXyXuqrx04q+ez/fgRUfOeTtpvy5+O8v/Tvv3G+9P0C8PIc931duLf1mW87yM7+jNvefsSxbvP9dRL/ebs59bk3yK41/2I2vlPpT2zlXuTP4p+3VL2d8y8JPc91X/AOPfQcr3ZCd92WfizPrl/ig5/TfxhfzvGdqvif7Vhfll5pW16TPzy4HmbbkfsC88p9LfD/I7an+p8fZb8sn+TtYriScaLv8d/WMh+C44N/YAb84ns3+U88lN4n9zrmZ8yPl+I/b9kXnqauWy/m/oe85Fc88292v3JK9qiRtIPAT9JK4m41/ip1/PfqL9kh5gL/q4lDwbspf3M7/XXiv6zb5W9rOy37Ui+jD+7g2+ZP9tuHo5V+kCLhXH/s96gz6K8c3N8Pdi9s+ko48PpK9AR85jc057Mfpz/6Y+/eX+Te7jZH+wGJ+V/cEDfE/cduK4E7+d86ZxiT/kD3L+1AL9jdGV++qjsj6Sf3Hi78m/H/oPhu8P/fIR/uEm9nuk/vkJPEdJLyOfSfE/8idKfyp/Ln0ciq5z6Wlx4m/o9TD5j9DvIvlbWo/0xc/4xBPAvzF6Mg7sSV4/Zp+trATrgkfoL3W0dzT7vhje3elxPn3kPtQ+OW+j79zvuFl712d/RvlLsv+o/+0L/pV4T/X30J9zTnWj+UPOp1rifwj8uyn3YM7fzLveyvqn4P8G+J77Mw/SU1v6fSDrtPjDjNPytygrwRXk/Vf6JfrGkP8S9DXU7kfwVWNP1cGW8g+D7+jEiyQ+t7A/MCb7gYlnpofXc25b2B/LeP5dxmn0HUFOuZe1gPyH8O+5Fz5ZOvekdkF37kfdX5hn19HfExf8tXXUC7nvjZ8bla+Lz1fRPxn/z+sntfE9hXxew/+O+tUtsUvyr8Zf9jHungFen/cwnGt9YF65Bbo+QU/OtXKe9Tf+LlV/LX8+DN2nxl9rvxe8PfGTuKutyXcbdI9Wry361ko/r/2867G7/pH3PVrRW9PsW4MT0L+UfC7K/h391dB+4l3O1C8SD5P4l1O1t4X6Gf8yHt5UiF/L/enEsa2PP0i8Z+L24B9L/m9rf4x09Px4zm2lp8F3Jfxns6fF+DwXPzOij8SDoP9e/nN17mfSZwN+ryl9zEz8cCH++AXpxCHXLSvBrLdz7+ty/uF0/GSf/T79IfvtN8FzefSj3M7s5Uv992vwW/lf53wfvrmJE2cPk3K+hb6cv3cvzG+voa8e6OmCnvfYx0zj3qvgueyzj3KbgueS1wnavyLzI/0v84Kx0pkfvMseh6Njtv6S+38D8NXYPPXvvL8Af+ZbmX9lPpb9hzL58cu5x7gG/oXo+QDeQ9nB7ey0F34zL2pE/7m/URn9A9n/YLACe42+dtX+F+TYPOctsT8w+xXZn3g88do539T+1fDP4Ben85O5z9AQ/zuYzx9LfrWkxycuGr2zrXPXSY+D5wn6GAAOBH8nn6xHcp+nITk9Kd1Hf5pFXj3kt8r8Q7udfd+DPBNnMgH+Puxgec4xcz8Y/kb42Tn7NfhvRy7LyfF/5DU76x/9J3HnuV+ZuPQbyCP7xk2la7Cf9/XvNnlHA+yR8zr99hdwrnYP1z//QP+u2utMLnuj/xzrkf21/y54Q7MN6ft89w3pDH3voecI32dIf5/9Dn43cR8/wPcuOl4irx/Jfyvy7JT79YV7mWPI8yP6ecb8LXH5eWdgfOL38Z97sbknm/uxN7K3pep3TPyO/OOUvx09TcixPnzF+3vZX7pZOvdPLwHPxccu5H8keRwROWsv52i9lV+Jr6XGq/iX6YXzp6yX4v/a8jcVyeEJ/mbXnCfC9xa/eiX76QP/LPLoCG8v/P/APn6j7/7Gxcv0t5/xcTh/Msf8/nX29qv848pK8JDsv5Ln0Ny/J7dPtTsH/dm/7qH8g+jbKvIi/37kehY+Guj/10X/+E/cYE38H0Q/89E9L3HoiTeK/el3z4GZ/+6S/gd/lcRdkFPk2xl9J4Ir6f09/a0+/rKOGEie03N+Qd5PZFwt7G9ch++nlLtW+k70/YKv+eScc9wJ8nO/ZSf4muMv91uK5605h90cf9XZ34jMw8EJGZ/074n4O5895f5IOfKbnvmN79Wzv4y+nG/8kvsL2j+HPDYj17byc/59feKF6f36nM/kfj//8rvveSdgLHznRh+Jn2M3OR/rgL/Ehz6t3Ez5h2e/njxPir+R/kP/zv7Xn9K5n1N8/ybv3pxEX1m/P2ReMCDxQ/TVmz7OLoFyH4H75n4V+8u7hE3AqZkn0VdX8vvc95PxV5lfyTyq+B5AG/7+RrBdwT+sov/+xs26YPzLRPPtxP1PkH9V/DH9Dcu6CX1H6z/17ZstASeBu5NX1cTfwv++73lvsvguX4ecxye+g3x2B0eQx4OF87o7Cud4h9DvUPx/njjL+E35E+lvZ/14Qc0N+b+MvN8yDuee0gm5Pyb9CbkkbmcAOkaZzz3ke95zzP7szfxZxax3ybty4nsKcXvF95MOwd8z+DpYOvOQxL/egZ7dpBMHe7j28i5H1rP35/wx91ZyLyTnQIk/xf92yuf9uz6Jr5WumX1d6d65z0vu63IPm31kXTgh/iLvbhgnutFf4gNfJ8/R2rlA/kv0Ukafq/GT/aDsf52l/iqwHv8xNvfS2EHxfaAq5gWVwNxDPCX3vRNPga6cv/0Gz1r2tg3/833sj3zO4n/L2we6J+/+kEdv9d7EV8vCfYe8b5N3bX4vvG/Tx3h1HrpawZf+mPcc887je4X3HnMv80+wLPfy5T+Mnr6JP6C/MfEf+vN35HSC73erPzPvZDXbsL1dc//NuDwTX4Ok31L/qdyLB6uZf7wpv1/OobRT2XgzUnttyTH3Ffobr17M/Cj7TtKP8RNHsI+ce3/cZEM+c/79sf7/Te5151w++/Pma9XppSK9zMh4gd9P0b0cPCf3BsDZ4Gn0cVvGb/Uf0f6T7G1SzkeyDvkX/3AefS7Ju19g5hezyatBzseMv1/j/3XyyrtHZejZTfkmuU+mnZynt4W/+N5x3kEeJr8VeWTdkHcFE6+zJ/hk4iGV25v8r0FP09h17hcqfw9+OrHvK3JeK7+v9g9jnzWtv1aj4+28/ye/uN+SeODJ/Mu30okbXmN+sn3uaeb+L/3ew97Tv9Pf8z5p9okfxncZeed9rdz3/C7rRzDvceS9sty7jv/L/et69Lut9Cb8+5PS+5WV4Ev4uA+9uV9Xh/0nbjznbXtqvwN5HwfmvaC8Xz1Wv78dfA29B8nP+9I597w973DiJ/eLE3+XeLzcN+6s3sXoORb8Le9woffZzEv1h6wv6tFL7nNXsL64Xvu7o7tp4uZyzhQ96G+zc14oXSPxD3n/WvmDpHPffXP2+zO59CwrwdwfW8UeH2YXK6V/Zx9TjA+Nwa/JKXGWFyifeKrEleR97p7sIe/39pB+TLnE9V7MPloV4ny/wU/iyNZknor+JuR5Ajmvyvow56X0l3vUz6E777fn3Zrs7yc+I+/YTEVvxuXE6Wd8bsGeZyQ+pnDfJnGuefcl78PuRD7lzf96Zt/LPDBx9HmvJvezsw86Pu/Lm989nvcxcg5aWP9lXHkz90u0v7YEyr0DLjZen4Puk8k/78mPhWd/8u+p3byPtZacs36YrP/dDz6E7lfUz/5n9ruy/9Ui/qWsBHMemvPRXZQ/Sv728A7Ff1f+PedKsc93cl8bP5OzL0KfeX8s95Fns7vjzLuzf5f9jVrsY536GYeH5Py6EL+WeLbErxXjfuN33kXfEOPGFpmfoif31Ivz6cyzc97SMOvX3AfzfUrh/bO8f5P7z7kPXUd/THxK4lUyX9qJPeU9/Vno7B37YD+vsKuvjLePKn8L/Hn/Puun3B8unmflnCvvM7xPfovBXiXwz3xyFHrHgJsYH4dmfON3Bknfk/OKrN/kP5r4K+NUzj8PJ68f+e/zpPMe+VD8/2Ef9wB+dE3m09knQG/ej/gm8aW5twSu0M5liZfH1yR6TlxsY/SP409O4V+K939zr3UpeRbvt1bRbt4z7g5WRG9xfZJ1ydrC+zTfs+M69J/3aZaWlWD2c7M/21r92bmvAb6KzsR7Xseu8q7HGfjJPcId0P87vW2TfUv4b869T+XPyvtK6FtUiMsuvp99pfF+Mb10VX5N9vsyf4d3bOLY8o4Wen/0Pee9Od/d1n5P3u//Lucm8C8x/3w272tkv52cfuP/Llb/A/5refbH1RtHLnVy7xh8Rv2cj74BT6fcf9TepLxHSk+JLxvN/nfW7hz1c55cfL8v99hyfy3vK+ZdxebSz+e+Ab1ep72qvj/Cfo81Po6C/3F2soNyO6k/HT15j+pS9XMum/cKnsBve/I90LjwYeJ/lc/9ndwHWet77olMx1/uMx+R+1aF+817oaeF9pexp7Hqx39XLvjxvGdZy/zso8g999ESr8d+si7OermV9stpr3n2XeSXkU/uv9Qu3INJPOoX0u/l/Vffs37PufCKwv5N4nc+Uz//B/I+PFnf36V+S/QmTvsx+SPVz7y2Dzlmfpv3BROffxD7WqR+W/0797n2hC/vvCzOfZv0W3h6gO8pvyM6j1Sva94HNZ59lfeYsv+H//PYb+aX5+b+SuLr2d1u/PFo6+e8X5n48ar6X+LHE0+efa8B5JN3JrL/tVPmw/jpxt6fkJ979Xnfrvh+YeKKLwUHkVP+R+cU/jn3eBPnk/v7tfm/4ca32vB3Ia/i/YlrCvco1uM7eivL/9ion/EpdGecCv29fR+lnfy/QQX8D7RuGgAOAm/Hx1X6W94nzrnDUep3o7+c8+R/KPqjfzm+V5WVYPXcR8j7dtqLf4u/q5z4BePjs+A1+M/9hSO1f3nuVUpXR98/77/qF3n/Ne/BLtPv8z8Y9fSXrHOq4b8JucWfxn8enX0l8kq86cS8v8PeVgaicwX5bBe7ynsT8FXF37PkcQB6n5N+Af7f8XsRmPVDBfQ+rj/lPd0fci8C/rOM+3mX9+Ws++j7UnZzCZjz35wXz1b/n/NfMPLL/ebca84951Oyv0zuxXOX7I88p/4Q9O5BzjlPa0N/+2efXrlTs36B9yCwNdhBO9Wzf2H8Odv3yvi/kNz+U5jf5fx9FfoTr5J4lg7qHyn/UHCKfbLMW75h11nfTuPHWkuvp+9Hwb9zz5kcHoT3AOXzf2lj5Bfvt4xmh3mfo1/iq+F9W70P5X+Avqyzs75uw15/ynibc0F8/5zzYfaS/c+r2Gneh9uCvWde+RJ6NiHPj/XfZejqT3534mdr+I9X/szEiWr/Vv13LTgI/5flnJM/6AbmvdrT4ftc/3mjcA6Q96j+sG7L/fCB/Mw9Oe/FzwLtDQe7ZT3Lvjtq72r0rct9JHS1Jte8R5b3xx7Neg5dVdn3ory3aXz8C/4dpQ+E/4/ce8n9ioyXuX9Ob+nvZxjPch9/F+NP+nvvwn7RZ/h/B/7/KFcj7zuQ32fgKjBxAIk3TRzqRuSzfeZLeS8PzP/P/LewvzGncM6Q/Y4LjD9DwA/U/7KwPlwYfcjP+jD/b5h3EGPn/cmvjL1vnf1i6dOlL0ZP9g9uY+/dpdtnfab9xFHlveG8x34ievK+3gDt5x3Ju+j/Q/o9Nu8DwNdLfgf2fyz6Mj/OfDjz49zTaqhf5J2595XL/dpzyG+x7y3ZW+7XHsGvXQTvCZlfo38x/7ZV4uzJ5f3MR9B/X96rAXN/tlziZ8l5Qe5r8D+/6j95Pyvvgf2qnS70lX3DSwr7h10Sf0HOPxbud/7buyN5/6cd/eYdhgH6+6U5b0Jfi8RvSud8oV7OB3Pen/068r2Nfm5IXH/uMWR/zHyxPP39bZ8l58Ct0XUQeCU6Mo95Ev687zhVekThPce35Q9LvGv2E8kr9xPyHlPuJ+Td3oP/Zfwunk/Oip8k/5PJ/ezC++HxR1fgM+fNuR/4Pf0elfM8fvqzxGnm/g1/mvcqyoOT8v8A7Oki7XTHb/7vMHaX/ciM76/TX/Z7fyHHoZmfoS/xqM+jJ3GpL+R9QP7yQe1lPZT1zxboGZF7O9rvmfhv9ngm2BE/uY9/B31to34r6T7kWKdwLjacP8i8t/h/E/kfikroy7y3VuaDhflvJ/5qh9wPSxwh/jetuuH3lcqlP3yO3pyj3MDffaz+mfU2xP8HfbyXd+b0l/rgc+w18bH5f7v8r10l7eX/7S5JXJd2bywrwbyv0FN7eTfkJHw8Gfkm/ok883+6Oe/IftwI9GefLvuhK9n3TeolTmiB8jujO+vB8+B7QvoW/OT+X+IH8/8HzfT33N9LfHZj7R+Cn8RPXs8e38s6S//eETwWbJp448L/n+6E7yPA9vzbsWC30MW+Mn+tQc+Zt/Zj/9/SX94jzP8TnZH9k9z3yLlFmfa101i6DTk9DF/+PyP/L5D7XPn/yPy/wOXyc+8r+q+oP/eW35v8t2bXVXO/KPFH7Gev3JOQnzjBDujJuPF0zm+Ufxr+5fD0Svwluz2Evg4hj8xfcr/pZHrL/abcdxpMLhfB1wb9x+F/W/RnX7Sd/vJd7oejL/8PNC33YNR/mt5HZf83933lT+U/b4WnATxt8n4buvO/uWv5+7yHnP8HnVAC//w/aP4v9O+8P2X8SPxy1gGJT0s802n5v0ntv8a+8//D2Y/MPmT2F/P/wwP4u+w3Lk7cFb0OAl8G9819d359U3hyf+Wp/IEUftqD16L3RPOjHtZX++An86S38T0UPRPprTN7X1h4f3hq3lfDf/4vIO9Gjs//IClX/P/T4wv7T3k/P3FSiTNIfMHR/F459veA/Pz/0+vGr7xDWXx/sp3643PvxfxgkXbHovf0zE/Q8WvuJ8vfF7yMfHO/cEfzqd/Ub+D87W/5g9ln7ne0I8/cn+qX99TlZx5ZF3+f8cd/kPNy6VfJYT66jkj8Dfo75f2Awv9bJD7pbu3n/a3T2Ok46SvQP5b+jsFn/mcw/u7f3iW5SP27zRfOiN7kX0+fOTdshI9PjM85R7xP+/eCN9Nn3ok6MO/70X/e19hcfv5vrDk6E8e1H/7jd57Ne2XaeQ59n/KPt9DLMum84/h/JcYF53icdd159NfT9j/wikKDBhqI+mgQMmaMwiUy3FCmbmUWzakkN2lAKTJWhlKGZB6KMoSEiIwVySxxyUWllKH0Xev3fjyt5fVb9/3PXud1ztnT2WefaZ/zXlGr3P/7TW5aguVrl+CbzUtwRPUSvBK8Auy4awmObFyCtzYrwS93LsG7divBQ6Rv3LMEb96lBN/bpwTfalKC85S/VvoH6Vo7luDp6F2Er7bwvVO/BFfA+xM5Xla+avkSHIePRuS7Wn6XSiX4Cbxbqj9q7xJsuEMJ9tqpBI/E13bKl2tQAvfLP4UeZrcowb71SrAP2Alco/47ys+ij97VSnAr9W8g13l7lGClrUpwgPJdyPWpeifvXoKL8b9O/rvo3VilBG+Rf8aWJVgzfNcswb3Rn4n+0+gfCN/gvUrwV/UX1yjBZfL7aJ9R9DIMvkra80rp1trjEPAd9cvIV7VhCe6iXdbg43X8b5J/ku+3KdcI/crs+1ty9QDvINfD6O1Onq3ZxRT4N9salL8xdi9/bcUS7EZ/a6S/lL53O3To/2b2/Zh2Wrp9CfbHd0329THYBH9NwaHkOoN+zqDfmfpBf+V+VP839DYnx5cF/jf6vht+q2vHfeGfqV1mgU+BR9FHW/SOgXd/+r5B/pdblOA6+G8El6F/iHpHgr3xWx39q6Tbkudo9e/Q3v3034vA/uBMfB0NjlS/P3wVtMcH8J0lvwb4GT2PoZ/R4HT97yH1ZmrfVfzERHLMIV+xPxzC7oaT70n+49/a/1Hp2fQ3kr84UL9pr/6V6g9LPfjXyX8F/brbluACfNQj93z1u/LfdX1/U7nX5H+i/XqSvzF8Zej+XLUEl2j378gf/XYwXrRV7yb+4hvlJrGn6vAtUe8J/mFb/bU3/H3AA8nZSb1W0i3jJ+A/1vdpTf5OtxL7eY68V2n3/8a/0d9w+Hrrrz+pv6P628b/ZXxS/2T5g+htoHJNlbtfez1H/sXqVdWfd5dfnr3dS4617Hsw/EeqfwRYlZwtlT9I+WPJFz96KD3/on0eV/4y+V+g379uCfYDu9cpwXPYf7F/pF80Zz/HkXdv/I4mZw/6PVX/2cb306SfVL4XfD3BVvh6Qf3l5D2ffBXRG0G+RuR7Ev6ztWNz9lVe/XH0fi06v8HXzbjaS/3N1G+B/k74rYtuI3rcV/od/flq+ss85yn81da/PjZuNCX3g+S8Me0CXyf8rpb/APu4D9wdnx/i7w7lp8FzlvwT0LmcvI35mw34q6J+F/Xjn+Ov458rmU9sMG5sBOP/79+8BH8Hp5DzKnr8lN+8nN296/ul6N+I3+XkreF7I+13xTbSyo3JOK7cVfzbavqfgc6V9L9K/gpyrZR+hB6exe810tur/xX9HUzeuzJ/9n0WeB26vfjxnmC7tBP5Kyo/HZ7HyDFB/vG+3yI9kp6uzHiJ/ye08zL8bmiErnoXmG8cSD+H4v8Nepya+RU4ld++IPNC7d0B/y3w1Un5Zzcrwf/i/wXzktH4WYTf7sqv8718/BF77Jp5rP5zgH5W9AMb8FUP3dPAZuTTLcp9Ao4Ex7LfT/HzlfJNpI+T/y/8dSLPJfK7Jk0PB+N3AP3fKv9tDMQ/DMJ/X/RqGz93lf8VfV6K7lvscRP/VFF79lL+P8bDeuB/1TscP+V8v4Ydbwe2ou+W9PUQeCI6h8ifQt5Z8N2A7lP0P0273JJ5FHuvgo/W7K0V2Jo8h9JTTenZ5vFb+F4J/rb8733Gz6OlM17/g/5b4q8fseM/a5B/hXHgCOPUv8gxnv6/YEfz4LuW/P3KSnCm8peyx6u0Xx/1t5X/EH2VoX+J75PhGyj/F/Z1PXnGgvGDu/Nva+ljjvpL1T+PvBO0183gUu2R8WK6ecE12meG9N3y34avr/Qu2qE8/mtVLsEv5I+GpyH+3uRXHsXff+Fbh79n6HOs/NfBcfpHbf2jx/8aZ+kj/iT+ZQn9Z11/O762Ab9Q/3X83IPuTvD1kz9H+nf+aAh8e6M3vdBf04+31n516LM+PHWl/63+Ku3RV/6t+LgA/Vb87kAw87Ju9LuI/f7MDvrBMxb+9Lvl0umPu+L3PXbRWf1/ZZ2J/9bq/6x+Q/kL5Z+g/T83j2wnvVn8mf77UvTEvywgR2P9qqP8cvrtaPnz9Kdq8m/B5+sZP/CzQ+YLsS/2OcR89N/gT/HP8Qf8xgjpztLXwj8X/hvx1ZYdXBR7q1CC27O7F8Bn4Ftj/PwZ7AeeC+8y+v8SbAf/U/TbTbkb6KNyWQkuRn8LdlHBuJv5c1/5P2iH2vh5Gb5e7OcM48WDxuGHwRPpeyh8n8Czq/r942+M/8v1z2uUH6L8ZfCfzQ/Mof8N+HkUvsfVa+N7z4yP6Pzu+4Xk/TDrz7ISHMEuds18mHyPWBdvgv8+9pj9nxe132ztti3YTf9oS45/grfj92j0n+afbsFfH/kf4f98dncueB7YiD215w+GqDcMno/BD9lL1msHqDcX/fXkWi//EXiep7eT2fN58lfW/Hv9ScanY6wzepPzc/JPo+8X0b1Oejv6OzT7r/iozo53wn9XdnQE+9wPH9+gfyl+90b3BPkVMx6wl57oxy9vpZ8043fOU788fFOVb8w/LtZOr5G/CfonGu97G//7gcfCV5xPZ579pXQb/J0knfVz9h/30i/2BluAjbOOwk+ZfvSL9L7wrIP/dvooj99fyH8YPmeifxJ91yHfUvvbl9PrGOmsX4dn/1P+R+idrH0n0cdE8A7wfv3rbOVfQLcjO1hJ/uxfVGEX2b/IfkYLfAzC72fwdYD/GP5/N37kB/1nFv0M1D8uAQfS42z5md8+7vtVWR/Q5yb+IPPakfIzv+1lvnMk/XSXvkz+GPxUln9E5ML/SdIL5Bf3z7bRfufD95P5ccb/jexvA1hBf/s5+5Dq1dReO8j/lP+ZzZ8fhO5z0lk/3mG8ngZOAjNODOMXfsr+svQK/F/DHheCP+Dje+2fca66+ofFjyj3Bnvfnl+ZDn9f5U6gj/na5Qd8X0y/FdjzNPAK8A30TrGeHiN9qvR4/edG9tYvfGmnQ+V/rN4T2uMU8myNj83LSrC2ctdlPUs/zdjf+OwXKDeT/L+R70jpcuisgP9j8iwEe8M/HX8X46eJ+lMyz6X/u8j3MTt7hL3GPqrwiw3BMvBBeqjKvnZDryr6b8C/f1kJ1tcvzlb+GvwcoX+djG4HsB45z6aP6eo1I0/86WbSc9NPwPfx/41+kXGoFXgv/n7iPw7Ex7fSteE9hT+eSm//gP9b8s7A1wTp0+T/jn4r+mjPPz0MTyXlZrHrDfTZgrxr4ct55lHs42B8/XW+yd/WBGuAZ8G3Bb/1H/iuyflW9t/QP8v3C8kzWf+50b5b5aw/zM+vRP80+j2PnPHzddA7nL1cDv6e81v4945/Jnf2Pw7Ex0nSObforn++l/7AP7yNvw7KnS5/P379ZPltzGfeov9m+D5A/s7Sc/D/PfnGk2uFdGv2k/nVO+i1AV+Wn/PlnCfnfPly+PvTS86NjoSvCvn/ST/NzdN2BYfjZ4n0nerH/8QfVTK+DtPOy7Kexd9v6M+R/yq8c9jHYfR9Mzw3gc3wNxq946SH6i+x39vYzwLl6uFzS/Rvwc++6u9HTy/gf4b89eoNzTxO/9qNvi5Bb6n2X5P9G+1/KLna0Fcn+P+B36bqHSb9gPRc/WdeWQl+CU5B9wflG8FfPF8r+qv4scz/Wpuf7gbuAvaF70f7XmOyHmRP/eD/TfmcY/11voNe5g/T6e8T+vwAHzXI0VX9T+mxAv2N098fobeLpZvD28R8YKD5+zx2tBk9FP1b7CLn49vkfJ9fXo/vdvLPxtev6j+U/Rb8DSXPozmfgP8P+Vvgc4F0/MMA9lM8v20nvzP9PCn9QM5z0VvAf2X9sxCerHuOkf8U+eKfws+fYGX9bytwS/Bq5Zvj44DsD/teNfEL+JsMX0/89SfPrfxHR3axgn72V3+e/vy0eq9Jv0uOnJc/A1/O03N+/qDyJ/l+K3sah9+LjKc17CtVB1vB+7H+8wb+l0nPQD/7Yw/Cl32y7I/9LP29/HPoI3EOOd+aDn/Ot4aQf1vpXci3hBxj1D8R/mfxO5w/bJH5HXqZv38NX0/1z0G3O/yD4R8kXcm87UNwPnmPp7df1K9L31lPbQX/g9q3Jz/XEuwsP+f39cwLco5fPL/PuuM8dLP+KNpPO+nYUeJKjpFOvEn0/1rBvl6V/lV7TcHfp+pNll5Dn3crn/aZKp322Y69ZD2wvXT2v5slPkd+b/50lfp7m19fj17iS8aoP9Z8oRo7eEO5z9V/HL6cRzQ0z81++JXqXwVOIF/1xGXxe6/GTtAZTZ8dlV9Jf1PZ89qcr0jflfEz8Rzssyv+NslfIv8K7Zvzrx+065/S5ZQ7kD63y3waX5OkE3d0IP3uZJyokvlN4segvRbdnJ9Vk3932lt7ZH95k/VR4gAPlk7830L28AE4kT6zfrhae5Tjh7f3/Z/aL/vzy9DvCma/fon9v+Pt+90O7pD9o8p/x9O08t/x1cR3t8Q3Jc5D/c2yr6qdftdOOb9qpt2vp+eJWSfR72z6TtxS4phOhz/n6X+m3xqnX8LXbdblv+G3GI8yh3/oqfw+ZSXYBZ/384fV6P1E/H6e8x7y1ZIeRf9baL+1+GpIf+cYT6/FT7fEjSp3vnKrybcOP7PRfw78Vv7L6l0mXZMeb8PHfP7u4uz34PMc+Tfi/zT119BD4g8Pkj/X90fxt7/65RNXqf8PZj8rpcfQdwftfS86WZ83hu8d38fR7+P0d4r2+THzc+ktlK+c/Wn2Ult+R/33NvawOPMX9vsg+sfab2kLZj9/oPLHZPzE/4LE2eHvFfZaO/Moeq4vf7H5wB/4fE3+9/jboawEb0bvT3LcS/9zrMe2TzyicqOlE1+buNqBvie+9mr2UoldVMDHPHzcqX/cKL+P7xVzvk9fHcFOYAV0HjdfrkAvX1gPNUb/xezXgA8ptzs5Exeyf8Y//ux6+cPp79SyEhypPW5S/lR2ca30QPgyP65iX2IFPTyg3Az419Dvz/SSfZAu5G/AfhuCj2Tdor2XGE8y766rXOLDnkT3MHbZlZ/uJf9t/ec1cBB/UBW+6zIvw9+j2usn/LdW72V2PoP9Jk4rcYUfG1eOkm4N3/f624/4OR/dl7RvztsTb/QZfZ2qfXuj047dXKl8F/b9Ss5LlRsFHorecu2Z/jySvhIPt6isBJtpxx0TL4qfxEc2QT9xkomPHE++XeQ/jM5P+BtMnsvAVYlDzvirfffjH1qAi7M/iN5l5LnJ95zf3Yv/k31P3PMt5PtBv9jD9z+Ua4X/efKX6ud9pTenh4v42R3BkeynYs790W+VuEt6/HGPv8uzil3lXOIrfBynfs6pDpLujL8NxsfEd1/S6O/yJn47cduZT72L/kP4bZJ488L5ynL1h2Z/QHq18vux6x2120x4j8n8jX9+T3osPG+xn6X4Pkr/OUm/2EF7LuGPsm/+gXStQjxm4jN3RC/xmfuxv5zjna/9Fsp/md6Po5994Hk85/nknJh4HvznHkP2LbdTbkL2xSIv/GeSa67+Pxy+YeajB6t/g/r9yb8H/A/73kn9rI/jb8fTf1Xzs+xTJA4rcT2J80l8z9ns+iywHv1eql5/dC+G71J2nniXOuztJu34ILz3sJ/ahfjoxEVfBs7H/zR8HWl8+076Y/VH8utd6LMK/uJHsw4urn8bwZf9isxzcn5fpXC+XDnr68RZZP0H9gEz/zw79qp8Xfi2hH8je+sbewSz/7vU/H+sedtvhfO/Z4zn633vVYiP66A97pZeQP7WibeAf0v2dEL8vfZJXF7iijbRd+L0sv+W/bbieibxCZ3JkziFy9lHu9xjil+QHhr70f6D2PUAdCeDl5XAX/c/HpC+P+eV1qc/gh3VqwP/XmUl2ALcG6whf5Z0zsXeoKeJOd/D7wVg9odyHj4e35Xp7QPpl+RnXZX7TV+xnz+ku/L/byRuTnobfORexbdZl+hv2QdenfM26S2V3598y/H1p3beS3velfbTr9bh8yjp73P/wHiQfebE6ScO7MfEmxXu83TLeoZ/Wwv+DH5Fvj7mZd8YVw4i3+zEy+g/08CMq/3I95n+9gR4B/0nHnQP8rxL7rXgh+TJ+fki+sg5+nL9t5X8ofzicnKNoZ/5xqVHC/t78bPvk68Get8qn/iak/BzIph98q1yfp7zW3x9mntI6R/ms+mHWS91U39U/BN+jkl8HvrpX7lnle2M9Ldq8JeBua+X/YHK7G2Q73N9H4F+X3zPy/yLfp6n30Xsc5X8F6TPyjmr9fUT4GH4n5X99twLzPqNHeQ+15no9ck9wfRH6XPxnXizbuxzE/zF9dto6Y8S36R/1FK/Bj0+qH1Ol8690hHG5yfhX4+/rMuz/559+eJ51L3Kn1G4/3CcerkHkfsPd9v3bcm+2ptnHSw9KOd16v2Q8Qc/ud+Qew098J37DWOz3s+9HeuBQdmf158H6b9t6fdcdLalj3Xo15I+Ouc38DamjzkMtDc+bpX/UO6L8COPyT8+65bcTzBf/BZ/1yl/BH62pOe7yJe45MQjl2dfV9DPCv7hdvjSDtX/x/xqT3y1h3+F8X2TcaG+/r4ve6mi3jXkPlk/zP5GlxIo9zg4HvxI+cWZryaegx6vo9/smzKLcqvBD8wr5uuPK7P/X9j/aAN/4u8Sd9eYnJfSz136zUBwRc6j4X8F/onmQfegswi+nL+8g9HbE/+qPc/Vzq/Hr2V/iF7bJa4avQn4q2rdWQ3ciR2thH9K8bwA/Qvl/8gvddBuP0ln/TVIe53MzjqALyeOm36ulG6ee+b46Ivf4xLHBf+L9H+a9Fn80ATyJt5qgfqtyLFQ+ey/NNAfG9BPzo//RT+/8A97ZLzRfm+pn3PFnCfmvDH3oR5B93/FUT7Mvs9Rv5J2eEV+NXpMf3uDXXbN+TH8iRtvb7xfqb9eyJ/8Fvza6Qj8J64v8XyJ9xuW+DR8f4l+7qnVyrmp8Xx/8HB2+13il/GR+IL47/jzx7X/DPBg7dE38Srk20K79Zc+A78vJb5Jf39Z+kz5uU+YeODcNxzA/wyn7+gv8fi7qPc8/R2mXRcZNxI38xB7mIbfB6XTPmtzfybxGYXz1tNDHxykXWrk/ol61+WeCv+b9wFegf8Z+u7AHzRQfjG8T2d/i37foY/cpy3G1a5EP/FFQwpxRokvOhDdYdk3gn9b9F7Ubok3KN6vThxVxvvYW+4/Hib9KTp7Zvwk34nsN+8+5B2I2eTowJ4XKpc4/MTfZ/06AnwPvaxf1+kvx6K/C38S+27JPkbR453sqx1+LmbXv7LPgdJtyN3Aeud+etpR+qjEaZeVYN4jODpxDrkPQq+3gf+xPl4r/SY+m+Dna/57Cvnb43s33/OOxQnw9/J9ELt7CZ694D+Pvs9n12+jl/35cvxCm/h1el6VOPLE88lfTf+L8XcluolrnUL+q+HP/uOZ4DXZl8t7EBkv8VVe/+2AfiPtW5yH1sn5lP5TA95x2a/N+pH+Fmb9AeZ+7fdlJXgEPTWB9zf2dZfxagp4KnmzzjyLXXQn38X0cAs4i13tqt0ezj4l+k/hd0zimgrxHe9Kd8ZPc3KNpv/J5Mu8oh99PYf+Cvz9AQ4Gs1+7znj/Nf1vzz+NQWeK8tlfnSy9OHao324h/2Z+4in8X6R84pn/m3NN8iTe/3T1dyNHQ/gzX30v+4Tqj0Knp/H0a/kDyL9d5s/6+66+Jx4u8W8Pq1eRvY5Abx/pV5Vvrt+21/+z/ntTv3oL7EofiR9KvFri1xLPdn/hPlbuaT3JrnJfK/32AjD9ubz2yvsDa9Rvxf/F39TG/zp2e3DiKum/Bn9dx/da0h3l31tOOfVHSN/J7g5Abw/wfvwnDnQ79MslDo+89XN/nL29W1aCud+XeK+dyHsYeb+nz8Qf5N5+4pmK9/ff51/eUP91/TTxxzX1v9syb5JuyX5zX6w8ujl3ulj+k/xV8Z5h9t9uQ/d46cxjM399F/6j4N0pcc65f2j82hh/o/yvym/kX5qbZyTubCP8F9FPMc52mnIH8f8XGvfmZh9aft6TObLQ/7KevEX93L9r5vsQ9CvaXzg075fQf/bh5qi/b+qR6wz+rQ17PJHce7GXr5V/QLt0V+4R6V8zH+AfTkf3HPB3+cei96T2PFr/Ppf919VeNfW/xG0syftL8DxGL70S/5Fz8tx3yHoKvbzfMQPfB2XdW7hf8VjigdA5jtyv0u9I9v174lXQaUaemfbX14CHWb+eh95q/ugHMPHeP5D7hMyn2M/87B+R/y12U5Z+T96c/36t3fPuS2P8VaPHL7O/63vxfa2h0k9l/Z59LfAoeHvlfrjx5FP6yb3hrIsqSOf+0Lnmn8X4xavVH5x3ndhFzv/mo5d4pt1z71j6o7wvo3+248dyTzr3o8usRxqAO4J18TGtMP+4E6wn/3BwcOJH8FmXfLW091p2eZ9yp5JvBrsYRy/z5TfVns0Tv0e+r/m7+6R7aL+Mu9/hJ+PvVfC9Dea+Shf467O7OtK5nxE7H06e/sbfKuAk9LvQR6fEGbHXK3KOnv4vv47vnfHzDL/ZPv1Pe61AP+9BnaO98l5U3ofqpD+8Re7O0hPha2v+k7iQxInk/bQh8W+J201a//iF/F+gu0Z6dfyV8p/n/EN6lfw/wIfwexQ+psE/Sn+tH78q/3ntMYE9jgcnwt+Q/qaQ987Ecas/M/Hl8Cd++n3p3L/JfckR2u16drQfPI3ItaV+86J2uUT9xBP89V5cWQlmf2sVe22Dzr9zr4X9r0xcCn5/kt4Z/u7w5b7wjsar3HdpzV6OMz5szL0p+R9r7zr0/1L2H+G/iT4S51KMb9kHvoyrGWczvr6UuAPyvyid+P3d2Hf2zW+WX1V7vIpeznPnST/Cf1+ufYeAOdd9VH76ae5XPcI+WpLvYH4n+jgp5zuJ7yzMF/JeRd6naJh7o2DW+cPyvgJ6I9TPPcjcf8x4fDz9fpT72znfdP5wQeK+pHuxh3EF+897iceif4X52XBwBDo5P9kc3pyr35k4U/LlvCDnCNdrr5wnVIp9kyPxEruEvnrrfa+g3KH4v5a/+By8Abw494qNzznPznn383l/pQTKjQJngbmf3xX/ibs7rawEe5Lzf8VV9yTfXPVfBCN3zk9GKT9YOvtRi7TvdP7icnI8Jb2Uvr8zP7mAHjPPzDlRzg3OkS6eHzwgfx+wEXmm03/uteYdzCrw5D3MDcb93Ds93njXBn8D8HUx2B88iX6fY99vs7+8PzAt9zu05xByXZl7lehfyO/lvG8sPnP//W7j4lDjfH12nHvaeW8k70wNy32prH8Sd5t9ncI7Ff/M+T67vIEeD8r8ij5yPtZTe+e+0iL66ArvK4lLTTw+/WbdPt44NkS5x9B9LuM9Pt/Wvn/A+0XuY+Njm/iX3D/J+UIhfmdO4lZ9zztdeZ9rEH97Fzpnacdh8nsnnh5fO2vP3F/ZqHzeM70o8ViJv0o8O303Ryfjy4FlJZi42QOkE097s/6xMf2qEF/wAfo9cm+Cvl/O/N+48FHsr3AfZnP0VspPfxkD/7WJMyDPQnR6JD7YeiRxzcX+uRf5c876nvSXeY+M/Y3Tb28CX8v6JnEP5B4vnfO/Ddo17+rVI/+izL/Q21q7Zb1Qi/w7p93Y48Hsczn+cj/gRHqeSd6sMxO/t5YdtsB/e/T/NO/ajJyXSQ/POESuZfjZEj+7qb8J/1soXxn+UxOPSd7B+K4t3QN/z0i/To5npZ/NewDkPhz9kfT0c+5Z6h+TMu5Yjw1OP6f/TXn3Bl9t2cck+v7C91nKN835OvueknsA0l/lPh35R6Jfhz/8E/3z+ade2uUq5XKfKOe9OQcu3serzz+ek/mW9qid+9FN/05vB/h6qN8Mv1ln9mUnj6n/q3Z7i7y5X/+N9q3Jn09mF3eAOb9eJf8gcl+Cv+xjrdEee2S/Dx9HZf/ZeJvzpZ/Z4TaF9h2o/uqcr9DHCfzHJeTPPYPcL3gWvevlb88+887iMvOlttmnUW4D+XNulvvk3yReAP7Ly0qwt/ytEx9Bn8V47CXxb+qfqr1q5R3NxPnj+1ftvw5cn/egow/94QjjQPS4Wc6H8Jt7Cd3oew/yZd3YOf4Vv2PVr2j8zzuyeecz73s+lvt3uf8j/0/4jrTeTrzHveJBcp+jKf3fbpzeWTr3Yf7w/RRwk/50LP47ac+26Of9svHqb8Lfu+j9U37Gv8x3ss/QUf/PfkPing6UXkS+YeQv47c6KfcePueTfwL7HVJYr2R9kvcsz8Rf3t/Me5wT9J8fwOL70m9lX1m9EVmnxU9bv07VjrkvVo/99WV3M3OfWP4a6fv078zL3jbPu5c+TrHemQteB56Vc1h48l7orvjK+8E96Cvxmf/m/+MnRuLnV/znXGye9m9iPlMPrAv+BH/xfa4D8PM2+Qezz+ba4SL29WT6beZd6OX/AvL/AFl3dSTvt9rtdnxmfvERPt4rzDcao5v44t7oPZ93ePDzMbprs4+CztK8O298GZA4H3hWmLeV0UsjsDF6E9OuufeTuGr6+Vz+C7lvTY/X0+/n0o3yTgB5pqh/gfp5b/hr7VmBfHl/YY76eYch7y/k/aCx8rO/vRd+ivdb2/J3N2V+S29f5vyR3BXRT/zqwvyPRuLy0c97tqP0o9z3/RHenLdmvCverz9cv91Xu22rXN7/uYJdNKGHvLeW99WWs8+8m1lPft5ne1P//U77tcBX9str5X5LWQleCM9Mcg6T3w8/r+fdKDDr/2vA03IfWftn/zDv7mcfMfuH2XecJL+4/1gczzPOt8z9HfPGO3P/Qjrj5L38x2PxF+jl/f9xyk2Dv3P+fyD3Z7Vr3p9M3PSn0uXgX42v7ANk/d+W/R3DL47QDrkvNEf7552XmYkHQ/8W5TfwC02lc07WBd7O4NzCflPfnG9IV0wcGf2eAt/JYAcw+zNdykow934TT30GPB3Y13D8ZB23u/7xpH6TONpvtWf0U5d/yvwn86HMf3qwv7wrkHcG8r7AJ/Atpvfvd/k7vr700htsj/+8//uK/pr4j8R9ZP8n55c5t9w594WV25W9xa7vRvd89WPfn+cdAfnnyU/80v/6H5szy0rwWHii97wv/LbyK8BJ5M+7Fjl3zrsWU9RvkPHRfPEGdJbmvnHhPCXznbwDlve/NpKnnnQF9RN/8i28Pejt8MQbpr/KH5B4CnyuKKSjj5TPecoceBIPlPiguYXziDNyHzb7m/Tfg71HL5/F7ypfiT+6EJ4tpK9D/1Tzjp3BM3x/IO978M9ZZ+e9r9yTy3213GO7B/45eX+E/0ycXTf8rU/8HLs+P+1mvEgcVF12twG+7B+vUn8M++/GT+Qe4ke5b2M8XglWp6fD836Q9sm7kwvUy/uTOTd4Xrm8A5Tzg+f5j1fAcfxt4kv7lsBf97Vz/2WTdDv9P+vw4vo7+2l/oHuX9v8l/g29udppnvLL4S+ef2UcSz/PeJXxK/09/fwr7ZP73d/Qx9TEb8jPPd/cf51Of/smriT7U/xg1uMvOF+tbh7yfOF9/dzn7Eeu/egh9zvzzlb25xPv1Vj+MejtwE/vSY5B8Oc9wiuMW5vhM+8VXg7ff+A/gH0t4B868q838V9djTMt6ad7xlP+cVHuoWW/I/9P5nvebb1R/dYZL7PPKv9R9p848QvwM8Y+xSHyOxtPbwVfznuQiV8pjEt5D2dY9kvIOyHrAn7iKPq7Vn/dP/d5wNf5p7yHto5eXqGnd+EbhJ9m9FNf+pGc72dcoI+sc7K+ybth+T+EvBO4Hn9/Gh8ao79T3hMgb/G9wvi5+LdR9uOvzr05+Z+h/3XG68wPtWfeF/mQ/7oo75MmblB+5rUP5/6U/vRw4kcL91u+J1/uuSxktzXLSnBR3juH/9z0G/zl/4N6ZL6Kvz7wJ045938bKJ/9laPxmf2V0frrYH5kgHbK/kz2v98Es/+9Xv+6mr0+k/gJ+CehX4xHTpxy9kPu4f/iX3Jv8qbsf+a+A7s8mD4fx9/t+u89+umt0tmPnGj+OwkcCuZ+057Wn3kf9TH+O++dZ1xM3HDe28j8P+eTy8lzH3nHyl+lPY/I/lviy8g3uqwEKyUuR3pG3q+hl8ezf4Re3mnKu/25b1EOns3Vr8lueyif9wFnob/U+J+4ngflJ94n75tONc/MO6eJLyzu/4wv7APdEH9Hjvp5X0H/i/3O56dix0fAf5r2mWse/yI4kjz99O/NzQ8ukh4lv6Hy2Qf4h3T2A3vTT/aLbsffTexwQAmU6y7/Lum8b5t45zaJRzCOZl4aOtlvbA1/C/Xz/z2/GOezn7sQ/Rn0kv3UA/TDaom313+W5f5g9tOyf1WGf/D/ex9e/807epMTr5b5Bb3+O/4o90Hwn/8/bKle/v8w/4c4I/EVud9Ajhl537Bw3z334DN/OIlfyrvdJxbik9cn/kx+L/33PvTn0N+L4Cfs/UzlE/eQeJ/8P2TiH5Yav77P/X5y533JZ7TbZPiWsP/EXw1mbxmfx8I3AJ7uORfLO2D6V9Yvf5qv53+/uhnvGtBPzv9z7r9/zhfhX5P/L8L/DP2gDfnyfy1d8NuHfvP/LeV9vxisAv/s+G/+MO8sPoXPvN+X+/X5v7Xcs/9UOu8JZ93zr6yDs9+I3tDcX6av2+S/Ib0z/qrCl/juM9lHrxIod03+jxX93J/L+5S5R1ct51vSuS+V86OrtM8qcqd9tiVv2uf9shJ8nv/cDZ3L0d9Ve9+Nr1vYS97TyP89rYFva/Ity/yF/2rqe9r5H/Sf9wLzfv39xs956vfH3yW5d0eeNTk/or9zfD+Iv8o58F7wP0D+PXKOh35z+J9Cfy17SfxED+PlRvh76qe5B5K47uP4qWPBnG8Vz5/iJ7dmv6cW3n8fJn167kfkPhz4EJj/O869z/vwU45ck9HP/4Y0oPfE/8R/Lcr/Wqn/BP09p/776K2m55zX5Xwu8eT5f9bElef/WYvtk3ZZyz67sa9tct6V+Zf6XxTipzriM/FTF9N33gWbKv2CcoPhSzxA+JhJvvz/S/73Jf8Dczb5Bum/6d/70EcfdpT5ac4RM0/N/DTrz4wbaYfovys8ee+j+E7cZ/n/OnaY99820lfOlRL/8zx5nqXfFca9y9QfDO6Z9ZHxeAV4Cfg0fO8r9zQ+76enqux3qva/J+/MgP3lP8Decv8i9zFy/2IpfSV+a0fjeeK4XinE582CJ+dFD6iX/acGOcdL/KT6ecch7R/7m1j4/9a8U5Z3AvdWviK5cu79hPoT1J+d94XR/5N9VZBOvNpf/4eS+Hz+JPcPcx+xY/brykrwP/BvRe7D5Od/BfK/Nvl/gdyzL74PnXeM8k70hfrtauUaJ04Rv+3pJf8nstJ8YkHOx9FLfFwL+ZkP/fX/sfEP8Od/TIazp9zfyD5ZM3zuo/wy8D3ro6/U3wffLcC8j3ku+T9Q/lkw/+v7LP7z/2DD4Mv/hOX/wZrwJ3l/N+/x5v3dI+k9+yptpK9HP/cd8v553kPP++cTyV+DXS2kh7wfk/+tvBs8H8x7REv5q/wPZ/H/N7e3Pko8dzXj90PodM/+qvJ5ZyP/bzO1sC/+Qe7lFuaXmU9mfpn3LbNfkn3o/L/EjvIbFeZPn8jfnvzV8Z//d3sNnYPV/z+oVRM/eJx13Xf01+P7B/BQClFRpPnRMEooCZGRlRUKJWXkG5USWd/ITEpDhEppmJFIpZCdRCkkszSUUEKyMtLvnN/78XSO9znf9z/XuV/3uOZ93eu67/e8vUv9/6/lvgU4c5cCXL5fAe5TpwBH1C3Ae8FZ6n1QqwArlRTgj1UKcMcGBTiqfAEu3rMATy1bgM8cUIAv1i7AUvULoLl2Dti/AO/cqQAbb1eA7+xYgNMbFmBTdBwKHgP/msYF+FH1AnwePY3gOU/929H3STn8gNPI47oaBVhnnwKshf+p2l9EPhfWLMDZ2r+pUQG+h5+R8DXTbj3ybVQZlB6PjzHSE7W/GR9NtfsK+De5rFBvi/Rz8hvsXIAV5B+xVwGOa/hvuhvDt3537eFv7A4F+BA4hvz/xucy5StVUw+9JeR1S70CfF/6CnAd/f6wfQG+o1x1dP0J/z300Uj5dezofOlZlQqwk3LngZXwWZW9XV+hAPdQ78UmBXgz+7oFbMP+B5PHj9sW4HR0bpC+TTv37YZO8AV87ELPdeC9QPpjeBrCf8FWBdjS9z7SL4I14O2Cn5b0ELu/iP5WsMsu0t3o5wTy/gN8jfxO0v/OLSnA9mBPeKbrL9fT9+vkOBucpv12yr/M3sbRxyDtd0B/e7Ax+W0tf3v0jIb/WHReSf4v4+tw38/jLyayk1nSDysXf7Kt+reh8z/sc4t6peB/zPe56J9Krseyv2n02RX9e6h/OH0epP+eAc+Z8jdqbzN/VE75CvjtJ30fvX9CzqOlj8DvVfpT+m9v6dPpZyvl74f3V/QukO7GXhqqf6n07dI/q1+ZHl+vWIA34/9W/aE2va5H1x3sfz3+25F3DXJoL71Keh/11ijfVH4TfLdTri56GpDPaejdBR1t0Pkg/ofRS0NybaT8SO3/ovxW5HGeel20P4S8tpVfV/k/5D+ffg3OAs/FT+T1m/K7G09OZV9Ttkan8lO3KcBT0NHc+HIYWE7/PYh8J+FrJLqWs6cJ6k/U7hvon6H8g/hvWOnffB9Mzqcq/xn+v2YPreUPwc9e8M6Vjr+Of94F/wPBh9X/hv3vJl0J3dtrp6z637CHUvT+knoP4r+efn0ieb6Ov+HSg9G3Qvmd5I/S/pn4P5NdHMB/1cVvK/OXGehcv6v20DGNfFuT36nqNcJHI/59pO9PKLcr/CPp8wj66KD/LpU+Rfoa+BrvUYA/yS/R7vnyn5L+U/5K/PYnp7cyjzO+vEI+l/teSrlzyetr/nIluAL965XfFv03aa+59vpJn8MexvsePx///pb5x1p+/wf0rsHHIPlDwMHgfPI7izwyf2xCDhu1/ym/UDyuPQWOodcb1NtC37eiv6N6DaJvfCxWvwz72QZ8Ft23Zb7Gnn4nr3HS5dG/gvyWg/Fz52t/hn7zE/t8U35j9XdAz0Z6ORr+BehtRt4HgU3Br7Uzn30+qt4s9LVWP/OMvmDmI9XgrYO+O+lvKHh65pHmf+PBCeA38H/Cv5xBPi/iYz/yu1Z7r8nvj867ySfz08tKCjDz68xPS/PHZcBtwUP12z341brgXO33kT9Hf+gGnsAeFsmfid5N4OX4uVf/uVp7md/uAN6e9QU5LQLfQH8r9rc3e98L3IYdPEs+A/jFjAcP0+/tSSv/vvaPot8u6GoDztfeOnRdqX4v41VP8CD4zsDHO+x+f9+7o/MJ+AbDP0W7b/m+hn19x69s1u92os9jMo77foj6U+nvCPXHGx/GgWPBn/A1mD42o7c5+VbB79Psdz96nSW9UPvnGpdWs49V4DzlDwCPof+hsWf0Zn2xJ352kz6a/dZFTyfln9NOHfkj5JeybokcM3+pQd7vwpv+skA7HehtqH7bBXwNzLr3G/r+2Dqyjv7zJ/zT4P1NPyhDPj3p42hyuMj4WKdofTCZPk5kn7dk/YbujfjJ/GqK/GfJuww6VhfND+axr9n0Vkm5SfhZQm6vq/et9rfXv1aQ30rwYnQs0/65+Gjp+63o3T3+RXsf4O8G8t4sPZM8nwUvYYdN1P+RvfdQPuulpvIfkz6F/PtIn4z+B8n/QfV3pIc5+B1GLtXMK++S7qD8Bvo4jNye1X/W4fdS65/uYE9wX3JZq52/2MOb8G9gv53Y+wDfX1H+q8yP0NXa95Pp+1L5C8lzBrt+hPz+k/FBehH6T/e9O/lk3hz/mPn03fL3ND/4CX3N2MGV6OnIft/3fRV+VtHDLPKaDD7GH16B/vLSXfjH7aQby38cPZvA57T7Evy90LeE3jbHv2Ueot5++I//eBe/TfjXrdht5sN/xZ6Mx5eBl5DD2+pfVbSe/DTrNPkj8TUKfI09/Y7+TfCuVr8Weo9V/5n4Re3WRseB0g3l/97g3/RnPh/7jl23Jt/Y9/LSBXgkP96oTAGuxX8JuS2NXuH9jh29g95v8VFWf/uV/lqZfx4LHgMeqN3nwRnouRmsgf7ttH+09jtLf6HeU/rbruivAvZRvz1+u9rXi92M4T8qyz/Y98vY8UD98wP8Viff7vBP1T+y3ntD/mPoPA3/xxqfd2Nnr/NzzdlRG/TPlm4rnfnTnuxruXEj8//O8ldobxm4HvwTP2Xx8x67mMYP9aG/Tsrdq70t+s8L+J/H/5ZXvyL9tie/MujdCr+r8P+p/JvZa390d8l+Nfsa5PsY/P3pewP0fc2/9ETnXcqvlv8re62G3ugx+ruc/K4ml2vBhvQ1omj/sRk5ZL5alTyyj/q8fpR91Fn4naHeZ+S9hTw+NY/opfxt0jegsw75HgnfgpICbEd+8wug1P1gDzD7d1X5/T0y/pNH/Ovn7HUZuBR8T/77VQuwmvb21c6H7KQzedWUvln+Iehbhf5h2q0g/Tj+GpLHePw/gv6p+md3+E9Xvpv0+/S7RPou+cX73/do7xLwDf3/ppICfFP6OXqahe9NOZ+g3x2zHsRfmdgP/EfD20u6I/47sIuN/MhS9lGZPrdor4X2jiGf76XbsPv3lWsrnXH7oPh3/HfGR1P586T/A1/86S30ORd9Wd8clnVH9oeUf0z5KdrZjfwb09vfkT98Jyl3fgGUmgSO5w9yfpX98eyLrzI/Pon8LtbeGvycCM+R6PuV/exDvnuDJ2pvAPrnqV+On29Jn+nX3fmB9O+cL3RX/zvpjEM5v3jHuP2keVa/7D/Ln0ffM+O/yXE5/Bkf9jJ+3gXPz+oPwc8i9U80X38g81ztnyadddVb8JzBXu6Dp3L4NT7dyR+8Ypy/iD0MIYfoI/rpYnzuL/9ufJcmhzLg71nHw/ta5qf8RRv2PYD/fxLdA+l9Evril3ZnLzdo7yz5h0d+2t9OOy+QX2/0nud7Felb4e+Bv8xDboDnTfUPUu/G9Fd8Zf/uRvkL5Z8nvzf5V2ZXfbQfO/sV3RWN/x+Sw+/K1SDfPzMfhqeW+eFNmbfTXzn570ufjb+ztLuL/Ons7mz8Xan97Pu3BnuoP5a++pLTDeCi7L/it0VR/9w256f8a8avPfi3lepfj9472V8/5eaTX9ZTWV9lvdU761H7b6+yw2OUexIdu5tPvKLd0vKfRt/v/HXmFV3wcTX+69HX8eRXT35/7R2lvc7wnZP+Kv2H/nkQuLv+dbH6V8P7Knq+zTqMf5uCr2XqZxzKefZ+9HW7dPH5a1/4Hkf/9dJD4W1CHyfF7yuX/d+n+Mva/E4N5Wajvzp6N8b/S+e8rBv9L2RH3aWz7q+Kvxelr5PeIJ357Ar+sT08V+V8TntrjQMTrffGoiN+M/5yE34fyPkjfzVW/vuZb8o/zHi1yfc6+Mj6bTi8M9nFFHi7qX8pe3hPufPocX326fWnT9jZh+An2tkq+7f08Lf+8lL6KX+e9esW/vIydrI9/laR1wXmy7dl/coeaqH/Ff2rif6Vfe7MhztHL9o/Eh8j5B+D3lbqT0LfweodLp35T+almY9mvrqd9meTz6icTyu/W/ZZ+YdOsTvlqsp/KvZKX3XhX0U/C6W/Af9SPvPnOezuRbAXPL+g/xr2MB+9J/G3Z8L3Ef/SuQBKTQY/9v1H9ebqv8+go5z6v+fcBt4D9I++6I/8HkJvf3Ca/OH88yPoepqcu2V+pz/dCi5lf1kvNWe/3eTXIu+jc96T+Z9234xfwU/20zJfON349kb2u8j7Ce0Pw+8k6S7s9VB8f0/uOb+crb9vbRzorn9dDV9d42tt9DVLnBT8bfC3te+7KVdZfjt+76fsX0h/IH+m+VUXcAZYGv/38jej6bV2xsmc7+p/lcHLM0/U/kL2f4d2h4PZLx1JngPxOYU858PTTn96IPEUOZ8mv47SOytfir97nP4vIc8TlavBn5SVH38Y/3hI5uva36Tee75/Ti5VjE+fkOcO7OpJdGR9tSd82TfJPkr2Tw5kF4+zm+74ryl/ivYqqDdWO8+h73r4rwPfI9ff5A9SfpB2RoIL2fkV5PW77x18fxn+HsanbolbIa9Z0sfpb0vo8dqSAmyJjof44yfAhTm/I7/9cn4EbkdfLbT/MPyV6ech6Tvo4X32cb78nGduYn91jTddwDPQuQEdj5J3J/w+oJ2G6v/E/vfH923yT4D/Gn7pv+AT8hOPdB35T5DOuVk3+vxf8/529He3fjEc7ABPX/I7Ouso4+bDWafIz/wy88nML09nn5uMC4/yU+PBu8njO3r5HjyEHC9Ke/xCLXIqAYer/zD+LybPj9XLedNV/MOV4FPk8l/+ZbL2q7PTQeg/SfsdfH+F/M6RboS/qfR2dwGUmgPmfGo1//uh9Brtb4Pepuha7ftHmYfLH6L/zsv5i3ITi/arF6J3uHTiT25C70Z4htHzFek//GrixxJPdiX9/gx/Vf1mo/bXwT8y8yntdtVfT8j+p3J90Lcm8Zj4u0h7n9DX3uR8sPr70M9x6mc//VD5+5snHAAeGr+x/7/Lj9AvvsT31+gqjk9sBX9X9f/CV+I0qik3WT96kLz+zjrC9/nk90ZJAZ4S/qUzzxibc1713k6cgnSLzKvhXY7+cfT7G76rkON68uqM/p9iP/xYxu+P1N/JuLC/cocr10u5Gvr3j4mnRk/iQ/4Df4/sq0tXgL+F8SlxWIdLP6V+a+ll5HgZ/V0DHo+fE8Hl2nkw/pN/WZF5p/SExD/yx6/opy31h6nkWRn+xKv29n0t+T9MLg+CX5FHb/r9mPxmwLtRuW+004m/Opl8zpO+EX9LzFca4e9I+s06rpf+tUT58ehK/5iuXy8Fs79/B/zH8+fV8F89cdwZl4yb54PngZvU75j4NPS8RU73oCPr++OU/4B83ib/EfYXLsNfB/o4hD3dw680Vn9u+muR/cXufjcPif3d5ny3LrgYnfuibyi53MgvZd/tHPXba+8F+CtKP8V+FxqPfkHX5Kzr6H8O/Z+T/TN+oJlyif/8Ht5H8Z34kJ7sIfP9fvD0kH9o+g2+Okhfp3z2z79nfz+CF8K7Gt59yfNidpTzwZONu4enX6PvI/Z1esYl9S8wnj0E/2fOY8rBt7f50z7k+4D2ZsD3i/rtyK9S/C35d0fvDupfhe/En90vvzH8ie9dJL0TOn5Cf8bl9mDx+Jz40+wrX0P/beF/Cb2PKH8lfLskPkz9MtmXxse2+C2vf2d/chD/eIH2ry4pwLXKT8THadpfAF/84sX6w2b4EnebeNvE4x6n/v/yCxXlT9L+H+p/kH07+V/yj1+B4+U/gM6nybs5OtZnPY2+/Yr8Wvxczl8zP6yKvswPh6r/KH/0ND2MkR4E/3Ty6AF+CX9l9Zvzf88rv2fmZfh7Fv+r5P+YeE35u+D7afUyTrTB7wX8V+a93+NrR/rdnf+uDt5PXueT91r0Zn6U+VLmR9mfOUh+4kwTX3q4fa+26pXVnz+HP/tu/6zn1c/6exO9LFN/CTrHKD+Z3GNfie/eEf6d2XNlcDX4knLT6Ose9j1Wu4ep/5lx/w/y+4r+cz+rn/oD+LnB+K2ZdTC9bwX2oa8V8F+hXit6qid9C3kOIq+Z8A/OOhG9ZYwbPXKeCO6d+Fr29aXyo+HdmX9LePk74CLyrI/PxMllv/tc84fz0Rc/nv3A+PucP1bJ/Yn/MY/JfZNW9Pdx7qOoXyf+Jfwp35P8H80+XFEc2R3oy3lqzldz3rpL/ERJAY4DdzWfSD/sRy8TyC3x6zfBXxx/fFGR/8/5ytmJe9FO7n91LIBS88ApYOLkcq7dUvtzjF855z6Zf8r+/1nG+37oO8p85kiwvXlI18Rp575e/IP2P1Qf+6V6MJTF0p3ga2s8ag3W0W7unySeN/H9ifdPfH9n9taAXJrrP59qpzJ6rk1cMHo/Zr8bzZfvNI4lnuoL9d9Dx8/s5pS0S37LitbnF2l/R+33wlfuOZTR3jL0zwJ3Y69nGT96ql++pAAfQ9+O0lkfPqGfXZl5mvQ35JH4nZxb5Rxra/wkvmORfj6JnhPf8Wf2jaTXSA9Bdy96PZ4esj98jfzvyKNEve+lr9Desqz3cj5Bnreq3xRfzyr/TvRIXo3JJeet9XLeLf0evvr4/q70NPhyf3LXovjyxJs/Rh+Pg09nnVwUH36kfpT48MRTzEJv7jMm7rxG7ifCv13u4+V8hX6PJ5/HEy/K/qeSxxLrnd7GtU+l90DnT+T3jXbrGkf2S/xSSQE+Si6r0bkP/LPp81h2lbid1L+lAP6J36nIDppqZ0HiS8Buuc+lnZOkG8q/GZ25/7Ub/FWzL2kcmJ94af62S+JGpN+R/6V2v4TnNv12a/S1RW/m8cXz9zXaeynxicbLG9A5wbl1W/gmWk/dr/3ca835aPH91tyny/263Lera/ztnX4M/3fozHlvzmXewNda9K1kH7m/s0PObzMfId/L2XUl7WZ+uUR6ALk9kHuN0t8lXpa/fZCcL/N9ScZv840R9NeTPV6P7gbqr9FfH4c/88vcX8x9xbroqo2/S9ltN3AQf34l/bSCb3H2DdEzF33/zT62drOOjX/YRf4U/SFx0A3Rtxv6/yTnv+hlg/zE4+f+Y84Tcv/xXvQUx2Fmf6wme0hcceI+TkPH7ujL+uxBfi7rs+H8e/ncO8s5N37uLMFn1reZV6G/OD46582Jk/6CPa8EV4AfJQ6QP8o8P/P7zvRXmb+sAi7Rf+rLzz30Geh5Vzvb6Z/noecCfPwG76/KNyw6N8h5QvbHEn97d+6L5n4neZ6uP50BbqveF+Bq+ptAD/tnPo/+0ej5VntH0c/t6F9S5K/jv8uHf3Y1Rfu/6Ecr2Ecl+tmT/Y/KeYj8nI/kXGQsOnI+MrAASp3I/r6Xfg/dJ+h/3yY+lZx+IN/PtP9T4ljo52L5RyT+S35v5bui41f20pdf2SR9vPrZb8v+W/bjKpJPffgeznkn/T4uvT/7GJd5HvzZhx6u/XX84qdZfzf4d7n0xwpF8VHtySXjdvH8ZSy/PTT3kuirLHm8xK5Ks4vp5qtNcx6Hnl/533nSNaNX+HKPrpF6iU8eqt3B4FR0PpD9itwn8v0AcLj6G8l7HTl8AGZ8m6P8gUXnyzlvvjD7IWBHeCfIz3r8qJIC7EEeWa/flPPpxHOr/5R09hM36Cd1tNsRfdnvbwC2AO9A92j9/37wT/0v/WYBeY6mr4GxQ/33f81LJinXHn3X5j68eUqNovjWStlXy/wH/4/j6xTt5B2Zr7JuyPwIfa9Iv6X9zIt2gCdxM3Plb8+uvsPHYfxZ5vk5t/gaHYkjzflF8fwu87pG2d8xP6qO3tt9/1z/6S9dTf5C9/mXym/MPkbov6+lv+ccAd7i+/XZ7xxM3w/hJ/dr31Y+5+oZ14vP15/n/+byj+vtX2R/b2d+N/HvjeHvm/g8dOwp/2Lzhab4G4/+ijn3Qc8z9H+w8ruDS9E3gv624V9+yLkfPZ9SFB+/FPwMTJz8Xonfoc/Ed52kfintJi7jltyfRn/ON7MPk/PN7MfkXsiu8ovvh3R1ftJAv9sCz/3k1hN/9ye+i384N/M//H5Ff5XhqUB/7ew/DTa+DJF+Hcx+YQd+N+fGz+JvX/KqrVwL66+/c49Ov897DzXQnftpOV8th87+ReetVdTrDt9A3x8jn7Lk8xY7W67+c+h8Gv492NEO5PI9OEC/HaEfjwTXy++CrnX4STzHiqyf8Zt7A42K7hNUks58vpN2Xsx7IPRdXv/NPC3zs0XouZB+GqA3+xYt1DsiMPObnG+YN7YDa/Jfzyv3Wc7B8Xso+Yb/T/SrZ5S/HP6M38PQuwNYj518qp3i+Onu+u857PEafvUT5a+V/oh9fsOfnJ44JXwkfr8n//w6Pq5F3/55P4FdbAvmfGW+/LxHk/dpNqMj79PsnPV30Tx5tPrPFNlX7C329ZL9wM38di10f5T3ufTXi+FbX7T/k7jclxPXC89k+O/T/zaw+5ba/1j+Wv75A3LPPaEzwC8LoNRIMPfGz2B/4xJHn/0986RVOY9g37Nzbq7dvXL/oMg+Xy0pwMXaH5x1RuILtLdB+9ugO/G3ice9Rfvti+I+8v7UQPLLft+l6rWXvh+dFbSb89fLss+deAz09EDfpWDib7sV3b/qKh35Xq8/9AUH594M+k/lv2MXfRMPon+00/8e4l8Ww5v3rfY3/rdlJ73iV9B/BHuqDSb+NPGoue9XXbr4/ubB+ttX/NCoxAnQ30p4V6J3N+NUK/kHkseykgK8EP7f0TeOXPbMvER/WKf+3ewt95Hvks7+c+SV/hR5/iH9NrzzwLfAxEGOgv9t+Ptrfwt+TpJ/uHHmsLwnofzD/EMVfirvS+Vculf2q8F/zp1zPy5xXTmvzTiE//v06+J5/RvKX8Vec49ojfRaePbNuyTqV6KfnMcOTnwJvkux98SffMdvPQsexJ/9rf3s1xS/X5X3Furz51Xp4zl0Po6/2VnPJZ5Z/b20twJdeXfhHf21tPpPqp/7DJOkH4Wvu/7eFUyc0jbsvYLyOcfOufVf9N/VfksdcIb5ei3yr0AefYw7c6Qvlf954oPQV0n7LbWf+9qJz0i8RuIzjqev08ijlvJD8d+xpAA7BdJLDeUP0F9/MS5txH8Z9Teh+0b8H8Wep8FfG/4b+e/rwLzn0pJ/KL63mfPJxJclnizrzaH0k/jd5+gndpp1RuKOcr+wPPpzv/AU9O2tXPbpGvCvzdhfW/Vf0L/+C395/SPvV96s/eui/6L47sR7J767CX7bwHd83k+Rznoh64f+iS/N+038Ru7PbQX/6/C/VAp//Fru6+b+xcbM77Ney3sA2s/7g1l/ZD2S9cc6/uVbcC34DftYYv7WP/Pn7BuRZ/bfc576HvqGqN8SfQ1LCrARWBF/PbX/KjoPNB97Ivc/+dtp7C7zstdyn5r9rQHH4HNhzgf4jyHan8k/LqC/e4xPuQ+bc6BS2r8V/tK5R51zY/zX19+3KP+H+ldkPMy9HenNyiX+sjS9ziGnrFPjf06hj9xP2yvzBXQ8EruEJ3Hqg/E3BP0Zh+bKz/gT/9BLv4yfiH84KvPPxJskvjXvM+ZeMvi29tvlvnbxehWfFbI+z/mfcv1yfwCcHnrJI++YJj75hcwb6f1d9Xorn3ulubece6W/4WMMudxuftQZfCRxyCUFeBA8zaQvUD9xncvh74G/AegbpL0vwgd6Yl/ljD9DrU+uYecPJV6Yv5mo/iz66oafrJv68HNv5V0w+Dfpt4tzrlju3/RkX3gYunN/fTb+jsv7P+jNva0liQ/Q79r6nrjbz+QP498S99OInYxRPuvZa5S7gD/Iexq75l619JnSuX+auJ1hic8gt5wvHai/V45/BI+jr9Lkuav28p5Tzheb6Q+/kNcp6Mz8bDb5vEqva5XL+wYXJJ4662ryKg3fufTSEbzCeDkLPz/zh4kTG02OiQ9bbD6SuLWB5ikTyDfvG+Q9g+xTfC79pvl23yL5Tk38JHqjv2Pxkfito3K/Xbt5Z+8S5f+rfln1tmQ/Ned96t0dv0r/GVdbmhdcDl4G1s+8QH9Zpr07Ms9ivx3hy724DtKfKp/9rexrZZ9rJv1lPvag8pFjC3y2UK8c+s9WfiT+X9deV/3768yflH9e+Rukt8r9HXjyLkJT6ZwP5P5bH/Y3saQA7+fvuyj/jPnOkfS6IfddtVON3d6on1SXPkz+Nsafdug/hHzL536U9cN442M9ePLe7XT9O+/PjraefUs653XXJw616PzuZvO7/uQ4AHxX+chjMjlWoedncj+cPR3Nbo4By6Ovpv4evxk/+o//lL4v8efSz+W9usxvct828sn7ZOj7SL9OXFHeB9qafioqV3z+fzZ62/IjX2W+RT4v+p53mUqK4kPK0+uhvu+Y90Dl597Ednl3g34uwv8+9L598hM/KP9A9Hwjv75+0ZV9Llc/7+LlfYWr1F9MnqXRc5P+uX3259hfK3awK3w7KT+ffheAeRcy8T8/+t7SPG0weBN5vUt+C8EF4O7wvMm/TSDv3Ot+qSg+/kz5zdnD8sRBZP2hvUekV5PXHtJ5Xzvvn+U9tAbkkfj7M7Ivrv0XCuCfOMd7wc/4gTI5b0u/IMd98dE86xnpCVk/SMefxr+O0U7PxMdmn9/34vFmrn2Diomv015Z9auZHx2S/WB85n2kX/i3EfzMyeqvVK61/pO43cwHEr9bHF+euPLcP+zNPyUe8rrUp9+G5gf7gluMr3kv5VP+PPFB5XNfNfF64LHk+QP5fIS+07RbVb97Kv6SHa+1fjkp72joT5k/d+e/Es+YOMeeud+Y86vEs2j3bPm7ovcY7VaRvlu5xBfVMW7kffS8I3wY+6yLj/pg9uf642u37P8nTir7o76fkPMa8hmuP90gPUS573J+gv4b2PPgvFsH5t2PvB/cOO8gsJO8H5z7gXmXL/cEcz8w7yrm3OrzxB9L57zn7tybZfe5HzXR/CxxdRcnvpT+X2Gf03x/Vfo09rIN+7oDn4mTOU37uXef+/ar4M//B5zNPibxMzXh+UC5Xuz5dfJ4Fb15X6ZG5rv8Zta7WeemP+c+4yvy079vJ7/EqR4IJk71BPRNRN+x0lmnnQ/PNomXxO8V+PuCXOKnJu777/yn+Y9d6TP3fHO/N/P76ewy+7CZ308in37gXPLJeVD2TbOfWrx/OkD/yTtguX/6fPZjiv4vo/j8Ivclc3+ygXqZv84vmp+2oa/cD819hdyvyn2rz7R/Cfl1BbuB/ch9jv6ceIUN8B2b+ArynI6+KtJ7ye+D/3Xkmv/xyPu87yUuXf4G+p8jXYk//Ah/S+Hvnnhy9c/KPRbzhZrqf5z5BDru095euYdXNJ8Yiv+8s9XE98RL/YC+o3N/puj+4y78Xd5xyP8eZD6c+XH+/yHvjzwpP++Q5P2RxMWm3+c9obzPOZi8TwWHgO8kDob+FpPD+vhn9NbWXovs/yauSfsvZ1wip+HSOX/Ke1N9cq8n8VCJb7cu+EA/yfs//bJfknkhfPnfkWrZ34E375O8SB4fSx+rX7aFZ53+2TnnTOSbcWMluBM+Z+In900Tr5v9pvx/VP43Kv8DMBp/iT/K/1Yl/ij/XzXceJr3T8/Sv/N/Ly3l5z2LvHcxIPE78bO5F62d3J/oS55f46u4f8wvKcC9ct/Z+u7X+BH28qlxs3fik+GJv52p/GD+NP51KflspXzx+0ZzjLfZh/o1cey5/43f4dovC/+pWX8Yv2uCeQdvHPvLOFJT/dyDmK3+kwVQqhP4NngJe+xgXvAh+fTHz5PoH8m+T8PHbH7kFHTkPee879yEHRyMnk7684nay7sOQ9E/h78prX6v+B/2sxO77l5SgBWkd845tPYvgG80/gblfUX9PvrJOdq43E/Tbt5Pzv2tvJ+ceWnm2ZmXZn7dgNzqqZ//K8r/FI3Wb6qrl3OD/8L/Bblm/t2C/D9XLu9TZz6Zc+CH5d/K3m4Bbwan43+C/nZ7/Lh0a/T9oHzuDW+r3fw/0LvklzjPP9hD4j03R76+537nCvnZp72WvPbI+jzv5yWuHzxEfnX9o772O4rHOhme49B3uX5xJP0M9b2r+gdbX23WfhV8NEz8rXRJ9jOkX5A+hz12CMz8Ej+Jy+xL/xtyD0S5yXn/CF/d+I8t8Jc2XucdwuwjTia/43zPu86DSwow7z0vos8l2n8QPbeiZzq7uZFd5n9s8j5H1vNZ3+e8Luv74v9PKz6PGKw/3qkfDgN/TnxB0X2szvRUSftZN9VLXGPR/bpHivYPsp9wI7qvk34h963Vz/lq8f9J5H8m7mQfh5hfNgcPBWM/rfm7ifioxd8tg+8O7fWi98eUWy6/+D2EvJOQ/b1RJQUY/5/xIP6/Fb01w1d95ZvR70T9YgG/sZP+0Ab+xMWOyjvh6N2HfHPeehw7yrvfh8Of86qbMr6xr4bZX8i76rEzdOb/Oq5k773Bkew55+T75/8XweL/Xyw+f8m9kZzDLJbOuUvxeUzeN9w961x4877hpfi+iLxmom9v7RXvf+cdmsQrPCN/bO7FoL83PE3I/Q0w5005X7ok8dPo3D7rDeUWJN5c+kbzlMTfj8NX3kOvhP6r0Z+48AXq5/3QvCea/8XJ/dncp8392SX2r/ayrs07in/pv7PMN/PuYlnz0c3yE/+eePfEvyf+fHVJAdYG40fvSDww/7gzmHdvmyq3g+9t9b8Z/NEYfOU+Ru5pzIYn7w3dR3/5f5qM54+x/8vY0870MlB7teWvNz73ME/onjhs5fLeb97//dD33Ef9T979S9wKOeb/gZ5JvDi7uh+dT+e+qPbL0eed/McX8t8llz7qjTEePorP4vd/8+7v2+AV7HJh9tek6+V8h9/J/37l/mDu51wPf/28o6ydvDs1TL9oj+63wOPII3rM/6LlfeU98Zf3RnIfJ+eAue92Lf+YfcDq0rlPnXO5O7NOopf8v0u3kgKsUDQPnQzPFPZ+If1sjY667CPvprRJvF/eByCvv8zD8+7PC/r7PspfSH7x10vhfzn/n8rfN8HHjNwzVD73q0rn/J69TU78gfnnpca1csar/H/tavrYX/t/sZc95G/P3vOOevH76Tkfy7p/kXT2A15XL+/I515QX/V3wM+r6H9Uepz84vOz3IMbRb4f8odXwH8weQ5IPIX2co6Re+yjyD/7YlPB7Jdln2xs/m9Xe8u0k/9HnAtvzo9Xxj6zfsi4jb99pLtK5/3pUrl/RG45/19FHyuVfyDzhazD6e1b/utl5e5Uf0Lez827dfrTDeh7oii+MPGGR8vvxW4SP5tzvAvJ70ft597ZT/g4jv1urd73YN65WoO+1vRzBr/SKuMg/B3yfhG8P8Kb/d9V+X8x8EuwDX4eg7dD7tOWFGD2b59mP6P5qeJ4o4H0NRishd6b6alh1X/j+b3+v/GdQ+634Ptr6btyHwg9XcBO6Mj7fDk/3Dnx+9ZzOU+8MHJX/szcXyGfI/mbSr7n/5Fyf2gY//A+P9OeXvL/XIclPhhskfNpeDOfyvyqm/lWxqffCqAUsf3zPsy16g8kj9znGECuiZ8vvm++U+Yx4LY5x4idJZ5dft47qwBWArvDXy331XL/X/2LEudpPDmQnO6xXnjV97q+d1E++1mJj3xW/x1NXxtyLpL3geh7ve8j8Znz41bsK+9yTAZ7obul/lmJXx6q/gjt38Zecv5ZQf4x8YN5rybn/+zlmsTHoLtizhO3/zd/4+HP/fR50ifEjxXFayd+O+9n5Lw35785D24t/0Xz08S//0w/Z9FvM+PrQeBCMP9/2hp/x7DTZuwt8fP/y2+Mgr96/q+H3jeD+2Z+S74VyaUifibI/z950gpgeJx13Xf4z9X/P/B3Q8iulAa9m0i29NGOJu1FkyIZJdLS/lRGSWVmJLOoNLRFhaZChKIt0ZCKtBR9r+v3ut0/1/V5Xb/P65/HdZ7nnMc6j/M463HOa5c9S/7f75D9C/CYWgU4+IACHLR7AVauW4DVlfvpwAJ8orJytQuwUpUCvE35y5Uf1KAAt1GvSaMCfLxGAT5TWoCPSv+F/tnlCnAMvJ0bF+CUJgVYA90q9Qtw074FuLBhAa7brwB7q1cZH39KN9i5AO/AZyPpgfB1x8fl4Dj4y8v/cacCPAd8s1IBbo+vi+j3bnp9ZR/81yvAiuj9DF8vfHTA3yz0Wvnel/4m0N/KsgX4JfgVuFL+JfgaSQ8vqH8C/VSrU4CfgLuWL8AR6L+iHffC7wv4qAv/RPSugb8UnlfpeatqBbhAflvfnwLn0dM7FQtwO/T6at/7CqDkeHo8ATxd/bY1C/BssD/53qLPCmUK8CpwxrYFOIY8J+1VgCeDbcBl6r/F7majtz85OpH/0O0L8Bvfm0v/pH4D8oyi7w3KXaf+ffpPJ9/vl/5T/T32LsAh0tfR1730s3CPAnxS/QfpoSc9LK9egCvA5bsV4DR83ajeXO06B52R+LtNf2yC/xnot5d/uPo7yF+hn4ySv5d0I/p7X/2Z0keRr5vvw6Qra5/ZBVByB3iUejXg36g/9SbPy/gZTT8ns8dnYlf6U3t8naa9K5F/wi4FWI39v1pagNH7I/BF/9eodyL8vdhL7L85fNtqp4bkmwZ/Xd93Iu8aeqwC/+3oTpe/SX439c9ib5v1w3n60e3k2wP+OuT4lR0cwz629n05OSpI9ydPJf13W/Rn0t9V7ORu/aoFOFP/uhPf525TgI+Bn2xdgH3ldw8+/I5FN/I/wT8+CU4DP6WHbZV/Bp74qe3Zx64l+OAH/5SeQt6u6sWvjaeXM8l3OQQ/aPd57Gud/Ce3K8BH0KuE/kLt85D+3BKfg8ldW/3L1K8q/0/4W8q/S3veA1aSPyX2W+S/TwcXxb8aP2vB30e6CTk3pb2kp0hvTb9ryP9QaQE+CB5J3jO1xyJ8nSFdA76avu9DnhHwPYO/IVULsCm+moGN8ftjAZS8D09X3zvQc03+6XfttxDeM9nPn8azEnp/E9xJ+/xDXwvpM/b4lPyF6PVA7358lJHfzLg+W34D/bsL+avxT2XTPsrfKn+B8ex59R+GfyT9P4H9v0DduaS5/BfprzP7niFdiz7GVijALfCOMT9ppz0+g6+M8hOlm8H/MIIT+Y2dlHtB/cPJVY6eWpD3N/ZR33jUQzv1Ao9Wfrz2+AaeJ+HfDf3bSgvwbfRPY1+XqbcAvnnsqjk/1Aa+KvKnxX7gi53M0F5blK8kf6X22Uu9XtIfodsm47H+vV/GF/lT4P+3/ON3KMCa2vk59U/csQA/RWfPtDv9jdEfP2CX5fAR/1It8zXlx8JXXX4H431D/DVDpwo6GY+fwc8E+TXx30B7nK5/zFTvAvQ2oP8zuB6cnvEU/qPVX0HPmcefa9x6if3+C//TlJuOnxJyrzeetsLfIHTuwtc1xt8a8B+B7mXwbko7yn/d+Bn/sYj/qU8fH9H7THjOJU8D9Duyx6PTf6yXWsT/6Y/LyVlX+nHlv2N/F7CLj9nx6+q3Im8t/WiI71+DxfP7i9hb5vlvlBbgbPOcp/mbfWLf+Nhaurf+Pod8bYzbd5BzlPQe9HEOf3Y2uAu9fUC/rfE1KvJkfJf/gPQC8g+l7w3oP0g/nZSbDS7V3nONnw20Wx3tMw6+O+mzMz7ukH4D/se11/GlBXiq+hvhr6y9XtyqALuxy+ez/jEun4heR3q5yvgzFt0H6LlUuRngz76vg3ca+ivgb8du3ybfC+jdpNwm9vs9/WZ9cQv5FtHPAv2iPXqb8Xkzfa+j13vg3SH9U7oW/H2UHyZ9BHoX+n4IPBn/LvL9ReV6kPNIdtKIXV4rfYNy8zI/4vd7wLeW/f5JPz3J05Q+L4D/YPofRH8nKzeDvnaln73I9zd9DJU+H/6GxrMu+HpSfjX0/mAfj/jeB2yO/gD95i5we/ytot/tgo/ebqev8/Fztfwt4EJyXKR+9j3eJk/2P1ZLV2UvVcDK4G/s+4yi+dt1+Mj87SP03la+Pv6vId8/6H2B3zH43A/9PvBOhvd59thJ/tnG5x3Q+VD7DiPX11lfwV9Duo/2qQvvO/j4Ed719HO1/Prq36pc+uuL/N1GfGYedgU8Z/F3C8E51i+blIv9X0Uv6Qex/7H886f4vo09Tsy8XXt8KH8rfJ6g/iHwbybHQPh/UO5x87kd4VtP/wdprx7KXy3/ft+H0c8z7Pci67yl0mfJf8y4Ndo8sjV+P0H/AHjvo4/G+K2N/6H86z3ybyfnO9KX8Wtngh+h3xz+9I922nuR/F3x9zZ638LXSv8+W/lP8F+adYj2WKd939KePbXvzmDWY2ONu6/yQ9lfmUC+ruy5HT4H4OMM/aM+/zGUPGul+6ec8f0y9OYVQEkT8v2gXUbgtwM6b2jHt+D5IPtF8Byj/tPk/he9l1HudvWbm69l3283MOvJDdr9TfOKUvKupt9vjfub8fGs9Az4n8XPJfi/Dj/t8TdVe00BHwF3Q//70gLcl76zn5v922n0t4ZcZY0nLeQfLv9gentU+nf5J5Br++x/6J8PwfcAfM+r/xTYi/zp/7fpZ/2180HavxN6e2R+L/96+mhqftOQ32sm3YA+1+NnH3Z8H75nw78rfS3B11v0fp78TfB9QL4f2HFX/N/ve3XyHih9ofo3sPdu4IWl5MHfRu3UUfs8Ts6V+OjM3u+FtxM69dDfWX+81Pf7lDtQfm1+oQO/k/F2Kfqz2Odz9FQ/+9T0O4deetJ7K/w8Cf+95oNt6ek+6THyT9Kur8Ozjj2cAv9idPvpN/3B68gxzvj6EHi6+j/T24/WhYu171JwK+18emkBHoqPlvR7DX0X72usU/4u+RcbXzep96X1YEf8V8RvBbASmPX5JfDWo79l8GR/u438E8hbW7t3AYdYv/6oXNqjovwJ5P1GugI8z5J/OblfLbK3TuQ7nT3fhK9B7DT7K3PU/wf/69WfFf3JP9L3asarV5RfSX9t8b0e/uj3IPxmvyrzoVvUb8u/nMCP/5v/HILeGWDz+K/sy7O/7Ev0yvqfHrI/MVz/WZ51lfKr6fNS/LZQbzD7G4BeX/o/S/54/e0o+XPoo0R+NX7q/Ph34+co8q7LPFv9P/Tbf2ufrGPKFM3f/8T3JeRcQp426K8mx9XgMPiu1n+qFJ0rXJ7+zT4WyC8DrlXuIP3hdP2/ufTjOVfkb6qCj+I3+2+34a8vOguzTuA/z5Sen/0X7bUG/br80aPWlzXAmvBfWVqA3cHvM48p2l+9QDsepx1aq5/xKeuyA4v2J08yXk8lV/aJx9PfQna7dea78GcfZZX6ldQ7in3U1n8zH12gfauj/2jm5/BtYS9DlJ9Mf5fh63j0sw+fcXCK/b4zlbsFnpy3HYb/X+hhGHoPkO+K7E+Cr2ffX/ss4Q+Xgg+jc6n84vlq5rGz8bctfqdm30b91+Tvg+780gLcW/pI+PoWQMkMMPO/zBdfhm+UcbANuR4F57K3Y6wTrgKnpj3Y73p+7ljjX9Z5D6LzKfgJOAn/w6W34PdU+vhY/p70Vgo+Cu+x2vMi37O/8Dh8G9UfhN/PtMs90geyj6z3c26Tc5yc31TVL3aQvlj+L+wj53k5X20tP+d7bdhPF368cc6ptH9L9v+nfvxL5s34P0m9d7TbRPO17ZT7M3EV2usv+p+v/mT9pS/7/dl69VXlB2u/Vfjux37K4jP+tRs6XYv8a2vlMq68ov2yPnobvuwDfC/9Jf7PNp5dys7aSj+oPdJ/02+vIF/iHfqYH4/iN15J/8LPxfj9Gb8P0+OFsZfSAozfGBh/I38c/efc5hTpnOd0pd8axsV/zNM+YB89lV+j/mzzvXlZP9NHVe3/tXLvyP+YfX+adRWY/YsXzI/24cf6ge0jr3El64M58N9Ef7/pt2uzrsHP1vRdl1z9yLso8Qg5/6XvneDblb3vnv039buCnyWuBf8XGi/PA88F68tvwN6zvzQeX4MTB8Jucl58GD6fyP4SvR7qe85XphWd72X+m3nZq/Sf/dmsK7M/m/2fi7T3cHwPBVfA11j9P80zGmX/Ff4XyZP54hx+uJP8k6Ub0udkemiQ+vT9OL7vzj6c/Bro3qSd1qJzlPKnKP+d75kXnSp/uv2MzM8eynk3/T+a/Sp2cVDmCfSznX3jcmBZ8GP1xtHXYwVQ0pSdVkKvPP94Dr7ezL4p+jvQ3xSwPbw1ivb/s++/oGj//wV4zyZvW3h+zv4JfnZTb13W2fJrKz9W/eszb4c/+sq68uXsYypfR7+4tbQAv9UPE9+1TvtNxedw/nV3/eNX/X1ffNwefbDv4413a7X/CdJ34nM38mQf+zp8Z//6W/a6Qf59+stp5KiqPXfA74PkPYW97obuPug1Rv8A8v/Afz2ObmvytKTfiuyvGzhNuVbyBxvP7gN3z7pV+2/L3/5Legv+SuD5HD+ZV+xUNL/YrPx0fqSz73Pp9wD6mKrcJHQqpf/yTx+Ch4Hd6fMn87314I+B+Lgs+8PKH4N+XfpN/8359wp83E8Pt7D/W8HOyp2C/wb8y9sZ/6SfQqcn/bSS/6r0K/H36N+ZuBnjXeK56mv/eelviTuhn8TXvMy/Js4m8TXX6R+JLzuDv1jM/rYyvuWcbIr2XoC/dfj5AZyRuL/sL2i/ifJfkb6b/T+WOB31uqPzrvSnpQX4GbgEPI+cT+E757NPqJ/4qR2NH69ol0n0vIF8h8BXS/0S9bvgr1T9x3z/A54x+D6evnKu1zRxB4l/S7xl4grYT/ZHHtH/+6h3Kzz7JX7Q/LHUPGIuvm9Wvgx9bgfel/0++Y/gvxS9mepnfyLnS23B3/TznDO1MP69ln4uPVf91ebvWVc1z/yO/U3gv5qQ63J4zsu5GLtcLf1l4mDYT/x5/Htv+nsL/cP463/lXI/dNKP/60oL8GR++HrpXTKfoa/h7GmKcvfi53P0El83IusfdA7U/h+GT+mZ5F+nA/4I/hRIvo70PSTxofIfR687vS7H79foNCdfa/15Mb/RMft9+BvNr2afcCN6reVvrf0+0Y8qwrMT+0tcR+I5dk1cBP770c8T+H0r/Ur9xOesMu4kTifxOXXwv3vGJe05HP6K7G1O4g+Ub5z+Y3zbg3wd4ClHPxn/FtFDxsGMf3fCV/F/jH+/0c/n5Kijvw5Cv772STzDR5nvka+n+cY/5v2bwUPoszb7fxeslXEGnEGe3YKXnF9lPzLx674/zV//jZ867DF2mviB2Otj8M/3/Q7pevKHkrdczmHAgfBPxucvyp+Hzxvwl3j8vvX+m//E5ye+p7N2T3xP2axP6L8h2Bisjd7f5E38UuKZbqPf1fBdmPsC1r+Jn9zAH20hZ+bBN6s/W/kX4Z2VOHzt359e++dehnnADvj/OvMd5b/JPrf0l/rb1+AX4NzMl/D/Gv++P36ybzBKeyQ+upb0T/RzUvpJ+CXf3vrntdkPAUfLX5v4kNICvDDrMvmJ39yH3PuCX2mPdlkvFc13Mv+Jvz+NvnKvIPcNVkqXk38RfMdlviNdnV660Vvur1THX879c+6X8//jtX/2uxOvk3ie7H/fx96yD5o47PflT835L3670/9X0ifzt1lX1cs8gn2NYf/j4a2W+VTkLy3A5/mvs5Wbip+q5Llc/s2+vwl/9imjl+L7Potzr0C5K7IeJt88/mp//LSi12PAoYnfpafZ9DiJ3o+DrwtYuWi/ryx7GWTci5+bmfPdovizu6VXk2cf+mobu5Z+Vvnd6bdrzoX1n5y/jmQ3/0avIzyV6OdD9nGW78ukn8k9Hfo5Lvc6lKtcdP8o941y/+h140sJe3tD+UX8UF/0X2Nfr4KJR39a+4xD7+HMT6xnj4PvZv7pAeVWSP/A/iuRpzLYWr1a+Lsy+wi+v0r/8+nvltwXSzwbeeI/u5m3FsfB5/7SOfhJXMQO/EizA/7/+b/gJ/ETB7GfWfInsOd71F9I788r357cv0nvT+6OOf/O+RH50v5f0OuyInsor3+vlL5Eenr2P7XnY+Cj4Am5/+Q8qYf5997kGZp7XOb/21qn9aaPyfCPN7/JPaacs+R85Q36byF/rnTmaYlXShzTsfRWXfslPvwx7dajKD58fQGUXIXuMvIdzT5v0P/6wLsRv0Ppf7T2WQN/xt9zc56kfsaDz9GZlHhqfqWafpY4+sTPN8l5J/oLtE/uX+VeVrsD/vv7zvT3FP28j357fB6Nv5P1x8/JcSg7+RSenD/2164DjWeHZB7A7yU+bIN04gYzDzs98zX8lGqf0+jn0ozL0uXx/2Du9aH3HH0Mxd8Q+J7MeWPiptRPfMJd6CdOIfEJz+L7V3gewfdKsF9pAWZ/pa909le+9X0f+H+jvwnso5vyuR+Q+wI7kOdV6W/1n6b4T3zMqgIo2QBajpYcmHMv7bOX8XOR9jkPX8/lPITd/ASOxm/LrJ/MX5/L/RX8LeLvu2qX96XHqP9k0X2ex82/XyT/DaUFeCM4lrxbZX889qkdEsd7GfqJi6mr/qTsS2d9qH8vVi/r/y7wX5k4O3AP9N7U/wawp+cT78j/X0meSfrlTPy9kHMT7ZP1QNYHZ8hP/PAn+ve+4AqwXu450Md54Plg1k9/Zb8u8SnG0WvJv0B7/6D93y/axzsR/+X4tbW+x3+1g39T/FL2p8mX8/yc7+e8P/cLcz8393JzT7e9/jGIv18Nfg2WI/9k40LmcZOkM5/7X3Gx26B/jPx+4BLlqib+Qftk3zv74Ltpn6N1qDOlcx+kN/knkn+RdXDOBy7A313G08n642Tfz0D/Evppb5wcDT4D7qfff0vuavSQeLIS/Sn9rLh/PZTzfnItJ0/vxCHo/7kX14Y8uS+XffGq6hfvjz+S/Wsw8Xs30VfiY59X/wLzn0Nz/zb3lcBm+DhMfuKOEofUGP7Mn25m1zeBG+lpYubR9g9WsqtV4C34mpi4aPw2if1o3+OUqxV/zI4ynqyi9+/AqWBT/P5DnuO047HgqqyzpauznxvwOx/dFvzXWeT6Av+DEueo/tPk+FJ6h6yH+au+4Aj9PfekW/HrR4PV+fHcx7xB+19Ev5/nfIuepqG7RPo6dtuS/vopP5s9PYP/99jnvvjIvdku6B+W9TB5Lsg9LPWnaq8F+k/OtYYVnW9NZc+1SgvwD/4z9wfjR7O/Ms18J/fDrsbPYPb0Cj6q4m8We94K3i3SY5R7X79oya9fys5XZ35Pf7m/kDi+uuy/PPu/1DjerGi/qRd548d7SsePL5G+27xjIPgXPubKH5n7ovh+jP9tBG9r9Dqpd0j2D+HLPOcX6cx3DmPXk/DfSzrzh8SLxd8knizxY7/h73V8TESnS+JXlT8Cvbbs/Fn1B2qPxP+t1o8+Qa+i9fQK9Yerv1z9xKM3Qm9ixn/23VN7lCFH7vl/ljhA/WeU/tOJ/d6Jn53Nl3ZP/BQ5E29Tn7+uQv8P5B4F+u2MLznHq60/5PyuPnx7Jv7EOF8ff53hvxKM39ms/qP0PZ2+5ptf9FB/JP9Unt8aIZ13Giom7oY+F5D3UPx/jL+b0Xsg5xbsaxy7GacfDwXL0PM52R8Bf9E+me8N1r9yXp1z7NXSx+TeZ+iyt5yvVEjcR84J8v4M/hplvynvpMA7ib7K8R/P4a8hvqrTRy/2kXvXuY/dFP3/9S5Hd/pLv79EuQ34z/ztOPo6UL9rkHmKdsl7Fy/qF1cmjgX8LvEn8G6UnkfuP9jDKvl74q8b+b7XfkfCN5I/Pwp/9dhD9lkOh7dJ0fi/e9bt2v3KrHfx/R3Y0Tp0DPm+yv4FeL78xCNk/6w3v5/9s+ynrSktwJrG8d/Q2Sb3xHP+y+5ynyX+4Q34JpNzr8Rz5r6v+UIfdjZJul7W7/T6FPhy7vvB/xT+3qTnfennX2DOTxInlHOUnJ/snn1P9Hbhhz7Sfler/0zuRdLjzdrvBfjeTVxK7jvg72d2O5LdNOGflpA/9zVyjpz999zneCf7uvpD4qxvRP+1vIekXu6FJb6+M/4TPz5c/WvY6aP88of09y2594b/YHzPTpyt9F34bcLftYb3V/OAxL+9xL5y/zP3QfdGfyZ9vgzOArP/3RjebeB7Wrpy7o+zy/LkmCOd+0cHSm9P/tPw0V//ulW6BL3sl/2W8Rm96OUl36OffonXzPlu9sGz/6+/fYj+NRkns8+Ov5Zg8fskOS+4E507wJwntEOvClgVnMEeN+OrZ96LYA9n4a9/0b3YxFfnfuwC+niF/M+pn/dhnoL/jtz/g+cN9W8tgP/Eo7yXfoj+7/zDu/Qynb3Mwu/16J2W/Rp2fQ76p/ArU/Dxmfwb8XsXe/o852SJ35Sf/bCsZyZrh+yPzeaPLsq5o/VlQ/x+YX6Vc67i8620w+n08zp93iu9OPcZlZvOXvJ+0Jf08wWY+z+/009L85ZW4OXyT+IvTsFfK3psRK7F9He98aslvvtIZxws9l/xW6PTfvrdFvL/hX7uOZ7Mvk4CF5P7q6yjrSdLyV0O3rL4a8SfNASfV+5YcixPXDi+5konrnpkaQG2kB6SfV34i+9X724+uTf99Wdfj5nXv6T+GPXXp7/kPATM+WviMn72Pe+UzWr03/R70Ffi/sNPGenc8809+Nz3zX5c9unGspPs191P79m3rE6PK+GLf3gNnJpxIfFKuXfFbj9Ctw3+cv8j9z6W6S85nzgw8zHjfl10T4JnL/1tT3AX/aApmPOlLmDXovOm9/C1ij4TT7SE/7leehp7y35/3g8ZYb3+OngBOEC93Av/Hr3EoWR9OFN/GS6/u/F9jnTOZ3Mem/PZvL9YvP64FLwG/8v48+3Z4YfSFcjzN3s9Bt4h6C9KvDl9LQTfB3eT/0bOh6TzvkLOn/KeVt7Xyjs4ef+mOru5B1xELwfIv0B/bQ92yDtGyh1CrlL9ayl7TpzCL/xjQ/OTX6XvzLkPPW+lvSqo9zK+p9PHYnrdFb3lyvXnL54iXz981cv7i/SVeP991dtFe2ZdeVTirXPOA8+SAii5VDv9Kl0n7wupXzfzNv76BvxvsL5Zi/679P8Q/rIf8bXyO9NL9ic6kfti8CIw99JvgK8r+jmHui7vIGQ/N/5cuiH/VgH9jom7YDeNlV9D3tyjz32q3KNaZ7z/Cayde9Q5/7RfMAHMOx5Ncv+IHD/idy5/NIH+b9He2b8ZoHz613T6yH7NcOmcTw3O+o98Y3IvLPFL2qspvXeJH0T/I/018Sa5X9VY+hj8vE3enEsdon5JzivAjDfv5f0A85u8f3KQdBv66aD8EeQ/TP/K/Yln9cdmym1Lv4mv7S2ddfgFeReDnL3MKz4jT+ZpmZ/tCW/u1R6oP/VDvziesY7yWX+VWG/2R2cb6ZOUv5tfGJh3LsBz1H83cXP6ZeKDEi80Vv/ftuh+6hD5d+PnL/p7Hzwg8RAZd9UbTa4xuT+e+7fqTQAPp8ce2uPIovdH8t7Xcv1iY87jc48n71SWFmB1sB/5f4BvO/ir6AfVpccWnd8spZ8HtM/F6M9PfLH08colXuT+9Bf81aOHqfg7F1/70vtXiWuln68THwyuyv47PQ1T79vEK4M18VO8/h7Fz+Qdhhezn55zGOncN3kL/rXqV0s9cBD+s27JOibrl13NFzrQU3/pe/G1I/uqDu4Eds09I/XynkM/fNyT+bH83FOOPwz+8vaztgcrgHln6mPj5SfgTHi3J18D9tIz82J8HU++AebnveUvc364jXZsk/U/uEf2MdBZWRSfWUF+zsObaI+fc29P/qU5P2Ov880PVuR9OvxcoXzO2xLHcId01vdZz2d9f6f8V82X1xtnW5inXhJ/jb+c+26Fz7ek79Wvck+2+H7seP71spwbac+x+D9Jf2upHXKelfe9P8g8HYyfyvr8G/Wr4mspO6ml/Zbhpwo9dC2KozyavfRG/wt48r7dh/rTJv18jfE17xaXGP+2Bqfwzy/n/R38/oX/xP+X0f6DM67Lv8o64EH8Vy/qL+lPT9L/E9p7x5zPaN9v8v5l4h2L4lTnJA4I3iOz30Z/rdR/I3Gd8r9T/tfcAyktwI/Jvbf0nrl3kPkafcSvZ/8y8Xbxp08qn/i7OdZPJ+PnNenbcj6gf+Z+Qe4VdKTf+/mj69l5I+05SLmR+lXebco7Tnm/aRf8Zj54Cn7L53504lqVz7vmJ+b+ZPwb+xit/FPkzfu3eff2YvYV/zDXfCZxp1k//pD+m/m39sn92Nz3vFh+zmvLFsXv5d2g4viNzA/+815t7vnwP7nvdqrxPednr7Oz+olTIk/Okz8h55/s+3z0cv63V+IEcs9F+zQF31M+75fWx/9N5HtJ/tC898SfvZb1bPoH/f5kXvUjmHjcvL/7LLupg6+2ue9Dngr02VW/OVG7HJv3A/ATvz8A3byX+h2/m/c+mhbtn+V+dA31+pTKz/2a3Bvnvzrxt1vDv5lciZPbTC9Hq9+BPkbiL/PFWvKPVT/35wain3jUEYlX47eyL3MTOl/pr1eSczT7yT22SUXvfuR9y7z/MQF/efeh+D2IvCN/MHu9KvrO/nHeH8g7kGk37dOLPzgj54H4zfor86Tc+8s9wNz/q8ceupKr+P2P3BfrSK4J2ivv/18hvT/7GWU+OirtRf/15JcvLcDEN97Nv/TV/l+jd1b6o3nJXPVH+n44eXtrlyvINSrn9jkvpbeT0bsW/t+kJ2r38eC3+D5Y+83X//LORd6xz3sX/dBtVtS/40fPUT/vd/2u/Ie5D8P+TuRf837XR4kHpZ8jjfMH5T18+e/TW1uwHZjzuAv0/3L4Ol+6H/nK5n3yAih5AdwP/3m/c/vSAmwgvUT+cOXfB/Ouyj3s81LzlWvR3wZfpcbH03J+xW6O114t6GEkOftor7xr9wf+l2qPq3IvGJ3h0sfC152cOY/aC38HoPu78s+rf2vGX/k12eGe4NuJ3zDu5v3n7H/8BX/xfeaLlR9Anprpf2DG1/Xk/op9/A3v2exhed4r0J5DweFgzuOL78V2kF6S+XDeF8HP/uSeA2Ydcln8DvsbSP+rSguwHf0l/mbbvB+A78SzLdMehya+kL961jj8ILqvwZ/4hMQl3JL7K/S90Xj9HbwP4mN00ftb+X+eXYrOUy9hf2PIlfnQ3vKL78PmnuxafO6Y+zn0sxZ/O8c+zd/a5xxY+mn4cv/tE34899+y3ipDL9HD7fA8g/7Z7PqcxKkr9w5/P45fKn4HaljiZ3IvCb7j+aEh+udf/NUt8vPe4NC876M/nFi0jsz68UjydZM+SnoZ/ewhnfOSBrknJL9YH1mPZn45C38V2ddidpB7xnn3cDA/VPzecN7dy/ll3uPLO3yrtP9S+fvB9yt5erKvZfKb5R0j+S2Mj63BQ/J+YfZXzS+zTsu6bM/0L+23HT6XkvNe8l2jX+d9mkfIn/dLfiXvL0VxZ4kvH4FuFX7pK/pNvGh3/B5jnfcnO1uITvahf0R/ef5Ph/5qJP6n6F3B7dBP/PcbuZ9HzqqJv8FvDfwUn9/Er9cC4+//E3eAft5HyXspdyZuXvkP4I+ffAifU/mXXfCV/zHqrH0Stz8471TTU+L4z3d+kXXC2sQj5hw357tgNfguTNwC/j4r4i/vGxzMPvOuZbvcS9M/t4FvsXEk/0uT9+IyH3gv7zPIz/2ysuQ+G/2p+Mp74neqXwX9lokzg/9q/D+g/hvql4M/cV+5f5R9jpy3bWGXD8s/XHvk/tND7Hss2NE4uiT3m+nrSulmYOL7v8FfzvtyDnh77hPp73lHNffP7lZue/ysQ3e1/B2zP259/4Z9t+yv5Xy8vH6Rd+P+0n9yjny672eAHyduh563+P43uBl8GP99lN8r71KQN+/TJy4h75EWxyccIr8TeAV7y3vkHxTtTy0r2p/KeVjOx3Jedjv5i+/D7EePU/HXln5boVs2+0Dwz9GfauVdGXwcjf+cF+W9slvxl/OjX9VrI7+8dN4brGv+Xjnnp/AfnvUXfD3AFuw79wvyf0njwbz3kn3o7uYD5dRbIV0X/vnarzJ+sj+Z9/ziD+Mnc949Qv74/P8gfzNBekjej86+t3luWfbxOHnznlved3s/+5rwJS4552IluUeK/nv4uY5+q+ecPOdPxre8O1ocL/d87ovkHpv0A/jvy68drB+tJ0f+x2lF0f3aU83zrmZ/P+VdMnrM/mzOj74Em+Pr5/wfRu4XZH6DXt4Bzf9bjGQ/fdnVvujWAfdOXEbWc0XvYNyR95PkL5XOOxhHaZ+8B5Bz91Pps5V+m33LDfjN/88cIT/xsjPgGaR9JuPvS7BNzrlj/6UFeK1+fj34XO4BqNc255jaaTL6xfvD2RduRz9Zj+b/qrJezfp0I/2+pF98So5L0M//GlTOOiT3Dsi5h/lPKTiFfu5XPu/x16SP7BM1Rn8ZedbB1035vI+1G/taAxbvd96V9xmlB+L7TfXzrt8VuWeP3sPa99/8Rf7P6Xnp7+kx+8vZV84+c/fsDxk3c58o4+kB2qdt5pPoZx27Cf4R8h+DL/fij8n9P/a6Gt41iSfCb3G8bN6zyPsV8/TX1/WL96RfUv8B8p4PDgNzPzvvWu2I7gBwErqJh6+a/Tf29HDeLzD/+NE8PXGsib/K/e+fpA9NHAL+sx6pqF9UoJctYMaX1uplnMn4ck6p8ol75e+6Zx+dPH+z3374XUc/A/A9zL51zp8PzXoL3sRlZ18o5xvryZf/Abnc/mzicyqTq5H0tuxtHP7Pyv3k3ONTri39blUUZ5V5ROYP+V/GxFN+TK68H/wQ+5pgXtDIPOEy8o0vwS+9FI+/B6nXHFyDzruJH2V3M+ntHPsHeYd/W3qbJb9X0Xv8eT/vH/T2pMf8v9Ri9nk4eb6n/09zv4D+apYWYN6JOU/5Q7N/h37eF098+AD+vT+Y/4l5Pfc36XOLdqktP/GNeY8871/mvfK8f5n33V4ous+b9VvuFw1LPCQ8eQ9vHPt/kB7yf4/l8XWeeUcP/X46e9w78RU5nyotwBXSef86cdWJ453HPt6hnxuL4qdyPpbzsqNz35PfzXvFeZ847xocSX/F7xv8bT6/tfobEpchP3HPGc+b0GPet0q8c2Pfi9/HWqc/5n8pMj89mByJP868fqX0Njlf4Dey7it+XyTr1pxnFa9fW8I3IvcxpTO/mFVagBUTP5l9SflN9Z/tE4cOz/7s/CfpzN+L73dda9yviu+cdy7P+xb5f0LtsBlMO1RnZ+fD93T2r9XP/+Hl//Hyf3m12FfuUyd+Pv+vl3fZXlL/ev7n8LwjBd8H+Htd/Tv093Hy9+N/aoPZr6pDn/8o/4F+cQR5fpf/tfzG5F4lnfd/7tL+ea/32PjDnL8VxRXfKz/xxfm/l/z/y2v0mv9/GUje7K9syr1p+PM+QtZ/WQ/m/83y/tZ8dPM/EnmfuLP5/d/0mPiz2+UPUy/3aoZK5/8siv3+zepPwGfG/4z7+0pn/F+F7sr8D436e+H/A/zm/yw+4t/qsZ8Nxre8N/GL9Hj1j2NPec/iWOkJ8vOezkHqFe//FL+/lHeX8v7srua7B+XeINgZv9W0z425b8eOLsTPub7n3feci+X996/MO542D2kJXp77HPzpkew38eJ5h6h14iXosR5+q+X9kOxHZ99G+yySzjsRXcjTsGh+cL/8/A/UR8bTvF/UQX7i0PN/ltsp/3/49xopeJx13Xf4z9X/P3BJk6isrLxtktHUop1KSam0hxJCZSRUZDY1pIkS4dNHgySJ0i60aKj0UULRjtDU97p+r9u96+p1/Xr987jO85zzOI911uM8znkN26XU//vdtmsBDpV+tVEBDmlYgLc0LsCb6xfgNy0L8ODaBdgaPL5yAf7ZoACvLoBShzQpwD3gnda0AK+Db5HvZ2jvB/g37lyA321TgJP3LMD2zQvwiSoFOBO8XP1f9yjABvCepP2ztPeF9o9WvmqLAnwW3l57F2DDigW4N7g/OW1Qbzi5VIB/OPwrtd+oegFWU+4hdG6rvTvqFuCC3QrwA/Tuiv8+8K2F/0BwITnUqVCAr6LrrkoF+FHoIbc34X0WHU3ld5d+Cb7H6O1l6VfYw8HKXUY+1+2lXeXvJY93ybWVcg+gK3rcgI5u8LUuKcBZvjfF70Xyl9cpwDvJp47845RftgN6yxXg7uTaFvwR/0eDrcnnbfLdlZ6aNSvAh7VbU/4p6l2n3jPlC3AO2GfrAiy/ewFWAJfWK8B6VQvwJfTUkf6C/L6Gfyr5HUreS8lx0nYFeCU5l9u2AM9H7zXKn7FjAT5ILm+lP6n3F322Ap/E34v0Uo38qoMnyj8b3jHaexmdr0ufVqsAx/p+uvT12nmHHI7H57bkM508LiW/4eS7gFwfld8e3trGlTfoazv98yT9aRG5Lgbvo8f12p9dUoBz4VvIPqv4PkN/qIyvrfA/CF1lwf3Jc6fIQ3ovdrgPuo9FX+y8ovLT8buZ/g9Gzz3oOBB/b5Kfz6XWgTeCf9DvJTUL8PeM0/iKvQ2i33XgAPQeJr8uvi9hb6v0rz21v7pMAXaWH7u/Rf3Tjfvz4H2BvEfitze5zZdfBh2j5I9h339sX4B3SB+Fn13ZTa8aBbhkqwKcof421QpwlvLTfF+Hvrnam28celq6mfzv9adh2v1B+mT6b0fOjZTvCX836TvRNRzfw6IH8mqP7xXk2t73n+lpYeRND5+oXzHjp/zb5M9kP0/LH4LeHug6mN4myL+xpACvB28At9XOVsaPTsqfBM8T0mu0PxDee9nnL+RThnxagj+Qc332PZV8poBX6Z/baL86vZ9h3DkTLCN/G3zHLh8iv5nw1yPfOcrdJb+c/pd+k/7Sj7x2wefN9H4beBP4Dv72M++sVb+VdHNy6G3+vRK9c8sW4IHk115/uVy7/dG3Dfr/o39sNE7sJT1DfgXjW4n2Z9BDE/x1Zndj5X9jPKirnRPIsx24EZ0T8Hevdh/Az2RyzjzazXh9LHyL1L8445/5eZNxfyP4DnpO1D/bgx+r31C7zXYqwDbWV82lO+J/CP3uSp6PgS+j/xzt7I/eXfTvS8hnK/i2V64jOYyE/xLy3h1dc9Q/H74bjD8/oWOs8XCi/KW+d5T+QTsT4T+ZfXcAf2CnZejxKPZ2HHkeI91Z/Y7oWq+d+7RzFf531N9+ZYenwj+Hvl62vnwFvJUebs48QB4no6eM77+gZ6n2W8H7rXm4u/ZLBx++72QPWX8P0R+ehqeT9cS+6JvNvu6VnqteH3yWhf8948cB7PMB5V9E73j015feD303GG9eybyq/rfSg+AdwR5fUL8qOxtD/6/Se2XprOefI5c66HkS/h21X4U9tUHfQeQwS/6B5DUEHQeh63H2+zo5zFO+mXavlP8euort9Frly+uPU41b35mvj6SvWcaXJ8E72UnmoyuNX6XZ2VTzzxfoWEufK/D1tfQc+aPsfwbIf0k7g9G/rfwy4DbgBvRPNG5uBK9F18vg6ehbgu8NxpEO9FdHe8+TazX8P86+j/V9sfKPo7OD9u+Wfpu8Mi5s0j8fR0f09jY6WsO/J3u43feW2p8GT2/0Vk+/yLhIPs8b3++il71KCrAHusbqH23Y+V3pL+ztPuWa4m+U9B3aL2++KAeehs4f5PdDV1/wOfnN8F8i3YL9N0HHgeT3VJE9/sRes/94F71LwHfY6QBy6Gq82Rv8hvwuw9/+2mtBPm209yj6yuO7r/R20r9KH2P8OZu+7oXnWvz/xr7a09M5yg2W/7h+NxD/7+KvKfoOQE8r9nEj+V+OjuLxfWn0lvGPfVUBp7Knd6X/R05V0PUcO60q/Rb+3gGbkd9y9V8n7w+zviLnG9G3g3rt2ceO0r/I/0r6BvW+lz5Y+w9Kj0bnUONdG/mXGVdq4Pty6Qvhn0Nu55Lvb+h8m3xabv/P76+r94z+09y4uqtx8Ap42ipX1fzXhDyG0cMt6KvCvn5AR2XpM9GbfUMpesy8vi04T/mP4Z0v/bD2+6P/E/lXSk+Vn/l9Nb32sF7P/P4BuX4Ijoi/iHzeQ95GsBc4VP7b5qdPtbuQHHbH7+vm78u0f4T8d9EXP0w937NOfkj/6q29FeCD4OHkVYHdPJz1B/v4A30f0dtt8j9lT0fT71nqr1TvFHif1n538pio/jnk1JF+15L7Mu1dlHV+9jfs43DyuA7fJ2h/ZPw04MaSAnxS+/EXPK+9RuzxE+meBfC3f3SRdPyje5hvV5QuwPHSJ6BnG36Hi+C7DX+V8VPT+HUcOrqTQx/lW5ofW4D90bdIfhP13tLeYPLtg77pxo+J6P9duY3k9F92Vdf69GN09c3+jH3Xtg6fZpydoN2evp9LL0PhaUw/zxuXhuH7T+Wqy+9gXvlEfmNwD+3Xla4HTlN+E/4ms79N5HY0uo6Ef4DxtDfYQfunw99F+Y/U/7ikAFeSTyf2PE77G8lxMjkdQh/b+j49+232dRD8l5F7a/21lfyV5Ls8+wPrqOeyzgEXaX+19MD4B40312a/or1n2ceP6Il/uNh/eCo+V8SfB1Yjn7vUexEcp78Oy36DfV2gn2/MegN/d5t/Kyl/j/m3e/b38OX8IucZI9A32XpzEz4eln6IPM8uKcAzwKfYQy/lB1oXNQYfgT/jRS/2nHXYw+j8gX3Nk3+H733guYd8htBf8bp0Ev6/1W9nk8se1i+b4c+5wnh29oL0ieRRQq574Tv+1vhX2ypfCb9HSzfM+Q17GgqOgXcWvWf9u7917HztrcXHNebPstobo96b2d+wp+vIsz15LJYuh65F9LIY3qPU38IeurGT2dK7K7eOvHIOck72zey9t/F15+xLpcsqF79X/F3xh62Svhj+08D91duiHywmt7eM07X00/vpIXY2kn18EX969h/8oT3B2uQV/+gU9R/ET3V2MmnPf7ab9kLPS/DfIf8FdB2u3p3xN6oXv/UK7cV//aN5+Uh8X6PcqvBvfPsjflt6+JF+1uB3GbrfJ8cr1C+t/RrqVzNe/Sn9tPmhd+YTdA1UfwJ8/5P/gPSYIvuMXV4d/tjXLHo5V/497KOx/KrwVQaPAd/C52D9vXXGL/1lW/S3N55nPDpJOvPTGna9GlwF9s58w9531W6DnGfBHz/cdPreQg7ZH5WVvijnZOBx2n9A/hm+v8derie/zGubsl/B3zHysx59Dfx7nqeftfT3Ffgl+DT5LmOvFbU7w/hwCvoOYQ9dwLHorKL9uup1wseP8mepv4H8mqDnu+w/4l8pKcAjja8v5dwNvxXh/Qq+3uzkPvAY7dXL+k35nA+21j/Gs/Nz6bWp8tuzn2ba+4/v2V/+nPOl+I3YwSDyexw/beXHvh/M+Qx720W7f6H3CPJYjt7T8HeqcSL7r6baf0J+M/juyTm79WxD/awmOl5X/2vlO6JrnfR6+K43b/3bOfr57OF9dP6pf+5Jvof4PgF/jbQ/F30XyH+GnS3F/2/yB2V9l3UlfvuTX23yfRmdL6l3LvmdZ946F6xI3+21M9y6cj92P0J6Kv6y325lnKyMnnfhb1Z0LjlKvfulr9YvWsS/Rr45P24Lb0t83ar9ZzM/ku+t+D/bfvIN+Q9of190PUJvh5HPGfYHOSf7Cp6T1H+Z/I70/eTElcDzJft/H93vgSv1h7LkuTU+sm+6jP67oK+c8l3hba79D0qkcz5gf3Bt2jee/sbuN4JXo3Mx+BR+a6l3LPlPth6aQr+TpCtpL/60PuiPv+1o9DXM+EeOlcAr1L+I/M6mz/fJ8Sr9a7L15+30OIX+1ij3HvnUl/+7ftqFHcevH/93/OHxf1+g/exris+bVlqvvA3vfuBDOc+1vp2n/mP4PhD9H9HH7Tk/097Vyo8sKcA++B8lXY4+Rid+SH5D+d/B9xd8m5wjNcB3dfazRjtn4+cS5c+SH79R/EV3ZRySzvner/Sfc76c772MntXgGvAE9eN3j789/vjJ5H+VcSfrwD31h8wfZXLeh64R6Mk6+sbEBbDXWco3kQ9tqZHs/n/S+yo/1HgxDLydvBqRz1D4jtd+/J0tss6Ufga9OQ9P/53HP3A/O3qM/fYg9/v0mxFZ/5HzGPir0OtI+e3gu0P+xcaTI8i3i/QQ7a/CVyfzz+r4AdS/lPz3RE8P6R/Z0S11/pl/CH32lV825xXk8LB2nif/Wvrvf9G/xHhwkfzY1zPGkTnmx+so7nf1is+fh2W9YzzKOeBI89R26P2CvW0vvx89DQR/1f4v4BZwPvnsQZ/10VcV/Atd4+h1ROL4jA+P6R9D4Rsp/2v2/aj89fC96Xt3/GTf9ntRXEziZI7NeUX8MvrBDspl/fP3elb+GfDupP3DtfsqfhMvl/i4s8zfHxaNcxnfDtDOM2D/nCuwv230u7rkP4w9lM/6Gl1Hae9H9L4kf3vl0//bKd8t/vOSAvwg60b85Jw08sy+91Lp7H/vZ+/7qT9O+nX20w2+9er9io+78Xt57FP5vtL1479PfIZ61aRX53xD//pe/lfa+SnxPb6vwHfWYQfhP/GVFdhB4iwTX9m1AErdCc4Hh5QU4JeJj1S+F33vqL028N8nf7XyO8hvp/wJ4Hb2+YvBe5XfBT+d9d8O2Z8qdy36r5PulniKnMtm3WW8nC5/gPFyJvnfqb329NuQ3utkfanePO3n3CH7uezv4r+9G1+J69iEjpVF+5cKWZeRV+JXEmccP2PijxMHl7jS3/WbjonDRV+JflcbzDg6zvj1i/RW6l2E78rqv8bebtHOhMTJZfzWv461z7za+Lwjvmpaf5eAt8OT9XQf8jlC/xlLH+eyl/7Kxz99Ivgceb9Cn32Vb6vdUehvrX/UtY7dLX7YnOeidwD6BoKXazfzz83m0cw/h9FPV+Pvhdq91nzWOefQ+KmQcx7pnP9dQ/7LjVufZF6ln+zHOxTt17M/v0g7+2c8M77PkD7HfFIV/dmPH09+F6P/OHTXRM+AxO/hfy75jkbPG+jbx3p8P3Q8wH4Ha+cN64mX0HW17w+g70rr2xrROzomw7e19n/G/z6+VyGnp5Wfju7Z0o3RNzbnfcpfQL8/s/O/tNtc/fekc/76BH7noTtxRM3JZ1xJAd4HdmTH3+X8Tfu11B8L3/fwD2P/5bKPY3cL4+dt+k9+wud28h81HsYflnXhDsrP1V6znBvK/1r+InppZ9zf13pkqn5yoHptlW8L3yT8VzIeraHHq9D3ec5F8HeQfjpT+ZvwuRe+E/9wovRnmdf126/Z/ZSieN179O/Z8H1l/l1E7iPY993oaoieMomvLorb+wzfg+gn++JR5H0IOU+N/4c8fyCfr7SzOfJH/7PgTVlXyo//ch1+4seM/zL+6filK8Ef//Tx+senvh8n/Rh699T/bs3+JvpJ/JH+2kl+Q/zui7+u7OvGnLuhP/633dG3k3q1pOvGv4Cf2E/WW/FvHw3fFPB79lUZ/pXmrS/Az8EZRfv/G+KfYQfZ/3dldxnP57CXfeJ/M16sA+OnjH8ycfWzwB/BBdq/yniRdcTh6mX9kPiTzJuJQ0n8ye7sc4b8rFPH0c9488bjvn8vnXjCrBd3lc56cv/EZ9BfFf06+8jEg5zA/hvknBT/56J/BXxZzzVR/kf6W8F/kvXcZ8r/JH8q+f8F/3n6X138P6zfz1LuK/q9VH7WLVmvJM4t8W3/oddz8NOFfL+WfhG/NcnhWHQcg7/b9b/h8FbQT09Gf+Ip/8y+xXy3de4f6D+TrQvWyR+Orjvo63x2d3AcCviLPzx2Vzw/92Q/PcAl6ldjH68nrjP7hcQv534Z/WwAE+fyKXgF/jIvjNXuwpwfkdsDYMuMN9opR58L6Okm/ais+uvIZ6B1+RHGhzPJM/61uxOviZ6O7Ol08GP2fBI66ub+BXlHrkOVu1n7HdH1LjlPoY8J8hv53kY7F+QcGp6z6XV75R5D92Llp2p/GvhI7nkk7i33CZXfqgT99HUI+2+uXGvpt9VP/MFm9AxBf+IPysvP/P8GPPvCXwGe7tZ/Wys3Wn4z5xPjwFXicNonXgS+ruzjfe31Uf8/iYdmn6XYw+/43ZncHuJHmZH4GbA4Pq2y9AD5D2nvUXpI3MEl+m9937uwy4vByspdwO6nw3+edNaD8TdOla4lvV3i7+Ivsk7qZP1YhVzPATuq/z9yHpDz4+xz6Ks6efVE/xj6HgveCTYiv8Q7Zb7thp7EPy2hr3VgE3gT/7/U/PsyfF3QW9r8d2biYeNPBndJ/Kh5fxA9HCXdQbnMG8P/Zf54W/lZ6P6NHSQedFfrtcElBVgx50jkVcP3+Gn30G78s4/IH23cecY8crLyib8rD043fz2e8yXwrJzvsvfHc45v/DiIHA8G70HHh/jqCc+Zxrvn0NcaPbXR14Y+a+W83Xp3H3zvCyZe/3j9vR2Y88PEr5xtf/cNOs6Onxv+5okDZy8P01P8KYv1l+/xszc+4o+bj98y5LBv7gHFX0deZ5JX/INdpDvL/xXdObfZV3s94O2b9QU9xY6b4rtc7h/Avwe+LlF+q9wLJe8/tXcafZ8O1tLerMQrJh7K920S34q/Bvp9fXCJ+etT9H2pv/9G7h/Tw3DynYWO7RNfSB43Sy/B1xfxx8svj77+2ss9havABuSX+Mb0v8Q5ph8W+2Pip8k9uqczr7GXA4zf8U/lvkfOv+rHj597tsbT+TlnkK5KH7G/2F3s8LicT/p+Ze7jsLeMTz+jP/eWS8M/KPHJ7OMs4+rM3KNB5zvGm3fBn8FP5T9YUoCHavcadtKJ/npKLySnbxPPh77nzHu5lzOQ/eV+TeXE57Gz89RfjP7X5E8A7/F9DjnlfOfijAvZv8V/yt5yvlMj58PyB2e9KH0kvnO+fX0BlOoMfoCf+DNzH+ZD80sn6ZpZD9DHFOuenKdOoddL0XMJ2B28vvE/8/N9VON/5m9rfMq5dQV2NoH8d8i4BfYjx2XZj0jnPHk1vD9J92PvlyV+X/rQ+EfIL+e65xbdH5wcP6H8zfg4HD37yc94l/Hw3fR/9XbW3mH0eKP0efS+GzuYJt0g7zuQzzH4OUJ7VdjfpMQHK5948MTrZl/wKroTD584+Nw7TlxCcXzzPOPvs7nHkntB2r+ffbbF75fGn/GJh7Pf+rUASmGv1JnqdTO/9QDnWX8lrrYU/sahM/fpKsBfib3kPnhLfF0k/YVxPe9C3E+e/fT/JfB8j5+sr38yfrXKeSvCV+g/98u/jTzXoG8H6Yq5P6D9bzI/Smd9fhW+f8P3KunN9PyB8f5YfoRjsh6XH7lEHpHXGvjjn2qMrkbgOvWPNJ7Wx99v2juN/tvlvAz9Y8lxFHv7uqQAv8u5Frsbi567s94jx73AF+LHsR/Iuetm49A39PcTes5jf0exswOVr6j+m/Q6yfqsFzqe930xvivh43n6eUm/62j9dj/9Vo3/hZ121I+2o7/dEp9XUoBHoO939Zfl3QT9oTv5VJJelzgM+pwLDjbfZV/4M//FwKy34h9E/xnmz03kkfukJyZ+QTr7o+V5dyDrb/xdip8+2hlI/6+wu1fB18CL2V3iLXNPrfh+2ouJU9BeRfXqyf9vAZR617i8Dz3slPM6+sl7BB21twAfR+ovRySOljxuyflDzrfxX3zOtZm+HmKXleV3Jr/67KYe+BM8TeV3oM/cl39GuXO0n/i5zGOJn7tOfu595X7QMvpP/32b3/4vdjeTvefdnw7k1hD+nKNXhi/3a072fQ/05b5N4ptmsNe8XzRM+0u1+6bxaWbuveV9B/pqSy8r6Sv3n9bjpwV4GHrzPtMc67XiOMbE990Yf5/yPyYOgfza0Hf8c/HXzVXufXSPIMdFuQeMj6NLCnBL/BC+7xz+6TdxwsONJ9+Gf3LPOj/r++XS5cj1f4n3TFw8/qbpfzWUiz9uknQ189tMdv4ROvbE/+is83LfTjvx316Jvq/A3dQ/E5/xo+Y8Zjr6E2//NLnOBgfGn6B8bfPDION8D/mLcn5sXIw/oK1yuf//if6XOLjl0r0TZ0UvnaRPhOc19M1lPyeS6+icZ2r/dPZ7DXkeoNzB8c9kfMTPRcaBHvDnfmHuFd7FnnK/sC+9TJN/NL4G55zAujn3Pz8gx7rKZd+U9y7GGV9PRH/W2X9kP1h0X+P6+I/xt0X5JernvYPfcm5ZFA9VUgB/vytS/N5IZ/hbaL+nep20X838/AR7epM8x7C/Q+HJfvYS6cNyPsseToX3OPUSz59z+cQrF5/PrzKerQZH0k/2sVPhn0k+U6SPgv/f7pV11V5b9v0yu1gPfpv4QeWPTzw4/EOkl8u/mT1dQ/6X6r9Zl+beTu7x5P5Orazb4DmMPV0qf6jxKfG5l8J3s/b3oZ8y8veVHo3+Eew3ccqJA0h8c9Oi/Vr2caXy/pd6Jeh5Jvtn+MdY17RE12/00ir+mfjB0duZfcxXvy96N5L7xfDMUP498mit/fXGz9Pg/xw/34G/5rwf/c+ZT58HJxpPpuOjacZL+om+cn889wvuNk7kfkHuG5zJHrPvW8reEl9xr/XdhOyTpLfP+Q77X5C4GvPXf+M/xO8S5UqMf7kHfL/5+Ar9/2dyjJx3yrtM5LJVzk2K9jfZ12Sf85t6B7C/3A/JfZFuWZ8q3zN+18Rv43+x78/Cl3E+4/u/9eszyGcH31/U/qeJd6afO9Tvpd0drYeOSPy0+pegczU93kAOz8M3WrtXk+MfmX/kT5HehP/EX+wj/Qq+XlX+VuUHoy/+t5yXJf68lPq7y6/EP9NNfjX0bDJ/5n2rvHd1ae5nlBRgzcxz8ne2fsu9/uL7/rnfvyzvRBXd9x/I/vqT41XgfPLvjb68q3S4+aSl/LwHmTiavBeZeJqsF7J++C3+9Nzvjt363o/ePmZ/deh7FXsvkT6aHPIuSd4jyXsl12p/AnofBLfKOQv5rdVf8x7cXuzs08Sn0tfevuddueXyO+o/1+V+o3Yjv+nWyyvUv5AcMj/sbNzalPdQpNsVxacnLj1x6nl/I+f2a+ErPr+PXyjzwan4Xx//dfobukuBXdBzj/E0957fNs4dav57h/xXwtNSegM8k9hj7jW0MZ/kfkPij/+X8xrzReKPv1F+Ev3nPcO8vxp/30F5v0C567X/u3XBJ+By8Lz44fKeBBh5/y49Uf8eB19J0fr/NXIZlvsw+s/d0rvon6WK7iuerX7uwybuKPckcs6xzLn8ULCr/NHw3Uc/9+beNthPucRn3EQPJUVxpnl/M+egC6Rzfj1YuerkkfPURxPvqt/GrxR/0ynqn8ge9o5/xDiXe2rFcS05JxkO/7/FFbUkr9L0tbno/ZQ/cj/C+LMS/AJMXH0T+CZKtyC/0/NeFn7uwUfXkgJ8Qb3cV8r9pSHWY4n37p33eOHbop2Z7PsQ49nInFPjK+dXC/E9xjjUxvw/BJ521gvfsNMt6HkxcRvspoH8r9FXhn76K3+leeDZ3Bcj/5/w+yo5LKC/xFc+lfsw5F+JHnvBn3XTqiJ/evznfc0rX7Ln6ug+X/3h6Jvo+wjpR+CriJ/dzWu1wUfZf96V2gnMe1N1tD8bX0+DT4Fd8fOx9E6RS/wC6mc8iH8g/oKMD4k3SRxK4k7WoL8pvTQHc0+1Evneyl5zbjBaeiL7WWBe35EdtIA/8Ydn5R0Lehqi3bx3swG9vYv46Zr7JYlbYH9PgG+hL+c6F/zL+U7uDWddOjj31eM/0P7e6Cl+H2VyAZR6JPfcpD9K/6eXi7N+zT51z3/mJ64l8XfJ/yr2B1Yg35z/nJB3z4xfGc82FMUXJ574KO3n/tQs+J4EX8i6Wf9+13z0Fj0uAs8nt9zvyr2uxCEm/qn4fe5jEj+i3MLcOwITn5T4t6fyfha55P3DC9GXd5IaoPtA7T6CvwbsLu/DXF/0Pkz8qfGvJn46/tXE6fRAR/ncQ0H/auPNsdZ1iWdOHHPeQdxR+mf1Ex8wl/0+x25fxd8z+GhSUoA30s/D2s077y+Q+/PgArBXxkd0jcr7ZvgZoH4X685OudckfxL62mV+Rdca64e875H3qvOO9XbSec/6BevP4ver8651J+PdmWAL9pL9W/bFF+Pn5qwf8r4pecbPWIG+a+f+CntKXGPOvXO/cYp9bc67d8u9C/kjrUviR4//PPH9zYrGxdznz7lEk9w/I7esX2+Iv9a4e5N59mawFn5+sd5+XbnN0jlfKX6/Ku9WJb7/6twvznob3o/kT0PvYnY6uqQAa5DfL+azzeBA/SP36+up3w8/VdnBhfhPHEf8O7knmvuhWWflfYDO9Hc9PsrJ/w6+l8h/a/y0JN+e+R8Ccsj53irjYeadldJz0r/xlfdG8/5o1jeDyHcg+Ch9f5Zy1j9f5z544p3iP0XPzvEnoruu9hN/MqYASh2r/yb+ZCP5nSddP/FR5FHP99uz3o79k99N+l0f9L3CfvL+f3/rkxviZ2QfrdGf/drj6Mx7h9nX1UPvK/pv7oMNQM925LWBHT6B7qV5J7Jo/b4Gvj+1X/wezynKzcv7cEXxNSvYX+a7hvj/lJ18Dub92/rozHnfGPVraD/vCeWdqy7m2bw7dFfO1/NeEHxd4fvLOJh5p5T5NP72G+ljGj1mHXcdPHmfen/21wrMO9W90DOB/BvmHSn6rZf4IvAZ7bwAf/w7DRMXAsa/s0T+KfR+FTxDEh+BjgXZH9NzY+3kvc28w5nzwJz/Fe9Xso9pmzgL/bMzOJ+8p2S8ynlG5mn0vYn//eC5Aj2PxE9I/9mPZJ+Sfcmx6k0i35zb5Bwn5zets4+NH0M74/DXAnwFrA9///jftPsLul4h15HKJ572I+lvSgow71u10L+yTs+6PPdzesf/De+QrIezf0t8ZN53kJ/3wU7Ovdq8+6J/LpF/S87HtXsvubTR/uPyHwVfSNxf4sPoK+8t5z3mFfF3FN1fHyad+LFR+ncL8EF07oe+EdaVtY0Tw6VnwHdM3j1NnEHe7UP/FfQ/Vf4y7eb/Oab5Xtv++kP5+X+Ou6wHK2jvaPi3kP9083o/48Sj0vk/ml55L4M8ivdHiftLHOAD8etoP+975l3PxM/mfc+f9Z+65HOe/C9y/079UdrPOzT5n4bavicuM/etE5+ZdyMbKfdm3hNUP/dxcj8nfp/cz1lmvFtKHlvYUbXs14wX0/Cd85cztX+L9VRF68ZKYA34Lrf+e9367DLpA+VPs049lB2sL/L3nc9+sv/vz57zflTOf8eTb8aP7nl/NvtL/CYOLvFvC+0PyqAj/6fTEp7R8J+ifln47ma/X7LLD5T/hrxno6+F/py4nivNH82VL2GP3XIOZryMf/Rw8+kF5D8Tnub4e9X49jr4Glgq960S3whfTfo5K/5V+BeYB3Nulnce/8i6WrtbpBvJ/5w+yiUuV3u5z597GUP/5X7GYO0m/uch9lGbfe2VOCX4it8fmmtcyrndY/jJ/Y7D2PcR2tkZfavzfmviJchrT/LLe4+t9If4V29L3Cf6PtTf8t7SMumlWY/mXrt1yXhyyP3f/+g/4+l/Apj/A0r8VOKmOuofWT/1Jfc5xt0j2Xf0fSf8fyXOxvcTsk8z/5xFzmfBdw37SFxL/ES5V7Ze+43JNfcQN5HXRvo53PiXe4d90blBfu5l5l2HvPOQ8fUT9pC4jZXSiee42ffEyd8kvV3umfF/LgDvVL8n/Pnfn/zfT/4/7OC8DxF/ZOIZ6S3v7y9hP3m/az57y/tdfxm/5uUdDXJ8J/dp2dX37C7xMk/mvjL6vgTX5j6bcmuL7mPuRw7n0l/+zyv/7/UNe8z/e72s/VbK5T573mvpwP7+vmdedL98Ebq/Tlyc9nM/ZSJ5d9HOg9J537eq8fMw8voZ/h65j1V0HzP3CCeQf953m4juu9l53nnbXn7sJe+M5/y4h/7SL+tY9jie/E41/+V/I4r/T+JH40273B+Bpyz68m7d5OzHol/y2ax/fJ7zZ+kbtZ94ruzP8r8Dv5JP7vvlfey8l533sW+n1yfiPzVe5v7CweR/EHgImHdUHzQfZj2e+Tbx2Tk/GJH7SLnPm/jzf7H7D5Svk/eH4/9NHAd9538X8/994+kz538ZT+Jvupy+HpS/G3yDwLwPnfjcN+i7n3l6ofS18X/m/SR8H2++y/tJOdfO/yjk/xMSH1cOvT+z+8R95P5By6LzpvxPU/6f6Vz5v+R+pPR8+eeT727oH6Dco/AV/7/L0KL/eXnNeD0ocUP4yPtw8cslPn03csv/HMwugL/9K/G3xL8yG/4l5L4e3Fp+3mXN/YPi91lPpv/7zEs99cOp7GeN/tyD3FZKl5af9xVzP6U8PWR8fgD+EdIXKjdA/bxf8Bq99QPXJ77AeJ/3K/OeZe635f3QbxO3D+Y90X2MH4ezo/2kDyXf+Gvix8l5Zs5fLzReZP/RWbqV/rcT/WfdWiI9h/2Mx19TfB+ecyzy38V4MSHni+g4VLm8zzs3dp37tImPZm+JIz2RfaTfnAN/7pOs0c/jNy2l3iTlO9Hnc+wx5+45b895/Cf09xF+E89a0fjQV/7J7PGo/G+PdP7nbZty/2wn43nwb2u8SDxH4js+j3+Kvb4j/7Pco1P/M/R8RW9ls//Me1baX8quV8L/JHyfwL8CbAbPGfFH6n8594p/J+dhFcinDnyd4m/W/ufKrwTzTv1K9lEH3sxLma/a4TP97V567Up/ecdyG/WbZD1iP7YKvk/Rtxf+8r8xmd/ybnBJ4rsyb2n/y6J40C7q7cI+p+i/Z4HDwBsSX2M+bKtfHwfeAd/3xo+VuQfOjnJ+NCTvr+jX8bcnvrMm+dRIHBV5lJY/Dz9//79B0f30JcaD3cn9qPyfTuL7zA/fGT+zTs790e/p4zvwWzDvaV/Jvq9AR+a9bbVfHj95z60Nfj5jP03Z40W5lw3Pw+wn7/nmnnjuP+Z++O/k9ofvb0qXVT//43gT+fxXubz/OTjvD+E/70Qk3n85PV3BXlrIz/39+JeeVf8ldMbftKP1cX/t5p513mNcoN9Uli6V8yzyuifnXfl/CfJei5+rlZ+Drgb43w29+ysXf/9rWb/TT+5VZV2e9XruV92Er5HgJYk/hi//l5c4x4X6ceIcf8h349NAMOf5eb/6AOkv2WXu0SZurBu5XSOd+LFf9L/d0RF/60n0syH+a+3kvl7u52V/n/189vcj8FeLvXeHt6b0AuU7Kr8RnK3dTsaPvM+b99T2xf+LyuVdz2Nyf7ukAM9Wv1L8Z2Bl8DH1LyGv++i1tPRG9E8oilvOOiH+j9wPT9xt3mfI/fAv8F1V/v3K575r4rcTt32Q74nfzrv1Tzf+/+fHf/qL/ApZ54Ev5r6RceI941cN9fvkfStyeYJ8q8sfYvx9UX8cI54z70aM1K+uz7st6E18/0Dza3d2dil4GrkcZf8Tf+Q5xqvcLypdAn/2fdJbyKGG9h7JeW3+R056lv48G6zk+2nxj2u3tO/5n/M18vMuUN4DagVPB/2/kfEnfuWv8Zf///23/8WqAd/AvMud/bX0Wumaxo0n0Fldej66cl6R84tF6Mj5xf8BcaMUS3icdd151NfD+z/wQqKyVBKVuisi2uxrEZI+VIokSxSRrUW2ZAuRhCKUQlqp+Kgs0WKLCFmytIikKGVrI1u/c37vx/N7jvc5n/uf61zvmbnm2uaaec1cM/eEPUr9/78T9i3Ar+oX4CEHFuBlexdgd7+/rt7z+xdgr3oFeO5+6qt3+EEFuFeFAiyjXi/41oYFWKFWAZ5VtwBP1N87TQrw9HIF2G2fAmwH36ZRAY4tW4A/6PdcsAP+fkJvGrwF2K0B/tTvDfZXv7HyX+BND/B7RXzq/+vdC7BSSQF+C25Hf43w1xjcVz+b0Wu/SwGeBg5Wvgq8Un9P0der9PA0vMpO5ChfgLvDZ9Ffkx0KsIP+/iDPDPa5CL0t6N2/cwGWUb64WgHeBLatWoCPaDerSgE+tlcBDtfPav3fqr9m6k+hl0PRb7RbAR7HLufBJ8OPrwPyr7vA8+jnlW0KsOK2BdhdPysaF2CdkgK8DqylfT18NqKfJ+AN4Wvo4yd268Lvf4T3Uf8t+vqJv9TdvgBXkb81vd0PDgbjh6vQO0O/K+GH6e9y4+PGmgW4L/33IceN/O+jGgUYv76Cf76J7u/842r+sZ7+GunnXvIuM05nss+p4sN/wLfot5J+BlcuwHn89B74buz8rX5XgnuT+3H0Hy9dgAvIswN+euH/YfaPXRuLExXpfyg4H/+34/88/XfcsQBL8dNO8DHoHUOfk8Cm4OH4eJU95oCzwWn62R/+j7jUAD6enH+jU40/3EbOgfCH2OEf9Zuheyr5vyBvzZIC/BxeXr2q7L4InVn6a0L+B8oU4J76rQI/2vg4nb/O27UAz+Qf36F/Avwp7U+EN8JvWe2uMm7Po9dq+D+d/3b2++v4r668IfxB9O5iz1PZsx25RoP9xJNL1R8Gf1v5jvjcD50R7PkTWFm9i5QfXb0An6G3rvp9g37WmK82gqvB9eqX7ElefjrYOD1YPytq/Lv+u/R6H/sMhj9Nnkfwv7vyo7U/Eqyinw/UO9280QjcWESvoX7fIe8M5ccYf2PY7YzMP+BS9jpQvKpl/DSBt0HnEPqYzw8m4OsBejzF77fi41T4GPUmab83eq30f7L2D7Dbfsr/Iv9t9DOa/56B7qPw0to/gd6d2q8Wn1rSx73iUn1wMPiZ+NZHvLiR389IvKbf9vRSkR+3Y/9btD9EeVn9NxWv5yrP+irrqayv5uOvrfnlO3z8Sa4jjZ+h5B4O7ozPS7RflfFNz3XAoei0FLePxt/WSgX4Ef3Ogp/EXi/qp6HxsQz/36F3Ev6v0/5xfF9Fr6Px9Yz2A/hfZ3grfOzHP7/D72Hwvug/B18unq0AL6LXK8XXFfz4Gvra4Pdv8DeDvQaqNwfeRflVJQV4rd97w2/BZzn+NBx8lb81Vp71Tzn6OUpcWIn+u9ZNfxhX9ZSfFf7QecH8O5j+6tHXQ+Re4/fnyTGNnBfQ18Pkfwi9udpPh0/E3xq/t9X+efJMB2/N+lr5ZO1H899v+PtA/F+nXQX+8zb//Iz9OtPrBOPnWfrYiu7e5DmYXeeSZxR8k3rbo9dLPzvDr8dvO/W/YI9G9PFq0XxehR7/q7wMfrYHj9L/7eg/hN7+WU+hcxM6W8h1PDk34K83ff9qfJQ2PqYW8fG8dcUI+MX62aR94nTW90ehfxr938FvXkD3TfVuxn9j81db5Xez40r6ah1/oY8r0Xufn3yifAD9lNW+Cf7qZVyh95vxfhH/6SW+fYL+d+q/i/+V8E+VT9PPO8p3oJ98HzVWv6f6RxiXrdSbQj8T9T+J/FXptVpJAb6i/Frtu+D7huhJ+X34+cv4/Qe8VXni/pP6LY7/o/nPnHzfqP+d8iXi32J+Mi7rLXpeo79vwRXgFPLXVL8a+DI57+MHh5PveHprS49naX+f8Xxh7QIcAi/Ffz7zfXGG9l+bLy7Wfkf6fVSzQ0oKcJDyKfp/kf8/6fed6G8xul3oZZzy59n/MXLdrN5WeqlIf5v9fhi5X6bvH8jZEd2r+fML2i9Gfxv1fzZ++4G3odvV+D7HumStddowcWI5vdXCz8zMo+hn/bqXfo/E50/4KeFfVfG5F3w5+40XTx8H91Dvm6wfzP+f47c1/BL262p9Po1c+S76G38/Ks/+0ATjP/tD49i/HLmqof8J/En+Xob8+Q7J98eB6DcBr/L7RPBafv85PXVmt++V38Zv+qJbm/5m85NR7LOP9lO1v4p/Habd2co/UX4i+TLP36O8FDut1f7J+D9996C/JVnPoN8FX8utZ5vppxG71RcHB6GTdcw/5qf36fUDcE981Uf3Hfx9nH0L8j+9XQG2t05YCe+qn/70vhM632afgfw70X958Az8Nld/F/q4H5yHj2Xw0b6vdqaPBtrdz/9qZ52U73lx+gJyfGJcdVOvO/+/RnkT8fEeev7BevbGfP/6fYj63fWzN/udXPHf9bIezvr3SPF0V3IcZHwPxf9J+G0BNgfH6+cwejsc3BNcqr+T+c/39HIZPl9A/zrjLt9TNegj89MQdLKPGX+urXyR9dfj9NeHXR4DBxZAqS/BVuL3QP0PNd5P0n4H/VfQ/kn0m4BXiOcHGQf/8Idfsv4VD7fir3m+X/nHVO1OV34oe4wlV3P6qIhef3yPAzUvtSs+FhsvS8A9jIPO6JxFrvnwrNe31//l5M86qHj9c5n40ss81x2+Fb9rtHsN/evBdehfRP4R4JX4HqFdGfX/Ru8DeObfufznN3Ew+3xjsw+U8ZF9XvYthf+L/b5YvLmLvvP9/YT5/qmMG7C68bEQ37fo9w/rpEOyHi3Rn362F5e6Z/2l/WTwaXAi+Way21n46m78zKKPEfB8P7Yg95/wY/nptuQrrV1H/NfG12R276HeFvwt8XtV+thknH2i/YPmt2HgQ+AR6j+FfidyNxE//ou/fC/l+ynfU48onyDeDkZnb/PBa/Rzgfh9uvg0vQBKne/3iX4/g9y/0c94/GyBd1B+Jn+ZqHwiv66j/Gl4XfgWdtkIDmH3a7Xfz3jIfl72984i393Wb6PgvbPvSv9v0H8D7Q6l/8VZv5mvYpcO8NjnaHr7AT99tXsT/Y30eaF+P6bvkehtZK+uyluavx9V/iO57xJXzjS+pqufcXEz+GL2DRJf+PuH+CyOv4+Qp552w+HN6OsL/E2jn+fQKUPOQdnf9nst/vms8hXWA+PB99G5wjh4i73ngYP19xV+FpD7EfPeY/xnk/4ups9D1PtIPweg/yT9Zz97NHw6+y0vKcA3zRuvgR/mPIa+HuJHH2hfnX5PED96iKvH6qe08VaZPqaL67P5dc5H7uJ/2Z8eSq4e+BuA3g/6a8rPvlR+EX2sI/+26I8lf74rv9J+Pn3l+6ae9vuBn2ZdpZ/exvdnfu8Df0L5e+S+gH5W57yKfHuZP2bqfx6/uob/dRCfriH3kfzmT/Sz71mWXNn3TJzfEv/w+yf4fEk/M9lrFjgX7Km/ueRZxO+3yz4l+lkHnwBvxy96oH8SOruSdwu8rPI28DX4msDebYyDCsq/pL9++rlc+7X8cT14LDgGH7/h7yN6bkh/Zem7jXGzjJ/eot0p6C+w3voR/xvweX3Ol/lPQ7ANP2mIzzuM20Fg5vvs57xJ3uLvl37wu9AbAJ6tn0/x86z668nZjJ3L4K+98XWd+h+rv4d6b8DvJu869Wryv0n8qofxme+ODYl3/PkqdGrT80/0/DP5ToSPy749+Zvy7wX4b6T+OPR302/lrPvE07bKh+n3e3zGn9pm/4Z9DzUO8z17LTku0F/Wn8+hU5M+OvCng/C/3PfIev7zHLqV0f1d/1Xo7/18z+Onp/lmG/Syv3mnfrLPmf3NA/C1hd560tO8xAvt9su+hfJflVfmL1vxcWzmf/3P8fta9L8Tzz9T7zb4u+LiP+jtjr9R/PoBdOZb95zEvu+IH7+Q42X8vpzzHXkDJ9J7Gfj4nI+KX6vMWy3Um6D86nw/+L2bOFWS/RtytQVvYe+V8DHxD/Wfhuf78nf4ZONvH/3dTL7EmTezL84P2igvyz8GajcZ3lN/89Wfa31yfs4N6ac8us2z3sZ/b/xlPZH1xUh2zfrimqwT4C/rJ+dXNfjN2/le1k/2Ycqxf0vx93vrrVHqfcben+J3Cnql8fcq/U0XXzvy/4PUX2b8TykpwGPjj/h5mv3fYv8+8IeyP47u0fj8E/xS+QL4PPK0oI+sb3vgr6b6ndljo/jZlf92AfdC5wjlZdnnPnI/wa6XKO/D35MnUJwfUNn8Pb6kAGcaT23UG538HvqYJw7ezX5/wbPe/RP+BfvkXCvnXLuKnznfur8oH2ae+W4dfB1/XYr+k+R8Kv6L/wvZ7Xr4PPo8JftZ9HAq/Cl2SHrIOn5V2vwxGH/Je2lO/6cW5cE8qt25CF0CT95CBXLvAg7NeT551hsPvfKdr/+P6Hsh/Zyo/Fv2GY+/Pa2X9gCrgs351xzxco/kQ+BrnvbD4VWVl08+hfJq/O009t4263N4JePyAHR6Vvi3/Cvo+Qr0W/j9S+1/obda6h2qv374fz3jTbu2+luCv0rG12B6b0Wfo+jrxszP2l8DdtJPU/FgMz2diU7Og2bQxyv5/uSX92l/bkkBngd2Dq7eRPZ8GhyaPEjy9TQeeoCDxbO31evEb+4wnvrxw974uZP+rlN/eQGU2g/993NukO9t/nOc+Ngv37XZryJv5q1h/O8x9T5Cb2rOl4vWLzuy68/KX8n3v/K74dtlP5DeWyu/DL6t8qPxcZ1+sq79CP85756Z89Tk/8GfNJ83BbfS80v424t/9QefZacZyq/X7xH84Tx6GpY8Iv7WDbwYvIV/tsz5b85F6e8V8WkVf6um/JTkVZJzufXt3X7fNnkT+HsMveznZp93OP2UF29a+v1S/LTAX2vzz3Ho7maddSF8+4wf/lY36zf8T6efh9kv+xv18few8XmMcfYEeiexTx941ueL2Wdv8g/Hb0d+31f/c8Fe2lfOuQm77IxeL/z9Tj+f4bMS/trzt0na9cF/LfL/Kd68zu7X6+/knO+iX1d/5yT/Av/Z96xZtB/aBP3sX3Uxz64xT43UXzP+WMM4vxR/Z2Y+pq9rwLfBQdrP0d+e4Gww5wrH5fwUfix8LHnW0U/Og2tkH4n84/F9gLjVOPmq2tdUfzp/ucN68T3tj8/5L/vsCi7T36ZS+CV3f3pLfBvMfweB94Cd6KcVeZJ3VpyPlv2R+WD2RWbop4vx08+65F78/UWebtYDQ+i9Oz475vyVfqbCT9N+E/6/w++7+PlU/PgGH8PF6/hT/Guy9hfjb3DO++g3+YuzjLsO5DvCerUVPqai36WkAMvxv43KK8nPvQNcBOY78Ev1G7L7h/x5Kf5vFVcbo5dzl97whdbVA9UbBh+d89Oi87mc1w1JfrDxt0X5oegfkvNM/tufnh9Ubxvx7z31++Fn+6wb4EvZfW/t9oX3oP9l4tK87KuT/0/124Nl8fNB9le0f9G4fgnMefLinG/j+6P9/s3/4uzvFUCp30DilvqYvddV/zc/Lawnkv85lb6P5M/7GLdP5/ycf1zIz/J9ne/tIdlvIv95+n0Q/1eJ39/TZ4l2LZKfgb9d+dMm+DvqL8j5BHovJR+O/brRz2jz1g/my77Jr06ecvIm9X8CPOdVOcfKudUe5K/ALw9KfDW+jlHvBvzNy/hOfg3+SoyXB+h9NLyadjezyz30sZR8WXf/pN0ocAE7ZN9tekkBvhq9wN/F/zrrt3Xq/wrvQz//iDflxMWt8OQtfch+k3PeQJ9fan87/X3u9ynqLVU+SL+jyDOZnHXo5wLxKPGkC/za3E9J/qhx0Za+puR+kO+RX/nxTX5P/mNv8uzAP3YEj8t5UezFHlknN9f/TeQvZ9yXBZNn/lrOT8mfdXpL8uZcKfvxS5J3lfUl+vmOXcG/mqCXfNNu+Eo+yh3aL+T/s5J3A6+j3y/o73H0ivcX33B/JvncH1onlyX/pezbVbtO4u875Ouq3YbMl/CN8JwXv6r+6fT1HX3kPljuhw3IONR+TvKf9T8TXo//nJb8duVjsj7Cf/a/HqOfyUX7YbfgZzw+vsRnJfxdYbxdDu4Oxn716GcCOb/E/6HK1xq3yX/9yXrhdv3sbr54rKQAR4H12KsK+pvx/Q64Kvv14mUZceo6cGD0K26tNE9uTR5r4jt/yb77Y9mPor8r+cNcflKDHOdov9T6/oWck8CPTxwwfywGW9Pf79qv1W4bcSH7ILk/9TD9HAE+o903YDN2zX7uDfSf+0xXW39lPbAzPg6mv135U+5LVMq5rf7PEhfnoFs6577K3ybvsfSyjh91zTmF8s1gXXRW62eteHR88pTR+Yh8HbW7Dd0F4txu6i9hz5nkz/q0XM4PMp/le7soPzjnJuWVF5+f/EnvI/jZo4nzuX+gfQPxK+f7C3P+jl5rcXic+o2UryL/jfR5Jf5uhx/N/8ZYZ05G/3LyviC+PQ+eknMX7Tfw/0v5QffcY6H/Nvpfpt2puWeU/RL+2trvX6l3o/JSxts28PL4f4l8PY277P9fjc6o5M/Sy230mXyk5B99q31/cpfRvik+dhFPKsUu9LsAvSE5r9b+Z/WuzX6f9t+qdwg7rkf/28Sb7Euw50bluX90OD/NeMo4utV6Zzp4PngTPc3nvxXZKfvDFbRfTT/V6WWzcbCEfNX4ZWN0qsPf0v4p8WwiWE2/v9PvSvJeZV5vlnuX7DcWv5vArA+yf7Yw+Z70eYj5+170y4g3uV+R+xbzMz+UFGAndG7NfT7yNbBeOwBsCH7ODw61Hl9P7jHw7FeOZI8zzSOj4DuScyD4NXqV6GmS/n/CT/Jgfgb/ozz5MgvAD8GTlf9GrhL8dGbfzdkfY48ncm7E3z/I/kDyCrNuhye/axf8rjU/1eTfZ/DPDeLlafr/Ef362t/PXnfT61B48jRuZL9j4x+5f0ZvXcSnrKOK10/r6esk9mkJJg/wU+NpCb9IPn3y5zMv53y8jno708/Q3F9J/k32TZXvY/76mN2Tp5L8lB3R25e8x9Dz4/qr5Pdti/bZVtBvKeX7wLO/1z35R/S5mX7vgef8rqr15M7Gee5hfp39Jfgv9NCF/QZl/8D8dFjGGfxy7X4Xl2rSz5/6603uN7J+yb2r3CMgT/JRk1/yk/nj06Lvp3w3Xc8e+X7KurYBfUzI/j39noKfY9S7wXrmMf0tFH9rJB9S/Gsc/zKuO6A/n37WwlfDk5+dfO3kZ98gXiRPoIrxmXliPH/+EX8z6OVl9Hcl92XKK8aO5BspLjdLP8bDpNwTBLvxh/fM4z3pN/tO04r2nbZT/llJARbfu5qp/7uSd4LvB/Odo31x/mDyPccm/1K8qUrvufcxOPFcedbXV8Dn6+9ccv9o/dICvzm3nyGeJD4lXiU+LUU3+RDPsUvyxAeYv7NuvDPfF8b3vdq30774/s807bZH93b1W/G/7fnf7mDnfCfwv3fFl47GV/b/v8r+Cn0V569cmPuIuT9BH5Ny31Y/N6N/RfL/zS8Hsd9v+G1Ono3kvwH9Y/hjD/I1hed+/kHscy+/HAT+hV4/8SHxbbXfD9R/JX5RF38rjcf27Je8gK/Il3yBi5QfQx9NxIWm1iN74f/xovtNC+lxf/3X5m/F9/+zz/yL/vMOyWnZT1Xeifxt9L9RfH4KnTHo/q9zuDrsnntquZf2RfKj9fsAmPlqH+V5b+Ke3DfSPu9P5N7t8/jI/scG9Tfptzd+ck41Ap58rDuzfsf/RuVVxbvsGzxKD9vq/wj+0pKftgBzf6y5cXFH1t1F65+snwYoH2e8Z/30T/bzyXOO/rfAzzVvl8f/AP3vDl/En+bykxL1ky+d+3wd9Zf959xvPSj3++nlTfgbuf/Kv+qhX4v/ZD3ylfH2gHYHk/c7/lNe/RLj4mD9b0Z/Bf3N9nsf/tSQ/FPyHgG/eBmdY7P+zPyunx3AbdlzMX3lvZrG7Pm68Zx8oP3EwerizxL44/wr+9wH03fuZf+v37P/fVLyJXI/Ad6VfN8UvWeyq/XFX+o3pcfF7H0FO+1LH8dnPxOcpv4++b4i3wfgK3mfRPlK/a0A2+eeIL+pY11VJedCxktncp6f+yz4aWe+7539ef5cDt9r4API+3ju64Hnq/dc9Jd9QfT3Nn7eTf500f5x8oKyf7yGPDk3Pg5M/vks/jIb/ARsSa4yJQVYjfy5N3gF+arQY3n9foz/3I85Hb8j0BmMzjFF68+sN7P+zP716hzoGNdN8D+LfWbzv8n4GJ18waL7udPQzz3dfF9sImfyr/JeVpXkV6NbGt/Je9uevGex9zDydMh3eNYT/Cf3ppJ3nPtTTxCvjvrN0amefXj8dBVXvsF/7hM2yvlP9s2Uj839VvLlvkbicPLnE7dz36N4vz7vLp2Z/Hr91Mv5Hb1UZuea/Dvnfeuy7wrPvm0XevwD/+tznsPeye+sIj7slnOIfKeQvzv7P4y/S/F/MvqXlxTgZuO2J/yHfOewy0h6X5Xv9uzvJt+U3HW0u5Z/NxF3GoMHgnXzHY7fl/Iegjj0vfYL6GsqPa/RzxvabTXvJG+yOJ+yLrmOLHrH51Dy/wTPuyoV6O1Z9vs176H4zsl9qKPxeyy/y72p3vb7cv43KeslsDb+cz5/k++WnPvVLnrvamfxZjv0Ts65Kv7PNz9uorc/wK/ZZ3DyT/CXOPkp/8+4znr3qMSX3Geh97Pp92zjdVLyu3IvP+2yL8x+uR+TfeAX8P1/92OUJ694Grsmv7ibdcMg4+husPi+evC2Revnp+hvIvhw8g7Bc8iVfNiDze83w5P/ln2n7EO9T39L6T/r32/R3Um9ajlXLcpDS/7Zj/T3Lj97B9wp+/D6f54+sg7N+0/N+HsNdJrCF+S+WNanYB/jb1W+L/VTgv4z5Hw956f6G5F4Sr7rcr/Y92jifjn9tlN/Cn5uoJ9nkgetfP/kTWh/oPa9yLcev41yXzfvPGR/yvjuJf59iL8p6NUkd/QTfTWl/+ShXpfznbwTlXeA+EPeP9nT+Nox+WTGx2nZxzE+yimvT57ku9ycvBj4bfy1v9+r6u8v4zf7C9/mvkP24fnfduhknXQR+y1VP+vZA8BG4H+VT6aPz+kj+S170m/p5Bfjr1XOE+j3EXH1IvrL+cNU7Yvft8r92Wl53ww/94F5b+vv3EvR/xm51wXP99D36t2D/z31/wv9DaDfvM9ZnN8xS/y+Hd0fco+dfy5nj03WxRuST6D8APY+iR+2An9Rnvy/yf9jHuif/Wvz+kr4ebm/qL+8M3mO9Vrem6zr99b0/y75cv93gnjyFJhz7Jxf535A7gVMpL/Ew+jjKfRrwvO+Vw3jc7V+845Y3l993Lp0aPLzcx6nfTfrovO1f5+/5Hwy+ZXJq0yeZZnsTynPvYxuxu0Z+L+Gfaqz81j8708/Z5cUYE/xYzo5V6AzAD+3kCdx9dnsb8Hv11/sEf2PxV8Vesl7Y9dnf4VehhkXffMeat7Hwndz+D7atYF/YfyeKz7er/9F5KzDX+qCWVf019/W3N9i9wX6f18/I8X3HdTvn7wr/Se/5XWwKj0lv2FH43kVfv7QT+Xs7+gv78K1zD6S8gO0m573LYyf3N/8nV7763+R/pI//LRxXSl+RY7lyZ/mv+/nXQT+2hE//3Vus7/13yjw1ORpFuX/1dfuL+XjrFd+890zFv4xufIORfH7FAewa/F9idyjKMF/8Xq6WvJWjI+u4nX2R7fiN+8bDBG/Nyh/235f7vflPeDz0HtJP/fnfhN/yz7uYnHsOfbvaz27WlybAu9EjrH4ewocB05E71TxojXYHpygfAp9Topejfcd0D+TPfK+2AT8/0D+t9jtbfBC8q5Xb5R1Y/Tcn12i38nJj0U/33ML+WfLrGuS76V8mP57kbcn+Lbxfm7uX/GP9omf+Hox+7va5bt9RvJo8Vcv61583Jb8B/zdyr9y/z738bP/kfe3puZ9AjDvbxWfeySuZX1yovL32SP5XZcm/0q/r4gzw+B5/3Vf4+15cInxmPdj57LH5bm3w48PyzsO8LyP04md8334fd7v8vtD4K/oxX/XJC8HjP8uMV66F0Cpl8F2+Cu+n9SS/HnPdx59rqb3HrlHU3T+kXOPqeJTzj/GaD8y91/Rf5t9Ps2+LHqZJzM/9sHvBfzlUnTz/tqz6D8H5j20usrHimstMv+bR0/Qf03jMt+d+Q7N9+dLxk/O53Jel/O5tdZvySv8Eb5r7oFlv5rdNsA/yft77LsLuW5X7xv8dGfP2+ipSd4fTN43/zoYf9saDznneYJffsMvi/OPkj+avJAnzUcHkf8dfv8Kvv60fpya82z6rIHuYvLUpv8S/OzF/v/B/xf6e4j+HwD7ofsH+fNu2d9+fx+e/dodwewnPaf8LfotTS95b3QduZM/nnfZcp/9EnLmvmjeI/w1eae+p2ZFfzlfAB81HjIf7Uzec3I/DL/1s59p3OR+40z+kfgxK+uW5MOIp4k/G/DTkJx3wnNfKN8TZ4MbyHlD3gNSP+e4yS/JeW7eZ8++as5Z8077JvxsQz//IWdX+v5Lu6/1NxefFYzvX3MvBl95H7WG+qfk3ABcjt6i5LmyzyXku7mkAN9g/32Nx9I5p7JfOZYcpcXHc+lhnnoP5r5KAZQaAr4FLtI+/xehCdhGHMr/R3jIuq4FfnfJ/WX0j8r6Mfm4Re+vVM17obnXo3yN+sXru9z3yHvtycN9K/Ny/n8C++UeROLCtvq5NPeT8X82uq2M9z3Rz77mXernHaTcDx9C3o/h76j/DXwKfmKf2GWnvD+Q+5DZPyDnj/SQd4rL5L6deNPM+H4Tv+3F8XZgzcwj7F+B/XP+8U/eMyh6P+qJ5L1m/Okv94pzzzj3i/ePn7H/6OwzwvMu9vfg5+Jk3smuJS7Wy/vK+HsGP8mPXqKf5HEkP/qcvBuW9zbIPTj5aeaPe/E1kNwPJ79P/Hpef4tyXxz9Hub7v9XPe7h5/zbv3f6V/ovev/0Z/7fzv3b5wMD3Rvqf6TvgiNibfs4Tb88FK2Z8sX/uS+e7qir6uT+d/JPu4J1F+Sh5N+ge+j2/6P2gSuiXJU9F4+Vz/X9Arj/0P4h9LkHn4aL7cQP1/zE847d90fjthe4j1m9Dsn5QL/udp+c8nN5a8PfB6p2t/CxwTu674y//n2YcmP9Tk/9PM5J+mvm9vt8bZf++KD7skfzhjC9+n/yZyfBu6k0zvpaBr/g9+/SXqV8698XAvLMwmVxD+N094B7JR8n7UMm7gE/Df2nzxWW5dwdvr/8B9D/cOml+9MHft0k+Pn3m/yUMynygfu535b5X9v/a0fsB+ukLnk++rPc7+g4o/n4dYf13m3m8E7yGfrLfe2W+y5K/Cm9i/myUeZQ8tfh7+aJ1zf7sOkJ5J9+Ls5Mvl7y7lJN/AH6TT1xReWfxZLh6XcWj09jnk+SR5PuO3hso/0/269WrnnOwrDNz3lWUH5T7+fsaj2tzzpK8LP3c4PuxCT6rwY9G91Tx9TXr98uSf6K8MX8dql0z8nXHTwW/51wh5wwV+F/mx9xPXJl7ksrbap//T3Qn+fL/Rb43Pl4k33x6GU3+3uw3Xj+7sO9c9sl7n+MyLvnJz7lfKN7syf+Sp/kAOjl/yHlD/DH+V9d4rIy/tuaB7I9mfZl15RZyZ32Zd9hyT/8w5bmfvxM+L8x5Av3l/am8m/oqfu4lb53kAxa9j13XOiL5JzXpd6/s89HDt+TpZb14uHGce+Tv0s8K8WYHfHxs/F+d9Xvy2bK/hv/hGb85n8+9sqL3zebk/x1p95X1x9PwzfjL+6x5r3Uv5V9mPZd3lfB1Cf6L1xcVxesq+s97tXl/4y585/5IffF6Qu635P4l+9xSUoBv8pMHC6DUfuyS/w9VGz935t41/CLz79nJK0ZvS/Z36G9xvv/A5uqPsL68iH3zrnmp3O/Hx705F8ZPg6L8zdJ5p1G9e9Rb5Ls95/o558/5/gzzTs71c86f8/2bc37NLlnHZP1yYPJ9+cGt7HQlPTezPns+70yCC5Ufj/+V/ODA5K+j3zrvT6B7lviwGT93Fn2/Xo/uMPbJ/38qod/i99dzb3hY8uvguT+c/Oz8X4S8i5P3pz8Wjxeiu1D77A9/wz86oLNSv5343y70sUWcfJm+StTvSO7i/e/9ky9Ff1eyV+495ft1TuZPMN91+f9bw6wPss58gr6zvlzCvrvpdyl8TN5v5B/JSyt+L7sRPO8bNcg6Oe8nF90fKs4/2ov+ks84ix5uor+D6fNRsKH4kPfxEhfOS15d0f3frfT/IX3uYfxkv+ER9p6j36y/1+Mv89tw9DLPZX6rRl/F76zcoPwl9X/Tvkfyq/DfNN+VyatQP//PZwZ75RzzQfE155frxOPch8796HyfJD5NMq7mF8WrvDdcvG+S94eHq5/3b6/WT2fy/cMvTtf+N/Huz+Sjis8NwcwbefeyTN6dROdn9sn/hxplvIwE6/i9Nf2cqt092l2L7xfpp/h9+fz/rvvoP/fRsq78CJ2sO4v3tXKfIPcHkn9zV8aj/l6DzyZf/r9P/t9P3o/JfY3c43jE+jz3OZJHMEb9nEPm/2O+Rv6rjKMj8Tcq399F5zPF74vm/+/k/+5U198dOZ/U3y65t2q9+Lj2txRAqfeUvw7P/vt881PenSx+j7L4/clJRe9QLuc3yc/rm//Dmf0981Lidt4725l/5v547o23Z+/cHy8rPl6SfNh8x7L3VP7Qlx5O9vub9LM7e+XdseL7ky3ZJ/8XYB058v8BFuU+Jb4mlxTgA8nrVD/vPuWe2mvJ91Seeytj+OvM/zF/tOUHmUcuLoD/e18l762U0O9V9J15qQ/8O/SWse9Idm2Cjw/QP4Ic2c86Rjw7LO+7kOdkequlfSv2y/s3F/o999xzvz3//+HV5LPjsy/648WNceCW/D8u9ZaxT/5/xv25F4KfF9kneeTd4Fm/H8j/Dsv/hQC70v8/ReeffawnrmD/Z9HdhZzJG0m+9VH8Iu+nVibnf3M+xp6xV/E7UlvMl+9Zn2c9P4d+P7VuyjuMXyVfMfcDk2+Afhf2uo9+H+H32afKO2HZr1pE77m3tAGskPw8cme+yHyyTPlX5pPkqVyhn9eLvu/zXb9M//m+f5E8OW98C/2z1c//O8r/Qco58F/0k/9HXIE80cvB8J/Fl9ngLHCgOHEAee83/vM+d75Xlqif/xNTAf+f6v8m9R/1+307/Vu+B3I/ShzfmH1r/c8m/3X85uacq2u/q/bnK68Ib6O/gfn/cFmnap/38R5Ff17yRdS7RHkr66K16HfN+UnuF4gbOX84W73d+O/hxsfpxk/2JXviY4Lfnyb3E/Q4VfucS+f9ibxHkfPpvF+U94puhPcj//PWTX3xfVH2XZP/Y17Je5aH2OdJfv8JxltH42975VXwk7yfL3OeBib/5wTrvcSlPYznD9nv8uxr+45epN5h/Luy+F8l70bz8+SPbKDf2WD93D8jZ+Jjhwb/5iPxcmr+vxaY9xrfUX8Uvh4D14t/lbXPu+616CH37kYG8o+G4LPmm5xPdytaf63TLvnPZ+gv5zId2CHnNfHvxfQeP49/12GnBvAn1fuA/n8w7vL/ItbCZ+e+B77znT64KA8/3+e1+dEVRd/pb+f/YsKfQTfnz8lfTN5i8hhzfv4M/t9TfwflNfN+ifFbRxw6FL4q76uI39mnn8zO2a/P+WzOY6dmXs/9aPF7gfhXvJ7K/y8ojov5/wXZj83+7Ej+e3jykfj/bvQ2hz7vg/8/+9QZU3icdd13+NfT+wfwTxRSRruU+mgoLSt7hBBCMrJC2UmkgaRJQqQkoSVCZERZFZUoMrIKUUaUEMoW+V3X7/14fq/L+7q8/7mv8zrn3Ode5z7rPuc9v17J//++blqAj+1cgHvvXoDHVSrAsVsX4FvlCrD1HgXYv3YBDgCHVyvAdfDNqFKATzcvwNt2KcCd1O/dqABfa1aAg7R39q4FWLdyAT6k3DJ4V8D3oO+X71SAH8hfKb9jwwLs20S72l8GfiV/z/CvXD30fAF/n5YF+E6LAvxptwKcpN5zYAvlxyu3cdsCrL5dAXaoin7lutYtwLbgvQ0K8BP5k2oWYMPGBVgGXRfgb9IO6KfHt+HZBj0nq/+x8jfR7x3oq0IOY+F9R/vLlT/c912U74mOv6UvwVczcjuT3dxIv4+h72H4qrOPvvTbZYsCvBxdnaWnyp9bvgBfBBvJPw/ddX3viM725Fsfffuitxr63qHv2uh8gpyfge929nYS/Q5S/mDl9lfuUfV7S5eSd486BTge/yfAt45dd5Sega7R5PI3+xqvnUPxXwV/0/Wj3+V/onw99lUfnh+V66T+IRUL8Fvtvkt+v5NPuVoF+JB0n9ICXKt+A3SX4K++9I3k3ZneriWPA7V/Mf4fpY9Z4GywG3yPxj/A82SFAtyG/CtsXoC9q6MPPJw+625ZgDuC35YtwCPkj4J3hPRIcu8B/6X0+xE9HiR/Jf7e0n9W1CjAJdJXw/chepaDw+n/NPnz0dV3mwJcTK7faP9m+jxSu/Eb9cnza/m10VcHng/g+VN/PVH+Rn7gD/i76G/j0HMq/3C/+tfQx97aqSBdTv3y8D2PvkH4P5j9ncDvTiafbch7AT5abF+Ax7HPk+l9kPS+6Lod/Tuj40X5C9hD9LMNe28h/2b2uKX0M+pXRt8s+o297QLPpdIvG886qfeS9GTyaUN/p6h3GP5uYd+zM15o/zPyOA7/5cnlHPUqSA8n3x+kS9TvgI7FyVfvK+18L71e/kXKd2evA0rxIf9uertfvRO1cw75HGZcbwPO5M8XwbsNvzGM36gMz5fqV+Of4pfir6qRT2P6mSa/qXTGj6N2LMAe6QfSP6J/re8N8LeF9Brpeux5R7Au+Iv8Zei+mP6a+/6R9lvyPz+h61nfp+h/9/o+GYy+l5HjB+x7GXgwe5mn/lD9p7X235Weqf512p+Ir/fY9zD81+S/m+DjGunZ9Pojef8ArgefoJ/J5PEZO+uCjoPxWcL/bye9jPy/Un8Oe+7Az7SpX4D9tT+XPC4h1y76a1/678ufzIHvq4yT+DtZ/jD2tws8m5PfR+xtZ+0cj95p8i/C14tgf/Ltot7VW6kPtqSn8+TfxD/OAG8GR2mvlnJt0N+MPDM+XkReI8j1TOUnyT8cvkfMg46Q/oscZqt/lfGjU2kB3hA/xX81Vj5+8EP4byO/TcqVZU/7Rn/k8hH72p58Tif/yuxpLjwN4m/oYQJ93gdugmdL+I9gB5mv383+mtD/YfzpEuuDp42Pl7L/cezqAXz11f5O7LG97/3A3bT/J3lcQq+14Pta/e7pv/E7ymceuJf0Bv7tDPwPJY9p8E3QnyeBE8GK8D8A32fwXZ7xh/y+I+914FPsp5X699P/feCv2m2T+Q/57O37ofBWlJ/5/Fzf9816iH5m6lczwPX8yN3Kd0d3O/SswM8Y6Y3sarXyz2S8o5+F5Pcb+A35tVZuEL2/lfmz9h5nHzvwd3XAi/TPo5Wfrl9M44c20/+3xfd2ymWePxWdT6NvLXtrQ74Hkdv34C74OxW+Kb5/hP8Npfhh3xXQP0X6ZnrdJF28vlhuPD2R3D+Wrqq9P8lnT/RuwM9Z6v+k/24Ad8PnF/S7yXx3CTldrL81gm8G+7lJ/xmp3WryJ+rX4/B1r3R3/PQ338u8bwDYHp1l8L8ZeCy974++FuhuCTYHYx/HkcuyrGvY+UXsI/PW+8n1QnSPp6cW+v8H6v/MztcqdzB7OQR8Ff3V2cnL+uMselggfad2X5PeV72dyf8tdNbj7x5WfqX5+RHw7xO/q3wf9NWRvhZft8D7GD1cTf9LrH+Op7eXNivAjpkfGk/GqLdWegT+O/Jr5eEfp58tJd/l2v+FffxP3vR/vfzsb2S/I+uUfdhXs8wH8ft2xkf2fgv6h0tXx99Y86qn0bcYHT3Ql3Vj9cx7pDOP/06/Hpx+ATaWf7bx8Al8nSP9KXoPJI+m9NWJ/X8oPZbe31f/FbALObRBV2N63xl8Q/tzyaNi+oPvx9JfWfZ1te819aNH2ccY/HTT7oXy7yb/6b4PQ89i5beA/y9+s535x0T515LvauPZM/hYpD/NRe8I+rpQvUbobAn/0NICvAH8QD+qiL6n9I+fyXlO5ES+R8N/lPIN2cmu2Q8pgJJz8D1DumbmL/gvi6734Kupfl363oedZb2Ufa2R0ndJN2fvPdnvCHLbVv5h5HAv+VXlz6qDY+D7gT6GwXes9GjwMvZfhn1tYgfj1B8CfxP9uQXYjZ/fCh0j2X9N9aahdwv8d5duTK736K/HyL+NXPvhrwP4Cv5nwLsbe6wWfOo/kPU/eB59jINnTGkBLsLfP/TUBb5h+LkR3Fr9VeRzAz6z3/COdC36P0a7ba1L9pf+Lus0/vIL6Xb8aR16yPov676sN7L+G4D/f5SfT59XK78NebZC11HGmbnSv6Mn+h+p/bulsy/wd+YV2sv+wET9cTq5VYP3TPLrof++oH/tTU4T2M9t5LqB3jYnh8/BI+HNuJNxaAL9Tcffjujph97W5HO9/r07fF+bj9xAPlvhd4/sl7H3ofK3g6+v9s/F/3X4+x49FdnjGZk/omcI+31W+ZH4aYy+Nui/CpxfhO9888Na6g1H14/kOJp8R4ET5DfK/Ay9GV/6xZ+grwO7r6T959G7pfJ/8BtZV2admfXld+wt/aYnPU7B73Lj4Vh89fd9VvZXiuwxdnoZ+k5C79z4X3rP/HVY5tvafxv9j7CvS+jvefmt4HsM/cfm/ATeb6VX4nMsvn/L/h98B6u/pXXFHfz3EvT3Vb+98fpE3zfpz79KX6B+5i1Z52X+sq/2s2+4Dr8/aP/vzDvRXz/7SOQ81ng3if8pJ//8nAdlPqEfz1evAfku1t5d7KNv1nH0s2/219nLdHQ+jr4LtL8WzL7mUHhmk8cssKf55yh0TiotwNboz/zpc+3vpHxJzjlyDqidvfA10bj7AT80QP7P+CsXeeNnJvvZjX9qCe4KXqfcGvOF7vj/Svpa9B3Ev8Sf/KM/PSt/R+uhx9EZv/Sc/CvZw1HaqyP9Z+w5+/7o2lM666u3+Y+cz+Vc7lL22Z9cz6Sf7Fv9Ab6pPz1Ar0/T2545n0BH/HEf9vgs/Beh69UCKLkanEf+f5YW4KfmCSvB6ep3Q/eTOa/MPBx9NemvFvgYOh6S31P73+tHnfCf+f/o+Ed8ZD50vPrZ719EvzXo4TPtLNduHXJ+TPlO8vc3L5qq/wwpgJJp0v3YY/usV/SDJuirQS+f4bupdj6T/wH+7tHejVlPst/O2X/A97PWs3+S7xj4M7+/TXoL+Cax51vVr5nxMP1P+Z2y3pS/P/pqGk8PUa41+Cx+Ls/5KLo+0U/Hw/cXOVVSL+vzLejjvgIoeYQ9ldN+c/JsTJ/3kNN48ET5D6DjU/x+E7+T8w79crR+N4GfH6j87vA1iJ/QX5bDs4h/fxXMftS58n9hH01KC7AZeLj25/LPh9HXmfislfM3/GZ/MXLN/uI+1k3vZt+9aB1bh79sRZ4t2M0Z4K7wnyp/sPRf2b8zf8z6uxF9f03/59Brc3Y9SLnryb8T+uaVKcALwAuVu5PeM77dqb0n8fcSe1iLrg346iT/Yvnt8X2ucj+jbwvf+2nv9czf1T+e/utkf15/qs/+T2VfU7V7P/gS+eyYfWn0Z51zCX19Tl5Vc/6p/Zvk38Uf5nzzziL/eEspujNf4+dq01/mDTl/jB4zf6gjf072saXr4e8J40MP+jqAfe+p/UcTt5D9PvwNJr9R7C5xOy9IL0Bfzi9zbplzzE3ab8IfDAQHgVeiv/h8LudyjeHfLvsRyk3V34aTx0r0/IKOT+G5F7+78KcrfT+aPU2Wfwv9H4n+hujfjL4zn8864WHlsz6ol/gNdrDA/Pks/P2iXuIbrlT+V+mBO/87/zTlE/+wjv8sVe4KdB9PPsfhqzx5vKDew9rva36yH3gCOZ2Dz9+19w/9l9VOF/xdot9/ZJw7Bp1bZfwkz86Zj7Lfw9H5fYN/81F1x3/z00m/XKb9SujZDX/7wHsq/nrid0nW09aDd4Jj8DlI/vrEdWhvs8Qrse/qWe+Sx6nGy0raL/X9EvBc+vtW/T7GkwnonKCdu9R/Wfl56FoPzyr0zXcesQM/ekD2rcl/e/raFqyc+DD6PZ5/PQ5chN+XyWs0uZ/E72Y9dkvmgdrbDP3X0UMD9OfcL/sdP2YenPNj/n4wue6S9Tz63kN3J/BI7TwB/1PonQlepr83J6dj+It17K98xjP4l5Lfxvg99J9MP2WN1zk3mQNPy5wD7Pxv/sJve/hzTtsP3lbKd5O/g/HhcPprZZ4ROQ/mf39Wr4/0NfivjM/sD9dQL/vDb0pvUu4ZerxM/THmk63x0075oYn7wu925HQZ+vbM/JjdvEividNpD/+R/O35pQW4k/6S8+U6+vun/Ow9+Kys/kXoPR68GPxTe/3gaw9f4ty+BJvLv5D8q4DZPx7JPr7jpyaTU+L7lmQ/jTyL49uKzx8SJ5X5zxf807f2+dpaD9ZV/mP6b6Pdgb43U/8k87NVmR/je7Psf9PfSHA+2I/dPYferPdfQ+970Td/9RU/FP3/Lx5Cf1wNTvO9B/oOIr8a6O8Iz7bso6N+ObC0AC8qgJIP0dMg8VQ5J6D/FfDXZz/D4B8t/x/4t896AV/N6Ol4cnqYPiroN1O1m/Vk9Fkm8y94zwNzPnIzeeWcJOcjC+Xv4vtf+D2yKP4q8VaJv3oG/m7Sr+CzVuxMe53o5wv+byp7epUccq6RuNfi843sh2R/ZLJ+nP2Rzuhdww8PA0fA9zZ87xofDzQOZR9oUdYn8H+N3rfJoxc6H5F/Iv9xDf5v9v1N+G6mx4vQ/wW/uADfmd/fr3zWbz/6Pl57ZyX+GP+n0NNE6Wnxn/pLJXDn7HfRW+JLxmVcR/9p6HtH+cRbvi39K/vIeJHxI+NJ9sHfyHkF+heXqp/9PPOdS7OvnfkM+VVU7jXtHYWOTvgbSZ9bsp+npW9Vb6p0O/KaaT68PPFt5L8hfi3ncOr31a9eYScjivYPXimKj/4DfVujP/ux2Z/Nfm0j9XvR+xTyf5kfXJp9XXi/L4CSo8m3a9Zh9DVVu9uDLRMvTL6Ra+Sc/a2ca29FX8Xn2735xZxLNKfPddrfIfbge23pL5V/gzwfooeXwcRBViTPpugcYrxsyv4G5PyfvzyM3O6m/+LzlO/13/vh/53f6SF/C/W2TXw0++2u3jx+YFfy2s38PXHL7yTuR/2dcm8Bva/G3+d8n/9JHEaJfpL4i4ba3YjexKVPVn+x8tnXnoz/7A80yfm2eeFP6HgRnS/Cdyv5JT5unvxROX/PPQl0HYqe9OvEbSXOJ/37OfheRVeLxNVnf5z+Fqt/jHRp4ufY8yvqvWiekniO3+DPefH/zo+1/6t+8w86W2WfH/571a+Ev+8yD8H/m+zvDbA/e7mdXovnRxt9z/h5K7+6B/lPKy3A4RmX+dfsZ89DTxX1JxRAyQjwXPCqzLtzXpa4FPS8jf7XtfuKftoucVjyz9AvTwNPB1+E/4Ps98ZvFO3/5FwscZhXFJ2TbcU/HUKPn5D/azkHlL4Z/vfJcW/2PdV86iGwGz3dqf6nxvPh6o3mTyrTbyf9awfrq8RbTkHfEu2XNz5cKf1g1tPGyxvJbTB+Pifvg9hDV36tl3JT0HMe/Y+ih/vMd6bJf0T5xPeOI8dm9H8IerKP9gj7zz7a5r6XA8uCc+X/QO9ryWu59KPoT/xK7j30V+8I+r1G+RHk1lV+L/KJ/WXdk3VQ1j+V0Psxu1ya+D/5b8L7NfgW+Be888h/Plgl+7/a6QvvKvxNA39OfIJ++x26d6SnOfAcRy81tHdVaQEm/mWv+HX2eU/Df9NxBLyzyOMY5brjbwv4nibHU5S/FH17mr+flPhRcmxddN/oTu21TjyC/MQjdtFuI/kD5F+I3jq531AUH5n4vpX4THzf+fL31d8Sz/+L/nUF/Kv51z9zzyHnoDn/I//MR1tIN6O/H+h1HdgYHRvJ53N4T1H+Bu2PyPldaQFeC/bB38yMN4kz1/7+6DuCfjbqX39nfq3/9EDHJcpnPpJ7Grmf0ZN8h2r3YDD7n3fzP7P5gbXZh1Vue/zlfl/u++V+X1101UTHl/zUOulHyX89et9M/DT9/YreH32/lL4n4b+29XgreN9TrnnR/YLzSgvwBenZ6N2MXTdKfCM/m3iabfB/s+/DwXronYS+h/E9pQBKnkR/7tu0QdchicPNPq72n875OLlNV/839UsTLy/9gPo7aL9B1hXyE0/dKPsHmS/B/036b+KHiuIoEq9RO/cTwo/vu8HXI/NP8ujDTjbL/prx7eLsc+qPib/Ofmz2ac+G7/Dc76XXp8CZ4IPk/ZpxdXpRHP0KdHYg96xv1yR+U/57xsON6r0vfQH7uZF+jlPvt5wPsr9H8HWs/P2sVz6SP19/fAm8kp/YUfny6GtC7gvRuSHjf8Yn6UHZv4A/+9d96OMCeLJ/fbv+nfnKkeSe/av6+udg+noLPT2yv0aft4OjwazDriCvHmBPcHv4E3+cOLCssyqzv8StJ1498exr8NuIXeylfiXlmqg/m/7no6dy7o/iJ/FGq/GTfdnEHy2QnqHc+bkXEP6lm8O/Qfvl1D+CP/zOuLAO3Kh8A/puCDYCp+c8EP7MP8fmHCbnO8ptzl7fDz3aP9x8o4V5wa5g+5zX0ddcsDa53Jj4sZx75f48unOfexV5fg5+AQ5DT+6h9qbv2zN/RH/mndcpdx17yPwz94ESr1lDf9ud/seZd3+Qc0fjZ135+6nfFj0jc/8r8wPyOjXzdfS0Jefz0bVO+iN+YD75rMv+C3is9cHr0r9bb9yk3cj/9ay/tbdS/sLEHdHfOfjpAZ4NZj0RfSxA3zr89Mr5OX+6O7zzpZ8gzwvRm328vXyP/34avt9yn0h/+5Q87yqA/933T9xPB+2/Il0159H8d2v4z2cvz2u/ceLt1HvW+HMRvd9hHLw86/rsc+L/cfi3TvwP/7sicqDnO/HZ2P7DnsaZLvj8A76LE6ed/UD4G6J/PXoyfmQ8yfixjr2cRG+94Is/TbzMwWDiaSrBk/XaB/zecvpI/Psa9HwNrgZzT3cb/F1HTiPs78yUfiTxPOiZFj+T+93sdSP4R+KAtf8T+p6ltytzPzD3X9DbM/MueluR+S/7G2zcLEPf28DzOv/5Bvgm2F1+belB/Nfb6jfBzxvklvOonE9VyP4AumKfsdfY5+bsLnHUFegp8dMHqX82+BQ6ZuMv8RiJz8g+9Q9F/uku84LvyC3xE9dkPPQ957w53x2LvkPZzfXwZT9ukfFzcvq3+qclvse8I/den5bOeeMcel9aWoDPSvfP/m/GvewL8d9Xof/p7Avh+xnpz/O+hPSR6q0pmn/29n0wfXcGt0r8Ivsr4f/L6+9T0JX5a+at5cgr89f15PIkeWyj/dfRdzp9dgTPo/8Xsq9AXpfZBygT/5fxjl7n64dtc16beHP0jDdOjwPro/cH/WNI5sOJJ0HfEOnXyeUu9Cee7ADpbvg9PPGc8hP/NTrxcrmfTX+xp8Q9Z793t5xv8KuJl31dOvdpJtHH/85/4M/5zwLru8SlZDweA/917ONKcukDZl31uvIz42/x+1Lio7Kezf6odrbWv3N/K/ufuceV85qq+lX2bVZlnw3eB7MfqXx1cGPkrFziP77JewLoLOWfDtRubXY0Bj95DyT3rm/Q3v74uznnjewh9xhLcn/D/GMCOMD4PQveo/FTRv71WV+h+z70/KJ/XaZe3oM4UPvd2PdB0rl/8wn9Jx6iIvq6oX+9dr/z/Zv4cfKpQz4L2dVd6FpPnuVzbwesAE5XfzJ/14EfzLphRuJ74v+1fxk574X+S3MfFbyKPHYl38vI7xF4ch/nJ/WXkuev+LqHvb2TdUZpAa5C103q7QL/YUXnGl8mvkT/WFQCL9g5/SznWfBvR2/P5x4q+az1PfH6OyVeTHt5v6eD8p3xmf47Ff9TwLyT1R8/J7KbvJN1nPQA+XkfaiB4Cph75bn/l3t/mQdl/rMlfp7nJyeWKA9/CXlvUO53sCa+M38+L/sBuZ+c+Sr+N+OnxtpP+lP9081fz83+DT5fhS/3w7prtzhO6ih2HT+9tfYnym/Ofh9g75usD6vR7yTzrtfyjoD+1pY+f1J/A/gzOC7rfX6tLXgEeI/8r9D3JbgazH2Wv8h9K36pE/ofRd888+OR+nlPchgvvwl9Py59uvoH0u8h+u1uYEuwDPmfmnsl7GIjuQ1Wf6n26iZev7QAL5Z/Fvuowv8fj6/415wX5zw+8SR5XybvSZyEjy/Mr/O+RH/+KPdccn6a+y0TyLNs7k+xt7+zjsg9bfLZXfs9Mj+i99nyr5C+FP5j6WUX7S/QzvHKT8z+FT6742Ni7n8pl/dgLig6P8096FvIPe8dTZGuoL3MC2/EV9vcQ8q+blF8yIbEP0sn7vasxCMqf5r+MCl4wM3Q1xnf2SedoH72R58kr8z/6vjeDv//da+oGf1nXzX7qdlvHUU/K+HP+mch/baF/yvp1eAacHDuW+deMHldgo86eZ9Qv6oHvq/9q/CT+0a1s9+d+DbymS29g/zcY/pYflPyPJD8r857begqflcj776UoG8B/WWf+2T1ct839xJzj3iW8S73hzeWFuDPebdGev+8n1R0X2sUvIsTh8o/bwK/RWdj/NVHV1XlM/53l3+bcb88uDWY8+sOyneFt1/WP9Lv4acz/jYjz9w/q4H+A9TrkzgI8Cr2l7i5vvx33sf4BD1j2Mty6cQRD+Ef6+G/clEcwEj+tBr8t0t3yTsX6g1mx7kvk/sxZxnfZvKfL4E94dsbPTl33Uc656/Z50xc4eW+J76wHX/0OTl9BlYmnwPQ1Sbx/vDlfG+08WeGeokbTnzkpsRl0Ff2ybLfl/vQ7+XdCf0s96Ona/+Z7EPmPgz5NMj9FHawH/lkn+0ldF2t3ZPRO4B9tNVeBfaf91pyLpr4p57mJ9l3TzzUbHa1K3q+wP8c6VbkvrYASnqjvxL9X4uuQ9BbC5/d8N+myO9cG37p7wzpf3KPI/cZ815E4h3BEeaHdemxBn/4oH6QdXAr8jldvQONAxvZV3v0XpD1XPgll9x/mpT9J3Z8a84tsk9sPtWanC+XvpV9tJWuh46DpMfDk7iHRcoXxz+M1R8TN5d4gJy/30R/W+W8S7nh0vfjL3GTuSeV+1FDiuLLB0kPzP0v6ezTNZe+OPFP9L154uTYS2/8fEGv24GNiuyvAvt4Rf2K0qfon0/mfBK+3DO8XP7b+se2+Pwp943ZX6/EN8vvnf0E7XdjN3kXdgk+8z7s8+wl9z+uUP6txA+TfxvyHpD7Y+zp2LxvAv4tfnCp+jm3yfuKnfO+Fn5XsJcDcp6sXgv5+yXuFrwj53W5X4afp6TfVy7xAzl/zXlr1s/7yG9qfOgSO9ffss47Bv4rst+K/13h25c+F5oXvJL7VNoZSh+P5B1H6XHkn3XGKPiG5n5W4u+lb5efdcsk+XtqJ/eLWurPq+Of6OVrdv1y5ANf4hN+UT9xCnWzHkl/yL699nIeUEH9FurnPd6jlT+TfPKORfH7FTmfy7nQYdJfZv+CP5yZ+ya5Z5b3buFrrv3i+KUX8p5g7pNpZzL8D1m/TAVXwz+H/gfic/fsJ+D3wrxPyh/cY118LHgfPE+wp9h17L0q/STuqaP2qhf5v2Hw5z3lC7Wf93m2wl/ixLeWLoe/m9j3HfBeCl/ZvINr3+pbsLX8B/8jPnARP3dZ3uHgP27MvVTnfkegL3Y5BfxN/62OvpP1h/jx3+A7NPHNxpU16CoeX/YrLcAjc36tXm/20Vr9xNkdDC4l/7wb8D26it8PyH3NPfKeInnk/dlK9Pul8fH73AOIvfLXHfG/Sv28bzdQu+k/O+Ar/ecN85G3wPjT+NEXE19GLqeBZdDRTL3/ivMtvl95i+/fkk/WDzX5r8x/Mi/6x3q/Djk+g56X4HtJudy/PcI88Bb5b+p3z0vvofxv2l/C3lqQ02T+KPd9tmMvlcDE12f/KfuR2Z/MOyzZnxxIHtk/r5jz/qxP+dMG0nln/SrpK8l7DjuYmXU0+/hY/hnsriq6hyd+Q3/uiK7i859z8b8p92hyr17+ZbnXRC/HZL8962/9fzz7HKH9R/HfO+ty8O7sP+S+V9V/4xlV6d94qpHvseTXRPo0/J2nfNaDB6H/Hvq9j1/KewevksMo8qtJr8ego5p01jczfM964C3572Ydmf0T7TfV/k74v9L86iHjzk70twP8e9FfK/A18s39kIWlBVg97Wfdo/0zlF+acZ495f23j8k18a15/zvjxZLEW5FLS3L6Kvf3jWd5nzfvneSdkz7sIu9YFb9fNQbfVaSfTz+jn7f012fQnXsEO8vfI+8/Z38Xv/3xN9R4+G7RO2CJP2xH/xk3pheNH9sWzasr5h0V8sp7cXOMe3lH7mv0vUe+bdGVfrkreAe8ffDVvuj+/bf6XWvw0NzTVO9G9nYBOz8QrK79cQVQ0h1cCJ6VOH36HU8/eWcs7+tcg79Z2ntDvWbK9bA/kPEz42bWP8Ptl3TE/83Sd8k/mfyXq/+3/CH6yx/s+gz6eJCdbJn4CPbWFb0dpS9J/Ay9L8y98JzjwV9Fv6qU+NvsN2R+yX6zvsx6M3FDea+sXcYt8LPsT9HXRP18E/+UeNlrye85/L2a8T7xhPjJOrJP0XpyBvt/HPye/f0NZj/69tyDVy/71Vf/x/7uvtIfoX85+DF4NP6nlagH5j2ivI86M+fbeR+D3B/O/rD5ybngoLynQ37PZv2K72vRdYb69xo/V7HjXvr7A+Q3OOfhxscT9cfs51bnN37Ur08yD31Q/aHkk/8tKH7/6JC87170Dl0Z9cuQe+6Jl0ifSv73mn+8RK7P84el5Jv3BvMOYd4dzPnOz/Jr0HPeIcp+UTn9KfcTtwAvgr913jeC/xDpG/iny+Hviu8VuQcqP+8yVVUv7zM1KnpfJO9lZH4X/5b5eC/1Mk/P+9Yr2cWKvNOkXN6jPJJ+p7CzlokzVH9Pem0J7pj/o0FHzvPbs4+c8x+SeG16zfuF9+uvzXK+w+7y/mE5/qG5/Cnay3t0eaduMvzn67cnoH/rjOvsqxb5lfc9caOL5C8yXlUCb8o4Rh+JZ1zBrhPnWJv8zya/Z7I/Qb4n0O/upQXYDZ4x+uH26je0fhqEvm3U75x7gIm/l74+94hy/569v0/O++gHw+R3J8/Ez+0p3SHzYf29Cvyv4fs38rmA/BOXcRP8Q+TfZ77zcd7dIO8T8r5T0f559tNzn6kXu1kh/1Z0zCa/G8jny+yHFd0vy32y3C+rhY7cL7si77OQ+9HaOVf/X4mevKeVe9r1tF825+/kl/O/N9CZ+/HZT3tLf8j9+Pz/wGnafTznovDlf3vyfz255zo272Pifx6/d7LyC5VvqT/k/8Ly/2E34G89/j/WT4rv13zC7yVO9mPpvM+/OfzZT8w+43653xP/4vuQxImjZzT+c5//H+0/AX/eg9jH97wLkfsriZ/aS7kH0ZN7iHnf+AUw7xznfeNR1s85Fyo+L2rHfrbL/amsv9T/iv7b4esY8A7yuta8ph+Y8SH3199Fd/E6uQf72CL7MznP9T37n0+T36fqjcN/3svfkr53QE/2jWbDl/dILgRXs+9T4N/D/PHVxHXAMynn5frH2JzjKXcWPAPIrx597kC+2V+5Dv691RuW+5J5JwjM/nHuK2b9lPtLZcBvwLz/3BL/T9FL18yftJf95dxLe6pIvnnvOO/i5N2f/L9C1kU5P1hdWoBXKPey9heCG7W/JPGJWa8lHlU7D/zH+5SvGB+zP7A/v3UAOFb5FxMPnXMp/NbSXu7J575lXXznPmbuXy4jl/UFUELdJUt938e4dwOYeOa8r3Ucf3x84mrA3B95jb77gnXVG4y+K9Gd/7ebRV/Xs+8jybPEOJT/mVomv1bifei/hvR99JX1V8657wWfTD+AP/dZ8w5M3n/ZMetG/bctvt5PfCa/uhy8UrtZX1ehtw/hqYvOxewj9wbqFfF/T94HY1fZb0sc9OXs5VbpgRm38FETnT/rLz/U/zf+yPsB9t0GvhqlBZh4vsbs4DP9+nMw93X2JL+e+GolXVb+Gv7wa/Az40veN8p513+9o1KrSJ/Rb0fy6a6dvPfcnB7a532M+Kecc5ivjNP+VPOfdda5z4Cd1d/E3nP+W/z/HIk3SvxR4pFelp/z5P7ggJwvJ26PXrNfnPOYnvjrwn4zL8k93WX0u2/mfWD2D/uRy2F57yrjt/p5vzXzuczviuNxF7O/o/FV/H78hxzG4Iw/vu+e+T37SjxL4lvy/yx3J/6dfexunpP45P7kk/fzDs39TPJ5SfVHwby/UKpcK3SvQl8F+vqJHOZo/yv5qxIvnPk8e8o723+w87yzXQX/ua+Ze5xZR+7Bbz2Bj7ynmPc311j/HKz+Mv0hcYCJj0w8ZOIj71D/Dvw+D36U+5vgCDDnv+3jB3IPN+fT+Mn/A/2R+9LaS3xoV/0n+/MP+V4t+9L4y/3et6UHspsP8JH4tN3JNXHB5xa9N/II/Uzid+qbh/Si/y/IZyC9fa69A9GX+O0H1c87d4nnbpq4TH7i6sTxoLcDfeQd2/bSeb827yZcEn9Hj3k/4Sf2dzS7yTv0J+ofc/mbmvzQLDDxXbm/mXjaWfg/Cv5f+KUF+m3uOeR+w1L6bknu8xJ/if9W5mdrfN9L+iP2MYhc76OPTxLfGvtkL/mfzYnSH6p/Fvvr4HsfMPf0FyTuHT15pyb3V38pgBJqLvkMbEI+XdlHzn27See94dn8be5dNUw8Mz2szLla4ujUOzH+PfETmafmXA69mfcXx/1kftObvjJONyXfjNeDyOOU0gK8gLyGKp91Wf6PcX3ue2s/59OJt8i8OefTH+qvbfmlVew3+4BXaD/rsh7SE+Tnf3fzP7w/SOd/ShqbF11l3yTvtD0a/01+2/IPeXcq96MX6x9vs9Pz8LuIHorj+bJua47/d9nPBWD+j7gsebwrfTR8ucd+pvwv8z6274+Rf+J3y/DvifOpRg+J7/mefd0N3gWer1ziL3Lvsvg+Zu5/5b5X7n+1kP8cvT0L9mJn+T/Y7fJ/xeR6v3J5JzzvuuZdka5F77seh7/90bFr4lLl/0AuyzM/5J/3wX9Z41v+zzv/8/1h9u8Tz5BzM/rI+xlTtT8v95XhuTD3U9XP/dw/Er8tPUT7l2b+knlt0f37izLeFt2fGUOeu2R/Mu/+gAfT5w+5p8VeEn+50Xwi734dVIo++CvoHy+z865gzrN2Aw/DT1v5+f+g2/TvRfzGefSd/1H5NHab80L6bsj/3ILupvIbso958psab54wDj2ZOJjEfWQ/C97LyWkOfGsT74CexMn9JZ245ownGWfyPzG5zzvK+jL3eheTf/a18/+Nb5UWYPa3c5/uAePrQuncL2+ZfdesA+F/MPzzZ7nfmf/brY2+J9TL/4ktyT1p9f8P1yMDH3icdd13+NfT/z/wSiFaIkLq3Y6GyCYlOyplltCQ0bCLUFFZfbUzEhWRyIii7KxSMhpkFDIyQ2aT33X9Xrf757o+r+v6vP55XOd5znmcxzqPsx7nvCZsV+r//6ZUKcARexfghU0LcEgBlJoKbgQfblCAlXYqwD0rFeAJ9QvwCvWX1yjAf8G+uxVgM+WalC/ATjsW4NeVtQN/Dfkjdy7AV/YpwDrw36Lcy43QWa8AV+1bgHOVH90E3fIr7F+A/dF1WUOwWgEe3KwAL98d/fCvhffJ/Qrw3IoFWF/9btJfNi7AD+sW4EpwR/TeBn/vyAF9N2inhnaGo3cKPuaB8+Efrvxo5ab7vhv8/yq/E/zrlW8D//G7FGBLeh+8QwFuS7431CnAw/C33V4FOIT8mqpXQXuv4KeF9Ef4/Qe+q9DzoPrjyGUiubeoXYD18FGuVgFuRn/ZcgV4v/q3o+9b+dPh/4F+OmxfgO3B2N058FdV/3vpOfJvQG8V7ffD58c1C7Bz8wJcyJ6HKddfegQ5t1K+A/gJ/BvJ/wjpydIN1fsI/Z+rt4AdnoLeNeipTG4z5V+xRwE+SB6L6fNs/Wov+H/H72m7FuAj8B1Fzx+R4xztXamd2dIt1G+gXCfwSnb4CP18ib9p/Ms1yq3B3zfK3+37HujbQL47o+t87ZWB7wPpq5RfAF4C39vwbZKOviexg+roq61eXfoeDX9X9rsIv1epv5A+upPvyOoFWIfcRkkPw9+x5HuS/EbwzsDfB9rbRvsrpE9jD83R9ylYBr5L0X89v/kVPc+IHrWzkT02Rvfl4NHyf4RvPvw343Mi/k72/TvfW+jPF6F3Kb/cBx1b5d+s3l/0fpH0A+TQXvt38Sfvsq/vwq/8lsp/pv2P8XcY/ptvU4BPlSnAadILlateoQCP3LYAb4PvV7Aneveijxu1Pwv+swug1PCSAhwjnf6xQn/7DDwL7Es+E/TLb/i1/4sfkD+CvneFb0/167Cfk4wnJyn3jfH2F/mHSl+M7sOkj4K/svH9GPq5Ft+nkE8X/WOM+geBtcljvXq/go+gZx48LfiVA8Gj0Pky/Z0I3zfau0B7XdC/D/nfBI4lh1XyO5JX+v+n6i+ln4V7FuD22ts++PSffsa3fcjlGHi2ks+h6FoAToD/Z/VPxNd69erBP1h7V/H7i8wjnsb/Uvln47+Uer9o51L81VT+bvKcrd810n4H/ecO9V41/v1DTmXgrQPPK+rvgr8Z8P6gfi/8fY6fTuztVPA0cKnynbUzADwLvuPUf5ZcDyHnytKZ/zXmDzeib7R+0JN8GpfgF2wKVsH/KPJfDu9K6froa8pv1CldgM2k3yX3I8lnFv/wjnZ7sZ9dyPMqcKbxYQk+y+k/I81Dq9PHhfJH6hcfkPtWfD6A/3PQUQ+9K8n/EOllmUfrb219b8k+XlP+QN8/gvfjzE/0j53AquAB9DVevefByfA1pb8LyGsM2JN+tqL7tpICvAXcFr1faP8y9tKE/K4FZ5PPA+yiuvKna/cU/M0zvq5D1yny96b/evz3cnKtLT0Wvqbs4RH8Xii9K/xb6S3j6hbpJvL3rlqA+4BV0Hsk+nfHbzf6LQV+j75z8FvN+HsU+xiu3DLrouXgMOPlZPTUM/99VTsnlRTgOPYwizyezPxQvbfkdyO3yfifRW9D2XkF9jCCn1qq/I7wbUDvCu1Mx/dB+kfGx4yLA+VnfJxqPDgx8258DkTfC/RVQ/kB8Owr3UL+DPJvJt0781D6GIGOH7Q3Rf1O+DqEHLvRx/ba/4i8d+U/5sPzuPyq7PemkgIcDM4hj5vJbwP+mqo/gfxm8W8T6PtddBzJvrbHb3P5X9DfLvQzXv3a9HIivkvFvpXPui/rwHPR1xBsSh4HaK+L9Jb4e/jei12i/wF2+5Z2p0kfKH8svTzLf3RCz0Pw30U+G43DDcjnb+UfBRdmPSb/bfX/lL4M3c/EH8qPPvrh80LtRz/r+fUF2j/b/C/zgQP5tWPZyYvouZ0cs+5cXrT+7A9/P+kGWadq/0XymUF/D/t+NjkPkt+Jv+nq+3TlBst/Db8Zb1+RHi3/Pvr4Sf5tvtckn9hl7PFZ6UXSZdj/0HyPntl/Q+uDK8n/evo8Q/mu0qXJbyH6Dyff2vg/zffYZSXt7+v7p+xuoP52GXmsKarXwzzqKeX7aX+tcq9bL9xNHkfy9/34na+Vmyg/48YH+DnAemcK+tdYF6yQn/XYVPl9+MfXyLG3dE3012Z3teitGXkcFvtgj8+y053w2Y38y6LnAPWfU6++/FvpqzX9/Gf+lvlE5u3oP1R6vv7Wl1zuVL6s9v/AX0frk/7gNHTsw74eZPd/yW+qnazXv2MXpdUbxp5+ynyIvreA/2aeqfy96PoUzP7dNPQ353/WGQceV+5b8lkh/bT2bjZ+jMLfMeR7R+RDvx+Sw53ks9k8rj/5dYDveP3vWvUO059Phe8F85c/6beS+h+ib6D55Mvw/KKd/eF/mX3fGj8vPY4dxC/fLB2//CT8j6vXx/dj4L1K/m3Gvdn4/Djju/wu7PlMcAK5HU7+76o3yrh7O1hJO22Mt8vKFuB7+sNA8j1Pf71avxgATqX/W+h7FHmOxc946RnsqS28/8cOp+LjO377Z/gW8teN2MVSerlWP/xe+ib83aP9M+itvXrva38XettTe72tBzZmf5Lc9lO/rHQT8j1T/zgD3F+5xvK3w+84+A7Vbjv9by92/ypYE+yD30vQEz+xE3q74iPr8hLtrtI/WtHzcvbZyfffsh+c/WL425DfevY0JPMM9XpZf3WVni9dh/38iq8z8VuL//yHvb8ITpI/FP+36l9H8hvl4VlOfy3ZVxN2Ff8bf3w+efyMz+7St+KvGflUJv+T0H8f/Yxl14fIfx7fs9F3Bru8Tv4l6F+sfnv0fQ5Pb/ZZV/03le9OHs/EnvDXnf2fB3YDp6K/G3z30f8EcnpK+9VLCvAr/mFP6b3lZ/+hNblk36GH/GXoeQp9m7VzCfvZjr1cDs8y/noJeTxFD+v5zWpZz6g/Sb+4B/zLeHOa9q6jtxnwXC99I/ntln5PLw3QMR/++tq9U7td9IsX1S+nvVe0l3nfKeSwxfixFdwMtmGHzZT/Xv1XtX8g+e2j//zMzzyk3r7wZ789664x/OtT8gf4foP0NupXRv8P9DYX/5+Rx0vK9WV/T4JT8Fs5++rsvzs4C/2/4Osd9FwtfyB++kU++m3X7LtJ70Men5D/p+BqsKX6s/nz9eSzMvv6Of/Q3mfgavAs/H6vXgl+j/f9dPI5BP7sg+yov85D33rzvznx8/gfjr438HMnvK9LvyX/d+P5++hOf07//VS6i/56Ozlm/+N69DfKuYj079LnlRTgfdo/InaE/vLoboGOfvxzzuFa4W8/sDlYml1dwF+M41e28LdD0Zf9s+w3Zh/yE/mP67fb4v8b/eM3/W8+fb+ovdr4/wie58z3/0DvXOl+6j+Fnlv49TNK0IOu/dGV/cgV5HMX/cfeY/9N+cth5NkC3vPZyWr4N2q/W857wPPAjvBPN14MybpYun7Ol+CvC9YDs56vyJ+9m/Nj6fLq14DvMrA7uCnjPTn0xvdF5HoZ/CdYt3Tip69Uvhb7vSfnW77fT14l8nM+djt5nJL9aunz0Jvzhg99b47+R+Gdip6Z0kewn+XSv/GXp9PPE/JH4Osd+r0Lf7GvKsr/k/W3/t0Svpxfvaf9r+E7TP31+M0+z+9g9nm2mL9szfxZ/9qH/B80L5qJvs3ml0/o76PNg6qje570veQ7Rn+4Wj++BmwM//tFfnGI7/GPu2deor3B8udL/8HejlLu78Q/kM8B2jtD/rfk+LH6q/mFd+H5VHpb8hzKH+d84xT2UDb7TCXqsbOG4CXan0r+q7R7PPln/2Qzua+W35EdZ//kB/KbSc+v6B+nwD9TvZ7oOVG6EXudpN6f9DONfO5Vv4r5z0Byqiz9CH4X6V/Pqb+H/Gnwf6e9M8l3Mj/zEXqmsYcl8A1V7lj2WZNfPwnfe0qvUW4NeVXUfmn9YVvyqQr/R+CTOT/WXsarqujJOFaffb0Ef33+c+/oXf++zniyIznsAG8f/I+ij+wPTELXq2Dxftho5bJ+GiUde8g+W9ZPH7Kn4+ntUOWP137O/RqCf2Wcl5/z6ZxL32u8yvn0Bng78yvpb13Aw9FzCPpeR9fExKfQ16icjys/Q/vXo2uK9k+T/lH7F+lPr4EtMx9XfrL+84by7fCfeJK+ykVv0WP01818/W/r+Lf1p73V68+uHmcPZei7nvrj8XOU/GuM3+2lGyvfGRyrPx+Y80P090icEvge+dzJXl/1/WzzlcTP/IG+cux3d/059n9pSQH+gM6/+K+l8nNevFL9nCfn/HghOn+XrsjfbcDf9Oxna7dr5lXk8yN5/wD+zI9WUL6h9g5CX+ICPgUH03dv8/CLwL7aPYt9ds9+beYV6J2X80PfS6dfggclDgD/ma9mfnqc/j9RP7sbzD53e/2+A7iJfrPffQz866SPQPeViQ/TH5eC67U/SD/qWFKAtdDfRv416s/VX7PuvhMfn+D/WPb9U+bD9DkG/rX0+Yv8hfrZKuWy/7ZEey2K9uNOo89XlL8Nf9nv/om+OtL3t+onPuhH30fCn3nwRfJXkGfOXXIec7H8d8j1BfTcm/gl/L1ILw+R02v8y4Pk+Y38iuRfl78+Fb41iS/Lfp3x61H2fZj2WvJv1fBxMPoGsO+26u2f9T38i/ib9vjoSG4bpBNPlviyxJtdRt5XG9f2BB8Ed4P/PP6isvQB6H0DfVPI44TEOdF/18QXae9G9MxK/Gb2D83/Vpr3nSyd8WQ4f9Mv/kz7ZeHPPtU/+kn2S2qTwxD0XZW4ROlz8fM2//ghuBqeKdpbwn4Op9+3pf+Wn33PnfHZg7yz/zm3aH2W9dozmaeQb+JOEo+yPfx/wtcz56fgEvk9rB8fgP87+VvJ90l21QrdbdhnFfLtof2b1espvRP5rCSXe9jfreA96B+JvszfMp+b9j/k8yo57i5/MfrHZZ5JPn3IY0vR/GAP9p95Qh3tbkVH4oDfYR8t9fd34alBHr2VWwXfLHbWFVyPvmboHWv++H78iH56qHHpNPPGkfI7qd+6aD5bjvyfxs8u/MMX8F2d85Wc75egEzyU3G+F70bjyQTy+IP9XKv+Pvjt6Hu57CNqP/sn63Kuyy6uYT+N1Mv+Rubh2d+4gT0MBk9HZ+LQNuHvIfU3S9+Q+C7yOQfsCj6Pjmbaj3+Ov/6PfzY+NMi5HDsfgr676Pco48yf9DW8wX/z+yH+B7LXufHD9PESWIXd1ADbw/9l4uMT/5j5Dn7fs3/dXX4z7X2j/ePpaRo+Hs35Ofu7CKxHrrXlP1gA/4k/noKvTdn/o9+vtbuf/HnqH0we6xMHjp6G5Lyd8WdbcIryi8g/+13/y062GJ92BrNP8lv45C9aGzcays96+gLyPR89D9Bj1i8nsede8nfVT7P+eSXzSfKYhI6H9Y+/9dtFJQW4Fhwk/yTtnQyu4Q+z3nuPXXRLvyyAUvXpfxX5z6a32NGX6LuAvY5G9365b5H1ALlfRQ7pp+mfv1h3fKX9xIHdTh4jE0+Y+FHyvRV9z7GLKYl7lr4i9xPMXx/X/if0ewz8OX/PuWnO4XP+vkW9beFtov5Y+JfRe+IYcg59OvyZZ6W9yfTZSf88Hb6ZxpFjtf+8/JvhrQlv55zzxP+j61Tp7MM/pv7Hud9A/2XwUx9d6/SHHeA9iryGoXeM8nfCs6904hieKSnAX+X/Jv+5xIEnng4ft2j3QPI71nh5Ej+zWb0e2p8N36fgt/Q1RrnZYOLyOmrnSvhPINfRio0Dj/N9O34/9n+I/hT735R5YfarjcdllL/P9yvw9Q77zflMS/ORI+F5qugc8znj6Wvo747+H/H/Bfuqwk+skY7997Wu/jXx9uRxTuIz0XuNceZK9T9I3DD9/0t/WVeeqX9OMJ/+HLwLHK/ckfpnS3Bp/Ir+MwL+uvEv0m9kfVVSgAvBa9hB4vSXZt9fe9vQ1zv4Lz4P2ku98zN+0nM1eObrb3OUe1d6CfgOmP3d89H1JLs4Dn215R/D/3cETwFvxF8Tdpu4hkuy7w0eQD975X6F9Bz6W4vuD9jZieRQU/+upb1zs29mnN1EPo8Yl3NOOkP6PflX89/92UXirBNf3Ro927O/8uAi+W+w9/XSQ9h14/jnkgI8Tf4kcpyhf6zT/r74KZ84KOm/+Y8dwAXGv/MzPvIHiW9NXOue5HsvfImferAofuom87XL4N0AvpF4W3p+mj5+Ju870Pec+n31rxfJ6xntz6W/XeF5Ff+96Ht39lsdPCpxs+RzZeKNwcPwOxM9r7GratlvKIoT3DX7vPJPMB5Xhf9fcntMv5zOXuvkPgW594NnOf6ao3+ceeGr+BtiPK+g/W/5lRvVPx0dY9DfoaQAn5b/Fnn1V64H//gZu3pMO9+S76P43yvzMPLrCf7OP76cOFT6XSd/D/nL2McOOe9K/Jv+0FG93GM5Gz2f+/4lPJ9J5z7qSPJ6Hlylfr/E0ZFfden7iuKXL2WvWde/XLS+30N7ibPNOV/O9x6i7+PY3QL+LeeH80oKMOfFI6RHkP95ym3NvSvlfkLv88p3U64mfbdH/zr5HfBRkZ2VyrrF9/sS35t7B+xvIn9zjvSxuUdHP0fAv5ndtJRO/OP99mP+xfd+xo+56Hsi8STkvkB78xKfRX5fobuCdPaLEk+Y+MLXyWk7+qnO3x5Nnoezg/Ppp5zyGS8WkUfir+7Xzjr5FfWTN+S/ZDwahK8hYNavI/jXn8jvjtwHwt8x/M6bibsmjxOzT1wApXqAVytXIn8of3E7+sYXxdPkfDbnsjmnnZn4zqxflE+c5Rnkcwe9NsTvBOnEV96U/R/wc/I6Uf0R9Hk7uBd57wtf+tegnJ9lvxr+Drlv4fsg7ZdW/xr1M088jnwqJP5G/hPyc5+xofx/4VtGPsvB3D+pSx91EicAz2X0eZz+/hn/lzjKV8l3Cf0+Zpz6N3Gt+s8w84VlOQ8ouv93nf7c3Ty9G7gFnuxPPwdmfzr71evZ487wVtZO4lezr9UWP//knFs6682x5H8Vepvibxn6OmfdQp6vw1Ne/mB6WcXe9pN/ObvZhM6N2nkJf/9qf3/lK5DzlKL4ueHG5dzf65zzgsTV8tP7S1eBrzN8vTI+yZ+Nv6z/Pya/s/GX+9s/5Z4VvXfR/95HX+4H532Cr7WX+8H7obseWDfx0omHJLenE1fCnstp7zr6zv3gI/C5n/bfMn6vQMc6MPcQOtJP7rcfRB+5314392HBVeg5L/ddlOsZ+uTnfvpK3xtJ555n7nf+Z9yjt4yHeb9gJf/6EfghWDr3VxJPBm8V7XeHvwJ7rUgO18ivSD6bzBvbZ99I/1gIf+JjXtDu/vKbZP6J3spg5teZb6/S/3dU/oui+Jve/Ec7+tiTPnM/7mH8XWj8vBj8W/kr9Pt6Oa9JGv+N+K0G4BnksFH9ewqg1Pb0Xx48AD8jtLecvWW+90TOi8gv95I7gN8lLkq7fcAr8bc7fc+F78Lc50ZXK/jrkd/tyk2Hf6P8y/W3rMuyTutB3tX0p2L/8Db9f5f7PeCPYOI4N+tPrc1D1/IP49H5iX5RDdwNnI3en81r6sJ7qf6/Ju+MGBezX1lTOu+rvATfYPm5Z9Qg96+NB9+j9xX215X9PMge1uj32bd+Wf0+2b8i/8T13ah+ztW6mMedBeY9gfns94bciyP/4eifl/cH6L268j9o54ai87Wct+1MPydaH+UeWe6P5fw589rMZzPfvY2e+2c/U37x/nwD+LJ+e8s882jymYve+vQ2E55t1cv9+cz3co7xO/w7FcX/3AZuVD7napOtX76C75nc9yaXI/F/NTpPgj/neGuKzvv2YSc3oTP33jN/3Yl+u7LvzuyrceKBtFNL/gn63Qvxk5lno3u0/OL46WH0fyo8VfCb+8K7a+//Yt855856mT2Mo7cz1R+T+FR6eQbcX/0/yCPryTaJV01cEJj78fHruSef+/Fn8H85/zpLOvfnauK3LX5eQ9+T6M85xbnwncp+cr/4Fv4r8XGJizsVfRPI+QX4u5FH9qO/Mz70lR+7WE+/h/APuXd0sHQN5RbzCzPopyM8k3P/hf7GJs5MvcnoP4x/m5t7GtI9yb34PaO72Gd59OV9n3r8Vt73yXs/ncn9h7yXAO9idOzNH63mp5qrl3cGch++SRGduR//LHxr4S++H3ODdJvcjyTvnCefh773tHsv/hJPkfcJEneWOLS8T1C8/su6r0fO3/ijTSUFuKXkv+mualwbxC6vB7O//GfR+y+Jt0t8Xc7fmyvfEZ85bx6rX80xfs/Jvjn7yLlW4hiPIp9f2Ofl6L0CHKKdXuS33PyzivwP5Z+A/1f5vW+Ng7uzj2fzjgq9zlGulPQ1ub/LbuNPb4U/7zvEnyzNurfIv2S+kvlM5jv91F9NfsXvcnQin59976L9R7Ie1X9Wkd9qcDH9TaSvzP9vVq/4/Z3i/pp+PD33m0rhB7wQzPs5Xcjtcu2Njnzxt4Xex+YdG/QcnngB5beSVyv5X5D/NP37F+18Dyb+rQl7eYicrs4+AjkWz39Pyz5yxu+iee3p8qfLz75/1uW57/hMzuH5p/fMu9ron73Q8x6/8ic8S/ibVuQ7K+/OgC21fy54dEkBDjQv6AdeSE5r8Re/slfiUnM/OvEdYOL47yLfEzP+gBmnf4xf4j+W5f4F/sfDn/u0mcdsZ3zJfHCi+cpJ5JVzoJz/5P2L1fh9idx2w8dK+j/T9wr4T5xR9g+zb5h71Nk/bF0Ud5T5UuKPyvJP/6Aj5+AdEt+fuFewGvqvyP0adtUq51L8aeIRu9BL4o9r0vMx8F9L3pFX9vUyf66I/4uzPien2P8Q/FTIulT/zfrtB/5xQEkBTgUT75V12yUF8J/1XNZxOddeAZ6Kz1sS7517VexhBDmty/6V9OzEQUnnPZYq6s/IuT95dIdvaN6D47euy767+tfnPI18fpTfHH3ns9sbwTcTL6vcUt8/if/lP+5X7kr9uz9YHH9zBP/VMnG24JEZP8gr+zF12cVq+euUbwIOLYo33NV424A8Zsfvk+94/W/vrKfyPoT2tsFH+8Qjhk/48u7kNOWyz5R36M4qgFIfgVPAQ3N/NfFs2rsff5vR9yX/WjnrY/6wZubvvs9Jv2Ifj+DzpczP+ZWcU+b+Wnnyyvwp86nH0Jf7aqdoL/fY7iDf8P9k/CKYdzhPJt92YO47JL5nWtH7IQ8WxQflfLQtOnI+mvPSBcpnfZk4m8fRcS35/sVe3qPnv6WbJ/6p6P5h7t9uJc+y5FM1cczoy/upeS91gPS25Hulfp91ft5Lmwj/Bfrr++bFZcmpMfnfod4vaRd9Q3N/Ne/BkXfeh/g07+LAfzF8R7KHU9HXQntnk+vBOYeK/yHXxvA+xh7vwf899Jb3jPK+0c05X0VfA/LOuxi5/3Ih/XTXfhXznKp5XyT3pbLuzX0JdE7EX+KTlxh/xmT+pN5r6Ppa+VX0PYX93x+oXNbnl1kXrVS+Dn5mon+F9j6UX4uffizn5/EvYN47exT+xDUem/00/DZnTw/kXp56o+hhGPk+x27qmHf3ASdl3cveXiqAUkeoX71o/XtuSQFmHZz1bzX9L/FnF9P3WfIvLNrv6E0OF8Kf89ObpLdR7nL8tyP3Gsb9xvi8Ku8f8Fvz+Lm8g5z9uZy7Z100Fv+Lc88B38PxNwzM/PtD49UROe/JPX7pvJec/dEr6GVG7oflnCXvhaL/EXzmPYMjzZ9yXzr3o59ibwvw87v2jsn7sOYRP7KL7Ksm3jjvyuad2W/YY96XrQP/w/Dcj4+/cn8OPYnryP5k4jvuS9x77k9Kvy29P/m/nvv68Vvk1ww9TeGbqf336ffbxM2oVx3+zuSRd5XynlLuE49W/w52kfdlF8PfUPlz9McNedeEPD7O+3AlBVgR/Cfn2uivZt6/K7gbOBD+r/A3vtF/4y9D/sP4y2HaH6X8cOm5xpd5mdfhdxP6pppfXaN/3Jz5CPlvLIr/Hqk/d9b+6/pD19z7kH6D/L4nn+j3viL9rpQeQ65/kHfee9gh5ytgW/Z0HTs6F93n5FxNf7tWfg3yfBP+atZ3u5Dv6eSXuN+Z5JR44K7w5X28SXmnIuNY7I98dsg5QOxb/b8Sv6P+Gvp/Ej3Z59qiH2d/a1HifsE/6X8o+n9OvAN89cmzNPr3kx6N3qr6adafiV8vjj/O/Lkt+3jCOPWWcicmfoj/7Jk4RXLI+J241LIZD9G/S+6flhRg3bxPDO5MXrXyPhw5Pq7+Ivja8VtZ3xbvz+f94GPgWx59or80PNlnuSPvPbLf25TfJvsS2T9Tfzt2U4nesk5O/NE4cukPXk5f92WfCr15r/Jw6fnkU7zeyDqkg/wSdvM2+K75exV6qJX7DXk3EXwTHzm3z/tg9+d9f+l67HkW+UUOlTI+6ZeJL3tZugN6r6Kfyuplnv9N7vfl3Y34f+08RH85xzxcfvZ/HpZ/gv4bP99WunfOS/iLr7U7CH33wrcBfy/yW/XxMSzxksaD5XmXh/zG03/i6Z/JOQw8ia8fxC7Kqv8WO0g83C++51y7TPpl4guVuwT+XRJ/nfur6k1Q7hP0xP520J8OTVwBunN/t73x/Wx0NSO/RokPNq+cKH8xOhZkfRz58GvLwGGJRy66D5Z7+K0Tn4qu3E+I/Abnnq78WfjJe/XR7976363ql1LuR/1jHv1vk3hk9ZbLH2Be8r/ecTuM/HpBPxQ8xPd19o02k3/xfcTEP9ZKPE1R/GPWt1nPZ30/HD+J6zxTvX2l5ya+iD28rr2cB3bNPLjyf/PdP/2UnZW2nsx9iNyX6Jfz4+xHaL+B8SDvVe1IXjtU+m+6q2p/CXt6DJ3vSjfN+wBgO+WbJL5e+63Qn/PInFdmf+AO9jZXvS2+nw7fLfx33vG8Je840/9Z6ncB807vn3l/iH4rpT9kHq3+JPjaZV+YfNrnvn3RufAs7eR8uAr/kH2D7COcxF4WsLO57GRD4v/pK+89VSOXt8nhanzM0b9zb2AYOj5Bf+4fbtAPWknnnZOJ+LkIvsrWe7G/NxKPC/84eioP/yLl98h8oqQAz1Z/G/OavJ+dd7Ozf/+L8eNj32v5/gh4CPktpJe25Dgi95/Z89tgzl/yvn4f9OTdgrxjcBv62pl/fJD7+NKbpPdnzwvpI/+Hkf+/aJ+4XHzknfLELw6h39GJM805l/oTJUews77SD5NH/o9jYPwy/pfkfmbeL8Hnc+jIOqRN+jd5Jm5je/Jrkff1+PnW8O2i/u78W87hz+YH4t8W2A/Jewx57+xw+RXYW43EQbOnxGsP0v+GgoPBdfJnoWd27qGBz6N/qvF9Cng6/Zajrx/0nxeNE7G/Z+XvIn189lP4yxXo70Vema/dAg5Wfin5JK5qa+5RK5f3BHKudqf83F893vg5NON70fs+dYvi9i5nl79pv/h/i4r982uJz0y8ITs6R/5sfiH/9zFCujb+c96Z/fqchz6R9UTR/kU7/D6OzrfMW/8ybz1Deh082T/IfkFxfNO29N3WvOEn+1XZP6sAX2/wFfaZ/bP7Ek8JLsbfD9q7Kef9+Em8Y1P85D2yvE+2Cl95n+zcxPPlHmhJAZaQS9bnWY8fknczc35QFO99Kjy5f5PzlJyv5LylIfvYrej+QnXpvBfeTv8rfl8x4/Lj+kcteijurz8rn7iG79lpxmHdvdTXYO7fdPwf9JeCL+dDeS94R/RPp4/8j07Ot+fA2wn/K7Lfhu7yCMl+ffbnc1+/Ornnfdjc33+PvHKOkvOTgbmfXlKAWT/3I5e26f/y3wcTb5z++zJ6yyaeHh1N5e+N7z7wv4X/xAM9zC/3zbm49Ge5z8t/vMlvPSa/Dfx98XMtfEfjdzN6ZuH7THTWxfel8hPvnDjo4v9rayd/unXXRvn3oPdX9nUge2mq/HXo24u/rwGeio78f0XxeirrrHqZP+V+RNG79Xl/KPFHfXLfzvp8h4zf+nfr7L+T1yR4xuc9xOz/5N4+PX7BL50vnXex+kX+9LE060P2nP9nKn5XZ4JyeX9vkPncVDD3FyZlvkduv/Hzo8w/s57PeuDanEf6fqj2m/Gv+T+qsuZzH+R9Cvw9CuZ/XnKuM5G/rQmWJt/EK95Jvp3g2znvMdLfOv5zg3nIvXlHLPdPzb/yPu/T2pkkvyz/+Sw+BuB3pPbm8L/n43dt1jnqTywpwNvZUfH7SrGXauiIPcV+rtf+DuQX+1kK/yD116J7sPQH6Fhpftwi8dPsfWXmT/pL7lGclXuU8PfX3waAfem5Suazibtmx99rJ++zF78f/iS9ZfxvyK80APNOUN4HmqTftcdPU+m835J3b/I+Uyv85n2mX8nlZP7jnqxTEz+vvUrGpc7SnbIegT/n7MXn64/Rz9v64UfS5dGbd6XaqJ93MN5Xv39JAWZfLv9bk/25lux3kX53hHTe934YvyvMTx/NO4Tyy+U8j/wfKIBSB2SdKD9xY/kft8SP5V2pSomDlr4145PyOc99mr7vyXsl6H5cugs+D837qfSTdx/3kM55cP5fKf+r1EQ7+X+lK/LeNr+S++Tv09Mj5N1WulriJ/H/OrtYSz75f7DF8nvq3z8p1016APprFq2bs47OeyEj4//AxcrlvZE94Uv88WD+K+ufZeS+J/ouJ49L824FvmYrNznnj+ivgZ4F5LrROHt34ryz3w/fIvmPqj8v59HaeYddPUL/+X/OncD8P2f+rzP/r5X/08r/ayVuuZ/0v4nbAfP/mOtzDpP5oO9P6T81Swow/9ua/3HN/dTa+nUJWAu8QP6NxrXcW819kdwTWUYeFZV/LfGb+M+7jNXyfqX0wTlno48R8Od/XvL/LrkPNo7/yH2x3A+7L/MDfC9LPKd03te/Puvy+Ff5mR/lHbPMjzJfyv2m3GuqxI/kflPei8/78ROzDwu+gO8e6vUE837/Cu1OUb4DuXQgv7vZezv9ayl8s/B/JnqzTjgj7zfIz/8/5H8fLso8MfEl6uX/a/L/THkH5hPt5932j8kr77k/wZ9cqPyDuY+g/cnkk/jpg+lvZ/L8Rv/7Ft1n6YensKfs7+f/3DIPzX7vCPopA2/O72Ylfp/d/Gbe10C5+fh5I3HC7OKLIn+a9/Xzrv6P+Mv7+jkPy/nY/kX3gVvx72X0o9Z5zw2e3vxzHzD/L/1F7t/DNwrMPOnDxPvym++Cc/CR+6F3sZecLyTuO+cMuXf7mPLF928/xd9n6Jmpndfp+1vzgVvAUfC30T++Zm+nmb+VgOtyzkrei3Nuja42ia8179leP8493PyPTGv2M8243pw/yjr1D+NHaXZbBnww7cvfzffN5LFF+9k3/Yo95x3+vH8ynF0NBd8ix3LoW8vfJS7lT/TeDV/eY9wb/YmDSvzT3fiZCOacLPGBLZQfIJ3/9zxH/bw330s/zftw+b/SxB8G7wn6a86f3if/evKn6E+96H93frV+zuHZy0D5lfTnionTzfkPOV5KLgcpfxf51SP/qvTe3DprPvrPVP9/nct2yf2x3O+HZ0z+/1t7WU8uTPwz+18N7q3dxrmXwW7uYN/ZDx2Y+4rof75o/pR506vSmT/lvfgdwdyTzb3ZvM8Vf/yBdN7nOhlda4vO9xuhM/fZcs/tOvznvtvR5DOBfVwtnfdPsl9UHF+c/a8y6m2T/9ECEx9f/F55cXxac/aSeV/mgSdkHksuI/Kufwn6lf9/XLYYB3icdd151NdD/z/wK1opWrVIrkhKC8lOuiVroshWSXd2ZQlZilQSKrJlF4pKtugOWSqFhEKlTYksZW2RItv3nN/n8bzPuT/n/K5/Xmc+M/Pa5zXznnnNXF/sUfL//v5oUoAt9izAh/cuwDNqFOD1fn++cgFWaVGAB1UowFObFuCHjQtwSLMCvLlcAb6PzoDmBXj4PgW42u/7tSzAb2oW4JetCrB8xQIcVaYAyyo/gr+jqxfgBr+fhI939y3As8nVH/4tjQpwgfqP6xfgJ+BjdQqwDP63kvsf8pYjX1/051cqwNl+77ZdAd6t/T57FeCe6O9UrwBrk39E+QK8HRwJvofvn3cvwJq7FGAb/JeiN2GnAuzaoABfJ//B5NsB/0vAEv2+Q/9B7euQ9331c+j/A+Xa6h+IftWP2r4Av9Hu0GoF+DT5h+o3HmzGf6rT38XsX195SMMCnIX/KXULcAO5r0J3ofqf/d6IfC/RWx/6bkDfi/B3pPI16p/3+xr9HodnLDr38osB6u9R3p0ejsHffvodrfyXciP62aD9KHSbkXcU/vvSz1B0oref+NPPgcbjnvC3A3fQ/lr6v5x+NuxYgI2Nu8nqtyffNP3P5g/74ut2/ceQZy07Pa58oPZz4e8M/9QdCvA39m+vfTvwSPAudC+Etxr+q21bgD3hP43fnwqeAd7Lbocb//PhaaN8ED3PL1uAt4lDNdmhVP2gquSG7yfjeSd6uMB4/Ex8qap/O/I1VX5S+TX23EC/zxqX3+1WgLPp6Qvtv8LvInjK42Mf+r+4AEo+Aq9Qf4H2i8l9t/JQ5RL6O9N4Gq3fQeJRZ/J3Il8F/BxCH1OVR5CnRL9f2W2z8uvk+Q28Dh93of+peL6Z392rfCd7dzMen8TnOPAt+MsnvuJ3lPFxJf1ev2sBzhEnx/GPo+jhAnKvJ8+RpQX4Hvtu0O8QeK8lx1H03xiemejP0e5c8n0oHhxET7vtXIC/obuCfdeiPxW+yvg/uUoBblZ/Bnt0xF8t8+sR8C3jx0/j554CKHkQ7AFOoN/f2ONN7S/D/xvo18bPF+qr1yrAxeQ/XLxpC27S/yJ6WsN+U/nF/ez3uP5Dxb97xa/p5ChLvkr09mtpAd6M77HgDHT/jc9p5o9Z6O8Nb1N4y/OzW+izC/29Rm+r/X4D+12B778ynsE6+Ktr3dGUn/Q0396h33vsuwqdLcpn0NPV4A/4fYgcw+hnpXg5RhxtLc7sT55y/Gmr+HEaeDH+X8VHA3ZuoDwY/ieNt67qr0XnDfUT+W9rcAL4LTxX8s/V9H6V8jfqf+Evv/Cf2KFj1h/6raSHS4zrDvyvQuIuez+h3dv0Vb60AKfS/+raBXiqflnfxF82igefsONY9Mfzkz/50zn4GMluD6CXdWrWp2XRr4Xerfi+DexC7hP5S2ft6pJ/e3SOxN/5/L2t9k35y17g4eQZo/0B9PGuclf926Pfz3p1NH6PRa8q+k/j/0i/367/leStBd6Gn1nkbxD70dtp9FkfP3PUt1Iepv4N/Vfg53Xlm9Xvq/1n6lvh/3l8fIPfCvhpL770BX/nx13pow1//oD+5pkvamt3GnkbKrdBf7HyZeLTjsbhS35fya6Ps+e9+L0av/3J/wl8k/C/P/u1x38N8+m4rHO0y3wwiX8eR45G6A1EvzN8a5XLs8fu7P8j/Jv0/1v8600/h+J3vLj8pnhSER/NxYcLsz4Wfz6Gv454Vw+sbz3zAv4/MX6O5l+LlMvoP5B+LqXXmvSwP/76lxbgo/gs/v5abj7sQQ9/KGd83ioe/Ij+h1lPZ37jN1PQzXdYqf5v4/cy9ZOzzgHHwPcT/Tzo91fJv414uYu4XD/rPO1f1m5N1pPoT8Hfdvj/iH6qi3NfoLMcnubqd8h3A//bkd2nwvsaP+6kPnHysqLvhdbqe/L/l/D5BD1cB9+55KsJngeuV9+C/z4B74LEOfI9SX9l8L2FXGfR/2jfAy20u17/hfzzFf44Eb0Xld/Bf3Xz8/fgUPAych/G38ehU54e98Hf/ew/1Tj6hT4+xkcneG7Hz1btr8P/1+abyWmv3XvqvzK+hhi3Z4lTHxsXt8OfONwYf0eSbwv+7zPuNuv3JX18C+9P+J7LDuPQPyHxDP4J2Ydhj+Hs+Qq8FcjzZ77btf9c/47wXa//VHxNY9f/KF+h/k74/timAJ+BN/H+U/jX8b8vje/HyXclf56XfRflltrfa7zNLS3A98CL6WGW9ckr9LgfOffEx2jj7XD9DlXejpxvi0cV/H6w3+fivy37biLHZfzodvzvbnw/h59D8TGLfr4iVwX6e5Nf3sT+Dehzq/j7O/gG+n/Qw2D2fkE8yPj4zLi6Ufvr8blcub/y1fDshZ+5ypPp92Dzx2D853tqo/jawPgarrwtPZ9RACXPg0vBcyOP77UPyPlZaQG2pYd1xvu+9P4xfU/M/E1vK/FTz/q0Ofnvxfdu7B0/6sg+b4tfnxuX7yofwz5/4udl8mxVPiT7gdrfAf8+8I9T/yf9f6j/Kr/n+288/8g+VEN81UO/Iv0frb5R/J39lrPHFcZxQ+0Wwd+Knn81DhspX5HxzS8XZX2pvgP9rTF+5tDjWuWf0XmLXEPYYw15N7FLDeXK+q/Wvjk5Fxjv2S/6gR3O4c/D+edO8FXD7/Hk78rf8x3XwPp+EHlqi4+19f8RvarozabPEYHoHaJ9RftRV4FLxIOsY1/VflD2BfTLfube9DUDvxeWwhv/4ffF4/Kd7M+x77vq36LnpvTXBT8zyHuj8unwDDEfzmWvp5T74G83v2fe6YSfM9B/WfnqzIP6NWaf7NP87vfz2WFv9V2N7+xrDiDPg+qzP5J1cfZHsj6ezm9ng3eIwzW062y9WxfcBp819a9pvs4+ynr1n+N7MDxLzZ9H69cq+5vkfx88iH7n47e68V9LXJoBfsMej8G/h/YlTf4X/0Ll7CvON092Zd/sp1wovt4afrTf1e+lYOJw66xzxM9T8XOq8XKW8rfi5SWJb/i9CX89+EsH/E9UXq4+65Hn8Puy/lmfdDBuEgeKx/8f2rfF79/G4Ur4x6p/k11O51/D1cc/l4Nl+Uf8dRG6VfF/Fzr3i28zs+5U3zPfbeo3o98151bob8l5jvl+Nr0ekn1p7Tvk+1d5e3pfZ3w1sJ6pot9u2nXHx/v8tEn0if5E8t/Nr7NebQ/PHvDX8j18MTsPxG8f7b7lz33p7Ti/f5rzCv2OQPdO5Rfx9yj51uDvGfHuCPVL0G+gPJn9M79Opf/EtVbgquybGJdL0T9KuZN2s8SPA+ntH/ClfF/k3Cv7Bfj8EbwJv++pz/nnYex/Jf6vApeg+zP+s19/BP/8wHyT/ftV5Mv+zR/6f69/ZfTri4ut7VO21G44eSrj99VS7ZQ308fbxvkN4Hf4uom9n86+EH+7kX6mkzdx/XL0dsH/IPyfAd/z7LdO//vhfQFsxB9y3vePcdlefQl/u4G+sj5dk+8K/bNefc/6qI5+h9PTWvxkfs7+0jzxM/tLa53/PAdmnyr7U6ebN3aCbzB9NaePBuorgttqtwv+TrLerYrP6mDmzz/5zbbodqTv5vn+Z/+n/N6CfGfBn3Pb7G9mv7Ov+quN/0eta27FXxv47zBvdi5an75DvrX0n++dUVlPZx1jvO8CzjHfLdF/o/5r8fMt/7iBf2b+3YP8y/l3g+y/WLf+xu7XZl7K/hF67fC9q99H8s+x5tvMb5/B00m7fD8vKy3AfEdnfuqpfpB+vZQPIt9K+p5DH9O125s8w+jt9fixdmXx8471dNZZnfnLReSvn/MneN5H72D0Dze+9wPvg6cS+R8z7zwArrX+HZbxym/n5lyZn7RjrxusFwbmXBb/2c//nlx/61+RXF/q/xN9NgcvoZfv8D8YH3frPwj9j/BfXvzOOet0/E6mnzXWG8/Cc41yO/0HZn0i7k5WPgr/49kzeRuTlZvHfqUFmO+H4vOft8jfXf9TyP0s/FWtz/7mF6fr/wz/G5b9c3Fqs/j0E3r5fniKXqcmzwD+i4yPOuhcZH20IOc95O0L34HaDcDHXezSlX27kuN6+sv+Yrnsa5C3DTlHGb9LtevOvz5in8Tnk+HPedRycmzLvuX1+4R/XUDew8xHR4B7+b0B/nP+e45yBeWc/2Y/8ZXsx4h32W8sy94TjbuvtKug/w7Gzc7g6/h4ml2qkvs9dDbDd2Dyj7SbS393098J6CQ+dYE/8Snxapjymfl+1S/5SU+q/wv9Q83vW/lH8gNGg8kTSH7AMvHzTOOqF7vk3OJL8Wkduu3Il/Ot/4g7XcjRFN+xUyV898Pvw/T3qfKe+D2XHoeje4D6zFsV+Efms8xjz6N/uvJzyq/leyDf68rr6Wly1kf84VZxdhrYGh9PZX8b/ge0v4X8Z7Pny+rfpNft+P9t6H9Lf9XQXcE/nvH7I/hrof1u8I82//c1ro9K3hg8i6xH2uq3q9+z33+H8X2p/p3gex2/r5Wio5x8kOR/bDGefgP70Mv0ovPZU+n1H/rPee3NiYvqi/cP74H3H3YuYd9xyUOg327w7Z3zePqrR66R5Mx37RPozeHXybcayY9uzf688h7qe+Q8G73kjz0F31HgS2BxXuHP+D4i8V/8qwz/XPsd7fn3auPpFn7Qhh2z/xG/ezN5PfCOTf6O8dSU3mbja5N2xecJOWdYpv448h4LHgP+gN5E+Cew06nwHU+eu6ybX4P/Q79PIV+tovO15cr7kHdb7fvTdz90P+NfR9B/zrXWa3e3+uL80+Sdlsv5PHzn08tJydck/574KYefSsZHefReQT/zUjtwiPafiNtLyfciO9wN/yr4z/R9MhBf99JPJf5ZP+tj8mzWvy3+y6C7WPlY7b9kl5Oy7qOfj/A/njzN1f9HfDsL/Yf8/jN8p+ZchH6/Ee++JMfAzDfqGyr/Tq5L832tfiP/WQPvj/yrM3+Zwf+z7noenJTxlX0Jer0RbNLkf+vz+538c5/ED3RvAYfgM+d7yV9I3kLyGB4vmv8z32f+T3wtp/898F7Injl/r0IfL2p/LD4+YJ98357LbjXEkU+Vj8VXZeXK9DMXvRkl+oM3gFvRv1n8WSLubEVvFL5eaPC/8jUqLcDX8DebXgfws1nKQ8kzkl/fAe5Gvsk5T+I/ybdL/t1m9X/j50dyFufjPWE+OgDeY7U/gH/sS//Ji26tfB79JD/jwJyfw5P9jWf0ew6cBOZ8elf0ZpE3+xiDjJ8y9NvL+BhDrqHJL0h+HnqN0e+s/vTsTybPDZ8L8v1vftkeHENPB+Ij82M95bboZz/xV/2uS/w3Pyffb0ryA8A+YM3EN/pcCm5Ini//6IBu1tnV6LsJ/ovzW8YaPwvZN/vqiddLlLP/XYe/Jw5uoq8bjIcp9HkO+dqUFuBM9Otm/czvkked+XVEvuf1H0+OnHeWt/5LfuGLRfm557PvC+qfhv8i9HeG/yd8vYPf25Lnk/m2KC5+zD5ZN/TC76bED+Xb+V9v4+8S8EP2Sd7v9Ob/K2el6Fu8vBbM91u+584xX5TjZ0eTrwr/z7ln1tXF6+2Wvh/u0u8E34HvZ33OH37J95/+U8g/VNwpy4/KgckrO018WZpzLeWcv3U0nleQP/nQ59LPWO0Sr3ZWPpt8M9i/Cv+pDB7MDrvn3BTMflX2qZ7E7xX0s4w8g7Keod914HLwWe2bwdcSbA4+FH2z26W+44aAyWPfnX8eE7+k71H88036yLlH8flpRftx2RfNPunO7NPEvkX2VbPPWi/52Pwm9xVyzpf7HeP42dna70y+x/nnQfxnBb4uzX4n+6zN/MIuNxkPZbJOMv7eIU9N8aO6/u8of4GvW/Rbib/L8P8YuQag/4j+54n78at/yJn8+sbWAzmfbaSc9eMYv9+ifc4dZio/xX/W8OPvwJyvv5TvFHByzufwfwn5tvv/3M/J/Z6sGw8X/3O/56ic95O7KvvkvOkh88J76B5rH2BU8tntP12QvGPl29EbZNyuZL/cL8l9kzLiwjXo3Im/4fBdzv4rrXPzHXwV/d5jPA0BT7GeGIn+NP5bG9wzcQL9m9k/5zonGnfP6Z919fXa36m8RLkh+9VIXqHy+Tlfwk/yAc6HN/ebjjT+poP/mCe2wUd//j2T3J/6Hq4N/0fabxIHPlF+mDyb2PMY42Zd4ov6MuRvRt8vJi8n5+PkvRDfZ6L/Cv6L9xuyD/Fr9MWud+X+UvK++N9M4zL56RPxk/z0G61vHgQHgtfi9yTriewHbM79FPxOor8LyV/8fcg9S6aJ26/h8yL85H7Edvjul33X7Ofwqw70ejzYW/tu/HkLPnfJ/gE8A/D1SvStnPX7meg3UR4E/1L8Ty8twOSdXkO+O3L/kTx9+Md443cV+n+idy//W0ghif//Id8L9H4bPSX+T1Z+Hkze+jD+3g/fU7K/GHny/cHfJiZfgj/tzD8OJt/x4L/B5BfdQq87Jf+Nfrcj/xni8X34f5R+upH/FfXJM9oX3muyfidX1rNZ3yb/oB9/zfp7ZO4BZn4mzwn8sIb6vfBXMfcm0V9CTw8mP9fvByX/lN5b4m+K/ifhZwH8zfTP+UTOJXJO0Ub73Kc7rehe3QL2qcIuKxJvyFsL/kbWIxv5V0Plhej8nf0/sKV4/wp+3tGvf+Yt5b/yfWM+2QncBV//Qr9L4hZ5Yt/X1C9L/qr6/tknob8B4uVB+DrOeHmWPWtrn/teuQd2vnInejvZuDkF7EVvXfh38idWq1/Kz7paX/RJvlPiLTmrZv7ld18lf027puJL7uftxp9/wF89dM+k36rWkw8nf5C9sn7dNt+/uQ+S/MLoTXnf3P+1/uhLXxvNwy+rX4neFeqHiz8r1T9H/m3w93TuEaJ/Fvmey3cevV5Fvtxbz331rAuTv3EN+3wJtjIecy9hsvGRezPF92mqii/VwJr8+Dn0iu8Dxl/iH2/Bl+/1B8XvJ9SfYn2T+9U9yJn4W8F64iy/55524u/++o8D9yfHHfypmvjeqbQAd8o+LH628/ve7HafeST3cr/hH4PJ2TT3XXIO7Hsv+4yrlL+mnxPg74Hfjsp3k38D/Wyllxa5L5J88CJ8Xyifmfvh7Jp7/LkHvg6969nrNn7XT7kJ/m/gv7/g/zT6S37jAebFuegu9n3UAZ/n09cb5FhrvLcuOj/Nd3i+u69C51zxtDp8NfC1OueAxscnYPH9peR/Ju/zNviT/7kAnfuVH0XvFfp8Wr8PyPcheJF+q42X5F9+pTwVn2vFgz6ZN5P3Rv/96OdD/e/PuTD7PW58b4CvcfjH3xv6r2WnKblvkP2P5C2A26KT8/M6yU+jrwroJ7/oFv2eQfdL8uWeX851c56b897xyq+i9zI4FWxS5L+5R7WqaLwssC4ZZpx9mfNh/afwmyPoab743zLnY/DshZ9W5rPc339R/Ghv/sh+6vrkXdL7nTm3MH4eU96R/67FX/ui/LvbzZsd8fEq/NPoP++DdEO/K5h3Qsbl/hS7dOePDZS/YI9J2j8ef479xa1G5Ggtns+gv07mw8HJr8r7HPDkPtol4D36PQCuo88b6Pct+HL+vIm9s2+Rfb3sX1Rit+QhDid/9gFuJecisJt21+jfV/y+ArwSrIn/7B/O4Bdj4vfJ3zbeT05cA59O/kfR+xSj8ZF3KrKuzXr2I3G0OvwTCqDkA+1+Vz4f/uw/5bxrRfKA+dcc8bsPuf7hD4n/lfLdkvWn8TIZ/t3ZJ9+XyfvvmXPC3PsC+5XiW/2t+Dtev69z/si/PhbfPgIXiP/XaXc0/a8k1/nwfgsmfyp5U8fT/0/kaWz8XJm8OeP1a/r5Sf+B8Ufz0fycx5G7p3mtR/Jtc96oPvfCvmTH3A/Lvfuc6+WcL+d799H/v4z/njnHwc8Qfpf93OwX/Kmcffuc5xTv399iPC1D//zkR8D/uvFzeNYt9NUheYL8YS04gZzd+cfr/Lu779iN9jGTx/IxfhaAP5hfdiHHAfj5it5+LDqHfoy/jsm+JtgU/V1zHpV4CW9P8v/Gr66m99bwnqX+L3r/E9wHnnn0u5Z+vgOv8520Rvl4/pTv3UH4qYa/o/hH8tDWsfcK+nmW/52T/SLtqhgfz4pn0+l5GX/Ym71vxfcE5RHKGacvZzzx62bg2eh9Lr63V/6Jfj6kr4usi7Lfdw99Jp+7C35fRf8xcKb6E0sL8O3s8+Q+P/wTxLtHwUH8L+cKn+a8Qn3uM3Rhv2bq8z37L/bfJveH9bvMPH8JWDV5gAVQ0sS8lnc+8r7HIewzyfriafDz7L/D9wz/r4KfC+E/wfgbhY+y5Mv7OV+bj/PdOiDfG/rPwtdr4vc08A31y/nhjNwPy7lMzqf4z0B2yf5FXe32pc8n4LmEHi+n35wX/o2vnBu+rn/ur5Whl/3BDdm/Z4+Mu9+LxmPWB/lezDoh64Pa4s7i3D8CT9a+v/HQW/sblR+l367JLyZX+4wv9acZD/kezHlN8tevZtec0+S7MPnv/YzLK3O+jv6ZuV+SfKF816n/hR4r0Md/8xSK8hN2h/db+HrzxxeS/2p8fkD+VfAcp/157HcOeHzuN2l3HnzZr1yfe0/i1zbm9R3Y8Rn+OA/+4vfssl+Q/YGP4RuW+Tn5WexxBL8aQe9PwZ95Lfc/buC/t5UWYM6Pi+8z5DvkTPW5n19Rv4nw9KG/V9l1jn6PKO+h3QnGc9PMf8Zx4lPylz/TPueKbfnJxuRZxq/poRz6j8J/LX6TH7QX+1+F7uXizJXKb6LfkL+0sc5rKY7sGr3hr0fW++S8FJ8T4P0qeTnsmfsXdYrepSj+vupVQg7wmtzz4A/5vm4BNst5Hz4m5b213Pswnt4g/yx8LQXfAlsl35LcL1gX1C56760v/PWMwyOS708f2Xc6Cj8XJx+ZPR42nx5n3l4g/hxDTyeIx8XvHgzl/3ey1534qA9/Xfhr+D3nK6fg5+Xc/1HuoDwtecHwv23+Xl9agFcbP1fiZ0f+2gbdZskHY9+c/4/lN+fiq1ny//jneX7vYP3bPO9z2T+4HP/r0H8fn7vibyE77ZZ7iLlfw54l5p/1ym3pdwn6p9DjOvrP+vYSdNaz+3zjblbeh/B78u+fyD019Ovy/+vpp47yv9QfSH+V2WnfnKMkPiuvSf6Z8XuG/smfGk5/uSeW921ewF/e97sWny3JsYvxNyX+knPA3J/nH/34c93EE/iL7zUnD/Mj+MfkPqh2Q9kv+4fF5/+5x5V89o7wJT9ibuihf65xM1j9eUXr32+Sh5X7MPpfjv4x+DseX5eIP8l3y3os67OJYMO8/0Hu++BL/mit7J+Tb5j4MYffJb92NLpL0W3FXgPg/aAASv7KvVDj69a87+j3R8m5NPeJ1B8rrv6a+ynkzzsGG4y3EnYuA9bSviJ7d9Eu70FlndLF+M67UQ8XnT/+rnweeT7LuWL2543b7GuMKS3Ay3Nejf+h8NwEzlY/0ni+wbpnJ+OoB3qZLzN/Zj7N+xuvmi+i31J62QOfv7Fz7tNl//VH9s394OT1jc57tPovtX5tT97FWc/m/kTul4LZ502e4ojSApyV+1N5XxGf1dnnGvydI349hN5z+Ml8NY5eNrDPA/T7R+71Kx+e91/o5y7wCn76iP5t2GOy37fiI++7luJ3DfxjjJ/N5JnCXg/xr+HKWS89yx9XJc+af8c///tuKH3k3YeS3F+DryI7Pmj83Jn7EeL+p/TdCb68B1eOPsvm/iiY/Np74Jvhu721+u/x0YNdL1BeZPzPU/6cfN+T9zF8ZH18PX31B68Dz9Mu5/c5t58Ef87ve7LLm/ptzHtg2uf8MOeGOUdcQj/fW9esBX8AP2ePJ8XP9fxse/FgOv872e9twYn8YAs+N6C/DT2ervy7+txz35E85/K31vC/qvwjfTTWLt8HY9i/PXy7mW+n0Pd12TcpytNqnPer9bueXgaAddXneynfUdHborzfh7+cx5yIbjv8/5D3z8CfwEfgu59/Jv9hdFEexI34/xOszi9nw7+v+LoN/9+Mn7z78R/6/Y3eFsLbNe8za/89PNnvXaJfC/47KnnI+Et+/UMFUFKJH16q3JOexxgvxe9D5P7SqeLHQvReFz/31f5ccs/OuyPkLJf5D7/rM98r75n8Df7Yq7QAZ4p/ue/Smz+Otm6rknt+uR/E//8k3965h5b7qeLzDuxSBZ68hzsP/vHmr2Xa75f7RNkXp+eyRffXOpI37x520C95cMnL+if7n/z1ybyXQW8Lta8oPvSAv5X4Ev2+Jv4em/Oponyz5KHN0b/43u0K/C7M/rX6Cvo96vcbs/+K38P4YaXsg6pfIK7MB+eBeQehru/t6WDeLcv7lGdZP/QSF6olLwT+vC9ah3x5XzTvjeY9iNzrGo/fE7OOL4CSvmDeAT4493DY+3T0+9NP7q/smXyW+Efyz9D7gj/vKO4W72/1z/ofn82yLiLnO7mfgK8b8Z18tdh1FX3FvlfTzyb6a5zvsZzPGr8H4D/vw63BX76/hxdAycHse63yzMyPxuNk4z7v2yW/dKV5421wBRi/y/r8O/rcPuuO5A/Bl/3R4nyf+eJZC/w/i//6+P+F/urnXoh2ed+1LLu2oJ/XkidFv43Az8BF4t29OS9Cryx9NM95IXk+LXp/YDv9vkY/+VCDlf/O/U72+854ST5Zzo9/Tn5tCf7A3EseCV819n8YnaH8Od+l68XHacpTSwvwoez/mZ+L3z8ckn1++D4SN3ubL77O/Ub85x5A8v53Tr5O8n/5Zd5VaJb3BfjLodqPpO+ZyY81Pwwn74v6j1eeQe4Xc44GrkoehXXzMvN6e/ZphP6H6nfH30B+vic9z8x8nXfCwNy3HYDedslDRDf71SeI11Xp82ww7+O25z85vx7LXvOSdw7v3tofD1/yO47k/3n/9GzjtXPy7+E7AL9n55xG//v0vzn76drl/d3cq81+aAf+cFj2Z/0ee8bevZJ/yS+SV3Vgqd9z3pl8eXq7Qjy9i32T1zMheS/4T35PS/JeiJ/W6H9r/GQ/LPtjzZXnFeU/Je8peVD5/xd5N7Ay/rfio0e+E+h9F3r7AH/JT887qsXzc+L3MfzpKPBoMPF8Z+M778UfC/8V5E3+R94rmqPcPfk3ub8P1ktedd4Psf6px655hzHvLzbkn3n3N+ctef83+ZZb6SH/xyT5l/PwW0F9znWuVJ/7Z8mbXU1P76K/LO+i6N8v+ZiZP62Pfs/5S/LyyP+878JdydndOcTkvHeQuCGOHMQ/NmadJD7uL/4dk/FIf3fgqxe6yYO7IOtnev8FvXbKvekz+xvJM8t6MPsPjxdAyYSsD5SH6/8I/52efQ76ekL/1c6H25F7avxb/ZPo/5LzoeTT4SfxIe9yF+t5J3G1W96BUB5Njp6lBbhFeRI+S4vuh9Sin+L7193I+zn8Q+Fble9dfCUP6Bz8bsT/O+j1Ma/XzTqgKJ8v+o49sr+UvJRj4Eu+SvJUqlif/Lvi/8qZ/fve5Luavf7Ie3r8f5H2eU+j+H2rlvzy49xDs54ZB38b3z3d4Mt9qdyP2pXfFr9b/GzeK6OXvEec94qfUf7a+rsB+boYR3WSz2o+Gql8K/0mf/ot/jkLnJl7gvTyHP72p58R6LyX95v55TXJ901+TO5v8/esNyvSb94XOpW+6uHvffTG535q8sGzP4p+/j9NN+XB/OPf7DOCfk5R3kju762jdsz5OP/rZvxdXgD//f7I/Yrkl2Rf4WHy/UNfX2ee54eHkO9qeGbHruJL8q9LrG+qw9+dfRcX7ef8Y53QSzn7Pg8Yz3m/6wfrsQvQ3US+3HPNe7+53zoZGxnHuX+f8fyo+PQI/axTvgn+i/jbBeDZ5qmryD+D//33u1+8PjznL3n3jj7HkuMk9fleH5bvRvUt0B/Mfxbwm770N5L+Hsi9PuV8vx6H3v7GZ1N492DPw/B/Ev3Vpo962R/P/hv8eb8w7xmegE7u1Z8D/huslnc44WnC/smf/g5/j+R+cdE7FLPV59zhLfLn/GExeXbkNzl3yDnEkqyXyP+A+j+Ua2V8kCfvT11M/vx/rRv5X/6/0KCi+135/1SN+U/u++Z+bxnjIeNlDv4OzftAxmvOd1/J/89T7q3989r3zjtzwYffnE/kHcAT+H++37qD08B8x+XdoMusO7YWvSN0Of94IOeCygei/3D+r1/uTeQ7g35yf606mDyQSfoPFD8H5X1efpP7U8nvzPv08/XP+/S/kT/z6j/Zv8z+Hf+Ybl7P//FKfkfynhaj/6py4uAOyS+GL3lw7ZPPKh+xof2lm8C2+L+NffMeRPL7f0p+Df4TB5aRL+N/e/rOe6Ib8ZP56Hf9k3dxNr5vVl/8btzd5FyS+9Lm3wtKC/B++jkGvhr2Q8bB+4s4sTHn7OJh1qcdxL9j1VfmT1XATfws9yffMr/1J2/2Vd7K/njR/d53wbzfmvtmycsrztfL91O+l+6Fb25RfSN4r81759nnNw5Gaz/EOO+c93Pp73btK/CTP7UvPi/5UfkO8o2lz+z/bxGnatF38vergHPg/wX90fg+x+9/J6+If7aDP/opLx7l/7/kXOF0dnmGnXZCvx9/K6WH59H5A/6zkz+n3F057+f+yB9yTzz3w5/A9yjrjw/QKz5fOTPxDf03tds+92PoM+8WLVLOOzdnZn8V7AoeCn/eD1+e/QT98t7J/ubL/dGfaHzknH+F+J//k/qAcvaJJ4vn2xgf/cxzeUc7793k/0ccotyK/pI3m32d7PNkfyfvFeQdg3vIl7yMNQVQMgy8GpyW9QF8+f9lyePM/dP8P8SReS8AP/l/iefmPDvvUiTPMveDxL/8v9PHlC/hv8NLQfLNwHcL+n0E/SP43QHaVVaf/1d2mt/z/+SmqE++cPKHk0/cI/e02OMqeGrQQ9bTTfjVSHp9IfM0/lvqN48+OqPTHf1x1kM3iqOPKuee+zDxOfdivoAv95fy/m7eva+hnPfva/KrvK862Tp1eN4vob/sX+e7OnlMm6yncx+1+H3MIfrnvCPjs53+26qfk3eAyJd70F/lu0e/B7P/j5+R1g9vgSPoOf8feJL2n/hOyjuauUddvrQAk3+Z/zOX/MsTjb/hxscIsBL8A8IPu9ZX/p79H6fvnB/kPCHnBzn/ral9ztF35P95rzn7Wvl/I8vRb85+K3KPRZx8LucLyp3QL35/J+815v8l9tK+sfpJ+Hux6Pwn/z8175vlPbOp+P4ELBHXngEniG/b4H9n8T7nwdflfZK8l6HfRr83Uv6Dfywxf64AB8KT/29S2Xh+WdyoQn9Vkn9uvrqc3IuVh+SdlqLv/ewDbJv1c/4/B/oV/X5z8o3pK+d5n5qnN+B/KfvdxK/yf4RrZv/EenAWuNp68eXs/5Mr5+DF59+X43shPi5ir1PYu7vfkz8yUf+89/lM1p/g++Q6iv4G516odeEQ5T3Rf8L4+ZudR+T/9+C/vvXKFnzurJz8yNPyf2NKC3BX+P9O/jK/yDthxf4xX/93xZWPlPN/dnJ/7u7s+6Ob97cuMn4vzjqKn+R+XAvxpmPe5wBrZ/+U3vL/CfP/CvP/CVuJN13Jd5nyFPp/kb3y7lq+M/N92Zc/5tzhW36W84fi9+yTH9lK/R7o7Widt6dy3v/53njI+WP+D178L/+fI36XPIz94P857w3gI/8v8AXxIedLHYvOmXK+9K3xel3eF8q9ff2/1C/r9ezb1kx+c85NwLzbk/3Z4v8/czd7taOv5O8szn5a0foy7xrn/ycVv2/ch9/1BvvTb3N4dsn9PHzkfcST0N8C3xvwZ5ycAv+p8JVXTj7EDsoNxZv8H7Li/z/2f+vmIqB4nHXdd/jX0/8/8LdCSaFEaehd0kAqn7JSKCMrO1JpoBDJiI/Z+Iiyi5ZQZBVFS2WUlCJ7pxShSLJDSN/r+r1u9891eV2/z+ufx3VeZzzmeZz1OOc5aZeS//e7e58CHN2gAA9vWoDzqxbgl2CVigW4h3IflRbgvbsX4IfSD6j/dIUCHLtnAf62bQE+36QAJyjfCf7DtDtfunmdAmwG7lO/AC/TfoU9CnA2Pq7cqwCP2rsAR23/T77OkD9X/g74utD/kyoXYGP4W1QqwOsbFmD3KgW4fbMCvE47j4Dj8XkU/k7YtQA/1947wSu/TfkCvAB9tbcrwD7yq5HXe+o9qVzb/QrwavLYXfv3NC7AX5oXYJWdCvASemu5QwGerNztNQuwPbiD/7/X3jTye3LnAtxf/VnoeJveu5LPO9KVyHMD+S0g10r7FuAp6NuI/7fo4epGBbgIfK92AXah53ro+xt9neEdSg7vqzdH+1PQ3Q6eavipqZ1p5P2SdoZIN6LfO6sV4KZ6BXhRjQLcTf1v2EPDcgV4Jjwd2EEJuJ48/iaHhtov1U4HsCP631b+BXRtj9+V8geTY5dt0LVVAdah56nS29DHcvW/ql6AL5PPTejvDd/V5HOc/H3x+5T8f0lXg79MLXyCtclpIfu4m/2OBB8hjwu0f57+sQFdT8kfo3+fiP8t8PXUbg/y6678WvJ7j74ewO+z7GoN2Fi5Ftobwa8cvFsB9tPPvtD+NeSxHTv+FV2/gc/vWIDHkM+B+GyjnQP1qyn4OEi6JfpaSrcADwDPRl8n/rMzGLku4R/W6d//JofD0NUe/Svwdbj+8wR7WMWOblIv/qM7+3+Xf7lRvf/gZ5ryW6PvMv3zBvqvKd1Ie3PYwzXwbtBPG6NzC72Pw1cJetdof4b/1yn/LjmeiL8m9NoUHI+vJuo/qv5r/n9Muib+ToL/RPBM9nAxfu+k/wrgGvV3Zr+P6T+z0PW4dO3I0/+92d0i8rtN/Xb0usT/baUznoxmD6MC6xbgNPXr8DelYGv2sAG/M+D/E38f+f9F9b+X/wr7fRcdE+R3Jo+++v2p6j9IfpeTR3v0TsZnM/o5J/3K/z2lL5Uuw2/WYM8rtHcS/b1LnuXodxB4KTp7o2eY8hPMA/6EfwN5NsTnd8aDkcq31f5Q9nW7dnfBfyXpiuj7mB4WqH8Pf/6YcbGc9p6Tn/lH5h2Zh0xCXzv9pjc5d+APa6n/cWkBrpZexq4eQu8A/WoJuj6SP0T+jfxRW/+/Sl7t8HM5+i8kpz5gJ/Vf1n9n0/91GTfRv5K9PYLvVvhM/6tOfgPgLwf/tvIvppda8k9gR82lP9i6ACeAjxnvxqLvF/4k/n+l9g5U/2r4J4HPqteAft/jv/8ip81gFXSu1W8u5Qc3kMcx9FiKnrbk8z46p6HnO+2cKP2jfrpY/+lQWoDxCxvIrwL5ZH6U+VDmRy/Ib0T/f/t/LvqmaX80/S6F/xny6Sd/A7qbaqeydi8ln174qw/OwN+fGV/JbyH6mxs/ttH+VuS0IHIHD5F/iP68FJ0nSB8V+UsfwE+UZ2dvanchvbxq3D+Ff5mDz9/JYz36tlE+/Xe98WoDeDg5/Ef/OFS7u7KDltJb09PL2u2hfBVy2ZP8biWP/+hXtemhrv5znH6/Q2kBtoM/89GT8dkv/lH7u5Bj5hXL8ZN5xRTtP8UfPg1OAx9ER3v0HQtOxNcZ9HMP/g5B/yj98yH8jSCP1+E9Q/5g+Qvxt7N25mV8Re9meN+X341+f8PvCPr8yrj3Cni+/MrkM40fOA7922d9QZ4noSvzj4fVf4k93Eu/Y8ilmvIX8AdDpTuw9/7kfzn7HKveqfiprnw58q5JTrfj5zn4y6o/3bj0rHZmkeca6TbKH6NfHAr/A/gZm/UWeTwT/2v82RVsRb7ttN/AvPZx+F+Hb5X6++gXe4F7J42eXvTWXvpm/bip+nuga6/Yh/J1lP8AXVnfnIn+rG9+Uv5H8pxBXjdkHSn/GXQPx1/WF7ej92R6yHroOvVmZ/1AjpnXN2D/fcjnTf2sEn/cM+tr9O8MTuenMv50Nz5+h77so1RS/xfrtW3Uq678N+Q2CL3/1l7fRv+kb4j5w57ofgs/1eTv3eif6eQPlb6YfA7VD/pKX0S+U/S3rug9Qf4e6j/FL0wFp4CvqX8Euz+RXr/Ex4voLdHejuyhOjm/KX+U+neDP5PH/uR5JL0eBR4B/kV+v0lnv+JX6RsyPpq3bSKnndWbjM7d41fg+xCcjb+Z9NmKXC9T7xv5DczLziLfb/H3EDyxj/X8ynz20E57z+mX+yk/HP7R6C8feeBvD+k66Lg146/6veA/Petvfu985e6ih8wvz4F/Cb1ei9/7lVutvevgyz7MMeg7Fz0V9N+LpRfDvxu+24DbKbdEfvzzZvpfIN0aP/G/l4FP65+HyM/6NevVrF/fNz7WLS3AVvRfKn2Z/J20uxe/coT22+C7fPZBtf+2eVJH9dext2/Ae8HH8bmcvj82blyG7oHk3w79FaUXwDtV+22NT+3AUeq3j78l10b4Ww7uJ38AvJXpd5D0au1Mp69zjdvfgpvp513+8QPwArCs9gcaD64g943afRX/H5FfE3Rl3tWf/czz/2x231g7I9Xfiv2WgFvQewQ8I8j7AnLbTE+fkWdX8t8aHZ2yT4q/a5Ufrnwrct5L/gL0nCD/V/R3RX8JOjJ/uA0/6+nvQH7/dfhPx+dtmX8V+b/4w9+1+7X5xL78TGX+dDvyr0uv9cDY15vg8eRyBLq+wM/H8K+RPlL+CZlvyj/AuHc9+peSw5H4G6X/HCR/jPS32f9mL59GvtJjyPdO/uRG+B8lxyrKn46eakXnBy9l/9d6pbx+WZM+P0HfG2UKsEbWU2ULcIX8QfBn3n4XOrJ/0ZD8y9HLleh5AX2PZX6d/SHjzdPqt4JvAfiQ8bYPfk7G7x1gM/y9rP3h+JqPz/iHpcp/zi6+AL8EW9PreOujB8EJ4LnZf85+CXoXwLecfN+2X/FT1jEZ3+DfnT0O0161onlA5vO36rdrpFewj834uko/6Q3/7/DcTG4foKO29B/yp/l/K3psRU9L6Pdo/vWOnDMVyXcJunujtwy5NUXfGegexy7WoX8jee0o3Rj+rcj/Cu03Yh8NwR3QNaDZP/Gdm3ERPR8kbf43EfwJXJd9YnKrqF/dYxy7Bn0vlRbgSH5yR3Jrlv23Bv+kbzK9N9f/yxoPu5nHFO9vToS/S+TBnuqo31f52Hfkvhzcmj7LK99MuVLpFwugpAf4H7A6+T1s/PmQvjqT31noW0Yem/F9G/qqyu/Ab67k91eBA3JexJ+1YB+Dpetnfoy/7J+/yx4zH8l+5MP8wo3kPR29W8i9BB0VwbX4aMRuZ4Azwfifh9Lf2cWJWS9ovxu7zf5/J3xl//9ZdrGf8u8pfxb6m6O3Fv1+ys7n4Lcz+qtF7tLL6Gcz+3lb+X7wt5LfAL5y8P1Nnk/Qzx/qt6SX6RX+WX+k+c808Bf63gO9Ne1/Hc7vldNf62l/lnLPFu0bHIeeK7Q7EdwL/tvJ5Td6/RD/d/h/JXnfmfmj/GNyPpP1Hnr2gP9d/upi9XYnj0b0PUO9nvivpvwV5Jtz+wvQ/4Xx7zh20YG8z6P/GuRawf8Pk3fmJ9/zzw/zywebh5VHx3T1x4A70++n8i9E/0xyrY3Ol7S/XWkB/p15J5j4hBrkUg39V9DjSeT5CL18od3v0XkbfD9LT8m5r/74GTrPJ78z4dsu+37kW974djD8O5PTU/Jnwp/znZz3nC5/LH1kn/o7dG4GM//YX7uZf2Q+0pl/a4TeDvxwZ/J9W7tXKf+O9F3035E+m5j3Tkbvu/B3Ml7exQ7Pkn6LHBrzz820/5d23tD+ZP6uLrpXkeMT+L9S/mPa7UHeddX/0bhVk36K1zNTzD9nZd+SPC+Bp7J6OdcZBW/Od9aT72L0H5R9e/Vbw5N1//XKP6d+/MJFkUf2+eXfJn9I4lLQV4Z8XymAkq7gaPDNff7Jd+RQQ7oZujKPf0N7vdnvR/AXjy+rySvjzLbsJuPiYPTupn6J8XssOxkAvpjztKLzjWbk/If2esBTRX+7Rr2fyfdw/vdTfuNf+tOR+GmH7/bwPA7uq/31RfOhefDP4j+GZX8v8RPZh4D/KP1xTtY5ReevY/m3G9Xvyl9sYp99jSc9pL83/g9lZ1lfdlM/68ysL/eG9274ci7/kvJn0cfn8iPnnB9cyh6O1y92Io9u2cfiDx+xTummn20v/0PyP4Jf/Uj6eXjGo3ey8regr0X2v9HXQP4cek78RHF80hPavUf6QfZ1tnrbw/eV9ruQ3x/82m7srxd8J5Bf4jbO0P7R9NEh6wHj3Cvk8QF8l5HLcHxfIT0s+xGJ+9Huy+x0I/0Np+/T9a+HjXPxr0drL/PLecaJwdofyb6HgR3xeSA5VAd/Ru8v6JxHvk3prT+/2QK9+5LHxFJQvYfBB8mvj/nGrjnHN1+sov+Uxs+C8+lzqvanKz9cv+1mnGgVv4KvwdIdyfEP+i2PvtPhn4WPi8j3Gvh6ZB6GjtPQ9yv7yDlYNeNhzsPq0H8389guYNX0f/3mce38xZ7Ksc8K0pXgH+n/hugbgr7O5NEUHY/Jn8suck7xvvRR8M8i/3fZxVx6GaO9kdo/lHy2kn+m/MbktZt4r0ngHeiowj5KlO8Ve2FP8c/xx/HPv0h34C8eQedN6Fyi3LbwDQePU+416Yv0j/P02/eQk/i6G41HQ8B5WW/C/7H5wSrwzMxD6b8mfMPxt4jer9T+Qex9P3S/gu7h6q9gt+fpN6+zjwrwlzN+boW+MmDmFzvJ39s40J0dxW/2Qu/59LaJPsdJX69/rCOnf6Fvdc5n+Y/4keXo7Iu/P+j/IXZ5inqb5I+I/838gx1OVf6GrNvAS/jjH4rG803km/H+APZzLr00ILd+BVBykPZf5x9+YkfV+IdB+DzE+HUNOZyKzm/Q/yq/fZl+vC3YTv9aa3w+xbg8Sbqt/Pn6993obUovbeh/N/z8knlb4gT2+Se/GXfPIM/D2dnx+tPtpQWY+LJb5B9lvDgSzHl/g8xXyONkenxeOvHG2Xc7XntttJ/9t2XqZf66Y+TNPj/LuSa55ny8kfqr6bsp+Cu8vyYOUr/pTL9D0fcqOoZmPQf/efBlf8dwVvIlPcQfJF74YP1mVdb9RefT98PXAx23o/8v+ZlPfw3/ZfC/Kv97eNOvjud/72BfQ8jrJrCmfval8tmXXM5+BrGPFUX7J3uT10LjT/ZPxrDrUeAg9RIH3ZA8uquXeVLitx/F71f+74iubzL/wO/x2q1ADlmvVvJ/4rE+UL4q/uvof/P4sVXonISvxO98C//X7DfxO4l72Qe+A82fm6NvOf8aP1uPHp/TXj3jQn1wD3CQ/PX86Wx0fSt9KPoqJz6H/Eegt3/2QejvHHCpejl/HJU4LvWPI5ft8LeYvNaT6030UTn3I9Qfrd4C8hgjnf27fytXCf0V0XesDnIG/jrDUxn+B+GfmXOhxMejI/HCj7PLZuT7FPrWpT9k/z3x5ejcl1y6J74bnR+ofwW73DHxP9Knof9S9thJu8fm/kbsC7+JT+9ftB7KuflAMOfmBya+KfvV2T/U/p/yi8ejjFPvkd/B/McAcjpIemr2Z80PWvOjddh3G+0ejr9J5P9ozhXgzzzyUPyepV5T9vUreSUO5h79/S50nouenMM9i45jyOdI8kpcTuJ01mZ+S7+HGF/agNspf4j2KpDPO+j6EuxILqeB2Y+/NvdUyPuNxBOgM+dz6e/p/4PYc/r/EOlR6P2WPBZl/g9vWe32LC3Aa7K+UD7j8zL4Jqh/nv//VH4T/lfIb2J+ch+/vpR+j0LPOfzSy7lXkvMb9N+Arnb0l/OhZ4vuU+R+xU6Jp098sfq7Zj6gXPnsJ+JnvnoX4/dx+rre/ztkPsW+Vspfi/6W8OzInnN/ZDh+WxWdLz5BXmcq3ynrypzH535K4j/YYW1+ajj8O5kXVNbeVHT8hb/E/V2K/4ONv+fnfIhf2AjuCtZWfzF5fM8PNNN+ffUXlxbgm/Dvmn1W9NckhxZgX/4x8bGz2efu+J4r3STx09IT5I+jr1vw/zV+5ii/H/qe0H7Wg1kfZr24WflP2M/YzDPZ6+/KH639Y8BHyb9V9rO0l/tuiRM6Bf72uW+T/UTtnEp+iYvPedODyv8p/2nrneyzTk08e84f6H8X9lVL+mV09EPfDejbJn4Q/39LnyM/89vMd3czvl/Nju/lLx7KPlriWaUPkL5Nuzfj51H8N8s8hHzuL4CSz8A7wKtyf8m8OPFOi8kr8b3PkWfiy2uabya+fJl26qOrET+zRf4nmb/nvkDi1Ir0szjx8Yl/UX4w+4zfzT5O/O9e6B/IbgeAx6ifuMxu+stc+G4nn99y7pV4NbCi8s9Zj55O/xut1z6UfzJ5PKT/7gcmrjX7gV+A2S88Ef5y9D2e3rIP/Gr2F/HTCNyRHCaRQ9Yje9PfYdk/Un8e/W3h36LPtco9Qz77kdcW7V6f+Fb+cbZxfU/pJ8jxPv35V/VOQcde6o9UvoJ+/Zl2lukfHdFfPutzdI3Wznb6RfQ2Jvtw+NtV/qXs7zr+/4Lsl5JbC+ln0Lkq8bnoew9sSX9HKzejtACv1O4P0pkXN2Tf18rfU7p99nntl34NrgssWj/UK1r/Zf0wg96mgdPB6uTVlLwOzn6F/tOHfU3hX5qj6xKwG3n8Sf6Zr2Uel/jl14xP55PLnKLx40Pyr4Lf99F9Of3cXLRvt1vR/l0L/Ezkd1+3nngUX4lXTzzk2fh7lfy6Jn5ffuLUX5Gf+565//mWdnP/8275I8AtyrXFX0v8PQROBO8gnyP4nx2s646SPibxBAVQcjGYfYFB2u+l/CTyTzzFT7k/Lj/nButybxD9iVdcA9bAf+IX/7suo49++E988DXs4wXlxmrnZvV3STxH4tSkX9PeTfTZGXzPPtV56v+pvSGxN/aX/bsr5E/H99jM43PepL9sy66u009zv/Vg/Nwpf0XOufD3o/7/U9Z3WZ/Q8xelBZj95jrSw6Rr889Xofe3nAPnfiF+E0eR+xdvKn9o7h+gc08w52kn4yfndAPlD4L/afi3oZ+r6CvnVblXf7n27sh9Ffa1zPp3SwGULKenceDZ7LYr2AWszE7XoqsMOjfoJxPxN4zfG4HeD3NfIffXzLt/kM55T853PjMejeAHcp45RH7iunKPsnzRfcrs496SeAh0j0/8Bfs6jV5G535z9o+N7x3RWYW8/jufZn+XgB21O5F9VcBP5qtf098D6KtIbjuzuy2JS4S/j/Rk5fvgZyp9VuB3T8u+t/nGVzlfxW/uO+U+VOL/TiktwKXm4adKH4Dui/1/gnQf6bxvsQf5nQHf7zlvlm7AH2xhBz2zXks8JTsbD54BdpL/GH3mPYriePvcq49/LL5fPxm/2d/6Tf4jkSd7XqvdC6T3z/ikXvYXs9+Y/cWsf/677qHfrH+WoX8y+e1lfDw49ySyvmFPXyYeBv7c58n9nhFF93vOYZ+r8Lm3/j0aPaPo6058VLYP0DDvR9DPOYnLYt+14a9l3lFVueXqTyHHRfrlZYlvyfyIfN40P3gLfIed/wH/3NwHA6/F19+5f1kAJa+Bm7NfSR+nkl+NrPukn9c/Vmt3Er4SL92p6P5Q7gUdyE67k9cH6lc1v9/d/+eTT+bXie/MeUD2/xNPlvigcdpJfNAl9NYXHJN1XM5X0Jd46LTXWftl4Guu/IDcSyP/kfQfO4jer1P+4cSrSLdi//uS/6f6a+6trcV/5tef63+35xyD//kk+/DqrVNvnPFwuvqjMx9Vfj1+KuDvHPkv5T0A/j7nB5vlf4Cv3BM9LfGZ6O+B/2Hw/AR/T/QOYMfds28D/77+z7sG/2bHuT88nb6y//4KPNl/n0x/65V7Uvoz+YlziP6iz+hvHLwPsO+PzH93lz/NeV/OG88i38S3LlE/64pXpL+Ht3tpAd7PrrpJxz9+xB8PynsqYG905t7DQvzX1c/KkE/xe0J5Z6g3+benn36J86afvA80Ab7uYA14x+V+mv8P0G/nw39t4inNT17F9/i895Lzaen9lS9B77Xouz7398jng5wHZf7HL/aN3cifqX7eFch7Aqeg/xn5Pya+2bxpl8zz2cPv/Ms78PfMPRVyXJ24dPVznyz3Da+UrqlfXyWde0e5X5T4sAnwTdT/DzK+3Ca/P33VCD/kVUZ7J0vnPsrLiWch38fx3U37Vcl3JP131j8uZD8b4VtQWoAL6Tnx+XuSf0Pwa/n9yCf3K3/ix3O/Mvctd1OvBvhU7l1n/IL38twLQm/9+Ft++/rcr9V+CfonkucYcs69iPTnxtpryG6PJLeDyKk6uu4l34xnobMrfi/LvZ+c56LvIuNNFfA5+1N9tH8bf5p99U3Gz+y3X6PdYcr3MH6vkn60aF1XvN4blvEMvweS4xm5L6B/3A3/QPb8MfpHk98Fiackv6ukf2QvB/C7X5N/4tuXmG+dmnvs6F+Lrrb6w/boaCd9fPjFx2D98iDljkRfKX6+RH/uA0SPo7KfLD9xQ2voL/Fl/XP/3/9/FvEfvlsX8b+bft8g55nw1tC/2pYWYE/t19cfPpNf2/9PouNv9D+W89zELfAfF+f+t3INzP9fZseLwHPlD9T/p2f+Lb1S+9/HX4ODEweO//nsoSq8Y4ruK39Br2vAvOdTRv2cH22Ef7fs85BTa3g/L8LbRv9/kfyz3rgX3swT8r7LreRaIfdIsv6Uf03eLZA+D//vsM8/c+9Eelrev+NPqxfF9eV9i5zX5PymF/uelfkz+tvhfxQ8uQ90CHm2Bg8Hd5d/t/YXo7sBOkYl3or/OEG5M+kh90Bb8E85BzpUvUdiX/6fSS/nJ86QfC8pgJKHwOxz7JP7Z/rjqcGXOGLpnJs1US7nZyPgO4y8yiWeT7pn4ifII/dCX2CH5+R+Lr1X5H9yX/TcnK+YP270/2h0nE0/n1v//0qvLyjXRP5I/GZdPxt/Wd/nfYfYW951yPt2x5cWYFN+8lR8XqKd9vRzBPiv1EfPz/idTY4t0Xtl1u/sehw7G+z/X3Lv17iQuLKB6GxFv7mP+XnRvcyjlTsQvvinOfQT/7Q9fjKvHKrcXtq/mb85hz775H027Z+k/++SeBzyvijno/ifBj5OLkvld8Z37knUxX/fnPNptw19PJX31tQ/m3/LOdD2+Ev8U/G7CzkPyfnHVeRzGv1USpwmev7Cz3j6fj/7hPioC389cA8w9w+uzPiq/DHo3xZ9uU+T+zW5b1Md3/egN/FpiVdLfNoz8dvw5R5Qzg+zr/gqPRfvL2ZdcB04oWidMMT49B74LngoeurkfqbylfmxXvST+X3m9R3NvzK/X1QAJReAw8Fp7HkIPAsT96adLuzzC/5zMrmflv2t6J184heXSe+T+6L0nHc/R9PPVehfaV76ZGkB9gv/eV8jeLX3IDvP/dPJ7Kq19nKvcZx0zlsT/5J4uJy/1rd+6MAOrpauj591uReh3oXay/5hNfLpwv7uRPex8E23/v0h8yj+pqv2nlX+Svk3qlcr51/qd1Qv9+RzP/7K7NeYNxffj7+FPLfnRyrmPTJ48u5W4peOl877QnPw9ys9fJJ4q+y/GC/2yjvE0qOzn01euZ/4buZF6rfM/b3SApyh3vfwl7WvvT/9DGO3J+b9PePOW2AP/W9+9gvU20W7XXI/hp1Ef7mnEP19Sn6L4Vts/Omc+87wV+V/9k4caOZb2d+Arx157yl/K/z3hHdxznXTjvwx+vc36KiLjkPpIftYF6t3Q+LBpN/Bf+bdW+svLXI/Ej3ZXyl+/7j43mnxft/++kvL9CP29Yf6A+hja3QOlK6Q8xf4865d7n99UhR/swpcCX6Z9xnYx+voqkdOv5NDo6z/+c3f+I9jyK+i/09XriF/Phn+zeS3D36L778OR09F8i5PDmcr/wk6Dsm7PbFL9XNvNPdF8w5d7o8lbj1x7MXvo66Br3XiGfC/Cp3z8TOXnfUg7/V538P8sQy/XRbsj54W9HUPuSX+pRv5tDU+rSDH5eBM9DQkn455zy/3Cor2p+/TbuLUEw9yc/ZFwT6xU+1VQv909Rahtwn5byqKL7pT/zlH/ffJ9Th0HJDzcfI9nNxyLlJ8XtIAzPtnE/ihFurfoP/ez04HSK/O/Qnr0aXgK2DeR3wbXbXIozs+y/MPOVcYiL/E1+V8YSP/OjXnImDX3O9nH2c0/f/T355frwvPK9qfl/s5eX8t5x3oeC/vN/EH2Yc9Uzr7sSXo66fevMQ3Zf8Y/kPgaQ0mzvUt+k/c9BOJZ9De8ug/945yfoC+VfJvz30ydOW892jl867UkeCvWS/RV3f9cEz2F7Qznl+pmPUMOruQ30Xk/WXi/tGxNPSbH91ETiuks24fkP1cdnG+dn5O/Cb5PUjPz8H/CPy96SPvHvSCZ4T87Cd/kftq7Pcr+q6K/l3hyXsJd6t/feLxs66nh2byG+tXtcDa4AOJz8BPh5wv4HMKeb5jfjTFvKgVmPdn5/Fn88GK6KhOPon/SdzPev008T95vzjryQ/Rk/uwhymfdUwd6axfztPfdvJ/cfzvBvK+NOdi8HXI+Z92c+8q/m8Q+l8l/6P4qVn6w8lF5zfXqTeVXHpqf2b8tfndLHA5/g/L/i57K4P+zL/ynkHeN9hX/1iHn43Gs8Xo36Lc69kfNV5tJKeL2XeTvLfxP+JqN2X/RHt5H3un7OfiM+82n0R/xe83J/71OPUS/5p42HxPojE8r2U/lnzuIq8p6g+XXki+7fijvBuWuLG/1S9r3rIVeDr/cbH6A/KeApj7JVfiL/E358KTOJzE39zC/1TB7zP0uF3evyL/3zIuJ05B+U25F8y+Wsl/LPdA8D0KXbGz2Ndr2X9l5zvh87isI62HS//H+rj4ewX5jsGz5DeOXZzJHvL+zGL5j9BH4mOfTzyL/OL7bbnX9rb+9ZH2O5H/vezxIuXr8Xuj4ZlBz13JJ3YVe+pqf+fmnL/nfSD9ajr4In7m0+c8cKL28j7gIfSXeNY19Nos8c/o7o/vjeg9LvHe+H9LOnGw49H3YdYbuY+v3GDp/urvAv+55JD3TfZkzzvJbyDdkT7y/m/izvIdgrzj04j8c7+rsfTs+LHsd2ZfAD235Zw2833tvYy/Y6WvLcJXvL+/QTrjwTelBbgp7w+R68Dsi+c9UHgmWC/OsD7PO8B5/3e2ftWFnrqCnci5P3tYQX5XSN8rfyn6xpD3a/huq/1qmfcpn3H04KL7Bzk/raXcXdIvZDzTr1+Ujj3n3vys3EdNnEjGX/p6gXzb4WNV4lfJbWXi6HI/CR+J29428ehF96/znmDOcxfzg3lfcJJ2Y6cPsIfY6wH0dSZ5Lc58If6b//wVXQvR81DOabW7E3iycv/d30PPBHhvlD4s6y//19Jv8n2hxEXmewk/GLeWWAfdT97ZL8/9wnyXZEf2uoa/XAt+BT6Dv9alBdiPXvfWD/Ndirb8S743tLXyw8g33/UYB2++79FS+wvUr8bPVS5676AWvmaQx974viLvW+C3HPgDOq5P/Af9tiTHG3LumPFNOt8L2SHvWUnPwG/i6uvm3Qbyy/svee8l778sTHyc/pW4mO78+0z0v0nfNbX3lnTsqxe+8s7vXfxj3vtN/dRrWVT/Z/5jROJI2O8H9HM2erPfn3OA19Bfwm6vI8enst4ihy3G7UX4OjHvh8jvQe5fa+d29XeHP+eXrcB3Mm6wl0WZFyX+1Hg/XP3Hcu+OPDrHb+c9DHi/Rk9Z/fkX6b7qPaqdLjmHUn+u/hD/9Yty/6KvZdo7Vnof+HK+me/+1OUnXtP/8/2f/en17qLz/xL5i7Tf3P8XaW+HvJ8nvQn8Ju9C5H078lpGjnlnLfOAh9SbBOae9hvsIPdTRtFv7qm00f60vIuv/Hh6zHv3G7GTewLE8N/3RN7HX9YPpeTXlP3ejJ4F7G8ZmDiFAeqvzj1aeHvn/jP6E3dfvD/0Cns8w75QRzDvNeVeU76LsgK+qxP/oz/tnHNj5XN/L/cncm/iSDDvz7/Pf/fX/jjpD+FPPGviWxPvuhF/7emjEr2/Cv80/H2Ev/cJfin5foS+vNu8RHt9yem53KNnL4eT7w+5p5/3OfBzonqJJ0z81438wTHaq5/9g6L95RVZr4P34ifvhuxIDv/r/ZA5eafH+j7vhzRK3CiYuPPsL+6E/ryj05v+Z4Y/+s5+aPZH79BOH/q4EGxMf5fjYzm5xS7yzuxRiT8tikdMnGK+HzCEvs7JvTP0daCvxuS7Hv6b4B1LftsYX08G837tUPzem3k5fjKvvAJ9N+T+GnpmoH914rf4l8vQXQLmfa/ERx4FHg3+oP3n+Y+Hc15Dvp3k38kvZdwfnXt79LMfeTfH13r9/dPYqfY6kEfZnONqZxz6j8g7PNJvKFfD/1eqn/elpqhf3XzsRHR20N+yfh6ufOLw7yaXxONnv26wecJ65U6S/w17znfQ8q7j8frv3ujL9z9nKvc7/FPpbx5+VoLjtf9JzifVWySd/dkZ9FU/40/uLWUeqT8uAhOvl/i8xB/MKYo/eDnxCeTRFV/7kle93F+A/xZwKLhI+bnovkc7l+Z+KTw12EUT9ZqCk5VrknuR5FEn9zzZ13v4jjwXg2ehfwm/9HPefYBvCzm/QR5XaD/fG8j3vW4gl+vBvM/4b3ifTH9NPK3/8z3F++k375k8lXWR9L/VfzP3fJXfkHkV/5f14G3Sbcj/bfOVvDN5at4dkP+p/JHmmXeDtyr3tv49lv99R7oLfc1Fz87sN/vmj+R+TN7dVj7vqJ0sne/f5Hw659U5n25N39Fr3ZyTan+j+vPxF7v4Gf1ZP25OXByY+NW815L1VeKUEp/Ulv6H5p1z6/yyGQ+zL6h8DfaU9896Sef7fPleX77Ptwg/eZcydhL7OFX+jAIo6cY/5n3tndn/3+CJxpfEee/DPyUupKdxJu+GnU3/38J/Af3nvZCVxuf7+LGr6W1Q9uvJLe8dvs9O++V9EXQ01h/7GF+GJP4Tf6cmLghfub+Y/b5DtX8//nZA39vGz0459ywtwMrq597mS/pF4rhuVH8bfjvfuSzJ+Qw67jMvzDvsjRPvrv0jE1eW9wHAavIHFO3rHsg/3Mfen9E/8l5D3q+Zo53ch048XOLzPkdfjXx3TXsz5deCP+9xFb9/m/inofirZJ5ys/TC7P9rN/HPiQdO/O8X5m0HsJt3yecpen+T/VTVzmDlSnM/Vv/IuJzxeiH+8l2ovFeRfal8f6n4+6bF+415H+zwxP9mHxL+fB9mJH7ynZh8H2aTfrVUfva1F8Gffb989+sRfmJu4mfxk/e+8/53c/yUlX+89n9nz9lH/Ip95nsix6u/Jecf/GNn/7/FP7xIfk8X3cvPPf3czy9lP3ugd536n6f/5fwL3AwO1P62OW/HR95BWau91cr/mHvd9Jz73x1KC7AfWJo4k8T309ef6N018WyJb9Re5s39844LeRV/3zjv/+cee96tH0x+xe/X19Z/32Dni8HvEl/IHlorn/uz3yV+K/0OfflOeqXsv+NvPr6qoiPv77bN/T9+crvsQ6n/eAGU/OX/YdKPRQ9F779knzf9p1vi8PK+UdH7m7mPdzB4Av+b+3n12N+WfLeEnC/CR873R6DvVn4471ctZB8T8f+SftIV/nwfNHFFxfFGJ7G/Cew48Y7x/9fD9yU9XJs4mpzfk0e+J9km9xHUz3eVMu7tiK+Mf8vQXzH7NOS3XH78TfxP3inM+y3/B4dW/S94nHXdd/jX0/8/8BJFRtqk8VYpSoOEojQlbaJhrxZlj4SGEkpmKIqKKErIHmkYZXyQUFbmJ3uG8im/6/q9bvfvdXldl9c/j+s8zzmP81jncdbjnNd/ti31/3+HbVeAO1ctwFP2LsBX9yrApk0K8IhmBdh1vwIcWKsAR+1RgAOkpzUvwLPqF2D/BgW4474FuKv6RypfU3uvNCrAcvsX4Mi6BVgCT33pCcotVe836f8qt11jeLVbFv1dlR+o/eNKF+At4M3KnyG/faUCvBT+meq3bFqAd/l+ovb6ktcj+Lxk9wJ8vXoBNmpYgPcpv4Xc7sPXynoF+Dx6L69RgPOlb4P/O3poV7EAv6W/46vgQztb1O+nfl/8PYC/D8sV4HrfL0f3ofL3kb4MvE/5x7R/p3onyP9pnwJ8V/33yxfgUeq9JX05+2gi3RsfoyoX4Fj0n4Kfi3y/VHuV8DNEe4vpYRj9P8V+dtu1AK/foQA37FSAv8A/SfkV6k+m3/Ho20/9P8GR6h0I/01lC7Aqum6U3pd87qeXA8F39bdu2rm8QgGejr6q8D+o/RPqFOAc+PeoWYB3y59bAKXW+3659Gbyf2oXdLHjo9jPveifhv9f8L+j9vcj34XaPUL+SOlX2f/d8JVWvqVyU6RnyW+L34bw/4W+H9l9HfbztPLzpJ/ST7rh9zbt74D+ndnP0eT9tvp3wz9Z+XnoGkze16KvmvpLwd3AY9F7xm4FOASeQdI3qN+QXl+l1xbyN5HPh9Lv4/tj6S/Y7Ub+oZt+P4o/bILe0dodQk+L1buaXPZRvjk4l9zqks8P/Npr4O7sZBp6zuHvR4C3a28beKqp9161ArwGve3gXwVPa3SNQedE9G9Lv23wvYNy76H/dOU/kF4g/7/0vQe6/tLu7fBUlf+wfvkTve9Pf2fIr0Tfy/mXk+i1sfbG7FyAo8ErwN/odzZ5pV/Okp4M/8G+f0Xf9eHdg/29i/8H5H9Fz+ew103o+g3cCN4AzybwIPTcQV6ryf98eq9BbzWkT0LfregrTx+D1H8Xvlroqwkuh+dp9X/hNybwm+/QzwPsYy/47/e9H/zt8dsDviXaf0v53eU/un0B7sRvzjZOPC9/DLyHSO8E3yTpC8Ff0fuZ9t8n/4PI82r01zaODGYvc/XfFfrvdezjYHLfmb6WoPs49ver/P3Yyy3GqXrpt/KfMP4+Dr5IzgPReyX7Hgu+ot6h9PsRukbC25N8xkp3wEcd6T4lBXgh/VRn/y+T2zrjwXxyXW98+Qzchzx7oe9e9j4n/kG5KvDVhm8aWAvcOeMh+CX6vpVej77Hlb8YH4+iawH9Zb5VUf1Gyp0qPVX/355eb5HuRo4v09tD0pk/XUC+3/Aro/WHbTL+kUM9/P6p3gry+Ap9q/W3BeDx7GUr/vY3v9sN/K12AV6OnrPgL4+OH80TR8lvif8r6GMA+7sF/W3o5Xx0D4PnVvljyPsr8vok8w70X6i/XETuZ4Hvk8dGfA9Urzt8zdRvrt82A5uCdeSfTS+tdyzAdfSzGL3djCt1yaG79Ex0xM63J8+30fsG/F+g60ny+kT+HfgftWcBTtPv9qKfLvD34n9OUL8pfndTfwK9/a7/Xou+L9Bfhf1+zV7Og7cq+jbwn5nHvArWln81fb1GrtPl76/9Idpp6PtQ6SbyTzXePcPPVYq/I6/zyeMc9RuQ5+fs6VLyewz9/fix3vBP5m+mgLfD20H5h9Kf6fUi34cZ3w7wvRe6dyPvQehYpf6hyjcnj0nxf+bFbeS/qvy18ufi91x0/cj+DkBHJfqrDm9P7bZWfx56DufH50rHXw0rU4D7k9Mu0h+Q35HGjx/46f2U+1D+C/zCUjDjVyf5tdhnF/aQde076BtHftXU+1n+fsr30L/up5+5YNZr95D7AHZQTb+eqn4z/mNISQEuUe8i+ZMy3wGvBWvBu416ZcCJ7H+rdq6Wjl1/oF7mjy3p9zj8tZC+QvubyfUUcv6Cfsaj80H99Q9y/wOeJtr/kTw66yeHg0+qdw+5tFP//9az9NMBXyuzjud/s37rzl83R+9E/I3H3+383hH8wO7aX63ct+TSG72ltVeX/Y7kFxfj9zXpMvC/if7R8PVU7gL0PF7U/49iPzsodx1/tpd2G4APw3cGeXyHnqm+dyafXvrbTVn3k+tg9G3HP25Cx3rldkFHS/jmo+dW5Trp7xeS85HwXoWPacpfxf7n+r4W3krqn6NfPw9uZl/PZX9Fe3uia6T23pVui76B2ruDPP4gjxXqH6L8j1lfaP8F/mkn9bP/8hL5/R38me/D85zyJ7C7rtLdld8W/avY03x6WABmfnoofo8mlwna/0b77ZQbCX5NzgfLz7oi89oXY2/K/61/XcvODyLn3fH/GXqeJ5d3pJ/AZ1307QmWgJ3hX1NSgJkvbWX/z2S8YL+N0VeFf5qU+Yv+mflmN/y9pX7mN1WkM8/J/GaZ+i/Du4S/Pl5+T/65Kb/UDPxa+13gn4rfpfzY5/LHa+9c/BXvn7bVf7YhtwuL5sdXGK+nsIuO9HFM5nH4/pS9noGe2fh9qABK3QKuJd/e+K5g3fRRxj/p39V/2Pc52st6MPzMYp8b6WdX7a+U3wa/W9Wvw972RPe+7O1Z49QM5W9Xf7Hvj4O70M+O6JqFjxXwZV2ynPz3YG8Vle/FftdJd856V/lh6r+S/WT6b0zv3aXHkMMx4A/aX0mPy+jve3Y1DP2vm69sm/0G/N+SdYD2P0TXpeAW+F+k/yr8b52SAryM/K8ht8/pb6L8h9Uvm/kc/i4ij+/QXT16lH84Oq+l1zt9vxh/u/v+mXqxl5eUa259ur9y56HjW/R9on+/is9v1N8W/pt9fxrMfDfz22vo5R7t30vfleU3iD9XfxP5t0DfCvr8zTjzA36nom8MvY0G66HvW/1t0TYF2FY7s80fz6CfT/WnlvT2MjnPUn6frMvQ/wr+fsb/gfxuKf0s67xZ2q+On3tKCnA9+m/F3xL0XAqWpu8J8JeD71R6aZ31Mfrba78Vvg8Av1T/BuWn+J79gGvUPw59b8K/lR1sSv/gL7c3f/pOejm8d+L7XnCZ+rXhf4u/aG3d94z52zh89aK3nuDD+sdG9nGt8fdG3wdlH4B8/6aPpezhd/Krgf5q1p0fore69OycTxRAqbvB88Gh2QfN/JH9HcXfn0+OG9nnHPL7NfNA9GX/sVXOfXzP/uOB5D+LfKYrf0HG/fRvfL5ODpu1V3z+lHOnt5U7Df1T9fMT8DWLfDYZ315jHx/Qc4f4p+wb6MfV6KU8+Q3z/Xz1+pD/cPi309/LgWXB09j/t/S5RPo19PXW/mD+55ICKNWKwl5gP/Oy/yl9OD4ehq8xvo8mz7fJbRr8PdjtTeho5/tpYObT48G/ybUUOXyEvo+M20cW+cvO9NtLvcOlr8v+tH2N98A14NvwT7Zf1Zn+98Pvnuofhq/+8E9VLvO1DujpBN6HzkPJ6WT9rkrRfCzzrzv13x/A4vF/TuyHncxkj/3QOZk9z835MPkfq73x7Ked7zXYUVPtH4LOEfrNp/g9j3w2kGc3+X+QV/xzN+Wz7/AIvTTR3k7ofBW+36Q7se9n2OuUnC+D63L+avxYBP8a+cPY31by+ht8Bn3d8TVIuQ3wtZR/J3oG60+lybm19jaq10a/P9r49bP1es53J+B3P/wOoN/3yesv8t8CnoP/Q9T/Rv/pzu/l3LF3/DN8FdWrRg7Nye+EjKPk8oZxrgz9zMdP/Zxz4usK7XRkPx3AieQWP3a687EW7G6S9BIw516PGkcWgTm/SXxD4hrqw5t9oHH4m4yuzAfuke6e81H4btV/R0mvzLwdno7qPSJ/a0kB7qrc9eaj90sfCNbUbvZXX9Lu0ezqPvo9KfN/8v0W/+nnN2nvQXRshm+Cefr18LzxL+v/jui4BP3Zr8z+ZQX2kv3L95RP/7tKe+l/FeC9Hz/l0PUYOFp/mICe9+K/4b8bvsfVv1N7ZZRfbdzuwr7WSNdU/1ny/ibnbtI/az/zl8xb5kmvI+eV8fslBXgweBz8n7Orz8D/sb9m2tve+NMsctBuVfRfrP/3BXfkjz7PfIa//I0cHuEHztQ/e+rX08E15rfZb/9M+2/yI29lvoe+hvJrs4O9pdsXnY+fkfmX74nfWJ5zJe09he4Wyu+UeBD8NaWftfD2Mq78rl4z/P2e83f+v3HWbdaf2QdqQm9noqMEXVfpH0+Q27jsq6P/aen75Q9kVy/A+7d09mUrav9F+n0Onr3RfVfON4r2Jxab9+2L37n6aVX5B+DnMPQ0yz4DPt4kj6N9/4a8Ksi/jDzLqj9W+ezPVzYvWKr/P0pev2QfTP2fpbOPso78hqK7btYz+H6NfmviL3EKFcmrlfxS7Pkecn2dfGqivxP7OJr+auBvqP6V9X31ovX9GvQdhf7e4Bjt7Kv8dPqtjO7Enbwp3ZY/+0L7m9GzA312zXmk/OH8VXn5E/nHGdofAF5HjtfgZ4hy15Dn2YlXgLcNem5Xb2XOr9CT8/Sct3dSf5ryhzb6Jx+vJP4s66ecp5NL5gcn57yfXCapf5n65ckn+9MT6S3nBxmXMx5nvP4m8s3+u3Ybhj54+qi/DTp2l97C3k7mV1+OfNjx6fCuYt93ZT8wdgb/Av1tIXgyPnbM+oxeFmUeIz024z9/2BPMeqIMuW/IvgTYnZ+ozG7XwPtcztnR+x362+ofH8jvDd6a82/672kceFv6VfL4VH/aBj/Zl7tauvh8YzZ6jtW/TmLP/8HPg8r1kb8RvQ2lH+Wvukp/gJ7S6HkX/vnafzT7//h9XP7RWV+UFGD8/xzzq1nwtaKP7MvPtx4/jh7ns4/E4dzLP++o/rPxP/T2I3u+Cn0/ZFwlt/oZh+QX95fMt4+kn0sSr8derkJ/V/VnF8X//ifnbdpbwz+sQec47ZRlv9fTz7mJq2Vni+W/it5R+K2of82kn4HoS3ztAnaU+NqJ9PAgeKP6q/G3rfon5XxG/16E35xn5JxjB/bQOOdf5f5JX/H59mryb6V+zh37o38Q+QwDJ5BTdXxfpv3s23+S81j0beEvjiH/cmD87YXWK4v0o4bS8aebyH8uOdwD3wbyuR9dL+CnPHs9nX4WFkCpc8D3wdP1q2bGz6bgLvS7mv1ovtS3YGX622K9WEO9k/mdg9U7OPHV7P1hctrF+Hl+4g/Iv23Or8Bt6OMa41kncp0pXVc7gxCY/bJ9pFsmfs287y31ziSvLcq3TrysdjuDVcnzv+YrtTNeSr+43z/bT3u9+Lvm6R/0kXPjvdAxAf891e8BdlT/Lfm9yHeZ70vBBehfSn5Ha/943y9hf5fJ/xVf32d9hf7h+B+bOFRyfzTrLd/LJD4ncRT4G0WfmZftGDlr/z39dTvwZfY1mDxexN9ZynfLfhv8Z9BX9hlvK9pnHJTzNfU/xe9g9vERu/wE/Bhcj++l+t2liafIelj7M9n7HHCI/MraK76PkHsKNeBrwx8/DLYFd0i8HH7PxE/i1xaSf1/jxjB+Zwt/lvXhbsafjyNH489S9tOUvvbWX/cBT0dfK/q7MfuVicNjH32191nWE+jL/s+Z5FeRfPprL/HQD6q/ABzGP7+lnTPJ7z3tlSmKj9mOvq5mh6Wlm6Ong3YTl5V5R+KzhpL3k+o/pv9OTryg9nuqf3HiJ9Q/Ad0ngSeCX5HfPPbcG56Dcp8l81122xwcZH65gX6fNL8fLv2C/r1e+zPYW+Kmt8/5h/w60uUTz6zc2dI3sJ8bwXr0nfPKK3OfpWj+cRZ6zuSXvsBP4pQq0c9afNeUPxneG8ClOTfMuKr9HvS0O3qPTfxb0XpvKXpyDyT3P86hpzn8yjj1E2dXC/4pJfimp8yL/ya/zOsSf5H7BYm/aKR+zl1uNG7m/OW9nOOSXznt98k6hb31gneM9P7oa2I++SS76ouvHonvA3M+3S7rl8QT2S/K/Y7d8Xkx/dyBrt/JL/cMdpafuKnES32Yc4Tcnyjaz99Zemjip/W/SvieSL/LMz/mby7jt+dJ5/5LM3gP0V5r8Ez03cmv5bwl5zHZnx+hP60ix7Olj0TPWu0u0c4p+uFI+CeRy0/kfDv5vCh/Bn/1unnbG2DOMRprryf/vK/0GfRxBr1GriuzH0A+jeH5GH1t0P1iziPRPyL2nfkm+/2V/JeZZ2wDZr93PHtbrv5S9nsF/hrQ1+nG7cr8eVX0X1YApQaCC/jf+fLfj97JMfGC6V9X4XNP9t4g59M5/yKf23xfh/6n6Tv7Dp1yT6Jo/6FU4u7o5TL2dajyvawXV+gnrcyvD5E/gt5uw8+H5J14szaJz5W/kFzv0P727K6G9DPoTfxoX/3lWd/3yL0h+R/Kz3le4iESzzFYezPQkzjujeR7b0kB9kRnZf0l8eHT8HslvOPAmpnnKr83WA3sTz8H0cf+2n8FPXeh/xH2/Jb8xHXnvs9w9RvSW6Oi/ZXx7C/nGAvl5xzj3gIodTC/doZ0u8Qr0t8c7XXRv+dLP0ufz4DPgV1z/iL9CDxjpZflHNT4XA+sgY6X0PscvZ6U9WvW5/zJF7k3knsy0jsnvqykAMvn3F66Z+7/6b8fJ04kcRjqZ79yEPobZF838zP05X7ppeZD2afejv8vC2ZeUg/+Jbm/RV7Ts6+Bv5vMd/rrX8eAeyiXdedx+ucj0q3UX6+/5jyljPQE9MWvx89309/j35/KuQo+F6N/OvvP/b7Buddn/dwv8WXw328esZgc12n/efU26DfPSrdA/3zf96SXedIfx99lfQTvXtKnZf+bv/08917wvxb9z5Pnl/J30v46+Sebbyf+6hX29Rn+fuHXj1X/CnRfHr9MfpkPZp6Y/e3Eda5Db73EO8LfkfyybzKenrJ/kvbT7puV/9n+isRnwfdf6Q3sdWT2B9BzS9bZ8Lclv9rkWxPMfPJT/XWiddHckgKcv/8/+R2jfOQR/hMP/HLWw+j6MvFX/Hfr3Ieih1LwVaG/Evnf8689tb+e/n6m9y+kl5F7eeWfwMcA+C/K/pH+nLj7xOEn/n6e+jn/Tzxf3dxHYK+v0OsC/P2tfPzBzUX+Iv4h8+N5+tUSMPPlq/FRfP/4Ne3cl3lKzlXRcbzyw4Of/uaDd8FzpXK5H76YPeR+eF3yP4v8T0//xU8b85ncb8/9gNL4v9L8YRxY0/dl8O/A3nZWfyL6P48flU48dPpT+k/mpeejf6b235Bfkf5GZ12Fn7LwJ14ucXSJm0u82Eva/QXdOR/P/Zh1+uu1+JiQOOfsX5BP5PI8e4l86tP33zm/TzxP7j9q79PEx+C3K/pb5D4PmHV6g6L5X+59ZN63DP4l2QdTfpn07fIrGC9qkEsf/moG+21ivF9lHtpUukLi38llJ3a/s/VA9t3X6K+5x5b9suyPnc0f1wZbk/dQcqia9yay7wLmnGhK/DZ8Ode7Vfq/+Psb3q2J14PngMSL0GNxPPr19HcpO5sinXX4E/h7MnHCWQ/lHgU4hL00STwi+7g093DRc7DyF+V8jb3kXmbxfc3aWY/n3l/2VcGvc35Mrz+CFTJfZ1fvoH9nfEc/56OndcZzfN+G/kvg6Se9RXsHZH9NvdjrHfhIfGhZ9Ncrun+xQro/efel7z45h8z8xf5L4jj3k14V+9FfT0TXSeAn8A3KvnPO1RN/i59zyWUE+DL7aZV7QPANYWcj5XfIORW7vk25JtJZHy1KPEbixKR3IZ/6+t3k0JV9l9y3grc0vH+C3yl3t/o7ktss6dzXnJV7p9Izpf+H/7rqDWUPL/JvZ+V+Hrl/zw4+Uj7z9Q2JH9Evvkw8q/yc++YcuAI7zvlvc3JdULRuyvsIH5H3JnaW+dJOuZ+be5m+j5aOPY9V/3rtTAHns59rjGuJQ71J++PgH43eXvi/AJ1dlcv5TgX97Oj0K/J7H95v4Nk+8zL0rc09vayf9Yd7c/+ffc+Vjv3el3z6epr/Oh0/2dfbA7/D4ofZR4/cyyKftfQ3QPpU8nne9yVg4hUfyDieeCJy6aFc9gt6ay/7FL2kx2s/6/GxYPYrJsj/lT1tAn8B3yTHy9DbF2wOf+4pjEJvU/jOR991+s+R+kPWux35lxfk725e+r1x8Hnl+me8w9euRePsAPL4EF8fgKuND7nnMUW567LfgK8G7Cj3JJ5VrqV+dEnmP5nPqDcaXfewr5lF/f805dL/vyfvzJtmF8XX34zu2uiYJn0w+dweOyuidwn7H4u+G4riLb/R/nnk2opej+SH7837CeZ1jXMPJvHnOe9g9zub1/aFN+vD5/WfxDHkHZ2sL0vTW955qCZ9vHId0dMJ7Jw4utwTMi86ljx2xX/e5zkH/Q/CP1z6BXEInUsKMHroJL216F7JOeRbfL+kA3tvD37A/00q2m/M/uMm9W8tym+f94cKoFQf9O8v/6LcR2ZPU5Vfq/x54BLjxb7kcRz6c58y9y33hu9C/qyV8iXxO+xvgfwB6k9Hz5/y/5d1W+7Dg8vRN8i+VWewW97byX0RfnsjveZ+ad5DeRI9z+ReInsuQf+Ef5lfxD9Xz76a9sbA/1PiA/ijRvSW+dcXmb+z233R1xjMPnnO2fJuVN6RyvtR5dDzK3q68z895H/t/lbuR+W+VO5Hzc/+iXYaxh/lfBg/n/veJvXAKfpn5n+V0dOf/I6jl6m+VzP+DUPfsdrvyj5+SLwr++1eUoCJzzyIfs/WXlX+vzaY9xbyzsIQ/j7vMlyX+WX0JR17SnxH4qMb6revons5fmvn/Q14V/FPPaQvhedy+vxU+Rbp99p7A/7/gHO1syd9XqV83htqir/pWb/T557gf/ifw3K+k/hz8s08LOer/dlnDX4071uckvsz5FQt92XUXyR9k3aPBNvS9+icF/Kjzymfe3i5f3cveWYfqSr4Ef3uqj8uJJezlH+RPIrfb3iLHnJesyjjH3nlHbipRePZZN9jZ7GvctrdDmxIvxflXqzx4WTj2yPknPfhZsCb/Y5qWS/l/r/1a1/9NuvuxLcdQR6n4+cc9RMveEpRXNc0407eb8t7Q3l/KO8RrVJ+i/KD2c1i6T/x9w7/MZF+a4Gb5U/gv3Ifei/j6wHwj9B+7v3MYl9rsz6jzzW57wXvqdnnNt4krnJk0fsRa9hHcVxAE/U/JtfEP5SAiU/+07wy777kHZi8/3J/0b5c9unqkuOe+JuQ9S/6N+V8nP5+8n20dA/5VdGT84Rz8XNA7nuYV/zbO6ZP+H6Y7+/k/Bg/S4rihW/mj85SP/uGzdCRd6L6Zf1FX8fwr3dI5/7DePabd5n+ks77TCvzLhg4vaQAy2u3RuLTck8TnXexn+W55yrdU/nf8PcYeXZCf+KEXiPfSdo7Gl0X8wfZR7tb/UvMe++Xvgq+neh7feIcEq+W+0boWUaeC/DxGf4Pzn0A/K803mReNoG+ExeR+z4LyDfvAeSdgMQfP5H3b/ilzCObS2f+eBR6d9SPct98hPqt+euW6H8lcSDqt6D3luAB4GHk/zV7epsfPMz4lDjriuipBO4KVst5N3zfsN/Hs67M+S/7XUlfsePYb+6fTcHfAv6hLPxn8k95n3cXdGb+Xo5dPZnzg6x/8X8leaT/zjEf+kO9WfidDS6GZx78i81vyqCjCboe2/ef7YWOzHdDT84t+2i/XNE5Zs4Vc554jfq5vzaU/6hn/XCX9rqgow77e4hcm+knY/D/qvx+7Cbvn76E3lL6y7tgzo9y/y3xJpdnXATHpn/qX3fnvqt0xukDjCddwBZgLfTXVr4EzH3f7MNdZly+APw8968yPmZ+CL6Gjy7qHwFv3lGswc4OkF+HXCsaN3SnUoPI7wn670BendhB3tu8jr32yfiZcUT53Lc9iTxW4CP3/xJXnHjixBvnfvvlRftlWYdk/TGZPeR9oA9if+hfyK7/1P9maifx/Wty74Fee2e8x984/SXrouL1Ulf+I+8qdpH+kf0+w/99U1KAHaTrZ/+jaH3yGHlknZJxf6jvo8inA/6L36voj+468lviZ1ji4Xw/gXzGs4ca6Ms8oXriXWOn6ucdmfpF8fmZv2U+l/lb3kXMffUzi95HfAHdp2Z+nziZvE/A/hJ3PJX9r1D/e/6hGztopt2nwM3su7d21tFf3rNrgp5eOb/i3/Me3nj1nyKP/uy3XeYx5Ds070WRz3nyx+X9cHI/K/MF/NXKuwSZX+JzUOLXE7+Zfe2c0yZ+Df1VSgrwCv3xGu131v5F8nOPKu/MfWf8uR/Me5d/ofcI5Tfj/6LEC5HP0sRXZR9WOvf2Xyu6L5X7Uzfgb1ruTcA/kny2kMdH+tMKsDh+vrvv3dWfpv4o9E2X7iF/Igd3mfy8O3wu+t9QLu8PX5rzH+nnEk+X+GvzmjwkUhyv2E3/+tb8LPdH847a4ejrnnidrBelc66Y88TrlE/89CJ0VzGuVOUPHkRn7r2Uh2+3xCcnDilxEejaKfF8uR/JzhJflHijzJ9yHz7ncLkv/4P8w/Xff3unsjG7G00fc9Q/EH9PJr6HXX+HrrzPu7CkAAca32aj403yGq2/XgH24z9yz+zQ8JnxI+ND1j9F73vlXa/2mV/xO/19T3zakbkfn/gn8u6U8xT4v0NX7u0W3+cdZrxoQT9PZb8K/oPYVzN23TzvB2hnObtbAuZcK+9jf5/zfHLL+03z8j4C+59G/ukP6Qfp/1XQm3ll1ofr8/8KsWf6HqD92Gvst3qR/eY9ipyn5H30g9jPz+xjM77/ApuQ1w34qUg/benhsLwnYPzYSu55Ty/v5w3Rvzqh61ZyOgI/c31/XbnHpOPPaqDvePI/Ecz/KOQ9vNzvrpF7Vpk/kW/eUz8x50nkd3dJAZalnw74bwf/OzlXI9864LvaOZt91U3cvvR7iQfI+zy57wVvP/RlPzz74+2Vz/74K8ofSx798u4tODFxLWDu8V2V+/vq/4merK9W5v5Q4rMzn2JfXfM+LP/zkfwPlT8yfpXeKoOz9d9zyPfNxJ8mHiLx6fgbVVKApclnhfF4IPo+Mx9vDH4O5n2Pu+lnFpj/+xic+Zv28y578fnDH/I3gX+CU8ntYXrtRm5X0MMf0svQm/jYpUX0Z/+2dOL6yK+t9h8l70XKt8i6mP84kb+6lF2OAn9S7gH0vgFutI9XH5/F66WsoxbTxyHoyXsVeR9kpPy6+DlR/meZ15PvLbmPgY/2eY8X3y9obzX9jAFHZN4Wf0zOu8IzXP5z7PpG8CYw9wMbFcUlNkj8OfvLuzedwVL6ed7B+YA9vYbuZ/Bfnj7qmP+1UK6WdN73rIS/O/F7gf2x3P9YzT/mPDnnzbnn/7D6j4Dvm091y3hu/2NU/gcDv53xOVx7p/p+VtH+/dXkeiW7zbvK+f+b7cljBzD3d2Kfc/TXA/Tvw/SjuYkP127e0888b3bmW/jNfmX2LyvKvzjvE6qf+LQZme+j/2LtXZxzWPq9kL3/JH+Y8eME5W6Rvhm8l73vD39r6/6cL2b/JedBN+b/QHL/mh5zn3szfR2b92IST6v/3kSvg8jtIfgTR/IIuS8CHwZnZF5fUoAXsd9G+n/eQcx6Yin91JTOumOF9geDuYd5YO7P4qcjfsrCm/c1i++jVUzcXOJbkoYv+8A5//rQecIEelqV9YX6P7CvR43L+f+l7AOPyPv6+mf+3yr3b+6E72b4FsvfQp93Gr/+7X8avjUf+4Pdfyd9Kvof/pd7E3vT3wMlBTjJ923yzjZ6Kqv3PzDvEi5B/4/kcgX5/Zx7WPA3ps9aWTfr38Pg/5O8Ew+4gb7elm6qvT459yp6325B4lWk3zd/OR//eY8r73TN0V7e6ypeL2X+uTrjGL1lPp7z3Jy3HUjuB4Ets17JPaqsO5SvQx75P4IP2f2/jfPf699f42c4OW+L/n3I+0l2eq70H9kHd971vnOwrtKbsv+n/9dgZ3tIn43eAca3PtrtmLg4+u1qPXVI7CznJugrn/sI9L07vvrAsxVdjXzvDM9A7Q3PvWnwCPq9POtR9l4190f0t/y/Re5r5x730oyP6Mt502D4ch6V86e8T/qscr2Vyzul3/m+k+8Xs8+R5JD3ocrxi3m//4m874Ge7Ddm/7En+azG38mZ52QdQf5/s9vHcx6q/f3he9P669D4L/07740fT9+Zp5+Q8YB/+R/+sy+1WXoM/GvZ83Tpbuz3SvRVzH1P+qyQ+yDks7v6L7O/UjlPRN95ubcOz63qzyi6j5j7ibmvmP/PKx4vct9qFXrzvweJayuOd+vGvvfSjxuAx5vPEFepL8DqiXfCfy16bg/vHHTm/fKnMz9HT94ZzvuVbeB7zzyjrXTe+53MrtZq7yX83J/7PejP+7O3Zv8t+zrkkf3zA7M+QE87fuko9XNPvin53IyeUfC+hL8ZRevBN6RzHpf1S+JOE7+UeKbELy0tistPnH57+PpofyT7TjznSfD1hX9b/mMdf5p43EP0j+w/Jw4r56F5DyXvoySe9uSsN31/2/jcJnGP2W8vOl8qA+Z8aXbOq/m9/C/Ctdk/KdEOej+V3pr4ZePbNnmfSfqsnJfo7//3Hpl6P2n/f/S5o/p57zHvO04yvq7I/5OBeQdsOftLHFVx/FT8a+7X7CP/dfY3Wb2vE28vv2b2x/P/HvQyAP0Pob8LfV9DXhdq72Pp/D9J/o+kknbzfkjez8j/Yz7NjvJ+xvzoN/EW5NMu/Y0/Snxj1hdvouNR/it2VGw/j7Lnn3MfMO0lHib7w+SX/e7DySfvqeZ91by3+nnuO5Fb9r+zH94588/M0/WT7A98kv0r+V/B3y/3afF/SOLX2VF58Ev1Jmj/4MSJqb9X/Kv0s/Sa//3J+dn35Jf3DLOvmXjeh9Cd98naozPvkz3JvnJOWXw+eQo9jZU+RDrxqRuNS8f5fif6umT/K/tz9H4amPcDNuiPj6nfTv/ZJfcIpI/JfYCsR/J+h/nRJHpOXFret1lnPM7/L34gfQF8uc/XKPyQ1zTy7cjePzV/fF56G3zeZ74xkN98Vzr++gzj4BSwVeKTi+4hJT7j56L4jB/Zf+65FN9vqaW/DAGHgvkfprXaPROcCW6vfv63YT/yzv83vI3/HfGVe0F5f6YBeh8zfs7IuQM5/9/5Iv28Qo9r6OUY+WvI4V0w84Jn8J+49SaJh2JPJ0kvRHf2VxOP/Ff2iaQvV34KfDfBPyX/+5n9f3BR0Xl+/kezY97z1d718F1RtN96M/wvSefd1LwblPdUM68c73vmldn/raBf5p2r27Ub+x9HP2XQt73xeqX67djzyXlvJ3yo/xN77gy+Tp9tMm+kly7G3+Xgduwm52U5P8t5Wt6PWyN/lnSZ9Evt552au8HVyie+fwb+Zibug75/xc/b/McifvQRsA36+sv/GBwANkl8Cn3f4Hv+byr/LzWTv8j9vwa5D5T4Jfp5X7s/oG8he6iU/7+ll8TZdGGfR2nvLXjXaG838sz/Lp9nHF1hnOyFv9+0fzA8B4Ij0H9K9l3RVfz/17dnflF0zy/3+/Lubd67/TJ+Xv0PjGe5t1JPOv8vlTi4N/CT+wnp5zf6nvnW9Nwzlp//5RoCf95Ly3twj/MH+V+DVfxj/MXR/G0V/rM5/Pn/grnGjY7gu/zVZ/Adp/3Y0wjtvpr3H8gt8/rq6M75/Zf09aP8evpT4tN+0+9+BX8Bs/93pfIVtN8IP4nTGa6/5n3Q+ujrj47cd8v9t9JF99/yfuJC7e3K/irKP47dDQTPyf6z8vk/yvXoe48/G6E/X+D7afl/huzb4v+xAih1EzgUHKff/D+0aex/eJx13Xn019P2P/CSkkohiZI+UVSShKKoZI6bsZQGiSbJVLgkIZQGqSQqUikN15CMoaSMiQZzKGWep4hc/db6vR9Pa33fa933P3ud1zlnnz2dfaZ9zntIvVL//zf1gAI8oX4BdmhagOt2LcDHlWt7UAFWOrgAG9QswIE1CrBlgwK8v1EB/rhPAf68bwE+vV8BPqH+ZfDWBO9Gx9Xa6aR8Rfie278Ab2xcgF/vWYDn1SrAoQcW4MHye5UrwCW7FGAf6Z3R+UtZeHcrwO92LsAzyeHavQtwCNixYQHu16QAd61agEdVka+dyvh7tW4Bfoivp/C5Fj+v1SnAO6RLafdz+PdR/hr0riOPK+FfpNpO6JpGD89LD0PPDeBUdB5Kjs3RX5+822pvCf2fq173HQuwIjn9qv2LyPNHdD+n/DT1L9DOp/hvB47X3mP4uRO9U7X/X/prU1KArcDWYAXy+Eu7v5PXlfDV0v7VOxTgVfjuJj1cuc6lC7AyvY+QfhKczT7GaGdh9QI8HB+XwdMC/X/T94/scDv5S+g3+iwvf1419PveA3+z5O9BP03x2wPsjr/xuxfgJvr4bq9SKhTAzfj6ll4uJYfl5P8Oe3kbPJIc14DXVyrAHcE2+D4AP/dVLsCBZQqwLDgL/jPJ70f987PtC3C2/H+TVyXy+5a9XI2f08jvT3obo90l6neUf7Lvd9PbB+i/Bv6r4D+d/CbLbxm/hq/rpQ+Hfwy/tYGfu44/64y+a+jvavxtAK9jL8+T63XwX+X7cPppQD6t6e0M8Hdy+IncTyLX7XYqwD/k/8L/VYk9+f4w/q7WP4+MnNjB2/JP5t9bk++h2puNznvIrwr5LQA/Au+E/z78TZSeK3269tIPzpDeDb3lyXuF8l3UvwV960oK8Dx+8i7ybIC+NuhuC7aoWICPkcNy+OrwX0ul30LP+7XRpV8/XAClTpM+lb/riL5DK6jH3v5rXPgOnm/BGuysObpO0u4b2l2e8YP+xsJ/MHkczP72Ve977dVR/zP1G9FPE+02Y68PqN+S3cyH/5PtCrA/fP8qX4C3w9dauWnSb+D/HuW/1d/Phv9e9J+t3j3af0/5TvBfz86+oLfb5V9PPlPUr6g/rNS/1pF3O/Zyafxk/Jd6x8ivLP9R/etP8prJXk9iBy9JV6LnqvBdr/wQ7ZdhT0t83156Evl0YGfRz2TlPoVvqHRferpSu7/Afz95HIj+leS1F/wrybM3P3Mef19auzfTb01wDf02Mn6uQe8L5PQ9/3GG9g/Un9aAj/I/z8j/23ixB7rvwuc8/N2FrxvQuxUfL5L/C/hZgN4+0lPRdy35H6P9vcH0z7L0dbr0+fBX0341fqG7/H3Y443ouaSkAB/RP/pL74uP29A/jB7moLOr/nuXervFjujhLHS8Ak8T/FRR/xnpu9E/Cezme33yKZ4v9NHOqfjrAt8I9PVR/in62ZU/HYGOpcqdiP9Z+tc2dlDBfKADfZ7pe1XzjPbS0+XHbm5DT7H99NGv31RvuXR/8ptBH1/qlx/A1zzzDPobpb1xJQX4CXnsknEr4w/+f5deIb2j9HD4/wPewp5WwPdv+K4j/83q36V+DfKbrfwk8vqVH7pdua+Cz3xjCvkvkr6UnteaL1Q3f9gZfyeS34XmC4vR20/6fPi67FGAS9jBx+T1PjrvNf4crP5MeloD/x/4O1f9DfSS+csq48sW/KyRPj/+Tf+sDu9x5Ddc+hzy7c9PdZK+CL6MPxl3lkpn/PmFXbxKXktDh/ZvYk8djEOvSUc/T8I7G19z4b8Jf/Eblyr/tnbP0l4N8qubdZV2u6l/lv5zJjhE/qNgG/ramz660lf0szf9VykpwEVge/VH0M+16HoeHyexzzv5y3bs8Gz9r4tyG4yXF6j/iXRN/P7GP9ytf+/Lfm9nL0vlL1L+WPrYl3xi96uK7P9DcCP5j0VPY/J/Qv3d2cP+0k3QWR3/95HPBfBNl876eIn56HPgl+Yf88m3E/nfQX814VnDPmfqj7WkX1euDfl+SJ7rwI/AM7U/k3200N5Q/eFy/FzOLnrBu6Px8lv5y+jjPfLuSr7LtZ9+crL+OYdczmV/N8PbX/sTlftauWvp5Sjy70mfWe+8Zb7wA7p/Aoehpwb76q389to7F/+N0dtN+SeVe4M8J2j/GXLYLH9X5V9X/wffrzGeZv2f+e/n/GMt8riW/P7Ed9aHV+kv3dG3Vb/IOFg8/h3PXu7H13HSu8jfwm+dlXHF9+wfLMLfZ9rpzA89AN9J2uutfmt83Q/erv6r/GrxfLEPut9hN2+DF5FfC/OGE+C5XD++hlyboGsgOprxj83VH6ncfO1NJd+r2Fd187332M8g/e808u4RurSzFb7a9POHdPbTjs96OvNZdM/UD5ahL/5ze/gHk8sQdvSp9m/jTx9Bf0X2fC79rJFfEz0dtfNh/Cv5Xckv1VBunfwb6LED/GeT45Pwd+C/zgLPBEejrwV65uP3K3g+J9/Xs29g3jgEHK/+ysxb6esO4/tb8ZPy9yPXDco9j4/3fR9A/jeR4yz5o+mtPr/2sHJ18Jf1ZdaVtaWzvmwG/yb15oOnqt9bvZvQewT6OsmPv9tVvfi3d+Tfxz46KDdNer789zLfUH+C9JvwzGcvk8m/Ov2tkh7Mf98I//2+/0U/r+l/a8jpdekFyl1Bbt+Sy5XSO8v/mP/4TvpV7byOvhPo80TwGHA5flbh51rpBfzTreoPh+8U8n1VudmZx6h/tvb/yz6vV/8b9tBZuYfYRfb5LuV/G/ADl0nfo52/yfdddL0DroG3Bv7/QmcL8n5QO52U68XeO4OT6Lc7eV5r/dBDup56p+pfK4xb15cU4N7yBxb5qyN934y/T/iHn8wTZknfSn7jsp+P3gbk9Iv0UPQMA68Dr2A/m/mzzHsyD8r85wn63sH3Rtr/O/Ml8quAr+wDrTV+HMp/dUHXYdLDM09gt3dqbzk9jEbfzOzXkMu97Huk+h3J9WywE5h58ybj9dnk3MP3KeqfIr+LdMbFmvR7NPraguvs/36PnlLGzV34ydHs8Dl6+cN4N5FfyDzpNflNlJ+D70vIrzN5TOdvs26fAd4q/2313gJ/14/OIv+HjfdHwnsteT6Iv230t5x9tcz6U/7+6G3FL03XTi3t38Pud5D+W35l6afw9zw5ty0pwA30uzt6O5Pjv3yfCN6O3gvg/ZHc+mf9S75TfW8gfYL+kfOEnC9sH72pP1+7X8e/y18fO9Z+J/jvRcdRWV/wN4ezm5zbPQZ/08yX4D9G/X7K3W/+cADYD/3XkUuJ7zV9ryM9UX47ensFfXvR00n4f5ndfo6+EexhIXmUti7JeinrqeyPLEX/pfBfSF6vkc/F5Jt1y3j97FDpB/jTrfD0BzM+TdN+afTdJr2U/U6WbkB+1aVH53ypAEp9Dz7Nv/RTvoN+eRH76wcOLppffh55Zh6A/5fgvQKcB67C1zjjakXyq4aPy9W/2/rkOvDf+D9Efm/1c667TrnMRyvknIReX+S/l6lfvN6tg/4W5LdY/z64pAC/op+u+H8h+7rauwjcDP9o/fs2cA45zQX3wu8keEpyfq79Tey1Fbr7onO9/Jy/Xlh0Dtst+5PGz73Y+XfmB7vA0y37X+q9Rl5HwL+avaxk1z9Lv4u/WeSX85870NE057Ha+4bdxC/MyHmC8aCdeft86bY5X9bf1pZCL/rqw1/JuLvCPsSF0seofxD+h5FzY+nXyOc55c/BfzXpF/W/K/D3ELpLlDtC/V/gTVzAc9odxn+9q157/JZhP4OUW4+f7cjtQd/rqn8H+1vALhZp/yz5k/m1vcBu7OVBdP+NvlfRu0D7Hel3mHI3wz8g+9/yN5rffMJOhmpnBvkX70+fr1zGj6Xmj8vAF8BHtZvxuSH7qE+OD2a/l71l33EbfzwSfe19j/9+Ch8d8Zv4kUeK7Ltc9vHiv9QvPv+5Wvm36PEc9rNZ+3tFrvrTKvyfLH9q9pvTr+V3037iLRKHcSp8icfoRC5vwL8Xh/2C+ofzo3fmHNJ4+onyZfF1B3yfa/9V6Rnq3Ya+W8xXY78D8dsCXV3ptaX0U/ANUf9Icl4mfXTO/cwDKvDP16BrE780J/s2YOPsMxl/vs9+R9qLH5Xuq73i8XZv88ah8hOvkfOVBeiZQ1530HPOr9YZD2fz3x9JX6XcDvzWUdrrIP1f+rmCPzlS/v7Sf8l/s0R5/XwSvHXR8yn+Z0ifgO8/1X8x62t6acc+mit/q/QgdjQw52AZJ8w/uoNdwfXpf+zhCPWmoPPqzPONCzXAC+DN+WU95X5G53UZd/Sv7vQyRnsz6PMZ/GzR/rH81u3kd4ryFyu/Qvpq+MZpP/PCNfC9QY930/+G9Hf5k9jPE9E/+fXUr96Xvkw7JdI/qv+C77HP4vVa1nHX4X8Qen6IHabfkNNuxoWq4K7gb9mPUT/7zs2lj9Nezi1zXpnzzOGZv9LnBPL7WvrixBNp7yB+92vp1fR8GvtcoJ1B5Dpb/Sn03gD+Vui+kXxX6i//Qd9m5bur3wE9W4wT5dSrDG5Q/mV6+wye3XLOCv9d5hWvg63I5zR2dTo4k57LofMpfvlx49aXvtfCz3X4viPrO/aY87jF5FOVn21rPtQPnWPQfXnOR+H9Xv7+8N0m/wzfr0P/r/S5KvNC/WUG+ZSBv1LmZ/xwV/nHoLue/GXaa6OdOey6P/z7o+Nhek48Yg3lRyl/mvLNSgpwJjpvBedoL/FPlxXFQSX+aZz+nvinxEMl/mmzfvML+Kb54nJ8Lcn+MzpLS69H5yj8jFI+40Mp/E2kj8SZVFE+8SaH029L8AjwQfRVZ78518i6NfE9s9D7TuLp+NFZ9LOVvaxHX86xMz9ZpJ3EIfRkx4PlV0ZPQ+P4YOVO0f41RfFh/eG/B51v4ree8iNKgej7mr3E75dk3pfzfeuWt8Eq2pktvxz+24Bz0bMDvhIvm/jZa7OvoJ0Z+udMcDN/+xl6EheXeLiqvh9QtH+XfbvH4Mn+XRnp3bV3CPrrSX/DX2QfYxF5Zx+ja+KB1cs67i7tXyr9HLgYPAb/XfBzTuYd7PE9/NTI/i85NUTXuUX+4WL43mAH8RdN1U8cbXH87AblH2VXL8HTBB1lyS3nt5vYwwL89eRvzgeXkuf78P9lvDqT/uspVxHezGcyvzmpaH5TRf9akjgK8AP4s77tq/47Wb9lfWNc2wA+jP8L5f9EriMTHyJdNvtD5DHJ92/VG6T9W33/iN1+rt6HyvU2Lvyhn5+oXBP6G6w/tFRvqHT6aeLOfyO/6uR2ifqL5N+r/LLQj76y7LYU/Avx/xX6VqBrJrwP5pwg8WSqxy/EX/SQfwX7GwNvNe2sz/6OcXU5OV7CzsvLr6ReGfp+nn6Pzf4+/WadeiQ+sz792vdTtbuMHn+Fb4N5xTztfCx9X/pZ+r9+XJG9Pp84Tnz3Axfo//uon3n33ejKejP+uwF7rg++Z/x+DX07GPdes7+ROOu35X9hPpM463nSa+VfQj45X52GjtfpP/FOW7J/b3x8V/4jWR8od1TGodxf4K8+jj7038fw14/8+4IXJp6H/CqQ70HSE3I+h/7s14xjT9nHGRV5mg/swT7LJb6Q/S71vZn6j5NHH+lX6WcE2K6kAGvgrzK5rULHDPW+wu9A8SVlwE/I6+usnxIXjd6cU+V8Kvvl2T/Pfnri8zY4j1kPrtRfsz/Ym/+7jVx2ynisvWf5hbHyd5fuJT/ry6Nyziud9eV8fn8/8OPEk8DXG397oedCeF6If+GvMr8vl/s39FsRP4lbL45nXwzf4/C9rb3V0h3lf0lf27Keg3+XzCPJ9znlD8z+MXl1Ie9yyr+j/ePVWwJeq3z2p3I+mfPInE9uQedw/Iwh18rwjND+/vpPHXLZT/obdOaeygb9bt+MJ+S9E394kna+036p2C16s/+Y/cjsP+YezSTwS+U/U/5yeAeBA8HG6DmY/R0GLiSXc7UzCznDwMP51zb0M4NczifHAez86JxnsNe/yGcbf7Gr9v9NHr9qN/E/ZbX/Nv9wNHsehe9n2E8L7eR8apnxMudTj2j/Sn7tR7A1+X6g/Bf0kfV2xp/fyGVf4+g+4IfK3Qd/A/Kem3tqoZe/HA3uq70vtb8InpfQezw85dGTuPPEmyc+dKfwz1+9At9hOfdM/L/6eybuJPsyiUdgr4eodyp9jIH/rsxv6HkrmDjLxNWcXFKAdclrKb4S97Rj7vMkXjT7AMbLivS+k/ST+B1PvkuNjxtyvpm4Cu1k/7+1dg5Sv1n0A74O3pD9f/acuIHnpL+Ep/j+zBbtrJG+0bixALwcTDzeBHTuQr7f6KdPSi8vKcA36OdedCS+vZt+0xC+xei5Cf1j9Y9u5HK79IHsIXZ3rHnZDPpuk3NZ86GF7HYC+/wRnU3g+1p+U+lryfcQ9XMetgS/2+f+C/1/T391pcuQ45nSH6rfS/3tcr6cdQr5xF9kfE9cTDP1E7ee+df1/NGH7HisesflfMZ8I/3uzsRPon9/6b+1Xwu/z7KPsvR9A7gR7EO+Od+5hN3lnCfnO7kflftQuR81GH2/Gx9Wo+N+/WMpubzLHu7A9+FgK/r5CR2P5byAHczN/dbcx4VvpPRM/NVnD6eCV8BzZe7X4WOE9OXarwZ//O3L7O4U64UO8idl/av9e+A7Gr616J2l3Cz6qqt+felz2eX+0hco/zR+FmZ/DP5H2MeT5uMrM16Yp/ci/3Po+/vcpyiKB15g3DtAO6Xp4+XcD8P3wTnvzzlG9k/1q1bwF5/PrmEXtaXb4mu0+i8lXlP9D8jt+MSHaH8K/eX+cO4jLCkpwE3oPRt9a7V3ifQj+Low97vjv7N/pVwp9JVLvKd551zlpuY8NPND/I7XL3Iu0Qr+s/D1G3wPav+B7E8X8TOfv+wd/5/7auA5+HgJnuwfP239lv6Q/eOT0dNNP/w480L0XWW8GKbeq8bHp7O/wH57spvpib9jbz/AeyM7bGp+9pb8X/jvF/iPnYvO11607llOrieg9xb0bSGf3xM3k3UvO6mN3v6ZV5ND/OcZ2l+Iv5/h2Zr7k+w/9veXdOxvHvlWjH2XFOAx5NiXPHKvNfuZ2b/cwF/8nfNx+zy/oWcwunMP5a6i+89ZF2Q9kPXCOezjzv3/L3395N+Hv81pD5xKn+3RN5nc22V/nXx/TDwKfT0GdkFn19RnZx/7Pi77yDkP8H2KcuPlT5P/o/6zBR//tX9wGP7q5dyHPHIf4UP5DymfeJML2Ol27ONleplN/j+wwxE5n4q/RtesxPnCV4X/2QmsBs897OMV9n4uO+4O7gF/NfgST3UZ/TysvYxPDcDR5DyCfX2Y+xFF8UWJb//M/CDxYX+z/5yvHQnvNHwen/cp0Pe8/nNp4vP15y7k9zt6D0DPuZk/4n+G8oca1w+ix2Pgb559rdzHLynAPdXP+upv/GWdlfXVEez1Gv1sMDge3vH4KkPOWWf2094b2mvm+0Dlc759LP+3xfxqAvoTP9ocX5flfM/8KPfPcv5xEX5zDpLzj9w/rA7/P/cP1Z+f/YXEn9BPA/AN9pxzyZxXtkbfd+RwILxfZ34kfzH7qMEuzss8LOcriWsDz8/5iPz4xRtzz1T+ouxn0n/2+z5H5wXa/1Q6+4UDsh8v/yd63qadHZV/Fv7sD/+Bj+wTZ3/4OvaZ+5vlwdzffJbcc/57L3qvIa+H9efR+Oqjv4xUv0PWd+DaxLHTb+JCc76W+/NnoG8se95NOznvT3zhQeTeGDwQzP3ODfRWKXE10omnbmp8uYsfXb3L/6WzhL2Ow/d4sEbi7Nhd5i2Jt1iG/qPhX6X8S+gblfvP/Edb9O0mvaPyiTdrZFxN/1yh/sjwJ/8R5XMO+id5Nj3w//L1s/52S9Yp8GUfYPfcn4J/J3aWedJN6R9F5105B/uYfjrTW86/N8rvlftG9i8Wo+9Q8APwEfRuxF/OrW6Fv3ZJAXZij4eQ363Zb2b335Jb4mwHwH997hUl/t94mf2EL+jrJnb9QPgkv9yf/9r3xI/kPv2h7OmrAijFPEoNYteZt3TUv89iB//cn0Xv9+T4KLonKp99v8Xk0pL+pyiXOMnExWf/fZj6B7D7T63DGxpPZpNfR3TmXKeD9FTyHI3/utEn/Dejpy5/u9A8I/PG6eznc+03JvdmObcAa5P7iexmT3J4Rjt7ajfveeSdj33wexL80zPfl26U+bn19sCsRxIXLD2u6H56zaL76aXRsx04smg9XV5/OcA8Me8lbUn8Wt4H8v16cthd/rYEeLOL0uBn9PdZ5uXZH2e3UzN+0mdTcuyA7j3wd6B2n0j8UM45sr5mT6PRfxW57ZX9d/QuYz/N2fux2llRUoBD9d/f8o5JzrfJ/5fEs6NneNbn+Nsz71awgwHar0U+v6uX+MrEW97Dv9SX3g8fz0b+5LUR/7m3tDHvuaA/8eL9tbNz3s/IvCD2YT5UDX8/oPs8/O2ufiP1R9Fbxt9bs5+jvbn0l3e3ns5+ee7ZwvdN9gcTZwl/Q/z3w9d49G2Qf6fyN0Q+xvvtE/9s/OtUtM81Ju+Asd+y6hev3x/PO1vyq2YenfhYdjPEPsvB/MvK+Fkw92R2pvfckzlMftXcN6LPebGXrOfIOe9HJR57jfXtEezqZ/VHo+9i8vgGX/PI8wT6/Ur7O6Jvqv5wQvbv2Md09WaA1dQ7Rf9qD44yQDyR/h/7J8ct+Fme+LPEl8U+8DUz8fHav4LdX5t7lvQxAX/fgmXge5f8Ml+ua3wcBv4T72e8/Q38Ne9k5NyfPrfL/iH6Eh/fUXt1fL8679Ch7xX4huZdLvBHcunNH7bkXzZqN/d5W7KLA+F7hr5Xaf/lrCdjF8q3Z185n34ErIafnFefyZ73014Ndtwv6zvp3AvLPbGX2M+/fH9Q/cb4PUG5zKcSZ9S2aL41nj7et2/ZTnooOW5Gb+K7E9d9jfbOT/wlfZ8D704532Wv/2ufaQ78A81zH4A/8atD+Ysb2eez0keTT2P+rX3OMRJPRg8DEt+HvrzLlnjFvKeTdctX2n+T/mqWFGBD31fm/bHEN7On3Mtqxp6OxP8n0hvAufpJ59yfRu/eRecGj+d9JuVb5V5t7htnfW1e1Zkf7AIuS5wEfz0abIzOW9CXuIGPEpeU+/3wfyT9sfzEEZTIz7ub3+Lv4pICTHzPc+j9d+RCjg/Q5xnKZ5+ieH+idu51Jq5H/fTHifJ3M0/POxN5/2xX9vKw/j1IuUu0dxB7yP3I3HPI/YbcX7oKnFV0v/EG/fMb49iqIv+TexV5jyHx333Ip/h8OOfCl2m/Pbra5/yhKH4p+wUdwod07qfUy34Ae31ZudK5f6R8G/q5ULnEb3fEV+5fnC29MPfD9J+KWU/q5zXVz7sSiXupov3PlG/GXw1Cx2TjWPe8nyKddWrx+rQ4vmKV9hNnsYfxp3vO6/mbxH9PsB/yaFGc9Nqi+LHoIXFkkX81/i3354rjC/OeyHnkkfnXvLx/kPvPuS+u/TI5v5I/gj0Uv69Qif/Ie4p3oHdA4l3JLfcmjyenU+GpwC90y71N7ZXT/h/4uw98Wv8pyb0vergk+xHwxn5qs5dt9NCIf8p7bZlfVdF+5lebyeOivC8FNmJH2R/Pu6yj1RtrnXhQ0Xw88YuZr/+U+zHGw5HgRcaR3vjZkd99Mff4yGFL7meTZ9556qG9vO+0c+JX0XO69IP4Lcde2yQepKQAO8tvxL8eAMZOG2b8Mi/KPtqo7GPDdyK63lFvjPnh0KyPrLcSH7Uo60n03gxfrn1/BNYip9n6zyB2V/z+XfYzcj8m+x25H3NQ/HveZVEu7/v9r32pvJd3k/abpv+on/ivXubT94PXw5vzx19LCjDnSTlfyjs+PfO+Wu5v0Nen6DiMPr9Xbxo95Xwt9xbzjtoidOU9tZP0h9zTfIDdJL7l58SFqv+LdA/41+A/9+yL79f/QH9D2PdX/MUhia/HV95jGqF+/NWhxrfEObSSTpxDl6L5d8a/7dSP/f6lnZvB2O9N9Jp70ycnvgX9B5rfZJ+xsXT2G1sn3o/+TieXruSY+0F5b6x8znPR14M+FxZAqalgzpO2p5+qiZ+EZ9+i+8m60T/3lHuR16nGp9zfeB+ek9D/Jv87qaQAV0m3VO71+Bvplvzg63n/IO+70MNH2sl690by/tD3MkX+Y2LGL7C1/nMzeADGumddQ/55z+UM42ni306XzvsIR2lvCnofQsdq+SPJp3fOL+kx8b051807xsX3VfrqD9PQf4t0g5xv8EuJzzku8dw5H878lh8vfp/uef1uIDgp74HivzS/sh1YCqyd95PzfoZ09pGyf3QOPrZKdwdfQf/hxs3z1f+ePPI+7inoSrxB7q81kf+W/jcRXIHf7/CZ8+wKef8i8XC5X6Rew7x7Z776Re6pwfdX7iVlHYv+1zIO5V4D+lbI38M4MjPzMjDr86Xs9yLprLdyf7A8/OXJdaX1682JM+IXS/GDidtM/FDiXYvj8/K+9WX4PS7jWkkB9tTexeyhUd73UW4s+tbT/1z5ZxnP3st+G/93VNZn6LmfvHZkry3BUup9wz7X8cf7gnXBA/BfC/87kdPd0t8lfoI8837hGvRMU3+HnGNkPk3f/dU/kj9IXEBxvMAw66/HfF8IrmZ/Dej3sJwP51yZ/PLe65Py8+5rafQNR//76Dk28lZ+Q+7jq5f3ZOvT/3H0sbN6xe8w5v2QvBuSd0Raom8Kv7GncrehJ+9v/ZT3U+j3Z+lF6M37u3l39yxwH+38TD6ZB1UGe6B/MP8wDH+3J34R/vt9P1a/zLyhEvo2639fKN8996PZ9/vxf/Se8/zU36L9SeT9h3TiU3PufTj5DtFf/jkHJ49r5O+d+K7cj855I/o2st8J5P8Hf1gr+yhg9tlz/pX9sTrpd0X7q7vjK/usPdH/Inmeo17eG3gocaW5J6R8G+UT3zWMfB/STzKO35vzb/PxGuRyPDupk/hadvCH8lO0vxb+Puwj9z6K74PkvkfugezGD2YfZyD6xmT/MH4O/sSZZr0zOX449oPut3KPGZ2tcw6Ev+ns6D5wF/pdzZ5zn2Y6fh+V/wL8S8EHE68rP+8Z9C561yD3re43Xzoj8czklfet8/8D69A9mR3n/wdamj98rP6R0ouz3jXPW08+iSeuQH5ZV+VdpNyLyPtIZ8LXJOtX49f58J9Ib5Nzb1n/fAXdk/HdhN9+E8y9uIvJf0D8e9H51Tj2MBj9LRMvjr7zpHuAPcE5uT+p/24qukc0PPvB5Jz+kv6U/YzEO+ceVfH9qfjnKf9jHjUNnxcp3x/clvHCfsBP/FLeBXuDfjeS6yr5mU9crVzetyq+RxR93lBSgC/rt2WL4rc7qz80+3+hX/2+BVDqBHocK3164vPor7p2sk7dlPM542mLnFeh/1P8dWJPbeDpq/3f6beK8aoquBGsl/eQiuJJEl8yjHyq2bfPfZ2Pc46JvltyjwPd/8o9Hf0jcSvBv3/Gqezvq591XdZ5z8DfTX7mJRXIYW948t72e+Sb/ZnId4n+tI5dZ5+wrfwG7ONi/bC+dN4fq+p7/jdjGzry/xn3wpfxN+Nx1bzfwn8sB5cl/ghfmRcuzDsD0iU5v5RuDk7Pfhx69jS+VQf3AL/M/ql5zVLj6sG+P6V+2/CX/QVy2qTcav6rvHG4t/FkUOKP8+4tPed+TN7XHAXfDPheYXdNtV+JPPJuUB/0NCfHxFe3l76FP2jBfh4y3qS/zpd+UfsXsN/zwV7gDXkvg7/cmv0b9OX89wPjyzz6XUj/JfSb+KPcF8p9osSf9ch+MLgWH3+irza53UT/dRLPqP1d+ftdwBrofCzvdCiX+0O5T5T5WfzTwXm3Ad/v5bwd/RPw86Xv2f94IfcylDuVHcyFv4d5z7lg3g/O+wnV+Jvcj887dbkfX528zlR/sfQeyvein4r0Pjn2nvvnBVDqT9/z7uAN8N+q/9+a/YT8Dxz+OuXeEzl1lk58Whf8nwN2BW/U73M/P/paqX7u5+d940H0Xj/vhMX/JW4N7GMczP5IdfYXOyy2vyPwt4zdtkPfLPKvlPiCxDMXxY9ukr4v8QCJU038Nb+wST/OuX3uY+XdnT/A7hln0Xeh8ok7SDxC3tF+jb3fRc9n6wdXJx4r65zEE9Dvyey0Ue6n5Zww+z6Z3xW915L3XHrCV5a8m+lX29PTf/K+Kr4m4atK0XpsBH/4gHQfdByLjtzLL/7/xfHyE2+T+JvW9JX/x3tcuh/99wWfItff0P82PGewo9XouBxd2RfPPnn2x/O+SNOs5/TPvC9SGd6dwYPo6SH07mV8qAVeyU4SfzI2+zH0/VHmr9nf1H7e6/8R3WOl8x5B9p+HsJ93pLM/tbVofyrxlYdEH+ZHt6Fjo/w6/NnLmTfiY4n87dG7kJ0eRR+5Zz286D5QPfs4N+d9kNxvw+8I6bxP8x/zlryDOzHv/slvzV8NordLwF/Tb9XL/27d4fsM9afju15JAZ5Ifs1yH4r9jKOH2vhdjY4lWQ9n/cSeWuPnPf2pUtbf8CyV/xZ73UR+a6WPzTyMv2qde6dg5qf35J0c8n3W9ynpn+ifAC4FB+f9O/LuDvYkz9Po5znzgcVg7j/kncY1+vtqMOuIjnn/D315330k/mtl/4Y95Fz0QPAG9X6S/l//w5K4uMTDtUBf35y/6pd5J/Ng8t0h58/orc1PlSHfR+JPc3/MOqL4/13K0u/pYM6Dc/6b/53MvPvzAvjn/tg+yrcjn8QjJA6hPPm0xncbcO/sQ/I3+R+V/B9R37z/wT7/Lb8r/P/J+yn4vT373trblPdHtNcx96rYzUzyu1H5bzMfI//K6M++RC+wYwm64amr/R7o2ynnEVnf6p+twPvA/F/eaHobmX0m8n4V/qe0NxL9z0pXgr9c9omyP5r3nfK+l3TObYvPcw9F/2Hhg70MSfylej1yXq+dCvST+VNHeFubL/2Z++7k8XreDUTvafLX03fuER/n+x3o72m+cga8p+V8HL6huSeR+3HwtIFnNL8UPzpKemf4ny4pwCm5fwXOkV8rcsD3k4nT0T+K/1+nPXr3YT959zrr0OL3r7fxV93gbcgec5+7+P35/F/aVvXzv2B536cFeprLX5v7bfBlvdI956DZd0b/VvjHqT/XfGEeONz8I/exY29D4Ml4nPXZIebLeUez+P8Q7jPfy//wtNKPcn5/Dn2963tP7cxD//Dct869Q+3XU+6nvHuMzuL3U5qZX1ain1LgdPRn/XUbfOP0z/z/St4lvld+D+3tnfgo+L5AV/5/NO8H5Lwp508/KFdV+63YR1l+qSE/UVl7h2rvZ/4p7xutJq99yDfnQlf4vh36t+m/28H3t3Qj8mmHv8Q9lDb+DlB/dEkBjgFXKJ/7f79qP+f8exhnEn8+2bhcM3Hc5HNQ7gHq79eA2d/Ofvci/GffMPuI2T9cpD/vh65/safEJx5LbieB2Y95lj4OI/cB5J7/e0qc0+lF8UG/5J21xMtIV8h6hxxeIt9TpXeUf7fyL8vf3ng9TbqJcuXRPwA/x5Sgryi+Zgf0NvS9J/+S/0vJvDb3uXLPK/PbOfrHm1nPw9Ob/TZE3wKw+H3fCnmPKvHr4pT7qj+A/i8B12d8yvsjRfFGxefViTdK/NHY7HuiN/fEc+8k91By/yT/d5/z1q7am4j/V9nDK2AF/K/T3nn0v8E4lvt2uV+3Xn/6S719+b/j0HML/d2c/6mOXyS/vNeVd7zyblf2F/4f8XwLF3icdd151M9F/z/wKxEKRQqF+0KFJKJFWlWKUEQpSlIiSqGFSoss7eWWulOWNmWNCi1aVBJSSZsWIq2kfV98z/l9Hs/fOffnnPv653XmMzOvfV4z75nXzHVzzZL/93creAtYv2EBXl2lAK8DK+9YgDftW4CXNCjAy3cvwHfqF2AN9W3qFuD28H1TpwB7tyjAIdqv1n8jfIdrX7dWAd4MT9s9CnA/9b9q/+eeBdhV/cfN4YH/CHAz+hv0f3m7AnwRPKdiAZ7YqABn7VSAFZsW4MC9C/A4/J+Pv0HglnoFuFj9gF0LcGiTAjwL3W3x9yB9P4z/Ec0KsIn6Tvi5yu/TtNtH/Y+VC/AV5W574WO/AjxY+0PJ81LjApxAjkn0taPyo+rnKc8jTzvlucov4ac1ufdSvxP9XkTeT9nnff6wB3rH469ChQJ8An8H4f8E+C8tLcAyfn9+nwKsqf6knQuwM9gFvAa+v+l3Ff95EzyDHe4vW4Czy2mn/DU6J2l3Ang+PV+B/9fQWwEuB7fQ40c7kK9qAQ4sX4AT8Pcxv7wN/vX0dD/5hhh3g8Gh4B788XD2r0I/p6PTH54n2Otd4+tJdvoS/nPRvxa//ZRbkv9YeL9U/we+y7BvC3jOpJfdtL+F/5+7PbzgNfRRFr7y5H5Yebpx2I9+x/KXpepvA+vBf7f+6/D7APp7q+9K7iPp47oCKKmJ3zX8szW8tZUPJtd5+DkVnQb0ez35H+Y3V7FHV/Qb698OX58ofwJPO/K1r1SAx4Fv8J+V+P8T/V76fah8VOJv7QK8aJcCvFT5IPVN+Meb8F6FnxbqbxYfDvH7NO1/J8926M1S/gcfO+nfqwBKFoHjwYfp53D6WKn93DIF2Ip85bYpwA3gtaUF2A+d/YzfWtsW4Bx8lqfPU2sU4EX464JeN/TOS9zg93XE04HavyZeHYdec/GhDvtcQD/9yXMtfAvxf7P4l/g4NfpRfyz+O/yrADuBe8E3zPj8Fb8fotdW/4nKp+O3tFoBNlP/bmkBvqx/Rfxdyr+Zs6SNcg3xpwv5PtW+OfzjjJc16t9H/0LyvWWcVMD/DOP5RHjW0+8b7DNC/4/hH4aPffC/2fhpz8/agS9rdxH7jGWXO+CtFjz4bQL/Onx1U18qXs3xexv8HKx9Y/WbtX9Au2fxtwb9u7UfQc4y6u8j7zh2f4U+ptPfAO2b0dtv6M8mxwHw3qo8UP1J+tc2P+4OLtWuPn5bkH8Evk8FE18aVIfXvDGGQ2wk91rx4vYCKOkJjiotwPfgH0K+C8wPb8N/JXyv0sMysBt/6cxu9elhifXQ+fT3FjoN4d2U8ad9ZfAbctUhR31xIOu1S4yLEdanu+B3sfG10Dh8D/5d1XcTN7dTXwJ+B/8p5q2u6L/LXmvBiugfif4ydq6s/xz+M828Mkt5K7km4/cA5Y/J14R+NtDX3Iwv5RvoP/E5cTlxupf6puR9h98crvxNxqf5dTh/uBmed8nRij6W69cP/dfJd6Tfm5GrJTgdvmvMOx/h/yrlQ/G5sLQAu4mjp4hjb/HvQebFkWB1fJVq1wG/y/lbO3Qaqe/CrzqDr6CzHp6e5HlmtwI8W/866C+gn4pZD6Iznf6+Jefp2jXx+wT2e8O8dhdYCRyL/k/mr17o7sJfB7DfAeaLA9Dtbbw+zR/PoM+m9DCJXsfjo5Lxfwf/bMpfLiDfBuuZf9RPJc9z+p8tHl2b+EcPlel3OP/fBp4TtXtUfXnx4Ujy7qD/L/BfTd4zSwvwUHp8CJ456F+k31P0sKv+S9C9EmxufmtAjgHG70DwNP0WkL+puPoSvbyh3RT6nWbdUYZ+jlbeAP8K8q8EL2OHC+F/A56TyPNL1qf0cwv/26u0AG9W/gb+O/jHWP55PXgf/IuNi/f5QW32Pj7zA37yvTYT3pn8czL9luCzNf565vtDOeP9RfPBGPxXV99PeQE5v9C/gfh6on4dwazPfzAuj+IfDfW/X/1d+J3O7jejd7n65fzlPvyXg+cw/O4uftUG64C/wtNf/6uzbkIn6/se8G0FH9H+M/Wrjccr2Gk0uBCeYeLjE/q/7PdR7NPBvPCzuPQ9/TTVrjp/3hncBVyr/peU2fEWcv8Mvkyuscrf8K+38v1c9F37tHK+bytr/y+/H0n+3uqvUZ7DTvfwg1WZf6yH1hhnzZQX4+c2+MeBt4Pr4fuLvQbx+z+VH8fPjcbr59o/kX0cfJzI/zrTVyfln8n7IrxHwjtBPLqCvc5R7mBeq2j8t8f/o8ZdWXhvMp/HT79g3zbo/OX3F/G7nP+/6vcppQXYHX+T0JnIXhvoez393my9cBO4Wjy4hrzj6Kce/A3oZ0vWN+wyA98nK2f91Y1/jcDPE/zssXw/00979qiHvxLjuIffs67NOjfr2yvE1ZbZZzCu9sTfk8bPcxlH4Fn6r4O3jXG3Ub8fwZHskvnxOuVX0dmBXVuzz2v85lHy3eP3A9jpPPJ+nPUlf54t7r6oXEf9nqUFeDs8L8AzT/1d5q1V5o+7lZdnvqSXXvR5H3t8hc+B+F9gnfAk2Ej7xfTzlXIjdH9RPgy9YexwN/8Yj2499Vvtg76u3VL9W6E3Dh8HKl+R7z3xcYZxkH3FE/L9QO6Zfr+BHhuxzwjx4JrEB/yvYp9NxtEX2h9iHPSHfwd6fBOcxj/HaP8Y/VxD3p2zLta/m/FU17hIPK6L/sfGTRN8nMf+JfoPRO918g0B31N/Fn3NFH9G0eNU/JaQ+3N+2wid5uAp5otB5HiY3pfj73q/byTv8dmHRv8Y+qxP74+jewb/WoyfF8FK9HSI+kXs+7XfHzUOK2T9SP638dsTvXvp4VB+dSB8ZfnX/pmP9D9f+8uM661gn8x7+h+h3Sf5fqaPJeD3+PxU++7kOhk8JfsN8H/Bnu3E+aH6f6D/peSqbT1yXL73lffL95Bxfzz5b6DnPvofje/fyPtp1rn4uBy93n7/nH7+0b613wejX0L/ZcX/MeT4gB/vqn8P/X6H/xzrkEqJ0+qb8puh6E0nX3lyreC/FcnTC9+N2PMccaSh8h3wbtT/M/Be/rwWvXnav+87Yl6++/BXA573yXOZckX2n8c/euOnivg2FP+96KMqu5yu3FT/nsZnV3I9WFqAd/Kn3vi9Bp1W+Gql/zJy/Sj+LTV/XUy+87IfpXw9vKfir4Q9ttLvDsr3sHOfzNP4O0v5R3xkv3w++bOfnv3zZeQZQP4vlAfT5xf0Pk2c7mEc3I5Oi+zX4GsMfWzO/obfu5PvS/IeBP8K+PfG3+PatcT/MvPmSHrZFexEvzvSy3n4zvr+dX5SSXz5W5z+B6zJT15SPlU53z+H4+dV4+YK9SvoaTL9PUAfD6HzFf/6jD2+Vr8VnUbl/pt+GfKfZZ7pDv6BziP0OQs8Sbz9TX0X+vyBXg4Qx+Pfm/M9UbT+KUe/t+OzDj9pDt9g5cHsW4temiiXhb8qfee7dYH4Pwu9c9mvkf5b2Xdkvg/wd5l2xfu5exk32c+5G3+L8L8fvf8G/goOR/8k8bcLuDlxMud37FIv5zvw7sA/2/r9Hfpon3GHnyvx9w++f7I+vF/7+7Qfpv0B9N8g+NnrMO1fQ2+i+uv4z2rrmlrgWPWd+dM+6D4B/zByfEAfk8XRv9E7KH4MX/ati/ezBxi/h8F7nvJQ9QsLoORp9itltz3RP42+8119R2kB9lXfiz+fDq7T7h/1jxgPf7F7eeOyGn1O5G9vs+8EcIX2V4i/2Tc7CP3e+pdjv03aX8I/F6vfmn39zJOxU8YvfDuA24L/0MOV1otjwX/Du0P2P9jlbXg/VW6uPvHyfXJ/i58y8FxjXv0ZPxdrv3PWf5nX4L/OeF+v/XXsPhLMPnA97S8kTwP0v4Z/Veyr3+ngfHBL5nf+vxzesuDzxl9V9R2ybjM/raG/jc7jF/LTa/nvzeifZb5+KvML/dWF/9/o5fxuFf5rkmc2vx3Lb47hJ9PV7ybejdN/D/yeAf8w66vb8h1A35ey3+DkO8Sv8ZPzs6rw719UP0//04z/pcbx2KzT0f9f68pd6C/zaebXp7TL/Hql/YyBOecpgJJ99J9rfLyCTvbFj0B/A30Ow39j9Lfwz1P55yR0h7DPPfqvJP+H+jW13lqA7+/QXaD9U/Q/kX42iXv96a2N8gnZn/T7DeRfgo/n4LvJ7/GLzvo9Dv7JP9bBM0p5Bf3U5pdDlH/Vrjw9TUCvrXLx+eFw42UP/rMn2C/rbu1z7vmb35cp16GnfcgxgBwvwt+ev1QQR/N9nO/mzMtZn72WfRP6eYP+m4Mrs57Fx3LrnVfEtxrZJ875J/99jv+uQT/+/4zx09S8sy+Y/a4zydOLf4zG9zPoLGSPHvR7ZfKXlN80P1Yg53B2eo99H7T+GiqODFN+R/u65r3aYB1wCfl3wV8n5Sbwjsv5C/lbkHer9snPOj/ranrpCU7UfnzGD/yXKP+HfU9h30OUk2f3jvKzxvcuYA/6q46/o/nfqeRuq/w+PH3poW2RP5cpwh+8S8v8N/5Rfh9MnlrkH6V8L396IfutOQeAvxJ9dOK/E+hzjXazsr8EDhJPNuF7H3atie+l7FMT/v70X4s/Lco+NvvMVm5J/1eJ52fyoz/wP9r88VZRPkVD/j3LOJkBroH3Z3z1gv9E/DSjv2fp63H1BymfSX91kyeZ8wn0ryXfYeJhTfQOV75H/3roNQAX4+9teL42/3a1zj8J7KN/ztEvSf6h8tPoP0j++8GO7PlqzhmyvwPfz+yT7/kK7FoR7APOY69S/TL/34Xvisnf8F2yFvwAPDX7Uea3/Yzr9ex4Kfvfi9+Msx+VX1LfurQAt8P3A/D1x/87GV/4eld5u+Sn6F8PrA/+K/5RACV9+bHps6SR/qPFvzHgqKL56grzesvU+z35ufHX8vyrWvKu6K+y+Tj5ow8r35r8B/0P5ZdPwTuZ/17uvLuO8nTlNvAfjG7WY4fANw6eZ8WTReLM38p1M1/Btz24BazFT5I3uS9+V8K/Mfub9Pog+UqMg9r0+73vixL8/a58tP71jJe9xM98R6xVv5o+x+tf0fj5jT4G43NH5Yf0b4l+RePmEfw3Nc47qp9FnlP4Y0P4LqDfO9Ufi/4d5O2gf3n4u+DzdfLsi598l/Si7/X4y/g7I/k/6DwC/yh23U58PB+ecsqN8FuRPueQbxa8N+Fvi/bZRz2L/rLOTV7ALfgtMf7qkP9N8SX7htkPXqH9IuuSVfA8ofwB+jca92sNvJfNQ0P4S2X6a+D3rvBOJd/d9LGfeXsNuCjn6uT4D/0m36Gc/mdr3wfMPkH2Oe8HD9d+OHlPJP935Pks34/KR5LvXfrKOdMj9P2n+uL9oN35yUH0+K54ugJcDk5Rn3P7G5WLz++vN14XglXwNz/5fck/pO+34ZmRfF56n2PcjlL+DZ2T9U/ew//Pg0D/KnTngqeDbXN/Qf/X0b0E3g+zvkX3g+ST8YeR5N6NfrN/cSk7ZJ94vvXKlqwfjN/4w/X87gL4blFeqVyVvp8l3+PGx2b9E89jh5/yPUG/n2TfBRxRoj17LzL/32QdfTY6K8n/oXX/OX7fjZ9u0P899DvQX3n0H9O/XPIv+e1qeumo/i/x/iHx/xv9n6THfYzPo5X7q38z5z/iy1z62Gj+epX8O5n3J/t9feyFjxWlBfiL/tWtn9brn/2YD4r2t8eRt1LK5NwffwPjh/RXBf81tJuofxt2u4Y//oXfW8j3IPrZF/8487vyKnrNuVrO2XK+NtR4+wJfQ5S/1P8eehlGj5eD3TL/Jz+bH2e+y/z2oXgyEl97gIPQn8e+ye9/kp33zPlgzs1LC7C59Ux37Tso3599POMh57uZf15TX65oPupDvnPAx8jxN/3uT84LwSn5fsJ/GXjOBbdj7zXoV+Yv3cDkgbXN/Qv22Z68d9LfDrmnwS/qZz+SnUYo/ybezBD3ZoJXZX8QnvL4eQ69v+A9tQBKxoFzwHPosRp7TCPfAuWT4U8+b/J8u7BX8n2nkedt9LMvf6D4m/PxbZPvpN3b6geRr6FxXhffP7HPVvRr0u8W5XX0/JP132J+/Tx4jf4PleLDvnY9v9+Z8518V+X+CX5fzD0d4+oz9V3s3/QkT/Krk1ed+Jp4W4P/5lxxb7/nnshdyQ8zPzTTfhT93pm8EbAXv2qE/+RFJk/yCrBc8iiK7jvlHtTd8GT+y7yXvPnMf2Pw+xD7f4y/pfA/Sl9t2PVM46cL/j7gL81z/ofe5pxPofue8TaA3s/Q/1Z0Tqb/o7T/J/E930055wWTv90t373sWIF/PIOPbuLCjuLGPeLdIvUPkvvt7G/m3BF/vxiPNeh9du4r4a8df/meftorZ/wOTr4EfYwFn9f/UfJuwPeA3CMAh7JPGfr9jRw532hhXD3JLpdrtxj+U/hfPf3eVB6E7ij9V0d/yhckn4v93zIecs8w688m9DLSd0QneqiNjwnsk3sa45VzT+Mm9kheYnG+4rE5h2Tv44ruv5Wwz0noXWz91zf5dckr5F/JE00eZ/ZLsn+SPOLkDy8Rl3rz83r86Sv09jVevhR/vgJnJ1/LfF8heXTka4y/j8yf2f+eKT7/qn6p/YYv6fd++2eD4GtPjob8eSC/yProaP59PL5zj+lF/Wvgb3f9N5FrOP1uJE917T5Tvkz7BeDJyQctuge5hN6Wgs/R64v0M5Y+qvDP6eLk9jlvMp5OJOcV8G9UTp7uGbnPx49uw88J+D0R7ASu4Qdr4cs+RvYvkj8/P/nvxsV2YB/4p/C303Lenn0x8nU2fy1kxyfBg+kn52qX4X8F+qXo9y8twNybbUuPFXI+RD/Lk8+K3hb1n+m/EawDTss9QvTyHb5SvMn3d/ziB3wmXyp+ch//mmddOUX5cPTfENceMb46kSvzQUv6GJV7V/qV1a689XVzceZ2+h5mnPY3/ocqn0f/d2Y9xr8WK5+bPGjj61Xzyffon8bed5NzNfqng2+BxyafLfcr/Z7zjReyv6Ldecrt6TPnTT8aV40Tb3NvPPcr1c837qfzv5/0z7y4mv9VV+6q/iZx/RewET1+SQ+byP1V8rrx8UPO0dmvuvYj+duv5JlsPrlAHB8IZv/wM+Wca9fNPfKc/xv3vZQvRv/f9JD8mMf9vgbe5Ec+xq9Gg/PAxLcj8Dka/E/WO8l/Fn9vEnePAq9mx+Hi5f3o1+Lnp7DP0/S9kr7vzX3P3M9RbgjfJeRM/vd35o/cI8j9gdwPyn5N9nF+9/sr6Nfif3/xv5w/JX5W4c/96KVvzuno46B89+P3Wfq5Xnm+9ftmeJPPnn3i/fhd8j4WKzfOfWH9Ep+G5PyMvl7iHzuS+xX9Z5NzW3q/UP8K/Pdi+KflPIafFn+fD8+9Tf1fNz+MI1+5jA/9zs/8T7/PmP/30P9t5Tvw/13yMunxSfZqof31yfcB59L/DO2+zH0DcW0W2B2cpt+Oyc+n52fIv4/yKclHJMd32X8vOm/K+dNO+EtewvXiSnF+Qj3xNfshq/NOB/3+Sr97ofsWvC21n6D+e/AL+v8A/uQX9QXfVn8X/VcjfxX22px1nPIJxs18caS+8boh/iJuHsGP6+Y+OPz/JC+JvvZix9/x941xVfz+x7Xwbwt/7j/kPkTuPwwQv8vq943x9Sn8yXvaFv3kPXVS/oS8v9PLafo9A+b+1g3av6td7m99SH/rwbW5B6J/O/o6DrytAEqOVT6Cf39PrqeLzyP4S3NxZj+wAXtmvT2ktACTR5b8sZP9fpV1WQvjaxn/mZT3R9BLnkPe1xiQ+1XsO1E5cbOv7+EG4GO+l79j51JyTss9Uvpej94k9liB7q/Kud+Y++WnWvfUA5MnMku8ynsMzdDdO/bjP7mX+UnOf9OeXm7I+bL6Ffy3Z2kBPoGPvvR3Afk/zvot83nR/FrMf/hOfkzyuy7Kd1fuY+O3+Pz/nuSZKD9I/uL9lR7J/2Wvpfi7HN/Jf24Qv4S3u36fg8lHyzo664fkpz3HroeZXxYp35tzt/gB/u4yfk5Qzrr0uey7Zz8Lfzep3xdsAlY3Hn/PuzHJRzFeLlWf7/5PwGP5Q/YFsu/8IH4yv12R89/k6xl3L9Jj7mm1yb04cWgwPbbN/Vz8LUB3GXpHse8W+tgu9yHVP6ZcrM/DivJ/P7E+yrxaPN9ehq9l+l2X9XveUcq9z9ICvI3/5ftlnPjwDTzJ48h5+Nl+z/7BPTn3M3468sdO4GDz8076Z//9QHqtxA7Jbz0n61P1L+X8D/6j/J7zokPU361+b3L35+df0+fd5KtEf/34zQ3sfRD+ysKXc9da8OQ8Nv6/Dfqx0xnG/yX0uXPy/qxvz839HH7ZAd13yNMM/neyb5N82eTnKf9O32fDf2f2y43PmqUF+JA4V0P5U/wW309tSO7cUy3NfQn19+Ez+VTnNPlvvj+Eb5X6OcrJ530u+cG5/5/1N3qT0Mv6K/dAP8JX7ofOVD8g+8m5T6Z8Pfwn4/cwv1czDmvk/QbxsTWYfdKR5HnA98omv4/nD2Pw8zz+Xtd+cvZXc0+S/MMSn9k9/nSS9gvUPwNfJ/YdblxfDh6a9bf6nHe1MS7/UL4v+6jo14b/wKyjc+++6D2wtcZB3q8btf1/9xutfFjeX0r+OdiYvpqjl/mwfe4D0l/mx3X2W65SvkX9HfBXx39364sScCF7X62+NPnU4HD6vcv4zL5E9it+5/+L9Z+oX1f9jiD/v8Tz3Kccl/Ug/pLv/Yl+n+393/VfGt9P0V9V88gU+umU7170ivOEToAv32tjcp8N/o2+r3OP6V76z3nhQvPPU+BMfF5Gf6Pzrgy/6Sbe51x8f/G6JdgTvwdlvY6/B8Bt8F+Zfg/lt834x75g7lMNZc9SfvCs+DoBnx3g60Bvi+jlW/x/a71ZIfceyXFd1nuZL/CzznxQgz0vZJ/cj/xJ+xbqP7Cun0GfS5Ofgf7QvA9iHOU9jbwbkPyZx8HkzySf5o6sk4ruVeb9gY785if6foOe817NxeJbzt8+Rb8NedbSzz30fK9yZ/juZP/tSwuwP/k3wL83/vZK3i76Pypv1m80+puU835hT/NrvvOKv++Sb7cG3hfQn5b8S+vmrKOL88OrmF9zjlya9TP6WS8kn38M+u30z/3NvF/TSfu8X1OVfXvy49nkzP2Jrvhaz68ehif3p7rj/4HcN8p5j/oL1e+c/Az2OI7//ZV1eeYX83juB14unk22jmub77/k6xblp7QuylN5jF1+wlcN68dW+tdM/C66r/Jj9kfFhVvpbZJxcGfy+f2efI17yXEy/de2D1ODfrrlPZe8X4Ov2/XLd+84+lslXuS+9tXi1wz4H2eX3M/Kfa2cXx9i/LQGGxg/eV8j+3PfiAPZp0t8PkBcOoNfjOBfud8+u7QAR6K7jfIm8jSiv4Y5xwOzH/M9vr8DK2ecgFX4Zzt6Lgtv9r8PwdcF9Jh17474e5n+hub9FfobQz+51/8duxff7/8274GBW8Dr8h4ivt5Et2fsoX/eT6ukfd5Ry/tpV1m3rQU/wucDuT9s3hjEXrkHm/uvye+uz+9b8a/kezcuLcDnjLOO9PQSPuYV3UvLe395n++H7IvTzzb86EL++6n5eYl5uYP9qb7Z/4TvBXofnXe/6Gew9VjO08eofzLfF/Q9PN+hOdeH/yP98t7RC/icrXyG+Xhbfjw392Tpb3OR/b6n76H6HwNfNfVvZh+Uvt5ht+Svvxs7qj+KvteJo3+VFuAC9rko+4rwJz/irdxvMg4Gwv8T/PPVJ/9qEP3+ws7JN867Ue+wd/H7Ua3opwc+js89Dnr6iH+8B+6QdRz95T2UvI/Sr+h9lNHG9RhwLHg1PNkvyL3LjkX503lvsxn4l9/z/mYV46tq9onR75j4qtyL3DmH3xO9hvk+Z5+J5pvE+yn8cxI4A0z+/1z9J+W+JLgk+avm1Yf532nKB6D/iLhZP/n1yvex+yh6bYzvJey9MHkw7Be/PpPd49+Ls5/j94/w+0vOz0oLcHv6fZV9hqrvCn99cbJC0fom+y79wPOK9mGeoo/o+yX0uyj3gDfrqC1F66jkT2bf8xByZv9qJr9tn7wQest93am51wxOAfPdfxx6uTd2Se5RFr3/E3+Ov/fK+2r465H3eYzPi3K/1fy1E/ghfrPO6mo9ku/M24q+L3uZv54tgJLzwUPVV4Uv93tz3zf3e6fQd95NyTsqeT/l/OTt0H/x+9sDsh9sXDwlzrTMvUrrobwfM1k578r8Bn/eJdlED3mfJPtjXekxeam701/HzGfmlbHZT1Gf/e3sazdVzv72InxVZ5fbsm+Y+1PG1/t5P4n/9k5+HP1Oxe/3+Mx7WD3YK3k3xfk4S3P/gN7Hg3n/qAx+V7JH3vFeid4w/C2B7y7j/zLy/SiejGD/7D99k/Upv5qUe1f0n/Ok8Rmv7HqH8sicP+R7Kffz8NGM/v7BT979+zz58fhP3tdd5OsN3+TcR8BP1uud+csLuR+svh+/Ohy+vJ+0iX3Lafc+mPfk/5dcnfHXmh4m5T6M8tX0W/z+9UrrrLyvWjXrbXqopnwb/ZwuLuW+Rhd6zP22g8WXg8BWYMvkS/h+qpB1JLhM/+L71g/mnSP85R3a3Hspfv/of83bf2h/sPa34/8H4yH7lf2VPyTvfux3KLq5r5T7S8+zf+4vLWOfHuDe4GZ8rDB+ZsE/FlxNvsHm1YO1/5Y/nEW+vuxye/LjyZvzv7yHlvfRTrB/kffRXhR3kn94Fj3lfejkgzfNfhr5sr+c9yduoa/kX+f9iSP56xHgJv71Fjnznn7e1889/ryv/5e4tsH43lk553W3JO/ZvJe85Fo5P8bvdfhJXN9HfQ/rgQ259wDmPn7ymZLnlLymR/E3O/c1i+4Bf49eH/HpFXJ+TP68b7mZf61NfpPyA/RR/G5bJfPFTPXJu90VrJk8XPXPk68hvvoW3V/I/49IHmT+j0T+f8QU+pgKHuj33K/NecWM3B+kh5xf3AVfGe2SD3E4+sX5Dy/Qz6d5f088yHdPv9IC7JN3WMxrK/3+rfbb4OPNvD+V9ZLfc/8y519nG5c5B8v5V6vkt2b/Dr68/3KLdfXV5L9S/WnwtEMv8ezhvFcCf2/+u4lfH539V/rL+rB19gPAgfrvhv5QcAiYcXVY8jjx0QS+8eS5AP2WYAuwC/nKGHfbgn/nnYK8v8KuXyUvIHm3+Mv5Sc5NTsD/b1nPG1e9wM+1y/7AY/on/ibuTgSL76fnnDP3fivS60zx4UZy5J5/9kUyHtskj458eTftXf5S/H7a/3o3LPmb9dFPXl7y9PL++c4Z9/DnnmqDxC/yjCgtwCvBS/D7LrvGbx+gr3vRz/385eCyfI/rN0X86qw8OfMB/vL/F3IPOv+HIfmLs8xPK/WfDv8B6qeJfw+DeZ9iT/gvyfsg+p2T/Qz4cn+zLj5yfzP3OSeLd8/C2509biR/8rf68s+s35K/VQ7d7cDcF4498l5L3m+Zk3fAki+C/4X4/Vr/Z9lnQAGU9NM/7023SP5Yzkfybgf75/7gc/w17/7mHeC91N9I/2X0m8MPz6X/r8TTzLtfg9PwcTh/eVacawxP8h1/gD/54JUyn6nP/cHlYO4P5j7hy+Lx9fQ5SHmr8r659wM2LXpfP+9StgdPsv75F/km8Yfkyd7HX5IfPpUdsq8zkxzZ32nLXg/h90n2ODb34tDNvnL2mbO/fJTxnfdEz9f/T/SL72efkHOx5J9ZTx6l/Bq8lfC3hL5y/jxBebvkW5DnCfzm/5nl/Dd5A7l3N4Oejk6+Fn2tMe7/UV8u95nxk/sgyVfL+96X4etS+PbJPg958n7zCzmXVs69vZyfXAQOQD/nKRvQ+1P7Jfg8Cv2nSwvwKfA0/jdBv2H0NZScF4PD6Le5ftm/zH7m59nfNy/djp+GOW+h3476d6XfZvhLvvZ48j6WvHrjqRL8v4jvo6zD5uO7ivi4nn886/cO4ln+v0Typ1cpH5b71vk+KICSh8CRYCt0s3/xZ9bnYPYz7uX/eTc391rqs29Z8THnnM8U/T+OV+0XdCR/z/il+nn0dTC7tMj+Hfv2tN5doP405apF67ms77LemwT/z8p5r+c1+xhHJH/W+H0pchvn2afeI/da6Ot5ergff235zTaZx/OeCPzr+OP3Rf8H4M3kH9PvYnH5xLzPwD/PzPob3iF5r0P/H/hj8pCL84+Tt/gSfyvOX1wL3xHa/1BagA8mv4x/9IZ/iv7z1P/OnyfS16/KO6M3qWh/KP9/r6r+uUd5bfJt9LuY/v5D78nHe5V8pfTzH+eP1egh764cBf5Kr6+z8wow81zeV8n/WRuvfCZ+8t5O8nrzrsh08EP2ybvwxe/F/+X33cmf/y+V/zf1jPjUCv7E3Tn0U6Poe2L75EXgrxZ8yWtPnnvy278Qf3bg19uD2bdIPmjmy8yjye/Je1Wx57bZL8NHP/5VmZy3wtdO+2/JOSTv5fDjf4ce+wzXbpLz7uR/5J54/DP3yeOfc3Pum/Fg/ZfzuwnWTXeCd4BT8feB+bFRaQHWznudOa9Rv2fsr7ycPbJvtS17X65fvvdy33UqeHzRfdg/4E0ezqnkyz7/avrIvmz2abM/G7+ZmzyZ/+E/7+f7iT/MNn4600cHsLX4Ux6es8SH3mAfcCr77OJ7aFfwQP3WsUf+31Le3cz/Y6qGfua1vLeQeS3x9QX98n9Kcg6e/1eyQFxKXuXz6Ob9gq/y/82s24+FrxU6Od+4Ur+G5Mr5RvIr8/8Tt887Puof0T/vb3QAT8v+D/oXggfk/AwsEd/y3VL8PTPDumAWmPVP1kPJvzku+fZ+vzv7Q7m/gd9q6L4rPub/l+b/lp5WWoDJ/7kQf/n/i4PAnA/n/3+sw1/+D0jyPtfn/8+Y5/rjrx//bMgu0c/O6M9J/n3OT0Iv97H0v0d97n0Vv99TnB+b/9uyEcx3bfJDkhfSHf6cp+ScJecqfeFfJv7the4P9JP87Lx/2hDM+6dt+Vn2vxM/PlKf9wdmm48GgrOtX0ar32A8bldagCfjt2Xed6DXpXnnFDyafvMeVvmi7+DsQzTSP+8S7JR9Dfj3oLfbwdvA5Ht3p//kt7UAk99W1ny5LVgJf/m/Y3kHJf9vN/ldr9BfI/PJNvA9nvNE+q9s/ZI8iLbKeR9tDn+dBZ4qnp8Pf3P8j0i+Lrhb8kP1m09fVfA5NfdPyNOMX+Qdvry/V/z/a/c0jvJ/bK9jjwrmubfQr8cOE8mb90sz3hJPj9Nvgzj5GT7zvkDei8v7cfX9Hv0sMj+XwU/mweynb0g+EP0mDiX+7Mc/k4c7U/xKHm7ee8n7LwvovTP9/WZ8fElf4/G/e/LP+MmrOXfMOijvC7BP/t9f5qPkF2wwv75G7rnkjf2/xv+1YP4PVt6/GM2fyonfe9P32egXfz80Zod8R5xh3jwTzP5i3sfO+Mh4yPjI+03Ditbzn9PDfdnvKLpflXGa/eODjP/1OS9Ovr32x+A//8ekFf3NV1+T/FvR+UI5eT3Jb35F3NoXTL7zLO1n5zuUv2f/5Cj8HQMeDeb/Du9vPZW875bKyf/+VPyaAm4p1Z8+v+Efyf9sxt+S/zmL/ivgd5X1X75P27FHvosfybtz9Jv8h+q+i5IHkfyHuuyX9chC5fnon6h9ZXZ7iX3yPmzuuz+VPDF2bK3/Mfz1UPpMHsELyn/4buqc84K8v5L3VcST5NkmDif+LvV77rvkfHVf9B/Nd2PO1fGb88Q98j6fuHCecu4bfGF9kPkn++uZh/oYV8nP/THnwvT/f/fXDrd4nHXdedTXwxs38BQpKpK060ZaJES2RKEQKmsolXZZipRElCJERZQsZSuECEmyb5WEhCxpkRKRJVsRnnOe7+v9O+f5nvPc/1xnvjNz7XPNfGaumXtG9VL/929xjQJs36gA++1TgLvWL8CGyg9VLcAzmhTgCXsV4JC9C3AtPI8eUIDf1SnA+uBxDQvwaf3vr12AJQ0KcItyowNB9G9Ie/3bqb9Vv9u0+xDdm9S/UVKAL+CrHX4X7luAg8m1rHEBViLHM/ovqluAE/x+oX7H7VeAl6N/OL0NrFeAdeB9qQBKbdVuqPJn6u/drQDX1yrAP8ixD/zN8bty9wJcBb4D39PoPY+v+uCOTQuw4Z4FeAs8R7HfEO1671GAF8M3m51+Qv+9SuiVLcAf9XsD/graVwJ3Avdmp1XxC/3K0/Ovyu3J25HdPihTgAvovxr5nuIXT8N7KTzTty/A/3YswDPpdaP6Ofy7i/6zlevvX4APkL8nvIfQwyHwjNyF/BULsAN5xuLvgl0LsJ1+W8sXYBn+2oXfnax+Hjtsq/5S8jdH72b4S+Ev/h7/3159/L8P/Efwo7fJuQbelfq/Qd/d9X9T+bqSAlyl3xnwxD9v0v4b7VfzhzL4Wxc/5y8n0dNP/ONndplL/nfKFeCB8D2o/Qn4PFZ5P3gXVC7AW6oU4MPgjfylKfsvYafTtV+D3oICKHU32B88j38cov8J7PgBvY2n7x4VCvAJ+HZEZz35vsDnIvKs5a8/6j8Nvnb0c0+1Amyrf2P6GAF/250LsDL7/hZ/078legeS/xn8Pyz+/Ib+YfhpqvwZP/kUvJW+58LfC94Rfr828ZBfnKndHuR6k/3/1f5E/TegV07/O9jjRfx/QM7J8V/joaJ+DxqfvdA5yXh6iX12A3ur34k/PEQP08AN9PE3/ffQfp1yFfo/kFzHRF7yLKPfQ/jjQWAz8GpynF5SgIfCuwj/V9JPxt/t8Gf8ZTz2Ee+GkmMn5Qboz61ZgP/Avze81ejvMnprAv/t5J5L3vv40xi/v6fdOvQbwt8Y3Bdcpv0v8B+oXB78NHjEi+bmma+VN7F3BfIegZ/b6OMq9XXJtZfyz+x9GvvMM17OE6eXmf+m0H+J/pfC3wf+vvR0LL5O5WfHKHchx93ononezfA9qVyGP9WEv7TyKfqdwG510btM/5nsd5/6Hci1nv98rf9V5LgP/pKsC9i3KX/qatyuK8Ef+80nR0P2GM1em/BTwfrlV/jPzvoHf6+wz/foDsN/K/h35z81wevI/wK6q/U/QPsF5NmVfBdp322HAtwFXKX/aPG03k4FONR80Rc/fcXHM8DTwczT91lv/FhSgJlHMn9Mpb8/lNuAvfHbY5sCrETuk/z+Hv3NI19dv39OzzOUd8bPZHAs+XZA51X+OwN8DDwU/2u0/wpcsl0BDmWv6tZr1ar+v3S/B/8Tn/trvx9+38f/KP4wil5uRLcmOfqZ334g/wfsMYj9pqE7m99UzbqGf56G3qXaPwfvcegvE082+P0q7VvwvzP8fqrfP9dvkfrZfj+Nv9SkvxfxsYg8P2k/grxrjd8R7DAWfEX99ugOhv/mrL/QuUP9X+pXk+NAdDehV8N4vsA4HwBP5r8+9Hq48kD4z6a/i8W1u9DpDP9L9HAu/+4CroSnuf6djJt70N8dHEgvz5K3Hr7e9ftN8Mzz+3noDecPVeD/FV8jyP8OOy8l/83i0i3gw+xzQtYp/PpneMYnLoIb+dUPYOJ34nkz680VxkXWY/MTZ303DSuAUo+h+xf7X218XEF//en/MvifUt4p6036elr5dfWrlE9jr0b00Mh8lLjfR3kC/ZWQ5yD9Zyp3Q38N+aqw4yB4bte/Ofle8/thygcb/5kHO+Nzt3xn6H+e+a49vg5WXoCfB+mzp/LW+E++v9jvcn7+g+/Aatr/W1KAj5Lra3pO/K3Ob2bgvwO/G8s+w+D9FP8LzZNn6F9Pv9v0OyHxR//HyDMp63P9jtX+Q/wtAVey36vaD4d/Nvq3JE7qf6f6F5QnmZ9O4r9Lxf1PwI/BM/HZXPy8Bf2x4Lvo/Gj+qZE4bv10F/6eh+9pcC74Nvu8YH4ri/+Tjb/r1M83bz8F39f8rQ7/uZZ9buMfnYzjx8i3g/JP8F5FD4nP9en/J3p6XPkX9Ufz6534zX7izOnqt8H3IHCA8deBHW+3fumFj3e3LcAK8BzKf5fwm6XgIvja0+fIkgLcRA+byXEsf/1PfDqL3Y7MPhJ+iueF6L8z+Y5WX4ddf9WuLH/ZFrwT3sngv8bbuezUBZyHz52N97fJX1m5LDql+M2b9D9PXCoN/0W+v7r4vTW829Lfe/TXS30zeAbpfxy+d7KOa618JTzj8bGcP92k/wD4FmbeAPtrP5Kez2GvB+n/Zb+vNL5fYO/q+u1pHriHfmsYzzXBI7QbiP938TNE+/HKJeT/kL6XgovoK/uT0XNL8Hv6epl/XmP8dgcPFy/bkD/ftePQPQEf+b69swBKvQZffXo9lfztjbusq0ez9w/4H2Z8/EH/22v/svrPyHMufmaTY7LyC+JB1m9Zz2X9NjvzEfyNzdP/aN/GerEluX7Qv5L6t32vX2D8D2a/n/Gx0fj8U/+30FtFP1/rV2KeWKdcOn5OL2O0f9J46oP/teJaKXp6hh/egH7xvsZQ9LeD/0t+Px7d1ep3VH8hev+WLsA2/LkTfLfyl6ngOPB1/LWFtxw9Hore++iUN380wPcD9LUde9wm/tcTd8uBx+lfk9zHwbNH1gvGx4viShV2ba/+X/73g/iY/bRdjbMG4l3Wz21TRvcV+pmIv0ngHWAD/Of7fz+/N6eX0eg/yu5NjM+sC0boX1m5R7732PUD+v8E3+38fonxuAv5N5QU4EZy3KHfZVmnkjffm9kvTvxppV8b8mffdWd4bjZfH0wfXY2H05Tv4j9/GKe/gbdmPwrdZtqvQe8r+jlcOecXE7P+QT/7KU2yT4G/7K+8Tb87oNMRf0eY3/bnN+eXkJMfloM/8Xc79YnDib/T+Nc92Qdnt37sXFU8W8Y+Tfjv4erz/ZV9mo/wPwv+k9A9GWwHTlC/UHzbOXYRn/cm3xZ+d7dxNQ69v+mzs35j8fOB8fQa/KXzPa7f6/hcp/5heuqr3AQ/d9F/O/2O168BO0xUfp//LAYPY58/6Wsb8n6P35H0fErip/ngGHjHsV8l7Vuz71/i5GawFv18zR5bY0dxIvFyE31Oxtfh9PWm/s/zvxfBB8jxBX1+ha/vjJ8bjc9G9NpR/Xrlh/l3x+yv4v9O7a7H3/05v8HPYviPFX/74a+J9dR0/YdkP5R838O/S/DTxx3suSO/mZXzjHzfwd+bfb+E73T6Ko//I/V/QL8H2Ost+J7Q/i9ytKXH+eS71PrzBeuy58HD+c8A88rOWRcZ793Vr8TfbeiNBX/G3yP00w9fjyr/SR8N2bMjvZ4FblH/ifLR9DWQHDfz/w7s9SB+ZuY7QnksecuaF69Cry/8PUoKsHT23fn1cvjPMV5X+f1R/c7Az0/i1RB8bAfPIu0f49dTwEfAWvT5sfj1Cf201+8XevwUvJ4+y5HvLv6R9cf22k1l78fV98j3CT7/BX8n30zy7e73EuPnev6R+XwP7aeXFOBVyr20/xDfUzOP4Sfr9XbRp/YT8/3OH/I9m+/cVln/4us0/r+jdm3o4y34huO3OT6moX+Feas8WBXe79nvdOPnEXraF/4p8N9Nv/2z/6D/LeoTH25BdxQ/OEV95L8CP8/DV599+ovnXf3+D77eoZ9Z+Nrq9y7aLVT/ofqnxZmc94+kj+/Z73X0q+D3Wfq8QzxaWII/+r5Jv3fhu7bo3GYE/ruIBx2z/wL/dbGH9chhYG12yPlVI+PyHHq4CPyNnldb768BvwJ76T9H+3vhTR7JTPrpTb4zwezHHZLvBfJdTu5+yh9q95DvspE5f1PO99ms+JU4UwWsSj+bs15IXBLPRun/K/2dzR7z2flH/A/EV1VwT/PoSO32tK7dlv0fFV9m6T+SnubF/4yXZ/jn8fg/Wr/VymvxM4Ld3iH/k9p11b9zCf7BZ9n9RPRf4/+PojsJnpfo53D+O5bdVpk/ryHfLP1Kscd/8J2Nflnz0zf0eLH6rO8eMr6z35/vniP0vw69VfqNVn5X+8PE567wHKr8edZZRft5dynPUG5AH/dkPUa/ZXN+If71J3/2x97G33z13Z3rlrBzuXwf86+l8F4LliPPk/g5K/s75Mp56SP4uxjdvvhorf5i43MlPD+zQ132+9764SHtj9W/Ivufbz48BT/3FeVnzTGe56lfaL/maXSK9z0WKee8tAt5m2Q/yfiaQs72+Mt+bEPlwfq3Zu8a6s+h707KP2X9pfwNfVQhb/bnn1T/Kn9tqT75YEeqj56j333pdaV1yTh8rc7+Hvu20O5IcHr2e/hl5vkB4MH09xz6v+CzMv8/Bp0y9g+2zb4I/dRjn8nwvUC/s/DdDX83wrsJP1tKCnCI/sn/uBzdrFeS/zFCvJ3h9+qJT/RUTX0vsA67NtU/cWWQ9vHD+N8m4+UXcAv/yX7Z4/S0O/5G5zte+XZ2eV6cbYJuN/BX/rMW3mOKzssnwzcHvj3xdwr9fMJ+dYzvv+j5Uvhz3v+weeVWdIbR/3T+kf2qN9DbPfk/We+Lk3Ph60HujfrPx1/x9+Mk8119frc3eK7fF/jeG0gPE0sK8D/4ZySfKeuQ4MdvLfzmXLq0fkPVL6Sf2vywcvbV1C8xH/3EThuTHwZP9gmTD3l8zv3pJ/P35oxz7TJ/P1gApT4Hcz64L/s+RL6pfv8d3ePY5371y/1+LziHv75G/2+Ar4M14D8X/y+nH/vfT1/HGrf9ybGJ/Kfipwa//YvdloPHwrdV+XR63NHvV5C/jfF7svFzEph8qPL4a4VeXXp8XHkQvxtoHbET/V+U8xHxNHkTHcn3hfoq+LmTvgbA30f7+4ybWWDya3vyj3e034jf1vAthr8v+XfGRyVwF+2n4ud99KeQay90Xo99/f5f8hnzPWx8ZN46wPrtZvrdXbxdYZzmvGGM+mvpfzjYMPu24ltP8i3w+9U5l0v+oPl0FfiU+bY0PpdaF++BzzfJWRr9q/PdzG7DlO/VbhD5z6PX4u+E/9++8CT4W/PXWvz3OOUW2l+Nz6NznhI9ZvyKOwPQrY2ft9l3pe+D7KMW75+O8t290bx/nfLF6O3Mf09NHhO+7qHnC+hjV+O2Clgr86XxkvzrfKeNUX+Y+NZf+Tfzx4PkG8avB5bSH0z8uRb97O+WxVf2d39n38foqZ7xujV56znHTj6a9k+if4PvjtHg9mmvfhP/24/+N6B/l/FXid4eMV+cA94IjtbuKfZ6DP7G+P+WPp/H93fKD2n/JfrjitaFyZ+4DJ3pYBlwA/lznrcCnpzrJX8i30PHZ3/W+Pma/rfwr0rkXozPrK/O12+e8501fn8f/h/Mx+vJ/St8b5L/xvg7eifS85Hqn8n84/dtweXG39fkHQh2Yd8+5E/8yPfCAX6/Ff4j+WN99j8x9zf4ywz4kte1W0kB9iDnY+btivDP8z2Q/II+WRckfyr5g+i3FC+HoXOKcTpGfc7/bqD/nP/9le9odP+C/wDyHpp8TP60DVgGvEC/WvSb+Jr94Tn4/9z465VzbOWN9DOfvMmTvSV5Geo/Js/cjEflPXO+Au98sCb9L1Y/RHkUvC/gcxL9b5/9DvKeBs8i9H/hl/m+zPdmvi8XZX+cHTuxw3L15XOup98odM6jn/ri7n7iQE/2OUT9JeJi4v1O7H0h+fqjN8P8dxa7XgmuNX8nL228dcbZOb8R79fQ71narzE+PjMuKoNP8act2n/MX3IfI/c0zqDfpepzPyP3Mk5X/yX+pyq30P4z8tUg/1r+sQ6cA9/79Pqs8fe09m+wawf2/IE8VfV7IvmM5rPx/KJ59k/pfzh+ss88N/N38quzPwxmnv03/mP9Movef1bO/aFR+d5Lvr3+F+m/UfzbJufa8OR88aoSv/OLc9ilE30m/zP7JskDTX5RFeMx9y+S/7cy+1T0k7yn6vzsBu1L89u2yo3w9wD++mT/L3nBytXJ14K9GtD79uw7WP3ByavS/0PtWpMv+cDjwI/oL98HE5O3Bd9Pmd/1Hyp+3aHdYeCD6GV9PUs56+ustxtYl97rO6OR8mPkX5b9mdzvIc8JGb/oD826G53b2Gdb9DYn/wLsmfyjfP/4/aycZ8Of/JHkjVRUTv5I9/in+p+yT08/v5UU4CbwV7Cl+pPoPd+/s8SJfP/2sx7YG39fKM9AvxR/WwwO0u80+uqlfBC/mmA83Oz32fle1/5lcjc1fj+l3yvo9zz6OlX7y6wn3kueBD7rke8I89kO+h9VUoArci9J3B8tjlU2Tt5ln8v8nridOJ74XUncOEe78+n/efw/gX6+Iz9Tzv2DSuxXN+sNdnxO+TpxMeu3tvjK+f2R9Hp7zs34cW/87Z3vC+Xb4WmvnPn+CjD5O1kPJA+2F7lyH+IT5d+SL4Tf6vrnfLQfPi/Ifr76sxP/4HuJfd5Qn/y/X3M/CT/jtBtFv4eJf4u1e9X4yHnGNfz7arBsvuvzfZn7nObFVfTwN/p/0293cW+D8s3s+Sd+DoJ3KT6H6D8V/kb0+Aj/yTnsGPP3aHAF/lcUff9m3Zrv3qxfe2mfPIH/rEeSn16Rf+4GPgK2yPmsfi3hHZz9LvZsSh8Hg8XnIAtzL60oH+dD+G7Xfop1Yua73lk/kG9fcpxIb7kf1IldDjZvPQz/SeQbqf809Bqxx49F+SHvgU20qw3/PuJZ8igHKief8g70pxvfE5Vrov8Nv1tOnjnwP8s+t4lzY3O+rv1z6Ndi94H0+Z7yUPivsz7dxjgbqbxd4rv10+9g8ni6q381959yf4m9ZmadIa510u9T/Ce/Ofe3kr//RfIQ1Fdjlxbo7wWuQ38zejlvuD55tjnfMG/UBbsZP7Oyv0wfk8Dk0ySPZjJ9LOQH/8FbQv/nms87g0PI/Rn+O+t3XVH+5+PqZ9DPCHT2Sp6r9jkfvx3dZ/B3hP4PlBTgOeS6X/lV5XLaN8n9QeVHyZ9xenXuLdJnv5yz4K9B7g8aH9lfKb7Pk3s+W7OPYf7NudqH1gH5Xj5ePMg47Vd0f2O37O8lL8x8nP2FnIscRj9btZur/F/O+7T7J997yivIk/t2ube7H/seJa7k3uWRuc8O/wZxpT26Z4sDHbK/WlKAVxvXLY3zr9jvXPqYDT4H7kOfQ3xXNjMPvcVPP8r9fnhXgBv8/i5+LwFHgvewV77fbzLf5Dz2cnbK/m3WT81zn6loPfVI3psA4897Jm9DeXG+D8SZ3EOZmXmJfG+Qvw56d9Dr/co5/z6N/tr4Pefpn+TecfIF+VN5ev/SeqcpPMOy/tGvk/Yzc55StB7JemX/zD/0kXVn1qFZf67Vfih839H/5uSp0NPJ6AxGJ+9fjPH7bjlvgyf7t0Oz35l7NOrLJH+UXjvQ61fKf9Db53k/IecIYPI968Ob76+j6PUssA1/mcDvq8N3HD5a4v8SfA7KuCP/3vR/BXpH0M9e6h83XqfAM53e12ufvLrcf8p9qNx/yv5f1ofbmT8eNr7Ls1sr9v+DXH8mzud8O/me+J1Ijk38+xdwc/K5tX+WXpInmDzt5GefYT3QVPtR5pFj8DfI+P9U3Dkw7zSoL+f33AtoqZx7A13oM/m9n4C7ky/7f8n3z/7fUvXH4ft48FHzaPLlfsj5F39awn9q0Xc5/nFS7nsqn88/c99lWs4t8x5C7mfT9wnxQ3Kej78LtW+SvEH9kr9+Mv6as0NN8Trjd73+jfnLqORHqh9IP3Ots5egm/OvA/n7ldn/od8dyTdAeRo7fJz1Dz634Y/x01OVB4WOcZNxfSd8Gd+v239cmPNvei5D/tElBXix+Pcp/Lmfmv2OxvmeZYeJ8P9CX/Pwl3G9W9F6Jvdb9ii63zJBPM26L+vAYfB/y75Twcrq855OOfG0jN9zb24AuI4/bM2+t/E6BP3kC+Z7I/faH6Wfs423j/CXe1C5/3S5/auX+P1g9p4NX3F+47nwDKPPnvgfZt3VQznrxEP0X65f8im241+/85vJ2ief/Svwft/jv4Nn4zfruXLJD/L9UUe5Fv4b8psjwS/4U83k17DnEPiW4Pch9ttofb4tf3qPf5VSX0+/CvivyA+XkG8Kvb6Hr9/h70r/uTe9B7/OfersT48Rv3/PvVHl5O89bty3Ybcv+PNi/L5pfOXefBX0Lyb/ZniX4uNb9Ftlf015SN53yD0H9G+gn/hJS/GkTd6foY+H1PfEzyHq98u9IeuJCeLQ+7GLddVg8PK8c5D8Vfacxr5zlXdXv4F+ktezr/GQ+2+TjN+J4B/ozqSf5G8kb+Me9cnfKEeu5Dc/Z368O/kXuc+VvMbkT6vvLH7n/aHP2O8f9nsl+4C5D4veBvzfmv0c8l4Af/LLc691C3mK77c+SG89tV9Pf735d/J/W4HvlKCDv0PZY3b2GZS3Td4gu94DFn+fjuLPw8H+mUeT/y1uXspPrlbO+yVTxIPkVUzK+0bovCtu3M0O/czzpdHvxh+7gvcWQKke6Hyu3/b0twmf0/D3Sc5/tTuY/cbT77fKud/9nfK7uf+TdxmsK/IdfWLe4cn+WPbh6b0S+q/i52XwNTDxvSf/yns0x+QeiPoGxtsJ8E7JPWj0u/p9/5z78q9Lk7dKv2/C39j4upJ+K4qXV7HHPvzkZPj7+N4dL36dbP5oCv8POf/IOSV9dWD/SQXwv3uu76OT+yBbxd3x+lWjn8zn2b/KvtWP4nX2r76hn/V5h45+muHnK3hzH/9ndp1Av6fTx11ZF5OzunY7Zv7Le0HWedXU72v+75/9Z+0+Uu6qnHdIHoQv+xRz6P8NcDZ4oP5viXsV6Xkhu6xSX0f7ttYd2a/N/uxy/K1n1+Qf7qy+Y97fod9Nxt+z6E0oOu/IuXo39rmaPyTvrmLOMdl/ZtG7fXnHL+/3nVNSgGvwU5x//hL+2rHLHPEj70j21T/vYhS/l/EA/hrA00v5hZwD0Esz8Sv3sXL/qrl4OSDt8Tkv71Nl/UrvV+b9kOTh8ZfLwSHg/YlH4tp59PIz/ufRz+PaNcfPVvTu5AfXsu8u9LYz/Nk/KEtvyfuZIR70xf9//L+CcbWfeFlBf2orNVq71coN6aE9/q8oKcB2ytXQW4S/3fhn9vkb8Jd/2fN7cfA78HVytzb/bRLvz81+A/x57yf5+cnXT37+1+JB3j34GB/dyD9feXrOxbXP+zB9Ms6zf4feG/x7Vfalkt8pXjbM/gm+D2O3E83Tc9jvzZICnFZ0PzbvezUTv/aH/4K8e5N9AuuFa5LvqPw++f/LflrOldk/59v7sE8ncAL/SVwfYH3WHb4OeT+D/hbA9xX/eSB5XNofZN68nh1Lc6g1+DmD3MXvDC3EX/b7psCXfcCcn/6JXm18v6/fG2lfdG+pH7q5v7QZ/rv93kP8y3tIHYzLI8FORefF02If5ezPZf92NP4a46tdzs+z/4G/n8AfwbxHOof/7Eu+s3MPkD+MZre8r/SFOPYj+eM39/Pji4r851Pj6RfzZwX2yDl93jsdrXwUOQ7Sv7bx2whMfJqKfs/sO/g9+VC5X1BbXNkd7CBe7Zn938xH4DPgCHK9ZD38Iv/aB/68L9AN/eTVxe93yPs0yU+ix3K5p5Xvn+RVgXfjczx8eX819/7z/uox8F9NL5fhK3F8rfpX/P5F7ITf5Me3po8WuSdm/DSLfbXPu2Cd2fEG+r1I+570mXcqsz7Oflf2v+5SnzyL4+E/Xv+15qfc1018zznuEvpMfF9p3M0HPwdfR3+VeJ/3V3PO9Qr+817z0/w07znn/ebGmS/N22XYL/tKyYdJfkzyZZJ/fh5/+oR+m+Ljb/36iud7iWP9sh7G/3DlCvDMLsrPmE6+3C/ZoP2juc/JPi3w9X0BlDpE/8r0mXfwvmOX2ujnXnjGWcbXHep3Fp+PFVdO5sc7534mvc03vnMOuwv+poDJd8o+fPKTs1/2J/0Wv0ed9XET8Hvwhnz/Ji9R/7fzDkDe7xCf29P/0OQJgOP4027G5c3kPAufW/jD3/DmnnbuZz+mfSV270wPF8B/sHh6CHgoOCDnjexyY84jwDuSH4uv/dCrwR/qJ88h+fnojVU+hr7vpc/V6ndB9xD4NpiPWpKjiXl4ad47Yv9d6Snv2SQPZhZ7dGb3q/y+Je8rwLcCLH7Prvi+TnV0upJ/bb634OtFv7skf6hofyz7YneLb3+w12ry/q78Ye4fZV84+eDssYZ//qH8J30eVZTflHzS7cGO4FL2uYS9L0k+IT4OzT26Aij1GDgGvI8+x+W7C6xqHv+KHrOerEt/degr981y3yj3jx7QPveP8h7EYn5wgnLiwgGZr9A7n56r5v0vdP4l7wRyTk5+tnL29bPPn/39q8SvoYlj4uC3eQeBXdai93a+K9h/UO7X0Ne1yrl3n32Pd8h/Q/J14XnfvDBHv7zPkvdapulfLfl99Lc0+5/ssQXevO/ZiX2H6V/R79nfeEU5eRddwE5g3kcsfh+tHph3hlrkO4d8F/p9Cvpt6fXLAijFjUrdmPszxm/Ga8ZvHePnbfPNFn49X3ly8mHIcx975Rwj5xfdxN+1GdfKyb++MPd8c96NTu6/3sIe/Y3bScp5v/MU/rSDeXyz9dz5+udcsTw75R2yzeidA8+TOU8oOofbzbzeXLtqyl+y/2R07wS3I8/T6o+jr7Fg8i8r4++wEu3QO1x5kP6t+Nux7FWXP7VW/iDn1eh+7pxmF/2Psb6sgb/k6Sc/v5n57UHz6P7wP6L/NPs3Z9B/beVq9He49cVg/deBNdW3Yve8i5B3rrLfs0vR+iTv846gpzLi0jO+S/P+Wxf1Oa+cAF9H81POL/MdchO776r9K9kfZc/B4s5N+K6uPv/3YT2/W533YIzPFvS/LO9egReiW4M+zhWfnuSPY/hTRf6+wLjopn/uwazUbwz+x5QUYJO8T4hOzpkm8pe8z7su+WxF827O445m/5ZgK/B87fM+4AJ8t2GnvA9YCr/r8XsZff7APo2Tv8H+XZN/kvu9+Ex+WPLFkh92F7p96aEXWEp97hu/k3dpxfHuua8j4M3Ez2jl5MHdg58V+Mh78BfnfnHuR+JjV/TzfZL3P+vx233oO++B5n2h5LOWYa+8L9RNux3Qq2B8TOG/s3O/2+8Lc85InuL7npP4UUX8nc+/kh+VfKnkR32C3yOyv4xOE/1z7n+N30/SLuv1vLeQ9xfyXuE9mU/En//fPZ436G0T/L+qPzf326yfGuf7Aj9b6fN3/raRXlbxx4fo5Rl0832S/cNq6LcoGq8Zv4vQf8H8kvcYqyh/n/s/xsct/KYbf7iS/f4ynoblfnRJAX6tf+4fdw9d9pud70P+dqnxOJ5/Z3/rCfQnkueZ7BfqX3x/4k/jMPGvL36z7mnBXnmfLnk3B6P7Lb7vzfsD7NGd/domzwq9VuJq3u+93Xok7/fmPaiss1bon/ehZtFPaX61Cf95v6Sa+JJ3T78y3+T896LM5/zow4y/rI/Y5cK8x4Pv/H+Dfuj3AXuDef/zSuP3f+/KFZ3rroxf5R05vy/B33jzaSdwLlidPg8kT32wKZi8/xGZf8Frwd/Uf5PvaXzmHaq8P/UEebbJualyVeNrT3At/WT9civ9HMOuk8jfWjn3gV5Df1juJdNH27z/o75L8hX5b1l+toa/XEPu4WCLxHPyVhPXi++nJF/xePbKPfbcX6+j/kj+fQSY/Pwt8Ndgj/HwL8Zf/6J9k3w3VUW/q/F1CXgNunk/dBvta8A3rih+7shued867123hedMfn1rSQHm/xD8zV7ZL8o+Um/zydCc38GX97pexE/uVw4xX2zAR94/yP9reoXe79XvJeUuOY/LeQB+X6ane/l/7jPnfvNSeP53vzn5F+i9Y36oQj+DxIO8A3+Zct6D/9vvf2UfCP6O6OV9tKfwle+B/H+J5KtnXXJw4hj619BPzi2XJd7lOxXsjt4sePZO/E2+jv55j2m28gz7G/k/Wfk/dZckv4pd807Db8rx7+98D800bzXKvSawas7VkhdXtL45nvwDjbvEu/LJ3y8632qbfCjjezm9n67+S+WPiu7/5N5PWd8nWS9dhF7eHz+Gfk/OPa+idwVyvvy/+3X8v7Zyb+Wmye/P/rE4M1n5I/zs4Pe/zc9b0H8efw2tPypo/yr/mJr7ataNx6kvPh/YLfeKlfOueea/+Fv8r/j90dxXzjnzoKLz5u785096TJ7K7vDX5r9rsq8H5v8i1rYu+Ij/5X7mzfRffL9zS9E9zw/oa0nOxeh3KP1UJs+P6cfPTjO+Ts29Jn6Rdy/yPlLOTfJdmfeUH9duJnp5/yzriQH6512Hf/P9BE/ypfoV7b/uje+a9FfXeMm+x9HKbfTvyn6X0uslyQPK/o/yObmnnHPefF+x33/q/wXvxEfWLU/lfnnec2SfM/nnhfQ8kT8nH+Qg/B0INgOzv5z/N/Nd7ivjryr5k4/yIv3ED3K/N/sJeV8++wzHqi++T5nvmbyv0AP+Eng7or+Evern/wMo11POfYWXzeevg3ujPzL5b/R7FL+YhJ+855f/X3aC8nDyZH/mH/sSP9PvEPbZrN1i+j+dPyQPNPmfe2h/OL3nfHefnG+x17LMA+LXfdoNL/r+yPdIvj92gf8L42qyOHm0+lut9yeCTbJey3wkfp2H3q95Jzfn0fj+kr5b0ENf+Gtpn3P2hvwq5+tjyJX3eG7K/Uz1lxufy/j36ORVwz82+9vqeyvnfuEE9kl+ZN4hS37kQvHvIXSX8q96+ue9+HboZv8j78evJ/90dh5O3z+SN/c+3iN38gJz/6O4nHajyf8v/Mm/GGceqqLfCHSSV5j1UtZH0+k/34E5p8/9+Xv070SeseL0XPptiv7+4AHge/neKinA1eBbYN7Nmih+T04eMdgSvYvwk3ypb5XzXsSNkR++m5Q34v8g8uadqMr4WlYUrxLH+uUcVP2l+L2fnnLv9rrkq2ifvIW8g5j8hVOsv7O/0V75d/1fF1dyTyz3wnrh/4d8P5N/O/x+lPcfsi5Xn3zA7BctMC/Ot64ofr8l799s4S/dreduhO858fI1+h5Cz+/ib6r5L/+372zytNJ+OX/J/3k+Lflh6L8l3uTdg7yDkPVZHfp6m5y1lVvSX2txe7j4dJt2D+ifPI78H9Xi/5+6UP8F/GoDuJpeHk7+FtgRbE3+lvp/kbxU5Sey/+73IexxPf/O/9fcNe/X2p+aTb7n8z5GSQEOFrfPyP9pLjo/yHf39cr5/l7Hbz8Wp/Nux+70n33D/N/BvK+Y9xaTr96N/jpr90/27/IuWr6P6O+ufN/xu7xH0x4/T8CX/29XE3yaH+1LP0vo4wMw+yT1cv8Yf/1zjwKd0vTzdvazwFfBLfh9RPyP/kuT6wpwu9z/gL8ZPT+R902y/6++Db3l/H8fftkI3IH+8r7DySUFmHP//eHL+f8lyY8TFzop35w8XfLk/16vVP4l7wPwh0n4yf8/bJzzHfNSdXhrgHn/q/h+d/H6s5nx+rDfF6M/gZ5ybyLvX+Z8NPcnbuIPg/j3hfDkez77VSOK9q3y/xEaiCc90dlbeYfcTyF/3o27UTnvx13BP9eht7zoPP8J30tPgrWM/xOzr85ueVdgVO7TZz2H3/Pooy7+1hWNz0Hofquc8Vmu6H7kZ0X3JDug9xL5atLvKbnvx6+T93Abf09e8QrxpLPvxPrs8Dv75v8B5Z3s4vex837JbP4dv36FfP8H9qMTkXicdd151NbT+j/wRMnUSGniKdIgFJGxIhkqomSKoqiklAhRqYwdTYoklDGUKYQGQ4ai0ZDxZIyQ6JhT0Xet3/16n7W61+88/7zXfvZn731N+9rTtfe92z6l/t/fTvsX8NayBWx8QAF/3qGA2+xUwF+kZyk3v1IB+yr3ovS0Awu4Q7UCPta4gN2Uu6VJAZtIv6G9sfsW8BPpViUFbAF3bFjATxsVsG3FAjYqV8B9YRffbbd7AZfWLWAZ6cXaaYu+9vCm+gW8Hv31di3gceq7Ev8vS+9apYCrti/gF/gZit/DKhRwhXIXqn8h/iqWL2Bl/6/vu2vJZ3q9An6mvnHqH6b8w/LH+v+nvhsqfwP6WpFTmZ0L+LT8L/F9G/n0R0d58hlHn0v8/012cA35b65TwLY1CtgODiG//uirrL4vlDsEnWfuWcAO9FILLmePTWsXcBR5t0XHL+Qzi34+Jf/P4ATffVuzgI32KODUqtLq/w4/x6GrJjlu09T/2XVdcjxZvYdr//zqBWzVoIAvqr8Gfp/0/8+111U9O5JPJ/XfjI812n9G+yvQ9Zv61u9dwPfpr4/69yCfR5S/F32PkecbtQq4SX3HyF9FP8cr/4rybeUvkD4h/c73J8pvLL1Bfn/0zMDv6+nv6D/K9zfR/znk8ZHvrqqMb/X33w39vj+aPpurfx75ldBLo6L+34LeI6/I80fpnXcs4Br/LyV9n/q746e1/DHk/8B+BWxKb+fp55vwN1L9D2xbwBuVnyj/aPr9Dr/fw23wu4S8tqG/Lfj4B45kP7P0z3nwYva/AN2PoncB+fQml9vRV72kgNeR6xT9+ULlv0Rved93xvcE9K9RX2fy6qn89fJnoud9cp2i/NvwHHqvoZ5h2mtE/1PQcYH8AfKrkE8N+q8Jh/Fvo8ln8V4FvAq+zc8tYk/v+/+O6DlcO4+h/0/+bANchN7W5PED+62j3NvxA+SxXZkC9oBPblfAV9nDcOUO9/0i/HXG/2v0Vw+/c3zfCr0rSgr4H36o2L/eTu4byGeIcWCx76rxVxPwVcl4sET7G3cp4CZ4su9Ol/+3dDXy3hf/N0tfqNxP2juLv90WPxXY5TXk3Ve9/0gfza674XcHfCxWf3ntHaO+I8jvTvkDjB+30dcw31XWzgDymYe+bvGn5FdO/rPG6ZX6aX/6+kX+KuXHG79f0/5S9r9Ffc3h8fJ34a8uJqfzpJeTS13lp8vfW/oV5VtIH4buo8n3G/LrL/00uymPjzLorcyubywp4A2wIXmvVe9kdO+u3AzynMzuqkg/TS4zyfdO4/uL7ORC8r8JfY/I/5Zfa64//u27Luz1UnIfxB7GoqsbfzOQ3R5BbqXQ8Td/cJh6Nksvk/+K/vUK+QzB54nk+4B+2w6+ho6n8Xcuvz+FH3ic/V0u/2H8/MKP/wrPI8edtXsIfl9Ez47k+S5+vpfuRy8d1P8Ze/udHdwrvwf6G9LPff5/IjldIL+p+i+DZ2mnDv1UiX7IZTT/uVb+R/huTC5V6edx9B1jXBkDtysp4Hr1jcVvXekfyeE19K5R/w7qvZD91vJ9J+PlnfiqQp4XqOcJ/X8L+3tM+p+sR9D9p/ZW0t917GPENgWcDS+Da+lvlXrvZ481Y5fkWzXzTnxX1P4+yj/JrkpLn6/8R8rH374pv5b87eVXVO979PKB77ejnxbsviU8mxwzr1nMPzzCji8h71O1txN6l5LHm+zkSfo9h1/qpN63yfMr312Lrh/1g3Wwp/Zb8ectYRO4jfK/m1/djv4dpNvR7y70NUj6LfV+ht5D6bkVvJ5/3Z989sN3L3gLrCo/88n56GoonfnmcvZ2ifZvRs9A/eh26bO0X5Wd9qG/Iez33/S2mj+7Qvvf+D5+M+uD+M9e9He+/1dmx8/Kjz3Fvur5Lva1Dh/3y1+Nnw7yf0L/XPmns48R9H+b+ptm3Z75Mf6v018egc/S4yfKl+UXrlb+YfS8Jf847U8nv7+kj8FnG/70eFiF/HZVTzPp+9hxS/W0Vv8b6pucfQj5Tclvk/93197j6n0Vf8v436VwCbzSdzPVX1//qKmev+Hp6D4Ndoa3JV/7y9C1LX++TPvbW19cBldr/332X9X3nfiZb80/30t/5p/Wks8b0l/Q66H8f8bTtugZyz4OMX84FDaHB+F/LvueAxvRR2P1/ag/zeY3dmdfB7LDn9nTeQ23/v+H7CX7Tn+g6wv1nUt+pfmLfur/DV6Dv53IpwU+f5Wegf6HfJd5dfavemX80t4YOBo+rdx043L3zBP8P/OMn/Xv67K+ly4lP37wX/TdVvl+5P8oe5kBZ8Ks81ubnz6k/sH4/076evrYm19uV1LACfrHEnJ5Q/4j/t9N//ja+mEP9eyF3jXovVx//00/aEkfvZVvhd+j4KPwT/ll6HcZ+y0r/Rj93oS/c9j/PP6wIf4u1e4v5NaB3Y1G3134Gkyvh+G3jvp/0V8maf8O6YvkN1NusHYeZJ9z1D9Vu93p41DfrVD+KvbWiNyW4r8D+stptza8Ubma+GiA7xv8/yjpGvKPYw91SwoYP7mP+q/W3x9U/kf9bTP5V0fvV+i/rWg/Zx/2fiU83fx6uvYf5t9fxFcv+KD8PtobT27Ps/v62m/Dvirav6oAGyjfhlzuppf/wOXstLz5xxT07kgfB2Z/1/9Phdnf+R4dlY1bl6N7rXR/cmhFfrtmv4R8Ryn/pfoakF8T9PyadbpyL2i/Fjm8Sx+b8Jdx6Ed+5HP8vUjfi0oXcDfpXdnfcebL+6vvwazzlT8KHX9Ld6Xvt8j/XOnN8o/0/ZvyO8u/Ar8HsuPXtH86eV0F58IB9Jf9xJL4C/TF/9xPn5knt4SZ1+xt3LpO+/8YZ75A3yj9a6l6b5aO/g/iT5rBqez3Bd8fDs/E9xPobaG9s/E7Fv2v0mNH7R9GH6+jc7T0Eb4bQj/V8dUXHin/dvaT+XjLnC/IH5H9YvLsF31l/Jd/Pv2vL5rfdGbXM/m9TjkHwU/GlceKxpXsH2/SP5eQ+wL2u0L7L6An488QeBx6Mt/N/Dfz4cyPK5vPrFDuK+uNSdq/Ab3XwBFwHD67G++uhafErvDfswClSjIvQ0c9/Jc1fm8Pm5jHjUHPtfzRd/p1G/yM1f6Rxpd3sl/qu6+lG5vvTCO3k9E5nJxbsddTzKs6wM/ROYr9PEVODZWfmvUv/5T9lOy37Es//0LvofrTc/guRU4Z3zOuP4f+jO+R6xPoaW98j5yXsN+a2t8BX49Jl8bfzJICTkTPLdo7I+sJ8rkGnqv92fpTpaB6z9P+0exvSvqv/Jb4r0E+V/h+g/HqXPrpwx9si8+y9PWO+qpL78kvzyOH29nTTvi4Ex9N/f9S9p3znJzv5HxiV/aT86Oq6PtBfTk/Kq29cuqti99d4+/Z7afmRWuzX6+dhvgrq99di5/e8pv6Pv16ofobkt+GzAvo4ybyzP7q7fzGf/z/Z5j92qy/F6Ozgv+Px9+55DOZHD7I/qz2RqG3r355LPlsJ3909kPwl3X9U03///SEzuwfX8P+2+DzJP3vaeni84P09/Tvc9DVjj7Lo2ey/CfwN4E8j8ffssyzC1BqmnbnSu+i/fLZ/5DO/sfD0sXr4cz/TlL/qcpnvfEM+hbLr0Yef+gX2Ydqnv1f43NX49Yq6cXqvRHWy/4HfJd84z++Rfdw6U7k0Z6/v1M9T5nvX6P9C/DVlv6+hoeTb2lym5JzR/56iPJ/8pt/wQ3wJeXr4v9dfq+3cXwQfT9EntPhw7Avfn6UfjL7DNp9Xf0Ts38kfavv3pOuqF9kn+df+kv2dxrgrzG8nP2NJpeKOa9Bb0Xyq0f+Y4v8cdpfoP4p9DEMHu/749jHOv5jofy10i3xf7Lxphp6TpJ+JX4QvSPQP6+kgG18X0n/mEhvt8Gs30eZt+0df5t1DPprk9dFcInvp5DLDtq5Trn91DuIfH5j1xfl/BR/++V8iX4akUtX9V+vvhvYy636z43S2/t+sfqfZucN+bPj9ZMG+L8l6434DdiDPs+Hf2UfUvmcp+V8LfELOV87Uf3LyX8qe3wRVs26XX0HKD9curryc/CzjH7+zP6//vMQPf+A/53J+X7jdgv8PWUdcyj5zrWunAOX5dxY/fO1f0Pjrel8SH4f9M+Of4G3ZPzSrwcYHwahv7R61tLnAfYxqpJzFfxO4e/uosfvyT/nQ4vQN8v3FWDil3Lek/OfnAftxE8U74dlnyz7YUOtp+rCqXB5+p/x6xd6G1lSwLH0P4vdVfH9TOmDtZ/4kMSFHEwuOd8Zpb6h+HmJnr+gp4vwt5P8HeEP2t8x6271npL9bfrZiP9a/PIY6ZfV8zK9vQoTX1U/81/yWAn7wqfQN5zeLk3/zXk0em6UPjLzyMRN4D/2eYbyd/sudro9Pi7D7z7k/FfWH0XymaS91uh/iT1WNY6PVL6G9sezx87ZN2ev76u/nHI90XOc777L+Mkv/YTOd3z3s/KDyXV/5UZnP5d80m97oDf9+UL9twQ9b1in7CX9DfqbGQ9OZadXsuuH0XcCeZ5LPvPIa2D8PXttzr+/pdwp6P9EucRXzLY+PFb7/fT/gfjLOfjuia9iH/3IqbL0zep7Hz39sx8Id1V/zs8O518PgzlP+xN/ifeZA/dA/zh+Zzi5nk3/LRPfoj/cg/+1WXej/zL0DVDvGZnH09+f/O3l6F6knR+U3025/tKJ+5yOvuaJK/Rd7CHn61fh/0o4lD1fgo472NMz5Ps6+axQz2uwNHmWUn6u9FL62JjzXf1hPHp70Hcz7X2Ljj45J5a/JzvpKX1V5Jg4PvIq3p9rrf0HjQNfwpy3raefLeYN/8Ch6s/+WfbLsn82k34HZr2qva70OVL6Ff72dP3ofvPNC+Rvl/iJnJsmDlX+XP1uPbvalx5u137NzK/ReQA5XJX9M/PSl+XvQP7t6SfxXyv0/xnS1bQ3mDyayL9ael7icNnHsTkHJ4+ymQfRx5f+3wAdR+HvD/LaF92v++53+X3IZTO5nKTdxur/QL8aah23UnoV/Q01v7kf/orOffCfc59r8TUEnpf425ICTlXudenl6Oyp3oawAz1nHH6efbXGx7HwGPnDlKvJTrLOPVT7fc0nmsePk8vJ8isn7st3xftVb8JttPcVef+K/6xDEj89RP7j2XdW773s4R/pl7K+Z7/9yX+Z/EvVO7+U7+BguDnxv8bn6+lhjXTOmb/mD/pKTzceHEoOX7K/O9Azk5xmxP59NyzxYBmv2M/3+P0avyVwMHkdx+7awEbkcLZ6B5Lbzdofo/7btH+j8TT7vjWUy35wz/hP5b+uuHV9R+LvB37j2JIC/kMeq9hrSebr+m/i8ToWrWufQ+9F+P8Y/3XQk3V9jXyv3z+j3OfafVz5x9jfMu3/LP9R+YmvTVztLONZ4mtnFc23T8Dvuuz/6E8f6BfH8ocV0PkuuxmEjjborJj4JO09UxTnm/a/5g9Xw8/hI+rpwf66Jy7JfO0N+ZvTH9jLZfrfW/Rf33g1RD+PPzodHYlnSnzTYpj4pp45vybXrJ+znn6Ffc0n/97stDp6FtNvGfR+wt6Okr83jF8Zp57Mh89F/0Ry78wu/kj8i/nAmux/Zb8z8XDaPzvx6+qfn/hQfMUfxT99qf4BiReH5/v+FvUnfrgJefZIPEfOX4v2XRbqR/F7nXy/xvfN+OdmWZ+SZ194MfxE+abs7wDYjzwHwuL1QlnpD8h7uvlI4jZryS+n/VeSbx6T9VDWQUvRX1p92Td5UnqB/ftX4WuwG3qW89sttL9CeiP6m5DHYli8n/c6ff2cuHW4WvuN0fuMcgPo4z76/9D3p2XdmfFH/d3o6wvlDkz8ZOZn9Po7vkcaH65V/2X+v2fRejnr4xnou5Wcr5NemvGmAKWu1u+/ML/dyD5zH2ELu/gH5r5C38Q98EPvo/9i7T+InsSrLFLugMQR6H8dyWkjfu/3/emJ7838i1yeVf8e/OLH/PirsG32R/CZeIgy+vlc6UHkOS5xhvzxtuSb+2Fz0TMS5v7Se/zdIfR4MGyl3ZwbXUrfszKO4OPy7K8Y525JfA75v5r7APh5hp4SH5z7XndoL/e+jlR+OPlVw9etuWeCnt2Vq0Af2YfZV/mc99+feICcH6A/8+q34UTz8WMSn2a8G4yPvdjXPHTOZJdt2eVP0k3R0Yd9LWFf5aUPlP98/Jt+dVXixNFbvB94IPprk1/ibzMeZbzK/LsW+c0nt9rSl6qvtvlMTZj7i1Pl5zwk8aE5J3la+zf7/iaY/eTKsTt8XZn9VOXboXcs+ZZJvGvmU/LrGlfKyR+hnsQ/1ND/hiduE//zpO/WXxLfVsL+Ou63NX+Z71dQvnXil7SbfcAN5JD9v+gj+tmsvugn8cY5P0g88iL57fWf2Yn3ZGdnyJ+j3e70NkB+hcSnFvnf+OP432r8y7jENbDTxL9cVlLAr/Svh9GZ88mT9YcO8ADz1z8S/6S9u+htLcx88FP9YRi/e7Lyg7Nfp93RcCH5PIL/06Q/hjvnfgF5zdO/T1TffOkW2b+kv3Xs8HD/b09+dxsf7oL3wHXkPMZ+59n82wzpbuj4N34+hjWNzxfQe3l83ck/V5B+Hn/N6OM+cnpCuhU6v8HXF9q7NXELyjdCVwvjf3nf5/z5au3VYEfVc1+J/BIH/lTO/dXfW/3z2OdceGviSNWf+MZ2OS/jrxLn+BK7S/z4EPVvZGcvk/dLcBv4QO5H85tZ1/0jnfXdu7Ef318r/az27qH3rF+ynsn6pSF+sm/7pu+b5T4Zf/17/Dc6bkj8sHbv8/8PyeHpzL/ZxfewU85hsr7jv9fT+2z0jEbPhfpXL3hG9om1/77+/SS/OwJ/08m/k/6wP7wy8aTo/sx+1Sr4KWySdQd7XwBHw7u1n/uHV6H3dfTk/uF69taLfO7lHzY12Zqe0NeOPd+T+Re5fcX/JA4j8Rd11PssPCX3vdE3XPmv4U/q3933Y9A3Gt4C75a/kD39r32qefxyzgUfKilgzgs/yzogcfPwbfm/mS/ORff6xFvm/ltRPPxy6QkZT9hLtcwX2W/iy/Yl31boXUgOr+b8kzzuyr5kUXzhTQUo9QLsDkfkfnz2k9Rfyv87JL7JvGoX+t0Z7i3/NP39LXT8SL8j8XMXvzY78RW5L0o+WdcuRG/x+jbnNzm3eZS8c37TsqSAeR9hPX3nnYSV+mvxujz3eBOvdKT6E7f0O/nnvkVF9b2X/Sn0jsn5Pzksgt+opwF9bZe4Hu3/pvzzoTPt5xw096eyr5X4R+Vz/vyS9m8j1wmwhfId9NeT4Mm7bc1f8f5ocTzQHONB4tf7oTvxpZfSz9G+ryR9qvY/4HfP4ofPgLXw09H3ia/qrP98Lr+9/vCj7xqW4AMdH+LnY/gRfCznaPTwMXuZRG77Zv5tvN+Jneb+z2/4S9zqQniC+epf9DVM/0gc62r6/lN+dXKtAbPv/Br5J+5nNLqyX5j9wTrk2gk+I//MxCex3xW+f1T/+1l6D3TVhnvC3Df8VX0518k5T853Mm/LfC3zuZm5X6v85dkHz/4nehM3Mok+n1X+b/p7ET05958vfUjur+pP22p/Dfoe0P6R7OIo2ALelfWOdO5H/lR0T3Kf3B/yfUP2sy35/mx8yPo092Ny/y/nQ4k7aaKfNPf9IPrNvtxt8rM/N4C/WqXdT+Hl+PyFPH4wLk+VPibrevJ/N+dAys1S/9eZN5Nn7tvnfv2ykgL+rd0jzFPKZX2s/CXxm1n/4W+s8g3Uu7d6ttBPcfz4VPx3yflG0Xoz+66JX3qZP+jML/2e8dJ3j5Hr9fjrov+1Vf996t0Lv5Pp62XyecH4k/jnudKJf96o34/JeqAoXuJg42feBzleewdE/ux3X366MbyevVzn+xPS38j5lpx/6M9nworw8ZxPsd/n+dnnpKejZx1+Vqp3HflflviD/xH3vyDx/PTfV31XwI/Q9wA+ZqT/5P2HxDey2+HwUu38pnw3fjfxXYt815n++7H3jVknmX98nXdYjE+v0VM/drIm5zLkkX5e3L8rKbd/4hukEy/wM/p2ZjcNzMemsreB5lur4UjYM/E05LgJbmYPb5LPUP3/6sSVSf/m+2r4yzh+GX823/dv09/f2tuQ/Vv8vc4u+mXcpZ/sXyTeaEnmR9pdSP6Jt1wAE4/5q++yzsh5QDn1V9N+5q25/1sWf9k//yHxN/zy5NyT8n3eO7gn92KkJ6O/eH8v+3obEq9HX4lXeyfv88j/wnrhaX7mMbgw96/Z4+Pk/HLOUzLfYZdLzbuqSHckn4fN9/Nu01M5ByafQeSxG3pOY7+fk//75PMBXAlfwM+Z9HoPbMU+cn+wZeK3E8+auGTyeyfxd7kvnnvD6LvEeLCffrGLecwMchxv32Mkv3g7Pk7Ff/msSzPOwSXxI9n/pNe72VkzdPz3fntRfHf2M2tlPFVf/H3iV4ZnXQ1P0M4E9WQ/ebTvsx7N/vJtuTciPct6Iu+vtEL/cna2Sv5b6Lk48Vro3xZ+SB/ZD8i6smbu95Jf7jMkXmgY+g5OXAz9Jq67ON4785NL834QzPxkQtaP6Bql3A3xj/pD9mmzP1sL/Yfyz12NS7+r71v0XSG/JTrqZf6ReO+i/aiV5HUH+WZfMPuB9bX/Jvq2I4+u9POI/AqJv8h7PMo/m3GMfLNflv2z1ezzruxfsO/EOX0vfZB6+2Z/Wrl+VbfOH6rcoTlfSBxH0f7zLP4j42LVxJ8l/pleR8Ml7KW3/CviD+pvzW/OtbMeGkg+OefOfc/i95VyH/R09lwbnZ2le+Z8R/nc78o9kNz/2Iv/qAPzjta4vI+Ini3o/zn7+Zl/kdu78v/KPeScv5P7cfR/sf93Uf9e/n+4+o7VXu4nJm6zfe6fZJ/d9x8U3V/Nu4eJ38l7F9mPzf2L89VfXr8svie6PvE0/Md9MOfW1ZU/wHpjVO4d6odfZx+Kvf3Kz1bjp79nvz303xv47ZzTPUc+F9HLqTkX9P3b5LGW3vfLelK6m3TinhIXnHjhquq/qmjf/3PtZD35eb2t+ZmQdwHkH8Kv5D26oeprk/f9zKcSB3mi8TbxkEeQT97/+yrrV3Kejf/Me3vrX/tk/8t87pTsa9Hv0firYH7Y2DzhKPVMpb9n6O9y6U7ZR1L+zdzHVu8W8piW+505L+d3ct+ohfymvq+Nn8RHDCGvjDe14XPmb8Pxl/PavAeX+I5dlC+t/QvgN/p/4qnONN+YDZ+D/+BzO/2zNJxnftMe3xelP+I/+8zZX877IXmP61jf5f2QXvrnzcp1YX998DtM/kHSj2d8T1yU/Iw/a9R7Ze5PsadScAH+H1RPW3bVDraH8UPZzz6NPHOOnfnGzapfBZlrqRP5g555t5Jdtdtt6/K1s97VD06kpzbouy/2p+KLzBOPlX94SQH3INcjpJsk/ps8a+NnduYTmR/QZz90Nss5TeJDpBPP+bJ2t0H/ZP2qOvoHmqc9mvszicuDe9BXu/hhfm9G7rdKJ35kh8SVau8AmPuuxfcvPqOv36XPlJ/75rl/fkLi6zMu0mvGt7wPeTi76W58397430i55fzyWeT6St5jyflSvpf/t/nUQfLTfw5DX+IlEx9ZHI86CP+J//og8b7kN0b/vTbxikXn2znvzvn2tvQ1SLulcx9Nft47zPuHs6Xz/uEu5osZHzJe7ILevGtbO3GRiZNC/z34z/2TO5TPPYLByp3N/lf6fzv0JZ48cebZh0+8+QR+K/sCuT+Q/YE+7LajclXI57m8r8RurzOuXg+zn3KA/DbkGz1Gf+3QXRcduZ/2VdF6IeuI3vjPeqJeURzQOPwmHmhyAUq9Qn4XS58a/2dcq0VP58ON6t3IXj5H5+qSAg5R32lF43/2kxeSz5n6xxnw/tz/JP//de9mUva7fb8ne22Z+245n8n9mqJ5bua3H+t/tWAlfuww9X+Ivwdzfyzn1uSzP/t8Qz9tIr1XzpnRc2vmSfTwUuxbuanK/eW7nWPf7D3v6s2Qfi3xvexvfuJbyf0+9J/Ln8zFX3t8nBh9kOsZiaf3Xd7n2UJ+t7H/vB+4Jz6K4xvW4vedzPOND4mbuzTnvbl/jf+OsDrM/f3f9ZeG6O5RUsDNieekx3/Bj+i5E/n0Rk/eQ5hrP2y5/nWOdfvc3AvNfXrf573xvD+e91ry/njiHfPueN4hz/vj3xuPp+d9CO32hFv4yz/RMV5/ax87JY9q6s97B5n/zCh6NyrvSDXHTxvziOz77iz9ddH5Ss5VurLDnK+cqr1/y0/88m7429F+zUDldpBel3g29rIk9wfRd5L8dfrbp/Aqcu9MPt3xfz7sAadEP+w1canF8apfZv6ac1f05x26xHckruM0eAj59YS5d5x96uxfHI/f7XOfQTr3l25X/ySYuN9e2r+E31ul3D7693T6n8g+jiPvh8jxwOxPkMdDsIt+kXXkfQUo9TEcCF/Ou6S5v6w/90mca+73+/9E6aNz7xF/4/WXyeQ2HtZSzzb8Tyn4AXv4hv4/IpejE5+V8/jE35B/zhdy3pDzhe20P47cNrLvxC9kPDoIv3tKZ16XeMG9cy9Ie4knTFzG2fT0EbnvgL7W1otXxt7R30F+9qcuzv6Uep/MPU105V5hHfmX53xHu3n3Zyx68/7PqdrvI31RxlXtd6TfxL1mn3yp/O7+3xX/5fWfWejIvvUU9Mf+8/sDM9ndOPPS8fAv9vKfov2/Uuw8/Sfvpz6Sdwul39ROL/OKnnCmanpLj2I//30nsuh9zcu1Ow49k/m7rtrvkn1LfuIPmHvGl/BX/WE/WJddbPJd9eyHoOMu6V2Mr3m362T2n/e77qC/Sfn9iLy7AsvhZ17epWDf/8bfacbnCvzffN+tyv69/yfOZazx+Oq8L0o/7bKu9d14+duj60jlpsD66E+8YOIH805iX/JuxP5a5x3izNfl30r+ZfHVL/t/uU+c91OyTy4/77/vo906uU+Y93vp90Xl27LnSqEz8e/80s346i29v3aORN8WdtOdfZZW/1D9d2TOOTL+098l+F+aeEt4K/m21B8Sd7Qg+1f/Y/6wVjrziL/x+xM93qu+M7J/Jf/I3NOT7iV/KfvMuVk38sr7Zdk/L4Xua9GR/eX3fN+DXD/JOyrayzhQwu+cnv6S+zTsJ3FNk6XzfsUG/Gbftws//zz639L+8dpdp/4FiW+n1xr0mnj6J9Hbgn7bae8O6R0y/8i9Yu08rb5m9J/zxNU5f6XvY9GX94DzPnDeC876YSZ9bYLLE1/nuzL631DrxB2ls+9ah1wawmftDyb+6Gj7PSvNe0+UTvzSaeYXeZ++F71Xyv1n/r0W+SQueoH0zbk3lXcTyGlozl/063dzP5d9537KbtrNu3zl2Ul+f+kt/FbN/W/97CTyy++h5B3jvF+c+k5LvD+8xHf5faUT+Mfse9yQd8DIYRJ6c45/Az4akE/xfm/2gZfJ38c4VUY7W7RzcN5xQ3/Wl6ezr8S3HCr9OHqeS5wpeqoql/exh0tHf6v4rcH0tgL9lRPfyj5vzPsA7DjxinmvKu9XnU8eeb8q8cdfoOvznEPQ/53sLfF/iQdM/N9Y4/fozI/ZY/a3d8P/CerdNe+raT/xVJPQmzirjnn/tKSAlWBr5c/Eb95Lzfs1+Z2DvF9Tk95uUn/e7zsz8cnqXWJeUJ9+96CHV+XP5XfmJJ5M/jTpqfAe4+dH5F3ZuNyJPVSS/ky6Q+5T0vPBMHFED2U9B88pev+up3ZzLjJKvTkfmUZeiYMagb/EP70svYjf/gV+r75T9YfL+IFHpb+T35heu5Lzvto9Lf6Gfv+Td0zkP6U/fJz7VeT2ND2V8V3x70vMZu//JM6Zv41fLpf7zvI74v8d9CU+I/EaZ+BjNvoq0uvH+lcj9Oc9w0q+W5z7wTmf8/960m/Jz+9J5felHkR/fl8q74W9x0+ups+HtJ/9zF7qT7zxMuns92f//yT6zP7/X/SW9yRaSCdOPO/v9VP+qKyr0Dcs7zHDOfr/C/ibHv+j3Pfo6iA/v/+S331phK/8/ssnmR/iK+v1/dlPFfZ1F711Zccna+d73+f+Zw315f7nIPTdg77ca34+7zuzu/3Vn981WaP9vMu9PPFn6tkWH7HP/N5J3sO6J+8zJ566pIBH5J6h9h9FzyPaLee7vjmfL0CpB+Gj2pulvTvNK97hv85Rz/k5jyf3X8wDzuZ/rmWXE9FTSr1b/H+58jeRZxNyz+8YVMz7qPpb9vcy/9lJ/krz2ux/5L2FvK9Qg7+rBZtpP+/TPYz+L9V/AfvN+/O18j5kznX5k5XK5/cbuhb9jkPWl4eUFHBU4ri0/0jiKYr8fcaBvD+XezmD4DSY9z2aknfeuR1DPnfxO08Yj/P+7ZPwRvK6ov7W/JWh5wqxL3Rvg+71+kuPplvXl/pvKr91/Y/4f2P0/MFPnCS/m/VrV3iRfZ5J7DfvrefeVN5hz/3Sqr6vBqfA3Pva1nhyr3E775odjP7Z2Z/JOkT+krwPhu/EL+adg8xfSrOHvLuU95jm+v5M+kkc/1nS8V//jVdTb+LZ8j5pzj3OgjkPyXoj7zk/7/u885z7IVPYU953/9B8s1Xe19UvfoI/wk34j7+6usifxX8NLilgG3K8Qjr70O9mXgFzXzW/J1lbf3s95wns8QbtTbDe2o19TIKVEgeS/Xz6PiH7Ojn/ZI/T9Ivv8n4kedygfJe8d4Cuv+P/tJ97Rz+jt2rOp9HbX/nEF9ZExwrfx65j5+uyn0cudf/H+PVTSQFzb7853B+dq+ijRPu5J5X3QaqSd86X6uD/Xt/1Zbf9zSsSXzMt8fL6fxl4SdH7EXlvLuuBvEeX9+c2Z96XdUPeMch+G39yB5yW36Glz7wrODXnKfLzvmB+LyK/H5Hfk7haekQB/nv+P43cm+W+T+YneT+gaL9uDf3tnnd44Q+JH+GPz4f3wcNy39j48Qm+65LHGOXHFZ1H5HyiLPlebL3ZDw5QPvdp8rutTeDxiceg/wqJb0Z3RelDcr+6pIB5TzbvzGZ+mPt5eQc39/RyP69/7AI2zn6q/BHs/iPrqNx7nqj+H/TPvMf3nXTOR46w3ruGPV4gfavv56A3fnyl/hE/Xvwea945+UN6Nf5G0NdIOJEd5PcU855T4n0T37s3veV9q7x3lfet/oP/M+EG9GT8yf5P1hfD4jfl593YAehNPGjiP9exq2HsY6l+VJ99vFiAUn3h3bArffUpkQ8bGD9KtHd/7mvDR7OO1H7ehci9nNzTyfnhRPI91bi3Te5Doy+/q9kg8ZfZR9W/8/7BefAn/T+/d5zflU6c2ifay/lQzglO9/1I8j9D/ceTW+6NF79/9WDmFei7RzuJj/mJ/vJ7RmXV0xf/S/C9KPEs6N2gfO5llZOf+1q5p5XzkwPyLmrer2F/XfA3DX1jEwee91nIY6BxoH/8gPqK3xftVPTOaH3fz8k9ePQ8i7+821yP3eRdraxvmyuf+97PoKMp+s+m19wj6JLfgSSPd/i7vXOfRXq99hNfVUW6cdZ50q3xl3XrIewn7xOUyb3O7NOx5xmRn/GhJ/k2VW/uX+R3HxLHn999yPpgT/OH58w/8r5Uft828a5L0JP4psS/xl/kPdW/+dH4j8QfFb9fupq8P0k/Ud9L2vtUern+tjn9ln7ye62byGcD+v+Cz2uvI/4am5euZe9/qS+/b9U/7xIUnU+PZzeJS0qcUu7TX6j/5dykl/TlidvO/Yfcp4o8lc/78fupdyo9vZD323yf/cHi+5f/BwI6AZZ4nHXdedTXw/s/8ERJG8pSSd1RUYlKyRLSouxr2WVvQ0RSSpE1ShJl+RQiRYgKUbKUJVnKliVpkz6otNmS3zm/9+P5Pcf7nM/9z3Wu98xcc21zzbxmrpn7/PKl/v/fhF0KcN2OBXhjgwKsVt/vBxTgvfsV4OtNCrCkXAHWAldsX4C/7FuA39YtwEX7F2BT7Y9tWoCfKn+uYQGeDd7RuAArFUCp0eAK8BTty+5VgMfh9xb45fC5ZQrwj6oFeD955zQrwJr4fE+/C+sV4DH4vLpOAe4MVgFP0f7zigX4Mb4qgKXpYxN+2u9agE/XKMAt+mtfpQArgj/rfwT9loZXJc8U7S7DX0W/T6fH/f2+lb0W7VmAg3cvwG9rFeA96nWml1fRXRP56f/i2gX4o/Lxyv+m/4fQPYF9P0h75Tfxn8FlC3Cd3z+mvwElBfjVHgW4kJ6mNSrA9+nxV4p9D/7KPgXYpQBKDQVfBcfR88gdCvBecAT4LL5OYM/jwRPBz8n/OHnO0F/0MJR9RnPQB8AxYCX6mEjfj+xdgPXY6QX0z9u5AIfTz147FeDJ+nubfe/Xbyv+Olz7+MMmsBd+R9PfSfDt2PtmfjaM/puy/wb6qA+fxU6H6q+a/jqhO1F5E/y15m8j9XcxvD/8fe236qez8lPRP0j5buy7hP7ewm9L/H8gvvwD30f768m/TH9HoN+D/h+izzK7FeCryldUL8C+2q2EdyFf7HQlfiah05v9B5UUYCd0fzQetqg3FF7TOPoUn8+hW4o824BN+cPOyo/gF5XpoRV8mPLb4ieRG58Hku92/lZPv/epdyL5bjTeBoODwL3pdT/xshHYGGyi35fRvxH+Kru8AfYkT3n894CvUL+J8VgGLAveo/9F6k+D78A/xpCzBnw7fnWeeNwl8xT7Twengb3jr9pNVb8PuK/yhurPF0e3Gscd8P8C+bdRP/PmF/Q7Az/3GTdvof8T+51Irhp+v4OfnGN8VmWvo9G/mtzd0O/Nrj3Qn4Kffhnf9PMwOYeZ319R/gC/vYw8o+Gt0X/X/HUmOBS8hf/vp11VfK3F72z4Tvh7CZyBv8XKt8dPZXrqUVk5vdy7HTrm8Vf9fjB5u+jvIPib9N8VPoT8J4hrw61zhqh3q3nnYXF/x5ICPF15P/54EnvNNk6fx//Z5G+Hj0MT1+hvmfG6hJyfwV8nR2f+tTv6T6C3UPuX+f+rgeS4F3912fVe8l6Gj47otSfPVnR/qlaAk5V3RfcK+n8U3JE/PmXcLqSH0erP0/8R+i+j/5bmr6/x3029HuxeIeOC/22Hbmv23RY+H7069H0v/R1Cfw3RuZA+rgXvotduGT/WATeWkDPjkP82Id8B4C/8Y5Xynvh/jr3PIu88+Dz+2htfZ/DzSdqvZd816t9cND89zy570ve26F+t/SR6uwrdN9V/Tvka66Khytfhdxx6vck9CrxOvUv1f5n+2sPvAEfR3zMFUKqruNAN/Aj9o9mrJ/23h5/Nv74QLx81r9xJD3/hf0/zY0vjsEnNAnweH6W1ex/9svxzPPrb8+d/6LkUfKDyJfzhB3JfT94PlN8l3tblFyPxuwf/GlIUd16CN6LnvvyrHD6vgz/JTmPNG0/BG2QdRw9L/F6Xvo/B377wxvzlM/2dj88X6f8K8e1y8ErwQvr9SLsZWXegNwadk9U/FVyr/inad+TfHcDD9DuW/u4kX136Lwd+lfFrXPyk332sj1eif3zmC/Rihx/op5q4/LF+1/C/Jer3J1dF9Q9G7+nMT+x2Hbp9yTeefu8zvj5UPlr5Sv2N0v854Ifss43249DvhZ/a+m+Mn/Xmy32Ut7O+fFz7U0sK8FX0T1BeXfnYbQpwIPiR/q5C/2X1V8H3x99rxs834tp87f5gx4r8+3b1H6WHH8j9bdbHxsM15OgN9tT+DHxfy49bGQclyucaz9fT7zL9PUMfF+DrT/0+IN53VX4Ue/+kvBr6t9HPD/w242t/v58LlmGPhvpvAC5Hb4F2s/lRefzFv1+KfsKf+t8pH43/3cjb2Dw1Qv8r6WcUO40AB+DjcuPhWHI/xD4v63cn/Of7Lt97+b5bJ942Fh/Xwm/g/8+w/3vm5bL4/yLjx3j9hf0bsPsW8ryhPHGsrDjdX//PsM8ksA59vIVOP/HwW/B6cLb2p+q3Rr47+Mt8/T9vPL5Q9P2yM/rn0tsr5u2z4McqP0z9NvqrjL/e7DlHeVf99Kb3u/T/UwGUMk2UugH8m51GKqhCP2+UFOAZ6C0l16P4XwK/A/3r+EM1eqkOTsLH3vzjTvNeXfhg8pxu/j/duqwTfC9yNsfnDP29g+4qeAXjOfsT2a/Id29L8s32+2fwG5Tnu3W8/loUfb9+UuR38cPT8L+AvbeB11VvrXi2g+/N2ew0Ed3j+fel/GeJ9pl3G6nXirz9zEM9/f659jWtP1aQqxV9vKc838/T+cvx7Hgl/Y0Qf2rqZwz8bOXj+EVzdm5hfdIan5XBx/H/JXx11n/G29PgScr/oZ9m4st15GoCz35LF+PyK/bro/1Z6M9UHn21ZsfzlM8h12/4+0X9P5WfVlKALdXrb9x9Bw5Uf4H6I/S/FH4XvytBZyh8KXqT2b0KvTfG50fk3x39fL/ne/4D9D8h99/0fp7+b8Lf8eofqf4qdjqA/aay5zHG84vwUfRxN/84An97o/+Z+P86vxpOrtnwvbX/m3yPxy/JcTr53vP9O8268y/+mvVoI+O7ivhX2fgbgc4f+OuCr6f8fit5p4oX32hfKfua5B9Av2XJ963+L8ff1/n+o595+hup/TXi1v76v8H8+Br9HI/e+MRB8aCJ9vk+yXdJb/3k++RP+jsh8ye+ppCjk/nwd3r6DayN3jH849js0/KTkpTTZ0fwDO1H6Od89S/YtgDXlS7ArC/uwt/h7PuH+bgU+s9CbwT/Ai8jXy/6GKe/3eAtyfdb5jP0j9Hf9spfpO8h+J4GH0yPG8WVnei5Jb4uBDeUFODOqQ9vy38Him9VxZ0O9HGC/g/nP83Ne0fAX2TfVeaDH8HzxOlt8n1Hr5/le5t+P4evMj6eBhf6/VPwP/yqI/87nl26k29v4znr6oeVZ339C71cw68bk3sS++xN31/TT/Z1FqO/ktzLwenaj0l8pK/3tC9v/t8GH6PJtYvyO8WB7vSzkD3bK9855yT5/oafSY59jOOy7NMQv/vo7zX6Xoa/bdj3j5ICXK99X/I/77tkDPi1dehRygeLe88bX9XocVLW5dYz+4IPG6/vkqcK/XTgp1Xh17PnBey7nl8NyX4qPX9B7+3Iuy275vst54dt0L2l6DyxqriyC5hzznX0WYvc48CrE+fo/z/oPQQmrowMP+r3Qe8j7b7J+oG+dvD7avU74P8ocWkH46Y8OE/5RHptbHy9Qo7TY0dwEX7Opv8dEv/p84Hsu+LzMOWnsvd35o/B4sxd9Fwz+234/4o8dbL/y9/7wHOesyj0ydNV+S5Zv9Jjc/3W4Oen8avm5BmDn0/Zc7j1ZHX8PEM/v9LrZHgL9Ptod5b6u6P/fc6z0TsA7GwcTdV/PfP9/JIC3IZ8Z+T823wwE/0ryHeD/pvq5zJ4sf7Poc9y+Dwc/c36f45cn2r/s/rHa9+GPI+he6b+ZvOfNeL6bconkOdN5S34y4Fg15wrgRfxr+zTFO/PjGWfx7QfB07Db3vrg9PhlYzTr7O+Mh5PU76ef3+l/BLj/zJwG/q4Qvlr+Lkk8RKfjfD3ZfZLlc9Uf7+sL+D96KeOem/jJ/uL2d+6r2h/sal2r+T8gj6e50erSwow+yd10btY+/bWV/X57UTjcT5/eAJ/75JjcfZJtM952bba14ZPwW/2n8pp1xN+q/YtjLuW4EHgPPI/qN2p5LlP+y78rIu4fj74vniwW84/8VWZnpagO0b//6WvFcqf1H8/9qmQcz9+8zB+6md+w9dD8Fb0VV37tvDx+P3JfHuy8kP1fzC4if5yTnecuPu4cTmYfVqRr3NJAd6OvzvBnuo/SJ4jwVfJeZz+XzZf5xzxQ/1eyr9PV/8d9b/K/hv9nZJ9bP5xQ/J11P+b/v8Bt4L7aX8Wef4DLlM+nN4a/I/10f38uYm4uYn+3qPf9fg8y/hPHDmIPb+kv7nw/1qnPGl8VdTPAPbeTvvi88l5yg/FX03tVyS+apf9ssfE6+rKp+vnMPTeRT/zXzd89dH+UnK9Qb91yb1OPyPgU+nnHvJ31244fD5/7UD+gfBv9T+S/RfDb1T+F/r3KT+Lv50JtiBPvq8eFY8fBzNPJj7HTzPe71f+3+yfmL/vBKuQo270KV4/Cp6i3lT6ncav7mGfqfDsx5xtvPUBn058Uf4ge35Pn7dEP/kOhi9Vfpz1RPLc/luC36yPs5+b8wrlWd9mvZv1bV/0Tqf3U8GZ/GNX/t5X/zPVz3xzsvXtKeCp4Nf0nu/673M+5PeW9LfBeDwTvXXwxIMH6b0X+14BltP+Md8fz/nuaI3Pg7X/Rv0JFf4tx2ztK7LHXubf0iUFeDt+H2bv5DkdB98evxX45XL6XM8OG8CZ5v+N8JXZL4e/qf0d5pXP6eux+GfyUJJPmDxC/n8b/MTk5aG7kf0OY6+e6MxCdx56Nxv/Hc3bIwug1NHwnPfm/LcHOjn/vVp87MKub1vvL8RfM/F6Mr9cwD+y/juQP75F/hvIc57xuoa91iZ/hJxDsj9mXG3K/gD//Q/634mHi8ElYG/8TsPfHux5Sc4ttf/Q/NgZ/Y/9/nXWh+htVm8T2A39b/jzLP6X76dPtX/bfkm+I5vC36DnGvz/YnIu4ef5/h9BH1fST85Tkz/UGz/XgKWSP0CeQ+h/If0vALNOL16fnIu/rFNWk+9I4+wI8GTtL9fvz+BP4C/a9+MPXfHTtqQA38v6jDw7JF8w85Pyk+Hls2+h/mzlL+D/A+u3j8DV+HtK/8knm0/+zeh9wJ9fwvc8eGP0r2Cf5DUsAWvz/w+tf96wL3Qt+9+q/VHatwFbg58kH4Z/PpvzFPPw5pw3/o9zmWHG9578rhG7b0WnR+YX5dcp/xP/++BvFrv34yd9wN353778cjO+62U8Zp+Kvo+yLrgGnvi4DzlfpJdbEm/Qvx/dUWDx+etG/D+U/Wnx6BP4cvPDFfZfTjB+Dsy+JHkPoZfuxtOZ7NeSXg/E5yHw+fh7hH0aJd8L3aPgneh1Ar6eAmuoV11/t8Bv0a4K/b/Ob2bwo5/8/oX4sYI+O5D3cPRy/nGQ+aca/m8xXhvxj+UlBVgb/FOcHsDPbmXv78yPF9snGo3eA/Q/I/kJ8Kz/65tfVoCrwaPJu178fIY/JI+kCf1/I95Ux8+exvMm/a0ib2d4c/qdme8j/jIcvzdmHCh/QP1R4F70G//vIJ49wK+TT3RV9Mev26A/JPk22hefl+ccfary6eS9m/1yzv0EvES/l1unZB2Z7+Ct9Hk8fZY2bx/KPz+nn9/Qa0SP2a/4mH/N5191wCPp/wL8L9Xubv60F3vdknwV5TcrPyP5D/j6Mfn8+BmIv9rWl53ReY2e7sfv5eQ7kZ//CJ+T+FIApS4xvuvx0/rgXerVyP6V/qfqfxP/ftY88Bs5cr74J3+uLv5vgfch1+78sxX+VtJr1mtv5T4DPruBHdjp5OTrsnvG8+P4uzDnN/n+pqeLlSc/4AH4Bfzw7nyfqH+H8dFNP9fh8wL2ukJcaE6+HbK+pNcx9Hkr/B/tZ6L/Vs6X6W0jOFF/2Z+4Fh87od+K3j+mj2Ho5vuzNbn/ZJesE7M+LN6/+Rv/l5I/+Xanxx/w2w69WuJP9tVy/rYYvV7iYc7hst/2nfLkP68i10/J79R/S/3fB/7KX37E91VF6+esp7N+vpNdOvO/4v3VZeLxAX5fDn9Z+w34G0xv77HD++C34sh34GKwBD+/aJ/vy+S9X6P/MuzXp6QA96On1blfofwF+rmZ3D20P568ncBrra9OT34bey0Hr+dPj7PDSvz+AN6EvymJP+r39fuN+Lhd+VTxr5W4l/O0l+jnSu1uFj9OwPf94Hfor8LPA/jcTj+nkPdK+miL7mf8uxe5LzCv1CJ37N+E3w5j1yvRL5f8UPPZ0pyfm18aoDMj+aHga2DycVfiv3buM/k966eB4vOu6E8yPibj/0bxowE5BsJz/rUWLE3uRfjKOe5Q/SevcWj24fCRff+cA+yt3+z/5/5X7n01oqfc/3rR+Omg33nkH6U8+ayf67c9fpPf+m7uHaC/Czl+Tv4WegPEkQ/Fnwdz/mPcnWXeukF8v5q+z0V3HnnnoJf7f2P433h6+gJeK/nZ2ZfPeSx612pfX/w6lh8lb+PunEOTP3kJyVdYT89Ls57GVz9+8aX6V4lrR2UdQF+r1Mu59rbKR5Ij59spPxH/OQ//QHn8eqL+/uFfVcl3OP/POmotPj/C/8/aF8eNT7LfzC7Jtx5IHwP5RzPjaUrun/L/ZewwNucd7NCB/rYkzwi9pfh7Hz/j9V98nptz3pfJO8h+4gFgN/x3RX9A8g8KoFRvsCc/ewo/md+G4yfnR/fAM69NKDo/el5cfTL7KOah5A83ZK98f+8Hv135lyUFODb7v+TN+WkN65/r2H8yfR6sPONjUb6Lcn+J/a/G/6B8d+fcXfsr0N2TfQejNyD7Y/C3c56WfVn0O9L7MWDycp5VfwM9J09uPf4X6O9A9Ofqr53xuEz7lvCc0/cpOqfPPbzfwb/Z6eLkzxufS8S5FeAWeqmB/svgDPA19A/n/yeTYwD71Ml5mN+7i2ND2Otu9qivfkvrwu/Ai9hjWMY/+SviK/kOb1kPjUH/Qvw1ML7OpPeX+OFzYM5N3si+DjqPkOcq/C8z7m8yjsv6fSn/eFO8nkWvy9G/RHkX7WeR59ysL3I/hb1zfpLzhdLJj7ee+c38Pku919Ffm/vN4so/+s/30VviXVfwcHI8ovx77bZNvq/2yZ9bhd/sD9+d7yH8J/9jbO7N0X/yP+7Dd/YjR8HH5x5E7lfCy9Bj1lc/i2fJuy/Ox3/D72+Cs8FLlS+yf3MTuZqI7/dl/Zt8BHz8pf82+C9H7mfZbwE+vwn/2l8KX+l7vo/21e331wCfYIe7k3/A/5KXmTzN5GeejJ+sf2eSK9+3V9JPJePqHPgG9Svx64rgWv2sTfzHz8Tkt8Jvwt91uQ9MP9tmHyXnjX7fqL8L/P45+teLR9l3zj509p9z/lPJ+K0M5vynNrlqgf3JsVfyxbJ+A1ez/0T8nK3dcyUFOJJ+Mn+fhZ/kCRTft53CPhPAvuxbRnnyQ5IX8hQ7Jz9kAb5W4Odl3zcXKh9ELyP56R7wNfR+uX62Ne6SV7Mr+/Q17raQqw35v8x5ufiee+bF652PjPu7xf3cn6msv+for7q4ODT7q/j4y3jMefVYfP/C/oeqX4r8Y5Mvyv4HifeJ/y3Alfi/Vnxdyy6f4H8i/g/OuSE+K7DTfXlXQH/F96Oewt+lmWeSP6X+N9knpb+JYB16+p3/zCBv7qXnnnrupw8j/53wXem1FvsNtf6qyf/qwf+hz6nk+Rid0UX3jz4pOr8cD++XfBr8TIBn370F/mvx5ynKc1/xLPUuMr6rGtctyPsJfJD5aTD4HPucT95e+D2KHMfy05bon4C/q3JfBt136Kk4b6um+tfDe5QU4L74PgCdEu0rJJ8Q/iz7NaXf7OtmP7dN3m9IfrZx00L9vOOQ+0f9jZdfyb2v9e1Y/I0Ur3biz1vxu3/u0Yp35fGXPLzk373q+7mpODNcf2X4T9ZFWQ9lvZT8z3bGxcPiRDl6eiXvlBjXl+S7Bl4z+Wjs3zH7f+JX8sleJfdKcDd+3MB46kbfw/DZi36a4TffzfGXs+n/r+Qr8et5xnn8Oufz5TNvk/Mv8fZW9Uobtz3ov7L+s99XGd+T+O+j8Ox/PJN8DPp5VjzqFf/mz2eD77D3ntn3MZ6b4T953lvw/y67XkTO5Hf/rTzv9nSm77zn82j8U7/d6G0E+9bNfRRxs2zaq5f7O5vsX73GP3J/LOeLd9JXvic+NB5m5/uXfuvR22J4FfT31d8Z7NGWXueDp4gPq8hRhn99rbxb0fo169kX8JP7GI+hn3XBC/qfQB/Jx30KnvXr8/xlB79XAO/K9wW52vPjdmDGb86VP0Zvifj0K/yJ3CtLHnTe58BP8q3zzlRtMO9LtTfed8bPE/R5Dzz7dQPoayJ8uv43oVOG/bP/e7PyQfj9Vvlm9avg70Xyt2P3i9AfqF7x/cLcK8z5wXLjZax4VDf7BPDK2o3NfeasG7TvV1KApfF9Hbxa3r+xXugOXs1+F2aeync//bRDpx76yUs9HD9L+NPD8OQDJz84+cIXKc87KQ3pK+ujccrzXkreT3lEed5Pyfs2yc9MvmbyMx+zfh4EnkKfN+e+MfsczT4n6a+O9u3NL9Ff9Lk0+QPGd1uwDZj1ZztxYbXx2VA8yz3Br8W7xfDf+cXP5NtFXO4l/q2jz3/iZ/hrkPc6+FPerxhN33lH4kf8J38o7zfl3aZvtM/7X4+bzx7LPUX02mq/Wf818Hcv/M6ch4rPT8DfND77oz9F/X3JVZP/9GKHufzxkrw/pd6mrAfpdbZ6b4DTkocoPm+l3+wPZr+wm/n2Gt8de4i/3bVfYlz8F//fwrdjnwbkW4i/R9A5XPkT/G0iebdDJ/lv1+BrsPLd8Bf9bqCPZfmO1X4Z/nOuXw+ckPft8L9RvNxKb5+XFOBA7QfoL+umvDcxF3/zCqBUK/bI/eantJ/LDl+DbfB5dPI3yJX3uHJfJfdTfrM+yHtQeSfqxeTr42+h8gPx2Zd+yhq/FynfXvt8Tz7Kvz40ji5kv6xTz0nebIN/t8v35wfkHQb+nfuG+O/O3scmDw2dPvifr7921u9twU7aN8BX1tHhL+vng6xfJ4MzyHtk7n3kXhq95z7niehXQW85+nvSR84Hsr7Lui7rvOn5PjO+cv8y9zGTB7klebvafYrPavibXgCluoPXgXvh90xxeTp4EziMf03Hb196/yz3L7O/S3/JW/xVvzmfHpD9DeMj8Sz5W3n/rRKY99/yHly95Fsm35p+kyeU9+tOI0/er8v96qb4f4fdS6zXyuFzIL3eCA5KHM17BvxqJPgSOU9jn7w/9LT+euJnOPmL88tqFuWZfeF7d6L183G5x4X+6+Sdkfv7+Mr9y4E5LzCPDYb3p7cjyTM0+3HZD4J3MJ80KynAA8A5+NsRv4fTa95JG6v9XTlPzrxP/gfxP1+7ZsZDp+T7wHOvNd8JOS/N98GT5uucU28Bc07dxnfPLezzGXwC/XQzrjYbZ0eKdxuTb8Y+yX+KvZL/1ED/i/X7MDzvKq7A92p2yrlx9lcWlxTgJezwKTzvqObc7wX+mHPC4/Sf75Oj/Z7vlHyffGL8LwQ/BnM+0phe3hUXXkfnl9y/U557x22Tj5D7OcZr8v7eY5/k/+XeVuJl8f2tx603WuB7HP6uUb4rO15IbyOU9879QuU/6q8J++xPP9FH9NTXeiD66k++G8Bt2f9Hfptz0YNzbx3MOWkl8XBB8lfgyY9/OfNW9v1zDg5PXnbysTfmvC775/hOHugv8L/IP4dddtB+ZPrT/nbfV7fRx9N5X0P7ifS1Wb3y9PUGfZ5qvTIq+QHiwQ/6K86f/wKePPrs/+bds9niWUX8tCDvA+gvxkcj/Od93LwPuCDv0CW/QLza27x3CPxZ/SW+v+v3xPnE937of8Aej6N/b+5fJu9HnKjED3dRvmvO55IfTT+PKK9Mnjn0XAn+on5bs1/8dUf+nfnjdN+jWadNEz+X4WM9fvciT/IIcz623vw7iB6mlxRg8ps+JF9zdviKnNfqP+daOc/KuePPytdot2/yC+C/Zv9Kf/dkPR/+yfuS8fgtvcQPvlKedwEHZD5J/hj/qECvb+h3N/G9qvoP0s9g9h2XdVH0ZL/jJ+PqZ3A4/rtrn3ekTqP3vB+1l997qL8k+7n6Pyrrj6yP2Tv3HBqo/5jyWeLlj/k+1D75Kz+xR/JX8j5k3oUcCc/7kIPxvzb+TH+5H/dc3lvhD8cbv7kfmfPdrBebs2N55d/z97wbtzdYG7+537jc/Jh7jrnf2FW8zL3S+WDyFl9hr+QdlEs+Bn6yrs67KMXr6zXWO2vBfJ8/n/wH9BYaJzP53bjYD7/xm/jT1ei/I55vzLsH2UdS/8D4Jf5yfpj4WUH8mIuvDurnfbR76GFp7oXyhx3wmbyo3D9fjt/Hkl8dfeCnc/JytfvYeMn7N12Nt7znlv3Ve/w+Asz9+7yP1ybr+6L38qrz57wPNlf/74DZV8h+Qi34VvJejr+9sk9HH+cpz3uluTeb90wPpr+l2l+E70X6vT3jI/Mdu12ZdSP770Se+Ef8pa3yduJWM3FjXfZn2PcT/f2ee1v6mYXfPY2fmuBR/CHvDy1BP+fP4/nZLuyzXlyvbf1YC5xCT2XJX19/iTd536AfOlmXZp2a9WnydpKvk/e5m6M307jO+yN5jyTvh+5hvp2b/B/rxTvVP6akAMfh6xb2n0RfDcW1TsnL4UfN0H9Uu0n8t0ryMPA/mb7eUn4a/v7S//+tL8gzK/fj6D/5HHONg7fBzIfVtN89++FZ/+V+ivl8FjgbrJb9X/pe/j/Wl8flXh9YK/tB+N2P/LtmfQwfQP525KwHfzb5j1mfqT9Hf8mHz/vQH4vf29PHieq/m/Nd8+fQ7FfQ/xTy5b3Nz5KvzI45v3skeef85GD2mYCfGXlXEB8Ntd+P/J3zbkwJvsFF2l9uPhrJHslTqKL/u43/MdZZNXMvPfdX8z0D38ReDfO+SPLyydkX3jb3A9T/Ku97oNcaf/n/FB+JL1lv9ydf/Dn+HX8fxD4NrH/y7lhD+K74e8+6OPknxfePK4s3yStMnmHev/iDXX7D/zHZ79F/9l+y73k2ebPP04pc5envB/It4B+JtyepX0f5gMxv4uo51k2byZfzx7w3cETiIXpl8v6OesnHTL5m1u+dzB89/V6JPHmvZUd4e/zXYYcm6C0oKcDZ6nWk3yszvxsfLfF5Ff7fR38V/Bp8n8of++P/IfiN5o0fxKcO+Hiff9+Gn/q5d5b7rXl/IO92sedh6h2V+2/iXNYb+f8e59DfztlP4K+94EPobS7+GoI7areHeHMZ/ykNTmKvq8nf2u/Jj1uE/0YlBbgF3CgevIR+Z/6R9x3K5/5J8nXoJfkp9fWT+Jv3dP7x+9ngytzH4O8z9f8KOBT/uVeY+0jF9wur5T03/PZEt2z2R9Bbyf7Hk+8idF9U/gG/mmQ+7E7OZubTTX7fDJbOfm/219BL/nre13u4AEqNAZeDldDPeXnu5ebd1dyzbCRubuI3J/GjA/KeROIlvRafj+b+Ru5tNM3+q/5+pa+cL9QnT84ZypUUYP6vR95Dnaif5KPmu2XXrAO0H2Y+fhzdvcWDvAf8kPK8a1D83sHB+su7Lj9kPzn5/8bDteLA+Nx3z/sP7BX7NILn/toF9NEFLP6+y/n7auM85/AV6TfnYk8n3wufOR97J+9Gk2c0PY8Fk68wjJ/lPCrnT9eSvyw6Gfe553eQ+aUF2Bw8Dn+b4d2yv5P3V/R/ufE9x/q9j3jRlJw3574Xf74q697kxxdAqVvBb8Cc51+Q90DYbVFJAb6Q/B3y5F5J7pnkfkkn/pD3N/Iexxx8XCNe789et8HrFt2/n4qPTeL0Ptn/znqbPt7POpB/tOVPHfOdar1fUb2jkheVfbvsW+R+Gv7rWl99aL8u/pX1Q9YN7ye/iny/478d/7wv59jJD/f79egX++9/1R9Dr+vIOTfvE+K7hvVJHfX70t/wvC+lXfI9c999BH2s5j9Hm093zPqQXMfQUwfw59x/5387oX+pdqPzfh/7PJe8PO1y/jeFf96EnyZ5Jyjvt+n//76Xzc8XoP9F+FJ+CHpXZT4D3wRfUd5K+/yfkS74+4yeD9H/Qngl5Xfk/oTyzvRVnt7XwN9WPsy4GQ4W3/fOe+t5fz37aZmfD8/3kHVE/l/Sndo9a92Uc9acr16f++Dsn//XtVB8yP9v6cF+W9m/Kngq+h8l3wi95KEm/3RXcS/v7C+mp7yv/zP7zck5Zfad8TNGu7nk/5V+V2jfzHwzinwb2Wsn/Uzw+3L4k/Dch8+7IXkvJO+JZJ2xs/nkJXZ5GZysfv5fV/6PVynjJXmgC/lj/o/AEdrl/wdM45/nkmtBvjeSf5z3vbPfrZ+8Vz0Z/SvBO3KPDRzCnv2S31GUf7dW/+3MI/m/FVlf5v9a5Pf8v4sz874G/WRfdQA/zv+Lyb5Y7gV8qd/sz5TKvh44lb1zvzffnzWLvkPz/Tkh51fo/qHeHnk/mL8fyi41+W93+vhEfD0MnWqRO+er4lPeu1nb8N98TKS3t8TZ3+Ez0S/e32ivn6Hw39g3+5rZ58z3a/IyLgOTr5E8jRrmm4fZ5y74hznf40/va9cfbKb8dfZ/m/0alBTgE7lvY3zGTuvQm5f7ETkfy/2w5GvQ/7X0lzzwqslbVd64aH97Lvw4esz7GXk34zh85vy4K/2tpufc50x+bvZHt0l+sXrZH13CPzZol/eVxmvfNvcK6Ct5tPm+y73WIXnPoeh+63Dj5a/cwzA+rqKnU+Dd1c95SM4/zjF+F1kHPyR+3az9cPLn3d9zowf+1Na6Kvtj3/D/fnnvK/dZwKHkf4R+s99don3y/bN/nfOwdeBa8CH6+T77N+q3QGdf/e9v/OX/u9Qp+j8v2e/KPlj+D03+32beK0p+WXv6T/5L3sM7PXk3Re/jnan/W8TnNfDcn5/BD4/Uz8a8f5v8zORboNex6J20I/HdEZ7vh47a535w7gU/mLwT5aPy/jF9PIOPfY3PP5PXnXysovvnOX+vqF1d/OZ+0w3WC3/yiwpg/h9M8mFzHyP5svk+uDjj3e8HJQ9c+X38d2TyQMB/8j5A3t8ld8Wi921n8ctHcz6jft63zbuWec8y9zazPzWLXfuKY+fn/1zkPr7vjfwf2DPAvJ+T/xdxhfpfZf8492vFw17oXgnm/wJelPd0yFHBOM764Xbz9sXx89zvTH5vvtvJl/tSOX84uOi7Md+R+X4c5Htoc86hS+B5zwjM93zOabO+TD548sSzPz2N/ncTL94Wl3bf6d98dqKPDeJcm+C5L5P/pwZujB6zvkpeFj6zz5H38+bRay31h4t3uZ9YfC8x65GsP/KufX2/J+/plZzPVfx3u4/MY6Xxk++F5sZRviNqJL+KPIvEkRVg3h3slftiOf9EvxR58v+Ec49nGr7y/Vsq/9eEPraBv5r7f7k/nP3pov32k9gl5+4nwzP/vM4vB+JnZs6Rki+YeyTgCewxLu87FJ0fHk6fOUfcz3g4tugefO6/l8VPmdyDAjfk/CX/PyPvj8KT972L3/P90NF4WwvP/eXT6Dfn+bn/cS95OmQf2Xok92XG5F0Z+nkQnu+hfvz6hrwPh/8X+VPyYZPXVZzvdSR95V261vD837DP+W/iXvPc/wbv5T+Tk0eY9zzQ38G65Et2vTHn+UX53330f2zOYZRPFl//Q6+Zp9bTX+uy/5Zvf3ju013B3pf4fTr4hH7y/z3Oo6/8f4/8v48j6OMP88qG7G/l/pL1afG7yjnf+Ju9zidf/v/btvjfg/9ego+v1HsT/1X5xc7gI8bzkfQ8Tzxsgc8P4CPxn/PCpkXvZ23A37PGx5bkrQVm/Ws9swYcBeZ9qh/Y5SLwQjDvVdxcUoBLxaVl4Prky1mfZP9iiHbZXxnCXxtnPxFeJnEQvzXBNuzTPPe3jc9a4DLj41flS+GDDvj373l/50z95v965jw275HVp796YPb/sh/4/wBlLhv5eJx13XnU18P7P/A2ZSuVNaI7ikTJvqWNFmsioc0WpRBtKEuFUmm1ZUsUKaEsUSTZigrZK4VPZCtJiEK/c37vx/Nzzud9zvf+5zrznplrn2vmNXPN3K13KPX//84Ad965AB+pW4C19irAuQcU4Hb1C3B9gwJsvV8Bvl6jAJ/avwAf1W6E/qfsW4DH1CnAfvUKcOueBXjyIQXYoVoBPnloAT4P3+XoH3BQAbY/rAA37FaAx8LXV/sV+j++XQGO8fsN+P4M/L0cObbRXnkP8ncrgFLLydcSbEO+1yoX4NE7FuDbys/g98GKBdgY31V2KcDz8HvpTgXYRft31ffF/9gDC/Aw/AyvTV715ehrnP5PlhTgkoPxsXsB/kj+V6oX4Ab0h+J7CPgxes/qP3zbAjyLvDvT20L6P6VCAb4I/xXkvRh/J29fgFP0a6X8jv7NyxfgCvRPVG6F/gR436O/r8n3L34+3LsAx9JDvVoFeKf6ruRtwE92UR5B/ouVOwc//Vbijy+ULcAq4Kwyytp3xN918N2k/3T056A7mF7X8/+7yf8hefaG5wPlq+jr/KoFOLNSAd4AzzD1t/K3qfxjIjzD8XMIv2hMn7vh70T9l9UswH3RXa5cA5+l9imAKX5/AtxC/m7G96+7FuAG8C98fK1+nXG+HpyCnyb4bww2Aifhf5V4tBJ80PiYjn5T/vYEfhsrX0T/K+nvS7CXdiv551Z8zsLPjfqdyT6l6esvet9Kn2/T9+fG7zx4u+C/t/rf/H4J/J/zz8uVt+W/x/PD7ZQ3oNMVf/fA05Lcd+Ez8eoh8Stxa1v2bab/v8ql4W1H/rns+TK8B6rfU/sh+P2M/G+DT2m/RHx9D1wMXgtPL3LVxMfH6J5Pv48aV5fA10i7Y9RPKl2AF4EDwObkv4F9ltPnEWB3/tNYXLmQ/poot9HuXvHrA/THKdfG50x+N5Bd15FvN/HhcPrbxjxYHpyH/sPadYVvFP3dpHxR5k/tq+OjJvnGmjcfNA7n7VGAVdnnRPI/Sb7D6P1u9U3J+43yNPptiP43ynuAQ9G9XvsLoj/wAPPBcPTe0u85cp6cuAr/ZvGgKb/+kRyP4HM2//iNHI357+Ho1w+/7FWX/h7nH//hn+XVD2K/3dSPMJ/sx34jlR+F9wL9O5JnV/RnZD2Cr+fV1wSfxN9g/W/Qrzy5qpG/qvluGr1eoLxMeYD42J5++ivfis4P4n5LcaYF+CT5BotrrfH5TsX/lb+j35/A7+f861P1E/jvJvxXoZcX6XMLf+8u7v6tXJadO5p3O4Fz+HM59Zvo/Tv+cz39nIaP5uRrAZ7Kvybj4wX2nAWWxefeYCvj42b6vI2/PU2+Z9jnAvo8H/026iuKmwPAUeLpLfD3g39ySQF2sP47G74K9DuUvJ/7fSN+rjBeF+LrXXCF+uPo9Ql6mgI2h+dP9P4Ch9HvSZlXyPOAcXErflpFH8r3q79Y+1PUd49/438du49Q38h3wT3scSo/2o7+RvO3I6sU4BjlplmvG+//4rc5/MfC8zh59+fXXen9CePnC/FhLbgSvE7/4dZXVej5Af7clrzV+NWr+NlDeaj+y8lfW/vbtJtOvu3Ub8XXCvAVcjzML2eAE8C/1H9KH43gP9d8soW+G+D7IuPhWPA68aeSfrvR/zfqj6Ofu+jvBX40Hv919G+hvAa9bbPe0/9A+OqCndBZjf8FxnUF/ncH/b/Inr3gH5h5S/8d0Xs78zN+7oG3Bf1uS58jwA/x93XW0+L1YvXXKo9lvxbGQ0twFD7noPMo/Z8INgfrw1c16xLt1+L3G/7/s7i1B3nbKu+D/i/iywnkvxLcSf+d+PUcfncBmPXlGPPBz+ifQ5+fZL2Q9Sc/ybp7RdYfxl0FfrcN+GPmMfJeh+5E8bseea60Hh9J7z2UD9Z/R/NL9BH9jCH/dPruh/+sP47B/1J4O6D3gXJP9RW1v4w8PaJf+nmLv23Bz3/yvUUPs/G3Gf4byfe9cXMVfLsorzW/7ITf8dp/iY9Z9FQH/QElBfimcTAfbI/fv7T/AKwEbzP1ZfxeFjwW/X/w8wh5epLnbHzsRb/fm5de1+4f4/23+J9+5xgv7/LHcfS7iP42gVm3/4HPu9G7T//L2LMM+ePf8ev4+Un5vqX/u+h/IH//gnyLjNf78V8Gndfx14j//5D9EvK1RP9F/viB/u3JPTPrU3o9V/zLeMv4upK+5/v9Yng2ss/++r/Bv37Meop+Nur/JvleVP959q/gy3fjvkXfj5vhPVr7n+H5SP0Ccau0fs2Nr7n4e934nUvvp6E3Vf32xvt24AD19ennUfgPNO5+Ml8Oga8eez/t99Poe5b6vdljB/w9Cf8E+BuZz/Kd+zV/7UJ/J7Dr0+q/tZ5ayv6/kLeP9gu1uxR+7JSaAv4FXkZ/k62bHwePpe+H6OdZ67my+Nqi3Ik96pLnbP36Zx2tfjn/v0m7KzNP4f9y9ukGliXHSPqa5/fXwDfBuuSbIK6fRy/N4f8DLGe9OIL/3oGP3dAvHs8Z51PUTyD3feTOOuNW7V9l31PQW2Y8bKvdVfxnO3xWs577iF1vxvdl7LZEeSN8G7UfAt5jP/JP9VOtLy8XB/5AfwP7jTa/LdTuDfwO0L+NeHwm2Besyz/W0Vc98vRmz5fY90B+fwpYFxxAP92MmzL4vkz5HPbdID6sB3vjs6n6bugvhm8MPLXY/yffewvIcz+H76r9Hvh8hz7qwXcm+x5Db+fS0yD6OVj719j/bvF4rvG6QXm+9oP51y3gJvSni3dPgf3xeST5htuPOVX7+5SXoD8/+1va74j/k8h/qXJz5SlF+yNDsr/h91L8rHbW1/qXxldj5Vb6P2c8tLXPtB19Z337r/3cV8CXtauLzjb0URY8BR+V8PsK+Trh81D+96L6Pvz5beuMztq9pP4r/pjv7mXsXQf/L+RcAN1ZyhP59xclBdie/B8p3w7PmeiennhvnjiEfdbwt2OM22+V5+DndP56kPIgduyD/u3m9zf8nvX0OvxvQ88v42cD+Y/P+Nb/K/0yz/TK9w2/fp/c16sfj34D+q9Mn0Ph37do/3Ax/Nk/bKL+G+0b0t+V7PUJOm/Af4L6Ndp/lPmavrYlX5nse5Mv67tX2K+6/jXwe5LyHP3P1X4/+Dux1/XgUPVr6PVQ9qnBfmPVD8v3K7tv1P4b8DX81UG/kXYnk3Nh0f5i9hOvNw9Uhr8fu2Rfphd/3gW+asZNa3xNEx8XsO8h1m0PG2/PZL2OXk1y7wvWAuvqv0Rc6slP3hXP5ulftaQAz8PPauVy+r9kPp4O/mG8TFU/Er3x9DZKuRn7ZL/vOXKfjc556I/G31Ty7Qj/tKyX9KtDf/P4yaP6txHf94r/4LMM+k+bV5+wjnsMPEj9Lll/46MlOi3gr2G+e9XvNZWf5o8T8dmO/B/wh0nZX0XvTuuEs82Pe9HfFvb8B/wbbECeQ42vU+jxMOVf8bcK/XzX/ISvCfCfwd6HmH9PV/5Bu7L869mic6Q56B8jXn+P/zv9vjr75eaP6eCT4Ff0sZw/f5F1DP+4G99TwI70W5b+Pjb+7rQuuy37kPA2yvqavY8HG4LjyT+N33eHvwM9tsz5Br1VN/7K08tk9Jvi52zt7888yn9uKYBSPfnFMdajTdQfpP0meD+Gry3879PH/7VPNQp/64ybN/HxBnwZVxlnq+HN+Mr3Rc6pflV/HP+8g7+9ww5T2X9Vzs/UPwZOAWvrfw3/6AluTZyi/5olBVgCVuP/vfBXhz93R+87esx8tdC6o4P6a6w/Hsv5g/nlbfF9Bj9tjP6KrAeTb5HzL/zn/DDnhTfz74Xw5zwz55s575wLzwrz4aqcF2e/OOeH4stF+Q5k5xrwDirBH7kX8J+u6peh0yr7D/DnfD7zTeahy8mR+aic33Oedx05pitfrP4W5Vrs8RX+k+/wZM7H+XMD+su59E343UTON/GX/IrkU8xQ3pZ+bzT/9c08QJ+7wveZ+F0anM9/dlP/GHojwdnmg2r00NL42lH8SV5A7HUnvx1Bj6OVf4M/643KylmHTNZ/q7jaBf8jjN+vs68M78lZ9/HTt+h3RkkBTqTnf7I/T79z2Ke3+n7GV3X1b8P7HXx3Kz+hfn6+j+hjoPHyIf6HaZ916V0554Bvovj5adap6D8Gfyd+21//jsrnw99ZPL4QXEg//xHPbmSvm8AbwO3Qf4g+LjKvDKC/kfzwFO1PNj/kXOhD8l4uXjzCrjkX+jjni/Q7Hr/RV/TTFL2cD1QoOh84h/8PI1/2aY9X/w4590EvftBZu+b8JvlPp/On7B/fqn1N8k7OeQ39LyJ/U/xdoH/G52rj4oDkL2We1f4I8fKTrE99/+V8cix7jcF/1jdjlV+izx3Q65/zK+Xe+d4k32XG8Tj1v/LH0fxmFPg1vDnHPB3enHMOpL/ZxkVt+I/AXxP8T7H+Ogne9eLr3fCeIy605eeL2ONh4/epAijVUfkodPdgn13Qa5r4iO/e6PfL/i04H72cD5WIDxXA8uAv8K0XH2/kX4dnXYD+F/xzQs4Hsg+lvrr2P6K3gh6S/9KDHrZLPoZ1QvaXB/H3a7SryD9OQ68dfZ6Obtvsx7HLXsl/Mq+sKynAYeRbzZ6b6f8m/r0peUT6tcBHK/PHX+q/5z/fwduEPrIvMFFceNc6soZxMIO8WX/lPCHrrnnkL9F/of5b0J9JvmV+r46Pquj/wB8fIv+Nxtn07Beyx0PkXc/vyqE/jr4bWT80BIepH4n/l42n99Ne+RP2+Qa/a4zDb5X7kvfcovX8Ivb/KPsL+D8Tvr7icPnsn/L/89A/Dp0TEi/gG4TOheBn9DOZ3R8lfxv+3gG+O/HbnV6v5wdHwbM/+uPyvZK8vIxPettFHJsFXov/+4zHxuAGfGR/50jx/R3lH/jPAvxvYM/s464Am/OfC42HTuAu9HgI+lP4z5n8rBSY8+2mvodXiOPH08v1+g/Hd31wBPgM/o42zq7NeTx7bFXuR97kFV5OPwszPsSt98APwC/wMYl/dBdXLsp+B/33Z7/x4nDb5NVmfY7u1eat9uAI8ie/NXmExftbdYr2j08EB8N/WdH30YnJ78FHzjNe1a+ddsm/bandWvAE7ZO/fW9JAR6Pj/d3/V9+ahrfPdllFr2t1L+/uPmxfg+An+LzAHrdH+wpHh6ZfRB0D9M++Vxj8n2G39boXazdHfR7n/F8L9jNODsx+3T0cSB5bk8+l3KPfF+Dyff+Rr9vjI+P+MmHYCP1/fE7ALwZ7EHfrylPM/+9mPyxfK+gmzyKpfQ7OPmjye9RfsE68Dv6yL74NPqoon32vw7kv8nT6UWe5OkkfybxL3k0yZ95mt3LZN5Rzv7lXezxhPIw+n2L/drS1wDtRhtHb+H3LfTHs9fbysmXKBEvH+Q/38H3h/bz+Nul+J6v/Cf8Zxt39cD6YPKpl4GP59xM/K2q/yz+/RK4Fl/7q3/TfvMU8HzwLO3mwb8vfzg9413/yiUFGHvlvCPnG0fgJ/ciupGzHv3m/DDnhs+IszP0b+P3tuzzCb7OQP9p7cvAO5yfJr98RvYz4xfsM0T/qez5ODgEvfnZfzcea7NbzomvhT/5k1XAq6xnbkeveLxtIkePnM/i/xPz0E3w3oe/EeT5kB1eMh4357wbP60yL+H/jdifv+yYfQ/+n3XpbPGsnfF1Drg7ProZD8mfOJQd+8HfnT4/peeryTM490/MpznXe0G8yPle9v22x/8O4E/0s8y4PQT/S/ExLXmA/Dr7BdlPOIn9muR8jjzNs7+U+QR/G+j/HvDGnJ+ZD/MdVxs/v6N/NfvmO24H/OQ8I+uzvugdj7/X4F+Z/BrtL4U/68ucz+Rc5jx6zfnMA9YP2T+fULR//iL+mhpnJ4IZlxnPb8K7XfIn2LdWvgP9nnsfU3J+xe6TwWFF93EO5T9P516P309i36v4z4L4j/I/6Mzgn8+Ch9Hf39Ff8rnobw37ds75ivVUOX5bKXmg2h8nLvdWfqKkAH9Qfgv/o5TfhH8s/j8T3yfjoxN9D2a/LfzmXHocpbwNPSxi1/o5D/B7LfpfaP/kD/uw67K+Q/8g8eEw/U5gpyXs04e8y7U7TZwqS46a/LY9vAN8R5VEf+zyH/0fwn/y/vqaL74Fj873KnzN0T8J3A+8lJ8OhO8hdrpJ+Qty7Ay2yfcmOZ/Pfq94tZh/NFDeO/l9+X4l10z+/wj5y8F/O7x/onOk/gvTjv2Tx/6S9jnfyXlOznf+UG5dUoDD4Xs24yj5QcbLnuL6JOUP+cvv/K9r8pEzP+R80XhYDC4CL899PPw8K66Uh/9B/nUz/5+Ez0XgHzknNJ9ln6mdcvabzuLv2Z+5QTnnL3ON+73o72h4bifPf/jNILA3mPzQc+g7eZvJ48z9gm34zeqc32bfH6wsnhzAj6vCc6j+x9LXDvi+L/MsPe8snrdQ3xxsTT+fJN5kPzH5zUXnG7/Al/ON1tpfxh+XGIdjlP+hp9PY7ejcP1B+iP7WWp8cqf15ycPNPrv2Jeq/UL4AP9XQe0v9dfBdi/8a/DJ502PFjwv1fxq+iso3kD/n49n/+Bdf3xbthzzFv7NvGT+bn/xd/nAH+L31TG/wT/5xCL12T/4B+7emtzXsf5V+yW8fiP4D/HV7vyf/r24JuY2TA5XP0P5dcTn72dnfTn5G8X74NOuL5GdsFZ+yb1S8nzSLXOP5yzM5Z8LfdPE0eQd/JW9QffLz12d/lH6Sf/VA4ox2ySfM+uFL+npVu1XKk5IfS69n5n6j8j3qn+APl+YeEzptk7+R/afcuzHfVaafrId6g13BrJvO/D/uP43X/yd0j835DTrZ196LX26Cb2/ls/n/A8b7KHb61zwyEP/vGbcz9DvL+LmLvn9K/kXiCTrt8Pe98fRj0T519qdnip8zwBP8vgj+3HvLPbjOYO6/jbHef1+8ynx+D/5r8+vvzdu5b5V8r7/If3juS9Hjtfo/ad2Z/Z0PzDe5X/av9XVt8/oi8Xqo9lXhy/2Obdizgv5/hy/ttyjfwD4noP+eft3p5Rj6zbrgSnRaxv7w535dOfVV6W0P/Y8wHuux66fqu6HzI36qss/+5pPxOefK/Zjcv6PXnA/1QH9NzruLzu/bkus1+jkY/6Pjn+w3HN5q5K2b7+XkcxSdOz0CfpT9FuWcQ01Uzjhb5/f66L+M/pfJG6KPZdrnvYTB9LEy98rAn8jzm3Vl8o2a0tdG9aXEh7PUl1E+l3wNi9bvWc/ne68T/cZuscux+X5V/zz5cq9udtH8t1/u9RifmQ9zn/Hw5L/m/q3+1e0rPChufJT7RMbPJvPBkcbJhKJ9gDLG31iwgd+X8Y/kQyRPInkR26tfLF7XVP9D1uH43ZJ7NvCWjh+p/4pfn8tuNxZAqS/9Xkf/L9HdGZ3kN8+nj7vhf0X9ZvgvMX5GwT+UnEu0e9j4G4nOZv6d87BG2j+uXSV6rqJ94uax4vTMojj6Ve5V43938r+W82L8b86+lvIk9LfPeTm4LViPH+/JH6/AX/Wcv2Z88I+tJQWYe60H5P619fpsfG5i79xvrIWvxOcN2Z8p8q8N/Ct+Fv96ln9UTH619dJA/Of8Nue1Ob8dpX+l3LvEd0f+1S3xx/jK+jDnJ/XUDzFfPGieqiieV1JfyrpmEnuVVq6S85GifJrcpz1D/Z786Hztbsg9/az/2CH3WXLOvTv9/8XeI8xfpbK+TX67+Ja8vHw35Dzvdfp/lN4rgfHfReq7wHO4dcRfuedO7tzvaUe+uepz3p3z76rJV8HHOfDdDC5jv3O13zfvH4DJ96iQ90bYo634dyp7zWX3E9G/RfusT39F/0f6yr569tmzv74rupk/F6OfOP0We42Ef6zyC9Gv9c7Q3CfUr7z6WvHXkgIcDdZhr0vhmwmOAq/Iuwj4Ls5fzHlMzml2zn0M64RH0G+e+wz0OM54bqH9KeLZQvhr4LcC/dxqXE5JfM+7A+o38c8rEh+V59L/QcZjX3FpsPmqOvoHa49MqdXgN374HN93kOMW+OL/ZdntHN91u9PblUX5t+OSv1r0/sQP6P+Ye5/sPFX/DvT/AfnuzDoA/S/5ywf8qlnO5bL/q3/y/bJfnP3hF8k7x7zRR7kEf32Sz80+VysfhR5xSlUwPpArNZMecq/z9tzL0iD3OytbD5/EL6bQe3v1R5H3JXq5jR1PwH/2nzpoX4ec2X+aBv9adt+Y+4T0l32/ivl+NX7PUj+f/T/F/8fwreCH++b9FfU78f8v1I8iT+6vX4beOfA3Lrpfl/t2uV+Xc8VmReeKua99i+/F98XVJWBj+nmYvGeAK/F/FX1mX7Zm4iV62Z/N/Fqc/3lI7J+8DvjmwV+RfF3ofY757WL8ltU+42kQeETx/CK+tWf3Q/nZKfiea33RRPkV5YOy38Qe6zhq7sGdkfspxu3S5Ntrn/sZvZUb4msn89Tv2l9O/pwXN1TuTT8P4P9D8rU2fi7gDyX0ch67bTUfvs7eXXK/HP5D8N8Df7fh/0XtByiP5iefiE/fqf805xC5Z8Ie14Nt1B+M3rf0XcKOC8iT+w3rxZOfwc/If4v+G5NvTm/57l8IDmXXjujnvYPs71+I79/8fjj8yS/ajby7guXF2/PJ11X5aHJ9zo7V0b/dfFdJHDneeM38mnk583Hm63w/5T7RP+TdPfcC1U9i55z7DFDupL4/+18PDsh+Rc5Zsx8GvgfmHDL3vzfCm/vfed+gj/h1Td7X4odX5H6b+bYHPa1SzjtE8bcBuR/InvG/3BtI3lpxPtut+Mu7XvmOz/7BUvU74r9+7v3RT0985bs//fP9v8b+41385zmwKf/pm/cPwJHk+lJ9Hf53AHgguA9+825Y7n/nnbu8b/ccf8l3RL4bfuYPXfhLtbxfknzvjA98Vc93uPJDmS/En67gK8bZ4fR0nnVJvi/6i7/bZH4yflaBTcm/F/0+Bd+j6vfP/j79PovudPBtdtgd/v35y2cFUOpqsIN4lv3GJeTL98ZO8Ce/IvHz8qL4+RE8JfxqiPF6Kfv9yl5j4NlQlB+2XvlYelpsHOyV+/rkGmEddSiY9y9z3lWavoeQJ/sbu1g3vWt++QC+A/Dfjz1uME7mi5+tyPmudd9C8E3jvx56HayPD6G/5GOswv9h5rsjwOV+H8k+Zxrv9envUPAA/tWbftbQT9bJWR/nfYzb4Mu7GEfT/8X4qkZfJeqTv3Aufz7MOPos90XU30LuQ3Ofl56aZf0A/87k6gL/f/B3R/LTSgpwlnlgHXwN6bu1eex0sCv7dTMe72X372LPvCeYcxv2vC7vcSm30z/z2WjxOeezextPByafid3/zvsA/OninJcnPuk/F74D+fMryoPxP9R4mJrvN/ia5n0W+vg4+oP/96zPxa3Rfr9WuzvzfZXzqXxv0/uH6i83PnrRV87h7lI/nL8tyT0F5XbofZX3H/hBE+N9MT5e5j+z824QWCHfQezRCV8V8VE++5HoDlSfdx+zv3Ey/jvlnhy8Of/YaN3zS96JSL4f+8ymvwnsl/tArfRfyx7Z9yneD3og+VPGWVVwLTnW5byOvrbQT853GtDbNuDorFPy/oi49KI43YJeK+Iv4+k18P7kq6l/yu9L4z/4r5T8MnxdpJxztmH0+y75j8u6J+dR+Ct+jzbv1L6gvFr83EpPg8B8/15gfO2We0bGb/JPXqXP54374Yl35ByX9Qy+c+/1Evxt0O5m5bwf+w/6zRLP8l0NngpPzs0nWQd0VJ/1Rd5xqZLzGvopm/nZfNU++eBZP7PPTehUhmdm9vvxd4X4eCW42ng7HP1e8I7Qvim/zvlG9BH9zMh7oPjrg96buU+o/bbw3WG8VCXHDfz5Qe1b5dwT/uL3Aerw36Hk28v8d17yg8TfzuJCQ/RzP2a++PctOr/mnQ34c798CX3knvl/75eTrw36o8C8f9uePt7Id6940w2+v/D/M9hM/L5G/4u1P9W8/6D56pO8G0W+nJ/mPDXfUa/W/t/2XcClic/iQrXk6dPzntn/IO9geDso53xieb7r8PE5OIZ8dbV/AJ0G9LGAnnc17pJ/s4ffP8JnL+Mz++9PKY9Mvir6//LTmezfDn8531lDj3PwkfOet9Vvzz451+jCP+7K+UDRuxcTkx+c+zvid97rfER93v8qT795/yvvgbWmr5wL5v30nA+elnukysmfWMZ+yZ94PPvz2i9X/6b4MhX8nH9tJedlpfCF/kjl2vDtw17r2ae/cm/2+Yw+k2eZ/NbkWZ4rrtxgfhkA5n7zMvH2ffpfrtyCHxxs3+9WfnSU8h7kzPvv/+SdiqJ3lLPey/rv0aL13zD+dwK8OxhHtcDfi85fcx6b89e67J18lCrgLsbRLvTdlP7fyr058HXzURN+nO//vDuW+Hgl/zkZXMpeDY2Hjn5vD+ad2FP502zx5V1y7Uf/R9P3RUXzdd5vGQ//KO1ez/1l7ccXQKke4K9gG/2vp58j4O3C72bnfA9fd2R/EN7c52omvtYrKcAGYOXcY6Xfpfr1hX+j8fsrP8l9qNyTGoW/Sfj7nr4vMU8cpX6O8boE/rxnPCTfO/Rdml72B3M/IPPY2ryPkPsOeX+g6D2U0/HxGvtckX1NePqidz75D6e/7B9lPyn7R9N8H87JuoP/3wp/3g87Fx9zlfN+WPG6f5HypfTRXfvv0P2Xv/TQPt/fx+qX7+430P/U+Lsv7/Ipd8s7UgXw3/zJ3HfN/P09uZJn2Ic9k/+yQlzYBf2u9JT3WYr/f8JtuYcMX3/xK++8DVDOO2+/4ns1uJi8yV85Xfuso09VzvdpqdD3fZZ9jOxfHFa079CgaP/hFv66D/6OtI7M99xNxk/yYsfjO++z9oDvLXH5CuVquf8O31X4fzXvsOmfvLJV/K34fe28p5z3lfNeX95XfozeXgaLz78vyPsW5Mj/HTiffgaZfwbT+0DlvM/9KP/P+3r5fwp5Xy/3XJugWyd+S56O6OY+Rv7/w0Hq25gP8w5ZD/Nfe/L+XFKAq/HRSv+8X9tV/Mr981H0k/vnjdB/jR3y3n/e999oXkn8SzxM/FsCX/Lmk0ef/PkGuZdj3PUE815QZfirgH/nnfzky+Y9LPh6F/H/kvmnBvn3AYeR/8Lc++L/1cDsW/SBrwT+lehl/2HvvN9bNA/8TN4vrSt6sstG9p+U/QDxIevJrDejn/bwzyRvbe3yPkTb5MfRS7/kSeb9QvWTM69lXsbfOcZdu6J76XlP+TVy9devPDu8w755Z/1M+Kv4/eTcN8P398mn1u7B7D+xf/Ku91FO/vXz/C7v7T1hvZL8wxWZl/LunN/zPlu+v/Ld1U858fuZ7FvQUz96yfxe/B5F4nzyx58t+i6IPbPPnvyANTk/xm/yA4r3m5Knk/eZ7sHv7eJrvjeW5v2OrO/B5cnnzH5nSQF+ne9ofpL3hYYaD2Xw+zQ9vsne2Q9oot00/pD9gTPhzf+BKP7/D2XNL/l/DdON76b8a6x4cjg+8x5h3jHfT79GWY+y02Z6eiPvBhlnVfU7KPcts/9knVC8n5v938/zHQlmP3huzqPw3R38Rf3xuXfATy8DX8/60LzSENwCvqp+gfhdCb4+7Hab+pnW+3mH+0lw59zjF7+SV1dGuYH6fvSV+zydwbw/fWjew8BHZ/72NP1eQ79Nrfs+pcfP8o4Hv78m+/Bg4vxMeCeCub8xi5/MEWcfQO9G5avV72rcdMbHl7kHkO8H/j7Ld9gQ5Zxf5/8j5P9P5P9RJM/2DfraNd9j/OEJ/pP/R5H/m5D/V5F83FX00T3viwTiL3E933W9zB85f8v5xM700g4f//2+yXv/uddVdD8t+Sql9auI70vEj6vtR7S07v6Nf+b/OCzlT7+JQyXw5/9CHMnuR4Glsj+J35n0ukr/EWD+n9gR6H2T9Sv9Jl/wy+RL4jvvS75Pj3+LO8flPrr+eQ827wfk3YBmeadP/T/8528w/58n/6+nonnvorzTo1w/73Hk3Z3klfGD/P+j3FvLPbbfwOWRX/w7Esz7kuPYtxW+ypgnTlHO98wC4+FJcbKy8gx87Q72pbdx4vBzymeJN7/C/zP6W7KOxWf+v0nyM1+mz6X0nXsq+f8R0/h33l2dqP298OX/AxXf9+iYdZH5IecNPekj73hm/T2dPS5MPIid+Mc19N9Pu83GZ/KsW9JPCzAPguf/2Vzr5wtz31o5/58v+xPZlziKv2d/Iu8D/2L9nXeCs175Hd3n2O8P5ZNzvxDdvAu+knx3w/+GuPaYuLYTmDz4xfx/ETg157fZ/4W/R1He2JC8/1G075R4lfi0yXjZDI4kV+b30zLu6aeiOHE//eX7tyF8yVfN9+//lVf+k/6d+euL/G4tOveoP52+LqCP2/hTB+0Xkzv5ZL34TfK7v815B3z3alcr62P0838m7sZ/3kNMPteD+EpeV6fc/yZXtdwLZvfyyQ+hv/X43BneeeAP/KuW+H2i+PIz/FvU/8nv8//gsj7Yg/73zH08fjIt7+lZzx2cfrnPjd+j+O3ckgK8X/nSjFNyX8cv7qLXvDee/zewnfrv8Nk478cZX83AVcbXY7Ff8tBznoKvZ/Q/kv6/xc/RyhvUJ98n+T95PzTvV1VKPkHOJdl3gfobld82rtbQ3yc5j7E+TB7SU8rJR7oCvUH0P9P6o07eJyvaf85+dFXjsyG8b7DXjdkX4medc0/C79mvyP7EbiXkyv6qdhfnfIye8y5mn6L3mQcVQKnJ4MPsuRn+m3KfHjwDve3he8j80RqfN/Lj7Ec+mvewcx8Af6vg3898u4r/nK7+5NxPzvpHfe6DJ//lM+uB0/y+Mnnd+g/MehlfY7IuUn8wu00Ec3/jiOwfFkCpnuBKcCt58r5sDXLmHmvur2a/MN+V3xfFo7r84l7x7Sr+k/dkOmhfMXoyPuehexC+V+e8QPlDesh7tnnfdlbR+7Z7iy8nZn8q3+PKeR8pefbF+fXJq8j3bfIt3ld/vfrv6esL423HvL+ifd5JzrvIo7O/xv5573IgWKFoPyv50VPoO37wuHLyo7PfvKooXg3hJz/kHV/jJ+9xzM58VPQ+Rw38HZL/y0A/A3P+pH44fvP/G88mf96nzf2ZvKv9J7g/v11VlCc5rWhfY0z2/4vex3jZ+n9u3nURf/J+Yvw995f2hzf3lzbyp+Xi4u7KC7SrxQ/z3Xl08tXgbYffefw33+G3oVeOf+Q7/mrjYUi+n4r+f0T+n0T+f8S3+JiafAvlevh/yfon92CK779M8L2fdwyaFb1ncDS9n1ZSgOew8x3kTVzL/2spjm/vJn+9yF+76Fecr5E8jnvV5/2f5NvmHaBJ5P865+vs0gjM91aXzP/8+krl7bOPolwNXz/AWy76gb+X8XkPfU3Uv7/6b82Le9LLDuqfJs8B5o8VyWuEf3X45qfF99c28Z/kkdxHjpxHT9Z/vXVz4mDu13VE9x92y/8Tz/8PHwrv7eAwcHt6bq38BTneNR7vU9+e3e7JO2bs9UryH+htJT57KB+k/9S875t7k+Ram/1V3wenav8O+Y/hb83E09v1q1x0v/xT+su7xnnnuLf6h9g//jQh+/vofy3+lzPu/vteSEkBbkleae7Ls9829FHauuoXfOXdt3ynnK1+W+NzL/PBberrZ32P/+T3L8Bv7uXWzvyu3I4f7rvt/+ItpteL/u7R7l7woZyrwptz1XXKOXd9ye95l/Q68WK2eDXAenuy+Pd7/g85/saxz3F+r6z91fRXvL57HP7S7NdTOe/f9cp7IskD4D+Tc79D/XH8eRC+Kiu3AZ/S//8B1X8Cj3icdd13+NfTGz/wiCQNs6X0MSvRIEVCRLasr1EySmUrIaFCi4qoRBooZGSVrKiksprKahBRopAiu991/d6Pp+vy/l2/zz/3dd7nde597rPucz699y31f/96HFiAnxwA1i/ATXUKcHf1L+1TgF82KMB6+xXgW9o9X68Arz+oAAcUQKmPqhbgH+Dt2p9VswAvql2AE+A5v1EB1tmuAHfetQBrK9/ru+O3L8BW4P747aL9APjvBO8CP8Pnx+R5dn946hbgGPVt8bUE3jvBV+EfsxX5wBr460J/z+5VgJ/uWYC7KHcjf809CnBZjQJcAVbDz0b2eRe+yg0LcBj4+u4F+Bx8j9UqwPb0f135AjySvt6tVIDb4n9bdHqRdzV9DIfv8QIo1RHsA7bAT0vfX0SOS8Az0C+3UwG+Bf/2yr9q36RyAc4Hr6Hva+M/+P+kbAH2V55Enk/JswCczj494G9XvQBP2a0AO5UU4Df89gr6vjyQfT7kB8/x1/3ouTbYGn+7+f4w7Vspz8PHEvQ+At+oVoA96eMB7VriZ6RyP/Jdu0MBVqpYgBXBSfibrd1f+ueJ4GT2m6JfvAROBk+Gfxr5DlZ+Q/lWeEag/wA69ys/xf/WkvOkIvoXo7+WPc/E78P85Xj6u599XgEXotMG/pv2LsD+9LZS/V38N/a+Fv5H9Zcr6PfD9B9+XsP3j2i/O3+tDt6n3Y3ot9+xAEfzuzf07xfSP/ndO/iqotxJ+6/8/qfvbyH/VegMFTeGgWeyw0X8t6t+8S2+W9DHBb4bwx+PoOdv+N8i8l1dpQA7wNMe3As/L1UowGbat4e3Eft0xtdI9T8od4S/q351eeI+O4zW/hb6uxlsqL4F/6gPb3/yDoZvhPpz6W9H3z1Gr5+hP4t9BymXFicGK++sv6xDdyfl3vB8uk0BPrktvsgxTPt72KuS9nvRz9v8/Czl+crL2Wkx/N/ymyH6XUv953T41tBLuzIFuD+7bAXfwew3HmwM/lQ07k72/ff0lPH3Yv5Yi37/pK876Hea9tvjt9suBfie9rX0y6PBg42fx9HTTuL5m+UKsBL9Jx4sQ+90+mxGP8fBP0x9f3J/Hzvh71X6P0T9a9pHPyfxl5PBxPnB5H1Pv56pn8wnb/xt5s4F+IF+3VT9JPr4mX88Yfw+hZ+U9d1N4tKb+uU89plAP/fid45yE+XvyNfLvOZ/5G6Gj6PpZwl9LmXvWvzlCPR70cs65UN81zrxE/6z+X135W7aHU9f0feLwcde8+G7nl8NofcS9dey/zx67Oq76einf/cB90Qn/fvq0gVYGpy1dQG2ZZ+djIfva78PfW+vfksBlFoqLl3Lzp+y+yj+ulG7p+F5Hn+LxcMf2W2Jch/2upn+n6SHW5WnaD+b/86m/wd91xR/f9Pnc/R2kfrflIezS3n0HqbPC9i/pbjxGnqr+EkP+i+nX/bMuA2+67u27PKbcjvlz/B3HLnLa/covpai/yZ5f+aXj6j/TP0HsQs5J+uv5yW+0udn4FLwPP3gXXaaDV6Bn5Xqb1YeaV77IDiA/D0yP6e/J5RPxt8V9L2Wfe7G37vkuEbcqq1fXEz/e/i+B71cnvkue+8I/7v89g/016N/GfmnoNdZfXl2qA//PPVv6g+3gVXI97K4srdxvT09L8D/SvROgO9y5ZXwPMl/FogbTyh/gr9L+d+p+LvDfKBG8JF3LfnP9N2f2ke/+/r9NfJF3+fojxOib/haxX8yr4H/Avx3Ul9N/28NzzX8J/ORC8WvQeierXwsPe2KvzX0Md134/B/Cb774reT72/y/RXGz1fp7UrltuxTPN5VVN5D/WT+ezc5X1Q+FN1PxKVz9eNG/OHYzG/433b8YKbyYeTI+ngb+LJOzvq4C7/ZlR5voMd69PMVflaBX4IH0/8v/OEecWOT8tPkeQi/mefeRQ/H0O/14vIssHPRPHcUvrbQw3Hsuwr+nsoPlxTgbcqL4L/VuNwTXFE0/yzP366MPcEr1V+I/yX8qTO9HEWORsaPH+jxKfAudHaBvyv/PY9cI5V3x/d47fbX7i72Sjw5Ad1H8DFe+z2VL9fudX4Y/+vv99g7frBJ+9X8ZQ/lE9lptvZ/mc8MwccFvvuCfhvguz44A/7L0DsS3/3A66JP+t29aF01kJ1nodNa/Nxs3H9H+Xt2eoHfz0F/qn5SE38TMt9TrkNfrcnXjx8twt9F5FyA/mZ8fcves+invPY3wldT+9Jg4vTwxEe/94evNf28pd9M9d3HvluG3zf8Xol8n6hfrv5o/e068EnyXIL/hcavDeC9aQ92s/5YQa6OyneTdzf07yPPLfDuT/7fjRtrtTtE+b3MM/nfnvhtRd457J/4Nbcojr1HP+eJN2fAd65yNe2vxuda/H3IHtuoP8B66nNx9wvwHt/3Nb4ttK45iHw9wa393p3+tlIeiM45/C3z9xrkTXzeX/+pyi4/0NMe9LEjf54K1ib3V/gro9wYPxXR/RL+qvrLs+hvFi8nqO8lnp9WUoDr2b0cfKvY91j8/YzeR+q/Ub/J78dl/Zr9S/Oh+EUD9Ymfh7HbM+rjd2+r7yYevE5vw8ADM19AfzN9bWLvS8j3lbjeRj8fIp68rL62dfMz7Hei+DgeH9WN17/xg6fRr0X/H/m9GdjK75cVxY/f6GcqeB9+vyb/xux/oXslfWRfuxk5/0a/Kfw36E8/k+NG5b74mEH+F817XwDHoDvW+FQX3UP4S3P0r9PvdjZu1uTPa/C7Z0kBVkPncPJeR76G+vMy9mqgvEZ9xtfD4Sv2jx/p65LEm6L9u4XqK+L3H/h+V7+cXnrT4wrlk+nnMPrYE/4e8L+tfiF/mCBOLFCuj88G7HEuekPE4dXKQ313Gflvh38yfu8Qz/qAg313evZfd/yv/Ify00bw78Wvty4pwAH42aL+E3ZZDm6Pv174uJc9xolb1cnXEN/VxdM/6Cn7sDWyfuL3W+knE+npC/jnodcbXEfOTvBPV+5HvhnKr/CPLuajXcH+vntVfWXyVwWrgE/xi+w/v4/Pc/l59p8b8fd2/OYF/eEv9XPo4xrtL0w/VP+4+P22fZ4Kyn3Q6cvvrqa3z7R/ln8fQp4z6fPK7GcpP0NPmd9lvnc6+hXZJf41Ev+vwD8BX1vzp+L1SXPyNQO3E6/PQq+Z8bAvWJ2/1MffGegvEx9qkHdE9tfofxG6Vys3wP94fnO3+huUq0Yf5B8J3/3wv4//O5Wf1p921j+yP9GBP21rHCmjH7Sir8/VH8s+o0oKcH3mc+LdgvRb4+UI+l2E3v+soyaxf0/yXWS90hecBPYk1y70nf3fruSfhv/4S/znBvJ+Dv82+meJcX1b5V3Jt5Zdt9F/RoIZP+srT2XXAzMvzPrHfOSzzGv1qznoNxU3WuP/XfH1PHju4Y/V8D2K/srA/x493MDfKpJ3kvp3tPvTdyvVf5NzIvb82Lg+xvcv4m9f/vYd++ynPIIdepUUYE/wanp5Ccz5XMvsG5JnAzpd+dXu+M+534v4H1j+v3IOVp7g+7/ZfwvYgz5r4/9s8naiz+zjVuT/34lLmUdk/vBk9p/Yfxr5p4Ox1xLyrPf9B+iVRu9j/eMRcfUT5bvUv2xe+gS5X7EO+5/60exTjf4yH838M/r6Ev3L+PFN5P+VXPvD9xM9Pky/s+m/TtZL7Pap78cVQCnmKrUCbEx/G9AbCjY139kbX3/rz3+C6/XPrG+/Mj6vBP/dHwC3p/8vrb9a6GcV8Ltf1vO+TxxM/PuRv6xnt7OUu5HzM/z8/86x/9C/G/u+E/+qmn7OXgfwhy2JQ/g5jb3agq3BxIM79eem7NCaP/Un3wz6PBU/o/TTtvjZh2Ga8rsL+W/2Ey8yrpxP34l/Od99in7vNz49o3y27442PtXDXzN27JBzXPFgLDiUfkfhYw/4GovzrenzHPz9QJ/bsetjOV/PfJ6e2tP3evEk+ydD9Y8O9No18/u0x/dj/PNN9S+wz1jtOtPzGP3zXPz1FOfq6797Kc/PPDt5CvjL+V85/as3uU4h93PkOcv3leDtZpzchjyPsX8T/O3LL/YDr0TnhqLx/3rlPdB/jv2+52cPodMZ/kHs1lT/Gqic8aE6e1YDq4I/of8avb0OTgUr0M824tts/aQsvkrAf9jnUPpoxm9KsU/6Zc7Lcn42RvkgcWO474aCm9hlB3K9B19VcuU8NOej36Dfhl42K/fntzlX+JUcpbM+gn8WOIz/5vx5Bb0vB/vzw4bZH9afJmo3w3yzAfkmwfsseHzyA3LeDF9b/WKt8nD81ibf84mr5HoXf33VD4V3Jb+fkfMA/NVi96v4/2KwATrHwXMbPL+CDenvZ/6Z/KfJ6LcUl3MOe7T5zz/qj4B3HH7WkfsP9duq3x/fq9Ddjn2y39ik6PynHH2s078awV+BPF9ov1L//Rafe/K3zCduoodzwOSjJf9so/7WXtzOPGOA+rPhfQmfxeffj8FXBb81lAcoN8h6GjwQ7E+OdWAFevtIf5umPJLf3YSPLfr/+pxHkX8bfLXGZ2X9dy/yXI7fk+j3iuyvoledP8dfHs/5AX2+xb9OgK8V/Tfm10vAg7Mfjr9ba/9Xnib4W6p8k/6QPIecsx8Nf3t0G9PDnJxXqU/+33D8Jw8w+X9dyJtxJ+NQxp+l+s++ymWUsz9Zmd7HstsI/v8U+WL/qvDPSf9T3xXf8/C9Dzpf43M3+r9QPE6+Z/I7b4VnOfhqzgeL9uO/UP4Lvg/psZ/+3RfsAybPYmfz8u/Y+U5+dELR+eVx5PsN/ez/bJd5X/qt8g7wtDN+HgXfrukXyXcpii+JN8n36Im/j8WlXsoVMn8CT0LvWevDw5J/ob8kj/Ma5Yw3g4y/Q80rptPj7tq3SL4B/lbT0zB+3Ry+a+B/HNxa+yr8+5uMl+RqGPn52yAw87nM3+6n/1fIeXbyorQ/PflMyV/V7hz9/2/0j/b7Rcp/+f4M8S9x4nRx8Lzk75JvFDgO3I7/Ju8zcawNPaa//2LeuoD+7tC+B36a4udz85LO5P8Uvo70n/5dnN+7h/nY3r5fTc85Xzsa/ZZg1Zz3q/8QXy20Hyyevk/+e30/FHyWngai/yL9bY+/I8k1W/0M5RHs96T+eab65JvcTi/fm28v1G4tvpMf9Kj4kzyh9/FzAvzF+/f7sfMO5LkC/dfI/3z1//KdPNHwf5f+VNY6ZTE5L1RfA/1yfn8Qv23QOxS+4cnLQf9I9ckLbYnfd5K/pn6E+Pkn/fwF3uC7U7V/jT82F5/GwtdEPOpJf42V905+Ffnv5kcHkKM3fK34Z2P+XJmfZvxqxn6Hg5Xx15Lekyd8Knpv4a8d/fel3/X60eP6X/aDBrDrRPA++nuLfk4Vz5NHumviMXqHGE+eNC7/hv9e7LeeXTLe/A7/1OxfiMdV4P2WfK3oqTP6vf1+G1gO/iPFg8X4qKX8D/38zr6D4X8Yvbk5Z2G38jmPYe8l+Lsk+YLwjTM//5R+V9DvAuP+fLAM/ueSN+dOOY9al3P7Aii1GhQGSq0Tl6qRp1nypJXfJn/6+xb4Ew/S/4vljR5WkHcRf6lKvoXK9+a8kf7/yb618iPpH74/kzxdcs8AvoPIe6Pyq/zmUPp9mL6fwv+JJQX4h/pj2PU7v3cjV86nDjNuL0rcBedkHoD+UehnHpp1yn34Tz84hV7i/3X024H0P7IA/s0vPd/vH/L/PZXfVp/8zhPAE8Hkd97Jfrfipy44Bf/lyN+dnqaIJzPwmXnRp76/Cr4B/HNX/Jyg/x8N5lzwJ3xvBHOu+5D2t9HnMPa+Pee8/OMF/f15cHjyUuDJOvRedhsSvwT3Yr+5xp2P9deL4RmG3zvIPzz73/CvyfoUvtXKmxr+l6839ctxGUdzfm88HGOcbqi8HL0zjEu76udtxesr6Kce++wCHgBOIvcacv0AX2/9cS36nX3fCZxvfnJP8pvQ70KOjeiPh/9g9i3LT58SH77lD1+z2wb6/Jx/jMJ/8rmT351879f571b84gB8lFb+IPNNes0+3DJ8Zj10B3lW4XNLSQHWJv9l0Ts/G0hfQ/A1j5zf87cB7L81+25A/2cwecaV9I/L+FdDdN4HL4X3d3bJfCfzoORHbxYvfwd/Ax/K+GE9NgosBXaiz67seh3YDVxNvx3hO8w69Hzj2w/aN8m9pNxHAR9nv37svTu75b7OO+x9jPiW86RHc36Z/DT7Wcn/H2+/Luvj2sm/8n1f7Y9XHk/eW8BfwBb4OzLrLPb4AT9/KjdVn/shj8B/lfZDyfWe+hPwcwr5voWvg9/vC17+8ah4+w6/rMsfc9+wnPlkeXAHsKn6k+jzfH6/BrwXnSn4Op09z8PPyfQznT3/5NfLwGNy/44/NhVX6yq/QA992WMxf5vPXm20L4uf5HddSC/J7+onntYv2hdIPH6AfnI+m/Pa43yf/dDsj47yXfZHs6+Q9WnybJJf8xz8S/n93dF7zt/o+0x6Sn88KfllWVexbxPld9B/yO/n0/+z6F9PvoXixbngArCH7+vwr8b4G4T+c/hfLO6vZuetlMfSS85vds65A3w5v8n6Pev2Leyc9XvyuZPf3Zk+k9/9ivHiZTB5kKfm/gn8e8Iz1zz9LOXJ6pfxq0nKFXIeRN7D2PsG+sv5+XpxqbvfRxsfn8X/BfylGv2NMk4MhDd5AGPga4T/IVmfiX8V8HUKOWOHiQXw7z3m9mDuM5/PH9bQ27nK43J/hl0ezH0gclzH/zonPy/5fejOzP4ye9c2riQftRL/bK5//qVfTgbXZ98s89KcZ6KzIfcz6bMSvfzIfkOUL+NPN+a+I7kqoD9f/8o9xV/MD3Jf8Vp8/yTubfH785mf0ftD4LD4C3rb8O/S4DPsnfsWOX++NuMdfsuqH2HcPxS8H3yWP/yQ9Qi7bW+dkfzRaUX3z4rv592deTxYld5/0j75ErexZxX2LJ38CXw21j7njcnXHs0eR+aeCv3kXu0f+K+ofjf8vwP/+8rV6X2C7z7J/lHuJYLL+EPuF82FvxG4f+7RaJ98zeRvvkY/yd+szj6LfTcu+VfqD895ObzJt8v6byv+VAp8PXm76L2TfaWs38Fj0J1JntLGva3Nx27I+VzydZRvzn5S9s/oawm4GNyL/ufqb0uyP0P+5J8dkbwS9ROt35N/VvxeQN4R6Jf1pf51KHitfpb7Ml/R5yL6rUuO5BMPga8DuA0/H80/D1YeSw+HKOdeYaWifLir+eMZyX/H143mAd3By+inN7x1wLrgYHauYZ+hLbwlyveoz32/3AOsYT6U+4DZ78w+6BC//0R/b2Xfgj2vUn+Hcu6VZx6b+Wvumd+e+83iTtaD7+q3VYrO/zIO5/zvC+3ON15kvyr7U3v5vpP2F6D/ovabzZ9W8Mt7cg+U/k8k3xC/f+67EvUbky+MzkvKGT92jj3VX0Cf3dl7YAGUugl8HZyh/k56vwt8XPtdyLdZ/zxbvxwfmHNOevkSbEGeXROvlJNvkPyDF/n7geRJfmwj/WNZ4g5+rwZHge2SZ0Zvu9H/JOXn9Z9v6WcnfB8gnjyc+KL/Hur3W3w3Ef8D+c9kcFPup7FT5mP7w9NbOfO10ei8nPmV8ag0+55gXvUT/TeBJ/PpS/h3i+QDw7Mk54Hk2x6e9caLSuz3NHmOYNcZ4ugr9JfzzZxrZh2X9VtrfDRXfyB+PuB/45Q/zfjJ3k19f3LuB+Z8QTzK/fzVJQVYGp1fcx8s+8/6T+57vIzO6eqTd/9x7v/Rd/LvT4M37+GUBc+hn/Tr88B14t8h+M75cs6Vb8w7NnlfRTx8DPyRfKvI29z3h4OL4Mv5zSu5z5R1ELg58Z0+DwHXFu3PXK198tr/Il/yjxfzh4b4udp3b/CfnIsdzu7F95Mb6K8/g7uLn7O1e4n+p4CzwUuT30CeSfBnf/vX5BeKL23pL/GmZs4Jcz7Pvn+RJ+8brDXe5Lwk9+1yv64ju2YdvqJo/T1Zf9vZPPwq8Er8vZz5OHic+ovVj8x5MLlnoT8b/nfwO158Weu7b8hXpuhcd1vl3D8oS76a5D/Yeura9APyjKfX5FOVYce3xJUa+J2u/Jbyq/Sde+yl8Z/8o63g/Zj9PwGznq8M3yxy7pY4Rp7zcz8WPC/3+OEfw6/Hgt3BRjkHIO9F+CyrnHhyv3lR8hraFOU3TKLnvP/RJ3no/PEm+q2b9zvAa+mhRL89WD/Lu0cH5v5F7i/nHiOYdxNORDf3mx9Ef3beVzL+Hev3Wex5Ovtmv+1a8jwI7970l/PXqvzwFv0o+5G7Kz+F/z45d03+Cr/M/YPrlD/Nu0D0nfXcRPiOoofe9HULeAI/Ojz34sSLBsnvVb5Q++fIs1POO/D5Fz5Pst4akPkiPHfkHIc/9aDfefSf+14T0ZuV++fgFvT/Jx4nb2u43w+nn7X8qQ842feL4K9G7sfYoVzOydi3TvwL3Fr7E9E7VjyZAP5s/BuXvAn63t+8olbOM8n7FP/pz0+eSL4tOXK/9xPyJA8h+QcLyFUB3JD8MPhzPyR8FOeLVhSv7izRDnwx96gLoNQw8C79O+diL+QcGZ8z+dvxybPiD//uL6Gb/aV29P46/b4KNiRfR3GpjX78Nf8cnf1X3y8XX5aCG3L+kLxD/pn7YcPwV4E9n2G/NuBlyf/mH4P1z+/0ryPjv8nLSv6PODA3+8fa9wVPAbfD/xz6HJB5sPi8HH/L+cMX5tV/0Put8D+s/Aj4KNiEn2zUXxZq/zN8uec6Ft2815a8939yfxG+N3KvW/98kR5/NV59r59vrX17/PegzzP0++TJJz/+uuwTkqf4Pakfrd9+AnuJr3mn8E18nQdPd/h31P7VvGOS/C32OYx/ZV6/E3kHkaNr5s/4eQ2dg3LPIO/D8LfjwGPBvC+Vd3+Sv5z3gHL+vDf/3gdcLI7/lXMRvw/nfw/z14Hqu5C7g/JE8h0cPy9aL6c/5Py0TQGUuhWcBub8Pe8lvswPOtJP3k/8Bb+bwI3gcvrq7/tZedco9/oa/leu+4vkm4ffg/nbLyUFeE3yOrQfR56XMp/KvXH2+U68S/79cP33A/b+AN65/Ot95V/Rfwe/HylP4w8N+Nke2rUE815Xd/i/1u+SR/as/pc4Xhc/yesejd5w+n9EfDwb/an0e49y8iuK38e5n36OEl8qiyutlX9nv15F5905/+6s/m/+lHVbzdBF73pyPeD3G5Q7+T7vjSXf/sDke7LPYPHwIONiU3ZKnmH2d38By6EzHX+ryV8t7+XQ1yj0BsG/N7+Kv9yb9an+elXyAPGxTdZvRfcLdkQ/eW/N8LuK3t5AP/f5dxAfG+feF5h3APpoVw7+dTnnZr8bzY+6g3nvrLn+3i77WfFP/pf8j1V5nzB5Lugmf/7H3Bvhd3kX6rG8r5R7Jznn5D+7wbOc3rqI8x3pe0ffT/ZdHfocmvs8yc8QH77z+wb9qqzv30ZvRNbX5H839/PFh+ngTLBj4g/+8j7WZezbHF//v3evVsB/ZPIt6LG3+tL43wW97DvupPwx/XUvgH/zvF4DL8bfz9alF9DffLBuvf/SD92T8l4b+vXp4zd2b1C0v9OFvDvxr4vgmZo4nP1e8G4w7zE9mXx0cCJ/nUDe2vpH7t+N5b+5f9ck9zX1s7wHkPv/ebfvpiI/j3/nvZZL+UX2X+sln0i5o/q833KA+pf8nvuY5ZMnj98u5O0KHkueOfEP+iub/Cfy30u+m/FZxfct4J+uvIR8a8SBRcpL1X+I7pvgGcbBi3JPLXlm+H+y6D5Pd/G5PLn/wGf2fwbzs7yrnLzondW/p/1i/ByQvKPs/6BXXf1p2rdNfNAveokTr4n/uR/Wi1/WIX/uyb2f/MLk37DTufBvq/7V5KflXpT9ubrkf4/ctXIeoP3CjM/4OzDv39T9L/2yOb9J/oD6itpPMP96ElxlPpf9nCn2Z/OO62Qw77gmH/Zl+P5RXob/vF+4MOcX2uX9wl/4y+ace2rXjn9n/doWX4fyn6xf/8l9Q+1vRi/7b8frb9PEmcrsdwc9Fr+Pe37R+2Eb4M9+2SF5/xf/h/Dro5MfrbyT7zsaL/uLC9Rcqg75ftPfNoO94JlED6eaX13Kbl/lPZPc8+N/eU+jBXlzPynvQeZ9yImxW+Sh/5f493klBfgj+caIF2PB57Leh39dzi3Fv57840v85nw/+2Uv+f1G8r2r3Uz43wZvSR4FfeyuXcfcl9M+79rlnbu8o5T3k9aQ5z2whf52RfbP8D+b/h9FvxR6I42fD4HNwdr853/sW5Oen6afCfyvie/zrmIbfH4S/ZN/dd414t95vyLvEp+jfl/jeN4nznt5R+M3+9Qb6WEmWCH3P+HLeyK5H/NazgO1z/2YvCdX/P5m3pe7L/vsuS+v/FTun8K/Sr+7Mfco6Od89dmPPZNev8BvmfiH774VHx/kfz9lPq1jZf868767+UfeH+yjnPnXBclv5v9T0B+GfvF6POv00/A/BZ3MF7Yjf8W8L6Z98vCr5n4NPRxJnkXieN4Dvpw+cn7/he+K7182EhefyHml8sjcnzI/+Zt/P8G+jfGX9xvyXsMO5El+1ov0Owgfzfnbg7k/wJ9z7rdQ/M/533B2H03/e/nuVPTuY9818JYTJ69mh2XaZX98uXL2x29B/zTz0mvoO/s3U9DP+v4feK4h/570MQPdt8DsB52fe/XK+7BT9mH2pL8q/KI2uUqKzmemmNdmHznnMzXxk3fuGopved+uctG94+T7t8z5fgGU6gGuBTMOHcOeuW/8KD3XYr+fxLvkZW0AW2T9pD/dzv638qO8K/e3/rPOuv+v5EOQ51T0cs6X871b8j4P/V6TeRKBbs36lLwZTz733T34a658JXvknZ5u7JDzouJ3kHN+lH2mafzpAeVR8A2mx6e1707+7AM2y348OIV/Hpv3J/jL08kvy/93wFfOEzrkvAj9U+BbzL8eZq+8N5B3Bjop552Y4vdhtme/8uDw3Psk31D95m/03qT/vO87puh+Te7b5P3KN0sKsBr4UPbRfL+GfXKvPffcsz5fnvxZcBmY+5hf5Tws8574A/o30nfu2RTfr8m5dCf0i8+nV4pXyRNZk3dwk/+On699/4V4s3Pmn/S1mP8flTwY9c3w9Wjy+PjZfvSQc8Xxmc9kPML/5+yW9+nyXl3up/1O34vx9RF9/Jl+oDwDfDrvP+Ej7xecg7+8Y5D3C7JvP40+sm+f/YPG6Jelt3HG0bzfE/9eRf8r+efXyp3Mn67Tv+5OnFWfvK4bEi/4b+aPDxjftsXfbsarM+O/4kve+817wHXo/wh0jwSTt5f83zuSx4PuOer/gP8h/D8hbn6U/BXfJX8l794/TU/JZ7m+aL2R94vz/y8y3yqDj+Q9r8r5QgGUulJcmQ7mHGIf8WFizu+zf0X+muLyFvjL0Wc/9XOV877yhK3+y/fA5GPxo8HKDciT/OTkcXaFrzL+j+M/venpHu3yPtNvxs/k4+Y99Lx/nve78173XHzl/5ucmDwG9L/BT+7XVuIv9YxTece1Fz7m6dddcw9dPHgQ/2XE3QHJj9Rf0r9zfzb5H7k/u0Pyn/Cd/xeQez318Pcte3YCr+JHG9RvpX+9id+ck5RT/xX58m5u3tHN/OKh7EtmHwo/iW9jlZNvd2beV0n+jviX9/w+hm8b9Iv/X07uSf+ZdQB7fW9ceajoHbzlyU8ER5CzHvpt+cO8jIv465f7u+jnPfrcI8794T7ibb/cGwYnwvOEceEqfD+e/W78n6M/rRSnloOj846Ndtm3ewI/z+BjQtG7zQf5fqL6S9TPzH1Bevyevp9Dfwm/Kn7fYZL6B8AHwS/gy/3e5D0lHyrz68b8/yz7EBNyD9B3HeijPZj3Tivhfyb/ODl+gs6a2FHc3Dr3PXM/gX7L536p+XUN/aA+OsnPTF5m/bw3qX6pdpPp8enkleFvD36V/7tTS/mC3E/l/3202175I/7zNnpf4XOfvP8AX334GoBz2ecpeLIvkvE/+yW5B7FJu1r0XYq+eqt/Qv31+vd18FeCv3h/vKty9smTv/wE+yR/OfnMP5BrAz/5HWypf2Tfpq+4+SC5nyZPJXpvmfgQv4R/qbiae8Mrco5KvsfVZ38x/28h/5/jPn6Xe2JDiu6J5V293K8rfl+vfIkyWIc+/sn9EnGlBv52U847LCuzf46fB/K+A/nynnve2yy+X5P78v3Ep5W5ZwVfl6L/l/cbfDsX3W/K+6DJR0n+Se7NtkIn8+DV4AHJy1B+IffA4F9qP2JXv4+wDzE/+Tra18z9R99l/tWrAP6f/79RFf6u5k9zwMPVD9I+cbksPRTH5xPJl3d054lPj6vvrn/0U79Z/5igPv/3oDt6C+gv+ZnTxMvpYB3+Xh6+TSUFuBFsyc5HwZd7IgvRy/8fHJfxy3ypHViFfT+ln7yX8m3ur+a9r4zv9JJ1UdZJG7Pep6+62Rcp+v8gHxpnrwQ/A+vm/ZDMC9G/HL0dlP8RV6oqJ48oceBZ/pL3JRK3R9JP9udbgSeCfyc+6v9f69cjxPPx+udRGTfJexV9HZz7heY/z8C3Vjn7CVk/9hXHs37MenJZ/t8T2A0/b+V8Bx95v34i/8r/N/hOeZDvDjL/vVX9Sei2ZKe8h5D3DzbhYwx58n/0euf+MP1PRuc78g2kl4X0NTHrNHI/AP+V7NIK/0Pj//CPzv+b1O7D/B+r5DPTy2p6aY7/Zupf1a9vx/93yT+GP+95dgTzzmcb7fPubM45c745KPcn+GP2bbKf8412mb9mv/3P5JehXybv52q3NfiL76uS9wf8Z18i+TfJ30neTmfl5O+Uoo/c770G3vnJfzWeNNZvuhfdh8771jnnWkTu2/nPWey9lP13yLoTf3vk3XL9/WTwMvUd8HsJ2B7M/cvcC8594Dn03Rf9X9l3M7iV+Hib+tlF+X/JB8z+QfKjYrfkg3XOOyVF85O8E5p5ygD+n7yY5Ms0of8v1c9G529y7Eq+jdbjeU/mevrJ/99qSZ5Z4CbznB+yTsp4q11l9uqG/4/YZwf2+QW81/cDxMd9wHPIPxn+RcqXixsLlK/nB1egX9xPZuJ/J/PivLMxOe+F4DPnN7W1y3iV8alD8t+swxcVveecfNA58M0G57J/8r3zf2JuTn4uerfh/993cwK1z/vCPdm/bfZR1efd4bw3nO9Tn/OsnHPNgj/nXSUlBbgX+Jn4kPl27j+tzD10cWoa/VRkt3HgH/yzq+/ynlLGv0VF7yvl3evTfF+l6P+x/F7Ef/H5XN28r5u8reTXqD+F3cey1wLjQfIBOpgfZ945h7x572CTflPC74vfoViTd+PznkrWOcq7GRc+ps8HwdFF+++J1zmPyPlD1jfR+wTlqfx/IX1fqn4E+9Vg56mJC/wseXbJryuXd2f8/rXvZqjfhfy14Ml7mhMzrqDXjl8+5vfs3+Y9tkvJk//bm/fZsq/eM/zRW8W8J5X9JPpubB5aPfsPOd9RP0+7nM81w2/sEjtlfDs+9qj3Xz4O4J/D+PVG65yJ9FAv6wF49wX3A/P/qd6m3/h1JXqKf5+ae6H4eSj5p+i/Ir7k/2vl/+Xk/2tNFr/z/9OW5Twz+fH6y1uJ3/jblZ0OUL8h8+HcC0G/PPt38v09vq/PjpPoI/dons94o/2l/HNxSQHertwm+dL4fiDnpuTrnvNZ8uf/CibPKe+7zFefPP3cM0l+/pu5v4TuG1kPqL9CfCiOI8m/GwHfGt9PRS//B66m8aEG+Ic4Md33/we0UB01eJx13Xn019P2P/AipVETGYpPUhokIspMkm6Ja4qIUhQpQyFDpoqiyNCkIkWhIqVSIlPJeFHKUGQqNJi6N1P81vq9H8+7lvd33c8/e+33OWefPZ19zuucfc6na91S///vw5ICXLlnAT59QAH2rlmADcoVYO2GBXjO/gXYtFoBNgOPbFKAxytfU6YAJ+xQgBPh1zYuwDcqF+AnVQrwc/BT/b+Fv7H6/Q4+QfnP9QtwF/j96N4Hv3S3Amy7dwH2gW9Er4X2JzUrwBuaFmCX5gVYrU4BXk6uB0sKsPx+BVilfAH22r4Ad6SvA9Sf16AAR+9bgKf5/VP93Ob3g/R/cuTRf396n6t+Y/IdQr/vonco/HL0yh5YgKfg7zztTlK/mf5u3KMANym/FV4BvRH01Ez5SHa8Ar6GfnYHm6N7Pv1fVbUAV9LXT2ULcLB6FfnbeHyfW7sA/1T+tfIm+Bis/BrlXXcswHe078OfytNfFfqMX64EdyLfxzsV4OJG6NLXevRPwG9H9Pvx87OVr+KvZ6LTAj+7Kf8XPZ2qv8b42aS8R/UCnMbOd/Kfz/U3EDyYXPWit4wP5Ufi/7p9CvAB5a+UFOAj/H482IE9lm8H57/Hg1XxWxX9ueT4kj9/xL/GqL8Cnfrw37S7hr/sAD5j/P+ivAW/2Wh8Pga2YO+34N8Y95fjYz7+n2fPmcbHSfQ7Cv+PkneS+hmHjeinHH6PQHeFdh+A6/H7PvxI9ZbDL6Xviugfww5V6efC0gV4Jfg0eBE66/H3F7t2oN9m2r9EP+cYBy/DD9f/U+idUrEAb4Ify/8n8sdZ+HoQfg5+z9ilAL/YtQDfqVWAf9BT3b0K8DD1vtVuHf6m8//h6J9iHCRe3Gk81VE+rAK69L/a+DqG/Dfp90Tlremjhn5f4RdtlQ9jv0Y7F2CD4Phrwx/+o/0N5Hlef63JfRm6M9hjDH86qBL+tb8Ef5fBj4fPIV8beBf2OUs87QQ+uXsBvspvB4ons2oU4Grtdma/19n9Hf01QP829XrUK8Dq+K6D7wPJ14d/PqL9TezSRPkadl0NfgZ+Rx8bjesT6XWJ9s+it4k8tfnlZvga8j3Hvr34wYvwReh/Ip7/C71/a/cZObqy35j4XfwYXld86MtPLtD+ZPpppp9z1e+B3uHof0C+oeTbE+yHDvco1Q/cDF6Mj5nwc9nlRvhF7NfJ78/r71L8vMA/b2e/3vT3LP9sqP4T4F3s1Vu/a/l/JXJvn/laf/uo39x4PCPyoPdY1gfo/aK8I/vfpfwd47Ue+31mHvpDv9P43ePgzcZhPXLOR+9y/dwKjqKft5S3Vf8N+EP4fFk8quH3n/nLT+j8Jf5s4JdbyDsX/YPxeTz7V2L/3vRTn/+8rnwIOm3JP0/9z+n3bvotr/3u6t+s/Wn42ab8PfqbbZx/CJ+k/Hh4K/q9Xvt78d2T/BfAB/KPLdp/Z376CnwUzDiYzq/epa9G5tHblD9jvM4G54Bvkn+Ifr/jb6eR9xblg9D7QD+3wl+m/1P4dyt0JtPj9MRH8fU3+sm6oJv+vmbPz8H14mRN9J8T37rgays/upL/9GO/ffT3b/VqoL+dddcpyj9p8Hf6e1uPjWOfMWDie2vrt836/dH8ulT7PYyL2uDu4CJ8TCLvqfi5U3lV7d/F/37on8nPJrJ/S/JfyY/LwndSfya8NvrXaf8SfLx43B7sAJajv/eyvtHfIfwm6/O66NWjj070d5nyn0q0z3qHPz+ivBn5M44W6S/j5ypyvAhmPhun39fE6/74raLeBu2/yHcr/5rGPiP1e576a42Pvvg4lH+vptcj2GE3evtQ+Qb0amrfwDr3HeUP08dx2g+gp3ro/BMfz8D74nsFfKPx3gP8GtyGfmvj7Rt8toW/ip/nTWBXGYdNtM937tG+z34xrraCN+KrHf73zLoY3fPw2ZNc0xIHE1fAfdnrEPHhLvVvJF++jy9WL+v0fB/vrPxK8lbEx1D4WuvdTeCO4CT07xU3tuD7fnhV/J2Irwn010O9fY2/tfx1knVYO/5yFP6+o6cZ5H+RHDUyfs2Hu5LrPfg++LudvseIM6XBjehPt64fpZ83Eve172A+7Iivoex7jv5fId/zYL5beijvZr7pA+a7p7vySuQfbF74HRxI//X09yo+7qbHfB/8UFKA/ej1e/gD6N9A/oP1e4vx+rn2j2Sc0msfeh6VcvjxRfE+8X0i/iaAN5LnZPpqqP7P2n/OL17Qvrrxca64310cuUa/O5L7B+3Kw59m71n6W0q+dfS3Izs24t8/K78937H0M4ZdauhvCX6eQH8Gv3wFXlb/a9E5gpytyPlK9gmUD/B7/OcA5cX+s069dujHf34zf3+lPH4U/+mjfl/wYHI8rTzxvaJ+/5E4qXwn680qYGWwJ323oN8y6O4i3h1Mvksyf9LPRdplfdLdd9k+4Nn4fJ7f/cLea+n9S/AS9itjvv7Q+nR6SQHeq31/8eg2sBR9Xch/9za+9zXv1gcrKO+r3QdgbeNjIvwp9t9Hv13gC7M+FW/2AJdkXwX9M7XrZ3xcBPZWbyf6ex3eml5n09/KfM+zy1fs8IvxU5tem5kXV1mfNsLfcuP6Se2Gon8W+o3Zq4tx8iU7lsN/5s/MmzXUq6e8hfKMnwf09272n5Vnf7mr8vLG4370XV6c+rf6OytvQ99bjOvEkcSPBuSfyS87m4cn6386/5qZfXR89Cb/C/x7d+2z/u9GzgHWH/vzy3/BuysfZj6Zrr9jwIb0uhu/+JPfL9X/T+otEPe+Rn8he+f79wrjfQi4P/m/op8f+Pfr+Poe3pwdK9Dv/vR1ffa/4BOsZ14k/3j6Pgf/e5GvE34X6uftzAfGZb7/L4fn+38av22B3n7G3+7K/w3POrkJfSR+vqS/5vgoXl9fIz5cDS4Dj0gcNr7Kq/+C9q+z//u+L8bhb71+3oLX4jfbjK8q9PsZellfPwo/mD6nGR/LxaM36e9Gct6jfkf0TwLv5ged+clIcWgueBY4An+twG7gRfFb43UAeZqi2w8ftfBXmn66+f037afAjyopwArZVzC+OrDP4AIotYDf9OfnC43XTeg1QG+e8Z/9rTP4x8H478T/T0O/O3mHg3eSYwL5PsTX1/Dp7HEA+c7hj2vw9xy+6tD/FPqZh84j4tCj/KOD9ez5+J+t3pqsN9itIv6v5L/f67+/9Votesn3Y/gt/h4cDM880Ax/Y/A1Xr8t8NfT+uEh9M6h7xfJtz37Zt39AL+qgd9K9DmPnNvA2vS4qqQA851Wjv7yfXZP5nNwMbgH+05Sfxg7vM1/jst3R+ZN9b8iR3XyXW/8LOIXC9mhHf3MN94f0H5/dNfT01x234/ex8ZO+tlCP83p62j0D4IfKS6Wp79j4F2030X7o/X/3+9s/U9ktxHaj2TPnenvWf7/H36zBVyd8ynxaSk9fJD9+eyva/8QP3wKrETOYez7Njpz0FlMvuyLZT8s+2UXKP8C/X+hl+/L0cpzntCR/NuTsz3+RvKb1/Bd0/z6HfnL4Ws2e77L/66lv+/E/7ro/YrPf2q/iv2X4m9kzrHVP4o+3sPfIvr4GP+jrJea4PtpsET/14k7W8HHwTrot+C/h4JtyDecH7THfxvz9yP4v1v/+6j3IH8fxU+nwvdirzfwea55aBZ9bSLXM/A32Sf71Rutjwbhryl7HYH+xfyxc85dwQvo8UvybgfeCg41z63lL32yf5fvNvZ5hty99HNZzl+iP/xOyPlRvs+UZz94pN97ZZ9TeQPtp+o383v861hxZ1fyv8o+t5F/R+1nsvtEclfRX4+ieXOx8syfp9HvZfoZVACljiHnR+y3SVyPft9DJ/uP2XfMPuSU7A/Q615gRfBx9R7UX+bf7vD6iU/0fyX5jjPeEn+G5NzROLoNnvPeWvR1PPo3qXcPfdzDHoPhy+Dv8e+Tsl9qnV0r5zCJj+aDTsZvT/E19n2f/n/nB8vhfbXfwe/36r8MvBT9fc0+x6F/AfwG7ZeZn/rSZ39yHk3+Kfx8K75/Bd8jZ2XlFbWflziA/4/UK6e/BupNp//sv3XT3/fxA+0/Je/Pxk++i/P9chD+9webg0/Rx0px42HwMfGjJfvswR9fFKd2h2c/e4rxvYxeH4Hfho9D8bWMXM2VP6R9zoVyHpTzov7K/6C/9vj+iJ9kv+lH5VXY7Qd4Nf78Bnna6qeR+fZ++u1m/uoOLsVv9qE38/eckxafj/5I/zup/36+8/A/Gr0h+h0KjkxeivF9BfsvMB6zvtyDv+c8civ9nKa8Hr2s9vtP5Dpf+c9F64WsIx7P/of5dLV+P2KHJkXx701yP4qPPbVfhO4ovz+t3m85n+Avb9LTa+plfTED37XU35Xd7oCPyvevONmIHz2R8UqPq9DtjN4T6J9gfdGK/fbjP2+jk/OBvdT/XD9b4NMLoFQvfjAcnnyAJc4/vnSO3Qx+If2tUP9K8GnwBvVqFsXfxOPE3zN8T1bnN6fB98Z/T3y14ictwReTbyZeHZD1oHj9Hv52Y7+d6HOZ/YCRypei118c7gfORP82eliJ/t70vaP295nXHuVHJ6h3Mfk+wP8x7FOHXq5Qr7/5oTn9vGycnId+xtMY/rVFfMn4Gq3fp8j3GnlvyfpfXGtAjkHZd8n40W91vz+Scz31m+HvRePwGuW3a/+Q3ytr/4P4H/tk/6GldlmnZD/iI+NnHD4X8deD6O8n/rJR/NoA/hO9depfSI5P6HWO9rcWrfuW0dMOGX/kyzq0cfKI1Juq/2lgf+uH5+j34ZICLMvvJsHPpr+c7+RcJ+c8R+v/3uSX8I+zzK974Kcru3fX7wbxrDL5ZliPfpPvBvh6eHv6X4ufr9F9T//Zf8q+ffahsv90mt/76+9H+lrO/o+I/wP095vxu0j5t8bTRei1IH/ya4eWFGAV9ZrTxy7xU3J/g4+V8O1ix5wH8ItPjY8q2lcz3kai3wVeTfucm86hn7H8pCH9/Km/beD+ya9gzwr8r3fivn778Y/H1J8K7km/7fT/sfZv0OsZ6NxL35OyngAfBKfT7+n4n43/89Ctgv+O6N4jzlWm30r4PEJ51v0n8L+s/5N/18P4TB5e8u/GF+Vf35Lvn+TT6fdV8GVwKTqvw18Cs++a/cSH+P8P4B3Z70K/CXmm0MNN5M759S/4+g38FUy+17fJj0B3st9/1f8m/Ozt98rs9Qr9tDWftANPBK8qyudNnu/e4nnyfS8id/H3Xc5vHzaeHjTOlvDzn9mras5P8Jn8k5yn/8rvs466Qj9ZRz2Q/Wvl4+G/o7eRP9S07nyjpAD3pa+dxNeqYBXwyeRb43NnfF2e9R0+ZhiP+8FXFkCpv+B1yf+y9jOsl35nj5PxMxvdq/ze1/jI/vnion307J9/z6+WsMvd+ol/9cH/MPL+Rt+DtK9lPTVAu205b9b/UdbtR4NTxb9qyQfVz5PkPZ8cd6L/On/KOub/rF/Ub5lza/gC9o0+o9/L4NFv9Zx/+K59h7+cnTxT5Xeya3E+//v0kvzKP8STNejne+oTfOd7q0fyP+nrAuPjVvHmMeN4Bvv01t9M+F/6q29+bQI2AJNX/gB9ZF/1R3Syv/pHSQH+Bv4OHob/o/hNHX53LT4T7yvRy0Hiyr/Ew/2T71N0rppz1iHs06UA/rsOL15/H0ZPya+cRr/Jr9zKXrOV/84/1/CfU+n7n+B883Qt9N9Sv6/239NP9of74mdH/lEOLA9mPzXfNbPhOZ/Iec0q8J6i85tG1j3zxfEr0F2nfS363YDfYfzvWuUl8OvFr7r00Zn9L+cPldCvRr6Pwc6JL+z3Cvhh8ovE50/xdYN+NqA/qwBKjQTPAT8l12r+nfPCBfzpXPZpZ10h7JbqzT5D+Wf2yXK+nPPm5Gc0F0828vOdSwow92u+Fb9PQOcreMucP+LvCf5xDvrZT4ifLAa308+u9H87/uez/1Tjsyd+sw6+mr9+KZ5cQr669DqYHZ+A10Kvrv62y7knub6mv9/IdW32O43Td9G/k91v50cVrNOfRL+3fvP9uhh+KVjHeHsv+6F+35z9ZfpL3PqE/hK/DjPfPEYvbfC7JesM/Azjt8fnfFz5seb7o8ErwW7Jb9Vv8lb7iE9X89/sh72SvFtwCvmL/SV+1DHny/S2AD/D4aOTP2k8X0Hul+AZ/zWNp3vExSfguVc0W781cn4nHk1PPin953wi7XL/aAI5H2Cfb7OOZv/czzgJ/6fzy9zXyPlJzk0+Nt5zfpK8o/L6GYePF5WPhVdQnjymxcr30t/J+Mv3xlnkvjn7cfS+HD5c+9P5zQL8fQMvjd6T4u0N9DIPXjPnefz1F/HowcTbnCuwR+7h3c1OWd9nfTSpaJ2U9VEl8bMbvofpN/crz9buhuQXww83Xgf7nrldXDxEvSPZr4H+Bmp3DH//Cv0zcx6B347sUR79m/jDtTlfLcofuo+/jqOPnvBT1T9L/PhP8qn5x+DEb/ytUX8r/vZiv3bi86fJq0avJPv7+BuKfvJ8L2bf8fSb/fOJ8Crw3H8aSo+Diu4/HYKfDvxijvZj6OcF7ZMX1j3+rDx5Ga+hczL8cfx3Tv4tO7yfdbv+cy/n4txbpIfx6N9gPuhMTyfm/EW9A7Ubpv/xxslr+b4uWl9mvfkFOSpnHwc/K8TP3H/6GP9TyHOg+u/j7znjZRE4V5x+LPkQ/KZx1oPaL0/8+h/nc9n/6kS+9fR3k/l0sv5X4O98dO/J/T902pD3Sna/UD9jyLeM3lbjryr91Vf+WL7T0B2Ej9Px9w/+ekfuRYv/2c+rk/0H9pjh93/Q52/WG3Osw6oUxZsfwWrkubHoOz73VJP3nDzo5D9XzvoOvJl81xXdf8n5fu6/ZH+nV5H9x+OncvZHlSevdGd6egq/c8k3vqQAP808rl7OR8Ymj6Uo/3peAZQaCnZl55xf9sL/ReCB/OMT9ZYaN0vAnfFzO3lbW09el+9n7X9HfzI+Tme/bfQ/HP4Xe5VKfho+/iBfT/1eRO628Hvpr6b+f6f3Xch/n/Lkw9xr3I/kX9vYYS/95z5T7jsN5J8tM9/SR1N85Zz9Evhy8AL23JD8C/ysNe91zPoEvVGJl7lnD2+v/0/4XV96Xw3fSX+rsg+m/s30M478N+nnJXAJ/hpq1zj+mntb0SP95DyxftF5Y84X6xi3uXe2J3yF/tepX42+Jul/e/rO/ZNO/Cb3TzJP/cEvtoHV8bVe/7eid072Y7XrgP559HaSdhPop7r2n/GHz8G14CT0PhefziDHevh88vWirwPVn5h7duzfR/w8iF0vzvyW8Zn7BvitJx49pf1i6+nLM+7wf3/uv+Z+AXke4a/7a3+c9URZ/eS+cHt6+pB9G8JroPeX9pvx/YPyT+EP0ceh1ifL2GcpmPXnUeh/jN6h1lkts/5S3in5lPSY/a3P8HM2fV2V+6Pod9H/xOR1G7/3ofcu/1jF/7sW5U+d7fvo59wfVi/z00j03mbn18m3Oedd9HEruFr9a/nbL9YDU60fLhCvkic4MPcL8DWCnV7AR76v8109Dp/5vs7+4dR877F/99xH4S/Jv3iDPzWI/q3b6tJjQ/gk7a+wvu+XPBz8PaR8sPi6Al8/ik+D8q4H+e9CN+9KjAffER+n8IuN9Dwx96lLCvB3/QxBN/vnyVdL/lry2f5Bvpb0vlh8OQx+a9ZR6Hfmdz3oOXn8LXJPGD465wLoL+Rf2S+8BmxPP7P5y1hwHZhxVtn69XR62sqPjuUPVxVAqaVgH/CW7F+ya9ZH+b7N+mgWugPotan6z9Hf2uQbs2vu8eT+ztXo5Vw659Q5n05+zgT2L4GfSl85T0k+Rx1+1h2e/YKZxkH2DX7Ex1TzQdZ3s8GW7PeR8fYxmPdPTkBnDPuUxU/OSXN/c5N2V4jLS9kv729U5k87gVXA5G9clvv9Recjua9bzff/vujerd4X+T7zPTjTOcVMeG+wPXm/QC/rosH0/yH9nfM/9iFvE++HgyPAvflf8hOTN3e1cbKMvj40bt/BzyiwF7hO+Vbjdz382rwbgO4l/H6J/n5gh825b84vEv8zHxTnH+a7IN85D6Ob8T9Ivxn/jXM+m/dh6KcDejn/aJ77JNm3yPrJ+OiW/XB++4Ty5/lXhaL7xblv/JPyucl3xf8p2vcl/3k5Z9PPHcpniUfLsp+v3p3KhxXAf987WQSf1uTv/A1mzxE598dP7ifeqjz3FHM/cbHx/G3yo4zTjfTwjHh1Orvebjw10n/uL+S+wnx4vj++J/+DuUdnfL2R/Xj2uQM8Ex9j8bc9PPfRnyLPFfibj98F4Nvm+7n4G8s/52k3LnEAf7l3mPeXks+S95d2xe/JeVcFnvv//Uv9Xe5ifWxEfwV5q5OnX+Y35VX121m/5fL9qd9L2W8FuufnfF88TNzPPPBM8oPQz33om8i/jH/lPtqc3BfKfXn0XxXfXgZfAjtnv5X/JF/6bfRKo7+Kvj4A3weTb7APet/TR+67fZX7J/z1SPK9qd1/1K9A3mX8s6v58Av+Mtn6aGnWgfgbhL+fxMtp4sD+6nfNOY842Mf66M8CKHUZfJ31XvZVi/db56r3LDgP7Mne9fC7V+41GV9dc5+FX+d9sa/wVyv3U/GZ++15Tyz32xfyj2/Z/S381qXn+X5fAD4LTs/6Fz9DwOJ9urYlBfia/vLuR95neVM/X/q9LPws9ttm3H/s9974vTDrHf0mP7KF+efe7F8nH0D9DvzgzczvRfs62efJ+cDtRe9R3YWP43KfIPcl0Ouq/NWMT/2tU94y76Ghn/227L89n/FOv8uUl4GX0l/Z5OPm+6CEfH7P90D2fbNPmf3gnZRvos9djZPdwBdyL9V6IPeNci40NPcd6f06cBv95x72zvFz9oj8ef/vZfsi2bcrfp8vefeJl4mfmT/+ND6Tp/cV+yVP717jY3NJAR6q/v7o36FdY/y0xV8d/pn7cLkftyz5cMZB8v2r0mM1MPd35tB33k0cXeTvyY9OfkPypJMffYV1S96rPJW/P5r1Re55o5/3kDK+sr4fW1KAHa1/sr6fkfWBdtPY61z6mU4/2Q95Aj5G/xP9Xg//ua+V+1kPW9ddRF+5D/icfrrQ59jcBy8abxXMH6XAhfSVd5h6io9drEOa5LuR/rqYP8rkPTTtR+R+N3lK0NtNvezfVdD+evo9U3x+Q/uj+FPusRXfX7ufPe8D44/19Hcf+lvY8c3ss5H/RfUPpa+X4M/hpyZ/3xncBUyeRd6jKb4/l/y3ZfzjF+1G1f57/XLsmXcdir8PB+X7UP3sSyZ/7TT++zb4ojzvvHez3vjKO6GHFZ0/PsSuJeyUfLXDc7+Kvn/k15/xk3fxOSvvApLzBfo+KudD5F0ivmTf5eXsr9gPvBT8kf37k3OF+JV7biXiV+65lSXXCHFhB3hP9n6IfbJvcChYG383in/Z192DHC3510byVM68o95n2mf+KJ18tqL3WcvQW/bHcg/z5uS38bvk6Y7H7xZ+9Kp+a9PXOPItgf9ZUoB30/MX5qvH0H3Pumt+7j8VfW9tFg9ybvpW0XlqI/b9kN1nkuc78uTdlLyXkvdUhvP/x/IeUfar8s5Q9r/w/RL/GEvvr+KvuvYXFr0/UQq9nJ8/Ba7h3zk//1/7MlfR/zviZ1m/F99Pzvo9+ZjJ08x6vjQ7neX3lcZRGfznfYgmYGMw7+ueTb95zzTvneb9o7ybuLTofGi19tn/z35/9v+n6H8yfbfPuNI+77sd7/eS5HeyR87bxyvPd/vNuZdNP/VLCvBh/jEJPCTrOONygXatk4eHv/9YD49RXkb8GZvzV/NZRXCV8h2UlyPPDmBZ8LDct2PfD8Dn+Elt/D9clBeRPInkRzRkn4yD5JMdof+8r9QezPtKeS9nv+QJ85/ke9+t//++G6Y87z0/kPNTcXFqSQFmXZD9kd2tj3YF14HHJC816wt0T8F3zqfvMz6OMc8X378+Qvv9ch8PnQ/QmUvOR3N/hTz3kWc1f5yjfZ/EM/x973t0M7gpeb75Huf3ySdY4/dWRfe/cu8refDZP1yY7zH85J2p2D/+mbyz4ny0pn5vBha/x10l74pmPxGfvXI+w692p+ej4RerN1r7E+AL4XkPqhN/yzsZZ8Hvx/8D5Mt7pj/hP/lH2V/NO9jdwLx/fYj2lelvI/legH+a+6l5ryN5EOgPN57mketxMO8BVUu+lPaJl4mPuX+R8/bk5eb+xTjxa23u15onSvG/w3Oek/NR68/xyWNBP+dJyUNM/uHmorz8h+Cv4K+W74GN9ge+A6uiX9G66+K8M6j/5AHWyf0C65YN1jHJI9zeeH0v95GTf0neW/DVNO9Q8sO8094r+xngT0X5ffWtX/J+Vd6tyvtFfei3qnF6KXwgfgawZ94z2sZOG+ivPL7yLk/e6ZnFvzqaDzqAy9jrA/obyB6v5b4VOrco35f/PKa8Hb564+dZdOeHfkkBDiPnvuTPe85X5z4h/q6l/9bsPBqeeNYu533638JuGb/jxP0h8LxH/TA9dDEfnQvWYIfDMn+GP3zlvbFa5C+nv9yPXFB0PzLvbz2WfAf6yXssx/HnvMu+A/x5/t2mpADvBasnT0f7fNdm3I9O/eS55D01cfqZvDcZful1BD96Fr4g++PGU+5l3ZPzyryfknUp/ttod4zyfYyHBsmDy/4A/hbw1/rwEeTLO+XJTzyE3ZOn2I/eBxt/u7JP1o9N6C/5/Xk3uSk+T1FeMf+fQlyoCz8avbwruTVxC/4ivucljwb9H9gh9+jfFX9fVV6HHEOyXi26l7Wj8Z3v0+L76nkfsVLyK/POQ9Yzyj9CfzJ8ufbf5B4N+fN+WGn+n3fE8n7YnOxHg5X4w/2Zb8iX/P7N2j2c82183cKeO+beAP7uSz5H8uzBbtrfwu9u5je3Jr8B3eTr5P2v5O30yfcF/8x7e5/t8Pf+B/C3rCtyby/riwn6/Q+/a239NZkceRch7yRcy3610O+h37yzVU48zntbP1tff0yO15Jfp/8n1H8crBV/y36X9Xb2jfL/A5rj+1L0tqf/vD/UCf364tU+YN4D7a68NTnyPt/Z/CXv2+a93h31M0S95F/1J9ez6uecL+d7Oc+br3wRP8z5XtbFU/BxIv6zTk6+Um98F+/P1SwpwNzrWIf+8cq3sH/LrF/Vy/p8sfi/RNx/Cr2Wxv8e/OkT64bj+MlmdJIfchY+y5Aj+tucdzmNzz/AOfjLewCTwfX2j/I+QN4jqIa/UtnvSnxUvsm46oN+Ge3PxN+J5DhVPMr743m/qj+58o5VL/5xi3h4FThE/LwO/f+VV5fx2TT7Mey6gl5zvlLCj+uC14j3X9JvifZt1P8T/VbxJ3rJOcDz8OR/v00vTflPB+N4XvKl0CsLH554ob8j+dMN5D+L/H+SI+uGrBeynsj6bgx+RmffDr0eOc9ll274mMzPPqTfVtnv109//C/M+y/i8y7g1+bvRvgbXpSXdxc8+Xn30O/C7Ncm3xP9RuaDhmBj8DL85HzxLu1yvtiAfdri91d6aJd3EJRvQG/T/1jfZ1z8SV/d2Sn5dckP+Ba8Fky+QPb3805O8fvUrYzbG/A3vKQA8/5SafK9xH67oHsV/rfkPMc65nn676XeZuPtNXb/Hr4KPx/me4K/5Z3FvA+V85O8K3Ni9j/pJ+8sJZ8n/2/nhZzv4m9t7uXj80T9XUf+66MH8E7lPXO/gn9ekncexK/q5req4BbyN8HH43kvi7zZd3wJf3nfcRy6z+aeH3ig8uSP1y7KHy9NX6Xyvkfuj+C3DP/J//uqAC/R/wjroTvBO/LOCH2dwC/2zLsy9D+CffK++Mu511SUZz/FuDwNfy/QU2n1E0/2yzlL1mnKs2//Gpj9/OzjT2LPcfR6CH3lfaC30Wunn+Z5Lxzf19DXr9YfW8WJIbm/zP/Oyz138LqMJ+3yTmzx92hD888eeZci8yX/qZH3Oegl9xiynl2S98sDtc/7ayXJB1f/I/Jup3wausPBzujn++BZes156376SX5BRXoo9v/c7+yU9Z3yvKeb93MHllLPuMq91s/A7cW7I9nhKDB5wE/j56TcU4Yvy/c4PS8hz8HJK8n8kfwt/W/HD7qo1918tYBdL4Dn/8F0zLvb4QOeey/Lzde5F5R7Qv+9H8S+E30XPQgemnuyyWcHV5uPBrJH/j9G9h+fK9p/7EF/1+d7Vvk92ie/KPkCySc+jr+syf1G7U4Eb9S+IfvuCzbK/WLjr67vlRJwb/AdfvIN/xpD73PJPSn3d/G/AR/Je/k07w/pJ+8i1VAv67O8i70SnEJfeR/man7WTny5l/3y/wcvMC4X4utB/Ma/7mbXg8WFFuCx6v/Kvt8l35A/Xpr7zfjIe7J5X/bGovyq60sK8DqwdN7PyPtS+utEj/n/axX83pU+j833Zdan5P8Sf63zvgz5cl8797gnKJ+L/9p534VfXGIcLiHPB+bX5cnjpY+8F3ogfzkAbAZeqXwP8TLfzXv7Ds/36wzjbja5D8r3DPnb4+dY9t9O/Hsr5/zoz/bdeAlYBv/1+NOovKdDzjXk722+uAScWOvv5bmvU5becj5+Kf5zz/9M+FP4zPlN1gebyTcVnvXBIfSR+4rZB8r+T/Wi90xnWT8PzXlOUT5w8oMHad/feM39v/9zP9D6rDG+//R99k72v4yna/Sf74Hk883h712T3wT2y/ed8qni887olE7+UfIB6Tf3s3Nv+yby5P7WAOO3k37qF333v1WinPxj8v/kyJF9smOUt+VfJ+TdZXwsRP8n+rjAumqh+S/5sV+yz59+/xrePvdzyZ08vuXw/P+CA8ib7+Y38Lm78vxfzOzXFP9/zM7G9ZfwkfS9in6b63dd8vmNh1a5vys+DRQnO8LzDuedxlNFcfwueOLfWP6T+Tj3fRrCJ6J3Ys77jd/kubXGz8X435x7ufibxV5PgdX0/yu5km+V74bi74lS+q8I/gzuRB/Li+xzlXaxz5ElBdidPnIOfYj6Ob8vflcp9weqJP8Hf5Xg32f+YO+/wO7ob8d+H5uPzrVuOi3n1blHAK/ELxarNyP5JeLFu/y7LD6mK/+E/+TcPOfgX6L/qN8X5f1O8Sr/36Z+0bh7GyxNXxeIzyvZ7XzwZnAz/29Df/n/Fhfyj830UhO/XdjraP2/jq+jzEvF9x8G5NyAPO/AX9Xfbvz6EXL9kfU+/lehn/VbR+uF3Ocfxp5ZX9Wj59znH43/c/POHf96mn/XEN/aqpfvsQH08AV75L58/n9p/r/bVPb9FZwo/uyo/mj1R4Htk2ek/UByZjxdJn5crTz394vfDz8+7wvSZ2/x41sw///ngPy/CfZ7A/030S/+/2nJL8s+7EbjYRO4AexofE0wH9xhnq7NH5dnP4W/5N52N3jub+f/lOT/lkxN3pnym9HNOcwn5G2j/CTtOoB5tzzv+75JvuT95x5A8v+L78vnHn3On1/K/qF1VfF7szmvmcM+ncSjWbl/lfMR9DIf5/+LT/L93hfcmPtS+Z7gt6NyDl50frs0791nPUi+Rvr/Ed1fs06CH573qvj7VuVHG09HKM98kv9ve03eI+d/v5Pn5XxPqZ//P1Ji/KzEz0HaN9V+gfGyr/n7KOMk7/5lvyPnZbn3eQN5n+XfrfjFXua3YbmPqP0X6uf/TOT9xJz39lD+jPp7KC+lfLp2t+H/fvUn88+j+E1L+K7a5T263CfN9+Gs5M+hm3dlkxeT92XLmE/y/wmHaJf/T/id8Xpt0Tt9eb82/z8l/y8l/z9lKfz/AdPI87d4nHXdefTXw/cH8MrSoiJbUfJJ+VqKlCWRkGT9lkgKiSJFRSl7SUhJQoVCRQqVLe1EliSiLElZQtZkL4XK75zf+/F0jvc53/c/98x7trvNnZk7d+b1Z/VS///77x4F+EStAuzQoAAf8f9EcBL4YP0CbFFSgDUOLMDjahTgHepvk/b2L8DzlD+jYQH23KUAe4OXgff9pwDvLF2AU8Crty3AYXUL8LsqBVhrnwKcW74Az9H/dnsWYEXwyf0K8IWDCvCDqgW41P9/gWvQt+NWBTi9LPylJylXETwM/fPq6Ff9C7XfBTwJHlcr/+TeBXh5vQJsh0/nqP+8/rYHu4OXwr8Tfv2G3ivVr4S/35Wgy/8LyOdq/BtZqQDvwN/t8Le7/j+oUICPghv1u1z7Q+nPbeDJe8HjgAJsia4W6K27awH2ge9o6RHgXPjVJP9ygeovB9vC43t0zYDPC/j5jvSROxfgPOUHbV+Ab+j/aXSNVu95eF+H/uPLFeAr+xZg4+0KcCK6qsHvN/W+lL4VntW034FeVpWuCu8S+vC59p6jT2/B91nj7R18WQr+pP3PdyzAU3YowAE7FWAT+Bym/HX6aYPPxxovP0uPp0c/SV+M3vn4ciB9eUn60IP+Xf/Buv+utx5/j5P/i/6bS28P/wk1C/Bq9B+hfm/5fxpP1eD7NrlUI9/59PUo/J0rPUv5p3YvwD31XxO8DJ8bsh+xM2WN8wulR+m/Dnm9qd2x+m9Bv7aX/x3+D5fedbcCfA89L8aOomM1vDtXLsBlyk2U/yp8ntbeQ/RnvfRl8ruDPcBV6DsDvtuT11L51aXbkedV+N8I/Bv8Wn8/0Pv3wUXafQx9j4K7G/8Pwa8yed6Cnufkj8a/seRf3v8N6NG79Kei8TQAPcP02xz+r8N/iXLD6X2J+tcbv4/Jz7wxQ/1+9HEA2B+8Uz+7wP/8/2HfXzK/XaTdXdXrq/116Gqqfml83U1+e/PC2eA5YBX866D9ocbnD/4fpL390DUenm21n/n5+4rwVu9o5S7En4n0YQL4qfFwLn5/i97ocwX/f6Wf3vJ3Rv9Wyr1PvpXNC5XA/fH3VPh9vU0B3ocf30qvkx4H/0PIsb/2X1L/GOP72IxzcBO+LMa/HdnBNdL34cM68hoaOavXFf7N4DNh6wJ8F7wGvc3Yk9/024k+Zx6ohe4mxn2t2Dn4D1BvVgm66O+76G+LX6+Q/8UFUOoG5evAu6fyA6Ufhf848mqg3dHk1Uv+KvZqtfwj0PWl9EfG13B4nyn/K/o3rHYBtqdPP+jvOenx1Qrwd3K7CN03w7cbui4Bu4Kr1S9HXl3g01l/X0vXIb/S8GoE38yPZbM+U/7QzO/6vwZ+fcBu6u2AP4co/wJ4vf5WSr+sv1Xw3QWfaqrfz3heRh+qkOda+PZA3znaq00+z+PTAvNLX3pYF/yZnGMPf1R/JT7HPg5hr+dZJzSS/wN8dzVffmicLQdHmf9Otq6oa/ydJF0FfceWFGAzcL7xcAr8LjV/dAf7wqc9+krjx9fkXkr6IPW/wbe16CuFH6/o/0/5r6Frqn7u1P7j7O968j0ZvzrJzz6jDLllP9Je+2eRR/msF8CX6cn72r1KOxWM8xu132CPf/ffcI9/4/ER/DJud6UPu5PfBeRwA/gQOJD+zLcfWFOmAK+Rrodfj9OXO9mtgdKj0DuFXXy4RHnpa/X/Mb5OQW9jdF6OvsPMF4PpTSPp5sofr/xC+PxNf25Tvwo+9NPPtsofhP/Z38wGs7/Jfqcc+zqQ3e2Ejq20e6X1/jVgdXq8XD8Hx66C69X/A/3DjJvB4FywR9aD1m0b0NdR/k3o/5p9eDHrH/0vgn8FejFf/pfKvy5/FvsxFT0zpVfA7w36Uor+LJL+Wv42xkNXctlaurb2h6tXhz60xpfO6Dk385X0hfA7Mmn0Xq/c5/Dcifx2Z6+nsgvnk9fh+l+JH0O085J2Kqh/NHyPAWvqv1P27+zJPuTxtvlsW/mD9b9B/5Xwe2X2i/qfTC8bsy8r5C8wPy/B19eka2X+s+6tTi5/6u9hdJxBL0vgt5h9G4d/G/A//pHnYv+N72H6a4avq/VTjr5kf7Qw+03lsj/aTbvrtdcP/yrDr5b+/yL3+7SzCv9K629s9gPs382Z3/G7l3qjs3/Rf2fryhv135qdOCrrVP2fjB8L4PGz/ieydy+CZ4LxT3QvgFLXgW+ATeB5KHof0N/B4PWZv5Wbi08/Kn+j/k+kF73oyWvgkfj8AH0+SvpB6V/hN5/8Y6euxYdF2h9K3/7WbsbPY/jYG7/ehmcv6V21P9T+cYjxMRispf17pE/R7ijpfdRvRD5vF+2fXlX/gPi54NMdf06VP0r/9fBphPR+5Pq8+eQpenQTfY7+zpPujy8vSo+UP6WkABsavyOyH0LPbuzvWv3+AMaPtht+TbDO+Vm9DfSgMbxa6LcP+JFye8uvC+7g/xXZP+FHC/jOQMfB+JP1adal/5Wf9en79KKhdcAy6b20P8P4Pky9+Bsvlu5qPXER+Y2L3un/OP1O0F8f9Sppvwv7NYTcv9BOs9jP+J3YtZ7yp2QdT3//y4/YQ/5U+b/C/zTtf6//veDTgv34jP5sNE9dKf8/8P9MvbvRX6po/x+97YPf2f/Xg/8Y+rCF/X1Se7+q/y59+CXy094A66XztDvCOuo65b8wbk+w7lotXTP7Ze3cj54B+HEo+3id9FXKxy/4IfoG6PccdMe/kPX3AcbvNONtgPFdP/wnl7L6X5H1svbrKv8avv9kHj4o9oxcnrR+uho9+6s/m/5sNG4as3dD0HGJ8dhGP6XJe6D8mvprq9wG4/mD+LvM15cZ9ydpf7n8TuzCt9KdpTeTf2n/tyPXKuQd/9126ByMf4tDH/51U36w/59Me+pfpd4x5NOdPG+Vv7rI/xJ/TPwvMwugVE9wLFgWX3+RvgRcAvYmxwXk/xr4BTltpp/ZZ9xEXmPowa/Ss/BrBjgz/mj0j4o/K/svfFyrnT/IrwG6Dos/VvkO2RfBZ3/1a8q/2/9fglWV/0X/09jDA63P72bv3o7fAzxae6/Tw4HS9ditEfGHSr+H/1Xo1RL5x5Ffa/L7BT6XoLcUO72X/GusR6aCZ4Ht4ydTPuuC4vXCs+R8hvLPxF8c/UTf6egZRh+Px59Dje97yb1D7CP65pYU4Ifxf8PnfP3H3zVUu6dlfaR+R/3XJbcN+HOs9OXqXajfMcrvA/+58LuE/me8jdb+m+xzWfPrBunfY1/hex/668N3lvZjH+N/nRc/i/zeReeJ2d9/iX+75tyHfGvr9x35PditNuzWYvawnfGzwbj7mP36U/oa+RPMB/2Mj9fZ2Xfxqan0EuXf0f/K+Mfwoxo9fReflyhXnr7EXsSOnI8fbbOOQec36j2FP/eypz+BZci3KfovMJ6yD+gknf3AcHr3mPJ1s+/W/oux++Az7MOq+Fvg/Ur8pui8B3+Olb+NcXMJvkyiP2Pxb0P4D86jL2+rdxC6Sswn/eRP09+o8JseZH/6adF5zmvSL8k/qqQA/9Lu5fjzLD60Ir/O1h0Pw6cx+g9Tf4jx+YpyOXf4yv+b8Get9O70YBK9ugY9zcljDTqi9xkHC2Jvyetn7eZcJuc1H+DHmfj/Kfh97Jb+1tGrhspnHdwVf17U3jXweUj5LdIb4PUyutvAoz/9GYzO45VfjJ5j4n80vobnPFO/S+Q3IK9O6P5N/XnKLacvT8PzZfw8AR2DreuuNa5rSl+R/TT/Q3163QB8Cz616ede4D7kM1j9OdLbwXMiODb+F/j2x7fi9ddh9G4ZOY6QLqVc123/jUc36XY5F7R+HwGfeuz12Jy/4c9w8/wL8Hscv87W3pvqv6XfQfCrRv8HSt+q34Ni/8lve/ytBC7U3kb93K/dyfhwjPaWSW8lvw25xb/TwXrhPPCFov3m1uq9p50z1I//53l2K/6Jj6TPV64LfH+V/1TagV8f/NtXf8vp84/qD2GX1uDLVHbmZ/ral326V/2d1O8ifzF5NQDrg/snn9yqq9+Y/KZKzzT+KumnMph1R1f0dQMvBUfJH2u9c7nxWQ4dt5Dvvehrq3xL+JeXP4I9e9O+qqr9VkX8qVMCX/AJMPvIb6zncv73lXTO/65mb3NO9Tb7knOq14v8p/GnfkSe/ysu5Rf5iR9aYdwljijxQxfTuy7gHfKzT/8Yf2qQVw/8ayC9kP68i7+X2x9tpl/TtPu+/Ibs9Cb5j8B7nn7PRef46Be78Qj4HXrez7mSerNzXkm/Mz/eUwD/7E+yXzlW/5exb93Ai8Ay+NeU/bmBXtYHuxoHt5HrcHL4VXordLyHH69oN36fo/DjjZ3/3W9X8EL0rUr8QPzv8QNIj1f/XuPoIemL0XcL+bXRb33tblZ/K3iP8X8lfN4Y/5708fSyWSD62sl/hb6/iW+ZH/sW+a3GkP8Y5Y8mz5H+P4E+5PxyhfXspfD9QroP+irC4yblK6Bjmf4nGi/jwIfA+xPHYfxtQO/O6LuU/oR/4Vv4+Gji2eSf5/+c856d+Cx0dy1RHnyRHOMfT9xQB/XjH69t3FaWv5f08JzfkvfT5H8I/byyOP5Pux3pU/xz2c93BrPf31t/mdffw9+s6+K/SNzgnuhvjb7ED84nz0bk9Jx+c354sPXJ1vp7sch/e5H8C8HOYPSvm3XDcP8fKf04fGNfYlc6wTf25Qd69wm5n5lzovj30Jtz82Hs6xD4Jv5nuv5+UG6rxL8Z/9Px6yPpJ8jvDfPbSex/d/J9h76dm3UyuMn8k/OPm4y/j9GXc8b94dNX+5XReQh6DiaHN/RTR355/fyUeCzySNxO4ngSv7Ot8bi1/8sn3kz9T/G1RL9VjIel9KWU8ThQfgXpdfLfIs+L6fUS6abyd/b/jej9LPsJ/G6Dn1fr9wbpF9E/W/09tPdt0fpnFv6NLCnA9srlnHc1+n+W3hMel6g/B5kjwa7gSuuKVvh7sPKLrI92pR/lpOO/60XPP1Q+++rD8W0O+Wf83sQuNMO3Z8lpEjyzf1xRtO7K/nFk5BW/hvQz5Nu/KJ7zY+Uu1n85dCaurDje7Cf273TpJYn/UP8z9O8M7zfR/wL8PjBfXoy+8fZH2+uvNPnsmXgq42+A+ovsD6omfsh4eFn+/QVQ6jWwI1gJnjXw6zZwBXpeTpwUfStn3LYFq6N3sPXTlfZt+4K7y29Fvrfg+yp0nIQ/ie+YIT/xHYn3WF4UH3tn4kDhdyn9vpydzHnwA/Qv5+nPqh89fxp+5+z2b3ziv5+Cf9/gxyj6+xP8f5HOfNEX/zOP9NR/7FLsVA128sus37XzK3xG6O+p7N/gcxF6a9KX27Q/DL0Xyn8j/kb5N9OPJ+nXTdLHKT+bPtcn1zeNw/3wYyl8Emd+AzpOkR9/RjP8bYjfvZUfbX3yV9a/5Dw1/gbtr8W3jtrvhf6q9P8IdGUdmvVnX+V74OMK/eyh/jj6OAV+08TxdIb/JuN/kn1nPeOrM3zi747/+wrtx/99Ss4lwL7omZXzXPqd+fFS6cSnPkkeT4HvsxeT5N9nvj+fnL7Hz4Xwu4F9WgzeSx7Xkv+76HuH3blRupxy1aVL8LUFf0ETfC0+D83660Htly4pwJw/lpLO+eMr8Gyp/qf4s05+S/J5HX2n0r9lGd/4PQzdJ4KV4TVSe1P0Ux5d59G/bvIryL8HXZ9qfwl5J15jqXSz2Cf78RaZX/GxdOw3vZyceDvltpZ/K34tgu+J2adkP4r+Xcxz/4l/Bn+fyviD71T1NiaekT7VAvcqWm/fj54HwHHsdXl4dKBvJ4JtE3+CjuhNPXAV/XiZPGNXYmdm0qdm8Mz5a85d45/I+XdX46K8/GeMtwWJt6XXf5cU4Nbom6X9tcbzKuUOZm/n4E/x/YrMH4mvuzXxQfDKOU/Od9ZpdxW9/JWePhz7a77+Sn8L2ZH7tX8OPud8JuegJyTeh/7MVH8L+m7V/zHK577BA8rXTTyqdOTdxbjK/qqi/vdM3JJ2m8vPeC0NDsS/jOfELydeOfHLp2qnP//UPDDxlPEnH4ofR4KL6eEK9E+D/y7afUb6tuw37O9PJ4ca6ChHP8qQyxfsRCV86qD9B9C1AP/3sF44Wv0D6e2WxGOFX/GvG5fxi59d+d/0ver/TfT8D/2+Sx6foyv3l3KfKffjcn/mqEDjoSm5l7B318k/G36D4FfT/LgtPdxd+g799sn6Fsy5Y+Lvb2Z/aoNvG0/v6T/nu6cXnfP21M7D9GUcWI0cPsSH+K1ynl7svxrDL/kdfEdZh0zLfTJ8jX/3GHJM/Nck+vYy2AvMOd+HxvOK+KXwJ+cmuW90feJjEweY+OKcm4K/g0My/7HXf9OjQ9nDCdrfFz+qgPuAW+R/rL3tw1fr3+70qwP5t1VvjvyqGf/6q4/e7bRzNfwuSjwIuz0AvFm5ztEbdNyvnfibcz6bc9la5JDz2d/MJwvND+ule+LjNPWuRe/T0hepfzj7nLj5scotQd9Z2unu/yHwy/5pOv3omfgd5V7I/Ut6u5mdeEa5Nvgzh759p5+m6P0i6zv2J+fvn2jvi8R3Kr8XuBI/e6OnKb3fIr0S3ofn/KPo3uk/6x78uSv+pPjLcz8n9wvkv43eK+Qfp/5meDUh9/PIeSv6XXwfcJb2Hsv5L7mOB8eBPdTPfdBP8O+Y+AUTHxJ9s75I/OxC9R8ogFLPgheA1XL/ET/bgVfBf2PstP5mwvc38/MY/M1+7KzsR+HVLvdljdvozd3s+6GJozEft6MHZ4Pvy8/9v8ukH8OP3P/Lvdc34m+JXdB/7qHFb/Bl7nuFj+gun3tD2uuMvpPsexMHX0G5C+N/pX8N8HsP9J+e+4/kOY1+n8pOdoTPXsbzKvKrLX28fjYpV1t7uSe+HfpP0t5UdJyYOBP0z2C/5rFT06UzTvqzj8eZ/66XbiW/+D57zt8baX9tztXBV9nRBvLroL82OJ89yP4+5+nT4L0P+vZQ/wPz1xlgE/UPR38VfMs9sTkZb+RzGXm/IL8f+EPuT+Hzq+DvytdF507aH4S/Z8LzjvhniuJLaxkfiTNNXOl71jmJN02c6Xj0nhi7gh+5v7WD9MrgA/9L4NEIvoPk7yj/g8SfGW/PgM+C8dfNgc9H+h9JTn9LbzAfbgT/yH3u3HPR39051866HP6n4OvTReP3KeXWSCdu6UH9Jp7pNPa1JTxbSZdX/xL2ohe9nWA+v6BoftzeODlLOzPiXyzyN70a+ed8k9x20c7d+FMFvsfp5xDjJecfn2b+1P7NiZ+N/4v+fSc/cWg5p8/5/M3WW5ept0Z66/hX4Vvst/08dpj9zf2B4vvviZt/JPMbehI/f7l2K0nPSDwH+Sb+fT5YHJ/QGD/iP/8evvGfVzaeh+nnTuleym8yvy3V3ubcX4BPT/Tck7izvOsBvyvYu5bo2osd7K7+SuP2WeuXluajxDGMMu5XaWek9ND4O+GT+9sn0q8jtJ/9ZPaX/cGf46/P+S55PY+e2eo/l/jE7LfhO0v+qfBqAN+TpZfJ7574Hf0MQX9z/Fhgvpmc9S36KmT/QV635HxOubu0fzQ6nlZ+vXLTEz9nXjgwcWnKN1X+Aenx+sm6aYL8C+C/o/HXWXqM/tca7zeZpwaC22jnK+N3Enn9Bx+i/2P1e4D8H8hrNn5fTr65P3MOOFT7+1hXLgcX298lfmEWfS4LTjWPJf5hjvkhcaVPSOd+86vG0/Hxp2W9iz+r2PN18M+65kztr4LPcPjFXsc/uzv9Ot3/Wadnfd4+8Z7s55X4+br87+D7Lfg92JoelCmBN7tVEbxVfzPwYy/82R+smfW1crdIx3/dCP1PwO9j+nEdPbsU/xKHuL/xMR69M+Af/+50fLsdf+PffRT+s9iF4vcSpup/SvaJ+vtD+8vo1zj/X+b/ndFzKXzuII/J8ktyf8l8u3veITD+J8evVgD/xLHcC75ddD6QeyO5R/K8/Ml5DyTxaugfBJ/c26uceGl8GQ8+iH+TSwpwrXk498NzXlZNezlHW0Z+S9FRi5y/Z5/KxD9F/2drP/e4DgYfz7oFv8YXya85PPbD131zby7+EXqTOONN9HuR+kvYxwPzLoH5/yv4RW+rRc+K9Ler9WHini+Rfkb7g9jHwdrL+fQQ6QH07QZwhvLfoD/jby34rvVRxt/6nKfSw3k5f0Jvsb96Ojn1hd8x6M043EW/GX+r6e94fE08YuIPE9f4EPhV1rPy68Mr64ez8Cf3Um7Cz9fZiZnSc+X3LYBSt4J/Gqe5v553MeKXK34fI3Y370sU298ewS/95V5g3u8pmt/aay/3LxYq34U+LNR/zjdKmW+/ZRdL7L8HSW/Qfo/c75Y+IOctxvUjeYcBH1/K+Rr9XgpOod/xww3E71vC94xT+PcxXn/MfbW80yJ/Z+vLMdrtD56g/2Xsw7nw+x5+72s3fr/1Rf6/z7IeIZc64I74l/cf3qMX4+G9J/3oB98nyO9a7T0C/yekG+LfSnaias7D1M+5aM5Dc176sf4fzfsyuWde5O/pYt7MvabEE+Z+04/sc/zlHci5vva3aL8U+nrBp5X0S/BPHPrvYNbn8YP+AJ8S469x4uOtCxI/PxdM/PxV5Jv1Xz/prP/aJR6dPl1FTokPWph4afQOomdr4Z97yydl/VsUn1wTfS8kfkY68dQVc//+f7wTclfi4cCK/s/55RTrp9PIpaH69RPHh5+l0bMvem7P+TL53I2/s/FpO/xvjZ+H0vsm5D1FO2X830r9MeRzPfpvgceioveKTqAfjbVzgfrVlRsMv+bauzfvVMSfB78b0L0feDh+3o6OV9n9O42PBfq/q2i/m/i/xAMmvv8s4znvMuSdht30P62kALtlfVbkP45/J36dr+EZ/84heb8r6xjrpSZ5v4N9PcS6f7H2v5bfTnvtwe7ayXt7e9D3VonfLPIfvZl70do7EB9OSvwnefcF62oncf5nsov708/P6END7XSBfznry8vwr4/+vmSvbjauvpKui1+5Z/6HfitnP5r1nfF/MniDeluhL/chst44MOtD+V2sH7Y2bg6E3yHyX/D/6vjn/L8Ofxriy8Fg7rn2y3kV+S8iv8HS2Wf+TG7nsRvZX5+C3jngOnQ0hP+GrBfxp/ieefxvuV+Ve1UH0//Ej+/N7uSezwZ4xD8z3XiaaF6qBN4Erzr4dw9695bO+mIiuX+QeFXps/WfeOsq8BpJD3Le/hG96mycdAJ7yb88792Y10bj8+kZj+bvw3KPQ3opvtWLn5M+Lc88Bv+R+Fq8fhqE3hrwbU5v1rO3e2sn/Dgbvo/AL/yZgr9TweMzzuFXk17Vw4eZ6Mi7WveaT442btYo/0fim/W/jN61zP3IzFvV/01f18RTaH8/9M+Szr2EUehvAk6kX22yPkHfmdl3yD8y+075y+CXe1+5B5b3Y07U/9bqDYo9x++/8GNs9j/Sia+M//mQ+Ndy7pz7QvTvSHR/zH5lf5b9V/ZdG+hL9l/l2NdnyG8W+Ab6TsXnGfqNvybn471LCjDxtnlnKe8rZf57RH9z4ZH5bzH9P9A64HF86Jn1PHz+Ms7vUa4VfK5U/r/S8XMOwL/EzSeOfiWYONxtEu+ufuIhcz6T+yNDiu6NxF+b+Tf+54fRG/9z/KqHR89yPxYfdmKPhoPzrKfv1G7iRxI38hS+JH6kov4S9zlTf3lv6QR8yzsrX+Q9k7wPxF7ead9/h/RuiU8vshcZZ6Pxq5R5K+cfHRJPS74P0Mus17Key/lWlfjH4XccfXiYXN8oKcDF8Wurvw/+1LO+eQtejdmzu/Sf985a40PeQTsCnT/7v7r+W7EzK0Onfq+BT3v26rq8L4Xe6Ylbynk8OQ1hr95i308pup+9v/IVjON1xv/D6DuS/r9lnl2KX5vzHgk9ngc+n/jNxAcXQKlJYD/wT/zfCd65l9sW3rvGv2z9kHcamoLZD5WDdx1wbzDr5bn0eo154Tnp2+DfJXHh4EPgc/jfpqQAP9VfG/hl/TqH/X8Jv06PfyX33YyPJ+QXvxd1BLpzv7csvG6KfOlHi9CDX6fgT2v1w8ee8Jye+A/95T3rvG89U7ldYh/hd5fy8aNWQ99nyh+dcw7yS/xfVeXjZ49/fXbuKaJrB/Xbwud3+lsm/irpvG84i//6ceP8R+m833WVcVSG/fhG+jZ8+Tv7EXbvLP0OgN8J+v1Quezj6uF/8Xs5eUenqfrvs2dvoq9PzrHgf67xsMm+pDR7dKR+Juc+EliZniaecarx9pB+D9Bfl+z/8GscO/Ez+zQ/58nozjshOxrveS8k8XsPgp/CL/F89eB1kXRv/N0BP/5T9D5CGfB0+Tnvy7xYPF+2Y/eyX8w+MvPXudq7Qf0W8Emc5G743Rq/8z5k/EFVE+/PLj8R/6t63+Z+Hzl1kf5F/9fg5+3gVeAc+A9gV2fQv8OkNyX+Lfe7i/aH2S/+F11L4Xt79FX/iRNNvPc/71HRz8cS90+/tjO+n1Ev9zvGZR2G/7nfkXjt+APPUC77jdL0Me+WXoG+vGf6Af2bE7+edEn8OfT1ZvRdiS814J/3uF9XbpZ+tqWfg9E1BFyR+Dj8P8n89qF6axIPkveptBs/U7F/KedeeTd8XPwreV9E/V20v6N04nsq4cdY89IEsGvW8fQl729Plc7723dlPYGuF6U3ys/9r9nqbx2/pfzFKe//nM8uUf5F9mOf4Bm7Tr9eZRdyXpNznAdy/mL+v1g72+a+WM6p2PNP1L8/cej4l/eay8ofkHN9eH6Rc2lyaaH919Q/Ku+7xk9gvbW3/gfnPgx+9NTP3dLZtyxAz/XK19H+19k3K593/BdJF5+f5Nwk91MTV5Zz1/1znorPiTdN/Gl36VdyHkUuv+DDC/icuPJi/0f8HgPhd4/5aQW4N/s3QPvbGR/XkVN56aezf4bX3vDvyB43QF/u34W+0Bv6OmhvVeLapF+A5ze5Hxp7nXtE2mtO3tPQt1o7/TIv6z/353KfLvfnKmn/UXj1Bacr10v9Q/xfPfcg0J/5vBl6/sL/zO+xL8+bd07IuVn8G5k/6Elf+noa+bTPvgk9WefmfdgO1vPXKtdev2eD1fHrLPR8i97Ef2fdP0L6Pe3Hfqw3L+0HZr2R+xFPWQ9MYUfi5ztW/ZwfZV7IPJH5oaF03lfIewvxj22DH3mHPOffU+WXM+4f8/9+5oNd8n6G9nN/fr103gcsfv/lqMQnZT+u3cRnNsj4zHkKefcGd4NP+Lqt/7/Wz4PGxxZ4vE6/3tFP5cSD4WOn7O/gVz3rO+lt+OP+YNd+BkvBfxJ/w/ba7Z31T+L3pRNH3hXM9z4WWDfvU1KAp5DHRfQv/qrsq7+nj9lftyL/RmBxfPUjuR+ov/74lu9fJP4/7xZep1zuA+S92MRb5R2ZvL98Hr08E2wDDqVn8YvkfY3bivwki/HjTbCj+Szvc+9JTp9kvwnPNvDPe5x/05ezzJc5n2sWvwF4LHhN/MP04y/tPGq9lvXZsfifdyjy/kTn3PuEz33qP0suteGb/ekReccDPdmvtkw8Ru7f5r0N9Gc9mvXpW/HnSq/D77/08xn8499ZRZ9/NO9cxs5MgGfGb96NzTjO+M25VPxyeZ82/rqt6PcWfL3UfDFL+eNz3z16Jv+wnM+h5wz05N3r3bO/LIB/1qtdpHM//kntxb9cl94l/uxG/SeOpYPy8xL/nvs25ufa0vn+QbH/OH7j09N+vncRv61yeZ9nZM759ddL/iLpVfjSV/3i9c/VuUeReDb1z8r5o/R88pwFn6w3t9de7iMuUn6a9tvRhyetm6+lL5Xw+3+9a5jvF9SSP4D+9M77LcZXZf1/EPsP5v71kUVxvY/AM/G9+S7Cn/hwjP1Lh7zPov+T0ZV3/3vAL+9FztfOfP3k/cg/8/4d+BeYfccviU/W/x/0413prvrPOiDvxD0Mj8SL5j3ZBrn3RH8aSuc92sSTfiS/hvkl77h3g09Z+S/Bd3m+Q2e+ynu1o62PauD3q7k/SD4nGR8ngvEHTyanb4yXLcb5Ouu/fBct/vn68Hwz/hL95Hsuib/Iezn5vssH8PsSPcfSwyY5P2BvW9G/5xMXo/ztiX/NOAHzfaBv4X8B+/Cd9Jz4txNvYd2fd1D753wGPnsof4J0PfSUyff34HkmuuL/Ku//qcqVlW4sP/HUibMezg7lXGAL+3O9dWD/+IPh+ad6s62DhibODB9yvpFzjZvBnG8MyPcLwMvpUebbzfmeXkkBNoufB383Wa+Uzv0D5X7NPgReV5sfWkt/Y3zkfci8o1D8/a529OMssC2YOI6h9D3nxCfjV+xzxkH8VhPIO+8fVWPv7qYfI8D4c1/C37x/kfsx+Z5R3s16iNyL38+KP7MdGH/nj7m/ho7c38t9vh7w/x29+9K7jdLD4Jf3xH4Dj6Vn+d7HUPZ9oXG5kRxK4dd+0ifrfyvju7L+837E5/y6Rxa9JzGd3kwyPnctKcBd0Hszfh4Ov6rGX+7J5X2UvItSGf7Xwr8eef5GD8+jH23g14j9bal81lXx/1+Z91lyDocf58Fvov4na7cq/I9D3zvWpdPIPfFsiV+rTX8+ZP9Wkk/iuWYYHzPzPov5qzv6m9CHMXk/Ifd26Uf2S9k/1VU++6dx6CmPzgrg6sRZwy/vK1RGTw38Xir/MfzJ94fOy/3+AvhnvbUZPoMTf4lvg0oK8Hn6kHjiw/MuIbqrJ24UfblXlPtEuW+U95HzncR8n+MKcE383XnvRXsXw//27F/1Wx7M+Vv23/3y/hu8joodUv8+/BoNjgHzPYAL8P9wfM9988SvlmeP8/5TWenfcz8+57Pkm3cM7tZ/R/R+COa+Ufwvh1oP/AEuwo98v2QEfPM9xwHswE70927jKt9H+4Ge5vtoOU/N+eoA6dr6v7+kAGeR8xjp5vEPm09aKl+8v+1uvC9U/3XzwWfKN8/9DfbnUemc//6Fn/lua8ucX6GvInk0ouc7geOyvrLe2ZLxlf1/0f46++rcY87++sbEK8evmfMl+pH3mc9mP8aBeZ8533vJd2Dy3ZcH8/5F8CPHo+J/yTmn/tbhdwX6lPOWpdYb74DV8fmcjEN4533Z1upfgb4asZvo/i3nNfA/jbzyzt6f9KQd/EvLz3cllkvP1f6T+L0IHrdIn5d1PP50wucLyG1j1q/kezKY7zt8Ar/S8Hktfgz2KveP8r2HsXlHH/xU/dXaey1+FvPwU9qLv3xY4lbzfgx+HkhueXdvMzt8F/n9ht5PE7cM5n7Me8bPGvPU+eSX+1s5D8h3/55l53Je0Ev93kXrusSHPwrfrGOKv/OyLX373bpga+l8T/N8/e7Hrl4g3ZZ8cn52V9F5ds7POhq/X+i/nPbzfaH4XeNvzb3YIdJN6GPHkgJske+HJ64GfYn/X574muiP8TjZvH68enkP9w12pxu701x+3sMtRx9uBI9Bxwjtj4bvZv+H/vCjtfVNH+nByuf9+TnkVjbzkvRB8R/j1zpwGX1bmvcj9Bt/dPap2Z/m+1oT6WHiLPJ9rXwfOPPIc9KZT3Lf6UT6+U5JAb6Ye/CRF37l+81/kd8l8O4GXgoOUm5Hdiv3OIrvb+R8tNj/nfdLLoTvReBP4MfK575B7h+cnXiQ7FfZh3NynxP/q+t/d+28j995r2gyevO+5qaMH/l5X/Me+p+47+L3ML+wrmiC32XzTob2d8l9I/p7VPY7WU/Ffxd/buZB+Of7yBPif0dP4vM6Zt2UOP34P7Wfe4VN4XkY+BE6/w+H+xEDeJx13Xn01kP7B/BvlFZLaVG2r5AWFdnXyFLx2EUSUkQkW0ikbBVRopCtIiqVNpIKISRbRJbCkygqSykpyu+c3/16O8d9znP/8z5zz2dmrm2umc/MNfPpVr7k/3/tGxTwKeldmxWwys4FHLxTAV+Fh+xVwA9rFPC9vQt4WL0C7rFPAYdXKODISgWco/5JDQu4cYcCXleAkvm7FHDm7gV8sqLy8K3KBRy7bwHXVSvgI/Knbl/AQfh5ED1vNSlgaaMC/q581z3xKb8nup5F/6E7FrABurrAA/C7RPnz1TvF/9s0LWCjugWcu2sBe/v/QO0fib5Oym/W/sHk/wP5nFingCfAm+Uv3KaAH9PHZ9KN5E9B37DGBby8fgHnoaM9eZ4D28Gf0bGMfFdK/63+F9T/3G4FrEUuv5PXXM9/XKuA79PHfOn28mtuVcChZdBfpYALyONh/18Kq7KfFtq/l/y+Ic+tyWEX+Zfg93z8L9yjgHfR99/spQ87HVi9gHegd/uqBXyJXK7etoAfqO8CdrpefT3I4zjtT9XeUvJ+EH0N2NdJ9HumfjRAu7+yo4n4/hKdp6LjaPUvJa/X/L9CP3uZfNeyuw9qFvAb9M1H72j1v6eed+E22+FXvzqJHfwH/xeovxb57kpfY+lnPvnsTX7HwWvQd7HyT+C/rX5yEzqPk9+Tfr9gx+eQ29fwava2v3KfKjccf13R9zW5HkP++7OXevj9RLkl7HGE8keiuwf+j5D+UPsLyikPS/F/sfpfI79Z2i2j/o3s4bgtC/iM+jdsUcAO6n8RXzPgdDiU/q8gn5vUN5qcxks/I32zdDfPj5Oexz6PYG9fym9Df4vI5x32VSb+UfmW/NF+nt9AHzeg/2x+4Ud210Z6HX3cRl5ltT9beivp5ujZRB8Pav+/2l+Kv+i9LDpGwO/lbykdPY+Uvkj/rVa7gMvQv7P8Uul29HeodvvSb3v29TJ+RhkfJ3nuVOWay/8TPV+Rz5b8zSzyfV4/b6w/bacfVoVl6eNA9Q8jr1rK7YTuCujbjfyq+L+PejtIX8zuhpPLQn4w49gM5Y+Xznh6IvoX4ne58teQ53Gef5V93KLdq8wnhqB/p9IC3k9OZelhM/p+x9869d2bepWfzX47SD9CH3vpH5PJbQqcBC9G/wxynwnX6H8N0Lsrue7Nb7XbuoDpvxdobyb+z8n4g85L8HMXfjpLt9D+z+rtkHFXe1M8vzt5d2H/sct9td+JPe2j/Qrh3/OvKL+X5zeyw0ul6xvPayp3EbqvQN848v/Ac9vIfwQdN+G3VPs/0sd30l+T9+XaW5w0/UzzfD3P/4TesfIfLhr3qxWN/w/xK/35lR9KCzgRXWP0r3fgvnAdfu8mj4fgD+h5FH8NPD8JXQfR1576Vxf2/yG5fKyeHuQ3Vj1l8R99NJbfRPk/0T+Mv3mEPN4tW8AN9Hm/dBX1nYfefp6fhK+W6V/G/+fQUdH8a4D272KPO3v+PfQ1I9/o90rtnKKd9+Q/YDwaBofAg7XXTH/ZXbl9pHeV/wH7PRh/h3ruOfU3MX72RUdT6VbyD/b/HvrrtuobI93ZfOUrevxWehN9nUfue5SiE/4gf2f8bGF+0o2cns/4TB97GP/7wanoeq0AJbfBDvBu/N5p/tMFXgpPo8fa7KkueXWhn/cyn0Tvw/AheAg51iaPq8njDvUOQ/+J5h9D4fb0vDf6yrDPGdInKL+F8p+g73+9Bz2uv08g97/R1QM/d/B7g2AX86v0m5fQtZf6ZvHP7eQfQR6b5ddFz/vs4xP8NNPuYPmHpP+ad/+mX6yB+9BfG+PZNupbp73e0gvIoxl6FsifRD6XabdBxgP0XCL/W/xuMg5vhq/Q70vG46vMG1vA9spPpZ+K/EZZuFR7xe8f7+KrrfI/8Z/t+Yk10k967jny2VY9Xxq/K6nvHv74b/pdYfzaAd876q+14Sn6f1Vy+4bd3I/eR+lndcZz6cHyv/b8r/KvV+8B2t0fXq/cGvK807xpqXTstrX/Tw1mvNfeffhuip970X117Ji8f1JfG8/3YF8L+Y0mpQVsKb8le5mH/jnsv/j9Kv47fnuidPz34crvqZ/1JN8V8meyl4bsqC17Oxe9B/H/GX8PlZ6OvrxPdybvffmBw/C3irxuMz/oip5FylXiD+/R3kXoiDxPIr9m7Gx/2I38K/DPX/ArB+pfu8p/xfzyfHaZ+WXmm43570bwZOWOx8fF5hez4TWwM/oOw09r434r+I7+v1Xej8ihDj08RX599afb+PV+0uXJ5xlya2V82i16oL9pBSjpBsvTTwf83c4e7oDXs5Ph5DSRPXRnt/uiawj9zSW/7uR8LWzuuZb6W1XtPYfu7+Q/yJ7byf9b/svkPEH5PfHziPzu0nfgZ0ft3i09h37WSm/Sj8pp9/n4d3yfg79npQfKfwF/U+Fs5d/N+h+9fISu1vx9bfS15N+uk99KOusPp/v/HP3jZOnd1L+cPTSk1+7Kl0HHssy78XsjedVTvo3+0ll6Z3odjb/G5D+UnEaS0wLyP0T/uxFOM1+5IP1fe1PRdwX6f0FPffa/DX6rsdfe0nXpvQl+RqHvPvlPqL+t+l9R/7nkdTm9t+IHakhXy/xOv5quf6Qfjlb/S8a/9+n9BfTsJ38OvW8mvw/R96D63zOf2No84xN8/5XxkbzGw4/lb5K/gTyG0+vj8L2sCxhvKpPPQXnPQU/Wxet5bk/4Dj5+4g9XwlXwIPrbl328ja5H8Tcdf6PYxzeePyr9xPOnkG+pdtujs6nyrdnTKuW6srOfPDdG/aeTx1Pq3S7r10XvU3+o5yjPD5Vejb72nh+U/o+uB42LQ+FNyh0JdySvd5X/k3x/Na6uhu+Q13R2WJm/vER/ea5ofL2jACWd4Evsc0/2O53dPAa/Zk975n3cuFMelsLIYQL76YP/Kfj7mbyu4D+21X+fhrer/2L6aQPfZR+vqe/R0gIeK/2I9LXk+4D+OVl9Ez13Mvmd4/n4h7bSJ8jvg599yPEW6fvI90zy3FF7H/O3i8m3Av768zN1PLdIfmv2fJz6OsYvsa+sh74Er0J/1kfHorc+P7EzPAY/Z5LnOP17X3ppgb/u9NrM/+/S7zHyq6t/W35mmfnHAehtyK72y/u18fhe9P2oP/VF/wR6/9vza7Megt6H0NFT+b3YSxfzvN3N7/rrD7fI/xr2gYvJ6T72skm996OjRP03+/9B2Bc9HeV/bf6zGD7J/12Aj0Ho+U7/mwvzHvLP+i29riGvTupfK71AftZzL5JfET+rMp+LvbCfYfzBcPwejY+/1LuRff4FT/fcTvTbuwD/vMd3gHl/70nfN7Ory6RfIf829Jb5bPmsn5LPZeq7xv8feK6Z9v/C7wrtHY/f6eyjD/u5GP21YIn2f2Nvj8BfYdusv7D7u/SDh6SrZ//U+PAB3As/j6JnOX2ebnyug76ema+oZzf6OEX6Lfpryr8vQm9Z+cs9f7f5+G+wI3wf/5XI7Qn8/EC/i9A3jl86gVyvNL97U/7V9Lat+l7Tj+egfx/9YyD/ei+soL0LyXM3dHcjny2UH4e/+fxc+kNt+Udp73t0HS39F77ukN4GH6fQ9zf1/83vYfi7h71sQN+LRX6xk/IHZT9UO23JP/s7rdD3s/qPyf6U56K/SdrLvHyK/NvIcwy/VI79XMs/pH+OLUDJafRxsPbnKP8ku2rGrs6EbbSzQv8+QbnN6P1JfQON90vk9877nPzrzTubktMJ5DMv+0jaHwkHwKznVKG3kfrdE/En6P/WeDHZOJK4hGnav1X5rqUF3Mb4WA29N2W/kPxe9f/l6BuO3/GJJ6CPA+hnvv5yk/Y/08/v9Pwf7GqoftAcXx+hfwp7PS3jEfpHSEfe+6PravqYrP1r9ZeT9KNTPbeO/nug9wz1vqa+tZ5rrVwr+JX/V6F/GXt6m55/lV7MPr5j37+R12/6Uz/y/1O/PCTrJ7Cc8qXm57vB2vRfgt4LyGtS1vm1dwD6su68hN0Wrz//pJ2tlZvj/zfUdwv7WEaOh0tXkv8tey5Pv0ulM57WYM814XL+PeNpC/WWsNtjpPvRwxh2NxZOg18rfwu7uca4d6t0/dgR+3kVZr0066MtM+9Q3+fs4f2836G7Y+wI/3PV/4D/R8Cp+nHef48wz+jLLo9iP2vY72r62I4ehkjXU742+spJr0bfYcrPlX5Z+W+Mh69kfkceQ/Lei86fs/+j/HnKf6DeHZQfrL9eCV+lv3meX5t5sfoOpv9L8/7H3u/x3lJH+yPJYTT/coBy+8FL4h/4x+zvb5Q+T/4h6n07cSDs4C7116Cv6vDI0gJW0n8eppfEvbSGxyr/qfQu7KN79hnIqYJ6n8b/ueQyGn1XkX/2J89A72Pk8yx91aL3HeDbyndMvAI5dpJ+S37iaVaT6xrYAt2Han8uPTWTHqz9bvz9lfBqeLTyv3k/PIsf+Rm+of3j0N826+rG6c+1l/eJluR3EvkNlZ6m319Ob11gJ/Z+meeWwjfV9xl5H4HOGxKvQ5+PJP6PX3tW/q0FKNmI/ir8dWf0NlGuKWyB/w7GsSfho+gbQN/9pOdob4P0mfjtjP7E5Q1K/Jzxbz4+PpH+U7opvz+CfTeRPivt4ed62AXWxW9F41YleAj5xJ9kvfDp0gJm3TDrU7P4zY9ha/JqmX1Z9p957oSi+W458vtv5n/sZBv0nac/18z6nXprSbdD78cZb8g78/nMFzN/TLxO5o/d2dOPnhsn3dfzJxi3vjBPaiHdO+s65N2YPLqgr530qfrTw8o1IOct0Xcvvn+k//v0nxroa8Q+3kRP9hNvIb/G0jvgv4f/32FHiYtZLX+F5yskX3uDEg9h/HxN+xfwH9fQ2xT6OAyfXyqX9aCsEx2Lv+70U9H/n+GjD/kcmbg12Bxmv70//zGRvPtJ11R/A/7hbX7pLTgBXTdrt53n5+N/snTic1733Ap8zVB+uvnWA+ZvL0o3Jr8b+d1F5HwWOV1FHokPqI2fxAkkPqCT9h/T3rnyW6ov878VsJp+1gr9JfRRDpaB+2i/hv61PSyFz6W9xDsYV5rDs8jjYvStyPonTPz1gNIC3sBOnpd+Lfsg/h/LDyxE3w/Z7/V8dc/1Nj9agr9axv+B5HILe018zdP6RzPPH6/erK9Xzvt+1i2Ur6z8ffzVvXBg4nfoa4Xxcol53ljjaxv0XEW/25FnC/3n6ewPsuefzI8e9/wbyt+svV6JM8z6sfy55D096+HhN/GT8pfBtfR1sPZvKi3gOegbIn2x8rewqxH6ZdfE15DfUZ4/rGh+lPecY/mz4+HO+uO52U+jzwP51Q3650B8dNCvT0NvWf9fkvV49N3HTtdLP5P4Kfx+j/7ueV/hvwZprwI9vid9fuKh1PtM4h39XyPxW55/M/4enxfi/z70riG3h7VfTvufJ/4DP/3oKfG5vfBzrfr3kT4UHTez1ynsKHGUHdSTfeeFnu/s/2Hs5V79vaN6WtF7Ve0fyO6y7/QrPzdH/rH4m4H+h8h9Gvm8m/gp7UxFT9aVr0TPZf6fRF9vZv9NfuJTp8ivJH+09DWJv8p7H/k+oT+NVX9N/ByV9RH+41G4Dr6R/UV2uRxftfmnvbI/Tv/3wLqJj8d/ZeN7y6zroqtv4uvpK3GzOQ+SdZaB+ssp7PN4/WxGxhPPr+EXTpdO/Fbi1hOvnvX1h7T/l3lHWXKa7/3sKP5okPZPa/Rvet5kJwONb/fC7+CIxK9KZ5/rCOno98PSAh6Inw+k98j7UuKfyCPzhNfz/s7+ci6lqno2kfN25LYtv/wx+WX/ow+7n84+Z5Nf9k8ir7bkeSn7iPy+I7cV8IfYm/x66m8Iu8l/hjyPx29P9e+UdT/tV8Rf7aLzColjvTPx+fpZ57wPqu91/iLj103qeTjxSvzVAjgMTkH/2eg+j3wSf9wTHXuj7xP9oQ6+sj/7Onk/on9Ups+H6fEM9F+rnVfgsJy3ybka9thNOut/q80LboVb65//YQ9DpG/T/071/1bKH6t/L8LPZejM+ZIbClDSgTyzzpv13Ufxk3XlrDf3zzhRWsBm7K8velahZyf9dmf4Fjmvpqfr1Zf97PiR+I9G5pOj9Kft0PkF/qp6fn3Oq5BTffljyP93+juDHZ2UeCntf6b8LPreO/FZ0gvlZ5+xkfxbje8r8N2cHMaj/1H7bqewz0X4n5DzX8abK8hnIsw6yzr+6Dr1fpLzCvjppr7u8Hz03p31f/o/z/+zpAfk/SPrffSccSr+qzK/nfXtp4vWuTvwrzt5Pzyfff0qPUR/ehjdR3lfrE/+l+HvD/3oTHSsz/kd7YzKulLW5eh3B89PIJ/vjEc/4+O6xKfCSeQ9Ef7Fvsrrf5uk20ifRW8f0ctk6ayHrk+/jr/B70XoPAd93ch5Pb5PQv9Nnt+Hvquzz6M8Vw7fOe9XzXN9tTedP8x5t5elF2h/L3b5ivzjyedL6Xv0n+dznkf9NdF3W1HcTeJwiuNvEnfTMXKUfyP99tj13+2cxf7GGH+mwdHwW3ScR96fGJe+oYdXsp6pvz9H3xP8/yd6ZuH/F9ifHDvhb5rxc/fEzenPE+VfZzx/RP2PeA86Cv2rs77O/oZI747+N9R3F/6HG38S//6R/tSPn7qc/vri4xbjQXv4Mjwu79P010g68QDZ/78UPUuKzj9k/+cK9nlYzkd5rlHeI9GTOPDi+O/H0J33urzn5f3uJ/39KuV+kX5LO9/Gv5UWcLR6T2E/GYdP9f8a9J4a+UtnfyrjUtYHzuXvvibv86T7Kd+jACXj4Fx4Cb1tZnfV0LG9erL/PYR9DIUvwqyznEBureEV8CP5Y8hjYeLm4B/xc+QzHj3PwS+zXuP5lXAm/5HzpQfmvEr2Z0oLeD57+YPeNsL1MOcy2+e8BnrmZf+X/Iby9y3I5Xvt3az+bvTzlnIb0F1DfRPR/R9+9Azl3oWHo6OL+qerb2DW+6RXJV5F/TcmviH7Z/rB2aUFnJHzIdETPzOV3XdU/nb97SN29XzO+yp/CH0cDg+F4xLHa1zbxE/9aXyZHP9g3J4Yf47PrOf+xa98zw6Wsq/xeX/gP5qZZ1woPYDcbkbP4qyjk0PXnK/WXzfDEvbejzw/118+g4PQ+b3yW+KrLGwUf6v9uvj7lf73KHpPThzmOule7C3ntR6gn6wbZD3hb/rZmP4CN8Bb0Pek9Cj4FMx+z2Dj18P4PxgdUxNfib6t6GMn7Y9iJ5fSR73EG8o/XPkh+H4HPa/KfyjzG3q7hdx7wcE5f26e0hxd2+snw+XvTS7ZT/2F/LbX3i743RnuCntnfM28V/3r8XsG+u9h7wPMU34w/l4Lq5sPfGpcPFX60uwPZZ1QfTXRlffnXuwx8Vhvk+e1OUfJnq73/0r94BvPv8zuXoGz4Ez5H2afkn5+4S9+ynnrovNi5xifP5E+En2H6z/v6E/Z/8h6a9YLu5PTpUX3XzQhl9yDkfWPccbFCXA8bKr+JfrdDfDGnJ+Q/wX7+RA21f6z7KEd/xP/+I505oPD2NPp5LSy6P2+Db2uVH4v/v4sesx5v8RP7lt0/i/xQ3mfTPzQS+TzFHo/yL4PPnpknqa9i2BHmHiwxfz2Z3CQ/lMZfY3IaXfPf8Vuz836GXvZk17zPpn3x/HG09X4z30nud/kcP72OjhT/UcmvjNx++S9il4yv3mNfSVeuir7jP1+5f/f0Z/3iaHaT/xUH/363pwPT5xV0XmxldInk0/j8v8ul3pS/mTjz0Ps/yTpj+i3e/Z/1J/58gz0/a6db/H7Mv/UWH7O7V6Y+Pui87sHsL+XE9fN/hskXoy9LGE/2bfaHn1b02sVeDf76aD+uujrlfjWovllqXHheZjxe65x4z71NdSv7peugo72ua+DfeQ8Uzv/J2478lmceLnsP5LPyTmPxr7+kD6WfR4Nr4FjEr8uXZl+XpIepv4K/NLn6O4tfWfuT8H3HVn/w3df+bMLUHJU1iuld8DPRnL5k9/+U3qD/H3pN+sSxesVb2n3f61zfGI+/SL9L5BekvVt+DE55pxMF9gn78uJ++I/Euf6W86V64/Zp6infPQzXr/+MPH52b8hv+raechzLyY+hj4qwfJ5/1fPSdmfNI6cLJ37RK7K+Xp+5C6Y+0RO0t7v8LjEQ8lvoPyP+sfKnBdP/LX8XUsLWAvmvGpj+R3ocY3yt+ccS/YHyGslefWUzn51A36jft6j2FPOy98m/Sl72Er5HeUn3uY36TVZX6bPIfRXQXpexif0P4HfC7Wf+MXW9HgCnJX7IPA/kjyzz5P1tKyj9eUvVunnb3sfuSPn0+j1s+wDSs/O/TfkuRfMOHWA9t7kL17L/gU+PievDfrrGfRwPnusoP3ERyUeKvFRT+Z+B+01z3mcrLckPoM8fkF3Y+mcz36QfB5KPC0sm/ge+Ytzfli5i8g354ZfVH8v/Tznh0/gR8frv99IN9dOJ+Vy7mml57I/2og9Zh54mvZ3l3+CduI34kfiP36PP4O7s5+rc06LvSbuIfOkzI+eKkBJH3guHJt9UnZxCfs5n75PRN96/e53uKf2b0y/V34xenqT94U5n82fDiSXksRvq3+OddwtjQsV4bnkOU+x8+EwODrrZfj+I++LsWPya86f7YnObtIX5rwc/d/Prjbh49PE/yceKHEr+J6S+T55/ApHJ66L/E8xr/gKvmn8aZP3Pu8fT/h/f3Ierb3pxrX66HpBuoH0VuSdferi/emcA8k5zCP8n/MyX7Hn/eh/vveD3OfVAX0Xwo7w4NyfgJ6ucAH5H4O/nG/OueZtc49Szo+iN/c3bGJ/ub/hFnLL+s/q3JMifza/MxBmvnuQ9rOfOk27y4v2V8+m96rmp2eQ69cw+/aDcl4mcdoZX9T7eOZL8jO/LD6vPhNdJ0V/6J0sv19pAf8rf1LWszJOJN6X/f3Mn97luQ7Gu+3QF/uOXV+jfOz7Iv62Nfs7EbZOvAj/NoseO/M3TeTXI889YLF/GGFeMjjvj+h5lD0MIvfv0Z91kHaJr6X3Rv5PvNSZ+Ms891x4HUxcfkv+pGbi47W3i/Zr5l42dnWdemewjw7s4wvtf55xOuMneSfu6lM4Xf1ned/P/X5tiu75+6O0gP3ZxfScU4bvZ/1efa/jL/OTWfpbzvXOlD4v56fYX216bZh7pNRfk5x6Zr2fn/g471/kPTHnD0OH5xvifya+ZsDch3Kx9Fna6yx9hfqXkPsW2X+OHcS/8iuJi0oceeLHp5H3Fzm/l/O8RfHkmZ9F7m9m/8LzHcnpEum1Oc9PrjmnknMhdXK/QfoFu7qXPf0Tr1mAEmSXEGfJZPWXUc+RRfGLuX9gj8T/wOL72+qSf+KaR5BH4psTZzhZuZn4HJr7dbyf5zzTaOkX1LcX/VQpLWB96Zz7SXxZD+0kvizxZhXZ7yn8xt65zw2fm8lvrXnB5ejM/aJHKt8cLjG/XKvdMsbL3Lv5N3lk/bgsendgH7Wz34G+3NfWxPOz1Xcke83+wYSifYTsHxxA3i3Uu6/2Ls89Afpji9z/UFrAxP+coj/P5ifvUn99cthsfOjJz+8mXV7+5+RQMfH46ruE/Frh53jYEu6P7wPR287/90t/xj7a4Cvnp8LXXO1Vwt+2sI96J5FvZf2iCtwN5h6Ed40XE/A1Eea+qlbsJvG7Z7CDs/GX9828h+a9s1bu9+Bvts79RvSV/Z5+yj+j/BXkmfFzM3n+De9mB7m3Y3zODShfTf8qg74Dct5a+eL3h6beFx/XD3rJz3ns9eSTczZ/SB+Dz8HkMlL7DbRfT/3Z97wWZj80+6A537CVed9S2E/+Dubnpxatw2f9vRP55n7PC6UfRf+J6Mv4mfE04+dU8h+In2c991/1D6Dv7CNugCW5Z5FDbZF7kukj7/errf/+qJ4N/Me26Mp8oat1s2dh5g9L8TELXdejdyR6X857q+fbkv92+CvJvQw5bya/bu4Ty/3B6GlOP2U8f35RfEfe17I+u16/m514HunW6q9bdJ7wdvS3zz4kfd+cfS2Ycz2N+aOJmb9JN058Cvu4B96QeCT2ckjim3K+Ivf0KZ/793Lf3mXSM9A3njzekD5Ueij72FV7I+i1PZxnXaKc8bx6znPmvDf5jMj4CLOPeqb83OtQFS43j5pPXzuwqxfMkxNPnPjhtxMvJr0a3aPy/lEUnzmmKD4z9xLlfPsb5Jn3+1/q/bvetJP6q+qPievpz/+VZz8N/P9RzvckHqhof7xXznnI7+n5jH+7knPGh4n01UH/q0pP3+Ucm/r+Ym85zzdM//6zaD8n+ztD8Zv9nRf513n86FvmF7VyLjfnY9RTfF9M4hoPUP4B7XRJ/FzizfGb+3tzvj37nw3hWvxm/zPxJSvV88/6v/q6FO3/Zx86+/9PFcXnrs89aPh/WX25X+qO+NnEJ+mX2+mPM4vuU6yi/Gx+6hD0Hqi+Zco/pdw8eLT2TzOeP86PPAZ7Zz9ZfjVYveg9e2f9fSO/tYt04nV/yH0k6OsMcy4x49JC41Il9pjxKechxuiHOS/xJ/p60luzzCv5jRu1vw16ympnAX89POtDWfdlLxkfSnM/V/p1xlv5+6H/Cn6jOrnVgFm/2Jz1bOXOYge5f26V/+cnvi5+Fv81os/4E/quXLTfl3GlW9H4MtV7x6H80PPS+2r/e/S+xA/21H/r5Fwg+Z8NB9PDIYnHUO5Scqqs3ZfUX8e8OOsOtaXrkeeM/7H+NZY8lsv/xfMd8TEr82X2MJz/GhnMOr/yTdR7of9XqP80+bdrP+tea7IeZLzYQjuJk74Sf9/q/9fCLeES41SfAvzz3jgK5v2xQ84lF+1fN8351dw/Ca80fs5G73D1fQ6vhofkPFfOReNnT+mcD+mhvTn4y35YV/xlf3sczP529rtnkUdt7S3z/6NZ/0Dv98ax3O/2cOZT6nuV3y/JeUb2PlK5nGNsCHN+8Y3c+4ruVdlHRv9bOVcJVyYeOPeN8TcN6aFy1oPVU5b+s76T9Z6G6K/o/3HouUH9OT81Bf3l0T1J+i/tL9De3Z4/NueJyW8t/nbnH+vCb8kn/W5o4lQSP4H/7fXXLvjcBv1tleuBnumemyv/LnSM5z/Hwax3voHeodpLvOoI/ak8e7vD898pvwzWQl9t6azrFq/3flV0/+/x2lmW82LsZR27voA/ynnYnAv8MedB+eMryfdgejkxeiOH3D/5M356ae9Icqsj/7Ssm+ufi/SjBz1/U9H5xZxnfAwf4xPv4Pn1uUcq+3N5f8p3Vox3ibN8zHhWOfdrlhZwbPZVpGOvseOsTyZ+PnHzG7Wb+Pln1Ft8L3j4L5d4buPuH9rtr54P0D0I3e/n/JD82/1/B+xnfnEgOu/0fBPj1JPmZ3kPuQp/OV+S8yaV1H+nehM3mXoTP1kNX9vl+yPkvzzrc/Tbmn18wD5zLq/YHmOnuZ/6V/6tjPlzY/o8XX559cxLvA1/nO9TPJz4x8Tzss/HEr+M39zzV3y/X1vrEtej8wryfIr+cv9rJ/Xvl7i5nE/Uf5uRT77T8qXnEl+buNrEkT1JDr9pr7F50tuJz/f8KdIz5FeQHoLvLczbLjL+dJTeMv6GvlYVxXPkftMO/PcKfvNC6d70lfswMh/N+33uy+jIPz6V9xvy/y3rU+x+p9xDpT985v9KsTfYQv335Hxc7rdJfyH3o9G/W+Ksc54MHd/IX1RawFuzzsE+m+ceCnTtwk+0h5Pl75V4KdgKPVnfSPzpAHZ0Mj31od/cW5hzgTkneHrOb7D3FolrkV6WuCryeDfvx/Q6Un6+L/I5u8v3RfK9kdyLl/vwcl/ez0X3Y+VerLn4z/1Y+V7PDPgC+8r3e3bin89Gz66ZF2f/Fd+L4dewd/b5sq6Z/q787eTzv75Ldr/8w7R/Y+5tyXoQ+paS1z3yb/P8KOn32es/63z479z433SHj+fp98S8v9PPFvjJ/eG5v3l+5kX6Xc5DfuG58fT1LDqu9HzOS27k128wLrZlbxlHns6+HP0fr56NWVcx374cflp0PrL4fWVxaQH7a3+c+UO+p3Yj+8n96xP5t+w3ZF8k8XUbE59Ir2Xwn/MLy8k79wMuy30v5PM9+9zM7z/D3/ZD//ZZf9Fu9cRZaz/rxbnf5vHEddHPbuR0Q9ZF6CnxrTMq/vv/lyr+Oz/3bqa/v0IeuX9zH/4u7+F5/35A+ftjf+xgUe5JUm/W//uo71rtHEN+nxgPPoULsx5PfsPRc5Dyxfd/Hkjee5PPaH7uh9SPvn/uJ0HfEPK9S7+5G/aHg9W3pfrupMecg8g9YPmexD/fl8i5YfRfiN4u+J5cWsCsX+Z+n9zrk3t+boN5r1oKi+/R/ijfZ9DuDvi8T/uv6X/P6Qe5x2B3+f/JvYP847HSiRfO9xfzvcWs++X95S39cYesP0rn+4BTc67V+FJ8f/Ib7LGGdcdy+PhP7idST+K3jkFP7q9emPtK+JWjs46Z87v6W+bPP9LfmOyX575Xzw8lp7HS6wpQ8ji8At6a/Vz94n7j3nDpcujNutsD+KsinXi9s9lv1q26kX/Wq+qwu9j9jtIzye9Hci2+d3ac8rmf59XM54ru64mdj0ocC/luyv4eO5iMn/n6Y/ZLbtfv8x2cDblnJPd4qSfrmQ2196387uSV7w7OIMd8B2ZO4t2lc64o93fmvr8+5PF83ufobwq5dzL+LSWnXur5r3FnPLrLkE/ihpai51D1/Mle87269vl+GP3tD/Odu2q5lxE9+yWekH03LC3gq/R6H3p+0/7iApT0h7nXvH/WM3NuzP/lpaP/c6RfhSO1d732TyevxEFdTc9P5/y951tkXJCeRn7Zv+2Or6uls39b4rkh2k/8yjLyOB+f+V5LvueS+w0WmK9Myr5k3rsTv2w8X5nz04kHl/8pf9neOJB94Oz/5t6lVfxCc3bwLbqq00fiFr9InGXuz+Jfcl4j55HqyP8N/ceh83V21CTnM3PuWbo//3UsPeRe0jf5ueL7ScN/fdiwSB4XoG8T3AKfuWf7S+NPvj/4mfQn7KOX9sbyMzdLj8ffxei9Ej1fsaPueZ/J95S0l7jddeofoD/dDe+BuZe6buIZ1bNV7jui3+Xkm/iUfP8238PNuu0L8CK4Qv4KdL2rvarssyz66tB3dziYf7gr/gO/OW80Qr2HK1+O3Wxt/h87SlzsjvmuTNZPpK9RT9avcg/dYPor0d4r6PqA3ymOj8l6f74Tew2szF5/Me5/ZJ73ce49SHw9ui6l59zvl/v+HieP3P/6pPRNia+ml1GwIcx7TbXE07DvbfSHsjmPSL9tyfsrz12k/ozrWQ+rUFrArtmnwN+b5NnK+Do95+HJtUJRPOAA6dP0m2fY4SS4t/6yI3oq5Jxj1qW0n+/R5B6Q3P+R79PcLT1U+byv5P3kgOyL5R5FmPtUc39e3lMSh5PvB00xrkzNuWOYc65rtZfvSH5K3/l+5HrjV+KrZ5PbHPnF6wuPs7/MG7bPfqlyi3LPiPJnkWcl5c6Uvinr5/xZ7ifLfWW5n6wnu78n67r4y/czMk/OOc3cl5f9iXzveQT6ppFjvv98JLkcTU6HS39PvkehZzZsAaeo9xjyq0EOu8jPee91+B6Fj8TxN048Ve55Q/e26Zcw97vnvpNh6P9F+kb97TP/Xy99Xe4vQ99Kdjgv3/Mhnxf5iwcTT6x/fhn5qTffb59RNJ/ejb+tC3vBJvpZXe3lntXEnXeNfePvdfzkO7/5fuqo2B168l3FvB/31O/qm//dKD0z/hcdtWEdmPvusu7aDhaf1xvALubqN9+z6+roOxv9Of+eeVO+r5nvoy5X/wuZD6n//wAiqB4OeJx13Xf419P/P/B30jCKoin1Ls1PoawyIiGEKDOV1eCDhIzsyKfICCmSMiJaVkMiGkpZKYqGnbJXhArf6/q9bvfPdXldv8/7n8d1Xud5Hvs8znqc867XuOT//R2wZwHutkcBdmlVgB9XLcBPwPo7FmAf37XU/s7mBdgZHLd7AU5rWoBXw9/a9x8pH9aoAI/6l3bwntCyAK9Q/xB+GjQowIp7FeCMygV4/zYFuFV5fDcpwHbbFWA1eNsqt4avtHYBlqlfgLPrFeCIFgV4Lbm/Vn5L+1H4n07eDsq/4Hdv/N+xPXqVCvALehnt+7nkuR1cj84p6ufvVIDzqsC/cwE2R/eL6gW4FpyC/5/JO6e0AO/x+6nNCvBz/PUsW4DH7FqA9asVYAX6/QFfK9GrWLcA6+Fz8m6+990bNQtwG3bfRH+HgFuTp4R8XdnpRfZ/umEB7oH/X3YpwNa+/035bOWXyD0bfBFsh/6n8E+Gfw78R5PvMv640w4F+Aq/GK6+Fb4PIu9qehhMfzXQWQz/K/DX89097HW8fjO3XAH+5fsOpQV4NT7b1CnAOuR/2XdP8ZuJ/Ksn+qP8/jp9PKf+OnLcX6YADyVPD+X2ynvjaxA60ysWYGPyjofvffWtyNsC/SfU7+X3Fb5rrv559pgJXsz/RqB/rv73N331Ui7RvkWFAvyVfpor70ne79CvTF/v4PsP8s/kr2tjD+3OVr+n/rk3eD46/eDZIL78DD4IrvfdyezVslYBHgT/beQrr9+39fuH4tRQ9av5c394fteP5pJndWkBvkQvN9LzNdr30m4Q+v8Ba9Hzvfr3s/rlVOVDyT+Xfq7jR7XhvQk8D/4X8PUpvTyrfhL5HibXo+BP9FONvVby+1XgBPJ9rf0H+snnykP1y73Epab61T7Kt6nvSa49yXsWPe1A38dvW4B14O2svIvvL4HvRnJeqnw3/dwhLpxO7tuVZ5L/Un49Q7uZ4Jv893D2uJs+qtPjo9q/XVqAK2sU4DH4b0g/N4jb97H7m8rT8DNDfGrBvz9gx5XgAnraDt4tfj+ZfmZvXYDXsMtd9PI6fE3xXw5/pfS0A/5PpNeN8HZRPg7+pfR1Kj94WbypCP+2+m/G29Bv0uqf/OX3YeX+yV8H8h8G/iR+LcTfg8azseBt+tt4ceoI9rhUP1hlHtCevk8RL2eB14EXs09f7eaz+zzj4f34PZj8/fl3X/FjVOSkr0343gweyH/64a8/vg9jh3vo63d6bSp+1Te+3q1+O79PVP4Pvrel3+PQv4a9+vKXycq3sPdFfr/W75PAPpm/sf/d7HKbcuZ9me9lPjiJfEvpsy/5/iqAklV+X5j5IntN1o9Wal8C33noLWa/dervwV+H9KfMC/FTTVw5A55nyPsGffXNPFD7veC7mP5uY88zzTtb0P9A/B7K/pXV7wD2559X+35A4gy/uEH7dfjqhf4D+J+F/4PppzY+y9H/Kvz9xP6D+cnd4v+Bvlsofh1C7kv0r4PUz4mf4vdX32f+lP4wGv238Zv+sTd9fcYeG/2+O/7eFg/a6b8jzHMXo/safudshT74H/IP09+G6X+X6y/l8TcI3t3ZaTw/ORc/19Ff5k+ZT2X+VAn/A+lje/Vngb3Vf0qujeTfBr4u6o/z/X7oPY6/xvyhEdgQ7En+N8j3Pvpbk2+g9i3YqyH4vHg5lZ80ZfcLyb81PL/gt5t4UoW/fWCcWILfVehP1a8yj479D+Zf09mxjfG1Ff1tFl9Oga8T+d9Hv4Q/rROfTzDeNKXHaviuDu4MXko/s0sL8Az8vaw8Xvv96WUGvbRWPlP7xLtu+EscfAn8wfzifd+9xs8u8n1N8f8D/r8S/axX2pGvLL1+47vjyb8r/9gNvuf83lH7m8Sna+j9WrAW/T7AH45D9wzt7+HfffnBVO1ao1cHH8epL4v+F+pXse/nylurPzbxV/19yo9lPYmfGer7krsjvgaz8w3KN/Kfa/hNS/YZTr5vxaUj2bOEv76F3s7wfEtf9+H3E/Wviqttxdlt/H4u/i4wX/1TPzlfeVX6j/X+R+DX/OahjL/iy674rwsej59+xvPj4dtHP/mdfL3I9Rm8pfjfUz99VP+bxO+a8fPB6stpP0z5PO3fRX8t/zyMXUrMH4do945x93X97lTlq+A7B/1v2OEs5Qbqe/p+dua3/KQGWMHvv+o/len9hqL9m+zXZP9mCv3MSLxm53XwTFW/Tv/8ElxOj3V9/zY7DVa+VPtD+cFV+tej+kebzNvgv4u/DgPvBEvwfwp7dgXP5G/X0u/N6D1HjibkHIGfceLDQPUvggey3wr2vIe+P9J+TeIN/1oF3sof56pvwh8Xg83ip/gbwp7l+NUZpQV4Ivl2ZJ+q6LaGv5X6WfjLflD2ix5QPxrek+i1Cjs9mfm5+cMR9HGL79qlXr8dC8ZfpvpuPHs8DpZh1x7aZz2Y9eEw/K1j3wOU67LDgcrZd9kfv0MLoOQa5YfgXca+D/LbtvBOBJuKZ3/zi1+NQzXh/1b7bcn/Kn12Ikfi3oPs/xV/PTnzG3YfRL6bwVPVD1T/N/313umf3z0h3p3Mrh3ZeRD6M9SvofcPwZHsPVtcuBNsjd9d1E9Ar6F5wO3i/Ufk/V7c/Q68GuxP3qwnsr4YRF9ZX1RSnq/cAN3u+s/v9Hlq9nvIHftjq6QGup/it7P6LfTS3+9Hpj9l/wy9B8GG6F2Ln5H8ZBy97ENPx2i/KXFZHP2PON9S+8EYvIDeM48bmfkhmPlBldBX7saezfBX2Tp0Ov3sov+fg357+m6jvhZ/rwkuMv5+Se9/gHPQqwRGf9mvO54fnQCe4buD1R8E7k9PX2jfCd3MO+eR90fy1GGfK/W/68E3fX8C+Xvz58u0Own+V/WPBeB14FeZpxr3J6F7Jv5bwber9cpMfO9Fv3PVH0Bfl4H94J2Ffht+1Y38XcHJWUfB34U8o+BfSI45/KWs/rRCHDwc/eHiWnf0f+JXG9FfzF/GaP+d+mHqa6N7CHrH+P4l3/fEfw9wmP49Bp5DxL259FaGfTbxryv1j93537aJ5+x2BHz7kPtw5TfZY73+cTr6D4Gf4y/nDm2Ui88fPuPvy/Bbkb3r01838mZennl65ucLyPUHe92nf2a/ZQy5fvZ9W3Itpd9txPM3xIFfSwvwUXzdSV/x4x78If57AX1cRs8jyFtXfLkIPxeD/cDFiX/88Qf6fIQcVdQ/x7+eAZ8FF6l/xvh+u/nj5fprzvM+hv98+jyBvU/Tfpj24+mrJfw96Tv7Py/4foTyeuUq+O6G3l30eSx9D6a/2uxWVv+aCv/nvu+l/UDy18k+vngwhV7P4If7al/FfLqEvaoqX47ebvjNPP1scraCv7154/fs+wv/HKH+Ovx9Qs7sU71I/o769RDtP8PXzezfIHZt/k95n9X+R/o4wri2Jvuq2c/DzzT6mUEfL8Dfgb0q+34M/n5k72HmO3f4/Vrzodvx1Tr7Tzn3I8856ofwj/LoDFbO+iHntrXgb8K/ytPfrNIC7Aj/B+zTOfNv/a6e7/bWX2+lh2Ph/VL5NfHgZPLN0f/r638N6esD/E/VHybC/y08D9J/ff6Z/aRv4P8C/u3o/THy1OFP32hffN6dc/CG9LOD+LAz+CF5NsJ3Gr2MQ6d4/jhaPKxAXzln64/+U+w1CbzQfGKB7zL+Z7zP+J/zu3rsXx+sxT4577zE+rWrceEweC/KvrL4/zK9v4Hfncn5vvrT2KcreGH6C7+/kn4GJJ7GHvidgN5r4ucE+unNnlmfzmafKuofsr65HKwLXoL+Nplvo7et8lnaL9Jf+rDLYuVRyWcwHoziB++p780+5fn3zeCb7HMhfBXpY6NyR3HucvL+6Pt1+tkPykvgb4z+TeJaBfpbpf0U+psM1mOfefwh417Gu3f4wVf8/0XxcS39zIPnLPU1xYVu7L0UnzPjr/y7Br53heff6t/S3/rHH/F1UZH+o/fXivT/kvh2gN/bgD3xU5Z8neinBfkuS/8XHxqCjcGZ+JiKv4n4vhOfpeQfR96lmY/TxyHw/82fRtLDbHzk/Kc3/dZQXskfriL/Uv13Gfge2CHzcfKNNP7PLcpjeRn903w/ljxD8H+W8ib6PMPve+DnKvieLi3ABeJzQ/76vPY16ecAen9S+36+O59/vdL0n/JlX2qH7Isrj8n+KboTyVdbeZb6x/Tn03NeBdZEd4249BQ9zwLfih9aD64Bl9DbAPh3gucZ+tuRvOdrfxj888WlCvrX01l/6y85V5+ofBK73OL7X9l9SNrT03v8cVP218Abs7+tX70tPi8Gv9R+EH/fnp/WB+sk/0X7V7Vr7/dZ+G+sPFP5u8wHyf+D8iR+8lPskv0fdhuEn93Rr83eE0oLsCn9H4Ze/5xH6897Zn6ofIly5q2Zr/ZFZ0d8bOv86jywMv23RP9o5aPAjmDG4+/02xN8P50/HIPeMeR7nT4a0cdu5L+WfMvo93J4p8F3he+34PsA8tzHvhvwsxFcyD8m6F9l+WN3eN/C33var+aX0xJffD8FfzfS5yxxtK7yn/R3ML2tcu73iPIW9ZmvTwfPz/lG6Oe8FP3i/cV3zS/aZX8+eTz0exN/7yOuDsr+H/w/oVeO3morZx93Nvv9i36q4XM/+C8hTyNxtYv5SDf1zfjlGHxvMD9K/sUF1iMTxJXGFf7ZvlzyOfBxDz1k/p+8olFgV/01+UXzjOdD8D8UvSPJn3P1nKfnvL2b9uP51zL+9gg9f4n+GnY9jR5OT3+hp/X8raZ5xlHi3Sp06xoPdmeXFmCF7A+Tp5TeKpUWYPKY2hbtO2Qfoof6qfhfSb4n2LU5+d7BZ330Tsk4m3yD7FdlPgtfzoc261dbwE/M43Ie14M/dgf3Jk/O4wbgM+PfOvQXJ79S+SJ8LgF/y3yWvhaCU9h5DHudYFzoDO5lfvgFue5m7+Ha3QnOZd/PtFvIL5vz0z/xvc73OX/PeXzO3x9hl3+x3zjlptrtSx9ZRzYuGgeSDxn8oRf8t5Ij8fssekj8Dp2T6Hdn/D2qfjK/vEb7x9nvX/B3Ve4oDs6hj+HwTdDfk0c3GdwXv+P0vzL43BW+o9nnWf2nET73Kcrvy/5/zgnu1H+zztuHPi9ij72Vn9P+cHHhEnATP/wj61v6bal9Rf6Vc9kPxfW9xPXr+flV+M26JvnFOU9aAV8J+f8UB7r4PeubcuL3enbLeeCC6B+d3uAV+sPp9DuA/meyyzDwiuQ3oHsW/e2jvE3yH8WLnO+eZx38C/z3+v0Q8v1Nvrb8Z3v+dCB9ZRy7TbkGul38Xl35Y/VHaD8UvRrJ40p+SdF6Yjl+z0ieEPvcB45kp53Z5Untkx/RIfmi6Gzi192T/8e+16t/1/xua355EZj8/fX8sQw8ZbV/E39d/J596C/0t+w/j6bPzcnbAZO/ul3OffnDJ/R1S/KjC+C/5xazlHOe8bW4k/VMB/7TGZ0PlbN+Hs1OldBPvkLyaD8tmt9vm3NJ9F6DL/FzovIt6mOXHZKXxl7ZX2tDb1PRf5r/vaR9Hf33EvRPod8NxtWtxekTsl+OXvLee+FnvfYPsddoeLKfcTn6Q9B7hx7Hl5JL/SX600VgP7AcfldYT50JPgCeg88G7Jl95rH4zv5y4v0b7PUxPSX+Pybe5Rx5Gn/N+fE0/tlKXBgDfo3OQHQrsXPyHZPfWJu/ztFv3wbrqI9dK9HvEvrtib/zlZOfX5wfm7zzo7T/Q5x+A/934bc5uyS+PYnP+vTRnTzD9Kd56r9HL/sl2c+uhH4zfM3OfQB09kC/Cr9ajr915g/T1V9TWoD3gsPB3slvFC8y729F3sz/s37IumFh8nnUp9+nv1fD/63KNeC9V5xrol+t0L5/8oDJuUH7xupb0U/Ow/dV34y+/jS+POi7shnXkx/HvuvoZzd0kn++jr88xI++VO5Of8X+nfnTI+jXYo+T/D4Q399HfvOl7L+3MY9ao91i/Wx5hX/i2wu/jeE9OOMpfk5VPpQ/raHHt/G5OnZB/2B+u4vyNrn3Yn7TjJ1Ggy3pc4X++gO+H9aPN6f/iSeN0T0RP/uofwb/jeLP+vtdRftjAzO+Zl+K/r/A71qwkfH1qeyf8Nc6WR+QcyH9Zb8g888/8PcM/paIq5Po/23lyvwt+YOnsEvGqafxl/3wT8wrs1+e/fEnCqCkHfpv+L2P9sfA24D8FyaPSbkn/M/m/BF8hJ6+Iu9nYF3zh5dyv6a0AHOOdxi9HJJ7OvrP9/hKnv8fyYfB38G++wx/R+J/f/pvA27HPjN9dxX9Jb86+dbJr96Q8yH8fmL/aAb5Noobv4Lf5PxK+5PFpWrorzfPasu/K/Dnz8Sty5UPUt9e/KzP7m3od4b64dq14Kd/Wx8cW7Tezvo76/Fj6accfRyKv865H5H1F7/rDO8A9Nanv7PrK/CfRA+r6et0+rgYLM43PjVyJI+GPQ6FP/eFyoMDEu/1j0a+z3ws+9Jl8D9O/W/4+zJ52Opv0N/ni68N+Ff15BGVFuBG8EX7QD3QeVvcnJP7Ffznd+Xk5bTnX3cljub8nF1/ALcT319PPl3OF+j1b/GtYuZ/yefB9zTwLP3pnJyLgO3o43N8/QRv8pw35b4HPS03b5sM3/vJs+M/I9jzfP1kuPJOuX/C3+7Qfl98fJX8r9IC/Av8nH73yH3D5DNlfxXe3L9YzG+PgfdQeNrwjyH0OkPcexZsrn32S7N/OijzHPL1w0+v3BMDF5Cnawl6+J2gnPPle8WL5Msmf/a9rJeTlymOTsNvNf5/qf6b+wen6//Lc/6r/WX8oLI4MJ38W/jTc767m//lftHT9DsB/sPo8Wf6yPnR6epzjpR7RLcpf0v+V3OODH9n/rPa+NxFuQ68vxkPvhR3Nipnf3uSdn345QTlzE9fJk9rcfIa+js++cfZR8w6Br830P959hcOz70ccGT6N/0kX30Fvp/iH1/zv1bqt1I/Tf3v4vnV/yO//cbsr/CLu8mfPOZuyt3B7A9kvyD36WaDK8nfEf8X6q8XgJeAD2b9TR+5P3QsvLk/1Jg8WQ8n3y/5fXuS7xnztEeVeyc/Gt+PJX+JnZdpn332rB8u8N3r6t+E9yZ4KxXt/38nPp5Dr5OVM/8vh9+/+UOL7MPyn7L86Xd8rGTPRtq/R+5f6Sf3Ix6BJ/cjNqhf7vuH1T9YWoC70vs6+A/J/BP9rfw+XLz4A56rC6DkaXAx2EWcLZ6fLyqapx+H7vFg7ZwnJT/L7w8rD8ZH1kvZ/8m+z2PKxfs/2fc5rmj/5254kx91AHusSf6beHC/uPoheGbyn9WfB8283NP0e/JKcq+lTOIk+g/qVxPoo1xpAV4K/4Xixk45f0jeh/Yb+VXymnc2T7hF+9fFpe0z7hWt/xeIJ9PBt8SbzDe76A+b2eFa5e74rQh/BfDH7Pvyt53hrQo+YPzvkP1p9thAju/EiRPJk33V+7QvI059DP/z9JJ+/rn+mP6dfIGsi4rP12ezS/KBqpAr9/9OKgWzb0OPtbQ/PvfaxcmbwezjzMZ3veTPka8m/AeSbxzYTv/orX1VcXYweb/PvhM7nqo/HsQ+B4Kl8B/LH5v4bj5/qwtvm/ip+hJy3km+3FfNPdZFyrnPuoP+UhZ/h+DvDnha8Iu/xJF62j+V+yLwfgPfcL+Pxf8X9Lcbv1yr/LD6ofDmHsd/+Gfuc0zwexX6OpJ+vtV+Ovtn3p15+Pbqk7eTfJ3k8+yV+Mz+le37LRV/3kp+On+9BN/T6Ot0+l1ovrd9xk2/L8/9En6RPLfi/Lbcz+2g3+eebu7ndkUv+/P75T2O3Gehj7vVD40f+a6vfvW3flVN/30Nf9eLr8vRv075JPgW0FcDdliofLL6i9j1YbAvmP3jr/FfF0x++Jn0O5L9+vp9mX62Nf76F92rK74fcRi+jgC/tE64E/2N8Ge9MB/fjytvDZYHF/G76rmfCF+l7K8r18fv0sQ3fjAKnMcPW5NnJ9/n3Pk39j8+/OrHyRdJnkj2a7N/m/3c6Df5PcvwnXOA7P8nPyH7sbkf8Jr6huy9G9gg95/QG517ReSapB+8kn0bfC8RN4/Vn8fi5+jks4NfFeXvdhbPqpCzPX300P5I9su8cYTft2R+kPtKea/Id3k/oyZ/qUFvp+T+NP33pI9f4eulvF/yf61vRsJ7pvh/u/bv8Pdd9attlbN+2cG4eB843/wx++0viu9b0eNf+lfygheLR/vy77nKj9PfZvr5ULkeusnfT35lxdz3hyf5ld0KoGQg+Ao4gZ7nsesI7faG75rsj+J/DH94Fh+z6O8E/N2Or0f5wf3K9bUvBVeSfyvtm5N3L+1miW+naz9R/easj5Xb46M43z/5VDl//5h/n5n3Q+g9++d5/yD+l3VM1i/9ch8Y/cezv+m7n/y+QPl++HJ/Pffv7oE/9/BakL9raQE2zLmyct47KK98IXwnw7+39rnf/Hr1f9LL/earyD1Eu3V5l0J/OMq4cE/u86KzBP70n6tyD1e79J8hie/aR//t2XOOeHN+8tfA1fjrqN9U4B/f6z9rkh9PL8X3t/J+QO4djNQ/Hy+6f/Aiv34PPIX/3Ks++0tn5J4wOW5lr1PV9yP3dHxclvcZ0M17Ce9rP4cem/DPMeYhyd99Q/vkYyY/M/ma95FjiPJf+DsFP0vo51j09xOX5ohft+Ij719kPVLZ7zmf2hW+Ppl/k+MJ+j1f3PrN98nry/nrw+LFkex3v/ie9d2Loccvit+v6GT838xPOtuHyvov7zvlPacl9PKQ9t8XvVd3H309nfPZzNPpdwp/moKfXuJNb7APmPyH9/SvP/jP8tyD035B0fqmSSl82jc13z0QX/3F28ey/sq6lVyl5OyU83+/5z5Q8p+/zX4R/LnvWUZ5Jfn70O8+8FSjh5raD8B3HfAe/E/O/R36Sn5B8g2SXzDOfOER8KvkC/GjwblXyp7Dsz+v/aNZn5A354J3Kf9F//XBhexZwXfF+1fZt8r7UO2tXzdp90LiIvp38N/vyHUV/eV+1Fh++Q0/XGA+2N73m8WvjHebk0+AzvX6w4/sfkPy+dN/xOe7+H32ubO//W/0jyTPYv099yuXkvtdcBm4OfE691dzv1g592d+Yd926j9Uvyn3JdRnv3pfMO+FJX7mPCfvLeR9heTbjwDvBMvnnc+8L2f98npR/tlz7PcseKPxfF6Tf/L1VOYHDf/J3xf8cS14Nntthd9v4blSuwPhiX9k/z/7/uOMN8mva8Nuv+Xen+8vpYfi9xlqix/J712l32wN/5vGv4P5z8jSArxV/Mk7DjdlfSHunly0npvMv17Cz2ywUtaz9Bb7ZdzLOBj/u1F/XR1+wXL4a4C/DsbVK5Ub47OtcSnvTXyAzrlF/T15Bdl3TDxoq9/vTW9L6LMRPrbwh8f0y/L8f2t0joDv8OwfJ8+S/qYkH9Pv84wnOd8bbTwYBTbE73P4myl+NPL7Anb6iry5P38L/8o9+tyf784ePcBuee8o713w+zHieOJENfz9SR9bci+otAA74G+q8lz6eoW8i8n7i3nJn+LSi/pnOd/fxa7b6xfDlM8gx6n4eYbenwOvpv/h5peXZ54J3o+/PvTTiLyH5F1M8mVeWhO9A/HfMPMXftGVPM+ww9P02xI/+4mbNfSD1olf8PfIvXb4n0d/H3qtzg/7gQ8l35f+zgbzjmzuhyQvLveGi/PjXoAv+3IN9N+8/7uS38zD31B462v/jbg5EzxS/KwL33T0ZoBL9ceyGc/FxZwbH0pPY+llvv4/Fv3cyykX+2l3Kb1OAe/I/UT1ebevonKnzO98l/l93tt9knxHJt8M3xX4QVX1B9PfOH57EH+4Ab1Ple/l3+fqr/3QaQj/+Nx/UD4XPwPgvUy7FsbxzBcm0c8u9PNL6Cb/rLQAq2mf+dOxOf9h3z7smvvWuV+R9+9W/I/973uMH3k37eycU6HfhDwN9Ltmyregdx97P5x7IL7L+3bf6A9H5j6l8tXKB4mXQ8l5oPLueb806339YrzxajU9bYLvLvxeRB/VtK8fvL7fRXw9Lvf/+NtH+L6df33KfrXYrwm95N3d3I+t77sjsl+u/gD48+5t5rHF79+eXgAlE9Vfq7xJ/TJyD6Lvm5PPzJ4P08+TYNYbnfJ+F3wrS/7/9Nrgt33md8mThP8Cfn9raQG+jP4n5O1sfIl/7AaWwL+Rv2fffhdxbi265ypnX6YT/83+zEr+NUr//SH399Gfnnv7+B+d8QD/R2X/lN3vAHOOPp2/PQ9eRc70vzfgH0IvyQt8l3160PvL5JwDDuEfW7Tvp132YT/MPR5yjYd/sHhfFf3D+XdV8i2MfLnPpl3yw4rvL/Rmn5f+x/xtb/qcAi4xf9xDfWdx7SjwE/Ydg/4TuWecdzbRzf27z8XPO+kl8bQyvrP+2VK0Dsr6Z1v2vwDdzeLM89q/xK9eBm9mj+yDf5T3Uej5V+NYT/Y5Sn9pxg+Pxl+vnI+Jd9PprxO7/Q6ugW8VvlbkPSH62Y29sr+Qd/Kzv7BUffE4udr3V7JDxvsRuX+Lv7n00JTeu6r/wPdX5BxeffJIZ4Mf03sdfNcG835q8nGSn5N8nVfxn3fJ8075t/wrcTLj+EByfE++vA9U/P7TT+J73oG6WFzYkHEavu6ZX/t+J+1rsWMn9q+q/2yHbvLIGiZ+wLdr8laVcz8h9313z7ml/jyDfk40fub9hS7KWb+2MJ68pn4v5ZrsVx3+vA/fC/2q6h/n/3vwrxeVd4cv85krwC3sM5N9c06Y/aJX8d8858u+L87/rkc/V+t37fE1QPni7C/lXSVwG3Ei+2YXgHnXNvfhluK/Dvtdan30Mfv9V37x+jZ+Whscjd9mea8MXFtagNlHHsEe1fl1/Pjf7PO1eW/ycibnPFS5xLzoL/JdAybvfV/yfpV3opRfQ+dTfF1Lvm78/Qr0V4k3P/Pz3enjLPgf1J8eSNw2PpxWtL9yBb/OOrwL+nnvLe/ArUUn78Hl3dPkiRXnh83kr5lnL1XO/Poj5SXWz3kfIu+fJu9xJ/SK8x9vIu85pQVYFp3k55+gfhE9biJH4+xzscfXGefwkf76Nrz78Yf36Xv7vN/B396gp9/AKdrPLXpPL+/s5X35OuLOG/x0T/prVnQ/expY/M7mU/idkncPwFnq839EPibvLfQzkf6H0udT/OJCftgH/cSbVmDLonh0CvufSN5F/HcF+u/w2+XgUjDr6db6V11875d3KLPfk/lM1q2+y/8DuV1exSKwJ3gbPkYlP5n8XfDfOe+jRV79pbb6M/F3fc7TMn8zH0z+X+7PNsTfJOU/8P8pu/437974nfe0t9Wfn6eX3CPKvc+y2a+k7034OA//dfjFaerz/suAjBf88QBwu7x/xg+epqf8f5izjBP5/zA573sy+5va5Tww9E/N+MXf8h5N3rsZn7xueN/O+Ql79qW/vFP8I3vl3Zu8O3aEct4fyztt85O3hv4IdLqjvy8/OJd9OuecS/uns7+U/Q7yHOv7juAx4HL4H9T/HwMnZXzI+hud3DPLu0253/mT8aOb+PlW7peivz97TGSnvJOQ9xGK/79AA3CX3NP6H/lLN6jfkvPtnGvzw5wjJv8t58HJg8v6f3/2eEdcnczPK+b+rfnv2OS7sO945Wrw/4mvx3IvH393sd9P7HeP8lD8PKB93iMv/j8Pm+h3eeKm8sm+74Tvt9nvuaw74R8qnowC14DJ38r/TTkc39OL/n/KKPx8T77c1/kh82F0x9Lbb+g3pd/14utQfrOVeDgO/uyTXa3dOZlXkO8p67FeOXcoOn/I/6fJPaCR4tNceKrjN+9n5t7yUu3/rb+8m3eKwLzvlvfZT0o+XOI6++cdiBPVF7/PXo9/XS1+naGcvMAT8Xlj8iX5R/K3bja+1YT3tZwL019P4/n6nIPW+qccuW+8K7iutAAzv/9b/7zX9y+Lcznnq6m/fmmc+QX8Ofea+OMxuUdFrhb0nHeP/tc59It+L588SfhnJ08g98r4TX/l9N8WyYfz/cHJ91HfkN7nG4eSt71X7vfmfi76Hyp3y/0k7fP/iZI/l/uht4oH59HjUOP/d9lf5L8389u8M/kH/RxN3pPBE8C8F1mG39bKfmHWt8mPoc/+7HcFOQbzn79zPyTzAXqay4/eo5cV4IS8L5/8UXj/zv4KfLkfknzs5GlXU06+du535173VLCafpN7haNzzx6dd/Ffw++Pi3PjwWe1a6nf711agPvT29lgrbw3BWb/M/uhPcyvtwXPz30YfLyjvBRcBua9gtzPeTX7IkX3c2bw11o5r1B+Ifs8+P4IXG0frhP9/5rzUH6xiH+WU38If8j7tMXvK+ddjKzHiv//QV10c+6c88zk75zIr7vjo1HuyeUcG183w5/9vOzfjdb+Of13Kjgdn1v5/kdx72cw/wdzEn7fNL+anHuWuT+Uc768ExQ5yFcJvm709ot4c6h2Gb+bo5fxLuN39l3Ha/84mP3X1uJu9sOz73N23icSd5fw04zTA/hf27zHR57b6HGU/l4WvWa5n0oPHfMOAbwnw/sR+A0+itf37yjn/s1E/tYVP5OUZ9FHb+PBWnZ/KOty+H7Gx7jcB6a/b5PvVAAlF4CLwNxnWi0eNKXH9cbv5B+2JffzWfexX1/2zT5Z7iUOLLqvmHuuO6tfq3/mfmfekz3A99mny/2u3O/Mfc7c7zwm+dn68wLxb4Tyq+zfzfdV/X4muBL+/N/Avuw4Nu/xqd+ivGPWUex0N/wdSwuwRFz7JetA8jXPe0iZf4LV4dlDf1pi3Zh8xWfg75L3pMn3de570XtvdKex31Twh9yPw18d42Yt5StzX55+lyUPkH5GwR97rSJX7BN7TYMv5/PPKy/jP1nPnEQfz/H/nuw3SzwfWwAlFdjjhfzfyvx/wfyfivx/M+2vN5+4Dhyj/xxPv4fz18MSd8Ank2etXBGsALYj5/Xm6/vTyzFg/l9H8jaSr5F8jvwf1W5F97+3J0eVovlV5lWXgjvSV9YHz4PTi9YL69Crgu8v+dMLuWfMvrvl/16Ip5OK9sezH51z8Ib0m/yNqkV5HCPZd+usV7S/Bd1/aZ/zgJwT3FB0XlCdnXeE5wD2z7uXl5u/XAZWzjtw8FxD/3n/bTt6yPtvp+lPV2a/C38/5P5h7pnip4Xv839U9s3/3wXrsWPyM+ZrPyL3HslbAb17c+5Prxlf/kDvEf3rdnxNyzwS/pzfDjD/zTnuf983y3m274v/v2D+v1L+n1L+v9L+WV+KJz3El9XKmR/n/+22y3o278Upb+Jv3cl5L/1fiJ8Tk3cAdgGHw9OWvzfmXyOTV5f8Cd//r3dS38VvPfwvhe86/J1Zqn3ymIvud5Tnz9XA6uAY8Xcr66pe4A74LM39f/Phd9jhXuUH2Cf5uWXYryyY/Nx94KvFP2qCeR8467FHyfV80Xpto/77CH2MI+9Gelwqfh5c9K503rd7Bf6Xs+5LfID/dXSnGMcyj9sA/znqq1p3fM0fso6Yh59LxL0R9NGSfbdRfgR/yTfMe6J/svuPmcfBl/zy4veT36WHvKOc98dyr+DbovtHT7PbFdp3h3fHvO9iPPky67ai/LpF+DrD71fm/VT+3Ud8qpF3yNjvhvgHvpLXXUru/P+U6+DbgL8N9HUc/7lVu+L/853zkaxLpyknf65O7kcUve+QfNRbkkeZ99rBQbmHiM8S8s3O+kC5Wu4h5344vDmXS/768XlPJHl5yVdRf3RpAea+zyfsl/yU2vhp4vf1ymfxox/o49LsB+LnCeX/A6L0/tJ4nHXdedSWU/s38JsMGSoNJEV3pJSSylCESIaUkiEN0pMQSrOhlFnmQohEhkIlQyJlKjKVkEqUeahESRIyvGu91+drredav+f+53vvc5/72Me0h3PvY+/rmT1L/v/f/vULuMtuBay6fwEvblDAf+DpexfwhP0KuMMeBZyxawGfhXUaFXBw1QJ+v0UB+9Up4KzGBbysTAFfhRdUL2CDhgXssV0Bz4Td4ZR60pULOHIH70k/uQ85PK9RroDVlfsIf0O3L+AIdJtsXcBL6WPwtgU8dCdy4usg8r9Xu4B99i3gZuUukb5pmwK+hZ+Dq6hH/t/0eTq6R3h+GP03os/mnneSHtOEnOi1x2dJpQJcU7eA/+wlv1YBr9ylgNfKL2GPrdj3LfqZSb5a+J5LX5u9/zn+arL/eu99yX8u9/4h9BY9dqCP6PH3rQo4Cfag/7Lod/beF/j5HN/z+M8y9HrjewL571T/1/g9jV12Uv5j5e8sX8BO/OZwdKYrv4z/bNqxgB9Jb42/1vxnHfl+givY6wrlzuF/20nvS99bqK89/nYnz/HKT8DvGH5yl+cP4f+X0gJWROcndm7lvYPVc3FR+62h/LwKBbxd+TekX6Xv5/hPRfx11Z7fY5fG7NVy5wJ+xo4d1H8e/zycH3SpWMCe/OUM+S3Rv0F6ivSr/KmRdtZ19wKO5P8t2Lex93/E13j8/8i+J5CrDWwkvzr608i1m/Qu6L2k3rT3nfG9A/9YXVrAydrlvBoFTD9wq+e10K2u/Jn431H5vz2vqz01518DlOtCn+Wq4Ys93+Hvp9Lbo/xxN/S68Mdu+K/KD9vgf1v8loXbwKfRn6w/7k0/U6Tb88s7+dsw/tOSvH+Q/w3P98H/GPpcm/pLC/g8OrPRbUo/9fG7assCLjZOrEH3Ofb9Ubu6Tzt+gn//Ln8BfYynjx3l1+M/4/FzGrlX0f80+t1XfZX48b3yZyn/Bv3eLX2C/J3o7R1+uyP5jibfO9rjUcp3l3+48gNLCzhT+7qIf2zAfx/tqYl+6Qx0tiLPZ8b3z2FF/lRKnhL6XUt/p8A91N+EvRfjo6n0cPZsULaAb6pvV/zvSr596esNen9H/zYX/2fS71/G3z9hA/nTtNfX8XmJ9l0ffyP42SL19pXfXv5V9PMyvxilvnnenyH9IznWwib0czC7VSP3SuV6kG8N/r6Hr9BfB/X39f7B7NyO3mrws5r4H0R/Z/OXC9Fvp73P0j6Gs2Md/vwHujfgt6/nZ/GDbfC/LTwEP5ej35897sLHUdLd8P89v7tT/tHmD0vJ8Q++FhgnrsZfH/wMlD8ItkfvKvRP4o8d4Pmen87+TbXfF6QPkF4pfSj73sr/z5N+nB+8xL612PVgcuwg/xD8jmLfWuR72XuZf/bTr/5HehH9tdKf9Sf/mdrne+SvQN+HZL6g3r8z/9UutuI/++F3AfofFI0/O6Kb8Wcdfs9i37/peSP6K9H7h96+k14Tv/P8OrgjPmqj3059rdE7TroR/sapdz0/3QCfJO+9+sMnyb0lTPs/l/y34et2eJ78ruR5F50y9NAOTjEeVI49pTcpP5L+v0r/ik78b7H6F8FV/OgY+unC3t1gV3ix/H3pv1lpAZvDwepvo/7L1Peo8ldLv6K99qPXd9l7C/wu51dp32v5607Kf6m/aOn5GFhe+6xHnvqZt6p/Z/bdYFxdRG/PZL6X+Yb2uiN8z/xuP/ycrt3MMG94T7qP/u1X/rQRttA+x+J/una1iN2b6+d/ppfP9G8b0VtM7w+y9xLpDfI/9/6EtDP2vpI9Tvb+2/x3I/u09vwm+v9Vupf+vAx+1prvPqy+PsaV9vHDzE/o9wf92hh+3IN+Fyv/gvK7qe9k7fAv5W+jt6n0NlH/XJ88+7DDYOXXkfcR8vXFTx3+XUa6K//6Gv3e0sPJ+bn6F7BHU+m3pW9B/0v6OoW+98HHQxl/+cP26H+Kv+HK1+Kv7eVvSV+XqW9q+jv0b2Gv2tI7kOtbdjqOn0/mv+eYfxwtXZ8et8Xfmfh/ST33w+3lV9Gfz2OvgdpBJfxv7/030WmLrznsc3rNAlYm14jSAvbFz0XsvTc6t7LHqco/zW+egoeg9xr9XMuereCW2tFX7DhTe58FX0g/VjT/rUP/I/G/Qfpq8vbG/5XSLci/nf6nGr6m0tM0dPaml0fp8TH4tPw26P5Jvs3wMvT30j5W+755Pt+H/OAH48+V0lWVP598jfTP+8G2xqd31H+K9nQueU/j3xXVf6f65tHr1fysAv2W6G8ynm7r+QXsO1y9o/E3QvpL/lVNfeeTs7p0P/Q6o/cmfltn/Qy/z/ve2h7dCvAK9a2g7zP1O5fQT2vyVdJv7wwrw+b86x98nQPPhruqfx/62BvWgemnB2j//eEgmH773uiP36TfT3+wkX02wOHayVD6WERfT8pfIj2Jftehd5Vy3fjjneS/j9+O4MftUz//2V//MRwexA8GeW9DaQHX02vWYY6gv8fwk379CnKmf/+cPTPv3ZnfTFL/+/g9jj1PVP5p+tmO/edol9XY+zf079C/PsMvJmR9FZ+XsNez/Pwn4/FA9bRg78FwCOxNf13V31I77Cb9Mf3s7f1t1PeW+q5V/gvjaXX2rAL70sc8cn4l3ZS/NKSf3ZS/ALZgh3H0OICfDSNPOfK3pZ/R1qVPh1PgLcr31z8NRb8B7Of5TvQ+jX0qSP8Z+3v/QfOmZbAl+j/gt15pAX+UPpHc5aWr8INn0X+e/D/xq7bGwbH0e2/8I/Mn9ZWnh6PwN5b/bel5/3yvKn+N8fIa+bdIn85+Q4w7deEC88k/2Wtb8p8Kp5L/L/kfaH/l+ccF/Pcb/C7VX3dAf1f0eyt/Iju8772F8Ff5DbXbS/j3IP6QdliTfn/TPuqg97b3vtAfTipAyXA4VLk98f0gft9hp/vZ5zX6Tf+d/jz9N7WUfOqffN9WZ58qnt9GbwvYZzr9L6WPjP8nwIz/1+KvMXmzHtEN/fne3xN2wde28oewxxH4v1J64H7/TS/rGlnnWCf/MfXfTZ+j6Geu/GbsczDcGp1P6G+t51PNW04m12byHJn1jnzX42cBfofoj46TfzP/2In+Bhag5JV8t2S9i5zZP9gfvRnoHIa/Sfx3X/Jc5/2e6G/OvIVc3clzl/cfZu/7tatO5LyR/z5HX9uR93F2OSL9o3HvRv32s9K90P9L+b+zj4e/Jvl+Vn8v6yMdzD9vZre65NsH7gH/zno4+V7H96/6+7b0c6X0PcbBBd4fLb8zvrvArjDt5SZ+me/6n+gp3/tfs/9F/O5Fzx9AfyI5jiR/Fe8Nyj4B+YehOw9uzY92YK9e9L3W+L8F+v/Q9xbZf4MP42u58XeyfqWudG35g+ntVd8tHxWtl49E/zD2uUE63z8fk2di+mt8P8H/ss/3qPxPvD9VfhvyZv+kmfeWkPf17Dt5/gP/OVH+KPy2VX4kf5tB3x+YV3WT/x9Yjh93z/eW9JnqG4+/fH/X5hf5/s73+JX0MJA9nsLfDdLZd94Kv8X7z13o51b1X6D+0rQ/+u7Lj2dIr2Ofw/GxHbnmk7+6/Kr43wXuDOtlvy370fA65WP/GsaZ7zIeeL446xfqrc0+g/FfGf8n6M/WGN96a7+v4vtjfjeO37bCxyj09lX/H+htUv9B2T+l313oZRn5ent+CX72z/4QObri/yr97Ar8XCO9HP1t2acnf7oVnXPln8IfphgfV8HG6M03Pg7Wf5SFTeRfTh93Sz+rnqH4y7ziEvnF84sG+rNW2udR8H38bZH+0vx4S+lD6Pc8/cGF5hnnw+oZZ+jvdX47En+xx/meT8n3If18l/FT/zKQXQbEH7PfRb+T1DdUfafJPwY2Ud8v8ptKT866i3HjeDiCfKPI1whfPY3HnfBXS396BT1+CG9W7w3aw1T8fY/fx9B/N/04vo5UbjasxV6lsCZsip8l9LNEO1gKtyHfuey+OvEu9L1Zfn10WrBLbXxO4j+Hka8GuvuS73zvX4T+IHSORb+G8oMLUDLL+LGU/krJ3cH4NQY+oD/vpvwo7SHj+fbaSyN8nmtdIOvI/Yr2X19Dd1v8P4nvRYnLQLcze3Ynz2zpBcqPxNfHyh+n/EL2fdXzavqX1+XP1n7/gCdqv0vkb6Pf+Y5e/8Z/9/QP9HUaXK6eMcr/Rq8z+UUjeEP2R6R7w1d9f+1Hzjnpn+nvWziEf0zUrz6SeQE8Ff3fydWaXLdLT+I3w/n1Jegdq94G7PMJ/fVF7xHyLyJ/h9ICtodv0cMQeligfBntpSI/H6B8C/3Zd97vvu1/v/+Q/vo6enhD/3Y1/roUoORBeBl8wrh0AX/vlvVQ9e+EftPsb2fdVv29jC/700/77I/QzxvqX4D/hfBd2JD9v8+8Ub3f0uMH6h9T1O/ehM/fpceZFwyk9y76vyX017+0gFn/3ln6xCJ7xr7L8BP79uFPF8Bh8Pl8z2iXj5GneP9zd/1zlis/hf/Iv1V9m8l1Nj0uJ/90/Xc3BJ7y/GD8HZJxKvN19Eq8dx5/uxauR++kMKT9VVJvZe1rKfo1tO/si2afNPFS2X/OfnP2n7P/uZy/7KV/+ET6R/b4Al8rEycH50beovlc5nvnZ39BvUv5wyzyX0P+CcqnXaUdrZC/kDyb4QK4A384Bb8z9duJ5/qKvrM/+5nnn6r/eOVXSH8qv63328ivSP6p/Pd5/vVYxi/67KJd7yX/K/qdj/7u9FET/ePI14D/7WAc2B5e4/2v2eV9el2jPW2JfuLCEg+2nff+/T7SL3/Jbz6H1yt/F/2t4T8t8XMu/TWSLqvdNJXuR19r1HcL+/Uk7xfod9KfXIH+5XClcuvpbTG+htJ34if+yLwIP6/qbyqj/0T20+H9/H0TfZxuXr8YvXnss5H+K7FfDe2sovRq78+mn1rsMEu6UtYnzUfTTy1Q36n8o7J5bQVYHu7t/XMyPpLzQ/x153+JO+sJy2t/iT971vPp8DFyfC0/6zH9yHs9/Q2Wbkv/B5YW8BZ4I3suYs+Tvb9V9hnxl/iMHbTLkUk3+b/z8zzxG734+1XWP86WTvzPqdYXzlF/Oe3wUPY/Qrmj4IUw+m1q3vA2fMr8oZn6TyTfzeq7jh1GS69mr+zL1ZHO/lwz9bzs/XwnbEc/Zci/ZeJYEudLv9eyRwl/uk35FeT7Vf94j/wt8Zf4gYvo4wr6SXzES9IP89tH9BsPwonkX67+i7LehO758o8n37fqnYj+4eR/hr7f0f8+KT0GvVe069vgXFg365j8fRn8WfvvQQ8VPE+8dTv190M/cYmJR8x+bTv8N2HfuuTqgu/+yieuZ7/4tXT659jnMPXHTrHPBO1xrH7jbngsfe2c7xt6TJzBm5mfan/LYBvynaS++/FdET//0b5/UH/iQlaycxnfawvw+SX+GsHsxyR+5WrzzHz3/Yz+U/zqBP5yIjxJPYlzuk65jCvXqmcC+71gfvJH9mMzX8H/xqwXwE2wYeLttLdB7Ps+ffyu/DHSu6CfeNOy9HUR+QbDIfAU+fXQb5vvLnLvyT5P6Tc+129kneYs5X9m78zbjsZ/Xf50o+enwwn8+xryLET/lKzfqif99z70eoFxpZ50PfJnvCgr/4ai8eNK/rQZ3+/D7/E/Xnu9F7/3JW6V/HeZP9dk99X87QXvTTQveNDzruy2FL3p7L1ePZ2MA/toD4vJuzv594Z/sMNfvs+fhVvrZ36TP156Y9E5iV3xsZX2n3iLxC2eRT9vk2+uceYt6fuz/591E/bIennWx+/Uns/VPt7NvCXxS9mPyvkU9OonXot9jpHfBH/N2XdI0b5hC/nZP8y+4WGeF+8frrQuvAquhg/L/4zffAyn8NPER7XGf+Km79G/bOY/r3j/Be3oVONkVfr5inxDlB9P7i/J1xD/9+J7nHTmXz3oK/7cTPn0Hx+Z93wMn1Fu66LzQjk/9A96OT+UD7+90c25qcbyP+S3i2HiKRI/canv7E5wNuycOAx0M+952fPm0j/j73b08n1yh/wH6fML7fou/et/0LnH+8OybkzOF6UTx14jcW+er8n3A/n3Tfv33hlZn+EXs/MdJ/2u/G+zn6d85uuZn69i/2/p4cascys/mlydogfpBXmfvB+bJ9dCr0R9j+t35monG6Wf42/d+G9L6RGKn5PzJfT3k/ZzCLoXZP9Afdk3zT7qv/unnncmT/abPpMuXm9fK71Cfvmi9fasvy+X38t4dQA+zs4+LD7mSi9M/F32L7O+bTz6EX6qvZ7q/anq7YrvZ+ipctaH0ZvjeQ9yf4u/Qcazm9DvmHMd9Hdu1rfNK170flP1J86mMvoN6PMc6Zk5j6Hev/Azn3xljIeT9WuLfZ+Oxn+nonZ/RfYpc/5FuYX6/T+kv8ffwsxHMy/hh7vx1+r6va70uKt0E/VPZM+Z6P2gH38h67vGjx/U/7509dhffzND/ixYRv3PqTf+G38+X/3f0t8t8DuY+dHz+DmVviexxzX0s5k+WiXOVvtK/783erXh0fzxUvKO0H5bwCVwe/KXaO/F63zpX24tLeAqdn6T/hPX+4V58w8ZV6RzvqUve1wI+8DX1F8c79Ka/qqSv7J5wc6wCqzo/ef1h4mfmyWd+Lm/fU8k3nGl92bIvz9xsYn/SH7mB9ZPlsBa+R5mr5MSlwA7wnWZp9BvCzgAVsk8wvysEv3/Lb2S/oawd6/ExZrvdcVf4h8Sj79PUfxD5oePwIdhF/r9jV03wc36i/746a/9lMKz8bdTznPirwO6Dfnr7eQbzy9nZZ8U/WHqX2Leln2lUfw6+0vXZl+TnX4j9230c3XiD9j3WulW/Ks43jVxsLH/CPzV1G720d+8Q39v4Otj9WUdMuuPlbSnnKepqH0cqb7i/dLsoz6tfMfE3eC3eD/vwPQn0vO891HmK/itCqvBb/Bzm/ncnJyrkn4WP9eTfyR8Rfkl3u/DLwbAwejeh//Z9HMnvp4mz0b8naH9DSVXJ98xHXL+Tn/bALbn5zn3ELtmPbI5fcS+r/G7XfjF5ejn/NM22tu27LSVdPPoh/89p90+C19Q/rPEKaN/Oz5eznk4/L6Y80no7uf94vX4nKOZRz9dyb01Odbg/5qcpzL+DE0571fB31rj0Wx2vZFdH1D/XPrK+t3n2t0eyl+P7xvgQTkvqf5Nyv+q3EL62E75adp7vs+ekJ6f9Ut+tS/8IPvEWefTX202Dt4mPYW+HiBf38yn+duhie81LpZjh03ePxL933KejH7/kM7+z2D90Tb6l4HSiZ9vhZ9DSwvYTvveX/nn9Bvnqq8j/8r87wD+dZH8p9Sfdt8S/XLyv/K9sQX6tdE/C+6d89Xs8Kf22hWdC+k3cYjlyF0ebqXegdpP4ovqstdc+YkvOp9f9E+cNH3fz88eS9wjP+0I2+G/f+LHyXdAzq2y3wP8tiuso59pnnhf/vQQ/iuqf7b6nzIep39Jf1Mx+5fs+YP846X/kf+EenNebILvg3vwP4xfTJB/EtxIX+NyL4B28ii+TyRfQ/X1znxbOucXFiYund0XSc/A7wHs+qjnB+nHGshfmvsxcp6H/Y6TzvmsnMs6FA7D/27oXsGPPi2aP49l32v1S1fB2uRbqf4n4EPovib/Dn42NnHz9PSn987yvXAUuz3k+30cfbVU/x/kPVL6/Yyfnn9P7s65/wP9nLe/WL05h/+68k9ojzfp926Eb8mvV3Supr70/dkfRH8zvurmPB55D2CvgdpvN+03+ziP8fdh2X+DNyWORftczR7VYm/8Ja6tonEhcW1HyX+BXhfDJTBxU8+UFvBpeB5/PkX55ug2S1wI/79Z/iL6qqzdX0f+U8k3sWjemXXJzD8vps+cT8x5xZxPzPfkYHZeVPR9ubP5/nT6qio9P/H7+ocb1fOh9GZ6/bBoXakMOjuT7xV+k/sKErfQEP1W+T7RTxWfR5hBb0vVP5N8q9IPwh/gnuxbHv3T+Mso/cNo+Kz82eTNOtJ/vL8Yny3Vl7i7IeRcoX2sKlrPWC2d+1gascvzRft3Z9PPNfz1Le3hDuW3Yd8/jIf19Huz8NnM+zvyn/91Dn7PnFNJvCi7nYn+ZPYZl/X+ovWthvzlQeXKSLdN+9Bu1xYgn8Mlx+Onmv5ugfSbOQeH/7KZv2qHB3q+W873Z30q61j0uhP+V7D3gJxrpJ9zE9+Iv+yb1c93mfLbG+9zL1JV/fcG8v/MXq/BnuxYL/E02Q/0XXIaun3pp2rWy72/Pf73wE/ufWqN33PIk/ufKvHPnWBFuMR7E9GvkHgU9BK/+Tj9bV1awIGe98FnDwY7E07k/xPwOVb/uxe6N9LP69KLivqX9Dfz+V/uA8j9AC3xnfsBDsk4ID/nrL6RTr+Y/nBN4pq0v8u8Xy7nxflJFXLOVd8q85ScS/8l90+ZjzbD73HmC9m/vJ19jzC+v6Qd/iX/G/PlU/j1tTk/lf1c9daCM82PNuF7Gb86kl8dD3+Xn3XzrKNPgNm/HkDvq/DTkbzp3xqSZz84jf8s5+8Pl6JP/kezn8kuI/QnF2rH9fTTTbM+bjx8id0nyJ/Cf78OHfz+yD5/5v4E+sq5hMTN5nxC8f1Kzfhf7lk6hTxfee9U6WXk2ZV8VWF1+LX2Ul/76en9j/B5IH4e0K57o3+/dIesh5OnNnudnX4f/R6e53xFzlskPvB6+Q08z7rsZO9nf+3snBfOvRXoN05cGf97B/bFR3P2uArdV/TDrXN+qwAlN8Du8FHvr058uvSlMPebZdzNeJvx+PJ8n/PXJew2F/6o/P34nZ51EemMW5u0l5+0n/VwIfqf6J9+zTxGez4++1XqH8r/B6J7O9xofHhYvW/Sz7fsm/PDOTd8s3pzfrhK4pW1m5xfzHnG3J+Ve7Nuz3kLdpyj/8i+5vfwefW9rV2Vk66Nv5yv/Zh8felvAf3ujr9y9PUaPQ6Tvjrr7fher9yXid/nl23p9xHtYpj61saf0Xsn8c70mO+Djsb1T/jpJfS9kv4fLUDJ5fB3OD9xO+Sto//5Ap0Ds76L30th7lG4U/5N+s/n+O0TGUfxv6f+POfLluIr58uGqzfrD8/jZxl9fKh9diH/Wnr7Hf0Ppe9IvJv++XH8bcZ31h1yHnm6ctP0NxM9f0J6fdH5v+L4zLn5fky8eM6dZzxM/Dg6WQ+7M+ul0h2UPyJxpolbVX4O/d0M58KV5B3FXqNjf/69L7o537Ey++vqyfmOd8md+zsm8dd6+OhtfB7JrhPJ93X2DwtQcl72E6R70EdH9eV7bobnY6Vzfv1L+Cv+c579cP1D7knK/UiTyZfz1Efxm4H4uD7xUFn/J8/D9JD7H3fX/r6j12naxTfy15BHsyzBTslfxuWx9H4P7Ox767LE2ZK/Q9Zbyf8Wfr6iz53Iey9/u6Hhf/P1QeP/m79u7NMDngGrkP81/twYzoWv5rw9+TcRbJJyn/DPOYkH9Hwy+T4uOj/3Nrlyfm4Per65AP/uP/fmR1l/vAf9/c1D90KvZs4X+H4537rBXUXnEfuz/9H46ph7E9X3Nbm+gTX0V0/h9yeGnUXPs+HS3H/BzkdmXYX+M3+Zx37H43d19ltzfw99ZJ6Wfj7zswq5f4D/PMN/P0X/Uv7+Gj4vlH6LPe7OvVL4yP1opejf6P3b1H8u+9/kvcu0u5xvugX/OR+/G7t8mvhH6cR//Ur//8uOX+detdICfpV4WfU8XnT++31yzUH/auPDHPpfLJ34hz21lwrs9h5/TvzEWPXdBTeS/yn1zdf/PUz+psqn/899J9m/7Q+zf7sG3YnKfZ97Ksl3N/89OPff0ePeuT9IO5yd8//K7Yb/rBckLi3rCYlP+5PffG+ek3ihCvJzb3B/mHuYcx/eX4lDlc79XWuUX21+tApWSHyqerZj90MT/2n+UYLfi/GVuP7E+Z+svpx/zLnHqTkPSU/v575nfOaeye70/67qxsBDzU8SN1t8/2z2v3I++gT0RpH3Ee1odM47m2fuDN80/0z/uj27Jz5va/WVS/yW9rGe3tZLX554hqJ7NXqxT+ILcn4757Z/KLo/7Wj+MFz6bv40K/FaWa+17tVGO0lc+jD22SHx8dJvk+9E9LIfPlt/kvsXsy9YBpbNPiX6w73fTr0jcs8he2Q9IvHGvcnz7/pEUVzF9XCV/NuK7g0biU7uD7u1KH51fFH/Vd38cB/5NaXnsv+jntfD7130fEzGR/Z4if+/Kn0nP1tJn58oP4h/DcXfj/qFAfSX8Szj18zcL8Ye4+hrN+XH0lf2kzrg93j5Txs3jtUvzecHGafaZ/0o54HRy/2pY7TnO+Dl7Jv5w3X4X8MuP2YdU/2NfJ/8FX/gzzWz/5P7K7T/K9gv5//asscJsA2slPOXWe9X7ir66kBfiStOnPEI7TDxxS8rl3jdxPPOzfkN6U7qy7pv7u++Xn6+dy9Ebwj+X9bf/aOd1+cnY/BdG7/rs66Ibs5/57t83f/4Pm+W/d3SAp4DE285Tr238atb8V+LfetW+W9+enjvF/yPNl+7DdZHf0Pm3/R5M7w19yjR1y/slXiTAfrnoeSrqH1kH6AyP8t+wF/oZJ1zAX1nvbNz5sf6uXv5eW/1bZJ+RL2/5r4vepjOnwfwv745h59z2fhrzm/n0v9a5evqfzpmvVl9I9jn3/sW+UfuX92C/vvnHiR0Mn+Z4v3MfzLvqcmfpmaert7l8CD6yf36Tfn/gfAAODz3oZkP19FPTIRXJr7CeHcx+U82Dg5W36qsV7PTg+glfq67cbhPAUrugz3J/QC6B7DDgTD3Ut8k/9HsY0unnzimtIDNzOtawRr4z/d1vqsH4/M0+m+g/EPs/bf21C/rqdpn4jNzn9Djyh9J3lYw9/N94/1u+K1Grq7S55DnIHLkPuJXtbO/pXM/1PSc+1J/G+1zJn/Yr+je/+w/53zdMHRy/jfn6zIvHABf8j2S+dFq6TUw69FZfz6itIDr2Hlt7gOhz9yj9AJ57s38RHoZem3w/VLGEeXKk7eqdtEL7s4+Wd/ck/x36z+y3vmefn93730gnfnzBvzndx+Kfw8icbuJl+yc8TbzM/1OG+9twf+yP7W//MawESyL/xP1R+1yjpgefuI/Oa+XuKzcd3wp+hfS10nZL9d/T5C+jF6q5t5J2CP31GS8835+5yC/T3IBffWBX/DjM/Cf+LPEnS1F7yr6aVy0Lrwu+yDSnbPerdwIcv+Gjy7a3xL85l7TxD8cnfOI6CW++YKcz9PfHeb9ydrLuMQnlBZwErs8yH5bkH++8rnHN+dycp/vh97PPQPF9wtkP+Zm+ipeB/jF92fr7JubH7+c+1FyvkS/m99x2F9639w3it767D/l/hD8XILuu9L12e18/NUhV9at6yqffYsXYfH+RTl+8bP6T07cf+IvjJ93kyPxW+XYd4jy0/Q/U2HuM8nvOeT+yfzeQ37f4T70R2oH46QH4T/n5XL+ubt2lvNz7fTHH/Ov9tI5N5/512Ha0bqi+dcAeu0H+8N/tNNt+G/OYy9WT/ZXD8v+KLscLr2r8vOyv6d82knax8HqG19awF1yDhn/TfX3lfULB0q/nO9vdqmWdqR99835efmzYM653JPz1ebvPeljD/zlftNjvZ/9k5yHyf5J7ttphf4q9R9H/itgr6wn8dcr6SXfY/lOO5C+872W++xy/innoXL+KfvyK+hxpfQOmSfzl5nSdaS75x4v/jpKPVmHe50+StHLvQ+1iu5/yH3fjc1jN0hfIn9i0fpY7kvM/YiP6z8S93CT+Vh+9+nAxOXCx+mvAf4zv8r31x7Gh8yvrrXeuqvyj0iPpL+cB/tJ/oicA0t8jfG6Ork347+j94abL23i97nvPPebV9PeZttf21G6Bf6Wa9/N9YcN4KE5L8Y+WYfbkHM08u+kj8QlbkH/Od+Z+712T/wkuz6Z9VFy/VHzv+WMfIl72YZ9yqOX+Jcm+qUd2K154mW892wBSg4oLeC90rl/4Q5+m3iy/E5Ofh+nObtW007fYLcu8luQ6zr1VUO3Ws4vkqtaxhHpzJ9rKteDvW/hD62y/sVubdltnHRZ+sh9eJ/z1xn4ye8L9USvr35hA/5/y/nuzJ/wdXFpAeugOy73aKD/adH6XCXzxdH84iv90Hvxf/ZpgP7e6q+a+KysV3k/9/BOln8R/V8M30B/SfaXcx+xdrKM/bO+sJR+jyuKC56mfCvj/YbE/9JHBXbMfefF9+e+gk5L40X2pX/mPzewzwdZ5ynyj+PUfxV9Dsv9jZmnZZ5XgJKzYfadc95yHn0kruwB4+xr7Hs9uXM/ZHXprPNV8v7p/KOudp77Oe7i92PgDUXxD/k9t/w+4wz85/cZZ+W8BVyRc9z0eUziD/VDa2HOx+U+ztzTOVs9ua+zj++fu+QnHj5x8A8UoOQzqLp/7zceEr+Hb7Ff2l9V9nmafifxrzfwn9+9ORv2gtdn/y3fazlPis8rsz9GnuxrzCNvY/KXkm+a8k2kc//10/x+qnpXwOyzn8B/l5F369yTmvZLrq3yvUnenE8rvo8q91RNYd/0j+kXz849ZOiP0z7ug93x1y7xE/jJ/WcnkD/3n52qfY8uLeBpWY9XbjR/roluFXZ8M9+d+vdm6s853XX53vE86wZZR8j6wUZ+e5X+7Ur4En5raS/t8LNX5t/kz31qZROPSM9f5vy1/Cm5ZyNxsez/ve+t1zyvh/4v6q+B3kz0G+f3jvL9yz5nmd/nfqWJ9NNTezkMndb6g/y+3GwN5m/tMvGpC8l3r3HpF+PSeJjfL12nf5qjnk9yz1P65+w7k/N3+R+pJ+dFF2adGd2ch8x5i5y/OCTn/9kv7SHtpDj+5Ff8T9IvdWXf6xNfYH43iBzHyv+Wnzc1vt2uX3hU+jv555rvdcTfPYnDy/066OUehdb0UJ58o8l/kfzi7//EbW1HrsOKfv8w89G+9Hpw9vvRy32quV8s943lfrHa9JN4n/z+wIP0l981yb549smzP/6C+ejmxO1rv3PwewG+yhtfysEJ6s/49iA9ZZzL+bAD+E8/7XRXmN+HHAHzPfy8/u0Z+muUdeusv0on/jrn93KOvxl95vzefeq7H46HT5Ev515yDibnX1p5fk++m7XbFlnHhB08Hxv75l6Q7J/mPFHisuCrOX9SWsBB2Q/TDlZLL6fvF+FLsE3O1+b8vnWGI+lnv5yfyv0B2kvOm12X+P2i89GDis5Hf+i7ZS9YTXsem3jXApQ8A/vDnCebRp/dpPtIfwgPZO9O6P8Tu+d8dNF5wZwfbC+93PjwcH5nmP4O4Q+n8+cZ/HurxMXSR773X+DH+e4fwH9f57/5HeFf+Fd+P3hJ4n/RWccuE9ST3/tM/F4ness9xFdrj1lXyjpT1pfW8Nc69PeJ/nshPsexb+49+hD93BdThT76Fa3bnK7+AfJnl5KTfXsWxaeP0i+9Tx+JT894mPGxIX1kfGzs/Uvp5zvt7CDyPYT//6i3Y9F+/Jf84iv4BXxOflN6ybnB4vOEUxNPp9xx+t9+9DBZvT+XFjDr4/l95OnK53f7npY+Gf0y0iv4c3n4Lv0eqd/NveyluS8R/1Pye7T0/BTMfYWd5ee77XHfc7mHNb87kd+byO9RTJbewP9zP1zui8v9cG+ajzUzj2hKntzPkfvXr4a5fz33sd/Lvlk3yHpCfj/vaO01vxtX/Hty49WX3y1qkHEIn4m3GmMcSjxW4q/Ooof83vEW/C+/H3BPfh8Z3c4w/ngMfZc3jiT+Z6j8XujlXpzcM5L7cXZjj+zDjybv/uTdrP/P7wzV4J9Z7x2n/4s/zVHu+uzHo3cxPU9Xz3j6rqRf+lX5svR7jPzpibfkf/PJlfMLuf+3P6wBc//v/wO8X//eeJx13XnU1tP6P/CnCaVooCTxpExJKFQcRIiDRKUUiQyZyqwyZwoRJUSlUsaoJJolSdGIigyZUkhFhnDwXet3v95nLfdvneef99r3/uxrX9O+9ryfrrVK/t9ft9ICPrdjAUv3LWCHygUcJX2C9KImBfx5twJes2sBv0Hv/b0KeGPdArbeqYD11HPyAQX8l9/L717AivsU8Bb0y1csYDlYZrsCLsTPjo0KuPrAAt63ZwF3Vf4a5fb2/dXSG/aH1QrYfe8CbpRehF6nrQvYZIcCTvHdtui/0qCAz6LXWf6R5PuzegEfbFzAkfJn+f742gXcuU4Bj5M+iP56N8Sn8l/sUcAjlL90+wLuQA+f0s/b0tvQx9X7FXA79d+hfE366Oj3P2oUcBP5a9QrYOx4M4z9ni0t4P384D54Kn2Xqv9xclygnjb0V26bApaBZ1ct4AD1N/X9beQvi04j+WdvVcBb/H4v+W8n7+74XYjPv/lZR+Xr429N/AOeQ38nyF/NHm8q1wD/78Rv+cFBcDQ6A/nPmfR6j/QS+quo3VSCXeE69f+s3HP8cjt+2AU/ZelrH/nlpEfhsz2/6gAHss/1+Ntee/0GP1PouZfyS7TPT3y3mH/2Tjug79XqHSw+VOdfE3Yp4I708pJ0V+UvIN/v5OpQpYAH4e/AnQt4ADwSThEnxuDnAXI9CJ9XfozvR8Nz2Os0+vtC+Urkq16/gJ/xpyfRa1ZawIOlD5a/Wft7i5+Uobe+8CL0rtWOTsPHMvzXU64Dft5X7gz+1Z+epvj9fenr5PetVMAt5Qp4QIUC/lS+gEPwdzC9PiJ9lvq/Y7f18E70vsfP6+zfH9+vSS+XvxA/P9P3ZPHpaPZf5rva/OrOpPnbGfyiKvlqarcnS1dhl+1gZdgX/T7oDcXfifRyPby5TAFnwLPgUfJH4L8ae16J/8TPL+nrRt91F2+uVf4L/A/3/TXk/AD/87S7LuxzYNkC/gDPVN8G9Vdnlw/oc7H0VPn9ff8TPfUUL3rBHvy7Nf0+qr0NgQ/DO/C7THx8Fv4EV9Hr8NIC7qn+ZtrLVPXfQ/6t8NuNnn5Hf9O2BexIj3X0N6t8dxF9tpH/b/3lNex7GL+dIv9w6dXyx6FzO713oZ8a8l+oWcD5sJrvPpZ/rfhTGZ/niEN309+l/G0+/V4s/Zl6m6Nbi94/prfR/OMX332u3lfwV1H9b2r//6bPE+Am9bcg9xJ620X7PF89k7X3HeGb2n3tjEPUdzV7nI9ue/75M3qVxO2/0a0kf7HyK/zenBwvku9q9h/PP+bIz/htGfov4W83+B4+1+n3W7HraHg8/seLt9vS+4vS95LjKHG1h+9bSv+K/3Px/538E+HgxGn+3I98R7DjxfKfLC3gzez8pDjzi+9noree/w/z+zDlm/i9HH3Ulv+A9Dnk/Y4f1tPeyyo/Q/uYDqfBUnQOV+5w9qtILxeiP8644AU4Vvnr2WkS/czB5zbk2Uv+Gvo5N3GNfs7GXwXx5BD2ORiW5w9faDefw7LsU4WcxfqfiI+O5KiC34O1yx+1j6vIdzr/6kIPldS7wnd3KLeHuNJP+iDtoTb/TXz9Vb3nkO84cbsD+V8Vt2+Xv6/6S/BZXz3/IV/mR1eSawX5j8RfFfJ3lt9Zf3GM+PAUfTf3/aX0tDP5W7LX+/Kn89OzyHEVucrg/zXf18L/DdrjfX6fq102x09D8eku9PdEZzN8KPn0+Rt8F/+3018T44aG5O+sfOYFn6jvbv6Y+cFXBSh5BD4MjyLfTvz6ePZfhe4L8k8y3q4ivp8o/ZjvjhVXW8PjYEP6eMT3zdh5snHSOfRxPXvd7vu+0rXQ/wa9ofzuO+lnybdBu7ic3c6kv8PQz/hqu8wH6Cnjq1/Q2wx/gumHerBPR+Xq8MvRyvcSzxrxg8ulR+FvqLgyVj+00XcD8Hcde31G3syTXuBf+xtPNIZNM94g12Xax0vk7yndCJ+/aR+/Sf8hvRD9esbXtfC9A0z8el88WgE/5IdL0WurvU7C92nSs4vG7xm3ty8av/fL+E19ma9nft5dfByG7+L5yTT+NB524yd38t8J+J2l/HjpI/C3Cp0H2aM7OZopf5f2trXf+ym/Hfu+Sy/DxJnH4SLyXaDcb+RZRd7G6Nfg79Xj9/hsQw8/qm8/ft7N78vR+1Y8XQobkeNvOIpeRsJF5F2jPSTezYTnqD9xcRa++qt3hvRF6J/Hr8+GQ+ENyp9Af4v47XT6Gsve15n//ioOXWM887T8wfr3bfUP95p/XEr+ReLSMnG3GjxMO7sQv7exwwLph5V/yO9H0st69nmAfYrHd3X5d8Z5mU/N56cZN9/Iv56gh8fJU4neDuY/O6L7p/hbSzrtYEriGr+aKj1E+XX0UaLc1dJ3wh3orTV6O2gf1+HvTPIdSv7X6O1LfP7l93/jfy/x8GbpiexWHU6Hr5N7oXbwGnoD0GtLT4PocRF/LM///vJ9XfwNxPcC+j9F+Rrkyzwo859f1Psv/jRMurl0ufSv5Gmdfk+9Q6T75nt89JG+lf7nZn1LuV/JV5l+fxXvWqkv6xwHxL/oux99Pab9PI1+fXTPLJqf/Ru9Kfxif3Qu4//vaHc1+cHPcCX/aYn+Uu3nEvpZIv1Z0fhnMbmOVX8r+WXwWwGWyzx0n3/ydyD+NuOvLXpl+X37rJuov596r5Dfg5/8hM5++K9HPxXoZ3/6PUJ+W/GzFblPld4+80nxZXriMTvsm/EpfxpTgBLD3ZKJ9H8+fXzAf8ui2yz57H83e1yvP+yH/nTy7E3uqdJPoLeB/iYp96z03fR7nnJZtzwa/zejv1xcqG0ctkJ6Ov10N95ZZpzZFT6F/pn8pr/0MOljydnD7yPpaQi5p6Kf/Ywh7J19jcrydxf/H4AN4Cb2H+j76DnrABl/XWW/ZSZ9NVVPFfmti8ajGa8uTvxEN/1/xgPp//vpt4437ujMjs3xd4jyVZS/Ab8VlO/FPpfDV5RbkHiA3g++f559x2T+KR72wv/x/PeRjB/FvWvgOHaeTR870X9tWAuenvkzfS+n13Olu8ufRf735M+UPk/+xFJ0+MEi/F5EzgmJd9LzMn/nn1unf8fvDvzzF/ppIy6s8t0HcCJ+TtLfnAgPzPiIPleTp5P+48mM89l5FPu9RJ9L8NcH/af59TNwsvzLsx6h3jrK7yX9p3S10gJeZNzRA3airy7iw5P8YB77H0k/l8qvnfZunLEJf5351RlwjviR9dDs+21N/nfJkf2/tvibz69q+v0a9thWPJ+V+QQ/6yt/Pn/bXrmszzyC/13ov7n6LxKnfuXP7cS1weivk/6S/X4Rt3+FP8MT6L8zfR1BHz9JZ338dPJ1gBPlL2CfmuzRJHYhx/H4r6i//4BdK8CX8Z9x01fovUj+k7L+7vvts/8Er/T9jfQznn5ukH6BfH/Tx5va3Vw4Lvnkaik+HQlfZZ/u/OdO/tCb/1TL+Fe9N5NjeMZv0s35y0zyPAcPVP9d/OMSeroIHkL/r/KXqXAK/D3jYfYYyP+2lu6K/6yrZT6a9bZS9BvG38WNEvFhV/mD+NVn6NyufIn8NzKukT5fvCpLvtb8rYQea+hvVsjPeHx7erlcfRmfP0CuB3f6p5yV2WNL5g+xc2kBl7HPqeGXPm7Db9bvqpC3snpn8p/h8jPeKh4fZly2mX3rs+Ox6DXG34DMr9F/kH/UQ/+H7KfIz7r5SPzfat7aG/9PSl/Jns+JH8/C52EtdJ7Qnr7z/aLs27JX9u9+xOdm2Af/7/OLhdLvwAfwNyrju6zvwi6+e1R+q4z/pdexQ/Zvsl+T/ZsLM4+g733p5xV2mCg9be9/pvui155+j+GPh5F3vnq34m8L6PMs/ccccexO+qpA/n7424N8L5E/50P+NO5Lf9ESnyPh2+SYkPmr+s/iz3WtP3SV7obel+LLWfSWdfql5M74e0L6dZhxeBP8tNW/jTf+XIXOZ+xyme96wkeKzkv0kP6cfjdLr6XfzNsyn/udvuf6fiM6Q9jpB3iceLZJ3NsdX4cqX028rgpHlBbwcvU1pZ+v2euYrK8r31K5T9n3E/ghfm6l17bqPxWWZ+9Xtaer6KVuzsOw/4wClPSBF8IPfLcjerVgTbgavxP4xxf8YyzM+OJ6cWUnfGQekvnHveLnAHgPHEa+tvyoEr+uzc+2wB/Fn6b88gf13oS/l/H3uzj7B0y7uxN/h9H7CjiT/vuIJx/T80cw8/uy6r+Avsem/UtXR/8Kflot62W+W6Y9zoKvwQnqv7G0gJnHXpZzJ1kvzbkCv38s3TT7FfxxqjjQHP05+Ps85x3w8ws+M57dkPXLjDf5RWX+8xv73Ip+zk98wA/+8P2l+PtC++qdeRr9dVNfZfi6+t5grx+1tznS6+nnXPONfdIuitanXybPWnadJD0061rsMRJu0H92JN88/vg0//uXclm/PJ3cd/Lrw+Rn/XIzvb7BXyrR5zn8vyP5Jyk3Vf4E5duSa504MIr8b9BTPfauo54fD/wn/Zv560nkPzfxgv6ybpd1vD/4e9bv+hWg5GXYDd6DvzHGm9PoZzp8kf7uFi/GiD9j4Rh+sRD/T7PjLcZX9XMuRvzt7vttc16FnAP59+m+f519a9NPifFuxgsdS/ErPZrdKovjFeHZyl9Mb3WyL4n/nJ+bYxw1ANagj7Xa11vkmwf/IudV6HdjzzH4PFd6pPKPGxf+p/Y/y4/l3zlXWZf9ct4y5ywzX32laN46Ev5IfxvhX/z5RvY9h/99VFrAd4w3Zir/G328mf0RfOyQ/VF016RfQ/dz+ffyt/n69fL8ZR062Rd8SvuYrb1kf/BF6ew/57xPzZxPMW7oDe9Bp53657JrV3ymv6tEvhf5X86rRq8tpIeof6P6r037z/4E+Y4gzwzpVfxvB+lq7J1+Zh3/uJ39O2kXk8Wj8uTvyj5P4avE7/fjL/OFzB8m4jfzh7novQkvyrmdrG9k/GVcVk09D9PfZ/TzIX5PzD6R/Mez/pl9Mun3fHeJuHYXObuWFrA7fs/Qnjbj70DxZTW5WqCT88GH6V9yPvhw8rbG34e+Xy+9L7rHKd9c/VfHP9DLvnz26bM/fyN7vaHdzIOt5S/WP75hvLIPvr/MeTf83ctvT4APFZ0vrUVPOV+a86Zj6fOHtAdx5Bj8V81+Zda9YXV6mEy+KuiNQucm9s95uqwn5bzdipwvk26e/cj02+j1F49OFJdv0s5bSN9AP9nHnC3dqGg8kPFBzntmfLAV+71HT2XgCPqtU1rAJ8XnGeJnQ3I9Lm79zY/3QHfn+C9/y/mjgeywlfSj6D8M26hnEPvtaTy0g/pWGRctRn8v/O4B98z6bNqH9p19/EXiwBbyfaDeh/jBq3Ai/Y+XPhweof2+mfNfOYdMD+lnryBf1mNXiAMXGx/1y/6tuDZcuevE+Rny4y85j/lM5lXoj8m5D/K8wA67+G4FfZfAcnAxf9sef1VhX3E+68dvk7unehZI53zsC35/Meftc44/5/C0pzrqvUl6b/ymP6nn++rkbSfdUPzam35eyDqc+j9W/j30FpC/hvLxm+y/Pyc/++/d+UOFjJPE0Sr0+zJ/fJpcS/jXmbFz9gOVu7LoHM1o5Zcql/MOOd+wRr1L8dNHuS3ZP1T+cuOG7fnxJeS/QH+7rfKHSzfIfkrR+bacd8v5tqHa52/4/gvOwEcT9a4XNyrR6430M5M974ezYTP6mq7f20p6Jr3dr/57+f89sLV5xNbqn8Y+0+FU2AgfW9N7eXptQa+t6WddzkFkf5IcL0tfk/VN39Xifzk/dIF4+yZ8EE5W/gb85txldf3ZOPkN5N/p97vghfTwIv5fyT6FdlJX/bXps5J6N8Ce7PSS8fYkOBGupr/dtY/G/GER+U8m7/H4GILfVuSvmv0t/UnOkR9QdH68mvh6lHqW0Oepyg9Db5H6O6rvKPFlDTp/+X20+porv4Z+WtLPSu3hurTv0gJ+TW878O+cX9yD/qPv2OMZ+o3+arDf19LfyO9Bzw3YYUABSprkfJbv90I358j708e7ymfceX7R+HOj9vE9fF07qCI/65I30f/L8PvII13R9w3Iv5E9nxZfOuDnUO1wIP+oJ9530s+WZh8M/Va+W5j7XZmnkH+28dACmPsaXdQ3z/j8S/3eruSri14zev0Q3cHs/Bj6d/DXS/D9Lblulf8R/1rT+J9yTuE/o8XDUbC9/A8z/mK/nEs+r+h88hT6eyPnYfBxP3++wvgs9726+i77B7l31J5/5t7RGfg/BF/96ect9eb8RHvjgYb4Pip6VF/x+lU58boj/ca/VqFzY+Jq9lfZedX/uH8yVf9bTTucJr01ORoql/tII5Uvg37OC45O/y19Cv30EM+GwJr0/x55duE//8l83DxzBD9YJx40KS3g3OyzpH3Sz2T1ttOeco7qNfw+g9/9lM/632J2WwKXwl34z2s5143eQv6a8x3XFaDka3gH7Mbf52tv70h/JT0i6wP4vh+fh6j/I/Xf5/tu9LI84w7yNKe37OMVn8+vSu+b4fP085b0LfrVj/jVx/DY7J8aj4+H48SRxI8d8b0Uvyf7vWH8G19rpcfRwzPo7+b7TvR5NHq9pe/i3/VzblX6K3JvyvycHoez08/qeyPjFvXOkc766PjSAjbHZwO4NOf08TMY3U/V+x39P05fiZPDpE/23X7i9wx8Hi69r/Lfse+38Bv4o/oy/24E27B/5t+z+P9NWf+Rvot+n8y5TfJknTjrU+mv038PJ2/6727Zn8y+TmkBG+d8mP78d/38dJj7DBm/Ztx6Zc4xqa+TeDCMXB2lT1Z/7JL4MlP/l/PJdeirJr+oK51zmfeKZ08YVzbIOXXlz6OvC+Cl/OPvzHfofQt7rpL/OP5rZD9Q+5wAPyb/n+LqGv7xvvQj6Od+4kz+mfuJua/4if7nV3FotXQn/GRfMPuBxef1+tP7DHwNtq5QQ/6b7FUOP0vZc5vs74tH32Qflj/sJb+Z+N0CVkBnEflzb+hc9V8JP0DvSfyMgXfxjzvZ/116ew9uI/7UQf9u+u+fe/j431l+9oOHJ/5nHIJ+iXjeBT/ZF8w60s/8qXzuadL/V/yxi+9/Qb9R7unS75XKjYd/+O5W+RfjJ+Olcsr3kq6oPeZeRm315r5GFXG8bGkBl9HTXdrNn+w3WZzPOODQjH/YJ/Fte3H2JvQX6S8uwPc3/HdY5lfSy/XTB8HG8SftJ/fYf9Qec3/9N/6Z/e8tiU/4y/3v233fqOj+9wz0BvKLGvABdDqLJ4lvuQ+R+w+nZHzHDjlnlPNFt+I/54zu8F3OF62kpz7o5z2ElbnPpXzOqec8TM7BDBbPfkJ3oPTj+FuW8wH8czk9laWPs/F1CHq/5t5Rzv+SrwU9PMEP00/nfnKzovHhEvJcgp+Lsy+Dz4fRv5y/XQF7waPw85x6sx8/TvoC8e3bnG9T/+rSAraRP9V8ojM9PE/fw/B3CH0ugothL/w15feXwV65p0O/u/HvPcXh+tJZ93qMPo7Fz8nk2h/9z8XbIfhsyT4LfJd7sZ8kHvDXnC+9vui8cM4P5/z5NOOuV/n1rvBP9FaKd6vE8SOk/yM/5zeyzp91/ZzfmKLf+1pcf1n6HfJeWfRuQNaXl0u/TG+z+GNNejuP3MfrL0+g91G5F5Pxr/Y80u8/89ecrz2VPleiu0L7zf2pbvhpq74j8HFD3t8Qv49jn9znuJm/7YneiNzfkL5bfGnB73MvfQo+cz89+0WNcx4t+qLf3ux9Bbwj5xCzbpn7lvjOvaLn8LM850nooR7+LpBfPL4ZpD1lnBN+WuU+yh7/5G9c3tURn1eR842sB+Q+M3qH0/cI+i0jvd73N9HrZfRzkH65ljjeVLoZeiP5xXelBbyDXqqh38z3H+HjCOnsrx0gnl1HP5caX3yX8xfk6ZPzuTD3+xbmXpl2v15/eSu9teCPzeGhsAM6V+X+Dj0MVO8uOf/HLpvgu/RdJfE393XZ8Ve/53zqqXBc7v+w3xb6HareMenvc18PH68XnQ/JeZGM/9eJqy1yPpSdRilfRnxrJ78O+e/IeVf8ZL/yz6x75v0I/AxCb6Hvr8n6Tt5bKS3gDFg562Ps3Tl+hH5F5R9h7zb42488uU9Wq9I/6Vxb5Z90LsTPPvg9Br9zsn+Y92PgffC1rIdk3JT3ktijadoXvWf9vrr878O//uphmPPuuQ9ZQX3j4CviWfYhyypXBh6gnaT/m6q+V9S3Gz96LOtn+puj2b2PdDc4r2g/baH0EvVX0d83EXf6w/b4nyV+tWCXNeRoJ/+ijC9h9im7Zn8r48nSAmaf+vL9/8l/99wLlG5FnqX4vgq979n7N/r4jX7qobendn9qziOp/4Gi88ld/0e8ezfvz6C3m3TeDdsJ3Vb0n/PUOWf9NH/JeetS8eIC8WGoenL+eih5T8RP15z/VD73YXOeaKP++hh0bqOP7dX7Ev+5NPfv9TdLtPtFsA76qxLfit4B2ZB3QMg3T7pTzs3Rwz25r6fcg/hoIT/nyfuL09Wks++efuS+nGdR355pf+i2Ue/Z8hM/y/PLaegdyj/nKddSvBjMn2ZLv5R5m/HsKfS7i/QJ+LqR/g6ADeGh6I9Ju866pn5sLPtW1N53wee20r/7/jbfH218Uyn7RexYE/3Zyg8gR9axd+UPt/Pzo/n3q+x/Ivtkv/rIvOtD39Vyf0M776L+XdlvV/Fg99yXk54ofwS/HgW709tJ6hsibq/RvhvlPTLyLcJ/3p+Yia+8P5H1287kHgsz3j6U3fLuzF/o5f2Zi8IHf2qSd2rQfxe92/I+iPHIeuWmojeW3qqqb1TejzDeOIc8baTr5/xU7tUpd57xTM6XdpS/kt2qsmMr/N1GfxUybo6/5P5m1mPzXoP2kfenKvKb8vgbw/+eyf5D0bnvteSN/fLeX94BvF867wHmvEXF3IdTPucv5vKXueTcVFrAjLs6io8d4OnwXfINLUDJYPg5vNt3N6Gfe+c3SC/L+wd574rea+qnch/5Pnxnf2gW/rvFb8x/co/lZ5j2k/3qntKT0Kmv/hXizVr6Wyl9BPlL6PPI3BuTnotOK36Re5LF9yM/4a8X554S++5LvivUdyTsCc8hX953yXsued9lUvZ3tY/z+d1X0k/Q20v4yjpJ98y38Dco/pT5JH+9iL4yzzla/kniVe4LVCFH3stpgI878Dci59/xPRTenvfZ8n3OMcP30/8Yrx0GD4YL1X+1/ir3bovv4+6W94uUa8jfbibfY/jvJn05+bL++ii7D4JDYc5pZX8946ivpTN+Oj3rpDD+WFP7G5Nzi/KnsccP/HMiO+a+3HD56+WPFM+uzTqy79vQxxVF60VZT1qbezT4PgReqP39Lv/8ApTMhrfBlvg9jT9Vod+20nkfrvj9srb8K+s1eW8z65ZZx8z65Ub+MV8/WF75BhnfyP/D78vY5235ncWHmfh7KONQ9h1rPPctvb1W9L7HPTmnRx/r8Nsy4y3+1rnofGzm/43Zey19PUYPWR9tpT//iN/3FF/K4GdX47Ld4H7s9zZ6xfPCMfSd+42Tc3+HX+5EvwvVf6z6js75Jnqumf0n6Z3hYuOQLzLfF29yL2WpdN43Osj3TeHBMOP6TtId4Rlwbd4x4xd5/yHjkL/g6/x1jbh/fu4P5xyxuJt3dTfC7M8PZ5/p6A0i56P8YwB9T8h5IHraJ+uT+Mv6zG1ZD+UvDeh3iH6+fvZn6K8cuz7ATs/z060SD/DfGt8j8t6E+v+jvzidvL9Lv5X9X/zvrVzm4Zl/t8j6kt8z/xut/iPkZ7+pDbucj35l8mTe8Zj6M//Ywj7l+N8x/O8k9u9DfzfDhfBl+rzWfCjveVwjfTj6XfldVesQp+NjD/wVry9nXflOOIh+P1D+JfbPfdIm8q/Xb+c81E7qyb2t3ON6Vzrx5wf6+pu8N+En5+1Lxacd+G3O4eX83Vf8ozE9xi5ZXx4jXtWB7XNeW/s7Q/9XD3aCmQ9/Qn+fwnvwfyW+K9PHYL/X9N2BWT/LfR5Y/P5W9lOyv/I3OlPx30F/kX6yvXT6y7H09WzWM4vWgxaIn2/DzeJorZyT155a8L+8Z3w4fvKOYVV0J4rve2X9Pef71Jd3RvK+yI/85it+/0Deb0s/zJ9Phv+Gs3M/N/eJch9fe3s7/b3+7GG4Y9F9jYr8I/cRc0/xd/I8Yfy1wLiri3QL5U+ntw4w5wNyXmA1f3mLXebBT/FZDr2L04/xl7PIMzDnQXM+hFyr2X9q3rfOu878/HV22YY9r6fn3PPL+583Z96j3xgAP6f/4cplv+Ea7TTvy3fK+xv4aUbuXdCfwE92Vf4s/pH7FfuLrwfAjrAF/W/KPffsz+a8atYLs3+An6xfHSNdhh6y/tFL/d/jtx7+M15aid4V5DhFfvbd5+d+Evo3pV8gz/fo/wcfG5T7Sn7euc771v344w9Zn6HfA5UvZZ/r8s6K9JdZx8v9ttwPFGfrkCf3yPNeZNYPc3/3Kv4yw++nGIf18/2z0r/Qf1vyDSbX3vw45zSLz2deqr13p6c7pNvk/A66GUc/Jt68RR95X3cleW6l/7yvO55/5n7YPvr5nOv/NPsLpQVcm/t6eX8r58TRzX2x3A9boL+8V/vMe7Z5v3ageFgVnQdy34A+ehWg5EM4GuZ+zFXa/yB4rThTmnuV2sNTuQeU8Sh+jyfvtsYRxeOcb9FZn3tGMOvNWZ/uXbRO/Tj+/62+evzgROmtyd+o6D5X7nm1R7+rdM7VFp+3/UN9+9gXHph33Ml3JL2X8X1L6b/Qz/ugGS/n/fXc735afV8rP6jofO8Ici+Hl2sv2T/qpD3mXvkZ0rlffmDOkam/inry/zjSr7wO5+c8Gn0NKUDJmfAjeCH5G+G3T85d+306+pP5/ytwahBf92RfLudF6Wc//G+r3VUoLeCz+L8U/byH0yP7aOjkfZzLtOeH6eUn6evZpam4lff3b0SvRPl+5LsVPpd9LfnXine9EwfhWnw0Ud8s7f95/r+/+LFSez8k7yHpPyqrJ/dDTlIu90RyP2Sa/nsVtkfAqX4/Unvowj7Zzzk85x+Kzt/cTI+5X3ew8mdo3+sTD3MfPO9CZN9Sf3Gm8tnfnCW/eL69K3/rC5fxw6v437X085zyT+T9DPrPuc3M+y8XH6urfxb9f6neVuyT8ekj5Oqdd53EkTfJtwe7/cpvvxVvy+d8gvFQ5tV9YObb1cSD0RkHyK+a9SXxZVt0v5aekPODRfd9cg+ouvJz6etveBk9Zn6Y+w15D6f4fbxB5Mv48yHpzGeuJvc08Xua+rPPVCb7gdLzcq6Zfjagm3sU4+j/j6L7wjn/kXsf7ZTvnvdetL+zYeYHnflDV+nl+JhPvm1ybwi9MrnXmPNR9FULzqDHvXx3vd+/8ftr0om/xe/j9pF/BX6K7wvk/OAG/r9j/j+NdnaY/uAHdmrHH2uQa5n4sCrvHalvBfzOd3mPK/9XI/9n4xyY8/h5D6Ipfhuiex/95f2Bb81rTpTO+wNN+WtjuD/Muczc6z4F5r537nm/U7QvvLBofzj6j95XGodE/63I+SU8F92rlG+O70Pyf2Ly/3Xofzv6PtTv4+Ab9HG29jOCXsvDSvwp71NNR++WrBso/3Lu4xnHTpbuLX+T+Jb78xul3w599roILoE5n/oIeg/DR+Gx+KhL3zlvkXMYl8g/gPxnaHe9+EX9nE9lt7yvslw8yvnsm9j5VXqaRo68/3S7eNFE/9VKPOjEv84tLWBZdp+t3+qrvuPJk3XyT33/ifQk378IX4AblP9Be8m9rrwPlvfCdmbvuvA49XXJfDHrj/ReN/rP+QT2+pd2cQm9jJe/TPw/TD+Zddys315RgP/O15dLPyv/WnY+jTwHsV/X3E8y7jtWPzdcnM1707lfknNNOe+0L/pfSZ+Ar+xLRo776Wt63jGml77wefUPY9eKWWcsOj9bH+6e90PlP0Tvg2FP7Tv7s5eyx9X0cIn0MOXv43et/kf7b4z/Bfk/JPj7Gv+XyF+m/qVwO/Xl/wvl/9nk/wxlf7cDfbeD7eHuuceGv1+Vv87vuR9+Vc4PZ7xTdP7ifnLlfO9b6L2u/Pf4vz33+6XL4y/3zyanv1HfIbkfrH/PPeCcd0x/XE1+9azP5L5A7meJ99knXCCd/UFqL9E8Sr6BB4kL3/PnxTDn0fJ++ZP8pefW/+TnTPZ5hj7yf+FOo7fcz21uPSvvfv5/74EW3Y9rjeHck7sHv+thb9hCvPoJvY3KZ18958M+yvpd5jG+z/sSG/hL3mmelPve7Bb/aYlu/Cf+tJw9FtHbHPrfKuMn89s9tZvzpBNv8t5zTfz/TK5zc38OX4lL/y2H/2uyfgyL32u4Ef098T0t703w37ty35/fnmS89gp7rmbvvLf3DD10pd+cD8y5wNyLKpP7WdkXzf4xfeb91x45T6Pei/NOpvy9+M8NudeZ8595fyX7zfm/DFkPxG+l3BdXf9ajs/78i/jyL3p7RL2P5nwY//kAroR5t+QX/eo8dCqJx7Nz/gz/99Jva/39KuX3129cQM8Z33yE38n0Uppz20Xn2z8U9w/KPWR6uRr/Xxs/rIGX8YPb8t4Afeb/R+X/+uV9u1v43y7wCvnXy8/6d+eidfD4aTvpt+nhXzlvkXuefn8248/8fwx6uEP/fRvcj50Op5/cl1hK3z3FxZwf3Ul7rA2fzHuOmYfR31/s1wH95+gx9wVzj3Anfpj7hHsX3avPPfvcr98Lbsl4lJ064+8d9PJuylfkz/+PWsnex+T/euFnhvqH8ps57LtaPJup3r55Z5H/PJr9MfXdmXF11kO1z5/oM/f+30V3g/Rp+Hsi9yLUk/eM8v8x67LPA/n/Vtpn3rfIfdrcZ3lV+dyvvVB7qkTO97WXXvibLu6+ym6ZJzfhp5vFu8wnq9HvF+yR92/yPvlycub9m5xPfIr+ci7xQvzm/nfufVcQ53P/+0Lyp986QHxL/7UTfW7MfSByzlA+9xfeZpdN7JT7uyfxp7/T7ulz/9wfwV9N6dG+z/p07HN6/k9o7tFkv7voPc2qReelHlFv/i9Y7sE/h/4M/eMW9b4onfuRa9V7cIN/yhH+BxagpAfcBOfg80P2mcyP50j/zZ6b6Pv03F/gD9vwj7P4Yxnzii/z/xB816K0gO3Qn4Tf3F9uZ158HT9aRj/5f8J57+/MnD8U/ydk/lJ0Xyv3t/I+UU96yfpO7oHk/scG/A1C9y/pvO+c9pn7KGmnaZ9HKZd98uL98Xbi5dfsdyG+JsnPvZXIP8A6zCn0clTu3/GPltJPKT+dP4z8H+9gZF86+9SP0tvcrP+w6zH8uK92tUK55+nvG+1iNL/4LfMov29G9y3lfpLei77yf0vzf0yzfvVM1vOVOz/vaeS+ev5fSfYH9Q+T5H9hPNEx7+T5bqj8u8Sj8fjIO4Z5v7Cs+u/hbwPUNwF/kwrw33Nl7dTXi75yL3oOv5qddYTM99kr5zp3Ue5q9ffKfU5xeg7Mflf2xQbAZvLnRx7ynQ3Pgmvpc5X2Ow4/3+Az/x9gQGkBfxMP7pOuIz/vv+2J/yn0k/ffnuLvA8g5UfvLu0Nz9SuNjfO28M+e/OFK8bU/zHuPed/xvezrk+dd6W/51xb89UevfOK59GXS1+e+MLozpDdoF7Ff7Bn7LdY+FsB18j9CfzvjijPEwaH8sAd+3yb3lew3LefJ8p4Bf6mEn+L3ZX7B/2n4XoLuw/x7OLoj4GR0c/6oovq3hhPMQ/Ne4+qc58w+OvkeV3/uX/z33kXR+/5fo5d32s6Xzvts/wc4mwGxeJx13XnU10P7B/BbUUhCi0p0FyVly5JKKErZVZLsUSqEFpWdUtmKbAkhFGVpo0T2olAPIdIilS3ZpSzpd87v+3o/5/ie89z/vM98Z7u2uWY+M9fMfVODkv//67FHAV9oXMD/wA47FPAkeAj8TH7HqgVsv1sBx+xcwG6NCriyfgFvUr4vvBmeUq2An9cqYLvSAk7cq4Afa/evPQtYD50l+6BrO+1VKWDLhgVsoP826KlYvYDbwc8OKOC0MgV8SvnHy6Jr7wK+vHUBX4G/lC/gEvX/qVjAMvodsm8B98bfQ+R7nvyG9Qp4sHL7bVXAWrsU8OItC/huHe2XK+BI/P2hv8ro7Ud+zcnjz9ICTtH+0zW1i58y5HrFfgUcoP+tahdwS+lx+PuNvCrsXsBW+t1u/wK+WYCS22EX2F7/g9lLrUoFvEG6MfnMxldV+VXgQP0sI6/j0d0WHqv/dtInwOXKHyP/Cfw8RK7XktNe+L8Lf4fAJvAb9vYIfAw/HbS7A/nczL6Xku/t9H23fs6oW8Bh5PeZ8fKDdqqo30P7L0sPJ58L2ftM7deHe8pvWKOAjeBe8Cf8fb5NAVfAlfBn+dXQ+wp5X0KO/dD/GvtqIn9b9SrAFqUFPAyOY7dN2HuZXQt4HP7PMc5b6fdO5f9Ufgr6D9H/TdsWcOsKBRwiXYf8auOnLiyFbULvjgXcDm4DX5ffCT0j+Jn99X8r/W6j36GwFnv9k5x2Y6/ljMvl+r9F/WO096p+XoGb2NVd6t8J74Y7oO9v9jiAHZ1hnHYkv6fYy2j6+Nvvk/TfzXh71e9LtL8z+1lvfJyBv/vlD1a+Lf/ThN/7iR+cQ/6f0N+p5HcWP7ZI+3tJH0peZ+LjHvQd5PcL4fn89SHyH9JuZ7hN3X+3/9ROBRwH5+F3Mfspx/6uV6+89HXaf51fGEUO18Hn2GNvcrgZfXeQ9w74f4OeRpL/6fRaKv8f43ex3xtrd7P8WfzVQ9LF+mvN3o6CLfD3PP7Oqox++plmfIyVP4e9v6reodq/nvyOJrc12lmln5PwO4RdfCd/sHQd+dezx9/wfyU+R2r/HvL6OvO9ek/iryv5VPR77H6x8m3J51ntrsbXGrjJ/N3BvP2y9G5Zf2j/U+WXwNnav2L7AtYnn63Y/0P88db4vhweQb490d+OXY00DqLn6LeRepP5h0XWK43R0Rx99dU/Rb+3wSfIpQd6Hybna6U7a/9U2DfzrP5L+KMycAv4ODtYgO//KH84e/lM+tstCjhduT7SH2Q+Ir+92N9a9vQmO79Mf0eiryn7Ga/+/vT0MH4G0PfW5HshNubDe2APcjlY+9viezi6I58z6eN47U1gjxdIbyD3r0oL+Lv0NfIPw/fX5NJW+kHyq85f3MWPXC99tn7/Zo9r0HktO30B/+OUa0VeZbf7N71vGo+/67ci7Kn/odpbpJ+jpFfJb0ovp9PTq/TzHjk8aH5/AH7NXzdkf12U+1x6sna3Rd/F8h+hx/3opVLWV+aLo/F7t/Q58kebH3c3HsobD9OyfjVuZsKJxt8CdLyr/rTSAk6FvchzN/PJrvBGfHbJ+LYuOYjex2fdyH6a4G8x+pfgc4z6O9LfXOkD2e8+8X/mzx70UA32kj8Kv9uS2/Hk8Lr8N/G7T/y5dGv9ldPfaf+LPu2/bt1xF7yK/J71fTDcvPiMdL4Tsh49Rf9VitanPfF3Gjl0YBej4Tr2dov2duUHzifnq9n3NOXOVe449jGWvzkVfgwvw9/jyl8lXZU8Rqn/ivwK6KnAT7wnPd/66n/ZQWtyuVC5XvB9/b1t/hvD3poaf7PIazC7+0K5IdK95S8jzxbSX9BXD/TvZH6pqd5j7Pd65deT23PkOlF6BvrWkUdddnE3Pd2Bv+XG+/dwHfyLffQpLeAj+O4r3R19H/N7O8FD+b8x8l+Pvvmf8X7P9/Or5FuJ/CfIz/f5geEb/kReS9DfgF/YC97GP87UzkPs62E4V7lf8fcBf7SWXL5QrrL+7zeuvo6/IM9h+p/L/7wF34Yr0Pk2eiby/0/B7uyymXllNb29Sl4j9TfR+Mo64In4E+Ovk/Y6wp3RX52+u5Pr/fT3INxZfhf9TqWfSdq5Wn/r2d/LxsX5pQXci7zOM18dqP5BMOu9+9hrS+kj1Hs2+0v6WcWeDyHvtuR/MHoPItcPfQe01M7v9NkL3WPIux75/WZenGhczpSeoN9x7ODbfM9odxr6ypHPV/oZZf2S74LjyfcH/XUzfn5Wv7t6XdTrJl2W/MeipxK/3gb92X9qpv/v+L2RsDs8z3j73vgbR/6L0POj8VUR/4PhR/IfYM+Hk8df8Vvk34A9/qKfX+FKcvqDvfVRbjH6PyGfXY2vXeAV/O/bxufZ+D6O/zxXOuvzQdrPd+w+MN+vc8j7UngJvAl/J5H3jug5Wbq3+rXMh+vty2zJXuuxh5XkWpZ9bSK/luSwK/2dxU5L5J8LJ7LXjzJeya0L+c7i73fA/8fyx+n/OvrpSl7L6Kee+rvJP0/56ezmXen65N6NP9pTukn2B/T3nnbu1M/l6D28tID3sPOqMOuUBux6BVwO17KnNuTQln1MyDyPvrOVG4H/l8njRu0/K108jzfL/GEcZf9tP3xcSv8fS/+ovUb62SC9Eb0b4GPs47Hs/9Hr7+qNlc78d61677HL+bAjurYg98z312qnhvpbk891cAF7Gqr8OezsG3b4DBwmvxl9toBNYVntt9fubO3+A09X/wD0/ka+08xH7TO/W7d0wvcS4+Rp5Uula8PG1o/l6ed3+t5d+anG/zj2VTb7zvBr80xP9L1s/mlonN6pn5Xoq25dkH3V/uwg+6u3pv9K/6Yn+7ud+csbzKu/stPp7KeB9veC+9FrM+1Xwlc5ep3Gz1ys/jLphfgpq98P1b9Ff29rJ+uZOuRXm/97kV6fUH6B9qbiZ4zvip3l15L/Crp6SG9pPGT9PUL6WukOyt0r3Vh7z6HrvJyL0N9t6BoBa5NnXeXeN35PlG6H/3fpbzL6z9ZvB/L9lvzyXTkRHoTefF82Nj5eYCct2cHJOT/Q/0j9Z9/3U+0fj+4DzDu34/th+Lby2d/6FW7E/wz8lmE/h0s/k/0H7b6Kztdg9rEuM16mk8sl0jl/eZDdL9bvavaU/ZKD8TsIP/WMn93RP5u/qKnfW+EC9XuYn3rCiuTVDt9lyXW69dcnfu+vfvYlj8X/ybA8/n5mPz3JZSw6b1f/AvqvRg8l/E8T9bM/2Y+fzT5lK+0caV5uBVvCP8npS/V+t07dOftb6ncmr83k2z/7t+hryd52QM8q/vxm6XHWC3vSWymsof9h0kPhKeR5TPwzv/Sl8X87OZyu/7PR90ppASdod2S+T+hzLD1vhEPY++P67YCvrvqvo/0tySX7TtmHyv7TJuln8fuh9K3saxF5TNJeefmN1T+RPZwAT4Ld8D+dvo5D72XWtT3pZyy7O17+A9K91H+DfbzL/z1lPtus/EDyakm+X7HvDervpfyn6jeUbq7+tdaTJ5YW8Ll8L+NzWc6PzbPN4QbyqEb++2tvhfo7k19d9liivUPZ93fybyTfe8jjmfh18s18kvkl881S/W9mv0cUff/Hv/UyPrrD0dlH1c7h9NUCHgZv1s7z5Pl59E7O+f66Et/PBJXP+m2E9Lfy+8F5+GlqfFVjtzvDR9Wfx162NG7Ol76VHnujM/NAY+0fG/+s3D/k3o8+LiafIeytGz/8h/5r4PN5fq29dlsaRxvRf7nfT5KuTU6XoH8sOT+jvcvoa3vlJxn/XdHxvnXYR/L7y//IuvwDOJq+a5m3TzIPPYPPXfT3Bn4qW38dTU5fo7su+1un/CHwYvSvVT/fNcXfO6vYy0z1hhuvC8jhCHZ3J/39LD/7xZer/5r0BvRPy/6Sdj/Q3jnk1wP/3dSfAIv3Czvg7zn6/sbvH0nHv8efx78fqv9v+I3K6tVhTxdIf564GvQ00c5h5HcF/VXJuSb/sEH93uzukqx/lTsIv9exh0HoKpvzUvLKuUTOI3JecTj+1pBX9gNa5DtU+iv5h/k9+wofwjboX83urkNn1lf9wj97vYv8V+d7NetWep8mfZH8LfnTbeFc/raU/IbTzyT7HD2th8bTa/YtWtN/T+OzHfls6/dx1jHT6ecd7X+O/0fQ/6t658tfIX99znOU6yZ/EP5X4/tuOCvrb/3d5vfxyk+PfzBud+JnavNPGY/f438d3MDOPkfHVuTWWj8VpLMP+x37aJP1knT2YXfC3y3afUO7deh3GLnfwW7fyj43+huSf104S/vVc/5A/lPgZLiQ/1jCLn5U/zB6er7I/x5Nr/G/8cfvWF+cw35P0N4m/A3zXfe2cXULvJF+9tfPRdq7kzzOwF9V9D6n32nwQ/Iq5d8243uG+fUN9BzMTrMvsMg4baT9O/jvCX4fJT0V/ZsTP0cvsYdF8nNu3hw9c2KPysceY59XyP+N/NvQ69FwEv8yQn7iYxIPU0G6svzq/HpNWANegN+O7LsUX6vJswz7ambei//IOUvOV47NvGfcd6G/O+QPp6+KRd+fdcm3DnpPY1+rjI/o7R/tbZV4A+nn1H+BXJaw+xnSOZ+OX/7vPpX0dvjb2Ti4X/vfkv/70oeyp2Xo/4v9vkK/G9hV4tvG4GNhzsH54xtg/HODrLPQdajyg9ljOfpbbH7pX4CSUvJ+ER9L+aNu+i0Lz0L/xXDPnMdpv6d0L+u10XB45nP0NSTXZ+h9L+lB6JuJnsx3u9PPf7Iepv9n8HdwxjH9zUn8lX7zfdIj62v8346vO5R7h9zuY08N8PM8//Sq+tXUm8NPNcq+Gf0nnmi19IXwk6L4oT7K/ZS4V/19HbtD5wtwXc7bi9b72d/I/ti95ttz2WFX65c/1X/R/L5H4j2Uq4G/F9U/X73Z0uOVy7lv9p+yH5X9p6X8wdb89DLpI5X/ij4+yb6d9LfxL9KryXkN7IPej+IP4YdwCP0dQD4/oLMX+TfN+Tz7GK+frBsbyi+hl/b4+VE7l8rfoP4c+iKeklnyy5h//rSuOZr/6ZT1Kb5zrtJeOucrvdD1u34rS+cc/jb+tQt+z0TPteSzkryqkPd27Lc3fm5iXzWVP1G/3bW/Un+b6O9z6eyvd8HfDOO0ifkj8dDnkt8U9D2g38RXHWn85rup+HvqKvxdCTeS313k2zRxpuSzWHsl+hnNfy1C/wfwHeXb8XPHwF3594Hq/2Le+Qn+DF9D7wv4frK0gBNhvnMrZz/APFcDnqh+I/0uzv6w9Ez2sZ68f8v+NbySfNribzO7aQ7fJ5/a5PFw4nrUuxSeJv9b+pmG71pZH5i3s7/+qPS+6D+RXsqi/7OsX9D/q/z/5Sen6z/xlYm3THxlCX93NrmfAlvrfy3/tV57C6QfVP818jzDOvYsOJz99cu+nP7bstda8icl/jbnRfptkfhK/AyFx/Fvib/4kH5Gkt8A5eolHpb//0W7N9HTQP13N5/fz84uxM9P2Q9GX+4ndFV/d/UPtc55N3EJ8i9F30ztv8kPvAJ7a/9E+kx8/vHSV5HXUnJ5W3uXoufF3APR/nCYOP6r1d8KPR9K98x9gOwvkM/9iRcyrj6VP9S64nFYK+uM7KcbL2vgDuzxEfV743dvdF0ifTv5/aj8ZfTY3P7EW/n+8PsM/vsE/vXofG8Zj8PUqy9/Ajt/Dn/xz1snTgj9g0sL+As5ryLHxN8el/Wu8veid07iV42Hi9lPa+nEsx3MPkrUe9ME9hV7ak9uHTPvwOn6/4u+TkbHcnZwivzH5H+Dr6/ZRxP537Dn0ej6Gr/PJ44JPUeidyQ511A/5+OZVzLPZH75zHqxmvaXSif+vZP1wkLz2Dfw73yP0W/iju6QnsxebjXeO6DvFul5+n9Nuhb6dsn9BOmv9TMEP4fwT13VT7xE4ptnsqfETyw3Hjuyxyb8zCDlr2YvvRLnBnMf5Iei+JDp7Kim/vc2346Cw+jjUPXfIr8+/Pt2sIX81ua7o2D2eUflnNB4qGd8zPM9NFT/b+U8DnZX73T5v5pffzFuD7X++AD/35QWcLJ6tdDRh/wPROfL2fchh4r624Xe9068mXrNs38hfxW8Hx/9lTuM/rrSW31+OPeN3jC/lTc+y7G/ZujYaN04j/xPhj21fwN9VsbnpdLPym+Z+SHft/icLD1av/uSY84f2mZ/k39YCdvRV84nvtP+Su1+yW/8SD6PFsUzJr4x+6sv4j/7ey9JVzQ+O+PrYfrrLf0i/i5hj4/BSuRfG32PWC+8rd1x0jfjbwX/84J2bwni5wDtHgjL0GPir282fnbMfqp6ic+oit+d4TD2n/idVeTaidy2ZUfHJU6Lfl7NfRfpk7V/v/GduNZx5HhEzqMKUNIHfgwnojf3GzfDV4zfrCfmaH+QcfJUvtvoN+u3deipot2V+JuR7xvzxt7a+e89DeP2Bpjv73vQf2RpAVvB+cbvceSf+0aV0DOLnHP/6GD89GIXiWfNPcFp5JU4ugO0n/3yt43XxN1dVhR/15z915celXND9FyJny45P1I+43AOe9yE7rb0e6R2JvAHT8AnYU3yPki9vsZvH/ix+luTU9bV59PXnuitz9/uCb+gp4/yPVaAkhfgcHiD/pvrrylsBrMPs4Y8n2QPA/V/DvnM1d+t/OQtsBv6tie/+N9q5Bf/OzX3a/SXe5S5P5n7gXfzW2OL7gfON/7fgfPgJeSW/a7L4YXozf7XIONjIFzKjk/U/9/ZP4WXa3d25lft7QO35mcORt/t0tkXyT5J/3z/5J6K9Du5X0PendC9id1UpY+c90yxPrk890rYe86Jcr6RfeSz9JfzjQeNv+XstptyHyWehjz2Ip/L9D825xvaf5w8V+deJPntw6/9xs4f1s8QdHSD37OXtTl/TvwVeXyVeJOsl7X/pHafghNhHe3mXHEZv5z5/iL8XcMe2+S+NPrL0O+32jk28UDo+Un5rXKfl37KSb8jfx67LcfvdGZHq+inAnvYFv5h/Zf47MNzrxueQA9z0Zn7iRlnWd/kfmJd+a8aV/FnA3I/JOehsKHxVT7f3+SZe8WV6Cf3i9/EV85Phxr/i8hrZ/PS3+w4cT6fa3+J9nJelXOsjrnPpH5/eii+nzeQfp82zq6WHqr8gdnPTlwuOXyl//ns8x04D5ao34r95/50I/SeLz/3Dlrl+5a8X5JOvFDih0ZJl8v9QvqsYP6ax74no68yuc3+H/PrHOM950e/myfz/X04/reSn/3BBTlPjn/NuwzscLT+c9+lp/wL8h4F/hIPXNXvDbNvGLmgJ/v2c4v28/P9ku+Wv8kl3y9Z7+c74CbfB/keaEvvuSeRexE3o/8F8s69kdwjyf3Lmebv3Ju5Gw7ARxfl94094rc9+vro/zXtJ1468dG/GD/xf/GH8X996P9189aX6LmPPO7L/SD9n6zdk/Vfj9//E527SvdRP+c0uT+a85vcH93T+K3m9/bSuR96AbpvK0DJU7Cn3/dnX1nvzM39IJi4/dboKI7fT/xe4vUSv5d16qvZV9V+7rc9qn4d6R+0Xxy/X0m6b/Z/1Ev80ATj6gd6WQPPUz/vm+ReyxNF75287rtkDD3elPjQxN9pb1SpdqS/wN9S4+GLfJfs9G/+trEeO4Ve8z35Z9bh5LITed/Irsaon/dV+msn76yconzeS8n7KXX41475vuNfvjQ/zJLuRS8L6bel+akP/X6DjvXkdSW8Ama9MFD9HuibD+/N/FKAkp4w75jk/ZJj6SH3/6tm3wT/Ob/dnn3UIK+c536a/RbjdyDsp9zTxnv2GYr3F66hz3fxvVz+g+znXvP9O4kP0X7nxG3S96XkvhM5Z3/9C/LoaH7oAPvw7/O1fyM/+4b6k9D3B/qfSHymfoeSz+PGz77kkXuIJ5DvJO0eZF4/Vf7szE/qV8t6R727pM9lVxflXg9cSG97xo+rVxxPmfvns9GX++eJr+6Onx1ynojf3G9dyb5WwM9hzgGO1H7v7Bdov2/8VdZVuX+R+8AZn8ZXLX6kBkw87nD8LKOPt9j/8tiP+juxnx3hx+p9nHUJv9JP/cHaPzJxzdYJf2lvKnofyLtM5LkvvmqS34f0UZEcPpKuSn4Zp7k/l/t0uT/3q/5/Ve633FdW/iL2Xp+fqcrea2X9j76f6SPfhzvlfJ8+8l2yKnomv+3Ie1tYIfJX/ij+KvEzr+g/8TPfye+g/4nanaj/3F9YYd/hQZj7CwPIo6n2J5cW8P3cnzZet9Z+/H5D/WT/fbB0bXIbkvV24l/gfONxlv7G+D1xmfeZ56rlnSvfd0vQuY90M+1fQd+v089V0jeQT+IPf4ncc2+rKP4w+ym/KZf4w8SnjUdvq9x/k/8Ce15DnhdL555bCb+4CZ/1+aEO2tkt70MoXyvxtvR3Kvkn7mq4eom/mmh9mf3J7Fd+h77vjacH5c/J+WTeSyP3sfJH83cP5PyE/d+l3OP0N4M87iWfyfi/Qb+js7/MPvOeykv8e9b3T7D3avBIfLZI3BJ7vYcd/yydc+K61i0L+MXdpV8ipzHsKXaV8/gZ+K1pvJ6hvwPIdQT5/4c/qIu+hdLxpyeVFjBxA+2lE3/dzLi5k3zKk1fiq7bCb9aVs/ye9eUW+NlsHi2RLpPvA7+XGhe7wRMTX0H/mXfXoSfz72fs9UL8nZL5J+fh9DXC+HpT+irtPGpdN8W6br500+x/63cAvBx+q/4V7OIT9pL7qLl/+iv6mpD3OfxAG/mrtVeeHB6WbkefH+FrEjwu97XUT7xM4mcmSid+pjl/8ov2mknflngz/O6WeAxyeJY9rDfuFxv3a5RL/N1BOf/VfhP8PaH9B423nK9m/zLnq01zTkp+eQ8p/DRiV7lntbd07lcdyz5WqT/cuBic72fjPu9HFK/vH897O7mXa534ZOJ5jJdpiY+Vfld+5s9jjY93+JvcDz5avdwXqBd/g/8LClAyAs6E9fA/hHzfxuduud+gv93j77KuYBB5/+Ng/rUeu2oi3UL+NeSSe+05x8z99tNy39jvQ2Bn+RXRFz/4KByZ82rpvO+xEib+7nX2+EbuYfBvWQesxl/i3hYav7HXAfS5yHfEjvSY+zF5x+KXvBcDcz7cLvFH7KEt+1qc9Qd+c39nM3lkPZd9qrsTz5Bzcv2/p3zOt2bQW/xX3odbDJfBvsr1VX9+3jtAT1v1s78ypehdq7noz73op+APsHHeBzLec896e3iA/MrsvTd6TqO/N/RThn8rgVvAF/V/Pb+Re78j0XsMeZSFe9D3AuN/C/Uvtv7oRO83s5MLlG8i/R7+d/d7BfR1NN5uQ/975JfzwOboGkS+++i/uvze9s0GqH+p9GNZH5PnjdYJQ+ApWbfm/Q/2U6q/c7R/BL9Whd5X5Z0V9D+Jv+vRd4p2Ep+/KOf+5Lw3+8854jD0luUXiu9vt6XvjLOH2cMq6VPwcyp8PeeR6KiE/nH80gPwE/nbwOHkl/ecTku8kvG3OXFVNf6dv0e+e/mFKeSzfe7Hk+8+8OncV1Eu96+qay/7U7l/lf23MxOHhu/sx/XN+TQ+8l5t4qdXWs9cSX+TzeN/5j0/9aK//fQf/eU9pkb0cULmV/n7lRawMbwHPzvIb6C/vCPZL/ev8n6Ldiuyp0G5T8F+K9P/xexiBP2f5PdG9LNN3nnQ/134yT7CefjNPsPzSdPnhbmXCvupt866dw6/Oxf2Qm/5xGMa33ezgyvw1asAJXfCH+Fg891E9GZ/anre6aC/G/mVHtqfSP63JL6TvAbrbwr9l0scrnm5B7ym6L3HX4vuH+Q947yve21pAa+G18DnjJesF47KfWh0bUG+o43L3LOfnv1a+v1JO1Ppq2viRfFzQOIr+O1z6GdE0Xlz5ses43L+XILvQVlv6WeBdMWcq5PrX/RylXJPaX8TvnYpit+bafw/D9flnnzWp+z2jPiF3H9S/zn6OlH6ZP2tkM73Zr5DEx+T79HG/FVn4+pZ47119v/ILXHOI2D2T49lr3nX9HjppuT/Fvp/ZIdzpW9XvjX7LcNuvzUOj8/5Mv0NTHwM/d+W77mi84VhWS+yj69zPzX3fvWT+0FbSo/AzwDjYVf1h2Q/DA6FDdXP91vukc1Bd77jNie+mPzPZC9PkW8D9j2YXHLPb3v2lfumeV9gC34491FzvyZ2m3jP2O+P/Ms8ehmr/S2Ve8LvFXPvWf695Pmdfj8iv3XZJ0Tf9ujPPmqJ+rmfuQ997p04tugp45s8E1//R+6/KvcIf9uJfGbzY8ck/kT/ef+9v3Tefz+E3Ovn+4+8cn/stdICtsg9LenO+n/BPLHGvPGgdN5r+Ql925mfXyPH7RLfr//b0dOYnhLPfDo9zkXfDOPxCPI9iv668g8/s+8f1Fuj/GfqZx5/R/95b/Je64a8R5n3VPJeyWGwRdH7JSOMh3OlB/L/R9FvB3pph/+TpffW/0b01dDftdnnIv+DjZut+J0t0X9Q0Xldm9yny7sueV9APPdgv+9Krq3Ql/eYi+ObKqqfeONH875CUfxxzZy3o6f4vbr4w2Hqx1/GP3YtQMlr8FpYPfcoyLsXee0i3Vf7E3P/n3221d+O2b9lH+3515UZ54mP5/9Wwy/gTPLJfvZw7T4uP/vbh5HHAYkHzPyn/iHGWxN4OFzKPt+Urmp8jmYniesfRL6vS3fMvRvyOcF4z/vBeSdtOXoST3qZ8mtz3ou+vMc+wXdD/s9A/r9A3qfpQe55pybv01RI/Ir2u2Xfr+h+Ue4VJe4g9wfzvtE44zDvHOV9o8b6G6LcPtITlHuR33kp8Vf0vlD7o+r/m//II/xXND7+A8uUFjDn9E/k/2LknUC4IucN6l0Hz4IZX/Pwn3e3fiKH3C/83XhYX3Q+exz+Ez+SuJHEkeS+2Ub0bomuP6RzD6YCe08cX973/z3xu8Z/9JN3ZwbTX3vlH2AHd/KzWa+VkufD0h3Rn/PXafzx3eg+htyyP5H3TnbSTt7dTrz/NHTdiN6nsy+R+zNF94Vzj/jAnJeh+0n2lf2rrA8ny7+NnLPun4L/84z7rnAMf/OY+jnfaa7dnPPkfOc481/s7grjfDb6juDf2/Lv1fL/VxLPx576wpLYmX6zfzgSboClOYfP+/5Zd8Ocf+V96bwrfV/ei0bfo/Q3CY6DSxK/yl+NyX0c9rFe/8fg/yt21Je/SXx7A/SU4Cf3e3P/fH/1BiV+U3qE/jqzj/w/l1lZ37GfxG2+QS9v6i/xm735k370knjOxG8O5nfew8d8mPOVMupvov+W/Ogh+LuFPPe1Pu9Bz6PQP7gAJU+irzk7awrvyv1hdnpV4nBzf9zvA9FZ/P1egXzy/0TOx1df9HfOdy78J++ZkF/x/2VokXNx+S+ZH5uXFvBQuD/7GIrfpsbNLsqfi//Rvovr516+dJXc36CPReaZD+El9L1A+xvJbwO68n2S86pP8Z93Amagb6r8c/1eAo/Sfr5H4+/K4D/fp7nvmvV5mbyfhf4y8kfBoexv/8Rnort/3hEgl9yznsp+p8OH874Efu4ynu6G9+R+TPbbwhZ7agS7scddtVcbtst8lPVovtfIJe91vo7/04yHNfxAF+kx6Mv7LHmPJe+z3Kz+gfSe/+90Ef1/AmcZXzm3HcXOx9Pvdeh9if8Yqt0x8ueyu9wzHsH+6uEv99euKy3gqdKf4nsj+zoCfS3hzMT7aT/n4MXn338Yj3nPNe+7Zn0yCD1HkM9Q6efIeyfyu4Feb9LvEvbxGvpehoeQe039JZ7uXr+/iP7E1z1Bbzm/zHlmzi+XsufnM56084H0l+w272ltIuc9tPc3Peb/ZuVdl7/w18e4aQ27oO907a0x3tckjheWyfkuveddrrV5J1X7J2uvjnQl8uiv/i25T6yfD6TXJj4z51elBVyIrn/w1z3+Jd8nGffyb+a/839EnqfHvOd3tPHYJuNSP3+TU/7fTeLK8/+MEl+edWHe38l7PHl/p6H+94E5j9kv8TvsKf/Ppb761c1fZ6F3Z/RUV38b+VXwVRUuY987oqc5+b2pvynkfw9+PjE/Lso78eS7VvnE2+ScL/E4Od/7X3JNfG3eTboB/cXvJzVk/3vBw82vibduRy/5rpzEvqfK70Re+a7Od3arovXtS9kvyTm8/AfyvgH/fr902fgPfL2S/y/Ef86ltwPRc5X2s1/5M31m/r4w+/XsNfuPn7GnvMeWe9y5v91G/3kX+QTriviv4vOzmYnf097u9Pob/n4tOq/P+0EfspOhRf7wTuvdC/UzU/p5+h3L7+Ud2Lz/Ops+Ei/fJ98r+Z5C/y76zzlVzqP+ez7FH1wAsw7K9+8V+E3cS+5dvSj9AP8X+9s36xz1s/8Tf7eZvoZqZ6hx2xL9Q6R/kV5XWsBHyPU76aHk153d1iefPWFv/E8hj7cSp4iuO/L9HvszbppJ5z31r9jrl5lX4NXo/y7v75oncs6TdxLz/+Tyvu4f5oG8r9uDPaxQfxn8FL1V+IUj0NcK/oO+s+htR+kr2UPi93M/L/fyvod/6ucq9GSfNu9qZH/2Lf7iEvpdia+s/1eyr4Hs6lL6z/tIZ9Fbp/hj/f2e9wGsF/+Ej+b9Hv3lfkJt/c7IO17ae4lf+4lcmlqfDSCH7HPmvsN47eX/7zTQ33p2fF/ep9N/vr+XF90Dzvf3f/d/0ZX937dyXqS/nE/lvCrnUw/lfqz05dmXzn6O8bNRuia+PqHfweh/Hs5Ff84HbkTfS7lvK90I/zlvWQuf5f/q4b+M8ZT4rKfgi0X7K0fhr4Hxln2W3uSW90mGGS/Hqp/3fYvfB8/7vonnm6DcAumX2cNiv1fnvz/OeMPvtfSx2L7fI+ylUuL19XcAvXzM//xAPguNrz/g+zmfUf9S2D/xHvjP/w/7Dd/V8f2j8TIx92b2+Dc9N5H7eu01kd+Bfk42Ts5D76nsJ+875V2njdl/Uf59v6+lz3z/hp7Wft+an8r/kSpfWsCZ1jU14UvxT8bdjPzfnKL3p7qyt/z/wPw/wfz/wNC1feJh8ZPzpTbSW8jPvYn8/4/oc511c/Qdeb6q/4baO41/X6H+DPXy/x4f4W9nJX7P+usvOFX72adcYb24HGa9tb32Eld/Tu6fSCe+vq7xdkPiknJOxv4f098Z+f8q6uV98KXsLffHq6D7Qpj1TL7Tir/PatL3xsR1wLO0fx++Eyd2p3Tiw2YbbzNgQ+Xyf5Nyn2A9v5E4sCNy3xY9edc9/3cy77vXYP+LEkcMZyVeMfdijLPjpBPPfzU7/Vg7OVeqkvs72Z/IfW/joSv68+5G4tISp5b4tPH0OZW/fQZ9WZ9mPZd1Xpei9V4/9t0aXY/jK/9fufg+S3H8ybq8v5D4vrxbQ785n/3G+Mz5bM5r9zRvdJUeY/74A/3r2Ne94Sf3PPU3Pn4h77pIP6DcJfjLfb3c3zsafbfSS5v4PXxW1V9H4+l7frmu8XoDPVTFf+4dVJbO/vS40gLmfnJP6dxP/ln6HnY/Fw6i7xr6bZX9QvS8hP68h5j3EfNe4h/ar8M+mvLDu+SdRfV3JJ/Ea7+r3/u0l3tuD7GPN5Vfmvu1/GnWaYdJZ702hb3V9/u90mfCT/mX3J8+U7v3wcwvmVdyLzzzSyf22Jn/25F+OqJ3nnSXon207J81Rfd7yvXiXzbkHjH7GMAuXs65J/kNzH1Cfu5Wfm4DfAsmDrwGjH+9Bv+5l1R8Xyn7EdmfyD347E98r/9PlU88Uc7Pcz7QFh4Ncz6Q+LHxpQVMHNm92l/ILz6QexvSByc+pej7KevdfD9lPZH5cBJ5Zn3xf2sUBxt4nHXdd/jX0/8/8HdLyQyljHobqYSGlWSlREIaVkRTGQ2zEioZISERQlllFSmJVEQhOyqlNAgZHyQr8ruu3+t2/16X13V5/3O/zvs8zzmPdR5nPc55td6+5P//3V2pgGdUKWCnegUcuXcBL92vgF3rFvDN/QtYfpcCbgEvP6CAGxoWcGO1As5V37g9C1incQEf2a2AZ1Uv4Nlwd+2cq/z2tQr4ac0Cnqn+b8sX8IQKBXxSuqXyW5Ur4NtlC9hbuoX8G7Yu4NodCvgxOm/Dxwr0tt6rgB3J4Xb8f1i5gH3IcSr5jW9QwEW740v5mnBP7XywVQFHaP996Qvlf6ze7bZTv/R09P2xTQEfr1jA36Xvw18N9XyK7p61C3gL+veoWsAy5NINVqSfd+W/rPw70r9LX1iAkrHwJTh33wJW3qeAH9Yp4IPaXY7+UvTuBhfQR1n5PdG/WHtv0fO98j8hj8ipM/l3aFTAs9jXXfQxQD374G8muk4hlwN9N1L+lfhZB8/z/eu+O2VH7cNSemyg/OH0uXDLAj4i3YN+LsB3b9gLlkNnI+lx+LprpwJeWx8f5PMgeexJ3iPQt1q7K+HncEvl961RwHpwP1hZ/jnsqjMcCNehrwp97QC/QF877R+qf9y+RQG70P8l9FOd3C/U3vfkuwV+qvIrn+1awGrSDbWffpd++Dz7SP9rxq/9LX8ceZWT31v7B9PHN9rdxL903baAr6jnD3x2o9/Z+vfx7Gxr/qu7/L6+r6/d19VXqp0Z2o9dNkVHdXLaSF8L2M3D7KwPOe3LH7ZKWr27k+/v8r+BLfTfr+U/z7+drd2uOxfwWfKpTG77o38r6Tbk05C9f0/v27PTZ3x/Fv6ewd8geBj57EuuL7OPWbAUP5cZf85TX2PYWfmm/GlbfMwk/7eUP4O8T4Pl2W9bcuqnvu3I42ztjVH/K2UKeBXsAlsqfy65vq+efuh5Gp/7+n8z6QP0z/ukryT3o313pva3L6In9B1e79/0bYHPY/Wfu6XX0t/y0gLO0m/mk9NR6htqXF2Nj7VwG+1cSX9L0z/Z8+va352+9oSn8Pvfs4+/0b8Zv43J7V3l99Te5ey9J3rKyj9U/6qh//+U+YPvP8LvNdo9mHxP0f7V0vf6fkydf9f/g3rP0S++4v8akM9J+lsbOIn9XEc+C9U7AV8DtHeN+pvQ7yByvML3W6JvW/XMlP+g/zfV/ul7FHAs+v6h11L5NeTvCvcoLeDh2h2L3nvhbtp/A/bRf/sbZ/6nH3fBz8f0trfvd8BfGfxt4A/i14r93Zf6dxd+uWwQH6exy9Njn+ysBf6ms4+P+Ndp0jPpe0v0H4y+/empnfK7k0spO6wpfb3yf5ovfoHOqvgZju/t2MeD8Gd0N8X/Xfhdwe89SM5/KL+DftEanZXM434lnx/ZdzV2N0f6ce2MJ9ducK3x4DH5U/ibY6S/oreXpWtrvw7cG3bT/iDtDoZH6l/D4n/p+0p6eZtdlar/c/JeBefQ71r6GM+ux5D3vMyv5d9ML7Pl3yz/fPkj6eM2uAM9LfLdsPhz/58rXZ78H2A398N9yKsuOfVnT/VhbViefo/VHyqipy35TZceRC91zUMGSmc+Nk26Ib31Ul9V8rudvOaywyHSDcjjWHKtpX/WhFXxf5H8U83bL5Q+C30Xstu58k8lh/3k30IetelhnPQl/NA6+v/CvGA5ui+X/xT+KqO7e6V/0/+C8fIGeBnsoX+OLC3gn+Tehv/flfzXy78LvYvlX6r9a/W/D7W7mnx3VH4s+2sbfbHftvKvp7dNynXOepj+yuH7OPL7wTpyOPpHs8sh+v9N6NgRfW2Vv6sAJZ+ifxl8Cj3zyLWxfjdG+VHy92bP3+Mn8mhLv834je0yDvj+at/XoI/7lOvY+N/8ha8q8BD8VrD+vg9d5aRro+8Ydj0w8xPtfKD+ufQ6Cz6IzkH8SSXj2pX8f2Xpx7T3g3nvaH6zr/79I/u/Fp1Lzfs24+d6fJ7LLp+hl+HovUH+//DzIzyfvDfip676GqC3NPNX/E8nr2+zTkXPDeTwOr9aRvkP9b//sa/q+ttI9nCqfljb98v542Xxy+jro/3T8N0Rpn/EPlb6/4HaXSH9BXoXZX6B3kfRs1r5ZeS9NOsg/eN79N/j+wbs8ADYSv692n1Vu2OlryfH+vh5n51eqR90Iv/Z6FxRtJ7I+uER4+qP+l9T8t8R/TvJb8JPHMV/36ydUfg5Cx0nqeco9f/Mfuryqy2VPx797civI/10xt/n5NmAPibGrrPfEvvRLxr5bj/6vwR9G0sL+DB7WKidqeTziX5xkfwrjA9L1X8deoZF7jByftz3x9NvK3g4/taSz4/42VN+LfK9RvnW2n+CH/1F/sW+b6b8Gv3vk6zv9Y8jMj/gHxbJn6L+hfRwGT3dhf8X2VVL5b4mx2b01x6/fxhfm7DXSuTzWtG4uxvsj54dtD8Z1mcHjfA3ij2ejd69/L915kf8ygp0rZBeyJ4HGl8rKL+H8kei/x/yWYvvcfhZrP4/2cuXyi+ALyq/q3aW0mcP9D6sfI/sN9Ffd+lS5Sux97vkP8ePvi3/PPZXS7vD1HsdXEn/O2n/Efpv5/tbzAdGa/dOuJV2V6h/L/V9k/1p+t+V3j/UD6tLdyKvOwtQMh2eCZvQb0P2fS08BDZF7xv8f012tkD6Y/KYxj92w1dn/udxcn+FfkZqr7P/V8bP38aPk5Vrg49P2EE99rEPeU1A1/Psdy5/Ow7fr0p3Uv829D0EvRPRMU16PGysvseyDyo9RfsXqK9F9n2l19DTx/ATOCPrC/5uNfoGwmvoZ3b2FcmvDP2egv8jtJ/98gfpPfsH65UbQG9P8PcvZJ+hACWHk+tr/G3mX8v1/x/MN4br/38of6n+ukq5pug6HDYjrwfI5T5yWYrOudm/8v+XyD/z01b4Px5ubb6zkvwvYx8/w5fln81erjIeTCbn2Nl56F+l3HO+Hw/v9V3Gj8v1u4wfGU/eJZ/a5PIweQzB/4/4H4Xeh+APcCZ9jvP9U9n3Ip9/lD9D/unRu/K/0Mv90qP5w4XSH7D3j9DZATZDb2X+vgI9zCCnbch/BHmeb9zK+qwv+U2u8O/6BpJLE+1/pN5K+BpKro9nfcJfD4F1fbdU/UfQ+2H6QzPpcfKznruNHrPOy7qvuv5xo+9Hqv/H7A/gd4L+c5x59gL0vSI9G86B1+DzYvXPUt8s+nmI/magd3d8v4iuH3x/i/pOhifBheicx36H0uMt0k3VNyv7tvr14fHT+O1t/LgHvg9vxO9w9rUKP3f6/1zlO6D/UPQslJ5KPuvxU16/+JN/O1L+fPkr4XHsZxT6Z5BfV/J6jz1Pl/4cf9P1w1/Q2VH92XfOPvTZRfvPzYxL5cntCOkt8XlwaQHPU++W+s/Nyl9QgJK34PnZZ0ffWPT2VX4SeZ6p/GHsf0t2VoEct6D/1r7fSr0N5A/Q/yqzh52NCxvYQc6PbzDfqKb89dJHKB+/tAP+i/3TMPUPhWfg/0n1f0qeddG/t3Q9/DdSb0NYl143RL/69XTymWdcuZh8JqmvM5wNT8w5MnsaBe+AOR+bTL5Z/2Q9lPXPpexrmfYOVm9D/N3Dvubap3hD/9kR/ftbF5WD68mzjfqHsPv+8jOvr0a/n6HvV+3fpv012m9D7pPp5Rn4Anndxe9NUE+jrGPU/wt9n4f+GfzALPL51rh+DPwOnpz+ofwqcsi5Zc7/niSP7Ke2Ye+f4v8k6ezH/pb9G/k5H+xStE+b9U3OB7Ov+0rR+maM70/nPxaT95H0PJ8/OcI41YfeDsV/D/rP+UnON75T/1X0lnnHado5wfdHk2sLWBefXelvNXv8HFbPOYHy68l7jv7R0TxpI/o/1P97xf/S9/PxH9qdoF/cxP829f+f2MWf6P9B+UXkPzz7t/rhT+xrOflMRd+26jkQ9tb+aOPpAnKeKt1E/Sv4o8e08730JnRkvM/4vx19ZPyfSG4TyWOS9DXoq6SenGc/T1510PeW+cxI/fIw3z0hfy19ZB75pPnw4JxP4atEu5vVcyM7WUc+H8HB7LMSvoayn6VZJ0sfTZ8drId2ZjcdpW+U3lv/6wT7w6H42I2eDzP+9UDXWeR/I32OgNuys8rkdrjyscfY6W/S7Xx3etYD5Hsp+qrKn5R5XcZn5Qer72p4Jbxeue/My2bC49nPi/j7nX+5g55uT7yOdp6GK8n7R/bzKfsZR14T6XUSf/Es/a40vz5bugp5rFbf5fJL4W3o7qf+S/mD2eh9nR5yPtkQPcPkN1fvMvLbTB/X84v94VE5nyhAyUews/yb9aeexuPzYQ84gvwPxO9v6Jqp33yV/R/9fibMeJzxd7F2nsPP0tICvsS+elofPGre1Mr3V+PvJHKvph9tQs818rdkD1vD4v2SxJ9VKIpDS/xZ4tcSt/ZlUfxaX/r5W/sb2dMGdjMP/W3QXZPcx+O3O/0cgp65+tFm9LdSfhS93AbfyPqBPQ0w/tysnvbk+yB+j6CPcdJPSg9kd4NgS/w0R389/qQ2/vaGc2LP5JVzipxLTKWvtr7bDT2D1Hub9hfi9yH2lHnUOPqfyr6nKJ99hz7yx4QudO/BDpfm/DbzdeVW8y/fSh+E3tr6zXp0H4O+nfB/AbtaQe/D0JN5fTn4vP6xRLuz/b9eaQFHmG89Kv9Q9PTQ/vb68VmJf9LuW+ZVPaVHoW8zfscqN5wcnlR+D/ZynnZHoWdd4leMJ+dkXw6uzDk/vX6h/mOk52a/ybx8d+3knLAT+/5Gfzg689Hszyf+A7296OtefG6Fvp/NB75FT84HE19ZQ/8/FLblv+9WvnPi0uj7NP7npMRv0P+DcCJ7/sN43Ri/12Rc1v8PlV5IH+ei+yn2ch36EqdzTubd5FOGPGopd1X8Gfqflr4JvYOl+5kHPCWdeMvEYf5MvonHzH5D9h+yHzGQ/CPPyPco9hj5juBfbiHfW+HuiYvhny7Wj39lBweqdwF57kK+Q2DOc9aS50n4eLT8v8t/j9+fYdYTD/MjVdnHs+R0S9H+xc3s73l6mQrHkd8g/b0F+n9C/2LyeNr4PpmeWvI395FfKXlerL6tM+/hnxqRz2v8wsHS56r/HfXdS+9j4VD2+p12H8o5D0wcRuI3Ev+QeVLmRzP49cb8y07ay/5eR3LcAx8f59wK7qh/tje+7CD9Av5PIZ/d4H6wOv670cdz5DyAnnL+uoR9fYDeWuhfovwb5Nkl8UDorKr9O/Hfgb6fUr4bfdzHnk5kX/fD7B9tg//P8dtTuZra72Xds0i91fSv5vIHk+8Z+Ogg/ZB630PfBehb7P/X6l/74ms2Ox5ODtkf/lu6OrouUT76qaw/VoJ30FNz5Z6m7wu18zT72VL+BvS9qb3TYLWsL7U3GP3ZL8/++Fzjxa385KvSLZR/kP67GncekH5Jvfujdwr5lrCfe9DxG31XVN9v7KF94rsyvpD/dPxmnbwi54PGydelB+D/DP396tICtmWnF6NnFvvppt0m7OfdnG+x53PRu4t05nfxZ1OUWy1dlj5W4/cLfCTu7ib4AXs6MP0Ff+kfm+hvKnqLz/fe5G9f5Yd/zXwN/b9l3JHug8/E36e/LienJ/mvk31/Jrkv5KfSD2L/Z+LvdNhM/sOJ3yTvH9W7LPG5+N3H/KI27FeAkjrSjyYeD44tLeBhyr+cuAH6foHffAx/a8lvA/se77vEj38pf0LivX2X+PH+7LeC9rY1H1hKrocZ76uS307wWPk5b0y/z3nkA+p/nP6/YD//43/6o6O/ecpcdlFtx3/Xuz89PKD+N9lJhbRvXJpXil84Wf25h5D53yn6Y+Z/i+KX2f+j5HUA/bZX36Ccd/ITK/8jne+e0n9Gkuc5sCs+q+R8Ff/D2N/myIH82inXHn5JnrugO/smDcl3EhyN/hPJJ/Oc1tJvk2fOh080L2mnv9UktxP4ve8yn1HuH/Rnf/lO2ET/yD2M7Edln+qJov2q/vpnd/1oO/LL+fBg+j8o98EyD5B/M3/cO+v6ovXJKHw11L/O0063jE/KrSo6Px6rvRHsoUri9dDXP/FDiTeOP6SPpfQ337zsBHRMzH5fxivzud/o9Qb2MFH+D+qdoN2z0ZP4jBvV9wQ+Ti8t4LfKX87PHEgeB5H7ofG/GV+1n/jEGb7/PPFwvvua/i5DV+7L7Y2/d8jvYu0sx19H9b/F32R9l/lc5ncvFM3v/sq9AXqtxL88jb/h+sUL+ndn6cRfzmc/O8h/Vv+vrf766D4A/smuDim6D/F/9zf0h9yP+A292dcq3u96Sn7mK5m/tFK++L5G7nHcgI5j0dUCtoQ5B/lM/z1Dv+2ln/6G3lb8Sit6OB7uTr/1lUtc26fqS3xbHfSd5vv9so9I/t313/PhTlnHKP8n/1iP3O7ih17KPSTyyv2bSln3ks9B7LtNaQEbqL+z9o/z/2P9/2T9LfszVxWda44rOt98Al0b+YVG7Lc1u+nOn91E3uvpL+v/v9G3Hzo2S/fF/4noOTn3Mo2fa9S3vAAlY2DOR29F/zP+f0jOu6Wra38v85Jd9NM9pfvhL/dqJvk+920Wk291fqMG3Bk+o9wR+tPl6HqNvmri7139cUjm9+xjoPqbm9f/Sd8z2eNM9LxNLrl3NzXnoeq5gb/Jec4w6b+k71D+enq7AVZU/jVyaYLup9ExPOsX9O0Du6DvEfmN9N+3YOLRMk99P+MjOn6F/cnnm9ICPsW+noSbIqcClLwBz4dL5ZdlP+/CMrAv+e5P37+w0wbS32i/P7luQ6+XGQ9eYX+/oPd/6Hw98e/03Ve5Xr7rJ/0POW7JH1WE67R7GPvtYr3SFX5LD2Xl36Wf7cneHuVvbs/+Tu6tpb/IvyL3b6WXaLdr7mnR33nGnZf9vx851VTfqex7nvzEAdxPviP15wuNQx+QT+5V5V557pnPh7lffpzyuXf+ZPbR5Y9kP73Z7WDlZ2c/nb33Yp+96bdG7nPqz1Uzn8n4Tj61fdeLfEq0u45891RvrdzjpaeW2s/5bs51c847VPmjyT/6ib7mSJ+Q+BT0fU7fdbP/LZ3z5Zw35/7c5pzbazf7D03Udyx5NIcf4Pt95afozwfl3ha+OmtvH+19hN6fMk9S/jN6qZV7kdKvyW/JHzxOTi2k18d/sLfTEjeRe8Tkt1j6i9xrQNfv8gfQyzL1Xin9Ff+T++e53zuUfWX9W5P8FqO/Pn8wI/HR5mM7w2pwifpH6z9Ltf8AOscmPl57y+EQ433uGX9oPrwefe+qP/Pj4vveD8rPfuTy/7CvnZS/Vn+8PvNP6UHy5xivd8m9Uvzk/uKJ7L1d0fpqFvlUwU/b0gK+qR9XYycb9d/co6iGjl3obyB636OHd8jvDvmN2HP2Iy9iD9vm/nrR/Ghn6cyTcv6z0rxtctF50Hzp+9nNfbnvrb7qiRPC7+HkfUf6a1F8deLIEj/2ovGoXvxc0fz4QONNH+Vz3yD3Cw40rjyCnnns8xz635ee1ki/jJ/31H8wvR4E38HfnfF3Gbey/1cUv/ymcb0yPivBNeTXhj308v+cX8UfLcr4QS7faf8M+R/iJ/2uuD++LZ3zvZz35Xzvavxuot/b2Xf2NzZr/x/4Czqmk89E7R6buBb6ep38qxg/cl9gfe71qr+u77dJXAr/d5X87fWfv9hlf+1eAsfxvz+TY+7RZH3RAt1t+O/G7D/xvpkvXk2ui6W/Rm95dE3C5/P84dq8R6LeETlHlt4q9qF/91auV/xp7rfgt7fPh0k/p93d2ddkcqvt//9TfpX+lHi7nIuMkJ6Hn5/4yfZF8aF7saN17GITe8n9mHo5T0PXx/j5gHyir4f/4/5JzhNzztit6LzxDnSNVW572AQ92c/O/vYJ7Cn72z3o5R/fny9d4vtntDcZToF/5n41vZVJfCL7zv3/6PtH/WNX2EG/6cKeusGuReu54nitxHE10f5tyH0NdoWl5DO3tICnZ94jvRZ9NY1nu8Ld4GbyGENeGc8yzl0gHXlFjt2L5FlFv1vHjuIH0v+vQlfi207HX/zrZvo9ghzfz/1L/P0s/Qu8jr47JH5efUej+8/cC879J/5/NJxBv3XQ3y73ixPfnPuuOdfF73dwPcz93FcTT6PdhujZBf/F5xU5x8j8o2zuRfBjb0hHH1sbV7ZO3Lvv5mv/Xe3mfvw4+sz9+OdyH59+NsC96KUTuZSzL1EWPgZ75f5D3tMpGg+v4F9GSs82n9gd/c3kZ9+2hXYfYO+/lxbwJvX+If1izk/1p7L8yp/Sua98APre0/4CmPPTvG+1WnvL1J/7Ya3pq1XRveVTff9I9jcSJ0cfH6H3sazP6TVxA3m/KfH4ic/fB72Jzz+df9w547D0/Iy/iV+AC3KfQX2v8P+JN6ubfV75W5D/MamPHa6Srs3uZ+DjTfxtge7cv76MvI6y/n6cfrrzJyXmueVy3yzji/nqUnS+Lj0/76+ws0fh/KLz4oty/q6dPdF5DvmtYd9/575tzgHxl/uS17Gf1dLfZf5gXF9Fz7dr5+6cjxf5jztg/Met/MXZ6PiZPK/JPiq7yb7Rifxj9o+WsqO8m5J3VBKfeID+NFN910nfTR8PlxbwKfZRi71/mPNn/OUcKu9jva988Xwv8V15H+4bcpmA/vXSe+SdhKK40Svg3JzXR57k8h6sk/U0f5b48EvIcRN6BrCbNfz/usTLsq/n8p4QPhIvtFj+AP1lee7/+O5A/C0kzxH+PxhdeV+ohL3dQW6vwHn8yxr2Gv9ZHq6mj63w8we5NFZf3ol6iN/IOe0pyiUO+iH9JffqB5UWMPftD5FOnO/T6kn8w2ryn5d7DvrTGPmZzz+qX+c8M/P7GuTfhDyG8DPz2Nea3ItHx1n8173yt+dP3s87Qej5NfcIjXdboWeJdDP621p/yTlx8flw4imyL7SePhNfsRf/l/nVZbGTnJ8rt6/0rfHPyn+O7hnscYj6cs7aFH9l0PVV4pESj4G+/fmf/eBR6n0Uv5X5rTX47Iiu3MvL/b/c18s9vfbkPZG+VtHHmfi5omi/9dLcD0T/q+hZSK9fkt8r+C9Rf5+cu7LDjLcZTzO+fir9cJF+8h5m3sk8QbqP8Sr37z5ib7l/t8k435P9HoT/D8ijBfs9GF8tpWdppzn5Lsu9Z/Kdhs+xOY/G145F5+fd8y4hffSQHi3/dfo+SDtz5C+i3ykwcUHfajfxQe3Mx9rC0+Dzvnsy/ivnRHBv9S5EV/Z1+pD37fg4Br8H+b659Jfkeyx/2hweDzeQXw/2fT7sCS/DT3394fnEFWt3L/XXZD/N2dkIdP5fPAR+LmIHx+V8Tv7XJdqDw+FL5JL4xfSDDjD2f0nuk+kvPdF7V+5XK5/3PjaTU94/uQQ9i9nHJ/ArfBxOHpvobQ39zyaHivgbxY8vhJ3xVz37s9odZRzcEv3l0H+y749nF8+hdz65ddJPGpkfz+cH3ipFL1wH++Nv16y39P+T6Gmo+h/L+1Ps/B/2833eeyG/A9B3P/oSf78l/vK+Yt5bzPuKNXy/nfrK5d2/xKeh5+7cu6H338m/ZwFKZsDYSdbHvXKek/cstJf9+b3Rn/PsnHPnfl/eU/zSOJ73FvO+YivjRd4Dm6z+v/Cf88md6TPnlDmfzL73sdov3v8eip/t2QV2Sg6SH3lH/tPzHqH8vNs1J++kSef9rkb837P6TWPpv3L/N/u1sA/+/5Zf/N5p1bzPmvMf9v4ife0tPZe+y6J/I/t/Vrlp5POCfrU0cZ3s59OctymX95uPTjym/CsTz4/uDuorm36O723ovUPikJS/nd1eh/7Kub9WdL9hK+3nfkPmN0vI4zr1Jb75E/xVLNr3zXt7t+Q8Uj+ugI47M++F4/mby+l1gnTWoS8ZNy9A/5PyW+337/KJ85tAXonvO0y/uyzvXyf+VPtt8PdE+rt6j2IfTch7Gjpeyb3jxOeVos+4fU/urSZ+mT/7gH8rgZXkX554ZPOB+tI/4ucr+u2Gj23Zd+KQHjJfHwzP9P+r8g6G+qqoP+dHg/GV9wHzLuDZ7LNp3h9B9rXwPPh/99PR17m0gOfAbjlvNv78YBxJ/Nj2eZ+B/HM/qSG6cz/paf32e/bxA2xPPtuzi8e0d6z6Jqj/YvbRG05S/xOJ8ySPMfzjPfCc3N8j91XwhMx76bkCe68Icw8v9+/ak+/GondKp2f/iV3tjI9z8Jv3oSok/l29jRJ3CW/WnxM3kDiwxH8NYJeXFN3/Oy3vy5UWsDy7ejfnIuq7Cd/t6PlU+J12Jhp/Xyavx6XzDlvex34n9xrYXd7vHoD+3A86jl11kt8RvRfmvjg7ejPvP/C/k7JeLFo/3Zn7nXA0bITev+j/cnLeJD0r9w+Nn9XgE/rFz9m/Nq+4hf8bQi6J5+3LHifhrz768r5H7kXvB/eHk7Wziny+VF/uNd+vvtr6696Zh7HzZ7WzTL8eAEvooab2lxtvvyKPirlfhf957CL3VZ5hD4lPmcO/X6L6CfBj87FFpQXsrp4x9HkWOVUlt1LYGJ6h/bzr34Pf6AkzH7oF391zfzjze/zdxt+2pPfjYO6H/MUvnkE+e9D/azm/JI8D6THvf3yi/CGxb34j71/lPaysV6dlX4v8sn79Ivahv5TXXuw9cf3PsoPi+P4r8q5V9puK4huWsacT0HE8XIG/TurNujFxXVk/PoeenzKfNn7m/d/t8PMQ/FD/nxA/Sb7fwNz3yv2uF8lloXnLIHZTL/ZdWsCR6r0994nY9wnsrxe72lf6H/Zck77H2/d7mXxuy3ka/WUf5Bz630ieL7GfV4zjieuuQz5b6P+H8Otd6fF88sn9oSuL9oVzf+hK/L4HB8Bp6K+r/ub4+EU7Y8hnE7n8nXNp+s098K7SL+b8CF4h/43ci4HzYfb98/sL++LrdPZyLv578h9537yKckehryO+58C8J3eR/DPw+yr656kn73MXx3MNSvwQ/TRgd1Pp/yT+4k30Xp15c+at+uc0+hktf+u8dyK9CH95j+4JOA/mfKV4P/5idOV989e09xi729P49yj55/5OraL+nv49UP5L0utyPwf9LfmPBdptLf+lovOFvkXnDDlfuFv9eac99NfIeKVffk8/v6Evcd45v28G1+nPX+R+mnpzH7J4/ZD1bs6Hsx7O+jf3g8eTW+4Jz1R+Af57omcDPssU7R8mbvPSov3EFepdlfkwXPEf7xfk3YJVuS/o/yeq9wlyujXnI/rtgfzIu/6f90tyDzbrj6xHsv6Iv8o8M34r88sX9Z8Z8Av5XdBX/L5Ofick8WInyH8Ijst998S/5vdFyD33i3I/aYxxfTy9T4CL1J/7p7mXUHxf4Ujf5d3EptmPw/9GfD2KnoHSJ5Ljzlmvq28BecYe4hfzjkL8Yt5PKK//vqzeA2DG9+747QF7wqrqSbxz1+yDajf321rqX7/ir0F+D8J3Nyb+1/+3TVwe/Ctxb3mHVz2f5z4a+/o87+KhL+9PTCst4JDELUq/Gv2qd0dyzL7wNJjz7neki88X9td+B/Y1AB1D0Jl7AFW1l3dRBqvvJXI7Rb8dAvPu1I/k81neF8g7OIk3Lvr9mZUw7/VkfjSBHQ8omi/lvbpmMPem835dfq+nqvryez75/Z7i+1C5J5X1bR/j3eLED6Hjevbxq3Tu6f+ZfXj1l8l+pPqao6dW4r/jD+Wvlf4l9x/05wb0MkU6978mF6DkDlifH+uu39yQOC39fFc4K/v2idshtzZZj5LHf527tmY/WU+N9f8pyie+LvEaeS+/Djn1y3kXu5hhHpB3eSapf7z+/BAcyn6OVF9+X2Q3fO+UOIHMb8htRtaP+DjXdw3MHxvDvfSDzJdWmO8+ABvn/Iv8fiOf3+Fz1jNvy897DnnfYZr84dovW7S/W/z7OTeyl/j7FeT9WebX+k8/49hv9Dsw91zJP+v5vLOe84WGeR+e3TdKvCp6u9Dna8r3Vt886SbaOxQ2hS/Sz7XsP/sCxfsFt2n3d+1uMv70084L5u0b4CTjcBV8bGe+fwU/VEU6+6/n0ufVRfflcj+uDLlfTu5XwNb4/5S/KZf7efKzj57fZbsfngu38f1Z7CXxZYk3S3xZ3ut7Gr4Jo9/72c94eB/M73zkHePEnQ1mL4k/a11awBv1s5LEZ9PfX+zxbnzeG/+q/cQF5N72Epj727PzPlfehYff5vxB/rbZN4XLE/9IHl/nnWD4mfxhxv0t4HX5PSr1f8O+1uC/HbnkfmHiBq9SLnGDw/ifTsbnqfQ1IPvn2u9atN4qft+2Dv+zDzwu6x303Mtff8o+75O+VX419tg89kv+VdGX9ycSL5l3KPL+xEL8JY78mbzTJ3+O/jgXHuD/R6p/DXsZkHin+BffFd9P7lZ0T3ks+vMO5hz0/5F5nPlMR/41866DtNM29ub/9c03T5L/APrep+eX0ZX7F+cVoGQavA9mf7uV9u9khy3zfnje7dHfRhW9n9sy77DR14fRY5E/uD3zi8Q1F82Pcj8h9xLyPlXuJ+R9nawj8r5Ofh8h7389lXl7fh9H+cv4zytg4qC/yXsh5Jb33OZnv0r92xhXK8OT6ft38ss7yOnXeR854/nNRe+v3lv0/upE7eU9qdHoye/P5Pc6a8H8nmfeI19C3q+R/zzYiv19Zryoof5K9Jf3wRvor53U36u0gLk/l3OnWuidid4Xcv6d+Dx+qaL5xDvsc636v4RfwMyH8j5ae/J9p+i9tMzfM2//mtwzfz9e++8YR96G+X2GxH3vBjuzr8SFH6Tdxdo5WPpr9OX3p1bwM3dGT/QzjH9sjq6r2FWN3DMz3ub3VV+H+X3Vncy7LoWXwK/xf4Dx52/l7ki8m/ZuQe+bxq234XLlX8VnlfzOlfyXc76LjosSF+v/A/E/SXs38U+555rz4PxOwm3s+i7fHRZ+6bM3uR2a9shvkPqW60dbSW+D/uL7krlHeTb5ViKfxDHkPCznYBvxO0+/3B4mPjq/79c07z+gq0vmP+S7Lu//qC+/PzWIXMfjqzf9d1B+CfkshTkH2K/+v8unXJd6/y6f+5Cr8l6D/GeK7keNQVcj9SWuP+fi+9Bv8fn4ucpvwOfovHOo/H3mc3k3exn55v3sdfJ3RN/XWd9lfcQfVWEX68wnc//nE+1OzO+foX8Tvjv5/3T6f4+edqO/Svp13kH9PO+zGc835P4zzPvNr6sv853u6luccwjy+UG5n2Dui+Qd4Onkvpm8zpC+WfmK+vMIfuoS9r0L+Szij9qj+1X62FV+3q++JfE1MO9Xn5L7IvkdPPL/lfwaoju/y9JIOr/Psh159KXXv9CXc/ZPEh+p/EP4zvp6i6J73cdl/YT/5vLXl0rT3x/yt0j8jX69l3nil/RxB/pGwzth3jlaEnvMPIAfGomOvEeY9wmPUH/eJ6xD38/6/kQ4Rf5N8vP7Qnl/PPuPZ/FvA8n7Xvo6kXwTD7Yw7WX8lr8yv1f8H/dbypP7Abkvgp6Pyb9czgtz3036bfQmXiRxJD2L4knye0aJUyyOT/yLvyzPfhPnmfjOvOf4LLoXZd4Y+dHrHuYhZckn7z3OzHs2ML9vmviB1nm/M3HP7OkE+hydc0x6WYD+V+lnuPIvlBZwFv3fpNyD9NNC+b9yHqD93/mrfjDvAOf3t/NOZN6R3CNxWelf+mvOC7+R3zfvH6BvPf6+g43o/QhyO5NfOCv3X9A7ruh3QfM7ofl90Lyvknt5U6VzPy/z9nJF8/kl6DsCX3nv4m7lsv+7Dv9N6OM89tkZnzewt+vhxTnP197/A5+68wt4nHXdedTW0/o/8AgN5kpJ0Y0mEhUVQpHokGg2H5QGMqcyHUNESkiahCIiZAqhwqmoUKlkSkIlSsYQ4bfW7369z1rutb7PP++1n/3Ze1/TvvZ07X1vVbnM///rXLGIW0vftH8R/6hTxG0bFnFTffkHFXFj7SKef4D8ekU8SP7W5Yq4ZucinnJgEas0KWL56kUcs3cRfy5CmXL+30H5U+DJ8N/7FXGC9tqid2pd3zcqYnf1rYC3wTrou0f5dY2L+KjyNdB39y5FHAHHwMba74LOzrArnIfPDjsUcWKDInaUPpK8VpDn/uR7pvaXon/RHkV8Qb3vqWec8kN8/4n0a/Iv0X6PmkXsq57N+xSxOvpX0O8V6nlKuyPwX3NH/2cX1bYvYg3llxehzKcQO2X+xs8o7e1atogXwi/I/3ztXun7Deh+HR2Ha6c3/s5ib4cp34VddcF3E+nH6HMJgmpLP6K9L6U7oud98q0ivZf6hrLLIfB2+KL2W5LLL/rP59sW8WftbioUsdduRfxj3yJuxt/OlYr4Nbp3kT4N3ydXKeJH+L911yLuQ15vst9t0bOKPqup/33yXwYPgQfi72jtPQm/2qmIV+tP5+HjS+lWsRf0dNH+Rum9yfd98r12zyKWV34J+X2O/pXVivgv7bTExyT4KL3MJI9J7HmC9ibXKOJjsKX8X9HVTX/rCn+Am+VfKN1Te4/Q417svwq9rSe3NehZxU77a++E3fEBm6f/4asmfTzFft+QPrWq9pSbSx7L6Gea73vgt6r6LlK+K3orku8u5Yu4knxvZD+H6cdL6HkYfheh/114qXb2xP/15HQcftrL79f4n3yfWMJ/Jd99q39sh96F0k3Vf636P0Zvs4w3vm9QKOLP9LAJHqv+dvrDibA3+21MHmvRsw5epv+9z55uVt897GcE3A5/fcntQnie/78Av1bPdOle9LVIuqH+8E348/0p8t/ib2ZtXcT19LI84xd6qir/sv5UTXoH4+Fw/uMDeKDyLdjrrrWKWAnG3+6Lr7vZ0enK38D+2rPPFeR3svRv8qdo/2n4OKwlfwO7KsOuFyj/LvqGkNdj7GukcgvYxzD20IK+jyW/1+U/qF8+SE5j4La+O1//vkT5ndj/HfifoP7HtLub/vWC/C3Gu+rG/fH4G6j9r+h3ne9/VU8z+p2LjqnssY/2bvN9G/31OHiY9maj4zRyOh1erb2V0o8Uiri39s4lj2syvkkv4Hfnw7XKv8LuMi7vWjI+n8reaoR+9S2R/4zvP1PPndKN8B15XO/7eewv8rmdPI7jB9aSywD5D0kPYx9/4H+M9M/s53ffvQ8vxF9d3x+l/V/RdQj9faDdh9C5N3qe0/6+7HUf+LHy9/r+EPL5UXtDtTdV+QXk9pj8E7U3R/v16Pl+9nmE9j9UvkmFIl6/VRE7sI/D9dfRZfALX9deB+V/ou9d+YFN0tHvs+aFvfnFGvRbQT0/F4r4vXLVpFvjf5Lyw/YqYkf8xR4jz4vxdyL9RL7fKb8Rfg/bk8/Jvu9G3/O2K+Kp0sOlz+L/DyaXzuqvzx9cod79pSeh52j9uRVsCRfjo5bx4RflGqlnHvlU5Ncqw+3hKvmj2Mfp5Dpa+ij0VzZfvItdjZa+F31f0vdj/PIC6QfI54hCESfST1v9oZn2K21TxPdhH+PvWPo/i73+Tp/f4rss+dXWn7cl51HSu6D/CP0i88P6/H3mh1ez713Z/xj2cAr6r+A3foFnlv1n+x3wV007LfB3pfqnkVtj9E+U3x9/89nlf+lvgfRC5d+gz2+Nb2OUm6P9yzNvgJfCr9jlsezuANhefz2fPA6AF2hvOfm+Tx4foetafN4Cp+Fnqvxn4AD2NUW9Q41vQ2DG84zf65U7h/2Nw+9byj/Ar3SF18FL6XcP9FSHNdUzAB992dNw+utAf5VhW/YwMfMV8utB/zONexPkb8ZHd/m34+dp7dzuu2fopw39D8Tvb+xrrfy/0XkLfkaxj4rybyCfw8njeump2n9af+0LL4Y7a3duEco8DM+AH6rvSv7jEN93p7/m6p9iPFwGn4Cn6TfPhf+sw2Hj7BegZyX+x4cf9X9OHut93wUOJ48rlXtDer3vV0rfgY5HyO1Q3z8f/fALd/puO/Y/W/lFxp0V+L5WP94u4wu9HmN+1RpupLfe6u+ovSbKjZbuzl8fq57st9yIzhrscABcyE6XorcNfmfq91uhuxr72EN7LfXfg9D1iP7bDT8D6LeD9AVZP2r3FThT+9lfGKU/ZHzOeF1Pew+rrxw72tb/X6XHysodaPy+U71L8dOJfXzOLlbByeppYLzJPttV0nOtG8ei+8T0a3YwCF07kt8bJfYU+3lT/17FP7al3/vJdxA+riSvCvGP0i2NdyMzT848gvw38Oc3wA/kz5afdduOyh+Lz6zj3vX/hfB1mPX6dOn34Esw65Ub2NuHxtdDyK8VOQyX7q5cDziMvdyG3wPIcYp6P0p/9P0G2M36pYryN/AXV2edXtAu/rawmxvUt1n6DvmN2V8TeCM9l2M/w40HXeBQ2Ff+JvL9Of5Jf/0J/6/xB6Oty+dKb9b/PpSeTi8N2cdJ9NiZfDfC1b7bXfnL2eF0dr6RHSxG33r1v6X9ddKPs69D1dOfHX4oXSH7D9IDsl+S/TXlB5mX3Qg7stcT4h/xsU3mW/TQTv29fT9E/+jPj1VCT3f62ArO4T/Kqb8O/uvCpuyiPv2OZR/n08cafvhW+R9q9w92ugVmfbUTu5thXn0c+f8LfXXMB27hJ/fkv46PfSl/B/kMg9PR/yG/NZv97cw/vYmPcejI+mppyfqqEr3ej7774AblL6SvBeop5/+DlV+O/uyTHlgo4qX0lX3zC+CFWaeo73j2MRB912mvC/4eZZej1TsGHkZetXxfkTwfVN996t8gfyfpxezpCu1lf/Ua+I569kd/O/LdM/uI5LtRfaep78/M18kn5zMrjS812dfJ7Kef/Inou0S519D/l/pnK/ckv9OsUMTss6xhH5/D1fr/1uh/1Xe10NeM/pdLN/b9r3AtP3FViT+MnzzUfDT+cgq6HofN2UFBf9mHva5gZ1PQ+RH6pukPlfXj7vzLo+QxyPc3x1/Hj5NfXfa6E/rfQX9H/P2LfMvRd3367aR8f/Rl/Pwg++/SN9J35rWl890J5Bt7LKe9WfjbrF+upvcy/OuV6PmpoB7//0H/zz7+TuRZUTtD2EMT9PUkl8fxW0P7N6c8fe2N78Pocbb89ux7svqnae8Z+bHn19Qfe++v/1+qfCWY9fwi5bbmd3em1x7GuQL6Z5HnDDgT9kFvv/hduC/97Kj9uvRXG/bKflHmJ9r/jt//L+xK/sPR2Vz9P6m/rvxx7Kore5/s/0+jvx2/0R5eQH/7yl9qPH8fLoP7qOc3/G6GB+O7v/yp/OVT8Em4NbqnGe+eg2XNO1/IeQd5n+j/e/vubvlj6a0vO7mE/kdkva1fl+WPzsDfVvgrY7zrBqeax71E/s0LRTxH/U3ZX1N6yvlMDXxXgZ+zv11yHuL7naUXomeTdsfR/+NwMvoOx99n+tcp+JtPnzmfaaW9gfpPW/Jvxn/Xpd/J6rlQuS7sYyR6ukm3wP/V5D0QXZPo4fTso6a/k/c4csr6aIXyP/J7U9V/pvz2/l8j824Y+7pZvytLL+tgZ3KrZ/5yEbru096f9PA8uxzNDlrAQvaX9Jf25Ndduerkf4j+96x+N126Dn2uY89fwdHkMUH5foUizlX/McodJ/8930+PffJjl6CvtfTj2W+m31boHIfv49U7vmT/fJj6M2+5Qzr7UlXx/x39zc24qnyd7IdkHqz+7xInwL7WqPcu6WvR+zR7vUr7XfnXS9WzXP8Zgv+z/f8r8joo+/3+f0/OZXw/i75rsZMdMr9H7770lX2ArPsPyH5QzpHVezH5Znwvx/9UhFWMz9sr9wg7nMZuL2Lfg8j3XfqZ5P/nw6vof2jWY3AYHJz5pfGyLT+wmnxznpDxpY/vW6M/40uHxLfIn6bcMvh2oYiT1fsOPf2i3tr43RvuA++On8PfK/j9Rns3qn+x+trye0+yk9FZ3/AjM8mzdH/uZPpfLb8CuhbRT2f2mf6V/pb+dQS9/Gmedaj0+JxPkdcj6Hlb/Xtpf5J5XQV8bkd/27CjG9CbOJUF+F+tfFfl3mQ/LdCV+dnR+Hqbfh5Rz1HyL5Segr7R6J3q+4nkuyf+h9Bj5le7sc/qOdeUbuH7pfh7CZ1fw8+1exr5f6a9b8jniPR/6RX4KJ0/jsp+D3zKOPI3e+lLf58VoczlcJlxKvPhBbAM7Gcf4ib0DUPHO+jug/8z8FtXv/pANfWkLzFeVYUXwub4e4G9pD+nn7+s/jaJS+DnuheKuMX31xmfnuGnlmU9kfWRcflf2p0pnf3x3/F7kfXHuTD743vT9x5Zt0gfTA4v8LeHa2+L+ltk/oG+Ar3vCZfLr87/7AF3h0+zxx6+n5tzWukvlW9csq9UvWR/6R7+uox11PXZh9OPdmAHPfD3uvb/Un6M/bB19H+1dBf6u7tQxMQddaWvofRzj/pb6keb2OP0kvVb1m03lqzfst/yEf53ZY/Zf5nC77ypvU3S70g3Ru8n6D/T/Hpw7K+kv6YfT0j/Qv+98Ff0/+K7b4wbW8H18B7tV4c76b/ZvxiHn1PYU331tVP//vh/Qr9+Mv0b/q2+lvRdlZ9cKt0dv1X04/HwFXJrpf5b2dNd8H796A5y/05/OFt+4tmasr/st0xi91nnnqT+qexzJHqfTpxLxg92eSQ8Ch5GHoeQR1PYDJ6t/fGJ1yTPyPcA9T+c9TusR367k8PD5LYJv2O0O5593K5/19IvalqfTM18iV3EnmPf57Kf64xLGQdK/f+cxJ1m/cN+vsPf2/rlYu0fBb9GX847c/6Zeef1yg/V3l/61d8l++vPmu/Ph6frD4epr2fW5yXnK/W0fz96PyoU8UPlHsL/Q+g/1nej6X8ZOe/Cb5xJbmfAJ+jnJfaQ/esXYfav5/LfWcdm/ToBf31Lxp+sXx+UX9f/O9NzDf2kGvprZ56FnhHoXsS+TtE/1vCzh6n3TPkDyet/+xvkmP2NiYl3kl86P98bn/uqtxb/d7j8i+mzL/zdeHNu9g/I40p+79fsByg/JfVl3xN/q5UvsIcX4Tx28iz7fRDd07I+Jo/sl52PnsHsv7f0Peq/MfEb7Pbe9C/5ffXXC+Bf6r9Qv/+EP9qcfWry3IG+biOX2+EQWDnxWextNTucrT+PIoez0bOkDHrgeb7vQg43oedw7R+N/39r72h6faNk/B9nvKyt/IPSiZdLPFXiq27i3xJfdYD6m8Em8C3151zwYph46JwPDqOX/WB54+dj6J3IP20mh378z7Hk8xi9nKDcnvhvI/+PrOvhJPY/lb19g85D8XcD/qZLL+GfdySPrdT7KP1N0F7Gq4xnzye+TXt/sa/3S8bH9fxHy4zn0j2UX4yvhXA1P7NCfQX+o4r69pPemX5akeufiaPQ/3bL/QX++0D8Zh2Z9eNX7HEdvBudf2qvPnl9nngW7cxSfhr9jfP/4/i577XXB18/keN9vvtBfgPf70cPkxJXk/MtfuEacv1AejE/mrj7LfSyTjrx9zeRzyL5K9BzFT7L8w+VpX/Az9PoOAddidedSZ4VyHEEv9CQ/2tKTonv7qf+J+BDxqnBvutl3rpK+n79s4zy5dC1nj2UoY9G5Jf9nv/t/8jP/k9B+tuSePbDct6l2m7aXZXzFf6nZ+Zj+K8g3Ux6Ev92TcrBEdofTm+dlEt8aXf0P8beX2a3ncjzz+y/0scp6Ns5cZDoH89vTJa/Vvpk7b+IzuxPVTEeZfyry7/Uh5m/PZD1PHn1JN/EBfbK/jX51vf9l76fof6V6GmbeynonJv1qH7xXMk5VM6frmAvA8m5C3scmPhW843TyOVF35+n/ifl535J7pvkfsnx6HqQ//ySf68aP0of25NjT/kbpT/KeQW+y5HDJPT9rj8uNz5UUz77Ef9CX1/0r0T/t+ovo98sT5yu73ZO/Ix2X8XP7vhroP0x5FhN/3obvbfznwukd5c/1vdDc38C/zfCG+BQ9G+Hr/PY763oqit/vvnLAniSfhD7XoCfowvoxf+h+Dnf98vJ7Vbjx3PZd5KezB/mHPI26fOUO4UeSuNXtucXW6Pv3/j5Un7i9aOP+ez9fvx9Yrw+FN0d2Xt59PdSbx94ILrrKP8D+ddU/xz6y35Ezu9ybleWnjK/vY7+eyfeIftd5Fsnfsw4k3jUgb4fZDwor9/dIr1E+3uSRzf989SsF7T7ne9roOs89fyR/Vt2e2fiNtn7htzPIpf98bcMv+vJvX3Ow0rus+X+2qzoh7wv4R/eyf2/9EvpxJ+8Jf1KoYinqfcE5TuQzxfkmfjMxGs+QT73J34I36Xr5dL4rrLqT5zXEHb6Ifx34lizTs56Ur97QPoZdCxCf/zyF/pTM/VXQt/UkrjLy3K+w97+zv0G9p3zpfPo/3j9pA08UvsP6J/j4cOwcu73kffbibtWLvtnd5o3bE/ed0tfrv2cs84h1+3Qt0n9zcmzku/KsLPlmX+xr/S3X8hhD/V/RZ6D+Yeb4Uz2lHjQxIk2kk68aO5DVsg+R6GIt6B3E/u/jB2/Ib8Rep6np/OyH83e3paeR34VElcOz1B+K3S9ga7X4Qx6bS+/re9PoL8e5NOTPLZRrpd0A3Ttwb82Yn9z2EOL3Ktk11/AVvzfjvRRGt9ZsVDExHl2s9491rz2C+lOibNO/Cs5lMYzlPbH9NPETycu4VZ2+ajxIXEKia/K/C7xVZnfTUZXU5h7CP/JfFh7T0mn/6Q/VU88CHlV8v+x9Psqev6Ln+ONo+fI/9K859bcRzTe/C7/M9+/hr7D0fMleq5ld6fyb3/h73byqZb4Av1miPbWa2+WcWMG3INeJiU+Wv/pDwfCR+V3yr1y6XrK5/zlDXK5TXud0Jfz/97m0xfAl/HzLP/Vi/xqss8+0ok3GuP7sblXlvg+7WxDbn9o/3n6naj+e9H7A/teQz7HkPNd2Q9NHKb/T6bnboUibo2eB/XLVxLfov774HiY+VoXdtEZdoKZr21B797GnxVV/snPZnrtmf116Uba76C9nyJ39vWU8oPxdzX9VfX/3L+rLP8i+S+gq3fub+l3P8Nn9cd9tdeC/VZInAZcn/gK/rAre84+8Afay/7NEnTlvlz2b5bzfznfOBkd26NvdOKusq+qfNkm/+S/jvw8EBD+e0l3xHd/9GSfcUbWH+S6DXyZfbRFzxh+dSx8U37uX+ykH+X+Re5j1NYvOvr/1chsgr/jcp8OPTXwt5X8I5TPffDTfDdX/p7Zl4fPJ84AfU2NDwvZ5RnmgyMy/ufeGf9dwM+5/PhE4+M840PicFqT7+vk11q5HfJ+Arm3QP/h8DB4N/0dTH/D1ftL5nXqf61QxKPi/7S3NPsH6jsa1uQ/sh/VlTxvzXxMvR/Hf/NHn8Pvc5+K/LbTX5ux+xdyT7vk/vm7JffQc/+8Z8n6ojo/kHXGjuz/x6xfzd875XyjUMQa/MOcvAsgP/encl8q96fiv9qTy1zyOEn6N/Usoffcv2id+7n010+7NyYuM+eZuY9cch44Un7Of/KexQnoKl0fvEm+q+LvjRPN6Tfz9RHovYZ8cr51UvYT1P9A7k+S7/b854/Su/j+J+nX6e1n6RnGx03SQ4tQphl6j0Dn7uSb/bnf9P/sz2Xdvyf5xA9urX9syf4DvzDNOLcLfEX5TcaPv/nlP+Hu7PQh9OW+3o3ShyQejF1czW9VJcdLyS/xQ5crnziixA+1Vn4mfffNuST6D6HvhuS/G/ta7rsf9b/nyasrua6THiw/9ykaoO8N7a+x3roMHVdK3+r7E/CV87+W9Jf7j7P57//Cd/m/5+QfTF+HsvsN+sPLDf/J10fspnL8WPbnEy+C37dz31b+RYl3pfeLpbP/9ij7fCTzGPYU+Y4tFHE4O0m83RXkVB495WAF+L1+8wD5XpX5IDmOId+8V5L3SwbrXy2Uf9O4kndQ8v7JEfL/U4QyrdQ/Wbqn+j/j7zIPn81/zsp6X/7O+n079v2c/lK2UMRt6KksfJe+x7CHs+DL8Bj1f5r4d/a9UrpS7nfgq738yiX3Gy/XXsa3jHcZ3x5mF9vhv6zyvdlXY+0dBBvB9IOaxr9a2s899CvYx7nyZ/u+j3ZXsc8/2EX8yEj0xH9s0D9u0a+30j9GZZxll+NyPzFx0fjvhv+B/OoncAflz8p5RvZ/8NcP/9X0h7f5sRFwB+3dxZ7+KsiX3gX9+7G/+nknRPlr0Fl6/pZztyW5j2a9m/O6nOctk789u5+ivkXSuc/7C/lkfyP7HdnfqMevTCTnK/nTaco3Yd+5l5V7WrmflfOS3IvPuW7s6WLtx58kzmc35c/Nvo7vjySHh9h34pZ+/j/ilz4kv3eVby59aOLzya1J7k+j93Tfd+av7mB3V7H/V7U/Pfvvid9KPGniE/mz/QtF3CDdPuMU+e3NP1wi/SI51GNf/2EXB/Ojsbc69J3zsdfy/oT6d+ePmpHbbtIzcv6o3bxf1Zq95/2q7A+sVn/W++0yvrOXellPkEfvvBeiP51Gfq39P+u/9cajnIM8IP2FftyKfpblvIu95J5nNeVGksv50rn/O9T8szm73QH9TbJ+zXtDvn9He59m/5Q8htNLC/0g76p8nHMB+Werv2L8Mz21N+4cSJ83ku9HuV+r/cT/ZT++Av02LRSxhv5+DvovMB58o/71cJvE/5PHPjD3VGPfT7P3vNuQOPk+9Pt87tVGHr5bpf6TtPcRutfi5xn5X2R9TW5r896b9hvwh1O12zDzD+3lXO10mHO1Keqvzp89RM8PJw6GPO/S344yj1uk/Lc5jyeXd+jpY+W3wcddhSImDjJxj38knpf9FLRXer77NXt+ip6e0t4t5Psq+rrl3TLp2urbi/yzTzuGHz1N+2vJfx38Cr4m/35y248fu0+6nfoST/xp/IT0wPhD9vIJeeUeW+6v7S/9a6GIfeAM+qxKnpXQtSvM/KV/1ve+HyA9LO/5SD+m3sOl8z7KYvUvQPcS6d/Qn/3qutqtA7N/XY+/yvz6r7y3lPNn/vE2fq6Oft5G/pvoWqjcHOl91Zd41X2Uq8heE5/flPya5V0LuA07W4j+2ezoR7if9mryq4mffz/3HLK/gt/x6M28bo38T0rmLTfzT3k/Yg18WHs/5r4B/R3J/11GTpfD2uQ/ooBOfFTSX56MP0HP8erP+ead6BtiXJoDE88f//oqf5J3Lkrft6hU95/0LKOX1eRxMvrHwdynOiv7n8a/e7Wf+12577Wt8TZxzLlHnvjl6/md7+Gr2Q8O/ex2BjwUH0clXozc8k7Y53lvDB+35NwbDoYf5b0x9C7GV8+S/enp7PNE7X9Lfy/jb3/+4oDEfRjPb835c4ndjJXeLD/v8+yQ9wGk897FZO3mfb/m0nnfr1HGS/1mMzlcg+5B9PJ85r/GoV7Zv0f3FbBfzoOyzmdvE8j7IHp8ir/bVn/Kuxx/Fv5Jf+I1T9dPErfZMe/X8fv94R3qeQF9iV9bQ6+JX0s8W239pY1x4ViY/cQC/9we/hf938tP/M9x9J44oMT/PMoeH4Ejc18h+yOJ14aJhxwmf3/6+hJfj0pn/3tQ3jPLfWjyyvsOZ5oXDFH/iRnnyO9idvGW8gfS10Lp74pQpg+8yTg3CNZnz3n/8wv2lPiwHvrbI/BReA39lpHekvjDvIeE/hXoP993PWHOmXvlXljia8i5vfzM32bDUTDztyt8n7irk3JfRv4piaslpyPq/TM/993T338l/9x/z/3o3Isuj+/cj34FPQPhOfA+8hyA/wH6XUfynqGe2OVJ8GP96Ul0N2OXL/BbNaW36J95t3EILH2/8QT13ZX9Ze0krnuocbcBnMdvVMn9Rel74UiY9cxP/M5L7LpD4qgyP+PvdmRXd+Mj9xpvQ89889r3tFtZ/RPN5wfDxK22813p+2eZr2R+cgr+H8p4Jv1E4tT5jzsT78PuGmh/A/rXwsfhMfrfDuxjPvvYLvvoeb+VP18He8K+6D496xL2cWbiALR/Lfqeyvt3MPF1U9hD5mvt8n5Uyuf9PfpvRU55vzLvjX1iXvV0yftjw/w/99w/zPu4yk/2fc5X78+6Qf7zef8p8frozf2ivHd1A7ryXlbOl/7MfQb2dUCJ//xafSv5lRUw99XHoq83u/mFnQ3NO070lXcrm9Nj3hU/O+/xKJ94vcTnnSU/cXk59018Xkdy/w9+hvt+VO7HsoevM89D7/fyf0HXnrl3aZ50Xc7X6Tfx+pl3zcP/6+YjM+Gp+B/g+7wnlnfGOpa8NzbRudVDcELJfYdT2WPedZ5Fn2fIb4mf3HPJ/ZYjcz5Lzjdq72398wb85Tw+5/Oz8ZvzrZeN163QdR38HX/ZL8j+QQX5uT/4HX0slb+C/irLv4f9vqnfV5VugN6/sp62PvxWe1+hL++K3QNHwLwztg+5zCWnT+m3C/rf0//OJecx/OWO5PsK/m/QL+6QXpE4UeXb5Z0M+n0Rn3kHKOeWuW+c88uf6Sf7wuXVU933K/GzyPjxqfRw9F1jfMj97dznzv3tW9n1NgX0s4/b8t5wyfuCOdfI+4J5dz7vzeedpbyvVD/v65Pr2CKUuV0670Z/nvmicSbvR0/R/p/oXwp/1/6d7LGgvQHouCf3+/ivrFcak8e1eR8m63V4GTwTPbXo9Sz21RZ2pd+8H1jqRxO/29Z4nXdatrCP+aHP//vl3CfzDfLOeW3iO/M7BTm/zft2FZSbo72GOR9GZ+a/ncgr8SAvks/N+tFq84dj8k5E1rvKb6tfNNb+7uwucXSl8XPnkF9+T+Rs6UHSeTci5xuds5+T+Ex2soyd7iJdE19HSh8BW+ScnH10y/vR9FRBubNyv8B8cVbeRYWZ5zdVfgO6upH/QYmPMR63Ie8xJe+PNCWvr9GTe0K75X1S8t6Evon0N5+8+9Frb3Z3iXQT/aONcr/k/jE7zO+1LMw7MLkPQv95H7E7fu+E03Nf1/eL9ced0P2e9JTcr1V/4unm5Hxd+cG5LxB9KXdf7hfnfXv8LTQ/T3zwuOwnJp6EPSZ+YjS7GQNHwWsSn288+5W8Liih/2DjcTX6/TTvYSVukj0fRS/jyf/4vMdlXDrIuJR4yP3wn/nb67mnUDJ/O4F9vIXfNrl/kPNt/J+cuBb5DbR/EfvpA3OfLvfndsr7AuzjNv7nRPofQJ77pD9oJ++XX1iEMgPhPJh3yFfxl1uRe34nIr8PkfjtxGs/L514/CPpowXMezJ5P2Zb8quv/9fL/Y7cHy85f34c5v5jdfa0FG4w/8i8aQy9PIOeldL/Tvxozkcyj5VuSc838Hu5l9uWHnI/dwH5Jl7kG9+NSbxcxnfYE75NH4nv7FMS57mEffbH14Dwqf068m+m/6mJe4a/saPX2PducJ7xIO+ZPe77KfBe/bkzu7wk7+LA3Af+jX3lXcm8J5n3Jk/Ifho5JB5kGnnVzP3QIvwvju8b6cTv7Un+NeFe8F8l5605f33B+JPz10H5XYucB0gnHuxn65GzrVPeg7l/1ZK8p6i3IXkvUd/J5JT70OeRe+QzWH+5A94CB+V9Gv4054s5bzwr+y/qy3nlFHRdrfwf6E0ce96zzTu2Oa/ZV/ljyP+1xHexq4XqvVz5bdWf990H03Peec/77g3zvlmhiHmXoh1+rkbHpfzHkfrXJdJ14LHmpZeyg6vYzRL6Shzne/m9kry/xd7yzm/mv3nHKPOtbdhJ5mPN+IMd/b8N3AFmf74tPdfSX4fTR35f6w/0tkl8Gv02pMf52ffM+EaO+X2fx/L+Zta/6K5BX5mvtcbXS3lvm3zuNx8aAPvDn+inHv9duaAe+sr99wfQtxQ9p+Y+kvwr6aUKPhuprwF9TCb3Ajofl75U+ev41f/A6+FJ8sviN7+flt9Ty++nrcv5EvmOMI58Kb+C8bY8rFjyzvZn0ivhLeqbgP6j9J/GWf/DLep/kzz2YsdvSf8p/zLj0TQ4CL6n/b7sJfO57PMfnPj/vJcDX4N5v7oP+TRkb/WUP126i36/G34OyTog75Xob4nXuIf8eiSOEma+34Z88v74ZHp/xTj9mPSM3LtUPr9jU/r7NYk7eIbfLo0/6J34xNxXwXfG1xbqPdG8/CSY99cTD7IKZp6aeJFm+sP/dY7/A/+7seQextK8r1ESn5/79rlf/6P+fo76DtTe+4m/Yncj9Jtv83tK6s+9u7b0Unr/LvvGB8HFMPEPbfiTUfzW0dKPJB4ffetj/zlnyfzUuLbROJDzt255b4M8RkqvRV9d9D9Lf5eUvCfST3qjcWVP+sj7qXnvLuvfxC/nHe+sf/NebN6R3bHkPdnN7PocdpV7qLl/+iK/mXPZ0t8jyH2A3A9IfFDuB7Qgj8NgS/Xlfkfu1XbM/jxcg++xiffRTxvBWtr7xnj6JD+0WDq/v/gceR9BrvurN78fOY/cfs/9MP20C/nWzv0/mPc/Z+D/CvT0C/I/M/WHevjOOq+DdNZ76c/30cP4kv5djz2WNa94kvyPzvpCu2+z63fgLPKdyW4nZv9TOvvfI407I+Cr+E787Sry+L9+pzDztZ+lM5/L/O2Y7DsYtzazrx/l/5D7BXAafvP+8ZTwAcvl3TD0lVff/Nx/yj6u/vsGf1XRdyMLRTxNPc9In6uf/Jn3S+knv6+1Vjrz2thH3sPMOnJn+Gn9f9b7nHae2P2f9f/b/OU99LyReyDq7+7/uW+7RX+4POtbfA1R/y7ovU65zcaPyey7m35yJTtskvfwM87RU/OS323IPfjS+++9zT+n46tu7iGgrwd7LGue1F36mNw/oKcXs5+Ye2TqmYDunNPmXYVLE4elnt+UfynxgOR3QeKj4NfqOYM9dVY+9xE/ynuY0h9L5z5i9r0nl8QPJG4gcQR5X397/qV8oYjbwr7yO+Zdm8QDaS/x1bXRG/t4ij5vwu/Gkt/fyjsbeV9jue8/5reeJv9X+Me/tfdg/AH6N0ofyZ6PgC1g3rt8i93k/CznaTk/O1q739LjSNiU/i4ivxnoaZS4mbz/5ru1yi2XHkwenZU/VflucGPeT+FPxrD3Kux3KTsr8J+dfNcBbp37R+wp7xnFLy9M/Kz2E/ecOOjEP68m39dz3qfdeSXva7yW+YHv58uvrv3sz2W/7lz5+X3HnjC/89gv52xZb5LbZSX3v6uU+Ku863uT/FP127f0n1mJM0LP+/Jr5bxDOr8/V5H+f8371PJ75H6NeVf23W4t2X+rpr2P6W936azjs6+UeW+LkvnwyCKUeRf2hh/zy8/oXz+odySsSw7lCkV8Vb/Yw/jwv/5rXtoJdig5n3yCPT2ZfR7ziNhLQ/xGnnmPIu9PVC3Zf8l+TN6/Xsxe7kq8OLrvlr6SP887Smvg19o/hf1fhJ9dyXOUdH7nOu8GrtNe+sdxeb+P/z9eOr9n29b4cGDeSzH/GIDfdrn/pF+2KIl3THzLGfB19nxLzlcK6ITvam8/9ef3BWfyU/l9wfze4Ln8YQ32mftmuV+2G7vL75cWpE+Vf7v5RS983yI9FP/92Mv3/j+aHuOn83uY2VfOPnP2l/N7UF/Beuo9R/6luQ/Cbs/O/pV6ZpW8d5V3sN5T/lD9sSPM/YqP6b8vevMuwiL+KO/3ViWPO3IuRp+Xk29f37eSzrn+Luq/iFxOIKfWhSJ+j8+8Z5x7GZ3wk/sZvcyHFuZ8KPdFfP+tcXGO+n9j/+O1//8Am/7RjHicdd132NfTHz/wu0JLU5ropmWv7AiRoqxEIURSRjKiCKWSnchKCml8JRmlNEQhSUpJyhZllJ1N/a7r93k8f9flc/3c/zyv8znvc85rnddZr3PuK2qW/N+/ByoU8LmqBRy1TwGXlyvgWfC5RgWssVsBF9Uu4GK4YbsCttm5gAMrFvDGSgUcAI/ds4D3lS/g0hoF7LFNAf/cvYAHaXfkrgWcWraAM/fQ7tYFLIFN1d9B+VPU1xYdv0g/rL7dtyzgtfCwLQrYu34BBzUp4G+7FPBzfP9NPrXqFbAKPKNBAY/eq4Av1ingbDgO3+NhX3KfIH2V9ETpn3csYHVy6A6b4e8e9L4Jh+DjD+VH0G+1rXwvfcreBTy9aQHXNyvgFOUq7VvA8+ilda0Cniv9kPLdqxTwfFiNnEuVf3inAv7CPn6DL5PnfeR1FxwGtyLnmfiqj6/KcFTy6WcjezjO7+fSz0fssDJ5nd64gL/Sz507FLCK33tKn6++HaoVcFs4hxy6y1/J3n4nj7f9/h7+q5LvH+ztevR8ov1zyK1C5QKuUf+O6rsWXc+S16Owo/r3yu/43o88qqm/HL1uLX9X9L2j/jLo6URe5chpW/Ufq79/SI8X1y1gvfDLHhqqv/mu/+a/GX01V24AfZ7r+5/V30e6j++qK/+lflURXeukD9f+laUF3IXdTsTfMcq/we4XwTrqmY/fZdo/ZdsCjtRPtyHXSfR+OD6PgMvR+w17f0K/mkOP09EziD/9jZ2Ml75F/S3Z2xnaHa6/LyXHs+nzQd+/ge7b8DfS72f5bqH82+Vfoz/1g7vza98q10M7b6U99tYu9sB+3iDv2FEX9e+N3n3gbdq5mh6asP/B5FFWO42Un8D+dzIOtKCfl+VXwldTv1fXfjP0fUze1fj1b/DVUPkz0F+K/ovVN1T5keh+XH8ZTR8/y++g/I7SJ0j3lz7MuHMo/BCdPdL/2Uf8Yj/jV/zjQvS0Jq+l5FWq/hrqfRN/i+F3+KygP2wsQMmlsLzfx7C78uhqw56f1P7x+ufn+uUFsBc/Xc540wsORX9T+qrp97PhDPkT0DcL/SPir6XX4/c0dE2ln13w/5X01WXQC1+Dd6qvk+93VE9veuwDy8tvp71Lffcc+Y7T7y9in1/h+yzyGU0eG+G+5HUNO/4WvyNga3I4kh//2vft1deQ3C6If8NPM/OmBtJ94Ufk+Aj6e+ufD8e/amcu/3Ov7zdmfkJO68jjYuVXKL+MfTRE51T4qO9fwdcPsCv+PifH4/nrrWBH8vxB/lD03Rw/w3731/5p6PuB/JvR1xz6j5+chZ+HyeUI5Tdo70DfvUp/Fyrfn1+9GI6BM9DT2vdvNixgdXr4n/Jj9aM6/MK+vn8f3RvZ8x/VC7gl/X6j/nONL6/xu/PpcUf8DuNPjsTPDeTVSrrN9gX8AT1fG6+bye9DXvfI/wldI+Q/ia7V7GM+3Ew/c7V/mfS+6tte+S3odXNpARebB8zw/Zf812rpevRwOz5bK3c0XK++TdpdbTz9x7h4Kf6b0/cdBSiZDZeETvnf0dvn9PKA9n8i34X6bXV2PQ3OIscr8Hsk+Q1Vbjb+a6F7B3bxOb1mfn8Je1wBJ8Fz0FmVvS/y+8Hk3136CvkZR1ahqyJ69iHffbS3pfwO0o+ipzK6P8XPLeTznvIf+m44vCz16c+V4UL9fLz89eS3Fv4PTpC/Lz130/6f2nsG/T3Muy6A3WF1evqGHcyXnoy++I891X+8+sfh71j8/aP/b4Kb4WDlHzA/mJl1gfVVRfqdxx/Mh6/An9Azml3+QG/fw3vQWUe/3hbWgs3Q24A8K5oXTWVHHcm7uvlPTfiIdi9H31fk2Qn9DeS/R/5T9cfz0N2FfRyo/Dvsazb7WiG9l/ys20/h345GZyn+Xi9ASVftXyl9G/7qoK8See/qu/L0szR0qW8i+lag/4L/8B870fu75LRJ+Wnk2U07q82rluFvOv9bzvcl/Ettei8r3QEd95YWsD+cx9+frvxc8vmFHz+cvymD/r/ROVX6NfZ5Hv7Px18X/O2l3T+Uu4d9fsCuPoSt1He18o9Jf4euldLz8T9BuTb021X/K0HPmdp9gd56Z/5DHiebF95FTmfIz/q6Kr18Qe6HyD/A+PK3+neRPgS/08nrQuPYDOnP0N+PXNeR81Dyv1X9Z5qvjMf3pbCs/JfpeyvtbQFrs+8GpQWco9639M9dY2fk97H+9wlsjc/9s39Ajl+T31/kO5nd3UyObel1L99V0Z+qwh+tN9rj/3v+5Uj6q0z+Y7TbQ//pCS+E56Gnqe93hs3g+fIn8g//aH9L/mc/dH5L/t/BDfBy+c3oawl5LJBfBn+XoPsmWEH7J+CvGb0epdxl9DeF/Mrj83n6Wi9/Wfaf9I/vzVMXa6cBei7mty6Bsc+aytfGd2e/b8Fu2sLfyONXdjOWnU6U302758KjtP+H+p5Sfjy7qpP9GnwtNl7WNe943/jXEv8XktfF8CJYDz0ns6t6sFnmS/Szhj98lp/cE97Fvu/Uf7fFzxV+v5d8HkDXcL/3lx6c/QD94z16qGx+9qTv5/Ib2+Prcf2hjPyD/L5P1sn8U8ui/aonpI8it1fRuxs7norfeeTSB/0XsavtyP0y/Xy09rPeP0D58n5fxH4742+sfthJ+h3fj8T3ffBw2I7+NuFvG/T/xn98Kf828sq6p3g9dAK7WqXcR+prp/8cTr4N4Tz03Ye+vfH3XcaV9FPyGcsfl1Fuo/qvVf4h9KzD/xfwYfn7lBZwZ9hF/dXRdz17rOL3d/CR/cN96Kez8mfAqdknJJf2yp0A29NTI+Vv1c9uhsfLv8V6Yhl9Pge3Qd9S/e9CWMX88HB2voFcW+DjW+mxkQ9/8Kt2R0r3xO9o9D4s3d94tDv+K5DnVnAhea/JfEa/qE0v70m/o75P6Pdndl/R793U/3HmX37/xXfny8+4dTZ+biWfL7O+559fgk+RT2X51dFVAx5FTtXV86L+9hQ9PA3H4m+8+ub6fTfjyXXouVN/ih66sofI/0vyXQsnsOPr9K8zyOtW5bP+usrvA8llGqxCXlur/2T0DSC3DtLvS99UWsDVDf5dT8r/Qy57GRe2YJfp/6XkWj77Buzod/11hPlAmYwbvst5wVa+rxD7R8+z6JuN3q3VM1N69/QD9WV9M69ofTMv+8H0s1b5B+m/lfHkXePMcdLl8LeD/tBKvS9k/ob+LtZ3R6CnAznWVb6y8qPgIeh5Wv7++stN+tVg+BP5L9Te1fX+//Ufgt4n4eP0tI3yy0oL+DH5VeFvXkJ3OXyVhceoZ0j2g/Xr3uygF7yanWxDbzVgTXgw+f6I37fpsxU5XIn+v9Gzr3LV8Xe3/n0Ue25L3k+yq/uU35n+/1Lvdvxef+31Is/v9MPe0j+wj5Pwt1a/m+G7g+nzfPn7ZN5Nvl3wF/vfATaEo3JOhp639dtL4Uq/z6CHXtlvR8f90i+ZL70MG/BP8/C/we+X8ged0FcLf2v0uzLofwjdq9Q/Eb0T4CWl+PJ9N/b5HLt4XTrr1Vf5pRPZxWH8W84Hfou9mr+uVv+B6Bgh/aj+ORp2l3+q+UNr43zH0CU//nwKnAy70t8YdvGi9vfXj3ZB/2r5I+mrD/99Pflso7627LQNOa3E32B+e0D2N7LPp388Q1/Xk0vlrDuVb0uen7K7CcrviL672ckw43tF6UXq/0n5nEPk3GGMdvpbH0U+7+P3TvX/Lf8e/b8H+Wc/pkcBShbDV7L/VFrAV7U7H2Y+2IZ+JuF7B3Z9BHvNvnhNfF3Hblvgb6TyM9GZ8+8l7Lp21pfKt1duHKyQc172Vwt+i//B6hsdfeN/Er42oO88/XUuvA22S3/Cb62gftAG3dl3yvnGm+wn5xsD6Hua/Bulb2e/n2TdSk+d6Sfr897p//Bcv/9O/zspl/2Uh/nZR7JeIr8m5LZauqZys/W77Lt8gc7sv/RR31cFKBkCZ/H78Uu9YG9Yir+x5NkV9oOjyPcz/vHrov3TY8mvnn43F50XobMC/b1gfnhHzg3I4ULl92PPzWFL+sn52dZ+3479XEw+zcnrMlgJPkl/e6HzL3opZRfNMt8jv4Xsbzfy7iZ9gPab57wQ/e2Nfxull/O/V6n3CPy3Jq+r9KvR2XeBZ5LvlvidSS4PkXeTjC/a+zbrJXzdFf9CLtfC5tknoN93tP+V/rE3uueo796cV5BrBekGyk8z7uwM3zdPqy+/P36ug9fCG+n309ICfgbXwE3KL6Ovw6SXS2+Q3os8sn/SMfu8+M/+ww2Zz2XfVfs7oXtf/fYM9ZYn7wXoWaifP8Y/HaW+QfrDeHgqvCTrG+XPNq6Ng1PQ21997dRfVnox+R/M772uvQ/wm/PIp9jVTDgLjpTf0vh2GHyX/pZp/23p97KvqPxpsX/zsWqJt5MeTn5j0D0EX4Phqzlf1O//0r9eMo62kn+M9nPOnfEi5yfjE39CnsfEP+BvIHpvgE+w44xHC1KfdqbD3fS/19GxFo7Sn1/A31n6TW31nSM9SLo7/ZxcWsCG2SdWfnt2tR2sBpdo7w/85RzrHfaZ86vt9JfX8b27dF31r/P9LPlPJF6FfMagdxU9VZP+yffP82snyJ8m/Yz8v/ifBfzsm3Ap+tuY/52C7xbmEW+gr3fOd3L+VICSrvxo9qG2wm/x+fxO9Jr4sivYz1Pou8v389AxH9bL/qT5dfbnF9L7z9qL/26S9UPivOT/kPUUOc8xPg7R/kX4O8k4uwv5ZH26jX7X3DiwBF1zye+19Dd2u0C6Bf5X8E9HwPPIdz0+xvAH1+U8PnFY0o9LZz+xBv7+YR/XkmdF7ZaHiU+cwy6uKS3g1bBu1gfk/UrO+RKXQ19bWddWhOvi17T/dfZH0Plc7F5+F/QdmnMKmHO+m/S/Vfzme/AufB5M7vXQ2dZ4twD9X6L3pZxfy/8ocWz0/4bvGvFn8X9dyede/D2Mnp3Qdzr6n4eJUy0nfyy61rOr2fK3Ym/RV/R3AzlFf23Yb85TW/t9qPQc/L8IvyG/Y/W7FfzJYWlH+tTEK+k/29LLH+xusXae931zcpkmnf37DvjpTI6d4PHkfwL6y6N3O3y/Lv08uc+AOV/dXv274Gsn/awFO1yP3sizPb4j78h3iu9v893TSeP/RPbQVbl2WZfK/9v4Mt/vO9LzX+S5s/KHoq87vNf3Ha0/OsBtlbsE/6/p75XZx1zpSuQ/Af8j5deBd6BvHL4nwuL16zLzlTuMizXhM8ovYt+JK6hdFF/QJ/uF/Pnv8Gjy/R+72J7eJkq3lv83eT0s/xR+sF/iI9DxIH3+zP6XS9fR3gDzjoHwbvwlPijxXVnXJr5rjvI3wkEw51EnF8U9T9IfflFfKXknDqdh9s+lEw+ec8GcZyc+fBL5PoveNsaPGvrH5eS0MPup+ss09LeQbiy9OPO6xBfT5ynGj9vNz/ui8wL67I+O7DMMUn4Bv/a68XsAO70JfcOl70oc8bb/pq+leivKn8I/v0YexfENiWs4S/lT0HMgOrYn15t994D+9z5sit/srx2Yc2py7Mae6uV8yHxnZ/Lflf774X9Yzu/Q/YF2s55YZNyvgs6t4ZOZz+jvPbPvBt9T/w34fhf+Tc6V0HmV8lfDUniZ+rN/+gl+L5FO/PFn5HIkubwIV8l/kz85jB95S7q3+s+kp/HSWW9lfVWeXVWBi9jXCvb6rfa/hJPgcvknoOdTv4+Hi7X7unpPhXPVvxI99fmTN8i1c+KtyKOL/nqU9F3a3Y0e29NvK/2msXafy/5DzgPo+XR2cHn219U/s+gcJOcfd7KHu+AwuHivf5e/r9y/60n5I60XHmAfN+WcjH20ZL8b0FVH+xfRz+X8fWPfH2Z8/kL96/SPHtLTfXez8tPIM/Oujvxz5l+f6S+9lBuEvxMTP43up0sLWAW9b8t/j/5ONk6ulH458YPG3Sdi19rNPZesi5bAuuwz66NhRfd71pJf7veciL9P1f8Z/FU9iV+/Xb9L/Hri2W+hr6/4t1ul7+ZvprKvvX1fi5w3oHel8aoS+uqx75PYw/3645ScQ8Gzc39H/bNzXqjdrM+6qLdTzgvZ85PkG30Ngd/iI/r8Svm+6m+Jv3aJL2RP75jX9c18jH6Px0fiw8bBJZnvGYce8N1k/DeRvoM/6MtPXJo4Iumu7L6vfnKO9AD092Kfj+b+SfyA9meidxYco1zb/4jfqVlawMTxNKK/duR3HFxDPs31mz/U/xv8MvM3/P/Azo6Wfw06jlB/y9w7ghOUH65/5V5k7knmfmST6E99jaW/p5+l+FkC/1FPY/S/yx6a8FO3yS9JfBb6/2Knn7KDcvKb629d0H2F9reQP4Iea8OfySH7M0+z59NyH7F4/pf1Kf3n/taFicfAV+Zvz0jn/to8/mYsuuvh5zf2vhP/OEZ9TdXTmfyf5S/qWz/cCRN/sYn+v1Surf6SeLPZxq2e2p+uf+9rPnINuX+ufOIaTsz6iP+Kn54Fd6H/9TlPNW+6CD4Em/Ij8+Bm7dXHXwv0vo2+ZfAfdNQln7tzHpB5XeKT1Jd96exXb5b/Cfv4UD/9CL6J30/JowK5Xo6/VYkfZw9ZTyc+dSh6Ej+0B0wcUeKHMo4lfvisrEfxn/nw8P84f2uJnvth4r0Tn/U9PmoknhT/iX8tn/j43KdV73T05Twu53Mti87ndjTef6Nf3Uie25FD4pTbs9+h5Nud/ZSit3PuYfEfm4vmjWOll8HMH+uUFnCScX2j9FHavYU/biQ9LPFY+M19kq74fZm95H7JUPzkHub+8jfn/JJ89ybv1+nvWvJ9hP+aSn9/5nw1+wzkfwj55PzmVPUdqf9cRu4f8Be3a78x+b+VfXvYC11N2EtT2Bi+QD+3kO9A/vAt8m2h/sRxJl7rZ/wv8P3d/NUo+fdI3xR50O9rcL1+1Ap9oxI/Bmvob50zX8DP8+R3GXxfe2fwBxP5sVnk81b2+ejtQHgQfCHxV+Sfc5msqxIvuqXxcJD6y0lX9V1T9nol+1pm/rCL8iXqvzj3ArSzFX1frN+s8PkV8BK/n0n/W5j/bQmHKH8jexueePrMv9jvC+yjn3nTQvXOZP9z2ENz6RelE59Wif1XhNXgM76fSf7x03+ia0/8N0TfJvpO/Gn/xPegZ1PRurN34sijL5g4q8RXvUW+J/o+5x+d0DGFPDLf2F7//wJ9k80Hr1Uucej757yP33s79yzgInxUxf9O7OIR6SvJfwR9rZLfl32PLjr/v8z6rvj+yTvobciuOklfyu5uVN9m6axny+f+Jbsdjo4/5FdTf86XZupnOWeqk/hD/AxghzfAr8lvBb2cZl7fCS7Iul17dyfOg3/JPu1u7PM33y8sOt8eyJ/cCP/E5yr1XFU077qm6P78WPJdot5h9NY06z9yXw1/y3w29x+0u5jel8B7yKe2/tCCX5yqXzRS/5fs/8/cp9zz3/xlPy77c9mvy/2Sgeivh64G8KCcn5FvPXY+qOj+ahl8L6ffLuobkf3IxKFJn83+m+S+buZ7GR/Qm/PFSfxtB/PmM/O+h/Zz/+Y969mTc48Tflq0Pq2AjzryB6KnJnu+2jgy3Pf9/J7+dT56rkT3Jdo9CP0z0FMf/cX3QXJPJP5nAHm+xN7qSG+Nv1rs+n7j14f6x/Xo2zH30+j1AHZyIjmNZl9b6Wdvqf9s+m9Mf1+XFvA19PZT3y7KD8i9AvLoif/j8FuivQnkOyzno+p/WX2N9J+sTxubpy+Hq2HGt93Ifap2l9DPcvwfTX/nkst5cKB6uiUun3/LOeMyWA9fpUX3ABL/38J4cAhM/HDiFYrjEROneBD+OvNDsa/YW+zrPvS1wdda8p5EXok/rAb78LOJQ+xD3/PJvyL/M1D7B6NrdO6z0s/x8u9jd1mfZl2a+Kiq7OFq7R2of3+vvvH0Ow5O8ft5WX/6fjO8PvtouV/CHsZop6f0SZkX4jv7B5/B7B8krr8Gva8iv56Jl8u6J/ep+IP2uf+LrvNgN7hI+09rry/99IOnqG89/SYONvvyS9jvraUFvFg/TXz5p+gvw9+uhyMSX6H8jIy76Bkl/VbuB/zHuef/8P0UfzUZzmaHFyeuEd2vqv8X6RfV/0zmt+j9M/MG+jsz97WUO0v6d3Kox45fRs8N/OWr6tsX3aXwVXRO0c5J/MudyucexkvsrE0pPqQHZhwmvzPoO+88PJVz87yP4vd1cIH+lPjzcTmPDt/w9tyvY29N9cvGcJB2Hkv8n3Jz8n5EzufYU963mcYf5X2bJvzDrnCh/LXkUAITP3aI9j5Ef85Dss6tXrS+fdp8qnf2j6Rfy/sO9LoIDst7Y7n/qb0y2ss6NevT89jndbk3k/sBif/gT4ew/+XSg3OOaby8hfymlxawm/qz7/mcctkPzT7oFH7/Gf1m79xbSxwMetrRQ3v4rvbf1N7jcKL+8Kv8xGslfqsDe0n81h/avxsW7xfnfk/2vQ5CX84PHvPdnfrFmb6rp/6e2luT/R79OPvPM9U/C86Gm3L+wF7z3kveg3le+w34w/rwtpw/+34tu2icd6fY2Rd+n5x4QDjJfHxF7p+bN94Hv6WX+egvx97PZXeJX0o809Hkuo9xI3GON5LzzfjJOzB59yXvf6yzbm3Pjk5C587k2KvovYm8Q5H4gVb6y1/mB//gL++JZZ7fUP9M/NrgnC/T556+y3sSeT9ilHFxNEz89Ofo+4g/vyDrw6L4/6uKzpMv538fjr2yq4MS38Ie3k9/Zn81/H6m8fYp/OU+Se6Z5F7JTVn/kk/Z+F/pa7T/u/H1SX50Tu7Hklc/fDXKPX44IPcbM3+m7zJV/t3+X/j6Gn4D27Lv0eRYlT4vSzxF7r/lPhw6u5FDX+3nXt/W+sfL0rnftwV9ZL+qrPSB6DtXex+j44fsa6PnY/Xtyb72yP30jFfxa3AUel+X/yP5XJi4Q+kb1P8s/138rlPOX/K+VqW0g768r/Ulf/uCfveV9Ab9pS59n6hca/3sTvUnfiFxC4ljGCd/T9/vDWvyE23YRxnyW0Aff6ov8VyX5v0LfOX9ukXyn1bPbdrLPtKlRfObzGsGsYPVym1Sf/YTcw65IPfD6HsNud8j3Uv+cv4r5+PtYM7H27K3xLu04lez/5bzmw3oTnzVrfitzN5/1o8u0G7G60r81Sx2NgMOUt9FxXFT/Pwt6FuK3vn4OEc68dXHsNfW8Fj4GDn9ZN7+M/wFPip/f/T/CfMOVOLPv9buU1nXFe2PLuPfs395XM7/0DfXfC/3kQbCIb7vS74vSw9ln2+qv3Xes5O/NfvP+dD3+t059D4LXp/9Q/6zS+5VkW/Gl7vxW479ZX65DJ37aX9P64s9YE928BO/ukS5leopqz9Wzn4WuVSSzn3ol9E/h93NhrkH3Vr/HqbdCujO+yPZn807gR0Svwl/yHxP+de0/0vR+udzeh1VtB7KvtrsnJtrP+vQvHuQ9zoTb5/3Dx7J/VByXJ73Ssm3b9bLec9CPU31v3eNR7XIuZLxJ++h5l7+6bD4fv43uTcHN8DDc26Er8nsqjl7PQg9U/WXabAXOeXdwFuM10PZURX6f4X97Ures/ST3TKPIscPck6m/I7SraS7kOci/GRekvd0bpHeVboH+pei/yp8LeTXOxbFiWbd8zh6u6G/SuJz2ddj8l+h7xvo52h23Y99PYC/FejKfmPGgWL/fxq/eSC9DqOfevjpjJ5n9evTpW/V/4fj78isA6T/kh6LnnHwAvTulvgS/LfL/Nd8b/fUT+55f+xg8sj88UnpvF+W98zyfllH+Rm3Bqr3O/mXZr6hnz7LHnfKu2jkkTjepdm/or/00/qJr9FezmdfZKf1c7+XXM5QrjN53VBawOthL3r+iF8bzf7HwK3Rn/dW8/5qL9iuKP/wxINnn1u6hL/bpN639KcHyLO++UCrxJHB/fI+DbnlHe/cv8x9zOXqW89ulkp3o4fzySXzr+L3TU9jr8+SxyB+tpPy2R/6hd1UhNkfqov+3C/JfZPT0N9Ev2kMtzdfuIkcT9UvtiGnbXPuhL/bfN+dn+0BS9B3Gnnknm/x/d4f2N8f8EdYkngw42ddcsg6J+ubV9jlq3Bb/Len/3nspyy7nUJ/jej3cnzlfHwBzPl4K/5j5+wDkP9L9NOG/c5PHDHyj/F7RXKvBCvD7E/elPOVxIHDafh/gB/+gv3kHsL+yp+qv12C39noa46+8fh/POs7+l9Jf3fwSzmfHSad89mq2u9Dri3YW/YPDko8Qt1/lx+Mnl/oc7Jx/H74qfrL4Wd+3nHkZ6+i78Z5Bwn205+zf5L1Rd7LmsauP5bOe0p5X2ms9LH60wnSx8MT4RHZz7NfMANOhw+hfyvfD1PfltKPk+8D5HUhu7sZfSV5f4E9fC9/rvS+ic/MvrL6dzd+vJP4R/aZd/Xzzv5+9J/41exDFe8/vVM0P038/w4w55On6y9701/OJ7/xe84T/0bPK/LHZFwren/kCPJZ6fvECx0U+Sg/hD2drn/NQ0/mARnPs757nj/K+P6A9h+E09nXzvLzPlbexco7WY3Ul/cUE69UfB+jG3JvgdNhk9zz1B/bqv9+dvWp/IqlBRwh/wn+8Uj59+I771zcJ/0rOS3jr/6HnrwHmv3Xatm/9X3ep59AvrX4938SBwmzj7o48SDKXZ/9dnL6UP+/t2ifr2HOmdjLdvQygz3nPeVPcv9Pva/l3BL9iU9LXFpX/Ob90bXGy5zL5Zwu53M91Hs0+WReMR//V+K3O6ya/djclyW/KTnfLTof2Fl+W/VvVv/52WfR7x7NfeC8D6J83hfM+fEx5DVXOvdy8i5T7uvkfaavEi+T/T70rFD/Cv6yuva7J+4p5+vsaR0/XUb6KuX/Mp4PgUPhm+gbrz+WGrdm0/tbyj9P/rkH+CN7GqD947U3U/m9/Z73C/Ped97/zntIFxT5tymlBYyfi39LfNR17CNxUhf5PfEUia/Yk50mviLxVol/TRxW4l8TfzuYn08cbuJvH5P/KHwk8WXZB8w+dO5HkVfPrEelS33/q99j/zvIH4X+jeTzpnRV9vVQ3rnXPx/K+Yffny1Fl/SF7OQN/vLD6Jvd1Uz8PP39Tp45R7ha+3/mHm3u06Cvp/yV7L01eVVX/kfpm1N/4mKl72Un6/iv1eYneedssPofQtc17GsxLJf1/X/cW5pMzoepN+9+5x3w5/POMHnFn00n76eV/zbjIf7vVX/ep7oQ/x/Cuvn/FfgvMR/ob/x6RX9YRx7pdyV551Q9nyn/i/X8aOP7g3lPM/dP8dcEvSPyPkL21/iP/TLfo78G8rM/8w++N8Hs0xxJvmfDJ+kv++Fd+POVuY+Inj3U34ff6wGnw+7y96CHl9jZXuTdO/F3+mXeLalhHMn7Jc+h/2z0dNQ/Zqv/UPSV0w8+heUyv+RvL1L+nKzDyWsndtUI7s9/rlU+74mNhfPp53L6yXu8+/o+8dd3st/c/x3PTi7JvcisX/w+GN0fk2/e/7nX+Jn/t7A/P5l3uW4vQMl6eCi5HaD+7Cv+hM7co839uewv5h7tRt/l/tzl7H2jeV4N6SPp8xryHa/dN5Vrif/XtT8170onbiLxx36fV1rA+XBv323MPVnfJw4u8W/hJ/zlXnD4C1+5D1zM3+/65a8w66Fl6l+K34l+nwDz/w0W0Vvi8/OO6hNZX+tv+X8NJ7Ovi6TvyH3brCfReW3eT8t7Afm/C+zn/LwPxB6eYSeJS8n8Ku+2vw8/zHmO9mKvseO8nx17bsx/Jq42cbaJr51YgJIbYHeY9xCrkN908+aO0q3Vn3cIL038bt51zvhNnp/j+yl2H/6r6I9fw6P0083GmXb8xR55pz79BzZEzx78zBR2/VfsmP0lnrA4fqoCueQe68OxF/Qdk/tufh/JHs7M/f/Ev9Hzn+ypi/ylBcgwU1KWv7tD/TnPqMaPzpZ+Hv3Vct6T9Yj5YOIzD6T3Ndp7gfza4K+W8aWT3weRc4n0q/RRSp5jc/9belf2dgX720ye47Sb/xux/j/+f8QHyud90lVwHv7Owffp+vnIxLtk/099B5Pzajg58Rb42AJOxd9j+B+e94zho/rhnfgoa9z/w7zy/70/jL+8J5N3Zu6Xn/dmJkr3SH9S7w3S5dhPo/xfEvbWSf2/4SfxXVerL/Fd/djDNP1tD3K5Cn/HFMWRf0+Od+UdCnTmPs0B+udI8u+Rez3ksgf57ej3m9nBkfB49tE2+4nSOb8813cV1N+1tIDnwAH60Xj8JR7+C+0mTj5x84mjL46z38Lvi0vwAYfD7H+u4XfuzfxO/3ucXNrKb5N9K7g7eeU95NPYwdnsYE3i6Ogj4+Jb+lsd+r+fvJfkHbKi9UXxe4Z557Cr/P4cR4XQh54R6sn/C5hTtH+W/x+Q/5twN77z/xPWyp/Ab24yPyi+391f/XvIv1Y6/6/sUPrrSH9vo38ROr6Uvw5+BRO/t4d90wPgXjD7CRPyfi/9v20cqks/efc393ty3yfvKzUnrxn6x9F5T1z9P+X8K/tTyuX/e+Vd+bwzfw7M+/I1tJd7tdPRk/u1w/WrvHOWOLTEn+2OntraqQOPQk/x+5R5l7Kv8hXy/iX9bORn8l5s/v9M/u/MIb7L+5rPFqBkJZyc+Al20DP7gfTamL3k/xsVn8e1yHvG+B+afVn4PvurTb7drSey35Z1cMXEd7GHOxK/Rw5PZ13Cn+T/4uQd6Q3qn678/2B9uCbvfLGv7bP/is/Ex2yhvcuUG5l3uMiv+P3FZ/j7vLeW+OTsKydOOfHJC+jjSr/vQp5P5f11/eh7ck88yEPoX8ofXchPJA5klPz7+aOb8JNzxbwP9L76VuedrLxTQn5P4nu4cegp6Yv5p/tLC3h37n3RR96HOYU9HgvzDmXu907O/V7yeh/dH0mfr968o5f7LlfKn1kUl3medvL/Dx8hz3fYZW3yyL3XU/T/4v39/P/cH/mN0eQ3wPic///4hvrb088t0mfKz/9Vqq9/5B2H36Wzr5b41eL9tZzj1sLvL/rL4bn/yn7vZj/l1TNY/jf4+zH7n/R/jvqepq+17HYIPvrKn8K+8o7kPurJ/39qaTzIOcqtMOcneU8k74vcTH55X6QsOdxTWsB+9LQdvDz+HDZh37nHdE3uE8Fa8Cvt5d7yGuXzHlfe4TqavGuj+yc4Fn/9su6CH8Dmub9QgBJqKNnGfDXr9xMSD4a/NeSb+Pru6M29qNXG68wf9s27rHlnsui9iePpe7fc36bvt7PeZr/H0d8x9PEKu8r/v83/vf216P/fDjfvOEs9zekv7/AWx3cmrrMi+ovfu8g7GEPI9w763ITvzTD7Z/m/qeN89xG95f+oVjSuPZ7/YyC9JTv/Tn2r+K2K+H8w76ywv/zf7vF5Z4f9DKPvr2BVcnkU/efS2zLjQv5PeP4/eB/2dCU8Hn0n4W+C778n1+vwu1/u6SVe2Hcfaq+//NX88io4Hx6n/pPJ66Wso+hpED7GFqDkDHgjnKR8/MNgdluff4t/SHzeT/BtmPi8rfmri3z/g3ozfjQg7yXk3yjzffbZn147k99d9NBaPSvRs97v38Ds/05mz6ey87wzdZjyeZ/qqqwn0HGo/OvYT03y65O4fPV3Y5cn6ycN6SfvJR7k981+fz1xHeSxu36Z/z+bd+Dz/ntb9vJxaQFb8PMfhX+/5z3dvLc7Rv0V2GXikK/BX8/Emfr+dHLpYD7Slrza+m5buAN6XtP+AP15ILwx71llnsF+H0PHYHKcmvf94G/kmfu2k9jH/wGMydiJeJx13Xf411MfP/AvzdtqqIyojxRFEhIZkbhl5JaV0dASoUhD9miJzIyMklVWwxYqQrS0s0WUlGw3Sf2u6/d5PO/r+n2un88/z+t8zvuc89rnvM96n1u77P/+usLauxfx4H2L+NRWRZy7VxGXbFPE2+V/vEMRj96niB9Jb9O0iFPqF7Hq3kXco3ER99yviOMaFrGa9A+NithH+s1aRTyrThHPhDPVt0h785TrEDrRdzK+2sEjdipiP/mVGxRxdZMizlHvUPT/XbGI+1Yv4nVbF7G89v5Q71/wTzhA+UfQP6+88uR0qPZr7FHEl/zfEx3D8P88eqfAyXDx/ugkj8vJ9exdijhK/VuT7zHSI/E7XHpKEcr6wGWwMXoW4ff7bYt4L9wWnZ1rFHGW/y/y/Onon1QNPdsV8S64DTlvws+7Oxdx/m5FfJx8f8Jf7PMbeJTy/65SxO/Q85D0K/h71vOT4FX424C+l/x/CjuaKb2//I7st476lpLnsdLX8ocvyeFK6ans8JXti/hypSK+CHeV32xX7cGb2cPP7OdHz/eAq+Cn+P8OPXPIazb93sce+pUrYkW4fMcitsbfaRWKeOO/1M9Oj5L/Sc0iXk9PN8CT2cdG+Rvgn/A6+tiXXNuKK2Po+T30vYautnDTlkWcz74/xtfd+K3Hnz4j/wbkvZKc95ReQr6X0Gdf2AwdS+VXRc/n9YpYTXqB/Ab8fgj9ToTvo2cgea/A77Pktgz9J9LPIfK/Zk+n0+/F6OpFD72lh3u+8Z5FnC5dHl2faae/55uSywDpvT33Eb4GigsN/H9S6MRvI3bxHb4OQ9/KqkUcTb5/8Oe69L+eP/8tfz75XK6dbfF1h/zHpV+oXMSqyh9Eznuyw/3I73z+MJe91EfXAvQP0t432ntSvZd47htxaTVcBS+ml5/VuzT6oc9u2l8lvVj+r57vLn84+x4Kh8G30fM1f3iJfr6Sbkt+27Lvjurtwj4qsu/p/O1gz70h3RL/M9U7oq7npWvLf5+8f9aP9afPZdp7TP6J8BB2UFn+meymPZzBXgaS3xHk3RIO0s5S8v9de2Pod1vp85UfTh+/SU+gz8nor8L+m5L/buT6mvRw8lytn/gW3qG+49W3q3Zq6p+Wk291dN9qnFNDejF5j8fvBeS7mHxbq/9AcnoWv5ex1zvTP5NbU899yj/XaX9L8n4d3TPgFfzwGf3CKPgprIu+rujqBrvDv8mvMXr3gXvDk9DTgT+3JJ+b9C/3pf8uFLG+9rYVTxbgdyY5bK++1vh/XLoJec5kF/tIj8XfjfiZX4SyC+AUctqBPH6V/h0eRH7nsqc54ks18X89etegL/3xDP51bsl46EDP1cT3KPprhd/KxiWV4Cr+uyV/f89z2+u/NsDP0bOAnD+TPiDjA37xtPRV4t8C7a8RHzOeWSv9tPym7OeAQhHvQF8L8h2u/ovVPw+egM8m7L43/ZxBb4+qfy25XJz4l/5O+WbSVdD3pHbflv8u/5wH58I/tDOKfz/Gbm5jV7fDpvynj3qbK7+7/Nn8sx87eU+6N7pPUW8T9JXHxxLlz2BPp8F+hSL+G/9bsqPR2q+N30Hq25XdjfDcj+zxSPWfIH0iHC8ePYK+e4xHuig/Rfunaf9Uzz/ILz9mR5fL/4h8PoSv4WMi+uqzp7/EvXvw8brys9jpXOOvGsodIf84/toGHg97sf/N7GclOruKI1vSf0vtHwEPh/fI/43f1GK3LfnnzuS3pfyz6L03+l6Q/zS+3iSfQdqf7bmq3geqwffhSeh/lD6rscdrlUv8PDZ8kfs1+D2cvhryr3J5L4T3oq+LdFfYi/z/Uv8A/XnGzX+VjJ930C9PNy7vLb0NOlujO+OjjJcyPhounffdPvAJ+Z9mPA0/gXmvaIzvvvjuD6um/6C3pfqd5ejfgv18id87PD+EvKeRz+vkeIu49BZ6f5U/Rnzop9z2/n9P/ev5+2faqaE/OUn+gC3QhY+npUd6/hx+2V9+Ad6K/8PElUraKQ/708/t+O5Ej1fzo4n4/Y3evvH/f+jvb3a4kf831o+04Md3oH85e75b3F8m3ZLcrhG3B8Kr4R3k9E96rSz/Ffy9DC+CX5NPBc/vx252p59TpH/gz2XkNkj6SvU/zn9ni0sb+d3O+HsI33mvy3te3u8S7w+EDdhb4v9R0lNhfXL/k32/RZ4ztbNOuTe0P5r/LiO3/0hvrfyN6j0PXVPo6y3ll4mHPZT7hp7GsufDtP8kuzkL/3lf/Ex8uVj7q/UnA7R3PrufyA++Vv5E9OX9cwK+Pkz/i75n2Msr8GU4j16HonckbIaPNuRfm9w2sPO/4Cnsby/6fc///9V+4uhs9nQ+/faE8+mpufJtyfkkuAGfXUri5rnSiZ8HkNd+cA/4hvwXtbcIDqa/jAOqkF999R+FrufI7/BCEVvhbxz6upHfUn5/qOcOgXXUd4h41IoczlVvF7gVva7e8/+f3yh2hN7xnnuDvheT32Pa3YGf3UN+0+hzL3I5N/Nx9LcQP231u69oJ/OvKz33qvYu99wg+Wex76/Rsa/8gdrvyu6fM07tJj0UXxXY/1Ml+oz+jhefz0T3XvztHHS1Em8OzXshfjN+LuNXw8htjvaGZH6Bnm6m94vZw/PkcLP+rqN4fYv0WcoNxv9A9r43u9hB/TXpvQbsK45Vl1838RS/B5LbUOlNadf4ZjD5ZH6vO3q/1W6HxL/UQz5T4BDYMP2v8rXxO1S5V+QPSbyW/5rnX5b/X/xXEieu4ie/o2MrelmmnnPQfzb+7iLHtfKnej8aI78eec9XT0/ll8s/hjy7FYrYHW70/M3oqpb5SHq4VPmPMh8Id4GHsK/W7O5+/XdH4+UTpb81nijQz2z0l8FJ6sv6wsvixWvs5XZ8/4ie29jpB+zjK+VP5qcP42cI+rZj3+eSdz32clne39DxXeZJYXftrafPvB/nffk4dI0vFPEb7Y6m3x709obxzDT4pfHOh9qfip7j9C/Hwgry67H/muhfh6+L5MdvB0tXlB//fbsIZWfCsbAefuaQX0/x6Tx4vXo6y28uPYic/0tff4hbdQpF3CSd9Zpdxds5yu0i3SjvX/qrn9T/sfRt6s/8WubT3hAf98j8kf6jArwDvTfK70B/47S3Uj3LpM+it+bs/nZ0Ls/8Rcn77e/i92/yx/n/f/7o+Xnav59+XtVeM/psID68Rf/vwb7sryV97+P/U2FP+CT9HYrujLcrks8v6j/Nc23Vtxb9iT/zyfs76av0D6PRe7b+5QJ2+a34ciy+b+fXt4kDMz1/pXZ/Fgf2YP/t1T+fH3Tkn53gXsoNJt8j0ddYO5vEu5r4XcHfvoKXFYrYSP5o+jgMP/8h/1n0dbL04fLv8/y78rfH16Xk/rz+dZr61+GnJ3ozz9GN/Hchj0awOdyYdTLyPIac7hI/W2VeltxHw81ZbyT/+/nrQ3Aw+70z6wB5vyP/D+Ey+Av+LsTHy/h4DP+H+L9W9ICuvFdfxZ4a0tsv8HLlb896G3rnk08F+Tuofyd4pHovRH979JwJT6Ovd5NPjqcrd7389Bcv4f8cOBT2kP8VvlaSx4P0c4L2tsdfG3o5gZ5Gw0HKNWTPe0u/Q06Zx6yL/2/UtzzjG/GyYcYV7LiRdPq79IPhM/zV124X7W4Jv8m6g3gwBdZmJ/9C19vGO6/h+wv2mPenevg8Gv/7o/d6/9/MLhsrd1L2Aah/ODquY2fXwsxTPIC/Pfjf5sxvaf8c8e1N8b2D9KH8ryF9f66e7uq5QfmrM77xfvNUoYjr6GOU/mKy///mP5lf/JD9fknui9jv5egvT96T6GEjfAv/rfM+Qn/N0PU5vEq8z7r46+Jb5t/3EncWaX8lupuh7wHtZX3qQZj1qVvQv0B9bdE1F/1b6V93J4e2+Dsu88v0dxo6Ttf+K9qfge4TlVvODo5X/l128jX7aSo9y/Onom86+cz1/yr63Zj3WbgBZn52IHqmJ16j866Mr7R7Lnr+LFk/PwT9L5D7e+SX/n0/9tMU1uU/NylfmZ9fod7B0ufjs436ziDfs+lrgfRQ9vYIuz6Pnd9KDvvitwncB07C93/o83v81dOPzkXfgdofD8do/5rwp77u/LIHvEt9FxiPH+49Ylrep7V/Hz6mi1sj0L+7/DXK3Q9v8twE+eO0vy+7aQp7stdK7KMFPh8W79tmHqBk/qM2+Q+SX818TlVYHY4l3/KFIq4SH44yPr2JPdUQH2vCeso/i76Z4Yv+7ipCWUN6rY3e3cTfn9XbGX3TybuZ8c1C6cXKPYWeZ+AF7HAz/3gEPg1biIcz1T/E8+XoZTF/n5/9afS3hjwqe/445R/TbgX5Y6XvxMdS8X4zuR9FTpkP2Qc9J3s+7xHHqL8Nurr7vy09bMc++/o/645Zh8z640LyPx4f5+mfsg9iN/XXh5s8n/W5PvzlJP1Y27x/yV9XhLIR8Er1t4DH09fh5NBL3D2YPlrJXwKz3tkZf8P0dy8qdys73w1/O9LXZezphsRl9H1BXlmnqF4oYvnMP+FnpnrbST+Q+U/lso+odP9QHfTtzX4bwpfx10xcuQ5fG8S9D8WZQex6hXbH8NdV+L006+Ps5D31Jv58Iv48w78+lp6p/IP6p/HsbjI+rlK+kXqflx6n3LfS1bXfHZ/biyOr5S9hN+eQfzn0tYWHFYrYRvkZ4mNz8s7+pexb6lOyf+kK8vke/kCOl6Gjmvoyv7wz/9wl68fi4z34yntP1mf7oO935f6AC+m3An1sNP6rmPdv+ReTbxfy6C39h/b/Zg8Zp+9FDtd5XrgsWwDvhe2UP0O/+77234On4r8xu3lVRRv1D93IdyO5/Q0vZAc9yGE6+3wTzoAr0duLXVVg95Olp+L/E/LNfEdp/OrN3stge3GosvzIdSm6DxQnIt8W+DoEHgx/Zpe1xat7xZudpN+J39DnCvI4jx30hJU9/y9YCVbI/CN7G4K/zcarWyW+sL8Cvr/Q3mPo34d+etJ3L3SMVv4k/nMibAu7oP9q7S+S3lk8rqt81pOvhrezv4r0V4u8a8Ca8Ez07c+OYo+b6XO9+j+gn7ae76EfW+75nvR1HvwXbK79L9n/3uRUuj7+m7hxIfuYCb/y3BnKtVPPybCX9peJd4/iq5z4cb7838ivE7+dxb5Hl8SXxJU62k98+cW4taP/F8Fq8l8i74bk8jD+X6DnYUUo+x5uYKcvsJPL+NUlcEXe38hvR/Y2izx6+z/jk3aev1d93dG1kH99WijiYtidfQ1XT9b7M1/RXvnsB+iW+WHYBQ5Q/xTlR9BnTeWzP6AB/XSjl1e1v4P2m9LTFp6fpb4rpJ/Tv9cUN09TvhN/KF1Pzzr7h5k/KUIZsZeth6+KgxsSN+Ff8Ax0vcgffotctPsF+oeg7wbYWD+U9ZtB/HJP2BC2Yh95P897+Wbt5P28Yfbf0sdG9ad/+w6/P8GjyOcy9LdU/4nk0039PTJ/rv7N9PQgPjL/+yq7HsV/nvX+uBn9V4tvS43fRsh/IfNL2n8Y/W+Ik43QN5797oHuCdJTyPdX46SxsCn/vUv907Q/glw38+NV9PQA/WUdNPsim+C/nXg/UvunSF+bcyboqQarwmPkf6HcKvVeJt05+0yyXxl92Ud7Hjm8yEAzX5N5nKOVvwvfc+EQ9bWUXxpvEofujv7YRSHzZ9JzyK93EcoWwl9hZfYwRnzeXCjiEezvZfzX5per2c238CXybYK+vIeXvn8fza6+pbfW0ifnfQvdNbLewJ6+xN8bnv+E334KF5PPB8YVL6F3MHvZP+d10m/wg/JwOX22L1lfyXpL25w3Yg8nqudK6fXqz37Ym+GIkv2x7+hftyeffaWfQm8v/F0Ih4lbQ7M/WboNPBW/7XP+IftatVs97We+l9+uVP8Q6froeYIdxG/jx/HfCexpK/9Xyzgq+6/ZY9ZlG9NP1m2bsIdx/t+k3oxvvkf/UPXMyzgRf9/rHyuSdxl/T/+/Nb5q4Ws76e3V34j9bql/2gJ+lHkI/f0HMP3CLO2foL4T4VJ87ctefyOP52F5/fzR5HWyeqcbZ9Qo9//Sfxx6ToAzsi9V/tHs7nJ2u0T+QPS9iJ7S/bfn4y/xYCpM/9WAf52Z+Wl+3F56tXYaso8Cv2gEq2h/a/RVh9XEk1bo+gBfZ+TckPj2ono+y/7D7Csht6uzf48/57xIzo+0R38/dnuB9vrQ94PKL6GXxfAB2F99V6J3T/T3KBTxfPVfwo9OQNc06fPRm3MlK+SfQP4/5PwFuR+g/jnSj6L7K/Jpr19YKT0s47PsX8g8VeZ52N8kdtWEXU2Bt6n/XM+9id616PuGfS3NvmDtT4Wr8VULPZlPqVooYpvs3835Efq9F16g3Yc8fwA7+oL9vZp4j96ucAEsR5+ZH/uNXz3ID/ak393Fu93gWOOTzPMP196wzB+Qa8ZHX4gvXcnnOPb4Dv6aar8hrJp5ZuXPYY+Tsk9VfH+Z/Xym/oO120n5JiX9c/rlMbBSid/VII9dcr5A/cd67jg4zfN/a3frnF9MPwh7a3+GccubsBZMf9VHug76L5FelPUF45u30DVB+6+LH7cVitiQfGZ57jHlx4k7I8ltujh7jvZn4+t92Ep9B5PjDP1LL3HrKf3MTuidzJ7Gwi/4S7ec1/T8pMyDsqPrtd+Z/Jaju6P0Dew380nvoCvzTZlfaqM/a4zP46RzHmhr8eBu9p39r6cr39mLzV5wb7i/5z5Bz9/a/Ug6/l6DPBvhs6txxFr66Of/S9DXjxzfoL/3+fMUOJK/P6n+5exsTc4zs9Pn2NdF4s1f+Omo3OPy9xevF9LvAvh75CP+tSGnbaSboP/fxh0D4BGwHf0vobcz6GmQej6RP168OBbfB+W8MPlONN57XPz4mn2vx2f2e4xkN9kPkv0fj2fdiN6uUm9H9l+fP73NLs7IOCbxln4u9XzWbfpKd+fPO8BjYPZjP6vdiYUini3/kZzz0f5k/dpw9F8j/SX+eqnvF/HuQu1nP+RGer0Pfy/Lz/n26uL2o9I5574Wf+vgGtiO/S3JPjp+e6R07HeE8cFCuAiuQ8+HOU+Nj+XSW2f/SuwcH99n3wH5V6SXcvyjCvp60v+H4kbe0371fN7PTisU8Uz21x7ulPFlzkew+1Pwl/3Bz+mP/oOu/uy2t/J7KFeNXdaX/lfWw7K/lP3Owm9r9H1eot8V0hdKX6N8ztn/CEdrf2IRyi6B3em3Qeyens4m3yvQ30L5mwpFvJhdToNXs89OOS/CjnMe8uich8PvbPY1Vn3txY/E5d21WxqfF2UfJr3OEd/6ZfzL3nM+eVze97X/B/ou8fytxgkV8TcP35XIYRPM+YcNymXfdNYNs3+6tfIX0Gc/dlFV/TPZ3ans+jT4nHoO49//dM4r+5fnkcNH9N8v64fkvQdcqn/ppPx+5PEK+ffWTxxJLmeQ62n85FSYeyzuK1lfzXrrFPx3yH0N6Mv75jX02ZX/dGLfi4pQNiLnCsi1P32PIu8B0uXw241cjpI/Tvsv0+cDhSK+mPkb9E5Q7in4gXrPI78r6S/n5Sepf1H2n/DrB8ijrucXZv4Pf2vgPPhb3h/obyE9DCSnfuo9K/cXwBH42Ef72cdVus/rRn6cfV3Z59WOfWV/1zvSs+C78Ar09SLfLelxk/i8Wv4B2d9Jn5nnmY/+nBfZgN7V4mHznD/IPS/K/1e92R+0mH98i97t+EFT5W7Lerr2vif/mdl/wx43wWvEp+gt69rZ51a6vp39snO1l320F6H3ZfyUjvu64i/rflnvy3pg1pcuZee1cw9OyTnIXfhb5uVK5+sOIJdmMPuOmpF3K/xcTY97wa/lZz0z65sXwqxvPpj4mfV/cTTr/MPYbz929xo/6sAuV4srn8Hsc8g+wH2zf4pc94ld4WNq9nOGXuPVzF+O+4dxTwt0zch+KvVMl26Z/dXs6WzYDZ8D8bcy/OFrAXlMQGcb9OS8fbnMZ9Bf9pN/nfVr6U9iJ0UoewU+BK+XP5S8P0LPF/RXPetv4tn37Kd0/mGyeDMF3qK/baO+3EtS4R/uJ2kgXT+o/A/0kXWyrJtlPW2p9HD15n6kUTD3IzViz5PJfyIcwx5Kx8Nd8LVY+kb+1dvz59Fvf/b7Gn+r7f+sR+whfwX6dqL3zGPXzjjSuOx2eCusjY7f0T9F/Y3Uk/7nO/R/USjiJ/q53M+ym/Qh9DfBc2vUP1I8uAUOpZd78L8Te2jN7h7gBzk/nv4//X1X9G+X9wvxK/uvsh8r+6/W0Vf2AZbu/9uGnw8u2UeY/YPPw5wPay6d82FD+X8t/DaAq9hXG/43Xvp+/L6PviP435HkmXupJsInvBd2ZCcTpAdrv2buaSKfzuL9juRwJ785Ev25n2uDcpNK9icfDt9B78/km307OReR/TytPX8krJv7V7S/Bf9aDM/L/FHOB+n/+qp3f/JcG//KeWV6yXxKU+Wn+X8H/78Kl6GvFvvcFl7KDjNf25q91dY/tZC+hX5Kz6sMQN/YnM+Sfgy/p3k+65Nj6Xue9h6W/ib9R+aH0LdnoYiZH/xA+kd6+wpmv8n7Jfa6VeSjvbPYw9baO5LcfsfPDHbfGf/ZT57zH5+hN+cXPxHPt5XfmT+eC7vAjdp7XX92A3qukG6Fv6XizgD2fb/48yH9NZP/DGwOjyDvg9B9Aj7q6Odyrn80P3+I3nuyzxXyV+R9j1x/yf1H/+Cf50nHT1vxx5wHuA49OR8Xff8AfyzRf+b159HHdvwt63eDjTtuhHPRexE9Zr9dTfporHz2332JnycKRezFzu7NeSzyynpc1uueQP+f/LYC+extvLdG+UuNz3JuKvs3c87kJ+V/gD9mwwS+X2Uv9bIPNffFZP8hfmqg52R675X1R3StIZ+G+OyQ+Yu8v/OD/fG/UX4ZeR6mng/kj8z9PeSReefeJfPRZfq9LeEWsKk4kPnmzEPfCjMfPZncpsDN7GOE9mex19xDeHn2X+T8G785MuNrmHXOc8SztfzjbOnjc79U1kv4den5sw7k10dcqVtyD8vU3B/i/wHiUXd03cuuKrPnfvTQif6OIe+bC0U8Wjr3blRW/1f0dYb0Ivw/rF8/C87Gz4HaK2OPPdBTxfisoP2d0fuv3LODjz/8n3vpBpXcT9dK/Reyz1boybzRssyX0OtSeHPGdTm/gO/X1P8ie5ygnh/I/1FyeQTemvk48egm+j4bfp7xrXo78avnpVfmvq8yfOW+Kenh6Mu+8uwzzzn9jux728RLdpn58uwvfIm+n1T/KbkHT/2tPJd55cwzZ375WfHiePQ+k3tIyLEZf5nFPuaU7I+dgu+M354vGb/V0X//mnU4cpsD+7GXm8hhBvtrmP3B+B5TKOKqzH+i91h2WSfzvuxzbc6rsbP+uX8CfVvDF9B3kPpyr8VX9J/78HL+6AnxJuePsn8o+4Y+L9k/lHNnOQe5AuYej//tD8x9FP7fm3x3xffZ8nM+rRJ9H8j/8p5aXXvt8LG25PxmznPm/Gb2p2df+ih6y/70WuTdlTxXw1PJ4zJyvIGcK0mvRE8T/Ob85Sb/5xxmD/49NuMl7V4TP+ZP8eOt9UPx38/p9SDYhP12zf0knjsQTsv9b/j9FP+Zn2rFHjI/lfnpn9R/unSLnHdTX3fx7WfxY2H405/vB7vB2dp9XbmX8PeDdLecD1Rf7vdoJ537PdbjK+vpGT8Pxc+/2deDnj/W8wOzPk2PV+b9W/0DxcmpRSi7HGb+Z0bmG/jrTPH/S+lp4kviZ+LmWSXx8z79/UPi973SnUrG9w//w/huLr+P/76Cn2Oz/q++FTD9ZfrHLsa7N+Y+I3LM+/9J2W+n/insMeuXu5LTKnb5DZyYe1/Zffbn5nxx7uc6k7wG42Nn/L3Kfutk/pF8Kkvvmv17+L2T/j6B68m9R+a70LEdf+ygvi709i66DkNP7+wP4M8V+HdN6V34wc/qmYeu+bCl8iPVW0W/sS2sE/vL/Knn34W5X/wd7fw74/Lc95Tzquq/BX8j4Gz1P4zuT7NPTvu18PGI8luTw478JOe5lmS+SH7epz4VP3YXH+vl/dH/Ocf0Z+6TTfxW/2T5DcTzZfw+6zCvZP9eoYjX4j/vF0+x3/s8n/MTOU/RRfkpWa+Gd6KjsfK5//aXnL8tuf/2m+yfll96/+2r9J/9gFnHeSvzcOgalXO7MPfN3JT7aNIfw9w3s077R6h/gXq3a/L/8nUVHFbCZ+6jn18o4vKS++l35g/vs4+d6bkP+WW96xeYdbCsi3VjD9vz20f0x4vzvkiv+8Ff9CNf4Kej+JJ9aWdLZ39aXfys0d53ua+X/Evva8k9LjlfnffnHcg57895nz6QPf2Y/gtORd+h4mZzuCP5/KC9qvrvT6W7aLcB+u4Uf1bAu2Bn+sm5oJwT2o3/3pL5S/a8SdzdWfpdfBfQe4jnm7C33J/0sXJ/eL4S+a+Tv5N4UigU8WZ+1pd93CL/Cv9fmH2W5LyF9DPs4oacP0LPaPTETxeyv/jnZPLri54u5Jjzue/pByqy+6/Ey1o5n6DerB8/h9670T+E/ofCPdlnrbwfay/z+eXRk/e73O+Xe/0mxe/U/wv7z/mPVfqPnP/Ieetanh8qP+PL3J97es71Zb4451HY/+fk9VniR/aH4jfzd3/T073ZT6cf3FH50vsPc97qtpJzV7mfahN5L1PPZuUm5vwwexoHC+wh6xdz2PXu5F4fPo++7EvJfQXZ1/im+i9kVzkfWpE9r0DnOfT/eeahvX98lPvN8XUUv28NO+T8Af+pp55x0pn/X4+vNtpfl/il/WvRv5z+XmFX8f/S+8lyL1nuf8r9F/PRfUPuUYo/s8fcnzVP+dyfdRV/W6ncOfQ/IONH/E8m1wf1T7m/tnrOk+f9J+vEymdfSO6xL90fcrG4OFf8v4Z970a/eZ98Tb1538z75UT5mU8tvR/1RvUOhqX3I3XmX5k368RPf836kvhe4Gdrcp+Q/C3U+yu7nC59Xd4/0bM67xNZ18j6Efs8Jes3/KUrfr7zf+Z1Ms+T+Z3c7/0I/91ROvd778Sf8p2J3JM7MvopuR/32pyH5a9ZL8768cH42SbnZ9nHLtlvKv1m3lfQ3x6emfFM9veh7w9+sQG+j99j2NuEfAcEZh1+H/Y6DH0NpU9kHy2l35E/Mef86eNe/eWNcJzxbM6rXoSe88hnJbzY/+UyX2Oc3EC83QPmvrrr+NeL0vHH3F+1Zfbx4+9vcn9KO8Py3i79NPrWi485d7qP8rkP8eHIXfkx0r+T70H8txt5nRS7oZ/P+cej+KnGTzqg71rx8CH8HEquM5S/hr9dCw9mHw9mfyJ6H8g4Fj+5/yXffcl3YC7z3Hp0VkHfwfS2Czn2xc+L7Ll0XfxheLr/F2XdVfzOuYxK6M498Nuxx9wHf4f2JpLLXtKtyKH0Pp30V5FP1r2zDr6pUMSq4v1p+ForrmQ/SLms55BL7kkvvR99M3tJP/R9Sf+T7x3l3rzpMN8/GpR9W+qriv/cf19gTxXhSfBH/Of7IvmuyICsV5DHKvpskfMimfcin1NyXlf8zX2UuX+ydD9B6fm4RfS3Nt/vyH0vnr9GPFynndmFIu6Z+8nRX8j5HHJOP1Z630D2I2WeOO/nOY9fE99z0T8eXRNg3+yzkb89ed+T+R2Y+6PHidO57zznav/3fpN7NdjNseSR7x9kP2H2GY4t2W+Y9bJrw5f2s342lr4uz70hsL/6OxeKuBe7+jc5/1jiD/GP7BuMf2Te+wH5mQ8/X37u8b7Ic7kX+4bcn0NPmTfOPQ+536GTuPgGv3g93/mQn/2Y7eBw9vA8/ZzLHnNO8DH+lHOCz9FH5r8yH5b5r4vIa1t+0ZD+y+uvct9O7uH5oeQ+nj3gGPrfhhzORN+V6N41570zn4y/2HPmwWLvse/X6ftH9byW8wTsOfuXMo9XOn+3Ifc45t4B6cEZD/n/B/9v5o83yp9NH4/DZfkeHPn1Fpf7wL7stAt5XI7u2703VyLf/ck7/W764cPhQeQ3lb09iZ6cWx6c/T1Z78r31dBXsWT/e+5Jzz7483MeSv25d7h0nJ/735uKI7kHPna+JX28iZ8tpHfP+Mj4pKXxyfHs8wR4H7vN+GK2/zO+2I99rFJvE+nm2t8L//uFzqxzZx5FPI7/xp/jv2eVzGu8DU8hj3eUz77P7APN/s/cz5118D1zXp98n2VfD6f/jx2q70j8V893aPRftXKPHvllHF46/q4lnn1m3P0fuCt+832VfE8l56ZzP+0k9j4l87SeH5d9jujN+aIG+M/5olvZb96TS9+PdyafwZnHks49mtuwq9xTVHo/0Sb2+b/7NLX/dPon8rtNe9Wls5/waOVn5dwqzPcPZ5fct/oUvufkfgbx6hDt96Xni6Snsced8L9Q/1YZPQ/gY7x2b0LPEOVHGZfnOxy5xynf32jE3xrCDuRzKDr/SjyDPehrrDhwQPZvsaPH+OEQ6Q6FIg70fEfpXdD/Brt8Db6e+3XIb2DGVbA/fEL+UexhEL9aQz6r4Qns8sjcx0c+OT94NH/NubQR5Fg+8wf082jWlfjfl/FP8fQZdDwN981+Hny3J/f7+MHm7O/N/ZTazTx25q/vlZ/vgT3FPldkfqxk30f2gWT/x9X5vljei3NOI/dN88d8dyzfIUt7Nch1Kn77Z78h+3lBfR/kXi2Y76zmu3M3w1NzL6D6rpY+VVyZk3O+OV+W9Vr/9873QBJ/sy6F7v34f77PmvNnmYfrV/KelO8l5N6Q3COS8flN/HEYe3qefpvnfBF/eBv+yV7yfY3R+pX74Q7wlozrybOWdvcnz3rksxHdudfsskIRc7/ZPujbFzaBh+PnK/4yhn2shVWMlyuwj/KwOfk+o/2sj2a/evavZ3005xPznlD6fvBEEf73fdUr8v0O9f+Z/bDwr3zvKOeB8F8z57JK9NfHc1tkvoa/b8r+83+Yn2pH/teT9xB4HRxFv1XZ0+7k2E4ceEB9iedtcj+MeF839295/k728xz9/Krcbf8w75v5z/+KryO1N5Z8B6Hv78jf+Lc2ehuTb+7bn0R+rXIPds7HkPcSuCjf20VHvtv7I/rK8JH9l7eob7J2qidNvvdlfj/3ceX9WPu5Xyn3UhzMPrIfKvcTLINL4E+5Lwk9C8jpO/G4SvaJGJ/OyTxF5jXk310o4tP4znmBnBPYQv4T/u8kTtXDz3/Z10Ps7nF8Z/26FfvdQfzdEa5Vf4G87ia/lzIeyvo+fS7hd2fQ87Lct2N804fcxhnHLZe/q3hTGyKzbDM6a+W+A/T8pNx+6H8Ef7m3Ofc45/7mxfqHuuovwDpwb/aTe3pyL0++D7A9vtryr2rS6Qezn/vxrNei59nsP5UeL/90zz8j/8nYa+4HkB4v/yryvo38t5MeqZ7sHyynfM+SfYTrxbXsd+gIsz8z+1HyHcDsr8o9+dfm3CLsbLx9Bfpi97mX6k96jv2/ga6u/PPNnPdRvkrO1ap3G/bxcfpv8ss6RPbJ5P6xSfLzPaSXcm81/xmO/zL92EHssXrub0bfr9lfQx5r2FHp9xNybn4n7T9LnjP4UZXspyffjDsyDjkJv+Pp7w/6zP0HuQ8h93PMQVcL7R8Cs5/0ceWyv730e3UFcs1+9ux3v1P+XcZj9+h3n8v93+prlP0GhSLmPrIWmT9ily2yv0g670enl/hZ7l+Kf1XRbvZdjso9MezgLnZ3d74PKw7m+4H/B/023K94nHXdedSW0/4/8IeKSjmViKSeqJCQhJDhRIhMpRChIlFIKdJAOJUhpZRKRVHGFJIoYxkqQyoSmepIIokMR4bvWr/79T5ruX/rPP+8176va+/9mfe+9v7s/XxRv+T//a3Yt4BPNirgnQcUcOQuynAE/GKfAn6yRwF7w5rwwsYFPLF2AU+A4/Ys4MADC3jaTgX8bccCboWDPF9TtoAtyhWwvfIztQr46vYFPA82094t6G+rvzvrFrCV8l/oO75SAY+Db5HDZU0KeGvFAu7h9zsqFPB1z5ei475dCziAfC4hxzV1Cvg5/AKerv8Byk/DN/Yq4Av4fxy9n+1ewHJ+r6F+H3y9p974GgXcKfRWL2AFdN9HPmvJ56cGBbznoAL2pNft8NdJu9fTa639Cvjq/gWsWKaAO2r/um0LWKr+i+QyH74QOam/W/kC1oTn0UPXhgUcjL7v0TdSvXe134T9XkHeLdA3AH/ztdcXX/OUa6lful0B94J14Jfke5P3f8Dn2dUK+A47LKWXA/DVv2YBh6C3Fn00p8c6yjOjX+1+UIIf5b/webp6e7CzOvA48rlCvbmwDxys/aboWQJnqn81Of2B7hWw4h5/rz+2cgE3wYHkXJl8h/KP3vR+PvrL4H9nfvkJ/10Nd9f+Yeofyk5Hkn8v9WuXFnAlO5y6cwFv1X9ZcmqrveXsYTj9taSvqto/lZ0dg/8f2Fd7fDViJ+vVH8Jf9mMHDbQzXf0rvN8FPbfyuyrqv0l/29J7N/7azvvdting63AMXK79s8TNN+nlDOWd0fsxfg/V7xnk1pJ9N9NvM/bajfz3hC3oazM9nUOPw/w+Bd9T4e/k0Uv73xSg5HaIzJJD6eNH+jynSgF/Uh6I3uO0V5t9vSr+z8TfKPa6Gd4N91K/rg6P4Q/Pef45ObQn7x+99zPcg/y/ZPdfxQ/YWW3Pv0PPt3AjPBt/x5LvP/VzLPxF/6dp713vPcReVqi/K3lcjd/HE6/Z9TPkcyP5POL5Fs9fr1rA5eLvNPZdT//b4Hc3fnMde7yW/m6n5w70/r32jvB7TXZyBPtpjr/ufv+MPHr8A72wOn6WqdeuaBx/V9z8FV3tyOln5R3R14Vex+PnOXK42vNe5HNUkJ1W4H+L+P9l6OzADk/kX/eSV0fl05V31f7F4lNnuEH9Yfg7jHxvRl8z5U7q91W+H77PDk7TXzn2cBB7GOH35cqPoWcjfVQnvy5+b4a/R/W/Nzs4SP+D0Hs3O7tf+03IZwZ5Pg8fpf8T8deKnhrCN8Sfv/jfinoFvFC7VdTrgP4x6u1qflNW/evU/2C3Ar4PjygtYDf0/c6f/4B/wh/Yxb34nwC3Y3+TPT+c3E5nt6ew84UJVOrtxz4HsJPdyPlD8pwjPp6Kvxvx1wtfq9ltT+VrvNednoaiq6r+DsXf9uT3tXp7so+9+Hej0gI25B9b8DGV/Cpovxy9lVeeza6i92vYwWjl6P8Ldt1Pfw/xn5Xi3yjj0bOwK3xG/Qfxcyo530W+0/0+W7xqjP+DYC/ymc4eLhd/j6eXj9F/1Q4FrEsv/4CfoK8j3EofLfcu4DT+MFz9O+G3+p+K33La+5QcGuJ/R/ZzHL0fDo+A7cj/R3Lvgd/u8EH9z9TfYPKapfwa/yxHPvHjg8Wx+PMl9PYgXMUeY39r+NeJ+DmgtIDj9TeJfMezm8nKD6hfjb6+g2XY3wn0eQeMHxX7T/yk2H96+P0w85PEhcSJxIc/yLu6+NMfn43Jtzp6GvOPg+BD6i8kj8/I7Qjttya/DuLFYHwvNg9uQP4T2PM39HoR7Awf8/wc+Bocrp++2r02cQ3ORv/x9NpJezeq343dTsbPFDgEdtH+sb4nvyG/fyoPQX8d7y2l/y/Fk5We7668nhze0M4cz79G13fseBN8m/xeIted6Oc5+vpGfxdo/xTvX8FvxmT+xa/O004V8ami91rwh+PgVu/HnzsVoGQQnAF3Zd/nofc0djMp35H4rIruKvA+esn8tbJ4eAg/7EoeP+CvHjqba2+I/qar/xY7H4neJcp3438GfX/Nb/rzo395Plr5Kfil95ppfyT/2YSOK+m7l/42iJvX0m8/WN/712h3O7in9leqdxZ6b+ZH2/LjdfleKNE+fA6eyX6vwN+9cAW8kLw6o+N62MH31iHqD6eXO+Ek2CjzO/bQktznsaN7PG/Hn9vClvznDv3NEh9fgt1hI/qdyu7e0u6ByllPWMk+5vDjD5Qb0cNa9K6BG+C7+b4k5wPEhf3h+/Q3z7j0A730gc/7/WjzijO095P6p5Dfv9DTGt4Cj8Pf++SxSjsr4eP8oLN+dtf+5XAr+3ygACU+G0pMQ0pG4PNAfrdRv6vEh/eM303x30m7jZWvw/8B7G9w9KWdd/S/RPtvk/9i5Zf4fy/29nKRHWb96Cn+8zh63iO3nfR/IXo+Zz8NlZuQX+x/AYwfxP4v4G8XE9D5madqv7z27iL3l+Cvnu+Mny7sbpJyVfb3OzkPYxcX8uM3Mn6JVx/xj4nK13l+uP6uMm60Zf/Hov9xCh0It8dHBfKaYD51sfeb8t/n0J91lKXo/ZO8j6Kfnui5Bl5Avw3pZ7X+tsDy9LCb+vsbX+7yfTASDtDvzvrrj74D0d2Q/fQ377lH+1l/PpH9r9ffsVknVt5R+yuUe7CH18jpQu2fIm4cwj6znn2S9m+lz9vg7XAi+ZVh/1vF2476eVb7kz2P//zsvfhPL3G7JzycP0+jj1lZ/8HfOvy8Tl5N2NVP8LyMT9rvqP5o9jMGtvP8Fe+fzO6nZn1A/wfo70BYhz5n0v9X7Gkqer7F/wL2e3cBSs5Ax5Ha/0hc61TqBb9XhFu0PwFdU8xX36S/Y9B3L/8YDyfAeuTdVLw9BB4M1+P/bfZ3Nvrr6Le35wfz/8TBG+gv+vxV/euUW7Kb1do7Hb1nwFfxHXlNx98ccpumPJT9fGQ+XlN82RU+qp/M325S/0r+k/nbUHobS/5D8f8rPh/X3t3s7jnzqI89/8V48IZ52Tn8oxz/bpPvKfie8X6g5+fSx2zlDsorlKvgN37ZHcZfj9D/V+iarf3x5H0o+6vDHlb5/QPl9ez9Qf1+pXw5+bfC54/624c+30TfNewx+zTfi19dtf8m/bRF11rxcbX2DqefvemhAjq2Y1/D6XGQ/g6hv53p7zVyrWQceUP5evXG4f879GwLz+V/H+rvI3w+ww6O19+r7CHj5Nsw/lmZPC7Czyvk9mnWv9nDnvi/VHkl+n8Vt3rTc8+d/05nK3o9khx7iq/fkMOv+O7MTgewh4vIrwP6l9DrB/AT8tmPfAajdyb7uEf5Q3HzLnGwETzSe5XE76vh3Kyjep59s/L4WG4caex5xs8X8Hck/g7V/7/Nd/J9+bT28n3Zgd4qZT2OXp6gvzvRexhsmfmI97dotx65ldLPXfQ5kD420s/b5hcl7OcGfO1CX53Qt8zzUfTzLT4uhrfDNfS2H7quUt5W/4P1dyO8nb0cge932cG5/OjnyIF9vSMuL4UX8c+a5P8PWAa992hvpPJZ/KEdbJs4me+z0gJ+QO4b+HFv8u9LnufQeyVx9FbP/0MO+5LzOHpqAD9iV6uUr1PeDm5Db9/n+055L/ZxCjmtIs+q7H2HrF+htzb6ZylflfkNeU3x+2By3CPf7+TRBV6u3mHkN4s/DEPPLHQcov8P6f0MeDA+8328f2kBD4SNYRX9j2a/d8Eu5D1JPzPQ24D9PKF8uvab6+8R+rkOHXPQ+w36a2t/B+U9lPuIJ/uJE9co76DdhfQ7Gl4K2/CXlvyqK75as4PO6K/Jf66ix0W+Az7xvCP9XGz8ed742Cp5HvQyQftvar83/h7I/jRcj49v6HGAessyLsM+6OnJX7/N+nQJvulnT3Kdxj4fDKo/1LztCfZ1m/JCfpnv8ouMH/k+jz1f4fvlIPz+C90ns68LxYvp6JrJDq4nr8ynxrH/6UXzq6PFg3w37170/fw9edyH/mXGm8r4O5U9tIaDks+hnSv58Wj911BOPJ9Jnzeq9yx9f0V/0Vf0dyyM/t7D79Ha3Ql9l5HfU+yjiufTYTP0bSb3Yfxqi/JI/D3q9z3EtZ3Z63zx7QPtb0XPcvRvSPxgP7vDm/3egHzvU/8o8nsPTqGXbui5IvMLWBf935uf3Jf9evW+U27Pftrr93rvL8r+Gr1ULy1gbfaxFv+P4aclPXVih9nfa8reD4EV8TlU//caP+8Qd+7iR3X1P1+8aUYvA2HWb8ey75H6b8YeqrKD1vRdXtzZCO/X//n6OwXdxfOLx9hPN3o4sbSAW7I+YLzphP6xWWcn55Xaex++6v1Znu/Cn5MPUUO5Bf6rsPuz2ev56HkM/0vx95u4nnyX5Lfsgq43yf3o8In/duzlBO8Vz4+e1f5u5hc3RM/6v4H8v+f/Gz0/Df2Z/yWPqh/9dFM+l343wDboP4meF2379/plYeaPqZf3H1Hu7Pl1/OVaOE98HcIf12n/ae0eCoew76xPZV2qPbllfWoD/8n+1zhyyv7XP+k5+/nZ78/6/J7oSZ7HXkX5Hnuwhz1hLXi655XJvx88Tf/1sn/N3pbBJUXr+cmH2cwPkieTvJnk1STP5ij2mPyakQa8cXAE7MA+eokXV2bcVc7311byvcA4156dZ392NXsqpc/D8Jn1HeGqxLSuZDCsIi5/J36tpf8j1b+HfCaKXw/Cu7z/WMY75T1gTXgefS8nn7thHXK5n3ynaKcd+U8ml7fxX5ff/OD3I4vyK1bTzyT6OAcm/6Yaflbpvxespd1D8NUUTtZ+c/LLfHAmnFE0P1zIfj+kl8/Z13z970DwyVfLOs1X+H8+34XwLPa1xntNyGUD++tEb7frdyh7GgL/BY9C3yUFKHkF3gCXZJwTL7/C/zp4DP0ln22A8sn8+eb4Mzp/z/orfp/V/5Pav5lc39F/o8yL+Evyio6G97KLGZn/wcfhn+J0WeUB8C30NEx+oXid74jDs5+A3j7k2xHWgdm/qmn87QOTTzpb/Zv4ZVnvD1Yenu9D9vgKO/0V/pZ8I/aysbSA09jXrdq7X3vj4UD670YvR5N3Te+3Rtcl+h+W9QV8v6Kdj+nvLP66TL//4C+rPS9D34dr93p0n6/9i4ybF8BORfO0J42fi8Xjhex8iufJG0keSUv0vqP9S8kn+iyf73r+9RB9r/L8afJYjP4W+C7l97unfzgp3zPwH+g9K/ld/PFQ2Mr4sjD5O+LvIu/Xz/4C+lag51ryuy9693wlf/uI/JcVzX9H+T3jWCX8L9X/ewUouRJOgOW1k8B/pvczL/5aeYv3DkLfBuXZmV+Rx44w48/96H/T+LQ/vU3IvEr95PPdhI9bYPL75vgueApW5l+V0TfGutcEeHLWufST74um6KuNjvbZL9HeH/RdQxz9LPll5Hopuibj/2z170LXOnx+BZP3+6N6W+DV4tf12S9jV3d7XiPf09kfQ9dj+HscHkjPP+n//XzfwuR7zCkt4NewXvJH6Geacb0036+Z54kfH2t/FbyXfI/z/AT0tITDYVX0zyePLX4v4W836P9i86JLYFeYfZLO5JF97+yDZ/+7A3meC8fio5n6L/DrEeRYAS7OOr749ac40izjOvv73QSpL//dHs7w3jE5r0Ju1dHxBf77Gd+GiwPXKW8kv6y/nGx8ahXUzwf6b8ae5rDrS9GXfbl56DhYuV3yQdnB7nA2Pq9AX9YbW+g365FZf1xRgP/mRVwOe8Dm5qPf6P9zcnmNfteTxyb4lvd60s8m/X3v92eUJyR/SXzanrwOwUd/9FUWP05D/6mZ/5FX8quTV72GXJNf/SR5NSavudk/198q8jmNXQ7B77fqd/X8L/bUX3834X8iPpMv24X8k//zJH7Hqvc2e+ik/+xXddDP3srd9J+87+R7Pyne7eL5kfx1Ir00V/5S/xX50Y5wo/F5J8+/Id+F7Ptb5cNyHox9tqWPm8mhN/2V5V/JN19GD2uVHxf3Ls2+F2yhvS/Fs4rix0X4vUU/2U95mB4n5/sTn/cXoOQN2BveRh67+D4/Qr+HwQb0VoHcm5YWcLb6D8euPF9OPhvxsxB/d7P78+BEdnRq9l/QWQNf5yufTH9rE9/YzxR09E1+WM59ZL8D/a0872heeiscYPx7LHlXyuuMe1/CHcg3+aoHsKvksz6rv7m+J5K3+oV+8j1/DHvJ99T+4u/X2h/F79vhY3ryD7Rf1vhcBvZjD/9Ef/LW/kGPyVs7Dv/JW5vLfpK31iL2b772Jz6moH8x+x2ov13hCHKooH45dvBHaQE/Fhezj5l99JPwu1g8W6L9E9DzG/53JJ+p8CXt/8luPsTfv8inJ3pvweeMfO95Piv6RG8DdvSc/l9H90L4GtzLe98VoGQYZOYlrbLegJ+32WvWAcfpr7cKv2n3J/FzFvmUo9ftYX303qSd2clvSx4YeTXiFz1zDon/r1b/Enq9DX0N9Ze8u/vwX007ndjPy/znTM9/I/esc+/LXrO+vSL7OuY135HLNvi/n70sQv80+hqPnsxHroJ3Fc1PmvKrQ2FbcjlG/RPJc292d4LyR8lfFNe39/4P4szrGd/RXcfzHXNOR/la8n0ged3ob4rvW+h3F/h08gPUf4Q+Luev+/PDS/Wf+DaAns9O/gT5l2Hvmb/NN78bya864e8imHzF7K8czK7W6vdh+tkDnS/o90U4H+Z8X85T/Jm80NIC5nzFF+g6gFyPpu+Lc763ACWj4Ah4QtbJtHO390uMjx/T3yR2N4Y9fK1ciXzaZJ4HX6Cn2t6fRJ/Hw5y32EA/z6LjMvHnTvb9BX/uQh+ns6sG5HM4eseSy/ni1Fjy6qr/+urVg3dgs1viAv18Kn5VUK8L/lqpV9Hv+2a/Mv6bc6Ho2S/5Mvm+Vj/nqnLOKuerxojrA/hBX+3tjf+54scr2VeCNbX/Ob5/JM+B6DsVfWP184Dn95sPTVW/ifJc7eY74zH1p6J/Ij1NSv5y0X5U9qf+Mh/L/tSv+PkMf0PZ5yr++D5/eC75y3BbdC9JXjh8h311wM8aenwq83/lxslHL8rHKV6/vgG9c+PP5FDf8+78P3mgK0sLONl7/envB/xdrzyafP9dtD9SvL8xhF3kXMZCdN9Cfu/y73eybwaPQd+p/Crnj1qQb84fXYWenvBqmPyWk30PnESvJ8LkD2f8q548PPSXoCPjXCn9TC2K05d5P99H+V46Rv0Psr+WdQTlm/Sf9YeLzSu+0U/WI57FzyT6fZA/Z53nW3r7gJ88rLyVfOtpvxF8Gr1TyGcb40cJ3BYmn/Jk9JzBro6GZbSf78+/Sgs4Ofvg6M15kt+T94f/nC+5z35nHTgA9hefq7Gb9uatK/h/Lfb8J/v4A/6VPEt21j37h/TYG3/n6v+orNOR38vi7Xmel6WH1+k759U+138P8i7llx+Rz73JX/f7O+Txqvab8J+MuxmH+9HP59pt/T++u/eiv+fwMwF9E/V7bfa3is5D5nzkJ/Q3mFxugkPg0/Sfc4snJJ+n6PziMPHs7eSLKOc8UvJSlhflpfQRH9rwu37k+R/6eCvxn3x2w2clfGbdZbl5QRn8Xa68M/mcz37eIb/zlJ8hx33oq3nyP7Ifh87d6btW8njhZfrbhL4H2d1m5UHo247fr/f7z94bl/Ob7LoTfd+Bvrr4z7mVh7LOzb/Wqb9t1ofpqYFy8pf2MY/cF/ZA/5bke5cWcI327xevk6dTwh+3gWthR/RemfOkMOctt+L/knzHJh9X/7clf4JenvX8Yu/f7vn19HmkuNE295KQzyvi4cvwZO2ckO9P+t0Btsq9FJ6vZQfZD+lrvPxAuTc5ZL/pec+zfjaIPyxBV/az31J+Sfs1sq8ae8/4JO43pa8G/Ofy7GeKB8eyn1nwrawDsddSdtJVebz6yTs5EH4Bq6r/CL+sUFrAn+l1NHo+Iv/T2FVrWIZcriaP5HP3UK8f+d2qvWGwkf6Xk8dBxvNn9HOocmft7E5+C7yffejsPz/Gvw6Dh8DF+t+Gf7USX0+B1fKdnvUWWF18Sfy8UXsH0ktX/JfF/xp+9yn8HHbXfyv6fgb/D+b73PPkteT8bVv9JL8l5+3rwpr09Tq5JC/ugZyfUD6L/vv6/T1+PS77Wdqfzq8mssOHlbPffLq4sYx8zlS+EP+/scdfYQf030O+t5vftyPPY+ETsLL3amUfkRye5G9djJcd4XPixS7Zf2F/1bz/M7lUwN9JGT/F9xOyDqR+8o+2w99B9Jv8oy3soS5cwD6r5XtJuw3hPrA/vhaId6/AuerlfpURyTsm9y25BwIf/dlPj+Q1Zl8Kv2d570HlTuQ9m3yTv3g3uxggniSfMfcd5f6j3cWv3H/0Bn7W57uOHhaiP+P1Xsk/Z28Zz1v4fdfcW+b9mdpvp53cK1V831Qb+p2jvVNzzibzH/LZSTs5dzWF/pbgdxDMeaCL8x0pbj5HHvNgY/bT3ns3iCMjch8Qeb9Pr5kfZb7ULecn9Zu80YFF8s+6241F6245X9ah6HxeK/Ez5/MW5ty/drK+OZxd/MBuc368Hfnl/PjN7O8W2CLnqz0fxS7PhlMzfut/duTHLpOHl/y7dlnP0N7+7GEr+eX8eb4Liu+TyH0PN7H/M8TjfyY/PPebaPcB+mr8P87Ph+/cr1cbfTvzg3K+72olPybrGnAKrJr8h9xnkTxR5dwDtc58aRg8Mut/5HcH+35L+VRyfBl/f7L7meh9kn/clv2vtO+9q5SfT36AePY6vJ38viSH38xfPoJb4dHoWU3fk9H9ifJ+yS8g16zfNFU/6ze/Z9/fe9mPOT/yx3/nxFvrNd2Sn8meLvP+HuhulvMJ9JX7MXJfRs7/5LxP7sPIfRk5/3NL7is54O+/z2jy93Yeynlv7z/ueQ32tkBcWcIOZ6iXfdm9xb/j+G/2Z29Db324FD+Jv7n/aQeYvKzkF68iv8T7jAehf3d0DdXvPrmvzfN8d+R7ow3++iuvJr+Mc8crZ5zL+b7X0deRff2kn2XKr6L7M/OMO9nL0ehrDo+CFdjzZwUomQJ7wRXiTn38H6e9N/C/Af3HiSsXimtrtbsl+Rns+Rf+UR+98adrxYFF4sybmYckf0D9+MmeOS9FvuOMm5/C3NeZ+zmTX5688onKd7KPgaUF3JzxInli7HGJ3//NDovPR9fI/Ag/HyYvA33rcz4+9yIk3zD2YVw4KvdwKWd99S3y+oWcJ+PjRc9zn0Tul9ji/QkZD9A7Bn6G39ae30Kum8TxpXBg1s/w/4v6bcWLrG/k3P5f/+P8fvJnWxfl0SZ/dg19DMN/7iOt6/nZ9P09vjbBJuxjx9w7ys++gsnPHEUfq4vyUZKHssTzadmv8DznS1qQe9aX/7vejL6O5i3nwubo2d/zT5W3J5+TyOczv09UPgDO9N6I+Kfx8DN8fZr1MM+vI4/s3+yb+UPyw/zeVFy4TzzJeLKUPa0k99y3k/t1TsdvzhvlPF32Y2/KvWfsPOts2d/KfL8xzDmEzP8P1n/OSTZRzjnJsuxtNP+7N/NOeI/4v760gF/Bqz0/wHg5CN9T9FMH/V3ptyY5lsVvU/VLxadO9LMN3J58DlWvHL+Zwm5aqn88v1khbs7Vb+4nXJX1dvgpfJweBhsHboI3w1r0kO/73Ks1G38v6GeQ/texm4r0+J7nrc0XTsn9b3ACPqryh3H8ZwM+HmU/bdEzTdx9CE7K+S3ynQ+fgEOy/kPPL8FpcAP+ttLvSLgS/RvVz3mRuvhrj9/sj+RerM1+fyD3WOHnSv6yiDy2I7+sn7Uz33jT81n4y/pZi9yPmXPj8N/aT/5w9qWzT5384V/R8x/4oPrr9ded/V4Oe8Dco1EGn+XR81rR/cSrC1DSBQ6H9ZOfwy/mZf6u/AL5fyI+n0ZOV+i/b/JH0fsWfkcpJ3/sVu3dBu+AD+X+Jv5d3vsX5d4G9CffoU2+K9jjWP6V/ISryfUn7Sc/4Yncl+278V5x6Lac/0veVPJNlJfr/zL+sJqfd1ceww8StxPH/10Uv3PeckAB/nsOM+cyV/veyDpc1t8u1P/B7HaB8eVV2JH+vmc3Y/jB89mvIp9PvL8aHileH0w+tfjjMHF3eO4rII/cy5x1/OLzf2ehP+fTkpeR82kVi/bfivOBN2vnNfazi/aq4T/rXtXJvxrM+tfanNtmJ7XZX8aJzKfO1v8NRfOrFtm3gsfDseiqkvuT8fem35Mf3gYfp/CffjlHQb4/5vyX+tF39Jy85MrknvzkEervqXwDuo7Ed75fP8H3Or8P1f4V7KMHu5zHLucrv4+eKd6fz17r5DsRZv8t56Zqi/fZf8u9v8vgUnh+8mXwPxs9FXz/9EH/IwUoORcOgcl/flq/nbVbvL7bu7SAOSfRPnlE2s/9Xq/BfvBD7Wf9Puv2TxWt38+hl8StJ/jJIny9wD6r+G57mz4/1P+Z5g9tYNvcN5I8s+iDfnLvQfZ/c5/3TuyqdeZxnu+qfBW8EnZKfgW6F8F67P9fyV9Ad+7vyf1Lub+nCXluyfdLaQEH5nuTPjuz16fZ0T7aP0K7043fRyqXL9ofyL7AhKL9gZzLvjn5Zeh7nvwPYw+jxbdRcELyZ9jNKv3ui46l6Mz+f/b95yln/39X/NeAn2fdW/uX8fsfjS9Xw+Hk8XjWh9hbGfrP+ctZnv/Cv3OeaH7iL3usr/96xqdN9Pshe1sJL8z9yJ4X3xece4RP8PzKrEOHX/qcl/FDf6uT1110z8VM/C+mn+L7IefSRyNxeh07qsE+2mpns3lA7p3O+PtuAUrGQOIpuUP7z+HvIHw/r3yS+u3Rk/NfF7Cf8n7vy98G5V547ezj97H0NQb+Uzstya0G/urSU/4/Qin5zcPPr7mfgd2+yz6Go6MqfB9/j3ie+1VzLj334OR8eu5Xy3zwCfzlfrX98n9MyGUvei7x/NnsH/n9nfhz1ncIvEXyluG0rOPld/yNFi+XoO887b9MHvfpZ5D28z39Hr9vqH5HdM8qOp+a86rJN+zje6E2PIx/f6l8p/azD1S8/zMC/fvzn1zgkfuPRrLX3MtVfF/XwpxrR/eVOU9OT33pozc9lbKPF/jDftk3EH/e1U7OB+e84aaMR+JE7oeoK96s11+p8k7oP1PcOIb/XpN9SfXH4XsMHA8fwV9F9pD94a+Usz/8In56+i56SXkQeo8tWnfM/Po38Wgz+ewKF9BTW/xk34y6/r/9s6XsqwN6B+TenuQhiCvTSgvYXf9Zj30YvzXI+VHlrupPzX4fe8v9SLtE/vSR+7/q0Wfu/8r4NQ5mPyn51z+xpy3waXh88ijVi19vq7wtPf5GTj/DX+Bw9Zuhvxz6fsp8jP5yvix53P2L8reH5//HsKs9q/yd/9yfWZ+8cn/mNcpZ3+wCG4pjySed6/d5OachDixF3x/42Qozj7lE/S38NefUX/B7zqeXeH8xXC8uXAOXea0HHA9v4/fJ68z8P98Dye+sYP6f//OxnfLO6p2Z+er/uJ/3QPJYwm4yjh1Mv2d7f5zxpfh+oOfJpQr7XQxP034n9t+RPVTO/yUgnxn89Xh07sL+Hsl9Zvp9V1x9LeNdzkuLY7m/OfeX5/7mJuhpB89KGf05r5vzuyvZU87v/qTfBeJs94zLvgvy/yvyfytWs9eT1D9Rf7eZZz7MDpLPMB69X5rXFN9/lPy57MNvLcqfO1P/teivFG6r/RL2fA8cB3MP6LH0sUPOHeivivYTzxLf+pBP4tsv7DH7TseT6/Y5H8k+voW5B76s573R3wfmPurcZ1+ZPZ9KbpWUV2X+zF4bkG/OwXxE/53Zaxd4MXxN/Ub8JveYV4O5x7yu7806MN+fL+ZeSv7/EyyOB6+wk6HGnyezToi+3Lc9h16Sp9RE+8nffTP3rpBz8ncTPxM378m9KOi/L/eN8OMpsVvtV2ef19LbTsqjxZfi8yk7F51TuVk7ORd1OfvJ+aj7yeEu9B7u/Rfxn++V3Ct5VdH3S3n+97U40AV2JYcXClDSHyaONsf/lewpeeQXsZfa6E0+Ufwx94Imvyj/3+3i+A/7fS3nx8ijF/xO3D5f+zmfnnWxnFPP+tiNuX8s96ZkHFR/if5yb0nuMTnM84fFw7K5l0m5oueT6KMqfib7/Vv+Pcx6Zs6/Js8j+R0jyW0R+xul/H7OBxjH8n8Xir8PMq5nXyZ5zxnfH/b7XjlXnfOe6Ck1Li8n/zb0d77nyUdJnsqyWn/nY7Lx5I7cQ+f37B/fpd1W/GwkumOv+b9r+T9sQ5Ifqf6coviTeDSWnJM3mXzO5FMmj3J8/m8Wuh9G7+2eJ29te9hZvGiQ8w0F+O+9FDlnm3O3Wb/brF7W8bJ+N0I8/Q95tlIu5/lN9Hdm9t/Zae4XWqv9/f1+rfKl+Z7kF0ONm6dmH9J4tyDrj/pdqLx/8r2UPybX1bAf/9lNuwPhBcbHJ5K/hp6ca84555xvzvn7apl3kFvO4dfXXtY96vGzCjn/jM85cAw57Cf+dGWXOb96qfIo8v1ce5vy3cJOH0L/gd6/nbxmkGfV7C/kHkx6/ZWen6KfdcnLgy30dyv7rWb8vpv+F8TuyXe08TD7Yf8Rn3vk/Lz+BsEv+Gtz7fVL/mvmR56v9/zlAvz3HqX8H5Lcn785++/wKvwOIt/ziu7v2xe9z6Iv9z58CPsmr9Tzcd7P/2Gsjo/BuSfBfKK93+fz/1ae5zx6Z+PSRXDP3N/Fv3ct+v+tTYry0YfQd/F+2sH668j/L4Bn0V/2NbLPcSe8g3ymw/w/xHXKt6hffC9E99Dj+Sn5f1ns/0flNdrL/T3jsm6Zc97a+1B7X+DvOnb1NhxIL5+Rx3/YWd+cX2IvbfA5Pvki6M7/U8r/f8z/W8r/V7qKPHOedpz56176n8hff4QHkV/+H0iN3GufvBnj1VztvcRuJrO/c8Snhrm/JPuq5NGafWzOfq/xLvOczG/WJb9bXDiI316r/Bn6NrLP5P0syHc++eX/q+X/WeX/q+W8woPo6wOzX90Lf91KCzgF3g9f0k7WNZf/j/XNW7O/B7POmfXNM7V3BqwhTvXR/kby/wZ+p5+byedR5Udg7sPI/Rc12E3Ove2i3Ibd7avfb8m/ofJp+M+58JwHv518cr74r+TVe/+97JfkfGPukyL/ITkPm/PZ/Gpb+Bg6ch9A/i9ivjM7waxT70POG8SndeSac3KnZP0FHVkXG6r//P/W7PNUUh6Z/CL2+DX735TvcfaTe+Vzz/xH7DH3y+c+t9zzlnM2+f/A+b9e+X9e+X9fP6Z94+HZ+k2cTHzM/2ks/v+NiYMvZh0FZr1gFPlm/Hw567nG0YyfTyWvBT6d8yze/17c2QQr0mPuR1tkXrEY5v7nj8kh/w8p/ycp/xepJ/5/wf92+M99GWegr5L2ci51B3gAeY6HL3u/OUw+yTjPj/L7SzD5KDmXlvu22uT/nODv41LtiEvzYX/6yX0nuTfhXuX8/76+5l+j+Fkf5e08fyP3TYobL+eeb/5XkT5GK59sfMh9iYvNH7dh/4uUJ6Pv8gKUjIXzYM5zJi91RtH/uUp+aviqxM6/L7ofYplyzi0Wn2dcwB7rae9O8j4n/k3e+T9V6zMOeP4Mvhrjfxh/Pyr6y31w4mel5KvSe212l3N8xef3hqMr5/iKz++dg+/s+/5Gv9n/zffXSHxUzz396Juec/Xizhr+9yz6ns59QOLio6UFnKh+S/zWyP6hevn/AP8r7/rqnL/IfRPiU/5v+0r0/6jfS7ST7/e9yf90/Od+oNwXdCy9/B/mS7iqeJx13Xf4ztX/B/APijSkREL5lKJEQyUlQkilIZFIqSilPZTQQijaVlrKKJKkQkpRUhFNtIi0tEt7+F3X7348u67u6/re/zyvc5/3Oee1z3mf9V5VteT/f0/tWMARsPV+BVxZuYDfbVfADtsX8IX9C3hVtQJesXMBD9lNPQ0KuNsuBdy+dgHPhlc0LOBPyv8IT1P+JO0/sUUBZ8K79i7gokYF3HXLAr6/dQEnovfS+gXcgJ/+8D64tfJDKhTwQfU/AE/Szs3qX1S+gK9rp+c+BeyN7/v3LeA50i+gvwu5XUpuvSsWcDz59Vff2h0K2LlKAa9XfrL8KXkOPf3I7+U6BaxHrmtLC7gM/UPRMxy2rlXA9+RfumsBj2cHV+9UwJnyz9+mgBfAPvAp9C/fvYB/kvf5yv1MPqfi/yl8z4LHsI/t9ijgVPLbsGcBN1P/FjUKWMbzm0uvkt+2UgFHwhvhPuQzZ/MCrpNuTn5H0v/e5Qp4KKziuV/Vv5R8NsDX4T30s4q9HQxPgE3Uvyd+t0fXdvBa5VuzqzbwCNgOvyeT653SY+oW8BHlz6CvHvCN6gWsQQ//qO93evsVVpF/EPlU2ayA78Jz2eHt7O4OuBn6h2h/Bn2toe9T0HeY/K3Y5ZZwKDt7bK8Cdme/c8j7S/8vl56Nr6fg3eTwufamofNwdE3fyvPk9hJ7byq+HAqn0fPn0nvyjxLx5zz1n1mmgPNh7La3/LJlC3hHaQFPx99V7Gkf9vAZ+S0XXx5nH32U219c+gUOl38dfc3E5yXqqcZfDtZeJ37RhpxH4H8Evq5F90jpU/D/Iv2/BBclrf3G4uPd/KadOHWr8hXQP69eAc+ntwOUP5fcFsIx8E30DCKnHuS4XPu7+n8AeZVHx37iyUj22xf/l+D/cunn1H+x+NKDvL5kr/XQdx9/uRc+AH8hv0rSleH17HV7+b3Yz6fa/cZzY7U3E9330mN/6Qbav1x8eIHdviK9kh/8xh/bksu92huEv+sLUNITToR/0MPkxAd2NUn6gcQT7T3Nf+5jZ7O0v178qMPutmEHD6T/It/4f+JB/L81vfQRN8+HO9Hf7uzpee29v20BH1R+MDtowz7qK9+InDug6wR4Ipyg/j3I7wN28yl76kme20o/h69K0kez7/fIqxy5b2M88xt+v2UHN5JnX/JYQf/LpXek7z38P0z6ZHLvDDvB29S/F/ncyW76S99G/n/5/x16/FO6l/LL/T+FfbWCn2b8hp9lcCg7eQlfvdn1MPwPhZ8o35B8DsPXftJL8HeJ9NPi6kXSM5Q/SXz8An4Oy5B/+tVD0q/Czen3Lva6BL93SjfX/kLx8Cy4ADbW/mH0fQgsR/7l8PNEAUpGspd3pQ+h74r+v4Wd9Zd+LeMn9lpbP3RKzQLG/isaP20Je8kfIn8wvqqg5zr96zT+sSu7XmZ8uYR8npdfXrtDSwvYhx4+Jt/l+oMJ/n9Duif9z1duKrnV8twt5Hsafe7PH4/gpzvx27358zJ2NwCd4/DzFLkPpLfH8TNX/c+w9wHyP5U+kFw+8P9H+J6k/qbo3xb9u6C7qvRx5PMKff0ozr0qfbZ41Bx/N7GXw6UnS/9N78PQ87j0QbEvzzeDTWHeD4ahqybcU/8ylP576y/nwithK/LpRR7L8X8yPo4l31Hiz9/s9RS4g/I76bfLSW+r3dukx9LfIeodJ327+gfT3xPizo7k3yTj+9ICVoLnsu8u5LtC3H2DPa6UXqn91drtj79j5bfQ/g76l6qwGqxHH9+T63fwJ3i3+v/QX13J//rR2xvyvxbv6iv3Cj/4lZx2oK/eMPGtC/qair+HwauNAzqyz1fJ7RX4Goz8e3q+LH+6kn9tq777xe0H4ATYnDy/Li3gOvQNIfej8Tm4ACWz4Vkw/VQj8Waj+uaiO+PP4fQyS797k/Q98l9lf621ey+9vIC/MfR1jPQ46f7SZejnN/WcjO6q8quTzxp20pR9fIfey9H/WvRMb8+r5wzx8Wr6/Vv6L/Y7zPNX4Kc3O+kr/TJ97EY/S2AF+buTR/RfQXz7UPtbqe8CeltIT2PJaz7/vgw253/j5B8LjxJP2km3yfhMfz6b3ornP/qWoF/+/dI10X9k7EX97aXbqn8sf78aPoW+Tp7fjD7zHl/8/v4Tvb7CLu6KX0iv528n0Edr8nql6P0z483Oyr0l/bl4vpZ91vb/RngA/z6d33aHI+U/Jj3Pc++wq+7y3xfv99HORvpfhr8O+r0T4KH8+wZ2tVz/1Ql9R8HX6aei9psYR1TIeF75WeT9JCyW/57o+hxdG7S3Gb/5mb1NV+/hiW/0sEL5C/U7tfI+I709u9zbuKkvPjsW6bdz0ftBNfRNYA/DtT8MNsJ/A/SlX2xY1D9WJpcjjFtOpp9m6l/Hr5rpd+bTY5mMP/L+otxS9G2N/qfEg5PpeR3saLzzHjmOIIex5FNLfZeRZ+dSfCrXRzvXqv8TfF0nvYq87hY/puDnbfXPIJ8V5LeXeqeLYxvI527j9/vhcPQ8LD/vx3nfuRdd32vvUc8fCp8g71Hyi+cL+0ufLH8I+o73fzd4FPnPEU9W4rczOvbA3/fk8aRybehzvvqPKi3gYPS1k35EvQdmvE+++0lP0f508fBRWBF/h9D/WvL/nj+cp1wf9LUVl35A92j9zeme6ybu92Un3aVXob+s/8fwz0f1J7XyPov/Eezuyvgje56k3/sQnZMzXsr8NHuogs5R+Jyg/Sbk2pF8ToR3kt8Mcf0BdjcBfqn+0eLJGLgMjpc/qLSAtxWgZDV+Bvv/ZXJdCqfqv28jvyuV66C+R6Rfkn8bue+OnzvY73L6WSMuJS6mn9rIXstKP85/G+FvnXqG66/biGvbeb6x9tJvp79Of/4y+0n/nf46/ffivD+zh1fZwb7SB2T8Tp7HsofIux557YTOpp7/gT8/IH0De/hTuS3hX+S5QL0vwFXy09/vzh62pLetYMYbi4vWH7IeUSb+zO7uRU8D9H6h/B/suiq9d2ffg5WbzZ9mKf8XfZ9Jfi3Jc1t8tpDex/M9pGvCSnCQ/Ero+Srj3czfoO9b/vIVf6sifQ762vOf29lTDfbQHX3NyesE+JB6yql/BXsaSO9zyP8L9tJOv3YPP/6IfHvKnyVeLVNvqX5gofxp+rvd0L0rXIjfifrxIbArrK58PfZ8CDoaw2vQ37vovfRl+DZ5NCXvlfyor/ynlL8VX2eie5N0xvl1+W892AG+yP7Lqr+d99B/5H+O/tO0Nwg+Cd/X/mfs9kr2ekT6K+1vq9/cjJy3Jv+/En/IvR65DqT/zuirzH7PKOrv0r919P59mvZ/JLdt0TdVe6tL8Ymemeo/W7waBKvBH/nJ++jpg8/z4Bj0lJDbPuLbTXAGOnamt5rwPfUvQF8f9VeF52e9N/Nv+qXB7Hqk8mP5T1nPr8LfIvqfqf6a7GJo1onQvyf+LhIv+osjF0pf6fn7tTdCfH0VHx81/G97aX92jf+2/5n8T+Fj4sWb7OMm8rsZDocn0ucnnn9We+PEl2cTr/nTmRlfkceB6p9KfieKj3vgp5v6V/t/EL19KL298nXI7yL17y79QuYv2O3+8r9jVxkfPWU80sL4ZAX8ih3/yS9W4u8O9A+g//b4T3/7Bcz7SU9xcYg4eo70zerbD19f4LcC/hLfl4ifJ9FrF/n386sD+V/W6+/2/+Xan6P8APG3Bcz8z1PiSQv941v6md8yXhZf/+GXu9Nn1mfiR9drf2/0XK7+g0sL2Bg+qp4enq+m/lmZv/N/HfS/xi4z7n4k7yvy96ev6fAt8W8v9jGI3G6A18Md5H/GHgaiewm+B2b+gn0+TE89tXs2vLNofr4lPjI/P5M93oW+fuhvqf7f2NdI+YvZ6Th0NeBvjeB4WF39TcXns9Vb3P+VyC8Dy8L9wqd4MFX6GunH8HNAxu/6oYOkS9C/v/oawCuVX8MubmJf08ivn/IbyG87/nNB1sPZ7+is/4gnTbJ/Al1zpGeXFjDv3x3ZSeZHptHfdPgef9hET5Pobyfl9+Ef7ci3N30chb9j4AvoHqre8pn/gpehfwF9lWQdVLoW+mqpfwa8h/xuln+R8ck30sfnfQJ923u+Njvbix4Xer42uz4o69ni2o3o24deMy97jDiQefI+yH8D/gg7KN+LP9djfz34c2f58/RX39L/ang/+U/l35+z2x9LC7gVPi/H30Zx5+7sk0BfK/q7mHyPxU9l5Zfzq5fE+Qrkthh+gL5z4fvwEfbQJPEOPzXp/YxG/+W7prhTA34OX/V8q4yn2fMTmf8ljxJYFlbFXznyffl/vD/eqj/60XhgnXjyNHqf9n838l1FnsvZQw/pjE8zXt2XnXxK3qv8/4n06Xk/kT5BPS2kz2N/x5UW8AZ+c7H0luT7Er0thPP4U3v1/+757J8Zlnlu8sv8WiX0DWd/mV+7lP8MIb8j1fOO/Gfxva96npM+gL560v9FGcfAReRzN7r3YWfnsLOXpa83bjuBXT1JnyXSF3uuFE5Qvpd++DP+24s9nENuQ/Exh73Mhc/BZfR7C/s4MuPtrAdIP1RawBrkN4X+JpBXe/JoSX+t4HfkU8P7/7v8cHPt38o+l2lvOXwdXqz8Fuwy+6KK90vdxh5uhWeSTw3yaqLcg+i9ir7fwN/H+LqVvMvhJ+vaG8S9r+Ae4vN5/HcteayBH8P1Wf8pQMmpcBQ8B12HsMdeyl0jzg+nn2vRMxvf77GPk8lnD/LZC197S79HPq3Fk4GeXwyfZt/T8z4nLrTW7jfob8We31CuG/3+rv7n9ddd2PkpcHXmj9GzQD3F+2vL4fv1vA8lrf3Mt6+hj9XZB0T+Jer9g91sghfio1Ld/9aXdsai7zH0z4XT4SXks6G0gPPIp3PGa+rfxnjkrswHij+vaO+b7I/J+MHz89R/EX+oZBx0ifTmymXcl3HgbdIZ/yW+jIc38bPF7GtP7f2C3m74L5P1LPrvJw70hxM9P994aK7n71LvRvLLfGST8Ck9V/4d4tTJxtVN9E8NyGcx+nYgn/3Q93Xeb+g7/dnl5HuX+n8u9Rw/bs6fnpA/g7+0Fb8PYX+L8fOL+rbX/tP8ZXrW48hzOrqLx/PfsK855FWXHOZmHj/r3spNFA+7kmNTces5+n8WNlb/g+zhe3Y5Hr6c/a/GM0+Tc+b56uK/MX96O+/V2a+k/rr8uSs7eBXOzz5gdL5FLx3xe2XWl8h1bcaZ2vmBXOM/8ZsV4lv8Z39yeTL7quGZ2psvnbhSkv2NypegZ4L2OmRcjP8RHpsHu8Nl6q8qXhyE7hXqyf7mjezhAvL6Sn5v9d/IP/rRU2Xj42PkX554jv9Xtfem+g7Wbl/0xO6+Y+/r9DfL2MlofrQLO/ua3q8gp6+kK5NPP/3CXeqfRp/H5/1bfM1+1ux3fQn/WTeaIs4+S/6Zv/6V3rvi85SsM8m/x/8T8D1F+RHys+6S9ZZPss6X9w/2mn11v2sv++vOp5/u5HZT3tuUf7u0gKPQcT0+upLfK/SyvbiwHaxmPPWb/A/oo3j+N/ul6/l/ied2Q19rcaM/vz6Yve/puff530p4gfreQf/B+D4EHgATX7YSP8d5/ix8pf+apb4Dso+D/A+Wn/FPP+PQjIMy/hnKrqay8wX4mJP99ehZpn8aT5+T6PMA/J/GbnuR20nora/8UPrbSL/fk89XRevea0oLeGf2Z/L/rH9lPSzrXy35w+FZH4H/ZH6TvtfDT+EVeZ/W3lP4yz64C9U/jF3dmP39sJf8vfTXj8Nb4X7kQ+wlH5E3+Hf/SRNyP4DdTNX+c1kfEI/Oyjog+8/8wo5Z92ZfVaX7qf9oemmmncMzvlXPnfRzIzt5LXaeeS5yKUNun+FrsPan8M+P8n4rf6D2d80+DPEz++HW02/296xWfrL6rlH+W/Jen3NU2WeR99vMx8KsB9RF/zs5r6O+fvypMf3dg//xcCI8N+trsW94PDkeg/6ryTP7+C/X/2f9Z2dx8XjyfaS0gEcovxt5z838nfTh8ocWrT9ln2T2R2b9olH2maMj6xfH5b2YHm+Gd5BLHf6+hJ6Wwvr0McXzp/Lbh6X/VH4z9GwO18Hr8Zn377x376Bc3r+/1x/9pl9tQ85t2ful9F+d/V2Ors7KN2QXx2Udtkh/i4wrxuBzkX52quezfy775bJ/7s7s71auGbkOFV/Wpz/yfxXyvpY+XlF+M+mF2d+Onux7/gk912QcmfNv9H8x+g5MvEVf4nsXes+6fzlxJOsRJeJRd/3cyeLsFsp/qt3Psk7m/1Mz/6n+d9T/JHlchP5K9LszfZ0hDjVJHCWvC+BF8CH1L2BPictTSguY+Y7v8J1xX8aBGf9lX3H2p1aD2Z96JHkeis/sV83+1OyP+gL927GLa5Vfpb0P816dc5DZPyyeZN0i6xhZv+jLPnNeNOdHa6jnQPI6Ft/tYdZLs651AbwQ3pr9zfRzpvi6lJ5qkl8D7ws/ZD+d5zPevzLjNXgOekbn/U17eU9tUvR+Opv9zoVPw4bKn8Af26v3Cun62Y+t/rHkv458ZsufwZ7Pwcdg9d/k+UY5T4OvrcSv6pkHZ28L4Ivw/sQv5crBZ9hbQ/lT2Ptd/PgOOI9+DtJ+Ff8/yM/ny2/u/1PxcRX9LM/+C3LZmfxrwcPlP0mvQ9nxPOm90DcBvQ+T9wfsMe+/nfl1JzgN/2fzn4X87if9z2J4qvyV4kZ5et8t+7P1s58Z4AziV2Wl55DbhNIC9obd+Gdf9d+S80/ZV63+ttK/a+eLrJdJ12Qf2Q/2FOwJJ5LLAP3pWvZwnXR98vqOvFvz0w3So9j3XexpK/XeKX2+8tVz7opedpR+n/4/U+86uBYOx8/96j2I/W0jfRn+zhMfzyHXYw0g12RfEXu6gByHkt8muJoeHqKfrONn/f4C+h2U9y/+tzTjc/Fxged7kOPqrA8q/1GpNDwj54PQl3WxjGMnZv2fPM9DV4ecx878Zvordlo8P9yOvI+ErdTzhvwTpcugo4N0+pUR5NaevFpKt9Pe+eTdgLw/4d+7+v8J+Cb/rOG5Tp57Qv+d94oZ5Jb3i/v4/z3wXvgj+R/GXpvBXeXvKn6fxW4OQvcT8B/2WwG/FeEW8Dj1n4vObcSn9zN/j859xbel8veXvkD72R8+mhzGS2d/+LXsd2rW/UsLOCn+yL4yfviWXjJ+WMx+v2I/C9jHI+ifZNz4ofKveD77jxbrv7Nuv4f2Nqh/OvqOJd9j+EEd5W8kr2a5TyHzdNIn5byx+kayz3nSL+Y8OfuoQL5voXcfz1fJ/l/pt/G3ltw3oKMBOWT9dS16tqGP7NeeSX9b0sut9DJAegQ55zzTTrA6bKG+59nXp/y5vva3yfxYzlXC0fzmN/ZXB1/r0HO0/BtyvoE+sp9rkHY6yh9vfNkRvcPQ9XbGp+T/lrg1SDzKfRXZF5DzE8X7A0ax/9HwDP3OH9rJ/GDb7BfKuTX8b1RuObn/JD0evd/pT4/Ed1t4t/xH1NcC/0ew18hjBHuo5f3rcH70pXJ/iVtXobun9ProSby4np3/QV6X0M9o/dEv5DbRcwvkF68XXC39F/474vu4nF+DWY+on/EKHAnfzfqf8d9G+uuaeX562z3rg+TYTf632d8t3j0AZ+E/49PLxIdKOccjfo1EX/F56pxTuQ9/B/K/g+BA/tA355By/0Lee+CZ6p/JfrfxfM5lrMj6mfoyX5j5w+cTv/Czg/yu7ONw+fPxXQ3O8Xzmj/fI/qfMP6dfyvqlcp8q92DG+eqfx/5r0Ed1cppN/jtK15T/rOfnyJ/FPg7OPjP83it/Dfl9nH3XpQXM+YaqRfPObcnziOwvZL9l2e+Zyn9Avplfy/pD5tkyv/at8VbGCSdkHIK+r8hxP+1VyP7I3G9AnjnX3V199ZXrRJ7zMk9Lzs9Ij6v03/avqvDf9g/B/0x+mXMqL2Y/t3hwADwQXkjfM7V3IDpeg9l/1l19Ncm/BnxA+/fzh1viF3CB9t9W3+faOVz6LHaR+4pep/fcZ5T7izKfn/n91t5fMr8/AN8D4RL6/oh9HM4uZmUdG/3nq68ifWwBt4Sv0d9Nyt2inmHSddC/Cb2HiVv/SE9Cf+uc1yH3a7N/IvsZjf+yn64PurfU/nD01sn5WnxmPnQlez2O/e7CnjPfWhZ+C3fV3inqn82uHtb+P1v8l/8j6LOu+ttIL0Vn3Zx/83996cmZJ6PvA2Dx/UBXks99cDncX/nL9GvZh36p9ET8NGJX3dT/MvkM2fe/9Lbe+r/8hP4j+dPW9HcK+Q1n3zONi8oX7QPbQ/zOvRJN1XMYzP0SY8k7+0Gih8i/Crrnwmfx01X9s/J+Cx+Df5PPfPRlvJbx2yz1R2+PsJOHYd7Pcn9JzsutKRoPzYnfoH+p/xeoP/svK+Ar6+j/rmOKY7XlF58/r6Y/3L60gJVh7r96B39j4PDogXwSN38mt9hD9N9B3G8nLuT+munoOTHn+RPXpT8lzzH0e4b8HnlfQn/OK14Dc55xz4xf0PM1zPpdxiVn5/wrPfWUrip+rNdeHfwXnxfK+dbP1Pez/E34KOGPX5PXWOkX0b9/zrmKq03o7V16bpVzceT3Lj+snvPI7L0NPBrmfNKB+OqR+znQtZX6/1T/Oer9Q/p3+aehq7/2Mi5tT7+JKzNg7iN7Pe8T7PcxceEX9vaKeuah7xNxYQO5Pic/793d1LOeva3mLxv5913ofSTrPpnfVy7zTP3hUvp4wHrIQNgDjs/9Z8YzFdnjQnx1j32LhyeIC39Id8n+D/QdG38xPpmU+Wn1Nst+G8/n/N5ruc9Mfs7x5fze0exzM/3mDbmfBP3l6PsKdlFG+mj1ZL27evZvF61/H8EfKhoH1aavqsp3pq9X6L2b51fgN/fu5R6+4dnHjL7s27i6aP/GcnL6iT1eJo6cSM+Vye9sfrFHzqkWoKS3/zvh9+6i/fnd2c/m6s15nazH5/6chvw773fv8e+831VU/nn+swD+Rp6PK7dLzg3Bi8gv61PDYNansl51Fr/tQb7rMw9JP5P5Rwv8T5K+RPvF91U9g76u7His/PsKULIR5pz/wfQ9smicOV7993j+DPgcrI7+TeTVhRxnSC/kp8vEje/F5xfhJ+zjYHp5hNz2Rnf6wwdzf1Tu98x4kXzX+b+B564oLeDx6EvczPnO4vh5Hvs+H/aBTyuf+dPx9JZ51Myf/px7FvCT8/057z9V//2Y9N/kclbR/QGfwLUw76vPFMWtgUXxqxd77gk7wcboGo3+I/DVMuNn+dn/WRNeTP5D8HdZaQH/4m9z2d9enmvAvq6j9wPZ4VXkfaL8Nfj+uPZ/y++s3pqwFrxQ+ez/OIb910NP9n+U8L9hOT/L/rcnv1b4X8v/KtPfMPXvLf/29KPsf6b8efzxUf75qHSfnL/UXs5t3ofev4riQy39zHmeW0T/OVe6nbi6KefJ8ddE3GyTe8SkJ9H/m+pvTe5vSI9hb9kXlv2oxfvD9mFvr9LTZujvnfVA7X5StE8u8xsj2FFdz3dk7+eiP/soRmb/kfyP2Vc9cehJ7T5Hbtsq/5H4nnNQjYvOP70lfW7WMWA58jmSvtvEb+l7mfrXi0dzsm8o58Ay3s9+/Zw7IN+F+M1+1ozLM07P+HwjerrhY7p+/Cdye1j+SbmXBp1/k0MN5abm/kL2cTX+Xyq61/FF6YboyHxvdXxcRs+Z/03cTz9wc+7vw19V+q4Cz0JP1umnikfvwJPg6fIPU89JcC0/yP2LXTx/O1wEc/9m9JXzKdFn9HcKfrrCduwo+6WzrpR1ppfoMetLWU8aQK5ZZ/p33Ul+C3KpmPcH+n0Ifd/rH7pqL/f95t6Vr0oLWHz/SvZrdcv7bs4T0H/2Y50qP/u1sj9regFKbobpp9M/H5l2yaWt9C3sp7x4ex99PUKOX8vfE985R1Z8fmynonmrzGOdjr/njG9zbib7SnJ+plQ8/UX+OvJtKL9f7huBV8M+5FGNXdZVvjw9zML/cva0NdwGli0t4GB2/zh8Gs5TvmnW9ej1fulp+Gju/4b+XwTTX41B70xYRv+7hvxa5Tw4+ZbCvJfvpV+bQ097S49i/++Iy7XJ4e2sl+XeGO2NJudh5Hsb/6hJPx3Is63/12X/I/vL+l3W87J+dzB+T9Je9hGcxT5fY0/ZH/1Y9vtqrxW6Mi9ct2h++G3lJ+b+oqL9BM3Y9cXSXfj1SexhNvrGw4/o6/Ui/8t83odF/veRdOYDi/2vNvrqwIb0/qf6r+Av7ei/LTxF+QHofxBfvyr/i/Ze0D+Xp/ct4Kv0cZ10O+O+Ibn/mn2U1952cPPsX498PD8n83+lBeyb+XP+UCX32hbNn2wkz9nwNHKeTE5/seMP6fls9v0n/vp4/kV4sHpG4+cMcfkCuE78fxf9VY0fXiS/5+Db8o9B97Hw1uxjhrl3Zjf2lXng3D9zFnpb4KOM9In0lnttMk+8ouh+m0a5F1e/mXn29vJ3UP7d7M/F3w2e2zz7P0sLeBrsnnUR5X/XD30l/pWwr+P4W+5xKb6/5WN03UMfXbIfJufHVPchvrOfOvunM587Nf1z+lP1Z34l8yoP5Zxhzsfj+9H/cf62N/3MZQ/blBZwbc6Z4b+9do/NfeLaS/+0VNyvmPFJ5Mu+/1Au8zTPw9aJJ+rJPM0L8ALyy3ckZsGj8Dku95HATuS7SLzKuaOcQ/qx6PzRUvF5Z+11Um/O17am10XZr5hzyMq/RP6faG9U/FJ9mXcZwY9uhpl/+ZLftcXnVzmfoHzu78q9XVmvPS3jPv54mn4j+zSyP6Olci+T28W570T9CxncbezvOvjv+jn6R8FPxcMB2T9D3gPZyT7StbW/wv875X5Z2JL85rHrzT1XPvMk2V+VcSW8UPyalXtsyGGM+nJf4VjpzzPehtm3lvH9ofg/jJ4nwRrksII+VsL76GnvzP/jtyrcEeb+pNPoL/t2KucemKxvsJfq2V/DHo+QPyf+zm6L32emoHNfeF/GNfRbjn1eq59bnPM6/Pt0fj8jei1AyXTpmhnvk0vus8z9ld/R39n4LBEf+5P/zeidQy5vwj8yftXOm7nfEWZ9JOtJvei/MqyH/mWlBVwOV4onjbM+bLzUiNxznifneHIuPffA5v7XyvSS++Czn7wcvkuldzW+bMoPc59C7k94MfdrZ90Gfafn/JHyf8P69HUd+mrS6wf0uitsha/0j+3Jufh+1/S/GVcNlc79svlew+sw33HIdx0m02/up+4q/qzMOUX2+T2/mGwcck32j+B7x5zPzLiDfk7N+BW+k/O9ef/M/jL83Vi0Py3fOTiTPbWx3rKn/Iw7cg/eYO1k/NGA3a76H+OLOtnvjb9qObef89Ul6s88hnSjPFeqHu3eLp3x66Tc5wknF83TbuJPf8N/YD305bsv+Q7MD1lfxMdF+uNhOa+l3DO5/4fdjfL+M4l+ck/fsdnfAZ9hH5kf+FVcyfnrnMf+Qf1D6C/nSbYm74wPl5LvG7Ajv+givx+5nZ5zlvHvovNnOXf2Ocz4qZr2q8KR5Hdp3jO0e5e4NBo+gI5JWd8uWgedw06raHhMznkjaJT8hvqdVfrd93J+Keur4kv2iy7Rbr6Pc6H8KfJHK9eW/J/RL8+F7clnsPy59Lsi6xfSperLvYFziu4NzP3fZ6nvI3HsDOnzPHe1fuhPz+c869SsX7CL/cS1BdIDtb9jzquzl4/xvSL2pb1p/OvR7Kcih1vZx86lBVwPJ8v/d11BvTlXOLHIPzt5Pyt+v5yU/bb0eIz+o438PfhLBfa5NOektZ/zgK+x+ylF9+NnfijzQhWkMz/0Xu51yfs4eY0j37H4uxqOgRer/6CM/9h1F3Rn/90G7Y1D75fS2+Z+GnQ3Vr65dDP09KKfnDPtALP/O/1P4m36ofQ///Zf/k/cTf81nP/VhW/yv9x/lvfO9vCYovfQzC8PhCPpaz4/m0kfX+i3cs/fBPZcUbnvcz+y9B3Z/2y8kvXShdKJ/5Pp9cecb4AZ73wjTr9edP9uefRfRu6t4MWJU+yiY9bz2d/4UvXiY5ciuUWOl2W/DP4/yXccyOFh+mgZurIPNt83Y0c38ptvyWUieo6W/zN7Kb4/KPd+dKP/GllXls78dnny2zzfWck+ydxvyd+ezXq05zuyvzf4wztwZebDsl7m/7wfHYPee+nvB/3DW57PeLZF7gcQT3O/2WMw95vVYRe75x5XOAq9OQ+T+28rFZ2PyX3Bx5FL7mnO/cy/6Xe2F5+6on8M+e0o/w52d6301uz7ltxrRW9r+XMl9N2B369z3xfsCZ9VX9l8b0Z6Ffqjj+gn8yrRT+41vzn7PrNemfiMnqX4WZ57Gsk396u/mX3p0rlf/UHvUxm3jfGenPHbQnKN/93EPoai88K8P8An2EsH8puL33yXsPh7hf+gfxNsxg+GyJ/O7nZW7jHpG3NeIOf/2MWvWXdCf85n/a/33E3klXsu8x2y3G85Ef/3Sj+Ez7XklfMNWefaTTrrW0eIY19nHij7RtCX/VLLcs6maP/Uzvia7//dpHMf4J3oXwhvz3187GkZevrlnDR7foL+PkLXH/J3Nv7YSf7u7G6R5/K9wauy70C82Tb9vPIfom8Qe3nBOGEB//tAfi1y2xnuAh9Xf74nlO+p5rxHvi+0uAAlD8Ae8KaMZ9jtS+TXLPuNlM+9ZheR2w7oX0Tf9djDOPFhCfxd/Y+S5/R8p6fo/oV3sy+cHe5PHrkfo07mBeh1d+m/9C/5/tM8/7fMOWb6mcivJ8EttddJ/gn8O/dvjMy+KPznvqzcn9XZ87k/64+cC4T53t3vOZfNP3KOonj9J/cO3J7v1LKXG9S/lN1sKi3gF56frfwA8noS/0/k/gX07kge1WDugf9e/XuT6x3sr2HmlzO/wJ7+hpvgoRkH4nt+vmsFm6v/MfYzlbz74jPfJ6yY7xXh+zj+syjt6z/SP6S/GKT9acazuQ+6tXK55/Mn8sn3Eaazs3y/IfvV67OP7GfP/vVK2a+QfSjqOSfzc+huCWvD1fqJCfivRB8tjUMy/pvh+Wn84jr6zftbaQFK/F3yJbw847jsmyPX1/Oexf5y72DuG8x9hLWyvz/fG4VbiHNv4z/njPPdrR3II+uHWdc+THvF+89ynijni5qjO+eLluZ8EL85FC7F/2T6yvff8j24fP/tTHIbR0BZJ/uJfK/CR3P01s19Efhvhr4l/OMX9V+E/vXs6yf+9mPOlSq/Ufpn+FnWY+U3zb0bOb9BTvn+1enknvtdc99r7nfdC1335J6rrIPEv7JvBd5LX1eRby3xpmbGCXAxedyN3x3Ufw09Han9W9R3m3Zvga3wc20BSqbAXnBJ7uVR3xlZ/0LnQ8rne8iDtFNZOt9HLt6vk3vCcj/YXHF1DpwNF2a9LOuTOfdedL9G7vd+DV3HkVvu977HeGg8vDf3FaJnNb2tgfHDiei73fMf5Du25NAq8xfscbnnh+def/z3RF+17GPhB6d6/vd8vzTjefb1LPvIZ43jp9mP0lj5UfytO7/P/fddtT+cPeY7TLmvLPeTDfB87skuvh87551y/undovNPv5UWMOfVc34933+ewv/PJ4c+cDQ+u2RfvPay33uc9Ne5bz3nfeFA+s++4NpwHXr+8VzuMzgAHZuz/w2ZVyk6V5hzhtl/NzjnKf7HPTIZp+S7g/kOYe6fz7xV7nUvvp/2n5w/QW/WJaep7/i8j6B/GNyN/f0fvUCyvHicdd159NdT/gfwrxYVWpQSWr4iS5tUaKEYVFJiyNZiabVExIixMxiUkCVF2bKlhSlKCaEUUmkf2aMkZRsh/c75fR5P58znnPn+8zz3e9/33tf+vu97X/d+tuxT8v9/Z9Yp4C31CjisSQHPrVrACRUK2K96Aa9Wv7hhAe9QHtS4gC82K2Cd8gX8d7kCHlCrgH/3/E3qq8H5npt5QAF393wt2G5f/Wt/TpUCfl6pgH2Vlxm/1h4FnF23gHPgUvV771jAfSsX8JkaBVyrfgZ+/6L/I+Gv6PuyfgH7wU/3LOC2gwvYe6cC9tTPWcq/HFjAF4z7PHx21wJ2wt/H6L0EDoXryLmD8hbjbqDHD7Q/S7+n7lzAivAz7Zuj5yDYDJ6q/SnsoabyicoXtijgXp6vA5v6/5nwS/T0bVDAJ5oXcLr610oLOAfeQ46fe+6nvfCJv+bwZfL7+24FfMv4N9DfSPKvaPwq7PxW40zFz9QClGwoU8CryxawSdMCxn6+Ypfnwpr+/xl7qKDdjfqJPVZh17/SU0ftX9y9gH/F39WwTc0CHsn+lqK7AfmNC1/k9z6/OEb/H2h3sfrp+psGD6pdwGMPKmBd415Frwf6/+/G2Z2d9CePhfsV8Hb9L1Dup7625+9Qv5he9grf5FEfdhFXLmSnF8BzjX8dulbQ1/XKo/X/tPg0qVoBT2pUwAmxP3poptyGfHqlPXuZDl+CfzFeS/JtBVvA4exz3Q4F/Bu8DU5TX720gLXI+XPl08npefFqEhxQsYCbyHOeOPNPfM0j7wH674i/R8nhTO2GkF8zcp4izv3ITt9XP489vAXfhg+jr5pyVdgdvk+Oe7HPPeCesDU72oN/ziPXt2AJ/90J31+ykya7FPBm4z/l/dITX13j9/rvptxL/QTPX61+mv7moPcr9vYR/p/irxPI5TR4ObpuIb+F/OtWdnyY/5+3fwHvp59txvnE+Hfjf7v4f5z4frfnrkbfLPyvgWdrP5hd/4tdtFS+yXiT0fki/V8IF7DfFwpQsgxeAtuoL5N4o9/28HHyvJ691xd/motbi9nfWca/GfaBJ/KvGuL16eJ6HfbzhvY3qr8dPUuVn6SfJ8njAnK6EA4gn9fos5z2N5JzLeMPQG9/eFIpfsjvCvreCz7OHlrpd0EBSv4On4ZPsc9p+v2dfbwO29HvOv3E7qYX2eOQ+J331A+wF/53Q8988j8Bnb/6f0fYaO8CzqDPfTx3Pr/fj92WZbdr2OE/0XMHvA0+RT677Pff/FzP346hv93NJ+qK23XgCvp5G32l6BkCq+nnMvaS98sl/OVl/c8iz9fElbxnXlL/qPhYgs71/n8x+d2H34fwvwqup783yfs5/bZl7+u0byBeTUDnpeTW1jjPen4tfiuzh+fUr6ffVfS3Qbkh+TbyXriU3c/zfttOPvfQ6xTzjRfgYeitQF5/kOsJ+P0EnyWJa+RXjz4u8v9j6TvvvVb6W0ffjxhvPLyAvA7D3/HkspP2XZR/Txwkj/H4WqvcgbyO8P56lt2cCAeT/7HkcmUpOjPP1v4d8pkPv4KDyOcO/DzF/2bAA8WL3/FTjp2Vge9q3039CbA9Ob7FfsrqryIsA/fUvhV9rKSPR+GR2k/H76Hi+83KjfF/i/h3K/xGfC6rvhG5NiLvPdBfN/Mn8XCy9l3J42TPvwAXw4n8qQb5tmMnd5P7Ueznt6I4mfj5hP+39P+b8fsbHM9fxsGr8T2cPFbwr8yfDuYn35LnRvRtV38Le7qdfw0jj5vVrzQfGKbcSfv3lHuJl+XQXR8fFydOiZ9Ho6u357qq30xfp6NvjPLb+v+YX7xCb58of+H5N72v34LdjXcP/2+qXT+4kr/sTr8j+O9dcCQcQ3+30tujsCz/6Jr3k7i5xvP9jXs5+rsY9zh4Gv529X5dSH49yH+GePa6frrR37v6+8A4r2u/o/7ewc8R6vN90YPfHe7/8z2X74vK7Lku+2nF3jt7fhi5dqS/fbyvrkNXF/7yM7rr42e++or8ty58nh3fQn9HsIMD4Hvs4x/q64gXy+Dh8At8ZP42peg7IPP/geLfw+gaC0vI8zr2MoEcG/C7duLbweTRHPby/Bryyvfgx8bJd+Eo8n2QHvPdV6yffP+N9lz0FP1MoL8/jPOk8nT8PcAf/4XeO/VXi3y2iROXlRawU+KvcW4oQMmrsB/8VfvMZw6l/9uL5jdnkkdPuJBcbkn8QN9047VWHoi/3em9P5xF//vj51r+toh8p3mPLo782We+3x6D+X5bqzyc/q5X/jd5NyCvw5SroPs8+G9yrs7f32FflfBTjv+0FZeGkNPb6M+8PvP87zx3TdbP2GP8KP5TgXzuwe9IeDe8Gv8Nsn4nvnwKN9PPsAKUPAcHsofm7GCBeP8G/x2k/n30b1J/G7qGZB2RXF7F7zr+syM5TyG/psY5ANaEXbXvIa7W9x46XBy8gHxW0U/eBxX8/zn63S6eV2aXuwTRP93763ntKvj/d/S3nj1u1v8Qz++f9Q3xIPOfrONm/fYs4zdU/jv+D9Zf/KNXkZ/EPxqQ7wByKFUuY/z64u1E4+yt/Ab93oje9onX/t9K+1fMD35C38/on+P5o8j9B/U7iTOvqT+OXfbjh73Z33Ger8/+6sKzYQP18a/4VRd+Fv8a732wDLbznhht/A34G+L5EVnPwd98cWOOuHGi8iDP92aXnWBneDM5ZV28ubh6aL7/tL+NPBaofwdmfpf4/CD9jYa3ss+sUz/L/prgZ5XyEfyhOf/7IfNP9StLCzgVPWXYx0z8dyDv58SVR9jXNPyV0MPZWa81/lDtW5HXy3AtOeb7ai3/vo793cmePlW/hj6ybpp11KyfthJvD4Ut4cnoaZzvD3Jrpnwo+f1g3j2JX000fmNy/Yj8utFj59ir+iP9v4z3R1nYHb1P0d89/j8KPmT8u9FzGjtoDtuIvzOiD7i6ACWX6ffhzJ/gsXCD8WvT++5wtviX9a/y/HWruH4v+91A/mNK0QtHw6H67648DR/t+e/t+FsinnycdVP9jzD+au+319nBJM/PFL8/8P8VnltBXyvof6zyw/By/NdT/4l2u7Dj+9jxSuOPUB6n/YPK5fHXRnzZiJ7H/H+u/k+n/7fEuf3Y2U/6n6vfN7OPg59j9PMSf6qO7xfoozX7rVdqXHEj87J/av8Me7qDXR7OLs7w3LXs92q4jv4X08+D4uGb4mPr7A/i7xx+8Q25Pm7cE8WLqwtQMpl9TVDO/O4Q7T723oy/dtDPNHYxhVz2w/cM49/P/0d5vrL13Hb6f4f83qPfhcpvqH9Ov8epvwtuJZ+e9isXZj2W3f+Mv9bav4T+OuzjDc93Ki3gZ+T+ORxh/MrsfbZxa2r/cObf/r+ZHDpnvmf855QnBvlpJfQ3Jo+n2duj4tI87Wcbr7t2f4Wr0XeWcV/PdxpcTt6D2XMDcWk8Pd+F/onk3ZR8TtXfAP1/5P/x48nsuz47m8Qel7Pj57MOp/4B75Nn8XsB/j7B3xxx53tynws3ql9tvFVwDfwWf+faD/onfBEOUv85v5wPv4CP4H9fdtAXffux1z3UrxAXPhMXd+aHh2Z/nX0M4Bf94eXkd0q+v5SvYS/P678jffYQX7rBvuyhY77HxI834Uzj74+uA+C/6Ltq1ufpfSQ+Fmm/b+YvpQVsQW970mMtfjSXPC+GY7MPR48rxJ869LJc+R/4napcw/uvffZ1yPtG8fle/N7Jbs5D/2Pic0Pthopz1dHbhb28bn7SFF5APtvYbW3//115f/zPUP6CXs7kP2PRN0B8Wa68U75r8bcMXbOyv6O/xcb/Q7+d+dV25WmJz/wv/n8X+/mb+qvEhx/VzyOfxKfR9PoAfBD289wm8qvNz9aQ1yL0rTKfa0s+d8Aa2Z/PPkr2u9EzXrlCaQEHstOXjNOyaP1ouvGyjpT1owXqu/j/tfwp/lPTvHKp/58Pa+q/DrnvBevCR+h3MnnMwvdMuAV/95D/3Tv+dz9Nst9AX93FwW5wFfufQF+N4JPwc/xUYffJM1gCk2fQTDwqYR9NlSdHHvprrX6b+DDW+E+zv+ZwHP+4V/9l+MkZ/H4v9nAR/s5g31eIU9W06wbjf5fp9718h2nfUP916f0o8u2kffJqkmfTvLSAya9Zj7+q5im/s4cz8NcJ363JpXXmx/S3Hj2V4V762c5OjjduU3ae79RK7Ly6/t7gt3NhY/Rl3Xc4nEf+Wf99UDyckfcO/Av7zP5K9lVGkFf2V3p5fu7/iK+XiY9XoKdUu3v1vw69V/GTS+HOnv83e+vDD0r9/2f6ecn/p8PH4Sr+UzX7hfifCe/VT77PvmUnG+F/1M/y/s/+Y/Jdsv+YfJbsO77i+ew/TvL+WqN+lDjSHf/90Nc/eUqeW6H9t+g9nB+vTF4I/r/nF62Ns1n5NXH+AvOv/5UHsiN7KA/LwX30fzr7O4/et5PPEnosww7Louut7OfiL3L82njTyOc67X8Rt97k/1ONvwD9i/jjEHIrYQ919V+en/zq/b0an1mHbmpecQy7OKV4vyD7C7Cp9skPyP7rUH6Qfdgn0NOC3G/Ofin+Gyh/yf/L4K8hP++nnP34+zyfffkm3ltZz8z65oCi9c2hyr+VFvBX2Dbfi/pbBr9CX9/EB/odAcfgd0f8J58m+TWj6S/5NeUTl4veW23Zz0OeT/5N8nGSfzOU/O6gpy7G/6t+hoof9T3fGd33oO889vIJvf3ADrZ4fo7ndyHPpsZvqfwv43ZkH42VN2v/OPp3pe/Ycez3O/F6M2yKnnvY77Pi/qfo+xgu0n5zaQHfFF+/Ux6KzmPptyq7HQMPQP9p4mfe99FD5D+W/9+Prgaee5P83iXfG8mph3Hreu4q/f0drodHqh9u/Eu1qylOna7/quivBO+k7ylF89vMa/8omt8+wb6ehBNg77yfkpfh+UX4+QP/1+vv0ayzibPv4Lc2P/yaf7zLP1eLS+ezi7fMg96GH+F/mfrl8EP4G3kcVrQenPXi5MeWiDu7JX6hp57nN4nXG+Fv6h/M+gX+VrOzfeEW4z5B//eyz7vh9Oy/lhawFb87FPbR/yJy2KhdXf31RV8H/GQ9rzO9dib/Y8Spl5W3Gu8K/Gc/Zy38gX7O19/46M+44+GT2v+s/41wK7yEXTyDvuvxcxS/HJ71Qfzu5v32hfYXqP/UeHtnvV48Pyn17KGNeWgZ84kdPb9NXE3+V/LB2iY/En3Ns17g/1fpf6P482H2G9jtF577vgAl3K6kSaX/pu9Q9nAYLI+fY403Ed9ryeHjrNeqz7rMQv7Tlj6OSj6lctaHarOXS9Cb74omcIn/Z/8m/IS/9/b7b/4OI7e2cA/0nZ38cPp6TFypTA+Zjx1PHskbm5X5lvqbs59FgD3UT1D/Ir8c7L15YebdsC1+R+OvTb7Hkr/kuevgH/Sf/f8/8wbY1VnKyR8YQz+PwSXav8d/R5QWcN/s68Dt9P+Ncfvpf4j+d4Lz+N0Z7OIZ8kqexwX4apjvV+XbyH9X78u76HEn9HyG/0MyDyK/FyIHftgCvQNhS3gRe7gOXdfC5nCg/g/wfKOsC/n+OBD/Z9DrgfR4kvJc43/Irh4i1578t1v2Ydn3vtkfJYes3z6R/Gb6+Zk8Hsw+Zc5HeG8forzc9+ofeR/pN/PRzD+/0N9C84NO3qNP888jyeNy7T7M/n/iA/t+GR/PkWtz/X/n+a7kck32R/Q/UNyogv9BytXxn3zRSUV5XC9lf8vz38Nt7PAD9nI8ua3H3wP43Uf/ya9KPtX9ybvCX/Khf0F38qWTH30l+XbM+R3jf0k/B+tvCbuJHcV+DhV/n+MP+Y7L91srdp08jx5wOfkNNl5l8nudvH9A3yZ6Wavdt8qtyfVI9vgH+k73XAf/fy3rh3C2/7+ScxbKXcj5YOW/4ePcxAF+X095W/KvjdcetqCf39UnHz/5+V/A5Od/GruCWUfO+nH84l10xT/GZn2zaN/xZpj9x2O9D2r7LnuXH3c3fkf0dYBHwpP4wffsInkXY8j/CXROob+c4xmMj8Ozvix+5LzPNuMfof6izPvznQIfUP+r99a3+LocviKuDNT+PDgg51XQX7y+nXWXcuSX/eWL8Z195uwvryC3f5UWcJnyksw/8fs+P9qofFq+N/j7Rd4jOc+TczzJP03eaXPl5J8+Sd7ztX8UfVmvJv6SjcnDUX7T+LXFv4r6i3z7sK+vxZ118EN+uEPO35H/LeSZPOicn6qv/mXxaRo8EH070/c37HCS+oH6+4Jdz1T/hPpz9Z/9gOwPZL0y65TF6z27i0fLtU8+SvIWkq+S/JSxxu1F/j3hWv1uIe9jyfEqcs66eQt0XUWu/xEHrmWH57CXHdG9A3k8YvxDzMdOI4dbPLed/uqL72eTZ85bfsn+lnv+SfgUfIX9VqSv/4gHj+HvKfLK+YF64u4lRfO/4vMDw9ln5o9D8T+b3moo34e/v+i/L/+qRp5j1B/pffJT9o+UTyT/ffGzntwehvepf4i91iD/1fRzkP5HGX+y/4+Du2ifdan3i9alzqTfo+mnOv6HwEXkW8J+ysB/xI/JZ7r/z4XJs2tB/jXE16y7zoDfaH82vqaT20twZfJb0fMZuXwKsz8zCj/r8LdA+ajon53Oh1fn/An+3lXOuaAb4HD9lyXnCexxB/O27N9k/+Fn9nykfv+jPIC9naXcShyahr7l4va59HwOvN7/q6CnP7kdBC9G1x2eGwF35j8fKZdjbw3E1zv4QfJnR5UW8FJ4L+yf/H7yaQ8/Tz6F+pr8IfHqsqL9lS76uy15Y3BP9Ccf4RJ81yrKT7hff9ezh9uMdw19/KL+YdhR/U3J49BvFXrIuY5p6LtN/X70MoXcjk+80+9u8BD9b4FPeG4y+7o15wL1v1jcq8puu7GXnD/K+tkX9PMX+r5N+1fRN59eD0s+BXk8pN3L+FuafE7y+cp4yee/j30m/2JW4qDxPmff2d97Gv29kjeW9Wbx5bW8Vzy3nL2VNd5IdK1X3i15KPp/S/ltuA8+N+X9RS/HkktlWCXn9/E/n13Ohe21v6wAJV/DUvFkJn4GiBdXkuvF4khV/98J/Tsb52n09Ms5dfLYR3z/DP/dyPUk6xnJz0i+RvIzzjNuY3Rfjb/kh24RT7+Hm+FM8m9Ev9XI/2j6OC3xWbzI+cLi865lzW8qsee74AL9D+YPi+FqOEX/99JXR/R+SI/n0W8FfM2MXcPB5r99Mx+CK+DX6mdmXkMPCzL/VJ/8mtn0s6oov6Y8Pf6Vn47X/smsv5PXaPP3L/n5BPW/6bc1bAPLk89F5h3ZH8t+2V7oy/nanuT6jv5zvva1THDFj/eU67Cv5L0nD76FOFyf/KfoL/pYkDhF/uX1tyO8K+8F5SvyPme31+DnInHiOn4yP+c7ld9RruL5ifR2GD/4G/7+YbxbyfPL7BMrf5X9ZLiJHnpov0g8Oh4/fdj7fco34aMrP+oGb0L/JaUFzPmv8dmvy/4q/91UtP/7MXlWZt8nZz9ZOfnFN3i+Q85lii8T1Xdnj5PZ75qi/Kmf0ftmvhOV27KvI/lPc3GnQu7hIL9DjTvduGeQ37ns7xN8X8z+KhX5dxv9diTHLuxrLrlnvn1D7oEx3vN5v3p/Je8o601ZZ2qVfSNxZ6FxkgfUF70vGWcGHEJ/fdjnWOMOUa6e/M/s35Lf08qn4L9/4gI5vofOK5Nfn/MT9D0bXa+qf6G0gFPgVHiK+gv5Qz9+0B9uTr6oeJ17bRoV3W8zlj4+4re5j+EG9F9Lvh/i6xrlyug82vvlSf3VgI+Sz01F69tZ7876do2i75tZMN83q3Ju2/NTtZ+aeCBujIDXwW/Uf0z+t7DrW+Eq/L3DHhbAK+EN5Ds7+Wnw1ZyXVT9SPGlBLu8o94OT811NvkcVtU9+9AfGTZ50U/zW915tSq9N4KR8n+X8Cvvqws7X4K+feV8Nfph7Boby30/MN4Z7T42Eo7Uvz15z7mEsfFb8y77IUfzjW+Xsj5yBrw30drpyd/q9ipyy//u4cvZ//5P1ZeP+Db6mfXX0/Y0cRvr/yVnfYU9Z91gZ+SUPiP/c9z/OJzyh3zX8+0nlOVlfJteK+P+Evupn/8Dzp9FrD/bcCr9Zb9jf/0uL1h+a5DwQugcbZyft29P7r/Seff5K6nslnzjf+dnPR3++u/JeKv7+OpDcnmcPQ8XhYdqf6X24hb9NFbePUf9B7uNI/izspb/kd/6Ijwv56wXJ18r7rAB/zqeXZ10s5+GTD4XfnN9dpv/L9NuBvQxC3134Owkfw1M2/kTvgX3543D5mzvo/2X2MgNmXl/q+SXi0bbSAi5Vvjzzt8zf851ctH+WvKo2/yO/6h7+1IGdjVLuyP5miUvl+d+F7Gtc9v/RdQM7u5c8T0T/+fppTb/L8b8s6+P6a2vcdrAZ+uuwy9tzj4nydv2/Sz8T/f9W9HbO/Ic+J6PzSuV96WUzf/tB/RblXZN/wF82sLusc+2C/xtzrwO/aWz8bvRzMXlfCnfT31s5/8Av7/D//b1vV6M/5/Rzjr9O+uFfJ7Pv3CeWe8aWkt84en8EXsVe+id/3fwu8TX7jD8mP4OdZL3sc+/rVfrvwS9yb03uscn9NckH/Fx/yRdMfuBp/Pa7xEVxrgX67sLPPHp5Lveskf8c5Ybsbwb72924Z/Gn12HV5A+hfz59PcnuHof7qs9+bPbVss+W/bVhWc817tPwFvbTX/+34e8WWAv/i8lrNRzkfbUi+cMFKFnlvb9W+RnyHFpawMvhqeznqeQV6Xe+9m/Dn5J/nXxa455JH8uSv6G/Y/F1EzkcTv5L9PcB/I0/nIq/BVn/gcejpyr/qIuO8/CzidxaG3839A3Svq/yVu0v098e6pcpv4K+jbmfS5w53Tj10Tcg9zdm/p88pdy3xL4H+X8duIVfvKW+Vs6nKddI/icF3sSP94UTcz67aH74B/mV0T55WcnTWsrOk5+1Vruc+8g5kIfZ6ZAC/PkdvxLm+31A+IMDYQXy+YY/rDb/LL5frSy7ybnqc4rOW8/kH43Z0cvK99HPycmXhLkXsLbxG2Z9Ez6Dvp6ey3t/Y+JQ0fs/89425J1572/ar2AXy+FK2MRzC0vQkXMPyskfeVj8XV1awFXwMXHmBX5TLfld5gcfGv+13EvgPfY0+peon85+epP7D8q7om+08u/s/kDP/aY8l16Oz7ovPb5Avr9mPxNdXWFP9f9M//g/S//x76VZz4WHGO8g8hnEL3JPx9n87PDMC/w/3wX7574k9nUju78J3gwH0+cO/GElOQ/znviS/Kqal/X3nljjuZ3op7vv5xa5LwJd2T9pJ143xMdC9F2M/87Jc0Vvp/3+m//v2Psf6Nqs/FPye9CXdaLsw2T/pR27f4MfHqE8Fn85j57z6QfBTuoPQM/R2R/OPUT6305vv5P/Uv5UO9+/9D+C3u+COR+X/L7kuyUfbiT5tGNf5bLPCi/3/Gz6m1RawOfNUx4T/44jnyf48fvazyb33BvyGfpvVX5P+6bk3Vr/jZU7Gr+6/nKPX/bLc3/fA+S7gOO/D9doP4g/nU+/J+S8jf/n/trcW7seHpH7D9DdB15Gv43Qn/2hk+Ch2a9C5+P6fxRm//ho/cfecv9l7sPM/Zfr8fMd3JB8/qL7BXZl/7lnIPcLjDbeGfzrIeXck/w+fbwoHr2nPCf5X/n+yL0ByZ/N/RXiUe5hOJWcc//CoeRWj5+21/8R4kM99rpfzhGw56HJ3yqaj2Se8gD/XMkfRpHDlcZ9kH9H793oZSA9DSb3W4032Pg10Zf32a7JHzP+nfisY/zkRycv+rXEcfZ/fgH+vA/mFeXsX98nbvfBxzvkeyP/TV7LdPa/qii/pZz3UllYBv6D/kaKNw3F5f3hqeyjBntfha9d8z42fj/99Ye1st6Hn8na/ZH72bR7BSbf/V6YfPj26HuQvY+GD8Bzcj9mAUrmwmfgSfTcDj3d2Fnt7J8Z/xT/P5Wcc4/YrkXfh+HzBuV8H2bfZ6X6VbAL+qbRV/ZN3zbeHP1fQ6+X8p9+/HMi/quVFvDf7HEpeytHv7m3N/dctIDJf+9QdP7mX0Xnb84Vn5eyxz343Tfa1zV+Y3LPeaPkb9yLrt5Z14E5H1df3BlHD/fB3GcwnR+9DHN/XDf2M4e+HtMu+Vk9ybcCeY6kl7vhVPptpP3Z5F+BnJfpvxz5/+S5vbX/Qv+1sx5NrltKCziMvKrpr6f+H1TOOecXlKfCXdA7ivwPx/dRxv8L/DLft54/jbzyPZTvoBdzbwacCiuznxe0XwevNd56/W/w/DfwM/b7Pfq+Y2+1vVeO4f/PkN8G/Z2dcxq579b4P/Prc/TXiv0Mo59jrCflXNCF+e7P+Upy+wNWNM4C/rOAfnJevSv6eqpfTG85P/+qcs7PJy82+bDJl/3F+CewjwNg99xP4PnXjd/3f+wfbxKXa4rTu8GPyCP5Cslf6AWzvpj7KXrDd/lT8qev0d/epQXcK++znF/LeiN8kT5bFq0/53cF9mP/+X2Bi9nFRXAIfCfnGzPfgY3hQepnozf3R1fJPh/59zXu3dr1Tv5N7idB39f8Pvff1aOfPdDTKvcIa7dn1ufNb7NfPIpeHiCf+8gl57jepK+c38r9gTmvOc//F5L/1KJ7b3MP7tKsr/qO3664kh2O8f9h7PVZ78lO6Nk13xHi4UJ8blV+FR1HGe9I2AFOUL82+e7aL4K5P6S3+dMZsCz9Z//+LeVx2j0K2+FvPPq3wnHwQPV1i9Zdsg6T9ZeD6DX3Pw7IPeP0fKX+kmeX+7SSX1d8H8948eQx9Tkv92/ynOh9lfNzI0sLeDc8lfzvQF9DetkPVi06/5h7XdaS34fKLbNfIt5dDu+kn2pZ/+S/VZNHKn4k/+P1nHcTl58130j+SFf6Pcx7oUXet+Sxjr101z6/N5DfGbg9vzuS8/Xo2If8d9DvA7Akedg5T+09mHzSb80n3jf+2+T5Lsx9rIuyTkSeu8Oh4ldz+vuR3HKPTO6P2SXn27Vr6f8HF+1Hfax8BHnXQu8Y5W7saaZ50Vb4vvp96fN8+n1enFpMv0+Jp7XQ2RE9rcintf5b0nsl/c8j7zfErbmwGX2OI8/+5HUOux2gfGriH3/KOd/ayolTPyU/gB/0zTlS9QPZVym7eZR9vY+/y9Hd3XtzL/w1Ip/8LsfCfNd5Lr/TkfM5OW+eczq9yad3znvCs2Ct2FfR/lr22xai/yr2OIl+PkJ/Ze13I48J5FNDOfdBzMy5e/7xTPTd6L/7X6H9f4xTnv2dwJ+yf9Qd9tH+Pe02mJ9sJefs//fP93zOW2T9hPxyDvhXWC75sMZ/Q38j6fEumHn8Tuy1CzoGw4O0P8O4J3m+I385Oucrcl84zPr0EP6V801XkNtfyXGW+r/zj9XizMPsZDj5fISetbAq+jfw0y+Sh4We3b2Pc77+De+NrJMuRF/WR5+lr+wvPgOzv1gt6yMw76Hnjb8s9xezq6xTvaS+kbh0ADwQHsS+WtPPDbnfyPgHJ/+2tICHwOfo43byq6S/s5J/lP3wrAfyx9PhqTD3z3RG73GwU+67IJ869P2DeDSEvz+Mv6fMUxai+124AN6sv5vgP3IfOfkmn/Fk/t9XOXmPyYccKk7eJD4mb7Je8kHgYVkfVv4K7gH3hGfn93DYVTn20lK5a9a/xZP8zsfLpQXM731k/nEFzHwt848B9LJV+4HKuSdiHf2V+P8Xyrm/fBJ7bcj+8n55Ab1f43d//HynPIT/PMYfck912eQlwWfZ30+wDvt+V/vsr98t7twDd8n5RPXv5fdV4A/q17OXB9hlM/E7+WzLyetS9fuTw7HkO6IofiWeJX7l3tHD2WlHdlMl+c366wZzj9di/L9YWsDkjb6uXb4H1uX3s+DXeU9n/xrdPeAv3r+5n+Q55WeTf0Y/Txon99rlnrtx7P2irK8mPwC+zv7LFq2fNIL1so6b/FjybmvczvQzCX3nkv8yz+V3xvrkXpL83kjR/U+d+GsT9AzMOe6i+5/yezN94AKY3585hTwj/+J83jvFxdvp/wBy2hv9q5U/hckHTP5fbfpenTwNcewy+vtVfefsmynn9/y2GDf30u8DX8v72ffEL/xxf3zl9+OW6PdxOEm/V3quCv7asYPE0fwO1xjy3lH9kNwzzL8aq2f+f653ZX3riJyn9B7OOvyfeTviQiXxJvfF53747fR5E7vJPlf2ty7IffyZFyln/pZ8kDvhOPQnX2Q9fddLnOTPs9C3uej783SY78/cb5u8lPzeUu63/RG/s423VXmW9pvYxdHqc4/bh+SR9fA22g1D/zb+9RV7+Zh8PlZ+gvzzeyD5fbW29Bh9N8y8Bb3bxOvsP/+TPScP59TYC/q75zxqzinif1Xia2kBH+HXK1I27jP8Ib9rkXy55MflfufP6CP3On/o+eqez+8eVlMewr6/J6/cc/ZB7kvQ38jc+4GPDfhdFD/yfL//YT/JT+4Kv+NnFfXfJveKim+/sN/kr2b+uwusBJvRf9bzKiZ/Fp1Z39vofdib3Zyd3ymkn3bGzz3zg8jncvpJvm6z/M4E+38IfXfR9yL8XZ/z9fTTOPNKAaC9/vM7lR+w30U5Jw2rkM8N+N0x5z1yzk3/A5MXhM8ByuPw/xD77um7phdcafwv2c+HuccWDtH+8dyPwX4yfzgA/7mXu1HuDyi6n/tB8jhQP1v52Ymez/1Fqzw3jBxzj9Ffs+/Ebs72/9bo3pM/XcLuflSf3wltwn53Y4+Ni9bPBhn/PHgxfQ73fF36m8Le6yhPxl/uHz2paP6S+0ez//0wOxsLz8t6pPoj4KPav0nfuV90T35RXvlC9ju5aN9mCsz9nqewl3xX5Tsr31enie8r0LUEvh36yaUxu9wLJj/7I3QfB9fAivq/Tn/XZh6R3+lgP/fT70H4u1P56eQn4Te/e1b8e2iX8PuX6DXrZFkf+0X73BvVu+g+qVHeS4+QTwXtt5L/icbrDq/Xzy9ZX+N3fZKYpHwM/jbjtwb6P/H/AfqvmN/X9VxbfjGZ/EZY/87vJw0X369Vn/vkl8Fn8PEB/W9hz1v5xR30uQQdOX87DY4qOn/bSb9D+delMPORHujLea38fshz9Jffe2sJ98x6v/bnZF6be5dyPyP6d0fH7Vn/9f4drP/sF3u9lmC/ZAb9Zv8w+4XZPzxBf7n3P+cqpitfpP+sP2fduUHR+vPN+ss9+Ln3PvnT95P3t/A7WJl95t6f3AO01Pi5/6dDaQE38Yt2nn+AHTSjr23wCgIYmN+VEldvhSf4HliGj23s7Sx4DvwdH/n92cyHMk/K76dl/eujrBOhN+tf0/V3of4m5vf2ct7d86s915kffYT/MfSSvPbkuR9HvuPxNRV+hr/pyc/K707R44/KP7Cv3L+6p+d7F92/2kd5L/XF97feg/4yxq3Ojuug52pyiZ2dDvP7Enmf7QDznst7b4T3d83cj5Pf8ct6ZM7/aZ/7UHP/6Sbj5VzFheSX+eN0/eV3DPI7sPn9gtbJ9xdHzkTHPPLLelFTdDaDR5BTfn8xv7eY31+8X3kO+WZ9J+s2Wd9Zknup4OSs56nPftcZ+B8P8/0xBt2bvPdyHjvnr19hz6fBq2HuX04+yyrjrqfXrOvm/FDODX0Gp+f97Ln8PvIJ/DPn87IuuAd9J18h64PF8+3Mw3P+ozl9ncI/ewQ9X0n82xnulHV09NXM/SD53eLkuaOvmTixJzq75v2dc47Kc2DyCdvr//8ABeqnZHicdd151JZT2z/wO41IRfPEVRKRMj6azIUyVFLGRMYyxCMkMpdKpkZpIENJJOoJTeahzCo9ZmWWzCRK71q/6/N913qv9XP/81372ufe+5j3ee597H1PrV32//5GNS3izQ2LOH3XIl7brIiV9ijiTX7fd68iflW+iLtULOJrFYpYYZsi7rFVEVvBCysVsVfLIr5UKOJq+AJ8Y7cinrpjEbdsVMTK8Ef1vaoXcVW1Im6uXMT6rYv4wQ5FfA9/3+rvmD2LeI52/eDZ8Db196DnMngufBr97+5UxPnG+9Dv55DPPM9f3qSIc5Wf3b2IF5N3HXztU6eId7cq4otVi9gcria/e9S/j58qdYv4u/adjX/RLkWcgJ/6Oxexkvqp5Yq4EvaCF+l/snGP3LqI29b0PPn/Ta6b4HLynqf/X3b6v/wu1e8E9nR6rSKeo//L9L+d5z/x+3Ps6Xm42PitGhRxB3a6l/Kj7PR58umNrqO2L+I9xj8w9sp+u3nuDOUL0fMgO/u5ShG76/+dekU8Trvlyg3xOWLLIlapUcThyg3Uv05vi9H5tfIM/J3PPy+G2xinn/p72XvNbYs4F31L9P8b+o8wbgvlyehf2biIH8Jx8Dn6e4o9fQP71i9idfbUln28QF7PwWn84TT6e4v8vjf+4/S7kfwfhSekH/Rtjd9O9FZVeQn9DS5CWXdyOxY240+74LsGv95Z+Rrta+lvB3y3Nc7L/GZH8e2dLYrYULkl+d6A/xbbFXG2/qfSz3H8vjW7+IR9diKf8eTxLjmNU94Z/1XptxV6t1JurVyN3qvDhvj8N/kKF2XryV/zsqfobym/HYi+X9jhQPQfzW5bs6sJyt/ofwZ/LK/jYQZsoP5G9LyJr234+3xxcif9rtX+R/GnP+zN7k7Ebx/lk5Tb678P+bVR/gr9x6LvTXQ/SD9Hk/+X7O038vkd3qn/HbVbhr7d1d/OP3rQ7/Xk1o9+Rxn/I3xXwHd5uKBFEb/3fC3296PyMfq/X7yuQ57Xw3H0t8m8ejW6Juv3PvXf6W8tHIveFeR/A3ldCz9G383s+znyup99T4dvoG8j+29LTv+Fr2vf0/x2HNxK/LiSfPYm//78v6o496byLfyzHvm+iP6dtD8C3/fAzvAn9TPx00V5D+V25HMJ/i6FA+H37OMS9vapuPBXQXt6+JjdXcA+qtP3DuTTkbw+Q9cp/PRc8lnA//YRX3qKL++yv9vx+wj+D0DHOvQtJp9ynrtOeRz91uCP4/VbUbmG8Y/iH6vQ/Qx9HsWOthJHdzT+TcpHq+9Pf6Po60J6ruj3kcZtpN+H8bmT3+/zXF3tX2fPz5PbduR6Nb0dTK6HwL3Z2xxyHUvOzfF/JnrOF0/PVv6J/puxx0b4aww/V9+Xfhsa/3Tl/nk/Fb9OgQXP7a79Kvo9lP99ST+Xk/8k9Pytvq7561r6/7EkPqzL+yv+LyanU8jh3+RwvvanGn9347SEu7HfT/W7xnPV0Xen+mPQ8x46uioPzPudcVeyo6v5zxXkvQ05lTOfTkdXbe2n038N+AI7aKPdNZG7fgewj3e0f5I9HlIoYjP8fEr+nfD7Grprmue66n87/G4L68Iy9UOaF3EafT3v90746MGOR7LrH+Db+PkZvW/Bz8npQ/LZGT1Xke8uyrON9xhyHjbOt/pvST/TxO115NYl8tH+B/KYxs630c8K9ddpvzc7OhzO039Bf/Xp4UVxooz/36+/x9H1F5xFTuPxtQ89TVA+Mu+Xnl+sn9rwRfKpIF5db/x9+HUz7a/z+xOZx5RHiY+NybNfoYgVxclF6JvNbxvTVyVyvE65Ofo2s59p6NsfnsQ+BqO3L3yIfWzS/2hx7Je8Dxv/a/R1IZc7xPer8NfS77vDK9jzQvbdBx2xuxGwl/Gb6L8v+TdVrkY+T6M/32X5Tsv32b6+q75iP73Nz62N31X7l5U76PdV9H+HniPQWVn5E372B7nczS/WK99Cz/numi3OlH5/TaKvVvT1vvIb6Jmc9QDtJykPQt+t3jO3ZmcfKbflB7fgey16L6OHe9H3K30O0e8UfEym3+XoGQ+Ho3MI+Y73/AS4Dm5DHzt5/6goPjdX3gV/d5ehC74Am5LP8fi5G14FT+S/lfnzLDgHPwPocSN7G8AutoIPG/9ZcblAT03gOM89S469PLeCf76Lvur4asrOprHPVeovQu/ncK5+8v50MrmfBE+EXdC/Nz7nk/ee3qerob+n95JjYTc4jf7mGbcfnAjf19874sIp6H1TeYXxs351Jf/bsmT96kZyHxW7h3eyr1PE78n0MBW2Y7+V2Gcvv88g92XoOz7fw/pbIP7V176Kebmu5/fAx+3kszV97k6PS8jzNe135ddV+fU39NeRXq9V31f9bfywgd+n6fdeeL/3l5PRcQ17HwKvhqvR2xtf5ch7G/S9i/7G5Hc7eqaIX5+S/1T+th//70kfq9W/Sh9PZn1TeT/j5juqGbm/Lh5+zj6H4Ge5ceboP+8/u4n3LfNeD7/BzxWJ1/zjcfrrp/93lX8Tn/Ykn3+j/3nz4rNwqPn8SfVr2M2J5HQ8nEi+s8TbWvj/nt4GKud9+iz4Tcn79iL2n/XTb+mhHv6OJve/6L8D/8s66qPsZRg5dvD7dPIbrN+3+dUL/KEc/pqjfxC8HE4nv3Oy/gaXwPvV9yC3p+jtC3Q0wN/l/Gd91hPoqTn63kL/K/A12AN9Y/Ldxc+ehgdofyB7Gm+8I/D/qfG+Q999+r2f/KZ4LvFmGr0cjL7R/KMbPf5ufroWDtL/EvZeDt+v0FdX9r49va1HRxf8fGT8qfTdmV0PYK8fqz+PPS0QHxYqrzH+uiKU/ckP5tHPQnaVuPQLujbAxKnLPD8b/5crP5T3B/205T+fobcJ/v5G13n4uk25OzpbsbfWcHeY95+r0F2XX23l/eEV9FUjt+rwBfPv4+qvJP9e8DE4mn0O589rzKtVtG/Cfz/2/CfwNjgQ/yvo4zh09oIf0E/WtcbASvBp8qmQ93VyuVC5Cv5n4ONu+jyLPV/N/iqLxw3opWH0q/8/0PMv8tsXXo2/T9lvVfyvUb5Afdansi71KPqyPrU/u/w+30vKB6A36w7tyK0b+WYd4oTsZ8Hj4WTyq04/PWEndBynfnERym6GV8IO5HY6uz2T3L9Ubkw+D7KnmXBb8txK/3uQ3z5w74J+xZ9T0HUY//6dnbdT31s8utlzd6kfSL73ku/2+J7uuc7a/yqeDPb7evLfi55+RWe+VzuJp8uVOyrne/Vnz69U7kYuXSMfOEv9NfRZXty7VnmVfrYQH8vBMrhA+4/w/y/z947sooz99i8UcRd2uytsjf97tFukn2/5eWf+tzG/s6s16n/O9yG53lbix/Hfs8St7f5h/eJ38WxLdO4Wf8b/fOMXjP8Z/Wymt3zf/oXvwSXft/uxm+fp91/KHcnvbvS01m8HcWK58vHsoBb93GDcJ/J9g67XyfECdLTnf7+hrzp+s8+Z/c1HzQ/75PtG+VjP18t+DL+qr3yLfm4nn9vgd9kPREdT/Hb3XdI+6yN5fxU/mhq3vPo65P+5/dFfMl+j6xn9b6X8m/ovPf+0+un6u1D/PxhvePZX6XuwuNm7UMRG+t2VfewGX6Gva/L+yV8Gwyvh/eLPXb6HTmOX7yr3VX6UP8yBX5JvFf1f5n1sS8+vIufsd1XG92WwJ/5/0H5H7c8QhxroZ5Lnh+EndngGvs9iH5/TeyvzYOLJvXl/Fw9eRvcgcrwE/y9pt5D89mLfQ9E3Ft/DtR+XdST8LWDXu/P7/uxmIvtryK9+5Sfn4nP32Lf3/TnwMbhBP7vS1yS/10f/rvj7kL1kH3YNv2ySdW/0NYD14QD99/C+k3XMFrAD/t7F98oG///62dkvNn4H5Tbq/6LfjTDrae3VV6GvyfRQDz0zyG8Rexyc/USY+bsce9mXH+8Dt6Xfc/nX635/m/xX6X+8+fwRdjuW3DaTTwe/H6a//6rfE/0nZD9Ff/meyPfDE4UiHoevyLsX/a3E9yrYhz1nn/B/9YePBiX628weTmKX2V96U/1c9nxP4jecb/w64nY7z72j/kD4Ev0knyf5PofivyO7OB/9JyYO5/uUvMeJr2Phfeqvyn5k5gn4Lf+vze6H8c8K6H3V+KX7T9l3OtLvn5H3CnS+iJ8+9DWFf+7MDi6l7xH8vzZ5/tt7WSPl7eh3LPv7zrhr4TlZf09eSBHKBub9BD3ZD7kQXgS3x/8ycW8pbFMo4snGPxGfP5LzJnLYF381xaXMo6XzZ0P0NYCn0V8b/A/C9xXwcvgU+ubR1yl5rzbervrfwN9/hb/BxezvP+QwD86Fr6J/H/zuC7ekz5HaF8SjPdhFZeUh5J/8gK/gu+LADll/Yl+nwD4l+QoV+cHF8Fj6eYB8viDviejqbpzp6kcm743+9oIbyaeZfrO/u5wfZn/3Ne+P1eBc+juN/FsYvxs7vML4bWFn/U3U//XhT7lM3PgQnf3gIPy3y/e0dtvDJXl/Vf6cXXwB78z3Irs8G1Yh/wHon/0P649Zl8z32af8slfJ99l2WS/TrobyV/T/AHlPh/fDvtl/FlcPMY9WhIvZ3wz1C9jth5lP9N+T3hsb92Plucn3II/r4I3wFfqfRP5H0/ddyp2NvwN5NRefEqcSn17ht+Po7S54IPlcTe5D8n5Ffjvov5p4XJZ1jOwHkM9s9DwMZ8Eu+j8G393g9YUi/oG/zeLJTfB49Vuwr4L5K+u8E/GT9d0HzHdH0kvWe7O+ux87yXf5ZHZ0q98/Mx8vIq/J5HM3/pcoL4Z1zGMN0DdT+XB66wy/034Iuht67mrlo7V/2+93k1t1OCD5Cfz5KPx9y867aZ992ezTrlXO+sPNxhsFb4En5n2FPs8in2vJoW7WD+llf+06wCb6rxz7y/uCfj5M/hJ6fxOHvsj3p99fVM734/7o37lQxC7JE2GXNeHv1k/G86cJcDg/fxw9rcSnnfzeDD7DPrrnuwof3ZSfQX91/G/3D/sz1fFRDS7kJ/8x/ljjjU/+HX3vTH5j9HdjSRyI/y9n78fDpvjJ+ttX5NpTPD9duTZ5XJp9WXgd+a6h95r85efkrYkDa9nHevrcTO5fJX8IfYP0+6Z+Gyk/rP0+0Zdxpmr/LDt7Vrx8yDhLxNH38LcNua0Xl6uTw/vqRxWh7FuYfNG96O9b7ZMffjk/3sn89Dl6u5Jf1kuyPrKRna2hz5vsL96Y7zP9LyHvxfAA488pFPFxeDo+7tFvwby8wvhl5HOW9svINXkd/UryOzprl/yQh2DW2xZ478p72ELYIuuD7K8Gu9zk/ep4+kvcuwPeChuy397s5kl+00p5Fvkmnia+Xph4h7//Zl0BHoz/Dslnx+8S+CR5zDb+aew4+UN94E7qn1dOnuML8Cj9NyKPxnA39P9NPmeTx1nwSva3Wf1Y9I7Jdwy8WX2+u+eW5KH/hb7Jxp0CO5FjNfpryh/WkU8z5euyvum9tjP6Jvj+WM++qppPXqGHZbAmfTSs/H/HyfpKzgfco3wTuXTPe2bkp//t4Wfsew7+XzTvd0dfL37Yz/zV0riTYFdYL/4lni7D7xzl79nne+zifXLtlzwfuMF6QAtxtbnnR8D3zGcD0R05DcHf4/ppQH9ve7/fwe+rxa3b0fUjuz8v74/0k/3drPe30f9H5LFO3Hi/oN/kP5BHsxI7iP7v5U93oP8g/tEef/uxh0f010Y562vnKB8O+8HR6K8jHv6Fv1rKY9QfRB5t+VVH5b70+zl+noctyPso9H+sfCf803NzEr/MGzPNzw/BrKP1UJ889uSD/84+diWfw8jlRnJJ3v8HeX+h3/L0eia8Dd+3wmawIv7XigefoDvnj8Zk/Z++/oKb4Fn4K88uHya3h+BL2rdmj/t57l9wAP9aJm7kHMtS5XI5/4GPueSzCL5N/r/obwp7uD/vp/gr5HsANoFf0G/y+5LXlzyw5PeNYpdP5L02+abar6Gv27Ouk3z+8Jd1XXI4Cp6H/oOUp/Or7soX4+cU+ngM3sAeztb/Wvx8C79L/nTOb2n33/gp7Et/h8Q/6G0iP8h+ymP0ci2+/qP8q/5vEu+HJx8Nvk5+1cwntWB/9veR75atxddB5NpUnO1Df8l/apn3L3HndfVnsv9djHtW8qyNn3XV0+F98PrsH5JXH3gqvBF/yTvI/mRp/kEN8lylvrr4cyg6byDPZ9D3JP4PUd+G3s8uFLET/fc1fj3yvkA/n9JTFe2b67eL+Fqah/p05nvyHarfJ9jvRZ4f5vfkmz6pvi3+vuBXD+qnAf4zL2U+2lW5Bfoqkkt5WAEui/yV812Q74RhWf8gz20T13MegX7HZF075ypgDf1fTJ5nGOdZ9lUd/WvIbzW8mrw7kMeh5L5EfR/29Sv+LhCf3mM335BDPb8fiJ5yiUP6/9P4ORd4Dr46xM7Y93GFIrZL3k7yIfjvIHIZqf3Fnr+R/o6mj27wGPhbvt/FrXdg8jyfI7/D6f0x4/zGX3dGX93kk9HXiOQZ4m8ivjfpP98J+T44iz9UJdc65Lyn/urmnCO8iv+NEVePNx+cCHvB9vofnf5z7gE9yb94S3x5E74Bh5Lvhfiu4f1mQN43sn9ZKGIXWEY/v+Y8h/76wbfxN1D/w9B3SfLfYKvsX5pvkydcmh/8umF/hOfC59DZgL3vxT4aKtdBX/L+cw7gJ5j8/+gz+k0+dfT7X/byHnwMf4/hb3Dy/nIuMvsN2icfb6P6XfKda7wB5udN7OMK/nN2ziGJVyvhKvh48lfQM4LetybXdfk+Ldl3OCzvreS7r3Z7wzHo7qd+H+1riYvd+ceMvJ+yuxXoOFd5gHG259ct6OVG/D+hfga7OVX7Vcm7Nv6f6jfAj8WrM9QfIf51hi3Y8ZnJj0V/C3iJ+Dso+4f09V6hiKXv95PpZUrmXfxdI34sFm+uMe4S5Wn0cyR6K/LbCrBl8oPRdW/yv5R3Uz+U3Q2j94fIaX/8XUlvV8DGxjuPHZSJb5vJp7zyG/T3e/I/8Jd8huQvbM/f59NbI+UvtR/DTveGE9hzt5y3Zv/zjJ98qcrkf4j+hug/+dEb1NfVz/PmmeXix/70M5O8Z8FH6fdg9K3wPjQJHgf70E/Ow/YtORd7hPZLPb8X+YymjzP9/hJ+sw5yXdbztO/LTrom3oovOR+zkL4qs++K8H31s9nVQn53evZD6XcRu3iQnNrhI3ldG9jT1uxrBPkkj2uDficmf5h+FqnfbLxJ9Jf1oqzL/8yeVuv/gYyT9Z2cT4cvwcPxt5Y+D6PfKfBJ9cn3noWvh/F5OPuvgL5ZhSJuofx68ifZxSf4+y7nI/X/chHKToN3wexPfmpevx+dTcwXS3J+Cr0P8JtW9HmE+kv4V004E+Z86HLyeAeugK8aJ+eX25WcY8755axnPg0fLRSxjfo3PL8pee/6H6T/9ew35+ieUR7IvrLOX5o/lnyeT/D/MexDXzn//L34+iQ72Y/9vUX+uyWvk9x2z/l69Z/R96cw6zn9k39FL/+kp5z3zPnPq81jXdE3nH2MzLkE9LbH/76er8OuK+aeEPU1cq4w+7zK9+j/oqwHwMuyXsC+cq/EeXCI+DeZ/Swq+b4bXPJ9l3s7lolLI+lhnvHv9PzPcFvyPTfnkPjDSfBicjop+Wn0NpRcroe74v+MzFfi95nKm7K/xl4uYz+5f+ODnN/JvMcvenv//VD9Dzl/mHU1WIn/TMl+MpwK98/7T86b8o9q9Dk45x/IL/er9M19C/jrjp4/4BTx8nX9rkTPXuRVlZ99b/zy7H0LmHM5R7HPV3OuBWad6fbcn6O/B8z7C2F77f9iLxthzqvnfPoN7GEaudwLu7CvPuxuB/opT1/ZN1pNLuvQlftDxrHfrO9kXeeK5FsY/23z5tHktER5TvLDE4+1zzm3nG+7nLwvy/xHjsmfrEeeM9ld4syz+Mv7ydKS95Q2Ob/CD2b+Q35aM/Hzcnb7fs6JiK/7ks/z+HsWLsv6AX9pi8+u6NyX/fbNvTD8d1e4Vv8/oKeCef425TNgQf9ZH896+URyfIydjsV3dfq9grxvzzoq+95KuTX7+kW75iXnO9ei52PzSe7B2TLrTcZ/B9+b0TGIfa5nP1MKRdyPf+4Nn9L+PHRupOep6vfLfSQ5lwhHwCHeT+4iz0nwR3hC8otK8te/KslfP0c8nJx5Av1lxs9+ym3oOh6dk9R3w1932BVeSv8H5N4ZOD7xSPsL8fMu+X+gPAWuI/8DzHsd4CP8J/Nt/OPBxGv8JV/wcc8ljzB5hVuof6vknEn5rD/lPhd+cVHu+2E/Oe+R8x93ah8//FU8rk2udWF/9J8r3/hz+trWuKeRT3d66QHfzv4z+VYQr7qIO0fBNvi/Mucl+PnP6Bxj/JniTtalsk41Kt//2n2kXeL1NujNvPKluF16f1f8slqJX+7j9xvZ68s5T8/vFuL/NfWtcz4i+Xv4r4S+mfxyBjwHf+X0NxT9feB4/H2J7x/J9R3lKslfRe8P/Ptl8edC/Dditx+KGx3hLskLRd86cmmtnPvtNrHXA/Wf8xOb0Fcz7x3s6BHlS8irefYtxKfcdzSe/6xGz8HorK68WLlCoYjDyetLdI9I/gl5lMv+Bhxo/MPo5QvyOlL5B+2zX5Z7wR5Xf3juZyqZfzIfZf7pmnxZ/f/ID7fW/6v6WwpjL3ujL+dHc09LzpHm/Oi57Gkwu/kJnVPIfyS5TxYnRygv176MPnZmF+WUXzV+d/11hGfmPS/rKyXfNZfRf75vmrK/D/T/mjiwkPxGI2MNvN5zh7GrPdjDnvC4fH+yv9rsZDKsBQ9Sn33ml5NHoHxP8rRyHhGdyY9/BH/Xmb/vy7mOrB+S76vkvyn5Eznvyb8uYT9Nya/0/pkext2AvkNyvws55p6gOX5P/vFw418mHvxI/4vMNzdm/+4f3h/zXpnzRTlX9FfJ+aLkXyfverxy8q/3po8Pcu8gf35D/QH8ce+s+xeK+Lj+x+Q9nVybiN9l2pejzy3gZ3A4vy7kvg18lcPn6XBZyft73ufHJj6QV2X0Z5/wd/I7lx5qwTrwBPV38Jeb0H8R+92OfpOfNhaOhpWM/z57qGmeG8mOWvOPZ8gn5zeWKp8c+8y9hPylZqGIs43/jf6+ht/CmfzjSPy+Qq9HKeec2C3oPQQeAX/Ifgt5vsFuxsFC9uc9XwFuCf9E/2h2VZ39no2OHujPucJ9Eh8TP9XnXGFVfLdQbpv3D3ZQEy5iJyexr7eyL8Huvs55ppyjFDdzriTnct6Bu6Mr9wr2065H7lfgD8mTaghL86POLMmTSn5U9v2yD3gIfCr5ITmfVShi7is4HH9zE4fZa0f5dzmf0TT5l+SffPjkv/eg3zr4P4N+f2R3n6HnEvK9IedhyKMT+26Zc4/wLPNPd/LI+eGn8Zv1E+ItWy1+vqXcHf2Xev7k7AOYJ05GfyN0N0weOVxk/O+1G4LPj/P9qdyO320m7yPYy+zk76g/Qbu/8/6vvI1+diC3O/Axze+NyK9rziVmvqC/y71fR3/RZ/T3oXh0KrvfD30F8ru6UMSh8Co4T31FcetLcSX5GS/qfy56R8JJ6GyC/6Mp6BiY+/KuRO8I/jQc5n68q/L+F33rd6ecR6W/5J3mnuLkn+Z+4uTdJg93Of33JL9Z7Cr3EN3qubvUN6a/ZpGbODCUfSRvaW7Ok5TkLzVO3kChiBfABeylAf86Fp1/aL8D/qfR31n00AUW1D/l+YuTT5j1JuN/TC7bmwcbw+QPXah9JXwPVB6Z/BbynMOfF8Gb1S8zXvYBStf/k79ZRX3yOJO/2ZYfHCkudCXvh3I+hr5H8ofd+El95ZwPTF7qldmfJ9/14t2vsB757Ye+7OtvVbJP+GzWZ9HzL3o8RvlP9vEjv6it/3Xkc0PyM8jnOfznPplH2e/P+OgkrnaEuack97ysYM//Fp9XKr9m/CrJw4dLtZ/mvSF+M5udLcVfR/a1oVDEQdnfpt/3zTfD2MGH2YdB1+viz9/izqP5Ls/5EvK+hB1mnSvrW4vQ14ucDuOPndXPo9dT0J/7q3Kv1WTtXiTH8fp7IfmDnp+I747JY2T/l7DHK9lRfeMv1H5Lv4+kt3fgd/g8DX8/FYqYfZxW6quo70h+I9jHe+Tfht/NTZ5nzgtY/xqsv64l+TGPaf8e/tvm3hj4sPo/0JV1gKuM/yb7ORRdbbKvARuhf6F22efN/m7uw9pDf8k73QU2Jb+/8JN9lT+Ve9HvRvb+d/Jwcg6i5D6t3K/1EvvP/VrXs4Oe8DF4fu4Tyv089Pi1cu4nvkrc/zz3cuQcJf5n09/n5PJI7jsh39f9/gc/qm9+WK//k9Ufnzxt2J98zih5vxyqn/nqb2Jvw+F88tsN/1XJ6zHzWhXlsbk/Az+j2fkdcBK5rtbvkMT9kv2n5Lvfmbzmkvtd9vRecV6hiK2VR8T/cv5UPJ+DvtwvOJRf3slPx8NdtM/79pewkPNBxm9GHsmf3VH5tJw/Z4/n5HwVf3om+xfmk7OTx5vvXPaddc6PzE+l99/MYI9L9Tc45z7Qn/y3m8hlGHwh66vi5w3aVci9Wcn/Rc95yZOHkzx/tLiY+7WWkt8m8llt/NxvvLN4Xkn9uOwvwNynnPuTD8R3F/J/Fv+7wzFFKDsH/gKfF6ee0+504z+f+8LIZ0/jNi4UcS/l5F8cSV/9tX+Kf+yo/dnJJ2XnFyQPmH3lPszfYe7LzP2Y2dfJPk875ezvrELXVOOeh76p6DuBP9Vj5xfC0/N9n/PN+F5AHj+xzx76zz7nNiX7mx8XoWwlpI6ymewk94PnXvDzza+5H3wqvrak1zeV98z5GfKqnTxpA7xMvvPx/UTknn7Qvx27O198zz2RuR8y9z68Cd+AB7D/0fq9m71MhM3yfcfeb833kfI87Q/EzwRyrsPPN5DfCyXrPm8mvwd/w+jvaXx8Rg63Zv3M89kHr5ZzDTm/jq7sf39fsv99BfkOht/6/TrymUQelY03iR1fov6tvHexiwPJ63zPTyCvF3I/inIn+qlFLxvI81D8vYT/R/S/t35nxz71n/3Eq+AS/I3yvjcdvTXNG5cb5+nkH9PH17Bb4gD6BhTQD+ew3x3533/4xbn4e1K5Of32JJfcPzVL+9w/lfshcx9k7oesgP+27KYdbA9noS/71TOM8yb6m+g/9zjmXsfc9/gwfMG8WsdzP3ku618T+O9buWc6+yHsO/c9n5Q8r5L7n3/Fz+L8H5nkPeE3+Xq51yz5fMnfS77aTuzwj+xjaD/cvDoSPq//5KfWR9ch5F+J/B8lv+3F26rspiH7O5w8ziGPS/XTkp+dSc6ZT1vlPjzzbebXjVnHQu8T8vMaqF+Mn2O998/D5/vo35l/XAHLk8fB5P9doYgnwzXsoYv2tUr2FwbABerHlfjnAnH678if3h71eyXl3E98Nv9alLxF5WvU74beYfj8BJ/bkUdn8s+5n0X4v5t8biD3Jvn/B8qNcv+R+fWT3JPi/WKC+gP440HwOXz2zv0lxv8+55rovbs4mP+7k32Cp0r2B85mD63YyW/s5znlRvl/QXCH0KH/3Bfwfu4BwV/uD2hA3vcVing/+qflfg3j596emcYfRM4D2dupuV8v69bGf5I9nASHwnri5/7JU02+l9+z/jJR+RX1uR886y9/4u8vuAFei54a9D6NnWzMPpP2x/DXLjD3vzxD/hfRRxv6aZLvkOwP0mszcsl57qH6z32avWDlnOfQ/yj9Zt8u+3jZv5tWKOJn7LOOOHxi8rPZZ+6paIK/O5Kfn3W7kvstRqvPucfcHzYh9wfR3ynGzf99yf+Byb3FOfdzAfsqPf+zlr5zT3rp/egL8z0Fd4cr6fku8j0u+cGwHPnlPv09c48Yez3A79vzt5eSp1xyP/9Ez+eez3zftIAbtLuenG4m31rs8aaS+1Vzr+rW9Pc2+p+C7en3T8+1LRRxLvp3458D9f+ydvvq/yXlE7T/Tlz6Gn4J78v9y1mPofdOcHm+X9l9bXaVcxI/0F+n5OOX3F+be233z3ks8tsf5v/X5f9J5P6A3CeQ+wNy30DuH8j/mcj9A9Xx/Sq5faP/l7M/5PfZyZtVzjmSHfhb7qfM/Qv5/2AnsLfnyP3Z3BOe96Pc/0/ubZRHqY9d5Vxe6f9/iF3+0/+BqIuPU30H51xf4l9vv9fzXM4FJv7VId8X+cUzyjXxVws967Mvlfcw+AT97Z3vSPgl+Tfnz7Pgy+LAT+jId9Nm/JV+P40TDz+jj8Pxs5H9nZT/V6HfV8n/I+2St5c8vuONl3WVYea7u8WfUblHMPMHfeV8Zl385nzmL94H26Ojkvj2C/6SV7AM5r6z3G+W8+dZB7wNH9PFx/xfxR/4XW/4Df5yv8Ux7LorPIj+ch987odP3C0X/8J3zulnvSLrFLkX8d1/uB9xBXoG5n4O5Qm5v4Zf5fxOzvNMyvkFdpHzka9qn/ORY/Pennu6yKlN7m9R7mn8n3OvI/lONZ/XFKfyf0a/Vb+YX/7K/u/j3/XUb0b3E/DtnDdh3y+Ry/zs42afhX4+ST6A+PEgzPm6/D/M5APkHtncH5v72R/hl7PhwfTYK+ebyGcdfEf/D9Dv9oUi3kse88lvS3KpAsfr74Dkv2n3Ncx+78Ul90cuY/dLYe6TrBv74Ff/+//+8Jm8iqroPTTf0fpvyg5zzqj0fFF7/W7CV7vs55DPVHo9g15PoI/l+D8ZP8fA3DczK/7Nf3KfWl/93kA/J7Pn3llHzT1v9P9X7gPMfSDkm/s7aqMn/5ch/6ch/5/h9wK6YP5/UG/+/W/0Dct3pd+z/5L/J7keHSeS76G5fy3nJ2DuZ5iqfTvtcy9H6X0dD7C36TkXCRfi/xrjZX2/P31nff908Tj3iK0tuT9svXj/FHvJvvuW6JtLXvPgftm/THwpFHEY/SZ/MfmM2d/Jvs6u5JL9nWsb/9/65H+ups93+eNKuAq+lfsFzB85p7aT+Jz7lA8W3y9idzmnlvuY25PHQHF+lffI/yT+su/c75X7vnK/10n464juAfSwRvsj/d7ecyvJaXtyXlpyL0/un8n9PIPRfal+r4B1jZ97yWrC/D+Z3E/2N3200m/O4d2V/w+gPDPnGsWPpvl+t893OXpyP/rJyf8itw/p4Qd2MoR8z1CuaJ56yfOfst8exn26UMQRxl+u/8r2nXK/2zdZf8v5IHGpL6zo+W3w352+DyWHI+Av2Q/mb71hf7gAnxej5zn0PQv3yPpr7g+Cl8JvyDf5uVfgO/m5ydftyr7+Vn7Zczk/cma+3+DW+Hsp61vscYl2Byjn/3XluzLfmYfyh3xfZr8h36X5Ts33ac7D/aL/3HOU+41eyb3F7KhP/p8n+8956tUw561zD3pL7XOuOuescy96Zb/fyY+mFqFsAXl08HzygNaW5P/0yHq5eW2See4wfP2Z89bics/k62V/UryZCr/B/6y8PyTfnRzHKfczfgX2/Sa5zEfnLeyrpfrhWVdTvsn4z6Q/8a0/rJ/8NnI/FrblBwexzxXK78Dl8FL2dh//uB/mnHjOhx9FbzlnfjTM+fIt0H07vk7U/zz1j9D3bDg/99mkfcm5jzOz/ky+o9FzB7wdVkX/f3I/GLtfCo8RH47R3yvorGWco9jTDHLrrJz/E/QA+a03H/RCd/6/0Az1LfWfPKH/5v6tnNfzvvpkaV6Q+hr8c9vk3cKL1PfJfSf4qm38T6Jfz+f/fOf/e69jH/8DGyCAG3icdd13+NfT/z/wd2loISop5S1SlFRIRh9lk4zspoREVBTJTMooO2QniUiyR6KMEGnQ0FASJSOrKOF7Xb/X7f65rs/r+nn/c7/O+zzPOY999nn1LF/y//5O2KmAbcsVsKP0xi0LOKRKAbtuW8CpzQpYu14B5+5cwA67FvBV+T+p/3f1Hi79SfMCXle3gC3rF7Cycle1LOC8BgVsIH9nWFZ+GfmN0NG0VgE/2quAi2sX8HO4YPsCrpXfFH/14PXVCvi+/CrKVYbtlP+1aQE3VCzgFOXfgOvl3+/7Uei7Cx7dooBb7FjA7bW3m/SF+PubHiqVFvDZXdDh+/pbFfCn7QpYi366yB9N3lfCd+nhBfV/vkMBj9NuB/gHPTTduoBj4As1CvhzkwJGb/3QF31Gj9vhf6V2foIr9ijgL+j9uHIBX61ewObo2wL/dyg3L3JU/07aW8T+GtPTTPk7qG+D+htJ192zgEdtUcD6NQtYoWwBv9DuvBLlYR94lvZuKVPATlULeBM5PeX/t7KHayoV8Fp4NPoqksNT7OGr3Qo4Vbqv8vtsU8CPpP+QP5Det4R3+649/TxZWsDG9DpB+hL2eSD7bQMPgg+iryf5doNdYS3yu5McnqefnnA/+T/i9zn0/SBdi33uUKGAdWEdOJL+j6ujPPpbii8bxI8B7PouuI4+J5LTTP7yvDixUnxoTu6b2NOfsBr++suvIx58yG5ukV6GvxHkPZK+1/juEnbQJHrDV1nl3qa/50vUzy9vwcf+9PMluTUlN+5ecqLy7dndfjIu095D5JP4/cfuBezKD95Q/hblDoddYXXlz9DuVHS/if8vlP9cv7ArXAxvYz/9+fcAeCf5TIl/NirgtdpryW5/VH8H8WOI74+THsA+rmcX18HL2NX28u9lz7uLW/vhv2Hqp/djYXv2u4vyqwtQcimkppK62unl+4nizgR4CH5ORtc036cf+UD75ckz/cdbvvtQ/gPi0GB8j5Y+mT46s9dD0H8wnMN+rmMf79Lrz/yjlDxvZLeXwlfgS+j/nB33oNdZ5Hg5+fRmr0tgdThB/UvwX08/cRRcn/iEnwlwPGyi/NzSAs6Dc+BF6KuIni3Y6d/4W0FRp/H/+uJ6V/Iv8d065S6HP8NntT+N/ZxAP9ex43Lk+wS9XCqu7C/O1KHH2dopA3vAiuR3oX7nAtgHDuCvN/OXD+lvW3RVUv8k+hpJ7nOlJ7OPx0sLuB05nM9e79F+f/qZRe5nk8/e5FtLvH1Y/iOwJ/3VUH8N9dZX32HoW0N+38Bz4Hb4eAPdU+FG/rkIfW+S6xtwCuyKvhvJ/31yHy79vfj9NPt4UFysLQ5XSv+PniXkOzPxTf3v0Hdt9vQzbI/eV0t9r5/6FN7MPiqRU8aLqxoWsCf+vpHOeLGy78+W3wI/e8Hm8Kb0j+xyPr4+hQ3Q3w3f3eEweA/5f0Jus2AL+Cv5Haq9Q2B98WUVenchr07ixAjx5lp8NBbfy6Cns3IjpTvR5z7sZl/YHn8T06+qfzVM/xq/HEJPxf55IX4vglvT24nss3XihfgwRvo+/M/hj3PhbLgr+m9nDxPUux28W/vHq7ctvi5Xf/+M9/lNQ/gW+Vein0fxNwaOhSeTb5f4B/1swz/PQN/z2j8ZPftpv6f2p6P/UXRXgy/iv6n6XmfXr4nfDZUfoF+4BK5DXzv0P4eu3fH1vHRr9N9pfDMallfuP/S/XH3L4I/s7daMH9G3I9yJPCbx7xLfD8LXHrA++dT0fS24PXyBvAbi+376WSi/Lfoq+H9leKr+eKb6d2SnG8nnP/yjhf79F/Hudv3OaPHqHfXf5P9X0+OL9NcYjsJPN3r8VPze0v+PVd8z2hlFzh+R81bKHer7L6XflO4E//b/52BD8p2svrbwM/wuVf+x7KUO+9+SP48hn/7k24ncqpFjJ/axm/IZ/zWULkc+o+hpCXqe1m8eL380uV8sLs4U5ydofwdxYYnvHtAfHKqePzLPI+/K9PA+e/vE93PgLFhX/cuUu4ocf9Sfz6L/7vrly7UzCP6O35bsZQD5HgSvVL4avs7V7tbSJ2n/cvI8tLSAv5DfB/ynAf+4Ov2C8mPIvyt/rUpP3aQ3aP978kgcfUH6NfroQq/HoSPj1aeV/xX/A9jtJXAb+htDXo+z44HoXEDvh6l3h4yDpRtp/152NxreA4cp/xC6/2KXbSN/9L3DXt6G0+Gzyp9ILsfDE+Dpyh+ceAHbweH4m4XfjvyqFTv5EB/76M+q4f9I6Xr0c5D4cCA8AJ4kfk+n7+bGcY9nfKr9ZvTVkxx21r9lvHoMfu5Uzx3wSuUfVN88drGMPj9jX2PQPQK+lvkY+X1N7jf4fqD0g9InZX2CXE6Rvop9jyenT9A5jn6n8t9Z7OVm5f7DnmYrvw1+t4ZV0b9Z+5+yh2uNe+ZJf8m+xqG3LtwRnkweZxSg5CU4HLamn73J80X17iO9RvvPsutJ8FL1bmJf75HLD+LEO1nno5+si2WdrH76J/FlrXLLyOcZejo783v97iK4GE6nvxvJZVd03yR9uvyrxZPPtPOUfuhj/I9j/0cofyS8Cv9/8rdNsEP6Q/mr/P81er0/4336OUH7A7K+xR5ekn8+envDC2BP9L/PPz7mDzvBGtr/nT9vgFvSz9HkP5+/LoCfoLMs/71aP5J5U9bpviKfo8SF8fSa8dM2GaeVFvAFeC0/mI6/MfiuQU63k8+39P8BexjE/i+Dr+F/M31vgs/T34H8Z7b+6Hr1z5Fuqf6D+dNSdF9Evn3kd0P3+f8i/4r4n0Hv9fH9vnTLxHt6aiH9H3qawf6vYVdTxKth9Hcauqb47nW4q/ZnSk9mp5Ngxh1txdXL6PFMfnMo/R9kPPQH+19knHEE/SzF311wGP6uUP9q338Dv4aDtfOmcrcqVxmOFP8qsacr4KP0fafyU3y/ll28wD5vZn/PJB6Sw2LyOgz9tf1/qfqz3jMb/evpZRrsTC+R/3ryrFVawN+lz5KfdfcHYfH6ezP8/wV/IufL2P18fnmc9utpP/OxXeRPhM3ocXH6D/L+BGZ9Yi3+FpPnBPZ1sXo/I9+Z6PkYPqF/GAB/V9+Z4tRadJfjX3+h+w10Hwfnk39H+mkKy8CLtD8SfdPZ/XPwVPJdwd/Px/cF8F75v6J7JvpeYc/b43836YZwV/ik9uemXvJ5Ba4S/2pnPwC2E2d+Ur4xf96dXH9V39b8axC9Z979hvzbpMvjbwL7riv+H6D+l/C3mtxXiNPLsj9HXk0yL0TPAPmV8VsJzhMHvxff/hKPt2Gve4gXp9FfefFuBrqH+24o/mqjay25ZD9gZ/rpSm612VEn6Uroq0EO2Qe8o2j/r45ydeGOcE/5T7CnjuTwIfq+YZ8PiwcPwW8zX1C+LzuPPa+Vfh19TxetPx9AjgvFoR+0exZ5fif9nvJ30eduvl9G/vewz73o/Qdyuxfui75+6H0pdKt/sfg3WPnf2cnpWafAz9XkcSz7mE3fc9n3zfS2mVyfYV8fZH2DviaIL7Pp9We4Dbo+ZCcz4WHKV9HeTH7+EdzMvp6zvliO/IaiK/PDWeLJ2+LMz3BL35+ovayv3li0vtrK9+vJ4R31bQNrKv8jOneUXoaOixNv+enSrH/T3xztDmKHdfnP+/J3pfdn+ElD6evkdybv7HsV74edi87amQcq34h89hX3WsK9YW/yHyDdQrky6KhO/u3Q2yD9mji2VdH+wD/k+G7WF9R/JHmtZ19HSTeSfwZ5dYKnw8/ib9q9PO2qfx/tvqzeFfS3i/jcAf0Z/8T/JxeNfzJvXfAv89f92VEz9A7OuqV0a/Z/FnoPpqfz5DfIeissW1rAf/j/PuQxGh9V0DtJ/pXiwwZ6ms6Pj8j+J/u7Nf0GPBGdLfD7tXbrwYo5P8Jvm8Av2NcK/BzJ7jfxy41wb/J9Hl8ttVsRbtb+WZmfZX2ZfX3B/5agZwb9bMw+YPpf8Wv+v8w/xpLbY/BReCD+HqfX7KdNRsfHyv/JXr7C57dwIr3fQO7VtF8Vrsr8w/rTEHxlv60W/XeVP55cj5S+Hv/fqe97OFt7Pcm/MXk2gi/AMtr/PutymUfDx9h3Fe1dQb8t9U+16a+m/Fbsdp/sr2v/V99n/L5Y/5Tx+8HobpN9C/1L66yfq29/drCGPh+ln7LsvQ27WkkfXdFfjzwr09938Gh89hYHBtD7HuJDFf+/Bj3N4V6wV+wf/x3Rdwp8GH8v6tfnoqe39GLyOY3dvgtX0c8Jvv9T/ZvhPHSfqnxd7d2M3paJp/TThvzuyXqZ9Fj0jcHPevV8qP77yD/7X+2K9sGy/zUo63fk/i459mG/L5HnAnS1gsPZ71r2UIlex7GTJ9W/B/sZD/9C7z7qP6C0gI/pHxeIu+fl/AZ/aAKbwn3JYzW+/0m+eHms/F3oOecqdraf15n8VqK3snJ/S7cn/8/wdwf77sUeeyv/WvZR4etwpfKj1DcR//dLLyG/uuT/avZ/pBvnfI742jXr+NLDc56E3FaSd/H65SdF6/qzi9b3Bxadu1pPjzl/lfXTP7V/Z9H66e+lBSwvv7f0G8o/HHvktxtgD/nYLlGs5Em4mdzLs8ctYDnYMPGJXy1JP4G/nL9J+2n3CTiIfM5U7ln8D9e/HESeY3Puhv4ST09Q/0R20Q5mfLwv/VRFb/YvJosTP9HvBu2th7/B28lnbfrzxIOcA9P+HN8vFBcm4H8n5Zuj/7ScGyyaP1ZV/+H0ejr7+VV7T2TcaJzTKvFT+To5v8KuG+H/Rfx/S49r4Bh0Pp35mf7+oczX2fca+s36UR3yL+5/Wsgvr9412r1L+b7GjWPFlZb0sTjzCPmt8X101kEzntNuJ3rvDDeh923yG5txIj9ohb6bfX8jfJK8JssfS64z8LEh8yn51Y0btoXbwZOyPkyf76v3LvG5NfleIj7uwC4GSE+R/536JtHz99KfaH+v7LeRyw/iQXX8rtRvd6LHM+B95NeBPczE17Hk2V38ewD9l7Crzb5/k//91+78v6Xv9qO/r7T/A/qakP8m7T+rvYvhZDhE/iDlcv7pMjhS+29qvwH9NCSnyuTTmd18pd1HS9Unf0f2WhduzQ8vpr+ce8o5qJkZp8r/Wvur4Tcw85FZ2v0WHfvS14P4Gy7diZ2/RX+j2O8M/vZeznGp7w/8D856tLhTU/75+Lu1ACXnwrdhKfrLoasE3qLdeujfS393Glwe+uTn3HXOYVeGOX99J/nVhAPJbxw9PsKej4G7saPz0XeOuPE7/3iEn15Ofj39/2x4GPsbwv5m8Lty9FsW7kc+8/njvvBF46m/0X8l/iLnK+Bp2s++WvbZJpBj9tdmo2MP/rjB+etHyG8je6uPziPQf6nvj6TXo+EB2vtH+9fiZyi8Bo5Q/rrMf9Ivss8O6Kos3lSBw5SL/5Qnlw/Ipb/04/j7mj5PpN8ns58k/07+PwoOZOcV1J9xR6OicUDGH3Pxs6s4tD1cmv0JdnRw7pdk/qX9A+hlB3r5XvqdjK/UPx5/4/FXlh0OD3/k/pH4ORy9M+jrCPpbh77b2M9ceruM//RQ/hr2/aj0Y1mnReeh6FtAbxdlnkd/fyp/uPTt6O+A/r+lH8y5ePrNfm72b3drXMBLyLMi/Y+T/lL7lbQzEp/VxJ8e/P0s2BPup/7P0LOHenqjq3nWBflTC3y/I92d/keQywRx52lYWfuZ//WHvYvmg1PpbTq7e1N6ivrvoP9p5HsXebVT/kN0PUGPR6Qe8v+NXhfhe2HWeekv/nYcbMLfu7GPY/Gbc+F7seeZic/4/6O0gFdK78G+q7P3NspP52ed5V9P3x+x4/jbRnquj7/Ryo2Dz9H/buymIWwEP0N/f99fDPvB+fJrZn6pf64hfRn5780OFvGbe9lHxk3xhxmlBYy/xD+2wHc5WBbOor/P1XM/vY7QnwzI+KMAJYPhifTXEX5OXnuSY3/pHdlhOeuvw9nHXdr/SP33sZfz5N+t3kflN/8X/3iAvazx/VRyaMx+nyC/uvq9hegro55h9Jf10A8jL/PrrI8uV98n7O6wnO9nH7ew7/38f5j0UPXfJE7m3EY3cq6s/l/wUYb+K8rvyz4fyn00dFwE35Cfccns3HOIndFvefUPQ0dF6Z78px7//kf7J2S/Juf/5K9V/h7p43O+1njyIHbfJvMr/FWin5wT7a5/maj8KeSd/dra+JpftL83NOsu6L+Bvu4xXsh5uFJ0V9J+7tVMZufF92tW09eJOWdMnouzv0Hv2V9rIH23dhqo70v13577gPz7GOXaw2Ph9ehbzI6ao+cS/GR+eB559YIb+dVR2t+ZXBKH3oNj1NuXX9ViH4lHj8gfW7TuPK5o/XkBuy7ht7/CrdlPWfU1xNcd0p+j/8Hcf+GHb8DJ5NONf1+Y87Xyt/X/N+lnXObVuX9Afs9q9xZyGQq3zH0fdPaFj+jPJ6Jvb3adcWFV9vai78eS+8vwE3a8G309Rz65Z/Rv94v6qj/3jHK/6GvlVsOe9PUy/g7j733YZV/4Hv1dTl7dsn+unW8y/kB3dfUcKh6fmPsd4mLxOeR/0H1QxiFwAnm9rP06+L8a39fCluT/E3ker1w3/Ut7+q+KviqwCzn8rfylyj+Ar4E51wXbsbejcv4UrsP//ujLvGzf0Jv7YeSWc44di843vkxfd/CzxuJjzuc/JX8p+l4Wnz7P+Br92WfPvvogcfN+dn0ffCT7bfz7KHRX8f/sZ12GvlL+9aX6c++1D9xW+7+h+23tN1F/0+zD5r6xeHwb+Wbe8Ay/fzjnc/H/Pbt5Gn4DD8n6HLupAD/i54fKn5XzSrn3zL4zv95Z+7lH+17WC3K/uwAlW+a8ru8qkdP19PNazs/AZrnfi64u5FsOfTvmXGrOPZJj1n+Wkdcq9pZ1nGZF6zc519ue3eW8b875Zv27vbiW9e+shw/kL9+wv8xXd5TfTPpLftsYvWfLX8CvFpUWsKz06+R7gnqPYkdHw6bKH4DujG9awx7KJy49LQ4Xx6fMTzMvbeP/mZ/eTj7F5/tz7n8jeqbmXj//HCM+H535hLhzVM7ZyX+PvmbADZnPoOMS/voqOQyU/pH/VhS3fpQ/Rz3Pqz/3/3cqegcg9/8bibcP5n4i+XVU/ip8d8s9Afzv4P8POD+ScWrxfn4/dnQJvi/KPj39Vc/6U+7JlBbwNvWdw1+/Klqn6JN9CvLOusYw9G2Rflt/9Qa9r5XOOG6o//fmj9dJj9T+pqxnaHcX6VW5V6adyCXnASKfi7R3a9aXyGEw/9uV/NOPdiot4Mrm/0t/6M45woxHl9PrY+ziC+kauc+lXO5lPEX+GYf2J8eLYT/YRfm+9PJy9lXEu2e1/5u48jtcD3vkfid55F5Af/Kdv/v/1ttfO69If6N81j1extd/4DPar6S+CuRXWfoI/HXWz7wMR8Fzsj5C7020uwe8Rvvn8Ic7co61tIA38o/Y7bbwbO23UL599ufhW/z1cH4yKef5Ye47/4X+H8TP3GsrQx4d0T9U3OrF70+CE/R/S9G9ALaIvtWf8dnDub+tnQvRn3tXOX+ee7y5vzsn8zH+UFt86cb/P6Cvx7N/Lr2U/HZlH33x3Yz8p6FvSO5/afd0+BT/WMnuv4I91D+ffGv6fio91pL+VH76pZX/0j9dqP1h/OaWnBdXvoX0Mei+OfcwMv8gly3giJy7he/j83jjmt/INe935N5zzhkX33/unvNo9HCR/N+yP4ueiexyEfxFOznPuUPsNPtxOT9GL7+xm1/hyeTfilyas4+9YF98ZV/kZ+0OYeeDyLcJvY3N/rjxz2Dyq6H9mnA7uBZ/59BXxh0Zh2T88Sa9R//pf3N/Ov137OYsmPvX17GXITAb6Seg7wZ6rya+zlT/00XvOxxE3nnnoXj+lXcd2hS973CVdo/VTofcv2Z/67X7O5yovRX4b4HexvBb5bvQT84P5dzQ5JxPCn/iw+nwVFiFfLal/xXoqSG9QP7Z7OlCeukhvU7715J/JbglbJv+ib5zDrQfXEa+VxSgZAT8Dh6UeYP6esHeuS+Z90fYY85J/ggPld9Kfs5n3A4Xks9p7OpUmHH2DeT/Av/NvfLcM8/98o/V/4I4OJ0eH6T/3uLGefzkxsw35V+n3twzL76/Pq4AJYYZJYZrJU30Q2+xr2nwTPQ0w38P8W8Cvivw/4fxdz555pztFuqdq//JfY3v8LW+6P7GKPo8VHy4W7qq/PuL1m+znvst+5jG3muhb6p0HfbRhbxGsuuu0mcoXws92R8or/w+9Hsi/zw++2/pH8n/FHTfoP2t2P01WT9lT73YRc4X3ZN92qJ7gSeRU+47Zv8o++vZR8r+Ufabb6C37Edn//mejDfwn/tGuV+U/dzs82Z9rVS9G/jt8swb1HMA+eV+xLLst4kjuR9RE181YO7L5378S/q9ftJbqXeM9Hrj6GboOy7rc/qJbYvmD5lPZP7wEr2+AHP/czL5dFbP1vxsDT7qoz/3g7MPkHvCuR+8Z/Z72G3r0gIeEf9hXy3EhxX4/4V9VuE3K8m3lPw2KL8N+W4Fb0Rfe/SNQvfBeT8g5+vUfyr6rkfXydKL+GdX85Z3tHt/5jPougBdj7KbPtKd2M+/3Ws6g/7+yX6u9tN/NsBfP3ZxLVwFz5PfM+eLMs6SvoD8u6a/005H3y3HX841fMf/qkj3Un4h+d1Avgtyj1F+3hcbUfTO2Efyt879nZzbgXNyfpM9fge/z35p5velBcy7EAOkjyC/nuyne+5twq1zHzrz69yLgHtn34g9nEKf19PfU8ofTN95x+dA9vCp/89GT86JZH+0Ff4PV+8u8Dz+dC/6W7Krsvqv6eQ7OPKT/0viCzu7Wn7ug72ae9CwBztbJS6M137e7+mfdx/Sb0Ds/ff9qeyfZ78p++jZPx9K/r3473nwEfLLfaLcL8r6au4XfaTdLXLvgp3drvwScn06+04535DzpvZb8l5ixi15/zLnqnLOKu9L5XxV/D9+f0qR/w8yHjmbYLKevlk677k9jL9Nxe+9FaDkSng2zP3z0dLd4euwmvYbaucfdtUm5x+kn8n7m7mvp7+alP1KmLiZOLpn1ieK/G9tkf/twD9642sDfusof7l4ewUcDNfwr6H6o2HwetiWfDqR72nwEeVHab8ivjbj90z8neL/jchjILyWvJ7Fd9Z/Qtfp5PAb+t71/1q+7yXdKvMr7eSecO4B5v7fl0X3P3MfNPc/f8m7YOJXPXFkrvrvyv1+dBaf795Veyvwdyr6fhEHvipFf+7FwNPxl7j2t++L49u+uYebeMufntE/Vtfu7cZxrfMOnP8voZfcT18GK7DfU/jrt/qdtXC9+Ufed30g43rYIfc38DuaXO6DO5JfRXJ7OOMeuDHvD5Dv6rzPI77slPMR7Hpc5nXSw8kn8SrvSGW/KPtD15NvTeVvTT+i/S3oI/cLbhcfK+DvjKJzhzmHmPOHu5JzeXx0J/97su7MP1uTQ3fp1bmfVICSIZB6S/bJPJrfnYr+0+AX5NsNXdm3qY2Phup/VDw4lNzbofNv8p1MHnvn3YicgySfktyHNG7IPfhByteh/+1hbdhW+Vbsegk69s46X1H/trion0v/dj555hxXW3hW9gHRM4Ue/8o8iHyGZb0r5yPodzD9zRNPP8u5SvKckftxeZ8y6zjksY7/TMZX3lcelH1o8hlmPJh3YIrff8l7v2XUn/eA8/7vOPIsPl+Xc3c/5jyiuLkz+/oz50eyz6/8dtLf5b5L4nLGS+R/MPnk3YdqeedHfMw7EDewn4n8tj397pXzpuLLf8Td9dLt5a/R3l/4WKGe38hvPXvPuypPwxnk3zHrmuQ4Mucb8f8WvdRFZz04Xf1lSguYcf54/pPx/Sr1jWdXo8ihNfuqgt8r+dee9PVxzk+o7xX2NV97U3LvyIJG9gMWsbusP+U919v5bWvpHtkf8/+x5FZP+mj11GEPGSfknu9uWR9gF1fS/zR4AX9qoV/dKede6KsLvDzvq+fdo+xzSR+t/vvUO5T8rss9iqzLwIq5f4++5uQ3qAAl38P9xeGcm5sCR8KW5Pmn9rMP+Kr0JPaxKO8i0W/uyed+/Dj2+hi8Rv7FuW/O/2fyv6ulB2p/hHK5Z5z3VfKe28nKtRM3LuAH9eXnfPYfRfd/cj77l9zHyb0f7bys/W3pe8vcL2OfR7D/heJReVgBvk8uOVeUc0Y5L5/zRdn32AVfF+aeMfv9JveLYfbT6jf73//nu9VF+eO1/0TO2aP/yqL98x9gDXZ7pvafYY8/wlPZ61L8X8outoKz2McS+avItx89XkLOF5Bvn6JzfzkHmPnYHPiH+r4WPxeir5Q/9zLuayD9CfmuK3pX9ie4lH9vK301OzqBn7dTf4UivccOov9rcw+itIBj4Vz5eV/5ItgX5n3lo8n7GNgedlS+MjvK/d3c58393UbiYu4tXwmnio8r2fuf6D8o93/k16L3jdKTc74l7zvn/fO8W0ePH9FL98zPyK+L9ILcn0bfu8pdir7lud/i/xfBp4xHjtT+IeTdQP0t8zsT6n8pvwsAfxAHXpM/kLw7w66wO/k10N7H5DwLTkn/p90P2Nce7PTrovOnJ8Ld2dM77O8xejtBO+fnviX+xvGn4/nXOvhP1on5S+YlF/CzzFty/zf3fvN7DLn/e1RpAZdr/2jpCeYnGU+01d6r2jsBf+fi9w38nZP7UeRzGns8UPnROV9Av8+zh9wTy/2w99A3lz7zjus86bdzf1B/UfxuXtbH835q3k0dIv7n/dS8z5ZxWt5py/jsEvraT7t5p+dw+qlKrrn3OiLvfaBvsvpfUW/Ow89ifyejq4byeW8278u+Tf4/yb4NHpH5Nvv5MucG+eET5H+V9m+kl2n0lPhbUf3z9Atd2Vfi93fiQ94Z2ARLyLe06L3HnAvL++Q90fO8+p+Dub++UPxYlHG6ePA1+dQuLWDeaXw87zmh78GcG2Jn88SnR3J+14Qv94USFxfIn4m+DtKnq2+37E+y93Ny7oB/tqLfu/L7GuzjXPGgu/a+R/9X6DpD+pj0b8q9n3eJ2dcp8iuwp9E5R6f+bvLzeyQPsMMTpf/K+Sz8LYZP+f/36Mv70nlXOu+b5X3pI+kz+3zRZ3X5WY/eTC5Zr876dN5feIKdd2M/C+l3YX5/JeeuYdW8T4afUXn/A/81cj5EfDy3aJ0o60PHF93Pzb2T3M/N/DXz1ksz7pV/Jf3m3OsA9eT3DXJ/PffWz8s+Gjs7DN95B+jQ7DPn/iX5Hk6uzaW3xF/eQ0pcz7tIK8m/gvrKZ18cf49l/4U834VPwX9yf5jdDEB31kuzPjoNX1XVXw1Wxd9RRfcWby26v7gV/W8Ns//bi/8s5J85Fz0U3TkfnXd7865G8fu9OW/XVX7O42U96i3xbT/xshW8QjvRXwt0daGn4ehvwo7Sj6b/nKf9SeLRev5d/PsCt7KnKv6/Mz13z/iR/9Wk1/yOUH5XaIxyQ/FVw/j2lRb/S1/oyu8rhb6XxbOJ2r2J/i9nP7tkv7HF/5++t/nFfPhZ5gPqn6JfiR3Wp59b6fdAelhOrh/pf34n/9KMy5V/H96R9xbobx28L+sd6L9K+ZxzH0OPr6H/Lu1nnvWo9Pqszxadv8l5nOLzNzl3U0E652+aozfvbLeAeV877yOcx4/yTkLeR+ifexvoHiad9432y/tf/Gx4+i/05F24a3LvMOeH8F9Z+UrwT3Y6jH4e568HwUfgA/Jz/7GKcrmH0S7l8beUHeQ+d+5v18v7ErknoJ4VyrfP+x7s4+GcB5d/ofw98Hcu+zpMfjP+tydsnvt5+L+c/3Rg19mvfZ7+897jVDgE5vcXnuRXeZ9kEhyv/oz/M+7vSY/Vcp8r7/nQX33pB9h37tflXl32Y3K/rp1yddHdUrqB+peQ72K4NT1XZgfnksc5eU9N+zdp/2H19c37bfTzBf6PQddCWB99y+S/R155l/zdvEOJ/r+K9q2yj5X9q8n8NvtW2cfK/tWanNvA3zfSlbR/pHYPh0fAJ9nfa0Xzv8wHM/97gl2Oh49nPKt8D3Z3OD1Pwv/9eV/D93XIfUDmR+zrHv7xrXL3Sr+Wc534fADeD7vK71GA/55fmwpraz9yjJx7pP8jp8g3ch1CzjkXezO5Tsr+S8YL2l9ZWsAvYd5B+5v8muC7n/JttD8YXXnv/qnEt+hD/R3yrnLOecHmOX+Dj3/Uf3LeS5C/Hf/Mu1ebpd/iH/ujpw37vgBdDeAIcvmZns8gn0P8PwcCuqDrsIwv1Xex8csP9J3zu3nfpWLR+mulovXXvEf7Isx7tXmf9rasH9JjObjO/1vhL7+vkd/baKMfOxX9gzO+gOv0U33ofw28EL6DvtvUcyu8A9blf5siR3F7o/Q88iihr9x7XA3PZz9Zz98o/me9/03rD7l//VXeOc9+KfvfL+ci5NcRvy5FX+7fncp/cw8v48tFeRcg8ww4Wv4ocp0Vv8Jf7pc240eJMy/nvDT+JqPvGfhs7i8pP6zo/Ylz1P8IOeWdir2NXx6nz2GxwwKUzIHY++/v+52LnubqyTh3Sc7XZt82vzMpnd+XXC6dc/wrMk8gn7Hk/gRcJx7eyn7y7vCj9NuRnx6j/Jz8bk76r7wDTL+515jfbSi+3/gbedYWt6aytxXkW41cc28p95hyf+kt/dpw/rBd5uH4v4g9rIDtye8h8v3b90N9311+U/m5flzduGG7nK/IeW8Ky/r4VUXr412L1tezXpP1mV7a75r1B+km7P9c8p+q3ZviZxl/qLdq3jshn/7Sw8m7ae7Pou+OnIvwXT84TX178f8u6J1OEJvhgeR1L7r2zDs3mR/i73r2Njzn8GAb9tPE+PT1vIMq3Un9O4mTmQcWz/+m4yPnB9vi70D/71dawJqwlH0dh767xZs9YU14rPq3UG5HmHcs/pbfmf19wD4eZ2cL8v5Uzidpd1HRe9at+OWQnNdR38Xsr3XeN/D/KVkPzfuNRfeKcs8o94s25l0d+CPsr728J5D37/Meft6/f50c8z7yVPLN+8jZN92n6J3k7J9+Q/+rYVl8PKb8JPXtqf7JWS9h/2dkfJR3veC+5JP1nebknnWeW/B/X87rwXth45x/Qk/ibuJw4u9V7LF87vXDMujL+eMXi84h5/zxXkW/TxB+8jsFp6vvAnr5TLoP+eVd2uW5h1X0Pu3e5N8n53aky+V+gHbyzu4Uerhfft7nuQ92K3qf9ZT8Lg2/L35f+SDtNub35bR/r/LLtZ/3O/eBB+f8s/4iv5+0qfj3k8itXM4H5n1YOJt/LSs6x5XzWxuVP1P5Q6TzXuE97P1emHek2+Z8eH6PA76j/FD1z9f+9uy4I/utAa/J+465H5PfO6C/vFt2nPiX98ueY795zzv3VnKPJe9711TvVAbcX7x/iH2PJKfq7PgV8nlSfvrt/I578e+3Z1ujH71xt5J32U9H5UbkdypzD5T8ct7ot6LzmS9qf1PGzb7bnN/zUz73fyeIr0/BzujbRbulOV9a9L7nq+hejt6vpC/VfhVya8pOm8BtfZ/3P/P7ETnHcAz9bE58yvtoyi+nnx/xk3uwq9hX7te+xQ6nwZyTfUX5fpm3Enx/6Vfl53epR/Lv4t+n/rTovN2xWYcmv/8Ds6J6rXicdd159FfTHjfwX6NmDa4GpV+jqUKiZCbSgK4mMlbKWDLligxRCmkwu6JMoUTSYAqFZKqkzISMXRm6qDQ8az3f1/tZ6/mudb//vNc+++y9P/PZZ5/P3t+rdiz5v79LKxXwYjhznwL+q0IBK8K55Qu4q/oJpQX8eOcCNlR+uG0Bz61fwIVNCziugfq9Clhdv5Pgq/p/ds8C3l6rgMvQ+RG8ok0BD6lbwMPhUnT8tW8B21cpYAc4t2YB+7cu4H7oGbGLfpsVsK7+98NPu3rKsD/668IF5DFIvzfh/yzl+erruf9m9b+RS33jdyKv3bR7r04BV1Uu4OqqBayovy74WrBTAY9Vnq6+164F7AFPhBcYfxB9X6D9bOPsrv1ZLQv4x94F/AD9B2h/Z9kC3lbOOOS7RH+7kWc/ch5UWsBz9FfF9Q34r5iy8Xs3LOA+5NIaHqz9J+j9HFasXsBD1NdF34no69akgKv0s6hMAc+FF8EVrQr4ReMCNvpHAe9D/+vss3eNAk7Cbxf2OpH9LCTvffUzV/li9A1Hdzt6nrZDAU+n/6sKUPIoPAtuZt8LjXecdt/h/2nyOwjdd8G7Yan21/O3qfzmb+X56q/V/23sahr8A//H84eK8Dj4K/ndj7/r0XcDPBx/r9LLV/TUWvl87U9wvZHrh7OHi8ivPvpOhNXoYSf9H+P+luxrKXtcqP4GfO/jvp2VT6a/09nLGbADPZaon0pvz7GDP6qhT/1ice1n1/vx34/4UYn2jWoXcLn7XkPfteT1I/wWvks/E8W9yXASfIf8ujcq4Hno78bum/HfLfy1ArpWoWcC+e5Inw3hCfA9/N1IHmPgNNhdfXn6+JEdlFNujf8njPul+seUlxn/JPxWFffbal8V/bvwp9WlBfybnoez/6riySPi7Fvqt5DvbPxcQf//gkeQ71Lj31yxgKuU26L/HeUF9Hwo/+iMvov448XwMNiffFobvw1sBccYvzO7qI7vzuyjkfH/IO9LyOEyeBj+HsL3LqUFbAzHaT8X3aPgksQD8j/G/cfzi6/J51b0HYW+nfA9EG7S/+no9Rgpqcm+2ul/JP18kucwfAL9jYxbNnwoD9X+WPHsIH59OHo/F58St9fT+3fs/zD28SS7mgU/p59/Gf9R5S78e4Y4s0l9Y3HpQrhEvNoJfYviz3Ax7Kz+LHpdxg8HKX+IvuH8oXXoUu5J/n/w6zvJ53x0fK3/Da7/Aiuxj8biw1nsZy/1X5H/Vv1/Rl/Po2+68ruxL/J4GE4wn+in/Un8eiD5PkiOK7Xvjd66cCH5rcb/kdrdo5+m5HMa/1mQ+QxswD4m47+ReJj4fkNRfG9LnvvByuy3u/Gn84c/YQ9+8i/9n6Lckp21c98Drr+Mr174ulL5Q/XHGvfb2IXyE/xnSZFcTlBeZ/w8H6rq73P1eT7cXVrANfzjYc+D48SnUtdXiTszC1CyWjnz6a3mRXvpP/PrcuzyV/SfjI791a/S/8ewFTvruEcBm7GXmuLIQP38m322Z48Hwo7wncRPeu1N/r+h90D21cm4p8FNpQVcgL5l+psnLsyF9xo/9lGVXcQeYx+/0Xc3fN+r/Iz6AeTzDbtdx3/KGv9q/Z+t/yGwCf3XZPcT3Vdb+U79TyO3GXA8P61fFB8OYD8blGvS48/89gvlG/HRAUYfX8bu2cFR/Li8cffDXyfYLvNP/f5t/GfgDPxNV38S3Kb/w9D5X/Kaapzd9X8H+1+K33fgm7Cn/nvnfYo991Tuw35eZI9zxI+n4XP6v9u4V8AR8Af9v1v0fpb3tbyfjTXuOHgjXGH8z43/PVyPvt7s71PjTab/5eR+JPq+Er9HiXOt0H+C8Yeat7RhVw8rP8T/zzHuhdrdoZ86xl/Jryrwn/3o5TL87yGeLC4t4L/R3z3vT8b7kV6uhIej/yP+8Qn8GM4mnwnuP46dvscOD0P/ocrH8bvf4QrP+wcKUMK8SlSX7GL8auRyAPlWyHuY8U9jb1fR74L4m/nFXPFjAXwWvs3/dkL3UO0e1f9Y+sl7Rd4zpha9X1Qi93rk+pd4N13/b4lHc9nF++S9UfzbQXytBEej43j8n4b/0+GZ8EX9/4n+VeTwR95v6f81/NZB5zbt7qSfs8ntbno8V7kF/q4RXwbg4yz01dH++jy34Sh4Ofqz3lQOVoXbsn7Cft+CS+Gnxt+uv5WwHHt+T/8dyfMgeBacpP7U6Etc68TQxsA98t6Dv92Va9D/lfxvJrpmwTPRdx17eYf894ATyfm1zD+Nf4X7d3T9cfKdCd9hJ8eSTz3j7Qw7kcPj/Hc99i6BY+GZ9P8F//tU3F6tPEV5N/Lqgu9R7PAh/tOfPc2i99rs5F7yedz85im43P2Njd+f3b2e9wf6W4S/xeT+JlwED8XfWvrr1LyAJ+nvTePvjP66sDY6jmSf39HfVdpNEXdW0M/f4tnp+KvBv/qgL+tBrYy/Hv13428QvZTLOgYcYvzVxv8AroLD2OfkApR8DX+Bo4yz2fjjSwu4SXkX/e/KjsbCvuxsBDm0F1C3wWXmX+ewg2dgb/cfojwy9u/6FHIaqXwf/lejc4P49zvckfwqi5uVyX+x+gPJf77r8+BH7GSZ9qfkfQCeBLPeORg9+/O7rGP9rn0P+t4RHf9UvlT7X8jrfXyPU+6D/yEFKJkCF8DrtP+aPrfiawu8O+tX/OwneCEsr//V7GU3eq0Jj877H72+jq4qyqX0P8L4U/DXRH870M+r+tsGt8NR2s9m76/h/0BxaBr+5vGLkeQ7X/kj/F3N71Zq9wF8W/zoJq50hxXEj1b478u/HzLvehDupX6VeHibcS7V/hj0Hc1ulpLDHaUF7E9+N6FnHBwLp6PvLPY7CH6m/Vj8DSOXibAK3Fv7Ld6TbiDPG3cr4GjlRvT9LWwIb0R/3l9n6LdsUH0L+vmT/N8mxwvJZwy5bPBcuU55jufTSP5yDdyJnXyV9xPzyR/wv8R9r5Ffnut5zj+lfZ7vJdE7ureapw3i37/idx2/PBPe6/o2/ZYx/hbl38n3NM+jBZ4r75DHPuR7gLhcTtwoC0/Af0f1vUoL+AT+vkB/b+PWdd+j2r9B/0+JF120X4O+rO93Zp9Vs87s+XW/9iew13x3aQ87oD/rclmnu4V+31D/Ofv4g9+3IefjybGE/S/jR+WVx+OvObm1gDvQ1yj6He35NQTfY5SvIb/N+lun//Hi24Pan1s0f7wHZv54jnbryP0neI/2n5H/9exqtvEW4f/n0gL+7r5H8r6m/TfoXWycd/MdZ6//v9+MsyrzD/1n/aM8vW6h75n0Oyvfm+AQ+DT9/gc/b2adznh/GX8f4+0OPzVeTf53Grt5hh3sx39vy/cT/vSn52879Q3Q14h9PMIuhpD/jspf0/vB7GsrXJjnJ3rLigNl4A36X5/vRfDn6Av/a8Wll+HArIdr/wJ7+V/vIRfg6zl0D9bP3Myf0f+nOPCy+65V3zvfHWBL+Jj6E/l1M/rdhJ4rxO1R/OE3/vUeeZay34fotwG57MDeXsB/M/p4VxyYSI/r2edu7Olmz91Z5Pip9q/hP+vbLyvvWfT8OxB2hOfg72nyGcmO7iH/qupPNm/41X2/wZvxu3NpAefQy7PwH+g7kDwOYScHw/PZVy/4XZ5j8EjjX2qct9FRUfko9cvpsxf617L3k/Dfkd7awgPhJP5bR7va8ALyn6d9f/rqS/73oP8h9j+DPdRwXxv8r1T/OHu8ml7eUu7KvxMvKqBrq/KF5LfA9Sb85jnlNfifS+/Pwqxn9UZ/J+3ezXcWeCH+Xye/veEy9vwE+3uKvTwJnzHOevRVIK8d8lwl/x/Y/wP6vcPz5ux8X8B/5gffZV6pXBd91ZW/MT87UJxsYvyR2l0FH4Qtk19A7rX4fx3YU/u8986Dxe+/9fO9Sr9b6Hk8+U8m3ybieimcChvz1zr6yXfWReiLfCKXacqRzzL2VNH4y5VnsK/r2dMNiaP0NDPfh9Cb7wL5TpDvA2+KP2X59X/005f+GpJXI9gKLsn8x3jJi+ibOJb5U/wTfg/LkP8PxlvJbp/O+pT6nXKdXXaANxm/Hvpn6mcGrKx93te/ZT95n8/7+1JyOYo8DhfvOylvJ79tcAr/uZ5/3EMeQ+PnyvvpP+9NeY96qej96Wz2fBQ7bw8bkt8S/taaHJri92f2s5x9v+6+P8n/layvomcSnAgrxv5LC3iiuLYGPXto38b8bG+4LzwW/RO12wKfZF8/009Nfl8d1oAb1F9DHtfCqxNn9T+raN70QdH86X38rIx/k0dv9V3JqxvsAXfI92f21BDuArcnz4s8FtP7zcq70G/WzbOOvrW0gFk/35m978uus041h/5m0lfeE9d5vs1w/SPy/hjOI79rya8CfpMXNVS7pXm+s+/kWfWCb6r/irx3y3c49l8x/YtL7cX1S4x/NPpHaX8DHFBawE/1/x25jVUe43k5Tvlh8jjXOL+Rw9XkXzPzG1gbXsQ+Yp+P5P2JnOuz3zXGW4ufofR0svY9yKMrud8Ny+Hv7QKUaFYyHo7N+hx+k6dyP3t4zfjz2OvZ8HaY99s/zWvGoPvirB+hY6b+7hfHEs9+x08P8k3+xglwI/v7hHw/hc3FqQfz/UhcSf5K8lmSv/K28Tqzoz3Zya/ad2AXB8Jh0Yf42A5fT9DPP/T/ovZr9fc9/AFOJd8T0Jt17Rs9Zz7W/2P6W2rc54yzlXx2cH/8sC78jPzzfj7c/Dzv6Xk/P871lvR7vPJ15JPncT/z1v/APK/zPM7zeQT9VqPfj41Xz/1Tso6Jv5bi6iHizknG72X8VeQ1Xz/5/vk++UY+PdHROu8/+j9ePHzPfV2TZ6r/9fwj7/X3oq+r+j/Iu4Z2z4kPc7N+gJ4WsCWsrP0t7KqWfk/M+gH6Fihn3j2FnDbQzxP8aRz7LhW/L4P10H8wPddNvmne78wHphv/IuOMQN8r5J55+ELlIckfpo8L4UPw48T30gKOwveTyuv4Zzd+cxzsDvcW/9op3+b5djs8g3x/wNeh5PQn+XRDX1PxYAq6zoOfZ/6W7170l/yk140/Qv018Df6nqL/Ifyunut1YSXyPT7PZ+13UW5KPtXFh3w3Weu+qdrvnu/19DSEHmaLD3+w6wu1O065Qr4PaNeQXudlHpj8IfyWwlPRtxp/44rW97fwk6zv31GAkk8hNkpuMf4a440QFy7Uz+XsrTW6W8G94P7so3i+l3ngO/jvTO8DxYHkN9bC3zb+VYbdblHumPxl/OQBd794+VLR/PA5dpZ5YuaHV+JjUlGe6ij8n6bfhvBUmPy5t9F1NDvtDB/Db77XbUg+mfvz/e4MfE+Hr8LXMr/nP0PZ5afiQhnrw33Qm7iaODss+cXs7zHvbUPwf4r6Uvo4kR9sZn+nqs930a7/4/voWPodB2+KvtF/GfqPcf18BnZy5tfsdrr4Nx72Ez8r4acfO7yT/g+lvxb42Z9eurj/X+r/ovfbyeEP5f7G78LejoUv6f8s9rmZvPuTyyblger7Jn8XztJPJ/x3FTf3ZhfJb36rKH+0Ydbl1c9Rf4Xn3RTPpc+TR67/W8gveSlfwerktzp2S04fKpdB/8XJr0P38/j/nn7/pu/NcAs8KM8H8nwCvga35/sLuXxclEf7H/J/lDy/Yhe/wivwH3uIfdxSZB//THyl9+OUV+Av6wGryW0JO2yM/lqJr+i6hTx+FL824fcPeB17finzY/ScIC6uNS/a6noF7yMDyH0+rI6+XlnXILfxxj85eSr0+Qv8jB2MxP9k/P6dPDrlD8mvPb89BPbQz5363yv5c+ysKjuvnfxn9E6AP7OTEvS/QC5/omszfFn7TuLSEbCKOPSK+j7kvxn+xzjn0s+d+DqVXPI9YzD93CMufoP+tvhrjP/Xza8Gw+Fwrv6bRz7srmXyF5M/z27e138b8hlK/wMkjmc94L9wY9H70avw1Lyfqb+Dvx9KPnPEgZX0m3XbPrAyOb2v/ZHs5xT2M1L9JvVX+B7bjb664+vKfP/RbkDWaenndPe9kPd+cm1NPvficzR5XgYXwPvUv0Fe+T6Q7wX5PvCQ5899MOv0dejvUveXYVft1NdSfye7mF1awNuVe+Gvv/YT+OMCOFz9Yfi7jB1dCs9R34J8Tiaf5sqXG/9k+jsJ9oNPZH1UXLq/aB/KwOw/wM8z7Gs/9AzSvg651FJfEx6Q9Q3zskbiz5OZXytfw95asL9DksfK3l5MfiYsR/8TfR/ahbzmkeNCemyZ+KGfb8lnIPt7GP0L0DMbPq2/18l3MnnfDR/AfwX+tZd+k0ddnD99pv767/j/03s9+Vwn/q8lp+34n588f/ZSI/sOyKm8+7Jeegx59kg/ec/z3LgWzi0t4FL099df8kSX6eda/ccev4EDyTn2mfzPrGPN8/xJ/ufLxvsBH5Pp8Rvyr5HvRq53zHpg5q/6f5WczqCnI7J+xZ6Hks+tsHPs0/OjNqwFT9R/3ouSX1azKL8s+bF3kesH8Fz1D7DHEfRwFRwkfpxWWsDLXU++XcPsYyWvN4w7Hn3f6j/7ltqhb0DWD9Df2fO7jXHWZj1J+/s9j57KOgE6ducfCzJfgLfH7shvbvZl4HMfmP0b/2UPf8AH2dEI498t/v+RvAx0Ps0+DmBnq+F3Wa8zv1vh/mPR/wn/HYq+luxhN9gm8SfzF/LZmDwC2Eh97LOn67HT2Od69riW3L6Bv6P/MvpokP269PSs+pv5TVN0NYM7k39b9C3H3/H89M+i/Nb26Eyea/Jbn8j3GTgDDtZ/N3b1Mroeod+js75An5uMMyH7H+l3Lbq+hd/AM/TfL/stPCdOUV5C/83x0xJuJL+l9Pu98b6EX8CHjX8Xu/wR/f3p+Tn+s1S/p7P7PuzsOPQNUJ+8iXJF+RPVlP9235vaj1RffXf3Z7+n507yx+7R7kV4N8z85VD2NIsfrITbxIfkzSaP9jV66KH+a/5wMP+YCufRX/Jqr2Z/xfm115rvDINz4Dnab6P/XUsL+Aj+59Ff1smL18+30Hf21TVgV4d6DpyL/jLstR86f6DHt5OfmrwPceqDPEe1j13FzrZnf3y+H6k/Hv9L0VGZ/cT/4netleN/z6BrNrwLfmn8D7RbBWto37hof3M3elxYWsBbyT/5xsk/7s3e6mb9nH2Pxl8l5ffxd3j2c5P7QPPbFa5fx76O5Vf9PP+eRH9D9y3Tvnm+e+h/d/q/it1enXUC/L2n3+Q3JN8h+Q2Zj1WAWY97K/mt6G2c9WN4h/HL8dvKsArcrP1f7Gk4vWSfd/Z3L/C8fA4+D2/Tfk5pATPvyTwo85/l9LdO/VT6qcU+zqaPc+Dw5LMY/x3+dBusDM/Q/2HkdgR8PfNs8htZgJKNsC9/GZHvxehtl++Mrv/u+ZB8xudh8h2T3ziYvFqju7Ly/pmf0tsZcIL+B6Lf8CU/mgdRT8lg9D/AnrIvrb3ywOz/yL4o2CH2qf88T/N8/bbo+TpIf9l3l3142X/3AgI/1+/O5NSIfF7nHx+473zlC2J/2iXP/Rpy6Mt/dnC9Bbsuzz465/2Zvm5E3yjta5BP5v+JG4kjiR8HiJ8/imOfJ16R3z6Zz8A9YEf07UwvyYtLnlzy4+qgr3bWheFq9H2mvy/gx/B84z+Dr6fhFfi7g3yXojf7qGrC48m3I3r60Vvep2e4/iJ6kkfzEvxB/7+4/w3yeRM2J/+38T9T/Cyn/UT0r+KP58Mn4Wjty7OLg9jBwTkHgPzyXSzrHPfD5Kc9h57f0Zk86Bn0sww9K+Bg8muOv5zrsA7+AB+nn9uSd8svnoabzJ8+ZI8f5bsYrKb/5Ksmf3X/ovzVfc2nDoDjxI8l2V/m/mNdz37+g/B3u36He/6OFid3y/yNPcSuz1Vfku9X7PZRfHYkn+70ekGp+ry34K8060/KJ7oveeT143/GW4/OAcp/Z3919h1ql++8+b57q+dJ3ssmZH81/vYUb1rB0exjT/affZR5j+yO3zruOzb5KuQ3Vfm37M8i/wFF60SPRX/8Ne8/G4vff4q+S+c7db5PH0Ou283rE/BX679v8gvZ9wPwdvaR/RHZF9G/aH/Ey+jtatwqnkO3kU/yBvvQT03lL9Q/wi5u1m9H4zXIPmv67/A/9k9l39Vv5sUnFe2/qoa+6vBidDbP/g/X28MH6akH+8l5F5/CA9zXk3zz3XsDuy7+/j0efR1gZfQtSb46XKj9S5mvFa2fH1q0jp7188lF+44rKr+s/aDEfe2SD5X8pw7iWeZX8+Ei/F1coj2cDVvp/w3z3ofgEngq+gYrz6C3JvS5yPgPoGcq/Bf9PKs+52/l3K0xRedvlWZfsP5rKOd8pkru/zR5fOLDkeifVlrAndFVkT5OzvlAWVdMnhPM+Uv/Jr8byXkH411i/Jn03hYup//kx03gFxXhR+hspn32UyRv+aycs4b/xfytCbt9gd3XFl9eoc8/xZfu7PgY/VfR740w89mjcz6JuLfd9T7K79PPJejpIg5uSB5KzmdBz2XZx4iOQ/T/CH/aEyaf7Rv018v+IHiV8Rbwrx7eyzpkHQW+of4K/Lagn5vY10/oeyn7/ZP/r1wv+S3Zf04+p8EvPZ9/z/ln6Mg8Y0XOxxGnasDO4tgc9tYk6wL67UjO3xl/X3azp/nFuOybVj/N9Qfh1NyH/+x/zL7HZ4r2P36Jv7z3nUu+y7XvQy7bs5+VPOvT/6f5HlRawOL1u5wHVY2d3qv9evRn/b9O8jrI5yXXz+Rfw9nxMH7yAvk/Fnvh12Pc/6jn4wr+eKD77lH/Bvqzn347v1uRPFjtj8rzgF0czI7m0u9B6m/Szwr1b+Ev6yhb4TD+X48em9JHM3g/bE2PL+Y9SLvjlVfl/ILSAl5gvIrK+6H/iuQjwGvgs+JX15xbl3UV8v8ZTjNv2MP4v7CT6uiYoL/O+e4lDrxOvv3dfzm7OlP5GvQnvmX/2Hx+kP1jT6PrAvr7Rfkt9Ccfvzu7G4neDew38fnf7CNxOvF5RNG6SPIFcr5Wzg0a+T/ODxrv+mzyqqX8uPGfy3sxP2uFzxbkMy/8wpnGvwB/S7X7HpbX/hz0VeNfVeAFyX/jf8nbSB5HzktJ/saz6O2C/s3iUs2cU0Bf2XefffjZf/8V+7+YfvpkH6zxL8TPMDgUTmOfv5DPIbA7fa7P+id5385+9meHWTfoxl87Zd0bTjD+dnbRjNwmKPfFf/Itk385NedIkH9j9T+RR3lxqDv6s5/+SXLLfvvsrx9WgJJZ8FvYgn8/Th9Z/x2Ev0XKyWvsiM/i/MbExQcTX4ri40U5L1P8eiX7XbQ/Fz2/wPfg9dmXzS7Pi10mfznnA7lvX3LYTg45z/VS+piF/jdyToz6u8WLO+FdcDb5TSGHnKuVc7ZyvtbB+C6ffZrs8C79H8Zu/pv9IzkvAP3fk8t3Wb/OeTz6b+r+0/TTnv2PYR95ruZ8gZ3g89pvxs9GuAnuR/45j7YzPIh8lmZ/clH/dYr6b8pfMo9rrtwF/x/xx8wDVyt3VR//GU1P1djjRPUPu76GfL+CC7M+rN/4Rfwk/tGnKD8t+WrJT1uM7kVwMfv5j/Fvwu9CeDrsRv7xuxlwJuyqfgN7+CDnv6K/TM4fEfdmwb7oz/vDP9zfyLylrvKH4nfyB/IenDyCQ/H/TuIOP7mX/supT97ZdPJbbvwP8/2Bvz5JL0dkfVf9DHQ9rp/Zyvuj79vkXdHjd/R9qvG30cee7Lou+V2b9T923y55jvAR9WPxt1tpAZNfMkj/Y/F9K7tszg9Pop8f6GUQLPWcqpPvl8mrgkPhP7M/j9yruh49R7+L0NMG3dknfkD2L9DXDdrPUr6Jf+bc5m/F5aV5n8dfJfL7b+Yf5FUGf+eQ50jjXguTp7WEXOZEjrAM/hvpt0FpARsqP0/+2e88GU6Cq5Ifk/mouPY2XJT8APXz4Nv57oe+i9h7tcQB9viR+odzjhicBifrfx16f4YfwQH5fsKe1xl3k3KJ/rMevifMennWx5/kN0/BWXCnrL96Lo32XnUXeT9Jv3ujdx/YJvkV+f6uv43kuhlenfV38ag2vJS+E6+fKco7Sh5S8o+OzrlYsC37aZq8KXGpedE63LfJhyDPvWHOjzyHfH4y7jo4gHx7kM8a/jgs+8xyXiz5TOIPjY2f8wWnoeNO9H5HbrXJ+6rkT+g/5+9eWnT+7oDkT9J/xayn5Pye7H9C9xh8H0J+iW834O975TbqT1ZOnv5L8Av2eRZ7yDk2ddC/L/vby/3L0LkctsVfV/wP9/y6kPzaq09+5G/ixGHKy+mntrhUC/Ynn3+iP/txvmJPF8CV8CLy+pmc8ny+w/iXoPff/OYv+lto/F3E/eTNfZ/8AOO/Qq/LXH8PDsv8B18VxK3h7CLz++yn6pVzG4vOlzxW+86wC7ycfea9dfT/eH+toZxzoL6C842f8xpzfuN56nN+YyXyvQ5eCw/P+eM5DyLnuPHL9e7Lvse/6eNQ8sm+yCHkPZj829NXJ/1fXPR+Xh+9fdD/T3Yxmv8NQkczONr4j4gfZfnJUcm70t/K7GuDP7HvLfymIvqWe37uWJQf9SvM/p+n8n3O8yTPl6VFz5cd9FsJjuOPDei/l357wpX8aRf1m9B/Ef2t519HqR9egP93jmXx+ZVTi9bHPuTnWR/7lZ6O1n/VrMfjf3DOC3X9L/a5j/rTxM0z4Dz1/dRvzHMNHpN8B+Pf5vrl7ORy5Sne3/K9K/sYi/cvfkgfhxv3qPiP+vra3YfvCvq7GH1/uX4trCcePMM+Pye37L/Lfrzsv8u56DnvJuejZ37Wiz1k/+yJymejb0PmT5mHGufGzG9dfxw+Bqvw31b4S/5i8hmTv3gi/e6BvpvQd5jrXfjJE/znN35dlt/n3Oz58Hy4Fv/5TvWifrNelPWh5HWON38qzu8syx9ybv8m8hmR8xH0d5/+/4Lv0V/Oc7kYNsHHjvk/k6LzYcrABeg5PfvxPDfOUP46+vdc+Qx+DGtnf2HOJ2C3NfI+rv1n7Crr8k+z36zPJ78reV2PJZ83+df4+gxfyTfI+/9g9J6W88m134v85uVcG+PMVz5S/Zl5H2f3/ZU76D/PreRZ91F+E32Ho3uk+HaE8dfSTxf6PICcOiu/lv13+FmU9dWi8w9/oscf4cM5Ly7x1XgvsKP58BP29QX59yT/LpmPm19dzW8amJfke0vbvJ+wl/j3HBj/fpX8T8j+JvJ4vGh/7N34zz7Z7I/dB1/1jfuxciP8NSP3JrApPMPzMecD7QN3yfuB9jfbH5N8qnvpbVbOUyh6f32g6P01//fxYuSc8y7yfpvv0eLOefAb/d+nvwfFm2nwFvT8nPN2YAtYPvtD9HcRPbQm/+wX2yvnXsMvzI/X6D/vx3WTV+C+wbE/etmaPHnlh+Lf7CX7pH/M/pOcH0Ae8d9Hivy3LHrKwVXqb9b/AeLjfuy2rn7aix8T2cVD7Ph58qyY+JD3VnZ2Lj7LZr9raQHbJs8GP0vV30fek3IurPFqk0/2TeRc7eyfyPnaU8WDC/NdOOfQaF8bvU2Nc5D7L0v+A3m8ie+sA7WI/vnn1qwb6Cfrl8n/LCNu1M76pOv19dsu/zPEnm9EX9ZHsi4ysGh9ZEr+V4qdt8p5GfSfvODkCe+inPzgfUsLuDdsDWuKD79mX55xKmZ/KvqGZf9x/mcg51Vo/xk+89zN/z1crJz/Z8hzZIt5+mTlfA/PuUnHKV+p/7H0mXMt8538KvUVi77/5JzfFvT7ZM4nhHvTXy3621Xc/Ibc9qP/RtlfSV+3J6+maH1xf/wuy7kROcdK/RHkWSH58+z8PPI9q+j85JynnPOT32X/z+a7Z54v2ud7Vs4dyzlkOX+sB/v9Lec0kcOO+G9CD/lfmOxLin/thv5ntc862Uvkn31x2Se3Fn/ZH1eFPKvCnM822vj753tq0TrfNvPvX+lzZ3h05nfs5dmifWnZp5b9aXuQZ77f7w7z/X6z8eZlX5hyb/SdZ9zq2lWDy1zvR+/rsi7Hnk7Vvrx4diUsC9/J/iF+9QB8l/0PId/MV0/HX/YrzWOf9bOPDN0jlWepv0B5qPohcA66vyfPNVnngP/N/hj2NAKWFd+2ZH7NHvaBO4kn09F/pOv7s4/G6s/P91l85VzH4v8n25pzK+Df8Ev07eF5c1DOefKcW6c+609Zd3q5aP0p61cnGH9+zgPK+gj/6QSPgnfRX/LRG/CD+jD56W3xvaq0gB/AkZ6vk4rWj/sljxl9yWvJd9l8p8332VPyvRRfG/P9hPzniJtd6aEK+3sF/ds8l6/nt7/mfHHjX1KUF5I8keSHlGNH041fSbmB/ieS76Sck4vexeLLrejLOUrF5ycdga62OUeePJui7wP2fR673hMdA4y3hjxPEhfW5vsN+6hXWsB3jfto8i1i/+4/Q3/98/8Q/GuW8X9iF9XR0c71O4ryd5PPm/zdU7I+h7/RWYdTn3Nb8l5yE1zh+mX5fyf6Kad8Hn6boeM5cesY7e9wPf9nmP83fDr7YfB3BL9YxL/O9xzaNfkv9FENVsr/GJLfeQUoGQGXwrb0N5K+uhtnHfncqv0pRfuass8p+5tyHmDOB7w6+XzoO6q0gF2TZx87V/9j0bnMOac55zO/4f6HtN/Efw5Df/bjZ3/+h+7L/vwx4snY5L/AnfG3d/Kw6W8IfFs/O5JLE3hc8r2L9o9k38h0mP0jK5WprcTj6f/9n+rR/PUO/XdVnsP+vsk5yujeBruR3+X0cgv7GQ/zP2An6/efcDR9/xt9/3D/1qL8qu7ZN1S07yX7YHpl/1XR+fI5jyDny/cs+l+H+uSb/3s4nL5zfnr2Ea3T/21F/2uU/znK/xvtl/PA0FUJJt/4JvUN2Ecb/U9ivy/RZ2X6+CnrMNmfl/3K/K+Zck/jX5rz32Db5IGp7ydejeQXV8HK7HNNEb3Jl77H/CvnF2V9NuuFOc9oHL+7OecCGe9E9nkw/o427kb0H6P9rvl+UFrAfH/dpv0811u4/gs+B6I/3z/y3aNV0feP/P9e/ndvhH7y/3v5Lp33sB74fdD4XyZfHn4Ob9U+/3uR7x9r8v8o+Dsy5+uIv8thveSX0XfPnLOh/FnkS+/3w/tg0zwf2PEKuDL/R4P/O/M+lHmz8rX6z//udMk+Arg3/vO/jbXwWaUUv8afn/0v+f9c8umQ/Tn4z3vcMPLO+b+NxY+89+U84Jz/2xO/1+f8Hdg3+2+zPyf7Q5QnGD95z/ehszj/+S/y3gi75Hur8afgvys76gJL1ef/jOrjI/Pq88X3rdr/RH4r8/0M/QPxm/+jzv8l5P2nK34fgF3gedlfWvT/TaNynqHx++T8xeyTyP69zG+L/p/7XuPn/7nf5F+r9HMG/xuV/aHmPfOy/g9bkk/2u2X/29dF+9++Em8GZ57PPj/Lfv+i/w/I/7k1Jb/kTR0Dx8A26PtYvP4EVs//B+P/IHLLuUAdlb/LPlP0bRcnl+V9Oecrk0ff0gKWZL0i+VPk3sQ8fhX7KUHfYvI9NOdqK5+W8x9y7qN2OWezvfqzdfcO3AAXizOT878E/8O+sr6Yc7By/lVD/tHTeCNz7n3+Zxz/tZN3Cw+ix6v4Q97Ti9/ff4X5v+Xs03sx/yfr+fh/AD1Ab214nHXdefTWQ/8/8E/aN5V2Sp9SlpQlslUUcWshsqeFkK2yRpYbhSjaRFKyK9naqBTFbV8i+06RJVKSJRX9zvldj6dzvtc5rn+eZ655z8xrnZn3zGvm/VnFkv//+wB+CNvvWcCOZQt4WuUCnrtVAftL7yndBp7s+ZeaFvCW6gVcXaaAN8HP4awdClivsfLbFvDP3Qs4qLSA28LGzQq4cI8C9qpawJ+qoXvrAn60awGnoeOIcgX8BXYvj44KnkfnnG0K2E37H9cv4Cdws/o6ty7gDeh5uF4Bq3vuEfS9rJ1X4W/ovGO3Ao7cvoATClCyHj5ft4AVyGW4dq6BV7cp4NvoXwCfghvV/2LNAr6l3Rfp7eFWBWxA36sqFfAH2BT/A2sUcBa5zoSvKf8afe8Nb4Wd2M9G9B9G7puk7yOPt8ntQLgMriK/P9lHO+V2YB+/qP8rdvc/7baH8/C/VLs3am+i9DX014q+G9QqYD34mPbnNSzgfPgknIz/iaUFHMkujqSfW9jfIPIfDBtpvwZ6utHzjsrPwP/N6B+MnxfxWSJdif5fo4/b+MEkOAP9J5Ff3SYF3J+9HUK/pzQo4B7k+6nna8Z+Uw7fG9B5R8sCbt6ugOUaFbA8fJR+rvN8t9ICHgFvUf/H/G4SO5xNH43oZ4jya/jVz+gYQP7vkeds8jwQnq38E57fFf7Kfn7G/9lVCjiD3Jbzj3Xyt/J8U3rdp3kBe9BP5NtB/g/kdbT2r5VfAd5KXkepf736f4P96ecG9e+Jn/Pw+QXsyG7maLee8l+ovz75Xka/9bW/NfrPVn+J8jvT/06wGfvahVzKk8sesC76R+lvKvh/BDt/Xv0t8LMjPIIeh8lv5f9dYXl6WqX+L/E5wv83wBvZ1051CtiP3y5mP7/KP4t/nAkHwLHy72Cvt6HrRnK8l/xuJb/17LAtPzyDHz5DPk/BvfSXb9L/evQ9hr5x2j+XfPv4/31y6yt9LPoGaOd87f4lv4H/7/b/PfBr/Xc9+Venv4O/w73xdVoBSubD0bAF+c9G1178ZI70GeTTlVz2h7PY08/434XdNTTeN4Az4PeeH0YPbUoLOB7/vdhVA+3/F1aWfzG97Q+H0N9C+e3Yez39agt07oD+U8mhH0x/eBr7/Fv/9DQ/fMQ4eq38muq9ULnz4Xf4vxdf09jxdFhG+7PJ4Tg4Bg4k/6P5cyd2fxCchr+h6HqSXltKb6/+g/nDSnpbwT5uVP8C8j2H3a5iXyer/zT0DIHPwTuVH46fR+nxS/SWlz+T/t8vLeDf+sdF8i8j38thC3T+gP799Ef7wtHkey36Wmt3N9gKnmV8aMoPTuUfb5HPNf4fpd2H+OnM2gWcpf4ORfOGd+F/0deIfsuxgzqxM/nfk38Nch+tne3V/wy77cIuF0k/yL7+oI9LlR8Cp8sfZtx8gF3eHz2rfy76M+/IPCTzjyn6rSna+YU8Kqr/ZPx9jb4T8HeO/qs5fr7CZwX2cF/6T/UuY19vwcvUv4K99KTf3Y0DF6D/ae219lxf+t2Vf71NXpdo9yJYnX1V4C/HKz+ktIDTlb8i8x92uroAJfv7fyN8D/4Fh6m/n/HvWXLoK32d+qvQzyByHgh3J59x8h8hv7Hk1RD/B2jvAfo6suj9pav2usNusKL2v8TXB+GP/DZpvxb5TPT/b/T8Ff5+yfwC7kcf99F/U3LdDZ2l0gcoP5o++qj3VfodQf/VlauBvmrSn6j/Of64mN0/Az+W34UcGpNjFfLpapy4GL0t+f+9+D2b/49gjx/Q34nSz5DP2+x/Lvt8Aq7N+wV6lsE3YGvyb678zQUo+QG2yLhgPtAMnz8rf4D2O5P7OPRWxUfm4a+R19b8IO+fl5P/Puqbx69v1N6u7Ks+vhfDBvh/WX5V4+cZ9HMa/b0kfzR6xsCB+KiN3gekn9LuPdIP0l/G7XZwJnt5Gf9701dbuA9sT/4fGb9Oz7wE1kffa/Rfkn5Veqn6R/O3uui7TvpE9L1vPnGMdnch7/bKnxF7LS3gVHK6j/ynKH82fY1ER1/ld9dvnwEraf8849eJ6N3RuHmy9G/q/8n/09Axh372xv88evkTPkkvp2j/UH5zAr3cRg5z1X8Me1/Or4+VPkn9B2Z+hb9n2fW26n8BvUeh60XpgeQ7XnsTtP84v+2E/4/Jb4R6P5Fejb4J/P0z2Eh/cIXyGwpQ8l84DV6O3j3Y26HqHcPfKvHfM/XL9fjRAOl95F9ArseT6+ai+fmh9J1+rYv0vcr/Rv7p136Rvkd+M/RVM++qCr+ED7H388kx/d47/GMOff3JTtL/vSd/I7muRd8W6cHan0Bvv9H/rdKnkn9xv9RSOv3WVei7GN5qfGrDPrJ+8Bf8G56n/c/Vt4ZcV5HPUva3F30Mw//V8Anl/yKnjuTekd7/UP4X9rge/gqPRV/eV4+EPeDF7Lc7vdXWf+4L71a+p+ePTv9WgJKjpCuz24xj0d9P/t/lX8at6rCa+cRr+vdTtf+F9hfSZ++0D9eRz+36nW1gbdiTfuuS72b1b4Qv4/9Mej0bDoAVtX+A9tehvyp7nCm/eZ6n3/rSn9FPKX0fRo/vktMI6b7Gq1Pgq/gfjv4R/PpEdrtJ+nX8Tyst4DL+8TZ8GH9/qPd8iJySF9TfkzxOYNdvof8I+fsbnw6i1/2k++P/D+NFA/3oh+Q1x/phTfWWh7VgTf67Tns3oaOxfrSj+rdX78743gXOV34KvdwJp8bO0F9Vv5D+oyZ6f9G/pv95mh88q/1f5W/v+Yn8ehKcnfVb9pX3iE/JOe8P9cirPuyknZ+VH8hu9uIHbWA59F+k/T31Ry3xMVT5bwvwj15V/49+tyGvJuTwpPK7sJ8X6DXzv6VF879K9PW3/6tIv5b1H/3NvOgF9sJ/JYRNp99Wym+r/g76gaX6iaulr5ffmL/0g4/pV0bI34O8nyD/ofz/Qvq7IO+rnnta+gzlq7Ov0fzrWfI+Xf55yu2afkJ6K/mLyLNdaQEPkd6D/O/C11T4I6xB7nWMj4drt7b0B+Q7NeOZfv9O6afV30d/WJXcq8Hj5G8mt1708BF7681/7mGXd8N74RPKt2SPo+Ep/ON98v2BPk6EJ8Ge7K0KfV6G76Fwa+1cX1rAD/nVx7Aa+dbyXE24DZyY8ZccR7HPq/H3Cvkdy956wmPgmfgfQl+D0XGJ9Jf8a6z641hLlb9d+cnsYQo8Lusb2m/PP3amt4e0cxH5fU5ebejpd/K6KnxLnwsXwbzf3qG/O0M9R6tnoHZ7ov+C+BX5t2APVdn1evQ/RM8DyHdP5d5W7jHpXcjnHvXM1A/WMX9ZRT7N+GMpu2kuPZ5+n9b+E3Ap/ET720mfQK+3kH8r/I+V3odf19HOhejrja4nyPMh4+75cC359Mf3GulNef/w/2w4B1ZH30z+NgvOhi/Kn8w/74QnZz+XfLp5/pusz+gHmsvvSJ6dyO1guFL9Len9KHoYRf8l+O5Kb8PZQw/tP5x9udICvgDPgzuwzw+0fxf7+Czv3+z7c/L6An4GtyG/j+ltMP3cwT/2kt/V/28aH96Gh8e/yONX/rMGdpU/X31bYMaph7K+SO7XwOvhWPxlX+sP42vx/lbWfyuXFnCG/rmT/BPUt5Bce3quIflcQy95Dyie/79KL5nfZ76f+X1Nzz9H/tWl12d+y/7rwSfYx7vmX0PRdRl8B39/kM9v9HkEvFD58omfYF+dYBn21VM/2Z/cFumHTpW+QvnypQWsBCvAgfIfIs/f6fUK6Zvopyv7OYheu2W/if3fWYCSU9DTL3ThN+tHe8I28GX8/yr9J+zDfp9G32D6eB8+Bq+XX4W8Ep+wDF6v/oboXZ7+Xf3b6f9W0f9TsDf51VB/d+2Ng23U96r0FfxnmH5vF+lxyl+Y8V4/epH0wD3+Lz9XsM+W0svgewUomQ2RXXKl57MelPWhd4vWh/qxqz7wBPQdxT9uLy3gW/Q+Xvk36L+Tch3g//C5PUL6F/Xni+FZ2X9gDxknl3h/m8Z/TlNvxsmHyelB+Xvq788gt7PgBPzta/7YR//dQ/0j0H935of64Xqef5f8sp/XxXMD8D8U/QvIZar56SVwPf2ulm6on7pG+nn0/aqd9fATfvwje++l3T+MQz0yf1X+HfJ5G74bfaBvC3p3zLwCZl5fQXvlYebzj2v/OO2diP7EE6yn34xbGcdOUm/Gr/3V92/j4DOwhvwVcLH/h5P/MnqbKN2I/tuziw6weeaf+tem6E1cT+J8Et9TVb+cOLLi+LFT8XcGPZ8ifXzij/A9Hx6G7+PIv5x2K8JK8KP03+T7FbtYrP4y+JtFHjeTx2vSs8i/CbpKYVNYMf6Lrknwo+y3o3NwAUrmwYvgKeTXB119YRX4Pf/JulvW4c4ix6y/ldHfrvF/a/1DT/z3J//V/h+beS7+E0YyB34IT46d0tMusLf/35Ve4fk7YOLhRsHW/KUV3BPegb7oY1HWxflBH/w9zO4amc9dhZ83xC+96PmV+revYb/sHyj3gXo+DNJfGXqKXnenx+i7Crl1Q/dw7W8muM38IXEG/bTXSvsXkNdL+BvJvg7Kuhr9jeC3M7Q/Hl2l+pfEJSVO6Sv1d5Eew28PgFvI79/W3abBzuqvov8+Fl3Pso/y+Fqkv9qIziXyM37uWjSOrsJHxsmMn8y65Af597PHndj3EvJtgL9u6HlRPR2U26m0gDPRt2v2H6T35L8ti+LGEkeW+LEv6S9xY4kjS/xY38xn0Lkj+veWfwm+B8D58EnyH4CuLfBd9TRgP7Pxd1Peo6RfJ6jO7Km3cXcuOjO+H1NawMSvHiv9ReIztHdJ3tPZ8RD2P0d72RdqjY5F5H8FeXbhN+20P0z+NfzkBvPqMdI/oi/v+wv46YvscxX+2pPvJny2k/5MfqPENbPf7aQz/xzLLsbAKezjGPWtYFfL4RfwnOw/5b0aJt5hEvnURv9t/O8QfDxOvys8/zXsT883sL+vpKvKrwx/J5/P1Jf1/b7w97z/kNdB9HMI7KD9Werrgd+f6bmq8of4/zA4kh5fwl/WC94wL51E38PQ30B/tQ4mnuYYekh8wlr2lziFxCf8mnz91NrSAk7W/qXk+iq+Xgmf8u/G37f6n6PYb2/5D+JrJrtpjY/Wka/0Gnr/hXw2sa/x8v9SzxY4PvMLdLfXP56ZOG7tH8Hea+hXjpL+LfFF4Yt8XjIufsb+sv9zonZPip4Sv6s/fCXjeOIc0HcLf7w/7xfSo5S/RrnDyfFgcnwL/dPRtx7dT8Pvlc88ALn/zBNeZQ+PF80LdpbOPGoxvFL+JDhX+0fJ3wAPkz+VvDbid8C/9J/tM69kjyPhJPa/A701g4PY29iM/+SyVdZNyeuEyFd/OAHeCierP/POz7LvXDT/vIw+lqBrnfRM9R+s/22I3wZwZuJPsm6m/k/oZw39jFdfSfwXPo+/Ieyyu/65B2wpP/FjiRu7TzrxYxdJXwxX0kMn+fXVVw/WLC3g4ZGP/yvBCvBV9Cdu+CeYeONy6FvLr7fXv5+gf7+cPPdlN3+nfyLPt8hxk/IZJyYXjQ8Dcl4i8Un+r0r+iZ9K3NSv7CfxU3lvynvUm9J5f7oNXW/Ceuy7lPzKsretYDnYXP230fdEeHviHdC3u3anwFrs/KGcL6DXFfqHUdkvop9H2euT5HYi/QzUP5ZLPCl5/w9eh/7E8ye+vzZMfH/fxOXA6uxznvxV9PI9bEA+n5DDEUX79o3oIfv3D+P78ay/JT6CfO5Wbpnn7pGuFf8kn8xzEsea+U3ictbRa3F8Tr3SAs5gJ3NzXkP7ed97GeZ9MO9/byi/A7vaop4T1P9p+hf4OdyL/LP+1ox/VpWuonz2rbOP3THr/dk/ot/EpyceJvEvnT2/L79/kv52Tnwhv3kKHkxvvdWfeK3Eb5XiM/FbOX8wMpjzYOhvgY7GcFno1P5k/z+Prt7ye/n/cfXNhJ94biH9TMVfE3LIe8hI9fcnz6r6hb3Y8Xfoewvf3+Y5/jGLfTaO3cImiePI/NPzt8NbYAv1/1e/cRV8HZ7OzkcZbz+D6+FS9ef9+VH4SOZ/3p+nJL6SXX+X8YF9rS8t4C/wC/QfpP7O+pOp8FD4g/KJa56v3dXkN5X/v0RPe8Cz6G8Ke12T+Zp+Ifu3k3J+hz+MQl979tWafU0gp7GwnPXHKfKv5G8H5nyYfmIU+d/E7q/V7s3SdeRvSHwF3CfnsMinSvwSbg1rK/9T4nfJP3GIK/B3t+df0i8the3YV9ZPcz5iH+NDzkd0Uu8B6Mr63Kl5/yPXhkXz++PYYd7r8p43A715v7vQc23pazo/virnO/jNdHrPe9aizB/Y60j1DiPHxuS3RLnL2cUVsBp76YXuk+FqWAHfj2pvPDtqjt6W6FvIPn/RL/SUvivxZfiqmHMF9HEe+r7B33L1r5Rum/Vx9nlA1kfhG3k/SXxt4gdh+s/v+c138Ft4v/yc53qCnHLeK+e7SvF/CZyh/vOVPyXnh+mhv/SpCahB3x+wMf5e0H9OYR+T4Vj2VZZ9Ncx+T/bh2Ucv+edpJutDH8NWiW/BT/Yhyqvn+8Q/6q8n8Is/pXP+Zlz2xcmnHqxLvyPJpRa+bqDHfcgn76Ud9Rs3sc/O6J+JnquVvxSdx6Av6+ZZRz+B/O/T/lPs+cHEn0ov0D9m3++ynA8o2v+bje8ZsQvYFv/r0HV5+k1YL+83+Hm8tIDV9YfL1H8Xv6+jX60Nf0D/JPZ8O7wDXkE+l+PreHyVQW/m9b30Nz3MP/cpmsfvRl/v0OsG8hic8aXo/TXvs1MzvkpPMW4lHqEL+hsXjcv7suOMz/uR3078bF/pPfHXEz1r6Gcovzma/L7E993ksG/O4yc+jb5OThysdj5O/0o+n2Z/UnoN+d3i/03898DEB/j/DPb8Gj+4lvyH4P90//fi34l//BD9Leh7XmkBm0ufpvzNnp+inlHqaUo+FZXLPnjx/vc8cjsVnYOUX2t+fEbiKsjlD/K9DH3P0dvz8HX9/jPa3wtd5ch3W/65d+Lz2P8S9lNZekPsx3z+lqJzwEuyPobe5YkjzDki7V+v3cSRVWQvR6o/58e7Fp0jz/nxLon/4JdZZ2iI/n87V3wQfIP/9EBXW3R+nP3ZxI0mjpX8PpI/owAlIyB1lTxFf4cWxe3vnPdufneB9p7X71yNjnfI51N6fYB8psEl6n+dvBL3MUh6g/w72eO38Kq8L8o/hxxuQdeN8OvE32j/GHocpv4T0Ddbu6P5zdTEccoflHN5cD1cQE99tL+aXbU1juyu/Vrqu5c/15S+UP2/ZX6Aju55D2M/WY+7AH4E98/5C/qtTq9H6h82sK96RfHbFeCOOd/HL7+BL6KjDvomkuekxPnhryP+TmIXZfG1O/n8jN+O6Dka9tBfXpZ93sS/weNhu8SXe75J4iqzfqT8Su2VwC3+n88vTlfuNJjxdyW7uDHrSfxjGXyE/K9LvwqPwOej8rP/NyrnAaSz/5d9voe1m/3ALv5vk3tR6H1P6Sszf8h5xZw7g7vJP54drmaHOb9ztv7jvpxPyL5nxo3EUyk3HP3DIk98XEfe69Tbv7SAn2Z/hj+OhoP4wRvkk/N5OZfXNvsF7G9v9T3i/7bSozL+o3MQHAzvz/wDne3RvSv7PCDx1ORVTn7irK/Lvi66E5fdPPv8+LiQHV0Eq+U9I+ev1HssbJ84A36Zfd3D0JX7KHL/RM+ifdRzzU/OgW3U24RdZB1+e+m899XxfEN4Cvl8xl4noP/WxLnkfBw5nAkHwN30L6ex+znouw29L/s/50ESN5M4msTP5FzbLdn3htOMm5OMHxXodSq++rKv5ez7PHxfTh6VpavQR95P876a99NLPT8U1lbu6Zy34nc5B1l8/rEb+6mG3iOkx+V+hdybw44ONj8uzT4IuvK+tTL7KeorSx7l0s+Rc29+eSs6sz85AVbL+RbyakXPC4veb/8sLWAZdjKUPC/F37vSR6v3Ac9PZJ8r/P8d/B6uZh9TpCfByfBY5S8032nGHy6SHk5+Of94KL5jLzn/eGXGbfIrPj+/KueR2M8P0ocrvxU5T4vdaeeQnC9O3ETiy3P/hP8T97kQvkC/f2t/H+Pp8+x4d+nO7H8Df38r9xBINyb/JvjrRX8HseeN9Jt4/8f5W84D9JV/sfI5t5T14LPU/wV/zD1RX0rXob/sr2Zfdbei/dXca5Fx5ij8n0O+ie9OXPebpQVMfHdtepmn3rNyXiH7k9q/HZ8PSZ8vP+cEcm4g5wmOzLlY/B4Pa/HPL9jfWuPXJHgHPDDvzwUoWQknwk74a8Kejk7csfo7kN9oftU+cR45f6v9/6L7YPbXlzzH8ZOZ5Hq8/qOD/8/P+Rv9+Ufqf0D+4+jfxG6Wsdfp6PyQ/IdLnwdfoP/sT/1Gnt+i8xu4JXEG5FwZZj08699jyPNh9M2Al5Pff0oLeFbi1NH/K/q3Ul8ZWBbezL8SR1QcX/QoOhOXlDilnN9IfNI5nl8EL4dt1J91q6xjNYJZv1pAn0/CBvT1RuLzKv1fPnKcJvSX14/nnEcjeFfev4vuHzgCDjDf2p/ct+M3DeHNOZ9NT009V7z+OZzfZf9xEn/K/mM5dK8lv1dg7pXZgv7cb9GDveTei27af5R9dZXePeu/nk+cyfO5v0995dCzmd7+gh3lb2L/G+B2iRPO+V98HZm4Mu+Xp2f9ln9M186Vyl0Lc7/L03AxfAD9Q8nnEph7XqbJ3wOdf6J7A7yCITyH3gfZzTS4Lfn3zXo4e22U8U89iX9I3MOBuY+Nfl9IPDT8Bb6C/y30OF19BxnffoHlsm5Pf2Wlryefn7PfBFvg/xzpxOclLu+xovi84eh+FmYcr8CR62TeRm814WNZ36b3b/lJ7jPJ/SXTlP83PSe+InEVDaQTXzEGv13gQvZbnn7asqvO5NNG+uy8f2TdR/s1PPd73g/Q+4p+v6d0A+0nLjlxNsXxNaPlZx0gcTqJz1mk3R/ZW3d8jFF/zr939n/ms2Plt0dXO3iWfu5Z+bf7f1Ludcs9Fuz/y6z/8uufjOM3oLuz5w+Hy7KezD4monukecydsBlGd6fPV/H5OtxL/gL1nqXeQzMe08+MxIHwq9+kcx/lDvxgXGkBW7OzTfh7lr6egx3I4WTtL6evynAC7Kf8oco9nHMM6BzNfz+RP0i/MMNz7+X9PufXE6dp/KiV8ZecT6fX1fiq4v/sO2cfOudnsv+8CN/D0fUufDDnl7K+yn+K798qVzS/LSma365lpxk3Ev+VcaWd+obCffHxI/sbym4T51oc35p5SbXEkXpuN+Xr5zyb8bQs/n7U/3TMvQG51yTl6Xdu0fmbnMdJfG4fbGd+kfnjm9n/1v657Gyp9Ab5mVdknjEPZn6xL7vdD+acbO6DGm8+1Ul+R9jOc9tqbxO73S7rxonPz31CsJn+7Sftb/D8GHSNzTp54svY5WR4JzyRf2/I+SN21IWem5DvVHzcq96u7L9U/oycH8q5DHpcjf7s62efP/fvZX8/8ZUf6Je+Y39N8Pdo4uLynpE48ezf61+eYzfT4Qvyd2T3xxlXjoX10f81u8/55QEw55dzXnlE0bnlsvTXybrRvfqJxDlurf6j0bMx55tynwb66vOnuonvz3sg+z1dvQNgd3pYp3zmgQuK7hnM/YKP0U93ct+W/vpk/R0f7+ccjXRZ8i81fjaBTeH/xK8kHjrx0avIO/HRO9NXLXZWM/fMyF+S+Qm+79J/tsz6A3rvg1fmPtTMDxOvi67EMSV+qZrne6PrdHb4N/l86/nvEjeR+5yV34s97Mi+E4+7k/QxWY/MvUnkl3j5rDtlHeqJxB/CnFvJvZg5v5L7MftLd/iX/etLsp6t/nLS5fU72T8tz7/vxOfDyu9GPotyXgi+Tz5r8PMTrJN7PNGxEP1PZV+m6HzRpQX4Zx+r+P6XL9HzFzt5Xfk/9E/lE59Kbz/CF9V/A7lcRA8Xw97ozbiZcXRY0fg5lh7HwZ8yTuo/l/Cf5/2ffc7VuR8g7wfwBv55jPI7pF9I/K3+4hv8v4T/tgST+L4lWX/J+37OC0nn/aBGzteRy9bS85Vvmnhr+S/g49vs7+X9BF+nqjf7txWyT8QvtyKn++nnd+nj8H2D8ltn/oOvTfgco56DEz/Cb3Ou8QH8P638LugbAM+Et8j/Kutl+o/acIL8udpvyA/qw3NzPwL72SfxzHAs/nKfbu7XvUA/l/t1d8TPZejYOesH+Ps280mY+6Mq0f8VifOCxycO8V/m75m3N8++Frnm3ugbpXN/9HXkkXsai+9nzLmTnEPJPRY5f9JLfQvVf4r8EcqfpB+YiP8f0NnD/Gmmcac8+2uRfcqMP8otQdez0V/ux9GvVYOr4HbaOZ29teb3rWBlcjsV3W+ZX9xGvhvRN0R7F8NzE+/Ofrqrv656/4Ldcp813BtOZicPZn8v95Ljv/h+gj/4z3Pk8j94lfbXkU/Ol+S8Sc6XfEm+F6pnufTK3L/j+b/0zxlvcj7yqqK4p+zDZv/1MHgf+dwLz1d+Pn4X62cWSA9if9mPaqud7FNl32o2u1ujnQvIvx76c370n3OjyuX8aOgP3eNq/l/6e+pf7mXH16K/q/JnJ9498a3q+1R6ZNaNcg6XnFvmnk3yLFHvmNzDQz5Viu4dXAMH5x5H/K1nn7lH+AHlm+R+avgy+78n8Sva/1a5LonvUv72nBeHWV/cOf0z/73G/1eTc5ecr9Xf/QX/hgfIz3iVuPbEqyc+fSv9XVlYBl6X+H7yOLTonOzcnBv0/7bsqnLR+/vW9F4d/mAczvc0cj9Z7iXLcZ3V5LW8yH8Gw/hP9nUTP7Fn5I/OZ7WT+Imj8x5ovK/h/x2Nj1Okd0b/ywjaXn0V1d8/32NIHAI6d8p9OrnfAD+Ji899e4kPelm/9B2+2rK7dfqPhjlvAD/IObrE/avfsFvyI6zNblfj5xD8fp73rZwP0S8sLi1gN/OfMTn/SJ+5h774/vnM93JPWfZxlpNfvi+Q7wrsDeujf/es0+ZeiKLzy4kbTxz5SnQkfnxk4nvVc7XyMxlUv9xrrvxm5W+lvwMoaH/YDo5X/0CCrQsbwW1yvpICEmdZHF95tvqyj1e8fzcSXVkXfJX83ia/7HdnHzz73llPyXptN+PmcXk/YT9HsuvPs86E//fQ1yHx89nnYKf7Jv4z9zbz99zHmPsXy0rPZtenpT9XPvd55/tE+V5R7vfOvDTf/8n8NN//yf1uiVMujk9uq73ncs947gvN+7Xn812fx+GavL/kPhb4En+4VvuJl2rKri5kZzX8Xyb32eFngfoTP5X+tbby2xTd0/EOO30PZn/0OPTNLi3gLHgreR2Lvuy76gZL6pND9l83ovNPuAFup3z277aFv+KjtfxO9NvH/83wW9fzTdlzk5zL0w+fgv7cqzYcHpJ7fWHuVTwu9xbSw015v1Ff7me8OOf05PdTb3v5HyUeHv9V0Zt703/MPTPklPvTd6WX3KNelX6yrvMHOovXd14Lvfw352kS/34geg6C+Y5RN/TdyF9HwJoU2S3xw/ziOXgzeo7P+SXPb6SPw8nhKv1H7k3JPSo7lBYw96fcmf24nE8p2v85AF2t+F/ORy9D3234nUuO96DzXfUvLFp3aF20/nAkentk3qe9Ifg7lP3dSS+5JzNx4hs9PxZ9jcmhR86/eX4Xz+eca869bkF/7mkqMb59kPgQ/ptxsDbM+HdlvpcB6/OTxBllv/U67dzFfl6gn57SZWBZOFj92c/9O+t+uY9De7lXant8Zh8039FqmvVx/tU8950Xnd8abr6Vc1w5vzUn96bgZ5b0bewj98nnfvk2MPfLhxxi+2feXivfsSpKz8bXDPJZmvc4cnwj95zm/hb2lXl28fx6vXL9yPUz6UNzPjn7qezsJ/ZUQ/1ji9bts46f9ft9yK8C+8v5rjMTP0Bf1xJAcf+3U/aV4M7wV/yfQy6D+f1o8hmU/Xx23Ag+RuCj6D/3wb6D/nfh3eg7ir+8Sm9H4qMy+19ZdP9We/79Cvnkfq6DYc6JnIv+rLdl/a08/WX9Leer65o/jsTXZdrfF11z6fVSepqq/abkUZp1B/I62HPzE/dELrl3ain6EjeV8z/F8VPHouc/+Li4tIAvou8RfJch563gwtxfg57u6Mv322qzwy76zf3U/6l0Jfzl3pPc41t8/8lLyq1A10vwTedDcl9a7vnJd9jy/bWc28o5rtw3kvtF1uZcNyy+Xz/38t8Li+/nz319ub9vXNH9fRP4y/vKvwcPI9878DMZjlH+ouy/ZPxW/+MFKGkhvQi/+f5mvsfZmHxb0Utr+DX/a0pPndhLd/ZzBDwcHfPY2YLYG2yN/sbsZytyvpzeN9Nf3mcvzHsT+Z5E/g2K7o/IfRK5P2Jyzi/yj5P1Nx/h7xJ+dz2/HQZvlb+N/ut49Qykv63VP4Ecci/Dz+SxPvdTa69ZzmUUxZ/8J9/HhC3zfULt5zzw/olvh1fJz7ntsuRSo+j8dtbbs/6eASfr79/R66l5b8/8VX3DPT8MVlTfV/h6LfuB9POM9I70k/vSR5QWMPep5/706eTRnl0dLP0N+a5kj3Xo5Xz2ca789B/d0F0cH53vT+a7k5PVk+9P7pC487xvZB024wu5zYHnwXLKd9buITmfwd/yPZLcX5H7O3OfZ+7v3ICuPjm3kPdQ/H2T+CQ4kb1eib7XC5DrW0q4S0kL9pZ196zDL885BPLJd0/zHdTD2Xu+f5rzpVlfzXplzpcm/vIw+BU7GJP+V/0Pmhe/It1c/tbkVS3fz4WnyO/N3u/C/zaJzyK/3p6vmftrpU9Cf/z1HFgbf/MS/8Ce9oNr2f3a7K8W4J99wOL9v/PII/H15RNnV/R9znyXM9/Jy/c58/3hfHf4icQvqj/zs8zLPi2an21XFNf3M5ybe+DMe9p5f+jCfm+E1UsLmHs1zlJuBf0+S56P4WeJdFX0HU6um9H9n8yX0Dcr3/VU7mn8P5X1ldw3Di+Clckn42bWGSsVrS9m/N0Z31lnzPriWHY3Cd7P/nplfZlc9uIvn0uXZP8dXxeg4wb6Wsn/8t2AzD9uw2e+H1CzaH85cYwXkE/uf813E/J+Px//+f5C7nvN+/2CxJf4P+PQ2qLx5+Si8f129OX72nk/f7XoPT3v5z+o73z1P6r9QdLL9ddfwhVwsfJL0fFz7i+C9yuf7wZVy/qC9vL9oPG5n5EeKpL/7Ow/Jx4VX4+m/5W/urSAJ8GTYVf6HaD+TdlHgsvQme0RbJcsgyvYadZ7P9RuXX7VEf+513UzP8z9rjOzv5/1E+NUG/z8N+triV/Szo3su438XFe/NwKLz9fmPFa+U5vzWjmf9YoO7VN2Ntdzt2f9MN8fQ0fW47P+vr/6rlG+KT3dTP75nuhC/pvvjeb7op9IZx0r94V2UL41fnOvaNbB2st/H7+JX0XWP3GtO9FH4l8TD/u29IOJP4eL2X8f8n2BnjOOZB6Y+V/uCSm+P6Srds6h59xDUnz/yBL28HvOKUhfk/lvzi3DgbAJ+vJ94GeyDyK9E0HMpbch+OufewqU/3/RiCqieJx1nXm4z0X7x7/ZwrGvJcuxHPt6yL4c+5p9S0pokX3fd4VEhBbyJBHKWmhTqqeSNVvIdghFniJUhPhd1+/7ermuM1fn/PM+85ntnnvumbnnnnvmuyZl5P//1twTxdLgfrBUFCLvgYfA1eQ7kzmKH4E1MkbxZLkoVikUxarg+txR3Fo2il9niuLvlJcrdRSvpo9i78LUn4f84Dflo/hwBvKDKan/wQpRTJcminWzRjGRdN3KRPHzfFFccD/lEF4O/W9CX1vo6Un4beIL5o9iITAWTBEfxd9SRHE+OA+smyOK2+BLDr5nB2+AOwpEsUXeKG4n/Ajld703ig+DXcBm0Je9SBQbU97HOaP4MvwuliqKw+D7N9DVG75tBbeB34Kd6b8VlLtcpNxh8Gkn/JxGPVNF6ptLutOEM1B/P/o3LemXkK4H6X7j+2Tqu0Q9xaEjI9833hfFTeAHYFH4s47+6g2uBz8h/t0oRJqBM8AxlBOTK4qFkMuCYDf6Jy10FIGuCYR/IH832pOK9pwHn03Hd8pPCeYA4+DPTsbdLrAS8h9D/JvQS3URxDzyCfLchf58HL53JTyV/H+kjeKjpH8c/JTxtR56U9OO3uB05GMs7WW4Rb4Hez8QxY3w+37k9EPC3Sm/MeO2erYo1oOevcQPpWHDwCFgFvhfivmmNvLxE+NoGe0rAT8fg+76tKcd6b4vGMVR9Gt7yj9WOopr4NsZ5pUL4BPQN5F2TgCbMN7XQt+sLFFcRfvmMH7vJ/8M6HkBLAGdbaFvFXL1LtgUfqdADuiuSAy4B0wBH28wz98Em5G/NeUfI3wULEn9Eco/Q8E7wG3gG7RvEHQPBo+AeeHn12BvBDM78/0r5C+KXMeDceBK+NMQ+eiF3G7OHsVXyb+d8jvSns7gQ+Q/R3vOg6fovz+Qjyr0y0baW5VwBcr/Gfm4HhvFS9C/h/KH079XoO938Fnml5bI5TPwpRdYB3q6wffn6d/p4C3oWU/7F0BXKzCG+oswj9ygX26Cn0L/NOR3OtgG+jaQvz/t+pX+Gc76c9L1FblJD+4C74fPi8AD8KUQ8r+Y/BHaexZsS7s/ZL7PxHwwGD7E0v5UhEtQX1fyHSCcn368D3nZQvvuJ/wt9fek/CfAGOahrcRnpb5s4EUwJfPKLvq3PXK3l3Bn5Oc63+Pop7WM7/fp/+/p/0eQoy8Ip2T+XEd5K6F7KuUsp/8mM8An0c+P0P9HyO98WR+sC+5xfSJ/P8qdiXysZML+gn6YTvlfUv4x2ref+fBe+JeZ/j1O/GjkdAxYg3Imwd++fH/KdZ/wJuLfQd7uo9yL8OlL6M8AvU3g6w7yJ1J/dfhZFawBdif/75R7KRYkvJD4x+jv1IyLLOAryN840teDrnqU/zf0H2d9yUL52cBUxE9wvYCv++if7NSPuhaJo119kIPpxL9H/fHUXx7cTv+Vpl9Ow8cfwVbwZxJ8nwhWo56ZyOcN6MqHnFx3niF+PfQMBn+knEmUP5T2HVQ/p30v0P7x0Pc7OAFcQPvW0J48fL/BOvoo+WfTH3PAytQ/mPgXkd/ZYFMwNeVPl37a9T7xr5P/a+rfRf3X6d9FxKei3hTgZOovQvllkfcK4MfU14T4tZS3BjwA3ka/OES994CH1U/J3wy570O/NSDcA/rUb9Rr1HOOE77FvFyNeToefInyBzD/PEP5gwjPYn75g/m2HnwbRfgtkfY2ov2vIAcDoe9N2nM1NoqJzKt13H+p9zIvZ6I/PiR/WfqtDDiW9u+C/hbQMQccST/FZ02av1CapOWYfxTr3hXo/ArcBn3Pwpd8yPV6wpuR/1/gdwHoQnwjT1H+Q8wjLzHPzAGXQcensVHsBB3H0GcywH+aFSFb5CCYlXqrgzXo77qM/xf4vpj+eAP8C/q/pH2Hoa82uEv9g/atptz8rtvgP8R3of9ehe5KyFdz2v8SfHcc50O+YmhfGxo4C+wCnc8jV2Wp70/o+wNc774GeruDe0hfkHQNoL+heinxxaE7nnQzwL2Uc4f5dQ709uD7eNLlAYdD51b42pH54SDtL8P34axjpRhH7ZDvP2n3IjAnmED+FYSbgDvhzw7wGnRcB0czj/9Be0eTbyl4DcxH/0+mnMvkvwJ+R/6mYBPwBuM3C3wc436XcEnK3wu2QD/6mPGxEtxE/XXga22wGfJThnJ/hF/HwHHgGvjzDfNpHcZtK3A18SUIPw0+A84lPhf9lwM8TfnznB9dT+jH/oS303/tofc96FgPbiN+Gfz6xfUFPE/8YeTwz2T6/wf4dRg8BNYk/1TmjVSxUZxGeDrxhVAwCoNFwDvEH0W/2E/+fWB/xndp933IVSnCORi/Zemnp+m/p8A/md/+hj8z0SMXEy5B+6oif+vBO4y3GcjH7ihE5oOtwRqsE2OC8fNnwL+dzNv9wAHgddq/iXJa0e4n6a/+5L+G3C9yHkHOv4M/efj+ALgPPhUgXQzycJl+eZ3wOvJnhf/FwRvM33mhrwrr90fkU1/eC3/cdw8B46g3G+XNJH052pmVflhJ++4gj/fyvTzr8DjmvwvIfWrXK9bVxeQ/RT2jqX8UmE57Ef0xAPwKTEX7HyHd4ShEEKtIMeT0HPJ2lHH3M+HR8Cd3MK8tDea35+mPmegn9WnHVuh3P/402Bs+nSSck/TTgv35HddxcCn4AOOhEuP0JuVM0e4Hqvd0h39vx0In/VGQ9n1K+nHKE7ib+KrMW1XAxsj3BfrvOvlbg23A/1D/C8noD2/Dhyco73+061cwPfnyER4VrJ+D4P8/8D8R+saDS6H/b8IV6d8Y+H2O+HuQv/aU+zn1HKb+oshJK+aVSrRjseMUeagM/sA887L6Bvl2oL98BhZFPuppz1d/gz83CScgV3XBzdC/1/VfuyLjdxQK4mba9x/ac5zyShG+RnxB2lPI/mF+PBbo+38TrhfYN5tSn3bTZoTbMv60q2hniVffg09rY6M4nHkoI/K6l/w7yJeJdb5NoMep15kujM8LPX2ptw94GNwAP7LAn8qE36c9rovqleqZ6pf70cdm0C81CO+Avy0Yb4/Sr3ng25ueTzAfnqEfb6pfUP5XlJeR+rtCZxfo/Il29ASfAD2HmkL6Z0HPo1KT/wW+zwRHqPcRbhekmwHuo19X0u7RzNsjwYHI56fu3+m/PLQnL/H2R28wA+OtIuVr/29LvZ4DaP/X3vwaqD1a+/NI9UZQO7T250sET4PtwMnwryHlLQcHgRvojxHKN6idXfv6q9SnnT20r2ekvbZfO+4esCbl5CBdNvAU8nGJdT8D6aogP5eYH+0v7b+XwP3Qm5d68oH9aFdm4pUz5e8R8q/iu+eRc8GGfG9Mf1eCjxXAePAK8l+Ocdae9eAD2tcQ+tciL68w/91ivn+MePWg+dC/ifCbxJeAnoXQtwC8iVxmYp3KCI5gnD7O+I13XoLOochde8rfwvr1E+0tSLntiJ9Afs+nrhO+RvvHkH80OAqcxPj4ln69Cm4Fu0JfM/TJIfCvEPIwuXzS8nakTVqf5bdBDluD74L9KN99Vn/wEPw9Rrgf9HzMvN3b/Qrln4a+e2OjmAasSPxB5qM62g8J95L/yPM12vcXOM7zIeRhAvkHEN6vfZb52vOTy8H5yTDkrSd09gCrkL8n/FJPUT95ET60oL+3sU5sQH98FfprBnpPKeRAu8r1KEQeBCuDnaBrFe29Cr8zg7uhP0J7duoPAD3PQX956H0Gue8Fvs54GoZ+1Id8i+BffvKnCOyHhwL7YQLl96Hc3mAPyt+GPNxkfTvC+B8Hf3qTfyz5PC/IxPdm8Mnzga7w8yJYn3zqUY8h/+PInxNMTXwaMD/8PUy71dvU49TfJjIvvBUbxQLI+T7G1zL6dTl4lv7qAX9aQ/fXlNOWcF/iMzNv9EN++oMFiC9Evt76vZD/BP2/lPXXedl52vn5JN+rKLdgT+3zUYiMBZeAa5jnVlBvNdq9knAe8jeh/gWs+9W0VxGvfUm7UlPC08Ga0PMkdD4BjqQdTwX7p4eQh37wpR/53T9NBYvCx33kywpmAXczTscgl2WZ38uAU5HPm1GIjAdXgNpft8KnCtRbHrwMNnf/S3vTyA+wEfQ0BjPRvg3w+QZ8mM+8PA/sC397Qf8U103GV03o6098auRzAOElxH8Bn247f1B+LuLT8/2i58LQ8wTyv8j5BFS+GpFuI+2YFqGd4EH4fJLwYFD/jr7wNSXllEC+3kO+ltA/8rscGAsfuqvXw9fMzsPw9zNwJvWtAh8Cn0K+3qG+hWAH1oEV8Mf9mvON85D7txWuD8xrj8HHOPK733L/9ajrK+H/eS7APL8W/I72f0N/aR9ejFzXoPwqrDd3mBc9Pz+E/EykvHrJnO/Op12ZaE9mcBTz+ufwZS7z2DywNvnPx0bxZ/AcOAj5yY08Og5Hg7HE36D+m+BE+FnJ/mN8ad9oSHu1bxRwvwlmJN9L6qf0i/YB2BH5mPyXqPciOJT8q+GTeq167inoV7/Vv8xzD89BPP/QH83zD89DPP/Qry8n2JL8LVhnduvnQbznFVNIp3/MBsaTfjL6x9hg9YYiyKf6w1DGb3bmqwvgJ/CH7o8gxpEz4Fki1A/VC/sH+mFb+usmdOVh/O5Sv6U8/egqMt70n3uH/j9F/sGU/7D6M/RmAbOC6xnfaeBTQfhWSDmn3J/pjxTgPeBHyMsA+PMhuBQ8Qv/lQ9/PC9YEz9K+E9pnQO1vE5mXtdfcgu5/wO3Qv5r+64g8riL8FOXfhp7PqfcO4efYSK8h31pwIPP9VOI36ucJToA/60g/H3pvUW43+HOvdmL6NwX57gHzUt4R6mtOe39iHpsC/xYiWAdcz8F19G9t5rPcjIecYG/a3476ByE3A8ETlH/acyD5DP3HoasZ604q5otajI+q7L/TMa4eoF15wPaUt5hy3gWvIjdfQZ/n3Z5/ex5+jvHjelA4sNPlRE8/TvwJ/UAj0KP/Lh+ygQe1M9CeI8jLBehdDR39KO970rUCD4Dl4P8H0HmG/GfBO9TzCeO0BfLRHHyW/DMZ77PAp+HnK9CfAH1LkIu6hG/Tfyeh8y/4lkj4P4Tdfy+PjeI++v9d6vdcYQw4gPwjyMe0GDnEP7mRv7rlk8ZfDtIZ73lDRcr3PMLzh/3MW0fh0yH4c4H239QOFZwvvwWmQw5iwHjW/xb6H1L/HDCR+XFKbBQ30p6+yG0/91H04xueL0oXmMHzw+Bcth35PbctxXgsC56hf29An/b7btCRGNjv59NfY4N+6k+92m21474HH7Xf/gO93cn3ONiB/MPIN4lyJoLrmd8WIndXwYPQeRH6ylDOQMrVX7UO/ZuK+Wc2/XyG9rxO+79x3qPdKQjngL/nohDRbTbUT/bTvj3gCeT2e+Tn7cC/PgXzV33arT/9c57f0E+F1a9I15z8LcCvkctS5CsNjmX+6Ev+K667tOso88drwT7bfbf78UTCdZHXVLQvjvm+Me1/kHpyUL/z3WW+byZ9ReiO9/wY/If5fQDhgZ4zu+6p57EOlQUr0z8LI9AJ7gPT0t+7aHdt5HwV60Bj/e9Ij7vWXfu2dm/HkeOrFOh9m1mk18/vOKh/Xw3329CxhHB16OkAvzp6vgPf9jBOX0Me6lPuG+An6EeuVxWCdUz/rY+Qt4Rkzq88HypOes+J1oLvU5/zqGYv51Hv65SD/vLgw8S3pj9bgW2QJ88T79AfW7wfoJ8d4zMF6UaQf7h2CurtQLij+g3fR5PPc8PK0PUg2AX6FtCeH8Hq4Az4W0H/bXAf9ZRA/ouRvjh4AszHOPqV9PeCacGTzEMjPfexXdSTGT50gt7OYAPobsf82pH6fgJLIYhx4DjoGA+WZQIrAP3KnfWc1o4P3yrqRwV2Y1zNon/GEh4D7mC8dyL+PtqVGzxIuhyeM/M9xvNX/Z2Q+7TIofYbz/N+00+c+mLBnLFRbJmMfjISrM84UZ6GaTel/k9Yx0vAx7/Jdx1UHn5Qj/aeBfU9A24E9bO6qV0JfJ72KHfKofIXS7/9aL2sU+8STokcjKT8T5Gr2dQ7XHuW6wRh7U+DSX8/9NwHdiReP7TQT20oeJtyHV9VwFrIT3740ikYp5cody9ylZl69xH+hf5b47pBOQ+QT3++WZ5fapdk3szmPTPml3LML7eR/3OWT3rtrhXB7+F/LvX9wD/od/VA6B0a+OnsdiOgvc57G8xPExh/q0mmXU47nfa5fyjH+bWs58vwoWUwv+qvkQD/WwX+IY2g+w5yfZ7057STkC6VehfjsDLlPwg+Sfo4+i0FfCyBvnWE9nl+4rlJSsa/5yeVoUe/lbbyj/bXZFx3Rq/qgLxuo/8+ZxyH5xeea6TR/hucX3iuoV6+HlRfTwzOr48G49zza8+9nR/C82/9hbVjh/Zr7XnJ6dH6Ra5DjkP/yDvwRf9I/SVXJ6N/jCesHvJTsG9spf8v88wM8nXVroi+tgf+b4BO/ev1t9e/Xv/8Xqxn+unrn++5/2zwd7CR53XIqevbWtD1zfBLYIdI0nzLHN/gGPplLvUPUa6Q2wrI20jirwXjXz3X8a9dMJf6rOcO8EH/BP0SZibjn7Dac333CcjXZNpTB0wAV0I37IzQPZFT4FT4XYPyqksn7axDvaF/dri+qEeHenY67Jrv0b56hJu7D0AeXoDORZ7Dw5fB2meR19D/w/7fxDx3ioaeEOmfJo7zQM9KJP8P7B/SoG+nAguTfwr11QJrgwOY1897rwp+VASHwKeSyJn6gPqBeuMx+KOeoF6gf/84yhnrPRboXQ1/ilBeYbA49R0h7Lmh54jdkF/XtdbMz/rV6merf21ioB+VA7XfVIOfVdXP6MdHaU8NzyfB6uC3+p/RD9ohtT9OVc/13A38EdyiXRM6ant/nn6ZS/7Bgb1WO+5F5GYS+Lf+Sept1JMePmk3vB+8DhaE355vlXWfQTn6I2pf0l/R/ZH7R/0btc/o39if+mcF84P6TF7od35QH1L/0T6hXWIqqH0ikfK0j2gv0T5SCzmoRnxV7Zyk60x9D3uuynioR/0dQPf3lcBPkMPl6D3LwOzI+efQ5zmr56/Lqfd97Vy05yyonU/73n7ytdeuBO6Fr1cC/X4ouBl69uRK2m71117eg6d98kE9drT2MuQzNeN2NuFL4EXW7cXJ2J9PkC6GDmzluPMeE3TuBK8xr2+xf5k/h4AnwG7wR7+V48n4r9Smve4TBgTn1buhYyd67HeEP6f8A+R/n/y1nNc8X0O+9kchUgO8u78mv36pBehw7RLaYdrAd/0Q+9C/F1j4fg702OLkf5x++h/4O+2Po7+cdzLqz6J+zPrbHH467suAPannf5RnP4b95zqygXa7zjwOfys4D2j/BhMYn31o34vUO1s7SnBu8pT3ApGzK4wz9SP1Iu0F6kdXye+9oKKU08l7o9DztvtZ71sgD4uR24xgJnAI+qfvz2hf097m+zPhuzV37WvEXyB9S7AV2Ib54W/CvouB+EYehg8xyFMhxs8Wxk96xs84+LuJdn0Afgz98bTbe1h/geMpRzuZ9rNi4EzyaS9jONy1p80ifh7hq6D7f+0C+ZHbGPohg/4q2s+Rr9LIRSnwaeh0PU/unKYz5U+zHuQmhvZ7T9p7096nbsF3x7V2tNB+lp51uw50xhBuCP+/9N4i5X9BuBHx3vvzft5s5G4i9T+NPqJ/o/6O+jd6nun55gr6zfNN/QL1E/SehP6BtfUz1P8J3Mf84/7RfeMu0POd0D4bH5wvhnYH9Tj1N++9rtL+pR0LfhWGL75P43s1vk/jezS+T5MS9H0azx9/cbyBnj/eIXwbbKk/IOOrE/wvQP35wf6kbwu6L3Kf5P7I/UIz7d/6nwT2K+1WrleuU8pxWfiiX6z6q/Ol93Ib0u7bhL/S3yEKkaqg/ed9BPfnvifh+Zby7rrmeFD+F5P+DbAx5Z1mnqlIORNo13iwmPtwz1tB7Vjar5aRriX5tPdUp9y68tXzN9JXpd9896sn5XcHh2v/Y9wUZtxtJzyH+NAvPbwfEd4vrxDIv3Yu7WCNwFjo66ieT7mDwFvoofqJ6T/WAixP/h8Cv5Ns4DrfZaJ+77VpR9V+WpP0ydlR0uhvAW71fQzyV2BhKgbdRcEltCucl5Vb7dS/+e6Z6cFp5Fvh+CT9HbAO48vzoj9Az5E8V3K/35Z82gPc/08j3WT0+TToQxPof/fPoX6j3rMA+prQ7qbgFOJHeX8D/hX3HBQ+T1Cf8tzMeRQ+618Wa37mpSWUmzpYt/TTcl2b6zqqHmx5zC/qcy0DPV19T7uv+XNS3jLa5/0V7638Anp/xXXDeSdcPw5QXqN7kpbnfZjSzF/qd9rB1O9epr2+X/cg7e4JnyZDZ7Ogfx4mXWv6wf4pCVaDLu217cBD4HbkXvuZdnPtaNrPkju39HzG8492fFdOPQ8h2V0/uCtgaeSjOhHNSd8M/NnxDD3Pq19B11b1KvjwDnxZqf0CvoT3B7w3MJpxo/6d3Dnd7NgormJ8HaHeZYyv44z/N503PCe3f7R/QP8kz3kKJqVLOpdHktKnX2Zyev47rDf6h3v/+7/UXw8+ngW7kn4gYZoTQS2LXASbkm4EfCwTnG88DR0PUZ/nHNOo9yAFV2D+bkC89xEmua+BDv0eqhLW/6EI9enf1Z16z9L+8YR9/1B5iadByoPvKL7heQDt8t2F8H1M381cqfwnw79FUYjUBN03uq++xnftvwzryL7sSfNZzl+RpPnV6x+F/lC/1z6rXdb7elP4rl+ifjuhf6J+ifr9hP6J7pM8r3P/tM91m+++i+I+yv2T+0P3haNB94fh/WL9BbxnrD+Adjz9Bbxf7LxcDXSfpt64kXkm7D/71X2u7666H/Y8032u+1/txr7fOpL06jXqOeo3oV+P8q3cz6O8V133wNasP6PI15/v+uF87X6A8ZWR778QXkt8+cBuHOozb0OvdnXPMarCP98tLWX/0w++Y9qcenz/1PdQff9Uu/zqZOzz+qfol6K96U3PHelv7Uv6q3xB+UOhV71UPVX9VLufflP6UWkX7Ei6LvrFgE2of5T2RPdvtLuX8xz1KfcUe3dc3CLsuHEcOX5+BefCB/UY9ZfqrudgTeaFPp5zs/5o/+0CvgB9FQL5/Qd6lF//lHvHgfLfINBrQv1IvScWOT9PeCroeur62gn0fHAW9aSDbv1NvmUedV8d6gnur5sH8cMD/cF9yRD1As6X/iK8m7B+BLnBpfoPBPq+40b9R3nepl0J9FxKe5TvJ52g/Ja+Q0r4Pv0y9B+6N2n7bWdoX3A/7b1T99nuu7U7aoc85boLvzy/TAA3gp5f2p/6mYT+JeH5lvqL51zeX/I6hfYU/TfCfWV4/0l7hP5J2iu0T6hnqneqj7pvcjy4//U+oPf/2sAf3wV4EvS96ufI5/sAg7SbIDeOT+1Svufh+x3Koff6avi+IGHfXfYd5nSg7y/77nIJ6g/fX/b8znM7Hyrz/E69r24yeoznjetAzyE9l6xEWD011E+bEvb+yTBwM/Lj/Qj1jvHg86zLB3ynmfY+BnpvQrrUG0L7suvvr2BoX1hPe7UThPYB7/suhJ6t0Ov93/aU9x2oXuW+rjX8T4DuOmBP6B+inYzvI8DPyFc05t/pW5/MuGvs/BKs6+G4107hOLQfw/4L31fraT/BB/fTrkuuU65PvvP3UDA/bXeepL6jYOgfq16hXSHUL9QntE+oZzQP1v/zYGifUi6ag6F8aLfQjrEusF+4noTrj/Pyn/CxCnTph/UV9Knfa39Rz3ef4Psx2v/C97G1q9bie2hfdd1VLhoF8qHcKsfaIZRf1zP1QvVF1zfv41u/dvjRpNcvy3v5oX+WfgH6CfgOtv4B+gP4Drb+AvoH6Dc2Tr0vuP+u39ij0BXef3eecP5wP1LEdzgJy6eQP9pL3X/53sxC9ye0pxKYCn3T82XXO9e/0H9Ru4bvkA/y/B/6tGv4/vhl+PIS9dehnseTOT9tS33uD0+D+u9UJJ/vaHkf4jnKfxJ6fDfLexCLk7HrhveDSzJf+L6C7x98T/nuWzIks3+564/v+mmY9df+Dc8h7V/1g9BO5ftKrsfanVynXbcvgxm1Z7n/hU7f5fJcZiD88p6Y66LrpPczXR+l33Xt7jrMd9cl3/dzvXKd0l/Z8xn9mPVr1r/Ec2v9TPQv8X63/SYf4+Bf6N8cvv8t3eoNIf0podf7jd2odyT0e96mHu0+0f2h83pDMJzf5at6x2+g/D1Kebf5fgcc4O8j+C5doB9pH/CcV7uCdgbtC+q94frqupsLPdL3p3o4v9M/vj812X0KfDkDXdo5tHuE9yO0k2g3Ce9XuI65rrneaY+YQrz3dz1/bE/5QynHe7+eZx5G/v29E9flRqD7f+0HrutF9Z/ynW/Te25Hvm+ZZ7UDhHYC769oB9AuEN5fcTyH77euCMazfjf64egH7b4unN/d3x0K5t8Ewt0Du4/8D+2bjjfHn/OX40+1nuZEEsEjtN99TrgP8nxIf3vtEPqxaYfwLzk/fufLuGTGfzi/eR/deU5+aYdxvXR91A6gXUB7gfc/NVPon6m/pvYV/Tv169S+od3De3men7RCX3uXeO/neW4yQ76wP/L3aGyX+qT36/Uv8hyqteOM/L7X4b21EqDvsx0I+Fsi4K/vcsqfkqD8qUW7fL/3G9vt/aBAfpVn5bcoYe/PeV/Vd606E/b+svfBY9m36BdWImiH9Euv99Nsj/T7rqbnp973vwh9npt6rz+B/vPdRu15ypVypn2vCfUpn+H6oL+a/RK+nzc5WB+mgNrBLC98v8V3XUpCr/NiQ+0J0B8XzIvHaPcT8OVPyuPzXX/yJ2mn+6oG4LPgUPp/nnZC6vO9Dn//y98D8d0GL8j7+yD+HojvP/g7If5uiHqtdh7fpVG/lS7pdN8nfdUD/Ut9TP3LfVq4j3P8Wb56Qtj+9IFdpSntbUb7lzDPl1QOwGe0l0GH99z8PRbfqXSdVw9Qv9c/yH28+/xahF8BbzFOXqNe399bp12UfZ52uQRQ+5x6bqj/un6oN8kf+aL+5Lh0nOon7fgM760XDeYJ1zvXQde9icF64foU6t/uV1w/3c8sNB90qXfpz6Ne5vmP+pnn8+pnoV1dO4V2d/2XSXbXj9l3DPSPUS/1PQr9Y3wvPJf2ANB3xTvBp8nw1XeI/b2Ft7RLeq6D3jOC/pef2vHkt/x1P+e9HPd77u8cl/4ckOPVcervViX3ToPzteuy65Dyobyr/4b3HLyXovzWBZVr+Rgf8Fn9X/8y7R7a1/R/9t6M9yDeR673q0cyf+v/o53Vd4XiGf/aVfUD8l0i7f/aRfSH0D4S2t3LgNrl1Ruct0L9QfmvDSr/7t8X6/8IXd4XOuA8HLz7q/7he7/eI2lDvb7n/l/vr/q7PvR3aF/0fQ3fYfOdDd/XCPWF8P1L7Q7an8LzaelQbsP7Zf7+kXZh7Twd9f+nf7UPaV8eDn+qQEf4/rTvUnuvwd9XCO83qL+pHziO1A+S0zvUb8N5Xzuv64J++b5j73lQB/2raIf+o3Gg7xb5PpH+o6k9x6fc2dqztXOD7bIlbYfzRPi+nO97+q7nb6Dve/aE/75v6Tsp+0in36V+Dfpf6t/gexDOC/VA77UpX44r1x/lzf2U/ex5u+frriPh+uJ61R/7t78f4Hu/G4LzP+2koX1UeXVcOc6U69bBd9M5LrVXPgJ6H9b7r96fHQNftYd6f9Z10XXSddD1UblzftkdzC/apbVTh/cf1BvUs9Qn1CNsVzh+bb96snq058meHxuuH6Qzn+cHyemR+ifr/+19R+83qo+7D1BfVz8P3431HTTvRTuOw/2/+yj1g3D9cl0L9/2h/SVc1z2nc913vnF8Ol4dn8q78u/8pvx/F3w33ZWgvrNBvZ4PhnaNcPwcCsbnD8H8n4C8+jszb8HXL5HfUK8N9QPnD+Uz9I9yvkqOT3sDusL12flGOdMPV/9b5SSUH/eP4flguL457lznw/HXg4dJvlMBQy66ZE0a73fTXUd/TCwaxRk8dHISuU/MnzTe76ZbisPKZRa246xTG6l3U9ak8X433cvQtZMNxBZ/nxW5XxXE+91082nPADYe6ZjnCqCI5wni/W66nNCVj/I7Ea5NvTXzJI33u+mKwYfs4ALskSOR+3lFk8b73XSvgTUot6/vrULfO8WSxvvddJuJL5fp3+PfCeLD8s1/FIW+IfUcoL0/xSWN97vp/P3tI8Q34PtB0r0dxPvddGcofw50rESeX4JvK9Imjfe76bYRTmAcNaBftrOv+DBf0rDxpj9f/N/zLYyNYvqiSeP9HpZ/gvhx4BawS1zS+C1BugGMvx+Rz9b+vjPxLwbxfjddIuOpMvGL4O8X7JuqFU8aNt7078HX8ZTbzXf/weU5ksb73XTLoC+WctZzAfBT5LpE2qTxfjddIb4fSP/v8eY3Pizf/B84PmKjmAW5q1ckabzfTXeTeH8f3N8DH6VfSO6k8X433VuU+1nRf483v/Fh+eafyTzzGOE2yFVO6Ps/7rp0nHicdZ1nlFVF1oZJ3aQGmth0AC5wu283DQ1mMaASVMSAccQcBjDrmAOiGFAxIGMaxFHRMaCYAw4YUFRgzIOMoEgwgWIAxxHE9K313edhrV3ryp/Nft+36lY+VaeqTu/frdH//zuqNm+vq8jbHarztk8ubzt1zdv96vP2+ZrIi6t7syxvb27I2+vRL+ift21ykRdXd0ld3j7cJ28vbok+m7fjWkZeXN0awn/bvzBvePk0fsM/3zdvyyifcn5vYZ/Ii6trSfmtHZC327fI27p2eXtdbeTF1W2H3Zp0tCnP26Gk99Zs5MXVtcWOJv7rivP2BuyC2siLq9uqFfHBH0S9nI89ozby4upKKJfh/QvzhpdP4zf8Pp3y9hTay/Md8nZUu+jLq9+d+P9K/LcT75vUy59zkRdX91i/vM21ztsR+A9T7p+0jv6IRP8l8d9H/GOb5m1r7IImkRdXN5T071GUt/ejW9ssbx9sFn159cMIfyP98mXszZTP4k7Rl1f/Gvmag92QydvVtnt0fcoK87O7RV5cneEPbZO3Syivz0rydmpt5MXVDaGcd2H8+Bh+GXZFSeTF1WWI/zTqbSP9pRHp3lQVeXF1XUnHG8T/IvEO2jJvb+4YeXF1F9DOphPPV935GfC1+HPgd6Zfno5/TS7ypye6WuwY8jmd8ppGPWRqIi+urj/pvxX+ZdL/bc+8Pa08+vLqJxL/LManXowT75OuxcXRl1ffm/54gv0nk7cX8Xt71EVeXN1obCPKf5fmefs64+qIDpEXV/cu5TmR/OzbI2+vwn+yIvJXJboyxxfKYT/a0ZP4F7WNvrz6c/rG/JmvMUn+5MXVbaJ8jqYdz6a/jeidt+sqoy+vfrc/eD4ctEXejsxFXvyG5PnxM+3qePir8d/JRl9e/bPkYyPpsr87LjgeyIurG0n+HS9S/o/GE3WG35b07Ey7uIP2MrA28uLqxtKeepC+vZJx6aVs5MXVPUY835OOV4nvXtL7ZU3kxdVtJD+T6cctKd8b4S9uFX159YeQvz60kx35nam0y9rK6MurP5X8XUu8rSifsx2vayIvru5V+v/FjCvzM3l7kuMdv/sP0j+acPcR7/stoy+vvpXzA+qvN/74znlblIu8uLoc+W2H7cf4czn5/qgs8uKbdcQzn/p/mHJbSHo/rYq8uLr9SF8LyuE78Besr66RF1f3b9IzinI+gnHkJuYDWxDudNJZSz0NId7HyqMvr34l8TdmXDuwNG/vdhwpjby4uucIPwz+yi55+zfqYUF15MXV3Yq/mHKzf3SEf6E2+vLqVxPvWurveNpTJ/rV69nIi6s7DruM50F7dONoT+t6Rl9e/WXEP5l2exLjwe3YylzkxdW1oR9fR/xfk77p5O/AXOTF1f3AuP4J9bqa9vAV6du/X+TF1fWGP4v6/Bp/Rfu8bdwp+l8n+tWkZwbpPMl5Pr/Xv23kxdUdTPgLSgrzhpdP4zf8NuTnbp6TzjuWVUdeXN0O9LMljF8bGW/HU18/tYq8uLpqfj9LO11DunK98vbfjAtLCb+Y8MeRr+PbRl5c3aek/0P4Rc5jmed+nvDi6l7C3y+Tt5NI3wLGg83zmkzE1Q1i/OhSX5g3vHwav+GvZDzfmXROoN9c1SL68uq7UF/PUX830u4Ocx7XPvLi6sazTjuFdtuM8XMS+hdroi+vfijtdh3peZX+tjvj4B7F0ZdXvwP+XuTrRNrbBn7v0LrIi6u7nN+/lHX0HegvwR/fLvry6qf7nHP9Sn6fop6ur4u8uLpnKYdO2PmMW2Wk84D2kRdXdyHxf4V1PV6brMvlxdV9jB2aydt5lMc3jMt7ZyMvru43bBPaxQz610zq5aG2kRdX15nw1s9nlOsE7AGtIy+uzvr9jXJZzu/0Au/RO/Li6namHr7Bv5v8PUG6ajKRF1e3LX51pjBvePk0fsOfTLncT/qepH6fah55cXU/UD8+t96G9/m1qiTy4uoqiddyHMa40pF0dspFXlxdW/L1AvGspl8O5bn/QC7y4uomUo+uN9aTvhm873guWbeIqxuFP8X3e7Sro0jvxcWRF1d3D+X3EOtYny9DmTd92T368upvIn2vMX+4M5O3Na7fspGvSXR3YK8hf8/Dz2V8/SwXfXn1j8EPx65nvnwm6f6oZ+TF1fWmPK6GP4hyOgJ8dDb68uqdv7v+vIH6vR47uWXkxdV1J55jiOdF8jfW50l19OXVTyJ9zRgf6mnnt/F8ntAQeXF15a6LiHd/0tWbcbdRn8iLqxuK/z/iXUL5jFVXF3159ae4X0C7+iaTt8N9D5eLvLi63fF3pT1/Sn52wR/cKfK7JLpS4j+W59NoynsDz8cfayMvrm4710vMGxvwDyD+XdtFvyHRP0v5fM7v/OC6AXx+h8iLq1tG+j/EH8nvfIS/c//oy6u/gPrYiudDA/36Meq7f0XkxdVlKYcK6vEm0nk+tm/Ci6tzPbwN5fov8JNpH1t0j768+maun7HdmY92w/boFnlxdWXuRzG+vUl5vUe5Xl8WfXn1L1EeFb73YT44i3K9sl/kxdV9yPv/SvhuvLd/Dt3sZpEXVzeR+D8mHbfwvF+eydsde0deXN18yv866ndf6ulL9PtWR34zbn2ybq4lXVfRrs6jXH0vKi+ubiL2RNaNFxFvV9J3cGXkxdXNI/37ZwvzhpdP4zf8Mb7XyOTt97S7ki6RF1fnfuUs8rkcfjn5nF+e8DVRN4l29TP12MA4PZD6/qJl9OXVT6N+1hHPczzv3A/4Z8/Iz0l07h/M6lmYN7x8Gr/hj6RdnEd5VVHOe1ZHXlzdEZm83Zf83ONzw/EmG3lxdQsZX3cGzzBP6Eh59cB3f/ls9D1YX7u/LC+u7hbG3zuoP+cdJ/H7zk++In+HMy58D+77OnlxdauYh7QkHU/RXhZRz+uzkRdXtzPzUN/TOL/9EruyJPLi6nzvMwc7iHZ+Ab97c1305dWPykW+e9/IG15fXr3hXUc1gLu+ct0lPy/Rve0+CvnZQH88Db9lm8iflugWYr/IFuYNL5/Gb/jbyd/l9OvdaPcNVZEXV7eM9nRF98K84eXT+A2/iHrZiefyG6T3T3WRF1c3CFtO+9iH8jyZduVzT15c3Z3kfz32XcrrR+ZZcxsiL67uRPrbIH6nNe36d35nWk3kxdUtYnz/M/m7lvJ6gfJulI28uLpuvv+sKswbXj6N3/BLSc8j1Ms82vmH5ZEXV7eR8vne927EW8w4uUOvyIurc/5/tfOATN5uhV2Wiby4ukW+n6ednMn4Mpzfubck+vLqW/v+035Ge7yF8fPWdpEXV3ck8Yz0PSL5vIZ63TYbfXn1f+H3DyeeD+gfs2gnXXKRF1f3HPM7z81sg95zM56r+aJbxNXJp/PCG4jX+aO8uLqzyM+O1M9q0tWZfH3bPfLi6qY4//X5RzntwO+tqYq8uLrDyMe+tKcH6CeHU99XZqMvr76c8tid9K3jvcoEx6f6yIur20j7mt+iMG94+TR+wx9HOa7Engf/eXn05dWvIP/zmU8XozvK/Z2iyIurm0o8H9Av3mdecL/9rU/kxdX9i/nFOsbXEsbj1tjXaiIvrq4P9mra4XG877mMcXYD4+su1iv6l0nXRTWRF1d3L/O9auK/jXnbru73VEZeXN0Y50HE+xu45+Xc/07P0anbiB1LO6imvMcyL34mG/3NPPq2bSLf0Dfym8PXJ3zLGP498nUx64Ye1P+43pEXV9eS/un+9cJM3rqPvaFn5MXVuc+9P+PW2+Sv1HOYXaMvr74D5fqG6zba29mk69KEF1f3b/rXQNrfKsrnfuqlDensQbv+gXbt+bGpHSMvru5n5yPg4+lnc1j3lhRFXlzdFZTPjvB3sq7+iHX1lQkvrq4v9n7PcVAfo/FfyER+dKLzfNDR5M/+/RS6we2jL69+PPmfQD+9j3poQnv6vVX05dX7HqWU/nce+XmbfGaaRl5c3SLfu1Kvn9DvZ9KOvqyIvLi69YRfTfxbu8/FOLRXi8iLZ2nvTZgPVPJcWkq9dmac360m8uLqlmFPp31ewXj0OPVSVhd5cXWXY6fTPkbSXodiR5ZEfjOO/ZT6+6/vq2gXfUj3uf0iL65uH+Z3W/YszBtePo3f8K5LtyO9DbbTksg3JDrfn3ehfF9xX4l29m3LyIure5Tx7mvKdw/Kcy7xnp+LvLi6ecxPiknXQNrVFNpHaWXkxdUt8Lwj9ez5pfH0j9uy0ZdXPw78aeq3jvLuQPxXZqIvr34s+d+B9jAT/GP8gR2jL69+Num4kXys8r0f/vgukZ+d6H7E/3tFYd7w8mn8hv/J8ZXx6mr68bRs5MXVHU/5OZ+ak8nboynnYbnIi6tbQvt9lXLdhfc1x1HfjTpGXlzdeOK/nXineW7AdWZN9OXVf5GL/LYDIm94fXn1ht8RfAj9ahvnYTWRF1e3ifGxHfmqdHyhn73WIfLi6nbi9z3/6bmCHPOPk3tHXlzdCMKXVhXmDS+fxm/4Q0jXFPrrRNZLN1ZGXlyd+zD1jDPNfa9JOe1dHH159fPoP3+mXXagP9ZRP5PqIy+urgvl6jzpvz4n/2AeJa5uHf1jv66F+f2TeVoav+HP8RwP5fIyfJvqyIur+zWTtw+Qv2/o5x+jv6Y68uLqvsPmaE8rqc89Pd/ZMfry6v9D/R3HuLw9/mzS92j/yIur85z4d+gO5ndWMS78CX4A8xXP2d2Lv6ZJ9OXVz8f/lXguYtx6i3z0L468uDrPf77iuoh9iJ9J58gekRdXdyDxvkv+vV/kfSXvH8mn95w2eU6Ddr896d3O8/3VkRdXty22O/wpjJsnYU8ujby4uq7EfyDt7lzWv5cyLp3XOvLi6pbSvocQ/6OUa1viXVgbeXF1l5P+SSWFecPLp/Eb3nNe1fT/I7Ct6yIvri6HTc87t3P92yXy4uo8D31Er8K84eXT+A3/pOe6WY/28ZxCTeTF1c3FLmIf/Dr62RGUd88O0ZdXfxrxD/c8QbJOcf0hn65PLsGuY932Nul7C3xYUfTl1T9D/h9gnKpm/Nra9zQV0ZdXP8R5BPG0wh5KPqdkoy+v/ib4zeXrfi58326RF1dn/fzSvTBvePk0fsM/Qr5e4TkyD/tGVeTF1b1OPDvRnjzv8JDnRHKRF1f3GfUxznZLOY+kvQ+qj7y4ums9J0E8Y6iXU0j3yVWRF1f3u+sy6mcj/aSI+ceGXpEXV7eW33f/bUImb92Hc/8t3Z9TNzY5Hz0C/CDfo9VEXlzdwfj9fX9O+jLOU8oiL67O+3K78b44h24W48RNnaMvr35r3/O4T8fvjUbXqkvkxdW9QP6KwH9lnH3L+y+lkRdXN4D2t3eyj+r+6er20ZdX77q1Bf3iXNrZFuSvf+foy6vvRXmm+/+TeT57PmBycv5A/f74R2G3pF31I97FlZEXV9fFeUGyvz+IcnH/Xj/d31/tfQPiuZffO5b6uqQ28uLq/kI9fkV8g5m3PYv+n9nIi6vbnnX+mZ4T9Xya95GqIy+u7mnS8UxlYd7w8mn8hvfc4jie555r7NIx8uLqrqR8vF90Fu1yLPbsksiLq/N+0pPUS5Z6dj4+tXPkxdXtTf626lmYN7x8Gr/hd+I58Q/Pkbq/URV9efU9+0b+i6rIG74Vv78d7WAW48KT5dGXV38Z5X42+R/HeLeccGtzkRdXtx/t0/vjcxkH2lD+3v+WF1f3JPPMW6jnD93H8L1kNvry6p8mnmWuO/Bf5HmyY0nkxdU1p1w/aV+YN7x8Gr/hd8nkree0TmH82DUTfXn1a8if8+9HmUe57n2sVeTF1f3Relne8PJp/Ib/zvkS80bvkTXuEPn0fpn3zt5zPUS/ncl7XvuvvLi6kyhfzwV7f9D9lKY10ZdX/zX8TqRvW9Ln9yxmJLy4uo6+nyktzBtePo3f8I/Qvk7J5K3vGx7JRl5c3QTmCRe7D9w4b09wH71x5MXVtXX93rgwb3j5NH7D/+A5WsbjE3wf0DLy4uquJV0PsF4/Af8D1vWHNo3+CYn+HuJ1HuP8xX3+BzLR/6N5T0f3CxnfHvG9Ujb68urPoP12pV6fYR4xkd99vnfkxdX5PjkdP28jXsdHeXF1j9reKwrzhpdP4zf88d5fZz02i/XX9kWRF1f3lOcHKJ8V/N5yxqtMXeTF1b3J88D7uFnG53vx72sRfXn1//b8lOsp2tWRjA9HF0deXN2L1O9Z8K9gX6ecHN/OAH/QcxjU56/V0ZdX3x/+GvydaHcP4++a8A8nuoHY95J9+s99b98t8uLqHqKdvtG9MG94+TR+wz/r/RJ00xmHtqqLvLi6A3yfRj115vk3h3i3q428uDrPD31D+Y6i3XxAOfWpjry4uhuZp5TQf/yexN/hb6mPvLi6Wcl74aHURzv6zZAukRdXN5B4PuJ3Dqf9DfC9S3HkxdU57qTnAy72nl9yfkBcnfNX70/NYRz13lSHppEXV7eY8nTf1/OHnmf8uXvk03OQnk/0uwhT6Ffe/7qxIvLi6lz/XdulMG94+TR+w/+X8X8D+fsB/8KG6MurL3G/h3xdyO9chB3WJ/Li6i7AnuH5aJ4HQ7Df9Yy8uLqXyYf7756H2YT9KTlPsyk5N+O5mjra4b307+X0qxdroy+vflld5D8pjrzh9eXVG/4H8MNcpxDuwr7Rl1d/oesNz0NQHg8zD32d/Nl/JxPfJfTjCWWRF1f3APX9T88j8rt3ke41pZEXV+fzw+dJyhs+fS6pM/zejF+DvedCOVyW8OLqjnK+yTpuhvfUqP89M9GXV78b4WeCL6H/vEO5L+0ceXF1Zzr/8bsd9JdF1P/W9dGXV9+MeGd4/5X5oveu17SMvLg672U/TXy1jJ+38TtNW0deXN3N3othfbMNugMs307Rl1fv8+db8vkB5boE+1lV5MXVPU74TeTjA9p5b+plUJ/oy6t/i3gvJJ5JjP/3E87zI/ry6g/xPLv7N8S/0fvo7aMvr34Vz5dT+Z1viL8x+OVlkRdX97PPB/K3we9rYb8pi7z4hmTe8wT18fdkP/+2FtGXV+/+/l+Zh65mPL6J/DVlnn5Cv4irk7/C8wE8T/0uyLdNIi+ubiL18kyTwrzh5dP4DX8J6fua/jTJ+Wx15CclurvJ/0PEMz1vGi3FHtYo8uLqXqIeK73Xz3P/N9rVtFzkxdVNovw8V5jBet7Qc4arElzdV5TDL7SjSxhvd4DftjTy4urOJf8jSNcTjAvHUD5V/SIvru5JrN/hOdZ9DsqrWU3kxdV1pX1WtCjMG14+jd/wVbTL9PyK37VKz6+oX5rw21VF3vD68uoN/4bzb8ajfSnnpr0iL67uXeqviPF9R/g11NdP/SIvru5O743h3+U9RecJ2ciLq6ugf9xI/vZgvJuCP7x95Kckuh2pH8+l7EC78lzKiOTciri6u/n9LYj3VfqF5yTWlkdeXJ3fT53p+SnK6R3Gi8ubRl9e/f/4/Q7Ux/O8X5uNndM88uLq7qM+/D7ieu9XUC79El5c3XfYv9EuX4Iv5rn9Sk3kxdX5PN+afuD57x/Z955aGn159b87flCOmbxp9CD2mkaRF1f3C8+Rh2lPs2kXs7CTqiMvru457OeUz2vMa+djV1ZHXlzd676PpZzP43l5H+2kqCby4urOwXpPeynlk97nTu9xq9v8HYRsYT69553Gb/h033Uk4/5lmciLq3N/9hzGo9OZZzahvPyeq7y4utHYhfBzmafPoX18UR15cXWnU/8L3F9n3daKdv1Et8iLq/uM+H8hXW9TPwMor39VRl5c3beEv9tzTsxLHkJ3bI/Ii6t7Avwt6qmM8bqBdrF7r8iLq/P7A/XGz3vBs7GvN4u8uLo3k/flXrsb4z5oo8iLq2vv853+9T3PxebuV1dFXlzdVMrjIPwFrCu89/RBXeTF1S3EfkY6ruB3rqdf39A++vLqx/j8YBybR38eSjo3JLy4ujHEM5By+Q/941HS+XFd5MXVzYH3+xrzSeevnnvoGHlxdX6fowXx9MQe7ve2aqMvr/5d+BnU7z7Eu7fzpvaRF1fn97hua1WYN7x8Gr/hvQd+F/O5bujTe+Li6sYSz1rq5VL6dTaTtzMzkRdXN4P+63tL15m+z0zfb8qrv5PyH8U4dCvpnMjz7pS20ZdX/xn5f9P7rOTrf+SzqkPkxdX5PuZ0v0+DXUj+FmejL6/+18rI31MXecN7f/gKysP7w+n9YnF10zwvyrg7hHb8J8bF0l7Rl1e/pfd4wPemvxfR7+Z2iLy4ui0IP83xjPSsZxyY1yfy4upWeD+NeeC7vq8g3aUV0ZdX775LU9KxJ/PRc5hHnZWLvLi6P7O/Osf9DvebvMfVPfLi6u6gHj5k/FrP/uGJ2KmNIy+u7irS7/ePNmKPR7+2Q/Tl0+8neT/yVuJthr66deTF1c3DrqJ8bve7rX4HqDby4upu8DukpHMN5bMT844LOkRfXv1dnl+jPB+kPnZHP6xd5MXV/eL3W2ifX7uvgv6YXOTF1TVmvjOY+n2HccO/a3BT68iLq2tLe76c9t2c37vBcapn5MXVHed3hamXz7E/k65cm+jLqz/D+0fkr5j6aIFt3iXy4uru5PePdB3hvgV2ZfPoy6ufneir2kd+c3jKra/3thgP/1YffXn1D/RP+GzkDb85/mzUG36w8yP6zRXe3yuOvrz6dp5P4ncmJfc3vZ+Z3t9UV471fuZDyf3NgU0jL67O+50nkh6/L3Mg9en3Z+TF1S2hPJxfzKM9vYJ9oT7y4upexo7z/Tnvi88hXZNqIi+ubg/qf5336sG7eu+uZeTF1U0mvhXk71f641Tqa2rCi6u7Db8r/O2+V/V8Y+fIi6s7gfLZk3HjneT5+3abyIur8/n8HfP0vdBd6Xv1qujLq7/dc0e0yymMO6PIV6fqyIurm+t3fsjfa7TPy2iXM4oiL66unP64mPxc7/0f+veJbaIvr/4CntcfU7+PMG6/hK7TgMiLq3sG+2xJYd7w8mn8m8Prk89+3qfORl5c3dOsD/p73od8zSHe9xNeXN25lJ/j/mXMu3wu/NHzQt0Y9wmo3/+g34Jy3akm8uLqfqd89sV6DnXfTN56PlVeXF2Gedfj1O9kdMNoX0PbRl9efXt89zfd18zRThtXR15cXS/6sX/341PW522pp8G5yIurW4XtRzq8J3gY80q/Xywvru5IzyHBv0Y9beM8vlvkxdXNoH1tib+J+km/e6Uvr/5bv6/QiPiMh/JaWRV9efUvYdN9rw1Y97fkxdX9iL2AeNrTznxf+GWj6MurX+I9GvqX87/7/O5JdeTF1Tk/PMS/y0I5l1GvXcsiL67Ov/+Unnc4hnQtKYu+fHqe4mbGA89TfIHugF7Rl1c/0fxRL44rp1Hejj/68uqnEL4fvO9Vz6Z/HNUi8uLqphBPd3i/t/J3ymWvfpEXV7eB3z+S+ngQ3cH4B7eLvrx6zx/MYZ0xzX0J2ssxjaMvr34U6fc59NfkeZWpiLz4X5Pn2FlFhXnDy6fxG/5EyuEV8vOo95froi+v/gDK4XjmQX63L/2en768+oXE94bfNye9P2EbyiMvrm6A+2XE/zz6Buq3T13kxdXNwg5G9zrj8Z2M91NykRdX9xq2A+kYQfxn+N2C+siLq9uHej2C9PXxXJ/3+aqjL6++P+EfgU//zsZuXSMvrs6/v1FHvBcyLz+LdL/XJPLi6lp4nov4Puf51pt5Qq+SyIur+47wc+kPh8Ef7T3cksiLq7se3O+ijyF9fi/9iN6RF1f3q+eDuxXmDS+fxm/4cp6nd5GuG7CHtIu8uDrPU1RTPlszXnf3HmXCi6t7h/o8nf6xLeuLNczP7ukYeXF1H9F+fD55jmJc8nySF1c3pTzGX5HE6+/Ii6sbgP877++Gew/R8xrdoi+v/m+kbxHj2mj496if94uiL6/+cN9XUT//Y1xaTvpWtoy8uLoV/P5w6mMdujrKpb48+vLqlxPe803n+N4B/D/J+Shxdef4dxJ9v0n9Ps5z8sfi6Murn1od+Q3Fkf8x8Tck8Rne8zW2C9vLXQmftjPP4bxHvLvSvh8iXLeO0ZdXv8nzPJ7r97ym+3RdIi+e/r2gUvppuk/es1PkxdX5XduujC9l3r+G/0fjyIurm0n/Pq9xYd7w8mn8hj/T92qejyJdnvOSF1dX7d/H8Duqf/CdRHlxdZ3wV7r/Sr8cQb8+tSHy4uoGZ/J2d7+PQXyt/P5a78iLqxvFvMS/23c+8aV/vy/9u37qGuH/g/GpNXgVdnIm8uLqfqM89yZ9nzOu96V/ri6JvLi6OtL1Eu3S7zQ6L5jbNfry6heTvw7Uz870kxX8zrX1kRdXt5Ty29ipMG94+TR+ww+mHU5nfBlCP6ksjry4ut9ol/59nfe9X065Lq+IvLg6//7OUuZh9eRzCP3to9bRl1fv391y/2M390loF7/1iL68evdH0v0V9fJ+N53hbPN301c2iry4uvf4Ty3lfwu/M53nV2VR5MXVPU39vNysMG94+TR+w8+k/fu9yA/Jl9+NlBdXtwv7S0Xu79Dul1D+G0oiL67O74R29HwS677vsevaR15cnfer19GOHyY9R/md/YQXV9ec9w/eb6mkHZ7K/o73X/Tl1Zdi15O+ZcT/o/P4ssiLq7uVdrEn/eZUynsP15Ml0ZdX7/tq+eHNI294fXn1hvf7fUz7N3+/b3mjyIur8/t+7kvdQn58H+f+lby4ulnUy6E+32nnJfSLO9pEXlzd77Sf3f3eQSZvzwffPhN5cXUHUp57ZQrzhpdP4zf848S/gufms7SLTZnIi6v7E/GM9vt9lNe5nhuuiby4Op+PtqtnfL+B/u1c5MXVdXedij/K72cT7pCqyIurKwU/iXp8h3nUMfTz6dWRF1d3LH4rxvvG9K//0k6KKqIvr36B9znIV4/kveQrDZEXVzeI52wT+GHYqz3PVBN9efWtqc8JyXnkFpTLq7noy6v3fO108Lu9v+A+Drr/A7P8N4d4nHWdd5RW1fm2B4EBBmYog8MMwwzT3hlg6IkFUCzRAKIRY2+faEQj9ooSihQFGwYUGwgxFlBEBSwIMYgY0aAYkWLsGhHsii02/K31vdeVtZ69XuefZz33fe/97vLscs7Z58ybmbz///eX3ll7R6+s3dgDHH8+/FvoN/WIvrz6Od2z9pSeWdu/OGtP75e1uxdHXlzdl/VZu6wxa/9clLWn8nuf94i8uLrrsft1zNoDm2btyL5ZO6Q48uLqPtkla++kPs9iT+mWtYPbRV9e/XV1WduMdnmnOms38juPlEReXN3vqf9xu+bmTS+f5m/6M2nfOdSrL/3ywC6RF1f3O+p1Nu00s0/W3to2awfmR19e/a38/l6U55/Us1tp1nYvjby4umNJ/zn+2Z2z9rbarB3dOfLi6hpI/zb1G8vv3Nclaz+qj768+kXg68n/AGwv+vfb+siLq/uc/n+NuLyU/nmlImu3ohtOHLXvn7VH0K7D2kVfXv0T/P4JlHtFy6w9D/3cTOTF1T2OPZ3xM6pV1hYWZm2b7pEXV1eEP5pyvcTvHU1cjiH9N10irk5+cHnWvkq8FdF/hZ2jL6++Pf4dzBu70C77gzdtF3lxdcMasnbiL/Cmn/gL+Zv+D/CX0k5H4/83E/mjE11d16yt7ZqbN718mr/ptzrO8E+kvQ7eNfLi6noRF3+tytp76adn0f+zJvLi9ybj5ei+uXnTy6f5m34q9RrXOmtHEldbCyIvri5D++8kn07E9wTm8/3yIy+ubgbp36U9n2L+qumUtdfT/h+yzjRtkrXH0653N4m8uLp3qO/p5DuP33+d+vctjry4ui+Js6Pgrybu+zKPXFseeXF1Yyn/35nPHmSc3kYcz2kXfXn1RzVE/scOkTe9vrx60x9AvvWM91Lau03Ci6v7DfhN4Cvot32Yf/ZuFXlxdSNov2Xwx9Le15H/tI6RF1c3Cv9Z4qcLcfEg7b1XTeTF1T1E3C6mfcbRP8fRL0NLIi+u7g3nX9p1Bvm3wn+jZfTl1Z9p/BJXN6D/Lb9X2jHy4upOIr/7qd8TtOcF8B83Rl5c3UX4F7bMzZv+wgRXZ/pqyjWYdfMufm+visiLqzuaep3H+MzQ3rvRru0TXlxdA3afZB6bTNyOK4u+vPp3wV+gHdcyL5yCLaqPvLi6L7EfMK/MYH/xF/r1zq7Rl1c/m3q5v3yU+qT7x3R/qu4Q8nvFfT7z2fFZkze1KvLi6u6lPXuzD7qL/l5Du/y9Jvry6tcbt8wDHzHvv8u+vqRt5MXV7SC/AvibaaerGB+re0ZeXN2ZlH93+uc0dIup5w950ZdXfwL12tEma7cwzzSlvV5qE3159YPB96nK2jn0xyDa7aya6Murv5nyP0l93qN+W7FXFEdeXN1uxPNO4uMo4uMbxtcdmciLq3uXcjSlHIvojyNo91l10ZdXP4v8ryb/gcT1deS7rlvkxdUt4npgHP1Sh2471xnDO0deXN1Ftktpbt70WxNcnekXk/8c+vXf4K8VRV5c3dm0QyPrSTvi6WZsfafoy6t3PuxDuS5xv+Y6Uh/9SxJ9HfxDlO8++mcr5WvdIvLi6ibRPwdjO9LPR/I779VFX179V17XMw56oX8Z3fJM5MXV3cG4OKkya3tTr0tp15GV0ZdXfz/5HU77FLIfHcC6ubU48uLqNlC+I+APYr2YTlxuTHhxdf3xG/idoZTnNdr5wPzoy6vf7PU/7fs3ruvHgW/qFXlxdW2xY9pn7XnmYzy1j768+g+pX0/2ZYcxv/0na/J25EVeXF0h/XpLXm7e9LckuDrT/wf8Kta1WdjpJZEXV7eBOJzEfvpz2ut8x0VN9OXVD+wR+TU1kX8o8dck+Zl+P+LjJ9b7G+jnn3pH/n84ulZV1Ad+MnHRnHWzpj7y4uq60o/d+Z1D6d+P+Z23u0ZfXv1u5P8G+Z/JvPQ27Vqbiby4utHYzcYn+e7PvDC7NPLi6vqT/3XwwyjnSYyvE7EPVEdcnfzzxEct+5pnKGfnXSMvru4y5pUrKNdSdN9RnupM9OXVf12VtXX+PutyX+b5Z9pHXlzdj64fBbl508un+Zs+Q3nOoL8XsO79plvkxdWVMn9VwY9gXn6G/rm5PvLi6vZgPGyhPT9FVwr/Xpfoy6tfiv86/TnI61fi7c2GyIur+wF7Pe37JOvc7ZTzi+Loy6t/jv4dCN6JeGrLeO9QHnlxdYu9vqJ8h6FL1yl9efUP0i4HUI73aZft2IF9oi+v/tH+kV/bM/Km15dXb/pPqc9n6N+hXz8rS/w+UX8k+U2kHW5gfV2Nf2wm8qsT3e3E96tcR9bSL6/gNyuIvrx6rw+eY3zOZ3+7gLjJL4+8uLqhjI+D2Of96H1syj28KPry6m9gPRkFvpL57j7yL+wWeXF19+Ln0Q8TvY7ENm+IvLi667GNtEMr9hkncX11Yuvoy6v/IBP5bY2RN72+vHrTL3NfSn/l06/9CiIvrq4788tMqnkK6/oS+q3nrpEXV1fD+juIdh5L/T6n3Tq3iby4upX4dxDXo7h/mUf/XpKJvLi6AeRzOXEwu3nWjqe+NzWLvLi6h30uR7uud55nv7UmP/Li6n6k/T7hPsQj5D8L/7Qm0ZdXP5p2mWh5aM/Z1Hd1s+jLq19N+x1IfPrcxOcor1dGPn2+4nOXu2mfCfDbGC8tE15c3UTvk5Tl5k0vn+Zv+vWUz+eL7/F7f8xEX179U60if3C/yJteX1696XvCb2A9P5d2fqNX5MXVvUL+jeS7G/20hPicVhR5cXXF9P+F9NNkfm8z7bKpOvry6vfB/4j8LmU89GWfOqZD5MXVXcC8UobO65vLWLd/bh958XHJdVNr8tnMvNRAOxUURl5c3THk8xnj7DDy20p8f5offXn1W4j/Rdi+7gMp5yvdIy+uLoNfV5ybN31dgqsz/QB0zdmPt8Be0hB5cXX52CE8D9hG/gW0d+sO0ZdXfwT5Po3dzLgaTzv/KhN9efVn0v4/g/+R8pyBva888uLqTiH91+ie5Xf6ss/9pjz68uqXU47xxMdq4q2Q3/usMPLi6txXjWMc9GFffTH76saukRdXt5r0f2N+H12VtT2oX5/GyIurOwPr9ZPXSV4fbfiF66v0eqqRej3AuPZcwN1dIy+u7ifKtYN2XMa+Zi5xsrpT5MXV+TzhXuaH39Guh2DXFkVeXN1xpH+a+g1lXP4WOwR7nnHLfNucdD26RV5c3U3eL2P+Pdn5m3q/1DXy4uoe93k7/Pe031Dyn9sj8uLq7oQ/iPhpT71fY/1f3D3y4uqewP+GcvXlfmBvbJ8WkRdXV0t7zGC/cALtcRb9cWNh9OXVj8L+hf45jHhbwzg4sWvkxdVVUr/Z1K+M+W4v5rWV9ZEXV1fFejPe61LG/VDPMZVHXlzdPuT/Mu2xgHKegF+RifwJiW451zkH9cnNm14+zd/0ZVVZ24n26Iw/tTz68urH0B7bvC/GuOvN/uuC0siLq9uP/A6lfM1o1zz87ztEPi/R7eT6dgXxvYB5Zwn13KUy8uLqjqD8/6jJzZtePs3f9KMdP5RrLnE6rGXkxdVtIi52xa6iX57ALq2PvLi6PPYZl6DrxHzW13Mr7SIvrm4P8k3P3f2KecLzefLi6kw/jXEwB90Z1Ht62+jLq3+f9nPeXkd7O68/Xxl5cXVbST+JdaeW3xlKPetaRl5c3Xrmn/R8y3x8z6/MT3j1LxEHhzBO3vK+BPNOv/Loy6tfSPkXgn/I9Whbxq3Pb+XF1d2GnU/9uhLnoxgXn3ePvrz6D+H/zPp7F+vZMcTHkUWRF1d3p8+FfC5QlbWT2Q+dlYm8uLpjmIfvIv8FtMvd+Ed0i/zdie4J4uEen08yvhbgj2kZ+QWJ7kjy3+B4pjyXU87HqiIvru5L6tdAPj4/G8w89UN55MXV1RNPt1Tm5k0vn+Zv+j2JkzOyJm8y8+wjeZEXV+f9Dp8/jcE/kHa9KOHF1W2i/ud47sVzA+jKE19efWN95Cf1jnx5opdXb3rv/3/Neda1PLc6smnkxdUV0S/lzM892Nd8Bf5NQeTF1S2i/n9sl5s3vXyav+nvp36vUc7RlHNKx+jLq+9PPq+DL/I5I9eTL9ZGXlxdP9KP8XwT/VrhPqZz5MXVHe51MvPTTur3EfH2VdvIi6vLo/7bKMehzEt/9bxWy8iLq7uR9HsV5OZNL5/mb/rXWdf7Uc7XmBdfrIy+vPoJPr9gXuwJX4y/JT/68uof8Pw6/fFb1vWjWF+H9Yq8uLoDsUOYz/p7zod6vlgcfXn1FY2RL+wYedPry6s3/Upsa+LkR+rVvSH68urHJ/wfqiJven159aZvTn/Op13X01/nNEZeXN0h2ImFuXnTy6f5m/4m1veFrIfHEh99qiMvrm428fN4VW7e9PJp/qafSZzU0k/V2Jo2kRdX57kFzw32ZD/5FPV+q2XkxdUtY/x0phydWV+6ER8XVEReXF1/5/mK3Lzp5dP8Tb+G/v2YfpqCf1/HyE9JdNuIH5+/7e1+lPltR5/Ii6t7k/Z4judd48m/mHTPdom+vPqltF8FfCnXs52w3zaJvLi6SVxHXcO4LmS+vZz4nFIUeXF1beiXi2nP9qyrnTwnkfDi6kZUZe1Q4msdv7eI+JpSH3lxdffi+9xgHfWamTxfkBdXt5D819E+61jvTvNcRffIi6trgn8V+S+jXEuw/6qPvLi6Y7g+bUP7jvWcEr/r/ldeXN2evq8E7356JnH7r0z05dP9us9ZvM/h85iTekd+VnK/xOc0bzfJzZv+7QRXZ/pr6F/fw+lIfJ/aJfry6rdRv32T833XVmXtgF0jL67O83+268GUz/ZtXRB5cXX2z2/a5uZNL5/mb/qO1Occfqclfk3Ct0x0D3Nd5nPnP7IvKvbca9/Ii6vz+bX3x3Zjn3ka5XuuPvLi6r7HtmRcz2Ocv+z9+5Loy6sfSf2OJf9fuk+qL6/+Qp/v+R4V42kZ88KSNpEXV7fK89aUYyn1GUtcPNI78uLqRpH+FubxDcTpA+g/rYi8uLrHac/1XXLzpl9BfZexn3wc/6HKyD+e6C4jvweJ97WeE/K5fEPklya6QfRbk7rcvOnl0/xNfzHzTgX7gUuZ/y5rG3lxdSvJ733idyTXEx8QR9VdIy+urg/jpC/5/4d+X+c5gPrIi6t7Hv9c+v0J4uFfvldTF3159f/l952/m3pelPKtaoy8uLqjuU/wCf04jbhbg/7KdpEXV3ch7ZLfKjdvevk0f9MvYL/jOZMrGY+eP9GXV9+Z+eod8vE+xqXE/buZyIuru53+HAX/KevFDfTbrQ2RF1d3I3ajz1+Jl03YDvWRF1f3Ef1xLePqPc4bnE+5J3WMvLi6U+jfGcTXHuS7J3Z4XeTF1R1E+ZrQjr6fsYa4Wl4XfXn1vtfRnXY9hvHWm9/b1iry4uqe8P26trl508un+Zu+lPzbEF/30V4720ZeXF0X+ve/nnckriZS74UFkRdX9x75DmvMzZu+jeebPPfO+PuwU+TF1V3AOHmB9j+AfeFy4nFOTeTF1W303I/XvfRba+JuXXnkxdX9g/g4nnyH+d4W7fpiJvLi6pbTf6OI/9u5HpiH/aZH5MXVzcdeje5x7g95f3hl88iLq+tM+X7v+9HU6xPi4LO6yIurm0d8vIx/O3HTnt+ZkIm8uLo/0B7fke+h9G8F7V1SEXlxda+S/68o39VVWbscuyrhxdW9QX8ugt9MvIwgPgbUR15c3fv4NdRvOPWZxv5uevvIi6vzPQ3ftziI6/Jh2KGtIy+u7iXKV0F8HUf7/Jv2ubgh8uLqHqX+J5Xk5k0vn+Zvep9LdHA/y32tc1pEXlzdW4zLjdRvN/Zdx/F7laWRF1d3D+X7E3HyjveBiZfLK6Ivr/55/EuY76+jPXdQv5H9Ii+u7i34Z/vk5kcmfJq/6TfTPnm050LaeUhJ5MXVdaD9HvJ7Hay3r2LPbhJ5cXXNKM9tlO9R+qU389LKgsiLqysjfltQj2bMlwWeD62PvLi6hdRjEvUa77k36nVLXeTF1X3K+J7OPm1f3wPE31ISfXn1z/uehu8DExfpeev0nHT63mot+Z5IPYd7/rs68uLqMvz+wWW5edMfnODqTP8w+3XPXxYyv88sjr68+in4nahfA/U923Po9ZEXV1ePPZJyHcz4voZ0awsjL67uNuKnE+24FvwZ7GNtIy+ubizxcA3zw63ESQfKu3cm+vLqy+CriKf7sybvIuxTeZEXV7eZ+cm4XMK4bqCdllVHXlzdB+4/yH8g+o89d14deXF1P1OfMtp3BuvqKtaH/XtHXlzdddgO7KeOQfcW/XRo5+jLqy9pjPy+ZZE3vb68etMPox7zWFenUr+a2siLq3vD8zE+HyPee7K/ej3hxdVtxr7gfTH3CbTzA3WRF1fn+dpK2uVkxlUh9rqOkRdX9y3pL3H/4/1fbLe2kRdXdyPlmeB9ccp1AeOjoG3kxdWNoh/+y/j6jv5ZT73PrI68uDrfjxrHOPB+/qHUa0Jp9OXVP9s98uNLIz8h8ccn+Zm+kP5pw7p0h9fz9ZEXV/co48F12HX5aZ/Xd428uDrX9QmM66nu27n/srok8uLqHvE7KozvL7mO9zsSX+VHXlzdeN8PZx6/Omvy5jPuVuRFXlzdAMpxNu1zI+Mjve8pL66uF+WY5XNrxvPFtNf0TOTF1Z3K/u1i5qEV6Kd6jqJd9OXVbyYuF8KPpDzNKO+59ZEXV3cK9hXKtaUqa73/0aJz5MXVzSPf2ypz86aXT/M3/fX04zOcE1iL/94ukV+b6G5jP+b7d8Opn+/h3VQffXn1vr83iHLMYp9wF3G7a/PIi6uron630D6DWO+voV/f6hN5cXV7YfcuzM2bXj7N3/Q7aZer+R33ZeNqIi+ubgn1H1Gemze9fJq/6X1v5xXmlRW0zxeZyIur+z3z8Zfk14717j3S7egZeXF1BYzfr+GfZD17H93KlpEXV/eV322gfC2Y329hfp9WE3lxdceTX1efWxBnG/3uS7voy6t/lfbrwvy4yufQrJsP9468uLrriY9/wu/H9fUyxldBfuTF1Z3E/LYa/k3a9Xnvm9VEXlyd74c+QHzt9Dqecl+Rib68+vWePyKu9uR+7iDsgKLIi6vzfbt87z8RD1NZZw6oj7y4ulnEdfpezxbsBY2RF0/f//madXI2+g/Y79WVRF9e/UbPj3hfiPzG0u4tGiMvru5k39OmX171fDzjakR95MXVva71eoy43Av8ivrIi6urwy5nH3ECcXIj/TOiKPry6ptS/5PB/V7YfqwXBQkvrm4H5dq/Mjdv+v0TXJ3pR7t/5LrW7x4Nrom8uLpJvt/EeJicNXm/rsrahbWRF1fnd18ezsvNm14+zd/0X7JOljAvbWB93Kdp5MXVLbVc1p+4/KvPIysjL66uM+P4p1/gTf/TL+Rv+qvo328ZJzOJu36dIi+uLv3OZcqbXj7N3/T/YXzsyfw+ELu8V+TF1W2n/Q7x/UXi5XfYtxNeXF0Ln9N6vobxtZz16eJWkRdXt53229P3a5lvOjsOSyIvru4x2uFJ5pnrHZ/sl2tLIy+u7gjKX12amze9fJq/6b0/0od2nsF121mtIy+u7jTGX5sWuXnTy6f5m/5Iv2/A/HCb3yGri7y4ujLqcYXnvjy34XtpdZEXVzec+g/x/C92BOtUu7Loy6v3/R75GZWRN72+vHrTb6F8a9DdgO7jysiLq5tI+U/uk5s3vXyav+m9P30r/Xy67VEXfXn1oz2nib8e3QSf49RFX179PJ6T5sMP8btIjKuZLSMvrm5v/Bd87km7Hse+a0Fx5MXVrfO7IsTXCtbJ8czrO+oiL67uJKzfr/L5kO8L/CH5/pW4uj/Be57lLO8LwJ9ZEHlxdf0YP+l9jVLWxwnJfRFxdcu9j0Q56miXXaqytnVV5MXV/ez5AOq3iHH9NdcZdd0iL67uXuxO+uclyvUC8d60KvLi6o6iXE3LcvOml0/zN3078j+WffkGyvVRfuTF1e3L+PE7heOz5he/YyiubhV2LNexfm+zF+XsWh55cXVVxIPffyxqEuv1epPIi6uzPb5okps3vXyav+nvd/1gXe2JbdYl8uLqBlMP78PO8z0h9H7fVV8+ve/7Cf3yFu1RxLrzU/Poy6v/wfszjIttzGcr8Td1ib68+ivp108p3ybWuWexr3WMvrz6sobI39wv8qbXl1dv+gHOO+wrunluoSry4uqqGAfp+1eeO/L9KnlxdZ5beo52uIf89vd5cyb68up/6/1E1gHXh7n4tzaPvrz6EcTBdp938Ts/E+8flEVfXn2rnpHfVhb5DxJ/W5Kf6b9gnRgOPpRyPtwh8uLqJvr9qPzcvOnl0/xN7/MIn1PUei6gNvrpc443KX/6/GJL8nxCXlzdG34nijhowrz4J/SXtYq8uLoX6P+89rl508un+Zt+hM8RGa9/8/s6dZEXV+f3K7wv9IbPqfB7NkRfXv3b9I/nCO5hvJ7L+PS8gby4ugngj3m+l/3OXZ7X6RB5cXV7eD63Q27e9PJp/qZfwnVhX+r1JPc3VldFXlzdi7TPmurcvOnXJLg60/tc2efUJ7NvOKQi+ulzbp8/r6V9dvE+J7+zpj768uoP8vlncu78PMaH58vlxdWNwt7uOV6/R41fkom+vPp53n/kvkA7fqcO/+Vdoi+v/n7q8Tvm8y7wM2if33SJvrz6EcRfCf1wFPezj8YuahV5cXX+P4nz/J5Hco7Z883y6flmzz1/Cz/Zc4SUq2ND5MXVTcFOp1//Tn6rsD81RF5c3RPYLsyrU3zfyu8JVUdeXN1pyXcZX6Jd98be0S3y4uoGY/2uw03058vEWafkexDi6vw+6z7sD9PrxKZ10ZdX7/dlpno+2fmVfm/WPvLi6i7n939FPnfQ39Wsk51rIi+urob2WViWmzf9wgRXZ/onKd8s12P6a2om8uLqOlH+IZ6zIl4uoN06NkZePP1u0SfuS3z/nfuya9tGXjx9fup3myZ735h52u87yYury6P8W+F3sM/9AV1VfuTF1Z1HPYbQHiv8HhX44sLIi6vz+v8Y8tuXuPw17T6vVfTl1T/ePfKL+0Te9Pry6k2/HHw71+Pr2J98VBR5cXX9qY/vo9b4fMjzX5noy6v/mfZ/BH8u6/oc7NLiyIurm0H7HQA/2ut84rpNJvry6h/k98/1/CLX5bWeN0h4cXW7Yz2fcSFx5bmMA/tGXlyd5zlatc3Nm14+zd/06feBFxAnfv9XP/0+8LvsSzawDmV8/4O4uTITeXF1J+N/wP2UO8n/ar9LUxB9efWP0S+l1KMe3Tv0e6cWkRdXV01/TiNfv4fi91V+3Sr6//teiutdQ+RLiyJven159aY/yvMytMtO3pPaURx5cXXHUp5rC3LzppdP8zf9D/TvAb6Xje/5S/nxiW4O5foT+B7+/zLi4vyGyIurW5XcL52NPxC7uHfkxWcn92c3UJ9+7sfYbzcWR19e/UXET3p/ZBPXa+n9E3F1A5mXdvVcBvm/S/vcWB99efVf0r78zP/+74SffV2cF3159e1Zzxr9flIyTh2/8un4XuZ84XdgWJ/+iv13n8iLq5vP+vYIcXS+94+Is+JM9OXV/x5+Lvn7f3POgPf/58iLqzuf+fMM6rOE+xX7s7/a2Czy4uqKfZ+P9W2A5//wH2sdfXn1670vzn7sM+Lkfc/5F0ZfXr3PQ+ZQjuM9l8r+am519I9P9IcQv34/cwxx7fcz0+9r/g83/im/7819xHiZTP0mtY68uLpqz9/Rv76nXUN/fVEffXn1Q31/hHa5n/qt8L3vusiLq5tJ/Pgd1EuJ7xfJf3wm+vLq/U7qd/Dlfj+Vcv5YF3nx8mR8f0u+X5Hvj/SL3/eTF1fXn/TF8L5X4/8h8f0aeXF1F/ocOXmu6ftJd9dEXjx9/nkO/IXuf4g77+/Ii6sbxf3M/t7vZFxNZ9xNaB55cXXPUI4rWZ/ncV09iP79rkXkxdX1xL5Ku2wnPsc6zlpHXlxdOfV/v3Vu3vSuG0sZzzeic18uL67uQaz/l+5AJm7ve5/SK/Li6k7D/pnf6UL9D/d9nrrIi6sbSv9tYby/7Hkh3xfwew7onjKOWHDcd+vLq/+E323DdXIP6tPoezcVid8r6ttQnnLyPYD5/HifkzZEXlzd98yD46j3d8x3e/M7/dpEXlzdNdTD/381pSprT8+avKNKIi+u7s/4/YivQd5HYJwXNkRfXv2e9Lf/R+1pz/8zXuY2RF5c3X2U4xja5QrWlbPZ7x1RHHlxdXV+z8nz9OjOZ592eF305dXvQ3xcR/3u8XkP9ulmkRdXt4z6fON5Y/It9nqsJvLi6s6kPc+rzM2bXj7N3/Qtia9/MZ9c6fPPxsiLq8vDel1aW5W1/4/fa1IVeXF121034auxh2M7ZCJ/eKJ7wPvHlK89+XfD7uwWeXF1ZzO/bGH+WZt8b6iiMPLi6ra7f6M8u4MfzPi6qlvkxdUNYl4fRzvfjb0B/fxM9OXVL0/2l7XU69/wu9dHXlxdHbZlZW7e9PJp/qbfTLu8ib2JcVvQI/ry6g8nn26Mh2a092DG2fPNoi+v/kPG911Zk/c98Xw5vs+95S9PdKfir/oF3vSrElyd6dP3JMdgi0oiL56+b3kq7TDS82O0682dIi+ubq3/H8r78rTrtf4fr56RF1f3D+z5xPcmyns369P3DZEXV7cv46c3/eO5Et9X9v3k3gmenj+ZyHP9w9hvjMD2bxV9efWTaRefS9yOPp/rsvb5kRdXt5P6XUU77ev3csF3VEReXF1Hxvcz9O80fudUz1nVR15c3ddcj/Usy82bXj7N3/QPk387z9PTzle3jby4upPJ3/+/O43zFDfxe6trIi+ubqfv8xKHzXxfvSprf+wSeXF102m/M3yuSblmMU+e3iLy4uoeJL7+D6w5/9N4nH2dd3RXVdaGEyAQIAFCJ4GQQEhCIDQr2EfEOjoCKuBYEAV07CAWHJUmdgd1lCJSbICiKDjYxlFQERUUR4rlc3RQUBCxgqLot9b3ex7W2mfFL//std/3Peeesk+55977S+9uWf/317cqY6/qkrEzOmVs724RV3dZecbu1yNj13fP2FPQfd4p8uLqKknfqlfGvtEzY58uzNjdCS+ublNxxt5enbHTGmTsa1x3dEXkxdVNxz5I/g82z9h9ue7sZpEXV7euK/l1q5k3vXyav+mXtcrYL2mnL+D/VRp9efXfds7Yl+iPm9Hd3TJje7WLvLi6Q2nHyrKaedPLp/mb/lzqcQj1PZp2LmwUeXF131dm7MgmNfOml0/zN/0XxNOZXOcd+r1NeeTF1S2G/4R6TEc3rl7GPpAXeXF1/6VdWvaqOb18M+JvZtOMvQ97b9PIi6vbj/L2pd/7EEfX0e/vV0VeXN0B2Kspz72MvzvAx9aLvrz6sVw/i+ucQ/0GgY8pi768+mtp3yPJ/56OGTsRfGF15MXVdS+ifOT3SkHGziQuvm4aeXF1OZTrBPjS/Iyt0zhj29aNvLi6T8GnUa81dTJ2VcOMPSAn8uLqthBnS8mnA/30MXHbsVP05dV3gz+AclYRh73xpzSOvrz6KZRrLu1xIuUZQ1z3y4u+vPrnKMdWytU7N2OvYBzulxt5cXW7icfjGB/tiasCxnOdvOjLq/9zReT37R550+vLqzf9OuLrJebfvxBnh1VHXlxdO+z+1G8e/X0o42ROnciLqzuWfh1EOy6jv5Zjv6wfeXF1B9MfT2LPId6HUK7JeZEXVzeLfKdiyxmvHVlX2nSIvLi6hc6vtE8zxtfj5N+8UeTF1fWnPS6Cb8B6m4ut7hx5cXXvkt88+nU8+d5AurPqRl5c3Qf0/1LiYzD13Yxt1D7y4urGEQ/1iKdCyjmAfsttEnlxda2p/8D6NfOmH5jg6kxfJE55p7cmXeLLq2/VJfIzWkd+YKKXV2/6PswrOS0y9hnmpft6RF5c3Xzi8fvqmnnTy6f5m34Z/Ar2f69iXymMvLi6UeAnUL696NeHuc6m9pEXV1dJ/GymnDtZFxYSZ826RF5c3TbK/wPxOYR902DsoJaRF1d3JdcvpR4Hu0/lOleWR19efXf40ynfcMb3COy5pZEXV7eJfF8j358p50LnofLIi6v7hXF8GPmflzFZq5mv7s6KvLi6S8n/deqzE9uF+WpCefTl1b9LHBWT/6/M13WZn5+qE3lxdZ3Ipwf8ifhDiJvBHSMvrq6I8i2jXn1YV3tjz62MvLi6/bGTiM+3szN2IfbC7MiLqxtbm3yJ04lcZyj+v8uiL69+uO0P/hHzahXt2rxr5MXVbcfuoH0eJa560269yiIvri6X+BsLX83+Yjhxtk915MXVbWcerUU8LqWdTiNdw8roy6t/jDj4Dr8x+5NG2KsqIi+uLh/7F8r3Mv2xGPzKZpEXV3c+dkdJxj5Pv+TQPjtLoi+v/jTGRQ7jsyftsRjd8k6RF1d3G/23wPv3Nhm7P+kGt4m8uLo81pVLaNcB3E+eiD2jIvLi6vpjBzoOmZfvZ56e3j7y4uoqqX8DyncN+/MRzEvXNoy8uLpS2iOXeqzHPk1c5pZHX1798fADiY/LuJ+5HDu6KPLi6pzX5jCex1Oe3pRzaHb05dWfSD3G0753l2Tsm4zXO7pEXlzdFM4ZvkO3gP3WcPTvVUZeXN1C7E7i4mva+Uzyn0n6M0oiri7l0/RVrPPbae9B4BcQV0vaRV5c3WLat6nzInG0HX9RefTl1b9Cvc4i/4+xr9AO/6mIvrz6rcTpP5nnZzEOjyTd8wXRl1f/Ne1zFfPIZ/RDJ8bva82iL69+CHF7D+U7lvuJH6j3cXmRF1fXmPx2wQ/JmKxx2BeyIi+ubgHtv4JyPI6dzLpwZ6fIi6srpT3GYK9gHPyH8dSlIvLi6p7mPmsS/bGAfl1N/dZURl5c3Vv47+XVzJv+vQRXZ/p2xPFm4qsbcXtp6+jLq99I/f5r+yf7j4M6RD7dv7g/uYH6Pcq8079txl5YFHlxdT9y/Tdo17bkP47++aY88uLq3qY/u7FfHkA5r2Deqs6Pvrz6m7y/4hz4P/DLiJsLS6Ivr75F18iv6RB50+vLqzf9WOozhX4qYf4trIi8uLp96YeTaZ8erONPcJ1biiIvrm4l+T7KutcQ3XLuHxa2iL68+hbE5yryac/9ykzq93CzyIurO4Xx+x38J/TH0eCVnSIvrq418TEY/B7GaT94zxX15dW/S/xspF67aJevsa1KIi+u7mry+YX4vp716gLKfWyjyIurWwz+K/ZK7FuU+77yyIurm0N+r7OuDaSeF4K/1z3y4urGYvMZDyPwZ9JOjfOjPyLR5zEeP6Udv6KfFjMvep6sL6/efX8p+wTnmQ74Ja2iL69+mfNGxmQNp5yE/Z7zwKKEV/8zdpT7dcbHQuyWLpEXV3c25biDej3rfSjr5fLy6Murv5z+nEp/nsl4+ZL2mlsdeXF1X+Fvo11uZzzeRbobyyMvrm45+XagH/7kuSVxe2ajyIur29Yllm+b55LYn3NqLv+2pH4rsINZV2vRTrafvLi6IdgDiac1lOePzFfXlEZeXF0j8n3M817yd776MJm/5NWfyPg/g3K8Rz1/JO5PbRp9efUL8CcznmYQn9fjT8qPvrz6T+nHJwjwKRmTtRp7blbkxdV1ZR5/m/o9wniZj21VGXlxdWupR0Piax3z2kjqO61p5MXVvUe+W0sy9hh0G7mP/7Ik+vLqN9B+F9EvJ7Ov7US5djSPvLi6RYy//q6z5L8Df25h5HckumfxZxbWzJtePs1/T3qed+ygPY73PDg/+vLqT2VclnGfv4rxdkatjM2pG3lxdRPALyWf7ozLXqwTPRpHXlzdBeBzGtfMm14+zd/0Z9MuO4mXQ4i7LXmRF1c3CP9vnlsQD2vp94YFkRdX9xJ4g4KaedPLp/mbPhv8COp1OPG2omP05dWv7hL5VztGfkXiv5rkZ/ps4mI04/Ip/KqqyD+V6PoQV2OZB85jflnjOUzL6Murv7lr5He0jbzp9eXVm34++U6jXaup1xf1Iy+urj/1S/fH7bFXZ0deXJ375wbenzI/PIL9rSLy4uo6eJ9BPV7Ef831P+HF1a1nPjyH/i0jrlcS9/mVkRdX9zP9uALd4exTbqRdehdHXlzdCtbXHwtr5k0vn+Zv+kH0j+e9tzJeLu0ceXF1nhe7rp9NnGQTJ78VRV5c3THUawHlqmC9/oB2Oqkg8uLq1lGOASUZ24ZyDsTvXxJ9efUfke98bF/G01b6+aX8yIurM357EJ8LiLN64O+UR19e/Ub4hqwH7qcvZXwtahR9efX30X470H1DOVuR7/yG0ZdX/2K3yM9rGPn5iT8vyc/0/alXfeL6Nq7zVX7kxdV5ft+D9hmHfwXz5DDPf7pGXF3Kp+k/ppx9KH8/rv8M/tpG0ZdXfwn1u8Z9HeNoEONqWcvIi6t7g/KcQv07MV8Nw8+ujPywRNcR29r7Hvrd90JOyI28uLoV1Ocz7IGMx30o3yMVkRdX1xHr+3tzOde/iHH8fpfIi6ubjX2EdngF/mXsAS0jL67uCvJ/hnF3Ku1zNPHzdP3oy6s/l/mrinmkHuV8hHbyvTJ9efV9PXfAXsb9yBria3Rp5MXVNeP6Z7i+sG7NwA7Mjry4uuGMixPY513O/LfV5wVNI78HR7eT/WIF7fJbScYeSlxtLI68uLqllOsa+HnsR0exbj3cOfLi6i7F/xftOtnn3MT9EeWRF1d3CfG5nf5Y5XMk4vuLetGXVz+M/K4lvoaT703ej1ZEX16953yX0A6fse/eTv3WV0ReXN2n2IvIr2tJxq4kTnYXRV5c3VzadwXt04/x6XstcxJeXF1vzjfe9H0p9u++7+b7ffLpe3DdiK9RtOu9zP/baJdG3SIvrm6y6yTlux/93b4nVRZ5cXWzKV8+5RvKvuF++mlGZeTF1Z2FvYH8b2HfcCrl210ReXF1D2HH+/yPeWUtdl39yIurW0T5jqRcf6U9i/HXJnxxolvOOJ7RtGbe9PJp/qafTf98RnxuxH5aN/Li6rbTPgf4nJ16tqCfp1RGX159d/hnPCdifunNurBXm8iLq5tGPD5OeVZTzoc8x6kbfXn140jf2ufrGZM1ATugKPLi6oZifT49Cd3DjPf0+bW4uhtpF99PrKY/3iHOt+REXlzdHN9jdn1mnpsFf3LjyIuru4b6D3H+8vk115tRHn159R9Q/md9Pka/eK5Xq23kxdU5n7ftUDNvevk0f9PvpH0PY12dz7x2aKvIi6sbSfoDrS/t9BK2uiLy4uqyKYfPXx6mX1eiP7ki+vLqfyX9k5TvDer5hfupLpEXV3cw+6OptNOD8C/xXHCf0ujLq59EP15PO/gdxZOsD13APy2OuLqUT9P7/cWJ4Gfiv8g47tYt8uLqhmLbUe5DaIfnyH9cZeTF1b1KOz1fWDNv+ucTXJ3pl/E8rjblfRf/xXbRl1e/jfZ90PMd+muicdUl8uLqjqb/erWqmTe9fJq/6R/2+RX7oUnwOwsiL67uAPL/qV7NvOnl0/xNv9T3HojDV7GdCyMvrm4m6X0/4lba9UDiN6c48uLqBrNu7Mc85XseQ5wvO0ZeXF0213+5Tc286eXT/E1/NNbvCfx+wP2UvLi6Yuxo6teP/K+gvNdWRF9e/YDOkT+qR+RNry+v3vRXsV48BV+b87HzKiMvrm4053i1GtTMm75WgqszvedSzZn/t1DeFu0jL67Oc7ES8n2feLvKeaww8uLqFhA//fwOivY9knY5qjzy4uqm+T1Zh5p508un+Zv+MPB+7N++ob1P6Bx5cXWj2K9ez/zakPFxCPPEET0jL67uFe8Dyb8J7XSB5/Ll0ZdXP5ny/wO8lOsNpr987qIvr74n/LmUby/GQzn90gv/N/QDaMd1pNtWHXlxdbcxPzrvL+I6ridjy6Mvn64fnX2eTvvdwvy1qGvkxdX9RDv/l/p/R3macL/+Q2nkxdVVkH8h/Ww72S5986Ivr952XEq8PE+9XqZe3+dGX179BtJ/wTz4OeXMpXx7FUdfXv1w0v9CvtfgD6DdN3aJvLi6zuQ3gHbdwvu4g7B9cyIvrq4/+Ntcp67fR9HffcujL6/+YuLpF8oxh/GynfbK6xh5cXXHMU5ql9bMm14+zd/0E7mfHEh9e8JPqB99efWf0w65xNV62qMj50IbEl9e/WjfV2aevsZ5jfuOXQ2iL6/+G9rxCd+HRX8s7bUhP/Li6moz/33r/Zn3VeDHVEReXN0u5ifHxdP0t/PMnd0jL67O8bOVfvnJfOm3ES2iL69+LuP3Xer3Ju1cj3bNrx15cXUHsn94lH58B91m/G11oi+v/iDS+33aAPCV7GfWJd+viat7HX84/ALmlRP8Lrtx5MXVvUX7dqJcd3AetDfzTs/OkRdXNw07lbjMd99Fv45pEX159UOrIt+iR+RNry+v3vRngNenX69D/z/tIi+u7hnicxfrwUnE2f+wLhxeFH159W24/kjyb4C+NnZdm8iLq9vF+PN8fTj63uR/Y3XkxdV5Pj/F51YlGXsJ9e5VEnlxdZu4fgfq5b4hn3Hh+6Hy4un+4i3yv5r8c2mXTaWRF1dX5XcZ2JOop99LftIp8uLq3vecw/sP4noo89ZZ+ZEXV3eh3y2zTm/3PUnmmdb50ZdXP9v3BinH8cTTr1yvT4/oy6u/m3Y9pSRjt5Kfz2MnJ89n5dXPIr8qyjWB9f7P5D+pOPLi6j5kXXq0W8286eXT/E2/EL7Q+zl0fYojL65uDP05m/p97Hu5jLfc7MiLqzvD9qAdr2N+Go+d2Dny4urGYQewntUnzlb6Hl6D6Mur/9DnEJTjdK5zD3E1uiz68urnUb4zaY93aY8vifsvC6Mvr74D47efz9WJF99DPbko8nveTwV/hfpcR3n8Ptvz1vnl0d830fv9tvyYNpE3fQPaaR/K8SjjYVZl9OXVX0f7XQG/mvuGntjvqiIvru4k0k9mv3wsuhGku75p9OXVrwLf4L6a+aAB9uPmkRdXd6jfHVEfv8O8GntfRfTl1fv9ZhHtu41yvc05z6p6kRdX1xi8O/kez/OSfeCP6hx5cXUnYFtyvuX7SRuZ109tG3159YP9rpJ6ToCvx/yf0y7y4nt0tP+UjjXzppdP8zd9c9uB/roeuzAv8uLqjM/pjLMbiO9GxNf0NpEXV9eL8kxivjgIfwHtPLFB9A9K9E+T73fE5eXMnz19j7w48uLqltC/vl/fviRji7A3dom8uDrfzx/guRfr5hjs5Q0jL67O7z98P6w4eX/sX8WRF1c3C+v3m0uo50vsawdWRl5c3U34awtq5k0vn+Zv+g4+X6WcTxNX/SoiL66u2vcR3Z8RZ56X+X2PvLg63//aBF7CeOuMXdoh8uLqmtP+dxrf9Esz8m3ZI/Li6kbSLnUa1MybXj7N3/T+/sAp+C3hezSPvLi6rtTrKsbFm+zbL6Pek0ojL67uHvq3nHGwknnhNeyuwsiLqzucfO/yfJb79l2U896qyIure5P7/edpJ/eT7h9b5EdeXJ37Td/DPoL6lrGu3dY18uLqfK97mOsD+9g12LfqRl5c3W5/Xwe+W0nGTvS5eHXkxdUNoR3rsM+6l/68mfvGm5pEX179MMb/SNr3YnQHsB/bWhl5cXWHEF+jGA+D/f0F+unSttGXV1/L53O041fU8wH0X3eKvLi6u/x9sx4186aXT/M3/QTa5XTmo0WkG9898uLqhmI/oh3XE1+34+fkRv72RPd3/Lq5NfOmz/N8n3X/TPdNrSIvrq6vv8NA/23ynAH9/hWRF1c3gPoeTD6H0A7jiP/ZxZEXV1fgd5ClNfOm/ybB1Zn+/OQ+z/u+xhXRl1fv/eAG4q4J5zr+PtVhOZEXV+fvWf1GnL7B/u9N7H5dIy+u7hHGyU++H4YtQ+/7Qj8luLpyn0Pg30m+r1KvTj0jL65urL+3lzFZHzHufsQ/pUXkf0x0i/D/+ju86f+a4OpMP5B6zeRcbz/O+Y5oEnlxdVuxVxInxxKXO/F3YI9jH+196ATvO5tFX179BM/f4O9m/J2HXZX48uq30M53U66fae8fmRcmNYm8uLql7B9e93cM2Kf+Cb9Rs+jLq9+K9b5mLfUZ7TzVPfLi6rwv2sB4WUv5RrA/mF4QeXF15/v7CUn7HsP67P2/fnpOcD/z1bnuT2jP4dgR9SIvrm4+13+Mer5H/K33+Xl15MXVbcB2p34/oeuWPB+T75bohjPesqlXGXgZ17015aujbhX5H0y+t1Gvn9kf7KobeXF1f/C7S/Iby7pxLfbqvMiLq3vW3xGifZd7jkd5N1dEX159EfPTC/Lsq/5Ouf7ZJfLi6j5hfu1NfnWZ9+uz3vvds7z4Hh22M+Mk3Ue+nhN9efXuL7PA96Vcf6Xee+VHXlxdR/cHjMPFjPfxXO+L7OjLq1+C/yLnzA3I7xz22Y3Loi+vfl/a5wG/u+A6rh8zCiI/KtENIx430y/X0p6PMK9fVxp5cXUP+vyZeekFyrcb/8Cm0ZdXP4V8fV/sZs7NbqG+D1VFXnyPzvM46lXL54nY46oiL64uG7uE9riYfjmW9Whe4surX4x9m/a4yHM39l9rSqMvr74Afz/m03/4vAr/4oaR3z/RbaH9/d2zF+EPo7x3Nou8uLo7Sf8588sL9O9M7ivmdI28uLrnseeQ/+Tkue/17SMvrq6Q/I+Bn8v8NsH3u+tGXlzdTtLfX7dm3vTyaf6md584yt+bS97j0JdX7/OFi7FTGW//gL+nIPLi6lr6PhX5n0p/TXV9LIi8uLoGxEFL4rKd3z/h358dfXn1N3KO9hP9eKvvkbIutSmMvrz69Bx6TJKf6fXl1Zv+ePJdwHj8qCRjP2gfeXF1T7h++ZyLuJ7PPqeoceTF1bXn+hWU7+KMyfoM26lF5MXVrVfP/cI06nc2/ok50ZdX/7XntOx7+3POM5F97+xG0ZdXf0ny/LwJ7fIp9XyyXeTF1X1L/Pvc/EXiapO/L53w4uoupnzD/D09yuN4n9U+8uLqNlOv7rVr5k0vn+Zv+r3pX4ZXFuGVNTcr8uLqJhEHj/n+G+vt1OT3veXF1e1N+55OuYaxHpxPudbUjry4uiXs4571vpZ1wu9W/K5FXlzdaKznc+NYH8fwHD49vxNXdxf5f0P+v3efJS+u7gHWj+eIpwUZk/U2/F7tIy+u7jJsM99bYHzcQDlfbxt5cXVPUp4/UL/TmNcmYw/rFXlxdc/o0z9PUs7e9NM7tSMvru5v2P2ZH/x+4mDsRS0jL67uQWx6X3lQcv8pf1CiK2d/sI58itjX+9erdvTl1bN9z3qHfKso527wnrUjL66uDPwGn0vBQ2d9mBV5cXV/YfyNx7edDsGf1zH68uptv5WU4w725X/E/zI78n9MdL1YX2/x/oL8mGazsnMjL67uA+xDyf5/DfPmJdnRl1f/b9aHPv4eI3gfbK/6kRdXt+d3EdG5X13yO/cZ8xK9+9gL2Eevgf+FejXNib68+l/BC9AxPLLmMy4/yIm8uLq1WM8zhhCf5yTnH+ckvPpbHcf0D5fJKmK+2JwVeXF1e7N+OR+NZX6Zxb7F+UtfXv1N2O+xucxLf8CfWhp9efVrsN9Sjw3UbyT+6uzIj0x0Bawfn7t/opwVfmdTHHlxdWVMAJvZR/m7qf6u6nNlkRdX9yzr33LiaLXPjX1+AX6g+13Wm8fhb2gYfXn133WK/A+NI296fXn1pp9MuTZRH98byKmKvLi6y31P2N+joN5P0I9DSyIvrs7vC47y+0nirwXl9v+/6MurP6Z55M9OeNPrn53kb/rbmX9OYx92kr9bWRZ5cXUPw//b77SIO59XLMmLvLi61tTfuNuaxKPxKe/3f+ralUdfXr357PmesPj/T78lySdN7/eGW5L0+vJp+uN8fyaJf8eFvLi6kcRnmftZ2mtv+qNO3ejLq7+a9OXE/UPM8/bbvJ7Rl1c/PTfy9ru86fXTuDD9aeT7N9rnNr97LIi+vPpnE/2pTSJven159abf7T6T+P+e/trdLfry6n/FOm4Op50dP619Dt+wZt7xKt8i0bVOcMerfHrd35sPXLfGZMye9cz1rUNVxFO9vLi6V7netfTn7323JZ/+Hxn/P8xV5Pc55fZ9i00NI5+d6Hw/I/2/Qa+Rf/p/hcTT/0+U/i5yHutb+rvL4ur8/eT0d1Nu9H2S5HdZxNPfV0m/C/X/c6XfnYqn3496DuJ7fv3ZX3le0j/5Tjt9P1D+5+RcJn1fUF696dPnzkN+57n0kETn82vn/5Q3vXyav+n/FymJapE=DQAAAACAAABgOwAADRUAAP0UAAD9FAAAAhUAAMAUAAC3FAAAtxQAALoUAAC/FAAAtxQAALcUAAC6FAAAyAkAAA==eJw13S2DMlAUFtpRUVFRUdGLioo6KioqV1FRUQkEAoFAIBAIBAKBQCAQCIQJBAKBQCAQCAQCgUAgEAgEAoFAIBAIBAKBQDDMek9Zv+Hsj2cHvn5fkCGGGWGUMcb5zQSTTDHNDLPMMc8CiyyxzAqrrLHOBptssc0Ou+yxzx8OOOSIY0445YxzLrjkimtuuOWOex545IlnXnjljXc++OSLb3749Rd+CTDIEMOMMMoY4/xmgkmmmGaGWeaYZ4FFllhmhVXWWGeDTbbYZodd9tjnDwcccsQxJ5xyxjkXXHLFNTfccsc9DzzyxDMvvPLGOx988sU3P/z6i78EGGSIYUYYZYxxfjPBJFNMM8Msc8yzwCJLLLPCKmuss8EmW2yzwy577POHAw454pgTTjnjnAsuueKaG265454HHnnimRdeeeOdDz754psffv2lXwIMMsQwI4wyxji/mWCSKaaZYZY55llgkSWWWWGVNdbZYJMtttlhlz32+cMBhxxxzAmnnHHOBZdccc0Nt9xxzwOPPPHMC6+88c4Hn3zxzQ+/AmCQIYYZYZQxxvnNBJNMMc0Ms8wxzwKLLLHMCqussc4Gm2yxzQ677LHPHw445IhjTjjljHMuuOSKa2645Y57HnjkiWdeeOWNdz745Itvfvj1l38JMMgQw4wwyhjj/GaCSaaYZoZZ5phngUWWWGaFVdZYZ4NNtthmh1322OcPBxxyxDEnnHLGORdccsU1N9xyxz0PPPLEMy+88sY7H3zyxTc//PorvwQYZIhhRhhljHF+M8EkU0wzwyxzzLPAIksss8Iqa6yzwSZbbLPDLnvs84cDDjnimBNOOeOcCy654pobbrnjngceeeKZF155450PPvnimx9+/dVfAgwyxDAjjDLGOL+ZYJIppplhljnmWWCRJZZZYZU11tlgky222WGXPfb5wwGHHHHMCaeccc4Fl1xxzQ233HHPA4888cwLr7zxzgeffPHND/98+AMMMsQwI4wyxji/mWCSKaaZYZY55llgkSWWWWGVNdbZYJMtttlhlz32+cMBhxxxzAmnnHHOBZdccc0Nt9xxzwOPPPHMC6+88c4Hn3zxzc+fQs9f+yXAIEMMM8IoY4zzmwkmmWKaGWaZY54FFllimRVWWWOdDTbZYpsddtljnz8ccMgRx5xwyhnnXHDJFdfccMsd9zzwyBPPvPDKG+988MkX3/zw66//EmCQIYYZYZQxxvnNBJNMMc0Ms8wxzwKLLLHMCqussc4Gm2yxzQ677LHPHw445IhjTjjljHMuuOSKa2645Y57HnjkiWdeeOWNdz745Itvfvj1N34JMMgQw4wwyhjj/GaCSaaYZoZZ5phngUWWWGaFVdZYZ4NNtthmh1322OcPBxxyxDEnnHLGORdccsU1N9xyxz0PPPLEMy+88sY7H3zyxTc//FPoDzDIEMOMMMoY4/xmgkmmmGaGWeaYZ4FFllhmhVXWWGeDTbbYZodd9tjnDwcccsQxJ5xyxjkXXHLFNTfccsc9DzzyxDMvvPLGOx988sU3P38aPH/zlwCDDDHMCKOMMc5vJphkimlmmGWOeRZYZIllVlhljXU22GSLbXbYZY99/nDAIUccc8IpZ5xzwSVXXHPDLXfc88AjTzzzwitvvPPBJ19888Ovv/VLgEGGGGaEUcYY5zcTTDLFNDPMMsc8CyyyxDIrrLLGOhtsssU2O+yyxz5/OOCQI4454ZQzzrngkiuuueGWO+554JEnnnnhlTfe+eCTL7754dff/iXAIEMMM8IoY4zzmwkmmWKaGWaZY54FFllimRVWWWOdDTbZYpsddtljnz8ccMgRx5xwyhnnXHDJFdfccMsd9zzwyBPPvPDKG+988MkX3/zwT4M/wCBDDDPCKGOM85sJJplimhlmmWOeBRZZYpkVVlljnQ022WKbHXbZY58/HHDIEceccMoZ51xwyRXX3HDLHfc88MgTz7zwyhvvfPDJF9/8/Bns+Du/BBhkiGFGGGWMcX4zwSRTTDPDLHPMs8AiSyyzwiprrLPBJltss8Mue+zzhwMOOeKYE04545wLLrnimhtuueOeBx554pkXXnnjnQ8++eKbH3793V8CDDLEMCOMMsY4v5lgkimmmWGWOeZZYJEllllhlTXW2WCTLbbZYZc99vnDAYccccwJp5xxzgWXXHHNDbfccc8DjzzxzAuvvPHOB5988c0Pv/7eLwEGGWKYEUYZY5zfTDDJFNPMMMsc8yywyBLLrLDKGutssMkW2+ywyx77/OGAQ4445oRTzjjngkuuuOaGW+6454FHnnjmhVfeeOeDT7745od/BvsCDDLEMCOMMsY4v5lgkimmmWGWOeZZYJEllllhlTXW2WCTLbbZYZc99vnDAYccccwJp5xxzgWXXHHNDbfccc8DjzzxzAuvvPHOB5988c3Pn4HOv/9LgEGGGGaEUcYY5zcTTDLFNDPMMsc8CyyyxDIrrLLGOhtsssU2O+yyxz5/OOCQI4454ZQzzrngkiuuueGWO+554JEnnnnhlTfe+eCTL7754dc/+CXAIEMMM8IoY4zzmwkmmWKaGWaZY54FFllimRVWWWOdDTbZYpsddtljnz8ccMgRx5xwyhnnXHDJFdfccMsd9zzwyBPPvPDKG+988MkX3/zw6//7JcAgQwwzwihjjPObCSaZYpoZZpljngUWWWKZFVZZY50NNtlimx122WOfPxxwyBHHnHDKGedccMkV19xwyx33PPDIE8+88Mob73zwyRff/PDPQH+AQYYYZoRRxhjnNxNMMsU0M8wyxzwLLLLEMiusssY6G2yyxTY77LLHPn844JAjjjnhlDPOueCSK6654ZY77nngkSeeeeGVN9754JMvvvn5s8jxD38JMMgQw4wwyhjj/GaCSaaYZoZZ5phngUWWWGaFVdZYZ4NNtthmh1322OcPBxxyxDEnnHLGORdccsU1N9xyxz0PPPLEMy+88sY7H3zyxTc//PpHvwQYZIhhRhhljHF+M8EkU0wzwyxzzLPAIksss8Iqa6yzwSZbbLPDLnvs84cDDjnimBNOOeOcCy654pobbrnjngceeeKZF155450PPvnimx9+/eNfAgwyxDAjjDLGOL+ZYJIppplhljnmWWCRJZZZYZU11tlgky222WGXPfb5wwGHHHHMCaeccc4Fl1xxzQ233HHPA4888cwLr7zxzgeffPHND/8s8gUYZIhhRhhljHF+M8EkU0wzwyxzzLPAIksss8Iqa6yzwSZbbLPDLnvs84cDDjnimBNOOeOcCy654pobbrnjngceeeKZF155450PPvnim58/C5z/5JcAgwwxzAijjDHObyaYZIppZphljnkWWGSJZVZYZY11Nthki2122GWPff5wwCFHHHPCKWecc8ElV1xzwy133PPAI08888Irb7zzwSdffPPDr3/6S4BBhhhmhFHGGOc3E0wyxTQzzDLHPAssssQyK6yyxjobbLLFNjvsssc+fzjgkCOOOeGUM8654JIrrrnhljvueeCRJ5554ZU33vngky+++eHXP/slwCBDDDPCKGOM85sJJplimhlmmWOeBRZZYpkVVlljnQ022WKbHXbZY58/HHDIEceccMoZ51xwyRXX3HDLHfc88MgTz7zwyhvvfPDJF9/88M8Cf4BBhhhmhFHGGOc3E0wyxTQzzDLHPAssssQyK6yyxjobbLLFNjvsssc+fzjgkCOOOeGUM8654JIrrrnhljvueeCRJ5554ZU33vngky+++eHXP/8lwCBDDDPCKGOM85sJJplimhlmmWOeBRZZYpkVVlljnQ022WKbHXbZY58/HHDIEceccMoZ51xwyRXX3HDLHfc88MgTz7zwyhvvfPDJF9/88Otf/BJgkCGGGWGUMcb5zQSTTDHNDLPMMc8CiyyxzAqrrLHOBptssc0Ou+yxzx8OOOSIY0445YxzLrjkimtuuOWOex545IlnXnjljXc++OSLb3749S9/CTDIEMOMMMoY4/xmgkmmmGaGWeaYZ4FFllhmhVXWWGeDTbbYZodd9tjnDwcccsQxJ5xyxjkXXHLFNTfccsc9DzzyxDMvvPLGOx988sU3P/wT3BNgkCGGGWGUMcb5zQSTTDHNDLPMMc8CiyyxzAqrrLHOBptssc0Ou+yxzx8OOOSIY0445YxzLrjkimtuuOWOex545IlnXnjljXc++OSLb3749a9+CTDIEMOMMMoY4/xmgkmmmGaGWeaYZ4FFllhmhVXWWGeDTbbYZodd9tjnDwcccsQxJ5xyxjkXXHLFNTfccsc9DzzyxDMvvPLGOx988sU3P/z6178EGGSIYUYYZYxxfjPBJFNMM8Msc8yzwCJLLLPCKmuss8EmW2yzwy577POHAw454pgTTjnjnAsuueKaG265454HHnnimRdeeeOdDz754psffv2bXwIMMsQwI4wyxji/mWCSKaaZYZY55llgkSWWWWGVNdbZYJMtttlhlz32+cMBhxxxzAmnnHHOBZdccc0Nt9xxzwOPPPHMC6+88c4Hn3zxzQ//BPYFGGSIYUYYZYxxfjPBJFNMM8Msc8yzwCJLLLPCKmuss8EmW2yzwy577POHAw454pgTTjnjnAsuueKaG265454HHnnimRdeeeOdDz754psffv3bXwIMMsQwI4wyxji/mWCSKaaZYZY55llgkSWWWWGVNdbZYJMtttlhlz32+cMBhxxxzAmnnHHOBZdccc0Nt9xxzwOPPPHMC6+88c4Hn3zxzQ+//t0vAQYZYpgRRhljnN9MMMkU08wwyxzzLLDIEsussMoa62ywyRbb7LDLHvv84YBDjjjmhFPOOOeCS6645oZb7rjngUeeeOaFV95454NPvvjmh1///pcAgwwxzAijjDHObyaYZIppZphljnkWWGSJZVZYZY11Nthki2122GWPff5wwCFHHHPCKWecc8ElV1xzwy133PPAI08888Irb7zzwSdffPPDP0G9AQYZYpgRRhljnN9MMMkU08wwyxzzLLDIEsussMoa62ywyRbb7LDLHvv84YBDjjjmhFPOOOeCS6645oZb7rjngUeeeOaFV95454NPvvjmh1//4ZcAgwwxzAijjDHObyaYZIppZphljnkWWGSJZVZYZY11Nthki2122GWPff5wwCFHHHPCKWecc8ElV1xzwy133PPAI08888Irb7zzwSdffPPDr//4S4BBhhhmhFHGGOc3E0wyxTQzzDLHPAssssQyK6yyxjobbLLFNjvsssc+fzjgkCOOOeGUM8654JIrrrnhljvueeCRJ5554ZU33vngky+++eHXf/olwCBDDDPCKGOM85sJJplimhlmmWOeBRZZYpkVVlljnQ022WKbHXbZY58/HHDIEceccMoZ51xwyRXX3HDLHfc88MgTz7zwyhvvfPDJF9/88E9Af4BBhhhmhFHGGOc3E0wyxTQzzDLHPAssssQyK6yyxjobbLLFNjvsssc+fzjgkCOOOeGUM8654JIrrrnhljvueeCRJ5554ZU33vngky+++eHX//9LgEGGGGaEUcYY5zcTTDLFNDPMMsc8CyyyxDIrrLLGOhtsssU2O+yyxz5/OOCQI4454ZQzzrngkiuuueGWO+554JEnnnnhlTfe+eCTL7754dd//iXAIEMMM8IoY4zzmwkmmWKaGWaZY54FFllimRVWWWOdDTbZYpsddtljnz8ccMgRx5xwyhnnXHDJFdfccMsd9zzwyBPPvPDKG+988MkX3/zw67/8EmCQIYYZYZQxxvnNBJNMMc0Ms8wxzwKLLLHMCqussc4Gm2yxzQ677LHPHw445IhjTjjljHMuuOSKa2645Y57HnjkiWdeeOWNdz745ItvfvjnME+AQYYYZoRRxhjnNxNMMsU0M8wyxzwLLLLEMiusssY6G2yyxTY77LLHPn844JAjjjnhlDPOueCSK6654ZY77nngkSeeeeGVN9754JMvvvnh13/9JcAgQwwzwihjjPObCSaZYpoZZpljngUWWWKZFVZZY50NNtlimx122WOfPxxwyBHHnHDKGedccMkV19xwyx33PPDIE8+88Mob73zwyRff/PDrv/0SYJAhhhlhlDHG+c0Ek0wxzQyzzDHPAossscwKq6yxzgabbLHNDrvssc8fDjjkiGNOOOWMcy645IprbrjljnseeOSJZ1545Y13Pvjki29++PXffwkwyBDDjDDKGOP8ZoJJpphmhlnmmGeBRZZYZoVV1lhng0222GaHXfbY5w8HHHLEMSeccsY5F1xyxTU33HLHPQ888sQzL7zyxjsffPLFNz/8c5AvwCBDDDPCKGOM85sJJplimhlmmWOeBRZZYpkVVlljnQ022WKbHXbZY58/HHDIEceccMoZ51xwyRXX3HDLHfc88MgTz7zwyhvvfPDJF9/88Ot//BJgkCGGGWGUMcb5zQSTTDHNDLPMMc8CiyyxzAqrrLHOBptssc0Ou+yxzx8OOOSIY0445YxzLrjkimtuuOWOex545IlnXnjljXc++OSLb3749T9/CTDIEMOMMMoY4/xmgkmmmGaGWeaYZ4FFllhmhVXWWGeDTbbYZodd9tjnDwcccsQxJ5xyxjkXXHLFNTfccsc9DzzyxDMvvPLGOx988sU3P/z6X78EGGSIYUYYZYxxfjPBJFNMM8Msc8yzwCJLLLPCKmuss8EmW2yzwy577POHAw454pgTTjnjnAsuueKaG265454HHnnimRdeeeOdDz754psf/jnEG2CQIYYZYZQxxvnNBJNMMc0Ms8wxzwKLLLHMCqussc4Gm2yxzQ677LHPHw445IhjTjjljHMuuOSKa2645Y57HnjkiWdeeOWNdz745Itvfvj1v38JMMgQw4wwyhjj/GaCSaaYZoZZ5phngUWWWGaFVdZYZ4NNtthmh1322OcPBxxyxDEnnHLGORdccsU1N9xyxz0PPPLEMy+88sY7H3zyxTc//Po/vwQYZIhhRhhljHF+M8EkU0wzwyxzzLPAIksss8Iqa6yzwSZbbLPDLnvs84cDDjnimBNOOeOcCy654pobbrnjngceeeKZF155450PPvnimx9+/d9fAgwyxDAjjDLGOL+ZYJIppplhljnmWWCRJZZZYZU11tlgky222WGXPfb5wwGHHHHMCaeccc4Fl1xxzQ233HHPA4888cwLr7zxzgeffPHND79yv/w/dLzYyHicLcUhuAEAACBmQRAEQRAEQRAEQRAEd7OdbbbZZnd2ZzvbbLPNNtvczW7uThCEFwRBEARBEARBEARBEF4QBEEQBEEQhBf2ffP/5Q8WAv+/kMOOOOqY40446ZTTzjjrnPMuuOiSy6646prrbrjpltvuuOue+x546JF/PPbEU88898JLr7z2xlvvvPfBR5/867Mvvvrmux9++uW3P/5z4B98CzrksCOOOua4E0465bQzzjrnvAsuuuSyK6665robbrrltjvuuue+Bx565B+PPfHUM8+98NIrr73x1jvvffDRJ//67Iuvvvnuh59++e2P/xz4h9+CDjnsiKOOOe6Ek0457YyzzjnvgosuueyKq6657oabbrntjrvuue+Bhx75x2NPPPXMcy+89Mprb7z1znsffPTJvz774qtvvvvhp19+++M/B/6db0GHHHbEUcccd8JJp5x2xlnnnHfBRZdcdsVV11x3w0233HbHXffc98BDj/zjsSeeeua5F1565bU33nrnvQ8++uRfn33x1Tff/fDTL7/98Z8DxW9Bhxx2xFHHHHfCSaecdsZZ55x3wUWXXHbFVddcd8NNt9x2x1333PfAQ4/847EnnnrmuRdeeuW1N956570PPvrkX5998dU33/3w0y+//fGfA//ut6BDDjviqGOOO+GkU04746xzzrvgoksuu+Kqa6674aZbbrvjrnvue+ChR/7x2BNPPfPcCy+98tobb73z3gcfffKvz7746pvvfvjpl9/++M+Bf+9b0CGHHXHUMcedcNIpp51x1jnnXXDRJZddcdU1191w0y233XHXPfc98NAj/3jsiaeeee6Fl1557Y233nnvg48++ddnX3z1zXc//PTLb3/858A/+hZ0yGFHHHXMcSecdMppZ5x1znkXXHTJZVdcdc11N9x0y2133HXPfQ889Mg/HnviqWeee+GlV15746133vvgo0/+9dkXX33z3Q8//fLbH/85UPoWdMhhRxx1zHEnnHTKaWecdc55F1x0yWVXXHXNdTfcdMttd9x1z30PPPTIPx574qlnnnvhpVdee+Otd9774KNP/vXZF199890PP/3y2x//OfDvfws65LAjjjrmuBNOOuW0M84657wLLrrksiuuuua6G2665bY77rrnvgceeuQfjz3x1DPPvfDSK6+98dY7733w0Sf/+uyLr7757oeffvntj/8c+A++BR1y2BFHHXPcCSedctoZZ51z3gUXXXLZFVddc90NN91y2x133XPfAw898o/HnnjqmedeeOmV19546533Pvjok3999sVX33z3w0+//PbHfw78h9+CDjnsiKOOOe6Ek0457YyzzjnvgosuueyKq6657oabbrntjrvuue+Bhx75x2NPPPXMcy+89Mprb7z1znsffPTJvz774qtvvvvhp19+++M/B8rfgg457IijjjnuhJNOOe2Ms84574KLLrnsiquuue6Gm2657Y677rnvgYce+cdjTzz1zHMvvPTKa2+89c57H3z0yb8+++Krb7774adffvvjPwf+o29Bhxx2xFHHHHfCSaecdsZZ55x3wUWXXHbFVddcd8NNt9x2x1333PfAQ4/847EnnnrmuRdeeuW1N956570PPvrkX5998dU33/3w0y+//fGfA//xt6BDDjviqGOOO+GkU04746xzzrvgoksuu+Kqa6674aZbbrvjrnvue+ChR/7x2BNPPfPcCy+98tobb73z3gcfffKvz7746pvvfvjpl9/++M+B/+Rb0CGHHXHUMcedcNIpp51x1jnnXXDRJZddcdU1191w0y233XHXPfc98NAj/3jsiaeeee6Fl1557Y233nnvg48++ddnX3z1zXc//PTLb3/850DlW9Ahhx1x1DHHnXDSKaedcdY5511w0SWXXXHVNdfdcNMtt91x1z33PfDQI/947ImnnnnuhZdeee2Nt95574OPPvnXZ1989c13P/z0y29//OfAf/ot6JDDjjjqmONOOOmU084465zzLrjoksuuuOqa62646Zbb7rjrnvseeOiRfzz2xFPPPPfCS6+89sZb77z3wUef/OuzL7765rsffvrltz/+c+A/+xZ0yGFHHHXMcSecdMppZ5x1znkXXHTJZVdcdc11N9x0y2133HXPfQ889Mg/HnviqWeee+GlV15746133vvgo0/+9dkXX33z3Q8//fLbH/858J9/CzrksCOOOua4E0465bQzzjrnvAsuuuSyK6665robbrrltjvuuue+Bx565B+PPfHUM8+98NIrr73x1jvvffDRJ//67Iuvvvnuh59++e2P/xyofgs65LAjjjrmuBNOOuW0M84657wLLrrksiuuuua6G2665bY77rrnvgceeuQfjz3x1DPPvfDSK6+98dY7733w0Sf/+uyLr7757oeffvntj/8c+C++BR1y2BFHHXPcCSedctoZZ51z3gUXXXLZFVddc90NN91y2x133XPfAw898o/HnnjqmedeeOmV19546533Pvjok3999sVX33z3w0+//PbHfw78429Bhxx2xFHHHHfCSaecdsZZ55x3wUWXXHbFVddcd8NNt9x2x1333PfAQ4/847EnnnrmuRdeeuW1N956570PPvrkX5998dU33/3w0y+//fGfA//kW9Ahhx1x1DHHnXDSKaedcdY5511w0SWXXXHVNdfdcNMtt91x1z33PfDQI/947ImnnnnuhZdeee2Nt95574OPPvnXZ1989c13P/z0y29//OdA7VvQIYcdcdQxx51w0imnnXHWOeddcNEll11x1TXX3XDTLbfdcdc99z3w0CP/eOyJp5557oWXXnntjbfeee+Djz7512dffPXNdz/89Mtvf/znwH/5LeiQw4446pjjTjjplNPOOOuc8y646JLLrrjqmutuuOmW2+646577HnjokX889sRTzzz3wkuvvPbGW++898FHn/zrsy+++ua7H3765bc//nPgn34LOuSwI4465rgTTjrltDPOOue8Cy665LIrrrrmuhtuuuW2O+66574HHnrkH4898dQzz73w0iuvvfHWO+998NEn//rsi6+++e6Hn3757Y//HPhn34IOOeyIo4457oSTTjntjLPOOe+Ciy657Iqrrrnuhptuue2Ou+6574GHHvnHY0889cxzL7z0ymtvvPXOex989Mm/Pvviq2++++GnX3774z8H6t+CDjnsiKOOOe6Ek0457YyzzjnvgosuueyKq6657oabbrntjrvuue+Bhx75x2NPPPXMcy+89Mprb7z1znsffPTJvz774qtvvvvhp19+++M/B/6rb0GHHHbEUcccd8JJp5x2xlnnnHfBRZdcdsVV11x3w0233HbHXffc98BDj/zjsSeeeua5F1565bU33nrnvQ8++uRfn33x1Tff/fDTL7/98Z8D//W3oEMOO+KoY4474aRTTjvjrHPOu+CiSy674qprrrvhpltuu+Oue+574KFH/vHYE08989wLL73y2htvvfPeBx998q/Pvvjqm+9++OmX3/74z4F//i3okMOOOOqY40446ZTTzjjrnPMuuOiSy6646prrbrjpltvuuOue+x546JF/PPbEU88898JLr7z2xlvvvPfBR5/867Mvvvrmux9++uW3P/5zoPEt6JDDjjjqmONOOOmU084465zzLrjoksuuuOqa62646Zbb7rjrnvseeOiRfzz2xFPPPPfCS6+89sZb77z3wUef/OuzL7765rsffvrltz/+c+C/+RZ0yGFHHHXMcSecdMppZ5x1znkXXHTJZVdcdc11N9x0y2133HXPfQ889Mg/HnviqWeee+GlV15746133vvgo0/+9dkXX33z3Q8//fLbH/858N9+CzrksCOOOua4E0465bQzzjrnvAsuuuSyK6665robbrrltjvuuue+Bx565B+PPfHUM8+98NIrr73x1jvvffDRJ//67Iuvvvnuh59++e2P/xz4774FHXLYEUcdc9wJJ51y2hlnnXPeBRddctkVV11z3Q033XLbHXfdc98DDz3yj8eeeOqZ51546ZXX3njrnfc++OiTf332xVfffPfDT7/89sd/DjS/BR1y2BFHHXPcCSedctoZZ51z3gUXXXLZFVddc90NN91y2x133XPfAw898o/HnnjqmedeeOmV19546533Pvjok3999sVX33z3w0+//PbHfw7899+CDjnsiKOOOe6Ek0457YyzzjnvgosuueyKq6657oabbrntjrvuue+Bhx75x2NPPPXMcy+89Mprb7z1znsffPTJvz774qtvvvvhp19+++M/B/6Hb0GHHHbEUcccd8JJp5x2xlnnnHfBRZdcdsVV11x3w0233HbHXffc98BDj/zjsSeeeua5F1565bU33nrnvQ8++uRfn33x1Tff/fDTL7/98Z8D/+O3oEMOO+KoY4474aRTTjvjrHPOu+CiSy674qprrrvhpltuu+Oue+574KFH/vHYE08989wLL73y2htvvfPeBx998q/Pvvjqm+9++OmX3/74z4HWt6BDDjviqGOOO+GkU04746xzzrvgoksuu+Kqa6674aZbbrvjrnvue+ChR/7x2BNPPfPcCy+98tobb73z3gcfffKvz7746pvvfvjpl9/++M+B/+lb0CGHHXHUMcedcNIpp51x1jnnXXDRJZddcdU1191w0y233XHXPfc98NAj/3jsiaeeee6Fl1557Y233nnvg48++ddnX3z1zXc//PTLb3/858D//C3okMOOOOqY40446ZTTzjjrnPMuuOiSy6646prrbrjpltvuuOue+x546JF/PPbEU88898JLr7z2xlvvvPfBR5/867Mvvvrmux9++uW3P/5z4H/5FnTIYUccdcxxJ5x0ymlnnHXOeRdcdMllV1x1zXU33HTLbXfcdc99Dzz0yD8ee+KpZ5574aVXXnvjrXfe++CjT/712RdfffPdDz/98tsf/znQ/hZ0yGFHHHXMcSecdMppZ5x1znkXXHTJZVdcdc11N9x0y2133HXPfQ889Mg/HnviqWeee+GlV15746133vvgo0/+9dkXX33z3Q8//fLbH/858L9+CzrksCOOOua4E0465bQzzjrnvAsuuuSyK6665robbrrltjvuuue+Bx565B+PPfHUM8+98NIrr73x1jvvffDRJ//67Iuvvvnuh59++e2P/xz4374FHXLYEUcdc9wJJ51y2hlnnXPeBRddctkVV11z3Q033XLbHXfdc98DDz3yj8eeeOqZ51546ZXX3njrnfc++OiTf332xVfffPfDT7/89sd/Dvzv34IOOeyIo4457oSTTjntjLPOOe+Ciy657Iqrrrnuhptuue2Ou+6574GHHvnHY0889cxzL7z0ymtvvPXOex989Mm/Pvviq2++++GnX3774z8HOt+CDjnsiKOOOe6Ek0457YyzzjnvgosuueyKq6657oabbrntjrvuue+Bhx75x2NPPPXMcy+89Mprb7z1znsffPTJvz774qtvvvvhp19+++M/B/6Pb0GHHHbEUcccd8JJp5x2xlnnnHfBRZdcdsVV11x3w0233HbHXffc98BDj/zjsSeeeua5F1565bU33nrnvQ8++uRfn33x1Tff/fDTL7/98Z8D/+e3oEMOO+KoY4474aRTTjvjrHPOu+CiSy674qprrrvhpltuu+Oue+574KFH/vHYE08989wLL73y2htvvfPeBx998q/Pvvjqm+9++OmX3/74z4H/61vQIYcdcdQxx51w0imnnXHWOeddcNEll11x1TXX3XDTLbfdcdc99z3w0CP/eOyJp5557oWXXnntjbfeee+Djz7512dffPXNdz/89Mtvf/znQPdb0CGHHXHUMcedcNIpp51x1jnnXXDRJZddcdU1191w0y233XHXPfc98NAj/3jsiaeeee6Fl1557Y233nnvg48++ddnX3z1zXc//PTLb3/858C/+BZ0yGFHHHXMcSecdMppZ5x1znkXXHTJZVdcdc11N9x0y2133HXPfQ889Mg/HnviqWeee+GlV15746133vvgo0/+9dkXX33z3Q8//fLbH/858C+/BR1y2BFHHXPcCSedctoZZ51z3gUXXXLZFVddc90NN91y2x133XPfAw898o/HnnjqmedeeOmV19546533Pvjok3999sVX33z3w0+//PbHfw7839+CDjnsiKOOOe6Ek0457YyzzjnvgosuueyKq6657oabbrntjrvuue+Bhx75x2NPPPXMcy+89Mprb7z1znsffPTJvz774qtvvvvhp19+++M/B3rfgg457IijjjnuhJNOOe2Ms84574KLLrnsiquuue6Gm2657Y677rnvgYce+cdjTzz1zHMvvPTKa2+89c57H3z0yb8+++Krb7774adffvvjPwf+n29Bhxx2xFHHHHfCSaecdsZZ55x3wUWXXHbFVddcd8NNt9x2x1333PfAQ4/847EnnnrmuRdeeuW1N956570PPvrkX5998dU33/3w0y+//fGfA//qW9Ahhx1x1DHHnXDSKaedcdY5511w0SWXXXHVNdfdcNMtt91x1z33PfDQI/947ImnnnnuhZdeee2Nt95574OPPvnXZ1989c13P/z0y29//OfA//st6JDDjjjqmONOOOmU084465zzLrjoksuuuOqa62646Zbb7rjrnvseeOiRfzz2xFPPPPfCS6+89sZb77z3wUef/OuzL7765rsffvrltz/+c6D/LeiQw4446pjjTjjplNPOOOuc8y646JLLrrjqmutuuOmW2+646577HnjokX889sRTzzz3wkuvvPbGW++898FHn/zrsy+++ua7H3765bc//nPgX38LOuSwI4465rgTTjrltDPOOue8Cy665LIrrrrmuhtuuuW2O+66574HHnrkH4898dQzz73w0iuvvfHWO+998NEn//rsi6+++e6Hn3757Y//HPg334IOOeyIo4457oSTTjntjLPOOe+Ciy657Iqrrrnuhptuue2Ou+6574GHHvnHY0889cxzL7z0ymtvvPXOex989Mm/Pvviq2++++GnX3774z8H/u23oEMOO+KoY4474aRTTjvjrHPOu+CiSy674qprrrvhpltuu+Oue+574KFH/vHYE08989wLL73y2htvvfPeBx998q/Pvvjqm+9++OmX3/74z4HBt/8PdlHZBHicLcUhuAEAACBmQRAEQXhBEARBEARBEARBEARBEARBEARBsJu7s80222yzzTa7s5vtbOfubLPN3QRBEF4QBEEQhBcEQRD2ffP/5Q/2A/+/kMOOOOofxxx3wkmnnHbGWeecd8FFl1x2xVXXXHfDTbfcdsdd99z3wEOPPPbEU88898JLr7z2xlvvvPfBR5/867Mvvvrmux/+89Mvv/1x4N/5FnTIYUcc9Y9jjjvhpFNOO+Osc8674KJLLrviqmuuu+GmW26746577nvgoUcee+KpZ5574aVXXnvjrXfe++CjT/712RdfffPdD//56Zff/jjwD74FHXLYEUf945jjTjjplNPOOOuc8y646JLLrrjqmutuuOmW2+646577HnjokceeeOqZ51546ZXX3njrnfc++OiTf332xVfffPfDf3765bc/Dvy734IOOeyIo/5xzHEnnHTKaWecdc55F1x0yWVXXHXNdTfcdMttd9x1z30PPPTIY0889cxzL7z0ymtvvPXOex989Mm/Pvviq2++++E/P/3y2x8HBt+CDjnsiKP+ccxxJ5x0ymlnnHXOeRdcdMllV1x1zXU33HTLbXfcdc99Dzz0yGNPPPXMcy+89Mprb7z1znsffPTJvz774qtvvvvhPz/98tsfB/7ht6BDDjviqH8cc9wJJ51y2hlnnXPeBRddctkVV11z3Q033XLbHXfdc98DDz3y2BNPPfPcCy+98tobb73z3gcfffKvz7746pvvfvjPT7/89seBf/Qt6JDDjjjqH8ccd8JJp5x2xlnnnHfBRZdcdsVV11x3w0233HbHXffc98BDjzz2xFPPPPfCS6+89sZb77z3wUef/OuzL7765rsf/vPTL7/9ceAffws65LAjjvrHMcedcNIpp51x1jnnXXDRJZddcdU1191w0y233XHXPfc98NAjjz3x1DPPvfDSK6+98dY7733w0Sf/+uyLr7757of//PTLb38cGH4LOuSwI476xzHHnXDSKaedcdY5511w0SWXXXHVNdfdcNMtt91x1z33PfDQI4898dQzz73w0iuvvfHWO+998NEn//rsi6+++e6H//z0y29/HPj3vgUdctgRR/3jmONOOOmU084465zzLrjoksuuuOqa62646Zbb7rjrnvseeOiRx5546pnnXnjpldfeeOud9z746JN/ffbFV99898N/fvrltz8O/Pvfgg457Iij/nHMcSecdMppZ5x1znkXXHTJZVdcdc11N9x0y2133HXPfQ889MhjTzz1zHMvvPTKa2+89c57H3z0yb8+++Krb7774T8//fLbHwf+g29Bhxx2xFH/OOa4E0465bQzzjrnvAsuuuSyK6665robbrrltjvuuue+Bx565LEnnnrmuRdeeuW1N956570PPvrkX5998dU33/3wn59++e2PA6NvQYccdsRR/zjmuBNOOuW0M84657wLLrrksiuuuua6G2665bY77rrnvgceeuSxJ5565rkXXnrltTfeeue9Dz765F+fffHVN9/98J+ffvntjwP/4begQw474qh/HHPcCSedctoZZ51z3gUXXXLZFVddc90NN91y2x133XPfAw898tgTTz3z3AsvvfLaG2+9894HH33yr8+++Oqb7374z0+//PbHgf/oW9Ahhx1x1D+OOe6Ek0457YyzzjnvgosuueyKq6657oabbrntjrvuue+Bhx557ImnnnnuhZdeee2Nt95574OPPvnXZ1989c13P/znp19+++PAf/wt6JDDjjjqH8ccd8JJp5x2xlnnnHfBRZdcdsVV11x3w0233HbHXffc98BDjzz2xFPPPPfCS6+89sZb77z3wUef/OuzL7765rsf/vPTL7/9cWD8LeiQw4446h/HHHfCSaecdsZZ55x3wUWXXHbFVddcd8NNt9x2x1333PfAQ4889sRTzzz3wkuvvPbGW++898FHn/zrsy+++ua7H/7z0y+//XHgP/kWdMhhRxz1j2OOO+GkU04746xzzrvgoksuu+Kqa6674aZbbrvjrnvue+ChRx574qlnnnvhpVdee+Otd9774KNP/vXZF199890P//npl9/+OPCffgs65LAjjvrHMcedcNIpp51x1jnnXXDRJZddcdU1191w0y233XHXPfc98NAjjz3x1DPPvfDSK6+98dY7733w0Sf/+uyLr7757of//PTLb38c+M++BR1y2BFH/eOY40446ZTTzjjrnPMuuOiSy6646prrbrjpltvuuOue+x546JHHnnjqmedeeOmV19546533Pvjok3999sVX33z3w39++uW3Pw5MvgUdctgRR/3jmONOOOmU084465zzLrjoksuuuOqa62646Zbb7rjrnvseeOiRx5546pnnXnjpldfeeOud9z746JN/ffbFV99898N/fvrltz8O/Offgg457Iij/nHMcSecdMppZ5x1znkXXHTJZVdcdc11N9x0y2133HXPfQ889MhjTzz1zHMvvPTKa2+89c57H3z0yb8+++Krb7774T8//fLbHwf+i29Bhxx2xFH/OOa4E0465bQzzjrnvAsuuuSyK6665robbrrltjvuuue+Bx565LEnnnrmuRdeeuW1N956570PPvrkX5998dU33/3wn59++e2PA//lt6BDDjviqH8cc9wJJ51y2hlnnXPeBRddctkVV11z3Q033XLbHXfdc98DDz3y2BNPPfPcCy+98tobb73z3gcfffKvz7746pvvfvjPT7/89seB6begQw474qh/HHPcCSedctoZZ51z3gUXXXLZFVddc90NN91y2x133XPfAw898tgTTz3z3AsvvfLaG2+9894HH33yr8+++Oqb7374z0+//PbHgf/qW9Ahhx1x1D+OOe6Ek0457YyzzjnvgosuueyKq6657oabbrntjrvuue+Bhx557ImnnnnuhZdeee2Nt95574OPPvnXZ1989c13P/znp19+++PAf/0t6JDDjjjqH8ccd8JJp5x2xlnnnHfBRZdcdsVV11x3w0233HbHXffc98BDjzz2xFPPPPfCS6+89sZb77z3wUef/OuzL7765rsf/vPTL7/9ceC/+RZ0yGFHHPWPY4474aRTTjvjrHPOu+CiSy674qprrrvhpltuu+Oue+574KFHHnviqWeee+GlV15746133vvgo0/+9dkXX33z3Q//+emX3/44MPsWdMhhRxz1j2OOO+GkU04746xzzrvgoksuu+Kqa6674aZbbrvjrnvue+ChRx574qlnnnvhpVdee+Otd9774KNP/vXZF199890P//npl9/+OPDffgs65LAjjvrHMcedcNIpp51x1jnnXXDRJZddcdU1191w0y233XHXPfc98NAjjz3x1DPPvfDSK6+98dY7733w0Sf/+uyLr7757of//PTLb38c+O++BR1y2BFH/eOY40446ZTTzjjrnPMuuOiSy6646prrbrjpltvuuOue+x546JHHnnjqmedeeOmV19546533Pvjok3999sVX33z3w39++uW3Pw7899+CDjnsiKP+ccxxJ5x0ymlnnHXOeRdcdMllV1x1zXU33HTLbXfcdc99Dzz0yGNPPPXMcy+89Mprb7z1znsffPTJvz774qtvvvvhPz/98tsfB+bfgg457Iij/nHMcSecdMppZ5x1znkXXHTJZVdcdc11N9x0y2133HXPfQ889MhjTzz1zHMvvPTKa2+89c57H3z0yb8+++Krb7774T8//fLbHwf+h29Bhxx2xFH/OOa4E0465bQzzjrnvAsuuuSyK6665robbrrltjvuuue+Bx565LEnnnrmuRdeeuW1N956570PPvrkX5998dU33/3wn59++e2PA//kW9Ahhx1x1D+OOe6Ek0457YyzzjnvgosuueyKq6657oabbrntjrvuue+Bhx557ImnnnnuhZdeee2Nt95574OPPvnXZ1989c13P/znp19+++PAP/0WdMhhRxz1j2OOO+GkU04746xzzrvgoksuu+Kqa6674aZbbrvjrnvue+ChRx574qlnnnvhpVdee+Otd9774KNP/vXZF199890P//npl9/+OLD4FnTIYUcc9Y9jjjvhpFNOO+Osc8674KJLLrviqmuuu+GmW26746577nvgoUcee+KpZ5574aVXXnvjrXfe++CjT/712RdfffPdD//56Zff/jjwP34LOuSwI476xzHHnXDSKaedcdY5511w0SWXXXHVNdfdcNMtt91x1z33PfDQI4898dQzz73w0iuvvfHWO+998NEn//rsi6+++e6H//z0y29/HPhn34IOOeyIo/5xzHEnnHTKaWecdc55F1x0yWVXXHXNdTfcdMttd9x1z30PPPTIY0889cxzL7z0ymtvvPXOex989Mm/Pvviq2++++E/P/3y2x8H/qdvQYccdsRR/zjmuBNOOuW0M84657wLLrrksiuuuua6G2665bY77rrnvgceeuSxJ5565rkXXnrltTfeeue9Dz765F+fffHVN9/98J+ffvntjwPLb0GHHHbEUf845rgTTjrltDPOOue8Cy665LIrrrrmuhtuuuW2O+66574HHnrksSeeeua5F1565bU33nrnvQ8++uRfn33x1Tff/fCfn3757Y8D//O3oEMOO+Kofxxz3AknnXLaGWedc94FF11y2RVXXXPdDTfdctsdd91z3wMPPfLYE08989wLL73y2htvvfPeBx998q/Pvvjqm+9++M9Pv/z2x4H/5VvQIYcdcdQ/jjnuhJNOOe2Ms84574KLLrnsiquuue6Gm2657Y677rnvgYceeeyJp5557oWXXnntjbfeee+Djz7512dffPXNdz/856dffvvjwD//FnTIYUcc9Y9jjjvhpFNOO+Osc8674KJLLrviqmuuu+GmW26746577nvgoUcee+KpZ5574aVXXnvjrXfe++CjT/712RdfffPdD//56Zff/jiw+hZ0yGFHHPWPY4474aRTTjvjrHPOu+CiSy674qprrrvhpltuu+Oue+574KFHHnviqWeee+GlV15746133vvgo0/+9dkXX33z3Q//+emX3/448L9+CzrksCOO+scxx51w0imnnXHWOeddcNEll11x1TXX3XDTLbfdcdc99z3w0COPPfHUM8+98NIrr73x1jvvffDRJ//67Iuvvvnuh//89Mtvfxz4374FHXLYEUf945jjTjjplNPOOOuc8y646JLLrrjqmutuuOmW2+646577HnjokceeeOqZ51546ZXX3njrnfc++OiTf332xVfffPfDf3765bc/DvyLb0GHHHbEUf845rgTTjrltDPOOue8Cy665LIrrrrmuhtuuuW2O+66574HHnrksSeeeua5F1565bU33nrnvQ8++uRfn33x1Tff/fCfn3757Y8D629Bhxx2xFH/OOa4E0465bQzzjrnvAsuuuSyK6665robbrrltjvuuue+Bx565LEnnnrmuRdeeuW1N956570PPvrkX5998dU33/3wn59++e2PA//yW9Ahhx1x1D+OOe6Ek0457YyzzjnvgosuueyKq6657oabbrntjrvuue+Bhx557ImnnnnuhZdeee2Nt95574OPPvnXZ1989c13P/znp19+++PAv/oWdMhhRxz1j2OOO+GkU04746xzzrvgoksuu+Kqa6674aZbbrvjrnvue+ChRx574qlnnnvhpVdee+Otd9774KNP/vXZF199890P//npl9/+OPCvvwUdctgRR/3jmONOOOmU084465zzLrjoksuuuOqa62646Zbb7rjrnvseeOiRx5546pnnXnjpldfeeOud9z746JN/ffbFV99898N/fvrltz8ObL4FHXLYEUf945jjTjjplNPOOOuc8y646JLLrrjqmutuuOmW2+646577HnjokceeeOqZ51546ZXX3njrnfc++OiTf332xVfffPfDf3765bc/Dvzv34IOOeyIo/5xzHEnnHTKaWecdc55F1x0yWVXXHXNdTfcdMttd9x1z30PPPTIY0889cxzL7z0ymtvvPXOex989Mm/Pvviq2++++E/P/3y2x8H/o9vQYccdsRR/zjmuBNOOuW0M84657wLLrrksiuuuua6G2665bY77rrnvgceeuSxJ5565rkXXnrltTfeeue9Dz765F+fffHVN9/98J+ffvntjwP/57egQw474qh/HHPcCSedctoZZ51z3gUXXXLZFVddc90NN91y2x133XPfAw898tgTTz3z3AsvvfLaG2+9894HH33yr8+++Oqb7374z0+//PbHge23oEMOO+Kofxxz3AknnXLaGWedc94FF11y2RVXXXPdDTfdctsdd91z3wMPPfLYE08989wLL73y2htvvfPeBx998q/Pvvjqm+9++M9Pv/z2x4H/61vQIYcdcdQ/jjnuhJNOOe2Ms84574KLLrnsiquuue6Gm2657Y677rnvgYceeeyJp5557oWXXnntjbfeee+Djz7512dffPXNdz/856dffvvjwP/9LeiQw4446h/HHHfCSaecdsZZ55x3wUWXXHbFVddcd8NNt9x2x1333PfAQ4889sRTzzz3wkuvvPbGW++898FHn/zrsy+++ua7H/7z0y+//XHg//kWdMhhRxz1j2OOO+GkU04746xzzrvgoksuu+Kqa6674aZbbrvjrnvue+ChRx574qlnnnvhpVdee+Otd9774KNP/vXZF199890P//npl9/+OLD7FnTIYUcc9Y9jjjvhpFNOO+Osc8674KJLLrviqmuuu+GmW26746577nvgoUcee+KpZ5574aVXXnvjrXfe++CjT/712RdfffPdD//56Zff/jjwb74FHXLYEUf945jjTjjplNPOOOuc8y646JLLrrjqmutuuOmW2+646577HnjokceeeOqZ51546ZXX3njrnfc++OiTf332xVfffPfDf3765bc/Dvzbb0GHHHbEUf845rgTTjrltDPOOue8Cy665LIrrrrmuhtuuuW2O+66574HHnrksSeeeua5F1565bU33nrnvQ8++uRfn33x1Tff/fCfn3757Y8D/++3oEMOO+Kofxxz3AknnXLaGWedc94FF11y2RVXXXPdDTfdctsdd91z3wMPPfLYE08989wLL73y2htvvfPeBx998q/Pvvjqm+9++M9Pv/z2x4H9t/8Pd+bZQHicLcUv2AEAAOBnex5BEARBEARBEARBEARBEAThC8IXBEEQBEEQBEEQBEEQBEEQBEFwN9tss83dbLOd29zNNtu5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EsussMof1vjLOhtsssU2O+yyxz4HHHLEMSeccsY5F1xyxTU33HLHPQ888sQzL7zyxjsffPLFNz/8MvB//hFkiGFGGGWMcSaYZIppZphljnkWWGSJZVZY5Q9r/GWdDTbZYpsddtljnwMOOeKYE04545wLLrnimhtuueOeBx554pkXXnnjnQ8++eKbH34Z+PwRZIhhRhhljHEmmGSKaWaYZY55FlhkiWVWWOUPa/xlnQ022WKbHXbZY58DDjnimBNOOeOcCy654pobbrnjngceeeKZF155450PPvnimx9+GfjXfwQZYpgRRhljnAkmmWKaGWaZY54FFllimRVW+cMaf1lng0222GaHXfbY54BDjjjmhFPOOOeCS6645oZb7rjngUeeeOaFV95454NPvvjmh18G/q8/ggwxzAijjDHOBJNMMc0Ms8wxzwKLLLHMCqv8YY2/rLPBJltss8Mue+xzwCFHHHPCKWecc8ElV1xzwy133PPAI08888Irb7zzwSdffPPDLwP/9x9BhhhmhFHGGGeCSaaYZoZZ5phngUWWWGaFVf6wxl/W2WCTLbbZYZc99jngkCOOOeGUM8654JIrrrnhljvueeCRJ5554ZU33vngky+++eGXge8fQYYYZoRRxhhngkmmmGaGWeaYZ4FFllhmhVX+sMZf1tlgky222WGXPfY54JAjjjnhlDPOueCSK6654ZY77nngkSeeeeGVN9754JMvvvnhl4H/548gQwwzwihjjDPBJFNMM8Msc8yzwCJLLLPCKn9Y4y/rbLDJFtvssMse+xxwyBHHnHDKGedccMkV19xwyx33PPDIE8+88Mob73zwyRff/PDLwP/7R5AhhhlhlDHGmWCSKaaZYZY55llgkSWWWWGVP6zxl3U22GSLbXbYZY99DjjkiGNOOOWMcy645IprbrjljnseeOSJZ1545Y13Pvjki29++GXg//sjyBDDjDDKGONMMMkU08wwyxzzLLDIEsussMof1vjLOhtsssU2O+yyxz4HHHLEMSeccsY5F1xyxTU33HLHPQ888sQzL7zyxjsffPLFNz/8MhD4t/7N/39ygdh9eJwt1yETAgCXllFWPxUVlVVUVFR0UVFRUVFRUQkEAoFAIBAIBAKBQCAQCAQCgUAgEAgEAoFAIBAIBAKBQCAQCAQCgUAgEFz9zi3nBzwz78z9Q+BPAv/v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IYYZYZQxxplgkimmmWGWOeZZYJEllllhlTXW2WCTLbbZYZc99jngkCOOOeGUM8654JIrrrnhljvueeCRJ5554ZU33vngky+++eGXPwb+vv4MMsQwI4wyxjgTTDLFNDPMMsc8CyyyxDIrrLLGOhtsssU2O+yyxz4HHHLEMSeccsY5F1xyxTU33HLHPQ888sQzL7zyxjsffPLFNz/88sdAVH8GGWKYEUYZY5wJJplimhlmmWOeBRZZYpkVVlljnQ022WKbHXbZY58DDjnimBNOOeOcCy654pobbrnjngceeeKZF155450PPvnimx9++WPgH+jPIEMMM8IoY4wzwSRTTDPDLHPMs8AiSyyzwiprrLPBJltss8Mue+xzwCFHHHPCKWecc8ElV1xzwy133PPAI08888Irb7zzwSdffPPDL38M/EP9GWSIYUYYZYxxJphkimlmmGWOeRZYZIllVlhljXU22GSLbXbYZY99DjjkiGNOOOWMcy645IprbrjljnseeOSJZ1545Y13Pvjki29++OWPgX+kP4MMMcwIo4wxzgSTTDHNDLPMMc8CiyyxzAqrrLHOBptssc0Ou+yxzwGHHHHMCaeccc4Fl1xxzQ233HHPA4888cwLr7zxzgeffPHND7/8MRDTn0GGGGaEUcYYZ4JJpphmhlnmmGeBRZZYZoVV1lhng0222GaHXfbY54BDjjjmhFPOOOeCS6645oZb7rjngUeeeOaFV95454NPvvjmh1/+GPjH+jPIEMOMMMoY40wwyRTTzDDLHPMssMgSy6ywyhrrbLDJFtvssMse+xxwyBHHnHDKGedccMkV19xwyx33PPDIE8+88Mob73zwyRff/PDLHwP/RH8GGWKYEUYZY5wJJplimhlmmWOeBRZZYpkVVlljnQ022WKbHXbZY58DDjnimBNOOeOcCy654pobbrnjngceeeKZF155450PPvnimx9++WPgn+rPIEMMM8IoY4wzwSRTTDPDLHPMs8AiSyyzwiprrLPBJltss8Mue+xzwCFHHHPCKWecc8ElV1xzwy133PPAI08888Irb7zzwSdffPPDL38MxPVnkCGGGWGUMcaZYJIppplhljnmWWCRJZZZYZU11tlgky222WGXPfY54JAjjjnhlDPOueCSK6654ZY77nngkSeeeeGVN9754JMvvvnhlz8G/pn+DDLEMCOM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GWaZY54FFllimRVWWWOdDTbZYpsddtljnwMOOeKYE04545wLLrnimhtuueOeBx554pkXXnnjnQ8++eKbH375YyCrP4MMMcwIo4wxzgSTTDHNDLPMMc8CiyyxzAqrrLHOBptssc0Ou+yxzwGHHHHMCaeccc4Fl1xxzQ233HHPA4888cwLr7zxzgeffPHND7/8MfDf9WeQIYYZYZQxxplgkimmmWGWOeZZYJEllllhlTXW2WCTLbbZYZc99jngkCOOOeGUM8654JIrrrnhljvueeCRJ5554ZU33vngky+++eGXPwb+h/4MMsQwI4wyxjgTTDLFNDPMMsc8CyyyxDIrrLLGOhtsssU2O+yyxz4HHHLEMSeccsY5F1xyxTU33HLHPQ888sQzL7zyxjsffPLFNz/88sfA/9SfQYYYZoRRxhhngkmmmGaGWeaYZ4FFllhmhVXWWGeDTbbYZodd9tjngEOOOOaEU84454JLrrjmhlvuuOeBR5545oVX3njng0+++OaHX/4YyOnPIEMMM8IoY4wzwSRTTDPDLHPMs8AiSyyzwiprrLPBJltss8Mue+xzwCFHHHPCKWecc8ElV1xzwy133PPAI08888Irb7zzwSdffPPDL38M/C/9GWSIYUYYZYxxJphkimlmmGWOeRZYZIllVlhljXU22GSLbXbYZY99DjjkiGNOOOWMcy645IprbrjljnseeOSJZ1545Y13Pvjki29++OWPgf+tP4MMMcwIo4wxzgSTTDHNDLPMMc8CiyyxzAqrrLHOBptssc0Ou+yxzwGHHHHMCaeccc4Fl1xxzQ233HHPA4888cwLr7zxzgeffPHND7/8MfB/9GeQIYYZYZQxxplgkimmmWGWOeZZYJEllllhlTXW2WCTLbbZYZc99jngkCOOOeGUM8654JIrrrnhljvueeCRJ5554ZU33vngky+++eGXPwbyf/T/AtC86Mh4nC3RoRcBAIDYYXvvgiAIgiAIgiAIgiDYZpttdrOb3dlmm2222WZ3ttmd22wTBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEHY27vvV74/4PcH+b8W+P8FGWKYEUYZY5wJJplimhlmmWOeBRZZYpkVVlljnQ022WKbHXbZY58DDjnimBNOOeOcCy654pobbrnjngceeeKZF155450PPvnimx9++WPgr/+Vf8AgQwwzwihjjDPBJFNMM8Msc8yzwCJLLLPCKmuss8EmW2yzwy577HPAIUccc8IpZ5xzwSVXXHPDLXfc88AjTzzzwitvvPPBJ19888Mvfwz8Df8ZZIhhRhhljHEmmGSKaWaYZY55FlhkiWVWWGWNdTbYZIttdthlj30OOOSIY0445YxzLrjkimtuuOWOex545IlnXnjljXc++OSLb3745Y+Bv+k/gwwxzAijjDHOBJNMMc0Ms8wxzwKLLLHMCqussc4Gm2yxzQ677LHPAYccccwJp5xxzgWXXHHNDbfccc8DjzzxzAuvvPHOB5988c0Pv/wxUPCfQYYYZoRRxhhngkmmmGaGWeaYZ4FFllhmhVXWWGeDTbbYZodd9tjngEOOOOaEU84454JLrrjmhlvuuOeBR5545oVX3njng0+++OaHX/4Y+Fv+M8gQw4wwyhjjTDDJFNPMMMsc8yywyBLLrLDKGutssMkW2+ywyx77HHDIEceccMoZ51xwyRXX3HDLHfc88MgTz7zwyhvvfPDJF9/88MsfA3/bfwYZYpgRRhljnAkmmWKaGWaZY54FFllimRVWWWOdDTbZYpsddtljnwMOOeKYE04545wLLrnimhtuueOeBx554pkXXnnjnQ8++eKbH375Y+Dv+M8gQwwzwihjjDPBJFNMM8Msc8yzwCJLLLPCKmuss8EmW2yzwy577HPAIUccc8IpZ5xzwSVXXHPDLXfc88AjTzzzwitvvPPBJ19888MvfwwU/WeQIYYZYZQxxplgkimmmWGWOeZZYJEllllhlTXW2WCTLbbZYZc99jngkCOOOeGUM8654JIrrrnhljvueeCRJ5554ZU33vngky+++eGXPwb+rv8MMsQwI4wyxjgTTDLFNDPMMsc8CyyyxDIrrLLGOhtsssU2O+yyxz4HHHLEMSeccsY5F1xyxTU33HLHPQ888sQzL7zyxjsffPLFNz/88sfA3/OfQYYYZoRRxhhngkmmmGaGWeaYZ4FFllhmhVXWWGeDTbbYZodd9tjngEOOOOaEU84454JLrrjmhlvuuOeBR5545oVX3njng0+++OaHX/4Y+Pv+M8gQw4wwyhjjTDDJFNPMMMsc8yywyBLLrLDKGutssMkW2+ywyx77HHDIEceccMoZ51xwyRXX3HDLHfc88MgTz7zwyhvvfPDJF9/88MsfAyX/GWSIYUYYZYxxJphkimlmmGWOeRZYZIllVlhljXU22GSLbXbYZY99DjjkiGNOOOWMcy645IprbrjljnseeOSJZ1545Y13Pvjki29++OWPgX/gP4MMMcwIo4wxzgSTTDHNDLPMMc8CiyyxzAqrrLHOBptssc0Ou+yxzwGHHHHMCaeccc4Fl1xxzQ233HHPA4888cwLr7zxzgeffPHND7/8MfCH/jPIEMOMMMoY40wwyRTTzDDLHPMssMgSy6ywyhrrbLDJFtvssMse+xxwyBHHnHDKGedccMkV19xwyx33PPDIE8+88Mob73zwyRff/PDLHwP/0H8GGWKYEUYZY5wJJplimhlmmWOeBRZZYpkVVlljnQ022WKbHXbZY58DDjnimBNOOeOcCy654pobbrnjngceeeKZF155450PPvnimx9++WOg7D+DDDHMCKOMMc4Ek0wxzQyzzDHPAossscwKq6yxzgabbLHNDrvssc8BhxxxzAmnnHHOBZdccc0Nt9xxzwOPPPHMC6+88c4Hn3zxzQ+//DHwj/xnkCGGGWGUMcaZYJIppplhljnmWWCRJZZZYZU11tlgky222WGXPfY54JAjjjnhlDPOueCSK6654ZY77nngkSeeeeGVN9754JMvvvnhlz8G/sh/BhlimBFGGWOcCSaZYpoZZpljngUWWWKZFVZZY50NNtlimx122WOfAw454pgTTjnjnAsuueKaG265454HHnnimRdeeeOdDz754psffvlj4B/7zyBDDDPCKGOMM8EkU0wzwyxzzLPAIksss8Iqa6yzwSZbbLPDLnvsc8AhRxxzwilnnHPBJVdcc8Mtd9zzwCNPPPPCK2+888EnX3zzwy9/DFT8Z5AhhhlhlDHGmWCSKaaZYZY55llgkSWWWWGVNdbZYJMtttlhlz32OeCQI4454ZQzzrngkiuuueGWO+554JEnnnnhlTfe+eCTL7754Zc/Bv6J/wwyxDAjjDLGOBNMMsU0M8wyxzwLLLLEMiusssY6G2yyxTY77LLHPgcccsQxJ5xyxjkXXHLFNTfccsc9DzzyxDMvvPLGOx988sU3P/zyx8Af+88gQwwzwihjjDPBJFNMM8Msc8yzwCJLLLPCKmuss8EmW2yzwy577HPAIUccc8IpZ5xzwSVXXHPDLXfc88AjTzzzwitvvPPBJ19888Mvfwz8if8MMsQwI4wyxjgTTDLFNDPMMsc8CyyyxDIrrLLGOhtsssU2O+yyxz4HHHLEMSeccsY5F1xyxTU33HLHPQ888sQzL7zyxjsffPLFNz/88sdA1X8GGWKYEUYZY5wJJplimhlmmWOeBRZZYpkVVlljnQ022WKbHXbZY58DDjnimBNOOeOcCy654pobbrnjngceeeKZF155450PPvnimx9++WPgn/rPIEMMM8IoY4wzwSRTTDPDLHPMs8AiSyyzwiprrLPBJltss8Mue+xzwCFHHHPCKWecc8ElV1xzwy133PPAI08888Irb7zzwSdffPPDL38M/DP/GWSIYUYYZYxxJphkimlmmGWOeRZYZIllVlhljXU22GSLbXbYZY99DjjkiGNOOOWMcy645IprbrjljnseeOSJZ1545Y13Pvjki29++OWPgX/uP4MMMcwIo4wxzgSTTDHNDLPMMc8CiyyxzAqrrLHOBptssc0Ou+yxzwGHHHHMCaeccc4Fl1xxzQ233HHPA4888cwLr7zxzgeffPHND7/8MVDzn0GGGGaEUcYYZ4JJpphmhlnmmGeBRZZYZoVV1lhng0222GaHXfbY54BDjjjmhFPOOOeCS6645oZb7rjngUeeeOaFV95454NPvvjmh1/+GPgX/jPIEMOMMMoY40wwyRTTzDDLHPMssMgSy6ywyhrrbLDJFtvssMse+xxwyBHHnHDKGedccMkV19xwyx33PPDIE8+88Mob73zwyRff/PDLHwP/0n8GGWKYEUYZY5wJJplimhlmmWOeBRZZYpkVVlljnQ022WKbHXbZY58DDjnimBNOOeOcCy654pobbrnjngceeeKZF155450PPvnimx9++WPgX/nPIEMMM8IoY4wzwSRTTDPDLHPMs8AiSyyzwiprrLPBJltss8Mue+xzwCFHHHPCKWecc8ElV1xzwy133PPAI08888Irb7zzwSdffPPDL38M1P1nkCGGGWGUMcaZYJIppplhljnmWWCRJZZZYZU11tlgky222WGXPfY54JAjjjnhlDPOueCSK6654ZY77nngkSeeeeGVN9754JMvvvnhlz8G/rX/DDLEMCOMMsY4E0wyxTQzzDLHPAssssQyK6yyxjobbLLFNjvsssc+BxxyxDEnnHLGORdccsU1N9xyxz0PPPLEMy+88sY7H3zyxTc//PLHwL/xn0GGGGaEUcYYZ4JJpphmhlnmmGeBRZZYZoVV1lhng0222GaHXfbY54BDjjjmhFPOOOeCS6645oZb7rjngUeeeOaFV95454NPvvjmh1/+GPi3/jPIEMOMMMoY40wwyRTTzDDLHPMssMgSy6ywyhrrbLDJFtvssMse+xxwyBHHnHDKGedccMkV19xwyx33PPDIE8+88Mob73zwyRff/PDLHwMN/xlkiGFGGGWMcSaYZIppZphljnkWWGSJZVZYZY11Nthki2122GWPfQ445IhjTjjljHMuuOSKa2645Y57HnjkiWdeeOWNdz745Itvfvjlj4F/5z+DDDHMCKOMMc4Ek0wxzQyzzDHPAossscwKq6yxzgabbLHNDrvssc8BhxxxzAmnnHHOBZdccc0Nt9xxzwOPPPHMC6+88c4Hn3zxzQ+//DHw7/1nkCGGGWGUMcaZYJIppplhljnmWWCRJZZZYZU11tlgky222WGXPfY54JAjjjnhlDPOueCSK6654ZY77nngkSeeeeGVN9754JMvvvnhlz8G/oP/DDLEMCOMMsY4E0wyxTQzzDLHPAssssQyK6yyxjobbLLFNjvsssc+BxxyxDEnnHLGORdccsU1N9xyxz0PPPLEMy+88sY7H3zyxTc//PLHQNN/BhlimBFGGWOcCSaZYpoZZpljngUWWWKZFVZZY50NNtlimx122WOfAw454pgTTjnjnAsuueKaG265454HHnnimRdeeeOdDz754psffvlj4D/6zyBDDDPCKGOMM8EkU0wzwyxzzLPAIksss8Iqa6yzwSZbbLPDLnvsc8AhRxxzwilnnHPBJVdcc8Mtd9zzwCNPPPPCK2+888EnX3zzwy9/DPwn/xlkiGFGGGWMcSaYZIppZphljnkWWGSJZVZYZY11Nthki2122GWPfQ445IhjTjjljHMuuOSKa2645Y57HnjkiWdeeOWNdz745Itvfvjlj4H/7D+DDDHMCKOMMc4Ek0wxzQyzzDHPAossscwKq6yxzgabbLHNDrvssc8BhxxxzAmnnHHOBZdccc0Nt9xxzwOPPPHMC6+88c4Hn3zxzQ+//DHQ8p9BhhhmhFHGGGeCSaaYZoZZ5phngUWWWGaFVdZYZ4NNtthmh1322OeAQ4445oRTzjjngkuuuOaGW+6454FHnnjmhVfeeOeDT7745odf/hj4L/4zyBDDjDDKGONMMMkU08wwyxzzLLDIEsus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YpsddtljnwMOOeKYE04545wLLrnimhtuueOeBx554pkXXnnjnQ8++eKbH375Y+Cf+s8gQwwzwihjjDPBJFNMM8Msc8yzwCJLLLPCKmuss8EmW2yzwy577HPAIUccc8IpZ5xzwSVXXHPDLXfc88AjTzzzwitvvPPBJ19888Mvfwz8M/8ZZIhhRhhljHEmmGSKaWaYZY55FlhkiWVWWGWNdTbYZIttdthlj30OOOSIY0445YxzLrjkimtuuOWOex545IlnXnjljXc++OSLb3745Y+Bf+4/gwwxzAijjDHOBJNMMc0Ms8wxzwKLLLHMCqussc4Gm2yxzQ677LHPAYccccwJp5xxzgWXXHHNDbfccc8DjzzxzAuvvPHOB5988c0Pv/wxMPOfQYYYZoRRxhhngkmmmGaGWeaYZ4FFllhmhVXWWGeDTbbYZodd9tjngEOOOOaEU84454JLrrjmhlvuuOeBR5545oVX3njng0+++OaHX/4Y+Bf+M8gQw4wwyhjjTDDJFNPMMMsc8yywyBLLrLDKGutssMkW2+ywyx77HHDIEceccMoZ51xwyRXX3HDLHfc88MgTz7zwyhvvfPDJF9/88MsfA3/qP4MMMcwIo4wxzgSTTDHNDLPMMc8CiyyxzAqrrLHOBptssc0Ou+yxzwGHHHHMCaeccc4Fl1xxzQ233HHPA4888cwLr7zxzgeffPHND7/8MfAv/WeQIYYZYZQxxplgkimmmWGWOeZZYJEllllhlTXW2WCTLbbZYZc99jngkCOOOeGUM8654JIrrrnhljvueeCRJ5554ZU33vngky+++eGXPwbm/jPIEMOMMMoY40wwyRTTzDDLHPMssMgSy6ywyhrrbLDJFtvssMse+xxwyBHHnHDKGedccMkV19xwyx33PPDIE8+88Mob73zwyRff/PDLHwP/yn8GGWKYEUYZY5wJJplimhlmmWOeBRZZYpkVVlljnQ022WKbHXbZY58DDjnimBNOOeOcCy654pobbrnjngceeeKZF155450PPvnimx9++WPgX/vPIEMMM8IoY4wzwSRTTDPDLHPMs8AiSyyzwiprrLPBJltss8Mue+xzwCFHHHPCKWecc8ElV1xzwy133PPAI08888Irb7zzwSdffPPDL38M/Bv/GWSIYUYYZYxxJphkimlmmGWOeRZYZIllVlhljXU22GSLbXbYZY99DjjkiGNOOOWMcy645IprbrjljnseeOSJZ1545Y13Pvjki29++OWPgYX/DDLEMCOMMsY4E0wyxTQzzDLHPAssssQyK6yyxjobbLLFNjvsssc+BxxyxDEnnHLGORdccsU1N9xyxz0PPPLEMy+88sY7H3zyxTc//PLHwL/1n0GGGGaEUcYYZ4JJpphmhlnmmGeBRZZYZoVV1lhng0222GaHXfbY54BDjjjmhFPOOOeCS6645oZb7rjngUeeeOaFV95454NPvvjmh1/+GPh3/jPIEMOMMMoY40wwyRTTzDDLHPMssMgSy6ywyhrrbLDJFtvssMse+xxwyBHHnHDKGedccMkV19xwyx33PPDIE8+88Mob73zwyRff/PDLHwP/3n8GGWKYEUYZY5wJJplimhlmmWOeBRZZYpkVVlljnQ022WKbHXbZY58DDjnimBNOOeOcCy654pobbrnjngceeeKZF155450PPvnimx9++WNg6T+DDDHMCKOMMc4Ek0wxzQyzzDHPAossscwKq6yxzgabbLHNDrvssc8BhxxxzAmnnHHOBZdccc0Nt9xxzwOPPPHMC6+88c4Hn3zxzQ+//DHwH/xnkCGGGWGUMcaZYJIppplhljnmWWCRJZZZYZU11tlgky222WGXPfY54JAjjjnhlDPOueCSK6654ZY77nngkSeeeeGVN9754JMvvvnhlz8G/qP/DDLEMCOMMsY4E0wyxTQzzDLHPAssssQyK6yyxjobbLLFNjvsssc+BxxyxDEnnHLGORdccsU1N9xyxz0PPPLEMy+88sY7H3zyxTc//PLHwH/yn0GGGGaEUcYYZ4JJpphmhlnmmGeBRZZYZoVV1lhng0222GaHXfbY54BDjjjmhFPOOOeCS6645oZb7rjngUeeeOaFV95454NPvvjmh1/+GFj5zyBDDDPCKGOMM8EkU0wzwyxzzLPAIksss8Iqa6yzwSZbbLPDLnvsc8AhRxxzwilnnHPBJVdcc8Mtd9zzwCNPPPPCK2+888EnX3zzwy9/DPxn/xlkiGFGGGWMcSaYZIppZphljnkWWGSJZVZYZY11Nthki2122GWPfQ445IhjTjjljHMuuOSKa2645Y57HnjkiWdeeOWNdz745Itvfvjlj4H/4j+DDDHMCKOMMc4Ek0wxzQyzzDHPAossscwKq6yxzgabbLHNDrvssc8BhxxxzAmnnHHOBZdccc0Nt9xxzwOPPPHMC6+88c4Hn3zxzQ+//DHwX/1nkCGGGWGUMcaZYJIppplhljnmWWCRJZZZYZU11tlgky222WGXPfY54JAjjjnhlDPOueCSK6654ZY77nngkSeeeeGVN9754JMvvvnhlz8G1v4zyBDDjDDKGONMMMkU08wwyxzzLLDIEsussMoa62ywyRbb7LDLHvsccMgRx5xwyhnnXHDJFdfccMsd9zzwyBPPvPDKG+988MkX3/zwyx8Df+Y/gwwxzAijjDHOBJNMMc0Ms8wxzwKLLLHMCqussc4Gm2yxzQ677LHPAYccccwJp5xxzgWXXHHNDbfccc8DjzzxzAuvvPHOB5988c0Pv/wx8N/8Z5AhhhlhlDHGmWCSKaaZYZY55llgkSWWWWGVNdbZYJMtttlhlz32OeCQI4454ZQzzrngkiuuueGWO+554JEnnnnhlTfe+eCTL7754Zc/Bv67/wwyxDAjjDLGOBNMMsU0M8wyxzwLLLLEMiusssY6G2yyxTY77LLHPgcccsQxJ5xyxjkXXHLFNTfccsc9DzzyxDMvvPLGOx988sU3P/zyx8DGfwYZYpgRRhljnAkmmWKaGWaZY54FFllimRVWWWOdDTbZYpsddtljnwMOOeKYE04545wLLrnimhtuueOeBx554pkXXnnjnQ8++eKbH375Y+B/+M8gQwwzwihjjDPBJFNMM8Msc8yzwCJLLLPCKmuss8EmW2yzwy577HPAIUccc8IpZ5xzwSVXXHPDLXfc88AjTzzzwitvvPPBJ19888Mvfwz8T/8ZZIhhRhhljHEmmGSKaWaYZY55FlhkiWVWWGWNdTbYZIttdthlj30OOOSIY0445YxzLrjkimtuuOWOex545IlnXnjljXc++OSLb3745Y+B/+U/gwwxzAijjDHOBJNMMc0Ms8wxzwKLLLHMCqussc4Gm2yxzQ677LHPAYccccwJp5xxzgWXXHHNDbfccc8DjzzxzAuvvPHOB5988c0Pv/wxsPWfQYYYZoRRxhhngkmmmGaGWeaYZ4FFllhmhVXWWGeDTbbYZodd9tjngEOOOOaEU84454JLrrjmhlvuuOeBR5545oVX3njng0+++OaHX/4Y+N/+M8gQw4wwyhjjTDDJFNPMMMsc8yywyBLLrLDKGutssMkW2+ywyx77HHDIEceccMoZ51xwyRXX3HDLHfc88MgTz7zwyhvvfPDJF9/88MsfA3/uP4MMMcwIo4wxzgSTTDHNDLPMMc8CiyyxzAqrrLHOBptssc0Ou+yxzwGHHHHMCaeccc4Fl1xxzQ233HHPA4888cwLr7zxzgeffPHND7/8MfAX/jPIEMOMMMoY40wwyRTTzDDLHPMssMgSy6ywyhrrbLDJFtvssMse+xxwyBHHnHDKGedccMkV19xwyx33PPDIE8+88Mob73zwyRff/PDLHwM7/xlkiGFGGGWMcSaYZIppZphljnkWWGSJZVZYZY11Nthki2122GWPfQ445IhjTjjljHMuuOSKa2645Y57HnjkiWdeeOWNdz745Itvfvjlj4G/9J9BhhhmhFHGGGeCSaaYZoZZ5phngUWWWGaFVdZYZ4NNtthmh1322OeAQ4445oRTzjjngkuuuOaGW+6454FHnnjmhVfeeOeDT7745odf/hj4P/4zyBDDjDDKGONMMMkU08wwyxzzLLDIEsussMoa62ywyRbb7LDLHvsccMgRx5xwyhnnXHDJFdfccMsd9zzwyBPPvPDKG+988MkX3/zwyx8D/9d/BhlimBFGGWOcCSaZYpoZZpljngUWWWKZFVZZY50NNtlimx122WOfAw454pgTTjnjnAsuueKaG265454HHnnimRdeeeOdDz754psffvljYP9X/j/T5ulAeJwt0a8fAQCA3mG3zwVBEARBEARBEARBEARBEARBEARBEARBEARBEARBEARBEARBsM0229zNNttss80227nNbbZzm23247PtecP7/AHfP9z/QeD/LsgQw4wwyhjjTDDJFNPMMMsc8yywyBLLrLDKGutssMkW2+ywyx77HHDIEceccMoZ51xwyRXX3HDLHfc88MgTz7zwyhvvfPDJF9/88MsfA3/5//uHDDLEMCOMMsY4E0wyxTQzzDLHPAssssQyK6yyxjobbLLFNjvsssc+BxxyxDEnnHLGORdccsU1N9xyxz0PPPLEMy+88sY7H3zyxTc//PLHwF/Rn0GGGGaEUcYYZ4JJpphmhlnmmGeBRZZYZoVV1lhng0222GaHXfbY54BDjjjmhFPOOOeCS6645oZb7rjngUeeeOaFV95454NPvvjmh1/+GPir+jPIEMOMMMoY40wwyRTTzDDLHPMssMgSy6ywyhrrbLDJFtvssMse+xxwyBHHnHDKGedccMkV19xwyx33PPDIE8+88Mob73zwyRff/PDLHwMH/RlkiGFGGGWMcSaYZIppZphljnkWWGSJZVZYZY11Nthki2122GWPfQ445IhjTjjljHMuuOSKa2645Y57HnjkiWdeeOWNdz745Itvfvjlj4G/pj+DDDHMCKOMMc4Ek0wxzQyzzDHPAossscwKq6yxzgabbLHNDrvssc8BhxxxzAmnnHHOBZdccc0Nt9xxzwOPPPHMC6+88c4Hn3zxzQ+//DHw1/VnkCGGGWGUMcaZYJIppplhljnmWWCRJZZZYZU11tlgky222WGXPfY54JAjjjnhlDPOueCSK6654ZY77nngkSeeeeGVN9754JMvvvnhlz8G/ob+DDLEMCOMMsY4E0wyxTQzzDLHPAssssQyK6yyxjobbLLFNjvsssc+BxxyxDEnnHLGORdccsU1N9xyxz0PPPLEMy+88sY7H3zyxTc//PLHwFF/BhlimBFGGWOcCSaZYpoZZpljngUWWWKZFVZZY50NNtlimx122WOfAw454pgTTjnjnAsuueKaG265454HHnnimRdeeeOdDz754psffvlj4G/qzyBDDDPCKGOMM8EkU0wzwyxzzLPAIksss8Iqa6yzwSZbbLPDLnvsc8AhRxxzwilnnHPBJVdcc8Mtd9zzwCNPPPPCK2+888EnX3zzwy9/DPwt/RlkiGFGGGWMcSaYZIppZphljnkWWGSJZVZYZY11Nthki2122GWPfQ445IhjTjjljHMuuOSKa2645Y57HnjkiWdeeOWNdz745Itvfvjlj4G/rT+DDDHMCKOMMc4Ek0wxzQyzzDHPAossscwKq6yxzgabbLHNDrvssc8BhxxxzAmnnHHOBZdccc0Nt9xxzwOPPPHMC6+88c4Hn3zxzQ+//DFw0p9BhhhmhFHGGGeCSaaYZoZZ5phngUWWWGaFVdZYZ4NNtthmh1322OeAQ4445oRTzjjngkuuuOaGW+6454FHnnjmhVfeeOeDT7745odf/hj4I/0ZZIhhRhhljHEmmGSKaWaYZY55FlhkiWVWWGWNdTbYZIttdthlj30OOOSIY0445YxzLrjkimtuuOWOex545IlnXnjljXc++OSLb3745Y+BP9afQYYYZoRRxhhngkmmmGaGWeaYZ4FFllhmhVXWWGeDTbbYZodd9tjngEOOOOaEU84454JLrrjmhlvuuOeBR5545oVX3njng0+++OaHX/4Y+Dv6M8gQw4wwyhjjTDDJFNPMMMsc8yywyBLLrLDKGutssMkW2+ywyx77HHDIEceccMoZ51xwyRXX3HDLHfc88MgTz7zwyhvvfPDJF9/88MsfA2f9GWSIYUYYZYxxJphkimlmmGWOeRZYZIllVlhljXU22GSLbXbYZY99DjjkiGNOOOWMcy645IprbrjljnseeOSJZ1545Y13Pvjki29++OWPgb+rP4MMMcwIo4wxzgSTTDHNDLPMMc8CiyyxzAqrrLHOBptssc0Ou+yxzwGHHHHMCaeccc4Fl1xxzQ233HHPA4888cwLr7zxzgeffPHND7/8MfD39GeQIYYZYZQxxplgkimmmWGWOeZZYJEllllhlTXW2WCTLbbZYZc99jngkCOOOeGUM8654JIrrrnhljvueeCRJ5554ZU33vngky+++eGXPwb+vv4MMsQwI4wyxjgTTDLFNDPMMsc8CyyyxDIrrLLGOhtsssU2O+yyxz4HHHLEMSeccsY5F1xyxTU33HLHPQ888sQzL7zyxjsffPLFNz/88sfARX8GGWKYEUYZY5wJJplimhlmmWOeBRZZYpkVVlljnQ022WKbHXbZY58DDjnimBNOOeOcCy654pobbrnjngceeeKZF155450PPvnimx9++WPgH+jPIEMMM8IoY4wzwSRTTDPDLHPMs8AiSyyzwiprrLPBJltss8Mue+xzwCFHHHPCKWecc8ElV1xzwy133PPAI08888Irb7zzwSdffPPDL38M/EP9GWSIYUYYZYxxJphkimlmmGWOeRZYZIllVlhljXU22GSLbXbYZY99DjjkiGNOOOWMcy645IprbrjljnseeOSJZ1545Y13Pvjki29++OWPgX+kP4MMMcwIo4wxzgSTTDHNDLPMMc8CiyyxzAqrrLHOBptssc0Ou+yxzwGHHHHMCaeccc4Fl1xxzQ233HHPA4888cwLr7zxzgeffPHND7/8MXDVn0GGGGaEUcYYZ4JJpphmhlnmmGeBRZZYZoVV1lhng0222GaHXfbY54BDjjjmhFPOOOeCS6645oZb7rjngUeeeOaFV95454NPvvjmh1/+GPjH+jPIEMOMMMoY40wwyRTTzDDLHPMssMgSy6ywyhrrbLDJFtvssMse+xxwyBHHnHDKGedccMkV19xwyx33PPDIE8+88Mob73zwyRff/PDLHwP/RH8GGWKYEUYZY5wJJplimhlmmWOeBRZZYpkVVlljnQ022WKbHXbZY58DDjnimBNOOeOcCy654pobbrnjngceeeKZF155450PPvnimx9++WPgn+rPIEMMM8IoY4wzwSRTTDPDLHPMs8AiSyyzwiprrLPBJltss8Mue+xzwCFHHHPCKWecc8ElV1xzwy133PPAI08888Irb7zzwSdffPPDL38M3PRnkCGGGWGUMcaZYJIppplhljnmWWCRJZZZYZU11tlgky222WGXPfY54JAjjjnhlDPOueCSK6654ZY77nngkSeeeeGVN9754JMvvvnhlz8G/pn+DDLEMCOMMsY4E0wyxTQzzDLHPAssssQyK6yyxjobbLLFNjvsssc+BxxyxDEnnHLGORdccsU1N9xyxz0PPPLEMy+88sY7H3zyxTc//PLHwD/Xn0GGGGaEUcYYZ4JJpphmhlnmmGeBRZZYZoVV1lhng0222GaHXfbY54BDjjjmhFPOOOeCS6645oZb7rjngUeeeOaFV95454NPvvjmh1/+GPgX+jPIEMOMMMoY40wwyRTTzDDLHPMssMgSy6ywyhrrbLDJFtvssMse+xxwyBHHnHDKGedccMkV19xwyx33PPDIE8+88Mob73zwyRff/PDLHwN3/RlkiGFGGGWMcSaYZIppZphljnkWWGSJZVZYZY11Nthki2122GWPfQ445IhjTjjljHMuuOSKa2645Y57HnjkiWdeeOWNdz745Itvfvjlj4F/qT+DDDHMCKOMMc4Ek0wxzQyzzDHPAossscwKq6yxzgabbLHNDrvssc8BhxxxzAmnnHHOBZdccc0Nt9xxzwOPPPHMC6+88c4Hn3zxzQ+//DHwr/RnkCGGGWGUMcaZYJIppplhljnmWWCRJZZZYZU11tlgky222WGXPfY54JAjjjnhlDPOueCSK6654ZY77nngkSeeeeGVN9754JMvvvnhlz8G/rX+DDLEMCOMMsY4E0wyxTQzzDLHPAssssQyK6yyxjobbLLFNjvsssc+BxxyxDEnnHLGORdccsU1N9xyxz0PPPLEMy+88sY7H3zyxTc//PLHwEN/BhlimBFGGWOcCSaZYpoZZpljngUWWWKZFVZZY50NNtlimx122WOfAw454pgTTjnjnAsu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cy645IprbrjljnseeOSJZ1545Y13Pvjki29++OWPgb+kP4MMMcwIo4wxzgSTTDHNDLPMMc8CiyyxzAqrrLHOBptssc0Ou+yxzwGHHHHMCaeccc4Fl1xxzQ233HHPA4888cwLr7zxzgeffPHND7/8MfCX9WeQIYYZYZQxxplgkimmmWGWOeZZYJEllllhlTXW2WCTLbbZYZc99jngkCOOOeGUM8654JIrrrnhljvueeCRJ5554ZU33vngky+++eGXPwb+iv4MMsQwI4wyxjgTTDLFNDPMMsc8CyyyxDIrrLLGOhtsssU2O+yyxz4HHHLEMSeccsY5F1xyxTU33HLHPQ888sQzL7zyxjsffPLFNz/88sc/f/j/P39gkCGGGWGUMcaZYJIppplhljnmWWCRJZZZYZU11tlgky222WGXPfY54JAjjjnhlDPOueCSK6654ZY77nngkSeeeeGVN9754JMvvvnhlz8G/qr+DDLEMCOMMsY4E0wyxTQzzDLHPAssssQyK6yyxjobbLLFNjvsssc+BxxyxDEnnHLGORdccsU1N9xyxz0PPPLEMy+88sY7H3zyxTc//PLHwF/Tn0GGGGaEUcYYZ4JJpphmhlnmmGeBRZZYZoVV1lhng0222GaHXfbY54BDjjjmhFPOOOeCS6645oZb7rjngUeeeOaFV95454NPvvjmh1/+GPjr+jPIEMOMMMoY40wwyRTTzDDLHPMssMgSy6ywyhrrbLDJFtvssMse+xxwyBHHnHDKGedccMkV19xwyx33PPDIE8+88Mob73zwyRff/PDLHwMh/RlkiGFGGGWMcSaYZIppZphljnkWWGSJZVZYZY11Nthki2122GWPfQ445IhjTjjljHMuuOSKa2645Y57HnjkiWdeeOWNdz745Itvfvjlj4G/oT+DDDHMCKOMMc4Ek0wxzQyzzDHPAossscwKq6yxzgabbLHNDrvssc8BhxxxzAmnnHHOBZdccc0Nt9xxzwOPPPHMC6+88c4Hn3zxzQ+//DHwN/VnkCGGGWGUMcaZYJIppplhljnmWWCRJZZZYZU11tlgky222WGXPfY54JAjjjnhlDPOueCSK6654ZY77nngkSeeeeGVN9754JMvvvnhlz8G/pb+DDLEMCOMMsY4E0wyxTQzzDLHPAssssQyK6yyxjobbLLFNjvsssc+BxxyxDEnnHLGORdccsU1N9xyxz0PPPLEMy+88sY7H3zyxTc//PLHQFh/BhlimBFGGWOcCSaZYpoZZpljngUWWWKZFVZZY50NNtlimx122WOfAw454pgTTjnjnAsuueKaG265454HHnnimRdeeeOdDz754psffvlj4E/1Z5AhhhlhlDHGmWCSKaaZYZY55llgkSWWWWGVNdbZYJMtttlhlz32OeCQI4454ZQzzrngkiuuueGWO+554JEnnnnhlTfe+eCTL7754Zc/Bv62/gwyxDAjjDLGOBNMMsU0M8wyxzwLLLLEMiusssY6G2yyxTY77LLHPgcccsQxJ5xyxjkXXHLFNTfccsc9DzzyxDMvvPLGOx988sU3P/zyx8Df0Z9BhhhmhFHGGGeCSaaYZoZZ5phngUWWWGaFVdZYZ4NNtthmh1322OeAQ4445oRTzjjngkuuuOaGW+6454FHnnjmhVfeeOeDT7745odf/hiI6M8gQwwzwihjjDPBJFNMM8Msc8yzwCJLLLPCKmuss8EmW2yzwy577HPAIUccc8IpZ5xzwSVXXHPDLXfc88AjTzzzwitvvPPBJ19888Mvfwz8Xf0ZZIhhRhhljHEmmGSKaWaYZY55FlhkiWVWWGWNdTbYZIttdthlj30OOOSIY0445YxzLrjkimtuuOWOex545IlnXnjljXc++OSLb3745Y+Bv6c/gwwxzAijjDHOBJNMMc0Ms8wxzwKLLLHMCqussc4Gm2yxzQ677LHPAYccccwJp5xxzgWXXHHNDbfccc8DjzzxzAuvvPHOB5988c0Pv/wx8Pf1Z5AhhhlhlDHGmWCSKaaZYZY55llgkSWWWWGVNdbZYJMtttlhlz32OeCQI4454ZQzzrngkiuuueGWO+554JEnnnnhlTfe+eCTL7754Zc/BqL6M8gQw4wwyhjjTDDJFNPMMMsc8yywyBLLrLDKGutssMkW2+ywyx77HHDIEceccMoZ51xwyRXX3HDLHfc88MgTz7zwyhvvfPDJF9/88MsfA/9AfwYZYpgRRhljnAkmmWKaGWaZY54FFllimRVWWWOdDTbZYpsddtljnwMOOeKYE04545wLLrnimhtuueOeBx554pkXXnnjnQ8++eKbH375Y+Af6s8gQwwzwihjjDPBJFNMM8Msc8yzwCJLLLPCKmuss8EmW2yzwy577HPAIUccc8IpZ5xzwSVXXHPDLXfc88AjTzzzwitvvPPBJ19888Mvfwz8I/0ZZIhhRhhljHEmmGSKaWaYZY55FlhkiWVWWGWNdTbYZIttdthlj30OOOSIY0445YxzLrjkimtuuOWOex545IlnXnjljXc++OSLb3745Y+BmP4MMsQwI4wyxjgTTDLFNDPMMsc8CyyyxDIrrLLGOhtsssU2O+yyxz4HHHLEMSeccsY5F1xyxTU33HLHPQ888sQzL7zyxjsffPLFNz/88sfAP9afQYYYZoRRxhhngkmmmGaGWeaYZ4FFllhmhVXWWGeDTbbYZodd9tjngEOOOOaEU84454JLrrjmhlvuuOeBR5545oVX3njng0+++OaHX/4Y+Cf6M8gQw4wwyhjjTDDJFNPMMMsc8yywyBLLrLDKGutssMkW2+ywyx77HHDIEceccMoZ51xwyRXX3HDLHfc88MgTz7zwyhvvfPDJF9/88MsfA/9UfwYZYpgRRhljnAkmmWKaGWaZY54FFllimRVWWWOdDTbZYpsddtljnwMOOeKYE04545wLLrnimhtuueOeBx554pkXXnnjnQ8++eKbH375YyCuP4MMMcwIo4wxzgSTTDHNDLPMMc8CiyyxzAqrrLHOBptssc0Ou+yxzwGHHHHMCaeccc4Fl1xxzQ233HHPA4888cwLr7zxzgeffPHND7/8MfDP9GeQIYYZYZQxxplgkimmmWGWOeZZYJEllllhlTXW2WCTLbbZYZc99jngkCOOOeGUM8654JIrrrnhljvueeCRJ5554ZU33vngky+++eGXPwb+uf4MMsQwI4wyxjgTTDLFNDPMMsc8CyyyxDIrrLLGOhtsssU2O+yyxz4HHHLEMSeccsY5F1xyxTU33HLHPQ888sQzL7zyxjsffPLFNz/88sfAn+nPIEMMM8IoY4wzwSRTTDPDLHPMs8AiSyyzwiprrLPBJltss8Mue+xzwCFHHHPCKWecc8ElV1xzwy133PPAI08888Irb7zzwSdffPPDL38MJPRnkCGGGWGUMcaZYJIppplhljnmWWCRJZZZYZU11tlgky222WGXPfY54JAjjjnhlDPOueCSK6654ZY77nngkSeeeeGVN9754JMvvvnhlz8G/oX+DDLEMCOMMsY4E0wyxTQzzDLHPAssssQyK6yyxjobbLLFNjvsssc+BxxyxDEnnHLGORdccsU1N9xyxz0PPPLEMy+88sY7H3zyxTc//PLHwL/Un0GGGGaEUcYYZ4JJpphmhlnmmGeBRZZYZoVV1lhng0222GaHXfbY54BDjjjmhFPOOOeCS6645oZb7rjngUeeeOaFV95454NPvvjmh1/+GPhX+jPIEMOMMMoY40wwyRTTzDDLHPMssMgSy6ywyhrrbLDJFtvssMse+xxwyBHHnHDKGedccMkV19xwyx33PPDIE8+88Mob73zwyRff/PDLHwNJ/RlkiGFGGGWMcSaYZIppZphljnkWWGSJZVZYZY11Nthki2122GWPfQ445IhjTjjljHMuuOSKa2645Y57HnjkiWdeeOWNdz745Itvfvjlj4F/rT+DDDHMCKOMMc4Ek0wxzQyzzDHPAossscwKq6yxzgabbLHNDrvssc8BhxxxzAmnnHHOBZdccc0Nt9xxzwOPPPHMC6+88c4Hn3zxzQ+//DHwb/RnkCGGGWGUMcaZYJIppplhljnmWWCRJZZZYZU11tlgky222WGXPfY54JAjjjnhlDPOueCSK6654ZY77nngkSeeeeGVN9754JMvvvnhlz8G/q3+DDLEMCOMMsY4E0wyxTQzzDLHPAssssQyK6yyxjobbLLFNjvsssc+BxxyxDEnnHLGORdccsU1N9xyxz0PPPLEMy+88sY7H3zyxTc//PLHQEp/BhlimBFGGWOcCSaZYpoZZpljngUWWWKZFVZZY50NNtlimx122WOfAw454pgTTjnjnAsuueKaG265454HHnnimRdeeeOdDz754psffvlj4N/pzyBDDDPCKGOMM8EkU0wzwyxzzLPAIksss8Iqa6yzwSZbbLPDLnvsc8AhRxxzwilnnHPBJVdcc8Mtd9zzwCNPPPPCK2+888EnX3zzwy9/DPx7/RlkiGFGGGWMcSaYZIppZphljnkWWGSJZVZYZY11Nthki2122GWPfQ445IhjTjjljHMuuOSKa2645Y57HnjkiWdeeOWNdz745Itvfvjlj4H/oD+DDDHMCKOMMc4Ek0wxzQyzzDHPAossscwKq6yxzgabbLHNDrvssc8BhxxxzAmnnHHOBZdccc0Nt9xxzwOPPPHMC6+88c4Hn3zxzQ+//DGQ1p9BhhhmhFHGGGeCSaaYZoZZ5phngUWWWGaFVdZYZ4NNtthmh1322OeAQ4445oRTzjjngkuuuOaGW+6454FHnnjmhVfeeOeDT7745odf/hj4j/ozyBDDjDDKGONMMMkU08wwyxzzLLDIEsussMoa62ywyRbb7LDLHvsccMgRx5xwyhnnXHDJFdfccMsd9zzwyBPPvPDKG+988MkX3/zwyx8D/0l/BhlimBFGGWOcCSaZYpoZZpljngUWWWKZFVZZY50NNtlimx122WOfAw454pgTTjnjnAsuueKaG265454HHnnimRdeeeOdDz754psffvlj4D/rzyBDDDPCKGOMM8EkU0wzwyxzzLPAIksss8Iqa6yzwSZbbLPDLnvsc8AhRxxzwilnnHPBJVdcc8Mtd9zzwCNPPPPCK2+888EnX3zzwy9/DGT0Z5AhhhlhlDHGmWCSKaaZYZY55llgkSWWWWGVNdbZYJMtttlhlz32OeCQI4454ZQzzrngkiuuueGWO+554JEnnnnhlTfe+eCTL7754Zc/Bv6L/gwyxDAjjDLGOBNMMsU0M8wyxzwLLLLEMiusssY6G2yyxTY77LLHPgcccsQxJ5xyxjkXXHLFNTfccsc9DzzyxDMvvPLGOx988sU3P/zyx8B/1Z9BhhhmhFHGGGeCSaaYZoZZ5phngUWWWGaFVdZYZ4NNtthmh1322OeAQ4445oRTzjjngkuuuOaGW+6454FHnnjmhVfeeOeDT7745odf/hj4b/ozyBDDjDDKGONMMMkU08wwyxzzLLDIEsussMoa62ywyRbb7LDLHvsccMgRx5xwyhnnXHDJFdfccMsd9zzwyBPPvPDKG+988MkX3/zwyx8DWf0ZZIhhRhhljHEmmGSKaWaYZY55FlhkiWVWWGWNdTbYZIttdthlj30OOOSIY0445YxzLrjkimtuuOWOex545IlnXnjljXc++OSLb3745Y+B/64/gwwxzAijjDHOBJNMMc0Ms8wxzwKLLLHMCqussc4Gm2yxzQ677LHPAYccccwJp5xxzgWXXHHNDbfccc8DjzzxzAuvvPHOB5988c0Pv/wx8D/0Z5AhhhlhlDHGmWCSKaaZYZY55llgkSWWWWGVNdbZYJMtttlhlz32OeCQI4454ZQzzrngkiuuueGWO+554JEnnnnhlTfe+eCTL7754Zc/Bv6n/gwyxDAjjDLGOBNMMsU0M8wyxzwLLLLEMiusssY6G2yyxTY77LLHPgcccsQxJ5xyxjkXXHLFNTfccsc9DzzyxDMvvPLGOx988sU3P/zyx0BOfwYZYpgRRhljnAkmmWKaGWaZY54FFllimRVWWWOdDTbZYpsddtljnwMOOeKYE04545wLLrnimhtuueOeBx554pkXXnnjnQ8++eKbH375Y+B/6c8gQwwzwihjjDPBJFNMM8Msc8yzwCJLLLPCKmuss8EmW2yzwy577HPAIUccc8IpZ5xzwSVXXHPDLXfc88AjTzzzwitvvPPBJ19888Mvfwz8b/0ZZIhhRhhljHEmmGSKaWaYZY55FlhkiWVWWGWNdTbYZIttdthlj30OOOSIY0445YxzLrjkimtuuOWOex545IlnXnjljXc++OSLb3745Y+B/6M/gwwxzAijjDHOBJNMMc0Ms8wxzwKLLLHMCqussc4Gm2yxzQ677LHPAYccccwJp5xxzgWXXHHNDbfccc8DjzzxzAuvvPHOB5988c0Pv/wxkP+j/xcsy/jIeJwt0aEXAQCA2GFv74IgCIIgCIIgCIIg2GabbXazm93ZZpttttlmd7bZndtsEwRBEARBEARBEARBEARBEARBEARBEARB2Nu771e+P+D3B/m/Fvj/BRlimBFGGWOcCSaZYpoZZpljngUWWWKZFVZZY50NNtlimx122WOfAw454pgTTjnjnAsuueKaG265454HHnnimRdeeeOdDz754psffvlj4K//lX/AIEMMM8IoY4wzwSRTTDPDLHPMs8AiSyyzwiprrLPBJltss8Mue+xzwCFHHHPCKWecc8ElV1xzwy133PPAI08888Irb7zzwSdffPPDL38M/A3/GWSIYUYYZYxxJphkimlmmGWOeRZYZIllVlhljXU22GSLbXbYZY99DjjkiGNOOOWMcy645IprbrjljnseeOSJZ1545Y13Pvjki29++OWPgb/pP4MMMcwIo4wxzgSTTDHNDLPMMc8CiyyxzAqrrLHOBptssc0Ou+yxzwGHHHHMCaeccc4Fl1xxzQ233HHPA4888cwLr7zxzgeffPHND7/8MVDwn0GGGGaEUcYYZ4JJpphmhlnmmGeBRZZYZoVV1lhng0222GaHXfbY54BDjjjmhFPOOOeCS6645oZb7rjngUeeeOaFV95454NPvvjmh1/+GPhb/jPIEMOMMMoY40wwyRTTzDDLHPMssMgSy6ywyhrrbLDJFtvssMse+xxwyBHHnHDKGedccMkV19xwyx33PPDIE8+88Mob73zwyRff/PDLHwN/238GGWKYEUYZY5wJJplimhlmmWOeBRZZYpkVVlljnQ022WKbHXbZY58DDjnimBNOOeOcCy654pobbrnjngceeeKZF155450PPvnimx9++WPg7/jPIEMMM8IoY4wzwSRTTDPDLHPMs8AiSyyzwiprrLPBJltss8Mue+xzwCFHHHPCKWecc8ElV1xzwy133PPAI08888Irb7zzwSdffPPDL38MFP1nkCGGGWGUMcaZYJIppplhljnmWWCRJZZZYZU11tlgky222WGXPfY54JAjjjnhlDPOueCSK6654ZY77nngkSeeeeGVN9754JMvvvnhlz8G/q7/DDLEMCOMMsY4E0wyxTQzzDLHPAssssQyK6yyxjobbLLFNjvsssc+BxxyxDEnnHLGORdccsU1N9xyxz0PPPLEMy+88sY7H3zyxTc//PLHwN/zn0GGGGaEUcYYZ4JJpphmhlnmmGeBRZZYZoVV1lhng0222GaHXfbY54BDjjjmhFPOOOeCS6645oZb7rjngUeeeOaFV95454NPvvjmh1/+GPj7/jPIEMOMMMoY40wwyRTTzDDLHPMssMgSy6ywyhrrbLDJFtvssMse+xxwyBHHnHDKGedccMkV19xwyx33PPDIE8+88Mob73zwyRff/PDLHwMl/xlkiGFGGGWMcSaYZIppZphljnkWWGSJZVZYZY11Nthki2122GWPfQ445IhjTjjljHMuuOSKa2645Y57HnjkiWdeeOWNdz745Itvfvjlj4F/4D+DDDHMCKOMMc4Ek0wxzQyzzDHPAossscwKq6yxzgabbLHNDrvssc8BhxxxzAmnnHHOBZdccc0Nt9xxzwOPPPHMC6+88c4Hn3zxzQ+//DHwh/4zyBDDjDDKGONMMMkU08wwyxzzLLDIEsussMoa62ywyRbb7LDLHvsccMgRx5xwyhnnXHDJFdfccMsd9zzwyBPPvPDKG+988MkX3/zwyx8D/9B/BhlimBFGGWOcCSaZYpoZZpljngUWWWKZFVZZY50NNtlimx122WOfAw454pgTTjnjnAsuueKaG265454HHnnimRdeeeOdDz754psffvljoOw/gwwxzAijjDHOBJNMMc0Ms8wxzwKLLLHMCqussc4Gm2yxzQ677LHPAYccccwJp5xxzgWXXHHNDbfccc8DjzzxzAuvvPHOB5988c0Pv/wx8I/8Z5AhhhlhlDHGmWCSKaaZYZY55llgkSWWWWGVNdbZYJMtttlhlz32OeCQI4454ZQzzrngkiuuueGWO+554JEnnnnhlTfe+eCTL7754Zc/Bv7IfwYZYpgRRhljnAkmmWKaGWaZY54FFllimRVWWWOdDTbZYpsddtljnwMOOeKYE04545wLLrnimhtuueOeBx554pkXXnnjnQ8++eKbH375Y+Af+88gQwwzwihjjDPBJFNMM8Msc8yzwCJLLLPCKmuss8EmW2yzwy577HPAIUccc8IpZ5xzwSVXXHPDLXfc88AjTzzzwitvvPPBJ19888MvfwxU/GeQIYYZYZQxxplgkimmmWGWOeZZYJEllllhlTXW2WCTLbbZYZc99jngkCOOOeGUM8654JIrrrnhljvueeCRJ5554ZU33vngky+++eGXPwb+if8MMsQwI4wyxjgTTDLFNDPMMsc8CyyyxDIrrLLGOhtsssU2O+yyxz4HHHLEMSeccsY5F1xyxTU33HLHPQ888sQzL7zyxjsffPLFNz/88sfAH/vPIEMMM8IoY4wzwSRTTDPDLHPMs8AiSyyzwiprrLPBJltss8Mue+xzwCFHHHPCKWecc8ElV1xzwy133PPAI08888Irb7zzwSdffPPDL38M/In/DDLEMCOMMsY4E0wyxTQzzDLHPAssssQyK6yyxjobbLLFNjvsssc+BxxyxDEnnHLGORdccsU1N9xyxz0PPPLEMy+88sY7H3zyxTc//PLHQNV/BhlimBFGGWOcCSaZYpoZZpljngUWWWKZFVZZY50NNtlimx122WOfAw454pgTTjnjnAsuueKaG265454HHnnimRdeeeOdDz754psffvlj4J/6zyBDDDPCKGOMM8EkU0wzwyxzzLPAIksss8Iqa6yzwSZbbLPDLnvsc8AhRxxzwilnnHPBJVdcc8Mtd9zzwCNPPPPCK2+888EnX3zzwy9/DPwz/xlkiGFGGGWMcSaYZIppZphljnkWWGSJZVZYZY11Nthki2122GWPfQ445IhjTjjljHMuuOSKa2645Y57HnjkiWdeeOWNdz745Itvfvjlj4F/7j+DDDHMCKOMMc4Ek0wxzQyzzDHPAossscwKq6yxzgabbLHNDrvssc8BhxxxzAmnnHHOBZdccc0Nt9xxzwOPPPHMC6+8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/DHw3/xnkCGGGWGUMcaZYJIppplhljnmWWCRJZZZYZU11tlgky222WGXPfY54JAjjjnhlDPOueCSK6654ZY77nngkSeeeeGVN9754JMvvvnhlz8G/rv/DDLEMCOMMsY4E0wyxTQzzDLHPAssssQyK6yyxjobbLLFNjvsssc+BxxyxDEnnHLGORdccsU1N9xyxz0PPPLEMy+88sY7H3zyxTc//PLHQMd/BhlimBFGGWOcCSaZYpoZZpljngUWWWKZFVZZY50NNtlimx122WOfAw454pgTTjnjnAsuueKaG265454HHnnimRdeeeOdDz754psffvlj4H/4zyBDDDPCKGOMM8EkU0wzwyxzzLPAIksss8Iqa6yzwSZbbLPDLnvsc8AhRxxzwilnnHPBJVdcc8Mtd9zzwCNPPPPCK2+888EnX3zzwy9/DPy5/wwyxDAjjDLGOBNMMsU0M8wyxzwLLLLEMiusssY6G2yyxTY77LLHPgcccsQxJ5xyxjkXXHLFNTfccsc9DzzyxDMvvPLGOx988sU3P/zyx8Bf+M8gQwwzwihjjDPBJFNMM8Msc8yzwCJLLLPCKmuss8EmW2yzwy577HPAIUccc8IpZ5xzwSVXXHPDLXfc88AjTzzzwitvvPPBJ19888Mvfwx0/WeQIYYZYZQxxplgkimmmWGWOeZZYJEllllhlTXW2WCTLbbZYZc99jngkCOOOeGUM8654JIrrrnhljvueeCRJ5554ZU33vngky+++eGXPwb+0n8GGWKYEUYZY5wJJplimhlmmWOeBRZZYpkVVlljnQ022WKbHXbZY58DDjnimBNOOeOcCy654pobbrnjngceeeKZF155450PPvnimx9++WPgf/rPIEMMM8IoY4wzwSRTTDPDLHPMs8AiSyyzwiprrLPBJltss8Mue+xzwCFHHHPCKWecc8ElV1xzwy133PPAI08888Irb7zzwSdffPPDL38M/C//GWSIYUYYZYxxJphkimlmmGWOeRZYZIllVlhljXU22GSLbXbYZY99DjjkiGNOOOWMcy645IprbrjljnseeOSJZ1545Y13Pvjki29++OWPgZ7/DDLEMCOMMsY4E0wyxTQzzDLHPAssssQyK6yyxjobbLLFNjvsssc+BxxyxDEnnHLGORdccsU1N9xyxz0PPPLEMy+88sY7H3zyxTc//PLHwP/2n0GGGGaEUcYYZ4JJpphmhlnmmGeBRZZYZoVV1lhng0222GaHXfbY54BDjjjmhFPOOOeCS6645oZb7rjngUeeeOaFV95454NPvvjmh1/+GPg//jPIEMOMMMoY40wwyRTTzDDLHPMssMgSy6ywyhrrbLDJFtvssMse+xxwyBHHnHDKGedccMkV19xwyx33PPDIE8+88Mob73zwyRff/PDLHwP/138GGWKYEUYZY5wJJplimhlmmWOeBRZZYpkVVlljnQ022WKbHXbZY58DDjnimBNOOeOcCy654pobbrnjngceeeKZF155450PPvnimx9++WOg/1f+Py5g+QR4nC3RoRcBAIDYYe/eBUEQBEEQBEEQBEEQBEEQBEEQBEEQBEGwzXa2c5ttttlmN9tss802t9lmd24TBEEQBEEQBEEQBEHY27vvV74/4PeH/T8I/P+CDDHMCKOMMc4Ek0wxzQyzzDHPAossscwKq6yxzgabbLHNDrvssc8BhxxxzAmnnHHOBZdccc0Nt9xxzwOPPPHMC6+88c4Hn3zxzQ+//DHw1/7KP2SQIYYZYZQxxplgkimmmWGWOeZZYJEllllhlTXW2WCTLbbZYZc99jngkCOOOeGUM8654JIrrrnhljvueeCRJ5554ZU33vngky+++eGXPwb+uv8MMsQwI4wyxjgTTDLFNDPMMsc8CyyyxDIrrLLGOhtsssU2O+yyxz4HHHLEMSeccsY5F1xyxTU33HLHPQ888sQzL7zyxjsffPLFNz/88sfA3/CfQYYYZoRRxhhngkmmmGaGWeaYZ4FFllhmhVXWWGeDTbbYZodd9tjngEOOOOaEU84454JLrrjmhlvuuOeBR5545oVX3njng0+++OaHX/4YGPjPIEMMM8IoY4wzwSRTTDPDLHPMs8AiSyyzwiprrLPBJltss8Mue+xzwCFHHHPCKWecc8ElV1xzwy133PPAI08888Irb7zzwSdffPPDL38M/E3/GWSIYUYYZYxxJphkimlmmGWOeRZYZIllVlhljXU22GSLbXbYZY99DjjkiGNOOOWMcy645IprbrjljnseeOSJZ1545Y13Pvjki29++OWPgb/lP4MMMcwIo4wxzgSTTDHNDLPMMc8CiyyxzAqrrLHOBptssc0Ou+yxzwGHHHHMCaeccc4Fl1xxzQ233HHPA4888cwLr7zxzgeffPHND7/8MfBH/jPIEMOMMMoY40wwyRTTzDDLHPMssMgSy6ywyhrrbLDJFtvssMse+xxwyBHHnHDKGedccMkV19xwyx33PPDIE8+88Mob73zwyRff/PDLHwND/xlkiGFGGGWMcSaYZIppZphljnkWWGSJZVZYZY11Nthki2122GWPfQ445IhjTjjljHMuuOSKa2645Y57HnjkiWdeeOWNdz745Itvfvjlj4G/7T+DDDHMCKOMMc4Ek0wxzQyzzDHPAossscwKq6yxzgabbLHNDrvssc8BhxxxzAmnnHHOBZdccc0Nt9xxzwOPPPHMC6+88c4Hn3zxzQ+//DHwd/xnkCGGGWGUMcaZYJIppplhljnmWWCRJZZZYZU11tlgky222WGXPfY54JAjjjnhlDPOueCSK6654ZY77nngkSeeeeGVN9754JMvvvnhlz8G/th/BhlimBFGGWOcCSaZYpoZZpljngUWWWKZFVZZY50NNtlimx122WOfAw454pgTTjnjnAsuueKaG265454HHnnimRdeeeOdDz754psffvljYOQ/gwwxzAijjDHOBJNMMc0Ms8wxzwKLLLHMCqussc4Gm2yxzQ677LHPAYccccwJp5xxzgWXXHHNDbfccc8DjzzxzAuvvPHOB5988c0Pv/wx8Cf+M8gQw4wwyhjjTDDJFNPMMMsc8yywyBLLrLDKGutssMkW2+ywyx77HHDIEceccMoZ51xwyRXX3HDLHfc88MgTz7zwyhvvfPDJF9/88MsfA3/XfwYZYpgRRhljnAkmmWKaGWaZY54FFllimRVWWWOdDTbZYpsddtljnwMOOeKYE04545wLLrnimhtuueOeBx554pkXXnnjnQ8++eKbH375Y+Dv+c8gQwwzwihjjDPBJFNMM8Msc8yzwCJLLLPCKmuss8EmW2yzwy577HPAIUccc8IpZ5xzwSVXXHPDLXfc88AjTzzzwitvvPPBJ19888MvfwyM/WeQIYYZYZQxxplgkimmmWGWOeZZYJEllllhlTXW2WCTLbbZYZc99jngkCOOOeGUM8654JIrrrnhljvueeCRJ5554ZU33vngky+++eGXPwb+vv8MMsQwI4wyxjgTTDLFNDPMMsc8CyyyxDIrrLLGOhtsssU2O+yyxz4HHHLEMSeccsY5F1xyxTU33HLHPQ888sQzL7zyxjsffPLFNz/88sfAP/CfQYYYZoRRxhhngkmmmGaGWeaYZ4FFllhmhVXWWGeDTbbYZodd9tjngEOOOOaEU84454JLrrjmhlvuuOeBR5545oVX3njng0+++OaHX/4Y+If+M8gQw4wwyhjjTDDJFNPMMMsc8yywyBLLrLDKGutssMkW2+ywyx77HHDIEceccMoZ51xwyRXX3HDLHfc88MgTz7zwyhvvfPDJF9/88MsfAxP/GWSIYUYYZYxxJphkimlmmGWOeRZYZIllVlhljXU22GSLbXbYZY99DjjkiGNOOOWMcy645IprbrjljnseeOSJZ1545Y13Pvjki29++OWPgX/kP4MMMcwIo4wxzgSTTDHNDLPMMc8CiyyxzAqrrLHOBptssc0Ou+yxzwGHHHHMCaeccc4Fl1xxzQ233HHPA4888cwLr7zxzgeffPHND7/8MfCP/WeQIYYZYZQxxplgkimmmWGWOeZZYJEllllhlTXW2WCTLbbZYZc99jngkCOOOeGUM8654JIrrrnhljvueeCRJ5554ZU33vngky+++eGXPwb+if8MMsQwI4wyxjgTTDLFNDPMMsc8CyyyxDIrrLLGOhtsssU2O+yyxz4HHHLEMSeccsY5F1xyxTU33HLHPQ888sQzL7zyxjsffPLFNz/88sfA1H8GGWKYEUYZY5wJJplimhlmmWOeBRZZYpkVVlljnQ022WKbHXbZY58DDjnimBNOOeOcCy654pobbrnjngceeeKZF155450PPvnimx9++WPgn/rPIEMMM8IoY4wzwSRTTDPDLHPMs8AiSyyzwiprrLPBJltss8Mue+xzwCFHHHPCKWecc8ElV1xzwy133PPAI08888Irb7zzwSdffPPDL38M/DP/GWSIYUYYZYxxJphkimlmmGWOeRZYZIllVlhljXU22GSLbXbYZY99DjjkiGNOOOWMcy645IprbrjljnseeOSJZ1545Y13Pvjki29++OWPgX/uP4MMMcwIo4wxzgSTTDHNDLPMMc8CiyyxzAqrrLHOBptssc0Ou+yxzwGHHHHMCaeccc4Fl1xxzQ233HHPA4888cwLr7zxzgeffPHND7/8MTDzn0GGGGaEUcYYZ4JJpphmhlnmmGeBRZZYZoVV1lhng0222GaHXfbY54BDjjjmhFPOOOeCS6645oZb7rjngUeeeOaFV95454NPvvjmh1/+GPgX/jPIEMOMMMoY40wwyRTTzDDLHPMssMgSy6ywyhrrbLDJFtvssMse+xxwyBHHnHDKGedccMkV19xwyx33PPDIE8+88Mob73zwyRff/PDLHwN/6j+DDDHMCKOMMc4Ek0wxzQyzzDHPAossscwKq6yxzgabbLHNDrvssc8BhxxxzAmnnHHOBZdccc0Nt9xxzwOPPPHMC6+88c4Hn3zxzQ+//DHwL/1nkCGGGWGUMcaZYJIppplhljnmWWCRJZZZYZU11tlgky222WGXPfY54JAjjjnhlDPOueCSK6654ZY77nngkSeeeeGVN9754JMvvvnhlz8G5v4zyBDDjDDKGONMMMkU08wwyxzzLLDIEsussMoa62ywyRbb7LDLHvsccMgRx5xwyhnnXHDJFdfccMsd9zzwyBPPvPDKG+988MkX3/zwyx8D/8p/BhlimBFGGWOcCSaZYpoZZpljngUWWWKZFVZZY50NNtlimx122WOfAw454pgTTjnjnAsuueKaG265454HHnnimRdeeeOdDz754psffvlj4F/7zyBDDDPCKGOMM8EkU0wzwyxzzLPAIksss8Iqa6yzwSZbbLPDLnvsc8AhRxxzwilnnHPBJVdcc8Mtd9zzwCNPPPPCK2+888EnX3zzwy9/DPwb/xlkiGFGGGWMcSaYZIppZphljnkWWGSJZVZYZY11Nthki2122GWPfQ445IhjTjjljHMuuOSKa2645Y57HnjkiWdeeOWNdz745Itvfvjlj4GF/wwyxDAjjDLGOBNMMsU0M8wyxzwLLLLEMiusssY6G2yyxTY77LLHPgcccsQxJ5xyxjkXXHLFNTfccsc9DzzyxDMvvPLGOx988sU3P/zyx8C/9Z9BhhhmhFHGGGeCSaaYZoZZ5phngUWWWGaFVdZYZ4NNtthmh1322OeAQ4445oRTzjjngkuuuOaGW+6454FHnnjmhVfeeOeDT7745odf/hj4d/4zyBDDjDDKGONMMMkU08wwyxzzLLDIEsussMoa62ywyRbb7LDLHvsccMgRx5xwyhnnXHDJFdfccMsd9zzwyBPPvPDKG+988MkX3/zwyx8D/95/BhlimBFGGWOcCSaZYpoZZpljngUWWWKZFVZZY50NNtlimx122WOfAw454pgTTjnjnAsuueKaG265454HHnnimRdeeeOdDz754psffvljYOk/gwwxzAijjDHOBJNMMc0Ms8wxzwKLLLHMCqussc4Gm2yxzQ677LHPAYccccwJp5xxzgWXXHHNDbfccc8DjzzxzAuvvPHOB5988c0Pv/wx8B/8Z5AhhhlhlDHGmWCSKaaZYZY55llgkSWWWWGVNdbZYJMtttlhlz32OeCQI4454ZQzzrngkiuuueGWO+554JEnnnnhlTfe+eCTL7754Zc/Bv6j/wwyxDAjjDLGOBNMMsU0M8wyxzwLLLLEMiusssY6G2yyxTY77LLHPgcccsQxJ5xyxjkXXHLFNTfccsc9DzzyxDMvvPLGOx988sU3P/zyx8B/8p9BhhhmhFHGGGeCSaaYZoZZ5phngUWWWGaFVdZYZ4NNtthmh1322OeAQ4445oRTzjjngkuuuOaGW+6454FHnnjmhVfeeOeDT7745odf/hhY+c8gQwwzwihjjDPBJFNMM8Msc8yzwCJLLLPCKmuss8EmW2yzwy577HPAIUccc8IpZ5xzwSVXXHPDLXfc88AjTzzzwitvvPPBJ19888Mvfwz8Z/8ZZIhhRhhljHEmmGSKaWaYZY55FlhkiWVWWGWNdTbYZIttdthlj30OOOSIY0445YxzLrjkimtuuOWOex545IlnXnjljXc++OSLb3745Y+B/+I/gwwxzAijjDHOBJNMMc0Ms8wxzwKLLLHMCqussc4Gm2yxzQ677LHPAYccccwJp5xxzgWXXHHNDbfccc8DjzzxzAuvvPHOB5988c0Pv/wx8F/9Z5AhhhlhlDHGmWCSKaaZYZY55llgkSWWWWGVNdbZYJMtttlhlz32OeCQI4454ZQzzrngkiuuueGWO+554JEnnnnhlTfe+eCTL7754Zc/Btb+M8gQw4wwyhjjTDDJFNPMMMsc8yywyBLLrLDKGutssMkW2+ywyx77HHDIEceccMoZ51xwyRXX3HDLHfc88MgTz7zwyhvvfPDJF9/88MsfA3/mP4MMMcwIo4wxzgSTTDHNDLPMMc8CiyyxzAqrrLHOBptssc0Ou+yxzwGHHHHMCaeccc4Fl1xxzQ233HHPA4888cwLr7zxzgeffPHND7/8MfDf/GeQIYYZYZQxxplgkimmmWGWOeZZYJEllllhlTXW2WCTLbbZYZc99jngkCOOOeGUM8654JIrrrnhljvueeCRJ5554ZU33vngky+++eGXPwb+u/8MMsQwI4wyxjgTTDLFNDPMMsc8CyyyxDIrrLLGOhtsssU2O+yyxz4HHHLEMSeccsY5F1xyxTU33HLHPQ888sQzL7zyxjsffPLFNz/88sfAxn8GGWKYEUYZY5wJJplimhlmmWOeBRZZYpkVVlljnQ022WKbHXbZY58DDjnimBNOOeOcCy654pobbrnjngceeeKZF155450PPvnimx9++WPgf/jPIEMMM8IoY4wzwSRTTDPDLHPMs8AiSyyzwiprrLPBJltss8Mue+xzwCFHHHPCKWecc8ElV1xzwy133PPAI08888Irb7zzwSdffPPDL38M/E//GWSIYUYYZYxxJphkimlmmGWOeRZYZIllVlhljXU22GSLbXbYZY99DjjkiGNOOOWMcy645IprbrjljnseeOSJZ1545Y13Pvjki29++OWPgf/lP4MMMcwIo4wxzgSTTDHNDLPMMc8CiyyxzAqrrLHOBptssc0Ou+yxzwGHHHHMCaeccc4Fl1xxzQ233HHPA4888cwLr7zxzgeffPHND7/8MbD1n0GGGGaEUcYYZ4JJpphmhlnmmGeBRZZYZoVV1lhng0222GaHXfbY54BDjjjmhFPOOOeCS6645oZb7rjngUeeeOaFV95454NPvvjmh1/+GPjf/jPIEMOMMMoY40wwyRTTzDDLHPMssMgSy6ywyhrrbLDJFtvssMse+xxwyBHHnHDKGedccMkV19xwyx33PPDIE8+88Mob73zwyRff/PDLHwN/7j+DDDHMCKOMMc4Ek0wxzQyzzDHPAossscwKq6yxzgabbLHNDrvssc8BhxxxzAmnnHHOBZdccc0Nt9xxzwOPPPHMC6+88c4Hn3zxzQ+//DHwF/4zyBDDjDDKGONMMMkU08wwyxzzLLDIEsussMoa62ywyRbb7LDLHvsccMgRx5xwyhnnXHDJFdfccMsd9zzwyBPPvPDKG+988MkX3/zwyx8DO/8ZZIhhRhhljHEmmGSKaWaYZY55FlhkiWVWWGWNdTbYZIttdthlj30OOOSIY0445YxzLrjkimtuuOWOex545IlnXnjljXc++OSLb3745Y+Bv/SfQYYYZoRRxhhngkmmmGaGWeaYZ4FFllhmhVXWWGeDTbbYZodd9tjngEOOOOaEU84454JLrrjmhlvuuOeBR5545oVX3njng0+++OaHX/4Y+D/+M8gQw4wwyhjjTDDJFNPMMMsc8yywyBLLrLDKGutssMkW2+ywyx77HHDIEceccMoZ51xwyRXX3HDLHfc88MgTz7zwyhvvfPDJF9/88MsfA//XfwYZYpgRRhljnAkmmWKaGWaZY54FFllimRVWWWOdDTbZYpsddtljnwMOOeKYE04545wLLrnimhtuueOeBx554pkXXnnjnQ8++eKbH375Y2D/V/4/L/X5QHicLdGvHwEAgN5hn9sFQRAEQRAEQRAEQRAEQRAEQRAEQRAEQRAEQRAEQRAEQRAEQbDNNtvczTbbbLPNNtu5zW22c5tt9uOz7XnD+/wB3z/c/0Hg/y7IEMOMMMoY40wwyRTTzDDLHPMssMgSy6ywyhrrbLDJFtvssMse+xxwyBHHnHDKGedccMkV19xwyx33PPDIE8+88Mob73zwyRff/PDLHwN/+f/7hwwyxDAjjDLGOBNMMsU0M8wyxzwLLLLEMiusssY6G2yyxTY77LLHPgcccsQxJ5xyxjkXXHLFNTfccsc9DzzyxDMvvPLGOx988sU3P/zyx8Bf0Z9BhhhmhFHGGGeCSaaYZoZZ5phngUWWWGaFVdZYZ4NNtthmh1322OeAQ4445oRTzjjngkuuuOaGW+6454FHnnjmhVfeeOeDT7745odf/hj4q/ozyBDDjDDKGONMMMkU08wwyxzzLLDIEsussMoa62ywyRbb7LDLHvsccMgRx5xwyhnnXHDJFdfccMsd9zzwyBPPvPDKG+988MkX3/zwyx8DB/0ZZIhhRhhljHEmmGSKaWaYZY55FlhkiWVWWGWNdTbYZIttdthlj30OOOSIY0445YxzLrjkimtuuOWOex545IlnXnjljXc++OSLb3745Y+Bv6Y/gwwxzAijjDHOBJNMMc0Ms8wxzwKLLLHMCqussc4Gm2yxzQ677LHPAYccccwJp5xxzgWXXHHNDbfccc8DjzzxzAuvvPHOB5988c0Pv/wx8Nf1Z5AhhhlhlDHGmWCSKaaZYZY55llgkSWWWWGVNdbZYJMtttlhlz32OeCQI4454ZQzzrngkiuuueGWO+554JEnnnnhlTfe+eCTL7754Zc/Bv6G/gwyxDAjjDLGOBNMMsU0M8wyxzwLLLLEMiusssY6G2yyxTY77LLHPgcccsQxJ5xyxjkXXHLFNTfccsc9DzzyxDMvvPLGOx988sU3P/zyx8BRfwYZYpgRRhljnAkmmWKaGWaZY54FFllimRVWWWOdDTbZYpsddtljnwMOOeKYE04545wLLrnimhtuueOeBx554pkXXnnjnQ8++eKbH375Y+Bv6s8gQwwzwihjjDPBJFNMM8Msc8yzwCJLLLPCKmuss8EmW2yzwy577HPAIUccc8IpZ5xzwSVXXHPDLXfc88AjTzzzwitvvPPBJ19888Mvfwz8Lf0ZZIhhRhhljHEmmGSKaWaYZY55FlhkiWVWWGWNdTbYZIttdthlj30OOOSIY0445YxzLrjkimtuuOWOex545IlnXnjljXc++OSLb3745Y+Bv60/gwwxzAijjDHOBJNMMc0Ms8wxzwKLLLHMCqussc4Gm2yxzQ677LHPAYccccwJp5xxzgWXXHHNDbfccc8DjzzxzAuvvPHOB5988c0Pv/wxcNKfQYYYZoRRxhhngkmmmGaGWeaYZ4FFllhmhVXWWGeDTbbYZodd9tjngEOOOOaEU84454JLrrjmhlvuuOeBR5545oVX3njng0+++OaHX/4Y+CP9GWSIYUYYZYxxJphkimlmmGWOeRZYZIllVlhljXU22GSLbXbYZY99DjjkiGNOOOWMcy645IprbrjljnseeOSJZ1545Y13Pvjki29++OWPgT/Wn0GGGGaEUcYYZ4JJpphmhlnmmGeBRZZYZoVV1lhng0222GaHXfbY54BDjjjmhFPOOOeCS6645oZb7rjngUeeeOaFV95454NPvvjmh1/+GPg7+jPIEMOMMMoY40wwyRTTzDDLHPMssMgSy6ywyhrrbLDJFtvssMse+xxwyBHHnHDKGedccMkV19xwyx33PPDIE8+88Mob73zwyRff/PDLHwNn/RlkiGFGGGWMcSaYZIppZphljnkWWGSJZVZYZY11Nthki2122GWPfQ445IhjTjjljHMuuOSKa2645Y57HnjkiWdeeOWNdz745Itvfvjlj4G/qz+DDDHMCKOMMc4Ek0wxzQyzzDHPAossscwKq6yxzgabbLHNDrvssc8BhxxxzAmnnHHOBZdccc0Nt9xxzwOPPPHMC6+88c4Hn3zxzQ+//DHw9/RnkCGGGWGUMcaZYJIppplhljnmWWCRJZZZYZU11tlgky222WGXPfY54JAjjjnhlDPOueCSK6654ZY77nngkSeeeeGVN9754JMvvvnhlz8G/r7+DDLEMCOMMsY4E0wyxTQzzDLHPAssssQyK6yyxjobbLLFNjvsssc+BxxyxDEnnHLGORdccsU1N9xyxz0PPPLEMy+88sY7H3zyxTc//PLHwEV/BhlimBFGGWOcCSaZYpoZZpljngUWWWKZFVZZY50NNtlimx122WOfAw454pgTTjnjnAsuueKaG265454HHnnimRdeeeOdDz754psffvlj4B/ozyBDDDPCKGOMM8EkU0wzwyxzzLPAIksss8Iqa6yzwSZbbLPDLnvsc8AhRxxzwilnnHPBJVdcc8Mtd9zzwCNPPPPCK2+888EnX3zzwy9/DPxD/RlkiGFGGGWMcSaYZIppZphljnkWWGSJZVZYZY11Nthki2122GWPfQ445IhjTjjljHMuuOSKa2645Y57HnjkiWdeeOWNdz745Itvfvjlj4F/pD+DDDHMCKOMMc4Ek0wxzQyzzDHPAossscwKq6yxzgabbLHNDrvssc8BhxxxzAmnnHHOBZdccc0Nt9xxzwOPPPHMC6+88c4Hn3zxzQ+//DFw1Z9BhhhmhFHGGGeCSaaYZoZZ5phngUWWWGaFVdZYZ4NNtthmh1322OeAQ4445oRTzjjngkuuuOaGW+6454FHnnjmhVfeeOeDT7745odf/hj4x/ozyBDDjDDKGONMMMkU08wwyxzzLLDIEsussMoa62ywyRbb7LDLHvsccMgRx5xwyhnnXHDJFdfccMsd9zzwyBPPvPDKG+988MkX3/zwyx8D/0R/BhlimBFGGWOcCSaZYpoZZpljngUWWWKZFVZZY50NNtlimx122WOfAw454pgTTjnjnAsuueKaG265454HHnnimRdeeeOdDz754psffvlj4J/qzyBDDDPCKGOMM8EkU0wzwyxzzLPAIksss8Iqa6yzwSZbbLPDLnvsc8AhRxxzwilnnHPBJVdcc8Mtd9zzwCNPPPPCK2+888EnX3zzwy9/DNz0Z5AhhhlhlDHGmWCSKaaZYZY55llgkSWWWWGVNdbZYJMtttlhlz32OeCQI4454ZQzzrngkiuuueGWO+554JEnnnnhlTfe+eCTL7754Zc/Bv6Z/gwyxDAjjDLGOBNMMsU0M8wyxzwLLLLEMiusssY6G2yyxTY77LLHPgcccsQxJ5xyxjkXXHLFNTfccsc9DzzyxDMvvPLGOx988sU3P/zyx8A/159BhhhmhFHGGGeCSaaYZoZZ5phngUWWWGaFVdZYZ4NNtthmh1322OeAQ4445oRTzjjngkuuuOaGW+6454FHnnjmhVfeeOeDT7745odf/hj4F/ozyBDDjDDKGONMMMkU08wwyxzzLLDIEsussMoa62ywyRbb7LDLHvsccMgRx5xwyhnnXHDJFdfccMsd9zzwyBPPvPDKG+988MkX3/zwyx8Dd/0ZZIhhRhhljHEmmGSKaWaYZY55FlhkiWVWWGWNdTbYZIttdthlj30OOOSIY0445YxzLrjkimtuuOWOex545IlnXnjljXc++OSLb3745Y+Bf6k/gwwxzAijjDHOBJNMMc0Ms8wxzwKLLLHMCqussc4Gm2yxzQ677LHPAYccccwJp5xxzgWXXHHNDbfccc8DjzzxzAuvvPHOB5988c0Pv/wx8K/0Z5AhhhlhlDHGmWCSKaaZYZY55llgkSWWWWGVNdbZYJMtttlhlz32OeCQI4454ZQzzrngkiuuueGWO+554JEnnnnhlTfe+eCTL7754Zc/Bv61/gwyxDAjjDLGOBNMMsU0M8wyxzwLLLLEMiusssY6G2yyxTY77LLHPgcccsQxJ5xyxjkXXHLFNTfccsc9DzzyxDMvvPLGOx988sU3P/zyx8BDfwYZYpgRRhljnAkmmWKaGWaZY54FFllimRVWWWOdDTbZYpsddtljnwMOOeKYE04545wLLrnimhtuueOeBx554pkXXnnjnQ8++eKbH375Y+Df6M8gQwwzwihjjDPBJFNMM8Msc8yzwCJLLLPCKmuss8EmW2yzwy577HPAIUccc8IpZ5xzwSVXXHPDLXfc88AjTzzzwitvvPPBJ19888Mvfwz8W/0ZZIhhRhhljHEmmGSKaWaYZY55FlhkiWVWWGWNdTbYZIttdthlj30OOOSIY0445YxzLrjkimtuuOWOex545IlnXnjljXc++OSLb3745Y+BP9GfQYYYZoRRxhhngkmmmGaGWeaYZ4FFllhmhVXWWGeDTbbYZodd9tjngEOOOOaEU84454JLrrjmhlvuuOeBR5545oVX3njng0+++OaHX/4YeOrPIEMMM8IoY4wzwSRTTDPDLHPMs8AiSyyzwiprrLPBJltss8Mue+xzwCFHHHPCKWecc8ElV1xzwy133PPAI08888Irb7zzwSdffPPDL38M/Kn+DDLEMCOMMsY4E0wyxTQzzDLHPAssssQyK6yyxjobbLLFNjvsssc+BxxyxDEnnHLGORdccsU1N9xyxz0PPPLEMy+88sY7H3zyxTc//PLHwL/Tn0GGGGaEUcYYZ4JJpphmhlnmmGeBRZZYZoVV1lhng0222GaHXfbY54BDjjjmhFPOOOeCS6645oZb7rjngUeeeOaFV95454NPvvjmh1/+GPj3+jPIEMOMMMoY40wwyRTTzDDLHPMssMgSy6ywyhrrbLDJFtvssMse+xxwyBHHnHDKGedccMkV19xwyx33PPDIE8+88Mob73zwyRff/PDLHwMv/RlkiGFGGGWMcSaYZIppZphljnkWWGSJZVZYZY11Nthki2122GWPfQ445IhjTjjljHMuuOSKa2645Y57HnjkiWdeeOWNdz745Itvfvjlj4E/059BhhhmhFHGGGeCSaaYZoZZ5phngUWWWGaFVdZYZ4NNtthmh1322OeAQ4445oRTzjjngkuuuOaGW+6454FHnnjmhVfeeOeDT7745odf/hj4D/ozyBDDjDDKGONMMMkU08wwyxzzLLDIEsussMoa62ywyRbb7LDLHvsccMgRx5xwyhnnXHDJFdfccMsd9zzwyBPPvPDKG+988MkX3/zwyx8D/1F/BhlimBFGGWOcCSaZYpoZZpljngUWWWKZFVZZY50NNtlimx122WOfAw454pgTTjnjnAsuueKaG265454HHnnimRdeeeOdDz754psffvlj4K0/gwwxzAijjDHOBJNMMc0Ms8wxzwKLLLHMCqussc4Gm2yxzQ677LHPAYccccwJp5xxzgWXXHHNDbfccc8DjzzxzAuvvPHOB5988c0Pv/wx8J/0Z5AhhhlhlDHGmWCSKaaZYZY55llgkSWWWWGVNdbZYJMtttlhlz32OeCQI4454ZQzzrngkiuuueGWO+554JEnnnnhlTfe+eCTL7754Zc/Bv6z/gwyxDAjjDLGOBNMMsU0M8wyxzwLLLLEMiusssY6G2yyxTY77LLHPgcccsQxJ5xyxjkXXHLFNTfccsc9DzzyxDMvvPLGOx988sU3P/zyx8Cf688gQwwzwihjjDPBJFNMM8Msc8yzwCJLLLPCKmuss8EmW2yzwy577HPAIUccc8IpZ5xzwSVXXHPDLXfc88AjTzzzwitvvPPBJ19888Mvfwx89GeQIYYZYZQxxplgkimmmWGWOeZZYJEllllhlTXW2WCTLbbZYZc99jngkCOOOeGUM8654JIrrrnhljvueeCRJ5554ZU33vngky+++eGXPwb+Qn8GGWKYEUYZY5wJJplimhlmmWOeBRZZYpkVVlljnQ022WKbHXbZY58DDjnimBNOOeOcCy654pobbrnjngceeeKZF155450PPvnimx9++WPgv+jPIEMMM8IoY4wzwSRTTDPDLHPMs8AiSyyzwiprrLPBJltss8Mue+xzwCFHHHPCKWecc8ElV1xzwy133PPAI08888Irb7zzwSdffPPDL38M/Ff9GWSIYUYYZYxxJphkimlmmGWOeRZYZIllVlhljXU22GSLbXbYZY99DjjkiGNOOOWMcy645IprbrjljnseeOSJZ1545Y13Pvjki29++OWPga/+DDLEMCOMMsY4E0wyxTQzzDLHPAssssQyK6yyxjobbLLFNjvsssc+BxxyxDEnnHLGORdccsU1N9xyxz0PPPLEMy+88sY7H3zyxTc//PLHwH/Tn0GGGGaEUcYYZ4JJpphmhlnmmGeBRZZYZoVV1lhng0222GaHXfbY54BDjjjmhFPOOOeCS6645oZb7rjngUeeeOaFV95454NPvvjmh1/+GPjv+jPIEMOMMMoY40wwyRTTzDDLHPMssMgSy6ywyhrrbLDJFtvssMse+xxwyBHHnHDKGedccMkV19xwyx33PPDIE8+88Mob73zwyRff/PDLHwP/Q38GGWKYEUYZY5wJJplimhlmmWOeBRZZYpkVVlljnQ022WKbHXbZY58DDjnimBNOOeOcCy654pobbrnjngceeeKZF155450PPvnimx9++WPgpz+DDDHMCKOMMc4Ek0wxzQyzzDHPAossscwKq6yxzgabbLHNDrvssc8BhxxxzAmnnHHOBZdccc0Nt9xxzwOPPPHMC6+88c4Hn3zxzQ+//DHwP/VnkCGGGWGUMcaZYJIppplhljnmWWCRJZZZYZU11tlgky222WGXPfY54JAjjjnhlDPOueCSK6654ZY77nngkSeeeeGVN9754JMvvvnhlz8G/pf+DDLEMCOMMsY4E0wyxTQzzDLHPAssssQyK6yyxjobbLLFNjvsssc+BxxyxDEnnHLGORdccsU1N9xyxz0PPPLEMy+88sY7H3zyxTc//PLHwP/Wn0GGGGaEUcYYZ4JJpphmhlnmmGeBRZZYZoVV1lhn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nQ022WKbHXbZY58DDjnimBNOOeOcCy654pobbrnjngceeeKZF155450PPvnimx9++WPg3/RnkCGGGWGUMcaZYJIppplhljnmWWCRJZZZYZU11tlgky222WGXPfY54JAjjjnhlDPOueCSK6654ZY77nngkSeeeeGVN9754JMvvvnhlz8G/l1/BhlimBFGGWOcCSaZYpoZZpljngUWWWKZFVZZY50NNtlimx122WOfAw454pgTTjnjnAsuueKaG265454HHnnimRdeeeOdDz754psffvlj4D/0Z5AhhhlhlDHGmWCSKaaZYZY55llgkSWWWWGVNdbZYJMtttlhlz32OeCQI4454ZQzzrngkiuuueGWO+554JEnnnnhlTfe+eCTL7754Zc/BqL6M8gQw4wwyhjjTDDJFNPMMMsc8yywyBLLrLDKGutssMkW2+ywyx77HHDIEceccMoZ51xwyRXX3HDLHfc88MgTz7zwyhvvfPDJF9/88MsfA/+pP4MMMcwIo4wxzgSTTDHNDLPMMc8CiyyxzAqrrLHOBptssc0Ou+yxzwGHHHHMCaeccc4Fl1xxzQ233HHPA4888cwLr7zxzgeffPHND7/8MfBf+jPIEMOMMMoY40wwyRTTzDDLHPMssMgSy6ywyhrrbLDJFtvssMse+xxwyBHHnHDKGedccMkV19xwyx33PPDIE8+88Mob73zwyRff/PDLHwP/rT+DDDHMCKOMMc4Ek0wxzQyzzDHPAossscwKq6yxzgabbLHNDrvssc8BhxxxzAmnnHHOBZdccc0Nt9xxzwOPPPHMC6+88c4Hn3zxzQ+//DEQ059BhhhmhFHGGGeCSaaYZoZZ5phngUWWWGaFVdZYZ4NNtthmh1322OeAQ4445oRTzjjngkuuuOaGW+6454FHnnjmhVfeeOeDT7745odf/hj4H/0ZZIhhRhhljHEmmGSKaWaYZY55FlhkiWVWWGWNdTbYZIttdthlj30OOOSIY0445YxzLrjkimv+L/DvIhI=AgAAAACAAABsRwAANQAAACkAAAA=eJztwSEBAAAAgKDu/8EeAQoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGME7AEx4nO3BMQ0AAADDoL/+Bc/HAhQAAAAAAAAAAAAAAAAAAAAAAHwb7zDKVw== + + diff --git a/inputFiles/singlePhaseFlow/synthetic/synthetic_2_0.vtu b/inputFiles/singlePhaseFlow/synthetic/synthetic_2_0.vtu new file mode 100644 index 00000000000..d6b77b62910 --- /dev/null +++ b/inputFiles/singlePhaseFlow/synthetic/synthetic_2_0.vtu @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + _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cc8DjzzxzAuvvPHOB5988c3Pn4HOv/9LgEGGGGaEUcYY5zcTTDLFNDPMMsc8CyyyxDIrrLLGOhtsssU2O+yyxz5/OOCQI4454ZQzzrngkiuuueGWO+554JEnnnnhlTfe+eCTL7754dc/+CXAIEMMM8IoY4zzmwkmmWKaGWaZY54FFllimRVWWWOdDTbZYpsddtljnz8ccMgRx5xwyhnnXHDJFdfccMsd9zzwyBPPvPDKG+988MkX3/zw6//7JcAgQwwzwihjjPObCSaZYpoZZpljngUWWWKZFVZZY50NNtlimx122WOfPxxwyBHHnHDKGedccMkV19xwyx33PPDIE8+88Mob73zwyRff/PDPQH+AQYYYZoRRxhjnNxNMMsU0M8wyxzwLLLLEMiusssY6G2yyxTY77LLHPn844JAjjjnhlDPOueCSK6654ZY77nngkSeeeeGVN9754JMvvvn5s8jxD38JMMgQw4wwyhjj/GaCSaaYZoZZ5phngUWWWGaFVdZYZ4NNtthmh1322OcPBxxyxDEnnHLGORdccsU1N9xyxz0PPPLEMy+88sY7H3zyxTc//PpHvwQYZIhhRhhljHF+M8EkU0wzwyxzzLPAIksss8Iqa6yzwSZbbLPDLnvs84cDDjnimBNOOeOcCy654pobbrnjngceeeKZF155450PPvnimx9+/eNfAgwyxDAjjDLGOL+ZYJIppplhljnmWWCRJZZZYZU11tlgky222WGXPfb5wwGHHHHMCaeccc4Fl1xxzQ233HHPA4888cwLr7zxzgeffPHND/8s8gUYZIhhRhhljHF+M8EkU0wzwyxzzLPAIksss8Iqa6yzwSZbbLPDLnvs84cDDjnimBNOOeOcCy654pobbrnjngceeeKZF155450PPvnim58/C5z/5JcAgwwxzAijjDHObyaYZIppZphljnkWWGSJZVZYZY11Nthki2122GWPff5wwCFHHHPCKWecc8ElV1xzwy133PPAI08888Irb7zzwSdffPPDr3/6S4BBhhhmhFHGGOc3E0wyxTQzzDLHPAssssQyK6yyxjobbLLFNjvsssc+fzjgkCOOOeGUM8654JIrrrnhljvueeCRJ5554ZU33vngky+++eHXP/slwCBDDDPCKGOM85sJJplimhlmmWOeBRZZYpkVVlljnQ022WKbHXbZY58/HHDIEceccMoZ51xwyRXX3HDLHfc88MgTz7zwyhvvfPDJF9/88M8Cf4BBhhhmhFHGGOc3E0wyxTQzzDLHPAssssQyK6yyxjobbLLFNjvsssc+fzjgkCOOOeGUM8654JIrrrnhljvueeCRJ5554ZU33vngky+++eHXP/8lwCBDDDPCKGOM85sJJplimhlmmWOeBRZZYpkVVlljnQ022WKbHXbZY58/HHDIEceccMoZ51xwyRXX3HDLHfc88MgTz7zwyhvvfPDJF9/88Otf/BJgkCGGGWGUMcb5zQSTTDHNDLPMMc8CiyyxzAqrrLHOBptssc0Ou+yxzx8OOOSIY0445YxzLrjkimtuuOWOex545IlnXnjljXc++OSLb3749S9/CTDIEMOMMMoY4/xmgkmmmGaGWeaYZ4FFllhmhVXWWGeDTbbYZodd9tjnDwcccsQxJ5xyxjkXXHLFNTfccsc9DzzyxDMvvPLGOx988sU3P/wT3BNgkCGGGWGUMcb5zQSTTDHNDLPMMc8CiyyxzAqrrLHOBptssc0Ou+yxzx8OOOSIY0445YxzLrjkimtuuOWOex545IlnXnjljXc++OSLb3749a9+CTDIEMOMMMoY4/xmgkmmmGaGWeaYZ4FFllhmhVXWWGeDTbbYZodd9tjnDwcccsQxJ5xyxjkXXHLFNTfccsc9DzzyxDMvvPLGOx988sU3P/z6178EGGSIYUYYZYxxfjPBJFNMM8Msc8yzwCJLLLPCKmuss8EmW2yzwy577POHAw454pgTTjnjnAsuueKaG265454HHnnimRdeeeOdDz754psffv2bXwIMMsQwI4wyxji/mWCSKaaZYZY55llgkSWWWWGVNdbZYJMtttlhlz32+cMBhxxxzAmnnHHOBZdccc0Nt9xxzwOPPPHMC6+88c4Hn3zxzQ//BPYFGGSIYUYYZYxxfjPBJFNMM8Msc8yzwCJLLLPCKmuss8EmW2yzwy577POHAw454pgTTjnjnAsuueKaG265454HHnnimRdeeeOdDz754psffv3bXwIMMsQwI4wyxji/mWCSKaaZYZY55llgkSWWWWGVNdbZYJMtttlhlz32+cMBhxxxzAmnnHHOBZdccc0Nt9xxzwOPPPHMC6+88c4Hn3zxzQ+//t0vAQYZYpgRRhljnN9MMMkU08wwyxzzLLDIEsussMoa62ywyRbb7LDLHvv84YBDjjjmhFPOOOeCS6645oZb7rjngUeeeOaFV95454NPvvjmh1///pcAgwwxzAijjDHObyaYZIppZphljnkWWGSJZVZYZY11Nthki2122GWPff5wwCFHHHPCKWecc8ElV1xzwy133PPAI08888Irb7zzwSdffPPDP0G9AQYZYpgRRhljnN9MMMkU08wwyxzzLLDIEsussMoa62ywyRbb7LDLHvv84YBDjjjmhFPOOOeCS6645oZb7rjngUeeeOaFV95454NPvvjmh1//4ZcAgwwxzAijjDHObyaYZIppZphljnkWWGSJZVZYZY11Nthki2122GWPff5wwCFHHHPCKWecc8ElV1xzwy133PPAI08888Irb7zzwSdffPPDr//4S4BBhhhmhFHGGOc3E0wyxTQzzDLHPAssssQyK6yyxjobbLLFNjvsssc+fzjgkCOOOeGUM8654JIrrrnhljvueeCRJ5554ZU33vngky+++eHXf/olwCBDDDPCKGOM85sJJplimhlmmWOeBRZZYpkVVlljnQ022WKbHXbZY58/HHDIEceccMoZ51xwyRXX3HDLHfc88MgTz7zwyhvvfPDJF9/88E9Af4BBhhhmhFHGGOc3E0wyxTQzzDLHPAssssQyK6yyxjobbLLFNjvsssc+fzjgkCOOOeGUM8654JIrrrnhljvueeCRJ5554ZU33vngky+++eHX//9LgEGGGGaEUcYY5zcTTDLFNDPMMsc8CyyyxDIrrLLGOhtsssU2O+yyxz5/OOCQI4454ZQzzrngkiuuueGWO+554JEnnnnhlTfe+eCTL7754dd//iXAIEMMM8IoY4zzmwkmmWKaGWaZY54FFllimRVWWWOdDTbZYpsddtljnz8ccMgRx5xwyhnnXHDJFdfccMsd9zzwyBPPvPDKG+988MkX3/zw67/8EmCQIYYZYZQxxvnNBJNMMc0Ms8wxzwKLLLHMCqussc4Gm2yxzQ677LHPHw445IhjTjjljHMuuOSKa2645Y57HnjkiWdeeOWNdz745ItvfvjnME+AQYYYZoRRxhjnNxNMMsU0M8wyxzwLLLLEMiusssY6G2yyxTY77LLHPn844JAjjjnhlDPOueCSK6654ZY77nngkSeeeeGVN9754JMvvvnh13/9JcAgQwwzwihjjPObCSaZYpoZZpljngUWWWKZFVZZY50NNtlimx122WOfPxxwyBHHnHDKGedccMkV19xwyx33PPDIE8+88Mob73zwyRff/PDrv/0SYJAhhhlhlDHG+c0Ek0wxzQyzzDHPAossscwKq6yxzgabbLHNDrvssc8fDjjkiGNOOOWMcy645IprbrjljnseeOSJZ1545Y13Pvjki29++PXffwkwyBDDjDDKGOP8ZoJJpphmhlnmmGeBRZZYZoVV1lhng0222GaHXfbY5w8HHHLEMSeccsY5F1xyxTU33HLHPQ888sQzL7zyxjsffPLFNz/8c5AvwCBDDDPCKGOM85sJJplimhlmmWOeBRZZYpkVVlljnQ022WKbHXbZY58/HHDIEceccMoZ51xwyRXX3HDLHfc88MgTz7zwyhvvfPDJF9/88Ot//BJgkCGGGWGUMcb5zQSTTDHNDLPMMc8CiyyxzAqrrLHOBptssc0Ou+yxzx8OOOSIY0445YxzLrjkimtuuOWOex545IlnXnjljXc++OSLb3749T9/CTDIEMOMMMoY4/xmgkmmmGaGWeaYZ4FFllhmhVXWWGeDTbbYZodd9tjnDwcccsQxJ5xyxjkXXHLFNTfccsc9DzzyxDMvvPLGOx988sU3P/z6X78EGGSIYUYYZYxxfjPBJFNMM8Msc8yzwCJLLLPCKmuss8EmW2yzwy577POHAw454pgTTjnjnAsuueKaG265454HHnnimRdeeeOdDz754psf/jnEG2CQIYYZYZQxxvnNBJNMMc0Ms8wxzwKLLLHMCqussc4Gm2yxzQ677LHPHw445IhjTjjljHMuuOSKa2645Y57HnjkiWdeeOWNdz745Itvfvj1v38JMMgQw4wwyhjj/GaCSaaYZoZZ5phngUWWWGaFVdZYZ4NNtthmh1322OcPBxxyxDEnnHLGORdccsU1N9xyxz0PPPLEMy+88sY7H3zyxTc//Po/vwQYZIhhRhhljHF+M8EkU0wzwyxzzLPAIksss8Iqa6yzwSZbbLPDLnvs84cDDjnimBNOOeOcCy654pobbrnjngceeeKZF155450PPvnimx9+/d9fAgwyxDAjjDLGOL+ZYJIppplhljnmWWCRJZZZYZU11tlgky222WGXPfb5wwGHHHHMCaeccc4Fl1xxzQ233HHPA4888cwLr7zxzgeffPHND79yv/w/dLzYyHicLcUhuAEAACBmQRAEQRAEQRAEQRAEd7OdbbbZZnd2ZzvbbLPNNtvczW7uThCEFwRBEARBEARBEARBEF4QBEEQBEEQhBf2ffP/5Q8WAv+/kMOOOOqY40446ZTTzjjrnPMuuOiSy6646prrbrjpltvuuOue+x546JF/PPbEU88898JLr7z2xlvvvPfBR5/867Mvvvrmux9++uW3P/5z4B98CzrksCOOOua4E0465bQzzjrnvAsuuuSyK6665robbrrltjvuuue+Bx565B+PPfHUM8+98NIrr73x1jvvffDRJ//67Iuvvvnuh59++e2P/xz4h9+CDjnsiKOOOe6Ek0457YyzzjnvgosuueyKq6657oabbrntjrvuue+Bhx75x2NPPPXMcy+89Mprb7z1znsffPTJvz774qtvvvvhp19+++M/B/6db0GHHHbEUcccd8JJp5x2xlnnnHfBRZdcdsVV11x3w0233HbHXffc98BDj/zjsSeeeua5F1565bU33nrnvQ8++uRfn33x1Tff/fDTL7/98Z8DxW9Bhxx2xFHHHHfCSaecdsZZ55x3wUWXXHbFVddcd8NNt9x2x1333PfAQ4/847EnnnrmuRdeeuW1N956570PPvrkX5998dU33/3w0y+//fGfA//ut6BDDjviqGOOO+GkU04746xzzrvgoksuu+Kqa6674aZbbrvjrnvue+ChR/7x2BNPPfPcCy+98tobb73z3gcfffKvz7746pvvfvjpl9/++M+Bf+9b0CGHHXHUMcedcNIpp51x1jnnXXDRJZddcdU1191w0y233XHXPfc98NAj/3jsiaeeee6Fl1557Y233nnvg48++ddnX3z1zXc//PTLb3/858A/+hZ0yGFHHHXMcSecdMppZ5x1znkXXHTJZVdcdc11N9x0y2133HXPfQ889Mg/HnviqWeee+GlV15746133vvgo0/+9dkXX33z3Q8//fLbH/85UPoWdMhhRxx1zHEnnHTKaWecdc55F1x0yWVXXHXNdTfcdMttd9x1z30PPPTIPx574qlnnnvhpVdee+Otd9774KNP/vXZF199890PP/3y2x//OfDvfws65LAjjjrmuBNOOuW0M84657wLLrrksiuuuua6G2665bY77rrnvgceeuQfjz3x1DPPvfDSK6+98dY7733w0Sf/+uyLr7757oeffvntj/8c+A++BR1y2BFHHXPcCSedctoZZ51z3gUXXXLZFVddc90NN91y2x133XPfAw898o/HnnjqmedeeOmV19546533Pvjok3999sVX33z3w0+//PbHfw78h9+CDjnsiKOOOe6Ek0457YyzzjnvgosuueyKq6657oabbrntjrvuue+Bhx75x2NPPPXMcy+89Mprb7z1znsffPTJvz774qtvvvvhp19+++M/B8rfgg457IijjjnuhJNOOe2Ms84574KLLrnsiquuue6Gm2657Y677rnvgYce+cdjTzz1zHMvvPTKa2+89c57H3z0yb8+++Krb7774adffvvjPwf+o29Bhxx2xFHHHHfCSaecdsZZ55x3wUWXXHbFVddcd8NNt9x2x1333PfAQ4/847EnnnrmuRdeeuW1N956570PPvrkX5998dU33/3w0y+//fGfA//xt6BDDjviqGOOO+GkU04746xzzrvgoksuu+Kqa6674aZbbrvjrnvue+ChR/7x2BNPPfPcCy+98tobb73z3gcfffKvz7746pvvfvjpl9/++M+B/+Rb0CGHHXHUMcedcNIpp51x1jnnXXDRJZddcdU1191w0y233XHXPfc98NAj/3jsiaeeee6Fl1557Y233nnvg48++ddnX3z1zXc//PTLb3/850DlW9Ahhx1x1DHHnXDSKaedcdY5511w0SWXXXHVNdfdcNMtt91x1z33PfDQI/947ImnnnnuhZdeee2Nt95574OPPvnXZ1989c13P/z0y29//OfAf/ot6JDDjjjqmONOOOmU084465zzLrjoksuuuOqa62646Zbb7rjrnvseeOiRfzz2xFPPPPfCS6+89sZb77z3wUef/OuzL7765rsffvrltz/+c+A/+xZ0yGFHHHXMcSecdMppZ5x1znkXXHTJZVdcdc11N9x0y2133HXPfQ889Mg/HnviqWeee+GlV15746133vvgo0/+9dkXX33z3Q8//fLbH/858J9/CzrksCOOOua4E0465bQzzjrnvAsuuuSyK6665robbrrltjvuuue+Bx565B+PPfHUM8+98NIrr73x1jvvffDRJ//67Iuvvvnuh59++e2P/xyofgs65LAjjjrmuBNOOuW0M84657wLLrrksiuuuua6G2665bY77rrnvgceeuQfjz3x1DPPvfDSK6+98dY7733w0Sf/+uyLr7757oeffvntj/8c+C++BR1y2BFHHXPcCSedctoZZ51z3gUXXXLZFVddc90NN91y2x133XPfAw898o/HnnjqmedeeOmV19546533Pvjok3999sVX33z3w0+//PbHfw78429Bhxx2xFHHHHfCSaecdsZZ55x3wUWXXHbFVddcd8NNt9x2x1333PfAQ4/847EnnnrmuRdeeuW1N956570PPvrkX5998dU33/3w0y+//fGfA//kW9Ahhx1x1DHHnXDSKaedcdY5511w0SWXXXHVNdfdcNMtt91x1z33PfDQI/947ImnnnnuhZdeee2Nt95574OPPvnXZ1989c13P/z0y29//OdA7VvQIYcdcdQxx51w0imnnXHWOeddcNEll11x1TXX3XDTLbfdcdc99z3w0CP/eOyJp5557oWXXnntjbfeee+Djz7512dffPXNdz/89Mtvf/znwH/5LeiQw4446pjjTjjplNPOOOuc8y646JLLrrjqmutuuOmW2+646577HnjokX889sRTzzz3wkuvvPbGW++898FHn/zrsy+++ua7H3765bc//nPgn34LOuSwI4465rgTTjrltDPOOue8Cy665LIrrrrmuhtuuuW2O+66574HHnrkH4898dQzz73w0iuvvfHWO+998NEn//rsi6+++e6Hn3757Y//HPhn34IOOeyIo4457oSTTjntjLPOOe+Ciy657Iqrrrnuhptuue2Ou+6574GHHvnHY0889cxzL7z0ymtvvPXOex989Mm/Pvviq2++++GnX3774z8H6t+CDjnsiKOOOe6Ek0457YyzzjnvgosuueyKq6657oabbrntjrvuue+Bhx75x2NPPPXMcy+89Mprb7z1znsffPTJvz774qtvvvvhp19+++M/B/6rb0GHHHbEUcccd8JJp5x2xlnnnHfBRZdcdsVV11x3w0233HbHXffc98BDj/zjsSeeeua5F1565bU33nrnvQ8++uRfn33x1Tff/fDTL7/98Z8D//W3oEMOO+KoY4474aRTTjvjrHPOu+CiSy674qprrrvhpltuu+Oue+574KFH/vHYE08989wLL73y2htvvfPeBx998q/Pvvjqm+9++OmX3/74z4F//i3okMOOOOqY40446ZTTzjjrnPMuuOiSy6646prrbrjpltvuuOue+x546JF/PPbEU88898JLr7z2xlvvvPfBR5/867Mvvvrmux9++uW3P/5zoPEt6JDDjjjqmONOOOmU084465zzLrjoksuuuOqa62646Zbb7rjrnvseeOiRfzz2xFPPPPfCS6+89sZb77z3wUef/OuzL7765rsffvrltz/+c+C/+RZ0yGFHHHXMcSecdMppZ5x1znkXXHTJZVdcdc11N9x0y2133HXPfQ889Mg/HnviqWeee+GlV15746133vvgo0/+9dkXX33z3Q8//fLbH/858N9+CzrksCOOOua4E0465bQzzjrnvAsuuuSyK6665robbrrltjvuuue+Bx565B+PPfHUM8+98NIrr73x1jvvffDRJ//67Iuvvvnuh59++e2P/xz4774FHXLYEUcdc9wJJ51y2hlnnXPeBRddctkVV11z3Q033XLbHXfdc98DDz3yj8eeeOqZ51546ZXX3njrnfc++OiTf332xVfffPfDT7/89sd/DjS/BR1y2BFHHXPcCSedctoZZ51z3gUXXXLZFVddc90NN91y2x133XPfAw898o/HnnjqmedeeOmV19546533Pvjok3999sVX33z3w0+//PbHfw7899+CDjnsiKOOOe6Ek0457YyzzjnvgosuueyKq6657oabbrntjrvuue+Bhx75x2NPPPXMcy+89Mprb7z1znsffPTJvz774qtvvvvhp19+++M/B/6Hb0GHHHbEUcccd8JJp5x2xlnnnHfBRZdcdsVV11x3w0233HbHXffc98BDj/zjsSeeeua5F1565bU33nrnvQ8++uRfn33x1Tff/fDTL7/98Z8D/+O3oEMOO+KoY4474aRTTjvjrHPOu+CiSy674qprrrvhpltuu+Oue+574KFH/vHYE08989wLL73y2htvvfPeBx998q/Pvvjqm+9++OmX3/74z4HWt6BDDjviqGOOO+GkU04746xzzrvgoksuu+Kqa6674aZbbrvjrnvue+ChR/7x2BNPPfPcCy+98tobb73z3gcfffKvz7746pvvfvjpl9/++M+B/+lb0CGHHXHUMcedcNIpp51x1jnnXXDRJZddcdU1191w0y233XHXPfc98NAj/3jsiaeeee6Fl1557Y233nnvg48++ddnX3z1zXc//PTLb3/858D//C3okMOOOOqY40446ZTTzjjrnPMuuOiSy6646prrbrjpltvuuOue+x546JF/PPbEU88898JLr7z2xlvvvPfBR5/867Mvvvrmux9++uW3P/5z4H/5FnTIYUccdcxxJ5x0ymlnnHXOeRdcdMllV1x1zXU33HTLbXfcdc99Dzz0yD8ee+KpZ5574aVXXnvjrXfe++CjT/712RdfffPdDz/98tsf/znQ/hZ0yGFHHHXMcSecdMppZ5x1znkXXHTJZVdcdc11N9x0y2133HXPfQ889Mg/HnviqWeee+GlV15746133vvgo0/+9dkXX33z3Q8//fLbH/858L9+CzrksCOOOua4E0465bQzzjrnvAsuuuSyK6665robbrrltjvuuue+Bx565B+PPfHUM8+98NIrr73x1jvvffDRJ//67Iuvvvnuh59++e2P/xz4374FHXLYEUcdc9wJJ51y2hlnnXPeBRddctkVV11z3Q033XLbHXfdc98DDz3yj8eeeOqZ51546ZXX3njrnfc++OiTf332xVfffPfDT7/89sd/Dvzv34IOOeyIo4457oSTTjntjLPOOe+Ciy657Iqrrrnuhptuue2Ou+6574GHHvnHY0889cxzL7z0ymtvvPXOex989Mm/Pvviq2++++GnX3774z8HOt+CDjnsiKOOOe6Ek0457YyzzjnvgosuueyKq6657oabbrntjrvuue+Bhx75x2NPPPXMcy+89Mprb7z1znsffPTJvz774qtvvvvhp19+++M/B/6Pb0GHHHbEUcccd8JJp5x2xlnnnHfBRZdcdsVV11x3w0233HbHXffc98BDj/zjsSeeeua5F1565bU33nrnvQ8++uRfn33x1Tff/fDTL7/98Z8D/+e3oEMOO+KoY4474aRTTjvjrHPOu+CiSy674qprrrvhpltuu+Oue+574KFH/vHYE08989wLL73y2htvvfPeBx998q/Pvvjqm+9++OmX3/74z4H/61vQIYcdcdQxx51w0imnnXHWOeddcNEll11x1TXX3XDTLbfdcdc99z3w0CP/eOyJp5557oWXXnntjbfeee+Djz7512dffPXNdz/89Mtvf/znQPdb0CGHHXHUMcedcNIpp51x1jnnXXDRJZddcdU1191w0y233XHXPfc98NAj/3jsiaeeee6Fl1557Y233nnvg48++ddnX3z1zXc//PTLb3/858C/+BZ0yGFHHHXMcSecdMppZ5x1znkXXHTJZVdcdc11N9x0y2133HXPfQ889Mg/HnviqWeee+GlV15746133vvgo0/+9dkXX33z3Q8//fLbH/858C+/BR1y2BFHHXPcCSedctoZZ51z3gUXXXLZFVddc90NN91y2x133XPfAw898o/HnnjqmedeeOmV19546533Pvjok3999sVX33z3w0+//PbHfw7839+CDjnsiKOOOe6Ek0457YyzzjnvgosuueyKq6657oabbrntjrvuue+Bhx75x2NPPPXMcy+89Mprb7z1znsffPTJvz774qtvvvvhp19+++M/B3rfgg457IijjjnuhJNOOe2Ms84574KLLrnsiquuue6Gm2657Y677rnvgYce+cdjTzz1zHMvvPTKa2+89c57H3z0yb8+++Krb7774adffvvjPwf+n29Bhxx2xFHHHHfCSaecdsZZ55x3wUWXXHbFVddcd8NNt9x2x1333PfAQ4/847EnnnrmuRdeeuW1N956570PPvrkX5998dU33/3w0y+//fGfA//qW9Ahhx1x1DHHnXDSKaedcdY5511w0SWXXXHVNdfdcNMtt91x1z33PfDQI/947ImnnnnuhZdeee2Nt95574OPPvnXZ1989c13P/z0y29//OfA//st6JDDjjjqmONOOOmU084465zzLrjoksuuuOqa62646Zbb7rjrnvseeOiRfzz2xFPPPPfCS6+89sZb77z3wUef/OuzL7765rsffvrltz/+c6D/LeiQw4446pjjTjjplNPOOOuc8y646JLLrrjqmutuuOmW2+646577HnjokX889sRTzzz3wkuvvPbGW++898FHn/zrsy+++ua7H3765bc//nPgX38LOuSwI4465rgTTjrltDPOOue8Cy665LIrrrrmuhtuuuW2O+66574HHnrkH4898dQzz73w0iuvvfHWO+998NEn//rsi6+++e6Hn3757Y//HPg334IOOeyIo4457oSTTjntjLPOOe+Ciy657Iqrrrnuhptuue2Ou+6574GHHvnHY0889cxzL7z0ymtvvPXOex989Mm/Pvviq2++++GnX3774z8H/u23oEMOO+KoY4474aRTTjvjrHPOu+CiSy674qprrrvhpltuu+Oue+574KFH/vHYE08989wLL73y2htvvfPeBx998q/Pvvjqm+9++OmX3/74z4HBt/8PdlHZBHicLcUhuAEAACBmQRAEQXhBEARBEARBEARBEARBEARBEARBsJu7s80222yzzTa7s5vtbOfubLPN3QRBEF4QBEEQhBcEQRD2ffP/5Q/2A/+/kMOOOOofxxx3wkmnnHbGWeecd8FFl1x2xVXXXHfDTbfcdsdd99z3wEOPPPbEU88898JLr7z2xlvvvPfBR5/867Mvvvrmux/+89Mvv/1x4N/5FnTIYUcc9Y9jjjvhpFNOO+Osc8674KJLLrviqmuuu+GmW26746577nvgoUcee+KpZ5574aVXXnvjrXfe++CjT/712RdfffPdD//56Zff/jjwD74FHXLYEUf945jjTjjplNPOOOuc8y646JLLrrjqmutuuOmW2+646577HnjokceeeOqZ51546ZXX3njrnfc++OiTf332xVfffPfDf3765bc/Dvy734IOOeyIo/5xzHEnnHTKaWecdc55F1x0yWVXXHXNdTfcdMttd9x1z30PPPTIY0889cxzL7z0ymtvvPXOex989Mm/Pvviq2++++E/P/3y2x8HBt+CDjnsiKP+ccxxJ5x0ymlnnHXOeRdcdMllV1x1zXU33HTLbXfcdc99Dzz0yGNPPPXMcy+89Mprb7z1znsffPTJvz774qtvvvvhPz/98tsfB/7ht6BDDjviqH8cc9wJJ51y2hlnnXPeBRddctkVV11z3Q033XLbHXfdc98DDz3y2BNPPfPcCy+98tobb73z3gcfffKvz7746pvvfvjPT7/89seBf/Qt6JDDjjjqH8ccd8JJp5x2xlnnnHfBRZdcdsVV11x3w0233HbHXffc98BDjzz2xFPPPPfCS6+89sZb77z3wUef/OuzL7765rsf/vPTL7/9ceAffws65LAjjvrHMcedcNIpp51x1jnnXXDRJZddcdU1191w0y233XHXPfc98NAjjz3x1DPPvfDSK6+98dY7733w0Sf/+uyLr7757of//PTLb38cGH4LOuSwI476xzHHnXDSKaedcdY5511w0SWXXXHVNdfdcNMtt91x1z33PfDQI4898dQzz73w0iuvvfHWO+998NEn//rsi6+++e6H//z0y29/HPj3vgUdctgRR/3jmONOOOmU084465zzLrjoksuuuOqa62646Zbb7rjrnvseeOiRx5546pnnXnjpldfeeOud9z746JN/ffbFV99898N/fvrltz8O/Pvfgg457Iij/nHMcSecdMppZ5x1znkXXHTJZVdcdc11N9x0y2133HXPfQ889MhjTzz1zHMvvPTKa2+89c57H3z0yb8+++Krb7774T8//fLbHwf+g29Bhxx2xFH/OOa4E0465bQzzjrnvAsuuuSyK6665robbrrltjvuuue+Bx565LEnnnrmuRdeeuW1N956570PPvrkX5998dU33/3wn59++e2PA6NvQYccdsRR/zjmuBNOOuW0M84657wLLrrksiuuuua6G2665bY77rrnvgceeuSxJ5565rkXXnrltTfeeue9Dz765F+fffHVN9/98J+ffvntjwP/4begQw474qh/HHPcCSedctoZZ51z3gUXXXLZFVddc90NN91y2x133XPfAw898tgTTz3z3AsvvfLaG2+9894HH33yr8+++Oqb7374z0+//PbHgf/oW9Ahhx1x1D+OOe6Ek0457YyzzjnvgosuueyKq6657oabbrntjrvuue+Bhx557ImnnnnuhZdeee2Nt95574OPPvnXZ1989c13P/znp19+++PAf/wt6JDDjjjqH8ccd8JJp5x2xlnnnHfBRZdcdsVV11x3w0233HbHXffc98BDjzz2xFPPPPfCS6+89sZb77z3wUef/OuzL7765rsf/vPTL7/9cWD8LeiQw4446h/HHHfCSaecdsZZ55x3wUWXXHbFVddcd8NNt9x2x1333PfAQ4889sRTzzz3wkuvvPbGW++898FHn/zrsy+++ua7H/7z0y+//XHgP/kWdMhhRxz1j2OOO+GkU04746xzzrvgoksuu+Kqa6674aZbbrvjrnvue+ChRx574qlnnnvhpVdee+Otd9774KNP/vXZF199890P//npl9/+OPCffgs65LAjjvrHMcedcNIpp51x1jnnXXDRJZddcdU1191w0y233XHXPfc98NAjjz3x1DPPvfDSK6+98dY7733w0Sf/+uyLr7757of//PTLb38c+M++BR1y2BFH/eOY40446ZTTzjjrnPMuuOiSy6646prrbrjpltvuuOue+x546JHHnnjqmedeeOmV19546533Pvjok3999sVX33z3w39++uW3Pw5MvgUdctgRR/3jmONOOOmU084465zzLrjoksuuuOqa62646Zbb7rjrnvseeOiRx5546pnnXnjpldfeeOud9z746JN/ffbFV99898N/fvrltz8O/Offgg457Iij/nHMcSecdMppZ5x1znkXXHTJZVdcdc11N9x0y2133HXPfQ889MhjTzz1zHMvvPTKa2+89c57H3z0yb8+++Krb7774T8//fLbHwf+i29Bhxx2xFH/OOa4E0465bQzzjrnvAsuuuSyK6665robbrrltjvuuue+Bx565LEnnnrmuRdeeuW1N956570PPvrkX5998dU33/3wn59++e2PA//lt6BDDjviqH8cc9wJJ51y2hlnnXPeBRddctkVV11z3Q033XLbHXfdc98DDz3y2BNPPfPcCy+98tobb73z3gcfffKvz7746pvvfvjPT7/89seB6begQw474qh/HHPcCSedctoZZ51z3gUXXXLZFVddc90NN91y2x133XPfAw898tgTTz3z3AsvvfLaG2+9894HH33yr8+++Oqb7374z0+//PbHgf/qW9Ahhx1x1D+OOe6Ek0457YyzzjnvgosuueyKq6657oabbrntjrvuue+Bhx557ImnnnnuhZdeee2Nt95574OPPvnXZ1989c13P/znp19+++PAf/0t6JDDjjjqH8ccd8JJp5x2xlnnnHfBRZdcdsVV11x3w0233HbHXffc98BDjzz2xFPPPPfCS6+89sZb77z3wUef/OuzL7765rsf/vPTL7/9ceC/+RZ0yGFHHPWPY4474aRTTjvjrHPOu+CiSy674qprrrvhpltuu+Oue+574KFHHnviqWeee+GlV15746133vvgo0/+9dkXX33z3Q//+emX3/44MPsWdMhhRxz1j2OOO+GkU04746xzzrvgoksuu+Kqa6674aZbbrvjrnvue+ChRx574qlnnnvhpVdee+Otd9774KNP/vXZF199890P//npl9/+OPDffgs65LAjjvrHMcedcNIpp51x1jnnXXDRJZddcdU1191w0y233XHXPfc98NAjjz3x1DPPvfDSK6+98dY7733w0Sf/+uyLr7757of//PTLb38c+O++BR1y2BFH/eOY40446ZTTzjjrnPMuuOiSy6646prrbrjpltvuuOue+x546JHHnnjqmedeeOmV19546533Pvjok3999sVX33z3w39++uW3Pw7899+CDjnsiKP+ccxxJ5x0ymlnnHXOeRdcdMllV1x1zXU33HTLbXfcdc99Dzz0yGNPPPXMcy+89Mprb7z1znsffPTJvz774qtvvvvhPz/98tsfB+bfgg457Iij/nHMcSecdMppZ5x1znkXXHTJZVdcdc11N9x0y2133HXPfQ889MhjTzz1zHMvvPTKa2+89c57H3z0yb8+++Krb7774T8//fLbHwf+h29Bhxx2xFH/OOa4E0465bQzzjrnvAsuuuSyK6665robbrrltjvuuue+Bx565LEnnnrmuRdeeuW1N956570PPvrkX5998dU33/3wn59++e2PA//kW9Ahhx1x1D+OOe6Ek0457YyzzjnvgosuueyKq6657oabbrntjrvuue+Bhx557ImnnnnuhZdeee2Nt95574OPPvnXZ1989c13P/znp19+++PAP/0WdMhhRxz1j2OOO+GkU04746xzzrvgoksuu+Kqa6674aZbbrvjrnvue+ChRx574qlnnnvhpVdee+Otd9774KNP/vXZF199890P//npl9/+OLD4FnTIYUcc9Y9jjjvhpFNOO+Osc8674KJLLrviqmuuu+GmW26746577nvgoUcee+KpZ5574aVXXnvjrXfe++CjT/712RdfffPdD//56Zff/jjwP34LOuSwI476xzHHnXDSKaedcdY5511w0SWXXXHVNdfdcNMtt91x1z33PfDQI4898dQzz73w0iuvvfHWO+998NEn//rsi6+++e6H//z0y29/HPhn34IOOeyIo/5xzHEnnHTKaWecdc55F1x0yWVXXHXNdTfcdMttd9x1z30PPPTIY0889cxzL7z0ymtvvPXOex989Mm/Pvviq2++++E/P/3y2x8H/qdvQYccdsRR/zjmuBNOOuW0M84657wLLrrksiuuuua6G2665bY77rrnvgceeuSxJ5565rkXXnrltTfeeue9Dz765F+fffHVN9/98J+ffvntjwPLb0GHHHbEUf845rgTTjrltDPOOue8Cy665LIrrrrmuhtuuuW2O+66574HHnrksSeeeua5F1565bU33nrnvQ8++uRfn33x1Tff/fCfn3757Y8D//O3oEMOO+Kofxxz3AknnXLaGWedc94FF11y2RVXXXPdDTfdctsdd91z3wMPPfLYE08989wLL73y2htvvfPeBx998q/Pvvjqm+9++M9Pv/z2x4H/5VvQIYcdcdQ/jjnuhJNOOe2Ms84574KLLrnsiquuue6Gm2657Y677rnvgYceeeyJp5557oWXXnntjbfeee+Djz7512dffPXNdz/856dffvvjwD//FnTIYUcc9Y9jjjvhpFNOO+Osc8674KJLLrviqmuuu+GmW26746577nvgoUcee+KpZ5574aVXXnvjrXfe++CjT/712RdfffPdD//56Zff/jiw+hZ0yGFHHPWPY4474aRTTjvjrHPOu+CiSy674qprrrvhpltuu+Oue+574KFHHnviqWeee+GlV15746133vvgo0/+9dkXX33z3Q//+emX3/448L9+CzrksCOO+scxx51w0imnnXHWOeddcNEll11x1TXX3XDTLbfdcdc99z3w0COPPfHUM8+98NIrr73x1jvvffDRJ//67Iuvvvnuh//89Mtvfxz4374FHXLYEUf945jjTjjplNPOOOuc8y646JLLrrjqmutuuOmW2+646577HnjokceeeOqZ51546ZXX3njrnfc++OiTf332xVfffPfDf3765bc/DvyLb0GHHHbEUf845rgTTjrltDPOOue8Cy665LIrrrrmuhtuuuW2O+66574HHnrksSeeeua5F1565bU33nrnvQ8++uRfn33x1Tff/fCfn3757Y8D629Bhxx2xFH/OOa4E0465bQzzjrnvAsuuuSyK6665robbrrltjvuuue+Bx565LEnnnrmuRdeeuW1N956570PPvrkX5998dU33/3wn59++e2PA//yW9Ahhx1x1D+OOe6Ek0457YyzzjnvgosuueyKq6657oabbrntjrvuue+Bhx557ImnnnnuhZdeee2Nt95574OPPvnXZ1989c13P/znp19+++PAv/oWdMhhRxz1j2OOO+GkU04746xzzrvgoksuu+Kqa6674aZbbrvjrnvue+ChRx574qlnnnvhpVdee+Otd9774KNP/vXZF199890P//npl9/+OPCvvwUdctgRR/3jmONOOOmU084465zzLrjoksuuuOqa62646Zbb7rjrnvseeOiRx5546pnnXnjpldfeeOud9z746JN/ffbFV99898N/fvrltz8ObL4FHXLYEUf945jjTjjplNPOOOuc8y646JLLrrjqmutuuOmW2+646577HnjokceeeOqZ51546ZXX3njrnfc++OiTf332xVfffPfDf3765bc/Dvzv34IOOeyIo/5xzHEnnHTKaWecdc55F1x0yWVXXHXNdTfcdMttd9x1z30PPPTIY0889cxzL7z0ymtvvPXOex989Mm/Pvviq2++++E/P/3y2x8H/o9vQYccdsRR/zjmuBNOOuW0M84657wLLrrksiuuuua6G2665bY77rrnvgceeuSxJ5565rkXXnrltTfeeue9Dz765F+fffHVN9/98J+ffvntjwP/57egQw474qh/HHPcCSedctoZZ51z3gUXXXLZFVddc90NN91y2x133XPfAw898tgTTz3z3AsvvfLaG2+9894HH33yr8+++Oqb7374z0+//PbHge23oEMOO+Kofxxz3AknnXLaGWedc94FF11y2RVXXXPdDTfdctsdd91z3wMPPfLYE08989wLL73y2htvvfPeBx998q/Pvvjqm+9++M9Pv/z2x4H/61vQIYcdcdQ/jjnuhJNOOe2Ms84574KLLrnsiquuue6Gm2657Y677rnvgYceeeyJp5557oWXXnntjbfeee+Djz7512dffPXNdz/856dffvvjwP/9LeiQw4446h/HHHfCSaecdsZZ55x3wUWXXHbFVddcd8NNt9x2x1333PfAQ4889sRTzzz3wkuvvPbGW++898FHn/zrsy+++ua7H/7z0y+//XHg//kWdMhhRxz1j2OOO+GkU04746xzzrvgoksuu+Kqa6674aZbbrvjrnvue+ChRx574qlnnnvhpVdee+Otd9774KNP/vXZF199890P//npl9/+OLD7FnTIYUcc9Y9jjjvhpFNOO+Osc8674KJLLrviqmuuu+GmW26746577nvgoUcee+KpZ5574aVXXnvjrXfe++CjT/712RdfffPdD//56Zff/jjwb74FHXLYEUf945jjTjjplNPOOOuc8y646JLLrrjqmutuuOmW2+646577HnjokceeeOqZ51546ZXX3njrnfc++OiTf332xVfffPfDf3765bc/Dvzbb0GHHHbEUf845rgTTjrltDPOOue8Cy665LIrrrrmuhtuuuW2O+66574HHnrksSeeeua5F1565bU33nrnvQ8++uRfn33x1Tff/fCfn3757Y8D/++3oEMOO+Kofxxz3AknnXLaGWedc94FF11y2RVXXXPdDTfdctsdd91z3wMPPfLYE08989wLL73y2htvvfPeBx998q/Pvvjqm+9++M9Pv/z2x4H9t/8Pd+bZQHicLcUv2AEAAOBnex5BEARBEARBEARBEARBEAThC8IXBEEQBEEQBEEQBEEQBEEQBEFwN9tss83dbLOd29zNNtu5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EsussMof1vjLOhtsssU2O+yyxz4HHHLEMSeccsY5F1xyxTU33HLHPQ888sQzL7zyxjsffPLFNz/8MvB//hFkiGFGGGWMcSaYZIppZphljnkWWGSJZVZY5Q9r/GWdDTbZYpsddtljnwMOOeKYE04545wLLrnimhtuueOeBx554pkXXnnjnQ8++eKbH34Z+PwRZIhhRhhljHEmmGSKaWaYZY55FlhkiWVWWOUPa/xlnQ022WKbHXbZY58DDjnimBNOOeOcCy654pobbrnjngceeeKZF155450PPvnimx9+GfjXfwQZYpgRRhljnAkmmWKaGWaZY54FFllimRVW+cMaf1lng0222GaHXfbY54BDjjjmhFPOOOeCS6645oZb7rjngUeeeOaFV95454NPvvjmh18G/q8/ggwxzAijjDHOBJNMMc0Ms8wxzwKLLLHMCqv8YY2/rLPBJltss8Mue+xzwCFHHHPCKWecc8ElV1xzwy133PPAI08888Irb7zzwSdffPPDLwP/9x9BhhhmhFHGGGeCSaaYZoZZ5phngUWWWGaFVf6wxl/W2WCTLbbZYZc99jngkCOOOeGUM8654JIrrrnhljvueeCRJ5554ZU33vngky+++eGXge8fQYYYZoRRxhhngkmmmGaGWeaYZ4FFllhmhVX+sMZf1tlgky222WGXPfY54JAjjjnhlDPOueCSK6654ZY77nngkSeeeeGVN9754JMvvvnhl4H/548gQwwzwihjjDPBJFNMM8Msc8yzwCJLLLPCKn9Y4y/rbLDJFtvssMse+xxwyBHHnHDKGedccMkV19xwyx33PPDIE8+88Mob73zwyRff/PDLwP/7R5AhhhlhlDHGmWCSKaaZYZY55llgkSWWWWGVP6zxl3U22GSLbXbYZY99DjjkiGNOOOWMcy645IprbrjljnseeOSJZ1545Y13Pvjki29++GXg//sjyBDDjDDKGONMMMkU08wwyxzzLLDIEsussMof1vjLOhtsssU2O+yyxz4HHHLEMSeccsY5F1xyxTU33HLHPQ888sQzL7zyxjsffPLFNz/8MhD4t/7N/39ygdh9eJwt1yETAgCXllFWPxUVlVVUVFR0UVFRUVFRUQkEAoFAIBAIBAKBQCAQCAQCgUAgEAgEAoFAIBAIBAKBQCAQCAQCgUAgEFz9zi3nBzwz78z9Q+BPAv/v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IYYZYZQxxplgkimmmWGWOeZZYJEllllhlTXW2WCTLbbZYZc99jngkCOOOeGUM8654JIrrrnhljvueeCRJ5554ZU33vngky+++eGXPwb+vv4MMsQwI4wyxjgTTDLFNDPMMsc8CyyyxDIrrLLGOhtsssU2O+yyxz4HHHLEMSeccsY5F1xyxTU33HLHPQ888sQzL7zyxjsffPLFNz/88sdAVH8GGWKYEUYZY5wJJplimhlmmWOeBRZZYpkVVlljnQ022WKbHXbZY58DDjnimBNOOeOcCy654pobbrnjngceeeKZF155450PPvnimx9++WPgH+jPIEMMM8IoY4wzwSRTTDPDLHPMs8AiSyyzwiprrLPBJltss8Mue+xzwCFHHHPCKWecc8ElV1xzwy133PPAI08888Irb7zzwSdffPPDL38M/EP9GWSIYUYYZYxxJphkimlmmGWOeRZYZIllVlhljXU22GSLbXbYZY99DjjkiGNOOOWMcy645IprbrjljnseeOSJZ1545Y13Pvjki29++OWPgX+kP4MMMcwIo4wxzgSTTDHNDLPMMc8CiyyxzAqrrLHOBptssc0Ou+yxzwGHHHHMCaeccc4Fl1xxzQ233HHPA4888cwLr7zxzgeffPHND7/8MRDTn0GGGGaEUcYYZ4JJpphmhlnmmGeBRZZYZoVV1lhng0222GaHXfbY54BDjjjmhFPOOOeCS6645oZb7rjngUeeeOaFV95454NPvvjmh1/+GPjH+jPIEMOMMMoY40wwyRTTzDDLHPMssMgSy6ywyhrrbLDJFtvssMse+xxwyBHHnHDKGedccMkV19xwyx33PPDIE8+88Mob73zwyRff/PDLHwP/RH8GGWKYEUYZY5wJJplimhlmmWOeBRZZYpkVVlljnQ022WKbHXbZY58DDjnimBNOOeOcCy654pobbrnjngceeeKZF155450PPvnimx9++WPgn+rPIEMMM8IoY4wzwSRTTDPDLHPMs8AiSyyzwiprrLPBJltss8Mue+xzwCFHHHPCKWecc8ElV1xzwy133PPAI08888Irb7zzwSdffPPDL38MxPVnkCGGGWGUMcaZYJIppplhljnmWWCRJZZZYZU11tlgky222WGXPfY54JAjjjnhlDPOueCSK6654ZY77nngkSeeeeGVN9754JMvvvnhlz8G/pn+DDLEMCOMMsY4E0wyxTQzzDLHPAssssQyK6yyxjobbLLFNjvsssc+BxxyxDEnnHLGORdccsU1N9xyxz0PPPLEMy+88sY7H3zyxTc//PLHwD/Xn0GGGGaEUcYYZ4JJpphmhlnmmGeBRZZYZoVV1lhng0222GaHXfbY54BDjjjmhFPOOOeCS6645oZb7rjngUeeeOaFV95454NPvvjmh1/+GPgz/RlkiGFGGGWMcSaYZIppZphljnkWWGSJZVZYZY11Nthki2122GWPfQ445IhjTjjljHMuuOSKa2645Y57HnjkiWdeeOWNdz745Itvfvjlj4GE/gwyxDAjjDLGOBNMMsU0M8wyxzwLLLLEMiusssY6G2yyxTY77LLHPgcccsQxJ5xyxjkXXHLFNTfccsc9DzzyxDMvvPLGOx988sU3P/zyx8C/0J9BhhhmhFHGGGeCSaaYZoZZ5phngUWWWGaFVdZYZ4NNtthmh1322OeAQ4445oRTzjjngkuuuOaGW+6454FHnnjmhVfeeOeDT7745odf/hj4l/ozyBDDjDDKGONMMMkU08wwyxzzLLDIEsussMoa62ywyRbb7LDLHvsccMgRx5xwyhnnXHDJFdfccMsd9zzwyBPPvPDKG+988MkX3/zwyx8D/0p/BhlimBFGGWOcCSaZYpoZZpljngUWWWKZFVZZY50NNtlimx122WOfAw454pgTTjnjnAsuueKaG265454HHnnimRdeeeOdDz754psffvljIKk/gwwxzAijjDHOBJNMMc0Ms8wxzwKLLLHMCqussc4Gm2yxzQ677LHPAYccccwJp5xxzgWXXHHNDbfccc8DjzzxzAuvvPHOB5988c0Pv/wx8K/1Z5AhhhlhlDHGmWCSKaaZYZY55llgkSWWWWGVNdbZYJMtttlhlz32OeCQI4454ZQzzrngkiuuueGWO+554JEnnnnhlTfe+eCTL7754Zc/Bv6N/gwyxDAjjDLGOBNMMsU0M8wyxzwLLLLEMiusssY6G2yyxTY77LLHPgcccsQxJ5xyxjkXXHLFNTfccsc9DzzyxDMvvPLGOx988sU3P/zyx8C/1Z9BhhhmhFHGGGeCSaaYZoZZ5phngUWWWGaFVdZYZ4NNtthmh1322OeAQ4445oRTzjjngkuuuOaGW+6454FHnnjmhVfeeOeDT7745odf/hhI6c8gQwwzwihjjDPBJFNMM8Msc8yzwCJLLLPCKmuss8EmW2yzwy577HPAIUccc8IpZ5xzwSVXXHPDLXfc88AjTzzzwitvvPPBJ19888Mvfwz8O/0ZZIhhRhhljHEmmGSKaWaYZY55FlhkiWVWWGWNdTbYZIttdthlj30OOOSIY0445YxzLrjkimtuuOWOex545IlnXnjljXc++OSLb3745Y+Bf68/gwwxzAijjDHOBJNMMc0Ms8wxzwKLLLHMCqussc4Gm2yxzQ677LHPAYccccwJp5xxzgWXXHHNDbfccc8DjzzxzAuvvPHOB5988c0Pv/wx8B/0Z5AhhhlhlDHGmWCSKaaZYZY55llgkSWWWWGVNdbZYJMtttlhlz32OeCQI4454ZQzzrngkiuuueGWO+554JEnnnnhlTfe+eCTL7754Zc/BtL6M8gQw4wwyhjjTDDJFNPMMMsc8yywyBLLrLDKGutssMkW2+ywyx77HHDIEceccMoZ51xwyRXX3HDLHfc88MgTz7zwyhvvfPDJF9/88MsfA/9RfwYZYpgRRhljnAkmmWKaGWaZY54FFllimRVWWWOdDTbZYpsddtljnwMOOeKYE04545wLLrnimhtuueOeBx554pkXXnnjnQ8++eKbH375Y+A/6c8gQwwzwihjjDPBJFNMM8Msc8yzwCJLLLPCKmuss8EmW2yzwy577HPAIUccc8IpZ5xzwSVXXHPDLXfc88AjTzzzwitvvPPBJ19888Mvfwz8Z/0ZZIhhRhhljHEmmGSKaWaYZY55FlhkiWVWWGWNdTbYZIttdthlj30OOOSIY0445YxzLrjkimtuuOWOex545IlnXnjljXc++OSLb3745Y+BjP4MMsQwI4wyxjgTTDLFNDPMMsc8CyyyxDIrrLLGOhtsssU2O+yyxz4HHHLEMSeccsY5F1xyxTU33HLHPQ888sQzL7zyxjsffPLFNz/88sfAf9GfQYYYZoRRxhhngkmmmGaGWeaYZ4FFllhmhVXWWGeDTbbYZodd9tjngEOOOOaEU84454JLrrjmhlvuuOeBR5545oVX3njng0+++OaHX/4Y+K/6M8gQw4wwyhjjTDDJFNPMMMsc8yywyBLLrLDKGutssMkW2+ywyx77HHDIEceccMoZ51xwyRXX3HDLHfc88MgTz7zwyhvvfPDJF9/88MsfA/9NfwYZYpgRRhljnAkmmWKaGWaZY54FFllimRVWWWOdDTbZYpsddtljnwMOOeKYE04545wLLrnimhtuueOeBx554pkXXnnjnQ8++eKbH375YyCrP4MMMcwIo4wxzgSTTDHNDLPMMc8CiyyxzAqrrLHOBptssc0Ou+yxzwGHHHHMCaeccc4Fl1xxzQ233HHPA4888cwLr7zxzgeffPHND7/8MfDf9WeQIYYZYZQxxplgkimmmWGWOeZZYJEllllhlTXW2WCTLbbZYZc99jngkCOOOeGUM8654JIrrrnhljvueeCRJ5554ZU33vngky+++eGXPwb+h/4MMsQwI4wyxjgTTDLFNDPMMsc8CyyyxDIrrLLGOhtsssU2O+yyxz4HHHLEMSeccsY5F1xyxTU33HLHPQ888sQzL7zyxjsffPLFNz/88sfA/9SfQYYYZoRRxhhngkmmmGaGWeaYZ4FFllhmhVXWWGeDTbbYZodd9tjngEOOOOaEU84454JLrrjmhlvuuOeBR5545oVX3njng0+++OaHX/4YyOnPIEMMM8IoY4wzwSRTTDPDLHPMs8AiSyyzwiprrLPBJltss8Mue+xzwCFHHHPCKWecc8ElV1xzwy133PPAI08888Irb7zzwSdffPPDL38M/C/9GWSIYUYYZYxxJphkimlmmGWOeRZYZIllVlhljXU22GSLbXbYZY99DjjkiGNOOOWMcy645IprbrjljnseeOSJZ1545Y13Pvjki29++OWPgf+tP4MMMcwIo4wxzgSTTDHNDLPMMc8CiyyxzAqrrLHOBptssc0Ou+yxzwGHHHHMCaeccc4Fl1xxzQ233HHPA4888cwLr7zxzgeffPHND7/8MfB/9GeQIYYZYZQxxplgkimmmWGWOeZZYJEllllhlTXW2WCTLbbZYZc99jngkCOOOeGUM8654JIrrrnhljvueeCRJ5554ZU33vngky+++eGXPwbyf/T/AtC86Mh4nC3RoRcBAIDYYXvvgiAIgiAIgiAIgiDYZpttdrOb3dlmm2222WZ3ttmd22wTBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEHY27vvV74/4PcH+b8W+P8FGWKYEUYZY5wJJplimhlmmWOeBRZZYpkVVlljnQ022WKbHXbZY58DDjnimBNOOeOcCy654pobbrnjngceeeKZF155450PPvnimx9++WPgr/+Vf8AgQwwzwihjjDPBJFNMM8Msc8yzwCJLLLPCKmuss8EmW2yzwy577HPAIUccc8IpZ5xzwSVXXHPDLXfc88AjTzzzwitvvPPBJ19888Mvfwz8Df8ZZIhhRhhljHEmmGSKaWaYZY55FlhkiWVWWGWNdTbYZIttdthlj30OOOSIY0445YxzLrjkimtuuOWOex545IlnXnjljXc++OSLb3745Y+Bv+k/gwwxzAijjDHOBJNMMc0Ms8wxzwKLLLHMCqussc4Gm2yxzQ677LHPAYccccwJp5xxzgWXXHHNDbfccc8DjzzxzAuvvPHOB5988c0Pv/wxUPCfQYYYZoRRxhhngkmmmGaGWeaYZ4FFllhmhVXWWGeDTbbYZodd9tjngEOOOOaEU84454JLrrjmhlvuuOeBR5545oVX3njng0+++OaHX/4Y+Fv+M8gQw4wwyhjjTDDJFNPMMMsc8yywyBLLrLDKGutssMkW2+ywyx77HHDIEceccMoZ51xwyRXX3HDLHfc88MgTz7zwyhvvfPDJF9/88MsfA3/bfwYZYpgRRhljnAkmmWKaGWaZY54FFllimRVWWWOdDTbZYpsddtljnwMOOeKYE04545wLLrnimhtuueOeBx554pkXXnnjnQ8++eKbH375Y+Dv+M8gQwwzwihjjDPBJFNMM8Msc8yzwCJLLLPCKmuss8EmW2yzwy577HPAIUccc8IpZ5xzwSVXXHPDLXfc88AjTzzzwitvvPPBJ19888MvfwwU/WeQIYYZYZQxxplgkimmmWGWOeZZYJEllllhlTXW2WCTLbbZYZc99jngkCOOOeGUM8654JIrrrnhljvueeCRJ5554ZU33vngky+++eGXPwb+rv8MMsQwI4wyxjgTTDLFNDPMMsc8CyyyxDIrrLLGOhtsssU2O+yyxz4HHHLEMSeccsY5F1xyxTU33HLHPQ888sQzL7zyxjsffPLFNz/88sfA3/OfQYYYZoRRxhhngkmmmGaGWeaYZ4FFllhmhVXWWGeDTbbYZodd9tjngEOOOOaEU84454JLrrjmhlvuuOeBR5545oVX3njng0+++OaHX/4Y+Pv+M8gQw4wwyhjjTDDJFNPMMMsc8yywyBLLrLDKGutssMkW2+ywyx77HHDIEceccMoZ51xwyRXX3HDLHfc88MgTz7zwyhvvfPDJF9/88MsfAyX/GWSIYUYYZYxxJphkimlmmGWOeRZYZIllVlhljXU22GSLbXbYZY99DjjkiGNOOOWMcy645IprbrjljnseeOSJZ1545Y13Pvjki29++OWPgX/gP4MMMcwIo4wxzgSTTDHNDLPMMc8CiyyxzAqrrLHOBptssc0Ou+yxzwGHHHHMCaeccc4Fl1xxzQ233HHPA4888cwLr7zxzgeffPHND7/8MfCH/jPIEMOMMMoY40wwyRTTzDDLHPMssMgSy6ywyhrrbLDJFtvssMse+xxwyBHHnHDKGedccMkV19xwyx33PPDIE8+88Mob73zwyRff/PDLHwP/0H8GGWKYEUYZY5wJJplimhlmmWOeBRZZYpkVVlljnQ022WKbHXbZY58DDjnimBNOOeOcCy654pobbrnjngceeeKZF155450PPvnimx9++WOg7D+DDDHMCKOMMc4Ek0wxzQyzzDHPAossscwKq6yxzgabbLHNDrvssc8BhxxxzAmnnHHOBZdccc0Nt9xxzwOPPPHMC6+88c4Hn3zxzQ+//DHwj/xnkCGGGWGUMcaZYJIppplhljnmWWCRJZZZYZU11tlgky222WGXPfY54JAjjjnhlDPOueCSK6654ZY77nngkSeeeeGVN9754JMvvvnhlz8G/sh/BhlimBFGGWOcCSaZYpoZZpljngUWWWKZFVZZY50NNtlimx122WOfAw454pgTTjnjnAsuueKaG265454HHnnimRdeeeOdDz754psffvlj4B/7zyBDDDPCKGOMM8EkU0wzwyxzzLPAIksss8Iqa6yzwSZbbLPDLnvsc8AhRxxzwilnnHPBJVdcc8Mtd9zzwCNPPPPCK2+888EnX3zzwy9/DFT8Z5AhhhlhlDHGmWCSKaaZYZY55llgkSWWWWGVNdbZYJMtttlhlz32OeCQI4454ZQzzrngkiuuueGWO+554JEnnnnhlTfe+eCTL7754Zc/Bv6J/wwyxDAjjDLGOBNMMsU0M8wyxzwLLLLEMiusssY6G2yyxTY77LLHPgcccsQxJ5xyxjkXXHLFNTfccsc9DzzyxDMvvPLGOx988sU3P/zyx8Af+88gQwwzwihjjDPBJFNMM8Msc8yzwCJLLLPCKmuss8EmW2yzwy577HPAIUccc8IpZ5xzwSVXXHPDLXfc88AjTzzzwitvvPPBJ19888Mvfwz8if8MMsQwI4wyxjgTTDLFNDPMMsc8CyyyxDIrrLLGOhtsssU2O+yyxz4HHHLEMSeccsY5F1xyxTU33HLHPQ888sQzL7zyxjsffPLFNz/88sdA1X8GGWKYEUYZY5wJJplimhlmmWOeBRZZYpkVVlljnQ022WKbHXbZY58DDjnimBNOOeOcCy654pobbrnjngceeeKZF155450PPvnimx9++WPgn/rPIEMMM8IoY4wzwSRTTDPDLHPMs8AiSyyzwiprrLPBJltss8Mue+xzwCFHHHPCKWecc8ElV1xzwy133PPAI08888Irb7zzwSdffPPDL38M/DP/GWSIYUYYZYxxJphkimlmmGWOeRZYZIllVlhljXU22GSLbXbYZY99DjjkiGNOOOWMcy645IprbrjljnseeOSJZ1545Y13Pvjki29++OWPgX/uP4MMMcwIo4wxzgSTTDHNDLPMMc8CiyyxzAqrrLHOBptssc0Ou+yxzwGHHHHMCaeccc4Fl1xxzQ233HHPA4888cwLr7zxzgeffPHND7/8MVDzn0GGGGaEUcYYZ4JJpphmhlnmmGeBRZZYZoVV1lhng0222GaHXfbY54BDjjjmhFPOOOeCS6645oZb7rjngUeeeOaFV95454NPvvjmh1/+GPgX/jPIEMOMMMoY40wwyRTTzDDLHPMssMgSy6ywyhrrbLDJFtvssMse+xxwyBHHnHDKGedccMkV19xwyx33PPDIE8+88Mob73zwyRff/PDLHwP/0n8GGWKYEUYZY5wJJplimhlmmWOeBRZZYpkVVlljnQ022WKbHXbZY58DDjnimBNOOeOcCy654pobbrnjngceeeKZF155450PPvnimx9++WPgX/nPIEMMM8IoY4wzwSRTTDPDLHPMs8AiSyyzwiprrLPBJltss8Mue+xzwCFHHHPCKWecc8ElV1xzwy133PPAI08888Irb7zzwSdffPPDL38M1P1nkCGGGWGUMcaZYJIppplhljnmWWCRJZZZYZU11tlgky222WGXPfY54JAjjjnhlDPOueCSK6654ZY77nngkSeeeeGVN9754JMvvvnhlz8G/rX/DDLEMCOMMsY4E0wyxTQzzDLHPAssssQyK6yyxjobbLLFNjvsssc+BxxyxDEnnHLGORdccsU1N9xyxz0PPPLEMy+88sY7H3zyxTc//PLHwL/xn0GGGGaEUcYYZ4JJpphmhlnmmGeBRZZYZoVV1lhng0222GaHXfbY54BDjjjmhFPOOOeCS6645oZb7rjngUeeeOaFV95454NPvvjmh1/+GPi3/jPIEMOMMMoY40wwyRTTzDDLHPMssMgSy6ywyhrrbLDJFtvssMse+xxwyBHHnHDKGedccMkV19xwyx33PPDIE8+88Mob73zwyRff/PDLHwMN/xlkiGFGGGWMcSaYZIppZphljnkWWGSJZVZYZY11Nthki2122GWPfQ445IhjTjjljHMuuOSKa2645Y57HnjkiWdeeOWNdz745Itvfvjlj4F/5z+DDDHMCKOMMc4Ek0wxzQyzzDHPAossscwKq6yxzgabbLHNDrvssc8BhxxxzAmnnHHOBZdccc0Nt9xxzwOPPPHMC6+88c4Hn3zxzQ+//DHw7/1nkCGGGWGUMcaZYJIppplhljnmWWCRJZZZYZU11tlgky222WGXPfY54JAjjjnhlDPOueCSK6654ZY77nngkSeeeeGVN9754JMvvvnhlz8G/oP/DDLEMCOMMsY4E0wyxTQzzDLHPAssssQyK6yyxjobbLLFNjvsssc+BxxyxDEnnHLGORdccsU1N9xyxz0PPPLEMy+88sY7H3zyxTc//PLHQNN/BhlimBFGGWOcCSaZYpoZZpljngUWWWKZFVZZY50NNtlimx122WOfAw454pgTTjnjnAsuueKaG265454HHnnimRdeeeOdDz754psffvlj4D/6zyBDDDPCKGOMM8EkU0wzwyxzzLPAIksss8Iqa6yzwSZbbLPDLnvsc8AhRxxzwilnnHPBJVdcc8Mtd9zzwCNPPPPCK2+888EnX3zzwy9/DPwn/xlkiGFGGGWMcSaYZIppZphljnkWWGSJZVZYZY11Nthki2122GWPfQ445IhjTjjljHMuuOSKa2645Y57HnjkiWdeeOWNdz745Itvfvjlj4H/7D+DDDHMCKOMMc4Ek0wxzQyzzDHPAossscwKq6yxzgabbLHNDrvssc8BhxxxzAmnnHHOBZdccc0Nt9xxzwOPPPHMC6+88c4Hn3zxzQ+//DHQ8p9BhhhmhFHGGGeCSaaYZoZZ5phngUWWWGaFVdZYZ4NNtthmh1322OeAQ4445oRTzjjngkuuuOaGW+6454FHnnjmhVfeeOeDT7745odf/hj4L/4zyBDDjDDKGONMMMkU08wwyxzzLLDIEsus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YpsddtljnwMOOeKYE04545wLLrnimhtuueOeBx554pkXXnnjnQ8++eKbH375Y+Cf+s8gQwwzwihjjDPBJFNMM8Msc8yzwCJLLLPCKmuss8EmW2yzwy577HPAIUccc8IpZ5xzwSVXXHPDLXfc88AjTzzzwitvvPPBJ19888Mvfwz8M/8ZZIhhRhhljHEmmGSKaWaYZY55FlhkiWVWWGWNdTbYZIttdthlj30OOOSIY0445YxzLrjkimtuuOWOex545IlnXnjljXc++OSLb3745Y+Bf+4/gwwxzAijjDHOBJNMMc0Ms8wxzwKLLLHMCqussc4Gm2yxzQ677LHPAYccccwJp5xxzgWXXHHNDbfccc8DjzzxzAuvvPHOB5988c0Pv/wxMPOfQYYYZoRRxhhngkmmmGaGWeaYZ4FFllhmhVXWWGeDTbbYZodd9tjngEOOOOaEU84454JLrrjmhlvuuOeBR5545oVX3njng0+++OaHX/4Y+Bf+M8gQw4wwyhjjTDDJFNPMMMsc8yywyBLLrLDKGutssMkW2+ywyx77HHDIEceccMoZ51xwyRXX3HDLHfc88MgTz7zwyhvvfPDJF9/88MsfA3/qP4MMMcwIo4wxzgSTTDHNDLPMMc8CiyyxzAqrrLHOBptssc0Ou+yxzwGHHHHMCaeccc4Fl1xxzQ233HHPA4888cwLr7zxzgeffPHND7/8MfAv/WeQIYYZYZQxxplgkimmmWGWOeZZYJEllllhlTXW2WCTLbbZYZc99jngkCOOOeGUM8654JIrrrnhljvueeCRJ5554ZU33vngky+++eGXPwbm/jPIEMOMMMoY40wwyRTTzDDLHPMssMgSy6ywyhrrbLDJFtvssMse+xxwyBHHnHDKGedccMkV19xwyx33PPDIE8+88Mob73zwyRff/PDLHwP/yn8GGWKYEUYZY5wJJplimhlmmWOeBRZZYpkVVlljnQ022WKbHXbZY58DDjnimBNOOeOcCy654pobbrnjngceeeKZF155450PPvnimx9++WPgX/vPIEMMM8IoY4wzwSRTTDPDLHPMs8AiSyyzwiprrLPBJltss8Mue+xzwCFHHHPCKWecc8ElV1xzwy133PPAI08888Irb7zzwSdffPPDL38M/Bv/GWSIYUYYZYxxJphkimlmmGWOeRZYZIllVlhljXU22GSLbXbYZY99DjjkiGNOOOWMcy645IprbrjljnseeOSJZ1545Y13Pvjki29++OWPgYX/DDLEMCOMMsY4E0wyxTQzzDLHPAssssQyK6yyxjobbLLFNjvsssc+BxxyxDEnnHLGORdccsU1N9xyxz0PPPLEMy+88sY7H3zyxTc//PLHwL/1n0GGGGaEUcYYZ4JJpphmhlnmmGeBRZZYZoVV1lhng0222GaHXfbY54BDjjjmhFPOOOeCS6645oZb7rjngUeeeOaFV95454NPvvjmh1/+GPh3/jPIEMOMMMoY40wwyRTTzDDLHPMssMgSy6ywyhrrbLDJFtvssMse+xxwyBHHnHDKGedccMkV19xwyx33PPDIE8+88Mob73zwyRff/PDLHwP/3n8GGWKYEUYZY5wJJplimhlmmWOeBRZZYpkVVlljnQ022WKbHXbZY58DDjnimBNOOeOcCy654pobbrnjngceeeKZF155450PPvnimx9++WNg6T+DDDHMCKOMMc4Ek0wxzQyzzDHPAossscwKq6yxzgabbLHNDrvssc8BhxxxzAmnnHHOBZdccc0Nt9xxzwOPPPHMC6+88c4Hn3zxzQ+//DHwH/xnkCGGGWGUMcaZYJIppplhljnmWWCRJZZZYZU11tlgky222WGXPfY54JAjjjnhlDPOueCSK6654ZY77nngkSeeeeGVN9754JMvvvnhlz8G/qP/DDLEMCOMMsY4E0wyxTQzzDLHPAssssQyK6yyxjobbLLFNjvsssc+BxxyxDEnnHLGORdccsU1N9xyxz0PPPLEMy+88sY7H3zyxTc//PLHwH/yn0GGGGaEUcYYZ4JJpphmhlnmmGeBRZZYZoVV1lhng0222GaHXfbY54BDjjjmhFPOOOeCS6645oZb7rjngUeeeOaFV95454NPvvjmh1/+GFj5zyBDDDPCKGOMM8EkU0wzwyxzzLPAIksss8Iqa6yzwSZbbLPDLnvsc8AhRxxzwilnnHPBJVdcc8Mtd9zzwCNPPPPCK2+888EnX3zzwy9/DPxn/xlkiGFGGGWMcSaYZIppZphljnkWWGSJZVZYZY11Nthki2122GWPfQ445IhjTjjljHMuuOSKa2645Y57HnjkiWdeeOWNdz745Itvfvjlj4H/4j+DDDHMCKOMMc4Ek0wxzQyzzDHPAossscwKq6yxzgabbLHNDrvssc8BhxxxzAmnnHHOBZdccc0Nt9xxzwOPPPHMC6+88c4Hn3zxzQ+//DHwX/1nkCGGGWGUMcaZYJIppplhljnmWWCRJZZZYZU11tlgky222WGXPfY54JAjjjnhlDPOueCSK6654ZY77nngkSeeeeGVN9754JMvvvnhlz8G1v4zyBDDjDDKGONMMMkU08wwyxzzLLDIEsussMoa62ywyRbb7LDLHvsccMgRx5xwyhnnXHDJFdfccMsd9zzwyBPPvPDKG+988MkX3/zwyx8Df+Y/gwwxzAijjDHOBJNMMc0Ms8wxzwKLLLHMCqussc4Gm2yxzQ677LHPAYccccwJp5xxzgWXXHHNDbfccc8DjzzxzAuvvPHOB5988c0Pv/wx8N/8Z5AhhhlhlDHGmWCSKaaZYZY55llgkSWWWWGVNdbZYJMtttlhlz32OeCQI4454ZQzzrngkiuuueGWO+554JEnnnnhlTfe+eCTL7754Zc/Bv67/wwyxDAjjDLGOBNMMsU0M8wyxzwLLLLEMiusssY6G2yyxTY77LLHPgcccsQxJ5xyxjkXXHLFNTfccsc9DzzyxDMvvPLGOx988sU3P/zyx8DGfwYZYpgRRhljnAkmmWKaGWaZY54FFllimRVWWWOdDTbZYpsddtljnwMOOeKYE04545wLLrnimhtuueOeBx554pkXXnnjnQ8++eKbH375Y+B/+M8gQwwzwihjjDPBJFNMM8Msc8yzwCJLLLPCKmuss8EmW2yzwy577HPAIUccc8IpZ5xzwSVXXHPDLXfc88AjTzzzwitvvPPBJ19888Mvfwz8T/8ZZIhhRhhljHEmmGSKaWaYZY55FlhkiWVWWGWNdTbYZIttdthlj30OOOSIY0445YxzLrjkimtuuOWOex545IlnXnjljXc++OSLb3745Y+B/+U/gwwxzAijjDHOBJNMMc0Ms8wxzwKLLLHMCqussc4Gm2yxzQ677LHPAYccccwJp5xxzgWXXHHNDbfccc8DjzzxzAuvvPHOB5988c0Pv/wxsPWfQYYYZoRRxhhngkmmmGaGWeaYZ4FFllhmhVXWWGeDTbbYZodd9tjngEOOOOaEU84454JLrrjmhlvuuOeBR5545oVX3njng0+++OaHX/4Y+N/+M8gQw4wwyhjjTDDJFNPMMMsc8yywyBLLrLDKGutssMkW2+ywyx77HHDIEceccMoZ51xwyRXX3HDLHfc88MgTz7zwyhvvfPDJF9/88MsfA3/uP4MMMcwIo4wxzgSTTDHNDLPMMc8CiyyxzAqrrLHOBptssc0Ou+yxzwGHHHHMCaeccc4Fl1xxzQ233HHPA4888cwLr7zxzgeffPHND7/8MfAX/jPIEMOMMMoY40wwyRTTzDDLHPMssMgSy6ywyhrrbLDJFtvssMse+xxwyBHHnHDKGedccMkV19xwyx33PPDIE8+88Mob73zwyRff/PDLHwM7/xlkiGFGGGWMcSaYZIppZphljnkWWGSJZVZYZY11Nthki2122GWPfQ445IhjTjjljHMuuOSKa2645Y57HnjkiWdeeOWNdz745Itvfvjlj4G/9J9BhhhmhFHGGGeCSaaYZoZZ5phngUWWWGaFVdZYZ4NNtthmh1322OeAQ4445oRTzjjngkuuuOaGW+6454FHnnjmhVfeeOeDT7745odf/hj4P/4zyBDDjDDKGONMMMkU08wwyxzzLLDIEsussMoa62ywyRbb7LDLHvsccMgRx5xwyhnnXHDJFdfccMsd9zzwyBPPvPDKG+988MkX3/zwyx8D/9d/BhlimBFGGWOcCSaZYpoZZpljngUWWWKZFVZZY50NNtlimx122WOfAw454pgTTjnjnAsuueKaG265454HHnnimRdeeeOdDz754psffvljYP9X/j/T5ulAeJwt0a8fAQCA3mG3zwVBEARBEARBEARBEARBEARBEARBEARBEARBEARBEARBEARBsM0229zNNttss80227nNbbZzm23247PtecP7/AHfP9z/QeD/LsgQw4wwyhjjTDDJFNPMMMsc8yywyBLLrLDKGutssMkW2+ywyx77HHDIEceccMoZ51xwyRXX3HDLHfc88MgTz7zwyhvvfPDJF9/88MsfA3/5//uHDDLEMCOMMsY4E0wyxTQzzDLHPAssssQyK6yyxjobbLLFNjvsssc+BxxyxDEnnHLGORdccsU1N9xyxz0PPPLEMy+88sY7H3zyxTc//PLHwF/Rn0GGGGaEUcYYZ4JJpphmhlnmmGeBRZZYZoVV1lhng0222GaHXfbY54BDjjjmhFPOOOeCS6645oZb7rjngUeeeOaFV95454NPvvjmh1/+GPir+jPIEMOMMMoY40wwyRTTzDDLHPMssMgSy6ywyhrrbLDJFtvssMse+xxwyBHHnHDKGedccMkV19xwyx33PPDIE8+88Mob73zwyRff/PDLHwMH/RlkiGFGGGWMcSaYZIppZphljnkWWGSJZVZYZY11Nthki2122GWPfQ445IhjTjjljHMuuOSKa2645Y57HnjkiWdeeOWNdz745Itvfvjlj4G/pj+DDDHMCKOMMc4Ek0wxzQyzzDHPAossscwKq6yxzgabbLHNDrvssc8BhxxxzAmnnHHOBZdccc0Nt9xxzwOPPPHMC6+88c4Hn3zxzQ+//DHw1/VnkCGGGWGUMcaZYJIppplhljnmWWCRJZZZYZU11tlgky222WGXPfY54JAjjjnhlDPOueCSK6654ZY77nngkSeeeeGVN9754JMvvvnhlz8G/ob+DDLEMCOMMsY4E0wyxTQzzDLHPAssssQyK6yyxjobbLLFNjvsssc+BxxyxDEnnHLGORdccsU1N9xyxz0PPPLEMy+88sY7H3zyxTc//PLHwFF/BhlimBFGGWOcCSaZYpoZZpljngUWWWKZFVZZY50NNtlimx122WOfAw454pgTTjnjnAsuueKaG265454HHnnimRdeeeOdDz754psffvlj4G/qzyBDDDPCKGOMM8EkU0wzwyxzzLPAIksss8Iqa6yzwSZbbLPDLnvsc8AhRxxzwilnnHPBJVdcc8Mtd9zzwCNPPPPCK2+888EnX3zzwy9/DPwt/RlkiGFGGGWMcSaYZIppZphljnkWWGSJZVZYZY11Nthki2122GWPfQ445IhjTjjljHMuuOSKa2645Y57HnjkiWdeeOWNdz745Itvfvjlj4G/rT+DDDHMCKOMMc4Ek0wxzQyzzDHPAossscwKq6yxzgabbLHNDrvssc8BhxxxzAmnnHHOBZdccc0Nt9xxzwOPPPHMC6+88c4Hn3zxzQ+//DFw0p9BhhhmhFHGGGeCSaaYZoZZ5phngUWWWGaFVdZYZ4NNtthmh1322OeAQ4445oRTzjjngkuuuOaGW+6454FHnnjmhVfeeOeDT7745odf/hj4I/0ZZIhhRhhljHEmmGSKaWaYZY55FlhkiWVWWGWNdTbYZIttdthlj30OOOSIY0445YxzLrjkimtuuOWOex545IlnXnjljXc++OSLb3745Y+BP9afQYYYZoRRxhhngkmmmGaGWeaYZ4FFllhmhVXWWGeDTbbYZodd9tjngEOOOOaEU84454JLrrjmhlvuuOeBR5545oVX3njng0+++OaHX/4Y+Dv6M8gQw4wwyhjjTDDJFNPMMMsc8yywyBLLrLDKGutssMkW2+ywyx77HHDIEceccMoZ51xwyRXX3HDLHfc88MgTz7zwyhvvfPDJF9/88MsfA2f9GWSIYUYYZYxxJphkimlmmGWOeRZYZIllVlhljXU22GSLbXbYZY99DjjkiGNOOOWMcy645IprbrjljnseeOSJZ1545Y13Pvjki29++OWPgb+rP4MMMcwIo4wxzgSTTDHNDLPMMc8CiyyxzAqrrLHOBptssc0Ou+yxzwGHHHHMCaeccc4Fl1xxzQ233HHPA4888cwLr7zxzgeffPHND7/8MfD39GeQIYYZYZQxxplgkimmmWGWOeZZYJEllllhlTXW2WCTLbbZYZc99jngkCOOOeGUM8654JIrrrnhljvueeCRJ5554ZU33vngky+++eGXPwb+vv4MMsQwI4wyxjgTTDLFNDPMMsc8CyyyxDIrrLLGOhtsssU2O+yyxz4HHHLEMSeccsY5F1xyxTU33HLHPQ888sQzL7zyxjsffPLFNz/88sfARX8GGWKYEUYZY5wJJplimhlmmWOeBRZZYpkVVlljnQ022WKbHXbZY58DDjnimBNOOeOcCy654pobbrnjngceeeKZF155450PPvnimx9++WPgH+jPIEMMM8IoY4wzwSRTTDPDLHPMs8AiSyyzwiprrLPBJltss8Mue+xzwCFHHHPCKWecc8ElV1xzwy133PPAI08888Irb7zzwSdffPPDL38M/EP9GWSIYUYYZYxxJphkimlmmGWOeRZYZIllVlhljXU22GSLbXbYZY99DjjkiGNOOOWMcy645IprbrjljnseeOSJZ1545Y13Pvjki29++OWPgX+kP4MMMcwIo4wxzgSTTDHNDLPMMc8CiyyxzAqrrLHOBptssc0Ou+yxzwGHHHHMCaeccc4Fl1xxzQ233HHPA4888cwLr7zxzgeffPHND7/8MXDVn0GGGGaEUcYYZ4JJpphmhlnmmGeBRZZYZoVV1lhng0222GaHXfbY54BDjjjmhFPOOOeCS6645oZb7rjngUeeeOaFV95454NPvvjmh1/+GPjH+jPIEMOMMMoY40wwyRTTzDDLHPMssMgSy6ywyhrrbLDJFtvssMse+xxwyBHHnHDKGedccMkV19xwyx33PPDIE8+88Mob73zwyRff/PDLHwP/RH8GGWKYEUYZY5wJJplimhlmmWOeBRZZYpkVVlljnQ022WKbHXbZY58DDjnimBNOOeOcCy654pobbrnjngceeeKZF155450PPvnimx9++WPgn+rPIEMMM8IoY4wzwSRTTDPDLHPMs8AiSyyzwiprrLPBJltss8Mue+xzwCFHHHPCKWecc8ElV1xzwy133PPAI08888Irb7zzwSdffPPDL38M3PRnkCGGGWGUMcaZYJIppplhljnmWWCRJZZZYZU11tlgky222WGXPfY54JAjjjnhlDPOueCSK6654ZY77nngkSeeeeGVN9754JMvvvnhlz8G/pn+DDLEMCOMMsY4E0wyxTQzzDLHPAssssQyK6yyxjobbLLFNjvsssc+BxxyxDEnnHLGORdccsU1N9xyxz0PPPLEMy+88sY7H3zyxTc//PLHwD/Xn0GGGGaEUcYYZ4JJpphmhlnmmGeBRZZYZoVV1lhng0222GaHXfbY54BDjjjmhFPOOOeCS6645oZb7rjngUeeeOaFV95454NPvvjmh1/+GPgX+jPIEMOMMMoY40wwyRTTzDDLHPMssMgSy6ywyhrrbLDJFtvssMse+xxwyBHHnHDKGedccMkV19xwyx33PPDIE8+88Mob73zwyRff/PDLHwN3/RlkiGFGGGWMcSaYZIppZphljnkWWGSJZVZYZY11Nthki2122GWPfQ445IhjTjjljHMuuOSKa2645Y57HnjkiWdeeOWNdz745Itvfvjlj4F/qT+DDDHMCKOMMc4Ek0wxzQyzzDHPAossscwKq6yxzgabbLHNDrvssc8BhxxxzAmnnHHOBZdccc0Nt9xxzwOPPPHMC6+88c4Hn3zxzQ+//DHwr/RnkCGGGWGUMcaZYJIppplhljnmWWCRJZZZYZU11tlgky222WGXPfY54JAjjjnhlDPOueCSK6654ZY77nngkSeeeeGVN9754JMvvvnhlz8G/rX+DDLEMCOMMsY4E0wyxTQzzDLHPAssssQyK6yyxjobbLLFNjvsssc+BxxyxDEnnHLGORdccsU1N9xyxz0PPPLEMy+88sY7H3zyxTc//PLHwEN/BhlimBFGGWOcCSaZYpoZZpljngUWWWKZFVZZY50NNtlimx122WOfAw454pgTTjnjnAsuueKaG265454HHnnimRdeeeOdDz754psffvlj4N/ozyBDDDPCKGOMM8EkU0wzwyxzzLPAIksss8Iqa6yzwSZbbLPDLnvsc8AhRxxzwilnnHPBJVdcc8Mtd9zzwCNPPPPCK2+888EnX3zzwy9/DPxb/RlkiGFGGGWMcSaYZIppZphljnkWWGSJZVZYZY11Nthki2122GWPfQ445IhjTjjljHMuuOSKa2645Y57HnjkiWdeeOWNdz745Itvfvjlj4E/0Z9BhhhmhFHGGGeCSaaYZoZZ5phngUWWWGaFVdZYZ4NNtthmh1322OeAQ4445oRTzjjngkuuuOaGW+6454FHnnjmhVfeeOeDT7745odf/hh46s8gQwwzwihjjDPBJFNMM8Msc8yzwCJLLLPCKmuss8EmW2yzwy577HPAIUccc8IpZ5xzwSVXXHPDLXfc88AjTzzzwitvvPPBJ19888Mvfwz8qf4MMsQwI4wyxjgTTDLFNDPMMsc8CyyyxDIrrLLGOhtsssU2O+yyxz4HHHLEMSeccsY5F1xyxTU33HLHPQ888sQzL7zyxjsffPLFNz/88sfAv9OfQYYYZoRRxhhngkmmmGaGWeaYZ4FFllhmhVXWWGeDTbbYZodd9tjngEOOOOaEU84454JLrrjmhlvuuOeBR5545oVX3njng0+++OaHX/4Y+Pf6M8gQw4wwyhjjTDDJFNPMMMsc8yywyBLLrLDKGutssMkW2+ywyx77HHDIEceccMoZ51xwyRXX3HDLHfc88MgTz7zwyhvvfPDJF9/88MsfAy/9GWSIYUYYZYxxJphkimlmmGWOeRZYZIllVlhljXU22GSLbXbYZY99DjjkiGNOOOWMcy645IprbrjljnseeOSJZ1545Y13Pvjki29++OWPgT/Tn0GGGGaEUcYYZ4JJpphmhlnmmGeBRZZYZoVV1lhng0222GaHXfbY54BDjjjmhFPOOOeCS6645oZb7rjngUeeeOaFV95454NPvvjmh1/+GPgP+jPIEMOMMMoY40wwyRTTzDDLHPMssMgSy6ywyhrrbLDJFtvssMse+xxwyBHHnHDKGedccMkV19xwyx33PPDIE8+88Mob73zwyRff/PDLHwP/UX8GGWKYEUYZY5wJJplimhlmmWOeBRZZYpkVVlljnQ022WKbHXbZY58DDjnimBNOOeOcCy654pobbrnjngceeeKZF155450PPvnimx9++WPgrT+DDDHMCKOMMc4Ek0wxzQyzzDHPAossscwKq6yxzgabbLHNDrvssc8BhxxxzAmnnHHOBZdccc0Nt9xxzwOPPPHMC6+88c4Hn3zxzQ+//DHwn/RnkCGGGWGUMcaZYJIppplhljnmWWCRJZZZYZU11tlgky222WGXPfY54JAjjjnhlDPOueCSK6654ZY77nngkSeeeeGVN9754JMvvvnhlz8G/rP+DDLEMCOMMsY4E0wyxTQzzDLHPAssssQyK6yyxjobbLLFNjvsssc+BxxyxDEnnHLGORdccsU1N9xyxz0PPPLEMy+88sY7H3zyxTc//PLHwJ/rzyBDDDPCKGOMM8EkU0wzwyxzzLPAIksss8Iqa6yzwSZbbLPDLnvsc8AhRxxzwilnnHPBJVdcc8Mtd9zzwCNPPPPCK2+888EnX3zzwy9/DHz0Z5AhhhlhlDHGmWCSKaaZYZY55llgkSWWWWGVNdbZYJMtttlhlz32OeCQI4454ZQzzrngkiuuueGWO+554JEnnnnhlTfe+eCTL7754Zc/Bv5CfwYZYpgRRhljnAkmmWKaGWaZY54FFllimRVWWWOdDTbZYpsddtljnwMOOeKYE04545wLLrnimhtuueOeBx554pkXXnnjnQ8++eKbH375Y+C/6M8gQwwzwihjjDPBJFNMM8Msc8yzwCJLLLPCKmuss8EmW2yzwy577HPAIUccc8IpZ5xzwSVXXHPDLXfc88AjTzzzwitvvPPBJ19888Mvfwz8V/0ZZIhhRhhljHEmmGSKaWaYZY55FlhkiWVWWGWNdTbYZIttdthlj30OOOSIY0445YxzLrjkimtuuOWOex545IlnXnjljXc++OSLb3745Y+Br/4MMsQwI4wyxjgTTDLFNDPMMsc8CyyyxDIrrLLGOhtsssU2O+yyxz4HHHLEMSeccsY5F1xyxTU33HLHPQ888sQzL7zyxjsffPLFNz/88sfAf9OfQYYYZoRRxhhngkmmmGaGWeaYZ4FFllhmhVXWWGeDTbbYZodd9tjngEOOOOaEU84454JLrrjmhlvuuOeBR5545oVX3njng0+++OaHX/4Y+O/6M8gQw4wwyhjjTDDJFNPMMMsc8yywyBLLrLDKGutssMkW2+ywyx77HHDIEceccMoZ51xwyRXX3HDLHfc88MgTz7zwyhvvfPDJF9/88MsfA/9DfwYZYpgRRhljnAkmmWKaGWaZY54FFllimRVWWWOdDTbZYpsddtljnwMOOeKYE04545wLLrnimhtuueOeBx554pkXXnnjnQ8++eKbH375Y+CnP4MMMcwIo4wxzgSTTDHNDLPMMc8CiyyxzAqrrLHOBptssc0Ou+yxzwGHHHHMCaeccc4Fl1xxzQ233HHPA4888cwLr7zxzgeffPHND7/8MfA/9WeQIYYZYZQxxplgkimmmWGWOeZZYJEllllhlTXW2WCTLbbZYZc99jngkCOOOeGUM8654JIrrrnhljvueeCRJ5554ZU33vngky+++eGXPwb+l/4MMsQwI4wyxjgTTDLFNDPMMsc8CyyyxDIrrLLGOhtsssU2O+yyxz4HHHLEMSeccsY5F1xyxTU33HLHPQ888sQzL7zyxjsffPLFNz/88sfA/9afQYYYZoRRxhhngkmmmGaGWeaYZ4FFllhmhVXWWGeDTbbYZodd9tjngEOOOOaEU84454JLrrjmhlvuuOeBR5545oVX3njng0+++OaHX/4YCPyl//f/B86B6H14nC3WIRcCgJaVURyfiorKKCoqKjqoqKioqKioBAKBQCAQCAQCgUAgEAgEAoFAIBAIBAKBQCAQCAQCgUAgEAgEAoFAIBAIjr59y/4B3zpr3T8E/iTw/y7IEMOMMMoY40wwyRTTzDDLHPMssMgSy6ywyhrrbLDJFtvssMse+xxwyBHHnHDKGedccMkV19xwyx33PPDIE8+88Mob73zwyRff/PDLHwN/4Y/+gUGGGGaEUcYYZ4JJpphmhlnmmGeBRZZYZoVV1lhng0222GaHXfbY54BDjjjmhFPOOOeCS6645oZb7rjngUeeeOaFV95454NPvvjmh1/+GPgT/RlkiGFGGGWMcSaYZIppZphljnkWWGSJZVZYZY11Nthki2122GWPfQ445IhjTjjljHMuuOSKa2645Y57HnjkiWdeeOWNdz745Itvfvjlj4G/qD+DDDHMCKOMMc4Ek0wxzQyzzDHPAossscwKq6yxzgabbLHNDrvssc8BhxxxzAmnnHHOBZdccc0Nt9xxzwOPPPHMC6+88c4Hn3zxzQ+//PHPh/9HGGSIYUYYZYxxJphkimlmmGWOeRZYZIllVlhljXU22GSLbXbYZY99DjjkiGNOOOWMcy645IprbrjljnseeOSJZ1545Y13Pvjki29++OWPgb+kP4MMMcwIo4wxzgSTTDHNDLPMMc8CiyyxzAqrrLHOBptssc0Ou+yxzwGHHHHMCaeccc4Fl1xxzQ233HHPA4888cwLr7zxzgeffPHND7/8MfCX9WeQIYYZYZQxxplgkimmmWGWOeZZYJEllllhlTXW2WCTLbbZYZc99jngkCOOOeGUM8654JIrrrnhljvueeCRJ5554ZU33vngky+++eGXPwb+iv4MMsQwI4wyxjgTTDLFNDPMMsc8CyyyxDIrrLLGOhtsssU2O+yyxz4HHHLEMSeccsY5F1xyxTU33HLHPQ888sQzL7zyxjsffPLFNz/88sc/f/j/P39gkCGGGWGUMcaZYJIppplhljnmWWCRJZZZYZU11tlgky222WGXPfY54JAjjjnhlDPOueCSK6654ZY77nngkSeeeeGVN9754JMvvvnhlz8G/qr+DDLEMCOMMsY4E0wyxTQzzDLHPAssssQyK6yyxjobbLLFNjvsssc+BxxyxDEnnHLGORdccsU1N9xyxz0PPPLEMy+88sY7H3zyxTc//PLHwF/Tn0GGGGaEUcYYZ4JJpphmhlnmmGeBRZZYZoVV1lhng0222GaHXfbY54BDjjjmhFPOOOeCS6645oZb7rjngUeeeOaFV95454NPvvjmh1/+GPjr+jPIEMOMMMoY40wwyRTTzDDLHPMssMgSy6ywyhrrbLDJFtvssMse+xxwyBHHnHDKGedccMkV19xwyx33PPDIE8+88Mob73zwyRff/PDLHwMh/RlkiGFGGGWMcSaYZIppZphljnkWWGSJZVZYZY11Nthki2122GWPfQ445IhjTjjljHMuuOSKa2645Y57HnjkiWdeeOWNdz745Itvfvjlj4G/oT+DDDHMCKOMMc4Ek0wxzQyzzDHPAossscwKq6yxzgabbLHNDrvssc8BhxxxzAmnnHHOBZdccc0Nt9xxzwOPPPHMC6+88c4Hn3zxzQ+//DHwN/VnkCGGGWGUMcaZYJIppplhljnmWWCRJZZZYZU11tlgky222WGXPfY54JAjjjnhlDPOueCSK6654ZY77nngkSeeeeGVN9754JMvvvnhlz8G/pb+DDLEMCOMMsY4E0wyxTQzzDLHPAssssQyK6yyxjobbLLFNjvsssc+BxxyxDEnnHLGORdccsU1N9xyxz0PPPLEMy+88sY7H3zyxTc//PLHQFh/BhlimBFGGWOcCSaZYpoZZpljngUWWWKZFVZZY50NNtlimx122WOfAw454pgTTjnjnAsuueKaG265454HHnnimRdeeeOdDz754psffvlj4E/1Z5AhhhlhlDHGmWCSKaaZYZY55llgkSWWWWGVNdbZYJMtttlhlz32OeCQI4454ZQzzrngkiuuueGWO+554JEnnnnhlTfe+eCTL7754Zc/Bv62/gwyxDAjjDLGOBNMMsU0M8wyxzwLLLLEMiusssY6G2yyxTY77LLHPgcccsQxJ5xyxjkXXHLFNTfccsc9DzzyxDMvvPLGOx988sU3P/zyx8Df0Z9BhhhmhFHGGGeCSaaYZoZZ5phngUWWWGaFVdZYZ4NNtthmh1322OeAQ4445oRTzjjngkuuuOaGW+6454FHnnjmhVfeeOeDT7745odf/hiI6M8gQwwzwihjjDPBJFNMM8Msc8yzwCJLLLPCKmuss8EmW2yzwy577HPAIUccc8IpZ5xzwSVXXHPDLXfc88AjTzzzwitvvPPBJ19888Mvfwz8Xf0ZZIhhRhhljHEmmGSKaWaYZY55FlhkiWVWWGWNdTbYZIttdthlj30OOOSIY0445YxzLrjkimtuuOWOex545IlnXnjljXc++OSLb3745Y+Bv6c/gwwxzAijjDHOBJNMMc0Ms8wxzwKLLLHMCqussc4Gm2yxzQ677LHPAYccccwJp5xxzgWXXHHNDbfccc8DjzzxzAuvvPHOB5988c0Pv/wx8Pf1Z5AhhhlhlDHGmWCSKaaZYZY55llgkSWWWWGVNdbZYJMtttlhlz32OeCQI4454ZQzzrngkiuuueGWO+554JEnnnnhlTfe+eCTL7754Zc/BqL6M8gQw4wwyhjjTDDJFNPMMMsc8yywyBLLrLDKGutssMkW2+ywyx77HHDIEceccMoZ51xwyRXX3HDLHfc88MgTz7zwyhvvfPDJF9/88MsfA/9AfwYZYpgRRhljnAkmmWKaGWaZY54FFllimRVWWWOdDTbZYpsddtljnwMOOeKYE04545wLLrnimhtuueOeBx554pkXXnnjnQ8++eKbH375Y+Af6s8gQwwzwihjjDPBJFNMM8Msc8yzwCJLLLPCKmuss8EmW2yzwy577HPAIUccc8IpZ5xzwSVXXHPDLXfc88AjTzzzwitvvPPBJ19888Mvfwz8I/0ZZIhhRhhljHEmmGSKaWaYZY55FlhkiWVWWGWNdTbYZIttdthlj30OOOSIY0445YxzLrjkimtuuOWOex545IlnXnjljXc++OSLb3745Y+BmP4MMsQwI4wyxjgTTDLFNDPMMsc8CyyyxDIrrLLGOhtsssU2O+yyxz4HHHLEMSeccsY5F1xyxTU33HLHPQ888sQzL7zyxjsffPLFNz/88sfAP9afQYYYZoRRxhhngkmmmGaGWeaYZ4FFllhmhVXWWGeDTbbYZodd9tjngEOOOOaEU84454JLrrjmhlvuuOeBR5545oVX3njng0+++OaHX/4Y+Cf6M8gQw4wwyhjjTDDJFNPMMMsc8yywyBLLrLDKGutssMkW2+ywyx77HHDIEceccMoZ51xwyRXX3HDLHfc88MgTz7zwyhvvfPDJF9/88MsfA/9UfwYZYpgRRhljnAkmmWKaGWaZY54FFllimRVWWWOdDTbZYpsddtljnwMOOeKYE04545wLLrnimhtuueOeBx554pkXXnnjnQ8++eKbH375YyCuP4MMMcwIo4wxzgSTTDHNDLPMMc8CiyyxzAqrrLHOBptssc0Ou+yxzwGHHHHMCaeccc4Fl1xxzQ233HHPA4888cwLr7zxzgeffPHND7/8MfDP9GeQIYYZYZQxxplgkimmmWGWOeZZYJEllllhlTXW2WCTLbbZYZc99jngkCOOOeGUM8654JIrrrnhljvueeCRJ5554ZU33vngky+++eGXPwb+uf4MMsQwI4wyxjgTTDLFNDPMMsc8CyyyxDIrrLLGOhtsssU2O+yyxz4HHHLEMSeccsY5F1xyxTU33HLHPQ888sQzL7zyxjsffPLFNz/88sfAn+nPIEMMM8IoY4wzwSRTTDPDLHPMs8AiSyyzwiprrLPBJltss8Mue+xzwCFHHHPCKWecc8ElV1xzwy133PPAI08888Irb7zzwSdffPPDL38MJPRnkCGGGWGUMcaZYJIppplhljnmWWCRJZZZYZU11tlgky222WGXPfY54JAjjjnhlDPOueCSK6654ZY77nngkSeeeeGVN9754JMvvvnhlz8G/oX+DDLEMCOMMsY4E0wyxTQzzDLHPAssssQyK6yyxjobbLLFNjvsssc+BxxyxDEnnHLGORdccsU1N9xy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vPLGOx988sU3P/zyx0BOfwYZYpgRRhljnAkmmWKaGWaZY54FFllimRVWWWOdDTbZYpsddtljnwMOOeKYE04545wLLrnimhtuueOeBx554pkXXnnjnQ8++eKbH375Y+B/6c8gQwwzwihjjDPBJFNMM8Msc8yzwCJLLLPCKmuss8EmW2yzwy577HPAIUccc8IpZ5xzwSVXXHPDLXfc88AjTzzzwitvvPPBJ19888Mvfwz8b/0ZZIhhRhhljHEmmGSKaWaYZY55FlhkiWVWWGWNdTbYZIttdthlj30OOOSIY0445YxzLrjkimtuuOWOex545IlnXnjljXc++OSLb3745Y+B/6M/gwwxzAijjDHOBJNMMc0Ms8wxzwKLLLHMCqussc4Gm2yxzQ677LHPAYccccwJp5xxzgWXXHHNDbfccc8DjzzxzAuvvPHOB5988c0Pv/wxkP+j/xcsy/jIeJwt0aEXAQCA2GFv74IgCIIgCIIgCIIg2GabbXazm93ZZpttttlmd7bZndtsEwRBEARBEARBEARBEARBEARBEARBEARB2Nu771e+P+D3B/m/Fvj/BRlimBFGGWOcCSaZYpoZZpljngUWWWKZFVZZY50NNtlimx122WOfAw454pgTTjnjnAsuueKaG265454HHnnimRdeeeOdDz754psffvlj4K//lX/AIEMMM8IoY4wzwSRTTDPDLHPMs8AiSyyzwiprrLPBJltss8Mue+xzwCFHHHPCKWecc8ElV1xzwy133PPAI08888Irb7zzwSdffPPDL38M/A3/GWSIYUYYZYxxJphkimlmmGWOeRZYZIllVlhljXU22GSLbXbYZY99DjjkiGNOOOWMcy645IprbrjljnseeOSJZ1545Y13Pvjki29++OWPgb/pP4MMMcwIo4wxzgSTTDHNDLPMMc8CiyyxzAqrrLHOBptssc0Ou+yxzwGHHHHMCaeccc4Fl1xxzQ233HHPA4888cwLr7zxzgeffPHND7/8MVDwn0GGGGaEUcYYZ4JJpphmhlnmmGeBRZZYZoVV1lhng0222GaHXfbY54BDjjjmhFPOOOeCS6645oZb7rjngUeeeOaFV95454NPvvjmh1/+GPhb/jPIEMOMMMoY40wwyRTTzDDLHPMssMgSy6ywyhrrbLDJFtvssMse+xxwyBHHnHDKGedccMkV19xwyx33PPDIE8+88Mob73zwyRff/PDLHwN/238GGWKYEUYZY5wJJplimhlmmWOeBRZZYpkVVlljnQ022WKbHXbZY58DDjnimBNOOeOcCy654pobbrnjngceeeKZF155450PPvnimx9++WPg7/jPIEMMM8IoY4wzwSRTTDPDLHPMs8AiSyyzwiprrLPBJltss8Mue+xzwCFHHHPCKWecc8ElV1xzwy133PPAI08888Irb7zzwSdffPPDL38MFP1nkCGGGWGUMcaZYJIppplhljnmWWCRJZZZYZU11tlgky222WGXPfY54JAjjjnhlDPOueCSK6654ZY77nngkSeeeeGVN9754JMvvvnhlz8G/q7/DDLEMCOMMsY4E0wyxTQzzDLHPAssssQyK6yyxjobbLLFNjvsssc+BxxyxDEnnHLGORdccsU1N9xyxz0PPPLEMy+88sY7H3zyxTc//PLHwN/zn0GGGGaEUcYYZ4JJpphmhlnmmGeBRZZYZoVV1lhng0222GaHXfbY54BDjjjmhFPOOOeCS6645oZb7rjngUeeeOaFV95454NPvvjmh1/+GPj7/jPIEMOMMMoY40wwyRTTzDDLHPMssMgSy6ywyhrrbLDJFtvssMse+xxwyBHHnHDKGedccMkV19xwyx33PPDIE8+88Mob73zwyRff/PDLHwMl/xlkiGFGGGWMcSaYZIppZphljnkWWGSJZVZYZY11Nthki2122GWPfQ445IhjTjjljHMuuOSKa2645Y57HnjkiWdeeOWNdz745Itvfvjlj4F/4D+DDDHMCKOMMc4Ek0wxzQyzzDHPAossscwKq6yxzgabbLHNDrvssc8BhxxxzAmnnHHOBZdccc0Nt9xxzwOPPPHMC6+88c4Hn3zxzQ+//DHwh/4zyBDDjDDKGONMMMkU08wwyxzzLLDIEsussMoa62ywyRbb7LDLHvsccMgRx5xwyhnnXHDJFdfccMsd9zzwyBPPvPDKG+988MkX3/zwyx8D/9B/BhlimBFGGWOcCSaZYpoZZpljngUWWWKZFVZZY50NNtlimx122WOfAw454pgTTjnjnAsuueKaG265454HHnnimRdeeeOdDz754psffvljoOw/gwwxzAijjDHOBJNMMc0Ms8wxzwKLLLHMCqussc4Gm2yxzQ677LHPAYccccwJp5xxzgWXXHHNDbfccc8DjzzxzAuvvPHOB5988c0Pv/wx8I/8Z5AhhhlhlDHGmWCSKaaZYZY55llgkSWWWWGVNdbZYJMtttlhlz32OeCQI4454ZQzzrngkiuuueGWO+554JEnnnnhlTfe+eCTL7754Zc/Bv7IfwYZYpgRRhljnAkmmWKaGWaZY54FFllimRVWWWOdDTbZYpsddtljnwMOOeKYE04545wLLrnimhtuueOeBx554pkXXnnjnQ8++eKbH375Y+Af+88gQwwzwihjjDPBJFNMM8Msc8yzwCJLLLPCKmuss8EmW2yzwy577HPAIUccc8IpZ5xzwSVXXHPDLXfc88AjTzzzwitvvPPBJ19888MvfwxU/GeQIYYZYZQxxplgkimmmWGWOeZZYJEllllhlTXW2WCTLbbZYZc99jngkCOOOeGUM8654JIrrrnhljvueeCRJ5554ZU33vngky+++eGXPwb+if8MMsQwI4wyxjgTTDLFNDPMMsc8CyyyxDIrrLLGOhtsssU2O+yyxz4HHHLEMSeccsY5F1xyxTU33HLHPQ888sQzL7zyxjsffPLFNz/88sfAH/vPIEMMM8IoY4wzwSRTTDPDLHPMs8AiSyyzwiprrLPBJltss8Mue+xzwCFHHHPCKWecc8ElV1xzwy133PPAI08888Irb7zzwSdffPPDL38M/In/DDLEMCOMMsY4E0wyxTQzzDLHPAssssQyK6yyxjobbLLFNjvsssc+BxxyxDEnnHLGORdccsU1N9xyxz0PPPLEMy+88sY7H3zyxTc//PLHQNV/BhlimBFGGWOcCSaZYpoZZpljngUWWWKZFVZZY50NNtlimx122WOfAw454pgTTjnjnAsuueKaG265454HHnnimRdeeeOdDz754psffvlj4J/6zyBDDDPCKGOMM8EkU0wzwyxzzLPAIksss8Iqa6yzwSZbbLPDLnvsc8AhRxxzwilnnHPBJVdcc8Mtd9zzwCNPPPPCK2+888EnX3zzwy9/DPwz/xlkiGFGGGWMcSaYZIppZphljnkWWGSJZVZYZY11Nthki2122GWPfQ445IhjTjjljHMuuOSKa2645Y57HnjkiWdeeOWNdz745Itvfvjlj4F/7j+DDDHMCKOMMc4Ek0wxzQyzzDHPAossscwKq6yxzgabbLHNDrvssc8BhxxxzAmnnHHOBZdccc0Nt9xxzwOPPPHMC6+8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/DHw3/xnkCGGGWGUMcaZYJIppplhljnmWWCRJZZZYZU11tlgky222WGXPfY54JAjjjnhlDPOueCSK6654ZY77nngkSeeeeGVN9754JMvvvnhlz8G/rv/DDLEMCOMMsY4E0wyxTQzzDLHPAssssQyK6yyxjobbLLFNjvsssc+BxxyxDEnnHLGORdccsU1N9xyxz0PPPLEMy+88sY7H3zyxTc//PLHQMd/BhlimBFGGWOcCSaZYpoZZpljngUWWWKZFVZZY50NNtlimx122WOfAw454pgTTjnjnAsuueKaG265454HHnnimRdeeeOdDz754psffvlj4H/4zyBDDDPCKGOMM8EkU0wzwyxzzLPAIksss8Iqa6yzwSZbbLPDLnvsc8AhRxxzwilnnHPBJVdcc8Mtd9zzwCNPPPPCK2+888EnX3zzwy9/DPy5/wwyxDAjjDLGOBNMMsU0M8wyxzwLLLLEMiusssY6G2yyxTY77LLHPgcccsQxJ5xyxjkXXHLFNTfccsc9DzzyxDMvvPLGOx988sU3P/zyx8Bf+M8gQwwzwihjjDPBJFNMM8Msc8yzwCJLLLPCKmuss8EmW2yzwy577HPAIUccc8IpZ5xzwSVXXHPDLXfc88AjTzzzwitvvPPBJ19888Mvfwx0/WeQIYYZYZQxxplgkimmmWGWOeZZYJEllllhlTXW2WCTLbbZYZc99jngkCOOOeGUM8654JIrrrnhljvueeCRJ5554ZU33vngky+++eGXPwb+0n8GGWKYEUYZY5wJJplimhlmmWOeBRZZYpkVVlljnQ022WKbHXbZY58DDjnimBNOOeOcCy654pobbrnjngceeeKZF155450PPvnimx9++WPgf/rPIEMMM8IoY4wzwSRTTDPDLHPMs8AiSyyzwiprrLPBJltss8Mue+xzwCFHHHPCKWecc8ElV1xzwy133PPAI08888Irb7zzwSdffPPDL38M/C//GWSIYUYYZYxxJphkimlmmGWOeRZYZIllVlhljXU22GSLbXbYZY99DjjkiGNOOOWMcy645IprbrjljnseeOSJZ1545Y13Pvjki29++OWPgZ7/DDLEMCOMMsY4E0wyxTQzzDLHPAssssQyK6yyxjobbLLFNjvsssc+BxxyxDEnnHLGORdccsU1N9xyxz0PPPLEMy+88sY7H3zyxTc//PLHwP/2n0GGGGaEUcYYZ4JJpphmhlnmmGeBRZZYZoVV1lhng0222GaHXfbY54BDjjjmhFPOOOeCS6645oZb7rjngUeeeOaFV95454NPvvjmh1/+GPg//jPIEMOMMMoY40wwyRTTzDDLHPMssMgSy6ywyhrrbLDJFtvssMse+xxwyBHHnHDKGedccMkV19xwyx33PPDIE8+88Mob73zwyRff/PDLHwP/138GGWKYEUYZY5wJJplimhlmmWOeBRZZYpkVVlljnQ022WKbHXbZY58DDjnimBNOOeOcCy654pobbrnjngceeeKZF155450PPvnimx9++WOg/1f+Py5g+QR4nC3RoRcBAGLAYW/vgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiC4zd1s5zbbbLP3BEEQBEEQBEEQBEEQBEEQBEEQhL179/3K9wf8/tD/h8DfCjLEMCOMMsY4E0wyxTQzzDLHPAssssQyK6yyxjobbLLFNjvsssc+BxxyxDEnnHLGORdccsU1N9xyxz0PPPLEMy+88sY7H3zyxTc//PLHwB//7h8YZIhhRhhljHEmmGSKaWaYZY55FlhkiWVWWGWNdTbYZIttdthlj30OOOSIY0445YxzLrjkimtuuOWOex545IlnXnjljXc++OSLb3745Y+Bf/SfQYYYZoRRxhhngkmmmGaGWeaYZ4FFllhmhVXWWGeDTbbYZodd9tjngEOOOOaEU84454JLrrjmhlvuuOeBR5545oVX3njng0+++OaHX/4Y+Cf/GWSIYUYYZYxxJphkimlmmGWOeRZYZIllVlhljXU22GSLbXbYZY99DjjkiGNOOOWMcy645IprbrjljnseeOSJZ1545Y13Pvjki29++OWPgYH/DDLEMCOMMsY4E0wyxTQzzDLHPAssssQyK6yyxjobbLLFNjvsssc+BxxyxDEnnHLGORdccsU1N9xyxz0PPPLEMy+88sY7H3zyxTc//PLHwJ/8Z5AhhhlhlDHGmWCSKaaZYZY55llgkSWWWWGVNdbZYJMtttlhlz32OeCQI4454ZQzzrngkiuuueGWO+554JEnnnnhlTfe+eCTL7754Zc/Bv7sP4MMMcwIo4wxzgSTTDHNDLPMMc8CiyyxzAqrrLHOBptssc0Ou+yxzwGHHHHMCaeccc4Fl1xxzQ233HHPA4888cwLr7zxzgeffPHND7/8MfDP/jPIEMOMMMoY40wwyRTTzDDLHPMssMgSy6ywyhrrbLDJFtvssMse+xxwyBHHnHDKGedccMkV19xwyx33PPDIE8+88Mob73zwyRff/PDLHwND/xlkiGFGGGWMcSaYZIppZphljnkWWGSJZVZYZY11Nthki2122GWPfQ445IhjTjjljHMuuOSKa2645Y57HnjkiWdeeOWNdz745Itvfvjlj4F/8Z9BhhhmhFHGGGeCSaaYZoZZ5phngUWWWGaFVdZYZ4NNtthmh1322OeAQ4445oRTzjjngkuuuOaGW+6454FHnnjmhVfeeOeDT7745odf/hj4V/8ZZIhhRhhljHEmmGSKaWaYZY55FlhkiWVWWGWNdTbYZIttdthlj30OOOSIY0445YxzLrjkimtuuOWOex545IlnXnjljXc++OSLb3745Y+Bv/jPIEMMM8IoY4wzwSRTTDPDLHPMs8AiSyyzwiprrLPBJltss8Mue+xzwCFHHHPCKWecc8ElV1xzwy133PPAI08888Irb7zzwSdffPPDL38MjPxnkCGGGWGUMcaZYJIppplhljnmWWCRJZZZYZU11tlgky222WGXPfY54JAjjjnhlDPOueCSK6654ZY77nngkSeeeeGVN9754JMvvvnhlz8G/uo/gwwxzAijjDHOBJNMMc0Ms8wxzwKLLLHMCqussc4Gm2yxzQ677LHPAYccccwJp5xxzgWXXHHNDbfccc8DjzzxzAuvvPHOB5988c0Pv/wx8G/+M8gQw4wwyhjjTDDJFNPMMMsc8yywyBLLrLDKGutssMkW2+ywyx77HHDIEceccMoZ51xwyRXX3HDLHfc88MgTz7zwyhvvfPDJF9/88MsfA//uP4MMMcwIo4wxzgSTTDHNDLPMMc8CiyyxzAqrrLHOBptssc0Ou+yxzwGHHHHMCaeccc4Fl1xxzQ233HHPA4888cwLr7zxzgeffPHND7/8MTD2n0GGGGaEUcYYZ4JJpphmhlnmmGeBRZZYZoVV1lhng0222GaHXfbY54BDjjjmhFPOOOeCS6645oZb7rjngUeeeOaFV95454NPvvjmh1/+GPgP/xlkiGFGGGWMcSaYZIppZphljnkWWGSJZVZYZY11Nthki2122GWPfQ445IhjTjjljHMuuOSKa2645Y57HnjkiWdeeOWNdz745Itvfvjlj4H/9J9BhhhmhFHGGGeCSaaYZoZZ5phngUWWWGaFVdZYZ4NNtthmh1322OeAQ4445oRTzjjngkuuuOaGW+6454FHnnjmhVfeeOeDT7745odf/hj4L/8ZZIhhRhhljHEmmGSKaWaYZY55FlhkiWVWWGWNdTbYZIttdthlj30OOOSIY0445YxzLrjkimtuuOWOex545IlnXnjljXc++OSLb3745Y+Bif8MMsQwI4wyxjgTTDLFNDPMMsc8CyyyxDIrrLLGOhtsssU2O+yyxz4HHHLEMSeccsY5F1xyxTU33HLHPQ888sQzL7zyxjsffPLFNz/88sfAf/vPIEMMM8IoY4wzwSRTTDPDLHPMs8AiSyyzwiprrLPBJltss8Mue+xzwCFHHHPCKWecc8ElV1xzwy133PPAI08888Irb7zzwSdffPPDL38M/I//DDLEMCOMMsY4E0wyxTQzzDLHPAssssQyK6yyxjobbLLFNjvsssc+BxxyxDEnnHLGORdccsU1N9xyxz0PPPLEMy+88sY7H3zyxTc//PLHwP/6zyBDDDPCKGOMM8EkU0wzwyxzzLPAIksss8Iqa6yzwSZbbLPDLnvsc8AhRxxzwilnnHPBJVdcc8Mtd9zzwCNPPPPCK2+888EnX3zzwy9/DEz9Z5AhhhlhlDHGmWCSKaaZYZY55llgkSWWWWGVNdbZYJMtttlhlz32OeCQI4454ZQzzrngkiuuueGWO+554JEnnnnhlTfe+eCTL7754Zc/Bv7PfwYZYpgRRvn/KGWPag==AgAAAACAAABGJgAANQAAACAAAAA=eJztwSEBAAAAgKDu/8EeAQoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGME7AEx4nO3BMQEAAADCoH/9AxtEoAAAAAAAAAAAAPg12pp+zA== + + diff --git a/inputFiles/singlePhaseFlowFractures/fractureFlowWithGravity_conforming_2d_smoke.xml b/inputFiles/singlePhaseFlowFractures/fractureFlowWithGravity_conforming_2d_smoke.xml index 9dbce69a6a6..9045289c402 100644 --- a/inputFiles/singlePhaseFlowFractures/fractureFlowWithGravity_conforming_2d_smoke.xml +++ b/inputFiles/singlePhaseFlowFractures/fractureFlowWithGravity_conforming_2d_smoke.xml @@ -18,7 +18,7 @@ diff --git a/inputFiles/singlePhaseFlowFractures/fractureFlow_conforming_2d.xml b/inputFiles/singlePhaseFlowFractures/fractureFlow_conforming_2d.xml index 3e5ebf1c94f..93eba8a2ebd 100644 --- a/inputFiles/singlePhaseFlowFractures/fractureFlow_conforming_2d.xml +++ b/inputFiles/singlePhaseFlowFractures/fractureFlow_conforming_2d.xml @@ -17,7 +17,7 @@ diff --git a/inputFiles/singlePhaseFlowFractures/fractureJunctionFlow_conforming_2d.xml b/inputFiles/singlePhaseFlowFractures/fractureJunctionFlow_conforming_2d.xml index e1902e65f51..a85f2e3b715 100644 --- a/inputFiles/singlePhaseFlowFractures/fractureJunctionFlow_conforming_2d.xml +++ b/inputFiles/singlePhaseFlowFractures/fractureJunctionFlow_conforming_2d.xml @@ -17,7 +17,7 @@ diff --git a/inputFiles/singlePhaseFlowFractures/fractureMatrixFlowWithGravity_conforming_2d_smoke.xml b/inputFiles/singlePhaseFlowFractures/fractureMatrixFlowWithGravity_conforming_2d_smoke.xml index 8f7226b2f85..2250f3b5fe5 100644 --- a/inputFiles/singlePhaseFlowFractures/fractureMatrixFlowWithGravity_conforming_2d_smoke.xml +++ b/inputFiles/singlePhaseFlowFractures/fractureMatrixFlowWithGravity_conforming_2d_smoke.xml @@ -18,7 +18,7 @@ diff --git a/inputFiles/singlePhaseFlowFractures/fractureMatrixFlow_conforming_2d.xml b/inputFiles/singlePhaseFlowFractures/fractureMatrixFlow_conforming_2d.xml index 6d9f7f2692e..7f475b928ab 100644 --- a/inputFiles/singlePhaseFlowFractures/fractureMatrixFlow_conforming_2d.xml +++ b/inputFiles/singlePhaseFlowFractures/fractureMatrixFlow_conforming_2d.xml @@ -18,7 +18,7 @@ diff --git a/inputFiles/singlePhaseFlowFractures/impermeableFault_conforming_base.xml b/inputFiles/singlePhaseFlowFractures/impermeableFault_conforming_base.xml index c05815fe353..13ed96f0b8c 100644 --- a/inputFiles/singlePhaseFlowFractures/impermeableFault_conforming_base.xml +++ b/inputFiles/singlePhaseFlowFractures/impermeableFault_conforming_base.xml @@ -18,7 +18,7 @@ diff --git a/inputFiles/surfaceGeneration/DryFrac_StaticPenny_PrismElem.xml b/inputFiles/surfaceGeneration/DryFrac_StaticPenny_PrismElem.xml index f398d7beb79..ada8953f37b 100644 --- a/inputFiles/surfaceGeneration/DryFrac_StaticPenny_PrismElem.xml +++ b/inputFiles/surfaceGeneration/DryFrac_StaticPenny_PrismElem.xml @@ -20,7 +20,7 @@ @@ -190,5 +190,5 @@ name="restartOutput"/> - + diff --git a/inputFiles/surfaceGeneration/cube_8.vtu b/inputFiles/surfaceGeneration/cube_8.vtu new file mode 100644 index 00000000000..150d23b3b1a --- /dev/null +++ b/inputFiles/surfaceGeneration/cube_8.vtu @@ -0,0 +1,84 @@ + + + + + + 0 1 2 + 3 4 5 + 6 7 8 + 9 10 11 + 12 13 14 + 15 16 17 + 18 19 20 + 21 22 23 + 24 25 26 + + + + + 0 1 2 3 4 5 6 7 + + + 3 3 3 3 3 3 + 3 3 3 3 3 3 + + + + + -1 -1 -1 + 0 -1 -1 + 1 -1 -1 + -1 0 -1 + 0 0 -1 + 1 0 -1 + -1 1 -1 + 0 1 -1 + 1 1 -1 + -1 -1 0 + 0 -1 0 + 1 -1 0 + -1 0 0 + 0 0 0 + 1 0 0 + -1 1 0 + 0 1 0 + 1 1 0 + -1 -1 1 + 0 -1 1 + 1 -1 1 + -1 0 1 + 0 0 1 + 1 0 1 + -1 1 1 + 0 1 1 + 1 1 1 + + + + + 0 1 4 3 9 10 13 12 + 1 2 5 4 10 11 14 13 + 3 4 7 6 12 13 16 15 + 4 5 8 7 13 14 17 16 + 9 10 13 12 18 19 22 21 + 10 11 14 13 19 20 23 22 + 12 13 16 15 21 22 25 24 + 13 14 17 16 22 23 26 25 + + + 8 + 16 + 24 + 32 + 40 + 48 + 56 + 64 + + + 12 12 12 12 12 12 12 12 + + + + + diff --git a/inputFiles/surfaceGeneration/cube_8.xml b/inputFiles/surfaceGeneration/cube_8.xml new file mode 100644 index 00000000000..b5920ca47fa --- /dev/null +++ b/inputFiles/surfaceGeneration/cube_8.xml @@ -0,0 +1,235 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/inputFiles/thermalSinglePhaseFlowFractures/fractureMatrixThermalFlow_conforming_base.xml b/inputFiles/thermalSinglePhaseFlowFractures/fractureMatrixThermalFlow_conforming_base.xml index 57cfd350256..9c903ebf0e4 100644 --- a/inputFiles/thermalSinglePhaseFlowFractures/fractureMatrixThermalFlow_conforming_base.xml +++ b/inputFiles/thermalSinglePhaseFlowFractures/fractureMatrixThermalFlow_conforming_base.xml @@ -25,7 +25,7 @@ diff --git a/inputFiles/thermoPoromechanicsFractures/ThermoPoroElastic_conforming_base.xml b/inputFiles/thermoPoromechanicsFractures/ThermoPoroElastic_conforming_base.xml index e32a27879d0..69ebbdcaaba 100644 --- a/inputFiles/thermoPoromechanicsFractures/ThermoPoroElastic_conforming_base.xml +++ b/inputFiles/thermoPoromechanicsFractures/ThermoPoroElastic_conforming_base.xml @@ -47,7 +47,7 @@ name="SurfaceGenerator" targetRegions="{ RockMatrix }" fractureRegion="Fracture" - rockToughness="1e6" + initialRockToughness="1e6" mpiCommOrder="1"/> diff --git a/inputFiles/wellbore/CasedElasticWellbore_ImperfectInterfaces_base.xml b/inputFiles/wellbore/CasedElasticWellbore_ImperfectInterfaces_base.xml index 0f782918ec9..fb52fd5f479 100644 --- a/inputFiles/wellbore/CasedElasticWellbore_ImperfectInterfaces_base.xml +++ b/inputFiles/wellbore/CasedElasticWellbore_ImperfectInterfaces_base.xml @@ -22,7 +22,7 @@ name="SurfaceGen" fractureRegion="Fracture" targetRegions="{ casing, cement, rock }" - rockToughness="1.0e6" + initialRockToughness="1.0e6" mpiCommOrder="1"/> diff --git a/inputFiles/wellbore/CasedThermoElasticWellbore_ImperfectInterfaces_base.xml b/inputFiles/wellbore/CasedThermoElasticWellbore_ImperfectInterfaces_base.xml index ae8b6baea35..ab4ccf65952 100644 --- a/inputFiles/wellbore/CasedThermoElasticWellbore_ImperfectInterfaces_base.xml +++ b/inputFiles/wellbore/CasedThermoElasticWellbore_ImperfectInterfaces_base.xml @@ -53,7 +53,7 @@ name="SurfaceGen" fractureRegion="Fracture" targetRegions="{ casing, cement, rock }" - rockToughness="1.0e6" + initialRockToughness="1.0e6" mpiCommOrder="1"/> diff --git a/scripts/ci_build_and_test_in_container.sh b/scripts/ci_build_and_test_in_container.sh index 23bff96bfa3..348fe6ad229 100755 --- a/scripts/ci_build_and_test_in_container.sh +++ b/scripts/ci_build_and_test_in_container.sh @@ -304,8 +304,11 @@ if [[ "${RUN_INTEGRATED_TESTS}" = true ]]; then echo "Running integrated tests..." integratedTests/geos_ats.sh --baselineCacheDirectory /tmp/geos/baselines + echo "Processing logs..." + bin/geos_ats_process_tests_fails --directory integratedTests/TestResults &> integratedTests/TestResults/processedTestsLogs.txt + echo "Packing logs..." tar -czf ${DATA_EXCHANGE_DIR}/test_logs_${DATA_BASENAME_WE}.tar.gz integratedTests/TestResults - + echo "Checking results..." bin/geos_ats_log_check integratedTests/TestResults/test_results.ini -y ${GEOS_SRC_DIR}/.integrated_tests.yaml &> $tempdir/log_check.txt cat $tempdir/log_check.txt @@ -315,7 +318,7 @@ if [[ "${RUN_INTEGRATED_TESTS}" = true ]]; then INTEGRATED_TEST_EXIT_STATUS=0 else echo "IntegratedTests failed. Rebaseline is required." - + # Rebaseline and pack into an archive echo "Rebaselining..." integratedTests/geos_ats.sh -a rebaselinefailed @@ -334,11 +337,13 @@ fi # Cleaning the build directory. or_die cmake --build . --target clean - # Clean the repository or_die cd ${GEOS_SRC_DIR}/inputFiles find . -name *.pyc | xargs rm -f +# Clean the rst files +echo "Cleaning the rst files..." +or_die rm -rf ${GEOS_SRC_DIR}/src/docs/sphinx/datastructure # If we're here, either everything went OK or we have to deal with the integrated tests manually. if [[ ! -z "${INTEGRATED_TEST_EXIT_STATUS+x}" ]]; then diff --git a/scripts/copyrightPrepender.py b/scripts/copyrightPrepender.py index 216f3528260..1fb3a3f3925 100644 --- a/scripts/copyrightPrepender.py +++ b/scripts/copyrightPrepender.py @@ -37,7 +37,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -54,10 +54,11 @@ * ------------------------------------------------------------------------------------------------------------ * SPDX-License-Identifier: LGPL-2.1-only * - * Copyright (c) 2018-2020 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2020 The Board of Trustees of the Leland Stanford Junior University - * Copyright (c) 2018-2020 TotalEnergies - * Copyright (c) 2019- GEOSX Contributors + * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC + * Copyright (c) 2018-2024 TotalEnergies + * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University + * Copyright (c) 2023-2024 Chevron + * Copyright (c) 2019- GEOS/GEOSX Contributors * All rights reserved * * See top level LICENSE, COPYRIGHT, CONTRIBUTORS, NOTICE, and ACKNOWLEDGEMENTS files for details. diff --git a/scripts/processIntegratedTestCheckFailures.py b/scripts/processIntegratedTestCheckFailures.py deleted file mode 100644 index db503687f42..00000000000 --- a/scripts/processIntegratedTestCheckFailures.py +++ /dev/null @@ -1,94 +0,0 @@ -#!/usr/bin/env python3 -# Python script to -import sys -import os -import stat -import subprocess -import argparse -import platform -import shutil - - -# fines all files recursively from -def findFiles(folder, extension): - for root, folders, files in os.walk(folder): - for filename in folders + files: - if (extension in filename): - yield os.path.join(root, filename) - - -parser = argparse.ArgumentParser(description='Process ats output to filter diffs.') - -parser.add_argument('-d', - '--directory', - type=str, - default='integratedTests', - help='directory to search recursively for files with specified extension') - -parser.add_argument('-ext', '--extension', type=str, default='.log', help='extension of files to filter') - -parser.add_argument('-tl', - '--numTrailingLines', - type=int, - default=5, - help='number of lines to include in block after match is found.') - -parser.add_argument('-e', - '--exclusionStrings', - type=str, - nargs="*", - default=[], - help='What stings to look for in order to exclude a block') - -args, unknown_args = parser.parse_known_args() -if unknown_args: - print("unknown arguments %s" % unknown_args) - -# What strings to look for in order to flag a line/block for output -matchStrings = ['Error:'] - -# What stings to look for in order to exclude a block -print( args.exclusionStrings ) -exclusionStrings = [] -#exclusionStrings = [ 'sizedFromParent', 'different shapes' ] -#exclusionStrings = [ 'but not the' ] -#exclusionStrings = ['logLevel', 'NonlinearSolverParameters', 'has a child', 'different shapes', 'different types', 'differing types'] -exclusionStrings += args.exclusionStrings - -directory = args.directory -extension = args.extension -numTrailingLines = args.numTrailingLines - -for fileName in findFiles(directory, extension): - - filteredErrors = '' - - with open(fileName) as f: - lines = f.readlines() - - for i in range(0, len(lines)): - line = lines[i] - if all(matchString in line for matchString in matchStrings): - matchBlock = ' ' + lines[i - 1] - matchBlock += ' ' + line - - for j in range(1, numTrailingLines + 1): - if i + j >= len(lines): - matchBlock += ' ***** No closing line. file truncated? Filters may not be properly applied! *****' - break - matchBlock += ' ' + lines[i + j] - - if ('******************************************************************************' - in lines[i + j]): - break - i += j - - if not any(excludeString in matchBlock for excludeString in exclusionStrings): - filteredErrors += matchBlock - - if (len(filteredErrors)): - print("\nFound unfiltered diff in: ", fileName) - print(filteredErrors, flush=True) - -#for i in range(1,1+1): -# print( i ) diff --git a/scripts/pygeosx_configs/blueos_3_ppc64le_ib_p9/spack.yaml b/scripts/pygeosx_configs/blueos_3_ppc64le_ib_p9/spack.yaml index 565a12075fc..008808c9726 100644 --- a/scripts/pygeosx_configs/blueos_3_ppc64le_ib_p9/spack.yaml +++ b/scripts/pygeosx_configs/blueos_3_ppc64le_ib_p9/spack.yaml @@ -1,10 +1,10 @@ #------------------------------------------------------------------------------------------------------------ # SPDX-License-Identifier: LGPL-2.1-only # -# Copyright (c) 2018-2020 Lawrence Livermore National Security LLC -# Copyright (c) 2018-2020 The Board of Trustees of the Leland Stanford Junior University -# Copyright (c) 2018-2020 TotalEnergies -# Copyright (c) 2019- GEOSX Contributors +# Copyright (c) 2018-2024 Lawrence Livermore National Security LLC +# Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University +# Copyright (c) 2018-2024 TotalEnergies +# Copyright (c) 2019- GEOS/GEOSX Contributors # All rights reserved # # See top level LICENSE, COPYRIGHT, CONTRIBUTORS, NOTICE, and ACKNOWLEDGEMENTS files for details. diff --git a/scripts/pygeosx_configs/toss_4_x86_64_ib/spack.yaml b/scripts/pygeosx_configs/toss_4_x86_64_ib/spack.yaml index 0fb9dc34d75..efc5a9acbf0 100644 --- a/scripts/pygeosx_configs/toss_4_x86_64_ib/spack.yaml +++ b/scripts/pygeosx_configs/toss_4_x86_64_ib/spack.yaml @@ -1,10 +1,10 @@ #------------------------------------------------------------------------------------------------------------ # SPDX-License-Identifier: LGPL-2.1-only # -# Copyright (c) 2018-2020 Lawrence Livermore National Security LLC -# Copyright (c) 2018-2020 The Board of Trustees of the Leland Stanford Junior University -# Copyright (c) 2018-2020 TotalEnergies -# Copyright (c) 2019- GEOSX Contributors +# Copyright (c) 2018-2024 Lawrence Livermore National Security LLC +# Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University +# Copyright (c) 2018-2024 TotalEnergies +# Copyright (c) 2019- GEOS/GEOSX Contributors # All rights reserved # # See top level LICENSE, COPYRIGHT, CONTRIBUTORS, NOTICE, and ACKNOWLEDGEMENTS files for details. diff --git a/scripts/setupPythonEnvironment.bash b/scripts/setupPythonEnvironment.bash index 9e7babb894a..338e7013a03 100755 --- a/scripts/setupPythonEnvironment.bash +++ b/scripts/setupPythonEnvironment.bash @@ -24,6 +24,7 @@ declare -a LINK_SCRIPTS=("preprocess_xml" "geos_ats_log_check" "geos_ats_restart_check" "geos_ats_curve_check" + "geos_ats_process_tests_fails" "mesh-doctor" "activate" "python") diff --git a/scripts/spack_configs/blueos_3_ppc64le_ib_p9/spack.yaml b/scripts/spack_configs/blueos_3_ppc64le_ib_p9/spack.yaml index 798f19bff0b..9c737836c86 100644 --- a/scripts/spack_configs/blueos_3_ppc64le_ib_p9/spack.yaml +++ b/scripts/spack_configs/blueos_3_ppc64le_ib_p9/spack.yaml @@ -1,10 +1,10 @@ #------------------------------------------------------------------------------------------------------------ # SPDX-License-Identifier: LGPL-2.1-only # -# Copyright (c) 2018-2020 Lawrence Livermore National Security LLC -# Copyright (c) 2018-2020 The Board of Trustees of the Leland Stanford Junior University -# Copyright (c) 2018-2020 TotalEnergies -# Copyright (c) 2019- GEOSX Contributors +# Copyright (c) 2018-2024 Lawrence Livermore National Security LLC +# Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University +# Copyright (c) 2018-2024 TotalEnergies +# Copyright (c) 2019- GEOS/GEOSX Contributors # All rights reserved # # See top level LICENSE, COPYRIGHT, CONTRIBUTORS, NOTICE, and ACKNOWLEDGEMENTS files for details. diff --git a/scripts/spack_configs/toss_3_x86_64_ib/spack.yaml b/scripts/spack_configs/toss_3_x86_64_ib/spack.yaml index ce601ad9237..cf89682e891 100644 --- a/scripts/spack_configs/toss_3_x86_64_ib/spack.yaml +++ b/scripts/spack_configs/toss_3_x86_64_ib/spack.yaml @@ -1,10 +1,10 @@ #------------------------------------------------------------------------------------------------------------ # SPDX-License-Identifier: LGPL-2.1-only # -# Copyright (c) 2018-2020 Lawrence Livermore National Security LLC -# Copyright (c) 2018-2020 The Board of Trustees of the Leland Stanford Junior University -# Copyright (c) 2018-2020 TotalEnergies -# Copyright (c) 2019- GEOSX Contributors +# Copyright (c) 2018-2024 Lawrence Livermore National Security LLC +# Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University +# Copyright (c) 2018-2024 TotalEnergies +# Copyright (c) 2019- GEOS/GEOSX Contributors # All rights reserved # # See top level LICENSE, COPYRIGHT, CONTRIBUTORS, NOTICE, and ACKNOWLEDGEMENTS files for details. diff --git a/scripts/spack_configs/toss_4_x86_64_ib/spack.yaml b/scripts/spack_configs/toss_4_x86_64_ib/spack.yaml index 817a6e8199d..7e061aa7e33 100644 --- a/scripts/spack_configs/toss_4_x86_64_ib/spack.yaml +++ b/scripts/spack_configs/toss_4_x86_64_ib/spack.yaml @@ -1,10 +1,10 @@ #------------------------------------------------------------------------------------------------------------ # SPDX-License-Identifier: LGPL-2.1-only # -# Copyright (c) 2018-2020 Lawrence Livermore National Security LLC -# Copyright (c) 2018-2020 The Board of Trustees of the Leland Stanford Junior University -# Copyright (c) 2018-2020 TotalEnergies -# Copyright (c) 2019- GEOSX Contributors +# Copyright (c) 2018-2024 Lawrence Livermore National Security LLC +# Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University +# Copyright (c) 2018-2024 TotalEnergies +# Copyright (c) 2019- GEOS/GEOSX Contributors # All rights reserved # # See top level LICENSE, COPYRIGHT, CONTRIBUTORS, NOTICE, and ACKNOWLEDGEMENTS files for details. diff --git a/scripts/test_submodule_updated.sh b/scripts/test_submodule_updated.sh index e2668a41f60..604d95f2f80 100755 --- a/scripts/test_submodule_updated.sh +++ b/scripts/test_submodule_updated.sh @@ -30,7 +30,7 @@ declare -Ar main_branches=( ["LvArray"]="origin/develop" ["integratedTests"]="origin/develop" ["hdf5_interface"]="origin/master" - ["PVTPackage"]="origin/master" + ["PVTPackage"]="origin/develop" ) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 09988abe2fd..595f1cadf18 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -219,8 +219,8 @@ install( FILES ${CMAKE_BINARY_DIR}/schema.xsd ################################ # Add python environment setup ################################ -# message(WARNING "Temporarily changing the geosPythonBranch to bugfix/sherman/fixNumpyProd") -# set(GEOS_PYTHON_PACKAGES_BRANCH "bugfix/sherman/fixNumpyProd" CACHE STRING "" FORCE) +# message(WARNING "Temporarily changing the geosPythonBranch to cusini/addFailedTestsLogProcessing") +# set(GEOS_PYTHON_PACKAGES_BRANCH "cusini/addFailedTestsLogProcessing" CACHE STRING "" FORCE) if ( Python3_EXECUTABLE ) diff --git a/src/cmake/thirdparty/SetupGeosxThirdParty.cmake b/src/cmake/thirdparty/SetupGeosxThirdParty.cmake index e30dbd937bc..28549eb8927 100644 --- a/src/cmake/thirdparty/SetupGeosxThirdParty.cmake +++ b/src/cmake/thirdparty/SetupGeosxThirdParty.cmake @@ -670,7 +670,7 @@ if(DEFINED HYPRE_DIR AND ENABLE_HYPRE) find_package( rocsolver REQUIRED ) find_package( rocsparse REQUIRED ) find_package( rocrand REQUIRED ) - append( APPEND HYPRE_DEPENDS roc::rocblas roc::rocsparse roc::rocsolver roc::rocrand ) + list( APPEND HYPRE_DEPENDS roc::rocblas roc::rocsparse roc::rocsolver roc::rocrand ) endif( ) find_and_import( NAME hypre diff --git a/src/conf.py b/src/conf.py index 0bcf74a68b2..c7347bd29fb 100644 --- a/src/conf.py +++ b/src/conf.py @@ -89,7 +89,7 @@ # -- Project information ----------------------------------------------------- project = u'GEOS' -copyright = u'2016-2024 Lawrence Livermore National Security LLC, 2018-2024 Total, S.A, The Board of Trustees of the Leland Stanford Junior University, 2023-2024 Chevron, 2019- GEOS/GEOSX Contributors' +copyright = u'2016-2024 Lawrence Livermore National Security LLC, 2018-2024 Total Energies, The Board of Trustees of the Leland Stanford Junior University, 2023-2024 Chevron, 2019- GEOS/GEOSX Contributors' author = u'GEOS/GEOSX Contributors' # The short X.Y version diff --git a/src/coreComponents/LvArray b/src/coreComponents/LvArray index 9b1c0049497..00e3ead6706 160000 --- a/src/coreComponents/LvArray +++ b/src/coreComponents/LvArray @@ -1 +1 @@ -Subproject commit 9b1c00494974c73ff38f8590f010f624efe9964c +Subproject commit 00e3ead67060d3c3d4b8291d8e4abbf680b87eb3 diff --git a/src/coreComponents/codingUtilities/CMakeLists.txt b/src/coreComponents/codingUtilities/CMakeLists.txt index d25e033e688..0fbbae3876a 100644 --- a/src/coreComponents/codingUtilities/CMakeLists.txt +++ b/src/coreComponents/codingUtilities/CMakeLists.txt @@ -1,7 +1,7 @@ # SPDX-License-Identifier: LGPL-2.1-only # # Copyright (c) 2016-2024 Lawrence Livermore National Security LLC -# Copyright (c) 2018-2024 Total, S.A +# Copyright (c) 2018-2024 TotalEnergies # Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University # Copyright (c) 2023-2024 Chevron # Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/codingUtilities/Parsing.cpp b/src/coreComponents/codingUtilities/Parsing.cpp index 3e8c970ea9f..d977ef6831e 100644 --- a/src/coreComponents/codingUtilities/Parsing.cpp +++ b/src/coreComponents/codingUtilities/Parsing.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/codingUtilities/Parsing.hpp b/src/coreComponents/codingUtilities/Parsing.hpp index 645e9615198..ec75cb757f8 100644 --- a/src/coreComponents/codingUtilities/Parsing.hpp +++ b/src/coreComponents/codingUtilities/Parsing.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/codingUtilities/RTTypes.cpp b/src/coreComponents/codingUtilities/RTTypes.cpp index 6fbf864d253..648f94e6b31 100644 --- a/src/coreComponents/codingUtilities/RTTypes.cpp +++ b/src/coreComponents/codingUtilities/RTTypes.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/codingUtilities/RTTypes.hpp b/src/coreComponents/codingUtilities/RTTypes.hpp index 93f6d89aed8..b5327b4fcb6 100644 --- a/src/coreComponents/codingUtilities/RTTypes.hpp +++ b/src/coreComponents/codingUtilities/RTTypes.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/codingUtilities/SFINAE_Macros.hpp b/src/coreComponents/codingUtilities/SFINAE_Macros.hpp index 9dfc0a9ed2a..83a5f7f8faf 100644 --- a/src/coreComponents/codingUtilities/SFINAE_Macros.hpp +++ b/src/coreComponents/codingUtilities/SFINAE_Macros.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/codingUtilities/UnitTestUtilities.hpp b/src/coreComponents/codingUtilities/UnitTestUtilities.hpp index 7e251ffbf0a..6bc2d0ea5b3 100644 --- a/src/coreComponents/codingUtilities/UnitTestUtilities.hpp +++ b/src/coreComponents/codingUtilities/UnitTestUtilities.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/codingUtilities/Utilities.hpp b/src/coreComponents/codingUtilities/Utilities.hpp index d4951f7185b..868d096c28b 100644 --- a/src/coreComponents/codingUtilities/Utilities.hpp +++ b/src/coreComponents/codingUtilities/Utilities.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/codingUtilities/tests/testGeosxTraits.cpp b/src/coreComponents/codingUtilities/tests/testGeosxTraits.cpp index 4c3820cc249..26f37878b4b 100644 --- a/src/coreComponents/codingUtilities/tests/testGeosxTraits.cpp +++ b/src/coreComponents/codingUtilities/tests/testGeosxTraits.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/codingUtilities/tests/testParallelTestUtilities.cpp b/src/coreComponents/codingUtilities/tests/testParallelTestUtilities.cpp index 5dfc65c1a8c..69872e0813a 100644 --- a/src/coreComponents/codingUtilities/tests/testParallelTestUtilities.cpp +++ b/src/coreComponents/codingUtilities/tests/testParallelTestUtilities.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/codingUtilities/tests/testParsing.cpp b/src/coreComponents/codingUtilities/tests/testParsing.cpp index 586697330ac..63b72772f7f 100644 --- a/src/coreComponents/codingUtilities/tests/testParsing.cpp +++ b/src/coreComponents/codingUtilities/tests/testParsing.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/codingUtilities/tests/testUtilities.cpp b/src/coreComponents/codingUtilities/tests/testUtilities.cpp index cb481fccd0e..ee0f3773446 100644 --- a/src/coreComponents/codingUtilities/tests/testUtilities.cpp +++ b/src/coreComponents/codingUtilities/tests/testUtilities.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/codingUtilities/traits.hpp b/src/coreComponents/codingUtilities/traits.hpp index 8ab60cddd52..ecf7b4e4dab 100644 --- a/src/coreComponents/codingUtilities/traits.hpp +++ b/src/coreComponents/codingUtilities/traits.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -96,6 +96,14 @@ HAS_MEMBER_FUNCTION( capacity, localIndex, ); */ HAS_MEMBER_FUNCTION_NO_RTYPE( resize, 0 ); +/** + * @brief Defines a static constexpr bool HasMemberFunction_resizeDefault< @p CLASS > + * that is true iff the method @p CLASS ::resizeDefault( int, int, int) exists. + * @tparam CLASS The type to test. + */ +HAS_MEMBER_FUNCTION_NO_RTYPE( resizeDefault, 0, 0 ); + + /** * @brief Defines a static constexpr bool HasMemberFunction_reserve< @p CLASS > * that is true iff the method @p CLASS ::reserve( localIndex ) exists. diff --git a/src/coreComponents/common/BufferAllocator.cpp b/src/coreComponents/common/BufferAllocator.cpp index 26d432c28c7..bcee360d14e 100644 --- a/src/coreComponents/common/BufferAllocator.cpp +++ b/src/coreComponents/common/BufferAllocator.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/common/BufferAllocator.hpp b/src/coreComponents/common/BufferAllocator.hpp index 7fa789efd9b..dbce67d911c 100644 --- a/src/coreComponents/common/BufferAllocator.hpp +++ b/src/coreComponents/common/BufferAllocator.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/common/CMakeLists.txt b/src/coreComponents/common/CMakeLists.txt index ec9e350db1d..9a4de42a717 100644 --- a/src/coreComponents/common/CMakeLists.txt +++ b/src/coreComponents/common/CMakeLists.txt @@ -1,7 +1,7 @@ # SPDX-License-Identifier: LGPL-2.1-only # # Copyright (c) 2016-2024 Lawrence Livermore National Security LLC -# Copyright (c) 2018-2024 Total, S.A +# Copyright (c) 2018-2024 TotalEnergies # Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University # Copyright (c) 2023-2024 Chevron # Copyright (c) 2019- GEOS/GEOSX Contributors @@ -48,6 +48,7 @@ set( common_headers Tensor.hpp TimingMacros.hpp TypeDispatch.hpp + TypesHelpers.hpp initializeEnvironment.hpp LifoStorage.hpp LifoStorageCommon.hpp diff --git a/src/coreComponents/common/DataLayouts.hpp b/src/coreComponents/common/DataLayouts.hpp index 2f6c53af4fc..e330aa00f1e 100644 --- a/src/coreComponents/common/DataLayouts.hpp +++ b/src/coreComponents/common/DataLayouts.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/common/DataTypes.hpp b/src/coreComponents/common/DataTypes.hpp index c458412540a..42c14433f0d 100644 --- a/src/coreComponents/common/DataTypes.hpp +++ b/src/coreComponents/common/DataTypes.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/common/FieldSpecificationOps.hpp b/src/coreComponents/common/FieldSpecificationOps.hpp index 534768330fd..d663aae38a7 100644 --- a/src/coreComponents/common/FieldSpecificationOps.hpp +++ b/src/coreComponents/common/FieldSpecificationOps.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/common/FixedSizeDeque.hpp b/src/coreComponents/common/FixedSizeDeque.hpp index 5746419ca71..207d5dc7efb 100644 --- a/src/coreComponents/common/FixedSizeDeque.hpp +++ b/src/coreComponents/common/FixedSizeDeque.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/common/FixedSizeDequeWithMutexes.hpp b/src/coreComponents/common/FixedSizeDequeWithMutexes.hpp index 800e1e1806f..68d1e9b983b 100644 --- a/src/coreComponents/common/FixedSizeDequeWithMutexes.hpp +++ b/src/coreComponents/common/FixedSizeDequeWithMutexes.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/common/GEOS_RAJA_Interface.hpp b/src/coreComponents/common/GEOS_RAJA_Interface.hpp index 3b651c9e5c6..d1b2f2e3c8b 100644 --- a/src/coreComponents/common/GEOS_RAJA_Interface.hpp +++ b/src/coreComponents/common/GEOS_RAJA_Interface.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/common/GeosxConfig.hpp.in b/src/coreComponents/common/GeosxConfig.hpp.in index 704a9ebd0ac..f09203faf06 100644 --- a/src/coreComponents/common/GeosxConfig.hpp.in +++ b/src/coreComponents/common/GeosxConfig.hpp.in @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/common/GeosxMacros.hpp b/src/coreComponents/common/GeosxMacros.hpp index f73cb2740a3..bf3ab070948 100644 --- a/src/coreComponents/common/GeosxMacros.hpp +++ b/src/coreComponents/common/GeosxMacros.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/common/LifoStorage.hpp b/src/coreComponents/common/LifoStorage.hpp index 16ce24f0e13..a8e68640fc5 100644 --- a/src/coreComponents/common/LifoStorage.hpp +++ b/src/coreComponents/common/LifoStorage.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/common/LifoStorageCommon.hpp b/src/coreComponents/common/LifoStorageCommon.hpp index 08c1144e9fe..3183cde65b8 100644 --- a/src/coreComponents/common/LifoStorageCommon.hpp +++ b/src/coreComponents/common/LifoStorageCommon.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/common/LifoStorageCuda.hpp b/src/coreComponents/common/LifoStorageCuda.hpp index bb03115f011..58016032dcb 100644 --- a/src/coreComponents/common/LifoStorageCuda.hpp +++ b/src/coreComponents/common/LifoStorageCuda.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/common/LifoStorageHost.hpp b/src/coreComponents/common/LifoStorageHost.hpp index f787f10a17f..348b4a4109c 100644 --- a/src/coreComponents/common/LifoStorageHost.hpp +++ b/src/coreComponents/common/LifoStorageHost.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/common/MemoryInfos.cpp b/src/coreComponents/common/MemoryInfos.cpp index 4ad404188e3..1e31cdb6bed 100644 --- a/src/coreComponents/common/MemoryInfos.cpp +++ b/src/coreComponents/common/MemoryInfos.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/common/MemoryInfos.hpp b/src/coreComponents/common/MemoryInfos.hpp index a3dcc024359..3500093c6de 100644 --- a/src/coreComponents/common/MemoryInfos.hpp +++ b/src/coreComponents/common/MemoryInfos.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/common/MpiWrapper.cpp b/src/coreComponents/common/MpiWrapper.cpp index f2b830e734e..f050151a3e4 100644 --- a/src/coreComponents/common/MpiWrapper.cpp +++ b/src/coreComponents/common/MpiWrapper.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/common/MpiWrapper.hpp b/src/coreComponents/common/MpiWrapper.hpp index f6f0136eb55..de529215ea0 100644 --- a/src/coreComponents/common/MpiWrapper.hpp +++ b/src/coreComponents/common/MpiWrapper.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -22,6 +22,7 @@ #include "common/DataTypes.hpp" #include "common/Span.hpp" +#include "common/TypesHelpers.hpp" #if defined(GEOS_USE_MPI) #include @@ -128,6 +129,8 @@ struct MpiWrapper Min, //!< Min Sum, //!< Sum Prod, //!< Prod + LogicalAnd, //!< Logical and + LogicalOr, //!< Logical or }; MpiWrapper() = delete; @@ -315,7 +318,7 @@ struct MpiWrapper int sendcount, T_RECV * recvbuf, int recvcount, - MPI_Comm comm ); + MPI_Comm comm = MPI_COMM_GEOS ); /** * @brief Strongly typed wrapper around MPI_Allgatherv. @@ -335,7 +338,7 @@ struct MpiWrapper T_RECV * recvbuf, int * recvcounts, int * displacements, - MPI_Comm comm ); + MPI_Comm comm = MPI_COMM_GEOS ); /** * @brief Convenience function for MPI_Allgather. @@ -351,18 +354,6 @@ struct MpiWrapper array1d< T > & recvbuf, MPI_Comm comm = MPI_COMM_GEOS ); - /** - * @brief Strongly typed wrapper around MPI_Allreduce. - * @param[in] sendbuf The pointer to the sending buffer. - * @param[out] recvbuf The pointer to the receive buffer. - * @param[in] count The number of values to send/receive. - * @param[in] op The MPI_Op to perform. - * @param[in] comm The MPI_Comm over which the gather operates. - * @return The return value of the underlying call to MPI_Allreduce(). - */ - template< typename T > - static int allReduce( T const * sendbuf, T * recvbuf, int count, MPI_Op op, MPI_Comm comm = MPI_COMM_GEOS ); - /** * @brief Convenience wrapper for the MPI_Allreduce function. * @tparam T type of data to reduce. Must correspond to a valid MPI_Datatype. @@ -385,6 +376,29 @@ struct MpiWrapper template< typename T > static void allReduce( Span< T const > src, Span< T > dst, Reduction const op, MPI_Comm comm = MPI_COMM_GEOS ); + /** + * @brief Convenience wrapper for the MPI_Allreduce function. Version for arrays. + * @tparam T type of data to reduce. Must correspond to a valid MPI_Datatype. + * @param src[in] The values to send to the reduction. + * @param dst[out] The resulting values. + * @param op The Reduction enum to perform. + * @param comm The communicator. + */ + template< typename SRC_CONTAINER_TYPE, typename DST_CONTAINER_TYPE > + static void allReduce( SRC_CONTAINER_TYPE const & src, DST_CONTAINER_TYPE & dst, Reduction const op, MPI_Comm const comm = MPI_COMM_GEOS ); + + /** + * @brief Convenience wrapper for the MPI_Allreduce function. Version for arrays. + * @tparam T type of data to reduce. Must correspond to a valid MPI_Datatype. + * @param src[in] The values to send to the reduction. + * @param dst[out] The resulting values. + * @param count The number of contiguos elements of the arrays to perform the reduction on (must be leq than the size). + * @param op The Reduction enum to perform. + * @param comm The communicator. + */ + template< typename SRC_CONTAINER_TYPE, typename DST_CONTAINER_TYPE > + static void allReduce( SRC_CONTAINER_TYPE const & src, DST_CONTAINER_TYPE & dst, int const count, Reduction const op, MPI_Comm const comm ); + /** * @brief Strongly typed wrapper around MPI_Reduce. @@ -422,10 +436,10 @@ struct MpiWrapper template< typename T > - static int scan( T const * sendbuf, T * recvbuf, int count, MPI_Op op, MPI_Comm comm ); + static int scan( T const * sendbuf, T * recvbuf, int count, MPI_Op op, MPI_Comm comm = MPI_COMM_GEOS ); template< typename T > - static int exscan( T const * sendbuf, T * recvbuf, int count, MPI_Op op, MPI_Comm comm ); + static int exscan( T const * sendbuf, T * recvbuf, int count, MPI_Op op, MPI_Comm comm = MPI_COMM_GEOS ); /** * @brief Strongly typed wrapper around MPI_Bcast. @@ -436,7 +450,7 @@ struct MpiWrapper * @return The return value of the underlying call to MPI_Bcast(). */ template< typename T > - static int bcast( T * buffer, int count, int root, MPI_Comm comm ); + static int bcast( T * buffer, int count, int root, MPI_Comm comm = MPI_COMM_GEOS ); /** @@ -466,7 +480,28 @@ struct MpiWrapper TR * const recvbuf, int recvcount, int root, - MPI_Comm comm ); + MPI_Comm comm = MPI_COMM_GEOS ); + + /** + * @brief Strongly typed wrapper around MPI_Gather(). + * @tparam TS The pointer type for \p sendbuf + * @tparam TR The pointer type for \p recvbuf + * @param[in] sendbuf The pointer to the sending buffer. + * @param[out] recvbuf The pointer to the receive buffer. + * @param[in] recvcount The number of values to receive. + * @param[in] root The rank recieving the data. + * @param[in] comm The MPI_Comm over which the gather operates. + * @return + */ + template< typename T, typename DST_CONTAINER, + typename = std::enable_if_t< + std::is_trivially_copyable_v< T > && + std::is_same_v< decltype(std::declval< DST_CONTAINER >().size()), std::size_t > && + std::is_same_v< decltype(std::declval< DST_CONTAINER >().data()), T * > > > + static int gather( T const & value, + DST_CONTAINER & destValuesBuffer, + int root, + MPI_Comm comm = MPI_COMM_GEOS ); /** * @brief Strongly typed wrapper around MPI_Gatherv. @@ -489,7 +524,7 @@ struct MpiWrapper const int * recvcounts, const int * displs, int root, - MPI_Comm comm ); + MPI_Comm comm = MPI_COMM_GEOS ); /** * @brief Returns an MPI_Op associated with our strongly typed Reduction enum. @@ -618,6 +653,19 @@ struct MpiWrapper */ template< typename T > static T maxValLoc( T localValueLocation, MPI_Comm comm = MPI_COMM_GEOS ); +private: + + /** + * @brief Strongly typed wrapper around MPI_Allreduce. + * @param[in] sendbuf The pointer to the sending buffer. + * @param[out] recvbuf The pointer to the receive buffer. + * @param[in] count The number of values to send/receive. + * @param[in] op The MPI_Op to perform. + * @param[in] comm The MPI_Comm over which the gather operates. + * @return The return value of the underlying call to MPI_Allreduce(). + */ + template< typename T > + static int allReduce( T const * sendbuf, T * recvbuf, int count, MPI_Op op, MPI_Comm comm = MPI_COMM_GEOS ); }; namespace internal @@ -680,6 +728,14 @@ inline MPI_Op MpiWrapper::getMpiOp( Reduction const op ) { return MPI_PROD; } + case Reduction::LogicalAnd: + { + return MPI_LAND; + } + case Reduction::LogicalOr: + { + return MPI_LOR; + } default: GEOS_ERROR( "Unsupported reduction operation" ); return MPI_NO_OP; @@ -900,6 +956,25 @@ int MpiWrapper::gather( TS const * const sendbuf, #endif } +template< typename T, typename DST_CONTAINER, typename > +int MpiWrapper::gather( T const & value, + DST_CONTAINER & destValuesBuffer, + int root, + MPI_Comm MPI_PARAM( comm ) ) +{ + if( commRank() == 0 ) + GEOS_ERROR_IF_LT_MSG( destValuesBuffer.size(), size_t( commSize() ), + "Receive buffer is not large enough to contain the values to receive." ); +#ifdef GEOS_USE_MPI + return MPI_Gather( &value, sizeof( T ), internal::getMpiType< uint8_t >(), + destValuesBuffer.data(), sizeof( T ), internal::getMpiType< uint8_t >(), + root, comm ); +#else + memcpy( destValuesBuffer.data(), &value, sendBufferSize ); + return 0; +#endif +} + template< typename TS, typename TR > int MpiWrapper::gatherv( TS const * const sendbuf, int sendcount, @@ -1073,6 +1148,35 @@ void MpiWrapper::allReduce( Span< T const > const src, Span< T > const dst, Redu allReduce( src.data(), dst.data(), LvArray::integerConversion< int >( src.size() ), getMpiOp( op ), comm ); } +template< typename SRC_CONTAINER_TYPE, typename DST_CONTAINER_TYPE > +void MpiWrapper::allReduce( SRC_CONTAINER_TYPE const & src, DST_CONTAINER_TYPE & dst, int const count, Reduction const op, MPI_Comm const comm ) +{ + static_assert( std::is_trivially_copyable< typename get_value_type< SRC_CONTAINER_TYPE >::type >::value, + "The type in the source container must be trivially copyable." ); + static_assert( std::is_trivially_copyable< typename get_value_type< DST_CONTAINER_TYPE >::type >::value, + "The type in the destination container must be trivially copyable." ); + static_assert( std::is_same< typename get_value_type< SRC_CONTAINER_TYPE >::type, + typename get_value_type< DST_CONTAINER_TYPE >::type >::value, + "Source and destination containers must have the same value type." ); + GEOS_ASSERT_GE( src.size(), count ); + GEOS_ASSERT_GE( dst.size(), count ); + allReduce( src.data(), dst.data(), count, getMpiOp( op ), comm ); +} + +template< typename SRC_CONTAINER_TYPE, typename DST_CONTAINER_TYPE > +void MpiWrapper::allReduce( SRC_CONTAINER_TYPE const & src, DST_CONTAINER_TYPE & dst, Reduction const op, MPI_Comm const comm ) +{ + static_assert( std::is_trivially_copyable< typename get_value_type< SRC_CONTAINER_TYPE >::type >::value, + "The type in the source container must be trivially copyable." ); + static_assert( std::is_trivially_copyable< typename get_value_type< DST_CONTAINER_TYPE >::type >::value, + "The type in the destination container must be trivially copyable." ); + static_assert( std::is_same< typename get_value_type< SRC_CONTAINER_TYPE >::type, + typename get_value_type< DST_CONTAINER_TYPE >::type >::value, + "Source and destination containers must have the same value type." ); + GEOS_ASSERT_EQ( src.size(), dst.size() ); + allReduce( src.data(), dst.data(), LvArray::integerConversion< int >( src.size() ), getMpiOp( op ), comm ); +} + template< typename T > T MpiWrapper::sum( T const & value, MPI_Comm comm ) { diff --git a/src/coreComponents/common/MultiMutexesLock.hpp b/src/coreComponents/common/MultiMutexesLock.hpp index e3142abbadc..aebd4fa036e 100644 --- a/src/coreComponents/common/MultiMutexesLock.hpp +++ b/src/coreComponents/common/MultiMutexesLock.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/common/Path.cpp b/src/coreComponents/common/Path.cpp index a983e5af3cc..30cf6d278e7 100644 --- a/src/coreComponents/common/Path.cpp +++ b/src/coreComponents/common/Path.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/common/Path.hpp b/src/coreComponents/common/Path.hpp index 9f768838e31..fe1015d78ff 100644 --- a/src/coreComponents/common/Path.hpp +++ b/src/coreComponents/common/Path.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/common/PhysicsConstants.hpp b/src/coreComponents/common/PhysicsConstants.hpp index 50a2384ef8c..69274cf7f91 100644 --- a/src/coreComponents/common/PhysicsConstants.hpp +++ b/src/coreComponents/common/PhysicsConstants.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/common/Span.hpp b/src/coreComponents/common/Span.hpp index 49469bf968e..3fc2185273a 100644 --- a/src/coreComponents/common/Span.hpp +++ b/src/coreComponents/common/Span.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/common/Stopwatch.hpp b/src/coreComponents/common/Stopwatch.hpp index 9aec6f65f66..0c6a6fd11a7 100644 --- a/src/coreComponents/common/Stopwatch.hpp +++ b/src/coreComponents/common/Stopwatch.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/common/Tensor.hpp b/src/coreComponents/common/Tensor.hpp index 602f21794e1..3af62760530 100644 --- a/src/coreComponents/common/Tensor.hpp +++ b/src/coreComponents/common/Tensor.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/common/Timer.hpp b/src/coreComponents/common/Timer.hpp index f7a4b342dcc..ddd5f580119 100644 --- a/src/coreComponents/common/Timer.hpp +++ b/src/coreComponents/common/Timer.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/common/TimingMacros.hpp b/src/coreComponents/common/TimingMacros.hpp index c9935cbd1b6..3d42f1d83b4 100644 --- a/src/coreComponents/common/TimingMacros.hpp +++ b/src/coreComponents/common/TimingMacros.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/common/TypeDispatch.hpp b/src/coreComponents/common/TypeDispatch.hpp index 282c9421589..a1881944de2 100644 --- a/src/coreComponents/common/TypeDispatch.hpp +++ b/src/coreComponents/common/TypeDispatch.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/common/TypesHelpers.hpp b/src/coreComponents/common/TypesHelpers.hpp new file mode 100644 index 00000000000..f0e514e35a1 --- /dev/null +++ b/src/coreComponents/common/TypesHelpers.hpp @@ -0,0 +1,124 @@ +/* + * ------------------------------------------------------------------------------------------------------------ + * SPDX-License-Identifier: LGPL-2.1-only + * + * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC + * Copyright (c) TotalEnergies + * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University + * Copyright (c) 2023-2024 Chevron + * Copyright (c) 2019- GEOS/GEOSX Contributors + * All rights reserved + * + * See top level LICENSE, COPYRIGHT, CONTRIBUTORS, NOTICE, and ACKNOWLEDGEMENTS files for details. + * ------------------------------------------------------------------------------------------------------------ + */ + +/** + * @file TypesHelpers.hpp + * + */ + +#ifndef TYPES_HELPERS_HPP +#define TYPES_HELPERS_HPP + +#include + +namespace geos +{ + +namespace internal +{ +/** + * @brief Trait to determine if a type defines a `value_type` member. + * + * This primary template defaults to `std::false_type`, indicating that + * the type `T` does not define a `value_type` member. + * + * @tparam T The type to check. + * @tparam void A SFINAE parameter used to specialize the trait. + */ +template< typename T, typename = void > +struct has_value_type : std::false_type {}; + +/** + * @brief Specialization of `has_value_type` for types with a `value_type` member. + * + * If the type `T` defines a `value_type` member, this specialization + * is used, which inherits from `std::true_type`. + * + * @tparam T The type to check. + */ +template< typename T > +struct has_value_type< T, std::void_t< typename T::value_type > > : std::true_type {}; + +/** + * @brief Trait to determine if a type defines a `ValueType` member. + * + * This primary template defaults to `std::false_type`, indicating that + * the type `T` does not define a `ValueType` member. + * + * @tparam T The type to check. + * @tparam void A SFINAE parameter used to specialize the trait. + */ +template< typename T, typename = void > +struct has_ValueType : std::false_type {}; + +/** + * @brief Specialization of `has_ValueType` for types with a `ValueType` member. + * + * If the type `T` defines a `ValueType` member, this specialization + * is used, which inherits from `std::true_type`. + * + * @tparam T The type to check. + */ +template< typename T > +struct has_ValueType< T, std::void_t< typename T::ValueType > > : std::true_type {}; + +} // namespace internal + +/** + * @brief Trait to retrieve the `value_type` or `ValueType` of a type `T`. + * + * This primary template provides a static assertion error if `T` does not + * define either `value_type` or `ValueType`. + * + * @tparam T The type from which to extract the type alias. + * @tparam Enable A SFINAE parameter used for specialization. + */ +template< typename T, typename Enable = void > +struct get_value_type +{ + static_assert( sizeof(T) == 0, "T must define either value_type or ValueType." ); +}; + +/** + * @brief Specialization of `get_value_type` for types with a `value_type` member. + * + * If the type `T` defines a `value_type` member, this specialization + * retrieves it as the alias `type`. + * + * @tparam T The type from which to extract `value_type`. + */ +template< typename T > +struct get_value_type< T, std::enable_if_t< internal::has_value_type< T >::value > > +{ + using type = typename T::value_type; +}; + +/** + * @brief Specialization of `get_value_type` for types with a `ValueType` member. + * + * If the type `T` does not define a `value_type` but defines a `ValueType`, + * this specialization retrieves it as the alias `type`. + * + * @tparam T The type from which to extract `ValueType`. + */ +template< typename T > +struct get_value_type< T, std::enable_if_t< !internal::has_value_type< T >::value && internal::has_ValueType< T >::value > > +{ + using type = typename T::ValueType; +}; + +} // namespace geos + +#endif /* TYPES_HELPERS_HPP */ diff --git a/src/coreComponents/common/Units.cpp b/src/coreComponents/common/Units.cpp index 746cd866a7c..e249441f3ff 100644 --- a/src/coreComponents/common/Units.cpp +++ b/src/coreComponents/common/Units.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/common/Units.hpp b/src/coreComponents/common/Units.hpp index ba35f3fb8d6..8bfdc04ca80 100644 --- a/src/coreComponents/common/Units.hpp +++ b/src/coreComponents/common/Units.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/common/format/EnumStrings.hpp b/src/coreComponents/common/format/EnumStrings.hpp index 4d4c2eaa6ce..f5b37de1df1 100644 --- a/src/coreComponents/common/format/EnumStrings.hpp +++ b/src/coreComponents/common/format/EnumStrings.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/common/format/Format.hpp b/src/coreComponents/common/format/Format.hpp index de5954dcc37..23f3e3225e3 100644 --- a/src/coreComponents/common/format/Format.hpp +++ b/src/coreComponents/common/format/Format.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/common/format/StringUtilities.cpp b/src/coreComponents/common/format/StringUtilities.cpp index 83afce1cf87..004c82276bb 100644 --- a/src/coreComponents/common/format/StringUtilities.cpp +++ b/src/coreComponents/common/format/StringUtilities.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -93,8 +93,9 @@ string addCommaSeparators( T const & num ) return result; } -template string addCommaSeparators( localIndex const & num ); -template string addCommaSeparators( globalIndex const & num ); +template string addCommaSeparators( int const & num ); +template string addCommaSeparators( long int const & num ); +template string addCommaSeparators( long long int const & num ); // put definition here so we can control the allowable values of T and // modication of this function triggers a whole code recompile...which @@ -102,6 +103,11 @@ template string addCommaSeparators( globalIndex const & num ); template< typename T > string toMetricPrefixString( T const & value ) { + if( std::fpclassify( value ) == FP_ZERO ) + { + return " 0.0 "; + } + // These are the metric prefixes corrosponding to kilo, mega, giga...etc. char const prefixes[12] = { 'f', 'p', 'n', 'u', 'm', ' ', 'K', 'M', 'G', 'T', 'P', 'E'}; string rval; diff --git a/src/coreComponents/common/format/StringUtilities.hpp b/src/coreComponents/common/format/StringUtilities.hpp index b98f03afef9..b79db4b1168 100644 --- a/src/coreComponents/common/format/StringUtilities.hpp +++ b/src/coreComponents/common/format/StringUtilities.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -88,7 +88,7 @@ string join( CONTAINER const & container, S const & delim = S() ) * @return a string containing input values concatenated with a delimiter */ template< typename IT, typename S, typename LAMBDA > -string joinLamda( IT first, IT last, S const & delim, LAMBDA formattingFunc ) +string joinLambda( IT first, IT last, S const & delim, LAMBDA formattingFunc ) { if( first == last ) { @@ -114,9 +114,9 @@ string joinLamda( IT first, IT last, S const & delim, LAMBDA formattingFunc ) * @return a string containing input values concatenated with a delimiter */ template< typename CONTAINER, typename S, typename LAMBDA > -string joinLamda( CONTAINER const & container, S const & delim, LAMBDA formattingFunc ) +string joinLambda( CONTAINER const & container, S const & delim, LAMBDA formattingFunc ) { - return joinLamda( std::begin( container ), std::end( container ), delim, formattingFunc ); + return joinLambda( std::begin( container ), std::end( container ), delim, formattingFunc ); } /** diff --git a/src/coreComponents/common/format/table/TableData.cpp b/src/coreComponents/common/format/table/TableData.cpp index dcbec10a01a..517613fcf50 100644 --- a/src/coreComponents/common/format/table/TableData.cpp +++ b/src/coreComponents/common/format/table/TableData.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -18,39 +18,38 @@ */ #include "TableData.hpp" +#include "common/logger/Logger.hpp" namespace geos { -void TableData::addRow( std::vector< string > const & row ) +void TableData::addRow( std::vector< TableData::CellData > const & row ) { - if( m_rows.size() != 0 && row.size() != m_rows[m_rows.size() - 1].size() ) + m_rows.push_back( row ); +} + +void TableData::addSeparator() +{ + if( m_rows.empty()) { - string msg = "Remarks : some cells may be missing"; - if( std::find( m_errorsMsg.begin(), m_errorsMsg.end(), msg ) == m_errorsMsg.end()) - { - m_errorsMsg.push_back( msg ); - } + GEOS_ERROR( "Bad use of a Tabledata::addSeparator(). Make sure you have added values in TableData" ); } - m_rows.push_back( row ); + + integer rowSize = m_rows[0].size(); + m_rows.emplace_back( std::vector< TableData::CellData >( rowSize, { CellType::Separator, "-" } )); + } void TableData::clear() { m_rows.clear(); - m_errorsMsg.clear(); } -std::vector< std::vector< string > > const & TableData::getTableDataRows() const +std::vector< std::vector< TableData::CellData > > const & TableData::getTableDataRows() const { return m_rows; } -std::vector< string > const & TableData::getErrorMsgs() const -{ - return m_errorsMsg; -} - void TableData2D::collectTableValues( arraySlice1d< real64 const > rowAxisValues, arraySlice1d< real64 const > columnAxisValues, arrayView1d< real64 const > values ) @@ -75,7 +74,6 @@ TableData2D::TableDataHolder TableData2D::convertTable2D( arrayView1d< real64 co { string const rowFmt = GEOS_FMT( "{} = {{}}", rowAxisDescription ); string const columnFmt = GEOS_FMT( "{} = {{}}", columnAxisDescription ); - collectTableValues( coordinates[0], coordinates[1], values ); return buildTableData( string( units::getDescription( valueUnit )), rowFmt, @@ -87,7 +85,6 @@ TableData2D::TableDataHolder TableData2D::buildTableData( string_view targetUnit string_view columnFmt ) const { TableData2D::TableDataHolder tableData1D; - std::vector< size_t > rowsLength; tableData1D.headerNames.push_back( string( targetUnit ) ); @@ -99,9 +96,9 @@ TableData2D::TableDataHolder TableData2D::buildTableData( string_view targetUnit // insert row value and row cell values for( auto const & [rowValue, rowMap] : m_data ) { - std::vector< string > currentRowValues; + std::vector< TableData::CellData > currentRowValues; currentRowValues.reserve( rowMap.size() ); - currentRowValues.push_back( GEOS_FMT( rowFmt, rowValue ) ); + currentRowValues.push_back( {CellType::Value, GEOS_FMT( rowFmt, rowValue )} ); std::set< real64 >::const_iterator columnIt = m_columnValues.begin(); for( auto const & [columnValue, cellValue] : rowMap ) @@ -109,13 +106,12 @@ TableData2D::TableDataHolder TableData2D::buildTableData( string_view targetUnit // if a column value(s) is/are missing, insert empty entry(ies) while( columnValue > *( columnIt++ ) && columnIt != m_columnValues.end() ) { - currentRowValues.push_back( "" ); + currentRowValues.push_back( {CellType::Value, ""} ); } - currentRowValues.push_back( GEOS_FMT( "{}", cellValue ) ); + currentRowValues.push_back( {CellType::Value, GEOS_FMT( "{}", cellValue )} ); } - tableData1D.tableData.addRow( std::move( currentRowValues ) ); - rowsLength.push_back( currentRowValues.size() ); + tableData1D.tableData.addRow( currentRowValues ); } return tableData1D; diff --git a/src/coreComponents/common/format/table/TableData.hpp b/src/coreComponents/common/format/table/TableData.hpp index aa35f06a0f6..04d524c5f6e 100644 --- a/src/coreComponents/common/format/table/TableData.hpp +++ b/src/coreComponents/common/format/table/TableData.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -23,6 +23,7 @@ #include "common/Units.hpp" #include "common/DataTypes.hpp" #include "common/format/Format.hpp" +#include "TableTypes.hpp" namespace geos { @@ -33,10 +34,22 @@ namespace geos class TableData { public: + + /** + * @brief Representing a data in TableData + */ + struct CellData + { + /// The cell type + CellType type; + /// The cell value + string value = ""; + }; + /** * @brief Add a row to the table. * The values passed to addRow (can be any type). - * @param args Cell values to be added to the row. + * @param args CellData values to be added to the row. */ template< typename ... Args > void addRow( Args const & ... args ); @@ -45,7 +58,13 @@ class TableData * @brief Add a row to the table * @param row A vector of string representing a row */ - void addRow( std::vector< string > const & row ); + void addRow( std::vector< CellData > const & row ); + + /** + * @brief Add a line separator to the table + * You must have filled values in TableData before using it + */ + void addSeparator(); /** * @brief Reset data in the table @@ -55,7 +74,7 @@ class TableData /** * @return The rows of the table */ - std::vector< std::vector< string > > const & getTableDataRows() const; + std::vector< std::vector< CellData > > const & getTableDataRows() const; /** * @brief Get all error messages @@ -66,10 +85,7 @@ class TableData private: /// vector containing all rows with cell values - std::vector< std::vector< string > > m_rows; - - /// store error if there are any inconsistencies related to the table - std::vector< string > m_errorsMsg; + std::vector< std::vector< CellData > > m_rows; }; @@ -98,7 +114,7 @@ class TableData2D /** * @brief Add a cell to the table. If necessary, create automatically the containing column & row. * @tparam T The value passed to addCell (can be any type). - * @param value Cell value to be added. + * @param value CellData value to be added. * @param rowValue The value of the row containing the cell. * @param columnValue The value of the column containing the cell. */ @@ -149,17 +165,35 @@ class TableData2D std::set< real64 > m_columnValues; }; +/** + * @brief Trait to check is the args is a special type of cell + * @tparam T The type of a cell + */ +template< typename T > +constexpr bool isCellType = std::is_same_v< T, CellType >; + template< typename ... Args > void TableData::addRow( Args const &... args ) { - std::vector< string > m_cellsValue; + std::vector< CellData > cells; ( [&] { - static_assert( has_formatter_v< decltype(args) >, "Argument passed in addRow cannot be converted to string" ); - string const cellValue = GEOS_FMT( "{}", args ); - m_cellsValue.push_back( cellValue ); + static_assert( has_formatter_v< decltype(args) > || isCellType< std::decay_t< decltype(args) > >, "Argument passed in addRow cannot be converted to string nor a CellType" ); + if constexpr (std::is_same_v< Args, CellType >) { + if( args == CellType::Separator ) + { + cells.push_back( {CellType::Separator} ); + } + else + { + cells.push_back( {CellType::MergeNext} ); + } + } + else + { + cells.push_back( {CellType::Value, GEOS_FMT( "{}", args )} ); + } } (), ...); - - addRow( m_cellsValue ); + addRow( cells ); } template< typename T > diff --git a/src/coreComponents/common/format/table/TableFormatter.cpp b/src/coreComponents/common/format/table/TableFormatter.cpp index 56f529bdcee..4305fcc8a98 100644 --- a/src/coreComponents/common/format/table/TableFormatter.cpp +++ b/src/coreComponents/common/format/table/TableFormatter.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -13,6 +13,7 @@ * ------------------------------------------------------------------------------------------------------------ */ + /** * @file TableFormatter.cpp */ @@ -20,7 +21,9 @@ #include "TableFormatter.hpp" #include #include "common/format/StringUtilities.hpp" +#include "common/logger/Logger.hpp" #include "TableFormatter.hpp" + namespace geos { @@ -38,34 +41,78 @@ TableCSVFormatter::TableCSVFormatter( TableLayout const & tableLayout ): m_tableLayout = tableLayout; } +static constexpr string_view separator = ","; string TableCSVFormatter::headerToString() const { - std::stringstream oss; - static constexpr string_view separator = ","; + string result; + + size_t total_size = 0; + for( const auto & column : m_tableLayout.getColumns()) + { + for( const auto & str : column.m_header.m_lines ) + { + total_size += str.size(); + } + total_size += separator.size(); + } + result.reserve( total_size ); for( std::size_t idxColumn = 0; idxColumn < m_tableLayout.getColumns().size(); ++idxColumn ) { - oss << m_tableLayout.getColumns()[idxColumn].m_parameter.columnName; + std::ostringstream strValue; + for( auto const & str : m_tableLayout.getColumns()[idxColumn].m_header.m_lines ) + { + result.append( str ); + } + if( idxColumn < m_tableLayout.getColumns().size() - 1 ) { - oss << separator; + result.append( separator ); } } - oss << "\n"; - return oss.str(); + result.append( "\n" ); + return result; } string TableCSVFormatter::dataToString( TableData const & tableData ) const { - std::vector< std::vector< string > > const rowsValues = tableData.getTableDataRows(); - std::ostringstream oss; + RowsCellInput const rowsValues( tableData.getTableDataRows() ); + string result; + size_t total_size = 0; for( const auto & row : rowsValues ) { - oss << stringutilities::join( row.cbegin(), row.cend(), "," ) << "\n"; + for( const auto & item : row ) + { + total_size += item.value.size(); + } + total_size += row.size(); } - return oss.str(); + result.reserve( total_size ); + + for( const auto & row : rowsValues ) + { + std::vector< string > rowConverted; + for( const auto & item : row ) + { + std::istringstream strStream( item.value ); + string line; + bool detectNewLine = false; + while( getline( strStream, line, '\n' )) + { + rowConverted.push_back( line ); + detectNewLine = true; + } + + if( !detectNewLine ) + rowConverted.push_back( item.value ); + } + result.append( stringutilities::join( rowConverted.cbegin(), rowConverted.cend(), separator )); + result.append( "\n" ); + } + + return result; } template<> @@ -79,15 +126,15 @@ string TableCSVFormatter::toString< TableData >( TableData const & tableData ) c /////////////////////////////////////////////////////////////////////// /** - * @brief Build cell given an alignment, a value and spaces - * @param alignment The aligment of cell value + * @brief Build cell given an m_alignment, a value and spaces + * @param m_alignment The aligment of cell value * @param value The cell value * @param spaces The number of spaces in the cell * @return A formated cell */ -string buildCell( TableLayout::Alignment const alignment, string_view value, integer const spaces ) +string buildCell( TableLayout::Alignment const m_alignment, string_view value, size_t const spaces ) { - switch( alignment ) + switch( m_alignment ) { case TableLayout::right: return GEOS_FMT( "{:>{}}", value, spaces ); case TableLayout::left: return GEOS_FMT( "{:<{}}", value, spaces ); @@ -96,315 +143,549 @@ string buildCell( TableLayout::Alignment const alignment, string_view value, int } } -/** - * @brief Detect columns who are not displayed from TableLayout and therefore modify columns / tableDataRows vectors - * @param columns Vector built in TableLayout containing all columns with their parameters - * @param tableDataRows Vector built in TableData containing all rows values - */ -void formatColumnsFromLayout( std::vector< TableLayout::Column > & columns, - std::vector< std::vector< string > > & tableDataRows ) -{ - integer idxColumn = 0; - for( auto iterColumn = columns.begin(); iterColumn!=columns.end(); ) - { - if( !iterColumn->m_parameter.enabled ) - { - iterColumn = columns.erase( iterColumn ); - for( auto & row : tableDataRows ) - { - row.erase( row.begin() + idxColumn ); - } - } - else - { - ++iterColumn; - ++idxColumn; - } - } -} - TableTextFormatter::TableTextFormatter( TableLayout const & tableLayout ): TableFormatter( tableLayout ) {} -void TableTextFormatter::fillTableColumnsFromRows( std::vector< TableLayout::Column > & columns, - std::vector< std::vector< string > > & rows ) const +string TableTextFormatter::toString() const { - for( size_t idxRow = 0; idxRow < rows.size(); idxRow++ ) - { - if( rows[idxRow].size() < columns.size() ) - { - rows[idxRow].resize( columns.size(), " " ); - } - - for( size_t idxColumn = 0; idxColumn < columns.size(); idxColumn++ ) - { - if( m_tableLayout.getColumns()[idxColumn].m_parameter.enabled ) - { - columns[idxColumn].m_columnValues.push_back( rows[idxRow][idxColumn] ); - } - } - } + TableData tableData; + return toString( tableData ); } -string TableTextFormatter::layoutToString() const +template<> +string TableTextFormatter::toString< TableData >( TableData const & tableData ) const { std::ostringstream tableOutput; - string sectionSeparatingLine; - std::vector< TableLayout::Column > columns = m_tableLayout.getColumns(); - - outputLayout( tableOutput, columns, {}, sectionSeparatingLine ); + CellLayoutRows cellsHeaderLayout; + CellLayoutRows cellsDataLayout; + string separatorLine; + + TableLayout tableLayout = m_tableLayout; + size_t nbEnabledColumn = 0; + + initalizeTableLayout( tableLayout, tableData, + cellsHeaderLayout, cellsDataLayout, + separatorLine, + nbEnabledColumn ); + outputTable( tableLayout, tableOutput, + cellsHeaderLayout, cellsDataLayout, + separatorLine, + nbEnabledColumn ); return tableOutput.str(); } -template<> -string TableTextFormatter::toString< TableData >( TableData const & tableData ) const +void TableTextFormatter::initalizeTableLayout( TableLayout & tableLayout, + TableData const & tableData, + CellLayoutRows & cellsHeaderLayout, + CellLayoutRows & cellsDataLayout, + string & separatorLine, + size_t & nbEnabledColumn ) const { - std::ostringstream tableOutput; - string sectionSeparatingLine; - std::vector< TableLayout::Column > columns = m_tableLayout.getColumns(); - std::vector< std::vector< string > > tableDataRows = tableData.getTableDataRows(); - std::vector< string > const & msgTableError = tableData.getErrorMsgs(); - integer const nbValuesRows = tableDataRows.size(); + setLinks( tableLayout.getColumns() ); - formatColumnsFromLayout( columns, tableDataRows ); - fillTableColumnsFromRows( columns, tableDataRows ); + populateHeaderCellsLayout( tableLayout, cellsHeaderLayout ); - outputLayout( tableOutput, columns, msgTableError, sectionSeparatingLine ); - outputSectionRows( columns, sectionSeparatingLine, tableOutput, nbValuesRows, TableLayout::Section::values ); - tableOutput << '\n'; + RowsCellInput inputDataValues( tableData.getTableDataRows()); + if( inputDataValues.size() > 0 ) + { + populateDataCellsLayout( tableLayout, cellsDataLayout, inputDataValues ); + } - return tableOutput.str(); + updateColumnMaxLength( tableLayout, cellsHeaderLayout, cellsDataLayout ); + + adjustTableWidth( tableLayout, cellsHeaderLayout, cellsDataLayout, separatorLine, nbEnabledColumn ); } -void TableTextFormatter::outputLayout( std::ostringstream & tableOutput, - std::vector< TableLayout::Column > & columns, - std::vector< string > const & msgTableError, - string & sectionSeparatingLine ) const +void TableTextFormatter::outputTable( TableLayout & tableLayout, + std::ostringstream & tableOutput, + CellLayoutRows const & cellsHeader, + CellLayoutRows const & cellsData, + string_view separatorLine, + size_t & nbEnabledColumn ) const { - string topSeparator; - size_t nbHeaderRows = 0; - std::vector< std::vector< string > > splitHeaders; - string const tableTitle = string( m_tableLayout.getTitle()); - - splitAndSetColumnNames( columns, nbHeaderRows, splitHeaders ); - findAndSetMaxStringSize( columns ); + if( tableLayout.isLineBreakEnabled()) + { + tableOutput << '\n'; + } + outputTitleRow( tableLayout, tableOutput, separatorLine ); + tableOutput << GEOS_FMT( "{}\n", separatorLine ); + outputLines( tableLayout, cellsHeader, tableOutput, tableLayout.getSublineInHeaderCounts(), + CellType::Header, separatorLine, nbEnabledColumn ); + outputLines( tableLayout, cellsData, tableOutput, tableLayout.getNbSubDataLines(), + CellType::Value, separatorLine, nbEnabledColumn ); + if( tableLayout.isLineBreakEnabled()) + { + tableOutput << '\n'; + } +} - computeTableWidth( columns, msgTableError ); - buildTableSeparators( columns, topSeparator, sectionSeparatingLine ); +void TableTextFormatter::setLinks( std::vector< TableLayout::Column > & columns ) const +{ + for( size_t idxColumn = 0; idxColumn < columns.size(); ++idxColumn ) + { + if( idxColumn < columns.size() - 1 ) + { + columns[idxColumn].setNextCell( &columns[idxColumn + 1] ); + } - tableOutput << '\n'; - outputTopRows( tableOutput, {tableTitle}, topSeparator, TableLayout::Alignment::center ); - outputTopRows( tableOutput, msgTableError, topSeparator, TableLayout::Alignment::left ); - tableOutput << GEOS_FMT( "{}\n", sectionSeparatingLine ); + if( !columns[idxColumn].m_subColumn.empty()) + { + for( auto & subCol : columns[idxColumn].m_subColumn ) + { + subCol.setParent( &columns[idxColumn] ); + } - outputSectionRows( columns, sectionSeparatingLine, tableOutput, nbHeaderRows, TableLayout::Section::header ); + setLinks( columns[idxColumn].m_subColumn ); + } + } } -void TableTextFormatter::splitAndSetColumnNames( std::vector< TableLayout::Column > & columns, - size_t & nbHeaderRows, - std::vector< std::vector< string > > & splitHeaders ) const +void TableTextFormatter::populateHeaderCellsLayout( TableLayout & tableLayout, + CellLayoutRows & cellsHeaderLayout ) const { + cellsHeaderLayout.resize( tableLayout.getMaxDepth() ); + size_t const headerLayersCount = tableLayout.getMaxDepth(); + std::vector< size_t > & sublineHeaderCounts = tableLayout.getSublineInHeaderCounts(); + sublineHeaderCounts.resize( headerLayersCount, 1 ); - splitHeaders.reserve( columns.size() ); - for( auto const & column : columns ) + for( auto it = tableLayout.beginDeepFirst(); it != tableLayout.endDeepFirst(); ++it ) { - std::vector< string > splitHeaderParts; - std::istringstream ss( column.m_parameter.columnName ); - string subColumnNames; + size_t const currentLayer = it.getCurrentLayer(); + TableLayout::CellLayout currentCell = it->m_header; - while( getline( ss, subColumnNames, '\n' )) + if( !it->hasChild() && headerLayersCount - 1 != currentLayer ) { - splitHeaderParts.push_back( subColumnNames ); + for( size_t idxRow = currentLayer; idxRow < headerLayersCount - 1; idxRow++ ) + { + TableLayout::CellLayout emptyCell{CellType::Header, "", TableLayout::Alignment::center}; + emptyCell.m_cellWidth = it->m_header.m_cellWidth; + cellsHeaderLayout[idxRow + 1].push_back( emptyCell ); + } } + currentCell.m_cellWidth = it->m_header.m_cellWidth; - splitHeaders.push_back( std::move( splitHeaderParts ) ); - } + if( it->hasParent() ) + { + if( it->getNumberCellMerge() == 0 ) + { + it->getParent()->incrementMergeHeaderCount( 1 ); + } + else + { + it->getParent()->incrementMergeHeaderCount( it->getNumberCellMerge() ); + } + } - nbHeaderRows = std::max_element( splitHeaders.begin(), splitHeaders.end(), - []( auto const & v1, auto const & v2 ) { return v1.size() < v2.size(); } )->size(); + if( it->getNumberCellMerge() > 1 ) + { + it->decrementMergeHeaderCount(); + } - for( auto & headerParts : splitHeaders ) - { - if( headerParts.size() < nbHeaderRows ) + sublineHeaderCounts[currentLayer] = std::max( sublineHeaderCounts[currentLayer], + currentCell.m_lines.size() ); + + for( size_t idxColumn = 0; idxColumn < it->getNumberCellMerge(); idxColumn++ ) { - headerParts.resize( nbHeaderRows, " " ); + TableLayout::CellLayout mergingCell{ CellType::MergeNext, "", TableLayout::Alignment::center }; + cellsHeaderLayout[currentLayer].push_back( mergingCell ); } - columns[&headerParts - &splitHeaders[0]].m_parameter.splitColumnNameLines = headerParts; - } -} + cellsHeaderLayout[currentLayer].push_back( currentCell ); + } -void TableTextFormatter::findAndSetMaxStringSize( std::vector< TableLayout::Column > & columns ) const -{ - for( auto & column : columns ) + size_t idxLayer = 0; + for( auto & lines: cellsHeaderLayout ) { - auto const maxStringSizeHeader = *std::max_element( column.m_parameter.splitColumnNameLines.begin(), - column.m_parameter.splitColumnNameLines.end(), - []( const auto & a, const auto & b ) {return a.size() < b.size();} ); - column.m_maxStringSize = maxStringSizeHeader; + size_t const nbLinesInLayer = sublineHeaderCounts[idxLayer]; - for( auto const & cell : column.m_columnValues ) + if( nbLinesInLayer != 1 ) { - if( column.m_maxStringSize.length() < cell.length()) + for( auto & cell : lines ) { - column.m_maxStringSize = cell; + cell.m_lines.resize( nbLinesInLayer, "" ); } } + idxLayer++; } } -void TableTextFormatter::increaseColumnsSize( std::vector< TableLayout::Column > & columns, - integer const extraCharacters ) const +void TableTextFormatter::populateDataCellsLayout( TableLayout & tableLayout, + CellLayoutRows & cellsDataLayout, + RowsCellInput & inputDataValues ) const { - integer const extraCharactersPerColumn = std::ceil( extraCharacters / columns.size() ); - for( std::size_t idxColumn = 0; idxColumn < columns.size(); ++idxColumn ) + cellsDataLayout = { + inputDataValues.size(), + std::vector< TableLayout::CellLayout >( inputDataValues[0].size(), TableLayout::CellLayout()) + }; + + std::vector< size_t > & subDataLineCounts = tableLayout.getNbSubDataLines(); + for( size_t idxRow = 0; idxRow < inputDataValues.size(); ++idxRow ) { - integer newMaxStringSize = extraCharactersPerColumn + columns[idxColumn].m_maxStringSize.size(); - if( idxColumn == columns.size() - 1 ) + size_t maxLinesPerRow = 0; + size_t idxColumn = 0; + for( auto it = tableLayout.beginDeepFirst(); it != tableLayout.endDeepFirst(); ++it ) { - newMaxStringSize += m_tableLayout.getColumnMargin(); + if( !it->hasChild()) + { + TableData::CellData & cell = inputDataValues[idxRow][idxColumn]; + TableLayout::ColumnAlignement const cellAlignement = it->m_alignment; + TableLayout::Alignment const alignement = cell.type == CellType::Header ? + cellAlignement.headerAlignment : + cellAlignement.valueAlignment; + + if( it->m_header.m_cellType == CellType::Hidden ) + { + cell.type = it->m_header.m_cellType; + } + if( it->m_header.m_cellType == CellType::Separator ) + { + cell.value = m_horizontalLine; + } + + cellsDataLayout[idxRow][idxColumn] = TableLayout::CellLayout( cell.type, cell.value, alignement ); + maxLinesPerRow = std::max( maxLinesPerRow, cellsDataLayout[idxRow][idxColumn].m_lines.size() ); + idxColumn++; + } } + subDataLineCounts.push_back( { maxLinesPerRow } ); + } - columns[idxColumn].m_maxStringSize = GEOS_FMT( "{:>{}}", - columns[idxColumn].m_maxStringSize, - newMaxStringSize ); + size_t idxLayer = 0; + for( auto & lines: cellsDataLayout ) + { + size_t nbLinesInLayer = subDataLineCounts[idxLayer]; + if( nbLinesInLayer != 1 ) + { + for( auto & cell : lines ) + { + cell.m_lines.resize( nbLinesInLayer, "" ); + } + } + idxLayer++; } } -void computeTableErrorLength( std::vector< string > const & msgTableError, string::size_type & msgTableErrorLength ) +void TableTextFormatter::updateColumnMaxLength( TableLayout & tableLayout, + CellLayoutRows & cellsHeaderLayout, + CellLayoutRows & cellsDataLayout ) const { - if( !msgTableError.empty() ) + auto getMaxLineLength = []( std::vector< std::string > const & lines ) -> size_t { - auto maxStringSize = *(std::max_element( msgTableError.begin(), msgTableError.end(), - []( const auto & a, const auto & b ) { - return a.size() < b.size(); - } )); + auto maxLineLength = std::max_element( lines.begin(), lines.end(), + []( std::string const & a, std::string const & b ) { + return a.length() < b.length(); + } ); + return (maxLineLength != lines.end()) ? maxLineLength->length() : 0; + }; + + auto updateCellMaxLength = [&tableLayout]( TableLayout::CellLayout & cell, size_t maxColumnSize, + TableLayout::CellLayout * previousCell = nullptr ) + { + if( previousCell && previousCell->m_cellType == CellType::MergeNext ) + { + size_t const previousCellMaxLength = previousCell->m_cellWidth; + size_t const additionalMargin = tableLayout.getColumnMargin(); + cell.m_cellWidth = maxColumnSize + previousCellMaxLength + additionalMargin; + previousCell->m_cellWidth = 0; + } + else + { + cell.m_cellWidth = maxColumnSize; + } + }; - msgTableErrorLength += maxStringSize.size() + 1; // max string size + line return at the end - } -} + size_t const numColumns = cellsHeaderLayout[0].size(); + //each idx per row + std::vector< size_t > accMaxStringColumn( cellsDataLayout.size(), 0 ); + for( size_t idxColumn = 0; idxColumn < numColumns; ++idxColumn ) + { + size_t maxColumnSize = 1; -void computeTableSectionLength( std::vector< TableLayout::Column > & columns, string::size_type & sectionlineLength ) -{ - sectionlineLength += std::accumulate( columns.begin(), columns.end(), 0, - []( auto sum, const auto & column ) - { return sum + column.m_maxStringSize.length();} ); -} + // init header column max length + for( size_t rowIdx = 0; rowIdx < cellsDataLayout.size(); ++rowIdx ) + { + size_t const cellDataLength = getMaxLineLength( cellsDataLayout[rowIdx][idxColumn].m_lines ); + if( idxColumn == 0 || + (idxColumn > 0 && cellsDataLayout[rowIdx][idxColumn - 1].m_cellType != CellType::MergeNext)) + { + maxColumnSize = std::max( maxColumnSize, cellDataLength ); + } + } -void TableTextFormatter::computeTableWidth( std::vector< TableLayout::Column > & columns, - std::vector< string > const & msgTableError ) const -{ - integer const columnMargin = m_tableLayout.getColumnMargin(); - integer const borderMargin = m_tableLayout.getBorderMargin(); - string const tableTitle = string( m_tableLayout.getTitle() ); + for( size_t rowIdx = 0; rowIdx < cellsHeaderLayout.size(); ++rowIdx ) + { + size_t const cellHeaderLength = getMaxLineLength( cellsHeaderLayout[rowIdx][idxColumn].m_lines ); + maxColumnSize = std::max( {maxColumnSize, cellHeaderLength} ); + cellsHeaderLayout[rowIdx][idxColumn].m_cellWidth = maxColumnSize; + } - string::size_type sectionLengthWithSpacing = ( ( columns.size() - 1 ) * columnMargin ) + (borderMargin * 2); - string::size_type sectionlineLength = sectionLengthWithSpacing; - string::size_type maxTopLineLength = tableTitle.length(); - string::size_type msgTableErrorLength = borderMargin; + // update maxColumnSize for data cell + for( size_t rowIdx = 0; rowIdx < cellsDataLayout.size(); ++rowIdx ) + { + TableLayout::CellLayout & dataCell = cellsDataLayout[rowIdx][idxColumn]; + TableLayout::CellLayout * previousDataCell = (idxColumn > 0) ? + &cellsDataLayout[rowIdx][idxColumn - 1] : + nullptr; - computeTableErrorLength( msgTableError, msgTableErrorLength ); - computeTableSectionLength( columns, sectionlineLength ); + if( dataCell.m_cellType == CellType::MergeNext ) + { + accMaxStringColumn[rowIdx] += cellsHeaderLayout[0][idxColumn].m_cellWidth + tableLayout.getColumnMargin(); + } - maxTopLineLength = std::max( maxTopLineLength, msgTableErrorLength ); - if( sectionlineLength < maxTopLineLength ) - { - integer const extraCharacters = maxTopLineLength - sectionlineLength; - increaseColumnsSize( columns, extraCharacters ); + if( idxColumn > 0 && + previousDataCell->m_cellType == CellType::MergeNext && dataCell.m_cellType != CellType::MergeNext ) + { + // root header cells know the maximum string size in the column + size_t const sumOfMergingCell = accMaxStringColumn[rowIdx] + cellsHeaderLayout[0][idxColumn].m_cellWidth; + if( sumOfMergingCell < dataCell.m_cellWidth ) + { + maxColumnSize -= dataCell.m_cellWidth - sumOfMergingCell; + for( size_t rowIdx2 = 0; rowIdx2 < rowIdx; rowIdx2++ ) + { + updateCellMaxLength( cellsDataLayout[rowIdx2][idxColumn], maxColumnSize ); + if( cellsDataLayout[rowIdx2][idxColumn].m_cellType == CellType::Separator ) + { + size_t const additionnalMargin = (idxColumn == numColumns - 1) ? + tableLayout.getBorderMargin() * 2 + 2 : + tableLayout.getColumnMargin(); + cellsDataLayout[rowIdx2][idxColumn].m_lines[0] = std::string( maxColumnSize + additionnalMargin, '-' ); + } + } + } + + accMaxStringColumn[rowIdx] = 0; + } + else + { + size_t const cellDataLength = getMaxLineLength( cellsDataLayout[rowIdx][idxColumn].m_lines ); + maxColumnSize = std::max( {maxColumnSize, cellDataLength} ); + } + + updateCellMaxLength( dataCell, maxColumnSize, previousDataCell ); + + if( dataCell.m_cellType == CellType::Separator ) + { + size_t separatorLength = dataCell.m_cellWidth; + separatorLength += (idxColumn == numColumns - 1) ? + tableLayout.getBorderMargin() * 2 + 2 : + tableLayout.getColumnMargin(); + + dataCell.m_lines[0] = std::string( separatorLength, '-' ); + } + } + + // last pass for updating cells header + for( size_t rowIdx = 0; rowIdx < cellsHeaderLayout.size(); ++rowIdx ) + { + TableLayout::CellLayout & headerCell = cellsHeaderLayout[rowIdx][idxColumn]; + TableLayout::CellLayout * previousHeaderCell = (idxColumn > 0) ? + &cellsHeaderLayout[rowIdx][idxColumn - 1]: + nullptr; + + updateCellMaxLength( headerCell, maxColumnSize, previousHeaderCell ); + } } } - -void TableTextFormatter::buildTableSeparators( std::vector< TableLayout::Column > const & columns, - string & topSeparator, - string & sectionSeparatingLine ) const +void TableTextFormatter::adjustTableWidth( TableLayout & tableLayout, + CellLayoutRows & cellsHeaderLayout, + CellLayoutRows & cellsDataLayout, + string & separatorLine, + size_t & nbEnabledColumn ) const { - { // section separator line - integer const columnMargin = m_tableLayout.getColumnMargin(); - integer const borderMargin = m_tableLayout.getBorderMargin(); + std::string const tableTitle = std::string( tableLayout.getTitle() ); + size_t const margins = (size_t) tableLayout.getBorderMargin() * 2; + size_t const horizontalBar = 2; + + size_t sectionlineLength = 0; + size_t nbHiddenColumns = 0; + size_t headerColumnCount = 0; - std::vector< string > maxStringPerColumn; - for( auto const & column : columns ) + for( auto const & column : cellsHeaderLayout[0] ) + { + if( column.m_cellType == CellType::Hidden ) + { + nbHiddenColumns++; + } + if( column.m_cellType != CellType::Hidden ) + { + nbEnabledColumn++; + } + if( column.m_cellType == CellType::Value || column.m_cellType == CellType::Header ) { - maxStringPerColumn.push_back( string( column.m_maxStringSize.length(), m_horizontalLine ) ); + sectionlineLength += column.m_cellWidth; + headerColumnCount++; } + } - string const patternBetweenColumns = GEOS_FMT( "{:-^{}}", m_horizontalLine, columnMargin ); - std::string const leftBorder = GEOS_FMT( "{}{:-<{}}", m_horizontalLine, "", borderMargin ); - std::string const rightBorder = GEOS_FMT( "{}{:-<{}}", m_horizontalLine, "", borderMargin ); - std::string const columnJoin = stringutilities::join( maxStringPerColumn, patternBetweenColumns ); + size_t const spacingBetweenColumns = headerColumnCount == 0 ? (size_t) tableLayout.getColumnMargin(): + (headerColumnCount - 1) * (size_t) tableLayout.getColumnMargin(); - std::ostringstream oss; - oss << leftBorder << columnJoin << rightBorder; - sectionSeparatingLine = oss.str(); - } + sectionlineLength += spacingBetweenColumns + margins + horizontalBar; - { // top line separator - // -2 because we can have '+' to the extremity of top separator - integer const topSeparatorLength = sectionSeparatingLine.size() - 2; - topSeparator = GEOS_FMT( "{}{:-<{}}{}", m_horizontalLine, "", topSeparatorLength, m_horizontalLine ); + size_t const titleRowLength = tableTitle.length() + margins + horizontalBar; + size_t const maxLength = std::max( {titleRowLength, sectionlineLength} ); + if( sectionlineLength < maxLength ) + { + size_t const paddingCharacters = maxLength - sectionlineLength; + adjustColumnWidth( cellsHeaderLayout, nbHiddenColumns, paddingCharacters ); + adjustColumnWidth( cellsDataLayout, nbHiddenColumns, paddingCharacters ); + sectionlineLength = maxLength; } + + separatorLine = GEOS_FMT( "{:-^{}}", m_horizontalLine, sectionlineLength ); } -void TableTextFormatter::outputTopRows( std::ostringstream & tableOutput, - std::vector< string > const & msg, - string_view topSeparator, - TableLayout::Alignment alignment ) const +void TableTextFormatter::adjustColumnWidth( CellLayoutRows & cells, + size_t const nbHiddenColumns, + size_t const paddingCharacters ) const { - if( msg.size() != 0 && msg[0] != "" ) + size_t const numRows = cells.size(); + size_t const nbColumns = cells[0].size(); + size_t const remainingPaddingForLastColumn = paddingCharacters % (nbColumns - nbHiddenColumns); + size_t const paddingPerColumn = paddingCharacters / (nbColumns - nbHiddenColumns); + for( size_t idxRow = 0; idxRow < numRows; ++idxRow ) { - tableOutput << GEOS_FMT( "{}\n", topSeparator ); - for( std::string const & str : msg ) + for( size_t idxColumn = 0; idxColumn < nbColumns; ++idxColumn ) { - tableOutput << m_verticalLine << string( m_tableLayout.getBorderMargin(), ' ' ); - tableOutput << buildCell( alignment, str, (topSeparator.length() - 6)); - tableOutput << string( m_tableLayout.getBorderMargin(), ' ' ) << "|\n"; + auto & currentCell = cells[idxRow][idxColumn]; + + if( currentCell.m_cellType != CellType::Hidden ) + { + size_t nextIdxColumn = idxColumn + 1; + while( nextIdxColumn < nbColumns && + cells[idxRow][nextIdxColumn].m_cellType == CellType::Hidden ) + { + nextIdxColumn++; + } + bool isLastVisibleColumn = nextIdxColumn == nbColumns; + + if( idxColumn > 0 && cells[idxRow][idxColumn - 1].m_cellType == CellType::MergeNext ) + { + auto * previousCell = &cells[idxRow][idxColumn - 1]; + currentCell.m_cellWidth += previousCell->m_cellWidth; + previousCell->m_cellWidth = 0; + } + + size_t const additionalPadding = (isLastVisibleColumn || idxColumn == nbColumns - 1) ? + remainingPaddingForLastColumn : + 0; + + currentCell.m_cellWidth += paddingPerColumn + additionalPadding; + } } } + } -void TableTextFormatter::outputSectionRows( std::vector< TableLayout::Column > const & columns, - string_view sectionSeparatingLine, - std::ostringstream & tableOutput, - integer const nbRows, - TableLayout::Section const section ) const +void TableTextFormatter::outputTitleRow( TableLayout & tableLayout, + std::ostringstream & tableOutput, + string_view separatorLine ) const { - integer const columnMargin = m_tableLayout.getColumnMargin(); - integer const borderMargin = m_tableLayout.getBorderMargin(); - - for( integer idxRow = 0; idxRow< nbRows; ++idxRow ) + string const tableTitle = string( tableLayout.getTitle()); + if( !tableTitle.empty() ) { - // Append the left border - tableOutput << GEOS_FMT( "{:<{}}", m_verticalLine, 1 + borderMargin ); - for( std::size_t idxColumn = 0; idxColumn < columns.size(); ++idxColumn ) - { - TableLayout::Column const currentColumn = columns[idxColumn]; - auto const & columnContent = section == TableLayout::Section::header ? - columns[idxColumn].m_parameter.splitColumnNameLines : - columns[idxColumn].m_columnValues; - string cell = columnContent.at( idxRow ); - integer const cellSize = currentColumn.m_maxStringSize.length(); + tableOutput << GEOS_FMT( "{}\n", separatorLine ); + tableOutput << GEOS_FMT( "{:<{}}", m_verticalLine, tableLayout.getBorderMargin() + 1 ); + tableOutput << buildCell( TableLayout::Alignment::center, + tableTitle, + separatorLine.length() - (tableLayout.getBorderMargin() * 2) - 2 ); + tableOutput << GEOS_FMT( "{:>{}}\n", m_verticalLine, tableLayout.getBorderMargin() + 1 ); + } +} - tableOutput << buildCell( currentColumn.m_parameter.alignment, cell, cellSize ); +void TableTextFormatter::formatCell( TableLayout & tableLayout, + std::ostringstream & tableOutput, + TableLayout::CellLayout const & cell, + size_t idxLine ) const +{ + GEOS_UNUSED_VAR( tableLayout ); + tableOutput << buildCell( cell.m_alignment, + cell.m_lines[idxLine], + cell.m_cellWidth ); +} - // Add space between column - if( idxColumn < columns.size() - 1 ) +void TableTextFormatter::outputLines( TableLayout & tableLayout, + CellLayoutRows const & cellsLayout, + std::ostringstream & tableOutput, + std::vector< size_t > const & nbLinesRow, + CellType sectionType, + string_view separatorLine, + size_t & nbEnabledColumn ) const +{ + size_t idxLine = 0; + for( auto const & row : cellsLayout ) + { + for( size_t idxSubLine = 0; idxSubLine < nbLinesRow[idxLine]; idxSubLine++ ) + { + size_t idxColumn = 0; + size_t nbEnabledColumnTemp = nbEnabledColumn; + while( nbEnabledColumnTemp > 0 ) { - tableOutput << GEOS_FMT( "{:^{}}", m_verticalLine, columnMargin ); + auto & cell = row[idxColumn]; + switch( cell.m_cellType ) + { + case CellType::Value: + case CellType::Header: + if( &cell == &(row.front()) ) + { + tableOutput << GEOS_FMT( "{:<{}}", m_verticalLine, tableLayout.getBorderMargin() + 1 ); + } + + formatCell( tableLayout, tableOutput, cell, idxSubLine ); + + if( &cell == &(row.back()) || nbEnabledColumnTemp == 1 ) + { + tableOutput << GEOS_FMT( "{:>{}}", m_verticalLine, tableLayout.getBorderMargin() + 1 ); + } + else + { + tableOutput << GEOS_FMT( "{:^{}}", m_verticalLine, tableLayout.getColumnMargin()); + } + nbEnabledColumnTemp--; + break; + case CellType::MergeNext: + if( &cell == &(row.front()) ) + { + tableOutput << GEOS_FMT( "{:<{}}", m_verticalLine, tableLayout.getBorderMargin() + 1 ); + } + if( &cell == &(row.back()) ) + { + formatCell( tableLayout, tableOutput, cell, idxSubLine ); + tableOutput << GEOS_FMT( "{:>{}}", m_verticalLine, tableLayout.getBorderMargin() + 1 ); + } + nbEnabledColumnTemp--; + break; + case CellType::Separator: + formatCell( tableLayout, tableOutput, cell, idxSubLine ); + nbEnabledColumnTemp--; + break; + case CellType::Hidden: + if( &cell == &(row.back()) ) + { + tableOutput << GEOS_FMT( "{:>{}}", m_verticalLine, tableLayout.getBorderMargin() + 1 ); + } + default: + break; + } + idxColumn++; } + tableOutput <{}}\n", m_verticalLine, borderMargin + 1 ); } - - if( nbRows != 0 ) + if( sectionType == CellType::Value && !cellsLayout.empty()) { - tableOutput << GEOS_FMT( "{}\n", sectionSeparatingLine ); + tableOutput << separatorLine; } } - } diff --git a/src/coreComponents/common/format/table/TableFormatter.hpp b/src/coreComponents/common/format/table/TableFormatter.hpp index 165533445b6..04392b7691d 100644 --- a/src/coreComponents/common/format/table/TableFormatter.hpp +++ b/src/coreComponents/common/format/table/TableFormatter.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -22,6 +22,7 @@ #include "TableData.hpp" #include "TableLayout.hpp" +#include "TableTypes.hpp" namespace geos { @@ -32,6 +33,13 @@ namespace geos class TableFormatter { +public: + /// Represent the TableData values + using RowsCellInput = std::vector< std::vector< TableData::CellData > >; + /// Represent the Table (header or values) structured + using CellLayoutRows = std::vector< std::vector< TableLayout::CellLayout > >; + + protected: /// Layout for a table @@ -41,14 +49,9 @@ class TableFormatter /** * @brief Construct a new Table Formatter from a tableLayout - * @param tableLayout Contain all column names and optionnaly the table title + * @param tableLayout Contain all tableColumnData names and optionnaly the table title */ TableFormatter( TableLayout const & tableLayout ); - - /** - * @brief Destroy the Table Formatter object - */ - virtual ~TableFormatter() = default; }; /** @@ -67,23 +70,18 @@ class TableCSVFormatter : public TableFormatter /** * @brief Construct a new Table Formatter from a tableLayout - * @param tableLayout Contain all column names and optionnaly the table title + * @param tableLayout Contain all tableColumnData names and optionnaly the table title */ TableCSVFormatter( TableLayout const & tableLayout ); /** - * @brief Destroy the TableCSVFormatter object - */ - virtual ~TableCSVFormatter() = default; - - /** - * @return The string with all column names. + * @return The string with all tableColumnData names. */ string headerToString() const; /** - * @brief Convert the table data to a CSV string. - * @param tableData The 1D table data. + * @brief Convert the table data to a CSV string.. + * @param tableData The table data * @return The CSV string representation of the table data. */ string dataToString( TableData const & tableData ) const; @@ -115,7 +113,6 @@ class TableTextFormatter : public TableFormatter { public: - /** * @brief Construct a new TableFormatter */ @@ -125,20 +122,15 @@ class TableTextFormatter : public TableFormatter /** * @brief Construct a new TableFormatter from a tableLayout - * @param tableLayout Contain all column names and optionnaly the table title + * @param tableLayout Contain all tableColumnData names and optionnaly the table title */ TableTextFormatter( TableLayout const & tableLayout ); - - /** - * @brief Destroy the Table Text Formatter object - */ - virtual ~TableTextFormatter() = default; - /** - * @return A TableLayout converted into a formatted representation. + * @return A TableLayout string representation, + * The TableTextFormatter receives hasn't receive any data, so only the header part is returned. */ - string layoutToString() const; + string toString() const; /** * @brief Convert a data source to a table string. @@ -152,99 +144,139 @@ class TableTextFormatter : public TableFormatter /// symbol for separator construction static constexpr char m_verticalLine = '|'; - /// for the extremity of a row + /// for the extremity of a row static constexpr char m_horizontalLine = '-'; - /** - * @brief Fill the vector (m_column) in tableData with values from rows stored in tableData. - * @param columns Vector of columns to be filled. - * @param tableData Vector containing all rows filled with values - */ - void fillTableColumnsFromRows( std::vector< TableLayout::Column > & columns, - std::vector< std::vector< string > > & tableData ) const; + +/** + * @brief Initializes the table layout with the given table data and prepares necessary layouts for headers and data cells. + * @param tableLayout A reference to the `TableLayout` object. + * @param tableData A constant reference to the `TableData` object, which contains the actual data for the table. + * @param cellsHeaderLayout A reference to a `CellLayoutRows` where the header cells will be populated. + * @param cellsDataLayout A reference to a `CellLayoutRows` where the data cells will be populated. + * @param separatorLine A string that will be used as the table separator line + */ + void initalizeTableLayout( TableLayout & tableLayout, + TableData const & tableData, + CellLayoutRows & cellsDataLayout, + CellLayoutRows & cellsHeaderLayout, + string & separatorLine, + size_t & nbEnabledColumn ) const; +/** + * @brief Outputs the formatted table to the provided output stream. + * @param tableLayout The layout of the table + * @param tableOutput A reference to an `std::ostringstream` where the formatted table will be written. + * @param cellsHeader The layout of the header rows + * @param cellsData The layout of the data rows + * @param separatorLine The string to be used as the table separator line + */ + void outputTable( TableLayout & tableLayout, + std::ostringstream & tableOutput, + CellLayoutRows const & cellsHeader, + CellLayoutRows const & cellsData, + string_view separatorLine, + size_t & nbEnabledColumn ) const; /** - * @brief Converts a TableLayout into a formatted representation. - * @param tableOutput The output stream - * @param columns The vector containing all table columns - * @param msgTableError A vector containg all error related to the table - * @param sectionSeparatingLine An empty string for building the section separator + * @brief Sets parent-child relationships between columns and sub-columns. + * @param columns A reference to a vector of `TableLayout::Column` objects. */ - void outputLayout( std::ostringstream & tableOutput, - std::vector< TableLayout::Column > & columns, - std::vector< string > const & msgTableError, - string & sectionSeparatingLine ) const; + void setLinks( std::vector< TableLayout::Column > & columns ) const; /** - * @brief Split all header names by detecting the newline \\n character. and - * set the same vector size for each split header and merge it into columns - * @param columns The vector containg all columns - * @param largestHeaderVectorSize The largest split header vector size - * @param splitHeaders A empty vector who will contain all split header names + * @brief Adjusts the header layout by ensuring all header layers have consistent row sizes and formats. + * @param tableLayout The layout of the table, containing information about columns, headers, and their layers. + * @param cellsHeaderLayout A reference to the collection of header cells that will be updated with the gridified layout. */ - void splitAndSetColumnNames( std::vector< TableLayout::Column > & columns, - size_t & largestHeaderVectorSize, - std::vector< std::vector< string > > & splitHeaders ) const; + void populateHeaderCellsLayout( TableLayout & tableLayout, + CellLayoutRows & cellsDataLayout ) const; + +/** + * @brief Populates the data cells layout based on input data values. + * @param tableLayout The layout of the table, + * @param cellsDataLayout A reference to the layout for the data cells that will be populated. + * @param inputDataValues A 2D vector containing the actual input data values. + */ + void populateDataCellsLayout( TableLayout & tableLayout, + CellLayoutRows & cellsDataLayout, + RowsCellInput & inputDataValues ) const; /** - * @brief For each column find and set the column's longest string - * @param columns The vector containg all columns + * @brief Finds and sets the longest string for each column in the table. + * @param tableLayout The layout of the table, + * @param cellHeaderLength A reference to the collection of data cells. + * The function updates the maximum string + * length for each cell based on the longest string found in the column. + * @param cellsDataLayout A reference to the collection of data cells. + * The function updates the maximum string + * length for each cell based on the longest string found in the column. */ - void findAndSetMaxStringSize( std::vector< TableLayout::Column > & columns ) const; + void updateColumnMaxLength( TableLayout & tableLayout, + CellLayoutRows & cellHeaderLength, + CellLayoutRows & cellsDataLayout ) const; /** - * @brief recalculate the largest string size for each columns - * @param columns Vector containing all table columns - * @param extraCharacters Extra characters to be added to \p m_maxStringSize of each columns + * @brief Computes and constructs the separator lines for the table. + * Adjust columns if the title is the largest row + * @param tableLayout The layout of the table, + * @param cellsHeaderLayout A reference to the collection of header cells that can be affected by column resizing. + * @param cellsDataLayout A reference to the collection of data cells that can be affected by column resizing. + * @param separatorLine A string reference where the table separator line will be created */ - void increaseColumnsSize( std::vector< TableLayout::Column > & columns, - integer const extraCharacters ) const; + void adjustTableWidth( TableLayout & tableLayout, + CellLayoutRows & cellsHeaderLayout, + CellLayoutRows & cellsDataLayout, + string & separatorLine, + size_t & nbEnabledColumn ) const; /** - * @brief Compute the max table line length, taking into account the length of : title, error, columns header and content - * Increase the size of the columns if necessary - * @param columns Vector of column containing containing the largest string for each column - * @param msgTableError Vector containing all error messages + * @brief Increases the size of columns to accommodate extra characters. + * @param cells A reference to the collection of data/header cells + * @param nbHiddenColumns The total number of hidden columns in the table. + * @param extraCharacters The total number of extra characters to be distributed across the columns. */ - void computeTableWidth( std::vector< TableLayout::Column > & columns, - std::vector< string > const & msgTableError ) const; + void adjustColumnWidth( CellLayoutRows & cells, + size_t nbHiddenColumns, + size_t const paddingCharacters ) const; /** - * @brief Build all separators needed from content length contained in the columns vector - * @param columns Vector containing all table columns - * @param topSeparator Top separator to be built - * @param sectionSeparatingLine Line section separator to be built + * @brief Output the title row in the table + * @param tableLayout The layout of the table + * @param tableOutput The output stream + * @param separatorLine The table separator line string */ - void buildTableSeparators( std::vector< TableLayout::Column > const & columns, - string & topSeparator, - string & sectionSeparatingLine ) const; + void outputTitleRow( TableLayout & tableLayout, + std::ostringstream & tableOutput, + string_view separatorLine ) const; /** - * @brief Add a row on top of the table + * @brief Formats a table cell and appends it to the table output. + * @param tableLayout The layout of the table * @param tableOutput The output stream - * @param msg Vector of string(s) to display - * @param topSeparator The top table separator - * @param alignment The aligment for a row + * @param cell The cell to format + * @param idxLine The current line index used to access the specific content for the cell. */ - void outputTopRows( std::ostringstream & tableOutput, - std::vector< string > const & msg, - string_view topSeparator, - TableLayout::Alignment alignment ) const; + void formatCell( TableLayout & tableLayout, + std::ostringstream & tableOutput, + TableLayout::CellLayout const & cell, + size_t idxLine ) const; /** - * @brief Output a section by specifying it's type ( header or section ) - * @param columns Vector containing all table columns - * @param sectionSeparatingLine Line separator between sections - * @param rows A section row - * @param nbRows Indicates the number of lines in a section - * @param section The section to be built - * @note Add the ending line if there are one or more rows + * @brief Outputs the formatted table lines to the output stream. + * @param tableLayout The layout of the table + * @param cellsLayout A collection of rows, each containing a layout of cells to be processed and formatted. + * @param tableOutput The output stream + * @param nbLinesRow A vector containing the number of sub-lines for each row. + * @param sectionType The type of the section being processed (Header, Value, etc.). + * @param separatorLine The table separator line string */ - void outputSectionRows( std::vector< TableLayout::Column > const & columns, - string_view sectionSeparatingLine, - std::ostringstream & rows, - integer const nbRows, - TableLayout::Section const section ) const; + void outputLines( TableLayout & tableLayout, + CellLayoutRows const & cellsLayout, + std::ostringstream & tableOutput, + std::vector< size_t > const & nbLinesRow, + CellType sectionType, + string_view separatorLine, + size_t & nbEnabledColumn ) const; }; /** diff --git a/src/coreComponents/common/format/table/TableLayout.cpp b/src/coreComponents/common/format/table/TableLayout.cpp index 7912baa9211..10350ac4a6c 100644 --- a/src/coreComponents/common/format/table/TableLayout.cpp +++ b/src/coreComponents/common/format/table/TableLayout.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -16,64 +16,234 @@ /** * @file TableData.hpp */ - #include "TableLayout.hpp" +#include namespace geos { -TableLayout::TableLayout( std::vector< string > const & columnNames, string const & title ): - m_tableTitle( title ) +void TableLayout::addToColumns( std::vector< string > const & columnNames ) { - setMargin( MarginValue::medium ); - m_columns.reserve( columnNames.size() ); - for( auto const & name : columnNames ) + for( auto const & m_header : columnNames ) { - m_columns.push_back( {TableLayout::ColumnParam{{name}, Alignment::right, true}, {}, ""} ); + addToColumns( m_header ); } } -TableLayout::TableLayout( std::vector< ColumnParam > const & columnParameters, string const & title ): - m_tableTitle( title ) +void TableLayout::addToColumns( string_view m_header ) { - setMargin( MarginValue::medium ); - m_columns.reserve( columnParameters.size() ); - for( auto const & param : columnParameters ) - { - m_columns.push_back( { param, {}, ""} ); - } + TableLayout::Column column = TableLayout::Column().setName( m_header ); + m_tableColumnsData.push_back( column ); +} + +void TableLayout::addToColumns( TableLayout::Column const & column ) +{ + m_tableColumnsData.push_back( column ); +} + +TableLayout & TableLayout::setTitle( string_view title ) +{ + m_tableTitle = title; + return *this; } -void TableLayout::setMargin( MarginValue marginValue ) +TableLayout & TableLayout::enableLineBreak( bool value ) { + m_wrapLine = value; + return *this; +} + +TableLayout & TableLayout::setMargin( MarginValue marginValue ) +{ + m_marginValue = marginValue; m_borderMargin = marginValue; m_columnMargin = integer( marginValue ) * 2 + 1; + + return *this; +} + +bool TableLayout::isLineBreakEnabled() const +{ return m_wrapLine; } + +size_t TableLayout::getMaxDepth() const +{ + size_t depthMax = 1; + size_t currDepth = 1; + for( auto const & column : m_tableColumnsData ) + { + currDepth = 1; + TableLayout::Column const * currColumn = &column; + while( !currColumn->m_subColumn.empty()) + { + currColumn = &currColumn->m_subColumn[0]; + currDepth++; + } + depthMax = std::max( currDepth, depthMax ); + } + return depthMax; +} + +void divideCell( std::vector< string > & lines, string const & value ) +{ + std::istringstream strStream( value ); + std::string line; + lines.clear(); + while( getline( strStream, line, '\n' )) + { + lines.push_back( line ); + } + + if( line.empty()) + { + lines.push_back( "" ); + } +} + +TableLayout::CellLayout::CellLayout(): + m_lines( {""} ), + m_cellType( CellType::Header ), + m_alignment( TableLayout::Alignment::center ), + m_cellWidth( 0 ) +{} + +TableLayout::CellLayout::CellLayout( CellType type, string const & cellValue, TableLayout::Alignment alignment ): + m_cellType( type ), + m_alignment( alignment ) +{ + divideCell( m_lines, cellValue ); + if( !m_lines.empty()) + { + m_cellWidth = std::max_element( m_lines.begin(), m_lines.end(), []( const auto & a, const auto & b ) + { + return a.length() < b.length(); + } )->length(); + } + else + { + m_cellWidth = 0; + } +} + +TableLayout::Column::Column(): + m_parent( nullptr ), m_next( nullptr ) +{ + m_header.m_lines = {}; + m_header.m_cellType = CellType::Header; + m_header.m_alignment = Alignment::center; +} + +TableLayout::Column::Column( TableLayout::CellLayout cell ): + m_parent( nullptr ), m_next( nullptr ) +{ m_header = cell; } + + +TableLayout::Column & TableLayout::Column::setName( string_view name ) +{ + m_header.m_lines.push_back( std::string( name ) ); + divideCell( m_header.m_lines, m_header.m_lines[0] ); + m_header.m_cellType = CellType::Header; + return *this; +} + +TableLayout::Column & TableLayout::Column::setVisibility( CellType celltype ) +{ + m_header.m_cellType = celltype; + return *this; +} + +TableLayout::Column & TableLayout::Column::addSubColumns( std::initializer_list< string > subColName ) +{ + std::vector< TableLayout::Column > subColumns; + for( auto const & name : subColName ) + { + TableLayout::CellLayout cell{CellType::Header, name, TableLayout::Alignment::center}; + TableLayout::Column col{cell}; + subColumns.emplace_back( col ); + } + m_subColumn = subColumns; + return *this; } -std::vector< TableLayout::Column > const & TableLayout::getColumns() const +TableLayout::Column & TableLayout::Column::addSubColumns( std::initializer_list< TableLayout::Column > subCol ) { - return m_columns; + m_subColumn = subCol; + return *this; } -string_view TableLayout::getTitle() const +TableLayout::Column & TableLayout::Column::addSubColumns( string const & subColName ) { - return m_tableTitle; + TableLayout::CellLayout cell{CellType::Header, subColName, TableLayout::Alignment::center}; + TableLayout::Column col{cell}; + this->m_subColumn.push_back( col ); + return *this; } +TableLayout::Column & TableLayout::Column::setHeaderAlignment( Alignment headerAlignment ) +{ + m_alignment.headerAlignment = headerAlignment; + m_header.m_alignment = headerAlignment; + return *this; +} -integer const & TableLayout::getBorderMargin() const +TableLayout::Column & TableLayout::Column::setValuesAlignment( Alignment valueAlignment ) { - return m_borderMargin; + m_alignment.valueAlignment = valueAlignment; + return *this; } -integer const & TableLayout::getColumnMargin() const +TableLayout::DeepFirstIterator & TableLayout::DeepFirstIterator::operator++() { - return m_columnMargin; + if( m_currentColumn->getNextCell() != nullptr ) + { + m_currentColumn = m_currentColumn->getNextCell(); + while( m_currentColumn->hasChild() ) + { + m_currentLayer++; + m_currentColumn = &m_currentColumn->m_subColumn[0]; + } + } + else + { + bool const hasParent = (m_currentColumn->getParent() != nullptr); + m_currentLayer -= size_t( hasParent ); + m_currentColumn = hasParent ? m_currentColumn->getParent() : nullptr; + } + return *this; } -integer const & TableLayout::getMarginTitle() const +TableLayout::DeepFirstIterator TableLayout::DeepFirstIterator::operator++( int ) { - return m_titleMargin; + TableLayout::DeepFirstIterator temp = *this; + ++(*this); + return temp; } +TableLayout::DeepFirstIterator TableLayout::beginDeepFirst() +{ + TableLayout::Column * startColumn = &(*m_tableColumnsData.begin()); + size_t idxLayer = 0; + if( startColumn->hasChild() ) + { + while( startColumn->hasChild() ) + { + idxLayer++; + startColumn = &startColumn->m_subColumn[0]; + } + } + return DeepFirstIterator( startColumn, idxLayer ); +} + +bool TableLayout::DeepFirstIterator::isLastColumn() +{ + if( m_currentColumn == nullptr ) + return true; + TableLayout::Column * tempColumn = m_currentColumn; + while( tempColumn->getParent() ) + { + tempColumn = tempColumn->getParent(); + } + return tempColumn->getNextCell() == nullptr; +} + + } diff --git a/src/coreComponents/common/format/table/TableLayout.hpp b/src/coreComponents/common/format/table/TableLayout.hpp index 4f24fa5559c..ee8f6a02323 100644 --- a/src/coreComponents/common/format/table/TableLayout.hpp +++ b/src/coreComponents/common/format/table/TableLayout.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -21,6 +21,10 @@ #define GEOS_COMMON_FORMAT_TABLE_TABLELAYOUT_HPP #include "common/DataTypes.hpp" +#include "TableTypes.hpp" +#include +#include "common/logger/Logger.hpp" + namespace geos { @@ -51,106 +55,510 @@ class TableLayout enum Section { header, values }; /** - * @brief Structure to set up each colum parameters. + * @brief Structure to set up values m_alignment for each colum. */ - struct ColumnParam + struct ColumnAlignement { - /// Name for a column - string columnName; - /// Alignment for a column. By default aligned to the right side - Alignment alignment = Alignment::right; - /// A boolean to display a colummn - bool enabled = true; - /// Vector containing substring column name delimited by "\n" - std::vector< string > splitColumnNameLines; - - /** - * @brief Construct a ColumnParam object with the specified name and alignment. - * @param name The name of the column - * @param align The alignment of the column - */ - ColumnParam( std::string const & name, Alignment align ) - : columnName( name ), alignment( align ) - {} + /// Alignment for column name. By default aligned to center + Alignment headerAlignment = Alignment::center; + /// Alignment for column values. By default aligned to right side + Alignment valueAlignment = Alignment::right; + }; + +/** + * @struct CellLayout + * @brief Structure grouping the cell information to display it in a table (content, type, alignment, ...). + */ + struct CellLayout + { + /// vector containing each cell content, separated by lines. + std::vector< string > m_lines; + /// The type of the cell (Header,Value, Merge, ...). + CellType m_cellType; + /// The alignment of the cell (left, center, right). + Alignment m_alignment; + /// Maximum length of the data in the cell. + size_t m_cellWidth; /** - * @brief Construct a ColumnParam object with the specified name, alignment, and display flag. - * @param name The name of the column - * @param align The alignment of the column - * @param display Flag indicating whether the column is enabled + * @brief Constructor to initialize a Cell with a default settings. */ - ColumnParam( std::string const & name, Alignment align, bool display ) - : columnName( name ), alignment( align ), enabled( display ) - {} + CellLayout(); + + /** + * @brief Constructor to initialize a cell given celltype, value and alignment. + * @param cellType The type of the cell. + * @param value The value to be assigned to the cell. + * @param alignment The alignment of the cell (left, right, or center). + */ + CellLayout( CellType cellType, string const & value, TableLayout::Alignment alignment ); }; /** - * @brief Struct for a column. + * @class Column + * @brief Class representing a column in a table layout. */ - struct Column + class Column { - /// Structure who contains parameters for a column - ColumnParam m_parameter; - /// A vector containing all column values - std::vector< string > m_columnValues; - /// The largest string in the column - string m_maxStringSize; +public: + /// The header cell layout. + CellLayout m_header; + /// A vector containing all sub-columns in the column. + std::vector< Column > m_subColumn; + /// struct containing m_alignment for the column (header and values) + ColumnAlignement m_alignment; + + /** + * @brief Default constructor. + * Initializes a column with default values. + */ + Column(); + + /** + * @brief Constructor to initialize a column with a specific `CellLayout`. + * @param cellLayout The `CellLayout` object to initialize the column. + * + */ + Column( TableLayout::CellLayout cellLayout ); + + /** + * @brief Get the parent column. + * @return Pointer to the parent column, or `nullptr` if no parent is set. + */ + Column * getParent() + { return m_parent; } + + /** + * @brief Set the parent column. + * @param parent Pointer to the parent column to set. + */ + void setParent( Column * parent ) + { m_parent = parent; } + + /** + * @brief GGet the next column in the layout. + * @return Pointer to the next column or `nullptr` if no next column exists. + */ + Column * getNextCell() + { return m_next; } + + /** + * @brief Set the next column in the layout. + * @param nextCell The next column in the table layout. + */ + void setNextCell( Column * nextCell ) + { m_next = nextCell; } + + /** + * @brief Sets the name of the column. + * @param name The name to set for the column. + * @return The current column object. + */ + Column & setName( string_view name ); + + /** + * @brief Set the column visibility. + * @param celltype Cell type to apply to hide the colmun + * @return The current column . + */ + Column & setVisibility( CellType celltype ); + + /** + * @brief Adds multiple sub-columns to the column. + * @param subCol A list of sub-column names to add. + * @return The current column object + */ + TableLayout::Column & addSubColumns( std::initializer_list< TableLayout::Column > subCol ); + + /** + * @brief Adds multiple sub-columns to the column. + * @param subColName A list of sub-column names to add. + * @return The current column object + */ + TableLayout::Column & addSubColumns( std::initializer_list< string > subColName ); + + /** + * @brief Adds a single sub-column to the column. + * @param subColName The name of the sub-column to add. + * @return The current column object. + */ + TableLayout::Column & addSubColumns( string const & subColName ); + + /** + * @brief Sets the header alignment for the column. + * @param headerAlignment The alignment to set for the column header (left, right, or center). + * @return The current column object + */ + TableLayout::Column & setHeaderAlignment( Alignment headerAlignment ); + + /** + * @brief Sets the values alignment for the column. + * @param valueAlignment The alignment to set for the column values (left, right, or center). + * @return The current column object + */ + TableLayout::Column & setValuesAlignment( Alignment valueAlignment ); + + /** + * @return number of times we will divide the current cell + */ + size_t getNumberCellMerge() + { return m_headerMergeCount; } + + /** + * @brief Increment number of times we will divide the current cell + * @param value number of division to add + */ + void incrementMergeHeaderCount( size_t value ) + { m_headerMergeCount+= value;} + + /** + * @brief Decremente number of times we will divide the current cell + */ + void decrementMergeHeaderCount() + { m_headerMergeCount--; } + + /** + * @brief Checks if the column has any child columns. + * @return bool True if the column has child columns, otherwise false. + */ + bool hasChild() const + { return !this->m_subColumn.empty(); } + + /** + * @brief Checks if the column has a parent column. + * @return bool True if the column has a parent, otherwise false. + */ + bool hasParent() const + { return this->m_parent != nullptr; } + +private: + /// Pointer to the parent cell (if any). + Column * m_parent; + /// Pointer to the next cell (if any). + Column * m_next; + /// The width of the cell (e.g., for cell containing subColumns). + size_t m_headerMergeCount = 0; }; + /** + * @brief Iterator to loop over all columns, starting by the deepest sub columns, + * then to their parents, then to their siblings. + */ + class DeepFirstIterator + { +public: + ///alias for column + using ColumnType = Column; + + /** + * @brief Construct a new Leaf Iterator object + * @param columnPtr The first deepest column of vector + * @param idxLayer the layer associated with the column + */ + DeepFirstIterator( ColumnType * columnPtr, size_t idxLayer ): + m_currentColumn( columnPtr ), m_currentLayer( idxLayer ) + {} + + /** + * @brief Copy assignment operator + * @param[in] columnPtr Coulmn to copy + * @return Leaf iterator + */ + DeepFirstIterator & operator=( Column * columnPtr ) + { + this->m_currentColumn= columnPtr; + return *this; + } + + /** + * @brief Prefix ++ overload + * @return Leaf iterator + */ + DeepFirstIterator & operator++(); + + /** + * @brief Postfix ++ overload + * @return Leaf iterator + */ + DeepFirstIterator operator++( int ); + + /** + * @brief Dereference operator. + * @return Reference to the current Column object pointed to by the iterator. + */ + ColumnType & operator*() + { return *m_currentColumn; } + + /** + * @brief Arrow operator. + * @return Pointer to the current Column object. + */ + ColumnType * operator->() + { return m_currentColumn; } + + /** + * @brief Equality comparison operator. + * @param a The first iterator. + * @param b The second iterator. + * @return True if both iterators point to the same column; false otherwise. + */ + friend bool operator== ( DeepFirstIterator const & a, DeepFirstIterator const & b ) + { return a.m_currentColumn == b.m_currentColumn; }; + /** + * @brief Inequality comparison operator. + * @param a The first iterator. + * @param b The second iterator. + * @return True if the iterators point to different columns; false otherwise. + */ + friend bool operator!= ( DeepFirstIterator const & a, DeepFirstIterator const & b ) + { return a.m_currentColumn != b.m_currentColumn; }; + + /** + * @brief Gets the current layer (depth) of the iterator. + * @return The current layer (depth) of the iterator. + */ + size_t getCurrentLayer() const + { return m_currentLayer; } + + /** + * @brief Check if the current cell belong the last column + * @return true + * @return false + */ + bool isLastColumn(); + +private: + /// Pointer to the current column + ColumnType * m_currentColumn; + /// The current depth of the iterator + size_t m_currentLayer; + }; + + /** + * @return Return an itarator pointing on the first leaf of the first columns vector + * Example on 2 column with Column A : 2 layer and Column B : 3 layers + * A.A -> A-B -> A-C -> A -> B-A-A -> B-A-B -> B-A -> B-B-A -> B-B-B -> B-B -> B + */ + DeepFirstIterator beginDeepFirst(); + + /** + * @return Return a end itarator + * This iterator is initialized with a null pointer + * representing a position after the last valid element + */ + DeepFirstIterator endDeepFirst() + { + return DeepFirstIterator( nullptr, 0 ); + } + + /// Alias for an initializer list of variants that can contain either a string or a layout column. + using TableLayoutArgs = std::initializer_list< std::variant< string_view, TableLayout::Column > >; + TableLayout() = default; /** - * @brief Construct a new Table object, all values in the table are centered by default - * @param columnNames The names of the columns - * @param title The table name + * @brief Construct a new Table Layout object + * @param title The table title + * @param columns A vector containing all column initialized + */ + TableLayout( string_view title, + std::vector< TableLayout::Column > const & columns ) + { + setMargin( MarginValue::medium ); + setTitle( title ); + for( auto const & column :columns ) + { + addToColumns( column ); + } + } + + /** + * @brief Construct a new Table Layout object + * @param title The table title + * @param args An initializer_list containing string / column + */ + TableLayout( string_view title, + TableLayoutArgs args ) + { + setMargin( MarginValue::medium ); + setTitle( title ); + processArguments( args ); + } + + /** + * @brief Construct a new Table Layout object + * @param args An initializer_list containing string / column */ - TableLayout( std::vector< string > const & columnNames, string const & title = "" ); + + TableLayout( TableLayoutArgs args ) + { + setMargin( MarginValue::medium ); + processArguments( args ); + } /** - * @brief Construct a new Table object by specifying value alignment and optionally their displays based to log levels - * level - * @param columnParameters List of structures to set up each colum parameters. - * @param title The table name + * @brief Construct a new Table Layout object + * @param title The table title + * @param args An initializer_list containing string / column */ - TableLayout( std::vector< ColumnParam > const & columnParameters, string const & title = "" ); + TableLayout( string_view title, + std::vector< string > const & args ) + { + setMargin( MarginValue::medium ); + setTitle( title ); + addToColumns( args ); + } + + /** + * @brief Get the max depth of a column + * @return The max column depth + */ + size_t getMaxDepth() const; /** * @return The columns vector */ - std::vector< Column > const & getColumns() const; + std::vector< Column > & getColumns() + { return m_tableColumnsData; } /** - * @return The table name + * @return The columns vector */ - string_view getTitle() const; + std::vector< Column > const & getColumns() const + { return m_tableColumnsData; } /** - * @return The border margin, number of spaces at both left and right table sides + * @return The table name */ - integer const & getBorderMargin() const; + string_view getTitle() const + { return m_tableTitle; } /** - * @return The column margin, numbers of spaces separating both left and right side from each column content + * @param title The table title + * @return The tableLayout reference */ - integer const & getColumnMargin() const; + TableLayout & setTitle( string_view title ); /** - * @return The margin title + * @brief Remove the return line at the end & begenning of the table + * @param value Value to desactivate or not wrapLine at the end + * @return The tableLayout reference */ - integer const & getMarginTitle() const; + TableLayout & enableLineBreak( bool value ); /** * @brief Set the minimal margin width between cell content and borders. * @param marginValue The margin value + * @return The tableLayout reference */ - void setMargin( MarginValue marginValue ); + TableLayout & setMargin( MarginValue marginValue ); + + /** + * @return check if the line break at the end & beginning is activated + */ + bool isLineBreakEnabled() const; + + + /** + * @return The border margin, + * number of spaces at both left and right table sides plus vertical character + */ + integer const & getBorderMargin() const + { return m_borderMargin; } + + /** + * @return The column margin, + * numbers of spaces separating both left and right side from a vertical line + */ + integer const & getColumnMargin() const + { return m_columnMargin; } + + /** + * @return The table margin value + */ + integer const & getMarginValue() const + { return m_marginValue; } + + /** + * @return The margin title + */ + integer const & getMarginTitle() const + { return m_titleMargin; } + +/** + * @brief Get the Nb Rows object + * @return std::vector< integer >& + */ + std::vector< size_t > & getSublineInHeaderCounts() + { return m_sublineHeaderCounts; } + +/** + * @brief Get the Nb Rows object + * @return std::vector< integer >& + */ + std::vector< size_t > & getNbSubDataLines() + { return m_sublineDataCounts; } + + /** + * @brief Create and add a column to the columns vector given a string + * @param m_header The column name + */ + void addToColumns( string_view m_header ); private: - std::vector< Column > m_columns; + /** + * @brief Add a column to the table given an initializer_list of string & Column + * @param args An initializer_list containing string / column + */ + void processArguments( TableLayoutArgs args ) + { + for( auto const & arg : args ) + { + std::visit( [this]( auto const & value ) { + addToColumns( value ); + }, arg ); + } + } + + /** + * @brief + * + * @tparam Ts The remaining arguments + * @param args The remaining arguments to be processed + */ + template< typename ... Ts > + void processArguments( Ts &... args ) + { + addToColumns( args ... ); + } + + /** + * @brief Create and add columns to the columns vector given a string vector + * @param columnNames The columns name + */ + void addToColumns( std::vector< string > const & columnNames ); + +/** + * + * @brief Create and add a column to the columns vector given a Column + * @param column Vector containing addition information on the column + */ + void addToColumns( TableLayout::Column const & column ); + + /// Contains the columns layout + std::vector< Column > m_tableColumnsData; + /// Contains the subdivision (line) counts for each line in header. + std::vector< size_t > m_sublineHeaderCounts; + /// Contains the subdivision (line) counts for each line in data. + std::vector< size_t > m_sublineDataCounts; + bool m_wrapLine = true; + string m_tableTitle; + integer m_borderMargin; integer m_columnMargin; + integer m_marginValue; integer m_titleMargin = 2; }; diff --git a/src/coreComponents/common/format/table/TableTypes.hpp b/src/coreComponents/common/format/table/TableTypes.hpp new file mode 100644 index 00000000000..56c823ffd28 --- /dev/null +++ b/src/coreComponents/common/format/table/TableTypes.hpp @@ -0,0 +1,43 @@ + + +/* + * ------------------------------------------------------------------------------------------------------------ + * SPDX-License-Identifier: LGPL-2.1-only + * + * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC + * Copyright (c) 2018-2024 TotalEnergies + * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University + * Copyright (c) 2023-2024 Chevron + * Copyright (c) 2019- GEOS/GEOSX Contributors + * All rights reserved + * + * See top level LICENSE, COPYRIGHT, CONTRIBUTORS, NOTICE, and ACKNOWLEDGEMENTS files for details. + * ------------------------------------------------------------------------------------------------------------ + */ + +/** + * @file TableData.hpp + */ + + +#ifndef GEOS_COMMON_FORMAT_TABLETYPES_HPP +#define GEOS_COMMON_FORMAT_TABLETYPES_HPP + +namespace geos +{ + +/** + * @brief The different type a cell can handle + */ +enum class CellType : integer +{ + Header, + Value, + Separator, + MergeNext, + Hidden +}; + +} + +#endif /* GEOS_COMMON_FORMAT_TABLETYPES_HPP */ diff --git a/src/coreComponents/common/format/table/unitTests/testTable.cpp b/src/coreComponents/common/format/table/unitTests/testTable.cpp index 3663b5eae22..8fd6a5fca47 100644 --- a/src/coreComponents/common/format/table/unitTests/testTable.cpp +++ b/src/coreComponents/common/format/table/unitTests/testTable.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -24,48 +24,77 @@ using namespace geos; +TEST( testTable, testCSVTable ) +{ + TableLayout const tableLayout( { + TableLayout::Column() + .setName( "Cras egestas" ), + TableLayout::Column() + .setName( "CoordX" ), + TableLayout::Column() + .setName( "C" ), + TableLayout::Column() + .setName( "CoordZ" ), + TableLayout::Column() + .setName( "Prev\nelement" ), + TableLayout::Column() + .setName( "Next\nelement" )} ); + + TableData tableData; + tableData.addRow( "value1", "gaz", "3.0", "3.0129877", "2", "1" ); + tableData.addRow( "val1", "val2", "[3.045,42.02,89.25]", 3.0, 10.0f, 3 ); + + TableCSVFormatter const csvOutput( tableLayout ); + + EXPECT_EQ( csvOutput.toString( tableData ), + "Cras egestas,CoordX,C,CoordZ,Prevelement,Nextelement\n" + "value1,gaz,3.0,3.0129877,2,1\n" + "val1,val2,[3.045,42.02,89.25],3,10,3\n" + ); +} + TEST( testTable, tableEmptyRow ) { //table with empty row - TableLayout const tableLayout( {"Well\nelement no.\nPV weighted\nbar", + TableLayout const tableLayout( "InternalWellGenerator well_injector1", + {"Well\nelement no.\nPV weighted\nbar", "CordX", "CoordZ", "Prev\nelement", - "Next\nelement"}, - "InternalWellGenerator well_injector1" - ); + "Next\nelement"} ); TableData tableData; tableData.addRow( "value1", "[30.21543]", "3.0", 54, 0 ); - tableData.addRow( "", "", "", "", "" ); + tableData.addRow( "", " ", "", "", "" ); tableData.addRow( "Duis fringilla, ligula sed porta fringilla, ligula wisi commodo felis,ut adipiscing felis dui in enim. Suspendisse malesuada ultrices ante", "[30.21543]", "30.45465142", 787442, 10 ); - TableTextFormatter const tableText( tableLayout ); + tableText.toString( tableData ); EXPECT_EQ( tableText.toString( tableData ), "\n-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------\n" "| InternalWellGenerator well_injector1 |\n" "-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------\n" - "| Well | CordX | CoordZ | Prev | Next |\n" - "| element no. | | | element | element |\n" - "| PV weighted | | | | |\n" - "| bar | | | | |\n" + "| Well | CordX | CoordZ | Prev | Next |\n" + "| element no. | | | element | element |\n" + "| PV weighted | | | | |\n" + "| bar | | | | |\n" "-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------\n" "| value1 | [30.21543] | 3.0 | 54 | 0 |\n" "| | | | | |\n" "| Duis fringilla, ligula sed porta fringilla, ligula wisi commodo felis,ut adipiscing felis dui in enim. Suspendisse malesuada ultrices ante | [30.21543] | 30.45465142 | 787442 | 10 |\n" - "-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------\n\n" + "-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------\n" ); } TEST( testTable, tableClassic ) { - TableLayout const tableLayout( {"Duis fringilla, ligula sed porta fringilla,\nligula wisi commodo felis,ut adipiscing felis dui in enim. Suspendisse malesuada ultrices ante", + TableLayout const tableLayout( "InternalWellGenerator well_injector1", + {"Duis fringilla, ligula sed porta fringilla,\nligula wisi commodo felis,ut adipiscing felis dui in enim. Suspendisse malesuada ultrices ante", "CordX", "CoordZ", "Prev\nelement", - "Next\nelement"}, "InternalWellGenerator well_injector1" ); + "Next\nelement"} ); TableData tableData; tableData.addRow( "value1", "[30.21543]", "3.0", 54, 0 ); @@ -77,77 +106,100 @@ TEST( testTable, tableClassic ) "\n-----------------------------------------------------------------------------------------------------------------------------------------------------------\n" "| InternalWellGenerator well_injector1 |\n" "-----------------------------------------------------------------------------------------------------------------------------------------------------------\n" - "| Duis fringilla, ligula sed porta fringilla, | CordX | CoordZ | Prev | Next |\n" + "| Duis fringilla, ligula sed porta fringilla, | CordX | CoordZ | Prev | Next |\n" "| ligula wisi commodo felis,ut adipiscing felis dui in enim. Suspendisse malesuada ultrices ante | | | element | element |\n" "-----------------------------------------------------------------------------------------------------------------------------------------------------------\n" "| value1 | [30.21543] | 3.0 | 54 | 0 |\n" "| | | | | |\n" "| value23 | [30.21543] | 30.45465142 | 787442 | 10 |\n" - "-----------------------------------------------------------------------------------------------------------------------------------------------------------\n\n" + "-----------------------------------------------------------------------------------------------------------------------------------------------------------\n" ); } TEST( testTable, tableColumnParamClassic ) { TableLayout const tableLayout( { - TableLayout::ColumnParam{{"Cras egestas"}, TableLayout::Alignment::center}, - TableLayout::ColumnParam{{"CoordX"}, TableLayout::Alignment::left}, - TableLayout::ColumnParam{{"C"}, TableLayout::Alignment::left}, - TableLayout::ColumnParam{{"CoordZ"}, TableLayout::Alignment::left}, - TableLayout::ColumnParam{{"Prev\nelement"}, TableLayout::Alignment::right}, - TableLayout::ColumnParam{{"Next\nelement"}, TableLayout::Alignment::right} - }, "InternalWellGenerator well_injector1" ); + TableLayout::Column() + .setName( "Cras egestas" ), + TableLayout::Column() + .setName( "CoordX" ), + TableLayout::Column() + .setName( "C" ), + TableLayout::Column() + .setName( "CoordZ" ), + TableLayout::Column() + .setName( "Prev\nelement" ), + TableLayout::Column() + .setName( "Next\nelement" )} ); TableData tableData; - tableData.addRow( "value1", " ", "3.0", 3.0129877, 2.0f, 1 ); + tableData.addRow( "value1", "gaz\nwater", "3.0\n42.0", "3.0129877\n0.0123456", "2\n3", "1\n4" ); tableData.addRow( "val1", "v", "[3.045,42.02,89.25]", 3.0, 10.0f, 3 ); TableTextFormatter const tableText( tableLayout ); EXPECT_EQ( tableText.toString( tableData ), "\n-------------------------------------------------------------------------------------------\n" - "| InternalWellGenerator well_injector1 |\n" - "-------------------------------------------------------------------------------------------\n" - "| Cras egestas | CoordX | C | CoordZ | Prev | Next |\n" + "| Cras egestas | CoordX | C | CoordZ | Prev | Next |\n" "| | | | | element | element |\n" "-------------------------------------------------------------------------------------------\n" - "| value1 | | 3.0 | 3.0129877 | 2 | 1 |\n" - "| val1 | v | [3.045,42.02,89.25] | 3 | 10 | 3 |\n" - "-------------------------------------------------------------------------------------------\n\n" + "| value1 | gaz | 3.0 | 3.0129877 | 2 | 1 |\n" + "| | water | 42.0 | 0.0123456 | 3 | 4 |\n" + "| val1 | v | [3.045,42.02,89.25] | 3 | 10 | 3 |\n" + "-------------------------------------------------------------------------------------------\n" ); } TEST( testTable, tableHiddenColumn ) { - TableLayout const tableLayout( { - TableLayout::ColumnParam{{"Cras egestas"}, TableLayout::Alignment::center}, - TableLayout::ColumnParam{{"CoordX"}, TableLayout::Alignment::right}, - TableLayout::ColumnParam{{"C"}, TableLayout::Alignment::center}, - TableLayout::ColumnParam{{"CoordZ"}, TableLayout::Alignment::left}, - TableLayout::ColumnParam{{"Prev\nelement"}, TableLayout::Alignment::left, false}, - TableLayout::ColumnParam{{"Next\nelement"}, TableLayout::Alignment::center, false}, - }, "Cras egestas ipsum a nisl. Vivamus variu dolor utsisicdis parturient montes, nascetur ridiculus mus. Duis" ); + string const title = "Cras egestas ipsum a nisl. Vivamus variu dolor utsisicdis parturient montes, nascetur ridiculus mus. Duis"; + TableLayout tableLayout( title, + { + TableLayout::Column() + .setName( "Cras egestas" ) + .setValuesAlignment( TableLayout::Alignment::left ) + .setHeaderAlignment( TableLayout::Alignment::center ), + TableLayout::Column() + .setName( "CoordX" ) + .setValuesAlignment( TableLayout::Alignment::left ) + .setHeaderAlignment( TableLayout::Alignment::right ) + .setVisibility( CellType::Hidden ), + TableLayout::Column() + .setName( "C" ) + .setValuesAlignment( TableLayout::Alignment::left ) + .setHeaderAlignment( TableLayout::Alignment::center ), + TableLayout::Column() + .setName( "CoordZ" ) + .setValuesAlignment( TableLayout::Alignment::left ) + .setHeaderAlignment( TableLayout::Alignment::left ), + TableLayout::Column() + .setName( "Prev\nelement" ) + .setVisibility( CellType::Hidden ), + TableLayout::Column() + .setName( "Next\nelement" ) + .setVisibility( CellType::Hidden ) + } ); TableData tableData; - tableData.addRow( "value1", " ", "3.0", 3.0129877, 2.0f, 1 ); + tableData.addRow( "value1", "", "3.0", 3.0129877, 2.0f, 1 ); tableData.addRow( "val1", "v", "[3.045,42.02,89.25]", 3.0, 10.0f, 3 ); TableTextFormatter const tableText( tableLayout ); EXPECT_EQ( tableText.toString( tableData ), - "\n----------------------------------------------------------------------------------------------------------------\n" - "| Cras egestas ipsum a nisl. Vivamus variu dolor utsisicdis parturient montes, nascetur ridiculus mus. Duis |\n" - "----------------------------------------------------------------------------------------------------------------\n" - "| Cras egestas | CoordX | C | CoordZ |\n" - "----------------------------------------------------------------------------------------------------------------\n" - "| value1 | | 3.0 | 3.0129877 |\n" - "| val1 | v | [3.045,42.02,89.25] | 3 |\n" - "----------------------------------------------------------------------------------------------------------------\n\n" ); + "\n---------------------------------------------------------------------------------------------------------------\n" + "| Cras egestas ipsum a nisl. Vivamus variu dolor utsisicdis parturient montes, nascetur ridiculus mus. Duis |\n" + "---------------------------------------------------------------------------------------------------------------\n" + "| Cras egestas | C | CoordZ |\n" + "| | | |\n" + "---------------------------------------------------------------------------------------------------------------\n" + "| value1 | 3.0 | 3.0129877 |\n" + "| val1 | [3.045,42.02,89.25] | 3 |\n" + "---------------------------------------------------------------------------------------------------------------\n" ); } TEST( testTable, tableUniqueColumn ) { - TableLayout const tableLayout( { - TableLayout::ColumnParam{{"Cras egestas"}, TableLayout::Alignment::center}, - }, "Cras egestas ipsu a nisl. Vivamus variu dolor utsisicdis parturient montes, nascetur ridiculus mus. Duis" ); + string const title = "Cras egestas ipsum a nisl. Vivamus variu dolor utsisicdis parturient montes, nascetur ridiculus mus. Duis"; + TableLayout const tableLayout( title, {"Cras egestas"} ); TableData tableData; tableData.addRow( "value1" ); @@ -156,26 +208,34 @@ TEST( testTable, tableUniqueColumn ) TableTextFormatter const tableText( tableLayout ); EXPECT_EQ( tableText.toString( tableData ), "\n---------------------------------------------------------------------------------------------------------------\n" - "| Cras egestas ipsu a nisl. Vivamus variu dolor utsisicdis parturient montes, nascetur ridiculus mus. Duis |\n" + "| Cras egestas ipsum a nisl. Vivamus variu dolor utsisicdis parturient montes, nascetur ridiculus mus. Duis |\n" "---------------------------------------------------------------------------------------------------------------\n" "| Cras egestas |\n" "---------------------------------------------------------------------------------------------------------------\n" - "| value1 |\n" - "| val1 |\n" - "---------------------------------------------------------------------------------------------------------------\n\n" ); + "| value1 |\n" + "| val1 |\n" + "---------------------------------------------------------------------------------------------------------------\n" ); } TEST( testTable, tableEmptyTitle ) { TableLayout const tableLayout( { - TableLayout::ColumnParam{{"Cras egestas"}, TableLayout::Alignment::center}, - TableLayout::ColumnParam{{"CoordX"}, TableLayout::Alignment::right}, - TableLayout::ColumnParam{{"C"}, TableLayout::Alignment::center}, - TableLayout::ColumnParam{{"CoordZ"}, TableLayout::Alignment::left}, - TableLayout::ColumnParam{{"Prev\nelement"}, TableLayout::Alignment::left}, - TableLayout::ColumnParam{{"Next\nelement"}, TableLayout::Alignment::center}, - } - ); + TableLayout::Column() + .setName( "Cras egestas" ) + .setHeaderAlignment( TableLayout::Alignment::center ), + TableLayout::Column() + .setName( "CoordX" ) + .setHeaderAlignment( TableLayout::Alignment::right ), + "C", + TableLayout::Column() + .setName( "CoordZ" ) + .setHeaderAlignment( TableLayout::Alignment::left ), + TableLayout::Column() + .setName( "Prev\nelement" ) + .setHeaderAlignment( TableLayout::Alignment::left ), + TableLayout::Column() + .setName( "Next\nelement" ) + .setHeaderAlignment( TableLayout::Alignment::center )} ); TableData tableData; tableData.addRow( "value1", " ", "3.0", 3.0129877, 2.0f, 1 ); @@ -187,9 +247,9 @@ TEST( testTable, tableEmptyTitle ) "| Cras egestas | CoordX | C | CoordZ | Prev | Next |\n" "| | | | | element | element |\n" "-------------------------------------------------------------------------------------------\n" - "| value1 | | 3.0 | 3.0129877 | 2 | 1 |\n" - "| val1 | v | [3.045,42.02,89.25] | 3 | 10 | 3 |\n" - "-------------------------------------------------------------------------------------------\n\n" + "| value1 | | 3.0 | 3.0129877 | 2 | 1 |\n" + "| val1 | v | [3.045,42.02,89.25] | 3 | 10 | 3 |\n" + "-------------------------------------------------------------------------------------------\n" ); } @@ -215,115 +275,222 @@ TEST( testTable, table2DTable ) columnFmt ); //format - TableLayout const tableLayout( tableconverted.headerNames ); + TableLayout const tableLayout( "", tableconverted.headerNames ); //log - TableTextFormatter const tableLog( tableLayout ); - EXPECT_EQ( tableLog.toString( tableconverted.tableData ), + TableTextFormatter const tableText( tableLayout ); + EXPECT_EQ( tableText.toString( tableconverted.tableData ), "\n---------------------------------------------------------------------\n" - "| Viscosity kg*s | Pression = 10000 | Pression = 15000 |\n" + "| Viscosity kg*s | Pression = 10000 | Pression = 15000 |\n" "---------------------------------------------------------------------\n" "| Temperature = 300 | 0.03 | 0.02 |\n" "| Temperature = 350 | 0.035 | 0.023333333333333334 |\n" "| Temperature = 400 | 0.04 | 0.02666666666666667 |\n" - "---------------------------------------------------------------------\n\n" + "---------------------------------------------------------------------\n" + ); +} + +TEST( testTable, layoutTable ) +{ + string filename = "fluid1_phaseModel1_PhillipsBrineDensity_table"; + string log = GEOS_FMT( "The {} PVT table exceeding 500 rows.\nTo visualize the tables, go to the generated csv", filename ); + TableLayout const tableLayoutInfos( filename, + { + TableLayout::Column() + .setName( log ) + .setHeaderAlignment( TableLayout::Alignment::left )} ); + TableTextFormatter const tableText( tableLayoutInfos ); + EXPECT_EQ( tableText.toString(), + "\n-------------------------------------------------------------------------------------\n" + "| fluid1_phaseModel1_PhillipsBrineDensity_table |\n" + "-------------------------------------------------------------------------------------\n" + "| The fluid1_phaseModel1_PhillipsBrineDensity_table PVT table exceeding 500 rows. |\n" + "| To visualize the tables, go to the generated csv |\n" + "-------------------------------------------------------------------------------------\n\n" ); } +TEST( testTable, subColumns ) +{ + { + TableLayout const tableLayout( { + " ", + "Column1", + TableLayout::Column() + .setName( "Nodes" ) + .addSubColumns( {"LocalesNodes", "GhostNodes", "ActiveNodes" } ), + "Column3", + TableLayout::Column() + .setName( "Column4" ) + .addSubColumns( { TableLayout::Column() + .setName( "Locales" ).addSubColumns( {"SubLocales1", "SubLocales2"} ), + TableLayout::Column() + .setName( "Ghost" ).addSubColumns( {"SubGhost1", "SubGhost2"} ), + TableLayout::Column() + .setName( "Active" ).addSubColumns( {"SubActive1", "SubActive2"} ) + } ), + "Column5" + } ); + + TableData tableData; + tableData.addRow( "3547", "1289", "7534", "6901", "4832", "9281", "1154", "5360", "2739", "9004", "1497", "6", "7" ); + tableData.addRow( "5142", "8290", "364", "2310", "7011", "1427", "2574", "9043", "5305", "608", "980", "6", "7" ); + tableData.addRow( "3174", "8259", "6092", "1783", "7435", "2891", "914", "178", "4635", "5839", "8124", "6", "7" ); + tableData.addRow( "6193", "7481", "1305", "9037", "4306.1", "6157", "1849", "2753", "910", "2369", "9992", "6", "7" ); + tableData.addRow( "8012", "5729.2112", "6975", "3201.213", "9448", "1820", "4125", "182.12", "7453", "5069", "3912", "6", "7" ); + tableData.addRow( "4381", "6728", "5204", "8663", "2035", "7804", "6310", "9621", "4158", "789", "2537", "6", "7" ); + TableTextFormatter tableText( tableLayout ); + EXPECT_EQ( tableText.toString( + tableData ), + "\n------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------\n" + "| | Column1 | Nodes | Column3 | Column4 | Column5 |\n" + "------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------\n" + "| | | LocalesNodes | GhostNodes | ActiveNodes | | Locales | Ghost | Active | |\n" + "------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------\n" + "| | | | | | | SubLocales1 | SubLocales2 | SubGhost1 | SubGhost2 | SubActive1 | SubActive2 | |\n" + "------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------\n" + "| 3547 | 1289 | 7534 | 6901 | 4832 | 9281 | 1154 | 5360 | 2739 | 9004 | 1497 | 6 | 7 |\n" + "| 5142 | 8290 | 364 | 2310 | 7011 | 1427 | 2574 | 9043 | 5305 | 608 | 980 | 6 | 7 |\n" + "| 3174 | 8259 | 6092 | 1783 | 7435 | 2891 | 914 | 178 | 4635 | 5839 | 8124 | 6 | 7 |\n" + "| 6193 | 7481 | 1305 | 9037 | 4306.1 | 6157 | 1849 | 2753 | 910 | 2369 | 9992 | 6 | 7 |\n" + "| 8012 | 5729.2112 | 6975 | 3201.213 | 9448 | 1820 | 4125 | 182.12 | 7453 | 5069 | 3912 | 6 | 7 |\n" + "| 4381 | 6728 | 5204 | 8663 | 2035 | 7804 | 6310 | 9621 | 4158 | 789 | 2537 | 6 | 7 |\n" + "------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------\n" + ); + } +} -TEST( testTable, table2DColumnMismatch ) +TEST( testTable, variadicTest ) { - //test 2D table column mismatch { - // collect - TableData2D tableData; - - tableData.addCell( 300, 10000, 0.03 ); - tableData.addCell( 300, 15000, 0.02 ); - tableData.addCell( 350, 10000, 0.035 ); - tableData.addCell( 350, 10000, 0.035 ); - tableData.addCell( 400, 10000, 0.04 ); - tableData.addCell( 400, 15000, 0.02666666666666667 ); - - //convert - string const rowFmt = GEOS_FMT( "{} = {{}}", "Temperature" ); - string const columnFmt = GEOS_FMT( "{} = {{}}", "Pression" ); - TableData2D::TableDataHolder tableConverted = tableData.buildTableData( "Viscosity kg*s", - rowFmt, - columnFmt ); - - //format - TableLayout const tableLayout( tableConverted.headerNames ); - - //log - TableTextFormatter const tableLog( tableLayout ); - EXPECT_EQ( tableLog.toString( tableConverted.tableData ), - "\n--------------------------------------------------------------------\n" - "| Remarks : some cells may be missing |\n" - "--------------------------------------------------------------------\n" - "| Viscosity kg*s | Pression = 10000 | Pression = 15000 |\n" - "--------------------------------------------------------------------\n" - "| Temperature = 300 | 0.03 | 0.02 |\n" - "| Temperature = 350 | 0.035 | |\n" - "| Temperature = 400 | 0.04 | 0.02666666666666667 |\n" - "--------------------------------------------------------------------\n\n" + TableLayout const layoutTest( "Cras egestas ipsum a nisl. Vivamus variu dolor utsisicdis parturient montes, nascetur ridiculus mus. Duis nascetur ridiculus mus", + { + "Rank", + TableLayout::Column() + .setName( "Nodes" ) + .addSubColumns( {"Locales", "Ghost" } ), + "Edge", + TableLayout::Column() + .setName( "Faces" ) + .addSubColumns( {"Locales", "Ghost" } ), + TableLayout::Column() + .setName( "Elems" ) + .addSubColumns( {"Locales", "Ghost"} ), + } ); + TableData tableData; + tableData.addRow( "min(local/total)", 1, 2, 3, 4, 5, 6, 7 ); + tableData.addRow( "min(local/total)", 1, 2, 3, 4, 5, 6, 7 ); + TableTextFormatter log( layoutTest ); + EXPECT_EQ( log.toString( tableData ), + "\n--------------------------------------------------------------------------------------------------------------------------------------\n" + "| Cras egestas ipsum a nisl. Vivamus variu dolor utsisicdis parturient montes, nascetur ridiculus mus. Duis nascetur ridiculus mus |\n" + "--------------------------------------------------------------------------------------------------------------------------------------\n" + "| Rank | Nodes | Edge | Faces | Elems |\n" + "--------------------------------------------------------------------------------------------------------------------------------------\n" + "| | Locales | Ghost | | Locales | Ghost | Locales | Ghost |\n" + "--------------------------------------------------------------------------------------------------------------------------------------\n" + "| min(local/total) | 1 | 2 | 3 | 4 | 5 | 6 | 7 |\n" + "| min(local/total) | 1 | 2 | 3 | 4 | 5 | 6 | 7 |\n" + "--------------------------------------------------------------------------------------------------------------------------------------\n" ); } } -TEST( testTable, layoutTable ) +TEST( testTable, testLineBreak ) { - string filename = "fluid1_phaseModel1_PhillipsBrineDensity_table"; + TableLayout tableLayout( {"Cras egestas", "CoordX", "C", "CoordZ", "Prev\nelement", "Next\nelement"} ); + tableLayout.setTitle( "title" ).setMargin( TableLayout::MarginValue::tiny ).enableLineBreak( false ); + + TableData tableData; + tableData.addRow( "1", "2", "3.0", 3.0129877, 2.0f, 1 ); + tableData.addRow( "1", "2", "3.0", 3.0129877, 2.0f, 1 ); - string log = GEOS_FMT( "The {} PVT table exceeding 500 rows.\nTo visualize the tables, go to the generated csv \n", filename ); - TableLayout const tableLayoutInfos( {TableLayout::ColumnParam{{log}, TableLayout::Alignment::left}}, filename ); + TableTextFormatter const tableText( tableLayout ); - TableTextFormatter const tableLog( tableLayoutInfos ); - EXPECT_EQ( tableLog.layoutToString(), - "\n-------------------------------------------------------------------------------------\n" - "| fluid1_phaseModel1_PhillipsBrineDensity_table |\n" - "-------------------------------------------------------------------------------------\n" - "| The fluid1_phaseModel1_PhillipsBrineDensity_table PVT table exceeding 500 rows. |\n" - "| To visualize the tables, go to the generated csv |\n" - "-------------------------------------------------------------------------------------\n" + EXPECT_EQ( tableText.toString( tableData ), + "---------------------------------------------------\n" + "| title |\n" + "---------------------------------------------------\n" + "|Cras egestas|CoordX| C | CoordZ | Prev | Next |\n" + "| | | | |element|element|\n" + "---------------------------------------------------\n" + "| 1| 2|3.0|3.0129877| 2| 1|\n" + "| 1| 2|3.0|3.0129877| 2| 1|\n" + "---------------------------------------------------" ); } -TEST( testTable, tableSetMargin ) +TEST( testTable, testCellMerging ) { - //////////// - //////// If setMargin used elsewhere make it public and remove comments for this test - //////////// - //test with tiny margin - // { - // TableLayout tableLayout( { - // TableLayout::ColumnParam{{"Colonne 1"}, TableLayout::Alignment::center}, - // TableLayout::ColumnParam{{"Colonne 2"}, TableLayout::Alignment::center}, - // TableLayout::ColumnParam{{"Colonne 3"}, TableLayout::Alignment::right}, - // TableLayout::ColumnParam{{"Colonne 4"}, TableLayout::Alignment::right}, - // TableLayout::ColumnParam{{"Prev\nelement"}, TableLayout::Alignment::right}, - // TableLayout::ColumnParam{{"Next\nelement"}, TableLayout::Alignment::right}, - // }, "InternalWellGenerator well_injector1" ); - - // //tableLayout.setMargin( TableLayout::MarginValue::tiny ); - - // TableData tableData; - // tableData.addRow( "value 1", "long value 1", "3.0034", 3.0129877, "" , 1 ); - // tableData.addRow( "value 1", "long value 2", "100.45", 4.0129877, 1 , 2 ); - - // TableTextFormatter const tableText( tableLayout ); - // EXPECT_EQ( tableText.toString( tableData ), -// "\n------------------------------------------------------------\n" -// "| InternalWellGenerator well_injector1 |\n" -// "------------------------------------------------------------\n" -// "|Colonne 1| Colonne 2 |Colonne 3|Colonne 4| Prev| Next|\n" -// "| | | | |element|element|\n" -// "------------------------------------------------------------\n" -// "| value 1 |long value 1| 3.0034|3.0129877| | 1|\n" -// "| value 1 |long value 2| 100.45|4.0129877| 1| 2|\n" -// "------------------------------------------------------------\n\n" -// ); -// } + TableLayout const tableLayout( { + TableLayout::Column() + .setName( "Cras egestas" ), + TableLayout::Column() + .setName( "CoordX" ), + "C", + TableLayout::Column() + .setName( "CoordZ" ), + TableLayout::Column() + .setName( "Prev\nelement" ), + TableLayout::Column() + .setName( "Next\nelement" )} ); + + TableData tableData; + tableData.addRow( "ProductA", 1234, 40, "ProductName", 5678, 60 ); + tableData.addRow( "ProductA", 54, 4564575, "long size value", 5454554512, 60 ); + tableData.addSeparator(); + tableData.addRow( "ProductA", 54, 4564575, "long size value", 5454554512, 60 ); + tableData.addRow( 3.14f, 2.718f, CellType::MergeNext, 1.618f, 0.577f, CellType::MergeNext ); + tableData.addRow( "P1\nP2\nP3", "2002\n2003\n2004", CellType::MergeNext, "1212121245452145454545", 4004, CellType::MergeNext ); + tableData.addRow( "Long product size", 54, 4564575, "long size value", 5454554512, 60 ); + tableData.addRow( "ProductAfdggfd", 5445, 4565, "PrName", 5454512, 64650 ); + tableData.addRow( 3.14f, 2.718f, CellType::MergeNext, 1.618f, 0.577f, CellType::MergeNext ); + tableData.addSeparator(); + tableData.addRow( "CellType::MergeNext", CellType::MergeNext, CellType::MergeNext, CellType::MergeNext, CellType::MergeNext, "Item2" ); + tableData.addSeparator(); + tableData.addRow( 1500, 2500, CellType::MergeNext, CellType::MergeNext, CellType::MergeNext, CellType::MergeNext ); + tableData.addSeparator(); + tableData.addRow( 1.23f, 4.56f, CellType::MergeNext, "764654665465465654654646", 0.12f, 40 ); + tableData.addRow( "Long product size", 54, 4564575, "long size value", 5454554512, 60 ); + tableData.addRow( "ProductA", 54, 4564575, "long size value", 5454554512, 60 ); + tableData.addSeparator(); + tableData.addRow( "P1", "2002", CellType::MergeNext, CellType::MergeNext, CellType::MergeNext, "121212465465465666656461245452145454545" ); + tableData.addSeparator(); + tableData.addRow( "Alpha", 1001, 8, "Beta\nwater", "2002\n1.0", CellType::MergeNext ); + + TableTextFormatter const tableText( tableLayout ); + std::cout << tableText.toString( tableData ) << std::endl; + EXPECT_EQ( tableText.toString( tableData ), + "\n-----------------------------------------------------------------------------------------------\n" + "| Cras egestas | CoordX | C | CoordZ | Prev | Next |\n" + "| | | | | element | element |\n" + "-----------------------------------------------------------------------------------------------\n" + "| ProductA | 1234 | 40 | ProductName | 5678 | 60 |\n" + "| ProductA | 54 | 4564575 | long size value | 5454554512 | 60 |\n" + "-----------------------------------------------------------------------------------------------\n" + "| ProductA | 54 | 4564575 | long size value | 5454554512 | 60 |\n" + "| 3.14 | 2.718 | 1.618 | 0.577 | |\n" + "| P1 | 2002 | 1212121245452145454545 | 4004 | |\n" + "| P2 | 2003 | | | |\n" + "| P3 | 2004 | | | |\n" + "| Long product size | 54 | 4564575 | long size value | 5454554512 | 60 |\n" + "| ProductAfdggfd | 5445 | 4565 | PrName | 5454512 | 64650 |\n" + "| 3.14 | 2.718 | 1.618 | 0.577 | |\n" + "-----------------------------------------------------------------------------------------------\n" + "| CellType::MergeNext | Item2 |\n" + "-----------------------------------------------------------------------------------------------\n" + "| 1500 | 2500 | |\n" + "-----------------------------------------------------------------------------------------------\n" + "| 1.23 | 4.56 | 764654665465465654654646 | 0.12 | 40 |\n" + "| Long product size | 54 | 4564575 | long size value | 5454554512 | 60 |\n" + "| ProductA | 54 | 4564575 | long size value | 5454554512 | 60 |\n" + "-----------------------------------------------------------------------------------------------\n" + "| P1 | 2002 | 121212465465465666656461245452145454545 |\n" + "-----------------------------------------------------------------------------------------------\n" + "| Alpha | 1001 | 8 | Beta | 2002 | |\n" + "| | | | water | 1.0 | |\n" + "-----------------------------------------------------------------------------------------------\n" + ); } int main( int argc, char * * argv ) diff --git a/src/coreComponents/common/format/unitTests/testStringUtilities.cpp b/src/coreComponents/common/format/unitTests/testStringUtilities.cpp index 94ca8bc039e..57dca300d6f 100644 --- a/src/coreComponents/common/format/unitTests/testStringUtilities.cpp +++ b/src/coreComponents/common/format/unitTests/testStringUtilities.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/common/initializeEnvironment.cpp b/src/coreComponents/common/initializeEnvironment.cpp index ee3b826aec6..64387060583 100644 --- a/src/coreComponents/common/initializeEnvironment.cpp +++ b/src/coreComponents/common/initializeEnvironment.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -290,7 +290,7 @@ static void addUmpireHighWaterMarks() string allocatorNameMinChars = string( MAX_NAME_LENGTH, '\0' ); // Make sure that each rank is looking at the same allocator. - MpiWrapper::allReduce( allocatorNameFixedSize.c_str(), &allocatorNameMinChars.front(), MAX_NAME_LENGTH, MPI_MIN, MPI_COMM_GEOS ); + MpiWrapper::allReduce( allocatorNameFixedSize, allocatorNameMinChars, MpiWrapper::Reduction::Min, MPI_COMM_GEOS ); if( allocatorNameFixedSize != allocatorNameMinChars ) { GEOS_WARNING( "Not all ranks have an allocator named " << allocatorNameFixedSize << ", cannot compute high water mark." ); @@ -345,11 +345,11 @@ static void addUmpireHighWaterMarks() pushStatsIntoAdiak( allocatorName + " rank max", mark ); } - TableLayout const memoryStatLayout ( {"Umpire Memory Pool\n(reserved / % over total)", - "Min over ranks", - "Max over ranks", - "Avg over ranks", - "Sum over ranks" } ); + TableLayout const memoryStatLayout ( { "Umpire Memory Pool\n(reserved / % over total)", + "Min over ranks", + "Max over ranks", + "Avg over ranks", + "Sum over ranks" } ); TableTextFormatter const memoryStatLog( memoryStatLayout ); GEOS_LOG_RANK_0( memoryStatLog.toString( tableData )); diff --git a/src/coreComponents/common/initializeEnvironment.hpp b/src/coreComponents/common/initializeEnvironment.hpp index d6364028799..9cd72d023ad 100644 --- a/src/coreComponents/common/initializeEnvironment.hpp +++ b/src/coreComponents/common/initializeEnvironment.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/common/logger/Logger.cpp b/src/coreComponents/common/logger/Logger.cpp index bd800697524..0ea4c47a7cb 100644 --- a/src/coreComponents/common/logger/Logger.cpp +++ b/src/coreComponents/common/logger/Logger.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/common/logger/Logger.hpp b/src/coreComponents/common/logger/Logger.hpp index a10c5330b19..0d0cf69c3bf 100644 --- a/src/coreComponents/common/logger/Logger.hpp +++ b/src/coreComponents/common/logger/Logger.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/common/unitTests/testCaliperSmoke.cpp b/src/coreComponents/common/unitTests/testCaliperSmoke.cpp index 2c3b5fa8cde..7376aeb55c6 100644 --- a/src/coreComponents/common/unitTests/testCaliperSmoke.cpp +++ b/src/coreComponents/common/unitTests/testCaliperSmoke.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/common/unitTests/testDataTypes.cpp b/src/coreComponents/common/unitTests/testDataTypes.cpp index b5c2a1f87ee..f83a3f13d5e 100644 --- a/src/coreComponents/common/unitTests/testDataTypes.cpp +++ b/src/coreComponents/common/unitTests/testDataTypes.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/common/unitTests/testFixedSizeDeque.cpp b/src/coreComponents/common/unitTests/testFixedSizeDeque.cpp index e5f64662e64..05293b3fc6c 100644 --- a/src/coreComponents/common/unitTests/testFixedSizeDeque.cpp +++ b/src/coreComponents/common/unitTests/testFixedSizeDeque.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/common/unitTests/testLifoStorage.cpp b/src/coreComponents/common/unitTests/testLifoStorage.cpp index f5b260b0b28..54c5a864bc3 100644 --- a/src/coreComponents/common/unitTests/testLifoStorage.cpp +++ b/src/coreComponents/common/unitTests/testLifoStorage.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/common/unitTests/testTypeDispatch.cpp b/src/coreComponents/common/unitTests/testTypeDispatch.cpp index 414436cd46d..c252adb9fc5 100644 --- a/src/coreComponents/common/unitTests/testTypeDispatch.cpp +++ b/src/coreComponents/common/unitTests/testTypeDispatch.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/common/unitTests/testUnits.cpp b/src/coreComponents/common/unitTests/testUnits.cpp index f94a3616b5e..59651a53588 100644 --- a/src/coreComponents/common/unitTests/testUnits.cpp +++ b/src/coreComponents/common/unitTests/testUnits.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/CMakeLists.txt b/src/coreComponents/constitutive/CMakeLists.txt index c763fd49e49..e7f798c3b5f 100644 --- a/src/coreComponents/constitutive/CMakeLists.txt +++ b/src/coreComponents/constitutive/CMakeLists.txt @@ -1,7 +1,7 @@ # SPDX-License-Identifier: LGPL-2.1-only # # Copyright (c) 2016-2024 Lawrence Livermore National Security LLC -# Copyright (c) 2018-2024 Total, S.A +# Copyright (c) 2018-2024 TotalEnergies # Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University # Copyright (c) 2023-2024 Chevron # Copyright (c) 2019- GEOS/GEOSX Contributors @@ -97,8 +97,10 @@ set( constitutive_headers fluid/multifluid/compositional/models/CriticalVolume.hpp fluid/multifluid/compositional/models/EquationOfState.hpp fluid/multifluid/compositional/models/FunctionBase.hpp + fluid/multifluid/compositional/models/ImmiscibleWaterDensity.hpp fluid/multifluid/compositional/models/ImmiscibleWaterFlashModel.hpp fluid/multifluid/compositional/models/ImmiscibleWaterParameters.hpp + fluid/multifluid/compositional/models/ImmiscibleWaterViscosity.hpp fluid/multifluid/compositional/models/LohrenzBrayClarkViscosity.hpp fluid/multifluid/compositional/models/LohrenzBrayClarkViscosityImpl.hpp fluid/multifluid/compositional/models/NegativeTwoPhaseFlashModel.hpp @@ -242,8 +244,10 @@ set( constitutive_sources fluid/multifluid/compositional/models/CompositionalDensity.cpp fluid/multifluid/compositional/models/ConstantViscosity.cpp fluid/multifluid/compositional/models/CriticalVolume.cpp + fluid/multifluid/compositional/models/ImmiscibleWaterDensity.cpp fluid/multifluid/compositional/models/ImmiscibleWaterFlashModel.cpp fluid/multifluid/compositional/models/ImmiscibleWaterParameters.cpp + fluid/multifluid/compositional/models/ImmiscibleWaterViscosity.cpp fluid/multifluid/compositional/models/LohrenzBrayClarkViscosity.cpp fluid/multifluid/compositional/models/NegativeTwoPhaseFlashModel.cpp fluid/multifluid/compositional/CompositionalMultiphaseFluid.cpp diff --git a/src/coreComponents/constitutive/ConstitutiveBase.cpp b/src/coreComponents/constitutive/ConstitutiveBase.cpp index 2c7334239c3..7323a649605 100644 --- a/src/coreComponents/constitutive/ConstitutiveBase.cpp +++ b/src/coreComponents/constitutive/ConstitutiveBase.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -83,7 +83,8 @@ ConstitutiveBase::deliverClone( string const & name, Group * const parent ) const { std::unique_ptr< ConstitutiveBase > - newModel = ConstitutiveBase::CatalogInterface::factory( this->getCatalogName(), name, parent ); + newModel = ConstitutiveBase::CatalogInterface::factory( this->getCatalogName(), getDataContext(), + name, parent ); newModel->forWrappers( [&]( WrapperBase & wrapper ) { diff --git a/src/coreComponents/constitutive/ConstitutiveBase.hpp b/src/coreComponents/constitutive/ConstitutiveBase.hpp index c025a58bb4b..12fa1449142 100644 --- a/src/coreComponents/constitutive/ConstitutiveBase.hpp +++ b/src/coreComponents/constitutive/ConstitutiveBase.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/ConstitutiveManager.cpp b/src/coreComponents/constitutive/ConstitutiveManager.cpp index 38d47321344..913f0898971 100644 --- a/src/coreComponents/constitutive/ConstitutiveManager.cpp +++ b/src/coreComponents/constitutive/ConstitutiveManager.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -43,7 +43,9 @@ ConstitutiveManager::~ConstitutiveManager() Group * ConstitutiveManager::createChild( string const & childKey, string const & childName ) { - std::unique_ptr< ConstitutiveBase > material = ConstitutiveBase::CatalogInterface::factory( childKey, childName, this ); + GEOS_LOG_RANK_0( GEOS_FMT( "{}: adding {} {}", getName(), childKey, childName ) ); + std::unique_ptr< ConstitutiveBase > material = + ConstitutiveBase::CatalogInterface::factory( childKey, getDataContext(), childName, this ); return ®isterGroup< ConstitutiveBase >( childName, std::move( material ) ); } diff --git a/src/coreComponents/constitutive/ConstitutiveManager.hpp b/src/coreComponents/constitutive/ConstitutiveManager.hpp index fbea4c187ed..1ef7f194314 100644 --- a/src/coreComponents/constitutive/ConstitutiveManager.hpp +++ b/src/coreComponents/constitutive/ConstitutiveManager.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/ConstitutivePassThru.hpp b/src/coreComponents/constitutive/ConstitutivePassThru.hpp index decabffbb6a..7b5b1533134 100644 --- a/src/coreComponents/constitutive/ConstitutivePassThru.hpp +++ b/src/coreComponents/constitutive/ConstitutivePassThru.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -50,6 +50,7 @@ #include "permeability/SlipDependentPermeability.hpp" #include "permeability/WillisRichardsPermeability.hpp" #include "contact/CoulombFriction.hpp" +#include "contact/RateAndStateFriction.hpp" namespace geos @@ -84,6 +85,22 @@ struct ConstitutivePassThru< ElasticIsotropic > } }; +/** + * Specialization for models that derive from FrictionBase. + */ +template<> +struct ConstitutivePassThru< FrictionBase > +{ + template< typename LAMBDA > + static + void execute( ConstitutiveBase & constitutiveRelation, LAMBDA && lambda ) + { + ConstitutivePassThruHandler< CoulombFriction, + RateAndStateFriction >::execute( constitutiveRelation, + std::forward< LAMBDA >( lambda ) ); + } +}; + /** * Specialization for models that derive from CoulombFriction. */ diff --git a/src/coreComponents/constitutive/ConstitutivePassThruHandler.hpp b/src/coreComponents/constitutive/ConstitutivePassThruHandler.hpp index 54dc51b24cc..1597cc65cc4 100644 --- a/src/coreComponents/constitutive/ConstitutivePassThruHandler.hpp +++ b/src/coreComponents/constitutive/ConstitutivePassThruHandler.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/ExponentialRelation.hpp b/src/coreComponents/constitutive/ExponentialRelation.hpp index e2215b23f1b..2982b0b8e5f 100644 --- a/src/coreComponents/constitutive/ExponentialRelation.hpp +++ b/src/coreComponents/constitutive/ExponentialRelation.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/NullModel.cpp b/src/coreComponents/constitutive/NullModel.cpp index 7ec9e6f19c0..9676802af3d 100644 --- a/src/coreComponents/constitutive/NullModel.cpp +++ b/src/coreComponents/constitutive/NullModel.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/NullModel.hpp b/src/coreComponents/constitutive/NullModel.hpp index e26a34b525b..ceddf84a4ac 100644 --- a/src/coreComponents/constitutive/NullModel.hpp +++ b/src/coreComponents/constitutive/NullModel.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/PVTPackage b/src/coreComponents/constitutive/PVTPackage index 59d81b149e3..374b72962f7 160000 --- a/src/coreComponents/constitutive/PVTPackage +++ b/src/coreComponents/constitutive/PVTPackage @@ -1 +1 @@ -Subproject commit 59d81b149e35ea5db0d715e608217d8bd56e9291 +Subproject commit 374b72962f7e605e74a1943c541e94d7b3f492a3 diff --git a/src/coreComponents/constitutive/capillaryPressure/BrooksCoreyCapillaryPressure.cpp b/src/coreComponents/constitutive/capillaryPressure/BrooksCoreyCapillaryPressure.cpp index eab49c34049..16315425bee 100644 --- a/src/coreComponents/constitutive/capillaryPressure/BrooksCoreyCapillaryPressure.cpp +++ b/src/coreComponents/constitutive/capillaryPressure/BrooksCoreyCapillaryPressure.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/capillaryPressure/BrooksCoreyCapillaryPressure.hpp b/src/coreComponents/constitutive/capillaryPressure/BrooksCoreyCapillaryPressure.hpp index 67f4195d31b..c020174dd21 100644 --- a/src/coreComponents/constitutive/capillaryPressure/BrooksCoreyCapillaryPressure.hpp +++ b/src/coreComponents/constitutive/capillaryPressure/BrooksCoreyCapillaryPressure.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/capillaryPressure/CapillaryPressureBase.cpp b/src/coreComponents/constitutive/capillaryPressure/CapillaryPressureBase.cpp index b3d7e2bba0b..97eb0127978 100644 --- a/src/coreComponents/constitutive/capillaryPressure/CapillaryPressureBase.cpp +++ b/src/coreComponents/constitutive/capillaryPressure/CapillaryPressureBase.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/capillaryPressure/CapillaryPressureBase.hpp b/src/coreComponents/constitutive/capillaryPressure/CapillaryPressureBase.hpp index b63aea24aac..a4c11561d83 100644 --- a/src/coreComponents/constitutive/capillaryPressure/CapillaryPressureBase.hpp +++ b/src/coreComponents/constitutive/capillaryPressure/CapillaryPressureBase.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/capillaryPressure/CapillaryPressureFields.hpp b/src/coreComponents/constitutive/capillaryPressure/CapillaryPressureFields.hpp index b9836e21f11..db38eb3fdc1 100644 --- a/src/coreComponents/constitutive/capillaryPressure/CapillaryPressureFields.hpp +++ b/src/coreComponents/constitutive/capillaryPressure/CapillaryPressureFields.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/capillaryPressure/JFunctionCapillaryPressure.cpp b/src/coreComponents/constitutive/capillaryPressure/JFunctionCapillaryPressure.cpp index 1dda8c49484..908c42604b4 100644 --- a/src/coreComponents/constitutive/capillaryPressure/JFunctionCapillaryPressure.cpp +++ b/src/coreComponents/constitutive/capillaryPressure/JFunctionCapillaryPressure.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/capillaryPressure/JFunctionCapillaryPressure.hpp b/src/coreComponents/constitutive/capillaryPressure/JFunctionCapillaryPressure.hpp index 58ceb90ab73..55f099e24fa 100644 --- a/src/coreComponents/constitutive/capillaryPressure/JFunctionCapillaryPressure.hpp +++ b/src/coreComponents/constitutive/capillaryPressure/JFunctionCapillaryPressure.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/capillaryPressure/TableCapillaryPressure.cpp b/src/coreComponents/constitutive/capillaryPressure/TableCapillaryPressure.cpp index 13d9926f49a..2304238b540 100644 --- a/src/coreComponents/constitutive/capillaryPressure/TableCapillaryPressure.cpp +++ b/src/coreComponents/constitutive/capillaryPressure/TableCapillaryPressure.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/capillaryPressure/TableCapillaryPressure.hpp b/src/coreComponents/constitutive/capillaryPressure/TableCapillaryPressure.hpp index 170055d19bb..739b9993083 100644 --- a/src/coreComponents/constitutive/capillaryPressure/TableCapillaryPressure.hpp +++ b/src/coreComponents/constitutive/capillaryPressure/TableCapillaryPressure.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/capillaryPressure/TableCapillaryPressureHelpers.cpp b/src/coreComponents/constitutive/capillaryPressure/TableCapillaryPressureHelpers.cpp index 818f869f2b4..6e4da85ccba 100644 --- a/src/coreComponents/constitutive/capillaryPressure/TableCapillaryPressureHelpers.cpp +++ b/src/coreComponents/constitutive/capillaryPressure/TableCapillaryPressureHelpers.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/capillaryPressure/TableCapillaryPressureHelpers.hpp b/src/coreComponents/constitutive/capillaryPressure/TableCapillaryPressureHelpers.hpp index 3e66d868928..9e3504b1a8a 100644 --- a/src/coreComponents/constitutive/capillaryPressure/TableCapillaryPressureHelpers.hpp +++ b/src/coreComponents/constitutive/capillaryPressure/TableCapillaryPressureHelpers.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/capillaryPressure/VanGenuchtenCapillaryPressure.cpp b/src/coreComponents/constitutive/capillaryPressure/VanGenuchtenCapillaryPressure.cpp index d739e9e2d5b..31a965992ad 100644 --- a/src/coreComponents/constitutive/capillaryPressure/VanGenuchtenCapillaryPressure.cpp +++ b/src/coreComponents/constitutive/capillaryPressure/VanGenuchtenCapillaryPressure.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/capillaryPressure/VanGenuchtenCapillaryPressure.hpp b/src/coreComponents/constitutive/capillaryPressure/VanGenuchtenCapillaryPressure.hpp index 17e58221279..14944dd980b 100644 --- a/src/coreComponents/constitutive/capillaryPressure/VanGenuchtenCapillaryPressure.hpp +++ b/src/coreComponents/constitutive/capillaryPressure/VanGenuchtenCapillaryPressure.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/capillaryPressure/capillaryPressureSelector.hpp b/src/coreComponents/constitutive/capillaryPressure/capillaryPressureSelector.hpp index ad6b69b9082..b164f55aa16 100644 --- a/src/coreComponents/constitutive/capillaryPressure/capillaryPressureSelector.hpp +++ b/src/coreComponents/constitutive/capillaryPressure/capillaryPressureSelector.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/capillaryPressure/layouts.hpp b/src/coreComponents/constitutive/capillaryPressure/layouts.hpp index e66655c18b9..d4903b67c31 100644 --- a/src/coreComponents/constitutive/capillaryPressure/layouts.hpp +++ b/src/coreComponents/constitutive/capillaryPressure/layouts.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/contact/BartonBandis.cpp b/src/coreComponents/constitutive/contact/BartonBandis.cpp index e1e3c050285..f478c015b28 100644 --- a/src/coreComponents/constitutive/contact/BartonBandis.cpp +++ b/src/coreComponents/constitutive/contact/BartonBandis.cpp @@ -2,10 +2,11 @@ * ------------------------------------------------------------------------------------------------------------ * SPDX-License-Identifier: LGPL-2.1-only * - * Copyright (c) 2018-2020 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2020 The Board of Trustees of the Leland Stanford Junior University - * Copyright (c) 2018-2020 TotalEnergies - * Copyright (c) 2019- GEOSX Contributors + * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC + * Copyright (c) 2018-2024 TotalEnergies + * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University + * Copyright (c) 2023-2024 Chevron + * Copyright (c) 2019- GEOS/GEOSX Contributors * All rights reserved * * See top level LICENSE, COPYRIGHT, CONTRIBUTORS, NOTICE, and ACKNOWLEDGEMENTS files for details. diff --git a/src/coreComponents/constitutive/contact/BartonBandis.hpp b/src/coreComponents/constitutive/contact/BartonBandis.hpp index 77d8a636e02..64f9281924b 100644 --- a/src/coreComponents/constitutive/contact/BartonBandis.hpp +++ b/src/coreComponents/constitutive/contact/BartonBandis.hpp @@ -2,10 +2,11 @@ * ------------------------------------------------------------------------------------------------------------ * SPDX-License-Identifier: LGPL-2.1-only * - * Copyright (c) 2018-2020 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2020 The Board of Trustees of the Leland Stanford Junior University - * Copyright (c) 2018-2020 TotalEnergies - * Copyright (c) 2019- GEOSX Contributors + * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC + * Copyright (c) 2018-2024 TotalEnergies + * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University + * Copyright (c) 2023-2024 Chevron + * Copyright (c) 2019- GEOS/GEOSX Contributors * All rights reserved * * See top level LICENSE, COPYRIGHT, CONTRIBUTORS, NOTICE, and ACKNOWLEDGEMENTS files for details. diff --git a/src/coreComponents/constitutive/contact/CoulombFriction.cpp b/src/coreComponents/constitutive/contact/CoulombFriction.cpp index a7bc27300dc..d59d3d99a45 100644 --- a/src/coreComponents/constitutive/contact/CoulombFriction.cpp +++ b/src/coreComponents/constitutive/contact/CoulombFriction.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/contact/CoulombFriction.hpp b/src/coreComponents/constitutive/contact/CoulombFriction.hpp index d117d8895e5..9041ac93ec0 100644 --- a/src/coreComponents/constitutive/contact/CoulombFriction.hpp +++ b/src/coreComponents/constitutive/contact/CoulombFriction.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -85,11 +85,18 @@ class CoulombFrictionUpdates : public FrictionBaseUpdates GEOS_HOST_DEVICE inline - virtual void updateFractureState( localIndex const k, - arraySlice1d< real64 const > const & dispJump, + virtual void updateFractureState( arraySlice1d< real64 const > const & dispJump, arraySlice1d< real64 const > const & tractionVector, integer & fractureState ) const override final; + GEOS_HOST_DEVICE + inline + virtual void updateElasticSlip( localIndex const k, + arraySlice1d< real64 const > const & dispJump, + arraySlice1d< real64 const > const & oldDispJump, + arraySlice1d< real64 const > const & tractionVector, + integer const & fractureState ) const override final; + GEOS_HOST_DEVICE inline virtual void updateTraction( arraySlice1d< real64 const > const & oldDispJump, @@ -221,7 +228,7 @@ GEOS_HOST_DEVICE real64 CoulombFrictionUpdates::computeLimitTangentialTractionNorm( real64 const & normalTraction, real64 & dLimitTangentialTractionNorm_dTraction ) const { - dLimitTangentialTractionNorm_dTraction = m_frictionCoefficient; + dLimitTangentialTractionNorm_dTraction = -m_frictionCoefficient; return ( m_cohesion - normalTraction * m_frictionCoefficient ); } @@ -238,15 +245,15 @@ inline void CoulombFrictionUpdates::computeShearTraction( localIndex const k, real64 const slip[2] = { dispJump[1] - oldDispJump[1], dispJump[2] - oldDispJump[2] }; - - real64 const tau[2] = { m_shearStiffness * ( slip[0] + m_elasticSlip[k][0] ), - m_shearStiffness * ( slip[1] + m_elasticSlip[k][1] ) }; - switch( fractureState ) { case fields::contact::FractureState::Stick: { - // Elastic slip case + // Elastic tangential deformation + + real64 const tau[2] = { m_shearStiffness * ( slip[0] + m_elasticSlip[k][0] ), + m_shearStiffness * ( slip[1] + m_elasticSlip[k][1] ) }; + // Tangential components of the traction are equal to tau tractionVector[1] = tau[0]; tractionVector[2] = tau[1]; @@ -254,14 +261,12 @@ inline void CoulombFrictionUpdates::computeShearTraction( localIndex const k, dTractionVector_dJump[1][1] = m_shearStiffness; dTractionVector_dJump[2][2] = m_shearStiffness; - // The slip is only elastic: we add the full slip to the elastic one - LvArray::tensorOps::add< 2 >( m_elasticSlip[k], slip ); - break; } case fields::contact::FractureState::Slip: { - // Plastic slip case + // Plastic tangential deformation + real64 dLimitTau_dNormalTraction; real64 const limitTau = computeLimitTangentialTractionNorm( tractionVector[0], dLimitTau_dNormalTraction ); @@ -274,27 +279,19 @@ inline void CoulombFrictionUpdates::computeShearTraction( localIndex const k, dTractionVector_dJump[1][0] = dTractionVector_dJump[0][0] * dLimitTau_dNormalTraction * slip[0] / slipNorm; dTractionVector_dJump[1][1] = limitTau * pow( slip[1], 2 ) / pow( LvArray::tensorOps::l2NormSquared< 2 >( slip ), 1.5 ); - dTractionVector_dJump[1][2] = limitTau * slip[0] * slip[1] / pow( LvArray::tensorOps::l2NormSquared< 2 >( slip ), 1.5 ); + dTractionVector_dJump[1][2] = -limitTau * slip[0] * slip[1] / pow( LvArray::tensorOps::l2NormSquared< 2 >( slip ), 1.5 ); dTractionVector_dJump[2][0] = dTractionVector_dJump[0][0] * dLimitTau_dNormalTraction * slip[1] / slipNorm; - dTractionVector_dJump[2][1] = limitTau * slip[0] * slip[1] / pow( LvArray::tensorOps::l2NormSquared< 2 >( slip ), 1.5 ); + dTractionVector_dJump[2][1] = -limitTau * slip[0] * slip[1] / pow( LvArray::tensorOps::l2NormSquared< 2 >( slip ), 1.5 ); dTractionVector_dJump[2][2] = limitTau * pow( slip[0], 2 ) / pow( LvArray::tensorOps::l2NormSquared< 2 >( slip ), 1.5 ); - // Compute elastic component of the slip for this case - real64 const plasticSlip[2] = { tractionVector[1] / m_shearStiffness, - tractionVector[2] / m_shearStiffness }; - - LvArray::tensorOps::copy< 2 >( m_elasticSlip[k], slip ); - LvArray::tensorOps::subtract< 2 >( m_elasticSlip[k], plasticSlip ); - break; } } } GEOS_HOST_DEVICE -inline void CoulombFrictionUpdates::updateFractureState( localIndex const k, - arraySlice1d< real64 const > const & dispJump, +inline void CoulombFrictionUpdates::updateFractureState( arraySlice1d< real64 const > const & dispJump, arraySlice1d< real64 const > const & tractionVector, integer & fractureState ) const { @@ -303,8 +300,6 @@ inline void CoulombFrictionUpdates::updateFractureState( localIndex const k, if( dispJump[0] > -m_displacementJumpThreshold ) { fractureState = FractureState::Open; - m_elasticSlip[k][0] = 0.0; - m_elasticSlip[k][1] = 0.0; } else { @@ -319,7 +314,45 @@ inline void CoulombFrictionUpdates::updateFractureState( localIndex const k, // Yield function (not necessary but makes it clearer) real64 const yield = tauNorm - limitTau; - fractureState = yield < 0 ? FractureState::Stick : FractureState::Slip; + if( yield < 0 ) + { + fractureState = FractureState::Stick; + } + else + { + fractureState = FractureState::Slip; + } + } +} + +GEOS_HOST_DEVICE +inline void CoulombFrictionUpdates::updateElasticSlip( localIndex const k, + arraySlice1d< real64 const > const & dispJump, + arraySlice1d< real64 const > const & oldDispJump, + arraySlice1d< real64 const > const & tractionVector, + integer const & fractureState ) const +{ + using namespace fields::contact; + + if( fractureState == FractureState::Open ) + { + m_elasticSlip[k][0] = 0.0; + m_elasticSlip[k][1] = 0.0; + } + else + { + if( fractureState == FractureState::Stick ) + { + // The slip is only elastic: we add the full slip to the elastic one + real64 const slip[2] = { dispJump[1] - oldDispJump[1], + dispJump[2] - oldDispJump[2] }; + LvArray::tensorOps::add< 2 >( m_elasticSlip[k], slip ); + } + else if( fractureState == FractureState::Slip ) + { + m_elasticSlip[k][0] = tractionVector[1] / m_shearStiffness; + m_elasticSlip[k][1] = tractionVector[2] / m_shearStiffness; + } } } @@ -389,7 +422,9 @@ inline void CoulombFrictionUpdates::updateTraction( arraySlice1d< real64 const > tractionNew[2] = tractionTrial[2]; if( fractureState != FractureState::Open ) + { fractureState = FractureState::Stick; + } } else if( limitTau <= tangentialTractionTolerance ) { @@ -400,7 +435,9 @@ inline void CoulombFrictionUpdates::updateTraction( arraySlice1d< real64 const > tractionNew[2] = (fixedLimitTau) ? tractionTrial[2] : 0.0; if( fractureState != FractureState::Open ) + { fractureState = FractureState::Slip; + } } else { diff --git a/src/coreComponents/constitutive/contact/FrictionBase.cpp b/src/coreComponents/constitutive/contact/FrictionBase.cpp index a4443bcf335..d440e9c53bb 100644 --- a/src/coreComponents/constitutive/contact/FrictionBase.cpp +++ b/src/coreComponents/constitutive/contact/FrictionBase.cpp @@ -2,10 +2,11 @@ * ------------------------------------------------------------------------------------------------------------ * SPDX-License-Identifier: LGPL-2.1-only * - * Copyright (c) 2018-2020 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2020 The Board of Trustees of the Leland Stanford Junior University - * Copyright (c) 2018-2020 TotalEnergies - * Copyright (c) 2019- GEOSX Contributors + * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC + * Copyright (c) 2018-2024 TotalEnergies + * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University + * Copyright (c) 2023-2024 Chevron + * Copyright (c) 2019- GEOS/GEOSX Contributors * All rights reserved * * See top level LICENSE, COPYRIGHT, CONTRIBUTORS, NOTICE, and ACKNOWLEDGEMENTS files for details. diff --git a/src/coreComponents/constitutive/contact/FrictionBase.hpp b/src/coreComponents/constitutive/contact/FrictionBase.hpp index e05923f2998..b7583429e9b 100644 --- a/src/coreComponents/constitutive/contact/FrictionBase.hpp +++ b/src/coreComponents/constitutive/contact/FrictionBase.hpp @@ -2,10 +2,11 @@ * ------------------------------------------------------------------------------------------------------------ * SPDX-License-Identifier: LGPL-2.1-only * - * Copyright (c) 2018-2020 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2020 The Board of Trustees of the Leland Stanford Junior University - * Copyright (c) 2018-2020 TotalEnergies - * Copyright (c) 2019- GEOSX Contributors + * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC + * Copyright (c) 2018-2024 TotalEnergies + * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University + * Copyright (c) 2023-2024 Chevron + * Copyright (c) 2019- GEOS/GEOSX Contributors * All rights reserved * * See top level LICENSE, COPYRIGHT, CONTRIBUTORS, NOTICE, and ACKNOWLEDGEMENTS files for details. @@ -83,11 +84,26 @@ class FrictionBaseUpdates */ GEOS_HOST_DEVICE inline - virtual void updateFractureState( localIndex const k, - arraySlice1d< real64 const > const & dispJump, + virtual void updateFractureState( arraySlice1d< real64 const > const & dispJump, arraySlice1d< real64 const > const & tractionVector, integer & fractureState ) const - { GEOS_UNUSED_VAR( k, dispJump, tractionVector, fractureState ); } + { GEOS_UNUSED_VAR( dispJump, tractionVector, fractureState ); } + + /** + * @brief Evaluate and store the elastic slip + * @param[in] dispJump the displacement jump + * @param[in] oldDispJump the previous displacement jump + * @param[in] tractionVector the traction vector + * @param[out] fractureState the fracture state + */ + GEOS_HOST_DEVICE + inline + virtual void updateElasticSlip( localIndex const k, + arraySlice1d< real64 const > const & dispJump, + arraySlice1d< real64 const > const & oldDispJump, + arraySlice1d< real64 const > const & tractionVector, + integer const & fractureState ) const + { GEOS_UNUSED_VAR( k, dispJump, oldDispJump, tractionVector, fractureState ); } /** * @brief Update the trial traction vector ( return mapping ) @@ -175,7 +191,11 @@ class FrictionBaseUpdates inline virtual real64 computeLimitTangentialTractionNorm( real64 const & normalTraction, real64 & dLimitTangentialTractionNorm_dTraction ) const - { GEOS_UNUSED_VAR( normalTraction, dLimitTangentialTractionNorm_dTraction ); return 0; }; + { + GEOS_UNUSED_VAR( normalTraction ); + dLimitTangentialTractionNorm_dTraction = 0.0; + return 0; + } protected: diff --git a/src/coreComponents/constitutive/contact/FrictionSelector.hpp b/src/coreComponents/constitutive/contact/FrictionSelector.hpp index 8eab7ff72dd..7ed06f6a797 100644 --- a/src/coreComponents/constitutive/contact/FrictionSelector.hpp +++ b/src/coreComponents/constitutive/contact/FrictionSelector.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -23,6 +23,7 @@ #include "constitutive/ConstitutivePassThruHandler.hpp" #include "constitutive/contact/CoulombFriction.hpp" #include "constitutive/contact/FrictionlessContact.hpp" +#include "constitutive/contact/RateAndStateFriction.hpp" namespace geos { @@ -35,7 +36,8 @@ void constitutiveUpdatePassThru( FrictionBase const & contact, LAMBDA && lambda ) { ConstitutivePassThruHandler< FrictionlessContact, - CoulombFriction >::execute( contact, std::forward< LAMBDA >( lambda ) ); + CoulombFriction, + RateAndStateFriction >::execute( contact, std::forward< LAMBDA >( lambda ) ); } template< typename LAMBDA > @@ -43,7 +45,8 @@ void constitutiveUpdatePassThru( FrictionBase & contact, LAMBDA && lambda ) { ConstitutivePassThruHandler< FrictionlessContact, - CoulombFriction >::execute( contact, std::forward< LAMBDA >( lambda ) ); + CoulombFriction, + RateAndStateFriction >::execute( contact, std::forward< LAMBDA >( lambda ) ); } } /* namespace constitutive */ diff --git a/src/coreComponents/constitutive/contact/FrictionlessContact.cpp b/src/coreComponents/constitutive/contact/FrictionlessContact.cpp index e7fb6bb8ba6..de63d4d8812 100644 --- a/src/coreComponents/constitutive/contact/FrictionlessContact.cpp +++ b/src/coreComponents/constitutive/contact/FrictionlessContact.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/contact/FrictionlessContact.hpp b/src/coreComponents/constitutive/contact/FrictionlessContact.hpp index 83e53fd8e14..1b17e07dfd7 100644 --- a/src/coreComponents/constitutive/contact/FrictionlessContact.hpp +++ b/src/coreComponents/constitutive/contact/FrictionlessContact.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -58,25 +58,10 @@ class FrictionlessContactUpdates : public FrictionBaseUpdates GEOS_HOST_DEVICE inline - virtual void updateFractureState( localIndex const k, - arraySlice1d< real64 const > const & dispJump, + virtual void updateFractureState( arraySlice1d< real64 const > const & dispJump, arraySlice1d< real64 const > const & tractionVector, integer & fractureState ) const override final; - - /** - * @brief Evaluate the limit tangential traction norm and return the derivative wrt normal traction - * @param[in] normalTraction the normal traction - * @param[out] dLimitTangentialTractionNorm_dTraction the derivative of the limit tangential traction norm wrt normal traction - * @return the limit tangential traction norm - */ - GEOS_HOST_DEVICE - inline - virtual real64 computeLimitTangentialTractionNorm( real64 const & normalTraction, - real64 & dLimitTangentialTractionNorm_dTraction ) const override final - { GEOS_UNUSED_VAR( normalTraction, dLimitTangentialTractionNorm_dTraction ); return 0.0; } - -private: }; @@ -132,12 +117,11 @@ class FrictionlessContact : public FrictionBase GEOS_HOST_DEVICE -inline void FrictionlessContactUpdates::updateFractureState( localIndex const k, - arraySlice1d< real64 const > const & dispJump, +inline void FrictionlessContactUpdates::updateFractureState( arraySlice1d< real64 const > const & dispJump, arraySlice1d< real64 const > const & tractionVector, integer & fractureState ) const { - GEOS_UNUSED_VAR( k, tractionVector ); + GEOS_UNUSED_VAR( tractionVector ); using namespace fields::contact; fractureState = dispJump[0] > m_displacementJumpThreshold ? FractureState::Open : FractureState::Stick; } diff --git a/src/coreComponents/constitutive/contact/HydraulicApertureBase.cpp b/src/coreComponents/constitutive/contact/HydraulicApertureBase.cpp index 81ca7a55097..2f5c715453c 100644 --- a/src/coreComponents/constitutive/contact/HydraulicApertureBase.cpp +++ b/src/coreComponents/constitutive/contact/HydraulicApertureBase.cpp @@ -2,10 +2,11 @@ * ------------------------------------------------------------------------------------------------------------ * SPDX-License-Identifier: LGPL-2.1-only * - * Copyright (c) 2018-2020 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2020 The Board of Trustees of the Leland Stanford Junior University - * Copyright (c) 2018-2020 TotalEnergies - * Copyright (c) 2019- GEOSX Contributors + * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC + * Copyright (c) 2018-2024 TotalEnergies + * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University + * Copyright (c) 2023-2024 Chevron + * Copyright (c) 2019- GEOS/GEOSX Contributors * All rights reserved * * See top level LICENSE, COPYRIGHT, CONTRIBUTORS, NOTICE, and ACKNOWLEDGEMENTS files for details. diff --git a/src/coreComponents/constitutive/contact/HydraulicApertureBase.hpp b/src/coreComponents/constitutive/contact/HydraulicApertureBase.hpp index dab7b35957d..701a20213fc 100644 --- a/src/coreComponents/constitutive/contact/HydraulicApertureBase.hpp +++ b/src/coreComponents/constitutive/contact/HydraulicApertureBase.hpp @@ -2,10 +2,11 @@ * ------------------------------------------------------------------------------------------------------------ * SPDX-License-Identifier: LGPL-2.1-only * - * Copyright (c) 2018-2020 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2020 The Board of Trustees of the Leland Stanford Junior University - * Copyright (c) 2018-2020 TotalEnergies - * Copyright (c) 2019- GEOSX Contributors + * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC + * Copyright (c) 2018-2024 TotalEnergies + * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University + * Copyright (c) 2023-2024 Chevron + * Copyright (c) 2019- GEOS/GEOSX Contributors * All rights reserved * * See top level LICENSE, COPYRIGHT, CONTRIBUTORS, NOTICE, and ACKNOWLEDGEMENTS files for details. diff --git a/src/coreComponents/constitutive/contact/HydraulicApertureRelationSelector.hpp b/src/coreComponents/constitutive/contact/HydraulicApertureRelationSelector.hpp index 0d32794c1eb..f8675f1dc1e 100644 --- a/src/coreComponents/constitutive/contact/HydraulicApertureRelationSelector.hpp +++ b/src/coreComponents/constitutive/contact/HydraulicApertureRelationSelector.hpp @@ -2,10 +2,11 @@ * ------------------------------------------------------------------------------------------------------------ * SPDX-License-Identifier: LGPL-2.1-only * - * Copyright (c) 2018-2020 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2020 The Board of Trustees of the Leland Stanford Junior University - * Copyright (c) 2018-2020 TotalEnergies - * Copyright (c) 2019- GEOSX Contributors + * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC + * Copyright (c) 2018-2024 TotalEnergies + * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University + * Copyright (c) 2023-2024 Chevron + * Copyright (c) 2019- GEOS/GEOSX Contributors * All rights reserved * * See top level LICENSE, COPYRIGHT, CONTRIBUTORS, NOTICE, and ACKNOWLEDGEMENTS files for details. diff --git a/src/coreComponents/constitutive/contact/HydraulicApertureTable.cpp b/src/coreComponents/constitutive/contact/HydraulicApertureTable.cpp index b57d9e3e58e..6fe5c08b42f 100644 --- a/src/coreComponents/constitutive/contact/HydraulicApertureTable.cpp +++ b/src/coreComponents/constitutive/contact/HydraulicApertureTable.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/contact/HydraulicApertureTable.hpp b/src/coreComponents/constitutive/contact/HydraulicApertureTable.hpp index 2022e6cec5c..49aad4568bd 100644 --- a/src/coreComponents/constitutive/contact/HydraulicApertureTable.hpp +++ b/src/coreComponents/constitutive/contact/HydraulicApertureTable.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/contact/RateAndStateFriction.cpp b/src/coreComponents/constitutive/contact/RateAndStateFriction.cpp index f26954a3316..6376553ec85 100644 --- a/src/coreComponents/constitutive/contact/RateAndStateFriction.cpp +++ b/src/coreComponents/constitutive/contact/RateAndStateFriction.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -31,12 +31,15 @@ RateAndStateFriction::RateAndStateFriction( string const & name, Group * const p FrictionBase( name, parent ) { registerWrapper( viewKeyStruct::aCoefficientString(), &m_a ). + setPlotLevel( PlotLevel::LEVEL_0 ). setDescription( "Rate- and State-dependent friction coefficient a." ); registerWrapper( viewKeyStruct::bCoefficientString(), &m_b ). + setPlotLevel( PlotLevel::LEVEL_0 ). setDescription( "Rate- and State-dependent friction coefficient b." ); registerWrapper( viewKeyStruct::DcCoefficientString(), &m_Dc ). + setPlotLevel( PlotLevel::LEVEL_0 ). setDescription( "Rate- and State-dependent friction characteristic length." ); registerWrapper( viewKeyStruct::referenceVelocityString(), &m_V0 ). diff --git a/src/coreComponents/constitutive/contact/RateAndStateFriction.hpp b/src/coreComponents/constitutive/contact/RateAndStateFriction.hpp index 9b9341ce1aa..e05a4089838 100644 --- a/src/coreComponents/constitutive/contact/RateAndStateFriction.hpp +++ b/src/coreComponents/constitutive/contact/RateAndStateFriction.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2018-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -110,8 +110,7 @@ class RateAndStateFriction : public FrictionBase GEOS_HOST_DEVICE inline - virtual void updateFractureState( localIndex const k, - arraySlice1d< real64 const > const & dispJump, + virtual void updateFractureState( arraySlice1d< real64 const > const & dispJump, arraySlice1d< real64 const > const & tractionVector, integer & fractureState ) const override final; @@ -239,13 +238,12 @@ class RateAndStateFriction : public FrictionBase }; GEOS_HOST_DEVICE -inline void RateAndStateFriction::KernelWrapper::updateFractureState( localIndex const k, - arraySlice1d< real64 const > const & dispJump, +inline void RateAndStateFriction::KernelWrapper::updateFractureState( arraySlice1d< real64 const > const & dispJump, arraySlice1d< real64 const > const & tractionVector, integer & fractureState ) const { - GEOS_UNUSED_VAR( tractionVector, k ); + GEOS_UNUSED_VAR( tractionVector ); using namespace fields::contact; if( dispJump[0] > -m_displacementJumpThreshold ) diff --git a/src/coreComponents/constitutive/diffusion/ConstantDiffusion.cpp b/src/coreComponents/constitutive/diffusion/ConstantDiffusion.cpp index d53096ba4ff..cff80fed216 100644 --- a/src/coreComponents/constitutive/diffusion/ConstantDiffusion.cpp +++ b/src/coreComponents/constitutive/diffusion/ConstantDiffusion.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/diffusion/ConstantDiffusion.hpp b/src/coreComponents/constitutive/diffusion/ConstantDiffusion.hpp index c482781b8bb..66f586ab637 100644 --- a/src/coreComponents/constitutive/diffusion/ConstantDiffusion.hpp +++ b/src/coreComponents/constitutive/diffusion/ConstantDiffusion.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/diffusion/DiffusionBase.cpp b/src/coreComponents/constitutive/diffusion/DiffusionBase.cpp index 8bacdb7dfb5..491bc987a99 100644 --- a/src/coreComponents/constitutive/diffusion/DiffusionBase.cpp +++ b/src/coreComponents/constitutive/diffusion/DiffusionBase.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/diffusion/DiffusionBase.hpp b/src/coreComponents/constitutive/diffusion/DiffusionBase.hpp index 7bc5daed75b..430d52852f2 100644 --- a/src/coreComponents/constitutive/diffusion/DiffusionBase.hpp +++ b/src/coreComponents/constitutive/diffusion/DiffusionBase.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/diffusion/DiffusionFields.hpp b/src/coreComponents/constitutive/diffusion/DiffusionFields.hpp index 397f6214553..e570a5584d8 100644 --- a/src/coreComponents/constitutive/diffusion/DiffusionFields.hpp +++ b/src/coreComponents/constitutive/diffusion/DiffusionFields.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/diffusion/DiffusionSelector.hpp b/src/coreComponents/constitutive/diffusion/DiffusionSelector.hpp index fe077fef543..40325527e2c 100644 --- a/src/coreComponents/constitutive/diffusion/DiffusionSelector.hpp +++ b/src/coreComponents/constitutive/diffusion/DiffusionSelector.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/dispersion/DispersionBase.cpp b/src/coreComponents/constitutive/dispersion/DispersionBase.cpp index 8e15b45fe77..2789f5a07d9 100644 --- a/src/coreComponents/constitutive/dispersion/DispersionBase.cpp +++ b/src/coreComponents/constitutive/dispersion/DispersionBase.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/dispersion/DispersionBase.hpp b/src/coreComponents/constitutive/dispersion/DispersionBase.hpp index 6ced3ca28b8..4a653aed6e0 100644 --- a/src/coreComponents/constitutive/dispersion/DispersionBase.hpp +++ b/src/coreComponents/constitutive/dispersion/DispersionBase.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/dispersion/DispersionFields.hpp b/src/coreComponents/constitutive/dispersion/DispersionFields.hpp index 0baca85dca8..a4be8187737 100644 --- a/src/coreComponents/constitutive/dispersion/DispersionFields.hpp +++ b/src/coreComponents/constitutive/dispersion/DispersionFields.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/dispersion/DispersionSelector.hpp b/src/coreComponents/constitutive/dispersion/DispersionSelector.hpp index 3dda4ba2ab1..c330115a49b 100644 --- a/src/coreComponents/constitutive/dispersion/DispersionSelector.hpp +++ b/src/coreComponents/constitutive/dispersion/DispersionSelector.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/dispersion/LinearIsotropicDispersion.cpp b/src/coreComponents/constitutive/dispersion/LinearIsotropicDispersion.cpp index 5f49d1a66fd..88e0339f142 100644 --- a/src/coreComponents/constitutive/dispersion/LinearIsotropicDispersion.cpp +++ b/src/coreComponents/constitutive/dispersion/LinearIsotropicDispersion.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/dispersion/LinearIsotropicDispersion.hpp b/src/coreComponents/constitutive/dispersion/LinearIsotropicDispersion.hpp index 949f72e51d6..de7193694b1 100644 --- a/src/coreComponents/constitutive/dispersion/LinearIsotropicDispersion.hpp +++ b/src/coreComponents/constitutive/dispersion/LinearIsotropicDispersion.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/fluid/multifluid/CO2Brine/CO2BrineFluid.cpp b/src/coreComponents/constitutive/fluid/multifluid/CO2Brine/CO2BrineFluid.cpp index c90b6c296f6..ee6b5482a92 100644 --- a/src/coreComponents/constitutive/fluid/multifluid/CO2Brine/CO2BrineFluid.cpp +++ b/src/coreComponents/constitutive/fluid/multifluid/CO2Brine/CO2BrineFluid.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/fluid/multifluid/CO2Brine/CO2BrineFluid.hpp b/src/coreComponents/constitutive/fluid/multifluid/CO2Brine/CO2BrineFluid.hpp index 3675ff4ac81..7b35053a4ab 100644 --- a/src/coreComponents/constitutive/fluid/multifluid/CO2Brine/CO2BrineFluid.hpp +++ b/src/coreComponents/constitutive/fluid/multifluid/CO2Brine/CO2BrineFluid.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/fluid/multifluid/CO2Brine/PhaseModel.hpp b/src/coreComponents/constitutive/fluid/multifluid/CO2Brine/PhaseModel.hpp index 9c398939b62..d422cc39bd4 100644 --- a/src/coreComponents/constitutive/fluid/multifluid/CO2Brine/PhaseModel.hpp +++ b/src/coreComponents/constitutive/fluid/multifluid/CO2Brine/PhaseModel.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/fluid/multifluid/CO2Brine/functions/BrineEnthalpy.cpp b/src/coreComponents/constitutive/fluid/multifluid/CO2Brine/functions/BrineEnthalpy.cpp index 5edd296fd51..27eb1053d38 100644 --- a/src/coreComponents/constitutive/fluid/multifluid/CO2Brine/functions/BrineEnthalpy.cpp +++ b/src/coreComponents/constitutive/fluid/multifluid/CO2Brine/functions/BrineEnthalpy.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/fluid/multifluid/CO2Brine/functions/BrineEnthalpy.hpp b/src/coreComponents/constitutive/fluid/multifluid/CO2Brine/functions/BrineEnthalpy.hpp index 2e000d40f97..5231b07740d 100644 --- a/src/coreComponents/constitutive/fluid/multifluid/CO2Brine/functions/BrineEnthalpy.hpp +++ b/src/coreComponents/constitutive/fluid/multifluid/CO2Brine/functions/BrineEnthalpy.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/fluid/multifluid/CO2Brine/functions/CO2EOSSolver.cpp b/src/coreComponents/constitutive/fluid/multifluid/CO2Brine/functions/CO2EOSSolver.cpp index 227f5a93912..1ab2bf40a91 100644 --- a/src/coreComponents/constitutive/fluid/multifluid/CO2Brine/functions/CO2EOSSolver.cpp +++ b/src/coreComponents/constitutive/fluid/multifluid/CO2Brine/functions/CO2EOSSolver.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/fluid/multifluid/CO2Brine/functions/CO2EOSSolver.hpp b/src/coreComponents/constitutive/fluid/multifluid/CO2Brine/functions/CO2EOSSolver.hpp index 534c9d1f1d2..bb5a47ea10a 100644 --- a/src/coreComponents/constitutive/fluid/multifluid/CO2Brine/functions/CO2EOSSolver.hpp +++ b/src/coreComponents/constitutive/fluid/multifluid/CO2Brine/functions/CO2EOSSolver.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/fluid/multifluid/CO2Brine/functions/CO2Enthalpy.cpp b/src/coreComponents/constitutive/fluid/multifluid/CO2Brine/functions/CO2Enthalpy.cpp index 01683a9dd64..90de88580bf 100644 --- a/src/coreComponents/constitutive/fluid/multifluid/CO2Brine/functions/CO2Enthalpy.cpp +++ b/src/coreComponents/constitutive/fluid/multifluid/CO2Brine/functions/CO2Enthalpy.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/fluid/multifluid/CO2Brine/functions/CO2Enthalpy.hpp b/src/coreComponents/constitutive/fluid/multifluid/CO2Brine/functions/CO2Enthalpy.hpp index 034ad20475a..6cc0852f4ae 100644 --- a/src/coreComponents/constitutive/fluid/multifluid/CO2Brine/functions/CO2Enthalpy.hpp +++ b/src/coreComponents/constitutive/fluid/multifluid/CO2Brine/functions/CO2Enthalpy.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/fluid/multifluid/CO2Brine/functions/CO2Solubility.cpp b/src/coreComponents/constitutive/fluid/multifluid/CO2Brine/functions/CO2Solubility.cpp index 131fdb60ed9..f3946b7bc0d 100644 --- a/src/coreComponents/constitutive/fluid/multifluid/CO2Brine/functions/CO2Solubility.cpp +++ b/src/coreComponents/constitutive/fluid/multifluid/CO2Brine/functions/CO2Solubility.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/fluid/multifluid/CO2Brine/functions/CO2Solubility.hpp b/src/coreComponents/constitutive/fluid/multifluid/CO2Brine/functions/CO2Solubility.hpp index fe24e1e0270..9e637b7c9b7 100644 --- a/src/coreComponents/constitutive/fluid/multifluid/CO2Brine/functions/CO2Solubility.hpp +++ b/src/coreComponents/constitutive/fluid/multifluid/CO2Brine/functions/CO2Solubility.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/fluid/multifluid/CO2Brine/functions/CO2SolubilityDuanSun.cpp b/src/coreComponents/constitutive/fluid/multifluid/CO2Brine/functions/CO2SolubilityDuanSun.cpp index 7defd458bd4..3170912fecc 100644 --- a/src/coreComponents/constitutive/fluid/multifluid/CO2Brine/functions/CO2SolubilityDuanSun.cpp +++ b/src/coreComponents/constitutive/fluid/multifluid/CO2Brine/functions/CO2SolubilityDuanSun.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/fluid/multifluid/CO2Brine/functions/CO2SolubilityDuanSun.hpp b/src/coreComponents/constitutive/fluid/multifluid/CO2Brine/functions/CO2SolubilityDuanSun.hpp index 9b918c8be5f..92c37932e5d 100644 --- a/src/coreComponents/constitutive/fluid/multifluid/CO2Brine/functions/CO2SolubilityDuanSun.hpp +++ b/src/coreComponents/constitutive/fluid/multifluid/CO2Brine/functions/CO2SolubilityDuanSun.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/fluid/multifluid/CO2Brine/functions/CO2SolubilitySpycherPruess.cpp b/src/coreComponents/constitutive/fluid/multifluid/CO2Brine/functions/CO2SolubilitySpycherPruess.cpp index f9ce8006fc9..4d832d01a27 100644 --- a/src/coreComponents/constitutive/fluid/multifluid/CO2Brine/functions/CO2SolubilitySpycherPruess.cpp +++ b/src/coreComponents/constitutive/fluid/multifluid/CO2Brine/functions/CO2SolubilitySpycherPruess.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/fluid/multifluid/CO2Brine/functions/CO2SolubilitySpycherPruess.hpp b/src/coreComponents/constitutive/fluid/multifluid/CO2Brine/functions/CO2SolubilitySpycherPruess.hpp index 1f612890a9a..187ad434fdb 100644 --- a/src/coreComponents/constitutive/fluid/multifluid/CO2Brine/functions/CO2SolubilitySpycherPruess.hpp +++ b/src/coreComponents/constitutive/fluid/multifluid/CO2Brine/functions/CO2SolubilitySpycherPruess.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/fluid/multifluid/CO2Brine/functions/EzrokhiBrineDensity.cpp b/src/coreComponents/constitutive/fluid/multifluid/CO2Brine/functions/EzrokhiBrineDensity.cpp index 7ba7020fa9e..d35b2c040f5 100644 --- a/src/coreComponents/constitutive/fluid/multifluid/CO2Brine/functions/EzrokhiBrineDensity.cpp +++ b/src/coreComponents/constitutive/fluid/multifluid/CO2Brine/functions/EzrokhiBrineDensity.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -59,7 +59,7 @@ EzrokhiBrineDensity::EzrokhiBrineDensity( string const & name, void EzrokhiBrineDensity::makeCoefficients( string_array const & inputPara ) { - // compute brine density following Ezrokhi`s method (referenced in Eclipse TD, Aqueous phase properties) + // compute brine density following Ezrokhi`s method // Reference : Zaytsev, I.D. and Aseyev, G.G. Properties of Aqueous Solutions of Electrolytes, Boca Raton, Florida, USA CRC Press (1993). m_waterCompressibility = 4.5e-10; // Pa-1 diff --git a/src/coreComponents/constitutive/fluid/multifluid/CO2Brine/functions/EzrokhiBrineDensity.hpp b/src/coreComponents/constitutive/fluid/multifluid/CO2Brine/functions/EzrokhiBrineDensity.hpp index 5942eff4f0a..edf0d083335 100644 --- a/src/coreComponents/constitutive/fluid/multifluid/CO2Brine/functions/EzrokhiBrineDensity.hpp +++ b/src/coreComponents/constitutive/fluid/multifluid/CO2Brine/functions/EzrokhiBrineDensity.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/fluid/multifluid/CO2Brine/functions/EzrokhiBrineViscosity.cpp b/src/coreComponents/constitutive/fluid/multifluid/CO2Brine/functions/EzrokhiBrineViscosity.cpp index c300237899a..65976e0d0d9 100644 --- a/src/coreComponents/constitutive/fluid/multifluid/CO2Brine/functions/EzrokhiBrineViscosity.cpp +++ b/src/coreComponents/constitutive/fluid/multifluid/CO2Brine/functions/EzrokhiBrineViscosity.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -57,7 +57,7 @@ EzrokhiBrineViscosity::EzrokhiBrineViscosity( string const & name, void EzrokhiBrineViscosity::makeCoefficients( string_array const & inputPara ) { - // compute brine viscosity following Ezrokhi`s method (referenced in Eclipse TD, Aqueous phase properties) + // compute brine viscosity following Ezrokhi`s method // Reference : Zaytsev, I.D. and Aseyev, G.G. Properties of Aqueous Solutions of Electrolytes, Boca Raton, Florida, USA CRC Press (1993). GEOS_THROW_IF_LT_MSG( inputPara.size(), 5, GEOS_FMT( "{}: insufficient number of model parameters", m_functionName ), diff --git a/src/coreComponents/constitutive/fluid/multifluid/CO2Brine/functions/EzrokhiBrineViscosity.hpp b/src/coreComponents/constitutive/fluid/multifluid/CO2Brine/functions/EzrokhiBrineViscosity.hpp index 7140a4ca41c..bcecc698226 100644 --- a/src/coreComponents/constitutive/fluid/multifluid/CO2Brine/functions/EzrokhiBrineViscosity.hpp +++ b/src/coreComponents/constitutive/fluid/multifluid/CO2Brine/functions/EzrokhiBrineViscosity.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/fluid/multifluid/CO2Brine/functions/FenghourCO2Viscosity.cpp b/src/coreComponents/constitutive/fluid/multifluid/CO2Brine/functions/FenghourCO2Viscosity.cpp index 11bc6522254..9664a1b3ec4 100644 --- a/src/coreComponents/constitutive/fluid/multifluid/CO2Brine/functions/FenghourCO2Viscosity.cpp +++ b/src/coreComponents/constitutive/fluid/multifluid/CO2Brine/functions/FenghourCO2Viscosity.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/fluid/multifluid/CO2Brine/functions/FenghourCO2Viscosity.hpp b/src/coreComponents/constitutive/fluid/multifluid/CO2Brine/functions/FenghourCO2Viscosity.hpp index ea490882910..889c1e39451 100644 --- a/src/coreComponents/constitutive/fluid/multifluid/CO2Brine/functions/FenghourCO2Viscosity.hpp +++ b/src/coreComponents/constitutive/fluid/multifluid/CO2Brine/functions/FenghourCO2Viscosity.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/fluid/multifluid/CO2Brine/functions/FlashModelBase.hpp b/src/coreComponents/constitutive/fluid/multifluid/CO2Brine/functions/FlashModelBase.hpp index acef1ec1ab0..ca568be573c 100644 --- a/src/coreComponents/constitutive/fluid/multifluid/CO2Brine/functions/FlashModelBase.hpp +++ b/src/coreComponents/constitutive/fluid/multifluid/CO2Brine/functions/FlashModelBase.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/fluid/multifluid/CO2Brine/functions/NoOpPVTFunction.hpp b/src/coreComponents/constitutive/fluid/multifluid/CO2Brine/functions/NoOpPVTFunction.hpp index c647a071f79..4be877cc7d7 100644 --- a/src/coreComponents/constitutive/fluid/multifluid/CO2Brine/functions/NoOpPVTFunction.hpp +++ b/src/coreComponents/constitutive/fluid/multifluid/CO2Brine/functions/NoOpPVTFunction.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/fluid/multifluid/CO2Brine/functions/PVTFunctionBase.hpp b/src/coreComponents/constitutive/fluid/multifluid/CO2Brine/functions/PVTFunctionBase.hpp index 135d7c899c4..877d097bf47 100644 --- a/src/coreComponents/constitutive/fluid/multifluid/CO2Brine/functions/PVTFunctionBase.hpp +++ b/src/coreComponents/constitutive/fluid/multifluid/CO2Brine/functions/PVTFunctionBase.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/fluid/multifluid/CO2Brine/functions/PVTFunctionHelpers.cpp b/src/coreComponents/constitutive/fluid/multifluid/CO2Brine/functions/PVTFunctionHelpers.cpp index a05497483eb..d38da4703bf 100644 --- a/src/coreComponents/constitutive/fluid/multifluid/CO2Brine/functions/PVTFunctionHelpers.cpp +++ b/src/coreComponents/constitutive/fluid/multifluid/CO2Brine/functions/PVTFunctionHelpers.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -45,7 +45,7 @@ BlackOilTables::readTable( string const & fileName, // Remove whitespace and end-of-line characters, if any str = stringutilities::trim( str, " \r" ); - // Remove # and -- (Eclipse-style) comments + // Remove # and -- comments str = stringutilities::removeStringAndFollowingContent( str, "#" ); str = stringutilities::removeStringAndFollowingContent( str, "--" ); diff --git a/src/coreComponents/constitutive/fluid/multifluid/CO2Brine/functions/PVTFunctionHelpers.hpp b/src/coreComponents/constitutive/fluid/multifluid/CO2Brine/functions/PVTFunctionHelpers.hpp index 9dde0d4cf39..91afd9c887d 100644 --- a/src/coreComponents/constitutive/fluid/multifluid/CO2Brine/functions/PVTFunctionHelpers.hpp +++ b/src/coreComponents/constitutive/fluid/multifluid/CO2Brine/functions/PVTFunctionHelpers.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/fluid/multifluid/CO2Brine/functions/PhillipsBrineDensity.cpp b/src/coreComponents/constitutive/fluid/multifluid/CO2Brine/functions/PhillipsBrineDensity.cpp index 017f5ab92f8..de646696998 100644 --- a/src/coreComponents/constitutive/fluid/multifluid/CO2Brine/functions/PhillipsBrineDensity.cpp +++ b/src/coreComponents/constitutive/fluid/multifluid/CO2Brine/functions/PhillipsBrineDensity.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/fluid/multifluid/CO2Brine/functions/PhillipsBrineDensity.hpp b/src/coreComponents/constitutive/fluid/multifluid/CO2Brine/functions/PhillipsBrineDensity.hpp index fbfa037be96..6a1147d57ee 100644 --- a/src/coreComponents/constitutive/fluid/multifluid/CO2Brine/functions/PhillipsBrineDensity.hpp +++ b/src/coreComponents/constitutive/fluid/multifluid/CO2Brine/functions/PhillipsBrineDensity.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/fluid/multifluid/CO2Brine/functions/PhillipsBrineViscosity.cpp b/src/coreComponents/constitutive/fluid/multifluid/CO2Brine/functions/PhillipsBrineViscosity.cpp index 8dd96a8a82d..a38a58cc664 100644 --- a/src/coreComponents/constitutive/fluid/multifluid/CO2Brine/functions/PhillipsBrineViscosity.cpp +++ b/src/coreComponents/constitutive/fluid/multifluid/CO2Brine/functions/PhillipsBrineViscosity.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/fluid/multifluid/CO2Brine/functions/PhillipsBrineViscosity.hpp b/src/coreComponents/constitutive/fluid/multifluid/CO2Brine/functions/PhillipsBrineViscosity.hpp index bdb6bfa0f5a..1f429e5d559 100644 --- a/src/coreComponents/constitutive/fluid/multifluid/CO2Brine/functions/PhillipsBrineViscosity.hpp +++ b/src/coreComponents/constitutive/fluid/multifluid/CO2Brine/functions/PhillipsBrineViscosity.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/fluid/multifluid/CO2Brine/functions/PureWaterProperties.cpp b/src/coreComponents/constitutive/fluid/multifluid/CO2Brine/functions/PureWaterProperties.cpp index a3cb6458b94..3d47411ea94 100644 --- a/src/coreComponents/constitutive/fluid/multifluid/CO2Brine/functions/PureWaterProperties.cpp +++ b/src/coreComponents/constitutive/fluid/multifluid/CO2Brine/functions/PureWaterProperties.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/fluid/multifluid/CO2Brine/functions/PureWaterProperties.hpp b/src/coreComponents/constitutive/fluid/multifluid/CO2Brine/functions/PureWaterProperties.hpp index 872983ce8b8..15d39c325ef 100644 --- a/src/coreComponents/constitutive/fluid/multifluid/CO2Brine/functions/PureWaterProperties.hpp +++ b/src/coreComponents/constitutive/fluid/multifluid/CO2Brine/functions/PureWaterProperties.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/fluid/multifluid/CO2Brine/functions/SpanWagnerCO2Density.cpp b/src/coreComponents/constitutive/fluid/multifluid/CO2Brine/functions/SpanWagnerCO2Density.cpp index 0ef520014a0..d2922a6a174 100644 --- a/src/coreComponents/constitutive/fluid/multifluid/CO2Brine/functions/SpanWagnerCO2Density.cpp +++ b/src/coreComponents/constitutive/fluid/multifluid/CO2Brine/functions/SpanWagnerCO2Density.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/fluid/multifluid/CO2Brine/functions/SpanWagnerCO2Density.hpp b/src/coreComponents/constitutive/fluid/multifluid/CO2Brine/functions/SpanWagnerCO2Density.hpp index f729064fcf0..fcaaff68ca2 100644 --- a/src/coreComponents/constitutive/fluid/multifluid/CO2Brine/functions/SpanWagnerCO2Density.hpp +++ b/src/coreComponents/constitutive/fluid/multifluid/CO2Brine/functions/SpanWagnerCO2Density.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/fluid/multifluid/CO2Brine/functions/WaterDensity.cpp b/src/coreComponents/constitutive/fluid/multifluid/CO2Brine/functions/WaterDensity.cpp index 41a047c11b5..bcfccaf9754 100644 --- a/src/coreComponents/constitutive/fluid/multifluid/CO2Brine/functions/WaterDensity.cpp +++ b/src/coreComponents/constitutive/fluid/multifluid/CO2Brine/functions/WaterDensity.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/fluid/multifluid/CO2Brine/functions/WaterDensity.hpp b/src/coreComponents/constitutive/fluid/multifluid/CO2Brine/functions/WaterDensity.hpp index 36cd4932661..2787b80f124 100644 --- a/src/coreComponents/constitutive/fluid/multifluid/CO2Brine/functions/WaterDensity.hpp +++ b/src/coreComponents/constitutive/fluid/multifluid/CO2Brine/functions/WaterDensity.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/fluid/multifluid/Layouts.hpp b/src/coreComponents/constitutive/fluid/multifluid/Layouts.hpp index 626f988104e..49a0431a292 100644 --- a/src/coreComponents/constitutive/fluid/multifluid/Layouts.hpp +++ b/src/coreComponents/constitutive/fluid/multifluid/Layouts.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/fluid/multifluid/MultiFluidBase.cpp b/src/coreComponents/constitutive/fluid/multifluid/MultiFluidBase.cpp index 1afc822b97b..506741cf8d4 100644 --- a/src/coreComponents/constitutive/fluid/multifluid/MultiFluidBase.cpp +++ b/src/coreComponents/constitutive/fluid/multifluid/MultiFluidBase.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/fluid/multifluid/MultiFluidBase.hpp b/src/coreComponents/constitutive/fluid/multifluid/MultiFluidBase.hpp index 97a3acff8a5..dbddad1cd41 100644 --- a/src/coreComponents/constitutive/fluid/multifluid/MultiFluidBase.hpp +++ b/src/coreComponents/constitutive/fluid/multifluid/MultiFluidBase.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/fluid/multifluid/MultiFluidConstants.hpp b/src/coreComponents/constitutive/fluid/multifluid/MultiFluidConstants.hpp index 191d49a90bb..1fbd6db0aca 100644 --- a/src/coreComponents/constitutive/fluid/multifluid/MultiFluidConstants.hpp +++ b/src/coreComponents/constitutive/fluid/multifluid/MultiFluidConstants.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/fluid/multifluid/MultiFluidFields.hpp b/src/coreComponents/constitutive/fluid/multifluid/MultiFluidFields.hpp index 4983406b17a..bc47e09d759 100644 --- a/src/coreComponents/constitutive/fluid/multifluid/MultiFluidFields.hpp +++ b/src/coreComponents/constitutive/fluid/multifluid/MultiFluidFields.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/fluid/multifluid/MultiFluidSelector.hpp b/src/coreComponents/constitutive/fluid/multifluid/MultiFluidSelector.hpp index 580a965061b..5636a98d99d 100644 --- a/src/coreComponents/constitutive/fluid/multifluid/MultiFluidSelector.hpp +++ b/src/coreComponents/constitutive/fluid/multifluid/MultiFluidSelector.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -53,6 +53,7 @@ void constitutiveUpdatePassThru( constitutive::MultiFluidBase const & fluid, #if !defined(GEOS_DEVICE_COMPILE) CO2BrineEzrokhiThermalFluid, CompositionalTwoPhaseLohrenzBrayClarkViscosity, + CompositionalThreePhaseLohrenzBrayClarkViscosity, #endif CompositionalTwoPhaseConstantViscosity >::execute( fluid, std::forward< LAMBDA >( lambda ) ); @@ -75,6 +76,7 @@ void constitutiveUpdatePassThru( constitutive::MultiFluidBase & fluid, #if !defined(GEOS_DEVICE_COMPILE) CO2BrineEzrokhiThermalFluid, CompositionalTwoPhaseLohrenzBrayClarkViscosity, + CompositionalThreePhaseLohrenzBrayClarkViscosity, #endif CompositionalTwoPhaseConstantViscosity >::execute( fluid, std::forward< LAMBDA >( lambda ) ); diff --git a/src/coreComponents/constitutive/fluid/multifluid/MultiFluidUtils.hpp b/src/coreComponents/constitutive/fluid/multifluid/MultiFluidUtils.hpp index 68283ef38c5..900561fa5e9 100644 --- a/src/coreComponents/constitutive/fluid/multifluid/MultiFluidUtils.hpp +++ b/src/coreComponents/constitutive/fluid/multifluid/MultiFluidUtils.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/fluid/multifluid/blackOil/BlackOilFluid.cpp b/src/coreComponents/constitutive/fluid/multifluid/blackOil/BlackOilFluid.cpp index 4a4118c1cbf..a1e44064dd1 100644 --- a/src/coreComponents/constitutive/fluid/multifluid/blackOil/BlackOilFluid.cpp +++ b/src/coreComponents/constitutive/fluid/multifluid/blackOil/BlackOilFluid.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -49,7 +49,7 @@ void BlackOilFluid::postInputInitialization() void BlackOilFluid::readInputDataFromTableFunctions() { - GEOS_THROW( GEOS_FMT( "{}: this option is not implemented yet, please provide PVT files in standard Eclipse format", getFullName() ), + GEOS_THROW( GEOS_FMT( "{}: this option is not implemented yet, please provide PVT files in standard text format", getFullName() ), InputError ); } diff --git a/src/coreComponents/constitutive/fluid/multifluid/blackOil/BlackOilFluid.hpp b/src/coreComponents/constitutive/fluid/multifluid/blackOil/BlackOilFluid.hpp index 112c677bad3..444330af0b0 100644 --- a/src/coreComponents/constitutive/fluid/multifluid/blackOil/BlackOilFluid.hpp +++ b/src/coreComponents/constitutive/fluid/multifluid/blackOil/BlackOilFluid.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -276,7 +276,7 @@ class BlackOilFluid : public BlackOilFluidBase virtual void readInputDataFromPVTFiles() override; /** - * @brief Read all the PVT table provided by the user in Eclipse format + * @brief Read all the PVT table provided by the user in text format * @param[in] oilTable the oil table data read from file * @param[in] oilSurfaceMassDensity the oil phase surface mass density * @param[in] oilSurfaceMolecularWeight the oil phase surface molecular weight diff --git a/src/coreComponents/constitutive/fluid/multifluid/blackOil/BlackOilFluidBase.cpp b/src/coreComponents/constitutive/fluid/multifluid/blackOil/BlackOilFluidBase.cpp index 0e86a3e7777..45e40461025 100644 --- a/src/coreComponents/constitutive/fluid/multifluid/blackOil/BlackOilFluidBase.cpp +++ b/src/coreComponents/constitutive/fluid/multifluid/blackOil/BlackOilFluidBase.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/fluid/multifluid/blackOil/BlackOilFluidBase.hpp b/src/coreComponents/constitutive/fluid/multifluid/blackOil/BlackOilFluidBase.hpp index dbca6083fca..a5f4f9b7569 100644 --- a/src/coreComponents/constitutive/fluid/multifluid/blackOil/BlackOilFluidBase.hpp +++ b/src/coreComponents/constitutive/fluid/multifluid/blackOil/BlackOilFluidBase.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -144,7 +144,7 @@ class BlackOilFluidBase : public MultiFluidBase virtual void readInputDataFromTableFunctions() = 0; /** - * @brief Read all the PVT table provided by the user in Eclipse format + * @brief Read all the PVT table provided by the user in text format */ virtual void readInputDataFromPVTFiles() = 0; diff --git a/src/coreComponents/constitutive/fluid/multifluid/blackOil/DeadOilFluid.cpp b/src/coreComponents/constitutive/fluid/multifluid/blackOil/DeadOilFluid.cpp index 91162808882..ef8888c16d1 100644 --- a/src/coreComponents/constitutive/fluid/multifluid/blackOil/DeadOilFluid.cpp +++ b/src/coreComponents/constitutive/fluid/multifluid/blackOil/DeadOilFluid.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/fluid/multifluid/blackOil/DeadOilFluid.hpp b/src/coreComponents/constitutive/fluid/multifluid/blackOil/DeadOilFluid.hpp index 69311e692f2..0b87bbd7d6a 100644 --- a/src/coreComponents/constitutive/fluid/multifluid/blackOil/DeadOilFluid.hpp +++ b/src/coreComponents/constitutive/fluid/multifluid/blackOil/DeadOilFluid.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -148,7 +148,7 @@ class DeadOilFluid : public BlackOilFluidBase virtual void readInputDataFromTableFunctions() override; /** - * @brief Read all the PVT table provided by the user in Eclipse format + * @brief Read all the PVT table provided by the user in text format */ virtual void readInputDataFromPVTFiles() override; diff --git a/src/coreComponents/constitutive/fluid/multifluid/blackOil/PVTOData.cpp b/src/coreComponents/constitutive/fluid/multifluid/blackOil/PVTOData.cpp index 1a36a2e124b..a8d96c41d82 100644 --- a/src/coreComponents/constitutive/fluid/multifluid/blackOil/PVTOData.cpp +++ b/src/coreComponents/constitutive/fluid/multifluid/blackOil/PVTOData.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/fluid/multifluid/blackOil/PVTOData.hpp b/src/coreComponents/constitutive/fluid/multifluid/blackOil/PVTOData.hpp index cec6671cb93..d73bfb702e7 100644 --- a/src/coreComponents/constitutive/fluid/multifluid/blackOil/PVTOData.hpp +++ b/src/coreComponents/constitutive/fluid/multifluid/blackOil/PVTOData.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/fluid/multifluid/compositional/CompositionalMultiphaseFluid.cpp b/src/coreComponents/constitutive/fluid/multifluid/compositional/CompositionalMultiphaseFluid.cpp index aa91a802388..493c92db612 100644 --- a/src/coreComponents/constitutive/fluid/multifluid/compositional/CompositionalMultiphaseFluid.cpp +++ b/src/coreComponents/constitutive/fluid/multifluid/compositional/CompositionalMultiphaseFluid.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -22,6 +22,7 @@ #include "constitutive/fluid/multifluid/CO2Brine/functions/PVTFunctionHelpers.hpp" #include "constitutive/fluid/multifluid/MultiFluidFields.hpp" #include "codingUtilities/Utilities.hpp" +#include "common/format/StringUtilities.hpp" namespace geos { @@ -51,6 +52,7 @@ CompositionalMultiphaseFluid( string const & name, Group * const parent ) m_parameters( createModelParameters() ) { using InputFlags = dataRepository::InputFlags; + using RestartFlags = dataRepository::RestartFlags; getWrapperBase( viewKeyStruct::componentNamesString() ).setInputFlag( InputFlags::REQUIRED ); getWrapperBase( viewKeyStruct::componentMolarWeightString() ).setInputFlag( InputFlags::REQUIRED ); @@ -80,13 +82,18 @@ CompositionalMultiphaseFluid( string const & name, Group * const parent ) // Link parameters specific to each model m_parameters->registerParameters( this ); + + // Register extra wrappers to enable auto-cloning + registerWrapper( "phaseOrder", &m_phaseOrder ) + .setSizedFromParent( 0 ) + .setRestartFlags( RestartFlags::NO_WRITE ); } template< typename FLASH, typename PHASE1, typename PHASE2, typename PHASE3 > integer CompositionalMultiphaseFluid< FLASH, PHASE1, PHASE2, PHASE3 >::getWaterPhaseIndex() const { - string const expectedWaterPhaseNames[] = { "water" }; - return PVTProps::PVTFunctionHelpers::findName( m_phaseNames, expectedWaterPhaseNames, viewKeyStruct::phaseNamesString() ); + integer const aqueous = static_cast< integer >(PhaseType::AQUEOUS); + return m_phaseOrder.size() > aqueous ? m_phaseOrder[aqueous] : -1; } template< typename FLASH, typename PHASE1, typename PHASE2, typename PHASE3 > @@ -170,6 +177,12 @@ void CompositionalMultiphaseFluid< FLASH, PHASE1, PHASE2, PHASE3 >::postInputIni } } + // Determine the phase ordering + m_phaseOrder.resize( 3 ); + m_phaseOrder[PhaseType::LIQUID] = findPhaseIndex( "oil,liq,liquid" ); + m_phaseOrder[PhaseType::VAPOUR] = findPhaseIndex( "gas,vap,vapor,vapour" ); + m_phaseOrder[PhaseType::AQUEOUS] = findPhaseIndex( "wat,water,aqueous" ); + m_parameters->postInputInitialization( this, *m_componentProperties ); } @@ -210,6 +223,7 @@ CompositionalMultiphaseFluid< FLASH, PHASE1, PHASE2, PHASE3 >::createKernelWrapp *m_phase1, *m_phase2, *m_phase3, + m_phaseOrder.toViewConst(), m_componentMolarWeight, m_useMass, m_phaseFraction.toView(), @@ -247,6 +261,22 @@ void CompositionalMultiphaseFluid< FLASH, PHASE1, PHASE2, PHASE3 >::createModels *m_parameters ); } +template< typename FLASH, typename PHASE1, typename PHASE2, typename PHASE3 > +integer CompositionalMultiphaseFluid< FLASH, PHASE1, PHASE2, PHASE3 >::findPhaseIndex( string names ) const +{ + auto const nameContainer = stringutilities::tokenize( names, ",", true, false ); + + for( integer ip = 0; ip < numFluidPhases(); ++ip ) + { + std::string const phaseName = stringutilities::toLower( m_phaseNames[ip] ); + if( std::find( nameContainer.begin(), nameContainer.end(), phaseName ) != nameContainer.end()) + { + return ip; + } + } + return -1; +} + // Create the fluid models template< typename FLASH, typename PHASE1, typename PHASE2, typename PHASE3 > std::unique_ptr< compositional::ModelParameters > @@ -269,6 +299,11 @@ template class CompositionalMultiphaseFluid< compositional::NegativeTwoPhaseFlashModel, compositional::PhaseModel< compositional::CompositionalDensity, compositional::LohrenzBrayClarkViscosity, compositional::NullModel >, compositional::PhaseModel< compositional::CompositionalDensity, compositional::LohrenzBrayClarkViscosity, compositional::NullModel > >; +template class CompositionalMultiphaseFluid< + compositional::ImmiscibleWaterFlashModel, + compositional::PhaseModel< compositional::CompositionalDensity, compositional::LohrenzBrayClarkViscosity, compositional::NullModel >, + compositional::PhaseModel< compositional::CompositionalDensity, compositional::LohrenzBrayClarkViscosity, compositional::NullModel >, + compositional::PhaseModel< compositional::ImmiscibleWaterDensity, compositional::ImmiscibleWaterViscosity, compositional::NullModel > >; REGISTER_CATALOG_ENTRY( ConstitutiveBase, CompositionalTwoPhaseConstantViscosity, @@ -280,6 +315,11 @@ REGISTER_CATALOG_ENTRY( ConstitutiveBase, string const &, dataRepository::Group * const ) +REGISTER_CATALOG_ENTRY( ConstitutiveBase, + CompositionalThreePhaseLohrenzBrayClarkViscosity, + string const &, + dataRepository::Group * const ) + } // namespace constitutive } // namespace geos diff --git a/src/coreComponents/constitutive/fluid/multifluid/compositional/CompositionalMultiphaseFluid.hpp b/src/coreComponents/constitutive/fluid/multifluid/compositional/CompositionalMultiphaseFluid.hpp index a8f846aac39..e4bb5789175 100644 --- a/src/coreComponents/constitutive/fluid/multifluid/compositional/CompositionalMultiphaseFluid.hpp +++ b/src/coreComponents/constitutive/fluid/multifluid/compositional/CompositionalMultiphaseFluid.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -23,6 +23,9 @@ #include "constitutive/fluid/multifluid/compositional/CompositionalMultiphaseFluidUpdates.hpp" #include "constitutive/fluid/multifluid/compositional/models/ConstantViscosity.hpp" #include "constitutive/fluid/multifluid/compositional/models/CompositionalDensity.hpp" +#include "constitutive/fluid/multifluid/compositional/models/ImmiscibleWaterDensity.hpp" +#include "constitutive/fluid/multifluid/compositional/models/ImmiscibleWaterFlashModel.hpp" +#include "constitutive/fluid/multifluid/compositional/models/ImmiscibleWaterViscosity.hpp" #include "constitutive/fluid/multifluid/compositional/models/LohrenzBrayClarkViscosity.hpp" #include "constitutive/fluid/multifluid/compositional/models/NegativeTwoPhaseFlashModel.hpp" #include "constitutive/fluid/multifluid/compositional/models/ModelParameters.hpp" @@ -110,15 +113,27 @@ class CompositionalMultiphaseFluid : public MultiFluidBase virtual void resizeFields( localIndex const size, localIndex const numPts ) override; + enum PhaseType : integer + { + LIQUID = 0, + VAPOUR = 1, + AQUEOUS = 2, + }; + private: // Create the fluid models void createModels(); + integer findPhaseIndex( string names ) const; + static std::unique_ptr< compositional::ModelParameters > createModelParameters(); // Flash model std::unique_ptr< FLASH > m_flash{}; + // Phase ordering + array1d< integer > m_phaseOrder; + // Phase models std::unique_ptr< PHASE1 > m_phase1{}; std::unique_ptr< PHASE2 > m_phase2{}; @@ -142,6 +157,11 @@ using CompositionalTwoPhaseLohrenzBrayClarkViscosity = CompositionalMultiphaseFl compositional::NegativeTwoPhaseFlashModel, compositional::PhaseModel< compositional::CompositionalDensity, compositional::LohrenzBrayClarkViscosity, compositional::NullModel >, compositional::PhaseModel< compositional::CompositionalDensity, compositional::LohrenzBrayClarkViscosity, compositional::NullModel > >; +using CompositionalThreePhaseLohrenzBrayClarkViscosity = CompositionalMultiphaseFluid< + compositional::ImmiscibleWaterFlashModel, + compositional::PhaseModel< compositional::CompositionalDensity, compositional::LohrenzBrayClarkViscosity, compositional::NullModel >, + compositional::PhaseModel< compositional::CompositionalDensity, compositional::LohrenzBrayClarkViscosity, compositional::NullModel >, + compositional::PhaseModel< compositional::ImmiscibleWaterDensity, compositional::ImmiscibleWaterViscosity, compositional::NullModel > >; } /* namespace constitutive */ diff --git a/src/coreComponents/constitutive/fluid/multifluid/compositional/CompositionalMultiphaseFluidPVTPackage.cpp b/src/coreComponents/constitutive/fluid/multifluid/compositional/CompositionalMultiphaseFluidPVTPackage.cpp index 0edd0113625..9aea320884d 100644 --- a/src/coreComponents/constitutive/fluid/multifluid/compositional/CompositionalMultiphaseFluidPVTPackage.cpp +++ b/src/coreComponents/constitutive/fluid/multifluid/compositional/CompositionalMultiphaseFluidPVTPackage.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/fluid/multifluid/compositional/CompositionalMultiphaseFluidPVTPackage.hpp b/src/coreComponents/constitutive/fluid/multifluid/compositional/CompositionalMultiphaseFluidPVTPackage.hpp index e6fa1574e55..1b5d9b6db4a 100644 --- a/src/coreComponents/constitutive/fluid/multifluid/compositional/CompositionalMultiphaseFluidPVTPackage.hpp +++ b/src/coreComponents/constitutive/fluid/multifluid/compositional/CompositionalMultiphaseFluidPVTPackage.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/fluid/multifluid/compositional/CompositionalMultiphaseFluidUpdates.cpp b/src/coreComponents/constitutive/fluid/multifluid/compositional/CompositionalMultiphaseFluidUpdates.cpp index 1ef2d44b8f7..299dd2eb111 100644 --- a/src/coreComponents/constitutive/fluid/multifluid/compositional/CompositionalMultiphaseFluidUpdates.cpp +++ b/src/coreComponents/constitutive/fluid/multifluid/compositional/CompositionalMultiphaseFluidUpdates.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/fluid/multifluid/compositional/CompositionalMultiphaseFluidUpdates.hpp b/src/coreComponents/constitutive/fluid/multifluid/compositional/CompositionalMultiphaseFluidUpdates.hpp index 1567f4b4c46..ee3b4ee1dd0 100644 --- a/src/coreComponents/constitutive/fluid/multifluid/compositional/CompositionalMultiphaseFluidUpdates.hpp +++ b/src/coreComponents/constitutive/fluid/multifluid/compositional/CompositionalMultiphaseFluidUpdates.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -46,6 +46,7 @@ class CompositionalMultiphaseFluidUpdates final : public MultiFluidBase::KernelW PHASE1 const & phase1, PHASE2 const & phase2, PHASE3 const & phase3, + arrayView1d< integer const > const & phaseOrder, arrayView1d< real64 const > const & componentMolarWeight, bool const useMass, MultiFluidBase::PhaseProp::ViewType phaseFrac, @@ -122,6 +123,9 @@ class CompositionalMultiphaseFluidUpdates final : public MultiFluidBase::KernelW // Flash kernel wrapper typename FLASH::KernelWrapper m_flash; + // The ordering of phases + arrayView1d< integer const > const m_phaseOrder; + // Phase model kernel wrappers typename PHASE1::KernelWrapper m_phase1; typename PHASE2::KernelWrapper m_phase2; @@ -138,6 +142,7 @@ CompositionalMultiphaseFluidUpdates( compositional::ComponentProperties const & PHASE1 const & phase1, PHASE2 const & phase2, PHASE3 const & phase3, + arrayView1d< integer const > const & phaseOrder, arrayView1d< real64 const > const & componentMolarWeight, bool const useMass, MultiFluidBase::PhaseProp::ViewType phaseFrac, @@ -161,6 +166,7 @@ CompositionalMultiphaseFluidUpdates( compositional::ComponentProperties const & std::move( totalDensity ) ), m_componentProperties( componentProperties.createKernelWrapper() ), m_flash( flash.createKernelWrapper() ), + m_phaseOrder( phaseOrder ), m_phase1( phase1.createKernelWrapper() ), m_phase2( phase2.createKernelWrapper() ), m_phase3( phase3.createKernelWrapper() ), @@ -262,31 +268,31 @@ CompositionalMultiphaseFluidUpdates< FLASH, PHASE1, PHASE2, PHASE3 >::compute( m_phase1.density.compute( m_componentProperties, pressure, temperature, - phaseCompFrac.value[0].toSliceConst(), - phaseDens.value[0], - phaseDens.derivs[0], - phaseMassDensity.value[0], - phaseMassDensity.derivs[0], + phaseCompFrac.value[m_phaseOrder[0]].toSliceConst(), + phaseDens.value[m_phaseOrder[0]], + phaseDens.derivs[m_phaseOrder[0]], + phaseMassDensity.value[m_phaseOrder[0]], + phaseMassDensity.derivs[m_phaseOrder[0]], m_useMass ); m_phase2.density.compute( m_componentProperties, pressure, temperature, - phaseCompFrac.value[1].toSliceConst(), - phaseDens.value[1], - phaseDens.derivs[1], - phaseMassDensity.value[1], - phaseMassDensity.derivs[1], + phaseCompFrac.value[m_phaseOrder[1]].toSliceConst(), + phaseDens.value[m_phaseOrder[1]], + phaseDens.derivs[m_phaseOrder[1]], + phaseMassDensity.value[m_phaseOrder[1]], + phaseMassDensity.derivs[m_phaseOrder[1]], m_useMass ); if constexpr (2 < FLASH::KernelWrapper::getNumberOfPhases()) { m_phase3.density.compute( m_componentProperties, pressure, temperature, - phaseCompFrac.value[2].toSliceConst(), - phaseDens.value[2], - phaseDens.derivs[2], - phaseMassDensity.value[2], - phaseMassDensity.derivs[2], + phaseCompFrac.value[m_phaseOrder[2]].toSliceConst(), + phaseDens.value[m_phaseOrder[2]], + phaseDens.derivs[m_phaseOrder[2]], + phaseMassDensity.value[m_phaseOrder[2]], + phaseMassDensity.derivs[m_phaseOrder[2]], m_useMass ); } @@ -294,31 +300,31 @@ CompositionalMultiphaseFluidUpdates< FLASH, PHASE1, PHASE2, PHASE3 >::compute( m_phase1.viscosity.compute( m_componentProperties, pressure, temperature, - phaseCompFrac.value[0].toSliceConst(), - phaseMassDensity.value[0], - phaseMassDensity.derivs[0].toSliceConst(), - phaseVisc.value[0], - phaseVisc.derivs[0], + phaseCompFrac.value[m_phaseOrder[0]].toSliceConst(), + phaseMassDensity.value[m_phaseOrder[0]], + phaseMassDensity.derivs[m_phaseOrder[0]].toSliceConst(), + phaseVisc.value[m_phaseOrder[0]], + phaseVisc.derivs[m_phaseOrder[0]], m_useMass ); m_phase2.viscosity.compute( m_componentProperties, pressure, temperature, - phaseCompFrac.value[1].toSliceConst(), - phaseMassDensity.value[1], - phaseMassDensity.derivs[1].toSliceConst(), - phaseVisc.value[1], - phaseVisc.derivs[1], + phaseCompFrac.value[m_phaseOrder[1]].toSliceConst(), + phaseMassDensity.value[m_phaseOrder[1]], + phaseMassDensity.derivs[m_phaseOrder[1]].toSliceConst(), + phaseVisc.value[m_phaseOrder[1]], + phaseVisc.derivs[m_phaseOrder[1]], m_useMass ); if constexpr (2 < FLASH::KernelWrapper::getNumberOfPhases()) { m_phase3.viscosity.compute( m_componentProperties, pressure, temperature, - phaseCompFrac.value[2].toSliceConst(), - phaseMassDensity.value[2], - phaseMassDensity.derivs[2].toSliceConst(), - phaseVisc.value[2], - phaseVisc.derivs[2], + phaseCompFrac.value[m_phaseOrder[2]].toSliceConst(), + phaseMassDensity.value[m_phaseOrder[2]], + phaseMassDensity.derivs[m_phaseOrder[2]].toSliceConst(), + phaseVisc.value[m_phaseOrder[2]], + phaseVisc.derivs[m_phaseOrder[2]], m_useMass ); } diff --git a/src/coreComponents/constitutive/fluid/multifluid/compositional/functions/CompositionalProperties.hpp b/src/coreComponents/constitutive/fluid/multifluid/compositional/functions/CompositionalProperties.hpp index d58252d405f..c0bfac86dda 100644 --- a/src/coreComponents/constitutive/fluid/multifluid/compositional/functions/CompositionalProperties.hpp +++ b/src/coreComponents/constitutive/fluid/multifluid/compositional/functions/CompositionalProperties.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/fluid/multifluid/compositional/functions/CompositionalPropertiesImpl.hpp b/src/coreComponents/constitutive/fluid/multifluid/compositional/functions/CompositionalPropertiesImpl.hpp index d7ac72c2912..9c6a39b30b3 100644 --- a/src/coreComponents/constitutive/fluid/multifluid/compositional/functions/CompositionalPropertiesImpl.hpp +++ b/src/coreComponents/constitutive/fluid/multifluid/compositional/functions/CompositionalPropertiesImpl.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/fluid/multifluid/compositional/functions/CubicEOSPhaseModel.hpp b/src/coreComponents/constitutive/fluid/multifluid/compositional/functions/CubicEOSPhaseModel.hpp index ac6d7efc240..faa8d4496bd 100644 --- a/src/coreComponents/constitutive/fluid/multifluid/compositional/functions/CubicEOSPhaseModel.hpp +++ b/src/coreComponents/constitutive/fluid/multifluid/compositional/functions/CubicEOSPhaseModel.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/fluid/multifluid/compositional/functions/FugacityCalculator.hpp b/src/coreComponents/constitutive/fluid/multifluid/compositional/functions/FugacityCalculator.hpp index 758a4e8ec89..2fa6af3a6fd 100644 --- a/src/coreComponents/constitutive/fluid/multifluid/compositional/functions/FugacityCalculator.hpp +++ b/src/coreComponents/constitutive/fluid/multifluid/compositional/functions/FugacityCalculator.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/fluid/multifluid/compositional/functions/KValueInitialization.hpp b/src/coreComponents/constitutive/fluid/multifluid/compositional/functions/KValueInitialization.hpp index 7135d944906..f19219aeb94 100644 --- a/src/coreComponents/constitutive/fluid/multifluid/compositional/functions/KValueInitialization.hpp +++ b/src/coreComponents/constitutive/fluid/multifluid/compositional/functions/KValueInitialization.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/fluid/multifluid/compositional/functions/NegativeTwoPhaseFlash.hpp b/src/coreComponents/constitutive/fluid/multifluid/compositional/functions/NegativeTwoPhaseFlash.hpp index f492995b1ad..2af75b9b4b9 100644 --- a/src/coreComponents/constitutive/fluid/multifluid/compositional/functions/NegativeTwoPhaseFlash.hpp +++ b/src/coreComponents/constitutive/fluid/multifluid/compositional/functions/NegativeTwoPhaseFlash.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/fluid/multifluid/compositional/functions/RachfordRice.hpp b/src/coreComponents/constitutive/fluid/multifluid/compositional/functions/RachfordRice.hpp index f12b715cbe7..4b997c2c45b 100644 --- a/src/coreComponents/constitutive/fluid/multifluid/compositional/functions/RachfordRice.hpp +++ b/src/coreComponents/constitutive/fluid/multifluid/compositional/functions/RachfordRice.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/fluid/multifluid/compositional/functions/StabilityTest.hpp b/src/coreComponents/constitutive/fluid/multifluid/compositional/functions/StabilityTest.hpp index 95577d6a2c4..2317bcfd342 100644 --- a/src/coreComponents/constitutive/fluid/multifluid/compositional/functions/StabilityTest.hpp +++ b/src/coreComponents/constitutive/fluid/multifluid/compositional/functions/StabilityTest.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/fluid/multifluid/compositional/models/ComponentProperties.hpp b/src/coreComponents/constitutive/fluid/multifluid/compositional/models/ComponentProperties.hpp index 2d92185454f..e4a99359228 100644 --- a/src/coreComponents/constitutive/fluid/multifluid/compositional/models/ComponentProperties.hpp +++ b/src/coreComponents/constitutive/fluid/multifluid/compositional/models/ComponentProperties.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/fluid/multifluid/compositional/models/CompositionalDensity.cpp b/src/coreComponents/constitutive/fluid/multifluid/compositional/models/CompositionalDensity.cpp index 6fe6b1a11e7..99802799c43 100644 --- a/src/coreComponents/constitutive/fluid/multifluid/compositional/models/CompositionalDensity.cpp +++ b/src/coreComponents/constitutive/fluid/multifluid/compositional/models/CompositionalDensity.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/fluid/multifluid/compositional/models/CompositionalDensity.hpp b/src/coreComponents/constitutive/fluid/multifluid/compositional/models/CompositionalDensity.hpp index 9fce5bdd029..beb58c14fb2 100644 --- a/src/coreComponents/constitutive/fluid/multifluid/compositional/models/CompositionalDensity.hpp +++ b/src/coreComponents/constitutive/fluid/multifluid/compositional/models/CompositionalDensity.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/fluid/multifluid/compositional/models/ConstantViscosity.cpp b/src/coreComponents/constitutive/fluid/multifluid/compositional/models/ConstantViscosity.cpp index 76c565f51a7..a3239a34f21 100644 --- a/src/coreComponents/constitutive/fluid/multifluid/compositional/models/ConstantViscosity.cpp +++ b/src/coreComponents/constitutive/fluid/multifluid/compositional/models/ConstantViscosity.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/fluid/multifluid/compositional/models/ConstantViscosity.hpp b/src/coreComponents/constitutive/fluid/multifluid/compositional/models/ConstantViscosity.hpp index d7fabd362d6..cee73c0ae1c 100644 --- a/src/coreComponents/constitutive/fluid/multifluid/compositional/models/ConstantViscosity.hpp +++ b/src/coreComponents/constitutive/fluid/multifluid/compositional/models/ConstantViscosity.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/fluid/multifluid/compositional/models/CriticalVolume.cpp b/src/coreComponents/constitutive/fluid/multifluid/compositional/models/CriticalVolume.cpp index e62ddefe077..95d147af02f 100644 --- a/src/coreComponents/constitutive/fluid/multifluid/compositional/models/CriticalVolume.cpp +++ b/src/coreComponents/constitutive/fluid/multifluid/compositional/models/CriticalVolume.cpp @@ -2,10 +2,11 @@ * ------------------------------------------------------------------------------------------------------------ * SPDX-License-Identifier: LGPL-2.1-only * - * Copyright (c) 2018-2020 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2020 The Board of Trustees of the Leland Stanford Junior University - * Copyright (c) 2018-2020 TotalEnergies - * Copyright (c) 2019- GEOSX Contributors + * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC + * Copyright (c) 2018-2024 TotalEnergies + * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University + * Copyright (c) 2023-2024 Chevron + * Copyright (c) 2019- GEOS/GEOSX Contributors * All rights reserved * * See top level LICENSE, COPYRIGHT, CONTRIBUTORS, NOTICE, and ACKNOWLEDGEMENTS files for details. diff --git a/src/coreComponents/constitutive/fluid/multifluid/compositional/models/CriticalVolume.hpp b/src/coreComponents/constitutive/fluid/multifluid/compositional/models/CriticalVolume.hpp index c191e3cad2c..3221e403eca 100644 --- a/src/coreComponents/constitutive/fluid/multifluid/compositional/models/CriticalVolume.hpp +++ b/src/coreComponents/constitutive/fluid/multifluid/compositional/models/CriticalVolume.hpp @@ -2,10 +2,11 @@ * ------------------------------------------------------------------------------------------------------------ * SPDX-License-Identifier: LGPL-2.1-only * - * Copyright (c) 2018-2020 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2020 The Board of Trustees of the Leland Stanford Junior University - * Copyright (c) 2018-2020 TotalEnergies - * Copyright (c) 2019- GEOSX Contributors + * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC + * Copyright (c) 2018-2024 TotalEnergies + * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University + * Copyright (c) 2023-2024 Chevron + * Copyright (c) 2019- GEOS/GEOSX Contributors * All rights reserved * * See top level LICENSE, COPYRIGHT, CONTRIBUTORS, NOTICE, and ACKNOWLEDGEMENTS files for details. diff --git a/src/coreComponents/constitutive/fluid/multifluid/compositional/models/EquationOfState.hpp b/src/coreComponents/constitutive/fluid/multifluid/compositional/models/EquationOfState.hpp index f88b8608b39..b27dd249318 100644 --- a/src/coreComponents/constitutive/fluid/multifluid/compositional/models/EquationOfState.hpp +++ b/src/coreComponents/constitutive/fluid/multifluid/compositional/models/EquationOfState.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/fluid/multifluid/compositional/models/FunctionBase.hpp b/src/coreComponents/constitutive/fluid/multifluid/compositional/models/FunctionBase.hpp index 60d15385144..2bb0299e24c 100644 --- a/src/coreComponents/constitutive/fluid/multifluid/compositional/models/FunctionBase.hpp +++ b/src/coreComponents/constitutive/fluid/multifluid/compositional/models/FunctionBase.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/fluid/multifluid/compositional/models/ImmiscibleWaterDensity.cpp b/src/coreComponents/constitutive/fluid/multifluid/compositional/models/ImmiscibleWaterDensity.cpp new file mode 100644 index 00000000000..22bb8d40b9d --- /dev/null +++ b/src/coreComponents/constitutive/fluid/multifluid/compositional/models/ImmiscibleWaterDensity.cpp @@ -0,0 +1,82 @@ +/* + * ------------------------------------------------------------------------------------------------------------ + * SPDX-License-Identifier: LGPL-2.1-only + * + * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC + * Copyright (c) 2018-2024 TotalEnergies + * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University + * Copyright (c) 2018-2024 Chevron + * Copyright (c) 2019- GEOS/GEOSX Contributors + * All rights reserved + * + * See top level LICENSE, COPYRIGHT, CONTRIBUTORS, NOTICE, and ACKNOWLEDGEMENTS files for details. + * ------------------------------------------------------------------------------------------------------------ + */ + +/** + * @file ImmiscibleWaterDensity.cpp + */ + +#include "ImmiscibleWaterDensity.hpp" +#include "ImmiscibleWaterParameters.hpp" +#include "dataRepository/InputFlags.hpp" + +namespace geos +{ + +namespace constitutive +{ + +namespace compositional +{ + +ImmiscibleWaterDensityUpdate::ImmiscibleWaterDensityUpdate( real64 const waterMolecularWeight, + real64 const referencePressure, + real64 const referenceTemperature, + real64 const density, + real64 const compressibility, + real64 const expansionCoefficient ): + m_waterMolecularWeight( waterMolecularWeight ), + m_referencePressure( referencePressure ), + m_referenceTemperature( referenceTemperature ), + m_density( density ), + m_compressibility( compressibility ), + m_expansionCoefficient( expansionCoefficient ) +{} + +ImmiscibleWaterDensity::ImmiscibleWaterDensity( string const & name, + ComponentProperties const & componentProperties, + integer const phaseIndex, + ModelParameters const & modelParameters ): + FunctionBase( name, componentProperties ), + m_parameters( modelParameters ) +{ + GEOS_UNUSED_VAR( phaseIndex ); + integer const h2oIndex = ImmiscibleWaterParameters::getWaterComponentIndex( componentProperties ); + GEOS_THROW_IF_LT_MSG( h2oIndex, 0, "Water component not found", InputError ); + m_waterMolecularWeight = componentProperties.getComponentMolarWeight()[h2oIndex]; +} + +ImmiscibleWaterDensity::KernelWrapper +ImmiscibleWaterDensity::createKernelWrapper() const +{ + ImmiscibleWaterParameters const * waterParameters = m_parameters.get< ImmiscibleWaterParameters >(); + return KernelWrapper( m_waterMolecularWeight, + waterParameters->m_waterReferencePressure, + waterParameters->m_waterReferenceTemperature, + waterParameters->m_waterDensity, + waterParameters->m_waterCompressibility, + waterParameters->m_waterExpansionCoefficient ); +} + +std::unique_ptr< ModelParameters > +ImmiscibleWaterDensity::createParameters( std::unique_ptr< ModelParameters > parameters ) +{ + return ImmiscibleWaterParameters::create( std::move( parameters ) ); +} + +} // namespace compositional + +} // namespace constitutive + +} // namespace geos diff --git a/src/coreComponents/constitutive/fluid/multifluid/compositional/models/ImmiscibleWaterDensity.hpp b/src/coreComponents/constitutive/fluid/multifluid/compositional/models/ImmiscibleWaterDensity.hpp new file mode 100644 index 00000000000..8afadca5bbf --- /dev/null +++ b/src/coreComponents/constitutive/fluid/multifluid/compositional/models/ImmiscibleWaterDensity.hpp @@ -0,0 +1,140 @@ +/* + * ------------------------------------------------------------------------------------------------------------ + * SPDX-License-Identifier: LGPL-2.1-only + * + * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC + * Copyright (c) 2018-2024 TotalEnergies + * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University + * Copyright (c) 2018-2024 Chevron + * Copyright (c) 2019- GEOS/GEOSX Contributors + * All rights reserved + * + * See top level LICENSE, COPYRIGHT, CONTRIBUTORS, NOTICE, and ACKNOWLEDGEMENTS files for details. + * ------------------------------------------------------------------------------------------------------------ + */ + +/** + * @file ImmiscibleWaterDensity.cpp + */ + +#ifndef GEOS_CONSTITUTIVE_FLUID_MULTIFLUID_COMPOSITIONAL_MODELS_IMMISCIBLEWATERDENSITY_HPP_ +#define GEOS_CONSTITUTIVE_FLUID_MULTIFLUID_COMPOSITIONAL_MODELS_IMMISCIBLEWATERDENSITY_HPP_ + +#include "FunctionBase.hpp" +#include "constitutive/fluid/multifluid/Layouts.hpp" + +namespace geos +{ + +namespace constitutive +{ + +namespace compositional +{ + +class ImmiscibleWaterDensityUpdate final : public FunctionBaseUpdate +{ + using Deriv = geos::constitutive::multifluid::DerivativeOffset; +public: + ImmiscibleWaterDensityUpdate( real64 const waterMolecularWeight, + real64 const referencePressure, + real64 const referenceTemperature, + real64 const density, + real64 const compressibility, + real64 const expansionCoefficient ); + + template< integer USD1, integer USD2 > + GEOS_HOST_DEVICE + void compute( ComponentProperties::KernelWrapper const & componentProperties, + real64 const & pressure, + real64 const & temperature, + arraySlice1d< real64 const, USD1 > const & phaseComposition, + real64 & molarDensity, + arraySlice1d< real64, USD2 > const & dMolarDensity, + real64 & massDensity, + arraySlice1d< real64, USD2 > const & dMassDensity, + bool useMass ) const; + +private: + real64 const m_waterMolecularWeight; + real64 const m_referencePressure; + real64 const m_referenceTemperature; + real64 const m_density; + real64 const m_compressibility; + real64 const m_expansionCoefficient; +}; + +class ImmiscibleWaterDensity : public FunctionBase +{ +public: + ImmiscibleWaterDensity( string const & name, + ComponentProperties const & componentProperties, + integer const phaseIndex, + ModelParameters const & modelParameters ); + + static string catalogName() { return "ImmiscibleWaterDensity"; } + + virtual FunctionType functionType() const override + { + return FunctionType::DENSITY; + } + + /// Type of kernel wrapper for in-kernel update + using KernelWrapper = ImmiscibleWaterDensityUpdate; + + /** + * @brief Create an update kernel wrapper. + * @return the wrapper + */ + KernelWrapper createKernelWrapper() const; + + // Create parameters unique to this model + static std::unique_ptr< ModelParameters > createParameters( std::unique_ptr< ModelParameters > parameters ); + +private: + ModelParameters const & m_parameters; + real64 m_waterMolecularWeight{0.0}; +}; + +template< integer USD1, integer USD2 > +GEOS_HOST_DEVICE +void ImmiscibleWaterDensityUpdate::compute( + ComponentProperties::KernelWrapper const & componentProperties, + real64 const & pressure, + real64 const & temperature, + arraySlice1d< real64 const, USD1 > const & phaseComposition, + real64 & molarDensity, + arraySlice1d< real64, USD2 > const & dMolarDensity, + real64 & massDensity, + arraySlice1d< real64, USD2 > const & dMassDensity, + bool useMass ) const +{ + GEOS_UNUSED_VAR( componentProperties ); + GEOS_UNUSED_VAR( phaseComposition ); + GEOS_UNUSED_VAR( useMass ); + + LvArray::forValuesInSlice( dMolarDensity, setZero ); + LvArray::forValuesInSlice( dMassDensity, setZero ); + + real64 const density = m_density * + LvArray::math::exp( m_compressibility * (pressure - m_referencePressure) ) * + LvArray::math::exp( -m_expansionCoefficient * (temperature - m_referenceTemperature) ); + real64 const dDensity_dp = m_compressibility * density; + real64 const dDensity_dT = -m_expansionCoefficient * density; + + massDensity = density; + dMassDensity[Deriv::dP] = dDensity_dp; + dMassDensity[Deriv::dT] = dDensity_dT; + + molarDensity = density / m_waterMolecularWeight; + dMolarDensity[Deriv::dP] = dDensity_dp / m_waterMolecularWeight; + dMolarDensity[Deriv::dT] = dDensity_dT / m_waterMolecularWeight; +} + +} // end namespace compositional + +} // end namespace constitutive + +} // end namespace geos + +#endif //GEOS_CONSTITUTIVE_FLUID_MULTIFLUID_COMPOSITIONAL_MODELS_IMMISCIBLEWATERDENSITY_HPP_ diff --git a/src/coreComponents/constitutive/fluid/multifluid/compositional/models/ImmiscibleWaterFlashModel.cpp b/src/coreComponents/constitutive/fluid/multifluid/compositional/models/ImmiscibleWaterFlashModel.cpp index 62fafd82953..d095bcf0df8 100644 --- a/src/coreComponents/constitutive/fluid/multifluid/compositional/models/ImmiscibleWaterFlashModel.cpp +++ b/src/coreComponents/constitutive/fluid/multifluid/compositional/models/ImmiscibleWaterFlashModel.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/fluid/multifluid/compositional/models/ImmiscibleWaterFlashModel.hpp b/src/coreComponents/constitutive/fluid/multifluid/compositional/models/ImmiscibleWaterFlashModel.hpp index 96b213940c1..d154b45d97f 100644 --- a/src/coreComponents/constitutive/fluid/multifluid/compositional/models/ImmiscibleWaterFlashModel.hpp +++ b/src/coreComponents/constitutive/fluid/multifluid/compositional/models/ImmiscibleWaterFlashModel.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/fluid/multifluid/compositional/models/ImmiscibleWaterParameters.cpp b/src/coreComponents/constitutive/fluid/multifluid/compositional/models/ImmiscibleWaterParameters.cpp index 87c1d659435..217b5ad54ae 100644 --- a/src/coreComponents/constitutive/fluid/multifluid/compositional/models/ImmiscibleWaterParameters.cpp +++ b/src/coreComponents/constitutive/fluid/multifluid/compositional/models/ImmiscibleWaterParameters.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -63,7 +63,41 @@ integer ImmiscibleWaterParameters::getWaterComponentIndex( ComponentProperties c void ImmiscibleWaterParameters::registerParametersImpl( MultiFluidBase * fluid ) { - GEOS_UNUSED_VAR( fluid ); + fluid->registerWrapper( viewKeyStruct::waterReferencePressureString(), &m_waterReferencePressure ). + setInputFlag( dataRepository::InputFlags::REQUIRED ). + setDescription( "The reference pressure for water density and viscosity" ); + + fluid->registerWrapper( viewKeyStruct::waterReferenceTemperatureString(), &m_waterReferenceTemperature ). + setInputFlag( dataRepository::InputFlags::OPTIONAL ). + setDefaultValue( m_waterReferenceTemperature ). + setDescription( "The reference temperature for water density and viscosity" ); + + fluid->registerWrapper( viewKeyStruct::waterDensityString(), &m_waterDensity ). + setInputFlag( dataRepository::InputFlags::REQUIRED ). + setDescription( "The water density at the reference pressure and temperature" ); + + fluid->registerWrapper( viewKeyStruct::waterViscosityString(), &m_waterViscosity ). + setInputFlag( dataRepository::InputFlags::REQUIRED ). + setDescription( "The water viscosity at the reference pressure and temperature" ); + + fluid->registerWrapper( viewKeyStruct::waterCompressibilityString(), &m_waterCompressibility ). + setInputFlag( dataRepository::InputFlags::REQUIRED ). + setDescription( "The compressibility of water" ); + + fluid->registerWrapper( viewKeyStruct::waterViscosityCompressibilityString(), &m_waterViscosityCompressibility ). + setInputFlag( dataRepository::InputFlags::OPTIONAL ). + setDefaultValue( m_waterViscosityCompressibility ). + setDescription( "The compressibility (normalized derivative with respect to pressure) of the water viscosity" ); + + fluid->registerWrapper( viewKeyStruct::waterExpansionCoefficientString(), &m_waterExpansionCoefficient ). + setInputFlag( dataRepository::InputFlags::OPTIONAL ). + setDefaultValue( m_waterExpansionCoefficient ). + setDescription( "The volumetric coefficient of thermal expansion of water" ); + + fluid->registerWrapper( viewKeyStruct::waterViscosityExpansionCoefficientString(), &m_waterViscosityExpansionCoefficient ). + setInputFlag( dataRepository::InputFlags::OPTIONAL ). + setDefaultValue( m_waterViscosityExpansionCoefficient ). + setDescription( "The coefficient of thermal expansion (normalized derivative with respect to temperature) of water viscosity" ); } void ImmiscibleWaterParameters::postInputInitializationImpl( MultiFluidBase const * fluid, @@ -80,6 +114,24 @@ void ImmiscibleWaterParameters::postInputInitializationImpl( MultiFluidBase cons GEOS_FMT( "{}: water component not found '{}'", fluid->getFullName(), MultiFluidBase::viewKeyStruct::componentNamesString() ), InputError ); + + // Pretty much everything should be positive + auto const checkLowerBound = [&]( real64 const & value, real64 const & bound, string const & attribute ) + { + GEOS_THROW_IF_LT_MSG( value, bound, + GEOS_FMT( "{}: invalid number of value in attribute '{}'. Should be greater than {}", + fluid->getFullName(), bound, attribute ), + InputError ); + }; + + real64 constexpr epsilon = MultiFluidConstants::epsilon; + + checkLowerBound( m_waterDensity, epsilon, viewKeyStruct::waterDensityString()); + checkLowerBound( m_waterViscosity, epsilon, viewKeyStruct::waterViscosityString()); + checkLowerBound( m_waterCompressibility, 0.0, viewKeyStruct::waterCompressibilityString()); + checkLowerBound( m_waterViscosityCompressibility, 0.0, viewKeyStruct::waterViscosityCompressibilityString()); + checkLowerBound( m_waterExpansionCoefficient, 0.0, viewKeyStruct::waterExpansionCoefficientString()); + checkLowerBound( m_waterViscosityExpansionCoefficient, 0.0, viewKeyStruct::waterViscosityExpansionCoefficientString()); } } // end namespace compositional diff --git a/src/coreComponents/constitutive/fluid/multifluid/compositional/models/ImmiscibleWaterParameters.hpp b/src/coreComponents/constitutive/fluid/multifluid/compositional/models/ImmiscibleWaterParameters.hpp index 9404e565f83..76242ba5ed4 100644 --- a/src/coreComponents/constitutive/fluid/multifluid/compositional/models/ImmiscibleWaterParameters.hpp +++ b/src/coreComponents/constitutive/fluid/multifluid/compositional/models/ImmiscibleWaterParameters.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -44,6 +44,27 @@ class ImmiscibleWaterParameters : public ModelParameters static integer getWaterComponentIndex( ComponentProperties const & componentProperties ); + struct viewKeyStruct + { + static constexpr char const * waterReferencePressureString() { return "waterReferencePressure"; } + static constexpr char const * waterReferenceTemperatureString() { return "waterReferenceTemperature"; } + static constexpr char const * waterDensityString() { return "waterDensity"; } + static constexpr char const * waterViscosityString() { return "waterViscosity"; } + static constexpr char const * waterCompressibilityString() { return "waterCompressibility"; } + static constexpr char const * waterViscosityCompressibilityString() { return "waterViscosityCompressibility"; } + static constexpr char const * waterExpansionCoefficientString() { return "waterExpansionCoefficient"; } + static constexpr char const * waterViscosityExpansionCoefficientString() { return "waterViscosityExpansionCoefficient"; } + }; + + real64 m_waterReferencePressure; + real64 m_waterReferenceTemperature{293.15}; + real64 m_waterDensity; + real64 m_waterViscosity; + real64 m_waterCompressibility; + real64 m_waterViscosityCompressibility{0.0}; + real64 m_waterExpansionCoefficient{0.0}; + real64 m_waterViscosityExpansionCoefficient{0.0}; + protected: void registerParametersImpl( MultiFluidBase * fluid ) override; diff --git a/src/coreComponents/constitutive/fluid/multifluid/compositional/models/ImmiscibleWaterViscosity.cpp b/src/coreComponents/constitutive/fluid/multifluid/compositional/models/ImmiscibleWaterViscosity.cpp new file mode 100644 index 00000000000..37d070a1a46 --- /dev/null +++ b/src/coreComponents/constitutive/fluid/multifluid/compositional/models/ImmiscibleWaterViscosity.cpp @@ -0,0 +1,75 @@ +/* + * ------------------------------------------------------------------------------------------------------------ + * SPDX-License-Identifier: LGPL-2.1-only + * + * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC + * Copyright (c) 2018-2024 TotalEnergies + * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University + * Copyright (c) 2018-2024 Chevron + * Copyright (c) 2019- GEOS/GEOSX Contributors + * All rights reserved + * + * See top level LICENSE, COPYRIGHT, CONTRIBUTORS, NOTICE, and ACKNOWLEDGEMENTS files for details. + * ------------------------------------------------------------------------------------------------------------ + */ + +/** + * @file ImmiscibleWaterViscosity.cpp + */ + +#include "ImmiscibleWaterViscosity.hpp" +#include "ImmiscibleWaterParameters.hpp" + +namespace geos +{ + +namespace constitutive +{ + +namespace compositional +{ + +ImmiscibleWaterViscosityUpdate::ImmiscibleWaterViscosityUpdate( real64 const referencePressure, + real64 const referenceTemperature, + real64 const viscosity, + real64 const compressibility, + real64 const expansionCoefficient ): + m_referencePressure( referencePressure ), + m_referenceTemperature( referenceTemperature ), + m_viscosity( viscosity ), + m_compressibility( compressibility ), + m_expansionCoefficient( expansionCoefficient ) +{} + +ImmiscibleWaterViscosity::ImmiscibleWaterViscosity( string const & name, + ComponentProperties const & componentProperties, + integer const phaseIndex, + ModelParameters const & modelParameters ): + FunctionBase( name, componentProperties ), + m_parameters( modelParameters ) +{ + GEOS_UNUSED_VAR( phaseIndex ); +} + +ImmiscibleWaterViscosity::KernelWrapper +ImmiscibleWaterViscosity::createKernelWrapper() const +{ + ImmiscibleWaterParameters const * waterParameters = m_parameters.get< ImmiscibleWaterParameters >(); + return KernelWrapper( waterParameters->m_waterReferencePressure, + waterParameters->m_waterReferenceTemperature, + waterParameters->m_waterViscosity, + waterParameters->m_waterViscosityCompressibility, + waterParameters->m_waterViscosityExpansionCoefficient ); +} + +std::unique_ptr< ModelParameters > +ImmiscibleWaterViscosity::createParameters( std::unique_ptr< ModelParameters > parameters ) +{ + return ImmiscibleWaterParameters::create( std::move( parameters ) ); +} + +} // namespace compositional + +} // namespace constitutive + +} // end namespace geos diff --git a/src/coreComponents/constitutive/fluid/multifluid/compositional/models/ImmiscibleWaterViscosity.hpp b/src/coreComponents/constitutive/fluid/multifluid/compositional/models/ImmiscibleWaterViscosity.hpp new file mode 100644 index 00000000000..453589962e4 --- /dev/null +++ b/src/coreComponents/constitutive/fluid/multifluid/compositional/models/ImmiscibleWaterViscosity.hpp @@ -0,0 +1,130 @@ +/* + * ------------------------------------------------------------------------------------------------------------ + * SPDX-License-Identifier: LGPL-2.1-only + * + * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC + * Copyright (c) 2018-2024 TotalEnergies + * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University + * Copyright (c) 2018-2024 Chevron + * Copyright (c) 2019- GEOS/GEOSX Contributors + * All rights reserved + * + * See top level LICENSE, COPYRIGHT, CONTRIBUTORS, NOTICE, and ACKNOWLEDGEMENTS files for details. + * ------------------------------------------------------------------------------------------------------------ + */ + +/** + * @file ImmiscibleWaterViscosity.hpp + */ + +#ifndef GEOS_CONSTITUTIVE_FLUID_MULTIFLUID_COMPOSITIONAL_MODELS_IMMISCIBLEWATERVISCOSITY_HPP_ +#define GEOS_CONSTITUTIVE_FLUID_MULTIFLUID_COMPOSITIONAL_MODELS_IMMISCIBLEWATERVISCOSITY_HPP_ + +#include "FunctionBase.hpp" +#include "constitutive/fluid/multifluid/Layouts.hpp" + +namespace geos +{ + +namespace constitutive +{ + +namespace compositional +{ + +class ImmiscibleWaterViscosityUpdate final : public FunctionBaseUpdate +{ + using Deriv = geos::constitutive::multifluid::DerivativeOffset; +public: + ImmiscibleWaterViscosityUpdate( real64 const referencePressure, + real64 const referenceTemperature, + real64 const viscosity, + real64 const compressibility, + real64 const expansionCoefficient ); + + template< integer USD1, integer USD2 > + GEOS_HOST_DEVICE + void compute( ComponentProperties::KernelWrapper const & componentProperties, + real64 const & pressure, + real64 const & temperature, + arraySlice1d< real64 const, USD1 > const & phaseComposition, + real64 const & density, + arraySlice1d< real64 const, USD2 > const & dDensity, + real64 & viscosity, + arraySlice1d< real64, USD2 > const & dViscosity, + bool useMass ) const; + +private: + real64 const m_referencePressure; + real64 const m_referenceTemperature; + real64 const m_viscosity; + real64 const m_compressibility; + real64 const m_expansionCoefficient; +}; + +class ImmiscibleWaterViscosity : public FunctionBase +{ +public: + ImmiscibleWaterViscosity( string const & name, + ComponentProperties const & componentProperties, + integer const phaseIndex, + ModelParameters const & modelParameters ); + + static string catalogName() { return ""; } + + FunctionType functionType() const override + { + return FunctionType::VISCOSITY; + } + + /// Type of kernel wrapper for in-kernel update + using KernelWrapper = ImmiscibleWaterViscosityUpdate; + + /** + * @brief Create an update kernel wrapper. + * @return the wrapper + */ + KernelWrapper createKernelWrapper() const; + + // Create parameters unique to this model + static std::unique_ptr< ModelParameters > createParameters( std::unique_ptr< ModelParameters > parameters ); + +private: + ModelParameters const & m_parameters; +}; + +template< integer USD1, integer USD2 > +GEOS_HOST_DEVICE +GEOS_FORCE_INLINE +void ImmiscibleWaterViscosityUpdate::compute( ComponentProperties::KernelWrapper const & componentProperties, + real64 const & pressure, + real64 const & temperature, + arraySlice1d< real64 const, USD1 > const & phaseComposition, + real64 const & density, + arraySlice1d< real64 const, USD2 > const & dDensity, + real64 & viscosity, + arraySlice1d< real64, USD2 > const & dViscosity, + bool useMass ) const +{ + GEOS_UNUSED_VAR( componentProperties ); + GEOS_UNUSED_VAR( phaseComposition ); + GEOS_UNUSED_VAR( density ); + GEOS_UNUSED_VAR( dDensity ); + GEOS_UNUSED_VAR( useMass ); + + LvArray::forValuesInSlice( dViscosity, setZero ); + + viscosity = m_viscosity * + LvArray::math::exp( m_compressibility * (pressure - m_referencePressure) ) * + LvArray::math::exp( -m_expansionCoefficient * (temperature - m_referenceTemperature) ); + dViscosity[Deriv::dP] = m_compressibility * viscosity; + dViscosity[Deriv::dT] = -m_expansionCoefficient * viscosity; +} + +} // end namespace compositional + +} // end namespace constitutive + +} // end namespace geos + +#endif //GEOS_CONSTITUTIVE_FLUID_MULTIFLUID_COMPOSITIONAL_MODELS_IMMISCIBLEWATERVISCOSITY_HPP_ diff --git a/src/coreComponents/constitutive/fluid/multifluid/compositional/models/LohrenzBrayClarkViscosity.cpp b/src/coreComponents/constitutive/fluid/multifluid/compositional/models/LohrenzBrayClarkViscosity.cpp index 615e24ab9c1..fc06c82a949 100644 --- a/src/coreComponents/constitutive/fluid/multifluid/compositional/models/LohrenzBrayClarkViscosity.cpp +++ b/src/coreComponents/constitutive/fluid/multifluid/compositional/models/LohrenzBrayClarkViscosity.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/fluid/multifluid/compositional/models/LohrenzBrayClarkViscosity.hpp b/src/coreComponents/constitutive/fluid/multifluid/compositional/models/LohrenzBrayClarkViscosity.hpp index 95cb6644d9f..bf9a47c70f0 100644 --- a/src/coreComponents/constitutive/fluid/multifluid/compositional/models/LohrenzBrayClarkViscosity.hpp +++ b/src/coreComponents/constitutive/fluid/multifluid/compositional/models/LohrenzBrayClarkViscosity.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/fluid/multifluid/compositional/models/LohrenzBrayClarkViscosityImpl.hpp b/src/coreComponents/constitutive/fluid/multifluid/compositional/models/LohrenzBrayClarkViscosityImpl.hpp index 1a1999e78ba..590da10921d 100644 --- a/src/coreComponents/constitutive/fluid/multifluid/compositional/models/LohrenzBrayClarkViscosityImpl.hpp +++ b/src/coreComponents/constitutive/fluid/multifluid/compositional/models/LohrenzBrayClarkViscosityImpl.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/fluid/multifluid/compositional/models/ModelParameters.hpp b/src/coreComponents/constitutive/fluid/multifluid/compositional/models/ModelParameters.hpp index 922e1ef877c..3cc6f0a4333 100644 --- a/src/coreComponents/constitutive/fluid/multifluid/compositional/models/ModelParameters.hpp +++ b/src/coreComponents/constitutive/fluid/multifluid/compositional/models/ModelParameters.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/fluid/multifluid/compositional/models/NegativeTwoPhaseFlashModel.cpp b/src/coreComponents/constitutive/fluid/multifluid/compositional/models/NegativeTwoPhaseFlashModel.cpp index 12d0e5ba541..16a39c39e23 100644 --- a/src/coreComponents/constitutive/fluid/multifluid/compositional/models/NegativeTwoPhaseFlashModel.cpp +++ b/src/coreComponents/constitutive/fluid/multifluid/compositional/models/NegativeTwoPhaseFlashModel.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/fluid/multifluid/compositional/models/NegativeTwoPhaseFlashModel.hpp b/src/coreComponents/constitutive/fluid/multifluid/compositional/models/NegativeTwoPhaseFlashModel.hpp index c1696c2a635..d55d3df6656 100644 --- a/src/coreComponents/constitutive/fluid/multifluid/compositional/models/NegativeTwoPhaseFlashModel.hpp +++ b/src/coreComponents/constitutive/fluid/multifluid/compositional/models/NegativeTwoPhaseFlashModel.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/fluid/multifluid/compositional/models/NullModel.hpp b/src/coreComponents/constitutive/fluid/multifluid/compositional/models/NullModel.hpp index 9226dda9343..dd10f7caef5 100644 --- a/src/coreComponents/constitutive/fluid/multifluid/compositional/models/NullModel.hpp +++ b/src/coreComponents/constitutive/fluid/multifluid/compositional/models/NullModel.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/fluid/multifluid/compositional/models/PhaseModel.hpp b/src/coreComponents/constitutive/fluid/multifluid/compositional/models/PhaseModel.hpp index bf13c8d01ab..c99b723c0b0 100644 --- a/src/coreComponents/constitutive/fluid/multifluid/compositional/models/PhaseModel.hpp +++ b/src/coreComponents/constitutive/fluid/multifluid/compositional/models/PhaseModel.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/fluid/multifluid/reactive/ReactiveBrineFluid.cpp b/src/coreComponents/constitutive/fluid/multifluid/reactive/ReactiveBrineFluid.cpp index fa2dc6eb819..7451008cd6c 100644 --- a/src/coreComponents/constitutive/fluid/multifluid/reactive/ReactiveBrineFluid.cpp +++ b/src/coreComponents/constitutive/fluid/multifluid/reactive/ReactiveBrineFluid.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/fluid/multifluid/reactive/ReactiveBrineFluid.hpp b/src/coreComponents/constitutive/fluid/multifluid/reactive/ReactiveBrineFluid.hpp index 2ee7cf86687..f1d88712b00 100644 --- a/src/coreComponents/constitutive/fluid/multifluid/reactive/ReactiveBrineFluid.hpp +++ b/src/coreComponents/constitutive/fluid/multifluid/reactive/ReactiveBrineFluid.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/fluid/multifluid/reactive/ReactiveFluidSelector.hpp b/src/coreComponents/constitutive/fluid/multifluid/reactive/ReactiveFluidSelector.hpp index c322d6a3fb5..03439e9629b 100644 --- a/src/coreComponents/constitutive/fluid/multifluid/reactive/ReactiveFluidSelector.hpp +++ b/src/coreComponents/constitutive/fluid/multifluid/reactive/ReactiveFluidSelector.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/fluid/multifluid/reactive/ReactiveMultiFluid.cpp b/src/coreComponents/constitutive/fluid/multifluid/reactive/ReactiveMultiFluid.cpp index 7e66577b671..09ac848a16a 100644 --- a/src/coreComponents/constitutive/fluid/multifluid/reactive/ReactiveMultiFluid.cpp +++ b/src/coreComponents/constitutive/fluid/multifluid/reactive/ReactiveMultiFluid.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/fluid/multifluid/reactive/ReactiveMultiFluid.hpp b/src/coreComponents/constitutive/fluid/multifluid/reactive/ReactiveMultiFluid.hpp index 3a9cd32f95c..71ebd796571 100644 --- a/src/coreComponents/constitutive/fluid/multifluid/reactive/ReactiveMultiFluid.hpp +++ b/src/coreComponents/constitutive/fluid/multifluid/reactive/ReactiveMultiFluid.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/fluid/multifluid/reactive/ReactiveMultiFluidFields.hpp b/src/coreComponents/constitutive/fluid/multifluid/reactive/ReactiveMultiFluidFields.hpp index 83fda798442..d3a3a77f967 100644 --- a/src/coreComponents/constitutive/fluid/multifluid/reactive/ReactiveMultiFluidFields.hpp +++ b/src/coreComponents/constitutive/fluid/multifluid/reactive/ReactiveMultiFluidFields.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/fluid/multifluid/reactive/chemicalReactions/EquilibriumReactions.cpp b/src/coreComponents/constitutive/fluid/multifluid/reactive/chemicalReactions/EquilibriumReactions.cpp index 7c5bc5b162b..8ae3e0c8ee2 100644 --- a/src/coreComponents/constitutive/fluid/multifluid/reactive/chemicalReactions/EquilibriumReactions.cpp +++ b/src/coreComponents/constitutive/fluid/multifluid/reactive/chemicalReactions/EquilibriumReactions.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/fluid/multifluid/reactive/chemicalReactions/EquilibriumReactions.hpp b/src/coreComponents/constitutive/fluid/multifluid/reactive/chemicalReactions/EquilibriumReactions.hpp index ecd3a28633d..e3908d4df7d 100644 --- a/src/coreComponents/constitutive/fluid/multifluid/reactive/chemicalReactions/EquilibriumReactions.hpp +++ b/src/coreComponents/constitutive/fluid/multifluid/reactive/chemicalReactions/EquilibriumReactions.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/fluid/multifluid/reactive/chemicalReactions/KineticReactions.cpp b/src/coreComponents/constitutive/fluid/multifluid/reactive/chemicalReactions/KineticReactions.cpp index 7a17afc8666..5009c9fbeae 100644 --- a/src/coreComponents/constitutive/fluid/multifluid/reactive/chemicalReactions/KineticReactions.cpp +++ b/src/coreComponents/constitutive/fluid/multifluid/reactive/chemicalReactions/KineticReactions.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/fluid/multifluid/reactive/chemicalReactions/KineticReactions.hpp b/src/coreComponents/constitutive/fluid/multifluid/reactive/chemicalReactions/KineticReactions.hpp index 05f82ae4d64..7c2ff5bf64a 100644 --- a/src/coreComponents/constitutive/fluid/multifluid/reactive/chemicalReactions/KineticReactions.hpp +++ b/src/coreComponents/constitutive/fluid/multifluid/reactive/chemicalReactions/KineticReactions.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/fluid/multifluid/reactive/chemicalReactions/ReactionsBase.cpp b/src/coreComponents/constitutive/fluid/multifluid/reactive/chemicalReactions/ReactionsBase.cpp index 3b8f8a6db28..df579b3587e 100644 --- a/src/coreComponents/constitutive/fluid/multifluid/reactive/chemicalReactions/ReactionsBase.cpp +++ b/src/coreComponents/constitutive/fluid/multifluid/reactive/chemicalReactions/ReactionsBase.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/fluid/multifluid/reactive/chemicalReactions/ReactionsBase.hpp b/src/coreComponents/constitutive/fluid/multifluid/reactive/chemicalReactions/ReactionsBase.hpp index 35c084290c1..8b3e01b335f 100644 --- a/src/coreComponents/constitutive/fluid/multifluid/reactive/chemicalReactions/ReactionsBase.hpp +++ b/src/coreComponents/constitutive/fluid/multifluid/reactive/chemicalReactions/ReactionsBase.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/fluid/singlefluid/CompressibleSinglePhaseFluid.cpp b/src/coreComponents/constitutive/fluid/singlefluid/CompressibleSinglePhaseFluid.cpp index 28550afbfc6..76646b5222a 100644 --- a/src/coreComponents/constitutive/fluid/singlefluid/CompressibleSinglePhaseFluid.cpp +++ b/src/coreComponents/constitutive/fluid/singlefluid/CompressibleSinglePhaseFluid.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/fluid/singlefluid/CompressibleSinglePhaseFluid.hpp b/src/coreComponents/constitutive/fluid/singlefluid/CompressibleSinglePhaseFluid.hpp index d4c545b002e..b28f2109a21 100644 --- a/src/coreComponents/constitutive/fluid/singlefluid/CompressibleSinglePhaseFluid.hpp +++ b/src/coreComponents/constitutive/fluid/singlefluid/CompressibleSinglePhaseFluid.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/fluid/singlefluid/ParticleFluid.cpp b/src/coreComponents/constitutive/fluid/singlefluid/ParticleFluid.cpp index 38f067be667..adf166a4540 100644 --- a/src/coreComponents/constitutive/fluid/singlefluid/ParticleFluid.cpp +++ b/src/coreComponents/constitutive/fluid/singlefluid/ParticleFluid.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/fluid/singlefluid/ParticleFluid.hpp b/src/coreComponents/constitutive/fluid/singlefluid/ParticleFluid.hpp index c218ffbbad4..a6a724f0933 100644 --- a/src/coreComponents/constitutive/fluid/singlefluid/ParticleFluid.hpp +++ b/src/coreComponents/constitutive/fluid/singlefluid/ParticleFluid.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/fluid/singlefluid/ParticleFluidBase.cpp b/src/coreComponents/constitutive/fluid/singlefluid/ParticleFluidBase.cpp index 778d9a752ab..d4faa0d8a20 100644 --- a/src/coreComponents/constitutive/fluid/singlefluid/ParticleFluidBase.cpp +++ b/src/coreComponents/constitutive/fluid/singlefluid/ParticleFluidBase.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/fluid/singlefluid/ParticleFluidBase.hpp b/src/coreComponents/constitutive/fluid/singlefluid/ParticleFluidBase.hpp index 761e0c63a28..9960b7376ee 100644 --- a/src/coreComponents/constitutive/fluid/singlefluid/ParticleFluidBase.hpp +++ b/src/coreComponents/constitutive/fluid/singlefluid/ParticleFluidBase.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/fluid/singlefluid/ParticleFluidFields.hpp b/src/coreComponents/constitutive/fluid/singlefluid/ParticleFluidFields.hpp index fd8a69196fd..30b10912683 100644 --- a/src/coreComponents/constitutive/fluid/singlefluid/ParticleFluidFields.hpp +++ b/src/coreComponents/constitutive/fluid/singlefluid/ParticleFluidFields.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/fluid/singlefluid/ParticleFluidSelector.hpp b/src/coreComponents/constitutive/fluid/singlefluid/ParticleFluidSelector.hpp index f7e39e26b73..f0033da5c48 100644 --- a/src/coreComponents/constitutive/fluid/singlefluid/ParticleFluidSelector.hpp +++ b/src/coreComponents/constitutive/fluid/singlefluid/ParticleFluidSelector.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/fluid/singlefluid/ProppantSlurryFluid.cpp b/src/coreComponents/constitutive/fluid/singlefluid/ProppantSlurryFluid.cpp index 4c59aeb37ba..95c4d0a8fb0 100644 --- a/src/coreComponents/constitutive/fluid/singlefluid/ProppantSlurryFluid.cpp +++ b/src/coreComponents/constitutive/fluid/singlefluid/ProppantSlurryFluid.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/fluid/singlefluid/ProppantSlurryFluid.hpp b/src/coreComponents/constitutive/fluid/singlefluid/ProppantSlurryFluid.hpp index 0a9c1610635..eb8809bac58 100644 --- a/src/coreComponents/constitutive/fluid/singlefluid/ProppantSlurryFluid.hpp +++ b/src/coreComponents/constitutive/fluid/singlefluid/ProppantSlurryFluid.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/fluid/singlefluid/SingleFluidBase.cpp b/src/coreComponents/constitutive/fluid/singlefluid/SingleFluidBase.cpp index e9870a759a4..b5a91dfdb58 100644 --- a/src/coreComponents/constitutive/fluid/singlefluid/SingleFluidBase.cpp +++ b/src/coreComponents/constitutive/fluid/singlefluid/SingleFluidBase.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/fluid/singlefluid/SingleFluidBase.hpp b/src/coreComponents/constitutive/fluid/singlefluid/SingleFluidBase.hpp index d5f63c8dedb..d94b98672e5 100644 --- a/src/coreComponents/constitutive/fluid/singlefluid/SingleFluidBase.hpp +++ b/src/coreComponents/constitutive/fluid/singlefluid/SingleFluidBase.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/fluid/singlefluid/SingleFluidFields.hpp b/src/coreComponents/constitutive/fluid/singlefluid/SingleFluidFields.hpp index 61949828116..8714083accd 100644 --- a/src/coreComponents/constitutive/fluid/singlefluid/SingleFluidFields.hpp +++ b/src/coreComponents/constitutive/fluid/singlefluid/SingleFluidFields.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/fluid/singlefluid/SingleFluidSelector.hpp b/src/coreComponents/constitutive/fluid/singlefluid/SingleFluidSelector.hpp index cdb7103fd1a..be6560c6c21 100644 --- a/src/coreComponents/constitutive/fluid/singlefluid/SingleFluidSelector.hpp +++ b/src/coreComponents/constitutive/fluid/singlefluid/SingleFluidSelector.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/fluid/singlefluid/SlurryFluidBase.cpp b/src/coreComponents/constitutive/fluid/singlefluid/SlurryFluidBase.cpp index c51906552a5..11a49d4da84 100644 --- a/src/coreComponents/constitutive/fluid/singlefluid/SlurryFluidBase.cpp +++ b/src/coreComponents/constitutive/fluid/singlefluid/SlurryFluidBase.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/fluid/singlefluid/SlurryFluidBase.hpp b/src/coreComponents/constitutive/fluid/singlefluid/SlurryFluidBase.hpp index 2ab967932c9..94a101b32e3 100644 --- a/src/coreComponents/constitutive/fluid/singlefluid/SlurryFluidBase.hpp +++ b/src/coreComponents/constitutive/fluid/singlefluid/SlurryFluidBase.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/fluid/singlefluid/SlurryFluidFields.hpp b/src/coreComponents/constitutive/fluid/singlefluid/SlurryFluidFields.hpp index fe45d82982f..55bd3b82b6f 100644 --- a/src/coreComponents/constitutive/fluid/singlefluid/SlurryFluidFields.hpp +++ b/src/coreComponents/constitutive/fluid/singlefluid/SlurryFluidFields.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/fluid/singlefluid/SlurryFluidSelector.hpp b/src/coreComponents/constitutive/fluid/singlefluid/SlurryFluidSelector.hpp index 731c0856eec..53b341c95fb 100644 --- a/src/coreComponents/constitutive/fluid/singlefluid/SlurryFluidSelector.hpp +++ b/src/coreComponents/constitutive/fluid/singlefluid/SlurryFluidSelector.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/fluid/singlefluid/ThermalCompressibleSinglePhaseFluid.cpp b/src/coreComponents/constitutive/fluid/singlefluid/ThermalCompressibleSinglePhaseFluid.cpp index 181af8bcba2..af28e00814a 100644 --- a/src/coreComponents/constitutive/fluid/singlefluid/ThermalCompressibleSinglePhaseFluid.cpp +++ b/src/coreComponents/constitutive/fluid/singlefluid/ThermalCompressibleSinglePhaseFluid.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/fluid/singlefluid/ThermalCompressibleSinglePhaseFluid.hpp b/src/coreComponents/constitutive/fluid/singlefluid/ThermalCompressibleSinglePhaseFluid.hpp index 01d7a802e6d..af79dd929c1 100644 --- a/src/coreComponents/constitutive/fluid/singlefluid/ThermalCompressibleSinglePhaseFluid.hpp +++ b/src/coreComponents/constitutive/fluid/singlefluid/ThermalCompressibleSinglePhaseFluid.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/permeability/CarmanKozenyPermeability.cpp b/src/coreComponents/constitutive/permeability/CarmanKozenyPermeability.cpp index 598f0851e5a..f57f52ffd77 100644 --- a/src/coreComponents/constitutive/permeability/CarmanKozenyPermeability.cpp +++ b/src/coreComponents/constitutive/permeability/CarmanKozenyPermeability.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/permeability/CarmanKozenyPermeability.hpp b/src/coreComponents/constitutive/permeability/CarmanKozenyPermeability.hpp index 56215dd6df5..2d7605b4871 100644 --- a/src/coreComponents/constitutive/permeability/CarmanKozenyPermeability.hpp +++ b/src/coreComponents/constitutive/permeability/CarmanKozenyPermeability.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/permeability/ConstantPermeability.cpp b/src/coreComponents/constitutive/permeability/ConstantPermeability.cpp index 798bc79bb9a..eecbc1c6645 100644 --- a/src/coreComponents/constitutive/permeability/ConstantPermeability.cpp +++ b/src/coreComponents/constitutive/permeability/ConstantPermeability.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/permeability/ConstantPermeability.hpp b/src/coreComponents/constitutive/permeability/ConstantPermeability.hpp index 70954cf1e22..4357ea50b5d 100644 --- a/src/coreComponents/constitutive/permeability/ConstantPermeability.hpp +++ b/src/coreComponents/constitutive/permeability/ConstantPermeability.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/permeability/ExponentialDecayPermeability.cpp b/src/coreComponents/constitutive/permeability/ExponentialDecayPermeability.cpp index 31ecf701137..4ac85ac4d9a 100644 --- a/src/coreComponents/constitutive/permeability/ExponentialDecayPermeability.cpp +++ b/src/coreComponents/constitutive/permeability/ExponentialDecayPermeability.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/permeability/ExponentialDecayPermeability.hpp b/src/coreComponents/constitutive/permeability/ExponentialDecayPermeability.hpp index df2136e18dd..c8d39b0bfcf 100644 --- a/src/coreComponents/constitutive/permeability/ExponentialDecayPermeability.hpp +++ b/src/coreComponents/constitutive/permeability/ExponentialDecayPermeability.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/permeability/ParallelPlatesPermeability.cpp b/src/coreComponents/constitutive/permeability/ParallelPlatesPermeability.cpp index 65b42bb0103..379a584bbd0 100644 --- a/src/coreComponents/constitutive/permeability/ParallelPlatesPermeability.cpp +++ b/src/coreComponents/constitutive/permeability/ParallelPlatesPermeability.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/permeability/ParallelPlatesPermeability.hpp b/src/coreComponents/constitutive/permeability/ParallelPlatesPermeability.hpp index 0f42a319307..6977221fbfd 100644 --- a/src/coreComponents/constitutive/permeability/ParallelPlatesPermeability.hpp +++ b/src/coreComponents/constitutive/permeability/ParallelPlatesPermeability.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/permeability/PermeabilityBase.cpp b/src/coreComponents/constitutive/permeability/PermeabilityBase.cpp index 949adb86f97..0086cf6dc13 100644 --- a/src/coreComponents/constitutive/permeability/PermeabilityBase.cpp +++ b/src/coreComponents/constitutive/permeability/PermeabilityBase.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/permeability/PermeabilityBase.hpp b/src/coreComponents/constitutive/permeability/PermeabilityBase.hpp index 6c7cb62bdd9..d983bcf8d8e 100644 --- a/src/coreComponents/constitutive/permeability/PermeabilityBase.hpp +++ b/src/coreComponents/constitutive/permeability/PermeabilityBase.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/permeability/PermeabilityFields.hpp b/src/coreComponents/constitutive/permeability/PermeabilityFields.hpp index cafb94fb3ee..e1a48f17618 100644 --- a/src/coreComponents/constitutive/permeability/PermeabilityFields.hpp +++ b/src/coreComponents/constitutive/permeability/PermeabilityFields.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/permeability/PressurePermeability.cpp b/src/coreComponents/constitutive/permeability/PressurePermeability.cpp index 625b4af4c38..abcb8cde307 100644 --- a/src/coreComponents/constitutive/permeability/PressurePermeability.cpp +++ b/src/coreComponents/constitutive/permeability/PressurePermeability.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/permeability/PressurePermeability.hpp b/src/coreComponents/constitutive/permeability/PressurePermeability.hpp index 28ad3559670..df517530771 100644 --- a/src/coreComponents/constitutive/permeability/PressurePermeability.hpp +++ b/src/coreComponents/constitutive/permeability/PressurePermeability.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/permeability/ProppantPermeability.cpp b/src/coreComponents/constitutive/permeability/ProppantPermeability.cpp index b9a72df93bc..201afe3fd63 100644 --- a/src/coreComponents/constitutive/permeability/ProppantPermeability.cpp +++ b/src/coreComponents/constitutive/permeability/ProppantPermeability.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/permeability/ProppantPermeability.hpp b/src/coreComponents/constitutive/permeability/ProppantPermeability.hpp index 3c81228d217..73b54febf02 100644 --- a/src/coreComponents/constitutive/permeability/ProppantPermeability.hpp +++ b/src/coreComponents/constitutive/permeability/ProppantPermeability.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/permeability/SlipDependentPermeability.cpp b/src/coreComponents/constitutive/permeability/SlipDependentPermeability.cpp index ca69e02561e..63d17baa9e5 100644 --- a/src/coreComponents/constitutive/permeability/SlipDependentPermeability.cpp +++ b/src/coreComponents/constitutive/permeability/SlipDependentPermeability.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/permeability/SlipDependentPermeability.hpp b/src/coreComponents/constitutive/permeability/SlipDependentPermeability.hpp index b7d52617a64..2c883115fa9 100644 --- a/src/coreComponents/constitutive/permeability/SlipDependentPermeability.hpp +++ b/src/coreComponents/constitutive/permeability/SlipDependentPermeability.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/permeability/WillisRichardsPermeability.cpp b/src/coreComponents/constitutive/permeability/WillisRichardsPermeability.cpp index 9be8d42e3b2..b57ae9b5086 100644 --- a/src/coreComponents/constitutive/permeability/WillisRichardsPermeability.cpp +++ b/src/coreComponents/constitutive/permeability/WillisRichardsPermeability.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/permeability/WillisRichardsPermeability.hpp b/src/coreComponents/constitutive/permeability/WillisRichardsPermeability.hpp index d1d6a846745..400e8f8356c 100644 --- a/src/coreComponents/constitutive/permeability/WillisRichardsPermeability.hpp +++ b/src/coreComponents/constitutive/permeability/WillisRichardsPermeability.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/relativePermeability/BrooksCoreyBakerRelativePermeability.cpp b/src/coreComponents/constitutive/relativePermeability/BrooksCoreyBakerRelativePermeability.cpp index b43afd85521..bb8ad661a74 100644 --- a/src/coreComponents/constitutive/relativePermeability/BrooksCoreyBakerRelativePermeability.cpp +++ b/src/coreComponents/constitutive/relativePermeability/BrooksCoreyBakerRelativePermeability.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/relativePermeability/BrooksCoreyBakerRelativePermeability.hpp b/src/coreComponents/constitutive/relativePermeability/BrooksCoreyBakerRelativePermeability.hpp index 57181e7f726..f1d80333f86 100644 --- a/src/coreComponents/constitutive/relativePermeability/BrooksCoreyBakerRelativePermeability.hpp +++ b/src/coreComponents/constitutive/relativePermeability/BrooksCoreyBakerRelativePermeability.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -86,7 +86,7 @@ class BrooksCoreyBakerRelativePermeabilityUpdate final : public RelativePermeabi * @param[in] maxValue the endpoint relative permeability value * * This function evaluates the relperm function and its derivative at a given phase saturation - * Reference: Eclipse technical description and Petrowiki + * Reference: Petrowiki */ GEOS_HOST_DEVICE GEOS_FORCE_INLINE diff --git a/src/coreComponents/constitutive/relativePermeability/BrooksCoreyRelativePermeability.cpp b/src/coreComponents/constitutive/relativePermeability/BrooksCoreyRelativePermeability.cpp index 458a0fc23b1..2c64e5de56c 100644 --- a/src/coreComponents/constitutive/relativePermeability/BrooksCoreyRelativePermeability.cpp +++ b/src/coreComponents/constitutive/relativePermeability/BrooksCoreyRelativePermeability.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/relativePermeability/BrooksCoreyRelativePermeability.hpp b/src/coreComponents/constitutive/relativePermeability/BrooksCoreyRelativePermeability.hpp index e4fc6195e7e..4518603dc3e 100644 --- a/src/coreComponents/constitutive/relativePermeability/BrooksCoreyRelativePermeability.hpp +++ b/src/coreComponents/constitutive/relativePermeability/BrooksCoreyRelativePermeability.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/relativePermeability/BrooksCoreyStone2RelativePermeability.cpp b/src/coreComponents/constitutive/relativePermeability/BrooksCoreyStone2RelativePermeability.cpp index f7bf08c0f4f..8eb25929ddb 100644 --- a/src/coreComponents/constitutive/relativePermeability/BrooksCoreyStone2RelativePermeability.cpp +++ b/src/coreComponents/constitutive/relativePermeability/BrooksCoreyStone2RelativePermeability.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/relativePermeability/BrooksCoreyStone2RelativePermeability.hpp b/src/coreComponents/constitutive/relativePermeability/BrooksCoreyStone2RelativePermeability.hpp index 99e6caff614..7cb1a097537 100644 --- a/src/coreComponents/constitutive/relativePermeability/BrooksCoreyStone2RelativePermeability.hpp +++ b/src/coreComponents/constitutive/relativePermeability/BrooksCoreyStone2RelativePermeability.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -86,7 +86,7 @@ class BrooksCoreyStone2RelativePermeabilityUpdate final : public RelativePermeab * @param[in] maxValue the endpoint relative permeability value * * This function evaluates the relperm function and its derivative at a given phase saturation - * Reference: Eclipse technical description and Petrowiki + * Reference: Petrowiki */ GEOS_HOST_DEVICE inline diff --git a/src/coreComponents/constitutive/relativePermeability/RelativePermeabilityBase.cpp b/src/coreComponents/constitutive/relativePermeability/RelativePermeabilityBase.cpp index 093dd9a52fd..1376c0a6b6a 100644 --- a/src/coreComponents/constitutive/relativePermeability/RelativePermeabilityBase.cpp +++ b/src/coreComponents/constitutive/relativePermeability/RelativePermeabilityBase.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/relativePermeability/RelativePermeabilityBase.hpp b/src/coreComponents/constitutive/relativePermeability/RelativePermeabilityBase.hpp index 16100d449d2..9fac61f555e 100644 --- a/src/coreComponents/constitutive/relativePermeability/RelativePermeabilityBase.hpp +++ b/src/coreComponents/constitutive/relativePermeability/RelativePermeabilityBase.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/relativePermeability/RelativePermeabilityFields.hpp b/src/coreComponents/constitutive/relativePermeability/RelativePermeabilityFields.hpp index d4aad3b60e0..06f4cf37ec8 100644 --- a/src/coreComponents/constitutive/relativePermeability/RelativePermeabilityFields.hpp +++ b/src/coreComponents/constitutive/relativePermeability/RelativePermeabilityFields.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/relativePermeability/RelativePermeabilityInterpolators.hpp b/src/coreComponents/constitutive/relativePermeability/RelativePermeabilityInterpolators.hpp index eae8eb8b394..7f44d468490 100644 --- a/src/coreComponents/constitutive/relativePermeability/RelativePermeabilityInterpolators.hpp +++ b/src/coreComponents/constitutive/relativePermeability/RelativePermeabilityInterpolators.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -46,8 +46,8 @@ struct Baker * @param[in] dGoRelPerm_dOilVolFrac * * This function interpolates the two-phase relperms to compute the three-phase relperm - * The interpolation is based on the modified Baker method, also used as default in Eclipse - * Reference: Eclipse technical description and PetroWiki + * The interpolation is based on the modified Baker method + * Reference: PetroWiki */ GEOS_HOST_DEVICE GEOS_FORCE_INLINE @@ -131,7 +131,6 @@ struct Stone2 * * This function interpolates the two-phase relperms to compute the three-phase relperm * The interpolation is based on the modified Stone 2 method - * Reference: Eclipse technical description */ GEOS_HOST_DEVICE GEOS_FORCE_INLINE diff --git a/src/coreComponents/constitutive/relativePermeability/RelativePermeabilitySelector.hpp b/src/coreComponents/constitutive/relativePermeability/RelativePermeabilitySelector.hpp index 6ee5cd3d31d..ee20a4c4f6e 100644 --- a/src/coreComponents/constitutive/relativePermeability/RelativePermeabilitySelector.hpp +++ b/src/coreComponents/constitutive/relativePermeability/RelativePermeabilitySelector.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/relativePermeability/TableRelativePermeability.cpp b/src/coreComponents/constitutive/relativePermeability/TableRelativePermeability.cpp index 26bd464c4ac..cd88449a1b1 100644 --- a/src/coreComponents/constitutive/relativePermeability/TableRelativePermeability.cpp +++ b/src/coreComponents/constitutive/relativePermeability/TableRelativePermeability.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/relativePermeability/TableRelativePermeability.hpp b/src/coreComponents/constitutive/relativePermeability/TableRelativePermeability.hpp index 89ad0cc0460..363cea73608 100644 --- a/src/coreComponents/constitutive/relativePermeability/TableRelativePermeability.hpp +++ b/src/coreComponents/constitutive/relativePermeability/TableRelativePermeability.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/relativePermeability/TableRelativePermeabilityHelpers.cpp b/src/coreComponents/constitutive/relativePermeability/TableRelativePermeabilityHelpers.cpp index ab8fa7e3749..0edd1537af7 100644 --- a/src/coreComponents/constitutive/relativePermeability/TableRelativePermeabilityHelpers.cpp +++ b/src/coreComponents/constitutive/relativePermeability/TableRelativePermeabilityHelpers.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/relativePermeability/TableRelativePermeabilityHelpers.hpp b/src/coreComponents/constitutive/relativePermeability/TableRelativePermeabilityHelpers.hpp index bb220ab6bdc..275949a41ff 100644 --- a/src/coreComponents/constitutive/relativePermeability/TableRelativePermeabilityHelpers.hpp +++ b/src/coreComponents/constitutive/relativePermeability/TableRelativePermeabilityHelpers.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/relativePermeability/TableRelativePermeabilityHysteresis.cpp b/src/coreComponents/constitutive/relativePermeability/TableRelativePermeabilityHysteresis.cpp index 4eb224bb5e2..44ce342cd09 100644 --- a/src/coreComponents/constitutive/relativePermeability/TableRelativePermeabilityHysteresis.cpp +++ b/src/coreComponents/constitutive/relativePermeability/TableRelativePermeabilityHysteresis.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -488,7 +488,7 @@ void TableRelativePermeabilityHysteresis::computeLandCoefficient() ipNonWetting = m_phaseOrder[PhaseType::GAS]; } - // Note: for simplicity, the notations are taken from IX documentation (although this breaks our phaseVolFrac naming convention) + // Note: for simplicity, the notations are taken reservoir simulation literature (although this breaks our phaseVolFrac naming convention) // Step 1: Land parameter for the wetting phase diff --git a/src/coreComponents/constitutive/relativePermeability/TableRelativePermeabilityHysteresis.hpp b/src/coreComponents/constitutive/relativePermeability/TableRelativePermeabilityHysteresis.hpp index 1ecd09e95f7..f5390ff7034 100644 --- a/src/coreComponents/constitutive/relativePermeability/TableRelativePermeabilityHysteresis.hpp +++ b/src/coreComponents/constitutive/relativePermeability/TableRelativePermeabilityHysteresis.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -568,7 +568,7 @@ class TableRelativePermeabilityHysteresis : public RelativePermeabilityBase /// Max krwo value (unique as krwo and krgo are considred non hysteretical in our implementation) real64 m_waterOilMaxRelPerm; - /// enum class to dispatch interpolator (Baker/Eclipse,StoneII) + /// enum class to dispatch interpolator (Baker,StoneII) ThreePhaseInterpolator m_threePhaseInterpolator; }; @@ -711,11 +711,11 @@ TableRelativePermeabilityHysteresis::KernelWrapper:: real64 & phaseRelPerm, real64 & dPhaseRelPerm_dPhaseVolFrac ) const { - // note: for simplicity, the notations are taken from IX documentation (although this breaks our phaseVolFrac naming convention) + // note: for simplicity, the notations are taken from reservoir simulation literature (although this breaks our phaseVolFrac naming + // convention) // Step 1: for a given value of the max historical saturation, Shy, compute the trapped critical saturation, Scrt, - // using Land's method. The calculation includes the modifications from Jerauld. This is equation 2.162 from - // the IX technical description. + // using Land's method. The calculation includes the modifications from Jerauld. real64 const S = phaseVolFraction; real64 const Scri = imbibitionPhaseMinVolFraction; real64 const Scrd = drainagePhaseMinVolFraction; @@ -744,9 +744,8 @@ TableRelativePermeabilityHysteresis::KernelWrapper:: else { // Step 2: compute the normalized saturation, S_norm, at which the imbibition relperm curve will be evaluated. - // This is equation 2.166 from the IX technical description. real64 const ratio = ( Smx - Scri ) / ( Shy - Scrt ); - real64 const Snorm = Scri + ( S - Scrt ) * ratio; // normalized saturation from equation 2.166 + real64 const Snorm = Scri + ( S - Scrt ) * ratio; // normalized saturation real64 const dSnorm_dS = ratio; // Step 3: evaluate the imbibition relperm, kri(Snorm), at the normalized saturation, Snorm. @@ -761,7 +760,6 @@ TableRelativePermeabilityHysteresis::KernelWrapper:: real64 const krdAtSmx = drainageRelPermEndPoint; // Step 6: apply the formula blending drainage and imbibition relperms from the Killough model. - // This equation 2.165 from the IX technical description. real64 const drainageRelPermRatio = krdAtShy / krdAtSmx; phaseRelPerm = kriAtSnorm * drainageRelPermRatio; dPhaseRelPerm_dPhaseVolFrac = dkriAtSnorm_dS * drainageRelPermRatio; diff --git a/src/coreComponents/constitutive/relativePermeability/VanGenuchtenBakerRelativePermeability.cpp b/src/coreComponents/constitutive/relativePermeability/VanGenuchtenBakerRelativePermeability.cpp index b690d9abcfe..12823c81163 100644 --- a/src/coreComponents/constitutive/relativePermeability/VanGenuchtenBakerRelativePermeability.cpp +++ b/src/coreComponents/constitutive/relativePermeability/VanGenuchtenBakerRelativePermeability.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/relativePermeability/VanGenuchtenBakerRelativePermeability.hpp b/src/coreComponents/constitutive/relativePermeability/VanGenuchtenBakerRelativePermeability.hpp index 88ac8c2eafc..dae8a72c3c7 100644 --- a/src/coreComponents/constitutive/relativePermeability/VanGenuchtenBakerRelativePermeability.hpp +++ b/src/coreComponents/constitutive/relativePermeability/VanGenuchtenBakerRelativePermeability.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -87,7 +87,7 @@ class VanGenuchtenBakerRelativePermeabilityUpdate final : public RelativePermeab * @return (void) * * This function evaluates the relperm function and its derivative at a given phase saturation - * Reference: Eclipse technical description and Petrowiki + * Reference: Petrowiki */ GEOS_HOST_DEVICE GEOS_FORCE_INLINE diff --git a/src/coreComponents/constitutive/relativePermeability/VanGenuchtenStone2RelativePermeability.cpp b/src/coreComponents/constitutive/relativePermeability/VanGenuchtenStone2RelativePermeability.cpp index 816b4639ace..dbb0ee05f0e 100644 --- a/src/coreComponents/constitutive/relativePermeability/VanGenuchtenStone2RelativePermeability.cpp +++ b/src/coreComponents/constitutive/relativePermeability/VanGenuchtenStone2RelativePermeability.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/relativePermeability/VanGenuchtenStone2RelativePermeability.hpp b/src/coreComponents/constitutive/relativePermeability/VanGenuchtenStone2RelativePermeability.hpp index 9896b892950..8a9c6db6217 100644 --- a/src/coreComponents/constitutive/relativePermeability/VanGenuchtenStone2RelativePermeability.hpp +++ b/src/coreComponents/constitutive/relativePermeability/VanGenuchtenStone2RelativePermeability.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -87,7 +87,7 @@ class VanGenuchtenStone2RelativePermeabilityUpdate final : public RelativePermea * @return (void) * * This function evaluates the relperm function and its derivative at a given phase saturation - * Reference: Eclipse technical description and Petrowiki + * Reference: Petrowiki */ GEOS_HOST_DEVICE inline diff --git a/src/coreComponents/constitutive/relativePermeability/layouts.hpp b/src/coreComponents/constitutive/relativePermeability/layouts.hpp index 54c2e307a30..9343a7a36a6 100644 --- a/src/coreComponents/constitutive/relativePermeability/layouts.hpp +++ b/src/coreComponents/constitutive/relativePermeability/layouts.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/solid/CeramicDamage.cpp b/src/coreComponents/constitutive/solid/CeramicDamage.cpp index 77cc069f45b..389cf93a711 100644 --- a/src/coreComponents/constitutive/solid/CeramicDamage.cpp +++ b/src/coreComponents/constitutive/solid/CeramicDamage.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/solid/CeramicDamage.hpp b/src/coreComponents/constitutive/solid/CeramicDamage.hpp index e53fb9c4eb7..1575fe84fac 100644 --- a/src/coreComponents/constitutive/solid/CeramicDamage.hpp +++ b/src/coreComponents/constitutive/solid/CeramicDamage.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/solid/CompressibleSolid.cpp b/src/coreComponents/constitutive/solid/CompressibleSolid.cpp index 2366d66654b..a0e5609b618 100644 --- a/src/coreComponents/constitutive/solid/CompressibleSolid.cpp +++ b/src/coreComponents/constitutive/solid/CompressibleSolid.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/solid/CompressibleSolid.hpp b/src/coreComponents/constitutive/solid/CompressibleSolid.hpp index 0fc8464a260..83e0690e9a4 100644 --- a/src/coreComponents/constitutive/solid/CompressibleSolid.hpp +++ b/src/coreComponents/constitutive/solid/CompressibleSolid.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/solid/CoupledSolid.hpp b/src/coreComponents/constitutive/solid/CoupledSolid.hpp index e255738fd22..2c2e508e12a 100644 --- a/src/coreComponents/constitutive/solid/CoupledSolid.hpp +++ b/src/coreComponents/constitutive/solid/CoupledSolid.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/solid/CoupledSolidBase.cpp b/src/coreComponents/constitutive/solid/CoupledSolidBase.cpp index 70cdb0f1a3c..14c7a2fcc0b 100644 --- a/src/coreComponents/constitutive/solid/CoupledSolidBase.cpp +++ b/src/coreComponents/constitutive/solid/CoupledSolidBase.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/solid/CoupledSolidBase.hpp b/src/coreComponents/constitutive/solid/CoupledSolidBase.hpp index abeb42ffb23..c91395707f1 100644 --- a/src/coreComponents/constitutive/solid/CoupledSolidBase.hpp +++ b/src/coreComponents/constitutive/solid/CoupledSolidBase.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/solid/Damage.cpp b/src/coreComponents/constitutive/solid/Damage.cpp index 46f64f49621..6515fe4990d 100644 --- a/src/coreComponents/constitutive/solid/Damage.cpp +++ b/src/coreComponents/constitutive/solid/Damage.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/solid/Damage.hpp b/src/coreComponents/constitutive/solid/Damage.hpp index 53eb7b6b1b4..5c2cc22488e 100644 --- a/src/coreComponents/constitutive/solid/Damage.hpp +++ b/src/coreComponents/constitutive/solid/Damage.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/solid/DamageSpectral.cpp b/src/coreComponents/constitutive/solid/DamageSpectral.cpp index 995870109c1..68e67cd0fb6 100644 --- a/src/coreComponents/constitutive/solid/DamageSpectral.cpp +++ b/src/coreComponents/constitutive/solid/DamageSpectral.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/solid/DamageSpectral.hpp b/src/coreComponents/constitutive/solid/DamageSpectral.hpp index 6e2fe29a2b2..5ad79b47567 100644 --- a/src/coreComponents/constitutive/solid/DamageSpectral.hpp +++ b/src/coreComponents/constitutive/solid/DamageSpectral.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/solid/DamageSpectralUtilities.hpp b/src/coreComponents/constitutive/solid/DamageSpectralUtilities.hpp index ebd09c0defe..1706ded507a 100644 --- a/src/coreComponents/constitutive/solid/DamageSpectralUtilities.hpp +++ b/src/coreComponents/constitutive/solid/DamageSpectralUtilities.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/solid/DamageVolDev.cpp b/src/coreComponents/constitutive/solid/DamageVolDev.cpp index 5b739797f08..0bacfa2a8dd 100644 --- a/src/coreComponents/constitutive/solid/DamageVolDev.cpp +++ b/src/coreComponents/constitutive/solid/DamageVolDev.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/solid/DamageVolDev.hpp b/src/coreComponents/constitutive/solid/DamageVolDev.hpp index 5121efd3264..914a5d2cc4e 100644 --- a/src/coreComponents/constitutive/solid/DamageVolDev.hpp +++ b/src/coreComponents/constitutive/solid/DamageVolDev.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/solid/DelftEgg.cpp b/src/coreComponents/constitutive/solid/DelftEgg.cpp index c0067b98c74..cd45347cb72 100644 --- a/src/coreComponents/constitutive/solid/DelftEgg.cpp +++ b/src/coreComponents/constitutive/solid/DelftEgg.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/solid/DelftEgg.hpp b/src/coreComponents/constitutive/solid/DelftEgg.hpp index aa0d523b96e..5789b46178c 100644 --- a/src/coreComponents/constitutive/solid/DelftEgg.hpp +++ b/src/coreComponents/constitutive/solid/DelftEgg.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/solid/Deprecated/PoreVolumeCompressibleSolid.cpp b/src/coreComponents/constitutive/solid/Deprecated/PoreVolumeCompressibleSolid.cpp index d5dd8ae8571..6952ec194cf 100644 --- a/src/coreComponents/constitutive/solid/Deprecated/PoreVolumeCompressibleSolid.cpp +++ b/src/coreComponents/constitutive/solid/Deprecated/PoreVolumeCompressibleSolid.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/solid/Deprecated/PoreVolumeCompressibleSolid.hpp b/src/coreComponents/constitutive/solid/Deprecated/PoreVolumeCompressibleSolid.hpp index 41fea87e3a0..fa60f97d4ab 100644 --- a/src/coreComponents/constitutive/solid/Deprecated/PoreVolumeCompressibleSolid.hpp +++ b/src/coreComponents/constitutive/solid/Deprecated/PoreVolumeCompressibleSolid.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/solid/Deprecated/PoroElastic.cpp b/src/coreComponents/constitutive/solid/Deprecated/PoroElastic.cpp index 45e3b5d0163..688140ec100 100644 --- a/src/coreComponents/constitutive/solid/Deprecated/PoroElastic.cpp +++ b/src/coreComponents/constitutive/solid/Deprecated/PoroElastic.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/solid/Deprecated/PoroElastic.hpp b/src/coreComponents/constitutive/solid/Deprecated/PoroElastic.hpp index 730c7366741..9d3c1e9a359 100644 --- a/src/coreComponents/constitutive/solid/Deprecated/PoroElastic.hpp +++ b/src/coreComponents/constitutive/solid/Deprecated/PoroElastic.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/solid/DruckerPrager.cpp b/src/coreComponents/constitutive/solid/DruckerPrager.cpp index 31f5eadde37..cfdbfb05253 100644 --- a/src/coreComponents/constitutive/solid/DruckerPrager.cpp +++ b/src/coreComponents/constitutive/solid/DruckerPrager.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/solid/DruckerPrager.hpp b/src/coreComponents/constitutive/solid/DruckerPrager.hpp index 559b2574a6f..f741f60166d 100644 --- a/src/coreComponents/constitutive/solid/DruckerPrager.hpp +++ b/src/coreComponents/constitutive/solid/DruckerPrager.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/solid/DruckerPragerExtended.cpp b/src/coreComponents/constitutive/solid/DruckerPragerExtended.cpp index 589017c137b..2158e78f3a0 100644 --- a/src/coreComponents/constitutive/solid/DruckerPragerExtended.cpp +++ b/src/coreComponents/constitutive/solid/DruckerPragerExtended.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/solid/DruckerPragerExtended.hpp b/src/coreComponents/constitutive/solid/DruckerPragerExtended.hpp index 3ee5589a467..20869d79e66 100644 --- a/src/coreComponents/constitutive/solid/DruckerPragerExtended.hpp +++ b/src/coreComponents/constitutive/solid/DruckerPragerExtended.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/solid/DuvautLionsSolid.cpp b/src/coreComponents/constitutive/solid/DuvautLionsSolid.cpp index e6de4db060a..4e3e128adee 100644 --- a/src/coreComponents/constitutive/solid/DuvautLionsSolid.cpp +++ b/src/coreComponents/constitutive/solid/DuvautLionsSolid.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/solid/DuvautLionsSolid.hpp b/src/coreComponents/constitutive/solid/DuvautLionsSolid.hpp index aea9de6e248..8c3bd5d849c 100644 --- a/src/coreComponents/constitutive/solid/DuvautLionsSolid.hpp +++ b/src/coreComponents/constitutive/solid/DuvautLionsSolid.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/solid/ElasticIsotropic.cpp b/src/coreComponents/constitutive/solid/ElasticIsotropic.cpp index 0567a493b3f..773087398a4 100644 --- a/src/coreComponents/constitutive/solid/ElasticIsotropic.cpp +++ b/src/coreComponents/constitutive/solid/ElasticIsotropic.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/solid/ElasticIsotropic.hpp b/src/coreComponents/constitutive/solid/ElasticIsotropic.hpp index b6388f8e907..97573fce5f3 100644 --- a/src/coreComponents/constitutive/solid/ElasticIsotropic.hpp +++ b/src/coreComponents/constitutive/solid/ElasticIsotropic.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -135,6 +135,11 @@ class ElasticIsotropicUpdates : public SolidBaseUpdates localIndex const q, real64 ( &elasticStrain )[6] ) const override final; + GEOS_HOST_DEVICE + virtual void getElasticStrainInc( localIndex const k, + localIndex const q, + real64 ( &elasticStrainInc )[6] ) const override final; + GEOS_HOST_DEVICE virtual real64 getBulkModulus( localIndex const k ) const override final { @@ -171,6 +176,13 @@ class ElasticIsotropicUpdates : public SolidBaseUpdates protected: + GEOS_HOST_DEVICE + virtual void computeElasticStrain( localIndex const k, + localIndex const q, + real64 const ( &stress )[6], + real64 ( &elasticStrainInc )[6] ) const; + + /// A reference to the ArrayView holding the bulk modulus for each element. arrayView1d< real64 const > const m_bulkModulus; @@ -210,24 +222,53 @@ void ElasticIsotropicUpdates::getElasticStiffness( localIndex const k, } +GEOS_HOST_DEVICE +inline +void ElasticIsotropicUpdates::computeElasticStrain( localIndex const k, + localIndex const q, + real64 const ( &stress )[6], + real64 ( & elasticStrain)[6] ) const +{ + GEOS_UNUSED_VAR( q ); + real64 const E = conversions::bulkModAndShearMod::toYoungMod( m_bulkModulus[k], m_shearModulus[k] ); + real64 const nu = conversions::bulkModAndShearMod::toPoissonRatio( m_bulkModulus[k], m_shearModulus[k] ); + + elasticStrain[0] = ( stress[0] - nu*stress[1] - nu*stress[2])/E; + elasticStrain[1] = (-nu*stress[0] + stress[1] - nu*stress[2])/E; + elasticStrain[2] = (-nu*stress[0] - nu*stress[1] + stress[2])/E; + + elasticStrain[3] = stress[3] / m_shearModulus[k]; + elasticStrain[4] = stress[4] / m_shearModulus[k]; + elasticStrain[5] = stress[5] / m_shearModulus[k]; +} + GEOS_HOST_DEVICE inline void ElasticIsotropicUpdates::getElasticStrain( localIndex const k, localIndex const q, real64 ( & elasticStrain)[6] ) const { - real64 const E = conversions::bulkModAndShearMod::toYoungMod( m_bulkModulus[k], m_shearModulus[k] ); - real64 const nu = conversions::bulkModAndShearMod::toPoissonRatio( m_bulkModulus[k], m_shearModulus[k] ); - elasticStrain[0] = ( m_newStress[k][q][0] - nu*m_newStress[k][q][1] - nu*m_newStress[k][q][2])/E; - elasticStrain[1] = (-nu*m_newStress[k][q][0] + m_newStress[k][q][1] - nu*m_newStress[k][q][2])/E; - elasticStrain[2] = (-nu*m_newStress[k][q][0] - nu*m_newStress[k][q][1] + m_newStress[k][q][2])/E; + real64 stress[6] = {m_newStress[k][q][0], m_newStress[k][q][1], m_newStress[k][q][2], m_newStress[k][q][3], m_newStress[k][q][4], m_newStress[k][q][5]}; + + computeElasticStrain( k, q, stress, elasticStrain ); - elasticStrain[3] = m_newStress[k][q][3] / m_shearModulus[k]; - elasticStrain[4] = m_newStress[k][q][4] / m_shearModulus[k]; - elasticStrain[5] = m_newStress[k][q][5] / m_shearModulus[k]; } +GEOS_HOST_DEVICE +inline +void ElasticIsotropicUpdates::getElasticStrainInc( localIndex const k, + localIndex const q, + real64 ( & elasticStrainInc)[6] ) const +{ + + real64 stress[6] = + {m_newStress[k][q][0] - m_oldStress[k][q][0], m_newStress[k][q][1] - m_oldStress[k][q][1], m_newStress[k][q][2] - m_oldStress[k][q][2], m_newStress[k][q][3] - m_oldStress[k][q][3], + m_newStress[k][q][4] - m_oldStress[k][q][4], m_newStress[k][q][5] - m_oldStress[k][q][5]}; + + computeElasticStrain( k, q, stress, elasticStrainInc ); + +} GEOS_HOST_DEVICE inline diff --git a/src/coreComponents/constitutive/solid/ElasticIsotropicPressureDependent.cpp b/src/coreComponents/constitutive/solid/ElasticIsotropicPressureDependent.cpp index fc6221a64fa..95172384a19 100644 --- a/src/coreComponents/constitutive/solid/ElasticIsotropicPressureDependent.cpp +++ b/src/coreComponents/constitutive/solid/ElasticIsotropicPressureDependent.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/solid/ElasticIsotropicPressureDependent.hpp b/src/coreComponents/constitutive/solid/ElasticIsotropicPressureDependent.hpp index 3718765d3b2..01f36bf937f 100644 --- a/src/coreComponents/constitutive/solid/ElasticIsotropicPressureDependent.hpp +++ b/src/coreComponents/constitutive/solid/ElasticIsotropicPressureDependent.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -115,6 +115,11 @@ class ElasticIsotropicPressureDependentUpdates : public SolidBaseUpdates localIndex const q, real64 ( &elasticStrain )[6] ) const override final; + GEOS_HOST_DEVICE + virtual void getElasticStrainInc( localIndex const k, + localIndex const q, + real64 ( &elasticStrainInc )[6] ) const override final; + GEOS_HOST_DEVICE virtual void viscousStateUpdate( localIndex const k, localIndex const q, @@ -223,6 +228,60 @@ void ElasticIsotropicPressureDependentUpdates::getElasticStrain( localIndex cons } +GEOS_HOST_DEVICE +inline +void ElasticIsotropicPressureDependentUpdates::getElasticStrainInc( localIndex const k, + localIndex const q, + real64 ( & elasticStrainInc)[6] ) const +{ + real64 const mu = m_shearModulus[k]; + real64 const p0 = m_refPressure; + real64 const eps_v0 = m_refStrainVol; + real64 const Cr = m_recompressionIndex[k]; + real64 deviator[6]{}; + real64 stress[6]{}; + real64 P; + real64 Q; + + LvArray::tensorOps::copy< 6 >( stress, m_newStress[k][q] ); + + twoInvariant::stressDecomposition( stress, + P, + Q, + deviator ); + + real64 elasticStrainVol = LvArray::math::log( P/p0 ) * Cr * (-1.0) + eps_v0; + real64 elasticStrainDev = Q/3./mu; + + twoInvariant::strainRecomposition( elasticStrainVol, + elasticStrainDev, + deviator, + elasticStrainInc ); + + real64 oldStrain[6]{}; + + LvArray::tensorOps::copy< 6 >( stress, m_oldStress[k][q] ); + + twoInvariant::stressDecomposition( stress, + P, + Q, + deviator ); + + elasticStrainVol = LvArray::math::log( P/p0 ) * Cr * (-1.0) + eps_v0; + elasticStrainDev = Q/3./mu; + + twoInvariant::strainRecomposition( elasticStrainVol, + elasticStrainDev, + deviator, + oldStrain ); + + for( localIndex i = 0; i<6; ++i ) + { + elasticStrainInc[i] -= oldStrain[i]; + } +} + + GEOS_HOST_DEVICE inline void ElasticIsotropicPressureDependentUpdates::smallStrainUpdate( localIndex const k, diff --git a/src/coreComponents/constitutive/solid/ElasticOrthotropic.cpp b/src/coreComponents/constitutive/solid/ElasticOrthotropic.cpp index 53ec491e631..7c707d690cc 100644 --- a/src/coreComponents/constitutive/solid/ElasticOrthotropic.cpp +++ b/src/coreComponents/constitutive/solid/ElasticOrthotropic.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/solid/ElasticOrthotropic.hpp b/src/coreComponents/constitutive/solid/ElasticOrthotropic.hpp index 8b2de4284a5..49179c5a95a 100644 --- a/src/coreComponents/constitutive/solid/ElasticOrthotropic.hpp +++ b/src/coreComponents/constitutive/solid/ElasticOrthotropic.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -147,6 +147,16 @@ class ElasticOrthotropicUpdates : public SolidBaseUpdates real64 ( &stress )[6], DiscretizationOps & stiffness ) const final; + GEOS_HOST_DEVICE + virtual void getElasticStrain( localIndex const k, + localIndex const q, + real64 ( &elasticStrain )[6] ) const override final; + + GEOS_HOST_DEVICE + virtual void getElasticStrainInc( localIndex const k, + localIndex const q, + real64 ( &elasticStrainInc )[6] ) const override final; + // miscellaneous getters GEOS_HOST_DEVICE @@ -162,6 +172,13 @@ class ElasticOrthotropicUpdates : public SolidBaseUpdates return LvArray::math::max( LvArray::math::max( m_c44[k], m_c55[k] ), m_c66[k] ); } +protected: + GEOS_HOST_DEVICE + virtual void computeElasticStrain( localIndex const k, + localIndex const q, + real64 const (&stress)[6], + real64 ( &elasticStrain )[6] ) const; + private: /// A reference to the ArrayView holding c11 for each element. arrayView1d< real64 const > const m_c11; @@ -219,6 +236,64 @@ void ElasticOrthotropicUpdates::getElasticStiffness( localIndex const k, stiffness[5][5] = m_c66[k]; } + +GEOS_HOST_DEVICE +inline +void ElasticOrthotropicUpdates::computeElasticStrain( localIndex const k, + localIndex const q, + real64 const (&stress)[6], + real64 ( & elasticStrain)[6] ) const +{ + + GEOS_UNUSED_VAR( q ); + + real64 const detC = m_c11[k]*(m_c22[k]*m_c33[k] - m_c23[k]*m_c23[k]) - m_c12[k]*(m_c12[k]*m_c33[k] - m_c23[k]*m_c13[k]) + m_c13[k]*(m_c12[k]*m_c23[k] - m_c22[k]*m_c13[k]); + + elasticStrain[0] = + ( (m_c22[k]*m_c33[k] - m_c23[k]*m_c23[k])*stress[0] + (m_c13[k]*m_c23[k] - m_c12[k]*m_c33[k])*stress[1] + (m_c12[k]*m_c23[k] - m_c13[k]*m_c22[k])*stress[2] ) / + detC; + elasticStrain[1] = + ( (m_c23[k]*m_c13[k] - m_c12[k]*m_c33[k])*stress[0] + (m_c11[k]*m_c33[k] - m_c13[k]*m_c13[k])*stress[1] + (m_c13[k]*m_c12[k] - m_c11[k]*m_c23[k])*stress[2] ) / + detC; + elasticStrain[2] = + ( (m_c12[k]*m_c23[k] - m_c22[k]*m_c13[k])*stress[0] + (m_c12[k]*m_c13[k] - m_c11[k]*m_c23[k])*stress[1] + (m_c11[k]*m_c22[k] - m_c12[k]*m_c12[k])*stress[2] ) / + detC; + + elasticStrain[3] = stress[3] / m_c44[k]; + elasticStrain[4] = stress[4] / m_c55[k]; + elasticStrain[5] = stress[5] / m_c66[k]; +} + + +GEOS_HOST_DEVICE +inline +void ElasticOrthotropicUpdates::getElasticStrain( localIndex const k, + localIndex const q, + real64 ( & elasticStrain)[6] ) const +{ + + real64 stress[6] = {m_newStress[k][q][0], m_newStress[k][q][1], m_newStress[k][q][2], m_newStress[k][q][3], m_newStress[k][q][4], m_newStress[k][q][5]}; + + computeElasticStrain( k, q, stress, elasticStrain ); + +} + +GEOS_HOST_DEVICE +inline +void ElasticOrthotropicUpdates::getElasticStrainInc( localIndex const k, + localIndex const q, + real64 ( & elasticStrainInc)[6] ) const +{ + + real64 stress[6] = + {m_newStress[k][q][0] - m_oldStress[k][q][0], m_newStress[k][q][1] - m_oldStress[k][q][1], m_newStress[k][q][2] - m_oldStress[k][q][2], m_newStress[k][q][3] - m_oldStress[k][q][3], + m_newStress[k][q][4] - m_oldStress[k][q][4], m_newStress[k][q][5] - m_oldStress[k][q][5]}; + + computeElasticStrain( k, q, stress, elasticStrainInc ); + +} + + inline GEOS_HOST_DEVICE void ElasticOrthotropicUpdates::smallStrainNoStateUpdate_StressOnly( localIndex const k, diff --git a/src/coreComponents/constitutive/solid/ElasticTransverseIsotropic.cpp b/src/coreComponents/constitutive/solid/ElasticTransverseIsotropic.cpp index 5e96b28a251..9cad0340f36 100644 --- a/src/coreComponents/constitutive/solid/ElasticTransverseIsotropic.cpp +++ b/src/coreComponents/constitutive/solid/ElasticTransverseIsotropic.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/solid/ElasticTransverseIsotropic.hpp b/src/coreComponents/constitutive/solid/ElasticTransverseIsotropic.hpp index 0e5f53fe2b3..17fabe5479e 100644 --- a/src/coreComponents/constitutive/solid/ElasticTransverseIsotropic.hpp +++ b/src/coreComponents/constitutive/solid/ElasticTransverseIsotropic.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -144,6 +144,16 @@ class ElasticTransverseIsotropicUpdates : public SolidBaseUpdates GEOS_HOST_DEVICE virtual void getElasticStiffness( localIndex const k, localIndex const q, real64 ( &stiffness )[6][6] ) const override final; + GEOS_HOST_DEVICE + virtual void getElasticStrain( localIndex const k, + localIndex const q, + real64 ( &elasticStrain )[6] ) const override final; + + GEOS_HOST_DEVICE + virtual void getElasticStrainInc( localIndex const k, + localIndex const q, + real64 ( &elasticStrainInc )[6] ) const override final; + /** * @brief Getter for apparent shear modulus. * @return reference to shear modulus that will be used for computing stabilization scalling parameter. @@ -155,6 +165,15 @@ class ElasticTransverseIsotropicUpdates : public SolidBaseUpdates } +protected: + + GEOS_HOST_DEVICE + virtual void computeElasticStrain( localIndex const k, + localIndex const q, + real64 const (&stress)[6], + real64 ( &elasticStrain )[6] ) const; + + private: /// A reference to the ArrayView holding c11 for each element. @@ -200,6 +219,57 @@ void ElasticTransverseIsotropicUpdates::getElasticStiffness( localIndex const k, stiffness[5][5] = m_c66[k]; } +GEOS_HOST_DEVICE +inline +void ElasticTransverseIsotropicUpdates::computeElasticStrain( localIndex const k, + localIndex const q, + real64 const (&stress)[6], + real64 ( & elasticStrain)[6] ) const +{ + GEOS_UNUSED_VAR( q ); + real64 const c12 = ( m_c11[k] - 2.0 * m_c66[k] ); + real64 const detC = m_c11[k]*(m_c11[k]*m_c33[k] - m_c13[k]*m_c13[k]) - c12*(c12*m_c33[k] - m_c13[k]*m_c13[k]) + m_c13[k]*(c12*m_c13[k] - m_c11[k]*m_c13[k]); + + elasticStrain[0] = + ( (m_c11[k]*m_c33[k] - m_c13[k]*m_c13[k])*stress[0] + (m_c13[k]*m_c13[k] - c12*m_c33[k])*stress[1] + (c12*m_c13[k] - m_c13[k]*m_c11[k])*stress[2] ) / detC; + elasticStrain[1] = + ( (m_c13[k]*m_c13[k] - c12*m_c33[k])*stress[0] + (m_c11[k]*m_c33[k] - m_c13[k]*m_c13[k])*stress[1] + (m_c13[k]*c12 - m_c11[k]*m_c13[k])*stress[2] ) / detC; + elasticStrain[2] = ( (c12*m_c13[k] - m_c11[k]*m_c13[k])*stress[0] + (c12*m_c13[k] - m_c11[k]*m_c13[k])*stress[1] + (m_c11[k]*m_c11[k] - c12*c12)*stress[2] ) / detC; + + elasticStrain[3] = stress[3] / m_c44[k]; + elasticStrain[4] = stress[4] / m_c44[k]; + elasticStrain[5] = stress[5] / m_c66[k]; +} + + +GEOS_HOST_DEVICE +inline +void ElasticTransverseIsotropicUpdates::getElasticStrain( localIndex const k, + localIndex const q, + real64 ( & elasticStrain)[6] ) const +{ + + real64 stress[6] = {m_newStress[k][q][0], m_newStress[k][q][1], m_newStress[k][q][2], m_newStress[k][q][3], m_newStress[k][q][4], m_newStress[k][q][5]}; + + computeElasticStrain( k, q, stress, elasticStrain ); + +} + +GEOS_HOST_DEVICE +inline +void ElasticTransverseIsotropicUpdates::getElasticStrainInc( localIndex const k, + localIndex const q, + real64 ( & elasticStrainInc)[6] ) const +{ + + real64 stress[6] = + {m_newStress[k][q][0] - m_oldStress[k][q][0], m_newStress[k][q][1] - m_oldStress[k][q][1], m_newStress[k][q][2] - m_oldStress[k][q][2], m_newStress[k][q][3] - m_oldStress[k][q][3], + m_newStress[k][q][4] - m_oldStress[k][q][4], m_newStress[k][q][5] - m_oldStress[k][q][5]}; + + computeElasticStrain( k, q, stress, elasticStrainInc ); + +} + inline GEOS_HOST_DEVICE void ElasticTransverseIsotropicUpdates::smallStrainNoStateUpdate_StressOnly( localIndex const k, diff --git a/src/coreComponents/constitutive/solid/InvariantDecompositions.hpp b/src/coreComponents/constitutive/solid/InvariantDecompositions.hpp index fed49ad74f7..588d3e69f33 100644 --- a/src/coreComponents/constitutive/solid/InvariantDecompositions.hpp +++ b/src/coreComponents/constitutive/solid/InvariantDecompositions.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/solid/ModifiedCamClay.cpp b/src/coreComponents/constitutive/solid/ModifiedCamClay.cpp index f5dfae8f624..6d0e8f401d6 100644 --- a/src/coreComponents/constitutive/solid/ModifiedCamClay.cpp +++ b/src/coreComponents/constitutive/solid/ModifiedCamClay.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/solid/ModifiedCamClay.hpp b/src/coreComponents/constitutive/solid/ModifiedCamClay.hpp index 8098ed1a851..4377571e603 100644 --- a/src/coreComponents/constitutive/solid/ModifiedCamClay.hpp +++ b/src/coreComponents/constitutive/solid/ModifiedCamClay.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/solid/PerfectlyPlastic.cpp b/src/coreComponents/constitutive/solid/PerfectlyPlastic.cpp index e7425e97c0c..a1d39db1f50 100644 --- a/src/coreComponents/constitutive/solid/PerfectlyPlastic.cpp +++ b/src/coreComponents/constitutive/solid/PerfectlyPlastic.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/solid/PerfectlyPlastic.hpp b/src/coreComponents/constitutive/solid/PerfectlyPlastic.hpp index 58531b5fa8b..d1faf2ff686 100644 --- a/src/coreComponents/constitutive/solid/PerfectlyPlastic.hpp +++ b/src/coreComponents/constitutive/solid/PerfectlyPlastic.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/solid/PorousSolid.cpp b/src/coreComponents/constitutive/solid/PorousSolid.cpp index b4641e0b863..9514e505fe2 100644 --- a/src/coreComponents/constitutive/solid/PorousSolid.cpp +++ b/src/coreComponents/constitutive/solid/PorousSolid.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/solid/PorousSolid.hpp b/src/coreComponents/constitutive/solid/PorousSolid.hpp index 92502fd947c..b4a9429eb43 100644 --- a/src/coreComponents/constitutive/solid/PorousSolid.hpp +++ b/src/coreComponents/constitutive/solid/PorousSolid.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/solid/PropertyConversions.hpp b/src/coreComponents/constitutive/solid/PropertyConversions.hpp index 232004c7388..169e70c9ed5 100644 --- a/src/coreComponents/constitutive/solid/PropertyConversions.hpp +++ b/src/coreComponents/constitutive/solid/PropertyConversions.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/solid/ProppantSolid.cpp b/src/coreComponents/constitutive/solid/ProppantSolid.cpp index 60fae0f7796..db1d67d2aac 100644 --- a/src/coreComponents/constitutive/solid/ProppantSolid.cpp +++ b/src/coreComponents/constitutive/solid/ProppantSolid.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/solid/ProppantSolid.hpp b/src/coreComponents/constitutive/solid/ProppantSolid.hpp index ef3f596fb39..084689a7c73 100644 --- a/src/coreComponents/constitutive/solid/ProppantSolid.hpp +++ b/src/coreComponents/constitutive/solid/ProppantSolid.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/solid/SolidBase.cpp b/src/coreComponents/constitutive/solid/SolidBase.cpp index 88985c4c710..f22cec62d93 100644 --- a/src/coreComponents/constitutive/solid/SolidBase.cpp +++ b/src/coreComponents/constitutive/solid/SolidBase.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/solid/SolidBase.hpp b/src/coreComponents/constitutive/solid/SolidBase.hpp index cbcf7ffaca8..b56bd38b53a 100644 --- a/src/coreComponents/constitutive/solid/SolidBase.hpp +++ b/src/coreComponents/constitutive/solid/SolidBase.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -337,6 +337,24 @@ class SolidBaseUpdates GEOS_ERROR( "getElasticStrain() not implemented for this model" ); } + /** + * @brief Return the current elastic strain increment at a given material point (small-strain interface) + * + * @param k the element inex + * @param q the quadrature index + * @param elasticStrainInc Current elastic strain increment + */ + GEOS_HOST_DEVICE + virtual void getElasticStrainInc( localIndex const k, + localIndex const q, + real64 ( & elasticStrainInc )[6] ) const + { + GEOS_UNUSED_VAR( k ); + GEOS_UNUSED_VAR( q ); + GEOS_UNUSED_VAR( elasticStrainInc ); + GEOS_ERROR( "getElasticStrainInc() of SolidBase was called." ); + } + /** * @brief Perform a viscous (rate-dependent) state update * diff --git a/src/coreComponents/constitutive/solid/SolidInternalEnergy.cpp b/src/coreComponents/constitutive/solid/SolidInternalEnergy.cpp index ccd670cd40c..6f78fd8c78b 100644 --- a/src/coreComponents/constitutive/solid/SolidInternalEnergy.cpp +++ b/src/coreComponents/constitutive/solid/SolidInternalEnergy.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/solid/SolidInternalEnergy.hpp b/src/coreComponents/constitutive/solid/SolidInternalEnergy.hpp index 49dde48bb02..20dcdf52abb 100644 --- a/src/coreComponents/constitutive/solid/SolidInternalEnergy.hpp +++ b/src/coreComponents/constitutive/solid/SolidInternalEnergy.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/solid/SolidModelDiscretizationOps.hpp b/src/coreComponents/constitutive/solid/SolidModelDiscretizationOps.hpp index 710449b0a19..2e196534bf6 100644 --- a/src/coreComponents/constitutive/solid/SolidModelDiscretizationOps.hpp +++ b/src/coreComponents/constitutive/solid/SolidModelDiscretizationOps.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/solid/SolidModelDiscretizationOpsFullyAnisotroipic.hpp b/src/coreComponents/constitutive/solid/SolidModelDiscretizationOpsFullyAnisotroipic.hpp index a3e3ccb715e..6eefc6d686f 100644 --- a/src/coreComponents/constitutive/solid/SolidModelDiscretizationOpsFullyAnisotroipic.hpp +++ b/src/coreComponents/constitutive/solid/SolidModelDiscretizationOpsFullyAnisotroipic.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/solid/SolidModelDiscretizationOpsIsotropic.hpp b/src/coreComponents/constitutive/solid/SolidModelDiscretizationOpsIsotropic.hpp index 27cdf14073b..78172ee75f9 100644 --- a/src/coreComponents/constitutive/solid/SolidModelDiscretizationOpsIsotropic.hpp +++ b/src/coreComponents/constitutive/solid/SolidModelDiscretizationOpsIsotropic.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/solid/SolidModelDiscretizationOpsOrthotropic.hpp b/src/coreComponents/constitutive/solid/SolidModelDiscretizationOpsOrthotropic.hpp index 435802503b9..a16fdb8fb23 100644 --- a/src/coreComponents/constitutive/solid/SolidModelDiscretizationOpsOrthotropic.hpp +++ b/src/coreComponents/constitutive/solid/SolidModelDiscretizationOpsOrthotropic.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/solid/SolidModelDiscretizationOpsTransverseIsotropic.hpp b/src/coreComponents/constitutive/solid/SolidModelDiscretizationOpsTransverseIsotropic.hpp index e4a6f6d75b9..9cf78b133de 100644 --- a/src/coreComponents/constitutive/solid/SolidModelDiscretizationOpsTransverseIsotropic.hpp +++ b/src/coreComponents/constitutive/solid/SolidModelDiscretizationOpsTransverseIsotropic.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/solid/SolidUtilities.hpp b/src/coreComponents/constitutive/solid/SolidUtilities.hpp index 59cd1c79a91..337b7f30509 100644 --- a/src/coreComponents/constitutive/solid/SolidUtilities.hpp +++ b/src/coreComponents/constitutive/solid/SolidUtilities.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/solid/porosity/BiotPorosity.cpp b/src/coreComponents/constitutive/solid/porosity/BiotPorosity.cpp index ca0bcfc2a2e..37454064d27 100644 --- a/src/coreComponents/constitutive/solid/porosity/BiotPorosity.cpp +++ b/src/coreComponents/constitutive/solid/porosity/BiotPorosity.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/solid/porosity/BiotPorosity.hpp b/src/coreComponents/constitutive/solid/porosity/BiotPorosity.hpp index 1e7087744f7..8ea2df08b22 100644 --- a/src/coreComponents/constitutive/solid/porosity/BiotPorosity.hpp +++ b/src/coreComponents/constitutive/solid/porosity/BiotPorosity.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/solid/porosity/PorosityBase.cpp b/src/coreComponents/constitutive/solid/porosity/PorosityBase.cpp index 4665e9a78be..8b354eaebcc 100644 --- a/src/coreComponents/constitutive/solid/porosity/PorosityBase.cpp +++ b/src/coreComponents/constitutive/solid/porosity/PorosityBase.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/solid/porosity/PorosityBase.hpp b/src/coreComponents/constitutive/solid/porosity/PorosityBase.hpp index 2f5486e73a0..72cffcf623f 100644 --- a/src/coreComponents/constitutive/solid/porosity/PorosityBase.hpp +++ b/src/coreComponents/constitutive/solid/porosity/PorosityBase.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/solid/porosity/PorosityFields.hpp b/src/coreComponents/constitutive/solid/porosity/PorosityFields.hpp index 835a15ec859..60b90dcbff1 100644 --- a/src/coreComponents/constitutive/solid/porosity/PorosityFields.hpp +++ b/src/coreComponents/constitutive/solid/porosity/PorosityFields.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/solid/porosity/PressurePorosity.cpp b/src/coreComponents/constitutive/solid/porosity/PressurePorosity.cpp index 37b79e20fdf..cf62672c08d 100644 --- a/src/coreComponents/constitutive/solid/porosity/PressurePorosity.cpp +++ b/src/coreComponents/constitutive/solid/porosity/PressurePorosity.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/solid/porosity/PressurePorosity.hpp b/src/coreComponents/constitutive/solid/porosity/PressurePorosity.hpp index 10b896a40ef..37228c53c65 100644 --- a/src/coreComponents/constitutive/solid/porosity/PressurePorosity.hpp +++ b/src/coreComponents/constitutive/solid/porosity/PressurePorosity.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/solid/porosity/ProppantPorosity.cpp b/src/coreComponents/constitutive/solid/porosity/ProppantPorosity.cpp index cf6f62a5059..fb27663d63d 100644 --- a/src/coreComponents/constitutive/solid/porosity/ProppantPorosity.cpp +++ b/src/coreComponents/constitutive/solid/porosity/ProppantPorosity.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/solid/porosity/ProppantPorosity.hpp b/src/coreComponents/constitutive/solid/porosity/ProppantPorosity.hpp index 49256bbfd80..45a23163aec 100644 --- a/src/coreComponents/constitutive/solid/porosity/ProppantPorosity.hpp +++ b/src/coreComponents/constitutive/solid/porosity/ProppantPorosity.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/thermalConductivity/MultiPhaseConstantThermalConductivity.cpp b/src/coreComponents/constitutive/thermalConductivity/MultiPhaseConstantThermalConductivity.cpp index b7a78462ce5..3ca4d0ba26a 100644 --- a/src/coreComponents/constitutive/thermalConductivity/MultiPhaseConstantThermalConductivity.cpp +++ b/src/coreComponents/constitutive/thermalConductivity/MultiPhaseConstantThermalConductivity.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/thermalConductivity/MultiPhaseConstantThermalConductivity.hpp b/src/coreComponents/constitutive/thermalConductivity/MultiPhaseConstantThermalConductivity.hpp index e819bd9a5dd..8d9edf7bd91 100644 --- a/src/coreComponents/constitutive/thermalConductivity/MultiPhaseConstantThermalConductivity.hpp +++ b/src/coreComponents/constitutive/thermalConductivity/MultiPhaseConstantThermalConductivity.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/thermalConductivity/MultiPhaseThermalConductivityBase.cpp b/src/coreComponents/constitutive/thermalConductivity/MultiPhaseThermalConductivityBase.cpp index 5754a2960ce..8e74a96e8ed 100644 --- a/src/coreComponents/constitutive/thermalConductivity/MultiPhaseThermalConductivityBase.cpp +++ b/src/coreComponents/constitutive/thermalConductivity/MultiPhaseThermalConductivityBase.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/thermalConductivity/MultiPhaseThermalConductivityBase.hpp b/src/coreComponents/constitutive/thermalConductivity/MultiPhaseThermalConductivityBase.hpp index 96c70739b2f..be06063814b 100644 --- a/src/coreComponents/constitutive/thermalConductivity/MultiPhaseThermalConductivityBase.hpp +++ b/src/coreComponents/constitutive/thermalConductivity/MultiPhaseThermalConductivityBase.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/thermalConductivity/MultiPhaseThermalConductivityFields.hpp b/src/coreComponents/constitutive/thermalConductivity/MultiPhaseThermalConductivityFields.hpp index 98107f4f134..335ba640bb1 100644 --- a/src/coreComponents/constitutive/thermalConductivity/MultiPhaseThermalConductivityFields.hpp +++ b/src/coreComponents/constitutive/thermalConductivity/MultiPhaseThermalConductivityFields.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/thermalConductivity/MultiPhaseThermalConductivitySelector.hpp b/src/coreComponents/constitutive/thermalConductivity/MultiPhaseThermalConductivitySelector.hpp index c1036ea94ce..fdb89e7ba00 100644 --- a/src/coreComponents/constitutive/thermalConductivity/MultiPhaseThermalConductivitySelector.hpp +++ b/src/coreComponents/constitutive/thermalConductivity/MultiPhaseThermalConductivitySelector.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/thermalConductivity/MultiPhaseVolumeWeightedThermalConductivity.cpp b/src/coreComponents/constitutive/thermalConductivity/MultiPhaseVolumeWeightedThermalConductivity.cpp index f88f92a932c..f72e78bfdb3 100644 --- a/src/coreComponents/constitutive/thermalConductivity/MultiPhaseVolumeWeightedThermalConductivity.cpp +++ b/src/coreComponents/constitutive/thermalConductivity/MultiPhaseVolumeWeightedThermalConductivity.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/thermalConductivity/MultiPhaseVolumeWeightedThermalConductivity.hpp b/src/coreComponents/constitutive/thermalConductivity/MultiPhaseVolumeWeightedThermalConductivity.hpp index 5e0844f1178..ad1c4b37680 100644 --- a/src/coreComponents/constitutive/thermalConductivity/MultiPhaseVolumeWeightedThermalConductivity.hpp +++ b/src/coreComponents/constitutive/thermalConductivity/MultiPhaseVolumeWeightedThermalConductivity.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/thermalConductivity/SinglePhaseThermalConductivity.cpp b/src/coreComponents/constitutive/thermalConductivity/SinglePhaseThermalConductivity.cpp index aad8dcb5187..51a8082165e 100644 --- a/src/coreComponents/constitutive/thermalConductivity/SinglePhaseThermalConductivity.cpp +++ b/src/coreComponents/constitutive/thermalConductivity/SinglePhaseThermalConductivity.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/thermalConductivity/SinglePhaseThermalConductivity.hpp b/src/coreComponents/constitutive/thermalConductivity/SinglePhaseThermalConductivity.hpp index fa6d7623ef8..e19319c841b 100644 --- a/src/coreComponents/constitutive/thermalConductivity/SinglePhaseThermalConductivity.hpp +++ b/src/coreComponents/constitutive/thermalConductivity/SinglePhaseThermalConductivity.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/thermalConductivity/SinglePhaseThermalConductivityBase.cpp b/src/coreComponents/constitutive/thermalConductivity/SinglePhaseThermalConductivityBase.cpp index 2ee0fa4a908..c0a4b0a47ed 100644 --- a/src/coreComponents/constitutive/thermalConductivity/SinglePhaseThermalConductivityBase.cpp +++ b/src/coreComponents/constitutive/thermalConductivity/SinglePhaseThermalConductivityBase.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/thermalConductivity/SinglePhaseThermalConductivityBase.hpp b/src/coreComponents/constitutive/thermalConductivity/SinglePhaseThermalConductivityBase.hpp index c0037f04751..fd51086b7fa 100644 --- a/src/coreComponents/constitutive/thermalConductivity/SinglePhaseThermalConductivityBase.hpp +++ b/src/coreComponents/constitutive/thermalConductivity/SinglePhaseThermalConductivityBase.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/thermalConductivity/SinglePhaseThermalConductivitySelector.hpp b/src/coreComponents/constitutive/thermalConductivity/SinglePhaseThermalConductivitySelector.hpp index 689dc17d22b..445d6f58c13 100644 --- a/src/coreComponents/constitutive/thermalConductivity/SinglePhaseThermalConductivitySelector.hpp +++ b/src/coreComponents/constitutive/thermalConductivity/SinglePhaseThermalConductivitySelector.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/thermalConductivity/ThermalConductivityFields.hpp b/src/coreComponents/constitutive/thermalConductivity/ThermalConductivityFields.hpp index 52d85814310..64ff08e9a70 100644 --- a/src/coreComponents/constitutive/thermalConductivity/ThermalConductivityFields.hpp +++ b/src/coreComponents/constitutive/thermalConductivity/ThermalConductivityFields.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/unitTests/CMakeLists.txt b/src/coreComponents/constitutive/unitTests/CMakeLists.txt index d357ad9290c..aa095d493c8 100644 --- a/src/coreComponents/constitutive/unitTests/CMakeLists.txt +++ b/src/coreComponents/constitutive/unitTests/CMakeLists.txt @@ -8,6 +8,7 @@ set( gtest_geosx_tests testElasticIsotropic.cpp testKValueInitialization.cpp testImmiscibleWaterFlashModel.cpp + testImmiscibleWaterProperties.cpp testLohrenzBrayClarkViscosity.cpp testModifiedCamClay.cpp testMultiFluidSelector.cpp diff --git a/src/coreComponents/constitutive/unitTests/TestFluid.hpp b/src/coreComponents/constitutive/unitTests/TestFluid.hpp index 18f8393ec14..4728b19aaff 100644 --- a/src/coreComponents/constitutive/unitTests/TestFluid.hpp +++ b/src/coreComponents/constitutive/unitTests/TestFluid.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/unitTests/TestFluidUtilities.hpp b/src/coreComponents/constitutive/unitTests/TestFluidUtilities.hpp index d9824534902..c3d13fc6ed8 100644 --- a/src/coreComponents/constitutive/unitTests/TestFluidUtilities.hpp +++ b/src/coreComponents/constitutive/unitTests/TestFluidUtilities.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/unitTests/testCompositionalDensity.cpp b/src/coreComponents/constitutive/unitTests/testCompositionalDensity.cpp index 5c787084189..2a5c25759a9 100644 --- a/src/coreComponents/constitutive/unitTests/testCompositionalDensity.cpp +++ b/src/coreComponents/constitutive/unitTests/testCompositionalDensity.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/unitTests/testCompositionalProperties.cpp b/src/coreComponents/constitutive/unitTests/testCompositionalProperties.cpp index b4f0ff4e4d4..910fd96059c 100644 --- a/src/coreComponents/constitutive/unitTests/testCompositionalProperties.cpp +++ b/src/coreComponents/constitutive/unitTests/testCompositionalProperties.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/unitTests/testCubicEOS.cpp b/src/coreComponents/constitutive/unitTests/testCubicEOS.cpp index 8a0c0de0d44..7ca010ba8e5 100644 --- a/src/coreComponents/constitutive/unitTests/testCubicEOS.cpp +++ b/src/coreComponents/constitutive/unitTests/testCubicEOS.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/unitTests/testDamageUtilities.cpp b/src/coreComponents/constitutive/unitTests/testDamageUtilities.cpp index ee8eee252b9..c6c676469be 100644 --- a/src/coreComponents/constitutive/unitTests/testDamageUtilities.cpp +++ b/src/coreComponents/constitutive/unitTests/testDamageUtilities.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/unitTests/testDruckerPrager.cpp b/src/coreComponents/constitutive/unitTests/testDruckerPrager.cpp index 06d8292f9a7..69ced2da66c 100644 --- a/src/coreComponents/constitutive/unitTests/testDruckerPrager.cpp +++ b/src/coreComponents/constitutive/unitTests/testDruckerPrager.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/unitTests/testElasticIsotropic.cpp b/src/coreComponents/constitutive/unitTests/testElasticIsotropic.cpp index b514a16eca2..64ecf8d41f2 100644 --- a/src/coreComponents/constitutive/unitTests/testElasticIsotropic.cpp +++ b/src/coreComponents/constitutive/unitTests/testElasticIsotropic.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/unitTests/testImmiscibleWaterFlashModel.cpp b/src/coreComponents/constitutive/unitTests/testImmiscibleWaterFlashModel.cpp index 36716b44831..9f0c5fefe50 100644 --- a/src/coreComponents/constitutive/unitTests/testImmiscibleWaterFlashModel.cpp +++ b/src/coreComponents/constitutive/unitTests/testImmiscibleWaterFlashModel.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/unitTests/testImmiscibleWaterProperties.cpp b/src/coreComponents/constitutive/unitTests/testImmiscibleWaterProperties.cpp new file mode 100644 index 00000000000..d1a6e998b79 --- /dev/null +++ b/src/coreComponents/constitutive/unitTests/testImmiscibleWaterProperties.cpp @@ -0,0 +1,285 @@ +/* + * ------------------------------------------------------------------------------------------------------------ + * SPDX-License-Identifier: LGPL-2.1-only + * + * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC + * Copyright (c) 2018-2024 TotalEnergies + * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University + * Copyright (c) 2023-2024 Chevron + * Copyright (c) 2019- GEOS/GEOSX Contributors + * All rights reserved + * + * See top level LICENSE, COPYRIGHT, CONTRIBUTORS, NOTICE, and ACKNOWLEDGEMENTS files for details. + * ------------------------------------------------------------------------------------------------------------ + */ + +// Source includes +#include "codingUtilities/UnitTestUtilities.hpp" +#include "constitutive/fluid/multifluid/compositional/models/ImmiscibleWaterParameters.hpp" +#include "constitutive/fluid/multifluid/compositional/models/ImmiscibleWaterDensity.hpp" +#include "constitutive/fluid/multifluid/compositional/models/ImmiscibleWaterViscosity.hpp" +#include "TestFluid.hpp" +#include "TestFluidUtilities.hpp" + +using namespace geos::constitutive::compositional; + +namespace geos +{ +namespace testing +{ + +template< int NC > +using TestData = std::tuple< + real64 const, // pressure + real64 const, // temperature + Feed< NC > const, // phase composition + real64 const, // expected molar density + real64 const, // expected mass density + real64 const // expected viscosity + >; + +template< int NC > +struct FluidData {}; + +template<> +struct FluidData< 3 > +{ + static std::unique_ptr< TestFluid< 3 > > createFluid() + { + auto fluid = TestFluid< 3 >::create( {Fluid::C1, Fluid::C10, Fluid::H2O} ); + std::array< real64, 3 > const bics = {0.25, 0.0, 0.0}; + fluid->setBinaryCoefficients( bics ); + return fluid; + } +}; + +template< int NC > +class ImmiscibleWaterPropertiesTestFixture : public ::testing::TestWithParam< TestData< NC > > +{ + static constexpr real64 relTol = 1.0e-5; + static constexpr real64 absTol = 1.0e-7; + static constexpr int numComps = NC; + static constexpr int numDofs = NC + 2; + using Deriv = geos::constitutive::multifluid::DerivativeOffset; +public: + ImmiscibleWaterPropertiesTestFixture() + : m_fluid( FluidData< NC >::createFluid() ) + { + ComponentProperties const & componentProperties = this->m_fluid->getComponentProperties(); + + m_parameters = ImmiscibleWaterDensity::createParameters( std::make_unique< ModelParameters >() ); + m_parameters = ImmiscibleWaterViscosity::createParameters( std::move( m_parameters ) ); + + auto * waterParameters = const_cast< ImmiscibleWaterParameters * >(m_parameters->get< ImmiscibleWaterParameters >()); + waterParameters->m_waterReferencePressure = 215.0e5; + waterParameters->m_waterDensity = 1020.0; + waterParameters->m_waterCompressibility = 4.1483E-10; + waterParameters->m_waterViscosityCompressibility = 2.0E-11; + waterParameters->m_waterViscosity = 0.32929e-3; + + m_density = std::make_unique< ImmiscibleWaterDensity >( "PhaseDensity", componentProperties, 0, *m_parameters ); + m_viscosity = std::make_unique< ImmiscibleWaterViscosity >( "PhaseViscosity", componentProperties, 0, *m_parameters ); + } + + ~ImmiscibleWaterPropertiesTestFixture() = default; + + void testProperties( TestData< NC > const & data ) + { + real64 const pressure = std::get< 0 >( data ); + real64 const temperature = std::get< 1 >( data ); + stackArray1d< real64, numComps > phaseComposition; + TestFluid< NC >::createArray( phaseComposition, std::get< 2 >( data )); + real64 const expectedMolarDensity = std::get< 3 >( data ); + real64 const expectedMassDensity = std::get< 4 >( data ); + real64 const expectedViscosity = std::get< 5 >( data ); + + real64 molarDensity = 0.0; + real64 massDensity = 0.0; + real64 viscosity = 0.0; + stackArray1d< real64, numDofs > tempDerivs( numDofs ); + + auto componentProperties = m_fluid->createKernelWrapper(); + auto densityKernelWrapper = m_density->createKernelWrapper(); + auto viscosityKernelWrapper = m_viscosity->createKernelWrapper(); + + densityKernelWrapper.compute( componentProperties, + pressure, + temperature, + phaseComposition.toSliceConst(), + molarDensity, + tempDerivs.toSlice(), + massDensity, + tempDerivs.toSlice(), + false ); + + viscosityKernelWrapper.compute( componentProperties, + pressure, + temperature, + phaseComposition.toSliceConst(), + massDensity, + tempDerivs.toSliceConst(), + viscosity, + tempDerivs.toSlice(), + false ); + + checkRelativeError( molarDensity, expectedMolarDensity, relTol, absTol ); + checkRelativeError( massDensity, expectedMassDensity, relTol, absTol ); + checkRelativeError( viscosity, expectedViscosity, relTol, absTol ); + } + + void testPropertyDerivatives( TestData< NC > const & data ) + { + real64 const pressure = std::get< 0 >( data ); + real64 const temperature = std::get< 1 >( data ); + stackArray1d< real64, numComps > phaseComposition; + TestFluid< NC >::createArray( phaseComposition, std::get< 2 >( data )); + + auto componentProperties = m_fluid->createKernelWrapper(); + auto densityKernelWrapper = m_density->createKernelWrapper(); + auto viscosityKernelWrapper = m_viscosity->createKernelWrapper(); + + real64 molarDensity = 0.0; + real64 massDensity = 0.0; + real64 viscosity = 0.0; + stackArray1d< real64, numDofs > molarDensityDerivs( numDofs ); + stackArray1d< real64, numDofs > massDensityDerivs( numDofs ); + stackArray1d< real64, numDofs > viscosityDerivs( numDofs ); + stackArray1d< real64, 3 > derivatives( 3 ); + + densityKernelWrapper.compute( componentProperties, + pressure, + temperature, + phaseComposition.toSliceConst(), + molarDensity, + molarDensityDerivs.toSlice(), + massDensity, + massDensityDerivs.toSlice(), + false ); + + viscosityKernelWrapper.compute( componentProperties, + pressure, + temperature, + phaseComposition.toSliceConst(), + massDensity, + massDensityDerivs.toSliceConst(), + viscosity, + viscosityDerivs.toSlice(), + false ); + + // Viscosity values are very small so we will inflate the values to avoid false positives due + // to the absolute value check + real64 constexpr viscosityScale = 1.0e6; + + auto calculateProperties = [&]( real64 const p, real64 const t, auto const & zmf, auto & values ) { + stackArray1d< real64, numDofs > tempDerivs( numDofs ); + densityKernelWrapper.compute( componentProperties, p, t, zmf.toSliceConst(), + values[0], tempDerivs.toSlice(), values[1], tempDerivs.toSlice(), false ); + viscosityKernelWrapper.compute( componentProperties, p, t, zmf.toSliceConst(), + values[1], tempDerivs.toSliceConst(), values[2], tempDerivs.toSlice(), false ); + values[2] *= viscosityScale; + }; + + auto concatDerivatives = [&]( int idof ){ + derivatives[0] = molarDensityDerivs[idof]; + derivatives[1] = massDensityDerivs[idof]; + derivatives[2] = viscosityScale * viscosityDerivs[idof]; + }; + + // Compare against numerical derivatives + // -- Pressure derivative + concatDerivatives( Deriv::dP ); + real64 const dp = 1.0e-4 * pressure; + internal::testNumericalDerivative< 3 >( pressure, dp, derivatives.toSliceConst(), + [&]( real64 const p, auto & values ) { + calculateProperties( p, temperature, phaseComposition, values ); + }, absTol, relTol ); + + // -- Temperature derivative + concatDerivatives( Deriv::dT ); + real64 const dT = 1.0e-6 * temperature; + internal::testNumericalDerivative< 3 >( temperature, dT, derivatives.toSliceConst(), + [&]( real64 const t, auto & values ) { + calculateProperties( pressure, t, phaseComposition, values ); + }, absTol, relTol ); + + // -- Composition derivatives derivative + real64 const dz = 1.0e-7; + for( integer ic = 0; ic < NC; ++ic ) + { + concatDerivatives( Deriv::dC+ic ); + internal::testNumericalDerivative< 3 >( 0.0, dz, derivatives.toSliceConst(), + [&]( real64 const z, auto & values ) { + stackArray1d< real64, numComps > zmf( numComps ); + for( integer jc = 0; jc < numComps; ++jc ) + { + zmf[jc] = phaseComposition[jc]; + } + zmf[ic] += z; + calculateProperties( pressure, temperature, zmf, values ); + }, absTol, relTol ); + } + } + +protected: + std::unique_ptr< TestFluid< NC > > m_fluid{}; + std::unique_ptr< ImmiscibleWaterDensity > m_density{}; + std::unique_ptr< ImmiscibleWaterViscosity > m_viscosity{}; + std::unique_ptr< ModelParameters > m_parameters{}; +}; + +using ImmiscibleWaterProperties3 = ImmiscibleWaterPropertiesTestFixture< 3 >; + +TEST_P( ImmiscibleWaterProperties3, testProperties ) +{ + testProperties( GetParam() ); +} + +TEST_P( ImmiscibleWaterProperties3, testPropertyDerivatives ) +{ + testPropertyDerivatives( GetParam() ); +} + +//------------------------------------------------------------------------------- +// Data +//------------------------------------------------------------------------------- + +/* UNCRUSTIFY-OFF */ + +INSTANTIATE_TEST_SUITE_P( + ImmiscibleWaterProperties, ImmiscibleWaterProperties3, + ::testing::Values( + TestData< 3 >( 2.0e+06, 293.15, { 0.30, 0.30, 0.40 }, 5.616333e+04, 1.011782e+03, 3.291616e-04 ), + TestData< 3 >( 1.5e+07, 293.15, { 0.30, 0.30, 0.40 }, 5.646702e+04, 1.017253e+03, 3.292472e-04 ), + TestData< 3 >( 6.0e+07, 293.15, { 0.30, 0.30, 0.40 }, 5.753101e+04, 1.036421e+03, 3.295437e-04 ), + TestData< 3 >( 2.0e+06, 353.15, { 0.30, 0.30, 0.40 }, 5.616333e+04, 1.011782e+03, 3.291616e-04 ), + TestData< 3 >( 1.5e+07, 353.15, { 0.30, 0.30, 0.40 }, 5.646702e+04, 1.017253e+03, 3.292472e-04 ), + TestData< 3 >( 6.0e+07, 353.15, { 0.30, 0.30, 0.40 }, 5.753101e+04, 1.036421e+03, 3.295437e-04 ), + TestData< 3 >( 2.0e+06, 573.15, { 0.30, 0.30, 0.40 }, 5.616333e+04, 1.011782e+03, 3.291616e-04 ), + TestData< 3 >( 1.5e+07, 573.15, { 0.30, 0.30, 0.40 }, 5.646702e+04, 1.017253e+03, 3.292472e-04 ), + TestData< 3 >( 6.0e+07, 573.15, { 0.30, 0.30, 0.40 }, 5.753101e+04, 1.036421e+03, 3.295437e-04 ), + TestData< 3 >( 2.0e+06, 293.15, { 0.00, 0.00, 1.00 }, 5.616333e+04, 1.011782e+03, 3.291616e-04 ), + TestData< 3 >( 1.5e+07, 293.15, { 0.00, 0.00, 1.00 }, 5.646702e+04, 1.017253e+03, 3.292472e-04 ), + TestData< 3 >( 6.0e+07, 293.15, { 0.00, 0.00, 1.00 }, 5.753101e+04, 1.036421e+03, 3.295437e-04 ), + TestData< 3 >( 2.0e+06, 353.15, { 0.00, 0.00, 1.00 }, 5.616333e+04, 1.011782e+03, 3.291616e-04 ), + TestData< 3 >( 1.5e+07, 353.15, { 0.00, 0.00, 1.00 }, 5.646702e+04, 1.017253e+03, 3.292472e-04 ), + TestData< 3 >( 6.0e+07, 353.15, { 0.00, 0.00, 1.00 }, 5.753101e+04, 1.036421e+03, 3.295437e-04 ), + TestData< 3 >( 2.0e+06, 573.15, { 0.00, 0.00, 1.00 }, 5.616333e+04, 1.011782e+03, 3.291616e-04 ), + TestData< 3 >( 1.5e+07, 573.15, { 0.00, 0.00, 1.00 }, 5.646702e+04, 1.017253e+03, 3.292472e-04 ), + TestData< 3 >( 6.0e+07, 573.15, { 0.00, 0.00, 1.00 }, 5.753101e+04, 1.036421e+03, 3.295437e-04 ), + TestData< 3 >( 2.0e+06, 293.15, { 0.20, 0.80, 0.00 }, 5.616333e+04, 1.011782e+03, 3.291616e-04 ), + TestData< 3 >( 1.5e+07, 293.15, { 0.20, 0.80, 0.00 }, 5.646702e+04, 1.017253e+03, 3.292472e-04 ), + TestData< 3 >( 6.0e+07, 293.15, { 0.20, 0.80, 0.00 }, 5.753101e+04, 1.036421e+03, 3.295437e-04 ), + TestData< 3 >( 2.0e+06, 353.15, { 0.20, 0.80, 0.00 }, 5.616333e+04, 1.011782e+03, 3.291616e-04 ), + TestData< 3 >( 1.5e+07, 353.15, { 0.20, 0.80, 0.00 }, 5.646702e+04, 1.017253e+03, 3.292472e-04 ), + TestData< 3 >( 6.0e+07, 353.15, { 0.20, 0.80, 0.00 }, 5.753101e+04, 1.036421e+03, 3.295437e-04 ), + TestData< 3 >( 2.0e+06, 573.15, { 0.20, 0.80, 0.00 }, 5.616333e+04, 1.011782e+03, 3.291616e-04 ), + TestData< 3 >( 1.5e+07, 573.15, { 0.20, 0.80, 0.00 }, 5.646702e+04, 1.017253e+03, 3.292472e-04 ), + TestData< 3 >( 6.0e+07, 573.15, { 0.20, 0.80, 0.00 }, 5.753101e+04, 1.036421e+03, 3.295437e-04 ) + ) +); + +/* UNCRUSTIFY-ON */ + +} // testing + +} // geos diff --git a/src/coreComponents/constitutive/unitTests/testKValueInitialization.cpp b/src/coreComponents/constitutive/unitTests/testKValueInitialization.cpp index 7fde1b28d6d..ac0d01dcd35 100644 --- a/src/coreComponents/constitutive/unitTests/testKValueInitialization.cpp +++ b/src/coreComponents/constitutive/unitTests/testKValueInitialization.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/unitTests/testLohrenzBrayClarkViscosity.cpp b/src/coreComponents/constitutive/unitTests/testLohrenzBrayClarkViscosity.cpp index f74d3c78a26..3adeab00ab1 100644 --- a/src/coreComponents/constitutive/unitTests/testLohrenzBrayClarkViscosity.cpp +++ b/src/coreComponents/constitutive/unitTests/testLohrenzBrayClarkViscosity.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/unitTests/testModifiedCamClay.cpp b/src/coreComponents/constitutive/unitTests/testModifiedCamClay.cpp index 7507a986d2c..6cfbb6791d8 100644 --- a/src/coreComponents/constitutive/unitTests/testModifiedCamClay.cpp +++ b/src/coreComponents/constitutive/unitTests/testModifiedCamClay.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/unitTests/testMultiFluidSelector.cpp b/src/coreComponents/constitutive/unitTests/testMultiFluidSelector.cpp index 12d05d769bd..55a045b5be9 100644 --- a/src/coreComponents/constitutive/unitTests/testMultiFluidSelector.cpp +++ b/src/coreComponents/constitutive/unitTests/testMultiFluidSelector.cpp @@ -2,10 +2,11 @@ * ------------------------------------------------------------------------------------------------------------ * SPDX-License-Identifier: LGPL-2.1-only * - * Copyright (c) 2018-2020 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2020 The Board of Trustees of the Leland Stanford Junior University - * Copyright (c) 2018-2020 TotalEnergies - * Copyright (c) 2019- GEOSX Contributors + * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC + * Copyright (c) 2018-2024 TotalEnergies + * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University + * Copyright (c) 2023-2024 Chevron + * Copyright (c) 2019- GEOS/GEOSX Contributors * All rights reserved * * See top level LICENSE, COPYRIGHT, CONTRIBUTORS, NOTICE, and ACKNOWLEDGEMENTS files for details. diff --git a/src/coreComponents/constitutive/unitTests/testNegativeTwoPhaseFlash.cpp b/src/coreComponents/constitutive/unitTests/testNegativeTwoPhaseFlash.cpp index 05db5efdac7..d27bc16d58c 100644 --- a/src/coreComponents/constitutive/unitTests/testNegativeTwoPhaseFlash.cpp +++ b/src/coreComponents/constitutive/unitTests/testNegativeTwoPhaseFlash.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/unitTests/testNegativeTwoPhaseFlash9Comp.cpp b/src/coreComponents/constitutive/unitTests/testNegativeTwoPhaseFlash9Comp.cpp index afb9644ba24..49c494e9dd3 100644 --- a/src/coreComponents/constitutive/unitTests/testNegativeTwoPhaseFlash9Comp.cpp +++ b/src/coreComponents/constitutive/unitTests/testNegativeTwoPhaseFlash9Comp.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/unitTests/testParticleFluidEnums.cpp b/src/coreComponents/constitutive/unitTests/testParticleFluidEnums.cpp index 48ea052e2cc..bd9dd97d83c 100644 --- a/src/coreComponents/constitutive/unitTests/testParticleFluidEnums.cpp +++ b/src/coreComponents/constitutive/unitTests/testParticleFluidEnums.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/unitTests/testPropertyConversions.cpp b/src/coreComponents/constitutive/unitTests/testPropertyConversions.cpp index 86cb9470651..4c21a7759b4 100644 --- a/src/coreComponents/constitutive/unitTests/testPropertyConversions.cpp +++ b/src/coreComponents/constitutive/unitTests/testPropertyConversions.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/unitTests/testRachfordRice.cpp b/src/coreComponents/constitutive/unitTests/testRachfordRice.cpp index 8b771529ac6..a8ce4fc2f1a 100644 --- a/src/coreComponents/constitutive/unitTests/testRachfordRice.cpp +++ b/src/coreComponents/constitutive/unitTests/testRachfordRice.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/unitTests/testStabilityTest2Comp.cpp b/src/coreComponents/constitutive/unitTests/testStabilityTest2Comp.cpp index a3f200202e8..b967f9ba83d 100644 --- a/src/coreComponents/constitutive/unitTests/testStabilityTest2Comp.cpp +++ b/src/coreComponents/constitutive/unitTests/testStabilityTest2Comp.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/unitTests/testStabilityTest9Comp.cpp b/src/coreComponents/constitutive/unitTests/testStabilityTest9Comp.cpp index 0a1289223ab..c3c8a479ae2 100644 --- a/src/coreComponents/constitutive/unitTests/testStabilityTest9Comp.cpp +++ b/src/coreComponents/constitutive/unitTests/testStabilityTest9Comp.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutive/unitTests/testTriaxial.cpp b/src/coreComponents/constitutive/unitTests/testTriaxial.cpp index 009d7727d9a..b9de06affcd 100644 --- a/src/coreComponents/constitutive/unitTests/testTriaxial.cpp +++ b/src/coreComponents/constitutive/unitTests/testTriaxial.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutiveDrivers/CMakeLists.txt b/src/coreComponents/constitutiveDrivers/CMakeLists.txt index 376d4d34573..36dad24e0d4 100644 --- a/src/coreComponents/constitutiveDrivers/CMakeLists.txt +++ b/src/coreComponents/constitutiveDrivers/CMakeLists.txt @@ -1,7 +1,7 @@ # SPDX-License-Identifier: LGPL-2.1-only # # Copyright (c) 2016-2024 Lawrence Livermore National Security LLC -# Copyright (c) 2018-2024 Total, S.A +# Copyright (c) 2018-2024 TotalEnergies # Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University # Copyright (c) 2023-2024 Chevron # Copyright (c) 2019- GEOS/GEOSX Contributors @@ -39,6 +39,7 @@ set( constitutiveDrivers_sources fluid/multiFluid/CO2Brine/PVTDriverRunTestCO2BrinePhillipsThermalFluid.cpp fluid/multiFluid/CO2Brine/PVTDriverRunTestCO2BrineEzrokhiFluid.cpp fluid/multiFluid/CO2Brine/PVTDriverRunTestCO2BrineEzrokhiThermalFluid.cpp + fluid/multiFluid/compositional/PVTDriverRunTestCompositionalThreePhaseLohrenzBrayClarkViscosity.cpp fluid/multiFluid/compositional/PVTDriverRunTestCompositionalTwoPhaseConstantViscosity.cpp fluid/multiFluid/compositional/PVTDriverRunTestCompositionalTwoPhaseLohrenzBrayClarkViscosity.cpp fluid/multiFluid/reactive/ReactiveFluidDriver.cpp diff --git a/src/coreComponents/constitutiveDrivers/fluid/multiFluid/CO2Brine/PVTDriverRunTestCO2BrineEzrokhiFluid.cpp b/src/coreComponents/constitutiveDrivers/fluid/multiFluid/CO2Brine/PVTDriverRunTestCO2BrineEzrokhiFluid.cpp index fb0ab379189..3d5d5d46ea4 100644 --- a/src/coreComponents/constitutiveDrivers/fluid/multiFluid/CO2Brine/PVTDriverRunTestCO2BrineEzrokhiFluid.cpp +++ b/src/coreComponents/constitutiveDrivers/fluid/multiFluid/CO2Brine/PVTDriverRunTestCO2BrineEzrokhiFluid.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutiveDrivers/fluid/multiFluid/CO2Brine/PVTDriverRunTestCO2BrineEzrokhiThermalFluid.cpp b/src/coreComponents/constitutiveDrivers/fluid/multiFluid/CO2Brine/PVTDriverRunTestCO2BrineEzrokhiThermalFluid.cpp index a27cfb29699..e5d457ca9f7 100644 --- a/src/coreComponents/constitutiveDrivers/fluid/multiFluid/CO2Brine/PVTDriverRunTestCO2BrineEzrokhiThermalFluid.cpp +++ b/src/coreComponents/constitutiveDrivers/fluid/multiFluid/CO2Brine/PVTDriverRunTestCO2BrineEzrokhiThermalFluid.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutiveDrivers/fluid/multiFluid/CO2Brine/PVTDriverRunTestCO2BrinePhillipsFluid.cpp b/src/coreComponents/constitutiveDrivers/fluid/multiFluid/CO2Brine/PVTDriverRunTestCO2BrinePhillipsFluid.cpp index 145b2faae17..8815bc53000 100644 --- a/src/coreComponents/constitutiveDrivers/fluid/multiFluid/CO2Brine/PVTDriverRunTestCO2BrinePhillipsFluid.cpp +++ b/src/coreComponents/constitutiveDrivers/fluid/multiFluid/CO2Brine/PVTDriverRunTestCO2BrinePhillipsFluid.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutiveDrivers/fluid/multiFluid/CO2Brine/PVTDriverRunTestCO2BrinePhillipsThermalFluid.cpp b/src/coreComponents/constitutiveDrivers/fluid/multiFluid/CO2Brine/PVTDriverRunTestCO2BrinePhillipsThermalFluid.cpp index d6f41b1bf52..0839e37d65b 100644 --- a/src/coreComponents/constitutiveDrivers/fluid/multiFluid/CO2Brine/PVTDriverRunTestCO2BrinePhillipsThermalFluid.cpp +++ b/src/coreComponents/constitutiveDrivers/fluid/multiFluid/CO2Brine/PVTDriverRunTestCO2BrinePhillipsThermalFluid.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutiveDrivers/fluid/multiFluid/PVTDriver.cpp b/src/coreComponents/constitutiveDrivers/fluid/multiFluid/PVTDriver.cpp index 47150da347f..56cece6e149 100644 --- a/src/coreComponents/constitutiveDrivers/fluid/multiFluid/PVTDriver.cpp +++ b/src/coreComponents/constitutiveDrivers/fluid/multiFluid/PVTDriver.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutiveDrivers/fluid/multiFluid/PVTDriver.hpp b/src/coreComponents/constitutiveDrivers/fluid/multiFluid/PVTDriver.hpp index dda67dac39c..bae4e9827c9 100644 --- a/src/coreComponents/constitutiveDrivers/fluid/multiFluid/PVTDriver.hpp +++ b/src/coreComponents/constitutiveDrivers/fluid/multiFluid/PVTDriver.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutiveDrivers/fluid/multiFluid/PVTDriverRunTest.hpp b/src/coreComponents/constitutiveDrivers/fluid/multiFluid/PVTDriverRunTest.hpp index 0a0254b196f..6b763d25134 100644 --- a/src/coreComponents/constitutiveDrivers/fluid/multiFluid/PVTDriverRunTest.hpp +++ b/src/coreComponents/constitutiveDrivers/fluid/multiFluid/PVTDriverRunTest.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutiveDrivers/fluid/multiFluid/blackOil/PVTDriverRunTestDeadOilFluid.cpp b/src/coreComponents/constitutiveDrivers/fluid/multiFluid/blackOil/PVTDriverRunTestDeadOilFluid.cpp index 829f310e773..1b5bbf0e469 100644 --- a/src/coreComponents/constitutiveDrivers/fluid/multiFluid/blackOil/PVTDriverRunTestDeadOilFluid.cpp +++ b/src/coreComponents/constitutiveDrivers/fluid/multiFluid/blackOil/PVTDriverRunTestDeadOilFluid.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutiveDrivers/fluid/multiFluid/compositional/PVTDriverRunTestCompositionalMultiphaseFluid.cpp b/src/coreComponents/constitutiveDrivers/fluid/multiFluid/compositional/PVTDriverRunTestCompositionalMultiphaseFluid.cpp index dbf4cf32eef..6506255acce 100644 --- a/src/coreComponents/constitutiveDrivers/fluid/multiFluid/compositional/PVTDriverRunTestCompositionalMultiphaseFluid.cpp +++ b/src/coreComponents/constitutiveDrivers/fluid/multiFluid/compositional/PVTDriverRunTestCompositionalMultiphaseFluid.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutiveDrivers/fluid/multiFluid/compositional/PVTDriverRunTestCompositionalThreePhaseLohrenzBrayClarkViscosity.cpp b/src/coreComponents/constitutiveDrivers/fluid/multiFluid/compositional/PVTDriverRunTestCompositionalThreePhaseLohrenzBrayClarkViscosity.cpp new file mode 100644 index 00000000000..38299b6c451 --- /dev/null +++ b/src/coreComponents/constitutiveDrivers/fluid/multiFluid/compositional/PVTDriverRunTestCompositionalThreePhaseLohrenzBrayClarkViscosity.cpp @@ -0,0 +1,27 @@ +/* + * ------------------------------------------------------------------------------------------------------------ + * SPDX-License-Identifier: LGPL-2.1-only + * + * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC + * Copyright (c) 2018-2024 TotalEnergies + * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University + * Copyright (c) 2018-2024 Chevron + * Copyright (c) 2019- GEOS/GEOSX Contributors + * All rights reserved + * + * See top level LICENSE, COPYRIGHT, CONTRIBUTORS, NOTICE, and ACKNOWLEDGEMENTS files for details. + * ------------------------------------------------------------------------------------------------------------ + */ + +/* + * PVTDriverRunTestCompositionalThreePhaseLohrenzBrayClarkViscosity.cpp + */ + +#include "constitutiveDrivers/fluid/multiFluid/PVTDriverRunTest.hpp" +#include "constitutive/fluid/multifluid/compositional/CompositionalMultiphaseFluid.hpp" + +namespace geos +{ +template void PVTDriver::runTest< constitutive::CompositionalThreePhaseLohrenzBrayClarkViscosity >( + constitutive::CompositionalThreePhaseLohrenzBrayClarkViscosity &, arrayView2d< real64 > const & ); +} diff --git a/src/coreComponents/constitutiveDrivers/fluid/multiFluid/compositional/PVTDriverRunTestCompositionalTwoPhaseConstantViscosity.cpp b/src/coreComponents/constitutiveDrivers/fluid/multiFluid/compositional/PVTDriverRunTestCompositionalTwoPhaseConstantViscosity.cpp index 821b98d216e..7404cb9d035 100644 --- a/src/coreComponents/constitutiveDrivers/fluid/multiFluid/compositional/PVTDriverRunTestCompositionalTwoPhaseConstantViscosity.cpp +++ b/src/coreComponents/constitutiveDrivers/fluid/multiFluid/compositional/PVTDriverRunTestCompositionalTwoPhaseConstantViscosity.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutiveDrivers/fluid/multiFluid/compositional/PVTDriverRunTestCompositionalTwoPhaseLohrenzBrayClarkViscosity.cpp b/src/coreComponents/constitutiveDrivers/fluid/multiFluid/compositional/PVTDriverRunTestCompositionalTwoPhaseLohrenzBrayClarkViscosity.cpp index ba69e1f711d..f97b8526705 100644 --- a/src/coreComponents/constitutiveDrivers/fluid/multiFluid/compositional/PVTDriverRunTestCompositionalTwoPhaseLohrenzBrayClarkViscosity.cpp +++ b/src/coreComponents/constitutiveDrivers/fluid/multiFluid/compositional/PVTDriverRunTestCompositionalTwoPhaseLohrenzBrayClarkViscosity.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutiveDrivers/fluid/multiFluid/reactive/ReactiveFluidDriver.cpp b/src/coreComponents/constitutiveDrivers/fluid/multiFluid/reactive/ReactiveFluidDriver.cpp index 8c2cc1f083f..1d0259bcd5c 100644 --- a/src/coreComponents/constitutiveDrivers/fluid/multiFluid/reactive/ReactiveFluidDriver.cpp +++ b/src/coreComponents/constitutiveDrivers/fluid/multiFluid/reactive/ReactiveFluidDriver.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutiveDrivers/fluid/multiFluid/reactive/ReactiveFluidDriver.hpp b/src/coreComponents/constitutiveDrivers/fluid/multiFluid/reactive/ReactiveFluidDriver.hpp index 57f273e3b1e..170f761c704 100644 --- a/src/coreComponents/constitutiveDrivers/fluid/multiFluid/reactive/ReactiveFluidDriver.hpp +++ b/src/coreComponents/constitutiveDrivers/fluid/multiFluid/reactive/ReactiveFluidDriver.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutiveDrivers/relativePermeability/RelpermDriver.cpp b/src/coreComponents/constitutiveDrivers/relativePermeability/RelpermDriver.cpp index 75c701977d9..06085a50861 100644 --- a/src/coreComponents/constitutiveDrivers/relativePermeability/RelpermDriver.cpp +++ b/src/coreComponents/constitutiveDrivers/relativePermeability/RelpermDriver.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutiveDrivers/relativePermeability/RelpermDriver.hpp b/src/coreComponents/constitutiveDrivers/relativePermeability/RelpermDriver.hpp index b2516879f99..426c66bf130 100644 --- a/src/coreComponents/constitutiveDrivers/relativePermeability/RelpermDriver.hpp +++ b/src/coreComponents/constitutiveDrivers/relativePermeability/RelpermDriver.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutiveDrivers/relativePermeability/RelpermDriverBrooksCoreyBakerRunTest.cpp b/src/coreComponents/constitutiveDrivers/relativePermeability/RelpermDriverBrooksCoreyBakerRunTest.cpp index 578a3d59522..4fc2d6a03d5 100644 --- a/src/coreComponents/constitutiveDrivers/relativePermeability/RelpermDriverBrooksCoreyBakerRunTest.cpp +++ b/src/coreComponents/constitutiveDrivers/relativePermeability/RelpermDriverBrooksCoreyBakerRunTest.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutiveDrivers/relativePermeability/RelpermDriverBrooksCoreyRunTest.cpp b/src/coreComponents/constitutiveDrivers/relativePermeability/RelpermDriverBrooksCoreyRunTest.cpp index 7e492550302..a2b0db0fb93 100644 --- a/src/coreComponents/constitutiveDrivers/relativePermeability/RelpermDriverBrooksCoreyRunTest.cpp +++ b/src/coreComponents/constitutiveDrivers/relativePermeability/RelpermDriverBrooksCoreyRunTest.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutiveDrivers/relativePermeability/RelpermDriverBrooksCoreyStone2RunTest.cpp b/src/coreComponents/constitutiveDrivers/relativePermeability/RelpermDriverBrooksCoreyStone2RunTest.cpp index c1ca451cdc2..12c68c39cf2 100644 --- a/src/coreComponents/constitutiveDrivers/relativePermeability/RelpermDriverBrooksCoreyStone2RunTest.cpp +++ b/src/coreComponents/constitutiveDrivers/relativePermeability/RelpermDriverBrooksCoreyStone2RunTest.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutiveDrivers/relativePermeability/RelpermDriverRunTest.hpp b/src/coreComponents/constitutiveDrivers/relativePermeability/RelpermDriverRunTest.hpp index 7187ae8feb9..4ae09f0c00c 100644 --- a/src/coreComponents/constitutiveDrivers/relativePermeability/RelpermDriverRunTest.hpp +++ b/src/coreComponents/constitutiveDrivers/relativePermeability/RelpermDriverRunTest.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutiveDrivers/relativePermeability/RelpermDriverTableRelativeHysteresisRunTest.cpp b/src/coreComponents/constitutiveDrivers/relativePermeability/RelpermDriverTableRelativeHysteresisRunTest.cpp index cad00bfc8a1..4ed6420b673 100644 --- a/src/coreComponents/constitutiveDrivers/relativePermeability/RelpermDriverTableRelativeHysteresisRunTest.cpp +++ b/src/coreComponents/constitutiveDrivers/relativePermeability/RelpermDriverTableRelativeHysteresisRunTest.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutiveDrivers/relativePermeability/RelpermDriverTableRelativeRunTest.cpp b/src/coreComponents/constitutiveDrivers/relativePermeability/RelpermDriverTableRelativeRunTest.cpp index 22b21ea79d8..e5c8a240853 100644 --- a/src/coreComponents/constitutiveDrivers/relativePermeability/RelpermDriverTableRelativeRunTest.cpp +++ b/src/coreComponents/constitutiveDrivers/relativePermeability/RelpermDriverTableRelativeRunTest.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutiveDrivers/relativePermeability/RelpermDriverVanGenuchtenBakerRunTest.cpp b/src/coreComponents/constitutiveDrivers/relativePermeability/RelpermDriverVanGenuchtenBakerRunTest.cpp index 45b9400a33e..7f441eb5130 100644 --- a/src/coreComponents/constitutiveDrivers/relativePermeability/RelpermDriverVanGenuchtenBakerRunTest.cpp +++ b/src/coreComponents/constitutiveDrivers/relativePermeability/RelpermDriverVanGenuchtenBakerRunTest.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutiveDrivers/relativePermeability/RelpermDriverVanGenuchtenStone2RunTest.cpp b/src/coreComponents/constitutiveDrivers/relativePermeability/RelpermDriverVanGenuchtenStone2RunTest.cpp index caac2444ec7..53b39539a5d 100644 --- a/src/coreComponents/constitutiveDrivers/relativePermeability/RelpermDriverVanGenuchtenStone2RunTest.cpp +++ b/src/coreComponents/constitutiveDrivers/relativePermeability/RelpermDriverVanGenuchtenStone2RunTest.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutiveDrivers/solid/TriaxialDriver.cpp b/src/coreComponents/constitutiveDrivers/solid/TriaxialDriver.cpp index 49158cbc925..6dbd8bb13c3 100644 --- a/src/coreComponents/constitutiveDrivers/solid/TriaxialDriver.cpp +++ b/src/coreComponents/constitutiveDrivers/solid/TriaxialDriver.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/constitutiveDrivers/solid/TriaxialDriver.hpp b/src/coreComponents/constitutiveDrivers/solid/TriaxialDriver.hpp index 1072d924818..1147e52b0b7 100644 --- a/src/coreComponents/constitutiveDrivers/solid/TriaxialDriver.hpp +++ b/src/coreComponents/constitutiveDrivers/solid/TriaxialDriver.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/dataRepository/BufferOps.hpp b/src/coreComponents/dataRepository/BufferOps.hpp index c76bcee136e..1601dae424c 100644 --- a/src/coreComponents/dataRepository/BufferOps.hpp +++ b/src/coreComponents/dataRepository/BufferOps.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/dataRepository/BufferOpsDevice.cpp b/src/coreComponents/dataRepository/BufferOpsDevice.cpp index cf9c562a634..ada2da9b8a9 100644 --- a/src/coreComponents/dataRepository/BufferOpsDevice.cpp +++ b/src/coreComponents/dataRepository/BufferOpsDevice.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/dataRepository/BufferOpsDevice.hpp b/src/coreComponents/dataRepository/BufferOpsDevice.hpp index 0fec5bbf5a7..5bef77f360b 100644 --- a/src/coreComponents/dataRepository/BufferOpsDevice.hpp +++ b/src/coreComponents/dataRepository/BufferOpsDevice.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/dataRepository/BufferOps_inline.hpp b/src/coreComponents/dataRepository/BufferOps_inline.hpp index cd87b74e7eb..8792e9a153e 100644 --- a/src/coreComponents/dataRepository/BufferOps_inline.hpp +++ b/src/coreComponents/dataRepository/BufferOps_inline.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -1527,7 +1527,10 @@ Unpack( buffer_unit_type const * & buffer, relatedObjectGlobalToLocalMap, clearFlag ); - unmappedGlobalIndices[li].insert( unmappedIndices.data(), unmappedIndices.size() ); + if( unmappedIndices.size() > 0 ) + { + unmappedGlobalIndices[li].insert( unmappedIndices.data(), unmappedIndices.size() ); + } } return sizeOfUnpackedChars; } @@ -1644,7 +1647,10 @@ Unpack( buffer_unit_type const * & buffer, // insert unknown global indices related to the local index into an additional mapping to resolve externally unmapped.resize( LvArray::sortedArrayManipulation::makeSortedUnique( unmapped.begin(), unmapped.end() ) ); - unmappedGlobalIndices[li].insert( unmapped.begin(), unmapped.end() ); + if( unmapped.size() > 0 ) + { + unmappedGlobalIndices[li].insert( unmapped.begin(), unmapped.end() ); + } } // If there were element lists that didn't fit in the map, rebuild the whole thing @@ -1762,7 +1768,11 @@ Pack( buffer_unit_type * & buffer, arraySlice1d< globalIndex const > const & relatedObjectLocalToGlobalMap ) { localIndex sizeOfPackedChars = 0; - array1d< globalIndex > junk; + array1d< globalIndex > invalidGlobalIndices( var.size( 1 ) ); + for( localIndex a=0; a( buffer, indices.size() ); for( localIndex a=0; a const & unmappedGI = iterUnmappedGI==unmappedGlobalIndices.end() ? - junk : + invalidGlobalIndices : iterUnmappedGI->second; sizeOfPackedChars += Pack< DO_PACKING >( buffer, diff --git a/src/coreComponents/dataRepository/CMakeLists.txt b/src/coreComponents/dataRepository/CMakeLists.txt index 49f4404cbd6..8d0fc0e09ce 100644 --- a/src/coreComponents/dataRepository/CMakeLists.txt +++ b/src/coreComponents/dataRepository/CMakeLists.txt @@ -1,7 +1,7 @@ # SPDX-License-Identifier: LGPL-2.1-only # # Copyright (c) 2016-2024 Lawrence Livermore National Security LLC -# Copyright (c) 2018-2024 Total, S.A +# Copyright (c) 2018-2024 TotalEnergies # Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University # Copyright (c) 2023-2024 Chevron # Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/dataRepository/ConduitRestart.cpp b/src/coreComponents/dataRepository/ConduitRestart.cpp index e0c18bc1b24..10e3c4e58f2 100644 --- a/src/coreComponents/dataRepository/ConduitRestart.cpp +++ b/src/coreComponents/dataRepository/ConduitRestart.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/dataRepository/ConduitRestart.hpp b/src/coreComponents/dataRepository/ConduitRestart.hpp index 2fe3c07c98e..68cf0766e0a 100644 --- a/src/coreComponents/dataRepository/ConduitRestart.hpp +++ b/src/coreComponents/dataRepository/ConduitRestart.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/dataRepository/DataContext.cpp b/src/coreComponents/dataRepository/DataContext.cpp index e20eab50e60..d34ab4b72c1 100644 --- a/src/coreComponents/dataRepository/DataContext.cpp +++ b/src/coreComponents/dataRepository/DataContext.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -25,7 +25,7 @@ namespace dataRepository { -DataContext::DataContext( string const & targetName ): +DataContext::DataContext( string_view targetName ): m_targetName( targetName ) {} @@ -35,12 +35,12 @@ std::ostream & operator<<( std::ostream & os, DataContext const & ctx ) return os; } -DataContext::ToStringInfo::ToStringInfo( string const & targetName, string const & filePath, size_t line ): +DataContext::ToStringInfo::ToStringInfo( string_view targetName, string_view filePath, size_t line ): m_targetName( targetName ), m_filePath( filePath ), m_line( line ) {} -DataContext::ToStringInfo::ToStringInfo( string const & targetName ): +DataContext::ToStringInfo::ToStringInfo( string_view targetName ): m_targetName( targetName ) {} @@ -83,6 +83,15 @@ DataFileContext::DataFileContext( xmlWrapper::xmlNode const & targetNode, m_offset( attPos.offset ) {} +DataFileContext::DataFileContext( string_view targetName, string_view file, size_t line ): + DataContext( targetName ), + m_typeName( "C++ Source File" ), + m_filePath( file ), + m_line( line ), + m_offsetInLine( 0 ), + m_offset( 0 ) +{} + string DataFileContext::toString() const { if( m_line != xmlWrapper::xmlDocument::npos ) @@ -95,7 +104,7 @@ string DataFileContext::toString() const } else { - return GEOS_FMT( "{} (Source file not found)", m_targetName ); + return GEOS_FMT( "{} ({})", m_targetName, ( m_filePath.empty() ? "Source file not found" : m_filePath ) ); } } diff --git a/src/coreComponents/dataRepository/DataContext.hpp b/src/coreComponents/dataRepository/DataContext.hpp index 16600e02f1b..ee3abd0f1c1 100644 --- a/src/coreComponents/dataRepository/DataContext.hpp +++ b/src/coreComponents/dataRepository/DataContext.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -47,7 +47,7 @@ class DataContext * @brief Construct a new DataContext object. * @param targetName the target object name */ - DataContext( string const & targetName ); + DataContext( string_view targetName ); /** * @brief Destroy the DataContext object @@ -95,12 +95,12 @@ class DataContext * @param filePath the input file path where the target is declared. * @param line the line in the file where the target is declared. */ - ToStringInfo( string const & targetName, string const & filePath, size_t line ); + ToStringInfo( string_view targetName, string_view filePath, size_t line ); /** * @brief Construct a new ToStringInfo object from a DataContext that has no input file info. * @param targetName the target name. */ - ToStringInfo( string const & targetName ); + ToStringInfo( string_view targetName ); /** * @return true if a location has been found to declare the target in an input file. */ @@ -142,6 +142,14 @@ class DataFileContext final : public DataContext DataFileContext( xmlWrapper::xmlNode const & targetNode, xmlWrapper::xmlAttribute const & att, xmlWrapper::xmlAttributePos const & attPos ); + /** + * @brief Constructs the file context of a Group from a C++ source file. + * @param targetName The name of the target Group. + * @param file The name of the source file. + * @param line The line number in the source file. + */ + DataFileContext( string_view targetName, string_view file, size_t line ); + /** * @return the target object name followed by the the file and line declaring it. */ diff --git a/src/coreComponents/dataRepository/DefaultValue.hpp b/src/coreComponents/dataRepository/DefaultValue.hpp index dd2fed96a7d..4212244aa72 100644 --- a/src/coreComponents/dataRepository/DefaultValue.hpp +++ b/src/coreComponents/dataRepository/DefaultValue.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/dataRepository/ExecutableGroup.cpp b/src/coreComponents/dataRepository/ExecutableGroup.cpp index 4552db2d3d4..b268730af7e 100644 --- a/src/coreComponents/dataRepository/ExecutableGroup.cpp +++ b/src/coreComponents/dataRepository/ExecutableGroup.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/dataRepository/ExecutableGroup.hpp b/src/coreComponents/dataRepository/ExecutableGroup.hpp index 201b6642227..b1751f3e1f0 100644 --- a/src/coreComponents/dataRepository/ExecutableGroup.hpp +++ b/src/coreComponents/dataRepository/ExecutableGroup.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/dataRepository/Group.cpp b/src/coreComponents/dataRepository/Group.cpp index abbf6379fa9..8665b5aa9c7 100644 --- a/src/coreComponents/dataRepository/Group.cpp +++ b/src/coreComponents/dataRepository/Group.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -135,18 +135,64 @@ string Group::getPath() const return noProblem.empty() ? "/" : noProblem; } +string Group::processInputName( xmlWrapper::xmlNode const & targetNode, + xmlWrapper::xmlNodePos const & targetNodePos, + string_view parentNodeName, + xmlWrapper::xmlNodePos const & parentNodePos, + std::set< string > & siblingNames ) +{ + GEOS_THROW_IF( targetNode.type() != xmlWrapper::xmlNodeType::node_element, + GEOS_FMT( "Error in node named \"{}\" ({}): GEOS XML nodes cannot contain " + "text data nor anything but XML nodes.\nErroneous content: \"{}\"\n", + parentNodeName, parentNodePos.toString(), + stringutilities::trimSpaces( targetNode.value() ) ), + InputError ); + + string targetNodeName; + try + { // read & validate the name attribute + xmlWrapper::readAttributeAsType( targetNodeName, "name", + rtTypes::getTypeRegex< string >( rtTypes::CustomTypes::groupName ), + targetNode, string( "" ) ); + } catch( std::exception const & ex ) + { + xmlWrapper::processInputException( ex, "name", targetNode, targetNodePos ); + } + + if( targetNodeName.empty() ) + { // if there is no name attribute, we use the node tag as a node name + targetNodeName = targetNode.name(); + } + else + { // Make sure names are not duplicated by checking all previous siblings + GEOS_THROW_IF( siblingNames.count( targetNodeName ) != 0, + GEOS_FMT( "Error at node named \"{}\" ({}): " + "An XML block cannot contain children with duplicated names.\n", + targetNodeName, targetNodePos.toString() ), + InputError ); + siblingNames.insert( targetNodeName ); + } + + return targetNodeName; +} + void Group::processInputFileRecursive( xmlWrapper::xmlDocument & xmlDocument, xmlWrapper::xmlNode & targetNode ) { - xmlWrapper::xmlNodePos nodePos = xmlDocument.getNodePosition( targetNode ); - processInputFileRecursive( xmlDocument, targetNode, nodePos ); + xmlWrapper::xmlNodePos targetNodePos = xmlDocument.getNodePosition( targetNode ); + processInputFileRecursive( xmlDocument, targetNode, targetNodePos ); } void Group::processInputFileRecursive( xmlWrapper::xmlDocument & xmlDocument, xmlWrapper::xmlNode & targetNode, - xmlWrapper::xmlNodePos const & nodePos ) + xmlWrapper::xmlNodePos const & targetNodePos ) { xmlDocument.addIncludedXML( targetNode ); + if( targetNodePos.isFound() ) + { + m_dataContext = std::make_unique< DataFileContext >( targetNode, targetNodePos ); + } + // Handle the case where the node was imported from a different input file // Set the path prefix to make sure all relative Path variables are interpreted correctly string const oldPrefix = std::string( Path::getPathPrefix() ); @@ -157,40 +203,12 @@ void Group::processInputFileRecursive( xmlWrapper::xmlDocument & xmlDocument, } // Loop over the child nodes of the targetNode - array1d< string > childNames; + std::set< string > childNames; for( xmlWrapper::xmlNode childNode : targetNode.children() ) { xmlWrapper::xmlNodePos childNodePos = xmlDocument.getNodePosition( childNode ); - - // Get the child tag and name - string childName; - - try - { - xmlWrapper::readAttributeAsType( childName, "name", - rtTypes::getTypeRegex< string >( rtTypes::CustomTypes::groupName ), - childNode, string( "" ) ); - } catch( std::exception const & ex ) - { - xmlWrapper::processInputException( ex, "name", childNode, childNodePos ); - } - - if( childName.empty() ) - { - childName = childNode.name(); - } - else - { - // Make sure child names are not duplicated - GEOS_ERROR_IF( std::find( childNames.begin(), childNames.end(), childName ) != childNames.end(), - GEOS_FMT( "Error: An XML block cannot contain children with duplicated names.\n" - "Error detected at node {} with name = {} ({}:l.{})", - childNode.path(), childName, xmlDocument.getFilePath(), - xmlDocument.getNodePosition( childNode ).line ) ); - - childNames.emplace_back( childName ); - } - + string const childName = processInputName( childNode, childNodePos, + getName(), targetNodePos, childNames ); // Create children Group * newChild = createChild( childNode.name(), childName ); if( newChild == nullptr ) @@ -203,7 +221,7 @@ void Group::processInputFileRecursive( xmlWrapper::xmlDocument & xmlDocument, } } - processInputFile( targetNode, nodePos ); + processInputFile( targetNode, targetNodePos ); // Restore original prefix once the node is processed Path::setPathPrefix( oldPrefix ); @@ -212,12 +230,6 @@ void Group::processInputFileRecursive( xmlWrapper::xmlDocument & xmlDocument, void Group::processInputFile( xmlWrapper::xmlNode const & targetNode, xmlWrapper::xmlNodePos const & nodePos ) { - if( nodePos.isFound() ) - { - m_dataContext = std::make_unique< DataFileContext >( targetNode, nodePos ); - } - - std::set< string > processedAttributes; for( std::pair< string const, WrapperBase * > & pair : m_wrappers ) { @@ -233,10 +245,10 @@ void Group::processInputFile( xmlWrapper::xmlNode const & targetNode, if( !xmlWrapper::isFileMetadataAttribute( attributeName ) ) { GEOS_THROW_IF( processedAttributes.count( attributeName ) == 0, - GEOS_FMT( "XML Node at '{}' with name={} contains unused attribute '{}'.\n" + GEOS_FMT( "Error in {}: XML Node at '{}' contains unused attribute '{}'.\n" "Valid attributes are:\n{}\nFor more details, please refer to documentation at:\n" "http://geosx-geosx.readthedocs-hosted.com/en/latest/docs/sphinx/userGuide/Index.html", - targetNode.path(), m_dataContext->toString(), attributeName, + getDataContext(), targetNode.path(), attributeName, dumpInputOptions() ), InputError ); } @@ -264,11 +276,10 @@ void Group::registerDataOnMeshRecursive( Group & meshBodies ) Group * Group::createChild( string const & childKey, string const & childName ) { - GEOS_ERROR_IF( !(CatalogInterface::hasKeyName( childKey )), - "KeyName ("<) - * - * @tparam T The type of the Group to add/register. This should be a type that derives from Group. - * @tparam TBASE The type whose type catalog will be used to look up the new sub-group type - * @param[in] name The name of the group to use as a string key. - * @param[in] catalogName The catalog name of the new type. - * @return A pointer to the newly registered Group. - * - * Creates and registers a Group or class derived from Group as a subgroup of this Group. - */ - template< typename T = Group, typename TBASE = Group > - T & registerGroup( string const & name, string const & catalogName ) - { - std::unique_ptr< TBASE > newGroup = TBASE::CatalogInterface::Factory( catalogName, name, this ); - return registerGroup< T >( name, std::move( newGroup ) ); - } - /** * @brief Removes a child group from this group. * @param name the name of the child group to remove from this group. @@ -769,6 +751,26 @@ class Group */ void postRestartInitializationRecursive(); + /** + * @return The validated name for a given Group from its xml value: If the node has a "name" + * attribute, it is validated after the `groupName` rtType regex, and its value is + * returned. Else if the Group name is not "Required", the node tag name is used. + * @param targetNode The XML node whose name is to be processed. It throws if not of element type. + * @param targetNodePos The position of the target node within the XML document. + * @param parentNodeName The name of the parent node, used for error reporting. + * @param parentNodePos The position of the parent node, used for error reporting. + * @param siblingNames A set containing the names of sibling nodes (to verify that there are no + * duplicates). The function will populate this set if the attribute name is + * used and if no error is found. + * @throws InputError if the node type is not an xml element or if there are duplicate names + * among xml siblings. + */ + static string processInputName( xmlWrapper::xmlNode const & targetNode, + xmlWrapper::xmlNodePos const & targetNodePos, + string_view parentNodeName, + xmlWrapper::xmlNodePos const & parentNodePos, + std::set< string > & siblingNames ); + /** * @brief Recursively read values using ProcessInputFile() from the input * file and put them into the wrapped values for this group. @@ -783,11 +785,11 @@ class Group * but allow to reuse an existing xmlNodePos. * @param[in] xmlDocument the XML document that contains the targetNode. * @param[in] targetNode the XML node that to extract input values from. - * @param[in] nodePos the target node position, typically obtained with xmlDocument::getNodePosition(). + * @param[in] targetNodePos the target node position, typically obtained with xmlDocument::getNodePosition(). */ void processInputFileRecursive( xmlWrapper::xmlDocument & xmlDocument, xmlWrapper::xmlNode & targetNode, - xmlWrapper::xmlNodePos const & nodePos ); + xmlWrapper::xmlNodePos const & targetNodePos ); /** * @brief Recursively call postInputInitialization() to apply post processing after diff --git a/src/coreComponents/dataRepository/GroupContext.cpp b/src/coreComponents/dataRepository/GroupContext.cpp index e19a7358fa1..c60880bd768 100644 --- a/src/coreComponents/dataRepository/GroupContext.cpp +++ b/src/coreComponents/dataRepository/GroupContext.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -25,7 +25,7 @@ namespace dataRepository { -GroupContext::GroupContext( Group & group, string const & objectName ): +GroupContext::GroupContext( Group & group, string_view objectName ): DataContext( objectName ), m_group( group ) {} diff --git a/src/coreComponents/dataRepository/GroupContext.hpp b/src/coreComponents/dataRepository/GroupContext.hpp index d361bd26e58..166543b883f 100644 --- a/src/coreComponents/dataRepository/GroupContext.hpp +++ b/src/coreComponents/dataRepository/GroupContext.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -57,7 +57,7 @@ class GroupContext : public DataContext * @param group The reference to the Group related to this GroupContext. * @param objectName Target object name. */ - GroupContext( Group & group, string const & objectName ); + GroupContext( Group & group, string_view objectName ); /// The reference to the Group related to this GroupContext. Group & m_group; diff --git a/src/coreComponents/dataRepository/HistoryDataSpec.hpp b/src/coreComponents/dataRepository/HistoryDataSpec.hpp index 5ffbc3eb343..f1d083f1d2a 100644 --- a/src/coreComponents/dataRepository/HistoryDataSpec.hpp +++ b/src/coreComponents/dataRepository/HistoryDataSpec.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/dataRepository/InputFlags.hpp b/src/coreComponents/dataRepository/InputFlags.hpp index d761ad85f28..4390eec54b0 100644 --- a/src/coreComponents/dataRepository/InputFlags.hpp +++ b/src/coreComponents/dataRepository/InputFlags.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/dataRepository/KeyIndexT.hpp b/src/coreComponents/dataRepository/KeyIndexT.hpp index 6a6b2ff32a3..2812bc1ca8f 100644 --- a/src/coreComponents/dataRepository/KeyIndexT.hpp +++ b/src/coreComponents/dataRepository/KeyIndexT.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/dataRepository/KeyNames.hpp b/src/coreComponents/dataRepository/KeyNames.hpp index 30842d4c719..4c46b69a266 100644 --- a/src/coreComponents/dataRepository/KeyNames.hpp +++ b/src/coreComponents/dataRepository/KeyNames.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/dataRepository/LogLevelsInfo.hpp b/src/coreComponents/dataRepository/LogLevelsInfo.hpp index d0b0ee1817d..7e50ece2eb4 100644 --- a/src/coreComponents/dataRepository/LogLevelsInfo.hpp +++ b/src/coreComponents/dataRepository/LogLevelsInfo.hpp @@ -2,10 +2,11 @@ * ------------------------------------------------------------------------------------------------------------ * SPDX-License-Identifier: LGPL-2.1-only * - * Copyright (c) 2018-2020 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2020 The Board of Trustees of the Leland Stanford Junior University - * Copyright (c) 2018-2020 TotalEnergies - * Copyright (c) 2019- GEOSX Contributors + * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC + * Copyright (c) 2018-2024 TotalEnergies + * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University + * Copyright (c) 2023-2024 Chevron + * Copyright (c) 2019- GEOS/GEOSX Contributors * All rights reserved * * See top level LICENSE, COPYRIGHT, CONTRIBUTORS, NOTICE, and ACKNOWLEDGEMENTS files for details. diff --git a/src/coreComponents/dataRepository/LogLevelsRegistry.cpp b/src/coreComponents/dataRepository/LogLevelsRegistry.cpp index ae3e48ccd72..3f81ef9e285 100644 --- a/src/coreComponents/dataRepository/LogLevelsRegistry.cpp +++ b/src/coreComponents/dataRepository/LogLevelsRegistry.cpp @@ -2,10 +2,11 @@ * ------------------------------------------------------------------------------------------------------------ * SPDX-License-Identifier: LGPL-2.1-only * - * Copyright (c) 2018-2020 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2020 The Board of Trustees of the Leland Stanford Junior University - * Copyright (c) 2018-2020 TotalEnergies - * Copyright (c) 2019- GEOSX Contributors + * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC + * Copyright (c) 2018-2024 TotalEnergies + * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University + * Copyright (c) 2023-2024 Chevron + * Copyright (c) 2019- GEOS/GEOSX Contributors * All rights reserved * * See top level LICENSE, COPYRIGHT, CONTRIBUTORS, NOTICE, and ACKNOWLEDGEMENTS files for details. diff --git a/src/coreComponents/dataRepository/LogLevelsRegistry.hpp b/src/coreComponents/dataRepository/LogLevelsRegistry.hpp index 88b38224cdc..d96f9a79d4e 100644 --- a/src/coreComponents/dataRepository/LogLevelsRegistry.hpp +++ b/src/coreComponents/dataRepository/LogLevelsRegistry.hpp @@ -2,10 +2,11 @@ * ------------------------------------------------------------------------------------------------------------ * SPDX-License-Identifier: LGPL-2.1-only * - * Copyright (c) 2018-2020 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2020 The Board of Trustees of the Leland Stanford Junior University - * Copyright (c) 2018-2020 TotalEnergies - * Copyright (c) 2019- GEOSX Contributors + * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC + * Copyright (c) 2018-2024 TotalEnergies + * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University + * Copyright (c) 2023-2024 Chevron + * Copyright (c) 2019- GEOS/GEOSX Contributors * All rights reserved * * See top level LICENSE, COPYRIGHT, CONTRIBUTORS, NOTICE, and ACKNOWLEDGEMENTS files for details. diff --git a/src/coreComponents/dataRepository/MappedVector.hpp b/src/coreComponents/dataRepository/MappedVector.hpp index 4fe016be1c1..59f7967d991 100644 --- a/src/coreComponents/dataRepository/MappedVector.hpp +++ b/src/coreComponents/dataRepository/MappedVector.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/dataRepository/ObjectCatalog.hpp b/src/coreComponents/dataRepository/ObjectCatalog.hpp index c03715e09df..2fd0762c97b 100644 --- a/src/coreComponents/dataRepository/ObjectCatalog.hpp +++ b/src/coreComponents/dataRepository/ObjectCatalog.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -30,6 +30,7 @@ #include "common/logger/Logger.hpp" #include "common/format/StringUtilities.hpp" #include "LvArray/src/system.hpp" +#include "DataContext.hpp" #include #include @@ -171,39 +172,48 @@ class CatalogInterface /** * @brief Static method to create a new object that derives from BASETYPE * @param[in] objectTypeName the key to the catalog entry that is able to create the correct type. + * @param context The data context of the Group for which we attempt to create a sub-group. * @param args these are the arguments to the constructor of the target type * @return passes a unique_ptr to the newly allocated class. - * - * @note The simulation is killed if the builder is not found. + * @note Generate a fatal error: + * - if the object type to create is not found in this Catalog, + * - if the builder is not found. */ //START_SPHINX_2 static std::unique_ptr< BASETYPE > factory( std::string const & objectTypeName, + DataContext const & context, ARGS... args ) { - // We stop the simulation if the product is not found - if( !hasKeyName( objectTypeName ) ) - { - std::list< typename CatalogType::key_type > keys = getKeys(); - string const tmp = stringutilities::join( keys.cbegin(), keys.cend(), ",\n" ); - - string errorMsg = "Could not find keyword \"" + objectTypeName + "\" in this context. "; - errorMsg += "Please be sure that all your keywords are properly spelled or that input file parameters have not changed.\n"; - errorMsg += "All available keys are: [\n" + tmp + "\n]"; - GEOS_ERROR( errorMsg ); - } + // We stop the simulation if the type to create is not found + GEOS_ERROR_IF( !hasKeyName( objectTypeName ), unknownTypeError( objectTypeName, context, getKeys() ) ); // We also stop the simulation if the builder is not here. CatalogInterface< BASETYPE, ARGS... > const * builder = getCatalog().at( objectTypeName ).get(); - if( builder == nullptr ) - { - const string errorMsg = "\"" + objectTypeName + "\" could be found. But the builder is invalid.\n"; - GEOS_ERROR( errorMsg ); - } + GEOS_ERROR_IF( builder == nullptr, + GEOS_FMT( "Type \"{}\" is valid in {}, but the builder is invalid.", + objectTypeName, context ) ); return builder->allocate( args ... ); } //STOP_SPHINX + /** + * @return Generates a formatted error message for an unknown type for a catalog. + * @param objectTypeName The name of the object type that is invalid. + * @param context The data context of the Group for which the erroneous type creation was attempted. + * @param allowedKeys A container of allowed keys, which will be listed in the error message. + * @tparam KEYS_CONTAINER_T A container type holding the allowed keys. + */ + template< typename KEYS_CONTAINER_T > + static string unknownTypeError( string const & objectTypeName, DataContext const & context, + KEYS_CONTAINER_T const & allowedKeys ) + { + return GEOS_FMT( "The tag \"{}\" is invalid within {}. Please verify the keywords spelling and that " + "input file parameters have not changed.\n" + "All available tags are: {}\n", + objectTypeName, context, stringutilities::join( allowedKeys, ", " ) ); + } + /** * @brief Downcast base type reference to derived type * @tparam TYPE type to cast to @@ -303,7 +313,7 @@ class CatalogEntry final : public CatalogInterface< BASETYPE, ARGS... > */ CatalogEntry & operator=( CatalogEntry && source ) { - CatalogInterface< BASETYPE, ARGS... >::operator=( std::move(source)); + CatalogInterface< BASETYPE, ARGS... >::operator=( std::move( source )); } /** @@ -312,7 +322,7 @@ class CatalogEntry final : public CatalogInterface< BASETYPE, ARGS... > * @return a unique_ptr to the newly allocated class. */ //START_SPHINX_4 - virtual std::unique_ptr< BASETYPE > allocate( ARGS... args ) const override + virtual std::unique_ptr< BASETYPE > allocate( ARGS ... args ) const override { #if OBJECTCATALOGVERBOSE > 0 GEOS_LOG( "Creating type " << LvArray::system::demangle( typeid(TYPE).name()) @@ -589,7 +599,7 @@ class CatalogEntry< BASETYPE, TYPE > final : public CatalogInterface< BASETYPE > */ CatalogEntry & operator=( CatalogEntry && source ) { - CatalogInterface< BASETYPE >::operator=( std::move(source)); + CatalogInterface< BASETYPE >::operator=( std::move( source )); } /** diff --git a/src/coreComponents/dataRepository/ReferenceWrapper.hpp b/src/coreComponents/dataRepository/ReferenceWrapper.hpp index 0bd8b374b5e..6fb666b3e9f 100644 --- a/src/coreComponents/dataRepository/ReferenceWrapper.hpp +++ b/src/coreComponents/dataRepository/ReferenceWrapper.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/dataRepository/RestartFlags.hpp b/src/coreComponents/dataRepository/RestartFlags.hpp index 3188c7ad601..f6fc765d94a 100644 --- a/src/coreComponents/dataRepository/RestartFlags.hpp +++ b/src/coreComponents/dataRepository/RestartFlags.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/dataRepository/Utilities.cpp b/src/coreComponents/dataRepository/Utilities.cpp index 37180553677..03be7e7f721 100644 --- a/src/coreComponents/dataRepository/Utilities.cpp +++ b/src/coreComponents/dataRepository/Utilities.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/dataRepository/Utilities.hpp b/src/coreComponents/dataRepository/Utilities.hpp index c88cc3290e7..93a2084d15e 100644 --- a/src/coreComponents/dataRepository/Utilities.hpp +++ b/src/coreComponents/dataRepository/Utilities.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/dataRepository/Wrapper.hpp b/src/coreComponents/dataRepository/Wrapper.hpp index 881d9df2a6c..344806e5362 100644 --- a/src/coreComponents/dataRepository/Wrapper.hpp +++ b/src/coreComponents/dataRepository/Wrapper.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -411,7 +411,7 @@ class Wrapper final : public WrapperBase virtual void resize( localIndex const newSize ) override { wrapperHelpers::move( *m_data, hostMemorySpace, true ); - wrapperHelpers::resizeDefault( reference(), newSize, m_default ); + wrapperHelpers::resizeDefault( reference(), newSize, m_default, this->getName() ); } /// @cond DO_NOT_DOCUMENT diff --git a/src/coreComponents/dataRepository/WrapperBase.cpp b/src/coreComponents/dataRepository/WrapperBase.cpp index 518bf4dfed2..306878ab9e6 100644 --- a/src/coreComponents/dataRepository/WrapperBase.cpp +++ b/src/coreComponents/dataRepository/WrapperBase.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/dataRepository/WrapperBase.hpp b/src/coreComponents/dataRepository/WrapperBase.hpp index 8737beb8473..36b74c84971 100644 --- a/src/coreComponents/dataRepository/WrapperBase.hpp +++ b/src/coreComponents/dataRepository/WrapperBase.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/dataRepository/WrapperContext.cpp b/src/coreComponents/dataRepository/WrapperContext.cpp index 253a2d9c053..92f52ba8708 100644 --- a/src/coreComponents/dataRepository/WrapperContext.cpp +++ b/src/coreComponents/dataRepository/WrapperContext.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/dataRepository/WrapperContext.hpp b/src/coreComponents/dataRepository/WrapperContext.hpp index 7c1b059919d..78fd48fb6f1 100644 --- a/src/coreComponents/dataRepository/WrapperContext.hpp +++ b/src/coreComponents/dataRepository/WrapperContext.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/dataRepository/python/PyGroup.cpp b/src/coreComponents/dataRepository/python/PyGroup.cpp index a9dbe024844..9fa25b2db3c 100644 --- a/src/coreComponents/dataRepository/python/PyGroup.cpp +++ b/src/coreComponents/dataRepository/python/PyGroup.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/dataRepository/python/PyGroup.hpp b/src/coreComponents/dataRepository/python/PyGroup.hpp index fc5d70ea934..80af2282c50 100644 --- a/src/coreComponents/dataRepository/python/PyGroup.hpp +++ b/src/coreComponents/dataRepository/python/PyGroup.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/dataRepository/python/PyGroupType.hpp b/src/coreComponents/dataRepository/python/PyGroupType.hpp index 042442a9f36..df0879ae86e 100644 --- a/src/coreComponents/dataRepository/python/PyGroupType.hpp +++ b/src/coreComponents/dataRepository/python/PyGroupType.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/dataRepository/python/PyWrapper.cpp b/src/coreComponents/dataRepository/python/PyWrapper.cpp index cff2b890e95..68b620986c7 100644 --- a/src/coreComponents/dataRepository/python/PyWrapper.cpp +++ b/src/coreComponents/dataRepository/python/PyWrapper.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/dataRepository/python/PyWrapper.hpp b/src/coreComponents/dataRepository/python/PyWrapper.hpp index b6bb4400a07..c059459e397 100644 --- a/src/coreComponents/dataRepository/python/PyWrapper.hpp +++ b/src/coreComponents/dataRepository/python/PyWrapper.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/dataRepository/unitTests/testBufferOps.cpp b/src/coreComponents/dataRepository/unitTests/testBufferOps.cpp index 0f3c469f345..bc7fb8357b1 100644 --- a/src/coreComponents/dataRepository/unitTests/testBufferOps.cpp +++ b/src/coreComponents/dataRepository/unitTests/testBufferOps.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/dataRepository/unitTests/testDefaultValue.cpp b/src/coreComponents/dataRepository/unitTests/testDefaultValue.cpp index 92f5861fa7d..eef51a81bf8 100644 --- a/src/coreComponents/dataRepository/unitTests/testDefaultValue.cpp +++ b/src/coreComponents/dataRepository/unitTests/testDefaultValue.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/dataRepository/unitTests/testPacking.cpp b/src/coreComponents/dataRepository/unitTests/testPacking.cpp index 4befe364d83..32b31f7c1b6 100644 --- a/src/coreComponents/dataRepository/unitTests/testPacking.cpp +++ b/src/coreComponents/dataRepository/unitTests/testPacking.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/dataRepository/unitTests/testReferenceWrapper.cpp b/src/coreComponents/dataRepository/unitTests/testReferenceWrapper.cpp index 15db54edc25..1a7979cf541 100644 --- a/src/coreComponents/dataRepository/unitTests/testReferenceWrapper.cpp +++ b/src/coreComponents/dataRepository/unitTests/testReferenceWrapper.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/dataRepository/unitTests/testWrapper.cpp b/src/coreComponents/dataRepository/unitTests/testWrapper.cpp index 6982cec6560..d04fd2b5440 100644 --- a/src/coreComponents/dataRepository/unitTests/testWrapper.cpp +++ b/src/coreComponents/dataRepository/unitTests/testWrapper.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/dataRepository/unitTests/testXmlWrapper.cpp b/src/coreComponents/dataRepository/unitTests/testXmlWrapper.cpp index ce1dbaf3e7e..fba0eec3ab4 100644 --- a/src/coreComponents/dataRepository/unitTests/testXmlWrapper.cpp +++ b/src/coreComponents/dataRepository/unitTests/testXmlWrapper.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/dataRepository/wrapperHelpers.hpp b/src/coreComponents/dataRepository/wrapperHelpers.hpp index fcbaea7ab97..7b66b1b2178 100644 --- a/src/coreComponents/dataRepository/wrapperHelpers.hpp +++ b/src/coreComponents/dataRepository/wrapperHelpers.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -33,6 +33,7 @@ #include "common/GeosxMacros.hpp" #include "common/Span.hpp" #include "codingUtilities/traits.hpp" +#include "LvArray/src/system.hpp" #if defined(GEOS_USE_PYGEOSX) #include "LvArray/src/python/python.hpp" @@ -188,18 +189,40 @@ resize( T & GEOS_UNUSED_PARAM( value ), localIndex const GEOS_UNUSED_PARAM( newSize ) ) {} - -template< typename T, int NDIM, typename PERMUTATION > -inline std::enable_if_t< DefaultValue< Array< T, NDIM, PERMUTATION > >::has_default_value > -resizeDefault( Array< T, NDIM, PERMUTATION > & value, +template< typename T > +inline std::enable_if_t< traits::HasMemberFunction_resizeDefault< T > && + DefaultValue< T >::has_default_value > +resizeDefault( T & value, localIndex const newSize, - DefaultValue< Array< T, NDIM, PERMUTATION > > const & defaultValue ) + DefaultValue< T > const & defaultValue, + string const & ) { value.resizeDefault( newSize, defaultValue.value ); } template< typename T > -inline void -resizeDefault( T & value, localIndex const newSize, DefaultValue< T > const & GEOS_UNUSED_PARAM( defaultValue ) ) -{ resize( value, newSize ); } +inline std::enable_if_t< !( traits::HasMemberFunction_resizeDefault< T > && + DefaultValue< T >::has_default_value ) > +resizeDefault( T & value, + localIndex const newSize, + DefaultValue< T > const & GEOS_UNUSED_PARAM( defaultValue ), + string const & name ) +{ +#if !defined(NDEBUG) + GEOS_LOG_RANK_0( GEOS_FMT( "Warning: For Wrapper<{}>::name() = {}:\n" + " wrapperHelpers::resizeDefault<{}>() called, but the SFINAE filter failed:\n" + " traits::HasMemberFunction_resizeDefault< {} > = {}\n " + " DefaultValue< {} >::has_default_value = {}", + LvArray::system::demangleType< T >(), + name, + LvArray::system::demangleType< T >(), + LvArray::system::demangleType< T >(), + traits::HasMemberFunction_resizeDefault< T >, + LvArray::system::demangleType< T >(), + DefaultValue< T >::has_default_value ) ); +#else + GEOS_UNUSED_VAR( name ); +#endif + resize( value, newSize ); +} template< typename T, int NDIM, typename PERMUTATION > diff --git a/src/coreComponents/dataRepository/xmlWrapper.cpp b/src/coreComponents/dataRepository/xmlWrapper.cpp index e2e7d85332c..c84439c874f 100644 --- a/src/coreComponents/dataRepository/xmlWrapper.cpp +++ b/src/coreComponents/dataRepository/xmlWrapper.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -32,18 +32,29 @@ using namespace dataRepository; namespace xmlWrapper { -void validateString( string const & value, Regex const & regex ) +void validateString( string const & value, const Regex & regex ) { - std::smatch m; - bool inputValidated = std::regex_match( value, m, std::regex( regex.m_regexStr ) ); - if( !inputValidated ) + std::regex regexInstance{ regex.m_regexStr }; + // if validation fails, let's try to find the error start & end to underline it. If it fails, underline the whole message. + if( !std::regex_match( value, regexInstance )) { - ptrdiff_t errorId = ( m.size()>0 && m.position( 0 )==0 ) ? m.length() : 0; + std::smatch m; + std::regex_search( value, m, regexInstance ); + ptrdiff_t const errorStart = ( m.size()>0 && m.position( 0 )==0 ) ? m.length() : 0; + + size_t errorLength; + for( errorLength = 1; errorStart + errorLength < value.length(); ++errorLength ) + { + if( std::regex_match( value.substr( errorStart + errorLength, 1 ), regexInstance ) ) + break; + } + + string const underline = string( errorStart, ' ' ) + string( errorLength, '^' ); GEOS_THROW( GEOS_FMT( "Input string validation failed at:\n" " \"{}\"\n" - " {:>{}}\n" + " {}\n" " Expected format: {}", - value, '^', errorId+1, regex.m_formatDescription ), + value, underline, regex.m_formatDescription ), InputError ); } } @@ -171,7 +182,7 @@ void xmlDocument::addIncludedXML( xmlNode & targetNode, int const level ) return isAbsolutePath( fileName ) ? fileName : joinPath( splitPath( currentFilePath ).first, fileName ); }(); - GEOS_LOG_RANK_0( "Included additionnal XML file: " << getAbsolutePath( includedFilePath ) ); + GEOS_LOG_RANK_0( "Included additional XML file: " << getAbsolutePath( includedFilePath ) ); xmlDocument includedXmlDocument; xmlResult const result = includedXmlDocument.loadFile( includedFilePath, hasNodeFileInfo() ); diff --git a/src/coreComponents/dataRepository/xmlWrapper.hpp b/src/coreComponents/dataRepository/xmlWrapper.hpp index 3909184a5be..71890a2a21f 100644 --- a/src/coreComponents/dataRepository/xmlWrapper.hpp +++ b/src/coreComponents/dataRepository/xmlWrapper.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/denseLinearAlgebra/CMakeLists.txt b/src/coreComponents/denseLinearAlgebra/CMakeLists.txt index 259a0ab9ff1..c91c99e352f 100644 --- a/src/coreComponents/denseLinearAlgebra/CMakeLists.txt +++ b/src/coreComponents/denseLinearAlgebra/CMakeLists.txt @@ -1,7 +1,7 @@ # SPDX-License-Identifier: LGPL-2.1-only # # Copyright (c) 2016-2024 Lawrence Livermore National Security LLC -# Copyright (c) 2018-2024 Total, S.A +# Copyright (c) 2018-2024 TotalEnergies # Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University # Copyright (c) 2023-2024 Chevron # Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/denseLinearAlgebra/common/layouts.hpp b/src/coreComponents/denseLinearAlgebra/common/layouts.hpp index 9e9415afa2b..77bf184d868 100644 --- a/src/coreComponents/denseLinearAlgebra/common/layouts.hpp +++ b/src/coreComponents/denseLinearAlgebra/common/layouts.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/denseLinearAlgebra/denseLASolvers.hpp b/src/coreComponents/denseLinearAlgebra/denseLASolvers.hpp index bdc2b22614f..976b6df848d 100644 --- a/src/coreComponents/denseLinearAlgebra/denseLASolvers.hpp +++ b/src/coreComponents/denseLinearAlgebra/denseLASolvers.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/denseLinearAlgebra/interfaces/blaslapack/BlasLapackFunctions.h b/src/coreComponents/denseLinearAlgebra/interfaces/blaslapack/BlasLapackFunctions.h index c3716c8a870..47600b5b100 100644 --- a/src/coreComponents/denseLinearAlgebra/interfaces/blaslapack/BlasLapackFunctions.h +++ b/src/coreComponents/denseLinearAlgebra/interfaces/blaslapack/BlasLapackFunctions.h @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/denseLinearAlgebra/interfaces/blaslapack/BlasLapackLA.cpp b/src/coreComponents/denseLinearAlgebra/interfaces/blaslapack/BlasLapackLA.cpp index d9f1405cec4..2642d481a4d 100644 --- a/src/coreComponents/denseLinearAlgebra/interfaces/blaslapack/BlasLapackLA.cpp +++ b/src/coreComponents/denseLinearAlgebra/interfaces/blaslapack/BlasLapackLA.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/denseLinearAlgebra/interfaces/blaslapack/BlasLapackLA.hpp b/src/coreComponents/denseLinearAlgebra/interfaces/blaslapack/BlasLapackLA.hpp index 370c4c4ee5d..ffacecc65de 100644 --- a/src/coreComponents/denseLinearAlgebra/interfaces/blaslapack/BlasLapackLA.hpp +++ b/src/coreComponents/denseLinearAlgebra/interfaces/blaslapack/BlasLapackLA.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/denseLinearAlgebra/unitTests/testBlasLapack.cpp b/src/coreComponents/denseLinearAlgebra/unitTests/testBlasLapack.cpp index 51abc10565e..b3b8046b0f9 100644 --- a/src/coreComponents/denseLinearAlgebra/unitTests/testBlasLapack.cpp +++ b/src/coreComponents/denseLinearAlgebra/unitTests/testBlasLapack.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/denseLinearAlgebra/unitTests/testDenseLASolvers.cpp b/src/coreComponents/denseLinearAlgebra/unitTests/testDenseLASolvers.cpp index 5ec47ac1982..cbeda07ea64 100644 --- a/src/coreComponents/denseLinearAlgebra/unitTests/testDenseLASolvers.cpp +++ b/src/coreComponents/denseLinearAlgebra/unitTests/testDenseLASolvers.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/denseLinearAlgebra/unitTests/testSolveLinearSystem.cpp b/src/coreComponents/denseLinearAlgebra/unitTests/testSolveLinearSystem.cpp index 678332963a0..605a3e16ea6 100644 --- a/src/coreComponents/denseLinearAlgebra/unitTests/testSolveLinearSystem.cpp +++ b/src/coreComponents/denseLinearAlgebra/unitTests/testSolveLinearSystem.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/discretizationMethods/CMakeLists.txt b/src/coreComponents/discretizationMethods/CMakeLists.txt index ae7cff10390..176924f5c41 100644 --- a/src/coreComponents/discretizationMethods/CMakeLists.txt +++ b/src/coreComponents/discretizationMethods/CMakeLists.txt @@ -1,7 +1,7 @@ # SPDX-License-Identifier: LGPL-2.1-only # # Copyright (c) 2016-2024 Lawrence Livermore National Security LLC -# Copyright (c) 2018-2024 Total, S.A +# Copyright (c) 2018-2024 TotalEnergies # Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University # Copyright (c) 2023-2024 Chevron # Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/discretizationMethods/NumericalMethodsManager.cpp b/src/coreComponents/discretizationMethods/NumericalMethodsManager.cpp index b57a2fe5192..f9dbbb06bc3 100644 --- a/src/coreComponents/discretizationMethods/NumericalMethodsManager.cpp +++ b/src/coreComponents/discretizationMethods/NumericalMethodsManager.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -41,6 +41,7 @@ NumericalMethodsManager::~NumericalMethodsManager() Group * NumericalMethodsManager::createChild( string const & GEOS_UNUSED_PARAM( childKey ), string const & GEOS_UNUSED_PARAM( childName ) ) { + // Unused as all children are created within the constructor return nullptr; } diff --git a/src/coreComponents/discretizationMethods/NumericalMethodsManager.hpp b/src/coreComponents/discretizationMethods/NumericalMethodsManager.hpp index 3db8a3e6a7b..503647f206a 100644 --- a/src/coreComponents/discretizationMethods/NumericalMethodsManager.hpp +++ b/src/coreComponents/discretizationMethods/NumericalMethodsManager.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/dummy.cpp b/src/coreComponents/dummy.cpp index e64d16594db..44722daa7d7 100644 --- a/src/coreComponents/dummy.cpp +++ b/src/coreComponents/dummy.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/events/CMakeLists.txt b/src/coreComponents/events/CMakeLists.txt index 4f80fe771ab..a8e2e2ba714 100644 --- a/src/coreComponents/events/CMakeLists.txt +++ b/src/coreComponents/events/CMakeLists.txt @@ -1,7 +1,7 @@ # SPDX-License-Identifier: LGPL-2.1-only # # Copyright (c) 2016-2024 Lawrence Livermore National Security LLC -# Copyright (c) 2018-2024 Total, S.A +# Copyright (c) 2018-2024 TotalEnergies # Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University # Copyright (c) 2023-2024 Chevron # Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/events/EventBase.cpp b/src/coreComponents/events/EventBase.cpp index 5a185d1c719..52b3c386c2d 100644 --- a/src/coreComponents/events/EventBase.cpp +++ b/src/coreComponents/events/EventBase.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -122,8 +122,9 @@ EventBase::CatalogInterface::CatalogType & EventBase::getCatalog() Group * EventBase::createChild( string const & childKey, string const & childName ) { - GEOS_LOG_RANK_0( "Adding Event: " << childKey << ", " << childName ); - std::unique_ptr< EventBase > event = EventBase::CatalogInterface::factory( childKey, childName, this ); + GEOS_LOG_RANK_0( GEOS_FMT( "{}: adding {} {}", getName(), childKey, childName ) ); + std::unique_ptr< EventBase > event = + EventBase::CatalogInterface::factory( childKey, getDataContext(), childName, this ); return &this->registerGroup< EventBase >( childName, std::move( event ) ); } diff --git a/src/coreComponents/events/EventBase.hpp b/src/coreComponents/events/EventBase.hpp index 6e9651c5e4e..c3e4920b188 100644 --- a/src/coreComponents/events/EventBase.hpp +++ b/src/coreComponents/events/EventBase.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/events/EventManager.cpp b/src/coreComponents/events/EventManager.cpp index 8e176f41d4a..3f709bce94b 100644 --- a/src/coreComponents/events/EventManager.cpp +++ b/src/coreComponents/events/EventManager.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -93,8 +93,9 @@ EventManager::~EventManager() Group * EventManager::createChild( string const & childKey, string const & childName ) { - GEOS_LOG_RANK_0( "Adding Event: " << childKey << ", " << childName ); - std::unique_ptr< EventBase > event = EventBase::CatalogInterface::factory( childKey, childName, this ); + GEOS_LOG_RANK_0( GEOS_FMT( "{}: adding {} {}", getName(), childKey, childName ) ); + std::unique_ptr< EventBase > event = + EventBase::CatalogInterface::factory( childKey, getDataContext(), childName, this ); return &this->registerGroup< EventBase >( childName, std::move( event ) ); } diff --git a/src/coreComponents/events/EventManager.hpp b/src/coreComponents/events/EventManager.hpp index f60c004fbf2..b86f48b8518 100644 --- a/src/coreComponents/events/EventManager.hpp +++ b/src/coreComponents/events/EventManager.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/events/HaltEvent.cpp b/src/coreComponents/events/HaltEvent.cpp index f4381f0b0fb..93cc9d2d581 100644 --- a/src/coreComponents/events/HaltEvent.cpp +++ b/src/coreComponents/events/HaltEvent.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/events/HaltEvent.hpp b/src/coreComponents/events/HaltEvent.hpp index 5614484e54a..68501ea47b2 100644 --- a/src/coreComponents/events/HaltEvent.hpp +++ b/src/coreComponents/events/HaltEvent.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/events/PeriodicEvent.cpp b/src/coreComponents/events/PeriodicEvent.cpp index bb55daa3b19..e26ea889137 100644 --- a/src/coreComponents/events/PeriodicEvent.cpp +++ b/src/coreComponents/events/PeriodicEvent.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/events/PeriodicEvent.hpp b/src/coreComponents/events/PeriodicEvent.hpp index a737400358a..9c2cf943c87 100644 --- a/src/coreComponents/events/PeriodicEvent.hpp +++ b/src/coreComponents/events/PeriodicEvent.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/events/SoloEvent.cpp b/src/coreComponents/events/SoloEvent.cpp index 5f3b1e87738..89d8b2edd23 100644 --- a/src/coreComponents/events/SoloEvent.cpp +++ b/src/coreComponents/events/SoloEvent.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/events/SoloEvent.hpp b/src/coreComponents/events/SoloEvent.hpp index ce53eba8f5f..d905e07e479 100644 --- a/src/coreComponents/events/SoloEvent.hpp +++ b/src/coreComponents/events/SoloEvent.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/events/tasks/TaskBase.cpp b/src/coreComponents/events/tasks/TaskBase.cpp index 1a885b95ec2..6020534f189 100644 --- a/src/coreComponents/events/tasks/TaskBase.cpp +++ b/src/coreComponents/events/tasks/TaskBase.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/events/tasks/TaskBase.hpp b/src/coreComponents/events/tasks/TaskBase.hpp index c8744e18e15..dfe0393fe86 100644 --- a/src/coreComponents/events/tasks/TaskBase.hpp +++ b/src/coreComponents/events/tasks/TaskBase.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/events/tasks/TasksManager.cpp b/src/coreComponents/events/tasks/TasksManager.cpp index ad23ae788b1..7dfec005c62 100644 --- a/src/coreComponents/events/tasks/TasksManager.cpp +++ b/src/coreComponents/events/tasks/TasksManager.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -38,7 +38,9 @@ TasksManager::~TasksManager() Group * TasksManager::createChild( string const & childKey, string const & childName ) { - std::unique_ptr< TaskBase > task = TaskBase::CatalogInterface::factory( childKey, childName, this ); + GEOS_LOG_RANK_0( GEOS_FMT( "{}: adding {} {}", getName(), childKey, childName ) ); + std::unique_ptr< TaskBase > task = + TaskBase::CatalogInterface::factory( childKey, getDataContext(), childName, this ); return &this->registerGroup< TaskBase >( childName, std::move( task ) ); } diff --git a/src/coreComponents/events/tasks/TasksManager.hpp b/src/coreComponents/events/tasks/TasksManager.hpp index 79117b59437..852e0fd8cf4 100644 --- a/src/coreComponents/events/tasks/TasksManager.hpp +++ b/src/coreComponents/events/tasks/TasksManager.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/fieldSpecification/AquiferBoundaryCondition.cpp b/src/coreComponents/fieldSpecification/AquiferBoundaryCondition.cpp index dffd783e997..061cfc344b9 100644 --- a/src/coreComponents/fieldSpecification/AquiferBoundaryCondition.cpp +++ b/src/coreComponents/fieldSpecification/AquiferBoundaryCondition.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -163,7 +163,7 @@ void AquiferBoundaryCondition::postInputInitialization() void AquiferBoundaryCondition::setupDefaultPressureInfluenceFunction() { - // default table; see Eclipse or Intersect documentation + // default table array1d< array1d< real64 > > dimensionlessTime; dimensionlessTime.resize( 1 ); @@ -281,14 +281,13 @@ void AquiferBoundaryCondition::setGravityVector( R1Tensor const & gravityVector void AquiferBoundaryCondition::computeTimeConstant() { - // equation 5.3 of the Eclipse TD m_timeConstant = m_viscosity * m_porosity * m_totalCompressibility * m_innerRadius * m_innerRadius; m_timeConstant /= m_permeability; } void AquiferBoundaryCondition::computeInfluxConstant() { - // equation 5.4 of the Eclipse TD, including the constant 6.283 of the Carter-Tracy model + // 6.283 is the constant of the Carter-Tracy model m_influxConstant = 6.283 * m_thickness * ( m_angle / 360.0 ) * m_porosity * m_totalCompressibility * m_innerRadius * m_innerRadius; } diff --git a/src/coreComponents/fieldSpecification/AquiferBoundaryCondition.hpp b/src/coreComponents/fieldSpecification/AquiferBoundaryCondition.hpp index 9ee270df074..4b27724fefe 100644 --- a/src/coreComponents/fieldSpecification/AquiferBoundaryCondition.hpp +++ b/src/coreComponents/fieldSpecification/AquiferBoundaryCondition.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -357,7 +357,7 @@ AquiferBoundaryCondition::KernelWrapper:: real64 const & areaFraction, real64 & dAquiferVolFlux_dPres ) const { - // compute the dimensionless time (equation 5.5 of the Eclipse TD) + // compute the dimensionless time real64 const dimensionlessTimeAtBeginningOfStep = timeAtBeginningOfStep / m_timeConstant; real64 const dimensionlessTimeAtEndOfStep = ( timeAtBeginningOfStep + dt ) / m_timeConstant; @@ -368,15 +368,15 @@ AquiferBoundaryCondition::KernelWrapper:: // compute the potential difference between the reservoir (old pressure) and the aquifer real64 const potDiff = m_initialPressure - reservoirPressure_n - m_density * ( m_gravCoef - reservoirGravCoef ); - // compute the a (equation 5.8 of the Eclipse TD) + // compute the a real64 const timeConstantInv = 1.0 / m_timeConstant; real64 const denom = presInfluence - dimensionlessTimeAtBeginningOfStep * dPresInfluence_dTime; real64 const a = timeConstantInv * ( m_influxConstant * potDiff - m_cumulativeFlux * dPresInfluence_dTime ) / denom; - // compute the b (equation 5.9 of the Eclipse TD) + // compute the b real64 const b = timeConstantInv * m_influxConstant / denom; - // compute the average inflow rate Q (equation 5.7 of the Eclipse TD) + // compute the average inflow rate Q real64 const aquiferVolFlux = areaFraction * ( a - b * ( reservoirPressure - reservoirPressure_n ) ); dAquiferVolFlux_dPres = -areaFraction * b; diff --git a/src/coreComponents/fieldSpecification/CMakeLists.txt b/src/coreComponents/fieldSpecification/CMakeLists.txt index d93d54fe702..0b6ff6691e6 100644 --- a/src/coreComponents/fieldSpecification/CMakeLists.txt +++ b/src/coreComponents/fieldSpecification/CMakeLists.txt @@ -1,7 +1,7 @@ # SPDX-License-Identifier: LGPL-2.1-only # # Copyright (c) 2016-2024 Lawrence Livermore National Security LLC -# Copyright (c) 2018-2024 Total, S.A +# Copyright (c) 2018-2024 TotalEnergies # Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University # Copyright (c) 2023-2024 Chevron # Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/fieldSpecification/DirichletBoundaryCondition.cpp b/src/coreComponents/fieldSpecification/DirichletBoundaryCondition.cpp index 69229b5814f..19a62d921dd 100644 --- a/src/coreComponents/fieldSpecification/DirichletBoundaryCondition.cpp +++ b/src/coreComponents/fieldSpecification/DirichletBoundaryCondition.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/fieldSpecification/DirichletBoundaryCondition.hpp b/src/coreComponents/fieldSpecification/DirichletBoundaryCondition.hpp index 589171fcd4e..553ac23e7dc 100644 --- a/src/coreComponents/fieldSpecification/DirichletBoundaryCondition.hpp +++ b/src/coreComponents/fieldSpecification/DirichletBoundaryCondition.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/fieldSpecification/EquilibriumInitialCondition.cpp b/src/coreComponents/fieldSpecification/EquilibriumInitialCondition.cpp index 14a4f0cf60d..c355f36d927 100644 --- a/src/coreComponents/fieldSpecification/EquilibriumInitialCondition.cpp +++ b/src/coreComponents/fieldSpecification/EquilibriumInitialCondition.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/fieldSpecification/EquilibriumInitialCondition.hpp b/src/coreComponents/fieldSpecification/EquilibriumInitialCondition.hpp index 9cff7dd6a93..fe29ce2fc40 100644 --- a/src/coreComponents/fieldSpecification/EquilibriumInitialCondition.hpp +++ b/src/coreComponents/fieldSpecification/EquilibriumInitialCondition.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/fieldSpecification/FieldSpecificationBase.cpp b/src/coreComponents/fieldSpecification/FieldSpecificationBase.cpp index 45e58177dd4..693ecc2f4aa 100644 --- a/src/coreComponents/fieldSpecification/FieldSpecificationBase.cpp +++ b/src/coreComponents/fieldSpecification/FieldSpecificationBase.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/fieldSpecification/FieldSpecificationBase.hpp b/src/coreComponents/fieldSpecification/FieldSpecificationBase.hpp index 8306eafca0b..cdce71bc664 100644 --- a/src/coreComponents/fieldSpecification/FieldSpecificationBase.hpp +++ b/src/coreComponents/fieldSpecification/FieldSpecificationBase.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/fieldSpecification/FieldSpecificationManager.cpp b/src/coreComponents/fieldSpecification/FieldSpecificationManager.cpp index 6edc963b457..94bbe9ea443 100644 --- a/src/coreComponents/fieldSpecification/FieldSpecificationManager.cpp +++ b/src/coreComponents/fieldSpecification/FieldSpecificationManager.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -51,7 +51,9 @@ FieldSpecificationManager & FieldSpecificationManager::getInstance() Group * FieldSpecificationManager::createChild( string const & childKey, string const & childName ) { - std::unique_ptr< FieldSpecificationBase > bc = FieldSpecificationBase::CatalogInterface::factory( childKey, childName, this ); + GEOS_LOG_RANK_0( GEOS_FMT( "{}: adding {} {}", getName(), childKey, childName ) ); + std::unique_ptr< FieldSpecificationBase > bc = + FieldSpecificationBase::CatalogInterface::factory( childKey, getDataContext(), childName, this ); return &this->registerGroup( childName, std::move( bc ) ); } diff --git a/src/coreComponents/fieldSpecification/FieldSpecificationManager.hpp b/src/coreComponents/fieldSpecification/FieldSpecificationManager.hpp index 91672902314..be7f8ffec7b 100644 --- a/src/coreComponents/fieldSpecification/FieldSpecificationManager.hpp +++ b/src/coreComponents/fieldSpecification/FieldSpecificationManager.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/fieldSpecification/PerfectlyMatchedLayer.cpp b/src/coreComponents/fieldSpecification/PerfectlyMatchedLayer.cpp index 42a360dff3a..c2d7317cec0 100644 --- a/src/coreComponents/fieldSpecification/PerfectlyMatchedLayer.cpp +++ b/src/coreComponents/fieldSpecification/PerfectlyMatchedLayer.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/fieldSpecification/PerfectlyMatchedLayer.hpp b/src/coreComponents/fieldSpecification/PerfectlyMatchedLayer.hpp index ce7a6151b2b..802e2be9cc7 100644 --- a/src/coreComponents/fieldSpecification/PerfectlyMatchedLayer.hpp +++ b/src/coreComponents/fieldSpecification/PerfectlyMatchedLayer.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/fieldSpecification/SourceFluxBoundaryCondition.cpp b/src/coreComponents/fieldSpecification/SourceFluxBoundaryCondition.cpp index c3d68b14bf7..df2c01431cd 100644 --- a/src/coreComponents/fieldSpecification/SourceFluxBoundaryCondition.cpp +++ b/src/coreComponents/fieldSpecification/SourceFluxBoundaryCondition.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/fieldSpecification/SourceFluxBoundaryCondition.hpp b/src/coreComponents/fieldSpecification/SourceFluxBoundaryCondition.hpp index e04aa99b9d0..2ee5e258bef 100644 --- a/src/coreComponents/fieldSpecification/SourceFluxBoundaryCondition.hpp +++ b/src/coreComponents/fieldSpecification/SourceFluxBoundaryCondition.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/fieldSpecification/TractionBoundaryCondition.cpp b/src/coreComponents/fieldSpecification/TractionBoundaryCondition.cpp index 9feb2731c58..4d924a8a41a 100644 --- a/src/coreComponents/fieldSpecification/TractionBoundaryCondition.cpp +++ b/src/coreComponents/fieldSpecification/TractionBoundaryCondition.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/fieldSpecification/TractionBoundaryCondition.hpp b/src/coreComponents/fieldSpecification/TractionBoundaryCondition.hpp index a64404f40de..03c67657393 100644 --- a/src/coreComponents/fieldSpecification/TractionBoundaryCondition.hpp +++ b/src/coreComponents/fieldSpecification/TractionBoundaryCondition.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/fileIO/CMakeLists.txt b/src/coreComponents/fileIO/CMakeLists.txt index 95ffd8fcb63..a53eda4945c 100644 --- a/src/coreComponents/fileIO/CMakeLists.txt +++ b/src/coreComponents/fileIO/CMakeLists.txt @@ -1,7 +1,7 @@ # SPDX-License-Identifier: LGPL-2.1-only # # Copyright (c) 2016-2024 Lawrence Livermore National Security LLC -# Copyright (c) 2018-2024 Total, S.A +# Copyright (c) 2018-2024 TotalEnergies # Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University # Copyright (c) 2023-2024 Chevron # Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/fileIO/Outputs/BlueprintOutput.cpp b/src/coreComponents/fileIO/Outputs/BlueprintOutput.cpp index 21457e7796e..55bf84e79ba 100644 --- a/src/coreComponents/fileIO/Outputs/BlueprintOutput.cpp +++ b/src/coreComponents/fileIO/Outputs/BlueprintOutput.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -129,53 +129,57 @@ BlueprintOutput::BlueprintOutput( string const & name, } /////////////////////////////////////////////////////////////////////////////////////////////////// -bool BlueprintOutput::execute( real64 const time, - real64 const, - integer const cycle, - integer const, - real64 const, +bool BlueprintOutput::execute( real64 const time_n, + real64 const GEOS_UNUSED_PARAM( dt ), + integer const cycleNumber, + integer const GEOS_UNUSED_PARAM( eventCounter ), + real64 const GEOS_UNUSED_PARAM( eventProgress ), DomainPartition & domain ) { GEOS_MARK_FUNCTION; - MeshLevel const & meshLevel = domain.getMeshBody( 0 ).getBaseDiscretization(); + { + Timer timer( m_outputTimer ); - conduit::Node meshRoot; - conduit::Node & mesh = meshRoot[ "mesh" ]; - conduit::Node & coordset = mesh[ "coordsets/nodes" ]; - conduit::Node & topologies = mesh[ "topologies" ]; + MeshLevel const & meshLevel = domain.getMeshBody( 0 ).getBaseDiscretization(); - mesh[ "state/time" ] = time; - mesh[ "state/cycle" ] = cycle; + conduit::Node meshRoot; + conduit::Node & mesh = meshRoot[ "mesh" ]; + conduit::Node & coordset = mesh[ "coordsets/nodes" ]; + conduit::Node & topologies = mesh[ "topologies" ]; - addNodalData( meshLevel.getNodeManager(), coordset, topologies, mesh[ "fields" ] ); + mesh[ "state/time" ] = time_n; + mesh[ "state/cycle" ] = cycleNumber; - dataRepository::Group averagedElementData( "averagedElementData", this ); - addElementData( meshLevel.getElemManager(), coordset, topologies, mesh[ "fields" ], averagedElementData ); + addNodalData( meshLevel.getNodeManager(), coordset, topologies, mesh[ "fields" ] ); - /// The Blueprint will complain if the fields node is present but empty. - if( mesh[ "fields" ].number_of_children() == 0 ) - { - mesh.remove( "fields" ); - } + dataRepository::Group averagedElementData( "averagedElementData", this ); + addElementData( meshLevel.getElemManager(), coordset, topologies, mesh[ "fields" ], averagedElementData ); + + /// The Blueprint will complain if the fields node is present but empty. + if( mesh[ "fields" ].number_of_children() == 0 ) + { + mesh.remove( "fields" ); + } - /// Verify that the mesh conforms to the Blueprint. - conduit::Node info; - GEOS_ASSERT_MSG( conduit::blueprint::verify( "mesh", meshRoot, info ), info.to_json() ); + /// Verify that the mesh conforms to the Blueprint. + conduit::Node info; + GEOS_ASSERT_MSG( conduit::blueprint::verify( "mesh", meshRoot, info ), info.to_json() ); - /// Generate the Blueprint index. - conduit::Node fileRoot; - conduit::Node & index = fileRoot[ "blueprint_index/mesh" ]; - conduit::blueprint::mesh::generate_index( mesh, "mesh", MpiWrapper::commSize(), index ); + /// Generate the Blueprint index. + conduit::Node fileRoot; + conduit::Node & index = fileRoot[ "blueprint_index/mesh" ]; + conduit::blueprint::mesh::generate_index( mesh, "mesh", MpiWrapper::commSize(), index ); - /// Verify that the index conforms to the Blueprint. - info.reset(); - GEOS_ASSERT_MSG( conduit::blueprint::mesh::index::verify( index, info ), info.to_json() ); + /// Verify that the index conforms to the Blueprint. + info.reset(); + GEOS_ASSERT_MSG( conduit::blueprint::mesh::index::verify( index, info ), info.to_json() ); - /// Write out the root index file, then write out the mesh. - string const completePath = GEOS_FMT( "{}/blueprintFiles/cycle_{:07}", OutputBase::getOutputDirectory(), cycle ); - string const filePathForRank = dataRepository::writeRootFile( fileRoot, completePath ); - conduit::relay::io::save( meshRoot, filePathForRank, "hdf5" ); + /// Write out the root index file, then write out the mesh. + string const completePath = GEOS_FMT( "{}/blueprintFiles/cycle_{:07}", OutputBase::getOutputDirectory(), cycleNumber ); + string const filePathForRank = dataRepository::writeRootFile( fileRoot, completePath ); + conduit::relay::io::save( meshRoot, filePathForRank, "hdf5" ); + } return false; } @@ -307,7 +311,19 @@ void BlueprintOutput::writeOutConstitutiveData( dataRepository::Group const & co } ); } +namespace logInfo +{ +struct BlueprintOutputTimer : public OutputTimerBase +{ + std::string_view getDescription() const override { return "Blueprint output timing"; } +}; +} +logInfo::OutputTimerBase const & BlueprintOutput::getTimerCategory() const +{ + static logInfo::BlueprintOutputTimer timer; + return timer; +} REGISTER_CATALOG_ENTRY( OutputBase, BlueprintOutput, string const &, dataRepository::Group * const ) diff --git a/src/coreComponents/fileIO/Outputs/BlueprintOutput.hpp b/src/coreComponents/fileIO/Outputs/BlueprintOutput.hpp index 7d17570d47d..7ba575f967d 100644 --- a/src/coreComponents/fileIO/Outputs/BlueprintOutput.hpp +++ b/src/coreComponents/fileIO/Outputs/BlueprintOutput.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -36,6 +36,12 @@ class ElementRegionManager; */ class BlueprintOutput : public OutputBase { +protected: + /** + * @copydoc OutputBase::getTimerCategory + */ + logInfo::OutputTimerBase const & getTimerCategory() const override; + public: /** diff --git a/src/coreComponents/fileIO/Outputs/ChomboIO.cpp b/src/coreComponents/fileIO/Outputs/ChomboIO.cpp index 674f1e4eace..ea2a16da38e 100644 --- a/src/coreComponents/fileIO/Outputs/ChomboIO.cpp +++ b/src/coreComponents/fileIO/Outputs/ChomboIO.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -30,6 +30,20 @@ namespace geos using namespace dataRepository; +namespace logInfo +{ +struct ChomboOutputTimer : public OutputTimerBase +{ + std::string_view getDescription() const override { return "Chombo output timing"; } +}; +} + +logInfo::OutputTimerBase const & ChomboIO::getTimerCategory() const +{ + static logInfo::ChomboOutputTimer timer; + return timer; +} + ChomboIO::ChomboIO( string const & name, Group * const parent ): OutputBase( name, parent ), m_coupler( nullptr ), diff --git a/src/coreComponents/fileIO/Outputs/ChomboIO.hpp b/src/coreComponents/fileIO/Outputs/ChomboIO.hpp index c483f066968..ea6defc059a 100644 --- a/src/coreComponents/fileIO/Outputs/ChomboIO.hpp +++ b/src/coreComponents/fileIO/Outputs/ChomboIO.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -89,6 +89,12 @@ class ChomboIO final : public OutputBase } viewKeys; /// @endcond +protected: + /** + * @copydoc OutputBase::getTimerCategory + */ + logInfo::OutputTimerBase const & getTimerCategory() const override; + private: ChomboCoupler * m_coupler; string m_outputPath; diff --git a/src/coreComponents/fileIO/Outputs/OutputBase.cpp b/src/coreComponents/fileIO/Outputs/OutputBase.cpp index 0733dd38cc5..64b93e51635 100644 --- a/src/coreComponents/fileIO/Outputs/OutputBase.cpp +++ b/src/coreComponents/fileIO/Outputs/OutputBase.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -29,6 +29,7 @@ using namespace dataRepository; OutputBase::OutputBase( string const & name, Group * const parent ): ExecutableGroup( name, parent ), + m_outputTimer(), m_childDirectory(), m_parallelThreads( 1 ) { @@ -43,6 +44,8 @@ OutputBase::OutputBase( string const & name, setInputFlag( InputFlags::OPTIONAL ). setDescription( "Number of plot files." ); + // Add the Timers log level + addLogLevel< logInfo::OutputTimers >(); } OutputBase::~OutputBase() @@ -106,5 +109,23 @@ void OutputBase::setupDirectoryStructure() } } +void OutputBase::cleanup( real64 const GEOS_UNUSED_PARAM( time_n ), + integer const GEOS_UNUSED_PARAM( cycleNumber ), + integer const GEOS_UNUSED_PARAM( eventCounter ), + real64 const GEOS_UNUSED_PARAM( eventProgress ), + DomainPartition & GEOS_UNUSED_PARAM( domain ) ) +{ + // Report timing statistics + real64 const time = std::chrono::duration< double >( m_outputTimer ).count(); + real64 const minTime = MpiWrapper::min( time ); + real64 const maxTime = MpiWrapper::max( time ); + if( maxTime > 0 ) + { + GEOS_LOG_LEVEL_INFO_RANK_0( logInfo::OutputTimers, + GEOS_FMT( "{}: file writing time = {} s (min), {} s (max)", + getName(), minTime, maxTime ) ); + } +} + } /* namespace geos */ diff --git a/src/coreComponents/fileIO/Outputs/OutputBase.hpp b/src/coreComponents/fileIO/Outputs/OutputBase.hpp index f4129433f7d..01dad62582f 100644 --- a/src/coreComponents/fileIO/Outputs/OutputBase.hpp +++ b/src/coreComponents/fileIO/Outputs/OutputBase.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -21,11 +21,50 @@ #include "dataRepository/Group.hpp" #include "dataRepository/ExecutableGroup.hpp" - +#include "dataRepository/LogLevelsInfo.hpp" // For logInfo namespace +#include "common/Timer.hpp" namespace geos { +namespace logInfo +{ +/** + * @brief Base timer category for output operations + * @details Provides configuration for logging output operation timing information + */ +struct OutputTimers +{ + /** + * @brief Get the description of this timer + * @return String view containing the timer description + */ + static std::string_view getDescription() { return "Output timing information"; } + + /** + * @brief Get the minimum log level for this timer + * @return Integer representing the minimum log level + */ + static constexpr int getMinLogLevel() { return 1; } +}; + +/** + * @brief Base interface for specific output type timers + * @details Each output type (VTK, Silo, etc.) implements this interface to provide + * its own timing category. This is used in conjunction with OutputTimers: + * - OutputTimerBase: For polymorphic behavior in derived output classes + * - OutputTimers: For the general output timing logging infrastructure + */ +struct OutputTimerBase +{ + /** + * @brief Get the description of this timer + * @return String view containing the timer description + */ + virtual std::string_view getDescription() const = 0; +}; +} + /** * @class OutputBase * @@ -102,6 +141,22 @@ class OutputBase : public ExecutableGroup **/ virtual void initializePreSubGroups() override; + /// Timer used to track duration of file writing operations for this specific output type + std::chrono::system_clock::duration m_outputTimer; + + /** + * @brief Get the timer category for this output type + * @return Reference to the output timer base for timing statistics + */ + virtual logInfo::OutputTimerBase const & getTimerCategory() const = 0; + + /// @copydoc geos::ExecutableGroup::cleanup + virtual void cleanup( real64 const time_n, + integer const cycleNumber, + integer const eventCounter, + real64 const eventProgress, + DomainPartition & domain ) override; + private: string m_childDirectory; integer m_parallelThreads; diff --git a/src/coreComponents/fileIO/Outputs/OutputManager.cpp b/src/coreComponents/fileIO/Outputs/OutputManager.cpp index 19034f1326b..7fcafb8aa98 100644 --- a/src/coreComponents/fileIO/Outputs/OutputManager.cpp +++ b/src/coreComponents/fileIO/Outputs/OutputManager.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -39,8 +39,9 @@ OutputManager::~OutputManager() Group * OutputManager::createChild( string const & childKey, string const & childName ) { - GEOS_LOG_RANK_0( "Adding Output: " << childKey << ", " << childName ); - std::unique_ptr< OutputBase > output = OutputBase::CatalogInterface::factory( childKey, childName, this ); + GEOS_LOG_RANK_0( GEOS_FMT( "{}: adding {} {}", getName(), childKey, childName ) ); + std::unique_ptr< OutputBase > output = + OutputBase::CatalogInterface::factory( childKey, getDataContext(), childName, this ); return &this->registerGroup< OutputBase >( childName, std::move( output ) ); } diff --git a/src/coreComponents/fileIO/Outputs/OutputManager.hpp b/src/coreComponents/fileIO/Outputs/OutputManager.hpp index 399b5fd21b0..38a68c06568 100644 --- a/src/coreComponents/fileIO/Outputs/OutputManager.hpp +++ b/src/coreComponents/fileIO/Outputs/OutputManager.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/fileIO/Outputs/OutputUtilities.cpp b/src/coreComponents/fileIO/Outputs/OutputUtilities.cpp index dceca432602..a3731f88c78 100644 --- a/src/coreComponents/fileIO/Outputs/OutputUtilities.cpp +++ b/src/coreComponents/fileIO/Outputs/OutputUtilities.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/fileIO/Outputs/OutputUtilities.hpp b/src/coreComponents/fileIO/Outputs/OutputUtilities.hpp index 1aa69d07527..1cfd7f0deba 100644 --- a/src/coreComponents/fileIO/Outputs/OutputUtilities.hpp +++ b/src/coreComponents/fileIO/Outputs/OutputUtilities.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/fileIO/Outputs/PythonOutput.cpp b/src/coreComponents/fileIO/Outputs/PythonOutput.cpp index e78f8835a06..3ef3adf4d46 100644 --- a/src/coreComponents/fileIO/Outputs/PythonOutput.cpp +++ b/src/coreComponents/fileIO/Outputs/PythonOutput.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -18,6 +18,20 @@ namespace geos { +namespace logInfo +{ +struct PythonOutputTimer : public OutputTimerBase +{ + std::string_view getDescription() const override { return "Python output timing"; } +}; +} + +logInfo::OutputTimerBase const & PythonOutput::getTimerCategory() const +{ + static logInfo::PythonOutputTimer timer; + return timer; +} + REGISTER_CATALOG_ENTRY( OutputBase, PythonOutput, string const &, dataRepository::Group * const ) } // namespace geos diff --git a/src/coreComponents/fileIO/Outputs/PythonOutput.hpp b/src/coreComponents/fileIO/Outputs/PythonOutput.hpp index 0e6c3cebb85..eabcea33fbe 100644 --- a/src/coreComponents/fileIO/Outputs/PythonOutput.hpp +++ b/src/coreComponents/fileIO/Outputs/PythonOutput.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -75,6 +75,9 @@ class PythonOutput : public OutputBase GEOS_UNUSED_VAR( domain ); return true; } + +protected: + logInfo::OutputTimerBase const & getTimerCategory() const override; }; diff --git a/src/coreComponents/fileIO/Outputs/RestartOutput.cpp b/src/coreComponents/fileIO/Outputs/RestartOutput.cpp index 6fb7a2c6b19..b8f8e5b9f0c 100644 --- a/src/coreComponents/fileIO/Outputs/RestartOutput.cpp +++ b/src/coreComponents/fileIO/Outputs/RestartOutput.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -24,6 +24,14 @@ namespace geos using namespace dataRepository; +namespace logInfo +{ +struct RestartOutputTimer : public OutputTimerBase +{ + std::string_view getDescription() const override { return "Restart output timing"; } +}; +} + RestartOutput::RestartOutput( string const & name, Group * const parent ): OutputBase( name, parent ) @@ -41,19 +49,24 @@ bool RestartOutput::execute( real64 const GEOS_UNUSED_PARAM( time_n ), { GEOS_MARK_FUNCTION; - Group & rootGroup = this->getGroupByPath( "/Problem" ); + { + Timer timer( m_outputTimer ); - // Ignoring the eventProgress indicator for now to be compliant with the integrated test repo - // integer const eventProgressPercent = static_cast(eventProgress * 100.0); - string const fileName = GEOS_FMT( "{}_restart_{:09}", getFileNameRoot(), cycleNumber ); - - rootGroup.prepareToWrite(); - writeTree( joinPath( OutputBase::getOutputDirectory(), fileName ), *(rootGroup.getConduitNode().parent()) ); - rootGroup.finishWriting(); + Group & rootGroup = this->getGroupByPath( "/Problem" ); + string const fileName = GEOS_FMT( "{}_restart_{:09}", getFileNameRoot(), cycleNumber ); + rootGroup.prepareToWrite(); + writeTree( joinPath( OutputBase::getOutputDirectory(), fileName ), *(rootGroup.getConduitNode().parent()) ); + rootGroup.finishWriting(); + } return false; } +logInfo::OutputTimerBase const & RestartOutput::getTimerCategory() const +{ + static logInfo::RestartOutputTimer timer; + return timer; +} REGISTER_CATALOG_ENTRY( OutputBase, RestartOutput, string const &, Group * const ) } /* namespace geos */ diff --git a/src/coreComponents/fileIO/Outputs/RestartOutput.hpp b/src/coreComponents/fileIO/Outputs/RestartOutput.hpp index a2a12be781c..09e336a50fe 100644 --- a/src/coreComponents/fileIO/Outputs/RestartOutput.hpp +++ b/src/coreComponents/fileIO/Outputs/RestartOutput.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -78,6 +78,12 @@ class RestartOutput : public OutputBase dataRepository::ViewKey writeFEMFaces = { "writeFEMFaces" }; } viewKeys; /// @endcond + +protected: + /** + * @copydoc OutputBase::getTimerCategory + */ + logInfo::OutputTimerBase const & getTimerCategory() const override; }; diff --git a/src/coreComponents/fileIO/Outputs/SiloOutput.cpp b/src/coreComponents/fileIO/Outputs/SiloOutput.cpp index 756facc2da1..6d372b59e04 100644 --- a/src/coreComponents/fileIO/Outputs/SiloOutput.cpp +++ b/src/coreComponents/fileIO/Outputs/SiloOutput.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -28,6 +28,20 @@ namespace geos using namespace dataRepository; +namespace logInfo +{ +struct SiloOutputTimer : public OutputTimerBase +{ + std::string_view getDescription() const override { return "Silo output timing"; } +}; +} + +logInfo::OutputTimerBase const & SiloOutput::getTimerCategory() const +{ + static logInfo::SiloOutputTimer timer; + return timer; +} + SiloOutput::SiloOutput( string const & name, Group * const parent ): OutputBase( name, parent ), @@ -122,31 +136,35 @@ bool SiloOutput::execute( real64 const time_n, { GEOS_MARK_FUNCTION; - SiloFile silo; - - int const size = MpiWrapper::commSize( MPI_COMM_GEOS ); - int const rank = MpiWrapper::commRank( MPI_COMM_GEOS ); - MpiWrapper::barrier( MPI_COMM_GEOS ); - - integer const numFiles = parallelThreads() == 0 ? size : parallelThreads(); - - // TODO set this during initialization - // silo.setOutputDirectory( getGlobalState().getCommandLineOptions().outputDirectory ), - silo.setOutputDirectory( getOutputDirectory() ), - silo.setPlotLevel( m_plotLevel ); - silo.setWriteEdgeMesh( m_writeEdgeMesh ); - silo.setWriteFaceMesh( m_writeFaceMesh ); - silo.setWriteCellElementMesh( m_writeCellElementMesh ); - silo.setWriteFaceElementMesh( m_writeFaceElementMesh ); - silo.setOnlyPlotSpecifiedFieldNamesFlag( m_onlyPlotSpecifiedFieldNames ); - silo.setFieldNames( m_fieldNames.toViewConst() ); - silo.setPlotFileRoot( m_plotFileRoot ); - silo.initialize( numFiles ); - silo.waitForBatonWrite( rank, cycleNumber, eventCounter, false ); - silo.writeDomainPartition( domain, cycleNumber, time_n + dt * eventProgress, 0 ); - silo.handOffBaton(); - silo.clearEmptiesFromMultiObjects( cycleNumber ); - silo.finish(); + { + Timer timer( m_outputTimer ); + + SiloFile silo; + + int const size = MpiWrapper::commSize( MPI_COMM_GEOS ); + int const rank = MpiWrapper::commRank( MPI_COMM_GEOS ); + MpiWrapper::barrier( MPI_COMM_GEOS ); + + integer const numFiles = parallelThreads() == 0 ? size : parallelThreads(); + + // TODO set this during initialization + // silo.setOutputDirectory( getGlobalState().getCommandLineOptions().outputDirectory ), + silo.setOutputDirectory( getOutputDirectory() ), + silo.setPlotLevel( m_plotLevel ); + silo.setWriteEdgeMesh( m_writeEdgeMesh ); + silo.setWriteFaceMesh( m_writeFaceMesh ); + silo.setWriteCellElementMesh( m_writeCellElementMesh ); + silo.setWriteFaceElementMesh( m_writeFaceElementMesh ); + silo.setOnlyPlotSpecifiedFieldNamesFlag( m_onlyPlotSpecifiedFieldNames ); + silo.setFieldNames( m_fieldNames.toViewConst() ); + silo.setPlotFileRoot( m_plotFileRoot ); + silo.initialize( numFiles ); + silo.waitForBatonWrite( rank, cycleNumber, eventCounter, false ); + silo.writeDomainPartition( domain, cycleNumber, time_n + dt * eventProgress, 0 ); + silo.handOffBaton(); + silo.clearEmptiesFromMultiObjects( cycleNumber ); + silo.finish(); + } return false; } diff --git a/src/coreComponents/fileIO/Outputs/SiloOutput.hpp b/src/coreComponents/fileIO/Outputs/SiloOutput.hpp index bb3574f3745..0780ef7bb22 100644 --- a/src/coreComponents/fileIO/Outputs/SiloOutput.hpp +++ b/src/coreComponents/fileIO/Outputs/SiloOutput.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -85,6 +85,12 @@ class SiloOutput : public OutputBase } siloOutputViewKeys; /// @endcond +protected: + /** + * @copydoc OutputBase::getTimerCategory + */ + logInfo::OutputTimerBase const & getTimerCategory() const override; + private: void postInputInitialization() override; diff --git a/src/coreComponents/fileIO/Outputs/TimeHistoryOutput.cpp b/src/coreComponents/fileIO/Outputs/TimeHistoryOutput.cpp index d01edac3dcf..7f03e7cc2fd 100644 --- a/src/coreComponents/fileIO/Outputs/TimeHistoryOutput.cpp +++ b/src/coreComponents/fileIO/Outputs/TimeHistoryOutput.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -25,6 +25,20 @@ namespace geos { using namespace dataRepository; +namespace logInfo +{ +struct TimeHistoryOutputTimer : public OutputTimerBase +{ + std::string_view getDescription() const override { return "Time history output timing"; } +}; +} + +logInfo::OutputTimerBase const & TimeHistoryOutput::getTimerCategory() const +{ + static logInfo::TimeHistoryOutputTimer timer; + return timer; +} + TimeHistoryOutput::TimeHistoryOutput( string const & name, Group * const parent ): OutputBase( name, parent ), @@ -166,12 +180,18 @@ bool TimeHistoryOutput::execute( real64 const GEOS_UNUSED_PARAM( time_n ), DomainPartition & GEOS_UNUSED_PARAM( domain ) ) { GEOS_MARK_FUNCTION; - localIndex newBuffered = m_io.front()->getBufferedCount( ); - for( auto & th_io : m_io ) + { - th_io->write( ); + Timer timer( m_outputTimer ); + + localIndex newBuffered = m_io.front()->getBufferedCount( ); + for( auto & th_io : m_io ) + { + th_io->write( ); + } + m_recordCount += newBuffered; } - m_recordCount += newBuffered; + return false; } diff --git a/src/coreComponents/fileIO/Outputs/TimeHistoryOutput.hpp b/src/coreComponents/fileIO/Outputs/TimeHistoryOutput.hpp index d7793943d9c..59f129ea8df 100644 --- a/src/coreComponents/fileIO/Outputs/TimeHistoryOutput.hpp +++ b/src/coreComponents/fileIO/Outputs/TimeHistoryOutput.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -114,6 +114,12 @@ class TimeHistoryOutput : public OutputBase virtual PyTypeObject * getPythonType() const override; #endif +protected: + /** + * @copydoc OutputBase::getTimerCategory + */ + logInfo::OutputTimerBase const & getTimerCategory() const override; + private: /** diff --git a/src/coreComponents/fileIO/Outputs/VTKOutput.cpp b/src/coreComponents/fileIO/Outputs/VTKOutput.cpp index da364d0e4db..01168c319fe 100644 --- a/src/coreComponents/fileIO/Outputs/VTKOutput.cpp +++ b/src/coreComponents/fileIO/Outputs/VTKOutput.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -18,7 +18,7 @@ */ #include "VTKOutput.hpp" - +#include "common/MpiWrapper.hpp" #if defined(GEOS_USE_PYGEOSX) #include "fileIO/python/PyVTKOutputType.hpp" @@ -29,6 +29,20 @@ namespace geos using namespace dataRepository; +namespace logInfo +{ +struct VTKOutputTimer : public OutputTimerBase +{ + std::string_view getDescription() const override { return "VTK output timing"; } +}; +} + +logInfo::OutputTimerBase const & VTKOutput::getTimerCategory() const +{ + static logInfo::VTKOutputTimer timer; + return timer; +} + VTKOutput::VTKOutput( string const & name, Group * const parent ): OutputBase( name, parent ), @@ -56,6 +70,11 @@ VTKOutput::VTKOutput( string const & name, setInputFlag( InputFlags::OPTIONAL ). setDescription( "Level detail plot. Only fields with lower of equal plot level will be output." ); + registerWrapper( viewKeysStruct::numberOfTargetProcesses, &m_numberOfTargetProcesses ). + setApplyDefaultValue( MpiWrapper::commSize() ). + setInputFlag( InputFlags::OPTIONAL ). + setDescription( "Number of output aggregate files to be written." ); + registerWrapper( viewKeysStruct::writeGhostCells, &m_writeGhostCells ). setApplyDefaultValue( 0 ). setInputFlag( InputFlags::OPTIONAL ). @@ -75,7 +94,7 @@ VTKOutput::VTKOutput( string const & name, registerWrapper( viewKeysStruct::fieldNames, &m_fieldNames ). setRTTypeName( rtTypes::CustomTypes::groupNameRefArray ). setInputFlag( InputFlags::OPTIONAL ). - setDescription( "Names of the fields to output. If this attribute is specified, GEOSX outputs all the fields specified by the user, regardless of their `plotLevel`" ); + setDescription( "Names of the fields to output. If this attribute is specified, GEOS outputs all the fields specified by the user, regardless of their `plotLevel`" ); registerWrapper( viewKeysStruct::levelNames, &m_levelNames ). setInputFlag( InputFlags::OPTIONAL ). @@ -102,6 +121,14 @@ void VTKOutput::postInputInitialization() m_writer.setLevelNames( m_levelNames.toViewConst() ); m_writer.setOnlyPlotSpecifiedFieldNamesFlag( m_onlyPlotSpecifiedFieldNames ); + GEOS_ERROR_IF_LT_MSG( m_numberOfTargetProcesses, 1, + GEOS_FMT( "{}: processes count cannot be less than 1.", + getWrapperDataContext( viewKeysStruct::numberOfTargetProcesses ) ) ); + GEOS_ERROR_IF_GT_MSG( m_numberOfTargetProcesses, MpiWrapper::commSize(), + GEOS_FMT( "{}: processes count cannot exceed the launched ranks count.", + getWrapperDataContext( viewKeysStruct::numberOfTargetProcesses ) ) ); + m_writer.setNumberOfTargetProcesses( m_numberOfTargetProcesses ); + string const fieldNamesString = viewKeysStruct::fieldNames; string const onlyPlotSpecifiedFieldNamesString = viewKeysStruct::onlyPlotSpecifiedFieldNames; @@ -146,14 +173,20 @@ bool VTKOutput::execute( real64 const time_n, real64 const GEOS_UNUSED_PARAM ( eventProgress ), DomainPartition & domain ) { - GEOS_LOG_LEVEL_RANK_0( 1, GEOS_FMT( "{}: writing {} at time {} s (cycle number {})", getName(), m_fieldNames, time_n + dt, cycleNumber )); - - m_writer.setWriteGhostCells( m_writeGhostCells ); - m_writer.setWriteFaceElementsAs3D ( m_writeFaceElementsAs3D ); - m_writer.setOutputMode( m_writeBinaryData ); - m_writer.setOutputRegionType( m_outputRegionType ); - m_writer.setPlotLevel( m_plotLevel ); - m_writer.write( time_n, cycleNumber, domain ); + GEOS_MARK_FUNCTION; + + GEOS_LOG_LEVEL_RANK_0( 2, GEOS_FMT( "{}: writing {} at time {} s (cycle number {})", getName(), m_fieldNames, time_n + dt, cycleNumber )); + + { + Timer timer( m_outputTimer ); + + m_writer.setWriteGhostCells( m_writeGhostCells ); + m_writer.setWriteFaceElementsAs3D ( m_writeFaceElementsAs3D ); + m_writer.setOutputMode( m_writeBinaryData ); + m_writer.setOutputRegionType( m_outputRegionType ); + m_writer.setPlotLevel( m_plotLevel ); + m_writer.write( time_n, cycleNumber, domain ); + } return false; } diff --git a/src/coreComponents/fileIO/Outputs/VTKOutput.hpp b/src/coreComponents/fileIO/Outputs/VTKOutput.hpp index 871a6497569..d4112de73b3 100644 --- a/src/coreComponents/fileIO/Outputs/VTKOutput.hpp +++ b/src/coreComponents/fileIO/Outputs/VTKOutput.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -77,6 +77,9 @@ class VTKOutput : public OutputBase DomainPartition & domain ) override { execute( time_n, 0, cycleNumber, eventCounter, eventProgress, domain ); + + // Call parent class cleanup to get the timing statistics + OutputBase::cleanup( time_n, cycleNumber, eventCounter, eventProgress, domain ); } /** @@ -97,6 +100,7 @@ class VTKOutput : public OutputBase static constexpr auto onlyPlotSpecifiedFieldNames = "onlyPlotSpecifiedFieldNames"; static constexpr auto fieldNames = "fieldNames"; static constexpr auto levelNames = "levelNames"; + static constexpr auto numberOfTargetProcesses = "numberOfTargetProcesses"; } vtkOutputViewKeys; /// @endcond @@ -108,12 +112,21 @@ class VTKOutput : public OutputBase virtual PyTypeObject * getPythonType() const override; #endif +protected: + /** + * @copydoc OutputBase::getTimerCategory + */ + logInfo::OutputTimerBase const & getTimerCategory() const override; + private: string m_plotFileRoot; integer m_writeFaceMesh; integer m_plotLevel; + /// Aggregate output data to be written + integer m_numberOfTargetProcesses; + /// Should the vtk files contain the ghost cells or not. integer m_writeGhostCells; diff --git a/src/coreComponents/fileIO/coupling/ChomboCoupler.cpp b/src/coreComponents/fileIO/coupling/ChomboCoupler.cpp index 34761acb4a1..75ebd8f7015 100644 --- a/src/coreComponents/fileIO/coupling/ChomboCoupler.cpp +++ b/src/coreComponents/fileIO/coupling/ChomboCoupler.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/fileIO/coupling/ChomboCoupler.hpp b/src/coreComponents/fileIO/coupling/ChomboCoupler.hpp index 357ca59f8da..a2d839576da 100644 --- a/src/coreComponents/fileIO/coupling/ChomboCoupler.hpp +++ b/src/coreComponents/fileIO/coupling/ChomboCoupler.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/fileIO/python/PyHistoryCollection.cpp b/src/coreComponents/fileIO/python/PyHistoryCollection.cpp index 6c844ad87dd..5f65e62966a 100644 --- a/src/coreComponents/fileIO/python/PyHistoryCollection.cpp +++ b/src/coreComponents/fileIO/python/PyHistoryCollection.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/fileIO/python/PyHistoryCollectionType.hpp b/src/coreComponents/fileIO/python/PyHistoryCollectionType.hpp index 6d8f4c5abe7..5e7af98e496 100644 --- a/src/coreComponents/fileIO/python/PyHistoryCollectionType.hpp +++ b/src/coreComponents/fileIO/python/PyHistoryCollectionType.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/fileIO/python/PyHistoryOutput.cpp b/src/coreComponents/fileIO/python/PyHistoryOutput.cpp index 689aaf7517a..5da919b192a 100644 --- a/src/coreComponents/fileIO/python/PyHistoryOutput.cpp +++ b/src/coreComponents/fileIO/python/PyHistoryOutput.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/fileIO/python/PyHistoryOutputType.hpp b/src/coreComponents/fileIO/python/PyHistoryOutputType.hpp index 9b1ba1fd947..ac8f382d4dc 100644 --- a/src/coreComponents/fileIO/python/PyHistoryOutputType.hpp +++ b/src/coreComponents/fileIO/python/PyHistoryOutputType.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/fileIO/python/PyVTKOutput.cpp b/src/coreComponents/fileIO/python/PyVTKOutput.cpp index cfdc269be0d..496fe116348 100644 --- a/src/coreComponents/fileIO/python/PyVTKOutput.cpp +++ b/src/coreComponents/fileIO/python/PyVTKOutput.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/fileIO/python/PyVTKOutputType.hpp b/src/coreComponents/fileIO/python/PyVTKOutputType.hpp index 10ea1e1bcfb..4c58691e990 100644 --- a/src/coreComponents/fileIO/python/PyVTKOutputType.hpp +++ b/src/coreComponents/fileIO/python/PyVTKOutputType.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/fileIO/silo/SiloFile.cpp b/src/coreComponents/fileIO/silo/SiloFile.cpp index 861839fe578..7c5b6b1fa17 100644 --- a/src/coreComponents/fileIO/silo/SiloFile.cpp +++ b/src/coreComponents/fileIO/silo/SiloFile.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/fileIO/silo/SiloFile.hpp b/src/coreComponents/fileIO/silo/SiloFile.hpp index 5f7e0dd9460..e05904b6acd 100644 --- a/src/coreComponents/fileIO/silo/SiloFile.hpp +++ b/src/coreComponents/fileIO/silo/SiloFile.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/fileIO/timeHistory/BufferedHistoryIO.hpp b/src/coreComponents/fileIO/timeHistory/BufferedHistoryIO.hpp index 3207f296ae5..a54b81790b9 100644 --- a/src/coreComponents/fileIO/timeHistory/BufferedHistoryIO.hpp +++ b/src/coreComponents/fileIO/timeHistory/BufferedHistoryIO.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/fileIO/timeHistory/HDFFile.cpp b/src/coreComponents/fileIO/timeHistory/HDFFile.cpp index 1ed8e6be170..b88767d6ecc 100644 --- a/src/coreComponents/fileIO/timeHistory/HDFFile.cpp +++ b/src/coreComponents/fileIO/timeHistory/HDFFile.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/fileIO/timeHistory/HDFFile.hpp b/src/coreComponents/fileIO/timeHistory/HDFFile.hpp index 7e428c4ce7d..f2ab6358099 100644 --- a/src/coreComponents/fileIO/timeHistory/HDFFile.hpp +++ b/src/coreComponents/fileIO/timeHistory/HDFFile.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/fileIO/timeHistory/HDFHistoryIO.cpp b/src/coreComponents/fileIO/timeHistory/HDFHistoryIO.cpp index 813ea0ad335..fdfbf95c61d 100644 --- a/src/coreComponents/fileIO/timeHistory/HDFHistoryIO.cpp +++ b/src/coreComponents/fileIO/timeHistory/HDFHistoryIO.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -258,8 +258,9 @@ void HDFHistoryIO::init( bool existsOkay ) void HDFHistoryIO::write() { // check if the size has changed on any process in the primary comm - int anyChanged = false; - MpiWrapper::allReduce( &m_sizeChanged, &anyChanged, 1, MPI_LOR, m_comm ); + int const anyChanged = MpiWrapper::allReduce( m_sizeChanged, + MpiWrapper::Reduction::LogicalOr, + m_comm ); m_sizeChanged = anyChanged; // this will set the first dim large enough to hold all the rows we're about to write diff --git a/src/coreComponents/fileIO/timeHistory/HDFHistoryIO.hpp b/src/coreComponents/fileIO/timeHistory/HDFHistoryIO.hpp index 043d0658300..8de982b5d2b 100644 --- a/src/coreComponents/fileIO/timeHistory/HDFHistoryIO.hpp +++ b/src/coreComponents/fileIO/timeHistory/HDFHistoryIO.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/fileIO/timeHistory/HistoryCollection.hpp b/src/coreComponents/fileIO/timeHistory/HistoryCollection.hpp index 2965e631b14..de2a68f3ac7 100644 --- a/src/coreComponents/fileIO/timeHistory/HistoryCollection.hpp +++ b/src/coreComponents/fileIO/timeHistory/HistoryCollection.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/fileIO/timeHistory/HistoryCollectionBase.cpp b/src/coreComponents/fileIO/timeHistory/HistoryCollectionBase.cpp index b08471a6940..3fc95d6c825 100644 --- a/src/coreComponents/fileIO/timeHistory/HistoryCollectionBase.cpp +++ b/src/coreComponents/fileIO/timeHistory/HistoryCollectionBase.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/fileIO/timeHistory/HistoryCollectionBase.hpp b/src/coreComponents/fileIO/timeHistory/HistoryCollectionBase.hpp index cc367e8fa5f..ef30cf21b55 100644 --- a/src/coreComponents/fileIO/timeHistory/HistoryCollectionBase.hpp +++ b/src/coreComponents/fileIO/timeHistory/HistoryCollectionBase.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/fileIO/timeHistory/PackCollection.cpp b/src/coreComponents/fileIO/timeHistory/PackCollection.cpp index ee2822d3f66..746d26ce24b 100644 --- a/src/coreComponents/fileIO/timeHistory/PackCollection.cpp +++ b/src/coreComponents/fileIO/timeHistory/PackCollection.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/fileIO/timeHistory/PackCollection.hpp b/src/coreComponents/fileIO/timeHistory/PackCollection.hpp index a39b2d2fac9..468bc5ecb62 100644 --- a/src/coreComponents/fileIO/timeHistory/PackCollection.hpp +++ b/src/coreComponents/fileIO/timeHistory/PackCollection.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/fileIO/vtk/VTKPVDWriter.cpp b/src/coreComponents/fileIO/vtk/VTKPVDWriter.cpp index 1efb816a350..f928e64097c 100644 --- a/src/coreComponents/fileIO/vtk/VTKPVDWriter.cpp +++ b/src/coreComponents/fileIO/vtk/VTKPVDWriter.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/fileIO/vtk/VTKPVDWriter.hpp b/src/coreComponents/fileIO/vtk/VTKPVDWriter.hpp index e0a43121be8..756a6fa03df 100644 --- a/src/coreComponents/fileIO/vtk/VTKPVDWriter.hpp +++ b/src/coreComponents/fileIO/vtk/VTKPVDWriter.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/fileIO/vtk/VTKPolyDataWriterInterface.cpp b/src/coreComponents/fileIO/vtk/VTKPolyDataWriterInterface.cpp index be65508921b..fbd36b2b166 100644 --- a/src/coreComponents/fileIO/vtk/VTKPolyDataWriterInterface.cpp +++ b/src/coreComponents/fileIO/vtk/VTKPolyDataWriterInterface.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -33,11 +33,14 @@ #include #include #include - +#include // System includes #include #include +#include "mesh/generators/VTKUtilities.hpp" + + namespace geos { @@ -1041,7 +1044,7 @@ void VTKPolyDataWriterInterface::writeElementFields( ElementRegionBase const & r void VTKPolyDataWriterInterface::writeCellElementRegions( real64 const time, ElementRegionManager const & elemManager, NodeManager const & nodeManager, - string const & path ) const + string const & path ) { elemManager.forElementRegions< CellElementRegion >( [&]( CellElementRegion const & region ) { @@ -1055,15 +1058,13 @@ void VTKPolyDataWriterInterface::writeCellElementRegions( real64 const time, writeTimestamp( ug.GetPointer(), time ); writeElementFields( region, ug->GetCellData() ); writeNodeFields( nodeManager, VTKCells.nodes, ug->GetPointData() ); - - string const regionDir = joinPath( path, region.getName() ); - writeUnstructuredGrid( regionDir, ug.GetPointer() ); + writeUnstructuredGrid( path, region, ug.GetPointer() ); } ); } void VTKPolyDataWriterInterface::writeParticleRegions( real64 const time, ParticleManager const & particleManager, - string const & path ) const + string const & path ) { particleManager.forParticleRegions< ParticleRegion >( [&]( ParticleRegion const & region ) { @@ -1077,15 +1078,14 @@ void VTKPolyDataWriterInterface::writeParticleRegions( real64 const time, writeTimestamp( ug.GetPointer(), time ); writeParticleFields( region, ug->GetCellData() ); - string const regionDir = joinPath( path, region.getName() ); - writeUnstructuredGrid( regionDir, ug.GetPointer() ); + writeUnstructuredGrid( path, region, ug.GetPointer() ); } ); } void VTKPolyDataWriterInterface::writeWellElementRegions( real64 const time, ElementRegionManager const & elemManager, NodeManager const & nodeManager, - string const & path ) const + string const & path ) { elemManager.forElementRegions< WellElementRegion >( [&]( WellElementRegion const & region ) { @@ -1098,9 +1098,7 @@ void VTKPolyDataWriterInterface::writeWellElementRegions( real64 const time, writeTimestamp( ug.GetPointer(), time ); writeElementFields( region, ug->GetCellData() ); - - string const regionDir = joinPath( path, region.getName() ); - writeUnstructuredGrid( regionDir, ug.GetPointer() ); + writeUnstructuredGrid( path, region, ug.GetPointer() ); } ); } @@ -1109,7 +1107,7 @@ void VTKPolyDataWriterInterface::writeSurfaceElementRegions( real64 const time, NodeManager const & nodeManager, EmbeddedSurfaceNodeManager const & embSurfNodeManager, FaceManager const & faceManager, - string const & path ) const + string const & path ) { elemManager.forElementRegions< SurfaceElementRegion >( [&]( SurfaceElementRegion const & region ) { @@ -1140,9 +1138,7 @@ void VTKPolyDataWriterInterface::writeSurfaceElementRegions( real64 const time, writeTimestamp( ug.GetPointer(), time ); writeElementFields( region, ug->GetCellData() ); - - string const regionDir = joinPath( path, region.getName() ); - writeUnstructuredGrid( regionDir, ug.GetPointer() ); + writeUnstructuredGrid( path, region, ug.GetPointer() ); } ); } @@ -1188,13 +1184,11 @@ void VTKPolyDataWriterInterface::writeVtmFile( integer const cycle, string const meshPath = joinPath( getCycleSubFolder( cycle ), meshBodyName, meshLevelName ); - int const mpiSize = MpiWrapper::commSize(); - auto addElementRegion = [&]( ElementRegionBase const & region ) { std::vector< string > const blockPath{ meshBody.getName(), meshLevel.getName(), region.getCatalogName(), region.getName() }; string const regionPath = joinPath( meshPath, region.getName() ); - for( int i = 0; i < mpiSize; i++ ) + for( const auto & i : m_targetProcessesId.at( region.getName()) ) { string const dataSetName = getRankFileName( i ); string const dataSetFile = joinPath( regionPath, dataSetName + ".vtu" ); @@ -1207,7 +1201,7 @@ void VTKPolyDataWriterInterface::writeVtmFile( integer const cycle, string const & regionName = region.getName(); std::vector< string > const blockPath{ meshBodyName, meshLevelName, region.getCatalogName(), regionName }; string const regionPath = joinPath( meshPath, regionName ); - for( int i = 0; i < mpiSize; i++ ) + for( const auto & i : m_targetProcessesId.at( region.getName()) ) { string const dataSetName = getRankFileName( i ); string const dataSetFile = joinPath( regionPath, dataSetName + ".vtu" ); @@ -1256,8 +1250,11 @@ int toVtkOutputMode( VTKOutputMode const mode ) } void VTKPolyDataWriterInterface::writeUnstructuredGrid( string const & path, - vtkUnstructuredGrid * ug ) const + ObjectManagerBase const & region, + vtkUnstructuredGrid * ug ) { + string const regionDir = joinPath( path, region.getName() ); + vtkSmartPointer< vtkAlgorithm > filter; // If we want to get rid of the ghost ranks, we use the appropriate `vtkThreshold` filter. @@ -1279,15 +1276,51 @@ void VTKPolyDataWriterInterface::writeUnstructuredGrid( string const & path, } filter->SetInputDataObject( ug ); - filter->Update(); - - makeDirectory( path ); - string const vtuFilePath = joinPath( path, getRankFileName( MpiWrapper::commRank() ) + ".vtu" ); - auto const vtuWriter = vtkSmartPointer< vtkXMLUnstructuredGridWriter >::New(); - vtuWriter->SetInputData( filter->GetOutputDataObject( 0 ) ); - vtuWriter->SetFileName( vtuFilePath.c_str() ); - vtuWriter->SetDataMode( toVtkOutputMode( m_outputMode ) ); - vtuWriter->Write(); + + vtkSmartPointer< vtkMultiProcessController > controller = vtk::getController(); + vtkMultiProcessController::SetGlobalController( controller ); + + // In case of m_numberOfTargetProcesses == GetNumberOfProcesses the filter returns a shallow copy + // The behavior is the same as previously in this case. The rank number is computed instead of implicitly written + vtkNew< vtkAggregateDataSetFilter > aggregate; + aggregate->SetInputConnection( filter->GetOutputPort()); + aggregate->SetNumberOfTargetProcesses( m_numberOfTargetProcesses ); + aggregate->SetMergePoints( false ); + aggregate->Update(); + + int localCommRank = -1; + if( vtkDataSet::SafeDownCast( aggregate->GetOutput())->GetNumberOfPoints() != 0 ) + { + localCommRank = MpiWrapper::commRank(); + makeDirectory( regionDir ); + string const vtuFilePath = joinPath( regionDir, getRankFileName( localCommRank ) + ".vtu" ); + auto const vtuWriter = vtkSmartPointer< vtkXMLUnstructuredGridWriter >::New(); + vtuWriter->SetInputData( aggregate->GetOutput() ); + vtuWriter->SetFileName( vtuFilePath.c_str() ); + vtuWriter->SetDataMode( toVtkOutputMode( m_outputMode ) ); + vtuWriter->Write(); + } + + const int size = MpiWrapper::commSize( MPI_COMM_GEOS ); + std::vector< int > globalValues( size ); + + // Everything is done on rank 0 + MpiWrapper::gather( &localCommRank, + 1, + globalValues.data(), + 1, + 0, + MPI_COMM_GEOS ); + + if( MpiWrapper::commRank() == 0 ) + { + // any rank that does not hold data will not participate in the output + globalValues.erase( std::remove_if( globalValues.begin(), + globalValues.end(), + []( int x ) { return x == -1; } ), + globalValues.end()); + m_targetProcessesId[region.getName()] = globalValues; + } } void VTKPolyDataWriterInterface::write( real64 const time, diff --git a/src/coreComponents/fileIO/vtk/VTKPolyDataWriterInterface.hpp b/src/coreComponents/fileIO/vtk/VTKPolyDataWriterInterface.hpp index 77c6b90e8aa..c44ca64347d 100644 --- a/src/coreComponents/fileIO/vtk/VTKPolyDataWriterInterface.hpp +++ b/src/coreComponents/fileIO/vtk/VTKPolyDataWriterInterface.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -17,6 +17,7 @@ #define GEOS_FILEIO_VTK_VTKPOLYDATAWRITERINTERFACE_HPP_ #include "common/DataTypes.hpp" +#include "mesh/ObjectManagerBase.hpp" #include "dataRepository/WrapperBase.hpp" #include "dataRepository/Wrapper.hpp" #include "fileIO/vtk/VTKPVDWriter.hpp" @@ -167,6 +168,14 @@ class VTKPolyDataWriterInterface { m_levelNames.insert( levelNames.begin(), levelNames.end() ); } + /** + * @brief Set the Number Of Target Processes + * @param[in] numberOfTargetProcesses the number of processes + */ + void setNumberOfTargetProcesses( integer const numberOfTargetProcesses ) + { + m_numberOfTargetProcesses = numberOfTargetProcesses; + } /** * @brief Main method of this class. Write all the files for one time step. @@ -210,7 +219,7 @@ class VTKPolyDataWriterInterface void clearData(); -private: +protected: /** * @brief Check if plotting is enabled for this field @@ -223,33 +232,38 @@ class VTKPolyDataWriterInterface * @brief Writes the files for all the CellElementRegions. * @details There will be one file written per CellElementRegion and per rank. * @param[in] time the time-step - * @param[in] cycle the current cycle number * @param[in] elemManager the ElementRegionManager containing the CellElementRegions to be output * @param[in] nodeManager the NodeManager containing the nodes of the domain to be output - * @param[in] meshLevelName the name of the MeshLevel containing the nodes and elements to be output - * @param[in] meshBodyName the name of the MeshBody containing the nodes and elements to be output + * @param[in] path the path to the file to output */ void writeCellElementRegions( real64 time, ElementRegionManager const & elemManager, NodeManager const & nodeManager, - string const & path ) const; - - void writeParticleRegions( real64 const time, - ParticleManager const & particleManager, - string const & path ) const; + string const & path ); /** * @brief Writes the files containing the well representation * @details There will be one file written per WellElementRegion and per rank * @param[in] time the time-step - * @param[in] cycle the current cycle number * @param[in] elemManager the ElementRegionManager containing the WellElementRegions to be output * @param[in] nodeManager the NodeManager containing the nodes of the domain to be output + * @param[in] path The path to the file to output */ void writeWellElementRegions( real64 time, ElementRegionManager const & elemManager, NodeManager const & nodeManager, - string const & path ) const; + string const & path ); + + /** + * @brief Writes the files containing the particle representation + * @details There will be one file written per ParticleRegion and per rank + * @param[in] time the time-step + * @param[in] particleManager the ParticleManager containing the ParticleRegions to be output + * @param[in] path the root path where the mesh will be written + */ + void writeParticleRegions( real64 const time, + ParticleManager const & particleManager, + string const & path ); /** * @brief Writes the files containing the faces elements @@ -266,16 +280,15 @@ class VTKPolyDataWriterInterface NodeManager const & nodeManager, EmbeddedSurfaceNodeManager const & embSurfNodeManager, FaceManager const & faceManager, - string const & path ) const; + string const & path ); /** * @brief Writes a VTM file for the time-step \p time. * @details a VTM file is a VTK Multiblock file. It contains relative path to different files organized in blocks. * @param[in] cycle the current cycle number - * @param[in] elemManager the ElementRegionManager containing all the regions to be output and referred to in the VTM file + * @param[in] domain the DomainPartition containing all the regions to be output and referred to in the VTM file * @param[in] vtmWriter a writer specialized for the VTM file format */ - void writeVtmFile( integer const cycle, DomainPartition const & domain, VTKVTMWriter const & vtmWriter ) const; @@ -297,6 +310,11 @@ class VTKPolyDataWriterInterface void writeElementFields( ElementRegionBase const & subRegion, vtkCellData * cellData ) const; + /** + * @brief Writes all the fields associated to the elements of \p region if their plotlevel is <= m_plotLevel + * @param[in] region ParticleRegion being written + * @param[in] cellData a VTK object containing all the fields associated with the elements + */ void writeParticleFields( ParticleRegionBase const & region, vtkCellData * cellData ) const; @@ -305,13 +323,15 @@ class VTKPolyDataWriterInterface * @details The unstructured grid is the last element in the hierarchy of the output, * it contains the cells connectivities and the vertices coordinates as long as the * data fields associated with it - * @param[in] ug a VTK SmartPointer to the VTK unstructured grid. * @param[in] path directory path for the grid file + * @param[in] region ElementRegionBase beeing written + * @param[in] ug a VTK SmartPointer to the VTK unstructured grid. */ void writeUnstructuredGrid( string const & path, - vtkUnstructuredGrid * ug ) const; + ObjectManagerBase const & region, + vtkUnstructuredGrid * ug ); -private: +protected: /// Output directory name string m_outputDir; @@ -352,6 +372,12 @@ class VTKPolyDataWriterInterface /// Defines whether to plot a faceElement as a 3D volumetric element or not. bool m_writeFaceElementsAs3D; + + /// Number of target processes to aggregate the data to be written + integer m_numberOfTargetProcesses; + + /// Map a region name to the array of ranks outputed for it + std::map< string, std::vector< integer > > m_targetProcessesId; }; } // namespace vtk diff --git a/src/coreComponents/fileIO/vtk/VTKVTMWriter.cpp b/src/coreComponents/fileIO/vtk/VTKVTMWriter.cpp index 8e9b86eff92..2f4bfe41c1b 100644 --- a/src/coreComponents/fileIO/vtk/VTKVTMWriter.cpp +++ b/src/coreComponents/fileIO/vtk/VTKVTMWriter.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/fileIO/vtk/VTKVTMWriter.hpp b/src/coreComponents/fileIO/vtk/VTKVTMWriter.hpp index 23199ab7b9c..45a8d52dea7 100644 --- a/src/coreComponents/fileIO/vtk/VTKVTMWriter.hpp +++ b/src/coreComponents/fileIO/vtk/VTKVTMWriter.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/finiteElement/BilinearFormUtilities.hpp b/src/coreComponents/finiteElement/BilinearFormUtilities.hpp index 28128c26be4..a268c2db764 100644 --- a/src/coreComponents/finiteElement/BilinearFormUtilities.hpp +++ b/src/coreComponents/finiteElement/BilinearFormUtilities.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/finiteElement/CMakeLists.txt b/src/coreComponents/finiteElement/CMakeLists.txt index 5d7c38fa465..53ef7404158 100644 --- a/src/coreComponents/finiteElement/CMakeLists.txt +++ b/src/coreComponents/finiteElement/CMakeLists.txt @@ -1,7 +1,7 @@ # SPDX-License-Identifier: LGPL-2.1-only # # Copyright (c) 2016-2024 Lawrence Livermore National Security LLC -# Copyright (c) 2018-2024 Total, S.A +# Copyright (c) 2018-2024 TotalEnergies # Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University # Copyright (c) 2023-2024 Chevron # Copyright (c) 2019- GEOS/GEOSX Contributors @@ -32,8 +32,8 @@ set( finiteElement_headers elementFormulations/H1_Hexahedron_Lagrange1_GaussLegendre2.hpp elementFormulations/H1_Pyramid_Lagrange1_Gauss5.hpp elementFormulations/H1_QuadrilateralFace_Lagrange1_GaussLegendre2.hpp - elementFormulations/H1_Tetrahedron_Lagrange1_Gauss1.hpp - elementFormulations/H1_TriangleFace_Lagrange1_Gauss1.hpp + elementFormulations/H1_Tetrahedron_Lagrange1_Gauss.hpp + elementFormulations/H1_TriangleFace_Lagrange1_Gauss.hpp elementFormulations/H1_Wedge_Lagrange1_Gauss6.hpp elementFormulations/ConformingVirtualElementOrder1.hpp elementFormulations/ConformingVirtualElementOrder1_impl.hpp diff --git a/src/coreComponents/finiteElement/ElementLibrary_depricated/SpecializedFormulations/UniformStrainHexahedron.cpp b/src/coreComponents/finiteElement/ElementLibrary_depricated/SpecializedFormulations/UniformStrainHexahedron.cpp index 87611b8ce0c..31f6c6504e7 100644 --- a/src/coreComponents/finiteElement/ElementLibrary_depricated/SpecializedFormulations/UniformStrainHexahedron.cpp +++ b/src/coreComponents/finiteElement/ElementLibrary_depricated/SpecializedFormulations/UniformStrainHexahedron.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/finiteElement/ElementLibrary_depricated/SpecializedFormulations/UniformStrainHexahedron.h b/src/coreComponents/finiteElement/ElementLibrary_depricated/SpecializedFormulations/UniformStrainHexahedron.h index 5e31aea441c..ea634ecf95e 100644 --- a/src/coreComponents/finiteElement/ElementLibrary_depricated/SpecializedFormulations/UniformStrainHexahedron.h +++ b/src/coreComponents/finiteElement/ElementLibrary_depricated/SpecializedFormulations/UniformStrainHexahedron.h @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/finiteElement/FiniteElementDiscretization.cpp b/src/coreComponents/finiteElement/FiniteElementDiscretization.cpp index 92e13064399..e809e456021 100644 --- a/src/coreComponents/finiteElement/FiniteElementDiscretization.cpp +++ b/src/coreComponents/finiteElement/FiniteElementDiscretization.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -49,6 +49,11 @@ FiniteElementDiscretization::FiniteElementDiscretization( string const & name, G setInputFlag( InputFlags::OPTIONAL ). setApplyDefaultValue( 0 ). setDescription( "Specifier to indicate whether to force the use of VEM" ); + + registerWrapper( viewKeyStruct::useHighOrderQuadratureRuleString(), &m_useHighOrderQuadratureRule ). + setInputFlag( InputFlags::OPTIONAL ). + setApplyDefaultValue( 0 ). + setDescription( "Specifier to indicate whether to use a high order quadrature rule" ); } FiniteElementDiscretization::~FiniteElementDiscretization() @@ -68,7 +73,15 @@ FiniteElementDiscretization::factory( ElementType const parentElementShape ) con { switch( parentElementShape ) { - case ElementType::Triangle: return std::make_unique< H1_TriangleFace_Lagrange1_Gauss1 >(); + case ElementType::Triangle: + if( m_useHighOrderQuadratureRule == 1 ) + { + return std::make_unique< H1_TriangleFace_Lagrange1_Gauss4 >(); + } + else + { + return std::make_unique< H1_TriangleFace_Lagrange1_Gauss1 >(); + } case ElementType::Quadrilateral: return std::make_unique< H1_QuadrilateralFace_Lagrange1_GaussLegendre2 >(); // On polyhedra where FEM are available, we use VEM only if useVirtualElements is set to 1 in // the input file. @@ -80,7 +93,14 @@ FiniteElementDiscretization::factory( ElementType const parentElementShape ) con } else { - return std::make_unique< H1_Tetrahedron_Lagrange1_Gauss1 >(); + if( m_useHighOrderQuadratureRule == 1 ) + { + return std::make_unique< H1_Tetrahedron_Lagrange1_Gauss14 >(); + } + else + { + return std::make_unique< H1_Tetrahedron_Lagrange1_Gauss1 >(); + } } } case ElementType::Pyramid: diff --git a/src/coreComponents/finiteElement/FiniteElementDiscretization.hpp b/src/coreComponents/finiteElement/FiniteElementDiscretization.hpp index 55f3e7f7447..21d7e9f71d5 100644 --- a/src/coreComponents/finiteElement/FiniteElementDiscretization.hpp +++ b/src/coreComponents/finiteElement/FiniteElementDiscretization.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -97,6 +97,7 @@ class FiniteElementDiscretization : public dataRepository::Group static constexpr char const * orderString() { return "order"; } static constexpr char const * formulationString() { return "formulation"; } static constexpr char const * useVemString() { return "useVirtualElements"; } + static constexpr char const * useHighOrderQuadratureRuleString() { return "useHighOrderQuadratureRule"; } }; /// The order of the finite element basis @@ -108,6 +109,9 @@ class FiniteElementDiscretization : public dataRepository::Group /// Optional parameter indicating if the class should use Virtual Elements. int m_useVem; + /// Optional parameter indicating if the class should use a high order quadrature rule. + int m_useHighOrderQuadratureRule; + void postInputInitialization() override final; }; diff --git a/src/coreComponents/finiteElement/FiniteElementDiscretizationManager.cpp b/src/coreComponents/finiteElement/FiniteElementDiscretizationManager.cpp index fe7a1d668c8..9bc4e70c5ce 100644 --- a/src/coreComponents/finiteElement/FiniteElementDiscretizationManager.cpp +++ b/src/coreComponents/finiteElement/FiniteElementDiscretizationManager.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -40,7 +40,9 @@ FiniteElementDiscretizationManager::~FiniteElementDiscretizationManager() Group * FiniteElementDiscretizationManager::createChild( string const & childKey, string const & childName ) { // These objects should probably not be registered on managed group... - std::unique_ptr< Group > fem = Group::CatalogInterface::factory( childKey, childName, this ); + GEOS_LOG_RANK_0( GEOS_FMT( "{}: adding {} {}", getName(), childKey, childName ) ); + std::unique_ptr< Group > fem = + Group::CatalogInterface::factory( childKey, getDataContext(), childName, this ); return &this->registerGroup( childName, std::move( fem ) ); } diff --git a/src/coreComponents/finiteElement/FiniteElementDiscretizationManager.hpp b/src/coreComponents/finiteElement/FiniteElementDiscretizationManager.hpp index 0f4b49edf4c..e82a8b99244 100644 --- a/src/coreComponents/finiteElement/FiniteElementDiscretizationManager.hpp +++ b/src/coreComponents/finiteElement/FiniteElementDiscretizationManager.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/finiteElement/FiniteElementDispatch.hpp b/src/coreComponents/finiteElement/FiniteElementDispatch.hpp index 7190acbfd47..f7abaf86252 100644 --- a/src/coreComponents/finiteElement/FiniteElementDispatch.hpp +++ b/src/coreComponents/finiteElement/FiniteElementDispatch.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -24,19 +24,20 @@ #include "elementFormulations/ConformingVirtualElementOrder1.hpp" #include "elementFormulations/H1_Hexahedron_Lagrange1_GaussLegendre2.hpp" #include "elementFormulations/H1_Pyramid_Lagrange1_Gauss5.hpp" -#include "elementFormulations/H1_Tetrahedron_Lagrange1_Gauss1.hpp" +#include "elementFormulations/H1_Tetrahedron_Lagrange1_Gauss.hpp" #include "elementFormulations/H1_Wedge_Lagrange1_Gauss6.hpp" #if !defined( GEOS_USE_HIP ) #include "elementFormulations/Qk_Hexahedron_Lagrange_GaussLobatto.hpp" #endif #include "elementFormulations/H1_QuadrilateralFace_Lagrange1_GaussLegendre2.hpp" -#include "elementFormulations/H1_TriangleFace_Lagrange1_Gauss1.hpp" +#include "elementFormulations/H1_TriangleFace_Lagrange1_Gauss.hpp" #include "LvArray/src/system.hpp" #define FE_1_TYPES \ finiteElement::H1_Hexahedron_Lagrange1_GaussLegendre2, \ finiteElement::H1_Wedge_Lagrange1_Gauss6, \ finiteElement::H1_Tetrahedron_Lagrange1_Gauss1, \ + finiteElement::H1_Tetrahedron_Lagrange1_Gauss14, \ finiteElement::H1_Pyramid_Lagrange1_Gauss5 #define GL_FE_TYPES \ @@ -88,7 +89,8 @@ #define FE_TYPES_2D \ finiteElement::H1_QuadrilateralFace_Lagrange1_GaussLegendre2, \ - finiteElement::H1_TriangleFace_Lagrange1_Gauss1 + finiteElement::H1_TriangleFace_Lagrange1_Gauss1, \ + finiteElement::H1_TriangleFace_Lagrange1_Gauss4 #define BASE_FE_TYPES_2D FE_TYPES_2D diff --git a/src/coreComponents/finiteElement/Kinematics.h b/src/coreComponents/finiteElement/Kinematics.h index c4350cb9cd3..9cc8bed31cd 100644 --- a/src/coreComponents/finiteElement/Kinematics.h +++ b/src/coreComponents/finiteElement/Kinematics.h @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/finiteElement/LinearFormUtilities.hpp b/src/coreComponents/finiteElement/LinearFormUtilities.hpp index 90153e86578..678725c1ad6 100644 --- a/src/coreComponents/finiteElement/LinearFormUtilities.hpp +++ b/src/coreComponents/finiteElement/LinearFormUtilities.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/finiteElement/PDEUtilities.hpp b/src/coreComponents/finiteElement/PDEUtilities.hpp index e060d4d339d..a7f958ae17f 100644 --- a/src/coreComponents/finiteElement/PDEUtilities.hpp +++ b/src/coreComponents/finiteElement/PDEUtilities.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/finiteElement/elementFormulations/ConformingVirtualElementOrder1.hpp b/src/coreComponents/finiteElement/elementFormulations/ConformingVirtualElementOrder1.hpp index b796efa611b..3486004d766 100644 --- a/src/coreComponents/finiteElement/elementFormulations/ConformingVirtualElementOrder1.hpp +++ b/src/coreComponents/finiteElement/elementFormulations/ConformingVirtualElementOrder1.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/finiteElement/elementFormulations/ConformingVirtualElementOrder1_impl.hpp b/src/coreComponents/finiteElement/elementFormulations/ConformingVirtualElementOrder1_impl.hpp index 976858220d0..932603a3b9c 100644 --- a/src/coreComponents/finiteElement/elementFormulations/ConformingVirtualElementOrder1_impl.hpp +++ b/src/coreComponents/finiteElement/elementFormulations/ConformingVirtualElementOrder1_impl.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/finiteElement/elementFormulations/FiniteElementBase.hpp b/src/coreComponents/finiteElement/elementFormulations/FiniteElementBase.hpp index 4ea49bb651f..10f246bd49a 100644 --- a/src/coreComponents/finiteElement/elementFormulations/FiniteElementBase.hpp +++ b/src/coreComponents/finiteElement/elementFormulations/FiniteElementBase.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/finiteElement/elementFormulations/H1_Hexahedron_Lagrange1_GaussLegendre2.hpp b/src/coreComponents/finiteElement/elementFormulations/H1_Hexahedron_Lagrange1_GaussLegendre2.hpp index 58a685beda8..0b164a174c2 100644 --- a/src/coreComponents/finiteElement/elementFormulations/H1_Hexahedron_Lagrange1_GaussLegendre2.hpp +++ b/src/coreComponents/finiteElement/elementFormulations/H1_Hexahedron_Lagrange1_GaussLegendre2.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/finiteElement/elementFormulations/H1_Pyramid_Lagrange1_Gauss5.hpp b/src/coreComponents/finiteElement/elementFormulations/H1_Pyramid_Lagrange1_Gauss5.hpp index da69a72a195..3f89788e48b 100644 --- a/src/coreComponents/finiteElement/elementFormulations/H1_Pyramid_Lagrange1_Gauss5.hpp +++ b/src/coreComponents/finiteElement/elementFormulations/H1_Pyramid_Lagrange1_Gauss5.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/finiteElement/elementFormulations/H1_QuadrilateralFace_Lagrange1_GaussLegendre2.hpp b/src/coreComponents/finiteElement/elementFormulations/H1_QuadrilateralFace_Lagrange1_GaussLegendre2.hpp index 71a72025977..6aa3001b291 100644 --- a/src/coreComponents/finiteElement/elementFormulations/H1_QuadrilateralFace_Lagrange1_GaussLegendre2.hpp +++ b/src/coreComponents/finiteElement/elementFormulations/H1_QuadrilateralFace_Lagrange1_GaussLegendre2.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/finiteElement/elementFormulations/H1_Tetrahedron_Lagrange1_Gauss1.hpp b/src/coreComponents/finiteElement/elementFormulations/H1_Tetrahedron_Lagrange1_Gauss.hpp similarity index 57% rename from src/coreComponents/finiteElement/elementFormulations/H1_Tetrahedron_Lagrange1_Gauss1.hpp rename to src/coreComponents/finiteElement/elementFormulations/H1_Tetrahedron_Lagrange1_Gauss.hpp index 8ab7b85b244..2736955bff6 100644 --- a/src/coreComponents/finiteElement/elementFormulations/H1_Tetrahedron_Lagrange1_Gauss1.hpp +++ b/src/coreComponents/finiteElement/elementFormulations/H1_Tetrahedron_Lagrange1_Gauss.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -14,11 +14,11 @@ */ /** - * @file H1_Tetrahedron_Lagrange1_Gauss1.hpp + * @file H1_Tetrahedron_Lagrange1_Gauss.hpp */ -#ifndef GEOS_FINITEELEMENT_ELEMENTFORMULATIONS_H1TETRAHEDRONLAGRANGE1GAUSS1_HPP_ -#define GEOS_FINITEELEMENT_ELEMENTFORMULATIONS_H1TETRAHEDRONLAGRANGE1GAUSS1_HPP_ +#ifndef GEOS_FINITEELEMENT_ELEMENTFORMULATIONS_H1TETRAHEDRONLAGRANGE1GAUSS_HPP_ +#define GEOS_FINITEELEMENT_ELEMENTFORMULATIONS_H1TETRAHEDRONLAGRANGE1GAUSS_HPP_ #include "FiniteElementBase.hpp" #include "LagrangeBasis1.hpp" @@ -38,7 +38,7 @@ namespace finiteElement * + Node r s t * |\\_ ===== == == == * || \_ 0 0 0 0 - * | \ \_ t 1 1 0 1 + * | \ \_ t 1 1 0 0 * | +__ \_ | s 2 0 1 0 * | /2 \__ \_ | / 3 0 0 1 * |/ \__\ | / ===== == == == @@ -46,10 +46,17 @@ namespace finiteElement * 0 1 * */ -class H1_Tetrahedron_Lagrange1_Gauss1 final : public FiniteElementBase +template< typename NUM_Q_POINTS > +class H1_Tetrahedron_Lagrange1_Gauss final : public FiniteElementBase { public: + /// Check that the number of quadrature points is valid. + static_assert( ( NUM_Q_POINTS::value == 1 || + NUM_Q_POINTS::value == 5 || + NUM_Q_POINTS::value == 14 ), + "NUM_Q_POINTS::value must be 1, 5, or 14!" ); + /// The type of basis used for this element using BASIS = LagrangeBasis1; @@ -63,13 +70,13 @@ class H1_Tetrahedron_Lagrange1_Gauss1 final : public FiniteElementBase constexpr static localIndex maxSupportPoints = numNodes; /// The number of quadrature points per element. - constexpr static localIndex numQuadraturePoints = 1; + constexpr static localIndex numQuadraturePoints = NUM_Q_POINTS::value; /// The number of sampling points per element. constexpr static int numSamplingPoints = numSamplingPointsPerDirection * numSamplingPointsPerDirection * numSamplingPointsPerDirection; GEOS_HOST_DEVICE - virtual ~H1_Tetrahedron_Lagrange1_Gauss1() override + virtual ~H1_Tetrahedron_Lagrange1_Gauss() override {} GEOS_HOST_DEVICE @@ -222,10 +229,10 @@ class H1_Tetrahedron_Lagrange1_Gauss1 final : public FiniteElementBase static void calcFaceBubbleN( localIndex const q, real64 (& N)[numFaces] ) { - GEOS_UNUSED_VAR( q ); - // single quadrature point (centroid), i.e. r = s = t = 1/4 - real64 const pointCoord[3] = {0.25, 0.25, 0.25}; + real64 const pointCoord[3] = {quadratureParentCoords0( q ), + quadratureParentCoords1( q ), + quadratureParentCoords2( q )}; calcFaceBubbleN( pointCoord, N ); } @@ -322,7 +329,175 @@ class H1_Tetrahedron_Lagrange1_Gauss1 final : public FiniteElementBase constexpr static real64 parentVolume = 1.0 / 6.0; /// The weight of each quadrature point. - constexpr static real64 weight = parentVolume / numQuadraturePoints; + constexpr static real64 weight = parentVolume; + //constexpr static real64 weight = parentVolume / numQuadraturePoints; + + /** + * @brief Calculate the weights + * @param q + * @return weight. + */ + GEOS_HOST_DEVICE + inline + constexpr static real64 quadratureWeight( localIndex const q ) + { + if constexpr (numQuadraturePoints == 1) + { + real64 const w[numQuadraturePoints] = { 1.0 }; + return w[q]; + } + else if constexpr (numQuadraturePoints == 5) + { + real64 const w[numQuadraturePoints] = {-4.0/5.0, 9.0/20.0, 9.0/20.0, 9.0/20.0, 9.0/20.0 }; + return w[q]; + } + else if constexpr (numQuadraturePoints == 14) + { + real64 const w[numQuadraturePoints] = { 0.073493043116361949544, + 0.073493043116361949544, + 0.073493043116361949544, + 0.073493043116361949544, + 0.11268792571801585080, + 0.11268792571801585080, + 0.11268792571801585080, + 0.11268792571801585080, + 0.042546020777081466438, + 0.042546020777081466438, + 0.042546020777081466438, + 0.042546020777081466438, + 0.042546020777081466438, + 0.042546020777081466438 }; + return w[q]; + } + + } + + /** + * @brief Calculate the parent coordinates for the r direction, given the + * linear index of a quadrature point. + * @param a The linear index of quadrature point + * @return parent coordinate in the r direction. + */ + GEOS_HOST_DEVICE + inline + constexpr static real64 quadratureParentCoords0( localIndex const q ) + { + + if constexpr (numQuadraturePoints == 1) + { + real64 const qCoords[numQuadraturePoints] = { 1.0/4.0 }; + return qCoords[q]; + } + else if constexpr (numQuadraturePoints == 5) + { + real64 const qCoords[numQuadraturePoints] = { 1.0/4.0, 1.0/2.0, 1.0/6.0, 1.0/6.0, 1.0/6.0 }; + return qCoords[q]; + } + else if constexpr (numQuadraturePoints == 14) + { + real64 const qCoords[numQuadraturePoints] = { 0.72179424906732632079, + 0.092735250310891226402, + 0.092735250310891226402, + 0.092735250310891226402, + 0.067342242210098170608, + 0.31088591926330060980, + 0.31088591926330060980, + 0.31088591926330060980, + 0.045503704125649649492, + 0.045503704125649649492, + 0.045503704125649649492, + 0.45449629587435035051, + 0.45449629587435035051, + 0.45449629587435035051 }; + return qCoords[q]; + } + + } + + /** + * @brief Calculate the parent coordinates for the s direction, given the + * linear index of a quadrature point. + * @param q The linear index of quadrature point + * @return parent coordinate in the s direction. + */ + GEOS_HOST_DEVICE + inline + constexpr static real64 quadratureParentCoords1( localIndex const q ) + { + + if constexpr (numQuadraturePoints == 1) + { + real64 const qCoords[numQuadraturePoints] = { 1.0/4.0 }; + return qCoords[q]; + } + else if constexpr (numQuadraturePoints == 5) + { + real64 const qCoords[numQuadraturePoints] = { 1.0/4.0, 1.0/6.0, 1.0/2.0, 1.0/6.0, 1.0/6.0 }; + return qCoords[q]; + } + else if constexpr (numQuadraturePoints == 14) + { + real64 const qCoords[numQuadraturePoints] = { 0.092735250310891226402, + 0.72179424906732632079, + 0.092735250310891226402, + 0.092735250310891226402, + 0.31088591926330060980, + 0.067342242210098170608, + 0.31088591926330060980, + 0.31088591926330060980, + 0.045503704125649649492, + 0.45449629587435035051, + 0.45449629587435035051, + 0.045503704125649649492, + 0.045503704125649649492, + 0.45449629587435035051 }; + return qCoords[q]; + } + + } + + /** + * @brief Calculate the parent coordinates for the t direction, given the + * linear index of a quadrature point. + * @param q The linear index of quadrature point + * @return parent coordinate in the t direction. + */ + GEOS_HOST_DEVICE + inline + constexpr static real64 quadratureParentCoords2( localIndex const q ) + { + + if constexpr (numQuadraturePoints == 1) + { + real64 const qCoords[numQuadraturePoints] = { 1.0/4.0 }; + return qCoords[q]; + } + else if constexpr (numQuadraturePoints == 5) + { + real64 const qCoords[numQuadraturePoints] = { 1.0/4.0, 1.0/6.0, 1.0/6.0, 1.0/2.0, 1.0/6.0 }; + return qCoords[q]; + } + else if constexpr (numQuadraturePoints == 14) + { + real64 const qCoords[numQuadraturePoints] = { 0.092735250310891226402, + 0.092735250310891226402, + 0.72179424906732632079, + 0.092735250310891226402, + 0.31088591926330060980, + 0.31088591926330060980, + 0.067342242210098170608, + 0.31088591926330060980, + 0.45449629587435035051, + 0.045503704125649649492, + 0.45449629587435035051, + 0.045503704125649649492, + 0.45449629587435035051, + 0.045503704125649649492 }; + + return qCoords[q]; + } + + } /** * @brief Calculates the determinant of the Jacobian of the isoparametric @@ -337,11 +512,12 @@ class H1_Tetrahedron_Lagrange1_Gauss1 final : public FiniteElementBase /// @cond Doxygen_Suppress +template< typename NUM_Q_POINTS > GEOS_HOST_DEVICE inline real64 -H1_Tetrahedron_Lagrange1_Gauss1:: - determinantJacobianTransformation( real64 const (&X)[numNodes][3] ) +H1_Tetrahedron_Lagrange1_Gauss< NUM_Q_POINTS >:: +determinantJacobianTransformation( real64 const (&X)[numNodes][3] ) { return ( X[1][0] - X[0][0] )*( ( X[2][1] - X[0][1] )*( X[3][2] - X[0][2] ) - ( X[3][1] - X[0][1] )*( X[2][2] - X[0][2] ) ) + ( X[1][1] - X[0][1] )*( ( X[3][0] - X[0][0] )*( X[2][2] - X[0][2] ) - ( X[2][0] - X[0][0] )*( X[3][2] - X[0][2] ) ) @@ -350,12 +526,13 @@ H1_Tetrahedron_Lagrange1_Gauss1:: //************************************************************************************************* +template< typename NUM_Q_POINTS > GEOS_HOST_DEVICE inline void -H1_Tetrahedron_Lagrange1_Gauss1:: - calcN( real64 const (&coords)[3], - real64 (& N)[numNodes] ) +H1_Tetrahedron_Lagrange1_Gauss< NUM_Q_POINTS >:: +calcN( real64 const (&coords)[3], + real64 (& N)[numNodes] ) { real64 const r = coords[0]; real64 const s = coords[1]; @@ -369,41 +546,43 @@ H1_Tetrahedron_Lagrange1_Gauss1:: } +template< typename NUM_Q_POINTS > GEOS_HOST_DEVICE inline void -H1_Tetrahedron_Lagrange1_Gauss1:: - calcN( localIndex const q, - real64 (& N)[numNodes] ) +H1_Tetrahedron_Lagrange1_Gauss< NUM_Q_POINTS >:: +calcN( localIndex const q, + real64 (& N)[numNodes] ) { - GEOS_UNUSED_VAR( q ); + real64 const pointCoord[3] = {quadratureParentCoords0( q ), + quadratureParentCoords1( q ), + quadratureParentCoords2( q )}; - // single quadrature point (centroid), i.e. r = s = t = 1/4 - real64 const pointCoord[3] = {0.25, 0.25, 0.25}; calcN( pointCoord, N ); } +template< typename NUM_Q_POINTS > GEOS_HOST_DEVICE inline -void H1_Tetrahedron_Lagrange1_Gauss1:: - calcN( localIndex const q, - StackVariables const & GEOS_UNUSED_PARAM( stack ), - real64 ( & N )[numNodes] ) +void H1_Tetrahedron_Lagrange1_Gauss< NUM_Q_POINTS >:: +calcN( localIndex const q, + StackVariables const & GEOS_UNUSED_PARAM( stack ), + real64 ( & N )[numNodes] ) { return calcN( q, N ); } //************************************************************************************************* +template< typename NUM_Q_POINTS > GEOS_HOST_DEVICE inline real64 -H1_Tetrahedron_Lagrange1_Gauss1:: - calcGradN( localIndex const q, - real64 const (&X)[numNodes][3], - real64 (& gradN)[numNodes][3] ) +H1_Tetrahedron_Lagrange1_Gauss< NUM_Q_POINTS >:: +calcGradN( localIndex const q, + real64 const (&X)[numNodes][3], + real64 (& gradN)[numNodes][3] ) { - GEOS_UNUSED_VAR( q ); gradN[0][0] = X[1][1]*( X[3][2] - X[2][2] ) - X[2][1]*( X[3][2] - X[1][2] ) + X[3][1]*( X[2][2] - X[1][2] ); gradN[0][1] = -X[1][0]*( X[3][2] - X[2][2] ) + X[2][0]*( X[3][2] - X[1][2] ) - X[3][0]*( X[2][2] - X[1][2] ); @@ -432,52 +611,53 @@ H1_Tetrahedron_Lagrange1_Gauss1:: } } - return detJ * weight; + return detJ * weight * quadratureWeight( q ); } +template< typename NUM_Q_POINTS > GEOS_HOST_DEVICE inline -real64 H1_Tetrahedron_Lagrange1_Gauss1:: - calcGradN( localIndex const q, - real64 const (&X)[numNodes][3], - StackVariables const & GEOS_UNUSED_PARAM( stack ), - real64 ( & gradN )[numNodes][3] ) +real64 H1_Tetrahedron_Lagrange1_Gauss< NUM_Q_POINTS >:: +calcGradN( localIndex const q, + real64 const (&X)[numNodes][3], + StackVariables const & GEOS_UNUSED_PARAM( stack ), + real64 ( & gradN )[numNodes][3] ) { return calcGradN( q, X, gradN ); } +template< typename NUM_Q_POINTS > GEOS_HOST_DEVICE inline real64 -H1_Tetrahedron_Lagrange1_Gauss1::calcGradFaceBubbleN( localIndex const q, - real64 const (&X)[numNodes][3], - real64 (& gradN)[numFaces][3] ) +H1_Tetrahedron_Lagrange1_Gauss< NUM_Q_POINTS >::calcGradFaceBubbleN( localIndex const q, + real64 const (&X)[numNodes][3], + real64 (& gradN)[numFaces][3] ) { - GEOS_UNUSED_VAR( q ); - - real64 detJ = determinantJacobianTransformation( X ); - real64 factor = 1.0 / ( detJ ); + //real64 detJ = determinantJacobianTransformation( X ); real64 J[3][3] = {{0}}; - J[0][0] = (-X[0][1]*( X[3][2] - X[2][2] ) + X[2][1]*( X[3][2] - X[0][2] ) - X[3][1]*( X[2][2] - X[0][2] ))*factor; - J[0][1] = ( X[0][0]*( X[3][2] - X[2][2] ) - X[2][0]*( X[3][2] - X[0][2] ) + X[3][0]*( X[2][2] - X[0][2] ))*factor; - J[0][2] = (-X[0][0]*( X[3][1] - X[2][1] ) + X[2][0]*( X[3][1] - X[0][1] ) - X[3][0]*( X[2][1] - X[0][1] ))*factor; + J[0][0] = X[1][0] - X[0][0]; + J[0][1] = X[2][0] - X[0][0]; + J[0][2] = X[3][0] - X[0][0]; - J[1][0] = ( X[0][1]*( X[3][2] - X[1][2] ) - X[1][1]*( X[3][2] - X[0][2] ) + X[3][1]*( X[1][2] - X[0][2] ))*factor; - J[1][1] = (-X[0][0]*( X[3][2] - X[1][2] ) + X[1][0]*( X[3][2] - X[0][2] ) - X[3][0]*( X[1][2] - X[0][2] ))*factor; - J[1][2] = ( X[0][0]*( X[3][1] - X[1][1] ) - X[1][0]*( X[3][1] - X[0][1] ) + X[3][0]*( X[1][1] - X[0][1] ))*factor; + J[1][0] = X[1][1] - X[0][1]; + J[1][1] = X[2][1] - X[0][1]; + J[1][2] = X[3][1] - X[0][1]; - J[2][0] = (-X[0][1]*( X[2][2] - X[1][2] ) + X[1][1]*( X[2][2] - X[0][2] ) - X[2][1]*( X[1][2] - X[0][2] ))*factor; - J[2][1] = ( X[0][0]*( X[2][2] - X[1][2] ) - X[1][0]*( X[2][2] - X[0][2] ) + X[2][0]*( X[1][2] - X[0][2] ))*factor; - J[2][2] = (-X[0][0]*( X[2][1] - X[1][1] ) + X[1][0]*( X[2][1] - X[0][1] ) - X[2][0]*( X[1][1] - X[0][1] ))*factor; + J[2][0] = X[1][2] - X[0][2]; + J[2][1] = X[2][2] - X[0][2]; + J[2][2] = X[3][2] - X[0][2]; + + real64 const detJ = LvArray::tensorOps::invert< 3 >( J ); real64 dNdXi[numFaces][3] = {{0}}; - // single quadrature point (centroid), i.e. r = s = t = 1/4 - real64 const r = 1.0 / 4.0; - real64 const s = 1.0 / 4.0; - real64 const t = 1.0 / 4.0; + + real64 const r = quadratureParentCoords0( q ); + real64 const s = quadratureParentCoords1( q ); + real64 const t = quadratureParentCoords2( q ); dNdXi[0][0] = ( 1 - 2 * r - s - t ) * t; // dN0/dr dNdXi[0][1] = -r * t; // dN0/ds @@ -485,7 +665,7 @@ H1_Tetrahedron_Lagrange1_Gauss1::calcGradFaceBubbleN( localIndex const q, dNdXi[1][0] = ( 1 - 2 * r - s - t ) * s; // dN1/dr dNdXi[1][1] = ( 1 - r - 2 * s - t ) * r; // dN1/ds - dNdXi[1][2] = -r * s; // dN1/dt + dNdXi[1][2] = -r * s; // dN1/dt dNdXi[2][0] = -t * s; // dN2/dr dNdXi[2][1] = ( 1 - r - 2 * s - t ) * t; // dN2/ds @@ -502,28 +682,35 @@ H1_Tetrahedron_Lagrange1_Gauss1::calcGradFaceBubbleN( localIndex const q, gradN[fi][2] = dNdXi[fi][0] * J[0][2] + dNdXi[fi][1] * J[1][2] + dNdXi[fi][2] * J[2][2]; } - return detJ * weight; + return detJ * weight * quadratureWeight( q ); } //************************************************************************************************* +template< typename NUM_Q_POINTS > GEOS_HOST_DEVICE inline real64 -H1_Tetrahedron_Lagrange1_Gauss1:: - transformedQuadratureWeight( localIndex const q, - real64 const (&X)[numNodes][3] ) +H1_Tetrahedron_Lagrange1_Gauss< NUM_Q_POINTS >:: +transformedQuadratureWeight( localIndex const q, + real64 const (&X)[numNodes][3] ) { - GEOS_UNUSED_VAR( q ); real64 detJ = determinantJacobianTransformation( X ); - return detJ * weight; + return detJ * weight * quadratureWeight( q ); } /// @endcond +/// @brief Instantiate the H1_Tetrahedron_Lagrange1_Gauss class for the 1-point Gaussian quadrature rule. +using H1_Tetrahedron_Lagrange1_Gauss1 = H1_Tetrahedron_Lagrange1_Gauss< std::integral_constant< int, 1 > >; +/// @brief Instantiate the H1_Tetrahedron_Lagrange1_Gauss class for the 5-point Gaussian quadrature rule. +using H1_Tetrahedron_Lagrange1_Gauss5 = H1_Tetrahedron_Lagrange1_Gauss< std::integral_constant< int, 5 > >; +/// @brief Instantiate the H1_Tetrahedron_Lagrange1_Gauss class for the 14-point Gaussian quadrature rule. +using H1_Tetrahedron_Lagrange1_Gauss14 = H1_Tetrahedron_Lagrange1_Gauss< std::integral_constant< int, 14 > >; + } } -#endif //GEOS_FINITEELEMENT_ELEMENTFORMULATIONS_H1TETRAHEDRONLAGRANGE1GAUSS1_HPP_ +#endif //GEOS_FINITEELEMENT_ELEMENTFORMULATIONS_H1TETRAHEDRONLAGRANGE1GAUSS_HPP_ diff --git a/src/coreComponents/finiteElement/elementFormulations/H1_TriangleFace_Lagrange1_Gauss1.hpp b/src/coreComponents/finiteElement/elementFormulations/H1_TriangleFace_Lagrange1_Gauss.hpp similarity index 55% rename from src/coreComponents/finiteElement/elementFormulations/H1_TriangleFace_Lagrange1_Gauss1.hpp rename to src/coreComponents/finiteElement/elementFormulations/H1_TriangleFace_Lagrange1_Gauss.hpp index 47ed48f9b3d..61a3086598b 100644 --- a/src/coreComponents/finiteElement/elementFormulations/H1_TriangleFace_Lagrange1_Gauss1.hpp +++ b/src/coreComponents/finiteElement/elementFormulations/H1_TriangleFace_Lagrange1_Gauss.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -14,11 +14,11 @@ */ /** - * @file H1_TriangleFace_Lagrange1_Gauss1.hpp + * @file H1_TriangleFace_Lagrange1_Gauss.hpp */ -#ifndef GEOS_FINITEELEMENT_ELEMENTFORMULATIONS_H1TRIANGLEFACELAGRANGE1GAUSS1_HPP_ -#define GEOS_FINITEELEMENT_ELEMENTFORMULATIONS_H1TRIANGLEFACELAGRANGE1GAUSS1_HPP_ +#ifndef GEOS_FINITEELEMENT_ELEMENTFORMULATIONS_H1TRIANGLEFACELAGRANGE1GAUSS_HPP_ +#define GEOS_FINITEELEMENT_ELEMENTFORMULATIONS_H1TRIANGLEFACELAGRANGE1GAUSS_HPP_ #include "FiniteElementBase.hpp" #include "LagrangeBasis1.hpp" @@ -47,10 +47,17 @@ namespace finiteElement * 0 1 * */ -class H1_TriangleFace_Lagrange1_Gauss1 final : public FiniteElementBase +template< typename NUM_Q_POINTS > +class H1_TriangleFace_Lagrange1_Gauss final : public FiniteElementBase { public: + /// Check that the number of quadrature points is valid. + static_assert( ( NUM_Q_POINTS::value == 1 || + NUM_Q_POINTS::value == 4 || + NUM_Q_POINTS::value == 6 ), + "NUM_Q_POINTS::value must be 1, 4, or 6!" ); + /// The type of basis used for this element using BASIS = LagrangeBasis1; @@ -60,10 +67,10 @@ class H1_TriangleFace_Lagrange1_Gauss1 final : public FiniteElementBase constexpr static localIndex maxSupportPoints = numNodes; /// The number of quadrature points per element. - constexpr static localIndex numQuadraturePoints = 1; + constexpr static localIndex numQuadraturePoints = NUM_Q_POINTS::value; GEOS_HOST_DEVICE - virtual ~H1_TriangleFace_Lagrange1_Gauss1() override + virtual ~H1_TriangleFace_Lagrange1_Gauss() override {} GEOS_HOST_DEVICE @@ -173,10 +180,9 @@ class H1_TriangleFace_Lagrange1_Gauss1 final : public FiniteElementBase static void calcBubbleN( localIndex const q, real64 (& N)[1] ) { - GEOS_UNUSED_VAR( q ); - // single quadrature point (centroid), i.e. r = s = 1/3 - real64 const qCoords[2] = { 1.0 / 3.0, 1.0 / 3.0}; + real64 const qCoords[2] = {quadratureParentCoords0( q ), quadratureParentCoords1( q ) }; + calcBubbleN( qCoords, N ); } @@ -228,33 +234,147 @@ class H1_TriangleFace_Lagrange1_Gauss1 final : public FiniteElementBase constexpr static real64 parentArea = 0.5; /// The weight of each quadrature point. - constexpr static real64 weight = parentArea / numQuadraturePoints; + //constexpr static real64 weight = parentArea / numQuadraturePoints; + constexpr static real64 weight = parentArea; + + /** + * @brief Calculate the weights + * @param q + * @return weight. + */ + GEOS_HOST_DEVICE + inline + constexpr static real64 quadratureWeight( localIndex const q ) + { + + if constexpr (numQuadraturePoints == 1) + { + constexpr real64 w[numQuadraturePoints] = { 1.0 }; + return w[q]; + } + else if constexpr (numQuadraturePoints == 4) + { + constexpr real64 w[numQuadraturePoints] = {-0.562500000000000, + 0.520833333333333, + 0.520833333333333, + 0.520833333333333 }; + return w[q]; + } + else if constexpr (numQuadraturePoints == 6) + { + real64 const w[numQuadraturePoints] = { 0.166666666666666, + 0.166666666666666, + 0.166666666666666, + 0.166666666666666, + 0.166666666666666, + 0.166666666666666 }; + return w[q]; + } + + } + + /** + * @brief Calculate the parent coordinates for the r direction, given the + * linear index of a quadrature point. + * @param a The linear index of quadrature point + * @return parent coordinate in the r direction. + */ + GEOS_HOST_DEVICE + inline + constexpr static real64 quadratureParentCoords0( localIndex const q ) + { + + if constexpr (numQuadraturePoints == 1) + { + constexpr real64 qCoords[numQuadraturePoints] = { 1.0/3.0 }; + return qCoords[q]; + } + else if constexpr (numQuadraturePoints == 4) + { + constexpr real64 qCoords[numQuadraturePoints] = { 0.333333333333333, + 0.600000000000000, + 0.200000000000000, + 0.200000000000000 }; + return qCoords[q]; + } + else if constexpr (numQuadraturePoints == 6) + { + constexpr real64 qCoords[numQuadraturePoints] = { 0.659027622374092, + 0.109039009072877, + 0.231933368553031, + 0.659027622374092, + 0.109039009072877, + 0.231933368553031 }; + return qCoords[q]; + } + + } + + /** + * @brief Calculate the parent coordinates for the s direction, given the + * linear index of a quadrature point. + * @param q The linear index of quadrature point + * @return parent coordinate in the s direction. + */ + GEOS_HOST_DEVICE + inline + constexpr static real64 quadratureParentCoords1( localIndex const q ) + { + + if constexpr (numQuadraturePoints == 1) + { + constexpr real64 qCoords[numQuadraturePoints] = { 1.0/3.0 }; + return qCoords[q]; + } + else if constexpr (numQuadraturePoints == 4) + { + constexpr real64 qCoords[numQuadraturePoints] = { 0.333333333333333, + 0.200000000000000, + 0.600000000000000, + 0.200000000000000 }; + return qCoords[q]; + } + else if constexpr (numQuadraturePoints == 6) + { + constexpr real64 qCoords[numQuadraturePoints] = { 0.231933368553031, + 0.659027622374092, + 0.109039009072877, + 0.109039009072877, + 0.231933368553031, + 0.659027622374092 }; + return qCoords[q]; + } + + } }; /// @cond Doxygen_Suppress + +template< typename NUM_Q_POINTS > template< localIndex NUMDOFSPERTRIALSUPPORTPOINT, bool UPPER > GEOS_HOST_DEVICE inline -void H1_TriangleFace_Lagrange1_Gauss1:: - addGradGradStabilization( StackVariables const & stack, - real64 ( & matrix ) - [maxSupportPoints * NUMDOFSPERTRIALSUPPORTPOINT] - [maxSupportPoints * NUMDOFSPERTRIALSUPPORTPOINT], - real64 const & scaleFactor ) +void H1_TriangleFace_Lagrange1_Gauss< NUM_Q_POINTS >:: +addGradGradStabilization( StackVariables const & stack, + real64 ( & matrix ) + [maxSupportPoints * NUMDOFSPERTRIALSUPPORTPOINT] + [maxSupportPoints * NUMDOFSPERTRIALSUPPORTPOINT], + real64 const & scaleFactor ) { GEOS_UNUSED_VAR( stack ); GEOS_UNUSED_VAR( matrix ); GEOS_UNUSED_VAR( scaleFactor ); } +template< typename NUM_Q_POINTS > GEOS_HOST_DEVICE inline void -H1_TriangleFace_Lagrange1_Gauss1:: - calcN( real64 const (&coords)[2], - real64 ( & N )[numNodes] ) +H1_TriangleFace_Lagrange1_Gauss< NUM_Q_POINTS >:: +calcN( real64 const (&coords)[2], + real64 ( & N )[numNodes] ) { real64 const r = coords[0]; real64 const s = coords[1]; @@ -264,49 +384,60 @@ H1_TriangleFace_Lagrange1_Gauss1:: N[2] = s; } +template< typename NUM_Q_POINTS > GEOS_HOST_DEVICE inline void -H1_TriangleFace_Lagrange1_Gauss1:: - calcN( localIndex const q, - real64 (& N)[numNodes] ) +H1_TriangleFace_Lagrange1_Gauss< NUM_Q_POINTS >:: +calcN( localIndex const q, + real64 (& N)[numNodes] ) { - GEOS_UNUSED_VAR( q ); - // single quadrature point (centroid), i.e. r = s = 1/3 - N[0] = 1.0 / 3.0; // N0 = 1 - r - s - N[1] = N[0]; // N1 = r - N[2] = N[0]; // N2 = s + real64 const qCoords[2] = {quadratureParentCoords0( q ), quadratureParentCoords1( q ) }; + + calcN( qCoords, N ); + } +template< typename NUM_Q_POINTS > GEOS_HOST_DEVICE inline -void H1_TriangleFace_Lagrange1_Gauss1:: - calcN( localIndex const q, - StackVariables const & GEOS_UNUSED_PARAM( stack ), - real64 ( & N )[numNodes] ) +void H1_TriangleFace_Lagrange1_Gauss< NUM_Q_POINTS >:: +calcN( localIndex const q, + StackVariables const & GEOS_UNUSED_PARAM( stack ), + real64 ( & N )[numNodes] ) { return calcN( q, N ); } //************************************************************************************************* +template< typename NUM_Q_POINTS > GEOS_HOST_DEVICE inline real64 -H1_TriangleFace_Lagrange1_Gauss1:: - transformedQuadratureWeight( localIndex const q, - real64 const (&X)[numNodes][3] ) +H1_TriangleFace_Lagrange1_Gauss< NUM_Q_POINTS >:: +transformedQuadratureWeight( localIndex const q, + real64 const (&X)[numNodes][3] ) { - GEOS_UNUSED_VAR( q ); + //GEOS_UNUSED_VAR( q ); real64 n[3] = { ( X[1][1] - X[0][1] ) * ( X[2][2] - X[0][2] ) - ( X[2][1] - X[0][1] ) * ( X[1][2] - X[0][2] ), ( X[2][0] - X[0][0] ) * ( X[1][2] - X[0][2] ) - ( X[1][0] - X[0][0] ) * ( X[2][2] - X[0][2] ), ( X[1][0] - X[0][0] ) * ( X[2][1] - X[0][1] ) - ( X[2][0] - X[0][0] ) * ( X[1][1] - X[0][1] )}; - return sqrt( n[0] * n[0] + n[1] * n[1] + n[2] * n[2] ) * weight; + + return sqrt( n[0] * n[0] + n[1] * n[1] + n[2] * n[2] ) * weight * quadratureWeight( q ); } /// @endcond +/// @brief Istanciation of the class with 1 quadrature points. +using H1_TriangleFace_Lagrange1_Gauss1 = H1_TriangleFace_Lagrange1_Gauss< std::integral_constant< int, 1 > >; +/// @brief Istanciation of the class with 4 quadrature points. +using H1_TriangleFace_Lagrange1_Gauss4 = H1_TriangleFace_Lagrange1_Gauss< std::integral_constant< int, 4 > >; +/// @brief Istanciation of the class with 6 quadrature points. +using H1_TriangleFace_Lagrange1_Gauss6 = H1_TriangleFace_Lagrange1_Gauss< std::integral_constant< int, 6 > >; + + } } -#endif //GEOS_FINITEELEMENT_ELEMENTFORMULATIONS_H1TRIANGLEFACELAGRANGE1GAUSS1_HPP_ +#endif //GEOS_FINITEELEMENT_ELEMENTFORMULATIONS_H1TRIANGLEFACELAGRANGE1GAUSS_HPP_ diff --git a/src/coreComponents/finiteElement/elementFormulations/H1_Wedge_Lagrange1_Gauss6.hpp b/src/coreComponents/finiteElement/elementFormulations/H1_Wedge_Lagrange1_Gauss6.hpp index f74a2979296..d901a13572b 100644 --- a/src/coreComponents/finiteElement/elementFormulations/H1_Wedge_Lagrange1_Gauss6.hpp +++ b/src/coreComponents/finiteElement/elementFormulations/H1_Wedge_Lagrange1_Gauss6.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -203,12 +203,21 @@ class H1_Wedge_Lagrange1_Gauss6 final : public FiniteElementBase static void calcFaceBubbleN( real64 const (&pointCoord)[3], real64 (& N)[numFaces] ) { - GEOS_UNUSED_VAR( pointCoord, N ); - GEOS_ERROR( "Unsupported bubble functions for wedge elements" ); + + real64 const r = pointCoord[0]; + real64 const s = pointCoord[1]; + real64 const xi = pointCoord[2]; + + N[0] = 4.0 * (1.0 - r - s) * s * LagrangeBasis1::valueBubble( xi ); + N[1] = 4.0 * (1.0 - r - s) * r * LagrangeBasis1::valueBubble( xi ); + N[2] = (1.0 - r - s) * r * s * LagrangeBasis1::value( 0, xi ); + N[3] = (1.0 - r - s) * r * s * LagrangeBasis1::value( 1, xi ); + N[4] = 4.0 * r * s * LagrangeBasis1::valueBubble( xi ); + } /** - * @brief Calculate shape functions values for each support face at a + * @brief Calculate face bubble functions values for each face at a * quadrature point. * @param q Index of the quadrature point. * @param N An array to pass back the shape function values for each support @@ -219,8 +228,12 @@ class H1_Wedge_Lagrange1_Gauss6 final : public FiniteElementBase static void calcFaceBubbleN( localIndex const q, real64 (& N)[numFaces] ) { - GEOS_UNUSED_VAR( q, N ); - GEOS_ERROR( "Unsupported bubble functions for wedge elements" ); + + real64 const pointCoord[3] = {quadratureParentCoords0( q ), + quadratureParentCoords1( q ), + quadratureParentCoords2( q )}; + + calcFaceBubbleN( pointCoord, N ); } /** @@ -610,9 +623,47 @@ H1_Wedge_Lagrange1_Gauss6::calcGradFaceBubbleN( localIndex const q, real64 const (&X)[numNodes][3], real64 (& gradN)[numFaces][3] ) { - GEOS_UNUSED_VAR( q, X, gradN ); - GEOS_ERROR( "Unsupported bubble functions for wedge elements" ); - return 0.0; + + real64 J[3][3] = {{0}}; + + jacobianTransformation( q, X, J ); + + real64 const detJ = LvArray::tensorOps::invert< 3 >( J ); + + real64 dNdXi[numFaces][3] = {{0}}; + + real64 const r = quadratureParentCoords0( q ); + real64 const s = quadratureParentCoords1( q ); + real64 const xi = quadratureParentCoords2( q ); + + dNdXi[0][0] = -4.0 * s * LagrangeBasis1::valueBubble( xi ); // dN0/dr + dNdXi[0][1] = 4.0 * (1.0 - r - 2.0 * s) * LagrangeBasis1::valueBubble( xi ); // dN0/ds + dNdXi[0][2] = 4.0 *(1 - r - s) * s * LagrangeBasis1::gradientBubble( xi ); // dN0/dxi + + dNdXi[1][0] = 4.0 * (1.0 - 2.0 * r - s) * LagrangeBasis1::valueBubble( xi ); // dN1/dr + dNdXi[1][1] = -4.0 * r * LagrangeBasis1::valueBubble( xi ); // dN1/ds + dNdXi[1][2] = 4.0 * (1 - r - s) * r * LagrangeBasis1::gradientBubble( xi ); // dN1/dxi + + dNdXi[2][0] = (1.0 - 2.0 * r - s) * s * LagrangeBasis1::value( 0, xi ); // dN2/dr + dNdXi[2][1] = (1.0 - r - 2.0 * s) * r * LagrangeBasis1::value( 0, xi ); // dN2/ds + dNdXi[2][2] = (1 - r - s) * r * s * LagrangeBasis1::gradient( 0, xi ); // dN2/dxi + + dNdXi[3][0] = (1.0 - 2.0 * r - s) * s * LagrangeBasis1::value( 1, xi ); // dN3/dr + dNdXi[3][1] = (1.0 - r - 2.0 * s) * r * LagrangeBasis1::value( 1, xi ); // dN3/ds + dNdXi[3][2] = (1 - r - s) * r * s * LagrangeBasis1::gradient( 1, xi ); // dN3/dxi + + dNdXi[4][0] = 4.0 * s * LagrangeBasis1::valueBubble( xi ); // dN4/dr + dNdXi[4][1] = 4.0 * r * LagrangeBasis1::valueBubble( xi ); // dN4/ds + dNdXi[4][2] = 4.0 * r * s * LagrangeBasis1::gradientBubble( xi ); // dN4/dxi + + for( int fi=0; fi -#include "finiteElement/elementFormulations/H1_TriangleFace_Lagrange1_Gauss1.hpp" +#include "finiteElement/elementFormulations/H1_TriangleFace_Lagrange1_Gauss.hpp" using namespace geos; using namespace finiteElement; diff --git a/src/coreComponents/finiteElement/unitTests/testH1_Wedge_Lagrange1_Gauss6.cpp b/src/coreComponents/finiteElement/unitTests/testH1_Wedge_Lagrange1_Gauss6.cpp index cacbd995848..7951af09a7b 100644 --- a/src/coreComponents/finiteElement/unitTests/testH1_Wedge_Lagrange1_Gauss6.cpp +++ b/src/coreComponents/finiteElement/unitTests/testH1_Wedge_Lagrange1_Gauss6.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/finiteElement/unitTests/testQ3_Hexahedron_Lagrange_GaussLobatto.cpp b/src/coreComponents/finiteElement/unitTests/testQ3_Hexahedron_Lagrange_GaussLobatto.cpp index 74ce89005b2..b204cc9baa9 100644 --- a/src/coreComponents/finiteElement/unitTests/testQ3_Hexahedron_Lagrange_GaussLobatto.cpp +++ b/src/coreComponents/finiteElement/unitTests/testQ3_Hexahedron_Lagrange_GaussLobatto.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/finiteElement/unitTests/testQ5_Hexahedron_Lagrange_GaussLobatto.cpp b/src/coreComponents/finiteElement/unitTests/testQ5_Hexahedron_Lagrange_GaussLobatto.cpp index 11da6407f41..2e74a035da0 100644 --- a/src/coreComponents/finiteElement/unitTests/testQ5_Hexahedron_Lagrange_GaussLobatto.cpp +++ b/src/coreComponents/finiteElement/unitTests/testQ5_Hexahedron_Lagrange_GaussLobatto.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/finiteVolume/BoundaryStencil.cpp b/src/coreComponents/finiteVolume/BoundaryStencil.cpp index 5d08b265115..d2bb993141b 100644 --- a/src/coreComponents/finiteVolume/BoundaryStencil.cpp +++ b/src/coreComponents/finiteVolume/BoundaryStencil.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/finiteVolume/BoundaryStencil.hpp b/src/coreComponents/finiteVolume/BoundaryStencil.hpp index f6f1a40b969..137bd6692a9 100644 --- a/src/coreComponents/finiteVolume/BoundaryStencil.hpp +++ b/src/coreComponents/finiteVolume/BoundaryStencil.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/finiteVolume/CMakeLists.txt b/src/coreComponents/finiteVolume/CMakeLists.txt index b561b024d73..77aa9112334 100644 --- a/src/coreComponents/finiteVolume/CMakeLists.txt +++ b/src/coreComponents/finiteVolume/CMakeLists.txt @@ -1,7 +1,7 @@ # SPDX-License-Identifier: LGPL-2.1-only # # Copyright (c) 2016-2024 Lawrence Livermore National Security LLC -# Copyright (c) 2018-2024 Total, S.A +# Copyright (c) 2018-2024 TotalEnergies # Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University # Copyright (c) 2023-2024 Chevron # Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/finiteVolume/CellElementStencilMPFA.cpp b/src/coreComponents/finiteVolume/CellElementStencilMPFA.cpp index 7bc34a70fb6..1f9556667fc 100644 --- a/src/coreComponents/finiteVolume/CellElementStencilMPFA.cpp +++ b/src/coreComponents/finiteVolume/CellElementStencilMPFA.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/finiteVolume/CellElementStencilMPFA.hpp b/src/coreComponents/finiteVolume/CellElementStencilMPFA.hpp index 7a68580460a..296db38ad8d 100644 --- a/src/coreComponents/finiteVolume/CellElementStencilMPFA.hpp +++ b/src/coreComponents/finiteVolume/CellElementStencilMPFA.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/finiteVolume/CellElementStencilTPFA.cpp b/src/coreComponents/finiteVolume/CellElementStencilTPFA.cpp index 5464447494a..d95969e7a48 100644 --- a/src/coreComponents/finiteVolume/CellElementStencilTPFA.cpp +++ b/src/coreComponents/finiteVolume/CellElementStencilTPFA.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/finiteVolume/CellElementStencilTPFA.hpp b/src/coreComponents/finiteVolume/CellElementStencilTPFA.hpp index dcbe5850cea..88fa3bb2b27 100644 --- a/src/coreComponents/finiteVolume/CellElementStencilTPFA.hpp +++ b/src/coreComponents/finiteVolume/CellElementStencilTPFA.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/finiteVolume/EmbeddedSurfaceToCellStencil.cpp b/src/coreComponents/finiteVolume/EmbeddedSurfaceToCellStencil.cpp index 199767e948c..3fe641696e1 100644 --- a/src/coreComponents/finiteVolume/EmbeddedSurfaceToCellStencil.cpp +++ b/src/coreComponents/finiteVolume/EmbeddedSurfaceToCellStencil.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/finiteVolume/EmbeddedSurfaceToCellStencil.hpp b/src/coreComponents/finiteVolume/EmbeddedSurfaceToCellStencil.hpp index 511d4601a17..7f9c1562366 100644 --- a/src/coreComponents/finiteVolume/EmbeddedSurfaceToCellStencil.hpp +++ b/src/coreComponents/finiteVolume/EmbeddedSurfaceToCellStencil.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/finiteVolume/FaceElementToCellStencil.cpp b/src/coreComponents/finiteVolume/FaceElementToCellStencil.cpp index a032dcb9c6b..df56d0db33e 100644 --- a/src/coreComponents/finiteVolume/FaceElementToCellStencil.cpp +++ b/src/coreComponents/finiteVolume/FaceElementToCellStencil.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/finiteVolume/FaceElementToCellStencil.hpp b/src/coreComponents/finiteVolume/FaceElementToCellStencil.hpp index 2654d3d9f90..3b970bd8b2b 100644 --- a/src/coreComponents/finiteVolume/FaceElementToCellStencil.hpp +++ b/src/coreComponents/finiteVolume/FaceElementToCellStencil.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/finiteVolume/FiniteVolumeManager.cpp b/src/coreComponents/finiteVolume/FiniteVolumeManager.cpp index 7c1bb141182..b4329194c67 100644 --- a/src/coreComponents/finiteVolume/FiniteVolumeManager.cpp +++ b/src/coreComponents/finiteVolume/FiniteVolumeManager.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -42,6 +42,7 @@ FiniteVolumeManager::~FiniteVolumeManager() Group * FiniteVolumeManager::createChild( string const & childKey, string const & childName ) { + GEOS_LOG_RANK_0( GEOS_FMT( "{}: adding {} {}", getName(), childKey, childName ) ); if( childKey == HybridMimeticDiscretization::catalogName() ) { std::unique_ptr< HybridMimeticDiscretization > hm = std::make_unique< HybridMimeticDiscretization >( childName, this ); @@ -49,7 +50,8 @@ Group * FiniteVolumeManager::createChild( string const & childKey, string const } else { - std::unique_ptr< FluxApproximationBase > approx = FluxApproximationBase::CatalogInterface::factory( childKey, childName, this ); + std::unique_ptr< FluxApproximationBase > approx = FluxApproximationBase::CatalogInterface::factory( childKey, getDataContext(), + childName, this ); return &this->registerGroup< FluxApproximationBase >( childName, std::move( approx )); } } diff --git a/src/coreComponents/finiteVolume/FiniteVolumeManager.hpp b/src/coreComponents/finiteVolume/FiniteVolumeManager.hpp index 8e1fc606b1d..82e2e638854 100644 --- a/src/coreComponents/finiteVolume/FiniteVolumeManager.hpp +++ b/src/coreComponents/finiteVolume/FiniteVolumeManager.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/finiteVolume/FluxApproximationBase.cpp b/src/coreComponents/finiteVolume/FluxApproximationBase.cpp index 9cca35ac2ef..36b61678f39 100644 --- a/src/coreComponents/finiteVolume/FluxApproximationBase.cpp +++ b/src/coreComponents/finiteVolume/FluxApproximationBase.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/finiteVolume/FluxApproximationBase.hpp b/src/coreComponents/finiteVolume/FluxApproximationBase.hpp index 873fa531b3b..fafce71f6ff 100644 --- a/src/coreComponents/finiteVolume/FluxApproximationBase.hpp +++ b/src/coreComponents/finiteVolume/FluxApproximationBase.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/finiteVolume/HybridMimeticDiscretization.cpp b/src/coreComponents/finiteVolume/HybridMimeticDiscretization.cpp index 267a5d7905f..f9740cbb547 100644 --- a/src/coreComponents/finiteVolume/HybridMimeticDiscretization.cpp +++ b/src/coreComponents/finiteVolume/HybridMimeticDiscretization.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/finiteVolume/HybridMimeticDiscretization.hpp b/src/coreComponents/finiteVolume/HybridMimeticDiscretization.hpp index 3d39e41b3d2..c5bad903c66 100644 --- a/src/coreComponents/finiteVolume/HybridMimeticDiscretization.hpp +++ b/src/coreComponents/finiteVolume/HybridMimeticDiscretization.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/finiteVolume/MimeticInnerProductDispatch.hpp b/src/coreComponents/finiteVolume/MimeticInnerProductDispatch.hpp index 37a1b28c5f9..d9362edd0a3 100644 --- a/src/coreComponents/finiteVolume/MimeticInnerProductDispatch.hpp +++ b/src/coreComponents/finiteVolume/MimeticInnerProductDispatch.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/finiteVolume/ProjectionEDFMHelper.cpp b/src/coreComponents/finiteVolume/ProjectionEDFMHelper.cpp index 080375a17cc..ed477300ff0 100644 --- a/src/coreComponents/finiteVolume/ProjectionEDFMHelper.cpp +++ b/src/coreComponents/finiteVolume/ProjectionEDFMHelper.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/finiteVolume/ProjectionEDFMHelper.hpp b/src/coreComponents/finiteVolume/ProjectionEDFMHelper.hpp index d2f83e54d45..ac044dcf10c 100644 --- a/src/coreComponents/finiteVolume/ProjectionEDFMHelper.hpp +++ b/src/coreComponents/finiteVolume/ProjectionEDFMHelper.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/finiteVolume/StencilBase.hpp b/src/coreComponents/finiteVolume/StencilBase.hpp index abd2ce0a1d2..cf6fb20eebe 100644 --- a/src/coreComponents/finiteVolume/StencilBase.hpp +++ b/src/coreComponents/finiteVolume/StencilBase.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/finiteVolume/SurfaceElementStencil.cpp b/src/coreComponents/finiteVolume/SurfaceElementStencil.cpp index 21ac95e9129..2a030dff1eb 100644 --- a/src/coreComponents/finiteVolume/SurfaceElementStencil.cpp +++ b/src/coreComponents/finiteVolume/SurfaceElementStencil.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/finiteVolume/SurfaceElementStencil.hpp b/src/coreComponents/finiteVolume/SurfaceElementStencil.hpp index 5639a109b71..69b2a85c08a 100644 --- a/src/coreComponents/finiteVolume/SurfaceElementStencil.hpp +++ b/src/coreComponents/finiteVolume/SurfaceElementStencil.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/finiteVolume/TwoPointFluxApproximation.cpp b/src/coreComponents/finiteVolume/TwoPointFluxApproximation.cpp index ab28f40a6ea..665e1eed140 100644 --- a/src/coreComponents/finiteVolume/TwoPointFluxApproximation.cpp +++ b/src/coreComponents/finiteVolume/TwoPointFluxApproximation.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -384,6 +384,7 @@ void TwoPointFluxApproximation::cleanMatrixMatrixConnectionsDFM( MeshLevel & mes // This is there to shut off previously connected cells // that are not connected anymore due to dynamic fracturing. cellStencil.zero( faceMap[kfe][0] ); + cellStencil.zero( faceMap[kfe][1] ); } ); } @@ -418,14 +419,14 @@ void TwoPointFluxApproximation::addFractureMatrixConnectionsDFM( MeshLevel & mes SurfaceElementRegion & fractureRegion = elemManager.getRegion< SurfaceElementRegion >( faceElementRegionName ); localIndex const fractureRegionIndex = fractureRegion.getIndexInParent(); FaceElementSubRegion & fractureSubRegion = fractureRegion.getUniqueSubRegion< FaceElementSubRegion >(); - OrderedVariableToManyElementRelation const & elems2dToElems3d = fractureSubRegion.getToCellRelation(); + FixedToManyElementRelation const & elems2dToElems3d = fractureSubRegion.getToCellRelation(); SortedArrayView< localIndex const > const new2dElems = fractureSubRegion.m_newFaceElements.toViewConst(); FaceElementSubRegion::FaceMapType const & faceMap = fractureSubRegion.faceList(); - ArrayOfArraysView< localIndex const > elemRegionList = elems2dToElems3d.m_toElementRegion.toViewConst(); - ArrayOfArraysView< localIndex const > elemSubRegionList = elems2dToElems3d.m_toElementSubRegion.toViewConst(); - ArrayOfArraysView< localIndex const > elemList = elems2dToElems3d.m_toElementIndex.toViewConst(); + arrayView2d< localIndex const > const elemRegionList = elems2dToElems3d.m_toElementRegion.toViewConst(); + arrayView2d< localIndex const > const elemSubRegionList = elems2dToElems3d.m_toElementSubRegion.toViewConst(); + arrayView2d< localIndex const > const elemList = elems2dToElems3d.m_toElementIndex.toViewConst(); // reserve memory for the connections of this region if( cellStencil.size() != 0 ) @@ -447,7 +448,6 @@ void TwoPointFluxApproximation::addFractureMatrixConnectionsDFM( MeshLevel & mes forAll< serialPolicy >( new2dElems.size(), [ new2dElems, - &elems2dToElems3d, &faceToCellStencil, &faceMap, elemRegionList, @@ -465,7 +465,7 @@ void TwoPointFluxApproximation::addFractureMatrixConnectionsDFM( MeshLevel & mes { localIndex const kfe = new2dElems[k]; { - localIndex const numElems = elems2dToElems3d.m_toElementSubRegion.sizeOfArray( kfe ); + localIndex const numElems = 2; GEOS_ERROR_IF( numElems > maxElems, "Max stencil size exceeded by fracture-cell connector " << kfe ); @@ -951,10 +951,9 @@ void TwoPointFluxApproximation::computeAquiferStencil( DomainPartition & domain, localSumFaceAreasView[aquiferIndex] += targetSetSumFaceAreas.get(); } ); - MpiWrapper::allReduce( localSumFaceAreas.data(), - globalSumFaceAreas.data(), - localSumFaceAreas.size(), - MpiWrapper::getMpiOp( MpiWrapper::Reduction::Sum ), + MpiWrapper::allReduce( localSumFaceAreas, + globalSumFaceAreas, + MpiWrapper::Reduction::Sum, MPI_COMM_GEOS ); // Step 3: compute the face area fraction for each connection, and insert into boundary stencil diff --git a/src/coreComponents/finiteVolume/TwoPointFluxApproximation.hpp b/src/coreComponents/finiteVolume/TwoPointFluxApproximation.hpp index 498e6b77213..53be3ad3e04 100644 --- a/src/coreComponents/finiteVolume/TwoPointFluxApproximation.hpp +++ b/src/coreComponents/finiteVolume/TwoPointFluxApproximation.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/finiteVolume/docs/FiniteVolume.rst.txt b/src/coreComponents/finiteVolume/docs/FiniteVolume.rst.txt index 755e215d64e..ad65ea50dd4 100644 --- a/src/coreComponents/finiteVolume/docs/FiniteVolume.rst.txt +++ b/src/coreComponents/finiteVolume/docs/FiniteVolume.rst.txt @@ -16,17 +16,27 @@ The numerical flux is obtained using the following expression for the mass flux .. math:: F_{KL} = \Upsilon_{KL} \frac{\rho^{upw}}{\mu^{upw}} \big( p_K - p_L - \rho^{avg} g ( d_K - d_L ) \big), -where :math:`p_K` is the pressure of cell :math:`K`, :math:`d_K` is the depth of cell :math:`K`, and :math:`\Upsilon_{KL}` is the standard TPFA transmissibility coefficient at the interface. + +where :math:`p_K` is the pressure of cell :math:`K`, :math:`\rho^{avg}` is the average fluid density, :math:`d_K` is the depth of cell :math:`K`, and :math:`\Upsilon_{KL}` is the standard TPFA transmissibility coefficient at the interface. The fluid density, :math:`\rho^{upw}`, and the fluid viscosity, :math:`\mu^{upw}`, are upwinded using the sign of the potential difference at the interface. -This is currently the only available discretization in the :ref:`CompositionalMultiphaseFlow`. +For :ref:`CompositionalMultiphaseFlow` there are two options to compute the average density, :math:`\rho^{avg}`. The desired option can be selected using the `gravityDensityScheme` parameter: + +#. `ArithmeticAverage`: :math:`\rho^{avg}` is computed using simple arithmetic average: :math:`\rho^{avg} = 0.5 \cdot (rho_K + rho_L)`, where :math:`rho_K` and :math:`rho_K` are densities in the two cells. + +#. `PhasePresence`: average phase density is computed using checking for phase presence: + + * :math:`\rho^{avg} = 0.5 \cdot (\rho_K + \rho_L)` if phase is present in both cells :math:`K` and :math:`L` + + * :math:`\rho^{avg} = \rho_K` if phase is present only in cell :math:`K` + + * :math:`\rho^{avg} = \rho_L` if phase is present only in cell :math:`L` Hybrid FVM ~~~~~~~~~~ This discretization scheme overcomes the limitations of the standard TPFA on non K-orthogonal meshes. The hybrid finite-volume scheme--equivalent to the well-known hybrid Mimetic Finite Difference (MFD) scheme--remains consistent with the pressure equation even when the mesh does not satisfy the K-orthogonality condition. -This numerical scheme is currently implemented in the `SinglePhaseHybridFVM` solver. The hybrid FVM scheme uses both cell-centered and face-centered pressure degrees of freedom. The one-sided face flux, :math:`F_{K,f}`, at face :math:`f` of cell :math:`K` is computed as: @@ -60,5 +70,3 @@ For a given interior face :math:`f` between two neighboring cells :math:`K` and We obtain a numerical scheme with :math:`n_{\textit{cells}}` cell-centered degrees of freedom and :math:`n_{\textit{faces}}` face-centered pressure degrees of freedom. The system involves :math:`n_{\textit{cells}}` mass conservation equations and :math:`n_{\textit{faces}}` face-based constraints. The linear systems can be efficiently solved using the MultiGrid Reduction (MGR) preconditioner implemented in the Hypre linear algebra package. - -The implementation of the hybrid FVM scheme for :ref:`CompositionalMultiphaseFlow` is in progress. diff --git a/src/coreComponents/finiteVolume/mimeticInnerProducts/BdVLMInnerProduct.hpp b/src/coreComponents/finiteVolume/mimeticInnerProducts/BdVLMInnerProduct.hpp index 98587eedb75..5bde9c3a3c3 100644 --- a/src/coreComponents/finiteVolume/mimeticInnerProducts/BdVLMInnerProduct.hpp +++ b/src/coreComponents/finiteVolume/mimeticInnerProducts/BdVLMInnerProduct.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/finiteVolume/mimeticInnerProducts/MimeticInnerProductBase.hpp b/src/coreComponents/finiteVolume/mimeticInnerProducts/MimeticInnerProductBase.hpp index f96ac38c88b..2c905c1713a 100644 --- a/src/coreComponents/finiteVolume/mimeticInnerProducts/MimeticInnerProductBase.hpp +++ b/src/coreComponents/finiteVolume/mimeticInnerProducts/MimeticInnerProductBase.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/finiteVolume/mimeticInnerProducts/MimeticInnerProductHelpers.hpp b/src/coreComponents/finiteVolume/mimeticInnerProducts/MimeticInnerProductHelpers.hpp index 83d62e2ace9..7eb8f5558c6 100644 --- a/src/coreComponents/finiteVolume/mimeticInnerProducts/MimeticInnerProductHelpers.hpp +++ b/src/coreComponents/finiteVolume/mimeticInnerProducts/MimeticInnerProductHelpers.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/finiteVolume/mimeticInnerProducts/QuasiRTInnerProduct.hpp b/src/coreComponents/finiteVolume/mimeticInnerProducts/QuasiRTInnerProduct.hpp index 7d0606e990c..e125659ec8e 100644 --- a/src/coreComponents/finiteVolume/mimeticInnerProducts/QuasiRTInnerProduct.hpp +++ b/src/coreComponents/finiteVolume/mimeticInnerProducts/QuasiRTInnerProduct.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/finiteVolume/mimeticInnerProducts/QuasiTPFAInnerProduct.hpp b/src/coreComponents/finiteVolume/mimeticInnerProducts/QuasiTPFAInnerProduct.hpp index 61c5f07a078..4f481e7181b 100644 --- a/src/coreComponents/finiteVolume/mimeticInnerProducts/QuasiTPFAInnerProduct.hpp +++ b/src/coreComponents/finiteVolume/mimeticInnerProducts/QuasiTPFAInnerProduct.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/finiteVolume/mimeticInnerProducts/SimpleInnerProduct.hpp b/src/coreComponents/finiteVolume/mimeticInnerProducts/SimpleInnerProduct.hpp index 19282b23568..da7f4b2b330 100644 --- a/src/coreComponents/finiteVolume/mimeticInnerProducts/SimpleInnerProduct.hpp +++ b/src/coreComponents/finiteVolume/mimeticInnerProducts/SimpleInnerProduct.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/finiteVolume/mimeticInnerProducts/TPFAInnerProduct.hpp b/src/coreComponents/finiteVolume/mimeticInnerProducts/TPFAInnerProduct.hpp index 6264135df16..dde1042e41b 100644 --- a/src/coreComponents/finiteVolume/mimeticInnerProducts/TPFAInnerProduct.hpp +++ b/src/coreComponents/finiteVolume/mimeticInnerProducts/TPFAInnerProduct.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/functions/CMakeLists.txt b/src/coreComponents/functions/CMakeLists.txt index bf8eed9b134..8fb39ce419d 100644 --- a/src/coreComponents/functions/CMakeLists.txt +++ b/src/coreComponents/functions/CMakeLists.txt @@ -1,7 +1,7 @@ # SPDX-License-Identifier: LGPL-2.1-only # # Copyright (c) 2016-2024 Lawrence Livermore National Security LLC -# Copyright (c) 2018-2024 Total, S.A +# Copyright (c) 2018-2024 TotalEnergies # Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University # Copyright (c) 2023-2024 Chevron # Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/functions/CompositeFunction.cpp b/src/coreComponents/functions/CompositeFunction.cpp index 2bd9885ba88..58cc844a106 100644 --- a/src/coreComponents/functions/CompositeFunction.cpp +++ b/src/coreComponents/functions/CompositeFunction.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/functions/CompositeFunction.hpp b/src/coreComponents/functions/CompositeFunction.hpp index 1ba6c8d9407..be055245814 100644 --- a/src/coreComponents/functions/CompositeFunction.hpp +++ b/src/coreComponents/functions/CompositeFunction.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/functions/FunctionBase.cpp b/src/coreComponents/functions/FunctionBase.cpp index 9b4ae666e51..07a831fb05f 100644 --- a/src/coreComponents/functions/FunctionBase.cpp +++ b/src/coreComponents/functions/FunctionBase.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/functions/FunctionBase.hpp b/src/coreComponents/functions/FunctionBase.hpp index 44f9c30bf47..c86033050fd 100644 --- a/src/coreComponents/functions/FunctionBase.hpp +++ b/src/coreComponents/functions/FunctionBase.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/functions/FunctionManager.cpp b/src/coreComponents/functions/FunctionManager.cpp index 5cf652a8593..2f8425beb99 100644 --- a/src/coreComponents/functions/FunctionManager.cpp +++ b/src/coreComponents/functions/FunctionManager.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -53,8 +53,9 @@ FunctionManager & FunctionManager::getInstance() Group * FunctionManager::createChild( string const & functionCatalogKey, string const & functionName ) { - GEOS_LOG_RANK_0( " " << functionCatalogKey << ": " << functionName ); - std::unique_ptr< FunctionBase > function = FunctionBase::CatalogInterface::factory( functionCatalogKey, functionName, this ); + GEOS_LOG_RANK_0( GEOS_FMT( "{}: adding {} {}", getName(), functionCatalogKey, functionName ) ); + std::unique_ptr< FunctionBase > function = + FunctionBase::CatalogInterface::factory( functionCatalogKey, getDataContext(), functionName, this ); return &this->registerGroup< FunctionBase >( functionName, std::move( function ) ); } diff --git a/src/coreComponents/functions/FunctionManager.hpp b/src/coreComponents/functions/FunctionManager.hpp index 9c5359fb622..dac7ad85b0a 100644 --- a/src/coreComponents/functions/FunctionManager.hpp +++ b/src/coreComponents/functions/FunctionManager.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/functions/MultivariableTableFunction.cpp b/src/coreComponents/functions/MultivariableTableFunction.cpp index 9200e188076..4f8db1244bb 100644 --- a/src/coreComponents/functions/MultivariableTableFunction.cpp +++ b/src/coreComponents/functions/MultivariableTableFunction.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/functions/MultivariableTableFunction.hpp b/src/coreComponents/functions/MultivariableTableFunction.hpp index cc924974f49..927a020d817 100644 --- a/src/coreComponents/functions/MultivariableTableFunction.hpp +++ b/src/coreComponents/functions/MultivariableTableFunction.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/functions/MultivariableTableFunctionKernels.hpp b/src/coreComponents/functions/MultivariableTableFunctionKernels.hpp index 0647536f524..99022f23dc0 100644 --- a/src/coreComponents/functions/MultivariableTableFunctionKernels.hpp +++ b/src/coreComponents/functions/MultivariableTableFunctionKernels.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/functions/SymbolicFunction.cpp b/src/coreComponents/functions/SymbolicFunction.cpp index 52187b1af13..26ae27b1be5 100644 --- a/src/coreComponents/functions/SymbolicFunction.cpp +++ b/src/coreComponents/functions/SymbolicFunction.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/functions/SymbolicFunction.hpp b/src/coreComponents/functions/SymbolicFunction.hpp index f05e5d22336..5f0c3ea79e5 100644 --- a/src/coreComponents/functions/SymbolicFunction.hpp +++ b/src/coreComponents/functions/SymbolicFunction.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/functions/TableFunction.cpp b/src/coreComponents/functions/TableFunction.cpp index 2e1897e7629..3fc62833d41 100644 --- a/src/coreComponents/functions/TableFunction.cpp +++ b/src/coreComponents/functions/TableFunction.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -307,7 +307,7 @@ string TableCSVFormatter::toString< TableFunction >( TableFunction const & table units::getDescription( tableFunction.getDimUnit( 0 ) ), units::getDescription( tableFunction.getDimUnit( 1 ) ) ); - TableLayout tableLayout( tableConverted.headerNames ); + TableLayout const tableLayout( "", tableConverted.headerNames ); TableCSVFormatter csvFormat( tableLayout ); formatterStream << csvFormat.headerToString() << csvFormat.dataToString( tableConverted.tableData ); @@ -322,7 +322,7 @@ string TableTextFormatter::toString< TableFunction >( TableFunction const & tabl units::Unit const valueUnit = tableFunction.getValueUnit(); arrayView1d< real64 const > const values = tableFunction.getValues(); integer const numDimensions = LvArray::integerConversion< integer >( coordinates.size() ); - string const filename = tableFunction.getName(); + std::string_view filename = tableFunction.getName(); string logOutput; GEOS_LOG_RANK_0( GEOS_FMT( "Values in the table are represented by : {}", units::getDescription( valueUnit ))); @@ -335,12 +335,10 @@ string TableTextFormatter::toString< TableFunction >( TableFunction const & tabl { tableData.addRow( coords[idx], values[idx] ); } - - TableLayout const tableLayout( { + TableLayout const tableLayout( filename, { string( units::getDescription( tableFunction.getDimUnit( 0 ))), string( units::getDescription( valueUnit )) - }, filename ); - + } ); TableTextFormatter const logTable( tableLayout ); logOutput = logTable.toString( tableData ); } @@ -358,17 +356,16 @@ string TableTextFormatter::toString< TableFunction >( TableFunction const & tabl units::getDescription( tableFunction.getDimUnit( 0 ) ), units::getDescription( tableFunction.getDimUnit( 1 ) )); - TableLayout tableLayout( tableConverted.headerNames, filename ); - + TableLayout const tableLayout( filename, tableConverted.headerNames ); TableTextFormatter const table2DLog( tableLayout ); logOutput = table2DLog.toString( tableConverted.tableData ); } else { - string log = GEOS_FMT( "The {} PVT table exceeding 500 rows.\nTo visualize the tables, go to the generated csv \n", filename ); - TableLayout const tableLayoutInfos( {TableLayout::ColumnParam{{log}, TableLayout::Alignment::left}}, filename ); + string const log = GEOS_FMT( "The {} PVT table exceeding 500 rows.\nTo visualize the tables, go to the generated csv", filename ); + TableLayout const tableLayoutInfos( filename, {log} ); TableTextFormatter const tableLog( tableLayoutInfos ); - logOutput = tableLog.layoutToString(); + logOutput = tableLog.toString(); } } return logOutput; diff --git a/src/coreComponents/functions/TableFunction.hpp b/src/coreComponents/functions/TableFunction.hpp index bd1fe75903a..b7be867d123 100644 --- a/src/coreComponents/functions/TableFunction.hpp +++ b/src/coreComponents/functions/TableFunction.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/functions/unitTests/testFunctions.cpp b/src/coreComponents/functions/unitTests/testFunctions.cpp index 33050f651ef..04ca26acca6 100644 --- a/src/coreComponents/functions/unitTests/testFunctions.cpp +++ b/src/coreComponents/functions/unitTests/testFunctions.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/linearAlgebra/CMakeLists.txt b/src/coreComponents/linearAlgebra/CMakeLists.txt index 0b62b22690a..9208438c9ba 100644 --- a/src/coreComponents/linearAlgebra/CMakeLists.txt +++ b/src/coreComponents/linearAlgebra/CMakeLists.txt @@ -1,7 +1,7 @@ # SPDX-License-Identifier: LGPL-2.1-only # # Copyright (c) 2016-2024 Lawrence Livermore National Security LLC -# Copyright (c) 2018-2024 Total, S.A +# Copyright (c) 2018-2024 TotalEnergies # Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University # Copyright (c) 2023-2024 Chevron # Copyright (c) 2019- GEOS/GEOSX Contributors @@ -128,6 +128,8 @@ if( ENABLE_HYPRE ) interfaces/hypre/mgrStrategies/HybridSinglePhasePoromechanics.hpp interfaces/hypre/mgrStrategies/Hydrofracture.hpp interfaces/hypre/mgrStrategies/LagrangianContactMechanics.hpp + interfaces/hypre/mgrStrategies/AugmentedLagrangianContactMechanics.hpp + interfaces/hypre/mgrStrategies/LagrangianContactMechanicsBubbleStabilization.hpp interfaces/hypre/mgrStrategies/MultiphasePoromechanics.hpp interfaces/hypre/mgrStrategies/SinglePhasePoromechanicsEmbeddedFractures.hpp interfaces/hypre/mgrStrategies/SinglePhasePoromechanicsConformingFractures.hpp diff --git a/src/coreComponents/linearAlgebra/DofManager.cpp b/src/coreComponents/linearAlgebra/DofManager.cpp index 173c9cc3e09..64af6fb82e3 100644 --- a/src/coreComponents/linearAlgebra/DofManager.cpp +++ b/src/coreComponents/linearAlgebra/DofManager.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/linearAlgebra/DofManager.hpp b/src/coreComponents/linearAlgebra/DofManager.hpp index 82fea749d25..c37dcc1a450 100644 --- a/src/coreComponents/linearAlgebra/DofManager.hpp +++ b/src/coreComponents/linearAlgebra/DofManager.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/linearAlgebra/DofManagerHelpers.hpp b/src/coreComponents/linearAlgebra/DofManagerHelpers.hpp index a1b700679d5..6ae81b10790 100644 --- a/src/coreComponents/linearAlgebra/DofManagerHelpers.hpp +++ b/src/coreComponents/linearAlgebra/DofManagerHelpers.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/linearAlgebra/common/LinearOperator.hpp b/src/coreComponents/linearAlgebra/common/LinearOperator.hpp index 59b2a31b677..57476c305bc 100644 --- a/src/coreComponents/linearAlgebra/common/LinearOperator.hpp +++ b/src/coreComponents/linearAlgebra/common/LinearOperator.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/linearAlgebra/common/LinearSolverBase.hpp b/src/coreComponents/linearAlgebra/common/LinearSolverBase.hpp index e1d881b75fc..045d096dfbc 100644 --- a/src/coreComponents/linearAlgebra/common/LinearSolverBase.hpp +++ b/src/coreComponents/linearAlgebra/common/LinearSolverBase.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/linearAlgebra/common/PreconditionerBase.hpp b/src/coreComponents/linearAlgebra/common/PreconditionerBase.hpp index f07d7c02850..ac9d0b022a9 100644 --- a/src/coreComponents/linearAlgebra/common/PreconditionerBase.hpp +++ b/src/coreComponents/linearAlgebra/common/PreconditionerBase.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/linearAlgebra/common/common.hpp b/src/coreComponents/linearAlgebra/common/common.hpp index 8619e89785e..54cd03337a7 100644 --- a/src/coreComponents/linearAlgebra/common/common.hpp +++ b/src/coreComponents/linearAlgebra/common/common.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/linearAlgebra/common/traits.hpp b/src/coreComponents/linearAlgebra/common/traits.hpp index 87e2af5f3c4..d300b7b782c 100644 --- a/src/coreComponents/linearAlgebra/common/traits.hpp +++ b/src/coreComponents/linearAlgebra/common/traits.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/linearAlgebra/docs/DofManager.rst b/src/coreComponents/linearAlgebra/docs/DofManager.rst index d13e2ee7c9c..6948b36f1ae 100644 --- a/src/coreComponents/linearAlgebra/docs/DofManager.rst +++ b/src/coreComponents/linearAlgebra/docs/DofManager.rst @@ -2,8 +2,6 @@ DoF Manager ############################################################################### -This will contains a description of the DoF manager in GEOS. - Brief description ======================== diff --git a/src/coreComponents/linearAlgebra/docs/LinearSolvers.rst b/src/coreComponents/linearAlgebra/docs/LinearSolvers.rst index b4b68dfc682..6f68efac64d 100644 --- a/src/coreComponents/linearAlgebra/docs/LinearSolvers.rst +++ b/src/coreComponents/linearAlgebra/docs/LinearSolvers.rst @@ -14,14 +14,14 @@ Any physics solver relying on standard finite element and finite volume techniqu \mathsf{A} \mathsf{x} = \mathsf{b} -with a :math:`\mathsf{A}` a square sparse matrix, :math:`\mathsf{x}` the solution vector, and :math:`\mathsf{b}` the right-hand side. +where :math:`\mathsf{A}` is the square sparse matrix, :math:`\mathsf{x}` the solution vector, and :math:`\mathsf{b}` the right-hand side. For example, in a classical linear elastostatics problem :math:`\mathsf{A}` is the stiffness matrix, and :math:`\mathsf{x}` and :math:`\mathsf{b}` are the displacement and nodal force vectors, respectively. This solution stage represents the most computationally expensive portion of a typical simulation. Solution algorithms generally belong to two families of methods: direct methods and iterative methods. In GEOS both options are made available wrapping around well-established open-source linear algebra libraries, namely -`HYPRE `__, +`HYPRE `__, `PETSc `__, `SuperLU `__, and `Trilinos `__. @@ -38,7 +38,7 @@ Irrespective of the selected direct solver implementation, three stages can be i (#) **Solve Stage**: the solution to the linear systems involving the factorized matrix is computed (#) **Finalize Stage**: the systems involving the factorized matrix have been solved and the direct solver lifetime ends -The default option in GEOS relies on `SuperLU `__, a general purpose library for the direct solution of large, sparse, nonsymmetric systems of linear equations, that is called taking advantage of the interface provided in `HYPRE `__. +The default option in GEOS relies on `SuperLU `__, a general purpose library for the direct solution of large, sparse, nonsymmetric systems of linear equations, that is called taking advantage of the interface provided in `HYPRE `__. ****************** Iterative methods @@ -110,8 +110,8 @@ This section provides a brief description of the available preconditioners. - `PETSc documentation `__, - `Trilinos documentation `__. -* **MGR**: multigrid reduction. Available through *hypre* interface only. Specific documentation coming soon. - Further details can be found in `MGR documentation `__. +* **MGR**: multigrid reduction. Available through *hypre* interface only. + Further details can be found in `MGR documentation `__, also see section below. * **Block**: custom preconditioner designed for a 2 x 2 block matrix. @@ -119,7 +119,7 @@ This section provides a brief description of the available preconditioners. HYPRE MGR Preconditioner ************************ -MGR stands for multigrid reduction, a multigrid method that uses the interpolation, restriction operators, and the Galerkin triple product, to reduce a linear system to a smaller one, similar to a Schur complement approach. As such, it is designed to target block linear systems resulting from discretizations of multiphysics problems. GEOS uses MGR through an implementation in `HYPRE `__. More information regarding MGR can be found `here `__. Currently, MGR strategies are implemented for hydraulic fracturing, poroelastic, compositional flow with and without wells. More multiphysics solvers with MGR will be enabled in the future. +MGR stands for multigrid reduction, a multigrid method that uses the interpolation, restriction operators, and the Galerkin triple product, to reduce a linear system to a smaller one, similar to a Schur complement approach. As such, it is designed to target block linear systems resulting from discretizations of multiphysics problems. GEOS uses MGR through an implementation in `HYPRE `__. More information regarding MGR can be found `here `__. Currently, MGR strategies are implemented for hydraulic fracturing, singlephase and multiphase poromechanics, singlephase poromechanics with fractures, compositional flow with and without wells. More multiphysics solvers with MGR will be enabled in the future. To use MGR for a specific block system, several components need to be specified. @@ -157,3 +157,16 @@ Moreover, a block scaling is available. Feasible options are: * none: keep the original scaling; * Frobenius norm: equilibrate Frobenius norm of the diagonal blocks; * user provided. + +******************** +Adaptive tolerance +******************** + +This feature is available for iterative solvers and can be enabled using `krylovAdaptiveTol` flag in `LinearSolverParameters`. It follows the Eisenstat-Walker inexact Newton approach described in [Eisenstat and Walker 1996]. The key idea is to relax the linear solver tolerance at the beginning of the nonlinear iterations loop and tighten it when getting closer to the final solution. The initial tolerance is defined by `krylovWeakestTol` and starting from second nonlinear iteration the tolerance is chosen using the following steps: + +- compute the current to previous nonlinear norm ratio: :math:`\mathsf{nr} = \mathsf{min}( \mathsf{norm}^{curr} / \mathsf{norm}^{prev}, 1.0 )` +- estimate the new linear solver tolerance: :math:`\mathsf{tol}_{new} = \mathsf{\gamma} \cdot \mathsf{nr}^{ax}` +- compute a safeguard to avoid too sharp tolerance reduction: :math:`\mathsf{tol}_{alt} = \mathsf{tol}_{old}^{2}` (the bound is the quadratic reduction with respect to the previous tolerance value) +- apply safeguards and compute the final tolerance: :math:`\mathsf{tol} = \mathsf{max}( \mathsf{tol}_{new}, \mathsf{tol}_{alt} )`, :math:`\mathsf{tol} = \mathsf{min}( \mathsf{tol}_{max}, \mathsf{max}( \mathsf{tol}_{min}, \mathsf{tol} ) )` + +Here :math:`\mathsf{\gamma}` is the forcing term, :math:`ax` is the adaptivity exponent, :math:`\mathsf{tol}_{min}` and :math:`\mathsf{tol}_{max}` are prescribed tolerance bounds (defined by `krylovStrongestTol` and `krylovWeakestTol`, respectively). diff --git a/src/coreComponents/linearAlgebra/interfaces/InterfaceTypes.hpp b/src/coreComponents/linearAlgebra/interfaces/InterfaceTypes.hpp index ab2821460dc..25098fc623b 100644 --- a/src/coreComponents/linearAlgebra/interfaces/InterfaceTypes.hpp +++ b/src/coreComponents/linearAlgebra/interfaces/InterfaceTypes.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/linearAlgebra/interfaces/MatrixBase.hpp b/src/coreComponents/linearAlgebra/interfaces/MatrixBase.hpp index f82018d393e..302e220b213 100644 --- a/src/coreComponents/linearAlgebra/interfaces/MatrixBase.hpp +++ b/src/coreComponents/linearAlgebra/interfaces/MatrixBase.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/linearAlgebra/interfaces/VectorBase.hpp b/src/coreComponents/linearAlgebra/interfaces/VectorBase.hpp index 5e9a30cd929..2efb0725fa0 100644 --- a/src/coreComponents/linearAlgebra/interfaces/VectorBase.hpp +++ b/src/coreComponents/linearAlgebra/interfaces/VectorBase.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/linearAlgebra/interfaces/direct/SuiteSparse.cpp b/src/coreComponents/linearAlgebra/interfaces/direct/SuiteSparse.cpp index 75c060fd30f..53a45e2ce7f 100644 --- a/src/coreComponents/linearAlgebra/interfaces/direct/SuiteSparse.cpp +++ b/src/coreComponents/linearAlgebra/interfaces/direct/SuiteSparse.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/linearAlgebra/interfaces/direct/SuiteSparse.hpp b/src/coreComponents/linearAlgebra/interfaces/direct/SuiteSparse.hpp index 38339ef0ab5..77534242052 100644 --- a/src/coreComponents/linearAlgebra/interfaces/direct/SuiteSparse.hpp +++ b/src/coreComponents/linearAlgebra/interfaces/direct/SuiteSparse.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/linearAlgebra/interfaces/direct/SuperLUDist.cpp b/src/coreComponents/linearAlgebra/interfaces/direct/SuperLUDist.cpp index de01e815ba3..e4c1bdaa8a0 100644 --- a/src/coreComponents/linearAlgebra/interfaces/direct/SuperLUDist.cpp +++ b/src/coreComponents/linearAlgebra/interfaces/direct/SuperLUDist.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/linearAlgebra/interfaces/direct/SuperLUDist.hpp b/src/coreComponents/linearAlgebra/interfaces/direct/SuperLUDist.hpp index c0aa351aab9..779ad77cee0 100644 --- a/src/coreComponents/linearAlgebra/interfaces/direct/SuperLUDist.hpp +++ b/src/coreComponents/linearAlgebra/interfaces/direct/SuperLUDist.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/linearAlgebra/interfaces/hypre/HypreExport.cpp b/src/coreComponents/linearAlgebra/interfaces/hypre/HypreExport.cpp index db21e94af02..9f8f33bc659 100644 --- a/src/coreComponents/linearAlgebra/interfaces/hypre/HypreExport.cpp +++ b/src/coreComponents/linearAlgebra/interfaces/hypre/HypreExport.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/linearAlgebra/interfaces/hypre/HypreExport.hpp b/src/coreComponents/linearAlgebra/interfaces/hypre/HypreExport.hpp index e1f4e711274..9db9201ab56 100644 --- a/src/coreComponents/linearAlgebra/interfaces/hypre/HypreExport.hpp +++ b/src/coreComponents/linearAlgebra/interfaces/hypre/HypreExport.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/linearAlgebra/interfaces/hypre/HypreInterface.cpp b/src/coreComponents/linearAlgebra/interfaces/hypre/HypreInterface.cpp index 70591e59973..783c2e6b483 100644 --- a/src/coreComponents/linearAlgebra/interfaces/hypre/HypreInterface.cpp +++ b/src/coreComponents/linearAlgebra/interfaces/hypre/HypreInterface.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/linearAlgebra/interfaces/hypre/HypreInterface.hpp b/src/coreComponents/linearAlgebra/interfaces/hypre/HypreInterface.hpp index 7ad3b790246..d6bdfd44d0a 100644 --- a/src/coreComponents/linearAlgebra/interfaces/hypre/HypreInterface.hpp +++ b/src/coreComponents/linearAlgebra/interfaces/hypre/HypreInterface.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/linearAlgebra/interfaces/hypre/HypreKernels.cpp b/src/coreComponents/linearAlgebra/interfaces/hypre/HypreKernels.cpp index 36a577c530a..31627dd91cb 100644 --- a/src/coreComponents/linearAlgebra/interfaces/hypre/HypreKernels.cpp +++ b/src/coreComponents/linearAlgebra/interfaces/hypre/HypreKernels.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/linearAlgebra/interfaces/hypre/HypreKernels.hpp b/src/coreComponents/linearAlgebra/interfaces/hypre/HypreKernels.hpp index 93eba297723..b71248aa0d5 100644 --- a/src/coreComponents/linearAlgebra/interfaces/hypre/HypreKernels.hpp +++ b/src/coreComponents/linearAlgebra/interfaces/hypre/HypreKernels.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/linearAlgebra/interfaces/hypre/HypreMGR.cpp b/src/coreComponents/linearAlgebra/interfaces/hypre/HypreMGR.cpp index 67de2ca96ae..5bfa3f08bf4 100644 --- a/src/coreComponents/linearAlgebra/interfaces/hypre/HypreMGR.cpp +++ b/src/coreComponents/linearAlgebra/interfaces/hypre/HypreMGR.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -20,6 +20,7 @@ #include "HypreMGR.hpp" +#include "linearAlgebra/interfaces/hypre/mgrStrategies/AugmentedLagrangianContactMechanics.hpp" #include "linearAlgebra/interfaces/hypre/mgrStrategies/CompositionalMultiphaseFVM.hpp" #include "linearAlgebra/interfaces/hypre/mgrStrategies/CompositionalMultiphaseHybridFVM.hpp" #include "linearAlgebra/interfaces/hypre/mgrStrategies/CompositionalMultiphaseReservoirFVM.hpp" @@ -27,6 +28,7 @@ #include "linearAlgebra/interfaces/hypre/mgrStrategies/HybridSinglePhasePoromechanics.hpp" #include "linearAlgebra/interfaces/hypre/mgrStrategies/Hydrofracture.hpp" #include "linearAlgebra/interfaces/hypre/mgrStrategies/LagrangianContactMechanics.hpp" +#include "linearAlgebra/interfaces/hypre/mgrStrategies/LagrangianContactMechanicsBubbleStabilization.hpp" #include "linearAlgebra/interfaces/hypre/mgrStrategies/MultiphasePoromechanics.hpp" #include "linearAlgebra/interfaces/hypre/mgrStrategies/MultiphasePoromechanicsReservoirFVM.hpp" #include "linearAlgebra/interfaces/hypre/mgrStrategies/ReactiveCompositionalMultiphaseOBL.hpp" @@ -133,11 +135,21 @@ void hypre::mgr::createMGR( LinearSolverParameters const & params, setStrategy< Hydrofracture >( params.mgr, numComponentsPerField, precond, mgrData ); break; } + case LinearSolverParameters::MGR::StrategyType::augmentedLagrangianContactMechanics: + { + setStrategy< AugmentedLagrangianContactMechanics >( params.mgr, numComponentsPerField, precond, mgrData ); + break; + } case LinearSolverParameters::MGR::StrategyType::lagrangianContactMechanics: { setStrategy< LagrangianContactMechanics >( params.mgr, numComponentsPerField, precond, mgrData ); break; } + case LinearSolverParameters::MGR::StrategyType::lagrangianContactMechanicsBubbleStab: + { + setStrategy< LagrangianContactMechanicsBubbleStabilization >( params.mgr, numComponentsPerField, precond, mgrData ); + break; + } case LinearSolverParameters::MGR::StrategyType::multiphasePoromechanics: { setStrategy< MultiphasePoromechanics >( params.mgr, numComponentsPerField, precond, mgrData ); diff --git a/src/coreComponents/linearAlgebra/interfaces/hypre/HypreMGR.hpp b/src/coreComponents/linearAlgebra/interfaces/hypre/HypreMGR.hpp index feca89dd6d0..c45bc4fe873 100644 --- a/src/coreComponents/linearAlgebra/interfaces/hypre/HypreMGR.hpp +++ b/src/coreComponents/linearAlgebra/interfaces/hypre/HypreMGR.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -269,6 +269,32 @@ class MGRStrategyBase setDisplacementAMG( mgrData.mechSolver, separateComponents ); HYPRE_MGRSetFSolver( precond.ptr, mgrData.mechSolver.solve, mgrData.mechSolver.setup, mgrData.mechSolver.ptr ); } + /** + * @brief + * + * @param solver + */ + void setILUCoarseSolver( HyprePrecWrapper & solver ) + { + /* (Required) Create ILU solver */ + HYPRE_ILUCreate( &solver.ptr ); + + /* (Recommended) General solver options */ + int const ilu_type = 0; /* 0, 1, 10, 11, 20, 21, 30, 31, 40, 41, 50 */ + int const max_iter = 1; + double const tol = 0.0; + int const reordering = 0; /* 0: none, 1: RCM */ + int const print_level = 0; + HYPRE_ILUSetType( solver.ptr, ilu_type ); + HYPRE_ILUSetMaxIter( solver.ptr, max_iter ); + HYPRE_ILUSetTol( solver.ptr, tol ); + HYPRE_ILUSetLocalReordering( solver.ptr, reordering ); + HYPRE_ILUSetPrintLevel( solver.ptr, print_level ); + + solver.setup = HYPRE_ILUSetup; + solver.solve = HYPRE_ILUSolve; + solver.destroy = HYPRE_ILUDestroy; + } }; diff --git a/src/coreComponents/linearAlgebra/interfaces/hypre/HypreMatrix.cpp b/src/coreComponents/linearAlgebra/interfaces/hypre/HypreMatrix.cpp index 0f94f9c1b51..5e68ad1887d 100644 --- a/src/coreComponents/linearAlgebra/interfaces/hypre/HypreMatrix.cpp +++ b/src/coreComponents/linearAlgebra/interfaces/hypre/HypreMatrix.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/linearAlgebra/interfaces/hypre/HypreMatrix.hpp b/src/coreComponents/linearAlgebra/interfaces/hypre/HypreMatrix.hpp index b44c3caca9a..c3dc2055bcc 100644 --- a/src/coreComponents/linearAlgebra/interfaces/hypre/HypreMatrix.hpp +++ b/src/coreComponents/linearAlgebra/interfaces/hypre/HypreMatrix.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/linearAlgebra/interfaces/hypre/HyprePreconditioner.cpp b/src/coreComponents/linearAlgebra/interfaces/hypre/HyprePreconditioner.cpp index 0d76b175eab..06d2a98981c 100644 --- a/src/coreComponents/linearAlgebra/interfaces/hypre/HyprePreconditioner.cpp +++ b/src/coreComponents/linearAlgebra/interfaces/hypre/HyprePreconditioner.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/linearAlgebra/interfaces/hypre/HyprePreconditioner.hpp b/src/coreComponents/linearAlgebra/interfaces/hypre/HyprePreconditioner.hpp index ee7382f8ae3..f26f15a636f 100644 --- a/src/coreComponents/linearAlgebra/interfaces/hypre/HyprePreconditioner.hpp +++ b/src/coreComponents/linearAlgebra/interfaces/hypre/HyprePreconditioner.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/linearAlgebra/interfaces/hypre/HypreSolver.cpp b/src/coreComponents/linearAlgebra/interfaces/hypre/HypreSolver.cpp index a3f87354ed6..35263458231 100644 --- a/src/coreComponents/linearAlgebra/interfaces/hypre/HypreSolver.cpp +++ b/src/coreComponents/linearAlgebra/interfaces/hypre/HypreSolver.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/linearAlgebra/interfaces/hypre/HypreSolver.hpp b/src/coreComponents/linearAlgebra/interfaces/hypre/HypreSolver.hpp index 7cc8c5b5738..42c4bde43e8 100644 --- a/src/coreComponents/linearAlgebra/interfaces/hypre/HypreSolver.hpp +++ b/src/coreComponents/linearAlgebra/interfaces/hypre/HypreSolver.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/linearAlgebra/interfaces/hypre/HypreUtils.cpp b/src/coreComponents/linearAlgebra/interfaces/hypre/HypreUtils.cpp index 5916fedbb4e..80a6ffba199 100644 --- a/src/coreComponents/linearAlgebra/interfaces/hypre/HypreUtils.cpp +++ b/src/coreComponents/linearAlgebra/interfaces/hypre/HypreUtils.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/linearAlgebra/interfaces/hypre/HypreUtils.hpp b/src/coreComponents/linearAlgebra/interfaces/hypre/HypreUtils.hpp index a309557dd81..47f901330f0 100644 --- a/src/coreComponents/linearAlgebra/interfaces/hypre/HypreUtils.hpp +++ b/src/coreComponents/linearAlgebra/interfaces/hypre/HypreUtils.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/linearAlgebra/interfaces/hypre/HypreVector.cpp b/src/coreComponents/linearAlgebra/interfaces/hypre/HypreVector.cpp index 7e9b7ecf5b3..5b6f7b30790 100644 --- a/src/coreComponents/linearAlgebra/interfaces/hypre/HypreVector.cpp +++ b/src/coreComponents/linearAlgebra/interfaces/hypre/HypreVector.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/linearAlgebra/interfaces/hypre/HypreVector.hpp b/src/coreComponents/linearAlgebra/interfaces/hypre/HypreVector.hpp index 086589275b4..771c1cfe30a 100644 --- a/src/coreComponents/linearAlgebra/interfaces/hypre/HypreVector.hpp +++ b/src/coreComponents/linearAlgebra/interfaces/hypre/HypreVector.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/linearAlgebra/interfaces/hypre/mgrStrategies/AugmentedLagrangianContactMechanics.hpp b/src/coreComponents/linearAlgebra/interfaces/hypre/mgrStrategies/AugmentedLagrangianContactMechanics.hpp new file mode 100644 index 00000000000..4f6186ca84c --- /dev/null +++ b/src/coreComponents/linearAlgebra/interfaces/hypre/mgrStrategies/AugmentedLagrangianContactMechanics.hpp @@ -0,0 +1,101 @@ +/* + * ------------------------------------------------------------------------------------------------------------ + * SPDX-License-Identifier: LGPL-2.1-only + * + * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC + * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University + * Copyright (c) 2023-2024 Chevron + * Copyright (c) 2019- GEOS/GEOSX Contributors + * All rights reserved + * + * See top level LICENSE, COPYRIGHT, CONTRIBUTORS, NOTICE, and ACKNOWLEDGEMENTS files for details. + * ------------------------------------------------------------------------------------------------------------ + */ + +/** + * @file AugmentedLagrangianContactMechanics.hpp + */ + +#ifndef GEOS_LINEARALGEBRA_INTERFACES_HYPREMGRALMCONTACTMECHANICS_HPP_ +#define GEOS_LINEARALGEBRA_INTERFACES_HYPREMGRALMCONTACTMECHANICS_HPP_ + +#include "linearAlgebra/interfaces/hypre/HypreMGR.hpp" + +namespace geos +{ + +namespace hypre +{ + +namespace mgr +{ + +/** + * @brief AugmentedLagrangianContactMechanics strategy + * + * Augmented Lagrangina contact mechanics with bubble functions + * + * dofLabel: 0 = displacement, x-component + * dofLabel: 1 = displacement, y-component + * dofLabel: 2 = displacement, z-component + * dofLabel: 3 = displacement bubble function, x-component + * dofLabel: 4 = displacement bubble function, y-component + * dofLabel: 5 = displacement bubble function, z-component + * + * Ingredients: + * 1. F-points w (3 - 4 - 5), C-points displacement (0 - 1 - 2) + * 2. F-points smoother: block Jacobi + * 3. C-points coarse-grid/Schur complement solver: boomer AMG + * 4. Global smoother: none + * + */ +class AugmentedLagrangianContactMechanics : public MGRStrategyBase< 1 > +{ +public: + + /** + * @brief Constructor. + */ + explicit AugmentedLagrangianContactMechanics( arrayView1d< int const > const & ) + : MGRStrategyBase( 6 ) + { + // Level 0: we keep all three displacement + m_labels[0] = { 0, 1, 2 }; + + setupLabels(); + + // Level 0 + m_levelFRelaxType[0] = MGRFRelaxationType::l1jacobi; + m_levelFRelaxIters[0] = 1; + m_levelInterpType[0] = MGRInterpolationType::blockJacobi; + m_levelRestrictType[0] = MGRRestrictionType::injection; + m_levelCoarseGridMethod[0] = MGRCoarseGridMethod::galerkin; + m_levelGlobalSmootherType[0] = MGRGlobalSmootherType::none; + } + + /** + * @brief Setup the MGR strategy. + * @param mgrParams MGR configuration parameters + * @param precond preconditioner wrapper + * @param mgrData auxiliary MGR data + */ + void setup( LinearSolverParameters::MGR const & mgrParams, + HyprePrecWrapper & precond, + HypreMGRData & mgrData ) + { + setReduction( precond, mgrData ); + + // Configure the BoomerAMG solver used as mgr coarse solver for the displacement reduced system + // (note that no separate displacement component approach is used here) + setDisplacementAMG( mgrData.coarseSolver, mgrParams.separateComponents ); + } +}; + +} // namespace mgr + +} // namespace hypre + +} // namespace geos + +#endif /*GEOS_LINEARALGEBRA_INTERFACES_HYPREMGRALMCONTACTMECHANICS_HPP_*/ diff --git a/src/coreComponents/linearAlgebra/interfaces/hypre/mgrStrategies/CompositionalMultiphaseFVM.hpp b/src/coreComponents/linearAlgebra/interfaces/hypre/mgrStrategies/CompositionalMultiphaseFVM.hpp index fc54f4bd24d..e496997a70c 100644 --- a/src/coreComponents/linearAlgebra/interfaces/hypre/mgrStrategies/CompositionalMultiphaseFVM.hpp +++ b/src/coreComponents/linearAlgebra/interfaces/hypre/mgrStrategies/CompositionalMultiphaseFVM.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/linearAlgebra/interfaces/hypre/mgrStrategies/CompositionalMultiphaseHybridFVM.hpp b/src/coreComponents/linearAlgebra/interfaces/hypre/mgrStrategies/CompositionalMultiphaseHybridFVM.hpp index 897d3e1b9d4..5f1b8a87f98 100644 --- a/src/coreComponents/linearAlgebra/interfaces/hypre/mgrStrategies/CompositionalMultiphaseHybridFVM.hpp +++ b/src/coreComponents/linearAlgebra/interfaces/hypre/mgrStrategies/CompositionalMultiphaseHybridFVM.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/linearAlgebra/interfaces/hypre/mgrStrategies/CompositionalMultiphaseReservoirFVM.hpp b/src/coreComponents/linearAlgebra/interfaces/hypre/mgrStrategies/CompositionalMultiphaseReservoirFVM.hpp index 709b9422f92..1042906b43e 100644 --- a/src/coreComponents/linearAlgebra/interfaces/hypre/mgrStrategies/CompositionalMultiphaseReservoirFVM.hpp +++ b/src/coreComponents/linearAlgebra/interfaces/hypre/mgrStrategies/CompositionalMultiphaseReservoirFVM.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/linearAlgebra/interfaces/hypre/mgrStrategies/CompositionalMultiphaseReservoirHybridFVM.hpp b/src/coreComponents/linearAlgebra/interfaces/hypre/mgrStrategies/CompositionalMultiphaseReservoirHybridFVM.hpp index 0498e304a56..8fcf6d3b189 100644 --- a/src/coreComponents/linearAlgebra/interfaces/hypre/mgrStrategies/CompositionalMultiphaseReservoirHybridFVM.hpp +++ b/src/coreComponents/linearAlgebra/interfaces/hypre/mgrStrategies/CompositionalMultiphaseReservoirHybridFVM.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/linearAlgebra/interfaces/hypre/mgrStrategies/HybridSinglePhasePoromechanics.hpp b/src/coreComponents/linearAlgebra/interfaces/hypre/mgrStrategies/HybridSinglePhasePoromechanics.hpp index 687be08785a..1b595cb0cee 100644 --- a/src/coreComponents/linearAlgebra/interfaces/hypre/mgrStrategies/HybridSinglePhasePoromechanics.hpp +++ b/src/coreComponents/linearAlgebra/interfaces/hypre/mgrStrategies/HybridSinglePhasePoromechanics.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/linearAlgebra/interfaces/hypre/mgrStrategies/Hydrofracture.hpp b/src/coreComponents/linearAlgebra/interfaces/hypre/mgrStrategies/Hydrofracture.hpp index 6983d364a89..3555d7d824e 100644 --- a/src/coreComponents/linearAlgebra/interfaces/hypre/mgrStrategies/Hydrofracture.hpp +++ b/src/coreComponents/linearAlgebra/interfaces/hypre/mgrStrategies/Hydrofracture.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/linearAlgebra/interfaces/hypre/mgrStrategies/LagrangianContactMechanics.hpp b/src/coreComponents/linearAlgebra/interfaces/hypre/mgrStrategies/LagrangianContactMechanics.hpp index 68dd3e5c837..40d9d565a9e 100644 --- a/src/coreComponents/linearAlgebra/interfaces/hypre/mgrStrategies/LagrangianContactMechanics.hpp +++ b/src/coreComponents/linearAlgebra/interfaces/hypre/mgrStrategies/LagrangianContactMechanics.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/linearAlgebra/interfaces/hypre/mgrStrategies/LagrangianContactMechanicsBubbleStabilization.hpp b/src/coreComponents/linearAlgebra/interfaces/hypre/mgrStrategies/LagrangianContactMechanicsBubbleStabilization.hpp new file mode 100644 index 00000000000..157137b8a8a --- /dev/null +++ b/src/coreComponents/linearAlgebra/interfaces/hypre/mgrStrategies/LagrangianContactMechanicsBubbleStabilization.hpp @@ -0,0 +1,119 @@ +/* + * ------------------------------------------------------------------------------------------------------------ + * SPDX-License-Identifier: LGPL-2.1-only + * + * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC + * Copyright (c) 2018-2024 TotalEnergies + * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University + * Copyright (c) 2023-2024 Chevron + * Copyright (c) 2019- GEOS/GEOSX Contributors + * All rights reserved + * + * See top level LICENSE, COPYRIGHT, CONTRIBUTORS, NOTICE, and ACKNOWLEDGEMENTS files for details. + * ------------------------------------------------------------------------------------------------------------ + */ + +/** + * @file LagrangianContactMechanicsBubbleStabilization.hpp + */ + +#ifndef GEOS_LINEARALGEBRA_INTERFACES_HYPREMGRLAGRANGIACONTACTMECHANICSBUBBLESTAB_HPP_ +#define GEOS_LINEARALGEBRA_INTERFACES_HYPREMGRLAGRANGIACONTACTMECHANICSBUBBLESTAB_HPP_ + +#include "linearAlgebra/interfaces/hypre/HypreMGR.hpp" + +namespace geos +{ + +namespace hypre +{ + +namespace mgr +{ + +/** + * @brief LagrangianContactMechanicsBubbleStabilization strategy + * + * Contact mechanics with face-centered lagrangian multipliers + * + * dofLabel: 0 = displacement, x-component + * dofLabel: 1 = displacement, y-component + * dofLabel: 2 = displacement, z-component + * dofLabel: 3 = displacement bubble function, x-component + * dofLabel: 4 = displacement bubble function, y-component + * dofLabel: 5 = displacement bubble function, z-component + * dofLabel: 6 = face-centered lagrange multiplier (tn) + * dofLabel: 7 = face-centered lagrange multiplier (tt1) + * dofLabel: 8 = face-centered lagrange multiplier (tt2) + * + * 2-level MGR strategy: + * Level 0: + * 1. F-points: bubbles (3,4,5), C-points: displacements + multipliers (0,1,2,6,7,8) + * 2. F-points smoother: l1jacobi + * 3. Global smoother: none + * Level 1: + * 1. F-points: multipliers (6,7,8), C-points: displacements (0,1,2) + * 2. F-points smoother: l1jacobi + * 3. Global smoother: none + * + * C-points coarse-grid/Schur complement solver: boomer AMG + + */ +class LagrangianContactMechanicsBubbleStabilization : public MGRStrategyBase< 2 > +{ +public: + + /** + * @brief Constructor. + */ + explicit LagrangianContactMechanicsBubbleStabilization( arrayView1d< int const > const & ) + : MGRStrategyBase( 9 ) + { + // Level 0: we keep all three displacements and the Lagrange Multipliers + m_labels[0] = { 0, 1, 2, 6, 7, 8 }; + // Level 1: we keep all three displacements + m_labels[1] = { 0, 1, 2 }; + + setupLabels(); + + // Level 0 + m_levelFRelaxType[0] = MGRFRelaxationType::l1jacobi; + m_levelFRelaxIters[0] = 1; + m_levelInterpType[0] = MGRInterpolationType::blockJacobi; + m_levelRestrictType[0] = MGRRestrictionType::injection; + m_levelCoarseGridMethod[0] = MGRCoarseGridMethod::galerkin; + m_levelGlobalSmootherType[0] = MGRGlobalSmootherType::none; + + // Level 1 + m_levelFRelaxType[1] = MGRFRelaxationType::l1jacobi; + m_levelFRelaxIters[1] = 1; + m_levelInterpType[1] = MGRInterpolationType::blockJacobi; + m_levelRestrictType[1] = MGRRestrictionType::injection; + m_levelCoarseGridMethod[1] = MGRCoarseGridMethod::galerkin; + m_levelGlobalSmootherType[1] = MGRGlobalSmootherType::none; + } + + /** + * @brief Setup the MGR strategy. + * @param mgrParams MGR configuration parameters + * @param precond preconditioner wrapper + * @param mgrData auxiliary MGR data + */ + void setup( LinearSolverParameters::MGR const & mgrParams, + HyprePrecWrapper & precond, + HypreMGRData & mgrData ) + { + setReduction( precond, mgrData ); + + // Configure the BoomerAMG solver used as mgr coarse solver for the displacement reduced system + setDisplacementAMG( mgrData.coarseSolver, mgrParams.separateComponents ); + } +}; + +} // namespace mgr + +} // namespace hypre + +} // namespace geos + +#endif /*GEOS_LINEARALGEBRA_INTERFACES_HYPREMGRLAGRANGIACONTACTMECHANICSBUBBLESTAB_HPP_*/ diff --git a/src/coreComponents/linearAlgebra/interfaces/hypre/mgrStrategies/MultiphasePoromechanics.hpp b/src/coreComponents/linearAlgebra/interfaces/hypre/mgrStrategies/MultiphasePoromechanics.hpp index cfeca18d3f1..90c0d3d3d05 100644 --- a/src/coreComponents/linearAlgebra/interfaces/hypre/mgrStrategies/MultiphasePoromechanics.hpp +++ b/src/coreComponents/linearAlgebra/interfaces/hypre/mgrStrategies/MultiphasePoromechanics.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/linearAlgebra/interfaces/hypre/mgrStrategies/MultiphasePoromechanicsReservoirFVM.hpp b/src/coreComponents/linearAlgebra/interfaces/hypre/mgrStrategies/MultiphasePoromechanicsReservoirFVM.hpp index 18293db1f12..97c91e28979 100644 --- a/src/coreComponents/linearAlgebra/interfaces/hypre/mgrStrategies/MultiphasePoromechanicsReservoirFVM.hpp +++ b/src/coreComponents/linearAlgebra/interfaces/hypre/mgrStrategies/MultiphasePoromechanicsReservoirFVM.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/linearAlgebra/interfaces/hypre/mgrStrategies/ReactiveCompositionalMultiphaseOBL.hpp b/src/coreComponents/linearAlgebra/interfaces/hypre/mgrStrategies/ReactiveCompositionalMultiphaseOBL.hpp index 2285670a5b9..ee2561ad491 100644 --- a/src/coreComponents/linearAlgebra/interfaces/hypre/mgrStrategies/ReactiveCompositionalMultiphaseOBL.hpp +++ b/src/coreComponents/linearAlgebra/interfaces/hypre/mgrStrategies/ReactiveCompositionalMultiphaseOBL.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/linearAlgebra/interfaces/hypre/mgrStrategies/SinglePhaseHybridFVM.hpp b/src/coreComponents/linearAlgebra/interfaces/hypre/mgrStrategies/SinglePhaseHybridFVM.hpp index a0f4a101049..b7c9c5dc78e 100644 --- a/src/coreComponents/linearAlgebra/interfaces/hypre/mgrStrategies/SinglePhaseHybridFVM.hpp +++ b/src/coreComponents/linearAlgebra/interfaces/hypre/mgrStrategies/SinglePhaseHybridFVM.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/linearAlgebra/interfaces/hypre/mgrStrategies/SinglePhasePoromechanics.hpp b/src/coreComponents/linearAlgebra/interfaces/hypre/mgrStrategies/SinglePhasePoromechanics.hpp index da9b9b8e2d8..47fc589406b 100644 --- a/src/coreComponents/linearAlgebra/interfaces/hypre/mgrStrategies/SinglePhasePoromechanics.hpp +++ b/src/coreComponents/linearAlgebra/interfaces/hypre/mgrStrategies/SinglePhasePoromechanics.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/linearAlgebra/interfaces/hypre/mgrStrategies/SinglePhasePoromechanicsConformingFractures.hpp b/src/coreComponents/linearAlgebra/interfaces/hypre/mgrStrategies/SinglePhasePoromechanicsConformingFractures.hpp index e3b2dbb37d1..ad7c37179a0 100644 --- a/src/coreComponents/linearAlgebra/interfaces/hypre/mgrStrategies/SinglePhasePoromechanicsConformingFractures.hpp +++ b/src/coreComponents/linearAlgebra/interfaces/hypre/mgrStrategies/SinglePhasePoromechanicsConformingFractures.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/linearAlgebra/interfaces/hypre/mgrStrategies/SinglePhasePoromechanicsEmbeddedFractures.hpp b/src/coreComponents/linearAlgebra/interfaces/hypre/mgrStrategies/SinglePhasePoromechanicsEmbeddedFractures.hpp index 26383837143..8546b24fcef 100644 --- a/src/coreComponents/linearAlgebra/interfaces/hypre/mgrStrategies/SinglePhasePoromechanicsEmbeddedFractures.hpp +++ b/src/coreComponents/linearAlgebra/interfaces/hypre/mgrStrategies/SinglePhasePoromechanicsEmbeddedFractures.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/linearAlgebra/interfaces/hypre/mgrStrategies/SinglePhasePoromechanicsReservoirFVM.hpp b/src/coreComponents/linearAlgebra/interfaces/hypre/mgrStrategies/SinglePhasePoromechanicsReservoirFVM.hpp index 88be6a13d9b..a3f5b05918f 100644 --- a/src/coreComponents/linearAlgebra/interfaces/hypre/mgrStrategies/SinglePhasePoromechanicsReservoirFVM.hpp +++ b/src/coreComponents/linearAlgebra/interfaces/hypre/mgrStrategies/SinglePhasePoromechanicsReservoirFVM.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/linearAlgebra/interfaces/hypre/mgrStrategies/SinglePhaseReservoirFVM.hpp b/src/coreComponents/linearAlgebra/interfaces/hypre/mgrStrategies/SinglePhaseReservoirFVM.hpp index a2f1bb749b7..39f4d796889 100644 --- a/src/coreComponents/linearAlgebra/interfaces/hypre/mgrStrategies/SinglePhaseReservoirFVM.hpp +++ b/src/coreComponents/linearAlgebra/interfaces/hypre/mgrStrategies/SinglePhaseReservoirFVM.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/linearAlgebra/interfaces/hypre/mgrStrategies/SinglePhaseReservoirHybridFVM.hpp b/src/coreComponents/linearAlgebra/interfaces/hypre/mgrStrategies/SinglePhaseReservoirHybridFVM.hpp index b86937c3ba4..fcb2c664e49 100644 --- a/src/coreComponents/linearAlgebra/interfaces/hypre/mgrStrategies/SinglePhaseReservoirHybridFVM.hpp +++ b/src/coreComponents/linearAlgebra/interfaces/hypre/mgrStrategies/SinglePhaseReservoirHybridFVM.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/linearAlgebra/interfaces/hypre/mgrStrategies/SolidMechanicsEmbeddedFractures.hpp b/src/coreComponents/linearAlgebra/interfaces/hypre/mgrStrategies/SolidMechanicsEmbeddedFractures.hpp index 52324cc6ba1..83cee477b41 100644 --- a/src/coreComponents/linearAlgebra/interfaces/hypre/mgrStrategies/SolidMechanicsEmbeddedFractures.hpp +++ b/src/coreComponents/linearAlgebra/interfaces/hypre/mgrStrategies/SolidMechanicsEmbeddedFractures.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/linearAlgebra/interfaces/hypre/mgrStrategies/ThermalCompositionalMultiphaseFVM.hpp b/src/coreComponents/linearAlgebra/interfaces/hypre/mgrStrategies/ThermalCompositionalMultiphaseFVM.hpp index f88dffdf738..08800ab2d64 100644 --- a/src/coreComponents/linearAlgebra/interfaces/hypre/mgrStrategies/ThermalCompositionalMultiphaseFVM.hpp +++ b/src/coreComponents/linearAlgebra/interfaces/hypre/mgrStrategies/ThermalCompositionalMultiphaseFVM.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/linearAlgebra/interfaces/hypre/mgrStrategies/ThermalCompositionalMultiphaseReservoirFVM.hpp b/src/coreComponents/linearAlgebra/interfaces/hypre/mgrStrategies/ThermalCompositionalMultiphaseReservoirFVM.hpp index 81702aa2f8b..09b5b832035 100644 --- a/src/coreComponents/linearAlgebra/interfaces/hypre/mgrStrategies/ThermalCompositionalMultiphaseReservoirFVM.hpp +++ b/src/coreComponents/linearAlgebra/interfaces/hypre/mgrStrategies/ThermalCompositionalMultiphaseReservoirFVM.hpp @@ -2,10 +2,11 @@ * ------------------------------------------------------------------------------------------------------------ * SPDX-License-Identifier: LGPL-2.1-only * - * Copyright (c) 2018-2020 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2020 The Board of Trustees of the Leland Stanford Junior University - * Copyright (c) 2018-2020 TotalEnergies - * Copyright (c) 2019- GEOSX Contributors + * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC + * Copyright (c) 2018-2024 TotalEnergies + * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University + * Copyright (c) 2023-2024 Chevron + * Copyright (c) 2019- GEOS/GEOSX Contributors * All rights reserved * * See top level LICENSE, COPYRIGHT, CONTRIBUTORS, NOTICE, and ACKNOWLEDGEMENTS files for details. diff --git a/src/coreComponents/linearAlgebra/interfaces/hypre/mgrStrategies/ThermalMultiphasePoromechanics.hpp b/src/coreComponents/linearAlgebra/interfaces/hypre/mgrStrategies/ThermalMultiphasePoromechanics.hpp index 1abf2f77d94..a276456ee32 100644 --- a/src/coreComponents/linearAlgebra/interfaces/hypre/mgrStrategies/ThermalMultiphasePoromechanics.hpp +++ b/src/coreComponents/linearAlgebra/interfaces/hypre/mgrStrategies/ThermalMultiphasePoromechanics.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/linearAlgebra/interfaces/hypre/mgrStrategies/ThermalSinglePhasePoromechanics.hpp b/src/coreComponents/linearAlgebra/interfaces/hypre/mgrStrategies/ThermalSinglePhasePoromechanics.hpp index d14919e57ee..bd0aa80d5da 100644 --- a/src/coreComponents/linearAlgebra/interfaces/hypre/mgrStrategies/ThermalSinglePhasePoromechanics.hpp +++ b/src/coreComponents/linearAlgebra/interfaces/hypre/mgrStrategies/ThermalSinglePhasePoromechanics.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/linearAlgebra/interfaces/petsc/PetscExport.cpp b/src/coreComponents/linearAlgebra/interfaces/petsc/PetscExport.cpp index d6e9091dc27..a4e3361252c 100644 --- a/src/coreComponents/linearAlgebra/interfaces/petsc/PetscExport.cpp +++ b/src/coreComponents/linearAlgebra/interfaces/petsc/PetscExport.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/linearAlgebra/interfaces/petsc/PetscExport.hpp b/src/coreComponents/linearAlgebra/interfaces/petsc/PetscExport.hpp index 34dd1a6919a..e32eab2ab40 100644 --- a/src/coreComponents/linearAlgebra/interfaces/petsc/PetscExport.hpp +++ b/src/coreComponents/linearAlgebra/interfaces/petsc/PetscExport.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/linearAlgebra/interfaces/petsc/PetscInterface.cpp b/src/coreComponents/linearAlgebra/interfaces/petsc/PetscInterface.cpp index 81334efeda6..bb404c744eb 100644 --- a/src/coreComponents/linearAlgebra/interfaces/petsc/PetscInterface.cpp +++ b/src/coreComponents/linearAlgebra/interfaces/petsc/PetscInterface.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/linearAlgebra/interfaces/petsc/PetscInterface.hpp b/src/coreComponents/linearAlgebra/interfaces/petsc/PetscInterface.hpp index 0a9fa8021f8..d49caa38cee 100644 --- a/src/coreComponents/linearAlgebra/interfaces/petsc/PetscInterface.hpp +++ b/src/coreComponents/linearAlgebra/interfaces/petsc/PetscInterface.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/linearAlgebra/interfaces/petsc/PetscMatrix.cpp b/src/coreComponents/linearAlgebra/interfaces/petsc/PetscMatrix.cpp index a3a49238d04..1ddf73808e2 100644 --- a/src/coreComponents/linearAlgebra/interfaces/petsc/PetscMatrix.cpp +++ b/src/coreComponents/linearAlgebra/interfaces/petsc/PetscMatrix.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/linearAlgebra/interfaces/petsc/PetscMatrix.hpp b/src/coreComponents/linearAlgebra/interfaces/petsc/PetscMatrix.hpp index ea8ab63286a..8c1666d4c42 100644 --- a/src/coreComponents/linearAlgebra/interfaces/petsc/PetscMatrix.hpp +++ b/src/coreComponents/linearAlgebra/interfaces/petsc/PetscMatrix.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/linearAlgebra/interfaces/petsc/PetscPreconditioner.cpp b/src/coreComponents/linearAlgebra/interfaces/petsc/PetscPreconditioner.cpp index 0083c360aa0..822bf336aae 100644 --- a/src/coreComponents/linearAlgebra/interfaces/petsc/PetscPreconditioner.cpp +++ b/src/coreComponents/linearAlgebra/interfaces/petsc/PetscPreconditioner.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/linearAlgebra/interfaces/petsc/PetscPreconditioner.hpp b/src/coreComponents/linearAlgebra/interfaces/petsc/PetscPreconditioner.hpp index d291dfffd1f..ac4a9891247 100644 --- a/src/coreComponents/linearAlgebra/interfaces/petsc/PetscPreconditioner.hpp +++ b/src/coreComponents/linearAlgebra/interfaces/petsc/PetscPreconditioner.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/linearAlgebra/interfaces/petsc/PetscSolver.cpp b/src/coreComponents/linearAlgebra/interfaces/petsc/PetscSolver.cpp index 026e047d811..1470cd2e4a9 100644 --- a/src/coreComponents/linearAlgebra/interfaces/petsc/PetscSolver.cpp +++ b/src/coreComponents/linearAlgebra/interfaces/petsc/PetscSolver.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/linearAlgebra/interfaces/petsc/PetscSolver.hpp b/src/coreComponents/linearAlgebra/interfaces/petsc/PetscSolver.hpp index 9f036afd0df..4264573bda3 100644 --- a/src/coreComponents/linearAlgebra/interfaces/petsc/PetscSolver.hpp +++ b/src/coreComponents/linearAlgebra/interfaces/petsc/PetscSolver.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/linearAlgebra/interfaces/petsc/PetscUtils.hpp b/src/coreComponents/linearAlgebra/interfaces/petsc/PetscUtils.hpp index b97e623d911..94002ab46bb 100644 --- a/src/coreComponents/linearAlgebra/interfaces/petsc/PetscUtils.hpp +++ b/src/coreComponents/linearAlgebra/interfaces/petsc/PetscUtils.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/linearAlgebra/interfaces/petsc/PetscVector.cpp b/src/coreComponents/linearAlgebra/interfaces/petsc/PetscVector.cpp index 9e923c7245a..5e2106127bf 100644 --- a/src/coreComponents/linearAlgebra/interfaces/petsc/PetscVector.cpp +++ b/src/coreComponents/linearAlgebra/interfaces/petsc/PetscVector.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/linearAlgebra/interfaces/petsc/PetscVector.hpp b/src/coreComponents/linearAlgebra/interfaces/petsc/PetscVector.hpp index 77e06e73242..16a325323ff 100644 --- a/src/coreComponents/linearAlgebra/interfaces/petsc/PetscVector.hpp +++ b/src/coreComponents/linearAlgebra/interfaces/petsc/PetscVector.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/linearAlgebra/interfaces/trilinos/EpetraExport.cpp b/src/coreComponents/linearAlgebra/interfaces/trilinos/EpetraExport.cpp index bb48bc8433d..30537c0764e 100644 --- a/src/coreComponents/linearAlgebra/interfaces/trilinos/EpetraExport.cpp +++ b/src/coreComponents/linearAlgebra/interfaces/trilinos/EpetraExport.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/linearAlgebra/interfaces/trilinos/EpetraExport.hpp b/src/coreComponents/linearAlgebra/interfaces/trilinos/EpetraExport.hpp index 5d2b440b953..51e055152bc 100644 --- a/src/coreComponents/linearAlgebra/interfaces/trilinos/EpetraExport.hpp +++ b/src/coreComponents/linearAlgebra/interfaces/trilinos/EpetraExport.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/linearAlgebra/interfaces/trilinos/EpetraMatrix.cpp b/src/coreComponents/linearAlgebra/interfaces/trilinos/EpetraMatrix.cpp index d6da38b3639..4b92501c57a 100644 --- a/src/coreComponents/linearAlgebra/interfaces/trilinos/EpetraMatrix.cpp +++ b/src/coreComponents/linearAlgebra/interfaces/trilinos/EpetraMatrix.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/linearAlgebra/interfaces/trilinos/EpetraMatrix.hpp b/src/coreComponents/linearAlgebra/interfaces/trilinos/EpetraMatrix.hpp index 8866ab1f312..501e5d03916 100644 --- a/src/coreComponents/linearAlgebra/interfaces/trilinos/EpetraMatrix.hpp +++ b/src/coreComponents/linearAlgebra/interfaces/trilinos/EpetraMatrix.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/linearAlgebra/interfaces/trilinos/EpetraUtils.hpp b/src/coreComponents/linearAlgebra/interfaces/trilinos/EpetraUtils.hpp index 1d6900dab4a..7ca7495574d 100644 --- a/src/coreComponents/linearAlgebra/interfaces/trilinos/EpetraUtils.hpp +++ b/src/coreComponents/linearAlgebra/interfaces/trilinos/EpetraUtils.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/linearAlgebra/interfaces/trilinos/EpetraVector.cpp b/src/coreComponents/linearAlgebra/interfaces/trilinos/EpetraVector.cpp index 78df1acee35..a9285597103 100644 --- a/src/coreComponents/linearAlgebra/interfaces/trilinos/EpetraVector.cpp +++ b/src/coreComponents/linearAlgebra/interfaces/trilinos/EpetraVector.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/linearAlgebra/interfaces/trilinos/EpetraVector.hpp b/src/coreComponents/linearAlgebra/interfaces/trilinos/EpetraVector.hpp index 6605102fa53..0d1b394a005 100644 --- a/src/coreComponents/linearAlgebra/interfaces/trilinos/EpetraVector.hpp +++ b/src/coreComponents/linearAlgebra/interfaces/trilinos/EpetraVector.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/linearAlgebra/interfaces/trilinos/TrilinosInterface.cpp b/src/coreComponents/linearAlgebra/interfaces/trilinos/TrilinosInterface.cpp index 2a3b7bd2b8b..39c5883876f 100644 --- a/src/coreComponents/linearAlgebra/interfaces/trilinos/TrilinosInterface.cpp +++ b/src/coreComponents/linearAlgebra/interfaces/trilinos/TrilinosInterface.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/linearAlgebra/interfaces/trilinos/TrilinosInterface.hpp b/src/coreComponents/linearAlgebra/interfaces/trilinos/TrilinosInterface.hpp index 4a63c4ce138..6c3a2a06925 100644 --- a/src/coreComponents/linearAlgebra/interfaces/trilinos/TrilinosInterface.hpp +++ b/src/coreComponents/linearAlgebra/interfaces/trilinos/TrilinosInterface.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/linearAlgebra/interfaces/trilinos/TrilinosPreconditioner.cpp b/src/coreComponents/linearAlgebra/interfaces/trilinos/TrilinosPreconditioner.cpp index a49a8b03f88..1f2bfb02faf 100644 --- a/src/coreComponents/linearAlgebra/interfaces/trilinos/TrilinosPreconditioner.cpp +++ b/src/coreComponents/linearAlgebra/interfaces/trilinos/TrilinosPreconditioner.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/linearAlgebra/interfaces/trilinos/TrilinosPreconditioner.hpp b/src/coreComponents/linearAlgebra/interfaces/trilinos/TrilinosPreconditioner.hpp index 9db8a0c50dc..2efdf01b192 100644 --- a/src/coreComponents/linearAlgebra/interfaces/trilinos/TrilinosPreconditioner.hpp +++ b/src/coreComponents/linearAlgebra/interfaces/trilinos/TrilinosPreconditioner.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/linearAlgebra/interfaces/trilinos/TrilinosSolver.cpp b/src/coreComponents/linearAlgebra/interfaces/trilinos/TrilinosSolver.cpp index df8fed1921a..e6dec1a5082 100644 --- a/src/coreComponents/linearAlgebra/interfaces/trilinos/TrilinosSolver.cpp +++ b/src/coreComponents/linearAlgebra/interfaces/trilinos/TrilinosSolver.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/linearAlgebra/interfaces/trilinos/TrilinosSolver.hpp b/src/coreComponents/linearAlgebra/interfaces/trilinos/TrilinosSolver.hpp index 8e73c1c37e0..a8f6b78cb0b 100644 --- a/src/coreComponents/linearAlgebra/interfaces/trilinos/TrilinosSolver.hpp +++ b/src/coreComponents/linearAlgebra/interfaces/trilinos/TrilinosSolver.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/linearAlgebra/solvers/BicgstabSolver.cpp b/src/coreComponents/linearAlgebra/solvers/BicgstabSolver.cpp index 089ebfceb50..e8e486916d8 100644 --- a/src/coreComponents/linearAlgebra/solvers/BicgstabSolver.cpp +++ b/src/coreComponents/linearAlgebra/solvers/BicgstabSolver.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/linearAlgebra/solvers/BicgstabSolver.hpp b/src/coreComponents/linearAlgebra/solvers/BicgstabSolver.hpp index 82602e2942d..41400be9b27 100644 --- a/src/coreComponents/linearAlgebra/solvers/BicgstabSolver.hpp +++ b/src/coreComponents/linearAlgebra/solvers/BicgstabSolver.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/linearAlgebra/solvers/BlockPreconditioner.cpp b/src/coreComponents/linearAlgebra/solvers/BlockPreconditioner.cpp index 4e708f936a9..4cbbbace185 100644 --- a/src/coreComponents/linearAlgebra/solvers/BlockPreconditioner.cpp +++ b/src/coreComponents/linearAlgebra/solvers/BlockPreconditioner.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/linearAlgebra/solvers/BlockPreconditioner.hpp b/src/coreComponents/linearAlgebra/solvers/BlockPreconditioner.hpp index 390d7549d32..d7648406aa0 100644 --- a/src/coreComponents/linearAlgebra/solvers/BlockPreconditioner.hpp +++ b/src/coreComponents/linearAlgebra/solvers/BlockPreconditioner.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/linearAlgebra/solvers/CgSolver.cpp b/src/coreComponents/linearAlgebra/solvers/CgSolver.cpp index dfb58db5a9d..ca80ddb1c5a 100644 --- a/src/coreComponents/linearAlgebra/solvers/CgSolver.cpp +++ b/src/coreComponents/linearAlgebra/solvers/CgSolver.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/linearAlgebra/solvers/CgSolver.hpp b/src/coreComponents/linearAlgebra/solvers/CgSolver.hpp index 28d36c7dce1..bc88229735d 100644 --- a/src/coreComponents/linearAlgebra/solvers/CgSolver.hpp +++ b/src/coreComponents/linearAlgebra/solvers/CgSolver.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/linearAlgebra/solvers/GmresSolver.cpp b/src/coreComponents/linearAlgebra/solvers/GmresSolver.cpp index 5c1e7eb1bc9..f2b801c5d04 100644 --- a/src/coreComponents/linearAlgebra/solvers/GmresSolver.cpp +++ b/src/coreComponents/linearAlgebra/solvers/GmresSolver.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/linearAlgebra/solvers/GmresSolver.hpp b/src/coreComponents/linearAlgebra/solvers/GmresSolver.hpp index 4b11df1b441..1f41810c7d5 100644 --- a/src/coreComponents/linearAlgebra/solvers/GmresSolver.hpp +++ b/src/coreComponents/linearAlgebra/solvers/GmresSolver.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/linearAlgebra/solvers/KrylovSolver.cpp b/src/coreComponents/linearAlgebra/solvers/KrylovSolver.cpp index 25dfbbae30b..c2c7eb4d59d 100644 --- a/src/coreComponents/linearAlgebra/solvers/KrylovSolver.cpp +++ b/src/coreComponents/linearAlgebra/solvers/KrylovSolver.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/linearAlgebra/solvers/KrylovSolver.hpp b/src/coreComponents/linearAlgebra/solvers/KrylovSolver.hpp index 8f0381c391e..44856621892 100644 --- a/src/coreComponents/linearAlgebra/solvers/KrylovSolver.hpp +++ b/src/coreComponents/linearAlgebra/solvers/KrylovSolver.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/linearAlgebra/solvers/KrylovUtils.hpp b/src/coreComponents/linearAlgebra/solvers/KrylovUtils.hpp index 5a65b48670a..3b69ee74b54 100644 --- a/src/coreComponents/linearAlgebra/solvers/KrylovUtils.hpp +++ b/src/coreComponents/linearAlgebra/solvers/KrylovUtils.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/linearAlgebra/solvers/PreconditionerBlockJacobi.hpp b/src/coreComponents/linearAlgebra/solvers/PreconditionerBlockJacobi.hpp index 6685ba45be2..7fe79b244a4 100644 --- a/src/coreComponents/linearAlgebra/solvers/PreconditionerBlockJacobi.hpp +++ b/src/coreComponents/linearAlgebra/solvers/PreconditionerBlockJacobi.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/linearAlgebra/solvers/PreconditionerIdentity.hpp b/src/coreComponents/linearAlgebra/solvers/PreconditionerIdentity.hpp index 006b9bfa413..696a8ab481d 100644 --- a/src/coreComponents/linearAlgebra/solvers/PreconditionerIdentity.hpp +++ b/src/coreComponents/linearAlgebra/solvers/PreconditionerIdentity.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/linearAlgebra/solvers/PreconditionerJacobi.hpp b/src/coreComponents/linearAlgebra/solvers/PreconditionerJacobi.hpp index fcd4f0490f1..e5034cd57e6 100644 --- a/src/coreComponents/linearAlgebra/solvers/PreconditionerJacobi.hpp +++ b/src/coreComponents/linearAlgebra/solvers/PreconditionerJacobi.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/linearAlgebra/solvers/SeparateComponentPreconditioner.cpp b/src/coreComponents/linearAlgebra/solvers/SeparateComponentPreconditioner.cpp index 735c44ec3ce..0c27b3b5291 100644 --- a/src/coreComponents/linearAlgebra/solvers/SeparateComponentPreconditioner.cpp +++ b/src/coreComponents/linearAlgebra/solvers/SeparateComponentPreconditioner.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/linearAlgebra/solvers/SeparateComponentPreconditioner.hpp b/src/coreComponents/linearAlgebra/solvers/SeparateComponentPreconditioner.hpp index 4c65ef51894..d2b3b6e19a2 100644 --- a/src/coreComponents/linearAlgebra/solvers/SeparateComponentPreconditioner.hpp +++ b/src/coreComponents/linearAlgebra/solvers/SeparateComponentPreconditioner.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/linearAlgebra/unitTests/testComponentMask.cpp b/src/coreComponents/linearAlgebra/unitTests/testComponentMask.cpp index c5fe76ede5b..23aef693db0 100644 --- a/src/coreComponents/linearAlgebra/unitTests/testComponentMask.cpp +++ b/src/coreComponents/linearAlgebra/unitTests/testComponentMask.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/linearAlgebra/unitTests/testExternalSolvers.cpp b/src/coreComponents/linearAlgebra/unitTests/testExternalSolvers.cpp index 7c8cebb3627..d9ed3a881dc 100644 --- a/src/coreComponents/linearAlgebra/unitTests/testExternalSolvers.cpp +++ b/src/coreComponents/linearAlgebra/unitTests/testExternalSolvers.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/linearAlgebra/unitTests/testKrylovSolvers.cpp b/src/coreComponents/linearAlgebra/unitTests/testKrylovSolvers.cpp index f3d59a84963..898cfa63f41 100644 --- a/src/coreComponents/linearAlgebra/unitTests/testKrylovSolvers.cpp +++ b/src/coreComponents/linearAlgebra/unitTests/testKrylovSolvers.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/linearAlgebra/unitTests/testLinearAlgebraUtils.hpp b/src/coreComponents/linearAlgebra/unitTests/testLinearAlgebraUtils.hpp index b230f7a8394..19cd2754d33 100644 --- a/src/coreComponents/linearAlgebra/unitTests/testLinearAlgebraUtils.hpp +++ b/src/coreComponents/linearAlgebra/unitTests/testLinearAlgebraUtils.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/linearAlgebra/unitTests/testLinearSolverParametersEnums.cpp b/src/coreComponents/linearAlgebra/unitTests/testLinearSolverParametersEnums.cpp index 5194fab06bd..689188e9bfd 100644 --- a/src/coreComponents/linearAlgebra/unitTests/testLinearSolverParametersEnums.cpp +++ b/src/coreComponents/linearAlgebra/unitTests/testLinearSolverParametersEnums.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/linearAlgebra/unitTests/testMatrices.cpp b/src/coreComponents/linearAlgebra/unitTests/testMatrices.cpp index e5219b37bd9..baadb01ce9f 100644 --- a/src/coreComponents/linearAlgebra/unitTests/testMatrices.cpp +++ b/src/coreComponents/linearAlgebra/unitTests/testMatrices.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/linearAlgebra/unitTests/testReverseCutHillMcKeeOrdering.cpp b/src/coreComponents/linearAlgebra/unitTests/testReverseCutHillMcKeeOrdering.cpp index 9e5890f9899..88db5cb59dc 100644 --- a/src/coreComponents/linearAlgebra/unitTests/testReverseCutHillMcKeeOrdering.cpp +++ b/src/coreComponents/linearAlgebra/unitTests/testReverseCutHillMcKeeOrdering.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/linearAlgebra/unitTests/testVectors.cpp b/src/coreComponents/linearAlgebra/unitTests/testVectors.cpp index a90bb2ecb97..927f818b3ba 100644 --- a/src/coreComponents/linearAlgebra/unitTests/testVectors.cpp +++ b/src/coreComponents/linearAlgebra/unitTests/testVectors.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/linearAlgebra/utilities/Arnoldi.hpp b/src/coreComponents/linearAlgebra/utilities/Arnoldi.hpp index cd9b427ba65..d399b278b2d 100644 --- a/src/coreComponents/linearAlgebra/utilities/Arnoldi.hpp +++ b/src/coreComponents/linearAlgebra/utilities/Arnoldi.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/linearAlgebra/utilities/BlockOperator.hpp b/src/coreComponents/linearAlgebra/utilities/BlockOperator.hpp index 8b49577ce63..f25068efeb4 100644 --- a/src/coreComponents/linearAlgebra/utilities/BlockOperator.hpp +++ b/src/coreComponents/linearAlgebra/utilities/BlockOperator.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/linearAlgebra/utilities/BlockOperatorView.hpp b/src/coreComponents/linearAlgebra/utilities/BlockOperatorView.hpp index 26daf4818c4..a7da7ca9a79 100644 --- a/src/coreComponents/linearAlgebra/utilities/BlockOperatorView.hpp +++ b/src/coreComponents/linearAlgebra/utilities/BlockOperatorView.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/linearAlgebra/utilities/BlockOperatorWrapper.hpp b/src/coreComponents/linearAlgebra/utilities/BlockOperatorWrapper.hpp index b0ac936e2bf..4cab49d47e6 100644 --- a/src/coreComponents/linearAlgebra/utilities/BlockOperatorWrapper.hpp +++ b/src/coreComponents/linearAlgebra/utilities/BlockOperatorWrapper.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/linearAlgebra/utilities/BlockVector.hpp b/src/coreComponents/linearAlgebra/utilities/BlockVector.hpp index ea78c17e96d..c71e0a59c8c 100644 --- a/src/coreComponents/linearAlgebra/utilities/BlockVector.hpp +++ b/src/coreComponents/linearAlgebra/utilities/BlockVector.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/linearAlgebra/utilities/BlockVectorView.hpp b/src/coreComponents/linearAlgebra/utilities/BlockVectorView.hpp index bfedf07dc24..626744a796b 100644 --- a/src/coreComponents/linearAlgebra/utilities/BlockVectorView.hpp +++ b/src/coreComponents/linearAlgebra/utilities/BlockVectorView.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/linearAlgebra/utilities/BlockVectorWrapper.hpp b/src/coreComponents/linearAlgebra/utilities/BlockVectorWrapper.hpp index d1dcbddb107..b1a7f1ab603 100644 --- a/src/coreComponents/linearAlgebra/utilities/BlockVectorWrapper.hpp +++ b/src/coreComponents/linearAlgebra/utilities/BlockVectorWrapper.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/linearAlgebra/utilities/ComponentMask.hpp b/src/coreComponents/linearAlgebra/utilities/ComponentMask.hpp index 7d7a0b019ad..a27d1a37a64 100644 --- a/src/coreComponents/linearAlgebra/utilities/ComponentMask.hpp +++ b/src/coreComponents/linearAlgebra/utilities/ComponentMask.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/linearAlgebra/utilities/InverseNormalOperator.hpp b/src/coreComponents/linearAlgebra/utilities/InverseNormalOperator.hpp index f5f70510185..977135fb419 100644 --- a/src/coreComponents/linearAlgebra/utilities/InverseNormalOperator.hpp +++ b/src/coreComponents/linearAlgebra/utilities/InverseNormalOperator.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/linearAlgebra/utilities/LAIHelperFunctions.hpp b/src/coreComponents/linearAlgebra/utilities/LAIHelperFunctions.hpp index 477e5485c7f..6a06e310583 100644 --- a/src/coreComponents/linearAlgebra/utilities/LAIHelperFunctions.hpp +++ b/src/coreComponents/linearAlgebra/utilities/LAIHelperFunctions.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/linearAlgebra/utilities/LinearSolverParameters.hpp b/src/coreComponents/linearAlgebra/utilities/LinearSolverParameters.hpp index cd0aecfc572..f46d85a57cd 100644 --- a/src/coreComponents/linearAlgebra/utilities/LinearSolverParameters.hpp +++ b/src/coreComponents/linearAlgebra/utilities/LinearSolverParameters.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -295,6 +295,8 @@ struct LinearSolverParameters thermalMultiphasePoromechanics, ///< thermal multiphase poromechanics with finite volume compositional multiphase flow hydrofracture, ///< hydrofracture lagrangianContactMechanics, ///< Lagrangian contact mechanics + augmentedLagrangianContactMechanics, ///< Augmented Lagrangian contact mechanics + lagrangianContactMechanicsBubbleStab, ///< Lagrangian contact mechanics with bubble stabilization solidMechanicsEmbeddedFractures ///< Embedded fractures mechanics }; @@ -387,6 +389,8 @@ ENUM_STRINGS( LinearSolverParameters::MGR::StrategyType, "thermalMultiphasePoromechanics", "hydrofracture", "lagrangianContactMechanics", + "augmentedLagrangianContactMechanics", + "lagrangianContactMechanicsBubbleStab", "solidMechanicsEmbeddedFractures" ); /// Declare strings associated with enumeration values. diff --git a/src/coreComponents/linearAlgebra/utilities/LinearSolverResult.hpp b/src/coreComponents/linearAlgebra/utilities/LinearSolverResult.hpp index 90d6365f229..3a12e612a79 100644 --- a/src/coreComponents/linearAlgebra/utilities/LinearSolverResult.hpp +++ b/src/coreComponents/linearAlgebra/utilities/LinearSolverResult.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/linearAlgebra/utilities/NormalOperator.hpp b/src/coreComponents/linearAlgebra/utilities/NormalOperator.hpp index 466808c0170..2382af2e0c2 100644 --- a/src/coreComponents/linearAlgebra/utilities/NormalOperator.hpp +++ b/src/coreComponents/linearAlgebra/utilities/NormalOperator.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/linearAlgebra/utilities/ReverseCutHillMcKeeOrdering.cpp b/src/coreComponents/linearAlgebra/utilities/ReverseCutHillMcKeeOrdering.cpp index 4631d42f70e..8716ee585e9 100644 --- a/src/coreComponents/linearAlgebra/utilities/ReverseCutHillMcKeeOrdering.cpp +++ b/src/coreComponents/linearAlgebra/utilities/ReverseCutHillMcKeeOrdering.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/linearAlgebra/utilities/ReverseCutHillMcKeeOrdering.hpp b/src/coreComponents/linearAlgebra/utilities/ReverseCutHillMcKeeOrdering.hpp index bed455a783f..01b8479b964 100644 --- a/src/coreComponents/linearAlgebra/utilities/ReverseCutHillMcKeeOrdering.hpp +++ b/src/coreComponents/linearAlgebra/utilities/ReverseCutHillMcKeeOrdering.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/linearAlgebra/utilities/TransposeOperator.hpp b/src/coreComponents/linearAlgebra/utilities/TransposeOperator.hpp index cd623bddf78..18d1ed2c35a 100644 --- a/src/coreComponents/linearAlgebra/utilities/TransposeOperator.hpp +++ b/src/coreComponents/linearAlgebra/utilities/TransposeOperator.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/mainInterface/CMakeLists.txt b/src/coreComponents/mainInterface/CMakeLists.txt index 1e21b437bc0..a7b02f95041 100644 --- a/src/coreComponents/mainInterface/CMakeLists.txt +++ b/src/coreComponents/mainInterface/CMakeLists.txt @@ -1,7 +1,7 @@ # SPDX-License-Identifier: LGPL-2.1-only # # Copyright (c) 2016-2024 Lawrence Livermore National Security LLC -# Copyright (c) 2018-2024 Total, S.A +# Copyright (c) 2018-2024 TotalEnergies # Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University # Copyright (c) 2023-2024 Chevron # Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/mainInterface/GeosxState.cpp b/src/coreComponents/mainInterface/GeosxState.cpp index 8aceec88991..12cb2baf62a 100644 --- a/src/coreComponents/mainInterface/GeosxState.cpp +++ b/src/coreComponents/mainInterface/GeosxState.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/mainInterface/GeosxState.hpp b/src/coreComponents/mainInterface/GeosxState.hpp index 888bef6d7dd..43d44de6674 100644 --- a/src/coreComponents/mainInterface/GeosxState.hpp +++ b/src/coreComponents/mainInterface/GeosxState.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/mainInterface/GeosxVersion.hpp.in b/src/coreComponents/mainInterface/GeosxVersion.hpp.in index 4d523fbf5b8..57e801ba7f0 100644 --- a/src/coreComponents/mainInterface/GeosxVersion.hpp.in +++ b/src/coreComponents/mainInterface/GeosxVersion.hpp.in @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/mainInterface/ProblemManager.cpp b/src/coreComponents/mainInterface/ProblemManager.cpp index 7e811191bb4..890f550c752 100644 --- a/src/coreComponents/mainInterface/ProblemManager.cpp +++ b/src/coreComponents/mainInterface/ProblemManager.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -39,6 +39,7 @@ #include "fileIO/Outputs/OutputBase.hpp" #include "fileIO/Outputs/OutputManager.hpp" #include "functions/FunctionManager.hpp" +#include "mesh/ExternalDataSourceManager.hpp" #include "mesh/DomainPartition.hpp" #include "mesh/MeshBody.hpp" #include "mesh/MeshManager.hpp" @@ -73,6 +74,8 @@ ProblemManager::ProblemManager( conduit::Node & root ): setInputFlags( InputFlags::PROBLEM_ROOT ); + registerGroup< ExternalDataSourceManager >( groupKeys.externalDataSourceManager ); + m_fieldSpecificationManager = ®isterGroup< FieldSpecificationManager >( groupKeys.fieldSpecificationManager ); m_eventManager = ®isterGroup< EventManager >( groupKeys.eventManager ); @@ -156,7 +159,10 @@ ProblemManager::~ProblemManager() Group * ProblemManager::createChild( string const & GEOS_UNUSED_PARAM( childKey ), string const & GEOS_UNUSED_PARAM( childName ) ) -{ return nullptr; } +{ + // Unused as all children are created within the constructor + return nullptr; +} void ProblemManager::problemSetup() @@ -452,52 +458,44 @@ void ProblemManager::parseXMLDocument( xmlWrapper::xmlDocument & xmlDocument ) meshManager.generateMeshLevels( domain ); Group & meshBodies = domain.getMeshBodies(); - // Parse element regions - xmlWrapper::xmlNode elementRegionsNode = xmlProblemNode.child( MeshLevel::groupStructKeys::elemManagerString() ); - - for( xmlWrapper::xmlNode regionNode : elementRegionsNode.children() ) + auto parseRegions = [&]( string_view regionManagerKey, bool const hasParticles ) { - string const regionName = regionNode.attribute( "name" ).value(); - try + xmlWrapper::xmlNode regionsNode = xmlProblemNode.child( regionManagerKey.data() ); + xmlWrapper::xmlNodePos regionsNodePos = xmlDocument.getNodePosition( regionsNode ); + std::set< string > regionNames; + + for( xmlWrapper::xmlNode regionNode : regionsNode.children() ) { - string const - regionMeshBodyName = ElementRegionBase::verifyMeshBodyName( meshBodies, - regionNode.attribute( "meshBody" ).value() ); + auto const regionNodePos = xmlDocument.getNodePosition( regionNode ); + string const regionName = Group::processInputName( regionNode, regionNodePos, + regionsNode.name(), regionsNodePos, regionNames ); + try + { + string const regionMeshBodyName = + ElementRegionBase::verifyMeshBodyName( meshBodies, + regionNode.attribute( "meshBody" ).value() ); - MeshBody & meshBody = domain.getMeshBody( regionMeshBodyName ); - meshBody.forMeshLevels( [&]( MeshLevel & meshLevel ) + MeshBody & meshBody = domain.getMeshBody( regionMeshBodyName ); + meshBody.setHasParticles( hasParticles ); + meshBody.forMeshLevels( [&]( MeshLevel & meshLevel ) + { + ObjectManagerBase & elementManager = hasParticles ? + static_cast< ObjectManagerBase & >( meshLevel.getParticleManager() ): + static_cast< ObjectManagerBase & >( meshLevel.getElemManager() ); + Group * newRegion = elementManager.createChild( regionNode.name(), regionName ); + newRegion->processInputFileRecursive( xmlDocument, regionNode ); + } ); + } + catch( InputError const & e ) { - ElementRegionManager & elementManager = meshLevel.getElemManager(); - Group * newRegion = elementManager.createChild( regionNode.name(), regionName ); - newRegion->processInputFileRecursive( xmlDocument, regionNode ); - } ); - } - catch( InputError const & e ) - { - string const nodePosString = xmlDocument.getNodePosition( regionNode ).toString(); - throw InputError( e, "Error while parsing region " + regionName + " (" + nodePosString + "):\n" ); + throw InputError( e, GEOS_FMT( "Error while parsing region {} ({}):\n", + regionName, regionNodePos.toString() ) ); + } } - } + }; - // Parse particle regions - xmlWrapper::xmlNode particleRegionsNode = xmlProblemNode.child( MeshLevel::groupStructKeys::particleManagerString() ); - - for( xmlWrapper::xmlNode regionNode : particleRegionsNode.children() ) - { - string const regionName = regionNode.attribute( "name" ).value(); - string const - regionMeshBodyName = ElementRegionBase::verifyMeshBodyName( meshBodies, - regionNode.attribute( "meshBody" ).value() ); - - MeshBody & meshBody = domain.getMeshBody( regionMeshBodyName ); - meshBody.setHasParticles( true ); - meshBody.forMeshLevels( [&]( MeshLevel & meshLevel ) - { - ParticleManager & particleManager = meshLevel.getParticleManager(); - Group * newRegion = particleManager.createChild( regionNode.name(), regionName ); - newRegion->processInputFileRecursive( xmlDocument, regionNode ); - } ); - } + parseRegions( MeshLevel::groupStructKeys::elemManagerString(), false ); + parseRegions( MeshLevel::groupStructKeys::particleManagerString(), true ); } } diff --git a/src/coreComponents/mainInterface/ProblemManager.hpp b/src/coreComponents/mainInterface/ProblemManager.hpp index 7787b31bffd..8ff875005d2 100644 --- a/src/coreComponents/mainInterface/ProblemManager.hpp +++ b/src/coreComponents/mainInterface/ProblemManager.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -243,6 +243,7 @@ class ProblemManager : public dataRepository::Group dataRepository::GroupKey constitutiveManager = { "Constitutive" }; ///< Constitutive key dataRepository::GroupKey domain = { "domain" }; ///< Domain key dataRepository::GroupKey eventManager = { "Events" }; ///< Events key + dataRepository::GroupKey externalDataSourceManager = { "ExternalDataSource" }; ///< External Data Source key dataRepository::GroupKey fieldSpecificationManager = { "FieldSpecifications" }; ///< Field specification key dataRepository::GroupKey functionManager = { "Functions" }; ///< Functions key dataRepository::GroupKey geometricObjectManager = { "Geometry" }; ///< Geometry key diff --git a/src/coreComponents/mainInterface/initialization.cpp b/src/coreComponents/mainInterface/initialization.cpp index 71388045b03..c33da0c59a7 100644 --- a/src/coreComponents/mainInterface/initialization.cpp +++ b/src/coreComponents/mainInterface/initialization.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/mainInterface/initialization.hpp b/src/coreComponents/mainInterface/initialization.hpp index 8f8eb32ad24..85cd4331066 100644 --- a/src/coreComponents/mainInterface/initialization.hpp +++ b/src/coreComponents/mainInterface/initialization.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/mainInterface/version.cpp b/src/coreComponents/mainInterface/version.cpp index e478d0cf1fd..0ed60fc6b18 100644 --- a/src/coreComponents/mainInterface/version.cpp +++ b/src/coreComponents/mainInterface/version.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/mainInterface/version.hpp b/src/coreComponents/mainInterface/version.hpp index 4187c7d032b..8d4847c9497 100644 --- a/src/coreComponents/mainInterface/version.hpp +++ b/src/coreComponents/mainInterface/version.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/math/CMakeLists.txt b/src/coreComponents/math/CMakeLists.txt index 1afa1d60688..9af283583e3 100644 --- a/src/coreComponents/math/CMakeLists.txt +++ b/src/coreComponents/math/CMakeLists.txt @@ -1,7 +1,7 @@ # SPDX-License-Identifier: LGPL-2.1-only # # Copyright (c) 2016-2024 Lawrence Livermore National Security LLC -# Copyright (c) 2018-2024 Total, S.A +# Copyright (c) 2018-2024 TotalEnergies # Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University # Copyright (c) 2023-2024 Chevron # Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/math/extrapolation/Extrapolation.hpp b/src/coreComponents/math/extrapolation/Extrapolation.hpp index fe79a94913e..9df48fdefb8 100644 --- a/src/coreComponents/math/extrapolation/Extrapolation.hpp +++ b/src/coreComponents/math/extrapolation/Extrapolation.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/math/interpolation/Interpolation.hpp b/src/coreComponents/math/interpolation/Interpolation.hpp index 5a20e9ec7a9..1b72fe943bb 100644 --- a/src/coreComponents/math/interpolation/Interpolation.hpp +++ b/src/coreComponents/math/interpolation/Interpolation.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/mesh/BufferOps.cpp b/src/coreComponents/mesh/BufferOps.cpp index 7225ad52847..408e11839a7 100644 --- a/src/coreComponents/mesh/BufferOps.cpp +++ b/src/coreComponents/mesh/BufferOps.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/mesh/BufferOps.hpp b/src/coreComponents/mesh/BufferOps.hpp index 1d18096a120..ef6b926ac8d 100644 --- a/src/coreComponents/mesh/BufferOps.hpp +++ b/src/coreComponents/mesh/BufferOps.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/mesh/CMakeLists.txt b/src/coreComponents/mesh/CMakeLists.txt index d9a9e24b6b5..05f09e22dc8 100644 --- a/src/coreComponents/mesh/CMakeLists.txt +++ b/src/coreComponents/mesh/CMakeLists.txt @@ -1,7 +1,7 @@ # SPDX-License-Identifier: LGPL-2.1-only # # Copyright (c) 2016-2024 Lawrence Livermore National Security LLC -# Copyright (c) 2018-2024 Total, S.A +# Copyright (c) 2018-2024 TotalEnergies # Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University # Copyright (c) 2023-2024 Chevron # Copyright (c) 2019- GEOS/GEOSX Contributors @@ -35,6 +35,8 @@ set( mesh_headers ElementRegionManager.hpp ElementSubRegionBase.hpp ElementType.hpp + ExternalDataSourceBase.hpp + ExternalDataSourceManager.hpp EmbeddedSurfaceNodeManager.hpp EmbeddedSurfaceSubRegion.hpp MeshFields.hpp @@ -80,12 +82,13 @@ set( mesh_headers generators/InternalMeshGenerator.hpp generators/InternalWellGenerator.hpp generators/InternalWellboreGenerator.hpp + generators/MeshComponentBase.hpp generators/MeshGeneratorBase.hpp generators/ParMETISInterface.hpp generators/ParticleMeshGenerator.hpp generators/PartitionDescriptor.hpp generators/PrismUtilities.hpp - generators/WellGeneratorABC.hpp + generators/Region.hpp generators/WellGeneratorBase.hpp mpiCommunications/CommID.hpp mpiCommunications/CommunicationTools.hpp @@ -124,6 +127,8 @@ set( mesh_sources ElementSubRegionBase.cpp EmbeddedSurfaceNodeManager.cpp EmbeddedSurfaceSubRegion.cpp + ExternalDataSourceBase.cpp + ExternalDataSourceManager.cpp FaceElementSubRegion.cpp FaceManager.cpp MeshBody.cpp @@ -156,9 +161,11 @@ set( mesh_sources generators/InternalMeshGenerator.cpp generators/InternalWellGenerator.cpp generators/InternalWellboreGenerator.cpp + generators/MeshComponentBase.cpp generators/MeshGeneratorBase.cpp generators/ParMETISInterface.cpp generators/ParticleMeshGenerator.cpp + generators/Region.cpp generators/WellGeneratorBase.cpp mpiCommunications/CommID.cpp mpiCommunications/CommunicationTools.cpp @@ -184,6 +191,7 @@ if( ENABLE_VTK ) set( mesh_headers ${mesh_headers} generators/CollocatedNodes.hpp generators/VTKFaceBlockUtilities.hpp + generators/VTKHierarchicalDataSource.hpp generators/VTKMeshGenerator.hpp generators/VTKMeshGeneratorTools.hpp generators/VTKWellGenerator.hpp @@ -192,6 +200,7 @@ if( ENABLE_VTK ) set( mesh_sources ${mesh_sources} generators/CollocatedNodes.cpp generators/VTKFaceBlockUtilities.cpp + generators/VTKHierarchicalDataSource.cpp generators/VTKMeshGenerator.cpp generators/VTKMeshGeneratorTools.cpp generators/VTKWellGenerator.cpp diff --git a/src/coreComponents/mesh/CellElementRegion.cpp b/src/coreComponents/mesh/CellElementRegion.cpp index da3aabb63b3..4207cdefdca 100644 --- a/src/coreComponents/mesh/CellElementRegion.cpp +++ b/src/coreComponents/mesh/CellElementRegion.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/mesh/CellElementRegion.hpp b/src/coreComponents/mesh/CellElementRegion.hpp index e2156ceb805..95d9d978de8 100644 --- a/src/coreComponents/mesh/CellElementRegion.hpp +++ b/src/coreComponents/mesh/CellElementRegion.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/mesh/CellElementRegionSelector.cpp b/src/coreComponents/mesh/CellElementRegionSelector.cpp index 80047d71c79..f6106a88a2e 100644 --- a/src/coreComponents/mesh/CellElementRegionSelector.cpp +++ b/src/coreComponents/mesh/CellElementRegionSelector.cpp @@ -2,10 +2,11 @@ * ------------------------------------------------------------------------------------------------------------ * SPDX-License-Identifier: LGPL-2.1-only * - * Copyright (c) 2018-2020 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2020 The Board of Trustees of the Leland Stanford Junior University - * Copyright (c) 2018-2020 TotalEnergies - * Copyright (c) 2019- GEOSX Contributors + * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC + * Copyright (c) 2018-2024 TotalEnergies + * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University + * Copyright (c) 2023-2024 Chevron + * Copyright (c) 2019- GEOS/GEOSX Contributors * All rights reserved * * See top level LICENSE, COPYRIGHT, CONTRIBUTORS, NOTICE, and ACKNOWLEDGEMENTS files for details. @@ -66,10 +67,10 @@ CellElementRegionSelector::getMatchingCellblocks( CellElementRegion const & regi "Available cellBlock list: {{ {} }}\nAvailable region attribute list: {{ {} }}", region.getWrapperDataContext( ViewKeys::sourceCellBlockNamesString() ), matchPattern, - stringutilities::joinLamda( m_regionAttributesOwners, ", ", - []( auto pair ) { return pair->first; } ), - stringutilities::joinLamda( m_cellBlocksOwners, ", ", - []( auto pair ) { return pair->first; } ) ), + stringutilities::joinLambda( m_regionAttributesOwners, ", ", + []( auto pair ) { return pair->first; } ), + stringutilities::joinLambda( m_cellBlocksOwners, ", ", + []( auto pair ) { return pair->first; } ) ), InputError ); return matchedCellBlocks; } @@ -85,8 +86,8 @@ CellElementRegionSelector::verifyRequestedCellBlocks( CellElementRegion const & GEOS_FMT( "{}: No cellBlock named '{}'.\nAvailable cellBlock list: {{ {} }}", region.getWrapperDataContext( ViewKeys::sourceCellBlockNamesString() ), requestedCellBlockName, - stringutilities::joinLamda( m_cellBlocksOwners, ", ", - []( auto pair ) { return pair->first; } ) ), + stringutilities::joinLambda( m_cellBlocksOwners, ", ", + []( auto pair ) { return pair->first; } ) ), InputError ); } } @@ -161,7 +162,7 @@ void CellElementRegionSelector::checkSelectionConsistency() const multipleRefsErrors.push_back( GEOS_FMT( "The {} '{}' has been referenced in multiple {}:\n{}", qualifierType, qualifier, CellElementRegion::catalogName(), - stringutilities::joinLamda( owningRegions, '\n', getRegionStr ) ) ); + stringutilities::joinLambda( owningRegions, '\n', getRegionStr ) ) ); } } GEOS_THROW_IF( !multipleRefsErrors.empty(), stringutilities::join( multipleRefsErrors, "\n\n" ), InputError ); diff --git a/src/coreComponents/mesh/CellElementRegionSelector.hpp b/src/coreComponents/mesh/CellElementRegionSelector.hpp index 962f99aca1b..d3d1c6a840d 100644 --- a/src/coreComponents/mesh/CellElementRegionSelector.hpp +++ b/src/coreComponents/mesh/CellElementRegionSelector.hpp @@ -2,10 +2,11 @@ * ------------------------------------------------------------------------------------------------------------ * SPDX-License-Identifier: LGPL-2.1-only * - * Copyright (c) 2018-2020 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2020 The Board of Trustees of the Leland Stanford Junior University - * Copyright (c) 2018-2020 TotalEnergies - * Copyright (c) 2019- GEOSX Contributors + * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC + * Copyright (c) 2018-2024 TotalEnergies + * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University + * Copyright (c) 2023-2024 Chevron + * Copyright (c) 2019- GEOS/GEOSX Contributors * All rights reserved * * See top level LICENSE, COPYRIGHT, CONTRIBUTORS, NOTICE, and ACKNOWLEDGEMENTS files for details. diff --git a/src/coreComponents/mesh/CellElementSubRegion.cpp b/src/coreComponents/mesh/CellElementSubRegion.cpp index 0b13ba2dea2..d324b6189c0 100644 --- a/src/coreComponents/mesh/CellElementSubRegion.cpp +++ b/src/coreComponents/mesh/CellElementSubRegion.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -192,6 +192,11 @@ localIndex CellElementSubRegion::unpackUpDownMaps( buffer_unit_type const * & bu this->globalToLocalMap(), faceList().relatedObjectGlobalToLocal() ); + + GEOS_ERROR_IF_NE( m_unmappedGlobalIndicesInNodelist.size(), 0 ); + GEOS_ERROR_IF_NE( m_unmappedGlobalIndicesInEdgelist.size(), 0 ); + GEOS_ERROR_IF_NE( m_unmappedGlobalIndicesInFacelist.size(), 0 ); + return unPackedSize; } diff --git a/src/coreComponents/mesh/CellElementSubRegion.hpp b/src/coreComponents/mesh/CellElementSubRegion.hpp index b230a64bdb1..cdb158fa88f 100644 --- a/src/coreComponents/mesh/CellElementSubRegion.hpp +++ b/src/coreComponents/mesh/CellElementSubRegion.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/mesh/DomainPartition.cpp b/src/coreComponents/mesh/DomainPartition.cpp index 9604c30932c..528ac6b08cf 100644 --- a/src/coreComponents/mesh/DomainPartition.cpp +++ b/src/coreComponents/mesh/DomainPartition.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -18,6 +18,9 @@ */ #include "DomainPartition.hpp" +#include "common/format/table/TableData.hpp" +#include "common/format/table/TableFormatter.hpp" +#include "common/format/table/TableLayout.hpp" #include "common/DataTypes.hpp" #include "common/TimingMacros.hpp" @@ -322,13 +325,60 @@ void DomainPartition::addNeighbors( const unsigned int idim, void DomainPartition::outputPartitionInformation() const { + using stringutilities::addCommaSeparators; - auto numberOfEntities = []( ObjectManagerBase const & objectManager ) + struct RankMeshStats { - return std::make_pair( objectManager.getNumberOfLocalIndices(), objectManager.getNumberOfGhosts() ); + // Table rows will follow this enum ordering + enum StatIndex + { + Node = 0, Edge, Face, Elem, Count + }; + std::array< globalIndex, 4 > localCount = {}; + std::array< globalIndex, 4 > ghostCount = {}; + std::array< double, 4 > ratio = {}; + }; + + auto fillStats = []( RankMeshStats & stat, + RankMeshStats::StatIndex statIndex, + ObjectManagerBase const & objectManager ) + { + stat.localCount[ statIndex ] += objectManager.getNumberOfLocalIndices(); + stat.ghostCount[ statIndex ] += objectManager.getNumberOfGhosts(); + }; + + auto computeRatios = []( RankMeshStats & stat ) + { + for( size_t i = 0; i < RankMeshStats::StatIndex::Count; ++i ) + { + stat.ratio[i] = stat.localCount[i] + stat.ghostCount[i] == 0 ? 0 : + (double)stat.localCount[i] / (double)(stat.localCount[i] + stat.ghostCount[i]); + } + }; + + auto addLocalGhostRow = []( TableData & tableData, RankMeshStats const & stat, string_view heading ) + { + tableData.addRow( heading, + addCommaSeparators( stat.localCount[0] ), addCommaSeparators( stat.ghostCount[0] ), + addCommaSeparators( stat.localCount[0] + stat.ghostCount[0] ), + addCommaSeparators( stat.localCount[1] ), addCommaSeparators( stat.ghostCount[1] ), + addCommaSeparators( stat.localCount[1] + stat.ghostCount[1] ), + addCommaSeparators( stat.localCount[2] ), addCommaSeparators( stat.ghostCount[2] ), + addCommaSeparators( stat.localCount[2] + stat.ghostCount[2] ), + addCommaSeparators( stat.localCount[3] ), addCommaSeparators( stat.ghostCount[3] ), + addCommaSeparators( stat.localCount[3] + stat.ghostCount[3] ) ); }; - GEOS_LOG_RANK_0( "MPI Partition information:" ); + auto addSummaryRow = []( TableData & tableData, std::array< double, 4 > stats, string_view heading ) + { + tableData.addRow( heading, + CellType::MergeNext, CellType::MergeNext, stats[0], + CellType::MergeNext, CellType::MergeNext, stats[1], + CellType::MergeNext, CellType::MergeNext, stats[2], + CellType::MergeNext, CellType::MergeNext, stats[3] ); + }; + + GEOS_LOG_RANK_0( "MPI Partitioning information:" ); forMeshBodies( [&]( MeshBody const & meshBody ) { @@ -336,128 +386,117 @@ void DomainPartition::outputPartitionInformation() const { if( level!=0 ) { + // formatting is done on rank 0 + std::vector< RankMeshStats > allRankStats; + allRankStats.resize( MpiWrapper::commSize() ); + + { // Compute stats of the current rank, then gather it on rank 0 + RankMeshStats rankStats{}; + fillStats( rankStats, RankMeshStats::Node, meshLevel.getNodeManager() ); + fillStats( rankStats, RankMeshStats::Edge, meshLevel.getEdgeManager() ); + fillStats( rankStats, RankMeshStats::Face, meshLevel.getFaceManager() ); + + meshLevel.getElemManager().forElementSubRegions< CellElementSubRegion >( + [&]( CellElementSubRegion const & subRegion ) + { + fillStats( rankStats, RankMeshStats::Elem, subRegion ); + } ); - // get the number of local and ghost entities for each type - auto const [ numLocalNodes, numGhostNodes ] = numberOfEntities( meshLevel.getNodeManager() ); - real64 const nodeRatio = ( numLocalNodes + numGhostNodes ) > 0 ? real64( numLocalNodes ) / real64( numLocalNodes + numGhostNodes ) : -1.0; - auto const [ numLocalEdges, numGhostEdges ] = numberOfEntities( meshLevel.getEdgeManager() ); - real64 const edgeRatio = ( numLocalEdges + numGhostEdges ) > 0 ? real64( numLocalEdges ) / real64( numLocalEdges + numGhostEdges ) : -1.0; - auto const [ numLocalFaces, numGhostFaces ] = numberOfEntities( meshLevel.getFaceManager() ); - real64 const faceRatio = ( numLocalFaces + numGhostFaces ) > 0 ? real64( numLocalFaces ) / real64( numLocalFaces + numGhostFaces ) : -1.0; - - localIndex numLocalElems = 0; - localIndex numGhostElems = 0; - meshLevel.getElemManager().forElementSubRegions< CellElementSubRegion >( [&]( CellElementSubRegion const & subRegion ) - { - auto [ numLocalElemsInSubRegion, numGhostElemsInSubRegion ] = numberOfEntities( subRegion ); - numLocalElems += numLocalElemsInSubRegion; - numGhostElems += numGhostElemsInSubRegion; - } ); - real64 const elemRatio = ( numLocalElems + numGhostElems ) > 0 ? real64( numLocalElems ) / real64( numLocalElems + numGhostElems ) : -1.0; - - localIndex const values[8] = { numLocalNodes, numGhostNodes, numLocalEdges, numGhostEdges, numLocalFaces, numGhostFaces, numLocalElems, numGhostElems }; - localIndex minValues[8] = {0}; - localIndex maxValues[8] = {0}; - MpiWrapper::allReduce( values, minValues, 8, MPI_MIN, MPI_COMM_WORLD ); - MpiWrapper::allReduce( values, maxValues, 8, MPI_MAX, MPI_COMM_WORLD ); - localIndex const minNumLocalNodes = minValues[0]; - localIndex const maxNumLocalNodes = maxValues[0]; - localIndex const minNumGhostNodes = minValues[1]; - localIndex const maxNumGhostNodes = maxValues[1]; - localIndex const minNumLocalEdges = minValues[2]; - localIndex const maxNumLocalEdges = maxValues[2]; - localIndex const minNumGhostEdges = minValues[3]; - localIndex const maxNumGhostEdges = maxValues[3]; - localIndex const minNumLocalFaces = minValues[4]; - localIndex const maxNumLocalFaces = maxValues[4]; - localIndex const minNumGhostFaces = minValues[5]; - localIndex const maxNumGhostFaces = maxValues[5]; - localIndex const minNumLocalElems = minValues[6]; - localIndex const maxNumLocalElems = maxValues[6]; - localIndex const minNumGhostElems = minValues[7]; - localIndex const maxNumGhostElems = maxValues[7]; - - real64 const ratios[4] = { nodeRatio, edgeRatio, faceRatio, elemRatio }; - real64 minRatios[4] = {0}; - real64 maxRatios[4] = {0}; - MpiWrapper::allReduce( ratios, minRatios, 4, MPI_MIN, MPI_COMM_WORLD ); - MpiWrapper::allReduce( ratios, maxRatios, 4, MPI_MAX, MPI_COMM_WORLD ); - real64 const minNodeRatio = minRatios[0]; - real64 const maxNodeRatio = maxRatios[0]; - real64 const minEdgeRatio = minRatios[1]; - real64 const maxEdgeRatio = maxRatios[1]; - real64 const minFaceRatio = minRatios[2]; - real64 const maxFaceRatio = maxRatios[2]; - real64 const minElemRatio = minRatios[3]; - real64 const maxElemRatio = maxRatios[3]; - - GEOS_LOG_RANK_0( " MeshBody: " + meshBody.getName() + " MeshLevel: " + meshLevel.getName() + "\n" ); - GEOS_LOG_RANK_0( " |------------------------------------------------------------------------------------------------------------------------------------------------|" ); - GEOS_LOG_RANK_0( " | | Nodes | Edges | Faces | Elems |" ); - GEOS_LOG_RANK_0( " |------------------------------------------------------------------------------------------------------------------------------------------------|" ); - GEOS_LOG_RANK_0( GEOS_FMT( " |min(local/total)| {:4.2f} | {:4.2f} | {:4.2f} | {:4.2f} | ", - minNodeRatio, - minEdgeRatio, - minFaceRatio, - minElemRatio ) ); - GEOS_LOG_RANK_0( GEOS_FMT( " |max(local/total)| {:4.2f} | {:4.2f} | {:4.2f} | {:4.2f} | ", - maxNodeRatio, - maxEdgeRatio, - maxFaceRatio, - maxElemRatio ) ); - GEOS_LOG_RANK_0( " |------------------------------------------------------------------------------------------------------------------------------------------------|" ); - GEOS_LOG_RANK_0( " | Rank | local | ghost | local | ghost | local | ghost | local | ghost |" ); - GEOS_LOG_RANK_0( " |----------------|---------------|---------------|---------------|---------------|---------------|---------------|---------------|---------------|" ); - - - GEOS_LOG_RANK_0( GEOS_FMT( " | min | {:>13} | {:>13} | {:>13} | {:>13} | {:>13} | {:>13} | {:>13} | {:>13} |", - stringutilities::addCommaSeparators( minNumLocalNodes ), - stringutilities::addCommaSeparators( minNumGhostNodes ), - stringutilities::addCommaSeparators( minNumLocalEdges ), - stringutilities::addCommaSeparators( minNumGhostEdges ), - stringutilities::addCommaSeparators( minNumLocalFaces ), - stringutilities::addCommaSeparators( minNumGhostFaces ), - stringutilities::addCommaSeparators( minNumLocalElems ), - stringutilities::addCommaSeparators( minNumGhostElems ) ) ); - - GEOS_LOG_RANK_0( GEOS_FMT( " | max | {:>13} | {:>13} | {:>13} | {:>13} | {:>13} | {:>13} | {:>13} | {:>13} |", - stringutilities::addCommaSeparators( maxNumLocalNodes ), - stringutilities::addCommaSeparators( maxNumGhostNodes ), - stringutilities::addCommaSeparators( maxNumLocalEdges ), - stringutilities::addCommaSeparators( maxNumGhostEdges ), - stringutilities::addCommaSeparators( maxNumLocalFaces ), - stringutilities::addCommaSeparators( maxNumGhostFaces ), - stringutilities::addCommaSeparators( maxNumLocalElems ), - stringutilities::addCommaSeparators( maxNumGhostElems ) ) ); - - GEOS_LOG_RANK_0( " |------------------------------------------------------------------------------------------------------------------------------------------------|" ); - - // output in rank order - int const thisRank = MpiWrapper::commRank(); - for( int rank=0; rank13} | {:>13} | {:>13} | {:>13} | {:>13} | {:>13} | {:>13} | {:>13} | ", - rank, - stringutilities::addCommaSeparators( numLocalNodes ), - stringutilities::addCommaSeparators( numGhostNodes ), - stringutilities::addCommaSeparators( numLocalEdges ), - stringutilities::addCommaSeparators( numGhostEdges ), - stringutilities::addCommaSeparators( numLocalFaces ), - stringutilities::addCommaSeparators( numGhostFaces ), - stringutilities::addCommaSeparators( numLocalElems ), - stringutilities::addCommaSeparators( numGhostElems ) ) ); + if( rankId == 1 ) + tableData.addSeparator(); + + addLocalGhostRow( tableData, allRankStats[rankId], std::to_string( rankId ) ); } - MpiWrapper::barrier(); + + RankMeshStats sumStats{}; + RankMeshStats minStats{}; + RankMeshStats maxStats{}; + + for( size_t statId = 0; statId < RankMeshStats::Count; ++statId ) + { + minStats.localCount[statId] = std::numeric_limits< globalIndex >::max(); + minStats.ghostCount[statId] = std::numeric_limits< globalIndex >::max(); + minStats.ratio[statId] = std::numeric_limits< double >::max(); + + maxStats.localCount[statId] = std::numeric_limits< globalIndex >::min(); + maxStats.ghostCount[statId] = std::numeric_limits< globalIndex >::min(); + maxStats.ratio[statId] = std::numeric_limits< double >::min(); + } + + for( int rankId = 0; rankId < MpiWrapper::commSize(); ++rankId ) + { + for( size_t statId = 0; statId < RankMeshStats::Count; ++statId ) + { + sumStats.localCount[statId] += allRankStats[rankId].localCount[statId]; + sumStats.ghostCount[statId] += allRankStats[rankId].ghostCount[statId]; + + minStats.localCount[statId] = std::min( minStats.localCount[statId], allRankStats[rankId].localCount[statId] ); + minStats.ghostCount[statId] = std::min( minStats.ghostCount[statId], allRankStats[rankId].ghostCount[statId] ); + minStats.ratio[statId] = std::min( minStats.ratio[statId], allRankStats[rankId].ratio[statId] ); + + maxStats.localCount[statId] = std::max( maxStats.localCount[statId], allRankStats[rankId].localCount[statId] ); + maxStats.ghostCount[statId] = std::max( maxStats.ghostCount[statId], allRankStats[rankId].ghostCount[statId] ); + maxStats.ratio[statId] = std::max( maxStats.ratio[statId], allRankStats[rankId].ratio[statId] ); + } + } + + tableData.addSeparator(); + addLocalGhostRow( tableData, sumStats, "sum" ); + addLocalGhostRow( tableData, minStats, "min" ); + addLocalGhostRow( tableData, maxStats, "max" ); + + std::array< double, 4 > localTotalMinRatio; + std::array< double, 4 > localTotalMaxRatio; + + for( size_t statId = 0; statId < RankMeshStats::Count; ++statId ) + { + localTotalMinRatio[statId] = std::numeric_limits< double >::max(); + localTotalMaxRatio[statId] = std::numeric_limits< double >::min(); + } + + for( size_t statId = 0; statId < RankMeshStats::Count; ++statId ) + { + localTotalMinRatio[statId] = std::min( localTotalMinRatio[statId], minStats.ratio[statId] ); + localTotalMaxRatio[statId] = std::max( localTotalMinRatio[statId], maxStats.ratio[statId] ); + } + tableData.addSeparator(); + addSummaryRow( tableData, localTotalMinRatio, "min(local/total)" ); + addSummaryRow( tableData, localTotalMaxRatio, "max(local/total)" ); + + TableTextFormatter logPartition( layout ); + GEOS_LOG_RANK_0( logPartition.toString( tableData )); } - MpiWrapper::barrier(); - GEOS_LOG_RANK_0( " |------------------------------------------------------------------------------------------------------------------------------------------------|" ); + } } ); - } - - ); + } ); } diff --git a/src/coreComponents/mesh/DomainPartition.hpp b/src/coreComponents/mesh/DomainPartition.hpp index c15eb224100..0af42ee9256 100644 --- a/src/coreComponents/mesh/DomainPartition.hpp +++ b/src/coreComponents/mesh/DomainPartition.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/mesh/EdgeManager.cpp b/src/coreComponents/mesh/EdgeManager.cpp index 6ef8d9daf97..f8227cb4a67 100644 --- a/src/coreComponents/mesh/EdgeManager.cpp +++ b/src/coreComponents/mesh/EdgeManager.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -270,6 +270,7 @@ localIndex EdgeManager::unpackUpDownMaps( buffer_unit_type const * & buffer, m_toFacesRelation.relatedObjectGlobalToLocal(), overwriteUpMaps ); + GEOS_ERROR_IF_NE( m_unmappedGlobalIndicesInToNodes.size(), 0 ); return unPackedSize; } diff --git a/src/coreComponents/mesh/EdgeManager.hpp b/src/coreComponents/mesh/EdgeManager.hpp index eedcc23a4d4..f955b9dd83e 100644 --- a/src/coreComponents/mesh/EdgeManager.hpp +++ b/src/coreComponents/mesh/EdgeManager.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/mesh/ElementRegionBase.cpp b/src/coreComponents/mesh/ElementRegionBase.cpp index 844827c28bf..97304535015 100644 --- a/src/coreComponents/mesh/ElementRegionBase.cpp +++ b/src/coreComponents/mesh/ElementRegionBase.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/mesh/ElementRegionBase.hpp b/src/coreComponents/mesh/ElementRegionBase.hpp index f2050f351bd..60f0f9b7a5e 100644 --- a/src/coreComponents/mesh/ElementRegionBase.hpp +++ b/src/coreComponents/mesh/ElementRegionBase.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/mesh/ElementRegionManager.cpp b/src/coreComponents/mesh/ElementRegionManager.cpp index 6f3669a0a19..2652103216e 100644 --- a/src/coreComponents/mesh/ElementRegionManager.cpp +++ b/src/coreComponents/mesh/ElementRegionManager.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -18,6 +18,7 @@ #include "ElementRegionManager.hpp" +#include "common/DataLayouts.hpp" #include "common/TimingMacros.hpp" #include "mesh/mpiCommunications/CommunicationTools.hpp" #include "SurfaceElementRegion.hpp" @@ -30,6 +31,7 @@ #include "mesh/generators/LineBlockABC.hpp" #include "mesh/CellElementRegionSelector.hpp" + namespace geos { using namespace dataRepository; @@ -67,31 +69,32 @@ void ElementRegionManager::setMaxGlobalIndex() m_maxGlobalIndex = MpiWrapper::max( m_localMaxGlobalIndex, MPI_COMM_GEOS ); } - +auto const & getUserAvailableKeys() +{ + static std::set< string > keys = { + CellElementRegion::catalogName(), + WellElementRegion::catalogName(), + SurfaceElementRegion::catalogName(), + }; + return keys; +} Group * ElementRegionManager::createChild( string const & childKey, string const & childName ) { - GEOS_ERROR_IF( !(CatalogInterface::hasKeyName( childKey )), - "KeyName ("<getGroup( ElementRegionManager::groupKeyStruct::elementRegionsGroup() ); return &elementRegions.registerGroup( childName, - CatalogInterface::factory( childKey, childName, &elementRegions ) ); + CatalogInterface::factory( childKey, getDataContext(), + childName, &elementRegions ) ); } void ElementRegionManager::expandObjectCatalogs() { - ObjectManagerBase::CatalogInterface::CatalogType const & catalog = ObjectManagerBase::getCatalog(); - for( ObjectManagerBase::CatalogInterface::CatalogType::const_iterator iter = catalog.begin(); - iter!=catalog.end(); - ++iter ) + for( string const & key : getUserAvailableKeys() ) { - string const key = iter->first; - if( key.find( "ElementRegion" ) != string::npos ) - { - this->createChild( key, key ); - } + this->createChild( key, key ); } } @@ -149,18 +152,31 @@ void ElementRegionManager::generateMesh( CellBlockManagerABC const & cellBlockMa array2d< localIndex > const blockToSubRegion = this->getCellBlockToSubRegionMap( cellBlockManager ); this->forElementRegions< SurfaceElementRegion >( [&]( SurfaceElementRegion & elemRegion ) { - SurfaceElementSubRegion & subRegion = elemRegion.getUniqueSubRegion< SurfaceElementSubRegion >(); + SurfaceElementSubRegion & surfaceSubRegion = elemRegion.getUniqueSubRegion< SurfaceElementSubRegion >(); // While indicated as containing element subregion information, // `relation` currently contains cell block information // that will be transformed into element subregion information. // This is why we copy the information into a temporary, // which frees space for the final information (of same size). - OrderedVariableToManyElementRelation & relation = subRegion.getToCellRelation(); - ToCellRelation< ArrayOfArrays< localIndex > > const tmp( relation.m_toElementSubRegion, - relation.m_toElementIndex ); - meshMapUtilities::transformCellBlockToRegionMap< parallelHostPolicy >( blockToSubRegion.toViewConst(), - tmp, - relation ); + if( auto * const faceElementSubRegion = dynamic_cast< FaceElementSubRegion * >( &surfaceSubRegion ) ) + { + FixedToManyElementRelation & relation = faceElementSubRegion->getToCellRelation(); + ToCellRelation< array2d< localIndex > > const tmp( relation.m_toElementSubRegion, + relation.m_toElementIndex ); + + meshMapUtilities::transformCellBlockToRegionMap< parallelHostPolicy >( blockToSubRegion.toViewConst(), + tmp, + relation ); + } + else if( auto * const embeddedSurfaceSubRegion = dynamic_cast< EmbeddedSurfaceSubRegion * >( &surfaceSubRegion ) ) + { + OrderedVariableToManyElementRelation & relation = embeddedSurfaceSubRegion->getToCellRelation(); + ToCellRelation< ArrayOfArrays< localIndex > > const tmp( relation.m_toElementSubRegion, + relation.m_toElementIndex ); + meshMapUtilities::transformCellBlockToRegionMap< parallelHostPolicy >( blockToSubRegion.toViewConst(), + tmp, + relation ); + } } ); } @@ -521,14 +537,6 @@ int ElementRegionManager::packUpDownMapsImpl( buffer_unit_type * & buffer, return packedSize; } -//template int -//ElementRegionManager:: -//PackUpDownMapsImpl( buffer_unit_type * & buffer, -// ElementViewAccessor> const & packList ) const; -//template int -//ElementRegionManager:: -//PackUpDownMapsImpl( buffer_unit_type * & buffer, -// ElementViewAccessor> const & packList ) const; int ElementRegionManager::unpackUpDownMaps( buffer_unit_type const * & buffer, @@ -564,6 +572,98 @@ ElementRegionManager::unpackUpDownMaps( buffer_unit_type const * & buffer, return unpackedSize; } +int ElementRegionManager::packFaceElementToFaceSize( ElementViewAccessor< arrayView1d< localIndex > > const & packList ) const +{ + buffer_unit_type * junk = nullptr; + return packFaceElementToFaceImpl< false >( junk, packList ); +} + +int ElementRegionManager::packFaceElementToFace( buffer_unit_type * & buffer, + ElementViewAccessor< arrayView1d< localIndex > > const & packList ) const +{ + return packFaceElementToFaceImpl< true >( buffer, packList ); +} + +template< bool DO_PACKING, typename T > +int ElementRegionManager::packFaceElementToFaceImpl( buffer_unit_type * & buffer, + T const & packList ) const +{ + int packedSize = 0; + + packedSize += bufferOps::Pack< DO_PACKING >( buffer, numRegions() ); + + for( typename dataRepository::indexType kReg=0; kReg( buffer, elemRegion.getName() ); + + + + localIndex numFaceElementSubregions = 0; + elemRegion.forElementSubRegionsIndex< FaceElementSubRegion >( + [&]( localIndex const, FaceElementSubRegion const & ) + { + ++numFaceElementSubregions; + } ); + + + packedSize += bufferOps::Pack< DO_PACKING >( buffer, numFaceElementSubregions ); + + elemRegion.forElementSubRegionsIndex< FaceElementSubRegion >( + [&]( localIndex const esr, FaceElementSubRegion const & subRegion ) + { + packedSize += bufferOps::Pack< DO_PACKING >( buffer, subRegion.getName() ); + + arrayView1d< localIndex > const elemList = packList[kReg][esr]; + if( DO_PACKING ) + { + packedSize += subRegion.packToFaceRelation( buffer, elemList ); + } + else + { + packedSize += subRegion.packToFaceRelationSize( elemList ); + } + } ); + } + + return packedSize; +} + + +int +ElementRegionManager::unpackFaceElementToFace( buffer_unit_type const * & buffer, + ElementReferenceAccessor< localIndex_array > & packList, + bool const overwriteMap ) +{ + int unpackedSize = 0; + + localIndex numRegionsRead; + unpackedSize += bufferOps::Unpack( buffer, numRegionsRead ); + for( localIndex kReg=0; kReg( + [&]( localIndex const kSubReg, FaceElementSubRegion & subRegion ) + { + string subRegionName; + unpackedSize += bufferOps::Unpack( buffer, subRegionName ); + GEOS_ERROR_IF( subRegionName != subRegion.getName(), + "Unpacked subregion name (" << subRegionName << ") does not equal object name (" << subRegion.getName() << ")" ); + + localIndex_array & elemList = packList[kReg][kSubReg]; + unpackedSize += subRegion.unpackToFaceRelation( buffer, elemList, false, overwriteMap ); + } ); + } + + return unpackedSize; +} + + int ElementRegionManager::packFracturedElementsSize( ElementViewAccessor< arrayView1d< localIndex > > const & packList, string const fractureRegionName ) const { @@ -693,6 +793,94 @@ ElementRegionManager::getCellBlockToSubRegionMap( CellBlockManagerABC const & ce return blockMap; } +void ElementRegionManager::outputObjectConnectivity() const +{ + int const numRanks = MpiWrapper::commSize(); + int const thisRank = MpiWrapper::commRank(); + + for( int rank=0; rankgetName().c_str() ); + + forElementRegions< CellElementRegion >( [&]( CellElementRegion const & elemRegion ) + { + elemRegion.forElementSubRegions< CellElementSubRegion >( [&]( CellElementSubRegion const & subRegion ) + { + printf( " %s\n", subRegion.getName().c_str() ); + + CellElementSubRegion::NodeMapType const & elemToNodeRelation = subRegion.nodeList(); + arrayView2d< localIndex const, cells::NODE_MAP_USD > const elemToNode = elemToNodeRelation; + arrayView1d< globalIndex const > const & elemLocalToGlobal = subRegion.localToGlobalMap(); + auto const & elemGlobalToLocal = subRegion.globalToLocalMap(); + arrayView1d< globalIndex const > const & nodeLocalToGlobal = elemToNodeRelation.relatedObjectLocalToGlobal(); + auto const & refCoords = getParent().getGroup< NodeManager >( "nodeManager" ).referencePosition(); + + printf( " ElementToNodes map:\n" ); + for( localIndex k=0; k const sortedGlobalToLocalMap( elemGlobalToLocal.begin(), + elemGlobalToLocal.end()); + for( auto indexPair : sortedGlobalToLocalMap ) + { + globalIndex const gk = indexPair.first; + localIndex const k = indexPair.second; + + printf( " %3d( %3lld ): ", k, gk ); + for( localIndex a=0; a & packList, bool const overwriteMap ); + + /** + * @brief Get the buffer size needed to pack element-to-node and element-to-face maps. + * @param packList list of indices to pack + * @return the size of data packed. + */ + int packFaceElementToFaceSize( ElementViewAccessor< arrayView1d< localIndex > > const & packList ) const; + + /** + * @brief Pack element-to-node and element-to-face maps. + * @param buffer pointer to the buffer to be packed + * @param packList list of indices to pack + * @return the size of data packed. + */ + int packFaceElementToFace( buffer_unit_type * & buffer, + ElementViewAccessor< arrayView1d< localIndex > > const & packList ) const; + + /** + * @brief Unpack element-to-node and element-to-face maps. + * @param buffer pointer to the buffer to be unpacked + * @param packList list of indices to pack + * @param overwriteMap flag to indicate whether to overwrite the local map + * @return the size of data packed. + */ + int unpackFaceElementToFace( buffer_unit_type const * & buffer, + ElementReferenceAccessor< localIndex_array > & packList, + bool const overwriteMap ); + /** * @brief Get the buffer size needed to pack the set of fractured elements and the map toEmbSurfaces. * @param packList list of indices to pack @@ -1121,6 +1149,12 @@ class ElementRegionManager : public ObjectManagerBase ElementReferenceAccessor< localIndex_array > & packList, string const fractureRegionName ); + /** + * @brief Function to output connectivity in order to assist debugging issues + * with object connectivity. + */ + virtual void outputObjectConnectivity() const override final; + private: @@ -1154,6 +1188,12 @@ class ElementRegionManager : public ObjectManagerBase int packUpDownMapsImpl( buffer_unit_type * & buffer, T const & packList ) const; + + template< bool DO_PACKING, typename T > + int + packFaceElementToFaceImpl( buffer_unit_type * & buffer, + T const & packList ) const; + /** * @brief Unpack element-to-node and element-to-face maps. * @param buffer pointer to the buffer to be unpacked diff --git a/src/coreComponents/mesh/ElementSubRegionBase.cpp b/src/coreComponents/mesh/ElementSubRegionBase.cpp index f3dc3a23745..6234dbaca94 100644 --- a/src/coreComponents/mesh/ElementSubRegionBase.cpp +++ b/src/coreComponents/mesh/ElementSubRegionBase.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/mesh/ElementSubRegionBase.hpp b/src/coreComponents/mesh/ElementSubRegionBase.hpp index 74bd710a310..c61289839c8 100644 --- a/src/coreComponents/mesh/ElementSubRegionBase.hpp +++ b/src/coreComponents/mesh/ElementSubRegionBase.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/mesh/ElementType.hpp b/src/coreComponents/mesh/ElementType.hpp index 0dd913402cd..0ebb7ba5e03 100644 --- a/src/coreComponents/mesh/ElementType.hpp +++ b/src/coreComponents/mesh/ElementType.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/mesh/EmbeddedSurfaceNodeManager.cpp b/src/coreComponents/mesh/EmbeddedSurfaceNodeManager.cpp index dd18ab4439b..d8d053b7951 100644 --- a/src/coreComponents/mesh/EmbeddedSurfaceNodeManager.cpp +++ b/src/coreComponents/mesh/EmbeddedSurfaceNodeManager.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/mesh/EmbeddedSurfaceNodeManager.hpp b/src/coreComponents/mesh/EmbeddedSurfaceNodeManager.hpp index fdb11f62c98..7d49caf0ff3 100644 --- a/src/coreComponents/mesh/EmbeddedSurfaceNodeManager.hpp +++ b/src/coreComponents/mesh/EmbeddedSurfaceNodeManager.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/mesh/EmbeddedSurfaceSubRegion.cpp b/src/coreComponents/mesh/EmbeddedSurfaceSubRegion.cpp index 83f603d9992..875d23b289f 100644 --- a/src/coreComponents/mesh/EmbeddedSurfaceSubRegion.cpp +++ b/src/coreComponents/mesh/EmbeddedSurfaceSubRegion.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -43,7 +43,8 @@ EmbeddedSurfaceSubRegion::EmbeddedSurfaceSubRegion( string const & name, SurfaceElementSubRegion( name, parent ), m_numOfJumpEnrichments( 3 ), m_connectivityIndex(), - m_parentPlaneName() + m_parentPlaneName(), + m_2dElemToElems() { m_elementType = ElementType::Polygon; @@ -63,10 +64,25 @@ EmbeddedSurfaceSubRegion::EmbeddedSurfaceSubRegion( string const & name, setRTTypeName( rtTypes::CustomTypes::groupNameRefArray ). setDescription( "A map of surface element to the parent fracture name" ); + registerWrapper( viewKeyStruct::surfaceElementsToCellRegionsString(), &m_2dElemToElems.m_toElementRegion ). + setPlotLevel( PlotLevel::NOPLOT ). + setDescription( "A map of face element local indices to the cell local indices" ); + + registerWrapper( viewKeyStruct::surfaceElementsToCellSubRegionsString(), &m_2dElemToElems.m_toElementSubRegion ). + setPlotLevel( PlotLevel::NOPLOT ). + setDescription( "A map of face element local indices to the cell local indices" ); + + registerWrapper( viewKeyStruct::surfaceElementsToCellIndexString(), &m_2dElemToElems.m_toElementIndex ). + setPlotLevel( PlotLevel::NOPLOT ). + setDescription( "A map of face element local indices to the cell local indices" ); + m_normalVector.resizeDimension< 1 >( 3 ); m_tangentVector1.resizeDimension< 1 >( 3 ); m_tangentVector2.resizeDimension< 1 >( 3 ); m_2dElemToElems.resize( 0, 1 ); + + m_2dElemToElems.setElementRegionManager( dynamicCast< ElementRegionManager & >( getParent().getParent().getParent().getParent() ) ); + } void EmbeddedSurfaceSubRegion::calculateElementGeometricQuantities( NodeManager const & GEOS_UNUSED_PARAM( nodeManager ), diff --git a/src/coreComponents/mesh/EmbeddedSurfaceSubRegion.hpp b/src/coreComponents/mesh/EmbeddedSurfaceSubRegion.hpp index 311b8aec610..5baa73ec274 100644 --- a/src/coreComponents/mesh/EmbeddedSurfaceSubRegion.hpp +++ b/src/coreComponents/mesh/EmbeddedSurfaceSubRegion.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -232,6 +232,23 @@ class EmbeddedSurfaceSubRegion : public SurfaceElementSubRegion */ std::vector< struct surfaceWithGhostNodes > surfaceWithGhostNodes() { return m_surfaceWithGhostNodes; } + /** + * @brief Get the surface element to cells map. + * @return The surface element to cells map + */ + OrderedVariableToManyElementRelation & getToCellRelation() + { + return m_2dElemToElems; + } + + /** + * @copydoc getToCellRelation() + */ + OrderedVariableToManyElementRelation const & getToCellRelation() const + { + return m_2dElemToElems; + } + ///@} private: @@ -258,6 +275,10 @@ class EmbeddedSurfaceSubRegion : public SurfaceElementSubRegion /// Surfaces with ghost nodes std::vector< struct surfaceWithGhostNodes > m_surfaceWithGhostNodes; + + /// Map between the surface elements and the cells + OrderedVariableToManyElementRelation m_2dElemToElems; + }; diff --git a/src/coreComponents/mesh/ExternalDataSourceBase.cpp b/src/coreComponents/mesh/ExternalDataSourceBase.cpp new file mode 100644 index 00000000000..9c1285764d7 --- /dev/null +++ b/src/coreComponents/mesh/ExternalDataSourceBase.cpp @@ -0,0 +1,56 @@ +/* + * ------------------------------------------------------------------------------------------------------------ + * SPDX-License-Identifier: LGPL-2.1-only + * + * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC + * Copyright (c) 2018-2024 TotalEnergies + * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University + * Copyright (c) 2023-2024 Chevron + * Copyright (c) 2019- GEOS/GEOSX Contributors + * All rights reserved + * + * See top level LICENSE, COPYRIGHT, CONTRIBUTORS, NOTICE, and ACKNOWLEDGEMENTS files for details. + * ------------------------------------------------------------------------------------------------------------ + */ + +#include "ExternalDataSourceBase.hpp" + +namespace geos +{ +using namespace dataRepository; + +ExternalDataSourceBase::ExternalDataSourceBase( string const & name, Group * const parent ): + Group( name, parent ) +{ + setInputFlags( InputFlags::OPTIONAL_NONUNIQUE ); +} + +Group * ExternalDataSourceBase::createChild( string const & childKey, string const & childName ) +{ + GEOS_LOG_RANK_0( GEOS_FMT( "{}: adding {} {}", getName(), childKey, childName ) ); + std::unique_ptr< ExternalDataSourceBase > event = + ExternalDataSourceBase::CatalogInterface::factory( childKey, getDataContext(), childName, this ); + return &this->registerGroup( childName, std::move( event ) ); +} + +void ExternalDataSourceBase::expandObjectCatalogs() +{ + // Only add children if the parent is of type EventManager + // otherwise, this would fall into a loop + if( strcmp( this->getParent().getName().c_str(), "ExternalDataSource" ) == 0 ) + { + for( auto & catalogIter: ExternalDataSourceBase::getCatalog()) + { + createChild( catalogIter.first, catalogIter.first ); + } + } +} + +ExternalDataSourceBase::CatalogInterface::CatalogType & ExternalDataSourceBase::getCatalog() +{ + static ExternalDataSourceBase::CatalogInterface::CatalogType catalog; + return catalog; +} + + +} diff --git a/src/coreComponents/mesh/ExternalDataSourceBase.hpp b/src/coreComponents/mesh/ExternalDataSourceBase.hpp new file mode 100644 index 00000000000..0e2f9a4ab17 --- /dev/null +++ b/src/coreComponents/mesh/ExternalDataSourceBase.hpp @@ -0,0 +1,78 @@ +/* + * ------------------------------------------------------------------------------------------------------------ + * SPDX-License-Identifier: LGPL-2.1-only + * + * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC + * Copyright (c) 2018-2024 TotalEnergies + * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University + * Copyright (c) 2023-2024 Chevron + * Copyright (c) 2019- GEOS/GEOSX Contributors + * All rights reserved + * + * See top level LICENSE, COPYRIGHT, CONTRIBUTORS, NOTICE, and ACKNOWLEDGEMENTS files for details. + * ------------------------------------------------------------------------------------------------------------ + */ + +/** + * @file ExternalDataSourceBase.hpp + */ + +#ifndef GEOS_MESH_EXTERNALDATASOURCEBASE_HPP +#define GEOS_MESH_EXTERNALDATASOURCEBASE_HPP + +#include "dataRepository/Group.hpp" +#include "dataRepository/WrapperBase.hpp" +#include "codingUtilities/Utilities.hpp" +#include "common/DataTypes.hpp" + + +namespace geos +{ + +/** + * @class ExternalDataSourceBase + * @brief The ExternalDataSourceBase class provides an abstract base class implementation for different mesh types. + * The ExternalDataSourceBase is the Group specialization for different type of mesh handling. + */ +class ExternalDataSourceBase : public dataRepository::Group +{ +public: + + /** + * @brief Main constructor for ExternalDataSourceBase base class. + * @param[in] name of the ExternalDataSourceBase object + * @param[in] parent the parent Group pointer for the ExternalDataSourceBase object + */ + explicit ExternalDataSourceBase( string const & name, + Group * const parent ); + + /// This function is used to expand any catalogs in the data structure + virtual void expandObjectCatalogs() override; + + /// using alias for templated Catalog ExternalDataSourceBase type + using CatalogInterface = dataRepository::CatalogInterface< ExternalDataSourceBase, string const &, Group * const >; + + /** + * @brief Create a new geometric object (box, plane, etc) as a child of this group. + * @param childKey the catalog key of the new geometric object to create + * @param childName the name of the new geometric object in the repository + * @return the group child + */ + virtual Group * createChild( string const & childKey, string const & childName ) override; + + /** + * @brief Accessor for the singleton Catalog object + * @return a static reference to the Catalog object + */ + static CatalogInterface::CatalogType & getCatalog(); + + /** + * @brief This function provides the capability to open an external data repository + * from another component whatever its format. + */ + virtual void open() = 0; +}; + +} + +#endif /* GEOS_MESH_EXTERNALDATASOURCEBASE_HPP */ diff --git a/src/coreComponents/mesh/ExternalDataSourceManager.cpp b/src/coreComponents/mesh/ExternalDataSourceManager.cpp new file mode 100644 index 00000000000..969ab7a043d --- /dev/null +++ b/src/coreComponents/mesh/ExternalDataSourceManager.cpp @@ -0,0 +1,64 @@ +/* + * ------------------------------------------------------------------------------------------------------------ + * SPDX-License-Identifier: LGPL-2.1-only + * + * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC + * Copyright (c) 2018-2024 TotalEnergies + * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University + * Copyright (c) 2023-2024 Chevron + * Copyright (c) 2019- GEOS/GEOSX Contributors + * All rights reserved + * + * See top level LICENSE, COPYRIGHT, CONTRIBUTORS, NOTICE, and ACKNOWLEDGEMENTS files for details. + * ------------------------------------------------------------------------------------------------------------ + */ + + +#include "ExternalDataSourceManager.hpp" +#include "ExternalDataSourceBase.hpp" + + +namespace geos +{ + +using namespace dataRepository; + +ExternalDataSourceManager::ExternalDataSourceManager( string const & name, + Group * const parent ): + Group( name, parent ) +{ + setInputFlags( InputFlags::REQUIRED ); +} + +ExternalDataSourceManager::~ExternalDataSourceManager() +{} + +Group * ExternalDataSourceManager::createChild( string const & childKey, string const & childName ) +{ + GEOS_LOG_RANK_0( GEOS_FMT( "{}: adding {} {}", getName(), childKey, childName ) ); + std::unique_ptr< ExternalDataSourceBase > externalDataSource = + ExternalDataSourceBase::CatalogInterface::factory( childKey, getDataContext(), childName, this ); + return &this->registerGroup< ExternalDataSourceBase >( childName, std::move( externalDataSource ) ); +} + + +void ExternalDataSourceManager::expandObjectCatalogs() +{ + // During schema generation, register one of each type derived from ExternalDataSourceBase here + for( auto & catalogIter: ExternalDataSourceBase::getCatalog()) + { + createChild( catalogIter.first, catalogIter.first ); + } +} + + +void ExternalDataSourceManager::open( DomainPartition & GEOS_UNUSED_PARAM( domain ) ) +{ + forSubGroups< ExternalDataSourceBase >( []( ExternalDataSourceBase & external ) + { + external.open(); + } ); +} + + +} /* namespace geos */ diff --git a/src/coreComponents/mesh/ExternalDataSourceManager.hpp b/src/coreComponents/mesh/ExternalDataSourceManager.hpp new file mode 100644 index 00000000000..28ccecb2fc1 --- /dev/null +++ b/src/coreComponents/mesh/ExternalDataSourceManager.hpp @@ -0,0 +1,76 @@ +/* + * ------------------------------------------------------------------------------------------------------------ + * SPDX-License-Identifier: LGPL-2.1-only + * + * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC + * Copyright (c) 2018-2024 TotalEnergies + * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University + * Copyright (c) 2023-2024 Chevron + * Copyright (c) 2019- GEOS/GEOSX Contributors + * All rights reserved + * + * See top level LICENSE, COPYRIGHT, CONTRIBUTORS, NOTICE, and ACKNOWLEDGEMENTS files for details. + * ------------------------------------------------------------------------------------------------------------ + */ + +/** + * @file ExternalDataSourceManager.hpp + */ + +#ifndef GEOS_MESH_EXTERNALDATASOURCEMANAGER_HPP_ +#define GEOS_MESH_EXTERNALDATASOURCEMANAGER_HPP_ + +#include "dataRepository/Group.hpp" +#include "mesh/DomainPartition.hpp" + +namespace geos +{ + +/** + * @class ExternalDataSourceManager + * @brief This class manages a data repository whereof objects can be imported to GEOS (reservoir mesh, well mesh) + */ +class ExternalDataSourceManager : public dataRepository::Group +{ +public: + + /** + * @brief Constructor for the ExternalDataSourceManager object. + * @param[in] name the name of the ExternalDataSourceManager object in the repository + * @param[in] parent the parent group of the ExternalDataSourceManager object being constructed + */ + ExternalDataSourceManager( string const & name, + Group * const parent ); + + virtual ~ExternalDataSourceManager() override; + + + /** + * @brief Create a new sub data repository. + * @param[in] childKey the key of the new object in the ObjectCatalog + * @param[in] childName the name of the new object in the collection of sub-meshes + * @return A pointer to the Group node in the dataRepository of the new object created + */ + virtual Group * createChild( string const & childKey, string const & childName ) override; + + /// This function is used to expand any catalogs in the data structure + virtual void expandObjectCatalogs() override; + + /** + * @brief Generate the meshes of the physical DomainPartition. + * @param[in] domain a reference to the physical domain + */ + void open( DomainPartition & domain ); + +private: + + /** + * @brief Deleted default constructor of the ExternalDataSourceManager + */ + ExternalDataSourceManager() = delete; + +}; + +} /* namespace geos */ + +#endif /* GEOS_MESH_EXTERNALDATASOURCEMANAGER_HPP_ */ diff --git a/src/coreComponents/mesh/FaceElementSubRegion.cpp b/src/coreComponents/mesh/FaceElementSubRegion.cpp index 31c0dcce7c0..f1e1162a060 100644 --- a/src/coreComponents/mesh/FaceElementSubRegion.cpp +++ b/src/coreComponents/mesh/FaceElementSubRegion.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -33,7 +33,8 @@ FaceElementSubRegion::FaceElementSubRegion( string const & name, m_unmappedGlobalIndicesInToEdges(), m_unmappedGlobalIndicesInToFaces(), m_newFaceElements(), - m_toFacesRelation() + m_toFacesRelation(), + m_2dElemToElems() { m_elementType = ElementType::Hexahedron; @@ -42,6 +43,7 @@ FaceElementSubRegion::FaceElementSubRegion( string const & name, registerWrapper( viewKeyStruct::detJString(), &m_detJ ).setSizedFromParent( 1 ).reference(); registerWrapper( viewKeyStruct::faceListString(), &m_toFacesRelation ). + setApplyDefaultValue( -1 ). setDescription( "Map to the faces attached to each FaceElement." ). reference().resize( 0, 2 ); @@ -65,6 +67,21 @@ FaceElementSubRegion::FaceElementSubRegion( string const & name, setDescription( "A map eventually containing all the collocated nodes." ). setSizedFromParent( 1 ); + registerWrapper( viewKeyStruct::surfaceElementsToCellRegionsString(), &m_2dElemToElems.m_toElementRegion ). + setApplyDefaultValue( -1 ). + setPlotLevel( PlotLevel::NOPLOT ). + setDescription( "A map of face element local indices to the cell local indices" ); + + registerWrapper( viewKeyStruct::surfaceElementsToCellSubRegionsString(), &m_2dElemToElems.m_toElementSubRegion ). + setApplyDefaultValue( -1 ). + setPlotLevel( PlotLevel::NOPLOT ). + setDescription( "A map of face element local indices to the cell local indices" ); + + registerWrapper( viewKeyStruct::surfaceElementsToCellIndexString(), &m_2dElemToElems.m_toElementIndex ). + setApplyDefaultValue( -1 ). + setPlotLevel( PlotLevel::NOPLOT ). + setDescription( "A map of face element local indices to the cell local indices" ); + #ifdef GEOS_USE_SEPARATION_COEFFICIENT registerWrapper( viewKeyStruct::separationCoeffString(), &m_separationCoefficient ). setApplyDefaultValue( 0.0 ). @@ -77,12 +94,16 @@ FaceElementSubRegion::FaceElementSubRegion( string const & name, m_2dElemToElems.resize( 0, 2 ); m_numNodesPerElement = 8; + + + m_2dElemToElems.setElementRegionManager( dynamicCast< ElementRegionManager & >( getParent().getParent().getParent().getParent() ) ); + } void FaceElementSubRegion::copyFromCellBlock( FaceBlockABC const & faceBlock ) { localIndex const num2dElements = faceBlock.num2dElements(); - resize( faceBlock.num2dElements() ); + resize( num2dElements ); m_toNodesRelation.base() = faceBlock.get2dElemToNodes(); m_toEdgesRelation.base() = faceBlock.get2dElemToEdges(); @@ -156,22 +177,26 @@ void FaceElementSubRegion::copyFromCellBlock( FaceBlockABC const & faceBlock ) // we store the cell block mapping at the sub region mapping location. // It will later be transformed into a sub regions mapping. // Last, we fill the regions mapping with dummy -1 values that should all be replaced eventually. - auto const elem2dToElems = faceBlock.get2dElemToElems(); - m_2dElemToElems.resize( num2dElements, 2 ); - for( int i = 0; i < num2dElements; ++i ) + auto const & elem2dToElems = faceBlock.get2dElemToElems(); + for( int kfe = 0; kfe < num2dElements; ++kfe ) { - for( localIndex const & j: elem2dToElems.toCellIndex[i] ) + for( localIndex k=0; k const & elem2dToFaces = faceBlock.get2dElemToFaces(); + + for( localIndex kfe = 0; kfe < num2dElements; ++kfe ) + { + for( localIndex kf=0; kfglobalToLocalMap() ); + + GEOS_ERROR_IF_NE( m_unmappedGlobalIndicesInToNodes.size(), 0 ); + GEOS_ERROR_IF_NE( m_unmappedGlobalIndicesInToEdges.size(), 0 ); +// GEOS_ERROR_IF_NE( m_unmappedGlobalIndicesInToFaces.size(), 0 ); + + return unPackedSize; +} + +localIndex FaceElementSubRegion::packToFaceRelationSize( arrayView1d< localIndex const > const & packList ) const +{ + buffer_unit_type * junk = nullptr; + return packToFaceRelationImpl< false >( junk, packList ); +} + +localIndex FaceElementSubRegion::packToFaceRelation( buffer_unit_type * & buffer, + arrayView1d< localIndex const > const & packList ) const +{ + return packToFaceRelationImpl< true >( buffer, packList ); +} + + +template< bool DO_PACKING > +localIndex FaceElementSubRegion::packToFaceRelationImpl( buffer_unit_type * & buffer, + arrayView1d< localIndex const > const & packList ) const +{ + arrayView1d< globalIndex const > const localToGlobal = this->localToGlobalMap(); + arrayView1d< globalIndex const > const faceLocalToGlobal = m_toFacesRelation.relatedObjectLocalToGlobal(); + + localIndex packedSize = 0; + packedSize += bufferOps::Pack< DO_PACKING >( buffer, string( viewKeyStruct::faceListString() ) ); + packedSize += bufferOps::Pack< DO_PACKING >( buffer, + m_toFacesRelation.toViewConst(), + m_unmappedGlobalIndicesInToFaces, + packList, + localToGlobal, + faceLocalToGlobal ); + return packedSize; +} + + +localIndex FaceElementSubRegion::unpackToFaceRelation( buffer_unit_type const * & buffer, + localIndex_array & packList, + bool const GEOS_UNUSED_PARAM( overwriteUpMaps ), + bool const GEOS_UNUSED_PARAM( overwriteDownMaps ) ) +{ + localIndex unPackedSize = 0; + + string faceListString; + unPackedSize += bufferOps::Unpack( buffer, faceListString ); + GEOS_ERROR_IF_NE( faceListString, viewKeyStruct::faceListString() ); + + unPackedSize += bufferOps::Unpack( buffer, + m_toFacesRelation, + packList, + m_unmappedGlobalIndicesInToFaces, + this->globalToLocalMap(), + m_toFacesRelation.relatedObjectGlobalToLocal() ); + return unPackedSize; } @@ -367,52 +450,46 @@ localIndex FaceElementSubRegion::unpackUpDownMaps( buffer_unit_type const * & bu * @param[in,out] elem2dToFaces This mapping will be corrected if needed to match @p elem2dToElems3d. */ void fixNeighborMappingsInconsistency( string const & fractureName, - OrderedVariableToManyElementRelation const & elem2dToElems3d, + FixedToManyElementRelation const & elem2dToElems3d, FaceElementSubRegion::FaceMapType & elem2dToFaces ) { { - localIndex const num2dElems = elem2dToFaces.size(); + localIndex const num2dElems = elem2dToFaces.size( 0 ); for( int e2d = 0; e2d < num2dElems; ++e2d ) { - std::set< localIndex > const sizes{ - elem2dToFaces[e2d].size(), - elem2dToElems3d.m_toElementRegion[e2d].size(), - elem2dToElems3d.m_toElementSubRegion[e2d].size(), - elem2dToElems3d.m_toElementIndex[e2d].size() - }; - - if( sizes.size() != 1 || sizes.find( 2 ) == sizes.cend() ) + if( !( elem2dToFaces[e2d][0] == -1 || elem2dToFaces[e2d][1] == -1 || + elem2dToElems3d.m_toElementRegion[e2d][0] == -1 || elem2dToElems3d.m_toElementRegion[e2d][1] == -1 || + elem2dToElems3d.m_toElementSubRegion[e2d][0] == -1 || elem2dToElems3d.m_toElementSubRegion[e2d][1] == -1 || + elem2dToElems3d.m_toElementSubRegion[e2d][0] == -1 || elem2dToElems3d.m_toElementSubRegion[e2d][1] == -1 ) ) { - continue; - } - - localIndex const f0 = elem2dToFaces[e2d][0]; - localIndex const er0 = elem2dToElems3d.m_toElementRegion[e2d][0]; - localIndex const esr0 = elem2dToElems3d.m_toElementSubRegion[e2d][0]; - localIndex const ei0 = elem2dToElems3d.m_toElementIndex[e2d][0]; - auto const & faces0 = elem2dToElems3d.getElementRegionManager()->getRegion( er0 ).getSubRegion< CellElementSubRegion >( esr0 ).faceList()[ei0]; - - localIndex const f1 = elem2dToFaces[e2d][1]; - localIndex const er1 = elem2dToElems3d.m_toElementRegion[e2d][1]; - localIndex const esr1 = elem2dToElems3d.m_toElementSubRegion[e2d][1]; - localIndex const ei1 = elem2dToElems3d.m_toElementIndex[e2d][1]; - auto const & faces1 = elem2dToElems3d.getElementRegionManager()->getRegion( er1 ).getSubRegion< CellElementSubRegion >( esr1 ).faceList()[ei1]; - - bool const match00 = std::find( faces0.begin(), faces0.end(), f0 ) != faces0.end(); - bool const match11 = std::find( faces1.begin(), faces1.end(), f1 ) != faces1.end(); - bool const match01 = std::find( faces0.begin(), faces0.end(), f1 ) != faces0.end(); - bool const match10 = std::find( faces1.begin(), faces1.end(), f0 ) != faces1.end(); - - bool const matchCrossed = !match00 && !match11 && match01 && match10; - bool const matchStraight = match00 && match11 && !match01 && !match10; - - if( matchCrossed ) - { - std::swap( elem2dToFaces[e2d][0], elem2dToFaces[e2d][1] ); - } - else if( !matchStraight ) - { - GEOS_ERROR( "Mapping neighbor inconsistency detected for fracture " << fractureName ); + localIndex const f0 = elem2dToFaces[e2d][0]; + localIndex const er0 = elem2dToElems3d.m_toElementRegion[e2d][0]; + localIndex const esr0 = elem2dToElems3d.m_toElementSubRegion[e2d][0]; + localIndex const ei0 = elem2dToElems3d.m_toElementIndex[e2d][0]; + auto const & faces0 = elem2dToElems3d.getElementRegionManager()->getRegion( er0 ).getSubRegion< CellElementSubRegion >( esr0 ).faceList()[ei0]; + + localIndex const f1 = elem2dToFaces[e2d][1]; + localIndex const er1 = elem2dToElems3d.m_toElementRegion[e2d][1]; + localIndex const esr1 = elem2dToElems3d.m_toElementSubRegion[e2d][1]; + localIndex const ei1 = elem2dToElems3d.m_toElementIndex[e2d][1]; + auto const & faces1 = elem2dToElems3d.getElementRegionManager()->getRegion( er1 ).getSubRegion< CellElementSubRegion >( esr1 ).faceList()[ei1]; + + bool const match00 = std::find( faces0.begin(), faces0.end(), f0 ) != faces0.end(); + bool const match11 = std::find( faces1.begin(), faces1.end(), f1 ) != faces1.end(); + bool const match01 = std::find( faces0.begin(), faces0.end(), f1 ) != faces0.end(); + bool const match10 = std::find( faces1.begin(), faces1.end(), f0 ) != faces1.end(); + + bool const matchCrossed = !match00 && !match11 && match01 && match10; + bool const matchStraight = match00 && match11 && !match01 && !match10; + + if( matchCrossed ) + { + std::swap( elem2dToFaces[e2d][0], elem2dToFaces[e2d][1] ); + } + else if( !matchStraight ) + { + GEOS_ERROR( "Mapping neighbor inconsistency detected for fracture " << fractureName ); + } } } } @@ -433,6 +510,11 @@ void FaceElementSubRegion::fixUpDownMaps( bool const clearIfUnmapped ) clearIfUnmapped ); fixNeighborMappingsInconsistency( getName(), m_2dElemToElems, m_toFacesRelation ); + + GEOS_ERROR_IF_NE( m_unmappedGlobalIndicesInToNodes.size(), 0 ); + GEOS_ERROR_IF_NE( m_unmappedGlobalIndicesInToEdges.size(), 0 ); + GEOS_ERROR_IF_NE( m_unmappedGlobalIndicesInToFaces.size(), 0 ); + } /** @@ -827,7 +909,7 @@ map< localIndex, localIndex > buildEdgesToFace2d( arrayView1d< localIndex const * Even if we should have a more explicit design, * the current function resets this implicit information in our mappings. */ -void fixNodesOrder( ArrayOfArraysView< localIndex const > const elem2dToFaces, +void fixNodesOrder( arrayView2d< localIndex const > const elem2dToFaces, ArrayOfArraysView< localIndex const > const facesToNodes, ArrayOfArrays< localIndex > & elem2dToNodes ) { @@ -837,9 +919,12 @@ void fixNodesOrder( ArrayOfArraysView< localIndex const > const elem2dToFaces, std::vector< localIndex > nodesOfFace; for( localIndex fi: elem2dToFaces[e2d] ) { - for( localIndex ni: facesToNodes[fi] ) + if( fi != -1 ) { - nodesOfFace.push_back( ni ); + for( localIndex ni: facesToNodes[fi] ) + { + nodesOfFace.push_back( ni ); + } } } elem2dToNodes.clearArray( e2d ); @@ -937,10 +1022,6 @@ void FaceElementSubRegion::fixSecondaryMappings( NodeManager const & nodeManager // When there's neighbor missing, we search for a face that would lie on the collocated nodes of the fracture element. for( int e2d = 0; e2d < num2dElems; ++e2d ) { - if( m_2dElemToElems.m_toElementIndex.sizeOfArray( e2d ) >= 2 ) // All the neighbors are known. - { - continue; - } std::set< globalIndex > refNodes; if( m_toNodesRelation[e2d].size() != 0 ) @@ -977,12 +1058,12 @@ void FaceElementSubRegion::fixSecondaryMappings( NodeManager const & nodeManager for( ElemPath const & path: match->second ) { // This `if` prevents from storing the same data twice. - if( m_2dElemToElems.m_toElementIndex.sizeOfArray( e2d ) == 0 || m_2dElemToElems.m_toElementIndex[e2d][0] != path.ei ) + if( m_2dElemToElems.m_toElementIndex.size( 1 ) == 0 || m_2dElemToElems.m_toElementIndex[e2d][0] != path.ei ) { - m_2dElemToElems.m_toElementRegion.emplaceBack( e2d, path.er ); - m_2dElemToElems.m_toElementSubRegion.emplaceBack( e2d, path.esr ); - m_2dElemToElems.m_toElementIndex.emplaceBack( e2d, path.ei ); - m_toFacesRelation.emplaceBack( e2d, path.face ); + m_2dElemToElems.m_toElementRegion( e2d, 1 ) = path.er; + m_2dElemToElems.m_toElementSubRegion( e2d, 1 ) = path.esr; + m_2dElemToElems.m_toElementIndex( e2d, 1 ) = path.ei; + m_toFacesRelation( e2d, 1 ) = path.face; for( localIndex const & n: path.nodes ) { auto currentNodes = m_toNodesRelation[e2d]; @@ -1001,7 +1082,7 @@ void FaceElementSubRegion::fixSecondaryMappings( NodeManager const & nodeManager std::vector< localIndex > isolatedFractureElements; for( int e2d = 0; e2d < num2dElems; ++e2d ) { - if( m_2dElemToElems.m_toElementIndex.sizeOfArray( e2d ) < 2 && m_ghostRank[e2d] < 0 ) + if( m_2dElemToElems.m_toElementIndex.size( 1 )< 2 && m_ghostRank[e2d] < 0 ) { isolatedFractureElements.push_back( e2d ); } @@ -1053,7 +1134,7 @@ std::set< std::set< globalIndex > > FaceElementSubRegion::getCollocatedNodes() c void FaceElementSubRegion::flipFaceMap( FaceManager & faceManager, ElementRegionManager const & elemManager ) { - ArrayOfArraysView< localIndex > const & elems2dToFaces = faceList().toView(); + arrayView2d< localIndex > const & elems2dToFaces = faceList().toView(); arrayView2d< localIndex const > const & faceToElementRegionIndex = faceManager.elementRegionList(); arrayView2d< localIndex const > const & faceToElementSubRegionIndex = faceManager.elementSubRegionList(); arrayView2d< localIndex const > const & faceToElementIndex = faceManager.elementList(); @@ -1063,28 +1144,26 @@ void FaceElementSubRegion::flipFaceMap( FaceManager & faceManager, forAll< parallelHostPolicy >( this->size(), [=]( localIndex const kfe ) { - if( elems2dToFaces.sizeOfArray( kfe ) != 2 ) + if( !( elems2dToFaces[kfe][0] == -1 || elems2dToFaces[kfe][1] == -1 ) ) { - return; - } - - localIndex & f0 = elems2dToFaces[kfe][0]; - localIndex & f1 = elems2dToFaces[kfe][1]; + localIndex & f0 = elems2dToFaces[kfe][0]; + localIndex & f1 = elems2dToFaces[kfe][1]; - localIndex const er0 = faceToElementRegionIndex[f0][0]; - localIndex const esr0 = faceToElementSubRegionIndex[f0][0]; - localIndex const ek0 = faceToElementIndex[f0][0]; + localIndex const er0 = faceToElementRegionIndex[f0][0]; + localIndex const esr0 = faceToElementSubRegionIndex[f0][0]; + localIndex const ek0 = faceToElementIndex[f0][0]; - localIndex const er1 = faceToElementRegionIndex[f1][0]; - localIndex const esr1 = faceToElementSubRegionIndex[f1][0]; - localIndex const ek1 = faceToElementIndex[f1][0]; + localIndex const er1 = faceToElementRegionIndex[f1][0]; + localIndex const esr1 = faceToElementSubRegionIndex[f1][0]; + localIndex const ek1 = faceToElementIndex[f1][0]; - globalIndex const globalIndexElem0 = cellElemGlobalIndex[er0][esr0][ek0]; - globalIndex const globalIndexElem1 = cellElemGlobalIndex[er1][esr1][ek1]; + globalIndex const globalIndexElem0 = cellElemGlobalIndex[er0][esr0][ek0]; + globalIndex const globalIndexElem1 = cellElemGlobalIndex[er1][esr1][ek1]; - if( globalIndexElem0 > globalIndexElem1 ) - { - std::swap( f0, f1 ); + if( globalIndexElem0 > globalIndexElem1 ) + { + std::swap( f0, f1 ); + } } } ); @@ -1093,7 +1172,7 @@ void FaceElementSubRegion::flipFaceMap( FaceManager & faceManager, void FaceElementSubRegion::fixNeighboringFacesNormals( FaceManager & faceManager, ElementRegionManager const & elemManager ) { - ArrayOfArraysView< localIndex > const & elems2dToFaces = faceList().toView(); + arrayView2d< localIndex > const & elems2dToFaces = faceList().toView(); arrayView2d< localIndex const > const & faceToElementRegionIndex = faceManager.elementRegionList(); arrayView2d< localIndex const > const & faceToElementSubRegionIndex = faceManager.elementSubRegionList(); arrayView2d< localIndex const > const & faceToElementIndex = faceManager.elementList(); @@ -1107,44 +1186,42 @@ void FaceElementSubRegion::fixNeighboringFacesNormals( FaceManager & faceManager arrayView2d< real64 > const faceNormal = faceManager.faceNormal(); forAll< parallelHostPolicy >( this->size(), [=, &faceToNodes]( localIndex const kfe ) { - if( elems2dToFaces.sizeOfArray( kfe ) != 2 ) + if( !( elems2dToFaces[kfe][0] == -1 || elems2dToFaces[kfe][1] == -1 ) ) { - return; - } + localIndex const f0 = elems2dToFaces[kfe][0]; + localIndex const f1 = elems2dToFaces[kfe][1]; - localIndex const f0 = elems2dToFaces[kfe][0]; - localIndex const f1 = elems2dToFaces[kfe][1]; + /// Note: I am assuming that the 0 element is the elementSubregion one for faces + /// touching both a 3D and a 2D cell. + localIndex const er0 = faceToElementRegionIndex[f0][0]; + localIndex const esr0 = faceToElementSubRegionIndex[f0][0]; + localIndex const ek0 = faceToElementIndex[f0][0]; - /// Note: I am assuming that the 0 element is the elementSubregion one for faces - /// touching both a 3D and a 2D cell. - localIndex const er0 = faceToElementRegionIndex[f0][0]; - localIndex const esr0 = faceToElementSubRegionIndex[f0][0]; - localIndex const ek0 = faceToElementIndex[f0][0]; + localIndex const er1 = faceToElementRegionIndex[f1][0]; + localIndex const esr1 = faceToElementSubRegionIndex[f1][0]; + localIndex const ek1 = faceToElementIndex[f1][0]; - localIndex const er1 = faceToElementRegionIndex[f1][0]; - localIndex const esr1 = faceToElementSubRegionIndex[f1][0]; - localIndex const ek1 = faceToElementIndex[f1][0]; + real64 f0e0vector[3] = LVARRAY_TENSOROPS_INIT_LOCAL_3( faceCenter[f0] ); + real64 f1e1vector[3] = LVARRAY_TENSOROPS_INIT_LOCAL_3( faceCenter[f1] ); - real64 f0e0vector[3] = LVARRAY_TENSOROPS_INIT_LOCAL_3( faceCenter[f0] ); - real64 f1e1vector[3] = LVARRAY_TENSOROPS_INIT_LOCAL_3( faceCenter[f1] ); + LvArray::tensorOps::subtract< 3 >( f0e0vector, elemCenter[er0][esr0][ek0] ); + LvArray::tensorOps::subtract< 3 >( f1e1vector, elemCenter[er1][esr1][ek1] ); - LvArray::tensorOps::subtract< 3 >( f0e0vector, elemCenter[er0][esr0][ek0] ); - LvArray::tensorOps::subtract< 3 >( f1e1vector, elemCenter[er1][esr1][ek1] ); - - // If the vector connecting the face center and the elem center is in the same - // direction as the unit normal, we flip the normal coz it should be pointing outward - // (i.e., towards the fracture element). - if( LvArray::tensorOps::AiBi< 3 >( faceNormal[f0], f0e0vector ) < 0.0 ) - { - GEOS_WARNING( GEOS_FMT( "For fracture element {}, I had to flip the normal nf0 of face {}", kfe, f0 ) ); - LvArray::tensorOps::scale< 3 >( faceNormal[f0], -1.0 ); - std::reverse( faceToNodes[f0].begin(), faceToNodes[f0].end() ); - } - if( LvArray::tensorOps::AiBi< 3 >( faceNormal[f1], f1e1vector ) < 0.0 ) - { - GEOS_WARNING( GEOS_FMT( "For fracture element {}, I had to flip the normal nf1 of face {}", kfe, f1 ) ); - LvArray::tensorOps::scale< 3 >( faceNormal[f1], -1.0 ); - std::reverse( faceToNodes[f1].begin(), faceToNodes[f1].end() ); + // If the vector connecting the face center and the elem center is in the same + // direction as the unit normal, we flip the normal coz it should be pointing outward + // (i.e., towards the fracture element). + if( LvArray::tensorOps::AiBi< 3 >( faceNormal[f0], f0e0vector ) < 0.0 ) + { + GEOS_WARNING( GEOS_FMT( "For fracture element {}, I had to flip the normal nf0 of face {}", kfe, f0 ) ); + LvArray::tensorOps::scale< 3 >( faceNormal[f0], -1.0 ); + std::reverse( faceToNodes[f0].begin(), faceToNodes[f0].end() ); + } + if( LvArray::tensorOps::AiBi< 3 >( faceNormal[f1], f1e1vector ) < 0.0 ) + { + GEOS_WARNING( GEOS_FMT( "For fracture element {}, I had to flip the normal nf1 of face {}", kfe, f1 ) ); + LvArray::tensorOps::scale< 3 >( faceNormal[f1], -1.0 ); + std::reverse( faceToNodes[f1].begin(), faceToNodes[f1].end() ); + } } } ); diff --git a/src/coreComponents/mesh/FaceElementSubRegion.hpp b/src/coreComponents/mesh/FaceElementSubRegion.hpp index 88edf84dec2..42655d7a274 100644 --- a/src/coreComponents/mesh/FaceElementSubRegion.hpp +++ b/src/coreComponents/mesh/FaceElementSubRegion.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -39,7 +39,7 @@ class FaceElementSubRegion : public SurfaceElementSubRegion public: /// Face element to faces map type - using FaceMapType = InterObjectRelation< ArrayOfArrays< localIndex > >; + using FaceMapType = FixedOneToManyRelation; /** * @name Static factory catalog functions @@ -110,6 +110,38 @@ class FaceElementSubRegion : public SurfaceElementSubRegion bool const overwriteUpMaps, bool const overwriteDownMaps ) override; + + /** + * @brief Size of packing of the FaceElement to face relation. + * @param packList The list of face elements to pack + * @return The size of the packed data + */ + localIndex packToFaceRelationSize( arrayView1d< localIndex const > const & packList ) const; + + /** + * @brief Pack the FaceElement to face relation. + * @param buffer The buffer to pack the data into + * @param packList The list of face elements to pack + * @return The size of the packed data + */ + localIndex packToFaceRelation( buffer_unit_type * & buffer, + arrayView1d< localIndex const > const & packList ) const; + + /** + * @brief Unpack the FaceElement to face relation. + * @param buffer The buffer to unpack the data from + * @param packList The list of face elements to unpack + * @param overwriteUpMaps Flag to overwrite the up maps + * @param overwriteDownMaps Flag to overwrite the down maps + * @return The size of the unpacked data + */ + localIndex unpackToFaceRelation( buffer_unit_type const * & buffer, + array1d< localIndex > & packList, + bool const overwriteUpMaps, + bool const overwriteDownMaps ); + + + virtual void fixUpDownMaps( bool const clearIfUnmapped ) override; /** @@ -311,6 +343,23 @@ class FaceElementSubRegion : public SurfaceElementSubRegion return m_2dElemToCollocatedNodesBuckets.toViewConst(); } + /** + * @brief Get the surface element to cells map. + * @return The surface element to cells map + */ + FixedToManyElementRelation & getToCellRelation() + { + return m_2dElemToElems; + } + + /** + * @copydoc getToCellRelation() + */ + FixedToManyElementRelation const & getToCellRelation() const + { + return m_2dElemToElems; + } + private: /** @@ -324,6 +373,11 @@ class FaceElementSubRegion : public SurfaceElementSubRegion localIndex packUpDownMapsImpl( buffer_unit_type * & buffer, arrayView1d< localIndex const > const & packList ) const; + + template< bool DO_PACKING > + localIndex packToFaceRelationImpl( buffer_unit_type * & buffer, + arrayView1d< localIndex const > const & packList ) const; + /// The array of shape function derivaties. array4d< real64 > m_dNdX; @@ -339,6 +393,9 @@ class FaceElementSubRegion : public SurfaceElementSubRegion */ ArrayOfArrays< array1d< globalIndex > > m_2dElemToCollocatedNodesBuckets; + /// Map between the surface elements and the cells + FixedToManyElementRelation m_2dElemToElems; + #ifdef GEOS_USE_SEPARATION_COEFFICIENT /// Separation coefficient array1d< real64 > m_separationCoefficient; diff --git a/src/coreComponents/mesh/FaceManager.cpp b/src/coreComponents/mesh/FaceManager.cpp index b5924f7fde4..044cd1beb47 100644 --- a/src/coreComponents/mesh/FaceManager.cpp +++ b/src/coreComponents/mesh/FaceManager.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -22,6 +22,7 @@ #include "common/GEOS_RAJA_Interface.hpp" #include "common/logger/Logger.hpp" #include "common/TimingMacros.hpp" +#include "common/MpiWrapper.hpp" #include "LvArray/src/tensorOps.hpp" #include "mesh/BufferOps.hpp" #include "mesh/ElementRegionManager.hpp" @@ -123,17 +124,18 @@ void FaceManager::setDomainBoundaryObjects( ElementRegionManager const & elemReg } FaceElementSubRegion const & subRegion = region.getUniqueSubRegion< FaceElementSubRegion >(); - ArrayOfArraysView< localIndex const > const elem2dToFaces = subRegion.faceList().toViewConst(); - for( int ei = 0; ei < elem2dToFaces.size(); ++ei ) + arrayView2d< localIndex const > const elem2dToFaces = subRegion.faceList().toViewConst(); + for( int ei = 0; ei < elem2dToFaces.size( 0 ); ++ei ) { - if( elem2dToFaces.sizeOfArray( ei ) == 2 ) + if( elem2dToFaces[ei][0] == -1 || elem2dToFaces[ei][1] == -1 ) { - continue; - } - - for( localIndex const & face: elem2dToFaces[ei] ) - { - isFaceOnDomainBoundary[face] = 1; + for( localIndex const & face: elem2dToFaces[ei] ) + { + if( face != -1 ) + { + isFaceOnDomainBoundary[face] = 1; + } + } } } }; @@ -179,22 +181,25 @@ void FaceManager::setGeometricalRelations( CellBlockManagerABC const & cellBlock // The fracture subregion knows the faces it's connected to. // And since a 2d element is connected to a given face, and since a face can only have 2 neighbors, // then the second neighbor of the face is bound to be undefined (i.e. -1). - ArrayOfArraysView< localIndex const > const & elem2dToFaces = subRegion.faceList().toViewConst(); - for( localIndex ei = 0; ei < elem2dToFaces.size(); ++ei ) + arrayView2d< localIndex const > const & elem2dToFaces = subRegion.faceList().toViewConst(); + for( localIndex ei = 0; ei < elem2dToFaces.size( 0 ); ++ei ) { - for( localIndex const & face: elem2dToFaces[ei] ) + for( localIndex const & faceIndex: elem2dToFaces[ei] ) { - GEOS_ERROR_IF_EQ_MSG( m_toElements.m_toElementRegion( face, 0 ), -1, GEOS_FMT( err, face ) ); - GEOS_ERROR_IF_EQ_MSG( m_toElements.m_toElementSubRegion( face, 0 ), -1, GEOS_FMT( err, face ) ); - GEOS_ERROR_IF_EQ_MSG( m_toElements.m_toElementIndex( face, 0 ), -1, GEOS_FMT( err, face ) ); + if( faceIndex != -1 ) + { + GEOS_ERROR_IF_EQ_MSG( m_toElements.m_toElementRegion( faceIndex, 0 ), -1, GEOS_FMT( err, faceIndex ) ); + GEOS_ERROR_IF_EQ_MSG( m_toElements.m_toElementSubRegion( faceIndex, 0 ), -1, GEOS_FMT( err, faceIndex ) ); + GEOS_ERROR_IF_EQ_MSG( m_toElements.m_toElementIndex( faceIndex, 0 ), -1, GEOS_FMT( err, faceIndex ) ); - GEOS_ERROR_IF_NE_MSG( m_toElements.m_toElementRegion( face, 1 ), -1, GEOS_FMT( err, face ) ); - GEOS_ERROR_IF_NE_MSG( m_toElements.m_toElementSubRegion( face, 1 ), -1, GEOS_FMT( err, face ) ); - GEOS_ERROR_IF_NE_MSG( m_toElements.m_toElementIndex( face, 1 ), -1, GEOS_FMT( err, face ) ); + GEOS_ERROR_IF_NE_MSG( m_toElements.m_toElementRegion( faceIndex, 1 ), -1, GEOS_FMT( err, faceIndex ) ); + GEOS_ERROR_IF_NE_MSG( m_toElements.m_toElementSubRegion( faceIndex, 1 ), -1, GEOS_FMT( err, faceIndex ) ); + GEOS_ERROR_IF_NE_MSG( m_toElements.m_toElementIndex( faceIndex, 1 ), -1, GEOS_FMT( err, faceIndex ) ); - m_toElements.m_toElementRegion( face, 1 ) = er; - m_toElements.m_toElementSubRegion( face, 1 ) = esr; - m_toElements.m_toElementIndex( face, 1 ) = ei; + m_toElements.m_toElementRegion( faceIndex, 1 ) = er; + m_toElements.m_toElementSubRegion( faceIndex, 1 ) = esr; + m_toElements.m_toElementIndex( faceIndex, 1 ) = ei; + } } } }; @@ -513,6 +518,9 @@ localIndex FaceManager::unpackUpDownMaps( buffer_unit_type const * & buffer, m_toElements.getElementRegionManager(), overwriteUpMaps ); + GEOS_ERROR_IF_NE( m_unmappedGlobalIndicesInToNodes.size(), 0 ); + GEOS_ERROR_IF_NE( m_unmappedGlobalIndicesInToEdges.size(), 0 ); + return unPackedSize; } diff --git a/src/coreComponents/mesh/FaceManager.hpp b/src/coreComponents/mesh/FaceManager.hpp index 7d7693ab4d6..97fc8187671 100644 --- a/src/coreComponents/mesh/FaceManager.hpp +++ b/src/coreComponents/mesh/FaceManager.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/mesh/FieldIdentifiers.hpp b/src/coreComponents/mesh/FieldIdentifiers.hpp index 677106340e6..82a05050565 100644 --- a/src/coreComponents/mesh/FieldIdentifiers.hpp +++ b/src/coreComponents/mesh/FieldIdentifiers.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -98,11 +98,11 @@ class FieldIdentifiers * @brief Get the Location object * * @param key key used to store the list of fields in the map. - * @param location mesh location where fields defined by the key provided were registered. + * @return mesh location where fields defined by the key provided were registered. */ - void getLocation( string const & key, - FieldLocation & location ) const + FieldLocation getLocation( string const & key ) const { + FieldLocation location{}; if( key.find( m_locationKeys.nodesKey() ) != string::npos ) { location = FieldLocation::Node; @@ -123,6 +123,7 @@ class FieldIdentifiers { GEOS_ERROR( GEOS_FMT( "Invalid key, {}, was provided. Location cannot be retrieved.", key ) ); } + return location; } private: diff --git a/src/coreComponents/mesh/InterObjectRelation.hpp b/src/coreComponents/mesh/InterObjectRelation.hpp index 33e39155e52..b48f99f1a61 100644 --- a/src/coreComponents/mesh/InterObjectRelation.hpp +++ b/src/coreComponents/mesh/InterObjectRelation.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/mesh/MeshBody.cpp b/src/coreComponents/mesh/MeshBody.cpp index 80696370fb3..7695972f6d4 100644 --- a/src/coreComponents/mesh/MeshBody.cpp +++ b/src/coreComponents/mesh/MeshBody.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/mesh/MeshBody.hpp b/src/coreComponents/mesh/MeshBody.hpp index ca614f8f18f..bf06ca72501 100644 --- a/src/coreComponents/mesh/MeshBody.hpp +++ b/src/coreComponents/mesh/MeshBody.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/mesh/MeshFields.hpp b/src/coreComponents/mesh/MeshFields.hpp index e2afe94e100..dc8ff969e64 100644 --- a/src/coreComponents/mesh/MeshFields.hpp +++ b/src/coreComponents/mesh/MeshFields.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/mesh/MeshForLoopInterface.hpp b/src/coreComponents/mesh/MeshForLoopInterface.hpp index d069fbc5fc1..b7c126b1e23 100644 --- a/src/coreComponents/mesh/MeshForLoopInterface.hpp +++ b/src/coreComponents/mesh/MeshForLoopInterface.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/mesh/MeshLevel.cpp b/src/coreComponents/mesh/MeshLevel.cpp index fe3c98b6eca..be5bc7763d8 100644 --- a/src/coreComponents/mesh/MeshLevel.cpp +++ b/src/coreComponents/mesh/MeshLevel.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -339,7 +339,7 @@ void MeshLevel::generateAdjacencyLists( arrayView1d< localIndex const > const & { ArrayOfArraysView< localIndex const > const elems2dToNodes = subRegion.nodeList().toViewConst(); ArrayOfArraysView< localIndex const > const elem2dToEdges = subRegion.edgeList().toViewConst(); - ArrayOfArraysView< localIndex const > const elems2dToFaces = subRegion.faceList().toViewConst(); + arrayView2d< localIndex const > const elems2dToFaces = subRegion.faceList().toViewConst(); for( localIndex const ei: elementAdjacencySet[er][esr] ) { @@ -353,7 +353,10 @@ void MeshLevel::generateAdjacencyLists( arrayView1d< localIndex const > const & } for( localIndex const & fi: elems2dToFaces[ei] ) { - faceAdjacencySet.insert( fi ); + if( fi != -1 ) + { + faceAdjacencySet.insert( fi ); + } } } }; diff --git a/src/coreComponents/mesh/MeshLevel.hpp b/src/coreComponents/mesh/MeshLevel.hpp index dee7e31bd1e..f61892216c4 100644 --- a/src/coreComponents/mesh/MeshLevel.hpp +++ b/src/coreComponents/mesh/MeshLevel.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/mesh/MeshManager.cpp b/src/coreComponents/mesh/MeshManager.cpp index 3fa5ab4825a..36fdfb0bbfa 100644 --- a/src/coreComponents/mesh/MeshManager.cpp +++ b/src/coreComponents/mesh/MeshManager.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -20,7 +20,6 @@ #include "mesh/mpiCommunications/SpatialPartition.hpp" #include "generators/CellBlockManagerABC.hpp" -#include "generators/MeshGeneratorBase.hpp" #include "mesh/mpiCommunications/CommunicationTools.hpp" #include "common/TimingMacros.hpp" @@ -43,9 +42,10 @@ MeshManager::~MeshManager() Group * MeshManager::createChild( string const & childKey, string const & childName ) { - GEOS_LOG_RANK_0( "Adding Mesh: " << childKey << ", " << childName ); - std::unique_ptr< MeshGeneratorBase > solver = MeshGeneratorBase::CatalogInterface::factory( childKey, childName, this ); - return &this->registerGroup< MeshGeneratorBase >( childName, std::move( solver ) ); + GEOS_LOG_RANK_0( GEOS_FMT( "{}: adding {} {}", getName(), childKey, childName ) ); + std::unique_ptr< MeshGeneratorBase > mesh = + MeshGeneratorBase::CatalogInterface::factory( childKey, getDataContext(), childName, this ); + return &this->registerGroup< MeshGeneratorBase >( childName, std::move( mesh ) ); } @@ -81,7 +81,7 @@ void MeshManager::generateMeshes( DomainPartition & domain ) void MeshManager::generateMeshLevels( DomainPartition & domain ) { - this->forSubGroups< MeshGeneratorBase >( [&]( MeshGeneratorBase & meshGen ) + forSubGroups< MeshGeneratorBase >( [&]( MeshGeneratorBase & meshGen ) { string const & meshName = meshGen.getName(); domain.getMeshBodies().registerGroup< MeshBody >( meshName ).createMeshLevel( MeshBody::groupStructKeys::baseDiscretizationString() ); @@ -126,50 +126,10 @@ void MeshManager::importFields( DomainPartition & domain ) } GEOS_LOG_RANK_0( GEOS_FMT( "{}: importing field data from mesh dataset", generator.getName() ) ); - - auto const importFields = [&generator]( ElementRegionBase const & region, - ElementSubRegionBase & subRegion, - MeshGeneratorBase::Block block, - std::map< string, string > const & fieldsMapping, - FieldIdentifiers & fieldsToBeSync ) - { - std::unordered_set< string > const materialWrapperNames = getMaterialWrapperNames( subRegion ); - // Writing properties - for( auto const & pair : fieldsMapping ) - { - string const & meshFieldName = pair.first; - string const & geosFieldName = pair.second; - // Find destination - if( !subRegion.hasWrapper( geosFieldName ) ) - { - // Skip - the user may have not enabled a particular physics model/solver on this destination region. - if( generator.getLogLevel() >= 1 ) - { - GEOS_LOG_RANK_0( "Skipping import of " << meshFieldName << " -> " << geosFieldName << - " on " << region.getName() << "/" << subRegion.getName() << " (field not found)" ); - } - - continue; - } - - // Now that we know that the subRegion has this wrapper, - // we can add the geosFieldName to the list of fields to synchronize - fieldsToBeSync.addElementFields( { geosFieldName }, { region.getName() } ); - WrapperBase & wrapper = subRegion.getWrapperBase( geosFieldName ); - if( generator.getLogLevel() >= 1 ) - { - GEOS_LOG_RANK_0( "Importing field " << meshFieldName << " into " << geosFieldName << - " on " << region.getName() << "/" << subRegion.getName() ); - } - - bool const isMaterialField = materialWrapperNames.count( geosFieldName ) > 0 && wrapper.numArrayDims() > 1; - generator.importFieldOnArray( block, subRegion.getName(), meshFieldName, isMaterialField, wrapper ); - } - }; - - dataRepository::Group & meshLevels = domain.getMeshBody( generator.getName() ).getMeshLevels(); - meshLevels.forSubGroups< MeshLevel >( [&]( MeshLevel & meshLevel ) + MeshBody & meshBody = domain.getMeshBody( generator.getName() ); + meshBody.forMeshLevels( [&]( MeshLevel & meshLevel ) { + GEOS_LOG_RANK_0( GEOS_FMT( " mesh level = {}", meshLevel.getName() ) ); FieldIdentifiers fieldsToBeSync; meshLevel.getElemManager().forElementSubRegionsComplete< CellElementSubRegion >( [&]( localIndex, @@ -177,7 +137,8 @@ void MeshManager::importFields( DomainPartition & domain ) ElementRegionBase const & region, CellElementSubRegion & subRegion ) { - importFields( region, subRegion, MeshGeneratorBase::Block::VOLUMIC, generator.getVolumicFieldsMapping(), fieldsToBeSync ); + GEOS_LOG_RANK_0( GEOS_FMT( " volumic fields on {}/{}", region.getName(), subRegion.getName() ) ); + importFields( generator, region.getName(), subRegion, MeshGeneratorBase::Block::VOLUMIC, generator.getVolumicFieldsMapping(), fieldsToBeSync ); } ); meshLevel.getElemManager().forElementSubRegionsComplete< FaceElementSubRegion >( [&]( localIndex, @@ -185,7 +146,8 @@ void MeshManager::importFields( DomainPartition & domain ) ElementRegionBase const & region, FaceElementSubRegion & subRegion ) { - importFields( region, subRegion, MeshGeneratorBase::Block::SURFACIC, generator.getSurfacicFieldsMapping(), fieldsToBeSync ); + GEOS_LOG_RANK_0( GEOS_FMT( " surfaic fields on {}/{}", region.getName(), subRegion.getName() ) ); + importFields( generator, region.getName(), subRegion, MeshGeneratorBase::Block::SURFACIC, generator.getSurfacicFieldsMapping(), fieldsToBeSync ); } ); CommunicationTools::getInstance().synchronizeFields( fieldsToBeSync, meshLevel, domain.getNeighbors(), false ); // TODO Validate this. } ); @@ -197,4 +159,43 @@ void MeshManager::importFields( DomainPartition & domain ) } ); } +void MeshManager::importFields( MeshGeneratorBase const & generator, + string const & regionName, + ElementSubRegionBase & subRegion, + MeshGeneratorBase::Block const block, + std::map< string, string > const & fieldsMapping, + FieldIdentifiers & fieldsToBeSync ) +{ + std::unordered_set< string > const materialWrapperNames = getMaterialWrapperNames( subRegion ); + // Writing properties + for( auto const & pair : fieldsMapping ) + { + string const & meshFieldName = pair.first; + string const & geosFieldName = pair.second; + // Find destination + if( !subRegion.hasWrapper( geosFieldName ) ) + { + // Skip - the user may have not enabled a particular physics model/solver on this destination region. + if( generator.getLogLevel() >= 1 ) + { + GEOS_LOG_RANK_0( GEOS_FMT( " Skipping import of {} -> {} (field not found)", meshFieldName, geosFieldName ) ); + } + + continue; + } + + // Now that we know that the subRegion has this wrapper, + // we can add the geosFieldName to the list of fields to synchronize + fieldsToBeSync.addElementFields( { geosFieldName }, { regionName } ); + WrapperBase & wrapper = subRegion.getWrapperBase( geosFieldName ); + if( generator.getLogLevel() >= 1 ) + { + GEOS_LOG_RANK_0( GEOS_FMT( " {} -> {}", meshFieldName, geosFieldName ) ); + } + + bool const isMaterialField = materialWrapperNames.count( geosFieldName ) > 0 && wrapper.numArrayDims() > 1; + generator.importFieldOnArray( block, subRegion.getName(), meshFieldName, isMaterialField, wrapper ); + } +} + } /* namespace geos */ diff --git a/src/coreComponents/mesh/MeshManager.hpp b/src/coreComponents/mesh/MeshManager.hpp index c00c8cc093b..d2f7eff56d0 100644 --- a/src/coreComponents/mesh/MeshManager.hpp +++ b/src/coreComponents/mesh/MeshManager.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -22,6 +22,7 @@ #include "dataRepository/Group.hpp" #include "mesh/DomainPartition.hpp" +#include "generators/MeshGeneratorBase.hpp" namespace geos { @@ -74,6 +75,22 @@ class MeshManager : public dataRepository::Group */ void importFields( DomainPartition & domain ); + /** + * @brief Import fields data + * @param[in] generator reference to mesh generator + * @param[in] regionName name of the region + * @param[in] subRegion reference to the subregion + * @param[in] block block type + * @param[in] fieldsMapping mapping for fields + * @param[out] fieldsToBeSync list of fields to synchronize + */ + static void importFields( MeshGeneratorBase const & generator, + string const & regionName, + ElementSubRegionBase & subRegion, + MeshGeneratorBase::Block block, + std::map< string, string > const & fieldsMapping, + FieldIdentifiers & fieldsToBeSync ); + private: /** diff --git a/src/coreComponents/mesh/MeshObjectPath.cpp b/src/coreComponents/mesh/MeshObjectPath.cpp index 4607ad0416e..31481e53b72 100644 --- a/src/coreComponents/mesh/MeshObjectPath.cpp +++ b/src/coreComponents/mesh/MeshObjectPath.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/mesh/MeshObjectPath.hpp b/src/coreComponents/mesh/MeshObjectPath.hpp index 832ef9a5548..5aa5ec98758 100644 --- a/src/coreComponents/mesh/MeshObjectPath.hpp +++ b/src/coreComponents/mesh/MeshObjectPath.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/mesh/NodeManager.cpp b/src/coreComponents/mesh/NodeManager.cpp index d59752f09da..55f6aed4568 100644 --- a/src/coreComponents/mesh/NodeManager.cpp +++ b/src/coreComponents/mesh/NodeManager.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -26,6 +26,7 @@ #include "mesh/FaceManager.hpp" #include "mesh/ToElementRelation.hpp" #include "mesh/utilities/MeshMapUtilities.hpp" +#include "common/MpiWrapper.hpp" namespace geos { @@ -271,7 +272,7 @@ localIndex NodeManager::unpackUpDownMaps( buffer_unit_type const * & buffer, string temp; unPackedSize += bufferOps::Unpack( buffer, temp ); - GEOS_ERROR_IF( temp != viewKeyStruct::edgeListString(), "" ); + GEOS_ERROR_IF_NE( temp, viewKeyStruct::edgeListString() ); unPackedSize += bufferOps::Unpack( buffer, m_toEdgesRelation, packList, @@ -360,6 +361,90 @@ void NodeManager::depopulateUpMaps( std::set< localIndex > const & receivedNodes } } -REGISTER_CATALOG_ENTRY( ObjectManagerBase, NodeManager, string const &, Group * const ) +void NodeManager::outputObjectConnectivity() const +{ + + int const numRanks = MpiWrapper::commSize(); + int const thisRank = MpiWrapper::commRank(); + + for( int rank=0; rankgetName().c_str() ); + + printf( " Reference positions:\n" ); + for( localIndex a=0; asize(); ++a ) + { + printf( " %3d( %3lld ): %6.2f, %6.2f, %6.2f \n", a, m_localToGlobalMap( a ), m_referencePosition( a, 0 ), m_referencePosition( a, 1 ), m_referencePosition( a, 2 ) ); + } + + printf( "\n Reference positions (sorted by global):\n" ); + map< globalIndex, localIndex > const sortedGlobalToLocalMap( m_globalToLocalMap.begin(), m_globalToLocalMap.end()); + for( auto indexPair : sortedGlobalToLocalMap ) + { + localIndex const a = indexPair.second; + printf( " %3d( %3lld ): %6.2f, %6.2f, %6.2f \n", a, m_localToGlobalMap( a ), m_referencePosition( a, 0 ), m_referencePosition( a, 1 ), m_referencePosition( a, 2 ) ); + } + + printf( " toEdgesRelation: \n" ); + arrayView1d< globalIndex const > const & edgeLocalToGlobal = m_toEdgesRelation.relatedObjectLocalToGlobal(); + for( localIndex a=0; asize(); ++a ) + { + printf( " %3d(%3lld): ", a, m_localToGlobalMap( a ) ); + + for( localIndex b=0; b const & faceLocalToGlobal = m_toFacesRelation.relatedObjectLocalToGlobal(); + for( localIndex a=0; asize(); ++a ) + { + printf( " %3d(%3lld): ", a, m_localToGlobalMap( a ) ); + + for( localIndex b=0; bgetGroup( ParticleManager::groupKeyStruct::particleRegionsGroup() ); return &particleRegions.registerGroup( childName, - CatalogInterface::factory( childKey, childName, &particleRegions ) ); - + CatalogInterface::factory( childKey, getDataContext(), + childName, &particleRegions ) ); } void ParticleManager::expandObjectCatalogs() diff --git a/src/coreComponents/mesh/ParticleManager.hpp b/src/coreComponents/mesh/ParticleManager.hpp index f123471b9c3..2af33a6eb76 100644 --- a/src/coreComponents/mesh/ParticleManager.hpp +++ b/src/coreComponents/mesh/ParticleManager.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/mesh/ParticleRegion.cpp b/src/coreComponents/mesh/ParticleRegion.cpp index a18cb3e32dc..d79e35ade22 100644 --- a/src/coreComponents/mesh/ParticleRegion.cpp +++ b/src/coreComponents/mesh/ParticleRegion.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/mesh/ParticleRegion.hpp b/src/coreComponents/mesh/ParticleRegion.hpp index 7295fb8c029..4967a043200 100644 --- a/src/coreComponents/mesh/ParticleRegion.hpp +++ b/src/coreComponents/mesh/ParticleRegion.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/mesh/ParticleRegionBase.cpp b/src/coreComponents/mesh/ParticleRegionBase.cpp index 1503dcf6947..8dff7c56f96 100644 --- a/src/coreComponents/mesh/ParticleRegionBase.cpp +++ b/src/coreComponents/mesh/ParticleRegionBase.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/mesh/ParticleRegionBase.hpp b/src/coreComponents/mesh/ParticleRegionBase.hpp index 7989c1392f1..ae551db35ba 100644 --- a/src/coreComponents/mesh/ParticleRegionBase.hpp +++ b/src/coreComponents/mesh/ParticleRegionBase.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/mesh/ParticleSubRegion.cpp b/src/coreComponents/mesh/ParticleSubRegion.cpp index 4f1380347af..ea30521dc70 100644 --- a/src/coreComponents/mesh/ParticleSubRegion.cpp +++ b/src/coreComponents/mesh/ParticleSubRegion.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/mesh/ParticleSubRegion.hpp b/src/coreComponents/mesh/ParticleSubRegion.hpp index 6fef225e1e4..1f9111b43d9 100644 --- a/src/coreComponents/mesh/ParticleSubRegion.hpp +++ b/src/coreComponents/mesh/ParticleSubRegion.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/mesh/ParticleSubRegionBase.cpp b/src/coreComponents/mesh/ParticleSubRegionBase.cpp index 78b7fb20560..829f1f4a376 100644 --- a/src/coreComponents/mesh/ParticleSubRegionBase.cpp +++ b/src/coreComponents/mesh/ParticleSubRegionBase.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/mesh/ParticleSubRegionBase.hpp b/src/coreComponents/mesh/ParticleSubRegionBase.hpp index deb99881a86..b89af32a1ab 100644 --- a/src/coreComponents/mesh/ParticleSubRegionBase.hpp +++ b/src/coreComponents/mesh/ParticleSubRegionBase.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/mesh/ParticleType.hpp b/src/coreComponents/mesh/ParticleType.hpp index b221f538084..3a61803ebcb 100644 --- a/src/coreComponents/mesh/ParticleType.hpp +++ b/src/coreComponents/mesh/ParticleType.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/mesh/Perforation.cpp b/src/coreComponents/mesh/Perforation.cpp index fdfa6170d0f..74ade6d4269 100644 --- a/src/coreComponents/mesh/Perforation.cpp +++ b/src/coreComponents/mesh/Perforation.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/mesh/Perforation.hpp b/src/coreComponents/mesh/Perforation.hpp index e225b2d53c1..5a3a3ae8721 100644 --- a/src/coreComponents/mesh/Perforation.hpp +++ b/src/coreComponents/mesh/Perforation.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/mesh/PerforationData.cpp b/src/coreComponents/mesh/PerforationData.cpp index 536e03f51ad..4363c2ac1cb 100644 --- a/src/coreComponents/mesh/PerforationData.cpp +++ b/src/coreComponents/mesh/PerforationData.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/mesh/PerforationData.hpp b/src/coreComponents/mesh/PerforationData.hpp index f8f2e801c40..1bc24f45a1f 100644 --- a/src/coreComponents/mesh/PerforationData.hpp +++ b/src/coreComponents/mesh/PerforationData.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/mesh/PerforationFields.hpp b/src/coreComponents/mesh/PerforationFields.hpp index 263c7254078..b9438b1afd0 100644 --- a/src/coreComponents/mesh/PerforationFields.hpp +++ b/src/coreComponents/mesh/PerforationFields.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/mesh/SurfaceElementRegion.cpp b/src/coreComponents/mesh/SurfaceElementRegion.cpp index 78233703bd1..e6b47dbae4d 100644 --- a/src/coreComponents/mesh/SurfaceElementRegion.cpp +++ b/src/coreComponents/mesh/SurfaceElementRegion.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -20,6 +20,7 @@ #include "MeshFields.hpp" #include "EdgeManager.hpp" #include "SurfaceElementRegion.hpp" +#include "common/MpiWrapper.hpp" namespace geos @@ -124,7 +125,6 @@ localIndex SurfaceElementRegion::addToFractureMesh( real64 const time_np1, LvArray::tensorOps::copy< 3 >( elemCenter[ kfe ], faceCenter[ faceIndices[ 0 ] ] ); - faceMap.resizeArray( kfe, 2 ); faceMap[kfe][0] = faceIndices[0]; faceMap[kfe][1] = faceIndices[1]; @@ -168,19 +168,20 @@ localIndex SurfaceElementRegion::addToFractureMesh( real64 const time_np1, } // Add the cell region/subregion/index to the faceElementToCells map - OrderedVariableToManyElementRelation & faceElementsToCells = subRegion.getToCellRelation(); + FixedToManyElementRelation & faceElementsToCells = subRegion.getToCellRelation(); for( localIndex ke = 0; ke < 2; ++ke ) { + localIndex const er = faceToElementRegion[faceIndices[ke]][ke]; localIndex const esr = faceToElementSubRegion[faceIndices[ke]][ke]; localIndex const ei = faceToElementIndex[faceIndices[ke]][ke]; if( er != -1 && esr != -1 && ei != -1 ) { - faceElementsToCells.m_toElementRegion.emplaceBack( kfe, er ); - faceElementsToCells.m_toElementSubRegion.emplaceBack( kfe, esr ); - faceElementsToCells.m_toElementIndex.emplaceBack( kfe, ei ); + faceElementsToCells.m_toElementRegion[kfe][ke] = er; + faceElementsToCells.m_toElementSubRegion[kfe][ke] = esr; + faceElementsToCells.m_toElementIndex[kfe][ke] = ei; } } @@ -214,7 +215,7 @@ localIndex SurfaceElementRegion::addToFractureMesh( real64 const time_np1, { SortedArrayView< localIndex const > const & faceSet = faceManager->sets().getReference< SortedArray< localIndex > >( setIter.first ); SortedArray< localIndex > & faceElementSet = subRegion.sets().registerWrapper< SortedArray< localIndex > >( setIter.first ).reference(); - for( localIndex a = 0; a < faceMap.size(); ++a ) + for( localIndex a = 0; a < faceMap.size( 0 ); ++a ) { if( faceSet.count( faceMap[a][0] ) ) { diff --git a/src/coreComponents/mesh/SurfaceElementRegion.hpp b/src/coreComponents/mesh/SurfaceElementRegion.hpp index 9abd8a6ed06..f15de2d63f6 100644 --- a/src/coreComponents/mesh/SurfaceElementRegion.hpp +++ b/src/coreComponents/mesh/SurfaceElementRegion.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/mesh/SurfaceElementSubRegion.cpp b/src/coreComponents/mesh/SurfaceElementSubRegion.cpp index d763dfe41ba..3b371106393 100644 --- a/src/coreComponents/mesh/SurfaceElementSubRegion.cpp +++ b/src/coreComponents/mesh/SurfaceElementSubRegion.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -31,7 +31,6 @@ using namespace dataRepository; SurfaceElementSubRegion::SurfaceElementSubRegion( string const & name, dataRepository::Group * const parent ): ElementSubRegionBase( name, parent ), - m_2dElemToElems(), m_unmappedGlobalIndicesInToNodes(), m_toNodesRelation(), m_toEdgesRelation(), @@ -47,18 +46,6 @@ SurfaceElementSubRegion::SurfaceElementSubRegion( string const & name, registerWrapper( viewKeyStruct::edgeListString(), &m_toEdgesRelation ). setDescription( "Map to the edges attached to each SurfaceElement." ); - registerWrapper( viewKeyStruct::surfaceElementsToCellRegionsString(), &m_2dElemToElems.m_toElementRegion ). - setPlotLevel( PlotLevel::NOPLOT ). - setDescription( "A map of face element local indices to the cell local indices" ); - - registerWrapper( viewKeyStruct::surfaceElementsToCellSubRegionsString(), &m_2dElemToElems.m_toElementSubRegion ). - setPlotLevel( PlotLevel::NOPLOT ). - setDescription( "A map of face element local indices to the cell local indices" ); - - registerWrapper( viewKeyStruct::surfaceElementsToCellIndexString(), &m_2dElemToElems.m_toElementIndex ). - setPlotLevel( PlotLevel::NOPLOT ). - setDescription( "A map of face element local indices to the cell local indices" ); - registerField( fields::elementAperture{}, &m_elementAperture ); registerField( fields::elementArea{}, &m_elementArea ); @@ -78,8 +65,6 @@ SurfaceElementSubRegion::SurfaceElementSubRegion( string const & name, viewKeyStruct::surfaceElementsToCellSubRegionsString(), viewKeyStruct::surfaceElementsToCellIndexString() } ); - // TODO there has to be a cleaner way than this. - m_2dElemToElems.setElementRegionManager( dynamicCast< ElementRegionManager & >( getParent().getParent().getParent().getParent() ) ); } diff --git a/src/coreComponents/mesh/SurfaceElementSubRegion.hpp b/src/coreComponents/mesh/SurfaceElementSubRegion.hpp index 0860c98d574..f2c367b475d 100644 --- a/src/coreComponents/mesh/SurfaceElementSubRegion.hpp +++ b/src/coreComponents/mesh/SurfaceElementSubRegion.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -154,23 +154,6 @@ class SurfaceElementSubRegion : public ElementSubRegionBase localIndex numNodesPerElement( localIndex const k ) const final { return m_toNodesRelation[k].size(); } - /** - * @brief Get the surface element to cells map. - * @return The surface element to cells map - */ - OrderedVariableToManyElementRelation & getToCellRelation() - { - return m_2dElemToElems; - } - - /** - * @copydoc getToCellRelation() - */ - OrderedVariableToManyElementRelation const & getToCellRelation() const - { - return m_2dElemToElems; - } - ///@} @@ -283,9 +266,6 @@ class SurfaceElementSubRegion : public ElementSubRegionBase protected: - /// Map between the surface elements and the cells - OrderedVariableToManyElementRelation m_2dElemToElems; - /// Unmapped surface elements to nodes map map< localIndex, array1d< globalIndex > > m_unmappedGlobalIndicesInToNodes; diff --git a/src/coreComponents/mesh/ToElementRelation.cpp b/src/coreComponents/mesh/ToElementRelation.cpp index 6f3bfb37b7e..2e657bb51d4 100644 --- a/src/coreComponents/mesh/ToElementRelation.cpp +++ b/src/coreComponents/mesh/ToElementRelation.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/mesh/ToElementRelation.hpp b/src/coreComponents/mesh/ToElementRelation.hpp index b596b273fa3..097b58faea5 100644 --- a/src/coreComponents/mesh/ToElementRelation.hpp +++ b/src/coreComponents/mesh/ToElementRelation.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/mesh/ToParticleRelation.cpp b/src/coreComponents/mesh/ToParticleRelation.cpp index 8b39e66e06d..78989d32479 100644 --- a/src/coreComponents/mesh/ToParticleRelation.cpp +++ b/src/coreComponents/mesh/ToParticleRelation.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/mesh/ToParticleRelation.hpp b/src/coreComponents/mesh/ToParticleRelation.hpp index fc539e24f71..f9e0e540d40 100644 --- a/src/coreComponents/mesh/ToParticleRelation.hpp +++ b/src/coreComponents/mesh/ToParticleRelation.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/mesh/WellElementRegion.cpp b/src/coreComponents/mesh/WellElementRegion.cpp index a9093f7679e..ec70f49d042 100644 --- a/src/coreComponents/mesh/WellElementRegion.cpp +++ b/src/coreComponents/mesh/WellElementRegion.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/mesh/WellElementRegion.hpp b/src/coreComponents/mesh/WellElementRegion.hpp index b4abdd08027..5a41cf19526 100644 --- a/src/coreComponents/mesh/WellElementRegion.hpp +++ b/src/coreComponents/mesh/WellElementRegion.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/mesh/WellElementSubRegion.cpp b/src/coreComponents/mesh/WellElementSubRegion.cpp index daf53c67621..cd8d5cde24f 100644 --- a/src/coreComponents/mesh/WellElementSubRegion.cpp +++ b/src/coreComponents/mesh/WellElementSubRegion.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/mesh/WellElementSubRegion.hpp b/src/coreComponents/mesh/WellElementSubRegion.hpp index 0ddc7583e66..9abc515064b 100644 --- a/src/coreComponents/mesh/WellElementSubRegion.hpp +++ b/src/coreComponents/mesh/WellElementSubRegion.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/mesh/generators/CellBlock.cpp b/src/coreComponents/mesh/generators/CellBlock.cpp index 97ce7e08a74..cd60545c5e9 100644 --- a/src/coreComponents/mesh/generators/CellBlock.cpp +++ b/src/coreComponents/mesh/generators/CellBlock.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/mesh/generators/CellBlock.hpp b/src/coreComponents/mesh/generators/CellBlock.hpp index 4d704b62a8e..6fa0de501a9 100644 --- a/src/coreComponents/mesh/generators/CellBlock.hpp +++ b/src/coreComponents/mesh/generators/CellBlock.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/mesh/generators/CellBlockABC.hpp b/src/coreComponents/mesh/generators/CellBlockABC.hpp index 9c1427b7a74..7749ce687fe 100644 --- a/src/coreComponents/mesh/generators/CellBlockABC.hpp +++ b/src/coreComponents/mesh/generators/CellBlockABC.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/mesh/generators/CellBlockManager.cpp b/src/coreComponents/mesh/generators/CellBlockManager.cpp index 2db3b3cfff2..8ecabcba9ea 100644 --- a/src/coreComponents/mesh/generators/CellBlockManager.cpp +++ b/src/coreComponents/mesh/generators/CellBlockManager.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -46,6 +46,7 @@ void CellBlockManager::resize( integer_array const & numElements, Group * CellBlockManager::createChild( string const & GEOS_UNUSED_PARAM( childKey ), string const & GEOS_UNUSED_PARAM( childName ) ) { + // Unused as all children are created within the constructor return nullptr; } diff --git a/src/coreComponents/mesh/generators/CellBlockManager.hpp b/src/coreComponents/mesh/generators/CellBlockManager.hpp index dcb15629251..4e8d2688564 100644 --- a/src/coreComponents/mesh/generators/CellBlockManager.hpp +++ b/src/coreComponents/mesh/generators/CellBlockManager.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/mesh/generators/CellBlockManagerABC.hpp b/src/coreComponents/mesh/generators/CellBlockManagerABC.hpp index 3c474520389..c68c2a1bf13 100644 --- a/src/coreComponents/mesh/generators/CellBlockManagerABC.hpp +++ b/src/coreComponents/mesh/generators/CellBlockManagerABC.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/mesh/generators/CellBlockUtilities.cpp b/src/coreComponents/mesh/generators/CellBlockUtilities.cpp index bbb246700de..6c2f902e556 100644 --- a/src/coreComponents/mesh/generators/CellBlockUtilities.cpp +++ b/src/coreComponents/mesh/generators/CellBlockUtilities.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/mesh/generators/CellBlockUtilities.hpp b/src/coreComponents/mesh/generators/CellBlockUtilities.hpp index dcfdc1d5dd2..ab2d83b52ba 100644 --- a/src/coreComponents/mesh/generators/CellBlockUtilities.hpp +++ b/src/coreComponents/mesh/generators/CellBlockUtilities.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/mesh/generators/CollocatedNodes.cpp b/src/coreComponents/mesh/generators/CollocatedNodes.cpp index 149c49b93dd..89f6fdcd484 100644 --- a/src/coreComponents/mesh/generators/CollocatedNodes.cpp +++ b/src/coreComponents/mesh/generators/CollocatedNodes.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/mesh/generators/CollocatedNodes.hpp b/src/coreComponents/mesh/generators/CollocatedNodes.hpp index 73f00f8d6b3..54fea6afef7 100644 --- a/src/coreComponents/mesh/generators/CollocatedNodes.hpp +++ b/src/coreComponents/mesh/generators/CollocatedNodes.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/mesh/generators/ExternalMeshGeneratorBase.cpp b/src/coreComponents/mesh/generators/ExternalMeshGeneratorBase.cpp index d05abf7a680..ff3cd238c91 100644 --- a/src/coreComponents/mesh/generators/ExternalMeshGeneratorBase.cpp +++ b/src/coreComponents/mesh/generators/ExternalMeshGeneratorBase.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/mesh/generators/ExternalMeshGeneratorBase.hpp b/src/coreComponents/mesh/generators/ExternalMeshGeneratorBase.hpp index fd1a006c192..f01d3938b7b 100644 --- a/src/coreComponents/mesh/generators/ExternalMeshGeneratorBase.hpp +++ b/src/coreComponents/mesh/generators/ExternalMeshGeneratorBase.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/mesh/generators/FaceBlock.cpp b/src/coreComponents/mesh/generators/FaceBlock.cpp index 478a33ae05f..717f3395f99 100644 --- a/src/coreComponents/mesh/generators/FaceBlock.cpp +++ b/src/coreComponents/mesh/generators/FaceBlock.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/mesh/generators/FaceBlock.hpp b/src/coreComponents/mesh/generators/FaceBlock.hpp index be458a85067..55b0d5840b8 100644 --- a/src/coreComponents/mesh/generators/FaceBlock.hpp +++ b/src/coreComponents/mesh/generators/FaceBlock.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/mesh/generators/FaceBlockABC.hpp b/src/coreComponents/mesh/generators/FaceBlockABC.hpp index 98fdbcfe856..2df82db9913 100644 --- a/src/coreComponents/mesh/generators/FaceBlockABC.hpp +++ b/src/coreComponents/mesh/generators/FaceBlockABC.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/mesh/generators/InternalMeshGenerator.cpp b/src/coreComponents/mesh/generators/InternalMeshGenerator.cpp index 0536ce29fbe..99fe38fb059 100644 --- a/src/coreComponents/mesh/generators/InternalMeshGenerator.cpp +++ b/src/coreComponents/mesh/generators/InternalMeshGenerator.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -603,10 +603,9 @@ void InternalMeshGenerator::fillCellBlockManager( CellBlockManager & cellBlockMa { elemCenterCoordsLocal[k] = m_min[dim] + ( m_max[dim] - m_min[dim] ) * ( k + 0.5 ) / m_numElemsTotal[dim]; } - MpiWrapper::allReduce( elemCenterCoordsLocal.data(), - elemCenterCoords[dim].data(), - m_numElemsTotal[dim], - MPI_MAX, + MpiWrapper::allReduce( elemCenterCoordsLocal, + elemCenterCoords[dim], + MpiWrapper::Reduction::Max, MPI_COMM_GEOS ); } diff --git a/src/coreComponents/mesh/generators/InternalMeshGenerator.hpp b/src/coreComponents/mesh/generators/InternalMeshGenerator.hpp index 40b0b01ee90..c9d86cc35a7 100644 --- a/src/coreComponents/mesh/generators/InternalMeshGenerator.hpp +++ b/src/coreComponents/mesh/generators/InternalMeshGenerator.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/mesh/generators/InternalWellGenerator.cpp b/src/coreComponents/mesh/generators/InternalWellGenerator.cpp index ae15917ebc1..ffffbd7e3a8 100644 --- a/src/coreComponents/mesh/generators/InternalWellGenerator.cpp +++ b/src/coreComponents/mesh/generators/InternalWellGenerator.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -63,5 +63,5 @@ void InternalWellGenerator::postInputInitialization() } -REGISTER_CATALOG_ENTRY( WellGeneratorBase, InternalWellGenerator, string const &, Group * const ) +REGISTER_CATALOG_ENTRY( MeshComponentBase, InternalWellGenerator, string const &, Group * const ) } diff --git a/src/coreComponents/mesh/generators/InternalWellGenerator.hpp b/src/coreComponents/mesh/generators/InternalWellGenerator.hpp index ff937a3d000..6f58313f1b7 100644 --- a/src/coreComponents/mesh/generators/InternalWellGenerator.hpp +++ b/src/coreComponents/mesh/generators/InternalWellGenerator.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/mesh/generators/InternalWellboreGenerator.cpp b/src/coreComponents/mesh/generators/InternalWellboreGenerator.cpp index 78a2ab785df..008ff4f91f3 100644 --- a/src/coreComponents/mesh/generators/InternalWellboreGenerator.cpp +++ b/src/coreComponents/mesh/generators/InternalWellboreGenerator.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/mesh/generators/InternalWellboreGenerator.hpp b/src/coreComponents/mesh/generators/InternalWellboreGenerator.hpp index c4b63aec5ac..5076a9e39c1 100644 --- a/src/coreComponents/mesh/generators/InternalWellboreGenerator.hpp +++ b/src/coreComponents/mesh/generators/InternalWellboreGenerator.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/mesh/generators/LineBlock.cpp b/src/coreComponents/mesh/generators/LineBlock.cpp index 72fd83d301d..d87b3a63240 100644 --- a/src/coreComponents/mesh/generators/LineBlock.cpp +++ b/src/coreComponents/mesh/generators/LineBlock.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/mesh/generators/LineBlock.hpp b/src/coreComponents/mesh/generators/LineBlock.hpp index 137af0bca80..e2af5724ec5 100644 --- a/src/coreComponents/mesh/generators/LineBlock.hpp +++ b/src/coreComponents/mesh/generators/LineBlock.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/mesh/generators/LineBlockABC.hpp b/src/coreComponents/mesh/generators/LineBlockABC.hpp index ca64400d1e1..2855789ed66 100644 --- a/src/coreComponents/mesh/generators/LineBlockABC.hpp +++ b/src/coreComponents/mesh/generators/LineBlockABC.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/mesh/generators/MeshComponentBase.cpp b/src/coreComponents/mesh/generators/MeshComponentBase.cpp new file mode 100644 index 00000000000..75742a87e30 --- /dev/null +++ b/src/coreComponents/mesh/generators/MeshComponentBase.cpp @@ -0,0 +1,39 @@ +/* + * ------------------------------------------------------------------------------------------------------------ + * SPDX-License-Identifier: LGPL-2.1-only + * + * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC + * Copyright (c) 2018-2024 TotalEnergies + * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University + * Copyright (c) 2023-2024 Chevron + * Copyright (c) 2019- GEOS/GEOSX Contributors + * All rights reserved + * + * See top level LICENSE, COPYRIGHT, CONTRIBUTORS, NOTICE, and ACKNOWLEDGEMENTS files for details. + * ------------------------------------------------------------------------------------------------------------ + */ + +#include "MeshComponentBase.hpp" + +namespace geos +{ + +using namespace dataRepository; + +MeshComponentBase::MeshComponentBase( const string & name, + Group * const parent ) + : Group( name, parent ) +{ + setInputFlags( InputFlags::OPTIONAL_NONUNIQUE ); +} + +MeshComponentBase::~MeshComponentBase() +{} + +MeshComponentBase::CatalogInterface::CatalogType & MeshComponentBase::getCatalog() +{ + static CatalogInterface::CatalogType catalog; + return catalog; +} + +} diff --git a/src/coreComponents/mesh/generators/MeshComponentBase.hpp b/src/coreComponents/mesh/generators/MeshComponentBase.hpp new file mode 100644 index 00000000000..e24ee2b42d8 --- /dev/null +++ b/src/coreComponents/mesh/generators/MeshComponentBase.hpp @@ -0,0 +1,70 @@ +/* + * ------------------------------------------------------------------------------------------------------------ + * SPDX-License-Identifier: LGPL-2.1-only + * + * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC + * Copyright (c) 2018-2024 TotalEnergies + * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University + * Copyright (c) 2023-2024 Chevron + * Copyright (c) 2019- GEOS/GEOSX Contributors + * All rights reserved + * + * See top level LICENSE, COPYRIGHT, CONTRIBUTORS, NOTICE, and ACKNOWLEDGEMENTS files for details. + * ------------------------------------------------------------------------------------------------------------ + */ + +/* + * @file MeshComponentBase.hpp + * + */ + +#ifndef GEOS_MESH_GENERATORS_MESHCOMPONENTBASE_HPP_ +#define GEOS_MESH_GENERATORS_MESHCOMPONENTBASE_HPP_ + +#include "dataRepository/Group.hpp" +#include "codingUtilities/Utilities.hpp" +#include "common/DataTypes.hpp" + + +namespace geos +{ + +/** + * @class MeshComponentBase + * + * Abstract base class defining the information provided by any the well generator class. + */ +class MeshComponentBase : public dataRepository::Group +{ +public: + + /** + * @brief Constructor. + * @param name name of the object in the data hierarchy. + * @param parent pointer to the parent group in the data hierarchy. + */ + MeshComponentBase( string const & name, + Group * const parent ); + + /** + * @brief Default destructor. + */ + virtual ~MeshComponentBase(); + + /** + * @brief Get the catalog name. + * @return the name of this type in the catalog + */ + static string catalogName() { return "MeshComponentBase"; } + + /** + * @brief Type alias for catalog interface used by this class. See CatalogInterface. + */ + using CatalogInterface = dataRepository::CatalogInterface< MeshComponentBase, string const &, Group * const >; + + /// @copydoc dataRepository::Group::getCatalog() + static CatalogInterface::CatalogType & getCatalog(); +}; + +} +#endif /* GEOS_MESH_GENERATORS_MESHCOMPONENTBASE_HPP_ */ diff --git a/src/coreComponents/mesh/generators/MeshGeneratorBase.cpp b/src/coreComponents/mesh/generators/MeshGeneratorBase.cpp index b4de9e8fc33..86eb7f0b849 100644 --- a/src/coreComponents/mesh/generators/MeshGeneratorBase.cpp +++ b/src/coreComponents/mesh/generators/MeshGeneratorBase.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -16,7 +16,7 @@ #include "MeshGeneratorBase.hpp" #include "mesh/generators/CellBlockManager.hpp" #include "mesh/generators/ParticleBlockManager.hpp" - +#include "mesh/generators/MeshComponentBase.hpp" namespace geos { using namespace dataRepository; @@ -29,15 +29,16 @@ MeshGeneratorBase::MeshGeneratorBase( string const & name, Group * const parent Group * MeshGeneratorBase::createChild( string const & childKey, string const & childName ) { - GEOS_LOG_RANK_0( "Adding Mesh attribute: " << childKey << ", " << childName ); - std::unique_ptr< WellGeneratorBase > wellGen = WellGeneratorBase::CatalogInterface::factory( childKey, childName, this ); - return &this->registerGroup< WellGeneratorBase >( childName, std::move( wellGen ) ); + GEOS_LOG_RANK_0( GEOS_FMT( "{}: adding {} {}", getName(), childKey, childName ) ); + std::unique_ptr< MeshComponentBase > meshComp = + MeshComponentBase::CatalogInterface::factory( childKey, getDataContext(), childName, this ); + return &this->registerGroup< MeshComponentBase >( childName, std::move( meshComp ) ); } void MeshGeneratorBase::expandObjectCatalogs() { - // During schema generation, register one of each type derived from WellGeneratorBase here - for( auto & catalogIter: WellGeneratorBase::getCatalog()) + // During schema generation, register one of each type derived from MeshComponentBase here + for( auto & catalogIter: MeshComponentBase::getCatalog()) { createChild( catalogIter.first, catalogIter.first ); } diff --git a/src/coreComponents/mesh/generators/MeshGeneratorBase.hpp b/src/coreComponents/mesh/generators/MeshGeneratorBase.hpp index 0a0ba34ba81..d71de5cac30 100644 --- a/src/coreComponents/mesh/generators/MeshGeneratorBase.hpp +++ b/src/coreComponents/mesh/generators/MeshGeneratorBase.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/mesh/generators/PTScotchInterface.cpp b/src/coreComponents/mesh/generators/PTScotchInterface.cpp index 270615f1869..2737c42db70 100644 --- a/src/coreComponents/mesh/generators/PTScotchInterface.cpp +++ b/src/coreComponents/mesh/generators/PTScotchInterface.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/mesh/generators/PTScotchInterface.hpp b/src/coreComponents/mesh/generators/PTScotchInterface.hpp index bdd7cf6ff1e..e188aadd55b 100644 --- a/src/coreComponents/mesh/generators/PTScotchInterface.hpp +++ b/src/coreComponents/mesh/generators/PTScotchInterface.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/mesh/generators/ParMETISInterface.cpp b/src/coreComponents/mesh/generators/ParMETISInterface.cpp index 9f9d574b945..4567826b341 100644 --- a/src/coreComponents/mesh/generators/ParMETISInterface.cpp +++ b/src/coreComponents/mesh/generators/ParMETISInterface.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/mesh/generators/ParMETISInterface.hpp b/src/coreComponents/mesh/generators/ParMETISInterface.hpp index f9dc2af71ac..fa1bb2c8545 100644 --- a/src/coreComponents/mesh/generators/ParMETISInterface.hpp +++ b/src/coreComponents/mesh/generators/ParMETISInterface.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/mesh/generators/ParticleBlock.cpp b/src/coreComponents/mesh/generators/ParticleBlock.cpp index 1981cb89a0e..3cf22ea8ae2 100644 --- a/src/coreComponents/mesh/generators/ParticleBlock.cpp +++ b/src/coreComponents/mesh/generators/ParticleBlock.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/mesh/generators/ParticleBlock.hpp b/src/coreComponents/mesh/generators/ParticleBlock.hpp index 01b22edf7a1..947533e1e53 100644 --- a/src/coreComponents/mesh/generators/ParticleBlock.hpp +++ b/src/coreComponents/mesh/generators/ParticleBlock.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/mesh/generators/ParticleBlockABC.hpp b/src/coreComponents/mesh/generators/ParticleBlockABC.hpp index 966c188d6c3..c8f16c03e46 100644 --- a/src/coreComponents/mesh/generators/ParticleBlockABC.hpp +++ b/src/coreComponents/mesh/generators/ParticleBlockABC.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/mesh/generators/ParticleBlockManager.cpp b/src/coreComponents/mesh/generators/ParticleBlockManager.cpp index b9645f04fd2..f219072ab8e 100644 --- a/src/coreComponents/mesh/generators/ParticleBlockManager.cpp +++ b/src/coreComponents/mesh/generators/ParticleBlockManager.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -38,6 +38,7 @@ void ParticleBlockManager::resize( integer_array const & numParticles, Group * ParticleBlockManager::createChild( string const & GEOS_UNUSED_PARAM( childKey ), string const & GEOS_UNUSED_PARAM( childName ) ) { + // Unused as all children are created within the constructor return nullptr; } diff --git a/src/coreComponents/mesh/generators/ParticleBlockManager.hpp b/src/coreComponents/mesh/generators/ParticleBlockManager.hpp index 8db63988897..87e69c767e3 100644 --- a/src/coreComponents/mesh/generators/ParticleBlockManager.hpp +++ b/src/coreComponents/mesh/generators/ParticleBlockManager.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/mesh/generators/ParticleBlockManagerABC.hpp b/src/coreComponents/mesh/generators/ParticleBlockManagerABC.hpp index fc2decfd008..c622f31af24 100644 --- a/src/coreComponents/mesh/generators/ParticleBlockManagerABC.hpp +++ b/src/coreComponents/mesh/generators/ParticleBlockManagerABC.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/mesh/generators/ParticleMeshGenerator.cpp b/src/coreComponents/mesh/generators/ParticleMeshGenerator.cpp index 436a41a81a4..eeef02ae013 100644 --- a/src/coreComponents/mesh/generators/ParticleMeshGenerator.cpp +++ b/src/coreComponents/mesh/generators/ParticleMeshGenerator.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/mesh/generators/ParticleMeshGenerator.hpp b/src/coreComponents/mesh/generators/ParticleMeshGenerator.hpp index e6060f0b854..b6ee283aaac 100644 --- a/src/coreComponents/mesh/generators/ParticleMeshGenerator.hpp +++ b/src/coreComponents/mesh/generators/ParticleMeshGenerator.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/mesh/generators/PartitionDescriptor.hpp b/src/coreComponents/mesh/generators/PartitionDescriptor.hpp index 2527ec16984..ef4e4bb4566 100644 --- a/src/coreComponents/mesh/generators/PartitionDescriptor.hpp +++ b/src/coreComponents/mesh/generators/PartitionDescriptor.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/mesh/generators/PrismUtilities.hpp b/src/coreComponents/mesh/generators/PrismUtilities.hpp index 483f97d3d28..f6e70aef310 100644 --- a/src/coreComponents/mesh/generators/PrismUtilities.hpp +++ b/src/coreComponents/mesh/generators/PrismUtilities.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/mesh/generators/Region.cpp b/src/coreComponents/mesh/generators/Region.cpp new file mode 100644 index 00000000000..b707e6077ba --- /dev/null +++ b/src/coreComponents/mesh/generators/Region.cpp @@ -0,0 +1,46 @@ +/* + * ------------------------------------------------------------------------------------------------------------ + * SPDX-License-Identifier: LGPL-2.1-only + * + * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC + * Copyright (c) 2018-2024 TotalEnergies + * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University + * Copyright (c) 2023-2024 Chevron + * Copyright (c) 2019- GEOS/GEOSX Contributors + * All rights reserved + * + * See top level LICENSE, COPYRIGHT, CONTRIBUTORS, NOTICE, and ACKNOWLEDGEMENTS files for details. + * ------------------------------------------------------------------------------------------------------------ + */ + +/** + * @file Region.cpp + */ + +#include "Region.hpp" + + +namespace geos +{ + +using namespace dataRepository; + +Region::Region( string const & name, + Group * const parent ) + : MeshComponentBase( name, parent ) +{ + registerWrapper( viewKeyStruct::idString(), &m_id ). + setInputFlag( InputFlags::REQUIRED ). + setDescription( "Interval region identifier" ); + + registerWrapper( viewKeyStruct::pathInRepositoryString(), &m_pathInRepository ). + setInputFlag( InputFlags::REQUIRED ). + setDescription( "Path of the dataset in the repository" ); +} + +Region::~Region() +{} + +REGISTER_CATALOG_ENTRY( MeshComponentBase, Region, string const &, Group * const ) + +} diff --git a/src/coreComponents/mesh/generators/Region.hpp b/src/coreComponents/mesh/generators/Region.hpp new file mode 100644 index 00000000000..6a5af64d92e --- /dev/null +++ b/src/coreComponents/mesh/generators/Region.hpp @@ -0,0 +1,76 @@ + +/* + * ------------------------------------------------------------------------------------------------------------ + * SPDX-License-Identifier: LGPL-2.1-only + * + * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC + * Copyright (c) 2018-2024 TotalEnergies + * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University + * Copyright (c) 2023-2024 Chevron + * Copyright (c) 2019- GEOS/GEOSX Contributors + * All rights reserved + * + * See top level LICENSE, COPYRIGHT, CONTRIBUTORS, NOTICE, and ACKNOWLEDGEMENTS files for details. + * ------------------------------------------------------------------------------------------------------------ + */ + +/** + * @file Region.hpp + */ + +#ifndef GEOS_MESH_GENERATORS_REGION_HPP +#define GEOS_MESH_GENERATORS_REGION_HPP + +#include "MeshComponentBase.hpp" + +namespace geos +{ + +/** + * @brief Region parameters with Group capabilities + * + * This class has dataRepository::Group capabilities to allow for XML input. + * + */ +class Region : public MeshComponentBase +{ +public: + /** + * @brief Constructor. + * @param name name of the object in the data hierarchy. + * @param parent pointer to the parent group in the data hierarchy. + */ + Region( const string & name, Group * const parent ); + + /** + * @brief Default destructor. + */ + ~Region() override; + + /** + * @brief Get the catalog name. + * @return the name of this type in the catalog + */ + static string catalogName() { return "Region"; } + + ///@cond DO_NOT_DOCUMENT + /// Keys appearing in XML + struct viewKeyStruct + { + static constexpr char const * idString() { return "id"; } + static constexpr char const * pathInRepositoryString() { return "pathInRepository"; } + }; + /// @endcond + +private: + + /// Interval region identifier + integer m_id = 0; + + /// Path of the dataset in the repository + string m_pathInRepository = ""; +}; + +} // namespace GEOS + +#endif diff --git a/src/coreComponents/mesh/generators/VTKFaceBlockUtilities.cpp b/src/coreComponents/mesh/generators/VTKFaceBlockUtilities.cpp index 05df2e0a99f..2618d8138f9 100644 --- a/src/coreComponents/mesh/generators/VTKFaceBlockUtilities.cpp +++ b/src/coreComponents/mesh/generators/VTKFaceBlockUtilities.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/mesh/generators/VTKFaceBlockUtilities.hpp b/src/coreComponents/mesh/generators/VTKFaceBlockUtilities.hpp index 243cceedc94..f812071440d 100644 --- a/src/coreComponents/mesh/generators/VTKFaceBlockUtilities.hpp +++ b/src/coreComponents/mesh/generators/VTKFaceBlockUtilities.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/mesh/generators/VTKHierarchicalDataSource.cpp b/src/coreComponents/mesh/generators/VTKHierarchicalDataSource.cpp new file mode 100644 index 00000000000..cd0e3d83729 --- /dev/null +++ b/src/coreComponents/mesh/generators/VTKHierarchicalDataSource.cpp @@ -0,0 +1,72 @@ +/* + * ------------------------------------------------------------------------------------------------------------ + * SPDX-License-Identifier: LGPL-2.1-only + * + * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC + * Copyright (c) 2018-2024 TotalEnergies + * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University + * Copyright (c) 2023-2024 Chevron + * Copyright (c) 2019- GEOS/GEOSX Contributors + * All rights reserved + * + * See top level LICENSE, COPYRIGHT, CONTRIBUTORS, NOTICE, and ACKNOWLEDGEMENTS files for details. + * ------------------------------------------------------------------------------------------------------------ + */ + +/** + * @file VTKHierarchicalDataSource.cpp + */ + +#include "mesh/generators/VTKHierarchicalDataSource.hpp" +#include "mesh/generators/VTKUtilities.hpp" +#include + +namespace geos +{ +using namespace dataRepository; + +VTKHierarchicalDataSource::VTKHierarchicalDataSource( string const & name, + Group * const parent ) + : ExternalDataSourceBase( name, parent ) +{ + registerWrapper( viewKeyStruct::filePathString(), &m_filePath ). + setRTTypeName( rtTypes::CustomTypes::groupNameRef ). + setInputFlag( InputFlags::REQUIRED ). + setApplyDefaultValue( "attribute" ). + setDescription( "Path to the mesh file" ); +} + +void VTKHierarchicalDataSource::open() +{ + string const extension = m_filePath.extension(); + GEOS_ERROR_IF( extension != "vtpc", "Unsupported vtk extension. File must be a vtpc file" ); + + vtkNew< vtkXMLPartitionedDataSetCollectionReader > reader; + reader->SetFileName( m_filePath.c_str()); + reader->Update(); + + m_collection = vtkSmartPointer< vtkPartitionedDataSetCollection >( vtkPartitionedDataSetCollection::SafeDownCast( reader->GetOutput())); + m_dataAssembly = vtkSmartPointer< vtkDataAssembly >( m_collection->GetDataAssembly() ); + + GEOS_ERROR_IF( m_dataAssembly == nullptr, "No data Assembly attached to this collection" ); +} + +vtkSmartPointer< vtkPartitionedDataSet > +VTKHierarchicalDataSource::search( string const & path ) +{ + int node = m_dataAssembly->GetFirstNodeByPath( path.c_str()); + GEOS_ERROR_IF( node == -1, "Node doesn't exist" ); + GEOS_ERROR_IF( m_dataAssembly->GetNumberOfChildren( node ) > 0, "Only leaf nodes can be queried." ); + + std::vector< unsigned int > indices = m_dataAssembly->GetDataSetIndices( node, false ); + + GEOS_ERROR_IF( indices.size() == 0, "Queried node has no dataset attached." ); + GEOS_ERROR_IF( indices.size() > 1, "Current constraint each tree node has only one dataset." ); + + return m_collection->GetPartitionedDataSet( indices[0] ); +} + +REGISTER_CATALOG_ENTRY( ExternalDataSourceBase, VTKHierarchicalDataSource, string const &, Group * const ) + + +} diff --git a/src/coreComponents/mesh/generators/VTKHierarchicalDataSource.hpp b/src/coreComponents/mesh/generators/VTKHierarchicalDataSource.hpp new file mode 100644 index 00000000000..adb9a69d830 --- /dev/null +++ b/src/coreComponents/mesh/generators/VTKHierarchicalDataSource.hpp @@ -0,0 +1,93 @@ +/* + * ------------------------------------------------------------------------------------------------------------ + * SPDX-License-Identifier: LGPL-2.1-only + * + * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC + * Copyright (c) 2018-2024 TotalEnergies + * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University + * Copyright (c) 2023-2024 Chevron + * Copyright (c) 2019- GEOS/GEOSX Contributors + * All rights reserved + * + * See top level LICENSE, COPYRIGHT, CONTRIBUTORS, NOTICE, and ACKNOWLEDGEMENTS files for details. + * ------------------------------------------------------------------------------------------------------------ + */ + +/** + * @file VTKHierarchicalDataSource.hpp + */ + +#ifndef GEOS_MESH_GENERATORS_VTKHIERARCHICALDATASOURCE_HPP +#define GEOS_MESH_GENERATORS_VTKHIERARCHICALDATASOURCE_HPP + +#include "dataRepository/Group.hpp" +#include "mesh/ExternalDataSourceBase.hpp" + +#include +#include +#include +#include +#include + +namespace geos +{ + +/** + * @class VTKHierarchicalDataSource + * @brief This class provides an API to access VTKPartitionedDataSetCollection through a vtkDataAssembly + */ +class VTKHierarchicalDataSource : public ExternalDataSourceBase +{ +public: + + /** + * @brief Main constructor for VTKHierarchicalDataSource base class. + * @param[in] name of the VTKHierarchicalDataSource object + * @param[in] parent the parent Group pointer for the VTKHierarchicalDataSource object + */ + VTKHierarchicalDataSource( string const & name, Group * const parent ); + + virtual ~VTKHierarchicalDataSource() override = default; + + /** + * @brief Return the name of the MeshGenerator in object catalog. + * @return string that contains the catalog name of the MeshGenerator + */ + static string catalogName() { return "VTKHierarchicalDataSource"; } + + /** + * @brief Opens a vtkPartitionedDataSetCollection and gets the colletion and the associated dataAssembly + * + */ + void open() override; + + /** + * @brief Performs a search in the dataAssembly to find a node of PartitionedDataSets + * + * @param path the path in the data assembly tree + * @return the found dataset + */ + vtkSmartPointer< vtkPartitionedDataSet > search( string const & path ); + +private: + + ///@cond DO_NOT_DOCUMENT + struct viewKeyStruct + { + constexpr static char const * filePathString() { return "file"; } + }; + /// @endcond + + /// Path to the mesh file + Path m_filePath; + + /// DataAssembly to query the dataset collection + vtkSmartPointer< vtkDataAssembly > m_dataAssembly; + + /// Collection of datasets + vtkSmartPointer< vtkPartitionedDataSetCollection > m_collection; +}; + +} + +#endif diff --git a/src/coreComponents/mesh/generators/VTKMeshGenerator.cpp b/src/coreComponents/mesh/generators/VTKMeshGenerator.cpp index d1402d21821..6d791068dfd 100644 --- a/src/coreComponents/mesh/generators/VTKMeshGenerator.cpp +++ b/src/coreComponents/mesh/generators/VTKMeshGenerator.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -19,22 +19,30 @@ #include "VTKMeshGenerator.hpp" +#include "mesh/ExternalDataSourceManager.hpp" #include "mesh/generators/VTKFaceBlockUtilities.hpp" #include "mesh/generators/VTKMeshGeneratorTools.hpp" #include "mesh/generators/CellBlockManager.hpp" +#include "mesh/generators/Region.hpp" #include "common/DataTypes.hpp" #include +#include +#include +#include namespace geos { using namespace dataRepository; - VTKMeshGenerator::VTKMeshGenerator( string const & name, Group * const parent ) - : ExternalMeshGeneratorBase( name, parent ) + : ExternalMeshGeneratorBase( name, parent ), + m_dataSource( nullptr ) { + getWrapperBase( ExternalMeshGeneratorBase::viewKeyStruct::filePathString()). + setInputFlag( InputFlags::OPTIONAL ); + registerWrapper( viewKeyStruct::regionAttributeString(), &m_attributeName ). setRTTypeName( rtTypes::CustomTypes::groupNameRef ). setInputFlag( InputFlags::OPTIONAL ). @@ -75,6 +83,34 @@ VTKMeshGenerator::VTKMeshGenerator( string const & name, " If set to 0 (default value), the GlobalId arrays in the input mesh are used if available, and generated otherwise." " If set to a negative value, the GlobalId arrays in the input mesh are not used, and generated global Ids are automatically generated." " If set to a positive value, the GlobalId arrays in the input mesh are used and required, and the simulation aborts if they are not available" ); + + registerWrapper( viewKeyStruct::dataSourceString(), &m_dataSourceName ). + setInputFlag( InputFlags::OPTIONAL ). + setDescription( "Name of the VTK data source" ); +} + +void VTKMeshGenerator::postInputInitialization() +{ + ExternalMeshGeneratorBase::postInputInitialization(); + + GEOS_ERROR_IF( !this->m_filePath.empty() && !m_dataSourceName.empty(), + getDataContext() << ": Access to the mesh via file or data source are mutually exclusive. " + "You can't set " << viewKeyStruct::dataSourceString() << " or " << viewKeyStruct::meshPathString() << " and " << + ExternalMeshGeneratorBase::viewKeyStruct::filePathString() ); + + if( !m_dataSourceName.empty()) + { + ExternalDataSourceManager & externalDataManager = this->getGroupByPath< ExternalDataSourceManager >( "/Problem/ExternalDataSource" ); + + m_dataSource = externalDataManager.getGroupPointer< VTKHierarchicalDataSource >( m_dataSourceName ); + + GEOS_THROW_IF( m_dataSource == nullptr, + getDataContext() << ": VTK Data Object Source not found: " << m_dataSourceName, + InputError ); + + m_dataSource->open(); + } + } void VTKMeshGenerator::fillCellBlockManager( CellBlockManager & cellBlockManager, SpatialPartition & partition ) @@ -86,37 +122,94 @@ void VTKMeshGenerator::fillCellBlockManager( CellBlockManager & cellBlockManager vtkSmartPointer< vtkMultiProcessController > controller = vtk::getController(); vtkMultiProcessController::SetGlobalController( controller ); - GEOS_LOG_RANK_0( GEOS_FMT( "{} '{}': reading mesh from {}", catalogName(), getName(), m_filePath ) ); { - GEOS_LOG_LEVEL_RANK_0( 2, " reading the dataset..." ); - vtk::AllMeshes allMeshes = vtk::loadAllMeshes( m_filePath, m_mainBlockName, m_faceBlockNames ); - GEOS_LOG_LEVEL_RANK_0( 2, " redistributing mesh..." ); + vtk::AllMeshes allMeshes; + + GEOS_LOG_LEVEL_RANK_0( 2, GEOS_FMT( "{} '{}': reading the dataset...", catalogName(), getName() ) ); + + if( !m_filePath.empty()) + { + GEOS_LOG_RANK_0( GEOS_FMT( "{} '{}': reading mesh from {}", catalogName(), getName(), m_filePath ) ); + allMeshes = vtk::loadAllMeshes( m_filePath, m_mainBlockName, m_faceBlockNames ); + } + else if( !m_dataSourceName.empty()) + { + if( MpiWrapper::commRank() == 0 ) + { + std::vector< vtkSmartPointer< vtkPartitionedDataSet > > partitions; + vtkNew< vtkAppendFilter > appender; + appender->MergePointsOn(); + for( auto & [key, value] : this->getSubGroups()) + { + Region const & region = this->getGroup< Region >( key ); + + string path = region.getWrapper< string >( Region::viewKeyStruct::pathInRepositoryString()).reference(); + integer region_id = region.getWrapper< integer >( Region::viewKeyStruct::idString()).reference(); + + GEOS_LOG_RANK_0( GEOS_FMT( "{} '{}': reading partition from {}", catalogName(), getName(), path ) ); + vtkPartitionedDataSet * p = m_dataSource->search( path ); + + //load the grid + vtkDataObject * block = p->GetPartition( 0 ); + if( block->IsA( "vtkDataSet" ) ) + { + vtkSmartPointer< vtkDataSet > dataset = vtkDataSet::SafeDownCast( block ); + + vtkIntArray * arr = vtkIntArray::New(); + arr->SetName( m_attributeName.c_str()); + arr->SetNumberOfComponents( 1 ); + arr->SetNumberOfTuples( dataset->GetNumberOfCells()); + + arr->FillValue( region_id ); + + dataset->GetCellData()->AddArray( arr ); + appender->AddInputDataObject( dataset ); + } + } + appender->Update(); + vtkUnstructuredGrid * result = vtkUnstructuredGrid::SafeDownCast( appender->GetOutputDataObject( 0 ) ); + allMeshes.setMainMesh( result ); + + //DEBUG code + vtkNew< vtkXMLUnstructuredGridWriter > writer; + writer->SetFileName( "tmp_output.vtu" ); + writer->SetInputData( result ); + writer->Write(); + } + else + { + vtkUnstructuredGrid * result = vtkUnstructuredGrid::New(); + allMeshes.setMainMesh( result ); + } + } + + GEOS_LOG_LEVEL_RANK_0( 2, GEOS_FMT( "{} '{}': redistributing mesh...", catalogName(), getName() ) ); vtk::AllMeshes redistributedMeshes = vtk::redistributeMeshes( getLogLevel(), allMeshes.getMainMesh(), allMeshes.getFaceBlocks(), comm, m_partitionMethod, m_partitionRefinement, m_useGlobalIds ); m_vtkMesh = redistributedMeshes.getMainMesh(); m_faceBlockMeshes = redistributedMeshes.getFaceBlocks(); - GEOS_LOG_LEVEL_RANK_0( 2, " finding neighbor ranks..." ); + GEOS_LOG_LEVEL_RANK_0( 2, GEOS_FMT( "{} '{}': finding neighbor ranks...", catalogName(), getName() ) ); std::vector< vtkBoundingBox > boxes = vtk::exchangeBoundingBoxes( *m_vtkMesh, comm ); std::vector< int > const neighbors = vtk::findNeighborRanks( std::move( boxes ) ); partition.setMetisNeighborList( std::move( neighbors ) ); - GEOS_LOG_LEVEL_RANK_0( 2, " done!" ); + GEOS_LOG_LEVEL_RANK_0( 2, GEOS_FMT( "{} '{}': done!", catalogName(), getName() ) ); } - GEOS_LOG_RANK_0( GEOS_FMT( "{} '{}': generating GEOSX mesh data structure", catalogName(), getName() ) ); + GEOS_LOG_RANK_0( GEOS_FMT( "{} '{}': generating GEOS mesh data structure", catalogName(), getName() ) ); - GEOS_LOG_LEVEL_RANK_0( 2, " preprocessing..." ); + GEOS_LOG_LEVEL_RANK_0( 2, GEOS_FMT( "{} '{}': preprocessing...", catalogName(), getName() ) ); m_cellMap = vtk::buildCellMap( *m_vtkMesh, m_attributeName ); - GEOS_LOG_LEVEL_RANK_0( 2, " writing nodes..." ); + GEOS_LOG_LEVEL_RANK_0( 2, GEOS_FMT( "{} '{}': writing nodes...", catalogName(), getName() ) ); cellBlockManager.setGlobalLength( writeNodes( getLogLevel(), *m_vtkMesh, m_nodesetNames, cellBlockManager, this->m_translate, this->m_scale ) ); - GEOS_LOG_LEVEL_RANK_0( 2, " writing cells..." ); + GEOS_LOG_LEVEL_RANK_0( 2, GEOS_FMT( "{} '{}': writing cells...", catalogName(), getName() ) ); writeCells( getLogLevel(), *m_vtkMesh, m_cellMap, cellBlockManager ); - GEOS_LOG_LEVEL_RANK_0( 2, " writing surfaces..." ); + GEOS_LOG_LEVEL_RANK_0( 2, GEOS_FMT( "{} '{}': writing surfaces...", catalogName(), getName() ) ); writeSurfaces( getLogLevel(), *m_vtkMesh, m_cellMap, cellBlockManager ); - GEOS_LOG_LEVEL_RANK_0( 2, " building connectivity maps..." ); + GEOS_LOG_LEVEL_RANK_0( 2, GEOS_FMT( "{} '{}': building connectivity maps...", catalogName(), getName() ) ); cellBlockManager.buildMaps(); for( auto const & [name, mesh]: m_faceBlockMeshes ) @@ -124,7 +217,7 @@ void VTKMeshGenerator::fillCellBlockManager( CellBlockManager & cellBlockManager vtk::importFractureNetwork( name, mesh, m_vtkMesh, cellBlockManager ); } - GEOS_LOG_LEVEL_RANK_0( 2, " done!" ); + GEOS_LOG_LEVEL_RANK_0( 2, GEOS_FMT( "{} '{}': done!", catalogName(), getName() ) ); vtk::printMeshStatistics( *m_vtkMesh, m_cellMap, comm ); } @@ -215,6 +308,7 @@ void VTKMeshGenerator::freeResources() m_faceBlockMeshes.clear(); } + REGISTER_CATALOG_ENTRY( MeshGeneratorBase, VTKMeshGenerator, string const &, Group * const ) } // namespace geos diff --git a/src/coreComponents/mesh/generators/VTKMeshGenerator.hpp b/src/coreComponents/mesh/generators/VTKMeshGenerator.hpp index 6d2eabe911f..20747c848c2 100644 --- a/src/coreComponents/mesh/generators/VTKMeshGenerator.hpp +++ b/src/coreComponents/mesh/generators/VTKMeshGenerator.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -22,8 +22,8 @@ #include "mesh/generators/ExternalMeshGeneratorBase.hpp" #include "mesh/generators/VTKUtilities.hpp" +#include "mesh/generators/VTKHierarchicalDataSource.hpp" #include "mesh/mpiCommunications/SpatialPartition.hpp" - #include namespace geos @@ -45,10 +45,10 @@ class VTKMeshGenerator : public ExternalMeshGeneratorBase VTKMeshGenerator( const string & name, Group * const parent ); -/** - * @brief Return the name of the VTKMeshGenerator in object Catalog. - * @return string that contains the key name to VTKMeshGenerator in the Catalog - */ + /** + * @brief Return the name of the VTKMeshGenerator in object Catalog. + * @return string that contains the key name to VTKMeshGenerator in the Catalog + */ static string catalogName() { return "VTKMesh"; } /** @@ -88,7 +88,7 @@ class VTKMeshGenerator : public ExternalMeshGeneratorBase * surfaces of interest, with triangles and/or quads holding an attribute value * of 1, 2 or 3, three node sets named "1", "2" and "3" will be instantiated by this method */ - virtual void fillCellBlockManager( CellBlockManager & cellBlockManager, SpatialPartition & partition ) override; + void fillCellBlockManager( CellBlockManager & cellBlockManager, SpatialPartition & partition ) override; void importFieldOnArray( Block block, string const & blockName, @@ -96,7 +96,10 @@ class VTKMeshGenerator : public ExternalMeshGeneratorBase bool isMaterialField, dataRepository::WrapperBase & wrapper ) const override; - virtual void freeResources() override; + void freeResources() override; + +protected: + void postInputInitialization() override; private: @@ -110,6 +113,13 @@ class VTKMeshGenerator : public ExternalMeshGeneratorBase constexpr static char const * partitionRefinementString() { return "partitionRefinement"; } constexpr static char const * partitionMethodString() { return "partitionMethod"; } constexpr static char const * useGlobalIdsString() { return "useGlobalIds"; } + constexpr static char const * dataSourceString() { return "dataSourceName"; } + constexpr static char const * meshPathString() { return "meshPath"; } + }; + + struct groupKeyStruct + { + constexpr static char const * regionString() { return "VTKRegion"; } }; /// @endcond @@ -155,6 +165,16 @@ class VTKMeshGenerator : public ExternalMeshGeneratorBase /// Lists of VTK cell ids, organized by element type, then by region vtk::CellMapType m_cellMap; + + /// Repository name + string m_dataSourceName; + + /// path to the mesh in the repository + string m_meshPath; + + /// Repository of VTK objects + VTKHierarchicalDataSource * m_dataSource; + }; } // namespace geos diff --git a/src/coreComponents/mesh/generators/VTKMeshGeneratorTools.cpp b/src/coreComponents/mesh/generators/VTKMeshGeneratorTools.cpp index 6261c76a150..a6d00f561ef 100644 --- a/src/coreComponents/mesh/generators/VTKMeshGeneratorTools.cpp +++ b/src/coreComponents/mesh/generators/VTKMeshGeneratorTools.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/mesh/generators/VTKMeshGeneratorTools.hpp b/src/coreComponents/mesh/generators/VTKMeshGeneratorTools.hpp index 9bd1a89118f..68740cefc92 100644 --- a/src/coreComponents/mesh/generators/VTKMeshGeneratorTools.hpp +++ b/src/coreComponents/mesh/generators/VTKMeshGeneratorTools.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/mesh/generators/VTKUtilities.cpp b/src/coreComponents/mesh/generators/VTKUtilities.cpp index 72045afa4e5..1fb198d70ce 100644 --- a/src/coreComponents/mesh/generators/VTKUtilities.cpp +++ b/src/coreComponents/mesh/generators/VTKUtilities.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -746,8 +746,7 @@ vtkSmartPointer< vtkDataSet > manageGlobalIds( vtkSmartPointer< vtkDataSet > mes { // Add global ids on the fly if needed int const me = hasGlobalIds( mesh ); - int everyone; - MpiWrapper::allReduce( &me, &everyone, 1, MPI_MAX, MPI_COMM_GEOS ); + int const everyone = MpiWrapper::allReduce( me, MpiWrapper::Reduction::Max, MPI_COMM_GEOS ); if( everyone and not me ) { diff --git a/src/coreComponents/mesh/generators/VTKUtilities.hpp b/src/coreComponents/mesh/generators/VTKUtilities.hpp index 6ebf4e6e89d..0a2f5f3903a 100644 --- a/src/coreComponents/mesh/generators/VTKUtilities.hpp +++ b/src/coreComponents/mesh/generators/VTKUtilities.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/mesh/generators/VTKWellGenerator.cpp b/src/coreComponents/mesh/generators/VTKWellGenerator.cpp index c6294c35683..b52409d3f68 100644 --- a/src/coreComponents/mesh/generators/VTKWellGenerator.cpp +++ b/src/coreComponents/mesh/generators/VTKWellGenerator.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -101,5 +101,5 @@ void VTKWellGenerator::fillPolylineDataStructure( ) } } -REGISTER_CATALOG_ENTRY( WellGeneratorBase, VTKWellGenerator, string const &, Group * const ) +REGISTER_CATALOG_ENTRY( MeshComponentBase, VTKWellGenerator, string const &, Group * const ) } diff --git a/src/coreComponents/mesh/generators/VTKWellGenerator.hpp b/src/coreComponents/mesh/generators/VTKWellGenerator.hpp index df4e92b3c87..3454044beba 100644 --- a/src/coreComponents/mesh/generators/VTKWellGenerator.hpp +++ b/src/coreComponents/mesh/generators/VTKWellGenerator.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/mesh/generators/WellGeneratorABC.hpp b/src/coreComponents/mesh/generators/WellGeneratorABC.hpp deleted file mode 100644 index c1719d5badf..00000000000 --- a/src/coreComponents/mesh/generators/WellGeneratorABC.hpp +++ /dev/null @@ -1,205 +0,0 @@ -/* - * ------------------------------------------------------------------------------------------------------------ - * SPDX-License-Identifier: LGPL-2.1-only - * - * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A - * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University - * Copyright (c) 2023-2024 Chevron - * Copyright (c) 2019- GEOS/GEOSX Contributors - * All rights reserved - * - * See top level LICENSE, COPYRIGHT, CONTRIBUTORS, NOTICE, and ACKNOWLEDGEMENTS files for details. - * ------------------------------------------------------------------------------------------------------------ - */ - -/* - * @file WellGeneratorABC.hpp - * - */ - -#ifndef GEOS_MESH_GENERATORS_WELLGENERATORABC_HPP_ -#define GEOS_MESH_GENERATORS_WELLGENERATORABC_HPP_ - -#include "dataRepository/Group.hpp" -#include "codingUtilities/Utilities.hpp" -#include "common/DataTypes.hpp" - - -namespace geos -{ - -/** - * @class WellGeneratorABC - * - * Abstract base class defining the information provided by any the well generator class. - */ -class WellGeneratorABC : public dataRepository::Group -{ -public: - - /** - * @brief Constructor. - * @param name name of the object in the data hierarchy. - * @param parent pointer to the parent group in the data hierarchy. - */ - WellGeneratorABC( const string & name, - Group * const parent ) - : - Group( name, parent ) - { } - - /** - * @brief Main function of the class that generates the well geometry - */ - virtual void generateWellGeometry( ) = 0; - - /** - * @name Getters / Setters - */ - ///@{ - - // getters for element data - - /** - * @brief Get the global number of well elements. - * @return the global number of elements - */ - virtual globalIndex numElements() const = 0; - - /** - * @brief Getter to the Segment to PolyNode mapping - * @return The Segment to PolyNode mapping as a 2D array - */ - virtual const array2d< globalIndex > & getSegmentToPolyNodeMap() const = 0; - - /** - * @brief Get the number of nodes per well element - * @return the number of nodes per well element - */ - virtual globalIndex numNodesPerElement() const = 0; - - /** - * @brief Get the Coordinates of the polyline nodes - * @return the Coordinates of the polyline nodes - */ - virtual const array2d< real64 > & getPolyNodeCoord() const = 0; - - /** - * @return The minimum segment length - */ - virtual real64 getMinSegmentLength() const = 0; - - /** - * @return The minimum element length - */ - virtual real64 getMinElemLength() const = 0; - - /** - * @return The list of perforation names - */ - virtual const string_array & getPerforationList() const = 0; - - /** - * @brief Get the physical location of the centers of well elements. - * @return list of center locations of the well elements - */ - virtual arrayView2d< real64 const > getElemCoords() const = 0; - - /** - * @brief Get the global indices mapping an element to the next. - * @return list providing the global index of the next element for each element - */ - virtual arrayView1d< globalIndex const > getNextElemIndex() const = 0; - - /** - * @brief Get the global indices mapping an element to the previous ones. - * @return list providing the global indices of the previous elements for each element - */ - virtual arrayView1d< arrayView1d< globalIndex const > const > getPrevElemIndices() const = 0; - - /** - * @brief Get the global indices of the well nodes nodes connected to each element. - * @return list providing the global index of the well nodes for each well element - */ - virtual arrayView2d< globalIndex const > getElemToNodesMap() const = 0; - - /** - * @brief Get the volume of the well elements. - * @return list of volumes of the well elements - */ - virtual arrayView1d< real64 const > getElemVolume() const = 0; - - /** - * @brief Get the radius in the well. - * @return the radius in the well - */ - virtual real64 getElementRadius() const = 0; - - // getters for node data - - /** - * @brief Get the global number of well nodes. - * @return the global number of nodes - */ - virtual globalIndex numNodes() const = 0; - - /** - * @brief Get the physical location of the centers of well elements. - * @return list of center locations of the well elements - */ - virtual arrayView2d< real64 const > getNodeCoords() const = 0; - - - - // getters for perforation data - /** - * @brief Get the global number of perforations on this well. - * @return the global number of elements - */ - virtual globalIndex numPerforations() const = 0; - - /** - * @brief Get the locations of the perforations. - * @return list of locations of all the perforations on the well - */ - virtual arrayView2d< real64 const > getPerfCoords() const = 0; - - /** - * @brief Get the well transmissibility at the perforations. - * @return list of well transmissibility at all the perforations on the well - */ - virtual arrayView1d< real64 const > getPerfTransmissibility() const = 0; - - /** - * @brief Get the skin factor at a perforation. - * @return the skin factor at a perforation - */ - virtual arrayView1d< real64 const > getPerfSkinFactor() const = 0; - - /** - * @brief Get the global indices of the well elements connected to each perforation. - * @return list providing the global index of the connected well element for each perforation - */ - virtual arrayView1d< globalIndex const > getPerfElemIndex() const = 0; - - /** - * @returns The number of physical dimensions - */ - virtual int getPhysicalDimensionsNumber() const = 0; - - /** - * Getter for the associated well region name - * @return the associated well region name - */ - virtual const string getWellRegionName() const = 0; - - /** - * Getter for the associated well control name - * @return the associated well control name - */ - virtual const string getWellControlsName() const = 0; - ///@} -}; -} -#endif /* GEOS_MESH_GENERATORS_WELLGENERATORABC_HPP_ */ diff --git a/src/coreComponents/mesh/generators/WellGeneratorBase.cpp b/src/coreComponents/mesh/generators/WellGeneratorBase.cpp index 1617aa3fdb4..5debc76589f 100644 --- a/src/coreComponents/mesh/generators/WellGeneratorBase.cpp +++ b/src/coreComponents/mesh/generators/WellGeneratorBase.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -25,7 +25,7 @@ namespace geos using namespace dataRepository; WellGeneratorBase::WellGeneratorBase( string const & name, Group * const parent ): - WellGeneratorABC( name, parent ) + MeshComponentBase( name, parent ) , m_numPerforations( 0 ) , m_numElemsPerSegment( 0 ) , m_minSegmentLength( 1e-2 ) @@ -39,8 +39,6 @@ WellGeneratorBase::WellGeneratorBase( string const & name, Group * const parent , m_nDims( 3 ) , m_polylineHeadNodeId( -1 ) { - setInputFlags( InputFlags::OPTIONAL_NONUNIQUE ); - registerWrapper( viewKeyStruct::radiusString(), &m_radius ). setInputFlag( InputFlags::REQUIRED ). setSizedFromParent( 0 ). @@ -76,20 +74,15 @@ WellGeneratorBase::WellGeneratorBase( string const & name, Group * const parent Group * WellGeneratorBase::createChild( string const & childKey, string const & childName ) { - if( childKey == viewKeyStruct::perforationString() ) - { - ++m_numPerforations; + GEOS_LOG_RANK_0( GEOS_FMT( "{}: adding {} {}", getName(), childKey, childName ) ); + const auto childTypes = { viewKeyStruct::perforationString() }; + GEOS_ERROR_IF( childKey != viewKeyStruct::perforationString(), + CatalogInterface::unknownTypeError( childKey, getDataContext(), childTypes ) ); - // keep track of the perforations that have been added - m_perforationList.emplace_back( childName ); - GEOS_LOG_RANK_0( "Adding Well attribute: " << childKey << ", " << childName ); - return ®isterGroup< Perforation >( childName ); - } - else - { - GEOS_THROW( "Unrecognized node: " << childKey, InputError ); - } - return nullptr; + ++m_numPerforations; + m_perforationList.emplace_back( childName ); + + return ®isterGroup< Perforation >( childName ); } void WellGeneratorBase::expandObjectCatalogs() @@ -97,12 +90,6 @@ void WellGeneratorBase::expandObjectCatalogs() createChild( viewKeyStruct::perforationString(), viewKeyStruct::perforationString() ); } -WellGeneratorBase::CatalogInterface::CatalogType & WellGeneratorBase::getCatalog() -{ - static WellGeneratorBase::CatalogInterface::CatalogType catalog; - return catalog; -} - void WellGeneratorBase::generateWellGeometry( ) { fillPolylineDataStructure(); @@ -526,7 +513,7 @@ void WellGeneratorBase::mergePerforations( array1d< array1d< localIndex > > cons void WellGeneratorBase::logInternalWell() const { - TableData tableWellData; + TableData wellData; for( globalIndex iwelem = 0; iwelem < m_numElems; ++iwelem ) { std::optional< globalIndex > nextElement; @@ -542,40 +529,38 @@ void WellGeneratorBase::logInternalWell() const prevElement = m_prevElemId[iwelem][0]; } - tableWellData.addRow( iwelem, - m_elemCenterCoords[iwelem][0], - m_elemCenterCoords[iwelem][1], - m_elemCenterCoords[iwelem][2], - prevElement, - nextElement ); + wellData.addRow( iwelem, + m_elemCenterCoords[iwelem][0], + m_elemCenterCoords[iwelem][1], + m_elemCenterCoords[iwelem][2], + prevElement, + nextElement ); } - string const wellTitle = GEOS_FMT( "Well '{}' Element Table", getName() ); - TableLayout const tableWellLayout = TableLayout( { - TableLayout::ColumnParam{"Element no.", TableLayout::Alignment::right}, - TableLayout::ColumnParam{"CoordX", TableLayout::Alignment::right}, - TableLayout::ColumnParam{"CoordY", TableLayout::Alignment::right}, - TableLayout::ColumnParam{"CoordZ", TableLayout::Alignment::right}, - TableLayout::ColumnParam{"Prev\nElement", TableLayout::Alignment::right}, - TableLayout::ColumnParam{"Next\nElement", TableLayout::Alignment::right}, - }, wellTitle ); - - TableTextFormatter const tableFormatter( tableWellLayout ); - GEOS_LOG_RANK_0( tableFormatter.toString( tableWellData )); + TableLayout const wellLayout( GEOS_FMT( "Well '{}' Element Table", getName() ), + {"Element no.", + "CoordX", + "CoordY", + "CoordZ", + "Prev\nElement", + "Next\nElement"} ); + + TableTextFormatter const wellFormatter( wellLayout ); + GEOS_LOG_RANK_0( wellFormatter.toString( wellData )); } void WellGeneratorBase::logPerforationTable() const { - TableData tablePerfoData; + TableData dataPerforation; for( globalIndex iperf = 0; iperf < m_numPerforations; ++iperf ) { - tablePerfoData.addRow( iperf, m_perfCoords[iperf], m_perfElemId[iperf] ); + dataPerforation.addRow( iperf, m_perfCoords[iperf], m_perfElemId[iperf] ); } - TableLayout const tableLayoutPerfo ( {"Perforation no.", "Coordinates", "Well element no."}, - GEOS_FMT( "Well '{}' Perforation Table", getName() ) ); - TableTextFormatter const tablePerfoLog( tableLayoutPerfo ); - GEOS_LOG_RANK_0( tablePerfoLog.toString( tablePerfoData )); + TableLayout const layoutPerforation ( GEOS_FMT( "Well '{}' Perforation Table", getName()), + { "Perforation no.", "Coordinates", "Well element no." } ); + TableTextFormatter const logPerforation( layoutPerforation ); + GEOS_LOG_RANK_0( logPerforation.toString( dataPerforation )); } } diff --git a/src/coreComponents/mesh/generators/WellGeneratorBase.hpp b/src/coreComponents/mesh/generators/WellGeneratorBase.hpp index 99f1af95924..fbe05157d6f 100644 --- a/src/coreComponents/mesh/generators/WellGeneratorBase.hpp +++ b/src/coreComponents/mesh/generators/WellGeneratorBase.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -21,7 +21,7 @@ #ifndef GEOS_MESH_GENERATORS_WELLGENERATORBASE_HPP_ #define GEOS_MESH_GENERATORS_WELLGENERATORBASE_HPP_ -#include "mesh/generators/WellGeneratorABC.hpp" +#include "mesh/generators/MeshComponentBase.hpp" #include "dataRepository/Group.hpp" #include "codingUtilities/Utilities.hpp" #include "common/DataTypes.hpp" @@ -35,7 +35,7 @@ namespace geos * * This class processes the data of a single well from the XML and generates the well geometry */ -class WellGeneratorBase : public WellGeneratorABC +class WellGeneratorBase : public MeshComponentBase { public: @@ -50,10 +50,6 @@ class WellGeneratorBase : public WellGeneratorABC /// This function is used to expand any catalogs in the data structure virtual void expandObjectCatalogs() override; - /// using alias for templated Catalog meshGenerator type - using CatalogInterface = dataRepository::CatalogInterface< WellGeneratorBase, string const &, Group * const >; - - /** * @brief Create a new geometric object (box, plane, etc) as a child of this group. * @param childKey the catalog key of the new geometric object to create @@ -62,16 +58,10 @@ class WellGeneratorBase : public WellGeneratorABC */ virtual Group * createChild( string const & childKey, string const & childName ) override; - /** - * @brief Accessor for the singleton Catalog object - * @return a static reference to the Catalog object - */ - static CatalogInterface::CatalogType & getCatalog(); - /** * @brief Main function of the class that generates the well geometry */ - void generateWellGeometry( ) override; + void generateWellGeometry( ); /** @@ -85,76 +75,76 @@ class WellGeneratorBase : public WellGeneratorABC * @brief Get the global number of well elements. * @return the global number of elements */ - globalIndex numElements() const override { return m_numElems; } + globalIndex numElements() const { return m_numElems; } /** * @brief Getter to the Segment to PolyNode mapping * @return The Segment to PolyNode mapping as a 2D array */ - const array2d< globalIndex > & getSegmentToPolyNodeMap() const override { return m_segmentToPolyNodeMap; }; + const array2d< globalIndex > & getSegmentToPolyNodeMap() const { return m_segmentToPolyNodeMap; }; /** * @brief Get the number of nodes per well element * @return the number of nodes per well element */ - globalIndex numNodesPerElement() const override { return m_numNodesPerElem; } + globalIndex numNodesPerElement() const { return m_numNodesPerElem; } /** * @brief Get the Coordinates of the polyline nodes * @return the Coordinates of the polyline nodes */ - const array2d< real64 > & getPolyNodeCoord() const override { return m_polyNodeCoords; } + const array2d< real64 > & getPolyNodeCoord() const { return m_polyNodeCoords; } /** * @return The minimum segment length */ - real64 getMinSegmentLength() const override { return m_minSegmentLength; } + real64 getMinSegmentLength() const { return m_minSegmentLength; } /** * @return The minimum element length */ - real64 getMinElemLength() const override { return m_minElemLength; } + real64 getMinElemLength() const { return m_minElemLength; } /** * @return The list of perforation names */ - const string_array & getPerforationList() const override { return m_perforationList; } + const string_array & getPerforationList() const { return m_perforationList; } /** * @brief Get the physical location of the centers of well elements. * @return list of center locations of the well elements */ - arrayView2d< real64 const > getElemCoords() const override { return m_elemCenterCoords; } + arrayView2d< real64 const > getElemCoords() const { return m_elemCenterCoords; } /** * @brief Get the global indices mapping an element to the next. * @return list providing the global index of the next element for each element */ - arrayView1d< globalIndex const > getNextElemIndex() const override { return m_nextElemId; } + arrayView1d< globalIndex const > getNextElemIndex() const { return m_nextElemId; } /** * @brief Get the global indices mapping an element to the previous ones. * @return list providing the global indices of the previous elements for each element */ - arrayView1d< arrayView1d< globalIndex const > const > getPrevElemIndices() const override { return m_prevElemId.toNestedViewConst(); } + arrayView1d< arrayView1d< globalIndex const > const > getPrevElemIndices() const { return m_prevElemId.toNestedViewConst(); } /** * @brief Get the global indices of the well nodes nodes connected to each element. * @return list providing the global index of the well nodes for each well element */ - arrayView2d< globalIndex const > getElemToNodesMap() const override { return m_elemToNodesMap; } + arrayView2d< globalIndex const > getElemToNodesMap() const { return m_elemToNodesMap; } /** * @brief Get the volume of the well elements. * @return list of volumes of the well elements */ - arrayView1d< real64 const > getElemVolume() const override { return m_elemVolume; } + arrayView1d< real64 const > getElemVolume() const { return m_elemVolume; } /** * @brief Get the radius in the well. * @return the radius in the well */ - real64 getElementRadius() const override { return m_radius; } + real64 getElementRadius() const { return m_radius; } // getters for node data @@ -162,61 +152,61 @@ class WellGeneratorBase : public WellGeneratorABC * @brief Get the global number of well nodes. * @return the global number of nodes */ - globalIndex numNodes() const override { return m_numNodes; } + globalIndex numNodes() const { return m_numNodes; } /** * @brief Get the physical location of the centers of well elements. * @return list of center locations of the well elements */ - arrayView2d< real64 const > getNodeCoords() const override { return m_nodeCoords; } + arrayView2d< real64 const > getNodeCoords() const { return m_nodeCoords; } // getters for perforation data /** * @brief Get the global number of perforations on this well. * @return the global number of elements */ - globalIndex numPerforations() const override { return m_numPerforations; } + globalIndex numPerforations() const { return m_numPerforations; } /** * @brief Get the locations of the perforations. * @return list of locations of all the perforations on the well */ - arrayView2d< real64 const > getPerfCoords() const override { return m_perfCoords; } + arrayView2d< real64 const > getPerfCoords() const { return m_perfCoords; } /** * @brief Get the well transmissibility at the perforations. * @return list of well transmissibility at all the perforations on the well */ - arrayView1d< real64 const > getPerfTransmissibility() const override { return m_perfTransmissibility; } + arrayView1d< real64 const > getPerfTransmissibility() const { return m_perfTransmissibility; } /** * @brief Get the skin factor at a perforation. * @return the skin factor at a perforation */ - arrayView1d< real64 const > getPerfSkinFactor() const override { return m_perfSkinFactor; }; + arrayView1d< real64 const > getPerfSkinFactor() const { return m_perfSkinFactor; }; /** * @brief Get the global indices of the well elements connected to each perforation. * @return list providing the global index of the connected well element for each perforation */ - arrayView1d< globalIndex const > getPerfElemIndex() const override { return m_perfElemId; } + arrayView1d< globalIndex const > getPerfElemIndex() const { return m_perfElemId; } /** * @returns The number of physical dimensions */ - int getPhysicalDimensionsNumber() const override { return m_nDims; } + int getPhysicalDimensionsNumber() const { return m_nDims; } /** * Getter for the associated well region name * @return the associated well region name */ - const string getWellRegionName() const override { return m_wellRegionName; } + const string getWellRegionName() const { return m_wellRegionName; } /** * Getter for the associated well control name * @return the associated well control name */ - const string getWellControlsName() const override { return m_wellControlsName; } + const string getWellControlsName() const { return m_wellControlsName; } ///@cond DO_NOT_DOCUMENT struct viewKeyStruct diff --git a/src/coreComponents/mesh/mpiCommunications/CommID.cpp b/src/coreComponents/mesh/mpiCommunications/CommID.cpp index 5a93eaee64e..da6d47a48cb 100644 --- a/src/coreComponents/mesh/mpiCommunications/CommID.cpp +++ b/src/coreComponents/mesh/mpiCommunications/CommID.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/mesh/mpiCommunications/CommID.hpp b/src/coreComponents/mesh/mpiCommunications/CommID.hpp index 2f8997c1ba4..259fc340985 100644 --- a/src/coreComponents/mesh/mpiCommunications/CommID.hpp +++ b/src/coreComponents/mesh/mpiCommunications/CommID.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/mesh/mpiCommunications/CommunicationTools.cpp b/src/coreComponents/mesh/mpiCommunications/CommunicationTools.cpp index 87dd288c167..0abb2fc2f53 100644 --- a/src/coreComponents/mesh/mpiCommunications/CommunicationTools.cpp +++ b/src/coreComponents/mesh/mpiCommunications/CommunicationTools.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -851,6 +851,12 @@ void CommunicationTools::setupGhosts( MeshLevel & meshLevel, MpiWrapper::waitAll( commData.size(), commData.mpiSendBufferSizeRequest(), commData.mpiSendBufferSizeStatus() ); MpiWrapper::waitAll( commData.size(), commData.mpiSendBufferRequest(), commData.mpiSendBufferStatus() ); + // unpack the ghost inter-object maps and other data + for( auto & neighbor : neighbors ) + { + neighbor.unpackGhostsData( meshLevel, commData.commID() ); + } + nodeManager.setReceiveLists(); edgeManager.setReceiveLists(); faceManager.setReceiveLists(); @@ -1099,4 +1105,78 @@ void CommunicationTools::synchronizeFields( FieldIdentifiers const & fieldsToBeS synchronizeUnpack( mesh, neighbors, icomm, onDevice ); } + +void CommunicationTools::checkSendRecv( ObjectManagerBase const & objectManager, + std::vector< NeighborCommunicator > & neighbors ) +{ + MPI_iCommData commData; + commData.resize( neighbors.size() ); + arrayView1d< globalIndex const > const & localToGlobal = objectManager.localToGlobalMap(); + + std::cout< const ghostsToSend = objectManager.getNeighborData( neighborRank ).ghostsToSend(); + array1d< globalIndex > ghostsToSendGlobal( ghostsToSend.size() ); + + std::cout<<" Rank "< ghostThatAreSentToMeGlobal; + + MpiWrapper::recv( ghostThatAreSentToMeGlobal, + neighborRank, + tag, + MPI_COMM_GEOS, + &commData.mpiRecvBufferStatus( i ) ); + + arrayView1d< localIndex const > const ghostsToRecv = objectManager.getNeighborData( neighborRank ).ghostsToReceive(); + array1d< globalIndex > ghostToRecvGlobal( ghostsToRecv.size() ); + + + std::cout<<" Rank "< & neighbors ); + private: std::set< int > m_freeCommIDs; static CommunicationTools * m_instance; diff --git a/src/coreComponents/mesh/mpiCommunications/MPI_iCommData.cpp b/src/coreComponents/mesh/mpiCommunications/MPI_iCommData.cpp index 2e0d7920437..59be5f37fc6 100644 --- a/src/coreComponents/mesh/mpiCommunications/MPI_iCommData.cpp +++ b/src/coreComponents/mesh/mpiCommunications/MPI_iCommData.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -37,14 +37,14 @@ MPI_iCommData::~MPI_iCommData() { for( int neighbor=0; neighbor >; -using ElemAdjListRefWrapType = ElementRegionManager::ElementViewAccessor< ReferenceWrapper< localIndex_array > >; -using ElemAdjListRefType = ElementRegionManager::ElementReferenceAccessor< localIndex_array >; inline int GhostSize( NodeManager & nodeManager, arrayView1d< localIndex const > const nodeAdjacencyList, EdgeManager & edgeManager, arrayView1d< localIndex const > const edgeAdjacencyList, FaceManager & faceManager, arrayView1d< localIndex const > const faceAdjacencyList, - ElementRegionManager & elemManager, ElemAdjListViewType const & elementAdjacencyList ) + ElementRegionManager & elemManager, NeighborCommunicator::ElemAdjListViewType const & elementAdjacencyList ) { int bufferSize = 0; bufferSize += nodeManager.packGlobalMapsSize( nodeAdjacencyList, 0 ); @@ -211,7 +208,7 @@ inline int PackGhosts( buffer_unit_type * sendBufferPtr, NodeManager & nodeManager, arrayView1d< localIndex const > const nodeAdjacencyList, EdgeManager & edgeManager, arrayView1d< localIndex const > const edgeAdjacencyList, FaceManager & faceManager, arrayView1d< localIndex const > const faceAdjacencyList, - ElementRegionManager & elemManager, ElemAdjListViewType const & elementAdjacencyList ) + ElementRegionManager & elemManager, NeighborCommunicator::ElemAdjListViewType const & elementAdjacencyList ) { int packedSize = 0; packedSize += nodeManager.packGlobalMaps( sendBufferPtr, nodeAdjacencyList, 0 ); @@ -301,43 +298,55 @@ void NeighborCommunicator::unpackGhosts( MeshLevel & mesh, ElementRegionManager & elemManager = mesh.getElemManager(); buffer_type const & receiveBuff = receiveBuffer( commID ); - buffer_unit_type const * receiveBufferPtr = receiveBuff.data(); + m_receiveBufferPtr = receiveBuff.data(); + + m_unpackedSize = 0; - buffer_type::size_type unpackedSize = 0; + m_nodeUnpackList.resize( 0 ); + m_unpackedSize += nodeManager.unpackGlobalMaps( m_receiveBufferPtr, m_nodeUnpackList, 0 ); - localIndex_array nodeUnpackList; - unpackedSize += nodeManager.unpackGlobalMaps( receiveBufferPtr, nodeUnpackList, 0 ); + m_edgeUnpackList.resize( 0 ); + m_unpackedSize += edgeManager.unpackGlobalMaps( m_receiveBufferPtr, m_edgeUnpackList, 0 ); - localIndex_array edgeUnpackList; - unpackedSize += edgeManager.unpackGlobalMaps( receiveBufferPtr, edgeUnpackList, 0 ); + m_faceUnpackList.resize( 0 ); + m_unpackedSize += faceManager.unpackGlobalMaps( m_receiveBufferPtr, m_faceUnpackList, 0 ); - localIndex_array faceUnpackList; - unpackedSize += faceManager.unpackGlobalMaps( receiveBufferPtr, faceUnpackList, 0 ); + m_elementAdjacencyReceiveListArray = elemManager.constructReferenceAccessor< localIndex_array >( ObjectManagerBase::viewKeyStruct::ghostsToReceiveString(), + std::to_string( this->m_neighborRank ) ); - ElemAdjListRefType elementAdjacencyReceiveListArray = - elemManager.constructReferenceAccessor< localIndex_array >( ObjectManagerBase::viewKeyStruct::ghostsToReceiveString(), - std::to_string( this->m_neighborRank ) ); - unpackedSize += elemManager.unpackGlobalMaps( receiveBufferPtr, - elementAdjacencyReceiveListArray ); + m_unpackedSize += elemManager.unpackGlobalMaps( m_receiveBufferPtr, + m_elementAdjacencyReceiveListArray ); + +} + +void NeighborCommunicator::unpackGhostsData( MeshLevel & mesh, + int const commID ) +{ + NodeManager & nodeManager = mesh.getNodeManager(); + EdgeManager & edgeManager = mesh.getEdgeManager(); + FaceManager & faceManager = mesh.getFaceManager(); + ElementRegionManager & elemManager = mesh.getElemManager(); ElemAdjListViewType elementAdjacencyReceiveList = elemManager.constructViewAccessor< array1d< localIndex >, arrayView1d< localIndex > >( ObjectManagerBase::viewKeyStruct::ghostsToReceiveString(), std::to_string( this->m_neighborRank ) ); - unpackedSize += nodeManager.unpackUpDownMaps( receiveBufferPtr, nodeUnpackList, false, false ); - unpackedSize += edgeManager.unpackUpDownMaps( receiveBufferPtr, edgeUnpackList, false, false ); - unpackedSize += faceManager.unpackUpDownMaps( receiveBufferPtr, faceUnpackList, false, false ); - unpackedSize += elemManager.unpackUpDownMaps( receiveBufferPtr, elementAdjacencyReceiveListArray, false ); + + m_unpackedSize += nodeManager.unpackUpDownMaps( m_receiveBufferPtr, m_nodeUnpackList, false, false ); + m_unpackedSize += edgeManager.unpackUpDownMaps( m_receiveBufferPtr, m_edgeUnpackList, false, false ); + m_unpackedSize += faceManager.unpackUpDownMaps( m_receiveBufferPtr, m_faceUnpackList, false, false ); + m_unpackedSize += elemManager.unpackUpDownMaps( m_receiveBufferPtr, m_elementAdjacencyReceiveListArray, false ); parallelDeviceEvents events; - unpackedSize += nodeManager.unpack( receiveBufferPtr, nodeUnpackList, 0, false, events ); - unpackedSize += edgeManager.unpack( receiveBufferPtr, edgeUnpackList, 0, false, events ); - unpackedSize += faceManager.unpack( receiveBufferPtr, faceUnpackList, 0, false, events ); - unpackedSize += elemManager.unpack( receiveBufferPtr, elementAdjacencyReceiveList ); - waitAllDeviceEvents( events ); + m_unpackedSize += nodeManager.unpack( m_receiveBufferPtr, m_nodeUnpackList, 0, false, events ); + m_unpackedSize += edgeManager.unpack( m_receiveBufferPtr, m_edgeUnpackList, 0, false, events ); + m_unpackedSize += faceManager.unpack( m_receiveBufferPtr, m_faceUnpackList, 0, false, events ); + m_unpackedSize += elemManager.unpack( m_receiveBufferPtr, elementAdjacencyReceiveList ); - GEOS_ERROR_IF_NE( receiveBuff.size(), unpackedSize ); + waitAllDeviceEvents( events ); + buffer_type const & receiveBuff = receiveBuffer( commID ); + GEOS_ERROR_IF_NE( receiveBuff.size(), m_unpackedSize ); } void NeighborCommunicator::prepareAndSendSyncLists( MeshLevel const & mesh, @@ -502,8 +511,7 @@ int NeighborCommunicator::packCommSizeForSync( FieldIdentifiers const & fieldsTo for( auto const & iter : fieldsToBeSync.getFields() ) { - FieldLocation location{}; - fieldsToBeSync.getLocation( iter.first, location ); + FieldLocation const location = fieldsToBeSync.getLocation( iter.first ); switch( location ) { case FieldLocation::Node: @@ -560,8 +568,7 @@ void NeighborCommunicator::packCommBufferForSync( FieldIdentifiers const & field for( auto const & iter : fieldsToBeSync.getFields() ) { - FieldLocation location{}; - fieldsToBeSync.getLocation( iter.first, location ); + FieldLocation const location = fieldsToBeSync.getLocation( iter.first ); switch( location ) { case FieldLocation::Node: @@ -619,8 +626,7 @@ void NeighborCommunicator::unpackBufferForSync( FieldIdentifiers const & fieldsT for( auto const & iter : fieldsToBeSync.getFields() ) { - FieldLocation location{}; - fieldsToBeSync.getLocation( iter.first, location ); + FieldLocation const location = fieldsToBeSync.getLocation( iter.first ); switch( location ) { case FieldLocation::Node: diff --git a/src/coreComponents/mesh/mpiCommunications/NeighborCommunicator.hpp b/src/coreComponents/mesh/mpiCommunications/NeighborCommunicator.hpp index 43314f693a6..06f07fddb82 100644 --- a/src/coreComponents/mesh/mpiCommunications/NeighborCommunicator.hpp +++ b/src/coreComponents/mesh/mpiCommunications/NeighborCommunicator.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -22,6 +22,7 @@ #include "common/GEOS_RAJA_Interface.hpp" #include "dataRepository/ReferenceWrapper.hpp" #include "LvArray/src/limits.hpp" +#include "../ElementRegionManager.hpp" namespace geos { @@ -41,6 +42,9 @@ class MPI_iCommData; class NeighborCommunicator { public: + using ElemAdjListViewType = ElementRegionManager::ElementViewAccessor< arrayView1d< localIndex > >; + using ElemAdjListRefWrapType = ElementRegionManager::ElementViewAccessor< ReferenceWrapper< localIndex_array > >; + using ElemAdjListRefType = ElementRegionManager::ElementReferenceAccessor< localIndex_array >; explicit NeighborCommunicator( int rank ); @@ -193,6 +197,9 @@ class NeighborCommunicator void unpackGhosts( MeshLevel & meshLevel, int const commID ); + void unpackGhostsData( MeshLevel & meshLevel, + int const commID ); + /** * Posts non-blocking sends to m_neighborRank for * both the size and regular communication buffers @@ -210,7 +217,7 @@ class NeighborCommunicator /** * Unpack the receive buffer and process synchronization - * list information recieved from m_neighborRank. + * list information received from m_neighborRank. * This must be called after PostRecv is called, and * the request associated with that recv has * completed (retrieve the request using GetRecvRequest) @@ -294,6 +301,15 @@ class NeighborCommunicator std::vector< buffer_type > m_sendBuffer; std::vector< buffer_type > m_receiveBuffer; + localIndex_array m_nodeUnpackList; + localIndex_array m_edgeUnpackList; + localIndex_array m_faceUnpackList; + ElemAdjListRefType m_elementAdjacencyReceiveListArray; + buffer_type::size_type m_unpackedSize = 0; + buffer_unit_type const * m_receiveBufferPtr = nullptr; + + + }; template< typename T > diff --git a/src/coreComponents/mesh/mpiCommunications/NeighborData.hpp b/src/coreComponents/mesh/mpiCommunications/NeighborData.hpp index c35eb3cc615..236528cec9e 100644 --- a/src/coreComponents/mesh/mpiCommunications/NeighborData.hpp +++ b/src/coreComponents/mesh/mpiCommunications/NeighborData.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/mesh/mpiCommunications/PartitionBase.cpp b/src/coreComponents/mesh/mpiCommunications/PartitionBase.cpp index fdd1db1cfec..a1175c74b62 100644 --- a/src/coreComponents/mesh/mpiCommunications/PartitionBase.cpp +++ b/src/coreComponents/mesh/mpiCommunications/PartitionBase.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/mesh/mpiCommunications/PartitionBase.hpp b/src/coreComponents/mesh/mpiCommunications/PartitionBase.hpp index 09605d6e0c2..b4b5bc402bc 100644 --- a/src/coreComponents/mesh/mpiCommunications/PartitionBase.hpp +++ b/src/coreComponents/mesh/mpiCommunications/PartitionBase.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/mesh/mpiCommunications/SpatialPartition.cpp b/src/coreComponents/mesh/mpiCommunications/SpatialPartition.cpp index dda0542444e..26f6f4c90a0 100644 --- a/src/coreComponents/mesh/mpiCommunications/SpatialPartition.cpp +++ b/src/coreComponents/mesh/mpiCommunications/SpatialPartition.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/mesh/mpiCommunications/SpatialPartition.hpp b/src/coreComponents/mesh/mpiCommunications/SpatialPartition.hpp index 0328b4611a3..00825c9b6e7 100644 --- a/src/coreComponents/mesh/mpiCommunications/SpatialPartition.hpp +++ b/src/coreComponents/mesh/mpiCommunications/SpatialPartition.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/mesh/simpleGeometricObjects/Box.cpp b/src/coreComponents/mesh/simpleGeometricObjects/Box.cpp index 852aa3b3e79..c8ff70834c9 100644 --- a/src/coreComponents/mesh/simpleGeometricObjects/Box.cpp +++ b/src/coreComponents/mesh/simpleGeometricObjects/Box.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/mesh/simpleGeometricObjects/Box.hpp b/src/coreComponents/mesh/simpleGeometricObjects/Box.hpp index fd0262a22cc..feacb96c193 100644 --- a/src/coreComponents/mesh/simpleGeometricObjects/Box.hpp +++ b/src/coreComponents/mesh/simpleGeometricObjects/Box.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/mesh/simpleGeometricObjects/CustomPolarObject.cpp b/src/coreComponents/mesh/simpleGeometricObjects/CustomPolarObject.cpp index c5e06695806..5bcab75fcde 100644 --- a/src/coreComponents/mesh/simpleGeometricObjects/CustomPolarObject.cpp +++ b/src/coreComponents/mesh/simpleGeometricObjects/CustomPolarObject.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/mesh/simpleGeometricObjects/CustomPolarObject.hpp b/src/coreComponents/mesh/simpleGeometricObjects/CustomPolarObject.hpp index 0edc644df7d..1a320d3162c 100644 --- a/src/coreComponents/mesh/simpleGeometricObjects/CustomPolarObject.hpp +++ b/src/coreComponents/mesh/simpleGeometricObjects/CustomPolarObject.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/mesh/simpleGeometricObjects/Cylinder.cpp b/src/coreComponents/mesh/simpleGeometricObjects/Cylinder.cpp index bc848f317b3..da38cb43438 100644 --- a/src/coreComponents/mesh/simpleGeometricObjects/Cylinder.cpp +++ b/src/coreComponents/mesh/simpleGeometricObjects/Cylinder.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/mesh/simpleGeometricObjects/Cylinder.hpp b/src/coreComponents/mesh/simpleGeometricObjects/Cylinder.hpp index b3b880e851f..2185c4d315c 100644 --- a/src/coreComponents/mesh/simpleGeometricObjects/Cylinder.hpp +++ b/src/coreComponents/mesh/simpleGeometricObjects/Cylinder.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/mesh/simpleGeometricObjects/Disc.cpp b/src/coreComponents/mesh/simpleGeometricObjects/Disc.cpp index 31e0bfd5e50..f88f139f73c 100644 --- a/src/coreComponents/mesh/simpleGeometricObjects/Disc.cpp +++ b/src/coreComponents/mesh/simpleGeometricObjects/Disc.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/mesh/simpleGeometricObjects/Disc.hpp b/src/coreComponents/mesh/simpleGeometricObjects/Disc.hpp index 8a0cd4ebe75..38b3c7c4d17 100644 --- a/src/coreComponents/mesh/simpleGeometricObjects/Disc.hpp +++ b/src/coreComponents/mesh/simpleGeometricObjects/Disc.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/mesh/simpleGeometricObjects/GeometricObjectManager.cpp b/src/coreComponents/mesh/simpleGeometricObjects/GeometricObjectManager.cpp index a6824ff7fa8..4209636f4d5 100644 --- a/src/coreComponents/mesh/simpleGeometricObjects/GeometricObjectManager.cpp +++ b/src/coreComponents/mesh/simpleGeometricObjects/GeometricObjectManager.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -53,8 +53,9 @@ GeometricObjectManager & GeometricObjectManager::getInstance() Group * GeometricObjectManager::createChild( string const & childKey, string const & childName ) { - GEOS_LOG_RANK_0( "Adding Geometric Object: " << childKey << ", " << childName ); - std::unique_ptr< SimpleGeometricObjectBase > geometriObject = SimpleGeometricObjectBase::CatalogInterface::factory( childKey, childName, this ); + GEOS_LOG_RANK_0( GEOS_FMT( "{}: adding {} {}", getName(), childKey, childName ) ); + std::unique_ptr< SimpleGeometricObjectBase > geometriObject = + SimpleGeometricObjectBase::CatalogInterface::factory( childKey, getDataContext(), childName, this ); return &this->registerGroup< SimpleGeometricObjectBase >( childName, std::move( geometriObject ) ); } diff --git a/src/coreComponents/mesh/simpleGeometricObjects/GeometricObjectManager.hpp b/src/coreComponents/mesh/simpleGeometricObjects/GeometricObjectManager.hpp index 499dddddcba..7aef070b24f 100644 --- a/src/coreComponents/mesh/simpleGeometricObjects/GeometricObjectManager.hpp +++ b/src/coreComponents/mesh/simpleGeometricObjects/GeometricObjectManager.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/mesh/simpleGeometricObjects/PlanarGeometricObject.cpp b/src/coreComponents/mesh/simpleGeometricObjects/PlanarGeometricObject.cpp index 470040f682e..f8539b88504 100644 --- a/src/coreComponents/mesh/simpleGeometricObjects/PlanarGeometricObject.cpp +++ b/src/coreComponents/mesh/simpleGeometricObjects/PlanarGeometricObject.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/mesh/simpleGeometricObjects/PlanarGeometricObject.hpp b/src/coreComponents/mesh/simpleGeometricObjects/PlanarGeometricObject.hpp index 47483f4f233..b7ed93439f1 100644 --- a/src/coreComponents/mesh/simpleGeometricObjects/PlanarGeometricObject.hpp +++ b/src/coreComponents/mesh/simpleGeometricObjects/PlanarGeometricObject.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/mesh/simpleGeometricObjects/Rectangle.cpp b/src/coreComponents/mesh/simpleGeometricObjects/Rectangle.cpp index fa8639eb5d0..e8817e10dca 100644 --- a/src/coreComponents/mesh/simpleGeometricObjects/Rectangle.cpp +++ b/src/coreComponents/mesh/simpleGeometricObjects/Rectangle.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/mesh/simpleGeometricObjects/Rectangle.hpp b/src/coreComponents/mesh/simpleGeometricObjects/Rectangle.hpp index 4e23c3b06c8..03dd2f8ba8a 100644 --- a/src/coreComponents/mesh/simpleGeometricObjects/Rectangle.hpp +++ b/src/coreComponents/mesh/simpleGeometricObjects/Rectangle.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/mesh/simpleGeometricObjects/SimpleGeometricObjectBase.cpp b/src/coreComponents/mesh/simpleGeometricObjects/SimpleGeometricObjectBase.cpp index 932bdf78758..8b823b233b7 100644 --- a/src/coreComponents/mesh/simpleGeometricObjects/SimpleGeometricObjectBase.cpp +++ b/src/coreComponents/mesh/simpleGeometricObjects/SimpleGeometricObjectBase.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/mesh/simpleGeometricObjects/SimpleGeometricObjectBase.hpp b/src/coreComponents/mesh/simpleGeometricObjects/SimpleGeometricObjectBase.hpp index dc7ddf71925..9b9338d6dc3 100644 --- a/src/coreComponents/mesh/simpleGeometricObjects/SimpleGeometricObjectBase.hpp +++ b/src/coreComponents/mesh/simpleGeometricObjects/SimpleGeometricObjectBase.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/mesh/simpleGeometricObjects/ThickPlane.cpp b/src/coreComponents/mesh/simpleGeometricObjects/ThickPlane.cpp index 919881583d3..d69092b79cc 100644 --- a/src/coreComponents/mesh/simpleGeometricObjects/ThickPlane.cpp +++ b/src/coreComponents/mesh/simpleGeometricObjects/ThickPlane.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/mesh/simpleGeometricObjects/ThickPlane.hpp b/src/coreComponents/mesh/simpleGeometricObjects/ThickPlane.hpp index 9d46881108b..ce4fa5fb65f 100644 --- a/src/coreComponents/mesh/simpleGeometricObjects/ThickPlane.hpp +++ b/src/coreComponents/mesh/simpleGeometricObjects/ThickPlane.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/mesh/unitTests/testComputationalGeometry.cpp b/src/coreComponents/mesh/unitTests/testComputationalGeometry.cpp index 21b68839d4a..403d5f25483 100644 --- a/src/coreComponents/mesh/unitTests/testComputationalGeometry.cpp +++ b/src/coreComponents/mesh/unitTests/testComputationalGeometry.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/mesh/unitTests/testGeometricObjects.cpp b/src/coreComponents/mesh/unitTests/testGeometricObjects.cpp index 32c2181f58a..e767a9f46ff 100644 --- a/src/coreComponents/mesh/unitTests/testGeometricObjects.cpp +++ b/src/coreComponents/mesh/unitTests/testGeometricObjects.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/mesh/unitTests/testMeshObjectPath.cpp b/src/coreComponents/mesh/unitTests/testMeshObjectPath.cpp index 1b222308603..e1f82992bd4 100644 --- a/src/coreComponents/mesh/unitTests/testMeshObjectPath.cpp +++ b/src/coreComponents/mesh/unitTests/testMeshObjectPath.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/mesh/utilities/AverageOverQuadraturePointsKernel.hpp b/src/coreComponents/mesh/utilities/AverageOverQuadraturePointsKernel.hpp index 6f2d4840b41..254bc81fcce 100644 --- a/src/coreComponents/mesh/utilities/AverageOverQuadraturePointsKernel.hpp +++ b/src/coreComponents/mesh/utilities/AverageOverQuadraturePointsKernel.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/mesh/utilities/CIcomputationKernel.hpp b/src/coreComponents/mesh/utilities/CIcomputationKernel.hpp index d76f0ec131d..d9abae9ed31 100644 --- a/src/coreComponents/mesh/utilities/CIcomputationKernel.hpp +++ b/src/coreComponents/mesh/utilities/CIcomputationKernel.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/mesh/utilities/ComputationalGeometry.cpp b/src/coreComponents/mesh/utilities/ComputationalGeometry.cpp index 91bbeb087eb..c920605de80 100644 --- a/src/coreComponents/mesh/utilities/ComputationalGeometry.cpp +++ b/src/coreComponents/mesh/utilities/ComputationalGeometry.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/mesh/utilities/ComputationalGeometry.hpp b/src/coreComponents/mesh/utilities/ComputationalGeometry.hpp index 23e3fe65887..ef6f7750ff1 100644 --- a/src/coreComponents/mesh/utilities/ComputationalGeometry.hpp +++ b/src/coreComponents/mesh/utilities/ComputationalGeometry.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -24,7 +24,7 @@ #include "common/DataLayouts.hpp" #include "finiteElement/elementFormulations/H1_Hexahedron_Lagrange1_GaussLegendre2.hpp" #include "finiteElement/elementFormulations/H1_Pyramid_Lagrange1_Gauss5.hpp" -#include "finiteElement/elementFormulations/H1_Tetrahedron_Lagrange1_Gauss1.hpp" +#include "finiteElement/elementFormulations/H1_Tetrahedron_Lagrange1_Gauss.hpp" #include "finiteElement/elementFormulations/H1_Wedge_Lagrange1_Gauss6.hpp" #include "LvArray/src/output.hpp" #include "LvArray/src/tensorOps.hpp" diff --git a/src/coreComponents/mesh/utilities/MeshMapUtilities.hpp b/src/coreComponents/mesh/utilities/MeshMapUtilities.hpp index 8eadb77b594..a3508a6e55b 100644 --- a/src/coreComponents/mesh/utilities/MeshMapUtilities.hpp +++ b/src/coreComponents/mesh/utilities/MeshMapUtilities.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/mesh/utilities/StructuredGridUtilities.hpp b/src/coreComponents/mesh/utilities/StructuredGridUtilities.hpp index 305696161c6..41c62f6a860 100644 --- a/src/coreComponents/mesh/utilities/StructuredGridUtilities.hpp +++ b/src/coreComponents/mesh/utilities/StructuredGridUtilities.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/CMakeLists.txt b/src/coreComponents/physicsSolvers/CMakeLists.txt index 64487629fd3..37c1da41495 100644 --- a/src/coreComponents/physicsSolvers/CMakeLists.txt +++ b/src/coreComponents/physicsSolvers/CMakeLists.txt @@ -1,7 +1,7 @@ # SPDX-License-Identifier: LGPL-2.1-only # # Copyright (c) 2016-2024 Lawrence Livermore National Security LLC -# Copyright (c) 2018-2024 Total, S.A +# Copyright (c) 2018-2024 TotalEnergies # Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University # Copyright (c) 2023-2024 Chevron # Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/FieldStatisticsBase.hpp b/src/coreComponents/physicsSolvers/FieldStatisticsBase.hpp index 512edb7af7e..c2516decb26 100644 --- a/src/coreComponents/physicsSolvers/FieldStatisticsBase.hpp +++ b/src/coreComponents/physicsSolvers/FieldStatisticsBase.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/KernelLaunchSelectors.hpp b/src/coreComponents/physicsSolvers/KernelLaunchSelectors.hpp index 6a07386bd79..99dd27435c1 100644 --- a/src/coreComponents/physicsSolvers/KernelLaunchSelectors.hpp +++ b/src/coreComponents/physicsSolvers/KernelLaunchSelectors.hpp @@ -2,10 +2,11 @@ * ------------------------------------------------------------------------------------------------------------ * SPDX-License-Identifier: LGPL-2.1-only * - * Copyright (c) 2018-2020 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2020 The Board of Trustees of the Leland Stanford Junior University - * Copyright (c) 2018-2020 TotalEnergies - * Copyright (c) 2019- GEOSX Contributors + * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC + * Copyright (c) 2018-2024 TotalEnergies + * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University + * Copyright (c) 2023-2024 Chevron + * Copyright (c) 2019- GEOS/GEOSX Contributors * All rights reserved * * See top level LICENSE, COPYRIGHT, CONTRIBUTORS, NOTICE, and ACKNOWLEDGEMENTS files for details. diff --git a/src/coreComponents/physicsSolvers/LinearSolverParameters.cpp b/src/coreComponents/physicsSolvers/LinearSolverParameters.cpp index 3bc0888dae6..cdf39353527 100644 --- a/src/coreComponents/physicsSolvers/LinearSolverParameters.cpp +++ b/src/coreComponents/physicsSolvers/LinearSolverParameters.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -341,10 +341,8 @@ void LinearSolverParametersInput::print() tableData.addRow( "ILU(T) threshold factor", m_parameters.ifact.threshold ); } } - TableLayout const tableLayout = TableLayout( { - TableLayout::ColumnParam{"Parameter", TableLayout::Alignment::left}, - TableLayout::ColumnParam{"Value", TableLayout::Alignment::left}, - }, GEOS_FMT( "{}: linear solver", getParent().getName() ) ); + TableLayout const tableLayout = TableLayout( GEOS_FMT( "{}: linear solver", getParent().getName() ), + { "Parameter", "Value" } ); TableTextFormatter const tableFormatter( tableLayout ); GEOS_LOG_RANK_0( tableFormatter.toString( tableData )); } diff --git a/src/coreComponents/physicsSolvers/LinearSolverParameters.hpp b/src/coreComponents/physicsSolvers/LinearSolverParameters.hpp index 2d6636b8f77..4b1699a1615 100644 --- a/src/coreComponents/physicsSolvers/LinearSolverParameters.hpp +++ b/src/coreComponents/physicsSolvers/LinearSolverParameters.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/LogLevelsInfo.hpp b/src/coreComponents/physicsSolvers/LogLevelsInfo.hpp index a6c75d3e1c6..85f17120411 100644 --- a/src/coreComponents/physicsSolvers/LogLevelsInfo.hpp +++ b/src/coreComponents/physicsSolvers/LogLevelsInfo.hpp @@ -2,10 +2,11 @@ * ------------------------------------------------------------------------------------------------------------ * SPDX-License-Identifier: LGPL-2.1-only * - * Copyright (c) 2018-2020 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2020 The Board of Trustees of the Leland Stanford Junior University - * Copyright (c) 2018-2020 TotalEnergies - * Copyright (c) 2019- GEOSX Contributors + * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC + * Copyright (c) 2018-2024 TotalEnergies + * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University + * Copyright (c) 2023-2024 Chevron + * Copyright (c) 2019- GEOS/GEOSX Contributors * All rights reserved * * See top level LICENSE, COPYRIGHT, CONTRIBUTORS, NOTICE, and ACKNOWLEDGEMENTS files for details. diff --git a/src/coreComponents/physicsSolvers/NonlinearSolverParameters.cpp b/src/coreComponents/physicsSolvers/NonlinearSolverParameters.cpp index c8438212f63..dd9c0d58a7c 100644 --- a/src/coreComponents/physicsSolvers/NonlinearSolverParameters.cpp +++ b/src/coreComponents/physicsSolvers/NonlinearSolverParameters.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -235,10 +235,8 @@ void NonlinearSolverParameters::print() const tableData.addRow( "Sequential convergence criterion", m_sequentialConvergenceCriterion ); tableData.addRow( "Subcycling", m_subcyclingOption ); } - TableLayout const tableLayout = TableLayout( { - TableLayout::ColumnParam{"Parameter", TableLayout::Alignment::left}, - TableLayout::ColumnParam{"Value", TableLayout::Alignment::left}, - }, GEOS_FMT( "{}: nonlinear solver", getParent().getName() ) ); + TableLayout const tableLayout = TableLayout( GEOS_FMT( "{}: nonlinear solver", getParent().getName() ), + { "Parameter", "Value" } ); TableTextFormatter const tableFormatter( tableLayout ); GEOS_LOG_RANK_0( tableFormatter.toString( tableData )); } diff --git a/src/coreComponents/physicsSolvers/NonlinearSolverParameters.hpp b/src/coreComponents/physicsSolvers/NonlinearSolverParameters.hpp index a084b693774..a1efed70d84 100644 --- a/src/coreComponents/physicsSolvers/NonlinearSolverParameters.hpp +++ b/src/coreComponents/physicsSolvers/NonlinearSolverParameters.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/PhysicsSolverBase.cpp b/src/coreComponents/physicsSolvers/PhysicsSolverBase.cpp index 1e2ef81d5a9..e0eefbde8c2 100644 --- a/src/coreComponents/physicsSolvers/PhysicsSolverBase.cpp +++ b/src/coreComponents/physicsSolvers/PhysicsSolverBase.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -191,6 +191,7 @@ void PhysicsSolverBase::registerDataOnMesh( Group & meshBodies ) Group * PhysicsSolverBase::createChild( string const & GEOS_UNUSED_PARAM( childKey ), string const & GEOS_UNUSED_PARAM( childName ) ) { + // Unused as all children are created within the constructor return nullptr; } @@ -350,17 +351,17 @@ void PhysicsSolverBase::logEndOfCycleInformation( integer const cycleNumber, std::vector< real64 > const & subStepDt ) const { // The formating here is a work in progress. - GEOS_LOG_RANK_0( "\n------------------------- TIMESTEP END -------------------------" ); - GEOS_LOG_RANK_0( GEOS_FMT( " - Cycle: {}", cycleNumber ) ); - GEOS_LOG_RANK_0( GEOS_FMT( " - N substeps: {}", numOfSubSteps ) ); + GEOS_LOG_LEVEL_INFO_RANK_0( logInfo::TimeStep, "\n------------------------- TIMESTEP END -------------------------" ); + GEOS_LOG_LEVEL_INFO_RANK_0( logInfo::TimeStep, GEOS_FMT( " - Cycle: {}", cycleNumber ) ); + GEOS_LOG_LEVEL_INFO_RANK_0( logInfo::TimeStep, GEOS_FMT( " - N substeps: {}", numOfSubSteps ) ); std::string logMessage = " - dt:"; for( integer i = 0; i < numOfSubSteps; ++i ) { logMessage += " " + units::TimeFormatInfo::fromSeconds( subStepDt[i] ).toString(); } // Log the complete message once - GEOS_LOG_RANK_0( logMessage ); - GEOS_LOG_RANK_0( "------------------------------------------------------------------\n" ); + GEOS_LOG_LEVEL_INFO_RANK_0( logInfo::TimeStep, logMessage ); + GEOS_LOG_LEVEL_INFO_RANK_0( logInfo::TimeStep, "------------------------------------------------------------------\n" ); } real64 PhysicsSolverBase::setNextDt( real64 const & currentDt, @@ -458,15 +459,6 @@ real64 PhysicsSolverBase::setNextDtBasedOnNewtonIter( real64 const & currentDt ) return nextDt; } - -real64 PhysicsSolverBase::setNextDtBasedOnCFL( const geos::real64 & currentDt, geos::DomainPartition & domain ) -{ - GEOS_UNUSED_VAR( currentDt, domain ); - return LvArray::NumericLimits< real64 >::max; // i.e., not implemented -} - - - real64 PhysicsSolverBase::linearImplicitStep( real64 const & time_n, real64 const & dt, integer const GEOS_UNUSED_PARAM( cycleNumber ), diff --git a/src/coreComponents/physicsSolvers/PhysicsSolverBase.hpp b/src/coreComponents/physicsSolvers/PhysicsSolverBase.hpp index c6b8866343a..95a87f1a87f 100644 --- a/src/coreComponents/physicsSolvers/PhysicsSolverBase.hpp +++ b/src/coreComponents/physicsSolvers/PhysicsSolverBase.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -239,17 +239,6 @@ class PhysicsSolverBase : public ExecutableGroup virtual real64 setNextDtBasedOnStateChange( real64 const & currentDt, DomainPartition & domain ); - /** - * @brief function to set the next dt based on state change - * @param [in] currentDt the current time step size - * @param[in] domain the domain object - * @return the prescribed time step size - */ - virtual real64 setNextDtBasedOnCFL( real64 const & currentDt, - DomainPartition & domain ); - - - /** * @brief Entry function for an explicit time integration step * @param time_n time at the beginning of the step diff --git a/src/coreComponents/physicsSolvers/PhysicsSolverBaseKernels.hpp b/src/coreComponents/physicsSolvers/PhysicsSolverBaseKernels.hpp index e085177bae8..45e2ade8570 100644 --- a/src/coreComponents/physicsSolvers/PhysicsSolverBaseKernels.hpp +++ b/src/coreComponents/physicsSolvers/PhysicsSolverBaseKernels.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -267,10 +267,9 @@ class LinfResidualNormHelper static void computeGlobalNorm( array1d< real64 > const & localResidualNorm, array1d< real64 > & globalResidualNorm ) { - MpiWrapper::allReduce( localResidualNorm.data(), - globalResidualNorm.data(), - localResidualNorm.size(), - MpiWrapper::getMpiOp( MpiWrapper::Reduction::Max ), + MpiWrapper::allReduce( localResidualNorm, + globalResidualNorm, + MpiWrapper::Reduction::Max, MPI_COMM_GEOS ); } }; @@ -309,16 +308,17 @@ class L2ResidualNormHelper { array1d< real64 > sumLocalResidualNorm( localResidualNorm.size() ); array1d< real64 > sumLocalResidualNormalizer( localResidualNormalizer.size() ); - MpiWrapper::allReduce( localResidualNorm.data(), - sumLocalResidualNorm.data(), - localResidualNorm.size(), - MpiWrapper::getMpiOp( MpiWrapper::Reduction::Sum ), + + MpiWrapper::allReduce( localResidualNorm, + sumLocalResidualNorm, + MpiWrapper::Reduction::Sum, MPI_COMM_GEOS ); - MpiWrapper::allReduce( localResidualNormalizer.data(), - sumLocalResidualNormalizer.data(), - localResidualNormalizer.size(), - MpiWrapper::getMpiOp( MpiWrapper::Reduction::Sum ), + + MpiWrapper::allReduce( localResidualNormalizer, + sumLocalResidualNormalizer, + MpiWrapper::Reduction::Sum, MPI_COMM_GEOS ); + for( integer i = 0; i < localResidualNorm.size(); ++i ) { globalResidualNorm[i] = sqrt( sumLocalResidualNorm[i] ) / sqrt( sumLocalResidualNormalizer[i] ); diff --git a/src/coreComponents/physicsSolvers/PhysicsSolverManager.cpp b/src/coreComponents/physicsSolvers/PhysicsSolverManager.cpp index 5c199154f30..9301cf5ee67 100644 --- a/src/coreComponents/physicsSolvers/PhysicsSolverManager.cpp +++ b/src/coreComponents/physicsSolvers/PhysicsSolverManager.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -46,14 +46,10 @@ PhysicsSolverManager::~PhysicsSolverManager() //START_SPHINX_INCLUDE_00 Group * PhysicsSolverManager::createChild( string const & childKey, string const & childName ) { - Group * rval = nullptr; - if( PhysicsSolverBase::CatalogInterface::hasKeyName( childKey ) ) - { - GEOS_LOG_RANK_0( "Adding Solver of type " << childKey << ", named " << childName ); - rval = ®isterGroup( childName, - PhysicsSolverBase::CatalogInterface::factory( childKey, childName, this ) ); - } - return rval; + GEOS_LOG_RANK_0( GEOS_FMT( "{}: adding {} {}", getName(), childKey, childName ) ); + std::unique_ptr< PhysicsSolverBase > solver = + PhysicsSolverBase::CatalogInterface::factory( childKey, getDataContext(), childName, this ); + return ®isterGroup< PhysicsSolverBase >( childName, std::move( solver ) ); } diff --git a/src/coreComponents/physicsSolvers/PhysicsSolverManager.hpp b/src/coreComponents/physicsSolvers/PhysicsSolverManager.hpp index 6c4e66c3127..3399cf5c631 100644 --- a/src/coreComponents/physicsSolvers/PhysicsSolverManager.hpp +++ b/src/coreComponents/physicsSolvers/PhysicsSolverManager.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/SolverStatistics.cpp b/src/coreComponents/physicsSolvers/SolverStatistics.cpp index 98105ae155a..b8e1be759f0 100644 --- a/src/coreComponents/physicsSolvers/SolverStatistics.cpp +++ b/src/coreComponents/physicsSolvers/SolverStatistics.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/SolverStatistics.hpp b/src/coreComponents/physicsSolvers/SolverStatistics.hpp index 592d2f0329c..353dee7e774 100644 --- a/src/coreComponents/physicsSolvers/SolverStatistics.hpp +++ b/src/coreComponents/physicsSolvers/SolverStatistics.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/contact/CMakeLists.txt b/src/coreComponents/physicsSolvers/contact/CMakeLists.txt index c9bf75bec3e..ac5fbe3bc1a 100644 --- a/src/coreComponents/physicsSolvers/contact/CMakeLists.txt +++ b/src/coreComponents/physicsSolvers/contact/CMakeLists.txt @@ -3,18 +3,21 @@ set( physicsSolvers_headers ${physicsSolvers_headers} contact/ContactSolverBase.hpp contact/ContactFields.hpp - contact/SolidMechanicsEFEMKernelsBase.hpp - contact/SolidMechanicsEFEMKernels.hpp - contact/SolidMechanicsEFEMStaticCondensationKernels.hpp - contact/SolidMechanicsEFEMKernelsHelper.hpp contact/SolidMechanicsEmbeddedFractures.hpp contact/SolidMechanicsLagrangeContact.hpp + contact/SolidMechanicsLagrangeContactBubbleStab.hpp contact/SolidMechanicsAugmentedLagrangianContact.hpp - contact/SolidMechanicsALMKernelsBase.hpp - contact/SolidMechanicsALMKernels.hpp - contact/SolidMechanicsALMKernelsHelper.hpp - contact/SolidMechanicsALMJumpUpdateKernels.hpp - contact/SolidMechanicsALMBubbleKernels.hpp + contact/kernels/SolidMechanicsConformingContactKernelsBase.hpp + contact/kernels/SolidMechanicsDisplacementJumpUpdateKernels.hpp + contact/kernels/SolidMechanicsEFEMKernelsBase.hpp + contact/kernels/SolidMechanicsEFEMKernels.hpp + contact/kernels/SolidMechanicsEFEMStaticCondensationKernels.hpp + contact/kernels/SolidMechanicsEFEMKernelsHelper.hpp + contact/kernels/SolidMechanicsALMKernelsBase.hpp + contact/kernels/SolidMechanicsALMKernels.hpp + contact/kernels/SolidMechanicsConformingContactKernelsHelper.hpp + contact/kernels/SolidMechanicsContactFaceBubbleKernels.hpp + contact/kernels/SolidMechanicsLagrangeContactKernels.hpp contact/LogLevelsInfo.hpp PARENT_SCOPE ) @@ -25,5 +28,6 @@ set( physicsSolvers_sources contact/ContactSolverBase.cpp contact/SolidMechanicsEmbeddedFractures.cpp contact/SolidMechanicsLagrangeContact.cpp + contact/SolidMechanicsLagrangeContactBubbleStab.cpp contact/SolidMechanicsAugmentedLagrangianContact.cpp PARENT_SCOPE ) \ No newline at end of file diff --git a/src/coreComponents/physicsSolvers/contact/ContactFields.hpp b/src/coreComponents/physicsSolvers/contact/ContactFields.hpp index f86521ffd75..7528f02da14 100644 --- a/src/coreComponents/physicsSolvers/contact/ContactFields.hpp +++ b/src/coreComponents/physicsSolvers/contact/ContactFields.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -74,13 +74,45 @@ DECLARE_FIELD( dispJump, WRITE_AND_READ, "Displacement jump vector in the local reference system" ); +DECLARE_FIELD( dispJump_n, + "displacementJump_n", + array2d< real64 >, + 0, + NOPLOT, + WRITE_AND_READ, + "Displacement jump vector in the local reference system at the current time-step" ); + DECLARE_FIELD( slip, "slip", array1d< real64 >, 0, LEVEL_0, - NO_WRITE, - "Slip." ); + WRITE_AND_READ, + "Slip" ); + +DECLARE_FIELD( tangentialTraction, + "tangentialTraction", + array1d< real64 >, + 0, + LEVEL_0, + WRITE_AND_READ, + "Tangential traction" ); + +DECLARE_FIELD( deltaSlip, + "deltaSlip", + array2d< real64 >, + 0.0, + LEVEL_0, + WRITE_AND_READ, + "Slip increment" ); + +DECLARE_FIELD( deltaSlip_n, + "deltaSlip_n", + array2d< real64 >, + 0.0, + NOPLOT, + WRITE_AND_READ, + "Initial slip increment at this time step" ); DECLARE_FIELD( deltaDispJump, "deltaDisplacementJump", @@ -106,6 +138,14 @@ DECLARE_FIELD( traction, WRITE_AND_READ, "Fracture traction vector in the local reference system." ); +DECLARE_FIELD( traction_n, + "traction_n", + array2d< real64 >, + 0, + NOPLOT, + WRITE_AND_READ, + "Initial fracture traction vector in the local reference system at this time-step." ); + DECLARE_FIELD( deltaTraction, "deltaTraction", array2d< real64 >, @@ -146,6 +186,14 @@ DECLARE_FIELD( oldFractureState, NO_WRITE, "Fracture state at the previous timestep." ); +DECLARE_FIELD( targetIncrementalJump, + "targetIncrementalJump", + array2d< real64 >, + 0, + NOPLOT, + WRITE_AND_READ, + "It's the target incremental jump in a timestep (e.g., slip coming from RS)." ); + ENUM_STRINGS( FractureState::State, "stick", "new_slip", "slip", "open" ); diff --git a/src/coreComponents/physicsSolvers/contact/ContactSolverBase.cpp b/src/coreComponents/physicsSolvers/contact/ContactSolverBase.cpp index 63210cb686c..9555658db65 100644 --- a/src/coreComponents/physicsSolvers/contact/ContactSolverBase.cpp +++ b/src/coreComponents/physicsSolvers/contact/ContactSolverBase.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -26,6 +26,7 @@ #include "physicsSolvers/contact/LogLevelsInfo.hpp" #include "physicsSolvers/solidMechanics/SolidMechanicsLagrangianFEM.hpp" #include "common/GEOS_RAJA_Interface.hpp" +#include "fieldSpecification/FieldSpecificationManager.hpp" namespace geos { @@ -66,6 +67,7 @@ void ContactSolverBase::registerDataOnMesh( dataRepository::Group & meshBodies ) forFractureRegionOnMeshTargets( meshBodies, [&] ( SurfaceElementRegion & fractureRegion ) { string const labels[3] = { "normal", "tangent1", "tangent2" }; + string const labelsTangent[2] = { "tangent1", "tangent2" }; fractureRegion.forElementSubRegions< SurfaceElementSubRegion >( [&]( SurfaceElementSubRegion & subRegion ) { @@ -83,6 +85,10 @@ void ContactSolverBase::registerDataOnMesh( dataRepository::Group & meshBodies ) setDimLabels( 1, labels ). reference().resizeDimension< 1 >( 3 ); + subRegion.registerField< fields::contact::dispJump_n >( getName() ). + setDimLabels( 1, labels ). + reference().resizeDimension< 1 >( 3 ); + subRegion.registerField< fields::contact::traction >( getName() ). setDimLabels( 1, labels ). reference().resizeDimension< 1 >( 3 ); @@ -92,6 +98,14 @@ void ContactSolverBase::registerDataOnMesh( dataRepository::Group & meshBodies ) subRegion.registerField< fields::contact::oldFractureState >( getName() ); subRegion.registerField< fields::contact::slip >( getName() ); + + subRegion.registerField< fields::contact::tangentialTraction >( getName() ); + + subRegion.registerField< fields::contact::deltaSlip >( getName() ). + setDimLabels( 1, labelsTangent ).reference().resizeDimension< 1 >( 2 ); + + subRegion.registerField< fields::contact::deltaSlip_n >( this->getName() ). + setDimLabels( 1, labelsTangent ).reference().resizeDimension< 1 >( 2 ); } ); } ); @@ -170,10 +184,9 @@ void ContactSolverBase::computeFractureStateStatistics( MeshLevel const & mesh, array1d< globalIndex > totalCounter( 4 ); - MpiWrapper::allReduce( localCounter.data(), - totalCounter.data(), - 4, - MPI_SUM, + MpiWrapper::allReduce( localCounter, + totalCounter, + MpiWrapper::Reduction::Sum, MPI_COMM_GEOS ); numStick = totalCounter[0]; @@ -251,4 +264,4 @@ void ContactSolverBase::setConstitutiveNamesCallSuper( ElementSubRegionBase & su } } -} /* namespace geos */ +} /* namespace geos */ diff --git a/src/coreComponents/physicsSolvers/contact/ContactSolverBase.hpp b/src/coreComponents/physicsSolvers/contact/ContactSolverBase.hpp index 829c4761ef1..646d6b17277 100644 --- a/src/coreComponents/physicsSolvers/contact/ContactSolverBase.hpp +++ b/src/coreComponents/physicsSolvers/contact/ContactSolverBase.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/contact/LogLevelsInfo.hpp b/src/coreComponents/physicsSolvers/contact/LogLevelsInfo.hpp index f58f9494b0d..09228674f74 100644 --- a/src/coreComponents/physicsSolvers/contact/LogLevelsInfo.hpp +++ b/src/coreComponents/physicsSolvers/contact/LogLevelsInfo.hpp @@ -2,10 +2,11 @@ * ------------------------------------------------------------------------------------------------------------ * SPDX-License-Identifier: LGPL-2.1-only * - * Copyright (c) 2018-2020 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2020 The Board of Trustees of the Leland Stanford Junior University - * Copyright (c) 2018-2020 TotalEnergies - * Copyright (c) 2019- GEOSX Contributors + * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC + * Copyright (c) 2018-2024 TotalEnergies + * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University + * Copyright (c) 2023-2024 Chevron + * Copyright (c) 2019- GEOS/GEOSX Contributors * All rights reserved * * See top level LICENSE, COPYRIGHT, CONTRIBUTORS, NOTICE, and ACKNOWLEDGEMENTS files for details. diff --git a/src/coreComponents/physicsSolvers/contact/SolidMechanicsAugmentedLagrangianContact.cpp b/src/coreComponents/physicsSolvers/contact/SolidMechanicsAugmentedLagrangianContact.cpp index fee37cee7b9..090f551ca81 100644 --- a/src/coreComponents/physicsSolvers/contact/SolidMechanicsAugmentedLagrangianContact.cpp +++ b/src/coreComponents/physicsSolvers/contact/SolidMechanicsAugmentedLagrangianContact.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -20,10 +20,12 @@ #include "mesh/DomainPartition.hpp" #include "SolidMechanicsAugmentedLagrangianContact.hpp" -#include "physicsSolvers/contact/SolidMechanicsALMKernels.hpp" -#include "physicsSolvers/contact/SolidMechanicsALMSimultaneousKernels.hpp" -#include "physicsSolvers/contact/SolidMechanicsALMJumpUpdateKernels.hpp" -#include "physicsSolvers/contact/SolidMechanicsALMBubbleKernels.hpp" +#include "physicsSolvers/contact/kernels/SolidMechanicsConformingContactKernelsBase.hpp" +#include "physicsSolvers/contact/kernels/SolidMechanicsALMKernels.hpp" +#include "physicsSolvers/contact/kernels/SolidMechanicsALMKernelsBase.hpp" +#include "physicsSolvers/contact/kernels/SolidMechanicsALMSimultaneousKernels.hpp" +#include "physicsSolvers/contact/kernels/SolidMechanicsDisplacementJumpUpdateKernels.hpp" +#include "physicsSolvers/contact/kernels/SolidMechanicsContactFaceBubbleKernels.hpp" #include "physicsSolvers/contact/LogLevelsInfo.hpp" #include "constitutive/ConstitutiveManager.hpp" @@ -44,14 +46,59 @@ SolidMechanicsAugmentedLagrangianContact::SolidMechanicsAugmentedLagrangianConta m_faceTypeToFiniteElements["Quadrilateral"] = std::make_unique< finiteElement::H1_QuadrilateralFace_Lagrange1_GaussLegendre2 >(); m_faceTypeToFiniteElements["Triangle"] = std::make_unique< finiteElement::H1_TriangleFace_Lagrange1_Gauss1 >(); - LinearSolverParameters & linParams = m_linearSolverParameters.get(); + registerWrapper( viewKeyStruct::simultaneousString(), &m_simultaneous ). + setInputFlag( InputFlags::OPTIONAL ). + setApplyDefaultValue( 1 ). + setDescription( "Flag to update the Lagrange multiplier at each Newton iteration (true), or only after the Newton loop has converged (false)" ); + + registerWrapper( viewKeyStruct::symmetricString(), &m_symmetric ). + setInputFlag( InputFlags::OPTIONAL ). + setApplyDefaultValue( 1 ). + setDescription( "Flag to neglect the non-symmetric contribution in the tangential matrix" ); + + registerWrapper( viewKeyStruct::iterativePenaltyNFacString(), &m_iterPenaltyNFac ). + setInputFlag( InputFlags::OPTIONAL ). + setApplyDefaultValue( 10.0 ). + setDescription( "Factor for tuning the iterative penalty coefficient for normal traction" ); + + registerWrapper( viewKeyStruct::iterativePenaltyTFacString(), &m_iterPenaltyTFac ). + setInputFlag( InputFlags::OPTIONAL ). + setApplyDefaultValue( 0.1 ). + setDescription( "Factor for tuning the iterative penalty coefficient for tangential traction" ); + + registerWrapper( viewKeyStruct::tolJumpDispNFacString(), &m_tolJumpDispNFac ). + setInputFlag( InputFlags::OPTIONAL ). + setApplyDefaultValue( 1.e-07 ). + setDescription( "Factor to adjust the tolerance for normal jump" ); + + registerWrapper( viewKeyStruct::tolJumpDispTFacString(), &m_tolJumpDispTFac ). + setInputFlag( InputFlags::OPTIONAL ). + setApplyDefaultValue( 1.e-05 ). + setDescription( "Factor to adjust the tolerance for tangential jump" ); + + registerWrapper( viewKeyStruct::tolNormalTracFacString(), &m_tolNormalTracFac ). + setInputFlag( InputFlags::OPTIONAL ). + setApplyDefaultValue( 0.5 ). + setDescription( "Factor to adjust the tolerance for normal traction" ); + + registerWrapper( viewKeyStruct::tolTauLimitString(), &m_slidingCheckTolerance ). + setInputFlag( InputFlags::OPTIONAL ). + setApplyDefaultValue( 5.e-02 ). + setDescription( "Tolerance for the sliding check" ); + + // Set the default linear solver parameters + LinearSolverParameters & linSolParams = m_linearSolverParameters.get(); addLogLevel< logInfo::Configuration >(); - linParams.isSymmetric = true; - linParams.dofsPerNode = 3; - linParams.mgr.separateComponents = true; - // TODO Implement the MGR strategy - //linParams.mgr.strategy = LinearSolverParameters::MGR::StrategyType::solidMechanicsAugumentedLagrangianContact; + // Strategy: AMG with separate displacement components + linSolParams.dofsPerNode = 3; + linSolParams.isSymmetric = true; + linSolParams.amg.separateComponents = true; + + // Strategy: static condensation of bubble dofs using MGR + linSolParams.mgr.strategy = LinearSolverParameters::MGR::StrategyType::augmentedLagrangianContactMechanics; + linSolParams.mgr.separateComponents = true; + } SolidMechanicsAugmentedLagrangianContact::~SolidMechanicsAugmentedLagrangianContact() @@ -81,26 +128,13 @@ void SolidMechanicsAugmentedLagrangianContact::registerDataOnMesh( dataRepositor { fractureRegion.forElementSubRegions< SurfaceElementSubRegion >( [&]( SurfaceElementSubRegion & subRegion ) { + subRegion.registerField< fields::contact::deltaTraction >( getName() ). + reference().resizeDimension< 1 >( 3 ); + // Register the rotation matrix subRegion.registerField< contact::rotationMatrix >( this->getName() ). reference().resizeDimension< 1, 2 >( 3, 3 ); - // Register the traction field - subRegion.registerField< contact::traction >( this->getName() ). - reference().resizeDimension< 1 >( 3 ); - - // Register the displacement jump - subRegion.registerField< contact::dispJump >( this->getName() ). - reference().resizeDimension< 1 >( 3 ); - - // Register the delta displacement jump - subRegion.registerField< contact::deltaDispJump >( this->getName() ). - reference().resizeDimension< 1 >( 3 ); - - // Register the displacement jump old - subRegion.registerField< contact::oldDispJump >( this->getName() ). - reference().resizeDimension< 1 >( 3 ); - // Register the penalty coefficients for the iterative procedure subRegion.registerField< contact::iterativePenalty >( this->getName() ). reference().resizeDimension< 1 >( 5 ); @@ -244,7 +278,7 @@ void SolidMechanicsAugmentedLagrangianContact::implicitStepSetup( real64 const & FaceElementSubRegion & subRegion = region.getUniqueSubRegion< FaceElementSubRegion >(); arrayView2d< real64 const > const faceNormal = faceManager.faceNormal(); - ArrayOfArraysView< localIndex const > const elemsToFaces = subRegion.faceList().toViewConst(); + arrayView2d< localIndex const > const elemsToFaces = subRegion.faceList().toViewConst(); arrayView2d< real64 > const incrBubbleDisp = faceManager.getField< fields::solidMechanics::incrementalBubbleDisplacement >(); @@ -252,12 +286,19 @@ void SolidMechanicsAugmentedLagrangianContact::implicitStepSetup( real64 const & arrayView3d< real64 > const rotationMatrix = subRegion.getField< fields::contact::rotationMatrix >().toView(); + arrayView2d< real64 > const unitNormal = subRegion.getNormalVector(); + arrayView2d< real64 > const unitTangent1 = subRegion.getTangentVector1(); + arrayView2d< real64 > const unitTangent2 = subRegion.getTangentVector2(); + // Compute rotation matrices - solidMechanicsALMKernels::ComputeRotationMatricesKernel:: + solidMechanicsConformingContactKernels::ComputeRotationMatricesKernel:: launch< parallelDevicePolicy<> >( subRegion.size(), faceNormal, elemsToFaces, - rotationMatrix ); + rotationMatrix, + unitNormal, + unitTangent1, + unitTangent2 ); // Set the tollerances computeTolerances( domain ); @@ -492,13 +533,13 @@ void SolidMechanicsAugmentedLagrangianContact::assembleSystem( real64 const time real64 const gravityVectorData[3] = LVARRAY_TENSOROPS_INIT_LOCAL_3( gravityVector() ); - solidMechanicsALMKernels::ALMBubbleFactory kernelFactory( dispDofNumber, - bubbleDofNumber, - dofManager.rankOffset(), - localMatrix, - localRhs, - dt, - gravityVectorData ); + solidMechanicsConformingContactKernels::FaceBubbleFactory kernelFactory( dispDofNumber, + bubbleDofNumber, + dofManager.rankOffset(), + localMatrix, + localRhs, + dt, + gravityVectorData ); real64 maxTraction = finiteElement:: regionBasedKernelApplication @@ -535,16 +576,34 @@ void SolidMechanicsAugmentedLagrangianContact::implicitStepComplete( real64 cons arrayView2d< real64 > const oldDispJump = subRegion.getField< contact::oldDispJump >(); arrayView2d< real64 > const deltaDispJump = subRegion.getField< contact::deltaDispJump >(); + arrayView2d< real64 > const traction = subRegion.getField< contact::traction >(); + arrayView1d< integer const > const fractureState = subRegion.getField< contact::fractureState >(); arrayView1d< integer > const oldFractureState = subRegion.getField< contact::oldFractureState >(); + arrayView1d< real64 > const slip = subRegion.getField< contact::slip >(); + arrayView1d< real64 > const tangentialTraction = subRegion.getField< contact::tangentialTraction >(); + forAll< parallelDevicePolicy<> >( subRegion.size(), [ = ] GEOS_HOST_DEVICE ( localIndex const kfe ) { + // Compute the slip + real64 const deltaDisp[2] = { deltaDispJump[kfe][1], + deltaDispJump[kfe][2] }; + slip[kfe] = LvArray::tensorOps::l2Norm< 2 >( deltaDisp ); + + // Compute current Tau and limit Tau + real64 const tau[2] = { traction[kfe][1], + traction[kfe][2] }; + tangentialTraction[kfe] = LvArray::tensorOps::l2Norm< 2 >( tau ); + LvArray::tensorOps::fill< 3 >( deltaDispJump[kfe], 0.0 ); LvArray::tensorOps::copy< 3 >( oldDispJump[kfe], dispJump[kfe] ); oldFractureState[kfe] = fractureState[kfe]; + + + } ); } ); @@ -585,7 +644,7 @@ real64 SolidMechanicsAugmentedLagrangianContact::calculateResidualNorm( real64 c arrayView1d< integer const > const ghostRank = subRegion.ghostRank(); - ArrayOfArraysView< localIndex const > const elemsToFaces = subRegion.faceList().toViewConst(); + arrayView2d< localIndex const > const elemsToFaces = subRegion.faceList().toViewConst(); arrayView1d< globalIndex const > const bubbleDofNumber = faceManager.getReference< globalIndex_array >( bubbleDofKey ); @@ -699,13 +758,13 @@ void SolidMechanicsAugmentedLagrangianContact::applySystemSolution( DofManager c arrayView1d< localIndex const > const & faceElementList ) { - solidMechanicsALMKernels::ALMJumpUpdateFactory kernelFactory( dispDofNumber, - bubbleDofNumber, - dofManager.rankOffset(), - voidMatrix.toViewConstSizes(), - voidRhs.toView(), - dt, - faceElementList ); + solidMechanicsConformingContactKernels::DispJumpUpdateFactory kernelFactory( dispDofNumber, + bubbleDofNumber, + dofManager.rankOffset(), + voidMatrix.toViewConstSizes(), + voidRhs.toView(), + dt, + faceElementList ); real64 maxTraction = finiteElement:: interfaceBasedKernelApplication @@ -787,8 +846,6 @@ bool SolidMechanicsAugmentedLagrangianContact::updateConfiguration( DomainPartit arrayView1d< real64 const > const & normalTractionTolerance = subRegion.getReference< array1d< real64 > >( viewKeyStruct::normalTractionToleranceString() ); - arrayView1d< real64 const > const area = subRegion.getElementArea().toViewConst(); - std::ptrdiff_t const sizes[ 2 ] = {subRegion.size(), 3}; traction_new.resize( 2, sizes ); arrayView2d< real64 > const traction_new_v = traction_new.toView(); @@ -843,7 +900,6 @@ bool SolidMechanicsAugmentedLagrangianContact::updateConfiguration( DomainPartit normalDisplacementTolerance, slidingTolerance, slidingCheckTolerance, - area, fractureState, condConv_v ); } ); @@ -1113,6 +1169,8 @@ void SolidMechanicsAugmentedLagrangianContact::createFaceTypeList( DomainPartiti SurfaceElementRegion const & region = elemManager.getRegion< SurfaceElementRegion >( getUniqueFractureRegionName() ); FaceElementSubRegion const & subRegion = region.getUniqueSubRegion< FaceElementSubRegion >(); + arrayView2d< localIndex const > const elemsToFaces = subRegion.faceList().toViewConst(); + array1d< localIndex > keys( subRegion.size()); array1d< localIndex > vals( subRegion.size()); array1d< localIndex > quadList; @@ -1127,8 +1185,8 @@ void SolidMechanicsAugmentedLagrangianContact::createFaceTypeList( DomainPartiti forAll< parallelDevicePolicy<> >( subRegion.size(), [ = ] GEOS_HOST_DEVICE ( localIndex const kfe ) { - - localIndex const numNodesPerFace = faceToNodeMap.sizeOfArray( kfe ); + localIndex const kf0 = elemsToFaces[kfe][0]; + localIndex const numNodesPerFace = faceToNodeMap.sizeOfArray( kf0 ); if( numNodesPerFace == 3 ) { keys_v[kfe]=0; @@ -1195,7 +1253,7 @@ void SolidMechanicsAugmentedLagrangianContact::createBubbleCellList( DomainParti arrayView1d< localIndex > const tmpSpace_v = tmpSpace.toView(); // Store indexes of faces in the temporany array. { - ArrayOfArraysView< localIndex const > const elemsToFaces = subRegion.faceList().toViewConst(); + arrayView2d< localIndex const > const elemsToFaces = subRegion.faceList().toViewConst(); forAll< parallelDevicePolicy<> >( subRegion.size(), [ = ] GEOS_HOST_DEVICE ( localIndex const kfe ) { @@ -1287,6 +1345,19 @@ void SolidMechanicsAugmentedLagrangianContact::createBubbleCellList( DomainParti arrayView2d< localIndex > const faceElemsList_v = faceElemsList.toView(); +////////////////////////////////////////////////////////////////////////////////////////// +/* + FaceManager const & faceManager = mesh.getFaceManager(); + ArrayOfArraysView< localIndex const > const faceToNodeMap = faceManager.nodeList().toViewConst(); + NodeManager const & nodeManager = mesh.getNodeManager(); + + arrayView2d< localIndex const > const elemsToNodeMap = cellElementSubRegion.nodeList().toViewConst(); + arrayView2d< real64 const > const elemsCenter = cellElementSubRegion.getElementCenter().toViewConst(); + + arrayView2d< real64 const, nodes::REFERENCE_POSITION_USD > const nodePosition = nodeManager.referencePosition(); + */ +////////////////////////////////////////////////////////////////////////////////////////// + forAll< parallelDevicePolicy<> >( nBubElems, [ = ] GEOS_HOST_DEVICE ( localIndex const k ) @@ -1294,6 +1365,57 @@ void SolidMechanicsAugmentedLagrangianContact::createBubbleCellList( DomainParti localIndex const kfe = bubbleElemsList_v[k]; faceElemsList_v[k][0] = elemsToFaces[kfe][keys_v[k]]; faceElemsList_v[k][1] = keys_v[k]; +////////////////////////////////////////////////////////////////////////////////////////// +/* + std::cout << "GlobID: " << faceElemsList_v[k][0] << " LocalID: " << faceElemsList_v[k][1] << std::endl; + std::cout << "FACE NODES: " << std::endl; + real64 x = 0; + real64 y = 0; + real64 z = 0; + for (int nod=0; nod<3; ++nod) + { + std::cout << faceToNodeMap( faceElemsList_v[k][0], nod) << " "; + x += nodePosition[faceToNodeMap( faceElemsList_v[k][0], nod)][0]; + y += nodePosition[faceToNodeMap( faceElemsList_v[k][0], nod)][1]; + z += nodePosition[faceToNodeMap( faceElemsList_v[k][0], nod)][2]; + } + std::cout << std::endl; + std::cout << "FACE CENTERS: " << std::endl; + std::cout << x/3 << " " << y/3 << " " << z/3 << std::endl; + std::cout << "ELEMENT CENTERS: " << kfe << std::endl; + std::cout << elemsCenter[kfe][0] << " " << elemsCenter[kfe][1] << " " << elemsCenter[kfe][2] << std::endl; + std::cout << "ELMENT NODES: " << std::endl; + if (faceElemsList_v[k][1] == 0) + { + std::cout << elemsToNodeMap(kfe, 0) << " "; + std::cout << elemsToNodeMap(kfe, 1) << " "; + std::cout << elemsToNodeMap(kfe, 3) << " "; + std::cout << std::endl; + } + else if (faceElemsList_v[k][1] == 1) + { + std::cout << elemsToNodeMap(kfe, 0) << " "; + std::cout << elemsToNodeMap(kfe, 2) << " "; + std::cout << elemsToNodeMap(kfe, 1) << " "; + std::cout << std::endl; + } + else if (faceElemsList_v[k][1] == 2) + { + std::cout << elemsToNodeMap(kfe, 0) << " "; + std::cout << elemsToNodeMap(kfe, 3) << " "; + std::cout << elemsToNodeMap(kfe, 2) << " "; + std::cout << std::endl; + } + else if (faceElemsList_v[k][1] == 3) + { + std::cout << elemsToNodeMap(kfe, 1) << " "; + std::cout << elemsToNodeMap(kfe, 2) << " "; + std::cout << elemsToNodeMap(kfe, 3) << " "; + std::cout << std::endl; + } + std::cout << std::endl; + */ +////////////////////////////////////////////////////////////////////////////////////////// } ); cellElementSubRegion.setFaceElementsList( faceElemsList.toViewConst()); @@ -1369,11 +1491,12 @@ void SolidMechanicsAugmentedLagrangianContact::addCouplingNumNonzeros( DomainPar SurfaceElementRegion const & region = elemManager.getRegion< SurfaceElementRegion >( getUniqueFractureRegionName() ); FaceElementSubRegion const & subRegion = region.getUniqueSubRegion< FaceElementSubRegion >(); - ArrayOfArraysView< localIndex const > const elemsToFaces = subRegion.faceList().toViewConst(); + arrayView2d< localIndex const > const elemsToFaces = subRegion.faceList().toViewConst(); for( localIndex kfe=0; kfe( getUniqueFractureRegionName() ); FaceElementSubRegion const & subRegion = region.getUniqueSubRegion< FaceElementSubRegion >(); - ArrayOfArraysView< localIndex const > const elemsToFaces = subRegion.faceList().toViewConst(); + arrayView2d< localIndex const > const elemsToFaces = subRegion.faceList().toViewConst(); ArrayOfArraysView< localIndex const > const faceToNodeMap = faceManager.nodeList().toViewConst(); static constexpr int maxNumDispFaceDof = 3 * 4; @@ -1505,7 +1628,8 @@ void SolidMechanicsAugmentedLagrangianContact::addCouplingSparsityPattern( Domai for( localIndex kfe=0; kfe const faceArea = subRegion.getElementArea().toViewConst(); arrayView3d< real64 const > const faceRotationMatrix = subRegion.getField< fields::contact::rotationMatrix >().toView(); - ArrayOfArraysView< localIndex const > const elemsToFaces = subRegion.faceList().toViewConst(); + arrayView2d< localIndex const > const elemsToFaces = subRegion.faceList().toViewConst(); arrayView1d< real64 > const normalTractionTolerance = subRegion.getReference< array1d< real64 > >( viewKeyStruct::normalTractionToleranceString() ); @@ -1635,7 +1759,7 @@ void SolidMechanicsAugmentedLagrangianContact::computeTolerances( DomainPartitio real64 averageConstrainedModulus = 0.0; real64 averageBoxSize0 = 0.0; - for( localIndex i = 0; i < elemsToFaces.sizeOfArray( kfe ); ++i ) + for( localIndex i = 0; i < 2; ++i ) { localIndex const faceIndex = elemsToFaces[kfe][i]; localIndex const er = faceToElemRegion[faceIndex][0]; @@ -1704,13 +1828,18 @@ void SolidMechanicsAugmentedLagrangianContact::computeTolerances( DomainPartitio LvArray::tensorOps::scale< 3, 3 >( rotatedInvStiffApprox, area ); // Finally, compute tolerances for the given fracture element - normalDisplacementTolerance[kfe] = rotatedInvStiffApprox[ 0 ][ 0 ] * averageYoungModulus / 2.e+7; + normalDisplacementTolerance[kfe] = rotatedInvStiffApprox[ 0 ][ 0 ] * averageYoungModulus * m_tolJumpDispNFac; slidingTolerance[kfe] = sqrt( pow( rotatedInvStiffApprox[ 1 ][ 1 ], 2 ) + - pow( rotatedInvStiffApprox[ 2 ][ 2 ], 2 )) * averageYoungModulus / 2.e+5; - normalTractionTolerance[kfe] = (1.0 / 2.0) * (averageConstrainedModulus / averageBoxSize0) * + pow( rotatedInvStiffApprox[ 2 ][ 2 ], 2 )) * averageYoungModulus * m_tolJumpDispTFac; + normalTractionTolerance[kfe] = m_tolNormalTracFac * (averageConstrainedModulus / averageBoxSize0) * (normalDisplacementTolerance[kfe]); - iterativePenalty[kfe][0] = 1e+01*averageConstrainedModulus/(averageBoxSize0*area); - iterativePenalty[kfe][1] = 1e-01*averageConstrainedModulus/(averageBoxSize0*area); + + GEOS_LOG_LEVEL( 2, + GEOS_FMT( "kfe: {}, normalDisplacementTolerance: {}, slidingTolerance: {}, normalTractionTolerance: {}", + kfe, normalDisplacementTolerance[kfe], slidingTolerance[kfe], normalTractionTolerance[kfe] )); + + iterativePenalty[kfe][0] = m_iterPenaltyNFac*averageConstrainedModulus/(averageBoxSize0); + iterativePenalty[kfe][1] = m_iterPenaltyTFac*averageConstrainedModulus/(averageBoxSize0); } } ); } diff --git a/src/coreComponents/physicsSolvers/contact/SolidMechanicsAugmentedLagrangianContact.hpp b/src/coreComponents/physicsSolvers/contact/SolidMechanicsAugmentedLagrangianContact.hpp index c9f517d7403..ce7f43edad0 100644 --- a/src/coreComponents/physicsSolvers/contact/SolidMechanicsAugmentedLagrangianContact.hpp +++ b/src/coreComponents/physicsSolvers/contact/SolidMechanicsAugmentedLagrangianContact.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -239,18 +239,50 @@ class SolidMechanicsAugmentedLagrangianContact : public ContactSolverBase constexpr static char const * slidingToleranceString() { return "slidingTolerance"; } constexpr static char const * dispJumpUpdPenaltyString() { return "dispJumpUpdPenalty"; } + + constexpr static char const * simultaneousString() { return "simultaneous"; } + + constexpr static char const * symmetricString() { return "symmetric"; } + + constexpr static char const * iterativePenaltyNFacString() { return "iterPenaltyN"; } + + constexpr static char const * iterativePenaltyTFacString() { return "iterPenaltyT"; } + + constexpr static char const * tolJumpDispNFacString() { return "tolJumpN"; } + + constexpr static char const * tolJumpDispTFacString() { return "tolJumpT"; } + + constexpr static char const * tolNormalTracFacString() { return "tolNormalTrac"; } + + constexpr static char const * tolTauLimitString() { return "tolTauLimit"; } + }; /// Tolerance for the sliding check: the tangential traction must exceed (1 + m_slidingCheckTolerance) * t_lim to activate the sliding /// condition - real64 const m_slidingCheckTolerance = 0.05; + real64 m_slidingCheckTolerance = 5.e-02; /// Flag to update the Lagrange multiplier at each Newton iteration (true), or only after the Newton loop has converged (false) - bool m_simultaneous = true; + int m_simultaneous = 1; /// Flag to neglect the non-symmetric contribution in the tangential matrix, i.e., the derivative of tangential traction with respect to /// the normal displacement is neglected - bool m_symmetric = true; + int m_symmetric = 1; + + /// Factor for tuning the iterative penalty coefficient for normal traction + real64 m_iterPenaltyNFac = 10.0; + + /// Factor for tuning the iterative penalty coefficient for tangential traction + real64 m_iterPenaltyTFac = 0.1; + + /// Factor to adjust the tolerance for normal jump + real64 m_tolJumpDispNFac = 1.e-07; + + /// Factor to adjust the tolerance for tangential jump + real64 m_tolJumpDispTFac = 1.e-05; + + /// Factor to adjust the tolerance for normal traction + real64 m_tolNormalTracFac = 0.5; }; diff --git a/src/coreComponents/physicsSolvers/contact/SolidMechanicsEmbeddedFractures.cpp b/src/coreComponents/physicsSolvers/contact/SolidMechanicsEmbeddedFractures.cpp index 65584046e5c..4e31c7c4eaa 100644 --- a/src/coreComponents/physicsSolvers/contact/SolidMechanicsEmbeddedFractures.cpp +++ b/src/coreComponents/physicsSolvers/contact/SolidMechanicsEmbeddedFractures.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -32,9 +32,9 @@ #include "mesh/SurfaceElementRegion.hpp" #include "physicsSolvers/solidMechanics/SolidMechanicsFields.hpp" #include "physicsSolvers/solidMechanics/SolidMechanicsLagrangianFEM.hpp" -#include "physicsSolvers/contact/SolidMechanicsEFEMKernels.hpp" -#include "physicsSolvers/contact/SolidMechanicsEFEMStaticCondensationKernels.hpp" -#include "physicsSolvers/contact/SolidMechanicsEFEMJumpUpdateKernels.hpp" +#include "physicsSolvers/contact/kernels/SolidMechanicsEFEMKernels.hpp" +#include "physicsSolvers/contact/kernels/SolidMechanicsEFEMStaticCondensationKernels.hpp" +#include "physicsSolvers/contact/kernels/SolidMechanicsEFEMJumpUpdateKernels.hpp" namespace geos { @@ -64,23 +64,37 @@ SolidMechanicsEmbeddedFractures::~SolidMechanicsEmbeddedFractures() void SolidMechanicsEmbeddedFractures::postInputInitialization() { - SolidMechanicsLagrangianFEM::postInputInitialization(); + ContactSolverBase::postInputInitialization(); - LinearSolverParameters & linParams = m_linearSolverParameters.get(); - - linParams.dofsPerNode = 3; + LinearSolverParameters & linearSolverParameters = m_linearSolverParameters.get(); if( m_useStaticCondensation ) { - linParams.isSymmetric = true; - linParams.amg.separateComponents = true; + // configure AMG + linearSolverParameters.isSymmetric = true; + linearSolverParameters.amg.separateComponents = true; + linearSolverParameters.dofsPerNode = 3; } else { - linParams.mgr.strategy = LinearSolverParameters::MGR::StrategyType::solidMechanicsEmbeddedFractures; - linParams.mgr.separateComponents = true; + setMGRStrategy(); } } +void SolidMechanicsEmbeddedFractures::setMGRStrategy() +{ + LinearSolverParameters & linearSolverParameters = m_linearSolverParameters.get(); + + if( linearSolverParameters.preconditionerType != LinearSolverParameters::PreconditionerType::mgr ) + return; + + linearSolverParameters.mgr.separateComponents = true; + linearSolverParameters.dofsPerNode = 3; + + linearSolverParameters.mgr.strategy = LinearSolverParameters::MGR::StrategyType::solidMechanicsEmbeddedFractures; + GEOS_LOG_LEVEL_RANK_0( 1, GEOS_FMT( "{}: MGR strategy set to {}", getName(), + EnumStrings< LinearSolverParameters::MGR::StrategyType >::toString( linearSolverParameters.mgr.strategy ))); +} + void SolidMechanicsEmbeddedFractures::registerDataOnMesh( dataRepository::Group & meshBodies ) { ContactSolverBase::registerDataOnMesh( meshBodies ); @@ -154,6 +168,20 @@ void SolidMechanicsEmbeddedFractures::implicitStepComplete( real64 const & time_ arrayView2d< real64 > oldDispJump = subRegion.getField< contact::oldDispJump >(); arrayView2d< real64 const > const dispJump = subRegion.getField< contact::dispJump >(); + // update elastic slip before copying dispJump to oldDispJump + string const & frictionLawName = subRegion.template getReference< string >( viewKeyStruct::frictionLawNameString() ); + FrictionBase const & frictionLaw = getConstitutiveModel< FrictionBase >( subRegion, frictionLawName ); + arrayView2d< real64 const > const & traction = subRegion.getField< fields::contact::traction >(); + arrayView1d< integer > const & fractureState = subRegion.getField< fields::contact::fractureState >(); + constitutiveUpdatePassThru( frictionLaw, [&] ( auto & castedFrictionLaw ) + { + using FrictionType = TYPEOFREF( castedFrictionLaw ); + typename FrictionType::KernelWrapper frictionWrapper = castedFrictionLaw.createKernelUpdates(); + + updateElasticSlip( subRegion, frictionWrapper, dispJump, oldDispJump, traction, fractureState ); + } ); + + // now update oldDispJump = dispJump forAll< parallelDevicePolicy<> >( subRegion.size(), [=] GEOS_HOST_DEVICE ( localIndex const k ) { @@ -162,6 +190,20 @@ void SolidMechanicsEmbeddedFractures::implicitStepComplete( real64 const & time_ } ); } +template< typename WRAPPER_TYPE > +void SolidMechanicsEmbeddedFractures::updateElasticSlip( EmbeddedSurfaceSubRegion const & subRegion, + WRAPPER_TYPE & frictionWrapper, + arrayView2d< real64 const > const & dispJump, + arrayView2d< real64 const > const & oldDispJump, + arrayView2d< real64 const > const & traction, + arrayView1d< integer > const & fractureState ) +{ + forAll< parallelDevicePolicy<> >( subRegion.size(), [=] GEOS_HOST_DEVICE ( localIndex const kfe ) + { + frictionWrapper.updateElasticSlip( kfe, dispJump[kfe], oldDispJump[kfe], traction[kfe], fractureState[kfe] ); + } ); +} + void SolidMechanicsEmbeddedFractures::setupDofs( DomainPartition const & domain, DofManager & dofManager ) const { @@ -786,7 +828,7 @@ bool SolidMechanicsEmbeddedFractures::updateConfiguration( DomainPartition & dom if( ghostRank[kfe] < 0 ) { integer const originalFractureState = fractureState[kfe]; - frictionWrapper.updateFractureState( kfe, dispJump[kfe], traction[kfe], fractureState[kfe] ); + frictionWrapper.updateFractureState( dispJump[kfe], traction[kfe], fractureState[kfe] ); checkActiveSetSub.min( compareFractureStates( originalFractureState, fractureState[kfe] ) ); } } ); @@ -799,12 +841,9 @@ bool SolidMechanicsEmbeddedFractures::updateConfiguration( DomainPartition & dom synchronizeFractureState( domain ); // Compute if globally the fracture state has changed - int hasConfigurationConvergedGlobally; - MpiWrapper::allReduce( &hasConfigurationConverged, - &hasConfigurationConvergedGlobally, - 1, - MPI_LAND, - MPI_COMM_GEOS ); + int const hasConfigurationConvergedGlobally = MpiWrapper::allReduce( hasConfigurationConverged, + MpiWrapper::Reduction::LogicalAnd, + MPI_COMM_GEOS ); // for this solver it makes sense to reset the state. // if( !hasConfigurationConvergedGlobally ) diff --git a/src/coreComponents/physicsSolvers/contact/SolidMechanicsEmbeddedFractures.hpp b/src/coreComponents/physicsSolvers/contact/SolidMechanicsEmbeddedFractures.hpp index d9c0e113851..384137706c9 100644 --- a/src/coreComponents/physicsSolvers/contact/SolidMechanicsEmbeddedFractures.hpp +++ b/src/coreComponents/physicsSolvers/contact/SolidMechanicsEmbeddedFractures.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -63,6 +63,14 @@ class SolidMechanicsEmbeddedFractures : public ContactSolverBase real64 const & dt, DomainPartition & domain ) override final; + template< typename WRAPPER_TYPE > + static void updateElasticSlip( EmbeddedSurfaceSubRegion const & subRegion, + WRAPPER_TYPE & frictionWrapper, + arrayView2d< real64 const > const & dispJump, + arrayView2d< real64 const > const & oldDispJump, + arrayView2d< real64 const > const & traction, + arrayView1d< integer > const & fractureState ); + virtual void assembleSystem( real64 const time, real64 const dt, DomainPartition & domain, @@ -127,6 +135,8 @@ class SolidMechanicsEmbeddedFractures : public ContactSolverBase virtual void postInputInitialization() override final; + void setMGRStrategy(); + private: void updateJump( DofManager const & dofManager, diff --git a/src/coreComponents/physicsSolvers/contact/SolidMechanicsLagrangeContact.cpp b/src/coreComponents/physicsSolvers/contact/SolidMechanicsLagrangeContact.cpp index 003ed8cb7f7..41f39281a2d 100644 --- a/src/coreComponents/physicsSolvers/contact/SolidMechanicsLagrangeContact.cpp +++ b/src/coreComponents/physicsSolvers/contact/SolidMechanicsLagrangeContact.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -42,7 +42,7 @@ #include "linearAlgebra/solvers/PreconditionerBlockJacobi.hpp" #include "linearAlgebra/solvers/BlockPreconditioner.hpp" #include "linearAlgebra/solvers/SeparateComponentPreconditioner.hpp" -#include "finiteElement/elementFormulations/H1_TriangleFace_Lagrange1_Gauss1.hpp" +#include "finiteElement/elementFormulations/H1_TriangleFace_Lagrange1_Gauss.hpp" #include "finiteElement/elementFormulations/H1_QuadrilateralFace_Lagrange1_GaussLegendre2.hpp" #if defined( __INTEL_COMPILER ) @@ -73,11 +73,28 @@ SolidMechanicsLagrangeContact::SolidMechanicsLagrangeContact( const string & nam setDescription( "It be used to increase the scale of the stabilization entries. A value < 1.0 results in larger entries in the stabilization matrix." ); addLogLevel< logInfo::Configuration >(); +} + +void SolidMechanicsLagrangeContact::postInputInitialization() +{ + ContactSolverBase::postInputInitialization(); + + setMGRStrategy(); +} + +void SolidMechanicsLagrangeContact::setMGRStrategy() +{ + LinearSolverParameters & linearSolverParameters = m_linearSolverParameters.get(); + + if( linearSolverParameters.preconditionerType != LinearSolverParameters::PreconditionerType::mgr ) + return; + + linearSolverParameters.mgr.separateComponents = true; + linearSolverParameters.dofsPerNode = 3; - LinearSolverParameters & linSolParams = m_linearSolverParameters.get(); - linSolParams.mgr.strategy = LinearSolverParameters::MGR::StrategyType::lagrangianContactMechanics; - linSolParams.mgr.separateComponents = true; - linSolParams.dofsPerNode = 3; + linearSolverParameters.mgr.strategy = LinearSolverParameters::MGR::StrategyType::lagrangianContactMechanics; + GEOS_LOG_LEVEL_RANK_0( 1, GEOS_FMT( "{}: MGR strategy set to {}", getName(), + EnumStrings< LinearSolverParameters::MGR::StrategyType >::toString( linearSolverParameters.mgr.strategy ))); } void SolidMechanicsLagrangeContact::registerDataOnMesh( Group & meshBodies ) @@ -303,7 +320,7 @@ void SolidMechanicsLagrangeContact::computeTolerances( DomainPartition & domain arrayView1d< integer const > const & ghostRank = subRegion.ghostRank(); arrayView1d< real64 const > const & faceArea = subRegion.getElementArea().toViewConst(); arrayView3d< real64 const > const & faceRotationMatrix = subRegion.getReference< array3d< real64 > >( viewKeyStruct::rotationMatrixString() ); - ArrayOfArraysView< localIndex const > const & elemsToFaces = subRegion.faceList().toViewConst(); + arrayView2d< localIndex const > const & elemsToFaces = subRegion.faceList().toViewConst(); arrayView1d< real64 > const & normalTractionTolerance = subRegion.getReference< array1d< real64 > >( viewKeyStruct::normalTractionToleranceString() ); @@ -333,7 +350,7 @@ void SolidMechanicsLagrangeContact::computeTolerances( DomainPartition & domain real64 averageConstrainedModulus = 0.0; real64 averageBoxSize0 = 0.0; - for( localIndex i = 0; i < elemsToFaces.sizeOfArray( kfe ); ++i ) + for( localIndex i = 0; i < 2; ++i ) { localIndex const faceIndex = elemsToFaces[kfe][i]; localIndex const er = faceToElemRegion[faceIndex][0]; @@ -501,19 +518,15 @@ void SolidMechanicsLagrangeContact::computeFaceDisplacementJump( DomainPartition { arrayView3d< real64 > const & rotationMatrix = subRegion.getReference< array3d< real64 > >( viewKeyStruct::rotationMatrixString() ); - ArrayOfArraysView< localIndex const > const & elemsToFaces = subRegion.faceList().toViewConst(); + arrayView2d< localIndex const > const & elemsToFaces = subRegion.faceList().toViewConst(); arrayView1d< real64 const > const & area = subRegion.getElementArea().toViewConst(); - arrayView2d< real64 > const & dispJump = subRegion.getField< contact::dispJump >(); - arrayView1d< real64 > const & slip = subRegion.getField< fields::contact::slip >(); - arrayView1d< real64 > const & aperture = subRegion.getField< fields::elementAperture >(); + arrayView2d< real64 > const dispJump = subRegion.getField< contact::dispJump >(); + arrayView1d< real64 > const slip = subRegion.getField< fields::contact::slip >(); + arrayView1d< real64 > const aperture = subRegion.getField< fields::elementAperture >(); forAll< parallelHostPolicy >( subRegion.size(), [=] ( localIndex const kfe ) { - if( elemsToFaces.sizeOfArray( kfe ) != 2 ) - { - return; - } // Contact constraints localIndex const numNodesPerFace = faceToNodeMap.sizeOfArray( elemsToFaces[kfe][0] ); @@ -690,7 +703,7 @@ void SolidMechanicsLagrangeContact:: FaceElementSubRegion const & subRegion ) { arrayView1d< real64 const > const & pressure = subRegion.getReference< array1d< real64 > >( flow::pressure::key() ); - ArrayOfArraysView< localIndex const > const & elemsToFaces = subRegion.faceList().toViewConst(); + arrayView2d< localIndex const > const & elemsToFaces = subRegion.faceList().toViewConst(); forAll< serialPolicy >( subRegion.size(), [=]( localIndex const kfe ) { @@ -947,7 +960,7 @@ void SolidMechanicsLagrangeContact::computeRotationMatrices( DomainPartition & d [&]( localIndex const, FaceElementSubRegion & subRegion ) { - ArrayOfArraysView< localIndex const > const & elemsToFaces = subRegion.faceList().toViewConst(); + arrayView2d< localIndex const > const & elemsToFaces = subRegion.faceList().toViewConst(); arrayView3d< real64 > const & rotationMatrix = subRegion.getReference< array3d< real64 > >( viewKeyStruct::rotationMatrixString() ); @@ -957,10 +970,7 @@ void SolidMechanicsLagrangeContact::computeRotationMatrices( DomainPartition & d forAll< parallelHostPolicy >( subRegion.size(), [=]( localIndex const kfe ) { - if( elemsToFaces.sizeOfArray( kfe ) != 2 ) - { - return; - } + localIndex const f0 = elemsToFaces[kfe][0]; localIndex const f1 = elemsToFaces[kfe][1]; @@ -1348,14 +1358,11 @@ void SolidMechanicsLagrangeContact:: arrayView1d< globalIndex const > const & tracDofNumber = subRegion.getReference< globalIndex_array >( tracDofKey ); arrayView2d< real64 const > const & traction = subRegion.getReference< array2d< real64 > >( contact::traction::key() ); arrayView3d< real64 const > const & rotationMatrix = subRegion.getReference< array3d< real64 > >( viewKeyStruct::rotationMatrixString() ); - ArrayOfArraysView< localIndex const > const & elemsToFaces = subRegion.faceList().toViewConst(); + arrayView2d< localIndex const > const & elemsToFaces = subRegion.faceList().toViewConst(); forAll< parallelHostPolicy >( subRegion.size(), [=] ( localIndex const kfe ) { - if( elemsToFaces.sizeOfArray( kfe ) != 2 ) - { - return; - } + localIndex const numNodesPerFace = faceToNodeMap.sizeOfArray( elemsToFaces[kfe][0] ); globalIndex rowDOF[3 * m_maxFaceNodes]; // this needs to be changed when dealing with arbitrary element types @@ -1469,7 +1476,7 @@ void SolidMechanicsLagrangeContact:: arrayView1d< real64 const > const & area = subRegion.getElementArea(); arrayView3d< real64 const > const & rotationMatrix = subRegion.getReference< array3d< real64 > >( viewKeyStruct::rotationMatrixString() ); - ArrayOfArraysView< localIndex const > const & elemsToFaces = subRegion.faceList().toViewConst(); + arrayView2d< localIndex const > const & elemsToFaces = subRegion.faceList().toViewConst(); arrayView2d< real64 const > const & traction = subRegion.getField< contact::traction >(); arrayView1d< integer const > const & fractureState = subRegion.getField< contact::fractureState >(); arrayView2d< real64 const > const & dispJump = subRegion.getField< contact::dispJump >(); @@ -1483,10 +1490,7 @@ void SolidMechanicsLagrangeContact:: forAll< parallelHostPolicy >( subRegion.size(), [=] ( localIndex const kfe ) { - if( elemsToFaces.sizeOfArray( kfe ) != 2 ) - { - return; - } + if( ghostRank[kfe] < 0 ) { @@ -1593,7 +1597,7 @@ void SolidMechanicsLagrangeContact:: { elemRHS[i] = Ja * ( traction[kfe][i] - limitTau * sliding[ i-1 ] / slidingNorm ); - dRdT( i, 0 ) = Ja * dLimitTau_dNormalTraction * sliding[ i-1 ] / slidingNorm; + dRdT( i, 0 ) = -Ja * dLimitTau_dNormalTraction * sliding[ i-1 ] / slidingNorm; dRdT( i, i ) = Ja; } @@ -1641,7 +1645,7 @@ void SolidMechanicsLagrangeContact:: { elemRHS[i] = Ja * traction[kfe][i] * ( 1.0 - limitTau / vauxNorm ); - dRdT( i, 0 ) = Ja * traction[kfe][i] * dLimitTau_dNormalTraction / vauxNorm; + dRdT( i, 0 ) = -Ja * traction[kfe][i] * dLimitTau_dNormalTraction / vauxNorm; dRdT( i, i ) = Ja; } } @@ -1728,7 +1732,7 @@ void SolidMechanicsLagrangeContact::assembleStabilization( MeshLevel const & mes FaceElementSubRegion const & fractureSubRegion = fractureRegion.getUniqueSubRegion< FaceElementSubRegion >(); GEOS_ERROR_IF( !fractureSubRegion.hasField< contact::traction >(), "The fracture subregion must contain traction field." ); - ArrayOfArraysView< localIndex const > const elem2dToFaces = fractureSubRegion.faceList().toViewConst(); + arrayView2d< localIndex const > const elem2dToFaces = fractureSubRegion.faceList().toViewConst(); // Get the state of fracture elements arrayView1d< integer const > const & fractureState = @@ -2355,13 +2359,6 @@ bool SolidMechanicsLagrangeContact::isFractureAllInStickCondition( DomainPartiti return ( ( numNewSlip + numSlip + numOpen ) == 0 ); } -real64 SolidMechanicsLagrangeContact::setNextDt( real64 const & currentDt, - DomainPartition & domain ) -{ - GEOS_UNUSED_VAR( domain ); - return currentDt; -} - REGISTER_CATALOG_ENTRY( PhysicsSolverBase, SolidMechanicsLagrangeContact, string const &, Group * const ) } /* namespace geos */ diff --git a/src/coreComponents/physicsSolvers/contact/SolidMechanicsLagrangeContact.hpp b/src/coreComponents/physicsSolvers/contact/SolidMechanicsLagrangeContact.hpp index bfb2b7656b0..a39b1374735 100644 --- a/src/coreComponents/physicsSolvers/contact/SolidMechanicsLagrangeContact.hpp +++ b/src/coreComponents/physicsSolvers/contact/SolidMechanicsLagrangeContact.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -31,7 +31,6 @@ class NumericalMethodsManager; class SolidMechanicsLagrangeContact : public ContactSolverBase { public: - SolidMechanicsLagrangeContact( const string & name, Group * const parent ); @@ -101,10 +100,6 @@ class SolidMechanicsLagrangeContact : public ContactSolverBase virtual void resetStateToBeginningOfStep( DomainPartition & domain ) override; - virtual real64 - setNextDt( real64 const & currentDt, - DomainPartition & domain ) override; - void updateState( DomainPartition & domain ) override final; void assembleContact( DomainPartition & domain, @@ -179,6 +174,10 @@ class SolidMechanicsLagrangeContact : public ContactSolverBase DofManager const & dofManager, arrayView1d< real64 const > const & localRhs ); + virtual void postInputInitialization() override final; + + void setMGRStrategy(); + private: string m_stabilizationName; diff --git a/src/coreComponents/physicsSolvers/contact/SolidMechanicsLagrangeContactBubbleStab.cpp b/src/coreComponents/physicsSolvers/contact/SolidMechanicsLagrangeContactBubbleStab.cpp new file mode 100644 index 00000000000..7c2543a3a08 --- /dev/null +++ b/src/coreComponents/physicsSolvers/contact/SolidMechanicsLagrangeContactBubbleStab.cpp @@ -0,0 +1,1181 @@ +/* + * ------------------------------------------------------------------------------------------------------------ + * SPDX-License-Identifier: LGPL-2.1-only + * + * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC + * Copyright (c) 2018-2024 TotalEnergies + * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University + * Copyright (c) 2023-2024 Chevron + * Copyright (c) 2019- GEOS/GEOSX Contributors + * All rights reserved + * + * See top level LICENSE, COPYRIGHT, CONTRIBUTORS, NOTICE, and ACKNOWLEDGEMENTS files for details. + * ------------------------------------------------------------------------------------------------------------ + */ + +/** + * @file SolidMechanicsLagrangeContactBubbleStab.cpp + * + */ + +#include "mesh/DomainPartition.hpp" +#include "SolidMechanicsLagrangeContactBubbleStab.hpp" + +#include "physicsSolvers/contact/kernels/SolidMechanicsConformingContactKernelsBase.hpp" +#include "physicsSolvers/contact/kernels/SolidMechanicsLagrangeContactKernels.hpp" +#include "physicsSolvers/contact/kernels/SolidMechanicsDisplacementJumpUpdateKernels.hpp" +#include "physicsSolvers/contact/kernels/SolidMechanicsContactFaceBubbleKernels.hpp" +#include "physicsSolvers/contact/LogLevelsInfo.hpp" + +#include "constitutive/ConstitutiveManager.hpp" +#include "constitutive/contact/FrictionSelector.hpp" +#include "fieldSpecification/FieldSpecificationManager.hpp" + + +namespace geos +{ + +using namespace constitutive; +using namespace dataRepository; +using namespace fields; + +SolidMechanicsLagrangeContactBubbleStab::SolidMechanicsLagrangeContactBubbleStab( const string & name, + Group * const parent ): + ContactSolverBase( name, parent ) +{ + m_faceTypeToFiniteElements["Quadrilateral"] = std::make_unique< finiteElement::H1_QuadrilateralFace_Lagrange1_GaussLegendre2 >(); + m_faceTypeToFiniteElements["Triangle"] = std::make_unique< finiteElement::H1_TriangleFace_Lagrange1_Gauss1 >(); + + LinearSolverParameters & linSolParams = m_linearSolverParameters.get(); + linSolParams.mgr.strategy = LinearSolverParameters::MGR::StrategyType::lagrangianContactMechanicsBubbleStab; + linSolParams.mgr.separateComponents = true; + linSolParams.dofsPerNode = 3; +} + +SolidMechanicsLagrangeContactBubbleStab::~SolidMechanicsLagrangeContactBubbleStab() +{ + // TODO Auto-generated destructor stub +} + +real64 SolidMechanicsLagrangeContactBubbleStab::solverStep( real64 const & time_n, + real64 const & dt, + const integer cycleNumber, + DomainPartition & domain ) +{ + if( cycleNumber == 0 ) + { + /// Apply initial conditions to the Fault + FieldSpecificationManager & fieldSpecificationManager = FieldSpecificationManager::getInstance(); + + forDiscretizationOnMeshTargets ( domain.getMeshBodies(), [&]( string const &, + MeshLevel & mesh, + arrayView1d< string const > const & ) + + { + fieldSpecificationManager.applyInitialConditions( mesh ); + // Would like to do it like this but it is not working. There is a cast in Object path that tries to cast + // all objects that derive from ElementSubRegionBase to the specified type so this obviously fails. + // fieldSpecificationManager.forSubGroups< FieldSpecificationBase >( [&] ( FieldSpecificationBase const & fs ) + // { + // if( fs.initialCondition() ) + // { + // fs.apply< SurfaceElementSubRegion >( mesh, + // [&]( FieldSpecificationBase const & bc, + // string const &, + // SortedArrayView< localIndex const > const & targetSet, + // SurfaceElementSubRegion & targetGroup, + // string const fieldName ) + // { + // bc.applyFieldValue< FieldSpecificationEqual >( targetSet, 0.0, targetGroup, fieldName ); + // } ); + // } + // } ); + } ); + } + + return ContactSolverBase::solverStep( time_n, dt, cycleNumber, domain ); +} + +void SolidMechanicsLagrangeContactBubbleStab::registerDataOnMesh( Group & meshBodies ) +{ + ContactSolverBase::registerDataOnMesh( meshBodies ); + + forDiscretizationOnMeshTargets( meshBodies, [&] ( string const &, + MeshLevel & meshLevel, + arrayView1d< string const > const & ) + { + FaceManager & faceManager = meshLevel.getFaceManager(); + + // Register the total bubble displacement + faceManager.registerField< solidMechanics::totalBubbleDisplacement >( this->getName() ). + reference().resizeDimension< 1 >( 3 ); + + // Register the incremental bubble displacement + faceManager.registerField< solidMechanics::incrementalBubbleDisplacement >( this->getName() ). + reference().resizeDimension< 1 >( 3 ); + } ); + + forFractureRegionOnMeshTargets( meshBodies, [&] ( SurfaceElementRegion & fractureRegion ) + { + fractureRegion.forElementSubRegions< SurfaceElementSubRegion >( [&]( SurfaceElementSubRegion & subRegion ) + { + // Register the rotation matrix + subRegion.registerField< contact::rotationMatrix >( this->getName() ). + reference().resizeDimension< 1, 2 >( 3, 3 ); + + subRegion.registerField< fields::contact::deltaTraction >( getName() ). + reference().resizeDimension< 1 >( 3 ); + + subRegion.registerField< fields::contact::targetIncrementalJump >( getName() ). + reference().resizeDimension< 1 >( 3 ); + } ); + } ); +} + +void SolidMechanicsLagrangeContactBubbleStab::setupDofs( DomainPartition const & domain, + DofManager & dofManager ) const +{ + GEOS_MARK_FUNCTION; + + SolidMechanicsLagrangianFEM::setupDofs( domain, dofManager ); + + map< std::pair< string, string >, array1d< string > > meshTargets; + forDiscretizationOnMeshTargets( domain.getMeshBodies(), [&] ( string const & meshBodyName, + MeshLevel const & meshLevel, + arrayView1d< string const > const & regionNames ) + { + array1d< string > regions; + ElementRegionManager const & elementRegionManager = meshLevel.getElemManager(); + elementRegionManager.forElementRegions< SurfaceElementRegion >( regionNames, + [&]( localIndex const, + SurfaceElementRegion const & region ) + { + regions.emplace_back( region.getName() ); + } ); + meshTargets[std::make_pair( meshBodyName, meshLevel.getName())] = std::move( regions ); + } ); + + dofManager.addField( solidMechanics::totalBubbleDisplacement::key(), + FieldLocation::Face, + 3, + meshTargets ); + + dofManager.addField( contact::traction::key(), + FieldLocation::Elem, + 3, + meshTargets ); + + // Add coupling between bubble + dofManager.addCoupling( solidMechanics::totalBubbleDisplacement::key(), + solidMechanics::totalBubbleDisplacement::key(), + DofManager::Connector::Elem ); + + dofManager.addCoupling( contact::traction::key(), + contact::traction::key(), + DofManager::Connector::Elem ); + + dofManager.addCoupling( solidMechanics::totalDisplacement::key(), + contact::traction::key(), + DofManager::Connector::Elem, + meshTargets ); + + dofManager.addCoupling( solidMechanics::totalBubbleDisplacement::key(), + contact::traction::key(), + DofManager::Connector::Elem, + meshTargets ); + + dofManager.addCoupling( solidMechanics::totalDisplacement::key(), + solidMechanics::totalBubbleDisplacement::key(), + DofManager::Connector::Elem, + meshTargets ); +} + +void SolidMechanicsLagrangeContactBubbleStab::setupSystem( DomainPartition & domain, + DofManager & dofManager, + CRSMatrix< real64, globalIndex > & localMatrix, + ParallelVector & rhs, + ParallelVector & solution, + bool const GEOS_UNUSED_PARAM( setSparsity ) ) +{ + + + // setup monolithic coupled system + + // Create the lists of interface elements that have same type. + createFaceTypeList( domain ); + + // Create the lists of interface elements that have same type and same fracture state. + updateStickSlipList( domain ); + + // Create the list of cell elements that they are enriched with bubble functions. + createBubbleCellList( domain ); + + dofManager.setDomain( domain ); + setupDofs( domain, dofManager ); + dofManager.reorderByRank(); + + // Set the sparsity pattern without the Abu and Aub blocks. + SparsityPattern< globalIndex > patternDiag; + dofManager.setSparsityPattern( patternDiag ); + + // Get the original row lengths (diagonal blocks only) + array1d< localIndex > rowLengths( patternDiag.numRows() ); + for( localIndex localRow = 0; localRow < patternDiag.numRows(); ++localRow ) + { + rowLengths[localRow] = patternDiag.numNonZeros( localRow ); + } + + // Add the number of nonzeros induced by coupling + this->addCouplingNumNonzeros( domain, dofManager, rowLengths.toView() ); + + // Create a new pattern with enough capacity for coupled matrix + SparsityPattern< globalIndex > pattern; + pattern.resizeFromRowCapacities< parallelHostPolicy >( patternDiag.numRows(), patternDiag.numColumns(), rowLengths.data() ); + + // Copy the original nonzeros + for( localIndex localRow = 0; localRow < patternDiag.numRows(); ++localRow ) + { + globalIndex const * cols = patternDiag.getColumns( localRow ).dataIfContiguous(); + pattern.insertNonZeros( localRow, cols, cols + patternDiag.numNonZeros( localRow ) ); + } + + // Add the nonzeros from coupling + this->addCouplingSparsityPattern( domain, dofManager, pattern.toView() ); + + // Finally, steal the pattern into a CRS matrix + localMatrix.assimilate< parallelDevicePolicy<> >( std::move( pattern ) ); + localMatrix.setName( this->getName() + "/localMatrix" ); + + rhs.setName( this->getName() + "/rhs" ); + rhs.create( dofManager.numLocalDofs(), MPI_COMM_GEOS ); + + solution.setName( this->getName() + "/solution" ); + solution.create( dofManager.numLocalDofs(), MPI_COMM_GEOS ); + + computeRotationMatrices( domain ); + +} + +void SolidMechanicsLagrangeContactBubbleStab::computeRotationMatrices( DomainPartition & domain ) const +{ + forDiscretizationOnMeshTargets( domain.getMeshBodies(), [&] ( string const &, + MeshLevel & mesh, + arrayView1d< string const > const & ) + { + + FaceManager & faceManager = mesh.getFaceManager(); + ElementRegionManager & elemManager = mesh.getElemManager(); + + SurfaceElementRegion & region = elemManager.getRegion< SurfaceElementRegion >( getUniqueFractureRegionName() ); + FaceElementSubRegion & subRegion = region.getUniqueSubRegion< FaceElementSubRegion >(); + + arrayView2d< real64 const > const faceNormal = faceManager.faceNormal(); + arrayView2d< localIndex const > const elemsToFaces = subRegion.faceList().toViewConst(); + + arrayView2d< real64 > const incrBubbleDisp = + faceManager.getField< fields::solidMechanics::incrementalBubbleDisplacement >(); + + arrayView3d< real64 > const rotationMatrix = + subRegion.getField< fields::contact::rotationMatrix >().toView(); + + arrayView2d< real64 > const unitNormal = subRegion.getNormalVector(); + arrayView2d< real64 > const unitTangent1 = subRegion.getTangentVector1(); + arrayView2d< real64 > const unitTangent2 = subRegion.getTangentVector2(); + + // Compute rotation matrices + solidMechanicsConformingContactKernels::ComputeRotationMatricesKernel::launch< parallelDevicePolicy<> >( subRegion.size(), + faceNormal, + elemsToFaces, + rotationMatrix, + unitNormal, + unitTangent1, + unitTangent2 ); + + forAll< parallelDevicePolicy<> >( subRegion.size(), + [ = ] + GEOS_HOST_DEVICE ( localIndex const k ) + { + localIndex const kf0 = elemsToFaces[k][0]; + localIndex const kf1 = elemsToFaces[k][1]; + LvArray::tensorOps::fill< 3 >( incrBubbleDisp[kf0], 0.0 ); + LvArray::tensorOps::fill< 3 >( incrBubbleDisp[kf1], 0.0 ); + } ); + } ); +} + +void SolidMechanicsLagrangeContactBubbleStab::implicitStepSetup( real64 const & time_n, + real64 const & dt, + DomainPartition & domain ) +{ + SolidMechanicsLagrangianFEM::implicitStepSetup( time_n, dt, domain ); +} + +void SolidMechanicsLagrangeContactBubbleStab::assembleSystem( real64 const time, + real64 const dt, + DomainPartition & domain, + DofManager const & dofManager, + CRSMatrixView< real64, globalIndex const > const & localMatrix, + arrayView1d< real64 > const & localRhs ) +{ + GEOS_MARK_FUNCTION; + + SolidMechanicsLagrangianFEM::assembleSystem( time, + dt, + domain, + dofManager, + localMatrix, + localRhs ); + + assembleStabilization( dt, domain, dofManager, localMatrix, localRhs ); + + assembleContact( dt, domain, dofManager, localMatrix, localRhs ); +} + +void SolidMechanicsLagrangeContactBubbleStab::assembleStabilization( real64 const dt, + DomainPartition & domain, + DofManager const & dofManager, + CRSMatrixView< real64, globalIndex const > const & localMatrix, + arrayView1d< real64 > const & localRhs ) +{ + // Loop for assembling contributes of bubble elements (Abb, Abu, Aub) + forDiscretizationOnMeshTargets( domain.getMeshBodies(), [&] ( string const &, + MeshLevel & mesh, + arrayView1d< string const > const & regionNames ) + { + NodeManager const & nodeManager = mesh.getNodeManager(); + FaceManager const & faceManager = mesh.getFaceManager(); + + string const & dispDofKey = dofManager.getKey( solidMechanics::totalDisplacement::key() ); + string const & bubbleDofKey = dofManager.getKey( solidMechanics::totalBubbleDisplacement::key() ); + + arrayView1d< globalIndex const > const dispDofNumber = nodeManager.getReference< globalIndex_array >( dispDofKey ); + arrayView1d< globalIndex const > const bubbleDofNumber = faceManager.getReference< globalIndex_array >( bubbleDofKey ); + + real64 const gravityVectorData[3] = LVARRAY_TENSOROPS_INIT_LOCAL_3( gravityVector() ); + + + solidMechanicsConformingContactKernels::FaceBubbleFactory kernelFactory( dispDofNumber, + bubbleDofNumber, + dofManager.rankOffset(), + localMatrix, + localRhs, + dt, + gravityVectorData ); + + real64 maxTraction = finiteElement:: + regionBasedKernelApplication + < parallelDevicePolicy< >, + constitutive::ElasticIsotropic, + CellElementSubRegion >( mesh, + regionNames, + getDiscretizationName(), + SolidMechanicsLagrangianFEM::viewKeyStruct::solidMaterialNamesString(), + kernelFactory ); + + GEOS_UNUSED_VAR( maxTraction ); + + } ); +} + +void SolidMechanicsLagrangeContactBubbleStab::assembleContact( real64 const dt, + DomainPartition & domain, + DofManager const & dofManager, + CRSMatrixView< real64, globalIndex const > const & localMatrix, + arrayView1d< real64 > const & localRhs ) +{ + forDiscretizationOnMeshTargets( domain.getMeshBodies(), [&] ( string const & meshName, + MeshLevel & mesh, + arrayView1d< string const > const & ) + { + NodeManager const & nodeManager = mesh.getNodeManager(); + FaceManager const & faceManager = mesh.getFaceManager(); + + string const & dispDofKey = dofManager.getKey( solidMechanics::totalDisplacement::key() ); + string const & bubbleDofKey = dofManager.getKey( solidMechanics::totalBubbleDisplacement::key() ); + string const & tractionDofKey = dofManager.getKey( contact::traction::key() ); + + arrayView1d< globalIndex const > const dispDofNumber = nodeManager.getReference< globalIndex_array >( dispDofKey ); + arrayView1d< globalIndex const > const bubbleDofNumber = faceManager.getReference< globalIndex_array >( bubbleDofKey ); + + string const & fractureRegionName = this->getUniqueFractureRegionName(); + + forFiniteElementOnStickFractureSubRegions( meshName, [&] ( string const &, + finiteElement::FiniteElementBase const & subRegionFE, + arrayView1d< localIndex const > const & faceElementList, + bool const ) + { + solidMechanicsLagrangeContactKernels::LagrangeContactFactory kernelFactory( dispDofNumber, + bubbleDofNumber, + dofManager.rankOffset(), + localMatrix, + localRhs, + dt, + faceElementList, + tractionDofKey ); + + real64 maxTraction = finiteElement:: + interfaceBasedKernelApplication + < parallelDevicePolicy< >, + constitutive::FrictionBase >( mesh, + fractureRegionName, + faceElementList, + subRegionFE, + viewKeyStruct::frictionLawNameString(), + kernelFactory ); + + GEOS_UNUSED_VAR( maxTraction ); + } ); + } ); +} + +void SolidMechanicsLagrangeContactBubbleStab::implicitStepComplete( real64 const & time_n, + real64 const & dt, + DomainPartition & domain ) +{ + SolidMechanicsLagrangianFEM::implicitStepComplete( time_n, dt, domain ); + + forDiscretizationOnMeshTargets( domain.getMeshBodies(), [&] ( string const &, + MeshLevel & mesh, + arrayView1d< string const > const & ) + { + mesh.getElemManager().forElementSubRegions< FaceElementSubRegion >( [&]( FaceElementSubRegion & subRegion ) + { + arrayView2d< real64 > const deltaTraction = subRegion.getField< contact::deltaTraction >(); + arrayView2d< real64 > const deltaDispJump = subRegion.getField< contact::deltaDispJump >(); + arrayView2d< real64 const > const dispJump = subRegion.getField< contact::dispJump >(); + arrayView2d< real64 > const oldDispJump = subRegion.getField< contact::oldDispJump >(); + + forAll< parallelHostPolicy >( subRegion.size(), [=] ( localIndex const kfe ) + { + LvArray::tensorOps::fill< 3 >( deltaDispJump[kfe], 0.0 ); + LvArray::tensorOps::fill< 3 >( deltaTraction[kfe], 0.0 ); + LvArray::tensorOps::copy< 3 >( oldDispJump[kfe], dispJump[kfe] ); + } ); + } ); + } ); +} + +real64 SolidMechanicsLagrangeContactBubbleStab::calculateResidualNorm( real64 const & time, + real64 const & dt, + DomainPartition const & domain, + DofManager const & dofManager, + arrayView1d< real64 const > const & localRhs ) +{ + GEOS_MARK_FUNCTION; + + real64 const solidResidual = SolidMechanicsLagrangianFEM::calculateResidualNorm( time, dt, domain, dofManager, localRhs ); + + real64 const contactResidual = calculateContactResidualNorm( domain, dofManager, localRhs ); + + return sqrt( solidResidual * solidResidual + contactResidual * contactResidual ); +} + +real64 SolidMechanicsLagrangeContactBubbleStab::calculateContactResidualNorm( DomainPartition const & domain, + DofManager const & dofManager, + arrayView1d< real64 const > const & localRhs ) +{ + string const & dofKey = dofManager.getKey( contact::traction::key() ); + globalIndex const rankOffset = dofManager.rankOffset(); + + real64 stickResidual = 0.0; + forDiscretizationOnMeshTargets( domain.getMeshBodies(), [&] ( string const &, + MeshLevel const & mesh, + arrayView1d< string const > const & regionNames ) + { + mesh.getElemManager().forElementSubRegions< FaceElementSubRegion >( regionNames, + [&]( localIndex const, FaceElementSubRegion const & subRegion ) + { + arrayView1d< globalIndex const > const & dofNumber = subRegion.getReference< array1d< globalIndex > >( dofKey ); + arrayView1d< integer const > const & ghostRank = subRegion.ghostRank(); + arrayView1d< real64 const > const & area = subRegion.getElementArea(); + + RAJA::ReduceSum< parallelHostReduce, real64 > stickSum( 0.0 ); + forAll< parallelHostPolicy >( subRegion.size(), [=] ( localIndex const k ) + { + if( ghostRank[k] < 0 ) + { + localIndex const localRow = LvArray::integerConversion< localIndex >( dofNumber[k] - rankOffset ); + for( localIndex dim = 0; dim < 3; ++dim ) + { + real64 const norm = localRhs[localRow + dim] / area[k]; + stickSum += norm * norm; + } + } + } ); + + stickResidual += stickSum.get(); + } ); + } ); + + stickResidual = MpiWrapper::sum( stickResidual ); + stickResidual = sqrt( stickResidual ); + + if( getLogLevel() >= 1 && logger::internal::rank==0 ) + { + std::cout << GEOS_FMT( " ( Rt ) = ( {:15.6e} )", stickResidual ); + } + + return sqrt( stickResidual * stickResidual ); +} + + +void SolidMechanicsLagrangeContactBubbleStab::applySystemSolution( DofManager const & dofManager, + arrayView1d< real64 const > const & localSolution, + real64 const scalingFactor, + real64 const dt, + DomainPartition & domain ) +{ + GEOS_MARK_FUNCTION; + + SolidMechanicsLagrangianFEM::applySystemSolution( dofManager, localSolution, scalingFactor, dt, domain ); + + dofManager.addVectorToField( localSolution, + contact::traction::key(), + contact::deltaTraction::key(), + scalingFactor ); + + dofManager.addVectorToField( localSolution, + contact::traction::key(), + contact::traction::key(), + scalingFactor ); + + dofManager.addVectorToField( localSolution, + solidMechanics::totalBubbleDisplacement::key(), + solidMechanics::totalBubbleDisplacement::key(), + scalingFactor ); + + dofManager.addVectorToField( localSolution, + solidMechanics::totalBubbleDisplacement::key(), + solidMechanics::incrementalBubbleDisplacement::key(), + scalingFactor ); + + + // Loop for updating the displacement jump + forDiscretizationOnMeshTargets( domain.getMeshBodies(), [&] ( string const & meshName, + MeshLevel & mesh, + arrayView1d< string const > const & ) + + { + + NodeManager const & nodeManager = mesh.getNodeManager(); + FaceManager const & faceManager = mesh.getFaceManager(); + + string const & dispDofKey = dofManager.getKey( solidMechanics::totalDisplacement::key() ); + string const & bubbleDofKey = dofManager.getKey( solidMechanics::totalBubbleDisplacement::key() ); + + arrayView1d< globalIndex const > const dispDofNumber = nodeManager.getReference< globalIndex_array >( dispDofKey ); + arrayView1d< globalIndex const > const bubbleDofNumber = faceManager.getReference< globalIndex_array >( bubbleDofKey ); + + string const & fractureRegionName = this->getUniqueFractureRegionName(); + + CRSMatrix< real64, globalIndex > const voidMatrix; + array1d< real64 > const voidRhs; + + forFiniteElementOnFractureSubRegions( meshName, [&] ( string const &, + finiteElement::FiniteElementBase const & subRegionFE, + arrayView1d< localIndex const > const & faceElementList ) + { + + solidMechanicsConformingContactKernels::DispJumpUpdateFactory kernelFactory( dispDofNumber, + bubbleDofNumber, + dofManager.rankOffset(), + voidMatrix.toViewConstSizes(), + voidRhs.toView(), + dt, + faceElementList ); + + real64 maxTraction = finiteElement:: + interfaceBasedKernelApplication + < parallelDevicePolicy< >, + constitutive::NullModel >( mesh, + fractureRegionName, + faceElementList, + subRegionFE, + "", + kernelFactory ); + + GEOS_UNUSED_VAR( maxTraction ); + + } ); + } ); + + forDiscretizationOnMeshTargets( domain.getMeshBodies(), [&] ( string const &, + MeshLevel & mesh, + arrayView1d< string const > const & ) + { + FieldIdentifiers fieldsToBeSync; + + fieldsToBeSync.addFields( FieldLocation::Face, + { solidMechanics::incrementalBubbleDisplacement::key(), + solidMechanics::totalBubbleDisplacement::key() } ); + + fieldsToBeSync.addElementFields( { contact::traction::key(), + contact::deltaTraction::key(), + contact::dispJump::key() }, + { getUniqueFractureRegionName() } ); + + CommunicationTools::getInstance().synchronizeFields( fieldsToBeSync, + mesh, + domain.getNeighbors(), + true ); + } ); +} + +void SolidMechanicsLagrangeContactBubbleStab::addCouplingNumNonzeros( DomainPartition & domain, + DofManager & dofManager, + arrayView1d< localIndex > const & rowLengths ) const +{ + + forDiscretizationOnMeshTargets( domain.getMeshBodies(), [&] ( string const &, + MeshLevel const & mesh, + arrayView1d< string const > const & regionNames ) + { + + ElementRegionManager const & elemManager = mesh.getElemManager(); + NodeManager const & nodeManager = mesh.getNodeManager(); + FaceManager const & faceManager = mesh.getFaceManager(); + + ArrayOfArraysView< localIndex const > const faceToNodeMap = faceManager.nodeList().toViewConst(); + + globalIndex const rankOffset = dofManager.rankOffset(); + + string const bubbleDofKey = dofManager.getKey( solidMechanics::totalBubbleDisplacement::key() ); + string const dispDofKey = dofManager.getKey( solidMechanics::totalDisplacement::key() ); + + arrayView1d< globalIndex const > const bubbleDofNumber = faceManager.getReference< globalIndex_array >( bubbleDofKey ); + arrayView1d< globalIndex const > const dispDofNumber = nodeManager.getReference< globalIndex_array >( dispDofKey ); + + elemManager.forElementSubRegions< CellElementSubRegion >( regionNames, [&]( localIndex const, CellElementSubRegion const & cellElementSubRegion ) + { + + arrayView1d< localIndex const > const bubbleElemsList = cellElementSubRegion.bubbleElementsList(); + arrayView2d< localIndex const > const faceElemsList = cellElementSubRegion.faceElementsList(); + + localIndex const numDispDof = 3*cellElementSubRegion.numNodesPerElement(); + + for( localIndex bi=0; bi( bubbleDofNumber[k] - rankOffset ); + + if( localRow >= 0 && localRow < rowLengths.size() ) + { + for( localIndex i=0; i<3; ++i ) + { + rowLengths[localRow + i] += numDispDof; + } + } + + for( localIndex a=0; a( dispDofNumber[node] - rankOffset ); + + if( localDispRow >= 0 && localDispRow < rowLengths.size() ) + { + for( int d=0; d<3; ++d ) + { + rowLengths[localDispRow + d] += 3; + } + } + } + } + + } ); + + SurfaceElementRegion const & region = elemManager.getRegion< SurfaceElementRegion >( getUniqueFractureRegionName() ); + FaceElementSubRegion const & subRegion = region.getUniqueSubRegion< FaceElementSubRegion >(); + arrayView2d< localIndex const > const elemsToFaces = subRegion.faceList().toViewConst(); + + for( localIndex kfe=0; kfe( bubbleDofNumber[kf] - rankOffset ); + + if( localRow >= 0 && localRow < rowLengths.size() ) + { + for( localIndex i=0; i<3; ++i ) + { + rowLengths[localRow + i] += numDispDof; + } + } + + for( localIndex a=0; a( dispDofNumber[node] - rankOffset ); + + if( localDispRow >= 0 && localDispRow < rowLengths.size() ) + { + for( int d=0; d<3; ++d ) + { + rowLengths[localDispRow + d] += 3; + } + } + } + } + + } + + } ); +} + +void SolidMechanicsLagrangeContactBubbleStab::addCouplingSparsityPattern( DomainPartition const & domain, + DofManager const & dofManager, + SparsityPatternView< globalIndex > const & pattern ) const +{ + + forDiscretizationOnMeshTargets( domain.getMeshBodies(), [&] ( string const &, + MeshLevel const & mesh, + arrayView1d< string const > const & regionNames ) + { + + ElementRegionManager const & elemManager = mesh.getElemManager(); + NodeManager const & nodeManager = mesh.getNodeManager(); + FaceManager const & faceManager = mesh.getFaceManager(); + + globalIndex const rankOffset = dofManager.rankOffset(); + + string const bubbleDofKey = dofManager.getKey( solidMechanics::totalBubbleDisplacement::key() ); + string const dispDofKey = dofManager.getKey( solidMechanics::totalDisplacement::key() ); + + arrayView1d< globalIndex const > const bubbleDofNumber = faceManager.getReference< globalIndex_array >( bubbleDofKey ); + arrayView1d< globalIndex const > const dispDofNumber = nodeManager.getReference< globalIndex_array >( dispDofKey ); + + static constexpr int maxNumDispDof = 3 * 8; + + elemManager.forElementSubRegions< CellElementSubRegion >( regionNames, [&]( localIndex const, CellElementSubRegion const & cellElementSubRegion ) + { + + arrayView1d< localIndex const > const bubbleElemsList = cellElementSubRegion.bubbleElementsList(); + arrayView2d< localIndex const > const faceElemsList = cellElementSubRegion.faceElementsList(); + + localIndex const numDispDof = 3*cellElementSubRegion.numNodesPerElement(); + + for( localIndex bi=0; bi eqnRowIndicesDisp ( numDispDof ); + stackArray1d< globalIndex, 3 > eqnRowIndicesBubble( 3 ); + stackArray1d< globalIndex, maxNumDispDof > dofColIndicesDisp ( numDispDof ); + stackArray1d< globalIndex, 3 > dofColIndicesBubble( 3 ); + + for( localIndex idof = 0; idof < 3; ++idof ) + { + eqnRowIndicesBubble[idof] = bubbleDofNumber[k] + idof - rankOffset; + dofColIndicesBubble[idof] = bubbleDofNumber[k] + idof; + } + + for( localIndex a=0; a= 0 && eqnRowIndicesDisp[i] < pattern.numRows() ) + { + for( localIndex j = 0; j < dofColIndicesBubble.size(); ++j ) + { + pattern.insertNonZero( eqnRowIndicesDisp[i], dofColIndicesBubble[j] ); + } + } + } + + for( localIndex i = 0; i < eqnRowIndicesBubble.size(); ++i ) + { + if( eqnRowIndicesBubble[i] >= 0 && eqnRowIndicesBubble[i] < pattern.numRows() ) + { + for( localIndex j=0; j < dofColIndicesDisp.size(); ++j ) + { + pattern.insertNonZero( eqnRowIndicesBubble[i], dofColIndicesDisp[j] ); + } + } + } + + } + + } ); + + SurfaceElementRegion const & region = elemManager.getRegion< SurfaceElementRegion >( getUniqueFractureRegionName() ); + FaceElementSubRegion const & subRegion = region.getUniqueSubRegion< FaceElementSubRegion >(); + arrayView2d< localIndex const > const elemsToFaces = subRegion.faceList().toViewConst(); + ArrayOfArraysView< localIndex const > const faceToNodeMap = faceManager.nodeList().toViewConst(); + + static constexpr int maxNumDispFaceDof = 3 * 4; + + for( localIndex kfe=0; kfe eqnRowIndicesDisp ( numDispDof ); + stackArray1d< globalIndex, 3 > eqnRowIndicesBubble( 3 ); + stackArray1d< globalIndex, maxNumDispFaceDof > dofColIndicesDisp ( numDispDof ); + stackArray1d< globalIndex, 3 > dofColIndicesBubble( 3 ); + + for( localIndex idof = 0; idof < 3; ++idof ) + { + eqnRowIndicesBubble[idof] = bubbleDofNumber[kf] + idof - rankOffset; + dofColIndicesBubble[idof] = bubbleDofNumber[kf] + idof; + } + + for( localIndex a=0; a= 0 && eqnRowIndicesDisp[i] < pattern.numRows() ) + { + for( localIndex j = 0; j < dofColIndicesBubble.size(); ++j ) + { + pattern.insertNonZero( eqnRowIndicesDisp[i], dofColIndicesBubble[j] ); + } + } + } + + for( localIndex i = 0; i < eqnRowIndicesBubble.size(); ++i ) + { + if( eqnRowIndicesBubble[i] >= 0 && eqnRowIndicesBubble[i] < pattern.numRows() ) + { + for( localIndex j=0; j < dofColIndicesDisp.size(); ++j ) + { + pattern.insertNonZero( eqnRowIndicesBubble[i], dofColIndicesDisp[j] ); + } + } + } + + } + } + } ); + +} + +void SolidMechanicsLagrangeContactBubbleStab::updateStickSlipList( DomainPartition const & domain ) +{ + + forDiscretizationOnMeshTargets( domain.getMeshBodies(), [&] ( string const & meshName, + MeshLevel const & mesh, + arrayView1d< string const > const & ) + + { + + ElementRegionManager const & elemManager = mesh.getElemManager(); + SurfaceElementRegion const & region = elemManager.getRegion< SurfaceElementRegion >( getUniqueFractureRegionName() ); + FaceElementSubRegion const & subRegion = region.getUniqueSubRegion< FaceElementSubRegion >(); + + arrayView1d< integer const > const fractureState = subRegion.getField< contact::fractureState >(); + + forFiniteElementOnFractureSubRegions( meshName, [&] ( string const & finiteElementName, + finiteElement::FiniteElementBase const &, + arrayView1d< localIndex const > const & faceElementList ) + { + + array1d< localIndex > keys( subRegion.size()); + array1d< localIndex > vals( subRegion.size()); + array1d< localIndex > stickList; + array1d< localIndex > slipList; + RAJA::ReduceSum< ReducePolicy< parallelDevicePolicy<> >, localIndex > nStick_r( 0 ); + RAJA::ReduceSum< ReducePolicy< parallelDevicePolicy<> >, localIndex > nSlip_r( 0 ); + + arrayView1d< localIndex > const keys_v = keys.toView(); + arrayView1d< localIndex > const vals_v = vals.toView(); + forAll< parallelDevicePolicy<> >( faceElementList.size(), + [ = ] + GEOS_HOST_DEVICE ( localIndex const kfe ) + { + + localIndex const faceIndex = faceElementList[kfe]; + if( fractureState[faceIndex] == contact::FractureState::Stick ) + { + keys_v[kfe]=0; + vals_v[kfe]=faceIndex; + nStick_r += 1; + } + else if(( fractureState[faceIndex] == contact::FractureState::Slip ) || + (fractureState[faceIndex] == contact::FractureState::NewSlip)) + { + keys_v[kfe]=1; + vals_v[kfe]=faceIndex; + nSlip_r += 1; + } + else + { + keys_v[kfe] = 2; + } + + } ); + + localIndex nStick = static_cast< localIndex >(nStick_r.get()); + localIndex nSlip = static_cast< localIndex >(nSlip_r.get()); + + // Sort vals according to keys to ensure that + // elements of the same type are adjacent in the vals list. + // This arrangement allows for efficient copying into the container + // by leveraging parallelism. + RAJA::sort_pairs< parallelDevicePolicy<> >( keys_v, vals_v ); + + stickList.resize( nStick ); + slipList.resize( nSlip ); + arrayView1d< localIndex > const stickList_v = stickList.toView(); + arrayView1d< localIndex > const slipList_v = slipList.toView(); + + forAll< parallelDevicePolicy<> >( nStick, [ = ] + GEOS_HOST_DEVICE ( localIndex const kfe ) + { + stickList_v[kfe] = vals_v[kfe]; + } ); + + forAll< parallelDevicePolicy<> >( nSlip, [ = ] + GEOS_HOST_DEVICE ( localIndex const kfe ) + { + slipList_v[kfe] = vals_v[nStick+kfe]; + } ); + + this->m_faceTypesToFaceElementsStick[meshName][finiteElementName] = stickList; + this->m_faceTypesToFaceElementsSlip[meshName][finiteElementName] = slipList; + + GEOS_LOG_LEVEL_INFO_RANK_0( logInfo::Configuration, GEOS_FMT( "# stick elements: {}, # slip elements: {}", nStick, nSlip )) + } ); + } ); + +} + +void SolidMechanicsLagrangeContactBubbleStab::createFaceTypeList( DomainPartition const & domain ) +{ + + // Generate lists containing elements of various face types + forDiscretizationOnMeshTargets( domain.getMeshBodies(), [&] ( string const & meshName, + MeshLevel const & mesh, + arrayView1d< string const > const ) + { + FaceManager const & faceManager = mesh.getFaceManager(); + ElementRegionManager const & elemManager = mesh.getElemManager(); + ArrayOfArraysView< localIndex const > const faceToNodeMap = faceManager.nodeList().toViewConst(); + + SurfaceElementRegion const & region = elemManager.getRegion< SurfaceElementRegion >( getUniqueFractureRegionName() ); + FaceElementSubRegion const & subRegion = region.getUniqueSubRegion< FaceElementSubRegion >(); + + array1d< localIndex > keys( subRegion.size()); + array1d< localIndex > vals( subRegion.size()); + array1d< localIndex > quadList; + array1d< localIndex > triList; + RAJA::ReduceSum< ReducePolicy< parallelDevicePolicy<> >, localIndex > nTri_r( 0 ); + RAJA::ReduceSum< ReducePolicy< parallelDevicePolicy<> >, localIndex > nQuad_r( 0 ); + + arrayView1d< localIndex > const keys_v = keys.toView(); + arrayView1d< localIndex > const vals_v = vals.toView(); + // Determine the size of the lists and generate the vector keys and vals for parallel indexing into lists. + // (With RAJA, parallelizing this operation seems the most viable approach.) + forAll< parallelDevicePolicy<> >( subRegion.size(), + [ = ] GEOS_HOST_DEVICE ( localIndex const kfe ) + { + + localIndex const numNodesPerFace = faceToNodeMap.sizeOfArray( kfe ); + if( numNodesPerFace == 3 ) + { + keys_v[kfe]=0; + vals_v[kfe]=kfe; + nTri_r += 1; + } + else if( numNodesPerFace == 4 ) + { + keys_v[kfe]=1; + vals_v[kfe]=kfe; + nQuad_r += 1; + } + else + { + GEOS_ERROR( "SolidMechanicsLagrangeContactBubbleStab:: invalid face type" ); + } + } ); + + localIndex nQuad = static_cast< localIndex >(nQuad_r.get()); + localIndex nTri = static_cast< localIndex >(nTri_r.get()); + + // Sort vals according to keys to ensure that + // elements of the same type are adjacent in the vals list. + // This arrangement allows for efficient copying into the container + // by leveraging parallelism. + RAJA::sort_pairs< parallelDevicePolicy<> >( keys_v, vals_v ); + + quadList.resize( nQuad ); + triList.resize( nTri ); + arrayView1d< localIndex > const quadList_v = quadList.toView(); + arrayView1d< localIndex > const triList_v = triList.toView(); + + forAll< parallelDevicePolicy<> >( nTri, [ = ] GEOS_HOST_DEVICE ( localIndex const kfe ) + { + triList_v[kfe] = vals_v[kfe]; + } ); + + forAll< parallelDevicePolicy<> >( nQuad, [ = ] GEOS_HOST_DEVICE ( localIndex const kfe ) + { + quadList_v[kfe] = vals_v[nTri+kfe]; + } ); + + this->m_faceTypesToFaceElements[meshName]["Quadrilateral"] = quadList; + this->m_faceTypesToFaceElements[meshName]["Triangle"] = triList; + } ); + +} + +void SolidMechanicsLagrangeContactBubbleStab::createBubbleCellList( DomainPartition & domain ) const +{ + + forDiscretizationOnMeshTargets( domain.getMeshBodies(), [&] ( string const &, + MeshLevel & mesh, + arrayView1d< string const > const regionNames ) + { + ElementRegionManager & elemManager = mesh.getElemManager(); + + SurfaceElementRegion const & region = elemManager.getRegion< SurfaceElementRegion >( getUniqueFractureRegionName() ); + FaceElementSubRegion const & subRegion = region.getUniqueSubRegion< FaceElementSubRegion >(); + // Array to store face indexes + array1d< localIndex > tmpSpace( 2*subRegion.size()); + SortedArray< localIndex > faceIdList; + + arrayView1d< localIndex > const tmpSpace_v = tmpSpace.toView(); + // Store indexes of faces in the temporany array. + { + arrayView2d< localIndex const > const elemsToFaces = subRegion.faceList().toViewConst(); + + forAll< parallelDevicePolicy<> >( subRegion.size(), [ = ] GEOS_HOST_DEVICE ( localIndex const kfe ) + { + + localIndex const kf0 = elemsToFaces[kfe][0], kf1 = elemsToFaces[kfe][1]; + tmpSpace_v[2*kfe] = kf0, tmpSpace_v[2*kfe+1] = kf1; + + } ); + } + + // Sort indexes to enable efficient searching using binary search. + RAJA::stable_sort< parallelDevicePolicy<> >( tmpSpace_v ); + faceIdList.insert( tmpSpace_v.begin(), tmpSpace_v.end()); + + // Search for bubble element on each CellElementSubRegion and + // store element indexes, global and local face indexes. + elemManager.forElementSubRegions< CellElementSubRegion >( regionNames, [&]( localIndex const, CellElementSubRegion & cellElementSubRegion ) + { + + arrayView2d< localIndex const > const elemsToFaces = cellElementSubRegion.faceList().toViewConst(); + + RAJA::ReduceSum< ReducePolicy< parallelDevicePolicy<> >, localIndex > nBubElems_r( 0 ); + + localIndex const n_max = cellElementSubRegion.size() * elemsToFaces.size( 1 ); + array1d< localIndex > keys( n_max ); + array1d< localIndex > perms( n_max ); + array1d< localIndex > vals( n_max ); + array1d< localIndex > localFaceIds( n_max ); + + arrayView1d< localIndex > const keys_v = keys.toView(); + arrayView1d< localIndex > const perms_v = perms.toView(); + arrayView1d< localIndex > const vals_v = vals.toView(); + arrayView1d< localIndex > const localFaceIds_v = localFaceIds.toView(); + SortedArrayView< localIndex const > const faceIdList_v = faceIdList.toViewConst(); + + forAll< parallelDevicePolicy<> >( cellElementSubRegion.size(), + [ = ] + GEOS_HOST_DEVICE ( localIndex const kfe ) + { + for( int i=0; i < elemsToFaces.size( 1 ); ++i ) + { + perms_v[kfe*elemsToFaces.size( 1 )+i] = kfe*elemsToFaces.size( 1 )+i; + if( faceIdList_v.contains( elemsToFaces[kfe][i] )) + { + keys_v[kfe*elemsToFaces.size( 1 )+i] = 0; + vals_v[kfe*elemsToFaces.size( 1 )+i] = kfe; + localFaceIds_v[kfe*elemsToFaces.size( 1 )+i] = i; + nBubElems_r += 1; + } + else + { + keys_v[kfe*elemsToFaces.size( 1 )+i] = 1; + vals_v[kfe*elemsToFaces.size( 1 )+i] = -1; + localFaceIds_v[kfe*elemsToFaces.size( 1 )+i] = -1; + } + } + } ); + + // Sort perms according to keys to ensure that bubble elements are adjacent + // and occupy the first positions of the list. + // This arrangement allows for efficient copying into the container + // by leveraging parallelism. + localIndex nBubElems = static_cast< localIndex >(nBubElems_r.get()); + RAJA::sort_pairs< parallelDevicePolicy<> >( keys_v, perms_v ); + + array1d< localIndex > bubbleElemsList; + bubbleElemsList.resize( nBubElems ); + + arrayView1d< localIndex > const bubbleElemsList_v = bubbleElemsList.toView(); + + forAll< parallelDevicePolicy<> >( n_max, [ = ] GEOS_HOST_DEVICE ( localIndex const k ) + { + keys_v[k] = vals_v[perms_v[k]]; + } ); + + forAll< parallelDevicePolicy<> >( nBubElems, [ = ] GEOS_HOST_DEVICE ( localIndex const k ) + { + bubbleElemsList_v[k] = keys_v[k]; + } ); + cellElementSubRegion.setBubbleElementsList( bubbleElemsList.toViewConst()); + + forAll< parallelDevicePolicy<> >( n_max, [ = ] GEOS_HOST_DEVICE ( localIndex const k ) + { + keys_v[k] = localFaceIds_v[perms_v[k]]; + } ); + + array2d< localIndex > faceElemsList; + faceElemsList.resize( nBubElems, 2 ); + + arrayView2d< localIndex > const faceElemsList_v = faceElemsList.toView(); + + forAll< parallelDevicePolicy<> >( nBubElems, + [ = ] + GEOS_HOST_DEVICE ( localIndex const k ) + { + localIndex const kfe = bubbleElemsList_v[k]; + faceElemsList_v[k][0] = elemsToFaces[kfe][keys_v[k]]; + faceElemsList_v[k][1] = keys_v[k]; + } ); + cellElementSubRegion.setFaceElementsList( faceElemsList.toViewConst()); + + } ); + + } ); + +} + +REGISTER_CATALOG_ENTRY( PhysicsSolverBase, SolidMechanicsLagrangeContactBubbleStab, string const &, Group * const ) + +} /* namespace geos */ diff --git a/src/coreComponents/physicsSolvers/contact/SolidMechanicsLagrangeContactBubbleStab.hpp b/src/coreComponents/physicsSolvers/contact/SolidMechanicsLagrangeContactBubbleStab.hpp new file mode 100644 index 00000000000..8daefd588fc --- /dev/null +++ b/src/coreComponents/physicsSolvers/contact/SolidMechanicsLagrangeContactBubbleStab.hpp @@ -0,0 +1,240 @@ +/* + * ------------------------------------------------------------------------------------------------------------ + * SPDX-License-Identifier: LGPL-2.1-only + * + * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC + * Copyright (c) 2018-2024 TotalEnergies + * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University + * Copyright (c) 2023-2024 Chevron + * Copyright (c) 2019- GEOS/GEOSX Contributors + * All rights reserved + * + * See top level LICENSE, COPYRIGHT, CONTRIBUTORS, NOTICE, and ACKNOWLEDGEMENTS files for details. + * ------------------------------------------------------------------------------------------------------------ + */ + +/** + * @file SolidMechanicsLagrangeContactBubbleStab.hpp + * + */ + +#ifndef GEOS_PHYSICSSOLVERS_CONTACT_SOLIDMECHANICSLAGRANGECONTACTBUBBLESTAB_HPP_ +#define GEOS_PHYSICSSOLVERS_CONTACT_SOLIDMECHANICSLAGRANGECONTACTBUBBLESTAB_HPP_ + +#include "physicsSolvers/contact/ContactSolverBase.hpp" + +namespace geos +{ + +class NumericalMethodsManager; + +class SolidMechanicsLagrangeContactBubbleStab : public ContactSolverBase +{ +public: + + SolidMechanicsLagrangeContactBubbleStab( const string & name, + Group * const parent ); + + ~SolidMechanicsLagrangeContactBubbleStab() override; + + /** + * @brief name of the node manager in the object catalog + * @return string that contains the catalog name to generate a new NodeManager object through the object catalog. + */ + static string catalogName() + { + return "SolidMechanicsLagrangeContactBubbleStab"; + } + /** + * @copydoc SolverBase::getCatalogName() + */ + string getCatalogName() const override { return catalogName(); } + + virtual void registerDataOnMesh( Group & MeshBodies ) override final; + + real64 solverStep( real64 const & time_n, + real64 const & dt, + const integer cycleNumber, + DomainPartition & domain ) override final; + + virtual void + setupDofs( DomainPartition const & domain, + DofManager & dofManager ) const override; + + virtual void + setupSystem( DomainPartition & domain, + DofManager & dofManager, + CRSMatrix< real64, globalIndex > & localMatrix, + ParallelVector & rhs, + ParallelVector & solution, + bool const setSparsity = true ) override final; + + virtual void + implicitStepSetup( real64 const & time_n, + real64 const & dt, + DomainPartition & domain ) override final; + + virtual void + implicitStepComplete( real64 const & time_n, + real64 const & dt, + DomainPartition & domain ) override final; + + virtual void + assembleSystem( real64 const time, + real64 const dt, + DomainPartition & domain, + DofManager const & dofManager, + CRSMatrixView< real64, globalIndex const > const & localMatrix, + arrayView1d< real64 > const & localRhs ) override; + + virtual real64 + calculateResidualNorm( real64 const & time, + real64 const & dt, + DomainPartition const & domain, + DofManager const & dofManager, + arrayView1d< real64 const > const & localRhs ) override; + + virtual void + applySystemSolution( DofManager const & dofManager, + arrayView1d< real64 const > const & localSolution, + real64 const scalingFactor, + real64 const dt, + DomainPartition & domain ) override; + + void assembleContact( real64 const dt, + DomainPartition & domain, + DofManager const & dofManager, + CRSMatrixView< real64, globalIndex const > const & localMatrix, + arrayView1d< real64 > const & localRhs ); + + void assembleStabilization( real64 const dt, + DomainPartition & domain, + DofManager const & dofManager, + CRSMatrixView< real64, globalIndex const > const & localMatrix, + arrayView1d< real64 > const & localRhs ); + + real64 calculateContactResidualNorm( DomainPartition const & domain, + DofManager const & dofManager, + arrayView1d< real64 const > const & localRhs ); + + /** + * @brief Loop over the finite element type on the fracture subregions of meshName and apply callback. + * @tparam LAMBDA The callback function type + * @param meshName The mesh name. + * @param lambda The callback function. Take the finite element type name and + * the list of face element of the same type. + */ + template< typename LAMBDA > + void forFiniteElementOnFractureSubRegions( string const & meshName, LAMBDA && lambda ) const + { + std::map< string, + array1d< localIndex > > const & faceTypesToFaceElements = m_faceTypesToFaceElements.at( meshName ); + + for( const auto & [finiteElementName, faceElementList] : faceTypesToFaceElements ) + { + arrayView1d< localIndex const > const faceElemList = faceElementList.toViewConst(); + + finiteElement::FiniteElementBase const & subRegionFE = *(m_faceTypeToFiniteElements.at( finiteElementName )); + + lambda( finiteElementName, subRegionFE, faceElemList ); + } + } + + /** + * @brief Loop over the finite element type on the stick fracture subregions of meshName and apply callback. + * @tparam LAMBDA The callback function type + * @param meshName The mesh name. + * @param lambda The callback function. Take the finite element type name and + * the list of face element of the same type. + */ + template< typename LAMBDA > + void forFiniteElementOnStickFractureSubRegions( string const & meshName, LAMBDA && lambda ) const + { + bool const isStickState = true; + + std::map< string, array1d< localIndex > > const & + faceTypesToFaceElements = m_faceTypesToFaceElementsStick.at( meshName ); + + for( const auto & [finiteElementName, faceElementList] : faceTypesToFaceElements ) + { + arrayView1d< localIndex const > const faceElemList = faceElementList.toViewConst(); + + finiteElement::FiniteElementBase const & subRegionFE = *(m_faceTypeToFiniteElements.at( finiteElementName )); + + lambda( finiteElementName, subRegionFE, faceElemList, isStickState ); + } + } + +/** + * @brief Create the list of finite elements of the same type + * for each FaceElementSubRegion (Triangle or Quadrilateral) + * and of the same fracture state (Stick or Slip). + * @param domain The physical domain object + */ + void updateStickSlipList( DomainPartition const & domain ); + + /** + * @brief Create the list of finite elements of the same type + * for each FaceElementSubRegion (Triangle or Quadrilateral). + * @param domain The physical domain object + */ + void createFaceTypeList( DomainPartition const & domain ); + + /** + * @brief Create the list of elements belonging to CellElementSubRegion + * that are enriched with the bubble basis functions + * @param domain The physical domain object + */ + void createBubbleCellList( DomainPartition & domain ) const; + + /** + * @brief Compute rotation matrices and unit normal vectors for Face elements. + * @param domain The domain partition object + */ + void computeRotationMatrices( DomainPartition & domain ) const; + + +private: + /** + * @brief add the number of non-zero elements induced by the coupling between + * nodal and bubble displacement. + * @param domain the physical domain object + * @param dofManager degree-of-freedom manager associated with the linear system + * @param rowLengths the array containing the number of non-zero elements for each row + */ + void addCouplingNumNonzeros( DomainPartition & domain, + DofManager & dofManager, + arrayView1d< localIndex > const & rowLengths ) const; + + /** + * @Brief add the sparsity pattern induced by the coupling + * @param domain the physical domain object + * @param dofManager degree-of-freedom manager associated with the linear system + * @param pattern the sparsity pattern + */ + void addCouplingSparsityPattern( DomainPartition const & domain, + DofManager const & dofManager, + SparsityPatternView< globalIndex > const & pattern ) const; + + /// Finite element type to face element index map + std::map< string, std::map< string, array1d< localIndex > > > m_faceTypesToFaceElements; + + /// Finite element type to face element index map (stick mode) + std::map< string, std::map< string, array1d< localIndex > > > m_faceTypesToFaceElementsStick; + + /// Finite element type to face element index map (slip mode) + std::map< string, std::map< string, array1d< localIndex > > > m_faceTypesToFaceElementsSlip; + + /// Finite element type to finite element object map + std::map< string, std::unique_ptr< geos::finiteElement::FiniteElementBase > > m_faceTypeToFiniteElements; + + struct viewKeyStruct : ContactSolverBase::viewKeyStruct + { + constexpr static char const * rotationMatrixString() { return "rotationMatrix"; } + }; + +}; + +} /* namespace geos */ + +#endif /* GEOS_PHYSICSSOLVERS_CONTACT_SOLIDMECHANICSLAGRANGECONTACTBUBBLESTAB_HPP_ */ diff --git a/src/coreComponents/physicsSolvers/contact/SolidMechanicsPenaltyContact.cpp b/src/coreComponents/physicsSolvers/contact/SolidMechanicsPenaltyContact.cpp index 167c23fd1b9..04d82d10cb6 100644 --- a/src/coreComponents/physicsSolvers/contact/SolidMechanicsPenaltyContact.cpp +++ b/src/coreComponents/physicsSolvers/contact/SolidMechanicsPenaltyContact.cpp @@ -2,10 +2,11 @@ * ------------------------------------------------------------------------------------------------------------ * SPDX-License-Identifier: LGPL-2.1-only * - * Copyright (c) 2018-2020 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2020 The Board of Trustees of the Leland Stanford Junior University - * Copyright (c) 2018-2020 TotalEnergies - * Copyright (c) 2019- GEOSX Contributors + * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC + * Copyright (c) 2018-2024 TotalEnergies + * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University + * Copyright (c) 2023-2024 Chevron + * Copyright (c) 2019- GEOS/GEOSX Contributors * All rights reserved * * See top level LICENSE, COPYRIGHT, CONTRIBUTORS, NOTICE, and ACKNOWLEDGEMENTS files for details. @@ -159,7 +160,7 @@ void SolidMechanicsPenaltyContact::assembleContact( DomainPartition & domain, real64 const contactStiffness = m_contactPenaltyStiffness; arrayView1d< real64 > const area = subRegion.getElementArea(); - ArrayOfArraysView< localIndex const > const elemsToFaces = subRegion.faceList().toViewConst(); + arrayView2d< localIndex const > const elemsToFaces = subRegion.faceList().toViewConst(); // TODO: use parallel policy? forAll< serialPolicy >( subRegion.size(), [=] ( localIndex const kfe ) diff --git a/src/coreComponents/physicsSolvers/contact/SolidMechanicsPenaltyContact.hpp b/src/coreComponents/physicsSolvers/contact/SolidMechanicsPenaltyContact.hpp index 231d0b9159d..3b1c0da697c 100644 --- a/src/coreComponents/physicsSolvers/contact/SolidMechanicsPenaltyContact.hpp +++ b/src/coreComponents/physicsSolvers/contact/SolidMechanicsPenaltyContact.hpp @@ -2,10 +2,11 @@ * ------------------------------------------------------------------------------------------------------------ * SPDX-License-Identifier: LGPL-2.1-only * - * Copyright (c) 2018-2020 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2020 The Board of Trustees of the Leland Stanford Junior University - * Copyright (c) 2018-2020 TotalEnergies - * Copyright (c) 2019- GEOSX Contributors + * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC + * Copyright (c) 2018-2024 TotalEnergies + * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University + * Copyright (c) 2023-2024 Chevron + * Copyright (c) 2019- GEOS/GEOSX Contributors * All rights reserved * * See top level LICENSE, COPYRIGHT, CONTRIBUTORS, NOTICE, and ACKNOWLEDGEMENTS files for details. diff --git a/src/coreComponents/physicsSolvers/contact/SolidMechanicsALMKernels.hpp b/src/coreComponents/physicsSolvers/contact/kernels/SolidMechanicsALMKernels.hpp similarity index 88% rename from src/coreComponents/physicsSolvers/contact/SolidMechanicsALMKernels.hpp rename to src/coreComponents/physicsSolvers/contact/kernels/SolidMechanicsALMKernels.hpp index 9f5c53f5132..0154a36173d 100644 --- a/src/coreComponents/physicsSolvers/contact/SolidMechanicsALMKernels.hpp +++ b/src/coreComponents/physicsSolvers/contact/kernels/SolidMechanicsALMKernels.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -17,10 +17,12 @@ * @file SolidMechanicsALMKernels.hpp */ -#ifndef GEOS_PHYSICSSOLVERS_CONTACT_SOLIDMECHANICSALMKERNELS_HPP_ -#define GEOS_PHYSICSSOLVERS_CONTACT_SOLIDMECHANICSALMKERNELS_HPP_ +#ifndef GEOS_PHYSICSSOLVERS_CONTACT_KERNELS_SOLIDMECHANICSALMKERNELS_HPP_ +#define GEOS_PHYSICSSOLVERS_CONTACT_KERNELS_SOLIDMECHANICSALMKERNELS_HPP_ + +#include "SolidMechanicsConformingContactKernelsBase.hpp" +#include "mesh/MeshFields.hpp" -#include "SolidMechanicsALMKernelsBase.hpp" namespace geos { @@ -34,13 +36,13 @@ namespace solidMechanicsALMKernels template< typename CONSTITUTIVE_TYPE, typename FE_TYPE > class ALM : - public ALMKernelsBase< CONSTITUTIVE_TYPE, - FE_TYPE > + public solidMechanicsConformingContactKernels::ConformingContactKernelsBase< CONSTITUTIVE_TYPE, + FE_TYPE > { public: /// Alias for the base class. - using Base = ALMKernelsBase< CONSTITUTIVE_TYPE, - FE_TYPE >; + using Base = solidMechanicsConformingContactKernels::ConformingContactKernelsBase< CONSTITUTIVE_TYPE, + FE_TYPE >; /// Maximum number of nodes per element, which is equal to the maxNumTestSupportPointPerElem and /// maxNumTrialSupportPointPerElem by definition. @@ -49,6 +51,15 @@ class ALM : /// Compile time value for the number of quadrature points per element. static constexpr int numQuadraturePointsPerElem = FE_TYPE::numQuadraturePoints; + /// The number of displacement dofs per element. + static constexpr int numUdofs = Base::numUdofs; + + /// The number of bubble dofs per element. + static constexpr int numBdofs = Base::numBdofs; + + /// The number of lagrange multiplier dofs per element. + static constexpr int numTdofs = Base::numTdofs; + using Base::m_elemsToFaces; using Base::m_faceToNodes; using Base::m_finiteElementSpace; @@ -58,7 +69,6 @@ class ALM : using Base::m_dofRankOffset; using Base::m_X; using Base::m_rotationMatrix; - using Base::m_penalty; using Base::m_dispJump; using Base::m_oldDispJump; using Base::m_matrix; @@ -98,7 +108,9 @@ class ALM : inputDt, faceElementList ), m_traction( elementSubRegion.getField< fields::contact::traction >().toViewConst()), - m_symmetric( isSymmetric ) + m_symmetric( isSymmetric ), + m_penalty( elementSubRegion.getField< fields::contact::iterativePenalty >().toViewConst() ), + m_faceArea( elementSubRegion.getField< fields::elementArea >().toViewConst() ) {} //*************************************************************************** @@ -109,27 +121,18 @@ class ALM : struct StackVariables : public Base::StackVariables { - /// The number of displacement dofs per element. - static constexpr int numUdofs = numNodesPerElem * 3 * 2; - - /// The number of lagrange multiplier dofs per element. - static constexpr int numTdofs = 3; - - /// The number of bubble dofs per element. - static constexpr int numBdofs = 3*2; - public: GEOS_HOST_DEVICE StackVariables(): Base::StackVariables(), - dispEqnRowIndices{}, - dispColIndices{}, - bEqnRowIndices{}, - bColIndices{}, - localRu{}, - localRb{}, - localAutAtu{ {} }, + dispEqnRowIndices{}, + dispColIndices{}, + bEqnRowIndices{}, + bColIndices{}, + localRu{}, + localRb{}, + localAutAtu{ {} }, localAbtAtb{ {} }, localAbtAtu{ {} }, localAutAtb{ {} }, @@ -196,8 +199,6 @@ class ALM : { constexpr int shift = numNodesPerElem * 3; - constexpr int numTdofs = 3; - int permutation[numNodesPerElem]; m_finiteElementSpace.getPermutation( permutation ); @@ -251,10 +252,6 @@ class ALM : GEOS_UNUSED_VAR( k ); constexpr real64 zero = LvArray::NumericLimits< real64 >::epsilon; - constexpr int numUdofs = numNodesPerElem * 3 * 2; - - constexpr int numBdofs = 3*2; - real64 matRRtAtu[3][numUdofs], matDRtAtu[3][numUdofs]; real64 matRRtAtb[3][numBdofs], matDRtAtb[3][numBdofs]; @@ -276,6 +273,10 @@ class ALM : tractionNew, fractureState ); + // Divide localPenalty by area + real64 const fac = 1.0/m_faceArea[k]; + LvArray::tensorOps::scale< 3, 3 >( stack.localPenalty, fac ); + // transp(R) * Atu LvArray::tensorOps::Rij_eq_AkiBkj< 3, numUdofs, 3 >( matRRtAtu, stack.localRotationMatrix, stack.localAtu ); @@ -372,6 +373,10 @@ class ALM : bool const m_symmetric; + /// The array containing the penalty coefficients for each element. + arrayView2d< real64 const > const m_penalty; + + arrayView1d< real64 const > const m_faceArea; }; /// The factory used to construct the kernel. @@ -428,4 +433,4 @@ struct ComputeTractionKernel } // namespace geos -#endif /* GEOS_PHYSICSSOLVERS_CONTACT_SOLIDMECHANICSALMKERNELS_HPP_ */ +#endif /* GEOS_PHYSICSSOLVERS_CONTACT_KERNELS_SOLIDMECHANICSALMKERNELS_HPP_ */ diff --git a/src/coreComponents/physicsSolvers/contact/kernels/SolidMechanicsALMKernelsBase.hpp b/src/coreComponents/physicsSolvers/contact/kernels/SolidMechanicsALMKernelsBase.hpp new file mode 100644 index 00000000000..8ba57f7a05d --- /dev/null +++ b/src/coreComponents/physicsSolvers/contact/kernels/SolidMechanicsALMKernelsBase.hpp @@ -0,0 +1,171 @@ +/* + * ------------------------------------------------------------------------------------------------------------ + * SPDX-License-Identifier: LGPL-2.1-only + * + * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC + * Copyright (c) 2018-2024 TotalEnergies + * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University + * Copyright (c) 2023-2024 Chevron + * Copyright (c) 2019- GEOS/GEOSX Contributors + * All rights reserved + * + * See top level LICENSE, COPYRIGHT, CONTRIBUTORS, NOTICE, and ACKNOWLEDGEMENTS files for details. + * ------------------------------------------------------------------------------------------------------------ + */ + +/** + * @file SolidMechanicsALMKernelsBase.hpp + */ + +#ifndef GEOS_PHYSICSSOLVERS_CONTACT_KERNELS_SOLIDMECHANICSALMKERNELSBASE_HPP_ +#define GEOS_PHYSICSSOLVERS_CONTACT_KERNELS_SOLIDMECHANICSALMKERNELSBASE_HPP_ + +#include "finiteElement/kernelInterface/InterfaceKernelBase.hpp" +#include "SolidMechanicsConformingContactKernelsHelper.hpp" + +namespace geos +{ + +namespace solidMechanicsALMKernels +{ + +/** + * @brief A struct to check for constraint satisfaction + */ +struct ConstraintCheckKernel +{ + + /** + * @brief Launch the kernel function to check the constraint satisfaction + * @tparam POLICY the type of policy used in the kernel launch + * @tparam CONTACT_WRAPPER the type of contact wrapper doing the fracture traction updates + * @param[in] size the size of the subregion + * @param[in] traction the array containing the current traction + * @param[in] dispJump the array containing the displacement jump + * @param[in] deltaDispJump the array containing the delta displacement jump + * @param[in] normalTractionTolerance Check tolerance (normal traction) + * @param[in] normalDisplacementTolerance Check tolerance (compenetration) + * @param[in] slidingTolerance Check tolerance (sliding) + * @param[in] slidingCheckTolerance Check tolerance (if shear strass exceeds tauLim) + * @param[in] area interface element area + * @param[in] fractureState the array containing the fracture state + * @param[out] condConv the array containing the convergence flag: + * 0: Constraint conditions satisfied + * 1: Open + * 2: Compenetration + * 3: Slip exceeds sliding tolerance + * 4: Shear stress exceeds tauLim + */ + template< typename POLICY, typename CONTACT_WRAPPER > + static void + launch( localIndex const size, + CONTACT_WRAPPER const & contactWrapper, + arrayView1d< integer const > const & ghostRank, + arrayView2d< real64 > const & traction, + arrayView2d< real64 const > const & dispJump, + arrayView2d< real64 const > const & deltaDispJump, + arrayView1d< real64 const > const & normalTractionTolerance, + arrayView1d< real64 const > const & normalDisplacementTolerance, + arrayView1d< real64 const > const & slidingTolerance, + real64 const slidingCheckTolerance, + arrayView1d< integer const > const & fractureState, + arrayView1d< integer > const & condConv ) + { + + forAll< POLICY >( size, [=] GEOS_HOST_DEVICE ( localIndex const k ) + { + if( ghostRank[k] < 0 ) + { + contactWrapper.constraintCheck( dispJump[k], + deltaDispJump[k], + traction[k], + fractureState[k], + normalTractionTolerance[k], + normalDisplacementTolerance[k], + slidingTolerance[k], + slidingCheckTolerance, + condConv[k] ); + } + + } ); + } +}; + +/** + * @brief A struct to check for constraint satisfaction + */ +struct UpdateStateKernel +{ + + /** + * @brief Launch the kernel function to check the constraint satisfaction + * @tparam POLICY the type of policy used in the kernel launch + * @tparam CONTACT_WRAPPER the type of contact wrapper doing the fracture traction updates + * @param[in] size the size of the subregion + * @param[in] oldDispJump the array containing the old displacement jump (previous time step) + * @param[in] dispJump the array containing the displacement jump + * @param[in] penalty the array containing the penalty coefficients + * @param[in] symmetric flag to compute symmetric penalty matrix + * @param[in] normalTractionTolerance Check tolerance (normal traction) + * @param[in] traction the array containing the current traction + * @param[in] fractureState the array containing the fracture state + */ + template< typename POLICY, typename CONTACT_WRAPPER > + static void + launch( localIndex const size, + CONTACT_WRAPPER const & contactWrapper, + arrayView2d< real64 const > const & oldDispJump, + arrayView2d< real64 const > const & dispJump, + arrayView2d< real64 > const & penalty, + bool const symmetric, + arrayView1d< real64 const > const & normalTractionTolerance, + arrayView2d< real64 > const & traction, + arrayView1d< integer > const & fractureState ) + + { + forAll< POLICY >( size, [=] GEOS_HOST_DEVICE ( localIndex const k ) + { + + real64 const zero = LvArray::NumericLimits< real64 >::epsilon; + + real64 localPenalty[3][3]{}; + real64 localTractionNew[3]{}; + contactWrapper.updateTraction( oldDispJump[k], + dispJump[k], + penalty[k], + traction[k], + symmetric, + false, + normalTractionTolerance[k], + zero, + localPenalty, + localTractionNew, + fractureState[k] ); + + if( fractureState[k] == fields::contact::FractureState::Open ) + { + + LvArray::tensorOps::fill< 3 >( localTractionNew, 0.0 ); + } + else if( LvArray::math::abs( localTractionNew[ 0 ] ) < normalTractionTolerance[k] ) + { + LvArray::tensorOps::fill< 3 >( localTractionNew, 0.0 ); + fractureState[k] = fields::contact::FractureState::Slip; + } + + LvArray::tensorOps::copy< 3 >( traction[k], localTractionNew ); + penalty[k][2] = -localPenalty[1][1]; + penalty[k][3] = -localPenalty[2][2]; + penalty[k][4] = -localPenalty[1][2]; + + } ); + } + +}; + +} // namespace SolidMechanicsALMKernels + +} // namespace geos + + +#endif /* GEOS_PHYSICSSOLVERS_CONTACT_KERNELS_SOLIDMECHANICSALMKERNELSBASE_HPP_ */ diff --git a/src/coreComponents/physicsSolvers/contact/SolidMechanicsALMSimultaneousKernels.hpp b/src/coreComponents/physicsSolvers/contact/kernels/SolidMechanicsALMSimultaneousKernels.hpp similarity index 86% rename from src/coreComponents/physicsSolvers/contact/SolidMechanicsALMSimultaneousKernels.hpp rename to src/coreComponents/physicsSolvers/contact/kernels/SolidMechanicsALMSimultaneousKernels.hpp index f9cd307b6fe..07f526cdece 100644 --- a/src/coreComponents/physicsSolvers/contact/SolidMechanicsALMSimultaneousKernels.hpp +++ b/src/coreComponents/physicsSolvers/contact/kernels/SolidMechanicsALMSimultaneousKernels.hpp @@ -2,10 +2,11 @@ * ------------------------------------------------------------------------------------------------------------ * SPDX-License-Identifier: LGPL-2.1-only * - * Copyright (c) 2018-2020 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2020 The Board of Trustees of the Leland Stanford Junior University - * Copyright (c) 2018-2020 Total, S.A - * Copyright (c) 2019- GEOSX Contributors + * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC + * Copyright (c) 2018-2024 TotalEnergies + * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University + * Copyright (c) 2023-2024 Chevron + * Copyright (c) 2019- GEOS/GEOSX Contributors * All rights reserved * * See top level LICENSE, COPYRIGHT, CONTRIBUTORS, NOTICE, and ACKNOWLEDGEMENTS files for details. @@ -16,10 +17,11 @@ * @file SolidMechanicsALMSimultaneousKernels.hpp */ -#ifndef GEOS_PHYSICSSOLVERS_CONTACT_SOLIDMECHANICSALMSIMULTANEOUSKERNELS_HPP_ -#define GEOS_PHYSICSSOLVERS_CONTACT_SOLIDMECHANICSALMSIMULTANEOUSKERNELS_HPP_ +#ifndef GEOS_PHYSICSSOLVERS_CONTACT_KERNELS_SOLIDMECHANICSALMSIMULTANEOUSKERNELS_HPP_ +#define GEOS_PHYSICSSOLVERS_CONTACT_KERNELS_SOLIDMECHANICSALMSIMULTANEOUSKERNELS_HPP_ -#include "SolidMechanicsALMKernelsBase.hpp" +#include "SolidMechanicsConformingContactKernelsBase.hpp" +#include "mesh/MeshFields.hpp" namespace geos { @@ -33,13 +35,13 @@ namespace solidMechanicsALMKernels template< typename CONSTITUTIVE_TYPE, typename FE_TYPE > class ALMSimultaneous : - public ALMKernelsBase< CONSTITUTIVE_TYPE, - FE_TYPE > + public solidMechanicsConformingContactKernels::ConformingContactKernelsBase< CONSTITUTIVE_TYPE, + FE_TYPE > { public: /// Alias for the base class. - using Base = ALMKernelsBase< CONSTITUTIVE_TYPE, - FE_TYPE >; + using Base = solidMechanicsConformingContactKernels::ConformingContactKernelsBase< CONSTITUTIVE_TYPE, + FE_TYPE >; /// Maximum number of nodes per element, which is equal to the maxNumTestSupportPointPerElem and /// maxNumTrialSupportPointPerElem by definition. @@ -48,6 +50,15 @@ class ALMSimultaneous : /// Compile time value for the number of quadrature points per element. static constexpr int numQuadraturePointsPerElem = FE_TYPE::numQuadraturePoints; + /// The number of displacement dofs per element. + static constexpr int numUdofs = Base::numUdofs; + + /// The number of bubble dofs per element. + static constexpr int numBdofs = Base::numBdofs; + + /// The number of lagrange multiplier dofs per element. + static constexpr int numTdofs = Base::numTdofs; + using Base::m_elemsToFaces; using Base::m_faceToNodes; using Base::m_finiteElementSpace; @@ -56,7 +67,6 @@ class ALMSimultaneous : using Base::m_dofRankOffset; using Base::m_X; using Base::m_rotationMatrix; - using Base::m_penalty; using Base::m_dispJump; using Base::m_oldDispJump; using Base::m_matrix; @@ -94,7 +104,9 @@ class ALMSimultaneous : inputRhs, inputDt, faceElementList ), - m_traction( elementSubRegion.getField< fields::contact::traction >().toViewConst()) + m_traction( elementSubRegion.getField< fields::contact::traction >().toViewConst()), + m_penalty( elementSubRegion.getField< fields::contact::iterativePenalty >().toViewConst() ), + m_faceArea( elementSubRegion.getField< fields::elementArea >().toViewConst() ) {} //*************************************************************************** @@ -192,8 +204,6 @@ class ALMSimultaneous : { constexpr int shift = numNodesPerElem * 3; - constexpr int numTdofs = 3; - int permutation[numNodesPerElem]; m_finiteElementSpace.getPermutation( permutation ); @@ -255,10 +265,6 @@ class ALMSimultaneous : GEOS_UNUSED_VAR( k ); //constexpr real64 zero = 1.e-10; - constexpr int numUdofs = numNodesPerElem * 3 * 2; - - constexpr int numBdofs = 3*2; - real64 matRRtAtu[3][numUdofs], matDRtAtu[3][numUdofs]; real64 matRRtAtb[3][numBdofs], matDRtAtb[3][numBdofs]; @@ -271,8 +277,8 @@ class ALMSimultaneous : // Compute the trial traction real64 dispJump[ 3 ]; dispJump[0] = stack.dispJumpLocal[0]; - dispJump[1] = stack.dispJumpLocal[1] - stack.oldDispJumpLocal[1]; - dispJump[2] = stack.dispJumpLocal[2] - stack.oldDispJumpLocal[2]; + dispJump[1] = ( stack.dispJumpLocal[1] - stack.oldDispJumpLocal[1] ); + dispJump[2] = ( stack.dispJumpLocal[2] - stack.oldDispJumpLocal[2] ); LvArray::tensorOps::scaledCopy< 3 >( tractionNew, stack.tLocal, -1.0 ); LvArray::tensorOps::Ri_add_AijBj< 3, 3 >( tractionNew, stack.localPenalty, dispJump ); @@ -302,6 +308,10 @@ class ALMSimultaneous : LvArray::tensorOps::Rij_eq_AikBkj< 3, numBdofs, 3 >( matDRtAtb, stack.localPenalty, matRRtAtb ); + real64 const fac = 1.0 / m_faceArea[k]; + LvArray::tensorOps::scale< 3, numUdofs >( matDRtAtu, fac ); + LvArray::tensorOps::scale< 3, numBdofs >( matDRtAtb, fac ); + // R*RtAtu LvArray::tensorOps::Rij_eq_AikBkj< 3, numUdofs, 3 >( matRRtAtu, stack.localRotationMatrix, matDRtAtu ); @@ -324,6 +334,7 @@ class ALMSimultaneous : LvArray::tensorOps::Rij_eq_AkiBkj< numUdofs, numBdofs, 3 >( stack.localAutAtb, stack.localAtu, matRRtAtb ); + // Compute the local residuals LvArray::tensorOps::scaledAdd< numUdofs >( stack.localRu, tractionR, 1 ); @@ -377,6 +388,11 @@ class ALMSimultaneous : protected: arrayView2d< real64 const > const m_traction; + + /// The array containing the penalty coefficients for each element. + arrayView2d< real64 const > const m_penalty; + + arrayView1d< real64 const > const m_faceArea; }; /// The factory used to construct the kernel. @@ -418,10 +434,10 @@ struct ComputeTractionSimultaneousKernel forAll< POLICY >( size, [=] GEOS_HOST_DEVICE ( localIndex const kfe ) { tractionNew[kfe][0] = traction[kfe][0] + penalty[kfe][0] * dispJump[kfe][0]; - tractionNew[kfe][1] = traction[kfe][1] + penalty[kfe][2] * deltaDispJump[kfe][1] + - penalty[kfe][4] * deltaDispJump[kfe][2]; - tractionNew[kfe][2] = traction[kfe][2] + penalty[kfe][3] * deltaDispJump[kfe][2] + - penalty[kfe][4] * deltaDispJump[kfe][1]; + tractionNew[kfe][1] = traction[kfe][1] + ( penalty[kfe][2] * deltaDispJump[kfe][1]+ + penalty[kfe][4] * deltaDispJump[kfe][2] ); + tractionNew[kfe][2] = traction[kfe][2] + ( penalty[kfe][3] * deltaDispJump[kfe][2] + + penalty[kfe][4] * deltaDispJump[kfe][1] ); } ); } @@ -432,4 +448,4 @@ struct ComputeTractionSimultaneousKernel } // namespace geos -#endif /* GEOS_PHYSICSSOLVERS_CONTACT_SOLIDMECHANICSALMKERNELS_HPP_ */ +#endif /* GEOS_PHYSICSSOLVERS_CONTACT_KERNELS_SOLIDMECHANICSALMKERNELS_HPP_ */ diff --git a/src/coreComponents/physicsSolvers/contact/SolidMechanicsALMKernelsBase.hpp b/src/coreComponents/physicsSolvers/contact/kernels/SolidMechanicsConformingContactKernelsBase.hpp similarity index 51% rename from src/coreComponents/physicsSolvers/contact/SolidMechanicsALMKernelsBase.hpp rename to src/coreComponents/physicsSolvers/contact/kernels/SolidMechanicsConformingContactKernelsBase.hpp index 4f3504e3d5f..dc5de425b0d 100644 --- a/src/coreComponents/physicsSolvers/contact/SolidMechanicsALMKernelsBase.hpp +++ b/src/coreComponents/physicsSolvers/contact/kernels/SolidMechanicsConformingContactKernelsBase.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -17,16 +17,17 @@ * @file SolidMechanicsALMKernelsBase.hpp */ -#ifndef GEOS_PHYSICSSOLVERS_CONTACT_SOLIDMECHANICSALMKERNELSBASE_HPP_ -#define GEOS_PHYSICSSOLVERS_CONTACT_SOLIDMECHANICSALMKERNELSBASE_HPP_ +#ifndef GEOS_PHYSICSSOLVERS_CONTACT_KERNELS_SOLIDMECHANICSCONFORMINGCONTACTKERNELSBASE_HPP_ +#define GEOS_PHYSICSSOLVERS_CONTACT_KERNELS_SOLIDMECHANICSCONFORMINGCONTACTKERNELSBASE_HPP_ #include "finiteElement/kernelInterface/InterfaceKernelBase.hpp" -#include "SolidMechanicsALMKernelsHelper.hpp" +#include "SolidMechanicsConformingContactKernelsHelper.hpp" +#include "codingUtilities/Utilities.hpp" namespace geos { -namespace solidMechanicsALMKernels +namespace solidMechanicsConformingContactKernels { /** @@ -36,7 +37,7 @@ namespace solidMechanicsALMKernels */ template< typename CONSTITUTIVE_TYPE, typename FE_TYPE > -class ALMKernelsBase : +class ConformingContactKernelsBase : public finiteElement::InterfaceKernelBase< CONSTITUTIVE_TYPE, FE_TYPE, 3, 3 > @@ -54,6 +55,15 @@ class ALMKernelsBase : /// Compile time value for the number of quadrature points per element. static constexpr int numQuadraturePointsPerElem = FE_TYPE::numQuadraturePoints; + /// The number of displacement dofs per element. + static constexpr int numUdofs = numNodesPerElem * 3 * 2; + + /// The number of lagrange multiplier dofs per element. + static constexpr int numTdofs = 3; + + /// The number of bubble dofs per element. + static constexpr int numBdofs = 3*2; + using Base::m_dofNumber; using Base::m_dofRankOffset; using Base::m_finiteElementSpace; @@ -64,20 +74,20 @@ class ALMKernelsBase : * @brief Constructor * @copydoc geos::finiteElement::InterfaceKernelBase::InterfaceKernelBase */ - ALMKernelsBase( NodeManager const & nodeManager, - EdgeManager const & edgeManager, - FaceManager const & faceManager, - localIndex const targetRegionIndex, - FaceElementSubRegion & elementSubRegion, - FE_TYPE const & finiteElementSpace, - CONSTITUTIVE_TYPE & inputConstitutiveType, - arrayView1d< globalIndex const > const uDofNumber, - arrayView1d< globalIndex const > const bDofNumber, - globalIndex const rankOffset, - CRSMatrixView< real64, globalIndex const > const inputMatrix, - arrayView1d< real64 > const inputRhs, - real64 const inputDt, - arrayView1d< localIndex const > const & faceElementList ): + ConformingContactKernelsBase( NodeManager const & nodeManager, + EdgeManager const & edgeManager, + FaceManager const & faceManager, + localIndex const targetRegionIndex, + FaceElementSubRegion & elementSubRegion, + FE_TYPE const & finiteElementSpace, + CONSTITUTIVE_TYPE & inputConstitutiveType, + arrayView1d< globalIndex const > const uDofNumber, + arrayView1d< globalIndex const > const bDofNumber, + globalIndex const rankOffset, + CRSMatrixView< real64, globalIndex const > const inputMatrix, + arrayView1d< real64 > const inputRhs, + real64 const inputDt, + arrayView1d< localIndex const > const & faceElementList ): Base( nodeManager, edgeManager, faceManager, @@ -97,8 +107,7 @@ class ALMKernelsBase : m_bDofNumber( bDofNumber ), m_rotationMatrix( elementSubRegion.getField< fields::contact::rotationMatrix >().toViewConst()), m_dispJump( elementSubRegion.getField< fields::contact::dispJump >().toView() ), - m_oldDispJump( elementSubRegion.getField< fields::contact::oldDispJump >().toViewConst() ), - m_penalty( elementSubRegion.getField< fields::contact::iterativePenalty >().toViewConst() ) + m_oldDispJump( elementSubRegion.getField< fields::contact::oldDispJump >().toViewConst() ) {} //*************************************************************************** @@ -107,14 +116,7 @@ class ALMKernelsBase : */ struct StackVariables { - /// The number of displacement dofs per element. - static constexpr int numUdofs = numNodesPerElem * 3 * 2; - - /// The number of lagrange multiplier dofs per element. - static constexpr int numTdofs = 3; - /// The number of bubble dofs per element. - static constexpr int numBdofs = 3*2; public: @@ -191,20 +193,16 @@ class ALMKernelsBase : } //END_kernelLauncher + template< typename LAMBDA = NoOpFunc > GEOS_HOST_DEVICE inline void quadraturePointKernel( localIndex const k, localIndex const q, - StackVariables & stack ) const + StackVariables & stack, + LAMBDA && lambda = NoOpFunc{} ) const { GEOS_UNUSED_VAR( k ); - constexpr int numUdofs = numNodesPerElem * 3 * 2; - - constexpr int numTdofs = 3; - - constexpr int numBdofs = 3*2; - real64 const detJ = m_finiteElementSpace.transformedQuadratureWeight( q, stack.X ); real64 N[ numNodesPerElem ]; @@ -220,19 +218,21 @@ class ALMKernelsBase : m_finiteElementSpace.getPermutation( permutation ); // TODO: Try using bilinear utilities to perform these two operations - solidMechanicsALMKernelsHelper::accumulateAtuLocalOperator< numTdofs, - numUdofs, - numNodesPerElem >( stack.localAtu, - N, - permutation, + solidMechanicsConformingContactKernelsHelper::accumulateAtuLocalOperator< numTdofs, + numUdofs, + numNodesPerElem >( stack.localAtu, + N, + permutation, + detJ ); + + solidMechanicsConformingContactKernelsHelper::accumulateAtuLocalOperator< numTdofs, + numBdofs, + 1 >( stack.localAtb, + BubbleN, + bperm, detJ ); - solidMechanicsALMKernelsHelper::accumulateAtuLocalOperator< numTdofs, - numBdofs, - 1 >( stack.localAtb, - BubbleN, - bperm, - detJ ); + lambda( detJ ); } protected: @@ -244,7 +244,7 @@ class ALMKernelsBase : ArrayOfArraysView< localIndex const > const m_faceToNodes; /// The array of array containing the element to face map. - ArrayOfArraysView< localIndex const > const m_elemsToFaces; + arrayView2d< localIndex const > const m_elemsToFaces; /// The array containing the list of face element of the same type. arrayView1d< localIndex const > const m_faceElementList; @@ -260,12 +260,9 @@ class ALMKernelsBase : /// The array containing the displacement jump of previus time step. arrayView2d< real64 const > const m_oldDispJump; - - /// The array containing the penalty coefficients for each element. - arrayView2d< real64 const > const m_penalty; - }; + /** * @brief A struct to compute rotation matrices */ @@ -284,8 +281,11 @@ struct ComputeRotationMatricesKernel static void launch( localIndex const size, arrayView2d< real64 const > const & faceNormal, - ArrayOfArraysView< localIndex const > const & elemsToFaces, - arrayView3d< real64 > const & rotationMatrix ) + arrayView2d< localIndex const > const & elemsToFaces, + arrayView3d< real64 > const & rotationMatrix, + arrayView2d< real64 > const & unitNormal, + arrayView2d< real64 > const & unitTangent1, + arrayView2d< real64 > const & unitTangent2 ) { forAll< POLICY >( size, [=] GEOS_HOST_DEVICE ( localIndex const k ) @@ -302,149 +302,26 @@ struct ComputeRotationMatricesKernel LvArray::tensorOps::normalize< 3 >( Nbar ); computationalGeometry::RotationMatrix_3D( Nbar, rotationMatrix[k] ); - } ); - } + real64 const columnVector1[3] = { rotationMatrix[k][ 0 ][ 1 ], + rotationMatrix[k][ 1 ][ 1 ], + rotationMatrix[k][ 2 ][ 1 ] }; -}; - -/** - * @brief A struct to check for constraint satisfaction - */ -struct ConstraintCheckKernel -{ - - /** - * @brief Launch the kernel function to check the constraint satisfaction - * @tparam POLICY the type of policy used in the kernel launch - * @tparam CONTACT_WRAPPER the type of contact wrapper doing the fracture traction updates - * @param[in] size the size of the subregion - * @param[in] traction the array containing the current traction - * @param[in] dispJump the array containing the displacement jump - * @param[in] deltaDispJump the array containing the delta displacement jump - * @param[in] normalTractionTolerance Check tolerance (normal traction) - * @param[in] normalDisplacementTolerance Check tolerance (compenetration) - * @param[in] slidingTolerance Check tolerance (sliding) - * @param[in] slidingCheckTolerance Check tolerance (if shear strass exceeds tauLim) - * @param[in] area interface element area - * @param[in] fractureState the array containing the fracture state - * @param[out] condConv the array containing the convergence flag: - * 0: Constraint conditions satisfied - * 1: Open - * 2: Compenetration - * 3: Slip exceeds sliding tolerance - * 4: Shear stress exceeds tauLim - */ - template< typename POLICY, typename CONTACT_WRAPPER > - static void - launch( localIndex const size, - CONTACT_WRAPPER const & contactWrapper, - arrayView1d< integer const > const & ghostRank, - arrayView2d< real64 > const & traction, - arrayView2d< real64 const > const & dispJump, - arrayView2d< real64 const > const & deltaDispJump, - arrayView1d< real64 const > const & normalTractionTolerance, - arrayView1d< real64 const > const & normalDisplacementTolerance, - arrayView1d< real64 const > const & slidingTolerance, - real64 const slidingCheckTolerance, - arrayView1d< real64 const > const & area, - arrayView1d< integer const > const & fractureState, - arrayView1d< integer > const & condConv ) - { - - forAll< POLICY >( size, [=] GEOS_HOST_DEVICE ( localIndex const k ) - { - if( ghostRank[k] < 0 ) - { - contactWrapper.constraintCheck( dispJump[k], - deltaDispJump[k], - traction[k], - fractureState[k], - normalTractionTolerance[k], - normalDisplacementTolerance[k]*area[k], - slidingTolerance[k]*area[k], - slidingCheckTolerance, - condConv[k] ); - } - - } ); - } -}; - -/** - * @brief A struct to check for constraint satisfaction - */ -struct UpdateStateKernel -{ - - /** - * @brief Launch the kernel function to check the constraint satisfaction - * @tparam POLICY the type of policy used in the kernel launch - * @tparam CONTACT_WRAPPER the type of contact wrapper doing the fracture traction updates - * @param[in] size the size of the subregion - * @param[in] oldDispJump the array containing the old displacement jump (previous time step) - * @param[in] dispJump the array containing the displacement jump - * @param[in] penalty the array containing the penalty coefficients - * @param[in] symmetric flag to compute symmetric penalty matrix - * @param[in] normalTractionTolerance Check tolerance (normal traction) - * @param[in] traction the array containing the current traction - * @param[in] fractureState the array containing the fracture state - */ - template< typename POLICY, typename CONTACT_WRAPPER > - static void - launch( localIndex const size, - CONTACT_WRAPPER const & contactWrapper, - arrayView2d< real64 const > const & oldDispJump, - arrayView2d< real64 const > const & dispJump, - arrayView2d< real64 > const & penalty, - bool const symmetric, - arrayView1d< real64 const > const & normalTractionTolerance, - arrayView2d< real64 > const & traction, - arrayView1d< integer > const & fractureState ) - - { - forAll< POLICY >( size, [=] GEOS_HOST_DEVICE ( localIndex const k ) - { - - real64 const zero = LvArray::NumericLimits< real64 >::epsilon; - - real64 localPenalty[3][3]{}; - real64 localTractionNew[3]{}; - contactWrapper.updateTraction( oldDispJump[k], - dispJump[k], - penalty[k], - traction[k], - symmetric, - false, - normalTractionTolerance[k], - zero, - localPenalty, - localTractionNew, - fractureState[k] ); - - if( fractureState[k] == fields::contact::FractureState::Open ) - { - - LvArray::tensorOps::fill< 3 >( localTractionNew, 0.0 ); - } - else if( LvArray::math::abs( localTractionNew[ 0 ] ) < normalTractionTolerance[k] ) - { - LvArray::tensorOps::fill< 3 >( localTractionNew, 0.0 ); - fractureState[k] = fields::contact::FractureState::Slip; - } - - LvArray::tensorOps::copy< 3 >( traction[k], localTractionNew ); - penalty[k][2] = -localPenalty[1][1]; - penalty[k][3] = -localPenalty[2][2]; - penalty[k][4] = -localPenalty[1][2]; + real64 const columnVector2[3] = { rotationMatrix[k][ 0 ][ 2 ], + rotationMatrix[k][ 1 ][ 2 ], + rotationMatrix[k][ 2 ][ 2 ] }; + LvArray::tensorOps::copy< 3 >( unitNormal[k], Nbar ); + LvArray::tensorOps::copy< 3 >( unitTangent1[k], columnVector1 ); + LvArray::tensorOps::copy< 3 >( unitTangent2[k], columnVector2 ); } ); } }; -} // namespace SolidMechanicsALMKernels + +} // namespace solidMechanicsConformingContactKernels } // namespace geos -#endif /* GEOS_PHYSICSSOLVERS_CONTACT_SOLIDMECHANICSALMKERNELSBASE_HPP_ */ +#endif /* GEOS_PHYSICSSOLVERS_CONTACT_KERNELS_SOLIDMECHANICSCONFORMINGCONTACTKERNELSBASE_HPP_ */ diff --git a/src/coreComponents/physicsSolvers/contact/SolidMechanicsALMKernelsHelper.hpp b/src/coreComponents/physicsSolvers/contact/kernels/SolidMechanicsConformingContactKernelsHelper.hpp similarity index 80% rename from src/coreComponents/physicsSolvers/contact/SolidMechanicsALMKernelsHelper.hpp rename to src/coreComponents/physicsSolvers/contact/kernels/SolidMechanicsConformingContactKernelsHelper.hpp index 02250a60170..ac79e062648 100644 --- a/src/coreComponents/physicsSolvers/contact/SolidMechanicsALMKernelsHelper.hpp +++ b/src/coreComponents/physicsSolvers/contact/kernels/SolidMechanicsConformingContactKernelsHelper.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -15,18 +15,18 @@ /** - * @file SolidMechanicsALMKernelsHelper.hpp + * @file SolidMechanicsConformingContactKernelsHelper.hpp */ -#ifndef GEOS_PHYSICSSOLVERS_CONTACT_SOLIDMECHANICSALMKERNELSHELPER_HPP_ -#define GEOS_PHYSICSSOLVERS_CONTACT_SOLIDMECHANICSALMKERNELSHELPER_HPP_ +#ifndef GEOS_PHYSICSSOLVERS_CONTACT_KERNELS_SOLIDMECHANICSCONFORMINGCONTACTKERNELSHELPER_HPP_ +#define GEOS_PHYSICSSOLVERS_CONTACT_KERNELS_SOLIDMECHANICSCONFORMINGCONTACTKERNELSHELPER_HPP_ #include "common/GeosxMacros.hpp" namespace geos { -namespace solidMechanicsALMKernelsHelper +namespace solidMechanicsConformingContactKernelsHelper { template< int I_SIZE, @@ -76,8 +76,8 @@ void assembleStrainOperator( real64 ( & strainMatrix )[I_SIZE][J_SIZE], } } -} // solidMechanicsALMKernelsHelper +} // solidMechanicsConformingContactKernelsHelper } // geos -#endif /* GEOS_PHYSICSSOLVERS_CONTACT_SOLIDMECHANICSALMKERNELSHELPER_HPP_ */ +#endif /* GEOS_PHYSICSSOLVERS_CONTACT_KERNELS_SOLIDMECHANICSCONFORMINGCONTACTKERNELSHELPER_HPP_ */ diff --git a/src/coreComponents/physicsSolvers/contact/SolidMechanicsALMBubbleKernels.hpp b/src/coreComponents/physicsSolvers/contact/kernels/SolidMechanicsContactFaceBubbleKernels.hpp similarity index 85% rename from src/coreComponents/physicsSolvers/contact/SolidMechanicsALMBubbleKernels.hpp rename to src/coreComponents/physicsSolvers/contact/kernels/SolidMechanicsContactFaceBubbleKernels.hpp index 4b76b7a4a3d..46e8034c581 100644 --- a/src/coreComponents/physicsSolvers/contact/SolidMechanicsALMBubbleKernels.hpp +++ b/src/coreComponents/physicsSolvers/contact/kernels/SolidMechanicsContactFaceBubbleKernels.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -14,14 +14,14 @@ */ /** - * @file SolidMechanicsALMBubbleKernels.hpp + * @file SolidMechanicsContactFaceBubbleKernels.hpp */ -#ifndef GEOS_PHYSICSSOLVERS_CONTACT_SOLIDMECHANICSALMBUBBLEKERNELS_HPP_ -#define GEOS_PHYSICSSOLVERS_CONTACT_SOLIDMECHANICSALMBUBBLEKERNELS_HPP_ +#ifndef GEOS_PHYSICSSOLVERS_CONTACT_KERNELS_SOLIDMECHANICSCONTACTFACEBUBBLEKERNELS_HPP_ +#define GEOS_PHYSICSSOLVERS_CONTACT_KERNELS_SOLIDMECHANICSCONTACTFACEBUBBLEKERNELS_HPP_ #include "physicsSolvers/solidMechanics/kernels/ImplicitSmallStrainQuasiStatic.hpp" -#include "SolidMechanicsALMKernelsHelper.hpp" +#include "SolidMechanicsConformingContactKernelsHelper.hpp" // TODO: Use the bilinear form utilities //#include "finiteElement/BilinearFormUtilities.hpp" @@ -29,7 +29,7 @@ namespace geos { -namespace solidMechanicsALMKernels +namespace solidMechanicsConformingContactKernels { /** @@ -40,7 +40,7 @@ namespace solidMechanicsALMKernels template< typename SUBREGION_TYPE, typename CONSTITUTIVE_TYPE, typename FE_TYPE > -class ALMBubbleKernels : +class FaceBubbleKernels : public solidMechanicsLagrangianFEMKernels::ImplicitSmallStrainQuasiStatic< SUBREGION_TYPE, CONSTITUTIVE_TYPE, FE_TYPE > @@ -75,20 +75,20 @@ class ALMBubbleKernels : * @brief Constructor * @copydoc geos::finiteElement::ImplicitKernelBase::ImplicitKernelBase */ - ALMBubbleKernels( NodeManager const & nodeManager, - EdgeManager const & edgeManager, - FaceManager const & faceManager, - localIndex const targetRegionIndex, - SUBREGION_TYPE const & elementSubRegion, - FE_TYPE const & finiteElementSpace, - CONSTITUTIVE_TYPE & inputConstitutiveType, - arrayView1d< globalIndex const > const uDofNumber, - arrayView1d< globalIndex const > const bDofNumber, - globalIndex const rankOffset, - CRSMatrixView< real64, globalIndex const > const inputMatrix, - arrayView1d< real64 > const inputRhs, - real64 const inputDt, - real64 const (&inputGravityVector)[3] ): + FaceBubbleKernels( NodeManager const & nodeManager, + EdgeManager const & edgeManager, + FaceManager const & faceManager, + localIndex const targetRegionIndex, + SUBREGION_TYPE const & elementSubRegion, + FE_TYPE const & finiteElementSpace, + CONSTITUTIVE_TYPE & inputConstitutiveType, + arrayView1d< globalIndex const > const uDofNumber, + arrayView1d< globalIndex const > const bDofNumber, + globalIndex const rankOffset, + CRSMatrixView< real64, globalIndex const > const inputMatrix, + arrayView1d< real64 > const inputRhs, + real64 const inputDt, + real64 const (&inputGravityVector)[3] ): Base( nodeManager, edgeManager, faceManager, @@ -280,10 +280,10 @@ class ALMBubbleKernels : m_constitutiveUpdate.getElasticStiffness( k, q, stack.constitutiveStiffness ); real64 strainMatrix[6][nUdof]; - solidMechanicsALMKernelsHelper::assembleStrainOperator< 6, nUdof, numNodesPerElem >( strainMatrix, dNdX ); + solidMechanicsConformingContactKernelsHelper::assembleStrainOperator< 6, nUdof, numNodesPerElem >( strainMatrix, dNdX ); real64 strainBubbleMatrix[6][nBubbleUdof]; - solidMechanicsALMKernelsHelper::assembleStrainOperator< 6, nBubbleUdof, numFacesPerElem >( strainBubbleMatrix, dBubbleNdX ); + solidMechanicsConformingContactKernelsHelper::assembleStrainOperator< 6, nBubbleUdof, numFacesPerElem >( strainBubbleMatrix, dBubbleNdX ); // TODO: It would be nice use BilinearFormUtilities::compute @@ -425,18 +425,18 @@ class ALMBubbleKernels : }; /// The factory used to construct a QuasiStatic kernel. -using ALMBubbleFactory = finiteElement::KernelFactory< ALMBubbleKernels, - arrayView1d< globalIndex const > const, - arrayView1d< globalIndex const > const, - globalIndex const, - CRSMatrixView< real64, globalIndex const > const, - arrayView1d< real64 > const, - real64 const, - real64 const (&) [3] >; +using FaceBubbleFactory = finiteElement::KernelFactory< FaceBubbleKernels, + arrayView1d< globalIndex const > const, + arrayView1d< globalIndex const > const, + globalIndex const, + CRSMatrixView< real64, globalIndex const > const, + arrayView1d< real64 > const, + real64 const, + real64 const (&) [3] >; -} // namespace SolidMechanicsALMBubbleKernels +} // namespace SolidMechanicsContactFaceBubbleKernels } // namespace geos -#endif /* GEOS_PHYSICSSOLVERS_CONTACT_SOLIDMECHANICSALMBUBBLEKERNELS_HPP_ */ +#endif /* GEOS_PHYSICSSOLVERS_CONTACT_KERNELS_SOLIDMECHANICSCONTACTFACEBUBBLEKERNELS_HPP_ */ diff --git a/src/coreComponents/physicsSolvers/contact/SolidMechanicsALMJumpUpdateKernels.hpp b/src/coreComponents/physicsSolvers/contact/kernels/SolidMechanicsDisplacementJumpUpdateKernels.hpp similarity index 70% rename from src/coreComponents/physicsSolvers/contact/SolidMechanicsALMJumpUpdateKernels.hpp rename to src/coreComponents/physicsSolvers/contact/kernels/SolidMechanicsDisplacementJumpUpdateKernels.hpp index 1f434b3a13e..c06b00ff819 100644 --- a/src/coreComponents/physicsSolvers/contact/SolidMechanicsALMJumpUpdateKernels.hpp +++ b/src/coreComponents/physicsSolvers/contact/kernels/SolidMechanicsDisplacementJumpUpdateKernels.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -17,15 +17,16 @@ * @file SolidMechanicsALMUpdateKernels.hpp */ -#ifndef GEOS_PHYSICSSOLVERS_CONTACT_SOLIDMECHANICSALMUPDATEKERNELS_HPP_ -#define GEOS_PHYSICSSOLVERS_CONTACT_SOLIDMECHANICSALMUPDATEKERNELS_HPP_ +#ifndef GEOS_PHYSICSSOLVERS_CONTACT_KERNELS_SOLIDMECHANICSDISPLACEMENTJUPDATEKERNELS_HPP_ +#define GEOS_PHYSICSSOLVERS_CONTACT_KERNELS_SOLIDMECHANICSDISPLACEMENTJUPDATEKERNELS_HPP_ -#include "SolidMechanicsALMKernelsBase.hpp" +#include "SolidMechanicsConformingContactKernelsBase.hpp" +#include "mesh/MeshFields.hpp" namespace geos { -namespace solidMechanicsALMKernels +namespace solidMechanicsConformingContactKernels { /** @@ -33,19 +34,28 @@ namespace solidMechanicsALMKernels */ template< typename CONSTITUTIVE_TYPE, typename FE_TYPE > -class ALMJumpUpdate : - public ALMKernelsBase< CONSTITUTIVE_TYPE, - FE_TYPE > +class DispJumpUpdate : + public ConformingContactKernelsBase< CONSTITUTIVE_TYPE, + FE_TYPE > { public: /// Alias for the base class; - using Base = ALMKernelsBase< CONSTITUTIVE_TYPE, - FE_TYPE >; + using Base = ConformingContactKernelsBase< CONSTITUTIVE_TYPE, + FE_TYPE >; /// Maximum number of nodes per element, which is equal to the maxNumTestSupportPointPerElem and /// maxNumTrialSupportPointPerElem by definition. static constexpr int numNodesPerElem = Base::maxNumTestSupportPointsPerElem; + /// The number of displacement dofs per element. + static constexpr int numUdofs = Base::numUdofs; + + /// The number of bubble dofs per element. + static constexpr int numBdofs = Base::numBdofs; + + /// The number of lagrange multiplier dofs per element. + static constexpr int numTdofs = Base::numTdofs; + using Base::m_X; using Base::m_finiteElementSpace; using Base::m_dofNumber; @@ -59,20 +69,20 @@ class ALMJumpUpdate : * @brief Constructor * @copydoc geos::finiteElement::InterfaceKernelBase::InterfaceKernelBase */ - ALMJumpUpdate( NodeManager const & nodeManager, - EdgeManager const & edgeManager, - FaceManager const & faceManager, - localIndex const targetRegionIndex, - FaceElementSubRegion & elementSubRegion, - FE_TYPE const & finiteElementSpace, - CONSTITUTIVE_TYPE & inputConstitutiveType, - arrayView1d< globalIndex const > const uDofNumber, - arrayView1d< globalIndex const > const bDofNumber, - globalIndex const rankOffset, - CRSMatrixView< real64, globalIndex const > const inputMatrix, - arrayView1d< real64 > const inputRhs, - real64 const inputDt, - arrayView1d< localIndex const > const & faceElementList ): + DispJumpUpdate( NodeManager const & nodeManager, + EdgeManager const & edgeManager, + FaceManager const & faceManager, + localIndex const targetRegionIndex, + FaceElementSubRegion & elementSubRegion, + FE_TYPE const & finiteElementSpace, + CONSTITUTIVE_TYPE & inputConstitutiveType, + arrayView1d< globalIndex const > const uDofNumber, + arrayView1d< globalIndex const > const bDofNumber, + globalIndex const rankOffset, + CRSMatrixView< real64, globalIndex const > const inputMatrix, + arrayView1d< real64 > const inputRhs, + real64 const inputDt, + arrayView1d< localIndex const > const & faceElementList ): Base( nodeManager, edgeManager, faceManager, @@ -91,7 +101,9 @@ class ALMJumpUpdate : m_bubbleDisp( faceManager.getField< fields::solidMechanics::totalBubbleDisplacement >() ), m_incrDisp( nodeManager.getField< fields::solidMechanics::incrementalDisplacement >() ), m_incrBubbleDisp( faceManager.getField< fields::solidMechanics::incrementalBubbleDisplacement >() ), - m_deltaDispJump( elementSubRegion.getField< fields::contact::deltaDispJump >().toView() ) + m_deltaDispJump( elementSubRegion.getField< fields::contact::deltaDispJump >().toView() ), + m_elementArea( elementSubRegion.getField< fields::elementArea >().toView() ), + m_slip( elementSubRegion.getField< fields::contact::slip >().toView() ) {} //*************************************************************************** @@ -102,25 +114,16 @@ class ALMJumpUpdate : struct StackVariables : public Base::StackVariables { - /// The number of displacement dofs per element. - static constexpr int numUdofs = numNodesPerElem * 3 * 2; - - /// The number of bubble dofs per element. - static constexpr int numBdofs = 3 * 2; - - /// The number of lagrange multiplier dofs per element. - static constexpr int numTdofs = 3; - public: GEOS_HOST_DEVICE StackVariables(): Base::StackVariables(), - uLocal{}, - bLocal{}, - duLocal{}, - dbLocal{}, - deltaDispJumpLocal{} + uLocal{}, + bLocal{}, + duLocal{}, + dbLocal{}, + deltaDispJumpLocal{} {} /// Stack storage for the element local displacement vector @@ -208,11 +211,6 @@ class ALMJumpUpdate : real64 complete( localIndex const k, StackVariables & stack ) const { - - constexpr int numUdofs = numNodesPerElem * 3 * 2; - - constexpr int numBdofs = 3 * 2; - real64 matRtAtu[3][numUdofs]; real64 matRtAtb[3][numBdofs]; @@ -232,12 +230,17 @@ class ALMJumpUpdate : LvArray::tensorOps::Ri_add_AijBj< 3, numBdofs >( stack.deltaDispJumpLocal, matRtAtb, stack.dbLocal ); // Store the results + real64 const scale = 1 / m_elementArea[k]; + for( int i=0; i<3; ++i ) { - m_dispJump[ k ][ i ] = stack.dispJumpLocal[ i ]; - m_deltaDispJump[ k ][ i ] = stack.deltaDispJumpLocal[ i ]; + m_dispJump[ k ][ i ] = scale * stack.dispJumpLocal[ i ]; + m_deltaDispJump[ k ][ i ] = scale * stack.deltaDispJumpLocal[ i ]; } + m_slip[k] = LvArray::math::sqrt( LvArray::math::square( m_dispJump( k, 1 ) ) + LvArray::math::square( m_dispJump( k, 2 ) ) ); + + return 0.0; } @@ -258,19 +261,23 @@ class ALMJumpUpdate : /// The rank-global delta displacement jump array. arrayView2d< real64 > const m_deltaDispJump; + arrayView1d< real64 const > const m_elementArea; + + arrayView1d< real64 > const m_slip; + }; -using ALMJumpUpdateFactory = finiteElement::InterfaceKernelFactory< ALMJumpUpdate, - arrayView1d< globalIndex const > const, - arrayView1d< globalIndex const > const, - globalIndex const, - CRSMatrixView< real64, globalIndex const > const, - arrayView1d< real64 > const, - real64 const, - arrayView1d< localIndex const > const >; +using DispJumpUpdateFactory = finiteElement::InterfaceKernelFactory< DispJumpUpdate, + arrayView1d< globalIndex const > const, + arrayView1d< globalIndex const > const, + globalIndex const, + CRSMatrixView< real64, globalIndex const > const, + arrayView1d< real64 > const, + real64 const, + arrayView1d< localIndex const > const >; } // namespace SolidMechanicsALMKernels } // namespace geos -#endif /* GEOS_PHYSICSSOLVERS_CONTACT_SOLIDMECHANICSALMUPDATEKERNELS_HPP_ */ +#endif /* GEOS_PHYSICSSOLVERS_CONTACT_KERNELS_SOLIDMECHANICSDISPLACEMENTJUPDATEKERNELS_HPP_ */ diff --git a/src/coreComponents/physicsSolvers/contact/SolidMechanicsEFEMJumpUpdateKernels.hpp b/src/coreComponents/physicsSolvers/contact/kernels/SolidMechanicsEFEMJumpUpdateKernels.hpp similarity index 96% rename from src/coreComponents/physicsSolvers/contact/SolidMechanicsEFEMJumpUpdateKernels.hpp rename to src/coreComponents/physicsSolvers/contact/kernels/SolidMechanicsEFEMJumpUpdateKernels.hpp index 26e6ea5abe0..eab65325840 100644 --- a/src/coreComponents/physicsSolvers/contact/SolidMechanicsEFEMJumpUpdateKernels.hpp +++ b/src/coreComponents/physicsSolvers/contact/kernels/SolidMechanicsEFEMJumpUpdateKernels.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -18,8 +18,8 @@ * @file SolidMechanicsEFEMKernels.hpp */ -#ifndef GEOS_PHYSICSSOLVERS_CONTACT_SOLIDMECHANICSEFEMJUMPUPDATEKERNELS_HPP_ -#define GEOS_PHYSICSSOLVERS_CONTACT_SOLIDMECHANICSEFEMJUMPUPDATEKERNELS_HPP_ +#ifndef GEOS_PHYSICSSOLVERS_CONTACT_KERNELS_SOLIDMECHANICSEFEMJUMPUPDATEKERNELS_HPP_ +#define GEOS_PHYSICSSOLVERS_CONTACT_KERNELS_SOLIDMECHANICSEFEMJUMPUPDATEKERNELS_HPP_ #include "SolidMechanicsEFEMKernelsBase.hpp" @@ -246,4 +246,4 @@ using EFEMJumpUpdateFactory = finiteElement::KernelFactory< EFEMJumpUpdate, } // namespace geos -#endif /* GEOS_PHYSICSSOLVERS_CONTACT_SOLIDMECHANICSEFEMJUMPUPDATEKERNELS_HPP_ */ +#endif /* GEOS_PHYSICSSOLVERS_CONTACT_KERNELS_SOLIDMECHANICSEFEMJUMPUPDATEKERNELS_HPP_ */ diff --git a/src/coreComponents/physicsSolvers/contact/SolidMechanicsEFEMKernels.hpp b/src/coreComponents/physicsSolvers/contact/kernels/SolidMechanicsEFEMKernels.hpp similarity index 97% rename from src/coreComponents/physicsSolvers/contact/SolidMechanicsEFEMKernels.hpp rename to src/coreComponents/physicsSolvers/contact/kernels/SolidMechanicsEFEMKernels.hpp index f683446af4b..6cf1f59ceeb 100644 --- a/src/coreComponents/physicsSolvers/contact/SolidMechanicsEFEMKernels.hpp +++ b/src/coreComponents/physicsSolvers/contact/kernels/SolidMechanicsEFEMKernels.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -18,8 +18,8 @@ * @file SolidMechanicsEFEMKernels.hpp */ -#ifndef GEOS_PHYSICSSOLVERS_CONTACT_SOLIDMECHANICSEFEMKERNELS_HPP_ -#define GEOS_PHYSICSSOLVERS_CONTACT_SOLIDMECHANICSEFEMKERNELS_HPP_ +#ifndef GEOS_PHYSICSSOLVERS_CONTACT_KERNELS_SOLIDMECHANICSEFEMKERNELS_HPP_ +#define GEOS_PHYSICSSOLVERS_CONTACT_KERNELS_SOLIDMECHANICSEFEMKERNELS_HPP_ #include "SolidMechanicsEFEMKernelsBase.hpp" @@ -347,4 +347,4 @@ struct StateUpdateKernel } // namespace geos -#endif /* GEOS_PHYSICSSOLVERS_CONTACT_SOLIDMECHANICSEFEMKERNELS_HPP_ */ +#endif /* GEOS_PHYSICSSOLVERS_CONTACT_KERNELS_SOLIDMECHANICSEFEMKERNELS_HPP_ */ diff --git a/src/coreComponents/physicsSolvers/contact/SolidMechanicsEFEMKernelsBase.hpp b/src/coreComponents/physicsSolvers/contact/kernels/SolidMechanicsEFEMKernelsBase.hpp similarity index 97% rename from src/coreComponents/physicsSolvers/contact/SolidMechanicsEFEMKernelsBase.hpp rename to src/coreComponents/physicsSolvers/contact/kernels/SolidMechanicsEFEMKernelsBase.hpp index 5f1c22b7c19..4a0ad46b4e9 100644 --- a/src/coreComponents/physicsSolvers/contact/SolidMechanicsEFEMKernelsBase.hpp +++ b/src/coreComponents/physicsSolvers/contact/kernels/SolidMechanicsEFEMKernelsBase.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -18,8 +18,8 @@ * @file SolidMechanicsEFEMKernels.hpp */ -#ifndef GEOS_PHYSICSSOLVERS_CONTACT_SOLIDMECHANICSEFEMKERNELSBASE_HPP_ -#define GEOS_PHYSICSSOLVERS_CONTACT_SOLIDMECHANICSEFEMKERNELSBASE_HPP_ +#ifndef GEOS_PHYSICSSOLVERS_CONTACT_KERNELS_SOLIDMECHANICSEFEMKERNELSBASE_HPP_ +#define GEOS_PHYSICSSOLVERS_CONTACT_KERNELS_SOLIDMECHANICSEFEMKERNELSBASE_HPP_ #include "physicsSolvers/solidMechanics/kernels/ImplicitSmallStrainQuasiStatic.hpp" #include "SolidMechanicsEFEMKernelsHelper.hpp" @@ -345,4 +345,4 @@ class EFEMKernelsBase : } // namespace geos -#endif /* GEOS_PHYSICSSOLVERS_CONTACT_SOLIDMECHANICSEFEMKERNELSBASE_HPP_ */ +#endif /* GEOS_PHYSICSSOLVERS_CONTACT_KERNELS_SOLIDMECHANICSEFEMKERNELSBASE_HPP_ */ diff --git a/src/coreComponents/physicsSolvers/contact/SolidMechanicsEFEMKernelsHelper.hpp b/src/coreComponents/physicsSolvers/contact/kernels/SolidMechanicsEFEMKernelsHelper.hpp similarity index 94% rename from src/coreComponents/physicsSolvers/contact/SolidMechanicsEFEMKernelsHelper.hpp rename to src/coreComponents/physicsSolvers/contact/kernels/SolidMechanicsEFEMKernelsHelper.hpp index 3018fb975c7..07bd6ffb810 100644 --- a/src/coreComponents/physicsSolvers/contact/SolidMechanicsEFEMKernelsHelper.hpp +++ b/src/coreComponents/physicsSolvers/contact/kernels/SolidMechanicsEFEMKernelsHelper.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -18,8 +18,8 @@ * @file EFEMKernelsHelper.hpp */ -#ifndef GEOS_PHYSICSSOLVERS_CONTACT_SOLIDMECHANICSEFEMKERNELSHELPER_HPP_ -#define GEOS_PHYSICSSOLVERS_CONTACT_SOLIDMECHANICSEFEMKERNELSHELPER_HPP_ +#ifndef GEOS_PHYSICSSOLVERS_CONTACT_KERNELS_SOLIDMECHANICSEFEMKERNELSHELPER_HPP_ +#define GEOS_PHYSICSSOLVERS_CONTACT_KERNELS_SOLIDMECHANICSEFEMKERNELSHELPER_HPP_ #include "common/DataTypes.hpp" @@ -152,4 +152,4 @@ void assembleEquilibriumOperator( real64 ( & eqMatrix )[3][6], } // geos -#endif /* SRC_CORECOMPONENTS_PHYSICSSOLVERS_CONTACT_EFEMKERNELSHELPER_HPP_ */ +#endif /* SRC_CORECOMPONENTS_PHYSICSSOLVERS_CONTACT_KERNELS_EFEMKERNELSHELPER_HPP_ */ diff --git a/src/coreComponents/physicsSolvers/contact/SolidMechanicsEFEMStaticCondensationKernels.hpp b/src/coreComponents/physicsSolvers/contact/kernels/SolidMechanicsEFEMStaticCondensationKernels.hpp similarity index 96% rename from src/coreComponents/physicsSolvers/contact/SolidMechanicsEFEMStaticCondensationKernels.hpp rename to src/coreComponents/physicsSolvers/contact/kernels/SolidMechanicsEFEMStaticCondensationKernels.hpp index 83dfa5fd884..c6efed43093 100644 --- a/src/coreComponents/physicsSolvers/contact/SolidMechanicsEFEMStaticCondensationKernels.hpp +++ b/src/coreComponents/physicsSolvers/contact/kernels/SolidMechanicsEFEMStaticCondensationKernels.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -18,8 +18,8 @@ * @file SolidMechanicsEFEMKernels.hpp */ -#ifndef GEOS_PHYSICSSOLVERS_CONTACT_SOLIDMECHANICSEFEMSTATICCONDENSATIONKERNELS_HPP_ -#define GEOS_PHYSICSSOLVERS_CONTACT_SOLIDMECHANICSEFEMSTATICCONDENSATIONKERNELS_HPP_ +#ifndef GEOS_PHYSICSSOLVERS_CONTACT_KERNELS_SOLIDMECHANICSEFEMSTATICCONDENSATIONKERNELS_HPP_ +#define GEOS_PHYSICSSOLVERS_CONTACT_KERNELS_SOLIDMECHANICSEFEMSTATICCONDENSATIONKERNELS_HPP_ #include "SolidMechanicsEFEMKernelsBase.hpp" @@ -252,4 +252,4 @@ using EFEMStaticCondensationFactory = finiteElement::KernelFactory< EFEMStaticCo } // namespace geos -#endif /* GEOS_PHYSICSSOLVERS_CONTACT_SOLIDMECHANICSEFEMSTATICCONDENSATIONKERNELS_HPP_ */ +#endif /* GEOS_PHYSICSSOLVERS_CONTACT_KERNELS_SOLIDMECHANICSEFEMSTATICCONDENSATIONKERNELS_HPP_ */ diff --git a/src/coreComponents/physicsSolvers/contact/kernels/SolidMechanicsLagrangeContactKernels.hpp b/src/coreComponents/physicsSolvers/contact/kernels/SolidMechanicsLagrangeContactKernels.hpp new file mode 100644 index 00000000000..b5ab97955b6 --- /dev/null +++ b/src/coreComponents/physicsSolvers/contact/kernels/SolidMechanicsLagrangeContactKernels.hpp @@ -0,0 +1,438 @@ +/* + * ------------------------------------------------------------------------------------------------------------ + * SPDX-License-Identifier: LGPL-2.1-only + * + * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC + * Copyright (c) 2018-2024 TotalEnergies + * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University + * Copyright (c) 2023-2024 Chevron + * Copyright (c) 2019- GEOS/GEOSX Contributors + * All rights reserved + * + * See top level LICENSE, COPYRIGHT, CONTRIBUTORS, NOTICE, and ACKNOWLEDGEMENTS files for details. + * ------------------------------------------------------------------------------------------------------------ + */ + +/** + * @file SolidMechanicsALMKernelsBase.hpp + */ + +#ifndef GEOS_PHYSICSSOLVERS_CONTACT_KERNELS_SOLIDMECHANICSLAGRANGECONTACTKERNELS_HPP_ +#define GEOS_PHYSICSSOLVERS_CONTACT_KERNELS_SOLIDMECHANICSLAGRANGECONTACTKERNELS_HPP_ + +#include "finiteElement/kernelInterface/InterfaceKernelBase.hpp" +#include "SolidMechanicsConformingContactKernelsBase.hpp" + +namespace geos +{ + +namespace solidMechanicsLagrangeContactKernels +{ + +/** + * @copydoc geos::finiteElement::ImplicitKernelBase + */ +template< typename CONSTITUTIVE_TYPE, + typename FE_TYPE > +class LagrangeContact : + public solidMechanicsConformingContactKernels::ConformingContactKernelsBase< CONSTITUTIVE_TYPE, + FE_TYPE > +{ +public: + /// Alias for the base class. + using Base = solidMechanicsConformingContactKernels::ConformingContactKernelsBase< CONSTITUTIVE_TYPE, + FE_TYPE >; + + /// Maximum number of nodes per element, which is equal to the maxNumTestSupportPointPerElem and + /// maxNumTrialSupportPointPerElem by definition. + static constexpr int numNodesPerElem = Base::maxNumTestSupportPointsPerElem; + + /// Compile time value for the number of quadrature points per element. + static constexpr int numQuadraturePointsPerElem = FE_TYPE::numQuadraturePoints; + + using Base::numUdofs; + using Base::numTdofs; + using Base::numBdofs; + + using Base::m_elemsToFaces; + using Base::m_faceToNodes; + using Base::m_finiteElementSpace; + using Base::m_constitutiveUpdate; + using Base::m_dofNumber; + using Base::m_bDofNumber; + using Base::m_dofRankOffset; + using Base::m_X; + using Base::m_rotationMatrix; + using Base::m_dispJump; + using Base::m_oldDispJump; + using Base::m_matrix; + using Base::m_rhs; + + /** + * @brief Constructor + * @copydoc geos::finiteElement::InterfaceKernelBase::InterfaceKernelBase + */ + LagrangeContact( NodeManager const & nodeManager, + EdgeManager const & edgeManager, + FaceManager const & faceManager, + localIndex const targetRegionIndex, + FaceElementSubRegion & elementSubRegion, + FE_TYPE const & finiteElementSpace, + CONSTITUTIVE_TYPE & inputConstitutiveType, + arrayView1d< globalIndex const > const uDofNumber, + arrayView1d< globalIndex const > const bDofNumber, + globalIndex const rankOffset, + CRSMatrixView< real64, globalIndex const > const inputMatrix, + arrayView1d< real64 > const inputRhs, + real64 const inputDt, + arrayView1d< localIndex const > const & faceElementList, + string const tractionDofKey ): + Base( nodeManager, + edgeManager, + faceManager, + targetRegionIndex, + elementSubRegion, + finiteElementSpace, + inputConstitutiveType, + uDofNumber, + bDofNumber, + rankOffset, + inputMatrix, + inputRhs, + inputDt, + faceElementList ), + m_traction( elementSubRegion.getField< fields::contact::traction >().toViewConst() ), + m_tDofNumber( elementSubRegion.getReference< globalIndex_array >( tractionDofKey ).toViewConst() ), + m_incrDisp( nodeManager.getField< fields::solidMechanics::incrementalDisplacement >() ), + m_incrBubbleDisp( faceManager.getField< fields::solidMechanics::incrementalBubbleDisplacement >() ), + m_targetIncrementalJump( elementSubRegion.getField< fields::contact::targetIncrementalJump >().toViewConst() ) + {} + + /** + * @copydoc finiteElement::KernelBase::StackVariables + */ + struct StackVariables : public Base::StackVariables + { +public: + + GEOS_HOST_DEVICE + StackVariables(): + Base::StackVariables(), + dispEqnRowIndices{}, + dispColIndices{}, + bEqnRowIndices{}, + bColIndices{}, + tColIndices{}, + localRu{}, + localRb{}, + localRt{}, + localAtt{ {} }, + localAut{ {} }, + localAbt{ {} }, + duLocal{}, + dbLocal{} + {} + + /// C-array storage for the element local row degrees of freedom. + localIndex dispEqnRowIndices[numUdofs]; + + /// C-array storage for the element local column degrees of freedom. + globalIndex dispColIndices[numUdofs]; + + /// C-array storage for the element local row degrees of freedom. + localIndex bEqnRowIndices[numBdofs]; + + /// C-array storage for the element local column degrees of freedom. + globalIndex bColIndices[numBdofs]; + + /// C-array storage for the traction local row degrees of freedom. + localIndex tEqnRowIndices[numTdofs]; + + /// C-array storage for the element local column degrees of freedom. + globalIndex tColIndices[numTdofs]; + + /// C-array storage for the element local Ru residual vector. + real64 localRu[numUdofs]; + + /// C-array storage for the element local Rb residual vector. + real64 localRb[numBdofs]; + + /// C-array storage for the element local Rt residual vector. + real64 localRt[numTdofs]; + + /// C-array storage for the element local Att matrix. + real64 localAtt[numTdofs][numTdofs]; + + /// C-array storage for the element local Aut matrix. + real64 localAut[numUdofs][numTdofs]; + + /// C-array storage for the element local Abt matrix. + real64 localAbt[numBdofs][numTdofs]; + + /// Stack storage for the element local incremental displacement vector + real64 duLocal[numUdofs]; + + /// Stack storage for the element local incremental bubble displacement vector + real64 dbLocal[numBdofs]; + }; + + //*************************************************************************** + + //START_kernelLauncher + template< typename POLICY, + typename KERNEL_TYPE > + static + real64 + kernelLaunch( localIndex const numElems, + KERNEL_TYPE const & kernelComponent ) + { + return Base::template kernelLaunch< POLICY, KERNEL_TYPE >( numElems, kernelComponent ); + } + //END_kernelLauncher + + /** + * @brief Copy global values from primary field to a local stack array. + * @copydoc ::geos::finiteElement::InterfaceKernelBase::setup + */ + GEOS_HOST_DEVICE + inline + void setup( localIndex const k, + StackVariables & stack ) const + { + constexpr int shift = numNodesPerElem * 3; + + int permutation[numNodesPerElem]; + m_finiteElementSpace.getPermutation( permutation ); + + localIndex const kf0 = m_elemsToFaces[k][0]; + localIndex const kf1 = m_elemsToFaces[k][1]; + for( localIndex a=0; a( matRRtAtu, stack.localRotationMatrix, stack.localAtu ); + // transp(R) * Atb + LvArray::tensorOps::Rij_eq_AkiBkj< 3, numBdofs, 3 >( matRRtAtb, stack.localRotationMatrix, stack.localAtb ); + + LvArray::tensorOps::copy< numTdofs, numUdofs >( stack.localAtu, matRRtAtu ); + LvArray::tensorOps::copy< numTdofs, numBdofs >( stack.localAtb, matRRtAtb ); + + LvArray::tensorOps::scale< numTdofs, numUdofs >( stack.localAtu, -1.0 ); + LvArray::tensorOps::scale< numTdofs, numBdofs >( stack.localAtb, -1.0 ); + + LvArray::tensorOps::transpose< numUdofs, numTdofs >( stack.localAut, stack.localAtu ); + LvArray::tensorOps::transpose< numBdofs, numTdofs >( stack.localAbt, stack.localAtb ); + + // Compute the traction contribute of the local residuals + LvArray::tensorOps::Ri_eq_AijBj< numUdofs, numTdofs >( tractionR, stack.localAut, m_traction[k] ); + LvArray::tensorOps::Ri_eq_AijBj< numBdofs, numTdofs >( tractionRb, stack.localAbt, m_traction[k] ); + + // Compute the local residuals + // Force Balance for nodal displacement dofs + LvArray::tensorOps::scaledAdd< numUdofs >( stack.localRu, tractionR, 1.0 ); + // Force Balance for the bubble dofs + LvArray::tensorOps::scaledAdd< numBdofs >( stack.localRb, tractionRb, 1.0 ); + + fillGlobalMatrix( stack ); + + return 0.0; + } + +protected: + + arrayView2d< real64 const > const m_traction; + + arrayView1d< globalIndex const > const m_tDofNumber; + + arrayView2d< real64 const, nodes::INCR_DISPLACEMENT_USD > const m_incrDisp; + + arrayView2d< real64 const > const m_incrBubbleDisp; + + arrayView2d< real64 const > const m_targetIncrementalJump; + + /** + * @brief Create the list of finite elements of the same type + * for each FaceElementSubRegion (Triangle or Quadrilateral) + * and of the same fracture state (Stick or Slip). + * @param domain The physical domain object + */ + void updateStickSlipList( DomainPartition const & domain ); + + /** + * @brief Create the list of finite elements of the same type + * for each FaceElementSubRegion (Triangle or Quadrilateral). + * @param domain The physical domain object + */ + void createFaceTypeList( DomainPartition const & domain ); + + /** + * @brief Create the list of elements belonging to CellElementSubRegion + * that are enriched with the bubble basis functions + * @param domain The physical domain object + */ + void createBubbleCellList( DomainPartition & domain ) const; + + /** + * @brief Fill global matrix and residual vector + * + * @param stack stack variables + */ + GEOS_HOST_DEVICE + void fillGlobalMatrix( StackVariables & stack ) const + { + + for( localIndex i=0; i < numTdofs; ++i ) + { + localIndex const dof = LvArray::integerConversion< localIndex >( stack.tEqnRowIndices[ i ] ); + + if( dof < 0 || dof >= m_matrix.numRows() ) continue; + + // TODO: May not need to be an atomic operation + RAJA::atomicAdd< parallelDeviceAtomic >( &m_rhs[dof], stack.localRt[i] ); + + // Fill in matrix block Att + m_matrix.template addToRowBinarySearchUnsorted< parallelDeviceAtomic >( dof, + stack.tColIndices, + stack.localAtt[i], + numTdofs ); + + // Fill in matrix block Atu + m_matrix.template addToRowBinarySearchUnsorted< parallelDeviceAtomic >( dof, + stack.dispColIndices, + stack.localAtu[i], + numUdofs ); + + // Fill in matrix block Atb + m_matrix.template addToRowBinarySearchUnsorted< parallelDeviceAtomic >( dof, + stack.bColIndices, + stack.localAtb[i], + numBdofs ); + } + + for( localIndex i=0; i < numUdofs; ++i ) + { + localIndex const dof = LvArray::integerConversion< localIndex >( stack.dispEqnRowIndices[ i ] ); + + if( dof < 0 || dof >= m_matrix.numRows() ) continue; + + // Is it necessary? Each row should be indepenedent + RAJA::atomicAdd< parallelDeviceAtomic >( &m_rhs[dof], stack.localRu[i] ); + + // Fill in matrix + m_matrix.template addToRowBinarySearchUnsorted< parallelDeviceAtomic >( dof, + stack.tColIndices, + stack.localAut[i], + numTdofs ); + + } + + for( localIndex i=0; i < numBdofs; ++i ) + { + localIndex const dof = LvArray::integerConversion< localIndex >( stack.bEqnRowIndices[ i ] ); + + if( dof < 0 || dof >= m_matrix.numRows() ) continue; + + // Is it necessary? Each row should be indepenedent + RAJA::atomicAdd< parallelDeviceAtomic >( &m_rhs[dof], stack.localRb[i] ); + + // Fill in matrix + m_matrix.template addToRowBinarySearchUnsorted< parallelDeviceAtomic >( dof, + stack.tColIndices, + stack.localAbt[i], + numTdofs ); + } + } + +}; + +/// The factory used to construct the kernel. +using LagrangeContactFactory = finiteElement::InterfaceKernelFactory< LagrangeContact, + arrayView1d< globalIndex const > const, + arrayView1d< globalIndex const > const, + globalIndex const, + CRSMatrixView< real64, globalIndex const > const, + arrayView1d< real64 > const, + real64 const, + arrayView1d< localIndex const > const, + string const >; + +} // namespace solidMechanicsLagrangeContactKernels + +} // namespace geos + + +#endif /* GEOS_PHYSICSSOLVERS_CONTACT_KERNELS_SOLIDMECHANICSLAGRANGECONTACTKERNELS_HPP_ */ diff --git a/src/coreComponents/physicsSolvers/fluidFlow/CompositionalMultiphaseBase.cpp b/src/coreComponents/physicsSolvers/fluidFlow/CompositionalMultiphaseBase.cpp index 08e7176fdbe..c13be912619 100644 --- a/src/coreComponents/physicsSolvers/fluidFlow/CompositionalMultiphaseBase.cpp +++ b/src/coreComponents/physicsSolvers/fluidFlow/CompositionalMultiphaseBase.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -42,8 +42,6 @@ #include "physicsSolvers/fluidFlow/CompositionalMultiphaseBaseFields.hpp" #include "physicsSolvers/fluidFlow/FlowSolverBaseFields.hpp" #include "physicsSolvers/fluidFlow/SourceFluxStatistics.hpp" -#include "physicsSolvers/fluidFlow/kernels/compositional/AccumulationKernel.hpp" -#include "physicsSolvers/fluidFlow/kernels/compositional/ThermalAccumulationKernel.hpp" #include "physicsSolvers/fluidFlow/kernels/compositional/GlobalComponentFractionKernel.hpp" #include "physicsSolvers/fluidFlow/kernels/compositional/PhaseVolumeFractionKernel.hpp" #include "physicsSolvers/fluidFlow/kernels/compositional/ThermalPhaseVolumeFractionKernel.hpp" @@ -53,7 +51,6 @@ #include "physicsSolvers/fluidFlow/kernels/compositional/SolidInternalEnergyUpdateKernel.hpp" #include "physicsSolvers/fluidFlow/kernels/compositional/HydrostaticPressureKernel.hpp" #include "physicsSolvers/fluidFlow/kernels/compositional/StatisticsKernel.hpp" -#include "physicsSolvers/fluidFlow/kernels/compositional/CFLKernel.hpp" #if defined( __INTEL_COMPILER ) #pragma GCC optimize "O0" @@ -146,12 +143,6 @@ CompositionalMultiphaseBase::CompositionalMultiphaseBase( const string & name, setApplyDefaultValue( 1 ). setDescription( "Flag indicating whether local (cell-wise) chopping of negative compositions is allowed" ); - this->registerWrapper( viewKeyStruct::targetFlowCFLString(), &m_targetFlowCFL ). - setApplyDefaultValue( -1. ). - setInputFlag( InputFlags::OPTIONAL ). - setDescription( "Target CFL condition `CFL condition `_" - " when computing the next timestep." ); - this->registerWrapper( viewKeyStruct::useTotalMassEquationString(), &m_useTotalMassEquation ). setSizedFromParent( 0 ). setInputFlag( InputFlags::OPTIONAL ). @@ -352,16 +343,6 @@ void CompositionalMultiphaseBase::registerDataOnMesh( Group & meshBodies ) InputError ); } - if( m_targetFlowCFL > 0 ) - { - subRegion.registerField< fields::flow::phaseOutflux >( getName() ). - reference().resizeDimension< 1 >( m_numPhases ); - subRegion.registerField< fields::flow::componentOutflux >( getName() ). - reference().resizeDimension< 1 >( m_numComponents ); - subRegion.registerField< fields::flow::phaseCFLNumber >( getName() ); - subRegion.registerField< fields::flow::componentCFLNumber >( getName() ); - } - string const & fluidName = subRegion.getReference< string >( viewKeyStruct::fluidNamesString() ); MultiFluidBase const & fluid = getConstitutiveModel< MultiFluidBase >( subRegion, fluidName ); @@ -435,7 +416,7 @@ void CompositionalMultiphaseBase::setConstitutiveNames( ElementSubRegionBase & s string & fluidName = subRegion.getReference< string >( viewKeyStruct::fluidNamesString() ); fluidName = getConstitutiveName< MultiFluidBase >( subRegion ); GEOS_THROW_IF( fluidName.empty(), - GEOS_FMT( "{}: Fluid model not found on subregion {}", + GEOS_FMT( "{}: multiphase fluid model not found on subregion {}", getDataContext(), subRegion.getDataContext() ), InputError ); @@ -831,30 +812,25 @@ real64 CompositionalMultiphaseBase::updateFluidState( ElementSubRegionBase & sub } void CompositionalMultiphaseBase::initializeFluidState( MeshLevel & mesh, - DomainPartition & domain, arrayView1d< string const > const & regionNames ) { GEOS_MARK_FUNCTION; integer const numComp = m_numComponents; - // 1. Compute hydrostatic equilibrium in the regions for which corresponding field specification tag has been specified - computeHydrostaticEquilibrium(); - mesh.getElemManager().forElementSubRegions( regionNames, [&]( localIndex const, ElementSubRegionBase & subRegion ) { - // 2. Assume global component fractions have been prescribed. + // Assume global component fractions have been prescribed. // Initialize constitutive state to get fluid density. updateFluidModel( subRegion ); - // 3. Back-calculate global component densities from fractions and total fluid density + // Back-calculate global component densities from fractions and total fluid density // in order to initialize the primary solution variables - string const & fluidName = subRegion.getReference< string >( viewKeyStruct::fluidNamesString() ); + string const & fluidName = subRegion.template getReference< string >( viewKeyStruct::fluidNamesString() ); MultiFluidBase const & fluid = getConstitutiveModel< MultiFluidBase >( subRegion, fluidName ); arrayView2d< real64 const, multifluid::USD_FLUID > const totalDens = fluid.totalDensity(); - arrayView2d< real64 const, compflow::USD_COMP > const compFrac = subRegion.getField< fields::flow::globalCompFraction >(); arrayView2d< real64, compflow::USD_COMP > const compDens = @@ -867,10 +843,13 @@ void CompositionalMultiphaseBase::initializeFluidState( MeshLevel & mesh, compDens[ei][ic] = totalDens[ei][0] * compFrac[ei][ic]; } } ); - } ); - // with initial component densities defined - check if they need to be corrected to avoid zero diags etc - chopNegativeDensities( domain ); + // with initial component densities defined - check if they need to be corrected to avoid zero diags etc + if( m_allowCompDensChopping ) + { + chopNegativeDensities( subRegion ); + } + } ); // for some reason CUDA does not want the host_device lambda to be defined inside the generic lambda // I need the exact type of the subRegion for updateSolidflowProperties to work well. @@ -878,115 +857,65 @@ void CompositionalMultiphaseBase::initializeFluidState( MeshLevel & mesh, SurfaceElementSubRegion >( regionNames, [&]( localIndex const, auto & subRegion ) { - // 4. Initialize/update dependent state quantities + // Initialize/update dependent state quantities - // 4.1 Update the constitutive models that only depend on - // - the primary variables - // - the fluid constitutive quantities (as they have already been updated) - // We postpone the other constitutive models for now - // In addition, to avoid multiplying permeability/porosity bay netToGross in the assembly kernel, we do it once and for all here - arrayView1d< real64 const > const netToGross = subRegion.template getField< fields::flow::netToGross >(); - CoupledSolidBase const & porousSolid = - getConstitutiveModel< CoupledSolidBase >( subRegion, subRegion.template getReference< string >( viewKeyStruct::solidNamesString() ) ); - PermeabilityBase const & permeabilityModel = - getConstitutiveModel< PermeabilityBase >( subRegion, subRegion.template getReference< string >( viewKeyStruct::permeabilityNamesString() ) ); - permeabilityModel.scaleHorizontalPermeability( netToGross ); - porousSolid.scaleReferencePorosity( netToGross ); - saveConvergedState( subRegion ); // necessary for a meaningful porosity update in sequential schemes - updatePorosityAndPermeability( subRegion ); updateCompAmount( subRegion ); updatePhaseVolumeFraction( subRegion ); - // Now, we initialize and update each constitutive model one by one + // Update the constitutive models that only depend on + // - the primary variables + // - the fluid constitutive quantities (as they have already been updated) + // We postpone the other constitutive models for now - // 4.2 Save the computed porosity into the old porosity - // - // Note: - // - This must be called after updatePorosityAndPermeability - // - This step depends on porosity - string const & solidName = subRegion.template getReference< string >( viewKeyStruct::solidNamesString() ); - CoupledSolidBase const & porousMaterial = getConstitutiveModel< CoupledSolidBase >( subRegion, solidName ); - porousMaterial.initializeState(); - - // 4.3 Initialize/update the relative permeability model using the initial phase volume fraction - // This is needed to handle relative permeability hysteresis - // Also, initialize the fluid model - // - // Note: - // - This must be called after updatePhaseVolumeFraction - // - This step depends on phaseVolFraction + // Now, we initialize and update each constitutive model one by one // initialized phase volume fraction arrayView2d< real64 const, compflow::USD_PHASE > const phaseVolFrac = subRegion.template getField< fields::flow::phaseVolumeFraction >(); - string const & relpermName = subRegion.template getReference< string >( viewKeyStruct::relPermNamesString() ); - RelativePermeabilityBase & relPermMaterial = - getConstitutiveModel< RelativePermeabilityBase >( subRegion, relpermName ); - relPermMaterial.saveConvergedPhaseVolFractionState( phaseVolFrac ); // this needs to happen before calling updateRelPermModel + // Initialize/update the relative permeability model using the initial phase volume fraction + // Note: + // - This must be called after updatePhaseVolumeFraction + // - This step depends on phaseVolFraction + RelativePermeabilityBase & relPerm = + getConstitutiveModel< RelativePermeabilityBase >( subRegion, subRegion.template getReference< string >( viewKeyStruct::relPermNamesString() ) ); + relPerm.saveConvergedPhaseVolFractionState( phaseVolFrac ); // this needs to happen before calling updateRelPermModel updateRelPermModel( subRegion ); - relPermMaterial.saveConvergedState(); // this needs to happen after calling updateRelPermModel + relPerm.saveConvergedState(); // this needs to happen after calling updateRelPermModel string const & fluidName = subRegion.template getReference< string >( viewKeyStruct::fluidNamesString() ); - MultiFluidBase & fluidMaterial = getConstitutiveModel< MultiFluidBase >( subRegion, fluidName ); - fluidMaterial.initializeState(); + MultiFluidBase & fluid = getConstitutiveModel< MultiFluidBase >( subRegion, fluidName ); + fluid.initializeState(); - // 4.4 Then, we initialize/update the capillary pressure model - // + // Update the phase mobility // Note: - // - This must be called after updatePorosityAndPermeability - // - This step depends on porosity and permeability + // - This must be called after updateRelPermModel + // - This step depends phaseRelPerm + updatePhaseMobility( subRegion ); + + // Initialize/update the capillary pressure model + // Note: + // - This must be called after updatePorosityAndPermeability and updatePhaseVolumeFraction + // - This step depends on porosity, permeability, and phaseVolFraction if( m_hasCapPressure ) { // initialized porosity - arrayView2d< real64 const > const porosity = porousMaterial.getPorosity(); + CoupledSolidBase const & porousSolid = + getConstitutiveModel< CoupledSolidBase >( subRegion, subRegion.template getReference< string >( viewKeyStruct::solidNamesString() ) ); + arrayView2d< real64 const > const porosity = porousSolid.getPorosity(); - string const & permName = subRegion.template getReference< string >( viewKeyStruct::permeabilityNamesString() ); - PermeabilityBase const & permeabilityMaterial = - getConstitutiveModel< PermeabilityBase >( subRegion, permName ); // initialized permeability + PermeabilityBase const & permeabilityMaterial = + getConstitutiveModel< PermeabilityBase >( subRegion, subRegion.template getReference< string >( viewKeyStruct::permeabilityNamesString() ) ); arrayView3d< real64 const > const permeability = permeabilityMaterial.permeability(); - string const & capPressureName = subRegion.template getReference< string >( viewKeyStruct::capPressureNamesString() ); - CapillaryPressureBase const & capPressureMaterial = - getConstitutiveModel< CapillaryPressureBase >( subRegion, capPressureName ); - capPressureMaterial.initializeRockState( porosity, permeability ); // this needs to happen before calling updateCapPressureModel + CapillaryPressureBase const & capPressure = + getConstitutiveModel< CapillaryPressureBase >( subRegion, subRegion.template getReference< string >( viewKeyStruct::capPressureNamesString() ) ); + capPressure.initializeRockState( porosity, permeability ); // this needs to happen before calling updateCapPressureModel updateCapPressureModel( subRegion ); } - // 4.5 Update the phase mobility - // - // Note: - // - This must be called after updateRelPermModel - // - This step depends phaseRelPerm - updatePhaseMobility( subRegion ); - - // 4.6 We initialize the rock thermal quantities: conductivity and solid internal energy - // - // Note: - // - This must be called after updatePorosityAndPermeability and updatePhaseVolumeFraction - // - This step depends on porosity and phaseVolFraction - if( m_isThermal ) - { - // initialized porosity - arrayView2d< real64 const > const porosity = porousMaterial.getPorosity(); - - string const & thermalConductivityName = subRegion.template getReference< string >( viewKeyStruct::thermalConductivityNamesString() ); - MultiPhaseThermalConductivityBase const & conductivityMaterial = - getConstitutiveModel< MultiPhaseThermalConductivityBase >( subRegion, thermalConductivityName ); - conductivityMaterial.initializeRockFluidState( porosity, phaseVolFrac ); - // note that there is nothing to update here because thermal conductivity is explicit for now - - updateSolidInternalEnergyModel( subRegion ); - string const & solidInternalEnergyName = subRegion.template getReference< string >( viewKeyStruct::solidInternalEnergyNamesString() ); - SolidInternalEnergy const & solidInternalEnergyMaterial = - getConstitutiveModel< SolidInternalEnergy >( subRegion, solidInternalEnergyName ); - solidInternalEnergyMaterial.saveConvergedState(); - - updateEnergy( subRegion ); - } - - // Step 4.7: if the diffusion and/or dispersion is/are supported, initialize the two models + // If the diffusion and/or dispersion is/are supported, initialize the two models if( m_hasDiffusion ) { string const & diffusionName = subRegion.template getReference< string >( viewKeyStruct::diffusionNamesString() ); @@ -1004,24 +933,42 @@ void CompositionalMultiphaseBase::initializeFluidState( MeshLevel & mesh, } } ); +} - // 5. Save initial pressure - mesh.getElemManager().forElementSubRegions( regionNames, [&]( localIndex const, - ElementSubRegionBase & subRegion ) +void CompositionalMultiphaseBase::initializeThermalState( MeshLevel & mesh, arrayView1d< string const > const & regionNames ) +{ + mesh.getElemManager().forElementSubRegions< CellElementSubRegion, + SurfaceElementSubRegion >( regionNames, [&]( localIndex const, + auto & subRegion ) { - arrayView1d< real64 const > const pres = subRegion.getField< fields::flow::pressure >(); - arrayView1d< real64 > const initPres = subRegion.getField< fields::flow::initialPressure >(); - arrayView1d< real64 const > const temp = subRegion.getField< fields::flow::temperature >(); - arrayView1d< real64 > const initTemp = subRegion.template getField< fields::flow::initialTemperature >(); - initPres.setValues< parallelDevicePolicy<> >( pres ); - initTemp.setValues< parallelDevicePolicy<> >( temp ); + // initialized porosity + CoupledSolidBase const & porousSolid = + getConstitutiveModel< CoupledSolidBase >( subRegion, subRegion.template getReference< string >( viewKeyStruct::solidNamesString() ) ); + arrayView2d< real64 const > const porosity = porousSolid.getPorosity(); + + // initialized phase volume fraction + arrayView2d< real64 const, compflow::USD_PHASE > const phaseVolFrac = + subRegion.template getField< fields::flow::phaseVolumeFraction >(); + + string const & thermalConductivityName = subRegion.template getReference< string >( viewKeyStruct::thermalConductivityNamesString()); + MultiPhaseThermalConductivityBase const & conductivityMaterial = + getConstitutiveModel< MultiPhaseThermalConductivityBase >( subRegion, thermalConductivityName ); + conductivityMaterial.initializeRockFluidState( porosity, phaseVolFrac ); + // note that there is nothing to update here because thermal conductivity is explicit for now + + updateSolidInternalEnergyModel( subRegion ); + string const & solidInternalEnergyName = subRegion.template getReference< string >( viewKeyStruct::solidInternalEnergyNamesString()); + SolidInternalEnergy const & solidInternalEnergyMaterial = + getConstitutiveModel< SolidInternalEnergy >( subRegion, solidInternalEnergyName ); + solidInternalEnergyMaterial.saveConvergedState(); + + updateEnergy( subRegion ); } ); } -void CompositionalMultiphaseBase::computeHydrostaticEquilibrium() +void CompositionalMultiphaseBase::computeHydrostaticEquilibrium( DomainPartition & domain ) { FieldSpecificationManager & fsManager = FieldSpecificationManager::getInstance(); - DomainPartition & domain = this->getGroupByPath< DomainPartition >( "/Problem/domain" ); integer const numComps = m_numComponents; integer const numPhases = m_numPhases; @@ -1281,8 +1228,7 @@ void CompositionalMultiphaseBase::initializePostInitialConditionsPreSubGroups() arrayView1d< string const > const & regionNames ) { FieldIdentifiers fieldsToBeSync; - fieldsToBeSync.addElementFields( { fields::flow::pressure::key(), - fields::flow::globalCompDensity::key() }, + fieldsToBeSync.addElementFields( { fields::flow::globalCompDensity::key() }, regionNames ); CommunicationTools::getInstance().synchronizeFields( fieldsToBeSync, mesh, domain.getNeighbors(), false ); @@ -1295,35 +1241,10 @@ void CompositionalMultiphaseBase::initializePostInitialConditionsPreSubGroups() string const & fluidName = subRegion.template getReference< string >( viewKeyStruct::fluidNamesString() ); MultiFluidBase & fluid = getConstitutiveModel< MultiFluidBase >( subRegion, fluidName ); fluid.setMassFlag( m_useMass ); - - saveConvergedState( subRegion ); // necessary for a meaningful porosity update in sequential schemes - updatePorosityAndPermeability( subRegion ); - - CoupledSolidBase const & porousSolid = - getConstitutiveModel< CoupledSolidBase >( subRegion, - subRegion.template getReference< string >( viewKeyStruct::solidNamesString() ) ); - porousSolid.initializeState(); - } ); - - // Initialize primary variables from applied initial conditions - initializeFluidState( mesh, domain, regionNames ); - - mesh.getElemManager().forElementRegions< SurfaceElementRegion >( regionNames, - [&]( localIndex const, - SurfaceElementRegion & region ) - { - region.forElementSubRegions< FaceElementSubRegion >( [&]( FaceElementSubRegion & subRegion ) - { - subRegion.getWrapper< real64_array >( fields::flow::hydraulicAperture::key() ). - setApplyDefaultValue( region.getDefaultAperture() ); - } ); } ); - } ); - // report to the user if some pore volumes are very small - // note: this function is here because: 1) porosity has been initialized and 2) NTG has been applied - validatePoreVolumes( domain ); + initializeState( domain ); } void @@ -1402,6 +1323,14 @@ void CompositionalMultiphaseBase::assembleAccumulationAndVolumeBalanceTerms( Dom { GEOS_MARK_FUNCTION; + using namespace isothermalCompositionalMultiphaseBaseKernels; + + BitFlags< KernelFlags > kernelFlags; + if( m_useTotalMassEquation ) + kernelFlags.set( KernelFlags::TotalMassEquation ); + if( m_useSimpleAccumulation ) + kernelFlags.set( KernelFlags::SimpleAccumulation ); + forDiscretizationOnMeshTargets( domain.getMeshBodies(), [&]( string const &, MeshLevel const & mesh, arrayView1d< string const > const & regionNames ) @@ -1424,7 +1353,7 @@ void CompositionalMultiphaseBase::assembleAccumulationAndVolumeBalanceTerms( Dom createAndLaunch< parallelDevicePolicy<> >( m_numComponents, m_numPhases, dofManager.rankOffset(), - m_useTotalMassEquation, + kernelFlags, dofKey, subRegion, fluid, @@ -1439,8 +1368,7 @@ void CompositionalMultiphaseBase::assembleAccumulationAndVolumeBalanceTerms( Dom createAndLaunch< parallelDevicePolicy<> >( m_numComponents, m_numPhases, dofManager.rankOffset(), - m_useTotalMassEquation, - m_useSimpleAccumulation, + kernelFlags, dofKey, subRegion, fluid, @@ -2071,9 +1999,6 @@ void CompositionalMultiphaseBase::chopNegativeDensities( DomainPartition & domai using namespace isothermalCompositionalMultiphaseBaseKernels; - integer const numComp = m_numComponents; - real64 const minCompDens = m_minCompDens; - forDiscretizationOnMeshTargets( domain.getMeshBodies(), [&]( string const &, MeshLevel & mesh, arrayView1d< string const > const & regionNames ) @@ -2082,25 +2007,33 @@ void CompositionalMultiphaseBase::chopNegativeDensities( DomainPartition & domai [&]( localIndex const, ElementSubRegionBase & subRegion ) { - arrayView1d< integer const > const ghostRank = subRegion.ghostRank(); + chopNegativeDensities( subRegion ); + } ); + } ); +} - arrayView2d< real64, compflow::USD_COMP > const compDens = - subRegion.getField< fields::flow::globalCompDensity >(); +void CompositionalMultiphaseBase::chopNegativeDensities( ElementSubRegionBase & subRegion ) +{ + integer const numComp = m_numComponents; + real64 const minCompDens = m_minCompDens; - forAll< parallelDevicePolicy<> >( subRegion.size(), [=] GEOS_HOST_DEVICE ( localIndex const ei ) + arrayView1d< integer const > const ghostRank = subRegion.ghostRank(); + + arrayView2d< real64, compflow::USD_COMP > const compDens = + subRegion.getField< fields::flow::globalCompDensity >(); + + forAll< parallelDevicePolicy<> >( subRegion.size(), [=] GEOS_HOST_DEVICE ( localIndex const ei ) + { + if( ghostRank[ei] < 0 ) + { + for( integer ic = 0; ic < numComp; ++ic ) { - if( ghostRank[ei] < 0 ) + if( compDens[ei][ic] < minCompDens ) { - for( integer ic = 0; ic < numComp; ++ic ) - { - if( compDens[ei][ic] < minCompDens ) - { - compDens[ei][ic] = minCompDens; - } - } + compDens[ei][ic] = minCompDens; } - } ); - } ); + } + } } ); } @@ -2229,171 +2162,6 @@ real64 CompositionalMultiphaseBase::setNextDtBasedOnStateChange( real64 const & return std::min( std::min( nextDtPressure, std::min( nextDtPhaseVolFrac, nextDtCompDens ) ), nextDtTemperature ); } -real64 CompositionalMultiphaseBase::setNextDtBasedOnCFL( const geos::real64 & currentDt, geos::DomainPartition & domain ) -{ - - real64 maxPhaseCFL, maxCompCFL; - - computeCFLNumbers( domain, currentDt, maxPhaseCFL, maxCompCFL ); - - GEOS_LOG_LEVEL_INFO_RANK_0( logInfo::TimeStep, GEOS_FMT( "{}: max phase CFL number = {}", getName(), maxPhaseCFL ) ); - GEOS_LOG_LEVEL_INFO_RANK_0( logInfo::TimeStep, GEOS_FMT( "{}: max component CFL number = {} ", getName(), maxCompCFL ) ); - - return std::min( m_targetFlowCFL * currentDt / maxCompCFL, - m_targetFlowCFL * currentDt / maxPhaseCFL ); -} - -void CompositionalMultiphaseBase::computeCFLNumbers( geos::DomainPartition & domain, const geos::real64 & dt, - geos::real64 & maxPhaseCFL, geos::real64 & maxCompCFL ) -{ - GEOS_MARK_FUNCTION; - - integer const numPhases = numFluidPhases(); - integer const numComps = numFluidComponents(); - - // Step 1: reset the arrays involved in the computation of CFL numbers - forDiscretizationOnMeshTargets( domain.getMeshBodies(), [&]( string const &, - MeshLevel & mesh, - arrayView1d< string const > const & regionNames ) - { - mesh.getElemManager().forElementSubRegions( regionNames, - [&]( localIndex const, - ElementSubRegionBase & subRegion ) - { - arrayView2d< real64, compflow::USD_PHASE > const & phaseOutflux = - subRegion.getField< fields::flow::phaseOutflux >(); - arrayView2d< real64, compflow::USD_COMP > const & compOutflux = - subRegion.getField< fields::flow::componentOutflux >(); - phaseOutflux.zero(); - compOutflux.zero(); - } ); - - // Step 2: compute the total volumetric outflux for each reservoir cell by looping over faces - NumericalMethodsManager & numericalMethodManager = domain.getNumericalMethodManager(); - FiniteVolumeManager & fvManager = numericalMethodManager.getFiniteVolumeManager(); - FluxApproximationBase & fluxApprox = fvManager.getFluxApproximation( getDiscretizationName() ); - - isothermalCompositionalMultiphaseFVMKernels:: - CFLFluxKernel::CompFlowAccessors compFlowAccessors( mesh.getElemManager(), getName() ); - isothermalCompositionalMultiphaseFVMKernels:: - CFLFluxKernel::MultiFluidAccessors multiFluidAccessors( mesh.getElemManager(), getName() ); - isothermalCompositionalMultiphaseFVMKernels:: - CFLFluxKernel::PermeabilityAccessors permeabilityAccessors( mesh.getElemManager(), getName() ); - isothermalCompositionalMultiphaseFVMKernels:: - CFLFluxKernel::RelPermAccessors relPermAccessors( mesh.getElemManager(), getName() ); - - // TODO: find a way to compile with this modifiable accessors in CompFlowAccessors, and remove them from here - ElementRegionManager::ElementViewAccessor< arrayView2d< real64, compflow::USD_PHASE > > const phaseOutfluxAccessor = - mesh.getElemManager().constructViewAccessor< array2d< real64, compflow::LAYOUT_PHASE >, - arrayView2d< real64, compflow::USD_PHASE > >( fields::flow::phaseOutflux::key() ); - - ElementRegionManager::ElementViewAccessor< arrayView2d< real64, compflow::USD_COMP > > const compOutfluxAccessor = - mesh.getElemManager().constructViewAccessor< array2d< real64, compflow::LAYOUT_COMP >, - arrayView2d< real64, compflow::USD_COMP > >( fields::flow::componentOutflux::key() ); - - - fluxApprox.forAllStencils( mesh, [&] ( auto & stencil ) - { - typename TYPEOFREF( stencil ) ::KernelWrapper stencilWrapper = stencil.createKernelWrapper(); - - // While this kernel is waiting for a factory class, pass all the accessors here - isothermalCompositionalMultiphaseBaseKernels::KernelLaunchSelector1 - < isothermalCompositionalMultiphaseFVMKernels::CFLFluxKernel >( numComps, - numPhases, - dt, - stencilWrapper, - compFlowAccessors.get( fields::flow::pressure{} ), - compFlowAccessors.get( fields::flow::gravityCoefficient{} ), - compFlowAccessors.get( fields::flow::phaseVolumeFraction{} ), - permeabilityAccessors.get( fields::permeability::permeability{} ), - permeabilityAccessors.get( fields::permeability::dPerm_dPressure{} ), - relPermAccessors.get( fields::relperm::phaseRelPerm{} ), - multiFluidAccessors.get( fields::multifluid::phaseViscosity{} ), - multiFluidAccessors.get( fields::multifluid::phaseDensity{} ), - multiFluidAccessors.get( fields::multifluid::phaseMassDensity{} ), - multiFluidAccessors.get( fields::multifluid::phaseCompFraction{} ), - phaseOutfluxAccessor.toNestedView(), - compOutfluxAccessor.toNestedView() ); - } ); - } ); - - // Step 3: finalize the (cell-based) computation of the CFL numbers - real64 localMaxPhaseCFLNumber = 0.0; - real64 localMaxCompCFLNumber = 0.0; - - forDiscretizationOnMeshTargets( domain.getMeshBodies(), [&]( string const &, - MeshLevel & mesh, - arrayView1d< string const > const & regionNames ) - { - mesh.getElemManager().forElementSubRegions( regionNames, - [&]( localIndex const, - ElementSubRegionBase & subRegion ) - { - arrayView2d< real64 const, compflow::USD_PHASE > const & phaseOutflux = - subRegion.getField< fields::flow::phaseOutflux >(); - arrayView2d< real64 const, compflow::USD_COMP > const & compOutflux = - subRegion.getField< fields::flow::componentOutflux >(); - - arrayView1d< real64 > const & phaseCFLNumber = subRegion.getField< fields::flow::phaseCFLNumber >(); - arrayView1d< real64 > const & compCFLNumber = subRegion.getField< fields::flow::componentCFLNumber >(); - - arrayView1d< real64 const > const & volume = subRegion.getElementVolume(); - - arrayView2d< real64 const, compflow::USD_COMP > const & compDens = - subRegion.getField< fields::flow::globalCompDensity >(); - arrayView2d< real64 const, compflow::USD_COMP > const compFrac = - subRegion.getField< fields::flow::globalCompFraction >(); - arrayView2d< real64, compflow::USD_PHASE > const phaseVolFrac = - subRegion.getField< fields::flow::phaseVolumeFraction >(); - - Group const & constitutiveModels = subRegion.getGroup( ElementSubRegionBase::groupKeyStruct::constitutiveModelsString() ); - - string const & fluidName = subRegion.getReference< string >( CompositionalMultiphaseBase::viewKeyStruct::fluidNamesString() ); - MultiFluidBase const & fluid = constitutiveModels.getGroup< MultiFluidBase >( fluidName ); - arrayView3d< real64 const, multifluid::USD_PHASE > const & phaseVisc = fluid.phaseViscosity(); - - string const & relpermName = subRegion.getReference< string >( CompositionalMultiphaseBase::viewKeyStruct::relPermNamesString() ); - RelativePermeabilityBase const & relperm = constitutiveModels.getGroup< RelativePermeabilityBase >( relpermName ); - arrayView3d< real64 const, relperm::USD_RELPERM > const & phaseRelPerm = relperm.phaseRelPerm(); - arrayView4d< real64 const, relperm::USD_RELPERM_DS > const & dPhaseRelPerm_dPhaseVolFrac = relperm.dPhaseRelPerm_dPhaseVolFraction(); - - string const & solidName = subRegion.getReference< string >( CompositionalMultiphaseBase::viewKeyStruct::solidNamesString() ); - CoupledSolidBase const & solid = constitutiveModels.getGroup< CoupledSolidBase >( solidName ); - arrayView2d< real64 const > const & porosity = solid.getPorosity(); - - real64 subRegionMaxPhaseCFLNumber = 0.0; - real64 subRegionMaxCompCFLNumber = 0.0; - - isothermalCompositionalMultiphaseBaseKernels::KernelLaunchSelector2 - < isothermalCompositionalMultiphaseFVMKernels::CFLKernel >( numComps, numPhases, - subRegion.size(), - volume, - porosity, - compDens, - compFrac, - phaseVolFrac, - phaseRelPerm, - dPhaseRelPerm_dPhaseVolFrac, - phaseVisc, - phaseOutflux, - compOutflux, - phaseCFLNumber, - compCFLNumber, - subRegionMaxPhaseCFLNumber, - subRegionMaxCompCFLNumber ); - - localMaxPhaseCFLNumber = LvArray::math::max( localMaxPhaseCFLNumber, subRegionMaxPhaseCFLNumber ); - localMaxCompCFLNumber = LvArray::math::max( localMaxCompCFLNumber, subRegionMaxCompCFLNumber ); - - } ); - } ); - - maxPhaseCFL = MpiWrapper::max( localMaxPhaseCFLNumber ); - maxCompCFL = MpiWrapper::max( localMaxCompCFLNumber ); - -} - - void CompositionalMultiphaseBase::resetStateToBeginningOfStep( DomainPartition & domain ) { GEOS_MARK_FUNCTION; @@ -2653,13 +2421,4 @@ bool CompositionalMultiphaseBase::checkSequentialSolutionIncrements( DomainParti return isConverged && (m_sequentialCompDensChange < m_maxSequentialCompDensChange); } -real64 CompositionalMultiphaseBase::setNextDt( const geos::real64 & currentDt, geos::DomainPartition & domain ) -{ - - if( m_targetFlowCFL < 0 ) - return PhysicsSolverBase::setNextDt( currentDt, domain ); - else - return setNextDtBasedOnCFL( currentDt, domain ); -} - } // namespace geos diff --git a/src/coreComponents/physicsSolvers/fluidFlow/CompositionalMultiphaseBase.hpp b/src/coreComponents/physicsSolvers/fluidFlow/CompositionalMultiphaseBase.hpp index cfd06428707..cb9c1fe33d3 100644 --- a/src/coreComponents/physicsSolvers/fluidFlow/CompositionalMultiphaseBase.hpp +++ b/src/coreComponents/physicsSolvers/fluidFlow/CompositionalMultiphaseBase.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -22,6 +22,10 @@ #include "physicsSolvers/fluidFlow/FlowSolverBase.hpp" #include "fieldSpecification/FieldSpecificationManager.hpp" +#include "constitutive/fluid/multifluid/MultiFluidBase.hpp" +#include "constitutive/solid/CoupledSolidBase.hpp" +#include "physicsSolvers/fluidFlow/kernels/compositional/AccumulationKernel.hpp" +#include "physicsSolvers/fluidFlow/kernels/compositional/ThermalAccumulationKernel.hpp" namespace geos { @@ -68,6 +72,8 @@ class CompositionalMultiphaseBase : public FlowSolverBase virtual void registerDataOnMesh( Group & meshBodies ) override; + virtual void registerDataForCFL( Group & meshBodies ) { GEOS_UNUSED_VAR( meshBodies ); } + /** * @defgroup Solver Interface Functions * @@ -96,6 +102,21 @@ class CompositionalMultiphaseBase : public FlowSolverBase CRSMatrixView< real64, globalIndex const > const & localMatrix, arrayView1d< real64 > const & localRhs ) override; + /** + * @brief assembles the accumulation terms for all cells of a spcefici subRegion. + * @tparam SUBREGION_TYPE the subRegion type + * @param dofManager degree-of-freedom manager associated with the linear system + * @param subRegion the subRegion + * @param localMatrix the system matrix + * @param localRhs the system right-hand side vector + * + */ + template< typename SUBREGION_TYPE > + void accumulationAssemblyLaunch( DofManager const & dofManager, + SUBREGION_TYPE const & subRegion, + CRSMatrixView< real64, globalIndex const > const & localMatrix, + arrayView1d< real64 > const & localRhs ); + virtual void resetStateToBeginningOfStep( DomainPartition & domain ) override; @@ -282,12 +303,14 @@ class CompositionalMultiphaseBase : public FlowSolverBase * from prescribed intermediate values (i.e. global densities from global fractions) * and any applicable hydrostatic equilibration of the domain */ - void initializeFluidState( MeshLevel & mesh, DomainPartition & domain, arrayView1d< string const > const & regionNames ); + virtual void initializeFluidState( MeshLevel & mesh, arrayView1d< string const > const & regionNames ) override; + + virtual void initializeThermalState( MeshLevel & mesh, arrayView1d< string const > const & regionNames ) override; /** * @brief Compute the hydrostatic equilibrium using the compositions and temperature input tables */ - void computeHydrostaticEquilibrium(); + virtual void computeHydrostaticEquilibrium( DomainPartition & domain ) override; /** * @brief Function to perform the Application of Dirichlet type BC's @@ -362,22 +385,17 @@ class CompositionalMultiphaseBase : public FlowSolverBase */ void chopNegativeDensities( DomainPartition & domain ); + void chopNegativeDensities( ElementSubRegionBase & subRegion ); + virtual real64 setNextDtBasedOnStateChange( real64 const & currentDt, DomainPartition & domain ) override; - void computeCFLNumbers( DomainPartition & domain, real64 const & dt, real64 & maxPhaseCFL, real64 & maxCompCFL ); - /** - * @brief function to set the next time step size - * @param[in] currentDt the current time step size - * @param[in] domain the domain object - * @return the prescribed time step size - */ - real64 setNextDt( real64 const & currentDt, - DomainPartition & domain ) override; - - virtual real64 setNextDtBasedOnCFL( real64 const & currentDt, - DomainPartition & domain ) override; + virtual void computeCFLNumbers( DomainPartition & domain, real64 const & dt, real64 & maxPhaseCFL, real64 & maxCompCFL ) + { + GEOS_UNUSED_VAR( domain, dt, maxPhaseCFL, maxCompCFL ); + GEOS_ERROR( GEOS_FMT( "{}: computeCFLNumbers is not implemented for {}", getDataContext(), getCatalogName() ) ); + } virtual void initializePostInitialConditionsPreSubGroups() override; @@ -492,9 +510,6 @@ class CompositionalMultiphaseBase : public FlowSolverBase real64 m_sequentialCompDensChange; real64 m_maxSequentialCompDensChange; - /// the targeted CFL for timestep - real64 m_targetFlowCFL; - private: /** @@ -545,6 +560,58 @@ void CompositionalMultiphaseBase::applyFieldValue( real64 const & time_n, } ); } +template< typename SUBREGION_TYPE > +void CompositionalMultiphaseBase::accumulationAssemblyLaunch( DofManager const & dofManager, + SUBREGION_TYPE const & subRegion, + CRSMatrixView< real64, globalIndex const > const & localMatrix, + arrayView1d< real64 > const & localRhs ) +{ + constitutive::MultiFluidBase const & fluid = + getConstitutiveModel< constitutive::MultiFluidBase >( subRegion, subRegion.template getReference< string >( viewKeyStruct::fluidNamesString() ) ); + constitutive::CoupledSolidBase const & solid = + getConstitutiveModel< constitutive::CoupledSolidBase >( subRegion, subRegion.template getReference< string >( viewKeyStruct::solidNamesString() ) ); + + string const dofKey = dofManager.getKey( viewKeyStruct::elemDofFieldString() ); + + using namespace isothermalCompositionalMultiphaseBaseKernels; + + BitFlags< KernelFlags > kernelFlags; + if( m_useTotalMassEquation ) + kernelFlags.set( KernelFlags::TotalMassEquation ); + if( m_useSimpleAccumulation ) + kernelFlags.set( KernelFlags::SimpleAccumulation ); + + if( m_isThermal ) + { + thermalCompositionalMultiphaseBaseKernels:: + AccumulationKernelFactory:: + createAndLaunch< parallelDevicePolicy<> >( m_numComponents, + m_numPhases, + dofManager.rankOffset(), + kernelFlags, + dofKey, + subRegion, + fluid, + solid, + localMatrix, + localRhs ); + } + else + { + isothermalCompositionalMultiphaseBaseKernels:: + AccumulationKernelFactory:: + createAndLaunch< parallelDevicePolicy<> >( m_numComponents, + m_numPhases, + dofManager.rankOffset(), + kernelFlags, + dofKey, + subRegion, + fluid, + solid, + localMatrix, + localRhs ); + } +} } // namespace geos diff --git a/src/coreComponents/physicsSolvers/fluidFlow/CompositionalMultiphaseBaseFields.hpp b/src/coreComponents/physicsSolvers/fluidFlow/CompositionalMultiphaseBaseFields.hpp index eb00898d8df..68faa9d681b 100644 --- a/src/coreComponents/physicsSolvers/fluidFlow/CompositionalMultiphaseBaseFields.hpp +++ b/src/coreComponents/physicsSolvers/fluidFlow/CompositionalMultiphaseBaseFields.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/fluidFlow/CompositionalMultiphaseFVM.cpp b/src/coreComponents/physicsSolvers/fluidFlow/CompositionalMultiphaseFVM.cpp index 9e75055d49d..67ee8bf2f9a 100644 --- a/src/coreComponents/physicsSolvers/fluidFlow/CompositionalMultiphaseFVM.cpp +++ b/src/coreComponents/physicsSolvers/fluidFlow/CompositionalMultiphaseFVM.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -36,8 +36,6 @@ #include "mesh/mpiCommunications/CommunicationTools.hpp" #include "physicsSolvers/fluidFlow/FlowSolverBaseFields.hpp" #include "physicsSolvers/fluidFlow/CompositionalMultiphaseBaseFields.hpp" -#include "physicsSolvers/fluidFlow/kernels/compositional/AccumulationKernel.hpp" -#include "physicsSolvers/fluidFlow/kernels/compositional/ThermalAccumulationKernel.hpp" #include "physicsSolvers/fluidFlow/kernels/compositional/ResidualNormKernel.hpp" #include "physicsSolvers/fluidFlow/kernels/compositional/ThermalResidualNormKernel.hpp" #include "physicsSolvers/fluidFlow/kernels/compositional/SolutionScalingKernel.hpp" @@ -50,17 +48,20 @@ #include "physicsSolvers/fluidFlow/kernels/compositional/ThermalDiffusionDispersionFluxComputeKernel.hpp" #include "physicsSolvers/fluidFlow/kernels/compositional/StabilizedFluxComputeKernel.hpp" #include "physicsSolvers/fluidFlow/kernels/compositional/DissipationFluxComputeKernel.hpp" -#include "physicsSolvers/fluidFlow/kernels/compositional/PhaseMobilityKernel.hpp" -#include "physicsSolvers/fluidFlow/kernels/compositional/ThermalPhaseMobilityKernel.hpp" #include "physicsSolvers/fluidFlow/kernels/compositional/DirichletFluxComputeKernel.hpp" #include "physicsSolvers/fluidFlow/kernels/compositional/ThermalDirichletFluxComputeKernel.hpp" +#include "physicsSolvers/fluidFlow/kernels/compositional/PhaseMobilityKernel.hpp" +#include "physicsSolvers/fluidFlow/kernels/compositional/ThermalPhaseMobilityKernel.hpp" #include "physicsSolvers/fluidFlow/kernels/compositional/AquiferBCKernel.hpp" +#include "physicsSolvers/fluidFlow/kernels/compositional/CFLKernel.hpp" +#include "physicsSolvers/multiphysics/poromechanicsKernels/MultiphasePoromechanicsConformingFractures.hpp" namespace geos { using namespace dataRepository; using namespace constitutive; +using namespace compositionalMultiphaseUtilities; // for ScalingType CompositionalMultiphaseFVM::CompositionalMultiphaseFVM( const string & name, Group * const parent ) @@ -102,6 +103,18 @@ CompositionalMultiphaseFVM::CompositionalMultiphaseFVM( const string & name, setApplyDefaultValue( ScalingType::Global ). setDescription( "Solution scaling type." "Valid options:\n* " + EnumStrings< ScalingType >::concat( "\n* " ) ); + + this->registerWrapper( viewKeyStruct::gravityDensitySchemeString(), &m_gravityDensityScheme ). + setSizedFromParent( 0 ). + setInputFlag( InputFlags::OPTIONAL ). + setApplyDefaultValue( GravityDensityScheme::ArithmeticAverage ). + setDescription( "Scheme for density treatment in gravity" ); + + this->registerWrapper( viewKeyStruct::targetFlowCFLString(), &m_targetFlowCFL ). + setApplyDefaultValue( -1. ). + setInputFlag( InputFlags::OPTIONAL ). + setDescription( "Target CFL condition `CFL condition `_" + " when computing the next timestep." ); } void CompositionalMultiphaseFVM::postInputInitialization() @@ -114,6 +127,36 @@ void CompositionalMultiphaseFVM::postInputInitialization() } } +void CompositionalMultiphaseFVM::registerDataOnMesh( Group & meshBodies ) +{ + using namespace fields::flow; + + CompositionalMultiphaseBase::registerDataOnMesh( meshBodies ); + + if( m_targetFlowCFL > 0 ) + { + registerDataForCFL( meshBodies ); + } +} + +void CompositionalMultiphaseFVM::registerDataForCFL( Group & meshBodies ) +{ + forDiscretizationOnMeshTargets( meshBodies, [&]( string const &, + MeshLevel & mesh, + arrayView1d< string const > const & regionNames ) + { + mesh.getElemManager().forElementSubRegions( regionNames, + [&]( localIndex const, + ElementSubRegionBase & subRegion ) + { + subRegion.registerField< fields::flow::phaseOutflux >( getName()).reference().resizeDimension< 1 >( m_numPhases ); + subRegion.registerField< fields::flow::componentOutflux >( getName()).reference().resizeDimension< 1 >( m_numComponents ); + subRegion.registerField< fields::flow::phaseCFLNumber >( getName()); + subRegion.registerField< fields::flow::componentCFLNumber >( getName()); + } ); + } ); +} + void CompositionalMultiphaseFVM::initializePreSubGroups() { CompositionalMultiphaseBase::initializePreSubGroups(); @@ -122,14 +165,7 @@ void CompositionalMultiphaseFVM::initializePreSubGroups() ? LinearSolverParameters::MGR::StrategyType::thermalCompositionalMultiphaseFVM : LinearSolverParameters::MGR::StrategyType::compositionalMultiphaseFVM; - DomainPartition & domain = this->getGroupByPath< DomainPartition >( "/Problem/domain" ); - NumericalMethodsManager const & numericalMethodManager = domain.getNumericalMethodManager(); - FiniteVolumeManager const & fvManager = numericalMethodManager.getFiniteVolumeManager(); - if( !fvManager.hasGroup< FluxApproximationBase >( m_discretizationName ) ) - { - GEOS_ERROR( "A discretization deriving from FluxApproximationBase must be selected with CompositionalMultiphaseFlow" ); - } - + checkDiscretizationName(); } void CompositionalMultiphaseFVM::setupDofs( DomainPartition const & domain, @@ -166,6 +202,20 @@ void CompositionalMultiphaseFVM::assembleFluxTerms( real64 const dt, { GEOS_MARK_FUNCTION; + using namespace isothermalCompositionalMultiphaseFVMKernels; + + BitFlags< KernelFlags > kernelFlags; + if( m_hasCapPressure ) + kernelFlags.set( KernelFlags::CapPressure ); + if( m_hasDiffusion ) + kernelFlags.set( KernelFlags::Diffusion ); + if( m_hasDispersion ) + kernelFlags.set( KernelFlags::Dispersion ); + if( m_useTotalMassEquation ) + kernelFlags.set( KernelFlags::TotalMassEquation ); + if( m_gravityDensityScheme == GravityDensityScheme::PhasePresence ) + kernelFlags.set( KernelFlags::CheckPhasePresenceInGravity ); + forDiscretizationOnMeshTargets( domain.getMeshBodies(), [&]( string const &, MeshLevel const & mesh, arrayView1d< string const > const & ) @@ -174,6 +224,13 @@ void CompositionalMultiphaseFVM::assembleFluxTerms( real64 const dt, FiniteVolumeManager const & fvManager = numericalMethodManager.getFiniteVolumeManager(); FluxApproximationBase const & fluxApprox = fvManager.getFluxApproximation( m_discretizationName ); + auto const & upwindingParams = fluxApprox.upwindingParams(); + if( upwindingParams.upwindingScheme == UpwindingScheme::C1PPU && + isothermalCompositionalMultiphaseFVMKernelUtilities::epsC1PPU > 0 ) + kernelFlags.set( KernelFlags::C1PPU ); + else if( upwindingParams.upwindingScheme == UpwindingScheme::IHU ) + kernelFlags.set( KernelFlags::IHU ); + string const & elemDofKey = dofManager.getKey( viewKeyStruct::elemDofFieldString() ); fluxApprox.forAllStencils( mesh, [&] ( auto & stencil ) @@ -189,8 +246,7 @@ void CompositionalMultiphaseFVM::assembleFluxTerms( real64 const dt, m_numPhases, dofManager.rankOffset(), elemDofKey, - m_hasCapPressure, - m_useTotalMassEquation, + kernelFlags, getName(), mesh.getElemManager(), stencilWrapper, @@ -208,8 +264,7 @@ void CompositionalMultiphaseFVM::assembleFluxTerms( real64 const dt, m_numPhases, dofManager.rankOffset(), elemDofKey, - m_hasCapPressure, - m_useTotalMassEquation, + kernelFlags, getName(), mesh.getElemManager(), stencilWrapper, @@ -231,9 +286,7 @@ void CompositionalMultiphaseFVM::assembleFluxTerms( real64 const dt, m_numPhases, dofManager.rankOffset(), elemDofKey, - m_hasCapPressure, - m_useTotalMassEquation, - fluxApprox.upwindingParams(), + kernelFlags, getName(), mesh.getElemManager(), stencilWrapper, @@ -255,9 +308,7 @@ void CompositionalMultiphaseFVM::assembleFluxTerms( real64 const dt, m_numPhases, dofManager.rankOffset(), elemDofKey, - m_hasDiffusion, - m_hasDispersion, - m_useTotalMassEquation, + kernelFlags, getName(), mesh.getElemManager(), stencilWrapper, @@ -273,9 +324,7 @@ void CompositionalMultiphaseFVM::assembleFluxTerms( real64 const dt, m_numPhases, dofManager.rankOffset(), elemDofKey, - m_hasDiffusion, - m_hasDispersion, - m_useTotalMassEquation, + kernelFlags, getName(), mesh.getElemManager(), stencilWrapper, @@ -297,6 +346,14 @@ void CompositionalMultiphaseFVM::assembleStabilizedFluxTerms( real64 const dt, { GEOS_MARK_FUNCTION; + using namespace isothermalCompositionalMultiphaseFVMKernels; + + BitFlags< KernelFlags > kernelFlags; + if( m_hasCapPressure ) + kernelFlags.set( KernelFlags::CapPressure ); + if( m_useTotalMassEquation ) + kernelFlags.set( KernelFlags::TotalMassEquation ); + forDiscretizationOnMeshTargets( domain.getMeshBodies(), [&]( string const &, MeshLevel const & mesh, arrayView1d< string const > const & ) @@ -322,8 +379,7 @@ void CompositionalMultiphaseFVM::assembleStabilizedFluxTerms( real64 const dt, m_numPhases, dofManager.rankOffset(), elemDofKey, - m_hasCapPressure, - m_useTotalMassEquation, + kernelFlags, getName(), mesh.getElemManager(), stencilWrapper, @@ -441,7 +497,6 @@ real64 CompositionalMultiphaseFVM::calculateResidualNorm( real64 const & GEOS_UN globalResidualNorm.resize( numNorm ); if( m_isThermal ) { - if( normType == physicsSolverBaseKernels::NormType::Linf ) { physicsSolverBaseKernels::LinfResidualNormHelper:: @@ -588,8 +643,9 @@ real64 CompositionalMultiphaseFVM::scalingForSystemSolution( DomainPartition & d getName(), globalDeltaPresMax.value, globalDeltaPresMax.location ) ); + GEOS_LOG_LEVEL_INFO_RANK_0( logInfo::Solution, - GEOS_FMT( " {}: Max component density change = {:.3f} (before scaling) at cell {}", + GEOS_FMT( " {}: Max component density change = {:.3f} {} (before scaling) at cell {}", getName(), globalDeltaCompDensMax.value, massUnit, @@ -1009,6 +1065,12 @@ void CompositionalMultiphaseFVM::applyFaceDirichletBC( real64 const time_n, GEOS_ERROR_IF( !bcConsistent, GEOS_FMT( "CompositionalMultiphaseBase {}: inconsistent boundary conditions", getDataContext() ) ); } + using namespace isothermalCompositionalMultiphaseFVMKernels; + + BitFlags< KernelFlags > kernelFlags; + if( m_useTotalMassEquation ) + kernelFlags.set( KernelFlags::TotalMassEquation ); + FieldSpecificationManager & fsManager = FieldSpecificationManager::getInstance(); NumericalMethodsManager const & numericalMethodManager = domain.getNumericalMethodManager(); @@ -1071,7 +1133,7 @@ void CompositionalMultiphaseFVM::applyFaceDirichletBC( real64 const time_n, createAndLaunch< parallelDevicePolicy<> >( m_numComponents, m_numPhases, dofManager.rankOffset(), - m_useTotalMassEquation, + kernelFlags, elemDofKey, getName(), faceManager, @@ -1197,6 +1259,260 @@ void CompositionalMultiphaseFVM::applyAquiferBC( real64 const time, } +void CompositionalMultiphaseFVM::assembleHydrofracFluxTerms( real64 const GEOS_UNUSED_PARAM ( time_n ), + real64 const dt, + DomainPartition const & domain, + DofManager const & dofManager, + CRSMatrixView< real64, globalIndex const > const & localMatrix, + arrayView1d< real64 > const & localRhs, + CRSMatrixView< real64, localIndex const > const & dR_dAper ) +{ + GEOS_MARK_FUNCTION; + + NumericalMethodsManager const & numericalMethodManager = domain.getNumericalMethodManager(); + FiniteVolumeManager const & fvManager = numericalMethodManager.getFiniteVolumeManager(); + FluxApproximationBase const & fluxApprox = fvManager.getFluxApproximation( m_discretizationName ); + + string const & elemDofKey = dofManager.getKey( viewKeyStruct::elemDofFieldString() ); + + using namespace isothermalCompositionalMultiphaseFVMKernels; + + BitFlags< KernelFlags > kernelFlags; + if( m_hasCapPressure ) + kernelFlags.set( KernelFlags::CapPressure ); + if( m_useTotalMassEquation ) + kernelFlags.set( KernelFlags::TotalMassEquation ); + if( m_gravityDensityScheme == GravityDensityScheme::PhasePresence ) + kernelFlags.set( KernelFlags::CheckPhasePresenceInGravity ); + + if( m_isThermal ) + { + // should not end up here but just in case + GEOS_ERROR( "Thermal not yet supported in CompositionalMultiphaseFVM::assembleHydrofracFluxTerms" ); + } + if( fluxApprox.upwindingParams().upwindingScheme != UpwindingScheme::PPU ) + { + // a bit tricky to check in advance + GEOS_ERROR( "Only PPU upwinding is supported in CompositionalMultiphaseFVM::assembleHydrofracFluxTerms" ); + } + + this->forDiscretizationOnMeshTargets( domain.getMeshBodies(), [&] ( string const &, + MeshLevel const & mesh, + arrayView1d< string const > const & ) + { + fluxApprox.forStencils< CellElementStencilTPFA, FaceElementToCellStencil >( mesh, [&]( auto & stencil ) + { + typename TYPEOFREF( stencil ) ::KernelWrapper stencilWrapper = stencil.createKernelWrapper(); + + isothermalCompositionalMultiphaseFVMKernels:: + FluxComputeKernelFactory:: + createAndLaunch< parallelDevicePolicy<> >( m_numComponents, + m_numPhases, + dofManager.rankOffset(), + elemDofKey, + kernelFlags, + getName(), + mesh.getElemManager(), + stencilWrapper, + dt, + localMatrix.toViewConstSizes(), + localRhs.toView() ); + } ); + + fluxApprox.forStencils< SurfaceElementStencil >( mesh, [&]( auto & stencil ) + { + typename TYPEOFREF( stencil ) ::KernelWrapper stencilWrapper = stencil.createKernelWrapper(); + + multiphasePoromechanicsConformingFracturesKernels:: + FluxComputeKernelFactory::createAndLaunch< parallelDevicePolicy<> >( m_numComponents, + m_numPhases, + dofManager.rankOffset(), + elemDofKey, + kernelFlags, + getName(), + mesh.getElemManager(), + stencilWrapper, + dt, + localMatrix.toViewConstSizes(), + localRhs.toView(), + dR_dAper ); + } ); + } ); +} + +real64 CompositionalMultiphaseFVM::setNextDt( const geos::real64 & currentDt, geos::DomainPartition & domain ) +{ + if( m_targetFlowCFL < 0 ) + return CompositionalMultiphaseBase::setNextDt( currentDt, domain ); + else + return setNextDtBasedOnCFL( currentDt, domain ); +} + +real64 CompositionalMultiphaseFVM::setNextDtBasedOnCFL( const geos::real64 & currentDt, geos::DomainPartition & domain ) +{ + + real64 maxPhaseCFL, maxCompCFL; + + computeCFLNumbers( domain, currentDt, maxPhaseCFL, maxCompCFL ); + + GEOS_LOG_LEVEL_INFO_RANK_0( logInfo::TimeStep, GEOS_FMT( "{}: max phase CFL number = {}", getName(), maxPhaseCFL ) ); + GEOS_LOG_LEVEL_INFO_RANK_0( logInfo::TimeStep, GEOS_FMT( "{}: max component CFL number = {} ", getName(), maxCompCFL ) ); + + return std::min( m_targetFlowCFL * currentDt / maxCompCFL, + m_targetFlowCFL * currentDt / maxPhaseCFL ); +} + +void CompositionalMultiphaseFVM::computeCFLNumbers( geos::DomainPartition & domain, const geos::real64 & dt, + geos::real64 & maxPhaseCFL, geos::real64 & maxCompCFL ) +{ + GEOS_MARK_FUNCTION; + + integer const numPhases = numFluidPhases(); + integer const numComps = numFluidComponents(); + + // Step 1: reset the arrays involved in the computation of CFL numbers + forDiscretizationOnMeshTargets( domain.getMeshBodies(), [&]( string const &, + MeshLevel & mesh, + arrayView1d< string const > const & regionNames ) + { + mesh.getElemManager().forElementSubRegions( regionNames, + [&]( localIndex const, + ElementSubRegionBase & subRegion ) + { + arrayView2d< real64, compflow::USD_PHASE > const & phaseOutflux = + subRegion.getField< fields::flow::phaseOutflux >(); + arrayView2d< real64, compflow::USD_COMP > const & compOutflux = + subRegion.getField< fields::flow::componentOutflux >(); + phaseOutflux.zero(); + compOutflux.zero(); + } ); + + // Step 2: compute the total volumetric outflux for each reservoir cell by looping over faces + NumericalMethodsManager & numericalMethodManager = domain.getNumericalMethodManager(); + FiniteVolumeManager & fvManager = numericalMethodManager.getFiniteVolumeManager(); + FluxApproximationBase & fluxApprox = fvManager.getFluxApproximation( getDiscretizationName() ); + + isothermalCompositionalMultiphaseFVMKernels:: + CFLFluxKernel::CompFlowAccessors compFlowAccessors( mesh.getElemManager(), getName() ); + isothermalCompositionalMultiphaseFVMKernels:: + CFLFluxKernel::MultiFluidAccessors multiFluidAccessors( mesh.getElemManager(), getName() ); + isothermalCompositionalMultiphaseFVMKernels:: + CFLFluxKernel::PermeabilityAccessors permeabilityAccessors( mesh.getElemManager(), getName() ); + isothermalCompositionalMultiphaseFVMKernels:: + CFLFluxKernel::RelPermAccessors relPermAccessors( mesh.getElemManager(), getName() ); + + // TODO: find a way to compile with this modifiable accessors in CompFlowAccessors, and remove them from here + ElementRegionManager::ElementViewAccessor< arrayView2d< real64, compflow::USD_PHASE > > const phaseOutfluxAccessor = + mesh.getElemManager().constructViewAccessor< array2d< real64, compflow::LAYOUT_PHASE >, + arrayView2d< real64, compflow::USD_PHASE > >( fields::flow::phaseOutflux::key() ); + + ElementRegionManager::ElementViewAccessor< arrayView2d< real64, compflow::USD_COMP > > const compOutfluxAccessor = + mesh.getElemManager().constructViewAccessor< array2d< real64, compflow::LAYOUT_COMP >, + arrayView2d< real64, compflow::USD_COMP > >( fields::flow::componentOutflux::key() ); + + + fluxApprox.forAllStencils( mesh, [&] ( auto & stencil ) + { + typename TYPEOFREF( stencil ) ::KernelWrapper stencilWrapper = stencil.createKernelWrapper(); + + // While this kernel is waiting for a factory class, pass all the accessors here + isothermalCompositionalMultiphaseBaseKernels::KernelLaunchSelector1 + < isothermalCompositionalMultiphaseFVMKernels::CFLFluxKernel >( numComps, + numPhases, + m_gravityDensityScheme == GravityDensityScheme::PhasePresence, + dt, + stencilWrapper, + compFlowAccessors.get( fields::flow::pressure{} ), + compFlowAccessors.get( fields::flow::gravityCoefficient{} ), + compFlowAccessors.get( fields::flow::phaseVolumeFraction{} ), + permeabilityAccessors.get( fields::permeability::permeability{} ), + permeabilityAccessors.get( fields::permeability::dPerm_dPressure{} ), + relPermAccessors.get( fields::relperm::phaseRelPerm{} ), + multiFluidAccessors.get( fields::multifluid::phaseViscosity{} ), + multiFluidAccessors.get( fields::multifluid::phaseDensity{} ), + multiFluidAccessors.get( fields::multifluid::phaseMassDensity{} ), + multiFluidAccessors.get( fields::multifluid::phaseCompFraction{} ), + phaseOutfluxAccessor.toNestedView(), + compOutfluxAccessor.toNestedView() ); + } ); + } ); + + // Step 3: finalize the (cell-based) computation of the CFL numbers + real64 localMaxPhaseCFLNumber = 0.0; + real64 localMaxCompCFLNumber = 0.0; + + forDiscretizationOnMeshTargets( domain.getMeshBodies(), [&]( string const &, + MeshLevel & mesh, + arrayView1d< string const > const & regionNames ) + { + mesh.getElemManager().forElementSubRegions( regionNames, + [&]( localIndex const, + ElementSubRegionBase & subRegion ) + { + arrayView2d< real64 const, compflow::USD_PHASE > const & phaseOutflux = + subRegion.getField< fields::flow::phaseOutflux >(); + arrayView2d< real64 const, compflow::USD_COMP > const & compOutflux = + subRegion.getField< fields::flow::componentOutflux >(); + + arrayView1d< real64 > const & phaseCFLNumber = subRegion.getField< fields::flow::phaseCFLNumber >(); + arrayView1d< real64 > const & compCFLNumber = subRegion.getField< fields::flow::componentCFLNumber >(); + + arrayView1d< real64 const > const & volume = subRegion.getElementVolume(); + + arrayView2d< real64 const, compflow::USD_COMP > const & compDens = + subRegion.getField< fields::flow::globalCompDensity >(); + arrayView2d< real64 const, compflow::USD_COMP > const compFrac = + subRegion.getField< fields::flow::globalCompFraction >(); + arrayView2d< real64, compflow::USD_PHASE > const phaseVolFrac = + subRegion.getField< fields::flow::phaseVolumeFraction >(); + + Group const & constitutiveModels = subRegion.getGroup( ElementSubRegionBase::groupKeyStruct::constitutiveModelsString() ); + + string const & fluidName = subRegion.getReference< string >( CompositionalMultiphaseBase::viewKeyStruct::fluidNamesString() ); + MultiFluidBase const & fluid = constitutiveModels.getGroup< MultiFluidBase >( fluidName ); + arrayView3d< real64 const, multifluid::USD_PHASE > const & phaseVisc = fluid.phaseViscosity(); + + string const & relpermName = subRegion.getReference< string >( CompositionalMultiphaseBase::viewKeyStruct::relPermNamesString() ); + RelativePermeabilityBase const & relperm = constitutiveModels.getGroup< RelativePermeabilityBase >( relpermName ); + arrayView3d< real64 const, relperm::USD_RELPERM > const & phaseRelPerm = relperm.phaseRelPerm(); + arrayView4d< real64 const, relperm::USD_RELPERM_DS > const & dPhaseRelPerm_dPhaseVolFrac = relperm.dPhaseRelPerm_dPhaseVolFraction(); + + string const & solidName = subRegion.getReference< string >( CompositionalMultiphaseBase::viewKeyStruct::solidNamesString() ); + CoupledSolidBase const & solid = constitutiveModels.getGroup< CoupledSolidBase >( solidName ); + arrayView2d< real64 const > const & porosity = solid.getPorosity(); + + real64 subRegionMaxPhaseCFLNumber = 0.0; + real64 subRegionMaxCompCFLNumber = 0.0; + + isothermalCompositionalMultiphaseBaseKernels::KernelLaunchSelector2 + < isothermalCompositionalMultiphaseFVMKernels::CFLKernel >( numComps, numPhases, + subRegion.size(), + volume, + porosity, + compDens, + compFrac, + phaseVolFrac, + phaseRelPerm, + dPhaseRelPerm_dPhaseVolFrac, + phaseVisc, + phaseOutflux, + compOutflux, + phaseCFLNumber, + compCFLNumber, + subRegionMaxPhaseCFLNumber, + subRegionMaxCompCFLNumber ); + + localMaxPhaseCFLNumber = LvArray::math::max( localMaxPhaseCFLNumber, subRegionMaxPhaseCFLNumber ); + localMaxCompCFLNumber = LvArray::math::max( localMaxCompCFLNumber, subRegionMaxCompCFLNumber ); + + } ); + } ); + + maxPhaseCFL = MpiWrapper::max( localMaxPhaseCFLNumber ); + maxCompCFL = MpiWrapper::max( localMaxCompCFLNumber ); + +} + //START_SPHINX_INCLUDE_01 REGISTER_CATALOG_ENTRY( PhysicsSolverBase, CompositionalMultiphaseFVM, string const &, Group * const ) //END_SPHINX_INCLUDE_01 diff --git a/src/coreComponents/physicsSolvers/fluidFlow/CompositionalMultiphaseFVM.hpp b/src/coreComponents/physicsSolvers/fluidFlow/CompositionalMultiphaseFVM.hpp index 48efd363a96..14d66667035 100644 --- a/src/coreComponents/physicsSolvers/fluidFlow/CompositionalMultiphaseFVM.hpp +++ b/src/coreComponents/physicsSolvers/fluidFlow/CompositionalMultiphaseFVM.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -25,6 +25,26 @@ namespace geos { +/** + * @brief Options for density treatment in gravity + */ +enum class GravityDensityScheme : integer +{ + ArithmeticAverage, ///< average phase density is computed using simple arithmetic average: + /// rho_ave = 0.5 * (rho_i + rho_j) + PhasePresence, ///< average phase density is computed using checking for phase presence: + /// rho_ave = 0.5 * (rho_i + rho_j) if phase is present in both cells i and j + /// = rho_i if phase is present in only cell i + /// = rho_j if phase is present in only cell j +}; + +/** + * @brief Strings for options for density treatment in gravity + */ +ENUM_STRINGS( GravityDensityScheme, + "ArithmeticAverage", + "PhasePresence" ); + /** * @class CompositionalMultiphaseFVM * @@ -85,6 +105,11 @@ class CompositionalMultiphaseFVM : public CompositionalMultiphaseBase */ /**@{*/ + virtual void + registerDataOnMesh( Group & MeshBodies ) override; + + virtual void registerDataForCFL( Group & meshBodies ) override; + virtual void setupDofs( DomainPartition const & domain, DofManager & dofManager ) const override; @@ -138,6 +163,14 @@ class CompositionalMultiphaseFVM : public CompositionalMultiphaseBase CRSMatrixView< real64, globalIndex const > const & localMatrix, arrayView1d< real64 > const & localRhs ) const override; + virtual void + assembleHydrofracFluxTerms( real64 const time_n, + real64 const dt, + DomainPartition const & domain, + DofManager const & dofManager, + CRSMatrixView< real64, globalIndex const > const & localMatrix, + arrayView1d< real64 > const & localRhs, + CRSMatrixView< real64, localIndex const > const & dR_dAper ) override final; virtual void updatePhaseMobility( ObjectManagerBase & dataGroup ) const override; @@ -150,6 +183,20 @@ class CompositionalMultiphaseFVM : public CompositionalMultiphaseBase CRSMatrixView< real64, globalIndex const > const & localMatrix, arrayView1d< real64 > const & localRhs ) const override; + virtual void computeCFLNumbers( DomainPartition & domain, + real64 const & dt, + real64 & maxPhaseCFL, + real64 & maxCompCFL ) override; + + /** + * @brief function to set the next time step size + * @param[in] currentDt the current time step size + * @param[in] domain the domain object + * @return the prescribed time step size + */ + real64 setNextDt( real64 const & currentDt, + DomainPartition & domain ) override; + struct viewKeyStruct : CompositionalMultiphaseBase::viewKeyStruct { // DBC parameters @@ -162,16 +209,8 @@ class CompositionalMultiphaseFVM : public CompositionalMultiphaseBase static constexpr char const * contMultiplierDBCString() { return "contMultiplierDBC"; } // nonlinear solver parameters - static constexpr char const * scalingTypeString() { return "scalingType"; } - }; - - /** - * @brief Solution scaling type - */ - enum class ScalingType : integer - { - Global, ///< Scale the Newton update with a unique scaling factor - Local ///< Scale the Newton update locally (modifies the Newton direction) + static constexpr char const * scalingTypeString() { return "scalingType"; } + static constexpr char const * gravityDensitySchemeString() { return "gravityDensityScheme"; } }; /** @@ -191,8 +230,10 @@ class CompositionalMultiphaseFVM : public CompositionalMultiphaseBase virtual void postInputInitialization() override; - virtual void - initializePreSubGroups() override; + virtual void initializePreSubGroups() override; + + real64 setNextDtBasedOnCFL( real64 const & currentDt, + DomainPartition & domain ); struct DBCParameters { @@ -213,7 +254,13 @@ class CompositionalMultiphaseFVM : public CompositionalMultiphaseBase } m_dbcParams; /// Solution scaling type - ScalingType m_scalingType; + compositionalMultiphaseUtilities::ScalingType m_scalingType; + + /// scheme for density treatment in gravity + GravityDensityScheme m_gravityDensityScheme; + + /// the targeted CFL for timestep + real64 m_targetFlowCFL; private: @@ -245,10 +292,6 @@ class CompositionalMultiphaseFVM : public CompositionalMultiphaseBase }; -ENUM_STRINGS( CompositionalMultiphaseFVM::ScalingType, - "Global", - "Local" ); - } // namespace geos diff --git a/src/coreComponents/physicsSolvers/fluidFlow/CompositionalMultiphaseHybridFVM.cpp b/src/coreComponents/physicsSolvers/fluidFlow/CompositionalMultiphaseHybridFVM.cpp index bedfa0c3261..53415a507cd 100644 --- a/src/coreComponents/physicsSolvers/fluidFlow/CompositionalMultiphaseHybridFVM.cpp +++ b/src/coreComponents/physicsSolvers/fluidFlow/CompositionalMultiphaseHybridFVM.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -31,7 +31,6 @@ #include "physicsSolvers/fluidFlow/FlowSolverBaseFields.hpp" #include "physicsSolvers/fluidFlow/CompositionalMultiphaseBaseFields.hpp" #include "physicsSolvers/fluidFlow/kernels/compositional/CompositionalMultiphaseHybridFVMKernels.hpp" -#include "physicsSolvers/fluidFlow/kernels/compositional/AccumulationKernel.hpp" #include "physicsSolvers/fluidFlow/kernels/compositional/SolutionScalingKernel.hpp" #include "physicsSolvers/fluidFlow/kernels/compositional/SolutionCheckKernel.hpp" #include "physicsSolvers/fluidFlow/kernels/compositional/ResidualNormKernel.hpp" @@ -542,7 +541,7 @@ bool CompositionalMultiphaseHybridFVM::checkSystemSolution( DomainPartition & do SolutionCheckKernelFactory:: createAndLaunch< parallelDevicePolicy<> >( m_allowCompDensChopping, m_allowNegativePressure, - CompositionalMultiphaseFVM::ScalingType::Global, + compositionalMultiphaseUtilities::ScalingType::Global, scalingFactor, pressure, compDens, diff --git a/src/coreComponents/physicsSolvers/fluidFlow/CompositionalMultiphaseHybridFVM.hpp b/src/coreComponents/physicsSolvers/fluidFlow/CompositionalMultiphaseHybridFVM.hpp index 45bea1e810e..d133610a7b1 100644 --- a/src/coreComponents/physicsSolvers/fluidFlow/CompositionalMultiphaseHybridFVM.hpp +++ b/src/coreComponents/physicsSolvers/fluidFlow/CompositionalMultiphaseHybridFVM.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/fluidFlow/CompositionalMultiphaseStatistics.cpp b/src/coreComponents/physicsSolvers/fluidFlow/CompositionalMultiphaseStatistics.cpp index 1aea8723fd8..842c333bafe 100644 --- a/src/coreComponents/physicsSolvers/fluidFlow/CompositionalMultiphaseStatistics.cpp +++ b/src/coreComponents/physicsSolvers/fluidFlow/CompositionalMultiphaseStatistics.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -29,6 +29,9 @@ #include "physicsSolvers/fluidFlow/FlowSolverBaseFields.hpp" #include "physicsSolvers/fluidFlow/kernels/compositional/StatisticsKernel.hpp" #include "physicsSolvers/fluidFlow/LogLevelsInfo.hpp" +#include "common/format/table/TableData.hpp" +#include "common/format/table/TableFormatter.hpp" +#include "common/format/table/TableLayout.hpp" namespace geos @@ -104,60 +107,85 @@ void CompositionalMultiphaseStatistics::registerDataOnMesh( Group & meshBodies ) region.registerWrapper< RegionStatistics >( viewKeyStruct::regionStatisticsString() ). setRestartFlags( RestartFlags::NO_WRITE ); region.excludeWrappersFromPacking( { viewKeyStruct::regionStatisticsString() } ); - RegionStatistics & regionStatistics = region.getReference< RegionStatistics >( viewKeyStruct::regionStatisticsString() ); + RegionStatistics & stats = region.getReference< RegionStatistics >( viewKeyStruct::regionStatisticsString() ); - regionStatistics.phasePoreVolume.resizeDimension< 0 >( numPhases ); - regionStatistics.phaseMass.resizeDimension< 0 >( numPhases ); - regionStatistics.trappedPhaseMass.resizeDimension< 0 >( numPhases ); - regionStatistics.immobilePhaseMass.resizeDimension< 0 >( numPhases ); - regionStatistics.componentMass.resizeDimension< 0, 1 >( numPhases, numComps ); + stats.phasePoreVolume.resizeDimension< 0 >( numPhases ); + stats.phaseMass.resizeDimension< 0 >( numPhases ); + stats.trappedPhaseMass.resizeDimension< 0 >( numPhases ); + stats.immobilePhaseMass.resizeDimension< 0 >( numPhases ); + stats.componentMass.resizeDimension< 0, 1 >( numPhases, numComps ); - // write output header if( m_writeCSV > 0 && MpiWrapper::commRank() == 0 ) { - std::ofstream outputFile( m_outputDir + "/" + regionNames[i] + ".csv" ); - string_view massUnit = units::getSymbol( m_solver->getMassUnit() ); - outputFile << - "Time [s],Min pressure [Pa],Average pressure [Pa],Max pressure [Pa],Min delta pressure [Pa],Max delta pressure [Pa]," << - "Min temperature [Pa],Average temperature [Pa],Max temperature [Pa],Total dynamic pore volume [rm^3]"; - for( integer ip = 0; ip < numPhases; ++ip ) - outputFile << ",Phase " << ip << " dynamic pore volume [rm^3]"; - for( integer ip = 0; ip < numPhases; ++ip ) - outputFile << ",Phase " << ip << " mass [" << massUnit << "]"; - for( integer ip = 0; ip < numPhases; ++ip ) - outputFile << ",Trapped phase " << ip << " mass (metric 1) [" << massUnit << "]"; - for( integer ip = 0; ip < numPhases; ++ip ) - outputFile << ",Non-trapped phase " << ip << " mass (metric 1) [" << massUnit << "]"; - for( integer ip = 0; ip < numPhases; ++ip ) - outputFile << ",Immobile phase " << ip << " mass (metric 2) [" << massUnit << "]"; - for( integer ip = 0; ip < numPhases; ++ip ) - outputFile << ",Mobile phase " << ip << " mass (metric 2) [" << massUnit << "]"; - for( integer ip = 0; ip < numPhases; ++ip ) + auto addStatsValue = []( std::ostringstream & pstatsLayout, TableLayout & ptableLayout, + string const & description, string_view pmassUnit, + integer pnumPhases, integer pnumComps = 0 ) { - for( integer ic = 0; ic < numComps; ++ic ) - outputFile << ",Component " << ic << " (phase " << ip << ") mass [" << massUnit << "]"; - } - outputFile << std::endl; - outputFile.close(); + for( int ip = 0; ip < pnumPhases; ++ip ) + { + if( pnumComps == 0 ) + { + pstatsLayout << description << " (phase " << ip << ") [" << pmassUnit << "]"; + } + else + { + for( int ic = 0; ic < pnumComps; ++ic ) + { + pstatsLayout << "Component " << ic << " (phase " << ip << ") mass [" << pmassUnit << "]"; + if( ic == 0 ) + { + pstatsLayout << ","; + } + } + } + if( ip == 0 ) + { + pstatsLayout << ","; + } + } + + ptableLayout.addToColumns( pstatsLayout.str()); + pstatsLayout.str( "" ); + }; + + string_view massUnit = units::getSymbol( m_solver->getMassUnit() ); + + TableLayout tableLayout( { + TableLayout::Column().setName( "Time [s]" ), + TableLayout::Column().setName( "Min pressure [Pa]" ), + TableLayout::Column().setName( "Average pressure [Pa]" ), + TableLayout::Column().setName( "Max pressure [Pa]" ), + TableLayout::Column().setName( "Min delta pressure [Pa]" ), + TableLayout::Column().setName( "Max delta pressure [Pa]" ), + TableLayout::Column().setName( "Min temperature [Pa]" ), + TableLayout::Column().setName( "Average temperature [Pa]" ), + TableLayout::Column().setName( "Max temperature [Pa]" ), + TableLayout::Column().setName( "Total dynamic pore volume [rm^3]" ), + TableLayout::Column().setName( GEOS_FMT( "Phase mass [{}] dynamic pore volume [rm^3]", massUnit ) ), + } ); + + std::ostringstream statsLayout; + addStatsValue( statsLayout, tableLayout, "Phase dynamic pore volume", massUnit, numPhases ); + addStatsValue( statsLayout, tableLayout, "Phase", massUnit, numPhases ); + addStatsValue( statsLayout, tableLayout, "Trapped phase mass (metric 1)", massUnit, numPhases ); + addStatsValue( statsLayout, tableLayout, "Non-trapped phase mass (metric 1)", massUnit, numPhases ); + addStatsValue( statsLayout, tableLayout, "Immobile phase mass (metric 2)", massUnit, numPhases ); + addStatsValue( statsLayout, tableLayout, "Mobile phase mass (metric 2)", massUnit, numPhases ); + addStatsValue( statsLayout, tableLayout, "Component", massUnit, numPhases, numComps ); + + std::ofstream outputFile( m_outputDir + "/" + regionNames[i] + ".csv" ); + TableCSVFormatter csvFormatter( tableLayout ); + outputFile << csvFormatter.headerToString(); } } } - - // if we have to compute CFL numbers later, we need to register additional variables - if( m_computeCFLNumbers ) - { - elemManager.forElementSubRegions( regionNames, [&]( localIndex const, - ElementSubRegionBase & subRegion ) - { - subRegion.registerField< fields::flow::phaseOutflux >( getName() ). - reference().resizeDimension< 1 >( numPhases ); - subRegion.registerField< fields::flow::componentOutflux >( getName() ). - reference().resizeDimension< 1 >( numComps ); - subRegion.registerField< fields::flow::phaseCFLNumber >( getName() ); - subRegion.registerField< fields::flow::componentCFLNumber >( getName() ); - } ); - } } ); + + // if we have to compute CFL numbers later, we need to register additional variables + if( m_computeCFLNumbers ) + { + m_solver->registerDataForCFL( meshBodies ); + } } bool CompositionalMultiphaseStatistics::execute( real64 const time_n, @@ -201,27 +229,27 @@ void CompositionalMultiphaseStatistics::computeRegionStatistics( real64 const ti for( integer i = 0; i < regionNames.size(); ++i ) { ElementRegionBase & region = elemManager.getRegion( regionNames[i] ); - RegionStatistics & regionStatistics = region.getReference< RegionStatistics >( viewKeyStruct::regionStatisticsString() ); + RegionStatistics & stats = region.getReference< RegionStatistics >( viewKeyStruct::regionStatisticsString() ); - regionStatistics.averagePressure = 0.0; - regionStatistics.maxPressure = 0.0; - regionStatistics.minPressure = LvArray::NumericLimits< real64 >::max; + stats.averagePressure = 0.0; + stats.maxPressure = 0.0; + stats.minPressure = LvArray::NumericLimits< real64 >::max; - regionStatistics.maxDeltaPressure = -LvArray::NumericLimits< real64 >::max; - regionStatistics.minDeltaPressure = LvArray::NumericLimits< real64 >::max; + stats.maxDeltaPressure = -LvArray::NumericLimits< real64 >::max; + stats.minDeltaPressure = LvArray::NumericLimits< real64 >::max; - regionStatistics.averageTemperature = 0.0; - regionStatistics.maxTemperature = 0.0; - regionStatistics.minTemperature = LvArray::NumericLimits< real64 >::max; + stats.averageTemperature = 0.0; + stats.maxTemperature = 0.0; + stats.minTemperature = LvArray::NumericLimits< real64 >::max; - regionStatistics.totalPoreVolume = 0.0; - regionStatistics.totalUncompactedPoreVolume = 0.0; - regionStatistics.phasePoreVolume.setValues< serialPolicy >( 0.0 ); + stats.totalPoreVolume = 0.0; + stats.totalUncompactedPoreVolume = 0.0; + stats.phasePoreVolume.setValues< serialPolicy >( 0.0 ); - regionStatistics.phaseMass.setValues< serialPolicy >( 0.0 ); - regionStatistics.trappedPhaseMass.setValues< serialPolicy >( 0.0 ); - regionStatistics.immobilePhaseMass.setValues< serialPolicy >( 0.0 ); - regionStatistics.componentMass.setValues< serialPolicy >( 0.0 ); + stats.phaseMass.setValues< serialPolicy >( 0.0 ); + stats.trappedPhaseMass.setValues< serialPolicy >( 0.0 ); + stats.immobilePhaseMass.setValues< serialPolicy >( 0.0 ); + stats.componentMass.setValues< serialPolicy >( 0.0 ); } // Step 2: increment the average/min/max quantities for all the subRegions @@ -306,48 +334,48 @@ void CompositionalMultiphaseStatistics::computeRegionStatistics( real64 const ti subRegionComponentMass.toView() ); ElementRegionBase & region = elemManager.getRegion( ElementRegionBase::getParentRegion( subRegion ).getName() ); - RegionStatistics & regionStatistics = region.getReference< RegionStatistics >( viewKeyStruct::regionStatisticsString() ); + RegionStatistics & stats = region.getReference< RegionStatistics >( viewKeyStruct::regionStatisticsString() ); - regionStatistics.averagePressure += subRegionAvgPresNumerator; - if( subRegionMinPres < regionStatistics.minPressure ) + stats.averagePressure += subRegionAvgPresNumerator; + if( subRegionMinPres < stats.minPressure ) { - regionStatistics.minPressure = subRegionMinPres; + stats.minPressure = subRegionMinPres; } - if( subRegionMaxPres > regionStatistics.maxPressure ) + if( subRegionMaxPres > stats.maxPressure ) { - regionStatistics.maxPressure = subRegionMaxPres; + stats.maxPressure = subRegionMaxPres; } - if( subRegionMinDeltaPres < regionStatistics.minDeltaPressure ) + if( subRegionMinDeltaPres < stats.minDeltaPressure ) { - regionStatistics.minDeltaPressure = subRegionMinDeltaPres; + stats.minDeltaPressure = subRegionMinDeltaPres; } - if( subRegionMaxDeltaPres > regionStatistics.maxDeltaPressure ) + if( subRegionMaxDeltaPres > stats.maxDeltaPressure ) { - regionStatistics.maxDeltaPressure = subRegionMaxDeltaPres; + stats.maxDeltaPressure = subRegionMaxDeltaPres; } - regionStatistics.averageTemperature += subRegionAvgTempNumerator; - if( subRegionMinTemp < regionStatistics.minTemperature ) + stats.averageTemperature += subRegionAvgTempNumerator; + if( subRegionMinTemp < stats.minTemperature ) { - regionStatistics.minTemperature = subRegionMinTemp; + stats.minTemperature = subRegionMinTemp; } - if( subRegionMaxTemp > regionStatistics.maxTemperature ) + if( subRegionMaxTemp > stats.maxTemperature ) { - regionStatistics.maxTemperature = subRegionMaxTemp; + stats.maxTemperature = subRegionMaxTemp; } - regionStatistics.totalUncompactedPoreVolume += subRegionTotalUncompactedPoreVol; + stats.totalUncompactedPoreVolume += subRegionTotalUncompactedPoreVol; for( integer ip = 0; ip < numPhases; ++ip ) { - regionStatistics.phasePoreVolume[ip] += subRegionPhaseDynamicPoreVol[ip]; - regionStatistics.phaseMass[ip] += subRegionPhaseMass[ip]; - regionStatistics.trappedPhaseMass[ip] += subRegionTrappedPhaseMass[ip]; - regionStatistics.immobilePhaseMass[ip] += subRegionImmobilePhaseMass[ip]; + stats.phasePoreVolume[ip] += subRegionPhaseDynamicPoreVol[ip]; + stats.phaseMass[ip] += subRegionPhaseMass[ip]; + stats.trappedPhaseMass[ip] += subRegionTrappedPhaseMass[ip]; + stats.immobilePhaseMass[ip] += subRegionImmobilePhaseMass[ip]; for( integer ic = 0; ic < numComps; ++ic ) { - regionStatistics.componentMass[ip][ic] += subRegionComponentMass[ip][ic]; + stats.componentMass[ip][ic] += subRegionComponentMass[ip][ic]; } } @@ -357,40 +385,40 @@ void CompositionalMultiphaseStatistics::computeRegionStatistics( real64 const ti for( integer i = 0; i < regionNames.size(); ++i ) { ElementRegionBase & region = elemManager.getRegion( regionNames[i] ); - RegionStatistics & regionStatistics = region.getReference< RegionStatistics >( viewKeyStruct::regionStatisticsString() ); - - regionStatistics.minPressure = MpiWrapper::min( regionStatistics.minPressure ); - regionStatistics.maxPressure = MpiWrapper::max( regionStatistics.maxPressure ); - regionStatistics.minDeltaPressure = MpiWrapper::min( regionStatistics.minDeltaPressure ); - regionStatistics.maxDeltaPressure = MpiWrapper::max( regionStatistics.maxDeltaPressure ); - regionStatistics.minTemperature = MpiWrapper::min( regionStatistics.minTemperature ); - regionStatistics.maxTemperature = MpiWrapper::max( regionStatistics.maxTemperature ); - regionStatistics.totalUncompactedPoreVolume = MpiWrapper::sum( regionStatistics.totalUncompactedPoreVolume ); - regionStatistics.totalPoreVolume = 0.0; + RegionStatistics & stats = region.getReference< RegionStatistics >( viewKeyStruct::regionStatisticsString() ); + + stats.minPressure = MpiWrapper::min( stats.minPressure ); + stats.maxPressure = MpiWrapper::max( stats.maxPressure ); + stats.minDeltaPressure = MpiWrapper::min( stats.minDeltaPressure ); + stats.maxDeltaPressure = MpiWrapper::max( stats.maxDeltaPressure ); + stats.minTemperature = MpiWrapper::min( stats.minTemperature ); + stats.maxTemperature = MpiWrapper::max( stats.maxTemperature ); + stats.totalUncompactedPoreVolume = MpiWrapper::sum( stats.totalUncompactedPoreVolume ); + stats.totalPoreVolume = 0.0; for( integer ip = 0; ip < numPhases; ++ip ) { - regionStatistics.phasePoreVolume[ip] = MpiWrapper::sum( regionStatistics.phasePoreVolume[ip] ); - regionStatistics.phaseMass[ip] = MpiWrapper::sum( regionStatistics.phaseMass[ip] ); - regionStatistics.trappedPhaseMass[ip] = MpiWrapper::sum( regionStatistics.trappedPhaseMass[ip] ); - regionStatistics.immobilePhaseMass[ip] = MpiWrapper::sum( regionStatistics.immobilePhaseMass[ip] ); - regionStatistics.totalPoreVolume += regionStatistics.phasePoreVolume[ip]; + stats.phasePoreVolume[ip] = MpiWrapper::sum( stats.phasePoreVolume[ip] ); + stats.phaseMass[ip] = MpiWrapper::sum( stats.phaseMass[ip] ); + stats.trappedPhaseMass[ip] = MpiWrapper::sum( stats.trappedPhaseMass[ip] ); + stats.immobilePhaseMass[ip] = MpiWrapper::sum( stats.immobilePhaseMass[ip] ); + stats.totalPoreVolume += stats.phasePoreVolume[ip]; for( integer ic = 0; ic < numComps; ++ic ) { - regionStatistics.componentMass[ip][ic] = MpiWrapper::sum( regionStatistics.componentMass[ip][ic] ); + stats.componentMass[ip][ic] = MpiWrapper::sum( stats.componentMass[ip][ic] ); } } - regionStatistics.averagePressure = MpiWrapper::sum( regionStatistics.averagePressure ); - regionStatistics.averageTemperature = MpiWrapper::sum( regionStatistics.averageTemperature ); - if( regionStatistics.totalUncompactedPoreVolume > 0 ) + stats.averagePressure = MpiWrapper::sum( stats.averagePressure ); + stats.averageTemperature = MpiWrapper::sum( stats.averageTemperature ); + if( stats.totalUncompactedPoreVolume > 0 ) { - float invTotalUncompactedPoreVolume = 1.0 / regionStatistics.totalUncompactedPoreVolume; - regionStatistics.averagePressure *= invTotalUncompactedPoreVolume; - regionStatistics.averageTemperature *= invTotalUncompactedPoreVolume; + float invTotalUncompactedPoreVolume = 1.0 / stats.totalUncompactedPoreVolume; + stats.averagePressure *= invTotalUncompactedPoreVolume; + stats.averageTemperature *= invTotalUncompactedPoreVolume; } else { - regionStatistics.averagePressure = 0.0; - regionStatistics.averageTemperature = 0.0; + stats.averagePressure = 0.0; + stats.averageTemperature = 0.0; GEOS_LOG_LEVEL_INFO_RANK_0( logInfo::Statistics, GEOS_FMT( "{}, {}: Cannot compute average pressure because region pore volume is zero.", getName(), regionNames[i] ) ); } @@ -401,79 +429,108 @@ void CompositionalMultiphaseStatistics::computeRegionStatistics( real64 const ti array1d< real64 > mobilePhaseMass( numPhases ); for( integer ip = 0; ip < numPhases; ++ip ) { - nonTrappedPhaseMass[ip] = regionStatistics.phaseMass[ip] - regionStatistics.trappedPhaseMass[ip]; - mobilePhaseMass[ip] = regionStatistics.phaseMass[ip] - regionStatistics.immobilePhaseMass[ip]; + nonTrappedPhaseMass[ip] = stats.phaseMass[ip] - stats.trappedPhaseMass[ip]; + mobilePhaseMass[ip] = stats.phaseMass[ip] - stats.immobilePhaseMass[ip]; } string_view massUnit = units::getSymbol( m_solver->getMassUnit() ); - string statPrefix = GEOS_FMT( "{}, {} (time {} s):", getName(), regionNames[i], time ); - GEOS_LOG_LEVEL_INFO_RANK_0( logInfo::Statistics, - GEOS_FMT( "{} Pressure (min, average, max): {}, {}, {} Pa", - statPrefix, regionStatistics.minPressure, regionStatistics.averagePressure, regionStatistics.maxPressure ) ); - GEOS_LOG_LEVEL_INFO_RANK_0( logInfo::Statistics, - GEOS_FMT( "{} Delta pressure (min, max): {}, {} Pa", - statPrefix, regionStatistics.minDeltaPressure, regionStatistics.maxDeltaPressure ) ); - GEOS_LOG_LEVEL_INFO_RANK_0( logInfo::Statistics, - GEOS_FMT( "{} Temperature (min, average, max): {}, {}, {} K", - statPrefix, regionStatistics.minTemperature, regionStatistics.averageTemperature, - regionStatistics.maxTemperature ) ); - GEOS_LOG_LEVEL_INFO_RANK_0( logInfo::Statistics, - GEOS_FMT( "{} Total dynamic pore volume: {} rm^3", - statPrefix, regionStatistics.totalPoreVolume ) ); - GEOS_LOG_LEVEL_INFO_RANK_0( logInfo::Statistics, - GEOS_FMT( "{} Phase dynamic pore volume: {} rm^3", - statPrefix, regionStatistics.phasePoreVolume ) ); - GEOS_LOG_LEVEL_INFO_RANK_0( logInfo::Statistics, - GEOS_FMT( "{} Phase mass: {} {}", - statPrefix, regionStatistics.phaseMass, massUnit ) ); - - // metric 1: trapping computed with the Land trapping coefficient (similar to Eclipse) - GEOS_LOG_LEVEL_INFO_RANK_0( logInfo::Statistics, - GEOS_FMT( "{} Trapped phase mass (metric 1): {} {}", - statPrefix, regionStatistics.trappedPhaseMass, massUnit ) ); - GEOS_LOG_LEVEL_INFO_RANK_0( logInfo::Statistics, - GEOS_FMT( "{} Non-trapped phase mass (metric 1): {} {}", - statPrefix, nonTrappedPhaseMass, massUnit ) ); - - // metric 2: immobile phase mass computed with a threshold on relative permeability - GEOS_LOG_LEVEL_INFO_RANK_0( logInfo::Statistics, - GEOS_FMT( "{} Immobile phase mass (metric 2): {} {}", - statPrefix, regionStatistics.immobilePhaseMass, massUnit ) ); - GEOS_LOG_LEVEL_INFO_RANK_0( logInfo::Statistics, - GEOS_FMT( "{} Mobile phase mass (metric 2): {} {}", - statPrefix, mobilePhaseMass, massUnit ) ); - - GEOS_LOG_LEVEL_INFO_RANK_0( logInfo::Statistics, - GEOS_FMT( "{} Component mass: {} {}", - statPrefix, regionStatistics.componentMass, massUnit ) ); - if( m_writeCSV > 0 && MpiWrapper::commRank() == 0 ) + std::vector< string > phaseCompName; + phaseCompName.reserve( numPhases*numComps ); + std::vector< string > massValues; + phaseCompName.reserve( numPhases*numComps ); + + ConstitutiveManager const & constitutiveManager = this->getGroupByPath< ConstitutiveManager >( "/Problem/domain/Constitutive" ); + MultiFluidBase const & fluid = constitutiveManager.getGroup< MultiFluidBase >( m_solver->referenceFluidModelName() ); + auto const phaseNames = fluid.phaseNames(); + auto const componentNames = fluid.componentNames(); + for( integer ip = 0; ip < numPhases; ++ip ) { - std::ofstream outputFile( m_outputDir + "/" + regionNames[i] + ".csv", std::ios_base::app ); - outputFile << time << "," << regionStatistics.minPressure << "," << regionStatistics.averagePressure << "," << regionStatistics.maxPressure << "," << - regionStatistics.minDeltaPressure << "," << regionStatistics.maxDeltaPressure << "," << regionStatistics.minTemperature << "," << - regionStatistics.averageTemperature << "," << regionStatistics.maxTemperature << "," << regionStatistics.totalPoreVolume; - for( integer ip = 0; ip < numPhases; ++ip ) - outputFile << "," << regionStatistics.phasePoreVolume[ip]; - for( integer ip = 0; ip < numPhases; ++ip ) - outputFile << "," << regionStatistics.phaseMass[ip]; - for( integer ip = 0; ip < numPhases; ++ip ) - outputFile << "," << regionStatistics.trappedPhaseMass[ip]; - for( integer ip = 0; ip < numPhases; ++ip ) - outputFile << "," << nonTrappedPhaseMass[ip]; - for( integer ip = 0; ip < numPhases; ++ip ) - outputFile << "," << regionStatistics.immobilePhaseMass[ip]; - for( integer ip = 0; ip < numPhases; ++ip ) - outputFile << "," << mobilePhaseMass[ip]; - for( integer ip = 0; ip < numPhases; ++ip ) + for( integer ic = 0; ic < numComps; ++ic ) { - for( integer ic = 0; ic < numComps; ++ic ) - outputFile << "," << regionStatistics.componentMass[ip][ic]; + std::stringstream ss; + ss << phaseNames[ip]<< ", " < 0 && MpiWrapper::commRank() == 0 ) + { + TableData tableData; + tableData.addRow( time, stats.minPressure, stats.averagePressure, stats.maxPressure, stats.minDeltaPressure, stats.maxDeltaPressure, + stats.minTemperature, stats.averageTemperature, stats.maxTemperature, stats.totalPoreVolume, + stringutilities::joinLambda( stats.phasePoreVolume, "\n", []( auto data ) { return data[0]; } ), + stringutilities::joinLambda( stats.phaseMass, "\n", []( auto data ) { return data[0]; } ), + stringutilities::joinLambda( stats.trappedPhaseMass, "\n", []( auto value ) { return value[0]; } ), + stringutilities::joinLambda( nonTrappedPhaseMass, "\n", []( auto value ) { return value[0]; } ), + stringutilities::joinLambda( stats.immobilePhaseMass, "\n", []( auto value ) { return value[0]; } ), + stringutilities::joinLambda( mobilePhaseMass, "\n", []( auto value ) { return value[0]; } ), + stringutilities::join( massValues, '\n' ) ); + + std::ofstream outputFile( m_outputDir + "/" + regionNames[i] + ".csv", std::ios_base::app ); + TableCSVFormatter const csvOutput; + outputFile << csvOutput.dataToString( tableData ); outputFile.close(); } } + } void CompositionalMultiphaseStatistics::computeCFLNumbers( real64 const time, diff --git a/src/coreComponents/physicsSolvers/fluidFlow/CompositionalMultiphaseStatistics.hpp b/src/coreComponents/physicsSolvers/fluidFlow/CompositionalMultiphaseStatistics.hpp index ad81a74f521..f8f9afafa90 100644 --- a/src/coreComponents/physicsSolvers/fluidFlow/CompositionalMultiphaseStatistics.hpp +++ b/src/coreComponents/physicsSolvers/fluidFlow/CompositionalMultiphaseStatistics.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -118,8 +118,6 @@ class CompositionalMultiphaseStatistics : public FieldStatisticsBase< Compositio array1d< real64 > immobilePhaseMass; /// region component mass array2d< real64 > componentMass; - - }; /** diff --git a/src/coreComponents/physicsSolvers/fluidFlow/CompositionalMultiphaseUtilities.hpp b/src/coreComponents/physicsSolvers/fluidFlow/CompositionalMultiphaseUtilities.hpp index ea13aa7ec05..cbac0f13f2d 100644 --- a/src/coreComponents/physicsSolvers/fluidFlow/CompositionalMultiphaseUtilities.hpp +++ b/src/coreComponents/physicsSolvers/fluidFlow/CompositionalMultiphaseUtilities.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -28,6 +28,19 @@ namespace geos namespace compositionalMultiphaseUtilities { +/** + * @brief Solution scaling type, used in CompositionalMultiphaseFVM + */ +enum class ScalingType : integer +{ + Global, ///< Scale the Newton update with a unique scaling factor + Local ///< Scale the Newton update locally (modifies the Newton direction) +}; + +ENUM_STRINGS( ScalingType, + "Global", + "Local" ); + /** * @brief In each block, shift the elements from 0 to numRowsToShift-1 one position ahead and replaces the first element * with the sum of all elements from 0 to numRowsToShift-1 of the input block one-dimensional array of values. diff --git a/src/coreComponents/physicsSolvers/fluidFlow/FlowSolverBase.cpp b/src/coreComponents/physicsSolvers/fluidFlow/FlowSolverBase.cpp index f803e7c7e1e..fe3bad87c88 100644 --- a/src/coreComponents/physicsSolvers/fluidFlow/FlowSolverBase.cpp +++ b/src/coreComponents/physicsSolvers/fluidFlow/FlowSolverBase.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -143,6 +143,7 @@ void FlowSolverBase::registerDataOnMesh( Group & meshBodies ) [&]( localIndex const, ElementSubRegionBase & subRegion ) { + subRegion.registerField< fields::flow::deltaVolume >( getName() ); subRegion.registerField< fields::flow::gravityCoefficient >( getName() ). setApplyDefaultValue( 0.0 ); subRegion.registerField< fields::flow::netToGross >( getName() ); @@ -286,16 +287,6 @@ void FlowSolverBase::saveSequentialIterationState( DomainPartition & domain ) m_sequentialTempChange = m_isThermal ? MpiWrapper::max( maxTempChange ) : 0.0; } -void FlowSolverBase::enableFixedStressPoromechanicsUpdate() -{ - m_isFixedStressPoromechanicsUpdate = true; -} - -void FlowSolverBase::enableJumpStabilization() -{ - m_isJumpStabilized = true; -} - void FlowSolverBase::setConstitutiveNamesCallSuper( ElementSubRegionBase & subRegion ) const { PhysicsSolverBase::setConstitutiveNamesCallSuper( subRegion ); @@ -377,6 +368,18 @@ void FlowSolverBase::initializePreSubGroups() } } +void FlowSolverBase::checkDiscretizationName() const +{ + DomainPartition const & domain = this->getGroupByPath< DomainPartition >( "/Problem/domain" ); + NumericalMethodsManager const & numericalMethodManager = domain.getNumericalMethodManager(); + FiniteVolumeManager const & fvManager = numericalMethodManager.getFiniteVolumeManager(); + if( !fvManager.hasGroup< FluxApproximationBase >( m_discretizationName ) ) + { + GEOS_ERROR( GEOS_FMT( "{}: can not find discretization named '{}' (a discretization deriving from FluxApproximationBase must be selected for {} solver '{}' )", + getDataContext(), m_discretizationName, getCatalogName(), getName())); + } +} + void FlowSolverBase::validatePoreVolumes( DomainPartition const & domain ) const { real64 minPoreVolume = LvArray::NumericLimits< real64 >::max; @@ -455,6 +458,12 @@ void FlowSolverBase::initializePostInitialConditionsPreSubGroups() arrayView1d< string const > const & regionNames ) { precomputeData( mesh, regionNames ); + + FieldIdentifiers fieldsToBeSync; + fieldsToBeSync.addElementFields( { fields::flow::pressure::key(), fields::flow::temperature::key() }, + regionNames ); + + CommunicationTools::getInstance().synchronizeFields( fieldsToBeSync, mesh, domain.getNeighbors(), false ); } ); } @@ -491,6 +500,97 @@ void FlowSolverBase::precomputeData( MeshLevel & mesh, } } +void FlowSolverBase::initializeState( DomainPartition & domain ) +{ + // Compute hydrostatic equilibrium in the regions for which corresponding field specification tag has been specified + computeHydrostaticEquilibrium( domain ); + + forDiscretizationOnMeshTargets( domain.getMeshBodies(), [&]( string const &, + MeshLevel & mesh, + arrayView1d< string const > const & regionNames ) + { + initializePorosityAndPermeability( mesh, regionNames ); + initializeHydraulicAperture( mesh, regionNames ); + + // Initialize primary variables from applied initial conditions + initializeFluidState( mesh, regionNames ); + + // Initialize the rock thermal quantities: conductivity and solid internal energy + // Note: + // - This must be called after updatePorosityAndPermeability and updatePhaseVolumeFraction + // - This step depends on porosity and phaseVolFraction + if( m_isThermal ) + { + initializeThermalState( mesh, regionNames ); + } + + // Save initial pressure and temperature fields + saveInitialPressureAndTemperature( mesh, regionNames ); + } ); + + // report to the user if some pore volumes are very small + // note: this function is here because: 1) porosity has been initialized and 2) NTG has been applied + validatePoreVolumes( domain ); +} + +void FlowSolverBase::initializePorosityAndPermeability( MeshLevel & mesh, arrayView1d< string const > const & regionNames ) +{ + // Update porosity and permeability + // In addition, to avoid multiplying permeability/porosity bay netToGross in the assembly kernel, we do it once and for all here + mesh.getElemManager().forElementSubRegions< CellElementSubRegion, SurfaceElementSubRegion >( regionNames, [&]( localIndex const, + auto & subRegion ) + { + // Apply netToGross to reference porosity and horizontal permeability + CoupledSolidBase const & porousSolid = + getConstitutiveModel< CoupledSolidBase >( subRegion, subRegion.template getReference< string >( viewKeyStruct::solidNamesString() ) ); + PermeabilityBase const & permeability = + getConstitutiveModel< PermeabilityBase >( subRegion, subRegion.template getReference< string >( viewKeyStruct::permeabilityNamesString() ) ); + arrayView1d< real64 const > const netToGross = subRegion.template getField< fields::flow::netToGross >(); + porousSolid.scaleReferencePorosity( netToGross ); + permeability.scaleHorizontalPermeability( netToGross ); + + // in some initializeState versions it uses newPorosity, so let's run updatePorosityAndPermeability to compute something + saveConvergedState( subRegion ); // necessary for a meaningful porosity update in sequential schemes + updatePorosityAndPermeability( subRegion ); + porousSolid.initializeState(); + + // run final update + saveConvergedState( subRegion ); // necessary for a meaningful porosity update in sequential schemes + updatePorosityAndPermeability( subRegion ); + + // Save the computed porosity into the old porosity + // Note: + // - This must be called after updatePorosityAndPermeability + // - This step depends on porosity + porousSolid.saveConvergedState(); + } ); +} + +void FlowSolverBase::initializeHydraulicAperture( MeshLevel & mesh, const arrayView1d< const string > & regionNames ) +{ + mesh.getElemManager().forElementRegions< SurfaceElementRegion >( regionNames, + [&]( localIndex const, + SurfaceElementRegion & region ) + { + region.forElementSubRegions< SurfaceElementSubRegion >( [&]( SurfaceElementSubRegion & subRegion ) + { subRegion.getWrapper< real64_array >( fields::flow::hydraulicAperture::key()).setApplyDefaultValue( region.getDefaultAperture()); } ); + } ); +} + +void FlowSolverBase::saveInitialPressureAndTemperature( MeshLevel & mesh, const arrayView1d< const string > & regionNames ) +{ + mesh.getElemManager().forElementSubRegions( regionNames, [&]( localIndex const, + ElementSubRegionBase & subRegion ) + { + arrayView1d< real64 const > const pres = subRegion.getField< fields::flow::pressure >(); + arrayView1d< real64 > const initPres = subRegion.getField< fields::flow::initialPressure >(); + arrayView1d< real64 const > const temp = subRegion.getField< fields::flow::temperature >(); + arrayView1d< real64 > const initTemp = subRegion.template getField< fields::flow::initialTemperature >(); + initPres.setValues< parallelDevicePolicy<> >( pres ); + initTemp.setValues< parallelDevicePolicy<> >( temp ); + } ); +} + void FlowSolverBase::updatePorosityAndPermeability( CellElementSubRegion & subRegion ) const { GEOS_MARK_FUNCTION; @@ -583,15 +683,13 @@ void FlowSolverBase::findMinMaxElevationInEquilibriumTarget( DomainPartition & d } ); - MpiWrapper::allReduce( localMaxElevation.data(), - maxElevation.data(), - localMaxElevation.size(), - MpiWrapper::getMpiOp( MpiWrapper::Reduction::Max ), + MpiWrapper::allReduce( localMaxElevation.toView(), + maxElevation, + MpiWrapper::Reduction::Max, MPI_COMM_GEOS ); - MpiWrapper::allReduce( localMinElevation.data(), - minElevation.data(), - localMinElevation.size(), - MpiWrapper::getMpiOp( MpiWrapper::Reduction::Min ), + MpiWrapper::allReduce( localMinElevation.toView(), + minElevation, + MpiWrapper::Reduction::Min, MPI_COMM_GEOS ); } @@ -638,10 +736,9 @@ void FlowSolverBase::computeSourceFluxSizeScalingFactor( real64 const & time, } ); // synchronize the set size over all the MPI ranks - MpiWrapper::allReduce( bcAllSetsSize.data(), - bcAllSetsSize.data(), - bcAllSetsSize.size(), - MpiWrapper::getMpiOp( MpiWrapper::Reduction::Sum ), + MpiWrapper::allReduce( bcAllSetsSize, + bcAllSetsSize, + MpiWrapper::Reduction::Sum, MPI_COMM_GEOS ); } @@ -721,10 +818,9 @@ void FlowSolverBase::saveAquiferConvergedState( real64 const & time, localSumFluxes[aquiferIndex] += targetSetSumFluxes; } ); - MpiWrapper::allReduce( localSumFluxes.data(), - globalSumFluxes.data(), - localSumFluxes.size(), - MpiWrapper::getMpiOp( MpiWrapper::Reduction::Sum ), + MpiWrapper::allReduce( localSumFluxes, + globalSumFluxes, + MpiWrapper::Reduction::Sum, MPI_COMM_GEOS ); // Step 3: we are ready to save the summed fluxes for each individual aquifer diff --git a/src/coreComponents/physicsSolvers/fluidFlow/FlowSolverBase.hpp b/src/coreComponents/physicsSolvers/fluidFlow/FlowSolverBase.hpp index 6b65e91e979..19e79d90ab2 100644 --- a/src/coreComponents/physicsSolvers/fluidFlow/FlowSolverBase.hpp +++ b/src/coreComponents/physicsSolvers/fluidFlow/FlowSolverBase.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -100,9 +100,9 @@ class FlowSolverBase : public PhysicsSolverBase */ void updateStencilWeights( DomainPartition & domain ) const; - void enableFixedStressPoromechanicsUpdate(); + void enableFixedStressPoromechanicsUpdate() { m_isFixedStressPoromechanicsUpdate = true; } - void enableJumpStabilization(); + void enableJumpStabilization() { m_isJumpStabilized = true; } void updatePorosityAndPermeability( CellElementSubRegion & subRegion ) const; @@ -114,39 +114,12 @@ class FlowSolverBase : public PhysicsSolverBase */ virtual void saveSequentialIterationState( DomainPartition & domain ) override; - /** - * @brief For each equilibrium initial condition, loop over all the target cells and compute the min/max elevation - * @param[in] domain the domain partition - * @param[in] equilNameToEquilId the map from the name of the initial condition to the initial condition index (used in min/maxElevation) - * @param[out] maxElevation the max elevation for each initial condition - * @param[out] minElevation the min elevation for each initial condition - */ - void findMinMaxElevationInEquilibriumTarget( DomainPartition & domain, // cannot be const... - std::map< string, localIndex > const & equilNameToEquilId, - arrayView1d< real64 > const & maxElevation, - arrayView1d< real64 > const & minElevation ) const; - - /** - * @brief For each source flux boundary condition, loop over all the target cells and sum the owned cells - * @param[in] time the time at the beginning of the time step - * @param[in] dt the time step size - * @param[in] domain the domain partition - * @param[in] bcNameToBcId the map from the name of the boundary condition to the boundary condition index - * @param[out] bcAllSetsSize the total number of owned cells for each source flux boundary condition - */ - void computeSourceFluxSizeScalingFactor( real64 const & time, - real64 const & dt, - DomainPartition & domain, // cannot be const... - std::map< string, localIndex > const & bcNameToBcId, - arrayView1d< globalIndex > const & bcAllSetsSize ) const; - integer & isThermal() { return m_isThermal; } /** * @return The unit in which we evaluate the amount of fluid per element (Mass or Mole). */ - virtual units::Unit getMassUnit() const - { return units::Unit::Mass; } + virtual units::Unit getMassUnit() const { return units::Unit::Mass; } /** * @brief Function to activate the flag allowing negative pressure @@ -173,6 +146,58 @@ class FlowSolverBase : public PhysicsSolverBase real64 const & timeAtBeginningOfStep, real64 const & dt ); + /** + * @brief assembles the flux terms for all cells for the hydrofracture case + * @param time_n previous time value + * @param dt time step + * @param domain the physical domain object + * @param dofManager degree-of-freedom manager associated with the linear system + * @param localMatrix the system matrix + * @param localRhs the system right-hand side vector + * @param dR_dAper + */ + virtual void assembleHydrofracFluxTerms( real64 const time_n, + real64 const dt, + DomainPartition const & domain, + DofManager const & dofManager, + CRSMatrixView< real64, globalIndex const > const & localMatrix, + arrayView1d< real64 > const & localRhs, + CRSMatrixView< real64, localIndex const > const & dR_dAper ) + { + GEOS_UNUSED_VAR ( time_n, dt, domain, dofManager, localMatrix, localRhs, dR_dAper ); + GEOS_ERROR( "Poroelastic fluxes with conforming fractures not yet implemented." ); + } + + virtual void initializeFluidState( MeshLevel & mesh, const arrayView1d< const string > & regionNames ) { GEOS_UNUSED_VAR( mesh, regionNames ); } + + virtual void initializeThermalState( MeshLevel & mesh, const arrayView1d< const string > & regionNames ) { GEOS_UNUSED_VAR( mesh, regionNames ); } + + /** + * @brief For each equilibrium initial condition, loop over all the target cells and compute the min/max elevation + * @param[in] domain the domain partition + * @param[in] equilNameToEquilId the map from the name of the initial condition to the initial condition index (used in min/maxElevation) + * @param[out] maxElevation the max elevation for each initial condition + * @param[out] minElevation the min elevation for each initial condition + */ + void findMinMaxElevationInEquilibriumTarget( DomainPartition & domain, // cannot be const... + std::map< string, localIndex > const & equilNameToEquilId, + arrayView1d< real64 > const & maxElevation, + arrayView1d< real64 > const & minElevation ) const; + + /** + * @brief For each source flux boundary condition, loop over all the target cells and sum the owned cells + * @param[in] time the time at the beginning of the time step + * @param[in] dt the time step size + * @param[in] domain the domain partition + * @param[in] bcNameToBcId the map from the name of the boundary condition to the boundary condition index + * @param[out] bcAllSetsSize the total number of owned cells for each source flux boundary condition + */ + void computeSourceFluxSizeScalingFactor( real64 const & time, + real64 const & dt, + DomainPartition & domain, // cannot be const... + std::map< string, localIndex > const & bcNameToBcId, + arrayView1d< globalIndex > const & bcAllSetsSize ) const; + protected: /** @@ -205,8 +230,20 @@ class FlowSolverBase : public PhysicsSolverBase virtual void initializePreSubGroups() override; + void checkDiscretizationName() const; + virtual void initializePostInitialConditionsPreSubGroups() override; + void initializeState( DomainPartition & domain ); + + virtual void computeHydrostaticEquilibrium( DomainPartition & domain ) { GEOS_UNUSED_VAR( domain ); } + + void initializePorosityAndPermeability( MeshLevel & mesh, arrayView1d< string const > const & regionNames ); + + void initializeHydraulicAperture( MeshLevel & mesh, const arrayView1d< const string > & regionNames ); + + void saveInitialPressureAndTemperature( MeshLevel & mesh, const arrayView1d< const string > & regionNames ); + virtual void setConstitutiveNamesCallSuper( ElementSubRegionBase & subRegion ) const override; /// the number of Degrees of Freedom per cell diff --git a/src/coreComponents/physicsSolvers/fluidFlow/FlowSolverBaseFields.hpp b/src/coreComponents/physicsSolvers/fluidFlow/FlowSolverBaseFields.hpp index d9f01e908b9..ddb20e7bf5c 100644 --- a/src/coreComponents/physicsSolvers/fluidFlow/FlowSolverBaseFields.hpp +++ b/src/coreComponents/physicsSolvers/fluidFlow/FlowSolverBaseFields.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/fluidFlow/LogLevelsInfo.hpp b/src/coreComponents/physicsSolvers/fluidFlow/LogLevelsInfo.hpp index cd9f3eb5322..0f8c9eb60c3 100644 --- a/src/coreComponents/physicsSolvers/fluidFlow/LogLevelsInfo.hpp +++ b/src/coreComponents/physicsSolvers/fluidFlow/LogLevelsInfo.hpp @@ -2,10 +2,11 @@ * ------------------------------------------------------------------------------------------------------------ * SPDX-License-Identifier: LGPL-2.1-only * - * Copyright (c) 2018-2020 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2020 The Board of Trustees of the Leland Stanford Junior University - * Copyright (c) 2018-2020 TotalEnergies - * Copyright (c) 2019- GEOSX Contributors + * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC + * Copyright (c) 2018-2024 TotalEnergies + * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University + * Copyright (c) 2023-2024 Chevron + * Copyright (c) 2019- GEOS/GEOSX Contributors * All rights reserved * * See top level LICENSE, COPYRIGHT, CONTRIBUTORS, NOTICE, and ACKNOWLEDGEMENTS files for details. @@ -47,6 +48,25 @@ struct Statistics static constexpr std::string_view getDescription() { return "Print statistics"; } }; +struct AggregatedSourceFluxStats +{ + static constexpr int getMinLogLevel() { return 1; } + static constexpr std::string_view getDescription() { return "Print aggregated statistics of all source fluxes in a mesh"; } +}; + +struct DetailedSourceFluxStats +{ + static constexpr int getMinLogLevel() { return 2; } + static constexpr std::string_view getDescription() { return "Print statistics for each source flux in a mesh"; } +}; + +struct DetailedRegionsSourceFluxStats +{ + static constexpr int getMinLogLevel() { return 3; } + static constexpr std::string_view getDescription() { return "Print statistics for each source flux in each regions"; } +}; + + /// @endcond ///@} diff --git a/src/coreComponents/physicsSolvers/fluidFlow/ReactiveCompositionalMultiphaseOBL.cpp b/src/coreComponents/physicsSolvers/fluidFlow/ReactiveCompositionalMultiphaseOBL.cpp index 3d8143e0d83..4670d6425a4 100644 --- a/src/coreComponents/physicsSolvers/fluidFlow/ReactiveCompositionalMultiphaseOBL.cpp +++ b/src/coreComponents/physicsSolvers/fluidFlow/ReactiveCompositionalMultiphaseOBL.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -125,14 +125,7 @@ void ReactiveCompositionalMultiphaseOBL::initializePreSubGroups() { FlowSolverBase::initializePreSubGroups(); - DomainPartition & domain = this->getGroupByPath< DomainPartition >( "/Problem/domain" ); - NumericalMethodsManager const & numericalMethodManager = domain.getNumericalMethodManager(); - FiniteVolumeManager const & fvManager = numericalMethodManager.getFiniteVolumeManager(); - if( !fvManager.hasGroup< FluxApproximationBase >( m_discretizationName ) ) - { - GEOS_ERROR( "A discretization deriving from FluxApproximationBase must be selected with ReactiveCompositionalMultiphaseOBL" ); - } - + checkDiscretizationName(); } void ReactiveCompositionalMultiphaseOBL::setupDofs( DomainPartition const & domain, diff --git a/src/coreComponents/physicsSolvers/fluidFlow/ReactiveCompositionalMultiphaseOBL.hpp b/src/coreComponents/physicsSolvers/fluidFlow/ReactiveCompositionalMultiphaseOBL.hpp index 5f615600d9f..b510d9daf42 100644 --- a/src/coreComponents/physicsSolvers/fluidFlow/ReactiveCompositionalMultiphaseOBL.hpp +++ b/src/coreComponents/physicsSolvers/fluidFlow/ReactiveCompositionalMultiphaseOBL.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/fluidFlow/ReactiveCompositionalMultiphaseOBLFields.hpp b/src/coreComponents/physicsSolvers/fluidFlow/ReactiveCompositionalMultiphaseOBLFields.hpp index 84d9f0e5f54..d83c199f8be 100644 --- a/src/coreComponents/physicsSolvers/fluidFlow/ReactiveCompositionalMultiphaseOBLFields.hpp +++ b/src/coreComponents/physicsSolvers/fluidFlow/ReactiveCompositionalMultiphaseOBLFields.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/fluidFlow/SinglePhaseBase.cpp b/src/coreComponents/physicsSolvers/fluidFlow/SinglePhaseBase.cpp index 8261e822868..94f3d46a640 100644 --- a/src/coreComponents/physicsSolvers/fluidFlow/SinglePhaseBase.cpp +++ b/src/coreComponents/physicsSolvers/fluidFlow/SinglePhaseBase.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -40,8 +40,6 @@ #include "mesh/mpiCommunications/CommunicationTools.hpp" #include "physicsSolvers/fluidFlow/FlowSolverBaseFields.hpp" #include "physicsSolvers/fluidFlow/SinglePhaseBaseFields.hpp" -#include "physicsSolvers/fluidFlow/kernels/singlePhase/AccumulationKernels.hpp" -#include "physicsSolvers/fluidFlow/kernels/singlePhase/ThermalAccumulationKernels.hpp" #include "physicsSolvers/fluidFlow/kernels/singlePhase/MobilityKernel.hpp" #include "physicsSolvers/fluidFlow/kernels/singlePhase/SolutionCheckKernel.hpp" #include "physicsSolvers/fluidFlow/kernels/singlePhase/SolutionScalingKernel.hpp" @@ -95,15 +93,12 @@ void SinglePhaseBase::registerDataOnMesh( Group & meshBodies ) [&]( localIndex const, ElementSubRegionBase & subRegion ) { - subRegion.registerField< deltaVolume >( getName() ); - subRegion.registerField< mobility >( getName() ); subRegion.registerField< dMobility_dPressure >( getName() ); subRegion.registerField< fields::flow::mass >( getName() ); subRegion.registerField< fields::flow::mass_n >( getName() ); - if( m_isThermal ) { subRegion.registerField< dMobility_dTemperature >( getName() ); @@ -406,105 +401,12 @@ void SinglePhaseBase::initializePostInitialConditionsPreSubGroups() DomainPartition & domain = this->getGroupByPath< DomainPartition >( "/Problem/domain" ); - - forDiscretizationOnMeshTargets( domain.getMeshBodies(), [&]( string const &, - MeshLevel & mesh, - arrayView1d< string const > const & regionNames ) - { - FieldIdentifiers fieldsToBeSync; - fieldsToBeSync.addElementFields( { fields::flow::pressure::key() }, - regionNames ); - - CommunicationTools::getInstance().synchronizeFields( fieldsToBeSync, mesh, domain.getNeighbors(), false ); - - // Moved the following part from ImplicitStepSetup to here since it only needs to be initialized once - // They will be updated in applySystemSolution and ImplicitStepComplete, respectively - mesh.getElemManager().forElementSubRegions< CellElementSubRegion, SurfaceElementSubRegion >( regionNames, [&]( localIndex const, - auto & subRegion ) - { - // Compute hydrostatic equilibrium in the regions for which corresponding field specification tag has been specified - computeHydrostaticEquilibrium(); - - // 1. update porosity, permeability, and density/viscosity - // In addition, to avoid multiplying permeability/porosity bay netToGross in the assembly kernel, we do it once and for all here - arrayView1d< real64 const > const netToGross = subRegion.template getField< fields::flow::netToGross >(); - CoupledSolidBase const & porousSolid = - getConstitutiveModel< CoupledSolidBase >( subRegion, subRegion.template getReference< string >( viewKeyStruct::solidNamesString() ) ); - PermeabilityBase const & permeabilityModel = - getConstitutiveModel< PermeabilityBase >( subRegion, subRegion.template getReference< string >( viewKeyStruct::permeabilityNamesString() ) ); - permeabilityModel.scaleHorizontalPermeability( netToGross ); - porousSolid.scaleReferencePorosity( netToGross ); - saveConvergedState( subRegion ); // necessary for a meaningful porosity update in sequential schemes - updatePorosityAndPermeability( subRegion ); - - SingleFluidBase const & fluid = - getConstitutiveModel< SingleFluidBase >( subRegion, subRegion.template getReference< string >( viewKeyStruct::fluidNamesString() ) ); - updateFluidState( subRegion ); - - // 2. save the initial density (for use in the single-phase poromechanics solver to compute the deltaBodyForce) - fluid.initializeState(); - - // 3. save the initial/old porosity - porousSolid.initializeState(); - - // 4. initialize the rock thermal quantities: conductivity and solid internal energy - if( m_isThermal ) - { - // initialized porosity - arrayView2d< real64 const > const porosity = porousSolid.getPorosity(); - - string const & thermalConductivityName = subRegion.template getReference< string >( viewKeyStruct::thermalConductivityNamesString() ); - SinglePhaseThermalConductivityBase const & conductivityMaterial = - getConstitutiveModel< SinglePhaseThermalConductivityBase >( subRegion, thermalConductivityName ); - conductivityMaterial.initializeRockFluidState( porosity ); - // note that there is nothing to update here because thermal conductivity is explicit for now - - updateSolidInternalEnergyModel( subRegion ); - string const & solidInternalEnergyName = subRegion.template getReference< string >( viewKeyStruct::solidInternalEnergyNamesString() ); - SolidInternalEnergy const & solidInternalEnergyMaterial = - getConstitutiveModel< SolidInternalEnergy >( subRegion, solidInternalEnergyName ); - solidInternalEnergyMaterial.saveConvergedState(); - } - } ); - - mesh.getElemManager().forElementRegions< SurfaceElementRegion >( regionNames, - [&]( localIndex const, - SurfaceElementRegion & region ) - { - region.forElementSubRegions< FaceElementSubRegion >( [&]( FaceElementSubRegion & subRegion ) - { - subRegion.getWrapper< real64_array >( fields::flow::hydraulicAperture::key() ). - setApplyDefaultValue( region.getDefaultAperture() ); - } ); - } ); - - mesh.getElemManager().forElementSubRegions( regionNames, [&]( localIndex const, - ElementSubRegionBase & subRegion ) - { - // Save initial pressure field - arrayView1d< real64 const > const pres = subRegion.getField< fields::flow::pressure >(); - arrayView1d< real64 > const initPres = subRegion.getField< fields::flow::initialPressure >(); - arrayView1d< real64 const > const & temp = subRegion.template getField< fields::flow::temperature >(); - arrayView1d< real64 > const initTemp = subRegion.template getField< fields::flow::initialTemperature >(); - initPres.setValues< parallelDevicePolicy<> >( pres ); - initTemp.setValues< parallelDevicePolicy<> >( temp ); - - // finally update mass and energy - updateMass( subRegion ); - if( m_isThermal ) - updateEnergy( subRegion ); - } ); - } ); - - // report to the user if some pore volumes are very small - // note: this function is here because: 1) porosity has been initialized and 2) NTG has been applied - validatePoreVolumes( domain ); + FlowSolverBase::initializeState( domain ); } -void SinglePhaseBase::computeHydrostaticEquilibrium() +void SinglePhaseBase::computeHydrostaticEquilibrium( DomainPartition & domain ) { FieldSpecificationManager & fsManager = FieldSpecificationManager::getInstance(); - DomainPartition & domain = this->getGroupByPath< DomainPartition >( "/Problem/domain" ); real64 const gravVector[3] = LVARRAY_TENSOROPS_INIT_LOCAL_3( gravityVector() ); @@ -678,6 +580,48 @@ void SinglePhaseBase::computeHydrostaticEquilibrium() } ); } +void SinglePhaseBase::initializeFluidState( MeshLevel & mesh, arrayView1d< string const > const & regionNames ) +{ + mesh.getElemManager().forElementSubRegions< CellElementSubRegion, SurfaceElementSubRegion >( regionNames, [&]( localIndex const, + auto & subRegion ) + { + SingleFluidBase const & fluid = + getConstitutiveModel< SingleFluidBase >( subRegion, subRegion.template getReference< string >( viewKeyStruct::fluidNamesString())); + updateFluidState( subRegion ); + + // 2. save the initial density (for use in the single-phase poromechanics solver to compute the deltaBodyForce) + fluid.initializeState(); + + updateMass( subRegion ); + } ); +} + +void SinglePhaseBase::initializeThermalState( MeshLevel & mesh, arrayView1d< string const > const & regionNames ) +{ + mesh.getElemManager().forElementSubRegions< CellElementSubRegion, SurfaceElementSubRegion >( regionNames, [&]( localIndex const, + auto & subRegion ) + { + // initialized porosity + CoupledSolidBase const & porousSolid = + getConstitutiveModel< CoupledSolidBase >( subRegion, subRegion.template getReference< string >( viewKeyStruct::solidNamesString() ) ); + arrayView2d< real64 const > const porosity = porousSolid.getPorosity(); + + string const & thermalConductivityName = subRegion.template getReference< string >( viewKeyStruct::thermalConductivityNamesString()); + SinglePhaseThermalConductivityBase const & conductivityMaterial = + getConstitutiveModel< SinglePhaseThermalConductivityBase >( subRegion, thermalConductivityName ); + conductivityMaterial.initializeRockFluidState( porosity ); + // note that there is nothing to update here because thermal conductivity is explicit for now + + updateSolidInternalEnergyModel( subRegion ); + string const & solidInternalEnergyName = subRegion.template getReference< string >( viewKeyStruct::solidInternalEnergyNamesString()); + SolidInternalEnergy const & solidInternalEnergyMaterial = + getConstitutiveModel< SolidInternalEnergy >( subRegion, solidInternalEnergyName ); + solidInternalEnergyMaterial.saveConvergedState(); + + updateEnergy( subRegion ); + } ); +} + void SinglePhaseBase::implicitStepSetup( real64 const & GEOS_UNUSED_PARAM( time_n ), real64 const & GEOS_UNUSED_PARAM( dt ), DomainPartition & domain ) @@ -707,8 +651,8 @@ void SinglePhaseBase::implicitStepSetup( real64 const & GEOS_UNUSED_PARAM( time_ } ); - mesh.getElemManager().forElementSubRegions< FaceElementSubRegion >( regionNames, [&]( localIndex const, - FaceElementSubRegion & subRegion ) + mesh.getElemManager().forElementSubRegions< SurfaceElementSubRegion >( regionNames, [&]( localIndex const, + SurfaceElementSubRegion & subRegion ) { arrayView1d< real64 const > const aper = subRegion.getField< fields::flow::hydraulicAperture >(); arrayView1d< real64 > const aper0 = subRegion.getField< fields::flow::aperture0 >(); @@ -728,6 +672,7 @@ void SinglePhaseBase::implicitStepSetup( real64 const & GEOS_UNUSED_PARAM( time_ fluid.saveConvergedState(); } ); + } ); } @@ -791,8 +736,8 @@ void SinglePhaseBase::implicitStepComplete( real64 const & time, } ); - mesh.getElemManager().forElementSubRegions< FaceElementSubRegion >( regionNames, [&]( localIndex const, - FaceElementSubRegion & subRegion ) + mesh.getElemManager().forElementSubRegions< SurfaceElementSubRegion >( regionNames, [&]( localIndex const, + SurfaceElementSubRegion & subRegion ) { arrayView1d< integer const > const elemGhostRank = subRegion.ghostRank(); arrayView1d< real64 const > const volume = subRegion.getElementVolume(); @@ -817,7 +762,6 @@ void SinglePhaseBase::implicitStepComplete( real64 const & time, } } ); } ); - } ); } diff --git a/src/coreComponents/physicsSolvers/fluidFlow/SinglePhaseBase.hpp b/src/coreComponents/physicsSolvers/fluidFlow/SinglePhaseBase.hpp index bf1cd19eadd..a4049c28a87 100644 --- a/src/coreComponents/physicsSolvers/fluidFlow/SinglePhaseBase.hpp +++ b/src/coreComponents/physicsSolvers/fluidFlow/SinglePhaseBase.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -205,25 +205,6 @@ class SinglePhaseBase : public FlowSolverBase arrayView1d< real64 > const & localRhs, string const & jumpDofKey ) = 0; - /** - * @brief assembles the flux terms for all cells for the hydrofracture case - * @param time_n previous time value - * @param dt time step - * @param domain the physical domain object - * @param dofManager degree-of-freedom manager associated with the linear system - * @param localMatrix the system matrix - * @param localRhs the system right-hand side vector - * @param dR_dAper - */ - virtual void - assembleHydrofracFluxTerms( real64 const time_n, - real64 const dt, - DomainPartition const & domain, - DofManager const & dofManager, - CRSMatrixView< real64, globalIndex const > const & localMatrix, - arrayView1d< real64 > const & localRhs, - CRSMatrixView< real64, localIndex const > const & dR_dAper ) = 0; - struct viewKeyStruct : FlowSolverBase::viewKeyStruct { static constexpr char const * elemDofFieldString() { return "singlePhaseVariables"; } @@ -335,10 +316,14 @@ class SinglePhaseBase : public FlowSolverBase virtual void initializePostInitialConditionsPreSubGroups() override; + virtual void initializeFluidState( MeshLevel & mesh, arrayView1d< string const > const & regionNames ) override; + + virtual void initializeThermalState( MeshLevel & mesh, arrayView1d< string const > const & regionNames ) override; + /** * @brief Compute the hydrostatic equilibrium using the compositions and temperature input tables */ - void computeHydrostaticEquilibrium(); + virtual void computeHydrostaticEquilibrium( DomainPartition & domain ) override; /** * @brief Update the cell-wise pressure gradient diff --git a/src/coreComponents/physicsSolvers/fluidFlow/SinglePhaseBaseFields.hpp b/src/coreComponents/physicsSolvers/fluidFlow/SinglePhaseBaseFields.hpp index 8b3f80b95c9..b68848e634f 100644 --- a/src/coreComponents/physicsSolvers/fluidFlow/SinglePhaseBaseFields.hpp +++ b/src/coreComponents/physicsSolvers/fluidFlow/SinglePhaseBaseFields.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/fluidFlow/SinglePhaseFVM.cpp b/src/coreComponents/physicsSolvers/fluidFlow/SinglePhaseFVM.cpp index b87ce6bcf75..5da5846273c 100644 --- a/src/coreComponents/physicsSolvers/fluidFlow/SinglePhaseFVM.cpp +++ b/src/coreComponents/physicsSolvers/fluidFlow/SinglePhaseFVM.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -33,8 +33,6 @@ #include "fieldSpecification/AquiferBoundaryCondition.hpp" #include "physicsSolvers/fluidFlow/FlowSolverBaseFields.hpp" #include "physicsSolvers/fluidFlow/SinglePhaseBaseFields.hpp" -#include "physicsSolvers/fluidFlow/kernels/singlePhase/AccumulationKernels.hpp" -#include "physicsSolvers/fluidFlow/kernels/singlePhase/ThermalAccumulationKernels.hpp" #include "physicsSolvers/fluidFlow/kernels/singlePhase/ResidualNormKernel.hpp" #include "physicsSolvers/fluidFlow/kernels/singlePhase/FluxComputeKernel.hpp" #include "physicsSolvers/fluidFlow/kernels/singlePhase/ThermalFluxComputeKernel.hpp" @@ -70,14 +68,7 @@ void SinglePhaseFVM< BASE >::initializePreSubGroups() { BASE::initializePreSubGroups(); - DomainPartition & domain = this->template getGroupByPath< DomainPartition >( "/Problem/domain" ); - NumericalMethodsManager const & numericalMethodManager = domain.getNumericalMethodManager(); - FiniteVolumeManager const & fvManager = numericalMethodManager.getFiniteVolumeManager(); - - if( !fvManager.hasGroup< FluxApproximationBase >( m_discretizationName ) ) - { - GEOS_ERROR( "A discretization deriving from FluxApproximationBase must be selected with SinglePhaseFVM" ); - } + this->checkDiscretizationName(); if( m_isThermal ) { diff --git a/src/coreComponents/physicsSolvers/fluidFlow/SinglePhaseFVM.hpp b/src/coreComponents/physicsSolvers/fluidFlow/SinglePhaseFVM.hpp index b93ce7e6b33..49926bcf5a1 100644 --- a/src/coreComponents/physicsSolvers/fluidFlow/SinglePhaseFVM.hpp +++ b/src/coreComponents/physicsSolvers/fluidFlow/SinglePhaseFVM.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/fluidFlow/SinglePhaseHybridFVM.cpp b/src/coreComponents/physicsSolvers/fluidFlow/SinglePhaseHybridFVM.cpp index 233eb1d1363..5884b6fc416 100644 --- a/src/coreComponents/physicsSolvers/fluidFlow/SinglePhaseHybridFVM.cpp +++ b/src/coreComponents/physicsSolvers/fluidFlow/SinglePhaseHybridFVM.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -311,25 +311,6 @@ void SinglePhaseHybridFVM::assembleEDFMFluxTerms( real64 const GEOS_UNUSED_PARAM localRhs ); } -void SinglePhaseHybridFVM::assembleHydrofracFluxTerms( real64 const time_n, - real64 const dt, - DomainPartition const & domain, - DofManager const & dofManager, - CRSMatrixView< real64, globalIndex const > const & localMatrix, - arrayView1d< real64 > const & localRhs, - CRSMatrixView< real64, localIndex const > const & dR_dAper ) -{ - GEOS_UNUSED_VAR ( time_n ); - GEOS_UNUSED_VAR ( dt ); - GEOS_UNUSED_VAR ( domain ); - GEOS_UNUSED_VAR ( dofManager ); - GEOS_UNUSED_VAR ( localMatrix ); - GEOS_UNUSED_VAR ( localRhs ); - GEOS_UNUSED_VAR ( dR_dAper ); - - GEOS_ERROR( "Poroelastic fluxes with conforming fractures not yet implemented." ); -} - void SinglePhaseHybridFVM::applyBoundaryConditions( real64 const time_n, real64 const dt, DomainPartition & domain, diff --git a/src/coreComponents/physicsSolvers/fluidFlow/SinglePhaseHybridFVM.hpp b/src/coreComponents/physicsSolvers/fluidFlow/SinglePhaseHybridFVM.hpp index a1ae07fb5b5..b2910490508 100644 --- a/src/coreComponents/physicsSolvers/fluidFlow/SinglePhaseHybridFVM.hpp +++ b/src/coreComponents/physicsSolvers/fluidFlow/SinglePhaseHybridFVM.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -142,15 +142,6 @@ class SinglePhaseHybridFVM : public SinglePhaseBase arrayView1d< real64 > const & localRhs, string const & jumpDofKey ) override final; - virtual void - assembleHydrofracFluxTerms( real64 const time_n, - real64 const dt, - DomainPartition const & domain, - DofManager const & dofManager, - CRSMatrixView< real64, globalIndex const > const & localMatrix, - arrayView1d< real64 > const & localRhs, - CRSMatrixView< real64, localIndex const > const & dR_dAper ) override final; - virtual void applyAquiferBC( real64 const time, real64 const dt, diff --git a/src/coreComponents/physicsSolvers/fluidFlow/SinglePhaseProppantBase.cpp b/src/coreComponents/physicsSolvers/fluidFlow/SinglePhaseProppantBase.cpp index 0a5ccd5d41e..d5273602f58 100644 --- a/src/coreComponents/physicsSolvers/fluidFlow/SinglePhaseProppantBase.cpp +++ b/src/coreComponents/physicsSolvers/fluidFlow/SinglePhaseProppantBase.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/fluidFlow/SinglePhaseProppantBase.hpp b/src/coreComponents/physicsSolvers/fluidFlow/SinglePhaseProppantBase.hpp index ab07e60f9aa..f8d2e5c9a0b 100644 --- a/src/coreComponents/physicsSolvers/fluidFlow/SinglePhaseProppantBase.hpp +++ b/src/coreComponents/physicsSolvers/fluidFlow/SinglePhaseProppantBase.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/fluidFlow/SinglePhaseStatistics.cpp b/src/coreComponents/physicsSolvers/fluidFlow/SinglePhaseStatistics.cpp index fca8f4cfc99..b92701b6ee1 100644 --- a/src/coreComponents/physicsSolvers/fluidFlow/SinglePhaseStatistics.cpp +++ b/src/coreComponents/physicsSolvers/fluidFlow/SinglePhaseStatistics.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -27,6 +27,9 @@ #include "physicsSolvers/fluidFlow/SinglePhaseBaseFields.hpp" #include "physicsSolvers/fluidFlow/kernels/singlePhase/StatisticsKernel.hpp" #include "physicsSolvers/fluidFlow/LogLevelsInfo.hpp" +#include "common/format/table/TableData.hpp" +#include "common/format/table/TableFormatter.hpp" +#include "common/format/table/TableLayout.hpp" namespace geos { @@ -101,28 +104,27 @@ void SinglePhaseStatistics::computeRegionStatistics( real64 const time, arrayView1d< string const > const & regionNames ) const { GEOS_MARK_FUNCTION; - // Step 1: initialize the average/min/max quantities ElementRegionManager & elemManager = mesh.getElemManager(); for( integer i = 0; i < regionNames.size(); ++i ) { ElementRegionBase & region = elemManager.getRegion( regionNames[i] ); - RegionStatistics & regionStatistics = region.getReference< RegionStatistics >( viewKeyStruct::regionStatisticsString() ); + RegionStatistics & stats = region.getReference< RegionStatistics >( viewKeyStruct::regionStatisticsString() ); - regionStatistics.averagePressure = 0.0; - regionStatistics.maxPressure = -LvArray::NumericLimits< real64 >::max; - regionStatistics.minPressure = LvArray::NumericLimits< real64 >::max; + stats.averagePressure = 0.0; + stats.maxPressure = -LvArray::NumericLimits< real64 >::max; + stats.minPressure = LvArray::NumericLimits< real64 >::max; - regionStatistics.maxDeltaPressure = -LvArray::NumericLimits< real64 >::max; - regionStatistics.minDeltaPressure = LvArray::NumericLimits< real64 >::max; + stats.maxDeltaPressure = -LvArray::NumericLimits< real64 >::max; + stats.minDeltaPressure = LvArray::NumericLimits< real64 >::max; - regionStatistics.averageTemperature = 0.0; - regionStatistics.maxTemperature = -LvArray::NumericLimits< real64 >::max; - regionStatistics.minTemperature = LvArray::NumericLimits< real64 >::max; + stats.averageTemperature = 0.0; + stats.maxTemperature = -LvArray::NumericLimits< real64 >::max; + stats.minTemperature = LvArray::NumericLimits< real64 >::max; - regionStatistics.totalPoreVolume = 0.0; - regionStatistics.totalUncompactedPoreVolume = 0.0; - regionStatistics.totalMass = 0.0; + stats.totalPoreVolume = 0.0; + stats.totalUncompactedPoreVolume = 0.0; + stats.totalMass = 0.0; } // Step 2: increment the average/min/max quantities for all the subRegions @@ -181,101 +183,103 @@ void SinglePhaseStatistics::computeRegionStatistics( real64 const time, subRegionTotalMass ); ElementRegionBase & region = elemManager.getRegion( ElementRegionBase::getParentRegion( subRegion ).getName() ); - RegionStatistics & regionStatistics = region.getReference< RegionStatistics >( viewKeyStruct::regionStatisticsString() ); + RegionStatistics & stats = region.getReference< RegionStatistics >( viewKeyStruct::regionStatisticsString() ); - regionStatistics.averagePressure += subRegionAvgPresNumerator; - if( subRegionMinPres < regionStatistics.minPressure ) + stats.averagePressure += subRegionAvgPresNumerator; + if( subRegionMinPres < stats.minPressure ) { - regionStatistics.minPressure = subRegionMinPres; + stats.minPressure = subRegionMinPres; } - if( subRegionMaxPres > regionStatistics.maxPressure ) + if( subRegionMaxPres > stats.maxPressure ) { - regionStatistics.maxPressure = subRegionMaxPres; + stats.maxPressure = subRegionMaxPres; } - if( subRegionMinDeltaPres < regionStatistics.minDeltaPressure ) + if( subRegionMinDeltaPres < stats.minDeltaPressure ) { - regionStatistics.minDeltaPressure = subRegionMinDeltaPres; + stats.minDeltaPressure = subRegionMinDeltaPres; } - if( subRegionMaxDeltaPres > regionStatistics.maxDeltaPressure ) + if( subRegionMaxDeltaPres > stats.maxDeltaPressure ) { - regionStatistics.maxDeltaPressure = subRegionMaxDeltaPres; + stats.maxDeltaPressure = subRegionMaxDeltaPres; } - regionStatistics.averageTemperature += subRegionAvgTempNumerator; - if( subRegionMinTemp < regionStatistics.minTemperature ) + stats.averageTemperature += subRegionAvgTempNumerator; + if( subRegionMinTemp < stats.minTemperature ) { - regionStatistics.minTemperature = subRegionMinTemp; + stats.minTemperature = subRegionMinTemp; } - if( subRegionMaxTemp > regionStatistics.maxTemperature ) + if( subRegionMaxTemp > stats.maxTemperature ) { - regionStatistics.maxTemperature = subRegionMaxTemp; + stats.maxTemperature = subRegionMaxTemp; } - regionStatistics.totalUncompactedPoreVolume += subRegionTotalUncompactedPoreVol; - regionStatistics.totalPoreVolume += subRegionTotalPoreVol; - regionStatistics.totalMass += subRegionTotalMass; + stats.totalUncompactedPoreVolume += subRegionTotalUncompactedPoreVol; + stats.totalPoreVolume += subRegionTotalPoreVol; + stats.totalMass += subRegionTotalMass; } ); // Step 3: synchronize the results over the MPI ranks for( integer i = 0; i < regionNames.size(); ++i ) { ElementRegionBase & region = elemManager.getRegion( regionNames[i] ); - RegionStatistics & regionStatistics = region.getReference< RegionStatistics >( viewKeyStruct::regionStatisticsString() ); + RegionStatistics & stats = region.getReference< RegionStatistics >( viewKeyStruct::regionStatisticsString() ); - regionStatistics.minPressure = MpiWrapper::min( regionStatistics.minPressure ); - regionStatistics.averagePressure = MpiWrapper::sum( regionStatistics.averagePressure ); - regionStatistics.maxPressure = MpiWrapper::max( regionStatistics.maxPressure ); + stats.minPressure = MpiWrapper::min( stats.minPressure ); + stats.averagePressure = MpiWrapper::sum( stats.averagePressure ); + stats.maxPressure = MpiWrapper::max( stats.maxPressure ); - regionStatistics.minDeltaPressure = MpiWrapper::min( regionStatistics.minDeltaPressure ); - regionStatistics.maxDeltaPressure = MpiWrapper::max( regionStatistics.maxDeltaPressure ); + stats.minDeltaPressure = MpiWrapper::min( stats.minDeltaPressure ); + stats.maxDeltaPressure = MpiWrapper::max( stats.maxDeltaPressure ); - regionStatistics.minTemperature = MpiWrapper::min( regionStatistics.minTemperature ); - regionStatistics.averageTemperature = MpiWrapper::sum( regionStatistics.averageTemperature ); - regionStatistics.maxTemperature = MpiWrapper::max( regionStatistics.maxTemperature ); + stats.minTemperature = MpiWrapper::min( stats.minTemperature ); + stats.averageTemperature = MpiWrapper::sum( stats.averageTemperature ); + stats.maxTemperature = MpiWrapper::max( stats.maxTemperature ); - regionStatistics.totalUncompactedPoreVolume = MpiWrapper::sum( regionStatistics.totalUncompactedPoreVolume ); - regionStatistics.totalPoreVolume = MpiWrapper::sum( regionStatistics.totalPoreVolume ); - regionStatistics.totalMass = MpiWrapper::sum( regionStatistics.totalMass ); + stats.totalUncompactedPoreVolume = MpiWrapper::sum( stats.totalUncompactedPoreVolume ); + stats.totalPoreVolume = MpiWrapper::sum( stats.totalPoreVolume ); + stats.totalMass = MpiWrapper::sum( stats.totalMass ); - if( regionStatistics.totalUncompactedPoreVolume > 0 ) + if( stats.totalUncompactedPoreVolume > 0 ) { - float invTotalUncompactedPoreVolume = 1.0 / regionStatistics.totalUncompactedPoreVolume; - regionStatistics.averagePressure *= invTotalUncompactedPoreVolume; - regionStatistics.averageTemperature *= invTotalUncompactedPoreVolume; + float invTotalUncompactedPoreVolume = 1.0 / stats.totalUncompactedPoreVolume; + stats.averagePressure *= invTotalUncompactedPoreVolume; + stats.averageTemperature *= invTotalUncompactedPoreVolume; } else { - regionStatistics.averagePressure = 0.0; - regionStatistics.averageTemperature = 0.0; + stats.averagePressure = 0.0; + stats.averageTemperature = 0.0; GEOS_WARNING( GEOS_FMT( "{}, {}: Cannot compute average pressure & temperature because region pore volume is zero.", getName(), regionNames[i] ) ); } - string statPrefix = GEOS_FMT( "{}, {} (time {} s):", getName(), regionNames[i], time ); - GEOS_LOG_LEVEL_INFO_RANK_0( logInfo::Statistics, - GEOS_FMT( "{} Pressure (min, average, max): {}, {}, {} Pa", - statPrefix, regionStatistics.minPressure, regionStatistics.averagePressure, regionStatistics.maxPressure ) ); - GEOS_LOG_LEVEL_INFO_RANK_0( logInfo::Statistics, - GEOS_FMT( "{} Delta pressure (min, max): {}, {} Pa", - statPrefix, regionStatistics.minDeltaPressure, regionStatistics.maxDeltaPressure ) ); - GEOS_LOG_LEVEL_INFO_RANK_0( logInfo::Statistics, - GEOS_FMT( "{} Temperature (min, average, max): {}, {}, {} K", - statPrefix, regionStatistics.minTemperature, regionStatistics.averageTemperature, - regionStatistics.maxTemperature ) ); - GEOS_LOG_LEVEL_INFO_RANK_0( logInfo::Statistics, - GEOS_FMT( "{} Total dynamic pore volume: {} rm^3", - statPrefix, regionStatistics.totalPoreVolume ) ); - GEOS_LOG_LEVEL_INFO_RANK_0( logInfo::Statistics, - GEOS_FMT( "{} Total fluid mass: {} kg", - statPrefix, regionStatistics.totalMass ) ); + string_view massUnit = units::getSymbol( m_solver->getMassUnit() ); + + TableData singPhaseStatsData; + singPhaseStatsData.addRow( "Pressure[Pa]", stats.minPressure, stats.averagePressure, stats.maxPressure ); + singPhaseStatsData.addRow( "Delta pressure [Pa]", stats.minDeltaPressure, "/", stats.maxDeltaPressure ); + singPhaseStatsData.addRow( "Temperature [K]", stats.minTemperature, stats.averageTemperature, stats.maxTemperature ); + singPhaseStatsData.addSeparator(); + singPhaseStatsData.addSeparator(); + singPhaseStatsData.addRow( "statistics", CellType::MergeNext, CellType::MergeNext, "value" ); + singPhaseStatsData.addSeparator(); + + singPhaseStatsData.addRow( "Total dynamic pore volume [rm^3]", CellType::MergeNext, CellType::MergeNext, stats.totalPoreVolume ); + singPhaseStatsData.addSeparator(); + singPhaseStatsData.addRow( GEOS_FMT( "Total fluid mass [{}]", massUnit ), CellType::MergeNext, CellType::MergeNext, stats.totalMass ); + + string const title = GEOS_FMT( "{}, {} (time {} s):", getName(), regionNames[i], time ); + TableLayout const singPhaseStatsLayout( title, { "statistics", "min", "average", "max" } ); + TableTextFormatter tableFormatter( singPhaseStatsLayout ); + GEOS_LOG_RANK_0( tableFormatter.toString( singPhaseStatsData ) ); if( m_writeCSV > 0 && MpiWrapper::commRank() == 0 ) { std::ofstream outputFile( m_outputDir + "/" + regionNames[i] + ".csv", std::ios_base::app ); - outputFile << time << "," << regionStatistics.minPressure << "," << regionStatistics.averagePressure << "," << regionStatistics.maxPressure << "," << - regionStatistics.minDeltaPressure << "," << regionStatistics.maxDeltaPressure << "," << - regionStatistics.minTemperature << "," << regionStatistics.averageTemperature << "," << regionStatistics.maxTemperature << "," << - regionStatistics.totalPoreVolume << "," << regionStatistics.totalMass << std::endl; + outputFile << time << "," << stats.minPressure << "," << stats.averagePressure << "," << stats.maxPressure << "," << + stats.minDeltaPressure << "," << stats.maxDeltaPressure << "," << + stats.minTemperature << "," << stats.averageTemperature << "," << stats.maxTemperature << "," << + stats.totalPoreVolume << "," << stats.totalMass << std::endl; outputFile.close(); } } diff --git a/src/coreComponents/physicsSolvers/fluidFlow/SinglePhaseStatistics.hpp b/src/coreComponents/physicsSolvers/fluidFlow/SinglePhaseStatistics.hpp index 99d5c57f9d3..b7f279c239c 100644 --- a/src/coreComponents/physicsSolvers/fluidFlow/SinglePhaseStatistics.hpp +++ b/src/coreComponents/physicsSolvers/fluidFlow/SinglePhaseStatistics.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/fluidFlow/SourceFluxStatistics.cpp b/src/coreComponents/physicsSolvers/fluidFlow/SourceFluxStatistics.cpp index 9667e4270f7..2373d3dd112 100644 --- a/src/coreComponents/physicsSolvers/fluidFlow/SourceFluxStatistics.cpp +++ b/src/coreComponents/physicsSolvers/fluidFlow/SourceFluxStatistics.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -22,6 +22,7 @@ #include "fieldSpecification/SourceFluxBoundaryCondition.hpp" #include "fieldSpecification/FieldSpecificationManager.hpp" #include "LvArray/src/tensorOps.hpp" +#include "physicsSolvers/fluidFlow/LogLevelsInfo.hpp" namespace geos { @@ -45,6 +46,10 @@ SourceFluxStatsAggregator::SourceFluxStatsAggregator( const string & name, setDescription( GEOS_FMT( "Name(s) array of the {0}(s) for which we want the statistics. " "Use \"*\" to target all {0}.", SourceFluxBoundaryCondition::catalogName() ) ); + + addLogLevel< logInfo::DetailedSourceFluxStats >(); + addLogLevel< logInfo::DetailedRegionsSourceFluxStats >(); + addLogLevel< logInfo::AggregatedSourceFluxStats >(); } void SourceFluxStatsAggregator::postInputInitialization() @@ -79,14 +84,34 @@ void SourceFluxStatsAggregator::postInputInitialization() Wrapper< SourceFluxStatsAggregator::WrappedStats > & SourceFluxStatsAggregator::registerWrappedStats( Group & group, string_view fluxName, - string_view elementSetName ) + string_view elementSetName, + string_array & filenames ) { string const wrapperName = getStatWrapperName( fluxName ); Wrapper< WrappedStats > & statsWrapper = group.registerWrapper< WrappedStats >( wrapperName ); statsWrapper.setRestartFlags( RestartFlags::NO_WRITE ); - statsWrapper.reference().setTarget( getName(), fluxName ); - writeStatsToCSV( elementSetName, statsWrapper.reference(), true ); + WrappedStats & stats = statsWrapper.reference(); + stats.setTarget( getName(), fluxName ); + + { //tableLayout initialisation + string_view massUnit = units::getSymbol( m_solver->getMassUnit() ); + + string const logMassColumn = GEOS_FMT( "Produced mass [{}]", massUnit ); + string const logRateColumn = GEOS_FMT( "Production rate [{}]", massUnit ); + TableLayout statsLogLayout( "", { "region", logMassColumn, logRateColumn } ); + m_logLayout = statsLogLayout; + + string const csvMassColumn = GEOS_FMT( "Produced mass [{}]", massUnit ); + string const csvRateColumn = GEOS_FMT( "Production rate [{}]", massUnit ); + + filenames.emplace_back( GEOS_FMT( "{}/{}_{}_{}.csv", + m_outputDir, + stats.getAggregatorName(), stats.getFluxName(), elementSetName ) ); + + TableLayout statsCSVLayout( "", {"Time [s]", "Element Count", csvMassColumn, csvRateColumn} ); + m_csvLayout = statsCSVLayout; + } return statsWrapper; } @@ -101,22 +126,28 @@ void SourceFluxStatsAggregator::registerDataOnMesh( Group & meshBodies ) MeshLevel & mesh, arrayView1d< string const > const & ) { - registerWrappedStats( mesh, viewKeyStruct::fluxSetWrapperString(), viewKeyStruct::allRegionWrapperString() ); + registerWrappedStats( mesh, + viewKeyStruct::fluxSetWrapperString(), + viewKeyStruct::allRegionWrapperString(), + m_allRegionWrapperFluxFilename ); for( string const & fluxName : m_fluxNames ) { - registerWrappedStats( mesh, fluxName, viewKeyStruct::allRegionWrapperString() ); + registerWrappedStats( mesh, + fluxName, + viewKeyStruct::allRegionWrapperString(), + m_allRegionFluxsfilename ); mesh.getElemManager().forElementRegions( [&]( ElementRegionBase & region ) { Wrapper< WrappedStats > & regionStatsWrapper = - registerWrappedStats( region, fluxName, region.getName() ); + registerWrappedStats( region, fluxName, region.getName(), m_regionsfilename ); region.excludeWrappersFromPacking( { regionStatsWrapper.getName() } ); region.forElementSubRegions( [&]( ElementSubRegionBase & subRegion ) { Wrapper< WrappedStats > & subRegionStatsWrapper = - registerWrappedStats( subRegion, fluxName, subRegion.getName() ); + registerWrappedStats( subRegion, fluxName, subRegion.getName(), m_subRegionsfilename ); subRegion.excludeWrappersFromPacking( { subRegionStatsWrapper.getName() } ); } ); } ); @@ -124,61 +155,59 @@ void SourceFluxStatsAggregator::registerDataOnMesh( Group & meshBodies ) } ); } -void SourceFluxStatsAggregator::writeStatsToLog( integer minLogLevel, - string_view elementSetName, - WrappedStats const & wrappedStats ) +void SourceFluxStatsAggregator::gatherStatsForLog( bool logLevelActive, + string_view elementSetName, + TableData & tableData, + WrappedStats const & wrappedStats ) { - if( getLogLevel() >= minLogLevel && logger::internal::rank == 0 ) + if( logLevelActive && logger::internal::rank == 0 ) { - GEOS_LOG_RANK( GEOS_FMT( "{} {} (of {}, in {}): Producing on {} elements", - catalogName(), getName(), wrappedStats.getFluxName(), elementSetName, - wrappedStats.stats().m_elementCount ) ); - - // we want to format differently if we have got multiple phases or not - string_view massUnit = units::getSymbol( m_solver->getMassUnit() ); if( wrappedStats.stats().m_producedMass.size() == 1 ) { - GEOS_LOG_RANK( GEOS_FMT( "{} {} (of {}, in {}): Produced mass = {} {}", - catalogName(), getName(), wrappedStats.getFluxName(), elementSetName, - wrappedStats.stats().m_producedMass[0], massUnit ) ); - GEOS_LOG_RANK( GEOS_FMT( "{} {} (of {}, in {}): Production rate = {} {}/s", - catalogName(), getName(), wrappedStats.getFluxName(), elementSetName, - wrappedStats.stats().m_productionRate[0], massUnit ) ); + tableData.addRow( elementSetName, + GEOS_FMT( "{}", wrappedStats.stats().m_producedMass[0] ), + GEOS_FMT( "{}", wrappedStats.stats().m_productionRate[0] ) ); } else { - GEOS_LOG_RANK( GEOS_FMT( "{} {} (of {}, in {}): Produced mass = {} {}", - catalogName(), getName(), wrappedStats.getFluxName(), elementSetName, - wrappedStats.stats().m_producedMass, massUnit ) ); - GEOS_LOG_RANK( GEOS_FMT( "{} {} (of {}, in {}): Production rate = {} {}/s", - catalogName(), getName(), wrappedStats.getFluxName(), elementSetName, - wrappedStats.stats().m_productionRate, massUnit ) ); + tableData.addRow( elementSetName, + GEOS_FMT( "{}", wrappedStats.stats().m_producedMass ), + GEOS_FMT( "{}", wrappedStats.stats().m_productionRate ) ); } } } -void SourceFluxStatsAggregator::writeStatsToCSV( string_view elementSetName, WrappedStats const & stats, - bool writeHeader ) +void SourceFluxStatsAggregator::outputStatsToLog( bool logLevelActive, string_view elementSetName, TableData const & tableMeshData ) { - if( m_writeCSV > 0 && MpiWrapper::commRank() == 0 ) + if( logLevelActive && logger::internal::rank == 0 ) { - string const fileName = GEOS_FMT( "{}/{}_{}_{}.csv", - m_outputDir, - stats.getAggregatorName(), stats.getFluxName(), elementSetName ); - std::ofstream outputFile( fileName, - writeHeader ? std::ios_base::out : std::ios_base::app ); - if( writeHeader ) - { - outputFile << GEOS_FMT( "Time [s],Element Count,Producted Mass [{0}],Production Rate [{0}/s]", - units::getSymbol( m_solver->getMassUnit() ) ) << std::endl; - } - else + m_logLayout.setTitle( GEOS_FMT( "Source flux statistics in {}", elementSetName )); + TableTextFormatter const tableStatFormatter( m_logLayout ); + GEOS_LOG_RANK( tableStatFormatter.toString( tableMeshData ) ); + } +} +void SourceFluxStatsAggregator::outputStatsToCSV( string_array const & filenames, TableData & csvData ) +{ + if( m_writeCSV > 0 && logger::internal::rank == 0 ) + { + for( auto const & filename : filenames ) { - outputFile << GEOS_FMT( "{},{},{},{}", - stats.getStatsPeriodStart(), stats.stats().m_elementCount, - stats.stats().m_producedMass, stats.stats().m_productionRate ) << std::endl; + std::ofstream outputFile( filename ); + + TableCSVFormatter const tableStatFormatter( m_csvLayout ); + outputFile << tableStatFormatter.toString( csvData ); + outputFile.close(); } - outputFile.close(); + csvData.clear(); + } +} + +void SourceFluxStatsAggregator::gatherStatsForCSV( TableData & tableData, WrappedStats const & stats ) +{ + if( m_writeCSV > 0 && MpiWrapper::commRank() == 0 ) + { + tableData.addRow( stats.getStatsPeriodStart(), stats.stats().m_elementCount, + stats.stats().m_producedMass, stats.stats().m_productionRate ); } } @@ -189,16 +218,21 @@ bool SourceFluxStatsAggregator::execute( real64 const GEOS_UNUSED_PARAM( time_n real64 const GEOS_UNUSED_PARAM( eventProgress ), DomainPartition & domain ) { + bool const fluxMeshesStats = isLogLevelActive< logInfo::AggregatedSourceFluxStats >( getLogLevel() ); + bool const fluxesStats = isLogLevelActive< logInfo::DetailedSourceFluxStats >( getLogLevel() ); + bool const regionsStats = isLogLevelActive< logInfo::DetailedRegionsSourceFluxStats >( getLogLevel() ); forMeshLevelStatsWrapper( domain, [&] ( MeshLevel & meshLevel, WrappedStats & meshLevelStats ) { + TableData tableMeshData; + TableData csvData; meshLevelStats.stats() = StatData(); - forAllFluxStatsWrappers( meshLevel, [&] ( MeshLevel &, WrappedStats & fluxStats ) { fluxStats.stats() = StatData(); - + TableData tableFluxData; + TableData tableRegionsData; forAllRegionStatsWrappers( meshLevel, fluxStats.getFluxName(), [&] ( ElementRegionBase & region, WrappedStats & regionStats ) { @@ -210,21 +244,31 @@ bool SourceFluxStatsAggregator::execute( real64 const GEOS_UNUSED_PARAM( time_n subRegionStats.finalizePeriod(); regionStats.stats().combine( subRegionStats.stats() ); } ); - fluxStats.stats().combine( regionStats.stats() ); - writeStatsToLog( 3, region.getName(), regionStats ); - writeStatsToCSV( region.getName(), regionStats, false ); + + gatherStatsForLog( regionsStats, region.getName(), tableRegionsData, regionStats ); + gatherStatsForCSV( csvData, regionStats ); } ); + outputStatsToLog( regionsStats, fluxStats.getFluxName(), tableRegionsData ); + outputStatsToCSV( m_regionsfilename, csvData ); + meshLevelStats.stats().combine( fluxStats.stats() ); - writeStatsToLog( 2, viewKeyStruct::allRegionWrapperString(), fluxStats ); - writeStatsToCSV( viewKeyStruct::allRegionWrapperString(), fluxStats, false ); + + gatherStatsForLog( fluxesStats, viewKeyStruct::allRegionWrapperString(), tableFluxData, fluxStats ); + gatherStatsForCSV( csvData, fluxStats ); + + outputStatsToLog( fluxesStats, fluxStats.getFluxName(), tableFluxData ); + outputStatsToCSV( m_allRegionFluxsfilename, csvData ); + } ); + gatherStatsForLog( fluxMeshesStats, + viewKeyStruct::allRegionWrapperString(), tableMeshData, meshLevelStats ); + gatherStatsForCSV( csvData, meshLevelStats ); - writeStatsToLog( 1, viewKeyStruct::allRegionWrapperString(), meshLevelStats ); - writeStatsToCSV( viewKeyStruct::allRegionWrapperString(), meshLevelStats, false ); + outputStatsToLog( fluxMeshesStats, meshLevelStats.getFluxName(), tableMeshData ); + outputStatsToCSV( m_allRegionWrapperFluxFilename, csvData ); } ); - return false; } diff --git a/src/coreComponents/physicsSolvers/fluidFlow/SourceFluxStatistics.hpp b/src/coreComponents/physicsSolvers/fluidFlow/SourceFluxStatistics.hpp index 2be2995f0aa..d8d87e45b09 100644 --- a/src/coreComponents/physicsSolvers/fluidFlow/SourceFluxStatistics.hpp +++ b/src/coreComponents/physicsSolvers/fluidFlow/SourceFluxStatistics.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -23,7 +23,10 @@ #include "../FieldStatisticsBase.hpp" #include "FlowSolverBase.hpp" #include "mesh/DomainPartition.hpp" - +#include "common/format/table/TableData.hpp" +#include "common/format/table/TableFormatter.hpp" +#include "common/format/table/TableLayout.hpp" +#include namespace geos { @@ -311,6 +314,15 @@ class SourceFluxStatsAggregator final : public FieldStatisticsBase< FlowSolverBa /// the names of the SourceFlux(s) for which we want the statistics string_array m_fluxNames; + /// + TableLayout m_logLayout; + TableLayout m_csvLayout; + + string_array m_subRegionsfilename; + string_array m_regionsfilename; + string_array m_allRegionFluxsfilename; + string_array m_allRegionWrapperFluxFilename; + /** * @copydoc Group::registerDataOnMesh(Group &) @@ -324,22 +336,41 @@ class SourceFluxStatsAggregator final : public FieldStatisticsBase< FlowSolverBa dataRepository::Wrapper< WrappedStats > & registerWrappedStats( Group & group, string_view fluxName, - string_view elementSetName ); + string_view elementSetName, + string_array & filenames ); /** - * @brief If requested, output in the log and CSV the given statistics. - * @param minLogLevel the min log level to output any line. - * @param elementSetName the region / sub-subregion name concerned by the statistics. - * @param stats the statistics that must be output in the log. + * @brief If requested, collect statistics in a tableData. + * @param logLevel the min log level to collect any statistics. + * @param regionName The region name where we collect statistics + * @param tableData The table data where we collect statistics + * @param wrappedStats the statistics that must be retrieved. + */ + void gatherStatsForLog( bool logLevelActive, + string_view elementSetName, + TableData & tableData, + WrappedStats const & wrappedStats ); + /** + * @brief If requested, collect statistics in a tableData. + * @param tableData The TableData where we collect the statistics + * @param stats the statistics that must be retrieved. */ - void writeStatsToLog( integer minLogLevel, string_view elementSetName, WrappedStats const & stats ); + void gatherStatsForCSV( TableData & tableData, WrappedStats const & stats ); + + /** + * @brief If requested, output statistics in the log. + * @param logLevel the min log level to output any statistics. + * @param statsName The stat name where we collect + * @param tableMeshData The TableData where we have all collected statistics + */ + void outputStatsToLog( bool logLevelActive, string_view elementSetName, TableData const & tableMeshData ); + /** - * @brief If CSV is enabled, create or append a new CSV file. - * @param elementSetName the region / sub-subregion name concerned by the statistics. - * @param stats the statistics that must be output in the log. - * @param writeHeader If true, create the CSV with the header. If false, append it with the statistics. + * @brief If requested, output statistics in csv. + * @param filenames String array containing all filenames to be generated + * @param csvData The TableData where we have all collected statistics */ - void writeStatsToCSV( string_view elementSetName, WrappedStats const & stats, bool writeHeader ); + void outputStatsToCSV( string_array const & filenames, TableData & csvData ); }; diff --git a/src/coreComponents/physicsSolvers/fluidFlow/StencilAccessors.hpp b/src/coreComponents/physicsSolvers/fluidFlow/StencilAccessors.hpp index 59f0215a0d4..7b27c5f1788 100644 --- a/src/coreComponents/physicsSolvers/fluidFlow/StencilAccessors.hpp +++ b/src/coreComponents/physicsSolvers/fluidFlow/StencilAccessors.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/fluidFlow/StencilDataCollection.cpp b/src/coreComponents/physicsSolvers/fluidFlow/StencilDataCollection.cpp index dcd795ec3ed..11e6637c29a 100644 --- a/src/coreComponents/physicsSolvers/fluidFlow/StencilDataCollection.cpp +++ b/src/coreComponents/physicsSolvers/fluidFlow/StencilDataCollection.cpp @@ -2,10 +2,11 @@ * ------------------------------------------------------------------------------------------------------------ * SPDX-License-Identifier: LGPL-2.1-only * - * Copyright (c) 2018-2020 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2020 The Board of Trustees of the Leland Stanford Junior University - * Copyright (c) 2018-2020 TotalEnergies - * Copyright (c) 2019- GEOSX Contributors + * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC + * Copyright (c) 2018-2024 TotalEnergies + * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University + * Copyright (c) 2023-2024 Chevron + * Copyright (c) 2019- GEOS/GEOSX Contributors * All rights reserved * * See top level LICENSE, COPYRIGHT, CONTRIBUTORS, NOTICE, and ACKNOWLEDGEMENTS files for details. @@ -236,10 +237,8 @@ string formatKernelDataExtract( arrayView1d< StencilDataCollection::KernelConnec kernelIterator->m_transmissibility[0], kernelIterator->m_transmissibility[1] ); } - TableLayout const tableLayout{ - { "regionId A/B", "subRegionId A/B", "elementId A/B", "transmissibilityAB", "transmissibilityBA" }, - GEOS_FMT( "Kernel data (real row count = {})", kernelData.size() ) - }; + TableLayout const tableLayout = TableLayout( GEOS_FMT( "Kernel data (real row count = {})", kernelData.size() ), + {"regionId A/B", "subRegionId A/B", "elementId A/B", "transmissibilityAB", "transmissibilityBA"} ); TableTextFormatter const tableFormatter{ tableLayout }; return tableFormatter.toString( tableData ); } diff --git a/src/coreComponents/physicsSolvers/fluidFlow/StencilDataCollection.hpp b/src/coreComponents/physicsSolvers/fluidFlow/StencilDataCollection.hpp index c7685f8706c..b1453803f05 100644 --- a/src/coreComponents/physicsSolvers/fluidFlow/StencilDataCollection.hpp +++ b/src/coreComponents/physicsSolvers/fluidFlow/StencilDataCollection.hpp @@ -2,10 +2,11 @@ * ------------------------------------------------------------------------------------------------------------ * SPDX-License-Identifier: LGPL-2.1-only * - * Copyright (c) 2018-2020 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2020 The Board of Trustees of the Leland Stanford Junior University - * Copyright (c) 2018-2020 TotalEnergies - * Copyright (c) 2019- GEOSX Contributors + * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC + * Copyright (c) 2018-2024 TotalEnergies + * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University + * Copyright (c) 2023-2024 Chevron + * Copyright (c) 2019- GEOS/GEOSX Contributors * All rights reserved * * See top level LICENSE, COPYRIGHT, CONTRIBUTORS, NOTICE, and ACKNOWLEDGEMENTS files for details. diff --git a/src/coreComponents/physicsSolvers/fluidFlow/kernels/HybridFVMHelperKernels.hpp b/src/coreComponents/physicsSolvers/fluidFlow/kernels/HybridFVMHelperKernels.hpp index c3eb3805be3..6e4c9d69e23 100644 --- a/src/coreComponents/physicsSolvers/fluidFlow/kernels/HybridFVMHelperKernels.hpp +++ b/src/coreComponents/physicsSolvers/fluidFlow/kernels/HybridFVMHelperKernels.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/fluidFlow/kernels/MinPoreVolumeMaxPorosityKernel.hpp b/src/coreComponents/physicsSolvers/fluidFlow/kernels/MinPoreVolumeMaxPorosityKernel.hpp index 6d930e5d592..9add06e9a23 100644 --- a/src/coreComponents/physicsSolvers/fluidFlow/kernels/MinPoreVolumeMaxPorosityKernel.hpp +++ b/src/coreComponents/physicsSolvers/fluidFlow/kernels/MinPoreVolumeMaxPorosityKernel.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/fluidFlow/kernels/StencilWeightsUpdateKernel.hpp b/src/coreComponents/physicsSolvers/fluidFlow/kernels/StencilWeightsUpdateKernel.hpp index d61b9d379dd..d8fd200dcb1 100644 --- a/src/coreComponents/physicsSolvers/fluidFlow/kernels/StencilWeightsUpdateKernel.hpp +++ b/src/coreComponents/physicsSolvers/fluidFlow/kernels/StencilWeightsUpdateKernel.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/AccumulationKernel.hpp b/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/AccumulationKernel.hpp index f749853ad6f..e283affcf43 100644 --- a/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/AccumulationKernel.hpp +++ b/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/AccumulationKernel.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -474,8 +474,7 @@ class AccumulationKernelFactory createAndLaunch( integer const numComps, integer const numPhases, globalIndex const rankOffset, - integer const useTotalMassEquation, - integer const useSimpleAccumulation, + BitFlags< KernelFlags > kernelFlags, string const dofKey, ElementSubRegionBase const & subRegion, constitutive::MultiFluidBase const & fluid, @@ -488,12 +487,6 @@ class AccumulationKernelFactory integer constexpr NUM_COMP = NC(); integer constexpr NUM_DOF = NC()+1; - BitFlags< KernelFlags > kernelFlags; - if( useTotalMassEquation ) - kernelFlags.set( KernelFlags::TotalMassEquation ); - if( useSimpleAccumulation ) - kernelFlags.set( KernelFlags::SimpleAccumulation ); - AccumulationKernel< NUM_COMP, NUM_DOF > kernel( numPhases, rankOffset, dofKey, subRegion, fluid, solid, localMatrix, localRhs, kernelFlags ); AccumulationKernel< NUM_COMP, NUM_DOF >::template launch< POLICY >( subRegion.size(), kernel ); diff --git a/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/AquiferBCKernel.cpp b/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/AquiferBCKernel.cpp index 36ea1aa3226..9d107531c46 100644 --- a/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/AquiferBCKernel.cpp +++ b/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/AquiferBCKernel.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/AquiferBCKernel.hpp b/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/AquiferBCKernel.hpp index b1729589b30..fd97385586e 100644 --- a/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/AquiferBCKernel.hpp +++ b/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/AquiferBCKernel.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/C1PPUPhaseFlux.hpp b/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/C1PPUPhaseFlux.hpp index a254aa9f97d..3d79301623a 100644 --- a/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/C1PPUPhaseFlux.hpp +++ b/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/C1PPUPhaseFlux.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -79,6 +79,7 @@ struct C1PPUPhaseFlux compute( integer const numPhase, integer const ip, integer const hasCapPressure, + integer const checkPhasePresenceInGravity, localIndex const ( &seri )[numFluxSupportPoints], localIndex const ( &sesri )[numFluxSupportPoints], localIndex const ( &sei )[numFluxSupportPoints], @@ -106,13 +107,16 @@ struct C1PPUPhaseFlux real64 ( & dCompFlux_dP )[numFluxSupportPoints][numComp], real64 ( & dCompFlux_dC )[numFluxSupportPoints][numComp][numComp] ) { + real64 dPotGrad_dTrans = 0.0; real64 dPresGrad_dP[numFluxSupportPoints]{}; real64 dPresGrad_dC[numFluxSupportPoints][numComp]{}; real64 dGravHead_dP[numFluxSupportPoints]{}; real64 dGravHead_dC[numFluxSupportPoints][numComp]{}; - PotGrad::compute< numComp, numFluxSupportPoints >( numPhase, ip, hasCapPressure, seri, sesri, sei, trans, dTrans_dPres, pres, - gravCoef, phaseVolFrac, dPhaseVolFrac, dCompFrac_dCompDens, phaseMassDens, dPhaseMassDens, - phaseCapPressure, dPhaseCapPressure_dPhaseVolFrac, potGrad, dPresGrad_dP, + PotGrad::compute< numComp, numFluxSupportPoints >( numPhase, ip, hasCapPressure, checkPhasePresenceInGravity, + seri, sesri, sei, trans, dTrans_dPres, pres, gravCoef, + phaseVolFrac, dPhaseVolFrac, dCompFrac_dCompDens, phaseMassDens, dPhaseMassDens, + phaseCapPressure, dPhaseCapPressure_dPhaseVolFrac, + potGrad, dPotGrad_dTrans, dPresGrad_dP, dPresGrad_dC, dGravHead_dP, dGravHead_dC ); // gravity head diff --git a/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/CFLKernel.cpp b/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/CFLKernel.cpp index b416573af0b..ab2b2838d7b 100644 --- a/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/CFLKernel.cpp +++ b/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/CFLKernel.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -22,6 +22,7 @@ #include "finiteVolume/SurfaceElementStencil.hpp" #include "finiteVolume/EmbeddedSurfaceToCellStencil.hpp" #include "finiteVolume/FaceElementToCellStencil.hpp" +#include "CFLKernel.hpp" namespace geos { @@ -32,12 +33,13 @@ namespace isothermalCompositionalMultiphaseFVMKernels /******************************** CFLFluxKernel ********************************/ -template< integer NC, localIndex NUM_ELEMS, localIndex maxStencilSize > +template< integer NC > GEOS_HOST_DEVICE inline void CFLFluxKernel:: compute( integer const numPhases, + integer const checkPhasePresenceInGravity, localIndex const stencilSize, real64 const dt, arraySlice1d< localIndex const > const seri, @@ -67,27 +69,7 @@ CFLFluxKernel:: real64 gravHead{}; // calculate quantities on primary connected cells - integer denom = 0; - for( localIndex i = 0; i < NUM_ELEMS; ++i ) - { - localIndex const er = seri[i]; - localIndex const esr = sesri[i]; - localIndex const ei = sei[i]; - - bool const phaseExists = (phaseVolFrac[er][esr][ei][ip] > 0); - if( !phaseExists ) - { - continue; - } - - // average density across the face - densMean += phaseMassDens[er][esr][ei][0][ip]; - denom++; - } - if( denom > 1 ) - { - densMean /= denom; - } + calculateMeanDensity( checkPhasePresenceInGravity, ip, stencilSize, seri, sesri, sei, phaseVolFrac, phaseMassDens, densMean ); //***** calculation of phase volumetric flux ***** @@ -138,10 +120,43 @@ CFLFluxKernel:: } } -template< integer NC, typename STENCILWRAPPER_TYPE > +GEOS_HOST_DEVICE +inline void -CFLFluxKernel:: +CFLFluxKernel::calculateMeanDensity( integer const checkPhasePresenceInGravity, integer const ip, localIndex const stencilSize, + arraySlice1d< localIndex const > const seri, + arraySlice1d< localIndex const > const sesri, + arraySlice1d< localIndex const > const sei, + ElementViewConst< arrayView2d< real64 const, compflow::USD_PHASE > > const & phaseVolFrac, + ElementViewConst< arrayView3d< real64 const, multifluid::USD_PHASE > > const & phaseMassDens, + real64 & densMean ) +{ + integer denom = 0; + for( localIndex i = 0; i < stencilSize; ++i ) + { + localIndex const er = seri[i]; + localIndex const esr = sesri[i]; + localIndex const ei = sei[i]; + + bool const phaseExists = (phaseVolFrac[er][esr][ei][ip] > 0); + if( checkPhasePresenceInGravity && !phaseExists ) + { + continue; + } + + // average density across the face + densMean += phaseMassDens[er][esr][ei][0][ip]; + denom++; + } + if( denom > 1 ) + { + densMean /= denom; + } +} +template< integer NC, typename STENCILWRAPPER_TYPE > +void CFLFluxKernel:: launch( integer const numPhases, + integer const checkPhasePresenceInGravity, real64 const dt, STENCILWRAPPER_TYPE const & stencilWrapper, ElementViewConst< arrayView1d< real64 const > > const & pres, @@ -161,9 +176,6 @@ CFLFluxKernel:: typename STENCILWRAPPER_TYPE::IndexContainerViewConstType const & sesri = stencilWrapper.getElementSubRegionIndices(); typename STENCILWRAPPER_TYPE::IndexContainerViewConstType const & sei = stencilWrapper.getElementIndices(); - localIndex constexpr numElems = STENCILWRAPPER_TYPE::maxNumPointsInFlux; - localIndex constexpr maxStencilSize = STENCILWRAPPER_TYPE::maxStencilSize; - forAll< parallelDevicePolicy<> >( stencilWrapper.size(), [=] GEOS_HOST_DEVICE ( localIndex const iconn ) { // compute transmissibility @@ -176,23 +188,24 @@ CFLFluxKernel:: transmissibility, dTrans_dPres ); - CFLFluxKernel::compute< NC, numElems, maxStencilSize >( numPhases, - sei[iconn].size(), - dt, - seri[iconn], - sesri[iconn], - sei[iconn], - transmissibility[0], - pres, - gravCoef, - phaseVolFrac, - phaseRelPerm, - phaseVisc, - phaseDens, - phaseMassDens, - phaseCompFrac, - phaseOutflux, - compOutflux ); + CFLFluxKernel::compute< NC >( numPhases, + checkPhasePresenceInGravity, + sei[iconn].size(), + dt, + seri[iconn], + sesri[iconn], + sei[iconn], + transmissibility[0], + pres, + gravCoef, + phaseVolFrac, + phaseRelPerm, + phaseVisc, + phaseDens, + phaseMassDens, + phaseCompFrac, + phaseOutflux, + compOutflux ); } ); } @@ -200,6 +213,7 @@ CFLFluxKernel:: template \ void CFLFluxKernel:: \ launch< NC, STENCILWRAPPER_TYPE >( integer const numPhases, \ + integer const checkPhasePresenceInGravity, \ real64 const dt, \ STENCILWRAPPER_TYPE const & stencil, \ ElementViewConst< arrayView1d< real64 const > > const & pres, \ diff --git a/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/CFLKernel.hpp b/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/CFLKernel.hpp index 8449d57e43e..b4574fe1ece 100644 --- a/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/CFLKernel.hpp +++ b/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/CFLKernel.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -23,6 +23,7 @@ #include "common/DataLayouts.hpp" #include "common/DataTypes.hpp" #include "common/GEOS_RAJA_Interface.hpp" +#include "constitutive/fluid/multifluid/Layouts.hpp" #include "constitutive/fluid/multifluid/MultiFluidBase.hpp" #include "constitutive/fluid/multifluid/MultiFluidFields.hpp" #include "constitutive/permeability/PermeabilityBase.hpp" @@ -83,11 +84,10 @@ struct CFLFluxKernel using RelPermAccessors = StencilMaterialAccessors< constitutive::RelativePermeabilityBase, fields::relperm::phaseRelPerm >; - template< integer NC, localIndex NUM_ELEMS, localIndex maxStencilSize > - GEOS_HOST_DEVICE - inline - static void + template< integer NC > + GEOS_HOST_DEVICE inline static void compute( integer const numPhases, + integer const checkPhasePresenceInGravity, localIndex const stencilSize, real64 const dt, arraySlice1d< localIndex const > const seri, @@ -105,9 +105,20 @@ struct CFLFluxKernel ElementView< arrayView2d< real64, compflow::USD_PHASE > > const & phaseOutflux, ElementView< arrayView2d< real64, compflow::USD_COMP > > const & compOutflux ); + GEOS_HOST_DEVICE inline static void + calculateMeanDensity( integer const checkPhasePresenceInGravity, + integer const ip, localIndex const stencilSize, + arraySlice1d< localIndex const > const seri, + arraySlice1d< localIndex const > const sesri, + arraySlice1d< localIndex const > const sei, + ElementViewConst< arrayView2d< real64 const, compflow::USD_PHASE > > const & phaseVolFrac, + ElementViewConst< arrayView3d< real64 const, constitutive::multifluid::USD_PHASE > > const & phaseMassDens, + real64 & densMean ); + template< integer NC, typename STENCILWRAPPER_TYPE > static void launch( integer const numPhases, + integer const checkPhasePresenceInGravity, real64 const dt, STENCILWRAPPER_TYPE const & stencil, ElementViewConst< arrayView1d< real64 const > > const & pres, diff --git a/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/CapillaryPressureUpdateKernel.hpp b/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/CapillaryPressureUpdateKernel.hpp index 7842c859189..2d182b515cc 100644 --- a/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/CapillaryPressureUpdateKernel.hpp +++ b/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/CapillaryPressureUpdateKernel.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/CompositionalMultiphaseHybridFVMKernels.cpp b/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/CompositionalMultiphaseHybridFVMKernels.cpp index 4e698041b4c..e5ac3d7e7b8 100644 --- a/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/CompositionalMultiphaseHybridFVMKernels.cpp +++ b/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/CompositionalMultiphaseHybridFVMKernels.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/CompositionalMultiphaseHybridFVMKernels.hpp b/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/CompositionalMultiphaseHybridFVMKernels.hpp index c388cad6da5..dac73b0a0aa 100644 --- a/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/CompositionalMultiphaseHybridFVMKernels.hpp +++ b/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/CompositionalMultiphaseHybridFVMKernels.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -33,7 +33,6 @@ #include "physicsSolvers/PhysicsSolverBaseKernels.hpp" #include "physicsSolvers/fluidFlow/CompositionalMultiphaseBaseFields.hpp" #include "physicsSolvers/fluidFlow/StencilAccessors.hpp" -#include "physicsSolvers/fluidFlow/kernels/compositional/AccumulationKernel.hpp" #include "physicsSolvers/fluidFlow/kernels/compositional/PropertyKernelBase.hpp" #include "physicsSolvers/fluidFlow/kernels/compositional/KernelLaunchSelectors.hpp" diff --git a/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/DiffusionDispersionFluxComputeKernel.hpp b/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/DiffusionDispersionFluxComputeKernel.hpp index ac5ab4265da..a078cb402d1 100644 --- a/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/DiffusionDispersionFluxComputeKernel.hpp +++ b/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/DiffusionDispersionFluxComputeKernel.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -33,7 +33,6 @@ #include "mesh/ElementRegionManager.hpp" #include "physicsSolvers/fluidFlow/CompositionalMultiphaseUtilities.hpp" #include "physicsSolvers/fluidFlow/StencilAccessors.hpp" -#include "physicsSolvers/fluidFlow/kernels/compositional/KernelLaunchSelectors.hpp" namespace geos { @@ -726,9 +725,7 @@ class DiffusionDispersionFluxComputeKernelFactory integer const numPhases, globalIndex const rankOffset, string const & dofKey, - integer const hasDiffusion, - integer const hasDispersion, - integer const useTotalMassEquation, + BitFlags< KernelFlags > kernelFlags, string const & solverName, ElementRegionManager const & elemManager, STENCILWRAPPER const & stencilWrapper, @@ -745,10 +742,6 @@ class DiffusionDispersionFluxComputeKernelFactory elemManager.constructArrayViewAccessor< globalIndex, 1 >( dofKey ); dofNumberAccessor.setName( solverName + "/accessors/" + dofKey ); - BitFlags< KernelFlags > kernelFlags; - if( useTotalMassEquation ) - kernelFlags.set( KernelFlags::TotalMassEquation ); - using kernelType = DiffusionDispersionFluxComputeKernel< NUM_COMP, NUM_DOF, STENCILWRAPPER >; typename kernelType::CompFlowAccessors compFlowAccessors( elemManager, solverName ); typename kernelType::MultiFluidAccessors multiFluidAccessors( elemManager, solverName ); @@ -761,7 +754,8 @@ class DiffusionDispersionFluxComputeKernelFactory diffusionAccessors, dispersionAccessors, porosityAccessors, dt, localMatrix, localRhs, kernelFlags ); kernelType::template launch< POLICY >( stencilWrapper.size(), - hasDiffusion, hasDispersion, + kernelFlags.isSet( KernelFlags::Diffusion ), + kernelFlags.isSet( KernelFlags::Dispersion ), kernel ); } ); } diff --git a/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/DirichletFluxComputeKernel.hpp b/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/DirichletFluxComputeKernel.hpp index 420d8538f1b..a4b00cf8180 100644 --- a/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/DirichletFluxComputeKernel.hpp +++ b/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/DirichletFluxComputeKernel.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/DissipationFluxComputeKernel.hpp b/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/DissipationFluxComputeKernel.hpp index 1b4183c8c1a..b3544545b66 100644 --- a/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/DissipationFluxComputeKernel.hpp +++ b/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/DissipationFluxComputeKernel.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -185,6 +185,7 @@ class FluxComputeKernel : public isothermalCompositionalMultiphaseFVMKernels::Fl // // We use the lambda below (called **inside** the phase loop of the base computeFlux) to compute dissipation terms Base::computeFlux( iconn, stack, [&] ( integer const ip, + integer const GEOS_UNUSED_PARAM( checkPhasePresenceInGravity ), localIndex const (&k)[2], localIndex const (&seri)[2], localIndex const (&sesri)[2], @@ -348,8 +349,7 @@ class FluxComputeKernelFactory integer const numPhases, globalIndex const rankOffset, string const & dofKey, - integer const hasCapPressure, - integer const useTotalMassEquation, + BitFlags< isothermalCompositionalMultiphaseFVMKernels::KernelFlags > kernelFlags, string const & solverName, ElementRegionManager const & elemManager, STENCILWRAPPER const & stencilWrapper, @@ -373,12 +373,6 @@ class FluxComputeKernelFactory elemManager.constructArrayViewAccessor< globalIndex, 1 >( dofKey ); dofNumberAccessor.setName( solverName + "/accessors/" + dofKey ); - BitFlags< isothermalCompositionalMultiphaseFVMKernels::KernelFlags > kernelFlags; - if( hasCapPressure ) - kernelFlags.set( isothermalCompositionalMultiphaseFVMKernels::KernelFlags::CapPressure ); - if( useTotalMassEquation ) - kernelFlags.set( isothermalCompositionalMultiphaseFVMKernels::KernelFlags::TotalMassEquation ); - using KERNEL_TYPE = FluxComputeKernel< NUM_COMP, NUM_DOF, STENCILWRAPPER >; typename KERNEL_TYPE::CompFlowAccessors compFlowAccessors( elemManager, solverName ); typename KERNEL_TYPE::MultiFluidAccessors multiFluidAccessors( elemManager, solverName ); diff --git a/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/FluidUpdateKernel.hpp b/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/FluidUpdateKernel.hpp index 9389da529de..f8483ce94c7 100644 --- a/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/FluidUpdateKernel.hpp +++ b/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/FluidUpdateKernel.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/FluxComputeKernel.hpp b/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/FluxComputeKernel.hpp index d28ecf41b41..45882953307 100644 --- a/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/FluxComputeKernel.hpp +++ b/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/FluxComputeKernel.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -252,6 +252,7 @@ class FluxComputeKernel : public FluxComputeKernelBase real64 compFlux[numComp]{}; real64 dCompFlux_dP[numFluxSupportPoints][numComp]{}; real64 dCompFlux_dC[numFluxSupportPoints][numComp][numComp]{}; + real64 dCompFlux_dTrans[numComp]{}; real64 const trans[numFluxSupportPoints] = { stack.transmissibility[connectionIndex][0], stack.transmissibility[connectionIndex][1] }; @@ -277,6 +278,7 @@ class FluxComputeKernel : public FluxComputeKernelBase ( m_numPhases, ip, m_kernelFlags.isSet( KernelFlags::CapPressure ), + m_kernelFlags.isSet( KernelFlags::CheckPhasePresenceInGravity ), seri, sesri, sei, trans, dTrans_dPres, @@ -303,6 +305,7 @@ class FluxComputeKernel : public FluxComputeKernelBase ( m_numPhases, ip, m_kernelFlags.isSet( KernelFlags::CapPressure ), + m_kernelFlags.isSet( KernelFlags::CheckPhasePresenceInGravity ), seri, sesri, sei, trans, dTrans_dPres, @@ -329,6 +332,7 @@ class FluxComputeKernel : public FluxComputeKernelBase ( m_numPhases, ip, m_kernelFlags.isSet( KernelFlags::CapPressure ), + m_kernelFlags.isSet( KernelFlags::CheckPhasePresenceInGravity ), seri, sesri, sei, trans, dTrans_dPres, @@ -347,16 +351,18 @@ class FluxComputeKernel : public FluxComputeKernelBase dPhaseFlux_dC, compFlux, dCompFlux_dP, - dCompFlux_dC ); + dCompFlux_dC, + dCompFlux_dTrans ); } // call the lambda in the phase loop to allow the reuse of the phase fluxes and their derivatives // possible use: assemble the derivatives wrt temperature, and the flux term of the energy equation for this phase - compFluxKernelOp( ip, k, seri, sesri, sei, connectionIndex, + compFluxKernelOp( ip, m_kernelFlags.isSet( KernelFlags::CheckPhasePresenceInGravity ), + k, seri, sesri, sei, connectionIndex, k_up, seri[k_up], sesri[k_up], sei[k_up], potGrad, phaseFlux, dPhaseFlux_dP, dPhaseFlux_dC ); - } // loop over phases + } // loop over phases /// populate local flux vector and derivatives for( integer ic = 0; ic < numComp; ++ic ) @@ -523,9 +529,7 @@ class FluxComputeKernelFactory integer const numPhases, globalIndex const rankOffset, string const & dofKey, - integer const hasCapPressure, - integer const useTotalMassEquation, - UpwindingParameters upwindingParams, + BitFlags< KernelFlags > kernelFlags, string const & solverName, ElementRegionManager const & elemManager, STENCILWRAPPER const & stencilWrapper, @@ -542,18 +546,6 @@ class FluxComputeKernelFactory elemManager.constructArrayViewAccessor< globalIndex, 1 >( dofKey ); dofNumberAccessor.setName( solverName + "/accessors/" + dofKey ); - BitFlags< KernelFlags > kernelFlags; - if( hasCapPressure ) - kernelFlags.set( KernelFlags::CapPressure ); - if( useTotalMassEquation ) - kernelFlags.set( KernelFlags::TotalMassEquation ); - if( upwindingParams.upwindingScheme == UpwindingScheme::C1PPU && - isothermalCompositionalMultiphaseFVMKernelUtilities::epsC1PPU > 0 ) - kernelFlags.set( KernelFlags::C1PPU ); - else if( upwindingParams.upwindingScheme == UpwindingScheme::IHU ) - kernelFlags.set( KernelFlags::IHU ); - - using kernelType = FluxComputeKernel< NUM_COMP, NUM_DOF, STENCILWRAPPER >; typename kernelType::CompFlowAccessors compFlowAccessors( elemManager, solverName ); typename kernelType::MultiFluidAccessors multiFluidAccessors( elemManager, solverName ); diff --git a/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/FluxComputeKernelBase.cpp b/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/FluxComputeKernelBase.cpp index f3f33c92d69..a5a01550c52 100644 --- a/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/FluxComputeKernelBase.cpp +++ b/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/FluxComputeKernelBase.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/FluxComputeKernelBase.hpp b/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/FluxComputeKernelBase.hpp index f36124d6ed6..c7b85da8d97 100644 --- a/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/FluxComputeKernelBase.hpp +++ b/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/FluxComputeKernelBase.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -45,16 +45,19 @@ enum class KernelFlags { /// Flag to specify whether capillary pressure is used or not CapPressure = 1 << 0, // 1 + /// Flag to specify whether diffusion is used or not + Diffusion = 1 << 1, // 2 + /// Flag to specify whether dispersion is used or not + Dispersion = 1 << 2, // 4 /// Flag indicating whether total mass equation is formed or not - TotalMassEquation = 1 << 1, // 2 + TotalMassEquation = 1 << 3, // 8 + /// Flag indicating whether gravity treatment is checking phase presence or not + CheckPhasePresenceInGravity = 1 << 4, // 16 /// Flag indicating whether C1-PPU is used or not - C1PPU = 1 << 2, // 4 + C1PPU = 1 << 5, // 32 /// Flag indicating whether IHU is used or not - IHU = 1 << 3 // 8 + IHU = 1 << 6 // 64 /// Add more flags like that if needed: - // Flag5 = 1 << 4, // 16 - // Flag6 = 1 << 5, // 32 - // Flag7 = 1 << 6, // 64 // Flag8 = 1 << 7 //128 }; diff --git a/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/GlobalComponentFractionKernel.hpp b/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/GlobalComponentFractionKernel.hpp index e8d53a625ba..c5317e3a659 100644 --- a/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/GlobalComponentFractionKernel.hpp +++ b/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/GlobalComponentFractionKernel.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/HydrostaticPressureKernel.hpp b/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/HydrostaticPressureKernel.hpp index 65b6bde6360..a3495e46a94 100644 --- a/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/HydrostaticPressureKernel.hpp +++ b/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/HydrostaticPressureKernel.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/IHUPhaseFlux.hpp b/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/IHUPhaseFlux.hpp index ec9b3c55783..97f5bdd5a2e 100644 --- a/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/IHUPhaseFlux.hpp +++ b/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/IHUPhaseFlux.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -65,7 +65,7 @@ upwindMobilityViscous( localIndex const numPhase, ElementViewConst< arrayView3d< real64 const, compflow::USD_PHASE_DC > > const & dPhaseVolFrac, ElementViewConst< arrayView3d< real64 const, constitutive::cappres::USD_CAPPRES > > const & phaseCapPressure, ElementViewConst< arrayView4d< real64 const, constitutive::cappres::USD_CAPPRES_DS > > const & dPhaseCapPressure_dPhaseVolFrac, - integer const capPressureFlag, + integer const hasCapPressure, localIndex & upwindDir, real64 & mobility, real64( &dMobility_dP), @@ -99,7 +99,7 @@ upwindMobilityViscous( localIndex const numPhase, dPhaseVolFrac, phaseCapPressure, dPhaseCapPressure_dPhaseVolFrac, - capPressureFlag, + hasCapPressure, upwindDir ); localIndex const er_up = seri[upwindDir]; @@ -139,7 +139,8 @@ upwindMobilityGravity( localIndex const numPhase, ElementViewConst< arrayView3d< real64 const, compflow::USD_PHASE_DC > > const & dPhaseVolFrac, ElementViewConst< arrayView3d< real64 const, constitutive::cappres::USD_CAPPRES > > const & phaseCapPressure, ElementViewConst< arrayView4d< real64 const, constitutive::cappres::USD_CAPPRES_DS > > const & dPhaseCapPressure_dPhaseVolFrac, - integer const capPressureFlag, + integer const hasCapPressure, + integer const checkPhasePresenceInGravity, localIndex & upwindDir, real64 & mobility, real64( &dMobility_dP), @@ -174,7 +175,8 @@ upwindMobilityGravity( localIndex const numPhase, dPhaseVolFrac, phaseCapPressure, dPhaseCapPressure_dPhaseVolFrac, - capPressureFlag, + hasCapPressure, + checkPhasePresenceInGravity, upwindDir ); localIndex const er_up = seri[upwindDir]; @@ -213,7 +215,7 @@ upwindMobilityCapillary( localIndex const numPhase, ElementViewConst< arrayView3d< real64 const, compflow::USD_PHASE_DC > > const & dPhaseVolFrac, ElementViewConst< arrayView3d< real64 const, constitutive::cappres::USD_CAPPRES > > const & phaseCapPressure, ElementViewConst< arrayView4d< real64 const, constitutive::cappres::USD_CAPPRES_DS > > const & dPhaseCapPressure_dPhaseVolFrac, - integer const capPressureFlag, + integer const hasCapPressure, localIndex & upwindDir, real64 & mobility, real64( &dMobility_dP), @@ -247,7 +249,7 @@ upwindMobilityCapillary( localIndex const numPhase, dPhaseVolFrac, phaseCapPressure, dPhaseCapPressure_dPhaseVolFrac, - capPressureFlag, + hasCapPressure, upwindDir ); localIndex const er_up = seri[upwindDir]; @@ -290,7 +292,7 @@ computeFractionalFlowViscous( localIndex const numPhase, ElementViewConst< arrayView3d< real64 const, compflow::USD_PHASE_DC > > const & dPhaseVolFrac, ElementViewConst< arrayView3d< real64 const, constitutive::cappres::USD_CAPPRES > > const & phaseCapPressure, ElementViewConst< arrayView4d< real64 const, constitutive::cappres::USD_CAPPRES_DS > > const & dPhaseCapPressure_dPhaseVolFrac, - integer const capPressureFlag, + integer const hasCapPressure, localIndex & k_up_main, real64 & fractionalFlow, real64 ( & dFractionalFlow_dP)[numFluxSupportPoints], @@ -341,7 +343,7 @@ computeFractionalFlowViscous( localIndex const numPhase, dPhaseVolFrac, phaseCapPressure, dPhaseCapPressure_dPhaseVolFrac, - capPressureFlag, + hasCapPressure, k_up, mob, dMob_dP, @@ -405,7 +407,8 @@ computeFractionalFlowGravity( localIndex const numPhase, ElementViewConst< arrayView3d< real64 const, compflow::USD_PHASE_DC > > const & dPhaseVolFrac, ElementViewConst< arrayView3d< real64 const, constitutive::cappres::USD_CAPPRES > > const & phaseCapPressure, ElementViewConst< arrayView4d< real64 const, constitutive::cappres::USD_CAPPRES_DS > > const & dPhaseCapPressure_dPhaseVolFrac, - integer const capPressureFlag, + integer const hasCapPressure, + integer const checkPhasePresenceInGravity, localIndex & k_up_main, real64 & fractionalFlow, real64 ( & dFractionalFlow_dP)[numFluxSupportPoints], @@ -455,7 +458,8 @@ computeFractionalFlowGravity( localIndex const numPhase, dPhaseVolFrac, phaseCapPressure, dPhaseCapPressure_dPhaseVolFrac, - capPressureFlag, + hasCapPressure, + checkPhasePresenceInGravity, k_up, mob, dMob_dP, @@ -517,7 +521,7 @@ computeFractionalFlowCapillary( localIndex const numPhase, ElementViewConst< arrayView3d< real64 const, compflow::USD_PHASE_DC > > const & dPhaseVolFrac, ElementViewConst< arrayView3d< real64 const, constitutive::cappres::USD_CAPPRES > > const & phaseCapPressure, ElementViewConst< arrayView4d< real64 const, constitutive::cappres::USD_CAPPRES_DS > > const & dPhaseCapPressure_dPhaseVolFrac, - integer const capPressureFlag, + integer const hasCapPressure, localIndex & k_up_main, real64 & fractionalFlow, real64 ( & dFractionalFlow_dP)[numFluxSupportPoints], @@ -565,7 +569,7 @@ computeFractionalFlowCapillary( localIndex const numPhase, dPhaseVolFrac, phaseCapPressure, dPhaseCapPressure_dPhaseVolFrac, - capPressureFlag, + hasCapPressure, k_up, mob, dMob_dP, @@ -658,6 +662,7 @@ struct computePotentialGravity GEOS_HOST_DEVICE static void compute( localIndex const GEOS_UNUSED_PARAM( numPhase ), localIndex const ip, + integer const checkPhasePresenceInGravity, localIndex const (&seri)[numFluxSupportPoints], localIndex const (&sesri)[numFluxSupportPoints], localIndex const (&sei)[numFluxSupportPoints], @@ -697,7 +702,48 @@ struct computePotentialGravity } } - //inner loop to get average density + calculateMeanDensity( checkPhasePresenceInGravity, ip, seri, sesri, sei, + phaseVolFrac, dCompFrac_dCompDens, + phaseMassDens, dPhaseMassDens, dProp_dComp, + densMean, dDensMean_dPres, dDensMean_dComp ); + + // compute potential difference MPFA-style + for( localIndex i = 0; i < numFluxSupportPoints; ++i ) + { + localIndex const er = seri[i]; + localIndex const esr = sesri[i]; + localIndex const ei = sei[i]; + + real64 const gravD = transmissibility[i] * gravCoef[er][esr][ei]; + real64 const dGravD_dP = dTrans_dPres[i] * gravCoef[er][esr][ei]; + pot += densMean * gravD; + + // need to add contributions from both cells the mean density depends on + for( localIndex j = 0; j < numFluxSupportPoints; ++j ) + { + dPot_dPres[j] += dDensMean_dPres[j] * gravD + densMean * dGravD_dP; + for( localIndex jc = 0; jc < numComp; ++jc ) + { + dPot_dComp[j][jc] += dDensMean_dComp[j][jc] * gravD; + } + } + } + } + + template< localIndex numComp, localIndex numFluxSupportPoints > + GEOS_HOST_DEVICE + static void calculateMeanDensity( integer const checkPhasePresenceInGravity, + localIndex const ip, + localIndex const (&seri)[numFluxSupportPoints], + localIndex const (&sesri)[numFluxSupportPoints], + localIndex const (&sei)[numFluxSupportPoints], + ElementViewConst< arrayView2d< real64 const, compflow::USD_PHASE > > const & phaseVolFrac, + ElementViewConst< arrayView3d< real64 const, compflow::USD_COMP_DC > > const & dCompFrac_dCompDens, + ElementViewConst< arrayView3d< real64 const, constitutive::multifluid::USD_PHASE > > const & phaseMassDens, + ElementViewConst< arrayView4d< real64 const, constitutive::multifluid::USD_PHASE_DC > > const & dPhaseMassDens, + real64 (& dProp_dComp)[numComp], + real64 & densMean, real64 (& dDensMean_dPres)[numFluxSupportPoints], real64 (& dDensMean_dComp)[numFluxSupportPoints][numComp] ) + { integer denom = 0; for( localIndex i = 0; i < numFluxSupportPoints; ++i ) { @@ -706,7 +752,7 @@ struct computePotentialGravity localIndex const ei = sei[i]; bool const phaseExists = (phaseVolFrac[er][esr][ei][ip] > 0); - if( !phaseExists ) + if( checkPhasePresenceInGravity && !phaseExists ) { continue; } @@ -742,29 +788,6 @@ struct computePotentialGravity } } } - - // compute potential difference MPFA-style - for( localIndex i = 0; i < numFluxSupportPoints; ++i ) - { - localIndex const er = seri[i]; - localIndex const esr = sesri[i]; - localIndex const ei = sei[i]; - - real64 const gravD = transmissibility[i] * gravCoef[er][esr][ei]; - real64 const dGravD_dP = dTrans_dPres[i] * gravCoef[er][esr][ei]; - pot += densMean * gravD; - - // need to add contributions from both cells the mean density depends on - for( localIndex j = 0; j < numFluxSupportPoints; ++j ) - { - dPot_dPres[j] += dDensMean_dPres[j] * gravD + densMean * dGravD_dP; - for( localIndex jc = 0; jc < numComp; ++jc ) - { - dPot_dComp[j][jc] += dDensMean_dComp[j][jc] * gravD; - } - } - } - } }; @@ -856,7 +879,8 @@ static void computePotentialFluxesGravity( localIndex const numPhase, ElementViewConst< arrayView4d< real64 const, constitutive::multifluid::USD_PHASE_DC > > const & dPhaseMassDens, ElementViewConst< arrayView3d< real64 const, constitutive::cappres::USD_CAPPRES > > const & phaseCapPressure, ElementViewConst< arrayView4d< real64 const, constitutive::cappres::USD_CAPPRES_DS > > const & dPhaseCapPressure_dPhaseVolFrac, - localIndex const capPressureFlag, + localIndex const hasCapPressure, + integer const checkPhasePresenceInGravity, localIndex( &k_up), localIndex (&k_up_o), real64 & phaseFlux, @@ -876,6 +900,7 @@ static void computePotentialFluxesGravity( localIndex const numPhase, // UpwindHelpers::computePotentialGravity::compute< numComp, numFluxSupportPoints >( numPhase, ip, + checkPhasePresenceInGravity, seri, sesri, sei, @@ -920,7 +945,8 @@ static void computePotentialFluxesGravity( localIndex const numPhase, dPhaseVolFrac, phaseCapPressure, dPhaseCapPressure_dPhaseVolFrac, - capPressureFlag, + hasCapPressure, + checkPhasePresenceInGravity, k_up, fflow, dFflow_dP, @@ -940,6 +966,7 @@ static void computePotentialFluxesGravity( localIndex const numPhase, //Fetch pot for phase j!=i defined as \rho_j g dz/dx UpwindHelpers::computePotentialGravity::compute< numComp, numFluxSupportPoints >( numPhase, jp, + checkPhasePresenceInGravity, seri, sesri, sei, @@ -986,7 +1013,8 @@ static void computePotentialFluxesGravity( localIndex const numPhase, dPhaseVolFrac, phaseCapPressure, dPhaseCapPressure_dPhaseVolFrac, - capPressureFlag, + hasCapPressure, + checkPhasePresenceInGravity, k_up_o, mobOther, dMobOther_dP, @@ -1049,7 +1077,7 @@ static void computePotentialFluxesCapillary( localIndex const numPhase, ElementViewConst< arrayView4d< real64 const, constitutive::multifluid::USD_PHASE_DC > > const & dPhaseMassDens, ElementViewConst< arrayView3d< real64 const, constitutive::cappres::USD_CAPPRES > > const & phaseCapPressure, ElementViewConst< arrayView4d< real64 const, constitutive::cappres::USD_CAPPRES_DS > > const & dPhaseCapPressure_dPhaseVolFrac, - localIndex const capPressureFlag, + localIndex const hasCapPressure, localIndex( &k_up), localIndex (&k_up_o), real64 & phaseFlux, @@ -1110,7 +1138,7 @@ static void computePotentialFluxesCapillary( localIndex const numPhase, dPhaseVolFrac, phaseCapPressure, dPhaseCapPressure_dPhaseVolFrac, - capPressureFlag, + hasCapPressure, k_up, fflow, dFflow_dP, @@ -1174,7 +1202,7 @@ static void computePotentialFluxesCapillary( localIndex const numPhase, dPhaseVolFrac, phaseCapPressure, dPhaseCapPressure_dPhaseVolFrac, - capPressureFlag, + hasCapPressure, k_up_o, mobOther, dMobOther_dP, @@ -1261,7 +1289,7 @@ class UpwindScheme ElementViewConst< arrayView3d< real64 const, compflow::USD_PHASE_DC > > const & dPhaseVolFrac, ElementViewConst< arrayView3d< real64 const, constitutive::cappres::USD_CAPPRES > > const & phaseCapPressure, ElementViewConst< arrayView4d< real64 const, constitutive::cappres::USD_CAPPRES_DS > > const & dPhaseCapPressure_dPhaseVolFrac, - integer const capPressureFlag, + integer const hasCapPressure, localIndex & upwindDir ) { @@ -1286,7 +1314,7 @@ class UpwindScheme dPhaseVolFrac, phaseCapPressure, dPhaseCapPressure_dPhaseVolFrac, - capPressureFlag, + hasCapPressure, pot ); //all definition has been changed to fit pot>0 => first cell is upstream @@ -1314,7 +1342,8 @@ class UpwindScheme ElementViewConst< arrayView3d< real64 const, compflow::USD_PHASE_DC > > const & dPhaseVolFrac, ElementViewConst< arrayView3d< real64 const, constitutive::cappres::USD_CAPPRES > > const & phaseCapPressure, ElementViewConst< arrayView4d< real64 const, constitutive::cappres::USD_CAPPRES_DS > > const & dPhaseCapPressure_dPhaseVolFrac, - integer const capPressureFlag, + integer const hasCapPressure, + integer const checkPhasePresenceInGravity, localIndex & upwindDir ) { @@ -1340,7 +1369,8 @@ class UpwindScheme dPhaseVolFrac, phaseCapPressure, dPhaseCapPressure_dPhaseVolFrac, - capPressureFlag, + hasCapPressure, + checkPhasePresenceInGravity, pot ); //all definition has been changed to fit pot>0 => first cell is upstream @@ -1368,7 +1398,7 @@ class UpwindScheme ElementViewConst< arrayView3d< real64 const, compflow::USD_PHASE_DC > > const & dPhaseVolFrac, ElementViewConst< arrayView3d< real64 const, constitutive::cappres::USD_CAPPRES > > const & phaseCapPressure, ElementViewConst< arrayView4d< real64 const, constitutive::cappres::USD_CAPPRES_DS > > const & dPhaseCapPressure_dPhaseVolFrac, - integer const capPressureFlag, + integer const hasCapPressure, localIndex & upwindDir ) { @@ -1393,7 +1423,7 @@ class UpwindScheme dPhaseVolFrac, phaseCapPressure, dPhaseCapPressure_dPhaseVolFrac, - capPressureFlag, + hasCapPressure, pot ); //all definition has been changed to fit pot>0 => first cell is upstream @@ -1486,7 +1516,7 @@ class HybridUpwind : public UpwindScheme ElementViewConst< arrayView3d< real64 const, compflow::USD_PHASE_DC > > const & dPhaseVolFrac, ElementViewConst< arrayView3d< real64 const, constitutive::cappres::USD_CAPPRES > > const & phaseCapPressure, ElementViewConst< arrayView4d< real64 const, constitutive::cappres::USD_CAPPRES_DS > > const & dPhaseCapPressure_dPhaseVolFrac, - integer const GEOS_UNUSED_PARAM( capPressureFlag ), + integer const GEOS_UNUSED_PARAM( hasCapPressure ), real64 & potential ) { @@ -1538,9 +1568,9 @@ class HybridUpwind : public UpwindScheme ElementViewConst< arrayView3d< real64 const, compflow::USD_PHASE_DC > > const & dPhaseVolFrac, ElementViewConst< arrayView3d< real64 const, constitutive::cappres::USD_CAPPRES > > const & phaseCapPressure, ElementViewConst< arrayView4d< real64 const, constitutive::cappres::USD_CAPPRES_DS > > const & dPhaseCapPressure_dPhaseVolFrac, - integer const GEOS_UNUSED_PARAM( capPressureFlag ), - real64 & potential - ) + integer const GEOS_UNUSED_PARAM( hasCapPressure ), + integer const checkPhasePresenceInGravity, + real64 & potential ) { //Form total velocity @@ -1558,6 +1588,7 @@ class HybridUpwind : public UpwindScheme UpwindHelpers::computePotentialGravity::compute< numComp, numFluxSupportPoints >( numPhase, ipp, + checkPhasePresenceInGravity, seri, sesri, sei, @@ -1602,7 +1633,7 @@ class HybridUpwind : public UpwindScheme ElementViewConst< arrayView3d< real64 const, compflow::USD_PHASE_DC > > const & dPhaseVolFrac, ElementViewConst< arrayView3d< real64 const, constitutive::cappres::USD_CAPPRES > > const & phaseCapPressure, ElementViewConst< arrayView4d< real64 const, constitutive::cappres::USD_CAPPRES_DS > > const & dPhaseCapPressure_dPhaseVolFrac, - integer const GEOS_UNUSED_PARAM( capPressureFlag ), + integer const GEOS_UNUSED_PARAM( hasCapPressure ), real64 & potential ) { @@ -1685,6 +1716,7 @@ struct IHUPhaseFlux compute( integer const numPhase, integer const ip, integer const hasCapPressure, + integer const checkPhasePresenceInGravity, localIndex const ( &seri )[numFluxSupportPoints], localIndex const ( &sesri )[numFluxSupportPoints], localIndex const ( &sei )[numFluxSupportPoints], @@ -1728,11 +1760,12 @@ struct IHUPhaseFlux real64 dummy[numComp]; real64 dDummy_dP[numFluxSupportPoints][numComp]; real64 dDummy_dC[numFluxSupportPoints][numComp][numComp]; - + real64 dDummy_dTrans[numComp]; for( integer jp = 0; jp < numPhase; ++jp ) { - PPUPhaseFlux::compute( numPhase, jp, hasCapPressure, + PPUPhaseFlux::compute( numPhase, jp, + hasCapPressure, checkPhasePresenceInGravity, seri, sesri, sei, trans, dTrans_dPres, pres, gravCoef, @@ -1744,7 +1777,7 @@ struct IHUPhaseFlux phaseCapPressure, dPhaseCapPressure_dPhaseVolFrac, k_up_ppu, potGrad, phaseFlux, dPhaseFlux_dP, dPhaseFlux_dC, - dummy, dDummy_dP, dDummy_dC ); + dummy, dDummy_dP, dDummy_dC, dDummy_dTrans ); totFlux += phaseFlux; @@ -1886,6 +1919,7 @@ struct IHUPhaseFlux phaseCapPressure, dPhaseCapPressure_dPhaseVolFrac, hasCapPressure, + checkPhasePresenceInGravity, k_up_g, k_up_og, gravitationalPhaseFlux, diff --git a/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/KernelLaunchSelectors.hpp b/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/KernelLaunchSelectors.hpp index 0e7b2b84dc3..3e7370f1c6f 100644 --- a/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/KernelLaunchSelectors.hpp +++ b/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/KernelLaunchSelectors.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/PPUPhaseFlux.hpp b/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/PPUPhaseFlux.hpp index c8ac5256d98..14fc73f029d 100644 --- a/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/PPUPhaseFlux.hpp +++ b/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/PPUPhaseFlux.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -68,6 +68,10 @@ struct PPUPhaseFlux * @param phaseFlux phase flux * @param dPhaseFlux_dP derivative of phase flux wrt pressure * @param dPhaseFlux_dC derivative of phase flux wrt comp density + * @param compFlux component flux + * @param dCompFlux_dP derivative of phase flux wrt pressure + * @param dCompFlux_dC derivative of phase flux wrt comp density + * @param dCompFlux_dTrans derivative of phase flux wrt transmissibility */ template< integer numComp, integer numFluxSupportPoints > GEOS_HOST_DEVICE @@ -75,6 +79,7 @@ struct PPUPhaseFlux compute( integer const numPhase, integer const ip, integer const hasCapPressure, + integer const checkPhasePresenceInGravity, localIndex const ( &seri )[numFluxSupportPoints], localIndex const ( &sesri )[numFluxSupportPoints], localIndex const ( &sei )[numFluxSupportPoints], @@ -95,20 +100,25 @@ struct PPUPhaseFlux ElementViewConst< arrayView4d< real64 const, constitutive::cappres::USD_CAPPRES_DS > > const & dPhaseCapPressure_dPhaseVolFrac, localIndex & k_up, real64 & potGrad, - real64 ( &phaseFlux ), + real64 & phaseFlux, real64 ( & dPhaseFlux_dP )[numFluxSupportPoints], real64 ( & dPhaseFlux_dC )[numFluxSupportPoints][numComp], real64 ( & compFlux )[numComp], real64 ( & dCompFlux_dP )[numFluxSupportPoints][numComp], - real64 ( & dCompFlux_dC )[numFluxSupportPoints][numComp][numComp] ) + real64 ( & dCompFlux_dC )[numFluxSupportPoints][numComp][numComp], + real64 ( & dCompFlux_dTrans )[numComp] ) { + real64 dPotGrad_dTrans = 0; real64 dPresGrad_dP[numFluxSupportPoints]{}; real64 dPresGrad_dC[numFluxSupportPoints][numComp]{}; real64 dGravHead_dP[numFluxSupportPoints]{}; real64 dGravHead_dC[numFluxSupportPoints][numComp]{}; - PotGrad::compute< numComp, numFluxSupportPoints >( numPhase, ip, hasCapPressure, seri, sesri, sei, trans, dTrans_dPres, pres, - gravCoef, phaseVolFrac, dPhaseVolFrac, dCompFrac_dCompDens, phaseMassDens, dPhaseMassDens, - phaseCapPressure, dPhaseCapPressure_dPhaseVolFrac, potGrad, dPresGrad_dP, + PotGrad::compute< numComp, numFluxSupportPoints >( numPhase, ip, hasCapPressure, checkPhasePresenceInGravity, + seri, sesri, sei, trans, dTrans_dPres, pres, + gravCoef, phaseVolFrac, dPhaseVolFrac, dCompFrac_dCompDens, + phaseMassDens, dPhaseMassDens, + phaseCapPressure, dPhaseCapPressure_dPhaseVolFrac, + potGrad, dPotGrad_dTrans, dPresGrad_dP, dPresGrad_dC, dGravHead_dP, dGravHead_dC ); // *** upwinding *** @@ -122,6 +132,11 @@ struct PPUPhaseFlux real64 const mobility = phaseMob[er_up][esr_up][ei_up][ip]; + // compute phase flux using upwind mobility + phaseFlux = mobility * potGrad; + + real64 const dPhaseFlux_dTrans = mobility * dPotGrad_dTrans; + // pressure gradient depends on all points in the stencil for( integer ke = 0; ke < numFluxSupportPoints; ++ke ) { @@ -133,8 +148,6 @@ struct PPUPhaseFlux dPhaseFlux_dC[ke][jc] *= mobility; } } - // compute phase flux using upwind mobility. - phaseFlux = mobility * potGrad; real64 const dMob_dP = dPhaseMob[er_up][esr_up][ei_up][ip][Deriv::dP]; arraySlice1d< real64 const, compflow::USD_PHASE_DC - 2 > dPhaseMobSub = @@ -148,8 +161,8 @@ struct PPUPhaseFlux } //distribute on phaseComponentFlux here - PhaseComponentFlux::compute( ip, k_up, seri, sesri, sei, phaseCompFrac, dPhaseCompFrac, dCompFrac_dCompDens, phaseFlux - , dPhaseFlux_dP, dPhaseFlux_dC, compFlux, dCompFlux_dP, dCompFlux_dC ); + PhaseComponentFlux::compute( ip, k_up, seri, sesri, sei, phaseCompFrac, dPhaseCompFrac, dCompFrac_dCompDens, + phaseFlux, dPhaseFlux_dP, dPhaseFlux_dC, dPhaseFlux_dTrans, compFlux, dCompFlux_dP, dCompFlux_dC, dCompFlux_dTrans ); } }; diff --git a/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/PhaseComponentFlux.hpp b/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/PhaseComponentFlux.hpp index 812cc19eb3d..f7810873e5e 100644 --- a/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/PhaseComponentFlux.hpp +++ b/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/PhaseComponentFlux.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -119,6 +119,94 @@ struct PhaseComponentFlux } } } + + /** + * @brief Compute the component flux for a given phase + * @tparam numComp number of components + * @tparam numFluxSupportPoints number of flux support points + * @param ip phase index + * @param k_up uptream index for this phase + * @param seri arraySlice of the stencil-implied element region index + * @param sesri arraySlice of the stencil-implied element subregion index + * @param sei arraySlice of the stencil-implied element index + * @param phaseCompFrac phase component fraction + * @param dPhaseCompFrac derivative of phase component fraction wrt pressure, temperature, component fraction + * @param dCompFrac_dCompDens derivative of component fraction wrt component density + * @param phaseFlux phase flux + * @param dPhaseFlux_dP derivative of phase flux wrt pressure + * @param dPhaseFlux_dC derivative of phase flux wrt comp density + * @param dPhaseFlux_dTrans derivative of phase flux wrt transmissibility + * @param compFlux component flux + * @param dCompFlux_dP derivative of phase flux wrt pressure + * @param dCompFlux_dC derivative of phase flux wrt comp density + * @param dCompFlux_dTrans derivative of phase flux wrt transmissibility + */ + template< localIndex numComp, localIndex numFluxSupportPoints > + GEOS_HOST_DEVICE + static void + compute( localIndex const ip, + localIndex const k_up, + localIndex const ( &seri )[numFluxSupportPoints], + localIndex const ( &sesri )[numFluxSupportPoints], + localIndex const ( &sei )[numFluxSupportPoints], + ElementViewConst< arrayView4d< real64 const, constitutive::multifluid::USD_PHASE_COMP > > const & phaseCompFrac, + ElementViewConst< arrayView5d< real64 const, constitutive::multifluid::USD_PHASE_COMP_DC > > const & dPhaseCompFrac, + ElementViewConst< arrayView3d< real64 const, compflow::USD_COMP_DC > > const & dCompFrac_dCompDens, + real64 const & phaseFlux, + real64 const ( &dPhaseFlux_dP )[numFluxSupportPoints], + real64 const ( &dPhaseFlux_dC )[numFluxSupportPoints][numComp], + real64 const & dPhaseFlux_dTrans, + real64 ( & compFlux )[numComp], + real64 ( & dCompFlux_dP )[numFluxSupportPoints][numComp], + real64 ( & dCompFlux_dC )[numFluxSupportPoints][numComp][numComp], + real64 ( & dCompFlux_dTrans )[numComp] ) + { + localIndex const er_up = seri[k_up]; + localIndex const esr_up = sesri[k_up]; + localIndex const ei_up = sei[k_up]; + + real64 dProp_dC[numComp]{}; + + // slice some constitutive arrays to avoid too much indexing in component loop + arraySlice1d< real64 const, constitutive::multifluid::USD_PHASE_COMP-3 > phaseCompFracSub = + phaseCompFrac[er_up][esr_up][ei_up][0][ip]; + arraySlice2d< real64 const, constitutive::multifluid::USD_PHASE_COMP_DC-3 > dPhaseCompFracSub = + dPhaseCompFrac[er_up][esr_up][ei_up][0][ip]; + + // compute component fluxes and derivatives using upstream cell composition + for( integer ic = 0; ic < numComp; ++ic ) + { + real64 const ycp = phaseCompFracSub[ic]; + compFlux[ic] += phaseFlux * ycp; + + // derivatives stemming from phase flux + for( integer ke = 0; ke < numFluxSupportPoints; ++ke ) + { + dCompFlux_dP[ke][ic] += dPhaseFlux_dP[ke] * ycp; + for( integer jc = 0; jc < numComp; ++jc ) + { + dCompFlux_dC[ke][ic][jc] += dPhaseFlux_dC[ke][jc] * ycp; + } + } + + // additional derivatives stemming from upstream cell phase composition + dCompFlux_dP[k_up][ic] += phaseFlux * dPhaseCompFracSub[ic][Deriv::dP]; + + // convert derivatives of comp fraction w.r.t. comp fractions to derivatives w.r.t. comp densities + applyChainRule( numComp, + dCompFrac_dCompDens[er_up][esr_up][ei_up], + dPhaseCompFracSub[ic], + dProp_dC, + Deriv::dC ); + for( integer jc = 0; jc < numComp; ++jc ) + { + dCompFlux_dC[k_up][ic][jc] += phaseFlux * dProp_dC[jc]; + } + + dCompFlux_dTrans[ic] += dPhaseFlux_dTrans * ycp; + } + } + }; } // namespace isothermalCompositionalMultiPhaseFVMKernelUtilities diff --git a/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/PhaseMobilityKernel.hpp b/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/PhaseMobilityKernel.hpp index 1886cdbe4f5..7eb1f79ab2f 100644 --- a/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/PhaseMobilityKernel.hpp +++ b/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/PhaseMobilityKernel.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/PhaseVolumeFractionKernel.hpp b/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/PhaseVolumeFractionKernel.hpp index 875bfe07c8e..a693ba124e9 100644 --- a/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/PhaseVolumeFractionKernel.hpp +++ b/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/PhaseVolumeFractionKernel.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/PotGrad.hpp b/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/PotGrad.hpp index 14f702792db..f9ca248b4dc 100644 --- a/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/PotGrad.hpp +++ b/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/PotGrad.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -46,6 +46,7 @@ struct PotGrad compute ( integer const numPhase, integer const ip, integer const hasCapPressure, + integer const checkPhasePresenceInGravity, localIndex const ( &seri )[numFluxSupportPoints], localIndex const ( &sesri )[numFluxSupportPoints], localIndex const ( &sei )[numFluxSupportPoints], @@ -61,6 +62,7 @@ struct PotGrad ElementViewConst< arrayView3d< real64 const, constitutive::cappres::USD_CAPPRES > > const & phaseCapPressure, ElementViewConst< arrayView4d< real64 const, constitutive::cappres::USD_CAPPRES_DS > > const & dPhaseCapPressure_dPhaseVolFrac, real64 & potGrad, + real64 & dPotGrad_dTrans, real64 ( & dPresGrad_dP )[numFluxSupportPoints], real64 ( & dPresGrad_dC )[numFluxSupportPoints][numComp], real64 ( & dGravHead_dP )[numFluxSupportPoints], @@ -84,56 +86,16 @@ struct PotGrad real64 dDensMean_dC[numFluxSupportPoints][numComp]{}; real64 presGrad = 0.0; + real64 dPresGrad_dTrans = 0.0; real64 gravHead = 0.0; + real64 dGravHead_dTrans = 0.0; real64 dCapPressure_dC[numComp]{}; - real64 dProp_dC[numComp]{}; - - // calculate quantities on primary connected cells - integer denom = 0; - for( integer i = 0; i < numFluxSupportPoints; ++i ) - { - localIndex const er = seri[i]; - localIndex const esr = sesri[i]; - localIndex const ei = sei[i]; - - bool const phaseExists = (phaseVolFrac[er][esr][ei][ip] > 0); - if( !phaseExists ) - { - continue; - } - - // density - real64 const density = phaseMassDens[er][esr][ei][0][ip]; - real64 const dDens_dP = dPhaseMassDens[er][esr][ei][0][ip][Deriv::dP]; - - applyChainRule( numComp, - dCompFrac_dCompDens[er][esr][ei], - dPhaseMassDens[er][esr][ei][0][ip], - dProp_dC, - Deriv::dC ); - - // average density and derivatives - densMean += density; - dDensMean_dP[i] = dDens_dP; - for( integer jc = 0; jc < numComp; ++jc ) - { - dDensMean_dC[i][jc] = dProp_dC[jc]; - } - denom++; - } - if( denom > 1 ) - { - densMean /= denom; - for( integer i = 0; i < numFluxSupportPoints; ++i ) - { - dDensMean_dP[i] /= denom; - for( integer jc = 0; jc < numComp; ++jc ) - { - dDensMean_dC[i][jc] /= denom; - } - } - } + calculateMeanDensity( checkPhasePresenceInGravity, ip, + seri, sesri, sei, + phaseVolFrac, dCompFrac_dCompDens, + phaseMassDens, dPhaseMassDens, + densMean, dDensMean_dP, dDensMean_dC ); /// compute the TPFA potential difference for( integer i = 0; i < numFluxSupportPoints; i++ ) @@ -167,22 +129,25 @@ struct PotGrad } } - presGrad += trans[i] * (pres[er][esr][ei] - capPressure); - dPresGrad_dP[i] += trans[i] * (1 - dCapPressure_dP) - + dTrans_dPres[i] * (pres[er][esr][ei] - capPressure); + real64 const dP = pres[er][esr][ei] - capPressure; + presGrad += trans[i] * dP; + dPresGrad_dTrans += dP; + dPresGrad_dP[i] += trans[i] * (1 - dCapPressure_dP) + dTrans_dPres[i] * dP; for( integer jc = 0; jc < numComp; ++jc ) { dPresGrad_dC[i][jc] += -trans[i] * dCapPressure_dC[jc]; } - real64 const gravD = trans[i] * gravCoef[er][esr][ei]; - real64 const dGravD_dP = dTrans_dPres[i] * gravCoef[er][esr][ei]; + real64 const gC = gravCoef[er][esr][ei]; + real64 const gravD = trans[i] * gC; + real64 const dGravD_dTrans = gC; + real64 const dGravD_dP = dTrans_dPres[i] * gC; // the density used in the potential difference is always a mass density // unlike the density used in the phase mobility, which is a mass density // if useMass == 1 and a molar density otherwise gravHead += densMean * gravD; - + dGravHead_dTrans += densMean * dGravD_dTrans; // need to add contributions from both cells the mean density depends on for( integer j = 0; j < numFluxSupportPoints; ++j ) { @@ -196,7 +161,69 @@ struct PotGrad // compute phase potential gradient potGrad = presGrad - gravHead; + dPotGrad_dTrans = dPresGrad_dTrans - dGravHead_dTrans; + } + + template< integer numComp, integer numFluxSupportPoints > + GEOS_HOST_DEVICE + static void + calculateMeanDensity( integer const checkPhasePresenceInGravity, + integer const ip, + localIndex const ( &seri )[numFluxSupportPoints], + localIndex const ( &sesri )[numFluxSupportPoints], + localIndex const ( &sei )[numFluxSupportPoints], + ElementViewConst< arrayView2d< real64 const, compflow::USD_PHASE > > const & phaseVolFrac, + ElementViewConst< arrayView3d< real64 const, compflow::USD_COMP_DC > > const & dCompFrac_dCompDens, + ElementViewConst< arrayView3d< real64 const, constitutive::multifluid::USD_PHASE > > const & phaseMassDens, + ElementViewConst< arrayView4d< real64 const, constitutive::multifluid::USD_PHASE_DC > > const & dPhaseMassDens, + real64 & densMean, real64 ( & dDensMean_dP)[numFluxSupportPoints], real64 ( & dDensMean_dC )[numFluxSupportPoints][numComp] ) + { + real64 dDens_dC[numComp]{}; + + integer denom = 0; + for( integer i = 0; i < numFluxSupportPoints; ++i ) + { + localIndex const er = seri[i]; + localIndex const esr = sesri[i]; + localIndex const ei = sei[i]; + bool const phaseExists = (phaseVolFrac[er][esr][ei][ip] > 0); + if( checkPhasePresenceInGravity && !phaseExists ) + { + continue; + } + + // density + real64 const density = phaseMassDens[er][esr][ei][0][ip]; + real64 const dDens_dP = dPhaseMassDens[er][esr][ei][0][ip][Deriv::dP]; + + applyChainRule( numComp, + dCompFrac_dCompDens[er][esr][ei], + dPhaseMassDens[er][esr][ei][0][ip], + dDens_dC, + Deriv::dC ); + + // average density and derivatives + densMean += density; + dDensMean_dP[i] = dDens_dP; + for( integer jc = 0; jc < numComp; ++jc ) + { + dDensMean_dC[i][jc] = dDens_dC[jc]; + } + denom++; + } + if( denom > 1 ) + { + densMean /= denom; + for( integer i = 0; i < numFluxSupportPoints; ++i ) + { + dDensMean_dP[i] /= denom; + for( integer jc = 0; jc < numComp; ++jc ) + { + dDensMean_dC[i][jc] /= denom; + } + } + } } }; diff --git a/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/PropertyKernelBase.hpp b/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/PropertyKernelBase.hpp index 4390ad8a34b..ff312c40151 100644 --- a/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/PropertyKernelBase.hpp +++ b/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/PropertyKernelBase.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/ReactiveCompositionalMultiphaseOBLKernels.hpp b/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/ReactiveCompositionalMultiphaseOBLKernels.hpp index bc76898511d..c07fb716b9f 100644 --- a/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/ReactiveCompositionalMultiphaseOBLKernels.hpp +++ b/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/ReactiveCompositionalMultiphaseOBLKernels.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -606,7 +606,7 @@ class FluxComputeKernelBase static constexpr real64 secondsToDaysMult = 1.0 / (60 * 60 * 24); - // transmissibility in DARTS is the same as in Eclipse (Metric): + // transmissibility in DARTS is Metric: // T = c * (k * A) / d, where c is Darcy constant, k is permeability [mD], A is area [m2] and d is distance [m] // Darcy constant takes care of unit translation (from SI to Metric), it includes conversion of [s]->[day], [cp->Pa * s], [Pa]->[bar] and // [mD->m2]: diff --git a/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/RelativePermeabilityUpdateKernel.hpp b/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/RelativePermeabilityUpdateKernel.hpp index 7706d28b679..05da6a151f4 100644 --- a/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/RelativePermeabilityUpdateKernel.hpp +++ b/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/RelativePermeabilityUpdateKernel.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/ResidualNormKernel.hpp b/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/ResidualNormKernel.hpp index b5d4d8c0ae0..3b41be7145b 100644 --- a/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/ResidualNormKernel.hpp +++ b/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/ResidualNormKernel.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/SolidInternalEnergyUpdateKernel.hpp b/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/SolidInternalEnergyUpdateKernel.hpp index 67a37d81282..5c534fcc154 100644 --- a/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/SolidInternalEnergyUpdateKernel.hpp +++ b/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/SolidInternalEnergyUpdateKernel.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/SolutionCheckKernel.hpp b/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/SolutionCheckKernel.hpp index 63b5975dd7a..89d681bb02c 100644 --- a/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/SolutionCheckKernel.hpp +++ b/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/SolutionCheckKernel.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -61,7 +61,7 @@ class SolutionCheckKernel : public SolutionScalingAndCheckingKernelBase< integer */ SolutionCheckKernel( integer const allowCompDensChopping, integer const allowNegativePressure, - CompositionalMultiphaseFVM::ScalingType const scalingType, + compositionalMultiphaseUtilities::ScalingType const scalingType, real64 const scalingFactor, arrayView1d< real64 const > const pressure, arrayView2d< real64 const, compflow::USD_COMP > const compDens, @@ -217,7 +217,7 @@ class SolutionCheckKernel : public SolutionScalingAndCheckingKernelBase< integer StackVariables & stack, FUNC && kernelOp = NoOpFunc{} ) const { - bool const localScaling = m_scalingType == CompositionalMultiphaseFVM::ScalingType::Local; + bool const localScaling = m_scalingType == compositionalMultiphaseUtilities::ScalingType::Local; real64 const newPres = m_pressure[ei] + (localScaling ? m_pressureScalingFactor[ei] : m_scalingFactor) * m_localSolution[stack.localRow]; if( newPres < 0 ) @@ -280,7 +280,7 @@ class SolutionCheckKernel : public SolutionScalingAndCheckingKernelBase< integer real64 const m_scalingFactor; /// scaling type (global or local) - CompositionalMultiphaseFVM::ScalingType const m_scalingType; + compositionalMultiphaseUtilities::ScalingType const m_scalingType; }; @@ -306,7 +306,7 @@ class SolutionCheckKernelFactory static SolutionCheckKernel::StackVariables createAndLaunch( integer const allowCompDensChopping, integer const allowNegativePressure, - CompositionalMultiphaseFVM::ScalingType const scalingType, + compositionalMultiphaseUtilities::ScalingType const scalingType, real64 const scalingFactor, arrayView1d< real64 const > const pressure, arrayView2d< real64 const, compflow::USD_COMP > const compDens, diff --git a/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/SolutionScalingAndCheckingKernelBase.hpp b/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/SolutionScalingAndCheckingKernelBase.hpp index ff03cf15f71..14abec8e0b7 100644 --- a/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/SolutionScalingAndCheckingKernelBase.hpp +++ b/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/SolutionScalingAndCheckingKernelBase.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/SolutionScalingKernel.hpp b/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/SolutionScalingKernel.hpp index 399ccaaa6bc..316859e9de7 100644 --- a/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/SolutionScalingKernel.hpp +++ b/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/SolutionScalingKernel.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -21,6 +21,7 @@ #define GEOS_PHYSICSSOLVERS_FLUIDFLOW_COMPOSITIONAL_SOLUTIONSCALINGKERNEL_HPP #include "physicsSolvers/fluidFlow/kernels/compositional/SolutionScalingAndCheckingKernelBase.hpp" +#include "physicsSolvers/fluidFlow/kernels/compositional/AccumulationKernel.hpp" #include "physicsSolvers/fluidFlow/CompositionalMultiphaseFVM.hpp" namespace geos diff --git a/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/StabilizedFluxComputeKernel.hpp b/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/StabilizedFluxComputeKernel.hpp index de9e92c8b80..74332aaf862 100644 --- a/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/StabilizedFluxComputeKernel.hpp +++ b/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/StabilizedFluxComputeKernel.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -193,6 +193,7 @@ class FluxComputeKernel : public isothermalCompositionalMultiphaseFVMKernels::Fl // // We use the lambda below (called **inside** the phase loop of the base computeFlux) to compute stabilization terms Base::computeFlux( iconn, stack, [&] ( integer const ip, + integer const GEOS_UNUSED_PARAM( checkPhasePresenceInGravity ), localIndex const (&k)[2], localIndex const (&seri)[2], localIndex const (&sesri)[2], @@ -326,8 +327,7 @@ class FluxComputeKernelFactory integer const numPhases, globalIndex const rankOffset, string const & dofKey, - integer const hasCapPressure, - integer const useTotalMassEquation, + BitFlags< isothermalCompositionalMultiphaseFVMKernels::KernelFlags > kernelFlags, string const & solverName, ElementRegionManager const & elemManager, STENCILWRAPPER const & stencilWrapper, @@ -345,12 +345,6 @@ class FluxComputeKernelFactory elemManager.constructArrayViewAccessor< globalIndex, 1 >( dofKey ); dofNumberAccessor.setName( solverName + "/accessors/" + dofKey ); - BitFlags< isothermalCompositionalMultiphaseFVMKernels::KernelFlags > kernelFlags; - if( hasCapPressure ) - kernelFlags.set( isothermalCompositionalMultiphaseFVMKernels::KernelFlags::CapPressure ); - if( useTotalMassEquation ) - kernelFlags.set( isothermalCompositionalMultiphaseFVMKernels::KernelFlags::TotalMassEquation ); - using KERNEL_TYPE = FluxComputeKernel< NUM_COMP, NUM_DOF, STENCILWRAPPER >; typename KERNEL_TYPE::CompFlowAccessors compFlowAccessors( elemManager, solverName ); typename KERNEL_TYPE::MultiFluidAccessors multiFluidAccessors( elemManager, solverName ); diff --git a/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/StatisticsKernel.hpp b/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/StatisticsKernel.hpp index ae7c91fcc6e..af2cec319f2 100644 --- a/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/StatisticsKernel.hpp +++ b/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/StatisticsKernel.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/ThermalAccumulationKernel.hpp b/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/ThermalAccumulationKernel.hpp index 1dcaf7acbe4..e5839bd023d 100644 --- a/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/ThermalAccumulationKernel.hpp +++ b/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/ThermalAccumulationKernel.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -311,7 +311,7 @@ class AccumulationKernelFactory createAndLaunch( localIndex const numComps, localIndex const numPhases, globalIndex const rankOffset, - integer const useTotalMassEquation, + BitFlags< isothermalCompositionalMultiphaseBaseKernels::KernelFlags > kernelFlags, string const dofKey, ElementSubRegionBase const & subRegion, constitutive::MultiFluidBase const & fluid, @@ -325,10 +325,6 @@ class AccumulationKernelFactory localIndex constexpr NUM_COMP = NC(); localIndex constexpr NUM_DOF = NC()+2; - BitFlags< isothermalCompositionalMultiphaseBaseKernels::KernelFlags > kernelFlags; - if( useTotalMassEquation ) - kernelFlags.set( isothermalCompositionalMultiphaseBaseKernels::KernelFlags::TotalMassEquation ); - AccumulationKernel< NUM_COMP, NUM_DOF > kernel( numPhases, rankOffset, dofKey, subRegion, fluid, solid, localMatrix, localRhs, kernelFlags ); AccumulationKernel< NUM_COMP, NUM_DOF >::template launch< POLICY >( subRegion.size(), kernel ); diff --git a/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/ThermalDiffusionDispersionFluxComputeKernel.hpp b/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/ThermalDiffusionDispersionFluxComputeKernel.hpp index 9dd607a5d0c..c5f2d67951d 100644 --- a/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/ThermalDiffusionDispersionFluxComputeKernel.hpp +++ b/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/ThermalDiffusionDispersionFluxComputeKernel.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -302,9 +302,7 @@ class DiffusionDispersionFluxComputeKernelFactory integer const numPhases, globalIndex const rankOffset, string const & dofKey, - integer const hasDiffusion, - integer const hasDispersion, - integer const useTotalMassEquation, + BitFlags< isothermalCompositionalMultiphaseFVMKernels::KernelFlags > kernelFlags, string const & solverName, ElementRegionManager const & elemManager, STENCILWRAPPER const & stencilWrapper, @@ -322,10 +320,6 @@ class DiffusionDispersionFluxComputeKernelFactory elemManager.constructArrayViewAccessor< globalIndex, 1 >( dofKey ); dofNumberAccessor.setName( solverName + "/accessors/" + dofKey ); - BitFlags< isothermalCompositionalMultiphaseFVMKernels::KernelFlags > kernelFlags; - if( useTotalMassEquation ) - kernelFlags.set( isothermalCompositionalMultiphaseFVMKernels::KernelFlags::TotalMassEquation ); - using kernelType = DiffusionDispersionFluxComputeKernel< NUM_COMP, NUM_DOF, STENCILWRAPPER >; typename kernelType::CompFlowAccessors compFlowAccessors( elemManager, solverName ); typename kernelType::MultiFluidAccessors multiFluidAccessors( elemManager, solverName ); @@ -338,7 +332,8 @@ class DiffusionDispersionFluxComputeKernelFactory diffusionAccessors, dispersionAccessors, porosityAccessors, dt, localMatrix, localRhs, kernelFlags ); kernelType::template launch< POLICY >( stencilWrapper.size(), - hasDiffusion, hasDispersion, + kernelFlags.isSet( isothermalCompositionalMultiphaseFVMKernels::KernelFlags::Diffusion ), + kernelFlags.isSet( isothermalCompositionalMultiphaseFVMKernels::KernelFlags::Dispersion ), kernel ); } ); } diff --git a/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/ThermalDirichletFluxComputeKernel.hpp b/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/ThermalDirichletFluxComputeKernel.hpp index edd4df9f192..009ab3ce63c 100644 --- a/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/ThermalDirichletFluxComputeKernel.hpp +++ b/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/ThermalDirichletFluxComputeKernel.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -430,7 +430,7 @@ class DirichletFluxComputeKernelFactory createAndLaunch( integer const numComps, integer const numPhases, globalIndex const rankOffset, - integer const useTotalMassEquation, + BitFlags< isothermalCompositionalMultiphaseFVMKernels::KernelFlags > kernelFlags, string const & dofKey, string const & solverName, FaceManager const & faceManager, @@ -453,11 +453,6 @@ class DirichletFluxComputeKernelFactory elemManager.constructArrayViewAccessor< globalIndex, 1 >( dofKey ); dofNumberAccessor.setName( solverName + "/accessors/" + dofKey ); - // for now, we neglect capillary pressure in the kernel - BitFlags< isothermalCompositionalMultiphaseFVMKernels::KernelFlags > kernelFlags; - if( useTotalMassEquation ) - kernelFlags.set( isothermalCompositionalMultiphaseFVMKernels::KernelFlags::TotalMassEquation ); - using KernelType = DirichletFluxComputeKernel< NUM_COMP, NUM_DOF, typename FluidType::KernelWrapper >; typename KernelType::CompFlowAccessors compFlowAccessors( elemManager, solverName ); typename KernelType::ThermalCompFlowAccessors thermalCompFlowAccessors( elemManager, solverName ); diff --git a/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/ThermalFluxComputeKernel.hpp b/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/ThermalFluxComputeKernel.hpp index 17395f62324..1eb02a44f38 100644 --- a/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/ThermalFluxComputeKernel.hpp +++ b/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/ThermalFluxComputeKernel.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -197,6 +197,7 @@ class FluxComputeKernel : public isothermalCompositionalMultiphaseFVMKernels::Fl // such as potGrad, phaseFlux, and the indices of the upwind cell // We use the lambda below (called **inside** the phase loop of the base computeFlux) to access these variables Base::computeFlux( iconn, stack, [&] ( integer const ip, + integer const checkPhasePresenceInGravity, localIndex const (&k)[2], localIndex const (&seri)[2], localIndex const (&sesri)[2], @@ -234,7 +235,7 @@ class FluxComputeKernel : public isothermalCompositionalMultiphaseFVMKernels::Fl localIndex const ei = sei[i]; bool const phaseExists = (m_phaseVolFrac[er_up][esr_up][ei_up][ip] > 0); - if( !phaseExists ) + if( checkPhasePresenceInGravity && !phaseExists ) { continue; } @@ -521,8 +522,7 @@ class FluxComputeKernelFactory integer const numPhases, globalIndex const rankOffset, string const & dofKey, - integer const hasCapPressure, - integer const useTotalMassEquation, + BitFlags< isothermalCompositionalMultiphaseFVMKernels::KernelFlags > kernelFlags, string const & solverName, ElementRegionManager const & elemManager, STENCILWRAPPER const & stencilWrapper, @@ -540,12 +540,6 @@ class FluxComputeKernelFactory elemManager.constructArrayViewAccessor< globalIndex, 1 >( dofKey ); dofNumberAccessor.setName( solverName + "/accessors/" + dofKey ); - BitFlags< isothermalCompositionalMultiphaseFVMKernels::KernelFlags > kernelFlags; - if( hasCapPressure ) - kernelFlags.set( isothermalCompositionalMultiphaseFVMKernels::KernelFlags::CapPressure ); - if( useTotalMassEquation ) - kernelFlags.set( isothermalCompositionalMultiphaseFVMKernels::KernelFlags::TotalMassEquation ); - using KernelType = FluxComputeKernel< NUM_COMP, NUM_DOF, STENCILWRAPPER >; typename KernelType::CompFlowAccessors compFlowAccessors( elemManager, solverName ); typename KernelType::ThermalCompFlowAccessors thermalCompFlowAccessors( elemManager, solverName ); diff --git a/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/ThermalPhaseMobilityKernel.hpp b/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/ThermalPhaseMobilityKernel.hpp index f6be6b2cf55..796e59bee30 100644 --- a/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/ThermalPhaseMobilityKernel.hpp +++ b/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/ThermalPhaseMobilityKernel.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/ThermalPhaseVolumeFractionKernel.hpp b/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/ThermalPhaseVolumeFractionKernel.hpp index 375fecd1cea..3c4ed036b3b 100644 --- a/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/ThermalPhaseVolumeFractionKernel.hpp +++ b/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/ThermalPhaseVolumeFractionKernel.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/ThermalResidualNormKernel.hpp b/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/ThermalResidualNormKernel.hpp index 7dbb7bab2f9..6b60c11b66f 100644 --- a/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/ThermalResidualNormKernel.hpp +++ b/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/ThermalResidualNormKernel.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/ThermalSolutionCheckKernel.hpp b/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/ThermalSolutionCheckKernel.hpp index 57007c9f673..b0447b33782 100644 --- a/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/ThermalSolutionCheckKernel.hpp +++ b/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/ThermalSolutionCheckKernel.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -60,7 +60,7 @@ class SolutionCheckKernel : public isothermalCompositionalMultiphaseBaseKernels: */ SolutionCheckKernel( integer const allowCompDensChopping, integer const allowNegativePressure, - CompositionalMultiphaseFVM::ScalingType const scalingType, + compositionalMultiphaseUtilities::ScalingType const scalingType, real64 const scalingFactor, arrayView1d< real64 const > const pressure, arrayView1d< real64 const > const temperature, @@ -103,7 +103,7 @@ class SolutionCheckKernel : public isothermalCompositionalMultiphaseBaseKernels: { Base::computeSolutionCheck( ei, stack, [&] () { - bool const localScaling = m_scalingType == CompositionalMultiphaseFVM::ScalingType::Local; + bool const localScaling = m_scalingType == compositionalMultiphaseUtilities::ScalingType::Local; // compute the change in temperature real64 const newTemp = m_temperature[ei] + (localScaling ? m_temperatureScalingFactor[ei] : m_scalingFactor * m_localSolution[stack.localRow + m_temperatureOffset]); if( newTemp < minTemperature ) @@ -149,7 +149,7 @@ class SolutionCheckKernelFactory static SolutionCheckKernel::StackVariables createAndLaunch( integer const allowCompDensChopping, integer const allowNegativePressure, - CompositionalMultiphaseFVM::ScalingType const scalingType, + compositionalMultiphaseUtilities::ScalingType const scalingType, real64 const scalingFactor, arrayView1d< real64 const > const pressure, arrayView1d< real64 const > const temperature, diff --git a/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/ThermalSolutionScalingKernel.hpp b/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/ThermalSolutionScalingKernel.hpp index 00af7a5eca4..1a4a2b4c782 100644 --- a/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/ThermalSolutionScalingKernel.hpp +++ b/src/coreComponents/physicsSolvers/fluidFlow/kernels/compositional/ThermalSolutionScalingKernel.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/fluidFlow/kernels/singlePhase/AccumulationKernels.hpp b/src/coreComponents/physicsSolvers/fluidFlow/kernels/singlePhase/AccumulationKernels.hpp index d7bcb6068f1..c2e2845ff74 100644 --- a/src/coreComponents/physicsSolvers/fluidFlow/kernels/singlePhase/AccumulationKernels.hpp +++ b/src/coreComponents/physicsSolvers/fluidFlow/kernels/singlePhase/AccumulationKernels.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/fluidFlow/kernels/singlePhase/AquiferBCKernel.hpp b/src/coreComponents/physicsSolvers/fluidFlow/kernels/singlePhase/AquiferBCKernel.hpp index 733a7013ac2..c35ec2cfbc7 100644 --- a/src/coreComponents/physicsSolvers/fluidFlow/kernels/singlePhase/AquiferBCKernel.hpp +++ b/src/coreComponents/physicsSolvers/fluidFlow/kernels/singlePhase/AquiferBCKernel.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/fluidFlow/kernels/singlePhase/DirichletFluxComputeKernel.hpp b/src/coreComponents/physicsSolvers/fluidFlow/kernels/singlePhase/DirichletFluxComputeKernel.hpp index e2a33419262..e5c45309b0d 100644 --- a/src/coreComponents/physicsSolvers/fluidFlow/kernels/singlePhase/DirichletFluxComputeKernel.hpp +++ b/src/coreComponents/physicsSolvers/fluidFlow/kernels/singlePhase/DirichletFluxComputeKernel.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/fluidFlow/kernels/singlePhase/FluidUpdateKernel.hpp b/src/coreComponents/physicsSolvers/fluidFlow/kernels/singlePhase/FluidUpdateKernel.hpp index 9ee7550c9b7..dbf86d97295 100644 --- a/src/coreComponents/physicsSolvers/fluidFlow/kernels/singlePhase/FluidUpdateKernel.hpp +++ b/src/coreComponents/physicsSolvers/fluidFlow/kernels/singlePhase/FluidUpdateKernel.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/fluidFlow/kernels/singlePhase/FluxComputeKernel.hpp b/src/coreComponents/physicsSolvers/fluidFlow/kernels/singlePhase/FluxComputeKernel.hpp index 8083ad10746..05034149bb7 100644 --- a/src/coreComponents/physicsSolvers/fluidFlow/kernels/singlePhase/FluxComputeKernel.hpp +++ b/src/coreComponents/physicsSolvers/fluidFlow/kernels/singlePhase/FluxComputeKernel.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/fluidFlow/kernels/singlePhase/FluxComputeKernelBase.hpp b/src/coreComponents/physicsSolvers/fluidFlow/kernels/singlePhase/FluxComputeKernelBase.hpp index 5a3896fdd79..15c528a8f60 100644 --- a/src/coreComponents/physicsSolvers/fluidFlow/kernels/singlePhase/FluxComputeKernelBase.hpp +++ b/src/coreComponents/physicsSolvers/fluidFlow/kernels/singlePhase/FluxComputeKernelBase.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/fluidFlow/kernels/singlePhase/FluxKernelsHelper.hpp b/src/coreComponents/physicsSolvers/fluidFlow/kernels/singlePhase/FluxKernelsHelper.hpp index 07f81dfd2f0..814eb7e6234 100644 --- a/src/coreComponents/physicsSolvers/fluidFlow/kernels/singlePhase/FluxKernelsHelper.hpp +++ b/src/coreComponents/physicsSolvers/fluidFlow/kernels/singlePhase/FluxKernelsHelper.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/fluidFlow/kernels/singlePhase/HydrostaticPressureKernel.hpp b/src/coreComponents/physicsSolvers/fluidFlow/kernels/singlePhase/HydrostaticPressureKernel.hpp index fe08f309833..6a4e5bab264 100644 --- a/src/coreComponents/physicsSolvers/fluidFlow/kernels/singlePhase/HydrostaticPressureKernel.hpp +++ b/src/coreComponents/physicsSolvers/fluidFlow/kernels/singlePhase/HydrostaticPressureKernel.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/fluidFlow/kernels/singlePhase/MobilityKernel.hpp b/src/coreComponents/physicsSolvers/fluidFlow/kernels/singlePhase/MobilityKernel.hpp index 22f6470f5f3..6f55e13e545 100644 --- a/src/coreComponents/physicsSolvers/fluidFlow/kernels/singlePhase/MobilityKernel.hpp +++ b/src/coreComponents/physicsSolvers/fluidFlow/kernels/singlePhase/MobilityKernel.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/fluidFlow/kernels/singlePhase/ResidualNormKernel.hpp b/src/coreComponents/physicsSolvers/fluidFlow/kernels/singlePhase/ResidualNormKernel.hpp index f88ef04eb96..9360af72ea9 100644 --- a/src/coreComponents/physicsSolvers/fluidFlow/kernels/singlePhase/ResidualNormKernel.hpp +++ b/src/coreComponents/physicsSolvers/fluidFlow/kernels/singlePhase/ResidualNormKernel.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/fluidFlow/kernels/singlePhase/SinglePhaseHybridFVMKernels.hpp b/src/coreComponents/physicsSolvers/fluidFlow/kernels/singlePhase/SinglePhaseHybridFVMKernels.hpp index 13e5eeabfcb..2898e11a3a3 100644 --- a/src/coreComponents/physicsSolvers/fluidFlow/kernels/singlePhase/SinglePhaseHybridFVMKernels.hpp +++ b/src/coreComponents/physicsSolvers/fluidFlow/kernels/singlePhase/SinglePhaseHybridFVMKernels.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -37,7 +37,6 @@ #include "physicsSolvers/fluidFlow/FlowSolverBaseFields.hpp" #include "physicsSolvers/fluidFlow/SinglePhaseBaseFields.hpp" #include "physicsSolvers/fluidFlow/StencilAccessors.hpp" -#include "physicsSolvers/fluidFlow/kernels/singlePhase/AccumulationKernels.hpp" #include "physicsSolvers/fluidFlow/kernels/HybridFVMHelperKernels.hpp" #include "physicsSolvers/PhysicsSolverBaseKernels.hpp" #include "codingUtilities/Utilities.hpp" diff --git a/src/coreComponents/physicsSolvers/fluidFlow/kernels/singlePhase/SolidInternalEnergyUpdateKernel.hpp b/src/coreComponents/physicsSolvers/fluidFlow/kernels/singlePhase/SolidInternalEnergyUpdateKernel.hpp index 4ed3658e569..f1b0942ea16 100644 --- a/src/coreComponents/physicsSolvers/fluidFlow/kernels/singlePhase/SolidInternalEnergyUpdateKernel.hpp +++ b/src/coreComponents/physicsSolvers/fluidFlow/kernels/singlePhase/SolidInternalEnergyUpdateKernel.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/fluidFlow/kernels/singlePhase/SolutionCheckKernel.hpp b/src/coreComponents/physicsSolvers/fluidFlow/kernels/singlePhase/SolutionCheckKernel.hpp index 29a22e422f7..24529dda836 100644 --- a/src/coreComponents/physicsSolvers/fluidFlow/kernels/singlePhase/SolutionCheckKernel.hpp +++ b/src/coreComponents/physicsSolvers/fluidFlow/kernels/singlePhase/SolutionCheckKernel.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/fluidFlow/kernels/singlePhase/SolutionScalingKernel.hpp b/src/coreComponents/physicsSolvers/fluidFlow/kernels/singlePhase/SolutionScalingKernel.hpp index 5994d972e3b..fe0572da818 100644 --- a/src/coreComponents/physicsSolvers/fluidFlow/kernels/singlePhase/SolutionScalingKernel.hpp +++ b/src/coreComponents/physicsSolvers/fluidFlow/kernels/singlePhase/SolutionScalingKernel.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/fluidFlow/kernels/singlePhase/StabilizedFluxComputeKernel.hpp b/src/coreComponents/physicsSolvers/fluidFlow/kernels/singlePhase/StabilizedFluxComputeKernel.hpp index 88d4cc4ce73..02bc73de112 100644 --- a/src/coreComponents/physicsSolvers/fluidFlow/kernels/singlePhase/StabilizedFluxComputeKernel.hpp +++ b/src/coreComponents/physicsSolvers/fluidFlow/kernels/singlePhase/StabilizedFluxComputeKernel.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/fluidFlow/kernels/singlePhase/StatisticsKernel.hpp b/src/coreComponents/physicsSolvers/fluidFlow/kernels/singlePhase/StatisticsKernel.hpp index 59e0d267dc8..c99e4c17971 100644 --- a/src/coreComponents/physicsSolvers/fluidFlow/kernels/singlePhase/StatisticsKernel.hpp +++ b/src/coreComponents/physicsSolvers/fluidFlow/kernels/singlePhase/StatisticsKernel.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/fluidFlow/kernels/singlePhase/ThermalAccumulationKernels.hpp b/src/coreComponents/physicsSolvers/fluidFlow/kernels/singlePhase/ThermalAccumulationKernels.hpp index 792558b5b2e..2cba35dac4f 100644 --- a/src/coreComponents/physicsSolvers/fluidFlow/kernels/singlePhase/ThermalAccumulationKernels.hpp +++ b/src/coreComponents/physicsSolvers/fluidFlow/kernels/singlePhase/ThermalAccumulationKernels.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/fluidFlow/kernels/singlePhase/ThermalDirichletFluxComputeKernel.hpp b/src/coreComponents/physicsSolvers/fluidFlow/kernels/singlePhase/ThermalDirichletFluxComputeKernel.hpp index 8e6bc1ba8fe..5ab2f2959b0 100644 --- a/src/coreComponents/physicsSolvers/fluidFlow/kernels/singlePhase/ThermalDirichletFluxComputeKernel.hpp +++ b/src/coreComponents/physicsSolvers/fluidFlow/kernels/singlePhase/ThermalDirichletFluxComputeKernel.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/fluidFlow/kernels/singlePhase/ThermalFluxComputeKernel.hpp b/src/coreComponents/physicsSolvers/fluidFlow/kernels/singlePhase/ThermalFluxComputeKernel.hpp index cba7c440e09..4dd02b5d35f 100644 --- a/src/coreComponents/physicsSolvers/fluidFlow/kernels/singlePhase/ThermalFluxComputeKernel.hpp +++ b/src/coreComponents/physicsSolvers/fluidFlow/kernels/singlePhase/ThermalFluxComputeKernel.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/fluidFlow/kernels/singlePhase/proppant/ProppantBaseKernels.hpp b/src/coreComponents/physicsSolvers/fluidFlow/kernels/singlePhase/proppant/ProppantBaseKernels.hpp index 9e36375b45c..f18d8befbf9 100644 --- a/src/coreComponents/physicsSolvers/fluidFlow/kernels/singlePhase/proppant/ProppantBaseKernels.hpp +++ b/src/coreComponents/physicsSolvers/fluidFlow/kernels/singlePhase/proppant/ProppantBaseKernels.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/fluidFlow/kernels/singlePhase/proppant/ProppantFluxKernels.cpp b/src/coreComponents/physicsSolvers/fluidFlow/kernels/singlePhase/proppant/ProppantFluxKernels.cpp index 22dec62d10f..9843c0fc5ab 100644 --- a/src/coreComponents/physicsSolvers/fluidFlow/kernels/singlePhase/proppant/ProppantFluxKernels.cpp +++ b/src/coreComponents/physicsSolvers/fluidFlow/kernels/singlePhase/proppant/ProppantFluxKernels.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/fluidFlow/kernels/singlePhase/proppant/ProppantFluxKernels.hpp b/src/coreComponents/physicsSolvers/fluidFlow/kernels/singlePhase/proppant/ProppantFluxKernels.hpp index 69b50bb2f82..19b318c7316 100644 --- a/src/coreComponents/physicsSolvers/fluidFlow/kernels/singlePhase/proppant/ProppantFluxKernels.hpp +++ b/src/coreComponents/physicsSolvers/fluidFlow/kernels/singlePhase/proppant/ProppantFluxKernels.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/fluidFlow/proppantTransport/ProppantTransport.cpp b/src/coreComponents/physicsSolvers/fluidFlow/proppantTransport/ProppantTransport.cpp index 2d5b26f4f3d..798286fc9e0 100644 --- a/src/coreComponents/physicsSolvers/fluidFlow/proppantTransport/ProppantTransport.cpp +++ b/src/coreComponents/physicsSolvers/fluidFlow/proppantTransport/ProppantTransport.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/fluidFlow/proppantTransport/ProppantTransport.hpp b/src/coreComponents/physicsSolvers/fluidFlow/proppantTransport/ProppantTransport.hpp index 269926e83d2..3332d1e6a41 100644 --- a/src/coreComponents/physicsSolvers/fluidFlow/proppantTransport/ProppantTransport.hpp +++ b/src/coreComponents/physicsSolvers/fluidFlow/proppantTransport/ProppantTransport.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/fluidFlow/proppantTransport/ProppantTransportFields.hpp b/src/coreComponents/physicsSolvers/fluidFlow/proppantTransport/ProppantTransportFields.hpp index 7c324a399a8..b96b212fe71 100644 --- a/src/coreComponents/physicsSolvers/fluidFlow/proppantTransport/ProppantTransportFields.hpp +++ b/src/coreComponents/physicsSolvers/fluidFlow/proppantTransport/ProppantTransportFields.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/fluidFlow/proppantTransport/ProppantTransportKernels.cpp b/src/coreComponents/physicsSolvers/fluidFlow/proppantTransport/ProppantTransportKernels.cpp index c0c1b3b02ed..c74004bafb4 100644 --- a/src/coreComponents/physicsSolvers/fluidFlow/proppantTransport/ProppantTransportKernels.cpp +++ b/src/coreComponents/physicsSolvers/fluidFlow/proppantTransport/ProppantTransportKernels.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/fluidFlow/proppantTransport/ProppantTransportKernels.hpp b/src/coreComponents/physicsSolvers/fluidFlow/proppantTransport/ProppantTransportKernels.hpp index 89fcbef5c9c..f857e3f6bba 100644 --- a/src/coreComponents/physicsSolvers/fluidFlow/proppantTransport/ProppantTransportKernels.hpp +++ b/src/coreComponents/physicsSolvers/fluidFlow/proppantTransport/ProppantTransportKernels.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/fluidFlow/wells/CompositionalMultiphaseWell.cpp b/src/coreComponents/physicsSolvers/fluidFlow/wells/CompositionalMultiphaseWell.cpp index f8cec098698..50e7ae8f18f 100644 --- a/src/coreComponents/physicsSolvers/fluidFlow/wells/CompositionalMultiphaseWell.cpp +++ b/src/coreComponents/physicsSolvers/fluidFlow/wells/CompositionalMultiphaseWell.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -44,8 +44,6 @@ #include "physicsSolvers/fluidFlow/wells/kernels/CompositionalMultiphaseWellKernels.hpp" #include "physicsSolvers/fluidFlow/wells/kernels/ThermalCompositionalMultiphaseWellKernels.hpp" #include "physicsSolvers/fluidFlow/wells/kernels/PerforationFluxKernels.hpp" -#include "physicsSolvers/fluidFlow/kernels/compositional/AccumulationKernel.hpp" -#include "physicsSolvers/fluidFlow/kernels/compositional/ThermalAccumulationKernel.hpp" #include "physicsSolvers/fluidFlow/kernels/compositional/SolutionScalingKernel.hpp" #include "physicsSolvers/fluidFlow/kernels/compositional/ThermalSolutionScalingKernel.hpp" #include "physicsSolvers/fluidFlow/kernels/compositional/SolutionCheckKernel.hpp" @@ -75,7 +73,6 @@ namespace geos using namespace dataRepository; using namespace constitutive; -using namespace compositionalMultiphaseWellKernels; CompositionalMultiphaseWell::CompositionalMultiphaseWell( const string & name, Group * const parent ) @@ -276,6 +273,8 @@ void CompositionalMultiphaseWell::registerDataOnMesh( Group & meshBodies ) wellControls.registerWrapper< real64 >( viewKeyStruct::massDensityString() ); + wellControls.registerWrapper< real64 >( viewKeyStruct::currentMassRateString() ); + // write rates output header // the rank that owns the reference well element is responsible if( m_writeCSV > 0 && subRegion.isLocallyOwned() ) @@ -468,6 +467,7 @@ void CompositionalMultiphaseWell::validateWellConstraints( real64 const & time_n WellControls::Control const currentControl = wellControls.getControl(); real64 const & targetTotalRate = wellControls.getTargetTotalRate( time_n + dt ); real64 const & targetPhaseRate = wellControls.getTargetPhaseRate( time_n + dt ); + real64 const & targetMassRate = wellControls.getTargetMassRate( time_n + dt ); GEOS_THROW_IF( wellControls.isInjector() && currentControl == WellControls::Control::PHASEVOLRATE, "WellControls " << wellControls.getDataContext() << @@ -486,6 +486,18 @@ void CompositionalMultiphaseWell::validateWellConstraints( real64 const & time_n "WellControls " << wellControls.getDataContext() << ": Target phase rate cannot be used for injectors", InputError ); + GEOS_THROW_IF( wellControls.isProducer() && !isZero( targetTotalRate ), + "WellControls " << wellControls.getDataContext() << + ": Target total rate cannot be used for producers", + InputError ); + GEOS_THROW_IF( wellControls.isProducer() && !isZero( targetMassRate ), + "WellControls " << wellControls.getDataContext() << + ": Target mass rate cannot be used for producers", + InputError ); + GEOS_THROW_IF( !m_useMass && !isZero( targetMassRate ), + "WellControls " << wellControls.getDataContext() << + ": Target mass rate cannot with useMass=0", + InputError ); // The user always provides positive rates, but these rates are later multiplied by -1 internally for producers GEOS_THROW_IF( wellControls.isProducer() && targetPhaseRate > 0.0, @@ -1017,6 +1029,10 @@ void CompositionalMultiphaseWell::updateVolRatesForConstraint( WellElementSubReg real64 & currentTotalVolRate = wellControls.getReference< real64 >( CompositionalMultiphaseWell::viewKeyStruct::currentTotalVolRateString() ); + + real64 & currentMassRate = + wellControls.getReference< real64 >( CompositionalMultiphaseWell::viewKeyStruct::currentMassRateString() ); + arrayView1d< real64 > const & dCurrentTotalVolRate = wellControls.getReference< array1d< real64 > >( CompositionalMultiphaseWell::viewKeyStruct::dCurrentTotalVolRateString() ); @@ -1052,6 +1068,7 @@ void CompositionalMultiphaseWell::updateVolRatesForConstraint( WellElementSubReg dCurrentTotalVolRate, currentPhaseVolRate, dCurrentPhaseVolRate, + ¤tMassRate, &iwelemRef, &logLevel, &wellControlsName, @@ -1088,7 +1105,8 @@ void CompositionalMultiphaseWell::updateVolRatesForConstraint( WellElementSubReg // Step 2: update the total volume rate real64 const currentTotalRate = connRate[iwelemRef]; - + // Assumes useMass is true + currentMassRate = currentTotalRate; // Step 2.1: compute the inverse of the total density and derivatives massDensity = totalDens[iwelemRef][0]; real64 const totalDensInv = 1.0 / totalDens[iwelemRef][0]; @@ -1238,7 +1256,8 @@ void CompositionalMultiphaseWell::updateTotalMassDensity( WellElementSubRegion & subRegion, fluid ) : - TotalMassDensityKernelFactory:: + compositionalMultiphaseWellKernels:: + TotalMassDensityKernelFactory:: createAndLaunch< parallelDevicePolicy<> >( m_numComponents, m_numPhases, subRegion, @@ -1304,8 +1323,10 @@ void CompositionalMultiphaseWell::initializeWells( DomainPartition & domain, rea { ElementRegionManager & elemManager = mesh.getElemManager(); - PresTempCompFracInitializationKernel::CompFlowAccessors resCompFlowAccessors( mesh.getElemManager(), flowSolver.getName() ); - PresTempCompFracInitializationKernel::MultiFluidAccessors resMultiFluidAccessors( mesh.getElemManager(), flowSolver.getName() ); + compositionalMultiphaseWellKernels::PresTempCompFracInitializationKernel::CompFlowAccessors + resCompFlowAccessors( mesh.getElemManager(), flowSolver.getName() ); + compositionalMultiphaseWellKernels::PresTempCompFracInitializationKernel::MultiFluidAccessors + resMultiFluidAccessors( mesh.getElemManager(), flowSolver.getName() ); elemManager.forElementSubRegions< WellElementSubRegion >( regionNames, [&]( localIndex const, @@ -1339,7 +1360,8 @@ void CompositionalMultiphaseWell::initializeWells( DomainPartition & domain, rea // 1) Loop over all perforations to compute an average mixture density and component fraction // 2) Initialize the reference pressure // 3) Estimate the pressures in the well elements using the average density - PresTempCompFracInitializationKernel:: + compositionalMultiphaseWellKernels:: + PresTempCompFracInitializationKernel:: launch( perforationData.size(), subRegion.size(), numComp, @@ -1381,11 +1403,12 @@ void CompositionalMultiphaseWell::initializeWells( DomainPartition & domain, rea wellElemCompFrac ); } ); - CompDensInitializationKernel::launch( subRegion.size(), - numComp, - wellElemCompFrac, - wellElemTotalDens, - wellElemCompDens ); + compositionalMultiphaseWellKernels:: + CompDensInitializationKernel::launch( subRegion.size(), + numComp, + wellElemCompFrac, + wellElemTotalDens, + wellElemCompDens ); // 5) Recompute the pressure-dependent properties updateSubRegionState( subRegion ); @@ -1416,6 +1439,9 @@ void CompositionalMultiphaseWell::assembleFluxTerms( real64 const & time, { GEOS_MARK_FUNCTION; + BitFlags< isothermalCompositionalMultiphaseBaseKernels::KernelFlags > kernelFlags; + if( m_useTotalMassEquation ) + kernelFlags.set( isothermalCompositionalMultiphaseBaseKernels::KernelFlags::TotalMassEquation ); string const wellDofKey = dofManager.getKey( wellElementDofName()); forDiscretizationOnMeshTargets( domain.getMeshBodies(), [&]( string const &, @@ -1440,7 +1466,7 @@ void CompositionalMultiphaseWell::assembleFluxTerms( real64 const & time, createAndLaunch< parallelDevicePolicy<> >( numComponents, dt, dofManager.rankOffset(), - m_useTotalMassEquation, + kernelFlags, wellDofKey, well_controls, subRegion, @@ -1455,7 +1481,7 @@ void CompositionalMultiphaseWell::assembleFluxTerms( real64 const & time, createAndLaunch< parallelDevicePolicy<> >( numComponents, dt, dofManager.rankOffset(), - m_useTotalMassEquation, + kernelFlags, wellDofKey, well_controls, subRegion, @@ -1478,6 +1504,11 @@ void CompositionalMultiphaseWell::assembleAccumulationTerms( real64 const & time GEOS_MARK_FUNCTION; GEOS_UNUSED_VAR( time ); GEOS_UNUSED_VAR( dt ); + + BitFlags< isothermalCompositionalMultiphaseBaseKernels::KernelFlags > kernelFlags; + if( m_useTotalMassEquation ) + kernelFlags.set( isothermalCompositionalMultiphaseBaseKernels::KernelFlags::TotalMassEquation ); + string const wellDofKey = dofManager.getKey( wellElementDofName() ); forDiscretizationOnMeshTargets( domain.getMeshBodies(), [&]( string const &, MeshLevel & mesh, @@ -1503,7 +1534,7 @@ void CompositionalMultiphaseWell::assembleAccumulationTerms( real64 const & time numPhases, wellControls.isProducer(), dofManager.rankOffset(), - m_useTotalMassEquation, + kernelFlags, wellDofKey, subRegion, fluid, @@ -1518,7 +1549,7 @@ void CompositionalMultiphaseWell::assembleAccumulationTerms( real64 const & time numPhases, wellControls.isProducer(), dofManager.rankOffset(), - m_useTotalMassEquation, + kernelFlags, wellDofKey, subRegion, fluid, @@ -1638,7 +1669,7 @@ CompositionalMultiphaseWell::calculateResidualNorm( real64 const & time_n, else { real64 subRegionResidualNorm[1]{}; - ResidualNormKernelFactory:: + compositionalMultiphaseWellKernels::ResidualNormKernelFactory:: createAndLaunch< parallelDevicePolicy<> >( m_numComponents, numDofPerWellElement(), m_targetPhaseIndex, @@ -1832,7 +1863,7 @@ CompositionalMultiphaseWell::checkSystemSolution( DomainPartition & domain, compositionalMultiphaseWellKernels:: SolutionCheckKernelFactory:: createAndLaunch< parallelDevicePolicy<> >( m_allowCompDensChopping, - CompositionalMultiphaseFVM::ScalingType::Global, + compositionalMultiphaseUtilities::ScalingType::Global, scalingFactor, pressure, compDens, @@ -1870,7 +1901,7 @@ CompositionalMultiphaseWell::checkSystemSolution( DomainPartition & domain, { //integer const m_allowCompDensChopping(true); integer const m_allowNegativePressure( false ); - CompositionalMultiphaseFVM::ScalingType const m_scalingType( CompositionalMultiphaseFVM::ScalingType::Global ); + compositionalMultiphaseUtilities::ScalingType const m_scalingType( compositionalMultiphaseUtilities::ScalingType::Global ); arrayView1d< real64 const > const pressure = subRegion.getField< fields::well::pressure >(); arrayView1d< real64 const > const temperature = @@ -2242,24 +2273,25 @@ void CompositionalMultiphaseWell::assemblePressureRelations( real64 const & time bool controlHasSwitched = false; isothermalCompositionalMultiphaseBaseKernels:: - KernelLaunchSelectorCompTherm< PressureRelationKernel >( numFluidComponents(), - isThermal, - subRegion.size(), - dofManager.rankOffset(), - subRegion.isLocallyOwned(), - subRegion.getTopWellElementIndex(), - m_targetPhaseIndex, - wellControls, - time_n + dt, // controls evaluated with BHP/rate of the end of step - wellElemDofNumber, - wellElemGravCoef, - nextWellElemIndex, - wellElemPres, - wellElemTotalMassDens, - dWellElemTotalMassDens, - controlHasSwitched, - localMatrix, - localRhs ); + KernelLaunchSelectorCompTherm< compositionalMultiphaseWellKernels::PressureRelationKernel > + ( numFluidComponents(), + isThermal, + subRegion.size(), + dofManager.rankOffset(), + subRegion.isLocallyOwned(), + subRegion.getTopWellElementIndex(), + m_targetPhaseIndex, + wellControls, + time_n + dt, // controls evaluated with BHP/rate of the end of step + wellElemDofNumber, + wellElemGravCoef, + nextWellElemIndex, + wellElemPres, + wellElemTotalMassDens, + dWellElemTotalMassDens, + controlHasSwitched, + localMatrix, + localRhs ); if( controlHasSwitched ) { @@ -2276,6 +2308,12 @@ void CompositionalMultiphaseWell::assemblePressureRelations( real64 const & time GEOS_LOG_LEVEL_INFO_RANK_0( logInfo::WellControl, GEOS_FMT( "Control switch for well {} from BHP constraint to phase volumetric rate constraint", subRegion.getName() ) ); } + else if( wellControls.getInputControl() == WellControls::Control::MASSRATE ) + { + wellControls.switchToMassRateControl( wellControls.getTargetMassRate( timeAtEndOfStep ) ); + GEOS_LOG_LEVEL_INFO_RANK_0( logInfo::WellControl, + GEOS_FMT( "Control switch for well {} from BHP constraint to mass rate constraint", subRegion.getName()) ); + } else { wellControls.switchToTotalRateControl( wellControls.getTargetTotalRate( timeAtEndOfStep ) ); diff --git a/src/coreComponents/physicsSolvers/fluidFlow/wells/CompositionalMultiphaseWell.hpp b/src/coreComponents/physicsSolvers/fluidFlow/wells/CompositionalMultiphaseWell.hpp index 77d7d9b6fdb..53ad19236b8 100644 --- a/src/coreComponents/physicsSolvers/fluidFlow/wells/CompositionalMultiphaseWell.hpp +++ b/src/coreComponents/physicsSolvers/fluidFlow/wells/CompositionalMultiphaseWell.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -316,6 +316,8 @@ class CompositionalMultiphaseWell : public WellSolverBase static constexpr char const * currentTotalVolRateString() { return "currentTotalVolumetricRate"; } static constexpr char const * dCurrentTotalVolRateString() { return "dCurrentTotalVolumetricRate"; } + static constexpr char const * currentMassRateString() { return "currentMassRate"; } + static constexpr char const * dCurrentTotalVolRate_dPresString() { return "dCurrentTotalVolumetricRate_dPres"; } static constexpr char const * dCurrentTotalVolRate_dCompDensString() { return "dCurrentTotalVolumetricRate_dCompDens"; } diff --git a/src/coreComponents/physicsSolvers/fluidFlow/wells/CompositionalMultiphaseWellFields.hpp b/src/coreComponents/physicsSolvers/fluidFlow/wells/CompositionalMultiphaseWellFields.hpp index be0aa3e48ae..3ca423cd7ac 100644 --- a/src/coreComponents/physicsSolvers/fluidFlow/wells/CompositionalMultiphaseWellFields.hpp +++ b/src/coreComponents/physicsSolvers/fluidFlow/wells/CompositionalMultiphaseWellFields.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/fluidFlow/wells/LogLevelsInfo.hpp b/src/coreComponents/physicsSolvers/fluidFlow/wells/LogLevelsInfo.hpp index 9e9b9f20b50..43120e4b77b 100644 --- a/src/coreComponents/physicsSolvers/fluidFlow/wells/LogLevelsInfo.hpp +++ b/src/coreComponents/physicsSolvers/fluidFlow/wells/LogLevelsInfo.hpp @@ -2,10 +2,11 @@ * ------------------------------------------------------------------------------------------------------------ * SPDX-License-Identifier: LGPL-2.1-only * - * Copyright (c) 2018-2020 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2020 The Board of Trustees of the Leland Stanford Junior University - * Copyright (c) 2018-2020 TotalEnergies - * Copyright (c) 2019- GEOSX Contributors + * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC + * Copyright (c) 2018-2024 TotalEnergies + * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University + * Copyright (c) 2023-2024 Chevron + * Copyright (c) 2019- GEOS/GEOSX Contributors * All rights reserved * * See top level LICENSE, COPYRIGHT, CONTRIBUTORS, NOTICE, and ACKNOWLEDGEMENTS files for details. diff --git a/src/coreComponents/physicsSolvers/fluidFlow/wells/SinglePhaseWell.cpp b/src/coreComponents/physicsSolvers/fluidFlow/wells/SinglePhaseWell.cpp index 834d679dc00..eb8a99f9f19 100644 --- a/src/coreComponents/physicsSolvers/fluidFlow/wells/SinglePhaseWell.cpp +++ b/src/coreComponents/physicsSolvers/fluidFlow/wells/SinglePhaseWell.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/fluidFlow/wells/SinglePhaseWell.hpp b/src/coreComponents/physicsSolvers/fluidFlow/wells/SinglePhaseWell.hpp index ed204e24968..eabb4323272 100644 --- a/src/coreComponents/physicsSolvers/fluidFlow/wells/SinglePhaseWell.hpp +++ b/src/coreComponents/physicsSolvers/fluidFlow/wells/SinglePhaseWell.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/fluidFlow/wells/SinglePhaseWellFields.hpp b/src/coreComponents/physicsSolvers/fluidFlow/wells/SinglePhaseWellFields.hpp index 3d733dde731..773a7e3be60 100644 --- a/src/coreComponents/physicsSolvers/fluidFlow/wells/SinglePhaseWellFields.hpp +++ b/src/coreComponents/physicsSolvers/fluidFlow/wells/SinglePhaseWellFields.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/fluidFlow/wells/WellConstants.hpp b/src/coreComponents/physicsSolvers/fluidFlow/wells/WellConstants.hpp index 9b24c9f61df..58b8b421c3a 100644 --- a/src/coreComponents/physicsSolvers/fluidFlow/wells/WellConstants.hpp +++ b/src/coreComponents/physicsSolvers/fluidFlow/wells/WellConstants.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/fluidFlow/wells/WellControls.cpp b/src/coreComponents/physicsSolvers/fluidFlow/wells/WellControls.cpp index 30ed4a17f09..47877476c2f 100644 --- a/src/coreComponents/physicsSolvers/fluidFlow/wells/WellControls.cpp +++ b/src/coreComponents/physicsSolvers/fluidFlow/wells/WellControls.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -71,27 +71,32 @@ WellControls::WellControls( string const & name, Group * const parent ) registerWrapper( viewKeyStruct::targetBHPString(), &m_targetBHP ). setDefaultValue( 0.0 ). setInputFlag( InputFlags::OPTIONAL ). + setRestartFlags( RestartFlags::WRITE_AND_READ ). setDescription( "Target bottom-hole pressure [Pa]" ); registerWrapper( viewKeyStruct::targetTotalRateString(), &m_targetTotalRate ). setDefaultValue( 0.0 ). setInputFlag( InputFlags::OPTIONAL ). + setRestartFlags( RestartFlags::WRITE_AND_READ ). setDescription( "Target total volumetric rate (if useSurfaceConditions: [surface m^3/s]; else [reservoir m^3/s])" ); registerWrapper( viewKeyStruct::targetPhaseRateString(), &m_targetPhaseRate ). setDefaultValue( 0.0 ). setInputFlag( InputFlags::OPTIONAL ). + setRestartFlags( RestartFlags::WRITE_AND_READ ). setDescription( "Target phase volumetric rate (if useSurfaceConditions: [surface m^3/s]; else [reservoir m^3/s])" ); registerWrapper( viewKeyStruct::targetMassRateString(), &m_targetMassRate ). setDefaultValue( 0.0 ). setInputFlag( InputFlags::OPTIONAL ). + setRestartFlags( RestartFlags::WRITE_AND_READ ). setDescription( "Target Mass Rate rate ( [kg^3/s])" ); registerWrapper( viewKeyStruct::targetPhaseNameString(), &m_targetPhaseName ). setRTTypeName( rtTypes::CustomTypes::groupNameRef ). setDefaultValue( "" ). setInputFlag( InputFlags::OPTIONAL ). + setRestartFlags( RestartFlags::WRITE_AND_READ ). setDescription( "Name of the target phase" ); registerWrapper( viewKeyStruct::refElevString(), &m_refElevation ). diff --git a/src/coreComponents/physicsSolvers/fluidFlow/wells/WellControls.hpp b/src/coreComponents/physicsSolvers/fluidFlow/wells/WellControls.hpp index fefa7e4435b..9e202096385 100644 --- a/src/coreComponents/physicsSolvers/fluidFlow/wells/WellControls.hpp +++ b/src/coreComponents/physicsSolvers/fluidFlow/wells/WellControls.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -149,6 +149,12 @@ class WellControls : public dataRepository::Group */ Control getControl() const { return m_currentControl; } + /** + * @brief Get the input control type for the well. + * @return the Control enum enforced at the well + */ + Control getInputControl() const { return m_inputControl; } + /** * @brief Getter for the reference elevation where the BHP control is enforced * @return the reference elevation diff --git a/src/coreComponents/physicsSolvers/fluidFlow/wells/WellFields.hpp b/src/coreComponents/physicsSolvers/fluidFlow/wells/WellFields.hpp index 2c6549958b0..e24c0d3293d 100644 --- a/src/coreComponents/physicsSolvers/fluidFlow/wells/WellFields.hpp +++ b/src/coreComponents/physicsSolvers/fluidFlow/wells/WellFields.hpp @@ -2,10 +2,11 @@ * ------------------------------------------------------------------------------------------------------------ * SPDX-License-Identifier: LGPL-2.1-only * - * Copyright (c) 2018-2020 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2020 The Board of Trustees of the Leland Stanford Junior University - * Copyright (c) 2018-2020 TotalEnergies - * Copyright (c) 2019- GEOSX Contributors + * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC + * Copyright (c) 2018-2024 TotalEnergies + * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University + * Copyright (c) 2023-2024 Chevron + * Copyright (c) 2019- GEOS/GEOSX Contributors * All rights reserved * * See top level LICENSE, COPYRIGHT, CONTRIBUTORS, NOTICE, and ACKNOWLEDGEMENTS files for details. diff --git a/src/coreComponents/physicsSolvers/fluidFlow/wells/WellSolverBase.cpp b/src/coreComponents/physicsSolvers/fluidFlow/wells/WellSolverBase.cpp index 1269f95629e..dabee0420e9 100644 --- a/src/coreComponents/physicsSolvers/fluidFlow/wells/WellSolverBase.cpp +++ b/src/coreComponents/physicsSolvers/fluidFlow/wells/WellSolverBase.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -76,17 +76,10 @@ WellSolverBase::WellSolverBase( string const & name, Group *WellSolverBase::createChild( string const & childKey, string const & childName ) { - Group *rval = nullptr; - - if( childKey == keys::wellControls ) - { - rval = ®isterGroup< WellControls >( childName ); - } - else - { - PhysicsSolverBase::createChild( childKey, childName ); - } - return rval; + const auto childTypes = { keys::wellControls }; + GEOS_ERROR_IF( childKey != keys::wellControls, + PhysicsSolverBase::CatalogInterface::unknownTypeError( childKey, getDataContext(), childTypes ) ); + return ®isterGroup< WellControls >( childName ); } void WellSolverBase::expandObjectCatalogs() diff --git a/src/coreComponents/physicsSolvers/fluidFlow/wells/WellSolverBase.hpp b/src/coreComponents/physicsSolvers/fluidFlow/wells/WellSolverBase.hpp index 3d51f605a60..6ba704b7d47 100644 --- a/src/coreComponents/physicsSolvers/fluidFlow/wells/WellSolverBase.hpp +++ b/src/coreComponents/physicsSolvers/fluidFlow/wells/WellSolverBase.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/fluidFlow/wells/WellSolverBaseFields.hpp b/src/coreComponents/physicsSolvers/fluidFlow/wells/WellSolverBaseFields.hpp index 1c6f4d4a748..b9dfebc799b 100644 --- a/src/coreComponents/physicsSolvers/fluidFlow/wells/WellSolverBaseFields.hpp +++ b/src/coreComponents/physicsSolvers/fluidFlow/wells/WellSolverBaseFields.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/fluidFlow/wells/WellTags.hpp b/src/coreComponents/physicsSolvers/fluidFlow/wells/WellTags.hpp index dc75bcbdc9a..b96fa2d0618 100644 --- a/src/coreComponents/physicsSolvers/fluidFlow/wells/WellTags.hpp +++ b/src/coreComponents/physicsSolvers/fluidFlow/wells/WellTags.hpp @@ -2,10 +2,11 @@ * ------------------------------------------------------------------------------------------------------------ * SPDX-License-Identifier: LGPL-2.1-only * - * Copyright (c) 2018-2020 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2020 The Board of Trustees of the Leland Stanford Junior University - * Copyright (c) 2018-2020 TotalEnergies - * Copyright (c) 2019- GEOSX Contributors + * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC + * Copyright (c) 2018-2024 TotalEnergies + * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University + * Copyright (c) 2023-2024 Chevron + * Copyright (c) 2019- GEOS/GEOSX Contributors * All rights reserved * * See top level LICENSE, COPYRIGHT, CONTRIBUTORS, NOTICE, and ACKNOWLEDGEMENTS files for details. diff --git a/src/coreComponents/physicsSolvers/fluidFlow/wells/kernels/CompositionalMultiphaseWellKernels.cpp b/src/coreComponents/physicsSolvers/fluidFlow/wells/kernels/CompositionalMultiphaseWellKernels.cpp index 7b592d049d5..01fb94d2e72 100644 --- a/src/coreComponents/physicsSolvers/fluidFlow/wells/kernels/CompositionalMultiphaseWellKernels.cpp +++ b/src/coreComponents/physicsSolvers/fluidFlow/wells/kernels/CompositionalMultiphaseWellKernels.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -37,6 +37,7 @@ inline void ControlEquationHelper:: switchControl( bool const isProducer, + WellControls::Control const & inputControl, WellControls::Control const & currentControl, integer const phasePhaseIndex, real64 const & targetBHP, @@ -46,6 +47,7 @@ ControlEquationHelper:: real64 const & currentBHP, arrayView1d< real64 const > const & currentPhaseVolRate, real64 const & currentTotalVolRate, + real64 const & currentMassRate, WellControls::Control & newControl ) { // if isViable is true at the end of the following checks, no need to switch @@ -58,7 +60,7 @@ ControlEquationHelper:: // Currently, the available constraints are: // - Producer: BHP, PHASEVOLRATE - // - Injector: BHP, TOTALVOLRATE + // - Injector: BHP, TOTALVOLRATE, MASSRATE // TODO: support GRAT, WRAT, LIQUID for producers and check if any of the active constraint is violated @@ -71,6 +73,10 @@ ControlEquationHelper:: controlIsViable = ( LvArray::math::abs( currentPhaseVolRate[phasePhaseIndex] ) <= LvArray::math::abs( targetPhaseRate ) ); } // the control is viable if the reference total rate is below the max rate for injectors + else if( inputControl == WellControls::Control::MASSRATE ) + { + controlIsViable = ( LvArray::math::abs( currentMassRate ) <= LvArray::math::abs( targetMassRate ) ); + } else { controlIsViable = ( LvArray::math::abs( currentTotalVolRate ) <= LvArray::math::abs( targetTotalRate ) ); @@ -219,17 +225,6 @@ ControlEquationHelper:: if constexpr ( IS_THERMAL ) dControlEqn[COFFSET_WJ::dT] = massDensity*dCurrentTotalVolRate[COFFSET_WJ::dT]; } - // Total mass rate control - else if( currentControl == WellControls::Control::MASSRATE ) - { - controlEqn = massDensity*currentTotalVolRate - targetMassRate; - dControlEqn[COFFSET_WJ::dP] = massDensity*dCurrentTotalVolRate[COFFSET_WJ::dP]; - dControlEqn[COFFSET_WJ::dQ] = massDensity*dCurrentTotalVolRate[COFFSET_WJ::dQ]; - for( integer ic = 0; ic < NC; ++ic ) - { - dControlEqn[COFFSET_WJ::dC+ic] = massDensity*dCurrentTotalVolRate[COFFSET_WJ::dC+ic]; - } - } else { GEOS_ERROR( "This constraint is not supported in CompositionalMultiphaseWell" ); @@ -323,6 +318,7 @@ PressureRelationKernel:: // static well control data bool const isProducer = wellControls.isProducer(); WellControls::Control const currentControl = wellControls.getControl(); + WellControls::Control const inputControl = wellControls.getInputControl(); real64 const targetBHP = wellControls.getTargetBHP( timeAtEndOfStep ); real64 const targetTotalRate = wellControls.getTargetTotalRate( timeAtEndOfStep ); real64 const targetPhaseRate = wellControls.getTargetPhaseRate( timeAtEndOfStep ); @@ -344,6 +340,9 @@ PressureRelationKernel:: arrayView1d< real64 const > const & dCurrentTotalVolRate = wellControls.getReference< array1d< real64 > >( CompositionalMultiphaseWell::viewKeyStruct::dCurrentTotalVolRateString() ); + real64 const & currentMassRate = + wellControls.getReference< real64 >( CompositionalMultiphaseWell::viewKeyStruct::currentMassRateString() ); + real64 const & massDensity = wellControls.getReference< real64 >( CompositionalMultiphaseWell::viewKeyStruct::massDensityString() ); @@ -358,6 +357,7 @@ PressureRelationKernel:: { WellControls::Control newControl = currentControl; ControlEquationHelper::switchControl( isProducer, + inputControl, currentControl, targetPhaseIndex, targetBHP, @@ -367,6 +367,7 @@ PressureRelationKernel:: currentBHP, currentPhaseVolRate, currentTotalVolRate, + currentMassRate, newControl ); if( currentControl != newControl ) { @@ -737,7 +738,6 @@ RateInitializationKernel:: else if( control == WellControls::Control::MASSRATE ) { connRate[iwelem] = targetMassRate; - connRate[iwelem] = targetMassRate* totalDens[iwelem][0]; } else { diff --git a/src/coreComponents/physicsSolvers/fluidFlow/wells/kernels/CompositionalMultiphaseWellKernels.hpp b/src/coreComponents/physicsSolvers/fluidFlow/wells/kernels/CompositionalMultiphaseWellKernels.hpp index 1ca6ebac997..5722613372d 100644 --- a/src/coreComponents/physicsSolvers/fluidFlow/wells/kernels/CompositionalMultiphaseWellKernels.hpp +++ b/src/coreComponents/physicsSolvers/fluidFlow/wells/kernels/CompositionalMultiphaseWellKernels.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -33,7 +33,6 @@ #include "physicsSolvers/fluidFlow/CompositionalMultiphaseBaseFields.hpp" #include "physicsSolvers/fluidFlow/FlowSolverBaseFields.hpp" #include "physicsSolvers/fluidFlow/StencilAccessors.hpp" -#include "physicsSolvers/fluidFlow/kernels/compositional/AccumulationKernel.hpp" #include "physicsSolvers/fluidFlow/kernels/compositional/PropertyKernelBase.hpp" #include "physicsSolvers/fluidFlow/kernels/compositional/SolutionScalingKernel.hpp" #include "physicsSolvers/fluidFlow/kernels/compositional/SolutionCheckKernel.hpp" @@ -135,6 +134,7 @@ struct ControlEquationHelper static void switchControl( bool const isProducer, + WellControls::Control const & inputControl, WellControls::Control const & currentControl, integer const phasePhaseIndex, real64 const & targetBHP, @@ -144,6 +144,7 @@ struct ControlEquationHelper real64 const & currentBHP, arrayView1d< real64 const > const & currentPhaseVolRate, real64 const & currentTotalVolRate, + real64 const & currentMassRate, WellControls::Control & newControl ); template< integer NC, integer IS_THERMAL > @@ -809,7 +810,7 @@ class SolutionCheckKernelFactory template< typename POLICY > static isothermalCompositionalMultiphaseBaseKernels::SolutionCheckKernel::StackVariables createAndLaunch( integer const allowCompDensChopping, - CompositionalMultiphaseFVM::ScalingType const scalingType, + compositionalMultiphaseUtilities::ScalingType const scalingType, real64 const scalingFactor, arrayView1d< real64 const > const pressure, arrayView2d< real64 const, compflow::USD_COMP > const compDens, @@ -1332,7 +1333,7 @@ class ElementBasedAssemblyKernelFactory localIndex const numPhases, integer const isProducer, globalIndex const rankOffset, - integer const useTotalMassEquation, + BitFlags< isothermalCompositionalMultiphaseBaseKernels::KernelFlags > kernelFlags, string const dofKey, WellElementSubRegion const & subRegion, constitutive::MultiFluidBase const & fluid, @@ -1345,10 +1346,6 @@ class ElementBasedAssemblyKernelFactory integer constexpr istherm = IS_THERMAL(); - BitFlags< isothermalCompositionalMultiphaseBaseKernels::KernelFlags > kernelFlags; - if( useTotalMassEquation ) - kernelFlags.set( isothermalCompositionalMultiphaseBaseKernels::KernelFlags::TotalMassEquation ); - ElementBasedAssemblyKernel< NUM_COMP, istherm > kernel( numPhases, isProducer, rankOffset, dofKey, subRegion, fluid, localMatrix, localRhs, kernelFlags ); ElementBasedAssemblyKernel< NUM_COMP, istherm >::template @@ -1889,7 +1886,7 @@ class FaceBasedAssemblyKernelFactory createAndLaunch( integer const numComps, real64 const dt, globalIndex const rankOffset, - integer const useTotalMassEquation, + BitFlags< isothermalCompositionalMultiphaseBaseKernels::KernelFlags > kernelFlags, string const dofKey, WellControls const & wellControls, WellElementSubRegion const & subRegion, @@ -1900,14 +1897,7 @@ class FaceBasedAssemblyKernelFactory { integer constexpr NUM_COMP = NC(); - - BitFlags< isothermalCompositionalMultiphaseBaseKernels::KernelFlags > kernelFlags; - if( useTotalMassEquation ) - kernelFlags.set( isothermalCompositionalMultiphaseBaseKernels::KernelFlags::TotalMassEquation ); - using kernelType = FaceBasedAssemblyKernel< NUM_COMP, 0 >; - - kernelType kernel( dt, rankOffset, dofKey, wellControls, subRegion, localMatrix, localRhs, kernelFlags ); kernelType::template launch< POLICY >( subRegion.size(), kernel ); } ); diff --git a/src/coreComponents/physicsSolvers/fluidFlow/wells/kernels/PerforationFluxKernels.hpp b/src/coreComponents/physicsSolvers/fluidFlow/wells/kernels/PerforationFluxKernels.hpp index 6c042f18d34..fff9e893cf0 100644 --- a/src/coreComponents/physicsSolvers/fluidFlow/wells/kernels/PerforationFluxKernels.hpp +++ b/src/coreComponents/physicsSolvers/fluidFlow/wells/kernels/PerforationFluxKernels.hpp @@ -2,10 +2,11 @@ * ------------------------------------------------------------------------------------------------------------ * SPDX-License-Identifier: LGPL-2.1-only * - * Copyright (c) 2018-2020 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2020 The Board of Trustees of the Leland Stanford Junior University - * Copyright (c) 2018-2020 TotalEnergies - * Copyright (c) 2019- GEOSX Contributors + * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC + * Copyright (c) 2018-2024 TotalEnergies + * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University + * Copyright (c) 2023-2024 Chevron + * Copyright (c) 2019- GEOS/GEOSX Contributors * All rights reserved * * See top level LICENSE, COPYRIGHT, CONTRIBUTORS, NOTICE, and ACKNOWLEDGEMENTS files for details. diff --git a/src/coreComponents/physicsSolvers/fluidFlow/wells/kernels/SinglePhaseWellKernels.cpp b/src/coreComponents/physicsSolvers/fluidFlow/wells/kernels/SinglePhaseWellKernels.cpp index a2446c60b6a..e3dae7a4616 100644 --- a/src/coreComponents/physicsSolvers/fluidFlow/wells/kernels/SinglePhaseWellKernels.cpp +++ b/src/coreComponents/physicsSolvers/fluidFlow/wells/kernels/SinglePhaseWellKernels.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/fluidFlow/wells/kernels/SinglePhaseWellKernels.hpp b/src/coreComponents/physicsSolvers/fluidFlow/wells/kernels/SinglePhaseWellKernels.hpp index 91590ed1d6b..8269b9f3cce 100644 --- a/src/coreComponents/physicsSolvers/fluidFlow/wells/kernels/SinglePhaseWellKernels.hpp +++ b/src/coreComponents/physicsSolvers/fluidFlow/wells/kernels/SinglePhaseWellKernels.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/fluidFlow/wells/kernels/ThermalCompositionalMultiphaseWellKernels.hpp b/src/coreComponents/physicsSolvers/fluidFlow/wells/kernels/ThermalCompositionalMultiphaseWellKernels.hpp index 3c3b9a2b9d6..6e225367a36 100644 --- a/src/coreComponents/physicsSolvers/fluidFlow/wells/kernels/ThermalCompositionalMultiphaseWellKernels.hpp +++ b/src/coreComponents/physicsSolvers/fluidFlow/wells/kernels/ThermalCompositionalMultiphaseWellKernels.hpp @@ -2,10 +2,11 @@ * ------------------------------------------------------------------------------------------------------------ * SPDX-License-Identifier: LGPL-2.1-only * - * Copyright (c) 2018-2020 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2020 The Board of Trustees of the Leland Stanford Junior University - * Copyright (c) 2018-2020 TotalEnergies - * Copyright (c) 2019- GEOSX Contributors + * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC + * Copyright (c) 2018-2024 TotalEnergies + * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University + * Copyright (c) 2023-2024 Chevron + * Copyright (c) 2019- GEOS/GEOSX Contributors * All rights reserved * * See top level LICENSE, COPYRIGHT, CONTRIBUTORS, NOTICE, and ACKNOWLEDGEMENTS files for details. @@ -637,7 +638,7 @@ class ElementBasedAssemblyKernelFactory localIndex const numPhases, integer const isProducer, globalIndex const rankOffset, - integer const useTotalMassEquation, + BitFlags< isothermalCompositionalMultiphaseBaseKernels::KernelFlags > kernelFlags, string const dofKey, WellElementSubRegion const & subRegion, MultiFluidBase const & fluid, @@ -649,11 +650,6 @@ class ElementBasedAssemblyKernelFactory { localIndex constexpr NUM_COMP = NC(); - - BitFlags< isothermalCompositionalMultiphaseBaseKernels::KernelFlags > kernelFlags; - if( useTotalMassEquation ) - kernelFlags.set( isothermalCompositionalMultiphaseBaseKernels::KernelFlags::TotalMassEquation ); - ElementBasedAssemblyKernel< NUM_COMP > kernel( numPhases, isProducer, rankOffset, dofKey, subRegion, fluid, localMatrix, localRhs, kernelFlags ); ElementBasedAssemblyKernel< NUM_COMP >::template @@ -1088,7 +1084,7 @@ class FaceBasedAssemblyKernelFactory createAndLaunch( integer const numComps, real64 const dt, globalIndex const rankOffset, - integer const useTotalMassEquation, + BitFlags< isothermalCompositionalMultiphaseBaseKernels::KernelFlags > kernelFlags, string const dofKey, WellControls const & wellControls, WellElementSubRegion const & subRegion, @@ -1100,15 +1096,7 @@ class FaceBasedAssemblyKernelFactory { integer constexpr NUM_COMP = NC(); - - BitFlags< isothermalCompositionalMultiphaseBaseKernels::KernelFlags > kernelFlags; - if( useTotalMassEquation ) - kernelFlags.set( isothermalCompositionalMultiphaseBaseKernels::KernelFlags::TotalMassEquation ); - - using kernelType = FaceBasedAssemblyKernel< NUM_COMP >; - - kernelType kernel( dt, rankOffset, dofKey, wellControls, subRegion, fluid, localMatrix, localRhs, kernelFlags ); kernelType::template launch< POLICY >( subRegion.size(), kernel ); } ); diff --git a/src/coreComponents/physicsSolvers/fluidFlow/wells/kernels/ThermalSinglePhaseWellKernels.hpp b/src/coreComponents/physicsSolvers/fluidFlow/wells/kernels/ThermalSinglePhaseWellKernels.hpp index cbd0ae0b423..74a8c1f7414 100644 --- a/src/coreComponents/physicsSolvers/fluidFlow/wells/kernels/ThermalSinglePhaseWellKernels.hpp +++ b/src/coreComponents/physicsSolvers/fluidFlow/wells/kernels/ThermalSinglePhaseWellKernels.hpp @@ -2,10 +2,11 @@ * ------------------------------------------------------------------------------------------------------------ * SPDX-License-Identifier: LGPL-2.1-only * - * Copyright (c) 2018-2020 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2020 The Board of Trustees of the Leland Stanford Junior University - * Copyright (c) 2018-2020 TotalEnergies - * Copyright (c) 2019- GEOSX Contributors + * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC + * Copyright (c) 2018-2024 TotalEnergies + * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University + * Copyright (c) 2023-2024 Chevron + * Copyright (c) 2019- GEOS/GEOSX Contributors * All rights reserved * * See top level LICENSE, COPYRIGHT, CONTRIBUTORS, NOTICE, and ACKNOWLEDGEMENTS files for details. diff --git a/src/coreComponents/physicsSolvers/inducedSeismicity/CMakeLists.txt b/src/coreComponents/physicsSolvers/inducedSeismicity/CMakeLists.txt index 7edf040454d..df05497f6f2 100644 --- a/src/coreComponents/physicsSolvers/inducedSeismicity/CMakeLists.txt +++ b/src/coreComponents/physicsSolvers/inducedSeismicity/CMakeLists.txt @@ -1,17 +1,27 @@ # Specify solver headers set( physicsSolvers_headers ${physicsSolvers_headers} + inducedSeismicity/ExplicitQDRateAndState.hpp + inducedSeismicity/ImplicitQDRateAndState.hpp inducedSeismicity/inducedSeismicityFields.hpp + inducedSeismicity/QDRateAndStateBase.hpp + inducedSeismicity/QuasiDynamicEarthQuake.hpp inducedSeismicity/rateAndStateFields.hpp - inducedSeismicity/QuasiDynamicEQ.hpp inducedSeismicity/SeismicityRate.hpp - inducedSeismicity/kernels/RateAndStateKernels.hpp - inducedSeismicity/kernels/SeismicityRateKernels.hpp + inducedSeismicity/SpringSlider.hpp + inducedSeismicity/kernels/ExplicitRateAndStateKernels.hpp + inducedSeismicity/kernels/ImplicitRateAndStateKernels.hpp + inducedSeismicity/kernels/RateAndStateKernelsBase.hpp + inducedSeismicity/kernels/SeismicityRateKernels.hpp PARENT_SCOPE ) # Specify solver sources set( physicsSolvers_sources ${physicsSolvers_sources} - inducedSeismicity/QuasiDynamicEQ.cpp - inducedSeismicity/SeismicityRate.cpp + inducedSeismicity/ExplicitQDRateAndState.cpp + inducedSeismicity/ImplicitQDRateAndState.cpp + inducedSeismicity/QDRateAndStateBase.cpp + inducedSeismicity/QuasiDynamicEarthQuake.cpp + inducedSeismicity/SeismicityRate.cpp + inducedSeismicity/SpringSlider.cpp PARENT_SCOPE ) diff --git a/src/coreComponents/physicsSolvers/inducedSeismicity/ExplicitQDRateAndState.cpp b/src/coreComponents/physicsSolvers/inducedSeismicity/ExplicitQDRateAndState.cpp new file mode 100644 index 00000000000..d6fc3c74871 --- /dev/null +++ b/src/coreComponents/physicsSolvers/inducedSeismicity/ExplicitQDRateAndState.cpp @@ -0,0 +1,308 @@ +/* + * ------------------------------------------------------------------------------------------------------------ + * SPDX-License-Identifier: LGPL-2.1-only + * + * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC + * Copyright (c) 2018-2024 TotalEnergies + * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University + * Copyright (c) 2023-2024 Chevron + * Copyright (c) 2019- GEOS/GEOSX Contributors + * All rights reserved + * + * See top level LICENSE, COPYRIGHT, CONTRIBUTORS, NOTICE, and ACKNOWLEDGEMENTS files for details. + * ------------------------------------------------------------------------------------------------------------ + */ + +/** + * @file ExplicitQDRateAndState.cpp + */ + +#include "ExplicitQDRateAndState.hpp" + +#include "dataRepository/InputFlags.hpp" +#include "mesh/DomainPartition.hpp" +#include "kernels/ExplicitRateAndStateKernels.hpp" +#include "rateAndStateFields.hpp" +#include "physicsSolvers/contact/ContactFields.hpp" +#include "fieldSpecification/FieldSpecificationManager.hpp" + +namespace geos +{ + +using namespace dataRepository; +using namespace fields; +using namespace constitutive; +using namespace rateAndStateKernels; + +ExplicitQDRateAndState::ExplicitQDRateAndState( const string & name, + Group * const parent ): + QDRateAndStateBase( name, parent ), + m_butcherTable( BogackiShampine32Table()), // TODO: The butcher table should be specified in the XML input. + m_successfulStep( false ), + m_stepUpdateFactor( 1.0 ), + m_controller( PIDController( { 0.6, -0.2, 0.0 }, + 1.0e-6, 1.0e-6, 0.81 )) // TODO: The control parameters should be specified in the XML input +{} + +ExplicitQDRateAndState::~ExplicitQDRateAndState() +{ + // TODO Auto-generated destructor stub +} + +void ExplicitQDRateAndState::registerDataOnMesh( Group & meshBodies ) +{ + QDRateAndStateBase::registerDataOnMesh( meshBodies ); + + forDiscretizationOnMeshTargets( meshBodies, [&] ( string const &, + MeshLevel & mesh, + arrayView1d< string const > const & regionNames ) + { + ElementRegionManager & elemManager = mesh.getElemManager(); + + elemManager.forElementSubRegions< SurfaceElementSubRegion >( regionNames, + [&]( localIndex const, + SurfaceElementSubRegion & subRegion ) + { + // Runge-Kutta stage rates and error + integer const numRKComponents = 3; + subRegion.registerField< rateAndState::rungeKuttaStageRates >( getName() ).reference().resizeDimension< 1, 2 >( m_butcherTable.numStages, numRKComponents ); + subRegion.registerField< rateAndState::error >( getName() ).reference().resizeDimension< 1 >( numRKComponents ); + } ); + } ); +} + +real64 ExplicitQDRateAndState::solverStep( real64 const & time_n, + real64 const & dt, + int const cycleNumber, + DomainPartition & domain ) +{ + applyInitialConditionsToFault( cycleNumber, domain ); + saveState( domain ); + + real64 dtAdaptive = dt; + + GEOS_LOG_LEVEL_RANK_0( 1, "Begin adaptive time step" ); + while( true ) // Adaptive time step loop. Performs a Runge-Kutta time stepping with error control on state and slip + { + real64 dtStress; GEOS_UNUSED_VAR( dtStress ); + + // Initial Runge-Kutta stage + stepRateStateODEInitialSubstage( dtAdaptive, domain ); + real64 dtStage = m_butcherTable.c[1]*dtAdaptive; + dtStress = updateStresses( time_n, dtStage, cycleNumber, domain ); + updateSlipVelocity( time_n, dtStage, domain ); + + // Remaining stages + for( integer stageIndex = 1; stageIndex < m_butcherTable.numStages-1; stageIndex++ ) + { + stepRateStateODESubstage( stageIndex, dtAdaptive, domain ); + dtStage = m_butcherTable.c[stageIndex+1]*dtAdaptive; + dtStress = updateStresses( time_n, dtStage, cycleNumber, domain ); + updateSlipVelocity( time_n, dtStage, domain ); + } + + stepRateStateODEAndComputeError( dtAdaptive, domain ); + // Update timestep based on the time step error + evalTimestep( domain ); + if( m_successfulStep ) // set in evalTimestep + { + // Compute stresses, and slip velocity and save results at time_n + dtAdapitve + if( !m_butcherTable.FSAL ) + { + dtStress = updateStresses( time_n, dtAdaptive, cycleNumber, domain ); + updateSlipVelocity( time_n, dtAdaptive, domain ); + } + saveState( domain ); + break; + } + else + { + // Retry with updated time step + dtAdaptive = setNextDt( dtAdaptive, domain ); + } + } + // return last successful adaptive time step (passed along to setNextDt) + return dtAdaptive; +} + +void ExplicitQDRateAndState::stepRateStateODEInitialSubstage( real64 const dt, DomainPartition & domain ) const +{ + + forDiscretizationOnMeshTargets( domain.getMeshBodies(), [&]( string const &, + MeshLevel & mesh, + arrayView1d< string const > const & regionNames ) + + { + mesh.getElemManager().forElementSubRegions< SurfaceElementSubRegion >( regionNames, + [&]( localIndex const, + SurfaceElementSubRegion & subRegion ) + { + + string const & fricitonLawName = subRegion.template getReference< string >( viewKeyStruct::frictionLawNameString() ); + RateAndStateFriction const & frictionLaw = getConstitutiveModel< RateAndStateFriction >( subRegion, fricitonLawName ); + rateAndStateKernels::EmbeddedRungeKuttaKernel rkKernel( subRegion, frictionLaw, m_butcherTable ); + arrayView3d< real64 > const rkStageRates = subRegion.getField< rateAndState::rungeKuttaStageRates >(); + + if( m_butcherTable.FSAL && m_successfulStep ) + { + forAll< parallelDevicePolicy<> >( subRegion.size(), [=] GEOS_HOST_DEVICE ( localIndex const k ) + { + rkKernel.updateStageRatesFSAL( k ); + rkKernel.updateStageValues( k, 1, dt ); + } ); + } + else + { + forAll< parallelDevicePolicy<> >( subRegion.size(), [=] GEOS_HOST_DEVICE ( localIndex const k ) + { + rkKernel.initialize( k ); + rkKernel.updateStageRates( k, 0 ); + rkKernel.updateStageValues( k, 1, dt ); + } ); + } + } ); + } ); +} + +void ExplicitQDRateAndState::stepRateStateODESubstage( integer const stageIndex, + real64 const dt, + DomainPartition & domain ) const +{ + + forDiscretizationOnMeshTargets( domain.getMeshBodies(), [&]( string const &, + MeshLevel & mesh, + arrayView1d< string const > const & regionNames ) + + { + mesh.getElemManager().forElementSubRegions< SurfaceElementSubRegion >( regionNames, + [&]( localIndex const, + SurfaceElementSubRegion & subRegion ) + { + + string const & fricitonLawName = subRegion.template getReference< string >( viewKeyStruct::frictionLawNameString() ); + RateAndStateFriction const & frictionLaw = getConstitutiveModel< RateAndStateFriction >( subRegion, fricitonLawName ); + rateAndStateKernels::EmbeddedRungeKuttaKernel rkKernel( subRegion, frictionLaw, m_butcherTable ); + arrayView3d< real64 > const rkStageRates = subRegion.getField< rateAndState::rungeKuttaStageRates >(); + + forAll< parallelDevicePolicy<> >( subRegion.size(), [=] GEOS_HOST_DEVICE ( localIndex const k ) + { + rkKernel.updateStageRates( k, stageIndex ); + rkKernel.updateStageValues( k, stageIndex+1, dt ); + } ); + } ); + } ); +} + +void ExplicitQDRateAndState::stepRateStateODEAndComputeError( real64 const dt, DomainPartition & domain ) const +{ + forDiscretizationOnMeshTargets( domain.getMeshBodies(), [&]( string const &, + MeshLevel & mesh, + arrayView1d< string const > const & regionNames ) + + { + mesh.getElemManager().forElementSubRegions< SurfaceElementSubRegion >( regionNames, + [&]( localIndex const, + SurfaceElementSubRegion & subRegion ) + { + + string const & fricitonLawName = subRegion.template getReference< string >( viewKeyStruct::frictionLawNameString() ); + RateAndStateFriction const & frictionLaw = getConstitutiveModel< RateAndStateFriction >( subRegion, fricitonLawName ); + rateAndStateKernels::EmbeddedRungeKuttaKernel rkKernel( subRegion, frictionLaw, m_butcherTable ); + arrayView3d< real64 > const rkStageRates = subRegion.getField< rateAndState::rungeKuttaStageRates >(); + if( m_butcherTable.FSAL ) + { + forAll< parallelDevicePolicy<> >( subRegion.size(), [=] GEOS_HOST_DEVICE ( localIndex const k ) + { + // Perform last stage rate update + rkKernel.updateStageRates( k, m_butcherTable.numStages-1 ); + // Update solution to final time and compute errors + rkKernel.updateSolutionAndLocalErrorFSAL( k, dt, m_controller.absTol, m_controller.relTol ); + } ); + } + else + { + forAll< parallelDevicePolicy<> >( subRegion.size(), [=] GEOS_HOST_DEVICE ( localIndex const k ) + { + // Perform last stage rate update + rkKernel.updateStageRates( k, m_butcherTable.numStages-1 ); + // Update solution to final time and compute errors + rkKernel.updateSolutionAndLocalError( k, dt, m_controller.absTol, m_controller.relTol ); + } ); + } + } ); + } ); +} + +void ExplicitQDRateAndState::updateSlipVelocity( real64 const & time_n, + real64 const & dt, + DomainPartition & domain ) const +{ + GEOS_LOG_LEVEL_RANK_0( 1, "Rate and State solver" ); + integer const maxIterNewton = m_nonlinearSolverParameters.m_maxIterNewton; + real64 const newtonTol = m_nonlinearSolverParameters.m_newtonTol; + forDiscretizationOnMeshTargets( domain.getMeshBodies(), [&]( string const &, + MeshLevel & mesh, + arrayView1d< string const > const & regionNames ) + + { + mesh.getElemManager().forElementSubRegions< SurfaceElementSubRegion >( regionNames, + [&]( localIndex const, + SurfaceElementSubRegion & subRegion ) + { + // solve rate and state equations. + rateAndStateKernels::createAndLaunch< rateAndStateKernels::ExplicitRateAndStateKernel, parallelDevicePolicy<> >( subRegion, viewKeyStruct::frictionLawNameString(), m_shearImpedance, + maxIterNewton, newtonTol, time_n, dt ); + } ); + } ); +} + +void ExplicitQDRateAndState::evalTimestep( DomainPartition & domain ) +{ + forDiscretizationOnMeshTargets( domain.getMeshBodies(), [&]( string const &, + MeshLevel const & mesh, + arrayView1d< string const > const & regionNames ) + + { + mesh.getElemManager().forElementSubRegions< SurfaceElementSubRegion >( regionNames, + [&]( localIndex const, + SurfaceElementSubRegion const & subRegion ) + { + arrayView2d< real64 const > const error = subRegion.getField< rateAndState::error >(); + + RAJA::ReduceSum< parallelDeviceReduce, real64 > scaledl2ErrorSquared( 0.0 ); + integer const N = subRegion.size(); + forAll< parallelDevicePolicy<> >( subRegion.size(), [=] GEOS_HOST_DEVICE ( localIndex const k ) + { + scaledl2ErrorSquared += LvArray::tensorOps::l2NormSquared< 3 >( error[k] ); + } ); + m_controller.errors[0] = LvArray::math::sqrt( MpiWrapper::sum( scaledl2ErrorSquared.get() / (3.0*N) )); + } ); + } ); + + // Compute update factor to currentDt using PID error controller + limiter + m_stepUpdateFactor = m_controller.computeUpdateFactor( m_butcherTable.algHighOrder, m_butcherTable.algLowOrder ); + // Check if step was acceptable + m_successfulStep = (m_stepUpdateFactor >= m_controller.acceptSafety) ? true : false; + if( m_successfulStep ) + { + m_controller.errors[2] = m_controller.errors[1]; + m_controller.errors[1] = m_controller.errors[0]; + } +} + +real64 ExplicitQDRateAndState::setNextDt( real64 const & currentDt, DomainPartition & domain ) +{ + GEOS_UNUSED_VAR( domain ); + real64 const nextDt = m_stepUpdateFactor*currentDt; + if( m_successfulStep ) + { + GEOS_LOG_LEVEL_RANK_0( 1, GEOS_FMT( "Adaptive time step successful. The next dt will be {:.2e} s", nextDt )); + } + else + { + GEOS_LOG_LEVEL_RANK_0( 1, GEOS_FMT( "Adaptive time step failed. Retry step with dt {:.2e} s", nextDt )); + } + return nextDt; +} + +} // namespace geos diff --git a/src/coreComponents/physicsSolvers/inducedSeismicity/ExplicitQDRateAndState.hpp b/src/coreComponents/physicsSolvers/inducedSeismicity/ExplicitQDRateAndState.hpp new file mode 100644 index 00000000000..69769af9381 --- /dev/null +++ b/src/coreComponents/physicsSolvers/inducedSeismicity/ExplicitQDRateAndState.hpp @@ -0,0 +1,176 @@ +/* + * ------------------------------------------------------------------------------------------------------------ + * SPDX-License-Identifier: LGPL-2.1-only + * + * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC + * Copyright (c) 2018-2024 TotalEnergies + * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University + * Copyright (c) 2023-2024 Chevron + * Copyright (c) 2019- GEOS/GEOSX Contributors + * All rights reserved + * + * See top level LICENSE, COPYRIGHT, CONTRIBUTORS, NOTICE, and ACKNOWLEDGEMENTS files for details. + * ------------------------------------------------------------------------------------------------------------ + */ + +#ifndef GEOS_PHYSICSSOLVERS_INDUCEDSEISMICITY_QUASIDYNAMICEQRK32_HPP +#define GEOS_PHYSICSSOLVERS_INDUCEDSEISMICITY_QUASIDYNAMICEQRK32_HPP + +#include "QDRateAndStateBase.hpp" +#include "kernels/ExplicitRateAndStateKernels.hpp" + +namespace geos +{ + +class ExplicitQDRateAndState : public QDRateAndStateBase +{ +public: + /// The default nullary constructor is disabled to avoid compiler auto-generation: + ExplicitQDRateAndState() = delete; + + /// The constructor needs a user-defined "name" and a parent Group (to place this instance in the tree structure of classes) + ExplicitQDRateAndState( const string & name, + Group * const parent ); + + /// Destructor + virtual ~ExplicitQDRateAndState() override; + + static string derivedSolverPrefix() { return "Explicit";}; + + /// This method ties properties with their supporting mesh + virtual void registerDataOnMesh( Group & meshBodies ) override; + + struct viewKeyStruct : public QDRateAndStateBase::viewKeyStruct + { + /// target slip increment + constexpr static char const * timeStepTol() { return "timeStepTol"; } + }; + + virtual real64 solverStep( real64 const & time_n, + real64 const & dt, + integer const cycleNumber, + DomainPartition & domain ) override final; + + + virtual real64 setNextDt( real64 const & currentDt, + DomainPartition & domain ) override final; + + /** + * @brief Evaluates whether an adaptive time step was successful + * @param domain + */ + void evalTimestep( DomainPartition & domain ); + + /** + * @brief Computes stage rates for the initial Runge-Kutta substage and updates slip and state + * @param dt + * @param domain + */ + void stepRateStateODEInitialSubstage( real64 const dt, DomainPartition & domain ) const; + + /** + * @brief Computes stage rates at the Runge-Kutta substage specified by stageIndex and updates slip and state + * @param stageIndex + * @param dt + * @param domain + */ + void stepRateStateODESubstage( integer const stageIndex, + real64 const dt, + DomainPartition & domain ) const; + + /** + * @brief Updates slip and state to t + dt and approximates the error + * @param dt + * @param domain + */ + void stepRateStateODEAndComputeError( real64 const dt, DomainPartition & domain ) const; + + /** + * @brief Updates rate-and-state slip velocity + * @param domain + */ + void updateSlipVelocity( real64 const & time_n, + real64 const & dt, + DomainPartition & domain ) const; + +protected: + + /// Runge-Kutta Butcher table (specifies the embedded RK method) + // TODO: The specific type should not be hardcoded! + // Should be possible to change RK-method based on the table. + rateAndStateKernels::BogackiShampine32Table m_butcherTable; + + bool m_successfulStep; // Flag indicating if the adative time step was accepted + + real64 m_stepUpdateFactor; // Factor to update timestep with + + /** + * @brief Proportional-integral-derivative controller used for updating time step + * based error estimate in the current and previous time steps. + */ + class PIDController + { +public: + + GEOS_HOST_DEVICE + PIDController( std::array< const real64, 3 > const & cparams, + const real64 atol, + const real64 rtol, + const real64 safety ): + controlParameters{ cparams }, + absTol( atol ), + relTol( rtol ), + acceptSafety( safety ), + errors{ {0.0, 0.0, 0.0} } + {} + + /// Default copy constructor + PIDController( PIDController const & ) = default; + + /// Default move constructor + PIDController( PIDController && ) = default; + + /// Deleted default constructor + PIDController() = delete; + + /// Deleted copy assignment operator + PIDController & operator=( PIDController const & ) = delete; + + /// Deleted move assignment operator + PIDController & operator=( PIDController && ) = delete; + + /// Parameters for the PID error controller + const std::array< const real64, 3 > controlParameters; // Controller parameters + + real64 const absTol; // absolut tolerence + + real64 const relTol; // relative tolerence + + real64 const acceptSafety; // Acceptance safety + + std::array< real64, 3 > errors; // Errors for current and two previous updates + // stored as [n+1, n, n-1] + + real64 computeUpdateFactor( integer const algHighOrder, integer const algLowOrder ) + { + // PID error controller + limiter + real64 const k = LvArray::math::min( algHighOrder, algLowOrder ) + 1.0; + real64 const eps0 = 1.0/(errors[0] + std::numeric_limits< real64 >::epsilon()); // n + 1 + real64 const eps1 = 1.0/(errors[1] + std::numeric_limits< real64 >::epsilon()); // n + real64 const eps2 = 1.0/(errors[2] + std::numeric_limits< real64 >::epsilon()); // n-1 + // Compute update factor eps0^(beta0/k)*eps1^(beta1/k)*eps2^(beta2/k) where + // beta0 - beta2 are the control parameters. Also apply limiter to smoothen changes. + // Limiter is 1.0 + atan(x - 1.0). Here use atan(x) = atan2(x, 1.0). + return 1.0 + LvArray::math::atan2( pow( eps0, controlParameters[0] / k ) * + pow( eps1, controlParameters[1] / k ) * + pow( eps2, controlParameters[2] / k ) - 1.0, 1.0 ); + } + }; + + PIDController m_controller; + +}; + +} /* namespace geos */ + +#endif /* GEOS_PHYSICSSOLVERS_INDUCEDSEISMICITY_QUASIDYNAMICEQRK32_HPP */ diff --git a/src/coreComponents/physicsSolvers/inducedSeismicity/ImplicitQDRateAndState.cpp b/src/coreComponents/physicsSolvers/inducedSeismicity/ImplicitQDRateAndState.cpp new file mode 100644 index 00000000000..733fbe4ab7a --- /dev/null +++ b/src/coreComponents/physicsSolvers/inducedSeismicity/ImplicitQDRateAndState.cpp @@ -0,0 +1,142 @@ +/* + * ------------------------------------------------------------------------------------------------------------ + * SPDX-License-Identifier: LGPL-2.1-only + * + * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC + * Copyright (c) 2018-2024 TotalEnergies + * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University + * Copyright (c) 2023-2024 Chevron + * Copyright (c) 2019- GEOS/GEOSX Contributors + * All rights reserved + * + * See top level LICENSE, COPYRIGHT, CONTRIBUTORS, NOTICE, and ACKNOWLEDGEMENTS files for details. + * ------------------------------------------------------------------------------------------------------------ + */ + +/** + * @file ImplicitQDRateAndState.cpp + */ + +#include "ImplicitQDRateAndState.hpp" + +#include "dataRepository/InputFlags.hpp" +#include "mesh/DomainPartition.hpp" +#include "kernels/ImplicitRateAndStateKernels.hpp" +#include "rateAndStateFields.hpp" +#include "physicsSolvers/contact/ContactFields.hpp" + + +namespace geos +{ + +using namespace dataRepository; +using namespace fields; +using namespace constitutive; + +ImplicitQDRateAndState::ImplicitQDRateAndState( const string & name, + Group * const parent ): + QDRateAndStateBase( name, parent ), + m_targetSlipIncrement( 1.0e-7 ) +{ + this->registerWrapper( viewKeyStruct::targetSlipIncrementString(), &m_targetSlipIncrement ). + setInputFlag( InputFlags::OPTIONAL ). + setApplyDefaultValue( 1.0e-7 ). + setDescription( "Target slip incrmeent for timestep size selction" ); +} + +ImplicitQDRateAndState::~ImplicitQDRateAndState() +{ + // TODO Auto-generated destructor stub +} + +void ImplicitQDRateAndState::solveRateAndStateEquations( real64 const time_n, + real64 const dt, + DomainPartition & domain ) const +{ + integer const maxNewtonIter = m_nonlinearSolverParameters.m_maxIterNewton; + real64 const newtonTol = m_nonlinearSolverParameters.m_newtonTol; + forDiscretizationOnMeshTargets( domain.getMeshBodies(), [&]( string const &, + MeshLevel & mesh, + arrayView1d< string const > const & regionNames ) + + { + mesh.getElemManager().forElementSubRegions< SurfaceElementSubRegion >( regionNames, + [&]( localIndex const, + SurfaceElementSubRegion & subRegion ) + { + // solve rate and state equations. + rateAndStateKernels::createAndLaunch< rateAndStateKernels::ImplicitFixedStressRateAndStateKernel, parallelDevicePolicy<> >( subRegion, + viewKeyStruct::frictionLawNameString(), + m_shearImpedance, + maxNewtonIter, newtonTol, + time_n, + dt ); // save + // old + // state + updateSlip( subRegion, dt ); + } ); + } ); +} + +real64 ImplicitQDRateAndState::solverStep( real64 const & time_n, + real64 const & dt, + int const cycleNumber, + DomainPartition & domain ) +{ + applyInitialConditionsToFault( cycleNumber, domain ); + GEOS_LOG_LEVEL_RANK_0( 1, "Stress solver" ); + updateStresses( time_n, dt, cycleNumber, domain ); + GEOS_LOG_LEVEL_RANK_0( 1, "Rate and state solver" ); + solveRateAndStateEquations( time_n, dt, domain ); + saveState( domain ); + return dt; +} + +void ImplicitQDRateAndState::updateSlip( ElementSubRegionBase & subRegion, real64 const dt ) const +{ + arrayView2d< real64 const > const slipVelocity = subRegion.getField< rateAndState::slipVelocity >(); + arrayView2d< real64 > const deltaSlip = subRegion.getField< contact::deltaSlip >(); + + forAll< parallelDevicePolicy<> >( subRegion.size(), [=] GEOS_HOST_DEVICE ( localIndex const k ) + { + deltaSlip[k][0] = slipVelocity[k][0] * dt; + deltaSlip[k][1] = slipVelocity[k][1] * dt; + } ); +} + +real64 ImplicitQDRateAndState::setNextDt( real64 const & currentDt, DomainPartition & domain ) +{ + GEOS_UNUSED_VAR( currentDt ); + + real64 maxSlipRate = 0.0; + forDiscretizationOnMeshTargets( domain.getMeshBodies(), [&]( string const &, + MeshLevel const & mesh, + arrayView1d< string const > const & regionNames ) + + { + real64 maxSlipRateOnThisRank = 0.0; + mesh.getElemManager().forElementSubRegions< SurfaceElementSubRegion >( regionNames, + [&]( localIndex const, + SurfaceElementSubRegion const & subRegion ) + { + arrayView1d< real64 const > const slipRate = subRegion.getField< rateAndState::slipRate >(); + + RAJA::ReduceMax< parallelDeviceReduce, real64 > maximumSlipRateOnThisRegion( 0.0 ); + forAll< parallelDevicePolicy<> >( subRegion.size(), [=] GEOS_HOST_DEVICE ( localIndex const k ) + { + maximumSlipRateOnThisRegion.max( slipRate[k] ); + } ); + if( maximumSlipRateOnThisRegion.get() > maxSlipRateOnThisRank ) + maxSlipRateOnThisRank = maximumSlipRateOnThisRegion.get(); + } ); + maxSlipRate = MpiWrapper::max( maxSlipRateOnThisRank ); + } ); + + real64 const nextDt = m_targetSlipIncrement / maxSlipRate; + + GEOS_LOG_LEVEL_RANK_0( 1, GEOS_FMT( "The next dt will be {:.2e} s", nextDt )); + + return nextDt; +} + +} // namespace geos diff --git a/src/coreComponents/physicsSolvers/inducedSeismicity/ImplicitQDRateAndState.hpp b/src/coreComponents/physicsSolvers/inducedSeismicity/ImplicitQDRateAndState.hpp new file mode 100644 index 00000000000..907612d0aef --- /dev/null +++ b/src/coreComponents/physicsSolvers/inducedSeismicity/ImplicitQDRateAndState.hpp @@ -0,0 +1,70 @@ +/* + * ------------------------------------------------------------------------------------------------------------ + * SPDX-License-Identifier: LGPL-2.1-only + * + * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC + * Copyright (c) 2018-2024 TotalEnergies + * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University + * Copyright (c) 2023-2024 Chevron + * Copyright (c) 2019- GEOS/GEOSX Contributors + * All rights reserved + * + * See top level LICENSE, COPYRIGHT, CONTRIBUTORS, NOTICE, and ACKNOWLEDGEMENTS files for details. + * ------------------------------------------------------------------------------------------------------------ + */ + +#ifndef GEOS_PHYSICSSOLVERS_INDUCEDSEISMICITY_IMPLICITQDRATEANDSTATE_HPP +#define GEOS_PHYSICSSOLVERS_INDUCEDSEISMICITY_IMPLICITQDRATEANDSTATE_HPP + +#include "QDRateAndStateBase.hpp" + +namespace geos +{ + +class ImplicitQDRateAndState : public QDRateAndStateBase +{ +public: + /// The default nullary constructor is disabled to avoid compiler auto-generation: + ImplicitQDRateAndState() = delete; + + /// The constructor needs a user-defined "name" and a parent Group (to place this instance in the tree structure of classes) + ImplicitQDRateAndState( const string & name, + Group * const parent ); + + /// Destructor + virtual ~ImplicitQDRateAndState() override; + + static string derivedSolverPrefix() { return "Implicit";}; + + struct viewKeyStruct : public QDRateAndStateBase::viewKeyStruct + { + /// target slip increment + constexpr static char const * targetSlipIncrementString() { return "targetSlipIncrement"; } + }; + + virtual real64 setNextDt( real64 const & currentDt, + DomainPartition & domain ) override final; + + /** + * @brief save the old state + * @param subRegion + */ + void updateSlip( ElementSubRegionBase & subRegion, real64 const dt ) const; + + virtual real64 solverStep( real64 const & time_n, + real64 const & dt, + integer const cycleNumber, + DomainPartition & domain ) override final; +protected: + + void solveRateAndStateEquations( real64 const time_n, + real64 const dt, + DomainPartition & domain ) const; + + /// target slip rate + real64 m_targetSlipIncrement; +}; + +} /* namespace geos */ + +#endif /* GEOS_PHYSICSSOLVERS_INDUCEDSEISMICITY_IMPLICITQDRATEANDSTATE_HPP */ diff --git a/src/coreComponents/physicsSolvers/inducedSeismicity/QDRateAndStateBase.cpp b/src/coreComponents/physicsSolvers/inducedSeismicity/QDRateAndStateBase.cpp new file mode 100644 index 00000000000..a515685cab9 --- /dev/null +++ b/src/coreComponents/physicsSolvers/inducedSeismicity/QDRateAndStateBase.cpp @@ -0,0 +1,237 @@ +/* + * ------------------------------------------------------------------------------------------------------------ + * SPDX-License-Identifier: LGPL-2.1-only + * + * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC + * Copyright (c) 2018-2024 TotalEnergies + * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University + * Copyright (c) 2023-2024 Chevron + * Copyright (c) 2019- GEOS/GEOSX Contributors + * All rights reserved + * + * See top level LICENSE, COPYRIGHT, CONTRIBUTORS, NOTICE, and ACKNOWLEDGEMENTS files for details. + * ------------------------------------------------------------------------------------------------------------ + */ + +/** + * @file QDRateAndStateBase.cpp + */ + +#include "QDRateAndStateBase.hpp" + +#include "dataRepository/InputFlags.hpp" +#include "mesh/DomainPartition.hpp" +#include "rateAndStateFields.hpp" +#include "physicsSolvers/contact/ContactFields.hpp" +#include "fieldSpecification/FieldSpecificationManager.hpp" +#include "constitutive/contact/RateAndStateFriction.hpp" +#include "kernels/RateAndStateKernelsBase.hpp" + +namespace geos +{ + +using namespace dataRepository; +using namespace fields; +using namespace constitutive; + +QDRateAndStateBase::QDRateAndStateBase( const string & name, + Group * const parent ): + PhysicsSolverBase( name, parent ), + m_shearImpedance( 0.0 ) +{ + this->registerWrapper( viewKeyStruct::shearImpedanceString(), &m_shearImpedance ). + setInputFlag( InputFlags::REQUIRED ). + setDescription( "Shear impedance." ); +} + +QDRateAndStateBase::~QDRateAndStateBase() +{ + // TODO Auto-generated destructor stub +} + +void QDRateAndStateBase::registerDataOnMesh( Group & meshBodies ) +{ + PhysicsSolverBase::registerDataOnMesh( meshBodies ); + + forDiscretizationOnMeshTargets( meshBodies, [&] ( string const &, + MeshLevel & mesh, + arrayView1d< string const > const & regionNames ) + { + ElementRegionManager & elemManager = mesh.getElemManager(); + + elemManager.forElementSubRegions< SurfaceElementSubRegion >( regionNames, + [&]( localIndex const, + SurfaceElementSubRegion & subRegion ) + { + // Scalar functions on fault + subRegion.registerField< rateAndState::stateVariable >( getName() ); + subRegion.registerField< rateAndState::stateVariable_n >( getName() ); + subRegion.registerField< rateAndState::slipRate >( getName() ); + subRegion.registerField< rateAndState::slipRate_n >( getName() ); + + // Tangent (2-component) functions on fault + string const labels2Comp[2] = {"tangent1", "tangent2" }; + + subRegion.registerField< rateAndState::slipVelocity >( getName() ). + setDimLabels( 1, labels2Comp ).reference().resizeDimension< 1 >( 2 ); + subRegion.registerField< rateAndState::slipVelocity_n >( getName() ). + setDimLabels( 1, labels2Comp ).reference().resizeDimension< 1 >( 2 ); + + subRegion.registerField< rateAndState::shearTraction >( getName() ). + setDimLabels( 1, labels2Comp ).reference().resizeDimension< 1 >( 2 ); + subRegion.registerField< rateAndState::normalTraction >( getName() ); + + subRegion.registerField< rateAndState::shearTraction_n >( getName() ). + setDimLabels( 1, labels2Comp ).reference().resizeDimension< 1 >( 2 ); + subRegion.registerField< rateAndState::normalTraction_n >( getName() ); + + subRegion.registerField< rateAndState::backgroundShearStress >( getName() ). + setDimLabels( 1, labels2Comp ).reference().resizeDimension< 1 >( 2 ); + subRegion.registerField< rateAndState::backgroundNormalStress >( getName() ); + } ); + } ); +} + +void QDRateAndStateBase::enforceRateAndVelocityConsistency( SurfaceElementSubRegion & subRegion ) const +{ + arrayView2d< real64 > const slipVelocity = subRegion.getField< rateAndState::slipVelocity >(); + arrayView1d< real64 > const slipRate = subRegion.getField< rateAndState::slipRate >(); + arrayView1d< real64 const > const stateVariable = subRegion.getField< rateAndState::stateVariable >(); + + arrayView2d< real64 > const backgroundShearStress = subRegion.getField< rateAndState::backgroundShearStress >(); + arrayView1d< real64 > const backgroundNormalStress = subRegion.getField< rateAndState::backgroundNormalStress >(); + + real64 const shearImpedance = m_shearImpedance; + + string const & frictionaLawName = subRegion.getReference< string >( viewKeyStruct::frictionLawNameString() ); + constitutive::RateAndStateFriction const & frictionLaw = subRegion.getConstitutiveModel< constitutive::RateAndStateFriction >( frictionaLawName ); + + constitutive::RateAndStateFriction::KernelWrapper frictionLawKernelWrapper = frictionLaw.createKernelUpdates(); + + RAJA::ReduceMax< parallelDeviceReduce, int > negativeSlipRate( 0 ); + RAJA::ReduceMax< parallelDeviceReduce, int > bothNonZero( 0 ); + + forAll< parallelDevicePolicy<> >( subRegion.size(), [=] GEOS_HOST_DEVICE ( localIndex const k ) + { + if( slipRate[k] < 0.0 ) + { + negativeSlipRate.max( 1 ); + } + else if( LvArray::tensorOps::l2Norm< 2 >( slipVelocity[k] ) > 0.0 && slipRate[k] > 0.0 ) + { + bothNonZero.max( 1 ); + } + else if( LvArray::tensorOps::l2Norm< 2 >( slipVelocity[k] ) > 0.0 ) + { + slipRate[k] = LvArray::tensorOps::l2Norm< 2 >( slipVelocity[k] ); + } + else if( slipRate[k] > 0.0 ) + { + real64 const frictionCoefficient = frictionLawKernelWrapper.frictionCoefficient( k, slipRate[k], stateVariable[k] ); + rateAndStateKernels::projectSlipRateBase( k, + frictionCoefficient, + shearImpedance, + backgroundNormalStress, + backgroundShearStress, + slipRate, + slipVelocity ); + } + } ); + + + GEOS_ERROR_IF( negativeSlipRate.get() > 0, "SlipRate cannot be negative." ); + GEOS_ERROR_IF( bothNonZero.get() > 0, "Only one between slipRate and slipVelocity can be specified as i.c." ); + +} + +void QDRateAndStateBase::applyInitialConditionsToFault( int const cycleNumber, + DomainPartition & domain ) const +{ + if( cycleNumber == 0 ) + { + /// Apply initial conditions to the Fault + FieldSpecificationManager & fieldSpecificationManager = FieldSpecificationManager::getInstance(); + + forDiscretizationOnMeshTargets( domain.getMeshBodies(), [&]( string const &, + MeshLevel & mesh, + arrayView1d< string const > const & regionNames ) + + { + fieldSpecificationManager.applyInitialConditions( mesh ); + mesh.getElemManager().forElementSubRegions< SurfaceElementSubRegion >( regionNames, + [&]( localIndex const, + SurfaceElementSubRegion & subRegion ) + { + enforceRateAndVelocityConsistency( subRegion ); + + arrayView1d< real64 const > const slipRate = subRegion.getField< rateAndState::slipRate >(); + arrayView1d< real64 const > const stateVariable = subRegion.getField< rateAndState::stateVariable >(); + + arrayView1d< real64 > const normalTraction = subRegion.getField< rateAndState::normalTraction >(); + arrayView2d< real64 > const shearTraction = subRegion.getField< rateAndState::shearTraction >(); + + arrayView1d< real64 > const stateVariable_n = subRegion.getField< rateAndState::stateVariable_n >(); + arrayView1d< real64 > const slipRate_n = subRegion.getField< rateAndState::slipRate_n >(); + arrayView1d< real64 > const normalTraction_n = subRegion.getField< rateAndState::normalTraction_n >(); + arrayView2d< real64 > const shearTraction_n = subRegion.getField< rateAndState::shearTraction_n >(); + + arrayView2d< real64 const > const backgroundShearStress = subRegion.getField< rateAndState::backgroundShearStress >(); + arrayView1d< real64 const > const backgroundNormalStress = subRegion.getField< rateAndState::backgroundNormalStress >(); + + forAll< parallelDevicePolicy<> >( subRegion.size(), [=] GEOS_HOST_DEVICE ( localIndex const k ) + { + slipRate_n [k] = slipRate[k]; + stateVariable_n[k] = stateVariable[k]; + + normalTraction[k] = backgroundNormalStress[k]; + LvArray::tensorOps::copy< 2 >( shearTraction[k], backgroundShearStress[k] ); + + normalTraction_n[k] = normalTraction[k]; + LvArray::tensorOps::copy< 2 >( shearTraction_n[k], shearTraction[k] ); + } ); + } ); + } ); + } +} + +void QDRateAndStateBase::saveState( DomainPartition & domain ) const +{ + forDiscretizationOnMeshTargets( domain.getMeshBodies(), [&]( string const &, + MeshLevel & mesh, + arrayView1d< string const > const & regionNames ) + + { + mesh.getElemManager().forElementSubRegions< SurfaceElementSubRegion >( regionNames, + [&]( localIndex const, + SurfaceElementSubRegion & subRegion ) + { + arrayView1d< real64 const > const stateVariable = subRegion.getField< rateAndState::stateVariable >(); + arrayView2d< real64 const > const slipVelocity = subRegion.getField< rateAndState::slipVelocity >(); + arrayView2d< real64 const > const deltaSlip = subRegion.getField< contact::deltaSlip >(); + arrayView2d< real64 const > const dispJump = subRegion.getField< contact::dispJump >(); + arrayView2d< real64 const > const shearTraction = subRegion.getField< rateAndState::shearTraction >(); + arrayView1d< real64 const > const normalTraction = subRegion.getField< rateAndState::normalTraction >(); + + + arrayView1d< real64 > const stateVariable_n = subRegion.getField< rateAndState::stateVariable_n >(); + arrayView2d< real64 > const slipVelocity_n = subRegion.getField< rateAndState::slipVelocity_n >(); + arrayView2d< real64 > const deltaSlip_n = subRegion.getField< contact::deltaSlip >(); + arrayView2d< real64 > const dispJump_n = subRegion.getField< contact::dispJump_n >(); + arrayView2d< real64 > const shearTraction_n = subRegion.getField< rateAndState::shearTraction_n >(); + arrayView1d< real64 > const normalTraction_n = subRegion.getField< rateAndState::normalTraction_n >(); + + + forAll< parallelDevicePolicy<> >( subRegion.size(), [=] GEOS_HOST_DEVICE ( localIndex const k ) + { + stateVariable_n[k] = stateVariable[k]; + normalTraction_n[k] = normalTraction[k]; + LvArray::tensorOps::copy< 2 >( deltaSlip_n[k], deltaSlip[k] ); + LvArray::tensorOps::copy< 2 >( slipVelocity_n[k], slipVelocity[k] ); + LvArray::tensorOps::copy< 3 >( dispJump_n[k], dispJump[k] ); + LvArray::tensorOps::copy< 2 >( shearTraction_n[k], shearTraction[k] ); + } ); + } ); + } ); +} + +} // namespace geos diff --git a/src/coreComponents/physicsSolvers/inducedSeismicity/QDRateAndStateBase.hpp b/src/coreComponents/physicsSolvers/inducedSeismicity/QDRateAndStateBase.hpp new file mode 100644 index 00000000000..17b4ecb0685 --- /dev/null +++ b/src/coreComponents/physicsSolvers/inducedSeismicity/QDRateAndStateBase.hpp @@ -0,0 +1,89 @@ +/* + * ------------------------------------------------------------------------------------------------------------ + * SPDX-License-Identifier: LGPL-2.1-only + * + * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC + * Copyright (c) 2018-2024 TotalEnergies + * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University + * Copyright (c) 2023-2024 Chevron + * Copyright (c) 2019- GEOS/GEOSX Contributors + * All rights reserved + * + * See top level LICENSE, COPYRIGHT, CONTRIBUTORS, NOTICE, and ACKNOWLEDGEMENTS files for details. + * ------------------------------------------------------------------------------------------------------------ + */ + +#ifndef GEOS_PHYSICSSOLVERS_INDUCEDSEISMICITY_QDRATEANDSTATEBASE_HPP +#define GEOS_PHYSICSSOLVERS_INDUCEDSEISMICITY_QDRATEANDSTATEBASE_HPP + +#include "physicsSolvers/PhysicsSolverBase.hpp" + +namespace geos +{ + +class QDRateAndStateBase : public PhysicsSolverBase +{ +public: + /// The default nullary constructor is disabled to avoid compiler auto-generation: + QDRateAndStateBase() = delete; + + /// The constructor needs a user-defined "name" and a parent Group (to place this instance in the tree structure of classes) + QDRateAndStateBase( const string & name, + Group * const parent ); + + /// Destructor + virtual ~QDRateAndStateBase() override; + + /// This method ties properties with their supporting mesh + virtual void registerDataOnMesh( Group & meshBodies ) override; + + struct viewKeyStruct : public PhysicsSolverBase::viewKeyStruct + { + /// Friction law name string + constexpr static char const * frictionLawNameString() { return "frictionLawName"; } + /// Friction law name string + constexpr static char const * shearImpedanceString() { return "shearImpedance"; } + }; + + /** + * @brief Save the current state of the solver fields + * @param domain the domain object + */ + void saveState( DomainPartition & domain ) const; + + /** + * @brief Check that only one of slip rate or slip velocity are specified as initial conditions + * and initialize the unspecified field + * @param subRegion the element subregion + */ + void enforceRateAndVelocityConsistency( SurfaceElementSubRegion & subRegion ) const; + + /** + * @brief Compute stresses and update tractions on the fault + * @param time_n the current time + * @param dt the time step + * @param cycleNumber the current cycle number + * @param domain the domain object + */ + virtual real64 updateStresses( real64 const & time_n, + real64 const & dt, + const int cycleNumber, + DomainPartition & domain ) const = 0; + + /** + * @brief Apply initial conditions to fields on the fault + * @param cycleNumber the current cycle number + * @param domain the domain object + */ + virtual void applyInitialConditionsToFault( int const cycleNumber, + DomainPartition & domain ) const; + +protected: + + /// shear impedance + real64 m_shearImpedance; +}; + +} /* namespace geos */ + +#endif /* GEOS_PHYSICSSOLVERS_INDUCEDSEISMICTY_QDRATEANDSTATEBASE_HPP */ diff --git a/src/coreComponents/physicsSolvers/inducedSeismicity/QuasiDynamicEQ.cpp b/src/coreComponents/physicsSolvers/inducedSeismicity/QuasiDynamicEQ.cpp deleted file mode 100644 index 059fa9d33e1..00000000000 --- a/src/coreComponents/physicsSolvers/inducedSeismicity/QuasiDynamicEQ.cpp +++ /dev/null @@ -1,285 +0,0 @@ -/* - * ------------------------------------------------------------------------------------------------------------ - * SPDX-License-Identifier: LGPL-2.1-only - * - * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A - * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University - * Copyright (c) 2023-2024 Chevron - * Copyright (c) 2019- GEOS/GEOSX Contributors - * All rights reserved - * - * See top level LICENSE, COPYRIGHT, CONTRIBUTORS, NOTICE, and ACKNOWLEDGEMENTS files for details. - * ------------------------------------------------------------------------------------------------------------ - */ - -/** - * @file QuasiDynamicEQ.cpp - */ - -#include "QuasiDynamicEQ.hpp" - -#include "dataRepository/InputFlags.hpp" -#include "mesh/DomainPartition.hpp" -#include "kernels/RateAndStateKernels.hpp" -#include "rateAndStateFields.hpp" -#include "physicsSolvers/contact/ContactFields.hpp" -#include "fieldSpecification/FieldSpecificationManager.hpp" - -namespace geos -{ - -using namespace dataRepository; -using namespace fields; -using namespace constitutive; - -QuasiDynamicEQ::QuasiDynamicEQ( const string & name, - Group * const parent ): - PhysicsSolverBase( name, parent ), - m_stressSolver( nullptr ), - m_stressSolverName( "SpringSlider" ), - m_shearImpedance( 0.0 ), - m_targetSlipIncrement( 1.0e-7 ) -{ - this->registerWrapper( viewKeyStruct::shearImpedanceString(), &m_shearImpedance ). - setInputFlag( InputFlags::REQUIRED ). - setDescription( "Shear impedance." ); - - this->registerWrapper( viewKeyStruct::stressSolverNameString(), &m_stressSolverName ). - setInputFlag( InputFlags::OPTIONAL ). - setDescription( "Name of solver for computing stress. If empty, the spring-slider model is run." ); - - this->registerWrapper( viewKeyStruct::targetSlipIncrementString(), &m_targetSlipIncrement ). - setInputFlag( InputFlags::OPTIONAL ). - setApplyDefaultValue( 1.0e-7 ). - setDescription( "Target slip incrmeent for timestep size selction" ); -} - -void QuasiDynamicEQ::postInputInitialization() -{ - - // Initialize member stress solver as specified in XML input - if( !m_stressSolverName.empty() ) - { - m_stressSolver = &this->getParent().getGroup< PhysicsSolverBase >( m_stressSolverName ); - } - - PhysicsSolverBase::postInputInitialization(); -} - -QuasiDynamicEQ::~QuasiDynamicEQ() -{ - // TODO Auto-generated destructor stub -} - -void QuasiDynamicEQ::registerDataOnMesh( Group & meshBodies ) -{ - PhysicsSolverBase::registerDataOnMesh( meshBodies ); - - forDiscretizationOnMeshTargets( meshBodies, [&] ( string const &, - MeshLevel & mesh, - arrayView1d< string const > const & regionNames ) - { - ElementRegionManager & elemManager = mesh.getElemManager(); - - elemManager.forElementSubRegions< SurfaceElementSubRegion >( regionNames, - [&]( localIndex const, - SurfaceElementSubRegion & subRegion ) - { - // Scalar functions on fault - subRegion.registerField< rateAndState::stateVariable >( getName() ); - subRegion.registerField< rateAndState::stateVariable_n >( getName() ); - subRegion.registerField< rateAndState::slipRate >( getName() ); - - // Tangent (2-component) functions on fault - string const labels2Comp[2] = {"tangent1", "tangent2" }; - subRegion.registerField< rateAndState::slipVelocity >( getName() ). - setDimLabels( 1, labels2Comp ).reference().resizeDimension< 1 >( 2 ); - subRegion.registerField< rateAndState::deltaSlip >( getName() ). - setDimLabels( 1, labels2Comp ).reference().resizeDimension< 1 >( 2 ); - - if( !subRegion.hasWrapper( contact::dispJump::key() )) - { - // 3-component functions on fault - string const labels3Comp[3] = { "normal", "tangent1", "tangent2" }; - subRegion.registerField< contact::dispJump >( getName() ). - setDimLabels( 1, labels3Comp ). - reference().resizeDimension< 1 >( 3 ); - subRegion.registerField< contact::traction >( getName() ). - setDimLabels( 1, labels3Comp ). - reference().resizeDimension< 1 >( 3 ); - - subRegion.registerWrapper< string >( viewKeyStruct::frictionLawNameString() ). - setPlotLevel( PlotLevel::NOPLOT ). - setRestartFlags( RestartFlags::NO_WRITE ). - setSizedFromParent( 0 ); - - string & frictionLawName = subRegion.getReference< string >( viewKeyStruct::frictionLawNameString() ); - frictionLawName =PhysicsSolverBase::getConstitutiveName< FrictionBase >( subRegion ); - GEOS_ERROR_IF( frictionLawName.empty(), GEOS_FMT( "{}: FrictionBase model not found on subregion {}", - getDataContext(), subRegion.getDataContext() ) ); - } - } ); - } ); -} - -real64 QuasiDynamicEQ::solverStep( real64 const & time_n, - real64 const & dt, - int const cycleNumber, - DomainPartition & domain ) -{ - if( cycleNumber == 0 ) - { - /// Apply initial conditions to the Fault - FieldSpecificationManager & fieldSpecificationManager = FieldSpecificationManager::getInstance(); - - forDiscretizationOnMeshTargets( domain.getMeshBodies(), [&]( string const &, - MeshLevel & mesh, - arrayView1d< string const > const & ) - - { - fieldSpecificationManager.applyInitialConditions( mesh ); - } ); - } - - /// 1. Compute shear and normal tractions - GEOS_LOG_LEVEL_RANK_0( 1, "Stress solver" ); - - real64 const dtStress = updateStresses( time_n, dt, cycleNumber, domain ); - - /// 2. Solve for slip rate and state variable and, compute slip - GEOS_LOG_LEVEL_RANK_0( 1, "Rate and State solver" ); - - integer const maxNewtonIter = m_nonlinearSolverParameters.m_maxIterNewton; - forDiscretizationOnMeshTargets( domain.getMeshBodies(), [&]( string const &, - MeshLevel & mesh, - arrayView1d< string const > const & regionNames ) - - { - mesh.getElemManager().forElementSubRegions< SurfaceElementSubRegion >( regionNames, - [&]( localIndex const, - SurfaceElementSubRegion & subRegion ) - { - // solve rate and state equations. - rateAndStateKernels::createAndLaunch< parallelDevicePolicy<> >( subRegion, viewKeyStruct::frictionLawNameString(), m_shearImpedance, maxNewtonIter, time_n, dtStress ); - // save old state - saveOldStateAndUpdateSlip( subRegion, dtStress ); - } ); - } ); - - // return time step size achieved by stress solver - return dtStress; -} - -real64 QuasiDynamicEQ::updateStresses( real64 const & time_n, - real64 const & dt, - const int cycleNumber, - DomainPartition & domain ) const -{ - // Call member variable stress solver to update the stress state - if( m_stressSolver ) - { - // 1. Solve the momentum balance - real64 const dtStress = m_stressSolver->solverStep( time_n, dt, cycleNumber, domain ); - - return dtStress; - } - else - { - // Spring-slider shear traction computation - forDiscretizationOnMeshTargets( domain.getMeshBodies(), [&]( string const &, - MeshLevel & mesh, - arrayView1d< string const > const & regionNames ) - - { - mesh.getElemManager().forElementSubRegions< SurfaceElementSubRegion >( regionNames, - [&]( localIndex const, - SurfaceElementSubRegion & subRegion ) - { - - arrayView2d< real64 const > const deltaSlip = subRegion.getField< rateAndState::deltaSlip >(); - arrayView2d< real64 > const traction = subRegion.getField< fields::contact::traction >(); - - string const & fricitonLawName = subRegion.template getReference< string >( viewKeyStruct::frictionLawNameString() ); - RateAndStateFriction const & frictionLaw = getConstitutiveModel< RateAndStateFriction >( subRegion, fricitonLawName ); - - RateAndStateFriction::KernelWrapper frictionKernelWrapper = frictionLaw.createKernelUpdates(); - - forAll< parallelDevicePolicy<> >( subRegion.size(), [=] GEOS_HOST_DEVICE ( localIndex const k ) - { - SpringSliderParameters springSliderParameters = SpringSliderParameters( traction[k][0], - frictionKernelWrapper.getACoefficient( k ), - frictionKernelWrapper.getBCoefficient( k ), - frictionKernelWrapper.getDcCoefficient( k ) ); - - - traction[k][1] = traction[k][1] + springSliderParameters.tauRate * dt - - springSliderParameters.springStiffness * deltaSlip[k][0]; - traction[k][2] = traction[k][2] + springSliderParameters.tauRate * dt - - springSliderParameters.springStiffness * deltaSlip[k][1]; - } ); - } ); - } ); - return dt; - } -} - -void QuasiDynamicEQ::saveOldStateAndUpdateSlip( ElementSubRegionBase & subRegion, real64 const dt ) const -{ - arrayView1d< real64 > const stateVariable = subRegion.getField< rateAndState::stateVariable >(); - arrayView1d< real64 > const stateVariable_n = subRegion.getField< rateAndState::stateVariable_n >(); - arrayView2d< real64 > const slipVelocity = subRegion.getField< rateAndState::slipVelocity >(); - arrayView2d< real64 > const deltaSlip = subRegion.getField< rateAndState::deltaSlip >(); - - arrayView2d< real64 > const dispJump = subRegion.getField< contact::dispJump >(); - - forAll< parallelDevicePolicy<> >( subRegion.size(), [=] GEOS_HOST_DEVICE ( localIndex const k ) - { - stateVariable_n[k] = stateVariable[k]; - deltaSlip[k][0] = slipVelocity[k][0] * dt; - deltaSlip[k][1] = slipVelocity[k][1] * dt; - // Update tangential components of the displacement jump - dispJump[k][1] = dispJump[k][1] + slipVelocity[k][0] * dt; - dispJump[k][2] = dispJump[k][2] + slipVelocity[k][1] * dt; - } ); -} - -real64 QuasiDynamicEQ::setNextDt( real64 const & currentDt, DomainPartition & domain ) -{ - GEOS_UNUSED_VAR( currentDt ); - - real64 maxSlipRate = 0.0; - // Spring-slider shear traction computation - forDiscretizationOnMeshTargets( domain.getMeshBodies(), [&]( string const &, - MeshLevel const & mesh, - arrayView1d< string const > const & regionNames ) - - { - real64 maxSlipRateOnThisRank = 0.0; - mesh.getElemManager().forElementSubRegions< SurfaceElementSubRegion >( regionNames, - [&]( localIndex const, - SurfaceElementSubRegion const & subRegion ) - { - arrayView1d< real64 const > const slipRate = subRegion.getField< rateAndState::slipRate >(); - - RAJA::ReduceMax< parallelDeviceReduce, real64 > maximumSlipRateOnThisRegion( 0.0 ); - forAll< parallelDevicePolicy<> >( subRegion.size(), [=] GEOS_HOST_DEVICE ( localIndex const k ) - { - maximumSlipRateOnThisRegion.max( slipRate[k] ); - } ); - if( maximumSlipRateOnThisRegion.get() > maxSlipRateOnThisRank ) - maxSlipRateOnThisRank = maximumSlipRateOnThisRegion.get(); - } ); - maxSlipRate = MpiWrapper::max( maxSlipRateOnThisRank ); - } ); - - real64 const nextDt = m_targetSlipIncrement / maxSlipRate; - - GEOS_LOG_LEVEL_RANK_0( 1, GEOS_FMT( "The next dt will be {:.2e} s", nextDt )); - - return nextDt; -} - -REGISTER_CATALOG_ENTRY( PhysicsSolverBase, QuasiDynamicEQ, string const &, dataRepository::Group * const ) - -} // namespace geos diff --git a/src/coreComponents/physicsSolvers/inducedSeismicity/QuasiDynamicEQ.hpp b/src/coreComponents/physicsSolvers/inducedSeismicity/QuasiDynamicEQ.hpp deleted file mode 100644 index edff334c003..00000000000 --- a/src/coreComponents/physicsSolvers/inducedSeismicity/QuasiDynamicEQ.hpp +++ /dev/null @@ -1,135 +0,0 @@ -/* - * ------------------------------------------------------------------------------------------------------------ - * SPDX-License-Identifier: LGPL-2.1-only - * - * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A - * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University - * Copyright (c) 2023-2024 Chevron - * Copyright (c) 2019- GEOS/GEOSX Contributors - * All rights reserved - * - * See top level LICENSE, COPYRIGHT, CONTRIBUTORS, NOTICE, and ACKNOWLEDGEMENTS files for details. - * ------------------------------------------------------------------------------------------------------------ - */ - -#ifndef GEOS_PHYSICSSOLVERS_INDUCED_QUASIDYNAMICEQ_HPP -#define GEOS_PHYSICSSOLVERS_INDUCED_QUASIDYNAMICEQ_HPP - -#include "physicsSolvers/PhysicsSolverBase.hpp" - -namespace geos -{ - -class QuasiDynamicEQ : public PhysicsSolverBase -{ -public: - /// The default nullary constructor is disabled to avoid compiler auto-generation: - QuasiDynamicEQ() = delete; - - /// The constructor needs a user-defined "name" and a parent Group (to place this instance in the tree structure of classes) - QuasiDynamicEQ( const string & name, - Group * const parent ); - - /// Destructor - virtual ~QuasiDynamicEQ() override; - - static string catalogName() { return "QuasiDynamicEQ"; } - - /** - * @return Get the final class Catalog name - */ - virtual string getCatalogName() const override { return catalogName(); } - - /// This method ties properties with their supporting mesh - virtual void registerDataOnMesh( Group & meshBodies ) override; - - struct viewKeyStruct : public PhysicsSolverBase::viewKeyStruct - { - /// stress solver name - static constexpr char const * stressSolverNameString() { return "stressSolverName"; } - /// Friction law name string - constexpr static char const * frictionLawNameString() { return "frictionLawName"; } - /// Friction law name string - constexpr static char const * shearImpedanceString() { return "shearImpedance"; } - /// target slip increment - constexpr static char const * targetSlipIncrementString() { return "targetSlipIncrement"; } - }; - - virtual real64 solverStep( real64 const & time_n, - real64 const & dt, - integer const cycleNumber, - DomainPartition & domain ) override final; - - virtual real64 setNextDt( real64 const & currentDt, - DomainPartition & domain ) override final; - - real64 updateStresses( real64 const & time_n, - real64 const & dt, - const int cycleNumber, - DomainPartition & domain ) const; - - /** - * @brief save the old state - * @param subRegion - */ - void saveOldStateAndUpdateSlip( ElementSubRegionBase & subRegion, real64 const dt ) const; - - -private: - - - - virtual void postInputInitialization() override; - - - - /// pointer to stress solver - PhysicsSolverBase * m_stressSolver; - - /// stress solver name - string m_stressSolverName; - - /// shear impedance - real64 m_shearImpedance; - - /// target slip rate - real64 m_targetSlipIncrement; - - class SpringSliderParameters - { -public: - - GEOS_HOST_DEVICE - SpringSliderParameters( real64 const normalTraction, real64 const a, real64 const b, real64 const Dc ): - tauRate( 1e-4 ), - springStiffness( 0.0 ) - { - real64 const criticalStiffness = normalTraction * (b - a) / Dc; - springStiffness = 0.9 * criticalStiffness; - } - - /// Default copy constructor - SpringSliderParameters( SpringSliderParameters const & ) = default; - - /// Default move constructor - SpringSliderParameters( SpringSliderParameters && ) = default; - - /// Deleted default constructor - SpringSliderParameters() = delete; - - /// Deleted copy assignment operator - SpringSliderParameters & operator=( SpringSliderParameters const & ) = delete; - - /// Deleted move assignment operator - SpringSliderParameters & operator=( SpringSliderParameters && ) = delete; - - real64 tauRate; - - real64 springStiffness; - }; -}; - -} /* namespace geos */ - -#endif /* GEOS_PHYSICSSOLVERS_INDUCED_QUASIDYNAMICEQ_HPP */ diff --git a/src/coreComponents/physicsSolvers/inducedSeismicity/QuasiDynamicEarthQuake.cpp b/src/coreComponents/physicsSolvers/inducedSeismicity/QuasiDynamicEarthQuake.cpp new file mode 100644 index 00000000000..7c45b81a7a1 --- /dev/null +++ b/src/coreComponents/physicsSolvers/inducedSeismicity/QuasiDynamicEarthQuake.cpp @@ -0,0 +1,145 @@ +/* + * ------------------------------------------------------------------------------------------------------------ + * SPDX-License-Identifier: LGPL-2.1-only + * + * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC + * Copyright (c) 2018-2024 TotalEnergies + * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University + * Copyright (c) 2023-2024 Chevron + * Copyright (c) 2019- GEOS/GEOSX Contributors + * All rights reserved + * + * See top level LICENSE, COPYRIGHT, CONTRIBUTORS, NOTICE, and ACKNOWLEDGEMENTS files for details. + * ------------------------------------------------------------------------------------------------------------ + */ + +/** + * @file QuasiDynamicEarthQuake.cpp + */ + +#include "QuasiDynamicEarthQuake.hpp" + +#include "dataRepository/InputFlags.hpp" +#include "mesh/DomainPartition.hpp" +#include "rateAndStateFields.hpp" +#include "physicsSolvers/contact/ContactFields.hpp" +#include "fieldSpecification/FieldSpecificationManager.hpp" +#include "physicsSolvers/fluidFlow/FlowSolverBaseFields.hpp" + +#include "ExplicitQDRateAndState.hpp" + +namespace geos +{ + +using namespace dataRepository; +using namespace fields; +using namespace constitutive; +using namespace rateAndStateKernels; + +template< typename RSSOLVER_TYPE > +QuasiDynamicEarthQuake< RSSOLVER_TYPE >::QuasiDynamicEarthQuake( const string & name, + Group * const parent ): + RSSOLVER_TYPE( name, parent ), + m_stressSolverName(), + m_stressSolver( nullptr ) +{ + this->registerWrapper( viewKeyStruct::stressSolverNameString(), &m_stressSolverName ). + setInputFlag( InputFlags::REQUIRED ). + setDescription( "Name of solver for computing stress." ); +} + +template< typename RSSOLVER_TYPE > +void QuasiDynamicEarthQuake< RSSOLVER_TYPE >::postInputInitialization() +{ + + // Initialize member stress solver as specified in XML input + m_stressSolver = &this->getParent().template getGroup< PhysicsSolverBase >( m_stressSolverName ); + + PhysicsSolverBase::postInputInitialization(); +} + +template< typename RSSOLVER_TYPE > +QuasiDynamicEarthQuake< RSSOLVER_TYPE >::~QuasiDynamicEarthQuake() +{ + // TODO Auto-generated destructor stub +} + +template< typename RSSOLVER_TYPE > +real64 QuasiDynamicEarthQuake< RSSOLVER_TYPE >::updateStresses( real64 const & time_n, + real64 const & dt, + const int cycleNumber, + DomainPartition & domain ) const +{ + // 1. Setup variables for stress solver + setTargetDispJump( domain ); + + // 2. Solve the momentum balance + real64 const dtAccepted = m_stressSolver->solverStep( time_n, dt, cycleNumber, domain ); + + // 3. Add background stress and possible forcing. + this->forDiscretizationOnMeshTargets( domain.getMeshBodies(), [&]( string const &, + MeshLevel & mesh, + arrayView1d< string const > const & regionNames ) + { + mesh.getElemManager().forElementSubRegions< SurfaceElementSubRegion >( regionNames, + [&]( localIndex const, + SurfaceElementSubRegion & subRegion ) + { + arrayView2d< real64 const > const traction = subRegion.getField< contact::traction >(); + + arrayView2d< real64 > const shearTraction = subRegion.getField< rateAndState::shearTraction >(); + arrayView1d< real64 > const normalTraction = subRegion.getField< rateAndState::normalTraction >(); + + arrayView2d< real64 const > const backgroundShearStress = subRegion.getField< rateAndState::backgroundShearStress >(); + arrayView1d< real64 const > const backgroundNormalStress = subRegion.getField< rateAndState::backgroundNormalStress >(); + + forAll< parallelDevicePolicy<> >( subRegion.size(), [=] GEOS_HOST_DEVICE ( localIndex const k ) + { + normalTraction[k] = backgroundNormalStress[k] - traction[k][0]; // compressive traction is negative in geos + for( int i = 0; i < 2; ++i ) + { + shearTraction( k, i ) = backgroundShearStress( k, i ) + traction( k, i+1 ); + } + } ); + } ); + } ); + + return dtAccepted; +} + +template< typename RSSOLVER_TYPE > +void QuasiDynamicEarthQuake< RSSOLVER_TYPE >::setTargetDispJump( DomainPartition & domain ) const +{ + this->forDiscretizationOnMeshTargets( domain.getMeshBodies(), [&]( string const &, + MeshLevel & mesh, + arrayView1d< string const > const & regionNames ) + { + mesh.getElemManager().forElementSubRegions< SurfaceElementSubRegion >( regionNames, + [&]( localIndex const, + SurfaceElementSubRegion & subRegion ) + { + arrayView2d< real64 > const deltaSlip = subRegion.getField< contact::deltaSlip >(); + arrayView2d< real64 > const targetDispJump = subRegion.getField< contact::targetIncrementalJump >(); + + forAll< parallelDevicePolicy<> >( subRegion.size(), [=] GEOS_HOST_DEVICE ( localIndex const k ) + { + targetDispJump( k, 0 ) = 0.0; + targetDispJump( k, 1 ) = deltaSlip( k, 0 ); + targetDispJump( k, 2 ) = deltaSlip( k, 1 ); + } ); + } ); + } ); +} + +template class QuasiDynamicEarthQuake< ImplicitQDRateAndState >; +template class QuasiDynamicEarthQuake< ExplicitQDRateAndState >; + +namespace +{ +typedef QuasiDynamicEarthQuake< ImplicitQDRateAndState > ImplicitQuasiDynamicEarthQuake; +typedef QuasiDynamicEarthQuake< ExplicitQDRateAndState > ExplicitQuasiDynamicEarthQuake; +REGISTER_CATALOG_ENTRY( PhysicsSolverBase, ImplicitQuasiDynamicEarthQuake, string const &, dataRepository::Group * const ) +REGISTER_CATALOG_ENTRY( PhysicsSolverBase, ExplicitQuasiDynamicEarthQuake, string const &, dataRepository::Group * const ) +} + +} // namespace geos diff --git a/src/coreComponents/physicsSolvers/inducedSeismicity/QuasiDynamicEarthQuake.hpp b/src/coreComponents/physicsSolvers/inducedSeismicity/QuasiDynamicEarthQuake.hpp new file mode 100644 index 00000000000..728ec97ca3d --- /dev/null +++ b/src/coreComponents/physicsSolvers/inducedSeismicity/QuasiDynamicEarthQuake.hpp @@ -0,0 +1,72 @@ +/* + * ------------------------------------------------------------------------------------------------------------ + * SPDX-License-Identifier: LGPL-2.1-only + * + * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC + * Copyright (c) 2018-2024 TotalEnergies + * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University + * Copyright (c) 2023-2024 Chevron + * Copyright (c) 2019- GEOS/GEOSX Contributors + * All rights reserved + * + * See top level LICENSE, COPYRIGHT, CONTRIBUTORS, NOTICE, and ACKNOWLEDGEMENTS files for details. + * ------------------------------------------------------------------------------------------------------------ + */ + + +#ifndef GEOS_PHYSICSSOLVERS_INDUCED_QUASIDYNAMICEARTHQUAKE_HPP +#define GEOS_PHYSICSSOLVERS_INDUCED_QUASIDYNAMICEARTHQUAKE_HPP + +#include "ImplicitQDRateAndState.hpp" + +namespace geos +{ + +template< typename RSSOLVER_TYPE = ImplicitQDRateAndState > +class QuasiDynamicEarthQuake : public RSSOLVER_TYPE +{ +public: + + /// The default nullary constructor is disabled to avoid compiler auto-generation: + QuasiDynamicEarthQuake() = delete; + + /// The constructor needs a user-defined "name" and a parent Group (to place this instance in the tree structure of classes) + QuasiDynamicEarthQuake( const string & name, + dataRepository::Group * const parent ); + + /// Destructor + virtual ~QuasiDynamicEarthQuake() override; + + static string catalogName() { return RSSOLVER_TYPE::derivedSolverPrefix() + "QuasiDynamicEQ"; } + + /** + * @return Get the final class Catalog name + */ + virtual string getCatalogName() const override { return catalogName(); } + + struct viewKeyStruct : public RSSOLVER_TYPE::viewKeyStruct + { + /// stress solver name + static constexpr char const * stressSolverNameString() { return "stressSolverName"; } + }; + + void postInputInitialization() override final; + + void setTargetDispJump( DomainPartition & domain ) const; + + virtual real64 updateStresses( real64 const & time_n, + real64 const & dt, + const int cycleNumber, + DomainPartition & domain ) const override final; + +private: + + string m_stressSolverName; + + PhysicsSolverBase * m_stressSolver; + +}; + +} /* namespace geos */ + +#endif /* GEOS_PHYSICSSOLVERS_INDUCED_QUASIDYNAMICEQBASE_HPP */ diff --git a/src/coreComponents/physicsSolvers/inducedSeismicity/SeismicityRate.cpp b/src/coreComponents/physicsSolvers/inducedSeismicity/SeismicityRate.cpp index 2c7e663567f..8409180dfba 100644 --- a/src/coreComponents/physicsSolvers/inducedSeismicity/SeismicityRate.cpp +++ b/src/coreComponents/physicsSolvers/inducedSeismicity/SeismicityRate.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/inducedSeismicity/SeismicityRate.hpp b/src/coreComponents/physicsSolvers/inducedSeismicity/SeismicityRate.hpp index 722edd7e8c5..67cce07e74f 100644 --- a/src/coreComponents/physicsSolvers/inducedSeismicity/SeismicityRate.hpp +++ b/src/coreComponents/physicsSolvers/inducedSeismicity/SeismicityRate.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/inducedSeismicity/SpringSlider.cpp b/src/coreComponents/physicsSolvers/inducedSeismicity/SpringSlider.cpp new file mode 100644 index 00000000000..0c427304f9d --- /dev/null +++ b/src/coreComponents/physicsSolvers/inducedSeismicity/SpringSlider.cpp @@ -0,0 +1,158 @@ +/* + * ------------------------------------------------------------------------------------------------------------ + * SPDX-License-Identifier: LGPL-2.1-only + * + * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC + * Copyright (c) 2018-2024 TotalEnergies + * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University + * Copyright (c) 2023-2024 Chevron + * Copyright (c) 2019- GEOS/GEOSX Contributors + * All rights reserved + * + * See top level LICENSE, COPYRIGHT, CONTRIBUTORS, NOTICE, and ACKNOWLEDGEMENTS files for details. + * ------------------------------------------------------------------------------------------------------------ + */ + +/** + * @file SpringSlider.cpp + */ + +#include "SpringSlider.hpp" + +#include "dataRepository/InputFlags.hpp" +#include "mesh/DomainPartition.hpp" +#include "rateAndStateFields.hpp" +#include "physicsSolvers/contact/ContactFields.hpp" +#include "fieldSpecification/FieldSpecificationManager.hpp" +#include "constitutive/contact/RateAndStateFriction.hpp" +#include "ExplicitQDRateAndState.hpp" + +namespace geos +{ + +using namespace dataRepository; +using namespace fields; +using namespace constitutive; + +template< typename RSSOLVER_TYPE > +SpringSlider< RSSOLVER_TYPE >::SpringSlider( const string & name, + Group * const parent ): + RSSOLVER_TYPE( name, parent ) +{} + +template< typename RSSOLVER_TYPE > +SpringSlider< RSSOLVER_TYPE >::~SpringSlider() +{ + // TODO Auto-generated destructor stub +} + +template< typename RSSOLVER_TYPE > +void SpringSlider< RSSOLVER_TYPE >::registerDataOnMesh( Group & meshBodies ) +{ + RSSOLVER_TYPE::registerDataOnMesh( meshBodies ); + + this->forDiscretizationOnMeshTargets( meshBodies, [&] ( string const &, + MeshLevel & mesh, + arrayView1d< string const > const & regionNames ) + { + ElementRegionManager & elemManager = mesh.getElemManager(); + + elemManager.forElementSubRegions< SurfaceElementSubRegion >( regionNames, + [&]( localIndex const, + SurfaceElementSubRegion & subRegion ) + { + // 3-component functions on fault + string const labels3Comp[3] = { "normal", "tangent1", "tangent2" }; + subRegion.registerField< contact::dispJump >( this->getName() ). + setDimLabels( 1, labels3Comp ). + reference().template resizeDimension< 1 >( 3 ); + + subRegion.registerField< contact::dispJump_n >( this->getName() ). + setDimLabels( 1, labels3Comp ). + reference().template resizeDimension< 1 >( 3 ); + + string const labels2Comp[2] = { "tangent1", "tangent2" }; + + subRegion.registerField< contact::deltaSlip >( this->getName() ). + setDimLabels( 1, labels2Comp ). + reference().template resizeDimension< 1 >( 2 ); + + subRegion.registerField< contact::deltaSlip_n >( this->getName() ). + setDimLabels( 1, labels2Comp ). + reference().template resizeDimension< 1 >( 2 ); + + subRegion.registerWrapper< string >( viewKeyStruct::frictionLawNameString() ). + setPlotLevel( PlotLevel::NOPLOT ). + setRestartFlags( RestartFlags::NO_WRITE ). + setSizedFromParent( 0 ); + + string & frictionLawName = subRegion.getReference< string >( viewKeyStruct::frictionLawNameString() ); + frictionLawName =PhysicsSolverBase::getConstitutiveName< FrictionBase >( subRegion ); + GEOS_ERROR_IF( frictionLawName.empty(), GEOS_FMT( "{}: FrictionBase model not found on subregion {}", + this->getDataContext(), subRegion.getDataContext() ) ); + } ); + } ); +} + +template< typename RSSOLVER_TYPE > +real64 SpringSlider< RSSOLVER_TYPE >::updateStresses( real64 const & time_n, + real64 const & dt, + const int cycleNumber, + DomainPartition & domain ) const + +{ + GEOS_UNUSED_VAR( cycleNumber, time_n ); + // Spring-slider shear traction computation + this->forDiscretizationOnMeshTargets( domain.getMeshBodies(), [&]( string const &, + MeshLevel & mesh, + arrayView1d< string const > const & regionNames ) + + { + mesh.getElemManager().forElementSubRegions< SurfaceElementSubRegion >( regionNames, + [&]( localIndex const, + SurfaceElementSubRegion & subRegion ) + { + + arrayView2d< real64 const > const deltaSlip = subRegion.getField< fields::contact::deltaSlip >(); + arrayView2d< real64 > const shearTraction = subRegion.getField< fields::rateAndState::shearTraction >(); + arrayView2d< real64 > const shearTraction_n = subRegion.getField< fields::rateAndState::shearTraction_n >(); + + arrayView1d< real64 > const normalTraction = subRegion.getField< fields::rateAndState::normalTraction >(); + + + string const & fricitonLawName = subRegion.template getReference< string >( viewKeyStruct::frictionLawNameString() ); + RateAndStateFriction const & frictionLaw = this->template getConstitutiveModel< RateAndStateFriction >( subRegion, fricitonLawName ); + + RateAndStateFriction::KernelWrapper frictionKernelWrapper = frictionLaw.createKernelUpdates(); + + forAll< parallelDevicePolicy<> >( subRegion.size(), [=] GEOS_HOST_DEVICE ( localIndex const k ) + { + SpringSliderParameters springSliderParameters = SpringSliderParameters( normalTraction[k], + frictionKernelWrapper.getACoefficient( k ), + frictionKernelWrapper.getBCoefficient( k ), + frictionKernelWrapper.getDcCoefficient( k ) ); + + + + shearTraction[k][0] = shearTraction_n[k][0] + springSliderParameters.tauRate * dt + - springSliderParameters.springStiffness * deltaSlip[k][0]; + shearTraction[k][1] = shearTraction_n[k][1] + springSliderParameters.tauRate * dt + - springSliderParameters.springStiffness * deltaSlip[k][1]; + } ); + } ); + } ); + return dt; +} + +template class SpringSlider< ImplicitQDRateAndState >; +template class SpringSlider< ExplicitQDRateAndState >; + +namespace +{ +typedef SpringSlider< ImplicitQDRateAndState > ImplicitSpringSlider; +typedef SpringSlider< ExplicitQDRateAndState > ExplicitSpringSlider; +REGISTER_CATALOG_ENTRY( PhysicsSolverBase, ImplicitSpringSlider, string const &, dataRepository::Group * const ) +REGISTER_CATALOG_ENTRY( PhysicsSolverBase, ExplicitSpringSlider, string const &, dataRepository::Group * const ) +} + +} // namespace geos diff --git a/src/coreComponents/physicsSolvers/inducedSeismicity/SpringSlider.hpp b/src/coreComponents/physicsSolvers/inducedSeismicity/SpringSlider.hpp new file mode 100644 index 00000000000..08c9a829c7e --- /dev/null +++ b/src/coreComponents/physicsSolvers/inducedSeismicity/SpringSlider.hpp @@ -0,0 +1,91 @@ +/* + * ------------------------------------------------------------------------------------------------------------ + * SPDX-License-Identifier: LGPL-2.1-only + * + * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC + * Copyright (c) 2018-2024 TotalEnergies + * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University + * Copyright (c) 2023-2024 Chevron + * Copyright (c) 2019- GEOS/GEOSX Contributors + * All rights reserved + * + * See top level LICENSE, COPYRIGHT, CONTRIBUTORS, NOTICE, and ACKNOWLEDGEMENTS files for details. + * ------------------------------------------------------------------------------------------------------------ + */ + + + +#ifndef GEOS_PHYSICSSOLVERS_INDUCEDSEISMICITY_SPRINGSLIDER_HPP +#define GEOS_PHYSICSSOLVERS_INDUCEDSEISMICITY_SPRINGSLIDER_HPP + +#include "physicsSolvers/inducedSeismicity/ImplicitQDRateAndState.hpp" + +namespace geos +{ + +template< typename RSSOLVER_TYPE = ImplicitQDRateAndState > +class SpringSlider : public RSSOLVER_TYPE +{ +public: + + SpringSlider() = delete; + + SpringSlider( const string & name, + dataRepository::Group * const parent ); + + /// Destructor + virtual ~SpringSlider() override; + + static string catalogName() { return RSSOLVER_TYPE::derivedSolverPrefix() + "SpringSlider"; } + + virtual string getCatalogName() const override { return catalogName(); } + + virtual void registerDataOnMesh( dataRepository::Group & meshBodies ) override; + + struct viewKeyStruct : public RSSOLVER_TYPE::viewKeyStruct + {}; + + virtual real64 updateStresses( real64 const & time_n, + real64 const & dt, + const int cycleNumber, + DomainPartition & domain ) const override final; + +private: + + class SpringSliderParameters + { +public: + + GEOS_HOST_DEVICE + SpringSliderParameters( real64 const normalTraction, real64 const a, real64 const b, real64 const Dc ): + tauRate( 1e-4 ), + springStiffness( 0.0 ) + { + real64 const criticalStiffness = normalTraction * (b - a) / Dc; + springStiffness = 0.9 * criticalStiffness; + } + + /// Default copy constructor + SpringSliderParameters( SpringSliderParameters const & ) = default; + + /// Default move constructor + SpringSliderParameters( SpringSliderParameters && ) = default; + + /// Deleted default constructor + SpringSliderParameters() = delete; + + /// Deleted copy assignment operator + SpringSliderParameters & operator=( SpringSliderParameters const & ) = delete; + + /// Deleted move assignment operator + SpringSliderParameters & operator=( SpringSliderParameters && ) = delete; + + real64 tauRate; + + real64 springStiffness; + }; +}; + +} /* namespace geos */ + +#endif /* GEOS_PHYSICSSOLVERS_INDUCEDSEISMICITY_SPRINGSLIDER_HPP */ diff --git a/src/coreComponents/physicsSolvers/inducedSeismicity/inducedSeismicityFields.hpp b/src/coreComponents/physicsSolvers/inducedSeismicity/inducedSeismicityFields.hpp index 370951e101a..ac9af24c68b 100644 --- a/src/coreComponents/physicsSolvers/inducedSeismicity/inducedSeismicityFields.hpp +++ b/src/coreComponents/physicsSolvers/inducedSeismicity/inducedSeismicityFields.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/inducedSeismicity/kernels/ExplicitRateAndStateKernels.hpp b/src/coreComponents/physicsSolvers/inducedSeismicity/kernels/ExplicitRateAndStateKernels.hpp new file mode 100644 index 00000000000..baf0ee6b06b --- /dev/null +++ b/src/coreComponents/physicsSolvers/inducedSeismicity/kernels/ExplicitRateAndStateKernels.hpp @@ -0,0 +1,427 @@ +/* + * ------------------------------------------------------------------------------------------------------------ + * SPDX-License-Identifier: LGPL-2.1-only + * + * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC + * Copyright (c) 2018-2024 TotalEnergies + * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University + * Copyright (c) 2018-2024 Chevron + * Copyright (c) 2019- GEOS/GEOSX Contributors + * All rights reserved + * + * See top level LICENSE, COPYRIGHT, CONTRIBUTORS, NOTICE, and ACKNOWLEDGEMENTS files for details. + * ------------------------------------------------------------------------------------------------------------ + */ + +#ifndef GEOS_PHYSICSSOLVERS_INDUCEDSEISMICITY_KERNELS_EXPLICITRATEANDSTATEKERNELS_HPP_ +#define GEOS_PHYSICSSOLVERS_INDUCEDSEISMICITY_KERNELS_EXPLICITRATEANDSTATEKERNELS_HPP_ + +#include "RateAndStateKernelsBase.hpp" +#include "denseLinearAlgebra/denseLASolvers.hpp" + +namespace geos +{ + +namespace rateAndStateKernels +{ + +/** + * @class ExplicitRateAndStateKernel + * + * @brief + * + * @details + */ +class ExplicitRateAndStateKernel +{ +public: + + ExplicitRateAndStateKernel( SurfaceElementSubRegion & subRegion, + constitutive::RateAndStateFriction const & frictionLaw, + real64 const shearImpedance ): + m_slipRate( subRegion.getField< fields::rateAndState::slipRate >() ), + m_stateVariable( subRegion.getField< fields::rateAndState::stateVariable >() ), + m_normalTraction( subRegion.getField< fields::rateAndState::normalTraction >() ), + m_shearTraction( subRegion.getField< fields::rateAndState::shearTraction >() ), + m_slipVelocity( subRegion.getField< fields::rateAndState::slipVelocity >() ), + m_shearImpedance( shearImpedance ), + m_frictionLaw( frictionLaw.createKernelUpdates() ) + {} + + /** + * @struct StackVariables + * @brief Kernel variables located on the stack + */ + struct StackVariables + { +public: + + StackVariables() = default; + + real64 jacobian{}; + real64 rhs{}; + + }; + + GEOS_HOST_DEVICE + void setup( localIndex const k, + real64 const dt, + StackVariables & stack ) const + { + GEOS_UNUSED_VAR( dt ); + real64 const normalTraction = m_normalTraction[k]; + real64 const shearTractionMagnitude = LvArray::tensorOps::l2Norm< 2 >( m_shearTraction[k] ); + + // Slip rate is bracketed between [0, shear traction magnitude / shear impedance] + // If slip rate is outside the bracket, re-initialize to the middle value + real64 const upperBound = shearTractionMagnitude/m_shearImpedance; + real64 const bracketedSlipRate = m_slipRate[k] > upperBound ? 0.5*upperBound : m_slipRate[k]; + + stack.rhs = shearTractionMagnitude - m_shearImpedance *bracketedSlipRate - normalTraction * m_frictionLaw.frictionCoefficient( k, bracketedSlipRate, m_stateVariable[k] ); + stack.jacobian = -m_shearImpedance - normalTraction * m_frictionLaw.dFrictionCoefficient_dSlipRate( k, bracketedSlipRate, m_stateVariable[k] ); + } + + GEOS_HOST_DEVICE + void solve( localIndex const k, + StackVariables & stack ) const + { + m_slipRate[k] -= stack.rhs/stack.jacobian; + + // Slip rate is bracketed between [0, shear traction magnitude / shear impedance] + // Check that the update did not end outside of the bracket. + real64 const shearTractionMagnitude = LvArray::tensorOps::l2Norm< 2 >( m_shearTraction[k] ); + real64 const upperBound = shearTractionMagnitude/m_shearImpedance; + if( m_slipRate[k] > upperBound ) m_slipRate[k] = 0.5*upperBound; + + } + + + GEOS_HOST_DEVICE + camp::tuple< int, real64 > checkConvergence( StackVariables const & stack, + real64 const tol ) const + { + real64 const residualNorm = LvArray::math::abs( stack.rhs ); + int const converged = residualNorm < tol ? 1 : 0; + camp::tuple< int, real64 > result { converged, residualNorm }; + return result; + } + + GEOS_HOST_DEVICE + void projectSlipRate( localIndex const k ) const + { + real64 const frictionCoefficient = m_frictionLaw.frictionCoefficient( k, m_slipRate[k], m_stateVariable[k] ); + projectSlipRateBase( k, frictionCoefficient, m_shearImpedance, m_normalTraction, m_shearTraction, m_slipRate, m_slipVelocity ); + } + + GEOS_HOST_DEVICE + void udpateVariables( localIndex const k ) const + { + projectSlipRate( k ); + } + + GEOS_HOST_DEVICE + void resetState( localIndex const k ) const + { + GEOS_UNUSED_VAR( k ); + } + + /** + * @brief Performs the kernel launch + * @tparam KernelType The Rate-and-state kernel to launch + * @tparam POLICY the policy used in the RAJA kernels + */ + template< typename POLICY > + static real64 + solveRateAndStateEquation( SurfaceElementSubRegion & subRegion, + ExplicitRateAndStateKernel & kernel, + real64 dt, + integer const maxNewtonIter, + real64 const newtonTol ) + { + GEOS_MARK_FUNCTION; + + newtonSolve< POLICY >( subRegion, kernel, dt, maxNewtonIter, newtonTol ); + + forAll< POLICY >( subRegion.size(), [=] GEOS_HOST_DEVICE ( localIndex const k ) + { + kernel.projectSlipRate( k ); + } ); + return dt; + } + +private: + + arrayView1d< real64 > const m_slipRate; + + arrayView1d< real64 > const m_stateVariable; + + arrayView1d< real64 const > const m_normalTraction; + + arrayView2d< real64 const > const m_shearTraction; + + arrayView2d< real64 > const m_slipVelocity; + + real64 const m_shearImpedance; + + constitutive::RateAndStateFriction::KernelWrapper m_frictionLaw; + +}; + +/** + * @brief Butcher table for embedded RK3(2) method using Kuttas third order + * method for the high-order update, and an explicit trapezoidal rule + * based on the first and third stage rates for the low-order update. + */ +struct Kutta32Table +{ + integer constexpr static algHighOrder = 3; // High-order update order + integer constexpr static algLowOrder = 2; // Low-order update order + integer constexpr static numStages = 3; // Number of stages + real64 const a[2][2] = { { 1.0/2.0, 0.0 }, // Coefficients for stage value updates + { -1.0, 2.0 } }; // (lower-triangular part of table). + real64 const c[3] = { 0.0, 1.0/2.0, 1.0 }; // Coefficients for time increments of substages + real64 const b[3] = { 1.0/6.0, 4.0/6.0, 1.0/6.0 }; // Quadrature weights used to step the solution to next time + real64 const bStar[3] = { 1.0/2.0, 0.0, 1.0/2.0 }; // Quadrature weights used for low-order comparision solution + real64 constexpr static FSAL = false; // Not first same as last +}; + +/** + * @brief Butcher table for the BogackiShampine 3(2) method. + */ +struct BogackiShampine32Table +{ + integer constexpr static algHighOrder = 3; // High-order update order + integer constexpr static algLowOrder = 2; // Low-order update order + integer constexpr static numStages = 4; // Number of stages + real64 const a[3][3] = { { 1.0/2.0, 0.0, 0.0 }, // Coefficients for stage value updates + { 0.0, 3.0/4.0, 0.0 }, // (lower-triangular part of table). + { 2.0/9.0, 1.0/3.0, 4.0/9.0 } }; + real64 const c[4] = { 0.0, 1.0/2.0, 3.0/4.0, 1.0 }; // Coefficients for time increments of substages + real64 const b[4] = { 2.0/9.0, 1.0/3.0, 4.0/9.0, 0.0 }; // Quadrature weights used to step the solution to next time + real64 const bStar[4] = { 7.0/24.0, 1.0/4.0, 1.0/3.0, 1.0/8.0}; // Quadrature weights used for low-order comparision solution + bool constexpr static FSAL = true; // First same as last (can reuse the last stage rate in next + // update) +}; + +/** + * @brief Runge-Kutta method used to time integrate slip and state. Uses of a high order + * update used to integrate the solutions, and a lower order update to estimate the error + * in the time step. + * + * @tparam Butcher table defining the Runge-Kutta method. + */ +template< typename TABLE_TYPE > +class EmbeddedRungeKuttaKernel +{ + +public: + EmbeddedRungeKuttaKernel( SurfaceElementSubRegion & subRegion, + constitutive::RateAndStateFriction const & frictionLaw, + TABLE_TYPE butcherTable ): + m_stateVariable( subRegion.getField< fields::rateAndState::stateVariable >() ), + m_stateVariable_n( subRegion.getField< fields::rateAndState::stateVariable_n >() ), + m_slipRate( subRegion.getField< fields::rateAndState::slipRate >() ), + m_slipVelocity( subRegion.getField< fields::rateAndState::slipVelocity >() ), + m_slipVelocity_n( subRegion.getField< fields::rateAndState::slipVelocity_n >() ), + m_deltaSlip( subRegion.getField< fields::contact::deltaSlip >() ), + m_deltaSlip_n( subRegion.getField< fields::contact::deltaSlip_n >() ), + m_dispJump( subRegion.getField< fields::contact::dispJump >() ), + m_dispJump_n( subRegion.getField< fields::contact::dispJump_n >() ), + m_error( subRegion.getField< fields::rateAndState::error >() ), + m_stageRates( subRegion.getField< fields::rateAndState::rungeKuttaStageRates >() ), + m_frictionLaw( frictionLaw.createKernelUpdates() ), + m_butcherTable( butcherTable ) + {} + + /** + * @brief Initialize slip and state buffers + */ + GEOS_HOST_DEVICE + void initialize( localIndex const k ) const + { + LvArray::tensorOps::copy< 2 >( m_slipVelocity[k], m_slipVelocity_n[k] ); + m_slipRate[k] = LvArray::tensorOps::l2Norm< 2 >( m_slipVelocity_n[k] ); + m_stateVariable[k] = m_stateVariable_n[k]; + } + + /** + * @brief Re-uses the last stage rate from the previous time step as the first + * in the next update. Only valid for FSAL (first-same-as-last) Runge-Kutta methods. + */ + GEOS_HOST_DEVICE + void updateStageRatesFSAL( localIndex const k ) const + { + LvArray::tensorOps::copy< 3 >( m_stageRates[k][0], m_stageRates[k][m_butcherTable.numStages-1] ); + } + + /** + * @brief Updates the stage rates rates (the right-hand-side of the ODEs for slip and state) + */ + GEOS_HOST_DEVICE + void updateStageRates( localIndex const k, integer const stageIndex ) const + { + m_stageRates[k][stageIndex][0] = m_slipVelocity[k][0]; + m_stageRates[k][stageIndex][1] = m_slipVelocity[k][1]; + m_stageRates[k][stageIndex][2] = m_frictionLaw.stateEvolution( k, m_slipRate[k], m_stateVariable[k] ); + } + + /** + * @brief Update stage values (slip, state and displacement jump) to a Runge-Kutta substage. + */ + GEOS_HOST_DEVICE + void updateStageValues( localIndex const k, integer const stageIndex, real64 const dt ) const + { + + real64 stateVariableIncrement = 0.0; + real64 deltaSlipIncrement[2] = {0.0, 0.0}; + + for( integer i = 0; i < stageIndex; i++ ) + { + deltaSlipIncrement[0] += m_butcherTable.a[stageIndex-1][i] * m_stageRates[k][i][0]; + deltaSlipIncrement[1] += m_butcherTable.a[stageIndex-1][i] * m_stageRates[k][i][1]; + stateVariableIncrement += m_butcherTable.a[stageIndex-1][i] * m_stageRates[k][i][2]; + } + m_deltaSlip[k][0] = m_deltaSlip_n[k][0] + dt*deltaSlipIncrement[0]; + m_deltaSlip[k][1] = m_deltaSlip_n[k][1] + dt*deltaSlipIncrement[1]; + m_stateVariable[k] = m_stateVariable_n[k] + dt*stateVariableIncrement; + + m_dispJump[k][1] = m_dispJump_n[k][1] + m_deltaSlip[k][0]; + m_dispJump[k][2] = m_dispJump_n[k][2] + m_deltaSlip[k][1]; + } + + /** + * @brief Updates slip, state and displacement jump to the next time computes error the local error + * in the time step + */ + GEOS_HOST_DEVICE + void updateSolutionAndLocalError( localIndex const k, real64 const dt, real64 const absTol, real64 const relTol ) const + { + + real64 deltaSlipIncrement[2] = {0.0, 0.0}; + real64 deltaSlipIncrementLowOrder[2] = {0.0, 0.0}; + + real64 stateVariableIncrement = 0.0; + real64 stateVariableIncrementLowOrder = 0.0; + + for( localIndex i = 0; i < m_butcherTable.numStages; i++ ) + { + + // High order update of solution + deltaSlipIncrement[0] += m_butcherTable.b[i] * m_stageRates[k][i][0]; + deltaSlipIncrement[1] += m_butcherTable.b[i] * m_stageRates[k][i][1]; + stateVariableIncrement += m_butcherTable.b[i] * m_stageRates[k][i][2]; + + // Low order update for error + deltaSlipIncrementLowOrder[0] += m_butcherTable.bStar[i] * m_stageRates[k][i][0]; + deltaSlipIncrementLowOrder[1] += m_butcherTable.bStar[i] * m_stageRates[k][i][1]; + stateVariableIncrementLowOrder += m_butcherTable.bStar[i] * m_stageRates[k][i][2]; + } + + m_deltaSlip[k][0] = m_deltaSlip_n[k][0] + dt * deltaSlipIncrement[0]; + m_deltaSlip[k][1] = m_deltaSlip_n[k][1] + dt * deltaSlipIncrement[1]; + m_stateVariable[k] = m_stateVariable_n[k] + dt * stateVariableIncrement; + + real64 const deltaSlipLowOrder[2] = {m_deltaSlip_n[k][0] + dt * deltaSlipIncrementLowOrder[0], + m_deltaSlip_n[k][1] + dt * deltaSlipIncrementLowOrder[1]}; + real64 const stateVariableLowOrder = m_stateVariable_n[k] + dt * stateVariableIncrementLowOrder; + + m_dispJump[k][1] = m_dispJump_n[k][1] + m_deltaSlip[k][0]; + m_dispJump[k][2] = m_dispJump_n[k][2] + m_deltaSlip[k][1]; + + // Compute error + m_error[k][0] = computeError( m_deltaSlip[k][0], deltaSlipLowOrder[0], absTol, relTol ); + m_error[k][1] = computeError( m_deltaSlip[k][1], deltaSlipLowOrder[1], absTol, relTol ); + m_error[k][2] = computeError( m_stateVariable[k], stateVariableLowOrder, absTol, relTol ); + } + + /** + * @brief Updates slip, state and displacement jump to the next time computes error the local error + * in the time step. Uses the FSAL (first-same-as-last) property. + */ + GEOS_HOST_DEVICE + void updateSolutionAndLocalErrorFSAL( localIndex const k, real64 const dt, real64 const absTol, real64 const relTol ) const + { + + real64 deltaSlipIncrementLowOrder[2] = {0.0, 0.0}; + real64 stateVariableIncrementLowOrder = 0.0; + + for( localIndex i = 0; i < m_butcherTable.numStages; i++ ) + { + // In FSAL algorithms the last RK substage update coincides with the + // high-order update. Only need to compute increments for the the + // low-order updates for error computation. + deltaSlipIncrementLowOrder[0] += m_butcherTable.bStar[i] * m_stageRates[k][i][0]; + deltaSlipIncrementLowOrder[1] += m_butcherTable.bStar[i] * m_stageRates[k][i][1]; + stateVariableIncrementLowOrder += m_butcherTable.bStar[i] * m_stageRates[k][i][2]; + } + + real64 const deltaSlipLowOrder[2] = {m_deltaSlip_n[k][0] + dt * deltaSlipIncrementLowOrder[0], + m_deltaSlip_n[k][1] + dt * deltaSlipIncrementLowOrder[1]}; + real64 const stateVariableLowOrder = m_stateVariable_n[k] + dt * stateVariableIncrementLowOrder; + + m_dispJump[k][1] = m_dispJump_n[k][1] + m_deltaSlip[k][0]; + m_dispJump[k][2] = m_dispJump_n[k][2] + m_deltaSlip[k][1]; + + // Compute error + m_error[k][0] = computeError( m_deltaSlip[k][0], deltaSlipLowOrder[0], absTol, relTol ); + m_error[k][1] = computeError( m_deltaSlip[k][1], deltaSlipLowOrder[1], absTol, relTol ); + m_error[k][2] = computeError( m_stateVariable[k], stateVariableLowOrder, absTol, relTol ); + } + + /** + * @brief Computes the relative error scaled by error tolerances + */ + GEOS_HOST_DEVICE + real64 computeError( real64 const highOrderApprox, real64 const lowOrderApprox, real64 const absTol, real64 const relTol ) const + { + return (highOrderApprox - lowOrderApprox) / + ( absTol + relTol * LvArray::math::max( LvArray::math::abs( highOrderApprox ), LvArray::math::abs( lowOrderApprox ) )); + } + +private: + + /// Current state variable + arrayView1d< real64 > const m_stateVariable; + + /// State variable at t = t_n + arrayView1d< real64 > const m_stateVariable_n; + + /// Current slip rate (magnitude of slip velocity) + arrayView1d< real64 > const m_slipRate; + + /// Current slip velocity + arrayView2d< real64 > const m_slipVelocity; + + /// Slip velocity at time t_n + arrayView2d< real64 > const m_slipVelocity_n; + + /// Current slip change + arrayView2d< real64 > const m_deltaSlip; + + /// Slip change at time t_n + arrayView2d< real64 > const m_deltaSlip_n; + + /// Current displacment jump + arrayView2d< real64 > const m_dispJump; + + /// Displacment jump at time t_n + arrayView2d< real64 > const m_dispJump_n; + + /// Local error for each solution component stored as slip1, slip2, state + arrayView2d< real64 > const m_error; + + /// Stage rates for each solution component stored as slip1, slip2, state + arrayView3d< real64 > const m_stageRates; + + /// Friction law used for rate-and-state updates + constitutive::RateAndStateFriction::KernelWrapper m_frictionLaw; + + /// Butcher table used for explicit time stepping of slip and state + TABLE_TYPE m_butcherTable; +}; + +} /* namespace rateAndStateKernels */ + +} /* namespace geos */ + +#endif /* GEOS_PHYSICSSOLVERS_INDUCEDSEISMICITY_KERNELS_EXPLICITRATEANDSTATEKERNELS_HPP_ */ diff --git a/src/coreComponents/physicsSolvers/inducedSeismicity/kernels/ImplicitRateAndStateKernels.hpp b/src/coreComponents/physicsSolvers/inducedSeismicity/kernels/ImplicitRateAndStateKernels.hpp new file mode 100644 index 00000000000..8ff3951f299 --- /dev/null +++ b/src/coreComponents/physicsSolvers/inducedSeismicity/kernels/ImplicitRateAndStateKernels.hpp @@ -0,0 +1,225 @@ +/* + * ------------------------------------------------------------------------------------------------------------ + * SPDX-License-Identifier: LGPL-2.1-only + * + * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC + * Copyright (c) 2018-2024 TotalEnergies + * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University + * Copyright (c) 2018-2024 Chevron + * Copyright (c) 2019- GEOS/GEOSX Contributors + * All rights reserved + * + * See top level LICENSE, COPYRIGHT, CONTRIBUTORS, NOTICE, and ACKNOWLEDGEMENTS files for details. + * ------------------------------------------------------------------------------------------------------------ + */ + +#ifndef GEOS_PHYSICSSOLVERS_INDUCEDSEISMICITY_KERNELS_IMPLICITRATEANDSTATEKERNELS_HPP_ +#define GEOS_PHYSICSSOLVERS_INDUCEDSEISMICITY_KERNELS_IMPLICITRATEANDSTATEKERNELS_HPP_ + +#include "RateAndStateKernelsBase.hpp" +#include "denseLinearAlgebra/denseLASolvers.hpp" + +namespace geos +{ + +namespace rateAndStateKernels +{ + +/** + * @class ImplicitFixedStressRateAndStateKernel + * + * @brief + * + * @details + */ +class ImplicitFixedStressRateAndStateKernel +{ +public: + + ImplicitFixedStressRateAndStateKernel( SurfaceElementSubRegion & subRegion, + constitutive::RateAndStateFriction const & frictionLaw, + real64 const shearImpedance ): + m_slipRate( subRegion.getField< fields::rateAndState::slipRate >() ), + m_stateVariable( subRegion.getField< fields::rateAndState::stateVariable >() ), + m_stateVariable_n( subRegion.getField< fields::rateAndState::stateVariable_n >() ), + m_slipRate_n( subRegion.getField< fields::rateAndState::slipRate_n >() ), + m_normalTraction( subRegion.getField< fields::rateAndState::normalTraction >() ), + m_shearTraction( subRegion.getField< fields::rateAndState::shearTraction >() ), + m_slipVelocity( subRegion.getField< fields::rateAndState::slipVelocity >() ), + m_shearImpedance( shearImpedance ), + m_frictionLaw( frictionLaw.createKernelUpdates() ) + {} + + /** + * @struct StackVariables + * @brief Kernel variables located on the stack + */ + struct StackVariables + { +public: + + StackVariables( ) = default; + + real64 jacobian[2][2]{}; + + real64 rhs[2]{}; + + }; + + GEOS_HOST_DEVICE + void setup( localIndex const k, + real64 const dt, + StackVariables & stack ) const + { + real64 const normalTraction = m_normalTraction[k]; + real64 const shearTractionMagnitude = LvArray::tensorOps::l2Norm< 2 >( m_shearTraction[k] ); + + // Eq 1: Scalar force balance for slipRate and shear traction magnitude + stack.rhs[0] = shearTractionMagnitude - m_shearImpedance * m_slipRate[k] + - normalTraction * m_frictionLaw.frictionCoefficient( k, m_slipRate[k], m_stateVariable[k] ); + real64 const dFriction[2] = { -normalTraction * m_frictionLaw.dFrictionCoefficient_dStateVariable( k, m_slipRate[k], m_stateVariable[k] ), + -m_shearImpedance - normalTraction * m_frictionLaw.dFrictionCoefficient_dSlipRate( k, m_slipRate[k], m_stateVariable[k] ) }; + + // Eq 2: slip law + stack.rhs[1] = (m_stateVariable[k] - m_stateVariable_n[k]) / dt - m_frictionLaw.stateEvolution( k, m_slipRate[k], m_stateVariable[k] ); + real64 const dStateEvolutionLaw[2] = { 1.0 / dt - m_frictionLaw.dStateEvolution_dStateVariable( k, m_slipRate[k], m_stateVariable[k] ), + -m_frictionLaw.dStateEvolution_dSlipRate( k, m_slipRate[k], m_stateVariable[k] ) }; + + // Assemble Jacobian matrix + stack.jacobian[0][0] = dFriction[0]; // derivative of Eq 1 w.r.t. stateVariable + stack.jacobian[0][1] = dFriction[1]; // derivative of Eq 1 w.r.t. slipRate + stack.jacobian[1][0] = dStateEvolutionLaw[0]; // derivative of Eq 2 w.r.t. stateVariable + stack.jacobian[1][1] = dStateEvolutionLaw[1]; // derivative of Eq 2 w.r.t. slipRate + } + + GEOS_HOST_DEVICE + void solve( localIndex const k, + StackVariables & stack ) const + { + /// Solve 2x2 system + real64 solution[2] = {0.0, 0.0}; + LvArray::tensorOps::scale< 2 >( stack.rhs, -1.0 ); + denseLinearAlgebra::solve< 2 >( stack.jacobian, stack.rhs, solution ); + + // Slip rate is bracketed between [0, shear traction magnitude / shear impedance] + // Check that the update did not end outside of the bracket. + real64 const shearTractionMagnitude = LvArray::tensorOps::l2Norm< 2 >( m_shearTraction[k] ); + real64 const upperBound = shearTractionMagnitude / m_shearImpedance - m_slipRate[k]; + real64 const lowerBound = -m_slipRate[k]; + + real64 scalingFactor = 1.0; + if( solution[1] > upperBound ) + { + scalingFactor = 0.5 * upperBound / solution[1]; + } + else if( solution[1] < lowerBound ) + { + scalingFactor = 0.5 * lowerBound / solution[1]; + } + + LvArray::tensorOps::scale< 2 >( solution, scalingFactor ); + + // Update variables + m_stateVariable[k] += solution[0]; + m_slipRate[k] += solution[1]; + } + + GEOS_HOST_DEVICE + void projectSlipRate( localIndex const k ) const + { + real64 const frictionCoefficient = m_frictionLaw.frictionCoefficient( k, m_slipRate[k], m_stateVariable[k] ); + projectSlipRateBase( k, frictionCoefficient, m_shearImpedance, m_normalTraction, m_shearTraction, m_slipRate, m_slipVelocity ); + } + + GEOS_HOST_DEVICE + void udpateVariables( localIndex const k ) const + { + projectSlipRate( k ); + m_stateVariable_n[k] = m_stateVariable[k]; + m_slipRate_n[k] = m_slipRate[k]; + } + + GEOS_HOST_DEVICE + camp::tuple< int, real64 > checkConvergence( StackVariables const & stack, + real64 const tol ) const + { + real64 const residualNorm = LvArray::tensorOps::l2Norm< 2 >( stack.rhs ); + int const converged = residualNorm < tol ? 1 : 0; + camp::tuple< int, real64 > result { converged, residualNorm }; + return result; + } + + GEOS_HOST_DEVICE + void resetState( localIndex const k ) const + { + m_stateVariable[k] = m_stateVariable_n[k]; + m_slipRate[k] = m_slipRate_n[k]; + } + + template< typename POLICY > + static real64 solveRateAndStateEquation( SurfaceElementSubRegion & subRegion, + ImplicitFixedStressRateAndStateKernel & kernel, + real64 dt, + integer const maxNewtonIter, + real64 const newtonTol ) + { + bool converged = false; + for( integer attempt = 0; attempt < 5; attempt++ ) + { + if( attempt > 0 ) + { + forAll< POLICY >( subRegion.size(), [=] GEOS_HOST_DEVICE ( localIndex const k ) + { + kernel.resetState( k ); + } ); + } + GEOS_LOG_RANK_0( GEOS_FMT( " Attempt {} ", attempt ) ); + converged = newtonSolve< POLICY >( subRegion, kernel, dt, maxNewtonIter, newtonTol ); + if( converged ) + { + forAll< POLICY >( subRegion.size(), [=] GEOS_HOST_DEVICE ( localIndex const k ) + { + kernel.udpateVariables( k ); + } ); + return dt; + } + else + { + GEOS_LOG_RANK_0( GEOS_FMT( " Attempt {} failed. Halving dt and retrying.", attempt ) ); + dt *= 0.5; + } + } + if( !converged ) + { + GEOS_ERROR( "Maximum number of attempts reached without convergence." ); + } + return dt; + } + +private: + + arrayView1d< real64 > const m_slipRate; + + arrayView1d< real64 > const m_stateVariable; + + arrayView1d< real64 > const m_stateVariable_n; + + arrayView1d< real64 > const m_slipRate_n; + + arrayView1d< real64 > const m_normalTraction; + + arrayView2d< real64 > const m_shearTraction; + + arrayView2d< real64 > const m_slipVelocity; + + real64 const m_shearImpedance; + + constitutive::RateAndStateFriction::KernelWrapper m_frictionLaw; + +}; + +} /* namespace rateAndStateKernels */ + +} /* namespace geos */ + +#endif /* GEOS_PHYSICSSOLVERS_INDUCEDSEISMICITY_KERNELS_IMPLICITRATEANDSTATEKERNELS_HPP_ */ diff --git a/src/coreComponents/physicsSolvers/inducedSeismicity/kernels/RateAndStateKernels.hpp b/src/coreComponents/physicsSolvers/inducedSeismicity/kernels/RateAndStateKernels.hpp deleted file mode 100644 index cf2fc306b6b..00000000000 --- a/src/coreComponents/physicsSolvers/inducedSeismicity/kernels/RateAndStateKernels.hpp +++ /dev/null @@ -1,209 +0,0 @@ -/* - * ------------------------------------------------------------------------------------------------------------ - * SPDX-License-Identifier: LGPL-2.1-only - * - * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A - * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University - * Copyright (c) 2018-2024 Chevron - * Copyright (c) 2019- GEOS/GEOSX Contributors - * All rights reserved - * - * See top level LICENSE, COPYRIGHT, CONTRIBUTORS, NOTICE, and ACKNOWLEDGEMENTS files for details. - * ------------------------------------------------------------------------------------------------------------ - */ - -#ifndef GEOS_PHYSICSSOLVERS_RATEANDSTATEKERNELS_HPP_ -#define GEOS_PHYSICSSOLVERS_RATEANDSTATEKERNELS_HPP_ - -#include "common/DataTypes.hpp" -#include "common/GEOS_RAJA_Interface.hpp" -#include "constitutive/contact/RateAndStateFriction.hpp" -#include "physicsSolvers/inducedSeismicity/rateAndStateFields.hpp" -#include "denseLinearAlgebra/denseLASolvers.hpp" - -namespace geos -{ - -namespace rateAndStateKernels -{ -/** - * @class RateAndStateKernel - * - * @brief - * - * @details - */ -class RateAndStateKernel -{ -public: - - RateAndStateKernel( SurfaceElementSubRegion & subRegion, - constitutive::RateAndStateFriction const & frictionLaw, - real64 const shearImpedance ): - m_slipRate( subRegion.getField< fields::rateAndState::slipRate >() ), - m_stateVariable( subRegion.getField< fields::rateAndState::stateVariable >() ), - m_stateVariable_n( subRegion.getField< fields::rateAndState::stateVariable_n >() ), - m_traction( subRegion.getField< fields::contact::traction >() ), - m_slipVelocity( subRegion.getField< fields::rateAndState::slipVelocity >() ), - m_shearImpedance( shearImpedance ), - m_frictionLaw( frictionLaw.createKernelUpdates() ) - {} - - /** - * @struct StackVariables - * @brief Kernel variables located on the stack - */ - struct StackVariables - { -public: - - GEOS_HOST_DEVICE - StackVariables( ) - {} - - real64 jacobian[2][2]{}; - - real64 rhs[2]{}; - - }; - - GEOS_HOST_DEVICE - void setup( localIndex const k, - real64 const dt, - StackVariables & stack ) const - { - real64 const normalTraction = m_traction[k][0]; - real64 const shearTractionMagnitude = LvArray::math::sqrt( m_traction[k][1] * m_traction[k][1] + m_traction[k][2] * m_traction[k][2] ); - // Eq 1: Scalar force balance for slipRate and shear traction magnitude - stack.rhs[0] = shearTractionMagnitude - m_shearImpedance * m_slipRate[k] - - normalTraction * m_frictionLaw.frictionCoefficient( k, m_slipRate[k], m_stateVariable[k] ); - real64 const dFriction[2] = { -normalTraction * m_frictionLaw.dFrictionCoefficient_dStateVariable( k, m_slipRate[k], m_stateVariable[k] ), - -m_shearImpedance - normalTraction * m_frictionLaw.dFrictionCoefficient_dSlipRate( k, m_slipRate[k], m_stateVariable[k] ) }; - - // Eq 2: slip law - stack.rhs[1] = (m_stateVariable[k] - m_stateVariable_n[k]) / dt - m_frictionLaw.stateEvolution( k, m_slipRate[k], m_stateVariable[k] ); - real64 const dStateEvolutionLaw[2] = { 1 / dt - m_frictionLaw.dStateEvolution_dStateVariable( k, m_slipRate[k], m_stateVariable[k] ), - -m_frictionLaw.dStateEvolution_dSlipRate( k, m_slipRate[k], m_stateVariable[k] ) }; - - // Assemble Jacobian matrix - stack.jacobian[0][0] = dFriction[0]; // derivative of Eq 1 w.r.t. stateVariable - stack.jacobian[0][1] = dFriction[1]; // derivative of Eq 1 w.r.t. slipRate - stack.jacobian[1][0] = dStateEvolutionLaw[0]; // derivative of Eq 2 w.r.t. stateVariable - stack.jacobian[1][1] = dStateEvolutionLaw[1]; // derivative of Eq 2 w.r.t. m_slipRate - } - - GEOS_HOST_DEVICE - void solve( localIndex const k, - StackVariables & stack ) const - { - /// Solve 2x2 system - real64 solution[2] = {0.0, 0.0}; - denseLinearAlgebra::solve< 2 >( stack.jacobian, stack.rhs, solution ); - - // Update variables - m_stateVariable[k] -= solution[0]; - m_slipRate[k] -= solution[1]; - } - - GEOS_HOST_DEVICE - void projectSlipRate( localIndex const k ) const - { - // Project slip rate onto shear traction to get slip velocity components - real64 const frictionForce = m_traction[k][0] * m_frictionLaw.frictionCoefficient( k, m_slipRate[k], m_stateVariable[k] ); - real64 const projectionScaling = 1.0 / ( m_shearImpedance + frictionForce / m_slipRate[k] ); - m_slipVelocity[k][0] = projectionScaling * m_traction[k][1]; - m_slipVelocity[k][1] = projectionScaling * m_traction[k][2]; - } - - GEOS_HOST_DEVICE - camp::tuple< int, real64 > checkConvergence( StackVariables const & stack, - real64 const tol ) const - { - real64 const residualNorm = LvArray::tensorOps::l2Norm< 2 >( stack.rhs ); - int const converged = residualNorm < tol ? 1 : 0; - camp::tuple< int, real64 > result { converged, residualNorm }; - return result; - } - -private: - - arrayView1d< real64 > const m_slipRate; - - arrayView1d< real64 > const m_stateVariable; - - arrayView1d< real64 const > const m_stateVariable_n; - - arrayView2d< real64 const > const m_traction; - - arrayView2d< real64 > const m_slipVelocity; - - real64 const m_shearImpedance; - - constitutive::RateAndStateFriction::KernelWrapper m_frictionLaw; - -}; - - - -/** - * @brief Performs the kernel launch - * @tparam POLICY the policy used in the RAJA kernels - */ -template< typename POLICY > -static void -createAndLaunch( SurfaceElementSubRegion & subRegion, - string const & frictionLawNameKey, - real64 const shearImpedance, - integer const maxNewtonIter, - real64 const time_n, - real64 const dt ) -{ - GEOS_MARK_FUNCTION; - - GEOS_UNUSED_VAR( time_n ); - - string const & frictionaLawName = subRegion.getReference< string >( frictionLawNameKey ); - constitutive::RateAndStateFriction const & frictionLaw = subRegion.getConstitutiveModel< constitutive::RateAndStateFriction >( frictionaLawName ); - RateAndStateKernel kernel( subRegion, frictionLaw, shearImpedance ); - - // Newton loop (outside of the kernel launch) - bool allConverged = false; - for( integer iter = 0; iter < maxNewtonIter; iter++ ) - { - RAJA::ReduceMin< parallelDeviceReduce, int > converged( 1 ); - RAJA::ReduceMax< parallelDeviceReduce, real64 > residualNorm( 0.0 ); - forAll< POLICY >( subRegion.size(), [=] GEOS_HOST_DEVICE ( localIndex const k ) - { - RateAndStateKernel::StackVariables stack; - kernel.setup( k, dt, stack ); - kernel.solve( k, stack ); - auto const [elementConverged, elementResidualNorm] = kernel.checkConvergence( stack, 1.0e-6 ); - converged.min( elementConverged ); - residualNorm.max( elementResidualNorm ); - } ); - - real64 const maxResidualNorm = MpiWrapper::max( residualNorm.get() ); - GEOS_LOG_RANK_0( GEOS_FMT( "-----iter {} : residual = {:.10e} ", iter, maxResidualNorm ) ); - - if( converged.get() ) - { - allConverged = true; - break; - } - } - if( !allConverged ) - { - GEOS_ERROR( " Failed to converge" ); - } - forAll< POLICY >( subRegion.size(), [=] GEOS_HOST_DEVICE ( localIndex const k ) - { - kernel.projectSlipRate( k ); - } ); -} - -} /* namespace rateAndStateKernels */ - -}/* namespace geos */ - -#endif /* GEOS_PHYSICSSOLVERS_RATEANDSTATEKERNELS_HPP_ */ diff --git a/src/coreComponents/physicsSolvers/inducedSeismicity/kernels/RateAndStateKernelsBase.hpp b/src/coreComponents/physicsSolvers/inducedSeismicity/kernels/RateAndStateKernelsBase.hpp new file mode 100644 index 00000000000..c889bb94723 --- /dev/null +++ b/src/coreComponents/physicsSolvers/inducedSeismicity/kernels/RateAndStateKernelsBase.hpp @@ -0,0 +1,123 @@ +/* + * ------------------------------------------------------------------------------------------------------------ + * SPDX-License-Identifier: LGPL-2.1-only + * + * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC + * Copyright (c) 2018-2024 TotalEnergies + * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University + * Copyright (c) 2018-2024 Chevron + * Copyright (c) 2019- GEOS/GEOSX Contributors + * All rights reserved + * + * See top level LICENSE, COPYRIGHT, CONTRIBUTORS, NOTICE, and ACKNOWLEDGEMENTS files for details. + * ------------------------------------------------------------------------------------------------------------ + */ + +#ifndef GEOS_PHYSICSSOLVERS_INDUCEDSEISMICITY_KERNELS_RATEANDSTATEKERNELSBASE_HPP_ +#define GEOS_PHYSICSSOLVERS_INDUCEDSEISMICITY_KERNELS_RATEANDSTATEKERNELSBASE_HPP_ + +#include "common/DataTypes.hpp" +#include "common/GEOS_RAJA_Interface.hpp" +#include "constitutive/contact/RateAndStateFriction.hpp" +#include "physicsSolvers/inducedSeismicity/rateAndStateFields.hpp" + +namespace geos +{ + +namespace rateAndStateKernels +{ + +// TBD: Pass the kernel and add getters for relevant fields to make this function general purpose and avoid +// wrappers? +GEOS_HOST_DEVICE +static void projectSlipRateBase( localIndex const k, + real64 const frictionCoefficient, + real64 const shearImpedance, + arrayView1d< real64 const > const normalTraction, + arrayView2d< real64 const > const shearTraction, + arrayView1d< real64 const > const slipRate, + arrayView2d< real64 > const slipVelocity ) +{ + // Project slip rate onto shear traction to get slip velocity components + real64 const frictionForce = normalTraction[k] * frictionCoefficient; + real64 const projectionScaling = 1.0 / ( shearImpedance + frictionForce / slipRate[k] ); + slipVelocity[k][0] = projectionScaling * shearTraction[k][0]; + slipVelocity[k][1] = projectionScaling * shearTraction[k][1]; +} + +template< typename POLICY, typename KERNEL_TYPE > +static bool newtonSolve( SurfaceElementSubRegion & subRegion, + KERNEL_TYPE & kernel, + real64 const dt, + integer const maxNewtonIter, + real64 const newtonTol ) +{ + bool allConverged = false; + for( integer iter = 0; iter < maxNewtonIter; iter++ ) + { + RAJA::ReduceMin< parallelDeviceReduce, int > converged( 1 ); + RAJA::ReduceMax< parallelDeviceReduce, real64 > residualNorm( 0.0 ); + forAll< POLICY >( subRegion.size(), [=] GEOS_HOST_DEVICE ( localIndex const k ) + { + typename KERNEL_TYPE::StackVariables stack; + kernel.setup( k, dt, stack ); + kernel.solve( k, stack ); + auto const [elementConverged, elementResidualNorm] = kernel.checkConvergence( stack, newtonTol ); + converged.min( elementConverged ); + residualNorm.max( elementResidualNorm ); + } ); + + real64 const maxResidualNorm = MpiWrapper::max( residualNorm.get() ); + GEOS_LOG_RANK_0( GEOS_FMT( " Newton iter {} : residual = {:.10e} ", iter, maxResidualNorm ) ); + + if( converged.get() ) + { + allConverged = true; + break; + } + } + return allConverged; +} + +/** + * @brief Performs the kernel launch + * @tparam POLICY the policy used in the RAJA kernels + */ +template< typename KERNEL_TYPE, typename POLICY > +static void +createAndLaunch( SurfaceElementSubRegion & subRegion, + string const & frictionLawNameKey, + real64 const shearImpedance, + integer const maxNewtonIter, + real64 const newtonTol, + real64 const time_n, + real64 const totalDt ) +{ + GEOS_MARK_FUNCTION; + + GEOS_UNUSED_VAR( time_n ); + + string const & frictionaLawName = subRegion.getReference< string >( frictionLawNameKey ); + constitutive::RateAndStateFriction const & frictionLaw = subRegion.getConstitutiveModel< constitutive::RateAndStateFriction >( frictionaLawName ); + KERNEL_TYPE kernel( subRegion, frictionLaw, shearImpedance ); + + real64 dtRemaining = totalDt; + real64 dt = totalDt; + for( integer subStep = 0; subStep < 5 && dtRemaining > 0.0; ++subStep ) + { + real64 dtAccepted = KERNEL_TYPE::template solveRateAndStateEquation< POLICY >( subRegion, kernel, dt, maxNewtonIter, newtonTol ); + dtRemaining -= dtAccepted; + + if( dtRemaining > 0.0 ) + { + dt = dtAccepted; + } + GEOS_LOG_RANK_0( GEOS_FMT( " sub-step = {} completed, dt = {}, remaining dt = {}", subStep, dt, dtRemaining ) ); + } +} + +} /* namespace rateAndStateKernels */ + +} /* namespace geos */ + +#endif /* GEOS_PHYSICSSOLVERS_INDUCEDSEISMICITY_KERNELS_RATEANDSTATEKERNELSBASE_HPP_ */ diff --git a/src/coreComponents/physicsSolvers/inducedSeismicity/kernels/SeismicityRateKernels.hpp b/src/coreComponents/physicsSolvers/inducedSeismicity/kernels/SeismicityRateKernels.hpp index 8bbb0f5865f..63ca4bdee7a 100644 --- a/src/coreComponents/physicsSolvers/inducedSeismicity/kernels/SeismicityRateKernels.hpp +++ b/src/coreComponents/physicsSolvers/inducedSeismicity/kernels/SeismicityRateKernels.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/inducedSeismicity/rateAndStateFields.hpp b/src/coreComponents/physicsSolvers/inducedSeismicity/rateAndStateFields.hpp index 8031ab1c344..599a6f0e0c4 100644 --- a/src/coreComponents/physicsSolvers/inducedSeismicity/rateAndStateFields.hpp +++ b/src/coreComponents/physicsSolvers/inducedSeismicity/rateAndStateFields.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2018-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -35,44 +35,116 @@ namespace rateAndState DECLARE_FIELD( slipRate, "slipRate", array1d< real64 >, - 1.0e-6, + 0.0, LEVEL_0, WRITE_AND_READ, "Slip rate" ); -DECLARE_FIELD( stateVariable, - "stateVariable", +DECLARE_FIELD( slipRate_n, + "slipRate_n", array1d< real64 >, - 0.6, - LEVEL_0, + 0.0, + NOPLOT, WRITE_AND_READ, - "Rate- and state-dependent friction state variable" ); + "Slip rate at timestep n." ); DECLARE_FIELD( slipVelocity, "slipVelocity", array2d< real64 >, - 1.0e-6, + 0.0, LEVEL_0, WRITE_AND_READ, "Slip velocity" ); +DECLARE_FIELD( slipVelocity_n, + "slipVelocity_n", + array2d< real64 >, + 0.0, + NOPLOT, + WRITE_AND_READ, + "Slip velocity at previous time step" ); + +DECLARE_FIELD( stateVariable, + "stateVariable", + array1d< real64 >, + 0.6, + LEVEL_0, + WRITE_AND_READ, + "Rate- and state-dependent friction state variable" ); + DECLARE_FIELD( stateVariable_n, "stateVariable_n", array1d< real64 >, 0.6, NOPLOT, WRITE_AND_READ, - "Rate- and state-dependent friction state variable at previous time step" ); + "Initial rate- and state-dependent friction state variable at this time step" ); + +DECLARE_FIELD( normalTraction, + "normalTraction", + array1d< real64 >, + 0.0, + LEVEL_0, + WRITE_AND_READ, + "Normal traction" ); + +DECLARE_FIELD( shearTraction, + "shearTraction", + array2d< real64 >, + 0.0, + LEVEL_0, + WRITE_AND_READ, + "Shear traction" ); + +DECLARE_FIELD( normalTraction_n, + "normalTraction_n", + array1d< real64 >, + 0.0, + LEVEL_0, + WRITE_AND_READ, + "Normal traction at previous timestep n." ); + +DECLARE_FIELD( shearTraction_n, + "shearTraction_n", + array2d< real64 >, + 0.0, + LEVEL_0, + WRITE_AND_READ, + "Shear traction at previous timestep n." ); -DECLARE_FIELD( deltaSlip, - "deltaSlip", +DECLARE_FIELD( backgroundNormalStress, + "backgroundNormalStress", + array1d< real64 >, + 0.0, + LEVEL_0, + WRITE_AND_READ, + "Background Normal Stress" ); + +DECLARE_FIELD( backgroundShearStress, + "backgroundShearStress", array2d< real64 >, 0.0, LEVEL_0, WRITE_AND_READ, - "Slip increment" ); + "Background Shear Stress" ); + +DECLARE_FIELD( rungeKuttaStageRates, + "rungeKuttaStageRates", + array3d< real64 >, + 0.0, + NOPLOT, + WRITE_AND_READ, + "Runge-Kutta stage rates for rate-and-state variables" ); +DECLARE_FIELD( error, + "error", + array2d< real64 >, + 0.0, + LEVEL_0, + WRITE_AND_READ, + "Error for rate-and-state fields" ); + } } diff --git a/src/coreComponents/physicsSolvers/multiphysics/CMakeLists.txt b/src/coreComponents/physicsSolvers/multiphysics/CMakeLists.txt index 89a34cbc276..08bf8b159c8 100644 --- a/src/coreComponents/physicsSolvers/multiphysics/CMakeLists.txt +++ b/src/coreComponents/physicsSolvers/multiphysics/CMakeLists.txt @@ -9,6 +9,8 @@ set( physicsSolvers_headers multiphysics/HydrofractureSolver.hpp multiphysics/HydrofractureSolverKernels.hpp multiphysics/MultiphasePoromechanics.hpp + multiphysics/OneWayCoupledFractureFlowContactMechanics.hpp + multiphysics/MultiphasePoromechanicsConformingFractures.hpp multiphysics/PhaseFieldFractureSolver.hpp multiphysics/PoromechanicsInitialization.hpp multiphysics/PoromechanicsFields.hpp @@ -16,6 +18,7 @@ set( physicsSolvers_headers multiphysics/LogLevelsInfo.hpp multiphysics/poromechanicsKernels/MultiphasePoromechanics.hpp multiphysics/poromechanicsKernels/MultiphasePoromechanics_impl.hpp + multiphysics/poromechanicsKernels/MultiphasePoromechanicsConformingFractures.hpp multiphysics/poromechanicsKernels/PoromechanicsBase.hpp multiphysics/poromechanicsKernels/SinglePhasePoromechanics.hpp multiphysics/poromechanicsKernels/SinglePhasePoromechanics_impl.hpp @@ -46,6 +49,8 @@ set( physicsSolvers_sources multiphysics/FlowProppantTransportSolver.cpp multiphysics/HydrofractureSolver.cpp multiphysics/MultiphasePoromechanics.cpp + multiphysics/OneWayCoupledFractureFlowContactMechanics.cpp + multiphysics/MultiphasePoromechanicsConformingFractures.cpp multiphysics/PhaseFieldFractureSolver.cpp multiphysics/PoromechanicsInitialization.cpp multiphysics/SinglePhasePoromechanics.cpp diff --git a/src/coreComponents/physicsSolvers/multiphysics/CompositionalMultiphaseReservoirAndWells.cpp b/src/coreComponents/physicsSolvers/multiphysics/CompositionalMultiphaseReservoirAndWells.cpp index 560569a8b63..afa810d945a 100644 --- a/src/coreComponents/physicsSolvers/multiphysics/CompositionalMultiphaseReservoirAndWells.cpp +++ b/src/coreComponents/physicsSolvers/multiphysics/CompositionalMultiphaseReservoirAndWells.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -77,26 +77,39 @@ void CompositionalMultiphaseReservoirAndWells<>:: setMGRStrategy() { - LinearSolverParameters & linearSolverParameters = this->m_linearSolverParameters.get(); + LinearSolverParameters & linearSolverParameters = m_linearSolverParameters.get(); + + if( linearSolverParameters.preconditionerType != LinearSolverParameters::PreconditionerType::mgr ) + return; linearSolverParameters.mgr.separateComponents = true; linearSolverParameters.dofsPerNode = 3; - if( flowSolver()->getLinearSolverParameters().mgr.strategy == LinearSolverParameters::MGR::StrategyType::compositionalMultiphaseHybridFVM ) - { - // add Reservoir - linearSolverParameters.mgr.strategy = LinearSolverParameters::MGR::StrategyType::compositionalMultiphaseReservoirHybridFVM; - } - else if( isThermal() ) + if( dynamic_cast< CompositionalMultiphaseHybridFVM * >( this->flowSolver() ) ) { - m_linearSolverParameters.get().mgr.strategy = LinearSolverParameters::MGR::StrategyType::thermalCompositionalMultiphaseReservoirFVM; - + if( isThermal() ) + { + GEOS_ERROR( GEOS_FMT( "{}: MGR strategy is not implemented for thermal {}/{}", + this->getName(), this->getCatalogName(), this->flowSolver()->getCatalogName())); + } + else + { + linearSolverParameters.mgr.strategy = LinearSolverParameters::MGR::StrategyType::compositionalMultiphaseReservoirHybridFVM; + } } else { - // add Reservoir - linearSolverParameters.mgr.strategy = LinearSolverParameters::MGR::StrategyType::compositionalMultiphaseReservoirFVM; + if( isThermal() ) + { + m_linearSolverParameters.get().mgr.strategy = LinearSolverParameters::MGR::StrategyType::thermalCompositionalMultiphaseReservoirFVM; + } + else + { + linearSolverParameters.mgr.strategy = LinearSolverParameters::MGR::StrategyType::compositionalMultiphaseReservoirFVM; + } } + GEOS_LOG_LEVEL_RANK_0( 1, GEOS_FMT( "{}: MGR strategy set to {}", getName(), + EnumStrings< LinearSolverParameters::MGR::StrategyType >::toString( linearSolverParameters.mgr.strategy ))); } template<> @@ -104,21 +117,25 @@ void CompositionalMultiphaseReservoirAndWells< MultiphasePoromechanics<> >:: setMGRStrategy() { - LinearSolverParameters & linearSolverParameters = this->m_linearSolverParameters.get(); + LinearSolverParameters & linearSolverParameters = m_linearSolverParameters.get(); + + if( linearSolverParameters.preconditionerType != LinearSolverParameters::PreconditionerType::mgr ) + return; linearSolverParameters.mgr.separateComponents = true; linearSolverParameters.dofsPerNode = 3; - // flow solver here is indeed flow solver, not poromechanics solver - if( flowSolver()->getLinearSolverParameters().mgr.strategy == LinearSolverParameters::MGR::StrategyType::compositionalMultiphaseHybridFVM ) + if( dynamic_cast< CompositionalMultiphaseHybridFVM * >( this->flowSolver() ) ) { - GEOS_ERROR( "The poromechanics MGR strategy for hybrid FVM is not implemented" ); + GEOS_ERROR( GEOS_FMT( "{}: MGR strategy is not implemented for {}/{}", + this->getName(), this->getCatalogName(), this->flowSolver()->getCatalogName() ) ); } else { - // add Reservoir linearSolverParameters.mgr.strategy = LinearSolverParameters::MGR::StrategyType::multiphasePoromechanicsReservoirFVM; } + GEOS_LOG_LEVEL_RANK_0( 1, GEOS_FMT( "{}: MGR strategy set to {}", getName(), + EnumStrings< LinearSolverParameters::MGR::StrategyType >::toString( linearSolverParameters.mgr.strategy ))); } template< typename RESERVOIR_SOLVER > @@ -140,15 +157,6 @@ initializePreSubGroups() InputError ); } -template< typename RESERVOIR_SOLVER > -void -CompositionalMultiphaseReservoirAndWells< RESERVOIR_SOLVER >:: -initializePostInitialConditionsPreSubGroups() -{ - Base::initializePostInitialConditionsPreSubGroups(); - setMGRStrategy(); -} - template< typename RESERVOIR_SOLVER > void CompositionalMultiphaseReservoirAndWells< RESERVOIR_SOLVER >:: @@ -273,6 +281,10 @@ assembleCouplingTerms( real64 const time_n, this->getCatalogName(), this->getName() ), std::runtime_error ); + BitFlags< isothermalCompositionalMultiphaseBaseKernels::KernelFlags > kernelFlags; + if( Base::wellSolver()->useTotalMassEquation() ) + kernelFlags.set( isothermalCompositionalMultiphaseBaseKernels::KernelFlags::TotalMassEquation ); + this->template forDiscretizationOnMeshTargets( domain.getMeshBodies(), [&] ( string const &, MeshLevel const & mesh, arrayView1d< string const > const & regionNames ) @@ -314,7 +326,6 @@ assembleCouplingTerms( real64 const time_n, string const wellDofKey = dofManager.getKey( Base::wellSolver()->wellElementDofName() ); areWellsShut = 0; - integer useTotalMassEquation=Base::wellSolver()->useTotalMassEquation(); integer numCrossflowPerforations=0; if( isThermal ( ) ) { @@ -329,7 +340,7 @@ assembleCouplingTerms( real64 const time_n, resDofNumber, perforationData, fluid, - useTotalMassEquation, + kernelFlags, detectCrossflow, numCrossflowPerforations, localRhs, @@ -347,7 +358,7 @@ assembleCouplingTerms( real64 const time_n, resDofNumber, perforationData, fluid, - useTotalMassEquation, + kernelFlags, detectCrossflow, numCrossflowPerforations, localRhs, diff --git a/src/coreComponents/physicsSolvers/multiphysics/CompositionalMultiphaseReservoirAndWells.hpp b/src/coreComponents/physicsSolvers/multiphysics/CompositionalMultiphaseReservoirAndWells.hpp index 7b3a25a82a5..0ceee38fdfe 100644 --- a/src/coreComponents/physicsSolvers/multiphysics/CompositionalMultiphaseReservoirAndWells.hpp +++ b/src/coreComponents/physicsSolvers/multiphysics/CompositionalMultiphaseReservoirAndWells.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -95,14 +95,12 @@ class CompositionalMultiphaseReservoirAndWells : public CoupledReservoirAndWells virtual void initializePreSubGroups() override; - virtual void initializePostInitialConditionsPreSubGroups() override; + virtual void setMGRStrategy() override; private: CompositionalMultiphaseBase * flowSolver() const; - void setMGRStrategy(); - }; } /* namespace geos */ diff --git a/src/coreComponents/physicsSolvers/multiphysics/CoupledReservoirAndWellKernels.hpp b/src/coreComponents/physicsSolvers/multiphysics/CoupledReservoirAndWellKernels.hpp index 6aba3bc91f3..d1d7a131817 100644 --- a/src/coreComponents/physicsSolvers/multiphysics/CoupledReservoirAndWellKernels.hpp +++ b/src/coreComponents/physicsSolvers/multiphysics/CoupledReservoirAndWellKernels.hpp @@ -2,10 +2,11 @@ * ------------------------------------------------------------------------------------------------------------ * SPDX-License-Identifier: LGPL-2.1-only * - * Copyright (c) 2018-2020 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2020 The Board of Trustees of the Leland Stanford Junior University - * Copyright (c) 2018-2020 TotalEnergies - * Copyright (c) 2019- GEOSX Contributors + * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC + * Copyright (c) 2018-2024 TotalEnergies + * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University + * Copyright (c) 2023-2024 Chevron + * Copyright (c) 2019- GEOS/GEOSX Contributors * All rights reserved * * See top level LICENSE, COPYRIGHT, CONTRIBUTORS, NOTICE, and ACKNOWLEDGEMENTS files for details. @@ -305,7 +306,7 @@ class IsothermalCompositionalMultiPhaseFluxKernelFactory ElementRegionManager::ElementViewConst< arrayView1d< globalIndex const > > const resDofNumber, PerforationData const * const perforationData, MultiFluidBase const & fluid, - integer const & useTotalMassEquation, + BitFlags< isothermalCompositionalMultiphaseBaseKernels::KernelFlags > kernelFlags, bool const & detectCrossflow, integer & numCrossFlowPerforations, arrayView1d< real64 > const & localRhs, @@ -316,16 +317,9 @@ class IsothermalCompositionalMultiPhaseFluxKernelFactory { integer constexpr NUM_COMP = NC(); - - BitFlags< isothermalCompositionalMultiphaseBaseKernels::KernelFlags > kernelFlags; - if( useTotalMassEquation ) - kernelFlags.set( isothermalCompositionalMultiphaseBaseKernels::KernelFlags::TotalMassEquation ); - - using kernelType = IsothermalCompositionalMultiPhaseFluxKernel< NUM_COMP, 0 >; - - - kernelType kernel( dt, rankOffset, wellDofKey, subRegion, resDofNumber, perforationData, fluid, localRhs, localMatrix, detectCrossflow, numCrossFlowPerforations, kernelFlags ); + kernelType kernel( dt, rankOffset, wellDofKey, subRegion, resDofNumber, perforationData, + fluid, localRhs, localMatrix, detectCrossflow, numCrossFlowPerforations, kernelFlags ); kernelType::template launch< POLICY >( perforationData->size(), kernel ); } ); @@ -558,7 +552,7 @@ class ThermalCompositionalMultiPhaseFluxKernelFactory ElementRegionManager::ElementViewConst< arrayView1d< globalIndex const > > const resDofNumber, PerforationData const * const perforationData, MultiFluidBase const & fluid, - integer const & useTotalMassEquation, + BitFlags< isothermalCompositionalMultiphaseBaseKernels::KernelFlags > kernelFlags, bool const & detectCrossflow, integer & numCrossFlowPerforations, arrayView1d< real64 > const & localRhs, @@ -569,16 +563,9 @@ class ThermalCompositionalMultiPhaseFluxKernelFactory { integer constexpr NUM_COMP = NC(); - - BitFlags< isothermalCompositionalMultiphaseBaseKernels::KernelFlags > kernelFlags; - if( useTotalMassEquation ) - kernelFlags.set( isothermalCompositionalMultiphaseBaseKernels::KernelFlags::TotalMassEquation ); - - using kernelType = ThermalCompositionalMultiPhaseFluxKernel< NUM_COMP, 1 >; - - - kernelType kernel( dt, isProducer, rankOffset, wellDofKey, subRegion, resDofNumber, perforationData, fluid, localRhs, localMatrix, detectCrossflow, numCrossFlowPerforations, kernelFlags ); + kernelType kernel( dt, isProducer, rankOffset, wellDofKey, subRegion, resDofNumber, perforationData, + fluid, localRhs, localMatrix, detectCrossflow, numCrossFlowPerforations, kernelFlags ); kernelType::template launch< POLICY >( perforationData->size(), kernel ); } ); diff --git a/src/coreComponents/physicsSolvers/multiphysics/CoupledReservoirAndWellsBase.cpp b/src/coreComponents/physicsSolvers/multiphysics/CoupledReservoirAndWellsBase.cpp index e981e5048c2..631a5ee6cd3 100644 --- a/src/coreComponents/physicsSolvers/multiphysics/CoupledReservoirAndWellsBase.cpp +++ b/src/coreComponents/physicsSolvers/multiphysics/CoupledReservoirAndWellsBase.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/multiphysics/CoupledReservoirAndWellsBase.hpp b/src/coreComponents/physicsSolvers/multiphysics/CoupledReservoirAndWellsBase.hpp index 264525673e3..c40265648f1 100644 --- a/src/coreComponents/physicsSolvers/multiphysics/CoupledReservoirAndWellsBase.hpp +++ b/src/coreComponents/physicsSolvers/multiphysics/CoupledReservoirAndWellsBase.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -201,10 +201,18 @@ class CoupledReservoirAndWellsBase : public CoupledSolver< RESERVOIR_SOLVER, WEL // Validate well perforations: Ensure that each perforation is in a region targeted by the solver if( !validateWellPerforations( domain )) { - return; + GEOS_ERROR( GEOS_FMT( "{}: well perforations validation failed, bad perforations found", this->getName())); } } + virtual void + postInputInitialization() override + { + Base::postInputInitialization(); + + setMGRStrategy(); + } + virtual void implicitStepSetup( real64 const & time_n, real64 const & dt, @@ -298,6 +306,12 @@ class CoupledReservoirAndWellsBase : public CoupledSolver< RESERVOIR_SOLVER, WEL DofManager const & dofManager, SparsityPatternView< globalIndex > const & pattern ) const = 0; + virtual void setMGRStrategy() + { + if( this->m_linearSolverParameters.get().preconditionerType == LinearSolverParameters::PreconditionerType::mgr ) + GEOS_ERROR( GEOS_FMT( "{}: MGR strategy is not implemented for {}", this->getName(), this->getCatalogName())); + } + /// Flag to determine whether the well transmissibility needs to be computed bool m_isWellTransmissibilityComputed; diff --git a/src/coreComponents/physicsSolvers/multiphysics/CoupledSolver.hpp b/src/coreComponents/physicsSolvers/multiphysics/CoupledSolver.hpp index c83c224b86a..8517edb3dfe 100644 --- a/src/coreComponents/physicsSolvers/multiphysics/CoupledSolver.hpp +++ b/src/coreComponents/physicsSolvers/multiphysics/CoupledSolver.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/multiphysics/FlowProppantTransportSolver.cpp b/src/coreComponents/physicsSolvers/multiphysics/FlowProppantTransportSolver.cpp index 933c8afa977..fe329e26569 100644 --- a/src/coreComponents/physicsSolvers/multiphysics/FlowProppantTransportSolver.cpp +++ b/src/coreComponents/physicsSolvers/multiphysics/FlowProppantTransportSolver.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/multiphysics/FlowProppantTransportSolver.hpp b/src/coreComponents/physicsSolvers/multiphysics/FlowProppantTransportSolver.hpp index 270c13b179f..9b14cea8309 100644 --- a/src/coreComponents/physicsSolvers/multiphysics/FlowProppantTransportSolver.hpp +++ b/src/coreComponents/physicsSolvers/multiphysics/FlowProppantTransportSolver.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/multiphysics/HydrofractureSolver.cpp b/src/coreComponents/physicsSolvers/multiphysics/HydrofractureSolver.cpp index 61529778ea6..3175f518666 100644 --- a/src/coreComponents/physicsSolvers/multiphysics/HydrofractureSolver.cpp +++ b/src/coreComponents/physicsSolvers/multiphysics/HydrofractureSolver.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOS Contributors @@ -81,12 +81,23 @@ HydrofractureSolver< POROMECHANICS_SOLVER >::HydrofractureSolver( const string & setDescription( "Flag to determine whether or not to apply lagging update for the fracture stencil weights. " ); m_numResolves[0] = 0; +} - // This may need to be different depending on whether poroelasticity is on or not. - m_linearSolverParameters.get().mgr.strategy = LinearSolverParameters::MGR::StrategyType::hydrofracture; - m_linearSolverParameters.get().mgr.separateComponents = true; - m_linearSolverParameters.get().dofsPerNode = 3; +template< typename POROMECHANICS_SOLVER > +void HydrofractureSolver< POROMECHANICS_SOLVER >::setMGRStrategy() +{ + LinearSolverParameters & linearSolverParameters = this->m_linearSolverParameters.get(); + if( linearSolverParameters.preconditionerType != LinearSolverParameters::PreconditionerType::mgr ) + return; + + linearSolverParameters.mgr.separateComponents = true; + linearSolverParameters.dofsPerNode = 3; + + // This may need to be different depending on whether poroelasticity is on or not. + linearSolverParameters.mgr.strategy = LinearSolverParameters::MGR::StrategyType::hydrofracture; + GEOS_LOG_LEVEL_RANK_0( 1, GEOS_FMT( "{}: MGR strategy set to {}", this->getName(), + EnumStrings< LinearSolverParameters::MGR::StrategyType >::toString( linearSolverParameters.mgr.strategy ))); } template< typename POROMECHANICS_SOLVER > @@ -157,6 +168,8 @@ void HydrofractureSolver< POROMECHANICS_SOLVER >::postInputInitialization() { Base::postInputInitialization(); + setMGRStrategy(); + static const std::set< integer > binaryOptions = { 0, 1 }; GEOS_ERROR_IF( binaryOptions.count( m_isMatrixPoroelastic ) == 0, viewKeyStruct::isMatrixPoroelasticString() << " option can be either 0 (false) or 1 (true)" ); @@ -176,10 +189,8 @@ real64 HydrofractureSolver< POROMECHANICS_SOLVER >::fullyCoupledSolverStep( real int const cycleNumber, DomainPartition & domain ) { - if( cycleNumber == 0 && time_n <= 0 ) - { - initializeNewFractureFields( domain ); - } + // for initial fracture initialization in case when surface generator was called outside of the solver + initializeNewFractureFields( domain ); real64 dtReturn = dt; @@ -215,11 +226,9 @@ real64 HydrofractureSolver< POROMECHANICS_SOLVER >::fullyCoupledSolverStep( real { locallyFractured = 1; } - MpiWrapper::allReduce( &locallyFractured, - &globallyFractured, - 1, - MPI_MAX, - MPI_COMM_GEOS ); + globallyFractured = MpiWrapper::allReduce( locallyFractured, + MpiWrapper::Reduction::Max, + MPI_COMM_GEOS ); if( globallyFractured == 0 ) { @@ -292,7 +301,7 @@ void HydrofractureSolver< POROMECHANICS_SOLVER >::updateHydraulicApertureAndFrac arrayView1d< real64 const > const volume = subRegion.getElementVolume(); arrayView1d< real64 > const deltaVolume = subRegion.getField< flow::deltaVolume >(); arrayView1d< real64 const > const area = subRegion.getElementArea(); - ArrayOfArraysView< localIndex const > const elemsToFaces = subRegion.faceList().toViewConst(); + arrayView2d< localIndex const > const elemsToFaces = subRegion.faceList().toViewConst(); string const porousSolidName = subRegion.template getReference< string >( FlowSolverBase::viewKeyStruct::solidNamesString() ); CoupledSolidBase const & porousSolid = subRegion.template getConstitutiveModel< CoupledSolidBase >( porousSolidName ); @@ -366,11 +375,11 @@ void HydrofractureSolver< POROMECHANICS_SOLVER >::updateHydraulicApertureAndFrac maxHydraulicAperture = MpiWrapper::max( maxHydraulicAperture ); GEOS_LOG_LEVEL_INFO_RANK_0( logInfo::Solution, GEOS_FMT( " {}: Max aperture change: {} m, max hydraulic aperture change: {} m", - this->getName(), fmt::format( "{:.{}f}", maxApertureChange, 6 ), fmt::format( "{:.{}f}", maxHydraulicApertureChange, 6 ) ) ); + this->getName(), fmt::format( "{:.{}e}", maxApertureChange, 6 ), fmt::format( "{:.{}e}", maxHydraulicApertureChange, 6 ) ) ); GEOS_LOG_LEVEL_INFO_RANK_0( logInfo::Solution, GEOS_FMT( " {}: Min aperture: {} m, max aperture: {} m", - this->getName(), fmt::format( "{:.{}f}", minAperture, 6 ), fmt::format( "{:.{}f}", maxAperture, 6 ) ) ); + this->getName(), fmt::format( "{:.{}e}", minAperture, 6 ), fmt::format( "{:.{}e}", maxAperture, 6 ) ) ); GEOS_LOG_LEVEL_INFO_RANK_0( logInfo::Solution, GEOS_FMT( " {}: Min hydraulic aperture: {} m, max hydraulic aperture: {} m", - this->getName(), fmt::format( "{:.{}f}", minHydraulicAperture, 6 ), fmt::format( "{:.{}f}", maxHydraulicAperture, 6 ) ) ); + this->getName(), fmt::format( "{:.{}e}", minHydraulicAperture, 6 ), fmt::format( "{:.{}e}", maxHydraulicAperture, 6 ) ) ); } template< typename POROMECHANICS_SOLVER > void HydrofractureSolver< POROMECHANICS_SOLVER >::setupCoupling( DomainPartition const & domain, @@ -706,16 +715,12 @@ assembleForceResidualDerivativeWrtPressure( DomainPartition & domain, { arrayView1d< real64 const > const & fluidPressure = subRegion.getField< flow::pressure >(); arrayView1d< real64 const > const & area = subRegion.getElementArea(); - ArrayOfArraysView< localIndex const > const & elemsToFaces = subRegion.faceList().toViewConst(); + arrayView2d< localIndex const > const & elemsToFaces = subRegion.faceList().toViewConst(); // if matching on lassen/crusher, move to device policy using execPolicy = serialPolicy; forAll< execPolicy >( subRegion.size(), [=] ( localIndex const kfe ) { - if( elemsToFaces.sizeOfArray( kfe ) != 2 ) - { - return; - } constexpr int kfSign[2] = { -1, 1 }; @@ -741,7 +746,6 @@ assembleForceResidualDerivativeWrtPressure( DomainPartition & domain, for( localIndex kf=0; kf<2; ++kf ) { localIndex const faceIndex = elemsToFaces[kfe][kf]; - for( localIndex a=0; a const aperture = subRegion.getElementAperture(); arrayView1d< real64 const > const area = subRegion.getElementArea(); - ArrayOfArraysView< localIndex const > const elemsToFaces = subRegion.faceList().toViewConst(); + arrayView2d< localIndex const > const elemsToFaces = subRegion.faceList().toViewConst(); ArrayOfArraysView< localIndex const > const faceToNodeMap = faceManager.nodeList().toViewConst(); arrayView2d< real64 const > const faceNormal = faceManager.faceNormal(); @@ -1024,7 +1028,7 @@ void HydrofractureSolver< POROMECHANICS_SOLVER >::initializeNewFractureFields( D ArrayOfArraysView< localIndex const > const & fractureConnectorsToFaceElements = subRegion.m_2dFaceTo2dElems.toViewConst(); map< localIndex, localIndex > const & edgesToConnectorEdges = subRegion.m_edgesTo2dFaces; - ArrayOfArraysView< localIndex const > const faceMap = subRegion.faceList().toViewConst(); + arrayView2d< localIndex const > const faceMap = subRegion.faceList().toViewConst(); arrayView1d< real64 > const fluidPressure_n = subRegion.getField< fields::flow::pressure_n >(); arrayView1d< real64 > const fluidPressure = subRegion.getField< fields::flow::pressure >(); @@ -1164,7 +1168,6 @@ void HydrofractureSolver< POROMECHANICS_SOLVER >::initializeNewFractureFields( D } } ); } - subRegion.m_recalculateConnectionsFor2dFaces.clear(); subRegion.m_newFaceElements.clear(); } ); diff --git a/src/coreComponents/physicsSolvers/multiphysics/HydrofractureSolver.hpp b/src/coreComponents/physicsSolvers/multiphysics/HydrofractureSolver.hpp index 8ea2ddc1d8b..05a96830440 100644 --- a/src/coreComponents/physicsSolvers/multiphysics/HydrofractureSolver.hpp +++ b/src/coreComponents/physicsSolvers/multiphysics/HydrofractureSolver.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -215,6 +215,7 @@ class HydrofractureSolver : public POROMECHANICS_SOLVER DofManager const & dofManager, CRSMatrix< real64, globalIndex > & localMatrix ); + virtual void setMGRStrategy() override; private: diff --git a/src/coreComponents/physicsSolvers/multiphysics/HydrofractureSolverKernels.hpp b/src/coreComponents/physicsSolvers/multiphysics/HydrofractureSolverKernels.hpp index 18416ef2083..86630e16ead 100644 --- a/src/coreComponents/physicsSolvers/multiphysics/HydrofractureSolverKernels.hpp +++ b/src/coreComponents/physicsSolvers/multiphysics/HydrofractureSolverKernels.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -40,7 +40,7 @@ struct DeformationUpdateKernel arrayView2d< real64 const, nodes::TOTAL_DISPLACEMENT_USD > const & u, arrayView2d< real64 const > const & faceNormal, ArrayOfArraysView< localIndex const > const & faceToNodeMap, - ArrayOfArraysView< localIndex const > const & elemsToFaces, + arrayView2d< localIndex const > const & elemsToFaces, arrayView1d< real64 const > const & area, arrayView1d< real64 const > const & volume, arrayView1d< real64 > const & deltaVolume, @@ -66,8 +66,6 @@ struct DeformationUpdateKernel forAll< POLICY >( size, [=] GEOS_HOST_DEVICE ( localIndex const kfe ) mutable { - if( elemsToFaces.sizeOfArray( kfe ) != 2 ) - { return; } localIndex const kf0 = elemsToFaces[kfe][0]; localIndex const kf1 = elemsToFaces[kfe][1]; @@ -184,7 +182,7 @@ struct FluidMassResidualDerivativeAssemblyKernel localIndex const numNodesPerFace, arraySlice1d< localIndex const > const & columns, arraySlice1d< real64 const > const & values, - ArrayOfArraysView< localIndex const > const elemsToFaces, + arrayView2d< localIndex const > const elemsToFaces, ArrayOfArraysView< localIndex const > const faceToNodeMap, arrayView1d< globalIndex const > const dispDofNumber, real64 const (&Nbar)[ 3 ], @@ -218,7 +216,7 @@ struct FluidMassResidualDerivativeAssemblyKernel globalIndex const rankOffset, HYDRAULICAPERTURE_WRAPPER const & hydraulicApertureWrapper, integer const useQuasiNewton, - ArrayOfArraysView< localIndex const > const elemsToFaces, + arrayView2d< localIndex const > const elemsToFaces, ArrayOfArraysView< localIndex const > const faceToNodeMap, arrayView2d< real64 const > const faceNormal, arrayView1d< real64 const > const area, diff --git a/src/coreComponents/physicsSolvers/multiphysics/LogLevelsInfo.hpp b/src/coreComponents/physicsSolvers/multiphysics/LogLevelsInfo.hpp index fb9322e1021..e87c0615e53 100644 --- a/src/coreComponents/physicsSolvers/multiphysics/LogLevelsInfo.hpp +++ b/src/coreComponents/physicsSolvers/multiphysics/LogLevelsInfo.hpp @@ -2,10 +2,11 @@ * ------------------------------------------------------------------------------------------------------------ * SPDX-License-Identifier: LGPL-2.1-only * - * Copyright (c) 2018-2020 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2020 The Board of Trustees of the Leland Stanford Junior University - * Copyright (c) 2018-2020 TotalEnergies - * Copyright (c) 2019- GEOSX Contributors + * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC + * Copyright (c) 2018-2024 TotalEnergies + * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University + * Copyright (c) 2023-2024 Chevron + * Copyright (c) 2019- GEOS/GEOSX Contributors * All rights reserved * * See top level LICENSE, COPYRIGHT, CONTRIBUTORS, NOTICE, and ACKNOWLEDGEMENTS files for details. diff --git a/src/coreComponents/physicsSolvers/multiphysics/MultiphasePoromechanics.cpp b/src/coreComponents/physicsSolvers/multiphysics/MultiphasePoromechanics.cpp index c477f2b83d3..0d11624cfc1 100644 --- a/src/coreComponents/physicsSolvers/multiphysics/MultiphasePoromechanics.cpp +++ b/src/coreComponents/physicsSolvers/multiphysics/MultiphasePoromechanics.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -24,13 +24,15 @@ #include "dataRepository/LogLevelsInfo.hpp" #include "constitutive/fluid/multifluid/MultiFluidBase.hpp" #include "constitutive/solid/PorousSolid.hpp" +#include "physicsSolvers/fluidFlow/CompositionalMultiphaseHybridFVM.hpp" #include "physicsSolvers/fluidFlow/FlowSolverBaseFields.hpp" +#include "physicsSolvers/fluidFlow/CompositionalMultiphaseHybridFVM.hpp" #include "physicsSolvers/multiphysics/poromechanicsKernels/MultiphasePoromechanics.hpp" #include "physicsSolvers/multiphysics/poromechanicsKernels/ThermalMultiphasePoromechanics.hpp" #include "physicsSolvers/solidMechanics/SolidMechanicsFields.hpp" #include "physicsSolvers/solidMechanics/SolidMechanicsLagrangianFEM.hpp" #include "physicsSolvers/solidMechanics/kernels/ImplicitSmallStrainQuasiStatic.hpp" -//#include "physicsSolvers/contact/SolidMechanicsLagrangeContact.hpp" +#include "physicsSolvers/contact/SolidMechanicsLagrangeContact.hpp" //#include "physicsSolvers/contact/SolidMechanicsEmbeddedFractures.hpp" namespace geos @@ -45,24 +47,14 @@ template< typename FLOW_SOLVER, typename MECHANICS_SOLVER > MultiphasePoromechanics< FLOW_SOLVER, MECHANICS_SOLVER >::MultiphasePoromechanics( const string & name, Group * const parent ) : Base( name, parent ) -{ - LinearSolverParameters & linearSolverParameters = this->m_linearSolverParameters.get(); - linearSolverParameters.mgr.strategy = LinearSolverParameters::MGR::StrategyType::multiphasePoromechanics; - linearSolverParameters.mgr.separateComponents = true; - linearSolverParameters.dofsPerNode = 3; -} +{} template< typename FLOW_SOLVER, typename MECHANICS_SOLVER > void MultiphasePoromechanics< FLOW_SOLVER, MECHANICS_SOLVER >::postInputInitialization() { Base::postInputInitialization(); - GEOS_ERROR_IF( this->flowSolver()->getCatalogName() == "CompositionalMultiphaseReservoir" && - this->getNonlinearSolverParameters().couplingType() != NonlinearSolverParameters::CouplingType::Sequential, - GEOS_FMT( "{}: {} solver is only designed to work for {} = {}", - this->getDataContext(), catalogName(), NonlinearSolverParameters::viewKeysStruct::couplingTypeString(), - EnumStrings< NonlinearSolverParameters::CouplingType >::toString( NonlinearSolverParameters::CouplingType::Sequential ) - )); + setMGRStrategy(); } template< typename FLOW_SOLVER, typename MECHANICS_SOLVER > @@ -84,6 +76,7 @@ void MultiphasePoromechanics< FLOW_SOLVER, MECHANICS_SOLVER >::assembleSystem( r { GEOS_MARK_FUNCTION; + // Steps 1 and 2: compute element-based terms (mechanics and local flow terms) assembleElementBasedTerms( time, dt, domain, @@ -112,6 +105,50 @@ void MultiphasePoromechanics< FLOW_SOLVER, MECHANICS_SOLVER >::assembleSystem( r } } +template<> +void MultiphasePoromechanics< CompositionalMultiphaseReservoirAndWells<>, SolidMechanicsLagrangianFEM >::assembleSystem( real64 const time, + real64 const dt, + DomainPartition & domain, + DofManager const & dofManager, + CRSMatrixView< real64, globalIndex const > const & localMatrix, + arrayView1d< real64 > const & localRhs ) +{ + GEOS_MARK_FUNCTION; + + // Steps 1 and 2: compute element-based terms (mechanics and local flow terms) + assembleElementBasedTerms( time, + dt, + domain, + dofManager, + localMatrix, + localRhs ); + + // step 3: compute the fluxes (face-based contributions) + + if( m_stabilizationType == StabilizationType::Global || + m_stabilizationType == StabilizationType::Local ) + { + this->flowSolver()->assembleStabilizedFluxTerms( dt, + domain, + dofManager, + localMatrix, + localRhs ); + } + else + { + this->flowSolver()->assembleFluxTerms( dt, + domain, + dofManager, + localMatrix, + localRhs ); + } + + // step 4: assemble well contributions + + this->flowSolver()->wellSolver()->assembleSystem( time, dt, domain, dofManager, localMatrix, localRhs ); + this->flowSolver()->assembleCouplingTerms( time, dt, domain, dofManager, localMatrix, localRhs ); +} + template< typename FLOW_SOLVER, typename MECHANICS_SOLVER > void MultiphasePoromechanics< FLOW_SOLVER, MECHANICS_SOLVER >::assembleElementBasedTerms( real64 const time_n, real64 const dt, @@ -141,39 +178,39 @@ void MultiphasePoromechanics< FLOW_SOLVER, MECHANICS_SOLVER >::assembleElementBa if( this->m_isThermal ) { poromechanicsMaxForce = - assemblyLaunch< constitutive::PorousSolidBase, - thermalPoromechanicsKernels::ThermalMultiphasePoromechanicsKernelFactory >( mesh, - dofManager, - regionNames, - Base::viewKeyStruct::porousMaterialNamesString(), - localMatrix, - localRhs, - dt, - flowDofKey, - this->flowSolver()->numFluidComponents(), - this->flowSolver()->numFluidPhases(), - this->flowSolver()->useTotalMassEquation(), - this->m_performStressInitialization, - FlowSolverBase::viewKeyStruct::fluidNamesString() ); + this->template assemblyLaunch< constitutive::PorousSolidBase, + thermalPoromechanicsKernels::ThermalMultiphasePoromechanicsKernelFactory >( mesh, + dofManager, + regionNames, + Base::viewKeyStruct::porousMaterialNamesString(), + localMatrix, + localRhs, + dt, + flowDofKey, + this->flowSolver()->numFluidComponents(), + this->flowSolver()->numFluidPhases(), + this->flowSolver()->useTotalMassEquation(), + this->m_performStressInitialization, + FlowSolverBase::viewKeyStruct::fluidNamesString() ); } else { poromechanicsMaxForce = - assemblyLaunch< constitutive::PorousSolidBase, - poromechanicsKernels::MultiphasePoromechanicsKernelFactory >( mesh, - dofManager, - regionNames, - Base::viewKeyStruct::porousMaterialNamesString(), - localMatrix, - localRhs, - dt, - flowDofKey, - this->flowSolver()->numFluidComponents(), - this->flowSolver()->numFluidPhases(), - this->flowSolver()->useSimpleAccumulation(), - this->flowSolver()->useTotalMassEquation(), - this->m_performStressInitialization, - FlowSolverBase::viewKeyStruct::fluidNamesString() ); + this->template assemblyLaunch< constitutive::PorousSolidBase, + poromechanicsKernels::MultiphasePoromechanicsKernelFactory >( mesh, + dofManager, + regionNames, + Base::viewKeyStruct::porousMaterialNamesString(), + localMatrix, + localRhs, + dt, + flowDofKey, + this->flowSolver()->numFluidComponents(), + this->flowSolver()->numFluidPhases(), + this->flowSolver()->useSimpleAccumulation(), + this->flowSolver()->useTotalMassEquation(), + this->m_performStressInitialization, + FlowSolverBase::viewKeyStruct::fluidNamesString() ); } } ); @@ -203,14 +240,14 @@ void MultiphasePoromechanics< FLOW_SOLVER, MECHANICS_SOLVER >::assembleElementBa } mechanicsMaxForce = - assemblyLaunch< constitutive::SolidBase, - solidMechanicsLagrangianFEMKernels::QuasiStaticFactory >( mesh, - dofManager, - filteredRegionNames.toViewConst(), - SolidMechanicsLagrangianFEM::viewKeyStruct::solidMaterialNamesString(), - localMatrix, - localRhs, - dt ); + this->template assemblyLaunch< constitutive::SolidBase, + solidMechanicsLagrangianFEMKernels::QuasiStaticFactory >( mesh, + dofManager, + filteredRegionNames.toViewConst(), + SolidMechanicsLagrangianFEM::viewKeyStruct::solidMaterialNamesString(), + localMatrix, + localRhs, + dt ); } ); @@ -244,11 +281,63 @@ void MultiphasePoromechanics< FLOW_SOLVER, MECHANICS_SOLVER >::initializePostIni getCatalogName(), this->getDataContext(), poromechanicsTargetRegionNames[i], this->flowSolver()->getDataContext() ), InputError ); } +} + +template<> +void MultiphasePoromechanics<>::setMGRStrategy() +{ + LinearSolverParameters & linearSolverParameters = this->m_linearSolverParameters.get(); + + if( linearSolverParameters.preconditionerType != LinearSolverParameters::PreconditionerType::mgr ) + return; + + linearSolverParameters.mgr.separateComponents = true; + linearSolverParameters.dofsPerNode = 3; + + if( dynamic_cast< CompositionalMultiphaseHybridFVM * >( this->flowSolver() ) ) + { + GEOS_ERROR( GEOS_FMT( "{}: MGR strategy is not implemented for {}/{}", + this->getName(), this->getCatalogName(), this->flowSolver()->getCatalogName())); + } + else + { + if( this->m_isThermal ) + { + linearSolverParameters.mgr.strategy = LinearSolverParameters::MGR::StrategyType::thermalMultiphasePoromechanics; + } + else + { + linearSolverParameters.mgr.strategy = LinearSolverParameters::MGR::StrategyType::multiphasePoromechanics; + } + } + GEOS_LOG_LEVEL_RANK_0( 1, GEOS_FMT( "{}: MGR strategy set to {}", getName(), + EnumStrings< LinearSolverParameters::MGR::StrategyType >::toString( linearSolverParameters.mgr.strategy ))); +} + +template<> +void MultiphasePoromechanics< CompositionalMultiphaseReservoirAndWells<>, SolidMechanicsLagrangianFEM >::setMGRStrategy() +{ + // same as CompositionalMultiphaseReservoirAndWells< MultiphasePoromechanics<> >::setMGRStrategy - if( this->m_isThermal ) + LinearSolverParameters & linearSolverParameters = m_linearSolverParameters.get(); + + if( linearSolverParameters.preconditionerType != LinearSolverParameters::PreconditionerType::mgr ) + return; + + linearSolverParameters.mgr.separateComponents = true; + linearSolverParameters.dofsPerNode = 3; + + if( dynamic_cast< CompositionalMultiphaseHybridFVM * >( this->flowSolver() ) ) + { + GEOS_ERROR( GEOS_FMT( "{}: MGR strategy is not implemented for {}/{}", + this->getName(), this->getCatalogName(), this->flowSolver()->getCatalogName() ) ); + } + else { - this->m_linearSolverParameters.get().mgr.strategy = LinearSolverParameters::MGR::StrategyType::thermalMultiphasePoromechanics; + linearSolverParameters.mgr.strategy = LinearSolverParameters::MGR::StrategyType::multiphasePoromechanicsReservoirFVM; } + GEOS_LOG_LEVEL_RANK_0( 1, GEOS_FMT( "{}: MGR strategy set to {}", getName(), + EnumStrings< LinearSolverParameters::MGR::StrategyType >::toString( linearSolverParameters.mgr.strategy ))); } template< typename FLOW_SOLVER, typename MECHANICS_SOLVER > @@ -272,7 +361,7 @@ void MultiphasePoromechanics< FLOW_SOLVER, MECHANICS_SOLVER >::updateBulkDensity } template class MultiphasePoromechanics<>; -//template class MultiphasePoromechanics< CompositionalMultiphaseBase, SolidMechanicsLagrangeContact >; +template class MultiphasePoromechanics< CompositionalMultiphaseBase, SolidMechanicsLagrangeContact >; //template class MultiphasePoromechanics< CompositionalMultiphaseBase, SolidMechanicsEmbeddedFractures >; template class MultiphasePoromechanics< CompositionalMultiphaseReservoirAndWells<> >; diff --git a/src/coreComponents/physicsSolvers/multiphysics/MultiphasePoromechanics.hpp b/src/coreComponents/physicsSolvers/multiphysics/MultiphasePoromechanics.hpp index 9251d86dac1..30259c11b43 100644 --- a/src/coreComponents/physicsSolvers/multiphysics/MultiphasePoromechanics.hpp +++ b/src/coreComponents/physicsSolvers/multiphysics/MultiphasePoromechanics.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -107,9 +107,11 @@ class MultiphasePoromechanics : public PoromechanicsSolver< FLOW_SOLVER, MECHANI virtual void initializePostInitialConditionsPreSubGroups() override; - - -private: + virtual void setMGRStrategy() + { + if( this->m_linearSolverParameters.get().preconditionerType == LinearSolverParameters::PreconditionerType::mgr ) + GEOS_ERROR( GEOS_FMT( "{}: MGR strategy is not implemented for {}", this->getName(), this->getCatalogName())); + } /** * @brief Helper function to recompute the bulk density @@ -117,62 +119,8 @@ class MultiphasePoromechanics : public PoromechanicsSolver< FLOW_SOLVER, MECHANI */ virtual void updateBulkDensity( ElementSubRegionBase & subRegion ) override; - template< typename CONSTITUTIVE_BASE, - typename KERNEL_WRAPPER, - typename ... PARAMS > - real64 assemblyLaunch( MeshLevel & mesh, - DofManager const & dofManager, - arrayView1d< string const > const & regionNames, - string const & materialNamesString, - CRSMatrixView< real64, globalIndex const > const & localMatrix, - arrayView1d< real64 > const & localRhs, - real64 const dt, - PARAMS && ... params ); - - }; -template< typename FLOW_SOLVER, typename MECHANICS_SOLVER > -template< typename CONSTITUTIVE_BASE, - typename KERNEL_WRAPPER, - typename ... PARAMS > -real64 MultiphasePoromechanics< FLOW_SOLVER, MECHANICS_SOLVER >::assemblyLaunch( MeshLevel & mesh, - DofManager const & dofManager, - arrayView1d< string const > const & regionNames, - string const & materialNamesString, - CRSMatrixView< real64, globalIndex const > const & localMatrix, - arrayView1d< real64 > const & localRhs, - real64 const dt, - PARAMS && ... params ) -{ - GEOS_MARK_FUNCTION; - - NodeManager const & nodeManager = mesh.getNodeManager(); - - string const dofKey = dofManager.getKey( fields::solidMechanics::totalDisplacement::key() ); - arrayView1d< globalIndex const > const & dofNumber = nodeManager.getReference< globalIndex_array >( dofKey ); - - real64 const gravityVectorData[3] = LVARRAY_TENSOROPS_INIT_LOCAL_3( PhysicsSolverBase::gravityVector() ); - - KERNEL_WRAPPER kernelWrapper( dofNumber, - dofManager.rankOffset(), - localMatrix, - localRhs, - dt, - gravityVectorData, - std::forward< PARAMS >( params )... ); - - return finiteElement:: - regionBasedKernelApplication< parallelDevicePolicy< >, - CONSTITUTIVE_BASE, - CellElementSubRegion >( mesh, - regionNames, - this->solidMechanicsSolver()->getDiscretizationName(), - materialNamesString, - kernelWrapper ); -} - - } /* namespace geos */ #endif /* GEOS_PHYSICSSOLVERS_MULTIPHYSICS_MULTIPHASEPOROMECHANICS_HPP_ */ diff --git a/src/coreComponents/physicsSolvers/multiphysics/MultiphasePoromechanicsConformingFractures.cpp b/src/coreComponents/physicsSolvers/multiphysics/MultiphasePoromechanicsConformingFractures.cpp new file mode 100644 index 00000000000..8ef737ad998 --- /dev/null +++ b/src/coreComponents/physicsSolvers/multiphysics/MultiphasePoromechanicsConformingFractures.cpp @@ -0,0 +1,833 @@ +/* + * ------------------------------------------------------------------------------------------------------------ + * SPDX-License-Identifier: LGPL-2.1-only + * + * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC + * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University + * Copyright (c) 2018-2024 Chevron + * Copyright (c) 2019- GEOS/GEOSX Contributors + * All rights reserved + * + * See top level LICENSE, COPYRIGHT, CONTRIBUTORS, NOTICE, and ACKNOWLEDGEMENTS files for details. + * ------------------------------------------------------------------------------------------------------------ + */ + +/** + * @file MultiphasePoromechanicsConformingFractures.cpp + */ + +#include "MultiphasePoromechanicsConformingFractures.hpp" + +#include "constitutive/contact/HydraulicApertureRelationSelector.hpp" +#include "physicsSolvers/multiphysics/poromechanicsKernels/SinglePhasePoromechanics.hpp" +#include "physicsSolvers/multiphysics/poromechanicsKernels/ThermalSinglePhasePoromechanics.hpp" +#include "physicsSolvers/multiphysics/poromechanicsKernels/SinglePhasePoromechanicsFractures.hpp" +#include "finiteVolume/FluxApproximationBase.hpp" +#include "constitutive/fluid/multifluid/MultiFluidBase.hpp" + +namespace geos +{ + +using namespace constitutive; +using namespace dataRepository; +using namespace fields; + +template< typename FLOW_SOLVER > +MultiphasePoromechanicsConformingFractures< FLOW_SOLVER >::MultiphasePoromechanicsConformingFractures( const string & name, + Group * const parent ) + : Base( name, parent ) +{ + // TODO: MGR recipe + // LinearSolverParameters & params = this->m_linearSolverParameters.get(); + // params.mgr.strategy = LinearSolverParameters::MGR::StrategyType::multiphasePoromechanicsConformingFractures; + // params.mgr.separateComponents = false; + // params.mgr.displacementFieldName = solidMechanics::totalDisplacement::key(); + // params.dofsPerNode = 3; +} + +template< typename FLOW_SOLVER > +void MultiphasePoromechanicsConformingFractures< FLOW_SOLVER >::postInputInitialization() +{ + Base::postInputInitialization(); + + if( this->flowSolver()->isThermal() ) + { + GEOS_ERROR( "Thermal flow is not yet supported for multiphase poromechanics conforming fractures" ); + } +} + +template< typename FLOW_SOLVER > +void MultiphasePoromechanicsConformingFractures< FLOW_SOLVER >::setupCoupling( DomainPartition const & domain, + DofManager & dofManager ) const +{ + /// We need to add 2 coupling terms: + // 1. Poromechanical coupling in the bulk + Base::setupCoupling( domain, dofManager ); + + // 2. Traction - pressure coupling in the fracture + dofManager.addCoupling( m_flowDofKey, + fields::contact::traction::key(), + DofManager::Connector::Elem ); +} + +template< typename FLOW_SOLVER > +void MultiphasePoromechanicsConformingFractures< FLOW_SOLVER >::setupSystem( DomainPartition & domain, + DofManager & dofManager, + CRSMatrix< real64, globalIndex > & localMatrix, + ParallelVector & rhs, + ParallelVector & solution, + bool const setSparsity ) +{ + GEOS_MARK_FUNCTION; + + GEOS_UNUSED_VAR( setSparsity ); + + /// 1. Add all coupling terms handled directly by the DofManager + dofManager.setDomain( domain ); + this->setupDofs( domain, dofManager ); + dofManager.reorderByRank(); + + /// 2. Add coupling terms not added by the DofManager. + localIndex const numLocalRows = dofManager.numLocalDofs(); + + SparsityPattern< globalIndex > patternOriginal; + dofManager.setSparsityPattern( patternOriginal ); + + // Get the original row lengths (diagonal blocks only) + array1d< localIndex > rowLengths( patternOriginal.numRows() ); + for( localIndex localRow = 0; localRow < patternOriginal.numRows(); ++localRow ) + { + rowLengths[localRow] = patternOriginal.numNonZeros( localRow ); + } + + // Add the number of nonzeros induced by coupling + addTransmissibilityCouplingNNZ( domain, dofManager, rowLengths.toView() ); + + // Create a new pattern with enough capacity for coupled matrix + SparsityPattern< globalIndex > pattern; + pattern.resizeFromRowCapacities< parallelHostPolicy >( patternOriginal.numRows(), + patternOriginal.numColumns(), + rowLengths.data() ); + + // Copy the original nonzeros + for( localIndex localRow = 0; localRow < patternOriginal.numRows(); ++localRow ) + { + globalIndex const * cols = patternOriginal.getColumns( localRow ).dataIfContiguous(); + pattern.insertNonZeros( localRow, cols, cols + patternOriginal.numNonZeros( localRow ) ); + } + + // Add the nonzeros from coupling + addTransmissibilityCouplingPattern( domain, dofManager, pattern.toView() ); + + localMatrix.setName( this->getName() + "/matrix" ); + localMatrix.assimilate< parallelDevicePolicy<> >( std::move( pattern ) ); + + rhs.setName( this->getName() + "/rhs" ); + rhs.create( numLocalRows, MPI_COMM_GEOS ); + + solution.setName( this->getName() + "/solution" ); + solution.create( numLocalRows, MPI_COMM_GEOS ); + + setUpDflux_dApertureMatrix( domain, dofManager, localMatrix ); + + // if( !m_precond && m_linearSolverParameters.get().solverType != LinearSolverParameters::SolverType::direct ) + // { + // createPreconditioner( domain ); + // } +} + +template< typename FLOW_SOLVER > +void MultiphasePoromechanicsConformingFractures< FLOW_SOLVER >::assembleSystem( real64 const time_n, + real64 const dt, + DomainPartition & domain, + DofManager const & dofManager, + CRSMatrixView< real64, globalIndex const > const & localMatrix, + arrayView1d< real64 > const & localRhs ) +{ + GEOS_MARK_FUNCTION; + + this->solidMechanicsSolver()->synchronizeFractureState( domain ); + + assembleElementBasedContributions( time_n, + dt, + domain, + dofManager, + localMatrix, + localRhs ); + + // Assemble fluxes 3D/2D and get dFluidResidualDAperture + this->flowSolver()->assembleHydrofracFluxTerms( time_n, + dt, + domain, + dofManager, + localMatrix, + localRhs, + getDerivativeFluxResidual_dNormalJump() ); + + // This step must occur after the fluxes are assembled because that's when DerivativeFluxResidual_dAperture is filled. + assembleCouplingTerms( time_n, + dt, + domain, + dofManager, + localMatrix, + localRhs ); +} + +template< typename FLOW_SOLVER > +void MultiphasePoromechanicsConformingFractures< FLOW_SOLVER >::assembleElementBasedContributions( real64 const time_n, + real64 const dt, + DomainPartition & domain, + DofManager const & dofManager, + CRSMatrixView< real64, globalIndex const > const & localMatrix, + arrayView1d< real64 > const & localRhs ) +{ + GEOS_UNUSED_VAR( time_n, dt ); + + /// 3. assemble Force Residual w.r.t. pressure and Flow mass residual w.r.t. displacement + + Base::assembleElementBasedTerms( time_n, dt, domain, dofManager, localMatrix, localRhs ); + + // Flow accumulation for fractures + this->forDiscretizationOnMeshTargets( domain.getMeshBodies(), [&] ( string const &, + MeshLevel & mesh, + arrayView1d< string const > const & regionNames ) + { + mesh.getElemManager().forElementSubRegions< FaceElementSubRegion >( regionNames, [&]( localIndex const, + FaceElementSubRegion const & subRegion ) + { + this->flowSolver()->accumulationAssemblyLaunch( dofManager, subRegion, localMatrix, localRhs ); + } ); + } ); + + this->solidMechanicsSolver()->assembleContact( domain, dofManager, localMatrix, localRhs ); +} + +template< typename FLOW_SOLVER > +void MultiphasePoromechanicsConformingFractures< FLOW_SOLVER >::assembleCouplingTerms( real64 const time_n, + real64 const dt, + DomainPartition const & domain, + DofManager const & dofManager, + CRSMatrixView< real64, globalIndex const > const & localMatrix, + arrayView1d< real64 > const & localRhs ) +{ + GEOS_UNUSED_VAR( time_n, dt ); + // These 2 steps need to occur after the fluxes are assembled because that's when DerivativeFluxResidual_dAperture is filled. + this->forDiscretizationOnMeshTargets( domain.getMeshBodies(), [&] ( string const &, + MeshLevel const & mesh, + arrayView1d< string const > const & regionNames ) + { + /// 3. assemble Force Residual w.r.t. pressure and Flow mass residual w.r.t. displacement + assembleForceResidualDerivativeWrtPressure( mesh, regionNames, dofManager, localMatrix, localRhs ); + assembleFluidMassResidualDerivativeWrtDisplacement( mesh, regionNames, dofManager, localMatrix, localRhs ); + } ); +} + +template< typename FLOW_SOLVER > +void MultiphasePoromechanicsConformingFractures< FLOW_SOLVER >:: +setUpDflux_dApertureMatrix( DomainPartition & domain, + DofManager const & GEOS_UNUSED_PARAM( dofManager ), + CRSMatrix< real64, globalIndex > & localMatrix ) +{ + integer const numComp = this->flowSolver()->numFluidComponents(); + + this->forDiscretizationOnMeshTargets( domain.getMeshBodies(), [&] ( string const &, + MeshLevel const & mesh, + arrayView1d< string const > const & regionNames ) + { + std::unique_ptr< CRSMatrix< real64, localIndex > > & derivativeFluxResidual_dAperture = this->getRefDerivativeFluxResidual_dAperture(); + + { + // calculate number of fracture elements + localIndex numRows = 0; + mesh.getElemManager().forElementSubRegions< FaceElementSubRegion >( regionNames, + [&]( localIndex const, FaceElementSubRegion const & subRegion ) + { + numRows += subRegion.size(); + } ); + // number of columns (derivatives) = number of fracture elements + localIndex numCol = numRows; + // number of rows (equations) = number of fracture elements * number of components + numRows *= numComp; + + derivativeFluxResidual_dAperture = std::make_unique< CRSMatrix< real64, localIndex > >( numRows, numCol ); + derivativeFluxResidual_dAperture->setName( this->getName() + "/derivativeFluxResidual_dAperture" ); + + derivativeFluxResidual_dAperture->reserveNonZeros( localMatrix.numNonZeros() ); + localIndex maxRowSize = -1; + for( localIndex row = 0; row < localMatrix.numRows(); ++row ) + { + localIndex const rowSize = localMatrix.numNonZeros( row ); + maxRowSize = maxRowSize > rowSize ? maxRowSize : rowSize; + } + // TODO This is way too much. The With the full system rowSize is not a good estimate for this. + for( localIndex row = 0; row < numRows * numComp; ++row ) + { + derivativeFluxResidual_dAperture->reserveNonZeros( row, maxRowSize ); + } + } + + NumericalMethodsManager const & numericalMethodManager = domain.getNumericalMethodManager(); + FiniteVolumeManager const & fvManager = numericalMethodManager.getFiniteVolumeManager(); + FluxApproximationBase const & fluxApprox = fvManager.getFluxApproximation( this->flowSolver()->getDiscretizationName() ); + + fluxApprox.forStencils< SurfaceElementStencil >( mesh, [&]( SurfaceElementStencil const & stencil ) + { + for( localIndex iconn = 0; iconn < stencil.size(); ++iconn ) + { + localIndex const numFluxElems = stencil.stencilSize( iconn ); + typename SurfaceElementStencil::IndexContainerViewConstType const & sei = stencil.getElementIndices(); + + for( localIndex k0 = 0; k0 < numFluxElems; ++k0 ) + { + for( localIndex k1 = 0; k1 < numFluxElems; ++k1 ) + { + for( integer ic = 0; ic < numComp; ic++ ) + { + derivativeFluxResidual_dAperture->insertNonZero( sei[iconn][k0] * numComp + ic, sei[iconn][k1], 0.0 ); + } + } + } + } + } ); + } ); +} + +template< typename FLOW_SOLVER > +void MultiphasePoromechanicsConformingFractures< FLOW_SOLVER >:: +addTransmissibilityCouplingNNZ( DomainPartition const & domain, + DofManager const & dofManager, + arrayView1d< localIndex > const & rowLengths ) const +{ + GEOS_MARK_FUNCTION; + + this->forDiscretizationOnMeshTargets( domain.getMeshBodies(), [&] ( string const &, // meshBodyName, + MeshLevel const & mesh, + arrayView1d< string const > const & ) // regionNames + { + ElementRegionManager const & elemManager = mesh.getElemManager(); + + string const flowDofKey = dofManager.getKey( m_flowDofKey ); + + globalIndex const rankOffset = dofManager.rankOffset(); + + NumericalMethodsManager const & numericalMethodManager = domain.getNumericalMethodManager(); + FiniteVolumeManager const & fvManager = numericalMethodManager.getFiniteVolumeManager(); + FluxApproximationBase const & stabilizationMethod = fvManager.getFluxApproximation( this->solidMechanicsSolver()->getStabilizationName() ); + + stabilizationMethod.forStencils< SurfaceElementStencil >( mesh, [&]( SurfaceElementStencil const & stencil ) + { + for( localIndex iconn=0; iconn( sesri[iconn][0] ); + + ArrayOfArraysView< localIndex const > const elemsToNodes = elementSubRegion.nodeList().toViewConst(); + + arrayView1d< globalIndex const > const faceElementDofNumber = + elementSubRegion.getReference< array1d< globalIndex > >( flowDofKey ); + + for( localIndex k0=0; k0= 0 && rowNumber < rowLengths.size() ) + { + for( localIndex k1=0; k1 +void MultiphasePoromechanicsConformingFractures< FLOW_SOLVER >:: +addTransmissibilityCouplingPattern( DomainPartition const & domain, + DofManager const & dofManager, + SparsityPatternView< globalIndex > const & pattern ) const +{ + GEOS_MARK_FUNCTION; + + this->forDiscretizationOnMeshTargets( domain.getMeshBodies(), [&] ( string const &, + MeshLevel const & mesh, + arrayView1d< string const > const & ) + { + FaceManager const & faceManager = mesh.getFaceManager(); + NodeManager const & nodeManager = mesh.getNodeManager(); + ElementRegionManager const & elemManager = mesh.getElemManager(); + + string const dispDofKey = dofManager.getKey( solidMechanics::totalDisplacement::key() ); + string const flowDofKey = dofManager.getKey( m_flowDofKey ); + + arrayView1d< globalIndex const > const & + dispDofNumber = nodeManager.getReference< globalIndex_array >( dispDofKey ); + ArrayOfArraysView< localIndex const > const & faceToNodeMap = faceManager.nodeList().toViewConst(); + + // Get the finite volume method used to compute the stabilization + NumericalMethodsManager const & numericalMethodManager = domain.getNumericalMethodManager(); + FiniteVolumeManager const & fvManager = numericalMethodManager.getFiniteVolumeManager(); + FluxApproximationBase const & fvDiscretization = fvManager.getFluxApproximation( this->flowSolver()->getDiscretizationName() ); + + SurfaceElementRegion const & fractureRegion = + elemManager.getRegion< SurfaceElementRegion >( this->solidMechanicsSolver()->getUniqueFractureRegionName() ); + FaceElementSubRegion const & fractureSubRegion = + fractureRegion.getUniqueSubRegion< FaceElementSubRegion >(); + + GEOS_ERROR_IF( !fractureSubRegion.hasWrapper( flow::pressure::key() ), + this->getDataContext() << ": The fracture subregion must contain pressure field." ); + + arrayView2d< localIndex const > const elem2dToFaces = fractureSubRegion.faceList().toViewConst(); + + arrayView1d< globalIndex const > const & + flowDofNumber = fractureSubRegion.getReference< globalIndex_array >( flowDofKey ); + + globalIndex const rankOffset = dofManager.rankOffset(); + + fvDiscretization.forStencils< SurfaceElementStencil >( mesh, [&]( SurfaceElementStencil const & stencil ) + { + forAll< serialPolicy >( stencil.size(), [=] ( localIndex const iconn ) + { + localIndex const numFluxElems = stencil.stencilSize( iconn ); + + // A fracture connector has to be an edge shared by two faces + if( numFluxElems == 2 ) + { + typename SurfaceElementStencil::IndexContainerViewConstType const & sei = stencil.getElementIndices(); + + // First index: face element. Second index: node + for( localIndex kf = 0; kf < 2; ++kf ) + { + // Set row DOF index + // Note that the 1-kf index is intentional, as this is coupling the pressure of one face cell + // to the nodes of the adjacent cell + localIndex const rowIndex = flowDofNumber[sei[iconn][1-kf]] - rankOffset; + + if( rowIndex >= 0 && rowIndex < pattern.numRows() ) + { + + // Get fracture, face and region/subregion/element indices (for elements on both sides) + localIndex const fractureIndex = sei[iconn][kf]; + + // Get the number of nodes + localIndex const numNodesPerFace = faceToNodeMap.sizeOfArray( elem2dToFaces[fractureIndex][0] ); + + // Loop over the two sides of each fracture element + for( localIndex kf1 = 0; kf1 < 2; ++kf1 ) + { + localIndex const faceIndex = elem2dToFaces[fractureIndex][kf1]; + + // Save the list of DOF associated with nodes + for( localIndex a=0; a( i ); + pattern.insertNonZero( rowIndex, colIndex ); + } + } + } + } + } + } + } ); + } ); + } ); +} + +template< typename FLOW_SOLVER > +void MultiphasePoromechanicsConformingFractures< FLOW_SOLVER >:: +assembleForceResidualDerivativeWrtPressure( MeshLevel const & mesh, + arrayView1d< string const > const & regionNames, + DofManager const & dofManager, + CRSMatrixView< real64, globalIndex const > const & localMatrix, + arrayView1d< real64 > const & localRhs ) +{ + GEOS_MARK_FUNCTION; + + FaceManager const & faceManager = mesh.getFaceManager(); + NodeManager const & nodeManager = mesh.getNodeManager(); + EdgeManager const & edgeManager = mesh.getEdgeManager(); + ElementRegionManager const & elemManager = mesh.getElemManager(); + + ArrayOfArraysView< localIndex const > const & faceToNodeMap = faceManager.nodeList().toViewConst(); + ArrayOfArraysView< localIndex const > const faceToEdgeMap = faceManager.edgeList().toViewConst(); + arrayView2d< localIndex const > const & edgeToNodeMap = edgeManager.nodeList().toViewConst(); + arrayView2d< real64 const > faceCenters = faceManager.faceCenter(); + arrayView2d< real64 const > const & faceNormal = faceManager.faceNormal(); + arrayView1d< real64 const > faceAreas = faceManager.faceArea(); + + string const & dispDofKey = dofManager.getKey( solidMechanics::totalDisplacement::key() ); + string const & flowDofKey = dofManager.getKey( m_flowDofKey ); + + arrayView1d< globalIndex const > const & + dispDofNumber = nodeManager.getReference< globalIndex_array >( dispDofKey ); + globalIndex const rankOffset = dofManager.rankOffset(); + + // Get the coordinates for all nodes + arrayView2d< real64 const, nodes::REFERENCE_POSITION_USD > const & nodePosition = nodeManager.referencePosition(); + + elemManager.forElementSubRegions< FaceElementSubRegion >( regionNames, + [&]( localIndex const, + FaceElementSubRegion const & subRegion ) + { + arrayView1d< globalIndex const > const & + flowDofNumber = subRegion.getReference< globalIndex_array >( flowDofKey ); + arrayView1d< real64 const > const & pressure = subRegion.getReference< array1d< real64 > >( flow::pressure::key() ); + arrayView2d< localIndex const > const & elemsToFaces = subRegion.faceList().toViewConst(); + + forAll< serialPolicy >( subRegion.size(), [=]( localIndex const kfe ) + { + localIndex const kf0 = elemsToFaces[kfe][0]; + localIndex const numNodesPerFace = faceToNodeMap.sizeOfArray( kf0 ); + + real64 Nbar[3]; + Nbar[ 0 ] = faceNormal[elemsToFaces[kfe][0]][0] - faceNormal[elemsToFaces[kfe][1]][0]; + Nbar[ 1 ] = faceNormal[elemsToFaces[kfe][0]][1] - faceNormal[elemsToFaces[kfe][1]][1]; + Nbar[ 2 ] = faceNormal[elemsToFaces[kfe][0]][2] - faceNormal[elemsToFaces[kfe][1]][2]; + LvArray::tensorOps::normalize< 3 >( Nbar ); + globalIndex rowDOF[3 * m_maxFaceNodes]; // this needs to be changed when dealing with arbitrary element types + real64 nodeRHS[3 * m_maxFaceNodes]; + stackArray1d< real64, 3 * m_maxFaceNodes > dRdP( 3*m_maxFaceNodes ); + globalIndex colDOF[1]; + colDOF[0] = flowDofNumber[kfe]; // pressure is always first + + for( localIndex kf=0; kf<2; ++kf ) + { + localIndex const faceIndex = elemsToFaces[kfe][kf]; + + // Compute local area contribution for each node + stackArray1d< real64, FaceManager::maxFaceNodes() > nodalArea; + this->solidMechanicsSolver()->computeFaceNodalArea( elemsToFaces[kfe][kf], + nodePosition, + faceToNodeMap, + faceToEdgeMap, + edgeToNodeMap, + faceCenters, + faceNormal, + faceAreas, + nodalArea ); + for( localIndex a=0; a( globalNodalForce, Nbar, nodalForceMag ); + + for( localIndex i=0; i<3; ++i ) + { + rowDOF[3*a+i] = dispDofNumber[faceToNodeMap( faceIndex, a )] + LvArray::integerConversion< globalIndex >( i ); + // Opposite sign w.r.t. theory because of minus sign in stiffness matrix definition (K < 0) + nodeRHS[3*a+i] = +globalNodalForce[i] * pow( -1, kf ); + + // Opposite sign w.r.t. theory because of minus sign in stiffness matrix definition (K < 0) + dRdP( 3*a+i ) = -nodalArea[a] * Nbar[i] * pow( -1, kf ); + } + } + + for( localIndex idof = 0; idof < numNodesPerFace * 3; ++idof ) + { + localIndex const localRow = LvArray::integerConversion< localIndex >( rowDOF[idof] - rankOffset ); + + if( localRow >= 0 && localRow < localMatrix.numRows() ) + { + localMatrix.addToRow< parallelHostAtomic >( localRow, + colDOF, + &dRdP[idof], + 1 ); + RAJA::atomicAdd( parallelHostAtomic{}, &localRhs[localRow], nodeRHS[idof] ); + } + } + } + } ); + } ); +} + +template< typename FLOW_SOLVER > +void MultiphasePoromechanicsConformingFractures< FLOW_SOLVER >:: +assembleFluidMassResidualDerivativeWrtDisplacement( MeshLevel const & mesh, + arrayView1d< string const > const & regionNames, + DofManager const & dofManager, + CRSMatrixView< real64, globalIndex const > const & localMatrix, + arrayView1d< real64 > const & GEOS_UNUSED_PARAM( localRhs ) ) +{ + GEOS_MARK_FUNCTION; + + integer const numComp = this->flowSolver()->numFluidComponents(); + + FaceManager const & faceManager = mesh.getFaceManager(); + NodeManager const & nodeManager = mesh.getNodeManager(); + EdgeManager const & edgeManager = mesh.getEdgeManager(); + ElementRegionManager const & elemManager = mesh.getElemManager(); + + ArrayOfArraysView< localIndex const > const & faceToNodeMap = faceManager.nodeList().toViewConst(); + ArrayOfArraysView< localIndex const > const faceToEdgeMap = faceManager.edgeList().toViewConst(); + arrayView2d< localIndex const > const & edgeToNodeMap = edgeManager.nodeList().toViewConst(); + arrayView2d< real64 const > faceCenters = faceManager.faceCenter(); + arrayView2d< real64 const > const & faceNormal = faceManager.faceNormal(); + arrayView1d< real64 const > faceAreas = faceManager.faceArea(); + + CRSMatrixView< real64 const, localIndex const > const & + dFluxResidual_dNormalJump = getDerivativeFluxResidual_dNormalJump().toViewConst(); + + string const & dispDofKey = dofManager.getKey( solidMechanics::totalDisplacement::key() ); + string const & flowDofKey = dofManager.getKey( m_flowDofKey ); + + arrayView1d< globalIndex const > const & + dispDofNumber = nodeManager.getReference< globalIndex_array >( dispDofKey ); + globalIndex const rankOffset = dofManager.rankOffset(); + + // Get the coordinates for all nodes + arrayView2d< real64 const, nodes::REFERENCE_POSITION_USD > const & nodePosition = nodeManager.referencePosition(); + + elemManager.forElementSubRegions< FaceElementSubRegion >( regionNames, + [&]( localIndex const, + FaceElementSubRegion const & subRegion ) + { + arrayView2d< real64 const, compflow::USD_COMP > const compDens = subRegion.getField< fields::flow::globalCompDensity >(); + + arrayView1d< globalIndex const > const & flowDofNumber = subRegion.getReference< array1d< globalIndex > >( flowDofKey ); + + arrayView2d< localIndex const > const & elemsToFaces = subRegion.faceList().toViewConst(); + arrayView1d< real64 const > const & area = subRegion.getElementArea().toViewConst(); + + arrayView1d< integer const > const & fractureState = subRegion.getField< fields::contact::fractureState >(); + + forAll< serialPolicy >( subRegion.size(), [&]( localIndex const kfe ) + { + localIndex const kf0 = elemsToFaces[kfe][0], kf1 = elemsToFaces[kfe][1]; + localIndex const numNodesPerFace = faceToNodeMap.sizeOfArray( kf0 ); + globalIndex nodeDOF[2*3*m_maxFaceNodes]; + + real64 Nbar[3]; + Nbar[ 0 ] = faceNormal[kf0][0] - faceNormal[kf1][0]; + Nbar[ 1 ] = faceNormal[kf0][1] - faceNormal[kf1][1]; + Nbar[ 2 ] = faceNormal[kf0][2] - faceNormal[kf1][2]; + LvArray::tensorOps::normalize< 3 >( Nbar ); + + stackArray2d< real64, 2*3*m_maxFaceNodes * MultiFluidBase::MAX_NUM_COMPONENTS > dRdU( MultiFluidBase::MAX_NUM_COMPONENTS, 2*3*m_maxFaceNodes ); + + bool const isFractureOpen = ( fractureState[kfe] == fields::contact::FractureState::Open ); + + // Accumulation derivative + if( isFractureOpen ) + { + for( localIndex kf=0; kf<2; ++kf ) + { + // Compute local area contribution for each node + stackArray1d< real64, FaceManager::maxFaceNodes() > nodalArea; + this->solidMechanicsSolver()->computeFaceNodalArea( elemsToFaces[kfe][kf], + nodePosition, + faceToNodeMap, + faceToEdgeMap, + edgeToNodeMap, + faceCenters, + faceNormal, + faceAreas, + nodalArea ); + + // TODO: move to something like this plus a static method. + // localIndex const numNodesPerFace = faceToNodeMap.sizeOfArray( elemsToFaces[kfe][kf] ); + // stackArray1d nodalArea( numNodesPerFace ); + + for( localIndex a=0; a( i ); + real64 const dAper_dU = -pow( -1, kf ) * Nbar[i]; + for( integer ic = 0; ic < numComp; ic++ ) + { + dRdU[ ic ][ kf*3*numNodesPerFace + 3*a + i ] = dVolume_dAperture * dAper_dU * compDens[kfe][ic]; // assuming poro=1 + } + } + } + } + + localIndex const localRow = LvArray::integerConversion< localIndex >( flowDofNumber[kfe] - rankOffset ); + if( localRow >= 0 && localRow < localMatrix.numRows() ) + { + integer const numRows = numComp; + for( integer i = 0; i < numRows; ++i ) + { + localMatrix.addToRowBinarySearchUnsorted< serialAtomic >( localRow+i, + nodeDOF, + dRdU[i], + 2 * 3 * numNodesPerFace ); + } + } + } + + // flux derivative + bool skipAssembly = true; + for( integer ic = 0; ic < numComp; ic++ ) + { + localIndex const numColumns = dFluxResidual_dNormalJump.numNonZeros( kfe * numComp + ic ); + arraySlice1d< localIndex const > const & columns = dFluxResidual_dNormalJump.getColumns( kfe * numComp + ic ); + // TODO uncomment and fix build + arraySlice1d< real64 const > const & values = dFluxResidual_dNormalJump.getEntries( kfe * numComp + ic ); + + skipAssembly &= !isFractureOpen; + + for( localIndex kfe1 = 0; kfe1 < numColumns; ++kfe1 ) + { + real64 const dR_dAper = values[kfe1]; + localIndex const kfe2 = columns[kfe1]; + + bool const isOpen = ( fractureState[kfe2] == fields::contact::FractureState::Open ); + skipAssembly &= !isOpen; + + for( localIndex kf = 0; kf < 2; ++kf ) + { + //TODO: We should avoid allocating LvArrays inside kernel + stackArray1d< real64, FaceManager::maxFaceNodes() > nodalArea; + this->solidMechanicsSolver()->computeFaceNodalArea( elemsToFaces[kfe2][kf], + nodePosition, + faceToNodeMap, + faceToEdgeMap, + edgeToNodeMap, + faceCenters, + faceNormal, + faceAreas, + nodalArea ); + + for( localIndex a=0; a( i ); + real64 const dAper_dU = -pow( -1, kf ) * Nbar[i] * ( nodalArea[a] / area[kfe2] ); + dRdU[ ic ][ kf*3*numNodesPerFace + 3*a + i ] = dR_dAper * dAper_dU; + } + } + } + } + + if( !skipAssembly ) + { + localIndex const localRow = LvArray::integerConversion< localIndex >( flowDofNumber[kfe] - rankOffset ); + if( localRow >= 0 && localRow < localMatrix.numRows() ) + { + integer const numRows = numComp; + for( integer i = 0; i < numRows; ++i ) + { + localMatrix.addToRowBinarySearchUnsorted< serialAtomic >( localRow+i, + nodeDOF, + dRdU[i], + 2 * 3 * numNodesPerFace ); + } + } + } + } + } ); + } ); +} + +template< typename FLOW_SOLVER > +void MultiphasePoromechanicsConformingFractures< FLOW_SOLVER >::updateState( DomainPartition & domain ) +{ + GEOS_MARK_FUNCTION; + + // call base poromechanics update + Base::updateState( domain ); + // need to call solid mechanics update separately to compute face displacement jump + this->solidMechanicsSolver()->updateState( domain ); + + // remove the contribution of the hydraulic aperture from the stencil weights + this->flowSolver()->prepareStencilWeights( domain ); + + updateHydraulicApertureAndFracturePermeability( domain ); + + // update the stencil weights using the updated hydraulic aperture + this->flowSolver()->updateStencilWeights( domain ); +} + +template< typename FLOW_SOLVER > +void MultiphasePoromechanicsConformingFractures< FLOW_SOLVER >::updateHydraulicApertureAndFracturePermeability( DomainPartition & domain ) +{ + this->forDiscretizationOnMeshTargets( domain.getMeshBodies(), [&] ( string const &, + MeshLevel & mesh, + arrayView1d< string const > const & regionNames ) + { + ElementRegionManager & elemManager = mesh.getElemManager(); + + elemManager.forElementSubRegions< FaceElementSubRegion >( regionNames, + [&]( localIndex const, + FaceElementSubRegion & subRegion ) + { + arrayView2d< real64 const > const dispJump = subRegion.getField< contact::dispJump >(); + arrayView1d< real64 const > const area = subRegion.getElementArea(); + arrayView1d< real64 const > const volume = subRegion.getElementVolume(); + arrayView2d< real64 const > const fractureTraction = subRegion.getField< fields::contact::traction >(); + arrayView1d< real64 const > const pressure = subRegion.getField< fields::flow::pressure >(); + arrayView1d< real64 const > const oldHydraulicAperture = subRegion.getField< fields::flow::aperture0 >(); + + arrayView1d< real64 > const aperture = subRegion.getElementAperture(); + arrayView1d< real64 > const hydraulicAperture = subRegion.getField< flow::hydraulicAperture >(); + arrayView1d< real64 > const deltaVolume = subRegion.getField< flow::deltaVolume >(); + + string const porousSolidName = subRegion.getReference< string >( FlowSolverBase::viewKeyStruct::solidNamesString() ); + CoupledSolidBase & porousSolid = subRegion.getConstitutiveModel< CoupledSolidBase >( porousSolidName ); + + string const & hydraulicApertureRelationName = subRegion.template getReference< string >( viewKeyStruct::hydraulicApertureRelationNameString() ); + HydraulicApertureBase const & hydraulicApertureModel = this->template getConstitutiveModel< HydraulicApertureBase >( subRegion, hydraulicApertureRelationName ); + + constitutiveUpdatePassThru( hydraulicApertureModel, [&] ( auto & castedHydraulicAperture ) + { + using HydraulicApertureType = TYPEOFREF( castedHydraulicAperture ); + typename HydraulicApertureType::KernelWrapper hydraulicApertureWrapper = castedHydraulicAperture.createKernelWrapper(); + + constitutive::ConstitutivePassThru< CompressibleSolidBase >::execute( porousSolid, [=, &subRegion] ( auto & castedPorousSolid ) + { + typename TYPEOFREF( castedPorousSolid ) ::KernelWrapper porousMaterialWrapper = castedPorousSolid.createKernelUpdates(); + + poromechanicsFracturesKernels::StateUpdateKernel:: + launch< parallelDevicePolicy<> >( subRegion.size(), + porousMaterialWrapper, + hydraulicApertureWrapper, + dispJump, + pressure, + area, + volume, + deltaVolume, + aperture, + oldHydraulicAperture, + hydraulicAperture, + fractureTraction ); + + } ); + } ); + } ); + } ); +} + +template class MultiphasePoromechanicsConformingFractures<>; +//template class MultiphasePoromechanicsConformingFractures< MultiphaseReservoirAndWells<> >; + +namespace +{ +//typedef MultiphasePoromechanicsConformingFractures< MultiphaseReservoirAndWells<> > +// MultiphasePoromechanicsConformingFractures; +//REGISTER_CATALOG_ENTRY( PhysicsSolverBase, MultiphasePoromechanicsConformingFractures, string const &, Group * const ) +typedef MultiphasePoromechanicsConformingFractures<> MultiphasePoromechanicsConformingFractures; +REGISTER_CATALOG_ENTRY( PhysicsSolverBase, MultiphasePoromechanicsConformingFractures, string const &, Group * const ) +} + +} /* namespace geos */ diff --git a/src/coreComponents/physicsSolvers/multiphysics/MultiphasePoromechanicsConformingFractures.hpp b/src/coreComponents/physicsSolvers/multiphysics/MultiphasePoromechanicsConformingFractures.hpp new file mode 100644 index 00000000000..cd8d7c0073b --- /dev/null +++ b/src/coreComponents/physicsSolvers/multiphysics/MultiphasePoromechanicsConformingFractures.hpp @@ -0,0 +1,203 @@ +/* + * ------------------------------------------------------------------------------------------------------------ + * SPDX-License-Identifier: LGPL-2.1-only + * + * Copyright (c) 2018-2020 Lawrence Livermore National Security LLC + * Copyright (c) 2018-2020 The Board of Trustees of the Leland Stanford Junior University + * Copyright (c) 2018-2020 TotalEnergies + * Copyright (c) 2019- GEOSX Contributors + * All rights reserved + * + * See top level LICENSE, COPYRIGHT, CONTRIBUTORS, NOTICE, and ACKNOWLEDGEMENTS files for details. + * ------------------------------------------------------------------------------------------------------------ + */ + +/** + * @file MultiphasePoromechanicsConformingFractures.hpp + */ + +#ifndef GEOS_PHYSICSSOLVERS_MULTIPHYSICS_MULTIPHASEPOROMECHANICSCONFORMINGFRACTURES_HPP_ +#define GEOS_PHYSICSSOLVERS_MULTIPHYSICS_MULTIPHASEPOROMECHANICSCONFORMINGFRACTURES_HPP_ + +#include "physicsSolvers/multiphysics/MultiphasePoromechanics.hpp" +#include "physicsSolvers/contact/SolidMechanicsLagrangeContact.hpp" + +namespace geos +{ + +template< typename FLOW_SOLVER = CompositionalMultiphaseBase > +class MultiphasePoromechanicsConformingFractures : public MultiphasePoromechanics< FLOW_SOLVER, SolidMechanicsLagrangeContact > +{ +public: + + using Base = MultiphasePoromechanics< FLOW_SOLVER, SolidMechanicsLagrangeContact >; + using Base::m_solvers; + using Base::m_dofManager; + using Base::m_localMatrix; + using Base::m_rhs; + using Base::m_solution; + + /// String used to form the solverName used to register solvers in CoupledSolver + static string coupledSolverAttributePrefix() { return "poromechanicsConformingFractures"; } + + /** + * @brief main constructor for MultiphasePoromechanicsConformingFractures objects + * @param name the name of this instantiation of MultiphasePoromechanicsConformingFractures in the repository + * @param parent the parent group of this instantiation of MultiphasePoromechanicsConformingFractures + */ + MultiphasePoromechanicsConformingFractures( const string & name, + dataRepository::Group * const parent ); + + /// Destructor for the class + ~MultiphasePoromechanicsConformingFractures() override {} + + /** + * @brief name of the node manager in the object catalog + * @return string that contains the catalog name to generate a new SinglePhasePoromechanicsConformingFractures object through the object + * catalog. + */ + static string catalogName() + { + if constexpr ( std::is_same_v< FLOW_SOLVER, CompositionalMultiphaseBase > ) + { + return "MultiphasePoromechanicsConformingFractures"; + } + else + { + return FLOW_SOLVER::catalogName() + "PoromechanicsConformingFractures"; + } + } + + /** + * @copydoc PhysicsSolverBase::getCatalogName() + */ + string getCatalogName() const override { return catalogName(); } + + /** + * @defgroup Solver Interface Functions + * + * These functions provide the primary interface that is required for derived classes + */ + /**@{*/ + + virtual void setupCoupling( DomainPartition const & domain, + DofManager & dofManager ) const override; + + virtual void setupSystem( DomainPartition & domain, + DofManager & dofManager, + CRSMatrix< real64, globalIndex > & localMatrix, + ParallelVector & rhs, + ParallelVector & solution, + bool const setSparsity = true ) override; + + virtual void assembleSystem( real64 const time, + real64 const dt, + DomainPartition & domain, + DofManager const & dofManager, + CRSMatrixView< real64, globalIndex const > const & localMatrix, + arrayView1d< real64 > const & localRhs ) override final; + + virtual void updateState( DomainPartition & domain ) override final; + + /**@}*/ + +protected: + + virtual void postInputInitialization() override; + +private: + + struct viewKeyStruct : public Base::viewKeyStruct + {}; + + static const localIndex m_maxFaceNodes=11; // Maximum number of nodes on a contact face + + void assembleElementBasedContributions( real64 const time_n, + real64 const dt, + DomainPartition & domain, + DofManager const & dofManager, + CRSMatrixView< real64, globalIndex const > const & localMatrix, + arrayView1d< real64 > const & localRhs ); + + virtual void assembleCouplingTerms( real64 const time_n, + real64 const dt, + DomainPartition const & domain, + DofManager const & dofManager, + CRSMatrixView< real64, globalIndex const > const & localMatrix, + arrayView1d< real64 > const & localRhs ) override final; + + void assembleForceResidualDerivativeWrtPressure( MeshLevel const & mesh, + arrayView1d< string const > const & regionNames, + DofManager const & dofManager, + CRSMatrixView< real64, globalIndex const > const & localMatrix, + arrayView1d< real64 > const & localRhs ); + + void assembleFluidMassResidualDerivativeWrtDisplacement( MeshLevel const & mesh, + arrayView1d< string const > const & regionNames, + DofManager const & dofManager, + CRSMatrixView< real64, globalIndex const > const & localMatrix, + arrayView1d< real64 > const & localRhs ); + + /** + * @Brief add the nnz induced by the flux-aperture coupling + * @param domain the physical domain object + * @param dofManager degree-of-freedom manager associated with the linear system + * @param rowLenghts the nnz in each row + */ + void addTransmissibilityCouplingNNZ( DomainPartition const & domain, + DofManager const & dofManager, + arrayView1d< localIndex > const & rowLengths ) const; + + /** + * @Brief add the sparsity pattern induced by the flux-aperture coupling + * @param domain the physical domain object + * @param dofManager degree-of-freedom manager associated with the linear system + * @param pattern the sparsity pattern + */ + void addTransmissibilityCouplingPattern( DomainPartition const & domain, + DofManager const & dofManager, + SparsityPatternView< globalIndex > const & pattern ) const; + + /** + * @brief Set up the Dflux_dApertureMatrix object + * + * @param domain + * @param dofManager + * @param localMatrix + */ + void setUpDflux_dApertureMatrix( DomainPartition & domain, + DofManager const & dofManager, + CRSMatrix< real64, globalIndex > & localMatrix ); + + /** + * @brief + * + * @param domain + */ + void updateHydraulicApertureAndFracturePermeability( DomainPartition & domain ); + + + std::unique_ptr< CRSMatrix< real64, localIndex > > & getRefDerivativeFluxResidual_dAperture() + { + return m_derivativeFluxResidual_dAperture; + } + + CRSMatrixView< real64, localIndex const > getDerivativeFluxResidual_dNormalJump() + { + return m_derivativeFluxResidual_dAperture->toViewConstSizes(); + } + + CRSMatrixView< real64 const, localIndex const > getDerivativeFluxResidual_dNormalJump() const + { + return m_derivativeFluxResidual_dAperture->toViewConst(); + } + + std::unique_ptr< CRSMatrix< real64, localIndex > > m_derivativeFluxResidual_dAperture; + + string const m_flowDofKey = CompositionalMultiphaseBase::viewKeyStruct::elemDofFieldString(); + +}; + +} /* namespace geos */ + +#endif /* GEOS_PHYSICSSOLVERS_MULTIPHYSICS_MULTIPHASEPOROMECHANICSCONFORMINGFRACTURES_HPP_ */ diff --git a/src/coreComponents/physicsSolvers/multiphysics/OneWayCoupledFractureFlowContactMechanics.cpp b/src/coreComponents/physicsSolvers/multiphysics/OneWayCoupledFractureFlowContactMechanics.cpp new file mode 100644 index 00000000000..6f5c291f1ce --- /dev/null +++ b/src/coreComponents/physicsSolvers/multiphysics/OneWayCoupledFractureFlowContactMechanics.cpp @@ -0,0 +1,88 @@ +/* + * ------------------------------------------------------------------------------------------------------------ + * SPDX-License-Identifier: LGPL-2.1-only + * + * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC + * Copyright (c) 2018-2024 TotalEnergies + * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University + * Copyright (c) 2023-2024 Chevron + * Copyright (c) 2019- GEOS/GEOSX Contributors + * All rights reserved + * + * See top level LICENSE, COPYRIGHT, CONTRIBUTORS, NOTICE, and ACKNOWLEDGEMENTS files for details. + * ------------------------------------------------------------------------------------------------------------ + */ + +/** + * @file OneWayCoupledFractureFlowContactMechanics.cpp + */ + +#include "OneWayCoupledFractureFlowContactMechanics.hpp" +#include "physicsSolvers/contact/ContactFields.hpp" +#include "physicsSolvers/fluidFlow/FlowSolverBaseFields.hpp" +#include "mesh/DomainPartition.hpp" + + +namespace geos +{ +using namespace dataRepository; + +template< typename FLOW_SOLVER > +OneWayCoupledFractureFlowContactMechanics< FLOW_SOLVER >::OneWayCoupledFractureFlowContactMechanics( const string & name, + Group * const parent ) + : Base( name, parent ) +{} + +template< typename FLOW_SOLVER > +void OneWayCoupledFractureFlowContactMechanics< FLOW_SOLVER >::postInputInitialization() +{ + bool const isSequential = this->getNonlinearSolverParameters().couplingType() == NonlinearSolverParameters::CouplingType::Sequential; + GEOS_THROW_IF( !isSequential, + "Only sequential coupling is allowed for this solver.", + InputError ); + + Base::postInputInitialization(); +} + + +template< typename FLOW_SOLVER > +real64 OneWayCoupledFractureFlowContactMechanics< FLOW_SOLVER >::sequentiallyCoupledSolverStep( real64 const & time_n, + real64 const & dt, + int const cycleNumber, + DomainPartition & domain ) +{ + forEachArgInTuple( m_solvers, [&]( auto & solver, auto ) + { + solver->solverStep( time_n, dt, cycleNumber, domain ); + } ); + + this->forDiscretizationOnMeshTargets( domain.getMeshBodies(), [&]( string const &, + MeshLevel & mesh, + arrayView1d< string const > const & regionNames ) + { + mesh.getElemManager().forElementSubRegions< SurfaceElementSubRegion >( regionNames, + [&]( localIndex const, + SurfaceElementSubRegion & subRegion ) + { + arrayView2d< real64 > const traction = subRegion.getField< fields::contact::traction >(); + arrayView1d< real64 > const pressure = subRegion.getField< fields::flow::pressure >(); + + forAll< parallelDevicePolicy<> >( subRegion.size(), [=] GEOS_HOST_DEVICE ( localIndex const k ) + { + traction( k, 0 ) = traction( k, 0 ) + pressure[k]; + } ); + } ); + } ); + + return dt; +} + +template class OneWayCoupledFractureFlowContactMechanics< SinglePhaseBase >; + +namespace +{ +typedef OneWayCoupledFractureFlowContactMechanics< SinglePhaseBase > OneWayCoupledFractureFlowContactMechanicsSinglePhase; +REGISTER_CATALOG_ENTRY( PhysicsSolverBase, OneWayCoupledFractureFlowContactMechanicsSinglePhase, string const &, dataRepository::Group * const ) +} + +} /* namespace geos */ diff --git a/src/coreComponents/physicsSolvers/multiphysics/OneWayCoupledFractureFlowContactMechanics.hpp b/src/coreComponents/physicsSolvers/multiphysics/OneWayCoupledFractureFlowContactMechanics.hpp new file mode 100644 index 00000000000..03b6b1a6f4b --- /dev/null +++ b/src/coreComponents/physicsSolvers/multiphysics/OneWayCoupledFractureFlowContactMechanics.hpp @@ -0,0 +1,93 @@ +/* + * ------------------------------------------------------------------------------------------------------------ + * SPDX-License-Identifier: LGPL-2.1-only + * + * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC + * Copyright (c) 2018-2024 TotalEnergies + * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University + * Copyright (c) 2023-2024 Chevron + * Copyright (c) 2019- GEOS/GEOSX Contributors + * All rights reserved + * + * See top level LICENSE, COPYRIGHT, CONTRIBUTORS, NOTICE, and ACKNOWLEDGEMENTS files for details. + * ------------------------------------------------------------------------------------------------------------ + */ + +/** + * @file OneWayCoupledFractureFlowContactMechanics.hpp + */ + +#ifndef GEOS_PHYSICSSOLVERS_MULTIPHYSICS_ONEWAYCOUPLEDFRACTUREFLOWCONTACTMECHANICS_HPP_ +#define GEOS_PHYSICSSOLVERS_MULTIPHYSICS_ONEWAYCOUPLEDFRACTUREFLOWCONTACTMECHANICS_HPP_ + +#include "physicsSolvers/multiphysics/CoupledSolver.hpp" +#include "physicsSolvers/contact/SolidMechanicsLagrangeContactBubbleStab.hpp" +#include "physicsSolvers/fluidFlow/SinglePhaseBase.hpp" +#include "dataRepository/Group.hpp" + +namespace geos +{ + +template< typename FLOW_SOLVER = SinglePhaseBase > +class OneWayCoupledFractureFlowContactMechanics : public CoupledSolver< FLOW_SOLVER, SolidMechanicsLagrangeContactBubbleStab > +{ +public: + + using Base = CoupledSolver< FLOW_SOLVER, SolidMechanicsLagrangeContactBubbleStab >; + using Base::m_solvers; + using Base::m_dofManager; + using Base::m_localMatrix; + using Base::m_rhs; + using Base::m_solution; + + enum class SolverType : integer + { + Flow = 0, + SolidMechanics = 1 + }; + + /** + * @brief main constructor for OneWayCoupledFractureFlowContactMechanics objects + * @param name the name of this instantiation of OneWayCoupledFractureFlowContactMechanics in the repository + * @param parent the parent group of this instantiation of OneWayCoupledFractureFlowContactMechanics + */ + OneWayCoupledFractureFlowContactMechanics( const string & name, + dataRepository::Group * const parent ); + + /// Destructor for the class + ~OneWayCoupledFractureFlowContactMechanics() override {} + + /** + * @brief name of the node manager in the object catalog + * @return string that contains the catalog name to generate a new OneWayCoupledFractureFlowContactMechanics object through the object + * catalog. + */ + static string catalogName() + { + return "OneWayCoupledFractureFlowContactMechanics"; + } + + /** + * @copydoc PhysicsSolverBase::getCatalogName() + */ + string getCatalogName() const override { return catalogName(); } + + virtual real64 sequentiallyCoupledSolverStep( real64 const & time_n, + real64 const & dt, + int const cycleNumber, + DomainPartition & domain ) override final; + + virtual void postInputInitialization() override final; + + /**@}*/ + +private: + + struct viewKeyStruct : public Base::viewKeyStruct + {}; + +}; + +} /* namespace geos */ + +#endif /* GEOS_PHYSICSSOLVERS_MULTIPHYSICS_ONEWAYCOUPLEDFRACTUREFLOWCONTACTMECHANICS_HPP_ */ diff --git a/src/coreComponents/physicsSolvers/multiphysics/PhaseFieldFractureSolver.cpp b/src/coreComponents/physicsSolvers/multiphysics/PhaseFieldFractureSolver.cpp index 447cdc1f1b1..c9fe35f6145 100644 --- a/src/coreComponents/physicsSolvers/multiphysics/PhaseFieldFractureSolver.cpp +++ b/src/coreComponents/physicsSolvers/multiphysics/PhaseFieldFractureSolver.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/multiphysics/PhaseFieldFractureSolver.hpp b/src/coreComponents/physicsSolvers/multiphysics/PhaseFieldFractureSolver.hpp index b9625e1f41d..a1aae598694 100644 --- a/src/coreComponents/physicsSolvers/multiphysics/PhaseFieldFractureSolver.hpp +++ b/src/coreComponents/physicsSolvers/multiphysics/PhaseFieldFractureSolver.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/multiphysics/PoromechanicsFields.hpp b/src/coreComponents/physicsSolvers/multiphysics/PoromechanicsFields.hpp index 1d38ccf74e4..d3dec017bc4 100644 --- a/src/coreComponents/physicsSolvers/multiphysics/PoromechanicsFields.hpp +++ b/src/coreComponents/physicsSolvers/multiphysics/PoromechanicsFields.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/multiphysics/PoromechanicsInitialization.cpp b/src/coreComponents/physicsSolvers/multiphysics/PoromechanicsInitialization.cpp index 295eaa33321..11ec7caa5d4 100644 --- a/src/coreComponents/physicsSolvers/multiphysics/PoromechanicsInitialization.cpp +++ b/src/coreComponents/physicsSolvers/multiphysics/PoromechanicsInitialization.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -24,6 +24,7 @@ #include "physicsSolvers/fluidFlow/SinglePhaseBase.hpp" #include "physicsSolvers/solidMechanics/SolidMechanicsStatistics.hpp" #include "physicsSolvers/multiphysics/MultiphasePoromechanics.hpp" +#include "physicsSolvers/multiphysics/MultiphasePoromechanicsConformingFractures.hpp" #include "physicsSolvers/multiphysics/SinglePhasePoromechanics.hpp" #include "physicsSolvers/multiphysics/SinglePhasePoromechanicsConformingFractures.hpp" #include "physicsSolvers/multiphysics/SinglePhasePoromechanicsEmbeddedFractures.hpp" @@ -136,6 +137,7 @@ execute( real64 const time_n, namespace { typedef PoromechanicsInitialization< MultiphasePoromechanics<> > MultiphasePoromechanicsInitialization; +typedef PoromechanicsInitialization< MultiphasePoromechanicsConformingFractures<> > MultiphasePoromechanicsConformingFracturesInitialization; typedef PoromechanicsInitialization< MultiphasePoromechanics< CompositionalMultiphaseReservoirAndWells<> > > MultiphaseReservoirPoromechanicsInitialization; typedef PoromechanicsInitialization< SinglePhasePoromechanics<> > SinglePhasePoromechanicsInitialization; typedef PoromechanicsInitialization< SinglePhasePoromechanicsConformingFractures<> > SinglePhasePoromechanicsConformingFracturesInitialization; @@ -144,6 +146,7 @@ typedef PoromechanicsInitialization< SinglePhasePoromechanicsEmbeddedFractures > typedef PoromechanicsInitialization< SinglePhasePoromechanics< SinglePhaseReservoirAndWells<> > > SinglePhaseReservoirPoromechanicsInitialization; typedef PoromechanicsInitialization< HydrofractureSolver< SinglePhasePoromechanics<> > > HydrofractureInitialization; REGISTER_CATALOG_ENTRY( TaskBase, MultiphasePoromechanicsInitialization, string const &, Group * const ) +REGISTER_CATALOG_ENTRY( TaskBase, MultiphasePoromechanicsConformingFracturesInitialization, string const &, Group * const ) REGISTER_CATALOG_ENTRY( TaskBase, MultiphaseReservoirPoromechanicsInitialization, string const &, Group * const ) REGISTER_CATALOG_ENTRY( TaskBase, SinglePhasePoromechanicsInitialization, string const &, Group * const ) REGISTER_CATALOG_ENTRY( TaskBase, SinglePhasePoromechanicsConformingFracturesInitialization, string const &, Group * const ) diff --git a/src/coreComponents/physicsSolvers/multiphysics/PoromechanicsInitialization.hpp b/src/coreComponents/physicsSolvers/multiphysics/PoromechanicsInitialization.hpp index aa13564261b..60e8535a2b7 100644 --- a/src/coreComponents/physicsSolvers/multiphysics/PoromechanicsInitialization.hpp +++ b/src/coreComponents/physicsSolvers/multiphysics/PoromechanicsInitialization.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/multiphysics/PoromechanicsSolver.hpp b/src/coreComponents/physicsSolvers/multiphysics/PoromechanicsSolver.hpp index 7053aec0d07..9db368c00b7 100644 --- a/src/coreComponents/physicsSolvers/multiphysics/PoromechanicsSolver.hpp +++ b/src/coreComponents/physicsSolvers/multiphysics/PoromechanicsSolver.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -21,10 +21,10 @@ #ifndef GEOS_PHYSICSSOLVERS_MULTIPHYSICS_POROMECHANICSSOLVER_HPP_ #define GEOS_PHYSICSSOLVERS_MULTIPHYSICS_POROMECHANICSSOLVER_HPP_ -#include "physicsSolvers/fluidFlow/FlowSolverBaseFields.hpp" #include "physicsSolvers/multiphysics/CoupledSolver.hpp" -#include "physicsSolvers/multiphysics/PoromechanicsFields.hpp" #include "physicsSolvers/solidMechanics/SolidMechanicsLagrangianFEM.hpp" +#include "physicsSolvers/fluidFlow/FlowSolverBaseFields.hpp" +#include "physicsSolvers/multiphysics/PoromechanicsFields.hpp" #include "constitutive/solid/CoupledSolidBase.hpp" #include "constitutive/solid/PorousSolid.hpp" #include "constitutive/contact/HydraulicApertureBase.hpp" @@ -395,6 +395,45 @@ class PoromechanicsSolver : public CoupledSolver< FLOW_SOLVER, MECHANICS_SOLVER protected: + template< typename CONSTITUTIVE_BASE, + typename KERNEL_WRAPPER, + typename ... PARAMS > + real64 assemblyLaunch( MeshLevel & mesh, + DofManager const & dofManager, + arrayView1d< string const > const & regionNames, + string const & materialNamesString, + CRSMatrixView< real64, globalIndex const > const & localMatrix, + arrayView1d< real64 > const & localRhs, + real64 const dt, + PARAMS && ... params ) + { + GEOS_MARK_FUNCTION; + + NodeManager const & nodeManager = mesh.getNodeManager(); + + string const dofKey = dofManager.getKey( fields::solidMechanics::totalDisplacement::key() ); + arrayView1d< globalIndex const > const & dofNumber = nodeManager.getReference< globalIndex_array >( dofKey ); + + real64 const gravityVectorData[3] = LVARRAY_TENSOROPS_INIT_LOCAL_3( PhysicsSolverBase::gravityVector() ); + + KERNEL_WRAPPER kernelWrapper( dofNumber, + dofManager.rankOffset(), + localMatrix, + localRhs, + dt, + gravityVectorData, + std::forward< PARAMS >( params )... ); + + return finiteElement:: + regionBasedKernelApplication< parallelDevicePolicy< >, + CONSTITUTIVE_BASE, + CellElementSubRegion >( mesh, + regionNames, + this->solidMechanicsSolver()->getDiscretizationName(), + materialNamesString, + kernelWrapper ); + } + /* Implementation of Nonlinear Acceleration (Aitken) of averageMeanTotalStressIncrement */ void recordAverageMeanTotalStressIncrement( DomainPartition & domain, diff --git a/src/coreComponents/physicsSolvers/multiphysics/SinglePhasePoromechanics.cpp b/src/coreComponents/physicsSolvers/multiphysics/SinglePhasePoromechanics.cpp index 8026c45a80a..0bfa9146a27 100644 --- a/src/coreComponents/physicsSolvers/multiphysics/SinglePhasePoromechanics.cpp +++ b/src/coreComponents/physicsSolvers/multiphysics/SinglePhasePoromechanics.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -32,6 +32,7 @@ #include "physicsSolvers/solidMechanics/kernels/ImplicitSmallStrainQuasiStatic.hpp" #include "physicsSolvers/contact/SolidMechanicsLagrangeContact.hpp" #include "physicsSolvers/contact/SolidMechanicsEmbeddedFractures.hpp" +#include "physicsSolvers/fluidFlow/SinglePhaseHybridFVM.hpp" namespace geos { @@ -45,24 +46,14 @@ template< typename FLOW_SOLVER, typename MECHANICS_SOLVER > SinglePhasePoromechanics< FLOW_SOLVER, MECHANICS_SOLVER >::SinglePhasePoromechanics( const string & name, Group * const parent ) : Base( name, parent ) -{ - LinearSolverParameters & linearSolverParameters = this->m_linearSolverParameters.get(); - linearSolverParameters.mgr.strategy = LinearSolverParameters::MGR::StrategyType::singlePhasePoromechanics; - linearSolverParameters.mgr.separateComponents = true; - linearSolverParameters.dofsPerNode = 3; -} +{} template< typename FLOW_SOLVER, typename MECHANICS_SOLVER > void SinglePhasePoromechanics< FLOW_SOLVER, MECHANICS_SOLVER >::postInputInitialization() { Base::postInputInitialization(); - GEOS_ERROR_IF( this->flowSolver()->getCatalogName() == "SinglePhaseReservoir" && - this->getNonlinearSolverParameters().couplingType() != NonlinearSolverParameters::CouplingType::Sequential, - GEOS_FMT( "{}: {} solver is only designed to work for {} = {}", - this->getName(), catalogName(), NonlinearSolverParameters::viewKeysStruct::couplingTypeString(), - EnumStrings< NonlinearSolverParameters::CouplingType >::toString( NonlinearSolverParameters::CouplingType::Sequential ) - )); + setMGRStrategy(); } template< typename FLOW_SOLVER, typename MECHANICS_SOLVER > @@ -113,18 +104,70 @@ void SinglePhasePoromechanics< FLOW_SOLVER, MECHANICS_SOLVER >::initializePostIn getCatalogName(), this->getDataContext(), poromechanicsTargetRegionNames[i], this->flowSolver()->getDataContext() ), InputError ); } +} + +template<> +void SinglePhasePoromechanics<>::setMGRStrategy() +{ + LinearSolverParameters & linearSolverParameters = this->m_linearSolverParameters.get(); - if( this->m_isThermal ) + if( linearSolverParameters.preconditionerType != LinearSolverParameters::PreconditionerType::mgr ) + return; + + linearSolverParameters.mgr.separateComponents = true; + linearSolverParameters.dofsPerNode = 3; + + if( dynamic_cast< SinglePhaseHybridFVM * >( this->flowSolver() ) ) { - this->m_linearSolverParameters.get().mgr.strategy = LinearSolverParameters::MGR::StrategyType::thermalSinglePhasePoromechanics; + if( this->m_isThermal ) + { + GEOS_ERROR( GEOS_FMT( "{}: MGR strategy is not implemented for thermal {}/{}", + this->getName(), this->getCatalogName(), this->flowSolver()->getCatalogName() )); + } + else + { + linearSolverParameters.mgr.strategy = LinearSolverParameters::MGR::StrategyType::hybridSinglePhasePoromechanics; + } } else { - if( this->flowSolver()->getLinearSolverParameters().mgr.strategy == LinearSolverParameters::MGR::StrategyType::singlePhaseHybridFVM ) + if( this->m_isThermal ) { - this->m_linearSolverParameters.get().mgr.strategy = LinearSolverParameters::MGR::StrategyType::hybridSinglePhasePoromechanics; + linearSolverParameters.mgr.strategy = LinearSolverParameters::MGR::StrategyType::thermalSinglePhasePoromechanics; } + else + { + linearSolverParameters.mgr.strategy = LinearSolverParameters::MGR::StrategyType::singlePhasePoromechanics; + } + } + GEOS_LOG_LEVEL_RANK_0( 1, GEOS_FMT( "{}: MGR strategy set to {}", getName(), + EnumStrings< LinearSolverParameters::MGR::StrategyType >::toString( linearSolverParameters.mgr.strategy ))); +} + +template<> +void SinglePhasePoromechanics< SinglePhaseReservoirAndWells<>, SolidMechanicsLagrangianFEM >::setMGRStrategy() +{ + // same as SinglePhaseReservoirAndWells< SinglePhasePoromechanics<> >::setMGRStrategy + + LinearSolverParameters & linearSolverParameters = m_linearSolverParameters.get(); + + if( linearSolverParameters.preconditionerType != LinearSolverParameters::PreconditionerType::mgr ) + return; + + linearSolverParameters.mgr.separateComponents = true; + linearSolverParameters.dofsPerNode = 3; + + if( dynamic_cast< SinglePhaseHybridFVM * >( this->flowSolver() ) ) + { + GEOS_ERROR( GEOS_FMT( "{}: MGR strategy is not implemented for poromechanics {}/{}", + this->getName(), this->getCatalogName(), this->flowSolver()->getCatalogName())); } + else + { + linearSolverParameters.mgr.strategy = LinearSolverParameters::MGR::StrategyType::singlePhasePoromechanicsReservoirFVM; + } + GEOS_LOG_LEVEL_RANK_0( 1, GEOS_FMT( "{}: MGR strategy set to {}", this->getName(), + EnumStrings< LinearSolverParameters::MGR::StrategyType >::toString( linearSolverParameters.mgr.strategy ))); } template< typename FLOW_SOLVER, typename MECHANICS_SOLVER > @@ -162,7 +205,48 @@ void SinglePhasePoromechanics< FLOW_SOLVER, MECHANICS_SOLVER >::assembleSystem( localMatrix, localRhs ); } +} + +template<> +void SinglePhasePoromechanics< SinglePhaseReservoirAndWells<>, SolidMechanicsLagrangianFEM >::assembleSystem( real64 const time_n, + real64 const dt, + DomainPartition & domain, + DofManager const & dofManager, + CRSMatrixView< real64, globalIndex const > const & localMatrix, + arrayView1d< real64 > const & localRhs ) +{ + GEOS_MARK_FUNCTION; + + // Steps 1 and 2: compute element-based terms (mechanics and local flow terms) + assembleElementBasedTerms( time_n, + dt, + domain, + dofManager, + localMatrix, + localRhs ); + + // Step 3: compute the fluxes (face-based contributions) + if( m_stabilizationType == StabilizationType::Global || m_stabilizationType == StabilizationType::Local ) + { + this->flowSolver()->assembleStabilizedFluxTerms( dt, + domain, + dofManager, + localMatrix, + localRhs ); + } + else + { + this->flowSolver()->assembleFluxTerms( dt, + domain, + dofManager, + localMatrix, + localRhs ); + } + + // step 4: assemble well contributions + this->flowSolver()->wellSolver()->assembleSystem( time_n, dt, domain, dofManager, localMatrix, localRhs ); + this->flowSolver()->assembleCouplingTerms( time_n, dt, domain, dofManager, localMatrix, localRhs ); } template< typename FLOW_SOLVER, typename MECHANICS_SOLVER > @@ -194,32 +278,32 @@ void SinglePhasePoromechanics< FLOW_SOLVER, MECHANICS_SOLVER >::assembleElementB if( this->m_isThermal ) { poromechanicsMaxForce = - assemblyLaunch< constitutive::PorousSolidBase, - thermalPoromechanicsKernels::ThermalSinglePhasePoromechanicsKernelFactory >( mesh, - dofManager, - regionNames, - viewKeyStruct::porousMaterialNamesString(), - localMatrix, - localRhs, - dt, - flowDofKey, - this->m_performStressInitialization, - FlowSolverBase::viewKeyStruct::fluidNamesString() ); + this->template assemblyLaunch< constitutive::PorousSolidBase, + thermalPoromechanicsKernels::ThermalSinglePhasePoromechanicsKernelFactory >( mesh, + dofManager, + regionNames, + viewKeyStruct::porousMaterialNamesString(), + localMatrix, + localRhs, + dt, + flowDofKey, + this->m_performStressInitialization, + FlowSolverBase::viewKeyStruct::fluidNamesString() ); } else { poromechanicsMaxForce = - assemblyLaunch< constitutive::PorousSolidBase, - poromechanicsKernels::SinglePhasePoromechanicsKernelFactory >( mesh, - dofManager, - regionNames, - viewKeyStruct::porousMaterialNamesString(), - localMatrix, - localRhs, - dt, - flowDofKey, - this->m_performStressInitialization, - FlowSolverBase::viewKeyStruct::fluidNamesString() ); + this->template assemblyLaunch< constitutive::PorousSolidBase, + poromechanicsKernels::SinglePhasePoromechanicsKernelFactory >( mesh, + dofManager, + regionNames, + viewKeyStruct::porousMaterialNamesString(), + localMatrix, + localRhs, + dt, + flowDofKey, + this->m_performStressInitialization, + FlowSolverBase::viewKeyStruct::fluidNamesString() ); } } ); @@ -248,14 +332,14 @@ void SinglePhasePoromechanics< FLOW_SOLVER, MECHANICS_SOLVER >::assembleElementB } mechanicsMaxForce = - assemblyLaunch< constitutive::SolidBase, - solidMechanicsLagrangianFEMKernels::QuasiStaticFactory >( mesh, - dofManager, - filteredRegionNames.toViewConst(), - SolidMechanicsLagrangianFEM::viewKeyStruct::solidMaterialNamesString(), - localMatrix, - localRhs, - dt ); + this->template assemblyLaunch< constitutive::SolidBase, + solidMechanicsLagrangianFEMKernels::QuasiStaticFactory >( mesh, + dofManager, + filteredRegionNames.toViewConst(), + SolidMechanicsLagrangianFEM::viewKeyStruct::solidMaterialNamesString(), + localMatrix, + localRhs, + dt ); } ); this->solidMechanicsSolver()->applyContactConstraint( dofManager, domain, localMatrix, localRhs ); diff --git a/src/coreComponents/physicsSolvers/multiphysics/SinglePhasePoromechanics.hpp b/src/coreComponents/physicsSolvers/multiphysics/SinglePhasePoromechanics.hpp index f311b786c38..e742fb9715b 100644 --- a/src/coreComponents/physicsSolvers/multiphysics/SinglePhasePoromechanics.hpp +++ b/src/coreComponents/physicsSolvers/multiphysics/SinglePhasePoromechanics.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -118,19 +118,11 @@ class SinglePhasePoromechanics : public PoromechanicsSolver< FLOW_SOLVER, MECHAN virtual void initializePostInitialConditionsPreSubGroups() override; - template< typename CONSTITUTIVE_BASE, - typename KERNEL_WRAPPER, - typename ... PARAMS > - real64 assemblyLaunch( MeshLevel & mesh, - DofManager const & dofManager, - arrayView1d< string const > const & regionNames, - string const & materialNamesString, - CRSMatrixView< real64, globalIndex const > const & localMatrix, - arrayView1d< real64 > const & localRhs, - real64 const dt, - PARAMS && ... params ); - -private: + virtual void setMGRStrategy() + { + if( this->m_linearSolverParameters.get().preconditionerType == LinearSolverParameters::PreconditionerType::mgr ) + GEOS_ERROR( GEOS_FMT( "{}: MGR strategy is not implemented for {}", this->getName(), this->getCatalogName())); + } /** * @brief Helper function to recompute the bulk density @@ -142,47 +134,6 @@ class SinglePhasePoromechanics : public PoromechanicsSolver< FLOW_SOLVER, MECHAN }; -template< typename FLOW_SOLVER, typename MECHANICS_SOLVER > -template< typename CONSTITUTIVE_BASE, - typename KERNEL_WRAPPER, - typename ... PARAMS > -real64 SinglePhasePoromechanics< FLOW_SOLVER, MECHANICS_SOLVER >::assemblyLaunch( MeshLevel & mesh, - DofManager const & dofManager, - arrayView1d< string const > const & regionNames, - string const & materialNamesString, - CRSMatrixView< real64, globalIndex const > const & localMatrix, - arrayView1d< real64 > const & localRhs, - real64 const dt, - PARAMS && ... params ) -{ - GEOS_MARK_FUNCTION; - - NodeManager const & nodeManager = mesh.getNodeManager(); - - string const dofKey = dofManager.getKey( fields::solidMechanics::totalDisplacement::key() ); - arrayView1d< globalIndex const > const & dofNumber = nodeManager.getReference< globalIndex_array >( dofKey ); - - real64 const gravityVectorData[3] = LVARRAY_TENSOROPS_INIT_LOCAL_3( PhysicsSolverBase::gravityVector() ); - - KERNEL_WRAPPER kernelWrapper( dofNumber, - dofManager.rankOffset(), - localMatrix, - localRhs, - dt, - gravityVectorData, - std::forward< PARAMS >( params )... ); - - return finiteElement:: - regionBasedKernelApplication< parallelDevicePolicy< >, - CONSTITUTIVE_BASE, - CellElementSubRegion >( mesh, - regionNames, - this->solidMechanicsSolver()->getDiscretizationName(), - materialNamesString, - kernelWrapper ); -} - - } /* namespace geos */ #endif /* GEOS_PHYSICSSOLVERS_MULTIPHYSICS_SINGLEPHASEPOROMECHANICS_HPP_ */ diff --git a/src/coreComponents/physicsSolvers/multiphysics/SinglePhasePoromechanicsConformingFractures.cpp b/src/coreComponents/physicsSolvers/multiphysics/SinglePhasePoromechanicsConformingFractures.cpp index a2a258ac5bc..51fef65a2de 100644 --- a/src/coreComponents/physicsSolvers/multiphysics/SinglePhasePoromechanicsConformingFractures.cpp +++ b/src/coreComponents/physicsSolvers/multiphysics/SinglePhasePoromechanicsConformingFractures.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -44,11 +44,22 @@ template< typename FLOW_SOLVER > SinglePhasePoromechanicsConformingFractures< FLOW_SOLVER >::SinglePhasePoromechanicsConformingFractures( const string & name, Group * const parent ) : Base( name, parent ) +{} + +template<> +void SinglePhasePoromechanicsConformingFractures<>::setMGRStrategy() { - LinearSolverParameters & params = this->m_linearSolverParameters.get(); - params.mgr.strategy = LinearSolverParameters::MGR::StrategyType::singlePhasePoromechanicsConformingFractures; - params.mgr.separateComponents = true; - params.dofsPerNode = 3; + LinearSolverParameters & linearSolverParameters = this->m_linearSolverParameters.get(); + + if( linearSolverParameters.preconditionerType != LinearSolverParameters::PreconditionerType::mgr ) + return; + + linearSolverParameters.mgr.separateComponents = true; + linearSolverParameters.dofsPerNode = 3; + + linearSolverParameters.mgr.strategy = LinearSolverParameters::MGR::StrategyType::singlePhasePoromechanicsConformingFractures; + GEOS_LOG_LEVEL_RANK_0( 1, GEOS_FMT( "{}: MGR strategy set to {}", getName(), + EnumStrings< LinearSolverParameters::MGR::StrategyType >::toString( linearSolverParameters.mgr.strategy ))); } template< typename FLOW_SOLVER > @@ -377,15 +388,13 @@ addTransmissibilityCouplingPattern( DomainPartition const & domain, GEOS_ERROR_IF( !fractureSubRegion.hasWrapper( flow::pressure::key() ), this->getDataContext() << ": The fracture subregion must contain pressure field." ); - ArrayOfArraysView< localIndex const > const elem2dToFaces = fractureSubRegion.faceList().toViewConst(); + arrayView2d< localIndex const > const elem2dToFaces = fractureSubRegion.faceList().toViewConst(); arrayView1d< globalIndex const > const & presDofNumber = fractureSubRegion.getReference< globalIndex_array >( presDofKey ); globalIndex const rankOffset = dofManager.rankOffset(); - ArrayOfArraysView< localIndex const > const & elemsToFaces = fractureSubRegion.faceList().toViewConst(); - fvDiscretization.forStencils< SurfaceElementStencil >( mesh, [&]( SurfaceElementStencil const & stencil ) { forAll< serialPolicy >( stencil.size(), [=] ( localIndex const iconn ) @@ -412,11 +421,9 @@ addTransmissibilityCouplingPattern( DomainPartition const & domain, localIndex const fractureIndex = sei[iconn][kf]; // Get the number of nodes - localIndex const numNodesPerFace = faceToNodeMap.sizeOfArray( elemsToFaces[fractureIndex][0] ); + localIndex const numNodesPerFace = faceToNodeMap.sizeOfArray( elem2dToFaces[fractureIndex][0] ); // Loop over the two sides of each fracture element - GEOS_ERROR_IF( elem2dToFaces.sizeOfArray( fractureIndex ) != 2, - "Fracture face " << fractureIndex << " has to be shared by two cells." ); for( localIndex kf1 = 0; kf1 < 2; ++kf1 ) { localIndex const faceIndex = elem2dToFaces[fractureIndex][kf1]; @@ -478,7 +485,7 @@ assembleForceResidualDerivativeWrtPressure( MeshLevel const & mesh, arrayView1d< globalIndex const > const & presDofNumber = subRegion.getReference< globalIndex_array >( presDofKey ); arrayView1d< real64 const > const & pressure = subRegion.getReference< array1d< real64 > >( flow::pressure::key() ); - ArrayOfArraysView< localIndex const > const & elemsToFaces = subRegion.faceList().toViewConst(); + arrayView2d< localIndex const > const & elemsToFaces = subRegion.faceList().toViewConst(); forAll< serialPolicy >( subRegion.size(), [=]( localIndex const kfe ) { @@ -592,7 +599,7 @@ assembleFluidMassResidualDerivativeWrtDisplacement( MeshLevel const & mesh, arrayView1d< globalIndex const > const & presDofNumber = subRegion.getReference< array1d< globalIndex > >( presDofKey ); - ArrayOfArraysView< localIndex const > const & elemsToFaces = subRegion.faceList().toViewConst(); + arrayView2d< localIndex const > const & elemsToFaces = subRegion.faceList().toViewConst(); arrayView1d< real64 const > const & area = subRegion.getElementArea().toViewConst(); arrayView1d< integer const > const & fractureState = subRegion.getField< fields::contact::fractureState >(); diff --git a/src/coreComponents/physicsSolvers/multiphysics/SinglePhasePoromechanicsConformingFractures.hpp b/src/coreComponents/physicsSolvers/multiphysics/SinglePhasePoromechanicsConformingFractures.hpp index 7d0b4f121ea..1965dc5a457 100644 --- a/src/coreComponents/physicsSolvers/multiphysics/SinglePhasePoromechanicsConformingFractures.hpp +++ b/src/coreComponents/physicsSolvers/multiphysics/SinglePhasePoromechanicsConformingFractures.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -21,10 +21,7 @@ #define GEOS_PHYSICSSOLVERS_MULTIPHYSICS_SINGLEPHASEPOROMECHANICSCONFORMINGFRACTURES_HPP_ #include "physicsSolvers/multiphysics/SinglePhasePoromechanics.hpp" -#include "physicsSolvers/multiphysics/CoupledSolver.hpp" #include "physicsSolvers/contact/SolidMechanicsLagrangeContact.hpp" -#include "physicsSolvers/fluidFlow/SinglePhaseBase.hpp" -#include "dataRepository/Group.hpp" namespace geos { @@ -103,6 +100,12 @@ class SinglePhasePoromechanicsConformingFractures : public SinglePhasePoromechan virtual void updateState( DomainPartition & domain ) override final; + virtual void setMGRStrategy() override + { + if( this->m_linearSolverParameters.get().preconditionerType == LinearSolverParameters::PreconditionerType::mgr ) + GEOS_ERROR( GEOS_FMT( "{}: MGR strategy is not implemented for {}", this->getName(), this->getCatalogName())); + } + /**@}*/ private: @@ -176,7 +179,6 @@ class SinglePhasePoromechanicsConformingFractures : public SinglePhasePoromechan */ void updateHydraulicApertureAndFracturePermeability( DomainPartition & domain ); - std::unique_ptr< CRSMatrix< real64, localIndex > > & getRefDerivativeFluxResidual_dAperture() { return m_derivativeFluxResidual_dAperture; diff --git a/src/coreComponents/physicsSolvers/multiphysics/SinglePhasePoromechanicsEmbeddedFractures.cpp b/src/coreComponents/physicsSolvers/multiphysics/SinglePhasePoromechanicsEmbeddedFractures.cpp index 394b95d08d3..f25329cfe14 100644 --- a/src/coreComponents/physicsSolvers/multiphysics/SinglePhasePoromechanicsEmbeddedFractures.cpp +++ b/src/coreComponents/physicsSolvers/multiphysics/SinglePhasePoromechanicsEmbeddedFractures.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -20,7 +20,7 @@ #include "SinglePhasePoromechanicsEmbeddedFractures.hpp" #include "constitutive/contact/HydraulicApertureRelationSelector.hpp" #include "constitutive/fluid/singlefluid/SingleFluidBase.hpp" -#include "physicsSolvers/contact/SolidMechanicsEFEMKernelsHelper.hpp" +#include "physicsSolvers/contact/kernels/SolidMechanicsEFEMKernelsHelper.hpp" #include "physicsSolvers/fluidFlow/SinglePhaseBase.hpp" #include "physicsSolvers/multiphysics/poromechanicsKernels/SinglePhasePoromechanicsEFEM.hpp" #include "physicsSolvers/multiphysics/poromechanicsKernels/SinglePhasePoromechanics.hpp" @@ -41,16 +41,26 @@ using namespace fields; SinglePhasePoromechanicsEmbeddedFractures::SinglePhasePoromechanicsEmbeddedFractures( const std::string & name, Group * const parent ): SinglePhasePoromechanics( name, parent ) -{ - LinearSolverParameters & params = m_linearSolverParameters.get(); - params.mgr.strategy = LinearSolverParameters::MGR::StrategyType::singlePhasePoromechanicsEmbeddedFractures; - params.mgr.separateComponents = true; - params.dofsPerNode = 3; -} +{} SinglePhasePoromechanicsEmbeddedFractures::~SinglePhasePoromechanicsEmbeddedFractures() {} +void SinglePhasePoromechanicsEmbeddedFractures::setMGRStrategy() +{ + LinearSolverParameters & linearSolverParameters = m_linearSolverParameters.get(); + + if( linearSolverParameters.preconditionerType != LinearSolverParameters::PreconditionerType::mgr ) + return; + + linearSolverParameters.mgr.separateComponents = true; + linearSolverParameters.dofsPerNode = 3; + + linearSolverParameters.mgr.strategy = LinearSolverParameters::MGR::StrategyType::singlePhasePoromechanicsEmbeddedFractures; + GEOS_LOG_LEVEL_RANK_0( 1, GEOS_FMT( "{}: MGR strategy set to {}", getName(), + EnumStrings< LinearSolverParameters::MGR::StrategyType >::toString( linearSolverParameters.mgr.strategy ))); +} + void SinglePhasePoromechanicsEmbeddedFractures::postInputInitialization() { Base::postInputInitialization(); @@ -85,17 +95,10 @@ void SinglePhasePoromechanicsEmbeddedFractures::initializePostInitialConditionsP updateState( this->getGroupByPath< DomainPartition >( "/Problem/domain" ) ); } -void SinglePhasePoromechanicsEmbeddedFractures::setupDofs( DomainPartition const & domain, - DofManager & dofManager ) const +void SinglePhasePoromechanicsEmbeddedFractures::setupCoupling( DomainPartition const & domain, + DofManager & dofManager ) const { - GEOS_MARK_FUNCTION; - solidMechanicsSolver()->setupDofs( domain, dofManager ); - flowSolver()->setupDofs( domain, dofManager ); - - // Add coupling between displacement and cell pressures - dofManager.addCoupling( fields::solidMechanics::totalDisplacement::key(), - SinglePhaseBase::viewKeyStruct::elemDofFieldString(), - DofManager::Connector::Elem ); + Base::setupCoupling( domain, dofManager ); map< std::pair< string, string >, array1d< string > > meshTargets; forDiscretizationOnMeshTargets( domain.getMeshBodies(), [&] ( string const & meshBodyName, diff --git a/src/coreComponents/physicsSolvers/multiphysics/SinglePhasePoromechanicsEmbeddedFractures.hpp b/src/coreComponents/physicsSolvers/multiphysics/SinglePhasePoromechanicsEmbeddedFractures.hpp index a6d72b4f728..f90d4ffe0be 100644 --- a/src/coreComponents/physicsSolvers/multiphysics/SinglePhasePoromechanicsEmbeddedFractures.hpp +++ b/src/coreComponents/physicsSolvers/multiphysics/SinglePhasePoromechanicsEmbeddedFractures.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -58,8 +58,8 @@ class SinglePhasePoromechanicsEmbeddedFractures : public SinglePhasePoromechanic bool const setSparsity = true ) override; virtual void - setupDofs( DomainPartition const & domain, - DofManager & dofManager ) const override; + setupCoupling( DomainPartition const & domain, + DofManager & dofManager ) const override; virtual void assembleSystem( real64 const time, @@ -105,6 +105,8 @@ class SinglePhasePoromechanicsEmbeddedFractures : public SinglePhasePoromechanic virtual void initializePostInitialConditionsPreSubGroups() override final; + virtual void setMGRStrategy() override; + private: template< typename CONSTITUTIVE_BASE, diff --git a/src/coreComponents/physicsSolvers/multiphysics/SinglePhaseReservoirAndWells.cpp b/src/coreComponents/physicsSolvers/multiphysics/SinglePhaseReservoirAndWells.cpp index 0ccdd95f91a..f83652d7455 100644 --- a/src/coreComponents/physicsSolvers/multiphysics/SinglePhaseReservoirAndWells.cpp +++ b/src/coreComponents/physicsSolvers/multiphysics/SinglePhaseReservoirAndWells.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -24,6 +24,7 @@ #include "mesh/PerforationFields.hpp" #include "physicsSolvers/KernelLaunchSelectors.hpp" #include "physicsSolvers/fluidFlow/SinglePhaseFVM.hpp" +#include "physicsSolvers/fluidFlow/SinglePhaseHybridFVM.hpp" #include "physicsSolvers/fluidFlow/wells/SinglePhaseWellFields.hpp" #include "physicsSolvers/fluidFlow/wells/WellControls.hpp" #include "physicsSolvers/fluidFlow/wells/kernels/SinglePhaseWellKernels.hpp" @@ -69,33 +70,50 @@ void SinglePhaseReservoirAndWells<>:: setMGRStrategy() { - if( flowSolver()->getLinearSolverParameters().mgr.strategy == LinearSolverParameters::MGR::StrategyType::singlePhaseHybridFVM ) + LinearSolverParameters & linearSolverParameters = m_linearSolverParameters.get(); + + if( linearSolverParameters.preconditionerType != LinearSolverParameters::PreconditionerType::mgr ) + return; + + linearSolverParameters.mgr.separateComponents = true; + linearSolverParameters.dofsPerNode = 3; + + if( dynamic_cast< SinglePhaseHybridFVM * >( this->flowSolver() ) ) { - // add Reservoir - m_linearSolverParameters.get().mgr.strategy = LinearSolverParameters::MGR::StrategyType::singlePhaseReservoirHybridFVM; + linearSolverParameters.mgr.strategy = LinearSolverParameters::MGR::StrategyType::singlePhaseReservoirHybridFVM; } else { - // add Reservoir - m_linearSolverParameters.get().mgr.strategy = LinearSolverParameters::MGR::StrategyType::singlePhaseReservoirFVM; + linearSolverParameters.mgr.strategy = LinearSolverParameters::MGR::StrategyType::singlePhaseReservoirFVM; } + GEOS_LOG_LEVEL_RANK_0( 1, GEOS_FMT( "{}: MGR strategy set to {}", getName(), + EnumStrings< LinearSolverParameters::MGR::StrategyType >::toString( linearSolverParameters.mgr.strategy ))); } -template< typename POROMECHANICS_SOLVER > +template<> void -SinglePhaseReservoirAndWells< POROMECHANICS_SOLVER >:: +SinglePhaseReservoirAndWells< SinglePhasePoromechanics<> >:: setMGRStrategy() { - // flow solver here is indeed flow solver, not poromechanics solver - if( flowSolver()->getLinearSolverParameters().mgr.strategy == LinearSolverParameters::MGR::StrategyType::singlePhaseHybridFVM ) + LinearSolverParameters & linearSolverParameters = m_linearSolverParameters.get(); + + if( linearSolverParameters.preconditionerType != LinearSolverParameters::PreconditionerType::mgr ) + return; + + linearSolverParameters.mgr.separateComponents = true; + linearSolverParameters.dofsPerNode = 3; + + if( dynamic_cast< SinglePhaseHybridFVM * >( this->flowSolver() ) ) { - GEOS_LOG_RANK_0( "The poromechanics MGR strategy for hybrid FVM is not implemented" ); + GEOS_ERROR( GEOS_FMT( "{}: MGR strategy is not implemented for poromechanics {}/{}", + this->getName(), this->getCatalogName(), this->flowSolver()->getCatalogName())); } else { - // add Reservoir - m_linearSolverParameters.get().mgr.strategy = LinearSolverParameters::MGR::StrategyType::singlePhasePoromechanicsReservoirFVM; + linearSolverParameters.mgr.strategy = LinearSolverParameters::MGR::StrategyType::singlePhasePoromechanicsReservoirFVM; } + GEOS_LOG_LEVEL_RANK_0( 1, GEOS_FMT( "{}: MGR strategy set to {}", this->getName(), + EnumStrings< LinearSolverParameters::MGR::StrategyType >::toString( linearSolverParameters.mgr.strategy ))); } template< typename RESERVOIR_SOLVER > @@ -108,15 +126,6 @@ initializePreSubGroups() Base::wellSolver()->setFlowSolverName( flowSolver->getName() ); } -template< typename RESERVOIR_SOLVER > -void -SinglePhaseReservoirAndWells< RESERVOIR_SOLVER >:: -initializePostInitialConditionsPreSubGroups() -{ - Base::initializePostInitialConditionsPreSubGroups(); - setMGRStrategy(); -} - template< typename RESERVOIR_SOLVER > void SinglePhaseReservoirAndWells< RESERVOIR_SOLVER >:: diff --git a/src/coreComponents/physicsSolvers/multiphysics/SinglePhaseReservoirAndWells.hpp b/src/coreComponents/physicsSolvers/multiphysics/SinglePhaseReservoirAndWells.hpp index 9e4cc906a9f..6ce8df9632c 100644 --- a/src/coreComponents/physicsSolvers/multiphysics/SinglePhaseReservoirAndWells.hpp +++ b/src/coreComponents/physicsSolvers/multiphysics/SinglePhaseReservoirAndWells.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -111,14 +111,16 @@ class SinglePhaseReservoirAndWells : public CoupledReservoirAndWellsBase< RESERV virtual void initializePreSubGroups() override; - virtual void initializePostInitialConditionsPreSubGroups() override; + virtual void setMGRStrategy() override + { + if( this->m_linearSolverParameters.get().preconditionerType == LinearSolverParameters::PreconditionerType::mgr ) + GEOS_ERROR( GEOS_FMT( "{}: MGR strategy is not implemented for {}", this->getName(), this->getCatalogName())); + } private: SinglePhaseBase * flowSolver() const; - void setMGRStrategy(); - }; } /* namespace geos */ diff --git a/src/coreComponents/physicsSolvers/multiphysics/poromechanicsKernels/MultiphasePoromechanics.hpp b/src/coreComponents/physicsSolvers/multiphysics/poromechanicsKernels/MultiphasePoromechanics.hpp index b3079a9e8c5..ae031f13988 100644 --- a/src/coreComponents/physicsSolvers/multiphysics/poromechanicsKernels/MultiphasePoromechanics.hpp +++ b/src/coreComponents/physicsSolvers/multiphysics/poromechanicsKernels/MultiphasePoromechanics.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/multiphysics/poromechanicsKernels/MultiphasePoromechanicsConformingFractures.hpp b/src/coreComponents/physicsSolvers/multiphysics/poromechanicsKernels/MultiphasePoromechanicsConformingFractures.hpp new file mode 100644 index 00000000000..33b07aaaaa1 --- /dev/null +++ b/src/coreComponents/physicsSolvers/multiphysics/poromechanicsKernels/MultiphasePoromechanicsConformingFractures.hpp @@ -0,0 +1,410 @@ +/* + * ------------------------------------------------------------------------------------------------------------ + * SPDX-License-Identifier: LGPL-2.1-only + * + * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC + * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University + * Copyright (c) 2018-2024 Chevron + * Copyright (c) 2019- GEOS/GEOSX Contributors + * All rights reserved + * + * See top level LICENSE, COPYRIGHT, CONTRIBUTORS, NOTICE, and ACKNOWLEDGEMENTS files for details. + * ------------------------------------------------------------------------------------------------------------ + */ + +/** + * @file MultiphasePoromechanicsConformingFractures.hpp + */ + +#ifndef GEOS_PHYSICSSOLVERS_MULTIPHYSICS_POROMECHANICSKERNELS_MULTIPHASEPOROMECHANICSCONFORMINGFRACTURES_HPP +#define GEOS_PHYSICSSOLVERS_MULTIPHYSICS_POROMECHANICSKERNELS_MULTIPHASEPOROMECHANICSCONFORMINGFRACTURES_HPP + +#include "physicsSolvers/fluidFlow/kernels/compositional/FluxComputeKernel.hpp" +//#include "physicsSolvers/fluidFlow/FluxKernelsHelper.hpp" + +namespace geos +{ + +namespace multiphasePoromechanicsConformingFracturesKernels +{ + +template< integer NUM_EQN, integer NUM_DOF > +class FluxComputeKernel : public isothermalCompositionalMultiphaseFVMKernels::FluxComputeKernel< NUM_EQN, NUM_DOF, SurfaceElementStencilWrapper > +{ +public: + + /** + * @brief The type for element-based data. Consists entirely of ArrayView's. + * + * Can be converted from ElementRegionManager::ElementViewConstAccessor + * by calling .toView() or .toViewConst() on an accessor instance + */ + template< typename VIEWTYPE > + using ElementViewConst = ElementRegionManager::ElementViewConst< VIEWTYPE >; + + using AbstractBase = isothermalCompositionalMultiphaseFVMKernels::FluxComputeKernelBase; + using DofNumberAccessor = AbstractBase::DofNumberAccessor; + using CompFlowAccessors = AbstractBase::CompFlowAccessors; + using MultiFluidAccessors = AbstractBase::MultiFluidAccessors; + using CapPressureAccessors = AbstractBase::CapPressureAccessors; + using PermeabilityAccessors = AbstractBase::PermeabilityAccessors; + using FracturePermeabilityAccessors = StencilMaterialAccessors< constitutive::PermeabilityBase, + fields::permeability::dPerm_dDispJump >; + + using AbstractBase::m_dt; + using AbstractBase::m_dofNumber; + using AbstractBase::m_gravCoef; + using AbstractBase::m_pres; + + using Base = isothermalCompositionalMultiphaseFVMKernels::FluxComputeKernel< NUM_EQN, NUM_DOF, SurfaceElementStencilWrapper >; + using Base::numDof; + using Base::numEqn; + using Base::maxNumElems; + using Base::maxNumConns; + using Base::maxStencilSize; + using Base::m_stencilWrapper; + using Base::m_seri; + using Base::m_sesri; + using Base::m_sei; + using Base::numFluxSupportPoints; + using Base::numComp; + using Base::m_numPhases; + using Base::m_kernelFlags; + + using Base::m_permeability; + using Base::m_dPerm_dPres; + using Base::m_phaseMob; + using Base::m_dPhaseMob; + using Base::m_phaseVolFrac; + using Base::m_dPhaseVolFrac; + using Base::m_phaseCompFrac; + using Base::m_dPhaseCompFrac; + using Base::m_dCompFrac_dCompDens; + using Base::m_phaseMassDens; + using Base::m_dPhaseMassDens; + using Base::m_phaseCapPressure; + using Base::m_dPhaseCapPressure_dPhaseVolFrac; + + FluxComputeKernel( integer const numPhases, + globalIndex const rankOffset, + SurfaceElementStencilWrapper const & stencilWrapper, + DofNumberAccessor const & dofNumberAccessor, + CompFlowAccessors const & compFlowAccessors, + MultiFluidAccessors const & multiFluidAccessors, + CapPressureAccessors const & capPressureAccessors, + PermeabilityAccessors const & permeabilityAccessors, + FracturePermeabilityAccessors const & fracturePermeabilityAccessors, + real64 const dt, + CRSMatrixView< real64, globalIndex const > const & localMatrix, + arrayView1d< real64 > const & localRhs, + BitFlags< isothermalCompositionalMultiphaseFVMKernels::KernelFlags > kernelFlags, + CRSMatrixView< real64, localIndex const > const & dR_dAper ) + : Base( numPhases, + rankOffset, + stencilWrapper, + dofNumberAccessor, + compFlowAccessors, + multiFluidAccessors, + capPressureAccessors, + permeabilityAccessors, + dt, + localMatrix, + localRhs, + kernelFlags ), + m_dR_dAper( dR_dAper ), + m_dPerm_dDispJump( fracturePermeabilityAccessors.get( fields::permeability::dPerm_dDispJump {} ) ) + {} + + + /** + * @struct StackVariables + * @brief Kernel variables (dof numbers, jacobian and residual) located on the stack + */ + struct StackVariables : public Base::StackVariables + { +public: + + /** + * @brief Constructor for the stack variables + * @param[in] size size of the stencil for this connection + * @param[in] numElems number of elements for this connection + */ + GEOS_HOST_DEVICE + StackVariables( localIndex const size, localIndex numElems ) + : Base::StackVariables( size, numElems ), + localColIndices( numElems ), + // TODO + dFlux_dAperture( numComp, numElems, size ) + {} + + stackArray1d< localIndex, maxNumElems > localColIndices; + + // TODO + stackArray3d< real64, numEqn * maxNumElems * maxStencilSize > dFlux_dAperture; + + /// Derivatives of transmissibility with respect to the dispJump + real64 dTrans_dDispJump[maxNumConns][2][3]{}; + }; + + /** + * @brief Performs the setup phase for the kernel. + * @param[in] iconn the connection index + * @param[in] stack the stack variables + */ + GEOS_HOST_DEVICE + void setup( localIndex const iconn, + StackVariables & stack ) const + { + // set degrees of freedom indices for this face + for( integer i = 0; i < stack.stencilSize; ++i ) + { + globalIndex const offset = m_dofNumber[m_seri( iconn, i )][m_sesri( iconn, i )][m_sei( iconn, i )]; + for( integer jdof = 0; jdof < numDof; ++jdof ) + { + stack.dofColIndices[i * numDof + jdof] = offset + jdof; + } + stack.localColIndices[ i ] = m_sei( iconn, i ); + } + } + + /** + * @brief Compute the local flux contributions to the residual and Jacobian + * @tparam FUNC the type of the function that can be used to customize the computation of the flux + * @param[in] iconn the connection index + * @param[inout] stack the stack variables + * @param[in] NoOpFunc the function used to customize the computation of the flux + */ + template< typename FUNC = NoOpFunc > + GEOS_HOST_DEVICE + void computeFlux( localIndex const iconn, + StackVariables & stack, + FUNC && compFluxKernelOp = NoOpFunc{} ) const + { + m_stencilWrapper.computeWeights( iconn, + m_permeability, + m_dPerm_dPres, + m_dPerm_dDispJump, + stack.transmissibility, + stack.dTrans_dPres, + stack.dTrans_dDispJump ); + + localIndex k[numFluxSupportPoints]; + localIndex connectionIndex = 0; + for( k[0] = 0; k[0] < stack.numConnectedElems; ++k[0] ) + { + for( k[1] = k[0] + 1; k[1] < stack.numConnectedElems; ++k[1] ) + { + /// cell indices + localIndex const seri[numFluxSupportPoints] = {m_seri( iconn, k[0] ), m_seri( iconn, k[1] )}; + localIndex const sesri[numFluxSupportPoints] = {m_sesri( iconn, k[0] ), m_sesri( iconn, k[1] )}; + localIndex const sei[numFluxSupportPoints] = {m_sei( iconn, k[0] ), m_sei( iconn, k[1] )}; + + // clear working arrays + real64 compFlux[numComp]{}; + real64 dCompFlux_dP[numFluxSupportPoints][numComp]{}; + real64 dCompFlux_dC[numFluxSupportPoints][numComp][numComp]{}; + real64 dCompFlux_dTrans[numComp]{}; + + real64 const trans[numFluxSupportPoints] = { stack.transmissibility[connectionIndex][0], + stack.transmissibility[connectionIndex][1] }; + + real64 const dTrans_dPres[numFluxSupportPoints] = { stack.dTrans_dPres[connectionIndex][0], + stack.dTrans_dPres[connectionIndex][1] }; + + //***** calculation of flux ***** + // loop over phases, compute and upwind phase flux and sum contributions to each component's flux + for( integer ip = 0; ip < m_numPhases; ++ip ) + { + // create local work arrays + real64 potGrad = 0.0; + real64 phaseFlux = 0.0; + real64 dPhaseFlux_dP[numFluxSupportPoints]{}; + real64 dPhaseFlux_dC[numFluxSupportPoints][numComp]{}; + + localIndex k_up = -1; + + + isothermalCompositionalMultiphaseFVMKernelUtilities::PPUPhaseFlux::compute< numComp, numFluxSupportPoints > + ( m_numPhases, + ip, + m_kernelFlags.isSet( isothermalCompositionalMultiphaseFVMKernels::KernelFlags::CapPressure ), + m_kernelFlags.isSet( isothermalCompositionalMultiphaseFVMKernels::KernelFlags::CheckPhasePresenceInGravity ), + seri, sesri, sei, + trans, + dTrans_dPres, + m_pres, + m_gravCoef, + m_phaseMob, m_dPhaseMob, + m_phaseVolFrac, + m_dPhaseVolFrac, + m_phaseCompFrac, m_dPhaseCompFrac, + m_dCompFrac_dCompDens, + m_phaseMassDens, m_dPhaseMassDens, + m_phaseCapPressure, m_dPhaseCapPressure_dPhaseVolFrac, + k_up, + potGrad, + phaseFlux, + dPhaseFlux_dP, + dPhaseFlux_dC, + compFlux, + dCompFlux_dP, + dCompFlux_dC, + dCompFlux_dTrans ); + + // call the lambda in the phase loop to allow the reuse of the phase fluxes and their derivatives + // possible use: assemble the derivatives wrt temperature, and the flux term of the energy equation for this phase + compFluxKernelOp( ip, k, seri, sesri, sei, connectionIndex, + k_up, seri[k_up], sesri[k_up], sei[k_up], potGrad, + phaseFlux, dPhaseFlux_dP, dPhaseFlux_dC ); + + } // loop over phases + + /// populate local flux vector and derivatives + for( integer ic = 0; ic < numComp; ++ic ) + { + integer const eqIndex0 = k[0] * numEqn + ic; + integer const eqIndex1 = k[1] * numEqn + ic; + + stack.localFlux[eqIndex0] += m_dt * compFlux[ic]; + stack.localFlux[eqIndex1] -= m_dt * compFlux[ic]; + + for( integer ke = 0; ke < numFluxSupportPoints; ++ke ) + { + localIndex const localDofIndexPres = k[ke] * numDof; + stack.localFluxJacobian[eqIndex0][localDofIndexPres] += m_dt * dCompFlux_dP[ke][ic]; + stack.localFluxJacobian[eqIndex1][localDofIndexPres] -= m_dt * dCompFlux_dP[ke][ic]; + + for( integer jc = 0; jc < numComp; ++jc ) + { + localIndex const localDofIndexComp = localDofIndexPres + jc + 1; + stack.localFluxJacobian[eqIndex0][localDofIndexComp] += m_dt * dCompFlux_dC[ke][ic][jc]; + stack.localFluxJacobian[eqIndex1][localDofIndexComp] -= m_dt * dCompFlux_dC[ke][ic][jc]; + } + } + } + + for( integer ic = 0; ic < numComp; ++ic ) + { + real64 dFlux_dAper[2] = {0.0, 0.0}; + dFlux_dAper[0] = m_dt * dCompFlux_dTrans[ic] * stack.dTrans_dDispJump[connectionIndex][0][0]; + dFlux_dAper[1] = -m_dt * dCompFlux_dTrans[ic] * stack.dTrans_dDispJump[connectionIndex][1][0]; + + stack.dFlux_dAperture[ic][k[0]][k[0]] += dFlux_dAper[0]; + stack.dFlux_dAperture[ic][k[0]][k[1]] += dFlux_dAper[1]; + stack.dFlux_dAperture[ic][k[1]][k[0]] -= dFlux_dAper[0]; + stack.dFlux_dAperture[ic][k[1]][k[1]] -= dFlux_dAper[1]; + } +// + connectionIndex++; + } + } + } + + /** + * @brief Performs the complete phase for the kernel. + * @param[in] iconn the connection index + * @param[inout] stack the stack variables + */ + template< typename FUNC = NoOpFunc > + GEOS_HOST_DEVICE + void complete( localIndex const iconn, + StackVariables & stack, + FUNC && kernelOp = NoOpFunc{} ) const + { + // Call Base::complete to assemble the mass balance equations + // In the lambda, fill the dR_dAper matrix + Base::complete( iconn, stack, [&] ( integer const i, + localIndex const localRow ) + { + // TODO + localIndex const ei = LvArray::integerConversion< localIndex >( m_sei( iconn, i ) ); + for( integer ic = 0; ic < numComp; ++ic ) + { + localIndex const row = ei * numComp + ic; + + m_dR_dAper.addToRowBinarySearch< parallelDeviceAtomic >( row, + stack.localColIndices.data(), + stack.dFlux_dAperture[ic][i].dataIfContiguous(), + stack.stencilSize ); + } + + // call the lambda to assemble additional terms, such as thermal terms + kernelOp( i, localRow ); + } ); + } + +private: + + CRSMatrixView< real64, localIndex const > m_dR_dAper; + + ElementViewConst< arrayView4d< real64 const > > const m_dPerm_dDispJump; +}; + + + +/** + * @class FluxComputeKernelFactory + */ +class FluxComputeKernelFactory +{ +public: + + /** + * @brief Create a new kernel and launch + * @tparam POLICY the policy used in the RAJA kernel + * @tparam STENCILWRAPPER the type of the stencil wrapper + * @param[in] rankOffset the offset of my MPI rank + * @param[in] dofKey string to get the element degrees of freedom numbers + * @param[in] solverName name of the solver (to name accessors) + * @param[in] elemManager reference to the element region manager + * @param[in] stencilWrapper reference to the stencil wrapper + * @param[in] dt time step size + * @param[inout] localMatrix the local CRS matrix + * @param[inout] localRhs the local right-hand side vector + */ + template< typename POLICY > + static void + createAndLaunch( integer const numComps, + integer const numPhases, + globalIndex const rankOffset, + string const & dofKey, + BitFlags< isothermalCompositionalMultiphaseFVMKernels::KernelFlags > kernelFlags, + string const & solverName, + ElementRegionManager const & elemManager, + SurfaceElementStencilWrapper const & stencilWrapper, + real64 const dt, + CRSMatrixView< real64, globalIndex const > const & localMatrix, + arrayView1d< real64 > const & localRhs, + CRSMatrixView< real64, localIndex const > const & dR_dAper ) + { + isothermalCompositionalMultiphaseBaseKernels::internal::kernelLaunchSelectorCompSwitch( numComps, [&]( auto NC ) + { + integer constexpr NUM_COMP = NC(); + integer constexpr NUM_DOF = NC() + 1; + + ElementRegionManager::ElementViewAccessor< arrayView1d< globalIndex const > > dofNumberAccessor = + elemManager.constructArrayViewAccessor< globalIndex, 1 >( dofKey ); + dofNumberAccessor.setName( solverName + "/accessors/" + dofKey ); + + using kernelType = FluxComputeKernel< NUM_COMP, NUM_DOF >; + typename kernelType::CompFlowAccessors compFlowAccessors( elemManager, solverName ); + typename kernelType::MultiFluidAccessors multiFluidAccessors( elemManager, solverName ); + typename kernelType::CapPressureAccessors capPressureAccessors( elemManager, solverName ); + typename kernelType::PermeabilityAccessors permeabilityAccessors( elemManager, solverName ); + typename kernelType::FracturePermeabilityAccessors fracPermAccessors( elemManager, solverName ); + + kernelType kernel( numPhases, rankOffset, stencilWrapper, dofNumberAccessor, + compFlowAccessors, multiFluidAccessors, capPressureAccessors, permeabilityAccessors, fracPermAccessors, + dt, localMatrix, localRhs, kernelFlags, dR_dAper ); + + kernelType::template launch< POLICY >( stencilWrapper.size(), kernel ); + } ); + } +}; + +} // namespace multiphasePoromechanicsConformingFracturesKernels + +} // namespace geos + +#endif //GEOS_PHYSICSSOLVERS_MULTIPHYSICS_POROMECHANICSKERNELS_MULTIPHASEPOROMECHANICSCONFORMINGFRACTURES_HPP diff --git a/src/coreComponents/physicsSolvers/multiphysics/poromechanicsKernels/MultiphasePoromechanics_impl.hpp b/src/coreComponents/physicsSolvers/multiphysics/poromechanicsKernels/MultiphasePoromechanics_impl.hpp index d12925a3daf..b5f2621b165 100644 --- a/src/coreComponents/physicsSolvers/multiphysics/poromechanicsKernels/MultiphasePoromechanics_impl.hpp +++ b/src/coreComponents/physicsSolvers/multiphysics/poromechanicsKernels/MultiphasePoromechanics_impl.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/multiphysics/poromechanicsKernels/PoromechanicsBase.hpp b/src/coreComponents/physicsSolvers/multiphysics/poromechanicsKernels/PoromechanicsBase.hpp index 75c78e1c1aa..4bd3c9f44aa 100644 --- a/src/coreComponents/physicsSolvers/multiphysics/poromechanicsKernels/PoromechanicsBase.hpp +++ b/src/coreComponents/physicsSolvers/multiphysics/poromechanicsKernels/PoromechanicsBase.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/multiphysics/poromechanicsKernels/PoromechanicsEFEMKernels.cpp.template b/src/coreComponents/physicsSolvers/multiphysics/poromechanicsKernels/PoromechanicsEFEMKernels.cpp.template index 09802963fca..debff643f00 100644 --- a/src/coreComponents/physicsSolvers/multiphysics/poromechanicsKernels/PoromechanicsEFEMKernels.cpp.template +++ b/src/coreComponents/physicsSolvers/multiphysics/poromechanicsKernels/PoromechanicsEFEMKernels.cpp.template @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/multiphysics/poromechanicsKernels/PoromechanicsKernels.cmake b/src/coreComponents/physicsSolvers/multiphysics/poromechanicsKernels/PoromechanicsKernels.cmake index c3aa48ddb39..4c0e705c4bb 100644 --- a/src/coreComponents/physicsSolvers/multiphysics/poromechanicsKernels/PoromechanicsKernels.cmake +++ b/src/coreComponents/physicsSolvers/multiphysics/poromechanicsKernels/PoromechanicsKernels.cmake @@ -31,6 +31,7 @@ set( porousSolidDispatch PorousSolid set( finiteElementDispatch H1_Hexahedron_Lagrange1_GaussLegendre2 H1_Wedge_Lagrange1_Gauss6 H1_Tetrahedron_Lagrange1_Gauss1 + H1_Tetrahedron_Lagrange1_Gauss14 H1_Pyramid_Lagrange1_Gauss5 H1_Tetrahedron_VEM_Gauss1 H1_Prism5_VEM_Gauss1 @@ -75,6 +76,7 @@ set( porousSolidDispatch PorousSolid ) set( finiteElementDispatch H1_Hexahedron_Lagrange1_GaussLegendre2 H1_Wedge_Lagrange1_Gauss6 H1_Tetrahedron_Lagrange1_Gauss1 + H1_Tetrahedron_Lagrange1_Gauss14 H1_Pyramid_Lagrange1_Gauss5 H1_Tetrahedron_VEM_Gauss1 H1_Prism5_VEM_Gauss1 diff --git a/src/coreComponents/physicsSolvers/multiphysics/poromechanicsKernels/PoromechanicsKernels.cpp.template b/src/coreComponents/physicsSolvers/multiphysics/poromechanicsKernels/PoromechanicsKernels.cpp.template index f2c44120f13..19f7ad4cb18 100644 --- a/src/coreComponents/physicsSolvers/multiphysics/poromechanicsKernels/PoromechanicsKernels.cpp.template +++ b/src/coreComponents/physicsSolvers/multiphysics/poromechanicsKernels/PoromechanicsKernels.cpp.template @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/multiphysics/poromechanicsKernels/SinglePhasePoromechanics.hpp b/src/coreComponents/physicsSolvers/multiphysics/poromechanicsKernels/SinglePhasePoromechanics.hpp index 711adb82808..00350d1f905 100644 --- a/src/coreComponents/physicsSolvers/multiphysics/poromechanicsKernels/SinglePhasePoromechanics.hpp +++ b/src/coreComponents/physicsSolvers/multiphysics/poromechanicsKernels/SinglePhasePoromechanics.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -22,6 +22,7 @@ #include "physicsSolvers/multiphysics/PoromechanicsFields.hpp" #include "physicsSolvers/multiphysics/poromechanicsKernels/PoromechanicsBase.hpp" +#include "physicsSolvers/fluidFlow/SinglePhaseBase.hpp" namespace geos { diff --git a/src/coreComponents/physicsSolvers/multiphysics/poromechanicsKernels/SinglePhasePoromechanicsConformingFractures.hpp b/src/coreComponents/physicsSolvers/multiphysics/poromechanicsKernels/SinglePhasePoromechanicsConformingFractures.hpp index d2a2b413126..e32a6d26eb7 100644 --- a/src/coreComponents/physicsSolvers/multiphysics/poromechanicsKernels/SinglePhasePoromechanicsConformingFractures.hpp +++ b/src/coreComponents/physicsSolvers/multiphysics/poromechanicsKernels/SinglePhasePoromechanicsConformingFractures.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/multiphysics/poromechanicsKernels/SinglePhasePoromechanicsEFEM.hpp b/src/coreComponents/physicsSolvers/multiphysics/poromechanicsKernels/SinglePhasePoromechanicsEFEM.hpp index ad5ccf38ab1..ac266ec21d6 100644 --- a/src/coreComponents/physicsSolvers/multiphysics/poromechanicsKernels/SinglePhasePoromechanicsEFEM.hpp +++ b/src/coreComponents/physicsSolvers/multiphysics/poromechanicsKernels/SinglePhasePoromechanicsEFEM.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -278,7 +278,9 @@ class SinglePhasePoromechanicsEFEM : arrayView1d< real64 const > const m_surfaceArea; - arrayView1d< real64 const > const m_elementVolume; + arrayView1d< real64 const > const m_elementVolumeCell; + + arrayView1d< real64 const > const m_elementVolumeFrac; arrayView1d< real64 const > const m_deltaVolume; diff --git a/src/coreComponents/physicsSolvers/multiphysics/poromechanicsKernels/SinglePhasePoromechanicsEFEM_impl.hpp b/src/coreComponents/physicsSolvers/multiphysics/poromechanicsKernels/SinglePhasePoromechanicsEFEM_impl.hpp index 0aac71f9acb..efc8ae09ea8 100644 --- a/src/coreComponents/physicsSolvers/multiphysics/poromechanicsKernels/SinglePhasePoromechanicsEFEM_impl.hpp +++ b/src/coreComponents/physicsSolvers/multiphysics/poromechanicsKernels/SinglePhasePoromechanicsEFEM_impl.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -26,7 +26,7 @@ #include "physicsSolvers/fluidFlow/SinglePhaseBaseFields.hpp" #include "physicsSolvers/multiphysics/poromechanicsKernels/SinglePhasePoromechanics.hpp" #include "physicsSolvers/multiphysics/poromechanicsKernels/SinglePhasePoromechanicsEFEM.hpp" -#include "physicsSolvers/contact/SolidMechanicsEFEMKernelsHelper.hpp" +#include "physicsSolvers/contact/kernels/SolidMechanicsEFEMKernelsHelper.hpp" namespace geos { @@ -91,8 +91,9 @@ SinglePhasePoromechanicsEFEM( NodeManager const & nodeManager, m_tVec2( embeddedSurfSubRegion.getTangentVector2() ), m_surfaceCenter( embeddedSurfSubRegion.getElementCenter() ), m_surfaceArea( embeddedSurfSubRegion.getElementArea() ), - m_elementVolume( elementSubRegion.getElementVolume() ), - m_deltaVolume( elementSubRegion.template getField< fields::flow::deltaVolume >() ), + m_elementVolumeCell( elementSubRegion.getElementVolume() ), + m_elementVolumeFrac( embeddedSurfSubRegion.getElementVolume() ), + m_deltaVolume( embeddedSurfSubRegion.template getField< fields::flow::deltaVolume >() ), m_fracturedElems( elementSubRegion.fracturedElementsList() ), m_cellsToEmbeddedSurfaces( elementSubRegion.embeddedSurfacesList().toViewConst() ), m_gravityVector{ inputGravityVector[0], inputGravityVector[1], inputGravityVector[2] }, @@ -148,7 +149,7 @@ setup( localIndex const k, { localIndex const embSurfIndex = m_cellsToEmbeddedSurfaces[k][0]; - stack.hInv = m_surfaceArea[embSurfIndex] / m_elementVolume[k]; + stack.hInv = m_surfaceArea[embSurfIndex] / m_elementVolumeCell[k]; for( localIndex a=0; a, diff --git a/src/coreComponents/physicsSolvers/solidMechanics/SolidMechanicsLagrangianFEM.cpp b/src/coreComponents/physicsSolvers/solidMechanics/SolidMechanicsLagrangianFEM.cpp index 17f7f3517f6..dd19b20d9b3 100644 --- a/src/coreComponents/physicsSolvers/solidMechanics/SolidMechanicsLagrangianFEM.cpp +++ b/src/coreComponents/physicsSolvers/solidMechanics/SolidMechanicsLagrangianFEM.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -130,6 +130,7 @@ void SolidMechanicsLagrangianFEM::postInputInitialization() { PhysicsSolverBase::postInputInitialization(); + // configure AMG LinearSolverParameters & linParams = m_linearSolverParameters.get(); linParams.isSymmetric = true; linParams.dofsPerNode = 3; @@ -161,6 +162,8 @@ void SolidMechanicsLagrangianFEM::registerDataOnMesh( Group & meshBodies ) setConstitutiveNamesCallSuper( subRegion ); subRegion.registerField< solidMechanics::strain >( getName() ).setDimLabels( 1, voightLabels ).reference().resizeDimension< 1 >( 6 ); + subRegion.registerField< solidMechanics::plasticStrain >( getName() ).setDimLabels( 1, voightLabels ).reference().resizeDimension< 1 >( 6 ); + } ); NodeManager & nodes = meshLevel.getNodeManager(); @@ -454,6 +457,7 @@ void SolidMechanicsLagrangianFEM::initializePostInitialConditionsPreSubGroups() m_targetNodes.insert( m_nonSendOrReceiveNodes.begin(), m_nonSendOrReceiveNodes.end() ); + } ); } ); @@ -509,11 +513,9 @@ real64 SolidMechanicsLagrangianFEM::solverStep( real64 const & time_n, { locallyFractured = 1; } - MpiWrapper::allReduce( &locallyFractured, - &globallyFractured, - 1, - MPI_MAX, - MPI_COMM_GEOS ); + globallyFractured = MpiWrapper::allReduce( locallyFractured, + MpiWrapper::Reduction::Max, + MPI_COMM_GEOS ); } if( globallyFractured == 0 ) { @@ -945,23 +947,36 @@ void SolidMechanicsLagrangianFEM::implicitStepComplete( real64 const & GEOS_UNUS { string const & solidMaterialName = subRegion.template getReference< string >( viewKeyStruct::solidMaterialNamesString() ); SolidBase & constitutiveRelation = getConstitutiveModel< SolidBase >( subRegion, solidMaterialName ); - constitutiveRelation.saveConvergedState(); + solidMechanics::arrayView2dLayoutStrain strain = subRegion.getField< solidMechanics::strain >(); + solidMechanics::arrayView2dLayoutStrain plasticStrain = subRegion.getField< solidMechanics::plasticStrain >(); - finiteElement::FiniteElementBase & subRegionFE = subRegion.template getReference< finiteElement::FiniteElementBase >( this->getDiscretizationName()); - finiteElement::FiniteElementDispatchHandler< BASE_FE_TYPES >::dispatch3D( subRegionFE, [&] ( auto const finiteElement ) + constitutive::ConstitutivePassThru< SolidBase >::execute( constitutiveRelation, [&] ( auto & solidModel ) { - using FE_TYPE = decltype( finiteElement ); - AverageStrainOverQuadraturePointsKernelFactory::createAndLaunch< CellElementSubRegion, FE_TYPE, parallelDevicePolicy<> >( nodeManager, - mesh.getEdgeManager(), - mesh.getFaceManager(), - subRegion, - finiteElement, - disp, - strain ); + + using SOLID_TYPE = TYPEOFREF( solidModel ); + + finiteElement::FiniteElementBase & subRegionFE = subRegion.template getReference< finiteElement::FiniteElementBase >( this->getDiscretizationName()); + finiteElement::FiniteElementDispatchHandler< BASE_FE_TYPES >::dispatch3D( subRegionFE, [&] ( auto const finiteElement ) + { + using FE_TYPE = decltype( finiteElement ); + AverageStrainOverQuadraturePointsKernelFactory::createAndLaunch< FE_TYPE, SOLID_TYPE, parallelDevicePolicy<> >( nodeManager, + mesh.getEdgeManager(), + mesh.getFaceManager(), + subRegion, + finiteElement, + solidModel, + disp, + uhat, + strain, + plasticStrain ); + } ); + + } ); + constitutiveRelation.saveConvergedState(); } ); } ); @@ -1388,7 +1403,7 @@ void SolidMechanicsLagrangianFEM::applyContactConstraint( DofManager const & dof real64 const contactStiffness = m_contactPenaltyStiffness; arrayView1d< real64 > const area = subRegion.getElementArea(); - ArrayOfArraysView< localIndex const > const elemsToFaces = subRegion.faceList().toViewConst(); + arrayView2d< localIndex const > const elemsToFaces = subRegion.faceList().toViewConst(); // TODO: use parallel policy? forAll< serialPolicy >( subRegion.size(), [=] ( localIndex const kfe ) diff --git a/src/coreComponents/physicsSolvers/solidMechanics/SolidMechanicsLagrangianFEM.hpp b/src/coreComponents/physicsSolvers/solidMechanics/SolidMechanicsLagrangianFEM.hpp index 6d331793e7b..76d98cb5143 100644 --- a/src/coreComponents/physicsSolvers/solidMechanics/SolidMechanicsLagrangianFEM.hpp +++ b/src/coreComponents/physicsSolvers/solidMechanics/SolidMechanicsLagrangianFEM.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/solidMechanics/SolidMechanicsLagrangianSSLE.cpp b/src/coreComponents/physicsSolvers/solidMechanics/SolidMechanicsLagrangianSSLE.cpp index de86e0c4ab8..cf1e138d21b 100644 --- a/src/coreComponents/physicsSolvers/solidMechanics/SolidMechanicsLagrangianSSLE.cpp +++ b/src/coreComponents/physicsSolvers/solidMechanics/SolidMechanicsLagrangianSSLE.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/solidMechanics/SolidMechanicsLagrangianSSLE.hpp b/src/coreComponents/physicsSolvers/solidMechanics/SolidMechanicsLagrangianSSLE.hpp index 3a316fa2ace..77c3c338f36 100644 --- a/src/coreComponents/physicsSolvers/solidMechanics/SolidMechanicsLagrangianSSLE.hpp +++ b/src/coreComponents/physicsSolvers/solidMechanics/SolidMechanicsLagrangianSSLE.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/solidMechanics/SolidMechanicsMPM.cpp b/src/coreComponents/physicsSolvers/solidMechanics/SolidMechanicsMPM.cpp index c59481ecbfe..c576f6513e2 100644 --- a/src/coreComponents/physicsSolvers/solidMechanics/SolidMechanicsMPM.cpp +++ b/src/coreComponents/physicsSolvers/solidMechanics/SolidMechanicsMPM.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -3313,23 +3313,17 @@ void SolidMechanicsMPM::printProfilingResults() // Get total CPU time for the entire time step real64 totalStepTimeThisRank = m_profilingTimes[numIntervals] - m_profilingTimes[0]; - real64 totalStepTimeAllRanks; - MpiWrapper::allReduce< real64 >( &totalStepTimeThisRank, - &totalStepTimeAllRanks, - 1, - MPI_SUM, - MPI_COMM_GEOS ); + real64 const totalStepTimeAllRanks = MpiWrapper::allReduce( totalStepTimeThisRank, + MpiWrapper::Reduction::Sum, + MPI_COMM_GEOS ); // Get total CPU times for each queried time interval for( unsigned int i = 0; i < numIntervals; i++ ) { real64 timeIntervalThisRank = ( m_profilingTimes[i+1] - m_profilingTimes[i] ); - real64 timeIntervalAllRanks; - MpiWrapper::allReduce< real64 >( &timeIntervalThisRank, - &timeIntervalAllRanks, - 1, - MPI_SUM, - MPI_COMM_GEOS ); + real64 const timeIntervalAllRanks = MpiWrapper::allReduce( timeIntervalThisRank, + MpiWrapper::Reduction::Sum, + MPI_COMM_GEOS ); if( rank == 0 ) { timeIntervalsAllRanks[i] = timeIntervalAllRanks; diff --git a/src/coreComponents/physicsSolvers/solidMechanics/SolidMechanicsMPM.hpp b/src/coreComponents/physicsSolvers/solidMechanics/SolidMechanicsMPM.hpp index b528b6d9e7f..571e365f14a 100644 --- a/src/coreComponents/physicsSolvers/solidMechanics/SolidMechanicsMPM.hpp +++ b/src/coreComponents/physicsSolvers/solidMechanics/SolidMechanicsMPM.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/solidMechanics/SolidMechanicsStateReset.cpp b/src/coreComponents/physicsSolvers/solidMechanics/SolidMechanicsStateReset.cpp index 6c35edca982..083047a880e 100644 --- a/src/coreComponents/physicsSolvers/solidMechanics/SolidMechanicsStateReset.cpp +++ b/src/coreComponents/physicsSolvers/solidMechanics/SolidMechanicsStateReset.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -98,6 +98,16 @@ bool SolidMechanicsStateReset::execute( real64 const time_n, } nodeManager.getField< solidMechanics::totalDisplacement >().zero(); nodeManager.getField< solidMechanics::incrementalDisplacement >().zero(); + + ElementRegionManager & elemManager = mesh.getElemManager(); + elemManager.forElementSubRegions< CellElementSubRegion >( regionNames, + [&]( localIndex const, + ElementSubRegionBase & subRegion ) + { + subRegion.getField< solidMechanics::strain >().zero(); + subRegion.getField< solidMechanics::plasticStrain >().zero(); + } ); + } // Option 2: enable / disable inelastic behavior diff --git a/src/coreComponents/physicsSolvers/solidMechanics/SolidMechanicsStateReset.hpp b/src/coreComponents/physicsSolvers/solidMechanics/SolidMechanicsStateReset.hpp index 73d3772be1a..4a9c5219038 100644 --- a/src/coreComponents/physicsSolvers/solidMechanics/SolidMechanicsStateReset.hpp +++ b/src/coreComponents/physicsSolvers/solidMechanics/SolidMechanicsStateReset.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/solidMechanics/SolidMechanicsStatistics.cpp b/src/coreComponents/physicsSolvers/solidMechanics/SolidMechanicsStatistics.cpp index 01b0073205f..12f47f2b3e3 100644 --- a/src/coreComponents/physicsSolvers/solidMechanics/SolidMechanicsStatistics.cpp +++ b/src/coreComponents/physicsSolvers/solidMechanics/SolidMechanicsStatistics.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -26,6 +26,9 @@ #include "fileIO/Outputs/OutputBase.hpp" #include "mesh/DomainPartition.hpp" #include "physicsSolvers/solidMechanics/LogLevelsInfo.hpp" +#include "common/format/table/TableData.hpp" +#include "common/format/table/TableFormatter.hpp" +#include "common/format/table/TableLayout.hpp" namespace geos { @@ -143,25 +146,27 @@ void SolidMechanicsStatistics::computeNodeStatistics( MeshLevel & mesh, real64 c nodeStatistics.minDisplacement[1] = minDispY.get(); nodeStatistics.minDisplacement[2] = minDispZ.get(); - MpiWrapper::allReduce( nodeStatistics.maxDisplacement.data(), - nodeStatistics.maxDisplacement.data(), - 3, - MpiWrapper::getMpiOp( MpiWrapper::Reduction::Max ), + MpiWrapper::allReduce( nodeStatistics.maxDisplacement, + nodeStatistics.maxDisplacement, + MpiWrapper::Reduction::Max, MPI_COMM_GEOS ); - MpiWrapper::allReduce( nodeStatistics.minDisplacement.data(), - nodeStatistics.minDisplacement.data(), - 3, - MpiWrapper::getMpiOp( MpiWrapper::Reduction::Min ), + MpiWrapper::allReduce( nodeStatistics.minDisplacement, + nodeStatistics.minDisplacement, + MpiWrapper::Reduction::Min, MPI_COMM_GEOS ); - GEOS_LOG_LEVEL_INFO_RANK_0( logInfo::Statistics, GEOS_FMT( "{} (time {} s): Min displacement (X, Y, Z): {}, {}, {} m", - getName(), time, nodeStatistics.minDisplacement[0], - nodeStatistics.minDisplacement[1], nodeStatistics.minDisplacement[2] ) ); - GEOS_LOG_LEVEL_INFO_RANK_0( logInfo::Statistics, GEOS_FMT( "{} (time {} s): Max displacement (X, Y, Z): {}, {}, {} m", - getName(), time, nodeStatistics.maxDisplacement[0], - nodeStatistics.maxDisplacement[1], nodeStatistics.maxDisplacement[2] ) ); + TableData mechanicsData; + mechanicsData.addRow( "min", GEOS_FMT( "[{},{},{}]", nodeStatistics.minDisplacement[0], + nodeStatistics.minDisplacement[1], nodeStatistics.minDisplacement[2] )); + mechanicsData.addRow( "max", GEOS_FMT( "[{},{},{}]", nodeStatistics.maxDisplacement[0], + nodeStatistics.maxDisplacement[1], nodeStatistics.maxDisplacement[2] )); + string const title = GEOS_FMT( "{}, (time {} s):", getName(), time ); + TableLayout mechanicsLayout( title, { " ", "Displacement (X, Y, Z)"} ); + + TableTextFormatter mechanicsFormatter( mechanicsLayout ); + GEOS_LOG_RANK_0( mechanicsFormatter.toString( mechanicsData )); if( m_writeCSV > 0 && MpiWrapper::commRank() == 0 ) { std::ofstream outputFile( m_outputDir + "/" + mesh.getName() + "_node_statistics" + ".csv", std::ios_base::app ); diff --git a/src/coreComponents/physicsSolvers/solidMechanics/SolidMechanicsStatistics.hpp b/src/coreComponents/physicsSolvers/solidMechanics/SolidMechanicsStatistics.hpp index 64ec6a97721..975c057b075 100644 --- a/src/coreComponents/physicsSolvers/solidMechanics/SolidMechanicsStatistics.hpp +++ b/src/coreComponents/physicsSolvers/solidMechanics/SolidMechanicsStatistics.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/solidMechanics/kernels/ExplicitFiniteStrain.hpp b/src/coreComponents/physicsSolvers/solidMechanics/kernels/ExplicitFiniteStrain.hpp index e232b156156..6384ac17292 100644 --- a/src/coreComponents/physicsSolvers/solidMechanics/kernels/ExplicitFiniteStrain.hpp +++ b/src/coreComponents/physicsSolvers/solidMechanics/kernels/ExplicitFiniteStrain.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/solidMechanics/kernels/ExplicitFiniteStrain_impl.hpp b/src/coreComponents/physicsSolvers/solidMechanics/kernels/ExplicitFiniteStrain_impl.hpp index 30f42a86fb5..8454837b438 100644 --- a/src/coreComponents/physicsSolvers/solidMechanics/kernels/ExplicitFiniteStrain_impl.hpp +++ b/src/coreComponents/physicsSolvers/solidMechanics/kernels/ExplicitFiniteStrain_impl.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/solidMechanics/kernels/ExplicitMPM.hpp b/src/coreComponents/physicsSolvers/solidMechanics/kernels/ExplicitMPM.hpp index d610b0331f4..403619a20a2 100644 --- a/src/coreComponents/physicsSolvers/solidMechanics/kernels/ExplicitMPM.hpp +++ b/src/coreComponents/physicsSolvers/solidMechanics/kernels/ExplicitMPM.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/solidMechanics/kernels/ExplicitSmallStrain.hpp b/src/coreComponents/physicsSolvers/solidMechanics/kernels/ExplicitSmallStrain.hpp index f2dbcb00e2f..b4518ca4cbd 100644 --- a/src/coreComponents/physicsSolvers/solidMechanics/kernels/ExplicitSmallStrain.hpp +++ b/src/coreComponents/physicsSolvers/solidMechanics/kernels/ExplicitSmallStrain.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/solidMechanics/kernels/ExplicitSmallStrain_impl.hpp b/src/coreComponents/physicsSolvers/solidMechanics/kernels/ExplicitSmallStrain_impl.hpp index 6f12850a63d..30910aac4b0 100644 --- a/src/coreComponents/physicsSolvers/solidMechanics/kernels/ExplicitSmallStrain_impl.hpp +++ b/src/coreComponents/physicsSolvers/solidMechanics/kernels/ExplicitSmallStrain_impl.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/solidMechanics/kernels/FixedStressThermoPoromechanics.hpp b/src/coreComponents/physicsSolvers/solidMechanics/kernels/FixedStressThermoPoromechanics.hpp index ed39ff7e78f..4b67faf912a 100644 --- a/src/coreComponents/physicsSolvers/solidMechanics/kernels/FixedStressThermoPoromechanics.hpp +++ b/src/coreComponents/physicsSolvers/solidMechanics/kernels/FixedStressThermoPoromechanics.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/solidMechanics/kernels/FixedStressThermoPoromechanics_impl.hpp b/src/coreComponents/physicsSolvers/solidMechanics/kernels/FixedStressThermoPoromechanics_impl.hpp index 72700e67ebc..36d70558513 100644 --- a/src/coreComponents/physicsSolvers/solidMechanics/kernels/FixedStressThermoPoromechanics_impl.hpp +++ b/src/coreComponents/physicsSolvers/solidMechanics/kernels/FixedStressThermoPoromechanics_impl.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/solidMechanics/kernels/ImplicitSmallStrainNewmark.hpp b/src/coreComponents/physicsSolvers/solidMechanics/kernels/ImplicitSmallStrainNewmark.hpp index c0866309721..5b97f0022da 100644 --- a/src/coreComponents/physicsSolvers/solidMechanics/kernels/ImplicitSmallStrainNewmark.hpp +++ b/src/coreComponents/physicsSolvers/solidMechanics/kernels/ImplicitSmallStrainNewmark.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/solidMechanics/kernels/ImplicitSmallStrainNewmark_impl.hpp b/src/coreComponents/physicsSolvers/solidMechanics/kernels/ImplicitSmallStrainNewmark_impl.hpp index 3f4b3a7e17a..d0e2c71ea0a 100644 --- a/src/coreComponents/physicsSolvers/solidMechanics/kernels/ImplicitSmallStrainNewmark_impl.hpp +++ b/src/coreComponents/physicsSolvers/solidMechanics/kernels/ImplicitSmallStrainNewmark_impl.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/solidMechanics/kernels/ImplicitSmallStrainQuasiStatic.hpp b/src/coreComponents/physicsSolvers/solidMechanics/kernels/ImplicitSmallStrainQuasiStatic.hpp index 304183a9192..0e9bcf87b18 100644 --- a/src/coreComponents/physicsSolvers/solidMechanics/kernels/ImplicitSmallStrainQuasiStatic.hpp +++ b/src/coreComponents/physicsSolvers/solidMechanics/kernels/ImplicitSmallStrainQuasiStatic.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/solidMechanics/kernels/ImplicitSmallStrainQuasiStatic_impl.hpp b/src/coreComponents/physicsSolvers/solidMechanics/kernels/ImplicitSmallStrainQuasiStatic_impl.hpp index dc3508c1ab9..12753ab393f 100644 --- a/src/coreComponents/physicsSolvers/solidMechanics/kernels/ImplicitSmallStrainQuasiStatic_impl.hpp +++ b/src/coreComponents/physicsSolvers/solidMechanics/kernels/ImplicitSmallStrainQuasiStatic_impl.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/solidMechanics/kernels/SolidMechanicsFixedStressThermoPoromechanicsKernels.cpp.template b/src/coreComponents/physicsSolvers/solidMechanics/kernels/SolidMechanicsFixedStressThermoPoromechanicsKernels.cpp.template index eb4d851b027..69211cfeb85 100644 --- a/src/coreComponents/physicsSolvers/solidMechanics/kernels/SolidMechanicsFixedStressThermoPoromechanicsKernels.cpp.template +++ b/src/coreComponents/physicsSolvers/solidMechanics/kernels/SolidMechanicsFixedStressThermoPoromechanicsKernels.cpp.template @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/solidMechanics/kernels/SolidMechanicsKernels.cmake b/src/coreComponents/physicsSolvers/solidMechanics/kernels/SolidMechanicsKernels.cmake index c71c31bacd2..1110dfe768b 100644 --- a/src/coreComponents/physicsSolvers/solidMechanics/kernels/SolidMechanicsKernels.cmake +++ b/src/coreComponents/physicsSolvers/solidMechanics/kernels/SolidMechanicsKernels.cmake @@ -35,6 +35,7 @@ set( solidBaseDispatch DamageSpectral set( finiteElementDispatch H1_Hexahedron_Lagrange1_GaussLegendre2 H1_Wedge_Lagrange1_Gauss6 H1_Tetrahedron_Lagrange1_Gauss1 + H1_Tetrahedron_Lagrange1_Gauss14 H1_Pyramid_Lagrange1_Gauss5 H1_Tetrahedron_VEM_Gauss1 H1_Prism5_VEM_Gauss1 diff --git a/src/coreComponents/physicsSolvers/solidMechanics/kernels/SolidMechanicsKernels.cpp.template b/src/coreComponents/physicsSolvers/solidMechanics/kernels/SolidMechanicsKernels.cpp.template index d6014e31c30..cd5829c9b16 100644 --- a/src/coreComponents/physicsSolvers/solidMechanics/kernels/SolidMechanicsKernels.cpp.template +++ b/src/coreComponents/physicsSolvers/solidMechanics/kernels/SolidMechanicsKernels.cpp.template @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/solidMechanics/kernels/SolidMechanicsLagrangianFEMKernels.hpp b/src/coreComponents/physicsSolvers/solidMechanics/kernels/SolidMechanicsLagrangianFEMKernels.hpp index fac98f550b5..2ccdfd7a87d 100644 --- a/src/coreComponents/physicsSolvers/solidMechanics/kernels/SolidMechanicsLagrangianFEMKernels.hpp +++ b/src/coreComponents/physicsSolvers/solidMechanics/kernels/SolidMechanicsLagrangianFEMKernels.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/solidMechanics/kernels/StrainHelper.hpp b/src/coreComponents/physicsSolvers/solidMechanics/kernels/StrainHelper.hpp index d77b1cb1e26..faf51f89351 100644 --- a/src/coreComponents/physicsSolvers/solidMechanics/kernels/StrainHelper.hpp +++ b/src/coreComponents/physicsSolvers/solidMechanics/kernels/StrainHelper.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -23,6 +23,7 @@ #include "common/DataTypes.hpp" #include "common/GEOS_RAJA_Interface.hpp" #include "finiteElement/FiniteElementDispatch.hpp" +#include "constitutive/ConstitutivePassThru.hpp" #include "mesh/CellElementSubRegion.hpp" #include "mesh/utilities/AverageOverQuadraturePointsKernel.hpp" #include "physicsSolvers/solidMechanics/SolidMechanicsFields.hpp" @@ -33,17 +34,18 @@ namespace geos * @class AverageStrainOverQuadraturePoints * @tparam SUBREGION_TYPE the subRegion type * @tparam FE_TYPE the finite element type + * @tparam SOLID_TYPE the solid mechanics constitutuve type */ -template< typename SUBREGION_TYPE, - typename FE_TYPE > +template< typename FE_TYPE, + typename SOLID_TYPE > class AverageStrainOverQuadraturePoints : - public AverageOverQuadraturePointsBase< SUBREGION_TYPE, + public AverageOverQuadraturePointsBase< CellElementSubRegion, FE_TYPE > { public: /// Alias for the base class; - using Base = AverageOverQuadraturePointsBase< SUBREGION_TYPE, + using Base = AverageOverQuadraturePointsBase< CellElementSubRegion, FE_TYPE >; using Base::m_elementVolume; @@ -63,24 +65,31 @@ class AverageStrainOverQuadraturePoints : AverageStrainOverQuadraturePoints( NodeManager & nodeManager, EdgeManager const & edgeManager, FaceManager const & faceManager, - SUBREGION_TYPE const & elementSubRegion, + CellElementSubRegion const & elementSubRegion, FE_TYPE const & finiteElementSpace, + SOLID_TYPE const & solidModel, fields::solidMechanics::arrayViewConst2dLayoutTotalDisplacement const displacement, - fields::solidMechanics::arrayView2dLayoutStrain const avgStrain ): + fields::solidMechanics::arrayViewConst2dLayoutIncrDisplacement const displacementInc, + fields::solidMechanics::arrayView2dLayoutStrain const avgStrain, + fields::solidMechanics::arrayView2dLayoutStrain const avgPlasticStrain ): Base( nodeManager, edgeManager, faceManager, elementSubRegion, finiteElementSpace ), + m_solidUpdate( solidModel.createKernelUpdates()), m_displacement( displacement ), - m_avgStrain( avgStrain ) + m_displacementInc( displacementInc ), + m_avgStrain( avgStrain ), + m_avgPlasticStrain( avgPlasticStrain ) {} /** * @copydoc finiteElement::KernelBase::StackVariables */ struct StackVariables : Base::StackVariables - {real64 uLocal[FE_TYPE::maxSupportPoints][3]; }; + {real64 uLocal[FE_TYPE::maxSupportPoints][3]; + real64 uHatLocal[FE_TYPE::maxSupportPoints][3]; }; /** * @brief Performs the setup phase for the kernel. @@ -99,12 +108,14 @@ class AverageStrainOverQuadraturePoints : for( int i = 0; i < 3; ++i ) { stack.uLocal[a][i] = m_displacement[localNodeIndex][i]; + stack.uHatLocal[a][i] = m_displacementInc[localNodeIndex][i]; } } for( int icomp = 0; icomp < 6; ++icomp ) { m_avgStrain[k][icomp] = 0.0; + //m_avgPlasticStrain[k][icomp] = 0.0; } } @@ -124,11 +135,26 @@ class AverageStrainOverQuadraturePoints : real64 dNdX[ FE_TYPE::maxSupportPoints ][3]; real64 const detJxW = m_finiteElementSpace.template getGradN< FE_TYPE >( k, q, stack.xLocal, stack.feStack, dNdX ); real64 strain[6] = {0.0}; + real64 strainInc[6] = {0.0}; FE_TYPE::symmetricGradient( dNdX, stack.uLocal, strain ); + FE_TYPE::symmetricGradient( dNdX, stack.uHatLocal, strainInc ); + + real64 elasticStrainInc[6] = {0.0}; + m_solidUpdate.getElasticStrainInc( k, q, elasticStrainInc ); + + real64 conversionFactor[6] = {1.0, 1.0, 1.0, 0.5, 0.5, 0.5}; // used for converting from engineering shear to tensor shear for( int icomp = 0; icomp < 6; ++icomp ) { - m_avgStrain[k][icomp] += detJxW*strain[icomp]/m_elementVolume[k]; + m_avgStrain[k][icomp] += conversionFactor[icomp]*detJxW*strain[icomp]/m_elementVolume[k]; + + // This is a hack to handle boundary conditions such as those seen in plane-strain wellbore problems + // Essentially, if bcs are constraining the strain (and thus total displacement), we do not accumulate any plastic strain (regardless + // of stresses in material law) + if( std::abs( strainInc[icomp] ) > 1.0e-8 ) + { + m_avgPlasticStrain[k][icomp] += conversionFactor[icomp]*detJxW*(strainInc[icomp] - elasticStrainInc[icomp])/m_elementVolume[k]; + } } } @@ -160,12 +186,21 @@ class AverageStrainOverQuadraturePoints : protected: + /// The material + typename SOLID_TYPE::KernelWrapper const m_solidUpdate; + /// The displacement solution fields::solidMechanics::arrayViewConst2dLayoutTotalDisplacement const m_displacement; + /// The displacement increment + fields::solidMechanics::arrayViewConst2dLayoutIncrDisplacement const m_displacementInc; + /// The average strain fields::solidMechanics::arrayView2dLayoutStrain const m_avgStrain; + /// The average plastic strain + fields::solidMechanics::arrayView2dLayoutStrain const m_avgPlasticStrain; + }; @@ -182,6 +217,7 @@ class AverageStrainOverQuadraturePointsKernelFactory * @brief Create a new kernel and launch * @tparam SUBREGION_TYPE the subRegion type * @tparam FE_TYPE the finite element type + * @tparam SOLID_TYPE the constitutive type * @tparam POLICY the kernel policy * @param nodeManager the node manager * @param edgeManager the edge manager @@ -191,23 +227,26 @@ class AverageStrainOverQuadraturePointsKernelFactory * @param property the property at quadrature points * @param averageProperty the property averaged over quadrature points */ - template< typename SUBREGION_TYPE, - typename FE_TYPE, + template< typename FE_TYPE, + typename SOLID_TYPE, typename POLICY > static void createAndLaunch( NodeManager & nodeManager, EdgeManager const & edgeManager, FaceManager const & faceManager, - SUBREGION_TYPE const & elementSubRegion, + CellElementSubRegion const & elementSubRegion, FE_TYPE const & finiteElementSpace, + SOLID_TYPE const & solidModel, fields::solidMechanics::arrayViewConst2dLayoutTotalDisplacement const displacement, - fields::solidMechanics::arrayView2dLayoutStrain const avgStrain ) + fields::solidMechanics::arrayViewConst2dLayoutIncrDisplacement const displacementInc, + fields::solidMechanics::arrayView2dLayoutStrain const avgStrain, + fields::solidMechanics::arrayView2dLayoutStrain const avgPlasticStrain ) { - AverageStrainOverQuadraturePoints< SUBREGION_TYPE, FE_TYPE > + AverageStrainOverQuadraturePoints< FE_TYPE, SOLID_TYPE > kernel( nodeManager, edgeManager, faceManager, elementSubRegion, finiteElementSpace, - displacement, avgStrain ); + solidModel, displacement, displacementInc, avgStrain, avgPlasticStrain ); - AverageStrainOverQuadraturePoints< SUBREGION_TYPE, FE_TYPE >::template + AverageStrainOverQuadraturePoints< FE_TYPE, SOLID_TYPE >::template kernelLaunch< POLICY >( elementSubRegion.size(), kernel ); } }; diff --git a/src/coreComponents/physicsSolvers/solidMechanics/kernels/policies.hpp.in b/src/coreComponents/physicsSolvers/solidMechanics/kernels/policies.hpp.in index 2cbf4ce9a1c..c14654cf0c7 100644 --- a/src/coreComponents/physicsSolvers/solidMechanics/kernels/policies.hpp.in +++ b/src/coreComponents/physicsSolvers/solidMechanics/kernels/policies.hpp.in @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/surfaceGeneration/CMakeLists.txt b/src/coreComponents/physicsSolvers/surfaceGeneration/CMakeLists.txt index 9bcfd8fdc9b..eb2b85d0357 100644 --- a/src/coreComponents/physicsSolvers/surfaceGeneration/CMakeLists.txt +++ b/src/coreComponents/physicsSolvers/surfaceGeneration/CMakeLists.txt @@ -17,5 +17,6 @@ set( physicsSolvers_sources surfaceGeneration/EmbeddedSurfaceGenerator.cpp surfaceGeneration/EmbeddedSurfacesParallelSynchronization.cpp surfaceGeneration/ParallelTopologyChange.cpp + surfaceGeneration/ParallelTopologyChangeNoFixup.cpp surfaceGeneration/SurfaceGenerator.cpp PARENT_SCOPE ) \ No newline at end of file diff --git a/src/coreComponents/physicsSolvers/surfaceGeneration/EmbeddedSurfaceGenerator.cpp b/src/coreComponents/physicsSolvers/surfaceGeneration/EmbeddedSurfaceGenerator.cpp index a0ce1d96de9..da4e2856368 100644 --- a/src/coreComponents/physicsSolvers/surfaceGeneration/EmbeddedSurfaceGenerator.cpp +++ b/src/coreComponents/physicsSolvers/surfaceGeneration/EmbeddedSurfaceGenerator.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/surfaceGeneration/EmbeddedSurfaceGenerator.hpp b/src/coreComponents/physicsSolvers/surfaceGeneration/EmbeddedSurfaceGenerator.hpp index 043530d94ad..5f9219a4ea0 100644 --- a/src/coreComponents/physicsSolvers/surfaceGeneration/EmbeddedSurfaceGenerator.hpp +++ b/src/coreComponents/physicsSolvers/surfaceGeneration/EmbeddedSurfaceGenerator.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/surfaceGeneration/EmbeddedSurfacesParallelSynchronization.cpp b/src/coreComponents/physicsSolvers/surfaceGeneration/EmbeddedSurfacesParallelSynchronization.cpp index 3e41eb295fb..26d1c5fe380 100644 --- a/src/coreComponents/physicsSolvers/surfaceGeneration/EmbeddedSurfacesParallelSynchronization.cpp +++ b/src/coreComponents/physicsSolvers/surfaceGeneration/EmbeddedSurfacesParallelSynchronization.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/surfaceGeneration/EmbeddedSurfacesParallelSynchronization.hpp b/src/coreComponents/physicsSolvers/surfaceGeneration/EmbeddedSurfacesParallelSynchronization.hpp index 02714f610e8..eb92f4dc8b5 100644 --- a/src/coreComponents/physicsSolvers/surfaceGeneration/EmbeddedSurfacesParallelSynchronization.hpp +++ b/src/coreComponents/physicsSolvers/surfaceGeneration/EmbeddedSurfacesParallelSynchronization.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/surfaceGeneration/LogLevelsInfo.hpp b/src/coreComponents/physicsSolvers/surfaceGeneration/LogLevelsInfo.hpp index a3be90fff02..564e5fd95a5 100644 --- a/src/coreComponents/physicsSolvers/surfaceGeneration/LogLevelsInfo.hpp +++ b/src/coreComponents/physicsSolvers/surfaceGeneration/LogLevelsInfo.hpp @@ -2,10 +2,11 @@ * ------------------------------------------------------------------------------------------------------------ * SPDX-License-Identifier: LGPL-2.1-only * - * Copyright (c) 2018-2020 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2020 The Board of Trustees of the Leland Stanford Junior University - * Copyright (c) 2018-2020 TotalEnergies - * Copyright (c) 2019- GEOSX Contributors + * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC + * Copyright (c) 2018-2024 TotalEnergies + * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University + * Copyright (c) 2023-2024 Chevron + * Copyright (c) 2019- GEOS/GEOSX Contributors * All rights reserved * * See top level LICENSE, COPYRIGHT, CONTRIBUTORS, NOTICE, and ACKNOWLEDGEMENTS files for details. diff --git a/src/coreComponents/physicsSolvers/surfaceGeneration/ParallelTopologyChange.cpp b/src/coreComponents/physicsSolvers/surfaceGeneration/ParallelTopologyChange.cpp index 8cdac92ae68..5f10b92116e 100644 --- a/src/coreComponents/physicsSolvers/surfaceGeneration/ParallelTopologyChange.cpp +++ b/src/coreComponents/physicsSolvers/surfaceGeneration/ParallelTopologyChange.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -26,7 +26,7 @@ #include "mesh/mpiCommunications/CommunicationTools.hpp" #include "mesh/mpiCommunications/MPI_iCommData.hpp" - +#if PARALLEL_TOPOLOGY_CHANGE_METHOD==0 namespace geos { @@ -507,7 +507,7 @@ void packNewModifiedObjectsToGhosts( NeighborCommunicator * const neighbor, elemRegion.forElementSubRegionsIndex< FaceElementSubRegion >( [&]( localIndex const esr, FaceElementSubRegion & subRegion ) { - ArrayOfArraysView< localIndex const > const faceList = subRegion.faceList().toViewConst(); + arrayView2d< localIndex const > const faceList = subRegion.faceList().toViewConst(); localIndex_array & elemGhostsToSend = subRegion.getNeighborData( neighbor->neighborRank() ).ghostsToSend(); elemGhostsToSend.move( hostMemorySpace ); for( localIndex const & k : receivedObjects.newElements.at( {er, esr} ) ) @@ -1024,3 +1024,4 @@ void parallelTopologyChange::synchronizeTopologyChange( MeshLevel * const mesh, } /* namespace geos */ +#endif // PARALLEL_TOPOLOGY_CHANGE_METHOD==0 diff --git a/src/coreComponents/physicsSolvers/surfaceGeneration/ParallelTopologyChange.hpp b/src/coreComponents/physicsSolvers/surfaceGeneration/ParallelTopologyChange.hpp index 901a12b30af..249cb5c434a 100644 --- a/src/coreComponents/physicsSolvers/surfaceGeneration/ParallelTopologyChange.hpp +++ b/src/coreComponents/physicsSolvers/surfaceGeneration/ParallelTopologyChange.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -22,6 +22,8 @@ #include "physicsSolvers/surfaceGeneration/SurfaceGenerator.hpp" +#define PARALLEL_TOPOLOGY_CHANGE_METHOD 1 + namespace geos { class MeshLevel; @@ -37,6 +39,59 @@ void synchronizeTopologyChange( MeshLevel * const mesh, ModifiedObjectLists & receivedObjects, int mpiCommOrder ); + + +struct TopologyChangeStepData +{ + void init( ElementRegionManager const & elemManager ) + { + m_nodes.resize( 0 ); + m_edges.resize( 0 ); + m_faces.resize( 0 ); + m_elements.resize( elemManager.numRegions() ); + m_elementsView.resize( elemManager.numRegions() ); + m_elementsData.resize( elemManager.numRegions() ); + m_size = 0; + + for( localIndex er=0; er m_elements; + ElementRegionManager::ElementViewAccessor< arrayView1d< localIndex > > m_elementsView; + + array1d< array1d< localIndex_array > > m_elementsData; + buffer_type::size_type m_size; + +}; + +struct TopologyChangeUnpackStepData : public TopologyChangeStepData +{ + void init( buffer_type const & receiveBuffer, + ElementRegionManager const & elemManager ) + { + m_bufferPtr = receiveBuffer.data(); + TopologyChangeStepData::init( elemManager ); + } + + buffer_unit_type const * m_bufferPtr; +}; + } } diff --git a/src/coreComponents/physicsSolvers/surfaceGeneration/ParallelTopologyChangeNoFixup.cpp b/src/coreComponents/physicsSolvers/surfaceGeneration/ParallelTopologyChangeNoFixup.cpp new file mode 100644 index 00000000000..44f42069418 --- /dev/null +++ b/src/coreComponents/physicsSolvers/surfaceGeneration/ParallelTopologyChangeNoFixup.cpp @@ -0,0 +1,1291 @@ +/* + * ------------------------------------------------------------------------------------------------------------ + * SPDX-License-Identifier: LGPL-2.1-only + * + * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC + * Copyright (c) 2018-2024 TotalEnergies + * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University + * Copyright (c) 2023-2024 Chevron + * Copyright (c) 2019- GEOS/GEOSX Contributors + * All rights reserved + * + * See top level LICENSE, COPYRIGHT, CONTRIBUTORS, NOTICE, and ACKNOWLEDGEMENTS files for details. + * ------------------------------------------------------------------------------------------------------------ + */ + +/** + * @file ParallelTopologyChange.cpp + */ + +#include "ParallelTopologyChange.hpp" + +#include "common/GeosxMacros.hpp" +#include "common/TimingMacros.hpp" +#include "mesh/ElementRegionManager.hpp" +#include "mesh/MeshFields.hpp" +#include "mesh/mpiCommunications/CommunicationTools.hpp" +#include "mesh/mpiCommunications/MPI_iCommData.hpp" + +#if PARALLEL_TOPOLOGY_CHANGE_METHOD==1 +namespace geos +{ + +using namespace dataRepository; + +namespace parallelTopologyChange +{ + + +template< typename T > +void filterNonOwnedFromContainer( array1d< localIndex > & newList, + T const & container, + arrayView1d< localIndex const > const & ghostRank, + integer const neighborRank ) +{ + newList.resize( container.size()); + { + localIndex a=0; + for( auto index : container ) + { + if( ghostRank[index] == neighborRank ) + { + newList[a] = index; + ++a; + } + } + newList.resize( a ); + } +} + +template< typename T > +void filterNonOwnedFromContainer( array1d< localIndex > & newList, + T const & container, + arrayView1d< localIndex const > const & parentIndices, + arrayView1d< localIndex const > const & ghostRank, + integer const neighborRank ) +{ + newList.resize( container.size()); + { + localIndex a=0; + for( auto index : container ) + { + localIndex const parentIndex = ObjectManagerBase::getParentRecursive( parentIndices, index ); + if( ghostRank[parentIndex] == neighborRank ) + { + newList[a] = index; + ++a; + } + } + newList.resize( a ); + } +} + +void filterNewObjectsForPackToGhosts( std::set< localIndex > const & objectList, + arrayView1d< localIndex > const & parentIndices, + localIndex_array & ghostsToSend, + localIndex_array & objectsToSend ) +{ + + ghostsToSend.move( hostMemorySpace ); + //TODO this needs to be inverted since the ghostToSend list should be much longer.... + // and the objectList is a searchable set. + for( auto const index : objectList ) + { + localIndex const parentIndex = parentIndices[index]; + for( localIndex a=0; a const & objectList, + localIndex_array const & ghostsToSend, + localIndex_array & objectsToSend ) +{ + ghostsToSend.move( hostMemorySpace ); + for( localIndex a=0; a 0 ) + { + objectsToSend.emplace_back( ghostsToSend[a] ); + } + } +} + + + +//***** 1A *****// +void packNewAndModifiedObjectsToOwningRanks( NeighborCommunicator & neighbor, + MeshLevel * const meshLevel, + ModifiedObjectLists const & modifiedObjects, + int const commID ) +{ + int bufferSize = 0; + + NodeManager & nodeManager = meshLevel->getNodeManager(); + EdgeManager & edgeManager = meshLevel->getEdgeManager(); + FaceManager & faceManager = meshLevel->getFaceManager(); + ElementRegionManager & elemManager = meshLevel->getElemManager(); + + arrayView1d< integer const > const & nodeGhostRank = nodeManager.ghostRank(); + arrayView1d< integer const > const & edgeGhostRank = edgeManager.ghostRank(); + arrayView1d< integer const > const & faceGhostRank = faceManager.ghostRank(); + + arrayView1d< localIndex const > const & parentNodeIndices = nodeManager.getField< fields::parentIndex >(); + arrayView1d< localIndex const > const & parentEdgeIndices = edgeManager.getField< fields::parentIndex >(); + arrayView1d< localIndex const > const & parentFaceIndices = faceManager.getField< fields::parentIndex >(); + + int const neighborRank = neighbor.neighborRank(); + + array1d< localIndex > newNodePackListArray; filterNonOwnedFromContainer( newNodePackListArray, modifiedObjects.newNodes, parentNodeIndices, nodeGhostRank, neighborRank ); + array1d< localIndex > modNodePackListArray; filterNonOwnedFromContainer( modNodePackListArray, modifiedObjects.modifiedNodes, parentNodeIndices, nodeGhostRank, neighborRank ); + array1d< localIndex > newEdgePackListArray; filterNonOwnedFromContainer( newEdgePackListArray, modifiedObjects.newEdges, parentEdgeIndices, edgeGhostRank, neighborRank ); + array1d< localIndex > modEdgePackListArray; filterNonOwnedFromContainer( modEdgePackListArray, modifiedObjects.modifiedEdges, parentEdgeIndices, edgeGhostRank, neighborRank ); + array1d< localIndex > newFacePackListArray; filterNonOwnedFromContainer( newFacePackListArray, modifiedObjects.newFaces, parentFaceIndices, faceGhostRank, neighborRank ); + array1d< localIndex > modFacePackListArray; filterNonOwnedFromContainer( modFacePackListArray, modifiedObjects.modifiedFaces, parentFaceIndices, faceGhostRank, neighborRank ); + + + ElementRegionManager::ElementViewAccessor< arrayView1d< localIndex > > newElemPackList; + array1d< array1d< localIndex_array > > newElemData; + ElementRegionManager::ElementReferenceAccessor< localIndex_array > modElemPackList; + array1d< array1d< localIndex_array > > modElemData; + newElemPackList.resize( elemManager.numRegions()); + newElemData.resize( elemManager.numRegions()); + modElemPackList.resize( elemManager.numRegions()); + modElemData.resize( elemManager.numRegions()); + for( localIndex er=0; er const & subRegionGhostRank = subRegion.ghostRank(); + if( modifiedObjects.modifiedElements.count( {er, esr} ) > 0 ) + { + std::set< localIndex > const & elemList = modifiedObjects.modifiedElements.at( {er, esr} ); + filterNonOwnedFromContainer( modElemData[er][esr], elemList, subRegionGhostRank, neighborRank ); + } + + if( modifiedObjects.newElements.count( {er, esr} ) > 0 ) + { + std::set< localIndex > const & elemList = modifiedObjects.newElements.at( {er, esr} ); + filterNonOwnedFromContainer( newElemData[er][esr], elemList, subRegionGhostRank, neighborRank ); + } + + newElemPackList[er][esr] = newElemData[er][esr]; + modElemPackList[er][esr].set( modElemData[er][esr] ); + } + } + + // if we start packing sizing on device + async, poll for completion + parallelDeviceEvents sizeEvents; + bufferSize += nodeManager.packGlobalMapsSize( newNodePackListArray, 0 ); + bufferSize += edgeManager.packGlobalMapsSize( newEdgePackListArray, 0 ); + bufferSize += faceManager.packGlobalMapsSize( newFacePackListArray, 0 ); + bufferSize += elemManager.packGlobalMapsSize( newElemPackList ); + + bufferSize += nodeManager.packParentChildMapsSize( newNodePackListArray ); + bufferSize += edgeManager.packParentChildMapsSize( newEdgePackListArray ); + bufferSize += faceManager.packParentChildMapsSize( newFacePackListArray ); + bufferSize += elemManager.packFaceElementToFaceSize( newElemPackList ); + + bufferSize += nodeManager.packUpDownMapsSize( newNodePackListArray ); + bufferSize += edgeManager.packUpDownMapsSize( newEdgePackListArray ); + bufferSize += faceManager.packUpDownMapsSize( newFacePackListArray ); + bufferSize += elemManager.packUpDownMapsSize( newElemPackList ); + + bufferSize += nodeManager.packSize( newNodePackListArray, 0, false, sizeEvents ); + bufferSize += edgeManager.packSize( newEdgePackListArray, 0, false, sizeEvents ); + bufferSize += faceManager.packSize( newFacePackListArray, 0, false, sizeEvents ); + bufferSize += elemManager.packSize( newElemPackList ); + + bufferSize += nodeManager.packUpDownMapsSize( modNodePackListArray ); + bufferSize += edgeManager.packUpDownMapsSize( modEdgePackListArray ); + bufferSize += faceManager.packUpDownMapsSize( modFacePackListArray ); + bufferSize += elemManager.packUpDownMapsSize( modElemPackList ); + + bufferSize += nodeManager.packParentChildMapsSize( modNodePackListArray ); + bufferSize += edgeManager.packParentChildMapsSize( modEdgePackListArray ); + bufferSize += faceManager.packParentChildMapsSize( modFacePackListArray ); + + bufferSize += nodeManager.packSize( modNodePackListArray, 0, false, sizeEvents ); + bufferSize += edgeManager.packSize( modEdgePackListArray, 0, false, sizeEvents ); + bufferSize += faceManager.packSize( modFacePackListArray, 0, false, sizeEvents ); + + waitAllDeviceEvents( sizeEvents ); + neighbor.resizeSendBuffer( commID, bufferSize ); + + buffer_type & sendBuffer = neighbor.sendBuffer( commID ); + buffer_unit_type * sendBufferPtr = sendBuffer.data(); + + // empty event buffer + int packedSize = 0; + parallelDeviceEvents packEvents; + + packedSize += nodeManager.packGlobalMaps( sendBufferPtr, newNodePackListArray, 0 ); + packedSize += edgeManager.packGlobalMaps( sendBufferPtr, newEdgePackListArray, 0 ); + packedSize += faceManager.packGlobalMaps( sendBufferPtr, newFacePackListArray, 0 ); + packedSize += elemManager.packGlobalMaps( sendBufferPtr, newElemPackList ); + + packedSize += nodeManager.packParentChildMaps( sendBufferPtr, newNodePackListArray ); + packedSize += edgeManager.packParentChildMaps( sendBufferPtr, newEdgePackListArray ); + packedSize += faceManager.packParentChildMaps( sendBufferPtr, newFacePackListArray ); + packedSize += elemManager.packFaceElementToFace( sendBufferPtr, newElemPackList ); + + packedSize += nodeManager.packUpDownMaps( sendBufferPtr, newNodePackListArray ); + packedSize += edgeManager.packUpDownMaps( sendBufferPtr, newEdgePackListArray ); + packedSize += faceManager.packUpDownMaps( sendBufferPtr, newFacePackListArray ); + packedSize += elemManager.packUpDownMaps( sendBufferPtr, newElemPackList ); + + packedSize += nodeManager.pack( sendBufferPtr, newNodePackListArray, 0, false, packEvents ); + packedSize += edgeManager.pack( sendBufferPtr, newEdgePackListArray, 0, false, packEvents ); + packedSize += faceManager.pack( sendBufferPtr, newFacePackListArray, 0, false, packEvents ); + packedSize += elemManager.pack( sendBufferPtr, newElemPackList ); + + packedSize += nodeManager.packUpDownMaps( sendBufferPtr, modNodePackListArray ); + packedSize += edgeManager.packUpDownMaps( sendBufferPtr, modEdgePackListArray ); + packedSize += faceManager.packUpDownMaps( sendBufferPtr, modFacePackListArray ); + packedSize += elemManager.packUpDownMaps( sendBufferPtr, modElemPackList ); + + packedSize += nodeManager.packParentChildMaps( sendBufferPtr, modNodePackListArray ); + packedSize += edgeManager.packParentChildMaps( sendBufferPtr, modEdgePackListArray ); + packedSize += faceManager.packParentChildMaps( sendBufferPtr, modFacePackListArray ); + + packedSize += nodeManager.pack( sendBufferPtr, modNodePackListArray, 0, false, packEvents ); + packedSize += edgeManager.pack( sendBufferPtr, modEdgePackListArray, 0, false, packEvents ); + packedSize += faceManager.pack( sendBufferPtr, modFacePackListArray, 0, false, packEvents ); + + // poll for pack completion here + waitAllDeviceEvents( packEvents ); + GEOS_ERROR_IF( bufferSize != packedSize, + "Allocated Buffer Size ("<getNodeManager(); + EdgeManager & edgeManager = mesh->getEdgeManager(); + FaceManager & faceManager = mesh->getFaceManager(); + ElementRegionManager & elemManager = mesh->getElemManager(); + + unpackStateData.init( neighbor.receiveBuffer( commID ), elemManager ); + buffer_unit_type const * & receiveBufferPtr = unpackStateData.m_bufferPtr; + + localIndex_array & newLocalNodes = unpackStateData.m_nodes; + localIndex_array & newLocalEdges = unpackStateData.m_edges; + localIndex_array & newLocalFaces = unpackStateData.m_faces; + ElementRegionManager::ElementReferenceAccessor< array1d< localIndex > > & newLocalElements = unpackStateData.m_elements; + array1d< array1d< localIndex_array > > & newLocalElementsData = unpackStateData.m_elementsData; + + newLocalNodes.resize( 0 ); + newLocalEdges.resize( 0 ); + newLocalFaces.resize( 0 ); + + + newLocalElements.resize( elemManager.numRegions()); + newLocalElementsData.resize( elemManager.numRegions()); + for( localIndex er=0; er & allNewNodes = receivedObjects.newNodes; + std::set< localIndex > & allNewEdges = receivedObjects.newEdges; + std::set< localIndex > & allNewFaces = receivedObjects.newFaces; + map< std::pair< localIndex, localIndex >, std::set< localIndex > > & allNewElements = receivedObjects.newElements; + + allNewNodes.insert( newLocalNodes.begin(), newLocalNodes.end() ); + allNewEdges.insert( newLocalEdges.begin(), newLocalEdges.end() ); + allNewFaces.insert( newLocalFaces.begin(), newLocalFaces.end() ); + + for( localIndex er=0; ergetNodeManager(); + EdgeManager & edgeManager = mesh->getEdgeManager(); + FaceManager & faceManager = mesh->getFaceManager(); + ElementRegionManager & elemManager = mesh->getElemManager(); + + localIndex_array & newNodesToSend = packData.m_nodes; + localIndex_array & newEdgesToSend = packData.m_edges; + localIndex_array & newFacesToSend = packData.m_faces; + ElementRegionManager::ElementViewAccessor< arrayView1d< localIndex > > & newElemsToSend = packData.m_elementsView; + array1d< array1d< localIndex_array > > & newElemsToSendData = packData.m_elementsData; + + + localIndex_array & nodeGhostsToSend = nodeManager.getNeighborData( neighbor.neighborRank() ).ghostsToSend(); + localIndex_array & edgeGhostsToSend = edgeManager.getNeighborData( neighbor.neighborRank() ).ghostsToSend(); + localIndex_array & faceGhostsToSend = faceManager.getNeighborData( neighbor.neighborRank() ).ghostsToSend(); + + arrayView1d< localIndex > const & nodalParentIndices = nodeManager.getField< fields::parentIndex >(); + arrayView1d< localIndex > const & edgeParentIndices = edgeManager.getField< fields::parentIndex >(); + arrayView1d< localIndex > const & faceParentIndices = faceManager.getField< fields::parentIndex >(); + + filterNewObjectsForPackToGhosts( modifiedObjects.newNodes, nodalParentIndices, nodeGhostsToSend, newNodesToSend ); + filterNewObjectsForPackToGhosts( modifiedObjects.newEdges, edgeParentIndices, edgeGhostsToSend, newEdgesToSend ); + filterNewObjectsForPackToGhosts( modifiedObjects.newFaces, faceParentIndices, faceGhostsToSend, newFacesToSend ); + + SortedArray< localIndex > faceGhostsToSendSet; + for( localIndex const & kf : faceGhostsToSend ) + { + faceGhostsToSendSet.insert( kf ); + } + + newElemsToSendData.resize( elemManager.numRegions() ); + newElemsToSend.resize( elemManager.numRegions() ); + for( localIndex er=0; er( [&]( localIndex const esr, + FaceElementSubRegion & subRegion ) + { + arrayView2d< localIndex const > const faceList = subRegion.faceList().toViewConst(); + localIndex_array & elemGhostsToSend = subRegion.getNeighborData( neighbor.neighborRank() ).ghostsToSend(); + elemGhostsToSend.move( hostMemorySpace ); + for( localIndex const & k : modifiedObjects.newElements.at( {er, esr} ) ) + { + if( faceGhostsToSendSet.count( faceList( k, 0 ) ) ) + { + newElemsToSendData[er][esr].emplace_back( k ); + elemGhostsToSend.emplace_back( k ); + } + } + newElemsToSend[er][esr] = newElemsToSendData[er][esr]; + } ); + } + + int bufferSize = 0; + + bufferSize += nodeManager.packGlobalMapsSize( newNodesToSend, 0 ); + bufferSize += edgeManager.packGlobalMapsSize( newEdgesToSend, 0 ); + bufferSize += faceManager.packGlobalMapsSize( newFacesToSend, 0 ); + bufferSize += elemManager.packGlobalMapsSize( newElemsToSend ); + bufferSize += elemManager.packFaceElementToFaceSize( newElemsToSend ); + + neighbor.resizeSendBuffer( commID, bufferSize ); + + buffer_type & sendBuffer = neighbor.sendBuffer( commID ); + buffer_unit_type * sendBufferPtr = sendBuffer.data(); + + int packedSize = 0; + + packedSize += nodeManager.packGlobalMaps( sendBufferPtr, newNodesToSend, 0 ); + packedSize += edgeManager.packGlobalMaps( sendBufferPtr, newEdgesToSend, 0 ); + packedSize += faceManager.packGlobalMaps( sendBufferPtr, newFacesToSend, 0 ); + packedSize += elemManager.packGlobalMaps( sendBufferPtr, newElemsToSend ); + packedSize += elemManager.packFaceElementToFace( sendBufferPtr, newElemsToSend ); + + GEOS_ERROR_IF( bufferSize != packedSize, "Allocated Buffer Size is not equal to packed buffer size" ); +} + + +//***** 2b *****// +void unpackNewObjectsOnGhosts( NeighborCommunicator & neighbor, + int commID, + MeshLevel * const mesh, + ModifiedObjectLists & receivedObjects ) +{ + + NodeManager & nodeManager = mesh->getNodeManager(); + EdgeManager & edgeManager = mesh->getEdgeManager(); + FaceManager & faceManager = mesh->getFaceManager(); + ElementRegionManager & elemManager = mesh->getElemManager(); + + localIndex_array & nodeGhostsToRecv = nodeManager.getNeighborData( neighbor.neighborRank() ).ghostsToReceive(); + localIndex_array & edgeGhostsToRecv = edgeManager.getNeighborData( neighbor.neighborRank() ).ghostsToReceive(); + localIndex_array & faceGhostsToRecv = faceManager.getNeighborData( neighbor.neighborRank() ).ghostsToReceive(); + + buffer_type const & receiveBuffer = neighbor.receiveBuffer( commID ); + buffer_unit_type const * receiveBufferPtr = receiveBuffer.data(); + + localIndex_array newGhostNodes; + localIndex_array newGhostEdges; + localIndex_array newGhostFaces; + + ElementRegionManager::ElementReferenceAccessor< localIndex_array > newGhostElems; + array1d< array1d< localIndex_array > > newGhostElemsData; + newGhostElems.resize( elemManager.numRegions() ); + newGhostElemsData.resize( elemManager.numRegions() ); + for( localIndex er=0; er 0 ) + { + nodeGhostsToRecv.move( hostMemorySpace ); + for( localIndex a=0; a 0 ) + { + edgeGhostsToRecv.move( hostMemorySpace ); + for( localIndex a=0; a 0 ) + { + faceGhostsToRecv.move( hostMemorySpace ); + for( localIndex a=0; a( + [&]( localIndex const er, localIndex const esr, ElementRegionBase &, ElementSubRegionBase & subRegion ) + { + localIndex_array & elemGhostsToReceive = subRegion.getNeighborData( neighbor.neighborRank() ).ghostsToReceive(); + if( newGhostElemsData[er][esr].size() > 0 ) + { + elemGhostsToReceive.move( hostMemorySpace ); + + for( localIndex const & newElemIndex : newGhostElemsData[er][esr] ) + { + elemGhostsToReceive.emplace_back( newElemIndex ); + receivedObjects.newElements[ { er, esr } ].insert( newElemIndex ); + } + } + } ); + + receivedObjects.newNodes.insert( newGhostNodes.begin(), newGhostNodes.end() ); + receivedObjects.newEdges.insert( newGhostEdges.begin(), newGhostEdges.end() ); + receivedObjects.newFaces.insert( newGhostFaces.begin(), newGhostFaces.end() ); +} + + + +//***** 3a *****// +localIndex unpackNewAndModifiedObjectsDataOnOwningRanks( MeshLevel * const mesh, + ModifiedObjectLists & receivedObjects, + TopologyChangeUnpackStepData & unpackStateData ) +{ + GEOS_MARK_FUNCTION; + + NodeManager & nodeManager = mesh->getNodeManager(); + EdgeManager & edgeManager = mesh->getEdgeManager(); + FaceManager & faceManager = mesh->getFaceManager(); + ElementRegionManager & elemManager = mesh->getElemManager(); + + buffer_unit_type const * & receiveBufferPtr = unpackStateData.m_bufferPtr; + + localIndex_array & newLocalNodes = unpackStateData.m_nodes; + localIndex_array & newLocalEdges = unpackStateData.m_edges; + localIndex_array & newLocalFaces = unpackStateData.m_faces; + + ElementRegionManager::ElementReferenceAccessor< array1d< localIndex > > & newLocalElements = unpackStateData.m_elements; + + localIndex_array modifiedLocalNodes; + localIndex_array modifiedLocalEdges; + localIndex_array modifiedLocalFaces; + + ElementRegionManager::ElementReferenceAccessor< localIndex_array > modifiedLocalElements; + array1d< array1d< localIndex_array > > modifiedLocalElementsData; + + modifiedLocalElements.resize( elemManager.numRegions()); + modifiedLocalElementsData.resize( elemManager.numRegions()); + for( localIndex er=0; er & allModifiedNodes = receivedObjects.modifiedNodes; + std::set< localIndex > & allModifiedEdges = receivedObjects.modifiedEdges; + std::set< localIndex > & allModifiedFaces = receivedObjects.modifiedFaces; + map< std::pair< localIndex, localIndex >, std::set< localIndex > > & allModifiedElements = receivedObjects.modifiedElements; + + allModifiedNodes.insert( modifiedLocalNodes.begin(), modifiedLocalNodes.end() ); + + allModifiedEdges.insert( modifiedLocalEdges.begin(), modifiedLocalEdges.end() ); + + allModifiedFaces.insert( modifiedLocalFaces.begin(), modifiedLocalFaces.end() ); + + for( localIndex er=0; ergetNodeManager(); + EdgeManager & edgeManager = mesh->getEdgeManager(); + FaceManager & faceManager = mesh->getFaceManager(); + ElementRegionManager & elemManager = mesh->getElemManager(); + + localIndex_array & newNodesToSend = packData.m_nodes; + localIndex_array & newEdgesToSend = packData.m_edges; + localIndex_array & newFacesToSend = packData.m_faces; + ElementRegionManager::ElementViewAccessor< arrayView1d< localIndex > > & newElemsToSend = packData.m_elementsView; + // array1d< array1d< localIndex_array > > & newElemsToSendData = packData.m_elementsData; + + localIndex_array modNodesToSend; + localIndex_array modEdgesToSend; + localIndex_array modFacesToSend; + ElementRegionManager::ElementReferenceAccessor< localIndex_array > modElemsToSend; + array1d< array1d< localIndex_array > > modElemsToSendData; + + localIndex_array & nodeGhostsToSend = nodeManager.getNeighborData( neighbor.neighborRank() ).ghostsToSend(); + localIndex_array & edgeGhostsToSend = edgeManager.getNeighborData( neighbor.neighborRank() ).ghostsToSend(); + localIndex_array & faceGhostsToSend = faceManager.getNeighborData( neighbor.neighborRank() ).ghostsToSend(); + + filterModObjectsForPackToGhosts( receivedObjects.modifiedNodes, nodeGhostsToSend, modNodesToSend ); + filterModObjectsForPackToGhosts( receivedObjects.modifiedEdges, edgeGhostsToSend, modEdgesToSend ); + filterModObjectsForPackToGhosts( receivedObjects.modifiedFaces, faceGhostsToSend, modFacesToSend ); + + // newElemsToSendData.resize( elemManager.numRegions() ); + // newElemsToSend.resize( elemManager.numRegions() ); + modElemsToSendData.resize( elemManager.numRegions() ); + modElemsToSend.resize( elemManager.numRegions() ); + for( localIndex er=0; er( [&]( localIndex const esr, + // FaceElementSubRegion & subRegion ) + // { + // ArrayOfArraysView< localIndex const > const faceList = subRegion.faceList().toViewConst(); + // localIndex_array & elemGhostsToSend = subRegion.getNeighborData( neighbor.neighborRank() ).ghostsToSend(); + // elemGhostsToSend.move( hostMemorySpace ); + // for( localIndex const & k : receivedObjects.newElements.at( {er, esr} ) ) + // { + // if( faceGhostsToSendSet.count( faceList( k, 0 ) ) ) + // { + // newElemsToSendData[er][esr].emplace_back( k ); + // elemGhostsToSend.emplace_back( k ); + // } + // } + // newElemsToSend[er][esr] = newElemsToSendData[er][esr]; + // } ); + + elemRegion.forElementSubRegionsIndex< ElementSubRegionBase >( [&]( localIndex const esr, + ElementSubRegionBase const & subRegion ) + { + modElemsToSend[er][esr].set( modElemsToSendData[er][esr] ); + arrayView1d< localIndex const > const & elemGhostsToSend = subRegion.getNeighborData( neighbor.neighborRank() ).ghostsToSend(); + for( localIndex const ghostToSend : elemGhostsToSend ) + { + if( receivedObjects.modifiedElements.at( { er, esr } ).count( ghostToSend ) > 0 ) + { + modElemsToSendData[er][esr].emplace_back( ghostToSend ); + } + } + } ); + } + + parallelDeviceEvents sizeEvents; + int bufferSize = 0; + + + bufferSize += nodeManager.packUpDownMapsSize( newNodesToSend ); + bufferSize += edgeManager.packUpDownMapsSize( newEdgesToSend ); + bufferSize += faceManager.packUpDownMapsSize( newFacesToSend ); + bufferSize += elemManager.packUpDownMapsSize( newElemsToSend ); + + bufferSize += nodeManager.packParentChildMapsSize( newNodesToSend ); + bufferSize += edgeManager.packParentChildMapsSize( newEdgesToSend ); + bufferSize += faceManager.packParentChildMapsSize( newFacesToSend ); + + bufferSize += nodeManager.packSize( newNodesToSend, 0, false, sizeEvents ); + bufferSize += edgeManager.packSize( newEdgesToSend, 0, false, sizeEvents ); + bufferSize += faceManager.packSize( newFacesToSend, 0, false, sizeEvents ); + bufferSize += elemManager.packSize( newElemsToSend ); + + bufferSize += nodeManager.packUpDownMapsSize( modNodesToSend ); + bufferSize += edgeManager.packUpDownMapsSize( modEdgesToSend ); + bufferSize += faceManager.packUpDownMapsSize( modFacesToSend ); + bufferSize += elemManager.packUpDownMapsSize( modElemsToSend ); + + bufferSize += nodeManager.packParentChildMapsSize( modNodesToSend ); + bufferSize += edgeManager.packParentChildMapsSize( modEdgesToSend ); + bufferSize += faceManager.packParentChildMapsSize( modFacesToSend ); + + waitAllDeviceEvents( sizeEvents ); + neighbor.resizeSendBuffer( commID, bufferSize ); + + buffer_type & sendBuffer = neighbor.sendBuffer( commID ); + buffer_unit_type * sendBufferPtr = sendBuffer.data(); + + parallelDeviceEvents packEvents; + int packedSize = 0; + + packedSize += nodeManager.packUpDownMaps( sendBufferPtr, newNodesToSend ); + packedSize += edgeManager.packUpDownMaps( sendBufferPtr, newEdgesToSend ); + packedSize += faceManager.packUpDownMaps( sendBufferPtr, newFacesToSend ); + packedSize += elemManager.packUpDownMaps( sendBufferPtr, newElemsToSend ); + + packedSize += nodeManager.packParentChildMaps( sendBufferPtr, newNodesToSend ); + packedSize += edgeManager.packParentChildMaps( sendBufferPtr, newEdgesToSend ); + packedSize += faceManager.packParentChildMaps( sendBufferPtr, newFacesToSend ); + + packedSize += nodeManager.pack( sendBufferPtr, newNodesToSend, 0, false, packEvents ); + packedSize += edgeManager.pack( sendBufferPtr, newEdgesToSend, 0, false, packEvents ); + packedSize += faceManager.pack( sendBufferPtr, newFacesToSend, 0, false, packEvents ); + packedSize += elemManager.pack( sendBufferPtr, newElemsToSend ); + + packedSize += nodeManager.packUpDownMaps( sendBufferPtr, modNodesToSend ); + packedSize += edgeManager.packUpDownMaps( sendBufferPtr, modEdgesToSend ); + packedSize += faceManager.packUpDownMaps( sendBufferPtr, modFacesToSend ); + packedSize += elemManager.packUpDownMaps( sendBufferPtr, modElemsToSend ); + + packedSize += nodeManager.packParentChildMaps( sendBufferPtr, modNodesToSend ); + packedSize += edgeManager.packParentChildMaps( sendBufferPtr, modEdgesToSend ); + packedSize += faceManager.packParentChildMaps( sendBufferPtr, modFacesToSend ); + + GEOS_ERROR_IF( bufferSize != packedSize, "Allocated Buffer Size is not equal to packed buffer size" ); + + waitAllDeviceEvents( packEvents ); +} + + +//***** 3c ***** +void unpackNewAndModifiedObjectsDataOnGhosts( NeighborCommunicator & neighbor, + int commID, + MeshLevel * const mesh, + ModifiedObjectLists & receivedObjects ) +{ + + NodeManager & nodeManager = mesh->getNodeManager(); + EdgeManager & edgeManager = mesh->getEdgeManager(); + FaceManager & faceManager = mesh->getFaceManager(); + ElementRegionManager & elemManager = mesh->getElemManager(); + + buffer_type const & receiveBuffer = neighbor.receiveBuffer( commID ); + buffer_unit_type const * receiveBufferPtr = receiveBuffer.data(); + + localIndex_array newGhostNodes; + localIndex_array newGhostEdges; + localIndex_array newGhostFaces; + + localIndex_array modGhostNodes; + localIndex_array modGhostEdges; + localIndex_array modGhostFaces; + + ElementRegionManager::ElementReferenceAccessor< localIndex_array > newGhostElems; + array1d< array1d< localIndex_array > > newGhostElemsData; + newGhostElems.resize( elemManager.numRegions() ); + newGhostElemsData.resize( elemManager.numRegions() ); + ElementRegionManager::ElementReferenceAccessor< localIndex_array > modGhostElems; + array1d< array1d< localIndex_array > > modGhostElemsData; + modGhostElems.resize( elemManager.numRegions() ); + modGhostElemsData.resize( elemManager.numRegions() ); + for( localIndex er=0; er( + [&]( localIndex const er, localIndex const esr, ElementRegionBase &, ElementSubRegionBase & ) + { + receivedObjects.modifiedElements[ { er, esr } ].insert( modGhostElemsData[er][esr].begin(), + modGhostElemsData[er][esr].end() ); + } ); + + receivedObjects.modifiedNodes.insert( modGhostNodes.begin(), modGhostNodes.end() ); + receivedObjects.modifiedEdges.insert( modGhostEdges.begin(), modGhostEdges.end() ); + receivedObjects.modifiedFaces.insert( modGhostFaces.begin(), modGhostFaces.end() ); + +} + + + +void updateConnectorsToFaceElems( std::set< localIndex > const & newFaceElements, + FaceElementSubRegion & faceElemSubRegion ) +{ + ArrayOfArrays< localIndex > & connectorToElem = faceElemSubRegion.m_2dFaceTo2dElems; + map< localIndex, localIndex > & edgesToConnectorEdges = faceElemSubRegion.m_edgesTo2dFaces; + array1d< localIndex > & connectorEdgesToEdges = faceElemSubRegion.m_2dFaceToEdge; + + ArrayOfArraysView< localIndex const > const facesToEdges = faceElemSubRegion.edgeList().toViewConst(); + + for( localIndex const & kfe : newFaceElements ) + { + arraySlice1d< localIndex const > const faceToEdges = facesToEdges[kfe]; + for( localIndex ke=0; ke & neighbors, + ModifiedObjectLists & modifiedObjects, + ModifiedObjectLists & receivedObjects, + int mpiCommOrder ) +{ + + NodeManager & nodeManager = mesh->getNodeManager(); + EdgeManager & edgeManager = mesh->getEdgeManager(); + FaceManager & faceManager = mesh->getFaceManager(); + ElementRegionManager & elemManager = mesh->getElemManager(); + + + /************************************************************************************************ + * The goal is to synchronize the changes from the rank that has topology changes to + * ranks that have copies of the objects that were changed. In this "original" implementation, we + * do this without map unpacking optimizations intended to reduce communications. + * + * Nomenclature is key to understanding the process: + * - "New" objects are objects that have just been created on by the "active color rank (ACR)" + * - "Modified" objects are objects that have been modified by the ACR. + * + * - ACR (active color rank) is the rank that has created the topology changes. Given the way we + * map the colors to ranks, the ACR are NOT neighbors...i.e. do not communicate with each other. + * - OR (Owning rank/s) is the rank that owns the "new/modified" objects. This may or may not be + * the ACR. + * - GR (Ghosted rank/s) is the rank that has a ghost copy of the "new/modified" object. + * + * note: object parents define the owning rank. + * note: for any receive/unpack operation, the current rank is the rank performing the operation + * from each neighbor...i.e. the current rank is the OR and the GR. + * + * The sequence of steps are: + * 1a) On the ACR, pack the new/modified objects that are not owned by the ACR and send them to + * their OR. + * 1b) On the OR, unpack the new objects that are owned by the rank that has the changes. DO NOT + * unpack the maps as they will potentially contain indices that are not on the OR. + * + * At this point the OR has all the new objects that it owns...but not the maps or the fields. + * + * 2a) On the OR, pack the new objects that are owned by the rank and send them to the ranks + * where they are ghosted (GR). DO NOT PACK THE MAPS as they are incomplete. + * 2b) On the GR, unpack the new objects. + * + * Now everyone has all the objects and we can pack/send/receive/unpack the maps. + * + * 3a) On the OR, unpack the map modification on owning ranks from 1b). + * + * Now the OR has the correct maps. + * + * 3b) On the OR, pack the map/field modification and send to the GR. + * 3c) On the GR, unpack the map/field modifications. + * + ***********************************************************************************************/ + + + + //*********************************************************************************************** + // 1a) On the ACR, pack the new/modified objects that are not owned by the ACR and send them to + // their OR. + //*********************************************************************************************** + +// std::cout<<"***** Step 1a *****"< step1bUnpackData( neighbors.size() ); + for( unsigned int count=0; count( [&]( localIndex const er, + localIndex const esr, + ElementRegionBase &, + FaceElementSubRegion & subRegion ) + { + subRegion.inheritGhostRankFromParentFace( faceManager, receivedObjects.newElements[{er, esr}] ); + } ); + + MpiWrapper::waitAll( commData1.size(), + commData1.mpiSendBufferSizeRequest(), + commData1.mpiSendBufferSizeStatus() ); + + MpiWrapper::waitAll( commData1.size(), + commData1.mpiSendBufferRequest(), + commData1.mpiSendBufferSizeStatus() ); + + modifiedObjects.insert( receivedObjects ); + + + //************************************************************************************************ + // 2a) On the OR, pack the new objects that are owned by the rank and send them to the ranks + // where they are ghosted (GR). DO NOT PACK THE MAPS as they are incomplete. + //************************************************************************************************ + + MpiWrapper::barrier(); +// std::cout<<"***** Step 2a *****"< step2and3PackData( neighbors.size() ); + + // pack the new objects to send to ghost ranks + for( unsigned int neighborIndex=0; neighborIndex( [&]( localIndex const er, + localIndex const esr, + ElementRegionBase const &, + FaceElementSubRegion & subRegion ) + { + updateConnectorsToFaceElems( receivedObjects.newElements.at( {er, esr} ), subRegion ); + } ); + + + std::set< localIndex > allTouchedNodes; + allTouchedNodes.insert( modifiedObjects.newNodes.begin(), modifiedObjects.newNodes.end() ); + allTouchedNodes.insert( modifiedObjects.modifiedNodes.begin(), modifiedObjects.modifiedNodes.end() ); + nodeManager.depopulateUpMaps( allTouchedNodes, + edgeManager.nodeList(), + faceManager.nodeList().toViewConst(), + elemManager ); + + std::set< localIndex > allTouchedEdges; + allTouchedEdges.insert( modifiedObjects.newEdges.begin(), modifiedObjects.newEdges.end() ); + allTouchedEdges.insert( modifiedObjects.modifiedEdges.begin(), modifiedObjects.modifiedEdges.end() ); + edgeManager.depopulateUpMaps( allTouchedEdges, + faceManager.edgeList().toViewConst() ); + + std::set< localIndex > allTouchedFaces; + allTouchedFaces.insert( modifiedObjects.newFaces.begin(), modifiedObjects.newFaces.end() ); + allTouchedFaces.insert( modifiedObjects.modifiedFaces.begin(), modifiedObjects.modifiedFaces.end() ); + faceManager.depopulateUpMaps( allTouchedFaces, elemManager ); + + nodeManager.enforceStateFieldConsistencyPostTopologyChange( modifiedObjects.modifiedNodes ); + edgeManager.enforceStateFieldConsistencyPostTopologyChange( modifiedObjects.modifiedEdges ); + faceManager.enforceStateFieldConsistencyPostTopologyChange( modifiedObjects.modifiedFaces ); + + +} + +} + + + +} /* namespace geos */ +#endif // PARALLEL_TOPOLOGY_CHANGE_METHOD==1 diff --git a/src/coreComponents/physicsSolvers/surfaceGeneration/SurfaceGenerator.cpp b/src/coreComponents/physicsSolvers/surfaceGeneration/SurfaceGenerator.cpp index 26089417c74..e41674c9f82 100644 --- a/src/coreComponents/physicsSolvers/surfaceGeneration/SurfaceGenerator.cpp +++ b/src/coreComponents/physicsSolvers/surfaceGeneration/SurfaceGenerator.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -18,7 +18,6 @@ */ #include "SurfaceGenerator.hpp" -#include "ParallelTopologyChange.hpp" #include "mesh/mpiCommunications/CommunicationTools.hpp" #include "mesh/mpiCommunications/NeighborCommunicator.hpp" @@ -36,6 +35,7 @@ #include "physicsSolvers/fluidFlow/FlowSolverBaseFields.hpp" #include "kernels/surfaceGenerationKernels.hpp" +#include "ParallelTopologyChange.hpp" #include @@ -180,15 +180,27 @@ SurfaceGenerator::SurfaceGenerator( const string & name, // m_maxTurnAngle(91.0), m_nodeBasedSIF( 1 ), m_isPoroelastic( 0 ), - m_rockToughness( 1.0e99 ), + m_initialRockToughness( 1.0e99 ), + m_toughnessScalingFactor( 0.0 ), + m_fractureOrigin( { 0.0, 0.0, 0.0 } ), m_mpiCommOrder( 0 ) { this->registerWrapper( viewKeyStruct::failCriterionString(), &this->m_failCriterion ); - registerWrapper( viewKeyStruct::rockToughnessString(), &m_rockToughness ). + registerWrapper( viewKeyStruct::initialRockToughnessString(), &m_initialRockToughness ). setInputFlag( InputFlags::REQUIRED ). - setDescription( "Rock toughness of the solid material" ); + setDescription( "Initial rock toughness of the solid material" ); + + registerWrapper( viewKeyStruct::toughnessScalingFactorString(), &m_toughnessScalingFactor ). + setApplyDefaultValue( 0.0 ). + setInputFlag( InputFlags::OPTIONAL ). + setDescription( "Scaling factor for the rock toughness of the solid material" ); + + registerWrapper( viewKeyStruct::fractureOriginString(), &m_fractureOrigin ). + setDefaultValue( m_fractureOrigin ). + setInputFlag( InputFlags::OPTIONAL ). + setDescription( "Coordinate of fracture origin" ); registerWrapper( viewKeyStruct::nodeBasedSIFString(), &m_nodeBasedSIF ). setInputFlag( InputFlags::OPTIONAL ). @@ -372,17 +384,18 @@ void SurfaceGenerator::initializePostInitialConditionsPreSubGroups() FaceManager & faceManager = meshLevel.getFaceManager(); ElementRegionManager & elementManager = meshLevel.getElemManager(); arrayView2d< real64 const > const & faceNormals = faceManager.faceNormal(); + arrayView2d< real64 const > const & faceCenters = faceManager.faceCenter(); //TODO: roughness to KIC should be made a material constitutive relationship. arrayView2d< real64 > const & KIC = faceManager.getField< surfaceGeneration::K_IC >(); for( localIndex kf=0; kf= 0 ) + if( m_initialRockToughness >= 0 ) { - KIC[kf][0] = m_rockToughness; - KIC[kf][1] = m_rockToughness; - KIC[kf][2] = m_rockToughness; + KIC[kf][0] = m_initialRockToughness; + KIC[kf][1] = m_initialRockToughness; + KIC[kf][2] = m_initialRockToughness; } else { @@ -390,6 +403,10 @@ void SurfaceGenerator::initializePostInitialConditionsPreSubGroups() arrayView2d< localIndex const > const & faceToSubRegionMap = faceManager.elementSubRegionList(); arrayView2d< localIndex const > const & faceToElementMap = faceManager.elementList(); + KIC[kf][0] = 1e99; + KIC[kf][1] = 1e99; + KIC[kf][2] = 1e99; + for( localIndex k=0; k 0.0 ) + { + real64 faceCenter[3]; + faceCenter[0] = faceCenters[kf][0]; + faceCenter[1] = faceCenters[kf][1]; + faceCenter[2] = faceCenters[kf][2]; + + for( localIndex dim=0; dim<3; ++dim ) + { + real64 const initialRockToughness = KIC[kf][dim]; + + real64 const scaledToughness = scalingToughness( m_fractureOrigin, + faceCenter, + initialRockToughness, + m_toughnessScalingFactor ); + + KIC[kf][dim] = scaledToughness; + } + } } } ); } @@ -558,7 +594,6 @@ real64 SurfaceGenerator::solverStep( real64 const & time_n, PermeabilityBase & permModel = getConstitutiveModel< PermeabilityBase >( fractureSubRegion, permModelName ); permModel.initializeState(); } - } ); return rval; @@ -722,27 +757,20 @@ int SurfaceGenerator::separationDriver( DomainPartition & domain, elementManager.forElementSubRegions< FaceElementSubRegion >( [&]( FaceElementSubRegion & subRegion ) { FaceElementSubRegion::NodeMapType & nodeMap = subRegion.nodeList(); - ArrayOfArraysView< localIndex const > const faceMap = subRegion.faceList().toViewConst(); + arrayView2d< localIndex const > const faceMap = subRegion.faceList().toViewConst(); for( localIndex kfe=0; kfe const & faceToEdgeMap = faceManager.edgeList().toViewConst(); - arraySlice1d< localIndex const > const & nodeToRegionMap = nodeManager.elementRegionList()[nodeID]; - arraySlice1d< localIndex const > const & nodeToSubRegionMap = nodeManager.elementSubRegionList()[nodeID]; - arraySlice1d< localIndex const > const & nodeToElementMap = nodeManager.elementList()[nodeID]; + arraySlice1d< localIndex const > const nodeToRegionMap = nodeManager.elementRegionList()[nodeID]; + arraySlice1d< localIndex const > const nodeToSubRegionMap = nodeManager.elementSubRegionList()[nodeID]; + arraySlice1d< localIndex const > const nodeToElementMap = nodeManager.elementList()[nodeID]; // BACKWARDS COMPATIBILITY HACK! // @@ -1936,6 +1964,7 @@ void SurfaceGenerator::performFracture( const localIndex nodeID, this->m_originalFaceToEdges.toViewConst(), faceIndices ); m_faceElemsRupturedThisSolve.insert( newFaceElement ); + GEOS_LOG_LEVEL_INFO_BY_RANK( logInfo::SurfaceGenerator, GEOS_FMT ( "Created new FaceElement {} when creating face {} from {}", newFaceElement, newFaceIndex, faceIndex ) ); modifiedObjects.newElements[ {fractureElementRegion.getIndexInParent(), 0} ].insert( newFaceElement ); } } // if( faceManager.SplitObject( faceIndex, newFaceIndex ) ) @@ -4551,16 +4580,27 @@ SurfaceGenerator::calculateRuptureRate( SurfaceElementRegion & faceElementRegion maxRuptureRate = std::max( maxRuptureRate, ruptureRate( faceElemIndex ) ); } - real64 globalMaxRuptureRate; - MpiWrapper::allReduce( &maxRuptureRate, - &globalMaxRuptureRate, - 1, - MPI_MAX, - MPI_COMM_GEOS ); + real64 const globalMaxRuptureRate = MpiWrapper::allReduce( maxRuptureRate, + MpiWrapper::Reduction::Max, + MPI_COMM_GEOS ); return globalMaxRuptureRate; } +real64 SurfaceGenerator::scalingToughness( R1Tensor const fractureOrigin, + real64 const (&faceCenter)[3], + real64 const initialRockToughness, + real64 const toughnessScalingFactor ) +{ + real64 const distance = sqrt( (fractureOrigin[0] - faceCenter[0])*(fractureOrigin[0] - faceCenter[0]) + + (fractureOrigin[1] - faceCenter[1])*(fractureOrigin[1] - faceCenter[1]) + + (fractureOrigin[2] - faceCenter[2])*(fractureOrigin[2] - faceCenter[2]) ); + + real64 scaledToughness = initialRockToughness*( 1 + toughnessScalingFactor*sqrt( distance ) ); + + return scaledToughness; +} + REGISTER_CATALOG_ENTRY( PhysicsSolverBase, diff --git a/src/coreComponents/physicsSolvers/surfaceGeneration/SurfaceGenerator.hpp b/src/coreComponents/physicsSolvers/surfaceGeneration/SurfaceGenerator.hpp index 1064fe5f6b0..084b63c5fe6 100644 --- a/src/coreComponents/physicsSolvers/surfaceGeneration/SurfaceGenerator.hpp +++ b/src/coreComponents/physicsSolvers/surfaceGeneration/SurfaceGenerator.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -503,6 +503,11 @@ class SurfaceGenerator : public PhysicsSolverBase real64 calculateRuptureRate( SurfaceElementRegion & faceElementRegion ); + real64 scalingToughness( R1Tensor const fractureOrigin, + real64 const (&faceCenter)[3], + real64 const initialRockToughness, + real64 const toughnessScalingFactor ); + /** * @struct viewKeyStruct holds char strings and viewKeys for fast lookup */ @@ -521,7 +526,10 @@ class SurfaceGenerator : public PhysicsSolverBase //TODO: rock toughness should be a material parameter, and we need to make rock toughness to KIC a constitutive // relation. - constexpr static char const * rockToughnessString() { return "rockToughness"; } + constexpr static char const * initialRockToughnessString() { return "initialRockToughness"; } + constexpr static char const * toughnessScalingFactorString() { return "toughnessScalingFactor"; } + //TODO: fracture origin can be obtained from the initial fracture geometry + constexpr static char const * fractureOriginString() { return "fractureOrigin"; } // //TODO: Once the node-based SIF criterion becomes mature and robust, remove the edge-based criterion. constexpr static char const * nodeBasedSIFString() { return "nodeBasedSIF"; } @@ -541,7 +549,11 @@ class SurfaceGenerator : public PhysicsSolverBase int m_isPoroelastic; - real64 m_rockToughness; + real64 m_initialRockToughness; + + real64 m_toughnessScalingFactor; + + R1Tensor m_fractureOrigin; // Flag for consistent communication ordering int m_mpiCommOrder; diff --git a/src/coreComponents/physicsSolvers/surfaceGeneration/SurfaceGeneratorFields.hpp b/src/coreComponents/physicsSolvers/surfaceGeneration/SurfaceGeneratorFields.hpp index 2217165e789..921cb0e7e45 100644 --- a/src/coreComponents/physicsSolvers/surfaceGeneration/SurfaceGeneratorFields.hpp +++ b/src/coreComponents/physicsSolvers/surfaceGeneration/SurfaceGeneratorFields.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/surfaceGeneration/kernels/surfaceGenerationKernels.hpp b/src/coreComponents/physicsSolvers/surfaceGeneration/kernels/surfaceGenerationKernels.hpp index beeea1533c5..3a3198c9e0c 100644 --- a/src/coreComponents/physicsSolvers/surfaceGeneration/kernels/surfaceGenerationKernels.hpp +++ b/src/coreComponents/physicsSolvers/surfaceGeneration/kernels/surfaceGenerationKernels.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/surfaceGeneration/kernels/surfaceGenerationKernelsHelpers.hpp b/src/coreComponents/physicsSolvers/surfaceGeneration/kernels/surfaceGenerationKernelsHelpers.hpp index 926e6bde6b3..1e1a596bb68 100644 --- a/src/coreComponents/physicsSolvers/surfaceGeneration/kernels/surfaceGenerationKernelsHelpers.hpp +++ b/src/coreComponents/physicsSolvers/surfaceGeneration/kernels/surfaceGenerationKernelsHelpers.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/wavePropagation/sem/acoustic/firstOrderEqn/isotropic/AcousticFirstOrderWaveEquationSEM.cpp b/src/coreComponents/physicsSolvers/wavePropagation/sem/acoustic/firstOrderEqn/isotropic/AcousticFirstOrderWaveEquationSEM.cpp index e6be717bb30..506c95a3d5d 100644 --- a/src/coreComponents/physicsSolvers/wavePropagation/sem/acoustic/firstOrderEqn/isotropic/AcousticFirstOrderWaveEquationSEM.cpp +++ b/src/coreComponents/physicsSolvers/wavePropagation/sem/acoustic/firstOrderEqn/isotropic/AcousticFirstOrderWaveEquationSEM.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/wavePropagation/sem/acoustic/firstOrderEqn/isotropic/AcousticFirstOrderWaveEquationSEM.hpp b/src/coreComponents/physicsSolvers/wavePropagation/sem/acoustic/firstOrderEqn/isotropic/AcousticFirstOrderWaveEquationSEM.hpp index 18daccacb08..173600e1b90 100644 --- a/src/coreComponents/physicsSolvers/wavePropagation/sem/acoustic/firstOrderEqn/isotropic/AcousticFirstOrderWaveEquationSEM.hpp +++ b/src/coreComponents/physicsSolvers/wavePropagation/sem/acoustic/firstOrderEqn/isotropic/AcousticFirstOrderWaveEquationSEM.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/wavePropagation/sem/acoustic/firstOrderEqn/isotropic/AcousticFirstOrderWaveEquationSEMKernel.hpp b/src/coreComponents/physicsSolvers/wavePropagation/sem/acoustic/firstOrderEqn/isotropic/AcousticFirstOrderWaveEquationSEMKernel.hpp index ccc359a55ee..92f36773282 100644 --- a/src/coreComponents/physicsSolvers/wavePropagation/sem/acoustic/firstOrderEqn/isotropic/AcousticFirstOrderWaveEquationSEMKernel.hpp +++ b/src/coreComponents/physicsSolvers/wavePropagation/sem/acoustic/firstOrderEqn/isotropic/AcousticFirstOrderWaveEquationSEMKernel.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/wavePropagation/sem/acoustic/secondOrderEqn/anisotropic/AcousticVTIFields.hpp b/src/coreComponents/physicsSolvers/wavePropagation/sem/acoustic/secondOrderEqn/anisotropic/AcousticVTIFields.hpp index 1069ee8ae31..a53cf0c52ac 100644 --- a/src/coreComponents/physicsSolvers/wavePropagation/sem/acoustic/secondOrderEqn/anisotropic/AcousticVTIFields.hpp +++ b/src/coreComponents/physicsSolvers/wavePropagation/sem/acoustic/secondOrderEqn/anisotropic/AcousticVTIFields.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/wavePropagation/sem/acoustic/secondOrderEqn/anisotropic/AcousticVTIWaveEquationSEM.cpp b/src/coreComponents/physicsSolvers/wavePropagation/sem/acoustic/secondOrderEqn/anisotropic/AcousticVTIWaveEquationSEM.cpp index 1257b0ef41a..28b2497012d 100644 --- a/src/coreComponents/physicsSolvers/wavePropagation/sem/acoustic/secondOrderEqn/anisotropic/AcousticVTIWaveEquationSEM.cpp +++ b/src/coreComponents/physicsSolvers/wavePropagation/sem/acoustic/secondOrderEqn/anisotropic/AcousticVTIWaveEquationSEM.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/wavePropagation/sem/acoustic/secondOrderEqn/anisotropic/AcousticVTIWaveEquationSEM.hpp b/src/coreComponents/physicsSolvers/wavePropagation/sem/acoustic/secondOrderEqn/anisotropic/AcousticVTIWaveEquationSEM.hpp index df6d248581f..dcfe6da4d14 100644 --- a/src/coreComponents/physicsSolvers/wavePropagation/sem/acoustic/secondOrderEqn/anisotropic/AcousticVTIWaveEquationSEM.hpp +++ b/src/coreComponents/physicsSolvers/wavePropagation/sem/acoustic/secondOrderEqn/anisotropic/AcousticVTIWaveEquationSEM.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/wavePropagation/sem/acoustic/secondOrderEqn/anisotropic/AcousticVTIWaveEquationSEMKernel.hpp b/src/coreComponents/physicsSolvers/wavePropagation/sem/acoustic/secondOrderEqn/anisotropic/AcousticVTIWaveEquationSEMKernel.hpp index 3c388de273a..c0b6e66e190 100644 --- a/src/coreComponents/physicsSolvers/wavePropagation/sem/acoustic/secondOrderEqn/anisotropic/AcousticVTIWaveEquationSEMKernel.hpp +++ b/src/coreComponents/physicsSolvers/wavePropagation/sem/acoustic/secondOrderEqn/anisotropic/AcousticVTIWaveEquationSEMKernel.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/wavePropagation/sem/acoustic/secondOrderEqn/isotropic/AcousticPMLSEMKernel.hpp b/src/coreComponents/physicsSolvers/wavePropagation/sem/acoustic/secondOrderEqn/isotropic/AcousticPMLSEMKernel.hpp index 6cb55e191a3..8f1b96077ba 100644 --- a/src/coreComponents/physicsSolvers/wavePropagation/sem/acoustic/secondOrderEqn/isotropic/AcousticPMLSEMKernel.hpp +++ b/src/coreComponents/physicsSolvers/wavePropagation/sem/acoustic/secondOrderEqn/isotropic/AcousticPMLSEMKernel.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/wavePropagation/sem/acoustic/secondOrderEqn/isotropic/AcousticWaveEquationSEM.cpp b/src/coreComponents/physicsSolvers/wavePropagation/sem/acoustic/secondOrderEqn/isotropic/AcousticWaveEquationSEM.cpp index 059259cb12b..c47e6e83fc1 100644 --- a/src/coreComponents/physicsSolvers/wavePropagation/sem/acoustic/secondOrderEqn/isotropic/AcousticWaveEquationSEM.cpp +++ b/src/coreComponents/physicsSolvers/wavePropagation/sem/acoustic/secondOrderEqn/isotropic/AcousticWaveEquationSEM.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -77,7 +77,7 @@ void AcousticWaveEquationSEM::registerDataOnMesh( Group & meshBodies ) nodeManager.registerField< acousticfields::Pressure_nm1, acousticfields::Pressure_n, acousticfields::Pressure_np1, - acousticfields::PressureDoubleDerivative, + acousticfields::PressureForward, acousticfields::ForcingRHS, acousticfields::AcousticMassVector, acousticfields::DampingVector, @@ -106,6 +106,7 @@ void AcousticWaveEquationSEM::registerDataOnMesh( Group & meshBodies ) subRegion.registerField< acousticfields::AcousticVelocity >( getName() ); subRegion.registerField< acousticfields::AcousticDensity >( getName() ); subRegion.registerField< acousticfields::PartialGradient >( getName() ); + subRegion.registerField< acousticfields::PartialGradient2 >( getName() ); } ); } ); @@ -298,6 +299,8 @@ void AcousticWaveEquationSEM::initializePostInitialConditionsPreSubGroups() arrayView1d< real32 > grad = elementSubRegion.getField< acousticfields::PartialGradient >(); grad.zero(); + arrayView1d< real32 > grad2 = elementSubRegion.getField< acousticfields::PartialGradient2 >(); + grad2.zero(); finiteElement::FiniteElementDispatchHandler< SEM_FE_TYPES >::dispatch3D( fe, [&] ( auto const finiteElement ) { @@ -881,43 +884,35 @@ real64 AcousticWaveEquationSEM::explicitStepForward( real64 const & time_n, { NodeManager & nodeManager = mesh.getNodeManager(); - arrayView1d< real32 > const p_nm1 = nodeManager.getField< acousticfields::Pressure_nm1 >(); arrayView1d< real32 > const p_n = nodeManager.getField< acousticfields::Pressure_n >(); - arrayView1d< real32 > const p_np1 = nodeManager.getField< acousticfields::Pressure_np1 >(); if( computeGradient && cycleNumber >= 0 ) { - arrayView1d< real32 > const p_dt2 = nodeManager.getField< acousticfields::PressureDoubleDerivative >(); - if( m_enableLifo ) { if( !m_lifo ) { int const rank = MpiWrapper::commRank( MPI_COMM_GEOS ); - std::string lifoPrefix = GEOS_FMT( "lifo/rank_{:05}/pdt2_shot{:06}", rank, m_shotIndex ); - m_lifo = std::make_unique< LifoStorage< real32, localIndex > >( lifoPrefix, p_dt2, m_lifoOnDevice, m_lifoOnHost, m_lifoSize ); + std::string lifoPrefix = GEOS_FMT( "lifo/rank_{:05}/p_forward_shot{:06}", rank, m_shotIndex ); + m_lifo = std::make_unique< LifoStorage< real32, localIndex > >( lifoPrefix, p_n, m_lifoOnDevice, m_lifoOnHost, m_lifoSize ); } m_lifo->pushWait(); } - forAll< EXEC_POLICY >( nodeManager.size(), [=] GEOS_HOST_DEVICE ( localIndex const nodeIdx ) - { - p_dt2[nodeIdx] = (p_np1[nodeIdx] - 2*p_n[nodeIdx] + p_nm1[nodeIdx]) / pow( dt, 2 ); - } ); if( m_enableLifo ) { // Need to tell LvArray data is on GPU to avoir HtoD copy - p_dt2.move( LvArray::MemorySpace::cuda, false ); - m_lifo->pushAsync( p_dt2 ); + p_n.move( LvArray::MemorySpace::cuda, false ); + m_lifo->pushAsync( p_n ); } else { GEOS_MARK_SCOPE ( DirectWrite ); - p_dt2.move( LvArray::MemorySpace::host, false ); + p_n.move( LvArray::MemorySpace::host, false ); int const rank = MpiWrapper::commRank( MPI_COMM_GEOS ); - std::string fileName = GEOS_FMT( "lifo/rank_{:05}/pressuredt2_{:06}_{:08}.dat", rank, m_shotIndex, cycleNumber ); + std::string fileName = GEOS_FMT( "lifo/rank_{:05}/pressure_forward_{:06}_{:08}.dat", rank, m_shotIndex, cycleNumber ); int lastDirSeparator = fileName.find_last_of( "/\\" ); std::string dirName = fileName.substr( 0, lastDirSeparator ); if( string::npos != (size_t)lastDirSeparator && !directoryExists( dirName )) @@ -929,7 +924,7 @@ real64 AcousticWaveEquationSEM::explicitStepForward( real64 const & time_n, GEOS_THROW_IF( !wf, getDataContext() << ": Could not open file "<< fileName << " for writing", InputError ); - wf.write( (char *)&p_dt2[0], p_dt2.size()*sizeof( real32 ) ); + wf.write( (char *)&p_n[0], p_n.size()*sizeof( real32 ) ); wf.close( ); GEOS_THROW_IF( !wf.good(), getDataContext() << ": An error occured while writing "<< fileName, @@ -959,12 +954,18 @@ real64 AcousticWaveEquationSEM::explicitStepBackward( real64 const & time_n, { NodeManager & nodeManager = mesh.getNodeManager(); - arrayView1d< real32 const > const mass = nodeManager.getField< acousticfields::AcousticMassVector >(); - arrayView1d< real32 > const p_nm1 = nodeManager.getField< acousticfields::Pressure_nm1 >(); arrayView1d< real32 > const p_n = nodeManager.getField< acousticfields::Pressure_n >(); arrayView1d< real32 > const p_np1 = nodeManager.getField< acousticfields::Pressure_np1 >(); + //// Compute q_dt2 and store it in p_nm1 + SortedArrayView< localIndex const > const solverTargetNodesSet = m_solverTargetNodesSet.toViewConst(); + forAll< EXEC_POLICY >( solverTargetNodesSet.size(), [=] GEOS_HOST_DEVICE ( localIndex const n ) + { + localIndex const a = solverTargetNodesSet[n]; + p_nm1[a] = (p_np1[a] - 2*p_n[a] + p_nm1[a]) / pow( dt, 2 ); + } ); + EventManager const & event = getGroupByPath< EventManager >( "/Problem/Events" ); real64 const & maxTime = event.getReference< real64 >( EventManager::viewKeyStruct::maxTimeString() ); int const maxCycle = int(round( maxTime / dt )); @@ -973,11 +974,11 @@ real64 AcousticWaveEquationSEM::explicitStepBackward( real64 const & time_n, { ElementRegionManager & elemManager = mesh.getElemManager(); - arrayView1d< real32 > const p_dt2 = nodeManager.getField< acousticfields::PressureDoubleDerivative >(); + arrayView1d< real32 > const p_forward = nodeManager.getField< acousticfields::PressureForward >(); if( m_enableLifo ) { - m_lifo->pop( p_dt2 ); + m_lifo->pop( p_forward ); if( m_lifo->empty() ) delete m_lifo.release(); } @@ -986,37 +987,60 @@ real64 AcousticWaveEquationSEM::explicitStepBackward( real64 const & time_n, GEOS_MARK_SCOPE ( DirectRead ); int const rank = MpiWrapper::commRank( MPI_COMM_GEOS ); - std::string fileName = GEOS_FMT( "lifo/rank_{:05}/pressuredt2_{:06}_{:08}.dat", rank, m_shotIndex, cycleNumber ); + std::string fileName = GEOS_FMT( "lifo/rank_{:05}/pressure_forward_{:06}_{:08}.dat", rank, m_shotIndex, cycleNumber ); std::ifstream wf( fileName, std::ios::in | std::ios::binary ); GEOS_THROW_IF( !wf, getDataContext() << ": Could not open file "<< fileName << " for reading", InputError ); - p_dt2.move( LvArray::MemorySpace::host, true ); - wf.read( (char *)&p_dt2[0], p_dt2.size()*sizeof( real32 ) ); + p_forward.move( LvArray::MemorySpace::host, true ); + wf.read( (char *)&p_forward[0], p_forward.size()*sizeof( real32 ) ); wf.close( ); remove( fileName.c_str() ); } elemManager.forElementSubRegions< CellElementSubRegion >( regionNames, [&]( localIndex const, CellElementSubRegion & elementSubRegion ) { - arrayView1d< real32 const > const velocity = elementSubRegion.getField< acousticfields::AcousticVelocity >(); + arrayView2d< wsCoordType const, nodes::REFERENCE_POSITION_USD > const nodeCoords = nodeManager.getField< fields::referencePosition32 >().toViewConst(); arrayView1d< real32 > grad = elementSubRegion.getField< acousticfields::PartialGradient >(); + arrayView1d< real32 > grad2 = elementSubRegion.getField< acousticfields::PartialGradient2 >(); arrayView2d< localIndex const, cells::NODE_MAP_USD > const & elemsToNodes = elementSubRegion.nodeList(); - constexpr localIndex numNodesPerElem = 8; arrayView1d< integer const > const elemGhostRank = elementSubRegion.ghostRank(); GEOS_MARK_SCOPE ( updatePartialGradient ); - forAll< EXEC_POLICY >( elementSubRegion.size(), [=] GEOS_HOST_DEVICE ( localIndex const eltIdx ) + + //COMPUTE GRADIENTS with respect to K=1/rho*c2 (grad) and b=1/rho (grad2) + finiteElement::FiniteElementBase const & + fe = elementSubRegion.getReference< finiteElement::FiniteElementBase >( getDiscretizationName() ); + + finiteElement::FiniteElementDispatchHandler< SEM_FE_TYPES >::dispatch3D( fe, [&] ( auto const finiteElement ) { - if( elemGhostRank[eltIdx]<0 ) - { - for( localIndex i = 0; i < numNodesPerElem; ++i ) - { - localIndex nodeIdx = elemsToNodes[eltIdx][i]; - grad[eltIdx] += (-2/velocity[eltIdx]) * mass[nodeIdx]/8.0 * (p_dt2[nodeIdx] * p_n[nodeIdx]); - } - } + using FE_TYPE = TYPEOFREF( finiteElement ); + + AcousticMatricesSEM::GradientKappaBuoyancy< FE_TYPE > kernelG( finiteElement ); + kernelG.template computeGradient< EXEC_POLICY, ATOMIC_POLICY >( elementSubRegion.size(), + nodeCoords, + elemsToNodes, + elemGhostRank, + p_nm1, + p_n, + p_forward, + grad, + grad2 ); + + } ); + + // // Change of variables to return grad with respect to c and rho + // arrayView1d< real32 const > const velocity = elementSubRegion.getField< acousticfields::AcousticVelocity >(); + // arrayView1d< real32 const > const density = elementSubRegion.getField< acousticfields::AcousticDensity >(); + // forAll< EXEC_POLICY >( elementSubRegion.size(), [=] GEOS_HOST_DEVICE ( localIndex const eltIdx ) + // { + // if( elemGhostRank[eltIdx]<0 ) + // { + // grad2[eltIdx] = -1/(pow(density[eltIdx]*velocity[eltIdx],2)) * grad[eltIdx] - 1/pow(density[eltIdx],2) * grad2[eltIdx]; + // grad[eltIdx]= -2/(density[eltIdx]*pow(velocity[eltIdx],3)) * grad[eltIdx]; + // } + // } ); } ); } diff --git a/src/coreComponents/physicsSolvers/wavePropagation/sem/acoustic/secondOrderEqn/isotropic/AcousticWaveEquationSEM.hpp b/src/coreComponents/physicsSolvers/wavePropagation/sem/acoustic/secondOrderEqn/isotropic/AcousticWaveEquationSEM.hpp index a51bb5a1f31..5f3f1c70885 100644 --- a/src/coreComponents/physicsSolvers/wavePropagation/sem/acoustic/secondOrderEqn/isotropic/AcousticWaveEquationSEM.hpp +++ b/src/coreComponents/physicsSolvers/wavePropagation/sem/acoustic/secondOrderEqn/isotropic/AcousticWaveEquationSEM.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/wavePropagation/sem/acoustic/secondOrderEqn/isotropic/AcousticWaveEquationSEMKernel.hpp b/src/coreComponents/physicsSolvers/wavePropagation/sem/acoustic/secondOrderEqn/isotropic/AcousticWaveEquationSEMKernel.hpp index f582a027f97..1e993b9aa4e 100644 --- a/src/coreComponents/physicsSolvers/wavePropagation/sem/acoustic/secondOrderEqn/isotropic/AcousticWaveEquationSEMKernel.hpp +++ b/src/coreComponents/physicsSolvers/wavePropagation/sem/acoustic/secondOrderEqn/isotropic/AcousticWaveEquationSEMKernel.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/wavePropagation/sem/acoustic/shared/AcousticFields.hpp b/src/coreComponents/physicsSolvers/wavePropagation/sem/acoustic/shared/AcousticFields.hpp index dd067a11a1f..5222bc115a3 100644 --- a/src/coreComponents/physicsSolvers/wavePropagation/sem/acoustic/shared/AcousticFields.hpp +++ b/src/coreComponents/physicsSolvers/wavePropagation/sem/acoustic/shared/AcousticFields.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -59,13 +59,13 @@ DECLARE_FIELD( Pressure_np1, WRITE_AND_READ, "Scalar pressure at time n+1." ); -DECLARE_FIELD( PressureDoubleDerivative, - "pressureDoubleDerivative", +DECLARE_FIELD( PressureForward, + "pressureForward", array1d< real32 >, 0, NOPLOT, WRITE_AND_READ, - "Double derivative of the pressure for each node to compute the gradient" ); + "Pressure field from forward pass on each node to compute the gradient" ); DECLARE_FIELD( Velocity_x, "velocity_x", @@ -99,6 +99,14 @@ DECLARE_FIELD( PartialGradient, WRITE_AND_READ, "Partiel gradient computed during backward propagation" ); +DECLARE_FIELD( PartialGradient2, + "partialGradient2", + array1d< real32 >, + 0, + NOPLOT, + WRITE_AND_READ, + "Partial gradient for density/velocity computed during backward propagation" ); + DECLARE_FIELD( ForcingRHS, "rhs", array1d< real32 >, diff --git a/src/coreComponents/physicsSolvers/wavePropagation/sem/acoustic/shared/AcousticMatricesSEMKernel.hpp b/src/coreComponents/physicsSolvers/wavePropagation/sem/acoustic/shared/AcousticMatricesSEMKernel.hpp index b311d04d45d..279c6c1e834 100644 --- a/src/coreComponents/physicsSolvers/wavePropagation/sem/acoustic/shared/AcousticMatricesSEMKernel.hpp +++ b/src/coreComponents/physicsSolvers/wavePropagation/sem/acoustic/shared/AcousticMatricesSEMKernel.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -152,7 +152,70 @@ struct AcousticMatricesSEM }; + template< typename FE_TYPE > + struct GradientKappaBuoyancy + { + + GradientKappaBuoyancy( FE_TYPE const & finiteElement ) + : m_finiteElement( finiteElement ) + {} + + /** + * @brief Launch the computation of the 2 gradients relative to the coeff of the wave equation K=1/rho*c2 and b=1/rho + * @tparam EXEC_POLICY the execution policy + * @tparam ATOMIC_POLICY the atomic policy + * @param[in] size the number of cells in the subRegion + * @param[in] nodeCoords coordinates of the nodes + * @param[in] elemsToNodes map from element to nodes + * @param[in] q_dt2 second order derivative in time of backward + * @param[in] q_n current time step of backward + * @param[in] p_n current time step of forward + * @param[out] grad first part of gradient vector with respect to K=1/rho*c2 + * @param[out] grad2 second part of gradient vector with respact to b=1/rho + */ + template< typename EXEC_POLICY, typename ATOMIC_POLICY > + void + computeGradient( localIndex const size, + arrayView2d< WaveSolverBase::wsCoordType const, nodes::REFERENCE_POSITION_USD > const nodeCoords, + arrayView2d< localIndex const, cells::NODE_MAP_USD > const elemsToNodes, + arrayView1d< integer const > const elemGhostRank, + arrayView1d< real32 const > const q_dt2, + arrayView1d< real32 const > const q_n, + arrayView1d< real32 const > const p_n, + arrayView1d< real32 > const grad, + arrayView1d< real32 > const grad2 ) + { + forAll< EXEC_POLICY >( size, [=] GEOS_HOST_DEVICE ( localIndex const e ) + { + if( elemGhostRank[e]<0 ) + { + // only the eight corners of the mesh cell are needed to compute the Jacobian + real64 xLocal[ 8 ][ 3 ]; + for( localIndex a = 0; a < 8; ++a ) + { + localIndex const nodeIndex = elemsToNodes( e, FE_TYPE::meshIndexToLinearIndex3D( a ) ); + for( localIndex i = 0; i < 3; ++i ) + { + xLocal[a][i] = nodeCoords( nodeIndex, i ); + } + } + constexpr localIndex numQuadraturePointsPerElem = FE_TYPE::numQuadraturePoints; + for( localIndex q = 0; q < numQuadraturePointsPerElem; ++q ) + { + localIndex nodeIdx = elemsToNodes( e, q ); + grad[e] += q_dt2[nodeIdx] * p_n[nodeIdx] * m_finiteElement.computeMassTerm( q, xLocal ); + m_finiteElement.template computeStiffnessTerm( q, xLocal, [&] ( const int i, const int j, const real64 val ) + { + grad2[e] += val* q_n[elemsToNodes( e, j )] * p_n[elemsToNodes( e, i )]; + } ); + } + } + } ); // end loop over element + } + /// The finite element space/discretization object for the element type in the subRegion + FE_TYPE const & m_finiteElement; + }; }; diff --git a/src/coreComponents/physicsSolvers/wavePropagation/sem/acoustic/shared/AcousticTimeSchemeSEMKernel.hpp b/src/coreComponents/physicsSolvers/wavePropagation/sem/acoustic/shared/AcousticTimeSchemeSEMKernel.hpp index 20b838f6d62..69b78be7a78 100644 --- a/src/coreComponents/physicsSolvers/wavePropagation/sem/acoustic/shared/AcousticTimeSchemeSEMKernel.hpp +++ b/src/coreComponents/physicsSolvers/wavePropagation/sem/acoustic/shared/AcousticTimeSchemeSEMKernel.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/wavePropagation/sem/acoustoelastic/secondOrderEqn/isotropic/AcousticElasticWaveEquationSEM.cpp b/src/coreComponents/physicsSolvers/wavePropagation/sem/acoustoelastic/secondOrderEqn/isotropic/AcousticElasticWaveEquationSEM.cpp index f833c9dc8c5..ce244edf2ec 100644 --- a/src/coreComponents/physicsSolvers/wavePropagation/sem/acoustoelastic/secondOrderEqn/isotropic/AcousticElasticWaveEquationSEM.cpp +++ b/src/coreComponents/physicsSolvers/wavePropagation/sem/acoustoelastic/secondOrderEqn/isotropic/AcousticElasticWaveEquationSEM.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/wavePropagation/sem/acoustoelastic/secondOrderEqn/isotropic/AcousticElasticWaveEquationSEM.hpp b/src/coreComponents/physicsSolvers/wavePropagation/sem/acoustoelastic/secondOrderEqn/isotropic/AcousticElasticWaveEquationSEM.hpp index bfbb8edf88b..72bdd0473ea 100644 --- a/src/coreComponents/physicsSolvers/wavePropagation/sem/acoustoelastic/secondOrderEqn/isotropic/AcousticElasticWaveEquationSEM.hpp +++ b/src/coreComponents/physicsSolvers/wavePropagation/sem/acoustoelastic/secondOrderEqn/isotropic/AcousticElasticWaveEquationSEM.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/wavePropagation/sem/acoustoelastic/secondOrderEqn/isotropic/AcousticElasticWaveEquationSEMKernel.hpp b/src/coreComponents/physicsSolvers/wavePropagation/sem/acoustoelastic/secondOrderEqn/isotropic/AcousticElasticWaveEquationSEMKernel.hpp index 7352b5fc42b..bef479eb855 100644 --- a/src/coreComponents/physicsSolvers/wavePropagation/sem/acoustoelastic/secondOrderEqn/isotropic/AcousticElasticWaveEquationSEMKernel.hpp +++ b/src/coreComponents/physicsSolvers/wavePropagation/sem/acoustoelastic/secondOrderEqn/isotropic/AcousticElasticWaveEquationSEMKernel.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/wavePropagation/sem/acoustoelastic/secondOrderEqn/isotropic/AcoustoElasticFields.hpp b/src/coreComponents/physicsSolvers/wavePropagation/sem/acoustoelastic/secondOrderEqn/isotropic/AcoustoElasticFields.hpp index 89341e561a1..977e8ab7898 100644 --- a/src/coreComponents/physicsSolvers/wavePropagation/sem/acoustoelastic/secondOrderEqn/isotropic/AcoustoElasticFields.hpp +++ b/src/coreComponents/physicsSolvers/wavePropagation/sem/acoustoelastic/secondOrderEqn/isotropic/AcoustoElasticFields.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/wavePropagation/sem/acoustoelastic/secondOrderEqn/isotropic/AcoustoElasticTimeSchemeSEMKernel.hpp b/src/coreComponents/physicsSolvers/wavePropagation/sem/acoustoelastic/secondOrderEqn/isotropic/AcoustoElasticTimeSchemeSEMKernel.hpp index c806342cfd6..b8064cbbbf7 100644 --- a/src/coreComponents/physicsSolvers/wavePropagation/sem/acoustoelastic/secondOrderEqn/isotropic/AcoustoElasticTimeSchemeSEMKernel.hpp +++ b/src/coreComponents/physicsSolvers/wavePropagation/sem/acoustoelastic/secondOrderEqn/isotropic/AcoustoElasticTimeSchemeSEMKernel.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/wavePropagation/sem/elastic/firstOrderEqn/isotropic/ElasticFirstOrderWaveEquationSEM.cpp b/src/coreComponents/physicsSolvers/wavePropagation/sem/elastic/firstOrderEqn/isotropic/ElasticFirstOrderWaveEquationSEM.cpp index da2b95f5f38..5569e40dcdf 100644 --- a/src/coreComponents/physicsSolvers/wavePropagation/sem/elastic/firstOrderEqn/isotropic/ElasticFirstOrderWaveEquationSEM.cpp +++ b/src/coreComponents/physicsSolvers/wavePropagation/sem/elastic/firstOrderEqn/isotropic/ElasticFirstOrderWaveEquationSEM.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/wavePropagation/sem/elastic/firstOrderEqn/isotropic/ElasticFirstOrderWaveEquationSEM.hpp b/src/coreComponents/physicsSolvers/wavePropagation/sem/elastic/firstOrderEqn/isotropic/ElasticFirstOrderWaveEquationSEM.hpp index a687653c332..4cdf886919a 100644 --- a/src/coreComponents/physicsSolvers/wavePropagation/sem/elastic/firstOrderEqn/isotropic/ElasticFirstOrderWaveEquationSEM.hpp +++ b/src/coreComponents/physicsSolvers/wavePropagation/sem/elastic/firstOrderEqn/isotropic/ElasticFirstOrderWaveEquationSEM.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/wavePropagation/sem/elastic/firstOrderEqn/isotropic/ElasticFirstOrderWaveEquationSEMKernel.hpp b/src/coreComponents/physicsSolvers/wavePropagation/sem/elastic/firstOrderEqn/isotropic/ElasticFirstOrderWaveEquationSEMKernel.hpp index 2ff51cb6488..5525d6cbb44 100644 --- a/src/coreComponents/physicsSolvers/wavePropagation/sem/elastic/firstOrderEqn/isotropic/ElasticFirstOrderWaveEquationSEMKernel.hpp +++ b/src/coreComponents/physicsSolvers/wavePropagation/sem/elastic/firstOrderEqn/isotropic/ElasticFirstOrderWaveEquationSEMKernel.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/wavePropagation/sem/elastic/secondOrderEqn/anisotropic/ElasticVTIFields.hpp b/src/coreComponents/physicsSolvers/wavePropagation/sem/elastic/secondOrderEqn/anisotropic/ElasticVTIFields.hpp index 7e17769a02c..e2380615eb4 100644 --- a/src/coreComponents/physicsSolvers/wavePropagation/sem/elastic/secondOrderEqn/anisotropic/ElasticVTIFields.hpp +++ b/src/coreComponents/physicsSolvers/wavePropagation/sem/elastic/secondOrderEqn/anisotropic/ElasticVTIFields.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/wavePropagation/sem/elastic/secondOrderEqn/anisotropic/ElasticVTIWaveEquationSEMKernel.hpp b/src/coreComponents/physicsSolvers/wavePropagation/sem/elastic/secondOrderEqn/anisotropic/ElasticVTIWaveEquationSEMKernel.hpp index 02f2c3618c4..181c41884da 100644 --- a/src/coreComponents/physicsSolvers/wavePropagation/sem/elastic/secondOrderEqn/anisotropic/ElasticVTIWaveEquationSEMKernel.hpp +++ b/src/coreComponents/physicsSolvers/wavePropagation/sem/elastic/secondOrderEqn/anisotropic/ElasticVTIWaveEquationSEMKernel.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/wavePropagation/sem/elastic/secondOrderEqn/isotropic/ElasticWaveEquationSEM.cpp b/src/coreComponents/physicsSolvers/wavePropagation/sem/elastic/secondOrderEqn/isotropic/ElasticWaveEquationSEM.cpp index 46868959436..84277473919 100644 --- a/src/coreComponents/physicsSolvers/wavePropagation/sem/elastic/secondOrderEqn/isotropic/ElasticWaveEquationSEM.cpp +++ b/src/coreComponents/physicsSolvers/wavePropagation/sem/elastic/secondOrderEqn/isotropic/ElasticWaveEquationSEM.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -507,7 +507,7 @@ real64 ElasticWaveEquationSEM::computeTimeStep( real64 & dtOut ) { ux_n[a] = (real64)rand()/(real64) RAND_MAX; uy_n[a] = (real64)rand()/(real64) RAND_MAX; - uy_n[a] = (real64)rand()/(real64) RAND_MAX; + uz_n[a] = (real64)rand()/(real64) RAND_MAX; } //Step 1: Normalize randomized pressure @@ -565,20 +565,20 @@ real64 ElasticWaveEquationSEM::computeTimeStep( real64 & dtOut ) lambdaOld = lambdaNew; //Compute lambdaNew using two dotProducts - dotProductUzUzaux = 0.0; dotProductUxUxaux = 0.0; dotProductUyUyaux = 0.0; + dotProductUzUzaux = 0.0; normUx= 0.0; normUy= 0.0; normUz= 0.0; WaveSolverUtils::dotProduct( sizeNode, ux_n, stiffnessVectorx, dotProductUxUxaux ); WaveSolverUtils::dotProduct( sizeNode, uy_n, stiffnessVectory, dotProductUyUyaux ); - WaveSolverUtils::dotProduct( sizeNode, ux_n, stiffnessVectorz, dotProductUzUzaux ); + WaveSolverUtils::dotProduct( sizeNode, uz_n, stiffnessVectorz, dotProductUzUzaux ); dotProductUtotUtotAux = dotProductUxUxaux+dotProductUyUyaux+dotProductUzUzaux; WaveSolverUtils::dotProduct( sizeNode, ux_n, ux_n, normUx ); - WaveSolverUtils::dotProduct( sizeNode, uy_n, ux_n, normUy ); - WaveSolverUtils::dotProduct( sizeNode, uz_n, ux_n, normUz ); + WaveSolverUtils::dotProduct( sizeNode, uy_n, uy_n, normUy ); + WaveSolverUtils::dotProduct( sizeNode, uz_n, uz_n, normUz ); normUtot = normUx+normUy+normUz; lambdaNew = dotProductUtotUtotAux/normUtot; @@ -1013,10 +1013,10 @@ void ElasticWaveEquationSEM::cleanup( real64 const time_n, computeAllSeismoTraces( time_n, 0.0, uy_np1, uy_n, dasReceivers, m_linearDASVectorY.toView(), true ); computeAllSeismoTraces( time_n, 0.0, uz_np1, uz_n, dasReceivers, m_linearDASVectorZ.toView(), true ); // sum contributions from all MPI ranks, since some receivers might be split among multiple ranks - MpiWrapper::allReduce( dasReceivers.data(), - dasReceivers.data(), + MpiWrapper::allReduce( dasReceivers, + dasReceivers, m_linearDASGeometry.size( 0 ), - MpiWrapper::getMpiOp( MpiWrapper::Reduction::Sum ), + MpiWrapper::Reduction::Sum, MPI_COMM_GEOS ); WaveSolverUtils::writeSeismoTrace( "dasTraceReceiver", getName(), m_outputSeismoTrace, m_linearDASGeometry.size( 0 ), m_receiverIsLocal, m_nsamplesSeismoTrace, dasReceivers ); diff --git a/src/coreComponents/physicsSolvers/wavePropagation/sem/elastic/secondOrderEqn/isotropic/ElasticWaveEquationSEM.hpp b/src/coreComponents/physicsSolvers/wavePropagation/sem/elastic/secondOrderEqn/isotropic/ElasticWaveEquationSEM.hpp index 15d2d0429ec..8907f35cd76 100644 --- a/src/coreComponents/physicsSolvers/wavePropagation/sem/elastic/secondOrderEqn/isotropic/ElasticWaveEquationSEM.hpp +++ b/src/coreComponents/physicsSolvers/wavePropagation/sem/elastic/secondOrderEqn/isotropic/ElasticWaveEquationSEM.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/wavePropagation/sem/elastic/secondOrderEqn/isotropic/ElasticWaveEquationSEMKernel.hpp b/src/coreComponents/physicsSolvers/wavePropagation/sem/elastic/secondOrderEqn/isotropic/ElasticWaveEquationSEMKernel.hpp index c9d78fe64c6..c7c9b44a1a4 100644 --- a/src/coreComponents/physicsSolvers/wavePropagation/sem/elastic/secondOrderEqn/isotropic/ElasticWaveEquationSEMKernel.hpp +++ b/src/coreComponents/physicsSolvers/wavePropagation/sem/elastic/secondOrderEqn/isotropic/ElasticWaveEquationSEMKernel.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/wavePropagation/sem/elastic/shared/ElasticFields.hpp b/src/coreComponents/physicsSolvers/wavePropagation/sem/elastic/shared/ElasticFields.hpp index 5b98c51e0be..c9d2e62b43b 100644 --- a/src/coreComponents/physicsSolvers/wavePropagation/sem/elastic/shared/ElasticFields.hpp +++ b/src/coreComponents/physicsSolvers/wavePropagation/sem/elastic/shared/ElasticFields.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/wavePropagation/sem/elastic/shared/ElasticMatricesSEMKernel.hpp b/src/coreComponents/physicsSolvers/wavePropagation/sem/elastic/shared/ElasticMatricesSEMKernel.hpp index f699039e9c9..40b8947ead5 100644 --- a/src/coreComponents/physicsSolvers/wavePropagation/sem/elastic/shared/ElasticMatricesSEMKernel.hpp +++ b/src/coreComponents/physicsSolvers/wavePropagation/sem/elastic/shared/ElasticMatricesSEMKernel.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/wavePropagation/sem/elastic/shared/ElasticTimeSchemeSEMKernel.hpp b/src/coreComponents/physicsSolvers/wavePropagation/sem/elastic/shared/ElasticTimeSchemeSEMKernel.hpp index 55f7dcc163d..9b36fea0443 100644 --- a/src/coreComponents/physicsSolvers/wavePropagation/sem/elastic/shared/ElasticTimeSchemeSEMKernel.hpp +++ b/src/coreComponents/physicsSolvers/wavePropagation/sem/elastic/shared/ElasticTimeSchemeSEMKernel.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/wavePropagation/shared/PrecomputeSourcesAndReceiversKernel.hpp b/src/coreComponents/physicsSolvers/wavePropagation/shared/PrecomputeSourcesAndReceiversKernel.hpp index 761569c7fe0..6fd876ff6ef 100644 --- a/src/coreComponents/physicsSolvers/wavePropagation/shared/PrecomputeSourcesAndReceiversKernel.hpp +++ b/src/coreComponents/physicsSolvers/wavePropagation/shared/PrecomputeSourcesAndReceiversKernel.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/wavePropagation/shared/WaveSolverBase.cpp b/src/coreComponents/physicsSolvers/wavePropagation/shared/WaveSolverBase.cpp index c5baf9c7983..b55ca1f38d7 100644 --- a/src/coreComponents/physicsSolvers/wavePropagation/shared/WaveSolverBase.cpp +++ b/src/coreComponents/physicsSolvers/wavePropagation/shared/WaveSolverBase.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -484,9 +484,19 @@ void WaveSolverBase::computeTargetNodeSet( arrayView2d< localIndex const, cells: void WaveSolverBase::incrementIndexSeismoTrace( real64 const time_n ) { - while( (m_dtSeismoTrace * m_indexSeismoTrace) <= (time_n + epsilonLoc) && m_indexSeismoTrace < m_nsamplesSeismoTrace ) + if( m_forward ) + { + while( (m_dtSeismoTrace * m_indexSeismoTrace) <= (time_n + epsilonLoc) && m_indexSeismoTrace < m_nsamplesSeismoTrace ) + { + m_indexSeismoTrace++; + } + } + else { - m_indexSeismoTrace++; + while( (m_dtSeismoTrace * m_indexSeismoTrace) >= (time_n - epsilonLoc) && m_indexSeismoTrace > 0 ) + { + m_indexSeismoTrace--; + } } } @@ -515,12 +525,14 @@ void WaveSolverBase::computeAllSeismoTraces( real64 const time_n, if( m_nsamplesSeismoTrace == 0 ) return; integer const dir = m_forward ? +1 : -1; - for( localIndex iSeismo = m_indexSeismoTrace; iSeismo < m_nsamplesSeismoTrace; iSeismo++ ) + integer const beginIndex = m_forward ? m_indexSeismoTrace : m_nsamplesSeismoTrace-m_indexSeismoTrace; + for( localIndex iSeismo = beginIndex; iSeismo < m_nsamplesSeismoTrace; iSeismo++ ) { - real64 const timeSeismo = m_dtSeismoTrace * (m_forward ? iSeismo : (m_nsamplesSeismoTrace - 1) - iSeismo); - if( dir * timeSeismo > dir * (time_n + epsilonLoc) ) + localIndex seismoIndex = m_forward ? iSeismo : m_nsamplesSeismoTrace-iSeismo; + real64 const timeSeismo = m_dtSeismoTrace * seismoIndex; + if( dir * timeSeismo > dir * time_n + epsilonLoc ) break; - WaveSolverUtils::computeSeismoTrace( time_n, dir * dt, timeSeismo, iSeismo, m_receiverNodeIds, + WaveSolverUtils::computeSeismoTrace( time_n, dir * dt, timeSeismo, seismoIndex, m_receiverNodeIds, m_receiverConstants, m_receiverIsLocal, var_np1, var_n, varAtReceivers, coeffs, add ); } } @@ -535,12 +547,14 @@ void WaveSolverBase::compute2dVariableAllSeismoTraces( localIndex const regionIn if( m_nsamplesSeismoTrace == 0 ) return; integer const dir = m_forward ? +1 : -1; - for( localIndex iSeismo = m_indexSeismoTrace; iSeismo < m_nsamplesSeismoTrace; iSeismo++ ) + integer const beginIndex = m_forward ? m_indexSeismoTrace : m_nsamplesSeismoTrace-m_indexSeismoTrace; + for( localIndex iSeismo = beginIndex; iSeismo < m_nsamplesSeismoTrace; iSeismo++ ) { - real64 const timeSeismo = m_dtSeismoTrace * (m_forward ? iSeismo : (m_nsamplesSeismoTrace - 1) - iSeismo); - if( dir * timeSeismo > dir * (time_n + epsilonLoc)) + localIndex seismoIndex = m_forward ? iSeismo : m_nsamplesSeismoTrace-iSeismo; + real64 const timeSeismo = m_dtSeismoTrace * seismoIndex; + if( dir * timeSeismo > dir * time_n + epsilonLoc ) break; - WaveSolverUtils::compute2dVariableSeismoTrace( time_n, dir * dt, regionIndex, m_receiverRegion, timeSeismo, iSeismo, m_receiverElem, + WaveSolverUtils::compute2dVariableSeismoTrace( time_n, dir * dt, regionIndex, m_receiverRegion, timeSeismo, seismoIndex, m_receiverElem, m_receiverConstants, m_receiverIsLocal, var_np1, var_n, varAtReceivers ); } } diff --git a/src/coreComponents/physicsSolvers/wavePropagation/shared/WaveSolverBase.hpp b/src/coreComponents/physicsSolvers/wavePropagation/shared/WaveSolverBase.hpp index dec7284f70d..2c319ca4f38 100644 --- a/src/coreComponents/physicsSolvers/wavePropagation/shared/WaveSolverBase.hpp +++ b/src/coreComponents/physicsSolvers/wavePropagation/shared/WaveSolverBase.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/physicsSolvers/wavePropagation/shared/WaveSolverUtils.hpp b/src/coreComponents/physicsSolvers/wavePropagation/shared/WaveSolverUtils.hpp index 17287299fe3..530f7e3b8e0 100644 --- a/src/coreComponents/physicsSolvers/wavePropagation/shared/WaveSolverUtils.hpp +++ b/src/coreComponents/physicsSolvers/wavePropagation/shared/WaveSolverUtils.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/schema/CMakeLists.txt b/src/coreComponents/schema/CMakeLists.txt index 344f72e6234..2a331ee9d69 100644 --- a/src/coreComponents/schema/CMakeLists.txt +++ b/src/coreComponents/schema/CMakeLists.txt @@ -1,7 +1,7 @@ # SPDX-License-Identifier: LGPL-2.1-only # # Copyright (c) 2016-2024 Lawrence Livermore National Security LLC -# Copyright (c) 2018-2024 Total, S.A +# Copyright (c) 2018-2024 TotalEnergies # Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University # Copyright (c) 2023-2024 Chevron # Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/schema/schema.xsd b/src/coreComponents/schema/schema.xsd index 6617fd74792..87f70867a1e 100644 --- a/src/coreComponents/schema/schema.xsd +++ b/src/coreComponents/schema/schema.xsd @@ -185,6 +185,12 @@ + + + + + + @@ -357,6 +363,14 @@ + + + + + + + + @@ -365,6 +379,14 @@ + + + + + + + + @@ -377,6 +399,10 @@ + + + + @@ -389,10 +415,6 @@ - - - - @@ -461,6 +483,10 @@ + + + + @@ -609,6 +635,10 @@ + + + + @@ -1075,6 +1105,25 @@ + + + + + + + + + + + + + + + + + + + @@ -1494,6 +1543,10 @@ stress - traction is applied to the faces as specified by the inner product of i + + + + @@ -1504,6 +1557,10 @@ stress - traction is applied to the faces as specified by the inner product of i + + + + @@ -1515,6 +1572,10 @@ stress - traction is applied to the faces as specified by the inner product of i + + + + @@ -1530,6 +1591,7 @@ stress - traction is applied to the faces as specified by the inner product of i + @@ -1601,6 +1663,14 @@ stress - traction is applied to the faces as specified by the inner product of i + + + + + + + + @@ -1630,6 +1700,7 @@ stress - traction is applied to the faces as specified by the inner product of i + @@ -1698,6 +1769,7 @@ stress - traction is applied to the faces as specified by the inner product of i + @@ -1705,6 +1777,8 @@ stress - traction is applied to the faces as specified by the inner product of i + + @@ -1712,7 +1786,7 @@ stress - traction is applied to the faces as specified by the inner product of i - + @@ -2051,6 +2125,11 @@ the relative residual norm satisfies: + + @@ -2067,6 +2146,11 @@ the relative residual norm satisfies: + + @@ -2081,6 +2165,11 @@ the relative residual norm satisfies: + + @@ -2089,6 +2178,11 @@ the relative residual norm satisfies: + + @@ -2099,6 +2193,11 @@ the relative residual norm satisfies: + + @@ -2137,7 +2236,7 @@ the relative residual norm satisfies: - + @@ -2145,6 +2244,8 @@ the relative residual norm satisfies: + + @@ -2193,15 +2294,19 @@ the relative residual norm satisfies: + + + + + - @@ -2224,6 +2329,7 @@ the relative residual norm satisfies: + @@ -2586,6 +2692,8 @@ Level 0 outputs no specific information for this solver. Higher levels require m + + @@ -2673,6 +2781,8 @@ Level 0 outputs no specific information for this solver. Higher levels require m + + @@ -3081,6 +3191,74 @@ Level 0 outputs no specific information for this solver. Higher levels require m + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -3150,7 +3328,7 @@ Level 0 outputs no specific information for this solver. Higher levels require m - + @@ -3173,11 +3351,83 @@ Local- Add jump stabilization on interior of macro elements--> - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -3300,6 +3550,40 @@ Level 0 outputs no specific information for this solver. Higher levels require m + + + + + + + + + + + + + + + + + + + + + + @@ -3440,43 +3724,6 @@ Level 0 outputs no specific information for this solver. Higher levels require m - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -4245,6 +4492,58 @@ Level 0 outputs no specific information for this solver. Higher levels require m + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -4452,10 +4751,14 @@ Level 0 outputs no specific information for this solver. Higher levels require m + + + + - - + + @@ -4765,10 +5068,14 @@ Level 0 outputs no specific information for this solver. Higher levels require m - + @@ -4817,6 +5124,7 @@ Level 0 outputs no specific information for this solver. Higher levels require m + @@ -5149,6 +5457,55 @@ The expected format is "{ waterMax, oilMax }", in that order--> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/coreComponents/schema/schema.xsd.other b/src/coreComponents/schema/schema.xsd.other index c2a891421d3..bdfbfbec836 100644 --- a/src/coreComponents/schema/schema.xsd.other +++ b/src/coreComponents/schema/schema.xsd.other @@ -173,6 +173,7 @@ + @@ -279,6 +280,16 @@ + + + + + + + + + + @@ -380,6 +391,7 @@ + @@ -390,6 +402,7 @@ + @@ -398,6 +411,7 @@ + @@ -418,6 +432,7 @@ + @@ -471,7 +486,7 @@ - + @@ -514,15 +529,19 @@ + + + + + - @@ -540,6 +559,7 @@ + @@ -555,7 +575,7 @@ - + @@ -592,7 +612,7 @@ - + @@ -643,7 +663,7 @@ - + @@ -684,7 +704,7 @@ - + @@ -717,7 +737,7 @@ - + @@ -728,7 +748,7 @@ - + @@ -741,7 +761,7 @@ - + @@ -754,7 +774,7 @@ - + @@ -770,7 +790,7 @@ - + @@ -804,7 +824,7 @@ - + @@ -867,7 +887,7 @@ - + @@ -890,6 +910,28 @@ + + + + + + + + + + + + + + + + + + + + + + @@ -911,7 +953,7 @@ - + @@ -924,7 +966,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -953,6 +1021,7 @@ + @@ -965,44 +1034,46 @@ - + - + + + - + - + - - - + - + + + - + - + @@ -1022,7 +1093,7 @@ - + @@ -1035,7 +1106,7 @@ - + @@ -1046,7 +1117,7 @@ - + @@ -1057,7 +1128,7 @@ - + @@ -1070,7 +1141,7 @@ - + @@ -1085,7 +1156,7 @@ - + @@ -1100,7 +1171,7 @@ - + @@ -1113,7 +1184,7 @@ - + @@ -1128,7 +1199,7 @@ - + @@ -1139,7 +1210,7 @@ - + @@ -1152,7 +1223,7 @@ - + @@ -1165,7 +1236,7 @@ - + @@ -1180,7 +1251,7 @@ - + @@ -1196,7 +1267,7 @@ - + @@ -1211,7 +1282,7 @@ - + @@ -1228,7 +1299,7 @@ - + @@ -1245,7 +1316,24 @@ - + + + + + + + + + + + + + + + + + + @@ -1260,7 +1348,7 @@ - + @@ -1273,7 +1361,7 @@ - + @@ -1312,7 +1400,7 @@ - + @@ -1341,7 +1429,7 @@ - + @@ -1434,7 +1522,7 @@ - + @@ -1453,6 +1541,7 @@ + @@ -1931,6 +2020,56 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1970,6 +2109,8 @@ + + @@ -2018,6 +2159,8 @@ + + @@ -3003,7 +3146,7 @@ - + @@ -3031,7 +3174,7 @@ - + @@ -3050,11 +3193,11 @@ - + - + @@ -3064,7 +3207,7 @@ - + @@ -3074,11 +3217,11 @@ - + - + @@ -3088,7 +3231,7 @@ - + @@ -3098,7 +3241,7 @@ - + @@ -3108,7 +3251,7 @@ - + @@ -3132,7 +3275,7 @@ - + @@ -3150,7 +3293,7 @@ - + @@ -3162,7 +3305,7 @@ - + @@ -3174,7 +3317,7 @@ - + @@ -3182,11 +3325,11 @@ - + - + @@ -3209,7 +3352,7 @@ - + @@ -3235,7 +3378,7 @@ - + @@ -3256,7 +3399,7 @@ - + @@ -3286,7 +3429,7 @@ - + @@ -3300,7 +3443,7 @@ - + @@ -3327,7 +3470,7 @@ - + @@ -3366,7 +3509,7 @@ - + diff --git a/src/coreComponents/schema/schemaUtilities.cpp b/src/coreComponents/schema/schemaUtilities.cpp index e9d69702d33..d39b1af77f3 100644 --- a/src/coreComponents/schema/schemaUtilities.cpp +++ b/src/coreComponents/schema/schemaUtilities.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/schema/schemaUtilities.hpp b/src/coreComponents/schema/schemaUtilities.hpp index 3152eeec60d..aa9ae40e9b5 100644 --- a/src/coreComponents/schema/schemaUtilities.hpp +++ b/src/coreComponents/schema/schemaUtilities.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/unitTests/CMakeLists.txt b/src/coreComponents/unitTests/CMakeLists.txt index e270b21da1c..8b760067a42 100644 --- a/src/coreComponents/unitTests/CMakeLists.txt +++ b/src/coreComponents/unitTests/CMakeLists.txt @@ -1,7 +1,7 @@ # SPDX-License-Identifier: LGPL-2.1-only # # Copyright (c) 2016-2024 Lawrence Livermore National Security LLC -# Copyright (c) 2018-2024 Total, S.A +# Copyright (c) 2018-2024 TotalEnergies # Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University # Copyright (c) 2023-2024 Chevron # Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/unitTests/constitutiveTests/CMakeLists.txt b/src/coreComponents/unitTests/constitutiveTests/CMakeLists.txt index 523c6c89500..f59c739a956 100644 --- a/src/coreComponents/unitTests/constitutiveTests/CMakeLists.txt +++ b/src/coreComponents/unitTests/constitutiveTests/CMakeLists.txt @@ -28,6 +28,7 @@ set( gtest_pvt_xmls testPVT_CO2Brine.xml testPVT_CO2BrineTables.xml testPVT_PhaseComposition.xml + testPVT_ThreePhaseCompositional.xml ) set( gtest_reactivefluid_xmls diff --git a/src/coreComponents/unitTests/constitutiveTests/MultiFluidTest.hpp b/src/coreComponents/unitTests/constitutiveTests/MultiFluidTest.hpp index cb3902d198d..5aa748e071b 100644 --- a/src/coreComponents/unitTests/constitutiveTests/MultiFluidTest.hpp +++ b/src/coreComponents/unitTests/constitutiveTests/MultiFluidTest.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/unitTests/constitutiveTests/constitutiveTestHelpers.hpp b/src/coreComponents/unitTests/constitutiveTests/constitutiveTestHelpers.hpp index 14a9032a1ca..5762461edff 100644 --- a/src/coreComponents/unitTests/constitutiveTests/constitutiveTestHelpers.hpp +++ b/src/coreComponents/unitTests/constitutiveTests/constitutiveTestHelpers.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/unitTests/constitutiveTests/testCO2BrinePVTModels.cpp b/src/coreComponents/unitTests/constitutiveTests/testCO2BrinePVTModels.cpp index 20df8c70fe5..a686c917319 100644 --- a/src/coreComponents/unitTests/constitutiveTests/testCO2BrinePVTModels.cpp +++ b/src/coreComponents/unitTests/constitutiveTests/testCO2BrinePVTModels.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/unitTests/constitutiveTests/testCO2SpycherPruessModels.cpp b/src/coreComponents/unitTests/constitutiveTests/testCO2SpycherPruessModels.cpp index a8160dc51f9..24214ecc6fa 100644 --- a/src/coreComponents/unitTests/constitutiveTests/testCO2SpycherPruessModels.cpp +++ b/src/coreComponents/unitTests/constitutiveTests/testCO2SpycherPruessModels.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/unitTests/constitutiveTests/testCapillaryPressure.cpp b/src/coreComponents/unitTests/constitutiveTests/testCapillaryPressure.cpp index 5c13f68c5cf..9d8d5ac3941 100644 --- a/src/coreComponents/unitTests/constitutiveTests/testCapillaryPressure.cpp +++ b/src/coreComponents/unitTests/constitutiveTests/testCapillaryPressure.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/unitTests/constitutiveTests/testDamage.cpp b/src/coreComponents/unitTests/constitutiveTests/testDamage.cpp index 29e6f6992f1..28f85106fc5 100644 --- a/src/coreComponents/unitTests/constitutiveTests/testDamage.cpp +++ b/src/coreComponents/unitTests/constitutiveTests/testDamage.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/unitTests/constitutiveTests/testMultiFluidCO2Brine.cpp b/src/coreComponents/unitTests/constitutiveTests/testMultiFluidCO2Brine.cpp index 80f88fb53f4..a55618c19d2 100644 --- a/src/coreComponents/unitTests/constitutiveTests/testMultiFluidCO2Brine.cpp +++ b/src/coreComponents/unitTests/constitutiveTests/testMultiFluidCO2Brine.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/unitTests/constitutiveTests/testMultiFluidCompositionalMultiphase.cpp b/src/coreComponents/unitTests/constitutiveTests/testMultiFluidCompositionalMultiphase.cpp index 3aa633cd190..ffd9658a0b6 100644 --- a/src/coreComponents/unitTests/constitutiveTests/testMultiFluidCompositionalMultiphase.cpp +++ b/src/coreComponents/unitTests/constitutiveTests/testMultiFluidCompositionalMultiphase.cpp @@ -2,10 +2,11 @@ * ------------------------------------------------------------------------------------------------------------ * SPDX-License-Identifier: LGPL-2.1-only * - * Copyright (c) 2018-2020 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2020 The Board of Trustees of the Leland Stanford Junior University - * Copyright (c) 2018-2020 TotalEnergies - * Copyright (c) 2019- GEOSX Contributors + * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC + * Copyright (c) 2018-2024 TotalEnergies + * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University + * Copyright (c) 2023-2024 Chevron + * Copyright (c) 2019- GEOS/GEOSX Contributors * All rights reserved * * See top level LICENSE, COPYRIGHT, CONTRIBUTORS, NOTICE, and ACKNOWLEDGEMENTS files for details. diff --git a/src/coreComponents/unitTests/constitutiveTests/testMultiFluidCompositionalMultiphasePVTPackage.cpp b/src/coreComponents/unitTests/constitutiveTests/testMultiFluidCompositionalMultiphasePVTPackage.cpp index 367c8bbd724..150da341455 100644 --- a/src/coreComponents/unitTests/constitutiveTests/testMultiFluidCompositionalMultiphasePVTPackage.cpp +++ b/src/coreComponents/unitTests/constitutiveTests/testMultiFluidCompositionalMultiphasePVTPackage.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/unitTests/constitutiveTests/testMultiFluidDeadOil.cpp b/src/coreComponents/unitTests/constitutiveTests/testMultiFluidDeadOil.cpp index 9b4b515ac7d..58aefab3ed3 100644 --- a/src/coreComponents/unitTests/constitutiveTests/testMultiFluidDeadOil.cpp +++ b/src/coreComponents/unitTests/constitutiveTests/testMultiFluidDeadOil.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/unitTests/constitutiveTests/testMultiFluidLiveOil.cpp b/src/coreComponents/unitTests/constitutiveTests/testMultiFluidLiveOil.cpp index 659fd8b3d18..37ac3043753 100644 --- a/src/coreComponents/unitTests/constitutiveTests/testMultiFluidLiveOil.cpp +++ b/src/coreComponents/unitTests/constitutiveTests/testMultiFluidLiveOil.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/unitTests/constitutiveTests/testPVT.cpp b/src/coreComponents/unitTests/constitutiveTests/testPVT.cpp index 7c2208cdce9..205153ceda8 100644 --- a/src/coreComponents/unitTests/constitutiveTests/testPVT.cpp +++ b/src/coreComponents/unitTests/constitutiveTests/testPVT.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/unitTests/constitutiveTests/testPVT_ThreePhaseCompositional.xml b/src/coreComponents/unitTests/constitutiveTests/testPVT_ThreePhaseCompositional.xml new file mode 100644 index 00000000000..79c4892078e --- /dev/null +++ b/src/coreComponents/unitTests/constitutiveTests/testPVT_ThreePhaseCompositional.xml @@ -0,0 +1,83 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/coreComponents/unitTests/constitutiveTests/testPVT_ThreePhaseCompositional_blackOil.txt b/src/coreComponents/unitTests/constitutiveTests/testPVT_ThreePhaseCompositional_blackOil.txt new file mode 100644 index 00000000000..53e20dce320 --- /dev/null +++ b/src/coreComponents/unitTests/constitutiveTests/testPVT_ThreePhaseCompositional_blackOil.txt @@ -0,0 +1,113 @@ +# column 1 = time +# column 2 = pressure +# column 3 = temperature +# column 4 = density +# column 5 = total compressibility +# columns 6-8 = phase fractions +# columns 9-11 = phase densities +# columns 12-14 = phase mass densities +# columns 15-17 = phase viscosities +# columns 18-20 = oil phase fractions [C1, C7+, H2O] +# columns 21-23 = gas phase fractions [C1, C7+, H2O] +# columns 24-26 = water phase fractions [C1, C7+, H2O] +0.0000e+00 3.5000e+07 5.5315e+02 6.1560e+03 6.0169e-09 8.8729e-01 0.0000e+00 1.1271e-01 5.5295e+03 5.5295e+03 5.6953e+04 5.2265e+02 5.2265e+02 1.0257e+03 1.0240e-04 1.0240e-04 3.2929e-04 5.0000e-01 5.0000e-01 0.0000e+00 9.1515e-01 8.4850e-02 0.0000e+00 0.0000e+00 0.0000e+00 1.0000e+00 +2.0000e-02 3.4000e+07 5.5315e+02 6.1183e+03 6.2707e-09 8.8729e-01 0.0000e+00 1.1271e-01 5.4953e+03 5.4953e+03 5.6930e+04 5.1941e+02 5.1941e+02 1.0253e+03 1.0027e-04 1.0027e-04 3.2929e-04 5.0000e-01 5.0000e-01 0.0000e+00 9.1515e-01 8.4850e-02 0.0000e+00 0.0000e+00 0.0000e+00 1.0000e+00 +4.0000e-02 3.3000e+07 5.5315e+02 6.0792e+03 6.5439e-09 8.8729e-01 0.0000e+00 1.1271e-01 5.4598e+03 5.4598e+03 5.6906e+04 5.1606e+02 5.1606e+02 1.0249e+03 9.8135e-05 9.8135e-05 3.2929e-04 5.0000e-01 5.0000e-01 0.0000e+00 9.1515e-01 8.4850e-02 0.0000e+00 0.0000e+00 0.0000e+00 1.0000e+00 +6.0000e-02 3.2000e+07 5.5315e+02 6.0387e+03 6.8385e-09 8.8729e-01 0.0000e+00 1.1271e-01 5.4230e+03 5.4230e+03 5.6882e+04 5.1258e+02 5.1258e+02 1.0245e+03 9.6007e-05 9.6007e-05 3.2929e-04 5.0000e-01 5.0000e-01 0.0000e+00 9.1515e-01 8.4850e-02 0.0000e+00 0.0000e+00 0.0000e+00 1.0000e+00 +8.0000e-02 3.1000e+07 5.5315e+02 5.9966e+03 7.1573e-09 8.8729e-01 0.0000e+00 1.1271e-01 5.3847e+03 5.3847e+03 5.6859e+04 5.0896e+02 5.0896e+02 1.0240e+03 9.3883e-05 9.3883e-05 3.2929e-04 5.0000e-01 5.0000e-01 0.0000e+00 9.1515e-01 8.4850e-02 0.0000e+00 0.0000e+00 0.0000e+00 1.0000e+00 +1.0000e-01 3.0000e+07 5.5315e+02 5.9528e+03 7.5032e-09 8.8729e-01 0.0000e+00 1.1271e-01 5.3450e+03 5.3450e+03 5.6835e+04 5.0521e+02 5.0521e+02 1.0236e+03 9.1761e-05 9.1761e-05 3.2929e-04 5.0000e-01 5.0000e-01 0.0000e+00 9.1515e-01 8.4850e-02 0.0000e+00 0.0000e+00 0.0000e+00 1.0000e+00 +1.2000e-01 2.9000e+07 5.5315e+02 5.9072e+03 7.8796e-09 8.8729e-01 0.0000e+00 1.1271e-01 5.3036e+03 5.3036e+03 5.6812e+04 5.0129e+02 5.0129e+02 1.0232e+03 8.9642e-05 8.9642e-05 3.2929e-04 5.0000e-01 5.0000e-01 0.0000e+00 9.1515e-01 8.4850e-02 0.0000e+00 0.0000e+00 0.0000e+00 1.0000e+00 +1.4000e-01 2.8000e+07 5.5315e+02 5.8597e+03 8.2906e-09 8.8729e-01 0.0000e+00 1.1271e-01 5.2604e+03 5.2604e+03 5.6788e+04 4.9721e+02 4.9721e+02 1.0228e+03 8.7525e-05 8.7525e-05 3.2929e-04 5.0000e-01 5.0000e-01 0.0000e+00 9.1515e-01 8.4850e-02 0.0000e+00 0.0000e+00 0.0000e+00 1.0000e+00 +1.6000e-01 2.7000e+07 5.5315e+02 5.8100e+03 8.7412e-09 8.8729e-01 0.0000e+00 1.1271e-01 5.2153e+03 5.2153e+03 5.6765e+04 4.9295e+02 4.9295e+02 1.0223e+03 8.5409e-05 8.5409e-05 3.2929e-04 5.0000e-01 5.0000e-01 0.0000e+00 9.1515e-01 8.4850e-02 0.0000e+00 0.0000e+00 0.0000e+00 1.0000e+00 +1.8000e-01 2.6000e+07 5.5315e+02 5.7580e+03 9.2370e-09 8.8729e-01 0.0000e+00 1.1271e-01 5.1682e+03 5.1682e+03 5.6741e+04 4.8849e+02 4.8849e+02 1.0219e+03 8.3293e-05 8.3293e-05 3.2929e-04 5.0000e-01 5.0000e-01 0.0000e+00 9.1515e-01 8.4850e-02 0.0000e+00 0.0000e+00 0.0000e+00 1.0000e+00 +2.0000e-01 2.5000e+07 5.5315e+02 5.7036e+03 9.7851e-09 8.8729e-01 0.0000e+00 1.1271e-01 5.1187e+03 5.1187e+03 5.6717e+04 4.8382e+02 4.8382e+02 1.0215e+03 8.1175e-05 8.1175e-05 3.2929e-04 5.0000e-01 5.0000e-01 0.0000e+00 9.1515e-01 8.4850e-02 0.0000e+00 0.0000e+00 0.0000e+00 1.0000e+00 +2.2000e-01 2.4000e+07 5.5315e+02 5.6174e+03 1.7179e-08 8.8110e-01 6.1877e-03 1.1271e-01 5.0414e+03 4.9180e+03 5.6694e+04 4.8521e+02 1.3086e+02 1.0211e+03 8.1572e-05 2.1495e-05 3.2929e-04 4.8901e-01 5.1099e-01 0.0000e+00 9.3267e-01 6.7327e-02 0.0000e+00 0.0000e+00 0.0000e+00 1.0000e+00 +2.4000e-01 2.3000e+07 5.5315e+02 5.5204e+03 1.7647e-08 8.7325e-01 1.4036e-02 1.1271e-01 4.9562e+03 4.7398e+03 5.6670e+04 4.8864e+02 1.2549e+02 1.0206e+03 8.2813e-05 2.1134e-05 3.2929e-04 4.7405e-01 5.2595e-01 0.0000e+00 9.3352e-01 6.6484e-02 0.0000e+00 0.0000e+00 0.0000e+00 1.0000e+00 +2.6000e-01 2.2000e+07 5.5315e+02 5.4225e+03 1.8162e-08 8.6581e-01 2.1475e-02 1.1271e-01 4.8719e+03 4.5585e+03 5.6647e+04 4.9205e+02 1.2016e+02 1.0202e+03 8.4061e-05 2.0788e-05 3.2929e-04 4.5873e-01 5.4127e-01 0.0000e+00 9.3426e-01 6.5741e-02 0.0000e+00 0.0000e+00 0.0000e+00 1.0000e+00 +2.8000e-01 2.1000e+07 5.5315e+02 5.3234e+03 1.8732e-08 8.5874e-01 2.8551e-02 1.1271e-01 4.7885e+03 4.3743e+03 5.6623e+04 4.9543e+02 1.1486e+02 1.0198e+03 8.5316e-05 2.0456e-05 3.2929e-04 4.4303e-01 5.5697e-01 0.0000e+00 9.3490e-01 6.5103e-02 0.0000e+00 0.0000e+00 0.0000e+00 1.0000e+00 +3.0000e-01 2.0000e+07 5.5315e+02 5.2230e+03 1.9369e-08 8.5198e-01 3.5311e-02 1.1271e-01 4.7061e+03 4.1872e+03 5.6600e+04 4.9880e+02 1.0961e+02 1.0194e+03 8.6578e-05 2.0139e-05 3.2929e-04 4.2693e-01 5.7307e-01 0.0000e+00 9.3542e-01 6.4579e-02 0.0000e+00 0.0000e+00 0.0000e+00 1.0000e+00 +3.2000e-01 1.9000e+07 5.5315e+02 5.1210e+03 2.0089e-08 8.4549e-01 4.1796e-02 1.1271e-01 4.6246e+03 3.9973e+03 5.6576e+04 5.0214e+02 1.0438e+02 1.0189e+03 8.7844e-05 1.9835e-05 3.2929e-04 4.1042e-01 5.8958e-01 0.0000e+00 9.3582e-01 6.4178e-02 0.0000e+00 0.0000e+00 0.0000e+00 1.0000e+00 +3.4000e-01 1.8000e+07 5.5315e+02 5.0171e+03 2.0911e-08 8.3924e-01 4.8049e-02 1.1271e-01 4.5439e+03 3.8047e+03 5.6553e+04 5.0547e+02 9.9197e+01 1.0185e+03 8.9115e-05 1.9544e-05 3.2929e-04 3.9347e-01 6.0653e-01 0.0000e+00 9.3609e-01 6.3914e-02 0.0000e+00 0.0000e+00 0.0000e+00 1.0000e+00 +3.6000e-01 1.7000e+07 5.5315e+02 4.9110e+03 2.1861e-08 8.3318e-01 5.4111e-02 1.1271e-01 4.4641e+03 3.6096e+03 5.6530e+04 5.0878e+02 9.4045e+01 1.0181e+03 9.0389e-05 1.9265e-05 3.2929e-04 3.7608e-01 6.2392e-01 0.0000e+00 9.3620e-01 6.3802e-02 0.0000e+00 0.0000e+00 0.0000e+00 1.0000e+00 +3.8000e-01 1.6000e+07 5.5315e+02 4.8022e+03 2.2976e-08 8.2726e-01 6.0026e-02 1.1271e-01 4.3852e+03 3.4119e+03 5.6506e+04 5.1208e+02 8.8928e+01 1.0177e+03 9.1664e-05 1.8998e-05 3.2929e-04 3.5822e-01 6.4178e-01 0.0000e+00 9.3614e-01 6.3864e-02 0.0000e+00 0.0000e+00 0.0000e+00 1.0000e+00 +4.0000e-01 1.5000e+07 5.5315e+02 4.6901e+03 2.4303e-08 8.2145e-01 6.5840e-02 1.1271e-01 4.3071e+03 3.2118e+03 5.6483e+04 5.1536e+02 8.3846e+01 1.0173e+03 9.2939e-05 1.8741e-05 3.2929e-04 3.3987e-01 6.6013e-01 0.0000e+00 9.3587e-01 6.4127e-02 0.0000e+00 0.0000e+00 0.0000e+00 1.0000e+00 +4.2000e-01 1.4000e+07 5.5315e+02 4.5740e+03 2.5910e-08 8.1568e-01 7.1608e-02 1.1271e-01 4.2299e+03 3.0095e+03 5.6459e+04 5.1864e+02 7.8800e+01 1.0168e+03 9.4210e-05 1.8494e-05 3.2929e-04 3.2102e-01 6.7898e-01 0.0000e+00 9.3537e-01 6.4625e-02 0.0000e+00 0.0000e+00 0.0000e+00 1.0000e+00 +4.4000e-01 1.3000e+07 5.5315e+02 4.4527e+03 2.7893e-08 8.0990e-01 7.7391e-02 1.1271e-01 4.1535e+03 2.8050e+03 5.6436e+04 5.2190e+02 7.3789e+01 1.0164e+03 9.5475e-05 1.8255e-05 3.2929e-04 3.0163e-01 6.9837e-01 0.0000e+00 9.3459e-01 6.5406e-02 0.0000e+00 0.0000e+00 0.0000e+00 1.0000e+00 +4.6000e-01 1.2000e+07 5.5315e+02 4.3251e+03 3.0392e-08 8.0402e-01 8.3265e-02 1.1271e-01 4.0779e+03 2.5984e+03 5.6412e+04 5.2516e+02 6.8814e+01 1.0160e+03 9.6732e-05 1.8022e-05 3.2929e-04 2.8170e-01 7.1830e-01 0.0000e+00 9.3347e-01 6.6532e-02 0.0000e+00 0.0000e+00 0.0000e+00 1.0000e+00 +4.8000e-01 1.1000e+07 5.5315e+02 4.1891e+03 3.3618e-08 7.9796e-01 8.9328e-02 1.1271e-01 4.0031e+03 2.3899e+03 5.6389e+04 5.2841e+02 6.3876e+01 1.0156e+03 9.7975e-05 1.7795e-05 3.2929e-04 2.6120e-01 7.3880e-01 0.0000e+00 9.3191e-01 6.8088e-02 0.0000e+00 0.0000e+00 0.0000e+00 1.0000e+00 +5.0000e-01 1.0000e+07 5.5315e+02 4.0424e+03 3.7901e-08 7.9158e-01 9.5711e-02 1.1271e-01 3.9291e+03 2.1796e+03 5.6366e+04 5.3165e+02 5.8976e+01 1.0151e+03 9.9202e-05 1.7569e-05 3.2929e-04 2.4011e-01 7.5989e-01 0.0000e+00 9.2981e-01 7.0194e-02 0.0000e+00 0.0000e+00 0.0000e+00 1.0000e+00 +5.2000e-01 9.6040e+06 5.5315e+02 3.9806e+03 3.9996e-08 7.8892e-01 9.8365e-02 1.1271e-01 3.9000e+03 2.0959e+03 5.6356e+04 5.3293e+02 5.7046e+01 1.0150e+03 9.9682e-05 1.7479e-05 3.2929e-04 2.3159e-01 7.6841e-01 0.0000e+00 9.2878e-01 7.1215e-02 0.0000e+00 0.0000e+00 0.0000e+00 1.0000e+00 +5.4000e-01 9.2080e+06 5.5315e+02 3.9162e+03 4.2382e-08 7.8618e-01 1.0111e-01 1.1271e-01 3.8710e+03 2.0119e+03 5.6347e+04 5.3421e+02 5.5122e+01 1.0148e+03 1.0016e-04 1.7389e-05 3.2929e-04 2.2297e-01 7.7703e-01 0.0000e+00 9.2764e-01 7.2363e-02 0.0000e+00 0.0000e+00 0.0000e+00 1.0000e+00 +5.6000e-01 8.8120e+06 5.5315e+02 3.8490e+03 4.5115e-08 7.8332e-01 1.0397e-01 1.1271e-01 3.8422e+03 1.9277e+03 5.6338e+04 5.3549e+02 5.3205e+01 1.0146e+03 1.0063e-04 1.7299e-05 3.2929e-04 2.1425e-01 7.8575e-01 0.0000e+00 9.2635e-01 7.3653e-02 0.0000e+00 0.0000e+00 0.0000e+00 1.0000e+00 +5.8000e-01 8.4160e+06 5.5315e+02 3.7785e+03 4.8266e-08 7.8033e-01 1.0696e-01 1.1271e-01 3.8135e+03 1.8432e+03 5.6329e+04 5.3677e+02 5.1293e+01 1.0145e+03 1.0110e-04 1.7207e-05 3.2929e-04 2.0543e-01 7.9457e-01 0.0000e+00 9.2489e-01 7.5105e-02 0.0000e+00 0.0000e+00 0.0000e+00 1.0000e+00 +6.0000e-01 8.0200e+06 5.5315e+02 3.7044e+03 5.1924e-08 7.7719e-01 1.1010e-01 1.1271e-01 3.7849e+03 1.7585e+03 5.6319e+04 5.3805e+02 4.9388e+01 1.0143e+03 1.0156e-04 1.7113e-05 3.2929e-04 1.9650e-01 8.0350e-01 0.0000e+00 9.2326e-01 7.6743e-02 0.0000e+00 0.0000e+00 0.0000e+00 1.0000e+00 +6.2000e-01 7.6240e+06 5.5315e+02 3.6260e+03 5.6202e-08 7.7386e-01 1.1343e-01 1.1271e-01 3.7565e+03 1.6736e+03 5.6310e+04 5.3933e+02 4.7489e+01 1.0141e+03 1.0202e-04 1.7018e-05 3.2929e-04 1.8748e-01 8.1252e-01 0.0000e+00 9.2141e-01 7.8594e-02 0.0000e+00 0.0000e+00 0.0000e+00 1.0000e+00 +6.4000e-01 7.2280e+06 5.5315e+02 3.5428e+03 6.1247e-08 7.7031e-01 1.1698e-01 1.1271e-01 3.7281e+03 1.5884e+03 5.6301e+04 5.4061e+02 4.5597e+01 1.0140e+03 1.0247e-04 1.6920e-05 3.2929e-04 1.7834e-01 8.2166e-01 0.0000e+00 9.1931e-01 8.0692e-02 0.0000e+00 0.0000e+00 0.0000e+00 1.0000e+00 +6.6000e-01 6.8320e+06 5.5315e+02 3.4539e+03 6.7247e-08 7.6650e-01 1.2079e-01 1.1271e-01 3.6999e+03 1.5031e+03 5.6292e+04 5.4188e+02 4.3711e+01 1.0138e+03 1.0292e-04 1.6818e-05 3.2929e-04 1.6910e-01 8.3090e-01 0.0000e+00 9.1692e-01 8.3080e-02 0.0000e+00 0.0000e+00 0.0000e+00 1.0000e+00 +6.8000e-01 6.4360e+06 5.5315e+02 3.3585e+03 7.4453e-08 7.6236e-01 1.2493e-01 1.1271e-01 3.6718e+03 1.4176e+03 5.6282e+04 5.4316e+02 4.1832e+01 1.0136e+03 1.0335e-04 1.6713e-05 3.2929e-04 1.5975e-01 8.4025e-01 0.0000e+00 9.1419e-01 8.5810e-02 0.0000e+00 0.0000e+00 0.0000e+00 1.0000e+00 +7.0000e-01 6.0400e+06 5.5315e+02 3.2554e+03 8.3199e-08 7.5783e-01 1.2946e-01 1.1271e-01 3.6438e+03 1.3319e+03 5.6273e+04 5.4443e+02 3.9959e+01 1.0135e+03 1.0379e-04 1.6602e-05 3.2929e-04 1.5029e-01 8.4971e-01 0.0000e+00 9.1105e-01 8.8948e-02 0.0000e+00 0.0000e+00 0.0000e+00 1.0000e+00 +7.2000e-01 5.6440e+06 5.5315e+02 3.1435e+03 9.3938e-08 7.5281e-01 1.3448e-01 1.1271e-01 3.6160e+03 1.2460e+03 5.6264e+04 5.4570e+02 3.8093e+01 1.0133e+03 1.0421e-04 1.6485e-05 3.2929e-04 1.4071e-01 8.5929e-01 0.0000e+00 9.0742e-01 9.2579e-02 0.0000e+00 0.0000e+00 0.0000e+00 1.0000e+00 +7.4000e-01 5.2480e+06 5.5315e+02 3.0210e+03 1.0730e-07 7.4718e-01 1.4011e-01 1.1271e-01 3.5883e+03 1.1600e+03 5.6255e+04 5.4698e+02 3.6233e+01 1.0131e+03 1.0463e-04 1.6359e-05 3.2929e-04 1.3102e-01 8.6898e-01 0.0000e+00 9.0319e-01 9.6812e-02 0.0000e+00 0.0000e+00 0.0000e+00 1.0000e+00 +7.6000e-01 4.8520e+06 5.5315e+02 2.8861e+03 1.2415e-07 7.4077e-01 1.4652e-01 1.1271e-01 3.5607e+03 1.0738e+03 5.6245e+04 5.4825e+02 3.4381e+01 1.0130e+03 1.0503e-04 1.6224e-05 3.2929e-04 1.2122e-01 8.7878e-01 0.0000e+00 8.9821e-01 1.0179e-01 0.0000e+00 0.0000e+00 0.0000e+00 1.0000e+00 +7.8000e-01 4.4560e+06 5.5315e+02 2.7364e+03 1.4578e-07 7.3336e-01 1.5393e-01 1.1271e-01 3.5332e+03 9.8750e+02 5.6236e+04 5.4952e+02 3.2535e+01 1.0128e+03 1.0543e-04 1.6076e-05 3.2929e-04 1.1129e-01 8.8871e-01 0.0000e+00 8.9228e-01 1.0772e-01 0.0000e+00 0.0000e+00 0.0000e+00 1.0000e+00 +8.0000e-01 4.0600e+06 5.5315e+02 2.5691e+03 1.7403e-07 7.2461e-01 1.6268e-01 1.1271e-01 3.5058e+03 9.0104e+02 5.6227e+04 5.5079e+02 3.0696e+01 1.0126e+03 1.0582e-04 1.5911e-05 3.2929e-04 1.0125e-01 8.9875e-01 0.0000e+00 8.8514e-01 1.1486e-01 0.0000e+00 0.0000e+00 0.0000e+00 1.0000e+00 +8.2000e-01 3.6640e+06 5.5315e+02 2.3811e+03 2.1172e-07 7.1406e-01 1.7323e-01 1.1271e-01 3.4786e+03 8.1446e+02 5.6218e+04 5.5206e+02 2.8865e+01 1.0125e+03 1.0619e-04 1.5725e-05 3.2929e-04 9.1082e-02 9.0892e-01 0.0000e+00 8.7640e-01 1.2360e-01 0.0000e+00 0.0000e+00 0.0000e+00 1.0000e+00 +8.4000e-01 3.2680e+06 5.5315e+02 2.1686e+03 2.6326e-07 7.0095e-01 1.8634e-01 1.1271e-01 3.4515e+03 7.2776e+02 5.6208e+04 5.5333e+02 2.7040e+01 1.0123e+03 1.0656e-04 1.5512e-05 3.2929e-04 8.0792e-02 9.1921e-01 0.0000e+00 8.6548e-01 1.3452e-01 0.0000e+00 0.0000e+00 0.0000e+00 1.0000e+00 +8.6000e-01 2.8720e+06 5.5315e+02 1.9276e+03 3.3583e-07 6.8411e-01 2.0318e-01 1.1271e-01 3.4245e+03 6.4096e+02 5.6199e+04 5.5460e+02 2.5222e+01 1.0121e+03 1.0691e-04 1.5261e-05 3.2929e-04 7.0376e-02 9.2962e-01 0.0000e+00 8.5148e-01 1.4852e-01 0.0000e+00 0.0000e+00 0.0000e+00 1.0000e+00 +8.8000e-01 2.4760e+06 5.5315e+02 1.6549e+03 4.4172e-07 6.6146e-01 2.2583e-01 1.1271e-01 3.3976e+03 5.5407e+02 5.6190e+04 5.5587e+02 2.3412e+01 1.0120e+03 1.0725e-04 1.4958e-05 3.2929e-04 5.9832e-02 9.4017e-01 0.0000e+00 8.3298e-01 1.6702e-01 0.0000e+00 0.0000e+00 0.0000e+00 1.0000e+00 +9.0000e-01 2.0800e+06 5.5315e+02 1.3487e+03 6.0350e-07 6.2908e-01 2.5821e-01 1.1271e-01 3.3708e+03 4.6709e+02 5.6181e+04 5.5714e+02 2.1609e+01 1.0118e+03 1.0757e-04 1.4583e-05 3.2929e-04 4.9159e-02 9.5084e-01 0.0000e+00 8.0745e-01 1.9255e-01 0.0000e+00 0.0000e+00 0.0000e+00 1.0000e+00 +9.2000e-01 1.6840e+06 5.5315e+02 1.0126e+03 8.6704e-07 5.7850e-01 3.0879e-01 1.1271e-01 3.3442e+03 3.8004e+02 5.6172e+04 5.5841e+02 1.9813e+01 1.0116e+03 1.0788e-04 1.4097e-05 3.2929e-04 3.8354e-02 9.6165e-01 0.0000e+00 7.7004e-01 2.2996e-01 0.0000e+00 0.0000e+00 0.0000e+00 1.0000e+00 +9.4000e-01 1.2880e+06 5.5315e+02 6.6052e+02 1.3428e-06 4.8744e-01 3.9985e-01 1.1271e-01 3.3176e+03 2.9292e+02 5.6162e+04 5.5968e+02 1.8025e+01 1.0115e+03 1.0818e-04 1.3437e-05 3.2929e-04 2.7415e-02 9.7259e-01 0.0000e+00 7.1015e-01 2.8985e-01 0.0000e+00 0.0000e+00 0.0000e+00 1.0000e+00 +9.6000e-01 8.9200e+05 5.5315e+02 3.2534e+02 2.3985e-06 2.7229e-01 6.1500e-01 1.1271e-01 3.2912e+03 2.0575e+02 5.6153e+04 5.6094e+02 1.6244e+01 1.0113e+03 1.0845e-04 1.2477e-05 3.2929e-04 1.6340e-02 9.8366e-01 0.0000e+00 5.9920e-01 4.0080e-01 0.0000e+00 0.0000e+00 0.0000e+00 1.0000e+00 +9.8000e-01 4.9600e+05 5.5315e+02 1.2779e+02 2.1211e-06 8.8729e-01 0.0000e+00 1.1271e-01 1.1342e+02 1.1342e+02 5.6144e+04 1.0720e+01 1.0720e+01 1.0112e+03 1.1716e-05 1.1716e-05 3.2929e-04 5.0000e-01 5.0000e-01 0.0000e+00 9.1515e-01 8.4850e-02 0.0000e+00 0.0000e+00 0.0000e+00 1.0000e+00 +1.0000e+00 1.0000e+05 5.5315e+02 2.4746e+01 1.0099e-05 8.8729e-01 0.0000e+00 1.1271e-01 2.1958e+01 2.1958e+01 5.6135e+04 2.0755e+00 2.0755e+00 1.0110e+03 1.1560e-05 1.1560e-05 3.2929e-04 5.0000e-01 5.0000e-01 0.0000e+00 9.1515e-01 8.4850e-02 0.0000e+00 0.0000e+00 0.0000e+00 1.0000e+00 +1.0200e+00 4.9600e+05 5.8315e+02 1.2012e+02 2.1009e-06 8.8729e-01 0.0000e+00 1.1271e-01 1.0660e+02 1.0660e+02 5.6144e+04 1.0076e+01 1.0076e+01 1.0112e+03 1.2221e-05 1.2221e-05 3.2929e-04 5.0000e-01 5.0000e-01 0.0000e+00 9.1515e-01 8.4850e-02 0.0000e+00 0.0000e+00 0.0000e+00 1.0000e+00 +1.0400e+00 8.9200e+05 5.8315e+02 2.2354e+02 1.2093e-06 8.8729e-01 0.0000e+00 1.1271e-01 1.9843e+02 1.9843e+02 5.6153e+04 1.8756e+01 1.8756e+01 1.0113e+03 1.2405e-05 1.2405e-05 3.2929e-04 5.0000e-01 5.0000e-01 0.0000e+00 9.1515e-01 8.4850e-02 0.0000e+00 0.0000e+00 0.0000e+00 1.0000e+00 +1.0600e+00 1.2880e+06 5.8315e+02 3.4774e+02 1.7667e-06 4.3627e-02 8.4366e-01 1.1271e-01 3.0621e+03 2.9504e+02 5.6162e+04 5.1804e+02 2.7265e+01 1.0115e+03 8.2939e-05 1.2695e-05 3.2929e-04 2.4366e-02 9.7563e-01 0.0000e+00 5.1344e-01 4.8656e-01 0.0000e+00 0.0000e+00 0.0000e+00 1.0000e+00 +1.0800e+00 1.6840e+06 5.8315e+02 6.0704e+02 1.1265e-06 3.0186e-01 5.8543e-01 1.1271e-01 3.0890e+03 3.7828e+02 5.6172e+04 5.1649e+02 2.9209e+01 1.0116e+03 8.2756e-05 1.3409e-05 3.2929e-04 3.6932e-02 9.6307e-01 0.0000e+00 6.1026e-01 3.8974e-01 0.0000e+00 0.0000e+00 0.0000e+00 1.0000e+00 +1.1000e+00 2.0800e+06 5.8315e+02 8.8181e+02 7.8965e-07 4.2838e-01 4.5891e-01 1.1271e-01 3.1161e+03 4.6143e+02 5.6181e+04 5.1495e+02 3.1163e+01 1.0118e+03 8.2556e-05 1.3965e-05 3.2929e-04 4.9339e-02 9.5066e-01 0.0000e+00 6.7192e-01 3.2808e-01 0.0000e+00 0.0000e+00 0.0000e+00 1.0000e+00 +1.1200e+00 2.4760e+06 5.8315e+02 1.1539e+03 5.8364e-07 5.0379e-01 3.8350e-01 1.1271e-01 3.1432e+03 5.4447e+02 5.6190e+04 5.1339e+02 3.3128e+01 1.0120e+03 8.2339e-05 1.4414e-05 3.2929e-04 6.1589e-02 9.3841e-01 0.0000e+00 7.1454e-01 2.8546e-01 0.0000e+00 0.0000e+00 0.0000e+00 1.0000e+00 +1.1400e+00 2.8720e+06 5.8315e+02 1.4127e+03 4.4720e-07 5.5409e-01 3.3320e-01 1.1271e-01 3.1706e+03 6.2740e+02 5.6199e+04 5.1184e+02 3.5105e+01 1.0121e+03 8.2106e-05 1.4788e-05 3.2929e-04 7.3685e-02 9.2632e-01 0.0000e+00 7.4571e-01 2.5429e-01 0.0000e+00 0.0000e+00 0.0000e+00 1.0000e+00 +1.1600e+00 3.2680e+06 5.8315e+02 1.6532e+03 3.5221e-07 5.9019e-01 2.9710e-01 1.1271e-01 3.1980e+03 7.1021e+02 5.6208e+04 5.1028e+02 3.7093e+01 1.0123e+03 8.1860e-05 1.5107e-05 3.2929e-04 8.5630e-02 9.1437e-01 0.0000e+00 7.6944e-01 2.3056e-01 0.0000e+00 0.0000e+00 0.0000e+00 1.0000e+00 +1.1800e+00 3.6640e+06 5.8315e+02 1.8738e+03 2.8372e-07 6.1751e-01 2.6978e-01 1.1271e-01 3.2257e+03 7.9289e+02 5.6218e+04 5.0871e+02 3.9092e+01 1.0125e+03 8.1599e-05 1.5383e-05 3.2929e-04 9.7426e-02 9.0257e-01 0.0000e+00 7.8808e-01 2.1192e-01 0.0000e+00 0.0000e+00 0.0000e+00 1.0000e+00 +1.2000e+00 4.0600e+06 5.8315e+02 2.0746e+03 2.3298e-07 6.3902e-01 2.4827e-01 1.1271e-01 3.2534e+03 8.7543e+02 5.6227e+04 5.0714e+02 4.1103e+01 1.0126e+03 8.1325e-05 1.5628e-05 3.2929e-04 1.0908e-01 8.9092e-01 0.0000e+00 8.0306e-01 1.9694e-01 0.0000e+00 0.0000e+00 0.0000e+00 1.0000e+00 +1.2200e+00 4.4560e+06 5.8315e+02 2.2571e+03 1.9456e-07 6.5648e-01 2.3081e-01 1.1271e-01 3.2813e+03 9.5783e+02 5.6236e+04 5.0557e+02 4.3124e+01 1.0128e+03 8.1039e-05 1.5847e-05 3.2929e-04 1.2058e-01 8.7942e-01 0.0000e+00 8.1535e-01 1.8465e-01 0.0000e+00 0.0000e+00 0.0000e+00 1.0000e+00 +1.2400e+00 4.8520e+06 5.8315e+02 2.4230e+03 1.6492e-07 6.7102e-01 2.1627e-01 1.1271e-01 3.3094e+03 1.0401e+03 5.6245e+04 5.0399e+02 4.5158e+01 1.0130e+03 8.0742e-05 1.6047e-05 3.2929e-04 1.3195e-01 8.6805e-01 0.0000e+00 8.2557e-01 1.7443e-01 0.0000e+00 0.0000e+00 0.0000e+00 1.0000e+00 +1.2600e+00 5.2480e+06 5.8315e+02 2.5742e+03 1.4168e-07 6.8338e-01 2.0390e-01 1.1271e-01 3.3376e+03 1.1221e+03 5.6255e+04 5.0240e+02 4.7203e+01 1.0131e+03 8.0433e-05 1.6230e-05 3.2929e-04 1.4318e-01 8.5682e-01 0.0000e+00 8.3419e-01 1.6581e-01 0.0000e+00 0.0000e+00 0.0000e+00 1.0000e+00 +1.2800e+00 5.6440e+06 5.8315e+02 2.7125e+03 1.2319e-07 6.9409e-01 1.9320e-01 1.1271e-01 3.3660e+03 1.2040e+03 5.6264e+04 5.0081e+02 4.9259e+01 1.0133e+03 8.0115e-05 1.6401e-05 3.2929e-04 1.5427e-01 8.4573e-01 0.0000e+00 8.4154e-01 1.5846e-01 0.0000e+00 0.0000e+00 0.0000e+00 1.0000e+00 +1.3000e+00 6.0400e+06 5.8315e+02 2.8394e+03 1.0830e-07 7.0351e-01 1.8378e-01 1.1271e-01 3.3945e+03 1.2857e+03 5.6273e+04 4.9921e+02 5.1327e+01 1.0135e+03 7.9786e-05 1.6561e-05 3.2929e-04 1.6523e-01 8.3477e-01 0.0000e+00 8.4786e-01 1.5214e-01 0.0000e+00 0.0000e+00 0.0000e+00 1.0000e+00 +1.3200e+00 6.4360e+06 5.8315e+02 2.9565e+03 9.6164e-08 7.1191e-01 1.7538e-01 1.1271e-01 3.4232e+03 1.3673e+03 5.6282e+04 4.9761e+02 5.3407e+01 1.0136e+03 7.9448e-05 1.6713e-05 3.2929e-04 1.7606e-01 8.2394e-01 0.0000e+00 8.5333e-01 1.4667e-01 0.0000e+00 0.0000e+00 0.0000e+00 1.0000e+00 +1.3400e+00 6.8320e+06 5.8315e+02 3.0649e+03 8.6168e-08 7.1948e-01 1.6781e-01 1.1271e-01 3.4520e+03 1.4486e+03 5.6292e+04 4.9600e+02 5.5498e+01 1.0138e+03 7.9102e-05 1.6858e-05 3.2929e-04 1.8676e-01 8.1324e-01 0.0000e+00 8.5811e-01 1.4189e-01 0.0000e+00 0.0000e+00 0.0000e+00 1.0000e+00 +1.3600e+00 7.2280e+06 5.8315e+02 3.1660e+03 7.7854e-08 7.2640e-01 1.6089e-01 1.1271e-01 3.4809e+03 1.5297e+03 5.6301e+04 4.9439e+02 5.7601e+01 1.0140e+03 7.8748e-05 1.6997e-05 3.2929e-04 1.9733e-01 8.0267e-01 0.0000e+00 8.6229e-01 1.3771e-01 0.0000e+00 0.0000e+00 0.0000e+00 1.0000e+00 +1.3800e+00 7.6240e+06 5.8315e+02 3.2605e+03 7.0879e-08 7.3276e-01 1.5453e-01 1.1271e-01 3.5101e+03 1.6106e+03 5.6310e+04 4.9277e+02 5.9717e+01 1.0141e+03 7.8386e-05 1.7132e-05 3.2929e-04 2.0778e-01 7.9222e-01 0.0000e+00 8.6597e-01 1.3403e-01 0.0000e+00 0.0000e+00 0.0000e+00 1.0000e+00 +1.4000e+00 8.0200e+06 5.8315e+02 3.3492e+03 6.4979e-08 7.3868e-01 1.4861e-01 1.1271e-01 3.5394e+03 1.6913e+03 5.6319e+04 4.9114e+02 6.1844e+01 1.0143e+03 7.8016e-05 1.7263e-05 3.2929e-04 2.1811e-01 7.8189e-01 0.0000e+00 8.6923e-01 1.3077e-01 0.0000e+00 0.0000e+00 0.0000e+00 1.0000e+00 +1.4200e+00 8.4160e+06 5.8315e+02 3.4330e+03 5.9949e-08 7.4422e-01 1.4307e-01 1.1271e-01 3.5688e+03 1.7717e+03 5.6329e+04 4.8951e+02 6.3983e+01 1.0145e+03 7.7640e-05 1.7391e-05 3.2929e-04 2.2831e-01 7.7169e-01 0.0000e+00 8.7211e-01 1.2789e-01 0.0000e+00 0.0000e+00 0.0000e+00 1.0000e+00 +1.4400e+00 8.8120e+06 5.8315e+02 3.5124e+03 5.5632e-08 7.4946e-01 1.3783e-01 1.1271e-01 3.5984e+03 1.8519e+03 5.6338e+04 4.8787e+02 6.6135e+01 1.0146e+03 7.7258e-05 1.7517e-05 3.2929e-04 2.3840e-01 7.6160e-01 0.0000e+00 8.7467e-01 1.2533e-01 0.0000e+00 0.0000e+00 0.0000e+00 1.0000e+00 +1.4600e+00 9.2080e+06 5.8315e+02 3.5880e+03 5.1902e-08 7.5444e-01 1.3285e-01 1.1271e-01 3.6282e+03 1.9319e+03 5.6347e+04 4.8623e+02 6.8299e+01 1.0148e+03 7.6869e-05 1.7641e-05 3.2929e-04 2.4838e-01 7.5162e-01 0.0000e+00 8.7695e-01 1.2305e-01 0.0000e+00 0.0000e+00 0.0000e+00 1.0000e+00 +1.4800e+00 9.6040e+06 5.8315e+02 3.6601e+03 4.8659e-08 7.5920e-01 1.2809e-01 1.1271e-01 3.6581e+03 2.0115e+03 5.6356e+04 4.8457e+02 7.0476e+01 1.0150e+03 7.6475e-05 1.7765e-05 3.2929e-04 2.5824e-01 7.4176e-01 0.0000e+00 8.7898e-01 1.2102e-01 0.0000e+00 0.0000e+00 0.0000e+00 1.0000e+00 +1.5000e+00 1.0000e+07 5.8315e+02 3.7291e+03 4.5824e-08 7.6378e-01 1.2351e-01 1.1271e-01 3.6882e+03 2.0910e+03 5.6366e+04 4.8291e+02 7.2665e+01 1.0151e+03 7.6075e-05 1.7888e-05 3.2929e-04 2.6799e-01 7.3201e-01 0.0000e+00 8.8078e-01 1.1922e-01 0.0000e+00 0.0000e+00 0.0000e+00 1.0000e+00 +1.5200e+00 1.1000e+07 5.8315e+02 3.8922e+03 4.0073e-08 7.7474e-01 1.1254e-01 1.1271e-01 3.7648e+03 2.2903e+03 5.6389e+04 4.7869e+02 7.8250e+01 1.0156e+03 7.5043e-05 1.8197e-05 3.2929e-04 2.9214e-01 7.0786e-01 0.0000e+00 8.8451e-01 1.1549e-01 0.0000e+00 0.0000e+00 0.0000e+00 1.0000e+00 +1.5400e+00 1.2000e+07 5.8315e+02 4.0423e+03 3.5793e-08 7.8515e-01 1.0214e-01 1.1271e-01 3.8426e+03 2.4877e+03 5.6412e+04 4.7441e+02 8.3920e+01 1.0160e+03 7.3984e-05 1.8510e-05 3.2929e-04 3.1562e-01 6.8438e-01 0.0000e+00 8.8727e-01 1.1273e-01 0.0000e+00 0.0000e+00 0.0000e+00 1.0000e+00 +1.5600e+00 1.3000e+07 5.8315e+02 4.1824e+03 3.2518e-08 7.9527e-01 9.2016e-02 1.1271e-01 3.9214e+03 2.6831e+03 5.6436e+04 4.7007e+02 8.9678e+01 1.0164e+03 7.2901e-05 1.8830e-05 3.2929e-04 3.3847e-01 6.6153e-01 0.0000e+00 8.8925e-01 1.1075e-01 0.0000e+00 0.0000e+00 0.0000e+00 1.0000e+00 +1.5800e+00 1.4000e+07 5.8315e+02 4.3149e+03 2.9952e-08 8.0535e-01 8.1944e-02 1.1271e-01 4.0014e+03 2.8763e+03 5.6459e+04 4.6568e+02 9.5527e+01 1.0168e+03 7.1797e-05 1.9161e-05 3.2929e-04 3.6073e-01 6.3927e-01 0.0000e+00 8.9060e-01 1.0940e-01 0.0000e+00 0.0000e+00 0.0000e+00 1.0000e+00 +1.6000e+00 1.5000e+07 5.8315e+02 4.4414e+03 2.7899e-08 8.1555e-01 7.1735e-02 1.1271e-01 4.0824e+03 3.0673e+03 5.6483e+04 4.6121e+02 1.0147e+02 1.0173e+03 7.0674e-05 1.9505e-05 3.2929e-04 3.8242e-01 6.1758e-01 0.0000e+00 8.9143e-01 1.0857e-01 0.0000e+00 0.0000e+00 0.0000e+00 1.0000e+00 +1.6200e+00 1.6000e+07 5.8315e+02 4.5631e+03 2.6223e-08 8.2607e-01 6.1222e-02 1.1271e-01 4.1647e+03 3.2559e+03 5.6506e+04 4.5668e+02 1.0752e+02 1.0177e+03 6.9535e-05 1.9866e-05 3.2929e-04 4.0358e-01 5.9642e-01 0.0000e+00 8.9180e-01 1.0820e-01 0.0000e+00 0.0000e+00 0.0000e+00 1.0000e+00 +1.6400e+00 1.7000e+07 5.8315e+02 4.6810e+03 2.4832e-08 8.3705e-01 5.0240e-02 1.1271e-01 4.2481e+03 3.4420e+03 5.6530e+04 4.5206e+02 1.1367e+02 1.0181e+03 6.8382e-05 2.0245e-05 3.2929e-04 4.2423e-01 5.7577e-01 0.0000e+00 8.9179e-01 1.0821e-01 0.0000e+00 0.0000e+00 0.0000e+00 1.0000e+00 +1.6600e+00 1.8000e+07 5.8315e+02 4.7958e+03 2.3660e-08 8.4867e-01 3.8624e-02 1.1271e-01 4.3328e+03 3.6254e+03 5.6553e+04 4.4735e+02 1.1994e+02 1.0185e+03 6.7214e-05 2.0645e-05 3.2929e-04 4.4441e-01 5.5559e-01 0.0000e+00 8.9142e-01 1.0858e-01 0.0000e+00 0.0000e+00 0.0000e+00 1.0000e+00 +1.6800e+00 1.9000e+07 5.8315e+02 4.9081e+03 2.2657e-08 8.6110e-01 2.6192e-02 1.1271e-01 4.4188e+03 3.8061e+03 5.6576e+04 4.4254e+02 1.2633e+02 1.0189e+03 6.6034e-05 2.1068e-05 3.2929e-04 4.6414e-01 5.3586e-01 0.0000e+00 8.9072e-01 1.0928e-01 0.0000e+00 0.0000e+00 0.0000e+00 1.0000e+00 +1.7000e+00 2.0000e+07 5.8315e+02 5.0183e+03 2.1788e-08 8.7455e-01 1.2742e-02 1.1271e-01 4.5061e+03 3.9839e+03 5.6600e+04 4.3761e+02 1.3286e+02 1.0194e+03 6.4840e-05 2.1517e-05 3.2929e-04 4.8347e-01 5.1653e-01 0.0000e+00 8.8972e-01 1.1028e-01 0.0000e+00 0.0000e+00 0.0000e+00 1.0000e+00 +1.7200e+00 2.1000e+07 5.8315e+02 5.1233e+03 1.5507e-08 8.8729e-01 0.0000e+00 1.1271e-01 4.5927e+03 4.5927e+03 5.6623e+04 4.3410e+02 4.3410e+02 1.0198e+03 6.4038e-05 6.4038e-05 3.2929e-04 5.0000e-01 5.0000e-01 0.0000e+00 9.1515e-01 8.4850e-02 0.0000e+00 0.0000e+00 0.0000e+00 1.0000e+00 +1.7400e+00 2.2000e+07 5.8315e+02 5.2003e+03 1.4379e-08 8.8729e-01 0.0000e+00 1.1271e-01 4.6625e+03 4.6625e+03 5.6647e+04 4.4069e+02 4.4069e+02 1.0202e+03 6.5972e-05 6.5972e-05 3.2929e-04 5.0000e-01 5.0000e-01 0.0000e+00 9.1515e-01 8.4850e-02 0.0000e+00 0.0000e+00 0.0000e+00 1.0000e+00 +1.7600e+00 2.3000e+07 5.8315e+02 5.2730e+03 1.3388e-08 8.8729e-01 0.0000e+00 1.1271e-01 4.7283e+03 4.7283e+03 5.6670e+04 4.4691e+02 4.4691e+02 1.0206e+03 6.7891e-05 6.7891e-05 3.2929e-04 5.0000e-01 5.0000e-01 0.0000e+00 9.1515e-01 8.4850e-02 0.0000e+00 0.0000e+00 0.0000e+00 1.0000e+00 +1.7800e+00 2.4000e+07 5.8315e+02 5.3417e+03 1.2511e-08 8.8729e-01 0.0000e+00 1.1271e-01 4.7905e+03 4.7905e+03 5.6694e+04 4.5280e+02 4.5280e+02 1.0211e+03 6.9797e-05 6.9797e-05 3.2929e-04 5.0000e-01 5.0000e-01 0.0000e+00 9.1515e-01 8.4850e-02 0.0000e+00 0.0000e+00 0.0000e+00 1.0000e+00 +1.8000e+00 2.5000e+07 5.8315e+02 5.4068e+03 1.1730e-08 8.8729e-01 0.0000e+00 1.1271e-01 4.8495e+03 4.8495e+03 5.6717e+04 4.5837e+02 4.5837e+02 1.0215e+03 7.1695e-05 7.1695e-05 3.2929e-04 5.0000e-01 5.0000e-01 0.0000e+00 9.1515e-01 8.4850e-02 0.0000e+00 0.0000e+00 0.0000e+00 1.0000e+00 +1.8200e+00 2.6000e+07 5.8315e+02 5.4686e+03 1.1031e-08 8.8729e-01 0.0000e+00 1.1271e-01 4.9055e+03 4.9055e+03 5.6741e+04 4.6367e+02 4.6367e+02 1.0219e+03 7.3587e-05 7.3587e-05 3.2929e-04 5.0000e-01 5.0000e-01 0.0000e+00 9.1515e-01 8.4850e-02 0.0000e+00 0.0000e+00 0.0000e+00 1.0000e+00 +1.8400e+00 2.7000e+07 5.8315e+02 5.5275e+03 1.0402e-08 8.8729e-01 0.0000e+00 1.1271e-01 4.9589e+03 4.9589e+03 5.6765e+04 4.6872e+02 4.6872e+02 1.0223e+03 7.5475e-05 7.5475e-05 3.2929e-04 5.0000e-01 5.0000e-01 0.0000e+00 9.1515e-01 8.4850e-02 0.0000e+00 0.0000e+00 0.0000e+00 1.0000e+00 +1.8600e+00 2.8000e+07 5.8315e+02 5.5837e+03 9.8334e-09 8.8729e-01 0.0000e+00 1.1271e-01 5.0099e+03 5.0099e+03 5.6788e+04 4.7353e+02 4.7353e+02 1.0228e+03 7.7360e-05 7.7360e-05 3.2929e-04 5.0000e-01 5.0000e-01 0.0000e+00 9.1515e-01 8.4850e-02 0.0000e+00 0.0000e+00 0.0000e+00 1.0000e+00 +1.8800e+00 2.9000e+07 5.8315e+02 5.6374e+03 9.3169e-09 8.8729e-01 0.0000e+00 1.1271e-01 5.0586e+03 5.0586e+03 5.6812e+04 4.7814e+02 4.7814e+02 1.0232e+03 7.9245e-05 7.9245e-05 3.2929e-04 5.0000e-01 5.0000e-01 0.0000e+00 9.1515e-01 8.4850e-02 0.0000e+00 0.0000e+00 0.0000e+00 1.0000e+00 +1.9000e+00 3.0000e+07 5.8315e+02 5.6888e+03 8.8460e-09 8.8729e-01 0.0000e+00 1.1271e-01 5.1052e+03 5.1052e+03 5.6835e+04 4.8254e+02 4.8254e+02 1.0236e+03 8.1131e-05 8.1131e-05 3.2929e-04 5.0000e-01 5.0000e-01 0.0000e+00 9.1515e-01 8.4850e-02 0.0000e+00 0.0000e+00 0.0000e+00 1.0000e+00 +1.9200e+00 3.1000e+07 5.8315e+02 5.7381e+03 8.4151e-09 8.8729e-01 0.0000e+00 1.1271e-01 5.1499e+03 5.1499e+03 5.6859e+04 4.8677e+02 4.8677e+02 1.0240e+03 8.3018e-05 8.3018e-05 3.2929e-04 5.0000e-01 5.0000e-01 0.0000e+00 9.1515e-01 8.4850e-02 0.0000e+00 0.0000e+00 0.0000e+00 1.0000e+00 +1.9400e+00 3.2000e+07 5.8315e+02 5.7854e+03 8.0196e-09 8.8729e-01 0.0000e+00 1.1271e-01 5.1929e+03 5.1929e+03 5.6882e+04 4.9083e+02 4.9083e+02 1.0245e+03 8.4907e-05 8.4907e-05 3.2929e-04 5.0000e-01 5.0000e-01 0.0000e+00 9.1515e-01 8.4850e-02 0.0000e+00 0.0000e+00 0.0000e+00 1.0000e+00 +1.9600e+00 3.3000e+07 5.8315e+02 5.8309e+03 7.6552e-09 8.8729e-01 0.0000e+00 1.1271e-01 5.2342e+03 5.2342e+03 5.6906e+04 4.9473e+02 4.9473e+02 1.0249e+03 8.6800e-05 8.6800e-05 3.2929e-04 5.0000e-01 5.0000e-01 0.0000e+00 9.1515e-01 8.4850e-02 0.0000e+00 0.0000e+00 0.0000e+00 1.0000e+00 +1.9800e+00 3.4000e+07 5.8315e+02 5.8747e+03 7.3187e-09 8.8729e-01 0.0000e+00 1.1271e-01 5.2739e+03 5.2739e+03 5.6930e+04 4.9849e+02 4.9849e+02 1.0253e+03 8.8696e-05 8.8696e-05 3.2929e-04 5.0000e-01 5.0000e-01 0.0000e+00 9.1515e-01 8.4850e-02 0.0000e+00 0.0000e+00 0.0000e+00 1.0000e+00 +2.0000e+00 3.5000e+07 5.8315e+02 5.9169e+03 7.0071e-09 8.8729e-01 0.0000e+00 1.1271e-01 5.3122e+03 5.3122e+03 5.6953e+04 5.0211e+02 5.0211e+02 1.0257e+03 9.0597e-05 9.0597e-05 3.2929e-04 5.0000e-01 5.0000e-01 0.0000e+00 9.1515e-01 8.4850e-02 0.0000e+00 0.0000e+00 0.0000e+00 1.0000e+00 diff --git a/src/coreComponents/unitTests/constitutiveTests/testReactiveFluid.cpp b/src/coreComponents/unitTests/constitutiveTests/testReactiveFluid.cpp index 18bac11d647..8ad1df7c3b5 100644 --- a/src/coreComponents/unitTests/constitutiveTests/testReactiveFluid.cpp +++ b/src/coreComponents/unitTests/constitutiveTests/testReactiveFluid.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/unitTests/constitutiveTests/testRelPerm.cpp b/src/coreComponents/unitTests/constitutiveTests/testRelPerm.cpp index d2526d367c2..b8aeeb671f1 100644 --- a/src/coreComponents/unitTests/constitutiveTests/testRelPerm.cpp +++ b/src/coreComponents/unitTests/constitutiveTests/testRelPerm.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/unitTests/constitutiveTests/testRelPermHysteresis.cpp b/src/coreComponents/unitTests/constitutiveTests/testRelPermHysteresis.cpp index 292957072bf..f6476d1d978 100644 --- a/src/coreComponents/unitTests/constitutiveTests/testRelPermHysteresis.cpp +++ b/src/coreComponents/unitTests/constitutiveTests/testRelPermHysteresis.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/unitTests/constitutiveTests/testTriaxial.cpp b/src/coreComponents/unitTests/constitutiveTests/testTriaxial.cpp index e208b9720aa..9dd8301388c 100644 --- a/src/coreComponents/unitTests/constitutiveTests/testTriaxial.cpp +++ b/src/coreComponents/unitTests/constitutiveTests/testTriaxial.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/unitTests/dataRepositoryTests/testGroupPath.cpp b/src/coreComponents/unitTests/dataRepositoryTests/testGroupPath.cpp index 032d6a191ab..00e05ab421a 100644 --- a/src/coreComponents/unitTests/dataRepositoryTests/testGroupPath.cpp +++ b/src/coreComponents/unitTests/dataRepositoryTests/testGroupPath.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/unitTests/dataRepositoryTests/testObjectCatalog.cpp b/src/coreComponents/unitTests/dataRepositoryTests/testObjectCatalog.cpp index e511c09a0e0..737981ea002 100644 --- a/src/coreComponents/unitTests/dataRepositoryTests/testObjectCatalog.cpp +++ b/src/coreComponents/unitTests/dataRepositoryTests/testObjectCatalog.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -17,6 +17,7 @@ // Source includes #include "dataRepository/ObjectCatalog.hpp" +#include "dataRepository/DataContext.hpp" #include "common/logger/Logger.hpp" #include "mainInterface/initialization.hpp" @@ -67,7 +68,6 @@ class Derived1 : public Base } static string catalogName() { return "derived1"; } string getCatalogName() { return catalogName(); } - }; REGISTER_CATALOG_ENTRY( Base, Derived1, int &, double const & ) //STOP_SPHINX @@ -99,14 +99,17 @@ TEST( testObjectCatalog, testRegistration ) GEOS_LOG( "EXECUTING MAIN" ); int junk = 1; double junk2 = 3.14; + dataRepository::DataFileContext const context = dataRepository::DataFileContext( "Base Test Class", __FILE__, __LINE__ ); // allocate a new Derived1 object std::unique_ptr< Base > - derived1 = Base::CatalogInterface::factory( "derived1", junk, junk2 ); + derived1 = Base::CatalogInterface::factory( "derived1", context, + junk, junk2 ); // allocate a new Derived2 object std::unique_ptr< Base > - derived2 = Base::CatalogInterface::factory( "derived2", junk, junk2 ); + derived2 = Base::CatalogInterface::factory( "derived2", context, + junk, junk2 ); EXPECT_STREQ( derived1->getCatalogName().c_str(), Derived1::catalogName().c_str() ); diff --git a/src/coreComponents/unitTests/dataRepositoryTests/testRestartBasic.cpp b/src/coreComponents/unitTests/dataRepositoryTests/testRestartBasic.cpp index e77aae20bff..e7e061384cb 100644 --- a/src/coreComponents/unitTests/dataRepositoryTests/testRestartBasic.cpp +++ b/src/coreComponents/unitTests/dataRepositoryTests/testRestartBasic.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/unitTests/dataRepositoryTests/testRestartExtended.cpp b/src/coreComponents/unitTests/dataRepositoryTests/testRestartExtended.cpp index 48d30aa4750..7acc2d9b07f 100644 --- a/src/coreComponents/unitTests/dataRepositoryTests/testRestartExtended.cpp +++ b/src/coreComponents/unitTests/dataRepositoryTests/testRestartExtended.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/unitTests/dataRepositoryTests/testWrapperHelpers.cpp b/src/coreComponents/unitTests/dataRepositoryTests/testWrapperHelpers.cpp index 2d06ad0fcca..b93b4615e8c 100644 --- a/src/coreComponents/unitTests/dataRepositoryTests/testWrapperHelpers.cpp +++ b/src/coreComponents/unitTests/dataRepositoryTests/testWrapperHelpers.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/unitTests/dataRepositoryTests/utils.hpp b/src/coreComponents/unitTests/dataRepositoryTests/utils.hpp index 79b749fa981..9757182f66d 100644 --- a/src/coreComponents/unitTests/dataRepositoryTests/utils.hpp +++ b/src/coreComponents/unitTests/dataRepositoryTests/utils.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/unitTests/fieldSpecificationTests/testAquiferBoundaryCondition.cpp b/src/coreComponents/unitTests/fieldSpecificationTests/testAquiferBoundaryCondition.cpp index 05de91b1a60..9d20070af07 100644 --- a/src/coreComponents/unitTests/fieldSpecificationTests/testAquiferBoundaryCondition.cpp +++ b/src/coreComponents/unitTests/fieldSpecificationTests/testAquiferBoundaryCondition.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -37,7 +37,7 @@ TEST( FieldSpecification, Aquifer ) AquiferBoundaryCondition & aquiferBC = dynamicCast< AquiferBoundaryCondition & >( *fieldSpecificationManager.createChild( "Aquifer", "aquiferBoundaryCondition" ) ); - // set up the aquifer as in the simulation matched against IX + // set up the aquifer auto & aquiferPorosity = aquiferBC.getReference< real64 >( AquiferBoundaryCondition::viewKeyStruct::aquiferPorosityString() ); aquiferPorosity = 2e-1; @@ -89,7 +89,7 @@ TEST( FieldSpecification, Aquifer ) areaFraction, dAquiferVolFlux_dPres ); - // observed flux value in the simulation matched against IX + // observed flux value real64 const refAquiferVolFlux = -0.2043541482797776; ASSERT_NEAR( refAquiferVolFlux, aquiferVolFlux, 1e-10 ); diff --git a/src/coreComponents/unitTests/fieldSpecificationTests/testFieldSpecificationsEnums.cpp b/src/coreComponents/unitTests/fieldSpecificationTests/testFieldSpecificationsEnums.cpp index 0a4cd2d67de..0f800b4e8aa 100644 --- a/src/coreComponents/unitTests/fieldSpecificationTests/testFieldSpecificationsEnums.cpp +++ b/src/coreComponents/unitTests/fieldSpecificationTests/testFieldSpecificationsEnums.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/unitTests/fieldSpecificationTests/testRecursiveFieldApplication.cpp b/src/coreComponents/unitTests/fieldSpecificationTests/testRecursiveFieldApplication.cpp index 12288b381e0..0e948a64332 100644 --- a/src/coreComponents/unitTests/fieldSpecificationTests/testRecursiveFieldApplication.cpp +++ b/src/coreComponents/unitTests/fieldSpecificationTests/testRecursiveFieldApplication.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/unitTests/fileIOTests/testHDFFile.cpp b/src/coreComponents/unitTests/fileIOTests/testHDFFile.cpp index dc759b01c77..ea44608f06a 100644 --- a/src/coreComponents/unitTests/fileIOTests/testHDFFile.cpp +++ b/src/coreComponents/unitTests/fileIOTests/testHDFFile.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/unitTests/fileIOTests/testHDFParallelFile.cpp b/src/coreComponents/unitTests/fileIOTests/testHDFParallelFile.cpp index 1a8e7ca4609..a447019d854 100644 --- a/src/coreComponents/unitTests/fileIOTests/testHDFParallelFile.cpp +++ b/src/coreComponents/unitTests/fileIOTests/testHDFParallelFile.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/unitTests/finiteVolumeTests/testMimeticInnerProducts.cpp b/src/coreComponents/unitTests/finiteVolumeTests/testMimeticInnerProducts.cpp index df8f7af001c..b00f24fc4e3 100644 --- a/src/coreComponents/unitTests/finiteVolumeTests/testMimeticInnerProducts.cpp +++ b/src/coreComponents/unitTests/finiteVolumeTests/testMimeticInnerProducts.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/unitTests/fluidFlowTests/testCompFlowUtils.hpp b/src/coreComponents/unitTests/fluidFlowTests/testCompFlowUtils.hpp index 791e5fe8607..d9790a2aa7b 100644 --- a/src/coreComponents/unitTests/fluidFlowTests/testCompFlowUtils.hpp +++ b/src/coreComponents/unitTests/fluidFlowTests/testCompFlowUtils.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/unitTests/fluidFlowTests/testCompMultiphaseFlow.cpp b/src/coreComponents/unitTests/fluidFlowTests/testCompMultiphaseFlow.cpp index 31f816164e1..0bb997307cc 100644 --- a/src/coreComponents/unitTests/fluidFlowTests/testCompMultiphaseFlow.cpp +++ b/src/coreComponents/unitTests/fluidFlowTests/testCompMultiphaseFlow.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/unitTests/fluidFlowTests/testCompMultiphaseFlowHybrid.cpp b/src/coreComponents/unitTests/fluidFlowTests/testCompMultiphaseFlowHybrid.cpp index 298427c367f..e4e10ede8da 100644 --- a/src/coreComponents/unitTests/fluidFlowTests/testCompMultiphaseFlowHybrid.cpp +++ b/src/coreComponents/unitTests/fluidFlowTests/testCompMultiphaseFlowHybrid.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/unitTests/fluidFlowTests/testFlowKernelHelpers.hpp b/src/coreComponents/unitTests/fluidFlowTests/testFlowKernelHelpers.hpp index cecdd689fe6..c1c1fcaf6e1 100644 --- a/src/coreComponents/unitTests/fluidFlowTests/testFlowKernelHelpers.hpp +++ b/src/coreComponents/unitTests/fluidFlowTests/testFlowKernelHelpers.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/unitTests/fluidFlowTests/testFlowStatistics.cpp b/src/coreComponents/unitTests/fluidFlowTests/testFlowStatistics.cpp index 4ac4c12786f..fc4bf169852 100644 --- a/src/coreComponents/unitTests/fluidFlowTests/testFlowStatistics.cpp +++ b/src/coreComponents/unitTests/fluidFlowTests/testFlowStatistics.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -481,10 +481,12 @@ TestSet getTestSet() + fluxNames="{*}" + logLevel="3" /> + logLevel="3" /> + fluxNames="{*}" + logLevel="1" /> + fluxNames="{*}" + logLevel="1" /> getReference< real64 >( AcousticWaveEquationSEM::viewKeyStruct::timeStepString() ); - ASSERT_TRUE( dtOut < 0.04 ); + real64 const Vp = 1500.0; + real64 const h = 100.0; + real64 const cflConstant = 1/sqrt( 3 ); + real64 const dtTheo = (cflConstant*h)/Vp; + ASSERT_TRUE( dtOut < dtTheo ); real64 time_n = time; // run for 1s (10 steps) diff --git a/src/coreComponents/unitTests/wavePropagationTests/testWavePropagationAcousticFirstOrder.cpp b/src/coreComponents/unitTests/wavePropagationTests/testWavePropagationAcousticFirstOrder.cpp index bb9a6eef28e..a161fcd24c3 100644 --- a/src/coreComponents/unitTests/wavePropagationTests/testWavePropagationAcousticFirstOrder.cpp +++ b/src/coreComponents/unitTests/wavePropagationTests/testWavePropagationAcousticFirstOrder.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/unitTests/wavePropagationTests/testWavePropagationAdjoint1.cpp b/src/coreComponents/unitTests/wavePropagationTests/testWavePropagationAdjoint1.cpp new file mode 100644 index 00000000000..fb4bcd943e3 --- /dev/null +++ b/src/coreComponents/unitTests/wavePropagationTests/testWavePropagationAdjoint1.cpp @@ -0,0 +1,404 @@ +/* + * ------------------------------------------------------------------------------------------------------------ + * SPDX-License-Identifier: LGPL-2.1-only + * + * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC + * Copyright (c) 2018-2024 TotalEnergies + * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University + * Copyright (c) 2023-2024 Chevron + * Copyright (c) 2019- GEOS/GEOSX Contributors + * All rights reserved + * + * See top level LICENSE, COPYRIGHT, CONTRIBUTORS, NOTICE, and ACKNOWLEDGEMENTS files for details. + * ------------------------------------------------------------------------------------------------------------ + */ + +// using some utility classes from the following unit test +#include "unitTests/fluidFlowTests/testCompFlowUtils.hpp" + +#include "common/DataTypes.hpp" +#include "mainInterface/initialization.hpp" +#include "mainInterface/ProblemManager.hpp" +#include "mesh/DomainPartition.hpp" +#include "mainInterface/GeosxState.hpp" +#include "physicsSolvers/PhysicsSolverManager.hpp" +#include "physicsSolvers/wavePropagation/shared/WaveSolverBase.hpp" +#include "physicsSolvers/wavePropagation/sem/acoustic/secondOrderEqn/isotropic/AcousticWaveEquationSEM.hpp" + +#include + +using namespace geos; +using namespace geos::dataRepository; +using namespace geos::testing; + +CommandLineOptions g_commandLineOptions; + +// This unit test checks the interpolation done to extract seismic traces from a wavefield. +// It computes a seismogram at a receiver co-located with the source and compares it to the surrounding receivers. +char const * xmlInput = + R"xml( + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + )xml"; + +class AcousticWaveEquationSEMTest : public ::testing::Test +{ +public: + + AcousticWaveEquationSEMTest(): + state( std::make_unique< CommandLineOptions >( g_commandLineOptions ) ) + {} + +protected: + + void SetUp() override + { + setupProblemFromXML( state.getProblemManager(), xmlInput ); + } + + static real64 constexpr time = 0.0; + static real64 constexpr dt = 5e-3; + static real64 constexpr eps = std::numeric_limits< real64 >::epsilon(); + + GeosxState state; + AcousticWaveEquationSEM * propagator; +}; + +real64 constexpr AcousticWaveEquationSEMTest::time; +real64 constexpr AcousticWaveEquationSEMTest::dt; +real64 constexpr AcousticWaveEquationSEMTest::eps; + +TEST_F( AcousticWaveEquationSEMTest, SeismoTrace ) +{ + + DomainPartition & domain = state.getProblemManager().getDomainPartition(); + propagator = &state.getProblemManager().getPhysicsSolverManager().getGroup< AcousticWaveEquationSEM >( "acousticSolver" ); + + // Check source term (sourceCoordinates and sourceValue) + array2d< real32 > rhsForward; + rhsForward.resize( 51, 1 ); + real32 * ptrTimeSourceFrequency = &propagator->getReference< real32 >( AcousticWaveEquationSEM::viewKeyStruct::timeSourceFrequencyString() ); + real32 * ptrTimeSourceDelay = &propagator->getReference< real32 >( AcousticWaveEquationSEM::viewKeyStruct::timeSourceDelayString() ); + localIndex * ptrRickerOrder = &propagator->getReference< localIndex >( AcousticWaveEquationSEM::viewKeyStruct::rickerOrderString() ); + + real64 time_n = time; + std::cout << "Begin forward:" << time_n << std::endl; + // run for 0.25s (100 steps) + for( int i=0; i<50; i++ ) + { + rhsForward[i][0]=WaveSolverUtils::evaluateRicker( time_n, *ptrTimeSourceFrequency, *ptrTimeSourceDelay, *ptrRickerOrder ); + propagator->explicitStepForward( time_n, dt, i, domain, false ); + time_n += dt; + } + // cleanup (triggers calculation of the remaining seismograms data points) + propagator->cleanup( 1.0, 50, 0, 0, domain ); + + // retrieve seismo + arrayView2d< real32 > const pReceivers = propagator->getReference< array2d< real32 > >( AcousticWaveEquationSEM::viewKeyStruct::pressureNp1AtReceiversString() ).toView(); + + // move it to CPU, if needed + pReceivers.move( hostMemorySpace, false ); + + // check number of seismos and trace length + ASSERT_EQ( pReceivers.size( 1 ), 5 ); + ASSERT_EQ( pReceivers.size( 0 ), 51 ); + + /*----------Save receiver forward----------------------*/ + array2d< real32 > uForward; + uForward.resize( 51, 1 ); + + // save receiver value forward on uForward. + for( int i = 0; i < 51; i++ ) + { + /*std::cout << "time: " << i*dt << std::endl; + std::cout << "pReceivers1 " << i << ":" << pReceivers[i][0] << std::endl; + std::cout << "pReceivers2 " << i << ":" << pReceivers[i][1] << std::endl; + std::cout << "pReceivers3 " << i << ":" << pReceivers[i][2] << std::endl; + std::cout << "pReceivers4 " << i << ":" << pReceivers[i][3] << std::endl; + std::cout << "rhsForward " << i << ":" << rhsForward[i][0] << std::endl;*/ + uForward[i][0] = pReceivers[i][0]; + pReceivers[i][0] = 0.; + pReceivers[i][1] = 0.; + pReceivers[i][2] = 0.; + pReceivers[i][3] = 0.; + } + + ASSERT_EQ( rhsForward.size( 1 ), 1 ); + ASSERT_EQ( rhsForward.size( 0 ), 51 ); + + arrayView2d< localIndex > const rNodeIds = propagator->getReference< array2d< localIndex > >( AcousticWaveEquationSEM::viewKeyStruct::receiverNodeIdsString() ).toView(); + rNodeIds.move( hostMemorySpace, false ); + localIndex sNodesIdsAfterModif=rNodeIds[0][0]; + std::cout << "ref back sNodeIds[0][0]:" << sNodesIdsAfterModif << std::endl; + + /*---------------------------------------------------*/ + + std::cout << "Begin backward:" << time_n << std::endl; + + //----------Switch source and receiver1 position for backward----------------------// + arrayView2d< real64 > const sCoord = propagator->getReference< array2d< real64 > >( AcousticWaveEquationSEM::viewKeyStruct::sourceCoordinatesString() ).toView(); + arrayView2d< real64 > const rCoord = propagator->getReference< array2d< real64 > >( AcousticWaveEquationSEM::viewKeyStruct::receiverCoordinatesString() ).toView(); + + for( int i = 0; i < 3; i++ ) + { + real64 tmp_double; + tmp_double=rCoord[0][i]; + rCoord[0][i]=sCoord[0][i]; + sCoord[0][i]=tmp_double; + } + + sCoord.registerTouch( hostMemorySpace ); + rCoord.registerTouch( hostMemorySpace ); + + std::cout << "sCoord :" << sCoord[0][0] <<" "<< sCoord[0][1] <<" "<< sCoord[0][2] << std::endl; + std::cout << "rCoord1 :" << rCoord[0][0] <<" "<< rCoord[0][1] <<" "<< rCoord[0][2] << std::endl; + std::cout << "rCoord2 :" << rCoord[1][0] <<" "<< rCoord[1][1] <<" "<< rCoord[1][2] << std::endl; + std::cout << "rCoord3 :" << rCoord[2][0] <<" "<< rCoord[2][1] <<" "<< rCoord[2][2] << std::endl; + std::cout << "rCoord4 :" << rCoord[3][0] <<" "<< rCoord[3][1] <<" "<< rCoord[3][2] << std::endl; + + //change timeSourceFrequency + std::cout << "timeSourceFrequency forward:" << *ptrTimeSourceFrequency << std::endl; + real32 newTimeFreq=2; + *ptrTimeSourceFrequency = newTimeFreq; + std::cout << "timeSourceFrequency backward:" << *ptrTimeSourceFrequency << std::endl; + + //reinit m_indexSeismoTrace + localIndex * ptrISeismo = &propagator->getReference< localIndex >( AcousticWaveEquationSEM::viewKeyStruct::indexSeismoTraceString() ); + *ptrISeismo = pReceivers.size( 0 )-1; + //reinit m_forward + localIndex * ptrForward = &propagator->getReference< localIndex >( AcousticWaveEquationSEM::viewKeyStruct::forwardString() ); + *ptrForward = 0; + + //"propagator->reinit()" not enough because state field not reinit to zero + //propagator->reinit(); + state.getProblemManager().applyInitialConditions(); + + array2d< real32 > rhsBackward; + rhsBackward.resize( 51, 1 ); + + arrayView2d< localIndex > const sNodeIds_new2 = propagator->getReference< array2d< localIndex > >( AcousticWaveEquationSEM::viewKeyStruct::sourceNodeIdsString() ).toView(); + sNodeIds_new2.move( hostMemorySpace, false ); + std::cout << "sNodeIds[0][0] second get2:" << sNodeIds_new2[0][0] << std::endl; + ASSERT_TRUE( sNodeIds_new2[0][0] == sNodesIdsAfterModif ); + + /*---------------------------------------------------*/ + // run backward solver + for( int i = 50; i > 0; i-- ) + { + rhsBackward[i][0]=WaveSolverUtils::evaluateRicker( time_n, *ptrTimeSourceFrequency, *ptrTimeSourceDelay, *ptrRickerOrder ); + propagator->explicitStepBackward( time_n, dt, i, domain, false ); + time_n -= dt; + //check source node in backward loop + arrayView2d< localIndex > const sNodeIds_loop = propagator->getReference< array2d< localIndex > >( AcousticWaveEquationSEM::viewKeyStruct::sourceNodeIdsString() ).toView(); + sNodeIds_loop.move( hostMemorySpace, false ); + ASSERT_TRUE( sNodeIds_loop[0][0] == sNodesIdsAfterModif ); + } + + // move it to CPU, if needed + pReceivers.move( hostMemorySpace, false ); + + localIndex mForward2 = propagator->getReference< localIndex >( AcousticWaveEquationSEM::viewKeyStruct::forwardString() ); + std::cout << "m_forward second get:" << mForward2 << std::endl; + ASSERT_TRUE( mForward2 == 0 ); + + arrayView2d< localIndex > const sNodeIds_new3 = propagator->getReference< array2d< localIndex > >( AcousticWaveEquationSEM::viewKeyStruct::sourceNodeIdsString() ).toView(); + sNodeIds_new3.move( hostMemorySpace, false ); + std::cout << "sNodeIds[0][0] get3:" << sNodeIds_new3[0][0] << std::endl; + ASSERT_TRUE( sNodeIds_new3[0][0] == sNodesIdsAfterModif ); + + real32 const timeSourceFrequency_new = propagator->getReference< real32 >( AcousticWaveEquationSEM::viewKeyStruct::timeSourceFrequencyString() ); + ASSERT_TRUE( std::abs( timeSourceFrequency_new - newTimeFreq ) < 1.e-8 ); + + /*std::cout << "pReceiver size(0):" << pReceivers.size(0) << std::endl; + std::cout << "pReceiver size(1):" << pReceivers.size(1) << std::endl;*/ + + + /*----------Save receiver backward----------------------*/ + array2d< real32 > qBackward; + qBackward.resize( 51, 1 ); + + real32 sum_ufb=0.; + real32 sum_qff=0.; + real32 sum_u2=0.; + real32 sum_q2=0.; + real32 sum_ff2=0.; + real32 sum_fb2=0.; + + // fill backward field at receiver. + for( int i=50; i > 0; i-- ) + { + /*std::cout << "back time: " << i*dt << std::endl; + std::cout << "back pReceivers1 " << i << ":" << pReceivers[i][0] << std::endl; + std::cout << "back pReceivers2 " << i << ":" << pReceivers[i][1] << std::endl; + std::cout << "back pReceivers3 " << i << ":" << pReceivers[i][2] << std::endl; + std::cout << "back pReceivers4 " << i << ":" << pReceivers[i][3] << std::endl; + std::cout << "back rhsBackward " << i << ":" << rhsBackward[i][0] << std::endl;*/ + qBackward[i][0] = pReceivers[i][0]; + } + + //check transitivity with sum + for( int i=0; i<51; i++ ) + { + sum_ufb += uForward[i][0]*rhsBackward[i][0]; + sum_qff += qBackward[i][0]*rhsForward[i][0]; + + sum_u2 += uForward[i][0]*uForward[i][0]; + sum_q2 += qBackward[i][0]*qBackward[i][0]; + sum_ff2 += rhsForward[i][0]*rhsForward[i][0]; + sum_fb2 += rhsBackward[i][0]*rhsBackward[i][0]; + /*std::cout << "sum evol sum_ufb:" << sum_ufb << " / sum_qff:" << sum_qff << std::endl; + std::cout << "uForward:" << uForward[i][0] << " / qBackward:" << qBackward[i][0] << std::endl; + std::cout << "ufb:" << uForward[i][0]*rhsBackward[i][0] << " / qff:" << qBackward[i][0]*rhsForward[i][0] << std::endl;*/ + } + + // check scalar products and are non null + ASSERT_TRUE( sum_ufb > 1.e-8 ); + ASSERT_TRUE( sum_qff > 1.e-8 ); + + // check || - ||/max(||f||.||q||,||f'||.||u||) < 10^1or2 x epsilon_machine with f rhs direct and f' rhs backward + std::cout << ": " << sum_ufb << " / : " << sum_qff << std::endl; + std::cout << "|| - ||=" << std::abs( sum_ufb-sum_qff ) << " / ||f||.||q||=" << std::sqrt( sum_q2*sum_ff2 ); + std::cout << " / ||f'||.||u||=" << std::sqrt( sum_fb2*sum_u2 ) << " / ||f||.||f'||=" << std::sqrt( sum_ff2*sum_fb2 ) << std::endl; + real32 diffToCheck; + diffToCheck=std::abs( sum_ufb-sum_qff ) / std::max( std::sqrt( sum_fb2*sum_u2 ), std::sqrt( sum_q2*sum_ff2 )); + std::cout << " Diff to compare with 2.e-4: " << diffToCheck << std::endl; + ASSERT_TRUE( diffToCheck < 2.e-4 ); +} + +int main( int argc, char * * argv ) +{ + ::testing::InitGoogleTest( &argc, argv ); + g_commandLineOptions = *geos::basicSetup( argc, argv ); + int const result = RUN_ALL_TESTS(); + geos::basicCleanup(); + return result; +} diff --git a/src/coreComponents/unitTests/wavePropagationTests/testWavePropagationAttenuation.cpp b/src/coreComponents/unitTests/wavePropagationTests/testWavePropagationAttenuation.cpp index fed816e5022..8f6e2ccbc57 100644 --- a/src/coreComponents/unitTests/wavePropagationTests/testWavePropagationAttenuation.cpp +++ b/src/coreComponents/unitTests/wavePropagationTests/testWavePropagationAttenuation.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/unitTests/wavePropagationTests/testWavePropagationDAS.cpp b/src/coreComponents/unitTests/wavePropagationTests/testWavePropagationDAS.cpp index 4446ac3a945..e63c563095d 100644 --- a/src/coreComponents/unitTests/wavePropagationTests/testWavePropagationDAS.cpp +++ b/src/coreComponents/unitTests/wavePropagationTests/testWavePropagationDAS.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors @@ -188,7 +188,7 @@ TEST_F( ElasticWaveEquationSEMTest, SeismoTrace ) //Assert on time-step computed with the automatci time-step routine real64 const dtOut = propagator->getReference< real64 >( ElasticWaveEquationSEM::viewKeyStruct::timeStepString() ); - ASSERT_TRUE( dtOut < 0.04 ); + ASSERT_TRUE( dtOut < 0.05 ); // retrieve seismo diff --git a/src/coreComponents/unitTests/wavePropagationTests/testWavePropagationElasticFirstOrder.cpp b/src/coreComponents/unitTests/wavePropagationTests/testWavePropagationElasticFirstOrder.cpp index 10fa8cae06f..294cf5eafce 100644 --- a/src/coreComponents/unitTests/wavePropagationTests/testWavePropagationElasticFirstOrder.cpp +++ b/src/coreComponents/unitTests/wavePropagationTests/testWavePropagationElasticFirstOrder.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/unitTests/wavePropagationTests/testWavePropagationElasticVTI.cpp b/src/coreComponents/unitTests/wavePropagationTests/testWavePropagationElasticVTI.cpp index 136e7ab17fa..85ee6da6dcd 100644 --- a/src/coreComponents/unitTests/wavePropagationTests/testWavePropagationElasticVTI.cpp +++ b/src/coreComponents/unitTests/wavePropagationTests/testWavePropagationElasticVTI.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/unitTests/wavePropagationTests/testWavePropagationQ2.cpp b/src/coreComponents/unitTests/wavePropagationTests/testWavePropagationQ2.cpp index ad2e70b9b5c..bbb0352d6f1 100644 --- a/src/coreComponents/unitTests/wavePropagationTests/testWavePropagationQ2.cpp +++ b/src/coreComponents/unitTests/wavePropagationTests/testWavePropagationQ2.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/unitTests/wellsTests/testIsothermalReservoirCompositionalMultiphaseMSWells.cpp b/src/coreComponents/unitTests/wellsTests/testIsothermalReservoirCompositionalMultiphaseMSWells.cpp index a84c14960a7..d329810880d 100644 --- a/src/coreComponents/unitTests/wellsTests/testIsothermalReservoirCompositionalMultiphaseMSWells.cpp +++ b/src/coreComponents/unitTests/wellsTests/testIsothermalReservoirCompositionalMultiphaseMSWells.cpp @@ -2,10 +2,11 @@ * ------------------------------------------------------------------------------------------------------------ * SPDX-License-Identifier: LGPL-2.1-only * - * Copyright (c) 2018-2020 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2020 The Board of Trustees of the Leland Stanford Junior University - * Copyright (c) 2018-2020 TotalEnergies - * Copyright (c) 2019- GEOSX Contributors + * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC + * Copyright (c) 2018-2024 TotalEnergies + * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University + * Copyright (c) 2023-2024 Chevron + * Copyright (c) 2019- GEOS/GEOSX Contributors * All rights reserved * * See top level LICENSE, COPYRIGHT, CONTRIBUTORS, NOTICE, and ACKNOWLEDGEMENTS files for details. diff --git a/src/coreComponents/unitTests/wellsTests/testIsothermalReservoirCompositionalMultiphaseSSWells.cpp b/src/coreComponents/unitTests/wellsTests/testIsothermalReservoirCompositionalMultiphaseSSWells.cpp index 59bf3765590..35551790c50 100644 --- a/src/coreComponents/unitTests/wellsTests/testIsothermalReservoirCompositionalMultiphaseSSWells.cpp +++ b/src/coreComponents/unitTests/wellsTests/testIsothermalReservoirCompositionalMultiphaseSSWells.cpp @@ -2,10 +2,11 @@ * ------------------------------------------------------------------------------------------------------------ * SPDX-License-Identifier: LGPL-2.1-only * - * Copyright (c) 2018-2020 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2020 The Board of Trustees of the Leland Stanford Junior University - * Copyright (c) 2018-2020 TotalEnergies - * Copyright (c) 2019- GEOSX Contributors + * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC + * Copyright (c) 2018-2024 TotalEnergies + * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University + * Copyright (c) 2023-2024 Chevron + * Copyright (c) 2019- GEOS/GEOSX Contributors * All rights reserved * * See top level LICENSE, COPYRIGHT, CONTRIBUTORS, NOTICE, and ACKNOWLEDGEMENTS files for details. diff --git a/src/coreComponents/unitTests/wellsTests/testReservoirCompositionalMultiphaseMSWells.cpp b/src/coreComponents/unitTests/wellsTests/testReservoirCompositionalMultiphaseMSWells.cpp index bc18b9af46d..e16b651723b 100644 --- a/src/coreComponents/unitTests/wellsTests/testReservoirCompositionalMultiphaseMSWells.cpp +++ b/src/coreComponents/unitTests/wellsTests/testReservoirCompositionalMultiphaseMSWells.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/unitTests/wellsTests/testReservoirSinglePhaseMSWells.cpp b/src/coreComponents/unitTests/wellsTests/testReservoirSinglePhaseMSWells.cpp index 7441e826c27..948dbc5017f 100644 --- a/src/coreComponents/unitTests/wellsTests/testReservoirSinglePhaseMSWells.cpp +++ b/src/coreComponents/unitTests/wellsTests/testReservoirSinglePhaseMSWells.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/unitTests/wellsTests/testThermalReservoirCompositionalMultiphaseMSWells.cpp b/src/coreComponents/unitTests/wellsTests/testThermalReservoirCompositionalMultiphaseMSWells.cpp index e87c1c823e5..c28abf070bd 100644 --- a/src/coreComponents/unitTests/wellsTests/testThermalReservoirCompositionalMultiphaseMSWells.cpp +++ b/src/coreComponents/unitTests/wellsTests/testThermalReservoirCompositionalMultiphaseMSWells.cpp @@ -2,10 +2,11 @@ * ------------------------------------------------------------------------------------------------------------ * SPDX-License-Identifier: LGPL-2.1-only * - * Copyright (c) 2018-2020 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2020 The Board of Trustees of the Leland Stanford Junior University - * Copyright (c) 2018-2020 TotalEnergies - * Copyright (c) 2019- GEOSX Contributors + * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC + * Copyright (c) 2018-2024 TotalEnergies + * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University + * Copyright (c) 2023-2024 Chevron + * Copyright (c) 2019- GEOS/GEOSX Contributors * All rights reserved * * See top level LICENSE, COPYRIGHT, CONTRIBUTORS, NOTICE, and ACKNOWLEDGEMENTS files for details. diff --git a/src/coreComponents/unitTests/wellsTests/testThermalReservoirCompositionalMultiphaseSSWells.cpp b/src/coreComponents/unitTests/wellsTests/testThermalReservoirCompositionalMultiphaseSSWells.cpp index 11d96b731fd..3c26e4d9f68 100644 --- a/src/coreComponents/unitTests/wellsTests/testThermalReservoirCompositionalMultiphaseSSWells.cpp +++ b/src/coreComponents/unitTests/wellsTests/testThermalReservoirCompositionalMultiphaseSSWells.cpp @@ -2,10 +2,11 @@ * ------------------------------------------------------------------------------------------------------------ * SPDX-License-Identifier: LGPL-2.1-only * - * Copyright (c) 2018-2020 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2020 The Board of Trustees of the Leland Stanford Junior University - * Copyright (c) 2018-2020 TotalEnergies - * Copyright (c) 2019- GEOSX Contributors + * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC + * Copyright (c) 2018-2024 TotalEnergies + * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University + * Copyright (c) 2023-2024 Chevron + * Copyright (c) 2019- GEOS/GEOSX Contributors * All rights reserved * * See top level LICENSE, COPYRIGHT, CONTRIBUTORS, NOTICE, and ACKNOWLEDGEMENTS files for details. diff --git a/src/coreComponents/unitTests/wellsTests/testWellEnums.cpp b/src/coreComponents/unitTests/wellsTests/testWellEnums.cpp index 192f3e50f71..27b318e4511 100644 --- a/src/coreComponents/unitTests/wellsTests/testWellEnums.cpp +++ b/src/coreComponents/unitTests/wellsTests/testWellEnums.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/unitTests/xmlTests/testXML.cpp b/src/coreComponents/unitTests/xmlTests/testXML.cpp index 40fa4f64f9b..0f2e4c90d67 100644 --- a/src/coreComponents/unitTests/xmlTests/testXML.cpp +++ b/src/coreComponents/unitTests/xmlTests/testXML.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/coreComponents/unitTests/xmlTests/testXMLFile.cpp b/src/coreComponents/unitTests/xmlTests/testXMLFile.cpp index 8d2231cc216..274a5d52e9b 100644 --- a/src/coreComponents/unitTests/xmlTests/testXMLFile.cpp +++ b/src/coreComponents/unitTests/xmlTests/testXMLFile.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/docs/sphinx/Publications.rst b/src/docs/sphinx/Publications.rst index 57df228cddb..46c04de5813 100644 --- a/src/docs/sphinx/Publications.rst +++ b/src/docs/sphinx/Publications.rst @@ -2,7 +2,7 @@ Publications ############################################################################### -Last updated 26-August-2024 +Last updated 16-December-2024 Preprints and Early-Views ========================= @@ -24,6 +24,11 @@ Preprints and Early-Views | Computer Methods in Applied Mechanics and Engineering | `doi:10.1016/j.cma.2024.117008 `_ + * - | **Pressure stability in explicitly coupled simulations of poromechanics with application to CO2 sequestration** + | RM Aronson, P Tomin, N Castelletto, FP Hamon, JA White, HA Tchelepi + | Computer Methods in Applied Mechanics and Engineering + | `doi:10.1016/j.cma.2024.117633 `_ + * - | **Managing reservoir dynamics when converting natural gas fields to underground hydrogen storage** | JT Camargo, JA White, FP Hamon, V Fakeye, TA Buscheck, N Huerta | International Journal of Hydrogen Energy diff --git a/src/docs/sphinx/developerGuide/Contributing/IntegratedTests.rst b/src/docs/sphinx/developerGuide/Contributing/IntegratedTests.rst index 2f712ee5506..4841a4fab43 100644 --- a/src/docs/sphinx/developerGuide/Contributing/IntegratedTests.rst +++ b/src/docs/sphinx/developerGuide/Contributing/IntegratedTests.rst @@ -121,7 +121,7 @@ After building GEOS, the integrated tests can be triggered in the GEOS build dir .. note:: - The `make_ats_environment` and `ats_run` steps may require internet access to collect python packages and baseline files. + The `make ats_environment` and `make ats_run` steps may require internet access to collect python packages and baseline files. .. note:: diff --git a/src/externalComponents/newComponentTemplate/src/NewComponent.cpp b/src/externalComponents/newComponentTemplate/src/NewComponent.cpp index 2ce2383e178..a09a49ce425 100644 --- a/src/externalComponents/newComponentTemplate/src/NewComponent.cpp +++ b/src/externalComponents/newComponentTemplate/src/NewComponent.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/externalComponents/newComponentTemplate/src/NewComponent.hpp b/src/externalComponents/newComponentTemplate/src/NewComponent.hpp index 2dbfa595d0c..9b8d0424f49 100644 --- a/src/externalComponents/newComponentTemplate/src/NewComponent.hpp +++ b/src/externalComponents/newComponentTemplate/src/NewComponent.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/externalComponents/newComponentTemplate/tests/testNewComponent.cpp b/src/externalComponents/newComponentTemplate/tests/testNewComponent.cpp index 9a9a521007c..444e3839226 100644 --- a/src/externalComponents/newComponentTemplate/tests/testNewComponent.cpp +++ b/src/externalComponents/newComponentTemplate/tests/testNewComponent.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/main/main.cpp b/src/main/main.cpp index 3904111aa1c..4673f2e228a 100644 --- a/src/main/main.cpp +++ b/src/main/main.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/pygeosx/pygeosx.cpp b/src/pygeosx/pygeosx.cpp index 75879623f5c..3f3394307f3 100644 --- a/src/pygeosx/pygeosx.cpp +++ b/src/pygeosx/pygeosx.cpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors diff --git a/src/pygeosx/pygeosx.hpp b/src/pygeosx/pygeosx.hpp index 0e54130019a..087bbaa5529 100644 --- a/src/pygeosx/pygeosx.hpp +++ b/src/pygeosx/pygeosx.hpp @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-2.1-only * * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC - * Copyright (c) 2018-2024 Total, S.A + * Copyright (c) 2018-2024 TotalEnergies * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University * Copyright (c) 2023-2024 Chevron * Copyright (c) 2019- GEOS/GEOSX Contributors