{ "cells": [ { "cell_type": "markdown", "id": "f78c1dda", "metadata": {}, "source": [ "# Welcome to ibicus!\n", "\n", "## 1. Introduction\n", "\n", "Ibicus is a python software package that helps you apply, compare and evaluate a range of different bias adjustment methods. This notebook guides you through the workflow of bias adjusting the variable 'tas' (2m surface temperature) using ibicus. The notebook is ideal if you are new to bias adjustment and want to familiarize yourself with the different steps.\n", "\n", "**Requirements for starting this notebook**\n", "\n", "- Have some testing data ready. You can either use the data we provide and download (see below) or downloaded and pre-processed your own testing data. \n", "- Have ibicus installed. Just use: ``pip install ibicus``\n", "\n", "\n", "**Link to other notebooks and documentation pages**\n", "- If you want to download and pre-process observational and climate model testing data first, start with this [00 Download and Preprocess](https://nbviewer.org/github/ecmwf-projects/ibicus/blob/main/notebooks/00%20Download%20and%20Preprocess.ipynb).\n", "- For an introduction to the idea and general methodology of bias adjustment, have a look at this page: [What is bias adjustment?](https://ibicus.readthedocs.io/en/latest/getting_started/whatisdebiasing.html)\n", "- [02 Adjusting Debiasers](https://nbviewer.org/github/ecmwf-projects/ibicus/blob/main/notebooks/02%20Adjusting%20Debiasers.ipynb) gives a more advanced overview of how to initialize apply different debiasers and the choices the user can make.\n", "- For a detailed overview of evaluation methods available, have a look at the evaluation notebook [03 Evaluation](https://nbviewer.org/github/ecmwf-projects/ibicus/blob/main/notebooks/03%20Evaluation.ipynb).\n", "- If you want to use ibicus for larger projects or in high performance computing environments have a look at [04 Parallelization and Dask](https://nbviewer.org/github/ecmwf-projects/ibicus/blob/main/notebooks/04%20Parallelization%20and%20Dask.ipynb)." ] }, { "cell_type": "markdown", "id": "357f31e1", "metadata": {}, "source": [ "## 2. Load pre-processed testing data\n", "\n", "To bias adjust climate model values ibicus always requires three datasets of the same climatic variable:\n", "\n", "- obs: observational data (usually a reanalysis) over a historical or reference period. \n", "- cm_hist: climate model values in a historical or reference period (same period as obs).\n", "- cm_future: climate model values to debias, usually climate model values in a future period.\n", "\n", "obs and cm_hist are used to construct an empirical transfer function between simulated and observed distribution of the climatic variable. This transfer function is then applied to cm_future to debias it.\n", "\n", "We provide some testing data inside the [ibicus GitHub repo](https://github.com/ecmwf-projects/ibicus). We can download and unpack it:" ] }, { "cell_type": "code", "execution_count": null, "id": "dbaa5325-227c-48a7-8e3a-5b22be23517c", "metadata": {}, "outputs": [], "source": [ "!wget https://github.com/ecmwf-projects/ibicus/blob/main/notebooks/testing_data.zip -c\n", "!unzip testing_data.zip" ] }, { "cell_type": "markdown", "id": "a74e1952-ce05-4af5-a02d-e68fb1509330", "metadata": {}, "source": [ "The testing data was already preprocessed. It containts data from an historical and future simulation of a climate model as well as reanalysis data serving as observations. Necessary preprocessing steps that were applied:\n", "\n", "1. Regridding the datasets to the same area and grid in space and time.\n", "2. Conducted checks for corrupted or missing data.\n", "\n", "ibicus works on numpy arrays of data of the form: ``[t, x, y]`` (first dimension corresponds to timesteps and then come the two spatial dimensions). From the regridded data we therefore extracted the data arrays. Additionally we extracted the time information, as this can be required by some debiasers. \n", "\n", "We can read in the data:" ] }, { "cell_type": "code", "execution_count": 1, "id": "44b0cce1", "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "\n", "def get_data(variable, data_path = \"testing_data/\"):\n", " # Load in the data \n", " data = np.load(f\"{data_path}{variable}.npz\", allow_pickle = True)\n", " # Return arrays\n", " return data[\"obs\"], data[\"cm_hist\"], data[\"cm_future\"], data[\"time_obs\"], data[\"time_cm_hist\"], data[\"time_cm_future\"]" ] }, { "cell_type": "code", "execution_count": 2, "id": "2708ba7a", "metadata": {}, "outputs": [], "source": [ "tas_obs, tas_cm_hist, tas_cm_future, time_obs, time_cm_hist, time_cm_future = get_data(variable = 'tas')" ] }, { "cell_type": "markdown", "id": "d66fb937-1866-49a0-bf58-96132700bc0e", "metadata": {}, "source": [ "``tas_obs``, ``tas_cm_hist`` and ``tas_cm_future`` now contain observations as well as historical and future climate model data for ``tas``. Additionally the times corresponding to each timestep are stored in ``time_obs``, ``time_cm_hist`` and ``time_cm_future``." ] }, { "cell_type": "markdown", "id": "7eee3e6f", "metadata": {}, "source": [ "## 3. Initialize the bias adjustment method\n", "\n", "We are going to initialize two debiasers that we can later apply to our testing data: \n", "- ``LinearScaling``, a simple bias adjustment method that corrects the mean of the climate model.\n", "- ``ISIMIP``, a trend-preserving parametric quantile mapping method, explained in detail in the class documentation.\n", "\n", "Both of them are child classes of the more general Debiaser class and contain the core calculations necessary for each bias adjustment method. Let's import the two:" ] }, { "cell_type": "code", "execution_count": 3, "id": "307d6ed2-7bda-4d82-af50-9e7a2268e34b", "metadata": {}, "outputs": [], "source": [ "from ibicus.debias import LinearScaling, ISIMIP" ] }, { "cell_type": "markdown", "id": "e3f440bb-9aa1-40ca-98f0-37e66554a34a", "metadata": {}, "source": [ "Even though the two debiasers have very different degrees of complexity, they can both be initialized in a similarly simple manner using the ``from_variable`` classmethod and by specifying the variable you wish to debias. This initializes a set of default settings in both debiasers. These default settings can of course be manually overwritten, as described in detail in the notebook 02 Adjusting Debiasers.\n", "\n", "**Linear Scaling:**" ] }, { "cell_type": "code", "execution_count": 4, "id": "3eca3041", "metadata": {}, "outputs": [], "source": [ "tas_debiaser_LS = LinearScaling.from_variable(variable = 'tas')" ] }, { "cell_type": "markdown", "id": "afb82787", "metadata": {}, "source": [ "**ISIMIP:**" ] }, { "cell_type": "code", "execution_count": 5, "id": "de1baf46", "metadata": {}, "outputs": [], "source": [ "tas_debiaser_ISIMIP = ISIMIP.from_variable(variable = 'tas')" ] }, { "cell_type": "markdown", "id": "209442f3", "metadata": {}, "source": [ "## 4. Applying the bias adjustment method on the validation period\n", "\n", "In order to evaluate the performance of different bias adjustment methods, before choosing the one to use for the future application period, it is useful to split the historical data (both climate model and observations) into a training and a validation period. Using the training period we can then debias the historical climate model over the validation period and compare it with observations in this period. Let's split the data:" ] }, { "cell_type": "code", "execution_count": 6, "id": "622072c6-5760-416b-a3e4-fbc79d30a3ce", "metadata": {}, "outputs": [], "source": [ "split_ratio = 0.7\n", "split = int(split_ratio * tas_obs.shape[0])\n", "\n", "# First split observations\n", "tas_obs_train = tas_obs[ :split]\n", "tas_obs_val = tas_obs[split: ]\n", "time_obs_train = time_obs[ :split]\n", "time_obs_val = time_obs[split: ]\n", "\n", "# Then split cm_hist\n", "tas_cm_hist_train = tas_cm_hist[ :split]\n", "tas_cm_hist_val = tas_cm_hist[split: ]\n", "time_cm_hist_train = time_cm_hist[ :split]\n", "time_cm_hist_val = time_cm_hist[split: ]" ] }, { "cell_type": "markdown", "id": "a719282a-920e-4793-96ee-75ac02270124", "metadata": {}, "source": [ "And run the initialised debiasers on the train and validation period:\n", "\n", "**Linear Scaling:**" ] }, { "cell_type": "code", "execution_count": 7, "id": "9007c205", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 225/225 [00:00<00:00, 7234.11it/s]\n" ] } ], "source": [ "tas_val_debiased_LS = tas_debiaser_LS.apply(tas_obs_train, tas_cm_hist_train, tas_cm_hist_val)" ] }, { "cell_type": "markdown", "id": "4034172c", "metadata": {}, "source": [ "**ISIMIP:**" ] }, { "cell_type": "code", "execution_count": 8, "id": "26c03e89", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 225/225 [06:55<00:00, 1.85s/it]\n" ] } ], "source": [ "tas_val_debiased_ISIMIP = tas_debiaser_ISIMIP.apply(tas_obs_train, tas_cm_hist_train, tas_cm_hist_val, time_obs = time_obs_train, time_cm_hist = time_cm_hist_train, time_cm_future = time_cm_hist_val)" ] }, { "cell_type": "markdown", "id": "67063d10", "metadata": {}, "source": [ "## 5. Evaluating the bias corrected climate model on the validation period\n", "\n", "After running the debiasers above we have now debiased climate model data in a validation period. We can compare this with observations in the same period to see whether the method has actually improved the bias of the climate model compared to observations.\n", "\n", "The ``ThresholdMetrics`` class in the ``ibicus.metrics`` module provides the functionality to define targeted metrics associated with each variable. In this tutorial, we will simply investigate the occurrence of 'mean cold days'. We can import this:" ] }, { "cell_type": "code", "execution_count": 9, "id": "2b794a4e", "metadata": {}, "outputs": [], "source": [ "from ibicus.evaluate.metrics import cold_days" ] }, { "cell_type": "markdown", "id": "8b4d75a3-88c0-4f34-b4ea-1059de7665af", "metadata": {}, "source": [ "We adapt the threshold value to the area:" ] }, { "cell_type": "code", "execution_count": 10, "id": "382f4134-f054-4783-84cd-dad7c723f480", "metadata": {}, "outputs": [], "source": [ "cold_days.threshold_value = 283" ] }, { "cell_type": "markdown", "id": "dba5a95d-1af2-4294-ba8f-16031f0d54c9", "metadata": {}, "source": [ "We also import the marginal module, which contains all functions to conduct a location-wise evaluation." ] }, { "cell_type": "code", "execution_count": 11, "id": "ac3cc256-11f4-4f73-ad06-958e02d2e0cd", "metadata": {}, "outputs": [], "source": [ "from ibicus.evaluate import marginal" ] }, { "cell_type": "markdown", "id": "bf7d83c7", "metadata": {}, "source": [ "The following function provides an entry point into evaluating the performance of the bias adjustment method. It calculates the bias of the mean, 5th percentile and 95th percentile of the climate model with respect to observations by default, as well as the bias of the additional metrics specified above." ] }, { "cell_type": "code", "execution_count": 12, "id": "58e611b6", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/tmp/ipykernel_50029/75105911.py:6: UserWarning: Matplotlib is currently using module://matplotlib_inline.backend_inline, which is a non-GUI backend, so cannot show the figure.\n", " plot.show()\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAABOYAAAJJCAYAAAAOZjgrAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8qNh9FAAAACXBIWXMAAA9hAAAPYQGoP6dpAAChrklEQVR4nOzdeXwTdf7H8XeatklbaLlbKqUgooLch1xyKJcoiAeigoiCBwseCKwuursWdEFZORQUZJelCAjoIiBeBV0BEdSCoHLIT1fkkFYESwulSdt0fn+wHQltSlvSTkNfz8cjj0cy+cx3PpNO0m8++X5nbIZhGAIAAAAAAABQroKsTgAAAAAAAACojCjMAQAAAAAAABagMAcAAAAAAABYgMIcAAAAAAAAYAEKcwAAAAAAAIAFKMwBAAAAAAAAFqAwBwAAAAAAAFiAwhwAAAAAAABgAQpzAAAAAAAAgAUozAEAAlpiYqJsNpt5czqdiomJ0bXXXqupU6fq6NGjpW57w4YNstls2rBhg7ksISFBNpvND5mjMtmxY4e6d++uqKgo2Ww2zZo1y+qUSuWnn36SzWZTYmJiqdvYs2ePEhIS9NNPP/ktr4vFkSNHlJCQoJ07d1qdik///e9/5XA4tHXrVnPZvffeqypVqhSITU5OVq1atXT55ZfrwIEDkqRu3bpp7NixZZLbvffe6/X/wG63q169eho8eLB27drlFVvY5zsAAFYItjoBAAD8YeHChbryyiuVk5Ojo0ePavPmzXrhhRf04osvasWKFerVq1eJ22zTpo22bt2qpk2blkHGqExGjBihzMxMLV++XNWrV1eDBg2sTqlU6tatq61bt6pRo0albmPPnj2aNGmSevToEbCvQ1k5cuSIJk2apAYNGqhVq1ZWp1OoCRMmqHfv3urUqVORcZ988okGDhyoRo0aKSkpSXXq1JEkPfvss+rdu7f+8Ic/6IorrvB7fmFhYfrPf/4jScrNzdUPP/yg5557Tp07d9bevXt1ySWXSOLzHQBQcVCYAwBcFJo1a6Z27dqZj2+77TY9/vjjuuaaa3Trrbfq+++/V3R0dInajIyMVMeOHf2dKspRTk6ObDabgoPLv8vj8XiUm5srh8OhXbt26YEHHlC/fv3KPQ9/cjgcxXpPnD59WuHh4eWQUcWWlZUlp9Np+Sjbs4/FC7F3716tXr1aH374YZFxa9as0R133KH27dvr3XffVVRUlPlc9+7ddcUVV2j69OmaP3/+BeVTmKCgIK9j9JprrlH9+vXVs2dPvffee3rwwQcl8fkOAKg4mMoKALho1a9fX9OnT9fJkyf12muvmcu3bdumO++8Uw0aNFBYWJgaNGigu+66y5xqla84U51GjhypGjVq6PTp0wWeu+6663TVVVcVmWOPHj3UrFkzbd26VZ07dzbzWbhwoSTpvffeU5s2bRQeHq7mzZsX+oX4+++/15AhQ1SnTh05HA41adJEr7zyileMy+XS+PHj1apVK0VFRalGjRrq1KmT1qxZU6A9m82mhx9+WIsXL1aTJk0UHh6uli1b6t133y1yX6TfX7Nly5bp6aefVmxsrCIjI9WrVy/t27evQPxHH32knj17KjIyUuHh4erSpYs+/vhjr5gffvhB9913nxo3bqzw8HBdcsklGjBggL799ttCt7148WKNHz9el1xyiRwOh3744YdCcz19+rQmTJighg0byul0qkaNGmrXrp2WLVtmxvTo0UM9evQosO69997rNdorf4rntGnT9Nxzz6lhw4ZyOBxauHChbDabcnNzNXfuXHOKnST9+uuvGj16tJo2baoqVaqoTp06uu666/Tpp58W2J7b7dbkyZPVpEkTOZ1O1axZU9dee622bNlixhiGoVdffVWtWrVSWFiYqlevrkGDBunHH38sdP9L8xoXNpU1f3r3V199pUGDBql69eo+R9QlJibq9ttvlyRde+215utxdnvFOSbyt/nNN9/o9ttvN4/pcePGKTc3V/v27dP111+vqlWrqkGDBpo2bZrX+vnHypIlSzRu3DjFxMQoLCxM3bt3144dOwrkvW3bNt10002qUaOGnE6nWrdurTfffLPAvtlsNq1bt04jRoxQ7dq1FR4eLrfbXazXd8OGDWrfvr0k6b777jNfm4SEBEkXfix+8sknxd4XX+bOnauYmBj17t3bZ8zixYs1aNAgXXfddVq3bp1XUS7fsGHD9MYbb+jkyZPF2u6Fys8hJCTEXFbY53tx/zcU57MDAIDiojAHALio3XDDDbLb7dq0aZO57KefftIVV1yhWbNmKSkpSS+88IJSUlLUvn17HTt2rETtP/bYY0pLS9Mbb7zhtXzPnj365JNPNGbMmPO2kZqaqvvuu0/333+/1qxZo+bNm2vEiBGaPHmy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Xyo5OVm1a9cu1ResgQMHqkGDBuZ53RITE5WZmVmsaazSmULcuUJDQwssDw0NlXSmICdJx48fV25urmbPnq2QkBCv2w033CBJ5vSrt99+W4MHD9Yll1yiJUuWaOvWrUpOTtaIESPM9s5Ws2bNAsscDkexX59z188/6Xz++vlTKwcNGlQg9xdeeEGGYZhTPceNG6e//OUvuvnmm7V27Vp98cUXSk5OVsuWLQvNp27duub9n376qUD7GzdulHRm2t2TTz6p1atX69prr1WNGjV088036/vvvy/WPhbm7G2fz4wZM/SHP/xBHTp00MqVK/X5558rOTlZ119/vdd+/frrr4qNjfU5fVA683oahqHo6OgC+/v555+fd4p2SV/jwpRk333tg1S8YyJfYe+R8PBwOZ3OAssLO85jYmIKXZY/JTE/pwkTJhTIafTo0ZJU4LUt7HXwx+tbUufmUZp9OVt+nue+tvmCgoL0zjvvqHfv3hozZkyB81yey+l0nnffe/bs6ZVnUcXps/No166d2rVrp6uvvlq33HKL3n//fQUHB2vcuHFFrlvc/w1l8dkBAKi8uCorAOCi9t5778nj8ZgnTU9PT9e7776rZ555Rn/605/MuPxzsJVGUFCQxowZo6eeekrTp0/Xq6++qp49e+qKK67wxy74VL16ddntdg0bNsxnEbBhw4aSzpy7q2HDhlqxYoXXCCG3212mOfpSq1YtSdLs2bN9Xhkx/yq6S5Ys0T333GOemyzfsWPHVK1atQLrnb1/sbGxSk5O9no+/+8SERGhSZMmadKkSfrll1/METADBgzQd999J+lM8SA9Pb3ANnwVMEpy9c0lS5aoR48emjt3rtfyc0+IX7t2bW3evFl5eXk+i3O1atWSzWbTp59+WuiVN893Nc6SvsaFudArj5bkmPCX1NTUQpflF5bzc5o4caJuvfXWQts4931e2Ovgj9f3Qo/F0uxLYesX9TnpdDq1Zs0a3XLLLXr44YeVl5enRx55pNDYtLQ0s01fXnvtNa/3w/nifQkPD1ejRo309ddf+4wpyf+G4nx2AABQXBTmAAAXrYMHD2rChAmKiorSQw89JOnMl1XDMAoUKv75z396XZigpO6//34lJCRo6NCh2rdvn1544YULyr04wsPDde2112rHjh1q0aKFOaKuMDabTaGhoV5f1lNTUwu9Kmt56NKl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2bKl5syZU6z4TZs2qXfv3nr//fe1fft2XXvttRowYIB27NjhFRcZGamUlBSvm9PpLItdAABUAqmpqXrkkUd06aWXyuFwKC4uTgMGDNDHH39sdWqF8tWZSU5O1oMPPlim296wYYNsNpuqV69e4EexL7/80vzBrCQupo4mAACoWOjnFR/9vOIJqKuy9uvXT/369St2/Ll/rClTpmjNmjVau3atWrdubS632WyKiYnxV5oAgErsp59+UpcuXVStWjVNmzZNLVq0UE5OjpKSkjRmzBh99913pWo3JydHISEhxV7uD7Vr1y6TdgtTtWpVrVq1SnfddZe57F//+pfq16+vgwcPllseAAAAvtDPKx36eUULqBFzFyovL08nT55UjRo1vJafOnVK8fHxqlevnvr3719gRN253G63MjIyvG4AAEjS6NGjZbPZ9OWXX2rQoEG6/PLLddVVV2ncuHH6/PPPzbiDBw9q4MCBqlKliiIjIzV48GD98ssv5vMJCQlq1aqV/vWvf5m/yBqGIZvNpnnz5mngwIGKiIjQc889J0lau3at2rZtK6fTqUsvvVSTJk1Sbm6u2d6JEyf04IMPKjo6Wk6nU82aNdO7776rDRs26L777lN6err5q2VCQoKkgr9IFjfnxYsXq0GDBoqKitKdd96pkydPnvd1Gz58uP71r3+Zj7OysrR8+XINHz68QOyWLVvUrVs3hYWFKS4uTo8++qgyMzMlST169NCBAwf0+OOPF/orbFJSkpo0aaIqVaro+uuvV0pKivlcXl6eJk+erHr16snhcKhVq1b68MMPvdb/8ssv1bp1azmdTrVr1+68fQYAAHDxoJ9HP68sVKrC3PTp05WZmanBgweby6688kolJibqnXfe0bJly+R0OtWlSxd9//33PtuZOnWqoqKizFtcXFx5pA8AqOB+++03ffjhhxozZowiIiIKPJ8/jcAwDN1888367bfftHHjRq1fv17//e9/dccdd3jF//DDD3rzzTe1cuVKr3NbPPPMMxo4cKC+/fZbjRgxQklJSbr77rv16KOPas+ePXrttdeUmJiov/3tb5LOdET69eunLVu2aMmSJdqzZ4+ef/552e12de7cWbNmzfI6rcOECRMK5F7cnP/73/9q9erVevfdd/Xuu+9q48aNev7558/72g0bNkyffvqp+avpypUr1aBBA7Vp08Yr7ttvv1Xfvn1166236ptvvtGKFSu0efNmPfzww5LOnF+2Xr16mjx5srk/+U6fPq0XX3xRixcv1qZNm3Tw4EGvfX3ppZc0ffp0vfjii/rmm2/Ut29f3XTTTWafIDMzU/3799cVV1yh7du3KyEhodDXCgAAXHzo59HPKzNGgJJkrFq1qtjxb7zxhhEeHm6sX7++yDiPx2O0bNnSeOSRR3zGuFwuIz093bwdOnTIkGSkp6cXOx+gIjh16pQhyZBknDp1yup0gBKx8vjNysoy9uzZY2RlZXkt/+KLLwxJxttvv13k+uvWrTPsdrtx8OBBc9nu3bsNScaXX35pGIZhPPPMM0ZISIhx9OhRr3UlGWPHjvVa1rVrV2PKlCleyxYvXmzUrVvXMAzDSEpKMoKCgox9+/YVms/ChQuNqKioAsvj4+ONmTNnlijn8PBwIyMjw4z54x//aHTo0MHna/HJJ58Ykoy0tDTj5ptvNiZNmmQYhmFce+21xksvvWSsWrXKOLu7MmzYMOPBBx/0auPTTz81goKCzL/H2XmfvY+SjB9++MFc9sorrxjR0dHm49jYWONvf/ub13rt27c3Ro8ebRiGYbz22mtGjRo1jMzMTPP5uXPnGpKMHTt2FLp/vo6Vs49f+g8VW3p6On8nAKhE6Of5zpl+njd/9fMC6hxzpbVixQqNHDlSb731lnr16lVkbFBQkNq3b1/kiDmHwyGHw+HvNIFKwzCMYl/52DAMud1uSWfeeyU5OajT6SzxyUSBC2EYhiSd97jbu3ev4uLivEZcN23aVNWqVdPevXvVvn17SVJ8fHyh5/9o166d1+Pt27crOTnZ/OVUkjwej1wul06fPq2dO3eqXr16uvzyy0u9b8XNuUGDBqpataoZU7duXR09erRY2xgxYoQee+wx3X333dq6daveeustffrppwX29YcfftDSpUvNZYZhKC8vT/v371eTJk18th8eHq5GjRoVmltGRoaOHDmiLl26eK3TpUsXff311+Zr0LJlS4WHh5vPd+rUqVj7BqBwJekTlHUepe1vlCX6MkDFQT+Pfl5ZuegLc8uWLdOIESO0bNky3XjjjeeNNwxDO3fuVPPmzcshO6Bycrlc6tu3b5lvJykpSWFhYWW+HSBf48aNZbPZtHfvXt18880+44z/nUPkfMsLmyZR2PK8vDxNmjRJt956a4FYp9Ppl/dBcXM+9wTFNptNeXl5xdrGDTfcoIceekgjR47UgAEDVLNmzQIxeXl5euihh/Too48WeK5+/fpFtl9Ybvmd7LOXne3s/Ts3FsCFK68+QaCiLwNUHPTz6OeVlYA6x9ypU6e0c+dOc/71/v37tXPnTnOe8sSJE3XPPfeY8cuWLdM999yj6dOnq2PHjkpNTVVqaqrS09PNmEmTJikpKUk//vijdu7cqZEjR2rnzp0aNWpUue4bACDw1ahRQ3379tUrr7xinqT2bCdOnJB05hfIgwcP6tChQ+Zze/bsUXp6epG/BPrSpk0b7du3T5dddlmBW1BQkFq0aKHDhw/r//7v/wpdPzQ0VB6Pp8ht+Dvnwtjtdg0bNkwbNmzQiBEjCo1p06aNdu/eXei+hoaGFnt/zhUZGanY2Fht3rzZa/mWLVvM/WvatKm+/vprZWVlmc+ffaJnAABw8aKfd2Ho5/kWUCPmtm3bpmuvvdZ8PG7cOElnrvCRmJiolJQUr0vtvvbaa8rNzdWYMWM0ZswYc3l+vPT71UtSU1MVFRWl1q1ba9OmTbr66qvLZ6eASsjpdCopKalYsS6XSwMHDpQkrVmzRk6ns0TbAcrbq6++qs6dO+vqq6/W5MmT1aJFC+Xm5mr9+vWaO3eu9u7dq169eqlFixYaOnSoZs2apdzcXI0ePVrdu3cvMH2hOP7617+qf//+iouL0+23366goCB98803+vbbb/Xcc8+pe/fu6tatm2677TbNmDFDl112mb777jvZbDZdf/31atCggU6dOqWPP/7YHMJ/9jB+SX7P2Zdnn31Wf/zjHwv9FVWSnnzySXXs2FFjxozRAw88oIiICO3du1fr16/X7NmzJZ2ZZrFp0ybdeeedcjgcqlWrVrG2/cc//lHPPPOMGjVqpFatWmnhwoXauXOnOZ1iyJAhevrppzVy5Ej9+c9/1k8//aQXX3zRPzsOVFIl6ROUpQvpb5SlipIHgDPo510Y+nmFC6jCXI8ePYocXphfbMu3YcOG87Y5c+ZMzZw58wIzA1ASNputVEOu/TVUGyhLDRs21FdffaW//e1vGj9+vFJSUlS7dm21bdtWc+fOlXTmPbB69Wo98sgj6tatm4KCgnT99debHY6S6tu3r959911NnjxZ06ZNU0hIiK688krdf//9ZszKlSs1YcIE3XXXXcrMzNRll11mXkWrc+fOGjVqlO644w4dP35czzzzjBISEry24e+cfQkNDS2yg9WiRQtt3LhRTz/9tLp27SrDMNSoUSOvq4ZNnjxZDz30kBo1aiS3213sqQmPPvqoMjIyNH78eB09elRNmzbVO++8o8aNG0uSqlSporVr12rUqFFq3bq1mjZtqhdeeEG33Xbbhe00UImVtk9QluhvAPCFft6FoZ9XOJvBCVMuWEZGhqKiopSenq7IyEir0wGKLTMzU1WqVJF0Zqq4r/McWCkrK8s89wznWcHZrDx+XS6X9u/fr4YNGzKaAUXydaycffzSf6jY6OdVDvQ3AOSjn4fi8lc/L6DOMQcAAAAAAABcLCjMAQAAAAAAABagMAcAAAAAAABYgMIcAAAAAAAAYAEKcwAAAAAAAIAFKMwBAAAAAAAAFqAwBwAAAAAAAFiAwhwAAAAAAABggWCrEwAAAMXj8XhkGEa5bc9ms8lut5fb9gAAACqz8uzr0c+rOCjMAQAQADwej265dZBOpB0vt21Wq15Tq97+N502AACAMlbefT36eRUHhTkAAAKAYRg6kXZcme3ulWzlcCYKI0/alnjBv9pmZ2crNDTUT0kBAABcnMq1r0c/r0LhHHMAAAQSW5AUVA63UnYIe/TooYcffljjxo1TrVq11Lt3b82YMUPNmzdXRESE4uLiNHr0aJ06dUrSmU5o7dq1tXLlSrONVq1aqU6dOubjrVu3KiQkxFwHAADgolUefT36eRUKhTkAAOBXixYtUnBwsD777DO99tprCgoK0ssvv6xdu3Zp0aJF+s9//qMnnnhC0pnzm3Tr1k0bNmyQJKWlpWnPnj3KycnRnj17JEkbNmxQ27ZtVaVKFat2CQAAAKKfVxaYygoAAPzqsssu07Rp08zHV155pXm/YcOGevbZZ/WHP/xBr776qqQzv77Onz9fkrRp0ya1bNlS9evX14YNG9S0aVNt2LBBPXr0KNd9AAAAQEH08/yPEXMAAMCv2rVr5/X4k08+Ue/evXXJJZeoatWquueee3T8+HFlZmZKOtNh2717t44dO6aNGzeqR48e6tGjhzZu3Kjc3Fxt2bJF3bt3t2JXAAAAcBb6ef5HYQ4AAPhVRESEef/AgQO64YYb1KxZM61cuVLbt2/XK6+8IknKycmRJDVr1kw1a9bUxo0bzQ5b9+7dtXHjRiUnJysrK0vXXHONJfsCAACA39HP8z+msgIAgDKzbds25ebmavr06QoKOvN74JtvvukVk3/+kTVr1mjXrl3q2rWrqlatqpycHM2bN09t2rRR1apVrUgfAAAAPtDP8w9GzAEAgDLTqFEj5ebmavbs2frxxx+1ePFizZs3r0Bcjx499MYbb6hFixaKjIw0O3FLly6t9OcdAQAAqIjo5/kHhTkAAAKJkSfllcPNyPNLuq1atdKMGTP0wgsvqFmzZlq6dKmmTp1aIO7aa6+Vx+Px6px1795dHo+n0p93BAAAVCLl0dejn1eh2AzDMKxOItBlZGQoKipK6enpioyMtDodoNgyMzPNy1KfOnXK63wBFUVWVpb69u0rSUpKSlJYWJjFGaGisPL4dblc2r9/vxo2bCin01ku2/R4PLrl1kE6kXa8XLYnSdWq19Sqt/8tu91ebtu82Pg6Vs4+fuk/VGz08yoH+hsA8lnRz5PKv69HP+/C+aufxznmAAAIAHa7Xave/rfK8/c0m81GZw0AAKAclHdfj35excFUVgAAAoTdbldwcHC53eiswWo///yz7r77btWsWVPh4eFq1aqVtm/fbj5vGIYSEhIUGxursLAw9ejRQ7t37/Zqw+1265FHHlGtWrUUERGhm266SYcPHy7vXQEA4LzKs69HP6/ioDAHAACACictLU1dunRRSEiIPvjgA+3Zs0fTp09XtWrVzJhp06ZpxowZmjNnjpKTkxUTE6PevXvr5MmTZszYsWO1atUqLV++XJs3b9apU6fUv39/eTweC/YKAADAG1NZAQAAUOG88MILiouL08KFC81lDRo0MO8bhqFZs2bp6aef1q233ipJWrRokaKjo/XGG2/ooYceUnp6uhYsWKDFixerV69ekqQlS5YoLi5OH330kXlOMQAAAKswYg4AAAAVzjvvvKN27drp9ttvV506ddS6dWv94x//MJ/fv3+/UlNT1adPH3OZw+FQ9+7dtWXLFknS9u3blZOT4xUTGxurZs2amTHncrvdysjI8LoBAACUFUbMAUAJGIYhl8tV7Fi32y3pzJdFm81W7O04nc4SxQPAxebHH3/U3LlzNW7cOD311FP68ssv9eijj8rhcOiee+5RamqqJCk6OtprvejoaB04cECSlJqaqtDQUFWvXr1ATP7655o6daomTZpUBnsEAABQEIU5ACgBl8tVLlOfkpKSFBYWVubb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VScu6Ffb2267TTk5OVq0aJEuvfRS/fLLL/r444/122+/FbleXFycFi5c6NVh+/zzz5WamqqIiIjzbnfy5Ml64IEHdOrUKSUmJmrUqFGqVq2a7rjjjlLvCwAAQFkq174e/bwKJaAKc6dOndIPP/xgPt6/f7927typGjVqqH79+po4caJ+/vlnvf7665KkUaNGac6cORo3bpweeOABbd26VQsWLPC62upjjz2mbt266YUXXtDAgQO1Zs0affTRR9q8eXO57x8AAOcVpIA4Q+yJEye0efNmbdiwQd27d5ckxcfH6+qrrz7vukOHDtXMmTN16NAh81QR//rXvzR06FDzf3xRqlatqpiYGEnSc889pzfffFOrV68O6A4bAACoJAKgr0c/z78q+J/b27Zt29S6dWu1bt1akjRu3Di1bt1af/3rXyVJKSkpOnjwoBnfsGFDvf/++9qwYYNatWqlZ599Vi+//LJuu+02M6Zz585avny5Fi5cqBYtWigxMVErVqxQhw4dynfnAAC4iFSpUkVVqlTR6tWr5Xa7S7RudHS0+vbtq0WLFkmSTp8+rRUrVmjEiBGlysXpdJpXYwcAAMCFoZ/nXwFVmOvRo4cMwyhwS0xMlCQlJiZqw4YNXut0795dX331ldxut/bv369Ro0YVaHfQoEH67rvvlJ2drb179+rWW28th70BAODiFRwcrMTERC1atEjVqlVTly5d9NRTT+mbb74p1vojRoxQYmKiDMPQv//9bzVq1EitWrUqUQ65ublKTEzUt99+q549e5ZiLwAAAHAu+nn+FVCFOQAAEDhuu+02HTlyRO+884769u2rDRs2qE2bNuYPakW58cYbderUKW3atEn/+te/SvQr6pNPPqkqVaooLCxMY8aM0R//+MeAPykwAABARUI/z38ozAEAgDLjdDrVu3dv/fWvf9WWLVt077336plnnjnvesHBwRo2bJieeeYZffHFFxo6dGixt/nHP/5RO3fu1IEDB3Tq1ClNmzZNQUF0eQAAAPyJfp5/BHb2AAAgoDRt2lSZmZnFih0xYoQ2btyogQMHqnr16sXeRq1atXTZZZcpNjZWNputtKkCAACgBOjnlU5AXZUVAAAEhuPHj+v222/XiBEj1KJFC1WtWlXbtm3TtGnTNHDgwGK10aRJEx07dkzh4eFlnC0AAACKi36ef1GYAwAgkOQFxnaqVKmiDh06aObMmfrvf/+rnJwcxcXF6YEHHtBTTz1V7HZq1qx5YYkAAAAEkvLo69HPq1AozAEAEABsNpuq1aimE6tOlNs2q9WoVuIpAmef8Hfq1KmaOnVqkfE//fRTkY/PdeLEiQtaHwAAoCIq774e/byKg8IcAAABwG63a9XKVTIMo9y2abPZZLfby217AAAAlVV59/Xo51UcFOYAAAgQdJ4AAAAuXvT1KieuygoAAAAAAABYgMIcAAAAAAAAYAEKcwAAAAAAAIAFKMwBAFBK5XkhBgQmjhEAAAIT/8NxPv46RijMAQBQQiEhIZKk06dPW5wJKrrs7GxJnMwZAIBAQT8PxeWvfh5XZQUAoITsdruqVaumo0ePSpLCw8Nls9kszgoVTV5enn799VeFh4crOJguFwAAgYB+HorDn/08eokAAJRCTEyMJJmdNqAwQUFBql+/Ph16AAACCP08FIe/+nkU5gAAKAWbzaa6deuqTp06ysnJsTodVFChoaEKCuLMIQAABBL6eSgOf/XzKMwBAHAB7HY75w8DAAC4CNHPQ3ngJ1wAAAAAAADAAhTmAAAAAAAAAAtQmAMAAAAAAAAsQGEOAAAAAAAAsACFOQAAAAAAAMACFOYAAAAAAAAAC1CYAwAAQIWTkJAgm83mdYuJiTGfNwxDCQkJio2NVVhYmHr06KHdu3d7teF2u/XII4+oVq1aioiI0E033aTDhw+X964AAAD4RGEOAAAAFdJVV12llJQU8/btt9+az02bNk0zZszQnDlzlJycrJiYGPXu3VsnT540Y8aOHatVq1Zp+fLl2rx5s06dOqX+/fvL4/FYsTsAAAAFBFudAAAAAFCY4OBgr1Fy+QzD0KxZs/T000/r1ltvlSQtWrRI0dHReuONN/TQQw8pPT1dCxYs0OLFi9WrVy9J0pIlSxQXF6ePPvpIffv2Ldd9AQAAKAwj5gAAAFAhff/994qNjVXDhg1155136scff5Qk7d+/X6mpqerTp48Z63A41L17d23ZskWStH37duXk5HjFxMbGqlmzZmYMAACA1RgxBwAAgAqnQ4cOev3113X55Zfrl19+0XPPPafOnTtr9+7dSk1NlSRFR0d7rRMdHa0DBw5IklJTUxUaGqrq1asXiMlfvzBut1tut9t8nJGR4a9dAgAAKIDCHAAAACqcfv36mfebN2+uTp06qVGjRlq0aJE6duwoSbLZbF7rGIZRYNm5zhczdepUTZo06QIyBwAAKD4KcwAumGEYcrlcZdL22e2W1TYkyel0nvfLHADAOhEREWrevLm+//573XzzzZLOjIqrW7euGXP06FFzFF1MTIyys7OVlpbmNWru6NGj6ty5s8/tTJw4UePGjTMfZ2RkKC4uzs97AwAAcAaFOQAXzOVylctJtAcOHFhmbSclJSksLKzM2gcAXBi32629e/eqa9euatiwoWJiYrR+/Xq1bt1akpSdna2NGzfqhRdekCS1bdtWISEhWr9+vQYPHixJSklJ0a5duzRt2jSf23E4HHI4HGW/QwAAAKIwBwAAgApowoQJGjBggOrXr6+jR4/queeeU0ZGhoYPHy6bzaaxY8dqypQpaty4sRo3bqwpU6YoPDxcQ4YMkSRFRUVp5MiRGj9+vGrWrKkaNWpowoQJat68uXmVVgAAAKtRmAPgV5lthkpBfvxoMQwpL/fM/aBgyZ/TTfNyFfHVUv+1BwDwm8OHD+uuu+7SsWPHVLt2bXXs2FGff/654uPjJUlPPPGEsrKyNHr0aKWlpalDhw5at26dqlatarYxc+ZMBQcHa/DgwcrKylLPnj2VmJgou91u1W4BAAB4oTAHwL+CgiV7iJ8bDfVzewCAim758uVFPm+z2ZSQkKCEhASfMU6nU7Nnz9bs2bP9nB0AAIB/BFmdAAAAAAAAAFAZUZgDAAAAAAAALEBhDgAAAAAAALAAhTkAAAAAAADAAhTmAAAAAAAAAAtQmAMAAAAAAAAsQGEOAAAAAAAAsACFOQAAAAAAAMACFOYAAAAAAAAAC1CYAwAAAAAAACxAYQ4AAAAAAACwQMAV5l599VU1bNhQTqdTbdu21aeffuoz9t5775XNZitwu+qqq8yYxMTEQmNcLld57A4AAAAAAAAqqYAqzK1YsUJjx47V008/rR07dqhr167q16+fDh48WGj8Sy+9pJSUFPN26NAh1ahRQ7fffrtXXGRkpFdcSkqKnE5neewSAAAAAAAAKqmAKszNmDFDI0eO1P33368mTZpo1qxZiouL09y5cwuNj4qKUkxMjHnbtm2b0tLSdN9993nF2Ww2r7iYmJjy2B0AAAAAAABUYgFTmMvOztb27dvVp08fr+V9+vTRli1bitXGggUL1KtXL8XHx3stP3XqlOLj41WvXj31799fO3bsKLIdt9utjIwMrxsAAAAAAABQEgFTmDt27Jg8Ho+io6O9lkdHRys1NfW866ekpOiDDz7Q/fff77X8yiuvVGJiot555x0tW7ZMTqdTXbp00ffff++zralTpyoqKsq8xcXFlW6nAAAAAAAAUGkFTGEun81m83psGEaBZYVJTExUtWrVdPPNN3st79ixo+6++261bNlSXbt21ZtvvqnLL79cs2fP9tnWxIkTlZ6ebt4OHTpUqn0BAAAAAABA5RVsdQLFVatWLdnt9gKj444ePVpgFN25DMPQv/71Lw0bNkyhoaFFxgYFBal9+/ZFjphzOBxyOBzFTx4AAAAAAAA4R8CMmAsNDVXbtm21fv16r+Xr169X586di1x348aN+uGHHzRy5MjzbscwDO3cuVN169a9oHwBAAAAAACAogTMiDlJGjdunIYNG6Z27dqpU6dOmj9/vg4ePKhRo0ZJOjPF9Oeff9brr7/utd6CBQvUoUMHNWvWrECbkyZNUseOHdW4cWNlZGTo5Zdf1s6dO/XKK6+Uyz4BAAAAAACgcgqowtwdd9yh48ePa/LkyUpJSVGzZs30/vvvm1dZTUlJ0cGDB73WSU9P18qVK/XSSy8V2uaJEyf04IMPKjU1VVFRUWrdurU2bdqkq6++usz3BwAAAAAAAJVXQBXmJGn06NEaPXp0oc8lJiYWWBYVFaXTp0/7bG/mzJmaOXOmv9IDAAAAAAAAiiVgzjEHAAAAAAAAXEwozAEAAAAAAAAWoDAHAAAAAAAAWIDCHAAAAAAAAGABCnMAAAAAAACABSjMAQAAAAAAABagMAcAAAAAAABYgMIcAAAAAAAAYIFgqxMAgIrA5XKVaZtl0X4+p9Mpm81WZu0DAAAAAMoGhTkAkDRw4MCAbT8pKUlhYWFl1j4AAAAAoGwwlRUAAAAAAACwACPmAOB/Xul2Qg674bf2DEPKzjtzPzRI8udsU7fHpjGbqvmvQRSbYRjFnppsGIbcbrckyeFwlGjKMVOUAQAAgIsfhTkA+B+H3ZDT7t82y26Cqf8KiCgZl8ulvn37lvl2mKIMAAAAXPyYygoAAAAAAABYgBFzAACUgNPpVFJSUrFiXS6XeeGPNWvWyOl0lmg7AAAAAC5uFOYAACgBm81WqimmTqeTqakAAAAAvDCVFQAAAAAAALAAhTkAAAAAAADAAhTmAAAAAAAAAAtQmAMAAAAAAAAsQGEOAAAAAAAAsACFOQAAAAAAAMACFOYAAAAAAAAAC1CYAwAAAAAAACxAYQ4AAAAAAACwAIU5AAAAAAAAwAIU5gAAAFChTZ06VTabTWPHjjWXGYahhIQExcbGKiwsTD169NDu3bu91nO73XrkkUdUq1YtRURE6KabbtLhw4fLOXsAAADfKMwBAACgwkpOTtb8+fPVokULr+XTpk3TjBkzNGfOHCUnJysmJka9e/fWyZMnzZixY8dq1apVWr58uTZv3qxTp06pf//+8ng85b0bAAAAhQq2OgEAQPkwDEMul6vYsW63W5LkcDhks9mKvR2n01mieADw5dSpUxo6dKj+8Y9/6LnnnjOXG4ahWbNm6emnn9att94qSVq0aJGio6P1xhtv6KGHHlJ6eroWLFigxYsXq1evXpKkJUuWKC4uTh999JH69u1ryT4BAACcjcIcAFQSLperXL6IJiUlKSwsrMy3A+DiN2bMGN14443q1auXV2Fu//79Sk1NVZ8+fcxlDodD3bt315YtW/TQQw9p+/btysnJ8YqJjY1Vs2bNtGXLFp+fh2632/xhQpIyMjLKYM8AAADOoDAHAACACmf58uX66quvlJycXOC51NRUSVJ0dLTX8ujoaB04cMCMCQ0NVfXq1QvE5K9fmKlTp2rSpEkXmj4AAECxUJgDgErC6XQqKSmpWLEul0sDBw6UJK1Zs0ZOp7NE2wGAC3Ho0CE99thjWrduXZGfKedOmzcM47xT6c8XM3HiRI0bN858nJGRobi4uGJmDgAAUDIU5gCgkrDZbKWaYup0OpmaCqBcbd++XUePHlXbtm3NZR6PR5s2bdKcOXO0b98+SWdGxdWtW9eMOXr0qDmKLiYmRtnZ2UpLS/MaNXf06FF17tzZ57YdDoccDoe/dwkAAKBQXJUVAAAAFUrPnj317bffaufOneatXbt2Gjp0qHbu3KlLL71UMTExWr9+vblOdna2Nm7caBbd2rZtq5CQEK+YlJQU7dq1q8jCHAAAQHlixBwAAJUEV+ZFoKhataqaNWvmtSwiIkI1a9Y0l48dO1ZTpkxR48aN1bhxY02ZMkXh4eEaMmSIJCkqKkojR47U+PHjVbNmTdWoUUMTJkxQ8+bNzau0AgAAWI3CHAAAlQRX5sXF5IknnlBWVpZGjx6ttLQ0dejQQevWrVPVqlXNmJkzZyo4OFiDBw9WVlaWevbsqcTERNntdgszBwAA+B2FOQAAAFR4GzZs8Hpss9mUkJCghIQEn+s4nU7Nnj1bs2fPLtvkAAAASonCHAAAlQRX5gUAAAAqFgpzAagk5wjKj+c8QQAArswLAAAAVCwU5gJQeZ0jSOI8QQAAAAAAAGUlyOoEAAAAAAAAgMqIEXMBqCTnCJI4TxAAAAAAAEBFRGEuAJX2HEES5wkCAAAAAACoKJjKCgAAAAAAAFiAwhwAAAAAAABgAQpzAAAAAAAAgAUCrjD36quvqmHDhnI6nWrbtq0+/fRTn7EbNmyQzWYrcPvuu++84lauXKmmTZvK4XCoadOmWrVqVVnvBgAAAAAAACq5gCrMrVixQmPHjtXTTz+tHTt2qGvXrurXr58OHjxY5Hr79u1TSkqKeWvcuLH53NatW3XHHXdo2LBh+vrrrzVs2DANHjxYX3zxRVnvDgAAAAAAACqxgCrMzZgxQyNHjtT999+vJk2aaNasWYqLi9PcuXOLXK9OnTqKiYkxb3a73Xxu1qxZ6t27tyZOnKgrr7xSEydOVM+ePTVr1qwy3hsAAAAAAABUZgFTmMvOztb27dvVp08fr+V9+vTRli1bily3devWqlu3rnr27KlPPvnE67mtW7cWaLNv375Ftul2u5WRkeF1AwAAAAAAAEoi2OoEiuvYsWPyeDyKjo72Wh4dHa3U1NRC16lbt67mz5+vtm3byu12a/HixerZs6c2bNigbt26SZJSU1NL1KYkTZ06VZMmTbrAPQIAAADKn2EYcrlcVqdRoZz9evDaFOR0OmWz2axOAwAuSgFTmMt37j8EwzB8/pO44oordMUVV5iPO3XqpEOHDunFF180C3MlbVOSJk6cqHHjxpmPMzIyFBcXV6L9AAAAAKzgcrnUt29fq9OosAYOHGh1ChVOUlKSwsLCrE4DAC5KATOVtVatWrLb7QVGsh09erTAiLeidOzYUd9//735OCYmpsRtOhwORUZGet0AAAAAAACAkgiYEXOhoaFq27at1q9fr1tuucVcvn79+hL9qrVjxw7VrVvXfNypUyetX79ejz/+uLls3bp16ty5s38SBwAAACqozDZDpaCA+UpQdgxDyss9cz8oWGLappSXq4ivllqdBQBc9ALqv/C4ceM0bNgwtWvXTp06ddL8+fN18OBBjRo1StKZKaY///yzXn/9dUlnrrjaoEEDXXXVVcrOztaSJUu0cuVKrVy50mzzscceU7du3fTCCy9o4MCBWrNmjT766CNt3rzZkn0EAAAAyk1QsGQPsTqLCiLU6gQAAJVQQBXm7rjjDh0/flyTJ09WSkqKmjVrpvfff1/x8fGSpJSUFB08eNCMz87O1oQJE/Tzzz8rLCxMV111ld577z3dcMMNZkznzp21fPly/fnPf9Zf/vIXNWrUSCtWrFCHDh3Kff8AAAAAAABQeQRUYU6SRo8erdGjRxf6XGJiotfjJ554Qk888cR52xw0aJAGDRrkj/QAAAAAAACAYgmYiz8AAAAAAAAAFxMKcwAAAAAAAIAFKMwBAAAAAAAAFqAwBwAAAAAAAFiAwhwAAAAAAABgAQpzAAAAAAAAgAUozAEAAAAAAAAWoDAHAAAAAAAAWIDCHAAAAAAAAGABCnMAAAAAAACABSjMAQAAAAAAABagMAcAAAAAAABYgMIcAAAAAAAAYAEKcwAAAAAAAIAFKMwBAAAAAAAAFqAwBwAAAAAAAFiAwhwAAAAAAABggWCrEwAAwEqGYcjlcpVJ22e3W1bbkCSn0ymbzVZm7QMAAAAoGxTmAACVmsvlUt++fct8OwMHDiyztpOSkhQWFlZm7QMAAAAoG0xlBQAAAAAAACzAiDkAAP4ns81QKciP/xoNQ8rLPXM/KFjy53TTvFxFfLXUf+0BAAAAKHcU5gAAyBcULNlD/NxoqJ/bAwAAAHCxYCorAAAAAAAAYAEKcwAAAAAAAIAFKMwBAAAAAAAAFqAwBwAAAAAAAFigVBd/OHTokGw2m+rVqydJ+vLLL/XGG2+oadOmevDBB/2aIAAAKJrL5SrTNsui/XxOp1M2f16tFmWCvh8AAEDZKFVhbsiQIXrwwQc1bNgwpaamqnfv3rrqqqu0ZMkSpaam6q9//au/8wQAAD4MHDgwYNtPSkpSWFhYmbUP/6DvBwAAUDZKNZV1165duvrqqyVJb775ppo1a6YtW7bojTfeUGJioj/zAwAAgMWs6PvNnTtXLVq0UGRkpCIjI9WpUyd98MEH5vOGYSghIUGxsbEKCwtTjx49tHv3bq823G63HnnkEdWqVUsRERG66aabdPjw4TLJFwAAoDRKNWIuJydHDodDkvTRRx/ppptukiRdeeWVSklJ8V92AIDzYhojJOmVbifksBt+a88wpOy8M/dDgyR//pncHpvGbKrmvwZR5qzo+9WrV0/PP/+8LrvsMknSokWLNHDgQO3YsUNXXXWVpk2bphkzZigxMVGXX365nnvuOfXu3Vv79u1T1apVJUljx47V2rVrtXz5ctWsWVPjx49X//79tX37dtnt9jLJGwAAoCRKVZi76qqrNG/ePN14441av369nn32WUnSkSNHVLNmTb8mCAAoGtMYIUkOuyGnn+sMZfeX8V8BEeXDir7fgAEDvB7/7W9/09y5c/X555+radOmmjVrlp5++mndeuutks4U7qKjo/XGG2/ooYceUnp6uhYsWKDFixerV69ekqQlS5YoLi5OH330kfr27VsmeQMAAJREqaayvvDCC3rttdfUo0cP3XXXXWrZsqUk6Z133jGnOQAAAODiYHXfz+PxaPny5crMzFSnTp20f/9+paamqk+fPmaMw+FQ9+7dtWXLFknS9u3blZOT4xUTGxtrTsP1xe12KyMjw+sGAABQVko1Yq5Hjx46duyYMjIyVL16dXP5gw8+qPDwcL8lBwAoHs8ATyk/0X0wJHn+d98uyZ+zTXMl+1qmkAGBxKq+37fffqtOnTrJ5XKpSpUqWrVqlZo2bWoW1qKjo73io6OjdeDAAUlSamqqQkNDvfLNj0lNTfW5zalTp2rSpEl+3hMAAIDClfprnN1uL9DRadCgwYXmAwAojWD5tzAnSSF+bg9AQLOi73fFFVdo586dOnHihFauXKnhw4dr48aN5vPnnqPSMIzznrfyfDETJ07UuHHjzMcZGRmKi4sr5R4AAAAUrdRf4/7973/rzTff1MGDB5Wdne313FdffXXBiQEAAKDisKLvFxoaal78oV27dkpOTtZLL72kJ598UtKZUXF169Y1448ePWqOoouJiVF2drbS0tK8CopHjx5V586dfW7T4XCYF7oAAAAoa6U6x9zLL7+s++67T3Xq1NGOHTt09dVXq2bNmvrxxx/Vr18/f+cIAAAAC1WUvp9hGHK73WrYsKFiYmK0fv1687ns7Gxt3LjRLLq1bdtWISEhXjEpKSnatWtXkYU5AACA8lSqEXOvvvqq5s+fr7vuukuLFi3SE088oUsvvVR//etf9dtvv/k7RwAAAFjIir7fU089pX79+ikuLk4nT57U8uXLtWHDBn344Yey2WwaO3aspkyZosaNG6tx48aa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Iy3tP7yK8A9pyZIlOn78uCTp+PHjWrp0qUaOHGlpTrg4OZ3OMp16V9btA8Vhs9lKdRxy/ALAxaW8Tm0QqDglAxB4KMyhXFWWcwQdPnxYS5culWEYks4UGJcuXaq+ffuqXr16luUFABVNWYx6OLvNshxVURF+BAIAAEBgozAH+JlhGJo5c6bP5S+++CJf5ADgf/KnnAZi+1b/CAQAlVFJTm1QlsrrtB8lVVHyAFB8FOZQrkr6j7S0//Cs/Id04MABJScnF1ju8XiUnJysAwcOqEGDBuWfGAAAABDgSntqg7LEaRMAXAgKcyhXF/KPNFD+4cXHx6t9+/b66quv5PF4zOV2u11t27ZVfHy8hdkBQMXjGeDxb4/EkJT/8WuX5M9ByrmSfa3djw0CAACgMguyOgHgYmOz2fT444/7XM40VgA4R7CfbyGSnP+7hZRB+wAAAICfUJgDykC9evU0dOhQswhns9k0dOhQXXLJJRZnBgBAYJg6darat2+vqlWrqk6dOrr55pu1b98+rxjDMJSQkKDY2FiFhYWpR48e2r17t1eM2+3WI488olq1aikiIkI33XSTDh8+XJ67AgAA4BOFOaCM3H333apZs6YkqVatWho6dKjFGQEAEDg2btyoMWPG6PPPP9f69euVm5urPn36KDMz04yZNm2aZsyYoTlz5ig5OVkxMTHq3bu3Tp48acaMHTtWq1at0vLly7V582adOnVK/fv39zrdBAAAgFUozAFlxOl0avz48YqOjta4ceO4QhIAACXw4Ycf6t5779VVV12lli1bauHChTp48KC2b98u6cxouVmzZunpp5/WrbfeqmbNmmnRokU6ffq03njjDUlSenq6FixYoOnTp6tXr15q3bq1lixZom+//VYfffSRlbsHAAAgicIcUKa6dOmit956S126dLE6FQAAAlp6erokqUaNGpKk/fv3KzU1VX369DFjHA6Hunfvri1btkiStm/frpycHK+Y2NhYNWvWzIw5l9vtVkZGhtcNAACgrFCYAwAAQIVmGIbGjRuna665Rs2aNZMkpaamSpKio6O9YqOjo83nUlNTFRoaqurVq/uMOdfUqVMVFRVl3uLi4vy9OwAAACYKcwAAAKjQHn74YX3zzTdatmxZgefOvdq5YRjnvQJ6UTETJ05Uenq6eTt06FDpEwcAADgPCnMAAACosB555BG98847+uSTT1SvXj1zeUxMjCQVGPl29OhRcxRdTEyMsrOzlZaW5jPmXA6HQ5GRkV43AACAskJhDigmwzCUlZVV7Nvp06eVlpamtLQ0nT59utjrGYZh9a4CAGA5wzD08MMP6+2339Z//vMfNWzY0Ov5hg0bKiYmRuvXrzeXZWdna+PGjercubMkqW3btgoJCfGKSUlJ0a5du8wYAAAAKwVbnQAuHi6Xq0zbLIv2DcOQ2+2Ww+E477QXl8ulgQMH+j2Hc61Zs6ZEV3B1Op3nzb2seRUTPTnWJVJSgZQrAFQyY8aM0RtvvKE1a9aoatWq5si4qKgohYWFyWazaezYsZoyZYoaN26sxo0ba8qUKQoPD9eQIUPM2JEjR2r8+PGqWbOmatSooQkTJqh58+bq1auXlbsHAAAgicIc/Kisi1blURSrCEq6n0lJSQoLCyujbIrH7Xab9yN2vGFhJgCAi8XcuXMlST169PBavnDhQt17772SpCeeeEJZWVkaPXq00tLS1KFDB61bt05Vq1Y142fOnKng4GANHjxYWVlZ6tmzpxITE2W328trVwAAAHyiMAcAAIAKpzindrDZbEpISFBCQoLPGKfTqdmzZ2v27Nl+zA4AAMA/KMzBr2Z0OSGH3X/nSDMMKTvvzP3QIMmfMzbdHpvGfVbNfOzp5/HvO8KQ5Pnffbskf842zZXsH5z5pb8inJPO4XCY9zNbD5HsIRZmUwKeHEb4AQAAAAAsQ2EOfnV2oSvQ5Be6Ao3b7VZ4eLilOXid484eEjiFOeAi4vbYdOYXAf8o6x9GvOT6r+0yd1auFeGHEQAAAAQ2CnMAAFwExmyqZnUKpWZfyw8jAAAAqJwozMGvXumWJkeAfL9ye6Qxm6qbjz0D/DyVtSzl/v5F9uxppAAAAAAAIHAEShkCAcJhl5wBUpgrIFgB+Y6w+XN+GYCAtGbNGjmdTr+26XK5zKtEl0X7WVlZuvnmmyXxwwgAAAAqryCrEyipV199VQ0bNpTT6VTbtm316aefFhm/ceNGtW3bVk6nU5deeqnmzZtXIGblypVq2rSpHA6HmjZtqlWrVpVV+gAA+J3T6VRYWJhfb2cX4sqi/bCwsN93IDjAbv/DDyMAAAC4UAFVmFuxYoXGjh2rp59+Wjt27FDXrl3Vr18/HTx4sND4/fv364YbblDXrl21Y8cOPfXUU3r00Ue1cuVKM2br1q264447NGzYMH399dcaNmyYBg8erC+++KK8duui4vbY5PLIb7esXCk9+8wtK9d/7bo8Pk4+7s9bjiTX/245ZdA+AAAAAAAIaIEycUSSNGPGDI0cOVL333+/JGnWrFlKSkrS3LlzNXXq1ALx8+bNU/369TVr1ixJUpMmTbRt2za9+OKLuu2228w2evfurYkTJ0qSJk6cqI0bN2rWrFlatmxZifLLzMyU3V5wHqfdbvcaeZCZmVkgJisrSx6Pp8ByT7bb5/ZsNpuCQkLNx3k5bvm6QJzNJgWFOEoZm+37ynN5OV4PR31S1We+krxen7y8vCKvaFeS2KCgIHPkQqljV5dRu2UU69GZ4yUzM1N5eWcunehwOBQcfOZtnZOTo+zsbJ/tnjsFq7DjMl9oaKhCQs5caTU3N1dut/dxefbxa3hyZfvfVVmNvDzl5XofI2ez2e0KsgeXPNbIU16OH2LzcpSXl6egoKD/xRo6nV3EMRkkOYJ/j83KKeLvZpOcIb//9nE6//KWfo71eDxex4BXbFCQ16ik06dP+zzWbDab10nsT58+bf5Nz23/3NisrKxCt58vIiKiVLEul6vQz8XCuFyuIp8PDw8330dut1u5ub9Xt88+fj05bgUFBf/+nsvNkVFEvkEhIbLZzvw98jy5MorIt0SxwSGyBZ0nNi9HHo/HPH6l4r3vi/sZcfbfKTc394I+I3zFGoahvLw8edweqZBdtNltCsp/z+UZysvx/bcos9ggm4JCfn/f57nzzFzPfW8EBwebn62GYej06dM+2z3fMQsAAIDKIWAKc9nZ2dq+fbv+9Kc/eS3v06ePtmzZUug6W7duVZ8+fbyW9e3bVwsWLFBOTo5CQkK0detWPf744wVi8ot5hXG73V5fOjIyMiRJsbGxhcbfcMMNeu+998zHderU8dlZj4qKUqMOvz/e/Y/xys06WWhseHRDXTkswXy8Z+FTys44Vmiss2asmt73e/HyuyUJch0/UmhsaGQtNXtwuvn4/5ZP0elf9hcaGxxWRZ3atf493927lZ6eXmhsUFCQunTp8nu+e/YoLS2t0FhJ6tq1q3l/3759Onas8H2TpM6dO5uFvO+//15Hjx71GduhQweFhp4paP74449KSUnxGdu+fXuzqPrTTz/p559/9hnbpk0bs6hw6NAhnyM5JalVq1aqWvVMEfPIkSPav7/w11eSmjdvrmrVqkmSUlNT9d///tfr+dq1a5v33333Xd14442SpKVLl+q+++7z2e6bb76pG264wXwcHR3tM3bhwoW69957JUlJSUnq37+/z9g4RwPVbttXknTq8D59/+bzPmMv6XaHoq8+k8PpX37SvqWTfMbGdLpZsV1ukSS5jh/R3sSnfcbWaddP9XrcKUnKzjiu3f+Y4DO2bt26uuyyyyRJaac96jT9O5+xg1pV0/Rb6kmSsnIMNfnbHp+xNzSN1Nw76puPi4q9tnEVJd7dwHzcZtpen0W/jg3CteK+S83HX375pdcxcLZ27dopOTnZfNy0aVMdOHCg0NimTZtq9+7d5uOuXbtq7969klSg/fj4eP3000/m427dumnbtm2FtlurVi39+uuv5uN+/fpp48aNhcaGh4d7FX9uu+02vf/++4XGStKpU6fM+/fff79Wr15dZGz++/Ohhx7SokWLCg/cskXNR89WSHikJOnwhmU6tvNjn+1e9cCLckSdeX2OfPpvHd32gc/YJvf+TWG1zhw/qZ+vVepW3/leMfQZRdQ983f+dfs6/bxphc/Y5s2bm/fnz5+vhx9+2GdsST4jlixZYt5/5513dPfdd/uMLclnxJw5czRmzBhJUnp6ur799lup8H/jih8Yr0t6XiJJOnXolL6d/q3PdutdX0/1bzjznsv6JUs7p+70GRt7Xawa3NxAkuROc+urSV/5jI25JkaXDj7zt8g9lavkp39/T5373hg+fLgSExMlnSluV6lSxWe7+efXAwAAQOUWMFNZjx07Jo/HU6B4EB0drdTU1ELXSU1NLTQ+NzfXLPL4ivHVpiRNnTpVUVFR5i0uLq40u1SAOTLKk2PegoKCfN8KxNqKH2srIjaoJLG/H0KrV69WixYtfO6f0+lUUlKSebv66quLfD2SkpK0Zs2aYr12a9asMds9txh7rjfffNOMHTBgQJGxr7/+uhl7++23Fxk7f/58M7aoL7CS9PLLL5ux+SNAffn73/9uxuZ/mQUAAAAAAIHPZhQ1h64COXLkiC655BJt2bJFnTp1Mpf/7W9/0+LFi/XddwVHuVx++eW67777zGmqkvTZZ5/pmmuuUUpKimJiYhQaGqpFixbprrvuMmOWLl2qkSNH+pxmUtiIubi4OB05ckSRkZEF4oszlTUtLU1Dhgw5z6tQseVftc9f09QiIiKUlZWlvn37Ki8vT6tXr/Y+WfhZipqmdiGxYWFhZvExOztbOUVMnzw3NiMjw+uKhmfn7nQ6zRF+52v37Fh/TlNzOBxyu93miI5ffvnF6+9ztuJMZc3f16x298gWemZfA2Eqa5Udb5h/tzld04o8foODpNBiTmW1B0mh9iDlz0rNzc2Tr/PEnz1FVireVFa3x6Yxm6rJ4/EUOL7M2AuYynr8+HHddNNNkgoevxVpKmv+8Xvs2LEirxp6vqms+cdvZpuhCnJEBMxU1oivliooKEjr1q1TWFiY36ey5o+ue++997x+iDlXaaayZmVlqU+fPmemsvq4KmuFnMp6Os+8Kuu5742STmWtVauWpDMjBwvrP6BiyMjIUFRU1EX1d8rvX0lSZrvh0v9OQQF48eQoYtuZEeZJSUk+++GV1dnvI14fAGfLzMw0v6cUp/8QMFNZa9WqJbvdXmAk29GjR31OwYuJiSk0Pjg4WDVr1iwypqhpfQ6Ho8D5uaQzXyh9FTbOjTtXUV+OAklJ/iEV9SX6XEFBQYqIiChW+77+PhcaGxoaak6BLU5sRESEWVArKveStBsSEmJ++fVH7Nlfnot7/AYHB5tf7PMFBQWZ+2qz//6cLShI9tDivb4lirX5KdbjPerz4U+rF6vNisRutxf7vXF2Ma04scU5fqWSve/9+Rlx9o8cTqezWMevVPB9f/bxaw9x6OwKalBw8b+sBtmDJXvx/q36JdYTVOC8pv78jMjKyjLvBwcHF/tvV9hnhC82m+3MPjh03h6JLcgmu6PgeVzLNdZ2JrY47w2bzVbsYxIAAACVV8AU5kJDQ9W2bVutX79et9xyi7l8/fr15kiHc3Xq1Elr1671WrZu3Tq1a9fO/DLSqVMnrV+/3us8c+vWrVPnzp3LYC98O/tLYmbrIYHzy6UnRxE73pBU8GICAAAAAAAA8C1gCnOSNG7cOA0bNkzt2rVTp06dNH/+fB08eFCjRo2SdOaKqj///LNef/11SdKoUaM0Z84cjRs3Tg888IC2bt2qBQsWeF1t9bHHHlO3bt30wgsvaODAgVqzZo0++ugjbd68uVz3zXb2HDd7SOAU5s5i8zVPDwgA+VOx/cnlcnlNZ/Z3+/nKql0AAAAAQNkKqMLcHXfcoePHj2vy5MlKSUlRs2bN9P777ys+Pl6SlJKS4nUlzIYNG+r999/X448/rldeeUWxsbF6+eWXddttt5kxnTt31vLly/XnP/9Zf/nLX9SoUSOtWLFCHTp0KLB9ABcvp9NZpucGKev2gYDm+1SfpWNIyj8tn12SP3838neuAAAAqNQCqjAnSaNHj9bo0aMLfS4xMbHAsu7du+urr74qss1BgwZp0KBB/kgPACoswzB8XtTmXGfHFXedfE6nkxG0KJH8iykAAAAAlU3AFeYAAKXjcrnMq4eVhK/zePrClckAAAAAoHgozAEAgHLndDqVlJRUJm1zfkcAAAAECgpzKFclmUonlX46XVlMpQvk3AGpZIUQwzDkdrslnbnickmOSYoVKA6bzVYuIys5vyMAAAAqMgpzKFelnUonlWw6XVlMpQvk3AGp5IWQ8PDwMswGAAAAABBkdQIAAAAAAABAZcSIOZSrkp5TqLTT6cpiKl0g5w4AAAAAACoeCnMoV6U5p1BFmU4XyLkDAAAAAICKh6msAAAAAAAAgAUozAEAAAAAAAAWoDAHAAAAAAAAWIDCHAAAAAAAAGABCnMAAAAAAACABSjMAQAAAAAAABagMAcAAAAAAABYgMIcAAAAAAAAYAEKcwAAAAAAAIAFKMwBAAAAAAAAFqAwBwAAAAAAAFiAwhwAAAAAAABgAQpzAAAAAAAAgAUozAEAAAAAAAAWoDAHAAAAAAAAWIDCHAAAAAAAAGABCnMAAAAAAACABSjMAQAAAAAAABagMAcAAAAAAABYgMIcAAAAAAAAYAEKcwAAAAAAAIAFgq1OAAAAlA/DMORyuYoVe3ZccdfJ53Q6ZbPZSrQOAAAAUBlRmAMAoJJwuVzq27dvidcbOHBgieKTkpIUFhZW4u0AAAAAlQ1TWQEAAAAAAAALMGIOAIBKwul0KikpqVixhmHI7XZLkhwOR4mmpjqdzlLlBwAAAFQ2jJgDAKCSsNlsCgsLK9YtPDxc1atXV/Xq1RUeHl7s9cLCwji/HPxi06ZNGjBggGJjY2Wz2bR69Wqv5w3DUEJCgmJjYxUWFqYePXpo9+7dXjFut1uPPPKIatWqpYiICN100006fPhwOe4FAABA0SjMAQAAoMLJzMxUy5YtNWfOnEKfnzZtmmbMmKE5c+YoOTlZMTEx6t27t06ePGnGjB07VqtWrdLy5cu1efNmnTp1Sv3795fH4ymv3QAAACgSU1kBAABQ4fTr10/9+vUr9DnDMDRr1iw9/fTTuvXWWyVJixYtUnR0tN544w099NBDSk9P14IFC7R48WL16tVLkrRkyRLFxcXpo48+KtWFUAAAAPyNEXMAAAAIKPv371dqaqr69OljLnM4HOrevbu2bNkiSdq+fbtycnK8YmJjY9WsWTMzpjBut1sZGRleNwAAgLJCYQ4AAAABJTU1VZIUHR3ttTw6Otp8LjU1VaGhoapevbrPmMJMnTpVUVFR5i0uLs7P2QMAAPyOwhwAAAAC0rkXGjEM47wXHzlfzMSJE5Wenm7eDh065JdcAQAACkNhDgAAAAElJiZGkgqMfDt69Kg5ii4mJkbZ2dlKS0vzGVMYh8OhyMhIrxsAAEBZ4eIPAADky8v1b3uG8XubQcHSeUbylIi/c63gDMOQy+UqVuzZccVdJ5/T6TzviCtYr2HDhoqJidH69evVunVrSVJ2drY2btyoF154QZLUtm1bhYSEaP369Ro8eLAkKSUlRbt27dK0adMsyx0AAOBsFOYAAPifiK+WWp0CfHC5XKW6iubAgQNLFJ+UlKSwsLASbwf+d+rUKf3www/m4/3792vnzp2qUaOG6tevr7Fjx2rKlClq3LixGjdurClTpig8PFxDhgyRJEVFRWnkyJEaP368atasqRo1amjChAlq3ry5eZVWAAAAq1GYAwAAQIWzbds2XXvttebjcePGSZKGDx+uxMREPfHEE8rKytLo0aOVlpamDh06aN26dapataq5zsyZMxUcHKzBgwcrKytLPXv2VGJioux2e7nvDwAAQGEozAEAKjWn06mkpKQyadvlcpkjttasWSOn01km2ymrdiuSkvydDMOQ2+2WdOZ8YSWZmloZXstA0aNHDxmG4fN5m82mhIQEJSQk+IxxOp2aPXu2Zs+eXQYZAgAAXDgKcwCASs1ms5XL1EWn08kUyQtQ0r9TeHh4GWYDAAAA+AdXZQUAAAAAAAAsEDCFubS0NA0bNkxRUVGKiorSsGHDdOLECZ/xOTk5evLJJ9W8eXNFREQoNjZW99xzj44cOeIV16NHD9lsNq/bnXfeWcZ7AwAAAAAAgMouYKayDhkyRIcPH9aHH34oSXrwwQc1bNgwrV27ttD406dP66uvvtJf/vIXtWzZUmlpaRo7dqxuuukmbdu2zSv2gQce0OTJk83HTDUCAAAAgDMMw1BWVpbVaVQoLper0Ps4w+l0lugcr0BlFhCFub179+rDDz/U559/rg4dOkiS/vGPf6hTp07at2+frrjiigLrREVFaf369V7LZs+erauvvloHDx5U/fr1zeXh4eGKiYkp250AAAAAgADkdrvNixmhIF6bgpKSkhjwAhRTQExl3bp1q6KiosyinCR17NhRUVFR2rJlS7HbSU9Pl81mU7Vq1byWL126VLVq1dJVV12lCRMm6OTJk0W243a7lZGR4XUDAAAAAAAASiIgRsylpqaqTp06BZbXqVNHqampxWrD5XLpT3/6k4YMGaLIyEhz+dChQ9WwYUPFxMRo165dmjhxor7++usCo+3ONnXqVE2aNKnkOwIAAAAAAeyVbifksBtWp2E5w5Cy887cDw2SmLUpuT02jdlUzeo0gIBjaWEuISHhvAWu5ORkSSp0frphGMWat56Tk6M777xTeXl5evXVV72ee+CBB8z7zZo1U+PGjdWuXTt99dVXatOmTaHtTZw4UePGjTMfZ2RkKC4u7rx5AAAAAEAgc9gNOe1WZ1ExMFHzXBRsgdKwtDD38MMPn/cKqA0aNNA333yjX375pcBzv/76q6Kjo4tcPycnR4MHD9b+/fv1n//8x2u0XGHatGmjkJAQff/99z4Lcw6HQw6Ho8h2AAAAAAAAgKJYWpirVauWatWqdd64Tp06KT09XV9++aWuvvpqSdIXX3yh9PR0de7c2ed6+UW577//Xp988olq1qx53m3t3r1bOTk5qlu3bvF3BAAAAAAAACihgLj4Q5MmTXT99dfrgQce0Oeff67PP/9cDzzwgPr37+91RdYrr7xSq1atkiTl5uZq0KBB2rZtm5YuXSqPx6PU1FSlpqYqOztbkvTf//5XkydP1rZt2/TTTz/p/fff1+23367WrVurS5culuwrAAAAAAAAKoeAKMxJZ66c2rx5c/Xp00d9+vRRixYttHjxYq+Yffv2KT09XZJ0+PBhvfPOOzp8+LBatWqlunXrmrf8K7mGhobq448/Vt++fXXFFVfo0UcfVZ8+ffTRRx/JbufECQAAAAAAACg7AXFVVkmqUaOGlixZUmSMYfx+sskGDRp4PS5MXFycNm7c6Jf8AAAAAAAAgJIImBFzAAAAAAAAwMWEwhwAAAAAAABgAQpzAAAAAAAAgAUozAEAAAAAAAAWoDAHAAAAAAAAWIDCHAAAAAAAAGABCnMAAAAAAACABSjMAQAAAAAAABagMAcAAAAAAABYgMIcAAAAAAAAYAEKcwAAAAAAAIAFKMwBAAAAAAAAFqAwBwAAAAAAAFiAwhwAAAAAAABgAQpzAAAAAAAAgAUozAEAAAAAAAAWCLY6ARQiL9e/7RnG720GBUs2m//a9neuAAAAAAAAlQSFuQoo4qulVqcAAAAAAACAMsZUVgAAAAAAAMACjJirIJxOp5KSksqkbZfLpYEDB0qS1qxZI6fTWSbbKat2gYrEMAy5XK5ixZ4dV9x18jmdTtn8Oe0cAAAAAFDhUJirIGw2m8LCwsp8O06ns1y2A1ysXC6X+vbtW+L18ovjxZWUlMR7FQAAAAAuckxlBQAAAAAAACzAiDkAKIGSTDs3DENut1uS5HA4SjQ1lanhAAAAAHDxozAHACVQ0mnn4eHhZZgNAAAAACCQMZUVAAAAAAAAsACFOQAAAAAAAMACFOYAAAAAAAAAC1CYAwAAAAAAACxAYQ4AAAAAAACwAFdlBQAAAAD4ZBiGed/tsTARVGhnHxtnHzMAikZhDgAAAKhEvL4we3KsSwQV21nHhsvlMu+P2VTdimwQYNxut8LDw61OAwgIFOYAAACASsTtdpv3I3a8YWEmCBRnHzMAAP+iMAcAAAAA8MnhcJj3X+mWJofdwmRQYbk9v4+oPPuYAVA0CnMAAABAJXL2F+bM1kMke4iF2aDC8uSYIyqdTqe52GGXnBTmcB42m83qFEyGYXhNx7Yyj/zRpw6Ho8K8Rk6ns8LkUllRmAMAAMBF7dVXX9Xf//53paSk6KqrrtKsWbPUtWtXq9OyjNcXMHsIhTmcF1/aEchcLpf69u1rdRoVVlJSksLCwqxOo1ILsjoBAAAAoKysWLFCY8eO1dNPP60dO3aoa9eu6tevnw4ePGh1agAAAIyYAwAAwMVrxowZGjlypO6//35J0qxZs5SUlKS5c+dq6tSpFmcHAChrTqdTSUlJVqchl8ulgQMHSpLWrFnjNUXcShUlj8qMwhwA/8rL9W97hvF7m0HBkj+nUvg7V+Ai89lnn2nWrFkaO3asunTpYnU6QIllZ2dr+/bt+tOf/uS1vE+fPtqyZUuJ2srMzJTdXvDEWna73etLTWZmps82goKCvKYLlST29OnTMgyj0Fibzabw8PBix549LTEvN1uGJ89nHvbQ389Hl5eT7bPdArG52TLy/BMbFBJq5pyXmyMjz3e+JYsNkc12ZgJRnidXhsfjn9jgENmCSh5reHKVV2RssGxB9pLH5nmUl+u7zxNkt8tmDy4Ym5cjz/+2kZmZKY/H43XsePIMuXN9/92Cg6TQ4KASx+blGXL5KdYeJDn+F2sYhrJy/BMbZJOcIb9PPjudXcRxVk6xWdl58pWxTVJYaOliXTl5KuLtqfBzYs8+ZvLOef9FRET8HutymbGFKUlseHi4eWy63W7lFnG8lyQ2LCxMQf97f2ZnZysnJ+eCYj0ejzwej4KCguR0OhUWFnbedp1Op/m/JycnR9nZ2T5jHQ6HgoODSxybm5tb5JWXQ0NDFRISUuJYj8dT5Ln9QkJCFBoaWuLYvLw8ZWVl+SU2ODjYPO+qYRg6ffq0X2JLek5DCnMA/Criq6VWpwDAD1wul6ZPn65jx45p+vTpatu2Lb+oIuAcO3ZMHo9H0dHRXsujo6OVmppa6Dput9vrS0dGRoYkKTY2ttD4G264Qe+99575uE6dOj476927d9eGDRvMxw0aNNCxY8cKjW3Xrp2Sk5PNx02bNtWBAwcKjW3atKl2795tPm7fvr327NlTaGx8fLz27t1rPv6/N6fp9C8/FRobHFZVLcbMMR//sHK6Th3+rtDYoOBQtRr7D/Pxj2vmKGP/14XGSlKbCYvM+z+9P18n/i/ZZ2zLR+ebhbyD6xP12+7NPmObj56tkPBISdLhDct0bOfHPmOveuBFOaJqS5KOfPpvHd32gc/YJvf+TWG16kmSUj9fq9Stq33GXjH0GUXUvVSS9Ov2dfp50wqfsY0H/0lV6zeRJB37ZoMOfbzYZ2yjWx5XVKNWkqTf9m7VgQ//+f/t3Xt8TNf+//H3ZMhkkiapCpJKBHVpHEokRVS/REvcWsohlFTcWg3fHkIvaF3ao3oUdap60VYSqlUtbd1OcYrqQQmVb6vyKF9FUA6NkOqRhNi/P/wyXyOZmGhiJ/J6Ph55PLL3+qw9a48Vs+az99rLZWy9h0apWuNWkqSzB3br0Kr5LmNDuwxX9aZXnrmYfegHHfzstUIxISEhV9pw112SriSMdx75Xf2TD7s87oROtTSy3ZX3d++JC3p4wc8uY8d0qKGx0Vf+Tv/311x1mv+/LmMfbxugSTGBkqTj5y6q3dz9LmPj7r1Df+1x5W/3zH/y1XJm0f1Xkv7c4nbNfuTKv/GFi4bCphf9NyRJ3Zr46a3YOo7t4mKjG96m5EF1HdstZ6a7TPq1qeutj4fUd2zf99pPOvOfohNS99xp16on7nJsPzj/gI6dLTrB07CGTf8c3dCx/dCCgzpwuujkSvDtVbV1bGPHdt+Fh/T9L0UnNu7wtmrPs2GO7REfHtbOI1f+/6tRo4ZTrLe3t9PFiD59+mjt2rVFHleS00WAuLg4ffrppy5jz58/70jkPfHEE0pJSXEZe+rUKUfbEhMT9eabb7qMPXTokOrWrStJmjRpkmbNmuUydu/evfrTn/4kSXr55Zc1bdo0l7EtWrRw/P73v/9dzzzzjMvYTZs2qUOHDpKkBQsWaPTo0S5jV69ere7du0uSlixZoiFDhriMXbZsmfr27StJ+uyzz9SvXz+XsUlJSYqPj5d05Xl0PXr0cBn7xhtvaNSoUZKkb775RtHR0S5jZ86cqaefflqS9N1336lVq1YuY6dMmaKpU6dKktLT09W0aVOXsePHj9err74qScrIyFC9evVcxiYkJGj+/Cv/P/7666+qWbOmy9jBgwcrOTlZ0pULYLfddpvL2F69erksKwqJOQAASqAkK3tdHVfSK2dmr5D1wQcfKDMzU5KUmZmpJUuWaNiwYaa1B/gjrv1bMgzD5d/XjBkziv1CBQAAUJosRnH3o8Mt2dnZ8vf317lz5+Tn52d2cwq5cOGCYxUaVlzB1X7//XdHpv/qK00lVZZLkN+sZzGYnQRByZVW/y2pq/9PLUtm/n997NgxxcXFOU0bqVKlihYtWqTg4GBT2nSrubr/ltfxw60gLy9P3t7e+uSTT/TII4849v/lL39RWlqavv7660J1irpjLiQkRL/88kuR/04VdSprwf9jv7UYIMPi+lo9U1lvIPYWmspaMBPi448/VmxsrCwWixY+cE5eVqayMpX1iqunsp7Nuawnv75d0pVx+7XjmMo+lfXChQvq2bOnPDw8tH79eqay3uJTWQMCAiS5N87jjjkAf5jFYrkpCYSCZzEAKDuGYei11wpPYyrYP2vWLJLYqDA8PT0VERGhDRs2OCXmNmzY4Ljocy2bzeYYeF/Nx8fHrQsAJblIUJLYqxNvfzT26i8pHlU8JWtVt47rUdXT7TZ4VCmrWPfaWuJYaxXJ6t5Xo7KKtViryFoWsR5WWT0LPx/xurH5Ho6EgI+PT6FnLFo9LPL2dO/zoCSxHmUUa7GUTazknJwyK9ZeRrFXJ//ciS3oJ1cnwApcmyApSGQVpSSx1yZ0Siv22gTUH421Wq2O9+fqdhR33GuTa8XFXrx40SnJV1qxly5dckpgllZsfn6+079zUX2mKB4eHm5/fpYk1mKxlEmsO0jMAQBQAiVZ2cswDMdAzWazlSihZdbz3I4cOeL0XKsC+fn5Sk1N1ZEjRxzPWwEqgsTERMXFxSkyMlJRUVFasGCBMjIyNHLkSLObBgC3rNzcXJcXQCDemyJU5tl9JOYAACiBkt4hWpK7XMqD0NBQ3Xvvvfruu++cpo1YrVZFREQoNDTUxNYBJRcbG6vMzEy9+OKLOnHihJo2baq1a9fSlwEAQLlAYg4AADhYLBaNHTtWcXFxRe5nGisqooSEBCUkJJjdDOCWkJtvkVw+oazyMAyp4BFwnh4SH48FfaOw/IfyyTxIV/5sCq55WnXlgX6V3SXJusq9qfa3Mv48AACAk+DgYA0cOFCLFy92rF45cOBA1a5d2+ymAQBMNmrL7WY3ARVNFZF5KOD+oy9Ribj/JEeTZWVlKS4uTv7+/vL391dcXJzOnj1bbJ34+HjHylMFP23atHGKyc3N1X//938rICBAPj4+evjhh3Xs2LEyPBMAAMq/QYMGqXr16pKkgIAADRw40OQWAQAAALeeCpO3fvTRR3Xs2DF9+eWXkqTHH39ccXFxWrVqVbH1unTpoqSkJMd2wbK5BcaMGaNVq1Zp6dKlql69usaNG6cePXpo9+7dhVYeAgCgsvDy8tK4ceM0d+5cjRkzxrTFKAAA5rPZbG4vfFRZ5OTkOB7g/8UXX/A5eY3Lly//38Yl13Go5K7qG4ZReafIV4jEXHp6ur788kt9++23at26tSTp3XffVVRUlH766Sc1btzYZV2bzabAwMAiy86dO6f3339fixcv1oMPPihJ+uCDDxQSEqJ//vOfiomJKf2TAQCggrjvvvt03333md0MAIDJSrrwUWXj5eXF+3ONrKwsx+88QwzuyM3NrXCLppWWCjGVdfv27fL393ck5SSpTZs28vf317Zt24qtu3nzZtWsWVONGjXSiBEjdOrUKUfZ7t27dfHiRXXu3Nmx784771TTpk2LPW5ubq6ys7OdfgAAAAAAAICSqBB3zJ08eVI1a9YstL9mzZo6efKky3pdu3ZV3759FRoaqkOHDumFF15Qx44dtXv3btlsNp08eVKenp6qVq2aU71atWoVe9wZM2Zo2rRpN35CAAAAAADcomw2m+N3VmWFS1etynp1n6lsTP3zmDp16nUTXKmpqZKu3D59rYKV4lyJjY11/N60aVNFRkYqNDRUa9asUe/evV3Wu95xJ0yYoMTERMd2dna2QkJCij0PAAAAAAAqA6fv06zKCjcUl4O51Zn65zF69Gj179+/2Ji6devq+++/17///e9CZadPn1atWrXcfr2goCCFhobqwIEDkqTAwEDl5eUpKyvL6a65U6dOqW3bti6PY7PZKnU2FwAAAAAAAH+cqYm5gIAABQQEXDcuKipK586d086dO9WqVStJ0o4dO3Tu3LliE2jXyszM1NGjRxUUFCRJioiIUNWqVbVhwwb169dPknTixAnt3btXM2fOvIEzAgAAAAAAANxTIRZ/CAsLU5cuXTRixAh9++23+vbbbzVixAj16NHDaUXWu+++W5999pkk6fz58xo/fry2b9+uw4cPa/PmzXrooYcUEBCgRx55RJLk7++vYcOGady4cfrqq6+0Z88eDRo0SM2aNXOs0goAAAAAAACUhQoz03vJkiV66qmnHCuoPvzww3rjjTecYn766SedO3dOkmS1WvXDDz9o0aJFOnv2rIKCghQdHa2PP/5Yvr6+jjqvvfaaqlSpon79+unChQt64IEHlJycLKuVJZ0BAAAAAABQdipMYu6OO+7QBx98UGyMYRiO3+12u9atW3fd43p5eWnevHmaN2/eH24jAAAAAAAA4K4Kk5gDAAAAUMouXzK7BeWDYfzfe+FRRarEqwM60DcA4KYgMQfgpjMMQzk5OW7FXh3nbp0CXl5elXrZbQAArsfnuyVmNwEAgEqNxByAmy4nJ0cxMTElrtezZ88Sxa9bt052u73ErwMAAAAAwM1AYg4AAACoRLy8vNx6FnNlkpOT47gA+MUXX8jLy8vkFpUv5en9KMnMi7L0R2Z1lCVmjAAVD4k5ADddSb4QGIah3NxcSZLNZivRQKM8DSIBACgvLBYLd5QXw8vLi/enHLvRmRdlqaSzOsoSM0aAiofEHICbrqRfCLy9vcuwNQAAAAAAmIPEHAAAAACgQigvU7H/yKyOssSMEaDiITEHAAAAAKgQytNUbGZ1ACgNHmY3AAAAAAAAAKiMSMwBAAAAAAAAJiAxBwAAAAAAAJiAxBwAAAAAAABgAhZ/AAAAAAAAZeOS2Q0oJwxJ+f//d6uk8rGQr7noG5JIzAEAAAAwiWEYysnJMbsZTm0oD+0p4OXlJYuFb++o2KyrrGY3ASjXSMwBAAAAMEVOTo5iYmLMboaTnj17mt0Eh3Xr1slut5vdDABAGSIxBwAAAAAASo2Xl5fWrVtndjPKlZycHEfi/4svvpCXl5fJLSpfKvP7QWIOAAAAgCnKy5d3wzCUm5srSbLZbOVm+mhl/qKKis1isXC3ZzG8vLx4f+BAYg4AAACAKcrTl3dvb2+zmwAAqIQ8zG4AAAAAAAAAUBlxx1wFVNLVq/7IKlOsBAUAAAAAqKhY/bl4fOc3H4m5CuiPrF5V0lWmWAkKAAAAAFBRsfpz8fjObz6msgIAAAAAAAAm4I65Cqikq1f9kVWmWAkKAAAAAFBRsfpz8fjObz4ScxXQjaxexSpTAAAAAIDKhtWfUd4xlRUAAAAAAAAwAYk5AAAAAAAAwAQk5gAAAAAAAAATkJgDAAAAAAAATEBiDgAAAAAAADABiTkAAAAAAADABCTmAAAAAAAAABOQmAMAAAAAAABMQGIOAAAAAAAAMAGJOQAAAAAAAMAEJOYAAAAAAAAAE5CYAwAAAAAAAExAYg4AAADlzvTp09W2bVt5e3vr9ttvLzImIyNDDz30kHx8fBQQEKCnnnpKeXl5TjE//PCD2rdvL7vdrtq1a+vFF1+UYRg34QwAAACur4rZDQAAAACulZeXp759+yoqKkrvv/9+ofL8/Hx1795dNWrU0L/+9S9lZmZq8ODBMgxD8+bNkyRlZ2erU6dOio6OVmpqqvbv36/4+Hj5+Pho3LhxN/uUAAAACiExBwAAgHJn2rRpkqTk5OQiy9evX699+/bp6NGjuvPOOyVJs2fPVnx8vKZPny4/Pz8tWbJEOTk5Sk5Ols1mU9OmTbV//37NmTNHiYmJslgsN+t0AAAAisRUVgAAAFQ427dvV9OmTR1JOUmKiYlRbm6udu/e7Yhp3769bDabU8wvv/yiw4cPF3nc3NxcZWdnO/0AAACUFRJzAAAAqHBOnjypWrVqOe2rVq2aPD09dfLkSZcxBdsFMdeaMWOG/P39HT8hISFl0HoAAIArmMpaCgoeIMwVVVQ0v//+u+P37Oxs5efnm9gaoGTov6jIru6/lWkhgqlTpzqmqLqSmpqqyMhIt45X1FRUwzCc9l8bU/B+u5rGOmHCBCUmJjq2z507pzp16jDOAwAAbinpOI/EXCn47bffJIkrqqjQrp4KBFQ09F9UZL/99pv8/f3NbsZNMXr0aPXv37/YmLp167p1rMDAQO3YscNpX1ZWli5evOi4Ky4wMLDQnXGnTp2SpEJ30hWw2WxOU18LEnKM8wAAQEm5M84jMVcK7rzzTh09elS+vr48RLgMZGdnKyQkREePHpWfn5/ZzQFKhP6Lioz+W7YMw9Bvv/1WqRLLAQEBCggIKJVjRUVFafr06Tpx4oSCgoIkXVkQwmazKSIiwhEzceJE5eXlydPT0xFz5513up0AZJwHwBU+JwG4UpJxHom5UuDh4aHg4GCzm3HL8/Pz4wMPFRb9FxUZ/bfsVJY75W5ERkaGzpw5o4yMDOXn5ystLU2S1KBBA912223q3LmzmjRpori4OL366qs6c+aMxo8frxEjRjj666OPPqpp06YpPj5eEydO1IEDB/Tyyy9r8uTJbifZGOcBuB4+JwEUxd1xHok5AAAAlDuTJ09WSkqKYzs8PFyStGnTJnXo0EFWq1Vr1qxRQkKC7rvvPtntdj366KOaNWuWo46/v782bNigUaNGKTIyUtWqVVNiYqLTM+QAAADMZDEq0xOHUSFlZ2fL399f586d40oUKhz6Lyoy+i8AAK7xOQmgNHiY3QDgemw2m6ZMmeL0IGagoqD/oiKj/wIA4BqfkwBKA3fMAQAAAAAAACbgjjkAAAAAAADABCTmAAAAAAAAABOQmAMAAAAAAABMQGIOAAAAAAAXkpOTdfvttxcbM3XqVLVo0aJEx928ebMsFovOnj17w20rDRs3btTdd9+ty5cvu11n9erVCg8PL1EdAEUjMYcyFR8fL4vFopEjRxYqS0hIkMViUXx8/M1vGHCVN998U/Xq1ZOXl5ciIiL0zTffXLfO119/rYiICHl5eal+/fp6++23ncqTk5NlsVgK/eTk5JTVaaCSupH+O3/+fIWFhclut6tx48ZatGiRUzn9FwDgDsb6t4ZnnnlGkyZNkofHlfRAUYnI9PR0BQcHq3fv3srNzVWPHj1ksVj04YcfmtBi4NZCYg5lLiQkREuXLtWFCxcc+3JycvTRRx+pTp06JrYMkD7++GONGTNGkyZN0p49e3T//fera9euysjIcFnn0KFD6tatm+6//37t2bNHEydO1FNPPaXly5c7xfn5+enEiRNOP15eXmV9SqhEbqT/vvXWW5owYYKmTp2qH3/8UdOmTdOoUaO0atUqpzj6LwDAHYz1K7Zt27bpwIED6tu3r8uY1NRU3X///YqJidEnn3wim80mSRoyZIjmzZt3s5oK3LJIzKHMtWzZUnXq1NGKFSsc+1asWKGQkBCFh4c79hmGoZkzZ6p+/fqy2+1q3ry5Pv30U0d5fn6+hg0bpnr16jnu8vj73//u9Frx8fHq1auXZs2apaCgIFWvXl2jRo3SxYsXy/5EUSHNmTNHw4YN0/DhwxUWFqa5c+cqJCREb731lss6b7/9turUqaO5c+cqLCxMw4cP19ChQzVr1iynOIvFosDAQKef60lOTladOnXk7e2tRx55RLNnz3a6YlkwTWLx4sWqW7eu/P391b9/f/322283/B6g4rqR/rt48WI98cQTio2NVf369dW/f38NGzZMf/vb35zi6L8AAHe4O9aXzB3vr1y5UpGRkfLy8lJAQIB69+7tKMvKytJjjz2matWqydvbW127dtWBAweKPd4rr7yiWrVqydfXV8OGDXPrrvK1a9eqUaNGstvtio6O1uHDh53KMzMzNWDAAAUHB8vb21vNmjXTRx995ChftGiRqlevrtzcXKd6ffr00WOPPSZJ+p//+R9FR0fL19dXfn5+ioiI0K5du1y2aenSpercubPLi28bN25Ux44dNWTIEL3//vuyWq2Osocfflg7d+7Uzz//fN1zB+AaiTncFEOGDFFSUpJje+HChRo6dKhTzPPPP6+kpCS99dZb+vHHHzV27FgNGjRIX3/9tSTp8uXLCg4O1rJly7Rv3z5NnjxZEydO1LJly5yOs2nTJh08eFCbNm1SSkqKkpOTlZycXObniIonLy9Pu3fvVufOnZ32d+7cWdu2bXNZb/v27YXqxMTEaNeuXU6DwvPnzys0NFTBwcHq0aOH9uzZU2x7duzYoaFDhyohIUFpaWmKjo7WX//610JxBw8e1Oeff67Vq1dr9erV+vrrr/XKK6+4c8q4hdxo/83NzS00+Lbb7dq5cyf9FwBwQ9wZ60vmjffXrFmj3r17q3v37tqzZ4+++uorRUZGOsrj4+O1a9curVy5Utu3b5dhGOrWrZvLZN+yZcs0ZcoUTZ8+Xbt27VJQUJDefPPNYt+jo0ePqnfv3urWrZvS0tI0fPhwPffcc04xOTk5ioiI0OrVq7V37149/vjjiouL044dOyRJffv2VX5+vlauXOmo8+uvv2r16tUaMmSIJGngwIEKDg5Wamqqdu/ereeee05Vq1Z12a4tW7Y4vRdX++yzz9S9e3dNmjRJr776aqHy0NBQ1axZ063HaAAohgGUocGDBxs9e/Y0Tp8+bdhsNuPQoUPG4cOHDS8vL+P06dNGz549jcGDBxvnz583vLy8jG3btjnVHzZsmDFgwACXx09ISDD69Onj9HqhoaHGpUuXHPv69u1rxMbGlv7JocI7fvy4IcnYunWr0/7p06cbjRo1clmvYcOGxvTp0532bd261ZBk/PLLL4ZhGMb27duNxYsXG2lpacaWLVuMPn36GHa73di/f7/L4w4YMMDo0qWL077Y2FjD39/fsT1lyhTD29vbyM7Odux7+umnjdatW1/3fHFrudH+O2HCBCMwMNDYtWuXcfnyZSM1NdWoWbMm/RcAUGLujvUNwzB1vB8VFWUMHDiwyLL9+/cX+jz99ddfDbvdbixbtswwDMNISkpy+jyLiooyRo4c6XSc1q1bG82bN3fZhgkTJhhhYWHG5cuXHfueffZZQ5KRlZXlsl63bt2McePGObaffPJJo2vXro7tuXPnGvXr13cc19fX10hOTnZ5vGv5+/sbixYtctqXlJRkWK1Ww2q1Gi+88EKx9cPDw42pU6e6/XoACqtiZlIQlUdAQIC6d++ulJQUGYah7t27KyAgwFG+b98+5eTkqFOnTk718vLynG6Bf/vtt/Xee+/pyJEjunDhgvLy8gqtfvSnP/3J6RbroKAg/fDDD2VzYrglWCwWp23DMArtc6fO1fvbtGmjNm3aOMrvu+8+tWzZUvPmzdPrr79e5DHT09P1yCOPOO2LiorSl19+6bSvbt268vX1dWwHBQXp1KlTxbYXt66S9t8XXnhBJ0+eVJs2bWQYhmrVqqX4+HjNnDnT8X8n/RcAUBLXG+tL5o7309LSNGLEiCLL0tPTVaVKFbVu3dqxr3r16mrcuLHS09Nd1rl2wYuoqCht2rTJZRvS09PVpk0bp8/oqKgop5j8/Hy98sor+vjjj3X8+HHl5uYqNzdXPj4+jpgRI0bo3nvv1fHjx1W7dm0lJSU5FuGQpMTERA0fPlyLFy/Wgw8+qL59++quu+5y2a4LFy4UOY3VbrerXbt2evfddzVgwACFhYUVWd9ut+s///mPy+MDuD4Sc7hphg4dqtGjR0u6siLg1QqW2V6zZo1q167tVFbwcNFly5Zp7Nixmj17tqKiouTr66tXX33VcWt3gWtv1bZYLCzjjSIFBATIarXq5MmTTvtPnTqlWrVquawXGBhYZJ0qVaqoevXqRdbx8PDQvffeW+zzSgqSe9dDH4d04/3Xbrdr4cKFeuedd/Tvf/9bQUFBWrBggXx9fQt9iSpA/wUAXE9xY33J3PG+3W53Webq88udC7Ul4c7n5OzZs/Xaa69p7ty5atasmXx8fDRmzBjl5eU5YsLDw9W8eXMtWrRIMTEx+uGHH5wWcJo6daoeffRRrVmzRv/4xz80ZcoULV26tNDFswIBAQHKysoqtN9qterzzz9Xnz59FB0drY0bN6pJkyaF4s6cOaMaNWq48xYAcIFnzOGm6dKli/Ly8pSXl6eYmBinsiZNmshmsykjI0MNGjRw+gkJCZEkffPNN2rbtq0SEhIUHh6uBg0a6ODBg2acCm4Rnp6eioiI0IYNG5z2b9iwQW3btnVZLyoqqlCd9evXKzIy0uUzPAzDUFpamoKCglwet0mTJvr222+d9l27DRS40f5boGrVqgoODpbVatXSpUvVo0cPeXgUPSyg/wIArqe4sb5k7nj/nnvu0VdffVVkWZMmTXTp0iWn5F9mZqb279/v8i6xsLCwEn/mufM5+c0336hnz54aNGiQmjdvrvr16xd5UWz48OFKSkrSwoUL9eCDDzrevwKNGjXS2LFjtX79evXu3dvp+X/XCg8P1759+4oss9lsWrFihVq1aqXo6Gjt3bvXqTwnJ0cHDx4stMgHgJLhjjncNFar1XE7+NW3nkuSr6+vxo8fr7Fjx+ry5ctq166dsrOztW3bNt12220aPHiwGjRooEWLFmndunWqV6+eFi9erNTUVNWrV8+M08EtIjExUXFxcYqMjFRUVJQWLFigjIwMp+kJEyZM0PHjx7Vo0SJJ0siRI/XGG28oMTFRI0aM0Pbt2/X+++87rZo1bdo0tWnTRg0bNlR2drZef/11paWlFXkFucBTTz2ltm3baubMmerVq5fWr19faBogcLUb6b/79+/Xzp071bp1a2VlZWnOnDnau3evUlJSHHXovwCAkipurC+ZO96fMmWKHnjgAd11113q37+/Ll26pH/84x965pln1LBhQ/Xs2VMjRozQO++8I19fXz333HOqXbu2evbsWeTx/vKXv2jw4MGKjIxUu3bttGTJEv3444+qX7++yzaMHDlSs2fPVmJiop544gnt3r270IIVDRo00PLly7Vt2zZVq1ZNc+bM0cmTJwslCAcOHKjx48fr3XffdXy+S1empT799NP685//rHr16unYsWNKTU1Vnz59XLYrJibGaQxwLU9PTy1fvlz9+vVTx44d9dVXX6lZs2aSriQWbTZboSm5AEqGO+ZwU/n5+cnPz6/IspdeekmTJ0/WjBkzFBYWppiYGK1atcrxQTxy5Ej17t1bsbGxat26tTIzM5WQkHAzm49bUGxsrObOnasXX3xRLVq00JYtW7R27VqFhoY6Yk6cOKGMjAzHdr169bR27Vpt3rxZLVq00EsvvaTXX3/dadBz9uxZPf744woLC1Pnzp11/PhxbdmyRa1atXLZljZt2ui9997TvHnz1KJFC61fv17PP/982Zw4bgk30n/z8/M1e/ZsNW/eXJ06dVJOTo62bdumunXrOmLovwCAG1HcWF8yb7zfoUMHffLJJ1q5cqVatGihjh07Ot0hl5SUpIiICPXo0UNRUVEyDENr1651ORMiNjZWkydP1rPPPquIiAgdOXJETz75ZLFtqFOnjpYvX65Vq1apefPmevvtt/Xyyy87xbzwwgtq2bKlYmJi1KFDBwUGBqpXr16FjuXn56c+ffrotttucyq3Wq3KzMzUY489pkaNGqlfv37q2rWrpk2b5rJdgwYN0r59+/TTTz+5jKlataqWLVum//qv/1LHjh31/fffS5I++ugjDRw4UN7e3sWeO4DiWQx3HwoDALjpkpOTNWbMGJ09e9bspgAlRv8FAKBsdOrUSWFhYS4XZSqJZ555RufOndM777zjdp3Tp0/r7rvv1q5du5jBBPxB3DEHAAAAAEAFcObMGS1dulQbN27UqFGjSuWYkyZNUmhoqPLz892uc+jQIb355psk5YBSwDPmAAAAAACoAFq2bKmsrCz97W9/U+PGjUvlmP7+/po4cWKJ6rRq1arYR1wAcB9TWQEAAAAAAAATMJUVAAAAAAAAMAGJOQAAAAAAAMAEJOYAAAAAAAAAE5CYAwAAAAAAAExAYg4AyhGLxaLPP//c7GYAAACglDHOA1AUEnMAcI34+HhZLBaNHDmyUFlCQoIsFovi4+PdOtbmzZtlsVh09uxZt+JPnDihrl27lqC1AAAAcBfjPADlDYk5AChCSEiIli5dqgsXLjj25eTk6KOPPlKdOnVK/fXy8vIkSYGBgbLZbKV+fAAAAFzBOA9AeUJiDgCK0LJlS9WpU0crVqxw7FuxYoVCQkIUHh7u2GcYhmbOnKn69evLbrerefPm+vTTTyVJhw8fVnR0tCSpWrVqTldgO3TooNGjRysxMVEBAQHq1KmTpMJTHI4dO6b+/fvrjjvukI+PjyIjI7Vjx44yPnsAAIBbF+M8AOVJFbMbAADl1ZAhQ5SUlKSBAwdKkhYuXKihQ4dq8+bNjpjnn39eK1as0FtvvaWGDRtqy5YtGjRokGrUqKF27dpp+fLl6tOnj3766Sf5+fnJbrc76qakpOjJJ5/U1q1bZRhGodc/f/682rdvr9q1a2vlypUKDAzUd999p8uXL5f5uQMAANzKGOcBKC9IzAGAC3FxcZowYYIOHz4si8WirVu3aunSpY4B2++//645c+Zo48aNioqKkiTVr19f//rXv/TOO++offv2uuOOOyRJNWvW1O233+50/AYNGmjmzJkuX//DDz/U6dOnlZqa6jhOgwYNSv9EAQAAKhnGeQDKCxJzAOBCQECAunfvrpSUFBmGoe7duysgIMBRvm/fPuXk5DimJxTIy8tzmgbhSmRkZLHlaWlpCg8PdwzWAAAAUDoY5wEoL0jMAUAxhg4dqtGjR0uS5s+f71RWMNVgzZo1ql27tlOZOw/29fHxKbb86ukQAAAAKF2M8wCUByTmAKAYXbp0caykFRMT41TWpEkT2Ww2ZWRkqH379kXW9/T0lCTl5+eX+LXvuecevffeezpz5gxXUwEAAEoZ4zwA5QGrsgJAMaxWq9LT05Weni6r1epU5uvrq/Hjx2vs2LFKSUnRwYMHtWfPHs2fP18pKSmSpNDQUFksFq1evVqnT5/W+fPn3X7tAQMGKDAwUL169dLWrVv1888/a/ny5dq+fXupniMAAEBlxDgPQHlAYg4ArsPPz09+fn5Flr300kuaPHmyZsyYobCwMMXExGjVqlWqV6+eJKl27dqaNm2annvuOdWqVcsxXcIdnp6eWr9+vWrWrKlu3bqpWbNmeuWVVwoNHAEAAHBjGOcBMJvFKGrtZgAAAAAAAABlijvmAAAAAAAAABOQmAMAAAAAAABMQGIOAAAAAAAAMAGJOQAAAAAAAMAEJOYAAAAAAAAAE5CYAwAAAAAAAExAYg4AAAAAAAAwAYk5AAAAAAAAwAQk5gAAAAAAAAATkJgDAAAAAAAATEBiDgAAAAAAADABiTkAAAAAAADABP8PXQ3YjVgM3ScAAAAASUVORK5CYII=\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "tas_marginal_bias_data = marginal.calculate_marginal_bias(metrics = [cold_days], obs = tas_obs_val,\n", " raw = tas_cm_hist_val, LS = tas_val_debiased_LS,\n", " ISIMIP = tas_val_debiased_ISIMIP)\n", "\n", "plot = marginal.plot_marginal_bias(variable = 'tas', bias_df = tas_marginal_bias_data)\n", "plot.show()" ] }, { "cell_type": "markdown", "id": "dd4893d1", "metadata": {}, "source": [ "## 6. Apply the debiaser to the future period" ] }, { "cell_type": "markdown", "id": "879bbc09-6d39-4732-a368-6ee340715b1b", "metadata": {}, "source": [ "Based on some evalution we can now decide to apply the debiaser onto the future period -- the one we want to debias. This can be done as follows:" ] }, { "cell_type": "code", "execution_count": 13, "id": "dcac3914", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 225/225 [09:18<00:00, 2.48s/it]\n" ] } ], "source": [ "tas_fut_debiased_ISIMIP = tas_debiaser_ISIMIP.apply(tas_obs, tas_cm_hist, tas_cm_future, time_obs = time_obs, time_cm_hist = time_cm_hist, time_cm_future = time_cm_future)" ] }, { "cell_type": "markdown", "id": "dfd6aa1a", "metadata": {}, "source": [ "The variable tas_fut_debiased_ISIMIP now contains the bias corrected climate model data for the period 2065-2100. Congratulations!" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "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.13" }, "vscode": { "interpreter": { "hash": "916dbcbb3f70747c44a77c7bcd40155683ae19c65e1c03b4aa3499c5328201f1" } } }, "nbformat": 4, "nbformat_minor": 5 }