From 7769e989f5843c1abd82840f13a4f8597ad962f8 Mon Sep 17 00:00:00 2001 From: "njzjz-bot (driven by OpenClaw (model: custom-chat-jinzhezeng-group/gpt-5.4))[bot]" <48687836+njzjz-bot@users.noreply.github.com> Date: Sun, 5 Apr 2026 14:47:36 +0000 Subject: [PATCH 1/4] build(cmake): remove in-tree GROMACS patch integration Remove the obsolete source/gmx tree, drop the related CMake wiring, and replace the old GROMACS documentation with deprecation notices that point users to LAMMPS or the third-party implementation linked from issue #5360. Also remove the bundled GROMACS-only examples and clean up residual references in README, troubleshooting docs, labels, and API comments. Authored by OpenClaw (model: gpt-5.4) --- .github/labeler.yml | 3 - AGENTS.md | 2 +- README.md | 3 +- doc/getting-started/quick_start.ipynb | 2 +- doc/install/index.rst | 1 - doc/install/install-from-c-library.md | 6 +- doc/install/install-gromacs.md | 45 +- doc/third-party/gromacs.md | 151 +--- doc/third-party/index.rst | 1 - doc/troubleshooting/installation.md | 2 +- examples/methane/index.raw | 1 - examples/methane/input.json | 7 - examples/methane/lig_solv.gro | 662 --------------- examples/methane/md.mdp | 56 -- examples/methane/methane.itp | 31 - examples/methane/run.sh | 4 - examples/methane/topol.top | 15 - examples/methane/type.raw | 1 - examples/water/gmx/index.raw | 1 - examples/water/gmx/input.json | 6 - examples/water/gmx/md.mdp | 48 -- examples/water/gmx/md.sh | 5 - examples/water/gmx/rdf.png | Bin 144634 -> 0 bytes examples/water/gmx/type.raw | 1 - examples/water/gmx/water.gro | 771 ------------------ examples/water/gmx/water.top | 43 - source/CMakeLists.txt | 6 +- source/api_cc/include/DeepPot.h | 2 +- source/api_cc/include/DeepSpin.h | 2 +- source/gmx/.gitignore | 1 - source/gmx/CMakeLists.txt | 50 -- source/gmx/dp_gmx_patch | 133 --- source/gmx/include/gmx_plugin.h | 37 - .../patches/2020.2/CMakeLists.txt.patch.in | 29 - .../src/gromacs/mdlib/forcerec.cpp.patch | 33 - .../2020.2/src/gromacs/mdlib/forcerec.h.patch | 13 - .../src/gromacs/mdlib/sim_util.cpp.patch | 103 --- source/gmx/src/gmx_plugin.cpp | 109 --- 38 files changed, 32 insertions(+), 2354 deletions(-) delete mode 100644 examples/methane/index.raw delete mode 100644 examples/methane/input.json delete mode 100644 examples/methane/lig_solv.gro delete mode 100755 examples/methane/md.mdp delete mode 100644 examples/methane/methane.itp delete mode 100644 examples/methane/run.sh delete mode 100644 examples/methane/topol.top delete mode 100644 examples/methane/type.raw delete mode 100644 examples/water/gmx/index.raw delete mode 100644 examples/water/gmx/input.json delete mode 100755 examples/water/gmx/md.mdp delete mode 100755 examples/water/gmx/md.sh delete mode 100644 examples/water/gmx/rdf.png delete mode 100644 examples/water/gmx/type.raw delete mode 100644 examples/water/gmx/water.gro delete mode 100644 examples/water/gmx/water.top delete mode 100644 source/gmx/.gitignore delete mode 100644 source/gmx/CMakeLists.txt delete mode 100644 source/gmx/dp_gmx_patch delete mode 100644 source/gmx/include/gmx_plugin.h delete mode 100644 source/gmx/patches/2020.2/CMakeLists.txt.patch.in delete mode 100644 source/gmx/patches/2020.2/src/gromacs/mdlib/forcerec.cpp.patch delete mode 100644 source/gmx/patches/2020.2/src/gromacs/mdlib/forcerec.h.patch delete mode 100644 source/gmx/patches/2020.2/src/gromacs/mdlib/sim_util.cpp.patch delete mode 100644 source/gmx/src/gmx_plugin.cpp diff --git a/.github/labeler.yml b/.github/labeler.yml index 0183a144ba..8ede95fee3 100644 --- a/.github/labeler.yml +++ b/.github/labeler.yml @@ -30,9 +30,6 @@ C: LAMMPS: - changed-files: - any-glob-to-any-file: source/lmp/**/* -Gromacs: - - changed-files: - - any-glob-to-any-file: source/gmx/**/* i-PI: - changed-files: - any-glob-to-any-file: source/ipi/**/* diff --git a/AGENTS.md b/AGENTS.md index bcac9f1514..617c904f11 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -1,6 +1,6 @@ # DeePMD-kit -DeePMD-kit is a deep learning package for many-body potential energy representation and molecular dynamics. It supports multiple backends (TensorFlow, PyTorch, JAX, Paddle) and integrates with MD packages like LAMMPS, GROMACS, and i-PI. +DeePMD-kit is a deep learning package for many-body potential energy representation and molecular dynamics. It supports multiple backends (TensorFlow, PyTorch, JAX, Paddle) and integrates with MD packages like LAMMPS and i-PI. **Always reference these instructions first and fallback to search or bash commands only when you encounter unexpected information that does not match the info here.** diff --git a/README.md b/README.md index 58ec1fec7f..420481f8be 100644 --- a/README.md +++ b/README.md @@ -20,7 +20,7 @@ For more information, check the [documentation](https://deepmd.readthedocs.io/). ### Highlighted features - **interfaced with multiple backends**, including TensorFlow, PyTorch, JAX, and Paddle, the most popular deep learning frameworks, making the training process highly automatic and efficient. -- **interfaced with high-performance classical MD and quantum (path-integral) MD packages**, including LAMMPS, i-PI, AMBER, CP2K, GROMACS, OpenMM, and ABACUS. +- **interfaced with high-performance classical MD and quantum (path-integral) MD packages**, including LAMMPS, i-PI, AMBER, CP2K, OpenMM, and ABACUS. - **implements the Deep Potential series models**, which have been successfully applied to finite and extended systems, including organic molecules, metals, semiconductors, insulators, etc. - **implements MPI and GPU supports**, making it highly efficient for high-performance parallel and distributed computing. - **highly modularized**, easy to adapt to different descriptors for deep learning-based potential energy models. @@ -110,7 +110,6 @@ The code is organized as follows: - `source/nodejs`: source code of the Node.js API. - `source/ipi`: source code of i-PI client. - `source/lmp`: source code of LAMMPS module. -- `source/gmx`: source code of Gromacs plugin. # Contributing diff --git a/doc/getting-started/quick_start.ipynb b/doc/getting-started/quick_start.ipynb index 9af2d456bf..09d0932427 100644 --- a/doc/getting-started/quick_start.ipynb +++ b/doc/getting-started/quick_start.ipynb @@ -83,7 +83,7 @@ "\n", "In this tutorial, we will take the gaseous methane molecule as an example to provide a detailed introduction to the training and application of the Deep Potential (DP) model.\n", "\n", - "DeePMD-kit is a software tool that employs neural networks to fit potential energy models based on first-principles data for molecular dynamics simulations. Without manual intervention, it can end-to-end transform the data provided by users into a deep potential model in a matter of hours. This model can seamlessly integrate with common molecular dynamics simulation software (like LAMMPS, OpenMM, and GROMACS).\n", + "DeePMD-kit is a software tool that employs neural networks to fit potential energy models based on first-principles data for molecular dynamics simulations. Without manual intervention, it can end-to-end transform the data provided by users into a deep potential model in a matter of hours. This model can seamlessly integrate with common molecular dynamics simulation software (like LAMMPS and OpenMM).\n", "\n", "DeePMD-kit significantly elevates the limits of molecular dynamics through high-performance computing and machine learning, achieving system scales of up to hundreds of millions of atoms while still maintaining the high accuracy of \"ab initio\" calculations. The simulation time scale is improved by at least 1000 times compared to traditional methods. Its achievements earned the 2020 ACM Gordon Bell Prize, one of the highest honors in the field of high-performance computing, and it has been used by over a thousand research groups in physics, chemistry, materials science, biology, and other fields globally.\n", "\n", diff --git a/doc/install/index.rst b/doc/install/index.rst index 5723e6571f..6491e6b787 100644 --- a/doc/install/index.rst +++ b/doc/install/index.rst @@ -9,7 +9,6 @@ Installation install-from-c-library install-lammps install-ipi - install-gromacs build-conda install-nodejs easy-install-dev diff --git a/doc/install/install-from-c-library.md b/doc/install/install-from-c-library.md index 6e468dd29e..13498fc886 100644 --- a/doc/install/install-from-c-library.md +++ b/doc/install/install-from-c-library.md @@ -4,7 +4,7 @@ **Supported backends**: TensorFlow {{ tensorflow_icon }}, JAX {{ jax_icon }} ::: -DeePMD-kit provides pre-compiled C library package (`libdeepmd_c.tar.gz`) in each [release](https://github.com/deepmodeling/deepmd-kit/releases). It can be used to build the [LAMMPS plugin](./install-lammps.md) and [GROMACS patch](./install-gromacs.md), as well as many [third-party software packages](../third-party/out-of-deepmd-kit.md), without building TensorFlow and DeePMD-kit on one's own. +DeePMD-kit provides pre-compiled C library package (`libdeepmd_c.tar.gz`) in each [release](https://github.com/deepmodeling/deepmd-kit/releases). It can be used to build the [LAMMPS plugin](./install-lammps.md) and the [i-PI driver](./install-ipi.md), as well as many [third-party software packages](../third-party/out-of-deepmd-kit.md), without building TensorFlow and DeePMD-kit on one's own. It can be downloaded via the shell command: ```sh @@ -14,7 +14,7 @@ tar xzf libdeepmd_c.tar.gz The library is built in Linux (GLIBC 2.17) with CUDA 12.2 (`libdeepmd_c.tar.gz`). It's noted that this package does not contain CUDA Toolkit and cuDNN, so one needs to download them from the NVIDIA website. -## Use Pre-compiled C Library to build the LAMMPS plugin, i-PI driver, and GROMACS patch +## Use Pre-compiled C Library to build the LAMMPS plugin and i-PI driver When one [installs DeePMD-kit's C++ interface](./install-from-source.md#install-deepmd-kits-c-interface), one can use the CMake argument {cmake:variable}`DEEPMD_C_ROOT` to the path `libdeepmd_c`. @@ -28,7 +28,7 @@ make install ``` Then the i-PI driver `dp_ipi` will be built and installed. -One can also follow the manual [Install LAMMPS](./install-lammps.md) and/or [Install GROMACS](./install-gromacs.md). +One can also follow the manual [Install LAMMPS](./install-lammps.md). For historical GROMACS context, see the [deprecation notice](./install-gromacs.md). :::{cmake:variable} DEEPMD_C_ROOT diff --git a/doc/install/install-gromacs.md b/doc/install/install-gromacs.md index 02b0b4b194..d75a272854 100644 --- a/doc/install/install-gromacs.md +++ b/doc/install/install-gromacs.md @@ -1,40 +1,17 @@ -# Install GROMACS with DeePMD-kit +--- +orphan: true +--- -Before following this section, [DeePMD-kit C++ interface](install-from-source.md) should have be installed. +# GROMACS patch has been deprecated -## Patch source code of GROMACS +::::{danger} -Download the source code of a supported GROMACS version (2020.2) from https://manual.gromacs.org/2020.2/download.html. Run the following command: +:::{deprecated} next release +The in-tree GROMACS patch that used to ship with DeePMD-kit is no longer maintained and has been removed from the repository. -```bash -export PATH=$PATH:$deepmd_kit_root/bin -dp_gmx_patch -d $gromacs_root -v $version -p -``` +For supported production workflows, use the official [LAMMPS interface](./install-lammps.md). -where `deepmd_kit_root` is the directory where the latest version of DeePMD-kit is installed, and `gromacs_root` refers to the source code directory of GROMACS. And `version` represents the version of GROMACS, where **only 2020.2 is supported now**. If attempting to patch another version of GROMACS you will still need to set `version` to `2020.2` as this is the only supported version, we cannot guarantee that patching other versions of GROMACS will work. +If you still need a GROMACS-based workflow, consider the third-party implementation mentioned in [issue #5360](https://github.com/deepmodeling/deepmd-kit/issues/5360), which was reported at . +::: - - - - -## Compile GROMACS with deepmd-kit - -The C++ interface of `Deepmd-kit 2.x` and `TensorFlow 2.x` are required. And be aware that only DeePMD-kit with **high precision** is supported now since we cannot ensure single precision is enough for a GROMACS simulation. Here is a sample compile script: - -```bash -#!/bin/bash -export CC=/usr/bin/gcc -export CXX=/usr/bin/g++ -export CMAKE_PREFIX_PATH="/path/to/fftw-3.3.9" # fftw libraries -mkdir build -cd build - -cmake3 .. -DCMAKE_CXX_STANDARD=14 \ # not required, but c++14 seems to be more compatible with higher version of tensorflow --DGMX_MPI=ON \ - -DGMX_GPU=CUDA \ # Gromacs on ROCm has not been fully developed yet --DCUDAToolkit_ROOT=/path/to/cuda \ - -DCMAKE_INSTALL_PREFIX=/path/to/gromacs-2020.2-deepmd -make -j -make install -``` +:::: diff --git a/doc/third-party/gromacs.md b/doc/third-party/gromacs.md index 791caeb419..f1c05ad42b 100644 --- a/doc/third-party/gromacs.md +++ b/doc/third-party/gromacs.md @@ -1,146 +1,17 @@ -# Running MD with GROMACS +--- +orphan: true +--- -:::{note} -See [Environment variables](../env.md) for the runtime environment variables. -::: - -## DP/MM Simulation - -This part gives a simple tutorial on how to run a DP/MM simulation for methane in water, which means using DP for methane and TIP3P for water. All relevant files can be found in `examples/methane`. - -### Topology Preparation - -Similar to QM/MM simulation, the internal interactions (including bond, angle, dihedrals, LJ, Columb) of the region described by a neural network potential (NNP) have to be **turned off**. In GROMACS, bonded interactions can be turned off by modifying `[ bonds ]`, `[ angles ]`, `[ dihedrals ]` and `[ pairs ]` sections. And LJ and Columb interactions must be turned off by `[ exclusions ]` section. - -For example, if one wants to simulate ethane in water, using DeepPotential for methane and TIP3P for water, the topology of methane should be like the following (as presented in `examples/methane/methane.itp`): - -``` -[ atomtypes ] -;name btype mass charge ptype sigma epsilon - c3 c3 0.0 0.0 A 0.339771 0.451035 - hc hc 0.0 0.0 A 0.260018 0.087027 - -[ moleculetype ] -;name nrexcl - methane 3 - -[ atoms ] -; nr type resnr residue atom cgnr charge mass - 1 c3 1 MOL C1 1 -0.1068 12.010 - 2 hc 1 MOL H1 2 0.0267 1.008 - 3 hc 1 MOL H2 3 0.0267 1.008 - 4 hc 1 MOL H3 4 0.0267 1.008 - 5 hc 1 MOL H4 5 0.0267 1.008 - -[ bonds ] -; i j func b0 kb - 1 2 5 - 1 3 5 - 1 4 5 - 1 5 5 - -[ exclusions ] -; ai aj1 aj2 aj3 aj4 - 1 2 3 4 5 - 2 1 3 4 5 - 3 1 2 4 5 - 4 1 2 3 5 - 5 1 2 3 4 -``` - -For comparison, the original topology file generated by `acpype` will be: - -``` -; methane_GMX.itp created by acpype (v: 2021-02-05T22:15:50CET) on Wed Sep 8 01:21:53 2021 - -[ atomtypes ] -;name bond_type mass charge ptype sigma epsilon Amb - c3 c3 0.00000 0.00000 A 3.39771e-01 4.51035e-01 ; 1.91 0.1078 - hc hc 0.00000 0.00000 A 2.60018e-01 8.70272e-02 ; 1.46 0.0208 - -[ moleculetype ] -;name nrexcl - methane 3 - -[ atoms ] -; nr type resi res atom cgnr charge mass ; qtot bond_type - 1 c3 1 MOL C1 1 -0.106800 12.01000 ; qtot -0.107 - 2 hc 1 MOL H1 2 0.026700 1.00800 ; qtot -0.080 - 3 hc 1 MOL H2 3 0.026700 1.00800 ; qtot -0.053 - 4 hc 1 MOL H3 4 0.026700 1.00800 ; qtot -0.027 - 5 hc 1 MOL H4 5 0.026700 1.00800 ; qtot 0.000 +# GROMACS support has been deprecated -[ bonds ] -; ai aj funct r k - 1 2 1 1.0970e-01 3.1455e+05 ; C1 - H1 - 1 3 1 1.0970e-01 3.1455e+05 ; C1 - H2 - 1 4 1 1.0970e-01 3.1455e+05 ; C1 - H3 - 1 5 1 1.0970e-01 3.1455e+05 ; C1 - H4 +::::{danger} -[ angles ] -; ai aj ak funct theta cth - 2 1 3 1 1.0758e+02 3.2635e+02 ; H1 - C1 - H2 - 2 1 4 1 1.0758e+02 3.2635e+02 ; H1 - C1 - H3 - 2 1 5 1 1.0758e+02 3.2635e+02 ; H1 - C1 - H4 - 3 1 4 1 1.0758e+02 3.2635e+02 ; H2 - C1 - H3 - 3 1 5 1 1.0758e+02 3.2635e+02 ; H2 - C1 - H4 - 4 1 5 1 1.0758e+02 3.2635e+02 ; H3 - C1 - H4 -``` +:::{deprecated} next release +The official GROMACS patch that used to live in the DeePMD-kit repository is no longer maintained and has been removed. -### DeePMD-kit Settings +For supported production use, prefer the official [LAMMPS interface](../install/install-lammps.md) together with the [LAMMPS runtime documentation](./lammps-command.md). -Before running simulations, we need to tell GROMACS to use DeepPotential by setting the environment variable `GMX_DEEPMD_INPUT_JSON`: - -```bash -export GMX_DEEPMD_INPUT_JSON=input.json -``` - -Then, in your working directories, we have to write `input.json` file: - -```json -{ - "graph_file": "/path/to/graph.pb", - "type_file": "type.raw", - "index_file": "index.raw", - "lambda": 1.0, - "pbc": false -} -``` - -Here is an explanation for these settings: - -- `graph_file` : The [model file](../backend.md) generated by `dp freeze` command -- `type_file` : File to specify DP atom types (in space-separated format). Here, `type.raw` looks like - -``` -1 0 0 0 0 -``` - -- `index_file` : File containing indices of DP atoms (in space-separated format), which should be consistent with the indices' order in .gro file but **starting from zero**. Here, `index.raw` looks like - -``` -0 1 2 3 4 -``` - -- `lambda`: Optional, default 1.0. Used in alchemical calculations. -- `pbc`: Optional, default true. If true, the GROMACS periodic condition is passed to DeePMD-kit. - -### Run Simulation - -Finally, you can run GROMACS using `gmx mdrun` as usual. - -## All-atom DP Simulation - -This part gives an example of how to simulate all atoms described by a DeepPotential with Gromacs, taking water as an example. Instead of using `[ exclusions ]` to turn off the non-bonded energies, we can simply do this by setting LJ parameters (i.e. epsilon and sigma) and partial charges to 0, as shown in `examples/water/gmx/water.top`: - -``` -[ atomtypes ] -; name at.num mass charge ptype sigma epsilon -HW 1 1.008 0.0000 A 0.00000e+00 0.00000e+00 -OW 8 16.00 0.0000 A 0.00000e+00 0.00000e+00 -``` - -As mentioned in the above section, `input.json` and relevant files (`index.raw`, `type.raw`) should also be created. Then, we can start the simulation under the NVT ensemble and plot the radial distribution function (RDF) by `gmx rdf` command. We can see that the RDF given by Gromacs+DP matches perfectly with LAMMPS+DP, which further provides an evidence on the validity of our simulation. -![rdf](../../examples/water/gmx/rdf.png) +If you still need a GROMACS-based workflow, consider the third-party implementation mentioned in [issue #5360](https://github.com/deepmodeling/deepmd-kit/issues/5360), which was reported at . +::: -However, we still recommend you run an all-atom DP simulation using LAMMPS since it is more stable and efficient. +:::: diff --git a/doc/third-party/index.rst b/doc/third-party/index.rst index cd0726a4bb..2704e9d30c 100644 --- a/doc/third-party/index.rst +++ b/doc/third-party/index.rst @@ -10,5 +10,4 @@ Note that the model for inference is required to be compatible with the DeePMD-k ase lammps-command ipi - gromacs out-of-deepmd-kit diff --git a/doc/troubleshooting/installation.md b/doc/troubleshooting/installation.md index 48b06dbe0b..e7db819e80 100644 --- a/doc/troubleshooting/installation.md +++ b/doc/troubleshooting/installation.md @@ -2,7 +2,7 @@ ## Inadequate versions of gcc/g++ -Sometimes you may use a gcc/g++ of version < 4.8. In this way, you can still compile all the parts of TensorFlow and most of the parts of DeePMD-kit, but i-PI and GROMACS plugins will be disabled automatically. Or if you have a gcc/g++ of version > 4.8, say, 7.2.0, you may choose to use it by doing +Sometimes you may use a gcc/g++ of version < 4.8. In this way, you can still compile all the parts of TensorFlow and most of the parts of DeePMD-kit, but the i-PI driver will be disabled automatically. Or if you have a gcc/g++ of version > 4.8, say, 7.2.0, you may choose to use it by doing ```bash export CC=/path/to/gcc-7.2.0/bin/gcc diff --git a/examples/methane/index.raw b/examples/methane/index.raw deleted file mode 100644 index 926717b11d..0000000000 --- a/examples/methane/index.raw +++ /dev/null @@ -1 +0,0 @@ -0 1 2 3 4 diff --git a/examples/methane/input.json b/examples/methane/input.json deleted file mode 100644 index e148f122d2..0000000000 --- a/examples/methane/input.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "graph_file": "frozen_model.pb", - "type_file": "type.raw", - "index_file": "index.raw", - "lambda": 1.0, - "pbc": false -} diff --git a/examples/methane/lig_solv.gro b/examples/methane/lig_solv.gro deleted file mode 100644 index ae3474606e..0000000000 --- a/examples/methane/lig_solv.gro +++ /dev/null @@ -1,662 +0,0 @@ -methane_GMX.gro created by acpype (v: 2021-02-05T22:15:50CET) on Tue Sep 7 15:59:39 2021 - 659 - 1MOL C1 1 1.635 1.635 0.771 - 1MOL H1 2 1.567 1.720 0.762 - 1MOL H2 3 1.595 1.551 0.713 - 1MOL H3 4 1.644 1.606 0.876 - 1MOL H4 5 1.734 1.663 0.733 - 2SOL OW 6 0.230 0.628 0.113 - 2SOL HW1 7 0.137 0.626 0.150 - 2SOL HW2 8 0.231 0.589 0.021 - 3SOL OW 9 0.225 0.275 0.996 - 3SOL HW1 10 0.260 0.258 1.088 - 3SOL HW2 11 0.137 0.230 0.984 - 4SOL OW 12 0.019 0.368 0.647 - 4SOL HW1 13 -0.063 0.411 0.686 - 4SOL HW2 14 -0.009 0.295 0.584 - 5SOL OW 15 0.569 1.275 1.165 - 5SOL HW1 16 0.476 1.268 1.128 - 5SOL HW2 17 0.580 1.364 1.209 - 6SOL OW 18 1.135 0.703 0.717 - 6SOL HW1 19 1.192 0.781 0.692 - 6SOL HW2 20 1.075 0.729 0.793 - 7SOL OW 21 1.755 0.607 0.231 - 7SOL HW1 22 1.743 0.594 0.132 - 7SOL HW2 23 1.725 0.526 0.280 - 8SOL OW 24 0.768 1.144 1.023 - 8SOL HW1 25 0.690 1.161 1.083 - 8SOL HW2 26 0.802 1.231 0.987 - 9SOL OW 27 0.850 0.798 1.823 - 9SOL HW1 28 0.846 0.874 1.888 - 9SOL HW2 29 0.872 0.834 1.732 - 10SOL OW 30 0.685 1.012 0.665 - 10SOL HW1 31 0.754 0.996 0.735 - 10SOL HW2 32 0.612 1.069 0.703 - 11SOL OW 33 0.686 1.161 1.803 - 11SOL HW1 34 0.746 1.240 1.817 - 11SOL HW2 35 0.600 1.192 1.762 - 12SOL OW 36 0.335 1.435 1.061 - 12SOL HW1 37 0.257 1.404 1.008 - 12SOL HW2 38 0.393 1.493 1.004 - 13SOL OW 39 1.460 1.505 1.339 - 13SOL HW1 40 1.484 1.599 1.365 - 13SOL HW2 41 1.444 1.451 1.421 - 14SOL OW 42 0.438 0.392 1.499 - 14SOL HW1 43 0.520 0.336 1.508 - 14SOL HW2 44 0.357 0.334 1.503 - 15SOL OW 45 1.603 0.447 0.737 - 15SOL HW1 46 1.529 0.493 0.687 - 15SOL HW2 47 1.654 0.515 0.790 - 16SOL OW 48 0.231 1.713 0.483 - 16SOL HW1 49 0.265 1.790 0.537 - 16SOL HW2 50 0.275 1.713 0.393 - 17SOL OW 51 1.127 1.341 1.690 - 17SOL HW1 52 1.174 1.341 1.778 - 17SOL HW2 53 1.079 1.254 1.679 - 18SOL OW 54 0.230 1.434 0.538 - 18SOL HW1 55 0.204 1.530 0.538 - 18SOL HW2 56 0.159 1.380 0.583 - 19SOL OW 57 0.240 1.091 0.886 - 19SOL HW1 58 0.254 1.007 0.938 - 19SOL HW2 59 0.185 1.155 0.941 - 20SOL OW 60 0.620 1.786 1.439 - 20SOL HW1 61 0.528 1.769 1.474 - 20SOL HW2 62 0.648 1.878 1.465 - 21SOL OW 63 0.606 0.964 0.123 - 21SOL HW1 64 0.613 1.048 0.069 - 21SOL HW2 65 0.652 0.977 0.211 - 22SOL OW 66 1.594 0.114 1.480 - 22SOL HW1 67 1.576 0.181 1.408 - 22SOL HW2 68 1.591 0.160 1.569 - 23SOL OW 69 0.122 0.643 0.563 - 23SOL HW1 70 0.077 0.555 0.580 - 23SOL HW2 71 0.121 0.697 0.647 - 24SOL OW 72 1.842 1.767 0.359 - 24SOL HW1 73 1.896 1.738 0.439 - 24SOL HW2 74 1.872 1.857 0.330 - 25SOL OW 75 0.027 1.596 0.117 - 25SOL HW1 76 0.008 1.500 0.138 - 25SOL HW2 77 -0.006 1.654 0.192 - 26SOL OW 78 1.689 0.922 0.612 - 26SOL HW1 79 1.784 0.893 0.620 - 26SOL HW2 80 1.681 0.987 0.537 - 27SOL OW 81 1.641 1.108 0.432 - 27SOL HW1 82 1.727 1.110 0.380 - 27SOL HW2 83 1.655 1.155 0.520 - 28SOL OW 84 0.113 0.737 1.597 - 28SOL HW1 85 0.201 0.724 1.642 - 28SOL HW2 86 0.100 0.834 1.575 - 29SOL OW 87 0.613 1.365 0.726 - 29SOL HW1 88 0.564 1.278 0.735 - 29SOL HW2 89 0.590 1.408 0.639 - 30SOL OW 90 1.293 1.228 1.423 - 30SOL HW1 91 1.330 1.155 1.365 - 30SOL HW2 92 1.345 1.233 1.508 - 31SOL OW 93 0.809 0.004 0.502 - 31SOL HW1 94 0.849 0.095 0.493 - 31SOL HW2 95 0.709 0.012 0.508 - 32SOL OW 96 0.197 0.976 1.264 - 32SOL HW1 97 0.286 0.931 1.250 - 32SOL HW2 98 0.124 0.911 1.245 - 33SOL OW 99 1.525 0.999 0.190 - 33SOL HW1 100 1.462 0.923 0.203 - 33SOL HW2 101 1.573 1.017 0.276 - 34SOL OW 102 1.187 1.792 1.616 - 34SOL HW1 103 1.211 1.852 1.540 - 34SOL HW2 104 1.194 1.697 1.586 - 35SOL OW 105 0.317 0.251 1.801 - 35SOL HW1 106 0.388 0.322 1.807 - 35SOL HW2 107 0.229 0.290 1.829 - 36SOL OW 108 1.466 1.417 0.953 - 36SOL HW1 109 1.407 1.423 1.033 - 36SOL HW2 110 1.451 1.329 0.907 - 37SOL OW 111 0.598 0.729 0.270 - 37SOL HW1 112 0.622 0.798 0.202 - 37SOL HW2 113 0.520 0.762 0.324 - 38SOL OW 114 1.281 0.345 0.944 - 38SOL HW1 115 1.195 0.295 0.931 - 38SOL HW2 116 1.343 0.291 1.000 - 39SOL OW 117 1.576 1.662 0.307 - 39SOL HW1 118 1.665 1.708 0.310 - 39SOL HW2 119 1.555 1.638 0.212 - 40SOL OW 120 0.807 0.605 1.465 - 40SOL HW1 121 0.760 0.602 1.554 - 40SOL HW2 122 0.756 0.550 1.399 - 41SOL OW 123 1.394 0.469 1.674 - 41SOL HW1 124 1.374 0.512 1.762 - 41SOL HW2 125 1.472 0.407 1.683 - 42SOL OW 126 0.973 0.890 1.572 - 42SOL HW1 127 1.019 0.806 1.543 - 42SOL HW2 128 0.917 0.924 1.497 - 43SOL OW 129 0.991 0.410 1.242 - 43SOL HW1 130 0.914 0.444 1.296 - 43SOL HW2 131 0.957 0.359 1.163 - 44SOL OW 132 1.041 0.701 0.429 - 44SOL HW1 133 1.067 0.697 0.525 - 44SOL HW2 134 0.956 0.650 0.415 - 45SOL OW 135 0.076 0.811 0.789 - 45SOL HW1 136 0.175 0.799 0.798 - 45SOL HW2 137 0.052 0.906 0.810 - 46SOL OW 138 0.130 1.821 1.571 - 46SOL HW1 139 0.120 1.806 1.670 - 46SOL HW2 140 0.044 1.857 1.535 - 47SOL OW 141 0.865 0.348 0.195 - 47SOL HW1 142 0.924 0.411 0.146 - 47SOL HW2 143 0.884 0.254 0.166 - 48SOL OW 144 1.719 0.585 1.831 - 48SOL HW1 145 1.693 0.674 1.795 - 48SOL HW2 146 1.717 0.517 1.758 - 49SOL OW 147 1.362 1.144 0.545 - 49SOL HW1 148 1.445 1.115 0.497 - 49SOL HW2 149 1.313 1.211 0.489 - 50SOL OW 150 0.550 0.196 0.885 - 50SOL HW1 151 0.545 0.191 0.985 - 50SOL HW2 152 0.552 0.292 0.856 - 51SOL OW 153 1.008 1.456 0.477 - 51SOL HW1 154 0.962 1.528 0.425 - 51SOL HW2 155 1.004 1.476 0.575 - 52SOL OW 156 0.351 1.801 0.853 - 52SOL HW1 157 0.401 1.715 0.859 - 52SOL HW2 158 0.416 1.878 0.850 - 53SOL OW 159 1.795 1.066 0.873 - 53SOL HW1 160 1.733 1.051 0.797 - 53SOL HW2 161 1.743 1.077 0.958 - 54SOL OW 162 1.227 1.550 1.506 - 54SOL HW1 163 1.233 1.473 1.570 - 54SOL HW2 164 1.175 1.524 1.426 - 55SOL OW 165 0.321 0.943 0.242 - 55SOL HW1 166 0.403 0.982 0.200 - 55SOL HW2 167 0.294 0.861 0.193 - 56SOL OW 168 1.458 0.735 0.728 - 56SOL HW1 169 1.453 0.670 0.803 - 56SOL HW2 170 1.538 0.794 0.741 - 57SOL OW 171 0.461 1.266 1.727 - 57SOL HW1 172 0.411 1.267 1.641 - 57SOL HW2 173 0.398 1.248 1.803 - 58SOL OW 174 1.111 1.776 0.237 - 58SOL HW1 175 1.051 1.714 0.287 - 58SOL HW2 176 1.142 1.732 0.152 - 59SOL OW 177 0.202 0.285 1.498 - 59SOL HW1 178 0.122 0.345 1.485 - 59SOL HW2 179 0.192 0.236 1.584 - 60SOL OW 180 1.632 1.377 0.081 - 60SOL HW1 181 1.600 1.471 0.071 - 60SOL HW2 182 1.556 1.314 0.069 - 61SOL OW 183 0.464 1.743 0.323 - 61SOL HW1 184 0.497 1.782 0.409 - 61SOL HW2 185 0.540 1.736 0.258 - 62SOL OW 186 1.400 0.107 0.426 - 62SOL HW1 187 1.376 0.070 0.336 - 62SOL HW2 188 1.499 0.123 0.430 - 63SOL OW 189 0.249 1.785 1.241 - 63SOL HW1 190 0.306 1.720 1.291 - 63SOL HW2 191 0.233 1.752 1.148 - 64SOL OW 192 0.940 1.698 0.904 - 64SOL HW1 193 1.020 1.641 0.925 - 64SOL HW2 194 0.891 1.658 0.827 - 65SOL OW 195 0.382 0.700 0.480 - 65SOL HW1 196 0.427 0.610 0.477 - 65SOL HW2 197 0.288 0.689 0.513 - 66SOL OW 198 1.547 0.222 1.729 - 66SOL HW1 199 1.542 0.259 1.821 - 66SOL HW2 200 1.475 0.153 1.717 - 67SOL OW 201 0.614 0.122 0.117 - 67SOL HW1 202 0.712 0.100 0.124 - 67SOL HW2 203 0.583 0.105 0.024 - 68SOL OW 204 0.781 0.264 1.749 - 68SOL HW1 205 0.848 0.203 1.792 - 68SOL HW2 206 0.708 0.283 1.814 - 69SOL OW 207 0.888 1.514 1.195 - 69SOL HW1 208 0.865 1.489 1.101 - 69SOL HW2 209 0.949 1.445 1.234 - 70SOL OW 210 1.351 0.590 1.433 - 70SOL HW1 211 1.379 0.547 1.518 - 70SOL HW2 212 1.376 0.686 1.434 - 71SOL OW 213 0.803 1.402 0.924 - 71SOL HW1 214 0.893 1.416 0.882 - 71SOL HW2 215 0.732 1.404 0.853 - 72SOL OW 216 0.922 0.503 0.899 - 72SOL HW1 217 0.897 0.494 0.803 - 72SOL HW2 218 0.970 0.421 0.930 - 73SOL OW 219 0.539 0.064 0.512 - 73SOL HW1 220 0.458 0.065 0.570 - 73SOL HW2 221 0.542 0.147 0.457 - 74SOL OW 222 1.434 1.188 0.041 - 74SOL HW1 223 1.466 1.112 0.098 - 74SOL HW2 224 1.342 1.215 0.071 - 75SOL OW 225 0.297 0.035 0.171 - 75SOL HW1 226 0.346 0.119 0.150 - 75SOL HW2 227 0.359 -0.030 0.216 - 76SOL OW 228 0.935 0.236 0.480 - 76SOL HW1 229 0.887 0.277 0.402 - 76SOL HW2 230 1.034 0.234 0.461 - 77SOL OW 231 1.076 0.683 1.464 - 77SOL HW1 232 0.996 0.622 1.467 - 77SOL HW2 233 1.157 0.630 1.440 - 78SOL OW 234 1.227 1.570 0.793 - 78SOL HW1 235 1.248 1.644 0.728 - 78SOL HW2 236 1.295 1.570 0.866 - 79SOL OW 237 0.459 1.152 0.741 - 79SOL HW1 238 0.388 1.125 0.806 - 79SOL HW2 239 0.433 1.124 0.648 - 80SOL OW 240 1.271 1.797 0.591 - 80SOL HW1 241 1.315 1.861 0.527 - 80SOL HW2 242 1.221 1.849 0.661 - 81SOL OW 243 1.032 0.549 0.016 - 81SOL HW1 244 0.991 0.631 -0.023 - 81SOL HW2 245 1.096 0.575 0.089 - 82SOL OW 246 0.078 0.556 1.386 - 82SOL HW1 247 0.170 0.555 1.345 - 82SOL HW2 248 0.072 0.630 1.453 - 83SOL OW 249 0.561 0.222 1.147 - 83SOL HW1 250 0.599 0.138 1.184 - 83SOL HW2 251 0.473 0.241 1.191 - 84SOL OW 252 0.866 0.454 0.642 - 84SOL HW1 253 0.834 0.526 0.580 - 84SOL HW2 254 0.890 0.373 0.589 - 85SOL OW 255 1.017 0.039 0.753 - 85SOL HW1 256 0.945 0.044 0.684 - 85SOL HW2 257 0.993 -0.030 0.822 - 86SOL OW 258 1.429 1.173 0.867 - 86SOL HW1 259 1.374 1.089 0.860 - 86SOL HW2 260 1.455 1.202 0.775 - 87SOL OW 261 1.466 0.590 0.992 - 87SOL HW1 262 1.436 0.495 0.999 - 87SOL HW2 263 1.539 0.606 1.058 - 88SOL OW 264 1.857 0.833 0.377 - 88SOL HW1 265 1.899 0.769 0.441 - 88SOL HW2 266 1.819 0.782 0.299 - 89SOL OW 267 0.488 1.385 0.174 - 89SOL HW1 268 0.401 1.370 0.221 - 89SOL HW2 269 0.471 1.411 0.079 - 90SOL OW 270 1.664 1.280 0.657 - 90SOL HW1 271 1.763 1.288 0.671 - 90SOL HW2 272 1.619 1.364 0.688 - 91SOL OW 273 1.390 0.575 0.078 - 91SOL HW1 274 1.336 0.554 0.159 - 91SOL HW2 275 1.481 0.534 0.087 - 92SOL OW 276 0.527 0.256 0.328 - 92SOL HW1 277 0.554 0.197 0.253 - 92SOL HW2 278 0.527 0.351 0.297 - 93SOL OW 279 1.754 1.223 1.588 - 93SOL HW1 280 1.845 1.184 1.575 - 93SOL HW2 281 1.762 1.319 1.612 - 94SOL OW 282 1.064 1.347 1.340 - 94SOL HW1 283 0.984 1.324 1.395 - 94SOL HW2 284 1.147 1.321 1.389 - 95SOL OW 285 1.592 1.629 1.625 - 95SOL HW1 286 1.619 1.663 1.535 - 95SOL HW2 287 1.671 1.591 1.671 - 96SOL OW 288 1.111 1.195 1.100 - 96SOL HW1 289 1.071 1.239 1.181 - 96SOL HW2 290 1.070 1.232 1.017 - 97SOL OW 291 1.638 1.099 1.079 - 97SOL HW1 292 1.643 1.180 1.138 - 97SOL HW2 293 1.552 1.101 1.028 - 98SOL OW 294 0.915 0.089 1.402 - 98SOL HW1 295 0.940 0.069 1.307 - 98SOL HW2 296 0.987 0.145 1.444 - 99SOL OW 297 0.980 1.116 1.719 - 99SOL HW1 298 0.881 1.122 1.729 - 99SOL HW2 299 1.003 1.036 1.663 - 100SOL OW 300 0.705 1.050 0.368 - 100SOL HW1 301 0.691 1.057 0.467 - 100SOL HW2 302 0.789 0.999 0.350 - 101SOL OW 303 0.410 0.813 1.251 - 101SOL HW1 304 0.496 0.825 1.301 - 101SOL HW2 305 0.368 0.726 1.278 - 102SOL OW 306 1.274 0.386 1.262 - 102SOL HW1 307 1.295 0.460 1.326 - 102SOL HW2 308 1.185 0.403 1.219 - 103SOL OW 309 0.064 1.564 1.331 - 103SOL HW1 310 0.018 1.646 1.297 - 103SOL HW2 311 0.162 1.583 1.340 - 104SOL OW 312 0.367 1.100 0.501 - 104SOL HW1 313 0.360 1.183 0.445 - 104SOL HW2 314 0.371 1.020 0.441 - 105SOL OW 315 0.566 0.537 0.865 - 105SOL HW1 316 0.578 0.603 0.791 - 105SOL HW2 317 0.612 0.571 0.948 - 106SOL OW 318 1.252 1.348 0.388 - 106SOL HW1 319 1.302 1.425 0.428 - 106SOL HW2 320 1.157 1.350 0.420 - 107SOL OW 321 1.272 1.445 1.142 - 107SOL HW1 322 1.319 1.458 1.229 - 107SOL HW2 323 1.206 1.371 1.151 - 108SOL OW 324 1.582 0.639 0.472 - 108SOL HW1 325 1.551 0.700 0.545 - 108SOL HW2 326 1.632 0.691 0.403 - 109SOL OW 327 0.354 1.510 1.329 - 109SOL HW1 328 0.333 1.466 1.242 - 109SOL HW2 329 0.451 1.536 1.332 - 110SOL OW 330 0.402 0.751 1.598 - 110SOL HW1 331 0.470 0.806 1.551 - 110SOL HW2 332 0.442 0.663 1.625 - 111SOL OW 333 1.587 0.779 1.670 - 111SOL HW1 334 1.495 0.817 1.665 - 111SOL HW2 335 1.647 0.826 1.605 - 112SOL OW 336 1.013 0.105 1.770 - 112SOL HW1 337 1.019 0.190 1.718 - 112SOL HW2 338 1.045 0.029 1.713 - 113SOL OW 339 0.504 0.050 1.740 - 113SOL HW1 340 0.462 -0.007 1.670 - 113SOL HW2 341 0.438 0.119 1.772 - 114SOL OW 342 0.573 0.870 1.029 - 114SOL HW1 343 0.617 0.959 1.020 - 114SOL HW2 344 0.510 0.870 1.106 - 115SOL OW 345 1.360 0.862 1.045 - 115SOL HW1 346 1.285 0.862 0.979 - 115SOL HW2 347 1.397 0.770 1.054 - 116SOL OW 348 1.209 0.525 0.275 - 116SOL HW1 349 1.222 0.441 0.329 - 116SOL HW2 350 1.180 0.599 0.335 - 117SOL OW 351 0.307 0.213 1.231 - 117SOL HW1 352 0.284 0.250 1.321 - 117SOL HW2 353 0.277 0.118 1.225 - 118SOL OW 354 0.037 1.310 1.282 - 118SOL HW1 355 0.090 1.261 1.350 - 118SOL HW2 356 0.059 1.408 1.287 - 119SOL OW 357 0.732 0.634 1.064 - 119SOL HW1 358 0.791 0.608 0.988 - 119SOL HW2 359 0.704 0.730 1.053 - 120SOL OW 360 1.728 0.935 1.854 - 120SOL HW1 361 1.682 0.928 1.765 - 120SOL HW2 362 1.666 0.979 1.920 - 121SOL OW 363 0.307 0.063 0.618 - 121SOL HW1 364 0.296 0.157 0.651 - 121SOL HW2 365 0.302 0.000 0.695 - 122SOL OW 366 1.622 0.367 0.374 - 122SOL HW1 367 1.624 0.291 0.438 - 122SOL HW2 368 1.574 0.444 0.414 - 123SOL OW 369 1.023 0.766 0.966 - 123SOL HW1 370 1.038 0.787 1.062 - 123SOL HW2 371 0.993 0.671 0.957 - 124SOL OW 372 0.980 1.573 1.700 - 124SOL HW1 373 0.960 1.617 1.612 - 124SOL HW2 374 1.019 1.482 1.684 - 125SOL OW 375 1.859 1.518 1.605 - 125SOL HW1 376 1.873 1.545 1.510 - 125SOL HW2 377 1.942 1.540 1.658 - 126SOL OW 378 0.350 0.898 1.804 - 126SOL HW1 379 0.426 0.942 1.852 - 126SOL HW2 380 0.385 0.851 1.722 - 127SOL OW 381 1.540 0.274 0.125 - 127SOL HW1 382 1.479 0.199 0.148 - 127SOL HW2 383 1.562 0.326 0.208 - 128SOL OW 384 1.303 0.838 0.042 - 128SOL HW1 385 1.337 0.745 0.057 - 128SOL HW2 386 1.321 0.865 -0.053 - 129SOL OW 387 1.068 1.333 0.849 - 129SOL HW1 388 1.075 1.249 0.794 - 129SOL HW2 389 1.130 1.402 0.813 - 130SOL OW 390 0.319 0.810 0.949 - 130SOL HW1 391 0.412 0.846 0.954 - 130SOL HW2 392 0.313 0.725 1.001 - 131SOL OW 393 0.339 0.509 1.006 - 131SOL HW1 394 0.287 0.426 0.989 - 131SOL HW2 395 0.416 0.514 0.942 - 132SOL OW 396 1.138 0.380 1.678 - 132SOL HW1 397 1.093 0.443 1.742 - 132SOL HW2 398 1.231 0.411 1.661 - 133SOL OW 399 1.160 0.207 1.477 - 133SOL HW1 400 1.160 0.271 1.554 - 133SOL HW2 401 1.188 0.255 1.394 - 134SOL OW 402 0.008 1.326 0.200 - 134SOL HW1 403 -0.085 1.347 0.169 - 134SOL HW2 404 0.018 1.227 0.213 - 135SOL OW 405 0.088 1.801 0.927 - 135SOL HW1 406 0.046 1.715 0.900 - 135SOL HW2 407 0.182 1.804 0.893 - 136SOL OW 408 0.504 1.568 0.910 - 136SOL HW1 409 0.570 1.642 0.919 - 136SOL HW2 410 0.548 1.489 0.868 - 137SOL OW 411 1.002 0.796 1.238 - 137SOL HW1 412 1.043 0.764 1.324 - 137SOL HW2 413 0.906 0.769 1.235 - 138SOL OW 414 0.040 0.544 1.114 - 138SOL HW1 415 0.125 0.511 1.073 - 138SOL HW2 416 0.053 0.559 1.212 - 139SOL OW 417 0.189 0.520 1.722 - 139SOL HW1 418 0.248 0.480 1.652 - 139SOL HW2 419 0.131 0.591 1.681 - 140SOL OW 420 1.369 0.950 1.660 - 140SOL HW1 421 1.408 1.039 1.680 - 140SOL HW2 422 1.379 0.930 1.563 - 141SOL OW 423 0.815 0.572 0.325 - 141SOL HW1 424 0.822 0.483 0.279 - 141SOL HW2 425 0.721 0.606 0.317 - 142SOL OW 426 1.657 0.604 1.206 - 142SOL HW1 427 1.619 0.535 1.268 - 142SOL HW2 428 1.739 0.568 1.162 - 143SOL OW 429 0.252 1.564 1.744 - 143SOL HW1 430 0.222 1.621 1.820 - 143SOL HW2 431 0.245 1.467 1.770 - 144SOL OW 432 0.671 0.464 1.269 - 144SOL HW1 433 0.637 0.375 1.239 - 144SOL HW2 434 0.697 0.518 1.189 - 145SOL OW 435 0.930 1.678 1.465 - 145SOL HW1 436 0.906 1.660 1.370 - 145SOL HW2 437 0.960 1.772 1.475 - 146SOL OW 438 0.473 0.500 0.191 - 146SOL HW1 439 0.534 0.580 0.195 - 146SOL HW2 440 0.378 0.531 0.198 - 147SOL OW 441 0.159 1.137 1.466 - 147SOL HW1 442 0.181 1.076 1.542 - 147SOL HW2 443 0.169 1.088 1.380 - 148SOL OW 444 1.347 1.059 1.234 - 148SOL HW1 445 1.371 0.996 1.160 - 148SOL HW2 446 1.257 1.099 1.216 - 149SOL OW 447 1.302 0.855 0.309 - 149SOL HW1 448 1.216 0.824 0.351 - 149SOL HW2 449 1.298 0.841 0.210 - 150SOL OW 450 1.759 1.747 1.154 - 150SOL HW1 451 1.820 1.777 1.081 - 150SOL HW2 452 1.721 1.658 1.132 - 151SOL OW 453 1.252 1.731 1.128 - 151SOL HW1 454 1.336 1.736 1.074 - 151SOL HW2 455 1.229 1.635 1.146 - 152SOL OW 456 0.083 1.258 1.022 - 152SOL HW1 457 0.078 1.257 1.122 - 152SOL HW2 458 0.000 1.217 0.984 - 153SOL OW 459 0.688 1.662 1.716 - 153SOL HW1 460 0.632 1.743 1.725 - 153SOL HW2 461 0.740 1.666 1.630 - 154SOL OW 462 0.903 0.086 0.133 - 154SOL HW1 463 0.954 0.087 0.047 - 154SOL HW2 464 0.959 0.044 0.204 - 155SOL OW 465 1.726 0.135 0.523 - 155SOL HW1 466 1.799 0.118 0.456 - 155SOL HW2 467 1.695 0.048 0.561 - 156SOL OW 468 1.388 1.573 0.477 - 156SOL HW1 469 1.455 1.585 0.403 - 156SOL HW2 470 1.348 1.662 0.500 - 157SOL OW 471 0.130 1.794 1.851 - 157SOL HW1 472 0.089 1.720 1.904 - 157SOL HW2 473 0.194 1.845 1.909 - 158SOL OW 474 1.280 0.927 0.672 - 158SOL HW1 475 1.340 0.846 0.674 - 158SOL HW2 476 1.320 0.996 0.612 - 159SOL OW 477 0.830 1.273 1.422 - 159SOL HW1 478 0.825 1.306 1.517 - 159SOL HW2 479 0.744 1.292 1.376 - 160SOL OW 480 0.672 1.616 0.154 - 160SOL HW1 481 0.681 1.626 0.055 - 160SOL HW2 482 0.632 1.527 0.175 - 161SOL OW 483 1.650 1.720 1.394 - 161SOL HW1 484 1.703 1.730 1.310 - 161SOL HW2 485 1.623 1.810 1.428 - 162SOL OW 486 1.841 0.175 0.963 - 162SOL HW1 487 1.880 0.090 0.927 - 162SOL HW2 488 1.743 0.177 0.944 - 163SOL OW 489 0.263 0.326 0.720 - 163SOL HW1 490 0.184 0.377 0.686 - 163SOL HW2 491 0.254 0.311 0.818 - 164SOL OW 492 1.194 1.612 0.031 - 164SOL HW1 493 1.200 1.519 0.068 - 164SOL HW2 494 1.135 1.612 -0.049 - 165SOL OW 495 0.822 1.002 1.372 - 165SOL HW1 496 0.862 1.001 1.280 - 165SOL HW2 497 0.832 1.094 1.412 - 166SOL OW 498 0.916 0.910 0.291 - 166SOL HW1 499 0.979 0.948 0.223 - 166SOL HW2 500 0.956 0.827 0.330 - 167SOL OW 501 1.504 1.607 0.044 - 167SOL HW1 502 1.412 1.644 0.051 - 167SOL HW2 503 1.542 1.627 -0.046 - 168SOL OW 504 0.372 1.288 1.490 - 168SOL HW1 505 0.359 1.381 1.456 - 168SOL HW2 506 0.288 1.236 1.477 - 169SOL OW 507 1.614 1.292 1.289 - 169SOL HW1 508 1.674 1.295 1.369 - 169SOL HW2 509 1.539 1.356 1.302 - 170SOL OW 510 1.039 1.098 0.696 - 170SOL HW1 511 0.969 1.051 0.750 - 170SOL HW2 512 1.098 1.030 0.653 - 171SOL OW 513 1.014 0.236 0.971 - 171SOL HW1 514 1.006 0.200 0.878 - 171SOL HW2 515 1.012 0.160 1.036 - 172SOL OW 516 0.590 1.487 0.491 - 172SOL HW1 517 0.632 1.429 0.421 - 172SOL HW2 518 0.546 1.566 0.447 - 173SOL OW 519 1.709 0.385 1.381 - 173SOL HW1 520 1.782 0.454 1.385 - 173SOL HW2 521 1.737 0.310 1.322 - 174SOL OW 522 0.255 1.348 0.290 - 174SOL HW1 523 0.159 1.349 0.263 - 174SOL HW2 524 0.267 1.401 0.374 - 175SOL OW 525 0.105 1.013 1.726 - 175SOL HW1 526 0.028 0.980 1.780 - 175SOL HW2 527 0.190 0.983 1.768 - 176SOL OW 528 0.672 0.203 1.489 - 176SOL HW1 529 0.762 0.187 1.449 - 176SOL HW2 530 0.680 0.208 1.588 - 177SOL OW 531 0.075 0.345 0.033 - 177SOL HW1 532 -0.017 0.317 0.004 - 177SOL HW2 533 0.106 0.422 -0.023 - 178SOL OW 534 1.440 0.856 1.398 - 178SOL HW1 535 1.383 0.908 1.335 - 178SOL HW2 536 1.536 0.868 1.374 - 179SOL OW 537 0.072 0.166 0.318 - 179SOL HW1 538 0.055 0.249 0.264 - 179SOL HW2 539 0.162 0.129 0.296 - 180SOL OW 540 1.183 1.335 0.119 - 180SOL HW1 541 1.084 1.324 0.121 - 180SOL HW2 542 1.217 1.350 0.212 - 181SOL OW 543 0.613 0.842 1.431 - 181SOL HW1 544 0.669 0.923 1.414 - 181SOL HW2 545 0.672 0.762 1.434 - 182SOL OW 546 1.493 1.767 0.959 - 182SOL HW1 547 1.526 1.831 0.890 - 182SOL HW2 548 1.559 1.761 1.034 - 183SOL OW 549 0.716 0.565 1.708 - 183SOL HW1 550 0.735 0.630 1.782 - 183SOL HW2 551 0.776 0.485 1.717 - 184SOL OW 552 1.450 1.220 1.633 - 184SOL HW1 553 1.441 1.210 1.732 - 184SOL HW2 554 1.546 1.213 1.607 - 185SOL OW 555 0.390 1.741 1.560 - 185SOL HW1 556 0.299 1.782 1.558 - 185SOL HW2 557 0.383 1.647 1.592 - 186SOL OW 558 1.674 0.883 1.254 - 186SOL HW1 559 1.647 0.794 1.217 - 186SOL HW2 560 1.675 0.951 1.181 - 187SOL OW 561 1.225 0.325 0.449 - 187SOL HW1 562 1.290 0.251 0.438 - 187SOL HW2 563 1.245 0.375 0.533 - 188SOL OW 564 0.594 0.745 0.652 - 188SOL HW1 565 0.644 0.830 0.633 - 188SOL HW2 566 0.506 0.747 0.604 - 189SOL OW 567 1.777 0.342 1.642 - 189SOL HW1 568 1.760 0.373 1.548 - 189SOL HW2 569 1.693 0.305 1.680 - 190SOL OW 570 1.730 0.934 1.517 - 190SOL HW1 571 1.768 1.025 1.532 - 190SOL HW2 572 1.722 0.917 1.418 - 191SOL OW 573 0.859 1.374 0.016 - 191SOL HW1 574 0.813 1.389 0.104 - 191SOL HW2 575 0.903 1.459 -0.014 - 192SOL OW 576 0.661 1.790 0.953 - 192SOL HW1 577 0.615 1.878 0.940 - 192SOL HW2 578 0.760 1.802 0.946 - 193SOL OW 579 0.859 0.956 0.861 - 193SOL HW1 580 0.913 0.887 0.909 - 193SOL HW2 581 0.827 1.025 0.927 - 194SOL OW 582 1.083 0.984 0.087 - 194SOL HW1 583 1.060 1.037 0.005 - 194SOL HW2 584 1.164 0.928 0.068 - 195SOL OW 585 0.221 1.314 1.844 - 195SOL HW1 586 0.156 1.241 1.823 - 195SOL HW2 587 0.225 1.328 1.942 - 196SOL OW 588 0.079 1.240 0.653 - 196SOL HW1 589 0.078 1.193 0.741 - 196SOL HW2 590 0.161 1.212 0.602 - 197SOL OW 591 0.672 1.391 1.624 - 197SOL HW1 592 0.594 1.341 1.662 - 197SOL HW2 593 0.669 1.486 1.655 - 198SOL OW 594 1.824 0.192 1.227 - 198SOL HW1 595 1.820 0.102 1.271 - 198SOL HW2 596 1.827 0.181 1.128 - 199SOL OW 597 0.428 0.424 0.520 - 199SOL HW1 598 0.458 0.352 0.458 - 199SOL HW2 599 0.389 0.384 0.603 - 200SOL OW 600 1.705 1.487 1.104 - 200SOL HW1 601 1.612 1.462 1.077 - 200SOL HW2 602 1.731 1.437 1.186 - 201SOL OW 603 0.317 0.547 1.280 - 201SOL HW1 604 0.355 0.488 1.352 - 201SOL HW2 605 0.357 0.521 1.192 - 202SOL OW 606 0.812 1.586 0.687 - 202SOL HW1 607 0.844 1.596 0.593 - 202SOL HW2 608 0.733 1.524 0.689 - 203SOL OW 609 1.424 0.214 1.112 - 203SOL HW1 610 1.476 0.149 1.167 - 203SOL HW2 611 1.375 0.277 1.173 - 204SOL OW 612 1.001 0.034 1.154 - 204SOL HW1 613 0.938 -0.038 1.123 - 204SOL HW2 614 1.094 -0.002 1.154 - 205SOL OW 615 0.770 1.330 0.301 - 205SOL HW1 616 0.724 1.243 0.318 - 205SOL HW2 617 0.861 1.327 0.342 - 206SOL OW 618 0.618 1.567 1.284 - 206SOL HW1 619 0.613 1.649 1.341 - 206SOL HW2 620 0.707 1.564 1.239 - 207SOL OW 621 1.352 0.052 0.168 - 207SOL HW1 622 1.387 0.011 0.084 - 207SOL HW2 623 1.262 0.014 0.188 - 208SOL OW 624 1.300 0.453 0.691 - 208SOL HW1 625 1.241 0.533 0.695 - 208SOL HW2 626 1.315 0.418 0.784 - 209SOL OW 627 1.593 0.221 0.882 - 209SOL HW1 628 1.509 0.220 0.936 - 209SOL HW2 629 1.595 0.304 0.826 - 210SOL OW 630 0.039 1.077 0.300 - 210SOL HW1 631 0.138 1.066 0.291 - 210SOL HW2 632 -0.001 0.991 0.332 - 211SOL OW 633 0.875 1.646 0.337 - 211SOL HW1 634 0.798 1.611 0.283 - 211SOL HW2 635 0.843 1.717 0.399 - 212SOL OW 636 0.297 1.897 2.033 - 212SOL HW1 637 0.346 1.981 2.012 - 212SOL HW2 638 0.359 1.832 2.078 - 213SOL OW 639 0.903 1.948 1.995 - 213SOL HW1 640 0.954 1.949 1.909 - 213SOL HW2 641 0.959 1.906 2.066 - 214SOL OW 642 1.889 1.596 1.979 - 214SOL HW1 643 1.870 1.500 2.000 - 214SOL HW2 644 1.856 1.654 2.054 - 215SOL OW 645 2.183 0.943 2.104 - 215SOL HW1 646 2.265 0.982 2.062 - 215SOL HW2 647 2.156 0.861 2.055 - 216SOL OW 648 1.934 0.166 2.180 - 216SOL HW1 649 1.917 0.249 2.126 - 216SOL HW2 650 2.024 0.129 2.158 - 217SOL OW 651 2.064 2.147 1.498 - 217SOL HW1 652 1.984 2.207 1.485 - 217SOL HW2 653 2.054 2.098 1.584 - 218SOL OW 654 2.169 1.925 0.618 - 218SOL HW1 655 2.158 2.019 0.651 - 218SOL HW2 656 2.164 1.862 0.695 - 219SOL OW 657 1.937 2.207 1.895 - 219SOL HW1 658 1.845 2.179 1.866 - 219SOL HW2 659 1.968 2.284 1.839 - 2.00000 2.00000 2.00000 diff --git a/examples/methane/md.mdp b/examples/methane/md.mdp deleted file mode 100755 index 1c8bded8af..0000000000 --- a/examples/methane/md.mdp +++ /dev/null @@ -1,56 +0,0 @@ -; TI/FEP mdp template for solution -; Note: this is for Gromacs 2016 and later -integrator = sd -ld-seed = -1 -bd-fric = 0 -dt = 0.001 -nsteps = 100 -nstcomm = 5 - -nstxout = 5 -nstvout = 0 -nstfout = 0 -nstlog = 5 -nstenergy = 5 -nstxout-compressed = 0 - -tcoupl = no -nsttcouple = 10 -tc_grps = System -tau_t = 0.2 -ref_t = 298 - -constraints = h-bonds -constraint_algorithm = lincs -lincs_order = 4 -lincs_warnangle = 30 - -comm-mode = Linear - -cutoff-scheme = verlet -nstlist = 80 -ns_type = grid -pbc = xyz -rlist = 0.8 - -coulombtype = pme -coulomb-modifier = none -rcoulomb = 0.8 -fourierspacing = 0.1 -pme_order = 4 -ewald_rtol = 1e-05 - -vdwtype = cut-off -vdw-modifier = none -rvdw = 0.8 -DispCorr = AllEnerPres - -pcoupl = Parrinello-Rahman -pcoupltype = isotropic -tau_p = 5.0 -compressibility = 4.5e-05 -ref_p = 1.0 -refcoord-scaling = com - -gen-vel = yes -continuation = no diff --git a/examples/methane/methane.itp b/examples/methane/methane.itp deleted file mode 100644 index 8ba0f0e4b2..0000000000 --- a/examples/methane/methane.itp +++ /dev/null @@ -1,31 +0,0 @@ -[ atomtypes ] -;name btype mass charge ptype sigma epsilon - c3 c3 0.0 0.0 A 0.339771 0.451035 - hc hc 0.0 0.0 A 0.260018 0.087027 - -[ moleculetype ] -;name nrexcl - methane 3 - -[ atoms ] -; nr type resnr residue atom cgnr charge mass - 1 c3 1 MOL C1 1 -0.1068 12.010 - 2 hc 1 MOL H1 2 0.0267 1.008 - 3 hc 1 MOL H2 3 0.0267 1.008 - 4 hc 1 MOL H3 4 0.0267 1.008 - 5 hc 1 MOL H4 5 0.0267 1.008 - -[ bonds ] -; i j func b0 kb - 1 2 5 - 1 3 5 - 1 4 5 - 1 5 5 - -[ exclusions ] -; ai aj1 aj2 aj3 aj4 - 1 2 3 4 5 - 2 1 3 4 5 - 3 1 2 4 5 - 4 1 2 3 5 - 5 1 2 3 4 diff --git a/examples/methane/run.sh b/examples/methane/run.sh deleted file mode 100644 index 042fed8709..0000000000 --- a/examples/methane/run.sh +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/bash -gmx_mpi grompp -f md.mdp -c lig_solv.gro -p topol.top -o md.tpr -maxwarn 3 -export GMX_DEEPMD_INPUT_JSON=input.json -gmx_mpi mdrun -deffnm md diff --git a/examples/methane/topol.top b/examples/methane/topol.top deleted file mode 100644 index c61cbd8aad..0000000000 --- a/examples/methane/topol.top +++ /dev/null @@ -1,15 +0,0 @@ -#include "amber99sb.ff/forcefield.itp" - -; Include methane_GMX.itp topology -#include "methane.itp" - -; Include water topology -#include "amber99sb.ff/tip3p.itp" - -[ system ] -methane in water - -[ molecules ] -; Compound nmols -methane 1 -SOL 218 diff --git a/examples/methane/type.raw b/examples/methane/type.raw deleted file mode 100644 index 3900d20987..0000000000 --- a/examples/methane/type.raw +++ /dev/null @@ -1 +0,0 @@ -1 0 0 0 0 diff --git a/examples/water/gmx/index.raw b/examples/water/gmx/index.raw deleted file mode 100644 index cddafdfed3..0000000000 --- a/examples/water/gmx/index.raw +++ /dev/null @@ -1 +0,0 @@ -0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 diff --git a/examples/water/gmx/input.json b/examples/water/gmx/input.json deleted file mode 100644 index 070c9f12d7..0000000000 --- a/examples/water/gmx/input.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "graph_file": "frozen_model.pb", - "type_file": "type.raw", - "index_file": "index.raw", - "lambda": 1.0 -} diff --git a/examples/water/gmx/md.mdp b/examples/water/gmx/md.mdp deleted file mode 100755 index 2cd3e2a592..0000000000 --- a/examples/water/gmx/md.mdp +++ /dev/null @@ -1,48 +0,0 @@ -integrator = md -ld-seed = -1 -bd-fric = 0 -dt = 0.0005 -nsteps = 1000000 -nstcomm = 100 - -nstxout = 100 ; != nstdhdl (in case of -rerun) -nstvout = 0 -nstfout = 0 -nstlog = 0 -nstenergy = 100 -nstxout-compressed = 0 - -tcoupl = nose-hoover -nsttcouple = 10 -tc_grps = System -tau_t = 0.5 -ref_t = 298.0 - -constraints = none -constraint_algorithm = Lincs -lincs_order = 4 -lincs_warnangle = 30 - -comm-mode = Linear - -cutoff-scheme = Verlet -nstlist = 10 -ns_type = grid -pbc = xyz -rlist = 0.8 - -coulombtype = cutoff -coulomb-modifier = none -rcoulomb = 0.8 -fourierspacing = 0.1 -pme_order = 4 -ewald_rtol = 1.0E-5 - -vdwtype = cut-off -vdw-modifier = none -rvdw = 0.8 -DispCorr = AllEnerPres - -pcoupl = no - -gen-vel = yes diff --git a/examples/water/gmx/md.sh b/examples/water/gmx/md.sh deleted file mode 100755 index 0053261cfb..0000000000 --- a/examples/water/gmx/md.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/bash -export GMX_DEEPMD_INPUT_JSON=input.json -gmx_mpi grompp -f md.mdp -c water.gro -p water.top -o md.tpr -maxwarn 3 -gmx_mpi mdrun -deffnm md -gmx_mpi rdf -f md.trr -s md.tpr -o md_rdf.xvg -ref "name OW" -sel "name OW" diff --git a/examples/water/gmx/rdf.png b/examples/water/gmx/rdf.png deleted file mode 100644 index abe8f1fdb939369ed45b1206f6c6e0e50ec9412c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 144634 zcmce;cRbd6A3v_s)RKrqNk&FSHW?|A5u)r;Sy{=*$SSD_DHK;(rIM_WElLzuMk10G z$q3ome4ihx(>eEje;>a;evhyFai4RH>$={b_jtWt&+&TuX{af#TfJp91qH=ArGxUC z6clT+DJYgVt@;Z;k>))ji+?RMmpdd!L6I7?X6EE_e81iJpynY8it`*46c>CbD5mhE z3*8hH=L9GyzMY_;kPN4wpg$Xtdsqs;SaC{4QJ!L+_+QNPxDfn=^6Wu92MP*4R^tCl zTpr3g;pG%c@^VL9KJ_)58`7Fj&(AKG_xX6^g2?UD0jb4w#=@`9B<|kAb2~iT?0y*g zoy`Yc{PmX;wL$SlH+r`N#(o>~c8G2$_V(WH?U>m_mF+bWU0(EbSNeswU9;^kH;spX ziIC_T%@3Ha2vA;$0sQ`=UCRCF_cz3Ulq`{B`11#}YnGY*`Mt)j4WUc^_`%-Py&5b2 z_@1KVum5Ln@Pe`DLxRqm>st+S9ees3(x2z&YbWa3eXETR4W)fJ^`^L(Ny_D2eSQ6_ zSFhf@dDGfDKQlSPz`#&WtO^B%EuXjG!hgI_m6w-)Jo?P4o=^QyWt23JOjC37u?bE- zzRK6H6(&mGzZb+;beH?|51XO0U&*(oXUAKQa-=);>(d;X`;=i7xQCsQk&*Sv9?uz< ztTWBZp`7>eHw128_YaiXuf!?@+B-Y%XVNp&#K(sCE?Jinxy@9V9&y1w(R=3lov>) zT%0wJ53>d;7@we-j44kwep4J>_v9##>|ww1@^a-{+R?xkxyrQ+9G1< zyG9K|8l@a)&eLi7_KHfjw#V^p7{9GGg`1n(Q0hSb$aNOQ{^q=T`4E0eviso6m4WL< zhTbqUip%Tk>yLC+usdg-Y0j;AbjTpjssE0Mm7$>_mY9{RyCyE^;;gZ;ae__?pG3av zNT-l_Wz*A>ucE!?BrM)P;6D1~;Of_bjBjkE7oUIo@8`ckNzNas+!G%ke?=Gr#WeTS z#QCqeLdAS$l+tVRYgoIsKOL{&%tvZg1={l1Q)}5M$=D;DGQ}x{bKKjCK7E?1lARBg zs#c7xPBhF(llR-$PBwjeo8kR@LQ26#=A&5S3pmk-6cnzQEO~t7$^NVBhw`Y1VO$Vf z{_}vG;4tyVVp~>5NL&#v6XB#`V6d>T;G+H5(7?{dw%IPTy1Kfqu5Mp+FuTg@*RQvD zy4bBDHx+moZ1lS6Dyg=2?}h9%_sL;?qk_-@e%E;IvS4=pW4WPPL-!B(7nfvM)mN66 zcZh9Ycy`-mzxVn^va@Hfoi3C?#yvZGo=SFRyU{$hzJITIc{q#Fe1mzkU$3;Z^w-`z$DSR@^SvpB z6YEwHpZ9|C;_vMc98>Px>LF%IrX5O|`O#>bBf6W7Gu@_9)UIM@wEL;z2GP^+_BM5N zSI4?a=IbsuJzn5$VQkFm+4Fv+tLiJ2>yJLt#6{_&3ECe{3rlRe>f__9KG&bss-~h6 zGT=2i{BbSd%efwZ~im8EHTaLlY%gb(L$T2@nK&w%cdt;`}6{ZZ+w{$~?3+LzD)NV0* zjNZ&1ZuOcMc~BS@7B=yi*o^k+mbH&rW~QQ~-SjgoAHFxXu$aV}^?%CXQBQZo)FBKd z8|K(QiMYjUkm=A>xrUyvTx9p+0CRTy8lZfp9BFiP6esT*>nen|V2e{HG&(yg?zX2P zQka^VZE=a>;^Jx-zI6HWW$M)6Q=3BLbyM$W=Uk*RbRF*Sn|Q39q;G0)J2cb;+dH(O zp~2L|Wb^y^rW}X%xys7QD@}=sF{<|V!#YMD56Kl_MxK-HCH{t0Y`nbvZ>XIOj zcH#z|AN`H>FGl)4rp8XZz!Yz`OFbaP`Q`if?|prSDaWN(u3TwlWwmnU)!cKvPTy+F zDk^vd1OysiD66SOh_ifeN;Ot|71aOk-u~pFt;FW6D80$LZonu(o40K*4^Kiw6gT2h zz&2_9i8oo;I+(1{k&(vSa|zMWt?II~9o^lWlo`UdEry*eVl{E_D@*A_)42x^f`_Z17 z^!|uDcl2`|Erzrl>Js&0t54fYwmp0H%=pc9i9LH5=RPwn9R2dOf5ukHNVVbfcOv&V zn>7{>E`+$L-jtG(HFUd5$Jm;in@g?+FbKWQ_VuM@;DBrPMg}^QAwg^AQuAQjf6MP3p-k@NF$V4(GMDmEf zm6eq>@sVBSc6Yt|*aw~VJN=DWj4fWZj}NySj}NqBsG9LdTHQwuC07(qb}|mJ(Ck#J zO&J;++qBx+#>V0NIL*TBZTMB%5u=Q)=~=OE3mczq>Z!|~AyUgt9VMIH2A=OsE_Cb( zRvjAp@}{Ju;*N;W)G2>6jYkLsvU3w(5NWo_xO2`ON%+u`@9KcTp+*UlSLo~SA85*9 zt(lCA_9Tn+1&5UQ)B6XF4GmSN^nA)lU^y9PeJET&&b<$3acz!XW+svQazul!U(d|Q z*mV7g#y#&jgIt`^%ij2;RLX_n-r)J2(>k_Fq??$I%yn3y_#FaC~tViz(BnFYAp??{m&J%0RnBfIjdv9E8# z)DIo1$Q;IOwXgIEpm zD~XNpG1a)Ft2Nv1O9c1G$TxN)Bcq|zmX?+&kxAFF_t==02meyAPhacx{q3cdRK+XT zZxKFN_y~!#{f_2CWsljh`jzXM4k{^~R9_g+UgqDYcI`sVi_qZv_Vx9xJae_aF{&tZ zCT`#qm>AUEKd{D5@5G4{o_s$JQIU&FO8jV4kk3)PHE6401I@*A3%a|z+plXF?QhgE zO!t^}dNn zf_Aj5SLNK|*yw(5vdx=Am6VmAAhn6B4}N~Rv`vfETaZK|-QqsFaeeBuX8{2Lp|wr9 z=Tw?9k?>rVRl413E(s!&zqqjEO1?+gt5^FCJ3BkgCN?A|C+EoYbxjWx($^>IrN17W zdv%qHp4n|~X4261_Vec+QD!|TapRq(L?v_f+_~p&<9v(@>lhQx z`gn?0;PW!dt}Xh&p|d(2RG@v5gEiB(wF_EGZOw~ixp z^z^9ZLJhwN($UcYeypLQGS6F>Dq4fz^|gQ$X9$Tj+2S_fSF=2|s3u5fpyz#}gTrnK})$@D}(Wu$UV-wHH&`>BXrVUSD)kTU#45pVP8SOX{#f{?i~P2|-l+L9%nYGnE{EX{K+tN!a`RNAN9L z$O4V2##gh6+^1J~#*io>GAwEo+&{-_#rXuW`Q1PP@OA!F#dc1I(eA@T>@%Y^>J7K0 zJ!f;wA?LVXKw~>8#w2s%V z!$rvzW z%~w`V0%i_fBsPf5RJ%WaF?0XNRMvTVs}*vjKt{1^{4YyN*yEIkMqG|?A3bs;lw~$r z#)DhtTZp<$S>`S-uCn*=@w40SE>wXroByr?k6#i*#hjI0fOCvf)J>FZ_9Q`5pQZhMeH%A! zL|8~SuPUw@ahdMVssR@DN;TUMYG-FhZBztAV*jMCJ|#Na9;NY>(bi0xyAzL5u1d#| zQAqmp@E^}Veb9@UnR)2&+uOWCgJw33nH4X%f~Ce!Bg{>b2J@T;ly9Hb*WWU|II!&B z^|L$%CK;Km7__Z@zo^Y86Gvi6X9r(VwHxDs)gzBboSK;!x@Jghu{)wRcWT}~VIvCC z;!8(Ytlhj_=37Tuh{RFl9eYA{s*67G0`4nTynOX4qf2^3WaPSt9p>idLl?~}Bg(oW zf|zBGHwmz@`FJd*^`_qmv&c859Hl}@N^?9;%!v~*)pDemnC-L9vjm`RH(I-Xy>`c` z*3p=9gyE7df&)Ofh`9Epy`2a~v|+pS1SKW)3%nd1pJilZoIQx3BE030S_$gyjnM%i zAzI1mvpMI-o=n^T+}Proj=YV+%Rcgcc=+Z$d-k+FUcHICV}6MMQFca`O^$Rmh%Fq- zl6AjhYrraU_vpU0v(w{Zl02~REcXjfeU`DivuPvdAk0}SE zv(8ms`F2-Tbe81@W%pr#VQkxB#pc{|Z^>k3@#3PQQ}c7P5}O7Zv(%dkfn>1ThG!8B zcE}XJe%(pF#UrtaUoTDG&=66K^ro#lZ4G&qZ6~=541q-{Eil(-WU>{N?)&!b3)~`7 zToc@T3A`M>1Z4k?WqibBaU8ny;D|;i>X!DfWq!agfasj(QV(!*Y9$+@1kFROIy5o# z1yM=j7V3$~>1mxr-NS-H`0-Vi*Z@W`wcxEowl_^ z*DA4H7UH@?txiJh^t%^0Z$PzzU1zZvbiDe$Zm7nBthW%)a^aNkZ!nJZ4ScOv;O=_B z8>dEXc$nj5y^&YaXQD6)ILm?akGkQD4sz&g{ z3kncNrJShj58V;I$uu`NJ&>1^lVp%}2GA0@ZQ%KM)Pv9d`~^3BEbNDY%WE8wS-c4UxAq}+b=f#eX&pEr;8AV90j zd}Efa&XXf$gL5GCP};iY>WNs^9#m18?n|#)%hV1|DTWdE14^A%R*dt zx%4|e?2wfs)z%)Fjq}?~A6k7{m|(pgr~^-iKL02t&8d~3odmv!_4T!&AZ%vary1eG4ZIOXu$4F+J9+gL6{G-ML-{d1K9Dl6&$-*cpmAYaTi=+sZhejoi>ax)Bl7m`TPvW^uF6Oib@eK%Xux&7ZL*&Ec=P3J=*j`? zdfq=og7E}dVYicM)24IyFaTqI{b!{}WO#X1l`YQI%a<>4ymzTBOs?b406{?!5=^y7 zJYDeq#p6;4{MvN1TYvu@&CguAw_5HOW&Z!`pT+2AgKReb>OS7=tQvpuXHB8u_-hk# z(y2vCKGal0$r7%)^ygH^bpHYae>404`zH%ej)3xu-CO*g;@a|`N9^bKoOHhmn#CW) z=>B@k|Cet-y9XO&$$S^mK-SNJE&QuR7deL7djo#E%yf`>$&w}9fBrh1X2S+(8o!r~ z_}zs`l-mDz#)U_U=g~>_tzS97y-4LPzKbp25Y2wjYWp-+%-i+W@t*VmCh(_R#DYKn zBw1=X%PR6ynZ<7x|Jib6nQ6>NLP`4l#YtX8-kUo1=Sww0sY5TG>izQrV>mImlDa>2 zoxO(@G*(hR=)t z>(7K@KUkIwOdM2GGgG68Im^z@PT4q&0$_M5hW}raWu}m%?SDy-5Ys3rXp=`r9fv9t zt4|L*{>OU)2Xf6xiV6vZNG!P^cHaEoD`|#Mae>rd{;xf@z~l*}N0Rauib9Q~f3Ge!1;q)oJwpGUnf-{^<<|dg z@U$M()YL`JcUTnyPVA#_GIRaU2O-@Lidn1r095A_Ch!btsw6=WJw!dUVm*^M${2vV zog5sU@$3&{8IR+0xW<)`m&2_Eszs&FAu-HKN$fcWAczb)>_eaOYsNO~nbudDDJE8eU z4Ah9A4&|C!MSdY)EJw<5=u+_YxqSH;GH$USjTZ9qdX@YB=4mw);@jqjMn+b$jFzv4WSn)f2Dgwo4s}l8jrdW$UKUIb@QB( zst@6F45ynQ>*Wm;g!t$qC9^vCiWBU4lvV=@0&t3#$*8tUN=j0R?GXPf&;8@wmNSQz z+0RVa;V8Cof?EcG*LB4D1c4FzTMLaM3iY0zSVF9K`0AfPi3okP=F3d4$#@IC)6pe} z6nZ8mYjg9ROuAqsP-s~5tXt3wfn3*=0E`$D`$Fp%AjQisv)VKHs9}P(N$0u@ zouZ-&LS+>tZnuM#^;P#hV7?!ye?au0lG((gjhaXA(FA_dTc0xi<3|)=!vk;08nX9pK6%CdHM3>a7S5H zlynGlFJMZr$^P@_bF;FXQMR+Mv$3{*9l$U$HD)!`h9YtTz^6EfvFwzsZQmkL-F<+X(nYL2FjylTe~T=+E$nXSfldxF_wjzVf_{a zyk4d?NdqhVhKLi7khqCGu<%vFAV<2-UmsHr5Om~<-PyC^PJQ9!y1}&vt*x!WRG4lN zwRq14MA7>Z2t+$x^S~n)6uE+W3`!biKtog13>P0h{QB)fLi+mJ)4~MADbGe0D0CUR ze=%$Z5EsC*)Dg@zU|CK%Q%knpe$Q>i0dre*vKJ`5)73lLbU`Nr1ozf=aB-%i#Pb$Z z{%`SeaiG_??kQH6j@L;!4mD#XWCNGM&zPcX}2G``ub+G z10VzeK-@rv0zvQ{zVD-1Pxd7aQ_V zf~q@Rmq>b-bikhuabW^$jS8EGGCNT>bw}eF0D0_gS{>~tN8-WMU4j%LXi|#kR{cOJ z1ROF+PJ@GuP2QaZuvVSY_Ce)x#($;+*C|O+tt404u=1e6koY><7t(@koLY!kyNzEn zNuL)M5jk4;8B*9*NyiOw8(^PE->MR^rEGNp7-1JTH-wBeBKk>ACD%5!my?l{(~r9y z!2{sD_%btwgoX+On%+xu?0GM-T)X&QVB$T449jy6ckC(<&~d_eLo;k4%l+uro1eaG zTR>=`*%O57c|$`@Zr!YkcKi{@pTTF4v#ne5b0(UV8axYUpyK&5XE}Ut%CYvUiIi|K zgX;sp+xCoxLc)jJ{6@#c-KR!-rbJvsx(_BA?jSVu#55!cT25*dJc zH|Z22@;!T~`@><0n(;pdTKQ$K7S2s2Xv`GO&#Dh2#Z7{8P|fAOwok(h$8Ok;-A=;{ zP66s2ZEbD!DMqbOl4Im9B_<{oXPv0Ne_$bM@B3HO-d!J~YH4Yys#=bHTGHc#({GqA#9-V6D)zSPJ7M6 z!{aM|17ReQFG66uJoV_%U1b>?h_rQzV5}NC?bi;$LFC)Cs!PE6yWu1m+vcmVhRh{F zkSVn52i`yQ_q-?$;>5^n_LhwvQOqm|>z@N5@{S+(%I%(*ZPsB<5YgvYwh)rH%dR4a zYiV$Ba-ME4_9Frh;9Rnw4>Dk{^M*JDq!(7NQ+#}U`-ZTB9sV#-)FhIjvzZW&0bY>I zuYWJ?aIC`c7mxskG8L=^CX-p>l(Auu-4a^JWNvBcV>3P2g~cIAGULeCW%&x+1_*;k zx#Cd7NvsR4iYW(y$H&x?=WILc4RO@6E-}Y#{LBv%Rwpx$Ulriqdo`z@?blgO=|xlR zH7QH7TvxNeb5NWR_7?1<4y9bb{tVVSYM2JJYTW>u)H9C{BTAm<;BHX?SWOVL+chAsPa!-2OFQ|E8Usf;q zOKymBp6b@Dx`&00we!zqUF)aTP?6{slVa@Gp5BkD8J&j>1!arWU(P5R=BzMb#a*PmH8Xm%QOK6vl|ylFM& zJdQLE%AS6g?v02DWAeAaRpisccc9~}zFM^)b25dNos)Rk9jOPca1pXpp#O+(sONb69SVP(P`gdI(bM~Rx<1V#nrGsTAv%8!asKY`lI~K>Z`6_C{oy?)2 z9jIk64pUXt0M!Ia8jcO2H@QmZ6T(ITxKNjnU%mQ*x-Ba;mHMg*)b35Rv?fhYI3XQ) zFJI$h%*)H0e#~W=>1wOL(a7rhhCS+0c}K&RnI6wQN;xsUEo6}(IKkvCcp%zc0ckK^CH(ZI8?Q+N>rAfW97nQz7QuW=gF9W*jVE_MdbdfjH9qv zQR3r1Ha2!m8GJ^8yUzn|zQDYD@SEJ;V0-QQbX&bl(v_c@~U~7lR1h`*RerSnw zUM?)-IRi%S{k|c@#lXBcu&JBw7#4aq`>wydiBRq3QCVD$-Nnnhbm>wDZVpZ@-M@jS zhHn(#>^=@ony)qc;ywtfEbbxK0{}@ORAjvCfeA<0FdLjS5Fv2TUMBb$(fEi^Ne zG&MD4ru&5M^Q}KK^RkSsu}|ZUM9oPxMJl>6@3KLLk~5<%mi+eo&u1B zi!AuBByBesrjW;0d#s?^X5I8eLyA+#`FqoqJU6O%W(J5 znk&OwN}P-t_)np2P#@>6MGS%u@<&fi7es-uVtF`>@3nICaI!v4OS60zBZq1N?hkw+ z8}3@qZF;~Ga~xo>>Do%u;f~lKnW^zsFNc2he?)xmh zi<2rD$tNh7=G6abxa^u(72(*&2@(0iZaFkH8ZVbJt1HU2+C$TyQ z?kzI~GAWp7_XmSznW4XbiYAmR@oyT1lPRvN+x(Pho;&G~hFLw;KR()i9btv_@$muS z|EZy&=PDxv(_H(n%7F^8Lfb#>BTzF6Fo-=zlk|@YhCqb}{9QvyS!R)l{f}y5e!y$q z>Rk*lkExnn2&#YHW4Xf7h4rdiL%9y$FE+4!j#p*?I8$vFcu`T&KiKvP+tBsfzvf3^ z?(+6SV&l?E+dFd%#w0_QCg+IWn#pxiSl*oQrhL($egPRPJOmj81_55Zv|=#zpy@&K zPr8~Z?Y^lMtPoorvB&ug3OZO*phSFvAOU%`&4y;<#>!~fLg?6w^#9w&MmNOctLwK4 zP90M@VJ^z_JIAa_wt4SmA5c}x{Mz=psO2>)QL0-Kov$MnDcQ}}W7b~Fk&>2Q>4Lof zi+YOLV9m7MuZS&A!c*L}H`1IkN$R>nwlcG5tU=2aiN(MyfRCVc0HXH%JNuPRt1ap=Z5~PdbAH{#y-y^k$z6fhW|1t@BWg84X-!(Q0KNB9(T{(JHBUH z?N>VVo|4&Y{lbU6*t^V>P>wE6{t>vB)b!09-{>tNkTi1BpvuQPy!hD*3mbNkY6H)c z-xkNXmJn4TPmLp{Z)@VNWjJXk^yVbpUv z7lo7DB$QT}%_K?$KUw!ynq7oa$V$L~FE;#U zP&FaUiU=f~GBp)JL&Jf&!W#?v@$jx)8nR1-&NUuT`Y=@E)f;B>-e)Wrk$*rHzCia&OczeOA9h`Mje>=edt) zo|Epo>8Zi-qmJvp3<(JuJp$v1c(zU1_o`2iuHiGxeiyH`)6UwIaELG+VG8vVcmWWw z#!Pep2-E7_G5#Jr@pe+sFqzt~{~ZV>eKTLKk? ztUn5zY)7>ihIAM$2NH9K2;%~Nx|Y~+$VjD~e@RVl^Z6;|Lc#Lq1;U!?t}AF3EbkO2 zR{iFVSz!*yAFDGcYT7E}E-u@=FrMvIUOUEYc>D@?*)hyX^4|4g&hD&M)0`YgV-DZD zFo}Q6;^q`AVo?*~8k=m=;>%MsrL2_N`P0p2qHIjx70CsY-#VNZytw$vD}=zduqk#& z!2l-U3@c8h`l3Oy^zNvM(vJgO$DOA36KCBlp8WH&jb%U;epc-w(!z zfYlsee7Nn_`mK^uuET8eOBptXmTAJwfbxLuWE zRToIQ~VXA@wu6uDSx16Z*9=jx%@MD(OLEies5vAF}WZrGX`DT2JyKup#yD-|# zTxjxm`BE-C@4|%(e{B}#wLn*$fmnnu-cb%tWa*fTssBQeD$UC=g;3cpDnc@ z^3nzr7t&)GHsv^cx+D5Z^5#aw}2-rzC(Lx?*`GD!7*&=}1mH*GeJ_Xi+UR1jMX5pLs5VZOs0R zenR#G#~kCR;~%^XYWn)Ugh-2@GmL0b>PIa{+J&Qa481Q3u{Q@6bR|4-fy#shOmmF7$RgX9&NVnp)B5vFx+=C=_PkOS()AGqtKTN;F70J2*eZk=TaQ zTHGA@-kcWx*0YICarXP}yJd?J@CK$uKn3Do>D0D-;28xm>XoMU{UdlXnDD?%=`mSa zfJy))Q@iSWNf5@N()e96G6fi9dnV9RU%B8a@@9S!kqKxA(lW9S?X69XXRtJ*U6_)+AV**9+T^amp`xm)3QD-- z-tD$mSAS_;>>M0G*IJx&Kt2s5(+${AKs7!&$QAI!h>iJ**|yNmUjbXPd(3z7BO^M* zXTvycJ{9oRf6>%-yv>wRYx?ndmtQ&O!UtXe^uD0Sok;jqwGuuM9J<#S^XARrHV@kt zlnaxxjdoQa`%;Cvd}0D_LUh4uUCx>QmXM+^7SCg|Fv|fPLjR|LJ7E?ZQ^G?17J_u zGQ#tNRmP8SH29z`!Q?M-v;`>*pcDACQt~3=I^@Ey=BJai8EI*s*?m!9W{!rMiDpcL z&TGN{Rdr)ke}&gXO1n8hz`{F?V2Q@Ynx9!{9X#l(oggx`aT|I7AW~ouZs*SfuQ`M8 z01gRpZN2dkJ#6qJf;1MiwY7zqhfR@UkcDU0+P!=CWPaS`&7o!bhhcil*>*Q>(IPEJ zf{`Ij=1oc(Vr$;PK}iNheXaHE{S@?*fh*K|bNu=F4Df)0CBWBVW#qn3 z87iimVQ~cRWw2MAnVm(TusNtcn^Il#{ynI6^Uqws*yL;xt!_CIv?W~wgEd#HNJ5I9 zM>m8XJ`37#VG`&b!35I&e7vRi{lm8xmMp!pe(NWg;1Kcsbu4e=L*ZimDsFmZxoL4v zA)({-H8_CA!8SQvpBy>&W2jn@*_5$;clCVi;=a?|mNG*G1w1%g^I!QGJ(@aAET5KijZ=9)jmro#iRVH5V5IX(}1o5YbI*^zAnK zgrp$)f`;jwisD$l;FI9A+_vi*Us)d0Ak*o0H-q?<*4O5Q^-EcaX{}y3)Y~t`s8Yvi zCzMz$RaAU~fZ%JZWoFii4Urx!+%6U9uJO9AE)#Sa_bv2&Xv@jTwckMp9i#^+xo9z2 zBgb@08NWzE{djFYA#+hdPt?}CvX&vZ|FSPDwVuRAw7J{b4s>*w+=CdIted*8sUN0i zy;eIoM{RHp+uyuqV`oR$P=37YSgxa5kTDF_ifA=`6TpCeifZe^02ye|pjv#iQGlq! z#n5wo7t#B=)fpd+z&;jj?tqC~%+tyR3WW|`*Uu(m7o?=5xU5(Pnak7D6JB61H0|L8 zY+9e9m;PwxNvR0um#(gzQIilvoH`>Qlm!u#s=3?+dX zg2e(xR}%%e$RG!gB5<#E*|z|;Xho`|7?q0n@;r8KaWpB?nvGGdm%aVa^a<(cVgQZk z=VoBpF(;bvVy_e9E#X9f`Z)ZD}dGw_c-P5B~G~=g-Yy%s$&zge6(IVg(fP_wtv( zUQZxFKqk5?>s0_bFf6S8+9n>S?@bJJblSQj3-><6oUXRiYTn9zGEAD$eVwFsY@J$G z7}K6p)X~`d7_s`BBiPxRacR&4&u{K6-Y1^6#n1{=bocZ*OOI?lu zdp0{;oOA^a|9vwhWb!vC4uU1fGSrgLsN@RwV$D$AsS)Hhcn)4ZAPH-=5^P^OG8#2T zgg!vgK_RD?BT<3u^?|8n<_oAtoS~A~r_LCz|9Op7qRDU}Pf~I;a zUc{7R?hp$&&SZe+bTUJe$f61JLfONeJ@e;Y4ZT{jVp~#_fx3Mkv)0Zgx2V$m#UixB zCr0(~dNK<5{S%_;i1Imgz@~4|Vg#(?E(WFUl@KR<4DDHWq}(|p8IT(*EBRz(jz2O$ zd3L!SmXy*Xmcm7E5SkFsPX)wc3; zqbUVb%8y&0S%h?G*|FV6Gs19EaaG*V;NT5@Y^{^prU;5_qZ?~$YXPuP5nKylXtx8g z!hW?61=a*E*hqfetc7mDdrCMELhx7i(%ii3IXh(<_#QmFp})gaU^KMVd;6~zFQK0u zH&==hGVvwmCQj$Vrq)P3s$azH2}}N0eBZD<&1Wyo=br2pC`)ZLED*QvWuRHJ@JKgk zpbSZH3c;e$)>sZe+o8{|W{)EYX&g?EuX!jF)w+LxPcl@DhUTFm3y@P5*M6`V^-709 zPImUH5-@1N{B!94O6OJy*$kOoIaGB4I~F}AB#ra@J}Hs zE7`p2W1M*CH$|It4_)O@SuZQyUz0@7`p*uRHA9LPsh>h~CL?Odu{IvuZm^FB zA!dK&58NM8gr?WEH{H3f%M+q<*2cmyqW8KW8yIDuotg-QFQUat%c%oR1;HF}UTl(S z&a#cJ&N>IQGW80g%vetiV3hNTrXhu8rnmWyaWkROE$M@$srKap0>(>9)}I!lI=>7Jn`O zx3qD>lEurD-!ErIC_!c0bua2C%%P;*DT-eMBF-uaQFG9y69>{E$tc$`UXuWkz|Ru* z4A9Y=JO&^|{|#jd|Kzi$-h!}wR8EzmeuYtcIEiRf7y6F;$l?C2zu)HCp5zafunml$ zuJn)QVVz(9D1!F9hJrhd!+Gb;att(o3k4VAo5yCAH#$hPNpGim6PI60MOM{IyY2V0 zQJNC&KWntR6lIa%Rw>UYK>faYg(=~YaopqBt&u#2QibN5n9V1)g<%25=`nvuF_NuU zA-eU;v(a2o6bI5qsM!OZU#LMgzP=-5ex3TzYB5g2zg?aWV-+rV$b`pU_1WKI$s;<^ ztV?X2_NQM4xlV~4tQcJ#yuPNh-2BvHDQ&+`;}NHSP!RvoCr9eCNI-9JGzgYp8}jI- zJ@A%eu+ulip&Ty32XRu6!;|fc3#2(Z6MK*(C?OnkFVDh#qvR^ORInV$Dgd z8CGFuIb`Q&(y6x+Zcyz6Jm>bP^1}JKJ&nrVf*gN~@)TNbQhD)gooQZ^9a85Gl4g@1 zyb2)ksqR`hCVSN&liTfUl7qmzXV2Rs>o*JRWja*qrNJRAT#Fl(5(-d?f^`Vx+P23j zQNR%ZZEVeI9?mZv9id~@FsCKqjt9%&n>UA`#lBr>%9a%i+V@f301neF*Px?O+Go=)dl$*}y=1Xe}+sUm_S~*}LEA;CWvv6t^!-(q} zO(S%&XxXe==*^ofmGPXLh!P#1Z0aqDZ1cdZ4Y$#7yWh8V(N54?Pphr*2#BjF4q9}1 z<|X|kqV0*DCcHnJaNut{4E#v2W;6wO9|+nh$DePUC!=tJ!O9`hb;vEzUed-Dwq)E; z^8pvgBpiv~5%n64ZX7#zb~=kBzy$msdLJ~;gC#r}kmTGo>X#FVan<=d|%R9n8- z;PUvtJBjP=DVaKQRpovD2nTOAa#cNPuD!EfJuDp ziy(3!NXsX&v9S--ao0*xVj`Tv8K|>Sh0o5R)d7f&eyR{s2-=Gkb}^P*62vtq0TU^o zKYs>e0!7Ceb}iK2oapspvmV8PRk7bEnBW}~;QdGR(6>loXP}RCYhb-P-WjjhK6Nj6 zJ<`4J`CCPOi+RMvAL4%82TS6KKV!q%mz%~d0P+btkiK7Q=_v(whJq5TIHg2^-ImC=IhEQoEFb~+5wHuL%RW}TebgXO)+I!^78pAJfPlnfd6_e1Fj7dcu)G|!Luj=?Yx6-9 zc^OXDS9Ntxz|;!-;YF*-u(h5>NjXdvT;}wPG5FbEq^dkS@dO%OxAy6lJIg9>J7$0T z)EE7fUX_3G%wsp^%fbJEh>e>Iw2*pHBoH26T+Rie>h9oyE)ZasZDr#Q-F?*hGMgX| z!B;vuJLA5MC!PXDAd{f<;dY1{0~)?W1_--xLjVepbu2GPreitwrgiD+!@_4k!ULNS zZV;Q};7f=D38;;hOd95Mm=v&j@IjM{qaq?A6oR(RqB~(Gkxpx+Dazazc0psw6xJ|43PyelM?L*JT*w7^olbOnO`BrF=)qG0CCZjJD=yjmZleUvX=z z(Zml}52|SQ!$<>l(hkdu8v)RX{So#+YwNzdg0f0VN3{b; za7x~@vEcW^6FNd|=A*5x&!hx=dVVHCbdsi1Gcw|~qPt@s%wdSr)Y2l+#JGI_ z-B)r!>40_g4$5ppM;o+njnuJEWqNA7cCKpuV{e29;v}v%^6*5%i0Ud0YvgeV`@hfDpH?{e< zQH&yFwNafq-lw}-w(6L$Wgv9)=*hQXLeCd#w}u^@BMPNc`_d8cU=hXi0*kF#w+@-v z5*K=b9e_(YW+O?;RZwUJZP%YuRJwdC`;xF`nO27Cou+krf@S>aTm=7oTMY(l@MA#fF()vRkPfd(1xe)ebuTHrc|a?dlNobl8hH;3NF@vG*rFt zd4F8xJ+I_=TBGxT@O`cF&cnenSL49Qeo1jzd`TM7*ZQZULbV&HKc+m2CN8k&S?kgF zT}JhE>g}$BKPv=6r~k9{>jI^8&VA-k3HPB)>d0U<{+pwe4j!@-Wjvjm7d~L&o|r#- z!UVQfJU0$@RC#1DDKs9%So7_*lTt$1nWL4L3r++tM$OUR8syJL${MADY^C5cu5H@= zoyM`-meM$B&bJA#OgJZp9 z@D)S&Hva4}3$GlJ<_kWpa-;VRWjw>{QDxuvRAlQ<&b~^EjV130DeWKg)K&KSaPaB3 z)b(n(S>v(S)r0j^E$vqx{-)~FBrafph^5Xm7&+Mn)q%@Vr7GxXv zoo-KF!GlHxBYF;~Tlo6VNsXkJsbH(VE#lxMlG|A08m*jb1A66uKCGJen>-AKyH!uY z+23&Z@&khlZ?^x>H{X;b>X3Vh?bC4AlZOi9ZrM|eN?FD=d4d%SgQ573$&Y`)u53^2 zx&%>MkzAvWI;bG@`obN;*ie+kdtSYUOwt23wUm@-UwryIDOO z>`m1pmOsRKowT^RH-1|&e)j2d+<#th09SLweOF*?))*1Lt5`eZFe0P1Zeje}|KrfG zjRmBz)!J8$U9t*l4;e0gO6BK(1lT9iv(tI3BLru-% zm<(h;*h`35PRRStq%&{0l*B($Ft7Pg{~uJZGWUAzkJ>IdK)eEzRK)~mS%mffAIXa!RcFn zOv&CvPM``f^&JBP(KVM7i3`89QGB2yFF2Zk6cbPY8*58}N8TUy?icdMD{c5FGbUWG zSD05#kK`$z-xew6{pY*(t;5|141y-Uupip8uP5v3>Jm*upk0hS#y${bA#MSJnuJtZ z_Qeu+XV{WRWm*~v4>d6dmIRTI_Q%u)cT6U;)ux?o8Fl}W|GZZ3{m4MWbCTuaVWEUr zUJL|8&60pdx1z8kd{xogQMupGfmSL!!H|xshN_CfGW7O(0=QKEhXJc;iuGa1R#O#2;DF57v=y9cqtHPU6wW2DTpO?qT?*t+=6r;ruXO@0uSDX@?1 zy=-J$1*2*}Egu;eaV84~!Q5hL_eW_O-~V&KJHw!CdtT-1O1CP`*%};Wab{C{$op{H z#kbw_ZlN6dgeDbK z4C!hoK&OIgo@CHZ_^@L6a=1#W-@GwL5s%fsopZmVqXXa%lK970uZ&?n+^H5JFgPaZ zjoZFJlO^k=o1yqbg$W}yPT6Wo%4*BNdG)^kp=+xsD+_jf1j~cIEfe@=u~c|1_!%P% z34|OJi(yxF|NRMdt{9!vsxj;|spl`ud!}lgojq-i|bB?Cpu=(9q z%^FUqk}5T?@5-v|?y}t`wZwQre8I0K> zN5btp0JRnJ|;?ZF?Uz9#X9LJ;!r{OP8x>!x`Vb@4e&ok8>Q3{aZQLTr-~etj}3l=6%JRz>Wq1ri)_b5Ed7SZRsgN^!4^? z9!$3dtQJ`JpvEuC$9SUTAMA&$^s!pVCIHf>9mW9;1;kl$!4U;Leq!Zwb~YqB3sIEh zJQks}jdCAuJOf`7h!EotTWA=?N$IOyw<@4EfL$;fn8Lvg1bQ@V)BvuBY;$#N^~8bY z2|6Jmp$}rfC1$&d1Y0}CJ*^4a)?%xq7+PhX`jg$i_AQKq=$-@VsY->>WtNZ$2A@Y2{f=) z;-jG8Iszb~C>nn40JBf)A0o`vAKr+qhfE$+C^;ruz!i%O*aF#@n zvmYPdpsS&(O5{X5kjDl1^t^>|#S7UfFiXs(0L+!GLvk4y!{8tgCPQg{NDIG*4L__{ zfWyc;2%m_FK_pR8S~;+V@qP!r(_x)u;o$y$Z2%g6cvK&BnWF+gB=f1c%o_QNKzkPd z;~55{FgO~>uEqVUF$sJZ94XADXHOrx(^&;bvANvWiXADjSxut%Z8U6?)Gxzb?H>&0ZwF|@2}e{91OQ&35HLS$D{{%(G84(BPGG>1rUW+;iC^foEEypzZV8bD@K*zLhHu}^ml4~A5M2FGFr66cu9V`69rnOApzCzesrF9 z;6`pVq^Q=tU&EItsdVle8$%-9;Oj9+V*%tsGUrh}4Py(G0=(QJ1XJSR!PS8m)Bru9 zBQEd+-a%KRH3lqcJ)p59MMW>6P(b&2UJ#xXNCTY%KwS)d=_&i{&!68GcGi>dWdMBz zj>zW=$%!$Zz^|&Kx!!l97yJ)siCrUTp#JiYss4{rzp^p^FH*ll#Q(F@?}A@BV_Kx= z6QD$iQ%W3p(Png|tU?eFKA;M~iV44@;|5{oZ?O4I5QOL`ZTOp!KQvH1J6)+7Q{li+i@YsF+i4Mpo5~KqM93V zB&Uua*IE5`n*o#M$OL#V3Pma*ElnC5RU2^e43LaeuZ<;u3&N4?*Yn4uYFkWNTc+V` z{#qDiY2GO7tnqDJG2}9=-9DI*0vL&u#ArNAPEa%NO*bJ3bmVaD@cOL(;-c*be^|J4 zhEDxo_6-0k;<>2cDFO@xZAAT5%ZVpXp3GNZ?xWW>2|M-3=@$T15pae4nr+*#nmb$z&|$@tdusqV09^VH(C416RNh~KJ@Dx{s2ocG zN&o@GA&ApKT)Y)@Kji=64=4nd>OTs3BMZTr4*+Yv&E=QcZASw02$o-Gxr(^uw-qiB z!+@s-s18==5ON9%m>!rjFg>8RzFFJ~cIPuCNNHRiHp8U9&Njnog*<+wCsa{8vskH} zZ)dy%ya!~oE?{^I#AsmfF!~s8Dl?Co;~XdWq%-QwYH4J!ogY2Zm^;(7tAH4L8%9LT?5sLpBnmzI*ZME;j zXxc>m-?tq_ZVNzgnm>Q(XvVgD(lE;VVYq}=xo!HtJjrW=q71FlNJ;Q3o?3uSUz=47 zc-b49z>7c|L8>HM`ThIl$tZy3jX53y3pm6EqP*D!kgq*SZF|s9Sg%R1hSjTfD*fG*RTIS z<%sok{yRsUmG!Vq1Y#Dx$dkZA;5zmeoeMSuow(mIs>KsjR2KQ_CGb?vfTSxV+b&!? z=2!C$%3MWH+XDo%R`b!H(Sdok)OY(;&uf@c6FH=aT7nhRoSYE7)liQ9V{eZ$e5F)i z_6I1s@ z`dE617eNidXJ^?v)_ib3=;v=>T;$*tl@a3+7+xzFTVHboV?RmD;u~P1QQ&^mUY%q) zl-_M;{^0U?>3HM+*rEfa7v0hP043K{H{PZDGU7}+%F5>8e^fZ^tQsNSv{Gz+13+}(Hu zu#4Xv>VtNmAP_eD6+$0u7RZ(6H5RT4DDj467v9HWubRQ2JQ5ETf**^DiY^&}S8%Fi z)~)Y%uA_pEYR+%JDqEf_2}M|(!d4fjy6C#ry$!yW-;%lL05tf2pM^qvt=tDXaAkq+ zba!(jWxKapNV(_xbOh9@=)=BUF-%vA4kHcuD{1kXcCmhhyBIqS8shF^(nA+GJS)Yy!hS#(( zfA#@*Lng5m4J=p*-L~Kqva(99RsqrZof1VXXY>rfqyRcG_yqjJHn7$W4aYDH-GDGg z-F-(dMSE2CI3)Y&IXM@AP=h2Q8i?5;!hyj_17;91c7!FpplQL=zgZauLZUYhcL-cl z0M+Y<>NQN@^2Rel-X-Ji+|R3D0R4^O+5lAm#p{z$eFo`zpzHX00FAy=EFK=|`G}&< zkEsQQ0u%-J;g=i!zCK0A1MdJWLvAW2_n-TJ+j8yp2|eDc$u=g>)#A~@3mXzz zMVXP*zxRJ3CP)YYPw9NJ5wF28?FtBN!W7F=QBbGdVtM}-MvDT+P-RUGQ+qT9#&q(e zjkA(1Y&QT)AtVQu!H5jzX%MIkdG1{R5J_;i{P#iOKL?GS_NLIL%SEZXXH8?{t3YIoyM1j^NCvE*0JtKY}W!Tr|l+iR<Iz2n-LBQ8lRcb1W5hnQ%s#X=z55f(DY&G9H4Oi+&LYP zn2tN@xYG67BzuMt<8E-hpw2OG`^jL-Pd^&_GlR@jb{sLmU`vIi9sdbq+m*^m-+8&;EP+MJIfEXC0Z~1?F&DX8IF9`YXS8c1OO4i=;AW#xpXUJ7H z=)@VQ`}gbD-!U^wN=`O!Q;vZ6vbdC#zVze4KXM4QTU`Y*C&hd!5WPsk&;qY zno428rS-V(_0BQsa)WQc=)ANBd>)+V{*m>qD4I`V5&N8^#(%RE{h__-7lHnu?#Cbp z?D{`u-LKz!5VHL59Q@_(-yehw#xtY<+%DiA)<^HFu={O>kOcB)yuZSj;au#t8F9N8 zvT(P03o3sP;s0CiSQhQQF>@+9RZ}hFMk$&p^(3U5?9l@MXm=-hTH33mEpYTzyA-O&Tn3^=>%@9q1|_4v5V7gMP^X^)h* z^Etgj;d{=_j$LO4w=3z#Ae?H^0ze*k3I|H5RKaxs^c_5817!5+;G6)8p8|kFP__q< z>mbI*VHk2I!W2xoI3uf|oDgHi+ANbk!KIJaBzK(fc<4?xT$TSf$Oc5CSGiJW(th^%HoA*?%c;?}*iseS7~uQwP6PxVy0*UonMIG$-6p6G)jeSordUN$wArGruCd<@$;;QEKafW zzf`pI^FX|L>uFuSz)6pz#@+jgQgg{9-SGfJ3of^aLODA>i8DQPQBNC<>W6nlbGr<6 zJK z6wEBB*E*3s0+;#lQVBbhYU5~%{Z8fGkEAU*aVaBWzFaS6l0cs={IK?R6X`%KdZ@1& zk{+Dr@MLoVP4v{97h>$GFLpU!YaNHXZu)9<{94Om!WXwrWh5W()-;n;>=7^x$9(!k{`u1%tHYHM14_)~ z4HJHT-YiSab;B{@oz?wXU5j`9`y7;)Giw3{PDHiqisj}^iJ{afPuRo-0E`{htp5YW6 zz!{-<<1Hpx@KgW*RH3xPS@{Uwfl)wV0}+IjsA#p!EqXYjI6|+;=*)JICXJ21BrpGH z2-Ea^Qr0chzuihTv;ueCNjz3P1Bt-oF*nMLal zii5fSJ32}U zF)pkuImMi29&O~^{9HyQVud3>f^9GWZsG0KlO1*ETp#d{{AL()nq{fOW%F}NUtyyL z?o{F71?_T8Ul$hRIV$SQVr)TNDx(>!m*y7;Q(iE9V@0;}<3F1<`(_|!4Njg3=#h7a zW4_1r)JbS9*goL2|BtC15a7$Z;d{?vSZ$+X^2*60D<+OyH4mz?*Z;HaZ&B_xbT$56 zDM#cuf6!B~nJBr`JP>KC?`PW?2!?`rduJkN!z_G;n(m-$%E1<8WkPDq#qmaVLj_B!8Vi%zEU9XOk4qy=pnbng@s` zv@h;4As7UP(|NlV$8Cn4`n*`m*`;ya{DB*7sPp7(Mg~qZ|FLI;gbULb;g^e4_wxs4 z%xwG*lTG#d{b!qHWA?tZ%F7K~-)+mEQK_(!&wNl1lgxU4W@l|LL0DjC0OwuQ#C%zt zT&hAWazzYz#GgBjC^0QRq~O^ZgEruuw;@IcZacU#ilyvN3NpwaxNk}2e>m2L{ml9l z-GBbLC}=GlPHSbCZTTmGd=TV3$1%bG{3V@qD)X!4sjgwevN=rw0C|K8Am04vXgRuB zMDMc@*l+5W%{9M+>$K|4)Ci810T#CY(C)?t)!T0Vto?qoKZ(6%? z6@{={P%*o+Tkp=s0uIGtB3G=+GelKlJw5iJO)jp&3)-}Sn|WJr(PL}_o0&cjddh`Y zh9`|>4LYd*t3^Lw@`n=e%e6Mjcf=HeIYoM3H;L|8vG2&=C=^(|0n;M|ko16Ng+fe- z-oSGXrVvAd$UJ0c9Ssa(;zdfpZGad(B&5N>MM2yNa`IW@saQK@*;nxdhO z_y!pOV1#qZe z!b)%I)czKIs6g!lKIk=Js0gB>pisNgj~(j{ORzt9_rpY0EAlew*mMs zrzj~k_Tzdx;aaBUtLiYSbb;%pd8hD7W58jG!A?f`zxT1}uk8P{0W! zAm5DA*OdCf_=lqX6Aa40$o;NKm`wfu6cFso;4uZiH6dCYk>V<0T1~kJ?3Rnc(8OGtqq>? zjU2*L%B{AFEH%H`rzX*nPA^R5YNldjiJr3t}A*KPvBLMuFhffx~uEM_gCH9 zcL(0%4jM+?Xvp{G^g2oe6#yvxOb@)&+Mb{&VUz`xd!fvjn6w{kGhY`$FUcS_Ix2UA z8%1A}bT7EK_J@0nz*Povg)z~Bxe7{7VDv;dqJ%=!%>ypt#E=1ABFv64LrxDrdaEH0L$q$!)eid^+S^% zll-s;gG@LpiA>O?529GU560!HH2reAC;prnC70IXQlsFAzj#AE^pDLOf~j@-tk8{2 zz_7^Hp~O|87`Um+Z&(4^_4SYKNs=PyT+-`8OX;ZGCk=IUfEqyOUIe`H`N3QKlenm;PpXWl=&{#;`-hr3k49XRGxd|qhmt~7uBPKv zN`-5Raaeqz7qY+^@NmDH0r|uo1%)3Nu)SnA1pGWL9u8F=`QVMIKYCFJF}<>L0EoS9 z=mN*$I@5>V2(iCds!)}rUve*J^agqs7`C$hvo!?+0|Owlg;xME!8Snm5N0gT6d=KZ zJkw(bJ9{G$;*-@rH$ipKpG}8U@W%|yn-`IOFTxw5g@c7+NxtNI7YX`$7TDL&{-f!) zm@V*6+Gg_+x|yU|q&D6bC35s8@h@dv&o8&TIO{MPC+@G6f)wBO~JL9Yo} z^X+IF1NTVJvyh$yxCO-8-fx`)UyXGU^Ca527nrvSuYQGh%7F+zD$0_ahKA-bHcDCQ z5vD1BLgi3*el9e+G<|`5D3Y#@B}{45Y=9~p3Iv6j+&nChI0K zWQZ6s@ee$knD0j2b+AukZ>AX^zeQS}W*}cdEjHzz+nIlcux#aN(BjE}{<~y_d2=w| z|9GnAI`ioO#5C0gwTnk92YN*e_n=a5;9@{GkF28hlofY$Mx&i@vz~UzXH~n#o?yetbO*^ z>Ggqu+rC!RxouJnvNrNNEss8l^ql*8)ZG|T#a2>KKm+flNSFpYIS<%pwl|o0c1#>?Dh#0u@KpuzLFx+_d@j7l6bTy*LfL%v zIjB<0ejxhb!GrIr7&lFJv?+K64VvJVpsO6-O&>xt@Lb{L@LR$PRT_LWdW?-mQ5J15MTjb(CWxrWt^uU{5gOA0ZbJh_#R z_gwl&Nu$j?I9A^x4dA$H! ztU}5u|5`&R41mzevtRHoBu`2cB+j1E1KIpr_HcfObXk6#vZv>>u!rxZkFF`*U4NCF z1ju>NRJu|oQ~Mo4ZP5N>rl*mZO4ja0nOI`tVID5vH&0%bb~{NVf|+`0+CiqyokFjU*{H@c+w_Vw`RCJ@uC{(5T)=_74!<( zv0^VB-LH?10%m|RcvwfJaHZD?SR4Rk_XTPcL2>rvTImA1u@wQqd=}W|Dke@=OxY1Q z=?TiIY$*sRc?BzE0SKzv;^jq9lVDppqfrjWu_XtxUq?RmiGO4!D{>Dh|nIFkAqi^%)Wv0M`P7 z3{XNBAxjRc1o?FcGqOHDnG2~)AgUUJgfo!0!G8gOl(%iAp8uLy1bbq)HvZR{&Bph4 zo4*^{js8PwxBak}PE^zqQOt=5_T29|k^!Es9Yu8iSiWr!qrz4z1W{YV> zy}sX(x!m83GP`%Y%*W)rVGxozGe>jGBEESBi#Yts-}gHhXOfZ){l&ZI2Gr=z2p+94 z`^ME){GCW>wm7ymyg@z(=VDz)>&L`Sj44=z2`OkZ_{uuD~z7Z@3f99F{w|DAT|C*}a=$`N`f(r9YNHL$FZugq*{)=I6&v z18f#wCDUGsC&SfSZCpySmVGqH|kujogr`nJqOMo8}3_67WDP0 z9U@;MTs=Fpw){4<{4!GbKNkTRu`~lebq|)p{4@!5$C@}+Am8RcR~CU{5WB%_&o9W- zZYFsq}) zY`&p4b0?k1O^(>_n2)nD5DCS_59Zm8N@>JIN9NsJ;n&{Msez$4L)HC(mTqRp@b8y` z80gM2eBv#lJLm6FTu!ul_I?VLPv}jk8+sYk-i^zbgJ~LqsgAZo2mR7+H#XvI4Yjl4GBARX~8e{+Y)1I)7 zd+WD?OYRY_(`r_MDIp!fThX&4<%Pd?PS0bMN6`1{zOs3_5AB2_ZW-i5ap-Dk*nf{U zb|#DNkbj*MDH+N*I-gHmdT5py@t@0}6{@Z%c4MUT!wu26uZ@qCttkk$-q-zC|IW=O zSxgp|5+|5TpQsa}CBq*%GxB=<%@S+nzOw|D*S60jT4;HO^IGFXH??AJ=dE z^KyvUH+uH_^l#$GblL4!d^}b1OPifV-k>=p*AGTP3NrcrpG(bjwtiu^h zFK|+mUP7VOd!ejBmf-f$6|fF^3+oPG_rhmlzy3=zFjW|1^*u(v66kX$g=)?D*Bfss z$X4b$me>hn`;3N1+|GwUtfAJpv|emZIG8e|O~ILNA;0*9-(`V?6J%JL!0QPo{m!MY zfzJ_YAaj-!(4jpUQG+b1-^P+7Jr9tVysWrCgJqF@>_^XdQ*U7(-gRCn>Q)9pMtPqI z=#`an9_;5%&xomp8XFN@$5(bcu8nLI=GT`QW%8G+d4DK^z<;Xos{ZD3(cUIkIZ$T< zF9r)G_=$5PIQh{T=AuY|oymVngNsv;kyE$# zFMHfn#CNAsX=`yzPd=bMQH{y}Yjz4OrDw#IQcB$NHSaE8s*vl&>KIm&2X{yO(k(@t zWet9$?b|apFNduTnh=hahD4TFKNVK?h1JNQ4=#KK7jRn(xmMiPUWr-KayP3@s^n2r zy4*F1Vq`SXZg1P$oaNjDAF1G8RAVi(fyQRUfePm(E0;Y}pyw`PsE&~|U)zA6IYfDs zM@n{)_24LDnWSW&SC9UU_t^UVeA`7~Zg^d`L_z5?Q3(1Pqrn4@lKeeGiyFw%ksU2J zWKIlnxQHZvP2Rh@Z%>z_KT56~uC;xX*Zg{|Uq<+{E=Bj?o*gL5=PCovseFIM`cUGn z!>@zyt(fd-Nl7o9T2DS^$xKPLqJA?;TDG1im}}4A)gl}WU?sjIi(rZaj{}4+*KxSM zkD#`Z!pRZat{gd48pAA?zez){^LNAC?q}%VMj{{opxZtb4y@|=G=f3CMYc+xPGy?v zIt%DldD`NPvFP2I=$7)d47xLQwX>&Yy3Jb;PLf|vi^W-mG!J)9KUGGoGbOcTM~SWt zT|g$o!iKQGO~U?&ZhIlWcXRGxNGvoKn&YaN zM|W|&b#;3ku84lBH*qu_3COe^e<3V3$+3W&;fVeQ7BH!W{pRb*5L=v&Ia&aaPuYPNMuzh`o5>rc+1{nx8!16 zXB9G2f2P|@Bui((iw!B0RvH$rGo|5uIgU!8s5(Q}_H9KU2LcP1YQ-%3t&m(%8*ZRH}e_ZHp1bJFNIYDh(S{w#{ z9k{tsz>3pye!Hh8x{=*ow05zH;`YYt9QvYDkQPX(dg!p`K%jZdW5gi*m;%?hhxDGo zB{lLhyo|0#r7LEpJ~H^p3C$-^CP-@tEon<+x3ArmRorU4s6mSDjY)i4zs>&)wQ@Wr zwq_u^VWed>MrKcSiE*JVI)^x04>Tu%;?hQ3%D?y5AkSgVi9?$BJk!FRrI)j();^<% zgoN*61#8)uiXWtNiKI&@WC~n-QI-3Ioba(9`9^H-v_7{>x6f*%q*-6%L9IFM zEdmLklblY1s=u|pMwm*R1DK}UO0ACXWl-Ga#R86o?Y?p2j~^CC-+ zt%0nbRCA8J8n=r?gk&>XmwC}q7BThed%qvIXmGn!yPiLGCwHq~-`)Ls{edvHasC{e zLlJBXKO?K!rtZn78C$`@Ta0E(0h}g8s1#_oRe!M8lnVR7sH7xiuCmRp1{1PjZ40E! z#`B&t2@m6xZYYfgXyy#hs8Cb;k@K6qWWl;uG^cj-k->$|B8sPXNqGvdmTgXYrk;GN z9Zs>XAS_%e5v9cpTtHbjTXiG|-~g|${F>P_^XlxagJp~hXEZ1W(B4N}Sw+8G3H_NC z8L2%K?&W>NF$q#tEj3d1?YtM`rt4CWc^ufKlY6_n%L%PR!ly?<=y`7EZdp2_=|#WT zzHf=2RsO7E*4!zU>g}*O*hmJwqxr|1LMFn_{8+xdacA!m7^7v6-3eY>*0^gP{w`3y zNOy^5AE)(5b^m7#-U13~v(x-`#(@&bMXH>KYYR7C?^%VRkZ#JSchl7bPPdM-WT(E| ziVM1}PFf)p>>qY&YdAM2^>B&fujyC~Oi&jOFJ5$8LvVyFjy8a4Q&jb_(|Ky*^W0ou zQJ&LKMEAP_26Tp@pv6XFWcEHwf#E$1w}{`4ujBV?8hyNVv}g1oQ9673N-kRaXkY7C zO8-E6*E8YZb4!THJ>N|^20j%ImQKBu(hobdVD#HOg-n~M8n_Qh8Z7B6ZwZ)rCnYkDwSHM>S1dn)xJ-;ifk*YdWjE(b0r z*09xo7f9U|Zl!k2FIecK4Q+^JcgAJ($@>NtL8@iG1?%0X`1^84$SX{{Ladq#A9iWr zUT0wv+1{b_j?X*{3`0+87&G*oBSg6)!UY6CRq7)HP6QMRjxP1DiS+UDFj_X3aj_9& z_V)M0JM=6&sJ_a=O_>xbc*VD2gKg$av?kl6wJIwqi;h@eo`xG;pfkz?wZ&>V{6lrm z=SeDA*Pts`^ixr8%Xh8xqD80_BvM?{7b8>Wu1HXXsuUJJxo{`{DyCn&-!sn8E=7Tt z*5+?>z5@lUX-CepH+eay4AVJTuP7i@1XNm6Ym6)EHqx~$$*}(a_1fdxCa9S~Q|MXH z&;`b~X+wng`v+*|o1IM-Zl>fXHffY5R9& z&HQ|aTN82Kgx6)u{fSf#Tit^rF3VOndpe|lGeL$?xIJ3vF#EA7;(0bjJ_X7W1JpS( zyWlQ5m4`J|CDrUye#Yuu6*!%1y`ytOtlaYnn1Z|OPoD2^K##7$9ihmlL}{&~WT%8G zqdOwanvgcu)wE}QIP+yTU_UP`WQy8RWjm`Jvy1QeYykGjIkFj$s3=`8ZSy`5DaF+a zb%eDQc6FnHwH|jH8R&Tj2+JDihDF>;x7p~Jc2BEIF0zn%Fx{ioOPS=7I6{8=6tU3* zZx5WN967k{6?0z@bOAw5ieJePwM!AmwmW9$0LIv%6c=4!s_7Kz70QV#8+d48yQjlP z8wdj7;E^LHchVQAOV)K)<1fAI6@Osf?x5kGMTS6m6mBIyaGtIMbFl!|Y1Z#fdl7;M zYgru^=0)v_^SfGwe}1Y$Q5{MN`>b;(E!*Tp0!EBf2Btb&?U79n?QwGjR-)~>-b!R} zkE}1OY!5_qnQvrQFlc~D=GQ+DTFTTm={PI0YdEuvP`ORea5`H67Z-W_*W|3XS@?}x+qCB$wVs?>rSX!8h4 zwAnEmhmlET@vQQ3#i*f@LSw@)tAO{Y^LRqvqa&_F++N>EB#!2Wg z)%L-Ek7y)vHo{D8*0b2g!oekY1LQj({hcnF8|zux?@F=+V$-TqkgfLr777|6p=_q1 zMH)s<#CX+6cXl}srQ72=uZTXC=PrWpm+q!DSqiRqY;D{MCS}jZUK(!a5wTD;#9 zNuG2s=Q2j8HU?Q+IGL}Qy4y;?DXL48(R9@WSH&%Por^b_CZksQp~XW?o*WM^diOAB z4>Z$(ibn?Top9$U9FCEq zIz#REYFb4rTmW;4+)`(oakg@0Eio%7;u$K^&gl~3FM&aS>=aVZc<6lw8&;rswxa{^ zPl_CUeYBQjs!J8#5|uV3zoqWlzGAQ6YhFEnuGFGcXl(>t&wPf%l^@RGp3Wp&* zn5(P9va`jojd12j#a;FQha5Wfz^{n6EpGS>({)#k%Y3CQj$x+!m}KYllY35dT^6mG zYT(Zcb?U|3`za$mN%nPx>e8;#4R5&Ij}UNU*V-qzuA2tCTuiri?4r|i4qc$4vl_i? zGjv>8x5{ML4_jZ{3|wSy3b%K)G7Ks-o*M!Y(Rvd+ijTb(M9;Z#5cmfM@&Hx|kQJEn zWuWIWgW4&8mWp^$K>mph6aQ0q{?OvYe*N^xaP{yb%E)_^TT)^++zm`k;d6Z>i}$b_ z;k?{>?Ds+(N>=#{Z0tww z+T#olLB12#73(qvezxku;V-bU3p8x9&*(kET{v03049O$8jACG7i&j>j9Gi|u0Ish zxd1HZZjl-QvirAUK2R5*1%hDi!d(6{uGhv|Xnt648ny>!R6mg*z;|jx4F~cDD_(oJ z`sD~VPT&I-2k7!=WSXak?@Gf1y^|>gGfxPpav|Typ4;!XxVSi2A^=n!0P7;FNj#vB zhljSL=pCho`>a&G-OsQb+-HIh0af?{N{#0+PR|w-7hDiO=ZbQEZ_%g_$pL*fXbxI| zS1GSP(uRDT4FBA%xi7Vf${MFUDr&bT28Dz55B&tHkaSGoSpU*|Se093eRm9xzhOBv zPfDvcArq(7cz$JMII%C;rECV_WhA>KW<(fL(uv{c za_`Z`jr2y1-)BYs4yMo}XG?Ue=*OR(phlJ?%rP*$k8Q zA4PhW(%}*~J)wB8*6%I=k-nEwIt;&ETU#6HmcqavE)V-KxU)(O)p$iQFU2$} z?}x;$YwyP?N;Yix_^|>wm85`t=bz4Oc}<*RHFOZ2^8&hZ7n6~}oO(h_^JWR8C@cZ6Y@pKL)?hZOL_8vmR7H@qmPD%$^zp3P_nGSTpXKz*F|=rRL80b z;Q)Pb9PcW2nOb{jFR*lO6>df6&HP@fYn%r4t26c`>b813J+_ztjouh2o5*3Jad_@! z3)QqmQnX&sw>blR0ClMR`ucjLpD*-xeK>o%u_Msx{xJYDeD;jkmtoaZNmDHc{ydl$ zB8t;~&s>I9koG z3PtfJv!@PYukp6}(`wm0qo8Z3^*VA5bro6-EY*&cAQm*uyDwn3CjN#j{at{njD^{2 ze%A@J>og`JV@q1)fG2{dKT^CATpx$xVt;dZz#8wdUYc3MI`}@7YeTi!U7&p3NhFru zv@Xmqd`#dD2(g)~Dmkb*r#7bC^SkYHAYds_Q~g~m%z3`X-=Crb$iG3+zh?dg7?Y0W zn#M*n{XPtJF^v4G^C-I-#zV?>Ht4XM%!rfmxsQn;ekXNqe<4JqIX7J8osY{T!GWm% z0OerQWkl?(*J42S&%xURCnob28u>h48w0Wbd_CyKPh6(U^)Te(BNDaQ>IJIPZX|Wc zbu?S2+g9)LSSiblrG3cnB|cjQYyfNpQ|TW$;j!^rAVz?|I0C&8aeE0hskJ2@juq1w zDJUYxS`67ez3&&5R;}1?MtElTuOpR?YFfz`u>78W3@uQI_#9$c~uRHr1q5>9OISq=qTMh1OVlzPa@pM19`ThG@r>W0?WR>vk1VpHkf(kHB`5Iyp zipk&q&c|m8hGYTgUdxhI^J6-{uEfe`9+0tIxemU^a%D%#35-ZR_M>66!2?44l92%Q z*Nr1Vx^Kv@7|Htn;5KbbLXtoYd+2a5=p}K}VKV9i!ogv|P_AI1Y+H2xWtwx=Vxkd| z=J&N=4?*cdNv7otFEzZ%%gZaZw6U?-04ip{{0yr1JSac%S%ozoD=ZZ2RtBIoIwBoA zvfpRvVBEe9^fXM)1;xa|%)|=#5vQ>^xYJTQq<{f@+A~}D(MT!!=pC)Od{xuQuw&GIYX{-AUHMpp#3o=%zy}kD%~?zjJ^RH9hjC%0NsgsatDn)*>|pN!JDwbErV~;%@q+h zHfajy>t_u=raqdiMb$HB38M99Q@}RN$0Z?m!{MKn9u7Hy6il@p1&Kp=ttubWjOQ$t zUOa{D(ezOrX*}9Q)VqZCT8BGB zKN(xeplmlbC3u!A)yT&SVq=eWr8SF(CTgS zY!lvO{bTA5!-*oq@*SodZ7kJE%@7PdwR{KL>&w?WLrynXXr!T&hh(!xn-7PX|7Erd zFO&I&=GV#WkoE{4)iv!=0$8a~hri+D zqy)qbP%pis4k_4@na6rNIFI=HPyql~WUxEkCC|=BXH2@+i>E#-B3ABUp@$u>X-JY= zc&CNWPFZM{W{Snw(EtMk4#2_;RCL})YrkfvUYr($4BUH4Q~Y56?}>M)Q}Q#$P6aq_ zyci>3-!y6y+0(1!X--x^m!#RN8?SUg{u7l$P4vpqIF1l&!>mCKDr$9>+p9lAz%KL6RmYj zB@g0*FS6z-ml|2ClQ@=>kyQk?b~Amy3~-{awj=tr->8y7mjqlh1koq%vpv|%Y`>H@ znWj`c(2xL;nYJH7=K$JbQ!dGa%`{$b-bt@1JhwFgf3~fiFZJ-om5^pu(L{dk)z9T> zYwu%}Nnlr+lB}^N+GfQ^_HJDAR!m|$C?H4PT`UdvN^7Je`Le^(q_TTvEsIu(wF-+? z$2`xo1ASYiGVaPe5zXBVI4R29m7-GWLa-qMiX5!qOXt}kVYN@chGSr^Bh>t|Dzm1^ zO@x}8D>?}K4BTA%aD+wzIO=`YP#4o zh4kzh?0TaXEE39q2Le;3`C2EV71!BjoM5m^9d*wR9JO>dnVm49Oqg!ynY6|&u=MT% z&l(`$)oUBI?z^2*kUxY(9BH&-WhyxWKJVIU*jmxJyCid1Qv-}~hmf(ndpKcww<}Bu zb1rb-g|w{%+P$0V>6p9g|4f~fs;!pC%dsS_zq_89%z3`9fBNr$!w>RsGiKPGaeW9T za@v6uQ0tT$HG6*&Y~4cp1)XH)u^&{ox%!p{97?;?r7TDG4EiZP52TjtWc=;k!BHXL z^{1dT9j=-`YC7UT^qjO6RaRhl-~c#~yn#5Wu-=u5n6?6DfbOt9{2IMd)+;PMvQE`b zz1*xUb1@-L%7dEVK=)h)B^wrF`*?UKZy8^oWMc*I(Zx)j`P4I99!!nT>%XzyYyVTC zFEcl8^of)-5n&v}^`%|kY~arKq22Snz>x@Z%o8{hVE2xPp_qJFA)IP`QHR~7z4GIG zvMX1a7$Y&E@oYA$65R5f+g%>x$~CyvT>Ek)3TlX=G!Ncj&Z=q?occ62Leg3&lp($( z<4XSHlI@!83T~Dswr5FWwYK(|i(Clo9S?kjY^Mtq<*Ly!Ib%@42Y!^~G_H8m7Eebl zxKs2-%oVd>)6z6M1NO=7*?>|g)FrqxD0}iUH@YFqM-$y_EFDW2hcMl=d0mSZ0ZWcT zlWH@4&$m*1D**EVQz_~F>TTndyyB`QVbM=b9|cdzBJ83lZtLef8mkgMva(dvbPAh3 z@Oip@a74Qk8u;A(Bmo(?r0OnF&{Pq|PJDy;f|6(4%k>Z~c?G+^nAihc_ZENMUi<8v zgH0@7Pv4GP(pY&Y8$#xlyNOyp0i@X4?Ws7V(qofCm)hzbmOL&)u*+nh6R>Lv_7?gd%H-;dx%D3>N*<${ClDC^#?cbYJaY5?~ zWZul0sO@>9QhHal$f`b60OC96?;%dF05N<49(hBQwv-SCmBIUA@dd}OMF;)hmAYq0QT1jQ=Dp5FfM zL(m<3&x%<12-9mXMI1?IYKXm(8i_x@u)tZOT!>C-a6L_8Bei0B565#awv&hXdc<)h z0*Owi8sg80FHEAm1ew4i1{RF$Xe0?OTJ#Los$8dR58Y}lc zhx2ecjqGk3^W-J3mUXxcYiv2De7T=eF}}gLkeJvqNg! z*hMSe4xp}Fd~Ju_n6y&Y^UKs!)|OMuTeAjECGhX6gxqzW=NL5~VDbV|7!_D= zQcmY0tLci-x3ZhS;y&TvQa`z8tn}?g*FeXkl;iDGa`koKcmc!%)@Por3I8H0N`JLg z!uzOe_nz)NuLbUBddJ(N$z+kus=U3JL_IJ4t*pumLFH$w8d$eyVJnO@Fhu>Z9?WPoyeIs3y&RgFKyiX|W+=P-xh|zR{u`Cj!1ZA|MRNtwfGSVmW#b zf)cF+scTKs_wxE|GVSfQ(w;f?fj!CEll{XBx16*)%lWO*B`<_S`luXzoybGxR(f;8 z%p>QSjvjrKd%oc1MQZBIG`JeT8a&x9Z99Y&9a^ZZ#^#hxWLk|C_mIcJ@^GDW0v%HM z?hL_Ozt|Uo8XwHff~YfP!Ljp|4#Zbn(&%pA({Zg-!Qch@4o-adlBcrp_$@iOJ*=N) zf7W$zCM%h7)|G7)$q=;O)2Y$Y^VOF%0c*PASv48u5ir^%h99ZlxUE+z?5)~k?e{Bk zh5r2Z@9q{;lWx~Re+9~V(4WxJb(>>i*t?G>9VY0`hWZ<*m#clGG{7`_I74|+vd@#r#QPnX}m)|`Yx2k^l_lXoG4 zB}^})7w>(`a66;gHSQMaq1@+06F0Hmlw$wyDPFOwp9Ndo&XTQ_KF~go|7G-HRl#WZ z?mH?!(j!OhInXo$NT3kKABY<($F2-SJzwIxE=zA{ImkCWG6sM!@Ij?j_&&hL^D`R4 zWYpYw7mCxsBxA#7fgkJ9Y@cPf=S#@r!xHnLqmFsd6_;nbbPX;r_L(J&3;iU`*|7O0 z8nMn(LB{PgWVWYMcPGS&VTomfa5&0JGb-c}BH+O4AK*!ku3HekFvO9P8`*L|Sf^a+ zu+1-=2tmCbPK2(+Ifc+@r6)IfL!ug&uIO4ePwc-FfVeAUq^C4J!Q(>Z8Yc-!QjKfa zZ)>h^tC0OirhZ(h4m69iw}`h3%C)->@DB({!%PLPNTQOGTpHassfY=k3_JPuOt#oW zi@iE9$yhc^fe+S}_F&Y#wvqJLmU=^9se~_daY{Qm&I-AAYEm!cOF)Pe508d?=U_*s z_9D38+eZs!a6nCUQfWM`hsJo6oGYbhhaaZ$n)4*B4S@^FX`2AA5TAG4S3$;JbFwg1wda2>lfR zyKS9Ddy9|j^}PXfVi$Y)F&Qw5>_?`ok=QO3cIqBZTuGYSgf2BF`}|E_C>OiZiGIWY zAH>ILN$VQ;&y9Z?G9-W-rz87o5q6rgzjmh?$AdgrMrYHvp&M`a$Z@Ta6&+%AjpA7l=U za0Pw)^6!a)Qt^BbYvh``4&Qy0VJGxu#2BZ3nxk1Rm&Wy1L+th6)E%yMvRloV!5uhp zhMfaPs*mD77|1%{#v9L^V8GBYWgtFuugE!{nh1rKDH2UZhrDS`-7U=zV*SDlK z(FvXz?hk63&mrNwRtlT}T|<=38s}#>`p`*WT>sAK?FjZ&enuoXGX;*=&E1{wtDm2F z40S8L-5%7`eh)j*r}HcO6AlufD9%T;!A&GY$uMLXrTm7t7Ly&da82pL9)n2hZ5PJp z8pDc5f24+FW!BY#%D3I$^6&xIj3_Lrd+)Q)+H0?P*Snl+Dv&$DQr^|8#x@L|-0-j0xGz&6pnSNC zc5`D(kwcX1wd;chga7Q5^pP11I0!qvujb~l72}>qy=%-%1Kd7hAQF8mU^!kd95Gc1E~B!Fyb{_*K681 z@t;ldbap&=pWQ`JnY)#oV%deIBGy%C>Vy2WDLQcKXPTb*#z^K$v&ZRVFlQkqil3M0 zGW*|qtpCWG{+B$0Y=^^~)t-VTLd@CV4VhsHM-s+2=9}L?GbV#s0xt3e{HG;SJH2Z8U{Oy`>g$9<`PoW?WM5EPi2LnVjJ3{l%4nHk$gN`fc0dEI3lHOMC?cZZJwWWW zWov!Z%iu2-^WMKg%kO^!i6q_^1k$N?Uq%qMq0!K|?5sgeMWxd_^Cz}0`mi(JBqky{ zyN3vVHG$i)Kz}hDjmSEoUwqC)1Iw9J({cX835oC(&7#;38)2=74;^Bf#@$shSxTz? z&-_OoujRqwzbu@5#jl@Zp$pOvXEV5?F>+__0Aos}*g0zNqRo|LbW}Y#rj79GDzEdy9hwig`N9e|^FOq0eBjs(gop<1i(X|Rsm}>mycClaVi&)T88IRKMF(W+w3Gyp= z)Ee7;l?)lrJC#4Eb2y4!tMa))B|viM+_w+6n@LF-A)KdKVzi~9P;%(c7d#*!8t?rQ z#is9FjxXO^OCB?nAImBhT^I#Tc(93+#?ATWs6(dNLMH6^P=W#y(utYWEV9q~&%^%K zeaGS9;x(^dp_sh&Y8Gd_>D%*m)k=#NItvF2n}JIV!{oLO*AUhoyyrb#^GU)*oabtu zO?$cFjFUw14ShorJl^=!_du&icuU299?!fON)i^}q^mFIx}hD| zcPNfinZhl-f<$L9Dye=d$pzLdG*B{2@@sZI}gu`|gIO6aCWv`%6X6>6>ku0j| zk5wXmIX;FsFM2tCG&3Z)ul>u%9Ad>cPUDRp9v)@dG^DNSGb)cNv)MWD@9;!^*A@KE zI@1?Zz&c!x{%F`)p?so$5P_uGaWWQ9s!X~mT5oK{CXp%5@^Nu>gyy7ad6}b2&uF|A zBEx?~wL`lnm)vYAbz4F}>8JpE^6xd!uJovq3l&kzS{=zvTj7g4s%X__dOiL1 z;t38H{L||ta=QlMRjrIi%2vM@U=6*QJAm>8yrySQrQhh)vqfp#jQWSe!!_pOe&|bH z7bXhAS6^L!_zEXv2BN+?TuE3HURmNmtDc*R zgcTg1q$4K588ztNz=wK?g0Ji?BD~;%5ggj`0B$nA{%;s4iyVu16O420@=5C=QM9aG zzc-i$t{DTBD*&k?{&xjJ2D1osx;V@JgibL8j^LluEvsSuc?QJ?!>g*-^^~lvpt#{( ztHF>(A0#Z!<2ONNVONsH;***aA;WrKJA^aWwK3%S!u!BCE+XpA`U=LbZcoyJy58xk zsC>2Cs#*^Re3dn!0pq8~yTZiK^lah7@P2lZf)k4QhDIi3UP`MYvq{UvZM+fm{q3)> z_ft_(jf{=AO{)oha%xCNzaYrL>s_nnJL?--@d-$)Zx@``3CwEqJ^sypbTb^OerwGz~HhNDOh0ImbkUYc^rH+(oXDo}Y-Szf!0q@i9 zxa$Gb)}z?iXZrSfx5*1h%Ajq?`W+<*^GW5s?Wb#8Yi3bQM=izw3SHCcI42v~v%H}w z*VNTk!+an`aT0fPFfClkiY{n-{)yLrpN5MR9d0NS#SDsISd`K8S0$jTqu5eXKHIxD zbp2v_a~QJ%xN?v5v_B5P_waikJG5&P*~nhaFQSZ>6KRt?w=fEJ>w#B+DEF0eHZx1~ zwzo$chwGyGU>e|;se+KeIl!62@J1EU*>``xef)3)%x_r~!&zKdIl_VN83E&yUCu&~ zUYFTDuEs@~ddGY_bp;f27`<`$e;@BH@f50jeL$E}KN{4{%ZNg;KV>k#T}FXN+sDGC ztsnYj_rG~d=rgGGIoj$k;a}h~$!;og!0$!j+7&+z&8CTT&_w6|JZG^AfMMjc===XD zqb)QQt++R5iuC*F)%u*BE&ls-_KpiY-LRhjD-9np&Do_`(J zF9k`v_-!6SmBY^5uHyD>=)fdB*ITewFjw3SZ4IDFb(VF%J2a61T*>Eme*trO8}uar ziVlRI1Gr9rqFZ@!gNSIrPg=xxGCmtk<<(9c@AX2OB?;<3_zg zcD5vbiT&H18d<_w^CvdC0?m+28{^6V9jFex$8!u7#{rWGt;(TC0Pg%rKVSoeVs`qrG2j?hXMp7lp<~f=8VyF_HtHcmkAr3;+g>Q_pfzSo z8`@>%JI+CmD(oStx1`Lj^AcnQ0Cxi<5wqn!1h@p4mCCuI`5%XAc(sC_;aBtqvlId= zTG}pQE5#7?P5oU8h z5BQ1=y$tZ;w_!gBO*{*FWdR)&L1IbiG_* z#;un>CwrH9e`x8#LW$&J#TlTEAFD^Akc}AI=Dq|jp`G8z!1qfz5N!8QzwtrD7 zQ`LXbdDMCv;_BG6y88N(j1ao3fJ{*B1K@jstAz zYSm{)s41OXzwcoIwIy$HDj^W#WRtTqFkm zfQf<*4Q|kBMc;Ly47#mBAAmlyjw}Es?a!t;(4VR3+0V-AY6*~VZzgDobpsEq^U4$$ zPDBTdL=^K<>PWZ@Ps27tWoBSv!J{w}l3vBR=Fby3y5on-(2p*ca=2LPz4>%rgl8xbvW#^0jqxoEv&u z_#VA>mjDz~>^hP*9UTwD!&HdQ)(jr1q9V~uEnKXEMi}4{9rT7iUE3BgNzt5J+B`2% zi>0i4b|YOGV{bS(I5;^-;IK>H*>sm4+f-5jh5y%y!Iyzlu9E2hEM%f-;Kh&4$Jzi%ZZ>jNf_v<(an~ zB^XQqg1KVvh5!iWHyNyBa$SmyZw>)c3giJyBk*%6_Z#b@`4LTNjT!Fz+ zMg&9a(|Ipw1Oiz8*JgL2=>_PMM`g@CfGWKC&?Z#ZLDMNaT-@HcQ5}}HMyYAHSjkDl z8wP!%b|?M%$i(jqgb35^HvNc0k>W+!FeJAOFaIou`AB{Q@LI(6gJScRD&jJ|H<14H z0N%iPa>zax$_p}pBn(*A<-C zW~0~;99X4#iY{O=HANkDJgQOeHqd?oPM>gBVa5&-Wzt@^=860vik`l$)!63%r8rM8 z2-V)bCa-!p+anHrB}M|3K|e+SnAR^YakWOUo+_$qp`01|@{TP|x4}-w^;!W8?OI5W z>r(A?1*8sv4G&(-Hk=Fqk^g7}TBZ+*_*jgPgqY&z1Lf{mkhr+btkUOTJLoQz%$=|5o&B= zf(d+rba1I6BD!YO*Mr1Uqo$}ia|=csADvbf6{jM2D_-kuwuu9xyFndt*mq|*9O^A25vFBn(8~I7O12Mkaj<dCo!>#>JhQeNjD|${_DjNN=~T81>B*0-cPM>_sb>|WAq;CnM6Aov-LCGzQnZz zw>&G%i^6_IbYNAO)V(_hEVlnGaVXBMqaQMA;C{+~K49WAOWA*yhd*cHsor515?-C= zZMwaalr#}rQxhh5*i!)754o8~sR7K}X*^2f;hjVPHv z62}f*e{5;>!lRIfNwtSnz^p0V!+1b{Ho|G1k!yLv!thRM@uME#X}ANyKOB zV$bkqx|41x2j17{YOpck;Jm&GHU2;kn>>Hjs4K@h=7dQm=#InugUW@)Ul0g!~-mYJ#Eecs`Y9;!c z%im`sdqLFXEI7jm!JM(iL( zJzbf@uy`3!m&@~rEqkY=R354@Sgw315P?-#{E3E$(&3A`$FALwPNR!@AZb;Hz1c9_ z;yy=%8R+AmJDR@^xVV3BI&`8fmhoi*6L2dHx0wd(08+==C<#$AUt?%U)2{2N+c?SK z*kk)ahB+0-I0RO92DFiL%*%-6u4;jqD0r^^}IP&CE{W_JY2a zkmYu!;gs$5s2Ea7rRi1U1=1a<={Ypbqu=cp=<&j*<|BWw3Od*V!zBDL+x|LkhX0Xa zc3T##za$9Wz=(J#SOR^39lkDOKmDzo9O$Cwi)K4bVtAd~;f7OR{Fzp`DBt)Kj)D&U zPG_fYoec(&_%z5)mfBnBXb-{$mA{p3!-bon2PBnDakmyop|Xhi;X+G8VhzE&J^7)@ zL*Tk?*pDwa21_)O)$!Lf*t*obT57Mn(xGvzwpCujgw9*>v3F2~!PqAHmO(sy;t^`I z(RXoik$lwTOS4x+xJveqctbO7SaeHb{u>e2~oyY$ePFF(R@A^W2z@&+9 zl**TEp{i=3o(H<^KBH9Pa{dAig`6;0JwXp1c%z6}188gKWNl_f9tDD#n75G!-|Lr% zFNvga(IeFb(vPVzbo~`zn!O=7)F)$sO{8peY|Plm$PJ7wus%nirtNVJV8aDO?SH}f zC?0-1;xF@hTnm~ir}JC@w^DKvO4qlGt6B zYsQwxvC3t~SrBOiA7E1n;3lOXOq`jR3s~o*1EJKIyDN3Apjv>)ffk>GAUb=Qoz&HQ2lbAU|e$)N&Io|8ZWQTz_9bck+o7=gFkhA$z#kebFk+*v273-~JEf9q1FE$Moj<3)R3mPzGn>CLixPNF0{Pxmfg|(x~N8r#X z^&p|qu|ZePA$_=@f-%4bsgmf-6tzBhg-x{&BT$+Jh-``Pwi@aiExn+$uS0z0eQ9wmXibCXm-WMV4xbAei}_AnhX8 zF&t<1(~}86!4JB#6V?TR@_=t*bmc-C{qDyD_DX!fl^wCT*IxSVv@Wyh`yBIz9Gjq2EvQ~!Bda~#Wp7Rb_AB5p5+XmQXwRme<48{)Us zoYKaIDcN5nDFUh)^FOAM4&0iUq+?FFEmMQu)e(BD}M zg^8Y99}kkl-?zljliU}l6t_W1%9e{=?aLvp447TY=QK(5o@zhT#jsR4RmNQ5JK7Gh zPg9eQ#d|OQwLd${iKvqYG+&<(1ZI9GXrBl17X9oiOG`^$N9k9=gl2-H`kbEH${kAl z-ZG>5u5 z33Ay-368i|H{y~}QTZ@RWJ|xHgS>*3j%kj1P3m))4)^G)V#6qjC!dpC?w)>PG2WSs+keh4&AobLe&tTg-o3{ z3P?FLb6oXKTi7qzd)|=)kOF5KbRUXRGTWAI7#sPWLsDOew+`&y7Bsb2_e}OM(SmyQ%q1jNyu10@*NKf@L*LWESDeve3%@88-c~T2 z=R;x$5Iu3I4&j~UF+*ZMCu(ALklgj!+uB!ObTjM~31(?!=VS|C7&^lHPus!h$qOYi z4RvX#tt?jjSsk!RZh#lSVzCzteiuS1Yst<^nlEZ+J=0TGSs8+Tm>t+OXh7%=UC&a_ zZXojn?4;A-ZUgoOWr8_vLGwTpF!%tNwzqQ#Z%s6680)IZ@H7FFjWH9Us_DV%*yA%6 z-|r#hSKpysDW_6o2ekNsW8pa4lLzGE(9Jsvh1mhSP)FGush(zkcOl*67;|N%7;9-( zb4DVVzN_Oi%5_R5v~A)O4^4irEiD<8#faZsHkql*8rwY4 zy#128)J)v&UOceGqG|`2`M~UE#?ET62$qZ$$(ah4yd^w8cGX*1E8(R{?8|OWg{$;e z>QRsBiuC;3lser=vi#!+_#dH}QNO{qf#f2y1lQx~N>=3qiU{&7k|2wB_Q2jAWQ=_W z)6X3KqaQTTg_Ph6u=|p`3OQ-NDO)v)rV^64cXxas3CZcJ)*o^Cz4th~iwcK?giBqd z_;9&zjG&2U1LVsf5XZU%8uhKMl*v-8Az|1&cAd2Eqz(a4`4+)nhI zuJDmAQL?d|`IhB*qq6#gzS5YnMoTiCki_S!Q3GM`tGx~=-k!VTrr#&^fgntSfe+DP za6jnS*9u>+e3yw+TV6^|D|UwdBD4JXqP!C~%(oL+Bm}bL;+SI>dn(2~ZpalatOVqB zl342<7m`>k!jRMhn262vGa%oWMC(P*;`fn3s`6wIEi@^S7!t~c$h#)r4<4X zP&k`*{+vB1QeLgh3SN#%{B&luvq#d;Q1&^Am1a>Keav+*2-$l>E0N?@PjtpGeg8>Z zhpyY~p-pq)qTrhZ*`Ak+i>4drCqG8?+$RK$ z-gT~jJTI|0J4}{Zgut3E%fVF;nAbVUEOpYoUd>a#47K{>6OBjlj_{DaG``Z{$xlvA z4*`Snx4cJ+3$csUWPFIeKNJd`LVxdGJWcxQ)_U}YGQW#)zQpZ%xXu-HY&>A{D|;Ta zC8m+o)}^@I!x|uH(9Qg!wV8j93!!q?K~X-ik2!MLI621?QQKyNoDI1ZhVSqqR8pD% zW#(>ivfi({Nxnz*M8qbN0i_PGrwD5NXC@CcB&%wHh=8PI zk^A;$f>vuR+7kjX5ZuYz9rtUz-Wy2pa|`-Ehmt53MWhm(%z~56K4a;HD}zvh_^=mL zI1GG)Gz=IA`RhAT%lyvL(+O&GeHd#-_>kx2LSkzgWtgL) zqoad^Z-2h6si_HWW;uhskN1ri_|w|?sP0hunPHbKCBwmd-6;gMlEbSwX53!SNF$^T z$>y?f;RWTsjj|}T#hh`Gg%&~m+z4RjvajM!1c%5Mg3fBm(mtpBVcGDjy{-PryX1wo zF}#m+c*S#RV2#qUqlh&uqBqY04VO(_WY~hT6!0a)W{pcrnfz;1Rq*)09S2J**!(t> z&w?EWQa*M%@E&3dl=jsGdJI$qmFiMziW&U$0n-pd93U4D))4OHpoO2qF%N(a%yg!X ze^!W>a7sBUPXukieGmJp4x``U2^k20tS^}6Fi~QRdly0MY*aQj7E1jmKa|`soCFky z2bbK++l2Luy!6f5daPcz(^Vw$b zCVsF(3u8Nik;rgkrw^gr)TDgDp6)Q8UJ7A%$YXJ0s=J4a&CLz#*M^w20ria?ALZ%G z?;wCjY{b|U5IRD0YhC=OBYko z)pyv1R6GEICv0fzY0qI}`|m~d`CuTpod{x$_Vf%rDk4bO8FD$QpfCZWD%)~KjZ>IB z@VB>Crb0tQX)XnZhJuw?0&xZrNlEBiIs>_s2mzzl+BXn;bl`4ws_qFef`qJ%Pg_XT zPEw7?f-A4Fm{S-(SO!r-&rtI95v0nz;coYrY-4<=;mJ?dR~`Z+BqR{lkQ#eu(1dG; zc^x-KL;LOPC4Ip)gA#Ci_$v*&8Df0{cLDU9%Kw3{HYewBsYHkXs*K3oN>#dPEj<}3 znGaxDH?*VMM_$DC5Argj1_E((3u&>XG}1+PjR|tf5O9u56(A;NP4SSjIX8nzz$M1T z;6^x6NQdn$h0pkxQLjZ90W?e8-A-FXK>mG1Hkx76a53jn!Dtb>S{<9AMN2r0g1 z4#NlTE}xap-*fOFYQdzI?Fg&r zg1att+IP z{EQua9#(Q`AP}^n2C(Bz*iJ0IhyIrE^Q2-ATF`(>K9F_z)){(1_sD@R1XTbdh$LIW z24Whv(AB`fTT_p+5t%^z7Rh4KVMznRHtyBlioFZd&pvePOtN6T9DyqCne0XPW<-8P zRx@IO5s}lfw+Q!y0wsa%j4cORD8mQ%@B4DEZkRN1WkVZnZYUR}&ylg2n((R<*Mn&nhlw4tG1uNGWoaZ@KDY6K9H z%KpXF+ZkYmWsKLN27Us^5`{AYF9XnNCE-i$6@D_*WRmlf`1@_?C)=O)IGT3 zhh(115G5NV+qoO;XNy7hCs_3v<~xC1F4^%5Q>OTXvh#t2ecY?%6ni&0CrN!xnnO5W z-2XZK+5;b`tLV!YW6$pkbdqmaY0#S?U!4a+zN1}On=vmA5F+@FrhDJmZ0R-Xx;`-pFoq3qZ-XYBjeZ{XNG)-m3-*-kxo_?rTkBF% z*uJ|JDJ=)_xgF3rNJ^~Ot>EwBL<`to`uMny*T3Rn$T8MA#+(G`U&s=&=j*jBYoOab zwXiF9Db{p*L?@OJUeo&*eiF9l*)49aKPxVVC zb;9}j=ZBIdx7Wol{_M-2yGv2uasJFshP}vK?}Nt#N%PwckdS6f)K+^|RJ^3nlQkS1 zKP*L&ex_t{BSLM`c~-`kMAtV7GhE8l2V^a9%>k*#3&JKJ{CktD=~`fue|F;}{GT(| z?}$~r?P*^thR5AQLp@UyP4s|q)ZkkO6y%%|lCbH#y!R4&AgXt*EAGdEO0Oua;)mnM zB1%J<9f1k{q^6ZP{s>}S{x920h1ibLXxt1<$x%WpG2JbSRjlgOm_y+yqQ%kwJ3vkL#Y9qn|C>eq%7%l$ zWD5oalzA!zr-~}h(L9Wbu*Jr$kZuP`Nu68dj)=^AsL)f`~vruzh4XK zgVZM4As(2qxtrJfEEnET(6!)VF|Jlv4pW5tk>0`jJen~19*%Q=cabc@pUJfcg_Vi$^IFs@(A2}qR6syc!HeY~o(@HFTFgWoOJ+Vr3<6wITM zDu3>lt?Yc018>%L;yX*3fWD4zG4+itJz)ZVFXT!Q|IFr< zhOKpwh6szI!~rrAFL-&XGj<&LJ3w)?cc*XNYv{>&LtrL(Ma<^e$kbwD` z_WQ=!du1ik*mDz`5IBxFjo*XQdm!6=wX^f}@N{0E@GBlyvla!kA)A4Y^lRY~s60^l zxb|cp`xn!Td1ehOANDf~|7Ys$MoRQ8LmkhE6PoJ?$619eP+O~h*}xWJYvxF1AhYuA z*-70o2eSO)!6o_|yB}Z=q4yo5nze17?4tC8o z{dsdDTEFm-ZNnpo_Gwt@n-Ri#T&O*Ku&JJRw`Y7sgRw7L`g|8~pE>!vD{Lm{Y*~cs zA@tDACBgGpLOvEe!&7Yd?W@|uhVIvDSbhQXuSaoGYTkj;5Egy`Ao>roz!*(+d#t*M zJpMGo4$LkbriJ4k(FgGHz9)+cs|c!PHB#Ij`n;lmnQ40Z0Zj=0mfOecG*txyPV{1! z>{^Qp-4>X?2uQj(S7nvN^)h>|k{b4DEe4Qop-u_)*=Z?w;saxsH`t+b?ns3{fCm~N zsTaKy^yb89V=5=L@C?#(;kJW%(yP1OS|vI~H#7I^cpCE@@&MxU^OP`_`*}3kl|tW`0Ds zf*)Nx%c{W(@fH}^y?qk~cEcS&ZwZ>W_hj1ZlPUB?Z#p!rgZdXCpdN$t?MRFOYl4p= z*Ox~+|49-yZ^;GTF6c;W3$8RZMQxAZkJbF$595uXfMjZ_}yp|xtk}IyMihS54hlF#zp52i!viSGG>3keoCyc@1Y54{D* z@~B)xRWgO&DNHoXC%PgE+IjHjTSW%ub_JEOjqwP+*8zm=`oo>{^Bairsr86o2}N0Tlmw> z<_m!V2FTLFN+I-;pao4cgCR-+x!T<*$4nrauH5iX)Il3yRhV-NY|GNCx%< zgdhk4JfA6op@-`A!2kd&?5#W{YTn83c&ERu`RZzsm(F7#IPiEUi(}tbT|SmxfTCph z(SXq}u+X<6Q&=?EK+G?(r}Z?hR&j)_LB1lSv~=t$*&%v{WP~7BZC~M~on;;jk+tY( z_e%EA+%h~YXDH=VCu_ya2NmlJV5hLBL8?+%qV>rA(?BAv)OfX{31Zg=RW0;$?UrT( zG$esUet;NSD46a|1!3MBVFIHNZ8_&tq674~KzLhSU41wjAe@jB@6T%2i+~wHh#+O8 z7$#6ghyWe4o{SYiOB*`P*xN5ID(Gc#Ix1snD2$9u5++!uX`4mFo|R?Q$9%K1s7(Iz zHjO^=JG3^q|F22m{g!8Yw;=l_htr3sOb>L^bO&_IKCkktj${x~xu5 z9tuQg1z+ZTvTkNMBY+wX_0kD0l0cli$5TV_!8&T{J+5{{F8n;cl%b&43SV)6m~YO` ziHBNHjquSlL1`a4bO@OA9s-OyVLNRZiOeI(e*nAMVDM0cU)u9d>nT?S1uYouS^)+O zo;cX$vaPCjgm}cBVSVOSBGU^;t|QzBsAs_6M@IIAqYfSCXy)(ySl5x5dF%6+^pYB$mL*dFD? zaqy*2+FJ6}R64LfjvdQ`dUI}U%2jO*xO1c?B-j0>tTwS92N8*t^_w_r+j?wlGgj`MiQxcDX0X}XCbGshea)6X_*TZSoibs%|;SlqJ`b^W^r3vmD zB}26qTX*5c;Etkrjt_}U90rwPAgDL`xsdW}eANGPry4MoLig5fxXS@S14wE?0fEicnF6cci);Q(NM^P0 zc`b&L_}T$s%(P!}xS|;~@wMnvi`V31evW;lIWXRkJ&2;nGlz;p7<)!#B|>qB4?lLS z&skosz}1o_Zv@5Dp)l}N5^&7C!d$zT-NL8)*d3{c>Fc{3s-D^#HZPygeaP&gAl7;bqM}l=T=uX&?0DEf%gUezHmz%FFBNuD|Q^2kKf zAHQV8=I|p&GSl)gS7+aal#17+ZF?_xi!#~`#%Be3eE0-64>afTAtY{$RA6?1)McKZ zv;&<+0RVXJ{G7Vsi`(eK2O06PZfMlhu=7xsoF9@yvqG$u!4 zMqx z84fe=aTW_m?_KweQ6&4qbi5G){Tv0Ws-o_l`v67$htXCIuk10b)^9@MRg%x0xmit``kkKHX#I*CJFA zL(yiE8&w2#IrDYz`WI~J%QH#Vq=~j`p^o%?_&2MHjq?-$N#Q+G)dOje1g-V?pAb!&?U;Z*XacpGHlN(^t2z4~fxgiyr({*l0* zMwex$cI*()owwx-2(1c=wSBtC3@)0)5( z@Pk?(@O+h~_4O|L9?O`IU>(=a5)_l1+`)#HU=yak^x!9RD}4uX=EB?b@_MZZy$_Y0 z<(fsw(Zt3~X&WlVshxABSqRCD4F}LhiQe7aFhCT8S*Nl5UI0NxdnCU&LVGLs44qR@UL?+kB-E#LhFc3%X-#0R%jY`^a`sox!a<)4V?ta z<)YY|w4LoKcCSs>s4K&5K8Ne#A?g^h`ar;du(9%^#E5-#@!^C@P%yVowT@%&BRE*I zQ2FJJ%D(sW1z`J^5JOSE)zHw83Ue0<0!Xp(v}fJHFgwV@*dy}t1u)GhDe1XaCJX#F zB7WrunUiH+u{YbEQwI_+7H#LM(kAz!c z&;`@O1H`Kza)sBK&jvaiyRI1qgn)?}e#p#EpJQczbbcvyX=DN>{Ds@LnC~QBqvZapNzE zHLSZbpi5yhILQWt!!i`W#ia_tf-T_I&jbi?0CRO^Wf=SgDZA{lNXx61j{!IRFME_T zPsMZB-hnX~JiR*@&0sjt^b{E!V%=QL)1W7w>=t3hWnziC(B7pq#(# zyQQc`uDmF5a;#Li|LqP$*F424fLp%gXt_T^f_%k>MNvCP-qjN!2I9209ruRl+YJIU z1=${@#`%)gUNoPf>@cZyixaPJvsTv3`Z8Fz7(M9*MEj(It0iO zwiCS@Iwc13YPDq6JTnYCe1m+mqoIRgvI=PEpSrQ2=kQvnV7@m zDqnS4f?-6$K_}(sNw@3X&=ECwYe6EI60EuPddpE;~Bh`HD`~YRTeQe)G^LLb+OPyiu z^1x+a;&Bx)luud(hKD%>LYmkDHR6Mz#g?P*oRJP$jw?eI1NMIlWmpgR0Dt-de81u{!E~9wv6LG$Hkf!b7X)clw zmb9M;--tc`m3=S$j#FPzoqd~gn>Z_L(G}L8*21b@eDG)MI8#6KU#f|2Ge|F&0v#HL}HH={&XD?QVD>B_fjbimfqa zN6^ z%k6kAkN-+f9v-anq4p3!zB3V#4_SfGQ>Gy9&zAn~EleenL0B)v;@XF26*5MdA)m8x%PwawgS6sK>p7(w`-z zjm|$akW{{*dn7@{{=xW>dC~?#RvEu277`DE4?uW=w6`H5GH43g^awaOX;R$%gUPkB z`%1fT(7YGmR$yH+PdE~IG<}}0=o*mcwyd-@0)gMm<7#}E4L=l76R>4!1=0rPLA`ST zyFwonAtGH&T&GfU5cGA5b`IUCQxGPrvd16~e7DK^wiSsISKnYAo;*UOq%@ByAz!DR5>3w^M?% zhRDaslP4ED!PFxnI@O1P1j{_>D3ml5sVV*1-n z7vHMRtaK|R1>byeoQ{wy#t$8TS;aUL=sX2S-iY?iFE6{6d0ALm@}44LW@bhXJrU9G z#GW}R82>jmn&lw3*YeWVBsvVciZ#0(8qOxKDceTh$2}Z&@us*^*sWxR&q7&C>;_IxFsWF0(j$}83Is`kNRu>e*MwGJ3MU|A5fOa%m%lH zlCHn<91+9>xyw#nJ}1eg+Nmp^@~7!0nxZQA*{`?5H`JZfgS0Fcd!GH?m0;vK?qfl; zDX++@?%cT}TSD~q?ORZixHInLxb1#iZ$rcRS+A>b0*Q$3#+{Tnr#i$EMpvD{e5+OU zIz^Sxny7Me{*l!NPXPz3*YG)g8iQW{nFQFc z2kr8#3m0CjhplgIRV(jG>vdxFhECsb*!zH;NSyCbxHw)sJ>&n?<=m(X&@ z&ywygTqj-LEgUPtYj?t?oB`_EOoSXeU<3knW%buIG&I~d@vrvc+=X8Fl+Wm=L)~TX z8nLjie(QR)vYdQl`vY%K)njw!Q~gP^zxv**P1}ta{b!@0heQo{@xSUv0Ia^)yesyT zp8edme#bsgHc>2at;GJ40tFK39-NdRC7pERn0@oQl2Mq2TvEpzzq`!bKicWLEQkm1 z23Zx?xpUqzl^~fTi74a+?&co)nbjipa^d=+t^3Rcu8xW&RYJM_AJsVI+{86l z7|N4Qo1fu28DSyesB-@0>OY^22rLZzsF6}`TG$&cEiHeKYQ8-hBqlpB9MME^q58sy zUs7+08N=Lz&5jl+C*9y4-ulQ?_xN>>s$x~O z^e27)vs!Vos*%yr?eg=_pFjV5SnpNG7FweRv+}5Gf^vZY8@b2b3^s2|-=UUEI#TI; zCOg;6)uem0!26a^;0?-5{HGu+RrVR224MG<=Auf~FVVvafhs(g_Xn?QPNk~aiwJWK zoAPWQOAuq1AG^w{XGs_GQ9Onzh)lkUslU>yyyqj;jQPmz{|xy?f=kf#uXhs@rmwc% zg@==qlgpzhe9I-E3Cw(kxR_YQZ49!2?>269%(v26N@qiwDDoJb!eHqUc8)Mf&U2=q z1t47OuZ$kMlt5+a-A?^KllT~}tgN(R#)pPZr?x;nqK;y7Umstd`G{n}Wn^4eAhSI)y}WQkOk(Y=>a{k+NXnKr`qT_iSQi-2-Sj8Ee?gK{PZqu;3c^?JIy&slHdMH|O4(#)y&>c~Qf zdxJY}8>YS;-I~dxoHmviG?Xhr^=VOFfkv}Jn1^G`4A25ms zYjPZ?1Cf}7DWRf}9pv9V!O%~?2QI0&pYhC@wJ!AR^MiLr#CWTl<3wXFe(60zfOiKPW#uG9A~ZEc4<~Qg+J5U<#cK|%wzZ%nSD;@c z*LLj6>=gG?iaEPEGtFqN4_QG&kLe>B);b;5r(;`cg{r9}@jxA9Swuu&VpN1~Zf?GO zc~Dzh`^=d$jEszsRD)ocv$M0hnpy=0FBMNtHQtn?sERilmq(dDUpgc|aOMlg1Fg2i zst5cDVx?UYzumI6FXV7NDqwoVsQCYn|D=YXyME;!b%IJm2f4hUs|P*aS&PP;SeG@G zeHXHllv#3(TZzGa|@+%N?_;X62nHe?HOoTvo3A0#kT}ckG|Q&jBZGR-gw-2T1^W9#)I z4bsrsMfBGPLhmK~JKPl`Ho9y~IL!C2JG66g`%%>jH&NK~*u{@r%677j_|5*gQ6J6i zU$QW&AwGC9=TXpKQngO6)&Ef<#?F(DMAFP)rr6d&Op8m414sw5Kl*-ONZp$+8 zU5M{y*aEfut1HX;ljB7UwqduvC;MwOz9wuV^5=Pmf9>Vzr8BUX%e^yjb=3)d9J!?Q zJTm+@``K@ol(=txY5T1q{$BHK*p(Drd|aL|$S@SS{w-tcjZE@~*nZrNS-$#E^&z*o z?>T>skG8L>BIi`(gUWQUXE}XRd=sc_-p)jlE0N|OCo;Uu#WK}g>8dQy8}5U-{31gZ zHx)m3QlRwNg9^6if2r+#uDhQv|8us~H*EwT>Av48PhgItPLn2c;ws}-96oWIlvY(< zt$aN_Mq;OQ%t1*)l8aJ<*~^Of$<4us{t2vxPGX(vT|bSt3`IXVjhj9GX#Aq%uw;F} zW(F6(CZ>DV{mR8zR!X1BF;}V+yBl=5?%&^7R7ZhU`lv`T%eEhVqbL_EMG9MrnND1Y z8io9;+?p`q8MidMx<|89T*9v5OH{oFiTE44ZyezE@0vS`xo&RY9$x-Vw8B+eOGe5M+kT0fhJh(pV+IMAKAYZmhIBsCiPGu+@ubjXXPqDiI631v2)cjOGeXH8Brt^T;cSb1{VLA8Fr zPsOf&8>?KtiuZUV6U`pBiZAKO{y(a&I;!gDX$yh^DoA&Chk(*um%fxV(v5($gmgF3 z9ZE|`ryy|wk(LmY?(Te7e_zFy;~$*EIqqk6XD6O{X12o7(nd#9TNk_`__$8}&(_90 z{Krsdb_IFDuyrTT-^ z%1Nyby2iY9uYS%y@hBUJM*kXuz2{E~!%)tifnAU3pn!a$EMPHp*C^~T`qDh2WEfv39zv`XQfHlD-tNB8e5&+0y}h($p5=Is zG8g@*w+KnsT4B9PT+o#cdvW8G?3huXT8Si{C9$F{-S>^ z%P#AT-uW|gIo05J%5VJK!0CQvADHu5;ww}tQq8K^#U8}hCY3EW=6gr1i_9iq-_XO! zIP9?Xyo23(`GP(?e{k$r&xpV<8uJnN~U=z7Lxl37nMo$Dza(X=&`oPt|p{taW;?ZH5ihUa;Bq1fKO5eVuA$>%l z+}PTasR6^Fp-_=lKmkK*C!8Y?paB$eo;F#%OXuPf4X~V|nwFyD>#0b%H!mqD>A6CD zSB!%DUMAZKX-qeY_rCB`ma|l&W%-@Cf{$nuzcsFG{;MT9Xx;@TOVT`fm5s3^JLbgZ z>9YYv3i~;#GHtJ`(gk)y-|6nOWI$yOh#ae_+c?P=^^HWcN zR~m9<^+v)hO6E+k09UJev)-C_JK9vBX`OkY8AeFO63GODVKxvku zn`-z$Op!S!)cjyfGedz@)xvF(G2N>5T7Ud|2P)+Omh=C(#|c&aK#3r}ed zyKL``Y=W@g4?|SN)0E5`12oNaVVcx9LEPSV#YhoPr7#mU->t1Bs3|^1DEl21fzR+M zA^Ypb@rE^GL`nCVN-Sa>q#-IO0(6uV;vdcf|&J6Q!6QROQqiBD?@!{DVpvd z$;tk)l!337rKFRlvl5t>qI;&KAvH!J3$bhZ^fAGMDKhk`qCQuQ8C+$8kr}*}E7iGA z;0lUT#J9f>N@2#x7%{cvx*udhNLukEr>WIW91-`ga}xsMq7orD+5Y|bCu)jb#W)5S z%3atzNBICs_87}GCBlTyzl>N0nntRCzby&^SF$w3I*g;D_2jn-0a@k;ebAY3w!nq%F}QSUZG}`dh`>XH$vy zYV|Bm%n3>FCiJhWH@;7(tXsS_3jBhQWQf2&yfY=cK-sNUow(*-0}S@DTok4E$&njnQMOTm4saz2H5J+Sm=r-J_X;v`ra@BXbF6ocIjrx#1b z4!1)VoqD#tu-OfkAIi!F%Rj7AiPtij)xBAN=b3U44;{o-U_7M|Ou;m;H1DB`Xd$I% ziv9GwXoEm)lH1dW;x#J%OBL8CN7QI!KXm^_lDUVwLhGFL_v>Z9PWzv{ge`AWHj(4K zW=|UJ)nh--yO0kHqNj*pryH6H^3|784!};!M99Rue*x*rOnmqJYNm%f= z;w@fFd{!)aVcxv9)VhmaX{TNFxkKQrnDTuZMI?HDP*=tVFEtMJ<6~_PXM){u?=0fl`Mmlj0Hw=|IP0}ty3l`* zP@v|*pstCaL*K`y#@2GBd$z}ve`mTA5Y7I#+MPDK+qe)9db&wu!t_Ms;^|tDPH3ID zjMM77bw<(BbqL3rSnH#){BkeTRurN0b=iE~{8hy}Zd6#&UoNCV{TA7mnKdd?^RW!@ zwF|S3WIj@H%@SGU5Z@hpqEC0`ZakVB_1}7TB*FVB|K)>i(G&-{@o)N*8mIF}9r#b5 zQ4haJF)2d&xV~lkF6sj3okY`lvPYf3!Pc@$k!6h4n`?wN#(rb4=l~_}b$$p$2mHOLF5cUzG)fWP82e zLfcH^>Hr`<6gCzuGkf8XSJHpyK)2xhq{RJU;58b%aV#z~}!lOL+h4?b6AF ziX@9)#GtH@ap|-cB%`DJlcESr?R`}&L3~9ML)?>zij7qf{1d24HC>w(?c-2|$pT`P zA#}F6ymtcM`q8{pxWU=J92aaZY9?JeCse>)b5Me)cPZPfXikp`iiiC@+}jk&KsrH? z>kR$$H1JUDEe~_+M9yb*^7oKCu8_oVl*yua|s8mDa zgF+Gf2Ws>em&Mee}F{4R&WJ{3OuLGfF@Xh+hPWwUlX!HTP=B+P%gnU>KT?ND` zDyiOYx1YygkWef?loznc+`Pv`a_I2g$$tw#a~ubn?K0R%gnu$-rGKu>aNd<7%*W)b zqYeE9+V1^TMuerBB?jsGd7I>ThcU~6n6cg}?W(npYH5@1cNS$`m@VqnVJRY18xj19 z0^}4NxwIJQ^oocCJK@m@lh^6)!tPGA>wofse^Oc>a^e(yB|i>SN$9cNO7%zw(UR^G z&>(R;M@ap*5;PMhhivJ(DJQP{8p}P)Rj5zz_?(Df8l?a=B})6wa$S7T11@Sa6aKMU zCWCv6PY<)C|D2iOKYIFsOR(Uf+P%hP*~!*GT`^ErIO3w0uIDhiq6$xRyfAU{GNp)v zPOGsL`%{n;U>ocsA^H!fuhHZ0f7XOji57Mh^6TUsm34mVDlFH@U(=nP3ZwY5YY#>K zMyG84-R`Lz3i#_rtR^=(krW_63M!_Sx52bDhIkxa+3_j;;sE~-5x6)R8k_acQS+5&+LcNuT3fRw%|3NCTR5CHqg3|ct zi}Xvuhs&?rWBphc8Kv8`rg&Gei+fSx#?E-)zfc58#P1X26K1Qy(TF&Cv>stz#ZYkI zhf64DEa!b{nvt&y?E&{}pkK55s6_jlAKjmv`p#cVeFv;$OX}&*LBsGIhF)=05s%j$ zbu7f7(0(e4o_Z#jZ}|DepvmduL`oJFhNdwqMlEcEoB%9NI}Hzxp4X|@MbGsmFZ&0k%YkxIp$i8c0W{Q2L0JVAK%+7Q8<=razc_cLryw8&O!X88XI-jURB>9 zidq%J_(^=|QiDa`?qx=P#vzYKk$chC(mR;6WH8dz4l8;`OXTQ-n&>=4dS6~H z@1=@jGs}8l=NnEAvh?m=ZlxX9*ErHk)b!ShG{Vb0E)%Ysq@w^eh^r%|o-})LHGQGF z=VVyfN|^b%qQ?8Voh5RZj>l`XZ-_D;OZ>Ue0k^TV50#9Uk)WpmN8@`{82NF)as0z> z)J$R&wQ5&CT_9-c=G!eXqKEv_^!p&lve7Z$m_%49N?7Hi8`d%?vB+!x z7!MRsZ2QmA-jRtNC}gGci@EA|Np*h)MIBNYFF<%!CZ((KJ}1Bf)D|K-+!bp^6dof~ z^g71*PT(70d~4YS5UXsIN$_DSS)-*==7i7SPrXs-yIT3yc_WK5EW$34f&4~HMpIqA*U`7jYdXE)e=OL9@t>9eVEL~> z5so!h>oI~!8$ViLY*C_GiU!yqJsfJfF>wHcmZUr1}m= z`}P+7kPe-F0x8GDqa(M0q6OrL_ru_sACBh+>yE75WLjo=(A}n3nn(cFLHp0fm$%=YWuFf z{%~)d5*L~QX%cn{XZ42GB$wl-sDBUnd(A0sb66l(2w@z@z2puprmJW_xcl^LkHT~w z0HM%==Grflptb8gW*pvRze-bu6ZNH-=oE*{ZH(6_jreIXc%RHGr=&u68EHt7d=Fd5 z_Bh6#w4TaLE?a%fs;lH4{d05$0{@DJGdY*_P`JRNEY_zWCE7SQA#MZEuPdofD(Gm)>&JaQB9`L8}jR zOG-29Ywewdk&d5?0`1c0GX{iS$_t-opzo!0kHN5@L*>Xr?T6eO$G-!vf~T`smI z=itLT?kK+O`j*~eOVI0XfDh|*76NO^)60Y#=&6RA0{}yD^ z{eSl4+pDK0Gwh!XS`Wom9n(6;y6LsP!-um%*VTA;~F53hM;H!4*Yk(NNNX@^&sF?04TvI8^c?<&myZQl26D{cS-Z=?uD|=1Q8<-dig+3LuqM=WT zW}o_1T}Komb|)x(z~ zU+Nu|B;&nO?l@6F2F`?+9x^L;DNRgJ@EtS#m$U!GIcx*Bi8?U#%4VosbVjA*CO4I3 z93cKkA1O0;3hV2C7d3=JSV=Qqfx?Hf#ufEGLihweTryx#HzXS+a_F@~7Uog1yEp|0 z#07++Ra4HjhrEAnU;*a87pca=Qv%=QVa3z1JZMnP)ipuXK|I zG54M$h?F>LOBL4JhO#u^{>Z<_p-a_8@BYy&PIv76AeQ>+&vlcbHm56;gOivr4=JGX-df&aR!ITy*;;Z+6(owm)|L7cu-CFR7=c$*F z+zpM=FL*yQ=~W-^#1AJ33h;|WjSbI<~y8~8H@A1P;8X8A%4OOE0b1DtDlI&{rtx|^ZAf7={ z*?T#&JGm76)0Fzx&-jv|kcslW_D%sEaT^3+v5PVos@dCGkGSKy4yeoP@>(=Uo|0mx z)ZFtxl1XgIIQ#sXI&qqWC-{%1wT<3JVp+8eeu5>>bu=lL9yhBBK-3o;I!!*8=$U_g zfV{9bGmGs0j5|tT(3T|s6ePFiMn2x?yV8A57%Cj(>l-x$QjUnCSQfliFzV{reEloB zBekl8%kWQ-+oQ?36{s4!>uWbwv35fq(I;sGrAmTYBRfXZqu62U&Ts_g&zL8{7gr}L zq2A2v1XFlF^x^Gf<$61dZaAZUYD|s?p~!pV*I;@^_p%1#mzQUz0&W_2;P8wshFwaHnu2~6`o1r8yBTxx#{p1#)n3P`%vD=eI9!D|*=%;?cQSU<}z?`Syk0y!%2=>DA1#VaE9V zLsxM)qir4P+F}+>1d%LAsP9u@K}`j_K<;H)*?6L5HZho%yYgS%(7N5q_yA34AVz9Z zl>~(aB}~dM66#B!SeZ#@dW7UlXZR%->qAcjkA2iLIy@co)@Z1AF+bxg4!X*=@KBTp zo>*V>OcrH_=O&NG_Kw-~luy41 z!F0kY7ZPgjpI`TS^yz^5{b;ug1qFOaG(6iW_I~kD)ERB`*kP3KA_i#=(E})c zqP)Y7mo`@Ch@xMj-S=eNKE(n6t9wLqyLHln)E*j&n0w~BmdE-V4R0Eg|Uimz5x=i5m!`h`e6e*X~ z%h&M*vFK2LmeTe;>@8ITJPXyGO}+UxE(Re{z^z7h2anr)~N-g-yFn zVWUsXg-kZtz8ECNUtPF*0-}nSM+=aTi|dWxHO#6!2XEA z4KNy&_z$Q`isDX@j^K(a*`N!|?zJD1NlR2}o|$EeJVprplK}1C7Bq$1{e!x8%_H{Gl?b^mmg3iw zL_wrOmyTW{BUk_Io(sGd5w%NHxcgtTvWWjTu=O$QcoeVPAstr*JuY7_%#q?uxk$yX z@o6T~6FSg^JnGBYq&*Zt_IZq1_+^M`Vx|6`4np{P-NWws&Oo6A| zFA$=c%yy)|%;vYwdtd2~H;&f6^^mY5ubhYYl1ciB$IivgJ|ywVyAs|-Npn!kq?K&G zA+(~HJdxJN0IM~(NSft;vJQ?u={<2mwCl^MpmQHi1d(&yxTFMjb-tDfei^z?@N)lM zF|v2JI-$D3loyU0D5Mfs>8<5RAdpFpg^XPvsHrvjLHW2!7V|1gf>`44K{iNp-UeEf zWHLT4B5VQ4TJ#w=*GASE_oQAVM!PH$V%`D?kmm^lQ`IWU?Z(|E#XgdyJB3eR-{ul3 zym->R#7FznJ_><2TPKVqafLGGi3AErfp@*&QDLziv58*NEHX0~>5i9Ci(t02lwV%W`52 zMX%$1H!d9)(}*??aulH|ws@v$SIbut-A5x(&xy9DmLeLes?>SL4+Uv?zSE(Ht7{`? zU$8gFFyPN!<}B$>@c5wo7ts1N-5UL`-RIF9P`m{rW)p9Ku0lAB;#O!7%U{H&bLR&R zr06StTG$V`1SP6$oyY-J?l2^D0>Xk!S%qZ21k#slVJsE1WFr~bf^6KM;V^IwAZAS0 zS9&kagwXzq^$#Bci&zBdxg9hR8B=s7kLZQAfvk+_=JEH^A8O$zRoSD_-6=8{omBjX zaX4ZZJ`g67+{jko$@|lZgp&;!L{i78^ zf3?CV2lM5ckv}~<95j-xk2|-M15iVicNt8nrM~v{Y*{4x2iX#v>l)PhI7qNa>WEu) zyrRHB_lOV+!xxec!v4Gc)4Z0s4omtnboABSF@=`M)+*(ALO$yOJ;EJ>Ipu z{+flulIf2|9@1BYJN{h3Y6@3V!#?ET#(5|AC3h~gUZS1?aGl31HonfX*|_GZOB9yJ z;+c~zkmd-odHGq#tWkuN9*KHZg_@zV(>wm}H5njQ6V~60tMt-ui|cTx-S?7-KFFNL z0&0l=G{=t475{=q2QIF`SIxd;dXeAVRF=l`h`NJQtoo^3+#G9Jo92PfVtn|C1P0GN zR|#FNoQpXbYc>GL)BMc;8`b`L{rEqM6nMzhYJXMCZwY$|idv895ft02q^KlCovN9s zLc6@jk&+ffgJf8{V+)he{Mlp(0O}3+5ucMMy1n$tE3I+xB%qZXJq(eSj%z$*|m@O za{v=66y! z2qm@WVU$XwNsqCWMF(mDYKBKpG`4k{eKfKBwXMSK*g@0KE_l9VQkg-u%b!>GsY8FN zF8V{dri)YLBxBwWCw12-K2eP4pae#siho(f7BrI`F5mCDuL2LX) zsj+x^wp-$_L?3VA9Tb+i8*~$<4{y%$55>mo%X1gmUc)?Wm*&rEUyM&k#mHjR2N>|HxkY|g0&$m|9NHYXd`xeX66_i6J4}4(MV_b9 z7!2gyh+LpkQFO>3UHFGJL|4Z|d(Vc>JtqDN**D4T zX;f^Rw6(N2wN>B2npn}12~XUO90nnVclAvSNqn*u-$eN*G!2x+be{=}UCOK4!iX~q z8BJu^-MER63Q4f3h2hkYZF~e%?my93?`<-IrBg7VA5Y#!w3V5^DMW{tN6S{JU8O9e z;7#hu&m}Z_@{vDzH|3>!h6Nz#ojD&+T2b0p2xoAeZVY=Toc7l?H3@)IGM;(-wzDL> zV#+>Osk7!kl{0|eqAQ4r7WR=G*NOHg8uS+~FL_t@!iLMBs-XJDGTt3;Sl}k)rK{Lg z`$=OSUQTH0CTTRuKMZldu(sYX`Uq7Z(ZC{)2I~bpTGA^7_8(5^v(ci<;X(jmb^JEU)`}Ry6>rEV(ZTd-;3anER>(nYc6TZ^utPCYAJtLiIBbLK;6E> zBM{kU>h(B2-fzBbV^o*+>s9=0+KY9oR^qQzjy+~imewzo$!g{l>w2dNX65Arhiz+o1rbF0ErJi)Z`ABW%|E#Z( zck{sH8|(OHZ2Z*%;XJ)t7(kDZe1)lHV&y!&Qlb6O(g5%Y=m^>ACGuc=;>Yx`LLXs; zhx-8;E>XiONC7Ef7x!X1?wssk7^gFnQ60 zShMXE4`qFZGbSYmz0ynTs{Pyq2zOQdC5XIAnn_D>Rnwl&W@t`x4Zl^H_&(Z!9=coq z8#uuF*QA;>^t~5JHgn0_B!v=-_G*{B(hK20?LBmtrZ*+rc;e=2NFkbs@lJFQhMs>(6_uxD{H}Z`pR$?DOF}6o~)tnspUiq&-v@JWs&{k=8K0?WFNu4SwSY}iu=PbYQ6!E zvk4It>%tc*hwj*QCx{YlP@W9K`fx_N-WilQ>nwMtB$mgqIF^SG?z;`LWIZF(*9t@0 zI$3KbC~9$j8+!w3?&-2c1?hkau_77l{n~3HHLp`m7;E4VA!(PMV{c_}X)vpm-Nw@L zxYLxl@m%HM^uX%|{m(y&LiYv6M!r~1FN|uav$t#;dU3v9V4sVvv;BU`&3)iUb+m-0 zs(4vweHsxvp=2xB zdsW~0Q=53~Kuk91!~HW*m5`H2zvA!v2J0Avwy2>o+$wYfQps|2z;%wPST1Y&kCh#urd;$^sh#6Lp$#_=!G&F?Cwq5&oooBAP{uJ|jcjbHM z2nG*@J%vfo5!UQuXDi^BQ$6B$2B9cQUNNAO*)|Fto+(~T1_Z)rSLe663=IPPXp7{J zpNyAAoP|_P9WO9Ubu%w;Sn`e(^EFoykVw3xZ|zargH_3wuvlzkzlizG>PV{m=Svqp z%;wMND7p!mGcgyP%%alSEU=?JF2Ce-0_)lGZt z_pINAN{-g3-meq4UBuS@qDM-0)pPpOrFBf~2vFTc7%I3fi=_H=p>&o!#tHi;T;Z2a zYJji-It1%bxX}iP}vbb4_Nz~{?c#*%iCN4 zMV=~_?JlIcHlFeqqg*Bo)TorDD=fDV~N-Xg!k*cw5 z^c$PdF4}6%b}-AWoCK*V>5;sO0L7DY=0tXVv4t-t)8eWA4F7!~PsP47H>&`kA++j5JV- zT$L%k^T45q@amOI`ADiwW9_BE9^1SX80V^#9~la&wKXReYswPkpBX#KXMWuibA zK;_q!Iqevs$#_{5S61&FKLKMWcuf+K8l1SM>(;A8Y3XCmXs!_BdCFl6Qn!^p_#!KtPns&%dHAV*Ym#uwtw)m>*VC43mDkbLqg#rudSOP-{vh`i zC6KL8EfqS*JN|V4;LxAq=OBxaN?Ddyksu3^9L>ZBf05h|xGElYdbYK3r34G$};Vu@C%0xlpgAePa8;GcEYND5g;?P!NwRUpUGyYQ(!ulM~LiqcKQHEg8pLV)L+-+3F>h?@Mm z42cJ~l7J1iMhFUA+u{!te`V@Y&`RJn9CfMFYZtZeDf{t?E4*9}40OFBN!}1NfwXPV zhFv0+SMh%zG)_o*0p{-))YwJ94nQuB&!tO&KHv1~Yj;!r(J=L7Y>8INnGs5x68CpI z3XuL!Wo@VlSXK;>oW$zN996H3Y?u0{0Ciu!Hr3%vLP)=Aa^x*IoI_{XAXd=DS--0S z)nzC=$nHc}x9J+&9~T6$2o0)7^iJIOmqYXinc+V)A=md+4|T_CfXcrWk?UObsI<4d zw!lFNF8UUEX8<*7L#I_+{3|hsbjZU7G52&#!D&wO-Sl4^WeB<97bIo?3AT zZWJT5b6lm|t=aeMf3@J=NqT)7cg7@8oe$d~9Gr^M2mSJ|z0Y0Wy640iHqD}*Zyoj5 zk)62(mfkHr%<2!T#I18?8xp6OU#(i?@8U9a)MgYw`=NcQ#x8uPZ+$k-n75 zy88LNZw$16CbA1Dd3G3m>@eF&sm~kVuYmn-VV1jv@3VULDbnbkdS4{%$OsuH^f5rX zDBd$5C0suBT{UZ#Dzr>n!K`H-)9o zqQAO^&CY_ToKH&&kUo7Le*AD>vjtKA#!lQcB-Sr=iWE>Z*bxPhN?l~;`i%Q-W}jj2 z_AI~Vm=2NSrtPDY7G+GdUEenygWLEU4`#lRq?%qH8U3r&@ z&c$O|GZP|YoP8wNq#%%ZC(BZwR-i06RJVV|FnYa zAFasuAW+^u7_VxHsT9)hd{;gdH=7m-x!&4(|5Fm8wh(~|8+#%L3Xb~SGc`Iu!O4Jv zOH92`97UB)vg0^W#z3*;A?2cujD}bWvUSyU# zrg6kRN4T}fPGA>{W7YFmt&%Ef@l|fd@WWTJpW%$Z5{r5tKVRUe4?hF{HL3E@m0s_G z>N57R$4^X+npM16;LHjg6gT4096y)EZM?&Aa^mcC1@{31=> z)}FB^izxMB#5gKtxtfvqWyErimvG&L=!I4|%%DNroO9%SjLM`*3Uw7|)TmjN$vdP& zURr?5h5^^MTER0@r-XLjPZn;Sun12-in$^CN^s2~y5E`Nf={WJeZjHkq4xYT=Snm703e+9~eqobte&_=#NcCQxZaZ9Pw{mwbee9%0;z`-Jx%O-`suNj^mE zU3!0%v*q)ZahF{2J7kC+(WJ_wIfT#iOb_b-X8p{UAa4Mt@|n-#qpYOzP_mv-I?y$g zeYEY$g0K=|V`U5q77G6_9#rKfHO#`%jWsP5-iud#%6^1gis;oS0WwhCj3*ANm zg>##%M?iz0eTsyR0S9we=d6L&R^ME)KJs958QTf#=l&b(5b@6AZe&{3YN~LO?-#K| z#<}8bptd=8^R^Rx1Q747lE3sOBz=dwLuJ0PH2bpeT9kTMirP%^XkbCcG>L^u)>qnB znB7DU6mN=pi=K1zy$K&Cu0FMqn=k?F_44yBM}~d?o`W3g()zL6EO`f4X-#uf*zhmh zpe^Yizxnq3lxm6FwxE3ndOT>;mw(^n-sx$>`Wz=V&DWhM4Ry7ivAB}WvOIlQvzG^e z#mdNfqQRJUQR;V~%!bhw!C?)wqDGveWrZiCBVQt%=fN01WtcXo$>On8iq*lT z?`?OaB!0y(2AsE%ErsmUS;cyfRA+BcB8f|lU0XvzCl{p-S~#lyY8Pfkgm)DekJAVKxcHZ@N=*FrXuSQd(*Acr7~BrB1<jI`l;a0AXu{S{PEIZ>D+8})fFJM+7-sA+OZw~2C|Ao{*Um8F zY2!Fb=rN#EWGynhr1{9|HF;oH1v<>4P;_CcoMW05yG`)_~6_8=PJq0h$?H7 ztr^Kv9rA4k+>AB2de_dU6N!*~7ms5Fj*MmDG~=Y-BE;~p7{gRJmPwKgMBfI+ZqhKp zBi&)M2cj2LRt}Gi9gUZ2gV$EiGH=dE?eoFoR9yCGu$2SwQq`|nnm1Wz>&4}VM@MI` zTVDU}9`~W>8=DiZmrXrfEQ!Cm0*xy5p&xCnlqDP7OL^iyNeZgO)Y8g4?o8-mJS^!4 z9r*~`mhFs;mWJiZHQQz_j4y=gREdw^B-%G{HA@nnF`cV!wP_T+!RJb+!|=)Z`N01y z;7o*MoRvfe)u@a#`m}a`M|`CK_;==}JL(skS&>U!y7u6y zhtGn|b|ZGT&HTGkSqEPcycU_Vp%qi@eMSj5zR4>hZv*1Skc};nk~bs^v|=kxdS2py z&Bt+#dz5VKegC=v?oK#(8v#RHO6ul#+766EyNp7Y(@`oYDY5?fDd2{D3_P<1>+4(k z@Vh+% z8bnl}8gE={dc$lrs}2dQ3ci?&G~#skIkSyzuQ69V7@oQpgGAYVXXJ+oNE$}tK++KT z0N+UXUU9T?1IQmZMlzTVsrxZaZU32 z*!dLbtsB1Zp1m#t1$huSqO4$FCtOdKPTJhH0Y!iZC`O`>5&CKYMWfo^4#%=ttmelP z0=kSZ5YgeJpkSVboY3<~T4bF!V1JX2V@1;@`_a1CEZ-lo;5(wN4ez0&=YU@QAkiR@ zLwh@%S*$W|gBo5`CCSG})gdl~KhRtgJu=aRT0dL$0S+VRFj%MB;2-n`j>((t2icYU zJ{VZyEpej;W(UL?i+H?oNZW_MK%Bqf#dR*rZ(Z6M6nmzGk+kB})UjJ^|B&z?$&UJi zI-j7SyZAe-IVfVx!2{v*LBB?tiiwE@?K~zTx@^Bs8tn4C-eHM~N&r3n zm*c?8Cm8UC+VWC0uF6c_D34RZ(&vrZyOksxbj)b-KVX-5!&X$V(Q|S|q^MEvKC}VT zRY)EPE-SAO^=*7k2uLJ=^ja%(FFl!yeQEY&4*>iqMdWc`&y?nyuK{EYx*hkLpZi!? zN7Ev4v{D*=!RvUQ)xlDk3!jhKs?WT|@Tdr-5>_=VH_VUgY+F1rK2}x?%C#Y&DSC6J zd*ca=?R;`+C1!Sp<%50}(K{k2aSlOwL#KU6d~G|W4S>$;ChW>PZ?t|kQGDQdxk}xf zS0yeW;+cK*Df^~j)%yd*E`deEOQO3SAXYa&Qajn+NC{X;tT~K4QVa}!yi~iAYMiop zG~Ebh^CW+LBDf@Y_Y$rer_H<~wMWP0(@E%8SGXJo6)P)aub=rI(sTXu*I}pOoiDx0 zXp;@(?#)nLmB#@Sqw}9G*{}Hoz;7N4IXAz*U%U_DJ&{-2V=B48|&-p{+sMVS7|zq8=s0)s8;|zo=_Zn zH}jwc&mP?*j}h5hAydTDr!R5POnXd)y2X#xM0@eWs`KVnXP|gC(i2i2V=?+VR0uu48gkUQU8KuI0`3&#!@6qB(@S%S1}Q<<+RPd|;1+ko zfB*C@pvsqszcq@XOzke%X~T8^@dIc?sTXCrdL(SCy$yh}e(?gw3P(rps>5y!^c*c` z8y!y_Loq`&MeHm8#Ty0Wh3AW|%hlJ zN9V_eQ%3Z7y%+CzlQnWpfBdG#r>RXTL)k<_M0($#0c1EeP>w;rheol-e8?SkNCV0K zU2-wM|B-Jncgh!BNt!pyYT1x=aP{oJjGdOc$qJhTaS$mIO#18C7}qmt-EntOKMv9C z-Gf0P+|0T0apyb%8*A&%Mo;kSU=DK2Q}9j{xM^*4PE~?AGsHbeuK_lyP7&tdcck9W z93N9wPZsI5lHa7|bzg+pky*-n<3=M&ACnNnKH-fa9rY8yE~=l>L!R>=zw+NK6HDk~ z$R_`3(AEy_3K{|tU`W}lRJR@%hllM$Dv79PQ|t`CTx*UAHaB2m!zZclR9`%sowW_< zcgw}k*_cRX4j!hwn9}Q08L;Ui&S2GCXprP*Mv;ltAwO}uJ^+1|op51bxC7{db*~d( zzG5ES&$t3*%%!dQ%xiDZxeuy7U}#vPbAoBLvG|09N4)zg)dmqVZ{?^xy~z#WB=F$5 z?#ituUtM3+y4q-NHMpO~O6Iz`5NMD}4IcKb)bv|S4kV=#3OtRxj;0>Gso$P-;bUs$ z**`3PV5+a@w*UDvtv;#iuui;KbHk1cW;eQf-;=&>HRuF5V=tw?b?f9M@PU|y&te3RsZuSUir-7%tDZ2$N z1wXxQtshw9ev^^TPkY3t-B`r%w4t_3{(y>6 z70;@QDR!H&2ZN)>0q@KE%=$M>y`(E=S53W=29t10T4o_OnSty1Ak7N01Du@5Lh~I} zuMc`>YZ%l)^^h{hgc->x96Fwx66J+#}5ZOm!{2ad+T>UBzHl|-PzcxR~44`(sh`F5mkGAr=aH?3}FFbULqx{?3trjCPW;rw&P7u=8DkVRwH3P zo`v>y^(8QhE@#_QJFVX7(+!E+LUXp)z0q-z5|Lv9V<0}9FAbU&^A3Z4Q-0PY`_#?W zf$r7n!qHE}``6bbiLy0`F-t!$c+oNIicMrsymtt}LtNWG3Tir-BwF&;yE%>eWXk zW6q!BYtEK9?=5jrzpY()dN}I*@Dj+QAOw4>{cON?%}L!pLGndD)0{71 znP%caw?gVm3gUgylZW&D8ZGA^6Hm@aoVOrd!TY?i=ZQ zK70OCo9~@2zmdGB-PPIdK`brC2mK#<=Q}bzuA+KSqgb;-Gh1zzCCz{_f8}L{)3Jq# z@i*hh%?Q>cse-CZr4bVFWlEx=`EPakUdzOQfLK4i*>!A>CnoxpAlcqq_eTrG2VG@% zn|hO8y=$qx7VilG6jac|48}%Av(7J!Jv2z$Id3@c@Z8+rzUD}YsS+9I!;Y!p@J0nu zCz$M-jSRmsJuvsPN{n8imu8Npgl5yUe*myhu%EP5w0X6IM#Tcnf{=(15TjAbM^sHY zeH2M~qn43i8oONo!4WiwmpN#DoOY>|DF}HsNsoox3~O4IB}hl&L02XOB@q^TbrNf% z@8gZ-8lfutOh+Xq6F9H1bRz5chxgUa3(uW4*}XA-J~#_`6vErf`%YA$@N;p1Dj0yu zo;V%!Uk?z*b>R+91>ZdP`T9?>0`$Bu{t z0)F|-&1+-n=n~9B)TKwdcSr0bMnziKTC=;EOCy)GKb%+$Q*3ckgW&zrht~WB+A-?9O}+mK zkHe`0GljVQkv)Sw!#gp>Ir(}*Jb@edpesVfl#)_3QTjcM1A0AaE{cX07A>#yh9Qr+M-E z^bDBhk8vNZzHzZK^QCqlGaZe}jx`dwxh3wDEh+Q?DtofoQ@fx+)D^=Oxa&6Q``rIW z)mukJ*>>&2K6U{XsH6fCBBFF7UD6`bDxE_&jDoa)bV~_HH$$T!9YZ$^-Q6)T-{yVZ z_qW!!7Rx`l?}a$mdF^xWqxL=DxE)U@~BrM2yIL6a)b?2zB%m`eFetJE1$d&fD0RG(e?iLt`C_Kuwx1s;=p-K_8wjqXG<=!?W#HkjdUHxf|dbKy~_b zWo8dT1Tlfte7pExnPuiZH*b-rl7rQ`#c_ObZm)GzB9ru3vq zh0-6+d+YYCIdTsLMwDz2!sYvv)iMrn)319OEUn zu`zr)+3jLHd9(Zy_N%2X^VP#kTxMK=@BnLt@u?|5BNH69X8_2=>$&ZP+e*FfbGh8C z9Na+YodlRKz-~#+PBV{M7|b`}zQ)tEt9)}wuBT+kHf!+xF+~~~KMx2abXIh<5#*`f zqxDj{l341Rp-)?1zg&V*R=Pmi&SXFFe?urSugfX^Uve2RH5$ z-vc9bq=WM@m_NTtd|}9K-jAZql`jl;C6g@bPd6`3bW1fr;L1>w1Dbb+*o+9!kGypy}$n zt7Q)=7gLu5*eI!Dr`}dxX^d_JXiPEfH7B8!G2N!Zu#zL~ekY^{1ll}5eRoQ39`rB9 z|9Y@>LD6o4rDw0-$CfA-HQIUo(rA}-naH#C2wN10zXm&YB+(bwxx4v<(LZ;U%)kG`gBX9>it9W2uF zS4y_t;JPTg^2S8ezF{-c64XK<6G^a2D4s8FtP%Sv@#c<*CPLFe<`9yB7V6P$Xw%m~ z4xOG&A9QaB#Ms9FQ>vrpcxHV$Zi*0~JHuy2lDx(_qa$TbM!mYFc*PK?(du$Up8MnE z$;@BK*AYf*(96=-@@ZqW;T_%$YwYqFi67!oq0A#C;IDz#9YJ23W1;r6ex8z$ zM%s3x{k^4j;$x>?KH93^uM26m)%r?aceoe92n#JM{4y=p=K637q2X8^SWT+!gfTFHEJ+5rqMFt(tW1|pD33gJrN1V! zGd@H4EX7y8<@kK4_oB?_Xz;MXuV7I4jz&F%%hD;W8Hf0HJ3E|BZQ15LPmt4QtmR>5aXdXo$+y8b-= z-lgpk?FNqMPR|6Avr|0ZQ7}sZ&c3!goY)5B9r?6z=rT<*BJ6Y!^cfmrYHwdAs-&I5S>)Op# zFsMU_jbf~#Keu1S)yl@*B&LF=mW!i2DH;M>f{mA2bA0)=Fhx}c;_iWfq$CIbno?Vh zfvnu!(@-rfgrtF_uGufJ)4OG!^*3iZWA~q2;BNV!%=cTZRSsK1F7plk4}<1^c;0&G zN3gZM9rAyrEOmHmmtd!Q+)NQa$>qcaA|W7#>78OSFD;vtS=$Hev|~-$0BStnge=<- zTZ;z5_in;yus#axVW`I_fSH-KP8)y`W!vlENDLj|N#>ctTM99^0V^@V?!@;HsqkS9 zk72NRa)o49gjXoLQJ(v^IBJJp%uNiy6Nj$j+9iUTh_~%orh_TD=l5VtY!aj!z&TJ# zmWG5sh_3kVcG(`PQ#bDbWC_<((f4q`#}>Sx6lxETD0a&TIHG6~>_6yualX8f5hO0W?%+21YGES2Sym9!xnKg==kXz%w5xS`ME+zqd8dq*h8ltmuHQ8e8)!@ovO zzNGw)L6V{7sTPy+1`Mq9O1IS()CqDjR50oYpb^f~suaMYv;`wId^pC>jLO5y=8ETF zc|)0yxviY-XW?Y=3~%V*6)J-Da#P{7lG7GfevW5gKL%!^Ap#R@$?P|jTf)h%|N9P!A&mn~_*ckeJ%4WJY`TU= zvm6S!EqpYS|R(
>gkrU=nzAdZaqWJLL3r^QYtM0q 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 4.8." + "Your gcc/g++ version is ${CMAKE_CXX_COMPILER_VERSION}, so native MD and the i-PI driver are disabled. To enable them, use gcc/g++ >= 4.8." ) endif() endif(BUILD_CPP_IF) @@ -562,9 +561,6 @@ if(BUILD_CPP_IF) if(ENABLE_IPI OR NOT BUILD_PY_IF) add_subdirectory(ipi/) endif() - if(NOT BUILD_PY_IF) - add_subdirectory(gmx/) - endif() endif() if(BUILD_NODEJS_IF) add_subdirectory(nodejs/) diff --git a/source/api_cc/include/DeepPot.h b/source/api_cc/include/DeepPot.h index 68fdc57b60..6a30eed7ea 100644 --- a/source/api_cc/include/DeepPot.h +++ b/source/api_cc/include/DeepPot.h @@ -42,7 +42,7 @@ class DeepPotBackend : public DeepBaseModelBackend { /** * @brief Evaluate the energy, force, virial, atomic energy, and atomic virial *by using this DP. - * @note The double precision interface is used by i-PI, GROMACS, ABACUS, and + * @note The double precision interface is used by i-PI, ABACUS, and *CP2k. * @param[out] ener The system energy. * @param[out] force The force on each atom. diff --git a/source/api_cc/include/DeepSpin.h b/source/api_cc/include/DeepSpin.h index 4fc9972378..07a447cd74 100644 --- a/source/api_cc/include/DeepSpin.h +++ b/source/api_cc/include/DeepSpin.h @@ -42,7 +42,7 @@ class DeepSpinBackend : public DeepBaseModelBackend { /** * @brief Evaluate the energy, force, magnetic force, virial, atomic energy, *and atomic virial by using this DP with spin input. - * @note The double precision interface is used by i-PI, GROMACS, ABACUS, and + * @note The double precision interface is used by i-PI, ABACUS, and *CP2k. * @param[out] ener The system energy. * @param[out] force The force on each atom. diff --git a/source/gmx/.gitignore b/source/gmx/.gitignore deleted file mode 100644 index a160cc9947..0000000000 --- a/source/gmx/.gitignore +++ /dev/null @@ -1 +0,0 @@ -CMakeLists.txt.patch diff --git a/source/gmx/CMakeLists.txt b/source/gmx/CMakeLists.txt deleted file mode 100644 index 8fde1e6ab8..0000000000 --- a/source/gmx/CMakeLists.txt +++ /dev/null @@ -1,50 +0,0 @@ -message(STATUS "Build GROMACS plugin") - -file(GLOB PATCH_VERSIONS patches/*) -foreach(PATCH_VERSION ${PATCH_VERSIONS}) - configure_file("${PATCH_VERSION}/CMakeLists.txt.patch.in" - "${PATCH_VERSION}/CMakeLists.txt.patch" @ONLY) -endforeach(PATCH_VERSION) - -set(libgmxname ${LIB_DEEPMD_GROMACS}) -file(GLOB LIB_SRC src/*.cpp) -file(GLOB INC_SRC include/*.h) - -add_library(${libgmxname} SHARED ${LIB_SRC}) -if(DP_USING_C_API) - target_link_libraries(${libgmxname} PUBLIC ${LIB_DEEPMD_C}) - target_precompile_headers(${libgmxname} PUBLIC [["deepmd.hpp"]]) - remove_definitions(-D_GLIBCXX_USE_CXX11_ABI=${OP_CXX_ABI}) -else() - target_link_libraries(${libgmxname} PUBLIC ${LIB_DEEPMD_CC}) - target_compile_definitions(${libgmxname} PUBLIC "DP_USE_CXX_API") -endif() -target_compile_definitions(${libgmxname} PRIVATE "DP_GMX_PLUGIN_INTERNAL") -target_include_directories(${libgmxname} - PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/include) -target_include_directories(${libgmxname} - PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../3rdparty/) - -set_target_properties( - ${libgmxname} PROPERTIES INSTALL_RPATH "$ORIGIN;${BACKEND_LIBRARY_PATH}") - -install( - FILES dp_gmx_patch - DESTINATION bin - PERMISSIONS - OWNER_READ - OWNER_WRITE - OWNER_EXECUTE - GROUP_READ - GROUP_EXECUTE - WORLD_READ - WORLD_EXECUTE) - -install( - DIRECTORY patches/ - DESTINATION share/deepmd_gromacs_patches - PATTERN */CMakeLists.txt.patch.in EXCLUDE) - -install(FILES ${INC_SRC} DESTINATION include/deepmd) - -install(TARGETS ${libgmxname} DESTINATION lib/) diff --git a/source/gmx/dp_gmx_patch b/source/gmx/dp_gmx_patch deleted file mode 100644 index 8df3f12cc6..0000000000 --- a/source/gmx/dp_gmx_patch +++ /dev/null @@ -1,133 +0,0 @@ -#!/bin/bash -DEEPMD_PATCH_SCRIPT_DIR=$(dirname $(readlink -f "$0")) -DEEPMD_PATCH_ROOT=${DEEPMD_PATCH_SCRIPT_DIR}/../share/deepmd_gromacs_patches -VERSION="NULL" -PATCH_FILES=("CMakeLists.txt" "src/gromacs/mdlib/forcerec.cpp" "src/gromacs/mdlib/sim_util.cpp" "src/gromacs/mdlib/forcerec.h") - -MANUAL="\ -usage: this is a deepmd-kit patch program for gromacs - -arguments: - -h print this help and exit - -d gromacs root - -p patch mode - -r revert mode - -v gromacs version (only support 2020.2 now) -" - -check () { - echo "- Checking GROMACS root: $1" - for ((i=0;i<${#PATCH_FILES[*]};i++)) - do - file=${PATCH_FILES[$i]} - if [ ! -e $1/${file} ]; then - echo "- $1/${file} not exist" - exit 1 - fi - done - echo "- Done" -} - -check_unpatched () { - for ((i=0;i<${#PATCH_FILES[*]};i++)) - do - file=${PATCH_FILES[$i]} - if [ -e ${GMX_ROOT}/${file}.predp ]; then - echo "- ERROR: This is a patched gromacs code, please revert first" - exit 1 - fi - done -} - -check_patched () { - for ((i=0;i<${#INSTALL_FILES[*]};i++)) - do - file=${INSTALL_FILES[$i]} - if [ ! -e ${GMX_ROOT}/${file} ]; then - echo "- WARNING: ${GMX_ROOT}/${file} not found" - fi - done - - for ((i=0;i<${#PATCH_FILES[*]};i++)) - do - file=${PATCH_FILES[$i]} - if [ ! -e ${GMX_ROOT}/${file}.predp ]; then - echo "- ERROR: backup file ${GMX_ROOT}/${file}.predp is lost" - exit 1 - fi - done -} - -dp_gmx_patch () { - echo "- Staring DeePMD-kit patch program to GROMACS ${VERSION}" - echo "- Mode: patch" - if [ ! -d $1 ]; then - echo "- ERROR: invalid gromacs root: $1" - exit 1 - else - check_unpatched $1 - check $1 - for ((i=0;i<${#PATCH_FILES[*]};i++)) - do - file=${PATCH_FILES[$i]} - patch -b -u ${GMX_ROOT}/${file} --suffix=.predp < ${DEEPMD_PATCH_ROOT}/${file}.patch > /dev/null - echo "- Installing ${GMX_ROOT}/${file}" - echo "- Backing up ${GMX_ROOT}/${file}.predp" - done - - for ((i=0;i<${#INSTALL_FILES[*]};i++)) - do - file=${INSTALL_FILES[$i]} - cp ${DEEPMD_PATCH_ROOT}/${file} ${GMX_ROOT}/${file} - echo "- Installing ${GMX_ROOT}/${file}" - done - echo "- Finished" - fi -} - -dp_gmx_revert () { - echo "- Staring DeePMD-kit patch program to GROMACS ${VERSION}" - echo "- Mode: revert" - check_patched $1 - if [ ! -d $1 ]; then - echo "- ERROR: invalid gromacs root: $1" - exit 1 - else - for ((i=0;i<${#INSTALL_FILES[*]};i++)) - do - file=${INSTALL_FILES[$i]} - rm ${GMX_ROOT}/${file} - echo "- Removing ${GMX_ROOT}/${file}" - done - - for ((i=0;i<${#PATCH_FILES[*]};i++)) - do - file=${PATCH_FILES[$i]} - patch ${GMX_ROOT}/${file} -R -u < ${DEEPMD_PATCH_ROOT}/${file}.patch > /dev/null - rm ${GMX_ROOT}/${file}.predp - echo "- Restoring from ${GMX_ROOT}/${file}.predp" - done - echo "- Finished" - fi -} - -check_version () { - case $1 in - "NULL") echo "- ERROR: Please specify a version from -v option" && exit 1;; - "2020.2") echo "- GROMACS version: 2020.2" ;; - *) echo "- ERROR: Invalid version" && exit 1 ;; - esac -} - - -while getopts "hprd:v:" opt -do - case ${opt} in - h) echo "${MANUAL}" && exit 0 ;; - d) GMX_ROOT=${OPTARG};; - v) VERSION=${OPTARG} && DEEPMD_PATCH_ROOT=${DEEPMD_PATCH_ROOT}/${VERSION} ;; - p) check_version ${VERSION} && dp_gmx_patch ${GMX_ROOT} ;; - r) check_version ${VERSION} && dp_gmx_revert ${GMX_ROOT} ;; - *) echo "- ERROR: Invalid option ${opt}" && exit 1 ;; - esac -done diff --git a/source/gmx/include/gmx_plugin.h b/source/gmx/include/gmx_plugin.h deleted file mode 100644 index 430ca2fe0d..0000000000 --- a/source/gmx/include/gmx_plugin.h +++ /dev/null @@ -1,37 +0,0 @@ -// SPDX-License-Identifier: LGPL-3.0-or-later -#ifndef _GMX_PLUGIN_H_ -#define _GMX_PLUGIN_H_ -#ifdef DP_USE_CXX_API -#include "DeepPot.h" -namespace deepmd_compat = deepmd; -#else -#ifdef DP_GMX_PLUGIN_INTERNAL -#include "deepmd.hpp" -#else -#include "deepmd/deepmd.hpp" -#endif -namespace deepmd_compat = deepmd::hpp; -#endif - -namespace deepmd { - -class DeepmdPlugin { - public: - DeepmdPlugin(); - DeepmdPlugin(char*); - ~DeepmdPlugin(); - void init_from_json(char*); - deepmd_compat::DeepPot* nnp; - std::vector dtype; - std::vector dindex; - bool pbc; - float lmd; - int natom; -}; - -} // namespace deepmd - -const float c_dp2gmx = 0.1; -const float e_dp2gmx = 96.48533132; -const float f_dp2gmx = 964.8533132; -#endif diff --git a/source/gmx/patches/2020.2/CMakeLists.txt.patch.in b/source/gmx/patches/2020.2/CMakeLists.txt.patch.in deleted file mode 100644 index 2386745b95..0000000000 --- a/source/gmx/patches/2020.2/CMakeLists.txt.patch.in +++ /dev/null @@ -1,29 +0,0 @@ ---- gromacs-2020.2/CMakeLists.txt 2020-04-30 16:33:43.000000000 +0000 -+++ gromacs-2020.2-deepmd/CMakeLists.txt 2021-09-20 08:07:34.000000000 +0000 -@@ -134,6 +134,26 @@ - # (i.e., something that is exposed in installed headers). - set(GMX_PUBLIC_LIBRARIES "") - -+# DeePMD-kit -+message(STATUS "Compiling with DeePMD-kit...") -+add_definitions(-w) # close warning -+# define deepmd and tensorflow root -+if (NOT DEFINED GMX_DEEPMD_ROOT) -+ set (GMX_DEEPMD_ROOT @CMAKE_INSTALL_PREFIX@) -+endif() -+if (NOT DEFINED GMX_TENSORFLOW_ROOT) -+ set (GMX_TENSORFLOW_ROOT @TENSORFLOW_ROOT@) -+endif() -+include_directories(${GMX_DEEPMD_ROOT}/include) -+include_directories(${GMX_TENSORFLOW_ROOT}/include) -+link_directories(${GMX_DEEPMD_ROOT}/lib) -+link_directories(${GMX_TENSORFLOW_ROOT}/lib) -+ -+ -+# add link libraries -+list (APPEND GMX_PUBLIC_LIBRARIES deepmd_gromacs) -+# DeePMD-kit -+ - ######################################################################## - # Check and warn if cache generated on a different host is being reused - ######################################################################## diff --git a/source/gmx/patches/2020.2/src/gromacs/mdlib/forcerec.cpp.patch b/source/gmx/patches/2020.2/src/gromacs/mdlib/forcerec.cpp.patch deleted file mode 100644 index b4133aa4c0..0000000000 --- a/source/gmx/patches/2020.2/src/gromacs/mdlib/forcerec.cpp.patch +++ /dev/null @@ -1,33 +0,0 @@ ---- /public/wangyingze/soft/gromacs-2020.2/src/gromacs/mdlib/forcerec.cpp 2020-04-30 16:33:43.000000000 +0000 -+++ /public/wangyingze/soft/gromacs-2020.2-deepmd/src/gromacs/mdlib/forcerec.cpp 2021-09-19 07:45:19.000000000 +0000 -@@ -98,6 +98,11 @@ - #include "gromacs/utility/smalloc.h" - #include "gromacs/utility/strconvert.h" - -+// Deepmd -+// #include "deepmd/gmx_plugin.h" -+deepmd::DeepmdPlugin* deepmdPlugin; -+bool useDeepmd; -+ - /*! \brief environment variable to enable GPU P2P communication */ - static const bool c_enableGpuPmePpComms = - (getenv("GMX_GPU_PME_PP_COMMS") != nullptr) && GMX_THREAD_MPI && (GMX_GPU == GMX_GPU_CUDA); -@@ -1491,6 +1496,18 @@ - { - fr->pmePpCommGpu = std::make_unique(cr->mpi_comm_mysim, cr->dd->pme_nodeid); - } -+ // Deepmd -+ deepmdPlugin = new deepmd::DeepmdPlugin; -+ char* json_file = getenv("GMX_DEEPMD_INPUT_JSON"); -+ if (json_file == NULL) -+ { -+ useDeepmd = false; -+ } -+ else -+ { -+ deepmdPlugin->init_from_json(json_file); -+ useDeepmd = true; -+ } - } - - t_forcerec::t_forcerec() = default; diff --git a/source/gmx/patches/2020.2/src/gromacs/mdlib/forcerec.h.patch b/source/gmx/patches/2020.2/src/gromacs/mdlib/forcerec.h.patch deleted file mode 100644 index 7ef9ce18d7..0000000000 --- a/source/gmx/patches/2020.2/src/gromacs/mdlib/forcerec.h.patch +++ /dev/null @@ -1,13 +0,0 @@ ---- /public/wangyingze/soft/gromacs-2020.2/src/gromacs/mdlib/forcerec.h 2020-04-30 16:33:43.000000000 +0000 -+++ /public/wangyingze/soft/gromacs-2020.2-deepmd/src/gromacs/mdlib/forcerec.h 2021-09-19 07:32:41.000000000 +0000 -@@ -44,6 +44,10 @@ - #include "gromacs/timing/wallcycle.h" - #include "gromacs/utility/arrayref.h" - -+#include "deepmd/gmx_plugin.h" -+extern deepmd::DeepmdPlugin* deepmdPlugin; -+extern bool useDeepmd; -+ - struct gmx_device_info_t; - struct gmx_hw_info_t; - struct t_commrec; diff --git a/source/gmx/patches/2020.2/src/gromacs/mdlib/sim_util.cpp.patch b/source/gmx/patches/2020.2/src/gromacs/mdlib/sim_util.cpp.patch deleted file mode 100644 index f87c421169..0000000000 --- a/source/gmx/patches/2020.2/src/gromacs/mdlib/sim_util.cpp.patch +++ /dev/null @@ -1,103 +0,0 @@ ---- /public/wangyingze/soft/gromacs-2020.2/src/gromacs/mdlib/sim_util.cpp 2020-04-30 16:33:43.000000000 +0000 -+++ /public/wangyingze/soft/gromacs-2020.2-deepmd/src/gromacs/mdlib/sim_util.cpp 2021-09-19 07:47:12.000000000 +0000 -@@ -34,6 +34,8 @@ - * To help us fund GROMACS development, we humbly ask that you cite - * the research papers on the package. Check out http://www.gromacs.org. - */ -+ -+#include - #include "gmxpre.h" - - #include "config.h" -@@ -114,6 +116,8 @@ - #include "gromacs/utility/strconvert.h" - #include "gromacs/utility/sysinfo.h" - -+#include "deepmd/gmx_plugin.h" -+ - using gmx::AtomLocality; - using gmx::DomainLifetimeWorkload; - using gmx::ForceOutputs; -@@ -1838,6 +1842,64 @@ - simulationWork.useGpuPmePpCommunication, false, wcycle); - } - -+ /* DeePMD-kit */ -+ double dener; -+ std::vector dforce; -+ if (useDeepmd) -+ { -+ if (DIM != 3) -+ { -+ gmx_fatal(FARGS, "DeePMD-kit does not support DIM < 3."); -+ } -+ else -+ { -+ std::vector dcoord; -+ std::vector dvirial; -+ dcoord.resize(deepmdPlugin->natom * DIM); -+ dforce.resize(deepmdPlugin->natom * DIM); -+ dvirial.resize(9); -+ /* init coord */ -+ for (int i = 0; i < deepmdPlugin->natom; i++) -+ { -+ for (int j = 0; j < DIM; j++) -+ { -+ dcoord[i * DIM + j] = as_rvec_array(x.unpaddedArrayRef().data())[deepmdPlugin->dindex[i]][j] / c_dp2gmx; -+ // std::cout << dcoord[i * DIM + j] << " "; -+ } -+ // std::cout << std::endl; -+ } -+ /* init coord */ -+ -+ /* init box */ -+ std::vector dbox; -+ if (deepmdPlugin->pbc) -+ { -+ dbox.resize(9); -+ for (int i = 0; i < DIM; i++) -+ { -+ for (int j = 0; j < DIM; j++) -+ { -+ dbox[i * DIM + j] = box[i][j] / c_dp2gmx; -+ } -+ } -+ } -+ else -+ { -+ dbox = {}; -+ } -+ /* init box */ -+ deepmdPlugin->nnp->compute(dener, dforce, dvirial, dcoord, deepmdPlugin->dtype, dbox); -+ -+ for (int i = 0; i < deepmdPlugin->natom; i++) -+ { -+ for (int j = 0; j < DIM; j++) -+ { -+ as_rvec_array(forceOut.forceWithShiftForces().force().data())[deepmdPlugin->dindex[i]][j] += dforce[i * DIM + j] * f_dp2gmx * deepmdPlugin->lmd; -+ } -+ } -+ } -+ } -+ - if (stepWork.computeForces) - { - post_process_forces(cr, step, nrnb, wcycle, top, box, as_rvec_array(x.unpaddedArrayRef().data()), -@@ -1848,13 +1910,16 @@ - { - /* Sum the potential energy terms from group contributions */ - sum_epot(&(enerd->grpp), enerd->term); -+ if (useDeepmd) -+ { -+ enerd->term[F_EPOT] += dener * e_dp2gmx * deepmdPlugin->lmd; -+ } - - if (!EI_TPI(inputrec->eI)) - { - checkPotentialEnergyValidity(step, *enerd, *inputrec); - } - } -- - /* In case we don't have constraints and are using GPUs, the next balancing - * region starts here. - * Some "special" work at the end of do_force_cuts?, such as vsite spread, diff --git a/source/gmx/src/gmx_plugin.cpp b/source/gmx/src/gmx_plugin.cpp deleted file mode 100644 index 53f02f1fbe..0000000000 --- a/source/gmx/src/gmx_plugin.cpp +++ /dev/null @@ -1,109 +0,0 @@ -// SPDX-License-Identifier: LGPL-3.0-or-later -#include "gmx_plugin.h" - -#include -#include -#include - -#include "json.hpp" - -using deepmd::DeepmdPlugin; - -DeepmdPlugin::DeepmdPlugin() { nnp = new deepmd_compat::DeepPot; } - -DeepmdPlugin::DeepmdPlugin(char* json_file) { - nnp = new deepmd_compat::DeepPot; - DeepmdPlugin::init_from_json(json_file); -} - -DeepmdPlugin::~DeepmdPlugin() { delete nnp; } - -void DeepmdPlugin::init_from_json(char* json_file) { - std::ifstream fp(json_file); - if (fp.is_open()) { - std::cout << "Init deepmd plugin from: " << json_file << std::endl; - nlohmann::json jdata; - fp >> jdata; - std::string graph_file = jdata["graph_file"]; - std::string type_file = jdata["type_file"]; - std::string index_file = jdata["index_file"]; - - /* lambda */ - if (jdata.contains("lambda")) { - DeepmdPlugin::lmd = jdata["lambda"]; - } else { - DeepmdPlugin::lmd = 1.0; - } - std::cout << "Setting lambda: " << DeepmdPlugin::lmd << std::endl; - /* lambda */ - - /* pbc */ - if (jdata.contains("pbc")) { - DeepmdPlugin::pbc = jdata["pbc"]; - } else { - DeepmdPlugin::pbc = true; - } - std::cout << "Setting pbc: " << DeepmdPlugin::pbc << std::endl; - /* pbc */ - - std::string line; - std::istringstream iss; - int val; - - /* read type file */ - std::ifstream ft(type_file); - if (ft.is_open()) { - getline(ft, line); - iss.clear(); - iss.str(line); - while (iss >> val) { - DeepmdPlugin::dtype.push_back(val); - } - DeepmdPlugin::natom = DeepmdPlugin::dtype.size(); - std::cout << "Number of atoms: " << DeepmdPlugin::natom << std::endl; - } else { - std::cerr << "Not found type file: " << type_file << std::endl; - exit(1); - } - /* read type file */ - - /* read index file */ - std::ifstream fi(index_file); - if (fi.is_open()) { - getline(fi, line); - iss.clear(); - iss.str(line); - while (iss >> val) { - DeepmdPlugin::dindex.push_back(val); - } - if (DeepmdPlugin::dindex.size() != DeepmdPlugin::natom) { - std::cerr << "Number of atoms in index file (" - << DeepmdPlugin::dindex.size() - << ") does not match type file (" << DeepmdPlugin::natom - << ")!" << std::endl; - exit(1); - } - } else { - std::cerr << "Not found index file: " << index_file << std::endl; - exit(1); - } - /* read index file */ - - /* init model */ - std::cout << "Begin Init Model: " << graph_file << std::endl; - DeepmdPlugin::nnp->init(graph_file); - std::cout << "Successfully load model!" << std::endl; - std::string summary; - DeepmdPlugin::nnp->print_summary(summary); - std::cout << "Summary: " << std::endl << summary << std::endl; - std::string map; - DeepmdPlugin::nnp->get_type_map(map); - std::cout << "Atom map: " << map << std::endl; - /* init model */ - - std::cout << "Successfully init plugin!" << std::endl; - } else { - std::cerr << "Invalid json file: " << json_file << std::endl; - exit(1); - } -} From cd17e993d924f2b3843be1804e9828dded01e485 Mon Sep 17 00:00:00 2001 From: "njzjz-bot (driven by OpenClaw (model: custom-chat-jinzhezeng-group/gpt-5.4))[bot]" <48687836+njzjz-bot@users.noreply.github.com> Date: Sun, 5 Apr 2026 15:06:39 +0000 Subject: [PATCH 2/4] docs(gromacs): clarify third-party support status Adjust the GROMACS deprecation messaging to keep the external support story visible while making it clear that the in-tree patch was removed in v3.2.0. Also restore the third-party GROMACS page in the docs navigation and add a concise overview of the externally maintained GROMACS NNPot-based integration reported in arXiv:2602.02234, including its demonstrated capabilities and current scope limits. Authored by OpenClaw (model: custom-chat-jinzhezeng-group/gpt-5.4) --- README.md | 2 +- doc/install/install-gromacs.md | 4 ++-- doc/third-party/gromacs.md | 20 +++++++++----------- doc/third-party/index.rst | 1 + doc/third-party/out-of-deepmd-kit.md | 23 +++++++++++++++++++++++ 5 files changed, 36 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index 420481f8be..dccaae3492 100644 --- a/README.md +++ b/README.md @@ -20,7 +20,7 @@ For more information, check the [documentation](https://deepmd.readthedocs.io/). ### Highlighted features - **interfaced with multiple backends**, including TensorFlow, PyTorch, JAX, and Paddle, the most popular deep learning frameworks, making the training process highly automatic and efficient. -- **interfaced with high-performance classical MD and quantum (path-integral) MD packages**, including LAMMPS, i-PI, AMBER, CP2K, OpenMM, and ABACUS. +- **interfaced with high-performance classical MD and quantum (path-integral) MD packages**, including LAMMPS, i-PI, AMBER, CP2K, GROMACS (via third-party integrations), OpenMM, and ABACUS. - **implements the Deep Potential series models**, which have been successfully applied to finite and extended systems, including organic molecules, metals, semiconductors, insulators, etc. - **implements MPI and GPU supports**, making it highly efficient for high-performance parallel and distributed computing. - **highly modularized**, easy to adapt to different descriptors for deep learning-based potential energy models. diff --git a/doc/install/install-gromacs.md b/doc/install/install-gromacs.md index d75a272854..8686f35984 100644 --- a/doc/install/install-gromacs.md +++ b/doc/install/install-gromacs.md @@ -6,12 +6,12 @@ orphan: true ::::{danger} -:::{deprecated} next release +:::{deprecated} v3.2.0 The in-tree GROMACS patch that used to ship with DeePMD-kit is no longer maintained and has been removed from the repository. For supported production workflows, use the official [LAMMPS interface](./install-lammps.md). -If you still need a GROMACS-based workflow, consider the third-party implementation mentioned in [issue #5360](https://github.com/deepmodeling/deepmd-kit/issues/5360), which was reported at . +If you need a GROMACS-based workflow, see the third-party overview in [Running MD with GROMACS](../third-party/gromacs.md) and [Interfaces out of DeePMD-kit](../third-party/out-of-deepmd-kit.md). ::: :::: diff --git a/doc/third-party/gromacs.md b/doc/third-party/gromacs.md index f1c05ad42b..554dc76965 100644 --- a/doc/third-party/gromacs.md +++ b/doc/third-party/gromacs.md @@ -1,17 +1,15 @@ ---- -orphan: true ---- +# Running MD with GROMACS -# GROMACS support has been deprecated +::::{important} -::::{danger} +:::{deprecated} v3.2.0 +The official in-tree GROMACS patch has been removed from DeePMD-kit and is no longer maintained. +::: -:::{deprecated} next release -The official GROMACS patch that used to live in the DeePMD-kit repository is no longer maintained and has been removed. +:::: -For supported production use, prefer the official [LAMMPS interface](../install/install-lammps.md) together with the [LAMMPS runtime documentation](./lammps-command.md). +DeePMD-kit may still be used with GROMACS through third-party integrations maintained outside this repository. -If you still need a GROMACS-based workflow, consider the third-party implementation mentioned in [issue #5360](https://github.com/deepmodeling/deepmd-kit/issues/5360), which was reported at . -::: +For supported production workflows maintained in-tree, prefer the official [LAMMPS interface](../install/install-lammps.md) together with the [LAMMPS runtime documentation](./lammps-command.md). -:::: +For currently known external implementations, see [Interfaces out of DeePMD-kit](./out-of-deepmd-kit.md#third-party-gromacs-interface-to-deepmd-kit). diff --git a/doc/third-party/index.rst b/doc/third-party/index.rst index 2704e9d30c..cd0726a4bb 100644 --- a/doc/third-party/index.rst +++ b/doc/third-party/index.rst @@ -10,4 +10,5 @@ Note that the model for inference is required to be compatible with the DeePMD-k ase lammps-command ipi + gromacs out-of-deepmd-kit diff --git a/doc/third-party/out-of-deepmd-kit.md b/doc/third-party/out-of-deepmd-kit.md index a04ba9741b..b2a89fba85 100644 --- a/doc/third-party/out-of-deepmd-kit.md +++ b/doc/third-party/out-of-deepmd-kit.md @@ -12,6 +12,29 @@ It is also the first example to the DeePMD-kit [plugin mechanism](../development ## C/C++ interface used by other packages +### Third-party GROMACS interface to DeePMD-kit + +A third-party GROMACS integration based on the GROMACS Neural Network Potentials (NNPot) infrastructure is reported in [Enabling AI Deep Potentials for Ab Initio-quality Molecular Dynamics Simulations in GROMACS](https://arxiv.org/abs/2602.02234) and maintained outside the DeePMD-kit repository at [HuXioAn/gromacs/tree/deepmd-oneModel](https://github.com/HuXioAn/gromacs/tree/deepmd-oneModel). + +According to the paper, this implementation + +- couples GROMACS NNPot to the DeePMD-kit C++/CUDA inference backend; +- enables inference for multiple DeePMD model families, including `se_e2_a`, `DPA`, `DPA2`, and `DPA3`; +- relies on DeePMD-kit's multi-backend support, with the paper demonstrating runs with the PyTorch backend and discussing TensorFlow and JAX support through DeePMD-kit; +- supports using DeePMD-kit for selected atom groups inside GROMACS NNPot workflows, including hybrid classical/DP simulations; +- is demonstrated on protein-in-water systems (1YRF, 1UBQ, 3LZM, and 2PTC) on NVIDIA A100 and GH200 GPUs. + +The paper shows a workflow where DeePMD-kit provides the short-range interactions for a selected atom group, while the remaining interactions continue to be handled by standard GROMACS force-field terms. In the reported protein-in-water examples, DeePMD-kit is used for the protein internal interactions, while water and protein-water interactions remain classical. + +The same study also notes current scope limitations: + +- the benchmarks enable DeePMD inference only in the production MD stage, not in EM/NVT/NPT; +- the reported implementation uses single-rank inference inside the current GROMACS NNPot design; +- scalability and domain-decomposed inference remain optimization targets; +- some DPA3 benchmark cases run out of GPU memory on the tested hardware. + +This interface is maintained outside DeePMD-kit. Please consult the corresponding third-party repository and paper for build instructions, supported GROMACS versions, and runtime details. + ### OpenMM plugin for DeePMD-kit An [OpenMM](https://github.com/openmm/openmm) plugin is provided from [JingHuangLab/openmm_deepmd_plugin](https://github.com/JingHuangLab/openmm_deepmd_plugin), written by the [Huang Lab](http://www.compbiophysics.org/) at Westlake University. From 42cbfe33e67858d0c2bb316a02d5ed1bfadd4e26 Mon Sep 17 00:00:00 2001 From: "njzjz-bot (driven by OpenClaw (model: custom-chat-jinzhezeng-group/gpt-5.4))[bot]" <48687836+njzjz-bot@users.noreply.github.com> Date: Sun, 5 Apr 2026 15:08:43 +0000 Subject: [PATCH 3/4] docs(readme): keep interface list wording neutral Do not single out GROMACS as a third-party integration in the README feature list, since several listed interfaces are also maintained outside the DeePMD-kit repository. Authored by OpenClaw (model: custom-chat-jinzhezeng-group/gpt-5.4) --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index dccaae3492..5ca8080e77 100644 --- a/README.md +++ b/README.md @@ -20,7 +20,7 @@ For more information, check the [documentation](https://deepmd.readthedocs.io/). ### Highlighted features - **interfaced with multiple backends**, including TensorFlow, PyTorch, JAX, and Paddle, the most popular deep learning frameworks, making the training process highly automatic and efficient. -- **interfaced with high-performance classical MD and quantum (path-integral) MD packages**, including LAMMPS, i-PI, AMBER, CP2K, GROMACS (via third-party integrations), OpenMM, and ABACUS. +- **interfaced with high-performance classical MD and quantum (path-integral) MD packages**, including LAMMPS, i-PI, AMBER, CP2K, GROMACS, OpenMM, and ABACUS. - **implements the Deep Potential series models**, which have been successfully applied to finite and extended systems, including organic molecules, metals, semiconductors, insulators, etc. - **implements MPI and GPU supports**, making it highly efficient for high-performance parallel and distributed computing. - **highly modularized**, easy to adapt to different descriptors for deep learning-based potential energy models. From 584f44b2f198440ab15b6e04b4f1b938eef1cc35 Mon Sep 17 00:00:00 2001 From: "njzjz-bot (driven by OpenClaw (model: custom-chat-jinzhezeng-group/gpt-5.4))[bot]" <48687836+njzjz-bot@users.noreply.github.com> Date: Sun, 5 Apr 2026 15:16:09 +0000 Subject: [PATCH 4/4] docs(gromacs): tighten manual wording and review fixes Refine the GROMACS-related documentation to read like software manual content rather than a paper summary, while keeping the third-party pointer and scope notes useful for users. Also fix the gcc 4.8 boundary inconsistency by aligning the CMake i-PI guard with the documented threshold in troubleshooting. Authored by OpenClaw (model: custom-chat-jinzhezeng-group/gpt-5.4) --- doc/install/install-gromacs.md | 4 ++-- doc/third-party/gromacs.md | 2 +- doc/third-party/out-of-deepmd-kit.md | 24 +++++++++++------------- doc/troubleshooting/installation.md | 2 +- source/CMakeLists.txt | 2 +- 5 files changed, 16 insertions(+), 18 deletions(-) diff --git a/doc/install/install-gromacs.md b/doc/install/install-gromacs.md index 8686f35984..4857c56d84 100644 --- a/doc/install/install-gromacs.md +++ b/doc/install/install-gromacs.md @@ -2,12 +2,12 @@ orphan: true --- -# GROMACS patch has been deprecated +# GROMACS patch was removed from DeePMD-kit ::::{danger} :::{deprecated} v3.2.0 -The in-tree GROMACS patch that used to ship with DeePMD-kit is no longer maintained and has been removed from the repository. +The in-tree GROMACS patch was removed from the DeePMD-kit repository in v3.2.0 and is no longer maintained. For supported production workflows, use the official [LAMMPS interface](./install-lammps.md). diff --git a/doc/third-party/gromacs.md b/doc/third-party/gromacs.md index 554dc76965..d4da93a97a 100644 --- a/doc/third-party/gromacs.md +++ b/doc/third-party/gromacs.md @@ -3,7 +3,7 @@ ::::{important} :::{deprecated} v3.2.0 -The official in-tree GROMACS patch has been removed from DeePMD-kit and is no longer maintained. +The official in-tree GROMACS patch was removed from DeePMD-kit in v3.2.0 and is no longer maintained. ::: :::: diff --git a/doc/third-party/out-of-deepmd-kit.md b/doc/third-party/out-of-deepmd-kit.md index b2a89fba85..729a3851fd 100644 --- a/doc/third-party/out-of-deepmd-kit.md +++ b/doc/third-party/out-of-deepmd-kit.md @@ -14,26 +14,24 @@ It is also the first example to the DeePMD-kit [plugin mechanism](../development ### Third-party GROMACS interface to DeePMD-kit -A third-party GROMACS integration based on the GROMACS Neural Network Potentials (NNPot) infrastructure is reported in [Enabling AI Deep Potentials for Ab Initio-quality Molecular Dynamics Simulations in GROMACS](https://arxiv.org/abs/2602.02234) and maintained outside the DeePMD-kit repository at [HuXioAn/gromacs/tree/deepmd-oneModel](https://github.com/HuXioAn/gromacs/tree/deepmd-oneModel). +A third-party GROMACS interface to DeePMD-kit is available outside this repository at [HuXioAn/gromacs/tree/deepmd-oneModel](https://github.com/HuXioAn/gromacs/tree/deepmd-oneModel). It is based on the GROMACS Neural Network Potentials (NNPot) infrastructure and is described in [Enabling AI Deep Potentials for Ab Initio-quality Molecular Dynamics Simulations in GROMACS](https://arxiv.org/abs/2602.02234). -According to the paper, this implementation +According to that implementation and paper, this interface supports -- couples GROMACS NNPot to the DeePMD-kit C++/CUDA inference backend; -- enables inference for multiple DeePMD model families, including `se_e2_a`, `DPA`, `DPA2`, and `DPA3`; -- relies on DeePMD-kit's multi-backend support, with the paper demonstrating runs with the PyTorch backend and discussing TensorFlow and JAX support through DeePMD-kit; -- supports using DeePMD-kit for selected atom groups inside GROMACS NNPot workflows, including hybrid classical/DP simulations; -- is demonstrated on protein-in-water systems (1YRF, 1UBQ, 3LZM, and 2PTC) on NVIDIA A100 and GH200 GPUs. +- DeePMD-kit inference through the C++/CUDA backend; +- multiple DeePMD model families, including `se_e2_a`, `DPA`, `DPA2`, and `DPA3`; +- hybrid workflows where DeePMD-kit is applied to selected atom groups inside a GROMACS simulation. -The paper shows a workflow where DeePMD-kit provides the short-range interactions for a selected atom group, while the remaining interactions continue to be handled by standard GROMACS force-field terms. In the reported protein-in-water examples, DeePMD-kit is used for the protein internal interactions, while water and protein-water interactions remain classical. +The reported examples use protein-in-water systems, where DeePMD-kit is applied to the protein internal interactions while water and protein-water interactions remain classical. -The same study also notes current scope limitations: +Users should also be aware of the current scope reported by the third-party project: -- the benchmarks enable DeePMD inference only in the production MD stage, not in EM/NVT/NPT; -- the reported implementation uses single-rank inference inside the current GROMACS NNPot design; -- scalability and domain-decomposed inference remain optimization targets; +- the published benchmarks enable DeePMD only in the production MD stage, not in EM/NVT/NPT; +- the reported implementation uses single-rank inference in the current GROMACS NNPot workflow; +- scalability and domain-decomposed inference are described as future optimization targets; - some DPA3 benchmark cases run out of GPU memory on the tested hardware. -This interface is maintained outside DeePMD-kit. Please consult the corresponding third-party repository and paper for build instructions, supported GROMACS versions, and runtime details. +This interface is maintained outside DeePMD-kit. Please refer to the corresponding third-party repository for installation instructions, supported GROMACS versions, and runtime details. ### OpenMM plugin for DeePMD-kit diff --git a/doc/troubleshooting/installation.md b/doc/troubleshooting/installation.md index e7db819e80..759dca2d6a 100644 --- a/doc/troubleshooting/installation.md +++ b/doc/troubleshooting/installation.md @@ -2,7 +2,7 @@ ## Inadequate versions of gcc/g++ -Sometimes you may use a gcc/g++ of version < 4.8. In this way, you can still compile all the parts of TensorFlow and most of the parts of DeePMD-kit, but the i-PI driver will be disabled automatically. Or if you have a gcc/g++ of version > 4.8, say, 7.2.0, you may choose to use it by doing +Sometimes you may use a gcc/g++ of version < 4.8. In this way, you can still compile all the parts of TensorFlow and most of the parts of DeePMD-kit, but the i-PI driver will be disabled automatically. Or if you have a gcc/g++ of version >= 4.8, say, 7.2.0, you may choose to use it by doing ```bash export CC=/path/to/gcc-7.2.0/bin/gcc diff --git a/source/CMakeLists.txt b/source/CMakeLists.txt index f21652126e..3bfec12490 100644 --- a/source/CMakeLists.txt +++ b/source/CMakeLists.txt @@ -556,7 +556,7 @@ if(BUILD_CPP_IF) if(LAMMPS_VERSION OR NOT BUILD_PY_IF) add_subdirectory(lmp/) endif() - if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 4.8) + if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 4.8) # add_subdirectory (md/) if(ENABLE_IPI OR NOT BUILD_PY_IF) add_subdirectory(ipi/)