Files
wassname 3fb53f620e wip
2022-12-23 14:34:54 +08:00

1032 lines
285 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import matplotlib.pyplot as plt\n",
"import json"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"import torch"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"device = torch.device(\"cuda\" if torch.cuda.is_available() else \"cpu\")"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"from gluonts.dataset.repository.datasets import get_dataset\n",
"from gluonts.dataset.util import to_pandas\n",
"from gluonts.evaluation import Evaluator\n",
"from gluonts.evaluation.backtest import make_evaluation_predictions"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"ename": "ImportError",
"evalue": "cannot import name 'shift_timestamp' from 'gluonts.transform' (/home/wassname/miniforge3/envs/glounts/lib/python3.9/site-packages/gluonts/transform/__init__.py)",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mImportError\u001b[0m Traceback (most recent call last)",
"\u001b[1;32m/media/wassname/SGIronWolf/projects5/timeseries/pytorch-ts/examples/m5-tft.ipynb Cell 5\u001b[0m in \u001b[0;36m<cell line: 2>\u001b[0;34m()\u001b[0m\n\u001b[1;32m <a href='vscode-notebook-cell:/media/wassname/SGIronWolf/projects5/timeseries/pytorch-ts/examples/m5-tft.ipynb#W4sZmlsZQ%3D%3D?line=0'>1</a>\u001b[0m \u001b[39mfrom\u001b[39;00m \u001b[39mpts\u001b[39;00m\u001b[39m.\u001b[39;00m\u001b[39mdataset\u001b[39;00m\u001b[39m.\u001b[39;00m\u001b[39mrepository\u001b[39;00m \u001b[39mimport\u001b[39;00m dataset_recipes\n\u001b[0;32m----> <a href='vscode-notebook-cell:/media/wassname/SGIronWolf/projects5/timeseries/pytorch-ts/examples/m5-tft.ipynb#W4sZmlsZQ%3D%3D?line=1'>2</a>\u001b[0m \u001b[39mfrom\u001b[39;00m \u001b[39mpts\u001b[39;00m\u001b[39m.\u001b[39;00m\u001b[39mmodel\u001b[39;00m\u001b[39m.\u001b[39;00m\u001b[39mtft\u001b[39;00m \u001b[39mimport\u001b[39;00m TemporalFusionTransformerEstimator\n\u001b[1;32m <a href='vscode-notebook-cell:/media/wassname/SGIronWolf/projects5/timeseries/pytorch-ts/examples/m5-tft.ipynb#W4sZmlsZQ%3D%3D?line=2'>3</a>\u001b[0m \u001b[39mfrom\u001b[39;00m \u001b[39mpts\u001b[39;00m \u001b[39mimport\u001b[39;00m Trainer\n",
"File \u001b[0;32m/media/wassname/SGIronWolf/projects5/timeseries/pytorch-ts/pts/model/tft/__init__.py:1\u001b[0m, in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0m \u001b[39mfrom\u001b[39;00m \u001b[39m.\u001b[39;00m\u001b[39mtft_estimator\u001b[39;00m \u001b[39mimport\u001b[39;00m TemporalFusionTransformerEstimator\n\u001b[1;32m 2\u001b[0m \u001b[39mfrom\u001b[39;00m \u001b[39m.\u001b[39;00m\u001b[39mtft_network\u001b[39;00m \u001b[39mimport\u001b[39;00m (\n\u001b[1;32m 3\u001b[0m TemporalFusionTransformerTrainingNetwork,\n\u001b[1;32m 4\u001b[0m TemporalFusionTransformerPredictionNetwork,\n\u001b[1;32m 5\u001b[0m )\n",
"File \u001b[0;32m/media/wassname/SGIronWolf/projects5/timeseries/pytorch-ts/pts/model/tft/tft_estimator.py:39\u001b[0m, in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m 33\u001b[0m \u001b[39mfrom\u001b[39;00m \u001b[39mpts\u001b[39;00m\u001b[39m.\u001b[39;00m\u001b[39mmodel\u001b[39;00m\u001b[39m.\u001b[39;00m\u001b[39mutils\u001b[39;00m \u001b[39mimport\u001b[39;00m get_module_forward_input_names\n\u001b[1;32m 35\u001b[0m \u001b[39mfrom\u001b[39;00m \u001b[39m.\u001b[39;00m\u001b[39mtft_network\u001b[39;00m \u001b[39mimport\u001b[39;00m (\n\u001b[1;32m 36\u001b[0m TemporalFusionTransformerPredictionNetwork,\n\u001b[1;32m 37\u001b[0m TemporalFusionTransformerTrainingNetwork,\n\u001b[1;32m 38\u001b[0m )\n\u001b[0;32m---> 39\u001b[0m \u001b[39mfrom\u001b[39;00m \u001b[39m.\u001b[39;00m\u001b[39mtft_transform\u001b[39;00m \u001b[39mimport\u001b[39;00m BroadcastTo, TFTInstanceSplitter\n\u001b[1;32m 42\u001b[0m \u001b[39mdef\u001b[39;00m \u001b[39m_default_feat_args\u001b[39m(dims_or_cardinalities: List[\u001b[39mint\u001b[39m]):\n\u001b[1;32m 43\u001b[0m \u001b[39mif\u001b[39;00m dims_or_cardinalities:\n",
"File \u001b[0;32m/media/wassname/SGIronWolf/projects5/timeseries/pytorch-ts/pts/model/tft/tft_transform.py:22\u001b[0m, in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m 20\u001b[0m \u001b[39mfrom\u001b[39;00m \u001b[39mgluonts\u001b[39;00m\u001b[39m.\u001b[39;00m\u001b[39mdataset\u001b[39;00m\u001b[39m.\u001b[39;00m\u001b[39mcommon\u001b[39;00m \u001b[39mimport\u001b[39;00m DataEntry\n\u001b[1;32m 21\u001b[0m \u001b[39mfrom\u001b[39;00m \u001b[39mgluonts\u001b[39;00m\u001b[39m.\u001b[39;00m\u001b[39mdataset\u001b[39;00m\u001b[39m.\u001b[39;00m\u001b[39mfield_names\u001b[39;00m \u001b[39mimport\u001b[39;00m FieldName\n\u001b[0;32m---> 22\u001b[0m \u001b[39mfrom\u001b[39;00m \u001b[39mgluonts\u001b[39;00m\u001b[39m.\u001b[39;00m\u001b[39mtransform\u001b[39;00m \u001b[39mimport\u001b[39;00m (\n\u001b[1;32m 23\u001b[0m InstanceSplitter,\n\u001b[1;32m 24\u001b[0m MapTransformation,\n\u001b[1;32m 25\u001b[0m shift_timestamp,\n\u001b[1;32m 26\u001b[0m target_transformation_length,\n\u001b[1;32m 27\u001b[0m )\n\u001b[1;32m 28\u001b[0m \u001b[39mfrom\u001b[39;00m \u001b[39mgluonts\u001b[39;00m\u001b[39m.\u001b[39;00m\u001b[39mtransform\u001b[39;00m\u001b[39m.\u001b[39;00m\u001b[39msampler\u001b[39;00m \u001b[39mimport\u001b[39;00m InstanceSampler\n\u001b[1;32m 31\u001b[0m \u001b[39mclass\u001b[39;00m \u001b[39mBroadcastTo\u001b[39;00m(MapTransformation):\n",
"\u001b[0;31mImportError\u001b[0m: cannot import name 'shift_timestamp' from 'gluonts.transform' (/home/wassname/miniforge3/envs/glounts/lib/python3.9/site-packages/gluonts/transform/__init__.py)"
]
}
],
"source": [
"from pts.dataset.repository import dataset_recipes\n",
"from pts.model.tft import TemporalFusionTransformerEstimator\n",
"from pts import Trainer"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"dataset = get_dataset(\"pts_m5\", regenerate=False)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAXAAAAEICAYAAABGaK+TAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/Z1A+gAAAACXBIWXMAAAsTAAALEwEAmpwYAAA3DElEQVR4nO2deZxVxZX4v6cbkKXZbRdEaRZBBAFlNQR9xAWiiWbGJBMd89PJQmY+MxkniYiZZGJiJo4zmZjFzGhciDqJRlyiERABpUVlk2aRZu0GGmi2hm6g+/W+1O+Pt/Tb333v3bfc7vP9fN7n3Vu3TtWpunXPrXtuVV0xxqAoiqI4j7xsK6AoiqIkhxpwRVEUh6IGXFEUxaGoAVcURXEoasAVRVEcihpwRVEUh6IGXFEUxaGoAVcURXEoasCVqIhIhYg0iog74DdMRM4Tkf8QkcPe42UislBEJET+cyKySUTqRaRaRP4oIsMDjt8rIu0BaR8Ukd+LyNiQdL4uIntEpE5ETorIchHpH0f3uSKyRkTOiUhFAmUu8so1ePO8MeT4d0TkhIjUishiETkv4NhPRWSHiLSJyI8TyPNiEXlWRI57y7hHRH4iIv0C4oiIHBCRXQmk+2URWectS7FVOcU5qAFX4vF5Y0xBwO8Y8ApwA3AL0B/4KrAA+LVPSES+CLwI/Ao4H5gANAMfisjggPTXG2MKgIHAjUAjUCIiE73pXA88AtxpjOkPjAdetqB3PbAYWJhgeV8CtgJDgR8Ar4pIoVeXecCD3rKPAEYBPwmQLQceAJZZzUxEhgDrgT7Atd4y3gQMAkYHRL0OuAAYJSLTLSZfg6f+H7Wqj+IwjDH601/EH1AB3BgSdgPQBFwaEj4TaAfGAAIcAh4IiZMHlAIPe/fvBT6MkO9S4FXv9v3AGymU4UagwmLcsXhuMv0Dwj4A/t67/SLwSEhdnIiQzh+AH1vM89+BHUBenHiLgT8CrwO/TbAOvgEUZ7s96c/+n/bAlUS5CdhojDkSGGiM2QhU4jFq44DL8PTUA+N0AK9504jF68Ac7/ZGYJ7XpTA70GWRBiYAB4wxdQFh273hvuPbQ45dKCJDU8jzRuB1b91ERET6Al/EY8D/CHxFRHqlkKfSRVADrsTjDRE56/29gccdcjxK3OPe4+cH7EeLE4tjwBAAY8wHwF8D1+BxTVSLyGMikp9QKaxRAJwLCTuHx00U6bhvO6Y/Pg5DiV6fPv4az5PBSjx10BO4NYU8lS6CGnAlHl8wxgzy/r4AnAYujhL3Yu/x0wH70eLE4hI8/lsAjDFvG2M+j8eo347H9fINqwVIADcwICRsAFAX5bhvu47kqSZ6ffq4B1hijGkzxjTheYq5J4U8lS6CGnAlUVYDM0Xk0sBAEZkJXAq8B+zF4075UkicPOAO4N04efwVHt9zEMaYDmPMu948JiZbgBjsxPOSMLBHPdkb7js+OeTYSWNMdQp5rgb+yls3YXhH7XwGuNs7+uUEHnfKLSIS70lG6eKoAVcSwhizGo8Bfk1EJohIvojMwvPi7gljTJkxxuB5+fhDEblLRHqLyEXAM3h6rb8MTdebzkgReRxw4R3dISK3i8hXRGSwdyjdDOB6YEMsPUUkT0R643E3iFeHmH5jY8w+YBvwkDf+XwGT8PR4AV4Avi4iV4rIIOCHwHMBefb05pkH9PCmEc/V8xieOnleREZ407nE6yaahGeEzz487xWmeH9j8dwg74xTB/lefXoAeV59esbRR3ES2X6Lqr/c/RFhFIo3vDfwn8ARPMP+yvEMr8sLiXc78DGeIX01eIboXRpw/F48I1fc3jiHgOeB8QFxrsNzwziNx1Wxj5DRLVF0dwEm5FdsQa4IKPaWa29o+YHvAieBWuD3wHkBx56LkOe9FvIchmeUyQlvGfcADwF9vdvfjiDzALA5Trr3RtDnuWy3K/3Z9xPviVYURVEchrpQFEVRHIoacMWxiMhOCZ7m7/v9bQyZOVFk3GnU88koeT5pQ9oRyyIic+JLK05HXSiKoigOpUcmMxs0aJAZM2aMpbj19fX069cvfkSVV3mVV/kuLl9SUnLaGFMYFjGTb0zHjh1rrLJmzRrLcVVe5VVe5buyPFFGHKkPXFEUxaGoAVcURXEoasAVRVEcSkZfYkaitbWVyspKmpqagsIHDhzI7t27k05X5cPle/fuzfDhw+nZU2dTK0pXIOsGvLKykv79+1NUVIQEfJGrrq6O/v2TX6VT5YPljTFUV1dTWVnJyJEjk05XUZTcIesulKamJoYOHRpkvBX7ERGGDh0a9qSjKIpzyboBB9R4ZwitZ0XpWuSEAVcyT0tbB0s2H6GjQ2fiKopT6fYG/OzZs/zv//5vUrK33HILZ8+etVehGHzqU5+yLa0nivfzwKuf8NYnx2xLU1GUzKIGPIYBb2triym7fPlyBg0alAatIuuxbt0629I87W4G4Fxjq21pKoqSWbq9AX/wwQfZv38/U6ZMYeHChRQXFzNnzhz+5m/+hiuvvBKAL3zhC0ydOpUJEybw1FNP+WWLioo4ffo0FRUVjB8/nm9+85tMmDCBm2++mcbGxrC8XnnlFSZOnMjkyZO57rrrAGhvb2fhwoVMnz6dSZMm8bvf/Q6ADz74gDlz5nDbbbf59SgoKPCn9fOf/9wv89BDDwGe9RNuvfVWJk+ezMyZM3n55ZfTU2mKouQEWR9GGMhP3trJrmO1gMew5ecn/+Fxn/yVwwbw0OcnRI336KOPUlpayrZt2wAoLi5my5YtbNiwgauuugqAxYsXM2TIEBobG5k+fTp33HEHQ4cODUqnrKyMl156iaeffpovf/nLvPnmm3zzm98MivPwww/zzjvvcMkll/hdL88++ywDBw7k448/prm5mdmzZ3PzzTcDsGXLFkpLS8OG/a1cuZKysjI2bdqEMYbbbruNtWvXcurUKYYNG8ayZcuoq6ujo6Mjbj3pYpSK4ly6fQ88EjNmzKCoqMi//5vf/IbJkycza9Ysjhw5QllZWZjMyJEjmTJlCgBTp07l8OHDYXFmz57Nvffey9NPP017ezvgMcYvvPACU6ZMYebMmVRXV/vTnzFjRsQx2ytXrmTlypVcffXVXHPNNezZs4eysjKuuuoqVq1axaJFi1i3bh0DBw60oTYURclVcqoHHthTzuZEmMBlHIuLi1m9ejXr16+nb9++uFyuiGOpzzvvPP92fn5+RP/5k08+ycaNG1m2bBlTp06lpKQEYwyPP/448+bNC4q7fPnyqMtRGmP4/ve/z7e+9a2wY1u2bGH58uX89Kc/ZePGjfzoRz+KWVYdWagozqXb98D79+9PXV1d1OPnzp1j8ODB9O3blz179rBhQ8yPocdk//79zJw5k4cffpjCwkKOHDnCvHnzeOKJJ2ht9bxM3LdvH/X19THTmTdvHosXL8bt9nxE5ujRo1RVVXHs2DH69u3L3XffzT//8z+zZcuWpHVVFCX3yakeeDYYOnQos2fPZuLEiXz2s5/l1ltvDTo+f/58nnzyScaPH8+4ceOYNWtW0nktXLiQsrIyjDHccMMNTJ48mUmTJlFRUcE111yDMYbCwkLeeOONmOncfPPN7N69m2uvvRbwvNz8wx/+QHl5OQsXLiQvL4+8vLygF67RUB+4ojiXbm/AAV588cWgfZfL5e+Vn3feebz99tsR5SoqKgA4//zzKS0t9Yfff//9EXv1r7/+eliYiPDII4/wyCOPBIXPmTOHW265JSjM1+MGuO+++7jvvvuCjo8ePdrvionnQlLXiaI4n27vQumuaM9bUZxPXAMuIotFpEpESiMc+56IGBE5Pz3qKYqiKNGw0gN/DpgfGigilwI3A+Hj5RLEaHcwIwTWs7pQFMX5xDXgxpi1QE2EQ78EHgBSsr69e/emurpajXia8a0H3rt372yroiiKTYgVwykiRcBSY8xE7/7twGeMMfeJSAUwzRhzOorsAmABQGFh4dQlS5aEHqdfv35hsy6NMSktf6ry4fLt7e3U19djjOGFXc28d7iNu8f34sYR4V/ocbvdQVP3E0XlVV7l7ZOfO3duiTFmWljESJ+qD/0BRUCpd7svsBEY6N2vAM63ks7YsWONVdasWWM5rsonLv/DP+8wIxYtNc99dDAr+au8yqu8dXlgs4lgU5MZhTIaGAls9/a+hwNbROSiJNJSsoT6wBXF+SQ8DtwYswO4wLcfz4WiKIqipAcrwwhfAtYD40SkUkS+nn61FEVRlHjE7YEbY+6Mc7zINm0URVEUy+hMTEVRFIeiBlxRFMWhqAHv5hidQKUojkUNuKIoikNRA97NSWW2p6Io2UUNeDdHXSiK4lzUgHczmlrbae8waL9bUZyPfpGnm3HFv63ANa6Qy4b0zbYqiqKkiPbAuyHFe0/5t9UHrijORQ14N0d94IriXNSAd1O0360ozkcNeDdF+92K4nzUgCuKojgUNeDdFHWhKIrzUQOuKIriUNSAK4qiOBQ14IqiKA5FDbiiKIpDsfJNzMUiUiUipQFhPxeRPSLyiYj8WUQGpVVLRVEUJQwrPfDngPkhYauAicaYScA+4Ps266VkCB0PrijOJa4BN8asBWpCwlYaY9q8uxuA4WnQTVEURYmBWFkLQ0SKgKXGmIkRjr0FvGyM+UMU2QXAAoDCwsKpS5YssaSY2+2moKDAUlyVty5/74p6AG64rAfvHm7jb8f34qYRPTOWv8qrvMonLj937twSY8y0sIjGmLg/oAgojRD+A+DPeG8E8X5jx441VlmzZo3luCpvXX7EoqVmxKKl5kdv7DAjFi01v//wQEbzV3mVV/nE5YHNJoJNTXo9cBG5F/gccIM3A8WB6IlTFOeSlAEXkfnAA8D1xpgGe1VSMoGuA64ozsfKMMKXgPXAOBGpFJGvA78F+gOrRGSbiDyZZj0Vm9GHJkVxPnF74MaYOyMEP5sGXRRFUZQE0JmY3RR1oSiK81EDriiK4lDUgHdT1AeuKM5HDbiiKIpDUQPeTVEfuKI4HzXgiqIoDkUNuKIoikNRA64oiuJQ1IAriqI4FDXgiqIoDkUNeDdHh4MrinNRA64oiuJQ1IB3c3Q4uKI4FzXg3Rx1oSiKc1EDriiK4lDUgCuKojgUNeDdHPWBK4pzsfJJtcUiUiUipQFhQ0RklYiUef8Hp1dNJV2oD1xRnIuVHvhzwPyQsAeBd40xlwPvevcVRVGUDBLXgBtj1gI1IcG3A897t58HvmCvWoqSHOVVdSz5+Ei21VCUjCBWvswiIkXAUmPMRO/+WWPMIO+2AGd8+xFkFwALAAoLC6cuWbLEkmJut5uCggJLcVXeuvy9K+oBuPGyHqw+3MZdV/Ti5qKeGcs/3fJ/t6IeA/z208aR+qu8ykeSnzt3bokxZlpYRGNM3B9QBJQG7J8NOX7GSjpjx441VlmzZo3luCpvXX7EoqVmxKKl5qE3S82IRUvNsx8cyGj+6Zb3lc+p+qu8ykeSBzabCDY12VEoJ0XkYgDvf1WS6SiKoihJkqwB/wtwj3f7HuBNe9RRFEVRrGJlGOFLwHpgnIhUisjXgUeBm0SkDLjRu68oiqJkkB7xIhhj7oxy6AabdVEURVESQGdiKoqiOBQ14IqiKA5FDbiiKIpDUQOuKIriUNSAK4qiOBQ14N0cXYxQUZyLowz4rmO1HKquz7YaXYKuvg54ZV0HB065s62GoqQVRxnwW37zAdf/vDjbanQJuvo64D/8qJHP/OL9bKuhKGnFUQZcsZ8u3hFXlC6NGvBuThfviCtKl0YNeDelq/vAFaU7oAa8m9LVfeCK0h1QA64oiuJQ1IB3U9SFoijORw24oiiKQ1EDriiK4lDUgCuKojiUlAy4iHxHRHaKSKmIvCQive1STFEURYlN0gZcRC4B/hmYZoyZCOQDX7FLMUVRFCU2qbpQegB9RKQH0Bc4lrpKzqG9w3CkpiHbaqSE0QHhiuJYJJULWETuA34GNAIrjTF/GyHOAmABQGFh4dQlS5ZYStvtdlNQUBAUdu8Kz0qEz83vl5R8IliRf2VvC8sOtvKL6/swtE/wvTAT+Scj76vDm0b0YNWhNu68ohfzinpmLP90y/vK58NKW7Ezf5VX+XTIz507t8QYMy0sojEmqR8wGHgPKAR6Am8Ad8eSGTt2rLHKmjVrwsJGLFpqRixamrR8IliR//zjH5gRi5aarYfPZCX/ZOR9dfjjv5SaEYuWmmc+OJDR/NMt7ytfIm3FzvxVXuXTIQ9sNhFsaioulBuBg8aYU8aYVuB14FMppOc4dC6MoijZJBUDfhiYJSJ9RUSAG4Dd9qjlLIyD/chO1l1RujtJG3BjzEbgVWALsMOb1lM26eUMvPPR1QQqipINeqQibIx5CHjIJl0cR1dwoYguiqIojkVnYtqAk70Q6kJRFOeiBjwFnNx5lS7x/KAo3Rs14LagvVhFUTKPGvAU8PVhneiFMHrTURTHowY8BZz2AlD93YrStVADbgNONIvqA1cU56MGPAXUBCqKkk2yasBb2zsoenAZj63aFzfuT5fuyoBGyWGnZ6LowWX804tb7EswAPWgKLnG6H9dzl1Pb8i2Go4lqwa8ua0DgGc/OBA37rMfHky3OgmTLhf40k+OpydhRckx2jsM6/ZXZ1sNx6IuFBvQl4OKomQDNeAp4HsRqOZbUZRsoAY8FRz2FlNvNIrStcgJA+50w6IeFEVRskFOGHCn4rAOuKIoXYycMOBON4ROmZauL1sVpWuREwbcqThsJn0QTtZdURQPasC7KdoZVxTnowbcDtQYKoqSBVIy4CIySEReFZE9IrJbRK61SzEn4LQFofQ+oyhdi5S+iQn8GlhhjPmiiPQC+iaTiNMNixP1Vx+4ojifpHvgIjIQuA54FsAY02KMOZtIGqmMiqhtamXav6+m5FBN0mkkw8cVNUz/2WrqmlqDjOCRmgamPLySQ9X1GdUnWWKtLTP/V2v58GhrBrXpnjS0tDHzkdWsKz8d8fiHZaeZ+chqGlvaM6xZ8hw928iUh1dy3N2RbVXSxn+/s5e//7+SbKsBgCRrREVkCvAUsAuYDJQA9xlj6kPiLQAWABQWFk5dsmSJ/1hjm+EfVjdwXj787qZ+Qem73W4KCgr8+/eu6Ez2ufn92HGqjV+UNDNhaB4Lp/cJ0y9UPlGiyT+6qZE9NR0smt6bv+xvYXdNBwun9ab8bDt/Lm/l86N7csflvZLO31fO337a2K5/W4fhGysbgsK+Mq4X80f2jKjDc/ODz0mq+WdCPrCdQPJlyIT++8+289MNTYwamMePrg1uw263m//ans/hug5+fG1vigbm255/OuSXH2xhyd5WbrjE8NWr4stHa2vZ0t+KvJXrw+78586dW2KMmRYaLxUXSg/gGuDbxpiNIvJr4EHg3wIjGWOewmPoGTdunHG5XP5jtU2tsHol+fn5BIYDFBcXB4etWObfdLlc5O07BSWbGDJkCC7XzDDlwuQTJJr8k/vWQ00Nk6dM5sMz5VBTzaTJk2g/fBbK91E0YgQu17jk8/eWs6CgwHb9W9o6YOXbQWFjxozGNWdURB3SUX9plw9oJ5B8GTKh/8DDZ2DDOvoPGIDLNTtMvn//fKirZdq0aUy8ZKDt+adDfq/sh7176NmzlzX5KG0ta+3HiryF6yNT+qfyErMSqDTGbPTuv4rHoFvG1/lPxh3rc19kbTiccd5LTEVRuhZJG3BjzAngiIiM8wbdgMedkhE6VwLM/itEHVOtpBNtX0o0Uh2F8m3gj94RKAeAv0tI2oaGmc3G7bSRHLlws1Os47T2pWSelAy4MWYbEOZYTzidJGSy5UKJ5DZRs6ikE73xKtHI6kzMVBpmtjonkXTuSotEdaWy5DrxatrvJtRTokTBuVPpfT3wLPZOpAs846pxyF26QPNS0kx2e+ApGI9s9U6c7EKxUldq0DOH2mclVZzbA/eSTXvTFS5A7eXlPnpPVaKRZR948vgNTy607lzQwSa6UFEcj95blXhk2YXiMRdJTeTxpZElk2PoGr1XdZkoinPJCRdKfUs73399Bw0tbZZlcukF4ssfH/FvP/5eOW3tzlvIp7zKzSPLd0cdhdLU6jlHZxta/GGPrdzL0k+O8bNlu3T0ShqJVrfPfXSQtftOpTXvP248xLu7TyYsZ4zhoTdLOXa2MQ1aKT5SnciTEoHN8qVNhxl5fl8WXDc6sTSyZDeEzqeAFTtPcOWwAf5jmw5mdoVEO/i75zZxpKaRu2ZcFvH4KyWVvLTpMD3zhYdvn0hHh+E375X7j989awQjhia/+FV3JG7TFd9s48j8+C3PxOeKR2+1TadQfvDn0qTy2Humg3cOHaKsys2L35yVDtUUcqQH7iMRY+yfyJMeVeLicaHkzlNAqnTEeWjw9QJ950j72+nHya3L1z70wSy9OHgYYXawZLNz9MqzNIww7nGfIdcrU1GyTU71wBOhcyp9FifyZC3nzNOdypprOPle2YUeUnOSnJpKn9jJju0fzCZOXmbW6g0xNJaTy5wt4tWYGj8lHo7tgfvIVu/EmOgXWFe+8Pw+8Fy8cyo5g7aPzJBdA56KDzzLLzG9WiQQmn2sjJmPGqMr35VyHudZQ5/G2mzSi3NnYtqmRZL5x1DAyaNTovacQg7oEqepE381Qm88B1e1utbSi+NdKNlq3elwoThpZIeDVHUsTu4IKJnBucMI40xyUMKxVt9RIqkxyRpObuPabNJLygZcRPJFZKuILE05rQQet3Lh8TKatsm2WSf3avVCtR+tUiUedvTA7wN2JyOY0hd5stS6reSbtAslOTFbiXcT0Rl2ihWc5A50MikZcBEZDtwKPGMlvrvVBC2G9FpJZcR4NfUtfFDZGjvvgK/Sv7/vFHtO1IbFeWXzEWrqW8LCk2VF6QkqTjcA8OKmQzS0tMeVqapt4o2tR1mzp4qyk3X+8IaWNv6w4VDUhv7xiTaO1DTgbm7jjxsjxws8VtvUykubDofFe2fnCSpO1wPwdumJsDSs3kSt3JPW7K3i7R3HLaVnF+0dhhfWV9DcFv9cJMryHcc5UtNga5plJ+tYs6cKgFN1zZZkrNjC9/acpLyqLn7EAMqr3JYXqop2rQbS0tbBC+sPxYxT3xy73Udi9a6T7D/lDgs/7W7mzqc2JHyNbzpYw9bDZ/z7B065WbWrsx4OVdez7lgb/2dBT2MMiz88yJPv76ejw56b1hPF+3mnwmP//ry1kqq6pqhxU13M6lfAA0D/aBFEZAGwAKDXRWP4f//7Ht+d1pvTjR389/vBK5WV799Pccdh/nNTI7trOhi3/D0u6Bt+jykuLqbinOeCratzc8/iTQA8N79zMaWDp9z8ZMUnjB+Sx6IZfRIumNvtpri4OCjs71fU+7eX7wg2hgcPHvRvb926lYt6NFJcXMwPP2yg0t15Yn06PrezmeIjbdQcKWNSoec0tAc0gP/Z1szzO9cw5YIefHi0jdrKcsYPzQ/K89kdzXxwtI1zleUUH2ll04l26o+WMWZwvl//b62oJ1/g2Xn9uD9Afx/79x+guOMITU2eRrJp08f+Y4Hl33fY06COHTtGcXE1zW3BjXXDhg0sXNvoL2Ok+ksEq/IfHm3lmR0tbC7dx19f3ivseLI6uN1u/mnFFvr0gCduTHyRrmj63+s9B8/N78e3vNsnqs+FxXW73dTWes731q1baTgUfO4DKS4u5msB6cbKP5ou8fT/3ivboWofQ/tE7/O9Wd7C0bOedtLe0QEIZ2rOBKWzuLSZtZVtnK0sZ+L5nWWKVH5f2Dei6Pntd+upa4XPPbaaR+b0jal/IKHlDt3/xjv1tBngk1KqDpUx9cLIZrK4uJjtp9r4ZYnnRlxdeYDZl/SMm38smtoM/7na02m49p01fGdNAyMHRK/zpA24iHwOqDLGlIiIK1o8Y8xTwFMA5118uWnv1Q+Xaw4HTrnh/feD4o4ZPRrXdaP4aUkxUM8106Yz5gLvvWHFMn88l8vFJ5VnYf1H9OtXALW1/nAfR996D2ikrUdfXK7rEy5fcXFxUHqhOoQycuRIKN8HwNRrruHcge24XC7ca1cCnU8TvjT/dKQEOMHlV0zAddXFALS2d8DKt/1x3a3Qs2AwcIpxEybiuuLCoDxfqPgYqGLs+Il8UH0QqObKqybzqTHnd+q/YhntBv92KL46773hPWhqZNr06fDR2iBdASo3HIJdpQwbNgyX6yrqm9tg9Tv+47NmzYK1a/xyEesvAazKV3x0EHbsYtAFw3C5JoaVMVkdPBdfPY1tyaURVX+vfoHno1fv3mFxi4uLGTiwF5w5w5QpU5g5aqiltHzpWKq/EJmI+gfU57QZM2OuOPl+3U4orwAgLy8PMAwZOgSXa4Y/zouHNwMnGXPFBFwTL4qqQ5D+UeLUecPPtebFlg8lNL2Q/baAMo8eOx7X1ZdElXd/cgxKtgJw6ajLcV1bFD//GNQ2tcLqlQDMmHUtrHmXetMzavxUXCizgdtEpAL4E/AZEflDCuklhXraUnsf4PTx3F15qF2nm9C5hJ6dXFjDyClYuTaTNuDGmO8bY4YbY4qArwDvGWPuji/n+Y904SVyLeby+Q8sWyLmxY4ypZqEVYOew9Xfdcixe5Md7bMr3JQCSacdspJ2xseB213eXLyTJz2M0IZROemujs61UHKv3pX0ksgZjxY3He00m09h6bwKrKRtyxd5jDHFQLEdaVnOM5OZ5SiBRjTZNhw69j7ahZXrnoqufD/JlbLFH5ERHhbabvK8AR02FirHm2bKxKqpzPfAbW6NudK4AwlstIn0DpItS2AWifbiQ+NbvbDClpPN4XH5TiXXimbHpeY7X3Ya8GySzidRK2k7di0U/ye+crAvno0FfPy+xRSrI7588KfVrMspTiehc+x71xUSnBZ3R67d6WwiJ33gPlK9c+WyvUj2ppJolcT9/Fla37CkL+lksPtGnks+/tzppFjXo3M52WDrmo4lMLqo/fYTq64c2wP3kUPXmZ9M6xStxx+oh1WD5LRH23RdvLlQC37blwvKJEg0lfP86/g7sFAZIPiajR8/Cz5wz3+qj1K5/HX0ZHWyZRRKQFigMbZql6O+xAx92Rmiq8PsviPItSF3yZzjaC6Ujo7U9fGRzfqxvd0HGvB0jgNPFbseUXPlUTdabzfebSpQ+0hFiVW6eEVPZmkGyy8xQ33gOWNm7CFHmhWQO7rY8hLTxrT8ZLF+bHfdkVinK+MG/MiZBl4rqUzKuPh4fl0FmytqwsL/b30FZ+pbOHi6njPN9lZsvIVqgio+RrzGlna2Hznr399ccYZD1fXsOha+GBfAtoC44JlqW3r0XFBY5ZkGjp/zrGUSePOwqlMggfGOnW3kcHUDh6sbOH6u0Zu+51hrSBdqS8DiQD52H68NWrwMYP3+ak7WNnGkpoGjZxvDZOLqZwwbD1SH3bijNfaSQ8F6dXQYNh0Mbzud8WtoabOxe5gE7R2GfWfaKfMuTnXa3Uy1u9m/GNqpumbKq8IXd4pEyaEz/vIcrm7gWIQ633uijpJDNZ6lHLyUn2kPWyCstrGVnceC215jS7u/jQadk4DN/afc7DpWS3lVXec6/jbelSKl5GsnOyrPeZZ9ANraOyLaDR8fV9QErUdkhf1V4esLAZxu7AhbCK306DnqmiIv0rfpYHjebf5rLLpOtowDT4SGlna+98p2fvGlyWHHrLpVHvrLTv92YNH+7c2d/NubO8MFbGDxRwdjHg+s+8C2GVqk+1/ZzrIdx5leNNifri/t0p/MC0v3bEPwCf/a7z9m86EzHPyPW/xhgWWO1qOPdsGEjybpDPjUo+9FlAH473f2Bu1/5+XtYXE+++sPGHV+P9673wVAU2s7dz69gasvG8TWw2cBqHj01qh5ROIv249x35+28V9fnMSXp10adxzhHU+sY/V3r2fMBQUAPPPhAR5ZvofnvzaD68cWBsXde6KOO55Yz72fKuLTBQmplTCRbng+fvteOb/c2LkC3b+8vI0BvXtQ29RGxaO3MvvR92hpj3+TKa+q444n1nHPtSP4ye0Tue7nawBPnQeu7jfvV561bxZcN4p/vWU8B065+feNTRxkV1B69yzeRH1Le9A5W/jqdpZ+cpyPf3BjRB1E4IZfdK559KWpwwF7nyoite2PjrXxzDsbALhubCEvfG0Gv1i1jyeK90dN50tPrud7N41NKO/frimPGH7/+43w/hp/XbV3GD73+IfMGDmEJd+6Nijuuv2nuevpjSycN467ZlzmD39s1b64+WfNhVIVYSnNpO7KGXp8itfjsaq7r7fS2Bq+/KmVNDZ7e5RWegpBPnBL2lm/sHYft7Z06YHTnT0UXw/PZ7yT4XB1Q9C/Fc41dj4F+HpMkXqivmVJdx+P/DRkJ1W1ne0/1B+8L8KysLVNbf5tK8YboKbec/PfFaE8ZyIsweor95mGyHL1EZZP9rfnkGPRmlE6xoFHSqmqoTN0m/dmufdE/DYbadlaO/Bd26FPhADHz3pu1vur3EFl2WNB3+z5wG2yvDniHgxpkOnTyncBtEe7AKI8CViIHnE/LH4KRbOjVlJNw8pUbmNDPt2FzkEJ0WKEDiO0/8VsxBmggdsJDJjIS9PMMJ+KkTppwU/NOe4D9xF52m3ilZepl5iJvDBMViUrYnkBb/HjxQ/ugVt1oVhQIkZ6MWVsPFWhTSV20gGLi8UYxhY0ozWDFjzlOREZfsuZSH6h5ykda6HEa4u+PK1Yl3Stq2KpvBJ5FFlOjgPPldEjVon3yBf4kjPZkhkLT8a+cbRtHR1R7uadYVbexyQ6lT6VCzAd5zzxy82eGau5hE0fgkkqP985tWr3Oj9Gbp/SkcoftJxFAmnlpcd+JzW6y4pM1gy4XY0uV65Dq2OuYxmxWCfM9+iZyDhaK49joeHxGk1KLhQbTlaqaUQaLx+eSWbbVap5ZXryVfBIJw+hPdf4PvD06OPPJyjP7LtQfEQbMdN5PKADZqVDZ4NOtpFM1eVKTypSr8RD5IYdSe+ofm06T6wvtbYoZzfRmVwRMrIWLUvvm0PrwR8eI/HAa9Lfw4px0Wd6THuqbTjjBjxw2+cDJ/L5DT1Pseo/XfiytGKb89LUBfdPPIxQbP9NMNqM6hjp5pQPPDl7kyEfeJzj0UZ8hPlqY5xIKx9FjfcSM9ojWPQeuAn6t9oziv+yM4J7x4aL1p+ESOBfTIJ6Y/iWM40Qzz9Gmdx5tLOA/bYwtu81eLi3ZydPxFLnIVb9J0vk92mB234THjetdLlQYtop300w2l0wBll0odhzBnOmB25Di4zVA/fhe8SzNoywc9vyS8w4LSiVL/bkwqmy+kmvTOqa6rWQ6Wsgkfcs4euBe9NI8zDCYBeK9bTSNgoliY5RTvvAI+FkF0pr4EvMmDfb6AetGOV4Bjzo8TaBablBvU8LJHMB2uID9/4n0lYifeIu4kUf4B/v3j7w2E83kXra0dp1qFvA/w4nkz5wf97x08pPlwsl5rFOt2CiLtCkDbiIXCoia0Rkl4jsFJH7EpHPEbtrmXiV2RYwuSKWke5s8OFYeWnhfwlk6SWmhThx9pMl0gVqp7sr/GK0lnasG1Wne9ZZPvBcuJYSLYOdOke8GQS5UMKCopKud5hW2pRI6NNNsHszEqlMpW8DvmeM2SIi/YESEVlljNkVTzCeUp1xUtDOZuLp29oe5K9IKr1YLhRfT8bXA/cMI4ydh5WZmImOQrFKRBdKGs5noh/PiDUTMFvjwFMl0y8xI01aC9UhmkaZ+ip9YKtIxC2SLheK5XdLQe+w4sdP5av0x40xW7zbdcBu4BKr8pGmU4tAVV0TTa2e7mVFdQN7TtTSFGHauY/QxZJCae8wHK5u4GxDS1obzcnazrUrTrmbaW43nGtsDfON+5YQqG9pI5T2GN3qmvoWyqvcuL0L87ib2zhUE76QTuBLyZqA6dJ7T0SeHt7Q2sbRs43+haUqz8ReYOpMQytHahpiTueudjfjbuks9+HqBto7jH/BrUAqTtfjbm7jtLuZU3XN1HoX+2lpN0HTs5ta23E3t3HUq19jazun3c2cdndOSY+2CNXxs43+J6RIBr+lrYP9p9xB09tNyHE7CGx/gdP7wdNW2to7aGptD5uWHsjB0+HnvLKm85ydrG0Ku17ONrQGleFkbRMNUfJoam336xZNjxPnmqhraqWhpc1vZHZUngvK13sJh/VozzVGXszp6NlGv44tbR2caergtLs5KP6RmgbONbZyrqGVandzmHy0VUCjmeRzja1hrshQ/VraO4IWoDoXsDZR6HIEvvYbGO5bEOxEQNs/fq7RH6expfN8bz181r9oHBDUtqMhdhg1ESkC1gITjTFRF5I47+LLzcX3/CpqOg99/kp+8palDnxSLJw3jn+cO8ZS3OLiYlwul3//uy9v4/WtRy3nNXpgHvvPJXbhf+fGsfxydfwFbGLxu69OZd6Ei/jRC6t4YVfsm1smGX/xAEtrjIy5oIDV372e8T9cRmNb52JX03+2mlMh6+eIdPZYvjL9Uiqq69lwIPJqc5+fPIzH77yah9/axeKPDvLDW8fzjTmjALj9fz4KWiHy6ssGcUXfBl7a46m/T40eyovfnJVQeUPbD8C7u0/y9ec3h8Ud0q8XNfUtfHHqcJZ9cjziOjmJMLhvT355XS/6jpjEl3+33rLcnMvPp+ykmxO14TfaWHmdaYhslAE+O/Ei3i49ERb+r7dcwYLrRlP04DJ/2FWXDOStb3+a+1/ZzqsllZZ18PHvX5jI3bNGAPDA71eyZK9Hr2EDe7Pu+zfwrf/bzDs7TwbJ3DXzMl7ceDhu2hWP3sq5hlYmP7wyIZ3GXljAj2+bwF1Pbww79j93XcM/vrjFUjqH/vNzJcaYaaHhKa9GKCIFwGvAv0Qy3iKyAFgA0Oui2MZzX1nklb3s4rUNZUwQaw3D7XZTXFzs3z9+0nqjBhI23gB79x9MWCaU0tJSzju1h60nmsmlj01ZXSCqvMpT743eBxTfOQg13hD8uHns+HE2VIY/1fh4a/sx7rj4HEePetIpK99Pcbvnwt1+JLhXW3uulu117fjqb93+6qC2YIXQ9gOw6mBkQ9fc4rlRJGO0InGmoRW3u4W9W7cmJldzhhO1id08WlqjG2+AU6dORQwvL99PcceRoLAdR89RXFzMqyWRl2iNx2vrdjO8yXMNtTS34Dt/zc3NFBcXU3Uq/Bp+fXN84w2edljVkPg1ve+km9eLIxvp1z/8JOH0QknJgItITzzG+4/GmNcjxTHGPAU8BZ4eeKz0Ro0aDXt2p6JSTPoPGIDLNdtS3NAe1Jsnt8Ex6z3wZLho2HA4mJoRnzBhIq6JF/HrLSuA1Hpy2cLlcsGKZZ3b4N+PxrCLL4bKIzHjuFwuPqrfBRUHGTVqFK7rR0dMu/+AAbQ31hFYf6G96XhE6oGX5x+AveHtOy+/B7RGv/kkQ0FBAVePmASbrPfABw8ZDNWnE8qnR4+eEMOIX3jBBXDyeFj4yFGjcblGh9V94LlPlKFDh+JyTQdgxcFVgOfG2KdPb1wuFy9UfAxVVUEy+fn50B7/OnG5XByqroe1xQnrNXLUKCjbGxZ+6fDhcLgi4fQCSWUUigDPAruNMY+lpIWXtkwv6pBjtFpcJjQ23bsO49G5Fkd0Mj2M0I45BNki2Reo6ZiAF1iNwRN5fMdzq57teF+ayjjw2cBXgc+IyDbv75Z4QrHItQoOJBNDy6JNj08EB9uClLB6eiwtxmVMRi24lQlcjiXGWHK7r6lo9sP34jrRr+2kGztGvCTtQjHGfIjNTtZcq+BAMqFZS1vqueTyTTAX6JzKHbueMrkeSg43+/gkqXs6OkTR6tG//ESOVbQdxjOnZmKmvYJTaDSZsIt2uFBirbXSlbFqcK10etJVddHOiZNdKMlq7umB26pK0E0h0LAlsvxE7PRTEg8j2y4U28m1O2SmscOAaw88NlZmW2bYg+LocxZ3/fiocvbrEm0R0CwsgGgJO1wouWXA013DKVRYJs590GzOJPEv75k7IwhzinR8ESbRvENxcr8l2XrsMPY7qQJvJkFVHWcFT6vYfU3Z8fWfnDLgTn6UtAM7XmJmei1rp2H1m4zpMPC51gO0g/ifM0t8jeukdYmTaK494duxblZOGXAdRmiDC8WeWd9dFmsfNe7e7TARkr4pGZPWUSiBxtHnqsi1zzh2PRdKDhvwTJz8Vh2FkjTWhxH6euCZ94F3RbdWvHqK1h7TMdY++kckPKTiQjHG2P4E1eV64Dk9CsVGNaIRa4EoqxjjcUXl8L0wLkEfiLZ4zix9wNkY/8Ucy12XjhESvnS7HHF9UZGD09HR8N2UQ9uM78bZlsI7pg6TBg+BDXd0Wxazskq8xawyweN3Xs3nJw+LGy90KvQDr25nyWZ71qpQrHN+wXmWVmXLBJcM6sNHD37GUtxIU+mfXnuAny1P31IRXYEvTR3OKzatCdOViLaYVU71wDPBa1uSaxwThg20WRPFCrlivAH/krtK+lDjnRjdzoAnS669ALGTEUP7ZlsFRVGSQA24Rbqu+U7fdwAVRUkvasAt0oU74OR3xeERitINUANukS5sv9P2HUBFUdKLGnCLdGUfuLpQFMWZqAG3SBe23+RpK1AUR6KXrkV0erWSKtqGFLtRA26RrtwDlxz6+HFXpiu3ISU7qAG3iF57Sqo4eXkDJTdJyYCLyHwR2Ssi5SLyoF1K5SLae1IgtZfZ3XWhMSV9pPJV+nzgf4DPAlcCd4rIlXYplmuo/1IB7UUruUXSHzUGZgDlxpgDACLyJ+B2YJcdiqWL4r2nuOmx9+PGq29ooN+Wzng19S3pVCur9OmZn20VHMO8X6219MYgtP1A125DSnZIxYVyCXAkYL/SGxaEiCwQkc0ishlj6JUHfXrAhX2Fv768J381pidjBnnUKOwjXNi38/LoHWBXJp7fuXP5oDxGDexUvad38+YR4fejf5h8XtD+1AvzGSiNcX8XntcRtD+yoJ1ZF4cbupkX5fvz/+Gs3swv6hkWZ2jv6Jf8sH7Bx1yXdpbh6gsiG9aLvDIzLvIcnzA0j9tG96RfeNZ+rhiSx4V9hcI+HtnAsnxtTBMX9Q3Wo28PT1ezX08YMSCPsYPzIpY/lHxvMlcMMky/KJ9pF3bK9MiDSwqC8zm/j9C/V+f+pf3z6OWtzwv7ir+MAMMLhAlD8yKuo3zDZT2YPayH5TWW+0Touowb7Mk4sK0F0jsfBlloO5Haj68NRWKSN7/QcwCda1lPLsxn/BCPfsO9dei7Vob2Fm64rAe98jrrPxHmF3VWxsgBeRT2Eb52hfG3s1D69PCcy/69YFKhR/e7x/fib8b1YuTAYJMyKmT/iiF5XDe8R5ieUwrz6Z0f3D562PyGroc36SFRrsehvT2v88d620FBjOtpdEC5QsscicA2HkphH087H1aQxMkz3i9jJPoDvgg8E7D/VeC3sWTGjh1rrLJmzRrLcVVe5VVe5buyPLDZRLCpqdzjjgKXBuwP94YpiqIoGSAVA/4xcLmIjBSRXsBXgL/Yo5aiKIoSj6RfYhpj2kTkn4B3gHxgsTFmp22aKYqiKDFJZRQKxpjlwHKbdFEURVESQGdiKoqiOBQ14IqiKA5FDbiiKIpDUQOuKIriUMRkcIEdEakD9lqMPhA4l0J22ZY/HzidxfyzLa/l1/Jr+e3Lf5wxpn9YrEize9L1I8psoihxn0oxr2zLWy5rjuqv5dfya/lzpPzR0stlF8pbDpdPlWzrr+XPLtnWX8ufXSzln2kXymZjzLSMZZhFulNZI6Hl1/Jr+e0rf7T0Mt0DfyrD+WWT7lTWSGj5uzda/gykl9EeuKIoimIfuewDVxRFUWKgBlxRFMWhqAG3iIhcKiJrRGSXiOwUkfu84UNEZJWIlHn/B3vDrxCR9SLSLCL3x0sn17Gx/L1FZJOIbPem85NslSkR7Cp/QHr5IrJVRJZmuizJYGf5RaRCRHaIyDYR2ZyN8iSKzeUfJCKvisgeEdktItcmrZf6wK0hIhcDFxtjtohIf6AE+AJwL1BjjHlURB4EBhtjFonIBcAIb5wzxpj/jpWOMSanvyVqY/kF6GeMcYtIT+BD4D5jzIaMFyoB7Cp/QHrfBaYBA4wxn8tcSZLDzvKLSAUwzRiTykSXjGJz+Z8HPjDGPCOebyn0NcacTUYv7YFbxBhz3BizxbtdB+zG8w3Q24HnvdGex3PCMMZUGWM+BlotppPT2Fh+Y4xxe3d7en8534uwq/wAIjIcuBV4Jv2a24Od5XcidpVfRAYC1wHPeuO1JGu8QQ14UohIEXA1sBG40Bhz3HvoBHBhkuk4hlTL73UfbAOqgFXGmG5VfuBXwANARzr0Szc2lN8AK0WkREQWpEfL9JFi+UcCp4Dfe11oz4hIv2R1UQOeICJSALwG/IsxpjbwmPH4oyz1JmOlk8vYUX5jTLsxZgqe76jOEJGJ6dA1HaRafhH5HFBljClJn5bpw6b2/2ljzDXAZ4F/FJHr7Nc0PdhQ/h7ANcATxpirgXrgwWT1UQOeAF6f7WvAH40xr3uDT3r9Yz4/WVWS6eQ8dpXfh/fRcQ0w32ZV04JN5Z8N3Ob1A/8J+IyI/CFNKtuKXeffGHPU+18F/BmYkR6N7cWm8lcClQFPna/iMehJoQbcIt6Xb88Cu40xjwUc+gtwj3f7HuDNJNPJaWwsf6GIDPJu9wFuAvbYrrDN2FV+Y8z3jTHDjTFFeD4E/p4x5u40qGwrNp7/ft6XgHhdBzcDpfZrbC82nv8TwBERGecNugFIfgCDSWHFrO70Az6N5/HoE2Cb93cLMBR4FygDVgNDvPEvwnO3rQXOercHREsn2+XLYPknAVu96ZQCP8p22TJZ/pA0XcDSbJctw+d/FLDd+9sJ/CDbZcv0+QemAJu9ab2BZ+RKUnrpMEJFURSHoi4URVEUh6IGXFEUxaGoAVcURXEoasAVRVEcihpwRVEUh6IGXFEUxaGoAVcURXEo/x+kFXPs/AlF6gAAAABJRU5ErkJggg==",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"entry = next(iter(dataset.train))\n",
"train_series = to_pandas(entry)\n",
"train_series.plot()\n",
"plt.grid(which=\"both\")\n",
"plt.legend([\"train series\"], loc=\"upper left\")\n",
"plt.title(entry['item_id'])\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"entry = next(iter(dataset.test))\n",
"test_series = to_pandas(entry)\n",
"test_series.plot()\n",
"plt.axvline(train_series.index[-1], color='r') # end of train dataset\n",
"plt.grid(which=\"both\")\n",
"plt.legend([\"test series\", \"end of train series\"], loc=\"upper left\")\n",
"plt.title(entry['item_id'])\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"MetaData(freq='D', target=None, feat_static_cat=[CategoricalFeatureInfo(name='state_id', cardinality='3'), CategoricalFeatureInfo(name='store_id', cardinality='10'), CategoricalFeatureInfo(name='cat_id', cardinality='3'), CategoricalFeatureInfo(name='dept_id', cardinality='7'), CategoricalFeatureInfo(name='item_id', cardinality='3049')], feat_static_real=[], feat_dynamic_real=[BasicFeatureInfo(name='sell_price'), BasicFeatureInfo(name='event_1'), BasicFeatureInfo(name='event_2'), BasicFeatureInfo(name='snap')], feat_dynamic_cat=[], prediction_length=28)"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"dataset.metadata"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Recommended prediction horizon: 28\n",
"Frequency of the time series: D\n"
]
}
],
"source": [
"print(f\"Recommended prediction horizon: {dataset.metadata.prediction_length}\")\n",
"print(f\"Frequency of the time series: {dataset.metadata.freq}\")"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"estimator = TemporalFusionTransformerEstimator(\n",
" freq=dataset.metadata.freq,\n",
" prediction_length=dataset.metadata.prediction_length,\n",
" context_length=dataset.metadata.prediction_length*5,\n",
" dropout_rate=0.1,\n",
" num_outputs=15,\n",
" trainer=Trainer(device=device,\n",
" epochs=20,\n",
" learning_rate=1e-3,\n",
" num_batches_per_epoch=100,\n",
" batch_size=128,\n",
" )\n",
")"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"scrolled": true
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"0it [00:00, ?it/s]/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n",
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n",
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n",
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n",
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n",
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n",
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n",
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/nn/modules/module.py:795: UserWarning: Using a non-full backward hook when the forward contains multiple autograd Nodes is deprecated and will be removed in future versions. This hook will be missing some grad_input. Please use register_full_backward_hook to get the documented behavior.\n",
" warnings.warn(\"Using a non-full backward hook when the forward contains multiple autograd Nodes \"\n",
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/nn/modules/module.py:760: UserWarning: Using non-full backward hooks on a Module that does not return a single Tensor or a tuple of Tensors is deprecated and will be removed in future versions. This hook will be missing some of the grad_output. Please use register_full_backward_hook to get the documented behavior.\n",
" warnings.warn(\"Using non-full backward hooks on a Module that does not return a \"\n",
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/nn/modules/module.py:770: UserWarning: Using non-full backward hooks on a Module that does not take as input a single Tensor or a tuple of Tensors is deprecated and will be removed in future versions. This hook will be missing some of the grad_input. Please use register_full_backward_hook to get the documented behavior.\n",
" warnings.warn(\"Using non-full backward hooks on a Module that does not take as input a \"\n",
"1it [00:02, 2.60s/it, avg_epoch_loss=0.1, epoch=0]/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n",
"99it [00:10, 9.81it/s, avg_epoch_loss=0.0694, epoch=0]\n",
"0it [00:00, ?it/s]/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n",
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n",
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n",
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n",
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n",
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n",
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n",
"99it [00:10, 9.69it/s, avg_epoch_loss=0.0665, epoch=1]\n",
"0it [00:00, ?it/s]/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n",
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n",
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n",
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n",
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n",
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n",
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n",
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n",
"99it [00:10, 9.71it/s, avg_epoch_loss=0.0633, epoch=2]\n",
"0it [00:00, ?it/s]/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n",
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n",
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n",
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n",
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n",
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n",
"1it [00:02, 2.68s/it, avg_epoch_loss=0.0571, epoch=3]/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n",
"99it [00:10, 9.77it/s, avg_epoch_loss=0.0634, epoch=3]\n",
"0it [00:00, ?it/s]/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n",
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n",
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n",
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n",
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n",
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n",
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n",
"99it [00:10, 9.85it/s, avg_epoch_loss=0.0626, epoch=4]\n",
"0it [00:00, ?it/s]/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n",
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n",
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n",
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n",
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n",
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n",
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n",
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n",
"99it [00:09, 9.92it/s, avg_epoch_loss=0.0631, epoch=5]\n",
"0it [00:00, ?it/s]/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n",
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n",
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n",
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n",
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"1it [00:02, 2.62s/it, avg_epoch_loss=0.0632, epoch=6]/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n",
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n",
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n",
"99it [00:10, 9.60it/s, avg_epoch_loss=0.0624, epoch=6]\n",
"0it [00:00, ?it/s]/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n",
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n",
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n",
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n",
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n",
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n",
"1it [00:02, 2.63s/it, avg_epoch_loss=0.0628, epoch=7]/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n",
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n",
"99it [00:09, 10.00it/s, avg_epoch_loss=0.0624, epoch=7]\n",
"0it [00:00, ?it/s]/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n",
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n",
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n",
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n",
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n",
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n",
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n",
"99it [00:10, 9.63it/s, avg_epoch_loss=0.0616, epoch=8]\n",
"0it [00:00, ?it/s]/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n",
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n",
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n",
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n",
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n",
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n",
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n",
"1it [00:02, 2.69s/it, avg_epoch_loss=0.0656, epoch=9]/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"99it [00:10, 9.64it/s, avg_epoch_loss=0.0613, epoch=9]\n",
"0it [00:00, ?it/s]/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n",
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n",
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n",
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n",
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n",
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n",
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n",
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n",
"99it [00:10, 9.56it/s, avg_epoch_loss=0.0619, epoch=10]\n",
"0it [00:00, ?it/s]/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n",
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n",
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n",
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n",
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n",
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n",
"1it [00:02, 2.67s/it, avg_epoch_loss=0.0579, epoch=11]/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n",
"99it [00:10, 9.78it/s, avg_epoch_loss=0.061, epoch=11] \n",
"0it [00:00, ?it/s]/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n",
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n",
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n",
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n",
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n",
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n",
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n",
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n",
"99it [00:10, 9.82it/s, avg_epoch_loss=0.0612, epoch=12]\n",
"0it [00:00, ?it/s]/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n",
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n",
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n",
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n",
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n",
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n",
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n",
"99it [00:10, 9.69it/s, avg_epoch_loss=0.0609, epoch=13]\n",
"0it [00:00, ?it/s]/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n",
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n",
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n",
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n",
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n",
"1it [00:02, 2.64s/it, avg_epoch_loss=0.0572, epoch=14]/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n",
"2it [00:02, 1.15s/it, avg_epoch_loss=0.0617, epoch=14]/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n",
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n",
"99it [00:10, 9.77it/s, avg_epoch_loss=0.0612, epoch=14]\n",
"0it [00:00, ?it/s]/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n",
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n",
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n",
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n",
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n",
"1it [00:02, 2.64s/it, avg_epoch_loss=0.0551, epoch=15]/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n",
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n",
"99it [00:10, 9.76it/s, avg_epoch_loss=0.0614, epoch=15]\n",
"0it [00:00, ?it/s]/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n",
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n",
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n",
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n",
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n",
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n",
"1it [00:02, 2.66s/it, avg_epoch_loss=0.0553, epoch=16]/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n",
"99it [00:10, 9.57it/s, avg_epoch_loss=0.0612, epoch=16]\n",
"0it [00:00, ?it/s]/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n",
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n",
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n",
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n",
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n",
"1it [00:02, 2.61s/it, avg_epoch_loss=0.0677, epoch=17]/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n",
"3it [00:02, 1.35it/s, avg_epoch_loss=0.0637, epoch=17]/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n",
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n",
"99it [00:10, 9.56it/s, avg_epoch_loss=0.061, epoch=17] \n",
"0it [00:00, ?it/s]/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n",
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n",
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n",
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n",
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n",
"1it [00:02, 2.63s/it, avg_epoch_loss=0.0623, epoch=18]/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n",
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n",
"99it [00:09, 9.92it/s, avg_epoch_loss=0.0607, epoch=18]\n",
"0it [00:00, ?it/s]/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n",
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n",
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n",
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n",
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n",
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n",
"/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n",
"1it [00:02, 2.66s/it, avg_epoch_loss=0.0503, epoch=19]/home/kashif/.env/pytorch/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py:63: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program. (Triggered internally at /pytorch/torch/csrc/utils/tensor_numpy.cpp:143.)\n",
" return default_collate([torch.as_tensor(b) for b in batch])\n",
"99it [00:10, 9.74it/s, avg_epoch_loss=0.0607, epoch=19]\n"
]
}
],
"source": [
"predictor = estimator.train(dataset.train, num_workers=8, shuffle_buffer_length=1024)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"forecast_it, ts_it = make_evaluation_predictions(\n",
" dataset=dataset.test, # test dataset\n",
" predictor=predictor, # predictor\n",
" num_samples=100, # number of sample paths we want for evaluation\n",
")"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"forecasts = list(forecast_it)\n",
"tss = list(ts_it)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"Running evaluation: 100%|██████████| 30490/30490 [00:00<00:00, 73264.53it/s]\n"
]
}
],
"source": [
"evaluator = Evaluator()\n",
"agg_metrics, item_metrics = evaluator(iter(tss), iter(forecasts), num_series=len(dataset.test))"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"{\n",
" \"MSE\": 5.050131371510992,\n",
" \"abs_error\": 825300.8760404031,\n",
" \"abs_target_sum\": 1231764.0,\n",
" \"abs_target_mean\": 1.4428196598416343,\n",
" \"seasonal_error\": 1.1272178349378457,\n",
" \"MASE\": 0.8942878068619854,\n",
" \"MAPE\": 0.7959536171820637,\n",
" \"sMAPE\": 1.5777253903358783,\n",
" \"OWA\": NaN,\n",
" \"MSIS\": NaN,\n",
" \"QuantileLoss[0.1]\": 235492.3691656391,\n",
" \"Coverage[0.1]\": 0.0841399990629246,\n",
" \"QuantileLoss[0.2]\": 432733.80553320213,\n",
" \"Coverage[0.2]\": 0.16420606287775852,\n",
" \"QuantileLoss[0.3]\": 598878.4456814768,\n",
" \"Coverage[0.3]\": 0.2313885114557466,\n",
" \"QuantileLoss[0.4]\": 731890.6043083849,\n",
" \"Coverage[0.4]\": 0.33211357353699106,\n",
" \"QuantileLoss[0.5]\": 825300.8755625215,\n",
" \"Coverage[0.5]\": 0.4319109309843977,\n",
" \"QuantileLoss[0.6]\": 875338.4524397269,\n",
" \"Coverage[0.6]\": 0.5821979103218853,\n",
" \"QuantileLoss[0.7]\": 866631.8245184756,\n",
" \"Coverage[0.7]\": 0.6952033453591342,\n",
" \"QuantileLoss[0.8]\": 776677.5575613247,\n",
" \"Coverage[0.8]\": 0.790309469146793,\n",
" \"QuantileLoss[0.9]\": 565017.1712122711,\n",
" \"Coverage[0.9]\": 0.8809902544159678,\n",
" \"RMSE\": 2.247249735011886,\n",
" \"NRMSE\": 1.5575402786364494,\n",
" \"ND\": 0.670015421818143,\n",
" \"wQuantileLoss[0.1]\": 0.1911830262661022,\n",
" \"wQuantileLoss[0.2]\": 0.3513122688544251,\n",
" \"wQuantileLoss[0.3]\": 0.48619576938559406,\n",
" \"wQuantileLoss[0.4]\": 0.5941808693129406,\n",
" \"wQuantileLoss[0.5]\": 0.6700154214301778,\n",
" \"wQuantileLoss[0.6]\": 0.7106381193473157,\n",
" \"wQuantileLoss[0.7]\": 0.7035696972134886,\n",
" \"wQuantileLoss[0.8]\": 0.630540880851628,\n",
" \"wQuantileLoss[0.9]\": 0.4587057027257422,\n",
" \"mean_absolute_QuantileLoss\": 656440.1228870025,\n",
" \"mean_wQuantileLoss\": 0.5329268617097127,\n",
" \"MAE_Coverage\": 0.03417110475982236\n",
"}\n"
]
}
],
"source": [
"print(json.dumps(agg_metrics, indent=4))"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"item_metrics.plot(x='MAPE', y='MASE', kind='scatter')\n",
"plt.grid(which=\"both\")\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>item_id</th>\n",
" <th>MSE</th>\n",
" <th>abs_error</th>\n",
" <th>abs_target_sum</th>\n",
" <th>abs_target_mean</th>\n",
" <th>seasonal_error</th>\n",
" <th>MASE</th>\n",
" <th>MAPE</th>\n",
" <th>sMAPE</th>\n",
" <th>OWA</th>\n",
" <th>...</th>\n",
" <th>QuantileLoss[0.5]</th>\n",
" <th>Coverage[0.5]</th>\n",
" <th>QuantileLoss[0.6]</th>\n",
" <th>Coverage[0.6]</th>\n",
" <th>QuantileLoss[0.7]</th>\n",
" <th>Coverage[0.7]</th>\n",
" <th>QuantileLoss[0.8]</th>\n",
" <th>Coverage[0.8]</th>\n",
" <th>QuantileLoss[0.9]</th>\n",
" <th>Coverage[0.9]</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>6828</th>\n",
" <td>FOODS_3_070_WI_2</td>\n",
" <td>531.909877</td>\n",
" <td>518.847107</td>\n",
" <td>569.0</td>\n",
" <td>20.321429</td>\n",
" <td>17.788732</td>\n",
" <td>1.041685</td>\n",
" <td>3.032136</td>\n",
" <td>0.946577</td>\n",
" <td>NaN</td>\n",
" <td>...</td>\n",
" <td>518.847116</td>\n",
" <td>0.642857</td>\n",
" <td>518.082115</td>\n",
" <td>0.750000</td>\n",
" <td>510.659755</td>\n",
" <td>0.892857</td>\n",
" <td>477.338791</td>\n",
" <td>0.964286</td>\n",
" <td>348.039331</td>\n",
" <td>0.964286</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8462</th>\n",
" <td>FOODS_3_234_CA_3</td>\n",
" <td>43.477325</td>\n",
" <td>176.806824</td>\n",
" <td>2.0</td>\n",
" <td>0.071429</td>\n",
" <td>15.951334</td>\n",
" <td>0.395862</td>\n",
" <td>6.970813</td>\n",
" <td>1.966008</td>\n",
" <td>NaN</td>\n",
" <td>...</td>\n",
" <td>176.806829</td>\n",
" <td>1.000000</td>\n",
" <td>241.263911</td>\n",
" <td>1.000000</td>\n",
" <td>247.255903</td>\n",
" <td>1.000000</td>\n",
" <td>217.906344</td>\n",
" <td>1.000000</td>\n",
" <td>164.628036</td>\n",
" <td>1.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8468</th>\n",
" <td>FOODS_3_234_WI_2</td>\n",
" <td>1899.364955</td>\n",
" <td>935.622803</td>\n",
" <td>1089.0</td>\n",
" <td>38.892857</td>\n",
" <td>22.698745</td>\n",
" <td>1.472112</td>\n",
" <td>3.761671</td>\n",
" <td>1.129167</td>\n",
" <td>NaN</td>\n",
" <td>...</td>\n",
" <td>935.622761</td>\n",
" <td>0.428571</td>\n",
" <td>988.843789</td>\n",
" <td>0.535714</td>\n",
" <td>935.429903</td>\n",
" <td>0.571429</td>\n",
" <td>751.070375</td>\n",
" <td>0.714286</td>\n",
" <td>493.297098</td>\n",
" <td>0.892857</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9742</th>\n",
" <td>FOODS_3_362_CA_3</td>\n",
" <td>362.378557</td>\n",
" <td>456.977081</td>\n",
" <td>313.0</td>\n",
" <td>11.178571</td>\n",
" <td>8.542276</td>\n",
" <td>1.910569</td>\n",
" <td>4.160606</td>\n",
" <td>1.190415</td>\n",
" <td>NaN</td>\n",
" <td>...</td>\n",
" <td>456.977058</td>\n",
" <td>0.750000</td>\n",
" <td>462.123611</td>\n",
" <td>0.928571</td>\n",
" <td>425.437444</td>\n",
" <td>0.964286</td>\n",
" <td>371.548067</td>\n",
" <td>1.000000</td>\n",
" <td>257.005370</td>\n",
" <td>1.000000</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>4 rows × 29 columns</p>\n",
"</div>"
],
"text/plain": [
" item_id MSE abs_error abs_target_sum \\\n",
"6828 FOODS_3_070_WI_2 531.909877 518.847107 569.0 \n",
"8462 FOODS_3_234_CA_3 43.477325 176.806824 2.0 \n",
"8468 FOODS_3_234_WI_2 1899.364955 935.622803 1089.0 \n",
"9742 FOODS_3_362_CA_3 362.378557 456.977081 313.0 \n",
"\n",
" abs_target_mean seasonal_error MASE MAPE sMAPE OWA ... \\\n",
"6828 20.321429 17.788732 1.041685 3.032136 0.946577 NaN ... \n",
"8462 0.071429 15.951334 0.395862 6.970813 1.966008 NaN ... \n",
"8468 38.892857 22.698745 1.472112 3.761671 1.129167 NaN ... \n",
"9742 11.178571 8.542276 1.910569 4.160606 1.190415 NaN ... \n",
"\n",
" QuantileLoss[0.5] Coverage[0.5] QuantileLoss[0.6] Coverage[0.6] \\\n",
"6828 518.847116 0.642857 518.082115 0.750000 \n",
"8462 176.806829 1.000000 241.263911 1.000000 \n",
"8468 935.622761 0.428571 988.843789 0.535714 \n",
"9742 456.977058 0.750000 462.123611 0.928571 \n",
"\n",
" QuantileLoss[0.7] Coverage[0.7] QuantileLoss[0.8] Coverage[0.8] \\\n",
"6828 510.659755 0.892857 477.338791 0.964286 \n",
"8462 247.255903 1.000000 217.906344 1.000000 \n",
"8468 935.429903 0.571429 751.070375 0.714286 \n",
"9742 425.437444 0.964286 371.548067 1.000000 \n",
"\n",
" QuantileLoss[0.9] Coverage[0.9] \n",
"6828 348.039331 0.964286 \n",
"8462 164.628036 1.000000 \n",
"8468 493.297098 0.892857 \n",
"9742 257.005370 1.000000 \n",
"\n",
"[4 rows x 29 columns]"
]
},
"execution_count": 40,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"item_metrics[item_metrics.MAPE > 3]"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"def plot_quantiles(ts_entry, forecast_entry, prediction_length, path=None, sample_id=None, inline=True):\n",
" plot_length = 150\n",
"\n",
" _, ax = plt.subplots(1, 1, figsize=(10, 7))\n",
" ts_entry[-plot_length:].plot(ax=ax)\n",
" forecast_entry.plot(color='g')\n",
" ax.axvline(ts_entry.index[-prediction_length], color='r')\n",
" if inline:\n",
" plt.show()\n",
" plt.clf()\n",
" else:\n",
" plt.savefig('{}forecast_{}.pdf'.format(path, sample_id))\n",
" plt.close()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAlAAAAGnCAYAAAB4nWl5AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/Z1A+gAAAACXBIWXMAAAsTAAALEwEAmpwYAAEAAElEQVR4nOydeXwU93n/PzOzh7Q6kUAH4gaBjQHJksCOjTG2LNvYDpj8UhNyGCchSdMmLm2cVA114ySllRvSpmniOg5OrcSpieskYJIYm8PYMrEBCWTAXOKQQEII0H2stDvH74/Z7+zs7szs7CHtrPi+X6+8gndndr672p155vM8z+dhJEkChUKhUCgUCsU8bKIXQKFQKBQKhZJs0ACKQqFQKBQKJUJoAEWhUCgUCoUSITSAolAoFAqFQokQGkBRKBQKhUKhRAgNoCgUCoVCoVAixDaWB5s4caI0Y8aMsTwkhUKhUCjW5/Rp+f/nzUvsOigBNDQ0XJckaZLWc2MaQM2YMQP19fVjeUgKhUKhUKzP8uXy/+/bl8hVUIJgGKZF7zmawqNQKBQKhUKJEBpAUSgUCoVCoUQIDaAoFAqFQqFQImRMa6C08Hq9aG1txfDwcKKXQrlBSElJwZQpU2C32xO9FAqFQqEkKQkPoFpbW5GRkYEZM2aAYZhEL4cyzpEkCZ2dnWhtbcXMmTMTvRwKhUKhJCkJT+ENDw8jNzeXBk+UMYFhGOTm5lLFk0KhUCgxkfAACgANnihjCv2+USgUCiVWLBFAWYGdO3di3rx5mDNnDmpqahK9HAqFQqFQKBaGBlAABEHAX//1X+ONN97AiRMn8Morr+DEiROJXhaFQqFQKBSLQgMoAAcPHsScOXMwa9YsOBwOfOpTn8L27dsTvSwKhUKhUCgWJeFdeGq+u+MjnLjcF9fXnD85E9/5+C2G27S1tWHq1KnKf0+ZMgUHDhyI6zooFAqFQqGMH6gCRaFQKBQKhRIhllKgwilFo0VRUREuXbqk/HdrayuKiooSshYKhUKhUCjWhypQABYvXoympiZcuHABHo8HW7duxcqVKxO9LAqFQqFQKBaFBlAAbDYbfvKTn+CBBx7AzTffjMceewy33JIYNYyS/Pz57HX86xsnE70MCoVCoYwilkrhJZKHHnoIDz30UKKXQRkH7DrZgf/Z34y/vW8uUuxcopdDoVAolFGAKlAUSpzhBQkA0NI5lOCVUCgUCmW0oAEUhRJneFEOoJo7BxO8EgqFQqGMFjSAolDiDC+IAIAWGkBRKBTKuIUGUBRKnBF8CtSF6zSFR6FQKOMVGkBRKHHGK5IaKKpAUSgUyniFBlAUSpwRRJLCowoUhUKhjFdoAKVDV1cXqqqqUFxcjKqqKnR3d2tux3EcSktLUVpaSs03KQAAr68L73KvG8NeIcGroVAoFMpoQAMoHWpqalBZWYmmpiZUVlaipqZGc7vU1FQ0NjaisbERr7/++hivkmJFSA2UJAGXuqgKRaFQKOMRaqQJYNOmTaitrUVeXh6mTp2K8vJybN++Hfv27QMArFu3DsuXL8ezzz6b2IVSkgKvIMLOMfAKEpo7h1Ccn5HoJVEoFAolzlgqgNqwcwMarzTG9TVLC0rxowd/pPt8Q0MDtm7disbGRvA8j7KyMpSXl6OjowOFhYUAgIKCAnR0dGjuPzw8jIqKCthsNlRXV+PRRx+N6/opyQcvSJiRm4amqwO0kJxCoVDGKZYKoBJBXV0dVq9eDZfLBQCadUwMw4BhGM39W1paUFRUhPPnz+Pee+/FwoULMXv27FFdM8XaCKKEielOXO0fwYXrNICiUCiU8YilAigjpWisyc/PR3t7OwoLC9He3o68vDzN7YqKigAAs2bNwvLly3HkyBEaQN3geEURTrsNMyam0U48CoVCGafc8EXky5Ytw7Zt2+B2u9Hf348dO3YAkJWo2tpaAEBtbS1WrVoVsm93dzdGRkYAANevX8f+/fsxf/78sVs8xZIIogQby2BGrouOc6FQKJRxyg0fQJWVlWHNmjUoKSnBihUrsHjxYgBAdXU1du3aheLiYuzevRvV1dUAgPr6eqxfvx4AcPLkSVRUVKCkpAT33HMPqquraQBFgVeQwLEspuem4XKPGyM8tTKgUCiU8YalUniJYuPGjdi4cSMA4JlnngEA5ObmYs+ePSHbVlRUYMuWLQCAO+64A8eOHRuzdVKSA0GUu/Bm5LogSsClLjfm5KUnelkUCoVCiSM3vAJFocQbXpDAsQxmTEwDQEe6UCgUyniEKlBBEAWKQokWXpRg51jMyJUDqGZaSE6hUCjjDqpAUShxhhdEcCyDCS47MlJsaKZWBhQKhTLuoAEUhRJnZAVK9g6bOTGNduJRKBTKOIQGUBRKnOFFuQYKAKbnUi8oCoVCGY/QAIpCiTO8IMLGyj+tGbkutHYPwcOLCV4VhUKhUOIJDaB06OrqQlVVFYqLi1FVVYXu7m7N7R588EFkZ2fjkUceGeMVUqwK7zPSBGQFSpSA1m6qQlEoFMp4ImwAxTDMLxiGucowzHHVYz9gGOYUwzBHGYb5PcMw2aO6ygRQU1ODyspKNDU1obKyEjU1NZrbffOb38SvfvWrMV4dxcrwggQbJ/+0Zk6UZyzSNB6FQqGML8woUC8BeDDosV0AFkiStAjAGQD/EOd1jSmbNm3C3LlzsXTpUqxduxabN2/G9u3bsW7dOgDAunXrsG3bNs19KysrkZGRMYarpVgd3mekCcgKFABaSE6hUCjjjLA+UJIkvcswzIygx95S/ecHAD4Zj8Vs2LkBjVca4/FSCqUFpYZDihsaGrB161Y0NjaC53mUlZWhvLwcHR0dKCwsBAAUFBSgo6MjruuijE9EUYIoQSkiz01zIN05vqwMvIKIk+19WDQlO9FLGdcMjPBo63ZjXgG9QaNQrEg8aqC+AOANvScZhvkywzD1DMPUX7t2LQ6Hiy91dXVYvXo1XC4XMjMzsXLlypBtGEZuSadQwsGLEgDA7kvhMQyDKRNS0dYznMhlxZWdx69g1U/341r/SKKXMq759QctePSn+yFJUqKXQqFQNIjJiZxhmI0AeAC/1ttGkqQXALwAABUVFYZnAiOlaKzJz89He3s7CgsL0d7ejry8vEQviZIE8KLcbUcUKABIdXDjaqBw/zAPSQKGPDwAZ6KXM27pG/bC7RUUXzEKhWItolagGIZ5AsAjAD4jJfEt0rJly7Bt2za43W709/djx44dAICVK1eitrYWAFBbW4tVq1YlcpmUJIEoUDZVAOXg2HFlYyD4fu7kvVJGB/L5CvRzplAsSVQBFMMwDwL4FoCVkiQldXtRWVkZ1qxZg5KSEqxYsQKLFy8GAFRXV2PXrl0oLi7G7t27UV1dDQCor6/H+vXrlf3vuusu/MVf/AX27NmDKVOm4M0330zI+6BYA17QCKBsLDzCOAqgfO+FXthHF/Jd8o6j7w6FMp4Im8JjGOYVAMsBTGQYphXAdyB33TkB7PLVBn0gSdJfjuI6R5WNGzdi48aNAPzDhHNzc7Fnz56QbSsqKrBlyxblv+vq6sZkjZTkgKTwiI0BADhtLDoHxs9FkCgj5AJPGR0EqkBRKJbGTBfeWo2HXxyFtVAoSY+WAuW0ceNKgRIlemEfC4jy5KWBKoViSWIqIh+PEAWKQokGElSoFSiHbXzVQCkKlDh+3pMVoQoUhWJt6CgXCiWOENUguIh8PHXhifTCPiZ4aQ0UhWJpaABFocQRvwIVVEQ+LhUoGkCNJkTho58zhWJNaABFocQRr2YN1PgKoGhqaWzw2xiMn+8OhTKeoAEUhRJHlC48NqgGahylYQSqQI0JPC0ip1AsDQ2gdOjq6kJVVRWKi4tRVVWF7u5uze3+/u//HgsWLMCCBQvwm9/8ZoxXSbEavE4KzytISu1QsiNQZWRMoEofhWJtaAClQ01NDSorK9HU1ITKykrU1NSEbPPHP/4Rhw8fRmNjIw4cOIDNmzejr68vAaulWAW/jUGgAgVg3KhQ1AdqbKBF5BSKtaEBFIBNmzZh7ty5WLp0KdauXYvNmzdj+/btWLduHQBg3bp12LZtW8h+J06cwLJly2Cz2ZCWloZFixZh586dY7x6ipXwG2kG+kABwMg4qYOiysjYQD9nCsXaWMoHasPODWi80hjX1ywtKDUcUtzQ0ICtW7eisbERPM+jrKwM5eXl6OjoQGFhIQCgoKAAHR0dIfuWlJTgu9/9Lr7xjW9gaGgIb7/9NubPnx/X9VOSC71RLgDGTSE5rYEaG6iRJoVibSwVQCWCuro6rF69Gi6XC4A8RDgYhmHgG1kTwP33349Dhw7hjjvuwKRJk/Cxj30MHMeN+pop1kXLSNPp+/d48YISqBP5mEAVKArF2lgqgDJSisaa/Px8tLe3o7CwEO3t7cjLy9PcTj1H79Of/jTmzp07lsukWAxNI83xpkAJVIEaC7y+z9dLi/UpFEtyw9dALVu2DNu2bYPb7UZ/fz927NgBQFaiamtrAQC1tbVYtWpVyL6CIKCzsxMAcPToURw9ehT333//2C2eYjm0jDSd47aIfHy8H6tCuhwFmsKjUCyJpRSoRFBWVoY1a9agpKQEeXl5WLx4MQCguroajz32GF588UVMnz4dr776KgCgvr4ezz//PLZs2QKv14u77roLAJCZmYmXX34ZNtsN/5He0BDVYDwrUGSYMFWgRhdeUfrGx/eGQhlv0Ks9AtNwZJhwbm4u9uzZE7JtRUUFtmzZAgBISUnBiRMnxmydFOsj6BhpAuOnC4+ntTljAh2ZQ6FYmxs+hUehxBPSMcUFDRMGxo8CJdAZbWMCSZFSvy0KxZpQBSoIokBRKNFAVBm7ugvPLndmjp8AijqRjwXUSJNCsTZUgaJQ4ghRDbQUqPGSwqM+UGMDtTGgUKwNDaAolDjCKwpUaBH5uPGBIhd2mloaVUjxuJcGUBSKJaEBFIUSR3iNGijnOOvCo8XNY4NSrE9TeBSKJaEBFIUSR4jpYUAN1DjzgaKppbGBp4alFIqloQGUDl1dXaiqqkJxcTGqqqrQ3d0dsk1jYyM+9rGP4ZZbbsGiRYvwm9/8JgErpVgJgc7CswS9bi9W/eQ9XLg+mOilRA1Pux0pFEtDAygdampqUFlZiaamJlRWVqKmpiZkG5fLhV/+8pf46KOPsHPnTmzYsAE9PT1jv1iKZSD1KpxGADXeisit3IV3qWsIH7b24lR7X6KXEjWKAjVOlEsKZbxBbQwAbNq0CbW1tcjLy8PUqVNRXl6O7du3Y9++fQCAdevWYfny5Xj22WcD9lPPvZs8eTLy8vJw7do1ZGdnj+HqKVZCEEXY2MDh0+PNByoZaqCU+iHJums0QpKkpPicKZQbGUsFUBt2bkDjlca4vmZpQanhkOKGhgZs3boVjY2N4HkeZWVlKC8vR0dHBwoLCwEABQUF6OjoMDzOwYMH4fF4MHv27Hgun5Jk8IIUoD4BgI1jwbHMuAmgyCgXK9dAJXudlnrd1EiTQrEmlgqgEkFdXR1Wr14Nl8sFQB4iHAzDBCoKwbS3t+Nzn/scamtrwbI0K3ojw4tSQAE5wcGx46aIPBmKm5M9gFJ/tlb+nCmUGxlLBVBGStFYk5+fj/b2dhQWFqK9vR15eXma2/X19eHhhx/Gpk2bcPvtt4/xKilWgxfEEAUKkOugRrzjwwdKUaAsrIyQAuxxEUCNk8CbQhlv3PByybJly7Bt2za43W709/djx44dAGQlqra2FgBQW1uLVatWhezr8XiwevVqPP744/jkJz85puumWBNZgdIOoMaNApUEtTmkvj1ZAyh1cGrlz5lCuZG54QOosrIyrFmzBiUlJVixYgUWL14MAKiursauXbtQXFyM3bt3o7q6GgBQX1+P9evXAwBeffVVvPvuu3jppZdQWlqK0tJSNDY2JuqtUCyAVg0UIHtB0S68sUNRoJK0iNyr+mx5C3/OFMqNjKVSeIli48aN2LhxIwD/MOHc3Fzs2bMnZNuKigps2bIFAPDZz34Wn/3sZ8dsnRTrw4sSbBp1cA4bO26KyJPBB4qsUbTwGo2gReQUivW54RUoCiWe8KIIm1YKjxuPCpR1L+zJsEYjvIJagUrO90ChjHeoAhUEUaAolGiQFSjtFN54UaCSwSE7GVQyI9SqEy0ip1CsCVWgKJQ4wguiZgrPaePGTQAlJEGBNql9EpO0BoraGFAo1ocGUBRKHOEFSTuFZ2Mxwo8PGwMhiRSoZBVv1IXjtAaKQrEmNICiUOKIXgpvPNkYJEUXnmD9NRrBUxsDCsXy0ACKQokjchG5jhP5uEnhkSG31r2wC1KyK1DqACpJ3wSFMs6hAZQOXV1dqKqqQnFxMaqqqtDd3a253be+9S3ccsstuPnmm/Hkk09CStKaC0p84AWdInL7+Amg+CTocFNUsiT9PaqVMyt/zhTKjQwNoHSoqalBZWUlmpqaUFlZiZqampBt/vznP2P//v04evQojh8/jkOHDuGdd95JwGopVoEXdWqgxpGNASnMtnJqiU+CNKMRXpW6501WGY1CGedQGwMAmzZtQm1tLfLy8jB16lSUl5dj+/bt2LdvHwBg3bp1WL58OZ599tmA/RiGwfDwMDweDyRJgtfrRX5+fgLeAcUq3AhGmsmgQIlJXkROPlsHx1r6c6ZQbmQsFUBt2LkBjVca4/qapQWlhkOKGxoasHXrVjQ2NoLneZSVlaG8vBwdHR0oLCwEABQUFKCjoyNk34997GO45557UFhYCEmS8LWvfQ0333xzXNdPSS5kGwOdIvJxEECJogSSFUsGBSpZbQyI6uS0swFqFIVCsQ43fAqvrq4Oq1evhsvlQmZmJlauXBmyDcMwYJjQi+LZs2dx8uRJtLa2oq2tDXv37kVdXd1YLJtiUQSdFJ7TxmEkWeUQFeqaIiunx8QkUMmMIOtOsXNJ+x4olPGOpRQoI6VorMnPz0d7ezsKCwvR3t6OvLy8kG1+//vf4/bbb0d6ejoAYMWKFXj//fdx1113jfVyKRbBq2OkSRQoSZI0g/FkQUgSg8dkSDMaQVSnFDtLa6AoFItywytQy5Ytw7Zt2+B2u9Hf348dO3YAAFauXIna2loAQG1tLVatWhWy77Rp0/DOO++A53l4vV688847NIV3g6OvQMk/tWT3glIHJFYOTog6ZuU1GqEoUDbO0oEqhXIjc8MHUGVlZVizZg1KSkqwYsUKLF68GABQXV2NXbt2obi4GLt370Z1dTUAoL6+HuvXrwcAfPKTn8Ts2bOxcOFClJSUoKSkBB//+McT9l4oiccrSOC0aqB83lDJXgcV4E9k4docZdxMktZAEe8nmsKjUKyLpVJ4iWLjxo3YuHEjAP8w4dzcXOzZsydk24qKCmzZsgUAwHEcfvazn43ZOinWRxAl2LVm4dnHRwAVmMKz7ntRFCgLB3lGqFN43UPW/ZwplBuZsAoUwzC/YBjmKsMwx1WP5TAMs4thmCbf/08Y3WVSKMkBL4rgdHygACS9F1SypPCUGqgkVaAEqkBRKJbHTArvJQAPBj1WDWCPJEnFAPb4/ntc8Mwzz+Cpp55K9DIoSYpXkGDXsTEAxo8C5eBYS9fmkMBJtPAajSAKlNPGURsDCsWihA2gJEl6F0BX0MOrANT6/l0L4NH4LotCSU4EUQKn04UHJH8ROUnbOWyspdNjZG1WDvKM8NsYsJa2i4iUPx1rR/egJ9HLoOggSRJ+29BKOz9NEm0Reb4kSe2+f18BoGu/zTDMlxmGqWcYpv7atWtRHo5CSQ68ggi7jg8UkPwKFLmWO23JoUAlawqPXMBS7Jyli/Ujob3Xjb/69WFsa2xL9FIoOhxv68M3/u9D/PlcZ6KXkhTE3IUnydNzdX/hkiS9IElShSRJFZMmTYr1cBSKpdGzMSAK1AgvjPWS4gpRoJw2a48YIWtL1hSeWoGycqAaCReuDwIA+of5BK+Eogc5PyX7jd5YEW0A1cEwTCEA+P7/avyWRKEkJ5IkgddL4Y2TInIyGsVhYy3dhZfsRppk/al2ztKfcyQ0Xx8CAAx6aABlVZJ9CPdYE20A9TqAdb5/rwOwPT7LsQ5dXV2oqqpCcXExqqqq0N3dHbJNS0sLysrKUFpailtuuQXPP/98AlZKsQrkYj2ei8jJCdZp4yBK1lV4kn2UC6/YGIwfI82WTlmBGhpJbhV2PJPsQ7jHGjM2Bq8AeB/APIZhWhmG+SKAGgBVDMM0AbjP99/jipqaGlRWVqKpqQmVlZWoqQl9i4WFhXj//ffR2NiIAwcOoKamBpcvX07AailWgFzotGwMnOMlgCLdYT5fK6vWGCW7jQEvimAYwM6xkKTkDQTVNPsCKKpAWRfyuxkvqudoE9ZIU5KktTpPVcZ5LQlj06ZNqK2tRV5eHqZOnYry8nJs374d+/btAwCsW7cOy5cvx7PPPhuwn8PhUP49MjICkX7pbmh4RYHSMNK0ja8UHnk/gijBziVyRdoIya5A+QxZST0dL4rgWAt+0BHQ0imn8KgCZV2S/Xcz1ljKiXzDzg1ovNIY19csLSg1HFLc0NCArVu3orGxETzPo6ysDOXl5ejo6EBhYSEAoKCgAB0dHZr7X7p0CQ8//DDOnj2LH/zgB5g8eXJc109JHnif7q05ymW8KFCqFJ76v61Gsl8IeEEExzKw+b5LvCDBaamzdWSIokQVqCQg2X83Y80NPwuvrq4Oq1evhsvlQmZmJlauXBmyDcMwYJjQiyIATJ06FUePHsXZs2dRW1urG2hRxj+KAmXQhZfsPlCKkSZRoCzaYp/sFwLe181p86mZyW5lcLV/BMNe+bs/OEIDKKuS7M0XY42l7mmMlKKxJj8/H+3t7SgsLER7ezvy8vIMt588eTIWLFiAuro6fPKTnxyjVVKsBLnIaXXhjRcfKEEMTOFZtVZCsTFI1hooQYKNZQJSeMkMUZ/SnTYMeWgKz6oISg1Ucv5uxpobXoFatmwZtm3bBrfbjf7+fuzYsQMAsHLlStTWymbrtbW1WLVqVci+ra2tcLvdAIDu7m689957mDdv3tgtnmIpyEVuPPtABQdQVr1T5ZP8QsCLImwc61egkvR9EEgH3s2FGTSFZ2GUEUhJeuMx1tzwAVRZWRnWrFmDkpISrFixAosXLwYAVFdXY9euXSguLsbu3btRXS2P+6uvr8f69esBACdPnsRtt92GkpIS3H333XjqqaewcOHChL0XSmIhCpRNqwaKGx81UMEpPKte2ImPjVVtFsKhKFCkBipJ3wfhwvUh2DkGc/LSaRG5hSG/m2RPGY8VlkrhJYqNGzdi48aNAORhwgCQm5uLPXv2hGxbUVGBLVu2AACqqqpw9OjRMVsnxdqQi5yNC70vIXVR4yWAIilJqypQ5PyfvDYGvhooksJL8tq5ls5BTM1xITPFThUoC0O+Zlb9XVuNG16BolDihZLC01CgGIaB08ZiJMkvhHxIDZQ1T7TkTjpZP25elGBjWaWj06qfs1maO4cwIzcNLocNw16RXqAtivK7SdIbj7GGKlBBEAWKQokUoxQeIKe9RrxJekX3EdKFZ9HiZvK3sOr6wsELImwsAzuX/F14kiShpXMQt8/KQZpTVi6HPDwyUuwJXhklGNqFFxlUgaJQ4oQ/hacdQDlt7LixMbC6DxQpgk3WC4E8U5FRKVDJ+7251j+CIY+AmRNlBQoA7cSzKMk+AmmsoQEUhRInSJ2KTcPGAJCDjmSvgSIXcqWI3KLKCK/YGCR4IVHCCyLsHKvUzln1czZDs8+BfHpumqJAUS8oa5Ls3atjDQ2gKJQ4EU6BctjYcTnKxYr4/WyS8/MmReTcOLAxIB5QM3JdigI1SDvxLInfgDY5fzdjDQ2gKJQ44a+B0v5ZOTgWniT3gQoeJmzVC7tipJmk1wFiY2Bnk78Lr6VzEDaWQVF2KtIcPgWKduJZEn8AleCFJAk0gNKhq6sLVVVVKC4uRlVVFbq7u0O2efvtt1FaWqr8LyUlBdu2bRv7xVIsgZGRJiArUMmewiMKFPG1sroCZdX1hUMI6sJL1vcBAM3XhzA1xwUbx8LlJDVQNICyIjxVoCKCBlA61NTUoLKyEk1NTaisrERNTU3INvfccw8aGxvR2NiIvXv3wuVy4f7770/AailWIFwX3ngoIldsDOykiNya7yfZR1J4RdHnA8X6/js53wcgp/Cm57oAwK9A0RSeJRGT/Hcz1lAbAwCbNm1CbW0t8vLyMHXqVJSXl2P79u3Yt28fAGDdunVYvnw5nn32Wd3XeO2117BixQq4XK4xWjXFaig1UHopvHFkY5AsNVDJOpJCVqAYVRF5cn5vZAuDISyekQMASKMKlKVRmi8s+ru2GpYKoDbs3IDGK41xfc3SglLDIcUNDQ3YunUrGhsbwfM8ysrKUF5ejo6ODhQWFgIACgoK0NHRYXicrVu34u/+7u/iuXRKkmEmhTeQ5N1HyTLKJdn9bLyCBG4cGGl2DnowMMJjhqJA0SJyK5Psyu1YY6kAKhHU1dVh9erVinK0cuXKkG0YhgHDaF8UAaC9vR3Hjh3DAw88MGrrpFgfQTRO4clF5MmpJBBCFCiLttcLSX4nLYgi7FzyG2k2X5c78KZPTAMApDr8RpoU60GHCUeGpQIoI6VorMnPz0d7ezsKCwvR3t6OvLw83W1fffVVrF69GnY7dda9kfGG6cJz2seDD1SyjHJJ7jtpXhgfRprEA2pGrhxAOWwsHByLQWqkaUmU302SBuxjzQ1fRL5s2TJs27YNbrcb/f392LFjBwBZiaqtrQUA1NbWYtWqVbqv8corr2Dt2rVjsl6KdRHCpfC45PeBSpZhwkoKL0nvpL2iz0iTTW4FqqVzEBzLYMqEVOUxl5PDUJKnsscr/hFIyfl9G2tu+ACqrKwMa9asQUlJCVasWIHFixcDAKqrq7Fr1y4UFxdj9+7dqK6uBgDU19dj/fr1yv7Nzc24dOkS7r777oSsn2IdvGZm4Y2bAIooUNZ8PyQFkbQpPKJAccltY9DcOYQpE1KVVCQg10FRBcqaKCOQkvTGY6yxVAovUWzcuBEbN24E4B8mnJubiz179oRsW1FRgS1btij/PWPGDLS1tY3JOinWRhnlwumNckl+I82QInKLKiPkb5GsKTyvKMk1UL5g3GvRQDUcFzsHMS0nsDPZ5eDoKBeLQm6IkvV3M9bc8AoUhRIvyEmHG8c+UIIogWX8QaJVlRH1spJRhRKChglb9XMOR/8wj6zUwNpQl5MqUFaFnJ6s2hxiNagCFQRRoCiUSCEBlD3MLDxJkgy7Oq0M73PItlm8vV6dWhQkCSyS6/P2CqL8ORMjzSS9oA17BaT4TFcJaQ5aA2VVSB0nTeGZgypQFEqcEMIoUA6OhSRZN+gwgyhJYFmolBFrKmpqxSYZ1RvBl8KzWfxzDscwLyLFHniZcdEaKMuS7P5pYw0NoCiUOOH16d92AydyAEltZSAPubW+AiWIkvJ5J+PFgPcZaZKOzqRWoGxBCpSToz5QFkWkAVRE0ACKQokTpD6INaiBApI7gBJEESwDS9fmiKIEUQKcpE4rCdMRvM9Ik3iKWfFzDockSZopPJfDRp3ILQpVoCKDBlAUSpzw+tQZPRy+O/FktjIQJAk2jlXepxUVKBIwOSzulq4HCQBJETnDJOcsPK8gv4/gFF46VaAsi9+ANvm+b4mABlA6dHV1oaqqCsXFxaiqqkJ3d7futn19fZgyZQq+9rWvjeEKKVZDEEVdE01gfKTwkqE7LNhqIdkUKH8zgrx+G8tYMlANx7DPskNLgRryCEnZHTne8Y9ASvBCkgQaQOlQU1ODyspKNDU1obKyEjU1NbrbPv3001i2bNkYro5iRbw+80M9lABKSN70hSBK4Bh/cbMVfaCCA6hku1CTu3/yXbKxbHIGUF75e+4M7sJzyv/t9ibv72C8QhWoyKABFIBNmzZh7ty5WLp0KdauXYvNmzdj+/btWLduHQBg3bp12LZtm+a+DQ0N6OjowP333z+GK6ZYEblzSv8nRWqgkjmFx/sUKNaXWrJid5iSwkvSGigSLNmUAIpRGhSSiRGvvOYUW2gXHgAM0jSe5SC/FTPKsiRJuPmnN+O5Q8+N9rIsi6V8oDbs3IDGK41xfc3SglLDIcUNDQ3YunUrGhsbwfM8ysrKUF5ejo6ODhQWFgIACgoK0NHREbKvKIr4xje+gZdffhm7d++O67opyQcviqYUqGQOoARRUtKUVk0tkZonq7ul68EHjQSycYwlU6XhIApUiA+UT4EaHBGAjDFfFsUA8j0zc9PR1t+GU9dP4Q9n/oC/WvxXo7quL2z/AjiGw89X/nxUjxMplgqgEkFdXR1Wr14Nl0seN7By5cqQbRiG0TQ+fO655/DQQw9hypQpo75OivXhBUkZvaEF6QpL+hoo32+BY615YQ+uIRKTTYEKGglk49iktDEYJgqURg0UADrOxYKQ4N3MTcfp66cBAAfbDo66OfDu87vh5t14QXrBUibElgqgjJSisSY/Px/t7e0oLCxEe3s78vLyQrZ5//33UVdXh+eeew4DAwPweDxIT083rJeijF94UVKGv2oxnorIAevW5pCAyZmkPlBaKTwrpkrDQYrIU0OcyOXLzhA107QcRHkyc9NxulMOoDrdnTjXfQ5zcuaMypqGvEO41HcJANDc04yZE2aOynGi4YavgVq2bBm2bdsGt9uN/v5+7NixA4CsRNXW1gIAamtrsWrVqpB9f/3rX+PixYtobm7G5s2b8fjjj9Pg6QaGFyVdE00AcPpsDJI5gOJVAZTVFahkNdJUUniKAsUkXRoSUKfwgmqgSAqP1kBZDn8RuXkFCgAOtB4YtTWd7Tqr/Ptg28FRO0403PABVFlZGdasWYOSkhKsWLECixcvBgBUV1dj165dKC4uxu7du1FdXQ0AqK+vx/r16xO5ZIpF4YXxXwMlBihQjCW7dZQaqKQtIvel8Cyu9IXD7dGpgSIKFDXTtByRGGme6jyFkvwSuOwuHGgbvQDqTOcZ5d9WC6AslcJLFBs3bsTGjRsB+IcJ5+bmYs+ePSHbVlRUYMuWLSGPP/HEE3jiiSdGc5kUi+MVJEU10GI82BjIw4StrUCFGGlacI1GKCk8ztqBajiGeVIDFdyFRxUoqxLJKJfT10/jzml3Iisla1QDKKJ0leSX4ODl0Q2gRvgR9I70Ii8ttGRHixtegaJQ4oUgikpwocV4qIGShwmrLuwWTC2ReqGkDaCCuvA4i37O4VB8oEJm4REFigZQVsOsAuX2unGx9yLm5c7DbUW3ofFKI0b4kVFZ05muM5iSOQX3zLgHDZcbwIuj9735l7p/wYLnFkAQzd3k0gAqiGeeeQZPPfVUopdBSUJ4VYu/FuNhFp48TJi017OWDE6IZZKSwrPgGo3wp/Dk9du55EzhjYSzMaBF5JZDNFkD1dTVBAmSEkB5BA8+7PhwVNZ0pvMM5ubOxZKiJXDzbnx09aNROQ4A1LfX49rQNZy8ftLU9jSAolDihDq40GI81EAJITVQ1ruw80EKVNLZGASl8DiLfs7h8NsYBF5mHBwLG8vQeXgWhPx2wrn3k7TavInzcNuU2wCMXiH5mc4zmJsjB1DA6NZBnbp+KqJj0ACKQokTvCgaDxPmxkEAJVm/Cy9kFl6Sfdz+FB5RoJikHCasZ6TJMAxcDk420qRYCrNdeCTQKM4pxpTMKZicMXlU6qA6hzrR5e7C3Ny5mDVhFnJSc0YtgBrmh3Gh+wIAGkBRKGNOuBSeYxwYaco2BvL74Cxa3BwcQFlxjUYoKbxkV6B4ARzLaI43SnPaqJHmKHKs4xi8gjfi/RQfqHAKVOdpTMuahjRHGgBgSdGSUQmgSAfe3Ny5YBgGS4qWjFoheVOnnJbkGI4GUBTKWBMuhceyDBwcm9wKlKpQ3qojRsiaiPN7ksVPIUXkdo5NUgVKDJmDR3A5OGqkOUoc6ziGRc8vwopfr0C3uzuifYkFSLiA/XTnaczLnaf8921Ft+Fs11l0ubsiX7AB6gAKAJZMXoLjV49j0DMY1+MAflXtwTkP4mjHUbi97rD70ABKh66uLlRVVaG4uBhVVVXo7tb+Il68eBH3338/br75ZsyfPx/Nzc1ju1CKZZAVKOOflMPGJrUCJYgAq4xysWZxc4iRZpLVQAlKDZRa6Uuu9wDIKbzg9B0hzWmjNgajxNGOowCAvRf24o5f3IFzXedM72umC0+SJJy+HhpAAfGvTzrTeQY21oYZ2TMAyEqXKIk43H44rscB5ACKAYPPLPwMBEnAkStHwu5DAygdampqUFlZiaamJlRWVuo6jD/++OP45je/iZMnT+LgwYOaI18oNwa8YGxjAPgCqCT2gQpQoCxaAyWG1EAlV8DqFTSMNJPSxkDUDaBcDo4aaY4SZzrPgGVYvPnZN3F18Cpuf/F27L+439S+pOHC6KbjysAV9Hv6MW+iP4CqmFwBBkzcC8nPdJ3BrAmzYOfsAIDFRbLR9WjUQZ3qPIXp2dOxfMZy08eIKYBiGOZvGYb5iGGY4wzDvMIwTEosr5coNm3ahLlz52Lp0qVYu3YtNm/ejO3bt2PdunUAgHXr1mHbtm0h+504cQI8z6OqqgoAkJ6ergwlptx4CGYUKC7ZFajAInIrXtgVBYpL0iLycWOkKcBp1/49pDmoAjVanOk6gxnZM1A1uwoffPEDTEiZgAd//aCptJdagZJ0giiS6lIrUBnODNySd0vc66CIhQEhLy0PM7JnjEod1Knrp3DTxJtQmFGIKZlTcOjyobD7RO1EzjBMEYAnAcyXJMnNMMyrAD4F4KVoX3PDzg1ovNIY7e6alBaUGg4pbmhowNatW9HY2Aie51FWVoby8nJ0dHSgsLAQAFBQUICOjo6Qfc+cOYPs7Gx84hOfwIULF3DfffehpqYGHKd910UZ33jDGGkCgNOe7DVQQTYGFgygyN2zPVmNNIOHCXPJmcIb8QpIsekoUE4brYEaJdRBR3FuMb53z/ew9rdr0dzTjFvybjHcV/1bEXSaYsgQYbUCBchpvG2ntkGSJDCM8XnQDKIkoqmzCffNvC/g8SVFS+KuQImSiFPXT2HZtGURHSPWFJ4NQCrDMDYALgCXY3y9Maeurg6rV6+Gy+VCZmYmVq5cGbINwzCaXwie51FXV4fNmzfj0KFDOH/+PF566aWQ7SRJQkffcFwKQb28iKt9w7p3B5TEIYQpIgeSX4EKHuUSThkRRQk/2n0GXYOesVgeAI1ZeEkWfPCChpFmhIFqU0c/fvV+c7yXFhFyCk9PgeLi2oXXeKkHrzW0xu31khVJkhTfJMK0rGkAgIu9F8PuHxBA6VxjTl8/DZfdhSmZUwIeX1K0BJ3uTpzrNl9zZURbXxvcvDtAgQLkQvLmnmZcHbwal+OQYw15h3DTxJuUY5gpio9agZIkqY1hmM0ALgJwA3hLkqS3grdjGObLAL4MANOmTTN8TSOlaKzJz89He3s7CgsL0d7erlnbNGXKFJSWlmLWrFkAgEcffRQffPABvvjFLwZsN8KL6Ogbhp1jkZPmiGldvW4vrvQNY0KaA3aDlnnK2OMNY2MAJH8RuSgGjnIJF5w0dw7iR7ubUJiVgjWLjX//8SLZi8jJ+mPx2/rt4TY8/845fOa26crfa6wZ9gpIdejVQMVXgXr5gxbsO30VnyyfEn7jcUzHYAcGPAMozi1WHpueNR0A0NLbEnZ/XpTAMIAk6d94nO48jbm5c8EygcHxrQW3AgCOXz2OOTlzon0LCsEdeARiqHmo7RAenvtwzMcB/GlJJYBSHcOIqBUohmEmAFgFYCaAyQDSGIb5bPB2kiS9IElShSRJFZMmTYr2cKPGsmXLsG3bNrjdbvT392PHjh0AgJUrV6K2thYAUFtbi1WrVoXsu3jxYvT09ODatWsAgL1792L+/Pkh2xG1KB6qkRjH16LEF7mI3EQXXrIV5agIVKDCd+F5fcpJz1DknjTRQn4jZHROOE8bq0HUJuKfZOcYpbDcLCO8HJy4vYlLk7kNUnhpTg6DHj5u57EhD698125ktIKOwoxC2Fk7WnrCB1CiKIVVboMtDAikU87MccygF0CVFZYBQFw78YIDqPLJ5WDAhE3jxZLCuw/ABUmSrkmS5AXwOwB3xPB6CaGsrAxr1qxBSUkJVqxYgcWL5Sr/6upq7Nq1C8XFxdi9ezeqq6sBAPX19Vi/fj0AgOM4bN68GZWVlVi4cCEkScKXvvSlkGOQ72E8zuOCEkDF/lqU+MKr6oP0cNpYjHiTN4AKroEKp4yQC3+Pe+wCqBAFKskCKNI1GIsCRVTORBZqh7MxkCT/uJdYGRwRktIrK95oBR0sw2JK5hRc7DNO4UmSBF6UlBsPre8ccevWCqAmuiYi1ZZqKlVohjOdZ+CyuzA5Y3LA42mONBSkF5hS1Mxy6vopZKdkIy9NzjRlOjNx08SbwharR53Cg5y6u51hGBfkFF4lgPoYXi9hbNy4ERs3bgQgDxMGgNzcXOzZsydk24qKCmzZskX576qqKhw9etTw9cldVjxmcpHvdHJdEm4MeEEKm1Z12Dj0jmEwEW8CRrmYKG5WAqgxVKBIAOLwNXMkWwDlVRQov41B5AqUvP3QiABkxHd9Zhn2igZdePLfZmCE103zRQJVoGTOdJ6Bk3NiaubUgMenZ08PqwyRn4nDxgHgNX/bZ7vOykOEJ4YGUAzDyMeJU2BzpuuM4kAezNTMqbjUdykuxwFkC4N5ufMCjrWkaAneOPuG4X5RK1CSJB0A8BqAwwCO+V7rhWhfbzyjBD3xCKBEmsKzKoJqzIkeyV5ELgjBXXjG74WchHvdY1hE7ltSstZABRtpRuO3ZQUFaoTXV6BcDvnePV4DhQdHBHiT0Ooh3pzpPIM5OXPAsYGf+/Ss8IGN4uBvkPomQ4RJqiuYaVnT4hdABVkYBB8nXkoX4LcwULOkaEnYQvVYFChIkvQdAN+J5TWsBlGg4omoKFDxe60kuybcEHhFMawC5bSx8PDJ274tSBI4Rt2FZ2EFKklTeCQQ8NsYsPBGGUAl0ipAHuWiXwMFIG4DhYc8vFL4HC6NPp4503lGM7iZljUNl/svwyt4FVPKYIIDKK3fNrEw0AtspmdNj4sVkUfw4EL3BXzqlk9pPj81cyp2nt0ZF8uEvpE+XO6/rBlAhYM6kY8BUjwVKJrCsySiKEGSELaI3GlLbh8oXpTAceZroPgEFJErClSS2hgIQbPwolKgfB9CIgf2yjVQerPw4qxA+QLFSFOd4wlBFHC266xmcDM9azpESURbf5v+/lL42sFT10+hKKMI6Y50zdeYljUNVwevmpojZ8SF7gsQJMFQgRr0DqJ7OLJZf1roqWqL8hfBwRl3zdMAagyIqwJFU3iWRFENxrmNgRBhFx7xieoZGssUXrIrUIE2BmRocyS/edKFlygFihdE8KJkUETuU6DitL4hX6CYjIaj8aKltwVe0asdQGX7rAwM6qAU/zSD383RjqOGZpzEMiHW+iS9DjzC1Cy5xutSb+x1UMEdeAQH51CsGfSgAdQY4O/Ci5+NQfJegscnSt2KqVl4yfnXkyRJTpEwkXTh+RSoRHTh+RSoePzuxhIyb5BRfc4AIiqSVmqgEqRADfuOH1aBisP6RFHCkM+u4UbuxDMKOoiZplF9Eq80X2in8AY9gzh29RiWTNZPbZkJ1MxAUoVqPys1kZiDhuPU9VOwsTbMnjA75Lnfrfmd4b40gBoDpDjWLdEaKGtCLm7h6i+SuYicnE9JoTxnooicpFSGPIKiiow2Si2HXb+Ww8rwQmAdjy2KVGSia6CGfQGNrgLlC6DioUAN84JyPkzWm5N4YCaAMgo4wqXwGtobIEoibptym+5rmAnUzNB4pRGTMyYjJzVH83nSZRiPTrxTnacwe8JszdqwYAuFYGgApUNXVxeqqqpQXFyMqqoqdHdr51o5jkNpaSlKS0s1x8AA8VWgyPmBpvCsBTnZ2MMME07mWXh8UJoykhooAGNm3yAEKVDJlsLjRSnge6QoUBF0mZHv2ECiFCgSQOnOwpMfj0cNlPo9WnE241jR1NmELGcWJrlCDatTbCnIT8s3TuEFFZEH/24OtMqDgm8r0g+gijKKwDJszMrQwbaDhkXc+en5sLP2uKXw9LoKw0EDKB1qampQWVmJpqYmVFZWoqamRnO71NRUNDY2orGxEa+//rrmNhJGoQsv9peixBGixIRXoDgIopR0F3UAINdvlnThReADBQC9Y1RITtZkT1oncjFQgfL9W4gihRevIu1IIQaZ+j5QPgUqDl14Q6rXuJEDqDNdZ1CcW6zblRbOYoAPUwN1oO0AZmbPxKQ0/Ykids6OooyimBSonuEeNHU1YfHkxbrbmDUHDQcv8mjqbKIBVCxs2rQJc+fOxdKlS7F27Vps3rwZ27dvx7p16wAA69atw7Zt26J+/Xj5QEmSRFN4FkW5aJsoIgeQlGk8Pri93owCpXp+rOqgxGAFKsl+LF4x0JCV872PaBSoeNkEREq4FF6KnQXDxKdGS+11dSN7QRn5JgFyfZKRMiQqKTyfAa0UGkAZpe8IsXo01V+W/biNAihynFgVqAvdF+AVvVEHUDH5QMWbDTs3xMVDQk1pQanhkOKGhgZs3boVjY2N4HkeZWVlKC8vR0dHBwoLCwEABQUF6Ojo0Nx/eHgYFRUVsNlsqK6uxqOPPhqyDTmhx3ojrN6fpvCsBa/UQIWfhQfIAVQ8HJjHEkWBCurCM/JiUddIjZWVgTqYZZjkS+EJQTVQdqJARVIDJSRWgSL1bnoBFMMwSHPY4mL0qa7zulEVqGF+GC09LXii5AndbaZnTccfz/xR9/fKh6Tw/L/dy/2X0drXapi+U46TPR3vX3o/wnfghwzwrZhcYbjd1KypqGupi/o4APDRtY8A6BuDhsNSAVQiqKurw+rVq+FyuQBAs46JYRjdC0RLSwuKiopw/vx53HvvvVi4cCFmzw6s5o+XD5S6hurGPE1YF3Lna8ZIEyAXGG1DO6uipUABcmCv97Y9qgta9xhZGYiSBJaRf7ccE7mHUqLxioFDqUkwFUlw4HciT5QC5evCs+nfUKQ5uYD0W7SoVawb1QfqXNc5SJAMFahpWdPg5t24NnRNmfmmRlFuiZGm6vtGhuqaCaCmZU7Dq32vQhCFEEd0Mxy6fAjFOcWYkDoh7HHa+tuiPg4g13XZWBtK8kui2t9SAZSRUjTW5Ofno729HYWFhWhvb0deXugXDgCKiooAALNmzcLy5ctx5MiRkAAqXj5Q6loOqkBZC3KRDlsDpQRQyXeiD36PyoVdFHVPYHyCaqACBvEm2W9FEKUAPzG7Tlu5EYoPVIKKyN0eYwUKwKgoUDdqABXONwnwezRd7L2oGUAF23+ofzck0CgtKA27lunZ08GLPK4MXEFRZpHp90A4dPkQlk1fFna7qVlTYzoOIKclS/JLkGpPjWr/G74GatmyZdi2bRvcbjf6+/uxY8cOALISVVtbCwCora3FqlWrQvbt7u7GyMgIAOD69evYv38/5s+fH7Kdv24pjgpUcl0Txj3kxG3GiRxIznZrckLlghQoI4UnsAZqbBQoITiASrK0Di9IAX5iJJiKxOMo4QqUL4AzSlO7nFxcbBbUClSyWVbECxJA6fkmAeE9moy68CIJNEigFk0heXt/O1r7WsPWPwF+y4RorQwEUcChy4dMqWp63PABVFlZGdasWYOSkhKsWLECixfLf7jq6mrs2rULxcXF2L17N6qrqwEA9fX1WL9+PQDg5MmTqKioQElJCe655x5UV1drBlAk2IlrDVRsL0WJM6aNNLkkLiIX9BQo/W8jCSxz0hxjVgMlu6X7vKqY5FOgeFHUtDEwGxzwgqicKxLdhadnYwDIZprxKCKnCpQcQBWkFyDTmam7TTiPJiE4hef770gDDeU4UZhpHros1z+ZCaCIF1S0Besnr5/EgGfAVGG8HpZK4SWKjRs3YuPGjQD8w4Rzc3OxZ8+ekG0rKiqwZcsWAMAdd9yBY8eOhX19EcR6wLjgNuzrBChQyXVRGO8QI81wo1xIW3cyp/CCa6CMFB5iCpntso9ZF54gyjVQgFzwnnw2BkFGmmxoTYoRanUzHjVG0eDvwjOogXJwuD4QuyqpTgPeqEXkZ7qMO/AAYELKBKQ70nUDm+AicvK7iTTQiMUl/FDbIXAMh1sLjUeoALGPczHjaxWOG16BGgvUsU4s5/LAGqgYFkSJO/7gIkwXHiffkSejAhWcwuNM1OZ4BXksSXaqfQxroETFvdvGhveqshq8KCnrB6AMb+ZNtuiPeP3bxaPGKBpIAOU0qIFyOeNUA6X2gboBbQwkScLp66dRnKOfvgPkporpWdN1vZP0FKhIA40MZwYmpEyIKoV36PIhLMhbAJfdFXbbLGcWMhwZUStQB9oOIDsl2zDtGQ6qQAVBFKh4olaOREkCh+gUKIGm8CwLqU8xM0wYSNIAKnjIrYkaKK8gu2pnuxy42j88+ouE7NZP1siyTNLNwuN9s/AIdjayInKiQKXY2YQpUCNhZuEBsgIVly48VRDm4ZPrbx0P2vrbcG3omukC73A1UMoMSd9/H2w7GHGgEc5zSgtJknDo8iF84qZPmNqeYRhMzZoadQ3UgbYDuK3oNrBM9DoSVaDGAEkCGF/QFEvqjVwIGCTfRWG8E7GRppCYC1ssKAEUE1wDpR8MymqQrECNXQ2U6F9jEtoYBBeRk8/ZbH0PCc4nuBwY9PAJSfcPewUwjP9irIUrTl14gUXkyXdjEitmfZMAufU/XA0UUQ0VBartAJYULYko0JieNT1iBep893l0ubuwuCh8/RMhWtPOAc8Ajl89HlP6DqAB1JggSv6ahnik8DiWoSk8i0FO3OGMNBUfKG/ynehjVaDG0kgzoAsvyT5qPsTGIDIjTaL+ZLscECV/QfdYMuwVkGLjDOs905wcBkdiD/AGPYJS83Yj1kAdunwoIouBLncXBjwDIc8pw4RVMyQHPYM4dvVYxIHGtKxpaOlpiehvG0kBOWFqZnQKVP3l+rCDkc1AA6gxQJT8F51YFSgGDFiWpvCsBjlxh+3CS2IbA3JHSi7uZrrweEGE3VdEPjDCj0mXlBgSQCXXZ82rugiByI00iQdUTpps1JqIOqhhr2iYvgNkBUqUYm+oGBrhkZkqv9cbsQuv/nI9FuYtRIotJey2ai+oYMjvRD0Lr6G9QQ40IgygpmdNR7+nH70jvab3OdR2CCm2FCzIW2B6n2lZ03B18CqG+cjKA0hdl9HAYjPQAGqUkSS58y4uCpQEsKycwqNdeNYiOLjQg9zdJXMXHhkmTC7y4XygbByLbJd8gesdg048OQBRG2mO+iHjCi8E1UBFaKTpUSlQQGI68Ya9gqGJJiDXQAGxz8Mb9AjI8gVQydYwECuSJKH+cr1p1cbIYiB4mHCnuwPf2fcdMGAiDjSisTI4dPkQSgtKYefMT2ggVgatfa0Rre9A2wHMnjAbE10TI9ovGBpA6dDV1YWqqioUFxejqqoK3d3dmttxHIfS0lKUlpZqjoEhcY5/7EUMCpQogWXk+V40fpKRPW9M+uOIIoY8PIY8PDy8iGOtvRGZExq/trkuPGcci8glSYqoMPta/0hMLf3BnYZmlBGPINdAkQvcWKTx1ClzlkFS2hioA3H/5xxpDVQCFSheDBtAuZxyD1OsZppDHh7ZJIAy8RlJkoRr/SMxHdMqnOs+h+7hbtN1Q8RMU0uB8g8TZuFmD+GbdQ/gQOsBvLjyRUxKmxTRuhTTTpN1ULzIo6G9AUsmRxeoRVoHZXYwcjhoAKVDTU0NKisr0dTUhMrKStTU1Ghul5qaisbGRjQ2NuL1118PeV4Mav2OJfARJDmAYhmawgPkE+GZjn50DZrzkrnU5cbZqwM4e3UAV/tH8PGfvIeXP4i81VYLpQsvTArP6TMWjIcC9edznfjYv+5Fe6877La9Q17c+exe7PzoStTH89d5ye/RTG2OnMJjFTWkdwzcyNU+SjaWTbrCYj5oFp6dC58qVUPSwxOIApWQFJ6g3CzokeELoGJVJYdGBGT53qvHhNy47/Q13FGzB9cHrBdESRGe2SMpIAeAwvRC2FibZmDj5kcwwpzBT498G1ed30WWYxLqv1yPz9/6+YjWBBinCrV4o+kNDHmHIiogB6Lzgmrta8Xl/su4vej2iI6lBbUxALBp0ybU1tYiLy8PU6dORXl5ObZv3459+/YBANatW4fly5fj2Wefjfi1yTmPi4cCJcl31DSFJyNBvqhE0p2U5rBhUoYTQpcDHMvgapzuRM2m8IiRJvHJiYWr/cMQRAkdfSMozDIesXB9cAQeXkRL51DUxyNxiNYsPD14QYLdxigKwVgoUOpRLuw4KCLnFBuDyHygSAA1aNEU3pQJstdPa/cQFhRlRX2sQQ/vT+GZ+GNf6RuGV5DQM+TFxHRn1MeNJ17Biw8v1yPXlYuZEexXf7keKbYU3DLpFlPbcyyHKZlT0NTVhMPth/HhlQ/xYceHONh2EPWXD8ObMoLfngYy+I/j6cX/hvmTborq/UxKmwQn5wybwhMlETXv1eDpt5/GvNx5eKj4oYiOMyVzCoDIFCjF1yoOCpSlAqgNOzeg8UpjXF+ztKDUcEhxQ0MDtm7disbGRvA8j7KyMpSXl6OjowOFhYUAgIKCAnR0dGjuPzw8jIqKCthsNlRXV+PRRx8NeF4KUqBiq4GSwLKyIQKNn1Qjckx+qIIoIc3JITPVjhQ7J/vQxGlWmL+IPHwKj2GAkTgEUF6f542ZgbGkDiaWeXTBCpSZGiivryCa1ECNSQAlqWugYrtpSQShTuSRFZF7VONzgMQpUOGKyKdPlAOo5hiCesCnQKXKlzIzKh1JcVqp4NzO2cGxNlwf6owogDp0+RBuLbg1orqh6VnT8dqJ1/DaidcAAKm2VJQVluHBGY/j/ZO5+N/HP4svvdQMlo0+uGQZVrYY0DHtBIDrQ9fxud9/DjvP7sTaBWvxs0d+hgxnRkTHSbGlIC8tL6JOvA9aP4CDc6AkvySiY2lhqQAqEdTV1WH16tVwueQfs1YdE8Mwuu24LS0tKCoqwvnz53Hvvfdi4cKFmD17tvJ8sAIVUxeeKLeES0i+i8JoQORuM/GTJEm+GWn+v2OaMz6zuAB/cBFOgWIYBk4bi+E4pPBGBPMDY0kdTCxu4OQ7ZwtRoMKk8DhGSeF1D41+Ck8Q5RsNeY1s0hUW86KomGcCqmHCEReR+2qgEqJAichNdxhuk5liR26aA83XB6M+jiRJAQqUmaCIfD5WM7Od6MrFua7zaOlpUWqIjBBEAYfbD+OLt34xouN85+7vYM+FPViUvwgl+SWYkzMHHMvh1fpLOPrRUUyfMA1Ac8zdq8TKgCBJEs50nsHeC3uxt3kvdp/fDbfXjecffh5fLv9y1CPOIvWCOtB2ALcW3AqnLXb10VIBlJFSNNbk5+ejvb0dhYWFaG9vR15enuZ2RUVFAIBZs2Zh+fLlOHLkSFAAFXjRibkLj5FNNGkKD0ohmBl/HFGSAy71nb1rVBSo8CeBFDsXlxSe13cBMKMwkG1iUYCChwnbTNRAyaNcWGQ4bWCZMerCUxlRcklYRC6IkjK+BVDNwoswgEp0DZTRIGHC9FwXmjujD6BGeHlwcrrTDpYxp9IRmwcrKVAAkJs6EedwHjvO7MDXlnwt7PYnr5/EoHfQdP0T4Z6Z9+CemfeEPE5+J44Iuz71mJ41Hb8/9Xts3LMRDe0NONx+GNeGrgGQU2+r5q3Chts3mPKvMmJq5lSc7jxtatu9F/ai/nI9vlT2pZiOSbjhi8iXLVuGbdu2we12o7+/Hzt27AAgK1G1tbUAgNraWqxatSpk3+7uboyMyDU0169fx/79+zF//vyAbYJTeLH6QLEs5C68qF9l/KCk8Ex8poKG0WVanGZxAWoFKvxPKsUWpwCKKFAmFAayTSwKULCRphkFyuvrKGNZuRNvrFJ4rMotPdmcyL2CBLtmCs9kDZTiA+WrgYrTTUIkDPMCUh3hA6gZE9NiqssjCnKak4ONYyNToCwWQLnsqXDZU/H66dBmJC1IAXmkhdd6kN+xI2iYcLTcPOlmdA9349n9z6J9oB2PzH0Ezz/8PJq+3oSLGy7ipUdfijl4AvwKlNG19crAFXzmd59B5S8rUZhRiK8u/mrMxwUspkAlgrKyMqxZswYlJSXIy8vD4sXyl7G6uhqPPfYYXnzxRUyfPh2vvvoqAKC+vh7PP/88tmzZgpMnT+IrX/kKWJaFKIqorq4OCaCUFB4THydylmEggtZAAZGl8IIv/gCQ5rDFzSPHb2NgRoFi4+IOTS4WkShQsShAwcOE/U7kxqNciI9RtsuBnjFQoARRUupvZB+o5PqxCEHDhM0ofWpIh2dmih0ME7vPUjSYMdIEgBm5afjd4TZTRedakBsDl8MGB8fCa0aBEkgNlPW+F7muidjXvA+9w73ISjEurK+/XI9MZybm5s6Ny7H1hglHy9eXfB33z74fxTnFSLUbN7nEwtTMqRjwDKB3pBdZzix0ubvQ1t+Gi70XcbH3Is53n8fPD/8cw/ww/mnZP6F6aXXc1nPDB1AAsHHjRmzcuBGAf5hwbm4u9uzZE7JtRUUFtmzZAgC44447cOzYMcPXJlExwzBgmei75yRJkhUohgHD0BQeEJkCxWsFUE4O7b3xGXCbiBQeadmORIGKRQHSVaAMLkS8IClt+LICNTY1UJzKq8qbZGNzvDpGmmYv+ERZcdpZpDlsCevCc5pM4QFAS+cQ5hVEVkAM+Gv70hwcbBxjqlNRKSK3WA0UINdBecVLePPcm3jslscMtz10+RDKC8tjGoarhvy+7azc6BKrcuu0ObEof1E8lmYI8YKa/9P56HR3wiMEnmPsrB33zboPP3rwR3ELNgk0gBplyE+UZXymflF+JyVJTtuxLMCINIUH+D8DM1KzoKEQuRy2+NVAaQRoejjtXFyKyKNRoGLqwgsKEk114QmioqZku+ymPbtiQRAlkBIiNgmHCQshNgbRGWk6ONZX5zf2CtSIN7yRJiArUADQ3DkYVQBF3pvLaYONNalAWbALj5DpzMRE10S8fvp1wwDKI3jwYceH2HDbhrgdW7lB4hjYkij1ffeMu/H/bv5/cNldKEwvxOSMyZicMRnTsqZhWtY05Kfnxy3IDIYGUEEQBSpeiCoFivEVgEcDSUOwvtehCpRagQq/rWYKzzfMNB6Q8RtmOklSbGxci8jN1HGROphhrxh1ukT9HQT8n6U33DBh33YTXA6cvxZ9wbBZ+CAFKpk6ViVJClg/oKqBiiCFZ/fVncl1fmOrQAmiBI9gPoUHAC1RFpITdS3NwcHOMaaCTKvWQAGyx98jcx/BtlPb4BW8uvYERzuOwiN4Ii4gN0K5CfRlS8wEUEPeITg5Jzg28vNJvMhLy8Nrj72WkGPf8EXkow05d8sKFBN17ZKoDqAQWy3VeMFfA2VegeKY0VGgglUDI+LWhUcUKBMpGrVXVLR1UIqKx0VQA6VSoLJS7WNiYyCq7CpsLGPaP8kK+NMo/u8SwzDgWHPpKUAOEEgnlcvBmfIJiyekiN1MkJ7lsmOCyx61FxRRoNKcNl8KLxIfKGt+L1bOXYme4R7sv7Rfd5v6y/UA4ldADgROzTCjQAmigDk/noMf/PkHcVtDskEDqFEmIPBhovdvUlygGdqFR1DXQIVT5ARfAT6rVqAcHAY9fFzUPK8ghTXRJMhF5PGrgRowcYEcUAVZ0dZBRVMD5RX9NVDZLjv6h/m4zR/UgxdF1Sy85FKgeFUaRY2NNRccAL4AylcInOaIX6epWUiDREqYUS6E6blpUXtB+RUoG+wca0pVsqqNAaFqdhWcnFO3G69vpA+/+eg3mOiaqIxMiQfqFD1n4vvW1NWE9oF2012DsfDzhp/jxcMvjvpxIoUGUKMMOXczTGwncyUQY/0pvBs9jad+9+E6rXhRCqlPcjltkCTAHYdgRhDFCBWoeNZAmVCgVBfRaFWgYBXPTHeYbKTpq4HymR32DY/uBV09yiXZbAx4RYEKPDVHoqSpAyiXM35eZ2YhNwdm08QzY7Ay8NdAcbCzbEQpPKsGUOmOdFTOqsTrp18POcfvvbAXC/97Id5teRf/eNc/Rm0+qYWgusaY+d18eOVDAHIx+4BnIG7r0OLZ/c/imXeesdw1jwZQo4woSUr9E8NEbz+gVrLIH81aX6WxR/1jCpfdEDQCqDSfT008upS8QS7nRsTdB8pkDRS5qEarQPmtGvz1RerHNfdRKXPEjXy0O/EEKYkDKCFwXA7BxrER2Bj4O+Di6bZvlkgDqOm5LlzudUf1myD1XWkOXwrPRJBJVCqrOZGrWTl3Jc51n8Pfvvm3+Pf3/x0vH30ZX//T11H5y0o4OSf2f2E//ub2v4nrMQVRVE0ZYMPelJKxa7zI48+X/hzXtagZ8AzgXPc5tPa14kLPhVE7TjTQAEqHrq4uVFVVobi4GFVVVeju7tbc7uLFi7j//vtx8803Y/78+Whubg54XpLk+icgTgqULxAjr30jo3774T5XrQDK5ZB7KOLRpSQkIIUXaQ3U5KwUAEBvlJ14pNuRvE1zs/BEv40BmYc3yl5QghAUQCXRD4XU5dg1Unimh2YL6hReIhQoXwrPRBE5IBeSS5I8VDhShkZ4MIx8LBvHGjY0EKxeAwUAq29ejbm5c/HTQz/FN976Bj73+8/hJ4d+gq8v+Toa/7IRt0+5Pe7H5FUjkGwsAyHM59PY0Yg5OXNgY23Y17wv7ushHL96XPn3aB4nGmgApUNNTQ0qKyvR1NSEyspK1NTUaG73+OOP45vf/CZOnjyJgwcPhox8Id5NgBxIRa1A+c6dLCt3agCxuZqPC1Rv30wAFawQpTnjqUCJpiwMACDFER8bA49vmLBZBWpytmweN5YKFHEiB/wpvFjm8ZkhYJhwktkY+OvMglJ4nPn3EVhEngAFyldj5DSpQM2YKHfiXbgeeQA16BGQ5rCBYRjYWXNdeFa2MSDkpeXh9NdOw/OPHnR9qwunv3Ya5548hx+v+DFcdteoHFPdfGGmBqrxSiPunHonFk9ePKqBDUkVOjkn3ml5Z9SOEw00gAKwadMmzJ07F0uXLsXatWuxefNmbN++HevWrQMArFu3Dtu2bQvZ78SJE+B5HlVVVQCA9PR0ZSgxQZSgKEYMw0CMMvGmqUBF9Urjh0hSeLykkcJzxk+BUhtGhiPFxsHDizGPSoi0BmpShhN2jolaAfKPwzHXhecf4CyfZshstli8qMytUz1MmEmqWXjkbxpcT2fW4wiQAwRFgfLVQI3lzdaw7/toZhYeAMxQzDQjLyQf8vBw+VLxNs6cSmf1Gig1DMNgQuoEzM2di1kTZpnaZ8g7hCffeDKiAbtAYJ1oOPuPjoEOXBm4gtKCUiyfsXxU66COdhxFpjMTD899GO80j24A1dbXhj3nQw209bCUD9SGnRuUvGq8KC0oNRxS3NDQgK1bt6KxsRE8z6OsrAzl5eXo6OhAYWEhAKCgoAAdHR0h+545cwbZ2dn4xCc+gQsXLuC+++5DTU0NOM5/4pCCFKhoz+XKGA2awlMwm8IjF3K9FF48fHK0Xl8PUhsywoum5oXp4Z+FZ0KBGhGQ5rQhK9URQxee/P9mZ+EFp6OyfSm87sHRVaD4CO+krYSW4StAFCizs/BEOG1+BYoXJYzw5owt48GwYmNg7v482+VAVqo9qqHCA77vNSA7tg97w/8WrOwDFQ/ebXkX/3Xwv/Bhx4d4e93bpk0kg5svjH43H3bIqlBJfgm8ohf/+t6/Yv/F/XhgzgOxv4Egjl49ikX5i7B8+nL87uTv0NzTjBnZM+J+HAD4/rvfx4tHXkT333cj3ZEedvsbXoGqq6vD6tWr4XK5kJmZiZUrV4ZsQ4rAg+F5HnV1ddi8eTMOHTqE8+fP46WXXgrYRgyqgYr2TpCcOxlGlcK7wTUo9UdpFECJkhxEhSpQ8gUlHj45XlW3WTjIhSXWOigSQI3wYtjUxZCHR5qDQ7Yr+nEq5AJOPkZFgdJRRohvEflcMnyz2Ua9Bkp1IWCTzEhTbyg1xzKm6nuAYBsD33d8DOug/DVQ5gO2GbmuqDrxhkb8CpSdY015ZSkpPD55vheRcKxDHi/2bsu7+NEHPzK9nxB042Gk3BKho6SgBHdOvXPU6qAkScLRjqNYlLcIy2csB4BRVaGOXDkCXuTxQesHpra3lAJlpBSNNfn5+Whvb0dhYSHa29tDapsAYMqUKSgtLcWsWbK0+uijj+KDDz7AF7/4RWUb0oUHwOcDFd16REnyqU9UgSKoA0iji6TeXX1aghUocqceLR5V4DLkFZCpE8CJooQhjwCXw4YJLnv0CpSvtoh8n80qUCQY4FgGmSl29I52F54oKVYLyVYD5bcxCPwu2Vk2bFEvwaNWoHzqzOAIj5w0RxxXqk+kXXiAXAfV0KLdqGPEoIdXfsdmrR6SoQYqFo5ePYrJGZOxePJifHvPt/HA7AdwS94tYfdTn8NsYYxbP+z4ENOypiEnNQcAsKRoCfa17IvL+tVc7L2IvpE+LMpfhFvybkFOag72tezDutJ1cT8WL/I42nEUgByk3TfrvrD73PAK1LJly7Bt2za43W709/djx44dAICVK1eitrYWAFBbW4tVq1aF7Lt48WL09PTg2rVrAIC9e/di/vz5AdvIXXh+U79o/ZtEyV/XQS5gN3wApXr/RudCrTEuAJQ713jUQHlFKUQ10MOvQMV2AlcPQzXqxCM+V2lOTk7hRakAqbt0AL9Dtl6AQi5Q6tqwbJd91BUoXpQUI8pkS+GRACD4uxqRE7kQaKQJJEaBSo0ggJqem4bLPW7F5NIsQx4BLqdfgTJXA2VtI81YOdZxDIvyF+GFj7+ATGcmHt/2OLxC+N+c+sYj3CiXxiuNKMkvUf57+fTlONQW/zooEtAsyl8ElmFx9/S7R02BOtN5BsO8PFz+3Yvvmtrnhg+gysrKsGbNGpSUlGDFihVYvFi2xq+ursauXbtQXFyM3bt3o7q6GgBQX1+P9evXAwA4jsPmzZtRWVmJhQsXQpIkfOlLXwp4fVGSQE6FRDmK5nwuiv5AjLzeDZ/CU/3bWIHyFT8H1QKQ2gkzTt7hUHuohIMU18YrhQcYd+KR51wOG7Jd0StAslWD1oVdJ4WnOBv7P/fs1OgVMLOIagUqyYrIFQUqKBi3c0wEReR+HygSXIylG7lfgTJ/eZmR64IoAa3d7oiONTjCK79j06NchPFbA+UVvDh5/SQW5i1EXloefvbIz3C4/TD++d1/DruvoLrxMOr6dHvdOHX9FEoLSpXHls9YDkESsP+i/viZaCAB1IK8BQCAu6ffjQs9FyIukDcDSUtWzarCgdYDSjBlxA0fQAHAxo0bcebMGbz33nuYO3cuACA3Nxd79uxBU1MTdu/ejZwcWaqsqKjAli1blH2rqqpw9OhRHDt2DC+99BIcjkCZPLCIPHr7AdkOQf43TeHJmK2B0lOgnDYWLGPORykcXo3gQg8lhReHACpdlaLRQxl34eTkACbaLjxJCpglCPj8YnSUEa2OsmxX9AqYWYKLyJPJB0rPSDMSQ1C1jYGiQMXhO26W4Qhm4RGIlUGknXhDHkGp87KxbIAqq4UkSUnhAxUtZzrPwCN4sDBvIQDZT+ozCz+Df3nvX9A30me4Lx9046EXjB6/ehyiJAYEUHdMvQN21h73OqijV49i1oRZyHBmAMCo1kE1XmmEk3PiK+VfwYgwgkNth8LuE1MAxTBMNsMwrzEMc4phmJMMw3wsltcbjwQWkfsfixRBM4U3/k4AkUAUOJZhDG0MeJ0AimGYuM0KE0TJdBG5M14pPEFCls9bycjLigRXRIEa8ggRp0qAwDtUgqEC5XvcofpcYlHAzCAqf2t/3VUy1kCF2BiYTE8BQaNcHIlQoOR1Ok3OwgNkM00gci+owRFe6aZ12MIX2vOipJx/wwVbycixq3IB+aL8RcpjfzH/L8CLPE5fP224b4CDv0EKj3TgqQOoNEcalhQtwdvNb8ey/BCOdhwNeC8L8xdiQsqEUfGDarzSiAV5C3DPzHsAyEX44YhVgfpPADslSboJQAmAkzG+XsJ55pln8NRTT8Xt9URJAhOHwEdtyOlP4d3YkI8xnGcJUSC0FCKXk4vL3TkvRGCkGbciclGxBjCq4xpSjbvI8nkx9UahAqmVHYLR1HZeS4GKQQEzu0YAIDFb0hWRa6Q9ATmFF5EC5Qte0uPodWaWEa8Ap42NaE7bBJcdGSm2iBQoSZKbI0g3rc3ELDz1+JbxWAN1rOMYOIbDTRNvUh6bmytnVU53hgmgVNMUjG48Gq80IsOREWIlsHzGctRfrkf/SH8M78CP2+vGmc4zWJTnD6BYhsWy6cvirnRJkoTGK40oLShFTmoOFuYtNFUHFXUAxTBMFoBlAF70LcAjSVJPtK83XpHipEDJNVDyv2kKT8Z0ACXKwSerEeDES4HixciMNAG/4WC0eHh/AGXUSTioGrg6gYxTiaIOSRT9QTyBY9nwXXiqYCDL5UCv2ztqQU2wk7dsY5A8aq3fxiD0czZrYxDgAxVHt32zDHuFiD2nGIbBjNw0NEdgZeARRPCipChQZmbhqQOo8VgDdfTqUcybOA9Om1N5bHbObLAMizOdZwz3DRjlYhCwN15pRElBSYi/1N3T74YgCTjQdiDGdyFz4toJiJIYoECR45DZePGifaAd14auKarasunLsP/ifvCi8bUhFgVqJoBrAP6HYZgjDMNsYRgmLYbXG3dIkuQrIg9UoKLxpRFV9SdWSOF1D3pwfWAkYccH5BQewzBhO0bUs9GCSXPa4tKhxBscIxilCy9GBcoriMhOlRUlIy8rorClOWzK9tEEULoKlM5FS7MLL9UOSQL6TKhQw14BT75yBG095guLg9VG8v/JIkL5FahgGwNzRpqiKIEXJY0uvLFN4UVSQE6YMTENzdfNK1D+77WqCy/MZ6QOmqw8TDhaSAeeGgfnwMzsmWEVKFE1AolltFPzoiTiw44PUZpfGvLcwny57urU9VNRrj4QdQeemtGogzrSfgQAAgKoQe+g8rgesQRQNgBlAP5bkqRbAQwCqA7eiGGYLzMMU88wTD1p979RIPGNokDFMMMuwMaAvH6sC4yB7iEPugZH188nHJIkfxbhHN7Vuf1gXA4uLrPCeFGMwMaAFJHHWgMlKgN6zShQaU5OUayiMdOMvAYq1BRSKXo3cUE/09GP1z+8jPrmLvNr9AUg6lEu6rVYHeUzC0rhcSY9jkiAQAIoYiUwMMZF5NG4nudlOCM6p/iVVfM+UCPe8ZvC6xvpQ0tvi1JArmZu7lxTCpTaB0rrRv9C9wUMeAZQUlAS8lx+Wj4yHBlhj2OWox1H4bK7QkbYLMpfhBRbCo5cMQ5uIoF04JFg7a5pdwFA2FqrWAKoVgCtkiQRve41yAFVAJIkvSBJUoUkSRWTJk2K4XDJB/kCMkoXHnk8steRJCkghRdLKjBeSFJ0Slq8YRhfEbnBWtQnhmDipkBpqDN6xKMLT5KkgCJyYwXKF0A5bMr20dQhqX1iCEYjRpRRLqrPJcVhPngkKtlIBEqBPwAJ7HxNkvhJt4hcdtk2bxJJCvdZloHLwcXFbd8sw17B9Bw8NWkODoMe3vQN5qBKWQX8n5HR/h7B/5sbb114x68eBwDNAGpe7jyc6TwDUdL/IYjBo1w0Ph8SaKgLyAkMw5gK1MzyYceHWJC3ABwb+F3iWA6zJ8zG2a6zcTkOADR2NGL2hNnIdGYCAAozClGcUxy2kDzqAEqSpCsALjEMM8/3UCWAE9G+ntXo6upCVVUViouLUVVVhe5ufZfcvr4+TJkyBV/72tcCHidfP3/tUnQKlCTJ6Sp/EXniR7mIvqAukUi+9KiZGqjgCz/B5TtpxwqvKsAMR2ocFChy8k9zcHBwbBgFSn7OpVKgeqNI4Wm5rZvxgbKrurFSbObH2JAgL5JUC0nh+RWowMetjl4KT76gmRlTIn+uTpUC5HLY4uK2b5ZoU3gupw2S5Dd+DYe6tg/wp4qNAiMSYDLM+FOg9FJegKxADXmHcLn/su7+vCgGBFBa59TGK43gGA63TNJ2Np+bOzdsqtAM6hEuWhTnFsc3gPIVkKu5e/rdqLtYZ7hfrF14Xwfwa4ZhjgIoBfAvMb6eZaipqUFlZSWamppQWVmJmpoa3W2ffvppLFu2LORx8gVkY1SgxKCLghWKyEULKFCSRBQoY4VBMFCH0hy2+HThRWCk6YwgiNDDq0rVpDm5MF14PGwsAwfHIt1pA8cy6HFHmcKLoAvPG6QGAepByiYCKF+aMRIFKnhsDykmNzsGJdEoClRQMG7aJNL3WTlVadNw34944/YKAQGcWUgtk9mC96EgBYqkio3SteTzSXPYxl0R+bGOY8h0ZmJa1rSQ5+ZNlHUOIysD9Y2mTac55MiVI5g3cR5S7amarzEvdx5aelpMmVAa0T7Qjk53p2YwCABzJszBue5zhoqaWfpH+nG262xIALVs+jL0DPcY7htTACVJUqMvPbdIkqRHJUnSl2kszKZNmzB37lwsXboUa9euxebNm7F9+3asW7cOALBu3Tps27ZNc9+GhgZ0dHTg/vvvD3mOxBdMkAIVaeARHIhZIYAiBfKJLGSX4KuBMqNA6XTIuZxxqoESpJC0ix4sy8BhY2MqIvcXaLOywmDoAyXA5eCUodjZqXZ0R1lEzoXU5hh04fGBw4SByOq/SAovIgUqyPOL/EmSR4HS7sIzO+eNfFYOleoX7vsRb0ai6MIDoHTTmQ32/A77xMbAvAKV5uTGnQJ17OoxLMhboGkfQawMjNJrgug/h7EaN0a8yKPuYh2WTl2q+xpzc+dCgoRzXeeieQsKRmoaAMzJmYNhfhhtfW0xHUd9rFsLbg14fNn0UFEkGEsNE96wc4OSY40XpQWlhkOKGxoasHXrVjQ2NoLneZSVlaG8vBwdHR0oLCwEABQUFKCjoyNkX1EU8Y1vfAMvv/wydu/eHfq8jgIV6bmcfI+VVKAlUnjk//XTY6ONrEAxSg2UpBrcTBBFOdDTrYHy2Rho7RsJkdRAAXIqaySGFJ5HFUCZUaDIuAuAmFlGk8ILVdkMfaA06nn8cwDNKFAxBFBBA4+TxQuKD1LQCDaTNVDBReSArOyMdRdefgQmmoS0CC0XyHsijQkkUDdKdSoKlDM+yrNVICmvtQvWaj5flFEEl91lmF4LHiYc/Jupv1yPvpE+wyG7as8pMwOM9fjwimzWSTr7ginOLQYAnO06i6lZU6M+DqBf1zU9ezqmZU3DReiPjbnhR7nU1dVh9erVcLlcyMzMxMqVK0O2IXfuwTz33HN46KGHMGXKFM3XDg58lILWCAMf8kW2UgqPKE8JLWSHpBSRy2sJXUzwBTUYl5ODKEWWJtKCF8x34QGyEhNbCk9+Xw6fAmU0z48oUAR5nEoUKTwJIV5aRjVQyigXNlSBMlPnQtaoLvwNR3DQpqTwkiWAUhSooBSeyWHCIxou4C7nGNdARdmFlxah6ScJtEgNlM1EDRQJoDKctnGlQLX2taJ3pFc34DBT4B08yiX4N7P7vCwSEKduLcwoXWZ479J7mJs7FzmpOZrPz8mZAwBo6mqK6TiAnJac6JqIyRmTQ577p2X/ZLivpRQoI6VorMnPz0d7ezsKCwvR3t6OvLy8kG3ef/991NXV4bnnnsPAwAA8Hg/S09OVeikSZDBBqbdoa6DUPlAMmMTWQJH/FyUg8nNlXFDbGADy5xq8FN7AhRzw108MjvBRnfSV40SqQMUaQJH0mI3xKVDGNgYBClSqHVf6Iq9R0FegtC9EvCrII/gHKYe/eBGVLBKlTgxO4SVbEbneKBeWjcrGAADSnRzaI/DSihXZSDOKInLyWzQZ7JFAS92FBxgXh5PPJ805vmqgyAgXrQ48wrzceTh0WX++m1qB4pjQgH3PhT0oLSjFRNdE3dfIcGagML0wpgCKF3m82/IuPnXLp3S3mZI5BU7OGZdCclJAriWSfLHsi1iP9br73vAK1LJly7Bt2za43W709/djx44dAICVK1eitrYWAFBbW4tVq1aF7PvrX/8aFy9eRHNzMzZv3ozHH388oNg8JPXmSzdFWjcU/DryayUuhSepap8SWUguwVdETswSNSJTvUHCBKLMxGplwIvma6AAOZUVWxdecA2UsZGmWoHKctmjM9LUMAs18ifSctWOKIVHuvAiuNDxQYqj38YgyQKokBSeOQXKE2RjAMiBSTysOswy7BWVTtNIICk8s5YLRIEixyJdeEapTtK8kDbOFChSx6OnQAGyOtTc04wRXtsAWV0DxXEM1B/PkHcIf770Z1TOrAy7llitDBqvNKJvpM9Q6WIZFrNzZsesQHkFL45fPa5pDGqGGz6AKisrw5o1a1BSUoIVK1Zg8eLFAIDq6mrs2rULxcXF2L17N6qrZY/Q+vp6rF+vH5GqCVag5H/H0IUX9DqJil3U609kc5P8+TJhUnja0+0JkRg7Gq1D0CiwNiLFzsVURB5QA+UwoUA51AqUI6pZeFr1bkYjHzxCqJrijMADi3ThxVJETo6dLCk8fxehRgovyiLytDhZdZglmlEugEoNjkCBcjk4//gR1nwNVLrTNq58oI5dPYapmVORnZKtu8283HkQJRHnurULvAXVvFV5hqT/c3zv4nvwCB7D+idCrFYGb194G4BsI2DEnJw5MStQpztPY0QY0fS1MsMNH0ABwMaNG3HmzBm89957mDtXzuHm5uZiz549aGpqwu7du5GTI+diKyoqsGXLlpDXeOKJJ/CTn/wk4DGtwIdlGEgRnszJ3bO6/kRO4SXmBKAOVBJ5Z08UKH+nVeg2wbPRgiEuxrF0KZE7XntEReRxrIFy2sIOE3YFFZEPjPAR34FrqWx67c6A/0JmD6iBkv9tpuYsHl145LdnpgDbCvjrxjS68MKYRAIqHyiVkaVrDAumJUmSZ/FF1YVH1GCzXXiCkvYDzPlAqQMoQZSSJrAOx7GOY4bqExC+Pklt9xJcA7Xn/B7YWbvi0G3EvNx5uD50HV1u8xME1Oxr2YebJt6EwoxCw+3mTJiDc12xWRl80PoBAKB8cnlU+9MAahTRS71F+ue2mgKlPoknNIUn+W0MAO1gjg+TwkuL8KSthaIaRFBE7oxjCi/NwYWxMeCV9wkg6oHCaqdigmEXnoYC5eBYMEx4BUqSJCWFF5kTeXANVHTWIYlCHnwdWqxPvlvhLvgjOgqURxDHZPYbOX40NVBpEd7MDI3wStoPUClQBqnOEVUXHjA+zDQHPAM4ce1ESBt+MEqHnI4XFC+ohgkHB1AX9uD2KbcjzRF+3C05TlNn5Ok1XuRR11KH5dOXh922OLcYbt5taA4ajr0X9qIgvQDzcueF31gDGkAF8cwzz+Cpp56Ky2tppfDiWwOVGNTn8MR34YVL4ZFttF9DKVyN4Q5dTzUwIm5F5BwDl8MGt1fQvbgOeYSAIvIslzxQuDfCTjx1lw7BsAtPDPWBYhjGlPo2MMIr7yeSAEpUmgbkY5L1JovS4NVxtLeZqO8BVEaaQT5QwNgMFCZ/12hGuThtLFjG/DoHRoIUKFv4InLyXcpIGT8B1P6L+yFIQljfoqyULOSn5esqUOphwurfdZe7C4fbD5tK3wGBVgaRcrj9MPo9/Yb1TwTSiRdtGk+SJLzd/DbunXlv1BY2NIAaRbQCn3CDb7WQ70oDrRQSmcKTrJLCU7rwSAAVug3pLNH7gSiFq3FRoMYugFJqoHxO5IC2NYAkSb4aKJWNQWp0CpSmEzmnP2JEGeUSpMyZKaBXry2iInJlmLD830nnAyWImt8jcmELG0Bp+UARf6UxKCQnf9doaqAYhkFaGEsONUNB32uSQjeTwiPpwvFQB/VOyzvgGA53TL0j7LbzJs7TDWzURrnqUS5vX3gbEiRTBeQAMGvCLHAMF1Uh+b7mfQDC1z8BQHGO7AUVjdIFAKeun8KVgSu4Z0b4YE0PGkCNIqLPnDGwiNzYNVvvddigAMA6ClRCJShllAug34VnM7i7iLR1WguvzvwyI1Jssabw/DVQin+OxoVn2CtCkhBSAwXEJ4DiWNYghSfKNWpB+5gJHtVF7iMRBJrBRdhJF0DpDL62mRxJo+kD5dD/fsQbRYGKIoUHyJ5OZuu1BoNq+5RRLkYBlCDCwbFKjdh4UKDeaXkHi4sWI92RHnbbuTn6HXLy71v+t02lQO25sAfpjnQsKVpiaj12zo5ZE2ZFFUC93fw25k+aj/z0/LDbTsmcAgfniFqBertZLla/d+a9Ue0P0ABqVJGk0A842hResKrPwBo1UIn015F78Bh/DZROCk+v/glQux+PbQ1UrF14gTVQ+kHgoOKVo1ag5BReT4SdeHqz8PRUEY8gBRSQE+T3bk6BSrGzESlQ5PuoFJGTACpJaqB4UQxR7ACVSWQYK4OEK1A8CaCi81QjkwHMMBRU22fmM/LwIhw2Vik4H4u6sNFkyDuEQ22HTCk2gKxAXRu6hm53d8hzchG5/L1hWdlnUBQl7D6/G3dPvxt2zm56XdFYGXgFL967+J6p+icA4FgOsybMwtnu6AKovRf2YlrWNMzMnhnV/gANoEYVokCpYRCFjYGopUBFrmTFC8vUQEl+J3KGYTQvknp39IQUGweGie3unAQzRscJJtURaxeeugZKPwgkd/PqWpEsRYGKvAYqWGXTcixWttdJR5lRoIgLeV5GSoRdeIF/C1uSKVB6Ab/NpKO6ng8UMFYKVPRF5IBPgTJtYxBY22dnwytQI7wAh41VAsxkV6Dev/Q+vKLXdABl1IkXPMoFAJp7LqKpq0kzfSdJEu7/1f145dgrmsc503kmog65hvYGDHgGTNU/EYpziqNK4YmSGHP9E0ADKF26urpQVVWF4uJiVFVVobs7NGJ/++23UVpaqvwvJSUlYOiwJCGkeJmNMoUXXLyb2BSeRWqg4Hd316stC6dAsSwDl52L6e5csTGIpAbKl8KLto7Nw6sUKKV7KfQCSepJ1N1KGU4bWCa6FF5Id5jBiBE9d3a5Bsr48ybDjvMynBEFUHxQOjUZi8i17DD8g3LDKFC8CJYJVEMj9VeKBbcn+iJywKdAmTXS9OgoUGF8oJw2VuVanhzfCz32Ne8Dy7C4c9qdprY3KvBWnytZloGAXnz/3e8BACpnhQZQ57vPY9f5Xfjnd/855Ll5ufPg5t0RDfs1qn/iRR68GPq9IF5QkZ5Hj3UcQ5e7K6b6J4AGULrU1NSgsrISTU1NqKysDHAYJ9xzzz1obGxEY2Mj9u7dC5fLhfvvv195XkuBYqOwH5BTeKFKVuJSeL41JFAFI+sgnwrLMPo1UGGUobQwPkrh8KsekdgYyCf+aGfwKTVQNtbQTX1ImVjvv1NnWSaqeXhan6WRAuUVtNNRKTYu7HiWXp86lpfpjKoLTxngbWBxYUUEUQKnVURu0hB0hBcCPKCA+DRKmIWk8KLxgQLIb9GsjUFgDZSpUS5KCm98KFDvtLyDssIyZDozTW1vVOBNAqhLvZfw23Ob0JbyBdR++D/4fOnnsSBvQcj2b5x9AwBw4voJ9A73BjwXzUy8t5vfxoK8BZiUNinkufk/nY8Fz4WuYU7OnKisDPZe2AsAMQdQlpqFlyg2bdqE2tpa5OXlYerUqSgvL8f27duxb98+AMC6deuwfPlyPPvss7qv8dprr2HFihVwuVzKY1oKFMNGoUCJUoi6wTL6M8hGG3+rOGMJGwNAVhqCP1dRlGT1zkQAFZuNQRRGmiSA8opR1YsE1EAZuKkT1UGtQAFyJ17ECpQU6rZuVAPFC5J2AGVn0TloHLz1DHnhcnBId9oiU6CCOiKVFF6S1EB5BVGzboxTFKjwKTx1/RMQub9SLIzEWkRu0jXdw4vwCGJgFx6xejBRRK7UQCVxAOX2unGg7QC+vuTrpvdxcA7MnDATu8/vRqYzE5f7L6Otvw0dAx1otp3HM/V9qD7QD5bh4BKWY+9X/h1LpizSfK03z72p/Hv76e14vORx5b/VSpeWehUMqX/6QukXQp4TREFWmSChx92D7NRs5TnSiXe26yyKMotMfQaAHKwV5xRjatZU0/toYakAasPODWi80hjX1ywtKDUcUtzQ0ICtW7eisbERPM+jrKwM5eXl6OjoQGGh7IRaUFCAjo4Ow+Ns3boVf/d3fxfwmFb3XHQKlDW78GystuozVgQoUBrBXHBBsR4uBxcXG4NIaqCUmXC8gCyYL84kePjQGiit7iVS96JWoAC5DirScS7qLh0Cx7K6nWFegxoodxiVocftRXaqHQ5bhEXkwU7kJtv/rYJ6Hpkau0kjTY8QGkBF6vAdC7HYGAByCs9MFx75/qi/10oXnpGRplf+fEiNmDeJi8gPtB2AR/Bg+YzlAY97BS82/3kzvlT+Jc3Bv2WFZXj1o1dxoO0AMhwZmJwxGQXpBbCLs1A2aToevuUW2IbvxE9292HOhJt0j6++Vr/U+FJAADU5YzLS7GmmFKhzXefw9NtPY8g7pFn/9N7F95S5r883PI/qpdXKc2ovqLtnmKsD40Ue77S8Yzis2CyWCqASQV1dHVavXq0oRytXrgzZJtiKIJj29nYcO3YMDzzwQMDjopYC5VNKJI30nh6CFFp7YoUuPKP0zZisA1AiKJYJTdOYDWzkuov4dMSZhdSIRFtI7tHswjNQoIICqOxUO64PRFhELoihM9o4IyNNPQUqfAdiz5AXWS4HHBwX3SgXlTIJJE8Kzytoz1T0K1DGn8UILwYUkAPxMYs1i9/GILoAyuU0p0Ap3aUqZdWUD5Tgq4GyJX8N1DvN74ABg6XTlgY+3vIOvr3323i/9X1s/9T2kOvML1b+At9b/j1MzpiMDGcGAPm3PWfjG3hszlx8fWkxfvVBC4Djuud3URLR3t+OvLQ89Az34IPWDwKuaQzDGHbiSZKEc93n8IP9P8AvGn8BG2vDt+74FlbNWxWy7fbT25V//99H/xcQQE3Nmgo7a49oqPCR9iPoG+mLyb6AYKkAykgpGmvy8/PR3t6OwsJCtLe3Iy8vT3fbV199FatXr4bdHqgkSJIENuhkSK7lkuQvgA6HXiAmJUiD8itQLLzC2A0pVSORINQXQbEME9K+bDaAcjk5dIdJKRkRnQJFAqhoa6D83VaMU37MsAYqOIXncuDstYGIjil/DyPswtMtIg9TA+X2IDvVDqedVea7mUFvlEuyFJELoqjZjGA36UQuz6ELPOdwLIMUOzsmA4X9TuTRpfDSHHINVLgbTK3aPr8PlLETuboGyiOMzYxAM3QP98BlT4XT5PbvtLyD0oLSkAHCZBjvjjM78Isjv8AXy74Y8HyaIw3zJgaOLiHfK/UoF0D/d3Py2kkIkoCS/BL0jfThQNsBHG4/HDBTbm7uXOy/tB+/Of4bNPc0o6W3BRd6LqC5pxnNPc0Y5ofh4Bz4asVX8Q9L/0F39t2fL/0ZAJDlzMLxq8cDnrOxNtnKIAIvKFL/FKzckef+1PQnbL5/s6nXuuGLyJctW4Zt27bB7Xajv78fO3bsACArUbW1tQCA2tparFoVGhkTXnnlFaxduzbkca3Ah4W+Z5EWRK0K6cJDYhUolmHAstoDfMcSpQtPo7ZMqYcxo0DFw0gzIidyXwovSgXK6wtOWJaBg2NhYxnN7iWiOqQ7g1J4UdRA8WJoSs6oC88rSJreWE4To1x6hrzIdtnh4Fh4Bcm0gkS2I+tMtgBKz3aDU2wMwnfhBStQQGTdbbFA/L1SHdErUIIohW0cGBgJre0zO0zYYeNUPlDW+F70j/Tjo2sf4WjHsZCCbC1G+BG83/q+ZscaMYi0sTY8ufNJnO8+H/b11HWtgF+51fttE1WoclYlPrfocwCAF4+8GLDNgrwFaO1rxad++ylU76nGbz76Da4OXsUtk27BXy/+a/xkxU/Q9PUm/HjFjw0HB5/pPINUWyrumXEPPKIHdS11Ac/PyZkTkQK1t3kvbpl0i6ZZ59ff+Dp++P4Pcb4r/GcG0AAKZWVlWLNmDUpKSrBixQosXrwYAFBdXY1du3ahuLgYu3fvRnW1LBvW19dj/fr1yv7Nzc24dOkS7r479Ius6QOlUqDMQC4ImjVQCfrtixIU/6VEpUb8nYDy/7NMaDBnWoFycDF55AS7X5vBr0BFG0D502MMw+h2Lw15eLBMoDM1AExwOdA/zBverQej7UQu155pD3IW4dCpgQrXhdc95EW2y6HU85itg+KDU3hJVkTO65iPmklPAf42/WAi8VeKhVhm4QEqy4Uwv0et2j6lsy7MMGEHp6qBskgReYYzA/MnzseQdxCfePUT8AjGivjBtoMY5oc1635Od54Gy7BItaVihB/B537/OQii8d9edwi3zsdDVJzVN63GmgVrAAB/OPOHgG023L4Bb372TRz76jH0Vfeh81udaPhyA1577DVsvn8z/nrJX2Na1jTDdYmiiJ7hHkzPmo4vl38ZAPDcoecCtjFrZXC++zye3vs03ml+R7f77lzXOQDAzxp+ZvhaBEul8KJBkqQQQ7VI2bhxIzZu3AhAHiYMALm5udizZ0/IthUVFdiyZYvy3zNmzEBbm7bXhZ4PFBCJAuXbL9iJfAxSeIMjPFwOLiQIJEXtZF6Sltyut2+8IO9dncILrYEyZy+Q5jQ/f0sLcsKOSoEKc6fd0jmIVDuHvMyUgMc9fGCqJ83B6SpQaQ5byN+BjHPpdXuRm24uaSBoDBNWd7mxCHxOLiLX7sLzCKKuR5ckSXIKz2VXggGPYK5bMaSIPME+UIMjPC5cH8SCoixT2/NiaJ0ZYF5J0+rCA+TA5Ny1AWw7on2uSnfaUHlzXsy/12GvHKAE12yaRW3JkWuwnVZtnzIv0FCBEuC0W8PG4Gr/MIZGBMyYmAYAyEmdgHm5N2Hvhb34/PbP41erfwWW0T537Tq/CwBw17S7Ah53e93ocndhSuYUbK7ajE/99lP486U/44fv/xDfuvNbumsRdQIoPQXq+NXjsLE2FOcUg2EYFGUU4VLfJXS5u5CTmgMASHek4/7Z92vub5Z3L74LCRLKJ5fjwTkPwsbaFIWNUJxTjCHvEH754S/BsRwGPAMY5ochiAIESQAv8thzYQ/2XtgLBgwemPMAvnnnN0OOdbnvMkaEEQDA66dfx7NV+l33hKQPoPqGebR0DmJeQUaI/0mi0fOBAgCzP9vgoljCaCtQw14B564NYObENGSkBNd2ye9DeS8SoI4d3B4e564NYNbEdKSnjM5XLESB0gjmeFH+d7hzudyFF77uQg8t9+dwOE0Wkf/Vrw9jbn4G/mNNacDj3qBuK5eBAhVc/wQAE9LkcS7XBzymAihJkuS/s8YsPED+ngbHN15Bz0iTeGAJId2B8poFeAVJroHyvccRrwikhGwaQnAAlWgn8pc/aMEPd53B8Wce0AxsguFFCSn20M/MZvKCr/eZTs5Oxd5TV7HhN426+77+tTuxaEp22DUaMewVQmqwIsHIkkPNkEYRuXLRN/KBEkQ4OXUReeICqGffOI1TV/rwxyf9QVBBej7+5d7H8e2930ZRRhFq7qtRgihBFLD99Hb854H/xLst7+LOqXci1xUYZn545UMAQEl+CdYsWINd53fhxSMvYuPejfhqxVeVovFggssdFAVKczyWgKuDVzEta5pyvny4+GG8cPgFvPrRq/jLir+M5WMJ4PXTrwMAHpzzIBiGwU0Tb8Lxq8fRO9yLrBT5pmRh/kIAwBPbn9B9nZnZM/H9e76PdSXrdK0Ltp3epvy7qasJvMjDxhpfv5I+gCI/lnidIIkCFSukyFlrBAt53gykyDH45MuAGdUAinyeWkWrJDBUq2mcSn0gaYbR9KkiqyJH5TSCOVIPEi4oSnPawIuSr0Mn8iCc2AFkpZq3IzCbwuvoG8akjNAAJ9ikMk3HP2fQI4R04AHAtBy565TcfIRDCDrBEpS7fq0UniBqXsxJgfGwV4TLEXosMqOPqGSA+RRecACV6BqoK33D8PAihjw8HDaNNxsErxN0mg0EPYKIbI1A7bnPlKG9d1hzn9NX+vCXLx/Gtf6RsOsLx5CH1/y+mcU/lsj4dzGo1ED5j8UwDOwcA6/BZxQyCy+BRZy9bo9mHWL10mpc6ruEH/z5B/jh+z/EJNck5Kfno9vdjUt9lzA9azp+UPUDrC9bH7Iv8WYiKaofr/gx3jz3Jlr7WnG046iuYzn5XgUXkWv9rhsuN0CChFsLb1Ue+1LZl/DC4Rfwq6O/imsAtf/ifgDAynlyd/zqm1bj+NXj+Fn9z/CtpbKidte0u9D4lUZIkJBmT0O6Ix0pthTYWBs4lgPHcHBwjrDXgTfPyp/dkqIlONh2EG+dewsPFT9kuE/yB1C+P7DVShwk3/9CU3jy/5uNLUgxZUgAxchprGhVk3CQOw+t2haSwgtweVbFHeRvMpr3dmo3dACawdyITj1IMGkqH6WoAqih0At+OMwUkUuShJ4hr+Y23iCTSpdOkfDgiLYCNTNXThu0dA6ZWm9wlw5BCVA0LkS8jqdRuOCRzOjLSnXA7ZXfk1krA/+dtH8oKmA+ZR5vyHdj0CMg2xVmY+inPW0mCqQB/SLyFDuHmb5UUTDkTxppU4EWgx4hxLQ1EkizQzjPKn8XXuCxbCxr6O1EuvCs4AM1wouavwGGYfBfK/4LS4qW4GzXWVwdvIqOwQ7MyJ6BHz34I6yct1JXGXm35V0AwAOzZUsdl92FDbdtwFO7nsLe5r1hAygSOLEG6dDfnfodAODB2Q8qj5VPLkeqLRX1l+shSqJu6jFSmrqa4LK7FKf1ry35Gr7/7vfx6olXlQCKYRiUFJTEfKzGK41gwOC7y7+LFb9egRcPvzj+AyhBCaCsFUGR9YQWkftO6Cbrlzy8XBMRXMejLkYfjTIjEjdp3cyRY+rVc5G/yWhetPw1UDLBwZwkSfDwYkj3mRYuVdqApLYiocftAccypo5FMGNjMOgRwIuS5jYeIagGysnhck/oBVCuRQtdV5bLjmyXHc2dg6bWq6tAKe31oWuUU3jaF3NAP4BSB6TioHxcswGUMsrFd1i/cmNq97hD1DSzHXB6o4dMG2nq1EAZkZ0qf+d7IjRW1WJohI+pHtWsZ9WgxpBsQO7EM7J6CJ2FZ70ACgA4lsMTpU9E/Jonrp8Ay7C4edLNymOkXb++rV53P79yK38uNoMbD9IFt/qm1cpjDMPgtqLbsK9lHw62HcTtU26PeO2haxLQM9wTYLmQl5aH3NRcHLt6LObXVyNKItr625Cfno+qWVXgGA7vXnw37H5J34UnjIHaEQ1K8beOAmU24BvROSGS4unRKiQn69P6AYnwKVCqtJkaYQxUwdAuvMAfPO8b42JOgSJ3vdF1KXUPya7ZkSiBqSZSeESJ0VSgeDFEgdK6ax/yCAHjLtRMz00zrUDpubobpch4QYTDpqVA+VN4WqhTeEQpMOsF5R8m7FOglCLyxJwhyN/QbAAlq3b6ReRGLtuAedVVTUaKDQzjnz8YC4MjQogqFAlm5/YNeXik2NmQ76OdY5NmFp6HF8M2kUQCqU3KT8sHx/r/BvMnzQcAnLp+SndffxcefP+vn8I71XkKKbYU5KUHeiOSbrzfnfxd9G9CxbstcgF5RWFFwONLpy2FR/DgvYvvxeU4gPzZCJKABZMWgGM53DTxJlwfuo7rg9cN9xs3AZTFBKjwCpTJ9eq1JUdqhxApigKlsVB/EXkiFSgZRYEKCub0Up9akBRXtD45vUNeZEWQvgPMKVAkpaKdwgsMrNOcnKaX1aCHDxi4qmZmrgsXrptUoATtAMqoVsKr4VwO+AfN6rmRk/c9QW1jYPJCQwI9ssxE10CRYNBscC534WkoUCwxiYy/AsWyjOwLFgcFajDmGiiiBodRoHSOY+MY3c9IECXwogQHx1miBsrDy52o8QriznSegSiJIYN/U+2pSLOn4fKA/sDdYAVK73fjFbzocndhetb0kNd4aI6c7mq43BD9m1BBvKYenPNgwONfLpPtDP67/r/jchwA2HZqGwCgcqY8t484ov9P4/8Y7jeOAqj4/hC6urpQVVWF4uJiVFVVobu7O2SblpYWlJWVobS0FLfccguef/555bn6hgb8v/vuQMWim/Hkk08q6+vp7sZXPr0aFYvmB7yuJEl48sknMWfOHCxatAiHDx+G6Ptx/f7V/0VxcTGKi4sVc0+GAU4cbURpSQnmzJkTcAy9tWsdg1BbWxtwDBL8HDlyGAsXLgw4hihJ6O3pxsqHH8TH7yrHyoceDDjGP/79N/DI0jIs/9hiw2MQGhoaQo4R7n18Y8Pf4JGlZbjztnIcPnw4IJjr6+vD3Fkz8C//+M0xUaB63B5M0KqGNoBj5YJXo5EmpDhdK8jSqoHS8rIaGjFWoC73uk2pO3qmpOouPK01atVAhVPfupUaKHvkAZQogmP9o5dI92qirpNKDZRZBUqniJwzSJWqiSaAAuRgNR41UEMeQTdgN4OiQIX1gRI0a/tsLKvrA+VR3VQxDOMzaU2gAuU7tjtKL7hg/tT0JwDAsunLQp4ryihS2vu1CBmBpBNA7WveB0AutA5matZUsAyLs93mXcGNeP/S+wD8BeSEB+c8CAZMXOfm7rkgWxatukkOnIjn1P+d+D/D/ZI+gFIKluN8gqypqUFlZSWamppQWVmJmpqakG0KCwvx/vvvo7GxEQcOHEBNTQ0uX5aj/Ce/9tf4zr/9J44cO4mmpibs3LkTALD5357FkjuX4UDjRwGv+8Ybb6CpqQlNTU144YUX8NWvfhUeQURvdzf+/dlNOHDgAA4ePIjvfve76O7uBgMG//ztb+C/n39e2Y8cQ2/tWscA5EDlu9/9buAxuroAAN/+xt/g5z//ecAxJAn47//8Ie69917sqGvAXcvvDTjG+XNnsaOuAf/2o58YH8MXEH31q18NOUa493H2rHyM//zJf+OrX/2qyvhNwtNPP43b7rgTDBhT8+n8nT/RKVA9vhRepKSEceRWFCiNACekBsrBYcgrhCiGgx7tGigAmDHRBUkCLnW5w67VX1sUQReeKGqaQio2BjrqW6/bixQ7ixQ757cxiMBIU62SkcAjESk8SZKiUKB0hgmbHIo8ojFM2AxxU6BGeN2A3QwpNg4ME70CZTdQoEgARb5Tdo5JcBG5/B6jNdMNhvgjfXzux0OeI3VEJ66d0Nw31P5D+8Zo+ylZFXqk+JGQ12AYBhNSJqBjoCOa5YdACsiDrRdYlkWaIw2X+/QVtUg5fvU4OIZTPqfp2dOR6czE0Y6jhvslfQAVDwVq06ZNmDt3LpYuXYq1a9di8+bN2L59O9atWwcAWLduHbZt2xayn8PhgNMpt5iPjIxA9J2k29vb0dfXj0Vli8GyDB5//HFl/x07XsfKT66FKEkBr7t9+3Y8/vjjYBgGt99+O3p6etByqQ1/fmcPKivvQ05ODiZMmICqqirs3LkTV6+0Y3CgH4tvux0ME3gMvbVrHaO9vR1vvvkmqqqqAo6xZ/dbuNZxBf39fbj99sBjiJKEt974Ix5/XD7GY5/+TMAxHv2LT4FhGNxascTwGDt37vR9VqHHCPc+1n7ms3Lh4m23oaenBx1X2gEADYcPo6OjA3fefS9YNjSFqkWaM0YFKooUHiCnsoxSeN1GNVBBNgYupw2SFBhsEZNZveL26UonXvg0nr4CpR+g8DoKFKmB0rvz7hnyKIXNDrUPlAnEILNPRYFKwHWyf4RXzk9m59BpDWwG1B5H+uc50jgRTSdptsuu1GvFwpBH24fKLCzLwGUPPxlAPo6GAmWgKo0EWcLYbQlWoHzBm9nvdjiOXT0GlmFDUngAsHiyPGHjneZ3NPcNbhIhp5bgAOrPrfJcukfmhgZQgBx4jAgjGPBENmczGF7g0T3crZkqBIDC9EL0efpiOgZhhB/BtcFrmJwxOaB78Lai2xRjTT0s1YW3YeeGiGU5ohqoCwPVlBaUGg4pbmhowNatW9HY2Aie51FWVoby8nJ0dHSgsFCez1NQUICODu2o+tKlS3j44Ydx9uxZ/OAHP8DkyZNRX1+PoqIiAHKd0JQpUxS38o6ODkzKL4AkBb5uW1sbpk71G3xNmTIFFy9dwtUr7Zg+fVrA421tbShsv4z8wslKLVDwMbTWrnWMtrY2zcfbL19GVn47CgqLQrYXJeD61asomjwZ3Zd7MWlSfsAxlj0k7yOJkuExyONTpkwJeTzc+ygq8u3j+3zbL19GSuEcPP0P38JvXvlfvPzbP4SYj+pB7pijdSPvdXuVC34kpNhZjBjcfapTeMF2FV4hsF1dMSAc8V/ARnw1FlqpDsBvZdBsopBcDKqRIISrgdL6TaaEMRElc/AABDiRm4EP6mIjy02EjUGvKiU2FKarjKCnQJkx0iSfUaRF5ACQnWrH+Wvm6uH0kCRJVoZisDEA5JuBcAHnwAiveWNg981O1MITVBdp59iE10AB8VOg2vvbMdE1MaCAnEA68T5o+0BzX16Z2kACKG0F6vT108hwZMDl0PbkWJi3EIfbD+OD1g9w36z7onofgN+OobywXPN5Mv+upacF07O1gyyzHGo7FOJrBQDrStYpju96JLUCFY+vfl1dHVavXg2Xy4XMzEysXLkyZBuGYXSVjKlTp+Lo0aM4e/YsamtrlYs8WZuWCzbDMIoZpZFC4hEksCwTYsbpexX5OGEuDOGOoYfRy0qSBDByHRYDBhIClR7FQyrio+qj9z78ReQMfvPLLaisegBFRUXgfbUwZnCZ9J7RwiuIGBjhI/KAIqTYOcMaKLUiEDxc1ctLIUaaQOB7GNIYd6Em22VHZooNzSYKyYO7dAhGyohcp2XkA6XfhUdMSR2cvK35GihJSdsB/lREuOLr0UBdU2RegYreSDMaR3xCtssRswIlB/qh1gKRIo8lMg4qhnS6/WQbAx0FKiiFl/AaKCWAin0NrX2t8Ipe3JR7k+bzpQWlAPRTeOScrQRQTOiN0bGOYxjih7C4aLHuOoh9AamVipbXz/gdyLUoKywDAOw+vzum4wQca3bgsT5x8yeUbnc9LKVAGSlFWnh4Aaeu9AMA8jNTkJ9pYtaDSfLz89He3o7CwkK0t7cjLy/PcPvJkydjwYIFqKurw5133onLba0A5At/a2urokjl5+ej8+oV5KZNC3jdoqIiXLp0SXm91tZW5OYVYPLkIpw68kHA48uXL0dR0WR0tF9WAp3gY2itXesYRUVFKCoqwr59+wIeX7j4Y8grKER7e1vA45MnTwYATJqUhytXroBlXQHHmDx5Mi63tqKkQg60jI4hv48itLa2hqwp3Ptobb2EgnmlYBh5nylTinC0oR6N9e/jl7/4OXr7+sHzXuTnZmvWr6lx2c25H2vRE4WJJiHFzprqwgNkmV89C84riMo4CkDbP2dwRNtskMAwDGZMTDPlBaU3V9DG6V/YeVF/Fh5g7AM1Y6J8h0vGgkQUQKkCbRKLJGKYcI/bH5CYTQ8LOjYGfr8tEwFUlDVQfcO87nxCMwxqjFeJBj1LjuBjaflN2dgIa6AS7AMF6HejRsIfz/wRgNzir0WGMwMpthRc6r2k+bzf/kO/iPy/Dv4XAODzpZ/XXQfpYou1E4+kGrXquQC5UH5T3Sa8f+l9fLHsizEdK9h8lJBqT8XSaUtRhzrdfZNagVL/caM9Py5btgzbtm2D2+1Gf38/duzYAQBYuXKl0ilWW1uLVatWhezb2toKt1suwO3u7sZ7772HefPmobCwEOkZmTh6+BAYSPjlL3+p7L9y5Ups/79XIEpSwOuuXLkSv/zlLyFJEj744ANkZWUhKzcP91VV4a233kJ3dze6u7vx1ltv4YEHHkBhYSHS0jNw4MAHkKTQY2itXesYhYWFeOCBB0KOcfc992FSfgHS0zPwwQf+Y3z847JC9+BDj6C2thYsw+DV/31ZOcYjj3wcO367FZIkoeHQQcNjkPeRmZkZcAwz7+OVX78MSZJw6MABZGVlYfLkyfi3n/4ch46dwUenz+Lv/vH7WPvpz4YNngBf3YWDi0qB6nX7O8YiJWwRuaqoN/gkq2WkCegoUAZdUWa9oMh1JjgtSgKq4Au7JEmyAmUwC0/XxsCtqoGK0AcqOAAgsxC17DhGmwAFymR62KtjY2BGSQtWWCKB3AD0xVBIPqRjbhkpaU4TCpTOiCKjGiitFF6iAijRZ6kAxCeFR5SY4I41NQXpBegb6QMvhn4XQ0a5aNwY7Ty7EwwYPDb/Md1jzM6ZDQYMznSdifxN+JAkCSeun0BOag4yUzI1tyFDlI9fOx71cQinrp+CnbVj5oSZIc+984R2zRjBUgpUpAQEUFEm9MrKyrBmzRqUlJQgLy8PixfL8mR1dTUee+wxvPjii5g+fTpeffVVAEB9fT2ef/55bNmyBSdPnsQ3vvENMAwDSZLw1FNPYeFCebDhv/37f+Ivv/RFfOdvPVixYgVWrFihvO4jj34Cd/3mZcyeOUN53Yceegh/+tOfMGfOHLhcLrz44i/gFUTkT5qIp59+WlnXP/3TPyEnJweDIzw2btqMr331KxgZHg45htbag4/xP/8je1zk5OSEHCMzewJ63V7847/8EOvXr4fb7caKFStw/4MrcLqjH3/zjafwl5//HJ5/4eeYMnUaXv/9bwEA9z+4Av/72+14ZGkZXGku/PqXtbrHyMmRp3Y/99xzeOKJJ5RjmHkfv399Bx5ZWoasjHS89JL8PliGgShKyoUkkjtpl8MWtvNHC78CFU0NlHHQpq6hCT7JBtdAkYuWuo5rIIwCBcheUH88ejls+3twjQRBL7WkFKVqqCnkAq+lvkmSJBuTpvlSeBHbGISmwDiWSZACJf/9Uu2cqQBKFCVIEnSLyBnG2MYgFgWKBFA9bm9UbvyAX4FKj4MCFS6dqDeiyM4xuqouqREjaWE7x8LDJ6YGSl3TF48UXmOHPIakYnKF7jZzc+aiuacZ57rOBbh7A36FVhnloqTwiNWCG5f6LmH2hNmGMx1ZhkVWShau9F+J+r180PoBPIIHd07VHjsDyOqQk3Oipbcl6uMAQLe7G70jvSjOKdYuEQlT/pLUARQfBwUKADZu3IiNGzcC8A8Tzs3NxZ49e0K2raiowJYtWwAAVVVVOHpUu82x5NZy/G7P+7hlcmZA2iM3Nxe1//cHOO2s0gUFyH+on/70p8p/D3sFnOnoh9PG4gtf+AK+8IUvBLw+wwC3lNyKD+obkRmkfuitPfgYaoKPQepibl50K44f90f5pOh54sSJ2LNnD5qu9sPGssjJkd+LIAHf3rQZDIBUhw1z8tJ1j0GoqKgIOIaZ9/GD//gxnnx6CPPyMxRjRpaRL5QeXsCjj30GC4q07160SHOG7/zRwm/6GF0Kr2vQIIXn9sjqiRR6kg32gfIrUP5Ayz+x3liBEiWgtXsIsyal626nN8pFzyFb6drTqIFiGAZOm3YB/bBXhIcXQ7rwIgmgtOb1JcJIkzh7T85OMRWcE/8irc8M8KWnjFJ4QiwBlG+cy5AHgPbMvHD459PFdllJd9rQ1qNvrcELIkZ4UcfGgEX/sPbvmHS7WaELT13TGA8FqrWvFTmpOZoF5ISywjK8df4tvNvybkgAFTzrMniUy0uNLwHQT6mpmZo5FceuHsMIPwKnLXQQejiIQeYXbg29VqjJdeXi+pCxU3g46i7K6TnSpRgp4yaFl6hhoXqQ9WhHteF9q8LdTfpHuYwOZP3EONP/uPz/ZFWsryCeoFYeRtWJ3PfS6o+XZeX1kfE3kRTPR61AkbEjUXThOcMWkXsxMV0+AYUoUEGjXNKUGij/xcM/L0z/pEpqjcKl8YJ9Ygh6CpT/bl/7+5ti105fkrohoojYWDkFF20XHiCnHRMRQPUMeZHm4JDtcphKDwfXoQRjY1nwYcaUAFEWkftuwmIx0xwYISnjWBUo45uZIa/+99rGGnTh+WwM/EXkiauBUqekYw2gWnpaMMwP4+aJNxtuRzrx9l/aH/KcGHSDFNwc8vLRlwHIw3zDccukWwAAh9sPh9lSm70X9oJl2LDB2ozsGfAIHgx6ou8efeXYKwCAj88LHxhqMS4CKBvLxm2kyTPPPIOnnnoq5teRJAkMtDvogoMOLUbCnAz9o1xG58Kgvt6IGoGq2ulZ/bygUh5Gc8Cz1qgc8rlG48acFmUNFEk1ROMDlWLjMKwTtEmShJ4hLwqy5MaI4JOsRxBhV82ZczkMFCgDRWCGYmVgfBLSC6D0ZmaFCwb0CuiVlKjvgs4wDBw2NqQLUXedUqgCxSZIgeoe8iLb5YDLRFcZoO50jE6BIhdlpz3yAEZRoNzRd+INjcRHgUpzGt/MDCmBmp6RpvVroNSKaqzz8H7W8DMAwCfnf9JwO9I9pzWIN/i7xwUpUIevHEaGIwOzc2YH7PfkG09i74W9AY+RTrzgx83g9rrR1t+G2RNmG6ppABS/Kz1vKzMQB/J7Z94b1f5JH0CxDAOOZSw3C0+UAtURNQwTPuXo4QVwLKNZQ0JeAxi9WXiShuqkfpyc4+Wgxf88uVDZWTbu7vAB6/P9v/ojJsGc3vxAI1xOW9RdeCwDZEQxviLFzuqePN1eAR5BVDpL1dtJkgSPng+UKggkFyE9HygAyElzIMNpM61ABQdEimOxEBxAkXSUgQKlob6RAEodkDo41nwKT8MGwJaoFJ7bg6xUO9JMdJUB/s9Mzz3faM4bEP6my4h4KFCDYWwzzBKuoWPQo1/bZ+NY3SAzeD5mIn2g1N9nIy84M+w4Izc+GXXHAUBOag4cnAMXey6GPBfqRO6/MTp8+TCG+WElMCK09LTgvw7+F/7uzb8LeJx04h28fDDi91L7oVwzG+x0/rP6n+HnDT8PeOyOKXcA8KfhIuVi70VcG7qGaZnTkJdm3GWvhyUCqGiVCjK2gWGiLyIfLSRJ0vFvMq9AGTkK+1N4Y6BAaQRTRPmR02b+53nfv+1c+PcYC5JGBMUyDDyCCEGSDBUore9b1AqU7yIZrHqYIVUnjQX4L2SFPgXKrbojF3zFxuoLpdPGgmUCDRuJImB0QWMYBtMnhh8qHNylQ9CrgfKK/u+BFnodiKSrUZ0Sddg40wqUfE4I/NsnrIjcZwiaZjI411P5CByrHxwAsRWRZ8YhgFJqoGJM4aU5bfAKkm7QrChQWjVQrH5aLjjAtHNswka5BBaRRx9ASZKE09dPY5Jrkm7HmppJrknoGu4KOQcG3yCR37kgSvjJoZ8AAL54a6BdwG9Pyo1DRzuOosvdpTx+86SbwYDB6eunI34/JKWmThVKkoS/3/33+Ns3/zagg5AEakeuHIn4OADw2onXAESfvgMsEEClpKSgs7MzqiBKUAVQCRq2rosoaZtoAvLj4RUo4zTUWChQwYWE5HHA36XBaqTwOJYBO8qqIAkcWVUExbL+E4HeZydJEjo7O5GSEugZ5nJEr0BF04EH+OuAtL775EJGFCh1zQSp8VD7QDEMgzSHTVOBSg2T0pGtDIwDKL1RLnr+RIoCpdFRBphI4akUKKfNvAIlSlKI2Wfwd3Ss6HGTAMpccB4u6DRKTwGhPkeRwLEMMlNsivt9NAwaBDaR4NIwhQ04jkGgZjOoa1I+H5+3mMPGmK6tizfq8S2xDBN+7+J78IreAP8nr+DFD//8Q3QOdYZsPztnNkRJDPGD8gfv8mejrm1869xbYBkW/2/+/wvYh3hPSZCUGin5NTikO9LR1t+GSGlob0C6Ix2zcmYpj13qvYTekV4MegcDDDqnZE2Rhxd3RTe8mARrT5Q8EdX+gAW68KZMmYLW1lZcu3Yt4n2v9fvn1DAAhq9FXvE/WnQNeuAVREg9oeae3YMejPAixG5t409JknC5ZxgZKTYMdmjX1oiihI7eYYxcs+NqSvz/jO09brAsA68gQexyKHUVQx4eXYNeMD1O2DgWfW4v+od5sH2pAOT37eFFDDg49A3z4HyPx5v+YS963TxsfSmKGtYz5FVa98n6tEhJSQkYHwP4vGei8oHyRuUBBchBhCjJAZHDFnjRJLUoBZmhNVAenVRPmtMWokClObiw6tjM3DS8efyK7ugVwN/mrKdABafItII8NU4d9a1b6Wr0B6VOG2vaB0pLgQpXOzRa9Ax5kZXqMN2gQNKgwesn2DjjVGQsPlBA7G7kQx4eDOM3So0WpSHCIyBbY2LIoIGyaufY8EaaKhuDhNVAxcnG4OeH5bTWE6VPKI/tvbAXT+16CjvP7cTOz+wMqCUqLSjFuy3v4r1L7+HT2Z9WHldqoEhtq+93PegZQFt/G4pzimFjAz/vxiuNvkkUErYc3oInb3tSea4oswinrp8CL/Ih++lxpvMMBr2DWD59ecDjf2j6g/Lv5w49FzAiJsuZhSsDkVsmeAUvPuz4EKm2VJRNLgtYw5H2I1izYI2p10l4AGW32zFzZqiBlRn+5j/ewexJ6eh1e+HhRbz21dL4Li4G1tcewuWeYfzpb24Nee4ftx3DH4924Mg/3a+579mrA1j/y3fwH2tKcNvNUzS3cXsEPPxPO/EPK27CV26drblNLHzyn3bilslZONjchS2PV+C+m/MBAK8cvIh/eP0Y3v+He1GYlYr/3ncOz+48hZPfexCpDg7rfnEQPUMe3H9LAX7w5mmc+v6DAQ7a8eI/dp3Bf+5pwoV/fUgJoP79rdP48d5L4FgGp77/oG4woIXLYTM9r0yN3CkXvQIFyIaSwYoZ8YDyF5H7T7JepcMtMJhxBQWBgx5BGVNjxPRcF3hRwuUed4C1hhpBpyjcrmPwSNaoZaQJyO9dS+3ocXvgsLEBF2FHJAqURhcey469AiVJEnrdHmS77HDZOXh40TBABfw2BnoKlI1lFZVKi1hSeIBvoHCMClSawxbV6Cg1RFnS885Saq00faAMjDSDbB4SmsKLk43B281vg2VYPFz8sPLY70/9HoBsrvnP7/4zvrP8O8pzy6Ytw48P/BjvtbyHTy/0B1DKrEvOH0BJ4LH9/I8BhBp09gz3oGu4C8U5xbg+dB0fXfsI/SP9yHBmAABunngzTl0/heNXjytjZMLx04Oyxc5nFn4m4HGidAHArvO7AuaCTsmcgmNXj0EURbA6Nx5a7L+0H17Ri7um3RUwQPh773wP/3vsf3HPzHtM1UUlPIUXC6TGwGljEybF6jHsFZGq0z4u177or5d4MOldzAD/SXa07qCGeRE5PkM99UWZ/NjJQFhyEiPb9Ax5kOVyqOadxWdQZjC8z7FZfbImwcKUCakRBU+AbP7nEUTTF2pCj9sTdQrPafAZkQtZvoYC5dVToBy2kC68NAMLA8KMifL3zKgOSq9DjNMZ5aJ04en8HVLtrGYHYu+QF9mp9oC/qyOC3zcvihpu6WNfAzXkEeAVJExw2VWzFo1/C+quYi3kMSXhhwlHH0A5FAUwGoY8vKFlhlm0LDkCjkMUKL1RLnpF5ME+UBYpIo9WgfLwHrT1tWFW9qwAlUndlfbdd76Lt869pfw3Maf8sOPDwNcSeIgYwrXBdhxqO4Rv7tqASymfwu5W2fPwa4sD7QvIa9417S48XPwwREnEbz76jfL8kqIlAIA950N9/PT4U9OfwIDB46WPBzx+uP0wGDAozS/FgGcAhy4fUp6blyv7WR29qu3HqMeLR14EEKjcAcAfm/4ICRK2n9pu6nViDqAYhuEYhjnCMMwfwm8dP0ibd1aqQ25zjoObazwZ9gq6UjbpQNKr+yIt5TMMAihS+zUaJwCvIEIQJeT4lBX1iZ/82EmARE52RL3pccsXQP+8s9H5u3iF0Kn1JFgwCjz1IK3X7gi9oOTvYJQpPN+JXOu72+1LpWgqUDyplQn8fsnt8oE+UGZayqfnhveCCh42SlB366gJZwpp1IUXPFfQGcHvW2uWWyJ8oMjfLzvVoXwvw7mRk8BYv4g8jJFmDF14gNyJ1xtDCm/QIyA9im7UYLQsOYKPI2+nPcpFN4UnCLCxjPL5WsYHKspZeFuPb4UECVWzq5THREnE+Z7zSLOnYdm0ZQCANa+tQWufPG80Pz0fNtaG91vfR+a/ZsK1yQX79+z43JuzcCn1Mdy6ZTaWbFmC5+p/CokZRl7qTPxh7R8wY8KMgGOTAuxPzv8k/ua2vwHgt1MA/AXeB1oPmHovoiive0rmFDg4/w3pMD+MjsEOTM6YjL+s+EsAfqUK8BtgRmqZsOvcLjBgsOqmVcpjVwauoGe4B4DfODQc8VCg/gbAyTi8TkSQNu9slx0OG2c9BYoXFJUmmBQ7B0nSNwds6RxCZorN0N2aYZhRy+ETtSOXKFAjoQoUqbMIVaDkCyB576OlQHkFUUkfEcgJdUauRuFEGILfhxl4QUT/MB/VIGEAhipd75AXThuLdKcNNpYJOMkqNVBBSoPsn6MOoHhTpoaT0p1Ic3CGXlB6ReT+GqggJ3JSA6VXRK7Thaeeg0eIRIHSDKASYGOgtmPwK1DG3y0hbBG5sZFmLD5QQOwpvCGd8SqRolhyhFGgtNQuO8fAK4qaN6fBjTmJrIFS16sRG4NIv6EvH5MLt7+6+KvKY2c6z8AjeDB/0nz8ds1vMTljMnqHe/GJ33xCSX3dNPEmSJDQ7+mHm3eDl0I/5/tm3of8kRp8q/QNPDz34ZDnP2iVB9zfPeNulE8uR4YjA0faj2CYHwYAJW134vqJsO/jWMcxLP2fpRAlEZWzKkOOI0HC4smLsXbhWjBgAmqi7pl5DwDgUNshmKVjoAMdgx2YOWEmMp3+zkV1gfrByweV92JETLcLDMNMAfAwgE0A/i7M5nFFbbgXiU/MWDHsFXVrf9SzwLSsCpo7BzFjYlrYWgLHKOXwidpBUngBCpSvXocUE5OgZcgjT3LvG5a70kj6Mh6TxrXgBUkjgIhdgYrEyqDX7f8ORoM/gNLuRiOBWbDdgW4NlIMLLCL38KbSiwzDhB0qLAZ16RD0FCi/D1TkRppTcwIDYAfHos9t7u9ilQBK/d0gjQ3hujy9grbKRxgTBcrthagxDscMgx4+ZhNNwB9AGSlQDhurmaa3c7KpsiCGKtTBAZQjgaNcyN8qM9WOYa+IQc8gTrcfwSTXREw1+RoH2w4ixZaChXkLlcfeaHoDgKwATXRNxJ8+8ycsfmExDl0+hHPd5zAnZw5+suIn+GPTH5HhyECGMwMZjgw0NHvwu/o+vP5XKzA7pwi5rlzM/vafNDupR/gRtPW3oSC9AC67/Ft9YPYDeO3ka/jdyd/h0ws/DTtnR5o9TVG+JEnCkHcI3cPduD50HZ1DnTjXdQ6b39+Mpq4mAPKw43+5918CjvXbE7JVwsfnfRyZzkzcPOlmnLh2AievncTNk25GWaFcAH7yunkN53+P/S8AYNW8VQGP//6kXDuW6chEn6cPey/sxUPFDxm+VqwK1I8AfAvAmH8L1e3OTrt5p2I1p6/0Y9VP9wcMYI0Xw15BaZcNJlx9UEvnEKblhFdR7NzotOGSdaU5bXDa2ABVY8QrKqkneRuSnhDQP+yFJCHiFN7n/+cg3jjWrvnc7hMd+NyLB0LuKHmNqfXkxDtzYvQK1EAEheTKGJeobQx8n5FWKkulxDiDaub0aqDSnTZc6BxE6ffeQun33sKxtl7TYzVmTHSZUqC06osA/VEuerVoeqNcen0pYDV6ReRb6s7jmdc/CllnSBG5Cd+1SPjP3U34/h+M76zVQ6ZdSleZ8XkmnPWDg2Px/rlO5e9b/v1d2Hnc/7shn5GeghWOLJcDkgTdWXLhkIvI41EDZawGG9X26dlqAL4RT1ywAiWN6sQEPcjvIyvVjmGvAK/gRb+nH+e6z+NXH/4q7P4dAx3oHekNCJ4A4I2zcgBFUlOL8hfhrxb/FQB/PdLdM+7Gv1X9G56++2lsuH0Dvlj2RZROvB8p4gLcMmk+cl25AOTfutbneKDtAERJDJgfRzrw/vvQfyuPFWYUonekFxn/mgHuexzS/zUdU/9jKm792a2471f34St//AqauppQnFOMP6z9A9q/0Y7CjMKAY73b8i4AYMUcecA8sRx4rv45eY0sB5fdpQRqZnjluGxf8KWyLwU8/n7r+wCA79wtF93/4sgvwr5W1AEUwzCPALgqSVJDmO2+zDBMPcMw9dFYFehB2ryzUh1wcObbnNV8eKkHH17qQVu3/uDKaHF7BN2CSvK4Xr1Nz5BHmYFmxGhJ0OSzTLFzPhNA/4nM7REClDW1cqMOas2m8LyCiLdPX8OeU1c1n99z6irqmq6HBMjBw3QBYMnMHHz7oZuwdM4kM28zgMwU+aLdF0EKQ8s1OxKMAmm1ApViDxy8qxdAffb26Vj3sRlYVTIZq0om43O3T8cXl86CGSa4HIbvnaToOC64BsrXhadTRK53MXfaZXPM4ItX95BHowaK0/x97z97HW+fDvzeaA0TtnHxtTF443g7/nhUO+AnqGf6KYOewwTnxG0+1aF9Wv7re+fgM7dNU/6+bq+Ad5v8w1RHhMhnQKpR3MijHOcy6OFNdX2GQ0l56nxeRrV9JGWsdV708GLATS1Ro/Rm540migKVYsMwLyA7NRvzJ80HAKzbtg47Tu8w3P9n9XK90eqbVwc8TqwFiDID+IMpEoxoodUkwrHaNx6vfvQqAODReY8qj9057U6k2lJxoO0AvIJ8Hnlw9oMAgAHPgOLbl+HIQHFOMe6ZcQ++UPoF7P/Cfpz5+hnNNKEkSTjTdQYuu0sJrD5/q+y2/rsTv1O2y0vLU2qXjPAIHvzfR/+HI1eOIN2Rjpsm3qQ8N8wPo7WvFbmpucoxSMefEbF82+8EsJJhmIcApADIZBjmZUmSPqveSJKkFwC8AAAVFRVx+6aSNu8JafaIjPbUkDuc0ajTGfTwuoZyRnekkiRhyCOYUg7sHAsPH/8fv1IobmND0kLDfGAA5e+YEVSKjN2ww0wNken1jBzJ4yNBKVFeEEMkeqeNw5eXRWfpQC7akdSAENfsCdEqUDb9FF6v26sUdwcXXHt0isgXFGVhQVFWdGsJ0xlKrkf6NVChCqG8vb6RJiCrAupActgrhih6egrUoEcISYsJOgpUvFJ4kiShuXMQw14Rbo+g22mrBNfqFF4YBSrcLLm7507C3XP9NwcftvYG/G5GvJGPMFKj/AaGvJieG/n+Q3FSoIjxq6ECpXN+VBQojaBoRAhWoPydzNF2LkbLiCqF1+q7gZ/kmogFeQvAMCfw6G8exZ8+/Sc8MOeBgP0GPYN49cSr+PFB2V7gy2VfVp4b8Azg2tC1kELs24puAyA7hushaKSP5a7P0M+R1Ao9NNef3mIZFvfMvAd/avoT9lzYgwfnPIhnq57F6ptXY0LKBOSn52Oia2LAusJxqe8ShvlhlBX4g8GJromYlT0L53vO41LvJUzNmorZE2ajuacZLT0tyHBmYJgfhtvrhpt3w+11Y8AzgN+f+j1qP6xF30gfAODh4ocDbjQOtR2CBAllhWWYkDoBN028CaeunwrpVgwm6gBKkqR/APAPAMAwzHIATwUHT6OJcrH2deF5BDHAH8IM5OId7wBKECUMe0XdE6FyR6qhQHkEEbwomaolGK0cvmJVYOdC3K2Duwtdynvhlc6jrFSH6RQeqTm6cF27/obU5QzzArLgVya8GjPPYiHLly6LpAspePBtpPg/I20FqmSKQ9lO0wfKFr/3Lx9D/3dAFKjg8URKDVSID1T4US4A+T7J/+5VBeBq9IrIhzx8SM2aIGnXQMUrhXe1f0T5W7R0DeKmAu3xGb1uL1LtnPIbktdrfJ4h3WVmO9lm5LpwqLlb+W+PEGsAJX/fuqPsxItXDRTHMki1c4Y1UHrHIbYZXlFbgXKoak7JDUgi6qDIDUFWqh1nrw4oj0905eJ3j/0Oq3+zGg/970NYmLcQE1ImIDMl8/+3d91hclPX9zxJ07fPunu9u7YxtgEXbEzvIYYAoUMgQIBQQk1CIAkhhQR+QAohhBAINfQSQofQTAeDDe697a7Luu3szpaZ2SnS+/2heRpJI81IszPrXVvn+/jwShpJo5Ge7jv33HOxI7ID87fMh0jl63LQqIOUdBsAfL7xcwDArJGzNMfyuXwIuALY2JXdA4+B2XyoU/RyE27ttZGohLXta1HuLsfwsuGadZdMuwRvrX0LL618CcePPx5+l7/gJr0A8MYaWSx+dMPRmuXn7Xcebvv0Njy44EHcevStmD58OuY0zUHDPQ1591ntrcZpE0/Dnd+6U7P8lVWvAABOniC3dTl/v/Px6w9/jccWPZZzf7vcSLNQKGXCaR8oSmUa0k7+n6Wm+mKlbwQ2qJvNknJVmWT6PFlhoEpThqu2KvB7+CwbA0MGKiEqrKD6BZgvtcoYhLaeOHriKc3LozcporVTnp3p0535TAntorKAXmBGbUfsIFcKT53K0lesmaXw+gKvwCMlUdPralaFx6XtNLKq8BQbg3w6wMznMgGpjoHijTWO0biIaELUiJ7NROS5mvDagdorq7ktahpAdUQyv18+Y0gGpZecRRanoTaAVxe3KkFoQqfxsQt2voW0c7HDnFtBwMPnrMIzOw4zbjVKy8UNqvAA82roUiKRksAR+V2gn2SeMvEUPHX6U7jw5QuzGBAP78F39/oubjrsJhww6gDNuldXy95FRr3d6irrsKptFZJiEi4+e7wSJQpCtJ0GBAP/tFU7VyEhJjBz5MysfRw3VrZTWLB1Qa6vbhlvrpUNNE+ffLpm+Y9m/gi3fXob3ln3Dm49+lb84rBfyBWAYi84wmn+Yz1j9x26L87b7zzMGDlDY5zJMKdJ1oedsJestTp/ihxAMWG5GYoSQFFKPwLwUTH2ZRWszNvr4pWHIp6y91JlD2ixvYqiilOuCQOVY0bK6H4rWoJS2xh4XZzMQOlsDNT2DF4XB0LkQY21gaj2u5WgNB+7p953SyiCfUZmUlCb2qNKFYheaC0Hy8ULINwCh4Cbt5XCC0cTIAQo9xYWQHlMGKjepIh4SlK0VV6X1mG8JAGUKpgz2q9ZM2HA2LwwLwNl8N3DqkmRGmZFIj2qCRB71lKisQ+UvtlxoVCnzHL1DwyrWvz4XeaMsxpKLznLDFQAlAKbO6IYP7Q8b//MfKjqQ0PheEr2jisGAwWkOwOYXK+eeArVAeNCEXbvGtk9JFKihqFzKwzUrhGRuwUOXoHX6BsZztvvPJw5+UwQEESTUaxsW4nO3k4c1XAUPIKxPvbTlk8BAN8el93hYr+h+2FV2yos2rYoK/ACjFPfRtWrL62StUdM36RGhbcCPsGHpo4mk29tDwtaZQNNfbA2qmIUvIIXGzo2AJDTeu//4P2Cj0Mpxaq2VfAKXoyrliUg9VX1GFE2Apu6NuX87KB1IleLbNmDYFcHxSjzQgToudCTw6dEvdyo+k8JviwMRKVy0u1Vicj9bh0DlZLgVX0v1sS2R6WBqvAKSqVevuBUHRjoy+ibVX/r95M00ED1FXIvMBsBVCyJCq/LtOw8H3wmNgZ6JkafwkuIxhqoviBfylXfrV0No4E2X5CnbmPDwO4fvTGpJ21Tohd0svtSHYRLlBo7kRdJA9UcikLgCKr8Ls39qUenanwSeC6rmtUIkXgKHLHey45p5JrT6e94SjS0RbGKQlhYhsy4VRwGyu/mTaujowlzrZXAmzNQiZQ2xelKp8B3RTuXeFKEm5dbFplZvbh5N1y8C5XeShw0+iDMHj/bNHiilGJt+1oEXAGMLB+ZtZ41G3573duGn7fK3DKbhNMmasXrDCPLR6KjtwMS7ds1VRtoGummhpcNR0dvR1EqKNd3rEdcjGNi7USNBEgtkjfD4A2gVGXeLK9tN4CKlkhEHs3TlVzxOTEYIHJ1GtejVD5QLF3mY1V4GhsDUWNjAKT9h9JVeOVeAQLPWW7lohao61uJqGf4+v2kRGpq0lgoqvwuW81UjVyz7cDsGqkruIB0xZo6hddHvx8j5BP9iyZO5IAsFDerwjPTqRkFbEYpYMC4WopSqtyX6ka9KQP/H44jKNY8oyUUwZgaP8bWBpSWS0bQG4Lqq1mNwApPrOo4WacCZj/RVwZK4DmUe4SCqvAiNphzKwh4BFNPNllEblKFxxgoIw1Uloh8F2qgRAmetEYuKdKcBqlW0BxuVoIAIzAbAGaAqUdKMpl4qAIUiUpYuG0hXJwLk4dONtzPvkP3BQXF8h3LDddbBTPQnDFyhuH6SbWTFD1WX/HW2rcAZNzTGS6bcZnR5hoM3gAqmlRSHGxWYZuBirM0U3EfoHxBkF/xOcl+WeULvtRwCSXSQDGXXJdBFV5SW4UHMAdsUfbwUaWd5O3tMFDaF5I6oNK/2EvDQNlzYg4beBbZgYvnwOtcxoFscbqpBqqoInL59zJjY42qdBhyMVCmGigDm4tM4JhdhQdkd7BnY7s6MDGaSQsGYthC0dQWRX3Qj4ZgIHcKTxdc658jI0Tjoi0n7+qAG5U+VyaAKkI1WaXfpQSydhC1KYDPB7ktkbmNgVkAZVbUAMhVigNFA8U8qTJecH07B6YX0guuGcbXjAdHOFPDSfPnJnMdv9r8FWKpGKYOm2qoIwIyTBfzoyoUzEDzuxO+a7j+4NEHAzBn1OyAidVPn6TVWk0bPg1D/LktcQZtAKU23MtooOwxSSVjoJiI3CQI8gjyi9NohhWxISQtmQ+UugrPo6/Ck7J6/AU8vKKBYrNuniNw8SSvQJ8NvHU1vqyUSEsoappaSkrU9OVcKKp8blsMVGe08EbCDF4h25FbbcIIpFN4qgG2NCLy3Ck8MyNNgGmg9CLy/D5Q8vEy90dHNAmBI1npGZaWUrNw6ntSnWIWDWbSso2B4WnYAqUULaEI6oMB1AcDaO3sNRw7KKWyBkoVQOmrWY2Qy/rEDA1Bv5L67quIHCi8nYudccsK5MbY2ddLlChiSXOPvVyskr5KcZdqoNLpxGI1XWcsit4XioEQghpfDbb2GPuXiQbjKacLoFivu0v3v1RZdsdnd2BBa0Y0/p3xsrXBZxs/K+BbZPDuBrlZ8fHjs7VWgOx8XozjALLonSNcltaKEIIHT34w52cHbQAVjiYV/x21iNwOSsZAKWJQ44ecEGI6w2KDhpWZXMk0UCyAEuQS7N6kpDxIeh8oQBZ8RhIpdOhm3Wb9ztRg7MHkERVZKZHmUAQThpUDyA6OU6KU1cqkr6j0u2xVIIVjfUvhAcaO3J26FJ5+m9JooHIP5BKl4IixiNyIgcrnqm0sIpfbAOlTWEYMlJrNUQcm8kxae0yey7Si6Qt29sQRTYhorA2gIe12v6k9WwfVm5SQSEkafzB9NasRogl7DBQgty1iTG1cZxRZCKp87oJsDKI2BfD5IKc8s68Xm5CZBZquHEGRUS88edtdxEClReRA3wOohVsXGgqu1RhbNRa9qV5EEtnMaUqihhYl6uf6zbVvgoDge/t+DwCwNrQWv5rzKxz/dCbImTRkEjjCYcXO/D3wzNCT6MHa0FpUe6sxqmKU4TYzR80EAcGyHcsKPg4AhHvDCMVCqKuoM9RanTrx1JyfH7QBlLrM22iAtQKFgSqyiDxTjmw+mJjNsNigYVkDVSIbA47I7EFA5fMkrzNI4aWF5p2qyiOAuU1bY6AmjajAju64cpx4SkRrOIa90wGUkQbK7OVcKKp8LoSjScvCxHC0byk8wNjAskOnBWIeTey8Mr3wShFAmTNQZmJ5I8O9RJ4qPCMBfWcs24UcMC4S0TBQcS0DpU/tyhqtvj8njOlhKTwgW7cHqCxWVPdGmRUNVNy+j1JDbQCt4RjiKbFoDFQhKbx8hTN2EfDwhuOjYjaa10jTzAfKwEhzF4jIGQPlsdHyygzh3jC2RbYpguukmMSlr12KDe0bNNtNHzEdQKZkXw3JxICWMclNHU1oi7ZhYu1EVHrlSunff/x7AMDO6E5s6doCQCYHqr3VaO1uLfj7vLLqFVBQw0q/zLlxKPeU22rhYoQPmj4AkEkJ2sWgDKD0Zd4Fa6BKZKQZsaBj8nt4Yw1UnvSfGqXzgZKDJJkpy1guUCobhGaJyNMvh3A0oZl1mzWMVSOSSMEjcBg3pAxA5iW1qT0GiQJ7D2cBlD6FVxoNVEqihr+LHqxxcmUfU3gegyqccDQJN88pQYZX4CHRzKyaDfiF9jwzQi5TT8BYI8HA88YMlMARU0G0EeNlFpC6DZ5v9ctVz0DpZ9IcR1CMIjwWLDUEA0oAZdSA2cgfTF/NaoRc1WVmaAj6IVFgc0eszyJyoPAUnp1xywpkVjv7ekXyVCkrQZFpLzyVkWaBE+9igP1WxUjhMa+iI+uPBAD8/L2f45GFj2DCPyZoGBqmj2I98dQwmiAJPFGY2/vm3wcA+MHUHyjr31n/jvLv69+5Xvn32OqxiKViiCbNq1Rz4ZEFjwAArpl1jbLs7rl3429f/k2zXV1FHboT3ZD6MDl6YvETAICz9jmroM8PygBKX+btKTCFFy2ZD5S8X7M2D0CagTKqwotnKuDywVWiKjx1mi7TZDelXF+PAQPVE09pROSA/B2sVOEFPAIaa9MVRemXFBPoThohGxUaiciLmcICMveTFR1UVyzTOLkvMPKB6YwlUOl3KcEHu49YoJUQZYawmBowI1sBNYy0RQyGVXgGTJDh8bJSeNnX0+j5Vqd31M+RUZNpnmS3mikELaEIBI5gdLUPlX5X2sogm4FS9+lksKqBslvFVq8EcpEso8hCwHSAdlOeLLCxm4I0Q8AtG4PqJ4iRPEyX0pvRSi+8geADlad4wwoeXvAwgEzA8dJK2atJpCKmPTBN0QkxPdHXW7/O2odk6OCfea6ZqPvyGXLrGFES0RZtU8Tkr615TfncjBFy5dz76+17M1FK8eWWL+ETfDi47uD0uUn4xfu/wA3v3qBJP+43bD8AwLzWebaPw471QdMH4AinmIDaxeAMoHQaETarsMNASRJFND14GxmZ9QWRhOzxkWsw87vNGSi/mzfUmujhEkqlgcqwTAoDFRcRVzmUq+F3C2jrSUCiWg8fI32PHpH09x3DPG3SM3r2fzMGKlXkVi5ApimwFR+csEnbEbswYun0TIxecJ0oQfCYqy8fkIeBMqnCy2UzYVR9JKeAsxk9I42jloGSrwulFBLN1mnxHFeUAKo5FMXoap8SuNYHA4YMlJEdg99jrQqvzCaDwyYeTW1RWQPVBx8oQD5niQI9eYI9PVgQWzQGypNhvjXHyWNSbOYDRSkdUDYG8VTaB8qiX54ZREnE161fI+AK4KDRBwEAtnRvkfVQI2ZCpCKOeOwIPL/seVR6K+Hm3Vjfvj5rPykjI830xKOztxPNnc1oqGpAta8aQKb1yfia8Sh3y/3nvtwkWySw9i3vNb1n+/vM2zIPvaleHFJ3iDKBnL95PpJSEiIV8dSSp5RtDx9zOIDCK/GWbF+C7kQ3pg2bhnJPeUH7GJwBlK7M24jiz4dYUjR1ue4rovFU3plYmYnPSa4+T3qUTgOlYqAUy4WUymAzuwqPvaCqbKbw5AakAiq8LgQDboV5aglFUOEVEAy44eKzS/2TIlUo+GKBpR8tBVAmrtl2YRRk6pkYNsiyADaZokXVP8nnkT+FZ8Z4GVbhiXkYKCMbg6iJBsrg+dYwUOnnyMzsk+eKx0AxxgcAGoN+Qw2UUXBtnYGyFwBV+10o9wpoCUWynLYLAZsA2dVBRRLWmXMrYOOOfozMV+1nFhSxNJ2hBmoXpfA8At/nFN57G95DQkrgmMZjQAhBS0cLRCpiaGAovvjhF5gydAooKM7977loj7ZjeGA4QrFQ1n5EScqaeAjpiQervjt78tnKuru/vBsA8IMpP8D39pFF5b94/xcAMu1Qvmn9xvb3uXfevQDkdi0MrHEyANz5eaaH3YkTTgQg2ysUApaWZKxaIRjUAZReA2WHBtWX5hcTPemgIBf8JlUmkRx9nvQoXTNhSWE9MjPBlGKw6RWyGSiGKj0Dla8Xnuql0VAbUFIiTW0RNNQGQAgxrOZLSZLS96pYULrRWzASzLhm99HGwOAaydV9bs02QGaQTYpS0YNH5i5vNpAbVekwmDJQOYI8jiNw85kAO5GSEEmIhilRj4FWRf38sudIsVowaknRR8diSima26JoCGZaiMhWBrGscceop59fV81qtP9I3L6NASEEDcEAmkPRovhAVdmYRKgRjVtnzq3Ar/QL1V5blsKza6SpyA8MqvDsSj+KgWwNlASJUlDYu09ZwPGzg38GALjj8zsAyCyQi3fhy0u/xLDAMFBQ/GfFfzChdgJSUkoRfTPkauXy5OInAQA/PfinyjrW7+6qA67C74+WxeSfb/ocSTGJMncZvLwX69rX2fouAPDu+nfBE15T/fbehgyT1RxuVs69vrIePOGxKrTK9nEA4PU1r4OA4Pwp5yvLQtGQrcBvUAZQrMxbb2Ngh4HSm0MWE7JTbu4gKOA2bpYZiVtnoEolIo+nRIWRUBiouKhp8aKGWviqnnV7hOwKMz0iqgbC9UG/0paiJRRVZvseA5ZGZjiKX4UHWHt5sBl6dQlSeJ3RRFYgCmQCfTk4KW7wyIJis5eJaKAtYjDrhZcvzehJVxcCqrR8IDsgNfSBSj+/VX6XwlJIJm7pHCF9tjEIRRLoiafQUJthoBpq/aBULnhQIxxLwCNwGg0kGw/MWKh4SoJEC9MQNaRd0YtVhQfAtpWBHebcCjLjjvZ65bNLYPeoPoWXMAigMg73uzKAks+hI9aFBdsWoCXcYms/n7R8Ap/gwxH1RwDI+EH98rBfAgB8Lh9+fOCPAQD/XflfHDjqQM12DGatXBJiAivaVmB4YDiGlw0HIAcZsVQMPsGHKl8VRpSPQK2vFiIV8eKKFwEAw8uHoz3Wbuu7bO/Zjp3Rndh36L4QOPn37U31Ymd0JwgIxlaPBQDc//X9ymdqfDXY1rPN1nHYsbb1bMOkIZMQcGee6V/N+RUOefQQy+c+KAMofZl3ITYGWgaq+BqofIOJWbPMaCJluRJHNtKkRekHpIa6YbCagepVNFDZVXgM+hRePn1ZNJExxWsIBrCtqxddvUls7sjM9o2CjFI4kVew9IWFKqRMCq+vRpoGKTydGJ9d71gJNVAunoAjmTY+eoiSsQs5YOIDZaFK0quyuejUpeXVMPSBSqRACFATcGcxUPpAzyjAswuWWm5QpfBYgK/3L+s0EMOrtYRGiPRBQ9QQ9GNzRxQStd5HzwzKJMJmJV40kUJZkQTkQOZ66QPOiFLtlzuFl2WrkcpO4Ski8l3RC09npEnghV/woTncgnlbrImiF25diJ5EDw4efbCiF2rtbgUBwZRhU5TtGMOyZPsSxRrg45aPNfsyqsLjOYINsdchUQkn7X2Ssvwf8/4BICMWB4DL9pfbntz6ya0AgMm1kyFS0VBvZYZ7vrpHc75ApmJwVPkoJRC8f/79yjtvbLW5t1UuqFOQDJRS/Hflf5EQE0ogmA+DMoDSl3kXYmMQVeXsY8WuwrOQhgt4eEQSqazgJ5IQLVfi5DKN6wvUbuMaBipprHNQD/raF781ETn7PGuO+sW6ECSaeVkZ7SefSLkQeF08fC7eUhUeC+IrvH2bdXt0PlDxlIhoQsyTwiu+BooQkvP3EiUphw8Ul/XCsiLyVwfGuUT5hj5Q6TR5mcop36zdDMf1nYFizGi9KoXXqOtFx9AR1fbBA/IzUGw8KsRHqT4YUGwaipXC67TLQNlgzq1A8Z/TBZyZ65RbRK5P4RkFUC6hNOOnFehTeOFYFyLJCHiOx/kvnW8pIPjTF38CAFx34HUAgHXt6yBSEcPKhmm2q6usAwFBKBZSKtuWbF+i2UbNQMWSMfz+o9/jP60nYmnkLgDAzw/5ubLtk0vklN61B16rLPvZIXIKcWXbSnTEOhRfJdZixgpY0HLlzCuVZUyndPKEk3H5jMtBQNDe245F2xYBAKYPl72t3t9gr+LvPyv+AwKCq2ddrSxb275W0YfdP/9+s49qMCgDKH2ZdyFO5GzGVxNwl6QKzwoDRWm2/ioat85AuUtURaIWkWd8oFLKy1VvY6BOO2ir8Li8PZ7U/b9YRdHHa3YAgOL27FWlegC5glKiKDoDBbCGwhZSeLFM4+S+QG/1wJgYzXXUCa6TqeIzUEBuzZpRlQ5DIRooQMu+GemGGFjpud4Hyu/mNT3mzBoe86TvGqjmUAQ8RzC6OhNAVfldqPAKWZV46j6dDHkZqERubU8uqHVZfe6FZyONrYYV2YIdmDJQ8RRcPDH9nmxSpQ+K2LtB4wOVHj92SS88UZvCo5IXlZ4qiJKIte1rceN7N+bdx7vr34WLc+G7e8v94v742R8BAN9q+FbWtuWecqSkFBJiAuXucizdsRSuP7jg+z8fKu+sxHNbjsHrO4+F5zYPArcHcMvHtyAmhlDBTcD/zvsf9gruJZ8npWgKNwGAclwACPqDGF0xGgDw3LLn8J0JckuXT1o+sXQ9kmIS69rXYUzlGE1K7fNNnwMArjzgSngFL/Ydui+ADFt1dGPa28rAHNQMsWQMTR1NaKxu1BzrzTWZYG/R9kXY1Lkp774GZQClL/N2FyAGZDOZYJm7NBqoPEGQ2Yw0mjBvlKlHqapIYqoAyi1wcPMcIgnRNIXHNExlHkHz0rTUykXNQNXIN/NHq3fKfzMGSqelSkrF7wXHUOlzKexSLphVjNmFPjg0YmL0Jf+yiLz4waNRXz4GiVJTgbDAG/fCs5LCywRQ5lWNRs93JP2cqKvbRDMROd/3FF5zKIpRVT7Ni5sQoil8YOg0aDKdj4FSOhAUwECpdVl9DaDcAoeAm7edwivERT0XynLYGOQ6jmAyJhppoDLBVv8GUJRSuQqPl8dWQuR7e6/geNT6gwBknc//1po35F0XWof2WDumD5+uEAmsnP/Gw7KDr3HV4wDIjXNvOvwmjKseh2FlwxBwBSBRCQABT7wI+oIYWz0WNx5yIy5p/BgHlj2I4/fKOILP2zIPEpVQ46uBV/BqjsF65D2z9BlMGz7NUquVaDKKu+fejdF3jwYF1TQPDveG0RXvAk94JXD6yUE/AQA8v/x5pKQUvjVWDhbtCL/vnXcvKKimqhDIMGsMzy17Lu++infH9yP0Zd6EyBU9dlJ4agZqc0csz9b2EInnT8NpZqRlqs/a0UCVyElX3zDYn24WHDcRkbNBv1L30mAvSEqpoSO1KMnO5uxaVPpdqPa7sLWzF2Ue2cKA7Uf94knlaRPSF1T5XUqRQi6EY0lDtsQuvC4eKYnKzt08Z8jE6FN4pdBAseOYVuHlSMkVzECpUnhMd6ZnbgATJ/J01Zffk9ESKgEUyWag+prCky0M/FnL64MBLNrUoVkWjiYxZbQugFIxuUaI9oGBCgbcKPMI6Imn+uwDBchpPLsMVCQhYlR1ERkoFnDGsxmoXONjRgOltzGQ7xF1gMlxBAJXmkKcXGDjtSfd7YFNNAkIJg2ZjINGJfHVlq9w/svn49HvPoojG45ElbdK+fz2nu2KZcAP9/+hsry1R9Y/7Td0v6xjfnvct7Fw20I8u+xZvHTOS7jpsJs068+8/wt4XByevvQgZdnVzyxASurSbMfcwGePnZ11jIunXYxbProFy3cuB0c4VHorsbFzI+ZumguJSpCohK54F1q7W7G5azOWbF+Ct9a+hYQkj7cHjT4IfzruT8r+Xln5CgCgoapBeX+cP+V8XPb6ZehN9eKdde/gxAknyt5WHda1Vsx9/PqDM+7pKSmFpduXAgAmD5mMFTtX4MFvHsSNh+ZmAgdnABVLYlSVT7PMI9gLoNigWxPYRQyU24SBshB8MbgMtCHFQFzX7y6QbqugNBk20UDp2QOvi1NakLgNGJPMSyOzv/pgAB3RMBpq/cpD43XxCEUyQQ0LoIrdCw+QKzvX7ejJu52Za7ZdqNmlMp4zZGJYCiuuaKBKE0Dp9VhqGDkVM8gvIXtGmoD8u7Ieah3RBHiOoNzg3jcSkTPmUl3NaspA9dHGgFKKprYITpue3di0MejHm0taNW1UwrFEVnGBwkCZisgLZ6AIIagP+rG8tavPDBQgT4SsTCLUiBaZgfK7mA+UAQOVY3x0mRhpxg00UPL2XL9roBQ9VvoZVk8keMLhjfPewMyHZqIl3IJTnz8VBAT7j9gfE4ITMG/LPCVY4AiHC6ZcAABYuXMlJCphRNkIw8nqxdMvxh8//yO+bs12IQdkxthn0ExYP/Fg7VvUbVYYxlSOAQFBuDcMSinGVo3Fgm0LcMijh5heC45w+O6E7+Jvx/8NjdWNmnUPLXgIAHDW5EybFTfvxgEjD8BXW77Ck0uexIkTTsTQwFBs7d5qOlEHZMPRuZvn4rmlz2HFzhUYUTYCQwJDlPXztsxDiqYgcAL+Nvtv+PZT38a6jnVYuXOl6bkDgzSA6owmsO/ICs0yt8AV5AMVTAdQuS6+HUgSzUszA9rqNoZESkJClArQQBVZRJ7SBlByHy9VFV5WLzx52+wASl4eS4qGA7uRILSxNoBFm8Iaw0J9NR97kZaKgbKSvuiMJVFXk81I2IWaXSrzCCYpPL2NAS2aYaH2XMyfoVzNhA2r8ESa92XuEXjs7I4DSOuGfC7DZ9AohRdNiAgG3AioGCilCo/PDqAolZ/NQnyKOqJJdPemNPckAxNwb+6IYuyQMvQm5VS3aRVeHgaqrAAGCpDTeMtbu4pSXFDlt5bGViNSQB+/XBB4Dh6BM6zCy3UcQgh4A2NX8wCKFH0Cmg96Qbue+Q36g/jgwg9w5gtnYsG2BaCgWB1ajRU7V0Ck6TFT8OPmI26GzyUTCUxQzlJaekyomQBAZq+MIFFjHyh16ntjeCM6ejvAEQ4Hjj7QcD/Vvmq0x9qxuWszfnnYL3HVW1eBgEDgBAicgEpPJcbVjMPewb0xvmY8vrPXdzCqIntiAgALty0EIDNbalx/8PU458VzlEbAE2omYHPXZlz95tXwuXwghECiEiKJCHqSPehJ9OCzls/Q3puxJrjh4Bs0+2StaibVTsK3xn4LXt6LXrEXTy992vDcGAZlAKUv8wbkm9FuCo/nCCp9rpwsiV2wUvN8gsoygxlpLE+FiR6laEUgShRJkWrMMv0eAT1xKwyUdtbNxObxpAgYlKdnTPHUDJQclKiFsfoBhg2OxfaBAmRjzM5oMm9AHdZ5NRUKvUA80wbEbbpNUpT6XP1ndi6FNBOWe+Hpmz1T+C2k8NiLzeiZZiCEZE2QIvEU6mr8MgOVrmZlQZze8JOl9ERKwcH+M96sWBhkB8ys0KElJAdQLBWZVYXHRNGmInJ7z37WeaTPra82BoAcQK3e1m3rM9EC+vjlQ8AjZFfhWaj2EzhiamOgvz6lMiPOBb0ruly8oT2HxupGfHPFN1jfvh4vr3oZL618CavaVuH48cfj7H3Oxuxxs5XgCQDeXfcugIyhph6EEARcAUSSEaTEFAReew1TIgWvY4z1qe/ffyIbZk4bNg08Z/x+m1w7GZ9t+gwvrnwRPz3opwU36d3cuRmxVAwCJygCdobTJ50OAAjFQqCU4pjGY/BB8wd4aOFDmqp2jnAghIBSiqSUhJt345x9zsFPDvoJ9h+xv2afL66UKwDPnHwmCCE4duyxeHPtm3hk4SM5z3PQBVBGZd5AOoCy4wMVl/2H1E1U882YX1m4Bd+aPCznLDHT7NKiBsqgq7zVahalisQkcKSU4r8LtuCkKSOygh4AWLm1C5F4CjMbapRlmSApcy0CblkDlRGRa/fF2BB9QJGvz5MRA8WsC/QMlHqAyaTwSsNAJUQJsaR2oP5yQwhz12daIOgbJxcKlp576JMNqPK7MXdDCAJHNLNs5tGkNBMuWRUeh7YeY4bEyKmYwZiByu8Urw6MO6PZwms1PDqNYzTNePg9mWrWTCsX7bVhrJMoUbBbd+XWLkQTImbUV+c8R0DlAVVrzEABwFNftmDRprBiQKm/N3wmxpAMRpMJO1BMZ4sSQLkteaExyE1/aVEZKID1C81moEZUek0+IcMoLWcWQLnytMOilOLlhVswe5/htvVp7LPH7ztcM5awlkzsXDwCZzpxGVczDjcccgNuOOQGw/XsONsi27L8n/Sor6zHirYV+LjlYxw79ljNOnmCpN1e0BVfvLD8BQDAb4/8rekxTpt0Gj7b9BleWfkKfnrQT023y4dnlj0DAJgYnJg1kRU4AWWuMvQke7CxcyPO3e9cPLX0KfSmesERDhzh4ObdqPZWo8ZXg2pfNfYfvj8unHqh0stPja54FzZ2bgQAXDTtIgByIPrm2jfzmnQOugDKqMwbKEQDJWso1I1aK7zmA/iWcAw/eX4Rbjl5Mi46tNF0OzaTzO9ELl/6nrh2Vg3YYKDyOOmu2NqFG/6zGBwBTt9/dNb6299aiR1dcbzz0yOUZUYsk98toCMaQ29KhIsnhj47sxprMK2uSrOcvTTMSuN7FPPAzLFm1FdjRKUXM1UvNj0zkhSN6fhiQO1Grv4dfvvqMqzZntFG8RzBPro0ciEYN6QMHoHD43MzDsT7j6nSDBqEkLTdgboKr59F5DlauXgMqvesGJ2qLRzCsQSGlpu/GPUMc09ac6PWEjIWzEgDBWScygHgrndXY3NHDG//5AjkQ2u4FwCydJeALAHYe1g55qzagTmrdijfa6+hZZrt1NWsRojGZWNQfZskqzigoQYjK72oNwjy7KLKJ1t5WJU1sElgMTVQgByEtke0Wiwr1X5GHRoSBjYG8ra5NVCb2mO4/oXFuPVUERccVG/n9LF+Zw+uf2ExeI7glGmZNJUhA9UHHe6ba96ERCWMLh+d8/c6YswRWNG2Ak8sfiI7gKI0e+JBMhOjb1q/QU+iBy7OpfSgM8LZ+5yNn737Myzfubzg7wMAjy18DABw3n7nGa4fVzMOi7cvxgdNH+Di6Rdj5dW5tUq5wCwQ/C4/xlSOAQAc1XAUfIIPsVTuArNBF0CZGe7JFL8dJ3IRAQ+f1ajVDN298nGbDbqva/ZrlYFiRnEGXeUt98LLo4Fig4/eKZlhw85IFmvHmB4NA+VhGijRdIB/4YqDs5YZNYxVQxl4VTO7uho/5t6kfbj11XwpE6ahGFC3shiZfmFKEkVzKIrLjxiLX31nUlGPt++oSqy+7YS826kH2VIYaSrHMAl2RYlm2VcwyJWLWsYiZaGVi8ZIM5rEhKHlptt6VM83pTRt98FrqllZFlEfQDHmTD2b7upNWW5XEk2kIHDEkN0hhGgmILngTz9HRogkRPhdhfeSa6wN4Avdc1MoqvwupCSKSEK0pMmyO25ZRX1NACu2aqvAIhZsXgQ+O6WcUwOVg4HqYuO+yRiaC6GeRHof2t/cSESe7/2TC7/+8NcAZK+kXLhk/0vwwIIH8MXmL7LWiQb6QEFVfPHrD+RjnDD+BKXNCgAkxAQETgBH5O8yumI0OMKho1dbmWoHXfEurA6tBgB8b9/vGW5zbOOxWLx9MV5a+RIunn6x4TZW8ezSZwFAaXMDyM/1ceOOw2urX8v52UHnA2VmuGfXxkB2Cxcsd8Nm2gW950vWftODSb6Bx0gTEbXLQOXRQLFrZRT0xVMiWjtjit6HwYyBkp3IpSwTzVzQi5/1YN89XwsIdTUfkPm+pTDSZM2B1d3ot3X1IpGSNG08+htePQNVgu9u1DKHQczBQFX53YglRS1LKFmxMZADNkopOg3MJ9VQM1DxlJyu87sFjb+Soo0z6IUHQKPniCZSlkv1Wbq/r0UmAbdxA3F2PsXWEBUKNrZaceQHMuNWIRYMuVAf9GNTe1RjSWDFaNhlUBWaSE8MDFN4Od4bbDxvyTPuG4FN9qO6tK0+mLPSdN0MlFIs3SGX36tTZkZO5jNGyq1XNndtzlpn3EyYg5huFcZYmluOukVZnxATGPLnIbj2rWs1n6v0VEKiEnZGdhb0nR5f9DgoKKo8VVmVeQxnTD4DALBg24KCjqHGu+tl/dj5+52vWa4XmhthEAZQxhoD2yLyhE4DlWcGwGaOetfh7P2yICh/UECICQNlo5kwYO4DxR5go4d/U3sMlELR+zAobuMqpqksPXOW7Q2s3zJKiX4+BirP91VX8wGZQKpUVXiAthdYLhFxf8Hj4pRBtmQ2BnlE5GYaKJZO71JdM2utXHhQKv+u3fFUTl8t9fMdVZ6TDAMViaeUFJ1+Js2rNFAM0biIeEqylDqRXbb7HhywalYjyK1pil9ZWQhYIGs5wLQ5bllFQzCAlESVFKokUUST+W1eBJ4z8IEyZqDyicjZeJ4v82AENgnTp23jKe0Ya8Vw2AxPLnkSEpUwrnqcIipfsXMFqv5YhV++98ssUbVX8KI31ZvVQsy4mbDM2r6x5g0kpSTK3eWYPmK6sv6FZS+gK96FRxY+AlHKnP/kIZMByO1SCgFzGddX36nB2KIdkR0FHYNhY+dGdMY7Acj6LTUOG3MYKj2VOT8/+AKomJkGikfchoicaaB8rtw6HQY2c9TPiLL2m6dbOAMhJGtGmklpWW8mDJg3w2T9rJraIlkPjDqoUpcsG7mNs8bH0YRoKEY3Qz52j333fAOvppoPGZO8UvlAAdqXh9IHrQj6kkLhFXjl+5dKRO5z86apBHmANU/hAdqgMynSvFWSjA3Y1tmr2Y8R1EUiSprco2agRNPiAqMAir0YraTx2GSrrwh4BHMNVKK4Pkp9QZXNdi4Z5ry4ASAT7bMJjMxWmjcSZhB4gqRkLCK36wPFxvONoWhWoUQ+sHtLz0Bl2xiYM7/5cOvHcvPe3x35O2XZvV/di5SUwh+/+CNumqM1zBxZNhIAsGSbthdeSpKyDWg5DiKl+N1H8r4vmX6JZj2rUIuLcSUNBkBxE39pxUu2v08oGlJ8rn5y8E9Mt+M5Hj7Bh5SUQrg3bPs4DKz/XtAXzBKYE0Lw3Jm53cgHXQDFovrqQHYVnp2edsywMh9LomyfHnBTEsWWsLmwzCoDxbbRMFBKSsvaQOpWROTGDzYLjLp6s9MVTaqcvpqqjxuk8NhLqj2asOU/pG9Bogf77r58bJ2umi/DQJVOAxVWGQm2hCJwCxxGVOSu/iklvC5Ow8CVQkDvFXgkRMnwRWFUpcOQSfmoA6j8aUZ2j23ryh9AeQRemblHVYxHRgOVymmkCUBjpslejFaCBJbu7ysCaUd/I0TiYtE1RIWCVTiHLZpp9pQohccYXxZAKWajeY7j4rLTcvGUBEKyg+t8Gig2nidECVs77XWsYBMKfdCsrwgsVESeElNY37EeHDh8f8r3leWspQsBwR8//yNuej8TRB1UJzuNP7zwYc2+RElueaSGwBGkpITSuPcXh/5Cs37elnlw8/K9wnyoANktHACW7NAGaVbwz/n/BACMLh+tCLoB4Lmlz+H5Zc9rtmXrP9v4me3jMPzr638BMPfPOn788YbLGQZdANURTWSVeQMF2BikDdmU9JDJzFDZXjXw5aJzFT2AhdmkfkYatRF8AdY1UEC2dkudilTrfXoN2rWwl1R7JGErhefJIyKPJES4eS5vMODVsYQppRdeKXRAPDwCp7kmzaEI6mv8BQt8i3Ve/aGBAox/r5QkmTJ+StCpCsRTllq5yL/rdiWAypHCU2kcIyqmVtESJsSczYSBDANFKVX2YSWAYhqovsLvHiQMlM0UXsaOpLgB4JByD3wuXmGAlc4F+TRQQnbvw0RKgkfgsnRs+WwM1AFvPvmGHuz66a0rilWFd89X94CCYsqwKYqIO5aMoaWzBSPLR+KFs14ARzjc+fmdShD1g6k/AAB81PyRZl+iJGUFl53JrdjOy33jRpePxojyEcq6BVsXIJqK4vAxh2N0+Wgs27EMHTFZOD6yYiQICNpj7bCLB755AABw7SytrurCVy7E+S+fr0kVHlEvF29Y6VlnhA0dG7CmfQ2AjH2BXQy6AIoZ7ukfBL1PTD4wQ7Z8LAmDeuDLJShUDPEszCb9bu2MNNPOoTgaqM5YhjHSB1DNoYiyTp16MUrhKQxUJFFQCs+MGYzGU5aukz4VqKRqSsBAAWk3ctXLoyUUNXSh7k+wQVaSKFISzSrHLtYxAOMASqLZgQlDpUHKJ2mpmTBL4clu5Ll8oDQaKFXqV13NmsrHQKXX9yYlsPerlZYl6obXfUEglwYqMXAYKPZ7WvWCyvjXFTcAZC1qWvQMVF4jzeygKJ6SDCtX3XkCKPW4n6+ASA92b+l/8ywfKJ3PnVX8de5fAQB3ffsuZdmba98EBcUxDcfgzMln4q3z3oLACbjz8zuxuXMzjmk8BgCwKrQKZ71wFi577TLc8O4N2Cw9gjmtf8WN796Ii1+9GKP+Ogq3fXM0ooIsHv/5oT/XHPver+4FIDcQvnzG5aCguO2T25T1lZ5KiFREV6+2ijIXWrta0drdCgC4fOblyvKPmz9GUkoiJaXwwNcPKMu/t49coTd381zLx1Dj8UWPAwA8vMeUgcqHQRdAdaZbPujhcVkPoNgMNODh87IkDMynxefiNemvrO3SJc9WyszVneTZZ70uzvRFpYfbAgM1eWQFCMnoeBhaQlHsN6pS2Y6BMXEaJ/L0gNURTdhqVpphNEyq8BKipReTfj8JRQNVGkaoyudW9AuyhUFklwrIAaaTEDNtbIrgmm90DMB4MpGSJNP70ijtmbLSC0/QM1C5A6i4joEKeHgl3R2JixAtaqDUz5ylFF6e/mtW4ffkqMKLFydIKwa8Lh4+F2+jCq80DBQg2zM0pQMXo96ZRnDx2U7k8ZQEt8HYJVfhmWubWMcKj8DZtjLIMFC6FJ6OgfK5eCRSEuworOLJOFp7WuHiXDhm7DHKctYolwmwZ4+frbiTv7LqFQicoGiHXlz5Ih5e+DDumnsX2sgL+GLHY/jL3L/g34v+rQQygGzAqW5aDMg98TjC4YxJZ+BnB/8MHOHwxJInlPUTh0wEYE9IftdcORCcVDtJ0zyZpfUA4O9f/V359xENMgO1pWuL5WOowXrtnT7pdI01gx0MugDKqFEnIAcTVn2g2AxUZqBysyQM7GUvz4jMqVw7Jc+yv5LKSNPmTDefiDwcS2JouQcjK30a1iyRkrC5I4qpdekASvXiM0rhsXOiFLZSePlE5HLaonAGqhQaKECuQmKs3I7uOHqTkqELdX9CrtSRMiaiJfKBAox/L1E0b+VS5hEgcER5YUgShUTz20woGigmIs9RhefRVOFl0uQegQOXrmZlKTy93QJLvbIqPXV7ECt9DyMWSuetQN34WI+eIumsigU9C5sLGd1n8c+/PhjApnZZwG213Y1RayGWwtPDlacKjzne1wf9tivx2PXTM1DZPlDyvbVsxzKsbFuF2z+5Ha+veh1Lti+BRI3P7Tcf/QYAcEidtlHv55s+B094JbgAMkzN+03vAwBePudlnL3P2ThizBGYFJyEYYFhILQMHq4MZe4ylLvLcUzjMTh17I0Y3nsXlv5oNfyuzASyI9aBrT1bsXdwb7h4F/xuPw4cdSDaom1Ks+KT9zoZgL0A6t+L/w0A+NXhv9Is/7jlYwicgHHV47CmfQ3aom0AZEdyD+9BXIwjKdrr3bh0+1Js7dkKALj58JttfVaNgfPEWkQ4msRwAzGvHRsD9Qw2H0vCwF72jbUBrN5u3icqYmMg9HsEbGzPPJSRuGi5Ag/ILyIPR5Oo8rvRWBvQPPybO6KQKDBxeAW8Lq3ex7AKT3VOdlJ4Ll5m08wqHCNxazN7nz6AUnrhlYqBcilBcsbCYNcGUB6XLKIupYA+FxsrUppVpcNACNE0YU4qGrX8RpoAsLWrF4QA5Tn6+6kZqJ54Jk2urmZVWrnomwkrGij570IYqOLYGAiIJcWsknFmDFoKBqdQVPqsNdUGkK7Otc6c20FD0I+kSNEajqn8pvJX4cWSOg2UaBxAufnc2lk2njcEAwWk8PKIyF3MxoCDBBGhqNwq6uYPtS/0MncZ9hu6Hw4cdSC+2vIV1oTWIBSTt73/xPuV7bb3bEd7rB2Th0zWMCpTh08FRzgs3r4YgMxKzR4/W3OMvW5+C5cdNBY/P36isuzhTzdg4fKV0PMsTKd05uQzlWW/PeK3OOGZE/CbD36D/53/P1w07SLc/OHNWLxtcd7rtCOyA08veRrtsXZwhMNZkzP987riXdge2Y79hu6HS6Zdgp+++1P87sPf4b4T7wMAjCwfiaZwE75p/UYRyFvBv76RxePDAsOwz9B9lOULty7Exy0f4ycH/cTSfgZlALX38GzHYjsicrWGwo6RZsAjoD4YwPsrt5s2V7UzEMozUm0rl0IYKKPvTSlFZyyBKr8LHPHjzaVblXUsOGio9aPK59a8RIyMNNXnZIeBAuTBwdxI09rMXp9aYkFEKVgYQJ59L96sdXGvHxApvAwDVapeeIDxZEKUaFaVjhqVPpcSiCct9irMMFAxVPpcOUX6HtXzrS/UYA7fShVeVjk2cyLXMlhAfg2Uku4vio1Bxs9MXWmbECWkJDoAGShrKTy745YdMO1hcyiiav2U+1hGuqaESa9Tt5Dd9kUNNp431Abw8ZqdkAwcu81gZmPAqknVDBQHHi7eBVFKoaGqHgFXAIlUAhu7NqIn0YO5m+dqtD4EBAeOOhCThmQ6Izy95GkAwMkTTtYcjxCCIf4hmrScHikDnzdOV3zB8NxSWbR9zaxrlGWzx89Gubscc5rmQJRERUjeFm3DjsgOpKQUkmISPYketMfaEYqF0NrdiqeWPIUvN38Jmk5gHlp3KDyCR9kv0zydNvE0XHPgNbjhvRvw3PLnlADqoNEHoSnchKeXPm05gJKopKQ6fzTzR5p157x4Dta2r8W3x34bk4dOzruvgfPEWkRnLKl49ajhEXiIEkVKlPKKi9UMVD6WhIExUOoZUV1N9ks1YsN0z5+lgbI3C2UicqMBIJqQ2Yoqnws1fjlICkfl9CebSdUHA6jyuzReOPGkCEK0jr3qc7Lbq8vr4jVGnWpEDJpCG0HPjCg+UCVioKr9maCyORSFm+eUti67CkxEzmavpapABIzT2bmMNAG5go6lglMWgzwWsO3sjmOMwbOkhrYKTz4/xkwG0tVt+WwMWFZHPWnpiORmWXqTEijNXzpvBWrLBXUAVUoNUaGo8rmxfmdP/g1RPIbOCI2KF1RUcZLP38rFTANlkMLLU3zExvP6oB/xlIRtXb2WxgLW9F7ehzEDxZ5h9tztO2QaKrw+NP34Y832sWQMjyx8BJ+2fIrZ42fj5AknY0hgSNYxX1ghN/u9ZNolWesm1U7CRy0fYWv3Vk01HSCn3CnNNqBl46s6gJKohBU7V2BoYCiGBoYqywkhOG3iaXhiyRN4eunTuHDqhaj0VCIcD2PYX4aZXSbt8TgBf/32X7XfKd3A+KoDroLACTi07lB8svETzNsyD7NGzcJ5+56HZ5c9iw+bP7R0DACYu2kuuhNyFunHB/5YWZ4Uk1jfLntQ3fLxLXjhrBfy7mtQaaASKQk98ZRhtQ57OKywUHoH7FwsCYPsFCxoZkSG+7ZR8sw0UMzk0k7wBcg3rVHjTACarvCMPVHSUm0RlHkEBAPuLKq+16DcVz3Y20nhse1zaaCsVB7pX+zMJK8URpqArIFiLtUtoQjqanwlSU/YgVfgkZKoci1L4gOVw1Q2VzNhINOAFrDuFM8CY4nmtjAAMilMIF296c70jfOn/ZXMeiSyOI5ppNjzX+4V8nodKZOtIgQ3iuBd90KNJKwxK/0JdUo2HyJxa1rGQjC03AOvi0NLW8Syx57Ac0oamSFhUoVnxUhTnjjnHvf1YOm7cq+QXYUnysEcG2PZRELgPCDIfmZ8Lh+umXUNnj/reVwy/RLD4IlSisXbFyPgCmBC7YSs9YeNOQwA8PKql7PWsefCigHtm2veRIqmcGxjdt/FHx8kByOvrHoFQMYyIRc8vAcnTTgJD5/8MJp/3IyZo2Zq1i/bsQw1vhoMK5ODsN8dJZt6/uZDWQN23LjjAADN4ea8x2L425d/AwBMHTpVY575wvIXIEG+b95a+1aW+bQRBs4TawGdJo2EgQwdmkhJyEdqKA7Y6Ze3FR+OaCKF6oBbMyM6fC+DfSdSGFFpzXDR7xYgShTxlASvi0c0LmJouSf/B1UwGwDYy6zSpz7nCKbWVaE5FEVDrV/Rrqgr9HqT2W7jWg2UzRRejkaZLC1qZR/yuaVTeCVkYQCtMWRzKLrL9U8A4HPL14A1Jt0VKbxcDFSl34VV2+RZXUajZs0HCshdgQdkM1BqITFjchlDoY+rmYO6KDEnc/lZH1Xly6uBitq0FskF9uLXC8mjNqxP+gtVfrfSJzNfQUwpGSiOI6ivkTWcXhevVMTlgovLZqASKQkeg7HLlU8DlUhheIVXKSJpCUVxyLj8583S2aOqfFi1rVsO4ITMO0r9HZgWSrLwwjbDsh3L0JvqxeFjDjdcf/qk03Hbp7fh/Q3v46oDrtKsyzC3uokHS+Gpzuv+r2XN1bUHan2aAGD68OngCKcYb959/N249sBrEU1G0ZvqlVvIgMIreJX/Gqsa4eKNn/25m+YiLsbx7bpvK8uOaTwGFZ4KfNj0IURJhEfwwMW5EElGct6rrGfga6tfwyurXwEA/OoIrVj90YWPAgCmDZ+GRdsW4e11b+OEvXI3eh9kAZQ8W6w0qsJT3Zz5kMVAqUwKzRBJiBhdLWhmRMb7Fi0PtmxWy1qkFOI3Y0ZBq4PNuhq/xsqgJRTBPmkLgyqfG+FYWPlcb1LMStO5eS7tSkuLz0AVUoVn8QVdKNjLvD2SQEsogoPHBktyHDtg16A73R2+JAFULhF5Hg2UrKVjKTyrGqjMd8jlAQXIz7dE5fSgnrkMuHmEIglzBkonImfP/8gqH1Zuze1To0739xUsyIjqGSgb5rv9hSq/S+mTmW88iyRSlrsnFIL6oB8b2mQm2EqFs1kvPKMiBXeawTd7+TILixEVXrgFzjIDxdi7kekAKppIwS3I7624LoBiz50kFR5AsbYq5+57ruH6acOnaYTkamT807TLFe2gmDGg/aTlE3gFLw4ala03YlqrLd1blL/H1ViINk1w33xZ53TZ/pdplp8+8XT8e/G/8diix3Dp/pdiWGAYNndvxhWvXwG/W862SFRCb6oXcTGOWDKG+a3z0RxuVhg+N+/GGZPO0Ox3Xus8+F1+PHDiAzjokYNwx2d37F4BFJstGg227Ia0YmWg78GmbtRqBnXaQJ4RGT9IctWGtcHWr3jYpFATcBc0kzNz0lWuld8Fr4vHiAovWkIRJEUJmztiOHHKCGV9WFeFp2eZCCHwu3l09aaU2ZJVmHUalyRqOdhkOrX+aCYMZO6vtTu6EU2IaKjdtQJyIDPIdisMVOk0UKYi8hwvrmq/C5GErNFKWNZAqRmo3LSxOkUfiesYKI+AlvaowjDp060snsr4QMn30cgqL+auD+U8rtJ3r5gMVMKEgRpQGqiMOWreACqewrDy0rU5aqwN4KPVO9FdZ22CKbdn0WmgkuYaKErTDKvBM8UKXTiOYEyN37IXFBtTR1bJ10XWe8rr9OlENt72IX7CW2vfAgCcu59xAEUIQa2/1tAzyYyB0mug3tvwHiLJCI4fd7xpEDt5yGR82PwhtnRtwaiKUYV9mTQ+aPoAPOFx4l4napbfdsxt+Pfif+ORBY/g0v0vxSF1h+CFFS/goYWyrxMLkggh4AgHAqLYQTCx+oVTLgTPZZ631W2r0ZPowRFjjsCBow9ElbcKczfPzWuPMKg0UOqgQA+3jQBK37RX3ajVDGqfloZac08QewyUdkYasejMrYbbRAPFtB1McN+QNqTb0hFDSqJKWqrK79Z0pTdK4QGZ2bPXpvbGrFEmC4asBptqnZriA1VCDRQALN4kd+keCCk8ln5gAVRpfKBytXLJJyLPuFdb9elypZlNILs5uB7KBCkpZTGXAbec/jYTkQtKCo/5QMmmuMMrvIglxZzpexZsFZWBipswUAOsCg+w0eqmhOnH+mAACVHChp09lo7j4g18oEQTI808VjDqSW1DMGC5nQtjY5ngXJ22TegE7d4+pvBiyRjWd6zH0MBQjQGlHpNqJyEuxrGjZ4dmeaZ6Vbs9p0vhMafxW466xfQYRzUcBSDTpLdQRBIRbO3Zir2Ce4HTjfOjKkbBJ/iUNiy3HnMr6irqUOGpgIeXJTAUFBKV5Oo/Sb6Hx9eMx+X7X46Xz3kZD5z0gGafzKDzwqkXAgDOmHQGUlIKDy/Q9gzUY+A8sRbAaFEjwz2PjRSeMigqKbzcInLm08IG0YZgAB+u2mno52Kn5JkNBpFECilRQjwl2U/hCfk0UPJAWB8M4J3l2zK+RrUsgMoMlMMreVlEbhBAsdlxvsa/engF3nAQtmu+p2ayUpIEjmRXjRQLjA1ZtEnu7TQQAig2yHaxFF4JReT6qknJZIaqBkurd8YSSkBvpUrS6+LlwpB8Gig1A5UQNSy03FMyVysX+f/sRdCTLghhDcm7YknT1HR0D2WgKhUdYH4rg2iRWt2YgXUBWLm1G+OHluXdXuA4Yw2UCQMFyPeVD9rrrx/PG4J+fLZupyVdWFilgQKyAyh1R4e+BlBPLHkCEpXyNr49bMxh+LjlY7y08iX86IBM+b4SQOkmPOqJR1JMYu7muaj2VuPA0QeaHuOMSWfgdx/9Du9veF8RlRcC5hJ+6t6nGq4fUzkGa0JrIFEJE4ITsPGnG5V1lFIlcGL2CRWeClOtFQC8te4tEBB8fz+5KfNvjvgNHln4CO6dd2/O8xxkDFS6sizQtyq8SHoGymbcPnduETnzaWGDKJsR6btzx5KirZLnMtWMNJosbBDNpYHyujjl4WwI+tEeSWDp5s70d5AHJfYiYlV7sgYq+7bIMFDF0UBF4zYZKNV+EhasKvoCdk2WtXZB4IhCw+9K9IcGKsPyaH8vM42EGuqUD9veSpqRPYNWROSA/PKJxvUaKAHRHDYGbCbNAkFmScImYh05WBb9ZKsvUBof60TkzN+olDoiu8i057HAQCVKzEClJ3uyHssKA5XNypvZGLhzWMHox/P62gB6kxJ2dMfznkM4lgDPEQxLmz6rdW9xnSdVX1N4982TtUK/PPSXObc7deKpAID3N7yvWa4Y0JpMPFIixYPfPIiUlNKYXBphn6H7gCc8luxYYvX0DfHUkqcAAFcfcLXh+v1H7A8Kis83fp61Tq5Od8Hv8qPCU4GgP5gzeOpN9qIl3IL6qnp4XfLvVV9Vj7qKOqxqW5XzPAdZAJUEzxGUGww0LKK3xEClZ6BKGalgrNNhyBhvZoIRILs7d0S3XT6oZ6SZgKIAEbmhBiqhYeqY/cIna3ci4OYxpEymOit1VH3cJIXHztWuiNxjwu7ZZaA8qmq+lEjhKqGtgN/NK1VfY2r8JQ3WrIIFtaXUQBFCZDZW9wyxmXEuBkrNZCo+XRZSrOy5zdXGBdCm6PVpcr9H9oBjL6n8vfDktEzmnM1ZFn26vy/IND7WjjWZYwzAACpPCi8pSkgUwJzbARNwA9bGR4EnShDPEE+JpjYGgHEApR/P2bifqxcqQzjds7XMkx00J0RdCq8PIvKueBeW7ViGoYGhGlNNI8wYMQMcOCzavkiznKU7sw1oWWBHFSaG2QjkwrCyYdjavTXvdmZIpBJYuG0hhgWGYXTlaMNtvj1Orsx7bfVrBR+H4emlT4OCZmmtLpl+iaKZMsOufzPYQDiWQKXPZUifZgbY3FomINt/yOvilSa6RojoBrgGlS2Afr+A9aBAPSPtUVIFxdFAdUSTmlk9szJYsDGM+mBAuYbsxcUqHI1E5OpztW9jwBv+JlGbM3u5F1zGSLOUQQ0hRAksd7UDOUOGgSqdBoodR88YWmOg0imfWDLT7LmIDBQLtOIpUdYjurUMFJBJb5oZaaZUGii/m1fS27lYFn3BSV/Aqln1DBQ7hs/m5KSUyPyeuVN4/ZF+lAt3/JaPI3AcRIlqApJ8KTyjhsL68Zyl8lssVOKFY0lU+VzK+aqD5mwReeEpvH/O/ycoqGn1nRqEEAT9QWzu2qxZzuRi2dpB+e9QNITVodVorGrEyPKReY+z75B9kZSSaOposvgttPj7V3+HRKWc3+m7e38XgNz7r694fPHjAIBrZ2mtGa4/6HpDXy41BlcAFU2aljurKf58YI2BGcxYEgb9y354ekZkykBZrsJjDJSoaZBqB2ZVeJ3pGRADc3oWJaqpKtPPNGNmDBRL4dmtwhOMLSKUgNFyCi9TKZmUaMkaCTNUqbRjAwH9kcIDtIEqgyha0UBl2Bw7zZ7Z98prpKnSOEYTKQ1bw15SLLg0a+Ui6QxrFeF7DpYlmkiBI/YnDkZg1axGDJQv7XE0UOBz8/AIXM5rA6gaO5eYPWPPodUqPCDTk5FSatoLz5VD+qEfz0dW+eDiiaWmwp3RJCr9KgYqodNAqe4ndl6FpPCYyPnnh/zc0vYTaydmCcnNeosyjemDi/4MALhixhWWjsGE5HYaCavxrwVyn7rfHPEb021qfDXwCl6sCa0p6BhqfLP1G5S5y7B37d6a5RXeCpyzzzk5P1vwqEAIqSOEfEgIWUEIWU4IKVwxZhGdsaQyUOthywdKV+1mxpIwRHQvezYj0lO5hTJQ0XhKeVjtpgpcPGc4ewqn++Ax+Ny80oRZHRTotQ5GPlAAUKaYjhZShZdDA2VHRK6k8KSSWRgwsOvSMGAYKJ2RZglE5Ow4+oDXzKlYjQqvAJ4jaQ2U9X59SgBlwQcKkF9qSZFqGaj0S6orlgQxKC7I+EAxDZSIgJtXgrZcLIs+3d9XlHmEbAZKVaAykKC3ODFCpEDpgV2w59DKcdh9xwL5VLpViV0NlH485zmCOotWBuFYQmagDCov4zoGiuNI2ufMXgS1o2cH1nesR0NlA0ZW5GeGAOCwurQj+eqMIzl7LvSdBtjz/r8N/wVHOMsNds/aR9ZJfdD0gaXt1WiPtWNd+zqMrxmPGn9Nzm3rKurQHmuHKOXPOplhyfYliCajOHCUsTD+2TOfzfn5vozCKQA/o5ROBnAQgKsJIfm77/UBuRgojx0ReSKlCXLMWBIGo3RTQ20gi8q1W/LMKPs+MVAmTZTD0eyegYx5alQFUD4XD7fAKQOlbGOQfVuw6+UpQESeSvcoVMNqWwb1eWZSeMaeLcUEq0Ji6dpdDX0Kr1QBpHEKT/7tclU9EkLSbYESlpsJy8eT77UKiwEUK3bQOpFnKhSNjpmlgYrLDFbAzUNIB31mkNmu4gU3fo+QzUDFU0Wp8is2ZJPdfCm84rW6yQX2HFoZWwVdAMWsbcx8oAATDZTBeN4YDFhioMLRJKr8btUYb25jAMjjm10N1F/m/gUAcPH0iy1/RhGSr88IyXO1cklgIzp6d2LmiJmaJr+AzOx9/6Xv4/XVr2uWj68ZD4ETsGzHMsvnxXDrx7cCAC7f//K8204fPh0UFF9t+cr2cRj++NkfARj3D7SCggMoSulWSumC9L+7AawE0DfnrDyQWRVjql/RQOVxFAcyM1AGM5aEIWKgT2oI+tGianAJ2C955rg0pR9PFew3Y6SBopQibMDWsRy+WtdDCEGVz5XRQKXbyugRKFBErngL6ZjBqE3vG30VXqk8oBgyDNQACaAEbQqvVBooj4vP+q3MqnT0YP3wbKXwBF5hr3Kely6A0lThpe+h7t6UYb8+fQDFnn/WyiinBkqX7u8rAm4+y8YgYrOJeH+h0u8yrFDsTYoIRxMIRxPY3iVXpJU6AGTPoTXjXW0Kj2Ul7IrIjcbz+qA8ce6IJJRroJ8cAiyAcoHnCHwubdo2rrMxAORx0m4K7+klT4OA4LpZ11n+zMxRM0FA8HHLx3jwmwfxyqpXMH/LXCRIE7ZGmrC5azPWta/Dbz74DS584yhs9cq6oF8ell3ht2zHMjyz9Bnc+smtWetGlI3Atp5tlvrJqfHssmcts11MSP7qqldtHYOBUorX1rwGN+/GOfvmTtWZoSh3PSGkAcB0AIWHghYQ1ul61FACKN3N/INH52HCsDLcfGKGHIvEU6hTdX9XsyRG4mSFgfJoH6R4SsL27l6MqEx7faS3s1OO7E93ki/Ub8YtZAd/vUm5MkZf2TR2iDwINepYFUbVSxJFwiSAqvS7wRH7AZ7iLZQQNdfFbsCo1qn1BwNVW+aBW+Awqjp/5/X+gN5Is3QaqOz7KaVooHJf80q/SzbSNNFUGKHC50Kthf6PCgMVkV/odhgovSFgRMX4VPndOavwCjG3zQW/W1B+Q4aozSbi/YUqnytL59mbFHHwHXOyAiujNinFBBu78hmuApnqT3bfsvvZyN9O8YEykEEYWVg0DgkgmhAx/db3lGUz66vx4pWHKH8nRdb0Xh5/Ax4+ZxUeII+T6hTe9q5efOuuj/HED2dh+phq6NHU0YTWnlZMHjIZVb4qzbpNnZtw3JPH4ZajbsH39v2eZh1HOIwsH4kt3VtwxRsqTZMX+OE7AN7RHodDOU4Y+12cNum0rHNg7ufzW+dj+Y7l2GfoPsq6/Ybuh01dm7CybSUmD8lOTFFKcdRfPsLVR43H2QfUAQDWhtZie2Q7ZoyYkWU7sGLnCnCEw8TaicqykyacBAD4bONnWfu3gnfWv4OeRA9mj5utcSW3gz7f9YSQMgD/BfATSmlWYylCyOUALgeAMWPGFHyclCihuzeVlZZi8PDGNgYrtnYpfeEYjBgoQGZJygxeTEYd2dmMqKktogRQUZtpKUB+uKKJVMF+M8MqvPhotdbcjdHu+sqm8w6sx8ThFRhaofU1qvK50RFNKFS3UQB11szRmDS83HaAZ9ZfLZpIQeCIZSZFrVNLSVLJReSXHt6IYycNLflxrMIjcCCkH0TkLj4roGAv/Io8L8kqnwttPQnlGbTCEl5/3ISs59MI7D4xZKDcKgYqTwpPb4rLWDMzRIqcXhtR5cUX67TtYyJxseQBSCGo8ruweLP2XmgJRdERTeKcmXWYOKIcAFDhdWHyiIqSnsvIKh+euGQWZtRnBxN6CDpd05aw7Ndn1OTdLeTXQKnvtdOmjwJRbf/R6p34Yn2bxlRZ3/Te79ambeNJMUvQ7hW0AdSyLWFsTX6A/yzbgUDgQIwoGwGfy4dNnZuwvmM9/vK5nL4z8kl6ZdUrWB1ajQtevgBV3qosg823vv8WXln5CkKxEEKxEJo7duCblp3YZ2QFKv0CBCLguHHH4aBhZ+H8h5bhpzNnZh0DAF5eJeuoCAgeX/w4/nTcn5R1xzYei7fWvYWXVr5kGED1xFNoCUWxclsmZPjdR7JFwg0H35C1/Vn/OQspKYVVV69S3nPDyobBw3uwOrTa8PzygTmr//6o3xf0eaCPARQhxAU5eHqaUvqS0TaU0gcBPAgAM2fOLLjbj/6m1IPN0NUBFKUU4Wgi6+HQD4rqZrVG7FFGRK7WQGW8oFh37kIElX63gEhcxUDZnO021sozop3dcSUwMusZWOYRcMSEIVn7qPS7sKk9qgQ5RhqoCq8Lh4yvtXVuAOB1Z8rP1ZD7meVvDKrsR6VTS4q05N5MtWUe1JblZ0b6C4QQeAVecQkvnQYqW0TOAvLKPF5NVX431u3syRhpCvnPsa7GjzoL58Vm7GEjDVT6memKGTPUgiqA0pviVvldaA33mh43mhBRW5b7e9tBYzCAlxZsQSwhKq7+0URKKfAYSJDZOW1wyQpnzj+oHvuNruzX8zEau4zg1qXlmOhbz7wDFn2gVON5mUfA+QfVK3/7XDw+XrMTreGYktXQtxzzu3ml6hgwY6C0Kby/fvUHhDz34475wB3zjb+nwAn44fQfZi1/e93bqPHVYGT5SJzxwhmYc+EcHDQ60/x3yrApmDJsivL3/OZ2nPXAXNx97CwcvlfmGi/bIpsuiwa5xc7eTsxvlU+MguLxRY/j9mNvh8DJ1+q0SafhZ+/9DB81f4RfH/HrrM+za6S+v95Y84ZhOq0l3IIVO1cAAOZtmadxQh9dMRobOjYgKSZzmmXqEU/F8eXmL1Hjq8nprJ4PfanCIwAeAbCSUvrXgs/AIsJ5Aij20Khf1NGEXLETjiaVgVe259dWveTqQg9kHiS/ipkZUemDm9d2547E5ZJno3JZM5SpGCi3wNlmFlhFnVrYyGbpZhWLesgaqKRiE2BX55QLzABS/1K2m7bwujgleEhJUkmNNAcqWGDr5rmiVYVlHyPbVLYzmvvZY6j0uRCO2DPStAqmGWlPn0uZ7qUGyGXgRlYLjJWSKM0yR6z0uXMyYBGdZUJfwVy1N7ZnntdI3H4T8f5Apc+l6ZMJZDyQ6gdAg20zMAaKBfItoSgEjihtVdTIqYFK5B/PM+Nv5j3QqUw45Ocl4BEUNgsw9qTyqETkW7q24H8t/wKoC9OCJ2PmiJkI+oJwcS4MCwzDzJEzce6+5+I/Z/0nS9gdT8Uxp2kO2mPt6Ih1IOgL4sRnTlQCECOY9pDUNRNW470N70GiEoK+IABgR3QH3l3/rrK+sboRLs5lKiRngdPOnjCeXPwkjnzsSHQnunFU/VFZY9vb694GIDNdTyx+QrOOCcm/bv3a9PsZ4b7590GkIs6efLatz+nRl6f2UAAXAFhKCFmUXvYrSulbfTojE+h7u+nBcQQCRzQMlFoc2hKKKo1zRdUMFMiwV2aVeKz1gzo9IJe0+tDSphoI0z2h7Lzc/G4B4Vgyq0GqVbDy3ua2CGY1ymWfygsvD2PAwDRQ7PsXw/OGQc3uqWFXOOt18emeTBKSqdJroAYi5GuZLKmFg5EPVIfFAKrK70J3PKXcR8U8z2wGSjsBIgSg1NjsU21joGeT5Xs/hxN5XCxqhZnazXrv4XIKLKIz9h0oYHIJ1icTkCdqwYAbFV7rs/3+BgvcWVDUFIpgdLXPkLXOtAAz0EBZsLBorM1MYA/fS16WYaDk6+d380oaPCVKkGi2oF2tgTrxmRNBIaEmcTWOH3kp7jh9Cqzii01fIC7G4Rf8EKmIrngXXLwLxz91PNZdtw5uPvudkCkS0Z4Te270ru4A8NJKOeF0xYwr8M3Wb/Dehvfw6MJH8Z29vqNsM6J8BDZ2bsSYu8fAxbsgEPlapqQUehJx7PRG8PTmMJ7eLO+/3F2Ou2ffnXWsV1fLInEKiqeXPo2/zv6rEjh+a+y38OLKF/Ha6tdwcN3Blq/TP+f/EwDwuyPzO6vnQl+q8D6jlBJK6RRK6bT0fyUJnoBMVJ/LcM8taPvCqQdGNkOIGgi9zV7yDBFd6wiGxtqAZuYRLaArecDDKz5QhWgtRlX5IHBEcx752Do9qvxuxJIiutKfs9vvLhcy1za7Cs8uAyXvR0SyHzRQAxHsWpbKA0o+hnkKL19Azl64bRG5MquYadbsKrzMvcNxRGGHjVgvXjWT1luSVPlciCREU/84veVJX1Fv4GYdLfDZLzUyHnGZcbQlFBkw7vxmYIE7E5HL52xcTauk+wx+fysFBEPLPfC6OLSovKH0Egq5V6McQJlZKngFDpQCW3u2YfH2xfCTsSiXZuf14dLjrXXyK/iUiadg7g/nYmT5SHT1dmFT1yYs3rbY8DNmnQb0BrQMEpUUAflZ+5yFqw64ChKV8OrqV9ER61C2O2XvUwAAm7o2YUPHBqxpX4PVodVY37Ee2yObIZEOuFCBC6dciPmXzUfnLzsxeahWL5UQExo/qc54p3JsAErA9unGT61dIACtXa1Y37Ee42vGY3j5cM26BVsX4J4v77G8r0HzFjLT9ajh0XkiqV10m9NMkZElAXsxmZlp6puXMtQH5QCKqh2ObQ6EsgYqhYjJMfJB4DnU6q+l2gAARLhJREFU1fg11TLsWpkJ7vVgA+W2LlkLUtQUnirwUaMQBkrejyRX4e2BKTwWRJQyePS6Mjorhs5oEm6By8tMsvtoZ7rZajF/I0VErlThae8dxigZVQpqGChdbzvFjdwgjacXnBcDlT4XagJuJeWeSElIiFLJfZQKgdJoPKIeRyMDxtrDDIoPlCSBUoqWtqih/gnI5wOVfzyXTZUDhhIKNv76PbySOk6YBVAuHqIkYm1oDTjCIdj7WwD5exHq8crKVwAAZ00+Cw1VDfj8ks8xdfhUAObGlpISQGnPSV/NyLBo2yJ0xjtR66/F1GFT8Z29voOhgaFISSk8t+w5Zbs/fuuPeP+C9/HBhR/gk4s+wdwfzsXCKxZi3bXr8I+jvkZd7EXsy/0Hj5/2OGaOnGnI9DFGbVhgGM6YdAYICP69+N/K+tEVo+HiXHmb/qrxh0/+AMBYgH/LR7fgJ+/8xLLD+eALoHKwKm6B0/hAaVN4WgZKPYM10+kwmDFQDUG/pjt3tICu5LIvjNinmW59UOuKHo4lLL3wGBizsD0dQHlKkcLLEpHbCzbVOrWkuGczUKXygAJkLUYiJWn8zWRTVuMelGqw9Hpbj/wCKeZvxHEELp6oekZq7x0WgBgGUExETqniCF2mpPC0vSDVYOn+YuuT6oN+ZTxiPTgHUiNhhkoluGR9MkW0dvYOGHNZMzB9ZCJFEYok0B1PmbJmrpxO5NbG84Zav04DJTvis8rKMpUGik3wjXygIrQJEqW4bNqPwUlywU4ujzI9tvdsx7qOdRA4QfFICvqD+NvsvwEA3l7/tuHnFAZK93yzeErUMVAsfXfW5LNACIHACbhq5lUAgAe+eUDZzufy4dixx+LoxqNxeP3hOGj0QZg2fBrG1YwDFSvAwYtwNJHTQPSVVa8AAM7e52xcOfNKUFC8ueZNhKJyJSshBKMrRqM91o54Kp7z+vQkevBh04d4dtmz4AmPK2deqVkfS8YUHZdea2WGQfMWCkcTIAQ5c+9uHQPFgq6xQzKpNiMHbFYNY5bCM9MnKQLCdPBSSMmzP/1w9WWm25A2d2NMWGfasd2qFkthoDpLwEAJJim8hGjrpcGCunhKRKofeuENRLCAuJQaKJ/CxqonIglLejoWjLR1x8GR/L5RdsECR6+Ly9q3ut2GHkoAJdKs55/d+0aGkXYbXltFQzCQGTP6ycm7EFSpNFAAsCktfB/wKTwhw0CxQNWMNXPl1EBZG88bggFsDEUVLRHzK2SaWeb1B5gzUCnagRTtgZt34ewJvwAgv7c6c+jz9GAv/4NHH4yAO/N9Dxh1ADhwpik8UxF5OoLSi8ifX/48AODCqRcqyy6bcRkICJZsX2KJDWL3lESBHp2xrBrMKuGcfc7B0Y1Ho66iDiIVlXMAgGnDp4GCovLOSgz/y3BM/MdEzHpoFo587EjMfmo2vvvsdzHxHxNReWcljnniGHTFu3B0w9FZAvw5TXMQF+Ug7JGFj0Ci+U25B81bKBzT3pRGcPNaDRSjUqeNrlIo1qhBaaqZTochEjd+2WcEhBl2y+5AGHDz6UrBRMEMVEPQj0hCVGb+zAXXKhhzoARQRdVAmaTw4vZE89oUnrQHi8hLncLL/r3CUfMelGpUKQxUvCQ2E+ylYxTQsMmHfhatXiZSmtUyiQWGRqkSo3R/MdAQDKC1sxe9yUwLp4HIQLHfk7EgjOUe8Ck8LqOBYtINs6AvVxN6q+N5fTCAhCgpEohwTNtyLOCWWd2kKCkyEX0AVRsYBjfGYN+h+ypyjGmjqwwDezOw9Jk6sAEAj+DBmKox6OjtQLg3nPU5RUSe1UxY/r9aRB6KhrCufR3K3GWYNWqWsnxk+UjMHj8bQKZqLhfU3yscMf6Ord2t2Ni5EWWuMhxcdzA4wuHaWbIz+r++/pey3VmT5d57cTGO7ZHtWB1ajfmt8/HJxk/w7vp38fqa17E6tBoSldBY1YirZl6F5896Put46vTjtp5t+Lj547zfY+A9tSbI1QePwSNomwJ3xpLwCBz2Hl6OlxZuQWcsachAsYBBr/1giCZShiZsIyq9mu7ckUQKYzz2ZmcsaNrZHcd+owrzValXBXJDyj2WGQMGFmxtVRioIop/TQT6UZO0qBnUQv+kSItaIj9YwO7TUmugAG3KtTOWxJia/Pc1u49CkYSSFi8m5LRH0jCtkouBUmwMpIyNgV4DZVSJp7BDRQ5umIfcpvaoiuUaeAyU383DxWd6BbIX+0APoNS6puZQBDxHMLraLIWXWwNlZTxnlZUtbRGMqvIhHE2gUqU/VRoKJ8SMiFxfhSdw4KQKlHsq0BKKoswjYOyQAGJJMd2fNPf9IVEJH7fIL3wm3lbjkNGHoDncjE9bPsXJe5+sWaf0usxqJiyfozrF9trq1wAAJ4w7ARzRfocfz/ox3l73Nl5Z9UreVizqlHk4lsAYZF9n1mNv9rjZyrEumnYRbppzE5bsWILVbauxd+3eOH3S6bj3hHvRHe9GSkohJaUgUQk8x4MnPHiOR0NVA45tPBbDyoYZno9EJbyx5g0AwBFjjsAnGz/BgwsexNGNR+f8HoMngIolNTelEdwCp009RBOo8ruUVNvGUNSwaa8ZS8JgViEn8BzqqjN6hkJKntnMuau3cL+ZBlUq8YCGGoSjSU2rmnxgVP32EorI4zqDU7ul22qdmqyB2hMZqHQKr8RVeICWjQ1Hk5gyOj8DVe51gRB5RrurGCgzZpLnCFJSNgNVmUNErgRbRQ5u1N5t7LwHYhWe3CvQrbzsmkMRVPtdlv3ldhXUPlDNoShGVfkMGwkD8n3BEbNeeCLKrKTwVFYGh4yX7yV1AU9AZZjKmC69zpRNNCmlaE5XOrJxuSuWzDsmL9m+BJFkBBNqJmBIINtw9PRJp+OZZc/g5VUvZwVQUo5mwoCWgXp00aMAgCtmXgE9jm48GhzhsGjbopznCshjCquaNxPKP7nkSQDApftfqiwbEhiCkyecjFdWv4Knlz6NPxz9B3gED66ZdU3eY+bCgq0L0BnvRF1FHe454R5M/9d0vLTyJfQkenJ+btBM4zujibwMVLaNQRJVPrcm1aafgQLmLAlDNMfLvqE2gKa2DANld7aqHjgLnYWOrvaB54gyQ7TC1qnButKXogpPNn3UXtvepARK7c3s1Tq1lLQn+0DJDaRLdgwDU9mOqHkTbzV4jijp4FIEuOwlaBTQsOfIqJkwOzdRZaTJtF7lHrmRsdEgHi0RA9WomvBkJAUDj4ECtK1uWkJRUzuAgQS1D5QV2wUXr9XOMsgmqvl/l+EVXriFjKmyXkLBJsaRuCqAMvCBAmRNUEsoiobagMpGIn8a79mlzwJAVu87BiYq/3zT51nrzHpdZlogyefc2duJuZvmwsN7cGTDkVn78QgejK0ei854J3ZEduQ833AsqTB3Rt8vJaUwv3U+XJwLx4w9RrOOsVtMYF4MPLXkKQDABVMuwLTh07DPkH2QEBOKYN4MgyaACsfy63r0NgYya+VS0g/NbRFF12DEQMXNvGBy+LSwihpKqe3KMsC4q7xduHgOo6t9mQc4lkB1wHoKj800WTqhmCk81oJE/UIuRDirTi3t6VV4/ZLCS/9evUk57WCliSuQ0c2U4hxZ2sPoOWH3kpl1Ak8IpDQDpTbFJUQO+sIGVXilYqAq/S5U+V3yhC5hXFU4UFDldyla0qa2iPLSG8jItHKh6XPOHfS5eQ5JXTNhxcLCwu8iWxn4lcKAjmjCkIGKxEVzHyhXRrC9qT2KhqA/pz5PDya2vmDqBYbryz3lqPHVoDncrBQbMZiLyFkAJf99//z7IVIRp048VWnZosfR9XLK65117xiuZwhHk8rvYiSU/3zT50iICRw4+sAs888j6o+A3+XHqrZVloTeVvDiihcBAJdMvwQA8PNDfg4A+NuXf8v5uUHzFrKmgdLaGLBqNJ+bx/AKL5pDUaUawqdiWYxYEoZ8Pi0NQbkX3eaOGCRqv5ddQMNAFT6IMk+q3qSI3qT1Fx6DOjgtpogcyDZnjCovpkJsDGQfqD0xgPIoVXiltDHQpvDseoqxNHspGEJ2bsYpPHMNFFsuSkCPwWTIrKGwUbq/WKgPBtASiipBmlEPzoGASp/cDy+eEtHaGRscDFT63tvR3Yvu3lRe2wWXwGWl8JSOFRbHc/Z7sqb36vGX3W8RVQpPH0Cx91EszbDXBwM59XlqbO/ZjnXt61Drr8X4mvGm200ZOgUJMYENHRs0y8U8KTzGQN0zTzaY/L9j/s/0GOfudy4A4L8r/2u6DaUUnbGEwgwaPXv3z78fAAx7/RFCMHXYVCSlJFbsMG9RYxWbuzZjS/cWjCofhXE1cmPbs/c9Gz7Bh4XbFub87KB4C4kSRVdvMm8aIcvGIJaZCTTUykxRNF39pa7mM2JJGPL5tLCbYHmr3FXaPgOV3RS1EDQE/Whpi1ryyzICC07dApez0rEQ+HTmjBlxrh0GSuVELkp7pJGmrz8ZqLSIXHEht9FXEQBcJRD5M2bB6DmxFkBJhul41spIj0giO91fLDQEZe+gaKKwJuL9hSq/3CdzU3sMlBo35B1oYAHUuh2yfiUfa+biSVYAZdfCorHWj5b2iGEXCHa/ReNiDh+ojE5K3p/1FN5dc+8CBcU5+5yTc7vjxx8PABoLACDDQOnH/YwBrWxoua1nG6YMm6IEGUY4bMxh4AiH+VtMOiAj06N2SLkHATef9f2SYhKvrX4NHOFw5uQzDfdx0oSTAOQO1KzisYWPAQDO3fdcZZlX8OL8Kefn/eygCKC6YklQmn8QV9sYUErRocpFN6QZmoiJ/5BRCwsg87IvMxng2ICyolXuXG2X7ldv35eZbkMwgO54Chva5EHDThUekLm2paie8rq0wWm0gLSFWqeWKpFIeaBD0UAJpddAxdO/l5UOAGqw+6gUDFQuETl7jnIGUGkNVBYD5XcbpvCiBun+YqEhGEBrOKakx/xF1B0WE4ydY+mpge4BBWSC9/XpACofa2akgbJrYVEfDKA3KWHNtm4A2neVFQaKTRBZ4KYWkedioCQq4cFvHgQBwa8O/1XOczxvv/MAQNP0F1D3wtPbGJB0UYiEX82R9337MbfnPIaLd6Guog5be7YiKRoHfuyer/K5UeV3K38zPLXkKcRSMcweNxtl7jLDfXxvH1nrZcUyIR+eXvo0AGQJ0X9x6C/yfnZQvIWs9nbzCLxyg/YmJSRSklIxUh8MoK0ngR1dvYbpOP1LniHfy571oluxNc1A2aTiNQxUH7QWrDR60aYwAPsMVGU64CqmgJzB4+I1wWmkAOEsG2CYE7VrD2SgWHDbPz5Q2hSe1corFmiVwmaCtbIxZKBy2BgAsrhclIxNcc1SeEbp/mKhodYPiQKrt3XDI3ADdkJQ5XchlhSxerscGAx0CwNAy0BxBKir8eXc3s1zSOqMNO1aWLDrsmhzGIB2AqswUAnR1AeKTVzkvog8hpR5lOKeXBqoN9e8ic54Jw6uOxgjy0fmPMe6yjp4BS+W7VimWW6mgQLkoKon0YNPN36Kam+1plmwGQ6tOxQUFB80G7eOUY8plT6XpuUaANzx2R0AgL8c9xfTY4ytGQuf4MOynctMt7GCSCKCNaE1GF42HPVV9Zp142rG4djGY3N+fmA+tTqEVRFrLsg2BrrUQ/ozjMZdubXLMBjyunj0GjaUzP2yF9IC7hXpFF6fGKg+6CDYLGtxOoAqVANVigDK6+I0/lwRk3YcucB0aj3prualLOUfqNgVInIrTbzVYBqoUlThsbSHIQPFbAxMAighncKLJMSs56zSnz2IAzBM9xcL7Hld0dpV9Cq/YoL9nks2h1HhFWxPzHYF2PMRSYgYWeXLSpcZba9vJmy3gIAxc8r4q0nhGVTh6cYvj0oDVR8MgBCSLu5x5Uzh/e6j3wEA/vStP1k6z7FVYxGKhZBIZVifVI4AiiME72+5DxKV8KMZP7LU3YKlwlhloB7MMqTK58r6fmtCa7C2fS3G14zPaiysx6Qhk9CT6EFbtC3vOZnhga8fAAXF6RNPN1z/1vffMlzOMCjeQuwC55sFq20M9FogJiRs7ew1DIY8AmfIQFmpkmmolZ2FAftBkHq/fWGg6qr94AiweJOcSixUA1XMCjyG7Co8+y0ymE6NMVB7ogZqVwRQHTZTeNX+Elbh5bAxyMdAMRG5UWPwKp8b3fFUlg7GLN1fDDArg9bO3qJX+RUT7PdcvKkTjbUBy+2hdiXU954VxswlGGmg7DFQI6t8cPNcZvxVi8hdagYqdwqPUorG2kya1IihYdjesx0Lty3EiLIROHTMoZbO87AxhwEA3lj7hrIsHwM1f+d/wRMevzvqd5aOcfxex4OA4LONnxmuz7yb3aj2uzUpyhvfvREA8Lsj8x9r9ljZ+dwsULOCP30hB543H3Gz4Xp9BaAegyKA6rQ4iKtF5Hrthjp3b8pAGaXw4vlf9uqH1O5gyHNEeXj6MhN1CxxGVfsULyerVVMMVYHSpfCyqvAKFM56XRy6GQM1QFMepQS7T0rqA5U+RkyVwnPxxPJ9XVINVA4bg3waKI6TDQONHPDZOXfpZvpmPTCLgSq/CxXpZrOl0FgVC4zB39bVOygq8AD5HmBxnhXNlrEGyh4DxXMEdTXG46/Ac/AInKyBEk2cyFXjrvo6m+nzAOCXc34JALjxkBstnSMgN+UFoPE3ymigtOeUEBNo515Fr9iFYxuPzeodZwaBEzC8bDhaOlsM16sLUyrTRQoAkBJT+N+6/6HMXYbv7/f9vMe5aPpFADLu6Hbxxuo3sCOyA4fWHZo3/WmGgfvkqqCk8PIEBR5BzmVLElVSD4y18rsFDC33YEd33JCB8rq0FggMEQsve/VDWshgGHAL6E0m+jwTbQgGsKk9ZuuFx6AwUEW2MACyg9OIhaDUbD/djIHaA400Pf3BQAnZKbxKn9t6Y2ofS+H1MwOlVOGZOE4T2Yk8YqSBUlU7BcsyL4lCmoNbBSEEDbUBLNncOWAr8AAtkz0YPKAYXJwcFFlioPhsG4OoUjxk/fdvCAawfqcstq/QTfYDHgHRuKg8X7kCKPV1rvK5lKBMDUopnl/2PDy8B9ceeK3lczy68WgQELy55k1c89Y1qPRUYsnGJDr5Hfjth18gkoxge892fLHpC2zq2gRK5ODqrtl3WT4GABww8gC8tuY1LNi6APuP2F+zTtFA+VyK/pBSij9/8WckpSQunXKppfFmQnACPLwnr9WAGW547wYAwAMnPlDQ54HBEkClI1Q2YzMDG2ATomToX9MQDGBHd9yUgWqPGFTiWEg3aRioAgZDv4dHKNL3mWh90I9P18LWC4+BDZT6FgPFgKwv01bhEWI/Xeh18ejplX/XUpTJD3Qog28J9V8cR+DmuYyNQTSppHGsgE1YSpFi9ViowjM10uTSRpoGjcEz1U5aBioSF0vqEF4flAOogcxAqbWU+fyUBhIEniAhWjtnN89l9UFVLCxs/DbsWBVeIYsJ9bt5RBIplHkFuPlsqxh19bOegVqVruxT45GFjyCWiuGcfc4xNbU0Akc4NFY1YkN4A+6bf19mhRu4XZVxIyAYXTEake69cfK4S7Dv0H0tHwOQW8e8tuY1PL7o8awAqjOWhM/Fw+viUeV3pSc2Iu756h4QENz5rTstH2d8zXgs37kcvaleeIXsfrVmWLJtCVaHVmNS7STsO8zed1Nj4D65KoSjSVR4hbyVKiyqj6ckw8q9hlo/5jW3G9LyPpMUniJ4zjGQqh/SQhmofMewAhbIFSL0rCphFZ4+hReJyw6/doM8j8BlNFB7IAPl7QcjTXacuCqFZ+d+UqrwSslA5fCBytXKJZ4SDU1x2Tnry8WjiZRl8XwhaEwzDQNZA6X+7QdLCg/IBNJWWDO3wKGrV5e+jdv3qmPHMrpnAm5BEZEbTYDU425jbQASlfDnz/+MT3YuwNpYO7734oMI94bR1NGEbZFt6I7LQdVd37bHDAHARxd9hM82fobeVC+6E914fek6LGzpwf+dciAqvZUY4h+Cg0YfhIA7gANvfx/DvUNtH+Psfc7GRa9eZFiJx3rUAoDAR9HNvYtjn7gD2yPbcfDog1HhqbB8nKMbjsbyncvx4ooXLfk2MVz55pUAgHuOv8fyZ4wwSAIoa7242Aw1kZLQEU3AzXOaEmQ2ABj7QPFZsxBAlQvPEViMqpJ70UmUFlTyHPAIcPEkb7VIPigBlM0KPKC0VXgeIdsHqpCZvdfFY0eazt4zNVClZ6DYcdjvFY4lMaoqdxm4Guw51acoigH2vY3SKiyAMmOgOELQ1WtcEJJxfNYxUAkRo6pLy0ABA9eFHJDPTRbg00GVwnMLctWulabqLp5oeqgC8m9PiD1JQ32OCazfwyOaEPMGUBwhqC1z4YAHD8CCbQvklRzw/PL0PwmHMncZ9gruhR9O/yFGVYyyfH4MdZV1imM4APSEVmJzSwuumHl81rYCx2maCVuFz+VDtbcaq9pW4fv//T7iYlwJ2JZv3YZosgdD/pRAW6wN8ADzWoEyd5ntdNoFUy/AP+b/w1YA1drVirmb52Jk+UgcN+44299NjYH75KpgpQ8ekClzTogSOqNyHzw1y9GQY8AyM9KMJlJ5fVrcAodRVT6EeuIFlTz73XxRtBbMC6oQBoqlXkplpKnWl0Us9pjK3o9aRL4nMlBMA1Xa764OoDqjCewz0vqMkKXZS2mkafSssImL2fMn8EQRiRtV4QHZjs/REmqggMzzOpA1UIQQVPlcSKQk1Njor7mrIXAcRlR4LU0IDTVQ8RT8LnsWFuz9YmQhwxioeEo0nFzIwncCj4vDIY8eggXbFmC/ofvh+NE34IkvtuO5y47CxKF1GF423PL5WEVKpDlT36JJAEUpxbX/uxbf3fu7SrNiNQ4bcxheX/M6nln2jOHnYzEg6B2K3p6puPvEG3Hpgd+ynZU4YOQBEIiAeVvmWf7MVW9eBQqKW466xdaxjLBLAihKKf750XqcNGWEJVo4HE1a8jViA2w8KRr2zlMGLAPKXM+SMEQSKUvVcQ21AUMGywoCbqEo1T51NX4QkjHFtAPWlb5UKbyEKOG6ZxeCEGB+Uztqy+2fo8/FoyfBbAz2RAaq/1J4bDLRYaEHpRoCz6HcK5TISDPtA2UQcPAcgc/F52wm3JFO0+iDonKvAEKym5rKgX7pghv2wh3IGihAnlwVknLflRB4ojSRzwdjI037FhYjq7xw8cQwW+J382jriSORkkx1phwBItI6zNsSweQhk7Hg8gV4a9kOvPD5Qowum4jhZeXKtp+u3Yn2SAKnTLPPQH28Zie6e5M4aYpceSZKkmmgmCuA+rD5Q9w3/z68seYNrLpmFajkwj1z1uKaY8ajzCPgXyf9C0cvOxoewYOAK4CAO4BKTyV++3ILxgdH4eELjkFLKIFv3/0JRvj3Kej+IoRgTOUYNIWbsKptFTy8By7eBZ7wSEpJpKQUkmIS69rX4aPmj/D+hvexaPsiBFzluHT6pbaPp8cueXK3hGP48zurEU+KuP7be+fdfntXL8bWBvNupxGRxxJZTMz4oWU4duJQHNBQk/VZPUvCwJxh8+GUqSMxYaix7Xw+HDtpKOpr+06PewQe3ztgDA7fq9b2ZwkhOHvm6II+mw+zGmowbkgAS9IuvV4Xh2MmDrO9H6+LB2skvidqoGrLPDhu8jDMrM++f4sJJvrvTYqIJUXbjOZZM+owta6y6Oc1q6EGx00ehtoy43LqM2aMwqHjje9fjiOKzkUfgHEcQW2ZB1s7tdVO0USqZD5QAFATcOOUaSNxiMk5DxScMnUUKnwDO8jT48QpIzCu1tp4XO4V0B5JgFKqvMQLsbAQeA7nzRqD/eurs9YFPIJiY2DEQFFKkeKbkBAj2Du4NxZfsRgCL6j0eVp29L4P12FjKGoYQFFK8XHLx5gxYgbKPeVZ6++dsxY7uuOZAIoWxkD9/au/wyf40NLZgn/O/yemVn0fD3y8HvuNqsSJU0ZgRPkI/PTgn2Z97ub4+xhVMRQewYMqHzX8fnrc9P5NAIA7vnVH1rrD6w/HhvAGTLpvUs59KKAEs0ffWJQJwS55KlpCUQBAc/r/udCbFLG1s9dyNQUga6DC0SRGV2uDEo/A45GLDjD8LGNJRIlqKigiiZQljcIZM0bn3cYMZ82sK/izetxx+n59+OyUop2HGoeMr8Wcnx3V5/2o2bE9UQPl4jk8dOHMkh+HGZ92KQa29tjC356c20G4UOw3ujLn97/tVPN7X+CIUoBglJZrCPrR0p4ZjxIpCUmRlpSBIoTgnu9NL9n+i4Uff2uvXX0KtnHTCRZfppC1Sz3xFEKRhBKcF2ph8ftTjCu6/G5ebiZsooHa0r0FCakHPpcXS69cCoGXj22mz2sJRbG1sxe9STEra/DW2rdw0rMnIegL4ueH/hxXH3A1Au7M+7M5FEV7JK6ci/6dp4Zs/5FNLDR1NOH1Na/jpsNuwtetX+O2T27DLbOOSe8/YnZ5QClNS3LkMYXZPXTmcFvf1LkJf/7iz5CohLP3ORvTR2ifmesPvh7PL38e8VRcCYp4wsPNu+ERPHDzbowqH4Xjxx+Pkd6ZuPM1EcP4BtPj2cEuCaDYBW7JcaEZNqYHNSuGaIwaTaQkdMaS2HeU9ZkzuwnjKa3Rnmy8N3A1CnsS1LYHe2IA1V/wpLVmTBNkx8ZgoIIjRGEvjSZE9cEAPl27U/nbrhO1g8ELJu1oCUVUAVRxLSzK0gxU3CSAGl0xGtUjD4BP8ILjM8+bkT6PkQoAsKk9ir2GaVmme+fdixFlIzBl2BT84v1f4K65d+HWo2/F5TMuR088hbaeOAA5E9RYG0BKzBFApR389fjn/H+CgOBHM3+EUDSE6f+ajudW/R3AGTnf66xHrbpoyeficzZM/uf8f4KCotJbiRvfuxHvXfCehj2aMmwKYjfHTD+vxgvzN4HDEjS35SdvrGCXvIVYZ++mtggoza3wb0pv22iDgYqnGSg7Az8TT+uF5JG4NQ2Ug9JDXaW4J6bw+gtMRJ5x8x884mEzqF8QRhOixtoAtnfFlcCpkHZDDgYnmBZN/VKNJopbQOB3C+hNSoglxKw+eAwBlx+EaNdVBbItNlpUmRv2fmRYE1qDd9a/g6sOuApvn/82Prv4M0wITsAVb1yB5TuWK+9eIPMeFql5ACXwcg9JNSKJCB5e+DDOmHwGRleMxtThU3HB1Avw1Y6nkSI7cgYnmR61qiDRb9zMGwBiyRgeXPAgTp14Km458hbMaZqDd9e/a7r/fGhKB3fNIePYY+6mubj141vzxiUMuyaASt8AXb2pvLlPFs3W11gIoNI3ZndvMq3dsD7w63uAMTgM1MCBJoW3B4rI+wteF5+ehGRaLgx2qF8QRhMixnCzl5MV/zcHuwdGp/uIqpkTuel08X57tq9wLAm3gTVCQkxg4baF2Ni5UbOcFfeo35PqFFmLTgZz37z74OJcuGz/ywAAh445FC+e9SI4wuHZZc9qtmf7yZXC4wiBTl+Pp5Y8hXBvGNfNuk5ZduvRt4KCIiw8lTOF1xHJ9mes9LmUnpt6PLP0GbTH2nHdrOtw5QFXYmz1WNz43o0QpcIKtthvHE2I2Jlm4hhEScTFr16M3370Wzy//HlL+9slb6GWUERJx+S62PL6KKrTPXPygQVQO7rlC2Olco/BLICSWz84s9CBAHUKz2GgSgdvurG20sS7AF+xgYZ8DBRjIdgAywIo59nf/cH6iDapgotovLjjPmOzwml/Qj1cnAuUUmzr2aZhPwghqPS5NP3w2D3qdXGa92d3vBv/XvxvnL3P2RhWlinSGVY2DMc2Hotnlz2LprYe5bMsmMoVQAmcloGilOLeefdi/xH745C6Q5TlwwOjUZE6GRH+Q2zuWaMwuXqw76GuFK/2u5XWa2pQSvH3eX/HlGFTcET9EXDzbtxx7B1YumMpnlzypOH+86G5Laq8R/TB54srXsTq0GrU+Grws3d/ppiV5kK/B1CSRNESiuKQcXLlif5L6NESilhuIcBSPDu65ADKzsyZXVR9Ck9u/eDMQgcCtCJyJ4AqFTIpvN2IgSLqAMqcgWLseDRhr5msg8GNhmDAgIEqXgDFGKiOaNIwhUdB0ZPoQSwZw5LtSzTrWL84BkYq7D28QhNAPbXkKXTFu3DNrGuy9n/efudhQ8cGfLn5Kwwp92DckDIl/SdKuavwUioK6sPmD7F853JcN+s6jQ5pSziG8uQZ4IiAHuEd0zReZzSbgTJL4X3c8jGWbF+iOdZZk8/CASMPwK8/+DWiSXs6JkopWkIRJfZQpzMlKuG2T2/DpNpJeP3c19Ha3YpbP7k17z77PYDa1tWLeErC4XvVgpDsHK4ezW1RSw0hgYwT+fa0W7Ud7QZr1Kru2QY4DNRAgtrkc0/0geoveF1yb7BwNAmeIwPaKdsqmM+N18UZzrbLvS7UlrmVQVVhoHaD7+4gPxqCAY0mV9ZAFS94ZkG7KFHDAIojHAJu2XbhmaVa48lKv0tTpdbcJpMKjUG/EqhQSvGP+f/AjBEzcOCoA7P2f9rE0+DhPfhq22toDAbQUJsJGFMSzdkCSUpfE0opbv/0dtT6a3HOvudotmtui4BHJWYMOw4R/iOs29lhuD+jFmtVfleWiS0g2yQEfUGct995yjJCCP7y7b9gS/cWPPC1PdfynT1xRBIiDh1fC4EjmuDzlVWvYNmOZfj1Eb/GIXWH4JJpl+DuL+/Gip0rcu6z399C7KQnDCvHyEpfHsW+iNbOmKUKPCA7hWeLgRKyU3gpUUJvUiqpG7ED69AwUCVuZ7InQ2agJMVEczAZKJqBzbBzTYbqgwFlfHIYqD0L9UE/untT6IgmMxYWxWSgVPeRWSumcnc5CAGeXfYsJJrJhOgZqJaQTCrUBwNo7YwhnhLxUfNHWLFzBa6ZdY3h81rprcRJE05Cc+x91NW40RD0Y3NHDElRgiRRU0kEzxGllcvDCx7GnKY5uOXIW7Ia97Ln5uoDLoNEuvDGmjcM92dUmFLpc6MzmtSkLpvDzXh19au4fMbl8Lm0raSOqD8Ch405DA98/YBlsTeQyXaNGxLA6GqfwjZTSnHrJ7dir5q9cM4+cmB457fuRJm7DNf+79qc++z3txD7EvVBPxpq/Tm9oDZ3REEpLDNQLLdcmAaKuZhnbtxoOpgqZUd2B9ahFZEP/pf6QAW7zju7e3eL9B2QYaBypePrg/6MiNyxMdijoFTihSKKfqeoDJTqPjILoMrcZaAU2NS1CZ9v/FxZXuV3K9ohNanQUOuXt2+P4t559yLoCyoBgBHOmHQOUuhAXFiK+mAAKYmiNRxDSqLgTRh9ZqTZHG7G9e9ej2Maj8GVB1yZtV1LKIoyj4DvTzsJLtRizkZjEXY4loBH4OBTXdsqvwsJUdJ08vjdR78DAcGVM7OPBQBXzLgCa9vX4sPmD02/rx6MXWbBJyNv3ljzBhZtW4SbD78ZPCef15DAEPzfMf+HD5qymyGr0f8MVFsEboHDyEpfVt45e1t5MLOsgUoHQTu75RRetY3eTUYi8ihrJOwwUAMCWhG5w0CVCizFsK2r11Yl60AG00DlYqAagwFs7exFLCGqnn1n8rQngL1jWkKRklhYqBkoMxuDsrTZpYf3aNJ4VX4XwunqtU3tGVKBBX0vLnsLL696GT+a+aMstkaNSVVHglA/Vnf+T7EFamqLyCJyk/mowBGkRBGXvHoJCAge/e6j4Ej2+TeHIqgP+iHwAsb6v4Omns+xpWtL1nad0ey+tnq39f8s/w+eWPwEbjrsJtRVGptMnzHpDFR7q/HgNw+afl89WkJRCBzB6GofGmsDaGmLQpIk3PrJrWisatSkCgE5SJs+PLfR7S5J4Y2p8YPjCBqCAXREk4qwzGhbAJa7gDMGqq0nAYEjtlyEfQYaqMws1BlEBwI8KgbKqcIrHdjscFtn3FYfvIEMlsLLFRDVp18qG9ujyrPvTJ72DNTV+NKa3CiiJbCwsMJAMbfwCcEJeGHFC0iIzDPJje54CklRUjI2DbVyACWiE3d+dS0mD5mMmw+/Oec5bA2L8IuH4Mutb2NYZaYSTRaRmzNQTb0v48PmD/HX2X9FfVW94XZMlwUAh4w4ExSSYaVcRzSRpU1mk7SOaAKbuzbjijeuwKxRs/DbI39r+l18Lh9+MPUHeGnlS9gR2ZHzezM0hSIYXe2DwHNyyjaewoPfPIH5rfPxq8N/BRevHet4jser33s15z53SQqPBUSZyhdjFqo5FEGlz2V5FizwHFhmp8pvT7vBGKhYQpXCcxioAQWvoE7hOQxUqcCucygSt2QfMhjAUni5UnINqvEomhBNBecOdj94BF7R5JaagXLzxoEZT3j4XD6UucvQHmvHe+vfA5DR8nbFkkrGpiHoR6VPQJf3PnQnO/D06U/nZJ8AuXovIB6JnmQX5m+dg4CbR3NIZqD0w2ksGcPCrQuxtudNrOn9F04YfwJ+OP2HhvtNihI2d8SU52f6iInwiPvikQWPZmmUwtFk1pjCvl9HJI4LX74QCTGBp09/Oiug0ePyGZcjKSXx70X/zrkdQ0sogvo0a9cQDCBB1uMn71yFw8ccjh9M/YHhZ8wYMIZ+jwyaQxEclm6eyWjE5lAEU+uqsrZtCUUtp+8Y3ILcSd6ud03GxsBhoAYq1Hlzx8agdGCTCUp3DxdyIJPCy8lAqbygIkX2AXIw8NFYG0BzKJoxUS1BFR5gzkABsg5qa/dWBH1BPLPsGZw44cRMP7xYUkMqPLrwUXSRLzC94hpMGz4t7zm0hCIY7TsAxDcMP377x4i6a3DfMiAliSBEwtQH3EiKSUSTUWzs3AgKOfhxk1o8dPJDpoQE01EpwUltAGXicVjXcTe+2PQFDh1zqLJtZyyJMTXajBL7fo8tuRcfNn+Ih09+GONrxuf9PpOGTMLhYw7HQwsewg2H3GCYWmSglKKlLao0Yi8PRLHDfRuqXFX4z1n/yRusmaFfR4ikSNGblBSqvK7GD0Jg6hnR1BbBDIPO1rngEeQKIrvaDa9BCk/ph+UMpAMCag2UwwyUDurrvLuJyHMxUJU+F2oCbjS1RRFLOC2c9jTUB/14Y8nWklhYuAUObl5uWG+mgQJkHVRzZzMumX4Jnlv2HNa3r4fbxcku39Ekmnb2YFS1iHlb5uG6/12H0b6Z8MdPsXQOzaEIGmvLcfVBt+PppU9jzbYeROISBJ6DmxfQWDUELt4Fr+DF+OrxmDxkMl7/hsOGreUYVTEqx37TaUUVu+MXD0VUeBD/+uZfGFczDkkxiaSURGtkHYYGffhsYy8iiQg2dGzA11uWYLv7Czy+fAVOn3Q6Lpl+ieXresWMK3D+y+fjw6YPcezYY023a48k0B1PoT7oR1JM4oY5F0MiYZy/1zMa01G76NcRIpEOThjV53XxGFHhNRSSx1MiWsMxnL7/aFvHYNG9Xe2Gx6AXXiTuVOENJLDUkosnu0Vp/UCFutpxdwmgrNgYAKwSL4KAR3AE5HsYGoIBdMaSaA3LjWmLHUD7PTwSUeNmwgxlaS+oGSNm4NGFj2L8vWkmxuvC0c+UoTvRCUDC/x4GqrxVuGjSn/H0FxEkTJoUq9HcFsWh42txyfRLcMn0S/DHt1fh4U83YPzQcoyo9OLR7x2Q9Zkvly/GehrKs990WjHdlHlM0A8OXuxf+x08ueTJLC3U0g3Akxsyf5e7yyGRkTh4+Fl46OR/2Brbz5h8Bq57+zr865t/5Qygmtp6ICKMbmkZLn/jD/i45SNMcP8SYnyc5WMZoZ8DKDk4UdsSqL1X1NjcEYNErQvIGZiQ3K52gxACj8AhnsxmoBwN1MAAe7E7JpqlhZaB2k1SeBZsDAB5bJrX1I6GWr/DQO1hYJrcFVu7AMBWEZIVBNwCwtFkzkAn4JIDKEop3rvgPTSHm7GubSvu/2QRDqwPYN6GBI4c34jTp07EYWMOw6ImD56ki7GpI4pxQ8pM9xtLiNjW1at5nzYE/UiKFJvboxhdbayfEtI2BrnQHIrA7+YxpMwDIMPk7l91Jc6dfiQ4wskpMsrjppdW4vTpY3HG9LHwu/xoqGrAqPJRmPibt/Gd0Q2o8dXkPJYeXsGLH0z9Ae6ddy++8/R3kJJSSEpJJMUkEmICcTGOhJjAxnAror4u/DjtSnDDwTdg26ZTc7oAWEG/jhDxlAQfTzCyKvNjNdQG8O7ybVnbKmI5mxooxiRVFzDwsxYWDAoD5QRQAwLsxe5U4JUWHpVYf3epwuMs2BgAcgD1yqItqPDJzuQO9hwwTe7yVjmA8hebgUoHZLlSeB7BgxpfDRZvX4yrZ10NQC79f+6DdzGregzWJDfiB/tNxenT5MxMuFt2/G4JRXIGUBvbsy2BGJHRHU+ZtnLhVEaaZmgJRVEfDGiYo4agHzs7efw9/R0AuUPIbeIcHFm3H749boxmH2btXKzgugOvw5ebv8TO6E4InAAX54Kbd6PcUw4P74Gbd6OG3x+rt5Th0e9/F/sOm4Sx1WPx21eX4eWFW0ApLTij0b8MlChhQo1fo19pCPoRiiTQ1ZtEhTczWDe1afOqVlFoCg+QX9DaFJ7MQPkcKn9AgDFQLscDqqTYLVN4fH4ROQDFnHD9jh7U1wztj1NzMEDANLlrt8sNd32u4o77LCDLFUARAFOHTcXi7YuVZeVeAYQAizaFAWSKHQBV5aiJjpihSWUiqXxWFUxxOZoJSzncvteE1mD9zjZMHqF9VhqCAXy5QZv668jRW7Pa71bW20VDVQO++OEXObe59tmF4LvC+O7Eo5Vl9cGA4j5fY8MzUo1+fRPFU1JWQKRUvuhugJZQBOVeAdU2B3B2cxYy8HtdvM4HSoSb5/Lmlh30D9hv61TglRaaFN5uUoWnMFB5WAU2HiVEyWkivoeBaXITogSfiy96oQpLCeZ7n0wdNhVLty+FKMnvIo4jqPS5sHJrN4AMUwYANQE3yj2CqRUQA8vo1NdmUnhDyz1KkJi7mbBkuO6Dpg8w+b7J+LLnGgyp1AY/cpuZXk1GJ9PGJfvdXOkz7odXLLSkjT7VaMhjo2QF/RoZJAwCKLWVgRrNoSgaawO2qTV2c1YWksITtCm8aCLlDKIDCEyn5migSgs1A7W7+EAx0jIfA9WoGp+c1P2eB8bKlKJwiGlpzXygGKYOn4pYKoZ17euUZVU+F0SJZpEKhBA0pO0XGCKJCO787E7c+9W9mLNhDrZ2b0VTWwTBgFuT5SGEKEEFn6OZsJEGam1oLc584UyMKh+DJNmMx9f+EDsjO5X1TFDOUodAJoAyGlOq/C5TQ20AuPOzO3H7p7fb6n3HQClFU1tEE3jK55ixLSkU/TpCSJQqF5aBeULov0RLKIIpo6tsH6O4KTzRGUQHGLwu3mGgSgwWQHEEKN9NhNSs11e+57nS71L0GM7kac9DfTCAL9aHSlI4xIIyKwwUACzevhh71+4NIE0IpJsI60mF+qAfS7d0AgAkKuH8l8/HK6te0WxTztfhsKp7s47VEAxg1bZuU7ZN4AhEvRlmbxgnP3syOMLhT0c9j+v+8y62RW/DMU8cgzkXzsHQwNBMb8G2CCYMKwcAdMZYCi+b3KjyuRGOhQ3P4d6v7sVNc24CAGzt3oq/n/B3W8RKOJpEd29Kk/oEgNHVPnA5bJSsoN+n8vov4XPzGF7hVTRPQLazqR0wAWwhKTyPy4CBcvRPAwpeF+f0wSsxvIzF9blMtRGDDYqRpoWgiI1RzuRpzwN755Ri3GdBWS4NFABMHjIZAidg8baMDooRAvo0FCAHQZs7YkiKEm6eczNeWfUK/jb7b2i9vhXvX/A+7p59NyLiDqyI/wkS1abjWErPrDBHz0ClpBTOefEcbOjYgJfOeQmJ3iHwSdPw9KkvY337ehz9+NFoi7ZpmjMz5ErhmYnI31zzJn7yzk9w6sRTcf1B1+Mf8/+BK9+8Mut75EKTSUs4j8BjZJVPc44PffMQzv3vuZbbw/TpTUQIOZ4QspoQso4Q8ksrn2k0EIU31Po1DNTmjhhEidoWkAMZG4NCtBuyBkrFQCXEoldiOOgbvC7eNF/voDgQeA4CR3YbCwMgk8KzEhQ1lvAl6mBgI5PCKwEDZVED5RE8mFg7USMkZ4SAPg0FyOcsShT3zH0Yd35+J66YcQWuO/A6jCgfgWPHHosfzbgWVYkfoiXyBf4x7x+az7L3MWchhdcd78ZFr1yEd9e/i/tPvB9H1B+B5lAUXheHM/aZjf99/39Y374e33/p+yjzcqj2uzSpxXAsCRdPDJ+rSr8L8ZSkITAWbVuEc148B9OHT8dTpz2Fv3z7L/jlob/Ev775Fy597VJFI5YPuSr6mfs8pRT/98n/4fI3Lsdzy57DjAdnYP6W+Xn3XXAARQjhAdwH4AQAkwGcSwiZnPMzAEZWebOWNwS1OVyliXCtfQZKSeEFCkjh6X2g4qmie4E46Bu8Au9U4fUDvC5+t6nAA9RO5DYYKGfytMeBTdpLwkCl7ycrRUn6Sjxmy6PP4AAys9LLLcdNH16DYxqPwb0n3KtJcW1qj6JMPAEzh30LP3/v51i6famyju0vl4hcosC7697Dvvfvi2eWPoM/HPUH/HB/uS9eSyiipBWPbDgS955wL95d/y5u/eRW1AcDGmIkHE2iyu82TL+x78dYqJZwC0565iRU+6rx2rmvIeCWj3H7sbfjt0f8Fo8tegxXv3W1JU1Uc1sUHIGh11V90I/mth7c+N6N+PWHv8YFUy7AvEvngSc8Dn/s8Lx99voyQswCsI5SugEACCHPATgFwAqzD7gE4/RLfTCAtp445q4PwePiMHd9SFluF25BbgBaiHbD6+LRGUtiwUbZWyMUSWD8UHNvDQf9D6fBa//A6+J2Gw8oQOVEbmFcYBM3J4Da88A0uWUl+O3LmAbKwgRw6rCpeHrp0whFQwj6g0pvV30aSpREvL/pSexw34Ia10j8+uCHsHRLj2abBS0dICD40zH/xLmvHY7zXjoP8y+bD6/gVe51XleYE0lEsK1nGzb2LETI9W/Mfvpt1FeMx6Mn/g9Ths5S3pFrtvdg0ohy5XOX7n8pPtv0Gf7w8R9wyughWLd9b2XbllDEdExhyz9Zuxkftj6Kfy+9Bzzh8PB33sK2Dh+2dXQo254y7ido6ejEv765BwIdgkumXp/zWi7ZHMbIKp/G345hVLWADam/4q657+KcSZfhuv3vACdyeOQ77+NXH12Ki1+9OOe++3KXjAKwSfX3ZgAH5vqAx+TGmTBMDlLOfehLZVlNwI1gAd4MwTI3RlR6CzLGqgm4sbWzF6f/M+MpcWCjPWdUB6XFkHLPrj6FPQK1ZR6N4e1gR5XPDY/AaaqQzLD3sAoAUJyVHew58Ll5NNYGSjLODC33wsUTS/cgaw583dvX4ZS9T0HANw4unmCsyixz0bZFuPz1yzG/dT7Kyf7wdl6Dix9Zabg/gSPYv64Bj53yGL7zzHdwyCOHwO/yo7O3E62+HfjLUgl/X0mRklJIiAnEUrHMh3mCiuTpkLZ/H7e8mAKg9Vw6ZdpI5d+EENx/4v1YuHUh3tv2G1T13IXT/xlX1h82vlb5N6UUsVQMHbEOdEvN6OHn4LzXL4bI7YRfPBSVyYvxy+e6so4HABTHIuBajPsW3IbnvoygTDRv4wIAR+89RPN3NBnFQ988hNu++iN6hK2oTH4Pcxd8F2cuyMQgFNejQgiiCy+Z7pcUUhYIAISQMwEcTym9NP33BQAOpJReo9vucgCXA8CIuvoZrRubs/YlShTzm9s1+c8xNX7NzWIVPfEUumLJggb/rt4kFm4Ma2jB6XXVu00p9+6A9kgClFIEnZdbSbGtsxd+D29psB8MSKQkbO2MWWa1127vxvihZU7PxT0Qpbr3U6KETR0xQx0TAOCoo+T/f/QRIokIzv3vufig6QNEknIabETZaFR5y+Hm3XDzbizYugBBfxB/m/03zBp2EjZ1xIz3Czl4mzxSnhj8+fM/47nlz6HSU4lKbyUEEkCl1w+v4AZPeLh4F4b4h2B42XBUe2vRGxuGof4xhvvlCMHMhuqsqsU1oTWY+eBMBFxVqPWNQFzsRULshYQ4EmIvYqkYoskoUlJK87m9qvfD1dNvxdShB+e9nkkxgV98fC6W7PwSfzzyGcwYfiQApPcfQUKMy/9JcQypEJFCJ3ZGdqI53IyHFjyEndGdOLL+SJyx13XYr/Yw0+McPXHYN5TSmUbr+hJAHQzgFkrp7PTfNwEApfQOs8/MnDmTfv311wUdz4EDBw4cONhtoQqgGJJiEgu3LcQnLZ9g8fbF6E31yj3eUnFMrJ2I3x35O1T7qnfJ6ebD2+vexu2f3g6BE+Bz+eATfPC5fPALfuXvSm8lqr3VqPZVY2hgKA4fczh4zrr+rLO3E4c/djjWhNag0luJcG8YCTG/o/nx44/HzYffjMPGmAdODISQkgRQAoA1AI4FsAXAfADnUUqXm33GCaAcOHDgwIEDAxgEUA7yY0vXFtz2yW2goAqrVuYug0/wwSt44RW8qPBUYEhgCIb4h2BIYAi8QnYxmxlyBVAFa6AopSlCyDUA3gHAA3g0V/DkwIEDBw4cOHBQTIyqGIX7T7p/lxy7T6UGlNK3ALxVpHNx4MCBAwcOHDgYFHAMdRw4cODAgQMHDmzCCaAcOHDgwIEDBw5swgmgHDhw4MCBAwcObMIJoBw4cODAgQMHDmzCCaAcOHDgwIEDBw5swgmgHDhw4MCBAwcObMIJoBw4cODAgQMHDmzCCaAcOHDgwIEDBw5swgmgHDhw4MCBAwcObMIJoBw4cODAgQMHDmzCCaAcOHDgwIEDBw5swgmgHDhw4MCBAwcObMIJoBw4cODAgQMHDmzCCaAcOHDgwIEDBw5sglBK++9ghHQDWG1x80oAnQUeqhZAWz8cxy7661i723Hs/J59gXMvFO84pfrNnN9o1xxnII6pzr1gHfrfb7B/n/48zt6U0nLDNZTSfvsPwNc2tn1woB+ngPPql2Pthsex/HsOhu+zm/5GD+r+Lslv5vxGu+Y4A3FMde6Fwn+/wf59+vM4ue79gZzCe303O05/Hmt3O05/wbkXnOPsimM5xxnYx+nPYznHGdjH0aC/U3hfU0pn7i7HcdA/cH7PwQfnN9u94PyegxvO71c4cl27/magHtzNjuOgf+D8noMPzm+2e8H5PQc3nN+vcJheu35loBw4cODAgQMHDnYHDGQNlAMHDhw4cODAwYCEE0A5cODAgQMHDhzYxKAOoAghPbv6HBz0HYQQkRCySPVfQ45tPyKEOGLIXQhCCCWEPKX6WyCE7CSEvLErz8tB30AIOTX9207c1efiwDqc53HXYVAHUA52G8QopdNU/zXv6hNykBMRAPsSQnzpv48DsMXODgghQtHPykFfcS6Az9L/twxCCF+a03FgEX1+Hh0UhkEfQBFCygghcwghCwghSwkhp6SXNxBCVhJCHiKELCeEvKu6wRwMcBBCZhBCPiaEfEMIeYcQMkK1+oI0U7WMEDJrl53kno23AJyY/ve5AJ5lKwghswghcwkhCwkhXxBC9k4vv4gQ8hoh5AMAc/r/lB2YgRBSBuAwAD8E8L30sqMIIZ8QQt4khKwmhDxACOHS63oIIXcRQhYDOHjXnbmDNAp5Hj8hhExTbfcZIWRqf570YMegD6AA9AI4jVK6P4CjAdxFCCHpdXsBuI9Sug+AMIAzds0pOsgDnyp99zIhxAXgXgBnUkpnAHgUwP+ptvdTSqcBuCq9zkH/4zkA3yOEeAFMAfCVat0qAIdTSqcD+C2A21Xr9of8ux7Zb2fqwApOAfA2pXQNgBAhZEZ6+SwA1wKYDGAcgNPTywMAvqKUTqWUftbvZ+tAj0Kex0cAXAQAhJAJALyU0sX9dsa7AXYHGp0AuJ0QcgQACcAoAMPS65oopYvS//4GQEO/n50DK4ilAyIAACFkXwD7AngvHQvzALaqtn8WACilnxBCKgghVZTScP+drgNK6ZK0Vu1cyLNfNSoBPE4I2QsABeBSrXuPUtreP2fpwAbOBXBP+t/Ppf9+A8A8SukGACCEPAuZpXoRgAjgv7vgPB0YoMDn8T8AfkMIuRHAJQD+3T9nu/tgdwigvg9gCIAZlNIkIaQZgDe9Lq7aTgTgpPAGBwiA5ZRSs9SA3rzMMTPbNXgNwF8AHAUgqFp+K4APKaWnpQf1j1TrIv11cg6sgRBSA+AYAPsRQijkCQsF8CbMn7VeSqnYf2fpwAJsPY+U0igh5D3I7OPZAGbAgS3sDim8SgA70sHT0QDqd/UJOegzVgMYQgg5GAAIIS5CyD6q9eeklx8GoJNS2l8d2R1o8SiA31NKl+qWVyIjYr2oX8/IQSE4E8CTlNJ6SmkDpbQOQBOAwwHMIoQ0prVP50AWmTsYmCjkeXwYwN8BzKeUdpT29HY/DNoAKl3FEwfwNICZhJClAC6EnO91MIhBKU1AHtT/mBapLgJwiGqTXkLIQgAPQBa9OtgFoJRuppT+3WDVnwDckf6NdgeWe3fHuQBe1i37b3r5fAD/ALASclCl387BAEEhzyOl9BsAXQAe64dT3O0waFu5pKsFHqKUOlVYDhw4cFBkEEKOAnADpfSkXXwqDkoEQshIyCm9iZRSaRefzqDDoGSgCCE/giwk/vWuPhcHDhw4cOBgsIEQciHkar2bneCpMAxaBsqBAwcOHDhw4GBXYVAwUISQOkLIh4SQFWlTzB+nl9cQQt4jhKxN/786vXxi2jgsTgi5QbevKkLIi4SQVWmjTccEzoEDBw4cOHBgC4OCgUq7UI+glC4ghJRD9nQ6FXJFQTul9E5CyC8BVFNKf0EIGQq5Gu9UAB2U0r+o9vU4gE8ppQ8TQtyQTRnD/fqFHDhw4MCBAweDGoOCgaKUbqWULkj/uxtyRcgoyP4Vj6c3exxywARK6Q5K6XwASfV+CCGVAI6A7MAKSmnCCZ4cOHDgwIEDB3YxKAIoNdJGYNMhi9+GUUqZQ/U2ZBzIzdAIYCeAx9J9gR4mhARKdrIOHDhw4MCBg90SgyqASje8/C+An1BKu9TrqJyLzJePFCD34ro/3RcoAuCXpThXBw4cOHDgwMHui0ETQKUbzP4XwNOU0pfSi7en9VFMJ7Ujz242A9hMKWWNFl+EHFA5cODAgQMHDhxYxqAIoIjcUfYRACsppX9VrXoNwA/S//4BgFdz7YdSug3AJkLI3ulFxwJYUeTTdeDAgQMHDhzs5hgsVXiHAfgUwFIAzPDrV5B1UC8AGAOgBcDZlNJ2QshwAF8DqEhv3wNgMqW0ixAyDXL/HzeADQAudnoAOXDgwIEDBw7sYFAEUA4cOHDgwIEDBwMJgyKF58CBAwcOHDhwMJDgBFAOHDhw4MCBAwc24QRQDhw4cODAgQMHNuEEUA4cOHDgwIEDBzbhBFAOHDhw4MCBAwc24QRQDhw4cODAgQMHNuEEUA4cOHDgwIEDBzbhBFAOHDhw4MCBAwc28f/LW8VMiIzYUAAAAABJRU5ErkJggg==",
"text/plain": [
"<Figure size 720x504 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"data": {
"text/plain": [
"<Figure size 432x288 with 0 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plot_quantiles(tss[1585], forecasts[1585], dataset.metadata.prediction_length)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3.9.15 ('glounts')",
"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"
},
"vscode": {
"interpreter": {
"hash": "7f25a1f13147a60511cf6766827402baf95cbe50d53a241197155306ee38fe70"
}
}
},
"nbformat": 4,
"nbformat_minor": 4
}