{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import pandas as pd\n", "from sklearn.datasets import load_boston\n", "from sklearn.model_selection import train_test_split\n", "from sklearn.linear_model import LinearRegression, Ridge\n", "from sklearn.metrics import mean_squared_error as mse\n", "\n", "%matplotlib inline\n", "import matplotlib.pyplot as plt\n", "import seaborn as sns" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Dataset: https://www.cs.toronto.edu/~delve/data/boston/bostonDetail.html" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "boston_data = load_boston()" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "X = pd.DataFrame(boston_data['data'], columns=boston_data['feature_names'])\n", "y = boston_data['target']" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Для начала нужно разбить выборку на обучающую и тестовую.\n", "\n", "Качество модели нужно оценивать по выборке, которая не участвовала в обучении." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "X_train, X_test, y_train, y_test = train_test_split(X.copy(), y, test_size=0.3, random_state=123)" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAABIQAAARuCAYAAACiDezSAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAgAElEQVR4nOzdf5xldX3n+ddbQCTo2v5KbQeYNLOSuETGxvQQXLIzJUjSYjZNdozBIQIJm06ymGjsR2Lr5BFNjLOYiMQ4hk0rhiaDIkEIjJgfBLnjw6xgRAk/Y2yxle40tFFASyfEJp/9457GS1lVXV11b91z6r6ej8d91Dnf86M+53T1997zud8fqSokSZIkSZI0OZ407gAkSZIkSZK0skwISZIkSZIkTRgTQpIkSZIkSRPGhJAkSZIkSdKEMSEkSZIkSZI0YUwISZIkSZIkTRgTQpIkSZIkSRPGhJAWJUkvyUNJDp9VviHJh5ttDye5J8lbkzyj2X5ekseSzMx6fc94rkTSpEiyM8n/aOqch5LckOSYccclaXVK8h+TfKqpc/Yk+bMkP5zkzUn+6xz7V5Lnzio7ryn/qTn2f2OSLzTn35Xkg6O8HkmrzwHqqW815Q8n+f+SvGjguOkkuwbWe01d9YJZ57+2KZ9ewcvSMpgQ0gElWQf870ABPz5Q/r8BPeCvgedV1RpgI7APGKwcPlFVT531+ocVCl/SZPs/quqpwFrgQeBdY45H0iqU5HXA7wH/GZgC/hXwB8CmgzzVucBXgXNmnf9c4FXAS5o6bQNw0zLDljRBFlFPfbCpX54N3Az8yQFO+fcM1FVJngW8CPjycCPXKJkQ0mKcA9wCXEb/g8p+vwP8UVX9P1X1IEBVfamq3lRVvRWPUpLmUVX/BFwNHD/uWCStLkmeDvwWcEFVXVNV36iqb1XVf6uqXz2I83wv8O+BzcCPJvmfBzb/W+AvqurzAFX1QFVtG+JlSFrFDqaeqqp9wBXAUUmes8BprwB+KskhzforgWuBfx7BJWhETAhpMc6h/x/+CvofUKaSHEk/A/yhsUYmSYuQ5LuAn6Kf3JakYXoR8BT6D0LLcQ7wqar6EHAvcPbAtluAc5L8atNd/5A5zyBJc1t0PZXkyfTro68ADy2w6z8A9wA/0qyfA1y+vDC10kwIaUFJfhj4XuCqqroN+DzwH4Fn0P/7eWBg399p+px+I8mvD5zm5KZ8/+vzK3kNkibanyZ5GHgEOB343THHI2n1eRbwj8236vN5xazPQg/Psc85wPub5fcz0BWjqv4r8EvAjwL/Hdib5PXDCV/SBFh0PQX8D+DngJcfYH/oJ4DOSfI8YE1VfWI44WqlmBDSgZwL/GVV/WOz/v6m7CHgX+iPywFAVf1aM47QtcChA+e4parWDLz+lxWKXZLObOqlpwCvBv77rG4YkrRcXwGeneTQBfa5atZnoTWDG5OcAhwLXNkUvR84Icn6/ftU1RVV9RJgDfALwFuS/OhQr0TSarXoeor++EJ3AT+4iPNeA5xK/zPWHy87Sq04E0KaV5IjgFcA/z7JA0keAH6F/oDRzwVuBf7PMYYoSYtSVY9V1TXAY8APjzseSavKJ4BHgTOXcY5zgQC3N5+3bh0of4Jm3I8/Ae4Anr+M3ylpciy6nmoaAmwG3pxk7QH2/SbwZ8AvYkKokxbKEEpn0n94OoEnDg52Ff1mzL8G/EWS3cD7qmpvkqPpf8O1Y6WDlaT5JAn9WRKfQX9sDkkaiqp6JMlvAO9Osg/4S+BbwEuAFwPfXOj4JE+h/wXcZuCGgU3/AfiNJL8K/DT9mXs+BnyDftexH+DbiSNJmtfB1lNV9dkkf0H/ee9XDnD6NwLvraqdQw9cI2cLIS3kXPqziH2pmc3igap6APgv9Ac6vIV+E8F/B/x90+f0z+lPRT84tfOLkszMev3blb0USRPqvyWZAb4GvBU4t6ruHnNMklaZqroIeB3w6/QTN/fT70Lxp4s4/Ez6Y3ZcPuvz1vvof3m7kX4d9kbgS8DD9Gd6/cWq+viwr0XS6rSEeup3gc1JvvsA5/0H66LuSlWNOwZJkiRJkiStIFsISZIkSZIkTRgTQpIkSZIkSRPGhJAkSZIkSdKEMSEkqbOSPCXJJ5P8bZK7k/xmU35Zki8kub15rW/Kk+T3k+xIckeSF473CiRJkiRpPJx2XlKXPQqcWlUzSQ4DPp7kz5ptv1pVV8/a/6XAcc3rh4BLmp+SJEmSNFFakRB69rOfXevWrXt8/Rvf+AZHHnnk+AI6CMY6fF2JE1ZnrLfddts/VtVzViCkZav+NIkzzephzWuhqRM30Z/Wt4BbkqxJsraq9sx3wOz6aT5d+ltYrNV2TV5Puy3merpUP62ExdZP0I2/ly7ECN2I0xiHZzV+floJq61+mktX44buxt7VuGG8sS9UP7UiIbRu3To+9alPPb7e6/WYnp4eX0AHwViHrytxwuqMNckXRx/N8CQ5BLgNeC7w7qq6NckvAm9N8hvATcDWqnoUOAq4f+DwXU3Znlnn3AxsBpiamuLtb3/7AeOYmZnhqU996hCuqD1W2zV5Pe22mOt58Ytf3Kn6adRmf35aSBfer7oQI3QjTmMcntX6+WnUVlv9NJeuxg3djb2rccN4Y1+ofmpFQkiSlqqqHgPWJ1kDXJvk+cAbgAeAJwPbgNcDv3UQ59zWHMeGDRtqMZV3l9+g5rParsnrabfVdj2SJElt56DSklaFqnoYuBnYWFV7qu9R4I+Ak5rddgPHDBx2dFMmSZIkSRPFhJCkzkrynKZlEEmOAE4H/i7J2qYswJnAXc0h1wPnNLONnQw8stD4QZIkSZK0WtllTFKXrQW2N+MIPQm4qqo+nOSjSZ4DBLgd+IVm/48AZwA7gG8CPzOGmCVJkiRp7EwISeqsqroDOHGO8lPn2b+AC0YdlyRJkiS1nV3GJEmSJEmSJowJIUmSJEmSpAljQkiSJEmSJGnCOIaQtIqs23rDvNsu23jkCkYiSU+0UP2088KXrWAkk+nO3Y9w3jz/Bt5/SeNk/SSNjy2EJEmSJEmSJowJIUmSJEmSpAljQkiSJEmSJGnCmBCSJEmSJEmaMCaEJEmSJEmSJowJIUmSJEmSpAljQkiSJEmSJGnCmBCSJEmSJEmaMMtKCCX5lSR3J7kryQeSPCXJsUluTbIjyQeTPHlYwUqSJEmSJGn5lpwQSnIU8MvAhqp6PnAIcBbwNuDiqnou8BBw/jAClSRJkiQtT/Ml/ieT/G3z5f5vNuWXJflCktub1/qmPEl+v/nC/44kLxzvFUgaluV2GTsUOCLJocB3AXuAU4Grm+3bgTOX+TskSZIkScPxKHBqVb0AWA9sTHJys+1Xq2p987q9KXspcFzz2gxcsuIRSxqJJSeEqmo38HbgS/QTQY8AtwEPV9W+ZrddwFHLDVKSJEmStHzVN9OsHta8aoFDNgGXN8fdAqxJsnbUcUoavUOXemCSZ9CvHI4FHgb+BNh4EMdvpp9hZmpqil6v9/i2mZmZJ6y3mbEOX1fihPbFuuWEffNua1uskiRJGo8kh9D/Mv+5wLur6tYkvwi8NclvADcBW6vqUfpf8N8/cPj+L/33zDrnvM93C5k6Yv7PsG3+7Nrlz9Zdjb2rcUN7Y19yQgh4CfCFqvoyQJJrgFPoZ4wPbVoJHQ3snuvgqtoGbAPYsGFDTU9PP76t1+sxuN5mxjp8XYkT2hfreVtvmHfbZRuPbFWskiRJGo+qegxYn2QNcG2S5wNvAB4Ankz/Oe31wG8dxDnnfb5byLuuuI6L7pz7sXTn2Ys7xzi07TngYHQ19q7GDe2NfTljCH0JODnJdyUJcBpwD3Az8PJmn3OB65YXoiRJkiRp2KrqYfrPbxurak/TLexR4I+Ak5rddgPHDBw275f+krplOWMI3Up/8OhPA3c259qfSX5dkh3As4BLhxCnJEmSJGmZkjynaRlEkiOA04G/2z8uUPNl/5nAXc0h1wPnNLONnQw8UlV75ji1pI5ZTpcxqupNwJtmFd/Ht7PJkiRJkqT2WAtsb8YRehJwVVV9OMlHkzwHCHA78AvN/h8BzgB2AN8EfmYMMUsagWUlhCRJkiRJ3VFVdwAnzlF+6jz7F3DBqOOStPKWM4aQJI1Vkqck+WSSv01yd5LfbMqPTXJrkh1JPpjkyU354c36jmb7unHGL0mSJEnjYkJIUpc9CpxaVS8A1gMbm77tbwMurqrnAg8B5zf7nw881JRf3OwnSZIkSRPHhJCkzmpmwphpVg9rXgWcSn/Qe4Dt9AdGBNjUrNNsP60ZOFGSJEmSJooJIUmdluSQJLcDe4Ebgc8DD1fVvmaXXcBRzfJRwP0AzfZH6M+GKEmSJEkTxUGlJXVaVT0GrG+mT70WeN5yz5lkM7AZYGpqil6vd8BjZmZmFrVfl6y2a/J6xmvLCfvm3dbr9Tp3PZIkSV1nQkjSqlBVDye5GXgRsCbJoU0roKOB3c1uu4FjgF1JDgWeDnxljnNtA7YBbNiwoaanpw/4+3u9HovZr0tW2zV5PeN13tYb5t228+zpzl2PJElS19llTFJnJXlO0zKIJEcApwP3AjcDL292Oxe4rlm+vlmn2f7RZipVSZIkSZoothCS1GVrge1JDqGf4L6qqj6c5B7gyiS/DXwGuLTZ/1Lgj5PsAL4KnDWOoCVJkiRp3EwISeqsqroDOHGO8vuAk+Yo/yfgJ1cgNEmSJElqNbuMSZIkSZIkTRgTQpIkSSOS5JAkn0ny4Wb92CS3JtmR5INJntyUH96s72i2rxtn3JIkafUzISRJkjQ6r6E/2P1+bwMurqrnAg8B5zfl5wMPNeUXN/tJkiSNjAkhSZKkEUhyNPAy4L3NeoBTgaubXbYDZzbLm5p1mu2nNftLkiSNhINKS5IkjcbvAb8GPK1ZfxbwcFXta9Z3AUc1y0cB9wNU1b4kjzT7/+PgCZNsBjYDTE1N0ev1FhXI1BGw5YR9c25b7DlGbWZmpjWxLKQLcRrj8HQlTklaChNCkiRJQ5bkx4C9VXVbkulhnbeqtgHbADZs2FDT04s79buuuI6L7pz7Y9/Osxd3jlHr9Xos9nrGqQtxGuPwdCVOSVqKJXcZS/L9SW4feH0tyWuTPDPJjUk+1/x8xjADliRJ6oBTgB9PshO4kn5XsXcCa5Lsz8wcDexulncDxwA0258OfGUlA5YkSZNlyQmhqvpsVa2vqvXADwLfBK4FtgI3VdVxwE3NuiRJ0sSoqjdU1dFVtQ44C/hoVZ0N3Ay8vNntXOC6Zvn6Zp1m+0erqlYwZEmSNGGGNaj0acDnq+qLPHFQxMHBEiVJkibd64HXJdlBf4ygS5vyS4FnNeWvwy/UJEnSiA1rDKGzgA80y1NVtadZfgCYmuuAhQZF7NLgbcY6fF2JE9oX63wDhkL7YpWkSVFVPaDXLN8HnDTHPv8E/OSKBiZJkibashNCSZ4M/DjwhtnbqqqSzNnceaFBEbs0eJuxDl9X4oT2xXre1hvm3XbZxiNbFaskSZJWXpKnAB8DDqf/PHh1Vb0pybH0xzx7FnAb8Kqq+uckhwOX0x8m5CvAT1XVzrEEL2mohtFl7KXAp6vqwWb9wSRrAZqfe4fwOyRJkiRJy/cocGpVvQBYD2xMcjLwNuDiqnou8BBwfrP/+cBDTfnFzX6SVoFhJIReybe7i8ETB0UcHCxRkiRJkjRG1TfTrB7WvIr+bIhXN+WDY8EOjhF7NXBakqxQuJJGaFkJoSRHAqcD1wwUXwicnuRzwEuadUmSJElSCyQ5JMnt9Htz3Ah8Hni4qvYPSLkLOKpZPgq4H6DZ/gj9bmWSOm5ZYwhV1TeYVRlU1VfozzomSZIkSWqZqnoMWJ9kDXAt8LzlnnOhSYMWMnXE/BOjtHlClC5P2NLV2LsaN7Q39mHNMiZJkiRJ6pCqejjJzcCLgDVJDm1aAR0N7G522w0cA+xKcijwdPqDS88+17yTBi3kXVdcx0V3zv1YuvPsxZ1jHNo2uczB6GrsXY0b2hv7MMYQkiRJkiR1QJLnNC2DSHIE/SFA7gVuBl7e7DY4FuzgGLEvBz5aVXPOJC2pW2whJEmSJEmTYy2wPckh9BsIXFVVH05yD3Blkt8GPgNc2ux/KfDHSXYAXwXOGkfQkobPhJAkSZIkTYiqugM4cY7y+4CT5ij/J+AnVyA0SSvMLmOSJEmSJEkTxoSQJEmSJEnShDEhJEmSJEmSNGFMCEmSJEmSJE0YE0KSOivJMUluTnJPkruTvKYpf3OS3Ulub15nDBzzhiQ7knw2yY+OL3pJkiRJGh9nGZPUZfuALVX16SRPA25LcmOz7eKqevvgzkmOpz9V6g8A3wP8VZLvq6rHVjRqSZIkSRozWwhJ6qyq2lNVn26Wvw7cCxy1wCGbgCur6tGq+gKwgzmmV5UkSZKk1c4WQpJWhSTrgBOBW4FTgFcnOQf4FP1WRA/RTxbdMnDYLuZIICXZDGwGmJqaotfrHfD3z8zMLGq/Lllt1+T1jNeWE/bNu63X63XueiRJkrrOhJCkzkvyVOBDwGur6mtJLgHeAlTz8yLgZxd7vqraBmwD2LBhQ01PTx/wmF6vx2L265LVdk1ez3idt/WGebftPHu6c9cjSZLUdXYZk9RpSQ6jnwy6oqquAaiqB6vqsar6F+A9fLtb2G7gmIHDj27KJEmSJGmimBCS1FlJAlwK3FtV7xgoXzuw208AdzXL1wNnJTk8ybHAccAnVypeSZIkSWoLu4xJ6rJTgFcBdya5vSl7I/DKJOvpdxnbCfw8QFXdneQq4B76M5Rd4AxjkiRJkibRshJCSdYA7wWeT//B62eBzwIfBNbRfxB7RTOYqyQNVVV9HMgcmz6ywDFvBd46sqAkSZIkqQOW22XsncCfV9XzgBfQn/J5K3BTVR0H3NSsS5IkSZIkqSWWnBBK8nTg39Efv4Oq+ueqehjYBGxvdtsOnLncICVJkiRJkjQ8y+kydizwZeCPkrwAuA14DTBVVXuafR4ApuY6OMlmYDPA1NQUvV7v8W0zMzNPWG8zYx2+rsQJ7Yt1ywn75t3WtlglSZIkSeOznITQocALgV+qqluTvJNZ3cOqqpLUXAdX1TZgG8CGDRtqenr68W29Xo/B9TYz1uHrSpzQvljP23rDvNsu23hkq2KVJEmSJI3PcsYQ2gXsqqpbm/Wr6SeIHtw/5XPzc+/yQpQkSZIkSdIwLTkhVFUPAPcn+f6m6DT6UzlfD5zblJ0LXLesCCVJkiRJkjRUy51l7JeAK5LcAawH/jNwIXB6ks8BL2nWJUmSJEljluSYJDcnuSfJ3Ule05S/OcnuJLc3rzMGjnlDkh1JPpvkR8cXvaRhWs4YQlTV7cCGOTadtpzzSpIkSZJGYh+wpao+neRpwG1Jbmy2XVxVbx/cOcnxwFnADwDfA/xVku+rqsdWNGpJQ7fcFkKSJEmSpI6oqj1V9elm+evAvcBRCxyyCbiyqh6tqi8AO4CTRh+ppFEzISRJkiRJEyjJOuBEYP9EQa9OckeS9yV5RlN2FHD/wGG7WDiBJKkjltVlTJIkSZLUPUmeCnwIeG1VfS3JJcBbgGp+XgT87EGcbzOwGWBqaoper7eo46aOgC0n7Jtz22LPMQ4zMzOtjm8hXY29q3FDe2M3ISRJkiRJEyTJYfSTQVdU1TUAVfXgwPb3AB9uVncDxwwcfnRT9gRVtQ3YBrBhw4aanp5eVCzvuuI6Lrpz7sfSnWcv7hzj0Ov1WOw1tk1XY+9q3NDe2O0yJkmSJEkTIkmAS4F7q+odA+VrB3b7CeCuZvl64Kwkhyc5FjgO+ORKxStpdGwhJEmSNGRJngJ8DDic/uetq6vqTc3D1JXAs4DbgFdV1T8nORy4HPhB4CvAT1XVzrEEL2m1OwV4FXBnktubsjcCr0yynn6XsZ3AzwNU1d1JrgLuoT9D2QXOMCatDiaEJEmShu9R4NSqmmm6Znw8yZ8Br6M/rfOVSf5f4HzgkubnQ1X13CRnAW8DfmpcwUtavarq40Dm2PSRBY55K/DWkQUlaSzsMiZJkjRk1TfTrB7WvAo4Fbi6Kd8OnNksb2rWabaf1nTrkCRJGgkTQpIkSSOQ5JCmO8Ze4Ebg88DDVbV/Op3BqZsfn9a52f4I/W5lkiRJI2GXMUmSpBFoxthYn2QNcC3wvOWeczVP69zWKXln60Kcxjg8XYlTkpbChJAkSdIIVdXDSW4GXgSsSXJo0wpocOrm/dM670pyKPB0+oNLzz7Xqp3Wua1T8s7WhTiNcXi6EqckLYVdxiRJkoYsyXOalkEkOQI4HbgXuBl4ebPbucB1zfL1zTrN9o9WVa1cxJIkadLYQkiSJGn41gLbkxxC/wu4q6rqw0nuAa5M8tvAZ4BLm/0vBf44yQ7gq8BZ4whakiRNDhNCkiRJQ1ZVdwAnzlF+H3DSHOX/BPzkCoQmSZIE2GVMUoclOSbJzUnuSXJ3ktc05c9McmOSzzU/n9GUJ8nvJ9mR5I4kLxzvFUiSJEnSeJgQktRl+4AtVXU8cDJwQZLjga3ATVV1HHBTsw7wUuC45rUZuGTlQ5YkSZKk8VtWQijJziR3Jrk9yaeasjm/mZekYauqPVX16Wb56/QHbD0K2ARsb3bbDpzZLG8CLq++W+jP9rN2hcOWJEmSpLEbRguhF1fV+qra0KzP9828JI1MknX0x+u4FZiqqj3NpgeAqWb5KOD+gcN2NWWSJEmSNFFGMaj0JmC6Wd4O9IDXj+D3SBIASZ4KfAh4bVV9Lcnj26qqkhzU1M1JNtPvUsbU1BS9Xu+Ax8zMzCxqvy5Zbdfk9YzXlhP2zbut1+t17nokSZK6brkJoQL+snnY+sOq2sb838w/wUIPXF36UGisw9eVOKF9sS70wNW2WIclyWH0k0FXVNU1TfGDSdZW1Z6mS9jepnw3cMzA4Uc3ZU/Q1GXbADZs2FDT09MHjKPX67GY/bpktV2T1zNe5229Yd5tO8+e7tz1SJIkdd1yE0I/XFW7k3w3cGOSvxvcuNA38ws9cHXpQ6GxDl9X4oT2xbrQA9dlG49sVazDkH5ToEuBe6vqHQObrgfOBS5sfl43UP7qJFcCPwQ8MpDAliRJkqSJsayEUFXtbn7uTXItcBLzfzMvScN2CvAq4M4ktzdlb6SfCLoqyfnAF4FXNNs+ApwB7AC+CfzMyoYrSZIkSe2w5IRQkiOBJ1XV15vlHwF+i/m/mZc0BOsWaAU0aarq40Dm2XzaHPsXcMFIg5IkSZKkDlhOC6Ep4Npm8NZDgfdX1Z8n+Rvm/mZekiRJkiRJLbDkhFBV3Qe8YI7yrzDHN/OSJEmSJElqhyeNOwBJkiRJkiStLBNCkiRJkiRJE8aEkCRJkiRNiCTHJLk5yT1J7k7ymqb8mUluTPK55uczmvIk+f0kO5LckeSF470CScNiQkiSJEmSJsc+YEtVHQ+cDFyQ5HhgK3BTVR0H3NSsA7wUOK55bQYuWfmQJY2CCSFJkiRJmhBVtaeqPt0sfx24FzgK2ARsb3bbDpzZLG8CLq++W4A1SdaucNiSRmA5085LkiRJkjoqyTrgROBWYKqq9jSbHgCmmuWjgPsHDtvVlO0ZKCPJZvotiJiamqLX6y0qhqkjYMsJ++bctthzjMPMzEyr41tIV2PvatzQ3thNCEmSJEnShEnyVOBDwGur6mtJHt9WVZWkDuZ8VbUN2AawYcOGmp6eXtRx77riOi66c+7H0p1nL+4c49Dr9VjsNbZNV2PvatzQ3tjtMiZJkiRJEyTJYfSTQVdU1TVN8YP7u4I1P/c25buBYwYOP7opk9RxJoQkSZIkaUKk3xToUuDeqnrHwKbrgXOb5XOB6wbKz2lmGzsZeGSga5mkDrPLmCRJkiRNjlOAVwF3Jrm9KXsjcCFwVZLzgS8Cr2i2fQQ4A9gBfBP4mZUNV9KomBCSJEmSpAlRVR8HMs/m0+bYv4ALRhqUpLGwy5gkSZIkSdKEMSEkSZIkSZI0YUwISZIkSZIkTRgTQpIkSZIkSRPGhJAkSZIkSdKEWXZCKMkhST6T5MPN+rFJbk2yI8kHkzx5+WFKkiRJkiRpWIbRQug1wL0D628DLq6q5wIPAecP4XdIkiRJkiRpSJaVEEpyNPAy4L3NeoBTgaubXbYDZy7nd0iSJEmSJGm4Dl3m8b8H/BrwtGb9WcDDVbWvWd8FHDXXgUk2A5sBpqam6PV6j2+bmZl5wnqbGevwdSVOGE+sW07Yd+Cd5tCl+ypJkiRJGq0lJ4SS/Biwt6puSzJ9sMdX1TZgG8CGDRtqevrbp+j1egyut5mxDl9X4oTxxHre1huWdNxlG4/szH2VJEmSJI3WcrqMnQL8eJKdwJX0u4q9E1iTZH+i6Whg97IilKR5JHlfkr1J7hooe3OS3Ulub15nDGx7QzPg/WeT/Oh4opYkSZKk8VtyQqiq3lBVR1fVOuAs4KNVdTZwM/DyZrdzgeuWHaUkze0yYOMc5RdX1frm9RGAJMfTr6t+oDnmD5IcsmKRSpIkSVKLDGOWsdleD7wuyQ76YwpdOoLfIUlU1ceAry5y903AlVX1aFV9AdgBnDSy4CRJkiSpxZY7qDQAVdUDes3yffiQJWm8Xp3kHOBTwJaqeoj+APe3DOyzpEHv57MaB+1ebdfk9YzXQgPi93q9zl2PJElS1w0lISRJLXIJ8Bagmp8XAT97MCdYaND7+XRpMPTFWm3X5PWM10ID4u88e7pz13MgSY4BLgem6NdH26rqnUmeCXwQWAfsBF5RVQ8lCf2xGM8AvgmcV1WfHkfskiRpMoyiy5gkjU1VPVhVj1XVvwDv4dstFncDxwzs6qD3kkZpH/0WiscDJwMXNGOZbQVuqqrjgJuadYCXAsc1r830k9uSJEkjY0JI0qqSZO3A6k8A+2cgux44K8nhSY6l/9D1yZWOT9JkqKo9+1v4VNXXgXvpd1PdBGxvdtsOnNksbwIur75b6M/auhZJkqQRscuYpM5K8gFgGnh2kl3Am4DpJOvpd9HYCfw8QFXdneQq4B7639xfUFWPjSNuSZMlyTrgROBWYKqq9jSbHqDfpQz6yaL7Bw7bP87ZHiRJkkbAhJCkzqqqV85RPO/MhlX1VuCto+QQMBcAACAASURBVItIkp4oyVOBDwGvraqv9YcK6quqSlIHeb6DHvQeYOqI+Qf2bstg3l0ZWLwLcRrj8HQlTklaChNCkiRJI5DkMPrJoCuq6pqm+MEka6tqT9MlbG9TvqhxzpYy6D3Au664jovunPtj386zF3eOUevKwOJdiNMYh6crcR6sJO8DfgzYW1XPb8reDPwc8OVmtzdW1UeabW8AzgceA365qv5ixYOWNHSOISRJkjRkzaxhlwL3VtU7BjZdD5zbLJ8LXDdQfk76TgYeGehaJknDdhmwcY7yi6tqffPanww6HjgL+IHmmD9IcsiKRSppZGwhJEmSNHynAK8C7kxye1P2RuBC4Kok5wNfBF7RbPsI/Snnd9Cfdv5nVjZcSZOkqj7WjG+2GJuAK6vqUeALSXbQn8X1EyMKT9IKMSEkSZI0ZFX1cSDzbD5tjv0LuGCkQUnSgb06yTnAp4AtVfUQ/QHubxnYZ/+g90+wmsc4m0uXx5fqauxdjRvaG7sJIamF1m29YdwhSJIkabJcAryF/kytbwEuAn52sQev5jHO5tLl8aW6GntX44b2xu4YQpIkSZI04arqwap6rKr+BXgP/W5hsMhB7yV1jwkhSZIkSZpwzcyH+/0EcFezfD1wVpLDkxwLHAd8cqXjkzR8dhmTJEmSpAmS5APANPDsJLuANwHTSdbT7zK2E/h5gKq6O8lVwD3APuCCqnpsHHFLGi4TQpIkSZI0QarqlXMUX7rA/m8F3jq6iCSNg13GJEmSJEmSJsySE0JJnpLkk0n+NsndSX6zKT82ya1JdiT5YJInDy9cSZIkSZIkLddyWgg9CpxaVS8A1gMbk5wMvA24uKqeCzwEnL/8MCVJkiRJkjQsS04IVd9Ms3pY8yrgVODqpnw7cOayIpQkSZIkSdJQLWsMoSSHJLkd2AvcCHweeLiq9jW77AKOWl6IkiRJkiRJGqZlzTLWTDe4Pska4FrgeYs9NslmYDPA1NQUvV7v8W0zMzNPWG8zYx2+rsQJo4t1ywn7DrzTQerSfZUkSZIkjdZQpp2vqoeT3Ay8CFiT5NCmldDRwO55jtkGbAPYsGFDTU9PP76t1+sxuN5mxjp8XYkTRhfreVtvGPo5L9t4ZGfuqyRJkiRptJacEEryHOBbTTLoCOB0+gNK3wy8HLgSOBe4bhiBSqvNuhEkfSRJkiRJWozltBBaC2xPcgj9sYiuqqoPJ7kHuDLJbwOfAS4dQpySJEmSJEkakiUnhKrqDuDEOcrvA05aTlCSJEmSJEkanWXNMiZJkiRJkqTuMSEkSZIkSZI0YUwISZIkSZIkTRgTQpI6Lcn7kuxNctdA2TOT3Jjkc83PZzTlSfL7SXYkuSPJC8cXuSRJkiSNjwkhSV13GbBxVtlW4KaqOg64qVkHeClwXPPaDFyyQjFKkiRJUquYEJLUaVX1MeCrs4o3Adub5e3AmQPll1ffLcCaJGtXJlJJkiRJag8TQpJWo6mq2tMsPwBMNctHAfcP7LerKZMkSZKkiXLouAOQpFGqqkpSB3NMks30u5QxNTVFr9c74DEzMzOL2q9LVts1eT3jteWEffNu6/V6nbseSZKkrjMhJGk1ejDJ2qra03QJ29uU7waOGdjv6KbsCapqG7ANYMOGDTU9PX3AX9jr9VjMfl2y2q7J6xmv87beMO+2nWdPd+56JEmSus4uY5JWo+uBc5vlc4HrBsrPaWYbOxl4ZKBrmSRJ0kRwllZJYEJIUscl+QDwCeD7k+xKcj5wIXB6ks8BL2nWAT4C3AfsAN4D/N9jCFmSJGncLsNZWqWJZ5cxSZ1WVa+cZ9Npc+xbwAWjjUiSJKndqupjSdbNKt4ETDfL24Ee8HoGZmkFbkmyZn/X/JWJVtKo2EJIkiRJkuQsrdKEsYWQJEmSJOlxKzVLK8DUEfPPRNnm2Se7PDtmV2PvatzQ3thNCEmSJEmSVnyWVoB3XXEdF90592PpzrMXd45x6PLsmF2NvatxQ3tjt8uYJEmSJMlZWqUJs+SEUJJjktyc5J4kdyd5TVM+53SFkiRJkqTxc5ZWSbC8LmP7gC1V9ekkTwNuS3IjcB796QovTLKV/nSFr19+qFI7rdt6w7hDkCRJkhbNWVolwTJaCFXVnqr6dLP8deBe+qPNb6I/TSHNzzOXG6QkSZIkSZKGZyhjCCVZB5wI3Mr80xVKkiRJkiSpBZY9y1iSpwIfAl5bVV9L8vi2haYrXGhawrZOyTYXYx2+rsQJ/Vi3nPDYuMNYlC7dV0mSJEnSaC0rIZTkMPrJoCuq6pqmeL7pCp9goWkJ2zol21yMdfi6Eif0Y73o498YdxiLctnGIztzXyVpNUjyPuDHgL1V9fym7JnAB4F1wE7gFVX1UPrfqL0TOAP4JnDe/q75kiRJo7CcWcYCXArcW1XvGNg033SFkiRJk+QyYOOssq30J984DripWQd4KXBc89oMXLJCMUqSpAm1nDGETgFeBZya5PbmdQbzT1coSZI0MarqY8BXZxXPN/nGJuDy6rsFWNO0tJYkSRqJJXcZq6qPA5ln83dMVyhJkqR5J984Crh/YL9dTdkeJEmSRmDZg0pL+63besO823Ze+LIVjESSpPZbaPKN+Sw0KcdCpo6ALSfsm3NbWyYc6MrkB12I0xiHpytxStJSmBCSJElaOfNNvrEbOGZgv6ObsidYaFKOhbzriuu46M65P/btPHtx5xi1rkwq0YU4jXF4uhKnJC2FCaEWWaiFzUJsfSNJUmfsn3zjQp44+cb1wKuTXAn8EPDIQNcySZKkoTMhJEmSNAJJPgBMA89Osgt4E/1E0FVJzge+CLyi2f0j9Kec30F/2vmfWfGAJUnSRDEhJEmSNAJV9cp5Nn3H5BtVVcAFo41IkiTp25Yz7bwkSZIkSZI6yISQJEmSJEnShLHL2Cow32DUSx1sejVMH7+Ue7IarluSxmmpkyNIkiRp5dlCSJIkSZIkacKYEJIkSZIkSZowdhlTZ61k14T5fteWE/bhf6N2SrIT+DrwGLCvqjYkeSbwQWAdsBN4RVU9NK4YJUmSJGlcbCEkaTV7cVWtr6oNzfpW4KaqOg64qVmXJEmSpIlj04Yl2t9iZMsJ+zhvVusRByA+OLNb3wze02HfSwc8nXibgOlmeTvQA14/rmAkSZIkaVxMCElarQr4yyQF/GFVbQOmqmpPs/0BYGquA5NsBjYDTE1N0ev1DvjLZmZmFrVfl6y2a/J6Rq/fjfbg9Xq9Vl6PJE0iu91Lk8OEkKTV6oeraneS7wZuTPJ3gxurqppk0XdokkfbADZs2FDT09MH/GW9Xo/F7Nclq+2avJ7Rm91idrF2nj3dyuuRpAn24qr6x4H1/d3uL0yytVm3lbXUcSaEFmD3Iqm7qmp383NvkmuBk4AHk6ytqj1J1gJ7xxqkJElSN9jtXlqFlpUQSvI+4MeAvVX1/KbM5oSSxirJkcCTqurrzfKPAL8FXA+cC1zY/LxufFFKkiS10pK63S+lyz3A1BHzdzluc1fiLnd17mrsXY0b2hv7clsIXQb8F+DygTKbE0oatyng2iTQr+feX1V/nuRvgKuSnA98EXjFGGOUJElqoyV1u19Kl3uAd11xHRfdOfdj6c6zF3eOcehyV+euxt7VuKG9sS8rIVRVH0uyblaxzQkljVVV3Qe8YI7yrwCnrXxEkiRJ3WC3e2lyPGkE51zULD6SJEmSpPZIcmSSp+1fpt/t/i6+3e0e7HYvrRojHVR6oVl8Fupj2pb+dYuZPneuPq9LjX2p0/XO511XPLGenjriO8vmjmP+bQtd20LxH8xxg/d0oXgXinOlLNTnuW3a8v9KkiRJrWW3e2mCjCIhtKjmhAv1MW1L/7rFTJ+75YR939Hndal9XZc6Xe9izRXrwVro2haK/2COG0acK6VLsV628chW/L+SJElSO9ntXposo3iSHcssPgtNEb/zwpetRAiSJEmSpCHxGU8arWWNIZTkA8AngO9PsqtpQnghcHqSzwEvadYlSZIkSZLUEsudZeyV82yyOaEkSZIkSVJLdWPwk1VkoWaPkiRJkiRJK2EU085LkiRJkiSpxWwhpIOy1BZOtoySJEmSJKk9bCEkSZIkSZI0YWwhJEmSJGliLdSS/bKNR65gJJK0siY+IWRXJkmSJEnqloWe43Ze+LIVjETqLruMSZIkSZIkTZiJbyEkSZIkSVo95ms9ZMsh6YlsISRJkiRJkjRhbCEkSZKewPH1JEmSVj8TQiPgB2lJkiRJktRmJoQkSZIkSaueM5NJTzQRCSFb7EiSJEmSJH2bg0pLkiRJkiRNmIloISRJK8FmyOoSW89KkiRNts4lhPwAK0nS4vieKUmSpPmMLCGUZCPwTuAQ4L1VdeGofpckHYxx1E/zPZivdMshWzF101z/bltO2Md5W2/w322V8fOTpLZa7fXTwX6J4vuwVoORJISSHAK8Gzgd2AX8TZLrq+qeUfw+SVqsttVPbUrQzI5l/wedccQiTaK21U+StJ/109K06XOeNJdRtRA6CdhRVfcBJLkS2ARYYUgat87UT0v9ELHS3YRW8sPOSn+wGsW9HPa/nd3CVpXO1E+SJo710zza9D5sAkoHK1U1/JMmLwc2VtX/1ay/Cvihqnr1wD6bgc3N6vcDnx04xbOBfxx6YKNhrMPXlThhdcb6vVX1nFEHMy5DqJ/m06W/hcVabdfk9bTbYq7H+mlp9RN04++lCzFCN+I0xuHx8xPWT/PoatzQ3di7GjeMN/Z566exDSpdVduAbXNtS/KpqtqwwiEtibEOX1fiBGNdrRaqn+azGu/varsmr6fdVtv1jMpS6ifoxv3tQozQjTiNcXi6EmcbrOb6aS5djRu6G3tX44b2xv6kEZ13N3DMwPrRTZkkjZv1k6S2sn6S1FbWT9IqNKqE0N8AxyU5NsmTgbOA60f0uyTpYFg/SWor6ydJbWX9JK1CI+kyVlX7krwa+Av60xK+r6ruPohTHHRTwzEy1uHrSpxgrJ0zhPppPqvx/q62a/J62m21Xc9BG2H9BN24v12IEboRpzEOT1fiHCnrpzl1NW7obuxdjRtaGvtIBpWWJEmSJElSe42qy5gkSZIkSZJayoSQJEmSJEnShGldQijJxiSfTbIjydZxx7NfkmOS3JzkniR3J3lNU/7MJDcm+Vzz8xnjjnW/JIck+UySDzfrxya5tbm3H2wGhBu7JGuSXJ3k75Lcm+RFbbyvSX6l+be/K8kHkjylLfc0yfuS7E1y10DZnPcwfb/fxHxHkheOI+bVpK311kJW29/MwdbRbb+mpn75ZJK/ba7nN5vyOeucJIc36zua7evGGf98Fvu+1JXraZsD1UVtua+LiPN1zf/lO5LclOR72xbjwH7/IUklGctUwouJM8krBurG97ctxiT/qqm/P9P8m58xhhi/4z1x1vZWv2d0VZc+Px3s54y2Wez7b9ukI8+Js6XFz42ztSohlOQQ4N3AS4HjgVcmOX68UT1uH7Clqo4HTgYuaGLbCtxUVccBNzXrbfEa4N6B9bcBF1fVc4GHgPPHEtV3eifw51X1POAF9GNu1X1NchTwy8CGqno+/cH0zqI99/QyYOOssvnu4UuB45rXZuCSFYpxVWp5vbWQy1hdfzMHW0e3/ZoeBU6tqhcA64GNSU5m/jrnfOChpvziZr82Wuz7UleupzUWWReN/b4uMs7P0H+//TfA1cDvtDBGkjyN/t/0rSsZ38DvP2CcSY4D3gCcUlU/ALy2bTECvw5cVVUn0v9s9QcrGWPjMr7zPXFQ298zOqeDn5+6+Cw4qCvPhbO1/jlxtg48Nz5BqxJCwEnAjqq6r6r+GbgS2DTmmACoqj1V9elm+ev0/xiPoh/f9ma37cCZ44nwiZIcDbwMeG+zHuBU+h+soCWxJnk68O+ASwGq6p+r6mHaeV8PBY5IcijwXcAeWnJPq+pjwFdnFc93DzcBl1ffLcCaJGtXJtJVqbX11kJW29/MEuroVl9TE9dMs3pY8yrmr3MGr/Nq4LSm3m+Ng3xfav31tNBi6qI23NcDxllVN1fVN5vVW4Cj2xZj4y30P+D/00oGN2Axcf4c8O6qegigqva2MMYC/qdm+enAP6xgfP0A5n5PHNTq94yO6tTnp649Cw7qynPhbB17Tpyttc+Ns7UtIXQUcP/A+q6mrFXSb2J9Iv1vhKaqak+z6QFgakxhzfZ7wK8B/9KsPwt4uKr2NettubfHAl8G/qhpxvjeJEfSsvtaVbuBtwNfov8f+hHgNtp5T/eb7x524v9Zh6ym+7kq/mYWWUe3/pqa5t23A3uBG4HPM3+d8/j1NNsfoV/vt8nBvC914XraZjF/0224rwf7f+984M9GGtF3OmCMTZehY6rqhpUMbJbF3MvvA74vyV8nuSXJQq1gRmExMb4Z+Okku4CPAL+0MqEdlNa/Z3RQZ+9pR54FB3XluXC2Tjwnzta158a2JYRaL8lTgQ8Br62qrw1uq6qi/y3HWCX5MWBvVd027lgW4VDghcAlTVPhbzCr2V8b7mvTN3UT/Yrpe4AjWbhpcau04R6qW7r6N9OFOnqxquqxqlpPv3XEScDzxhzSknXsfUktkeSngQ3A7447lkFJngS8A9gy7lgW4VD63ZymgVcC70myZqwRfadXApdV1dHAGcAfN/dYap2ufc7o+PtvJ54TZ+vac2PbKtvdwDED60c3Za2Q5DD6FcAVVXVNU/zg/iajzc+Vboo7l1OAH0+yk37zy1Pp979c0zRbg/bc213Arqra3//+avr/8dt2X18CfKGqvlxV3wKuoX+f23hP95vvHrb6/1kHrab72em/mYOsoztxTQBN8+ibgRcxf53z+PU0258OfGWFQ13Iwb4vtf162mgxf9NtuK+L+r+X5CXAfwJ+vKoeXaHY9jtQjE8Dng/0mr/pk4Hrs/IDSy/mXu4Crq+qb1XVF4C/p58gWimLifF84CqAqvoE8BTg2SsS3eJ15j2jQzp3Tzv0LDioS8+Fs3XlOXG2Tj03ti0h9DfAcc0I3E+mP/jS9WOOCXi8r+WlwL1V9Y6BTdcD5zbL5wLXrXRss1XVG6rq6KpaR/8efrSqzqb/QPHyZre2xPoAcH+S72+KTgPuoX339UvAyUm+q/lb2B9n6+7pgPnu4fXAOek7GXhkoNmlDl5r660l6OzfzBLq6FZfU5Ln7P8WP8kRwOn0xyuYr84ZvM6X06/3W/ON2RLel1p9PS21mLqoDff1gHEmORH4Q/rJoHF80F8wxqp6pKqeXVXrmr/pW5pYP9WmOBt/Sr91EEmeTb8L2X0ti/FL9D9XkeR/pZ8Q+vIKxrgYrX7P6KhOfX7q0rPgoC49F87WoefE2br13FhVrXrRbyr69/THSvhP445nIK4fpt8c7Q7g9uZ1Bv0+mDcBnwP+CnjmuGOdFfc08OFm+V8DnwR2AH8CHD7u+Jq41gOfau7tnwLPaON9BX4T+DvgLuCPgcPbck+BD9Dvo/ot+tn08+e7h0Doz+rweeBO+iPgj/3voMuvttZbk/Q3c7B1dNuvCfg39GdauqOpc36jKZ+zzqH/APUnTfkngX897mtY4NoO+L7Upetp02uuugj4LfrJitbc10XE+VfAgwP/l69vW4yz9u2Nqw5ZxL0M/e5t9zR13VktjPF44K+Bv23+vX9kDDHO9Z74C8AvDNzH1r5ndPU1199GW1909Flw1jUc8P23bS868pw4R9ytfW6c/UoTsCRJkiRJkiZE27qMSZIkSZIkacRMCEmSJEmSJE0YE0KSJEmSJEkTxoSQJEmSJEnShDEhJEmSJEmSNGFMCEmSJEmSJE0YE0KSJEmSJEkTxoSQJEmSJEnShDEhJEmSJEmSNGFMCEmSJEmSJE0YE0KSJEmSJEkTxoSQJEmSJEnShDEhJEmSJEmSNGFMCEmSJEmSJE0YE0KSJEmSJEkTxoSQJEmSJEnShDEhJEmSJEmSNGFMCEmSJEmSJE0YE0KSJEmSJEkTxoSQJEmSJEnShDEhJEmSJEmSNGFMCEmSJEmSJE0YE0KSJEmSJEkTxoSQJEmSJEnShDEhJEmSJEmSNGFMCEmSJEmSJE0YE0KSJEmSJEkTxoSQJEmSJEnShDEhJEmSJEn6/9m79zDL6vrO9+9PAAVpIiKmpgeYNOdIkjH2CZoOQ46ZpAKaoKCYiUNkCNIG04kTjU46ETTPjCYxmXYiGifJmOmIsTNBkaAEglcGqTGeoxgRIjcTEVuFNLQXUMtJ1Mbv/LFWk6Koqq6qfVtV6/16nnpq73XZ+7NW7Vp77+/6/X5LUs9YEJIkSZIkSeoZC0KSJEmSJEk9Y0FIkiRJkiSpZywISZIkSZIk9YwFIUmSJEmSpJ6xICRJkiRJktQzFoQkSZIkSZJ6xoKQliXJ7iT/kORrSe5P8v8n+cUk39HOf0uSV89Z/vwkn2yXvzfJu5McMbktkLQWtceepybZmqSSvGze/LuSTLe3X5XkW+1x52tJ/i7JHyTZOGf5rUk+tNjztLePTfKOJF9M8pUktyTZOtotlbQWzT12zJv+iiSfSTLbHqfe3k6/tZ02m+SBJP845/4r5qw/3R7zLpgz7V/PWfbr7fzZOT//YjxbLWmtao9Ze5McPmfaC5LMtLeT5NeSfKr97ve5JP85ySPnLP+OJH8873GvSPIHY9sQDY0FIa3EM6vqCOC7gR3ABcDF8xdK8mPA7wBnt8v/S+Dt4wwqaV36MvCyAxSX394ed44Cfgr4Z8ANc4tCy/A/gM/THOseC5wL3Lu6yJL6Jsl5NMeNp1bVBmALcC1AVX1/VW1op/8V8KL996vqd+Y8zHk0x7zn7Z9QVX81Z93vbycfOWf9z41h8yStfQcBL1lk3n8FttEce44Ang6cClw2Z5lfAv5Nkh8HSPIzwJOBC0cVWKNjQUgrVlVfqaqrgJ8BzkvyxHmL/BDw4aq6sV3+y1W1q6q+Nu6sktaV24EPA79yoAWr6ltVdSvNceoLwPYVPM8PAW+pqq9X1b6qurGq3rOqxJL66IeA91XVpwGq6p6q2rncldsz98+h+dJ1QpIto4kpqad+F/jVJEfOnZjkBODfA+dU1Yfbz0C3Aj8NnJbkFGiOaTSfq/64bZn4X4FfqKrZsW6FhsKCkFatqj4K3AX863mzrgd+MslvJHnK3CaGkjSg/wi8NMlRy1m4qh4AruThx6mlfAT4wyTPtQuGpFX4CPC8ttvFliQHrXD9fwPMAn8OvI+mtZAkDcvHgBngV+dNPxW4q/2O96Cq+jzNce1pc6a9Bfg08HHgvVX13hHm1QhZENKg/p6ma8aDquqvaD7MPBl4F/ClJK9bxQciSXqIqroJuIamy+pyPew4dQD/lqYrx38EPpPkpiQ/tIL1JfVYVf0Z8GLgJ4H/BeydOxbQMpxH0/31AeCtwHOTHDL8pJJ67D8BL07yuDnTjgb2LLL8nnb+XH9F07X+z4YfT+NiQUiDOoamj/tDVNV7quqZNF/CzgS2Ai8YbzRJ69R/Al6YZGqZy889Tu0DFvpidQjwLYCquq+qLqyq7wemgJuAv0iSwWJL6ouquqSqngocCfwi8FtJfvJA6yU5Dvhx4JJ20pXAocDpo8oqqX+q6hbgah467s8XgcXGXNzYzgce7F72q8B/Ay6yaL12WRDSqrVnzI8BHnbFnv2q6ttVdS3wAWD+WEOStGJV9UngncCvH2jZ9kqIz6Q5iwXwOeBfzC3uJHkU8F3AZxd4ri8CrwX+OStrZSRJ+8cz+3PgEyzvc9C5NJ/P/zLJPcCdNAUhu41JGrZXAj9P830Omu9rxyU5ae5CbaH6ZNrB8dvPUG8Cfo+mNeTXWVnLbXWIBSGtWJLvTHIGcCnwZ1V187z5Z7ZjbzymvXThScCP0fQ9laRh+A3g+TRn3x8mycFJ/iXwNporjb2unXU98I/AhUkObQdv3UHTn/6z7bqvSfLE9jGOAF4I3FFVXxrpFklaqw5pjyf7f16Q5PQkRyT5jiRPp7kq2PXLeKzzaI5vJ875+WngGUkeO7ItkNQ7VXUHzZWgf7m9/3fAHwGXJDk5yUFJvh94B/A/q+p/tqu+kKb72O9U1beB82muAvt9Y98IDcyCkFbiL5N8jeZyzL9O8wXr+Qssdx9NtflTwFdp+pX+blVdssCykrRiVfUZmsvDHz5v1s8kmQW+AlwFfAn4war6+3a9b9B0vZimGRT/TprWP2dVVbWP8SjgCuD+dv53A88a5fZIWtPeDfzDnJ9fAV5B0yLxfuC/AC+sqkVbVAMkOZnmePOH7ZXJ9v9cBdwBnD3CbZDUT7/JQz9LvYim9c+f0Qxu/16aAah/GqC92MbvAOdX1TcBquo24CKaq47ZvX6NyT99/pUkSZIkSVIf2EJIkiRJkiSpZywISZIkSZIk9YwFIUmSJEmSpJ6xICRJkiRJktQzB086AMDRRx9dmzZtGstzff3rX+fww+dflGbyupiri5nAXCuxmkw33HDDF6vqcSOKtOYsdXzq4t8czLVS5lqZSeby+PRQRx99dD3ucY/r5OtkmLr6vzBMbuPa5/HpoYbx/W4tvWbWSta1khPMOkxLHp+qauI/P/iDP1jjct11143tuVaii7m6mKnKXCuxmkzAx6oDx4Wu/Cx1fOri37zKXCtlrpWZZC6PTw8/PnX1dTJMbuP6sN630ePTw49Pg1pLr5m1knWt5Kwy6zAtdXyyy5gkSZIkSVLPWBCSJEmSJEnqGQtCkiRJkiRJPWNBSJIkSZIkqWcsCEmSJEmSJPWMBSFJkiRJkqSesSAkSZIkSZLUMxaEJEmSJEmSesaCkCRJkiRJUs8cPOkA47Dpwnc9eHv75n1snXN/947TJxFJkrSOzX3fmc/3Ha13vv4lTdpixyGPQdJD2UJIkiRJkiSpZywISZIkSZIk9YwFIUmSJEmSpJ6xICRJkiRJktQzvRhUWpIkSd222CCwrxs1dwAAIABJREFU2zfvY3q8USRJ6gVbCEmSJI1ZkoOS3Jjk6vb+8UmuT3JHkrcnecSkM0qSpPXNgpAkSdL4vQS4fc791wCvr6rHA/cB508klSRJ6g0LQpIkSWOU5FjgdOBN7f0ApwCXt4vsAp49mXSSJKkvBioIJTkyyeVJPpnk9iQ/nOSoJNck+VT7+zHDCitJkrQO/B7wMuDb7f3HAvdX1b72/l3AMZMIJkmS+mPQQaXfALy3qp7T9nV/FPAK4Nqq2pHkQuBC4IIBn0eSJGnNS3IGsLeqbkgyvYr1twHbAKamppidnWVmZma4IQe0ffO+RectlXWx9aYOW3q99aCLf8dh68M2StJas+qCUJJHAz8KbAWoqm8C30xyJjx4MYhdwAwWhCRJkgCeAjwryTOAQ4HvpDnBdmSSg9tWQscCdy+0clXtBHYCbNmypTZs2MD09PRYgi/X1kWuFgaw+5zpFa+3ffM+zurYNg7bzMxM5/6Ow9aHbZSktWaQLmPHA18A/qS9SsabkhwOTFXVnnaZe4CpQUNKkiStB1X18qo6tqo2Ac8FPlBV5wDXAc9pFzsPuHJCESX1XJLdSW5OclOSj7XTHBZEWocG6TJ2MPBk4MVVdX2SN9B0D3tQVVWSWmjl+U2eR9mEdG4T5KnDHnq/K01Xu9iMtouZwFwr0cVMkqQFXQBcmuTVwI3AxRPOI6nffryqvjjn/oU4LIi07gxSELoLuKuqrm/vX05zYLg3ycaq2pNkI7B3oZXnN3keZRPSuU2Qt2/ex0U3/9NmL9V0eZy62Iy2i5nAXCvRxUySpEZVzdB0raeq7gROmmQeSVqCw4JI69CqC0JVdU+Szyf53qr6W+BU4Lb25zxgBzZ5ljRCSd4M7B+g9YnttN8Fngl8E/g08Pyqur+d93LgfOAB4Jer6n0TCS5Ja8SmRcb12b3j9DEnkTRGBby/7enx39sT+QccFmTYPUAGaem+2CD1o2o5v1Za5a+VnGDWcRn0KmMvBi5przB2J/B8mnGJLktyPvBZ4KwBn0OSFvMW4A+AP50z7Rrg5VW1L8lrgJcDFyR5As14Hd8P/HPgfyb5nqp6YMyZJUmSuuxHquruJN8FXJPkk3NnLjYsyLB7gAzS0n2xQepH1TtkrbTKXys5wazjMlBBqKpuArYsMOvUQR5Xkpajqj6YZNO8ae+fc/cj/NMgrWcCl1bVN4DPJLmDpnvGh8cQVZIkaU2oqrvb33uTXEHzeWlZw4JIWlsGucqYJHXdzwHvaW8fA3x+zry72mmSJEkCkhye5Ij9t4GfAG4BrqIZDgQcFkRaNwbtMiZJnZTk14F9wCWrWHdZfeC72l/YXCszilyLjV0Ayx+/oE/7S5LUGVPAFUmg+a741qp6b5K/xmFBpHXHgpCkdSfJVprBpk+tqv193O8Gjpuz2LHttIdZbh/4rvYXNtfKjCLXYmMXwPLHL+jT/pIkdUN7xcMfWGD6l3BYEGndscuYpHUlyWnAy4BnVdX/njPrKuC5SR6Z5HjgBOCjk8goSZIkSZNmCyFJa1aStwHTwNFJ7gJeSXNVsUfSXBUD4CNV9YtVdWuSy4DbaLqS/ZJXGJMkSZLUV+umILRpieb5ktanqjp7gckXL7H8bwO/PbpEkiRJkrQ22GVMkiRJkiSpZywISZIkSZIk9YwFIUmSJEmSpJ6xICRJkiRJktQzFoQkSZIkSZJ6xoKQJEmSJElSz1gQkiRJkiRJ6hkLQpIkSWOS5NAkH03yN0luTfIb7fS3JPlMkpvanxMnnVWSJK1vB086gCRJUo98AzilqmaTHAJ8KMl72nm/VlWXTzCbJEnqEQtCkiRJY1JVBcy2dw9pf2pyiSRJUl/ZZUySJGmMkhyU5CZgL3BNVV3fzvrtJJ9I8vokj5xgREmS1AO2EJIkSRqjqnoAODHJkcAVSZ4IvBy4B3gEsBO4APjN+esm2QZsA5iammJ2dpaZmZmRZd2+ed+C03//kiuXWGfxx1sq62LPNXXY0uutB6P+O3ZBH7ZRktYaC0KSJEkTUFX3J7kOOK2qXttO/kaSPwF+dZF1dtIUjNiyZUtt2LCB6enpkWXceuG7hvp4u8+ZXvFzbd+8j7NGuI1dMDMzM9K/Yxf0YRslaa2xy5gkSdKYJHlc2zKIJIcBTwM+mWRjOy3As4FbJpdSkiT1gS2EJEmSxmcjsCvJQTQn5i6rqquTfCDJ44AANwG/OMmQkiRp/bMgJEmSNCZV9QngSQtMP2UCcSRJUo/ZZUySJEmSJKlnLAhJkiRJkiT1zEBdxpLsBr4GPADsq6otSY4C3g5sAnYDZ1XVfYPFlCRJkiRJ0rAMo4XQj1fViVW1pb1/IXBtVZ0AXNvelyRJkiRJUkeMosvYmcCu9vYumkunSpIkSZIkqSMGLQgV8P4kNyTZ1k6bqqo97e17gKkBn0OSJEmSJElDNOhl53+kqu5O8l3ANUk+OXdmVVWSWmjFtoC0DWBqaoqZmZmBgmzfvG9Zy00d9tBlB33eYZmdne1Mlv26mAnMtRJdzCRJkiRJmryBCkJVdXf7e2+SK4CTgHuTbKyqPUk2AnsXWXcnsBNgy5YtNT09PUgUtl74rmUtt33zPi66+Z82e/c5gz3vsMzMzDDoPhi2LmYCc61EFzMNW5I3A2cAe6vqie20BQe3TxLgDcAzgP8NbK2qj08ityRJkiRN0qq7jCU5PMkR+28DPwHcAlwFnNcudh5w5aAhJWkJbwFOmzdtscHtnw6c0P5sA944poySJEmS1CmDtBCaAq5oTrhzMPDWqnpvkr8GLktyPvBZ4KzBY47OpiVaFu3ecfoYk0hajar6YJJN8yafCUy3t3cBM8AF7fQ/raoCPpLkyP0tGseTVpIkSZK6YdUFoaq6E/iBBaZ/CTh1kFCSNKDFBrc/Bvj8nOXuaqdZEJIkSZLUK4MOKi1JnbbU4PaLWe6g910dtNtcKzOKXEtd6GC5z9Wn/SVJ6o4kBwEfA+6uqjOSHA9cCjwWuAE4t6q+OcmMkobDgpCk9Wixwe3vBo6bs9yx7bSHWO6g910dtNtcKzOKXEtd6GC5FzPo0/6SJHXKS4Dbge9s778GeH1VXZrkj4DzcRxGaV1Y9aDSktRhiw1ufxXwvDROBr7i+EGSJEmNJMcCpwNvau8HOAW4vF1kF/DsyaSTNGy2EJK0piV5G80A0kcnuQt4JbCDhQe3fzfNJefvoLns/PPHHliSJKm7fg94GXBEe/+xwP1Vtb8v9P7xFx9muV3ul2uQLsqLdd0eVZfn1WS9+e6vLDpv8zGPHjDRwtZSt2+zjocFIUlrWlWdvcishw1u315d7JdGm0iStJilru7apefzSrPqoyRnAHur6oYk0ytdf7ld7pdrkC7Ki3XdXm637ZVaTdZhdC9fqbXU7dus42FBSJIkSZL0FOBZSZ4BHEozhtAbgCOTHNy2Elpw/EVJa5NjCEmSJI1RkkOTfDTJ3yS5NclvtNOPT3J9kjuSvD3JIyadVVJ/VNXLq+rYqtoEPBf4QFWdA1wHPKddbO7YjJLWOAtCkiRJ4/UN4JSq+gHgROC0dqD7/VfyeTxwH82VfCRp0i4AfiXJHTRjCl084TyShsSCkCRJ0hhVY7a9e0j7U3glH0kdUVUzVXVGe/vOqjqpqh5fVf+2qr4x6XyShsMxhCRJksYsyUHADcDjgT8EPs0yruQz/yo+w7iyyVJXutm+eaCHHoqpw+D3L1m8h8pSV+NZ7EpDBzLuq8Ws5SvULFcftlGS1hoLQpIkSWNWVQ8AJyY5ErgC+L5lrveQq/hs2LBh4CubLHWlmy7YvnkfF928+EfWpa7Gs9ptG9UVfhazlq9Qs1x92EZJWmvsMiZJkjQhVXU/zYCtP0x7JZ92llfykSRJI2VBSJIkaYySPK5tGUSSw4CnAbfjlXwkSdIY2WVMkiRpvDYCu9pxhL4DuKyqrk5yG3BpklcDN+KVfCRJ0ghZEJIkSRqjqvoE8KQFpt8JnDT+RJIkqY/sMiZJkiRJktQzFoQkSZIkSZJ6xoKQJEmSJElSz1gQkiRJkiRJ6hkHlZYkSdKatenCd006giRJa5IthCRJkiRJknrGgpAkSZIkSVLPWBCSJEmSJEnqGQtCkiRJkiRJPTNwQSjJQUluTHJ1e//4JNcnuSPJ25M8YvCYkiRJkiRJGpZhtBB6CXD7nPuvAV5fVY8H7gPOH8JzSJIkSZIkaUgGKgglORY4HXhTez/AKcDl7SK7gGcP8hySJEmSJEkarkFbCP0e8DLg2+39xwL3V9W+9v5dwDEDPockSZIkSZKG6ODVrpjkDGBvVd2QZHoV628DtgFMTU0xMzOz2igAbN+878ALAVOHLX/ZQTOtxOzs7Fifbzm6mAnMtRJdzDQuSf4D8AKggJuB5wMbgUtpitc3AOdW1TcnFlKSJEmSJmTVBSHgKcCzkjwDOBT4TuANwJFJDm5bCR0L3L3QylW1E9gJsGXLlpqenh4gCmy98F3LWm775n1cdPPyNnv3OdMDJFqZmZkZBt0Hw9bFTGCulehipnFIcgzwy8ATquofklwGPBd4Bs0YZ5cm+SOaMc7eOMGokqQ1ZtMinzl37zh9zEkkSRrMqruMVdXLq+rYqtpE80XrA1V1DnAd8Jx2sfOAKwdOKUkrdzBwWJKDgUcBe3CMM0mSJEkCBmshtJgLgEuTvBq4Ebh4BM8xFoudAQLPAkldVlV3J3kt8DngH4D303QRc4wzSROV5DjgT4Epmi6tO6vqDUleBfw88IV20VdU1bsnk1KSNJffC7VeDaUgVFUzwEx7+07gpGE8riStRpLHAGcCxwP3A38OnLaC9Zc1xllXx2gy18qMItdSY9Ut97n6tL96Zh+wvao+nuQI4IYk17TzXl9Vr51gNkmS1COjaCEkSZP2VOAzVfUFgCTvpBn3bKhjnHV1jCZzrcwoci01rt1yx6fr0/7qk6raQ9OFlar6WpLbsbWiJEmaAAtCktajzwEnJ3kUTZexU4GP8U9jnF2KY5xJmrAkm4AnAdfTFK1flOR5NMer7VV13wLrPKQF4zBabC336quTspIrxA7LUvt0sSyD/B360PKuD9soSWuNBSFJ605VXZ/kcuDjNN0zbqRp8fMu1skYZ5LWtiQbgHcAL62qryZ5I/BbNOMK/RZwEfBz89eb34Jxw4YNA7fYWu6VWidlJVeIHZalWvIttr8GuTptH1re9WEbNXyO3SONlgUhSetSVb0SeOW8yY5xJmnikhxCUwy6pKreCVBV986Z/8fA1ROKJ0mSemLVl52XJEnSyiQJTevE26vqdXOmb5yz2E8Bt4w7myRJ6hdbCEmSJI3PU4BzgZuT3NROewVwdpITabqM7QZ+YTLxJElSX1gQkiRJGpOq+hCQBWa9e9xZJGm+JIcCHwQeSfNd8fKqemWS42kuyvFY4Abg3Kr65uSSaiGOuaSVssuYJEmSJAngG8ApVfUDwInAaUlOBl4DvL6qHg/cB5w/wYyShsSCkCRJkiSJasy2dw9pfwo4Bbi8nb4LePYE4kkaMgtCkiRJkiQAkhzUjnG2F7gG+DRwf1Xtaxe5CzhmUvkkDY9jCEmSJEmSAKiqB4ATkxwJXAF833LWS7IN2AYwNTXFzMzMQDlmZ2fZvvmBRecv9fjbN+9bcPpqMy32ePsfc3Z2dsWPfaDHXI1R5JwUs46HBSFJkiRpQA7mqvWmqu5Pch3ww8CRSQ5uWwkdC9y9wPI7gZ0AW7Zsqenp6YGef2Zmhos+9PVF5+8+Z/HH37rI/+NS6yxlscfb/5gzMzOsdHsP9JirMYqck2LW8bDLmCRJkiSJJI9rWwaR5DDgacDtwHXAc9rFzgOunExCScNkCyFJkiRJEsBGYFeSg2gaD1xWVVcnuQ24NMmrgRuBiycZEpZulTdOmy58F9s371uwdY6tA9V1FoQkSZIkSVTVJ4AnLTD9TuCk8SeSNEp2GZMkSZIkSeoZWwhJkiRJc3SlK4okSaNkCyFJkiRJkqSesSAkSZIkSZLUMxaEJEmSJEmSesaCkCRJkiRJUs84qPQILDUQ4e4dp48xiSRJkiRpEhygXl1nCyFJkiRJkqSesSAkSZI0JkmOS3JdktuS3JrkJe30o5Jck+RT7e/HTDqrJEla31ZdEEpyaJKPJvmb9gPNb7TTj09yfZI7krw9ySOGF1eSJGlN2wdsr6onACcDv5TkCcCFwLVVdQJwbXtfkiRpZAZpIfQN4JSq+gHgROC0JCcDrwFeX1WPB+4Dzh88piRJ0tpXVXuq6uPt7a8BtwPHAGcCu9rFdgHPnkxCSZLUF6seVLqqCpht7x7S/hRwCvDv2um7gFcBb1x9REmSpPUnySbgScD1wFRV7Wln3QNMLbLONmAbwNTUFLOzs8zMzAyUY/vmfQOtP2pTh3U/44Ec6G80jL9j1/VhGyVprRnoKmNJDgJuAB4P/CHwaeD+qtr/rn0XzVkvSRqrJEcCbwKeSFOs/jngb4G3A5uA3cBZVXXfhCJK6rEkG4B3AC+tqq8meXBeVVWSWmi9qtoJ7ATYsmVLbdiwgenp6YGybO34VXC2b97HRTev7Qvj7j5nesn5MzMzA/8du64P2yhJa81A765V9QBwYvvF6wrg+5a77vwzXOM6uzWss0xL5V3q8Rdbr4tnTbqYCcy1El3MNEZvAN5bVc9pxzJ7FPAKmjE6diS5kGaMjgsmGVJS/yQ5hKYYdElVvbOdfG+SjVW1J8lGYO/kEkqSpD4YyumWqro/yXXADwNHJjm4bSV0LHD3Ius85AzXuM5uDess01JnepbKsth6XTxr0sVMYK6V6GKmcUjyaOBHga0AVfVN4JtJzgSm28V2ATNYEJI0RmmaAl0M3F5Vr5sz6yrgPGBH+/vKCcSTJK1Tmy58F9s373vYd9XdO06fUKKH2zQn2/ysXcq5ngxylbHHtS2DSHIY8DSagRGvA57TLuYHGkmTcDzwBeBPktyY5E1JDmeZY3RI0gg9BTgXOCXJTe3PM2gKQU9L8ingqe19SZKkkRmkqcxGYFc7jtB3AJdV1dVJbgMuTfJq4Eaas2BDs6nj/dwldcLBwJOBF1fV9UnewLxLOC81Rsdyu7R2tUueuVZmFLlW03V4vj7trz6pqg8BWWT2qePMIkmS+m2Qq4x9gubKGPOn3wmcNEgoSRrQXcBdVXV9e/9ymoLQssboWG6X1q52yTPXyowi12q6Ds/Xp/0lSZKk8Vvbl2yQpAVU1T1JPp/ke6vqb2nOut/W/jhGhyRJkrSGLNVTyPGFVs+C0Jgt9kLevnnfgyPdShqKFwOXtFcYuxN4Pm331iTnA58FzppgPkmSJEmaGAtCktalqroJ2LLALMfokCRJktR7q77KmCRJkiRJktYmC0KSJEmSJEk9Y0FIkiRJkiSpZywISZIkSZIk9YwFIUmSJEmSpJ7xKmOSJEmSJPXQpgvftei83TtOH2MSTYIthCRJkiRJknrGgpAkSZIkSVLPWBCSJEmSJEnqGQtCkiRJkiSSHJfkuiS3Jbk1yUva6UcluSbJp9rfj5l0VkmDsyAkSZIkSQLYB2yvqicAJwO/lOQJwIXAtVV1AnBte1/SGmdBSJIkSZJEVe2pqo+3t78G3A4cA5wJ7GoX2wU8ezIJJQ2Tl51fx7yEoCRJ3ZPkzcAZwN6qemI77VXAzwNfaBd7RVW9ezIJJQmSbAKeBFwPTFXVnnbWPcDUhGJJGiILQpIkSeP1FuAPgD+dN/31VfXa8ceRpIdKsgF4B/DSqvpqkgfnVVUlqQXW2QZsA5iammJmZmagDLOzs2zf/MBAjzHf719y5aLzNh/z6EXnbd+8b8nHnTrswMusxGr33bBzDvo3XKm52VaSddw555udnZ14htWyICRJkjRGVfXB9sy7JHVOkkNoikGXVNU728n3JtlYVXuSbAT2zl+vqnYCOwG2bNlS09PTA+WYmZnhog99faDHWInd50wvOm/rEj0voClcXHTz8L5aL5VlKcPOudocqzU3/0qyjjvnfDMzMwz6ep8UC0KrtFR3rHE/n92/JElaF16U5HnAx2gGdb1v/gLzz8AP46zkMM9qj8Kwz7xPwoFaJazls8vL1YdtXA/SNAW6GLi9ql43Z9ZVwHnAjvb34i9qSWuGBSFJkqTJeyPwW0C1vy8Cfm7+QvPPwG/YsGHgs5IHOqM8acM+8941u8+ZXtNnl5erD9u4TjwFOBe4OclN7bRX0BSCLktyPvBZ4KwJ5ZM0ROv33VWSJGmNqKp7999O8sfA1ROMI6mnqupDQBaZfeo4s0gaPS87L0mSNGHtmBz7/RRwy6SySJKkfrCFkCRJ0hgleRswDRyd5C7glcB0khNpuoztBn5hYgElSVIvWBCSpI5yMHlpfaqqsxeYfPHYg0iSpF5bdZexJMcluS7JbUluTfKSdvpRSa5J8qn292OGF1eSJEmSJEmDGqSF0D6aS6J+PMkRwA1JrgG2AtdW1Y4kFwIXAhcMHnX9G/el7CVJkiRJUj+tuoVQVe2pqo+3t78G3A4cA5wJ7GoX2wU8e9CQkrQaSQ5KcmOSq9v7xye5PskdSd6e5BGTzihJkiRJkzCUq4wl2QQ8CbgemKqqPe2se4CpYTyHJK3CS2iK1fu9Bnh9VT0euA84fyKpJEmSJGnCBh5UOskG4B3AS6vqq0kenFdVlaQWWW8bsA1gamqKmZmZZT3f9s37Bso7ddjgjzEKg+RabN8t9XjL2d+zs7MPW+7mu7+y6PKbj3n0AR9zGBbK1QVdzNXFTOOS5FjgdOC3gV9Jc3A6Bfh37SK7gFcBb5xIQEmSJEmaoIEKQkkOoSkGXVJV72wn35tkY1XtSbIR2LvQulW1E9gJsGXLlpqenl7Wc24dcJyd7Zv3cdHN3bu42iC5dp8zveD0pfbVYuvMNTMzw/y/y6CPOQwL5eqCLubqYqYx+j3gZcAR7f3HAvdX1f5K6V003VwlSZIkqXdWXRlpz7ZfDNxeVa+bM+sq4DxgR/v7yoESStIKJTkD2FtVNySZXsX6y2rBOOoWWKtt5TeKXMNoHdjVFmujyDVoC03o1/6SJEnS+A3SVOYpwLnAzUluaqe9gqYQdFmS84HPAmcNFlGSVuwpwLOSPAM4FPhO4A3AkUkOblsJHQvcvdDKy23BOOoWWKttkTeKXMNoHdjVFmvur5Xpai5JkqT1Zqkrke/ecfrAj7/qglBVfQjIIrNPXe3jStKgqurlwMsB2hZCv1pV5yT5c+A5wKXYglGSJElSjw3lKmOStEZcQDPA9B00YwpdPOE8kiRJkjQR3RtdWZKGqKpmgJn29p3ASZPMI0mSJEldYEFIkiRJkiQt26jHttF42GVMkiRJkiSpZywISZIkSZIk9YxdxiSpR2zeK0mSJAksCEmSJEmdtNoivsV/rSWLvV63b96HX1el0bLLmCRJ0hgleXOSvUlumTPtqCTXJPlU+/sxk8woSZLWPwtCkiRJ4/UW4LR50y4Erq2qE4Br2/uSJEkjY0FIkiRpjKrqg8CX500+E9jV3t4FPHusoSRJUu/YKVOSJGnypqpqT3v7HmBqkmEkSZPjOGAr4/5aPQtCkrTO3Hz3V9i6xBujpG6rqkpSC81Lsg3YBjA1NcXs7CwzMzMDPV8zcGt3TR3W/YyD+P1LrmTqsOb3fNs3L77eUn/3pfbXoK+X1RrGa1WSNFwWhCRJkibv3iQbq2pPko3A3oUWqqqdwE6ALVu21IYNG5ienh7oibteQN6+eR8X3by+P7KuZht3nzO96Lyl/qZLrTdKMzMzA79WJUnDtb7fXSVJWkPmNnnevnnfg1/qbO7cC1cB5wE72t8Pby4iSZI0RBaEJEkjs1iBAyxyqL+SvA2YBo5OchfwSppC0GVJzgc+C5w1uYSSJKkPLAitA0sNojXI483/8jaMx1yIXwolSX1SVWcvMuvUsQaRJEm9ZkFIksZgsaKoBVFJ0moM+4SgJKl/vmPSASRJkiRJkjRethBSpy109mt/VzZbVkiSJEnDk+TNwBnA3qp6YjvtKODtwCZgN3BWVd03qYyShscWQpIkSZIkgLcAp82bdiFwbVWdAFzb3pe0DlgQkiRJkiRRVR8Evjxv8pnArvb2LuDZYw0laWTsMtZTDkQoSZKkUZr7eXP+1Wvt+r+mTFXVnvb2PcDUJMNIGh4LQpIkwEKxJElaWlVVklpoXpJtwDaAqakpZmZmlvWY2zfvW3D61GGLzxuFpfIeKMc4s44z52qf6/cvuXLReZuPefSyHnNY+3S5r8NBzM7Ojux5ltoHw3hOC0KSJEmSpMXcm2RjVe1JshHYu9BCVbUT2AmwZcuWmp6eXtaDb13khNT2zfu46ObxfV3dfc70ovMWy7jfOLOOM+cgzzXoYw5rny71fMMyMzPDcl/vK7XUfh7GtjmGkCRJkiRpMVcB57W3zwMWb/4haU0ZqCCU5M1J9ia5Zc60o5Jck+RT7e/HDB5TkiRJkjRKSd4GfBj43iR3JTkf2AE8LcmngKe29yWtA4O2EHoLXpZQUsckOS7JdUluS3Jrkpe00y1YS5IkLaKqzq6qjVV1SFUdW1UXV9WXqurUqjqhqp5aVfOvQiZpjRqoU15VfTDJpnmTzwSm29u7gBnggkGeR5JWaB+wvao+nuQI4IYk1wBbaQrWO5JcSFOwnujxyYGcJUmSJE3CKEa+WtZlCYc9Cv2yw415tPrl6mKucY1Cv9L19ucax4jxKzHK0eVXq4uZxqE9Bu1pb38tye3AMViwliRJkiRgxFcZW+qyhMMehX65xj1a/XJ1Mde4RqFf6Xr7c41jxPiVGOXo8qvVxUzj1rZifBJwPUMuWK+k4Dbsgu9Sl/Ps6mVa5+fqSrFyFIXTYRTB5+6vruwr6G+hWZIkab0ZRQViWZcllKRRS7IBeAfw0qr6apIH5w2jYL2SgtugxeyV6OplWufn6kpRdxSF02EUwed2sFxSAAAgAElEQVTur67sK7DQLEmSVq9LwyUslmX3jtPHnGRyRvGNYf9lCXfgZQklTUiSQ2iKQZdU1TvbyRasJfVSlz6Aq7uWep306QuSJPXFoJed97KEkjonTVOgi4Hbq+p1c2btL1iDBWtJHZRkd5Kbk9yU5GOTziNJktavQa8ydvYis04d5HElaUBPAc4Fbk5yUzvtFTQF6sva4vVngbMmlE+SlvLjVfXFSYeQJEnrW7dGMZakIaiqDwFZZLYFa0mSJK1JdgHWMFkQ0tB4cJIkaWAFvL8d9P6/t4PcS5IkDZ0FIUmSpO74kaq6O8l3Adck+WRVfXD/zCTbgG0AU1NTzM7OMjMzc8AH3b5536jyjtzUYWs7/3KMcxuXer0sleH3L1l82L3Nxzz6gI83fxuX87qVJI2WBSFJ0kR4qc/h8KpA60tV3d3+3pvkCuAk4INz5u8EdgJs2bKlNmzYwPT09AEfd+sabsW7ffM+Lrp5fX9kHec27j5netF5q32dLPaYcx9v/jYulUOaBHs7qI8GusqYJEmShiPJ4UmO2H8b+AnglsmmkiRJ69X6Pt0iSZK0dkwBVySB5jPaW6vqvZONJEmS1isLQpIkSR1QVXcCPzDpHJIkqR8sCEmSJEk94TgpkpbL48X65xhCkiRJkiRJPWNBSJIkSZIkqWcsCEmSJEmSJPWMBSFJkiRJkqSecVBpSZIkSavWlYFnl8qxe8fpY0wiSWuDBSFJ0rrgFwFJkiRp+SwIaeJGcVZpNY/pF0ZJkiRJUl84hpAkSZIkSVLP2EJIkoakK2MoSKN0891fYesir3VbWkqSJK0dFoSkluOPSN1n0U2S1ocufe7qUhZJGie7jEmSJEmSJPWMLYQkSZ1iK6D1yTPwkiRJ3WJBSGvWWvjSuNqMfjmSJEmSJI2SXcYkSZIkSZJ6xhZCkqRe86pZktQta6EVuCStB7YQkiRJkiRJ6pmRtRBKchrwBuAg4E1VtWNUzyWpMf+M2vbN+x5s+WBLh3/i8UlSV3l8ktRVHp+k9WckLYSSHAT8IfB04AnA2UmeMIrnkqSV8Pgkqas8PknqKo9P0vo0qi5jJwF3VNWdVfVN4FLgzBE9lySthMcnSV3l8UlSV3l8ktahVNXwHzR5DnBaVb2gvX8u8K+q6kVzltkGbGvvfi/wt0MPsrCjgS+O6blWoou5upgJzLUSq8n03VX1uFGE6YIhH5+6+DcHc62UuVZmkrk8Pj38+PQluvk6Gaau/i8Mk9u49nl8Gv73u7X0mlkrWddKTjDrMC16fJrYVcaqaiewc9zPm+RjVbVl3M97IF3M1cVMYK6V6GKmtWC5x6eu7l9zrYy5Vqarufpi/vGpD38Pt3F96MM29t2wv9+tpdfMWsm6VnKCWcdlVF3G7gaOm3P/2HaaJE2axydJXeXxSVJXeXyS1qFRFYT+GjghyfFJHgE8F7hqRM8lSSvh8UlSV3l8ktRVHp+kdWgkXcaqal+SFwHvo7ks4Zur6tZRPNcqjL2b2jJ1MVcXM4G5VqKLmSZqyMenru5fc62MuVamq7nWvFUen/rw93Ab14c+bOO6NaHvd2vpNbNWsq6VnGDWsRjJoNKSJEmSJEnqrlF1GZMkSZIkSVJHWRCSJEmSJEnqmd4UhJIcl+S6JLcluTXJSyadab8kByW5McnVk86yX5Ijk1ye5JNJbk/ywx3I9B/av90tSd6W5NAJ5Xhzkr1Jbpkz7agk1yT5VPv7MR3J9bvt3/ATSa5IcuS4c61XSU5L8rdJ7khy4aTz7Jdkd5Kbk9yU5GMTzLGW/k9eleTudp/dlOQZY8604PvTpPfXErkmur/U6OoxaFBdPXYMU1f/54cpyaFJPprkb9pt/I12+vFJrm9ft29vBydWzy33eJbkp5NUkolc3vtAOZNsTfKFOe+PL5hEzjbLAfdpkrPmHIfeOu6Mc3IcaL++fs4+/bsk93c0579oj+03tt+91sbno6rqxQ+wEXhye/sI4O+AJ0w6V5vnV4C3AldPOsucTLuAF7S3HwEcOeE8xwCfAQ5r718GbJ1Qlh8FngzcMmfafwEubG9fCLymI7l+Aji4vf2aSeRajz80gyl+Gvi/2v+Pv+nQ8WQ3cHQHcqyl/5NXAb86wX214PvTpPfXErkmur/86fYxaAjb1sljx5C3sZP/80PexgAb2tuHANcDJ7ef357bTv8j4IWTzurPxF8ryzqetf8rHwQ+AmzpYk5gK/AHa2GfAicANwKPae9/V1ezzlv+xTQDmncuJ83A0i9sbz8B2D3p18JyfnrTQqiq9lTVx9vbXwNupykyTFSSY4HTgTdNOst+SR5N84HsYoCq+mZVTaQSO8/BwGFJDgYeBfz9JEJU1QeBL8+bfCZNEY3297PHGoqFc1XV+6tqX3v3I8Cx4861Tp0E3FFVd1bVN4FLaV4Daq2l/5NJW+L9aaL7q6vvmwLW8TGoq8eOYerq//wwVWO2vXtI+1PAKcDl7fQ1vY0amuUez36L5uTmP44z3Bxr6bi7nKw/D/xhVd0HUFV7x5xxv5Xu17OBt40l2UMtJ2cB39nefjQT+q66Ur0pCM2VZBPwJJqzFZP2e8DLgG9POsgcxwNfAP6kbfL2piSHTzJQVd0NvBb4HLAH+EpVvX+SmeaZqqo97e17gKlJhlnEzwHvmXSIdeIY4PNz7t9Fd74oF/D+JDck2TbpMPN0+f/kRW3z3jdPspvGvPenzuyvBd43O7G/eqzLx6BR6Mz/wrB19X9+GNIMiXATsBe4hubs+v1zTlSt99etlueAx7MkTwaOq6p3jTPYPMs97v50+/54eZLjxhPtYZaT9XuA70ny/yX5SJLTxpbuoZb9fpbku2m+p35gDLnmW07OVwE/m+Qu4N00rZk6r3cFoSQbgHcAL62qr044yxnA3qq6YZI5FnAwTXPtN1bVk4Cv0zRdnpj2C8eZNAeBfw4cnuRnJ5lpMdW0E6xJ55grya8D+4BLJp1FI/cjVfVk4OnALyX50UkHWkjH/k/eCPzfwIk0BeeLJhFiqfenSe6vBXJ1Yn+pnzp27BhIV//nh6WqHqiqE2laJ58EfN+EI2kNSvIdwOuA7ZPOsgx/CWyqqv+Hpgi66wDLT9LBNN3Gpmla3fxxuj/W6HOBy6vqgUkHWcTZwFuq6ljgGcD/aF+/ndb5gMOU5BCaN95Lquqdk84DPAV4VpLdNM3OTknyZ5ONBDQVz7uqav+Z4MtpCkST9FTgM1X1har6FvBO4P+dcKa57k2yEaD9Palmlw+TZCtwBnBO+wFTg7sbmHvW59h22sS1ren2N/29guZDeFd08v+kqu5tv7h8G/hjJrDPFnl/mvj+WihXF/aXunsMGpGJ/y8MW1f/50ehHXbgOuCHgSPbrv+w/l+3Wp4DHc+OAJ4IzLTfmU4GrprAwNIHPO5W1Zeq6hvt3TcBPzimbPMt5z3iLuCqqvpWVX2GZiyzE8aUb66VvJ89l8l0F4Pl5TyfZpw0qurDwKHA0WNJN4DeFISShGZMnNur6nWTzgNQVS+vqmOrahPNC/wDVTXxVi9VdQ/w+STf2046FbhtgpGg6Sp2cpJHtX/LU2n63HfFVcB57e3zgCsnmOVBbfPPlwHPqqr/Pek868hfAye0V0t5BM3/71UTzkSSw5Mcsf82zaDityy91lh19f9k45y7P8WY99kS708T3V+L5Zr0/hLQ0WPQCHXy2LFaXf2fH6Ykj9vf2iDJYcDTaD63XQc8p11sTW+jhmbJ41lVfaWqjq6qTe13po/QfK4d95VUD3jcnff++Cwm911lOe8Rf0HTOogkR9N0IbtznCFby3o/S/J9wGOAD485337Lyfk5mu+oJPmXNAWhL4w15SocfOBF1o2nAOcCN7f9mQFeUVXvnmCmLnsxcEn7gr8TeP4kw1TV9UkuBz5O0/XpRpqR3McuydtoDqBHt31EXwnsAC5Lcj7wWeCsjuR6OfBI4Jrm8ycfqapfHHe29aaq9iV5EfA+mqsOvLmqbp1wLGjGm7ii/VsfDLy1qt47iSBr7P9kOsmJNN0zdgO/MOZYC74/Mfn9tViusye8v3qvw8eggXX12DFkXf2fH6aNwK4kB9GcgL6sqq5OchtwaZJX03yWu3iSITV5ix3Pkvwm8LGq6kSxe5k5fznJs2i+q3yZ5qpjXc36PuAn2v/JB4Bfq6ovdTQrNAWYSyfV22GZObfTdL37DzSfkbauhd4ZWQMZJUmSJEmSNES96TImSZIkSZKkhgUhSZIkSZKknrEgJEmSJEmS1DMWhCRJkiRJknrGgpAkSZIkSVLPWBCSJEmSJEnqGQtCkiRJkiRJPWNBSJIkSZIkqWcsCEmSJEmSJPWMBSFJkiRJkqSesSAkSZIkSZLUMxaEJEmSJEmSesaCkCRJkiRJUs9YEJIkSZIkSeoZC0KSJEmSJEk9Y0FIkiRJkiSpZywISZIkSZIk9YwFIUmSJEmSpJ6xICRJkiRJktQzFoQkSZIkSZJ6xoKQJEmSJElSz1gQkiRJkiRJ6hkLQpIkSZIkST1jQUiSJEmSJKlnLAhJkiRJkiT1jAUhSZIkSZKknrEgJEmSJEmS1DMWhCRJkiRJknrGgpAkSZIkSVLPWBCSJEmSJEnqGQtCkiRJkiRJPWNBSJIkSZIkqWcsCEmSJEmSJPWMBSFJkiRJkqSesSAkSZIkSZLUMxaEeiTJ7iT/kGQ2yb1J3pLk0+392SQPJPnHOfdfkWRrO302yVeT/E2SMxZ47A3tMu+ZN312zs+35zz/bJJzkrwqyZ/NWT5Jfi3Jp9plP5fkPyd55Dj2kaS1Yd7x7J72eLZh3jKvSlJJ/tW86XOPa7NJPpPkT5J8z3i3QlIfLHW8am9XkjPnrfP6dvrWiYSWtC4d6LvZnOW2tsegn5m3/jPb49hRc6admeTuJI8e57ZoOCwI9c8zq2oD8GRgC/DnVbWhnfZXwIv236+q32nX+XA7/0jgvwGXJjly3uP+NPAN4GlJ/tn+iXMeawPwuf3P3/5cskC+/wpsA54HHAE8HTgVuGxI2y9p/dh/PDsReBLw8v0zkoTmOPLl9vd8+49rjwaeCvwDcEOSJ448taQ+WvR4Bfwdc45TSQ4GzgI+PdaEkta9FXw3O48FPkNV1V8CHwBeD9B+J3wj8MKq+spYNkJDZUGop6rqbuA9wLK//FTVt4H/ARwOnDBv9nnAHwGfAH52NZmSnAD8e+CcqvpwVe2rqltpik2nJTllNY8raX2rqnuA99F80drvXwMbgV8GnpvkEYus+0BVfbqq/j3wv4BXjTiupB5b5Hj1l8CPJHlMe/80ms9T94w5niSR5LuBH6M5Sf+Tc0/2t34ZeHqSn6QpDP2vqrpqzDE1JBaEeirJccAzgBtXsM5BwPOBbwGfnTP9u4Fp4JL2Z6Gz8ctxKnBXVX107sSq+jzwEeBpq3xcSetYkmNpWhPeMWfyeTRfsva3LnzmMh7qnTSFJEkaiUWOV/8IXAk8t73/POBPxxxNkvZ7HvCxqnoHcDtwztyZVfVF4CU03/vOoCkQaY2yINQ/f5HkfuBDNGfDf+cAywOc3K7zj8BrgZ+tqr1z5p8LfKKqbgMuBb4/yZNWke1oYM8i8/a08yVpv79I8jXg88Be4JUASR4F/FvgrVX1LeBylleo/nvgqAMuJUkrt+Dxao4/BZ7Xdr/4MeAvxpxPkvZ7HvDW9vZbWfgz1Edout2/v6r+D3v3H2V5Xd95/vkOjYpgaBVSy9DsNImMLtKKWENwzDoX0CyKa5M9rgemV2nDps8kxmjSO9LoWV1nk7NtHKJoDJ6OGNqEoUUiA0eMI0FuHM8JGFqR5pfSYqvd09Aqgil1MOW894/vt/RSfW/Vrfvr+731fT7OqdN1vz+qXvWtW5/76ff9fL6f70wqmEbPglDzXJCZazPzn2fm72Tmj/s45/bMXAs8E7iJw99BfwNFhXhhKtrfUbw7v1LfpZji0c0J5X5JWnBBZj6DYoTi8/h50fg3gHng0+XjayiGNh+/zNc7kWK+vCSNWq/2CoDM/AJwPPAO4FN99s8kaaQi4qXAyRRv8kNRENoQEacvOnQHRSH7VRHxkglG1IhZEFLfMnMO+G3g9QsjgCLiX1HcT+iy8o7zDwO/Cvyb8qaIK/E54KSIOLNzYzm97Szg1mF/BkmrT2b+HXA1xQhGKArSxwDfKtukTwBHAv9mmS/1GxQ315eksejSXnX6K2ArTheTVJ2LgQDuKvtQd3RsByAiLgFOorj369uBj/S6V6Pqz4KQViQzHwU+Aryz3HQxcAtwKsUNEk+nuFH1URRz5Ffytb9GcWPqayLirIg4IiKeD/w18LeZ+bej+SkkrULvp1jl8F9T3I/s1fy8TXoh8B66DHku25mTI+KDFO/cv3tiiSU11UJ79cJF2z9Acb/Ez08+kqSmi4inUaxwuIWf96FOB95M+WZ/RPwz4L3Ab2XmExT/d/sexehGTSELQhrE+ymGB76AotH4YGY+3PHxDYrVyAaZNva7FAWnvwLmgM8AbYqVxiSpq3L++scoRhrelZmf7WyXKP6j9YKOZeVfEhFzwA8o2phfBP5lZu6pIL6kBulor965aPujmXlrZmY1ySQ13AXAj4GPLepDfRRYQ7EC4p8BuzLzvwCU7dVvAW8t38jXlAlfcyRJkiRJkprFEUKSJEmSJEkNY0FIkiRJkiSpYSwISZIkSZIkNYwFIUmSJEmSpIZZU3UAgOOOOy7Xr19fdYwl/fCHP+Too4+uOkbfzDt+05a537y7d+/+bmYeP4FIU2GhfZq23zdM33MUzDwp05r5gQcesH3qMOn+U92fN3XOV+dsYL5hLGSz//Rkw7ZP0/A7r6s656tzNli9+ZZsnzKz8o8Xv/jFWXe33XZb1RFWxLzjN22Z+80L3Jk1aBfq8rHQPk3b7zvTzJNi5sm47bbbbJ96tE+TUvfnTZ3z1TlbpvmGsZDN9mm07dM0/M7rqs756pwtc/XmW6p9csqYJEmSJElSw1gQkiRJkiRJahgLQpIkSZIkSQ1jQUiSJEmSJKlhLAhJkiRJkiQ1jAUhSZIkSZKkhlm2IBQRH42IQxFxT5d9WyMiI+K48nFExAciYm9E3B0RZ4wjtCRJkiRJkgbXzwihq4HzFm+MiJOAXwe+1bH5lcAp5ccW4MrhI0qSJEmSJGmUli0IZebngUe77Hof8DYgO7ZtBD6WhduBtRFxwkiSSpIkSZIkaSTWDHJSRGwEDmTmVyKic9eJwLc7Hu8vtx3s8jW2UIwiYmZmhna7PUiUiZmbm6t9xk7mHb+FzHsOPN7zmA0nHjvBREubxmssafVYv+3mnvv2bT9/gkmk8VjqOX71eUdPMIkkqW7q2g9acUEoIp4OvJ1iutjAMnMHsANgdnY2W63WMF9u7NrtNnXP2Mm847eQefNSf9ybWpMLtIxpvMaSJEmSpPEYZITQrwAnAwujg9YBX4qIM4EDwEkdx64rt0mSJEmSJKkmVrzsfGbuycxfysz1mbmeYlrYGZn5MHAT8IZytbGzgMcz87DpYpIkSZIkSapOP8vOXwv8PfDciNgfEZcscfingYeAvcCfA78zkpSSJEmSJEkamWWnjGXmRcvsX9/xeQJvGj6WJEnS6hQRzwU+3rHpl4F3Ah8rt68H9gGvy8zvTzqfJElqhhVPGZMkSdLgMvOrmXl6Zp4OvBj4EXADsA24NTNPAW4tH0uSJI2FBSFJkqTqnAt8PTO/CWwEdpbbdwIXVJZKkiStehaEJEmSqnMhcG35+UzHYhwPAzPVRJIkSU0wyLLzkiRJGlJEPAV4DXDZ4n2ZmRGRXc7ZAmwBmJmZod1ujzvmz8zNzU30+61U1fm2bpjvue/Qo4/zwWtu7Lpvw4nHjitS36q+dsupc746Z5Ok5VgQkiRJqsYrgS9l5iPl40ci4oTMPBgRJwCHFp+QmTuAHQCzs7PZarUmFrbdbjPJ77dSVefbvO3mnvu2bpjn8j3du937NrXGlKh/VV+75dQ5X52zSdJynDImSZJUjYv4+XQxgJuAi8vPLwa6DymRJEkaAQtCkiRJExYRRwOvAD7ZsXk78IqIeBB4eflYkiRpLJwyJkmSNGGZ+UPg2Yu2fY9i1TFJkqSxc4SQJEmSJElSw1gQkiRJkiRJahgLQpKmVkR8NCIORcQ9HdveGxEPRMTdEXFDRKzt2HdZROyNiK9GxP9STWpJkqRq2YeSBBaEJE23q4HzFm27BTgtM18AfA24DCAiTgUuBJ5fnvNnEXHE5KJKkiTVxtXYh5Iaz4KQpKmVmZ8HHl207bOZOV8+vB1YV36+EdiVmU9k5jeAvcCZEwsrSZJUE/ahJIGrjEla3X4T+Hj5+YkUnZsF+8tth4mILcAWgJmZGdrtNnNzc7Tb7TFGHT0zT4aZ+7N1w3zPff1kmZubG2EaSdIyVtyH6tZ/GlSdX1vrnA3qna/O2WC8+YbtB8F48lkQkrQqRcQ7gHngmpWem5k7gB0As7Oz2Wq1aLfbtFqt0YYcMzNPhpn7s3nbzT337dvUWvb8OncgJWk1GbQP1a3/NKg6v7bWORvUO1+ds8F48w3bD4Lx5LMgJGnViYjNwKuBczMzy80HgJM6DltXbpMkSRL2oaSm8R5CklaViDgPeBvwmsz8Uceum4ALI+KpEXEycArwxSoySpIk1Y19KKl5HCEkaWpFxLVACzguIvYD76JYEeOpwC0RAXB7Zv7bzLw3Iq4D7qMYBv2mzPxpNcklSZKqYx9KElgQkjTFMvOiLpuvWuL4PwL+aHyJJEmS6s8+lCRwypgkSZIkSVLjWBCSJEmSJElqmGWnjEXERynuNH8oM08rt70X+F+BnwBfB96YmY+V+y4DLgF+CvxeZv7nMWWXJHWxvlzWcuuG+cOWuNy3/fwqIkmSJEmqmX5GCF0NnLdo2y3AaZn5AuBrFDcgIyJOBS4Enl+e82cRccTI0kqSJEmSJGloyxaEMvPzwKOLtn02M+fLh7cD68rPNwK7MvOJzPwGsBc4c4R5JUmSJEmSNKRRrDL2m8DHy89PpCgQLdhfbjtMRGwBtgDMzMzQbrdHEGV85ubmap+xk3nHbyHz1g3zPY+p0880jddYkiRJkjQeQxWEIuIdwDxwzUrPzcwdwA6A2dnZbLVaw0QZu3a7Td0zdjLv+C1kXnyPlk77NrUmF2gZ03iNJUmSJEnjMXBBKCI2U9xs+tzMzHLzAeCkjsPWldskSZIkSZJUEwMtOx8R5wFvA16TmT/q2HUTcGFEPDUiTgZOAb44fExJkiRJkiSNyrIFoYi4Fvh74LkRsT8iLgH+FHgGcEtE3BURHwbIzHuB64D7gM8Ab8rMn44tvSRJ0pSJiLURcX1EPBAR90fESyLiWRFxS0Q8WP77zKpzSpKk1W3ZKWOZeVGXzVctcfwfAX80TChJEqxf6v5U28+fYBJJI3YF8JnMfG1EPAV4OvB24NbM3B4R24BtwKVVhlT1fB2QJI3TQFPGJEmStHIRcSzwMso31zLzJ5n5GLAR2FkethO4oJqEkiSpKSwISZIkTc7JwHeAv4iIL0fERyLiaGAmMw+WxzwMzFSWUJIkNcJQy85LkiRpRdYAZwBvzsw7IuIKiulhP5OZGRHZ7eSI2AJsAZiZmaHdbo857s/Nzc1N9PutVNX5tm6Y77lv5qje+5fKvNTXHOXPWvW1W06d89U5myQtx4KQJEnS5OwH9mfmHeXj6ykKQo9ExAmZeTAiTgAOdTs5M3cAOwBmZ2ez1WpNIHKh3W4zye+3UlXn27zE/X62bpjn8j3du937NrUG+ppLnbdSVV+75dQ5X52zSdJynDImSZI0IZn5MPDtiHhuuelcitVZbwIuLrddDNxYQTxJktQgjhCSJEmarDcD15QrjD0EvJHiTbrrIuIS4JvA6yrMJ0mSGsCCkCRJ0gRl5l3AbJdd5046iyRJai6njEmSJEmSJDWMBSFJkiRJkqSGsSAkSZIkSZLUMBaEJEmSJEmSGsaCkCRJkiRJUsNYEJI01SLioxFxKCLu6dj2rIi4JSIeLP99Zrk9IuIDEbE3Iu6OiDOqSy5JklQN+0+SwIKQpOl3NXDeom3bgFsz8xTg1vIxwCuBU8qPLcCVE8ooSZJUJ1dj/0lqPAtCkqZaZn4eeHTR5o3AzvLzncAFHds/loXbgbURccJkkkqSJNWD/SdJAGuqDiBJYzCTmQfLzx8GZsrPTwS+3XHc/nLbwY5tRMQWinfAmJmZod1uMzc3R7vdHmvoxbZumO+5b6ksC+fNHHX415j0z7BSVVznYZm5P4M+nxfMzc2NMI0kqYuR958GVefX1jpng3rnq3M2GG++YftBMJ58FoQkrWqZmRGRKzxnB7ADYHZ2NlutFu12m1arNY6IPW3ednPPffs2tZY9b+uGeS7f8+Rmfqnz6qCK6zwsM/dn0Ofzgjp3IKVhrF/ib0Oqyqj6T4Oq82trnbNBvfPVORuMN9+w/SAYTz6njElajR5ZGMpc/nuo3H4AOKnjuHXlNkmSpKaz/yQ1jAUhSavRTcDF5ecXAzd2bH9DuVrGWcDjHUOjJUmSmsz+k9QwThmTNNUi4lqgBRwXEfuBdwHbgesi4hLgm8DrysM/DbwK2Av8CHjjxANLkiRVzP6TJLAgJGnKZeZFPXad2+XYBN403kSSJEn1Zv9JEvQxZSwiPhoRhyLino5tz4qIWyLiwfLfZ5bbIyI+EBF7I+LuiDhjnOElSZIkSZK0cv3cQ+hq4LxF27YBt2bmKcCt5WOAVwKnlB9bgCtHE1OSJEmSJEmjsmxBKDM/Dzy6aPNGYGf5+U7ggo7tH8vC7cDahTvVS5IkSZIkqR4GvYfQTMed5R8GZsrPTwS+3XHc/nLbYXehj4gtFKOImJmZod1uDxhlMubm5mqfsZN5x28h89YN8z2PqdPPNI3XWJIkSZI0HkPfVDozMyJygPN2ADsAZjWjUIQAACAASURBVGdns9VqDRtlrNrtNnXP2Mm847eQefO2m3ses29Ta3KBljGN11iSJEmSNB793EOom0cWpoKV/x4qtx8ATuo4bl25TZIkSZIkSTUxaEHoJuDi8vOLgRs7tr+hXG3sLODxjqllkiRJAiJiX0TsiYi7IuLOclvXVVwlSZLGoZ9l568F/h54bkTsj4hLgO3AKyLiQeDl5WOATwMPAXuBPwd+ZyypJUmSpt/ZmXl6Zs6Wj3ut4ipJkjRyy95DKDMv6rHr3C7HJvCmYUNJkiQ10EagVX6+E2gDl1YVRpIkrW6DThmTJEnS4BL4bETsLldehd6ruEqSJI3c0KuMSZIkacV+LTMPRMQvAbdExAOdO3ut4loWj7YAzMzM0G63JxIWYG5ubqLfb6Wqzrd1w3zPfTNHLb1/EKP8Wau+dsupc746Z5Ok5VgQkiRJmrDMPFD+eygibgDOpFzFNTMPLlrFtfO8HcAOgNnZ2Wy1WhPL3G63meT3W6mq823ednPPfVs3zHP5ntF2u/dtao3sa1V97ZZT53x1ziZJy3HKmCRJ0gRFxNER8YyFz4FfB+6h9yqukiRJI+cIIUmSpMmaAW6ICCj6Yv8xMz8TEf8AXFeu6PpN4HUVZpQkSaucBSFJkqQJysyHgBd22f49uqziKkmSNA5OGZMkSZIkSWoYC0KSJEmSJEkNY0FIkiRJkiSpYSwISZIkSZIkNYwFIUmSJEmSpIaxICRJkiRJktQwFoQkSZIkSZIaxoKQJEmSJElSw1gQkrQqRcTvR8S9EXFPRFwbEU+LiJMj4o6I2BsRH4+Ip1SdU5IkqU7sQ0nNYUFI0qoTEScCvwfMZuZpwBHAhcB7gPdl5nOA7wOXVJdSkiSpXuxDSc1iQUjSarUGOCoi1gBPBw4C5wDXl/t3AhdUlE2SJKmu7ENJDbGm6gCSNGqZeSAi/gPwLeDHwGeB3cBjmTlfHrYfOLHb+RGxBdgCMDMzQ7vdZm5ujna7PfbsnbZumO+5b6ksC+fNHHX415j0z7BSVVznYZm5P4M+nxfMzc2NMI0kqZth+lDd+k+DqvNra52zQb3z1TkbjDffsP0gGE8+C0KSVp2IeCawETgZeAz4BHBev+dn5g5gB8Ds7Gy2Wi3a7TatVmsMaXvbvO3mnvv2bWote97WDfNcvufJzfxS59VBFdd5WGbuz6DP5wV17kBK0moxTB+qW/9pUHV+ba1zNqh3vjpng/HmG7YfBOPJ55QxSavRy4FvZOZ3MvOfgE8CLwXWlsOfAdYBB6oKKEmSVEP2oaQGsSAkaTX6FnBWRDw9IgI4F7gPuA14bXnMxcCNFeWTJEmqI/tQUoMMVRBySUJJdZSZd1Dc+PBLwB6Ktm4HcCnwBxGxF3g2cFVlISVJkmrGPpTULAPfQ6hjScJTM/PHEXEdxZKEr6JYknBXRHyYYknCK0eSVpL6lJnvAt61aPNDwJkVxJEkSZoK9qGk5hh2yphLEkqSJEmSJE2ZgUcIDbussyRJkiRJdbe+Y4WorRvmn7Ri1L7t51cRSRqJYaaMDbWsc0RsAbYAzMzM1H452bm5udpn7GTe8VvIvHXDfM9j6vQzTeM1liRJkiSNx8AFITqWJASIiCctSViOEuq5JGFm7qC4QRmzs7PZarWGiDJ+7XabumfsZN7xW8jc+Q7BYvs2tSYXaBnTeI0labWKiCOAO4EDmfnqiDgZ2EVxs9bdwOsz8ydVZpQkSavbMPcQcklCSZKkwbwFuL/j8XsoFuV4DvB9ikU5JEmSxmbggpBLEkqSJK1cRKwDzgc+Uj4OXJRDkiRN2DBTxlySUJIkaeXeD7wNeEb5+Nm4KIckSZqwoQpCkiRJ6l9EvBo4lJm7I6I1wPmVLcpR98UJqs631CITM0ctvX8Qo/xZq752y6lzvjpnk6TlWBCSJEmanJcCr4mIVwFPA34RuIIpWJSj7osTVJ1vqUUmtm6Y5/I9o+12j3Lhiqqv3XLqnK/O2SRpOcPcVFqSJEkrkJmXZea6zFwPXAh8LjM34aIckiRpwiwISZIkVc9FOSRJ0kQ5ZUySJKkCmdkG2uXnLsohSZImyhFCkiRJkiRJDWNBSJIkSZIkqWEsCEmSJEmSJDWMBSFJkiRJkqSGsSAkSZIkSZLUMBaEJEmSJEmSGsaCkCRJkiRJUsNYEJIkSZIkSWoYC0KSJEmSJEkNs6bqAJIkSZJWZv22m3vu27f9/AkmkSRNK0cISZIkSZIkNYwFIUmrUkSsjYjrI+KBiLg/Il4SEc+KiFsi4sHy32dWnVOSJKlO7ENJzeGUMUmr1RXAZzLztRHxFODpwNuBWzNze0RsA7YBl1YZUpI0XZaaqiWtEvahpIZwhJCkVScijgVeBlwFkJk/yczHgI3AzvKwncAF1SSUJEmqH/tQUrM4QkjSanQy8B3gLyLihcBu4C3ATGYeLI95GJjpdnJEbAG2AMzMzNBut5mbm6Pdbo89eKetG+Z77lsqy8J5M0cd/jUm/TOsVBXXeVhm7s+gz+cFc3NzI0wjSeph4D5Ut/7ToOr22tr5Gra4f1WnnFC/a9epztlgvPmG7QfBePJZEJK0Gq0BzgDenJl3RMQVFEObfyYzMyKy28mZuQPYATA7O5utVot2u02r1Rpz7CfbvNQKMptay563dcM8l+95cjO/1Hl1UMV1HpaZ+zPo83lBnTuQkrSKDNyH6tZ/GlTdXls7X8MW96/q1req27XrVOdsMN58w/aDYDz5hpoy5g3HJNXUfmB/Zt5RPr6eonPzSEScAFD+e6iifJIkSXVkH0pqkGHvIbRww7HnAS8E7qeoIN+amacAt7KooixJ45aZDwPfjojnlpvOBe4DbgIuLrddDNxYQTxJkqRasg8lNcvAU8Y6bji2GYobjgE/iYiNQKs8bCfQxjvQS5q8NwPXlKtjPAS8kaIIfl1EXAJ8E3hdhfkkSRqLpVZC27f9/Akm0ZSyDyU1xDD3EBrqpq2SNE6ZeRcw22XXuZPOIkmSNC3sQ0nNMUxBaKibto7yLvSTUPc7oi9m3vFbyDyKO8ZPwjReY0lajSLiacDngadS9Keuz8x3RcTJwC7g2RRvtL2+HIEtSZI0csMUhLrdcGwb5Q3HMvPgUjccG+Vd6Ceh7ndEX8y847eQeRR3jJ+EabzGkrRKPQGck5lzEXEk8IWI+BvgD4D3ZeauiPgwcAlwZZVBJUnS6jXwTaW94ZgkSdLKZWGufHhk+ZHAORRvsEFxH8YLKognSZIaYpgRQuANxyRJklYsIo6gmBb2HOBDwNeBxzJzYR7yfuDEiuJJkqQGGKog5A3HJEmSVi4zfwqcHhFrgRuA5/VzXpX3YKz7vegmlW+pewf2MnPUYOeNQ7dr5O92cHXOJknLGXaEkCRJkgaUmY9FxG3AS4C1EbGmHCW0DjjQ5fjK7sFY93vRTSrfUvcO7GXrhnku31OPbne3+xv6ux1cnbNJ0nIGvoeQJEmSVi4iji9HBhERRwGvAO4HbgNeWx7mfRglSdJY1eOtCkmSpOY4AdhZ3kfoF4DrMvNTEXEfsCsi/hD4MnBVlSElSdLqZkFIkiRpgjLzbuBFXbY/BJw5+USSJKmJnDImSZIkSZLUMI4QkiRJkiQ12voBbhgvTTtHCEmSJEmSJDWMBSFJkiRJkqSGsSAkSZIkSZLUMBaEJEmSJEmSGsaCkCRJkiRJUsNYEJIkSZIkSWoYl52XJEmSJGnKrd92M1s3zLN5282H7du3/fwKEqnuHCEkSZIkSZLUMBaEJEmSJEmSGsaCkCRJkiRJUsNYEJIkSZIkSWoYC0KSJEmSJEkNY0FI0qoVEUdExJcj4lPl45Mj4o6I2BsRH4+Ip1SdUZIkqU7sP0nN4bLzklaztwD3A79YPn4P8L7M3BURHwYuAa6sKpwkqZ7Wd1myWWoQ+09SQzhCSNKqFBHrgPOBj5SPAzgHuL48ZCdwQTXpJEmS6sf+k9QsjhCStFq9H3gb8Izy8bOBxzJzvny8Hzix24kRsQXYAjAzM0O73WZubo52uz3exIts3TDfc99SWRbOmznq8K8x6Z9hpaq4zsMyc38GfT4vmJubG2EaSVIPI+0/Dapur1OdFvev6tQH2Lphvmv/D+qRs+59pnHmG7YfBOPJN3RBKCKOAO4EDmTmqyPiZGAXReOxG3h9Zv5k2O8jSf2KiFcDhzJzd0S0Vnp+Zu4AdgDMzs5mq9Wi3W7Taq34Sw1l8xJTFvZtai173tYN81y+58nN/FLn1UEV13lYZu7PoM/nBXXuQErSajCO/tOg6vY61Wlx/6pOfavN227u2v+DeuSse59pnPmG7QfBePKNYsrYwhzTBQtzTJ8DfJ9ijqkkTdJLgddExD6KAvU5wBXA2ohYeIVcBxyoJp4kSVLt2H+SGmaogpBzTCXVUWZelpnrMnM9cCHwuczcBNwGvLY87GLgxooiSmqoiDgpIm6LiPsi4t6IeEu5/VkRcUtEPFj++8yqs0pqFvtPUvMMO2WsFnNMJ6Hu8x0XM+/4LWQexXzQSZjGazwGlwK7IuIPgS8DV1Wcx5VspOaZB7Zm5pci4hnA7oi4BdgM3JqZ2yNiG7CNos2SRqrb687WDfNs3nYz+7afX0EiTYHa9Z8kjcbABaE6zTGdhLrPd1zMvOO3kHkU80EnYRqv8ShkZhtol58/BJxZZR5JzZaZB4GD5ef/GBH3U7x5thFolYftpGi3LAhJqoT9J6kZhhkhtDDH9FXA04BfpGOOaTlKyDmmkiRJXUTEeuBFwB3ATFksAngYmOlxTmUjrOs+0nSU+fpdbahfvVb9qYuFfHX9/db5uVfnbJK0nIELQpl5GXAZQDlC6P/KzE0R8QmKOaa7cI6p1NNSU4Ucsi1Jq1tEHAP8NfDWzPxBcRvGQmZmRGS386ocYV33kaajzNfvakP96rXqT10s5KvTyOZOdX7u1TmbJC1nFKuMLXYp8AcRsZfinkLOMZUkSSpFxJEUxaBrMvOT5eZHIuKEcv8JwKGq8kmSpGYYyVsVzjGVJElaXrki61XA/Zn5Jx27bqIYWb0dR1hLkqQJqO/YVUmSpNXnpcDrgT0RcVe57e0UhaDrIuIS4JvA6yrKJ0mSGsKCkCRJ0oRk5heA6LH73ElmkSRJzWZBSJIkSY2z1OIOkiQ1gQWhMXD1qMN5TSRJkiSNiv+/kIY3jlXGJEmSJEmSVGMWhCRJkiRJkhrGgpAkSZIkSVLDWBCSJEmSJElqGG8qLUmSJMmb9EpSwzhCSJIkSZIkqWEsCEmSJEmSJDWMBSFJkiRJkqSG8R5CmlrOc5ckSZIkaTAWhCSpQSykSpKkplqqHyQ1kVPGJEmSJEmSGsYRQhoZK+6SJEmSJE0HC0KSNAGruWDqNDRJklQnq7nfNWr245rNKWOSJEmSJEkN4wgh1dqg1f1e51nlliRJkiTJgpCkVSgiTgI+BswACezIzCsi4lnAx4H1wD7gdZn5/apySpIk1Yl9qNFyOpbqziljklajeWBrZp4KnAW8KSJOBbYBt2bmKcCt5WNJkiQV7ENJDTLwCCGrx9PNarVWs8w8CBwsP//HiLgfOBHYCLTKw3YCbeDSCiJKkiTVjn0oqVmGmTK2UD3+UkQ8A9gdEbcAmymqx9sjYhtF9djGQlIlImI98CLgDmCm7OgAPExR0O52zhZgC8DMzAztdpu5uTna7faS32vPgcd77tu6YYXBl7FUlq0b5gGYOernnw/7NZey1PdY6dfs5zrXjZn7M+zzZG5uboRpqhURHwVeDRzKzNPKbb6hJqlWVtqH6tZ/GlQ/r1Mr6eOM0uL+VT99sm7G8Tq8dcN8z/5fr+83yYx17zONM98orvM48g1cELJ6LKnuIuIY4K+Bt2bmDyLiZ/syMyMiu52XmTuAHQCzs7PZarVot9u0Wq0lv9/mCS5xum9Ta9kcWzfMc/me/pv5pb7mUpb6uVf6Nfu5znVj5v4M+zypcwdyAFcDf0ox0nrBwnQM31CTVLlB+lDd+k+Dqlu/q9Pi/lU/fbJuBu13LWXztpt79v96fb9JZqx7n2mc+UZxnceRbyQ3lR7VO/B1tpJq3KQrwd0sl3ccGQet0i81+mLUlf9RXv+FzINey0k/T+pekR+1iDiSoiNzTWZ+stz8SESckJkHI+IE4FB1CSU1VWZ+vuw7dfINNUm1YB+q3gZdhVnqZuiC0Cjfga+zlVTjJl0J7ma5vOPIOGiVft+m3qMvRl35H+X1X8g86LWc9POk7hX5UYqiIboKuD8z/6Rj103AxcD28t8bK4gnSd3U/g21ur+xsNJ8k5xustIpvJPWT74PXtP7JXPDiceOOtKT1Pm5V+dsg7APJTXLUAUhq8eaNt5MuzFeCrwe2BMRd5Xb3k7RibkuIi4Bvgm8rqJ8ktRTXd9Qq/sbCyvNN8npJiudwjtpw+Yb9xuedX7u1TnbgOxDSQ0yzCpjVo8l1VJmfgGIHrvPnWSWaWLBVKqUb6hJqlwVfahu/Y+tG+bZvO1m+x/SmP3CEOcuVI/PiYi7yo9XURSCXhERDwIvLx9LkiSpt4U31MA31CRJ0gQMs8qY78BLkiStUERcS3ED6eMiYj/wLpyOIUmSJqy+k5kbyOka1arT9a9TFknSaGXmRT12+YaaJEmaGAtCkiRJmloLb6Is3HOkk2+iTEavN7K8/pJUb8PcQ0iSJEmSJElTyIKQJEmSJElSwzhlTJIkSdJEeb9ESaqeI4QkSZIkSZIaZtWMEPJdBkmSJEmSpP6smoKQJEmSpObyDWJNE5+vqgMLQpIkSZIkDWCpwo5Ud95DSJIkSZIkqWEcISRJkiSpNhaPuNi6YZ7N5Tan0kjS6FgQ0mEmPZ91/babn/RCL0mSJEmSxsuC0IQ5x1SSJEmSJFXNgpAkSZJqbdA31Hwjrlpef0mqNwtCq0C3F9utG+ZpTT6KJEmSJEmaAq4yJkmSJEmS1DCOEJIkSZLUWJNeUEX9c9qhmq7zb2DxQkyjaJ8sCK1iNqCj02taniujSZIkSZKmkQUhrYhFJkmSJEmaLv4/Tt1YEJIkSdKKjGOKjf9ZkSRpsqauINTUzkJTf25JkiRJkjR6YysIRcR5wBXAEcBHMnP7uL6XpMJShcOrzzt6gknqzfZJUl2Nq30a9I2lQUb7+CaWxsnnV3XsP02Oz3NNyliWnY+II4APAa8ETgUuiohTx/G9JGklbJ8k1ZXtk6S6sn2SVqdxjRA6E9ibmQ8BRMQuYCNw35i+38AGnQNv1VaaWlPTPklqHNsnSXVl+6QnGce95DR5kZmj/6IRrwXOy8z/s3z8euBXM/N3O47ZAmwpHz4X+OrIg4zWccB3qw6xAuYdv2nL3G/ef56Zx487TFWGaJ+m7fcNZp4UM0/GccDRtk+V9p/q/rypc746ZwPzDWMhm/2n0bZP0/A7r6s656tzNli9+Xq2T5XdVDozdwA7qvr+KxURd2bmbNU5+mXe8Zu2zNOWt0rd2qdpvH5mngwzT0aZeX3VOapWZf+p7s+bOuerczYw3zDqnG3SRtk+1fm61jkb1DtfnbNBM/ON5R5CwAHgpI7H68ptklQ12ydJdWX7JKmubJ+kVWhcBaF/AE6JiJMj4inAhcBNY/pekrQStk+S6sr2SVJd2T5Jq9BYpoxl5nxE/C7wnymWJfxoZt47ju81QVMzva1k3vGbtszTlncshmifpvH6mXkyzDwZ05h5Raag/1T330Gd89U5G5hvGHXONjIVtE91vq51zgb1zlfnbNDAfGO5qbQkSZIkSZLqa1xTxiRJkiRJklRTFoQkSZIkSZIaxoJQFxHx0Yg4FBH3dNm3NSIyIo6rIls3vfJGxJsj4oGIuDci/riqfIt1yxsRp0fE7RFxV0TcGRFnVpmxU0ScFBG3RcR95bV8S7n9WRFxS0Q8WP77zKqzwpJ531s+H+6OiBsiYm3VWadBRJwXEV+NiL0Rsa3qPP2IiH0RsWfh76nqPN30aAdq+Te1oEfm/yciDpTX+q6IeFWVGRebtvYLlsxc62u92kXEERHx5Yj4VNVZFqt7mxcRayPi+vI1+P6IeEnVmRZExHM7/qbuiogfRMRbq861ICJ+v2wH7omIayPiaVVn6hQRbymz3Vun61Z3K31tisIHyr7Y3RFxxpjzPS0ivhgRXynzvbvcfnJE3FHm+HgUN9cmIp5aPt5b7l8/znzl93xSm1yzbIe1yTX63R7WHtcoW9f2eNz5LAh1dzVw3uKNEXES8OvAtyYdaBlXsyhvRJwNbARemJnPB/5DBbl6uZrDr+8fA+/OzNOBd5aP62Ie2JqZpwJnAW+KiFOBbcCtmXkKcGv5uA565b0FOC0zXwB8DbiswoxTISKOAD4EvBI4FbiovJbT4OzMPD0zZ6sO0sPVHN4O1PVvasHVdHltAN5XXuvTM/PTE860nGlrv6B3Zqj3tV7t3gLcX3WIJdS5zbsC+ExmPg94ITW6jpn51YW/KeDFwI+AGyqOBUBEnAj8HjCbmadR3Mj4wmpT/VxEnAb8FnAmxe/11RHxnGpTTY2Vvja9Ejil/NgCXDnmfE8A52TmC4HTgfMi4izgPRSvQ88Bvg9cUh5/CfD9cvv7yuPGbXGbXKdscHibXJffbbf2uBbZlmiPx5rPglAXmfl54NEuu94HvA2o1Z24e+T9bWB7Zj5RHnNo4sF66JE3gV8sPz8W+K8TDbWEzDyYmV8qP/9HiobjRIqC287ysJ3ABdUkfLJeeTPzs5k5Xx52O7CuqoxT5Exgb2Y+lJk/AXZR/N41pB7tQC3/phYs8dpQW9PWfsGSmVWRiFgHnA98pOos0yYijgVeBlwFkJk/yczHqk3V07nA1zPzm1UH6bAGOCoi1gBPp0b9Q+B/Au7IzB+V/au/A/63ijNNhQFemzYCH8vC7cDaiDhhjPkyM+fKh0eWHwmcA1zfI99C7uuBcyMixpVvcZtcfq9aZFtC5b/bJdrjyrN10dkejzWfBaE+RcRG4EBmfqXqLH36F8D/XA4N/LuI+JdVB1rGW4H3RsS3KUYz1XL0SjnM8kXAHcBMZh4sdz0MzFQUq6dFeTv9JvA3k84zhU4Evt3xeD/T8R/TBD4bEbsjYkvVYVag9n9TPfxuOVT3o1GjqVeLTVv7BV3bsKm41qvQ+yneEPvvVQfpoc5t3snAd4C/KKd3fCQijq46VA8XAtdWHWJBZh6g6BN+CzgIPJ6Zn6021ZPcQ9HXfnZEPB14FXBSxZmmTp+vTRPvj5VTsu4CDlGMsv868FjHm6udGX6Wr9z/OPDsMcZb3CY/u0bZoHubXIffba/2uA7ZFutsj8eaz4JQH8pG/u0UU5mmxRrgWRTDMP8dcF1F1eB+/Tbw+5l5EvD7lJXbOomIY4C/Bt6amT/o3JeZSc1GjvXKGxHvoBiqe01V2TR2v5aZZ1AMJX1TRLys6kArVce/qR6uBH6FYkj5QeDyauN0N23tF3TNPBXXerWJiFcDhzJzd9VZllDnNm8NcAZwZWa+CPgh9ZqiCUAU9xt5DfCJqrMsKIu+Gyn+E/fPgKMj4v+oNtXPZeb9FNNvPgt8BrgL+GmloaZMnV+bMvOn5dSddRQjxp9XVZZOq6FNrvB3u2x7XPXzDpZuj8eRz4JQf36F4sXoKxGxj6Jh+FJE/A+VplrafuCT5RCyL1JUkGtzI+wuLgY+WX7+CYqGtzYi4kiKF6xrMnMh5yMLw/LKf2szLa9HXiJiM/BqYFPZoGhpB3jyu33rym21Vr6rujBV9AZq9ve0hNr+TfWSmY+Uncb/Dvw5NbzW09Z+QffM03CtV6mXAq8p+z+7gHMi4q+qjfRkNW/z9gP7M3NhlNv1FP8hqZtXAl/KzEeqDtLh5cA3MvM7mflPFP3Ef1VxpifJzKsy88WZ+TKK+7Z8repM02KFr02V9cfKKUW3AS+hmJKzpkuGn+Ur9x8LfG9MkQ5rkynui1OHbEDPNrkOv9te7XEdsnVa3B6PNZ8FoT5k5p7M/KXMXJ+Z6ymeTGdk5sMVR1vKfwLOBoiIfwE8BfhupYmW9l+Bf11+fg7wYIVZnqQcWXUVcH9m/knHrpsoClmU/9446Wzd9MobEedRDC99TWb+qKp8U+YfgFOiWLnhKRTDN2+qONOSIuLoiHjGwucUN8I/bMXEmqrl39RSFs3V/g1qdq2nrf2CJduwWl/r1SozL8vMdWX/50Lgc5lZm1EadW/zyr7ityPiueWmc4H7KozUy0XUaLpY6VvAWRHx9LJdOJca3ZAbICJ+qfz3f6S4f9B/rDbRdBjgtekm4A1ROIti+uBBxiQijo9yNd6IOAp4BcVz7zbgtT3yLeR+LUU7OZY3Xnu0yZvqkA2WbJMr/90u0R5Xnm2Rxe3xePNlph+LPspfwEHgnyiKP5cs2r8POK7qnEvlpSgA/RXFH+CXKO6UX3nWJfL+GrAb+ArFHOIXV52zI++vUQzNu5tiOPBdFPPEn01xp/cHgb8FnlV11mXy7qWYZ7qw7cNVZ52Gj/LafY1i7vg7qs7TR95fLv+OvgLcW9fMPdqBWv5NLZP5L4E95d/bTcAJVedclHmq2q9lMtf6WjfhA2gBn6o6x6JMtW/zKKY53lk+d/8T8MyqMy3KdzTFiIFjq87SJdu7gQfK/uxfAk+tOtOifP+F4j+UXwHOrTrPtHys9LUJCIpVX79evg7MjjnfC4Avl/nuAd5Zbv9l4Itln/oTC89H4Gnl473l/l+e0HX8WZtcl2y92uQa/W4Pa4/rkq38noe1x+POF+UXkyRJkiRJUkM4ZUySJEmSJKlhLAhJkiRJkiQ1jAUhSZIkSZKkhrEgJEmSJEmS1DAWhCRJkiRJkhrGgpAkSZIkSVLDWBCSJEmSJElqGAtCkiRJkiRJDWNBSJIkSZIkqWEsCEmSJEmSJDWMBSFJkiRJkqSGsSAkSZIkSZLUMBaEJEmSJEmSGsaCkCRJkiRJUsNYEJIkSZIkEvHG4gAAGtNJREFUSWoYC0KSJEmSJEkNY0FIkiRJkiSpYSwISZIkSZIkNYwFIUmSJEmSpIaxICRJkiRJktQwFoQkSZIkSZIaxoKQJEmSJElSw1gQkiRJkiRJahgLQpIkSZIkSQ1jQUiSJEmSJKlhLAhJkiRJkiQ1jAUhSZIkSZKkhrEgJEmSJEmS1DAWhCRJkiRJkhrGgpAkSZIkSVLDWBCSJEmSJElqGAtCkiRJkiRJDWNBSJIkSZIkqWEsCEmSJEmSJDWMBSFJkiRJkqSGsSAkSZIkSZLUMBaE1LeI2BQRc10+MiLeGRHtiPhvEXFSxzkvj4h9FcaWJEmSJEmLWBBS3zLzmsw8pvMDeCvwCPDn5WE/BP7vykJKkiRJkqRlWRDSwCLiRcD7gQsz82C5+QPARRHxK9UlkyRJkiRJS7EgpIFExFrgeuD/zcx2x64DFKOF3l1FLkmSJEmStLw1VQfQ9ImIAD4G3AP8cZdD/j9gb0Q8f6LBJEmSJElSXxwhpEFcCjwfuDgzc/HOzPwO8KfAv590MEmSJEmStDxHCGlFIqIFvAN4WWY+tsSh7wUeAr44iVySJEmSJKl/jhBS3yLiBGAX8NbM/PJSx5bFosuBt00imyRJkiRJ6p8FIa3EbwEzwBURMbfo48Ndjr8C+OlkI0qSJEmSpOVEl1vASJIkSZIkaRVzhJAkSZIkSVLDWBCSJEmSJElqGAtCkiRJkiRJDWNBSJIkSZIkqWHWVB0A4Ljjjsv169f3dewPf/hDjj766PEGGpIZR2cack5DRug/5+7du7+bmcdPIJIkSZIkqSK1KAitX7+eO++8s69j2+02rVZrvIGGZMbRmYac05AR+s8ZEd8cfxpJkiRJUpWcMiZJkiRJktQwFoQkSZIkSZIaxoKQJEmSJElSw1gQkiRJkiRJahgLQpIkSZIkSQ1jQUiSJEmSJKlhLAhJkiRJkiQ1jAUhSZIkSZKkhllTdYCV2nPgcTZvu/mw7fu2n19BGkmSJEmSpOnjCCFJkiRJkqSGsSAkSZIkSZLUMBaEJEmSJEmSGsaCkCRJkiRJUsNYEJIkSZIkSWoYC0KSJEmSJEkNY0FIkiRJkiSpYSwISZIkSZIkNYwFIUmSJEmSpIZZtiAUEU+LiC9GxFci4t6IeHe5/eqI+EZE3FV+nF5uj4j4QETsjYi7I+KMcf8QkiRJkiRJ6t+aPo55AjgnM+ci4kjgCxHxN+W+f5eZ1y86/pXAKeXHrwJXlv9KkiRJkiSpBpYdIZSFufLhkeVHLnHKRuBj5Xm3A2sj4oTho0qSJEmSJGkUInOp2k55UMQRwG7gOcCHMvPSiLgaeAnFCKJbgW2Z+UREfArYnplfKM+9Fbg0M+9c9DW3AFsAZmZmXrxr166+Ah969HEe+fHh2zeceGxf50/C3NwcxxxzTNUxljQNGWE6ck5DRug/59lnn707M2cnEEmSJEmSVJF+poyRmT8FTo+ItcANEXEacBnwMPAUYAdwKfDv+/3GmbmjPI/Z2dlstVp9nffBa27k8j2Hx963qb/zJ6HdbtPvz1OVacgI05FzGjLC9OSUJEmSJI3filYZy8zHgNuA8zLzYDkt7AngL4Azy8MOACd1nLau3CZJkiRJkqQa6GeVsePLkUFExFHAK4AHFu4LFBEBXADcU55yE/CGcrWxs4DHM/PgWNJLkiRJkiRpxfqZMnYCsLO8j9AvANdl5qci4nMRcTwQwF3Avy2P/zTwKmAv8CPgjaOPLUmSJEmSpEEtWxDKzLuBF3XZfk6P4xN40/DRJEmSJEmSNA4ruoeQJEmSJEmSpp8FIUmSJEmSpIaxICRJkiRJktQwFoQkSZIkSZIaxoKQJEmSJElSw1gQkiRJkiRJahgLQpIkSZIkSQ1jQUiSJEmSJKlhLAhJkiRJkiQ1jAUhSZIkSZKkhrEgJEmSJEmS1DAWhCRJkiRJkhrGgpAkSZIkSVLDWBCSJEmSJElqGAtCkiRJkiRJDWNBSJIkSZIkqWEsCEmSJEmSJDWMBSFJkiRJkqSGsSAkSZIkSZLUMMsWhCLiaRHxxYj4SkTcGxHvLrefHBF3RMTeiPh4RDyl3P7U8vHecv/68f4IkiRJkiRJWol+Rgg9AZyTmS8ETgfOi4izgPcA78vM5wDfBy4pj78E+H65/X3lcZIkSZIkSaqJZQtCWZgrHx5ZfiRwDnB9uX0ncEH5+cbyMeX+cyMiRpZYkiRJkiRJQ4nMXP6giCOA3cBzgA8B7wVuL0cBEREnAX+TmadFxD3AeZm5v9z3deBXM/O7i77mFmALwMzMzIt37drVV+BDjz7OIz8+fPuGE4/t6/xJmJub45hjjqk6xpKmISNMR85pyAj95zz77LN3Z+bsBCJJkiRJkiqypp+DMvOnwOkRsRa4AXjesN84M3cAOwBmZ2ez1Wr1dd4Hr7mRy/ccHnvfpv7On4R2u02/P09VpiEjTEfOacgI05NTkiRJkjR+K1plLDMfA24DXgKsjYiFysw64ED5+QHgJIBy/7HA90aSVpIkSZIkSUPrZ5Wx48uRQUTEUcArgPspCkOvLQ+7GLix/Pym8jHl/s9lP/PSJEmSJEmSNBH9TBk7AdhZ3kfoF4DrMvNTEXEfsCsi/hD4MnBVefxVwF9GxF7gUeDCMeSWJEmSJEnSgJYtCGXm3cCLumx/CDizy/b/BvzvI0knSZIkSZKkkVvRPYQkSZIkSZI0/SwISZIkSZIkNYwFIUmSJEmSpIaxICRJkiRJktQwFoQkSZIkSZIaxoKQJEmSJElSw1gQkiRJkiRJahgLQpIkSZIkSQ1jQUiSJEmSJKlhLAhJkiRJkiQ1jAUhSZIkSZKkhrEgJEmSJEmS1DAWhCRJkiRJkhrGgpAkSZIkSVLDWBCSJEmSJElqGAtCkiRJkiRJDWNBSJIkSZIkqWEsCEmSJEmSJDWMBSFJkiRJkqSGWbYgFBEnRcRtEXHf/9/e/cVadpbnAX9e2ZA0TOSxS3vkjN3aVaepHKwYfOS4IqrOhLYxJqqJFDlGLjiEaHJhVFJRNYYbUkWWXCmGBpOiTrCLUVwmlnHqkeOkcqdMKRcmYEAe/wliBEPskTMTajNhikVq+vZirykn83d7ztlnn836/aSjvde31tr72Z81F3601req6qmqes8w/htVdaiqvjz8Xb/qnPdV1YGq+kpV/ewsfwAAAAAAr8z5UxzzcpL3dvcXq+pHkzxeVY8O+z7U3b+1+uCquiLJTUl+IsmPJflvVfUPuvt76xkcAAAAgHNz1iuEuvv57v7i8P7bSZ5Jsu0Mp9yQZHd3f7e7v57kQJJr1iMsAAAAAGv3itYQqqrLkrw+yeeGoXdX1RNVdU9VXTiMbUvy7KrTnsuZCyQAAAAANlB193QHVm1J8j+S3N7dD1bVUpJvJukkv5nk4u7+5ar6SJLHuvv3hvPuTvJH3f3ACZ+3M8nOJFlaWrp69+7dU+U48sLRHH7p5PErt10w1fkb4dixY9myZcu8Y5zRImRMFiPnImRMps+5Y8eOx7t7eQMiAQAAMCfTrCGUqnpVkk8lua+7H0yS7j68av/vJnl42DyU5NJVp18yjP013b0rya4kWV5e7pWVlakC33XfQ7lz/8mxD9483fkbYd++fZn298zLImRMFiPnImRMFicnAAAAszfNU8Yqyd1JnunuD64av3jVYT+f5Mnh/Z4kN1XVD1XV5Um2J/mT9YsMAAAAwFpMc4XQG5O8Pcn+qvryMPb+JG+rqqsyuWXsYJJfTZLufqqq7k/ydCZPKLvVE8YAAAAANo+zFkLd/dkkdYpdj5zhnNuT3L6GXAAAAADMyCt6yhgAAAAAi08hBAAAADAyCiEAAACAkVEIAQAAAIyMQggAAABgZBRCAAAAACOjEAIAAAAYGYUQAAAAwMgohAAAAABGRiEEAAAAMDIKIQAAAICRUQgBAAAAjIxCCAAAAGBkFEIAAAAAI6MQAgAAABgZhRAAAADAyCiEAAAAAEZGIQQAAAAwMgohAAAAgJFRCAEAAACMzFkLoaq6tKo+XVVPV9VTVfWeYfyiqnq0qr46vF44jFdVfbiqDlTVE1X1hln/CAAAAACmN80VQi8neW93X5Hk2iS3VtUVSW5Lsre7tyfZO2wnyZuTbB/+dib56LqnBgAAAOCcnbUQ6u7nu/uLw/tvJ3kmybYkNyS5dzjs3iRvHd7fkOQTPfFYkq1VdfG6JwcAAADgnFR3T39w1WVJPpPkdUn+rLu3DuOV5MXu3lpVDye5o7s/O+zbm+TXu/sLJ3zWzkyuIMrS0tLVu3fvnirDkReO5vBLJ49fue2CqX/HrB07dixbtmyZd4wzWoSMyWLkXISMyfQ5d+zY8Xh3L29AJAAAAObk/GkPrKotST6V5Ne6+y8nHdBEd3dVTd8sTc7ZlWRXkiwvL/fKyspU591130O5c//JsQ/ePN35G2Hfvn2Z9vfMyyJkTBYj5yJkTBYnJwAAALM31VPGqupVmZRB93X3g8Pw4eO3gg2vR4bxQ0kuXXX6JcMYAAAAAJvANE8ZqyR3J3mmuz+4ateeJLcM729J8tCq8XcMTxu7NsnR7n5+HTMDAAAAsAbT3DL2xiRvT7K/qr48jL0/yR1J7q+qdyX5RpIbh32PJLk+yYEk30nyznVNDAAAAMCanLUQGhaHrtPsftMpju8kt64xFwAAAAAzMtUaQgAAAAD84FAIAQAAAIyMQggAAABgZBRCAAAAACOjEAIAAAAYGYUQAAAAwMgohAAAAABGRiEEAAAAMDIKIQAAAICRUQgBAAAAjIxCCAAAAGBkFEIAAAAAI6MQAgAAABgZhRAAAADAyCiEAAAAAEZGIQQAAAAwMgohAAAAgJFRCAEAAACMjEIIAAAAYGTOWghV1T1VdaSqnlw19htVdaiqvjz8Xb9q3/uq6kBVfaWqfnZWwQEAAAA4N9NcIfTxJNedYvxD3X3V8PdIklTVFUluSvITwzn/oarOW6+wAAAAAKzdWQuh7v5Mkhem/Lwbkuzu7u9299eTHEhyzRryAQAAALDO1rKG0Lur6onhlrILh7FtSZ5ddcxzwxgAAAAAm0R199kPqrosycPd/bpheynJN5N0kt9McnF3/3JVfSTJY939e8Nxdyf5o+5+4BSfuTPJziRZWlq6evfu3VMFPvLC0Rx+6eTxK7ddMNX5G+HYsWPZsmXLvGOc0SJkTBYj5yJkTKbPuWPHjse7e3kDIgEAADAn55/LSd19+Pj7qvrdJA8Pm4eSXLrq0EuGsVN9xq4ku5JkeXm5V1ZWpvruu+57KHfuPzn2wZunO38j7Nu3L9P+nnlZhIzJYuRchIzJ4uQEAABg9s7plrGqunjV5s8nOf4Esj1JbqqqH6qqy5NsT/Ina4sIAAAAwHo66xVCVfXJJCtJXltVzyX5QJKVqroqk1vGDib51STp7qeq6v4kTyd5Ocmt3f292UQHAAAA4FyctRDq7redYvjuMxx/e5Lb1xIKAAAAgNlZy1PGAAAAAFhACiEAAACAkVEIAQAAAIyMQggAAABgZBRCAAAAACOjEAIAAAAYGYUQAAAAwMgohAAAAABGRiEEAAAAMDIKIQAAAICRUQgBAAAAjIxCCAAAAGBkFEIAAAAAI6MQAgAAABgZhRAAAADAyCiEAAAAAEZGIQQAAAAwMgohAAAAgJFRCAEAAACMjEIIAAAAYGTOWghV1T1VdaSqnlw1dlFVPVpVXx1eLxzGq6o+XFUHquqJqnrDLMMDAAAA8MpNc4XQx5Ncd8LYbUn2dvf2JHuH7SR5c5Ltw9/OJB9dn5gAAAAArJezFkLd/ZkkL5wwfEOSe4f39yZ566rxT/TEY0m2VtXF6xUWAAAAgLWr7j77QVWXJXm4u183bH+ru7cO7yvJi929taoeTnJHd3922Lc3ya939xdO8Zk7M7mKKEtLS1fv3r17qsBHXjiawy+dPH7ltgumOn8jHDt2LFu2bJl3jDNahIzJYuRchIzJ9Dl37NjxeHcvb0AkAAAA5uT8tX5Ad3dVnb1VOvm8XUl2Jcny8nKvrKxMdd5d9z2UO/efHPvgzdOdvxH27duXaX/PvCxCxmQxci5CxmRxcgIAADB75/qUscPHbwUbXo8M44eSXLrquEuGMQAAAAA2iXMthPYkuWV4f0uSh1aNv2N42ti1SY529/NrzAgAAADAOjrrLWNV9ckkK0leW1XPJflAkjuS3F9V70ryjSQ3Doc/kuT6JAeSfCfJO2eQGQAAAIA1OGsh1N1vO82uN53i2E5y61pDAQAAADA753rLGAAAAAALSiEEAAAAMDIKIQAAAICRUQgBAAAAjIxCCAAAAGBkFEIAAAAAI6MQAgAAABgZhRAAAADAyCiEAAAAAEZGIQQAAAAwMgohAAAAgJFRCAEAAACMjEIIAAAAYGQUQgAAAAAjoxACAAAAGBmFEAAAAMDIKIQAAAAARkYhBAAAADAyCiEAAACAkTl/LSdX1cEk307yvSQvd/dyVV2U5PeTXJbkYJIbu/vFtcUEAAAAYL2sxxVCO7r7qu5eHrZvS7K3u7cn2TtsAwAAALBJzOKWsRuS3Du8vzfJW2fwHQAAAACco+rucz+56utJXkzSSf5jd++qqm9199ZhfyV58fj2CefuTLIzSZaWlq7evXv3VN955IWjOfzSyeNXbrvgXH/Gujt27Fi2bNky7xhntAgZk8XIuQgZk+lz7tix4/FVV/wBAADwA2hNawgl+enuPlRVfzvJo1X1p6t3dndX1Skbp+7elWRXkiwvL/fKyspUX3jXfQ/lzv0nxz5483Tnb4R9+/Zl2t8zL4uQMVmMnIuQMVmcnAAAAMzemm4Z6+5Dw+uRJH+Q5Jokh6vq4iQZXo+sNSQAAAAA6+ecC6Gqek1V/ejx90n+WZInk+xJcstw2C1JHlprSAAAAADWz1puGVtK8geTZYJyfpL/3N1/XFWfT3J/Vb0ryTeS3Lj2mAAAAACsl3MuhLr7a0l+8hTj/yvJm9YSCgAAAIDZmcVj5wEAAADYxBRCAAAAACOjEAIAAAAYmbUsKs1p7D90NL902x+ect/BO96ywWkAAAAA/jpXCAEAAACMjEIIAAAAYGQUQgAAAAAjoxACAAAAGBmFEAAAAMDIKIQAAAAARkYhBAAAADAyCiEAAACAkVEIAQAAAIzM+fMOAItu/6Gj+aXb/vCU+w7e8ZYNTgMAAABn5wohAAAAgJFRCAEAAACMjEIIAAAAYGRGv4bQZadZ+yWZzfov5/p9G50TAAAA+MHlCiEAAACAkZnZFUJVdV2S305yXpKPdfcds/qusTvd1UNnunLoTE/GOhNXIwEAAMDim0khVFXnJfmdJP80yXNJPl9Ve7r76Vl8H/ygcYsgAAAAszSrK4SuSXKgu7+WJFW1O8kNSRRCZ3CmEmARnGv+c72S6VyKkVlk3GjKIgAAANZqVoXQtiTPrtp+LslPzei75uJM/1P+3is3MAib2mZatPzj171m3b8PAACAxVTdvf4fWvULSa7r7l8Ztt+e5Ke6+92rjtmZZOew+eNJvjLlx782yTfXMe4syLh+FiHnImRMps/5d7v7b806DAAAAPMzqyuEDiW5dNX2JcPY/9fdu5LseqUfXFVf6O7ltcWbLRnXzyLkXISMyeLkBAAAYPZm9dj5zyfZXlWXV9Wrk9yUZM+MvgsAAACAV2AmVwh198tV9e4k/zWTx87f091PzeK7AAAAAHhlZnXLWLr7kSSPzOCjX/FtZnMg4/pZhJyLkDFZnJwAAADM2EwWlQYAAABg85rVGkIAAAAAbFILUwhV1XVV9ZWqOlBVt807T5JU1aVV9emqerqqnqqq9wzjF1XVo1X11eH1wnlnTZKqOq+qvlRVDw/bl1fV54Y5/f1hAfB55ttaVQ9U1Z9W1TNV9Y8241xW1b8a/ns/WVWfrKofnvdcVtU9VXWkqp5cNXbKuauJDw9Zn6iqN2xkVgAAAOZvIQqhqjovye8keXOSK5K8raqumG+qJMnLSd7b3VckuTbJrUOu25Ls7e7tSfYO25vBe5I8s2r73yX5UHf//SQvJnnXXFJ9328n+ePu/odJfjKTrJtqLqtqW5J/mWS5u1+XyaLpN2X+c/nxJNedMHa6uXtzku3D384kH92gjAAAAGwSC1EIJbkmyYHu/lp3/1WS3UlumHOmdPfz3f3F4f23MykwtmWS7d7hsHuTvHU+Cb+vqi5J8pYkHxu2K8nPJHlgOGSuOavqgiT/OMndSdLdf9Xd38omnMtMFmP/G1V1fpIfSfJ85jyX3f2ZJC+cMHy6ubshySd64rEkW6vq4o1JCgAAwGawKIXQtiTPrtp+bhjbNKrqsiSvT/K5JEvd/fyw68+TLM0p1mr/Psm/SfJ/h+2/meRb3f3ysD3vOb08yV8k+U/DbW0fq6rXZJPNZXcfSvJbSf4skyLoaJLHs7nm8rjTzd2m//cEAADAbC1KIbSpVdWWJJ9K8mvd/Zer9/XkMW5zfZRbVf1ckiPd/fg8c5zF+UnekOSj3f36JP87J9wetknm8sJMrrC5PMmPJXlNTr5Va9PZDHMHAADA5rEohdChJJeu2r5kGJu7qnpVJmXQfd394DB8+PgtOMPrkXnlG7wxyT+vqoOZ3G73M5ms17N1uO0pmf+cPpfkue7+3LD9QCYF0Waby3+S5Ovd/Rfd/X+SPJjJ/G6muTzudHO3af89AQAAsDEWpRD6fJLtw5OcXp3JIr575pzp+Do8dyd5prs/uGrXniS3DO9vSfLQRmdbrbvf192XdPdlmczdf+/um5N8OskvDIfNNWd3/3mSZ6vqx4ehNyV5OptsLjO5VezaqvqR4b//8ZybZi5XOd3c7UnyjuFpY9cmObrq1jIAAABGoCZ3kmx+VXV9JuvgnJfknu6+fc6RUlU/neR/Jtmf76/N8/5M1hG6P8nfSfKNJDd294kL/s5FVa0k+dfd/XNV9fcyuWLooiRfSvIvuvu7c8x2VSaLXr86ydeSvDOT0nJTzWVV/dskv5jJU+a+lORXMlmDZ25zWVWfTLKS5LVJDif5QJL/klPM3VBkfSSTW92+k+Sd3f2FjcoKAADA/C1MIQQAAADA+liUW8YAAAAAWCcKIQAAAICRUQgBAAAAjIxCCAAAAGBkFEIAAAAAI6MQAgAAABgZhRAAAADAyCiEAAAAAEbm/wH3+h2VYyTLfAAAAABJRU5ErkJggg==\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "_ = X.hist(X.columns, bins=30, figsize=(20, 20))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Линейные модели очень чувствительны к нормировке данных\n", "\n", "Давайте отнормируем признаки" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "from sklearn.preprocessing import StandardScaler\n", "\n", "scaler = StandardScaler()\n", "X_train[:] = scaler.fit_transform(X_train)\n", "X_test[:] = scaler.transform(X_test)" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "X[:] = scaler.fit_transform(X)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Обучим линейную регрессию" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "lr = LinearRegression()" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "lr.fit(X_train, y_train)\n", "y_pred = lr.predict(X_test)" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "MSE error:\t28.405854810508238\n" ] } ], "source": [ "print(\"MSE error:\\t{}\".format(mse(y_test, y_pred)))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Построим модель, предсказывающую log(y)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Почему это может сработать?\n", "Линейные модели хорошо улавливают линейные зависимости. Но в реальной жизни связи с таргетом могут быть нелинейны. Если есть знание о том, как лучше всего \"выпрямить\" признак или целевую переменную, то можно попробовать это сделать.\n", "В данном случае стоимость квартиры может быть менее линейно связана с признаками, чем порядок (log) этой стоимости.\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Возьмем один признак LSTAT и только на нем обучим модель предсказывать сначала y, а затем log(y)" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Text(0, 0.5, 'Target')" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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AdC79evXT5K0e/duXXDBBRGPXbFihRoaGgI/f/GLX1RdXV3c2vaVr3xFI0eO1F133dWt85966ik999xzMW5VaO3fm3CWLFmiO++8s9uvU11drSuvvDLiMT/5yU/0wAMPdPs1AABA6kpIAOuce8o5d57v+1ucc4/5vj/snJvtnDvROXeqc+4fiWgPgMzW0tLS5XMGDRqk3/3udxGPaR+k/eEPf1BBQUGXXysa//rXv/TSSy/p1Vdf1Q033BDVOc3NzW1+7k4A2/4a0Yo2gO2p733ve7ruuusiHnPFFVfonnvuiXtbAABA4iV8BBZA71FRU6GSFSXKui1LJStKVFFT0aPrbd++XSeddJI8Ho+GDRumCy64IBA0lZSU6KabbtIpp5yiRx55RO+++67OOeccjR07VmeccYbefPNNSdK2bds0fvx4lZaW6uabb25z7REjRkjyBsDf/OY3NWLECI0cOVL33HOPfvzjH2v37t0688wzdeaZZwZec+9eb9H0H/3oRxoxYoRGjBihFStWBK45bNgwffWrX9Xw4cN19tlnq7GxUZL04x//WCeffLJGjhypiy++uMO9nn322aqtrdXo0aP1zDPPaOvWrTr99NM1cuRInX/++dq/f78k6Qtf+IK+/vWva9y4cbr77rvb3M99992nu+66K3CNdevW6bTTTtOYMWM0ZcoUvf/++5K8o6KXXHKJJkyYoEsuuUQNDQ268MILdfLJJ+v888/XaaedpqqqKknSk08+qfHjx+uUU07R7NmzdfDgwZDvTTTC3dNLL72kkSNHavTo0VqwYEHg93LgwAG9+uqrGjVqlFpbW/XZz35We/bskSS1trbqxBNP1J49e5Sfn6+SkhK9+OKLUbcFAACkCedcWn2NHTvWAUiO119/Pepj17y6xuUvzXdaosBX/tJ8t+bVNd1+/W3btjlJ7tlnn3XOOXf55Ze75cuXO+ecGzx4sPv+978fOHbSpEnu7bffds459/zzz7szzzzTOefc9OnT3erVq51zzv3kJz9xffv2DVx7+PDhzjnnysvL3Ze//GXX1NTknHNu3759gdfYs2dP4DX8P1dVVbkRI0a4gwcPugMHDriTTz7Zvfzyy27btm0uOzvbVVdXO+ecmz17tnvooYecc859+tOfdocPH3bOObd///6Q9+pvj3POlZaWuqeeeso559y3v/1td/311zvnnJs4caKbN29eyPfr1ltvDbw/zjn34YcfutbWVueccz/96U/djTfeGDjulFNOcQ0NDc4555YvX+7Kysqcc87V1NS47Oxs99JLL7k9e/a4M844wx08eNA559yyZcvcbbfdFvK9ufLKK91LL70UsU3h7mn48OHuueeec845d9NNNwXeh02bNrlZs2YFrrVkyRJ31113Oeece+KJJ9rsu/32292dd97Z4fVD/Q1LqnIp0L+l8xd9MwAgliL1zYzAAoiLxRsXq6GpbUppQ1ODFm9c3KPrnnDCCZowYYIkac6cOXr22WcD+y666CJJ0sGDB/Xcc89p9uzZGj16tK6++mq99957kqTNmzfrK1/5iiTpkksuCfkaGzZs0NVXX62cHO9S2UcffXTENj377LM6//zz1bdvX/Xr10+zZs3SM888I0kaMmSIRo8eLUkaO3astm/fLkkaOXKkPB6P1qxZE3idcOrr61VXV6eJEydKkubOnau//vWvHe67M7t27dLUqVNVWlqq5cuX67XXXgvsmzFjhvLy8gL34x8V9o9CS9Lzzz+v119/XRMmTNDo0aO1evVq7dixI+Rr/exnP9O4ceO6fE91dXU6cOCAxo8fL0n6z//8z8A57733noKXUrviiiv0y1/+UpL0wAMP6PLLLw/sO/bYY7V79+6o3hcAAJA+In9qAoBu2lm/s0vbo9V+KZTgn/v27SvJm05aUFCgrVu3RnWNeDryyCMD32dnZwdSiNevX6+//vWvWrdunZYuXaqamppOA9lw/PfdmWuvvVY33nijZsyYoaeeekpLlizp0jWcczrrrLP061//ulvt7Km8vLw267iecMIJOu6447Rp0ya9+OKLqqj4JEX98OHDgYAcAABkDkZgAcRFcf/iLm2P1s6dO/W///u/kqRf/epX+vznP9/hmE996lMaMmSIHnnkEUnewOuVV16RJE2YMEG/+c1vJKlNwBPsrLPO0v333x8oaPThhx9Kko466igdOHCgw/FnnHGGKisr1dDQoEOHDunRRx/VGWecEfYeWltb9c9//lNnnnmmvv/976u+vl4HDx4Me3z//v01YMCAwKjuQw89FBi5jKR9e+vr61VUVCRJWr16ddjzJkyYoN/+9reSpNdff101NTWSpNNPP12bN2/WO++8I0k6dOiQ3n777ZCv1Zlw91RQUKCjjjpKL7zwgiQFfleSNGzYsMBr+1111VWaM2eOZs+erezs7MD2t99+OzB3FgAAZA4CWABxsXTyUuXn5rfZlp+br6WTl/boukOHDtW9996rYcOGaf/+/Zo3b17I4yoqKvTzn/9co0aN0vDhw/X73/9eknT33Xfr3nvvVWlpqWpra0Oee9VVV6m4uFgjR47UqFGj9Ktf/UqSVFZWpnPOOadDoaJTTjlFl112mU499VSddtppuuqqqzRmzJiw99DS0qI5c+aotLRUY8aM0XXXXddpNePVq1drwYIFGjlypLZu3apbbrkl4vGSNH36dD366KOBIk5LlizR7NmzNXbsWA0cODDsefPnz9eePXt08skn6+abb9bw4cPVv39/HXPMMXrwwQcDy/uMHz8+UByr/Xtz1VVXBQo/dfWefv7zn+urX/2qRo8erUOHDql///6SpJNOOkn19fVtAuUZM2bo4MGDbdKHJW+q+FlnndXpewQAANKLeefIpo9x48a5zj4UAYiPN954Q8OGDYv6+IqaCi3euFg763equH+xlk5eKk+pp9uvv337dp133nn629/+1u1roHMtLS1qampSnz599O6772rKlCl66623dMQRRyTk9Q8ePBhYn3fZsmV67733AhWW77rrLh111FG66qqrJElVVVW64YYbAiO5knet2B/96Ed66KGHOlw71N+wmW1xzoWfsItO0TcDAGIpUt/MHFgAceMp9fQoYEVyNDQ06Mwzz1RTU5OccyovL09Y8Cp55wffcccdam5u1uDBg/Xggw8G9s2bNy+QGr5s2TKtXLmyQyr43r179d3vfjdh7QUAAInDCCyAqHV1BBZINYzAxgd9MwAgliL1zcyBBQAAAACkBQJYAAAAAEBaIIAFAAAAAKSFXl/EqbK6VsufeEu76xo1qCBPC6YO1cwxRV0+LtrrpItMux8AQEdmtl3SAUktkpqdc+PM7GhJD0sqkbRd0oXOuf2JbBd9c2iZdj8A0B29egS2srpWi9bWqLauUU5SbV2jFq2tUWV1bZeOi/Y66SLT7geZo66uTuXl5cluRsCDDz6or33ta8luBtBTZzrnRgcVy1goaaNz7rOSNvp+Thj65tAy7X4AoLt6dQC7/Im31NjU0mZbY1OLlj/xVpeOi/Y66SLT7geZI1IA29zcnODWABnrS5JW+75fLWlmIl+cvjm0TLsfAOiuXh3A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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "column = 'LSTAT'\n", "\n", "lr.fit(X_train[[column]], y_train)\n", "y_pred = lr.predict(X_test[[column]])\n", "y_error = mse(y_test, y_pred)\n", "\n", "lr.fit(X_train[[column]], np.log(y_train))\n", "y_log_pred = np.exp(lr.predict(X_test[[column]]))\n", "y_log_error = mse(y_test, y_log_pred)\n", "\n", "f, arr = plt.subplots(ncols=2, figsize=(16, 10))\n", "for i in range(2):\n", " if i != 0:\n", " arr[i].scatter(X_test[column], np.log(y_pred) if i == 0 else y_pred, c='r')\n", " arr[i].scatter(X_test[column], np.log(y_log_pred) if i == 0 else y_log_pred, c='g')\n", " arr[i].scatter(X_test[column], np.log(y_test) if i == 0 else y_test)\n", "\n", "\n", " arr[i].set_xlabel(column)\n", " \n", "arr[0].set_title(u\"Предсказание логарифма\")\n", "arr[1].set_title(u\"Предсказание реального значения\")\n", "\n", "arr[0].legend(['predictions for target: log(y)', 'true values'])\n", "\n", "arr[1].legend(['predictions for target: y, mse: {}'.format(y_error),\n", " 'predictions for target: log(y), mse: {}'.format(y_log_error),\n", " 'true values'])\n", "arr[0].set_ylabel(\"log(Target)\")\n", "arr[1].set_ylabel(\"Target\")\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Видно, что переходя к предсказанию порядка величины, модель лучше описывает целевую переменную" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Теперь на всех факторах" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [], "source": [ "lr.fit(X_train, np.log(y_train))\n", "y_pred = np.exp(lr.predict(X_test))" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "MSE error:\t22.28602591973571\n" ] } ], "source": [ "print(\"MSE error:\\t{}\".format(mse(y_test, y_pred)))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "get_cv_score (реализована ниже) - считает ошибку модели на кросс валидации, опционально может прологарифмировать таргет.\n", "Также может служить примером работы с классом [KFold](http://scikit-learn.org/stable/modules/generated/sklearn.model_selection.KFold.html)\n", "Похожий функционал реализован в функции [cross_val_score](http://scikit-learn.org/stable/modules/generated/sklearn.model_selection.cross_val_score.html)" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "scrolled": true }, "outputs": [], "source": [ "from sklearn.model_selection import KFold\n", "\n", "\n", "def get_cv_score(model, X, y, log_y):\n", " errors = []\n", " kf = KFold(n_splits=100, shuffle=True, random_state=123)\n", " for train_index, test_index in kf.split(X):\n", " X_train, y_train = X.iloc[train_index], y[train_index]\n", " X_test, y_test = X.iloc[test_index], y[test_index]\n", "\n", " if log_y:\n", " model.fit(X_train, np.log(y_train))\n", " y_pred = np.exp(model.predict(X_test))\n", " else:\n", " model.fit(X_train, y_train)\n", " y_pred = model.predict(X_test)\n", " \n", " errors.append(mse(y_test, y_pred))\n", " return np.mean(errors)" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "19.475015360715588\n", "23.448545939673085\n" ] } ], "source": [ "print(get_cv_score(lr, X, y, log_y=True))\n", "print(get_cv_score(lr, X, y, log_y=False))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Посчитаем логарифмы для факторов" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Логарифмирование факторов часто помогает, если по своей природе фактор - некоторый счетчик (либо если есть иные причины полагать, что порядок величины и целевая переменная линейно скоррелированы)" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.0" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "scaler.inverse_transform(X).min()" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [], "source": [ "scaler_for_log = StandardScaler()\n", "\n", "log_X = pd.DataFrame(np.log(1. + scaler.inverse_transform(X)), columns=[\"log_\" + col for col in X.columns])\n", "log_X[:] = scaler_for_log.fit_transform(log_X)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Ошибка модели на исходных факторах" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/plain": [ "19.475015360715588" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "get_cv_score(lr, X, y, log_y=True)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Ошибка модели на логарифмических факторах" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "18.279862789286422" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "get_cv_score(lr, log_X, y, log_y=True)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Ошибка модели на исходных + логарифмических факторах" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "16.052598858538488" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "X_all = pd.merge(X, log_X, left_index=True, right_index=True)\n", "get_cv_score(lr, X_all, y, log_y=True)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Ошибка уменьшается. Таким образом, для линейной модели важно, насколько \"линейными\" являются данные на входе. Если есть знания о природе факторов и целевой переменной, можно попытаться нелинейными преобразованиями этих величин добиться улучшения качества линейной модели." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Важность факторов (коэффициенты линейной модели)" ] }, { "cell_type": "code", "execution_count": 21, "metadata": { "scrolled": false }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "def plot_bar(coefs, names):\n", " assert coefs.shape[0] == len(names)\n", " weights_df = pd.DataFrame(zip(coefs, names),\n", " columns=['weight', 'feature_name'])\n", " fig, ax = plt.subplots(figsize=(weights_df.shape[0] * 1, 7))\n", " sns.barplot(ax=ax, x=\"feature_name\", y=\"weight\", data=weights_df)\n", " return weights_df\n", "\n", "weights_df = plot_bar(lr.coef_, X_all.columns)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Будем добавлять факторы, начиная с самых больших по весу" ] }, { "cell_type": "code", "execution_count": 22, "metadata": { "scrolled": true }, "outputs": [], "source": [ "weights_df['abs_weight'] = weights_df['weight'].abs()\n", "weights_df.sort_values(by=['abs_weight'], ascending=False, inplace=True)" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [], "source": [ "mse_errors = []\n", "for i in range(1, weights_df.shape[0]):\n", " features_subset = weights_df.iloc[:i]['feature_name']\n", " mse_errors.append(get_cv_score(LinearRegression(), X_all[features_subset], y, log_y=True))\n", " " ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Text(0, 0.5, 'MSE')" ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYIAAAEGCAYAAABo25JHAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAgAElEQVR4nO3de5xU9X3/8ddn7+yyF2AXWFmUyy7ugiIi4g1tFDVGYzSJsdWYmkdsNWmM5GdNq8nv16b9NW3SJibVJKYYjWhN1Ca2yS+1Jla0Cii6yE1EBAUFBFyE5c5eZj6/P+YsrMiytzlz5vJ+PpzHnHPmzJzPYR7Oe7/ne873mLsjIiK5Ky/qAkREJFoKAhGRHKcgEBHJcQoCEZEcpyAQEclxBVEX0BfV1dU+bty4qMsQEckoS5Ys2e7uNb2tlxFBMG7cOJqbm6MuQ0Qko5jZ231ZT4eGRERynIJARCTHKQhERHKcgkBEJMcpCEREcpyCQEQkxykIRERynILgCL9btZV17+2JugwRkZRREHTzzJr3uOmhJXz7v16PuhQRkZRREAS27jrInz+2HIAX39pBRywecUUiIqmhIAA6Y3FueWQpB9pj3HbxJPa2dbJ8Y2vUZYmIpISCALhr/jpeWr+Dv7vyJD535jjM4Pm126MuS0QkJXI+CBat287d89fy6el1fPq0OipLC5k6ppIF6xQEIpIbcjoIWva0MefRZUyoLuNvr5hyaPmshmqWbWxl98GOCKsTEUmNnA2CeNy59bFl7D7QwQ+vnU5Z8eERuWfV1xCLOy+++X6EFYqIpEbOBsE9//Mmz6/dzl9fPoWm2ooPvDb9hCqGFOazUIeHRCQH5GQQvLxhB3c+9QYfn1rLNTPHfuj14oJ8zpgwnOcVBCKSA3IuCHbua+eWXyylbtgQ/uFTJ2NmR11vVn01b7Xs493WAymuUEQktXIqCNydr/1yOdv3tvHDa6ZTXlLY47qzGqoBWKDTSEUky+VUENy/cAP/vfo9vn5pEyfXVR5z3RNHlVNTXqzTSEUk6+VMECzf2Mq3/2s1F00exefPHtfr+mbGrPpqFq7bTjzu4RcoIhKRnAiC3Qc7uPkXr1AztJh/umpqj/0CR5pVX837+9pZvXV3yBWKiEQn64PA3bn9Vyt4t/Ugd197KlWlRX1+7zn16icQkeyX9UHw8OJ3eGLlVm67+EROO2F4v947urKEhpFD1U8gIlktq4PgtXd387e/fY3zJtVw03kTBvQZsxqqeWn9Dg52xJJcnYhIegg9CMws38yWmtlvg/nxZrbYzNaZ2aNm1vdjNf10/8L1VA0p5M6rTyEvr2/9Akc6t6Gats44S97emeTqRETSQypaBHOA1d3mvwN8393rgZ3ADWFt+NufOplHbzqL6qHFA/6MmeNHUJBnGpZaRLJWqEFgZnXAZcBPg3kDLgB+GawyD7gyrO0X5OcxvrpsUJ8xtLiA6ccPY8G6liRVJSKSXsJuEfwA+Aug676PI4BWd+8M5jcBY472RjO70cyazay5pSXaH+FZDdWsenc3O/a1R1qHiEgYQgsCM/s48J67LxnI+919rrvPcPcZNTU1Sa6uf2Y1VOMOi97U4SERyT5htgjOAT5hZhuAR0gcEvpnoMrMugb/rwM2h1hDUkwdU0l5SYGuJxCRrBRaELj7He5e5+7jgD8C5rv7Z4FngKuC1a4Hfh1WDclSkJ/HWRNG8Pza7bhruAkRyS5RXEfwl8CtZraORJ/BfRHU0G/nNlSzufUAG97fH3UpIiJJVdD7KoPn7s8CzwbTbwEzU7HdZJrVkOinWLBu+6DPRBIRSSdZfWVxMo0bUcqYqiEsWKvTSEUkuygI+sjMOLehmkVvvk9nLN77G0REMoSCoB/Oqa9mz8FOVmzeFXUpIiJJoyDoh3PqqzHTsNQikl0UBP0wvKyIKcdVaFhqEckqCoJ+mlVfw9J3drKvrbP3lUVEMoCCoJ/ObaimI+YsXv9+1KWIiCSFgqCfTjthGMUFeRqWWkSyhoKgn0oK85k5frg6jEUkaygIBmBWfTVr39vLtt0Hoy5FRGTQFAQDMKuhGtBppCKSHRQEA9A0uoIRZUU6jVREsoKCYADy8oyz66tZsE7DUotI5lMQDNC59dW07GnjjW17oy5FRGRQFAQD1NVP8LxGIxWRDKcgGKDjqoYwoaZM/QQikvEUBIMwq76axW/toK0zFnUpIiIDpiAYhFn11RzoiPHK261RlyIiMmAKgkE4c+II8vOMhTo8JCIZTEEwCBUlhUwbW8XzCgIRyWAKgkGaVV/Nyk2t7NrfEXUpIiIDoiAYpPMm1RB3+M3yzVGXIiIyIAqCQZp+fBUzThjG3fPXcaBdZw+JSOZREAySmfEXlzTy3p425r2wIepyRET6TUGQBDPHD+cjJ9Zwz7NvsuuA+gpEJLMoCJLktotPZNeBDu597q2oSxER6RcFQZKcNKaSj0+t5f6F62nZ0xZ1OSIifaYgSKJbL5pEW2ecHz2zLupSRET6LLQgMLMSM3vJzJab2Soz+5tg+QNmtt7MlgWPaWHVkGoTaobymdPqeHjx22zauT/qckRE+iTMFkEbcIG7nwJMAy4xszOD177m7tOCx7IQa0i5ORc2YGb84L/XRl2KiEifhBYEntB115bC4JH1t/OqrRzCH595Ao+/som12/ZEXY6ISK9C7SMws3wzWwa8Bzzl7ouDl75lZivM7PtmVtzDe280s2Yza25pyaybv/zZ+fWUFhXwvd+/EXUpIiK9CjUI3D3m7tOAOmCmmZ0E3AE0AqcDw4G/7OG9c919hrvPqKmpCbPMpBteVsSfnDueJ1dtZflGDVEtIuktJWcNuXsr8AxwibtvCQ4btQE/A2amooZUu2HWeIaVFvLd36+JuhQRkWMK86yhGjOrCqaHABcBr5tZbbDMgCuBV8OqIUrlJYV8+fx6nl+7nUVvaphqEUlfYbYIaoFnzGwF8DKJPoLfAg+b2UpgJVAN/F2INUTqujNPoLayhH98cg3uWd9PLiIZqiCsD3b3FcCpR1l+QVjbTDclhfnMmd3A7Y+v5KnXtnHxlNFRlyQi8iG6sjhkV51Wx/jqMr77+zXE4moViEj6URCErCA/j1svmsQb2/bq5jUikpYUBClw2cm1TK6t4M6n3qC9Mx51OSIiH6AgSIG8PONrl5zIxh0HePTld6IuR0TkAxQEKfKRSTXMHDecu+avY397Z9TliIgcoiBIEbNEq6BlTxsPLNoQdTkiIocoCFLo9HHDOf/EGn6iW1qKSBpREKTYbR89kd0HO5n73JtRlyIiAigIUm7KcZVcfspx3L9gA9v36paWIhI9BUEE5sxu4GBnjHuf143uRSR6CoII1I8cyuVTj+OhF95mx772qMsRkRynIIjILbPrOdChVoGIRE9BEJH6keV8fOpxzFu0Qa0CEYmUgiBCt1yQaBX8VK0CEYmQgiBCDaPKuezkWuYt2sBOtQpEJCIKgojdMruB/R0x7luwPupSRCRHKQgiNmlUOZeeVMsDizbQul+tAhFJPQVBGvjK7Hr2tnWqVSAikVAQpIHG0RVcevJoHlioVoGIpJ6CIE3cMruBPW2d3K9WgYikmIIgTTSOruCSKaP52cIN7NqvkUlFJHUUBGnkUKtgoVoFIpI6CoI0Mvm4Cj46ZRT3L1yv+xWISMooCNLMLbMb2HOwk5+pVSAiKaIgSDNTjqvkosmjuH/BenYfVKtARMKnIEhDc2Y3sPtgJw8s3BB1KSKSAxQEaeikMZVc2DSK+9QqEJEUUBCkqTmzG9h1oIN5ahWISMiOGQRmdl236XOOeO3mXt5bYmYvmdlyM1tlZn8TLB9vZovNbJ2ZPWpmRYPZgWx1cl0lsxtH8tMF69mjVoGIhKi3FsGt3abvPuK1L/Ty3jbgAnc/BZgGXGJmZwLfAb7v7vXATuCGftSbU+ZcmGgVPPjC21GXIiJZrLcgsB6mjzb/AZ6wN5gtDB4OXAD8Mlg+D7iyb6Xmnql1VVzQOJJ7n3+LvW2dUZcjIlmqtyDwHqaPNv8hZpZvZsuA94CngDeBVnfv+lXbBIzp4b03mlmzmTW3tLT0tqmsNWd2A637O5i3aEPUpYhIliro5fVGM1tB4q//icE0wfyE3j7c3WPANDOrAv4daOxrYe4+F5gLMGPGjF5DJ1udMraKj5xYw0+ff4vPnz2OsuIPf2UdsTj722Lsa+9kf3uM/e2d7GuL4Tgzxw2nIF/nBIhIz3oLgqZkbMTdW83sGeAsoMrMCoJWQR2wORnbyGZzZjfwyR8v4lM/XkRxYR772jo50B5jX/Cj3xHrOSfPP7GGH312OqVFvX3VIpKrjvnr4O4f6KU0sxHAecA77r7kWO81sxqgIwiBIcBFJDqKnwGuAh4Brgd+PfDyc8Opxw/jT88dz/KNuygtzqdu2BBKiwooK8qntLiA0sLEc1lRPkOK8ikrKqC0OJ/X3t3N3z+xmmvvXczPPn86w8p0gpaIfJi59/zXpJn9Frjd3V81s1rgFaAZmAjMdfcfHOO9U0l0BueT6It4zN3/1swmkAiB4cBS4Dp3bztWkTNmzPDm5ub+7ZkA8OSrW7nlkaWMHTaEB284gzFVQ6IuSURSxMyWuPuMXtfrJQhWufuUYPrrQKO7/7GZlQML3X1q0io+BgXB4Cx+633+5MFmyooKmPeFmZw4ujzqkkQkBfoaBL31Ina/kmk28ASAu+8B4gMvT1LpjAkjeOyms4i785mfLOLlDTuiLklE0khvQbDRzL5iZp8EpgNPAgTH/AvDLk6Sp6m2gl996WyqhxZz3U8X89Rr26IuSUTSRG9BcAMwBfg88Ifu3hosPxP4WYh1SQjGDi/l3754Fo21Fdz0UDOPvPRO1CWJSBo4Zh9BulAfQXLta+vkSw+/wnNvtHDbxZP48vn1mB3zQnERyUB97SM45umjZvabY73u7p/ob2ESvbLiAu67fgZ/8csVfPf3b9Cyp42/unwK+XkKA5Fc1NtVRmcBG4FfAIvpZXwhyRyF+Xl87zOnUD20iHufX8/2ve3c+YenUFyQH3VpIpJivQXBaBIXgl0DXAv8J/ALd18VdmESvrw84xuXTaamvJi/f+J1du5v518+dxrlJToPQCSXHLOz2N1j7v6ku19PooN4HfBsb/cikMxy43kTufPqU3hp/Q4+fc8inl69jUzoOxKR5Oh1ABozKwYuI9EqGAfcRWIAOckin5pex4ihxXzj31dyw7xmJtdW8JUL6vnolNHkqe9AJKv1dmXxg8BJJC4ke8TdX01VYd3prKHU6YjF+fWyd/nxM+t4a/s+GkYO5eYL6rns5FqNYiqSYZI1xEQc2BfMdl/RSNx7pmJQVfaRgiD1YnHnP1du4Yfz1/LGtr2MG1HKn51fzydPHUOhAkEkIyQlCNKFgiA68bjz+9e2cff8tax6dzdjqobwxY9M5DOn1VFSqDOMRNKZgkCSyt15dk0Ld81fy9J3WhlVUcyN503k2pnHM6RIgSCSjhQEEgp3Z9Gb73PX02tZvH4HI8qK+M6np3Lh5FFRlyYiR0jW6KMiH2BmnFNfzaM3ncVjN51FWXEBP3p2XdRlicggKAhkwGaOH84FjSNZs3UP8Xj6tyxF5OgUBDIojaPL2d8e450d+6MuRUQGSEEgg9JUmziDePWW3RFXIiIDpSCQQZk0qpw8g9Vb90RdiogMkIJABmVIUT7jqsvUIhDJYAoCGbSm2goFgUgGUxDIoE2urWDTzgPsPtgRdSkiMgAKAhm0xtHlAKxRP4FIRlIQyKB1nTn0ug4PiWQkBYEMWm1lCZVDCnlti1oEIplIQSCDZmY0ji5Xh7FIhlIQSFI01VZoqAmRDBVaEJjZWDN7xsxeM7NVZjYnWP5NM9tsZsuCx6Vh1SCp01RbzoGOGG9rqAmRjNPrPYsHoRP4c3d/xczKgSVm9lTw2vfd/bshbltSrPtQE+OryyKuRkT6I7QWgbtvcfdXguk9wGpgTFjbk2h1DTWhM4dEMk9K+gjMbBxwKrA4WHSzma0ws/vNbFgqapBwlRTmM766TGcOiWSg0IPAzIYCvwK+6u67gXuAicA0YAvwvR7ed6OZNZtZc0tLS9hlShI01Vbw+la1CEQyTahBYGaFJELgYXd/HMDdt7l7zN3jwL3AzKO9193nuvsMd59RU1MTZpmSJE0aakIkI4V51pAB9wGr3f3Obstru632SeDVsGqQ1GqqTQw18boOD4lklDDPGjoH+Byw0syWBcu+DlxjZtMABzYAN4VYg6TQoaEmtu5m5vjhEVcjIn0VWhC4+wLAjvLSE2FtU6I1uqKEqtJCXWEskmF0ZbEkTddQEzpzSCSzKAgkqZpqK3hj6x5iGmpCJGMoCCSpmmorEkNNvL8v6lJEpI8UBJJUTaO7Oox1eEgkUygIJKkaRg0lP8/UYSySQRQEklQlhflMqC5TEIhkEAWBJF1jbQWrdeaQSMZQEEjSNdWWs7n1ALsOaKgJkUygIJCk67rCeI06jEUygoJAkq7rzCH1E4hkBgWBJN2oimKGaagJkYyhIJCkSww1UcFqHRoSyQgKAglFU20Fa7bu1lATIhlAQSChaKot52BHnA0aakIk7SkIJBSH7k2g6wlE0p6CQEJRP1JDTYhkCgWBhKKkMJ+JNWW6mb1IBlAQSGgaR2uoCZFMoCCQ0DTVViSGmtivoSZE0pmCQELTVFsOoMNDImlOQSCh6TpzSB3GIulNQSChGVlezPCyIvUTiKQ5BYGExsxoqi3XoSGRNKcgkFA1jq5gzbY9GmpCJI0pCCRUTbUVGmpCJM0pCCRUXWcOqcNYJH0pCCRU9SOHUqChJkTSmoJAQlVckM/EmqEafE4kjYUWBGY21syeMbPXzGyVmc0Jlg83s6fMbG3wPCysGiQ9NNaWq0UgksbCbBF0An/u7pOBM4Evm9lk4HbgaXdvAJ4O5iWLNdVW8O6ug7Tub4+6FBE5itCCwN23uPsrwfQeYDUwBrgCmBesNg+4MqwaJD0cujeBbl0pkpZS0kdgZuOAU4HFwCh33xK8tBUY1cN7bjSzZjNrbmlpSUWZEpKm0TpzSCSdhR4EZjYU+BXwVXf/wC+Buztw1CuN3H2uu89w9xk1NTVhlykhqikvZkRZkTqMRdJUqEFgZoUkQuBhd388WLzNzGqD12uB98KsQaKXGGqigtUaakIkLYV51pAB9wGr3f3Obi/9Brg+mL4e+HVYNUj6aBxdzpqte+iMxaMuRUSOEGaL4Bzgc8AFZrYseFwKfBu4yMzWAhcG85LlmmoraOuMs+H9/VGXIiJHKAjrg919AWA9vDw7rO1Keup+b4L6kUMjrkZEutOVxZISE0eWaagJkTSlIJCUKC7Ip37kUF1LIJKGFASSMk21FWoRiKQhBYGkTOPocrZoqAmRtKMgkJQ53GGsw0Mi6URBICnT/cyhsBzsiPHLJZu4+icv8OWfv6LWh0gfhHb6qMiRasqLqR5aFMrN7N9+fx8PL36Hx5o30rq/gwnVZSzduJOVm3bxk+tOY/JxFUnfpki2UBBISiU6jJNzaCgWd+a//h4Pvfg2z73RQkGe8dEpo7nuzBM4c8Jwlm5s5Uv/uoRP3bOQ73x6KldMG5OU7YpkGwWBpFTj6HLmvfA2nbE4BfkDOzLZsqeNx5o38vPF77C59QCjK0r4XxdO4o9mjmVURcmh9aYfP4z/95VZ3PzwUuY8sowVm3Zxx8caB7xdkWylIJCUaqqtoL0zzlvb9zFpVHmf3+fuvLxhJw+9+DZPvrqFjpgzq76a//PxyVzYNLLHH/eR5SU8/Kdn8K3/XM19C9az6t1d/PDa6VQPLU7WLolkPAWBpFTXsfqLv/8c+XlGUX4eRQWJR3HwXJTfbTqY39x6gDe27aWipIDPnTmOz555PBNr+jZURWF+Ht/8xBSm1lVyx+MrufzuBfzkutM4ZWxVmLsqkjEscUuA9DZjxgxvbm6OugxJAnfnseaNbNvdRltnjPbOeOIRi9MWTHc9dy1v74wzpCifq6bXcfkpxzGkKH/A23918y5uemgJLXvb+LsrTuLq08cmce9E0ouZLXH3Gb2upyCQXLNzXztf+cVSFqzbzrVnHM9fXz6Z4oKBh4tIuuprEKjXTHLOsLIi5n1hJl/8g4n8fPE7XDP3RbbtPhh1WSKRUR+B5KT8POP2jzUyta6S2/5tOR+/ewE//ux0Th83PCmf7+7saetk1/4Odh1IPFqD6XEjSjlr4ggS924SiZ6CQHLapSfXUj9yKDc9tIRr5r7I2OGlFOYbhUEndmF+orO6+7LEfB6FBYZh7D54+Ee++yMW7/mw6zn1I7jjY02cNKYyhXsrcnTqIxABdh3o4Ifz17JtdxsdsTgdQed1YtrpiB3uvO6IxenoTCyLuVM5pPADj6rS4HlIEZWHpgupLC2koqSQ363ayl1Pr2Xn/g6unHYct330ROqGlUb9TyBZSJ3FImls98EO7nn2Te5fsB53+Pw54/jyR+qpLC2MujTJIgoCkQzwbusB7nzqDX71yiYqSgq5+fx6PnfWCZQU6iwmGTydNSSSAY6rGsJ3P3MKT9xyLtPGVvGtJ1Yz+3v/w38s3Uz8GH0MIsmkIBBJA021Fcz7wkz+9YYzqCot5KuPLuMTP1rAonXboy5NcoAODYmkmXjc+c3yd/mn361hc+sB/mBSDaeMraIzFicWdzpiTiwepyPuxGJORzyxvDPmdMbjwbPjJE5jBXCHuDvu4HQ9A93mAfLMMAOzxPTheSMvWGYcns/Psw8+zCjIPzydn5dHQX7icwryjJLCPBpHVzC1rpKR3QYIlHD09dCQTh8VSTN5ecaVp47hkpNG89ALb/OjZ9fxP8Ew2wX5RkHw41qQl5jOzzMKgx/fwvzEfEFe4tc88aPd/QccDCP4D8sDI4+uSxq6AiMehxhx4l3ziVQ5NH9oPU+ETqzbozPuxONHW574vC6jK0o4ua6SqWMqE891VQwvK0r9P3iaOtgRo3V/B1WlhaH3GalFIJLmuv4fzYYL0Pa3d/Lau7tZvmkXKze1smLzLt5q2Xfo9bphQ5haV8nJY6o4pa6SKWMqqRySeWdSufuh0447Yl2nHTt7DnawY187O/d1sGN/Ozv3tbMzeN6xvyPxHCzb3x4D4MEvzOS8STUDqkMtApEskQ0B0KW0qIAZ44Yzo9sV3LsPdvDq5l2s3LSLFcHzEyu3Hnp9eFkR3f8FjvzT9Wh/zNoRh7DygmcLDnXldT/UZYfX74+YJw7HHfqx7zx8zUlnPzr6y0sKGF5WxLDSIqqHFtEwaijDS4sYVlbE8LIi6kf2bZTdwVAQiEikKkoKOXtiNWdPrD60bOe+dlZu3sWKTa1s2XWQI7PwyJ/tI18/1CdCIiji8cOHuDxYHv/Aoa7+Hxkxsw9cdX74avTD80dOV5QUUlWa+IEfVpa46LCoIPpzdhQEIpJ2hpUVcd6kmgEfEpH+iT6KREQkUqEFgZndb2bvmdmr3ZZ908w2m9my4HFpWNsXEZG+CbNF8ABwyVGWf9/dpwWPJ0LcvoiI9EFoQeDuzwE7wvp8ERFJjij6CG42sxXBoaNhPa1kZjeaWbOZNbe0tKSyPhGRnJLqILgHmAhMA7YA3+tpRXef6+4z3H1GTY3OHBARCUtKg8Ddt7l7zN3jwL3AzFRuX0REPiylQWBmtd1mPwm82tO6IiKSGqGNNWRmvwA+AlQD24C/DuankbhKfANwk7tv6cNntQBvD7CUaiCXx/LN5f3XvueuXN7/7vt+grv3emw9IwadGwwza+7LoEvZKpf3X/uem/sOub3/A9l3XVksIpLjFAQiIjkuF4JgbtQFRCyX91/7nrtyef/7ve9Z30cgIiLHlgstAhEROQYFgYhIjsvqIDCzS8xsjZmtM7Pbo64nlcxsg5mtDIb7zvobPvcw7PlwM3vKzNYGzz2ObZXJcnnIdzMba2bPmNlrZrbKzOYEy3Plu+9p//v1/WdtH4GZ5QNvABcBm4CXgWvc/bVIC0sRM9sAzHD3nLioxszOA/YCD7r7ScGyfwR2uPu3gz8Ehrn7X0ZZZxh62PdvAnvd/btR1ha2YLSCWnd/xczKgSXAlcDnyY3vvqf9v5p+fP/Z3CKYCaxz97fcvR14BLgi4pokJD0Me34FMC+Ynkfif5Csk8tDvrv7Fnd/JZjeA6wGxpA7331P+98v2RwEY4CN3eY3MYB/oAzmwO/NbImZ3Rh1MREZ1W0Ik63AqCiLiUCfhnzPFmY2DjgVWEwOfvdH7D/04/vP5iDIdbPcfTrwMeDLweGDnOWJY6DZeRz06Po85Hs2MLOhwK+Ar7r77u6v5cJ3f5T979f3n81BsBkY222+LliWE9x9c/D8HvDv5OaQ39u6RrwNnt+LuJ6UyaUh382skMSP4MPu/niwOGe++6Ptf3+//2wOgpeBBjMbb2ZFwB8Bv4m4ppQws7Kg4wgzKwMuJjeH/P4NcH0wfT3w6whrSalcGfLdzAy4D1jt7nd2eyknvvue9r+/33/WnjUEEJwy9QMgH7jf3b8VcUkpYWYTSLQCAAqAn2f7vvcw7Pl/AI8Bx5MYxvxqd8+6TtVkDvmeacxsFvA8sBKIB4u/TuI4eS589z3t/zX04/vP6iAQEZHeZfOhIRER6QMFgYhIjlMQiIjkOAWBiEiOUxCIiOQ4BYHkDDP7BzM738yuNLM7gmWNweiMS81s4gA+86tmVpr8akVSR0EgueQM4EXgD4DngmVXAr9091Pd/c0BfOZXgX4FgZkVDGA7IqFREEjWM7N/MrMVwOnAC8CfAPeY2V+R+CH/kpk9E6x7nZm9FLQS/iUYzhwzu8fMmoMx3/8mWHYLcBzwTLf37+223avM7IFg+gEz+4mZLQb+Mbj6+/5gW0vN7IpgvSndtr/CzBpS868kuUx/mUjWc/evmdljwB8DtwLPuvs5AGaWRzBuu5k1AX8InOPuHWb2Y+CzwIPAN9x9RxAMT5vZVHe/y8xuBc7v430f6oCz3T1mZn8PzHf3L5hZFfCSmf038EXgn9394WBolPzk/muIfJiCQHLFdGA50EhizPajmQ2cBrycGMKFIRwerOzqYDjvAqAWmAys6GcN/3VvaZIAAAFTSURBVObusWD6YuATZnZbMF9CYjiEF4BvmFkd8Li7r+3nNkT6TUEgWc3MpgEPkPhrfDuJ4/lmZsuAs45cHZjn7ncc8RnjgduA0919Z3C4p6SHTXYfs+XIdfYdsa1Pu/uaI9ZZHRw+ugx4wsxucvf5x9hFkUFTH4FkNXdf5u7TSNy2dDIwH/iou09z9wNHrP40cJWZjYRD9709Aagg8SO+y8xGkbjHQ5c9QHm3+W1m1hQccvrkMUr7HfCVYPRIzOzU4HkC8Ja730VixMypA9pxkX5QEEjWM7MaYGcwNntjT/etDpb/bxJ3dlsBPEXifrDLgaXA68DPgYXd3jYXeLKrsxi4HfgtsIjEDUF68n+BQmCFma0K5iFxr9lXgxbLSST6J0RCpdFHRURynFoEIiI5TkEgIpLjFAQiIjlOQSAikuMUBCIiOU5BICKS4xQEIiI57v8DHVLu2FF5prEAAAAASUVORK5CYII=\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.plot(mse_errors)\n", "plt.xlabel('#features')\n", "plt.ylabel('MSE')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Регуляризация" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [], "source": [ "from sklearn.linear_model import Lasso, Ridge" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [], "source": [ "def fit_and_plot_coef(model, X, y):\n", " # in fact weights are adjusted by the last iteration of cv\n", " print(\"Model quality:\\t{}\".format(get_cv_score(model, X, y, log_y=True)))\n", "\n", " plot_bar(model.coef_, X.columns)\n", " print(\"Sum of coefficients:\\t{}\".format(np.abs(model.coef_).sum()))\n", " print(\"# of nonzero coefficients:\\t{} / {}\".format(np.count_nonzero(~np.isclose(model.coef_, 0)), model.coef_.shape[0]))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### L2 регуляризация (alpha=1)" ] }, { "cell_type": "code", "execution_count": 27, "metadata": { "scrolled": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Model quality:\t19.483533969727482\n", "Sum of coefficients:\t0.9628712327172632\n", "# of nonzero coefficients:\t13 / 13\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "ridge = Ridge(alpha=1)\n", "fit_and_plot_coef(ridge, X, y)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### L2 регуляризация (alpha=100)" ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Model quality:\t22.37601001157377\n", "Sum of coefficients:\t0.6243798703387493\n", "# of nonzero coefficients:\t13 / 13\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "ridge = Ridge(alpha=100)\n", "fit_and_plot_coef(ridge, X, y)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Модули весов уменьшаются" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### L1 регуляризация (alpha=0.01)" ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Model quality:\t21.69982755081639\n", "Sum of coefficients:\t0.5484933182202518\n", "# of nonzero coefficients:\t9 / 13\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "lasso = Lasso(alpha=0.01)\n", "fit_and_plot_coef(lasso, X, y)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### L1 регуляризация (alpha=0.1)" ] }, { "cell_type": "code", "execution_count": 30, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Model quality:\t38.54047402783083\n", "Sum of coefficients:\t0.2576352943756148\n", "# of nonzero coefficients:\t4 / 13\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "lasso = Lasso(alpha=0.1)\n", "fit_and_plot_coef(lasso, X, y)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Количество ненулевых коэффициентов уменьшается" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Добавим линейно-зависимый фактор" ] }, { "cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [], "source": [ "X_lin_dep = X.copy()\n", "X_lin_dep['TAX_B'] = X_lin_dep['TAX'] + X_lin_dep['B'] + np.random.rand(X.shape[0]) / 100" ] }, { "cell_type": "code", "execution_count": 32, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
CRIMZNINDUSCHASNOXRMAGEDISRADTAXPTRATIOBLSTATTAX_B
0-0.4197820.284830-1.287909-0.272599-0.1442170.413672-0.1200130.140214-0.982843-0.666608-1.4590000.441052-1.075562-0.220424
1-0.417339-0.487722-0.593381-0.272599-0.7402620.1942740.3671660.557160-0.867883-0.987329-0.3030940.441052-0.492439-0.540240
2-0.417342-0.487722-0.593381-0.272599-0.7402621.282714-0.2658120.557160-0.867883-0.987329-0.3030940.396427-1.208727-0.582349
3-0.416750-0.487722-1.306878-0.272599-0.8352841.016303-0.8098891.077737-0.752922-1.1061150.1130320.416163-1.361517-0.689919
4-0.412482-0.487722-1.306878-0.272599-0.8352841.228577-0.5111801.077737-0.752922-1.1061150.1130320.441052-1.026501-0.663627
\n", "
" ], "text/plain": [ " CRIM ZN INDUS CHAS NOX RM AGE \\\n", "0 -0.419782 0.284830 -1.287909 -0.272599 -0.144217 0.413672 -0.120013 \n", "1 -0.417339 -0.487722 -0.593381 -0.272599 -0.740262 0.194274 0.367166 \n", "2 -0.417342 -0.487722 -0.593381 -0.272599 -0.740262 1.282714 -0.265812 \n", "3 -0.416750 -0.487722 -1.306878 -0.272599 -0.835284 1.016303 -0.809889 \n", "4 -0.412482 -0.487722 -1.306878 -0.272599 -0.835284 1.228577 -0.511180 \n", "\n", " DIS RAD TAX PTRATIO B LSTAT TAX_B \n", "0 0.140214 -0.982843 -0.666608 -1.459000 0.441052 -1.075562 -0.220424 \n", "1 0.557160 -0.867883 -0.987329 -0.303094 0.441052 -0.492439 -0.540240 \n", "2 0.557160 -0.867883 -0.987329 -0.303094 0.396427 -1.208727 -0.582349 \n", "3 1.077737 -0.752922 -1.106115 0.113032 0.416163 -1.361517 -0.689919 \n", "4 1.077737 -0.752922 -1.106115 0.113032 0.441052 -1.026501 -0.663627 " ] }, "execution_count": 32, "metadata": {}, "output_type": "execute_result" } ], "source": [ "X_lin_dep.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Сначала обучимся без регуляризатора" ] }, { "cell_type": "code", "execution_count": 33, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Model quality:\t19.537197723782604\n", "Sum of coefficients:\t4.780604267198239\n", "# of nonzero coefficients:\t14 / 14\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "ridge = Ridge(alpha=0)\n", "fit_and_plot_coef(ridge, X_lin_dep, y)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Видно, как наша модель уловила связь между факторами TAB, B и TAX_B: \n", "\n", "$ C_{TAX} + C_B + C_{TAX\\_B} = 0 $\n", "\n", "Добавим регуляризатор" ] }, { "cell_type": "code", "execution_count": 34, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Model quality:\t19.48550295615587\n", "Sum of coefficients:\t0.9831643767712807\n", "# of nonzero coefficients:\t14 / 14\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "ridge = Ridge(alpha=1)\n", "fit_and_plot_coef(ridge, X_lin_dep, y)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Веса рассматриваемых факторов уменьшились по модулю. Попробуем L1 регуляризатор." ] }, { "cell_type": "code", "execution_count": 35, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Model quality:\t19.578749996602753\n", "Sum of coefficients:\t0.9028813266968108\n", "# of nonzero coefficients:\t13 / 14\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "lasso = Lasso(alpha=1e-3)\n", "fit_and_plot_coef(lasso, X_lin_dep, y)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Фиктивный фактор сразу же исчез" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Logistic Regression" ] }, { "cell_type": "code", "execution_count": 36, "metadata": {}, "outputs": [], "source": [ "y = (y < np.median(y)).astype(int)\n", "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3)" ] }, { "cell_type": "code", "execution_count": 37, "metadata": {}, "outputs": [], "source": [ "from sklearn.linear_model import LogisticRegression\n", "from sklearn.metrics import log_loss" ] }, { "cell_type": "code", "execution_count": 38, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "LogisticRegression(C=1.0, class_weight=None, dual=False, fit_intercept=True,\n", " intercept_scaling=1, l1_ratio=None, max_iter=100,\n", " multi_class='warn', n_jobs=None, penalty='l2',\n", " random_state=None, solver='liblinear', tol=0.0001, verbose=0,\n", " warm_start=False)" ] }, "execution_count": 38, "metadata": {}, "output_type": "execute_result" } ], "source": [ "log_reg = LogisticRegression(solver='liblinear')\n", "log_reg.fit(X_train, y_train)" ] }, { "cell_type": "code", "execution_count": 39, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([1, 1, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0,\n", " 1, 0, 0, 1, 0, 1, 0, 0, 1, 1, 0, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0,\n", " 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0,\n", " 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 1, 1, 1,\n", " 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0,\n", " 0, 1, 0, 1, 1, 1, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0,\n", " 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1])" ] }, "execution_count": 39, "metadata": {}, "output_type": "execute_result" } ], "source": [ "y_pred = log_reg.predict(X_test)\n", "y_pred" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Предскажем метку класса" ] }, { "cell_type": "code", "execution_count": 40, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "5.680740843832157" ] }, "execution_count": 40, "metadata": {}, "output_type": "execute_result" } ], "source": [ "log_loss(y_test, y_pred)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Предсказание рандомом" ] }, { "cell_type": "code", "execution_count": 41, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "15.224481623582179" ] }, "execution_count": 41, "metadata": {}, "output_type": "execute_result" } ], "source": [ "log_loss(y_test, np.random.choice([0, 1], size=y_test.shape[0]))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Предскажем вероятность" ] }, { "cell_type": "code", "execution_count": 42, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.29889880622014475" ] }, "execution_count": 42, "metadata": {}, "output_type": "execute_result" } ], "source": [ "y_pred = log_reg.predict_proba(X_test)[:, 1]\n", "log_loss(y_test, y_pred)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Decision function - < w, x >" ] }, { "cell_type": "code", "execution_count": 43, "metadata": {}, "outputs": [], "source": [ "y_dec_pred = 1. / (1 + np.exp(-log_reg.decision_function(X_test)))" ] }, { "cell_type": "code", "execution_count": 44, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.29889880622014475" ] }, "execution_count": 44, "metadata": {}, "output_type": "execute_result" } ], "source": [ "log_loss(y_test, y_dec_pred)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Margin" ] }, { "cell_type": "code", "execution_count": 45, "metadata": {}, "outputs": [], "source": [ "y_test_rescaled = (y_test - 0.5) * 2" ] }, { "cell_type": "code", "execution_count": 46, "metadata": {}, "outputs": [], "source": [ "m = log_reg.decision_function(X_test) * y_test_rescaled" ] }, { "cell_type": "code", "execution_count": 47, "metadata": {}, "outputs": [], "source": [ "m.sort()" ] }, { "cell_type": "code", "execution_count": 48, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Text(0, 0.5, 'Margin')" ] }, "execution_count": 48, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.figure(figsize=(15, 10))\n", "plt.bar(range(m.shape[0]), m)\n", "plt.xlabel('Object')\n", "plt.ylabel('Margin')" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "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.6.8" } }, "nbformat": 4, "nbformat_minor": 1 }