{ "cells": [ { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "# All distances between two selections\n", "\n", "Here we use ``distances.distance_array`` to quantify the distances between each atom of a target set to each atom in a reference set, and show how we can extend that to calculating the distances between the centers-of-mass of residues.\n", "\n", "**Last updated:** December 2022 with MDAnalysis 2.4.0-dev0\n", "\n", "**Minimum version of MDAnalysis:** 0.19.0\n", "\n", "**Packages required:**\n", " \n", "* MDAnalysis (Michaud-Agrawal *et al.*, 2011, Gowers *et al.*, 2016)\n", "* MDAnalysisTests\n", " \n", "**Optional packages for visualisation:**\n", "\n", "* [matplotlib](https://matplotlib.org)\n", "\n" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "execution": { "iopub.execute_input": "2021-05-19T05:57:18.511813Z", "iopub.status.busy": "2021-05-19T05:57:18.511175Z", "iopub.status.idle": "2021-05-19T05:57:19.158622Z", "shell.execute_reply": "2021-05-19T05:57:19.159054Z" } }, "outputs": [], "source": [ "import MDAnalysis as mda\n", "from MDAnalysis.tests.datafiles import PDB_small\n", "from MDAnalysis.analysis import distances\n", "\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "%matplotlib inline\n", "\n", "import warnings\n", "# suppress some MDAnalysis warnings when writing PDB files\n", "warnings.filterwarnings('ignore')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Loading files" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The test files we will be working with here feature adenylate kinase (AdK), a phosophotransferase enzyme. (Beckstein *et al.*, 2009) AdK has three domains: \n", "\n", " * CORE\n", " * LID: an ATP-binding domain (residues 122-159)\n", " * NMP: an AMP-binding domain (residues 30-59)\n", " " ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "execution": { "iopub.execute_input": "2021-05-19T05:57:19.163708Z", "iopub.status.busy": "2021-05-19T05:57:19.163183Z", "iopub.status.idle": "2021-05-19T05:57:19.318656Z", "shell.execute_reply": "2021-05-19T05:57:19.319052Z" } }, "outputs": [], "source": [ "u = mda.Universe(PDB_small) # open AdK" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Calculating atom-to-atom distances between non-matching coordinate arrays" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We select the alpha-carbon atoms of each domain." ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "execution": { "iopub.execute_input": "2021-05-19T05:57:19.323326Z", "iopub.status.busy": "2021-05-19T05:57:19.322771Z", "iopub.status.idle": "2021-05-19T05:57:19.326254Z", "shell.execute_reply": "2021-05-19T05:57:19.326616Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "LID has 38 residues and NMP has 30 residues\n" ] } ], "source": [ "LID_ca = u.select_atoms('name CA and resid 122-159')\n", "NMP_ca = u.select_atoms('name CA and resid 30-59')\n", "\n", "n_LID = len(LID_ca)\n", "n_NMP = len(NMP_ca)\n", "print('LID has {} residues and NMP has {} residues'.format(n_LID, n_NMP))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "`distances.distance_array`([API docs](https://docs.mdanalysis.org/stable/documentation_pages/analysis/distances.html#MDAnalysis.analysis.distances.distance_array)) will produce an array with shape `(n, m)` distances if there are `n` positions in the reference array and `m` positions in the other configuration. If you want to calculate distances following the minimum image convention, you *must* pass the universe dimensions into the ``box`` keyword." ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "execution": { "iopub.execute_input": "2021-05-19T05:57:19.332303Z", "iopub.status.busy": "2021-05-19T05:57:19.331707Z", "iopub.status.idle": "2021-05-19T05:57:19.333831Z", "shell.execute_reply": "2021-05-19T05:57:19.334305Z" } }, "outputs": [ { "data": { "text/plain": [ "(38, 30)" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dist_arr = distances.distance_array(LID_ca.positions, # reference\n", " NMP_ca.positions, # configuration\n", " box=u.dimensions)\n", "dist_arr.shape" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Plotting distance as a heatmap" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "execution": { "iopub.execute_input": "2021-05-19T05:57:19.362840Z", "iopub.status.busy": "2021-05-19T05:57:19.351895Z", "iopub.status.idle": "2021-05-19T05:57:19.476555Z", "shell.execute_reply": "2021-05-19T05:57:19.476918Z" }, "scrolled": true }, "outputs": [ { "data": { "text/plain": [ "Text(0, 0.5, 'Distance (Angstrom)')" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAcoAAAHFCAYAAAByyrkJAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8o6BhiAAAACXBIWXMAAA9hAAAPYQGoP6dpAABpCklEQVR4nO3deXhTVfoH8G+apGm6Qlu6QWnZtwIuKIsO+1YqiCCCIBbGccVRBkZHVKQMAwUUFEVwUNYRBBHKoCBQZXUULGWKuKD0RwuFFgql+5JmOb8/mEZC29zTJtAl3w9Pnockb849d0lPzrnnvlclhBAgIiKiKrnVdQWIiIjqMzaUREREdrChJCIisoMNJRERkR1sKImIiOxgQ0lERGQHG0oiIiI72FASERHZwYaSiIjIDjaUDlq3bh1UKpX14eHhgZCQEAwYMADx8fHIzs6u9Jm4uDioVKoaLaekpARxcXE4ePCgk2pet9LT06FSqfDWW285rczMzEzExcUhJSXFaWU2VBXHZXp6eo0/eyv2TX2gUqnw/PPP13U1qAFiQ+kka9euxXfffYfExES8//77uOOOO7Bo0SJ06tQJX331lU3sn/70J3z33Xc1Kr+kpARz585tNA3lrZCZmYm5c+eyoSQip9LUdQUai6ioKPTo0cP6fOzYsfjLX/6C+++/H2PGjMGZM2cQHBwMAGjRogVatGhRV1UlcimlpaXQ6/V1XQ1qwNijvIVatmyJJUuWoLCwEP/85z+tr1c19Lp//370798fAQEB0Ov1aNmyJcaOHYuSkhKkp6ejWbNmAIC5c+dah3mnTJkCAEhNTcXUqVPRrl07eHp6onnz5hg5ciROnTpls4yDBw9CpVLhk08+wWuvvYawsDD4+vpi8ODB+PXXXyvVf8+ePRg0aBD8/Pzg6emJTp06IT4+3ibm+PHjGDVqFPz9/eHh4YE777wTn376qfQ2slgsmD9/Plq2bAkPDw/06NEDX3/9daW4M2fOYOLEiQgKCoJOp0OnTp3w/vvv26zbPffcAwCYOnWqdRvFxcVh165dUKlUSEpKssZv27YNKpUKMTExNsvp1q0bxo4da30uhMCKFStwxx13QK/Xo2nTpnj44Ydx9uzZSnX86quvMGjQIPj6+sLT0xP33XdfpXWp2Pc//fQTHn30Ufj5+SE4OBh//OMfkZ+fr7i9EhMT8eCDD6JFixbw8PBA27Zt8fTTT+Pq1auKn+3fvz+ioqJw5MgR9OrVC3q9Hs2bN8fs2bNhNpur/MzSpUvRqlUreHt7o3fv3jh69KjN+8ePH8eECRMQGRkJvV6PyMhIPProozh37pxifSrk5eVh5syZaN26NXQ6HYKCgjBixAicPn3aGjN37lz07NkT/v7+8PX1xV133YXVq1fj5ns6REZG4oEHHsD27dtx5513wsPDA3PnzrWJ+ec//4n27dtDp9Ohc+fO2Lx5c6U6/fjjj3jwwQfRtGlTeHh44I477sD69ettYmr6faIGTJBD1q5dKwCIpKSkKt8vKioSarVaDBo0yPranDlzxI2bPi0tTXh4eIghQ4aIHTt2iIMHD4qNGzeKyZMni9zcXFFWVib27NkjAIgnnnhCfPfdd+K7774TqampQgghDh06JGbOnCk+++wzcejQIZGQkCBGjx4t9Hq9OH36tHU5Bw4cEABEZGSkmDRpkti1a5f45JNPRMuWLUW7du2EyWSyxn700UdCpVKJ/v37i02bNomvvvpKrFixQjz33HPWmP379wt3d3fxhz/8QWzZskXs2bNHTJkyRQAQa9eutbvd0tLSBAARHh4u7r//frFt2zaxdetWcc899witViu+/fZba+xPP/0k/Pz8RNeuXcWGDRvEvn37xMyZM4Wbm5uIi4sTQgiRn59v3Revv/66dRtlZGSIwsJCodVqxYIFC6xlPvPMM0Kv1wsvLy9RXl4uhBDi8uXLQqVSiRUrVljjnnzySaHVasXMmTPFnj17xKZNm0THjh1FcHCwuHTpkjXuX//6l1CpVGL06NFi+/bt4vPPPxcPPPCAUKvV4quvvqq07zt06CDeeOMNkZiYKJYuXSp0Op2YOnWq3W0mhBArV64U8fHxYufOneLQoUNi/fr1onv37qJDhw7W9RDi9+MyLS3N+lq/fv1EQECACAsLE++++67Yu3eveOGFFwQAMW3atEr7JjIyUgwfPlzs2LFD7NixQ3Tt2lU0bdpU5OXlWWO3bt0q3njjDZGQkCAOHTokNm/eLPr16yeaNWsmrly5org+BQUFokuXLsLLy0v8/e9/F3v37hXbtm0TL774oti/f781bsqUKWL16tUiMTFRJCYminnz5gm9Xi/mzp1rU15ERIQIDQ0VrVu3FmvWrBEHDhwQ33//vRBCWI+3zp07i08++UTs3LlTDB8+XAAQW7dutZZx+vRp4ePjI9q0aSM2bNggdu3aJR599FEBQCxatMgaV5PvEzVsbCgdpNRQCiFEcHCw6NSpk/X5zQ3lZ599JgCIlJSUasu4cuWKACDmzJmjWCeTySTKy8tFu3btxF/+8hfr6xVf7BEjRtjEf/rppwKA+O6774QQQhQWFgpfX19x//33C4vFUu1yOnbsKO68805hNBptXn/ggQdEaGioMJvN1X624o9xWFiYKC0ttb5eUFAg/P39xeDBg62vDRs2TLRo0ULk5+fblPH8888LDw8Pce3aNSGEEElJSdU20vfff78YOHCg9Xnbtm3FSy+9JNzc3MShQ4eEEEJs3LhRABC//fabEEKI7777TgAQS5YssSkrIyND6PV68fLLLwshhCguLhb+/v5i5MiRNnFms1l0795d3HvvvdbXKvb94sWLbWKfe+454eHhYXd738xisQij0SjOnTsnAIh///vf1veqayhvjhPi+o8BNzc3ce7cOSHE7/uma9euNn/sv//+ewFAfPLJJ9XWyWQyiaKiIuHl5SWWLVumuA5///vfBQCRmJgou9rCbDYLo9Eo/v73v4uAgACbbRYRESHUarX49ddfK30OgNDr9TY/cEwmk+jYsaNo27at9bUJEyYInU4nzp8/b/P56Oho4enpaf2hIPt9ooaPQ6+3gVC45ecdd9wBd3d3PPXUU1i/fn2Vw3r2mEwmLFiwAJ07d4a7uzs0Gg3c3d1x5swZ/PLLL5XiR40aZfO8W7duAGAdLvv2229RUFCA5557rtrZuampqTh9+jQmTZpkrUPFY8SIEcjKypIafhozZgw8PDysz318fDBy5EgcPnwYZrMZZWVl+Prrr/HQQw/B09Oz0nLKysoqDQdWZdCgQfjPf/6D0tJSnDt3DqmpqZgwYQLuuOMOJCYmArg+dNqyZUu0a9cOAPDFF19ApVLhscces1luSEgIunfvbp1Y9e233+LatWuIjY21ibNYLBg+fDiSkpJQXFxsU5+q9kFZWVmVs6RvlJ2djWeeeQbh4eHQaDTQarWIiIgAgCr39c18fHwqLXvixImwWCw4fPiwzesxMTFQq9U2dQRgM6xaVFSEv/3tb2jbti00Gg00Gg28vb1RXFxsU58bt4vJZLJ+J7788ku0b98egwcPtlvv/fv3Y/DgwfDz84NarYZWq8Ubb7yBnJycStusW7duaN++fZXlDBo0yDpXAADUajXGjx+P1NRUXLhwwbqsQYMGITw83OazU6ZMQUlJSaWJeErfJ2r42FDeYsXFxcjJyUFYWFi1MW3atMFXX32FoKAgTJs2DW3atEGbNm2wbNkyqWXMmDEDs2fPxujRo/H555/j2LFjSEpKQvfu3VFaWlopPiAgwOa5TqcDAGvslStXAMDuhKPLly8DAP76179Cq9XaPJ577jkAkDpvFhISUuVr5eXlKCoqQk5ODkwmE957771KyxkxYoT0cgYPHgyDwYBvvvkGiYmJCAwMxJ133onBgwdbZyV//fXXNn+wL1++DCEEgoODKy376NGj1uVWbIuHH364UtyiRYsghMC1a9ds6qO0D6pisVgwdOhQbN++HS+//DK+/vprfP/999YfCvY+W+HGRqJCxT7IycmpcR0nTpyI5cuX409/+hP27t2L77//HklJSWjWrJlN3M3bpeJ835UrVxQntn3//fcYOnQoAODDDz/Ef/7zHyQlJeG1116rcr1DQ0OrLau64+3G9c/JyamyjIrvcG22EzVsnPV6i+3atQtmsxn9+/e3G/eHP/wBf/jDH2A2m3H8+HG89957mD59OoKDgzFhwgS7n/3444/x+OOPY8GCBTavX716FU2aNKlxnSsmDlX8wq5KYGAgAGDWrFkYM2ZMlTEdOnRQXNalS5eqfM3d3R3e3t7QarVQq9WYPHkypk2bVmUZrVq1UlxOz5494e3tja+++grp6ekYNGgQVCoVBg0ahCVLliApKQnnz5+3aSgDAwOhUqlw5MgR6x+/G1W8VrEt3nvvPfTq1avK5VfVQNXUjz/+iJMnT2LdunWIjY21vp6amipdRkWjfqOKfXDzH3wl+fn5+OKLLzBnzhy88sor1tcNBkOlHwY3TqQCft9nzZo1s3ucAcDmzZuh1WrxxRdf2Iw+7Nixo8p4e9coV3e8Ab+vf0BAALKysirFZWZmAvh9f5PrYEN5C50/fx5//etf4efnh6efflrqM2q1Gj179kTHjh2xceNGnDhxAhMmTLD7K1WlUlX6Q75r1y5cvHgRbdu2rXG9+/TpAz8/P3zwwQeYMGFClX94OnTogHbt2uHkyZOVGuia2L59O958803rH8DCwkJ8/vnn+MMf/gC1Wg1PT08MGDAA//3vf9GtWze4u7tXW5a9baTVatG3b18kJiYiIyMDCxcuBHD9B4pGo8Hrr79ubTgrPPDAA1i4cCEuXryIRx55pNrl3nfffWjSpAl+/vnnW3pBe8V+uHlf3zijWklhYSF27txpM1y4adMmuLm5oW/fvjWujxCiUn0++uijSrNob7x06kbR0dF44403sH//fgwcOLDa5Wg0Gpth4NLSUvzrX/+qUX2B66MGly9ftv5wMZvN2LJlC9q0aWPt2Q4aNAgJCQnIzMy0GQnasGEDPD09q/0xRI0XG0on+fHHH63nX7Kzs3HkyBGsXbsWarUaCQkJ1l5aVT744APs378fMTExaNmyJcrKyrBmzRoAsPZwfHx8EBERgX//+98YNGgQ/P39ERgYaJ0Ov27dOnTs2BHdunVDcnIy3nzzzVpfq+nt7Y0lS5bgT3/6EwYPHownn3wSwcHBSE1NxcmTJ7F8+XIA1/9AR0dHY9iwYZgyZQqaN2+Oa9eu4ZdffsGJEyewdetWxWWp1WoMGTIEM2bMgMViwaJFi1BQUGAzpX/ZsmW4//778Yc//AHPPvssIiMjUVhYiNTUVHz++efYv38/gOtD2Hq9Hhs3bkSnTp3g7e2NsLAw6x+7QYMGYebMmTbbVa/Xo0+fPti3bx+6deuGoKAg63Lvu+8+PPXUU5g6dSqOHz+Ovn37wsvLC1lZWfjmm2/QtWtXPPvss/D29sZ7772H2NhYXLt2DQ8//DCCgoJw5coVnDx5EleuXMHKlStrtS9u1LFjR7Rp0wavvPIKhBDw9/fH559/bj3HKiMgIADPPvsszp8/j/bt22P37t348MMP8eyzz6Jly5Y1qo+vry/69u2LN99803osHjp0CKtXr5YeyZg+fTq2bNmCBx98EK+88gruvfdelJaW4tChQ3jggQcwYMAAxMTEYOnSpZg4cSKeeuop5OTk4K233qqyl68kMDAQAwcOxOzZs+Hl5YUVK1bg9OnTNpeIzJkzB1988QUGDBiAN954A/7+/ti4cSN27dqFxYsXw8/Pr8bLpQauLmcSNQYVswsrHu7u7iIoKEj069dPLFiwQGRnZ1f6zM2zXr/77jvx0EMPiYiICKHT6URAQIDo16+f2Llzp83nvvrqK3HnnXcKnU4nAIjY2FghhBC5ubniiSeeEEFBQcLT01Pcf//94siRI6Jfv36iX79+1s9XzNK7cSq8EL/Pcrx5tuju3btFv379hJeXl/D09BSdO3e2mR4vhBAnT54UjzzyiAgKChJarVaEhISIgQMHig8++MDudqtY5qJFi8TcuXNFixYthLu7u7jzzjvF3r17q4z/4x//KJo3by60Wq1o1qyZ6NOnj/jHP/5hE/fJJ5+Ijh07Cq1WW2mW8MmTJwUA0a5dO5vPzJ8/XwAQM2bMqLKua9asET179hReXl5Cr9eLNm3aiMcff1wcP37cJu7QoUMiJiZG+Pv7C61WK5o3by5iYmJstnfFvr/50omqZqlW5eeffxZDhgwRPj4+omnTpmLcuHHi/Pnzlda1ulmvXbp0EQcPHhQ9evQQOp1OhIaGildffdVm5nLFvnnzzTcrLf/m5Vy4cEGMHTtWNG3aVPj4+Ijhw4eLH3/8UURERFiPTyW5ubnixRdfFC1bthRarVYEBQWJmJgYm0ub1qxZIzp06CB0Op1o3bq1iI+PF6tXr660jhERESImJqbK5eB/l8GsWLFCtGnTRmi1WtGxY0excePGSrGnTp0SI0eOFH5+fsLd3V1079690vejpt8narhUQihMySSiRqF///64evUqfvzxx7quClGDwlmvREREdrChJCIisoNDr0RERHawR0lERGQHG0oiIiI72FASERHZwYQDuJ5DMzMzEz4+PnbTXxER3WpCCBQWFiIsLAxubremL1NWVoby8nKnlOXu7m6TWrAxYkOJ6zkcb75TABFRXcrIyKh1di17ysrK0CrCG5eyq75Zd02FhIQgLS2tUTeWddpQHj58GG+++SaSk5ORlZWFhIQEjB49GgBgNBrx+uuvY/fu3Th79iz8/PwwePBgLFy40JqS7Nq1a5gzZw727duHjIwMBAYGYvTo0Zg3b16N0kz5+PgAALqPeR1qrf2dXdZU+ReeLk9uInG5j1zvtaS5XHkWib3pZpQqCkZ/k1Rck5BCqTiVSnkdtG4WqbLuDLwoFdfeq3Ji6yqXq1L+g9FKa//2VxWOFreTivu1WDlJejcf+8nCK5Raqs9/e6PEzI5ScW5Q3ldtm16RKis1t/rUjTfKzmoiFadvqnxHDh8Pg9wyLzSVioO73HGpzlP+Apq9lI81S1kZMv8Wb/275Gzl5eW4lG3GueRI+Po41mMtKLQg4u50lJeXs6G8VYqLi9G9e3dMnToVY8eOtXmvpKQEJ06cwOzZs9G9e3fk5uZi+vTpGDVqFI4fPw7gek8wMzMTb731Fjp37oxz587hmWeeQWZmJj777DPpelQMt6q1HlC729/Zap3ygaV2l2vY1O5yDaWbh+QVPDINpVo5BgDc9HINpdpTbvhGpqFUq+X+ILl7a6Xi9F5yh7dWYrjdy11uw+lUcnXTQrlx85BcT4tFLk7tKZcb1U3mR42XXOOsLpdcpl7uj6zaU/kYUeulipJepmxD6VamfLwJvXwv7lafBvL2UcFb8sd6dSxwjVNVddpQRkdHIzo6usr3/Pz8KiV7fu+993Dvvffi/PnzaNmyJaKiorBt2zbr+23atMH8+fOtN9rVaDiyTERUFbOwwOzgVfRmIfcjoqFrUC1Jfn4+VCqV3TsT5Ofnw9fX124jaTAYYDD8PjxTUFDgzGoSEdV7FghYJIbZlcpwBQ3m8pCysjK88sormDhxInx9fauMycnJwbx58xTv/RgfHw8/Pz/rgxN5iIioOg2ioTQajZgwYQIsFgtWrFhRZUxBQQFiYmLQuXNnzJkzx255s2bNQn5+vvWRkZFxK6pNRFRvWZz0zxXU+6FXo9GIRx55BGlpadi/f3+VvcnCwkIMHz4c3t7eSEhIgFZrf3KDTqer1U1fiYgaC7MQMDuY6tvRzzcU9bqhrGgkz5w5gwMHDiAgIKBSTEFBAYYNGwadToedO3c26inKRER0+9VpQ1lUVITU1FTr87S0NKSkpMDf3x9hYWF4+OGHceLECXzxxRcwm824dOkSAMDf3x/u7u4oLCzE0KFDUVJSgo8//hgFBQXWiTnNmjWDWi15LQQRkYvhZB55ddpQHj9+HAMGDLA+nzFjBgAgNjYWcXFx2LlzJwDgjjvusPncgQMH0L9/fyQnJ+PYsWMAgLZt29rEpKWlITIyskb10V0zQ6N1PFuF/qpcGdoSuVPEZr1cgy+TcEBTIlUUykxyh0auW9UTq2pF4vo9ADguWdzVci+puHB9rmKMRchdL3Yyv7lUXFpu5dGRm5kscseHySJ3fFzNkbyAXWI3yG6PnFxvqTjtVbnjrcSsvE/LvOWu8dRek9tuZg+5/aAtUI5TmZS3m0XiekxnsEDAzIZSSp02lP3794e922Eq3SpT6fNERESOqtfnKImI6Nbg0Ks8NpRERC6Is17lNYjrKImIiOoKe5RERC7I8r+Ho2W4AjaUREQuyOyEWa+Ofr6hYENJROSCzAJOuHuIc+pS3/EcJRERkR3sUd7A0FQNk8INesuaSty4We5exjDp5C7aNspdNw8hcf20SjKfglnumm3pGzwLs/K6Covc9nBXy62El+SOCNQWKcaEaPOlygrTy92yLbtE+eJ/P22ZVFmydHqjVJzJqHwgeWjk9ru7Ti7OKHmzc5mkFLI3AJe83zUsernyTBLJBEw+yseuxQlJT2TwHKU8NpRERC7IAhXMkPtxaq8MV8ChVyIiIjvYoyQickEWcf3haBmugA0lEZELMjth6NXRzzcUHHolIiKygw0lEZELquhROvqorfj4eKhUKkyfPt362pQpU6BSqWwevXr1csLaOoZDr0RELsgiVNL3FbVXRm0kJSVh1apV6NatW6X3hg8fjrVr11qfu7tLXqt2C7FHSUREt01RUREmTZqEDz/8EE2bNq30vk6nQ0hIiPXh7+9fB7W0xYaSiMgFOXPotaCgwOZhMBiqXe60adMQExODwYMHV/n+wYMHERQUhPbt2+PJJ59Ednb2LVn/muDQ6w00ZQIaheSF5mLl+dDuBXKZNTQauWGLsgC53SQkfvZ4XJPNgCJXt2JPuWERN6NyeSqJzCYAkOneRCrOaJH7HVhqVk7RUiaZxiW1MFAqLjvPWypOhlYyU1FZnodUnMqgvN0uq5UzCwFAeaHc8aHPk9tXJonjyCg5HKjPl4srh0TKKwDqUonsU27K66kquz39FzPcYHawr1Rx5IWHh9u8PmfOHMTFxVWK37x5M06cOIGkpKQqy4uOjsa4ceMQERGBtLQ0zJ49GwMHDkRycjJ0Op1DdXUEG0oiIhcknHCOUvzv8xkZGfD19bW+XlWjlpGRgRdffBH79u2Dh0fVP9rGjx9v/X9UVBR69OiBiIgI7Nq1C2PGjHGoro5gQ0lERA7x9fW1aSirkpycjOzsbNx9993W18xmMw4fPozly5fDYDBArbbtvYeGhiIiIgJnzpy5JfWWxYaSiMgF3e6EA4MGDcKpU6dsXps6dSo6duyIv/3tb5UaSQDIyclBRkYGQkNDHaqno9hQEhG5ILNwg1lmYoPdMuRjfXx8EBUVZfOal5cXAgICEBUVhaKiIsTFxWHs2LEIDQ1Feno6Xn31VQQGBuKhhx5yqJ6OYkNJRER1Tq1W49SpU9iwYQPy8vIQGhqKAQMGYMuWLfDxkZs8dquwoSQickEWqGBxcNarBY5lRT948KD1/3q9Hnv37nWovFuFDSURkQtiUnR5TDhARERkB3uUREQuyDmTeVzjhpRsKG9QGuAGtbv9A6e8ifJQg6ZMLpOH7LW+5fYvT/qdRHlqg9xCTXq5RQq9RSrOopbISFJ91isbWq1JKs5Ta5SKC9QVKcaEuudJldXcM18q7rJeeXJCE49SqbK8tXIb7qJ3E6k4o5tyFiJPj3KpsmT/jpq85DIfmXXKBar0cseHyVvue2r2lSvPolM+xoWXchYlS6nc8hx1/Rylg0nROfRKRERE7FESEbkgixNyvTo667WhYENJROSCeI5SHhtKIiIXZIFbnV9H2VDwHCUREZEd7FESEbkgs1DB7OBtthz9fEPBhpKIyAU558bNHHolIiJyeexREhG5IItwg8XBWa8Wznq99Q4fPow333wTycnJyMrKQkJCAkaPHg0AMBqNeP3117F7926cPXsWfn5+GDx4MBYuXIiwsDAAQHp6Olq1alVl2Z9++inGjRtXo/qoywGlXB2aEuVy3AvkstUIya2vLZY7mFXKST+gy5PMpKOQoaiCsUAuu4m6VPlchmzWoFIfD6m4LDe5L7FO7bxMKGcLA6Ti8vM8FWOMZrltq5PMQGS6JrfdtIXK+z7PInfbI1Wp3HHkc1lu31u0ynGGMp1UWZ5ZcsssK5f7oroZlcszlilvD0uZxBfZCTj0Kq9Oh16Li4vRvXt3LF++vNJ7JSUlOHHiBGbPno0TJ05g+/bt+O233zBq1ChrTHh4OLKysmwec+fOhZeXF6Kjo2/nqhARUSNVpz3K6Ojoahs0Pz8/JCYm2rz23nvv4d5778X58+fRsmVLqNVqhISE2MQkJCRg/Pjx8Pb2vmX1JiJq6CxwfNaq3PhUw9egzlHm5+dDpVKhSZMmVb6fnJyMlJQUvP/++7e3YkREDYxzEg64xnzQBtNQlpWV4ZVXXsHEiRPh61v17TRWr16NTp06oU+fPnbLMhgMMBh+v+NCQUGBU+tKRESNR4P4OWA0GjFhwgRYLBasWLGiypjS0lJs2rQJTzzxhGJ58fHx8PPzsz7Cw8OdXWUionqtIterow9XUO/X0mg04pFHHkFaWhoSExOr7U1+9tlnKCkpweOPP65Y5qxZs5Cfn299ZGRkOLvaRET1WsX9KB19uIJ6PfRa0UieOXMGBw4cQEBA9VPvV69ejVGjRqFZs2aK5ep0Ouh0clPIiYgaI+fcPaTe97Wcok4byqKiIqSmplqfp6WlISUlBf7+/ggLC8PDDz+MEydO4IsvvoDZbMalS5cAAP7+/nB3d7d+LjU1FYcPH8bu3btv+zoQEVHjVqcN5fHjxzFgwADr8xkzZgAAYmNjERcXh507dwIA7rjjDpvPHThwAP3797c+X7NmDZo3b46hQ4c6VB+TByDclWMUy9HLDUeoJK/VFXLXnTt1mTLJCwAAFrl1dTMpx7mVyy1SZZBMhiB5objBrBwnm8HETXqnKm8Pi+y2lRz9EpIJGJxJaOSWaXHiXyLZ74tZclDJLJenARZ35XU165UvqLDcposunJNwgD3KW65///4QdlIg2XvvRgsWLMCCBQucVS0iokbPIlSwOHodpYvcPcQ1fg4QERHVUr2ezENERLeGxQlDr0w4QEREjZZz7h7iGg2la6wlERFRLbFHSUTkgsxQwexgwgBHP99QsKEkInJBHHqV5xprSUREVEvsURIRuSAzHB86lc1L0tCxobyB5xULNFr7WTHKJLLC6K8apZbnVi6XgcPgq5eKk7n21+Oacw9to7fcoITaoByjLZJLMCG7zHKNQpql/7ns4aMYo9fI7dPsQskbhhcof/XKJLP8CMmLvtXFkvuqVLk8o1Eya1C5ZEYjyaxMQuYvlpMTEKkkE+WoJA4Rdany9lCV3Z6BPg69ymNDSUTkgpgUXZ5rrCUREVEtsUdJROSChBPuJyl4eQgRETVWHHqV5xprSUREVEvsURIRuSDeZkseG0oiIhfEGzfLc421JCIiqiX2KImIXBCHXuWxobyB18USaNT203BoSjwUy3G/kCe3QCGXQsTTXy7DjFArx7hfK5Mqy6KRywbkXiCZecWovK6aUqmioC6TzAojkQUFAEqLlbfvZXfl7D0AUJQnud0KletWrpH7epYZ5dZTnycXpylRjjHpJQ42ABrJfaXLk/sumJW/fjDpJZeZK5nCRyWZ+Uji+DVLHB5mw+1pfCxwc/jGy65y42bXWEsiIqJaYo+SiMgFmYUKZgeHTh39fEPBhpKIyAXxHKU8NpRERC5IOOHuIYKZeYiIiIg9SiIiF2SGygk3bubQKxERNVIW4fg5RouTb5JdX3HolYiIyA72KImIXJDFCZN5HP18Q8GG8gZGH3cIjf0sLWVNlTOSaIJ9pZanMsuNW5T6y2VBsUgl8JHLHFPWRG6ZZYFSYYBFeYhHNjOPIdB+9qQKqiCDVFxg00LFmPZNs6XK+kUqCrhq9FOM8QyQSJEDwFNnlIrLMTSVinMrlRiOC5XbtmUlcn9iVEatVJzZU/k7Ux4otz0s7nJ1K/eTO940JcrbzeKuXH9LmdzyHGVxwo2bHf18Q+EaPweIiIhqiT1KIiIXxMw88thQEhG5IJ6jlOcaa0lERPVKfHw8VCoVpk+fbn1NCIG4uDiEhYVBr9ejf//++Omnn+qukv/DhpKIyAVZoLLme631o5aTeZKSkrBq1Sp069bN5vXFixdj6dKlWL58OZKSkhASEoIhQ4agsFB5wt2txIaSiMgFif/NenXkIWrRUBYVFWHSpEn48MMP0bTp7zOxhRB455138Nprr2HMmDGIiorC+vXrUVJSgk2bNjlz1WuMDSURkQtyuDd5w91HCgoKbB4GQ/WXD02bNg0xMTEYPHiwzetpaWm4dOkShg4dan1Np9OhX79++Pbbb2/NRpDEhpKIiBwSHh4OPz8/6yM+Pr7KuM2bN+PEiRNVvn/p0iUAQHBwsM3rwcHB1vfqCme93kBdYoJaY7IbozEobzI3k9wFw0IlN2yhcmI+RbNWbpkWueu/YdE4r3ImyWEci15u++olL8TXa5XjdG5mqbJUsjtLYrvptPaPxQpqN9njTa5uFoljRKOW2x5mlVziCtmf7FLHpeQxKXtlg0ry+n83icNN5juvMt6eSy6cOes1IyMDvr6/J1rR6XSVYjMyMvDiiy9i37598PDwqLZM1U3bSAhR6bXbrU57lIcPH8bIkSMRFhYGlUqFHTt22LwfFxeHjh07wsvLC02bNsXgwYNx7Ngx6/vXrl3Dn//8Z3To0AGenp5o2bIlXnjhBeTn59/mNSEialicOfTq6+tr86iqoUxOTkZ2djbuvvtuaDQaaDQaHDp0CO+++y40Go21J3lz7zE7O7tSL/N2q9OGsri4GN27d8fy5curfL99+/ZYvnw5Tp06hW+++QaRkZEYOnQorly5AgDIzMxEZmYm3nrrLZw6dQrr1q3Dnj178MQTT9zO1SAiIgWDBg3CqVOnkJKSYn306NEDkyZNQkpKClq3bo2QkBAkJiZaP1NeXo5Dhw6hT58+dVjzOh56jY6ORnR0dLXvT5w40eb50qVLsXr1avzwww8YNGgQoqKisG3bNuv7bdq0wfz58/HYY4/BZDJBo+HIMhFRVW53rlcfHx9ERUXZvObl5YWAgADr69OnT8eCBQvQrl07tGvXDgsWLICnp2eltuB2azAtSXl5OVatWgU/Pz9079692rj8/Hz4+vrabSQNBoPNrKyCggKn1pWIqL67cejUkTKc6eWXX0ZpaSmee+455ObmomfPnti3bx98fHycupyaqvcN5RdffIEJEyagpKQEoaGhSExMRGBg1besyMnJwbx58/D000/bLTM+Ph5z5869FdUlIiJJBw8etHmuUqkQFxeHuLi4OqlPder95SEDBgxASkoKvv32WwwfPhyPPPIIsrMr3/KooKAAMTEx6Ny5M+bMmWO3zFmzZiE/P9/6yMjIuFXVJyKql5w5maexq/cNpZeXF9q2bYtevXph9erV0Gg0WL16tU1MYWEhhg8fDm9vbyQkJECrtT+HXKfTVZqlRUTkSthQyqv3DeXNhBCVzi8OHToU7u7u2Llzp93rc4iIiGqqTs9RFhUVITU11fo8LS0NKSkp8Pf3R0BAAObPn49Ro0YhNDQUOTk5WLFiBS5cuIBx48YBuN6THDp0KEpKSvDxxx9b0ycBQLNmzaBWS17sTETkYurjZJ76qk4byuPHj2PAgAHW5zNmzAAAxMbG4oMPPsDp06exfv16XL16FQEBAbjnnntw5MgRdOnSBcD1C1grEhC0bdvWpuy0tDRERkbWqD7FLfTQaO33SEuClDvhZq2n1PKEZDte1ELuYDTplTOSGJrILbS8iVx2E2N49TkdbySTscZilKtbcEieVFwXf7m0V208ryjGdPc8J1WWl0Zue5x0b64Y07VpplRZOje5DD5fm+S2r9GsHNep2WWpsi4W+UnFZVoCpOK0vsrbt3mTIqmyLqr85ZbpWS4VZ/CqfJH9zVQeyhmNLKVyx5CjBGp2eUd1ZbiCOm0o+/fvDyGq39Tbt2936PNERFQ19ijlNbhzlERERLdTvb+OkoiInI89SnlsKImIXBAbSnkceiUiIrKDPUoiIhfEHqU8NpRERC5ICBWEgw2do59vKDj0SkREjc6NGdwcxYaSiMgFVdyP0tFHfbF3715MmTIFbdq0gVarhaenJ3x8fNCvXz/Mnz8fmZlyCTyqwqHXGwjV9YfdGImfFhb7OdmtzO5yB5lZOeHH9eW6K8eY5JIGweQpl8hBpzdKxanVFsUYi0Vue4R550vFtdRfk4pr4Z6jGNNMXShVVlNNiVycTjkuxN2590n1dJfbVwLKcYG6Yqmycg1yB5xMxhoA8NIrZ8nx1ZVJlZXlLrdMjUb52AUAo8Thq3JT/l7JZLFyhsZyjnLHjh3429/+hvz8fIwYMQIvvfQSmjdvDr1ej2vXruHHH3/EV199hXnz5mHKlCmYN28emjVrVqNlsKEkIqIGa8GCBXjrrbcQExMDN7fKPZlHHnkEAHDx4kUsW7YMGzZswMyZM2u0DDaUREQuqLFM5vn++++l4po3b47FixfXahlsKImIXFBjGXq9HdhQEhG5oMbSo7yREAKfffYZDhw4gOzsbFgstueXlW60UR02lERE1Ci8+OKLWLVqFQYMGIDg4GCoVM5pyNlQEhG5IOGEodf61qP8+OOPsX37dowYMcKp5bKhJCJyQQKAo7fzrW93A/bz80Pr1q2dXi4TDhARUaMQFxeHuXPnorS01KnlskdJROSCLFBB5WBmnfqUmQcAxo0bh08++QRBQUGIjIyEVmub/eXEiRO1KpcN5Q0KI9yg1tnvZJcFKmfpKPeV66ibdXIDF8aWcplGNDqTYkxZqVzaIJ+mchlm7g65IBXn7qZcN4tM2iMA/Zucloq7x+O8VFy6sYliTJhaLm/kI37HpeIidFcVY/6gPytVllnyj1WJTOomyE35v8/nN6myTuoinLZMAGjre0UxprVeedsCgMEs9+dPJosSAJzz8FeM8dcrl2UqNkDuyHVMY5z1OmXKFCQnJ+Oxxx7jZB4iIqKb7dq1C3v37sX999/v1HLZUBIRuSCLUEHVyBIOhIeHw9fX1+nlcjIPEZELEsI5j/pkyZIlePnll5Genu7UctmjJCKiRuGxxx5DSUkJ2rRpA09Pz0qTea5dk7uj0M3YUBIRuaDGOJnnnXfeuSXlsqEkInJBjbGhjI2NvSXlsqEkInJBjXEyDwCYzWbs2LEDv/zyC1QqFTp37oxRo0ZBrVbXukw2lERE1CikpqZixIgRuHjxIjp06AAhBH777TeEh4dj165daNOmTa3KZUNZQzLXxFvc5aaCWeSu/YebRq48nUTCAVleunKpOH9tsVSct0bugn0ZIZo8qbgwyV+QZpGvGNNC4y1VVpapSCouRKO8zFC1XIIAI8xSccHaAqk4rUr5OGqtkZsUkeMut91CPeXq1tYzWzGmne6yVFmnvUOk4rzUct+FXIOnYoyPu3LyEKNRbnmOcsas1fo26/WFF15AmzZtcPToUfj7X08AkZOTg8ceewwvvPACdu3aVaty2VASEbmg6w2lo+conVQZJzl06JBNIwkAAQEBWLhwIe67775al8vrKImIqFHQ6XQoLCys9HpRURHc3eVGaKrChpKIyAVVzHp19FGfPPDAA3jqqadw7NgxCCEghMDRo0fxzDPPYNSoUbUulw0lEZELEk561Cfvvvsu2rRpg969e8PDwwMeHh6477770LZtWyxbtqzW5fIcJRERNXhCCOTn5+OTTz5BZmYmfvnlFwgh0LlzZ7Rt29ahstlQEhG5oMaWcEAIgXbt2uGnn35Cu3btHG4cb8ShVyIiV9TIxl7d3NzQrl075OTkOL9sp5dIRET1nzMm8tSjHiUALF68GC+99BJ+/PFHp5bLoVciImoUKu4e0r17d7i7u0Ov19u8z7uHOIHHVQG1QlYdi0a5Ey6ZrAYWya1frNdJxRV5S2SiMcgNImQb5bLa/OgeJhUnk5HEZJFbplYll4kGOCMVFaaufN1VbZ0oD5SKO1kSoRjjr5b7VWwRcteHnSkNkoqT2b7h7nLDWxfKA6TirpTKZfC5pPNTjPFxUz7WACC/3EMqzqiROy4LDcrfU6NZuSxTifOyWNnTGDPzvP3221CpnN/LrdOG8vDhw3jzzTeRnJyMrKwsJCQkYPTo0db34+LisHnzZmRkZMDd3R1333035s+fj549ewIA0tPT0apVqyrL/vTTTzFu3LjbsRpERA1OY5vMAwBTpky5JeXW6TnK4uJidO/eHcuXL6/y/fbt22P58uU4deoUvvnmG0RGRmLo0KG4cuUKACA8PBxZWVk2j7lz58LLywvR0dG3c1WIiKiOqdVqZGdXzgeck5PTcO8eEh0dbbdBmzhxos3zpUuXYvXq1fjhhx8waNAgqNVqhITYJjZOSEjA+PHj4e0tN5RDROSSnDEZp571KEU1Y8EGg8GhFHYN5hxleXk5Vq1aBT8/P3Tv3r3KmOTkZKSkpOD999+3W5bBYIDB8Pt5gIICuTsXEBE1Fo3pHOW7774LAFCpVPjoo49sOkpmsxmHDx9Gx44da11+vW8ov/jiC0yYMAElJSUIDQ1FYmIiAgOrnjCxevVqdOrUCX369LFbZnx8PObOnXsrqktERLfZ22+/DeB6j/KDDz6wGWZ1d3dHZGQkPvjgg1qXX+8bygEDBiAlJQVXr17Fhx9+iEceeQTHjh1DUJDtDL7S0lJs2rQJs2fPVixz1qxZmDFjhvV5QUEBwsPDnV53IqJ6yxkJA+pJjzItLQ3A9fZi+/btaNq0qVPLr/cJB7y8vNC2bVv06tULq1evhkajwerVqyvFffbZZygpKcHjjz+uWKZOp4Ovr6/Ng4jIlTTGu4ccOHDAppE0m81ISUlBbm6uQ+XW+4byZkIIm/OLFVavXo1Ro0ahWbNmdVArIiKqa9OnT7d2pMxmM/r27Yu77roL4eHhOHjwYK3LrdOh16KiIqSmplqfp6WlISUlBf7+/ggICMD8+fMxatQohIaGIicnBytWrMCFCxcqXR+ZmpqKw4cPY/fu3bd7FYiIGq56MnTqLFu3bsVjjz0GAPj888+Rnp6O06dPY8OGDXjttdfwn//8p1bl1mlDefz4cQwYMMD6vOK8YWxsLD744AOcPn0a69evx9WrVxEQEIB77rkHR44cQZcuXWzKWbNmDZo3b46hQ4c6ViHV/x5KMUoscotzM8rFySaiEWblyrlJZuaxaOUOjSKj3JRri8SGKzVqpcrK9GwiFXdFJzek7qUqV4wpsSjHAIBRyF2WVGRWzuKSZ/aUKstD8kAySKaCMkj8WSi2yGWLMgq5a9cMZrm6FZj0ijFlQu44MknWzU0llylHq1b+osrEqCRinKExJhzIycmxXjK4e/dujBs3Du3bt8cTTzxhnRlbG3XaUPbv37/a614AYPv27VLlLFiwAAsWLHBWtYiIGr9GNJmnQnBwMH7++WeEhoZiz549WLFiBQCgpKSk4SYcICIicpapU6fikUceQWhoKFQqFYYMGQIAOHbsmEPXUTa4yTxEROQMKic95K1cuRLdunWzXm3Qu3dvfPnll9b3p0yZApVKZfPo1auXdPlxcXH46KOP8NRTT+E///kPdLrrpwjUajVeeeWVGtX1RuxREhG5ojoYem3RogUWLlyItm3bAgDWr1+PBx98EP/973+tc0+GDx+OtWvXWj9T09RzDz/8cKXXYmNja1bRm7ChJCKi22LkyJE2z+fPn4+VK1fi6NGj1oZSp9NVyuEtq7oJOyqVCh4eHmjbti369u1b4/OVbCiJiFyRE3uUN+fL1ul01mHP6pjNZmzduhXFxcXo3bu39fWDBw8iKCgITZo0Qb9+/TB//vxKmdiq8/bbb+PKlSsoKSlB06ZNIYRAXl4ePD094e3tjezsbLRu3RoHDhyoUTY2nqMkInJFFXcPcfSB67c89PPzsz7i4+OrXeypU6fg7e0NnU6HZ555BgkJCejcuTOA63eU2rhxI/bv348lS5YgKSkJAwcOrDLJTFUWLFiAe+65B2fOnEFOTg6uXbuG3377DT179sSyZctw/vx5hISE4C9/+UuNNhV7lERE5JCMjAybVKD2epMdOnRASkoK8vLysG3bNsTGxuLQoUPo3Lkzxo8fb42LiopCjx49EBERgV27dmHMmDGK9Xj99dexbds2tGnTxvpa27Zt8dZbb2Hs2LE4e/YsFi9ejLFjx9Zo/dhQEhG5IGfeZqsmObPd3d2tk3l69OiBpKQkLFu2DP/85z8rxYaGhiIiIgJnzpyRKjsrKwsmk6nS6yaTCZcuXQIAhIWFobCwUKq8Cmwob1ASrIJaZ3+6c1mQctYMs7vkiLbswHeQ3LCDp145e0ypwnmDCt6+ZVJxHZtUvpt4VXTqygfvzYpMcrPb7vZOl4q7y+OCVFwbjXK2lwKLcv0BoKv7Jam4ci/lyQR36PKkysqTzATVyStLKk4mm04b7RWpssoscllyfvGSm7wRrFO+d2yIJl+qrABdsVRckE7uj2qRUfm71dS9VDGmHHJZoBxWTxIOVJe/G7ieaScjIwOhoaFSZQ0YMABPP/00PvroI9x5550AgP/+97949tlnMXDgQADXh35btWpVozryHCUREd0Wr776Ko4cOYL09HScOnUKr732Gg4ePIhJkyahqKgIf/3rX/Hdd98hPT0dBw8exMiRIxEYGIiHHnpIqvzVq1fD398fd999t3VCUY8ePeDv729Nlu7t7Y0lS5bUqN7sURIRuaIbJuM4VEYNXL58GZMnT0ZWVhb8/PzQrVs37NmzB0OGDEFpaSlOnTqFDRs2IC8vD6GhoRgwYAC2bNkCHx8fqfJDQkKQmJiI06dP47fffoMQAh07dkSHDh2sMTfmF5fFhpKIyAWpxPWHo2XURFX3Eq6g1+uxd+9exyr0Px07dnQoZd3N2FASEbmienKO0pnMZjPWrVuHr7/+GtnZ2bBYbE/g79+/v1blsqEkIqJG4cUXX8S6desQExODqKgoqFTOuQ0YG0oiIldUB+cob7XNmzfj008/xYgRI5xaLhtKIiJX1AiHXm+8RtOZeHkIERE1CjNnzsSyZcsgHM2kcBP2KG9g9hIQHvY3sPBUTjhgKXXu7w+tu9zF7jqtclyZm9xF/W6S09n0aqNkecpXxVuE3HYzO/n3nUEob7d/F0dKlXXN5C0V18EjUzEmxyw3rLWzsLtUXKBG7sL5QouHYoxWYn8CgIeb3PHh7iZ3jMvQqpS/ozVZpp9aOUkAAAToShRj/N2VkxwYjHLbzGGNsEf5zTff4MCBA/jyyy/RpUsXaLW2CS+2b99eq3LZUBIRuaJG2FA2adJEOjlBTdSqoTxz5gz+/e9/Iz09HSqVCq1atcLo0aPRunVrZ9ePiIhIyo03fHamGo9hxcfHo3Pnzvjb3/6Gbdu2YevWrXjppZfQsWNHvPXWW7eijkRE5GxOvM1WfZabm4v33nsPd9xxR63LqFFDeeDAAbz++ut47bXXcPXqVWRlZeHSpUu4cuUKXnnlFbzyyis4fPhwrStDRES3R0VmHkcf9dVXX32FRx99FGFhYVi8eDH69etX67JqNPT6wQcf4E9/+hPi4uJsXvf398ff//53XLp0CStXrkTfvn1rXSEiIqLaOH/+PNauXYu1a9eiqKgIubm5+PTTT2t8/8mb1ahH+f3332Py5MnVvj958mQcPXrUoQoREdFtIJz0qAc+/fRTDB06FJ06dcKPP/6IZcuWITMzE25ubujUqZPD5deoR3n58mVERkZW+36rVq2sN8ckIiK6HSZOnIiXX34Z27Ztk77TSE3UqEdZVlYGd/fqr8PTarUoL79NNx0lIqJaU8EJ5yjreiX+549//CNWrFiB4cOH44MPPkBubq5Ty6/x5SEfffQRvL2rvqi6sFDugmYiIiJnWbVqFZYtW4ZPP/0Ua9aswfTp0zFs2DAIISrdQaQ2atRQtmzZEh9++KFiTENlDi2D8LQfEx6Up1jOJU9fqeVZJKdWR4VmScUFeRQpxvyfV6BUWWFe+VJx0U1PSsWpJU5mXDL5SZU10POsVFygZBaiL0uUt8lX1zpLlZVXrpeK8w4uU4w5YwiRKutIjlxuy9beV6XiRjT5QTHmqyK57fFLcahU3JjAE1JxrbXK63C6PFiqrLH+x6Xitl3rIRWXK7HvUwuUjzVTsUFqeQ5rZEnR9Xo9YmNjERsbizNnzmDNmjU4fvw47rvvPsTExODhhx/GmDFjalV2jRrK9PT0Wi2EiIjqmUaYmadCu3btEB8fj/nz52PXrl1YvXo1Hn30URgMtfsRwhR2RETUKLm5uWHkyJEYOXIksrOza11OjRrKd999VyruhRdeqFVliIjoNmkkPcrvvvsOvXv3VowLCgpCcXEx0tPT0aVLlxoto0YN5dtvv60Yo1Kp2FASEdVzzsisUx8y8zz++OOIjIzEk08+iREjRlQ52fTnn3/Gxx9/jLVr12Lx4sW3tqFMS0uz+/758+crZe0hIiK6VX7++Wf885//xBtvvIFJkyahffv2CAsLg4eHB3Jzc3H69GkUFxdjzJgxSExMRFRUVI2X4dRzlLm5uVi/fj3WrFnjzGKJiMjZGsnQq1arxfPPP4/nn38eJ06cwJEjR5Ceno7S0lJ0794df/nLXzBgwAD4+/vXehmczENE5IoaSUN5o7vuugt33XWX08t17q3iiYiIGhn2KImIXFBjmcxzO9SooVTKapCXl1ejhR8+fBhvvvkmkpOTkZWVhYSEBIwePbrK2KeffhqrVq3C22+/jenTpwMArl27hjlz5mDfvn3IyMhAYGAgRo8ejXnz5sHPTy7Ly418/Uqh9rSf7qiFd55iOcXl2hov255WXjlScYFa5cw8BUYPqbIi9XLLDNfkScXJ0KpMUnFmyS/nNYtc3uFCi/I2KTHJ7dNio1w2oKtG5cTN+Wa5LD85pQrppP7HUyOXMSq9XDl7TGppkFRZ54uaSsWd9ZIrz8etVDHmhxK57GB+mhKpuLOFctmsCg06xZgSib8N5hK11PIc1sgy89xKNWoolRofPz8/PP7449LlFRcXo3v37pg6dard+4Xt2LEDx44dQ1hYmM3rmZmZyMzMxFtvvYXOnTvj3LlzeOaZZ5CZmYnPPvtMuh5ERC6nEZ6jvFVq1FCuXbvWqQuPjo5GdHS03ZiLFy/i+eefx969exETE2PzXlRUFLZt22Z93qZNG8yfPx+PPfYYTCYTNBqOLBMRuaKysjJ4eMiNoCmp15N5LBYLJk+ejJdeekn6AtH8/Hz4+vqykSQissPhW2w54Ryns1ksFsybNw/NmzeHt7c3zp69fgOF2bNnY/Xq1bUut143lIsWLYJGo5HO9JOTk4N58+bh6aefthtnMBhQUFBg8yAicinCSY965B//+AfWrVuHxYsX29w7uWvXrvjoo49qXW69bSiTk5OxbNkyrFu3DiqV8gnjgoICxMTEoHPnzpgzZ47d2Pj4ePj5+Vkf4eHhzqo2ERHVkQ0bNmDVqlWYNGkS1OrfJ0V169YNp0+frnW59bahPHLkCLKzs9GyZUtoNBpoNBqcO3cOM2fORGRkpE1sYWEhhg8fDm9vbyQkJECrtT+zbNasWcjPz7c+MjIybuGaEBHVQ84Ydq1nPcqLFy+ibdvK92e1WCwwGo21LrfensibPHkyBg8ebPPasGHDMHnyZEydOtX6WkFBAYYNGwadToedO3dKnbzV6XTQ6ZSnchMRNVqNcNZrly5dcOTIEURERNi8vnXrVtx55521LrdOG8qioiKkpqZan6elpSElJQX+/v5o2bIlAgICbOK1Wi1CQkLQoUMHANd7kkOHDkVJSQk+/vhjm/ONzZo1s+l6ExFR4zZnzhxMnjwZFy9ehMViwfbt2/Hrr79iw4YN+OKLL2pdbp02lMePH8eAAQOsz2fMmAEAiI2Nxbp16xQ/n5ycjGPHjgFApe52WlpapSFaJSaLG4TF/mh0iUn5gvJyk9xm1arNUnEWyYt6yyzOS3SgVcnVTQv7CRoqWKC8Dh4quaGRL4rkZkC31l2WipNZ1+HNfpIqK9sod1H/g74pijF5FrlRD5PCMVuhnV5uewzz+lUxppmmUKqsZu5y5/9buMsluPBxK1OMud/7N6mycsyVb8dUlW5NLkrF5RmVEz8Um5X/fhiLy1H7s2k10Ah7lCNHjsSWLVuwYMECqFQqvPHGG7jrrrvw+eefY8iQIbUut04byv79+0MI+S2dnp7u0OeJiOi6xprCbtiwYRg2bJhTy6y3k3mIiIhqIikpyTrKeKNjx47h+PHjtS6XDSURETUK06ZNq/IqhosXL2LatGm1LrfeznolIqJbqBGeo/z555+rvB/lnXfeiZ9//rnW5bJHSUTkghpjCjudTofLlytPWsvKynIorSkbSiIiahSGDBliTShTIS8vD6+++mrDnfVKRER1qJ71CB21ZMkS9O3bFxEREdYEAykpKQgODsa//vWvWpfLhpKIyBU1wnOUzZs3xw8//ICNGzfi5MmT0Ov1mDp1Kh599FHF1Kb2sKEkIqJGw8vLC0899ZRTy2RDeYPifD3cyu3nij0ncfa66KqX1PJUWrmsNr/4hEjFubspZ5i5WOgnVZZJyJ2+DnPPlYorlsgyU2JRzloCACVmuYw1Ojd/qbh8s14x5h59mlRZIZo8qTgfiX0VplbOQgMAP3lekopr4y6XmedYmXI2nc66LKmyyoTcr/jE3CipuDCPPMWY9h5y2+PLnK5Sce28sqXiiiSOyyjPTMWYMpURO6SW6JjGmnDgt99+w8GDB5GdnQ2LxfZv7BtvvFGrMtlQEhG5okY49Prhhx/i2WefRWBgIEJCQmxu0ViR0q422FASEVGj8I9//APz58/H3/72N6eWy4aSiMgFNcah19zcXIwbN87p5fI6SiIiVySc9KhHxo0bh3379jm9XPYoiYioUWjbti1mz56No0ePomvXrpUuCXnhhRdqVS4bSiIiV9QIJ/OsWrUK3t7eOHToEA4dOmTznkqlYkNJRETyGuM5yrQ0ucu4aooNJRGRK2qEPcpbhQ0lERE1GhcuXMDOnTtx/vx5lJeX27y3dOnSWpXJhvJWkEu4A2GUm3RcapLLbmJRqxRjSgxyZeWWeUrFXTN5S8UVmu1nPAKAHKNcRqMRTX6QimunzZGKKxbKX4OE/Mr3uKtKgUl5PQGgSdMSxZhMY1Opsr7JaysVl+stt3391Mp121/cUaqss6XNpOIMFrVUXJFJOftNmaX2OT2rcrncVyrOJLEOPxaGKcYYi8sVY5yiEfYov/76a4waNQqtWrXCr7/+iqioKKSnp0MIUeV9KmXx8hAiIhfUGO9HOWvWLMycORM//vgjPDw8sG3bNmRkZKBfv34OXV/JhpKIiG6LlStXolu3bvD19YWvry969+6NL7/80vq+EAJxcXEICwuDXq9H//798dNPP0mX/8svvyA2NhYAoNFoUFpaCm9vb/z973/HokWLal1vNpRERK6oDhIOtGjRAgsXLsTx48dx/PhxDBw4EA8++KC1MVy8eDGWLl2K5cuXIykpCSEhIRgyZAgKCwulyvfy8oLBYAAAhIWF4f/+7/+s7129erVmlb0Bz1ESEbmgurg8ZOTIkTbP58+fj5UrV+Lo0aPo3Lkz3nnnHbz22msYM2YMAGD9+vUIDg7Gpk2b8PTTTyuW36tXL/znP/9B586dERMTg5kzZ+LUqVPYvn07evXqVbPK3oANJREROaSgoMDmuU6ng05nf+KV2WzG1q1bUVxcjN69eyMtLQ2XLl3C0KFDbcrp168fvv32W6mGcunSpSgqKgIAxMXFoaioCFu2bEHbtm3x9ttv12LNrmNDSUTkipw46zU83PYepnPmzEFcXFyVHzl16hR69+6NsrIyeHt7IyEhAZ07d8a3334LAAgODraJDw4Oxrlz56Sq07p1a+v/PT09sWLFCskVsY8NJRGRK3JiQ5mRkQFf398vo7HXm+zQoQNSUlKQl5eHbdu2ITY21ibd3I33kASuT/C5+bXqtG7dGklJSQgICLB5PS8vD3fddRfOnj0rVc7N2FASEZFDKmaxynB3d0fbttev/e3RoweSkpKwbNky6z0kL126hNDQUGt8dnZ2pV5mddLT02E2myu9bjAYcPHiRakyqsKGkojIBan+93C0DEcJIWAwGNCqVSuEhIQgMTERd955JwCgvLwchw4dUry0Y+fOndb/7927F35+ftbnZrMZX3/9NSIjI2tdRzaUN3DL0cLNw35WjzyhnN1Ee01ys0oOe1zwksvQotFW/iV1s7IcvVRZZyUz+Hzr3lo5CECZWbm83DK5umlVyusJAMU+qVJxIZo8xZgr5T5SZRkscvv+VFm4YozsespsWwAosbhLxZ0tDVSM6eB5WaosN8lpkekFAcpBAK7plL9/Gje51FgXi/2UgwDofY1Scbnlysevt9agGKNyM0ktz2F1kJnn1VdfRXR0NMLDw1FYWIjNmzfj4MGD2LNnD1QqFaZPn44FCxagXbt2aNeuHRYsWABPT09MnDjRbrmjR48GcH3YtuI6ygparRaRkZFYsmRJzSp7AzaUREQuqC4uD7l8+TImT56MrKws+Pn5oVu3btizZw+GDBkCAHj55ZdRWlqK5557Drm5uejZsyf27dsHHx/7P1Qtlus/jlq1aoWkpCQEBir/2KsJNpRERHRbrF692u77KpUKcXFx1c6YVVLVbbby8vLQpEmTWpVXgZl5iIhcUR1k5rnVFi1ahC1btlifjxs3Dv7+/mjevDlOnjxZ63LZUBIRuapG1EgCwD//+U/rNZ2JiYn46quvsGfPHkRHR+Oll16qdbkceiUiokYhKyvL2lB+8cUXeOSRRzB06FBERkaiZ8+etS6XPUoiIhfUGG+z1bRpU2RkZAAA9uzZg8GDBwO4fglKVddXymKPkojIFTXCGzePGTMGEydORLt27ZCTk4Po6GgAQEpKijXJQW2woSQiokbh7bffRmRkJDIyMrB48WJ4e3sDuD4k+9xzz9W6XDaUNzB7myH09rvn3k1KFcspMqillqcyyeW1CPAtkYrz1ilfzHzRLLdMP+8yqbg23nL3eDNZlEf5L2qbSJXVWn9FKk4mkQAA7Cvsqhhz/IpyggAAMJrlzmb4apSPo2tG5YvrAeD01SCpuHKz3Nf9vgDlRA0phS2kysoqkbuo/67ADKm4IK3yfQllEyvc10wu7+cP+c2l4gwm5e2bUaCcPMRcovw9doa6uI7yVtNqtfjrX/9a6fXp06c7VG6dnqM8fPgwRo4cibCwMKhUKuzYsaPa2KeffhoqlQrvvPOO9bX09HSoVKoqH1u3br31K0BE1FA1kstDdu7cCaPRaP2/vUdt1WmPsri4GN27d8fUqVMxduzYauN27NiBY8eOISwszOb18PBwZGVl2by2atUqLF682Do2TUREjdfo0aNx6dIlBAUFWVPZVUWlUtV6Qk+dNpTR0dGKDdrFixfx/PPPY+/evYiJibF5T61WIyQkxOa1hIQEjB8/3jo2TURElTWWodeK9HU3/9+Z6vU5SovFgsmTJ+Oll15Cly5dFOOTk5ORkpKC999/326cwWCAwfD7eYCb785NRNToNcJZr7dKvb6OctGiRdBoNHjhhRek4levXo1OnTqhT58+duPi4+Ph5+dnfdx8d24iokavkZyjrGCxWLBmzRo88MADiIqKQteuXTFq1Chs2LABQjhW0XrbUCYnJ2PZsmVYt26d1N2tS0tLsWnTJjzxxBOKsbNmzUJ+fr71UXGBKhERNTxCCIwaNQp/+tOfcPHiRXTt2hVdunTBuXPnMGXKFDz00EMOlV9vh16PHDmC7OxstGzZ0vqa2WzGzJkz8c477yA9Pd0m/rPPPkNJSQkef/xxxbJ1Oh10Op2zq0xE1GA0lnOUALBu3TocPnwYX3/9NQYMGGDz3v79+zF69Ghs2LBBqn2oSr3tUU6ePBk//PADUlJSrI+wsDC89NJL2Lt3b6X41atXY9SoUWjWrFkd1JaIqIFpREOvn3zyCV599dVKjSQADBw4EK+88go2btxY6/LrtEdZVFSE1NTfL25OS0tDSkoK/P390bJlSwQE2N71XKvVIiQkBB06dLB5PTU1FYcPH8bu3btvS72JiKj++OGHH7B48eJq34+Ojsa7775b6/LrtKE8fvy4zS+AGTNmAABiY2Oxbt066XLWrFmD5s2bY+jQoc6uYiVCSGS2kZyhrDLKZckxmOQy/ajdtIoxpjLlGAAoUsv9VMw22L/zeAWDRFaYzCK5LC5nPeRGDbQquWum/q9YubxrBZ5SZcm6WNZEMeZKqdwlTsVFHlJx1/Ry65BR5q8YI5txJ79Mrm75Rr1UnEXi+1dqlsvM46WRy4BTapL7zhjNyt9Tme+yWfL77iiVEFA5OMnF0c87y7Vr1xAcHFzt+8HBwcjNza11+XXaUPbv379Gs5FuPi9ZYcGCBViwYIGTakVE5AIa0eUhZrMZGk31zZlarYbJZKp1+fV2Mg8REZEMIQSmTJlS7STNG6+brw02lERELqgxzXqNjY1VjKntjFeADSURkWtqREOva9euvaXl19vLQ4iIiOoD9iiJiFxQYxp6vdXYUBIRuaJGNPR6q7GhJCJyQexRyuM5SiIiIjvYo7yBm94EN0/7F6Xq3Y2K5RRr5H5mySZb8JRYJgBo3CRSArnJLVOrlbs4V6+Wq5tMZh43yZ+nssv0cpO7dkomQ4tWW7s7o1dHZh1kt4fEzXVqVJ5FKP9+Npjk/nSYzHK/xQuNcjcpMFqUs9aUSRxrAFBqlsu4U2qUi5Mhs6skd6fjOPQqjQ0lEZGLcpWhU0dx6JWIiMgO9iiJiFyRENcfjpbhAthQEhG5IM56lcehVyIiIjvYoyQickWc9SqNDSURkQtSWa4/HC3DFXDolYiIyA72KImIXBGHXqWxobyBr18p1J72xxLCfXMVyykqlcsyYjbL5eBo3zRbKk7nppw9xizklhnukycVd5/vGam4ayZvxZgLnk2lyhrs85NUXLbZRypOJkuOWi03xmSWzEQjsx/cJP8KCcnhL4NZOasNIJexxmiRW8+ycrmsNn7aMqm4UI98xZiknAipsjz0RVJxeSV6qTgZ5QblP7mW0tsznslZr/LYUBIRuSJeRymN5yiJiIjsYI+SiMgFcehVHhtKIiJXxMk80jj0SkREZAd7lERELohDr/LYUBIRuSLOepXGoVciIiI72KO8QVGRB9wsHnZjLqibKJZTlmu/jJrKKJK7EF/G1Vy5i/DdJMdUfvEOk4q7Uq6ccOBKmXIMALTxCJGKu9cjTSouoInyheeFRrl9ahRyvz1H+J9SjEn1CpYqyyS5zK5NM6XiPN3KFWN0gSapsi55yR1vF0v8pOJyDF6KMXf4X5Aq63hOS6m4js0uS8XJfGfKZJI5FJdD7sh1DIde5bGhJCJyRZz1Ko1Dr0RERHawR0lE5II49CqPDSURkSuyiOsPR8twAWwoiYhcEc9RSuM5SiIiIjvYoyQickEqOOEcpVNqUv+xoSQickXMzCONQ69ERER21GmP8vDhw3jzzTeRnJyMrKwsJCQkYPTo0db3p0yZgvXr19t8pmfPnjh69CgA4Nq1a5gzZw727duHjIwMBAYGYvTo0Zg3bx78/OQyfdzIVK6Gm1ptN6a4zF2xHJVB7veH0Mj9GiszOW83CeHcwRKjsL+9Klgkssdo3CxSZbmrJLPCmH2l4sqEcraUYRKZdACgxKKTivN0MyjGRPv8IFWW7D7wU5dKxZ03+CvG9PJJlSrrgi5AKm53ZhepOKFVPn7zjHqpsgrK5LItBXgUS8UVGZX3faT3NcWYcotyZiRn4OUh8uq0R1lcXIzu3btj+fLl1cYMHz4cWVlZ1sfu3but72VmZiIzMxNvvfUWTp06hXXr1mHPnj144oknbkf1iYgaLuGkRw3Ex8fjnnvugY+PD4KCgjB69Gj8+uuvNjFTpkyBSqWyefTq1av26+kEddqjjI6ORnR0tN0YnU6HkJCqc3tGRUVh27Zt1udt2rTB/Pnz8dhjj8FkMkGj4SlYIqL64tChQ5g2bRruuecemEwmvPbaaxg6dCh+/vlneHn9nsd3+PDhWLt2rfW5u7vySN6tVO9bkoMHDyIoKAhNmjRBv379MH/+fAQFBVUbn5+fD19fXzaSRER2qISAysHJODX9/J49e2yer127FkFBQUhOTkbfvn2tr9vrINWFet2aREdHY9y4cYiIiEBaWhpmz56NgQMHIjk5GTpd5fMBOTk5mDdvHp5++mm75RoMBhgMv58jKigocHrdiYjqNcv/Ho6Wgcp/Q3U6XZV/o2+Wn58PAPD3tz0vXtMO0q1Wr2e9jh8/HjExMYiKisLIkSPx5Zdf4rfffsOuXbsqxRYUFCAmJgadO3fGnDlz7JYbHx8PPz8/6yM8PPxWrQIRUaMXHh5u8zc1Pj5e8TNCCMyYMQP3338/oqKirK9HR0dj48aN2L9/P5YsWYKkpCQMHDjQpnNzu9XrHuXNQkNDERERgTNnzti8XlhYiOHDh8Pb2xsJCQnQau3PYpw1axZmzJhhfV5QUMDGkohcijOHXjMyMuDr+/ssc5ne5PPPP48ffvgB33zzjc3r48ePt/4/KioKPXr0QEREBHbt2oUxY8Y4VN/aalANZU5ODjIyMhAaGmp9raCgAMOGDYNOp8POnTvh4aE85Vt2WICIqNFyYq5XX19fm4ZSyZ///Gfs3LkThw8fRosWLezGVtdBup3qtKEsKipCaurv12OlpaUhJSUF/v7+8Pf3R1xcHMaOHYvQ0FCkp6fj1VdfRWBgIB566CEA13uSQ4cORUlJCT7++GMUFBRYx8qbNWsGtcI1kURELqsOMvMIIfDnP/8ZCQkJOHjwIFq1aqX4mao6SLdbnTaUx48fx4ABA6zPK4ZDY2NjsXLlSpw6dQobNmxAXl4eQkNDMWDAAGzZsgU+Pj4AgOTkZBw7dgwA0LZtW5uy09LSEBkZeXtWhIiIFE2bNg2bNm3Cv//9b/j4+ODSpUsAAD8/P+j1ehQVFSl2kOpCnTaU/fv3h7Dzi2Tv3r0Ofb6m3DN0UHvYH5It81PO4uKZJTdHyiK59S9pm8oFSlDnKtcfALKMcuvwvTpCKq64XPk6KINRboM0dW8jFdfN+4JUXDv3S4oxPXW5UmUlGeRm5u0v6KwY01GfJVVWK90Vqbgdl++UirtW5qkYU2qWO44uljSRisvMlovT6pSzMhUZ5a65u3pZbqiwtFxuXQ1lynGXfbwVY8wlt2fSSl1k5lm5ciWA63+7b7R27VpMmTIFarVasYNUFxrUOUoiInKSOhp6tUev1yt2kOpCvb48hIiIqK6xR0lE5IJUlusPR8twBWwoiYhcEe9HKY1Dr0RERHawR0lE5IqcmHCgsWNDSUTkguri7iENFYdeiYiI7GCPkojIFXEyjzQ2lDfQFgNqhcQfKqHcCdflyh08Zg+VVJyhQG43yUzVds+XW2aZXm6Z2QXKmUYAwGBQzloiLHJ1k832onNTzuICAFqVWTHGw80oVdZ/SyKl4n4rUM7gUy6ZuslN8kTR2Vx/5SAApSXKNwwwWuQGo3ILlbP8AID6ktxNCox65eMos0Quk457plxcSalczmg3g/Lxe61UeZ9aSsuklucwAcfvR+ka7SQbSiIiV8RzlPJ4jpKIiMgO9iiJiFyRgBPOUTqlJvUeG0oiIlfEyTzSOPRKRERkB3uURESuyAJAbqK5/TJcABtKIiIXxFmv8jj0SkREZAd7lDfwvCygdrf/C8kocX2912XlC9gBoNxb7ndKuY9cnFTCgUKpomDWyy2zRK+XK7BcojzJYaDsYrkkBxrJm+XJJCYwWOQuTj9VECYVl5HXRDHGaJG70N0i5DZc4VUvqTgYlffVVfhIFWXKd5eK88yVWweTQbluJqPcvvK4JrdMN6PcftBI5AmQSbxhKZP7++EwTuaRxoaSiMgVsaGUxqFXIiIiO9ijJCJyRexRSmNDSUTkinh5iDQ2lERELoiXh8jjOUoiIiI72KMkInJFPEcpjQ0lEZErsghA5WBDZ3GNhpJDr0RERHawR3kDnwtl0ChsEaOn8ibzPJcvtTxTE7msNsLNUyrOzaT8605XIJf1w80od2iUlMtlXlEblGOE5M+2K2gqFXfNRy6Dz0U/P8UYf32JVFn/dzlQKk5keyjGpPrK7XfZmYf6dMl9Va4cY2gil63GO09uWqVvutxKlHsrl2f0kjuQ/NKVMzIBgMFPrjxNqfL3r6ypcllmie3vFBx6lcaGkojIJTmhoXSROzdz6JWIiMgO9iiJiFwRh16lsaEkInJFFgGHh04565WIiIjYoyQickXCcv3haBkugA0lEZEr4jlKaWwoiYhcEc9RSuM5SiIiIjvqtEd5+PBhvPnmm0hOTkZWVhYSEhIwevRo6/tTpkzB+vXrbT7Ts2dPHD16FACQnp6OVq1aVVn2p59+inHjxtWoPsJNBeFmP/OHm1niF5RJLvuN0rJqSiYzj+wPSCFZNZXkKQqVRBIUIZc4RprFLLcS5SblLDNFRrnKmcvkvlKacuW6WQxyv2NV5ZKZY+SSC0ll5rGo5bate57cAafLk8uSozIr7yu1Qa5uHpdLpeLcynVScZoS5e+9cFM+jkzG23Tej0Ov0uq0R1lcXIzu3btj+fLl1cYMHz4cWVlZ1sfu3but74WHh9u8l5WVhblz58LLywvR0dG3YxWIiBomgd8by1o/6nolbo867VFGR0crNmg6nQ4hISFVvqdWqyu9l5CQgPHjx8PbWy7PJxERkT31/hzlwYMHERQUhPbt2+PJJ59EdnZ2tbHJyclISUnBE088YbdMg8GAgoICmwcRkUtxuDfpjFyxDUO9biijo6OxceNG7N+/H0uWLEFSUhIGDhwIg6HqW1GsXr0anTp1Qp8+feyWGx8fDz8/P+sjPDz8VlSfiKj+slic83AB9bqhHD9+PGJiYhAVFYWRI0fiyy+/xG+//YZdu3ZVii0tLcWmTZsUe5MAMGvWLOTn51sfGRkZt6L6RETUCDSo6yhDQ0MRERGBM2fOVHrvs88+Q0lJCR5//HHFcnQ6HXQ6uZlsRESNEme9SmtQDWVOTg4yMjIQGhpa6b3Vq1dj1KhRaNasWR3UjIiogWFDKa1OG8qioiKkpqZan6elpSElJQX+/v7w9/dHXFwcxo4di9DQUKSnp+PVV19FYGAgHnroIZtyUlNTcfjwYZtLR4iIiJyhThvK48ePY8CAAdbnM2bMAADExsZi5cqVOHXqFDZs2IC8vDyEhoZiwIAB2LJlC3x8fGzKWbNmDZo3b46hQ4fe1voTETVYTGEnrU4byv79+0PY6brv3btXqpwFCxZgwYIFDtdH99slaJQyZ+gkMmukn5danntxmFScrzpYKs7NoJwZxK3UKFWWWecrFaeyyM0Hk8n2YvKQKgpGb+XsLABgLpWrW4FBIjOPh1zltJe1UnG6a8rZY8ol6gUAaoksPwDgeVluhqJMtiWVSW6Z+hy5ZeqyJdMGWfSKIWrZ7ZZbLBWnk8yUo84rUoxRmZooxphMZVLLc5QQFggH7/7h6OcbigZ1jpKIiJxECMd7hC5yjrJeXx5CRERU19ijJCJyRcIJ5yhdpEfJhpKIyBVZLPK3/6mOi5yj5NArERGRHexREhG5Ig69SmNDSUTkgoTFAuHg0KurXB7CoVciIiI72KO8gfDxglDbT5Zu8VZOpq4xVH2j6UplBfpJxZUFKCc5AACVxDVRbga5ZPClAXK/oUqbyV147qacCwFmudWEMUAuaYLaRy7O17Pq27bdyMdDOQYALkpe7G7RKCcmMDeVqz+MkkkfDJJfd4nRNENTuSE3s15ue0DloxwDoNRfeV3NHnLHJBAoFWXSy5Wny1VOSmHwV97vJqMK+F5qkY6pg6HX+Ph4bN++HadPn4Zer0efPn2waNEidOjQ4YYiBebOnYtVq1YhNzcXPXv2xPvvv48uXbo4VlcHsEdJROSKLMI5jxo4dOgQpk2bhqNHjyIxMREmkwlDhw5FcfHvWZIWL16MpUuXYvny5UhKSkJISAiGDBmCwsJCZ28BaexREhHRbbFnzx6b52vXrkVQUBCSk5PRt29fCCHwzjvv4LXXXsOYMWMAAOvXr0dwcDA2bdqEp59+ui6qzR4lEZFLEuL6dZAOPa73KAsKCmweBoPcqYr8/HwAgL+/P4Drd5C6dOmSzQ0udDod+vXrh2+//dbJG0AeG0oiIhckLMIpDwAIDw+Hn5+f9REfH6+8fCEwY8YM3H///YiKigIAXLp0CQAQHGx7I4jg4GDre3WBQ69ERK5IWAA4JzNPRkYGfH1/v+OQTqc8afD555/HDz/8gG+++abSeyqV7QQqIUSl124nNpREROQQX19fm4ZSyZ///Gfs3LkThw8fRosWLayvh4Rcv2Lg0qVLCA0Ntb6enZ1dqZd5O3HolYjIBTlz6FV6mULg+eefx/bt27F//360atXK5v1WrVohJCQEiYmJ1tfKy8tx6NAh9OnTxynrXRvsURIRuSInDr3KmjZtGjZt2oR///vf8PHxsZ539PPzg16vh0qlwvTp07FgwQK0a9cO7dq1w4IFC+Dp6YmJEyc6VlcHsKHE9V85AGAyK8/UskhcOC8s5VLLtUgsDwBMRrk7nkslHDBKXiheLndomA1y5w2ETMIByR+nllK5C/FVark4M5T3l8yxAQCWUsl9Vaa8QWTXUzbhgNmJCQcsZZLHkeTxYTJKHCAAzOUSCQckz2WZjCa5OI1ceWqTcnky62n+3/dd3OI8qiYYHc43YILkMfo/K1euBAD079/f5vW1a9diypQpAICXX34ZpaWleO6556wJB/bt2wcfH7mkFLeCStzqvdEAXLhwAeHh4XVdDSIiq4yMDJvzd85SVlaGVq1aOW0WaUhICNLS0uDhoZyZqKFiQwnAYrEgMzMTPj4+1plVBQUFCA8PrzSbq6Fo6PUHuA71QUOvP9Dw1kEIgcLCQoSFhcHN7dZMIykrK0N5udzIlxJ3d/dG3UgCHHoFALi5uVX7y62ms7nqm4Zef4DrUB809PoDDWsd/Pzk8kDXloeHR6Nv3JyJs16JiIjsYENJRERkBxvKauh0OsyZM0cqw0R91NDrD3Ad6oOGXn+gcawD1S1O5iEiIrKDPUoiIiI72FASERHZwYaSiIjIDjaUREREdrh0Q7ly5Up069bNeiFy79698eWXX1rfF0IgLi4OYWFh0Ov16N+/P3766ac6rHFlSuswZcoUqFQqm0evXr3qsMb2xcfHWxMjV2gI+6FCVfWv7/sgLi6uUv0qbncENIztr7QO9X0fUP3m0g1lixYtsHDhQhw/fhzHjx/HwIED8eCDD1r/CCxevBhLly7F8uXLkZSUhJCQEAwZMgSFhYV1XPPfKa0DAAwfPhxZWVnWx+7du+uwxtVLSkrCqlWr0K1bN5vXG8J+AKqvP1D/90GXLl1s6nfq1Cnrew1l+9tbB6D+7wOqxwTZaNq0qfjoo4+ExWIRISEhYuHChdb3ysrKhJ+fn/jggw/qsIbKKtZBCCFiY2PFgw8+WLcVklBYWCjatWsnEhMTRb9+/cSLL74ohBANZj9UV38h6v8+mDNnjujevXuV7zWU7W9vHYSo//uA6jeX7lHeyGw2Y/PmzSguLkbv3r2RlpaGS5cuYejQodYYnU6Hfv364dtvv63Dmlbv5nWocPDgQQQFBaF9+/Z48sknkZ2dXYe1rNq0adMQExODwYMH27zeUPZDdfWvUN/3wZkzZxAWFoZWrVphwoQJOHv2LICGs/2B6tehQn3fB1R/uXxS9FOnTqF3794oKyuDt7c3EhIS0LlzZ+sfgeDgYJv44OBgnDt3ri6qWq3q1gEAoqOjMW7cOERERCAtLQ2zZ8/GwIEDkZycXG8ylWzevBknTpxAUlJSpfcqbgVUn/eDvfoD9X8f9OzZExs2bED79u1x+fJl/OMf/0CfPn3w008/NYjtD9hfh4CAgHq/D6h+c/mGskOHDkhJSUFeXh62bduG2NhYHDp0yPq+6qabwAohKr1W16pbh86dO2P8+PHWuKioKPTo0QMRERHYtWsXxowZU4e1vi4jIwMvvvgi9u3bZ/duBvV1P8jUv77vg+joaOv/u3btit69e6NNmzZYv369dcJLfd3+Feytw4wZM+r9PqD6zeWHXt3d3dG2bVv06NED8fHx6N69O5YtW2adMXfzzU2zs7Mr/bqua9WtQ1VCQ0MRERGBM2fO3OZaVi05ORnZ2dm4++67odFooNFocOjQIbz77rvQaDTWbV1f94NS/c3myne0r2/74GZeXl7o2rUrzpw506C+Bze6cR2qUt/3AdUvLt9Q3kwIAYPBgFatWiEkJASJiYnW98rLy3Ho0CH06dOnDmuorGIdqpKTk4OMjAyEhobe5lpVbdCgQTh16hRSUlKsjx49emDSpElISUlB69at6/V+UKq/Wq2u9Jn6tg9uZjAY8MsvvyA0NLTBfg9uXIeq1Pd9QPVMnU4lqmOzZs0Shw8fFmlpaeKHH34Qr776qnBzcxP79u0TQgixcOFC4efnJ7Zv3y5OnTolHn30UREaGioKCgrquOa/s7cOhYWFYubMmeLbb78VaWlp4sCBA6J3796iefPm9WodbnbzrNGGsB9udGP9G8I+mDlzpjh48KA4e/asOHr0qHjggQeEj4+PSE9PF0I0jO1vbx0awj6g+s2lz1FevnwZkydPRlZWFvz8/NCtWzfs2bMHQ4YMAQC8/PLLKC0txXPPPYfc3Fz07NkT+/btg4+PTx3X/Hf21qG0tBSnTp3Chg0bkJeXh9DQUAwYMABbtmypV+ugpCHsh+qo1ep6vw8uXLiARx99FFevXkWzZs3Qq1cvHD16FBEREQAaxva3tw6N5XtAdYe32SIiIrKD5yiJiIjsYENJRERkBxtKIiIiO9hQEhER2cGGkoiIyA42lERERHawoSQiIrKDDSUREZEdbCiJqjBlyhSoVCosXLjQ5vUdO3ZY75px8OBBqFQqNG3aFGVlZTZx33//PVQqlc0dNiriKx7NmjVDdHQ0Tp48eetXiIhqjQ0lUTU8PDywaNEi5Obm2o3z8fFBQkKCzWtr1qxBy5Ytq4z/9ddfkZWVhV27diE3NxfDhw9Hfn6+0+pNRM7FhpKoGoMHD0ZISAji4+PtxsXGxmLNmjXW56Wlpdi8eTNiY2OrjA8KCkJISAjuvfdeLFmyBJcuXcLRo0edWncich42lETVUKvVWLBgAd577z1cuHCh2rjJkyfjyJEjOH/+PABg27ZtiIyMxF133aW4DL1eDwAwGo3OqTQROR0bSiI7HnroIdxxxx2YM2dOtTFBQUGIjo7GunXrAFwfdv3jH/+oWHZOTg7mzp0LHx8f3Hvvvc6qMhE5GRtKIgWLFi3C+vXr8fPPP1cb88c//hHr1q3D2bNn8d1332HSpEnVxrZo0QLe3t4IDAzEL7/8gq1btyIoKOhWVJ2InIANJZGCvn37YtiwYXj11VerjRkxYgTKysrwxBNPYOTIkQgICKg29siRIzh58iTy8/Px22+/YdiwYbei2kTkJC5942YiWQsXLsQdd9yB9u3bV/m+Wq3G5MmTsXjxYnz55Zd2y2rVqhWaNGlyC2pJRLcCe5REErp27YpJkybhvffeqzZm3rx5uHLlCnuIRI0MG0oiSfPmzYMQotr33d3dERgYaJNkgIgaPpWw980nIiJycexREhER2cGGkoiIyA42lERERHawoSQiIrKDDSUREZEdbCiJiIjsYENJRERkBxtKIiIiO9hQEhER2cGGkoiIyA42lERERHawoSQiIrLj/wEVL++HZEYPCgAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig, ax = plt.subplots()\n", "im = ax.imshow(dist_arr, origin='upper')\n", "\n", "# add residue ID labels to axes\n", "tick_interval = 5\n", "ax.set_yticks(np.arange(n_LID)[::tick_interval])\n", "ax.set_xticks(np.arange(n_NMP)[::tick_interval])\n", "ax.set_yticklabels(LID_ca.resids[::tick_interval])\n", "ax.set_xticklabels(NMP_ca.resids[::tick_interval])\n", "\n", "# add figure labels and titles\n", "plt.ylabel('LID')\n", "plt.xlabel('NMP')\n", "plt.title('Distance between alpha-carbon')\n", "\n", "# colorbar\n", "cbar = fig.colorbar(im)\n", "cbar.ax.set_ylabel('Distance (Angstrom)')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Calculating residue-to-residue distances" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "As `distances.distance_array` just takes coordinate arrays as input, it is very flexible in calculating distances between each atom, or centers-of-masses, centers-of-geometries, and so on.\n", "\n", "Instead of calculating the distance between the alpha-carbon of each residue, we could look at the distances between the centers-of-mass instead. The process is very similar to the atom-wise distances above, but we give `distances.distance_array` an array of residue center-of-mass coordinates instead." ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "execution": { "iopub.execute_input": "2021-05-19T05:57:19.481709Z", "iopub.status.busy": "2021-05-19T05:57:19.480981Z", "iopub.status.idle": "2021-05-19T05:57:19.486125Z", "shell.execute_reply": "2021-05-19T05:57:19.486578Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "LID has 38 residues and NMP has 30 residues\n" ] } ], "source": [ "LID = u.select_atoms('resid 122-159')\n", "NMP = u.select_atoms('resid 30-59')\n", "\n", "LID_com = LID.center_of_mass(compound='residues')\n", "NMP_com = NMP.center_of_mass(compound='residues')\n", "\n", "n_LID = len(LID_com)\n", "n_NMP = len(NMP_com)\n", "\n", "print('LID has {} residues and NMP has {} residues'.format(n_LID, n_NMP))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can pass these center-of-mass arrays directly into `distances.distance_array`." ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "execution": { "iopub.execute_input": "2021-05-19T05:57:19.490543Z", "iopub.status.busy": "2021-05-19T05:57:19.489581Z", "iopub.status.idle": "2021-05-19T05:57:19.492443Z", "shell.execute_reply": "2021-05-19T05:57:19.493076Z" } }, "outputs": [], "source": [ "res_dist = distances.distance_array(LID_com, NMP_com,\n", " box=u.dimensions)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Plotting" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "execution": { "iopub.execute_input": "2021-05-19T05:57:19.531609Z", "iopub.status.busy": "2021-05-19T05:57:19.530573Z", "iopub.status.idle": "2021-05-19T05:57:19.659680Z", "shell.execute_reply": "2021-05-19T05:57:19.660426Z" } }, "outputs": [ { "data": { "text/plain": [ "Text(0, 0.5, 'Distance (Angstrom)')" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAW8AAAHFCAYAAAA9u3icAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8o6BhiAAAACXBIWXMAAA9hAAAPYQGoP6dpAABMT0lEQVR4nO3deXiU5bk/8O/sM9kmZE8gBATZBIIbKC4QoEBkOYh1aRUipdbaWqvQnp949AClstSlx0KR0yMIrVKtYlARFVAwWJFCOEG0qKQkEEggECCTbSaTmef3BycjQ5J5bhRIXv1+rmuui5m587zPu8ydlzfvPbdJKaVARESGYm7vCRAR0blj8iYiMiAmbyIiA2LyJiIyICZvIiIDYvImIjIgJm8iIgNi8iYiMiAmbyIiA2LyFli5ciVMJlPo4XQ6kZaWhpycHCxYsACVlZUtfmbOnDkwmUzntJz6+nrMmTMHW7ZsOU8zb1+lpaUwmUx48sknz9uY5eXlmDNnDoqKis7bmHTa0qVLsXLlyvaeRpseffRRdO3aFVarFfHx8e09nXbH5H0Onn/+eWzbtg0bN27EH//4RwwaNAiLFi1C3759sWnTprDYH//4x9i2bds5jV9fX4+5c+d+a5L3hVBeXo65c+cyeV8AHTl5v/7663j88ccxdepUfPDBBy0+b99F1vaegJH0798fV111Vej5LbfcgoceegjXX389Jk+ejH379iE1NRUA0KVLF3Tp0qW9pkrUISil4PV64XK5vtE4n376KQDggQceQEpKyvmYmvEp0nr++ecVALVjx45W3//b3/6mAKi5c+eGXps9e7Y6e/O+9957atiwYSohIUE5nU6VmZmpJk+erOrq6lRJSYkC0OKRl5enlFJq37596u6771Y9e/ZULpdLZWRkqPHjx6tPPvkkbBmbN29WANTq1avVI488otLT01VsbKwaOXKk+vzzz1vM/e2331YjRoxQcXFxyuVyqT59+qj58+eHxezYsUNNmDBBderUSTkcDjVo0CD18ssva7db8zotWrRI/fa3v1WZmZnK4XCoK6+8Um3atKlF/Jdffql+8IMfqOTkZGW321WfPn3UkiVLWqzb2Y/Zs2erdevWKQDqH//4Ryj+1VdfVQDUTTfdFLacAQMGqMmTJ4eeB4NB9cc//lFlZ2crp9Op4uPj1S233KL+9a9/tZjjxo0b1YgRI1RsbKxyuVxq6NChLdaled9/+umn6o477lBxcXEqJSVFTZs2TZ06dUq73ZQ6f/ul+dh9//331U9/+lOVmJioEhIS1M0336wOHz4cisvKymqxXbOyskLvV1dXq5kzZ6pu3bopm82mMjIy1C9/+UtVW1sbtjwA6uc//7l69tlnVZ8+fZTNZlPPPvtsm+sZCATUokWLVO/evZXdblfJyclqypQpqqysLOLcZs+e3eaYeXl5Kjo6Wu3du1eNHj1aRUVFqbS0NLVgwQKllFLbtm1T1113nYqKilKXXnqpWrlyZdjPV1ZWqvvuu0/17dtXRUdHq+TkZJWTk6MKCgpaLGvp0qVq4MCBKjo6WsXExKjevXurWbNmhd6vq6sLbTeHw6E6deqkrrzySrV69eo25y/F5C2gS961tbXKYrGokSNHhl47O3mXlJQop9Opvve976m1a9eqLVu2qBdffFFNmTJFnTx5Unm9XvXOO+8oAGr69Olq27Ztatu2baq4uFgppdQHH3ygZs6cqV599VX1wQcfqPz8fDVp0iTlcrnCknJzguvWrZu688471VtvvaX++te/qq5du6pLL71UNTU1hWKfe+45ZTKZ1PDhw9Xq1avVpk2b1NKlS9XPfvazUMz777+v7Ha7uuGGG9TLL7+s3nnnHXX33XcrAOr555+PuN2ak3dmZqa6/vrr1Zo1a9Qrr7yirr76amWz2dRHH30Uiv3ss8+U2+1WAwYMUH/+85/Vhg0b1MyZM5XZbFZz5sxRSp1OIM374tFHHw1to7KyMlVTU6NsNltYgvvpT3+qXC6Xio6OVo2NjUoppY4ePapMJpNaunRpKO6ee+5RNptNzZw5U73zzjtq9erVqk+fPio1NVUdOXIkFPeXv/xFmUwmNWnSJPXaa6+pN998U40fP15ZLJawBN6873v37q3+8z//U23cuFE9/fTTyuFwqGnTpkXcZud7vzRvr0suuUT94he/UO+++6567rnnVKdOnVROTk4obteuXeqSSy5Rl19+eWi77tq1Syl1OgENGjRIJSUlqaefflpt2rRJPfPMM8rtdqsRI0aoYDAYGgeA6ty5sxo4cKBavXq1ev/999Wnn37a5rr+5Cc/UQDU/fffr9555x21bNkylZycrDIzM9WxY8dCc5s+fboCoN55553QPm9LXl6estvtqm/fvuqZZ55R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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig2, ax2 = plt.subplots()\n", "im2 = ax2.imshow(res_dist, origin='upper')\n", "\n", "# add residue ID labels to axes\n", "tick_interval = 5\n", "ax2.set_yticks(np.arange(n_LID)[::tick_interval])\n", "ax2.set_xticks(np.arange(n_NMP)[::tick_interval])\n", "ax2.set_yticklabels(LID.residues.resids[::tick_interval])\n", "ax2.set_xticklabels(NMP.residues.resids[::tick_interval])\n", "\n", "# add figure labels and titles\n", "plt.ylabel('LID')\n", "plt.xlabel('NMP')\n", "plt.title('Distance between center-of-mass')\n", "\n", "# colorbar\n", "cbar2 = fig2.colorbar(im)\n", "cbar2.ax.set_ylabel('Distance (Angstrom)')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## References\n", "\n", "[1] Oliver Beckstein, Elizabeth J. Denning, Juan R. Perilla, and Thomas B. Woolf.\n", "Zipping and Unzipping of Adenylate Kinase: Atomistic Insights into the Ensemble of OpenClosed Transitions.\n", "Journal of Molecular Biology, 394(1):160–176, November 2009.\n", "00107.\n", "URL: https://linkinghub.elsevier.com/retrieve/pii/S0022283609011164, doi:10.1016/j.jmb.2009.09.009.\n", "\n", "[2] Richard J. Gowers, Max Linke, Jonathan Barnoud, Tyler J. E. Reddy, Manuel N. Melo, Sean L. Seyler, Jan Domański, David L. Dotson, Sébastien Buchoux, Ian M. Kenney, and Oliver Beckstein.\n", "MDAnalysis: A Python Package for the Rapid Analysis of Molecular Dynamics Simulations.\n", "Proceedings of the 15th Python in Science Conference, pages 98–105, 2016.\n", "00152.\n", "URL: https://conference.scipy.org/proceedings/scipy2016/oliver_beckstein.html, doi:10.25080/Majora-629e541a-00e.\n", "\n", "[3] Naveen Michaud-Agrawal, Elizabeth J. Denning, Thomas B. Woolf, and Oliver Beckstein.\n", "MDAnalysis: A toolkit for the analysis of molecular dynamics simulations.\n", "Journal of Computational Chemistry, 32(10):2319–2327, July 2011.\n", "00778.\n", "URL: http://doi.wiley.com/10.1002/jcc.21787, doi:10.1002/jcc.21787." ] } ], "metadata": { "kernelspec": { "display_name": "Python 3.9.15 ('mda-user-guide')", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.9.15" }, "toc": { "base_numbering": 1, "nav_menu": {}, "number_sections": false, "sideBar": true, "skip_h1_title": false, "title_cell": "Table of Contents", "title_sidebar": "Contents", "toc_cell": false, "toc_position": {}, "toc_section_display": true, "toc_window_display": true }, "vscode": { "interpreter": { "hash": "7b52aa17ef4e9358c0e91ff3f0bf50d10667bb8b55636d4b9fb967a2ff94bd8c" } } }, "nbformat": 4, "nbformat_minor": 2 }