Created
March 17, 2021 15:44
-
-
Save balouf/f44fd9147d46681db75bb4763997535e to your computer and use it in GitHub Desktop.
Ensemble methods on the Digit dataset
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"cells": [ | |
{ | |
"metadata": {}, | |
"cell_type": "markdown", | |
"source": "# Ensemble methods on the Digit dataset" | |
}, | |
{ | |
"metadata": {}, | |
"cell_type": "markdown", | |
"source": "This notebook show how to apply ensemble methods (Random Forest, Gradient Boosting, XGBoost) to the [Digit dataset](https://archive.ics.uci.edu/ml/datasets/Optical+Recognition+of+Handwritten+Digits)." | |
}, | |
{ | |
"metadata": {}, | |
"cell_type": "markdown", | |
"source": "## Imports" | |
}, | |
{ | |
"metadata": { | |
"trusted": false | |
}, | |
"cell_type": "code", | |
"source": "import numpy as np\nimport matplotlib.pyplot as plt", | |
"execution_count": 2, | |
"outputs": [] | |
}, | |
{ | |
"metadata": { | |
"trusted": false | |
}, | |
"cell_type": "code", | |
"source": "# !pip install scikit-learn\n\nfrom sklearn.datasets import load_digits\nfrom sklearn.model_selection import train_test_split\nfrom sklearn.ensemble import RandomForestClassifier, GradientBoostingClassifier\nfrom sklearn.tree import DecisionTreeClassifier\nfrom sklearn.metrics import accuracy_score", | |
"execution_count": 7, | |
"outputs": [] | |
}, | |
{ | |
"metadata": { | |
"trusted": false | |
}, | |
"cell_type": "code", | |
"source": "# !pip install xgboost\n\nfrom xgboost import XGBClassifier", | |
"execution_count": 69, | |
"outputs": [] | |
}, | |
{ | |
"metadata": {}, | |
"cell_type": "markdown", | |
"source": "## Load data" | |
}, | |
{ | |
"metadata": { | |
"trusted": false | |
}, | |
"cell_type": "code", | |
"source": "digits = load_digits()", | |
"execution_count": 9, | |
"outputs": [] | |
}, | |
{ | |
"metadata": { | |
"trusted": false | |
}, | |
"cell_type": "code", | |
"source": "X = digits.data\ny = digits.target", | |
"execution_count": 16, | |
"outputs": [] | |
}, | |
{ | |
"metadata": { | |
"trusted": false | |
}, | |
"cell_type": "code", | |
"source": "np.unique(y, return_counts=True)", | |
"execution_count": 17, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": "(array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]),\n array([178, 182, 177, 183, 181, 182, 181, 179, 174, 180]))" | |
}, | |
"execution_count": 17, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
] | |
}, | |
{ | |
"metadata": { | |
"trusted": false | |
}, | |
"cell_type": "code", | |
"source": "X.shape", | |
"execution_count": 18, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": "(1797, 64)" | |
}, | |
"execution_count": 18, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
] | |
}, | |
{ | |
"metadata": { | |
"trusted": false | |
}, | |
"cell_type": "code", | |
"source": "# show some pictures\nimg = np.zeros((100, 100))\nfor i in range(10):\n for j in range(10):\n img[10 * i:10 * i + 8, 10 * j:10 * j+ 8] = X[i * 10 + j].reshape((8, 8))\n\nplt.imshow(img, cmap='binary')\nplt.axis('off')\nplt.show()", | |
"execution_count": 19, | |
"outputs": [ | |
{ | |
"data": { | |
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAOcAAADnCAYAAADl9EEgAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nOx9V4xd53ntOnN6771Mb+TMsJMiRVJUi2osRa6w5RhKEPslfrCdhxgB8mYgBhLESZzESN7syC2OrcgyqS42idUcDsuUM/X03nu/D8z36wxNcvY+dO7VBbiAASRy+J999t++sr71CTqdDh7gAR7gk4e+/9cP8AAP8AB3xoPN+QAP8AnFg835AA/wCcWDzfkAD/AJxYPN+QAP8AmFaIu/Z6HcdruNa9euYWNjA6dPn8YHH3wAi8WC8fFxDAwM4DOf+Qz0ej0UCgWEQiHvB6nX6/j7v/97nDhxArVaDdVqFTMzM3j++edht9uxd+9eyGSynsadn59HLBbDD37wA5w8eRI2mw1WqxXPPPMMvvGNb0AikXAeb2VlBe+88w7W1tbwi1/8Avl8HhaLBTqdDn/xF3+BJ554AjKZDFKplPezAkCj0UC5XMbKygp+8IMfoK+vD9/85jcxPj7e01jf+973cPz4cWi1Wuh0Ojz00EN45ZVXen6+btxpzp5//nn81V/9VU9zFY/Hcfz4cWQyGZRKJdRqNczNzcHv9yMajSIWi0EikUAul+PQoUP43ve+B7vdvuWau3btGn7yk58gEong4sWLAIBjx47B5XLh8ccfx8TERE9z9qtf/Qo/+tGPUK1WUalUMDk5ib/+67+GzWbj+9UFd/rDrTbnJtRqNRSLRdTrdbTbbfbTaDSQTqfR6XQgEAggkUggEonQ18fvYhYIBOjr62Nj0k+z2UQvKZ9Wq4V6vY5CoYBsNotarQYAm56dKxqNBur1OsrlMqrVKprNJuRyORuj1Wqh1Wqh0Wjw2ux3euZqtYp6vY6+vj4IhUIIBHecO07odDrsPVSrVRQKBcTjcchkMvT19aGvrw9qtRoiEa+lgEajgVqthnq9jnq9DgCQSqW8x7kb6NlkMhnUajVyuRykUinEYjGEQiFbXwKBYMv302630Ww20Ww2Adx6J7VaDZVKha0NvV7PeXN2Oh10Oh00Gg1Uq1W2TqvVKpLJJIRCIXt+pVLZ83rg/CZbrRauXLmCd955B6FQCPF4HCKRCKVSCfPz8zh37hzUajVefPFFuN1uDA8Pw2g08noYiUQChUKBRCIBv98PlUqFhYUFNBoN7Nmzh9dY9Xod0WgU8Xgc//7v/44bN24gmUwCAMrlMhKJBAqFAudNv7y8jCtXrsDv9+PixYsQCoV4+umn0Wq1cOrUKSQSCYRCIfj9fjgcDsjlcl7PS0gkErh8+TIymQyMRiMUCkXPt1yn00GhUEAikUAgEEC1WsXc3BzefPNNSKVS6HQ62Gw2fP3rX8fg4CDncRuNBpaWlpBMJnH9+nUsLCxgenoaU1NTGBwc5H0o3w6BQACpVAqpVIqjR49CLBZjbm4OV69eZQe33W6HSqWCXC7f8vPK5TICgQASiQQ7QK9evQqv14uNjQ2YTCY899xzeOKJJzg9X7FYRLlcxurqKq5cuYJWq4Vmswmfz4fV1VUolUpYrVbodDq8/PLLvNcugdPm7HQ6aLfbiMfjWFtbQ6FQYDePQCBAoVDA5cuXoVQqsXv3bkilUrhcLs4PQScR3ZyNRgOFQgG5XA7ZbJZ9Hh+0Wi3k83mkUiksLCzg6tWr7BRrNpuoVCpoNBqcx8vn89jY2EA4HEY8HofBYIDb7WbvoFqtolQqoVQq8Rr3dpTLZYRCIVQqFcjlcqjV6p7cBAKd6NlsFtlsFtFoFIuLi5DJZLBYLBgcHEShUOA1ZqvVQjqdRiQSQTKZRDabhVAohM1mg1ar7fmmFwgE7Fakm9Fut0Or1SKVSiEcDqPZbKJer0Or1UIikXB6N81mE6VSCZVKhf1ZoVBAqVRCvV5HMBjEnj172Fxu9fz1eh2VSgW5XA7xeJwd8LlcDqFQCFKpFG63GyaTCc8880xP7wLgsDnb7TZSqRQKhQJisRhSqRT279+PQ4cOwWg0or+/H36/ny3KXC6HcDiMyclJTg9A4+fzeayvr2N5eRmpVAoAoFAo4HQ6YbFYeC/QSqUCr9eLYDAIuVwOj8eDgYEBGI1GrK6uYnV1FcVikfPNabfbceDAAVSrVRw+fBjpdBrXrl1DNpsFAJhMJvT392NkZARqtZrXswK3FlCj0UA0GsWlS5cgEokwOTkJjUaDUqnE3gkAKJVKzj6dRCKBTCaDWCwGcMtclEgk0Gq1GBwcRH9/P4Bb74vrYq/Varh48SJu3LiBYDAIALBarZiZmYHb7e755lSr1Thw4AAzk9vtNlZXV7G8vIxgMIhUKoVt27bh2LFjcDgcUCgUnMaVy+VwOBxQqVTQ6XSQyWR45JFHoNfr8dprr+H69etYX1/HysoKtFotLBbLXTcombPdh7tarYbVaoVYLIZGowFw6zCvVCpotVo9vQuA4+bM5/NIp9PI5/MoFosYGhrCSy+9BLVaDaPRiKWlJZw9e5Y9UDqdZi+Y6/jJZBKxWAyRSIT5hlKpFAaDARqNhveE12o1hEIhhMNhSKVSGI1GDA0NwePxIJVKoVgsolqtch5Pr9djbGwMYrEYCoUCi4uLOH78OMLhMAQCAVQqFcxmM+x2O6/nJLRaLdRqNWQyGSwvL0Or1WLnzp1QKBSo1WrsdhMIBBCLxZw3p0gkglQqZZtOKBRCKpVCoVDAarXCZDJBIBCgXq9DJBJx2pyNRgNerxezs7PMVdBqtejv74fRaOx5c8pkMoyNjW36nNXVVUQiEaTTaRSLRRgMBjz++ONQKpWczX1aRxRM0ul0ePbZZ+FwOHDq1Ckkk0nE43GEw2EAgMViued4zWYTtVoNrVYLnU4HMpkMNpsNSqUSJpMJzWaTuWP/q5sT+Nj5pwk1Go3QarWQyWRssZhMJuasc0GlUsHq6ioymQzOnz+PcDiMxcVF1Go15rirVCq43W5YrVbegQalUonp6Wk4HA709fUhkUggm83i4sWLqNVqGBsbg81m42yCSaVSaLVatokqlQry+TxKpRJMJhO0Wi2AW4cC10XejUQiwU7vTCYDjUaD0dFRGAwG+Hw+Nm73jboVBAIBW4y5XA7AxwsLAIxGIywWCxQKBWQyGednptujVqtBpVJBIpHAarXCarVCqVTy+t7ArbWQSqVYQIXmv9Fo4Pz587h+/Tozn6PRKLxeL0wmE4aHh5lFcC9oNBps374dgUAAb7/9NjqdDl577TWYTCaEw2HIZDIolUpotdotYwXd75TWv9PpxAsvvIBqtYr5+Xnk83mUy2UA4O2OdWPLFd/pdFCv19lE2Gw2mM1m6PV6trAlEgksFguvwEWpVMLs7Cx8Ph9++ctfYn19HeVyedONq1KpMDAwAL1ez3uxk/9bKpUglUoRDofxi1/8ApcuXcLAwAAmJyfZxuUCClCUy2Ukk0mUSiXkcjkUCgW4XC7odDrme/JZ6IRYLIbZ2Vl4vV5kMhm43W5s27YNKpUK586dg8/ng0KhgEQigcFgwPDwMKdxaSHFYjEAt+azWq2i0+nAYrHAYrFApVLxmjuKdtZqNSiVShiNRtjtdtjt9p78zXK5jI2NDWSzWczPzzPfsNls4vTp01hcXGS/S4e4x+NBf38/p82p1+uxY8cOALdSYclkEvl8HhqNBslkEjKZDCqViqUCt/oOlLqhjTwwMIDPfe5zCIfDuH79OrLZLEqlEoRC4f/+5iR/SKVSwWq1QqVSbfodiqA1m03Oi1IqlWJgYAAqlQr5fB7BYBAXLlzA2traps+mcbmCnrdcLmN9fR25XA5LS0uIRqPs9nC5XHjooYcwPDzMezGJRCIolUo4HA48+eSTiMfjzESen59Ho9HA6OgohoaGWCrkXshmsygWi1haWsKVK1eQSqVgtVphsVggEolYFHB5eRkTExPQ6/WcrYi+vj6Mj4+jXq/D4XDA4XCg0WigVCpBoVBgaWkJmUyGBYVsNtvvzO3dQGuCgmzZbBZerxdKpRI6nY6Z01zer1AohFKpRLlcZqkNcpFozvr7++HxeDA1NYWhoSGYTCbOa617fdL6SKfTaDQaGB4eZvl6rqayUCiERCJh3zWTyeD1119HtVqFUCiEVquFWCxGu91mgUKJRMLpIOkGp1mmBLPJZAIA5qd0f/lKpYJyuczZrFGr1Th48CBarRaOHDmCfD6Pb3/725s2J0VVa7Ua2u02p8lotVqoVCpIJBI4e/YsYrEYLl++jHg8jkQiAQDYtWsXXnnlFcjlct7mMt1carUaf/mXf4l4PI7vf//78Hq9OHHiBN555x18/vOfh81mYz7O3dDpdBAIBODz+fDee+/hZz/7GRwOB/bt24fR0VFIJBKUSiVcunQJc3NzcLvdMBqNnNM0QqEQjz76KI4cOQKfz4f19XVks1kEg0FsbGzg5z//ObsBRkZG8Nhjj3HanHRzlstlGAwGyOVyBAIBvPPOO/B4PJienmY3Kpc5o3daLBYRj8cRCoWwtLSEbDbLDub9+/fjpZdegsPhwMTEBIRCIefN2Wq1WH6a0h5+vx9KpRKvvPIKnn32WZhMJhiNRk6HiUQigUQigdFohMfjgd/vx7e//W2YTCY8+uijsNvtWFlZYXnUVCoFnU73v7M5KaHabDZZ0pWinHQqlctlVCoVqFQqiEQiTl+SfDO5XH7HW7fZbKJYLEKpVHKOqpbLZQSDQUQiEaytrSEejyOZTKJQKMBgMMButzPnne/LIggEAohEIqhUKtTrdQwNDQG45TeWy2Xk83mEQiHo9Xrml2wFIgvUajWWprh+/TrzbRuNBtRqNUwmE+coJQDmp1JOUywWM9OcbpNSqYRiscjZQqHvL5VKUa/XkcvlkEgkEA6H2UFuNpuxY8cOyOVySKXSe7oPtAa0Wi2GhoYglUqxsrKCWq0Gu90OnU7HYg+0yLm8UyKOxONxzM/Pw+/3w2w2M4tELBYjl8thY2ODkTEolcMFNpsNu3fvRiaTgc/ng8lkwsjICIsyZ7NZ5HI5rK2tYWhoiFOcoBtbPgUlhBUKBfsilD6gWyqbzSIQCKBcLsNqtfbkc90JxWIRfr8fADj7WJFIBK+//jp8Ph+OHz/OmEEikQhf/OIX8dBDD2HXrl2cfIt7oa+vD3K5HFarFV/84heRz+fx61//Gjdu3EAgEMCbb76JqampLdNA9G6VSiUUCgXy+Tw++ugjXL9+HUtLS+h0OvD7/RCJRBgaGsKePXt4TzJwy9rR6XSIx+MQCATI5/MQi8Wo1+vIZDJIpVIsUMTlu+t0Ouj1eua/ZbNZhEIhtvGnp6fx7W9/Gw6HAy6X657RZbqFtFotXC4XQqEQrly5Ap/Ph6NHj+LgwYOYmZnBtm3beDGm8vk84vE4Tp8+je9+97uQyWQ4fPgw5HI50uk0KpUKLl26hHPnzuHTn/40nnvuOSiVSuj1ek7jHz16FLt27WLrXy6XY3R0FKVSCQDg8/kwPz+P+fl5fPazn4XH4+E0LoHTESESiSAWi9FoNFAsFlEqlZiZkMvlkMlkmMlAuaT7obARiM3RfVNvBSJMdEdV6d/TWPl8HolEAmKxmFHOJBIJ59O4VCoxmiKF0lutFgQCAbMistnspqT33UC+i9lsxuDgIKrVKorFIoRCIaLRKDqdDvr6+qBSqaBUKqFSqXjd+PV6Hc1mkyXXuxPy9MxkpnFd9AKBAGq1GjqdDul0mt2WtVoNuVwOsVgMFosFmUwGKpVqy3QCkQ8A/A4lT6/Xw+l08qLXdYPokOl0GgaDgREl5HI5Y7cRkyyTyUAgELDg3lZQKpXsUKXvIBAIGEGHUi0AeqKfbrk56ZQEbkVYNzY2cPPmTVy6dAnxeByLi4vIZDIol8vQarU4dOgQRkZGWGrh/zaMRiMefvhh2O12zM/PIxQKIRqNolqt4sSJE/jwww8xMTGBiYkJuFwuTE9Pw2g0YmJigtOBEgqFcPr0aYhEIgwODjIzsVwuY35+HgsLCxgeHmYm370mRSAQwGazsWjn888/j3w+j0gkgtXVVbz66qsol8uYnp6GxWKB2+2GQqHgHGHudDrY2NhAJBKBVCqFRCLB4uIio2BWKhVoNBpMTk5icnISBoOB07gSiQQzMzOQyWQolUqIxWJQqVSwWCzodDrIZDJoNpuMpOF2uznFIlKpFH7zm9/A7/cjm81CrVbD4/Fg27ZtPa0nuVwOi8UCg8HA0oCPPvooLBYLkskkcrkclpeX4ff7MTs7C71ej+3bt8Nms/Gy/JRKJTweD6LRKF5//XWEw2G8/fbbyGazePHFFzEzM8NcHz7gbNYSh7HdbqNYLCIajSIajbIcnEQiYYn4rZK4d/scsVgMkUjEThyKrPGJ1spkMpjNZpRKJVgsFuYnUxQwnU6zEHe9XofVauUV8q5UKohEIixqS5uTfMNKpYJOp8PYNludwDKZjJG7PR4PcrkcTCbTJnI1nfhKpZLXoiFubTKZZP59KBSCz+dDOp1mxHKDwQCTycT5ZhIKhTCZTCgUCtBoNKzQgaKY5GPSocU1EV+r1RAIBOD3+xmxQ6PRQKvV9nRrikQiVm1C71kul0OpVLLiBSJgUPCGDzGFLDuy1qrVKvx+P4LBIPL5PGq1GrRaLRwOR0+sMU43p0ajgVQqxYEDByCRSJDP5/H666+jr68PIpEITqcTX/rSl9gNwAcCgQAymQydTgdDQ0PYtWsXwuEwQqEQO9koGMUFcrkcLpcLer0e3/zmN1EsFuHz+ZDNZvHb3/4WGxsbyOfzuHLlCos2NhoN7N69m9P4FLzIZrN44403UK/XGY1LIpFg165dOHbsGKM38mXL0PgSiYQtlOnpaYyPj7NoOVd0Oh1EIhEsLCxgfX2dBSkikQjkcjl27twJl8uF7du3Y3R0lPMCkkgk2L59OxwOB1KpFOO+er1eyGQyDA8PY2BgADt37oTNZuMcwKrVaiyI9+ijj8JoNGL79u2Qy+U9xTBEIhHkcjlMJhPGxsZQq9Xwne98h43V6XRQqVSwe/duPPzww3jyySdhNps5z9nCwgIuX76MYrGIVCq1ab1++tOfhsViwf79+9Hf398TOYOTz0mlOv39/ajX67h06RKWlpag0+ng8XhYnSBXR/p20IlrNBrhcrlQLpcRiUQYwTqfz3O+2UQiETQaDTQaDex2OxqNBvx+P/OLm80mFhcXEYvFYDKZkEqlYDabOfsERH9rNptYXl5GPp9nnzs2NgaLxYKxsTGW9OYL4r5SxJAI5R6Ph/cEdzodlMtlpNNpeL1enD9/nr1Hi8UCl8uFgYEBZlpzRTfJfWRkBMViEXNzc/B6vSxHa7PZ4HQ6GXOMC5rNJvPVh4eHMTQ0xDirvaC7bMtisSAUCuHMmTOoVCqs2mdsbAxOpxNDQ0MYGRnhnJsFbkXnr1+/jkwmg2AwiHq9jlKpBIPBgOnpaYyNjcHtdvfs4gm2WJTsL+kUTqfTiMVijLOqVqthMBiwY8eOngpsCe12mxXWptNppNNp6HQ6OBwOGI1G7NixoyfThri7tVoNq6urSCQSbHzKUxkMBmzbto2Tz5nNZuHz+VAoFBAMBtmtSYEElUrFOLy9gHK7sVgM77//PtrtNh566CGYzWaWU+SKTqcDr9eLcDiMaDTKuKPALZaLy+ViHF6+EWBKw9A7TSQSiMfjLNqp1WoxNjYGuVwOjUbDKT2RTqdx+vRp1Go1jI6OQqfTwWw292QSdiMSiWB2dpYVb1AaRSgUQq/XQ6lUMuIIn1SK3+/H2toac5sohyqTybBjxw7o9Xqo1Wou6/aOpwHnzfkAD/AA/2u44+Z8oCH0AA/wCcWDzfkAD/AJBS9iKSVXU6kUUqkUCzYQlU0ul2N4eJgXvexO2NjYwNraGnPotVot45py9QcouFCr1ZBIJFCv1zfVG/KNohLRu1QqIZlMolqtIpVKodVqMc0YjUbDaGhqtZoVOvMBpakqlQqTgpmamoJWq+XMjmm328jlcqjVaoy6SOkpIkkQ5HI5G59PyR9wy6eNx+NMsSKTycBut2N8fLynsjkALHVGVMhEIoFSqQSlUsniGy6Xixe7K5fLIRAIsO/b6XSQSqUYcV8qlcJisfCOhpNaB/myMpkMAwMDrMrlfvWUeAt81et1XL16FWfOnMHGxgYuXrwIhUKB8fFxOJ1O3no0d8Lbb7+Nf/3Xf2WLe3p6Gt/61rdgNps5J+HL5TJu3ryJeDyO999/H8lkEq+88goOHz7Myr/4gGiKa2trOHnyJCKRCD766CO2cKRSKaampuB0OhnVTK/Xw+Fw8FpIoVAIJ06cgN/vx3vvvQe1Wo2/+Zu/wczMDBQKBacJp0hyLBbD2bNnWZ0syZWEw2GWe3S5XPjud7+L6elp3gEn0pW6fv06fvvb3+LSpUtMfU+lUvGmSFKusFAo4NSpU/D7/Th9+jS8Xi/GxsYwMjKChx56CF/4whd4Lfz19XW8+uqrEAgEcLvdaDab+Oijj5BKpTA6Ogqz2Ywnn3wSjzzyCOcxASAYDGJubg6Li4s4ceIEnE4nXnnlFTgcDoyNjd13IIvzN6TTJp1OY2NjAxsbG0ilUujr60Or1UIymYRUKkUqlWIRML4h8Eqlgnq9jlQqhUQiAaFQCJlMBofDwWhoXFMetVoNPp8PkUgEkUgEuVwOyWSSPR/fzdlNZojFYshkMgBupVCILJFIJNBoNGA2m2G1WnlRGIl0UCwWWXQ1n8+zHC8R47kozrXbbWQyGUSjUUQiEQSDQabAV6vVWERSJpNt0uLhyzXudDrI5/OIxWJIp9PI5XKoVqtMC4oriBBSqVQQDAaRyWSwsbGBYDCIRCLBiPVKpRL5fJ43FY4ofK1WC9lsllE4C4UCotEoU6Co1+u8ql3oZo/FYojH4xAKhUy+834vKICn+t7Jkyfx4YcfYn5+HtevX0d/fz8ee+wxlEolzM3NoVwu49y5c4hGo9i9ezccDgfnB2m321hfX0c4HMby8jLi8TiAW7kqq9XK2ChcWTKJRAI//vGP4fP5mOlJ6m27du1ilESuoDK0YDCIxcVFiEQiHDp0CBKJhBUez87O4qOPPkK5XEaz2cT09DSGh4c5S3/UajUEg0GcOXOGld8ZDAZ2S5DlQlS8u6Fer+PatWu4du0aZmdnsbq6ynLVHo8Hf/AHfwCdToeRkREYDAZs376dc3lXNzqdDsLhMBYWFpBOpxnPlDSOuG52ymv7/X68+uqriEajCAQCKBaLaLfbUCqVrBB7fHycdwGzSCSCQqFAuVxmlTNEfvF6vahWqxgfH8e+fftYjSYXRCIRXLp0CT6fD9FolN3IAwMDGB8f50yHvOtzc/kl0v1MJBLY2NhAPB5nglBut5tRwTqdDnK5HC8NIUKn02EmF51uVJpEJyWfk73ZbLKb3mw2Q6VSoVqtIh6P81abI9DzdCsSSKVSpNNplp/MZrMol8u89WNqtRpTyMtms2i1WrBYLNBqtSiVSsySEAqFWxYWkNoBFSiQPhBRLKkudHh4GBqNpif/iKhrpVIJmUwGnU6HxR343sJUb5nP55l4dKvV2vQd6XbtRZOHWFf0vKQJTFRRKo5ot9u8bmUqriAONcU3SPeJq5rf3cBJ4CuXy7Fq/cuXL8Nms+Ho0aPYv38//uiP/gixWIwthHw+D7/fvynowPWLfvTRR3j77bexuroK4JZolNvtxujoKKxWKy8VAJFIBIPBAKFQiD/+4z/G4OAgzpw5g8uXL/dEQiYNWbfbjV27dqFQKGB9fR3pdBqXLl1COBxGsVhk0ip79uzhFbi4efMmPvjgAywtLSGXy8HpdOILX/gCpFIpfvzjHyOdTsPtdkOn0+Hpp5/G0aNH7zqWUCiE1WpFf38/4vE4oylaLBbs3r0bTz31FBNn4yMWRmi1WojFYkz9YHFxEbt27cLOnTsxMzPD+wamwFWpVILNZoPFYsFTTz0Fq9WKd999F/Pz80zKUq1W817ser0eu3btQjQaxblz51Cr1aBWqxlBoFarob+/H2azmdezazQaeDwetNttRki5fPkyQqEQXnjhBUbG6FV3mLPAF90KyWQSTqcTTqcTbrcbg4ODkEqlsFqt7MYjs44LuouMw+EwW5wAmPAxRUH5KHJ3c3anpqYwMTGBixcvIh6Ps3o7PqAgkk6ng8vlQjKZZP4QqRMCYAwZq9XKaSHRaZ1IJLC4uIhwOIxOpwOFQoGxsTF0Oh0sLy9jcXER27Ztg9Vqxf79++85JolQqdVqyOVyFj2kaCexbrRabU9KeUQLzOfzLFJLsjO3q2RwHa9bZpI4yv39/UzelH5PLBbz9jmlUinMZjPzO0lyhyLKrVYLGo2G9yFFPrtarYZCoWCqB2KxmMnP3I8oOKeqFFJip1vL4XDg4MGDGBkZYWkEuVzOinVJ6v9e6Ja6+OijjxAMBnH16tWeTOJu1Ot1pshNVSn04km2k0ud5VYol8tYWFhAMBhEsViERCLBs88+i4mJCUYo34qn2el0sLS0hGAwiNOnT+PcuXMwGo144oknMDAwAIfDgVKpxEw6jUYDt9vNOQpIAaZUKsVKu1KpFKLRKEZHR/GVr3yFt+8N3Lo5SeG+WCwCuKVbu2PHDthsNt4bXqPRYGpqCvl8HkqlEo1Gg6ntzc3NYW5uDkajEXq9HmKxGJlMBgqFgvMtSrq12WwWy8vLSKfT2L59OwwGA44cOQK3242JiQne78Hj8eDxxx+HTqeD1+uFQqGAVquFQqHAuXPn4Pf78dxzz/U0NsDx5hSLxRCLxeylG41GjIyMsIno6+uDWCxmPgIXcWKSNykWi7h27RoWFhZYEOB+0Gq1mF9Bi1gul7Oq/0KhcF+bn0A3PRGehUIh9uzZg8cff5yZM1uB+Mo3b97E0tISlpeXoVQqWUpGp9Nt6kdDASI+JzH1t6H3mkqlEAqFsH//fnzuc5/raXMSX5kinMAtF8Tj8fRkdlIlUaVSgUAgYLnkfD4Pn88Hv98PhUIBj8cDoVDIvgvX4KBEImER+oXUNb8AACAASURBVFgshkQigZGREYhEIoyPj2PPnj098cJNJhNUKhVSqRQ0Gg3LTggEAiwvLyMajeLAgQO8xyVw8jkzmczv7cbpHre75UIul4NIJIJWq2VV9SQDQr4jF1BVit1ux8GDB9HpdNhGIdOc1PJIX6cXaLVaHD16FIFAAP/1X/+FaDSK2dlZtFot7Nu3D7t27dpyDDIPc7kce7fZbBbXr1+Hz+fDxsYGu/Go6P1O6oe3QywWM6W+RqOxiYQfi8Xg9Xp7anHR/dzU5oHclwsXLuAf//Ef2TPq9XpMTk5CrVbD4XBwOlCSySR++tOfIhaLMaWNlZUVVKtVBINBVKtVVh86MDCAp59+mhPhJRgM4tSpU1hbW2OpucnJSQwODjJJ117WAekojY2N4Ytf/CIzzUulEq5cucLWWywWY6Yvr/G3+oV2u80qUX6fm5N6mVB0Mp/PMyEqYrfIZDK2ObmaSmKxmMlQ0OakG6hUKm3anPfTFUun0+Ho0aMIBoN488032YSEw2EYjUZOmxP4+MCg2s1sNotr164BALMAEokEq3qhouut3sHk5CSGh4ehVCo3mVXnz5/H7OwsS1P0AtIyrlarbIwLFy7gwoUL0Ov18Hg8GBwcxEsvvQS73c75tk8kEvjJT36C5eXl3/m7YDCIYDDIorl79uzBsWPHOC14OkBzuRxjcE1NTWFkZAQWi6XnaiqKno+NjbH4AH2PQCDA9Lai0SgEAsHvf3OSXky9XmdmKyW06ac7hdDf3w+dTrcl04T0PQUCAQ4ePAiPx8P6Ydy8eZNtorW1NWg0Gt4hdNJCbTabiMViKBQKqFQqLEfItS/I3UB1giaTCUeOHIHdbkcikWCkh1gsxsql7gaBQACXy4WZmRmUSiVEo1EmM0rau81mk0ls2mw2uN3uLcu7SFWCZFDEYjEL3tBh1Gw2kcvlWCqFz7ugUrHr16+zQJjJZGJmHuVmSal9K5kRInGIxWKMjY1BKpWyA5qK2Q0GA9MTmpiYwPj4OC+SS6fTgUajwe7du6FQKBgFk+pPfx8gc14sFsPlcqHT6SCdTmNubg5CoZD352y5OUmSguQdgI9rDkmGgkShO50OHnnkEaaAfi+IxWLWxHZwcJBpzvj9fvT19WFhYQGJRAIXLlxg/iIfUD6wUqng6tWrCAQC7OSkn/tR36NbXqVS4U//9E+RTqfx3e9+F1euXMHy8jK8Xi9sNts9fbC+vj5MT09jZGQECoWCmW83btxgecq+vj6YTCbo9XqMjo5ix44dnKwIii5T0n5lZQWLi4vsgK3VaohEIoyYwIe2V61Wce7cOZw5c4b5f4ODg9i7dy/LcabTabz55puwWq148skn70lIoVyjVCrFsWPHEIvFsLi4yLIDlUoFMzMzmJqaQn9/P6uV5HvjWa1W/Mmf/AlEIhH+5V/+BX6/HxMTE5v6s/w+QFROs9mMixcvIhQKsduaDzgHhCiBrdVqWds0kpyk8L9YLGa6L1xONUrQEqFdLpdDoVD0XPneDerPmcvlWLCJUjSZTGYTsZ66bpHK4J02E+nEUKqIAjVEE6ToIvli1JmZ0jp3A31Xu92Obdu2wWQyQSaTIZVK4dq1a5sUDflIjtLzESUyFArB6/UimUxCLpczwgCXyPrtEIlE6O/vZ6SUZDLJrBGFQsFadVQqFRSLRcag6g4qdoOU6xQKBQYGBqBQKBCLxVCv1yGTydBsNmEymTA6OgqbzQaDwQCVSsUpI0BmN2kb0fyWy2VeWr33Gp/6z5BZS++80WgwGiVZAnyKuTkLfAkEAng8HkxOTiKfz+PNN9+EWq2G2WxmuTqVSgWn08mianxBGq60YElEiw8VjJBKpfDaa6/B5/Ph7bffZrkyAJibm8MPf/hD1jHMYrHgwIEDmxLzt4M2XTqdxsrKCjPn8/k83nnnHZajLRaL7MTnEgmlRb1//37MzMygWq0in89jdnYW3/rWt5DNZjE4OAiXy8VZrYAYQo1Gg2nynDhxAq+//jqEQiHsdjv6+/uZRAnfuVKr1fjyl7+MJ598Ej/60Y9w9uxZ5k85HA4cOXIEV69exc9//nO0220kEgmkUikYDIY73na0MaVSKZ555hmk02nW0IgW/c6dO/HpT3+aHaBcWl3QnAFgzaaoOxh9Blet3nuNn8/nNxUT1Ot1hMNh1hv22rVreOSRR5BIJNhBywWctjCdbCaTCQMDA6hUKpsS+XTzkKnRa5BFLBaz05za1lEJEZU88dmk3Qp2zWYTKpUKMpmM3ap00guFQmZW3S3BTScklXRRC3rKIxIRnvilRPHbCvR9SB2OcrSUPybzmY86HgVsqOyM5DFTqRRrhUji373MFZnaxESi/6YAH5WpdSvxbTVvRI0UiUSo1+usfI0ObLLI+II+l1T2SJuKCCX3Y6WRTm8ikcDa2hq7hSkPTEr91AGB1iNXcJ4ZoVCIp556Cnv27MH58+dx9uxZlEol+Hw+eDweHD16lIk+9QKacLlczk51Yt5kMhlGD+TSZhy41aGMlM/S6TT8fj9sNht0Oh2i0Sjm5+chFotZA51t27ah3W7DZDLdcVOROev3+/HOO+8wUeZms8mqRwYHByGTyXDo0CE88sgjPZmMGxsbeO2117C+vo5mswm9Xo+9e/diYmKCc0Ch3W6zfN6vf/1rnD17ljVc2r9/P77+9a/Dbrf3XNIkEolYuuTQoUNQKBS4efMmTp06hQ8//BA//elPIRaLMTAwAKfTCZfLBZPJxPkgoJufOgh4PB6YzWbez0kbXCQSsYPqH/7hHyCVSrFnzx489thjPVE5CT6fD1evXsXNmzfxxhtvsFuYLjLKHOzduxcej4fzgU3gvDkFAgHMZjO0Wi0CgQBj3FOQhaJe93MS0YMT/Y3kIelG43PqiMVipijncDjQbrfhcDig0+lYH8ju04x8tHt9BkUVK5UKSyu1Wi3IZDJGhKdObHzU7LpRr9dZTlmr1TKxZj4tFrutBTKzKVppNpsxOjrKi6d8J1Aaymw2w+12IxAIsNx1pVKBwWDA0NAQk8bksy4o2kz+Kymr8wVZfMQfJiuH5DIHBgZ6GpdA6vl0e9LmJIuM6JLU+5NvATovga9Wq8V8iFgsxji3SqWSVYD3qjHaPX4gEEAgEGCmmcFgwM6dO3mZYe12m1VkhMNhVCoVxhQqFAooFoubpBMpUU7NbG4HKSGQ+l53IIF8DQpsuVyunjtcZ7NZ+P1+VhgtFApZK3tqVLsVSEyaglXxeJwdPjabDZOTk7xbMNztc8iEpVpZmkOJRAKdTgeFQsGi0VxBHa0LhQITGrdarT3dnsDHAUByRYRCIdxuNwtw9prnJJHyXC6HUCjE1kFfXx+ju9KacDgcsFqtd1PheKC+9wAP8AnFA/W9B3iA/5/wYHM+wAN8QsErIkCc1LW1NayurjLigFQqZZ2c+vv7e1bfq1arqNfrmJubw+zsLPtzKu6m+kSuAl/ULmFlZQWlUgkzMzOsjwrf1hGtVotp0Pj9flZ+Vq/Xkc/n0Ww2mcM/MjKCwcFBXpIXtyOdTuPixYtot9uYnp5mlEg+QZx2u42rV69ifX2dtaggUJpGJpP1NGcUcJqdncXGxgZ7PyRwRs2ZeqkXbTQaWFlZYbxUIo8At9rP79q1i1EaufjM8XgcN2/eZM10JRIJBgYGoFKpoNfrebGjuhEMBrG+vo5yuYxMJgOZTAan08liMPerQslL4CubzSKVSuHdd9/Fr371KygUChiNRuh0OkxOTsJisTDFAL7odDoolUooFAp47bXX8E//9E8scrpv3z4MDAzA5XJtKk27F/L5PM6cOQOfz4df/vKXiMVi+OpXv4pjx46xig0+IIGvQCCA9957D8lkEgsLC6ysqVwus1D5Sy+9hGeffRZ2u53xh/kiFovhhz/8IVqtFr72ta9hdHSUF7sEuHWgfPDBBzh+/DhLT9GzEPdYp9PxnjPKo5ZKJbzxxht46623WC/UY8eOQavVwmg0QqlU9rQ5q9UqLl26hNXVVZw/fx4rKyvs75555hlGyKBc+FYg4jvlkBUKBZ5++mm4XC6Mj4/3vDmXl5fxxhtvIJFIYGlpCQaDAUePHmVk//+rm5Naufv9fqRSKXaTkuaN3W5nTJteiOVUfN3duQv4WC2ASyqFlBXK5TJTRaOQfCgUwvnz56FSqXjzKYmITqmJUqnEqulp45JuUDKZxOLiIgBwFvgiVCoVpFIphMNh5PN5RnGkRDYXUPescrmMVCqFeDzO/oyqMojowVc3B7i16YkBE41GmYYUsXZ61awlEKWTFBx0Oh1KpRKKxSJisRhu3LjB2tFz+RxKlZEcilgsxuLiItLpNFKpFGvI5XK5ODGPCNVqlZVTUhPhmzdvIpPJYP/+/ZuUDXsB583ZbrcxOzuLDz74AAsLC/D5fADAiM59fX2MjKBSqWA0Gnk33SkWi0xLplcQiTqdTuP69euIRqOw2+1wuVy4dOkSjh8/Do1Gg8cee4zXuJVKBclkkvUk7evrQ39/P8RiMetivLy8jGQyiY2NDYTDYTz99NM4dOgQr8lJJBK4ePEiVldXEQ6HGYOJj0nbbrcRj8eRTqeZxInX60VfXx/sdjtmZmZYlUcvqNVquHz5MlZWVnDjxg34/X6WiyV2VC+USwIJiZvNZgwNDUEul8Pr9TJC/E9/+lNMT09jYmKCV+F5pVLB6uoq6vU64vE4S8319fXhy1/+Mj772c8yc5kL8vk8AoEAYrEY/H4/2u02lpaW4HK5cPjwYWg0mvu6QbecbWJrkMI5SQASQZsqP4LBIKPZcT2NKfdGN2U8HkcoFGLqeOQTEe/ybqT0btBNQ7V23T4VNfylfBcpPHABUcm0Wi36+/shEAjgcDggFouZ/xUIBNDpdFgRLp9NSdKYiUSCCUJrNBooFAp2aBGvlA/oRjMajbBYLLBarRgYGIBWq2W1slzH7CZhhMNhbGxsIJfLod1uQ6vVYnBwEFarleWT72dz6nQ6ludWKBRIpVJYXV3dRLDgeuNTcQM10RWJRLDb7dBoNAiFQshmsygUCkyUjuvmJCsNuJXj7i56yOfzyOfz9yUsveXmbLVa8Pv9SCQSmJ2dxaVLlzA5OYmnn34a4+PjeOyxx7CysoK//du/hUQi4TzRt1dM5PN5vPvuu0yyBLhV0DwwMICxsTG2kLa6PYhETbIZZrMZL7/8MpxOJwAwIrTP52PFy1wWEWnm2u127Ny5EwDYrUk9REmJbnBwEGNjYxgYGODscyWTSQQCAZw9exb/9m//Bo1Gw/RpyFJ54oknMDo6ymk84qTq9XqYzWZ89rOfxZe+9CUoFApmDpLJxZUl02w2kU6nEY1G8d577+H8+fNsQe/duxcvv/wyHA4HbDYbu5F6gVQqxY4dOxjxo9FoQCgUYn5+ftPNzHV8iUTChMeINPNnf/ZncDqd+Lu/+zu89957jINstVqh0Wh4HSxKpRJut5vp4jabTWxsbDCWUK+UVk43Jzn7xWIRpVIJcrkcAwMDGBoawujoKCsH4iu9XyqVWBt30raJRCKsRpDMOZlMxpgiXECaRjqdjjVOtVqtzESkG4CPEgDdxBKJhJ2G5McQdYtOUfpMPpNMxdbJZBLFYhFKpZLVg4ZCIUauL5fLnHrGkFVCVDhSDeQjjHU7uuVJMpkMMpkMsxJ0Oh2cTif0ej1v5lE3fZL0XqnQAfjYdep0Or/TXJgL6PmodyZdIrRm+frcBNIwbrfbm7R66RDrpvT1NH4v/2hqagovv/wy1Go1NBoNhEIhCwpwrY8rFou4fPkyIpEIXn/9ddbeger/7hek8dNsNqFUKtni9/v9rGUC314e3Wg0GsjlcojH4/j+97+PpaUlVvkyOjqKo0ePQqfT8dKtffXVV9FqtXDs2DEMDAzgmWeeQa1Ww29+8xusrKxAoVAgk8lgbGzsnnL/5HPGYjF20FF02WazYXx8vKfvTdZOpVJhB5vdbofRaGS6r70UsdfrdaYlNTc3h1wuh2g0yrSkSA82kUjAZDKxDAHXm9PpdOKFF16A1+vF7OwsgsEgvvOd76Cvrw/pdBoqlYrpCvHpbO12u3H06FHcvHkT165dY+LU5XIZH3zwARYXFzE+Po6RkRFe74PAaXOS30IvQ6fTYXh4mP0/9UuhKo3uU+9uoC5g8Xgca2trWFlZYWPQxFOEtpeTTSwWw+FwsKgvLSoKNtFt3CsonVAsFrG4uIi5uTn09/cz1QK73c7pBqEbI5lMYnl5GSaTCePj47Db7TCbzcjn80gmk/D5fKzSxO12b/lsVNVBvhkJhZGIMh9LpHtcMjWpfI+iv+Rn9kKmJwI5cWBTqRRTYiT1/EAggGq1ik6nw24/rpuItKiol002m2WBIUp3abVa3jlpEi+LRCIAwLSShUIh68FSKBR4lzoSOMmUOJ3OTUlsiohSzlEmk2FwcBDVahVerxe1Wg0HDx68py+jVqvx0EMPYXJyEkajkZVxhUIh+P1++P1+1Ot1JpHIV4xKIpHAZrOhVCrht7/9LaLRKBqNBvNfycTtFVRnWalUWLBlz549GB4exujoKKcCgE6ng/X1dUQiERb1bLfbcLvd8Pv9+I//+A/WOImEpA4dOrRlD46+vj6mXi4Wi1Eul3H+/Hmsr69jaGiI5eIOHz7MK5JIJIxMJsM2aKlUYi6J1+uFxWLB4OAgL38zk8ng0qVLCAQCOHHiBNLpNGtbSJ9DFkA38WWrBU8HyerqKs6cOYP19XUsLi4ik8mgWq1CLBbjU5/6FA4fPtyTtqzD4YBMJsPY2Bj27dvHGl2lUin853/+J9LpNCKRCAKBABNH54MtN2dfXx/0ej1rUENfmprBUHWD2WxmXZva7TZmZmbuOa5UKsXQ0BATfc5ms8y/LBaLzPwsl8uoVCq8b08SEANuBX+8Xi86nQ47KfnU1d0JVHmgUqlYIbDH42F1l1yrRxKJBEubZDIZaDQaljP1+/0sr0oNnbjUH/b19UGtVrPIcaPRwPr6OhYWFhCJRJi20P79+3ltTqr0KZVKzL+mQ5oCRRKJhHePkFKphPX1dayvr28SDbvbdyOfcavxSYguGo3izJkzCIVCmxT/RSIRduzYgeeff57jG9gMnU4HnU6HoaEh7N+/n+VR19fX8cYbbyAQCLDKFZlM9vvfnJt++X9SG+FwGCdPnoTH48GuXbuYI1+v11kZDleTsa+vj0knki9BJTzdQZ1emt2S2Tw/P8+iqBMTE3C5XLzGuhcoLJ/L5eD3+5kPw4XkQOp7pJbfrX5AVfak+M4HAoEAKpUKYrEYL774IiYmJpiwdDKZxOzsLKrVKhKJBCuZ42JFCIVCaDQa1sgXANNTunTpErLZLEvRWCwW7N27l0Xc75WeMJlMePjhh7F9+3YMDw+zWtlms4nLly9jfX2dSaiSsrzVauVsQpfLZWxsbKCvrw+f+9znIBAIsLGxgWazifX1dbz22mvYtm3bfQt9kWayxWLBzp07oVKpkE6nceHCBRw4cOD3r77XDSpaDYfDOH36NPbs2YOZmRm2OVutFiss5bM59Xo90+/p3pyUV+wluthoNJBIJBAOhzE/P4+FhQXs3bsXBw4cYGmV3weEQiFsNhsKhQK8Xi8SiQSmp6c5/VvanBRFtVqtCAQCrJ1isVhEoVBgUhdcIRAIWIHypz71KXzqU59ii/v111/HL37xCzSbTSSTSZaW4LI56UbuFnCjHPjs7OwmPvTExAS+9rWvwePxsNzn3WA0GnH48GEA2HSLVatV/OAHP8DJkyexsbHBpCxnZmZ49X8tl8sIBoNwOp34zGc+A41Gg9OnTyMWi2FjYwMrKysQiUT3vTmFQiHUajUajQZmZmagVquRTqcRj8fh8XhYCo4rOM94X18fLBYL64/i9/uhUqlw8eJFpkwuEAhgtVrhdrt7YkVIpdJNBcWVSoVR8AqFAq/8VqFQwLlz55hpQX5LOp3G2toaKpUKIz6TsiCXA6BQKCAcDjOqXi6Xw+rqKgKBAEuD9NLugcxiKqqmG/h+Q/L5fH5Tk9doNMoCO6VSCaVSiXMfScohkymvVCpRq9XuGKEvl8tYX19nwSk+ID8xmUzC6/XC5/NBLpdj586drHEWF7OWUl/d+XfS9fH5fAiHw0yFsBdUq1UWaKTGwZTyWlpaYg2QG40GotEoisUixGIxZ1YTL5mS4eFhPPTQQ1hdXcXc3BzS6TTK5TIjxBsMBgwPD2Nqaoq3/AOZYt0kbOo+bDAYkEgkIJVK76rxcztI2p8q6judDjKZDAKBAEKhEIBbjWhmZmZYFzMut1M8Hsfp06eZZm+hUMDFixdZCwFitfCFxWKB2WxmOb9EIoHTp0/D5/Ph2rVrPW3OTqfDNiS1d6CoOJn91LqCC0gLuFarwWg0wmAwsN6ktyOfz+PKlSvIZrO8fbpKpYKTJ09iaWkJZ86cwfz8PJ588kk88cQTmJqa4txPlATDSHKVOk8LBAJcuXIFfr8fO3bs6NnNoRhLPB7H8vIyEokErly5wlJB3Y2zDh8+jFQqxdoOcgGvzWk0GjEwMIBsNguJRMIa6rZaLQwNDcFsNkOj0fRE9iVTjDiflDSmU5fMJ66BIZFIBKPRiEKhgL6+vk3Slt0gvqnFYuEUYS2Xy/D5fCzMTxuRZEGJRcQX3QEUeoZMJoNcLgeLxQKVSsXbGul0OkilUqyFO/UbcTqdcDgczJ3gajITAV8ul2NkZASVSgUrKyuIxWIsH0nUSap4Ie0cPiAtomw2CwBMWd/tdvNqzUEgtXyhUIhQKASBQMAslaGhIfT39/fUhZrWUzKZRCQSQTabZWr9RM5Qq9WsfI6v2iEvs3ZqagoOhwOdTofp6Hi9XjidTnz+85+HzWZjKmN8fUTiqiqVSkaDI0FeoVDI2r5xFbrSaDQ4evQoRkdHWWtBEpgmUE52ZmYGIyMj7Na+1+RHo1G8++67rP2EUCjEwMAA7HY7/vAP/xDT09O/l4BTPp/HxYsXkU6nsXv3buh0ui3zm7ej3W7jxo0beP/99xGLxRAOh2GxWPDoo49ibGwMU1NTnCiRBGr1aDab8fnPfx6PPvoofv3rX+Py5ctIJpOIx+OMNeN0OrFz586eXJxWq8UII8SN3rFjB44cOdJTcNBkMuHQoUOIRqM4deoUAODgwYOw2Ww4ePAghoaGeqLYkS5tMBjE3Nwca09C3GDgFlFBLBZjeHgYJpOJ17PzujkVCgU6nQ5sNhsGBweZwBedxGazuWfRKBKvJtra6OgoM7u6ZQX58CmJ45nL5e6YYKbblNTDuTy3TCZjzW+oU5nH44HBYIDL5YLD4diyCxgXiEQippBH4/eiFKdQKGAwGFjEl9IxTqezJ3V9uj1pU/f39yOXy7ECdoro22w2OJ1OmM3mnsj6JpMJTqcTRqMRzWYTNpuNs8DZ7aAWgyKRiBEGaK4sFgt0Ol1PDW5J9JwqaG4374mUQMqMvK1Jvup71B2MqhE6nQ7rf0jR3F4Jz7ePT0lkmUzGJpnr+KQn290Q6He+3P+wj0jakwtZmwJC3Uwm8ldJbY5SIveDarWKWCzGpDcpTM9XKY7U8Uicm4S7pVIp9Hp9z0SMer3OSAmlUomND3yci1Sr1RCLxdBoNLyLxMlnozkid4frIdoNSktRP1gALOKsVCoZoYHvuMQ4ozjD7XuJxqSMxD1u5wfqew/wAJ9QPFDfe4AH+P8JvMJo3V2b6Malq7sXs+B2dJc53e+Y9Kz0nHeyELo/g4sZejsRn/7N3cyZXtGtQk/P1muJF72DOz1Tdx+RXsYGsGl8Gut+TPrbe+L0+t1vx+0sq+55pFI0vp/VvR6610D3u76fd8FLpuTixYtYWVlh2ityuRx6vR5Go5HRle7WpetuIHJApVLBhx9+iKWlJVitVlitVrhcLkxNTfH6guRXJBIJvPvuu0zf5U7EAIPBAKfTCafTiccee+yeUUUiMMfjcSwuLkKlUmHnzp2QSqVMPwa4NTGDg4Po7+/vSbkgl8sxQsOFCxcgEonw1FNPsTQNl4AIFYCXSiWcPHkSN2/eZGkDArVrlMvlGB0d5RVsInW8TCaDmzdvIhgMwmAwwGg0wul0Ympqiun/8FnssVgMr732GvL5PJP32L17NzweT88VL8At6ZfFxUXGB67ValheXkahUEAmk0GlUsGhQ4ewd+9eFty513OTEsPq6iqTT1laWmJUVKVSiZGREeh0OkxMTPSsVM9rcy4sLODUqVPw+/1YX19n4f2BgQGWROdD3aNxy+Uycrkczpw5gw8++ADj4+OYmJhArVbD5OQkr81J/UGCwSDeeOMNbGxswO/331GXyOPxYMeOHdi5cycefvjhe27OVCrFtHjeeecdmM1mxmiivCfwcTTTZrMBAO/NWSqVGFngZz/7GaRSKSYnJ5naHNfNmcvlkE6n8dZbb+HEiRPYt28fDh06xH6Hgmw0h3w2Z7PZhN/vRyAQwPHjx3H16lWm7kdJfbVazbvyJ51O4ze/+Q2i0Sj6+/uZioPNZmOc416Qy+Vw48YNdoCWy2WcOnWKHbjZbBbVahV2ux3tdnvLzUSFHxsbGzh79iwWFxfx3nvvQSgUsrLBI0eOwOVywWaz/e9tzna7zYqgvV4vbt68iXq9zqJ9w8PDkEgkeP/996HX6/HCCy/A4XBwlqmgwuBEIoFoNIpYLAbgVgK+Xq9jYGAAer2ehcK3AikTULFxoVBgkppEkiCFOLvdjrGxMXg8ni1D6Y1Gg3U9i8fjyOfzeOuttyCRSNizAh8znWhheTweTrcHsXYikQguXryIeDzOigio3IjPRidNolqthmq1ygTZ6FnkcjlLJWzbto0JW3F5x/V6HVevXmVlbtVqlRWeX716FblcDm63G48//jgrNbzXuKVSCfF4HOvr62wNCIVCtuYUCgXcbjfvPC8hn89jYWFhE3OL+tnIZDKWS6f+agBqgwAAIABJREFUmfeqv+x0OgiHw4hEIlhaWsLKygokEglefPFFVkXV19fHiBkHDx7s6ZkBjhpCkUgE8XgcN27cwOXLl2G1WtmJMDk5iWg0il/96ldQq9XYt28fDAYDZ/FnWpB+vx/BYBCRSITlosrlMgYHB+HxeGCxWDgtnGq1img0inA4jHA4jFwuh+3bt8PhcGDHjh1wu92sF6bBYIDb7eakuEbSHCRyVq1WsbS0BAC/429oNBqYTCaMjY3B7XZz2pzdurjvv/8+Wq0WjEYjUxrgUwjc3Z+TNqfX64XX62W/o1KpMPA/WsBHjhyBSqXirItLbecpoQ+AsXlWVlZw/PhxTE9PY+B/WgButekLhQIWFxextLTETPp6vQ61Wo3r168zxk2vmzOTyeDq1atMOE6tVuPpp59m5isRT8LhMAwGw5ad5vx+P65fv465uTncuHEDe/fuxVe+8hUUCgWcOXMG2WwWoVAIsVhskyA2X/DSrSWb3eFwsN6Xg4ODEIlErEYyHo/D7/fD7XZzYl0Q3Yt4kORbSCQSppUrl8s5l01Ra/junBtRyTQaDdRqNSOXE6WKi+nVXeQL3CLp22y2TQ14iWQ9NTXFiANcfS6S3kylUpvKzvianN3P200O1+l0MBgMrKRJqVTC5XLBbDYzeREuxeGkLUw1p+RjjY6OYmRkBBsbG7h8+TLa7TbjMNvt9nseft1qiQBY7aper0ehUMDy8jJnYbM7gfxrmUzGesA2Gg2k02m0Wi1IJBIYjUbOc0YmNmkqkZ4ulQ0Wi0Wm/Hg/wayejPh9+/bhz//8z6HVamGxWOD1enHmzBmUy2UsLCywUiSum5OU4uhHo9Gwm2Jubo7JZ3IBqTRUq1UmvEQNWG02G0wmEws48YkIU09HYv9otVocPnyYTapSqWQq59SOgU/0j3zalZUVBAIBjI6O4rnnnsPAwADvXp/d75RurMHBQRw4cABjY2N45JFHoFarGaOLuNBclAXIeiCtJ6fTieHhYTz33HN4/vnn8dZbb7FNSQoUExMT91wLVO1CByUdcE6nE7Ozs7h8+TLGx8d5vYNuyOVyRiN8+OGHIRQKceHCBfh8PtRqNTZnhw8f5kRy6W4FQdpUc3NzSKVS+PDDD9FsNrFz507W8btXcFLfo+oLuo0oSkvRQ5IraTabvMPRAoGANRm1Wq2Mu1ur1ZiuDB+ZklarxVT9KJWQTCZZQTH5h92K4lzRraNEAl+kiFCpVKDX6zepu/EBVe13H0K96id1WyM0F6TMH4/HEQgEYDQaGdeTz5zRYUbzoVarYbFYGImetJlIJ5YL5ZI0gakUTCQSIZ/PQyKRIJvNbmpnz3fOgI+tHoFAgHA4DOCWy9TpdGC1Whklk3SQtvr+KpUKZrMZJpMJJpMJCoWCsdDMZjPq9TpT2OdbKL/pubf6hWazCZ/Ph+XlZeZXKBQKmM1mNvl08pF4sclk4sxVFIvFmJiYwODgILLZLFwuF86ePYsPP/yQmYxUocIF5XIZgUAAkUgEjUYDpVIJb7311qZGps888wyeeuopDAwMYNeuXT3lonK5HE6ePMlodQqFAl/4whegUCg2tZLgChK6brfbmxaSSCRiphhXEKezmzu7traGUCgEhUKB//7v/8bk5CS+8Y1vwGazweVycaIFEvGdbmRKG+3du5cVsFNHaqPRiPHxcbb47wXSlTWbzbBarajVavjwww/RbrdRrVbRarUwPz+PU6dO9TRnYrEYJpMJgUAA//zP/4x6vc7UFJ577jns3LkTSqWSU8GGQCBg6oetVguFQgH1eh3ZbBYymQwvvvgi6vU6zp07d9csAVdwujnr9TorCQI+1oWlL9Ktwk2bgOvLIxOMuhfncjk4nU5YLBYWcaQbpdlsbml+USqDuJ2dTof5M6VSiRW+BgIBaDQazjeTRCKBUqlkPlv3zZzP51nAKJfL8aq9pM+nHin5fB7ArUMxHo9DIpGwsjwifnO55egddHc6EwgETDQtmUwinU6zciouoHdLG5PU9yjN0/173fpSXIqiKS1lt9vRarUQj8dZdJVclXA4DK1Wi1arxckdIf1bSn1Q/xziKxsMBqZpzAd0yxuNRrjdbmbhKZVKeDweVCoVCASCTf1zeiFT9JY4ug3Ubq/RaODQoUM9KdsJhUJMT09jeHgYBw8exFe/+lWcOXPm/7D3nr9xnen58MUhh5w+wzaFwzLsnaJIFUqUZctrW7Zsr73aYu9iSxykYRMgn4IAyf4BwS6QggQJkJ8DY9fJJt4GWV6XtZrVrE4V9j4z5HB67/39oNy3R4otnjPcvNgAugEhuxvp8PCc8zzPXa6CN998EwDgcDiYEfOoU5n0aEgBL51Ow2KxQCaT4datW2zD/uMf/xivvPIKnnzySUH32tzcDJ1OxwAD4peGw2GcPHkSTqcTd+/ehc/ng0ajwdDQkKDfm6wobt++jZ/85CcPLPC3334bWq0WQ0ND0Ov1ePHFF1lb9VHpF3mNyOVyPP3002wsJZVK4XK5MD8/D7lcjps3b8LhcAhm0kgkEshkMm4eUUlCGsDAZ2WFXC7n8mK71I5OTplMhr/8y79ENBrF5uYm2ze63W5kMhl8+OGHSKVSGB8f5477oz54khWdm5vDpUuX4Ha7kUqlUFtbi1dffRV79+4VvTBLY3h4GGazmZuQlEE6nU68//77bA3o9XqhVqtFN/Z+K4uzlAFCp2o5qSKpmTU1NQHAA7ViJBKBUqncdqBbU1MDg8EAqVTK6n69vb1QKBQ8n7TZbLxIhdYE1KyqrKzk+SEJZlE3mVTyCJAgJAqFAjdarFbrAw5rbrcbkUiE1e327dsHy39bPGxXG9E7MJvNiEQivNvX1NSwERM5bgktGQA80FUtzVIqKiqYRUTsIqFBLBatVovBwUGk02k0NDQ8UNMvLy+zM0AqleJu6KMinU5zvRoIBBCLxThTM5vN/CzLDdK7fTgKhQKrEJJ+sFg2EbDDxUlNjFgsBr/fzzUncQV3GiaTCUeOHEGxWMTFixe5LnnUteVyOcxmMyuDUwqTz+dRVVXF/izlhkqlYhUA0sLN5/NIpVLszyJGApFqTaot0+k0dxe//e1vo6amBpcuXUIoFGI5lD179ggSEZNIJOjv70dTUxOneJSC1dTUcHoudIOiRl0qleKGGunmhEKhB8TBVSoVBgcHWSNYSFBNW11djba2NmSzWdYefvfdd7G+vo5AIIC7d+9Cr9djaGjokYgpr9fL883x8XE+kVUqFba2tnDv3r2yVRAeFVKpFK2trUilUgyk6O3tFS1aLWpxlqYQNPekl0WuXUqlkrmdOw2NRoPu7m74/X7Mzc3B7/ezcc4XhVQq5d1Mr9ezJ0s8HodEIuFOGlAeKLmmpgaNjY3sFymXy/lZkHGQmF2ShJNJ2oNqebPZjKNHj6Kqqgp3796Fy+WC1WpFJBJBW1uboGtXVFTAaDTCaDSyGJVGo+EFSZxMoXV3aW+BTm/KICjNJy/QmpoamEwmzmKE3i/VtFS6GAwGFItFXL9+HQAYmllRUbHt6RyNRuFwOFAoFNDa2sroHalUinA4DIfDgcbGxh0tzlICCAXxN+vr65FMJuHxeMpSxxCk+G40GhmxATyIZrl27RqDiqmVLtb+jiIcDrMGC3VaaedcW1uDz+djv4ztWPzkwUgCXC6XC1evXoXVamW93ZGREcH3SYuIrOgCgQDm5uY4VVYoFOjs7MTu3bsFN1gAcP02MDCAY8eOYXl5GefOnYPb7cb09DSkUikrlIttyxeLRbhcLoRCISwsLGB2dhbLy8uIxWLQarU4cOAA42CFBKWENDYjPVi1Ws1K8Ol0moENZN0odBNMpVJwOBxIJpMIhULIZrNs9JvP59He3o5cLocLFy5gYGAAExMTj+xia7VaWCwWBAIB2Gw2ZLNZ3gApZRarDAh8pmi4uLiI6elpaLVahgLqdDoWkvN6vWwfUQ4uWNDipKKZClrqolqtVnzwwQe8W1KRXo7kQ7FYZOwq7cLA/QaPw+GA1WqFUqlke4btZomZTIYxkL/+9a+xtLQEu92OUCiE3bt347nnnkNXV5fgD4c6fk6nE5cvX4bb7cb169cRjUYfcF4bGRkRJR4sl8shl8u50VNVVYX33nuPxbClUilCodAXSlA+Kkh9z2q14tSpU/jwww/ZMU4ul2Pfvn2iFyd1YGlxkvwleZ8aDAb09PSwHpMYWZF0Os0C0jabDYlEAs3NzaitrUUul0NbWxtsNhsuXbrE7+NRQRI3hUIBs7OznG7THJVkasQEfac+nw+ffvopfvazn7FeEm0GsViMIa/5fL7sw0qQHQMpnrW2tqKtrQ2bm5t4++234XQ6kUgkoFKp8PTTT8NoNIoWSiJdU3JLnp+ff2DQncvleD6n0+m23YGo/nM6nTh79iwcDgc2Njb4Rbe3t2NoaAg9PT3Q6/WidnUy2Llz5w5b4AHA/v37ea5HuGKxQap9vb29+NKXvoRcLof5+XkeqaTTaej1enR3dwtypM7lcshkMpifn8eNGzdgtVoBAG1tbRgaGmK1xHIEs6qrqzEwMMAmQ3Tt2tpaWCwW7Nu3D62traL1fhKJBGZnZ+F2u/kUdrvdqK6uhsvlgtfrRSwWE2zHIJPJUF9fzwZG8XgcDocDUqkUu3btEiyxWRqkElksFtHY2AiTyYTKykqsra1BJpMhGAyy1aDJZOI/5ehKCTYyamxsxODgILa2tjA7O4t3330XDQ0N6OjoQGdnJ771rW8xLE5M0JwwHA7jvffew69//WtmYhB4m0YDhGV9VGQyGbZb/7d/+zdWcKupqcHo6Cj6+vpw5MgR7N+/X9TsieqX2dlZfPTRR0ilUpDL5dDr9fjKV77CQG8xeNrSII0cOknn5ubwj//4j8ybpRna/v37uZv9RVGKgb148SJ+/vOfM2pnZGQEf/VXf8VskXJ2dJlMhsOHD8NsNuPEiRO4ceMGenp60Nvbi927d+P48eNQKpWiO5QE7LDb7YyOCgaDPJJJJpOoq6tDU1OTICMjtVr9gOOX1+vFrVu3UFNTg+HhYbYBERsk3Wr5b2Nnh8OBW7duAQDDEJubm9HS0oLu7m4e64kNQdsGFeptbW0YGxtDY2Mjmpqa2JDVbDbDYDAIOtk+79qEBOrv70cwGGQ18Ww2i0wmw0NqEjJ+FP6RZnH19fWYmJhAR0cHjxB27doFi8VSFuaRrCEsFguefPJJZDIZyGQy1NbWsp6qGG/HL3oWCoUCJpMJmUwGTzzxBMLhMKN9LBaLYKU4chjr7e3FoUOHOB0dHByEWq0WzBr6oms3NTWhoqIC+/btg1arRXNzMxO6qdYU+yyUSiWGh4e5ZqcUktg15H9KbKjtNmoa0dTX12N4eJhPMKlUiu7ubjQ1NZWt9l5RUYGGhgb09fWhoaGBSz6qyQ0GA1uMlKPjDIgU+KIxBKEuJBIJYzhpwZRzEyR1EY/HkU6nHzjRSrthpaY7j/qwKB0mG7lSxAoBq8V2k2kUQaMP4vzRPVVVVQkCjwv5OaRkR3A+un9qZgj5OfTcqJNa+gyUSuWOpVTIG4eQY/T7k7ofIF7+JJ/PIxaLPdCFfVhqhrDAxDQR8hxyuRx3qEn4mhpxYtBsDwf1Xui6wGfoKHpH1Aza5j4fq+89jsfxOxqP1fcex+P4vxSiCsRUKoVMJsNHNwG/JRIJz7N2ktpRXUF/iJO4U4FmCkrLiZa0E10agmZRSkPcUUplxDYaqL6m1PnhoOuW3ruQoGdK4AFKuagee5jEsF3QOychabqn34aQ9uf9LAKPU6lTClAQE1QukN8pXY/ufycKh5lMhtknpSytnZY5gr/MfD6P06dP4/bt29z5S6VSiEQiaGxsxOTkJGpra9Ha2lpWkZ3P53H16lUsLi5ibW0Na2trOHjwIL73ve8Jthl/VGSzWbz33nuYmppCX18fent7odfr0dHRUdZ1/X4/Tp8+Da/Xi+npaUQiEdTX10Oj0eDo0aM4cuSIqOvNzc3h+vXr2NzcxO3bt//HTLO6uhovv/wyBgcH0draum3HFrj/TAkkQn9UKhXDIPfs2YPa2lp2WtsuyIc1EAjgX//1X7G8vIwXXngBo6OjZbE7vihKYYJnzpzB3NwclEolVCoVN7jE9DYIY7u+vo633noLwWAQWq0WCoUCzz77LPr6+lBXVycaXkcb6vXr1/HWW28hl8tBq9WioaEB3/rWt9DW1lb2jBMQqb5ntVq5FS2TyZBIJOD3+3l+mMvltpWk+Lwg+NvGxgamp6dZn0WtViOdTu/YIh64/6GurKzgypUrKBaLzNR4lJjTo+43kUiwL+elS5fg9/vZuUsoI6U0fD4fZmdnsbS0hHPnziGdTnN2QgCPzs5O1NfXC1ZGIJmXhYUF3LhxA9euXYNarUZTUxMP95uamtDX1yf4enT63LhxAzdv3oTlv02cSPAN+J9NkXKCAAIrKyu4efMmkyJIgEtMkCIj2c87nU7o9XpotVp0d3cz0Vrs4qSG2ObmJs6ePYtsNovGxkY0Nzfj6NGj7NXzv744AbBxUSKRYCxpU1MTcrkc3n77bTQ0NODP//zP0dXVxamOkF+Q7NNu3rzJolGkb1NuW56iUCiwQ7Tdbsfy8jKqq6u5Pb9r1y5R6RjpxXi9XjZdOnToEOLxODY3NxnhJDQo3SQgdj6fx+joKKqqqqBWq9k1OplMIhgMYnNzE62trYKuXVFRgdraWpjNZshkMgwNDcFms2FqagqRSASxWAwtLS3YtWsXGhoatr0epZk0c4xGo/jNb36D2dlZ1maiUqS1tRXHjh1j3SYxHyiBJ1wuF27fvo179+6x8oDFYhENY3S5XDh79izW1tYQj8dRWVnJjunnzp3D9evX8bWvfU20jygp8C0uLiIWi7HMK33LwWAQY2NjZTupi1qcVA8RvI7cpsgWj47zlpaWB6hF212TFO0Iq0gaqFqtliFt5QadcpFIBB6PB06nEzU1Nchms8zFExOEPopEIkzYraurY8GojY0NUawXgqGRj2ZDQwN6e3uZHkcCVyQVQ4bFQoIkNcixSyaT4cKFCzh37hxSqRTsdjva29tZlW67ILA8pZypVApTU1OYmpriv0NaSrt378aePXseqL/EPBPSRl5dXWXLeVIcEBvBYBC3b9+Gw+HgUZ1CoYBcLse9e/fg8XgwMjIi+rqBQABLS0vsewqAkUhLS0tIJpNob2//31+cFRUVbDvvdDrhcDhYRycWi3GqQbbaQl9GKpXCxYsXsbCwAI/Hw+Tiw4cPQ6PR4P3334dOp0NPTw/kcrlgM1ZiUMTjcVy5cgU2m42Fp2guWw5zhuzk0uk06urquDZMp9OYnp6GzWZjdoZcLt8Wt0ozsD179uCP//iPeVFmMhkmGdNsz2QyoaurSzCLgtgtNTU1LDkaj8dRXV0NnU6H3bt3o62tTXA6l81m4XQ6sbW1xbhWg8EAjUYDpVLJmlIEmKDFLDQNzWazrEB47949LC8vw+fzAQDT8err6wVnUYlEAvF4HBsbG5idnUU2m8XevXuhVquxZ88eqNVqnDlzBqurq4KfabFYxNraGpcLS0tLnIGpVCqMjIxAKpXC5/Ox2zVt5GLLM1GLs6mpCQMDA8jn83A4HLyT0eCYWAtiYFvJZBKnT5/GhQsXGHEzNjaGr33ta7h16xZ+9rOfoampCcePH2c2ipDFSc2LYDCIc+fO4d69e7Db7fd/6ZLFWQ6KhdAgpR8d/R5UizudTtTX1287KJdKpZBKpZicnGRF9oqKCjidTnz00UeIRCJcvzU3N2NgYEBQCkrXaWtrQ2trKy5duoSpqSlEo1FUV1ejubkZX/3qV9HS0iL4eplMBpubm7DZbCzFYTKZ0NbWxlrGFI2NjQ90tIVEOp3GxsYGtra2cOPGDczPz8Pv9wO4D5lrb2/f1iqhNOLxOJxOJ9bW1nD79m00NDTg1VdfhcViweHDh6HValkgXegzKBQKWFxcxM2bN2Gz2bC+vg6tVot9+/bBbDbj+eefRzqdxt/93d/BbrfD6XQiGAyitrb2f3dxEpaWxL7S6TSnrxMTEzCZTIKJxqSe4PV6WdvHYDAwm4Fy983NTWQyGSwtLSEajcJoND6y4URFejQaxezsLFwuF9bX1+F2u1mThpAhYlKtZDLJni6hUIi1iQAw04M+JDo9hLwMqn1jsRgikQgjkDweD6anp9mnMp/PY3NzE3Nzc6iurhbFfKGRATVUKLshK3sxek8P6+HS/16qyEgawfQut3vORNQOBAKYmpqC3+9HJpOBVqtlUWaCcIp5Z1SG5XI5NskqZTxVVVWhqakJPT09yOVymJmZQV1dHUwm0yM3ABrBkfyryWTC4OAgGhsbUVtbi1Qqhba2NkilUnY0qKmpEUXCB0Taznd1dcFsNuPatWvY3NyEXC5HMplEV1cX3njjDTQ1NQnmMhI9qLSJ0tTUhP7+fmi1WgQCAdjtdty5cwe1tbWcKg0ODj4yDSPgu9VqxU9+8hNW5w4EAryDlxrICo1AIID19XU4nU5u3BDD3+fzcfcWAKvPbadxQ8Bu4oguLCzwhkR80Wg0img0imKxiBs3brBlwMDAgOB7B+7Tp1paWtjmQaVS8fhAaE1Pi/zz+IlarZYtE4aHh3kWSxDHR4Xdbse///u/Y3NzExcuXEA6nWbd2kAggFAoxO9MzOlDEEjqAZAcjFarZYL70NAQTCYTVldX8d5772F0dBQGg+ELN4FSLDil2AMDA3jxxRdZAC6RSODgwYNMGVtcXOTmoZgQpfhOHxLpBVFaR+oADQ0Nguu4XC7HbmU0xKcBt9/vx9raGtxuNw+gSSN0u+tns1nWOk2lUigWizziIMqRTCZjASwxw3eSQrTZbMjlclAqlSgUCuxUFQwGuXETCoVYMvNRQTpEm5ubWF1d5cYVEXoLhQLXcqUkZrGhUCj4GZIT3NraGhKJBBoaGliB4FELidy74/E4s2iA++mj1+vFxsYGU9DEgBJkMhmamppQWVmJwcFB5HI5tLe3Qy6XY21tjX+2WNIyOVonk0le3Fqt9gHvFqrn6ZQVImtaei+EJ6YGE2HNaQwYjUaRSCREKTLyzxH6F/P5PK5cuYKrV6/izp07fJMkS9Lb2wuj0Sh4cSYSCczMzLD0BnCfluV2u2G327luy2azaGhowLFjx9DS0rJt8yIajbItm0QigV6vx9GjR6FSqfCrX/0Kt27d4tqZmBViwu1249SpU0ilUgwgj8VirCVULBYxNzeHmzdvoqOjg7mwnxfFYhE2mw23b9/G1atXce7cOUYcUepUU1ODjo4ONDQ04IUXXsDAwMADVn5Cw2QyoaGhARUVFVhdXYXX68W//Mu/oK6uDj/4wQ/Q19fHlLUvCoVCwSfN+Pg4pFIp/H4/bDYbtra2cOXKFTz//PMYHx+HUqkUvPlZLBb8/u//PitsZLNZeL1ehMNhrK2tYXFxkbWSNRqN4Hfm9/sxPz8Pr9fLZlijo6NoaWlhfiVR68QQ2dVqNes9+f3+BxTrKfU3Go2s+OhwOERnOoDIUUooFMLW1hay2Sxqa2u5fpFIJIyWEIDABwCG/MlkMqjVamg0GmaSRKNR7gKTWnd9fT1qa2u33Tnpo5bJZDAYDCgUCmhubuaOIv0dsXAtUnujzSidTkOhUCCXyyEcDiOTyXANR3WckOtT/UvPgWpPGuqrVCo2ciJXsHJOTjoZdTodzGYzi31VVFTA7XazH+Z2niakuE6qfgSUSCaTCIfD8Pv9XCcK9Qqprq5+oFuazWY5K9sJAIVS6lL2FHnkPJy2lv7d7a4pk8mg0WjgdDqZ9ZPP5xnCSVkWsWFisVhZonKiEEJOpxPz8/Noa2vDgQMHWM4xmUzik08+gcFgwMGDBwW1pckuMBAIoLKyEsvLy4xkodODuHiUztXV1W27OOvr6zE5OYlsNosnnniCZQpJ1S6RSMDr9fJMUWibn3xQzGYzJiYm+EX4fD786Ec/wtraGo4fP47du3ejp6cHHR0d2/puSCQSjI2NoaenB5OTk/j617+OS5cu4Z//+Z+h0+nwwgsvsLGv0Wjk2nsnH2x7ezu+9a1vcXYRi8XwwQcf4NNPP8Ubb7yBsbGxba+hUqnwjW98g5tum5ubOHPmDE6dOoWVlRVcvHgRLS0tmJycLJsv+XDQezMajYLfmdFoxJ49e5jalcvlUFtbi7q6Os7wHvbp2e7ZUgfcaDRiYWEBFy9ehEQiwbPPPssopkwmg4WFBWxsbGBhYYHHKWJD0OIkLiMN8xUKBTo6OrC5uYnNzU1GuIgxHKqurobZbIZGo0F7ezvS6TRWVlY4xSgUCszZU6lUgo1jaUFTEE80EolAIpFw6hSPx0UheYisrNFo0NzczHNUp9PJ6WBHRwdGR0dFGabSC6UTeWNjg09pMibu6ekpG7daaj1fKBRQVVUFvV6PQCAAjUaDdDoNh8OBYDAoWG+3srISJpMJjY2NLMQlk8m46xwIBKDVanfkE/KwnTuh08Skn2Q+Rcr/9BwIhkiHAHE8haLaSrMjEjYjyRqpVMrO6m63G/F4nAkNYkOQPye9PEJnUOcvmUyisrIS4XAYN2/eZJ1ZMSGXy3HkyBHs3r0btbW16OrqwuzsLObn51kesre3t+wdmEDUNI4APtuFS8ETYsPv9+PChQvY2tpiAxuz2YyWlpay7tXhcGBqaoqVDDUaDcbHx2GxWAQLcD0cJLwVDAbh8/ng8XgQj8fh8/mwtbWFO3fusAK6mFSZ4HVerxcnT57E1NQUNjY2AICtBfV6fdmYUnLm9vv93Eghi0Qx70ytVkMqlcJgMECpVCISieAXv/gFGhsbGdRy8eJFrK6uore3F52dnYII3BRmsxkHDx5ELpfDD3/4Q7YYJAX/WCyG8fFx7m+IDUHO1qFQCF6vl08akuygF0rDaTEnJ99AVRW6urpYyCsD12wYAAAgAElEQVSXy8Hn82F+fh46nQ4DAwNobW0tG8JHJ1zp7kW7cDkdNAoSo3I6nazqRtpH5UQoFML6+voDcoo0miiHIkURiUS4yba+vs6yjaFQCC6XC8ViEVqtVlQNTnhou92O27dv4/Lly/z/q6mpgU6ng1qtLptCRhje0kZNqRmw0CB5GsL8ZrNZ3Lt3j0XoVCoVpqamMDs7y+wcMc+aZGvW19fxySef8FShUCjAbrcjn8/j0KFDaG9vL+u7EKS+V19fzwNbo9EIh8OBX/ziFzxSqaurw8GDB8tS3ysNYiLQC9FoNLBYLDAYDDtanIQHpsWpVqthMpnKXkjAZyCKZDLJp6XYIXNpkHB2PB7HyMgI+vv7+aMq9yMvFApYXl7GnTt3sLW1hY2NDW5c1NTUYHx8HGq1GpOTkzCZTGhvbxd03XQ6jampKUxPTyMcDkOn02FwcBCDg4MYHh5Gd3c3O2WXE5WVldwPaGhogE6ng8lkYsVAsR12s9mMV199lfVrQ6EQLl26xMqSzzzzDPbt24eBgQFotVrB1+/q6sJLL72EGzduYGFhgSVbpFIpxsfHodFoMDExwaWO2BC0OElUijh7TqcTt2/fZpCzVqvF5OQk4yzLCTrhShenQqFgalO5L7rUJY1qIKVSCb1eL6ot/3DQzJPAzVTblBvBYBDLy8vQarXo6+tDV1cXu4qVG6U0P9KVpXdGWYnRaMTx48dFpV2ZTAYzMzO4evUqgPt18/j4OF599VWYTCZYduhBQt9cRUUFAyUMBgMLqYl9ZyaTCc8++yysViscDgd8Ph+mp6eRzWbx2muvYXx8HKOjo6Lds1tbW9Ha2opcLof33nsP4XCYscuDg4NoaWnB6OhoWRRCQMDipEK5WCxiZGQEcrmcRx01NTX8si0WCzQaTdkfk0QiQXd3N6qqqlikl+pQIb6Jj7quVqtFZWUlXnjhBTQ3N6Onpwfd3d1oaWkp+yPSarU4fPgwkskkK63t5CTu6+vD17/+dcYXGwyGHXc6JRIJo3UefmcKhYIzHbHuV3K5HM8888wD89Zdu3bBbDaLOnm+KEiFsKKiAk8++STXiMS9FPvOSEO2pqYGR48eRTQahd/vRz6fx549exhQX260tLTg1VdfZaWN6upq1hfeyXVFCXwRPrH039CLKHWeKjdKu4qktPbbULQDPkP4lEpUCIGWPSoIdPDbuBZ1xOl3JbD7TuNR72wn912KEAMedP3+bbwv4LNOMykQlr63cq5F16P/TvdN1yz3vunbevh5lF5/m3isvvc4HsfvaDxW33scj+P/UpTVAqUGC0G2gM/gYXV1daiurhYM4ysNwqfSYFcqlbKSnU6nEwWmpkZQPp9HMBjkey4dYhO9iawLhdwvUdLo/xJ8jzDASqVSMGDii4KoTS6Xi++3oqKCKVhCh+V0vzQOCwaDnNoRZI5A2ztVziu9Po2CGhsbRSkFlgal4tFolDvtNLKqra0tKwUllzjykQHuG2XRbFMMCaJYLLL8DTUyS0WkSel9J8+1rMW5tbWFtbU1zM3N4YMPPmA/wsbGRrz++utoaWkR7VNZLBbZhPXdd9/FiRMnYDAY0NfXh/b2drz88svMJBHyC2cyGTgcDgQCAZw8eRJWqxVWq5WZ9QAwPj6OV155BUajEXv37hU04yIVt0gkgtXVVfh8PvzmN79BMBjEN7/5TezZswednZ2CPTQfDkIwLSws4G//9m/h9XoB3G9qfOtb32I7DKHMfXJBe++99/CrX/2KP6TW1la89tprMJlMGBoa2lGnGQDOnz+PEydOsIRJX18f/uRP/gT19fWirR9Kza0++eQTLC4uIhKJIBqNYv/+/Xj99dfLGq253W688847cLvdjGh74403MDExIWpDzWQyyGQyuHbtGs6fP8+wVrlcjq6uLhgMBnzjG9+AxWIp2/4PKEPgi6heDoeD4XvAfb5jPB5HNBrlk0VM0E5E6JX19XU25JVKpWxbJ3TB04nm9/uxubkJu90Ou93ORF4i87pcLvZ/FBKk/kBsDK/XC5vNhmAwyE5Y5cy0KEj6hRzNtra2+CTyeDwIh8OCx1WknxQMBuFwOLC4uMjD/FQqxSa0NJcs5zQimpXL5cLy8jLPlFUqFX8HYlFYZG5FTtTr6+sIh8OIRCLo6OgQBQsstWMIBALY3NyE2+2G0+kEALbWEBOkA0wsKqfTic3NTc7y6ITWarWMESgnRAHfZ2ZmsL6+jmvXruHTTz+FWq3G/v37EY1GsbCwAL/fD6/Xy5w5MS36fD6PW7du4dq1awiFQhgbG0MwGMSVK1cQiUTwxBNPIJlMMlB5u4hEIrhw4QIrCajVajz55JNQKBS4fv06pqammHlPpkFCIhQK4fbt29jc3GQJy+HhYWi1WsRiMZw/f55niOWEzWZjz1PSSyLYpM1mY58Xk8m07bUKhQKmpqZw+/Zt3Lhxg31U8/k8rFYr3n77bbZ1JJVDsUoDN2/exOrqKs6fP4+5uTkmIwcCAcRiMWg0GuY5Co1oNIq3334bc3NzmJ+fh9Pp5BKlu7tblCYRqWh89NFH8Pl8WF9fR6FQwODgIJtQiU3rY7EYQqEQCoUCp8VGo5ElOMPhMP7rv/4LWq0Wr7/+OkZHRwVfuzREka1JXW59fR1LS0vo7u7Gnj17UFNTw7tTOp1GJpMpy4XZ4/FgbW0NCoUCZrMZiUQCbrcbDQ0NCIfDosDU2WwWbrcbHo+HTYBaWlqg1+vZTzKdTsPn8/GDFhLE4XO73bDZbACAJ554As3NzbBarfB6vaxcUM5JFI1GsbKygng8zsZFBMwgQDWpiz8qaBG63W4sLy+zWBh92KQQR4RgUsIXU8tmMhmWhyT8NakEUD1ezsmZzWaxsLCAqakpbG1tIRQK8XXo2QoJArb7fD7cvXuXCfiEgTWZTFCr1aJONjqJScWPZsa1tbXswJ5KpbC4uMhz1XJDlIYQsckPHz6MiYkJtmOz2+24desW5HI5DAZD2dZqlHKNjIzgwIEDOH/+PO7evQuJRIJwOIxQKCSYlVBXV4dXX32V8ZnFYpGbVPPz86irq2OlgurqasELSaVSobOzE3K5nIm2zz33HMxmM9555x2srKwgEAggEAgw/1NMyOVy9p/s6+tDIpHAT3/6U2xtbQm+BqlJRKNRTE9P49q1a+xkTRGPx7G+vo5oNAqXy8ViyELI8slkEhcuXMDGxgY++eQTzM3NcZpIG2tTUxND78qxhSSwxMTEBBQKBbsACG3cAeADw+v1YmZmhkWftVotxsbG0NXVJUqLie5Np9Mx/9ZisTBeeWtrizf7RCIBmUz2gBKD2Ocg6m8TM7+7uxvt7e3IZrP88VM9WFtbW5bSGPCZG3NTUxMmJibgdDqZsBuPx9nnQkioVKoHPkZqOEWjUYbulXZWhb5wInFXVlais7MTMpkMu3btQnNzM06ePMlkcdKCFbs4S31In3zySeZbil2ckUgEfr8fdrsdS0tLGBkZQW9vL/+ebrcbKysrSKVSCIVCCAQCgj/UTCaDu3fv8sJfWVl54P5JwkStVpdFDAfuU/Tkcjm6u7vR2tqKiooK+Hw+UU1GOt3D4TArL9bW1kIqlaKjo6Ps0oMUGOvr69He3g6Hw8HCb+FwmFN6hULBROtyfHlEnZzNzc28Y8hkMmxubuLy5ctIpVLYu3cv+0TIZDLR6BaJRILBwUFW4SMdHeA+R06ocng8HofL5UIsFoPdbmf/CqlUinA4jEQigbW1NYRCIbS3t2NsbAwWi0WwvIparUZ3dzekUilrBREjx+fzIRwO74jtUldXh7GxMZZg9Hq9/Pu0trZibGxMkLM1cVhpZNDZ2YkXX3yRa6vl5WXMz8+jqqoKyWQSkUhkW/0cShE9Hg/m5uYwMzODQCDwwN+hEZMYvdqHQ6FQ4JlnnkF/fz8WFxdx/fp1AMDevXvR3t4uysSJ3jmpJRJT5bdpuhQOhzE3Nwer1crqHS+99BLMZjN6e3vLFkYXtTgJ6Evygh6PBydOnIDJZMJ3vvMdmEwm6PX6sihOlZWVGBkZgdlsRjqdhsvlYgnKqqoqbjJttzij0SgWFxfhcrlw/vx5lilUKpWsxEbSnmq1GhMTEzyTEhJqtRq9vb0sJBaLxWC1WlkEOhgMiiJxPxzkhUK6tXa7HVtbW4jFYrBYLDh48OC2JQN1vkm+FLiP3T1+/Dh/lDdv3sS7777L1KxQKLQt3Y+ogRsbG7h37x5rSZUGjYLS6fSOFueLL76IZDKJH/zgB7hy5QomJiZw4MABdHV1iVqcoVAI8XicewCUKf02F2cgEMCdO3fgcrkQjUZRW1uL48ePY3R0lA+rckK0HUOhUMDGxgbW1tawsbGB+vp6ZquIUd97OKjtTymIzWaDx+PB8PAwOjs7WaBqux0onU7zabOxscGq39XV1TwKIn3ZaDQKq9WKbDaL5uZmUbubVCplUDOpk0skEvT19cFoNHLKvF0QsyWRSLAeTTQahdfrxZ07dxCJRPikNplMgvR2S52gKSKRCKxWKzQaDT9HApeX2hhud91isci27QC4abW+vg6r1QqtVouuri7WbRUTZGmRTCbhdDoRDocRDAahVCphMpnQ19e3rabsFz0L4P7G4fV6UV1djYWFBeRyOWg0GtZFKjcF12g06O7uRk1NDZaXlwFgx3hdQOTipPngzZs3cfLkSVRXV6O9vR0dHR3o7e1FbW3tjgi2pFV7+vRpnDp1Crt27cIrr7yCtrY2DA0Nsezio4K6nVarFXfv3kUoFPofHzM1lbxeL65evYq+vj7s2rVL1A4nk8k4xTpx4gT8fj+effZZfOlLX2JV9u1eTLFYfGBORt3epaUlBjuo1Wp8//vfR19fHwYHB8v+gDY3N3HlyhVYLBauu+rq6thns1QpQsjvfuTIEezdu5dlR3/605/CarWyGobFYhGdQSUSCczNzcHj8eDjjz9m24eGhgYMDQ3hmWeeESTC9UWRSqVgtVoRDAZx+vRpLC4uMtOFxknlhMFgwFNPPYXZ2dkHiOc7DUFKCH6/n3ezYDCIlZUVhMNhGI1GdHR0MFtfzEMjRyZC8lBn0Waz8XysoaGBxx9CUxG5XA6TyYR8Po/e3l5Oawg8QLIcpF5P1xdaI5Oyu8PhgNfrRTAY5NSRdIDE6OGWKryvrKwgGAzC6XTyDK2xsRFGoxF6vV7w5kEtfq1WyyJjdHJSBzEWi7GOjlD2T2VlJSscNDc3I5VKseUEfdgPa/8ICWpKkQ2ix+PB5uYmvF4vDAYDtFot9w12ElQPp1IpeL1eVFVVoVAoYGtrC/l8HjU1NYL8bR4OauKRCBwA1iImvaFyYtvFmU6ncfHiRaytreHs2bOYnp7mbtXQ0BBef/11qNVq0V3JVCqF1dVVuFwuvPnmm5ifn+fivb+/H4cPH8bevXtx+PBhUUrfTU1NePnllxGLxTAxMYFQKITp6Wl4PB58+umnWFlZwb59+/Dss8+ip6cHBw4cgEwmEzz6cTgc+Pjjj2Gz2XD27FlEIhFm7pvNZrS2tgpWg6Da0Ov1YmpqCidPnmT0SWtrK775zW+itbUV+/btg8FgEPxxVlZWorW1FXV1ddDr9VCpVNjY2MBvfvMbeDwe6PV62O12hMNhFItF7oxul9aTR2ihUEB/fz+nw7lcjrmsNDvW6XSCT2KPx4MLFy5gfX0dP/3pT+HxeJBMJlFVVYVdu3Zh7969ZcMhS4MkPElbmEqnRCKBl19+GUePHkV7ezt2794t6qDRaDTo7e1FPp9He3s7gsEgLl++jMXFRXzzm98U7MPycGy7OAlATvAnl8vFbHQCHZAynVDbPwqqd/x+PztgpdNpxONx1v0kE1ni820HqJdKpaitrUVNTQ1SqRTUajVsNhui0ShDAevq6mCxWNDU1PRI0efPi3g8DrvdDrfbzR91Lpdj/xGxnWqaHdNJR51TOs3oWqV81O1OOWp85PN5HpKTNtPD3jEkDF6qgv6o6z68SdI3QPdJC1YMfLPUWpDACwTQJ9HnYDDIz5ye8XYbdmVlJeRyOVtPVFVVIRKJcLYgkUh4BOJ2u7GxsQGdTicK5ED3Sg0nchMjmCj5dpaTim+7OCsrK2EwGJDJZLgpk0qlYLPZcPHiRVRVVaGtrQ3Hjh1DbW0tszy2C9qF1Wo1mpubObVIp9Pckia1OIPBgN27d7P2z6NqGXohBPMLBAI4d+4c/H4/qqur0dDQgIGBAT6RxT40h8OBd999FwqFAq+88goqKyvx4YcfMjqGGiRCgtQfWlpa0NXVheeffx4zMzN47733AAC3b9+GzWZDfX09mpubodPpOO16VKZCH4lEIkFrayv6+/uxtbUFm80Gn8/HXi+xWAxNTU0YHh7G8PDwjsHv5YZCoUBLSwuqq6vxzDPPwOfz8Tdw7do1XL16FYODg+jv70d7ezv27NkDnU6H9vb2R24olHIXi0W+5gcffIBisYjR0VF2Yd/Y2MDGxgZ++ctfIpPJ4MknnxS0wYbDYfh8PtbFdTgc0Gg0SCaTuHfvHgqFAl566SUkEgnU1NSITssFyZTQrk7MEzIeCofDWF5e5tOP5CWEULuoLtJoNCz0W6q2Fg6H4fF4sLq6inQ6DYvFgoqKim13ZFIQoHuQyWTIZDLcsdVqtairqxOsK/twZDIZBINB1rehnZwQVGLdy0p1eevq6hivSuONfD4Pl8vFGQOB4LcLyjI0Gg0MBgOCwSByuRyD9klBsbq6eudyGv+d1ZD7GKk6CI1Sb5HW1laoVKoHDKkIbUVWBzQ73K67TBldY2MjOjs7USwWoVKp2OdGpVKxbQSB1cVIb1L/gbI9v9/P/5b8UUi7qpyx0raLs6qqCp2dnTCbzTCZTPD7/VhZWeGOIqVJb731FhoaGvDlL3+ZoVtCCmG1Wo3vfe97eOmll7C6ugqPxwOXywWn04lUKoV79+7B7/dDr9fDaDTCbDYLum4qlcLGxgacTifu3r2Lubk5PPHEE+jp6SlbcAm47+vxne98B36/HydOnGD/ycbGRphMJrS0tJQlckbg8LGxMahUKqyvr+MXv/gF3G43fvKTn0Aul+PLX/4yhoeHIZVKBekVSSQSrlcvX76M6upqpFIpRCIRGI1GfOlLX4LZbBYNYSsN4u4ajUb09vZCoVBgeXkZMplMkCkQcH+D6u7uZkdzYnwkEgmcOXMG8/PzSCQS8Pl8jI2tqakR3HQzGAw4cuQIuru7edS2sLCA27dvw+/3I5FIYO/evRgdHcXY2JjgzfXevXv41a9+xfKjhFMG7oM+NBoNzGazaOA/hWBpTABsnz09PQ2tVov19XW4XC6Ew2E2i923bx9ruAqJ6upqRsS0tray/TwhkNbW1tgpWCaTCcbWkt0bKW97vV7o9fqyZQopCMGzuLiIDz/8EOFwGP39/axoR7hLsUFkdRpNqFQqnDhxAolEAvPz8ygWi9i9ezdaW1sFI5AkEglza30+H1ZXVzmDaGpqwt69e2EymdjUp5ygLEWr1UKv17MbHdV2QqJUpb+UbZPNZhEMBplFY7PZkM/nRZP5lUolOjo6oFQqsWvXLmxsbGBmZoYhfWR4RSZHQq/rdrt5gRP9TqFQQK1Wo6uri/1qy+0yl6UhRBAuMjbK5XLI5XKQyWQYHR1lUWExc65ischjDwKOk7muUqlEe3s7lEolg863C0pTIpEIrl27Br/fj127dnEXk+zrxEYkEsHW1hYCgQDu3r2LdDrNLfTR0VGYzWa2hisnqMng8/lw9epVRCIRRCIRXpxms5k3AiGRSqWQyWTYhZmae1qtFgMDA1AqlTsCj1AQnI+isbERExMTO1IQJAijy+Xi52A2mzEwMMBmQmJ6BgTdjEajWF5efsC/hPxtCIIqZIHOzMzgzp07SCaTiEajnHZXV1fDYDBApVJhaGhIyGHwWODrcTyO39F4LPD1OB7H/6V4vDgfx+P4HQ1RSgibm5sIBAIsGkWDcqVSiba2NqaTiam3aAyTSqXYRYogVnV1dWhuboZcLkddXZ1oqYuZmRmGCJY2EkqhVkJrT9LG8fl8WFpaeqAxRUPxxsZGHjtRPSR2jkpgj1gsBpvNxrNQtVq9I3sG6hPQmIPe2U5qzdJvgq5bX1+Ptra2soWqCWLpcDiQSqXYMf23EclkEpubm9xFlkgkaGpqKttChFT0CSRBCoFksyiTyVBXV1d23S3Kdv7ixYv49NNPsbq6isXFRZ7xdXZ24o033oDJZEJvb6+o7h/5bjgcDly8eBGLi4ssL0JKa83NzThw4ICoX9LhcOBv/uZvsL6+zoPi2tpaKJVKHDp0CAcPHkRHRwf27t0r6EOisdEnn3yCH/3oR+xlSXKgpFHU1dWFkZERDA4OMvpHTPh8Ply7dg3Ly8t46623UFlZib/4i7/AwMAAuru7y55HzszM4PTp09wQ6ujowBtvvLFjM6fz58/j6tWrPNObnJzEG2+8UdYmUurc9rOf/QxOpxN//dd/jZdeeqnseywNv9+PkydPMiuppqYGX/nKVzAyMlLW9TY3N3H37l3Y7XZcu3aNhdOUSiWeeeYZmM1m7N+/Hy0tLWVdX7QSQnV1NaNvyMzH7/djeXkZ8XicJTa2a3UTLJBI0Wtra3A6nSyPGQqF4HQ6sby8jGKxiLGxMdHg+lL4Wz6fRyQS4Z/X2NgImUyGRCLBw+pHRal1Of1n+j1IW9Vut6OiogJGoxEWi2VbG/eHnwdhbbe2trC1tYVgMMgd73J0gIH7YlTJZJIRQoSgKncwDtzPduh0J36nTCbb1sl7uyDdJ5fLhVQqVfb9fd79ZjIZRCIRbGxssHGwUqkUZcZLkUgk+HRfWVmB1+tlFcJYLIZsNgur1YpUKoWenh4YjUZRmssUghenRCJBT08PZDIZhoeH2br9ypUrcLvd+Id/+AeYTCbU19ezstmj5n3ERtna2sI777yD27dvP4CuUSqVsFqtePPNN7Fv3z5MTk7ySSTkl9RqtXjqqafQ19eHjY0NRCIR3Lt3Dw6HA+fPn8f169fx/PPPo7OzEzqdDmaz+ZFps1wuZ0Od5557jgnVyWSSZ11nz55FZWUl8vk8DAaDKCczgoBZrVZWigPugzSamprQ2toqmlxQKBQwPT2N5eVlnDp1Cu+//z76+vpw7NixHdkqJpNJfPzxx1hdXcXHH3+M6elpHDlyhL0oy12g4XAYn3zyCdxuN/R6PSwWy46QSxTxeBxOpxMLCws4ffo0wuEwnnjiCdHPE/jMVnFtbQ2nTp1isYGxsTEun5LJJE6cOAGJRAKj0YiGhgZoNBrR82RRSghqtZpVvKVSKUs2EqSNUCFCduVSkxqqMalWo5lRMpmEy+ViEPHD5jmPCqlUCqPRiKqqKmSzWZaUJF1YIvLSA93uugS0JldvYvvTvdJLIeYD0bGEBP0b0qv1+XyIRqNQqVRsSV8OyoRmx2R7R9C00pq4nMjlcnC73SzSTfrCer0earW6bIIxaSIHg0EYDAbObsoN+r7i8TgDUYg+WNofyefzosyDCVrp8/ngdDqhUqkeqN2pdgbub2T/a/A9ioqKCj4ZCXVjtVpZTHdychIWiwVtbW2ChtqEUlGr1fjOd76DI0eOoL+/HyaTCXfu3MGtW7ewsrKCTz/9FPl8nlMJwu5uF2TRF4vFcO/ePbhcLszNzTFTHQBLJJKz86NCKpVy9lBbWwu/349r164xCCOVSqGpqQk6nQ5dXV2wWCyClOKIhXHjxg2cPXsWy8vLWFlZgV6vx2uvvfaArqzYxVQoFLC0tIQLFy4gEAigpaUF/f39OHToEOrq6sp2zM5kMrh37x6uXr2KfD6PtrY2jIyM4PDhwzuydqBsKhQK4ZVXXsHAwAAMBkNZ1wLAImd3797FO++8g0Qigb6+Pmi1Wrz22mss0Obz+RhnK/Q+aZGXBoHfk8kkdDodNBoNk0XKabyJymuIOEpNBalUilgsBqlUynKIQpFBEomEF1pvby/0ej2Gh4fR0tKCbDbLRGYCexMKSezJSVpH+Xye6z8CxxPlS4j6HqE/NBoNpyizs7Oorq7m+1Or1dDr9dwgEtIUoYXtdDoxOzuLra0tJBIJ7tK2tbVxjVj67ITs8nRybm1tsSFtqV7rTlBMRB9sbGyEWq1GQ0MDjEbjjmQ5iClDhHhijZQbpCG0tbWFe/fuQSqVYmhoCGazmQ8Sr9eLcDjMfjlCgr5B+iZKpV6I9mg0GrkB+f+LhhCFXC7nUQRxB00mE5qamkR36aRSKTo7O5FOp7/Q/4OMfQhkLiZoxAGAAfO9vb3o7e3F+Pg4M0LEflSE3SUtXalUyl3g4eFhQWkowdNWV1dx5coV3L17F3K5HGNjY+jt7cXo6CjUajXOnz+PaDQKo9EItVqN9vZ2xjlvFwSH7O7uxsDAAPr6+sr+nSlKdWVJrWGnLuGkCEFww7q6OpjN5rLqQgq73c5K9EQy7+npgcFgwMLCAtbW1nD16lXYbDa88sorOHr0KDc9vygqKir4MEkkErDb7SgWi7h16xbi8ThCoRCUSiWeeuopdHZ2lt2pBcpcnNXV1VCpVNycIZYE2QeICQIdU5SejPSf6eWVI7cokUig0Wh4zgkARqMRo6OjrHNTTmOEUu1YLMY1S19fHw4dOiRYt7dYLGJrawuzs7NYXl6GzWaDxWKBxWJ5wAxpYWEB6+vr6Ovrg16v5waWkOunUinEYjEWwyY+bLnNIAr6iDUaDc/yylW5LxaLbJ1A/ipqtbps/DNFIBBgycpoNIr6+nouzba2thCNRnH27FnMzMygp6cHR44cEZRBmUwmmEwmLC4uoq2tjckatMGo1Wr09/djZGREsOHU50VZb4jEpRsbGzE8PIzq6mqsrKwgkUhg3759gjpsVDRHo1FcunSJ/TAKhQI7gjmdTuRyOcTjcczNzTHxWkyqQ7zRYrGIpqYmtLW1IZfLYXFxEQGOOxMAACAASURBVA0NDUgmk5DJZKJrAoVCgf7+fiiVSly7dg2JRAIul4ttKoSwckjUzGazsf4rbXT5fB6XLl1CKpXCjRs3WOxKr9dvuxsXCgV4vV5EIhGW6lxbW0NlZSWPrIi4TgwKIScULSJq4BH9TC6XY3FxERcuXGDgCNkylLNYaURH6gfhcBhKpZKBGKTEsV2YzWY8+eSTMBgM8Pv9qKqqwvnz57mZmU6nEYlEymYS9fX14Rvf+AZmZ2e5BiXQe2dnZ1kd9tIoa3HS/FCv12NkZASRSIS1YBOJhKBrEPNia2sLb731Fm7fvs2SFw9HLBbD7OwsYrEY9u7dK2o3qqio4G4a1RpksWexWJBMJgXJnzwctDhph/d4PHC73VhYWEBtbS3a29sFXcfv97MiHAAmhOdyOVy4cAGhUAjXr19nVQij0fiAkv3nBXmklOrorq6uwuFwQKfT4d69e2hoaMDevXthNBpZynO7KBaLDyzMZDKJWCyGmpoaLC4uIp1Oo7OzEwqFAiqVqixxcfo5lI7Pzc1hY2OD75NqOSHviojbOp0OVqsVbrcb586dQzKZZCmc1tbWsh0K+vv70d/fj3PnzuHWrVvI5/NobGyEwWBAV1cXWltbRV+zNHaU29TX12N8fBx2ux0rKyvM2q+trYVWq31kY4jSQgIB0MdRVVXFA12qbVtaWtDR0YHm5uayO4zEbdy1axcWFhawsLAAl8uF1dVVNDQ0iFJ9p/vU6XQsWp1OpxEMBnHnzh10dHQIukZFRQU6Oztx4MABVFVVweFw8EZUUVHBaRJtIKRGuN28jGRKlEolp68ymQw6nQ7Nzc2c7YRCIWSzWdy6dQv19fXo6up6ZNZTqvag1Wr59yeTXwKOuFwu7lqr1Wp0dnbyvXzeoqLsiEZRqVQK58+fx8bGBux2O4MGdDod2traEAqFoNPp0NHR8ch3JpVKoVar0draiieeeAIejwcymQyBQIAJ3D09Pejp6YHFYhGtYkEbFBlbKRQKNDc3w2w272gERLGjxdna2orjx4/j6tWr+PGPf8xpXXV1NYvsflGQg3UoFOJFKJfL2dsiHA6jvr6eRaUnJiYYu1pOVFZWYnR0FHq9HsFgEKdOncLCwgKuXr3KDRYxi7O6uhomkwkymQzj4+NQq9W4fv06Ll++jF27dgm+p4mJCfT19UEikeDmzZvw+Xz46KOPADw4C66pqYHFYsGuXbu2HS9QnV0sFvkdqNVqtLS0YGhoCMeOHYPf78fp06eRTCaxvr4OjUaD7373u9suThJgJlWK1dVVuN1uLC0tsfAYDd8PHTqElpYWfPvb30ZzczMUCsXn1rqZTAZ+vx/hcBj5fB7hcBj/9m//BolEws+ARN76+/tx5MgR9PX1oamp6ZHvjPx7dDodBgcH4XK50NTUxAJtmUwGhw8fxnPPPcf3JybIBMpqtWJ5eRmtra0YGhqCxWLZEYGdQtDipA+EIFukMkcjlVLtn1gshkgksi0sitjzuVwOg4OD0Ol0WFtbg9vtRiqVYsxqX18fE6TFtP+pbiGzpUwmg/X1dSZK00snsLJQ0ARJWVLXOBwOsyErqbfH43EeMW130hNpuLOzE5OTk9zxI+A7gQZUKhXMZjPa2toEAbVJg9VgMKCtrQ0qlYpV8ehDp5OMwOZCFRYqKyuh0+nQ2NiIzc1NltcsPS3y+TwcDgckEglCoRCnjp+3OIk8QfKcEokEuVwOlZWVMJlM0Ol0LFtCPQmh0pulmlIkgUo9BjpZywWn0ziusrKSNxCSjS13TFUagqQx6cVduHABMzMzrM9Ki3NhYYEHsi6Xi81+HhUKhQJDQ0MoFArYs2cPEokE/t//+384e/Ysj04GBwfxh3/4hyzKJUZhIB6PY3p6GqFQCMvLywgGg7h79y42NjbgcrkEXaM0yK59fn6ePUbo55w5c4Z34nw+z9DGurq6be0DaPj9ta99Dc8//zx8Ph9WVlYwPz+Pv//7v0c0GmUbgiNHjmByclIQDlir1UKhUGBychJVVVVYXl7G3NwcgsEgu7VR7T49Pc2bmZCQSqXo6emBRCJh6wyyEKSIx+OYmprCxsYGnn76aTYR+rx0j9T3KH2lU6e6uhpf/epXcfDgQczOzmJubg52ux1nzpxhlpCYkEgkkMvlPK9XKpUwGo1oa2srazEpFAqG5tFmV1dXh/r6+h0rSwAi01qCgtH4JJ1Os1U8gceFGsXQrAz4rMFEdRYpaDc2NrK8odi5HIGofT4f1y1OpxNer5cBA+RcJsTmgeRDyNA3kUggm80imUyylQEBMFQqlSAFdQD8c9VqNaupezwevqeqqioWD6OhtpAo/bft7e0Ih8NwOByorKxEKBTi+yZ7OjHwNYlEgrq6OsaNlnY7iRxQKBT4+dKJ+UXPmD5suVwOo9HIUEYa7hMIXiqVMsBejG1j6c+hmpn+LY1wyjE3IgBJsVjkxS4U1CIkBEljkizh5uYmbty4wU2USCQCp9PJaJbGxka2aRM6oyIEv8/nw9zcHObm5rB3714cO3YMu3fvhkajKeuXDQaD+PDDD2G1WrG+vs7sjEwmg87OTnR2dmL//v146qmn+Gdsd5+JROKB0YfL5WLlPVJmb29vx969e2GxWMpikpBotdPpRDabhUKhwNNPP42hoSHRA+3KykqMj4+jv78fPT096O7uRiAQwJkzZxgMLpFIGGAu9J3V1NRg//79GBoaQiKRQH19PT9nrVYLg8GA5uZmvPLKK9Dr9Thw4IAgnKzBYMAf/MEfYHNzE7/85S9hs9lw8uRJfPjhhyyeRhrGPT09omtEMp+KRqOcKSwtLeHmzZtob28X3V11Op2cjYyOjvIcub6+fsdzZEDgyVnqpUGzLqqtIpEI1Go1DAYD4wh1Op2o1jSlKGT3V1tbC4vFAr1e/8gd91FRKBS4HqbuLyncNTY2oqWlhSU8hVKdaMhOOFuqM4i83dnZie7u7h3Bzqi2paaOTCaDyWRiiUWxQT4jfr+fa+3l5WW2spfJZKivr4fRaBTlxaLT6aBSqdDc3Ay3241YLAan08nq9Q0NDbxh19XVCTrxyRxKJpNBr9ezES2RKkhjt6OjY1sW0RfdNynAq1QqqNVqBsYLlfEsDTKAkkgkMJlMPIP/baS0gAiBr0KhgIWFBTgcDrbQppsjUWCZTIaWlha2chfy8IgPmU6nWbeWZkWE2SyXxzg7O8sWgNQ8qKiogEajYZHspqYmQTYS5GESCASwvr7ONgHE1iHxYnrp5XaV4/E4vF4vYrEYNjY2UFlZif7+fq4hy92RI5EIs/YDgQBbXVBzRyaTwWw2i1IFIIQTwRjJ8kImk0GhULBXa21traD7ptOM3MDouygUCpDL5bzwNRoNX1/MAs3lcty0W1xcRDweh8ViQUNDQ1nvjMyTyYhJqVSiq6urnJnpY/W9x/E4fkfjsfre43gc/5fi8eJ8HI/jdzR21FJaX1/H5cuXGb2iUqkEOwQTBzKRSODGjRvweDxIpVLcoSy9hkqlYk0eg8EgmPFB179+/Tp8Ph/XxR0dHYIhdhQEViDvFWoy1dTUoK+vDzqdjo1zy4n5+XncuXOHwRDUFFEoFOwPI8RDc7vwer1YXFxEKpVCIBCAXC7H5OSkILwy6TBRQzCbzWJ5eRlut5vrdgK+q9VqVr8vN/L5PKanp7G5uYlIJIJoNAqz2YyRkREoFArB9o0ejwezs7NIp9NIJpMAwCOPgYGBstX9YrEYwuEwE/mpn6FSqTA2NrYj8TRgh4tzdnYWP/zhD6HT6fD888+zVYDQxZlKpeD3+/HOO+/g1q1bCAQCzDzR6/XcCGpubsbRo0dhMBgEjT2AzzigPp8P//mf/4mZmRk0NzejtrYWr776qujFSTOt+fl5vPnmm4hEIkwP+u53v4vOzk709vaWvThv3LiBf/qnf+LGVV1dHfbs2YPGxkYcPnwYBoOBZ4g7ic3NTbz//vvweDyYn59nBy4hizObzTIAn6RUfvnLX+LatWtsu9jf34+nn34azc3N3G0vN3K5HC5evIhz587BZrPBbrfjyJEj+KM/+iPWZxLyLZC9H0mLFItF5qD+3u/9XtmLMxgMYn19HdevX8ePf/xjtlxsbm5my8adRFlPzm63Y319HXfu3EEoFEJlZSVisRgSiYRg6zfqzJFuTjAYZDoQnUI0MG5qaoLRaBSEvCALd/LD8Hg8PEetqKhAOBzG2toaVldX2dpeSDeYML9EY4pEIrwT37p1C263m92v6I+QoEXu8Xjg9/sZFpjNZrG4uAiPx8M2fmNjY2VbmFO32e/3Y3V1FX6/H36/H1KplMcq2wEnMpkMwx9XVlZ4zEGKEmTSa7fbuZtfThSLRe6yu91u/pnJZJIdwlKp1Lad0VKtYZvNhnA4zL4zyWQSKpWKFR/FKCUSIXx9fR3Xrl3D0tISS6WSz+z8/DxyuRyam5vL1sUta3GeP38eb775JjweD5xOJ5uTkvehkMhkMnA6nSyt6HQ68eyzz2JoaIjB00qlkiFw4+PjgjCLHo8H586dw9raGv7jP/6DBatzuRw2NzchkUh49NHX14fDhw8LasdHIhHY7XbW7CWom0QiwerqKlQqFaqqqiCTyVicarsoFouw2+2w2+0MTaPFKZFIsLS0xFxJwpgKVUB4OBKJBMLhMJaWlnDq1CnGQ2ezWd4gthvVxONx3Lp1C1arFadPn8bW1hafkDRPTaVSuHr1KuLxOF588cWy7jWfz8Pj8cDn82F2dhZTU1Ps6r2ysoKTJ09ibGwMBw8efORmRVrDCwsLuHz58gPemxUVFZDL5ZiYmEB9fT0sFssD8MMvCuLg+v1+nDlzBm+99RaTxAuFAra2tmC1WqHX69He3o7jx49jeHi4rOcganGSuSgBvcPhMOv6lELwhAQNf0k5nsjbpTxIuVwOrVaLxsZGwez9fD7P141Go4hEIgwprKmpQWVlJRKJBKxWKxoaGgQrK5Tavpcq65Vaj5Mam1KpFGzOS+B4yghIYYCgbEqlEq2trWhsbCz71ATAmqoEqwPuLzbaCIUCPUh/NZVKIR6PQ6vVorW1lZ9P6Z9yo1AoIBKJIBAIIJ1OP/BNUXnxsLjW5wVpCBEiiIjQUqkU8XgclZWVCIfDDKQXsjiBz6RfotEoMpkM1Go1enp6kMvlEIlE2N6eKIBi1f0oRCm+f/LJJ7hx4wauX78Oq9XKL4BgUQROFxKUIjmdTmi1WrS3t+PIkSMP7LbEKCDlBaH3WYp3raqqgsFgYJCzTqeDy+XCz3/+cwDAl7/85d8K1Cqfz+POnTtIpVI4duyYILI1CVBrNBo0Nzez2zIp53//+9+HXq9nbOpOZDtCoRBsNhukUimeeeYZeDweXL9+HUqlkhtw2y1QKjGy2SxkMhmqqqpw6NAhPPfcc/j0009x+fJlRuEQ5LOcyGQyLM2SzWbR2NjIDSEx4ff7MT8/D5fLhZqaGpjNZvzpn/4pNBoNZmZm2Dl7ZmYGVVVVgkyVi8UibDYb7ty5g0AggMbGRkxOTuLP/uzPANyvb91uN9566y3Mz89zNkgHhJgQxEoh9rvT6cTa2hrC4TBqampYS1YikTAkSihigxo21D2jf0enUKFQYFqPGPheKQeSrkvwOkoNqcalzqMQtguxKhQKBXQ6HSQSCadJdPoEg0FsbW1x/SEkCNBPHzRRr2gzMRqNrHS/EzA10cSIRpbP5zmTEKpGXllZyegqol0RNY2QXiqViuu3cu+3VFOIVPHoO6mqqoJCoRC0+EkNj7rqarUaFosFtbW1+P/a+9Lfts70+sNFoiSKq0iKq6h9ly1btiXHdpyJE0+2mcBFZhq0aDFdvhbt39Av/Vy0QAt0BybtBJ1MO5M0ycSxLSe2Y8uKZclaaO0iJUrivu8Sfx/c5wnlcaR7r9wixU8HMCYDy1eXl/d932c5zznpdBr19fUcBVJUQc9pv3sjXSYSdtPr9SymXVlzoHecosPnvjgLhQLu37+PjY0NXL9+HXfu3EFrayuuXLmClZUV3LlzBxqNhodMhVKg6MYzmQzC4TA2Nzfx05/+FKOjozwPSSoBNpsNw8PDkqbL1Wo1fvzjH6O/v593e9JdJZI5Ear3W6BGo5FPl1QqhZWVFfzqV79CPB6HXq+HSqXCysoKVldX8cILLwi+PzoVTSYT3G43dnd3WY/oxo0baGxsxODgIAwGw6GEuWw2G3Q6HU8V1dTUYHx8XLCCPvBkRKqvrw8mkwltbW2sTfTpp5/i/v378Hg8GBgYwODgIFpaWiRzTCna2dnZQTgcRnV1NTweDyKRCCwWC86fPy+IJketNIVCAafTCbfbDbfbjcbGRlitViSTSSwuLmJ2dpZVOYTM4BJo46ANlk7nmpoavPjii9jY2EAmk8H4+Dh6enrQ1tYm7jkc9AO7u7uIRqOsvB6LxZigTDkL8TN1Op1kzZidnR14vV7madLcoc1m4+FbIajMoWQyGaqrq9HS0rInKScNGiqGVFVVHZh70m5otVrR29vLGrY7OzssybK5uckOzELzDLrX2tpaaLVa1uVJJpPwer0oFAp7VAKlLk46mVOpFJ9sNF8pdHHSvGKpVGIl+mQyidXVVQQCAaRSKchkMtbulaJQTwPwxNGlUJ8WAPVPTSaT4DE/0kim6I60h6liS+8CzYcKXZw06kb3Qb+nUCjAZrOxli2p4ovFgd90VVUVK7ErlUqcOHECRqMRRqORPxhJXVCxQciH02g0GBkZQWdnJ2pra7G9vc0kgVAohGAwCLlcjtnZWf6QQkBTHNlslq0B6OHRl2y1WtHU1ASlUonFxUVks1m4XC5BL35DQwNOnz6Nrq4udHZ2srR/oVDA3/zN3+DWrVuIRCJYWFjgE1lIeGcwGNDR0QGv18uN/Wg0Cq1Wi8ePH8NqteKtt94SlBc9C4lEArFYDOPj43jvvfcAAIODg7DZbIJL/ZUyJY2NjbDb7fD7/ZidneXv8+zZszh79ix0Op3gMI6kT5PJJDweD2KxGKamphAKhdjFa3d3Fy6XC11dXRgZGRF1/W+DQqFAX18ftwCvXbuGtrY2nDx58lCGTAQypqK0UCwOfBsVCgWPVpXLZfYJyeVyHPeXSiUEg0HucwkBWQfabDbuRRFrY2trC5ubm9je3sbjx49hNBoFV/+qq6thNBoRDoehUqlQLpf5QdO0hFarhcFg4MHmuro6wWLVarWaiz2VWkHpdBofffQRgG+0ZWQymWA7AdLlCYVCiMfjyOfz2NraQk1NDRKJBIf2YkERAU2jkPmUxWLBO++8A5fLJThdoJNCpVLxfCWJMx8/fpznZNva2kQtHHIBo940qUFQT7ZSfc9ms4m+/n6fx+Fw8Kyvx+NBbW0tTpw4IejfHgTKT6nVIhaChq1p/MvhcPBsYDAYPFTSTzE6DWqTwJZCoeCmcSaTET31XldXh6amJqTTaVRVVSGTyWBzcxNra2vY3d3lai31opqamtii7TCQyWTQ6/WwWq3Y3d3F1tYW6+UKuXeXy4WXXnoJbrcbBoOBS/E0jrS6uoqNjQ2Wgdkvty+VSizNMjMzg/X1daRSKVatsNlsPBRus9kEi1FRoSaVSmF1dRWPHz9GPB4X/Iy+DeFwGOPj49jc3MTVq1eZIEEUQb1ej7Nnz+LixYvo6+sT/F1RUY2uk8/n96QvJOfS2NiIUCgkaAHJZDLodDpYrVYEg0E+qEj36nnNcgICWylUNaUG+NraGorF4qEEc2nRk1JfJe7du4e1tTWuzIlZnLW1tXC5XIjFYiyXsb29jbW1NQ63aXEeO3YMLpcLJpPpuSxO+tLK5TK2t7dF9VFdLhdcLhe6u7vR2tqKYDCI8fFxbG1t4ZNPPkEymeRoggga34Ziscgn2s9//nPcvXuX/87pdGJwcBCdnZ04deoUTCaT4M9IlXvqE8/Pz3MV9TAIhUK4c+cOVldXcfXqVXboAsDD+8PDw/j93/99rjALAXGxyaWuWCzu+T5oQyWmF5nqHgRibC0uLu5ZnORk97wgqbpAOjlSNWQrQV94oVDA48eP4ff7MTk5iWQyiebmZpw6dQotLS2CwxgqWdMwLgAsLS1xUctoNGJlZYU/B6n6CSkuVDbYqdhAEp/kaEW6SuFwGOl0WvBzoOsXi0VuAWxsbLBVPHmTCrGeVygUcLvdUKlUaGtrg9/v594vMaXUajU8Hg/MZjMrVzxtZfc0SAWCNr1CocAsrnw+j8XFRbS3t4u2zFCr1WhtbYVKpcLGxgYikQi2t7f5fkmJcHJyElarlcXFDoJWq0VTUxO2trbY+nFmZgbxeJyfD2kXJxIJQfdKCnskRZJOp7G8vIz/+q//4kH7XC7Hnq0tLS0wmUyS1sqhjIwOY15DIDZIIpHABx98sKeVcvr0afzO7/wONBqNYHYMOTcTsUEul+PevXtIpVJoaGiARqOBz+cD8OSlIPmPgz4HqT5UTmSQ4LPH40EoFILP50M2m0UoFML6+jpaW1sFv6hULaSSfjQaxezsLEKhEEqlEtRqNfR6Pev77ofq6moMDg7ygkkkEqwAn8lkMD09jVQqhdHRUSY86PV6uFyufW0kqCBEBbBcLgeXy4XGxkb4fD589dVX6OjoEM0OIpI/bcLBYBC3bt3C1tYWV++npqagVqtx+vRptLe3C1qcZrMZJpOJ9Zi2trZw/fp1OBwOXLlyBWazGYuLi7h79y57lh4EmUwGg8HAfe9wOIyxsTF4PB6WfCmXy1hZWUGpVILVapUsvSnZK4V2cZK4iMVi0Gg0gquqlSSEubk5BAIBxGIxVFVV8chRZ2cnW6iJ3QRqa2vZiZvU90jvhVTyzGazYMrhzs4OO4utrKxwGETkDJLUoC/I4XAItg0Ankw4rK+vY3NzE9PT0/D5fIjH4ygWizxNo9frBZMyKIJwu90YHBxENBrlWsHCwgLq6+vh9Xq5GZ/L5WA2mwV5vBAvmUgYZHtHPdpQKASdTicoIgGepE06nY4V8BsaGpDNZhEIBDA/P4/t7W2WsdFoNJiYmGCdqf0q7EQooE24XC4jHo9DLpdjamoKWq2We5EkcCYkVauqqkJdXR2sVit6enqQTCYRCAT4/aIUh4TH7Xa7JJFpSYuTGBoOhwPd3d0ol8uYm5tDPB7HpUuXBF2D6HtbW1v4+7//e3g8HhZAvnjxIqvi6fX6A1kbz4LJZMK7774Lv9+P6elp3j3JQLWnpwdDQ0OC8xeyDPB4PPjXf/1XfnGKxSKPLhGn9vjx43jppZe4RysEMzMz+PDDD7GysoK7d+/yKWowGHDp0iW2DRBjDqRQKPDqq6/ixRdf5LB5amoK//mf/8m+IUqlEpFIBA6HA1arVVB1WaPR4I//+I/x1ltv4R/+4R/wxRdfcAgfCoUwMTEBm82G48ePCwrnqE6wu7uL9vZ2lEolvPbaa0ilUnj//fe5BvHZZ59hZmYGExMTOH78OP70T/9UEKWxsbERr7zyCoLBIObm5rC8vIz79+8DAIupke/JQTrD9PnVajUT78fGxvDP//zPHILrdDpcvHgRTqcT3/ve99Df3/8/b55LIOKBTqdDe3s7+5oIFXKia5D+rUajgV6vh81mY41WGqqW2m8iL5NCoYDW1lYkk0mmnLW2tnIuIPRFpzZCdXU1NBoN+4kWi0U0NDRwC6euro5bT2IKZrQb63Q6WCwWjkAMBgPcbjdzb8VuUk8PrtvtdiY1BAIBrlgelG9WQqFQwGQyQalUwu12o6WlBfl8Hvl8nh3GxJAl6NkCYDPiqqoq1NfXo6mpiXveNIdJ0ZQYZpPdbodKpUI0GuXUgYTDqqqqOPcWsvlVvv+kPtje3o5CocApldvt5uhJ6ozvoQS+UqkUAoEA9xKrqqqYqH0QyuUyV9CoJE3TGZUCy4fJaYm8QKEL8E1OWtnzFHotMl8Kh8N7BIWJn0p/aBpeTGmdlNzy+TzS6TTnqkTtI7Paw/b3stksYrEYW6cD4IVpMBgE9zyJV01Wg+VyGeVyGfX19Tx3K9UCENhrAUJhM6kF0nd3EOWy8l4rrTkqudd0SJDyvhj6HuXd1KKidUDvAPmXCnimR+p7RzjCdxRH6ntHOML/JRxqkJEI6wQKEaRaj+/u7nI4V8msoRhfKui6dG0xw8UH3SfdH1238v+LvcdKCuFhnuV+qPzO6Jke5nfQc618vnTNw35n9L8ULj6P5/H0d3eYa1Y+y6eZYHTdw9yvpMVJ8hazs7P45JNPeMpcr9fj9ddfh9VqZSreQajMK7788kssLCywjQI1xltaWvDOO+9Ao9GIvtdsNsu29uvr64jFYhgZGcGZM2egVqsFDzBT9XRlZQU3b95EJpNBKpWCXC6H2+2GRqNBa2srTCaTKN+RYrGIUqmEr7/+Grdv32YSg91ux9tvvw2DwcD562FA39nDhw/x7//+7zAajbh06RIXnMQULSoJ3UQaWFxcxMLCAletXS4Xvv/970vyusnlchgbG2O/1+3tbQwPD2N4eBharXaP+JsYhMNhfPnll6xgIJfL8eKLL4oe5SKMjY1hdHSU+9LAN22hl19+mQubUr06JX3jNEWwsLCA9957D4VCgf0jT548yU1aoYuTRL6uX7+O69evIx6Ps7x9Q0MDzp49izfeeEPS4szn8/j6668xMzPDFoClUokJAtSqOQhUVJifn8fPf/5zRKNRhEIhKJVKnD59Go2Njcjn82htbWVPDyEgW4Tp6Wn87Gc/YzuGY8eO4cyZM8wMOuzipO9sdnYWf/u3fwu32w2bzcbcYjGLk/qZxI5ZW1vDzZs3MTo6yt/ZiRMnMDIywjO0Yk7RfD6PqakpeDweXLt2DR6PB+l0Gk6nk42jpCzORCKBO3fu8HB1VVUV2tvbJS/Oubk5vP/++4hEIvB6vdxTpUUJYI+loVgc6hsvFovsPUEnHWm2COUZ5vN5jI2NsU9KTU0Nl9LL5TKzaFSQswAAIABJREFUh+LxOEtqCAlJs9ksX3NqagoLCwtsPW+z2VgTVuiXrFKpoNVq4XK5MDIygkwmg3w+z/4bW1tbuHXrFh49eoSXX36ZKXH7VerK5TKCwSACgQD8fj8r+gFPqrfT09NIJBI4c+bMoamSxBIKh8Osbvf48WPk83n09/eLknHM5XIYHR3F6uoqotEoRxB9fX188kciEUxNTcFms6G/v3/fjZWokKlUCvPz8yyhsry8jFKpBIvFAoPBAK1WK2nYIp/PI5lMYmNjA3NzcwiFQnyiHSb0pvfBbDbDbrcjn88jEolAJpNhdHQUHo8HP/zhD9Hf38/vrhgcanEWCgXEYjEuySuVSh7I1mg0gnbjbDaLmzdvYmxsDOVymelhBoMB0WgUPp8P0WgU0WiUWwlC2gmpVAoPHjzA2toaxsfHsbKygoGBAbZ6E9JsrgQNW7e2tuLll1/G7u4u6urqkEgk8NOf/hSrq6t4+PAha9kODAygvr7+wMXp9/vx+PFjthWsvP/x8XEEAgH09PQI0pXdD9FolJ3DgSeL/9GjR0gmk7h8+bKoa2UyGXz44Yf46quv2D/VYrFgaGgIPp8Pk5OTCAaDGBsbg9PpREtLy4GLM5fLIRAI4PPPP4fP58Po6Cg2NjbgdDpht9t5gFuKyFkul+Nhh8nJSUSjUe4/HmZx6nQ6tLa2MmMuGo1ifHwcsVgMH330EY+kkUTOc1+cu7u77KREtvMUdk5OTu6Z35TJZDxpLrS/V11djf7+fh5Lk8lkCAQC2N7e5okSCu3ESGrk83mW3SQtmra2Nhw/fhx2u11yol5bWwubzcYbCWnTkI4OuX2n02luqO/3u6jvqFKpmB2Tz+ehVqs5tJdiT/c0otEoFhcX+bkCv1kcEQr6zkifiWicer0eSqUSS0tLPEv7dKHoWaicwKnkE9fV1bE9IS1MsSbKAJhiGQqFWDOqq6sL3d3dh9r0LBYLjh8/ztpBfr8fjx49AgAuFMXjcQSDQUG0yKdx4OIslUr8pd6/fx+Li4vw+XxYW1vj5jBBoVCwcarQRVRfX493332X2RVVVVW4du0aPv/8c1RVVWF9fZ0b22K4qul0mk/MfD4PrVaLS5cu4e2335aUuxL0ej0PWctkMoRCIZ7t8/l8SKfTiMfjCIVCB25QpIG6trYGvV6PV199lUkO6XQaPp9vjwjaYbC8vIzPPvsMfr9fstgzQa1W491332VOan19PVcnP//8czx69EjUqeTxePAXf/EXCAaD2NzcxM7ODvR6PUwmE4/QtbW1SbaDjEajmJycxNLSEnK5HNRqNX7wgx/g7NmzhyJ19Pb28rijTCbDo0ePcPXqVf773d1dDqWp8CYGgsJaKvOTL0QoFEIsFtuzo9M4kVAlt8prk84sje0QCT6dTrMJ7vr6OsrlsmAGErF5SLGB6GAkKC0VlVQz4EnJnCq3CoWCeZck/HQQqCJNiuk0aFzZUhILmvSh2ct8Pg+v14tgMIhkMskmxXSfUkxoiflCeSCBagX0PuxH1Ke2VD6fZ+nLYrEIuVyOxsZG6PV67OzsIBgMwu/380YtZpMGvkm/yD+UdIGl0uoIVPSkz0GSPTQAQXKmZrP5f2YqhcaEamtrmThMI12VfUMSjRLbP8zlcrh58ybnQ/F4nFXQSRh6eXkZ//Iv/4Lm5mb87u/+riDV81KphEgkglgshpaWFjbkPQyl7FmgCujExAQcDgfsdjv6+vp4Yn+/3yWTyWCz2dDb28sk/+npaTx48IALbFLut1AoYGxsDD6fjw2PPR4P5ubmsLOzg3K5jLq6OnR1dYluowDfKAgQdbESNItaU1PDWlPfVmkmCiRtzvRSa7VavPHGG2hqasIHH3yAzz77DD6fDysrKxgcHMTrr78uqnqdSCQwNzeHcDjMrtvPQ6uYQFrJ9O4Gg0E0NzfDbDbjpZdewsWLFyUpRwpanKRNqtPpmDcpk8mYW0i9Ha1WK/hDV9rXb21twev1YnNzE7FYDIFAAPF4HLu7u0x+p2lzoVo/dH3yAFEqlVxJJPV3+nyHATWiScOUNikhXwaV3imfqqurg0KhQDqdRqlUYr6n2BeJBtjphaFxuaeJGKRsJ3RDpZyaKqvPUl0PhUJsf0Gn1Lc9Y7oXen/oxJfJZHwapVIpVmMkRUaxIBcA4lfv7OwgFArB7/ez0gad8odBpeo9jVSS0p8UCBL4op7Yn/3Zn+EnP/kJJiYmuNR9+/ZtGI1GvPHGGyzYKwRkLb65uYkbN27g4cOH/MUXCgUUCgVYLBa0tbWhubkZr732GhobGwUn1hQOkypBuVzG7du3EQwG0dfXh97eXlEk52+DUqlkNT+j0cjkaSGQyWRoampCY2Mjt4sSiQQ8Hg8MBgMuXLgAt9st+sul3B948pxJ6LmmpgbRaBRerxc1NTVwuVxwOByCn0Emk4HH48H29jbef/99LC0t/cbPhMNhbGxssAzNftEUpUHd3d34oz/6IywvL/M43r/927+hpqYGW1tbAMBRhJTvK5/PIxwOs6pjJBLBn//5n8NkMuHSpUuspCi136lQKHhzJQlOo9EoWQGBIOjkpF9KvTBShovFYhz2ulwuOJ1OwTdDjWyaxojFYlw9JBkQMgWy2+1wOp2CXMYIlRqoFDr5/X7IZDL2kKQXhyYJpIBOP5IEFUsHo1OWVBUolKf2hFA/0qfvicbPjEYjCoUCn0DFYpGpdWJzTvLnDIVCmJ2d5cpk5bOm05CqohRlfdt90uhVZ2cngCfFJhI3q7wemURJOd1IUoUmW3Z2djAzM8NMJrVaDYvFwhq3YlMz+hyktUuFTaVS+b9P3yMVAMo76+rq0NLSArfbLTi2JsNdo9GIn/zkJ+y/GA6H4ff74ff70d/fj3feeQeNjY1obW3lEEQISNW8urqac89EIgG1Wo2vv/4aNpsN7e3tOHfuHEwmE7q6uiQVikigrFwus/C20OpquVzG+vo6gsEgvvrqK3zxxRfw+/3coujr64Pb7RYtpKZUKuF0Ork5ns1mcffu3T32GVSsEDODW1VVxfYQP/rRj3D+/HmkUinkcjl4vV6sra1x5GMymeB0OmG1Wg98rjqdDgMDA2wSvLm5iU8//ZQVLNLpNNra2vDKK6/AYrGI3khp1rZQKDBJgPxzHj16hIWFBQSDQRYxb29vl7SodDodzp8/j/X1dWxsbCAYDO4RKxMLSYuTkn5qo9CwqphEW6lUsqbPyMgIOjo68PDhQ3i9XgBPkni73c4OwWIV8qiqWpnDEf9xYWEBKpUKw8PDaGxsRKFQQHt7u8in8ARyuRxms5lnW1OplOC+ZLlcZqLF1NQUrl69ypVOksEgV6xnEe33++wU5VB4Sz1EGtgmZUOhjCvgyXem0+lQVVWFoaEhJJNJ3qTJWYtyXZ1OB4PBIMgFoKamhgfUDQYDtre34fF4kEwm2byI2ipS+pxUmSZ2Ec1varVaeL1exGIxNDY2snJFW1ubpMVJrulKpRJzc3PsWSsVktX3SI5fJpMhn88z9c5ut4u6Fj0oEmCamJiAUqlET08P57BqtVp0qFFTU8M7IIlckQUBVQm9Xi9u3LiB3t5e9PT08Gd61stEynjJZBJ+v5+HlePxOMbHx9nujUroQkHCXvSHcrVQKIRf/vKXMBqN3I6gUGlwcBC9vb2inkeldZ6U9gwAbhUR15daINlsFmtra4jFYrDZbHjxxRfR3t7O7tNCN1UaUs7n86yZlM/nUVtby1pVUqqspEelUqmwtLTEtn16vZ7bdxsbG7hx4wbK5TJGRkYEvW+UglDhbXV1FXfv3mVD3mKxiLm5OVitVrjdbtFrQ9LirKmpgU6n4xK8FMV3ArGKSqUStre3MTU1hePHj6OzsxMul4sdrqXcIymzb2xscEhLzBvyGc1ms2zbRzSsZ71MxNwJhUJ49OgRu1EnEgk8ePAAgUAAJpNJsKhV5XUrFydVOEOhED7++OM9VWWiNtbW1kpanMQFlgoSRwPAhb9MJoNCoYDR0VHEYjG2nbfb7TCbzaJaCLT4i8UidDod9zkrF6cUaDQaJgsolUoUi0XU19fz7yiXy9jc3MTq6irsdrvgjgA5b1P0s7y8jLGxMY4mqqqqMD8/z3Km/yuL02AwoLOzE/F4HA0NDZDJZJicnEQoFEJvby/T2oTscmQBTk38+vp6uN1unDx5Es3NzZLnLtVqNQYHB2GxWBCPx7GxsYF0Oo1cLsfUKpoe0ev1LL/5bb+PpjqIo0osIFpQFosFJ0+ehMvlQmtrq6B7pOJUc3Mz/yHCh1wuRygU2jMjarFYIJfLJRnTWiwW9PX1AQDm5+eZF0w8Uyn59u7uLubn5+H1epFMJtHZ2Yn29nauJRxWqPt5QavVoqenByqVCv39/Wz6HI1GIZM9MUeyWq3sFiA0pF1eXsaNGzeQTCaxvb2NUCiEZDKJ3d1dNDY2QqvVoq2tDR0dHZK8VSUtTqfTyW5Kt2/fRiKRwK9//WtYrVZcuHCB6XZCFif1tqLRKJvwHjt2DG+88QZqamokf8EGgwGvvfYaJ+SLi4u4d+8e64kC3+jWEjl5v8kMspPb2trC/fv3EYvFEAwGATxRa7fb7XjzzTcxMjIimOAsk8ngdDphMpmwvr6O+fl5JJNJLoJ4vd49eT0xUqScfm63mznK09PT0Ol0CAQCbI8nhVBeKpVw584d3LhxA/X19RgeHsbp06dx7NgxSbnh/xTMZjO3pbxeL/x+P+bn5xEKhVh/ubu7Gx0dHejq6hL8zo2Pj+Mv//IvedaXugy1tbVoa2uD3W7H6dOncebMGUnPV9LiJF9Ch8OB4eFhJsOTSa2YRUU5Z6lUQk9PD+RyOVpaWiSXzQlEnqivr2c1cZlMBrfbzeGdxWJh3uZBJweV8s1mMwYGBjjfpMofGRFRGV0oyBjI4XDgxIkTyGaznMcREZ6eE4X5VqtV9POoqamBXq9HU1MTRkZG2NdFjBv505DL5XA4HOjr62PChMPhOHQLgeYsFQoFEokEcrmc6JCwEpWto/b2dnbIy+VyTEMktTwxRHiHw4EXXniBfVgIKpUKHR0dMJlMMJvNoiwk9ty3FIEvYprQBAb1uWihVXoWCkGpVGKOJclsHsa2/On7pN4WMYbo74g5RJXL/X4fXYtYTfSZATCfmDYUsfdNz5LU/Kjf+/TUCD1XKmyJAYXLVICiSQoqNEl91tlsFoVCYY/U6WGJHTRvSu9FuVx+LlxYGk2rtNSgvjRV9qlfKQTUl36WRAsV8QS+E0fqe0c4wncUR+p7RzjC/yVIpuZTiEeOvZRnEFFdSJhEYQsRpZ8OD4hWRy0OMWpmFCZTCFM5+EtqCsSUkQKaRKBQkUKvysKNGFAYSy0P+u+nQySp90thc6UVO+VCYpT1K1MaqmBT9ZhCW0oVDpOaUBhOvVkpqU7lvWYymWcOfhNdj5QuxCrm0fWJkF+Z3x62Wi2ZIVQoFDA9PY2PPvoIVVVVaGpqgl6vx+nTp2EwGA5MgokEEIlE8PHHH8Pr9XLyT9Dr9SxzceXKFeh0Os6TDkIkEsHnn3/O7l/EaCqVShgaGsLQ0BAXhKS8QNvb2/jFL36Bra0tLCwsIJfL4Qc/+AH6+/uZUC4GiUQCkUgES0tLuHnzJmKxGLxeLxQKBQYGBmA2m3H58mXmoIoFKcUFg0EsLS2hoaEB58+fh8ViwYULFwQVQmjDS6fTuH37Nts1er1e7s+azWa0trbC7Xbj9ddflyRutbOzwz3kjz/+GFNTU3jzzTd5VExoTkstuomJCbz33ntMNayExWKBRqPB9773PZw7dw51dXWCh/FpHYyNjeGf/umfUCqV2E7jD/7gD9Dc3Cz2o+/BodT3tre3MTY2hurqaqRSKTQ2NqKnp4fl/fdbnDs7O4jH4wgEAhgfH8fs7CyLRdEO19jYiPb2dqRSKbz66qtsS38QqKAwPz+PjY0NzM/PIxaLccO8urqa5TsPkhH5NqTTaUxPT2N1dRVjY2PIZDJoa2uD2WyWJH2RzWZZFeH+/fsIBAKYm5tDVVUVcrkcmpqacObMGdHXpWfp9/sxPj7OVEGHwwGTycTkB6HXolNoeXkZCwsLuHXrFubm5rhI5XQ62e7h0qVLkp4vtdfC4TAmJydx8+ZN9PT08CC2UJBt48bGBm945PlJ9+VyuWA0GtHU1ITBwUHutQu5Z4pCNjY2cP36dfbNcbvduHLliuR3iyBpcVLTdW1tDQsLC0zgdrlcuHDhgqBSP00j5PN5NDQ0wGw288JeXV3F8vIydnd3WY9menoadrsdvb29++7G6XQaW1tbWFxcxO3bt5m5Y7PZEA6HkUgkMDU1hbW1NVy+fBnHjh2T1ICnMPMwvVi631wuh7t37+Kzzz7jF7umpgbNzc2QyWQoFouIRqPPnJ/cD+XyE5/I7e1tPHjwAJOTkyiXy0wn6+/vF9XjzOVymJ+fZ6XBxcVFmM1mNP+3MVJtbS3C4TAmJiZQKpXg9XpRKBRETRMBT1hHV69excLCAgKBgHR/y/9Oh8xmM/r6+lgVo1QqYWFhAfF4nPmvc3NzuHfvHtra2mA0GkUtKhpPpM1fLpdjbm4OSqXyQM/Tfe9fyj+iqZRAIIDNzU3eeSuV+A4CxeVkWkQsjqamJiiVSoRCIaRSKWxtbUGn02F1dZUt4vYDiTl5vV7MzMwgEonAarXyKZHP5/mFtdlsgqlaT4P8Lw/jhAZ8I9vo8XjwySef8MukUql4kyP5TbHkA5qUmZ+fx/z8PFZXV9kkl+wWbTabKOOe9fV1eL1ezM7OYnFxEW+++SYGBwd5oxofH8e1a9dQV1eHYDAIlUrFZHkxz2RiYgIPHjzgIX8p7RkyuCXXL9K8LRQKPMxPek1ra2t4/Pgx6uvrRXOPKZKstJ/3er3QaDQwGo3/O4uTbNYXFxdx8+ZNzMzMYGdnBzU1NbBarSyBKKTpSjxNuVyOy5cvc0hBLzopz/X19aGnpwf9/f2wWq0H8itra2vhdDqRTCZhsViwu7uLra0txONx1tOhAgblUGJ7W5FIBCsrK5iensb6+rqk6XwArMsbCAR48LqpqQnDw8NIp9N4+PAhT9SIsbyrvD6RsunU1Wg0aG9vR0tLC6xWq2AmF/CEyNDR0QGNRoPu7m4OPx89esTznPF4HC0tLTy0oNFoBEcWFC6TXlA4HMapU6f4NIvH4yw3KuRko/zU5XLh8uXLKJfLUKvViEaj+PLLL5FIJHhu2O1249SpU6Loe8FgEKurq/D5fHsolQqFAi6XC+3t7ZIFpQGRi5OYELOzs/jwww8RjUZZTqOzsxPNzc2CCco0gaDVavH222+zsSspZ8diMRiNRgwODqKvrw9DQ0OC+Il1dXVobm5GNpuF0+nkaZdcLsc5K410UbWZqotCvpR0Oo2VlRUsLCzg4cOH2NzcBABJO3u5/MRpeXNzE3K5HK2trRgaGsIf/uEfYmNjA4FAgOcMhRbCnkYmk+F8G3gyc9jd3Y22tjY4HA5Ru3ptbS36+/tht9vR39+PnZ0drK+vY2VlhQfmm5qaMDAwgPb2dqbGCV2c6XQaX3/9NdbW1rC8vIxAIACXy4UXXngBBoMBsVgMcrlccE5PVXPaLAg+nw9//dd/jVgsxlXg1tZWnDt3TtRz3t7exsTEBFZWVvZEYCqVCi0tLeju7hZ0nW+DoMVJGjlLS0vw+/1YXFz8jeJNsVjkloJYPF2Cp4dD/itiJz2AJ2Tn8+fPo729HVtbW6yKRlKf8XictWUqWzXfBr/fj9XVVWxvb2NmZgZra2t7hqppakSMhybNXdrtdmZX0SQNqYeTmHZtbS2rRwjVu6F50fX1dZ6LVKvVaG5uht1uF02PJJUK2tRIlyedTsNsNqOjowPNzc04efIkmpqauDB40KZHruE0x7mxscH6wDSWuLS0hHA4jJ6eHg5zxXiwVP4c/TcJrJH4m9BhDUI8HmdhukqGnBgtrf1w4BXK5TLH0qOjo7h9+zbm5ubg9Xp5t6DwSYwA17NAJjj00tTV1cHpdEqafrfZbPiTP/kTloVMJBJYXFxks1/Ssw2HwwCenCj7bQAPHjzAz372M6yvr2NiYoJzjEpoNBo0NDQILl5QtdDhcHBfjyqAsVgMS0tLiEajOHHiBIxGI4+s6fV6wYvT6/XuOeHNZjOGh4fZjVsM6F3IZDKIRCIIh8MIBoOIRqM4c+YM3nzzTbS3t2NkZITzcSGLJ5PJcFX9008/RSgUQmtrK1pbW/mUHB0dxX/8x3/gypUr6O7uhk6nk6xjS1AqlRgYGGD9WbFWDxsbG/jqq68QDAY59bDZbKLy+H3vT8gP0W5JfSOaTUun0zx2I3YnexaoAUzXIJt3KdxP4qCSRAVZjlMltPJnhExQEIleq9XCaDTyqUn6NAA4dxVzylMTPJlMssDX5uYmt38qXZPX19d53lSI6BfxiiuV8p7mGItBsVhEIBDA1tYWkskk81SJgNHQ0ACdTscqgkJBhA7SUcpkMtzMJ4UJKjaS5pRCoYDRaJQU6hOxo7q6GrlcjhUchL5jiUSCDacoZaCIkaLA5wFBJyeJE1MI09bWhhdeeAGPHz/GtWvXUFVVxRqlh5UXrATp4R6GaaJQKGC1Wpl5U11dzXmWRqNBU1OToJfJ6XTixRdfRCQSQUdHB0KhEO7du8fSk7RBiVHfq8T8/Dxu374Nj8eDq1evIpVKIRqNYnd3l6ueiUQCbW1teOuttwSTHOjlps0kk8nA6/WiVCrBarWK1n/94osv4PP5sLS0hGAwyNGDVquF2+2WdJoVCgWEQiEeUs5ms0xM93g8WFxcxNraGoAnhUKPx8MeKlLCR4VCAb1eD4PBgJWVFfj9fgwODgr6t7u7u5iZmcHc3BzGxsawurr6XOwyngVBn4x2A61Wy2p4LpcL0WiUk+5K+pNUEJWsMu88rLQG8M00R11dnaicsBJ1dXXc4iAKIOUolTmMVDNWUsiLRCLw+XzI5/N8CpOK3dM5+X6opAIWi0VONyiElMvlSKVSACC4HVSph0shuEql4vukPp9YUFuKFA92d3ehUCi4+ksKinSfUj1eCJVC6fR56DMJoe/RxkHTLETOeN44cHGSund9fT1+9KMf4fvf/z4vxNraWnz66afQaDQwmUyHOjnlcjlMJhNqa2thMpmgVquRTCY5v7t48aKk6xJkMhlfn4aqk8kkvF4vz0jud3rSZDupy83OzuLmzZt7nMEOg7q6OphMJmi1Wn55rFYrtFotTpw4AYvFgpdffhkdHR1oaGjY91pkPkUCWWRrATzxJfmrv/ordHZ2QiaTwW63M/njIFRVVcHhcKBcLrOIuN1uh8FgQDabxS9+8QucOXMGbW1tokI7vV6PEydOwGazIZlMIhAIYGFhAbFYDD6fD6FQCGq1Gm63G83NzXxCSyV/UDTldDqxsLCAUCjErbaDRt7kcjk6OzvR2NiIbDaLzc1NbG9vY35+XtK97AdBJydVB51OJ4BvSNoGg4F3dql2DOVymQnwAPh0oIl/esnEFpp2dnaQz+fZ65NOtMr8laqfdXV1B+7E1GQnhMNhSTq13wbycqHfQUp3RqMRLS0tcDgc6OjoECx8TJvIzs4O5HI5V9VpwcrlcmxsbEChUAi+JlHbyK1aLpfz0HYmk8Hq6ipaWlpQKpVEDVxXVVWxlk9HRwd0Oh0b3JILm1qthk6n402BqrgHgSrMFH3JZLI986x0KpOQuZD3lzSKSbEvn8/zv6uc8z0sJNV7iR3k8/nYaYp8L4WKMFWGSA8fPmRzpEwmw14hJO4kJlymL8Lr9eIf//Efkclk8Morr8Bms3FhYWVlBcA3Oa2UcLy6uho2mw25XO43TJ2kgDRbI5EIFAoFDAYDXn31VTgcDoyMjHC5Xwgq89+enh6cO3cOa2trWF1d5Z8JBAL41a9+xf04Ib1DEhYjzaFcLgedToempiZMTExgYmICFosFXq9XkpypWq3G0NAQq0BEIhH83d/9HWKxGFpbW3Hy5EkMDg6iqalJkIsZDUPPzs7il7/8JYrFIlQqFbLZLG7fvs3C6ADYGYCE6/Z7H4g3TnIst27dwsOHD5HP57G5uQmVSrVHGUEqJC3OTCaDYDDIzBOZTMYSJUITdKpyZjIZLC0t8YQKORAXCgX2ShFTraWeazAYZK6qw+FAqVTC+vo6IpEIh6KVuZxYUMWUdFlpcUrNhehUoLZRXV0dEzu6urpEC0RRpZsEuROJxJ7FmclkMDMzw4U+ISAhM1KR2NnZYXpcoVDYI6SsVCpFi3xVV1dz2Gy1WpFMJnnqqaGhgfuzBoNB0HVJX3l1dRW//vWvkc1moVarmfdLzC4STctkMoLaYFRnsdvtqK2thc/ng1Kp5MpvIpE4tM0iIHFx0qyeVqtl3qrY+J94moFAAHfu3IHH40Eul0OxWEQ4HGbWxuuvvw6HwyH4RCZCutlsxvnz57G9vY3JyUlMTk6ycBYAnD9/Hn19fWhoaBAlrEyorq6GxWJBJpOBSqVCJpPBysoKHjx4gL6+PtF8ynA4zApuJpMJLpcL3d3dcLlcoknflXO1Z86cgdPphEajYaJ3IBDgWUmaHRUDhUIBm80Gp9OJ5eVl+Hw+yGQyvPLKKzh16hQcDsehLN0rZVvoz2FedmrVVLrjUQHq2LFjcLlcOHv2LGw2m6heJ60DMg+WyWRIpVIolUoIh8PY2to6lKSnpMWpUChQU1MDjUaDxsZGzj3FoFgsMkF9fHycfTeAJz1F8l956aWXmK8rBFT5MxgMbIP+wQcfYHV1FZlMBsViESMjIxgeHkZnZye7MYuFUqmEyWRifdLd3V14vV5MT0/DYrGgq6tL1PUikQgWFhYQiURgMplgt9tZwU0KqE4wODiIwcFBRCIRPHr0CJubmwgGgxz+S6mEKxQKWCwWOJ1Onue8ePEiLly4gIGBAVapl4rnvTgpSiOrQZKTodUCAAABzElEQVQZ1Wq1OHfuHIaGhtDT0wOLxSLqurQOyJeGRtR2dnYQiUQQDAZ/o1YhBpIWJ9mB9/b24rd+67eg0+nQ0tICnU4nuE1RXV3N40o//vGPce7cOf47CjVPnDghuW9YW1uL7u5uWCwWyGQyRCIRbr63traiubkZLS0th9LFHRgYgN1uR01NDZLJJP9/Kep4er0eLS0tTOYgL4/nhc7OTvzwhz9EIpFg5y6VSsU2GmKgUqlw+vRp2Gw29Pf3IxqNoqOjg4XAD9uEJzsKAHjttddgtVrR29uL3t5e2Gw2wSdbdXU1NBoNurq68Hu/93tM4QTAqntDQ0Nwu937yqJ+G6j1197ejt/+7d9mA2idToeuri40NDQciikkWeCLqn87Ozt7+ntSZCQq3aQqIUXuoxLfpmJXeb+HeZGevn7lNaVUcOlalT205wW67rOU4qRIWT4t/VL5/T8vhkyl4xwxqcS+YwB+wwEN+IZf+7zeA5pKoYowGScLvNcj9b0jHOE7iiP1vSMc4f8SjhbnEY7wHcVBSc13w+ziCEf4/xBHJ+cRjvAdxdHiPMIRvqM4WpxHOMJ3FEeL8whH+I7iaHEe4QjfURwtziMc4TuK/wcX0mJiLQpxRAAAAABJRU5ErkJggg==\n", | |
"text/plain": "<Figure size 432x288 with 1 Axes>" | |
}, | |
"metadata": { | |
"needs_background": "light" | |
}, | |
"output_type": "display_data" | |
} | |
] | |
}, | |
{ | |
"metadata": { | |
"trusted": false | |
}, | |
"cell_type": "code", | |
"source": "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)", | |
"execution_count": 42, | |
"outputs": [] | |
}, | |
{ | |
"metadata": { | |
"scrolled": false, | |
"trusted": false | |
}, | |
"cell_type": "code", | |
"source": "np.unique(y_test, return_counts=True)", | |
"execution_count": 43, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": "(array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]),\n array([37, 36, 35, 37, 35, 36, 32, 41, 41, 30]))" | |
}, | |
"execution_count": 43, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
] | |
}, | |
{ | |
"metadata": { | |
"trusted": false | |
}, | |
"cell_type": "code", | |
"source": "len(y_train)", | |
"execution_count": 44, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": "1437" | |
}, | |
"execution_count": 44, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
] | |
}, | |
{ | |
"metadata": { | |
"trusted": false | |
}, | |
"cell_type": "code", | |
"source": "len(y_test)", | |
"execution_count": 45, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": "360" | |
}, | |
"execution_count": 45, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
] | |
}, | |
{ | |
"metadata": {}, | |
"cell_type": "markdown", | |
"source": "## Show results" | |
}, | |
{ | |
"metadata": { | |
"trusted": false | |
}, | |
"cell_type": "code", | |
"source": "def get_results(algo, X_train=X_train, X_test=X_test, y_train=y_train, y_test=y_test):\n algo.fit(X_train, y_train)\n y_pred = algo.predict(X_test)\n print(\"Accuracy = \", np.round(accuracy_score(y_pred, y_test), 2))\n plt.imshow(algo.feature_importances_.reshape((8, 8)), cmap='binary')\n plt.title('Feature importance')\n plt.xticks([])\n plt.yticks([])\n plt.show()", | |
"execution_count": 58, | |
"outputs": [] | |
}, | |
{ | |
"metadata": {}, | |
"cell_type": "markdown", | |
"source": "## Decision tree" | |
}, | |
{ | |
"metadata": { | |
"trusted": false | |
}, | |
"cell_type": "code", | |
"source": "algo = DecisionTreeClassifier(max_depth=5)", | |
"execution_count": 59, | |
"outputs": [] | |
}, | |
{ | |
"metadata": { | |
"trusted": false | |
}, | |
"cell_type": "code", | |
"source": "%%time\nget_results(algo)", | |
"execution_count": 60, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": "Accuracy = 0.68\n" | |
}, | |
{ | |
"data": { | |
"image/png": "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\n", | |
"text/plain": "<Figure size 432x288 with 1 Axes>" | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
}, | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": "CPU times: user 61.6 ms, sys: 4.19 ms, total: 65.8 ms\nWall time: 66.9 ms\n" | |
} | |
] | |
}, | |
{ | |
"metadata": { | |
"trusted": false | |
}, | |
"cell_type": "code", | |
"source": "%%time\n\n# specific digit\nlabel = 7\nget_results(algo, y_train=y_train == label, y_test=y_test == label)", | |
"execution_count": 61, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": "Accuracy = 0.98\n" | |
}, | |
{ | |
"data": { | |
"image/png": "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\n", | |
"text/plain": "<Figure size 432x288 with 1 Axes>" | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
}, | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": "CPU times: user 60.1 ms, sys: 4.53 ms, total: 64.7 ms\nWall time: 62.8 ms\n" | |
} | |
] | |
}, | |
{ | |
"metadata": {}, | |
"cell_type": "markdown", | |
"source": "## Random forest" | |
}, | |
{ | |
"metadata": { | |
"trusted": false | |
}, | |
"cell_type": "code", | |
"source": "algo = RandomForestClassifier(max_depth=5, n_estimators=10)", | |
"execution_count": 62, | |
"outputs": [] | |
}, | |
{ | |
"metadata": { | |
"trusted": false | |
}, | |
"cell_type": "code", | |
"source": "%%time\nget_results(algo)", | |
"execution_count": 63, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": "Accuracy = 0.88\n" | |
}, | |
{ | |
"data": { | |
"image/png": "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\n", | |
"text/plain": "<Figure size 432x288 with 1 Axes>" | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
}, | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": "CPU times: user 86.5 ms, sys: 5.37 ms, total: 91.9 ms\nWall time: 93.2 ms\n" | |
} | |
] | |
}, | |
{ | |
"metadata": { | |
"trusted": false | |
}, | |
"cell_type": "code", | |
"source": "%%time\n\n# specific digit\nlabel = 7\nget_results(algo, y_train=y_train == label, y_test=y_test == label)", | |
"execution_count": 64, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": "Accuracy = 0.99\n" | |
}, | |
{ | |
"data": { | |
"image/png": "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\n", | |
"text/plain": "<Figure size 432x288 with 1 Axes>" | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
}, | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": "CPU times: user 114 ms, sys: 5.39 ms, total: 119 ms\nWall time: 129 ms\n" | |
} | |
] | |
}, | |
{ | |
"metadata": {}, | |
"cell_type": "markdown", | |
"source": "## Gradient boosting" | |
}, | |
{ | |
"metadata": { | |
"trusted": false | |
}, | |
"cell_type": "code", | |
"source": "algo = GradientBoostingClassifier(max_depth=5, n_estimators=10)", | |
"execution_count": 65, | |
"outputs": [] | |
}, | |
{ | |
"metadata": { | |
"trusted": false | |
}, | |
"cell_type": "code", | |
"source": "%%time\nget_results(algo)", | |
"execution_count": 66, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": "Accuracy = 0.93\n" | |
}, | |
{ | |
"data": { | |
"image/png": "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\n", | |
"text/plain": "<Figure size 432x288 with 1 Axes>" | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
}, | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": "CPU times: user 1.16 s, sys: 17.3 ms, total: 1.17 s\nWall time: 1.21 s\n" | |
} | |
] | |
}, | |
{ | |
"metadata": { | |
"trusted": false | |
}, | |
"cell_type": "code", | |
"source": "%%time\n\n# specific digit\nlabel = 7\nget_results(algo, y_train=y_train == label, y_test=y_test == label)", | |
"execution_count": 67, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": "Accuracy = 0.98\n" | |
}, | |
{ | |
"data": { | |
"image/png": "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\n", | |
"text/plain": "<Figure size 432x288 with 1 Axes>" | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
}, | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": "CPU times: user 153 ms, sys: 5.71 ms, total: 159 ms\nWall time: 158 ms\n" | |
} | |
] | |
}, | |
{ | |
"metadata": {}, | |
"cell_type": "markdown", | |
"source": "## XGBoost" | |
}, | |
{ | |
"metadata": { | |
"trusted": false | |
}, | |
"cell_type": "code", | |
"source": "algo = XGBClassifier(max_depth=5, n_estimators=10, use_label_encoder=False, eval_metric='mlogloss')", | |
"execution_count": 70, | |
"outputs": [] | |
}, | |
{ | |
"metadata": { | |
"trusted": false | |
}, | |
"cell_type": "code", | |
"source": "%%time\nget_results(algo)", | |
"execution_count": 71, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": "Accuracy = 0.95\n" | |
}, | |
{ | |
"data": { | |
"image/png": "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\n", | |
"text/plain": "<Figure size 432x288 with 1 Axes>" | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
}, | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": "CPU times: user 1.33 s, sys: 47.7 ms, total: 1.37 s\nWall time: 419 ms\n" | |
} | |
] | |
}, | |
{ | |
"metadata": { | |
"trusted": false | |
}, | |
"cell_type": "code", | |
"source": "algo = XGBClassifier(max_depth=5, n_estimators=10, use_label_encoder=False, eval_metric='logloss')", | |
"execution_count": 78, | |
"outputs": [] | |
}, | |
{ | |
"metadata": { | |
"trusted": false | |
}, | |
"cell_type": "code", | |
"source": "%%time\n\n# specific digit\nlabel = 7\nget_results(algo, y_train=y_train == label, y_test=y_test == label)", | |
"execution_count": 79, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": "Accuracy = 0.99\n" | |
}, | |
{ | |
"data": { | |
"image/png": "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\n", | |
"text/plain": "<Figure size 432x288 with 1 Axes>" | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
}, | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": "CPU times: user 491 ms, sys: 78.4 ms, total: 569 ms\nWall time: 279 ms\n" | |
} | |
] | |
} | |
], | |
"metadata": { | |
"kernelspec": { | |
"name": "python3", | |
"display_name": "Python 3", | |
"language": "python" | |
}, | |
"language_info": { | |
"name": "python", | |
"version": "3.7.7", | |
"mimetype": "text/x-python", | |
"codemirror_mode": { | |
"name": "ipython", | |
"version": 3 | |
}, | |
"pygments_lexer": "ipython3", | |
"nbconvert_exporter": "python", | |
"file_extension": ".py" | |
}, | |
"toc": { | |
"nav_menu": {}, | |
"number_sections": true, | |
"sideBar": true, | |
"skip_h1_title": true, | |
"base_numbering": 1, | |
"title_cell": "Table of Contents", | |
"title_sidebar": "Contents", | |
"toc_cell": false, | |
"toc_position": {}, | |
"toc_section_display": true, | |
"toc_window_display": false | |
}, | |
"gist": { | |
"id": "", | |
"data": { | |
"description": "Ensemble methods on the Digit dataset", | |
"public": true | |
} | |
} | |
}, | |
"nbformat": 4, | |
"nbformat_minor": 4 | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment