{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": { "tags": [ "remove_input" ] }, "outputs": [], "source": [ "import matplotlib\n", "#matplotlib.use('Agg')\n", "path_data = '../../../../data/'\n", "from datascience import *\n", "%matplotlib inline\n", "import matplotlib.pyplot as plt\n", "from mpl_toolkits.mplot3d import Axes3D\n", "import numpy as np\n", "import math\n", "import scipy.stats as stats\n", "plt.style.use('fivethirtyeight')" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "tags": [ "remove_input" ] }, "outputs": [], "source": [ "\n", "def distance(point1, point2):\n", " \"\"\"Returns the distance between point1 and point2\n", " where each argument is an array \n", " consisting of the coordinates of the point\"\"\"\n", " return np.sqrt(np.sum((point1 - point2)**2))\n", "\n", "def all_distances(training, new_point):\n", " \"\"\"Returns an array of distances\n", " between each point in the training set\n", " and the new point (which is a row of attributes)\"\"\"\n", " attributes = training.drop('Class')\n", " def distance_from_point(row):\n", " return distance(np.array(new_point), np.array(row))\n", " return attributes.apply(distance_from_point)\n", "\n", "def table_with_distances(training, new_point):\n", " \"\"\"Augments the training table \n", " with a column of distances from new_point\"\"\"\n", " return training.with_column('Distance', all_distances(training, new_point))\n", "\n", "def closest(training, new_point, k):\n", " \"\"\"Returns a table of the k rows of the augmented table\n", " corresponding to the k smallest distances\"\"\"\n", " with_dists = table_with_distances(training, new_point)\n", " sorted_by_distance = with_dists.sort('Distance')\n", " topk = sorted_by_distance.take(np.arange(k))\n", " return topk\n", "\n", "def majority(topkclasses):\n", " ones = topkclasses.where('Class', are.equal_to(1)).num_rows\n", " zeros = topkclasses.where('Class', are.equal_to(0)).num_rows\n", " if ones > zeros:\n", " return 1\n", " else:\n", " return 0\n", "\n", "def classify(training, new_point, k):\n", " closestk = closest(training, new_point, k)\n", " topkclasses = closestk.select('Class')\n", " return majority(topkclasses)" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "tags": [ "remove_input" ] }, "outputs": [], "source": [ "\n", "wine = Table.read_table(path_data + 'wine.csv')\n", "\n", "# For converting Class to binary\n", "\n", "def is_one(x):\n", " if x == 1:\n", " return 1\n", " else:\n", " return 0\n", " \n", "wine = wine.with_column('Class', wine.apply(is_one, 0))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### The Accuracy of the Classifier ###\n", "To see how well our classifier does, we might put 50% of the data into the training set and the other 50% into the test set. Basically, we are setting aside some data for later use, so we can use it to measure the accuracy of our classifier. We've been calling that the *test set*. Sometimes people will call the data that you set aside for testing a *hold-out set*, and they'll call this strategy for estimating accuracy the *hold-out method*.\n", "\n", "Note that this approach requires great discipline. Before you start applying machine learning methods, you have to take some of your data and set it aside for testing. You must avoid using the test set for developing your classifier: you shouldn't use it to help train your classifier or tweak its settings or for brainstorming ways to improve your classifier. Instead, you should use it only once, at the very end, after you've finalized your classifier, when you want an unbiased estimate of its accuracy." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Measuring the Accuracy of Our Wine Classifier ###\n", "OK, so let's apply the hold-out method to evaluate the effectiveness of the $k$-nearest neighbor classifier for identifying wines. The data set has 178 wines, so we'll randomly permute the data set and put 89 of them in the training set and the remaining 89 in the test set." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "shuffled_wine = wine.sample(with_replacement=False) \n", "training_set = shuffled_wine.take(np.arange(89))\n", "test_set = shuffled_wine.take(np.arange(89, 178))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We'll train the classifier using the 89 wines in the training set, and evaluate how well it performs on the test set. To make our lives easier, we'll write a function to evaluate a classifier on every wine in the test set:" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "def count_zero(array):\n", " \"\"\"Counts the number of 0's in an array\"\"\"\n", " return len(array) - np.count_nonzero(array)\n", "\n", "def count_equal(array1, array2):\n", " \"\"\"Takes two numerical arrays of equal length\n", " and counts the indices where the two are equal\"\"\"\n", " return count_zero(array1 - array2)\n", "\n", "def evaluate_accuracy(training, test, k):\n", " test_attributes = test.drop('Class')\n", " def classify_testrow(row):\n", " return classify(training, row, k)\n", " c = test_attributes.apply(classify_testrow)\n", " return count_equal(c, test.column('Class')) / test.num_rows" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now for the grand reveal -- let's see how we did. We'll arbitrarily use $k=5$." ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.898876404494382" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "evaluate_accuracy(training_set, test_set, 5)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The accuracy rate isn't bad at all for a simple classifier." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Breast Cancer Diagnosis ###\n", "\n", "Now I want to do an example based on diagnosing breast cancer. I was inspired by Brittany Wenger, who won the Google national science fair in 2012 a 17-year old high school student. Here's Brittany:\n", "\n", "\n", "\n", "Brittany's [science fair project](https://sites.google.com/a/googlesciencefair.com/science-fair-2012-project-64a91af142a459cfb486ed5cb05f803b2eb41354-1333130785-87/home) was to build a classification algorithm to diagnose breast cancer. She won grand prize for building an algorithm whose accuracy was almost 99%. \n", "\n", "Let's see how well we can do, with the ideas we've learned in this course.\n", "\n", "So, let me tell you a little bit about the data set. Basically, if a woman has a lump in her breast, the doctors may want to take a biopsy to see if it is cancerous. There are several different procedures for doing that. Brittany focused on fine needle aspiration (FNA), because it is less invasive than the alternatives. The doctor gets a sample of the mass, puts it under a microscope, takes a picture, and a trained lab tech analyzes the picture to determine whether it is cancer or not. We get a picture like one of the following:\n", "\n", "\n", "\n", "\n", "\n", "Unfortunately, distinguishing between benign vs malignant can be tricky. So, researchers have studied the use of machine learning to help with this task. The idea is that we'll ask the lab tech to analyze the image and compute various attributes: things like the typical size of a cell, how much variation there is among the cell sizes, and so on. Then, we'll try to use this information to predict (classify) whether the sample is malignant or not. We have a training set of past samples from women where the correct diagnosis is known, and we'll hope that our machine learning algorithm can use those to learn how to predict the diagnosis for future samples.\n", "\n", "We end up with the following data set. For the \"Class\" column, 1 means malignant (cancer); 0 means benign (not cancer)." ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
Clump Thickness | Uniformity of Cell Size | Uniformity of Cell Shape | Marginal Adhesion | Single Epithelial Cell Size | Bare Nuclei | Bland Chromatin | Normal Nucleoli | Mitoses | Class | \n", "
---|---|---|---|---|---|---|---|---|---|
5 | 1 | 1 | 1 | 2 | 1 | 3 | 1 | 1 | 0 | \n", "
5 | 4 | 4 | 5 | 7 | 10 | 3 | 2 | 1 | 0 | \n", "
3 | 1 | 1 | 1 | 2 | 2 | 3 | 1 | 1 | 0 | \n", "
6 | 8 | 8 | 1 | 3 | 4 | 3 | 7 | 1 | 0 | \n", "
4 | 1 | 1 | 3 | 2 | 1 | 3 | 1 | 1 | 0 | \n", "
8 | 10 | 10 | 8 | 7 | 10 | 9 | 7 | 1 | 1 | \n", "
1 | 1 | 1 | 1 | 2 | 10 | 3 | 1 | 1 | 0 | \n", "
2 | 1 | 2 | 1 | 2 | 1 | 3 | 1 | 1 | 0 | \n", "
2 | 1 | 1 | 1 | 2 | 1 | 1 | 1 | 5 | 0 | \n", "
4 | 2 | 1 | 1 | 2 | 1 | 2 | 1 | 1 | 0 | \n", "
... (673 rows omitted)
" ], "text/plain": [ "Clump Thickness | Uniformity of Cell Size | Uniformity of Cell Shape | Marginal Adhesion | Single Epithelial Cell Size | Bare Nuclei | Bland Chromatin | Normal Nucleoli | Mitoses | Class\n", "5 | 1 | 1 | 1 | 2 | 1 | 3 | 1 | 1 | 0\n", "5 | 4 | 4 | 5 | 7 | 10 | 3 | 2 | 1 | 0\n", "3 | 1 | 1 | 1 | 2 | 2 | 3 | 1 | 1 | 0\n", "6 | 8 | 8 | 1 | 3 | 4 | 3 | 7 | 1 | 0\n", "4 | 1 | 1 | 3 | 2 | 1 | 3 | 1 | 1 | 0\n", "8 | 10 | 10 | 8 | 7 | 10 | 9 | 7 | 1 | 1\n", "1 | 1 | 1 | 1 | 2 | 10 | 3 | 1 | 1 | 0\n", "2 | 1 | 2 | 1 | 2 | 1 | 3 | 1 | 1 | 0\n", "2 | 1 | 1 | 1 | 2 | 1 | 1 | 1 | 5 | 0\n", "4 | 2 | 1 | 1 | 2 | 1 | 2 | 1 | 1 | 0\n", "... (673 rows omitted)" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "patients = Table.read_table(path_data + 'breast-cancer.csv').drop('ID')\n", "patients" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "So we have 9 different attributes. I don't know how to make a 9-dimensional scatterplot of all of them, so I'm going to pick two and plot them:" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "color_table = Table().with_columns(\n", " 'Class', make_array(1, 0),\n", " 'Color', make_array('darkblue', 'gold')\n", ")\n", "patients_with_colors = patients.join('Class', color_table)" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAiYAAAFWCAYAAABdBFYaAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjAsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+17YcXAAAgAElEQVR4nOzdeXwN9/fH8dfcm4RYI0SQiCBBLUG1qqr2Bm1pFbVWUbX78qO22pdaonZFbS2KqlpjKVVK7FUEbRElliQISUT23Dvz+0ObSpNw1b2TcM+zjz4euTNz531GtpPPfGZGiYmJ0RBCCCGEyAEM2V2AEEIIIcTfpDERQgghRI4hjYkQQgghcgxpTIQQQgiRY0hjIoQQQogcQxoTIYQQQuQY0pgIIYQQIseQxkQIIYQQOYY0JtkgJCQku0vIVvZ8/HLs9smej12IJyWNiRBCCCFyDGlMhBBCCJFjSGMihBBCiBxDGhMhhBBC5BgO2V2AEEKI7GEymYiPj8/uMoQdyps3Lw4Ombcg0pgIIYQdMplM3L9/HxcXFxRFye5yhB3RNI2YmBjy58+faXOi+6mcQ4cO0a5dO1544QVcXFxYvXp1uvWapjFlyhQqVKhAsWLFeOutt/jjjz/0LlMIIZ5r8fHx0pSIbKEoCi4uLlmO1unemMTHx1OxYkWmTp2Ks7NzhvVz5szhiy++YNq0aezduxc3NzdatmzJ/fv3rVOAmogh8Q8MKWHW2d8TCrt5h99CrhETG6d79p079+g+fCZ9Rs8lISFB9/xfgi/w2fw1HD9zSfdss9nMV+t/4PPF33EzMkr3/Ow2ffF3dOg/mQPHz+qefflaBF0Hf87kRd+Tmpqqe/7BX87x2fw1HD2l/x84CQkJDBj/BZ/OXE3E7Tu65z+ONCUiuzzqa0+JiYnRdKwlHQ8PDwICAujYsSPwYLSkQoUKfPzxx3zyyScAJCYm4uvry8SJE+natetT5SmpUeS+NRvFFAWKEVPemqQU6fjUx2Gp77YfYF3gz0THxOJetDAj+7ancnlvXbIvXrnBK+8OQNMefLqNBoULe5ZTpEhBXfJHBCxn6bqdqGYVRVFo3qgWX33+iS7ZZrOZKk17cetONAC5nRzZv24GPt4ldMl/WEhICL6+vrpmetf5gJjYf/4y+aT7e4z6Xyddso8Hn8f/g0/TXjsYjUQcX4Ojo6Mu+T2Gz2bT7sOoqhmDwUDn9xozY1RPXbLv3YujTP0umM0qAIoCxzbPpVxpT13yH+fevXsULKjP978QmcnqazBHXZVz9epVbt26RcOGDdOWOTs7U7t2bY4dO/bU+3eK3oCiJoAxDxhy4ZDwC0rqzaferyVSUlPZ9MMhHBwcyOOcC7NZZdm6H3TJBnizy8i0pgTArGq06DFOt/yVG/agoGA0GlEUhZ0//4LZbNYle+ayTdy6E43RYMBoMJCckkr7/03RJTu77TsSnK4pAZi1fJNu+S17jk/32mQ20+n/pumWv3XvURSFtK+7tYE/65b9bs9xaU0JgKZBk4eaNCFE5nLU5Ndbt24B4Obmlm65m5sbERERWb7P0ts9e5hv40xi2muDlsy1KxdIUqx0mugR4hOTuR93H3gwfJWQkEBUtEG3W1XHJyRlWHb7bpRu+WbV/K/GSOX8+fM4OTnZPPtCyGU0VUNTHuRrmsb9uPhsu024nrlHTwRnWKZqmm41pKSYMiwLvXZTl3yz2YxqNvPQlx1ms6rbsUdkcsowISn5ifL1Hl0D+N/4BfwZGq5bXlnvEswd20e3vL+tXr2aoUOHEhaWPaf1HzZv3jwWL17M2bNPd6o1KCiI5s2b8+eff1K4cOEM669evUrVqlXZt28f1atXz3QflmxjazmqMfmvLP3mNcb5kytqLSgOoJnRjO6ULP4qGGz/y1HTNCqVL0tIaBgpyck4OjnRsM5Luv3g6ftBcz5fujHdsomDPtQtv2Txoly5fhODQcFsNuPuVohKlSrpkj28bycCf/4Vs8kMioJiMNDt/abZ8kNf71M5Azw8CFi6JV1T6OFeWLca3m3yGuu3H0i3bOqIj3XLL1qkEDdvR2EwGFBVFc9iRXTL/mxwVz4aPivdsi6t38iWr7sn8WdoOId+/T27y3is27dvM2PGDHbt2kV4eDiFCxemUqVK9OjRA39//+wuTzyFHHUqx93dHYDIyMh0yyMjIylatOhT79+c72WSC3fEnKsMJmc/EosN0qUpgQcTfSYM6swbdapT1sudD1s1pvN7jXXJBhj1v050be2Po4MRRwcjI/u2o/07DR//Ris5umk2r1Qrj6tLfsqX9uD4pnm6Zft4l2DTwjGUKFoYN9eCDOz6HkN7va9bfnbKkycP+9d9jrNzLhyNRsqV9uDc7iW65S+ZMpDmjWo++LozGpk/tjcNXq2qW/7RDXOoWrEMri75edmvPEc2znr8m6yk1ZuvM+Z/HXByNGI0GujwTgOmDe+uW/7z7OrVq9SrV4+9e/cyduxYDh06xObNm/H392fQoEG61ZGSkqJb1uPkpFqeVo5qTEqVKoW7uzv79u1LW5aUlMSRI0d45ZVXrJJhzluD5KK9SHH7EIz5rLJPS+VycqR3p+b069SMd/1f031G/KwxvYg8uZ7Ik+sZ0lPfX8xGo5HtX03i/E/LWBHQn3z5Ml6RZUu1X6rEmV1f8seepYzq317X7OzmV6E0EcfWEnlqPce36NcQ/m3VrOFEnlzP4e8m06nVG7pm58vnzE+rAzj/0zJ2rvhMl1OHDxvUvTW3f13P0e+msGBif12zn2d/Xxyxb98+WrZsia+vL+XLl6dHjx4cPHgQgOvXr9OxY0c8PT3x9PSkU6dOjz1t89VXX1G9enXc3NyoXr06K1asSLfexcWFJUuW0KlTJ0qUKMGECRP+U/1z5syhXLlyeHh40LNnT+Li0l+lefLkSVq2bEmZMmUoWbIkTZs25fjx409cS3JyMh07dqRu3brp/uC/dOkSTZs2xd3dnZdffpm9e/dmWWtQUBAuLi7cvXs3bdnVq1dxcXHh1KlTacvOnz/P+++/j6enJz4+Pnz00Udp0zOelO6NSVxcHGfOnOHMmTOoqsqNGzc4c+YM169fR1EUevfuzZw5c9i6dSu///47ffr0IW/evLRu3VrvUoUQQuQw0dHR7Nmzh+7du5MvX8Y/Ll1cXFBVlQ4dOhAZGUlgYCCBgYHcvHmTjh07pjut+bDAwECGDBlC7969OXLkCL169WLw4MHs3Lkz3XbTpk3D39+fw4cP0737gxEwDw+PR/7/8O+vTZs2MWnSJEaMGMH+/fvx9fVlwYIF6TLu379P27Zt2blzJz/99BNVqlShTZs2REVFPbaWv8XGxtKqVSuio6PZtm1burmbY8eOpWfPngQFBVG/fn06dOhAePh/n1d08+ZN3nzzTV544QV++uknNm/eTFxcHB06dEBV1cfv4F90n2Ny6tQpmjdvnvZ6ypQpTJkyhfbt27Nw4UIGDBhAYmIiQ4YMISYmhho1arBx40by58+vd6lCCCFymMuXL6NpGuXKlctym/379/Pbb79x6tQpSpUqBcDSpUupXr06+/fvp379+hneM3/+fNq2bUuPHj0A8PHx4fTp08yZM4dmzZqlbdeyZUs6d+6c7r1BQUGPrDl37txpHy9cuJD27dun3f7ik08+ISgoiMuXL6dtU69evXTvDwgIYOvWrfz444+0bds2y1quX78OPJj+0LNnT4oXL87XX3+dLh+gW7dutGzZEiDtnmHLly9n1KhRjzyOrCxbtozKlSszfvw/V+F9+eWXeHt7c+rUKWrUqPFE+9O9MXn99deJiYnJcr2iKIwYMYIRI0boWJUQQohnQVYjHg+7cOECxYsXT2tKALy9vSlevDjnz5/PtDG5cOFC2j21/vbqq69mGDHJ7EqVMmXKWFj9g5wPPvgg3bKXX345XWMSGRnJZ599RlBQEJGRkZjNZhITE7lx48ZjawFo1aoVfn5+rFq1KtNbvr/88stpHxsMBmrUqMH58+ctPoZ/Cw4O5vDhw3h4eGRYd+XKlZzfmAghhBD/VdmyZVEUhYsXL/6n9z/p3L5/b583b94M22T2C/lhr776Kt9//73Fmb179+b27dtMnjwZLy8vcuXKRYsWLTJMcM2sFoAmTZqwadMmfv/9d/z8/CzOzYzB8GDGx8MNocmU/jYAqqri7+/PpEmTMrz/37f/sIQ0JkIIIZ4ZhQoVolGjRixZsoSePXtmmGcSExND+fLliYiI4OrVq2mjJqGhoURERFChQoVM91u+fHmOHTuW7tTIkSNHstz+YU9yKqd8+fKcOHEi3ajJiRMn0m1/9OhRpk6dSpMmTYAHl0Y/yUTSkSNHUqhQId555x22bNmSoTk5ceJE2ukiTdM4efIk77zzTqb7KlKkCPBgHsnfH//7fitVq1Zl06ZNlCxZ0ip3dZbGRAghxDPl888/p0mTJjRo0ICRI0dSqVIlNE0jKCiIWbNmcfbs2bR7mkydOhWAoUOHUrVqVerWrZvpPvv370+XLl2oVq0aDRs2ZM+ePaxfv55Vq1Y9tp4nOZXTq1cvevXqxYsvvkidOnXYsmULv/76Ky4uLmnblC1blu+++46XXnqJhIQExowZ88RXlI0ePRpN03j33XfZsmULVapUSVu3fPlyfHx8qFixIkuXLuX69et069Yty2Pz9PRk6tSpjBs3jmvXrjF9+vR023Tv3p0VK1bQtWtXBg4cSJEiRQgNDU2b6Pukc0SlMRFCCJGmrM7PkPoved7e3uzfv58ZM2YwduxYIiIicHV1pXLlysyePRtFUVizZg3Dhg1Lu9iiXr16BAQEZHkq5+233yYgIIB58+YxYsQISpYsyYwZM9JNfLWG9957j9DQUCZOnEhiYiLNmjWjT58+rFmzJm2b+fPnM3DgQOrXr0+xYsUYPnx4ust1LTVmzBg0TUsbOSlQoADw4KqcL774guDgYEqWLMk333yT5ekoR0dHli1bxuDBg6lTpw5VqlRhzJgx6SbhFi9enF27djF+/HhatWpFcnIynp6eNGjQgFy5cj1x3dn6ED97lR0PcstJ7Pn45djl2HMKeYifyG7PxEP8hBBCCGHfpDERQgghRI4hjYkQQgghcgxpTIQQQgiRY0hjIoQQQogcQxoTIYQQQuQY0pgIIYQQIseQxkQIIYQQOYY0JkIIIYTIMeSW9EIIIdLkDp+GMeW6bnlmp5IklRimW97fVq9ezdChQwkLC9M92xpcXFxYsWJFlg/fu3v3LmXLliUwMJDXX39d5+qejjQmQggh0hhTruOQeDq7y3is27dvM2PGDHbt2kV4eDiFCxdOe3Cfv79/dpcnnoI0JkIIIZ4pV69epWnTpuTLl4+xY8dSuXJlVFVl//79DBo0iHPnzulSR0pKyhM/9Vc8nswxEUII8Uz55JNPANi3bx8tW7bE19eX8uXL06NHDw4ePAjA9evX6dixI56ennh6etKpU6fHnrb56quvqF69Om5ublSvXp0VK1akW+/i4sKSJUvo1KkTJUqUYMKECf+p/pkzZ+Lr64uHhwc9e/Zk6tSpVKlSJW29qqoEBARQqVIlihYtSu3atdm+ffsj93ny5Enq1auHu7s7r7/+OidOnPhPteUE0pgIIYR4ZkRHR7Nnzx66d+9Ovnz5Mqx3cXFBVVU6dOhAZGQkgYGBBAYGcvPmTTp27IimaZnuNzAwkCFDhtC7d2+OHDlCr169GDx4MDt37ky33bRp0/D39+fw4cN0794dAA8Pj0f+37p167T3b9iwgWnTpjF69Gj2799P+fLlWbBgQbqMhQsXMm/ePMaNG8fhw4d56623+OCDDzhz5kymtcfFxfH+++/j7e3Nvn37GDduHKNHj36if9ecRE7lCCGEeGZcvnwZTdMoV65cltvs37+f3377jVOnTlGqVCkAli5dSvXq1dm/fz/169fP8J758+fTtm1bevToAYCPjw+nT59mzpw5NGvWLG27li1b0rlz53TvDQoKemTNuXPnTvt40aJFdOjQIW0fgwYNIigoiEuXLqWrpV+/frRp0waAkSNHcvjwYebPn8/ixYsz7P/7778nJSWFL774gnz58lGxYkUGDx5Mz549H1lXTiWNiRDPucvXIpjz1WaSklPw8S7BwK4tcXTU51tf0zRWbfqJwyd/J+7+fXp2bMHrNas8/o1CZCGrEY+HXbhwgeLFi6c1JQDe3t4UL16c8+fPZ9qYXLhwgY4dO6Zb9uqrr2YYMalevXqG95YpU8bC6uHixYsZGpsaNWqkNSaxsbFERERQq1atDLXs3r07031euHCBSpUqpRtBqlmzpsU15TTSmAjxHEtJTWXi3NXEJyajKAqHf/0d51xO9Psw80sMrW130Ek27z6Eo4Mj8fEJzF2xhTJexfEoVkSXfPH8KVu2LIqicPHixf/0fkVRnmr7vHnzZtjGw8Pjkft49dVX+f77758o15JanlfSmAjxHLsTFUvM/XicHB0BcHJ05Mr1m7rln/7tEo4Ojmmvk5NNnLt4VRoT8Z8VKlSIRo0asWTJEnr27JlhnklMTAzly5cnIiKCq1evpo2ahIaGEhERQYUKFTLdb/ny5Tl27Fi60YwjR45kuf3DnuRUTrly5Th16hQffPBB2rKTJ0+mfVygQAGKFy/O0aNHqVevXrpaypcvn2Xta9asIT4+Pq1x+uWXXx5bd04ljYkQzzGXAvnI45wLk0kFwGQ2U7hQAd3yvTzcORZ8Pq05MRoVypR01y1fPJ8+//xzmjRpQoMGDRg5ciSVKlVC0zSCgoKYNWsWZ8+eTbunydSpUwEYOnQoVatWpW7dupnus3///nTp0oVq1arRsGFD9uzZw/r161m1atVj63mSUzm9evWib9++VK9endq1a7Nt2zZOnDiBi4tLulqmTJlC2bJlqVatGuvWrePIkSPs378/0322bt2aiRMn0q9fP4YOHcrNmzeZMWOGxTXlNNKYCPEcy+Oci94d32bJ2p0kp6RSyqMo/bu8q1t+27frcuV6BGfOX8FoVGjzVl18S3vqli+enNmpZI7P8/b2Zv/+/cyYMYOxY8cSERGBq6srlStXZvbs2SiKwpo1axg2bBjNmzcHoF69egQEBGR5OuTtt98mICCAefPmMWLECEqWLMmMGTPSTXy1hlatWhEaGsr48eNJTEzk7bffplu3buzYsSNtm169ehEXF8fYsWO5ffs2vr6+rFy5Mt0lxQ/Lly8f69atY9CgQdSrVw9fX1/GjRtH+/btrVq7XpSYmJjHzyQSVhUSEoKvr292l5Ft7Pn4s+vYNU0j1WRKO6Wjt9RUE5cv/5nlUPTzLid+zd+7d4+CBQtmdxkC6NixIyaTiXXr1mV3KbrK6mvwiUZMzp07x+HDh4mKiqJr1664u7tz+fJl3NzcyJ8/v9WKFUJYl6Io2daUADg6OmAwyG2ThEhISGDZsmU0btwYBwcHtm7dyo4dO1i5cmV2l5ZjWNSYJCcn06NHDwIDA9E0DUVRaNq0Ke7u7owZMwYfHx/GjRtn41KFEEKIZ5uiKOzZs4eZM2eSlJREmTJlWLx4cdopJ2HhnV8nTpzIzz//zJdffklISEi668jfeOMNfvrpJ5sVKIQQQjwvnJ2d2bJlC1euXCEiIoJDhw6l3UhNPGDRiMmGDRsYNWoUbdq0wWw2p1tXqlQprl27ZpPihBBCCGFfLBoxiYqKyvL2v6qqkpKSYtWihBBCCGGfLGpMSpUqleXNWn799Vd8fHysWpQQQgjbs+T27kLYwqO+9ixqTNq1a8fs2bP57rvvSE1NBR5M4Dlw4AALFiygU6dO1qlUCCGELvLmzUtMTIw0J0J3mqYRExOT6e39wcI5JgMGDODcuXP07NmT//3vfwA0a9aMpKQkWrVq9cw+wVAIIeyVg4MD+fPnJzY2NrtLEXYof/78ODhk3oJY1JgYjUaWL19O9+7d2bt3L5GRkbi6utKoUSPq1Klj1WKFEELow8HBQW6yJnKcJ7rBWu3ataldu7atahFCCCGEnbNojknz5s0ZMmRIplffXLhwQW4MI4QQQgirsKgxOXjwIMuXL+edd94hKioq3br79+9z6NAhmxQnhBBCCPti8cMrZs+eTXh4OI0bN+bSpUu2rEkIIYQQdsrixqRixYrs3buXokWL0rhxYw4cOGDLuoQQQghhh57ocZ+FCxcmMDCQJk2a0Lp1a3kaohBCCCGs6omuygFwdHTkyy+/pFy5cgwcOJBGjRrZoi4hhBBC2KEnbkz+NnjwYHx8fOjTp4816xFCCCGEHbOoMQkODqZYsWIZlr/zzjtUrVqVGzduWL0wIYQQQtgfixoTLy+vLNd5e3vj7e1trXqEEEIIYceybEz69u3LkCFD8Pb2pm/fvo/ciaIozJ8/3+rFCSGEEMK+ZNmYBAUF0atXLwAOHDiAoihZ7uRR64QQQgghLJVlY3LmzJm0j8+ePatLMUIIIYSwb090HxM9mM1mJk2ahJ+fH+7u7vj5+TFp0iRMJlN2lyaEEEIIG8uyMUlNTSU2NjbD8jt37jBmzBjatm3LgAED0o2sWMPs2bNZunQp06ZN4/jx40ydOpUlS5Ywc+ZMq+bYoyuhIfQaPJh+w4Zx63a47vljZ63itdb/x9TFG3XPvnnrJi0+7EOD1h+x78DPuudnp7i4OMo3/Aj3l96nyyef655/8PhZ6rcfQs/Ri7gZGfX4NzxHIu/G0G/MfEbNWkvIlbDsLkeIZ4ISExOjZbZi+PDh7Nq1i1OnTqUtu3fvHrVr1yY8PBwXFxdiY2PJlSsXP/zwA35+flYpqG3bthQqVIhFixalLevVqxfR0dGsW7fOKhnZLSQkBF9fX10zr4SG8FbXkSSlmAHI7+zAnm/n4FYk42XgtvDux+M4eOI3QEMDKvmU4sD6GbpkR8VEU63pxyQkqQAYDLBs8sc0b9pMl/yH6f25T0lJwf3l9mjaP9/mlct7c3C9Po3+7v0n6DQoAFVV0TQNZ+dcnNq+EDfXgrrkZ6c70bE07DCU+3EJqKqKc+5cbFkyjvJlSmZ3aULkaFmOmBw9epQ2bdqkW7Zw4ULCw8OZPn06V65c4bfffsPT05NZs2ZZraBatWpx8OBBLl68CMD58+cJCgrijTfesFqGPRo/Yz7JKWYcjAoORoXYBBOzFy56/But5HjweQwGBYPBgEFROH/5OmazWZfsWQuWEp+kYjA8aEpUDUbN/EaX7Oz21frd6ZoSgHMXQnXLHxawDFXTHnzeDQYSE1OYPH+NbvnZacHKrdy7H4+D0YjBYCA11cS42fbxdSfE08hy8uv169epUqVKumW7du2iVKlSdO/eHYBixYrRt29fpk6darWCBg4cSFxcHK+88gpGoxGTycQnn3ySlpmZkJAQq+XrRe+aU1KSAQ1NfXAFlaZpJCQm6laHqmr/+gWpERISgtFotHl2XML99As0UM1qtn3d6JkbHXU3W2tITU1FU1U0w4O/gTQ07t+//0x+zz6pqKgoVLMZ019XLZrNZhLi45/o2PUeWRUiJ8iyMUlISKBQoULpXp89e5Z27dql287Hx4e7dzP/4fdfbNy4kW+//ZalS5dSoUIFzp49y/Dhw/Hy8qJz586ZvudZ++bNjlM5U0YO4c0PR5CYYgYNXPI58umg/9PtVE7tlypx4NiD+Uga4FeuNBUqVNAle9zQQWz4qTsJif+cypk56qNs+brR+3M/qFQpApZuRX2oKaxWqYxuNXwxoT9t+n2GalZRNY28zrkJGNUb14L5dcnPTuMGF+fnX/7gXmw8Zk0lr3MuZo7pTdlSHtldmhA5Wpancjw8PLh06VLa66NHj2I2m6lVq1a67RITE8mf33o/ZMaMGUO/fv1o1aoVlSpVol27dvTt29eqp4vsUSmvsvywajrNX/elVaMX+HGtfvNLADYuGsPQHm2oUqE0bd98jX3fTtctu2ABF07vXELDml7UeMGNzQuH8EaDxrrlZycnJydu/rIWrxJFcc7tRId36/PzWv0mwNarVZWtS8ZRo7Ivr/j5cHL7ArtoSgBcCuRjz+ppvNe0DvVrVuSHrydLUyKEBbIcMWnYsCFz5syhZs2aFC1alFmzZuHk5ESTJk3Sbffrr7/i6elptYISEhIyDO8bjUZUVbVahr0q6VmKOVY87fakhvZuy9DebbNlGN/VpRDfLZ6te25O4OTkxJkf9JtP9G+1qldk16ophISE2MWk14cVKVSAGaN6EBISQilP9+wuR4hnQpaNyZAhQ9i5cyd16tQBHsxJ+PTTT3Fzc0vbRtM01q9fn6FZeRpNmzZl9uzZlCpVigoVKnDmzBm++OKLDKeQhBBCCPH8ybIxcXNz4/Dhw2zevJmYmBhq1KhB7dq1021z584dPvzwQ5o2bWq1ggICAvjss88YPHgwd+7cwd3dnQ8//JChQ4daLUMIIYQQOVOW9zERtpMdk19zEns+fjl2OXYhxKPluFvSCyGEEMJ+SWMihBBCiBxDGhMhhBBC5BjSmAghhBAix5DGRAghhBA5hjQmQgghhMgxsryPiZ+fH8pfD596HEVROH36tNWKEkIIIYR9yrIxee211yxuTIQQQgghrCHLxmThwoV61iGEEEIIIXNMhBBCCJFzZDlisnbt2ifaUfv27Z+6GCGEEELYtywbkz59+li8E0VRpDERQgghxFPLsjEJDg7Wsw4hhBBCiKwbEy8vLz3rEEIIIYTIujHJzLlz5zh8+DBRUVF07doVd3d3Ll++jJubG/nz57dVjUIIIYSwExY1JsnJyfTo0YPAwEA0TUNRFJo2bYq7uztjxozBx8eHcePG2bhUIYQQQjzvLLpceOLEifz88898+eWXhISEoGla2ro33niDn376yWYFCiGEEMJ+WDRismHDBkaNGkWbNm0wm83p1pUqVYpr167ZpDghhBBC2BeLRkyioqIoV65cputUVSUlJcWqRQkhhBDCPlnUmJQqVYpffvkl03W//vorPj4+Vi1K2E5yUjwpKYnZkq2azUTeuYn6r1E3vZhMZpKS7bOJNplMRN6NQVXVbMlPSk7BZMqez7umacQnJKU7Ba2nlNRUUlJN2ZItxLPIolM57dq1Y+bMmXh5edGiReXtUAgAACAASURBVAvgwU3VDhw4wIIFCxg+fLhNixRPT1NVZs0ZxYlz10CBBjUr8HGPUbrlHzseRI9P55OQbMbRAWaM+JBm/s11y1+9eS/bfjqKqmm8UNaLUf074OBg1C0/O839ejMLVgViMqkUKpiXzUvG4eFeRJdss9nMZ198y28XQ0lISKDN2/Xp/N4bumQDXLxyg6kLvyMuPpEC+ZwZ3b8jpTzddctf+u1O9hw6RVxcHHVqVmVYr/fl4ahCPIZFIyYDBgzA39+fnj174u3tDUCzZs149913ady4MT179rRljcIKftixgkOnQ+Gvn4k/HPyNX45t1y2//7gFxCeZUBRITlEZHvCNbtlXrkewfkcQqgagEHz+Mqu37NMtPztF3o1h/ootmM0qigJRMffpNmSmbvnrtu3n9O9/AgqaBht/OMTFyzd0y5+xZANx8YkoikJsXCKfL/let+yT50LYtvc42l9fd8dOn2frj0d0yxfiWWXRiInRaGT58uV0796dvXv3EhkZiaurK40aNaJOnTq2rlFYweXQUJyM//ylpigKV65c4uVX9MlPSFYxGB7kGxQDSSkqptQUHBydbJ4deuM2ZvM/pzCcHB0Juxlp89yc4MbNO6SazDgYH4wOGQwGYu/H65Z/PTwSR4d/fsyoKoSG3aJcGU+bZ2uaRlxCYtoIhaIoxMXrdxrzz2sRPDw44ujgwJ/XInTLF+JZ9UQ3WKtduza1a9e2VS3Chl55uRY//xKC41/NgdGg8OKLr+mWX9QlN6E343AwKqiaSuH8uXVpSgAqlyuFc27HtNepplRerGQf86J8S3uQxzkXScmpGBQFk9lMaa/iuuXXqOLL8eALOPzVnOTK5UCV8qV1yVYUhWJurlwNu43RYMBkNlPcvbAu2QA1KvuyLnB/2muT2cwr1V/QLV+IZ5Vx+PDh4zJbcevWLXr37k3evHmznNy6e/duxo0bR7169ciTJ48t63yuREVFUbiwfj8gAUp4+pLHGE3Erdvkc3bkg/ea8eLL/rrlv9noVQ4cOkiqSaVwQSfWLpiES8FCumTnzZMbb89i/Hk9nDy5nXijTg1aNn0tW8716/25d3J0pNoLZTl44jccjAYq+nixcsYQ3ebXlPEqjqqq3I2OxWiA/3V9jxd89HvcRa3qFQi5cgMNKONVjGG938fJ0fGx77OGQgXzU6yoK6E3bqFoKm2b16dJ3Rq6ZAvxLFNiYmIynao+fvx4AgMDOX78OAZD5lNRzGYztWvXpkWLFowcOdKmhT5PQkJC8PX1ze4yso09H78cuxy7EOLRspz8umvXLrp06ZJlUwIP5p507tyZnTt32qQ4IYQQQtiXLLuO0NBQ/Pz8HruDKlWqcPnyZasWJYQQQgj7lGVj8iTn3+W6fCGEEEJYQ5aNiZeXF8HBwY/dwenTp/Hy0m8ymxBCCCGeX1k2Jk2bNmXRokVERUVl+ea7d++yaNEimjVrZpPihBBCCGFfsmxM+vfvj6ZpvPHGGwQGBpKUlJS2LikpicDAQPz9/VEUhf79++tSrBBCCCGeb1neYM3V1ZWNGzfSuXNnOnfujIODA0WKPHi+xp07dzCbzfj4+LBx40YKFdLnfhRCCCGEeL498s6vFSpU4MiRIwQGBvLzzz8TFhYGgIeHB/Xr16d58+YYjfbxIDQhhBBC2N5jb0lvNBp59913effdd/WoRwghhBB2zKKnCwshhBBC6EEaEyGEEELkGNKYCCGEECLHkMZECCGEEDmGNCZCCCGEyDGkMRFCCCFEjpHl5cLNmze3eCeKorB161arFCSEEEII+5VlY6KqqsVPDdY0zWoFCSGEEMJ+ZdmYbN++Xc86hBBCCCFkjokQQgghco7H3pL+YTExMfz555/pnjT8t9dee81qRQkhhBDCPlnUmCQlJdGvXz82bdqU5XySqKgoqxYmhBBCCPtj0amc6dOnc/DgQRYuXIimaUyfPp25c+dSq1YtSpcuzbp162xdpxBCCCHsgEWNydatWxk6dCitWrUCoEaNGnTq1IkdO3ZQuXJl9uzZY9Wibt68Sa9evShbtizu7u688sorHDx40KoZQgghhMh5LGpMbty4QYUKFTAajTg6OpKQkJC2rlOnTmzatMlqBcXExNCkSRM0TeO7777j2LFjBAQE4ObmZrWM7BITG0fbfp/x4bB5DJm8BFVVdc0fEfAVJV5pT4la7Zn39WZds+Pi4vB4pQOFqrbitXafci38pq75m3cdxLNWB0q80p6Phs3UNRtgx77jjJm5guXf7+V+fKKu2V+v34aL33u4+L2Ha7X3SIiP1zX/jY7DKFS1FTVbD2PK/G91zTaZzCz9didjZq5gxYbdmM1mXfM/m78WtxfbUOv9EXQbMkPXbCGeVRY1Jq6ursT/9cPMw8ODc+fOpa27e/duppNh/6u5c+dSrFgxvvzyS2rUqIG3tzf16tWjfPnyVsvIDqqq8lbXURwPvkhEZAzf7wyix4jZuuXPXPY9i74JJCExmYSEZMbMWkngj4d1y/d+vQvxiUlomkZKqpmqzfrqlh38+2W6Dp1FXEISiUkpbNh5kL6jv9Atf/Puwyz99gcuXA7j9B+hDJ+6FJNJn1+Q167eZODE5WmvVRVKvPqBLtkA7/YYxy9nQ9A0DU2DaYu/Y9veY7rlT120jm17j3Hhchibdx9h5rKNumWv27aP6YvXk2oyYzarbNx1iE8mLdItX4hnlUWNyUsvvcSZM2cAaNGiBZ999hkzZ85k7ty5jBkzhlq1almtoO3bt1OjRg26du2Kj48PderUYfHixc/8Tdxu3Ynh1p0YHIwP/skdjEZO//anbvkLv9mOxoO79CqKgqbBxC/0++vVZE4/OqRpGnFxcbpkT1n4LZqmpbth4Naf9GvKDp/8HUfHB/PMjUYD4bejuHknWpfscXOXP34jGwo6djbDslHTv9IlW9M0zl+6Ti4nJwCcHB3549I1XbIBJmUyOrQ68Gfd8oV4Vll0Vc7AgQO5fv06AJ988gmXL19m8uTJmM1mXn75ZWbMsN4QZWhoKMuWLaNPnz4MHDiQs2fPMmzYMAB69OiR6XtCQkKslm8rCYlJqKrK3+1VamoqZtWsW+25nYx/ffRPg1fA2Slb/+2uXr2K01+/NGypQB7Hvz7659gdDAbdjj0hPo64uLi0xig5KYmI8Bsk3rd9c+Lhlj/T5Xodu8FowPyv0aGC+XLrlp+cnEhiUuo/9aDf91w+54xf204OxifK9/X1tWZJQjwTlJiYmP80FJGcnExycjIFChSwakFubm5Ur16d3bt3py2bMGEC27Zt4/jx41bN0tuwKUv5fmcQycmp5M2bm9ljetOs/su6ZN+8E00V/56kmkwAOOdyImTfcvLly6NLfqOOw/j17D8/kL1KFOHMD4t1yTaZTJSu+yH34x7M7TAaDexfN53K5Urrkh928w6fTv+KO9GxmFNTaNuiEV3b+OuSDeDi916613VrlGXrV9N1yT504jfe6jY67bWiKNz6Za0uDSnA3sOnWbRmO/HxieTPm4cB3Vry6osv6JKdkJBAydc+TJvXoigKxzbPoVxpT13yhXhW/efGxFYqV65MgwYNmDdvXtqyb7/9lkGDBhEeHp6NlVnHuYuhBB35lRZN6+HhXkTX7JiYOOat3Eye3LkZ0O1dHBye6P56T23DjgOsDdxHzSplGdqnk67ZJpOJJWt3cvtuDD07vU2xIoV0zY9PSCL0xi2io25Tp5Y+zejDOv5vHMF/hPJJj9Z0afO2rtl/Xotg7MwVGBWNJdMG69aU/O1udCzht+/iWawIhQpmPoJkK6mpqYyf8w03wiL4fGRfihQpqGu+EM+iLBuTtWvX0qRJE1xdXVm7du1jd9S+fXurFNS9e3fCwsLYuXNn2rJJkyYRGBjIsWP6TZqzpZCQELseorXn45djl2MXQjxaln8y9+nThz179uDq6kqfPn0euRNFUazWmPTp0wd/f38+//xz3nvvPc6cOcPixYsZPXr0498shBBCiGdalo1JcHAwxYoVS/tYLy+++CKrV69mwoQJTJ8+HU9PTz799FO6d++uWw1CCCGEyB5ZNiZeXl6ZfqyHJk2a0KRJE10zhRBCCJH9LLqPiRBCCCGEHrIcMfHz80t3Q6pHURSF06dPW60oIYQQQtinLBuT1157zeLGRAghhBDCGrJsTBYuXKhnHUIIIYQQMsdECCGEEDmHxY1JcHAwnTp1okyZMhQuXDhtTsmECRPYs2ePzQoUQgghhP2wqDE5cuQI/v7+hISE0Lp1a1T1nyfFGgwGli/P3ieYCiGEEOL5YFFjMn78eBo2bMjRo0eZPHlyunV+fn6cOXPGJsUJIYQQwr5Y9BS34OBgVq1ahaIoGa7UKVy4MHfu3LFJcUIIIYSwLxaNmOTKlYuEhIRM1926dYsCBQpYtSghhBBC2CeLGpNatWqxcOFCzGZz2rK/R05WrVpF3bp1bVOdEEIIIeyKRadyRo4cSdOmTalTpw4tWrRAURTWrl3LyJEjCQ4OZu/evbauUwghhBB2wKIRkypVqrB9+3bc3NyYMWMGmqaxZMkSALZt24avr69NixRCCCGEfbBoxASgWrVqbN26laSkJKKjoylYsCB58uSxZW1CCCGEsDMWNyZ/y507N8WLF7dFLUIIIYSwcxY3JqGhoWzatIkbN26QlJSUbp2iKMyfP9/qxQkhhBDCvljUmGzbto2uXbuiqipubm44OTmlWy9PIRZCCCGENVjUmEyePJk6deqwZMkSihQpYuuahBBCCGGnLLoqJzQ0lP79+0tTIoQQQgibsqgx8fX1JSoqyta16CIp/i4XTn7P9Uv7s7sU3cXFRrNs+VxWfrMIc2qq7vmnzwYz98vFnP3jnO7ZqampjJ+zij6j53ItIlL3/PiEJM5dDOXW3RjdswHe6jaS0nU6MffrTbpnX4uIpP/Y+cxduZ3UbPi6C7kSxqZdB7lyPUL3bFVV2XfkNAd++Y2kpBTd84V4FikxMTHa4zbav38/I0aMYM2aNXh7e+tQlm1E3/yN4eNHczPahINRwb+mOz0HLNa9jpCQEN3v/RIVfZsab/YiNvHBp7twfgPBP6zAOW8+XfLHT5/BF2sPYVbBoMB7jSrw5eeTH/9GK0hNTcWjVkdSUk1py3avmkzNqhV0yQ+7eYdPA5ZzJ+Y+ptQU2rVoRNc2/rpkA7j4vZfudSVfLw5tmK1L9slzITTqOAztr58yjg5Gwo+twdHRUZf8mUs3sOCbQJJTUsnt5MTQXu/zcbtmumSbTCb8O3/Kn1fDMZtVihctzI/fTMGlgD7fc0I8q7JsTJo1S//Ne+XKFaKioihbtiwuLi7pd6Io7Nixw3ZVWsn0zzpz8uI9DIYHk3WTUzXmThxGidK1da0jOxqTt9p/wLE/4jD8NUamqtCmkScLZ8zTJd+jZitSTf98qRkMCmFH12F0eOIr1p/YR0NnsOGHQ+mW5XXORdixtTbPBhg9cwXn/7yBQVGIj4/H2dmZLycPwNUlv82zx81eyezlmzMsjzmz0ebZAJ61OhCXkP4qvqb1a/Dt3JG65Ffy/5iUlH8aUmfnXJzZuUiX7DlfbWLmso04OThg+utxHv6vv8iXkwfqki/EsyrL3woGgyHd1TY+Pj66FGRLSSmmtKYEINWkEX/vdjZWpJ+o+xmHkcNvx+qWr/6r/dU0DbPZpEtjci0846mbVJMpky1tIzklFcND30sms5mEpGRcsX1jEnz+ss0zHiU1NeO/c1jEXV2yVVXFZFLTLXv4eV+2djMyGgP/fN4NBgNRMfd1yxfiWZXlb4Xt27frWYcu6r5SnbOXD+LooGBWNUoUdqCk7+vZXZYu+nd6gwHTtqP99XPaYIChH3fQLd/TLQ9XIuIxKA9Ga4oWcsIpV25dsif8X2eadR2VblmDV6vrkg1Q+8WKXLoSjqOjA2azSqmirhQrUkiX7Omf9OCl9/rpkpWZZg1qsnn34XTLJgz6UJdsg8FA6ZLuXLx8A6PRiMlspmIpL12yAbq0foMNOw9iVlU0VQXFwMft39QtX4hnlXH48OHjHrfR2rVr8fDwwNnZOcO66OhoNm/eTJUqVWxRn1V5+76Ge54wEuPu4l3MmSGDJ5LPxVP3OqKioihcuLCumVUqv0ge7Qa/XQojbx6F6YOa0/TN1rrld2n9JvsPHiApNZWSRfOwb/0X5NapMSlZwo1iRQry0+HTGBQDdV+pwoaFo3XJBqhQtiT58zmTnJJCUdd8jB/cFefcTo9/oxW4uuYnj7MT+46cSVt24/DKDPcispV3/Wtz4sxFroVHYjAoTBrUhfff1u9p5K2bvc65kKtomkbNquX4avpgjEajLtlFChXkxco+nD1/BedcTowe0InmjWrpki3Es8yiya+urq78+OOP1KhRI8O606dP07Bhw+fmqh09ZMcck5zEno9fjl2OXQjxaBZdLqxpWfcu8fHxOOgwT0AIIYQQz78sO4ozZ84QHByc9nrnzp38/vvv6bZJSkpi48aNlC1b1nYVCiGEEMJuZNmY7Nixg2nTpgEPLgeeMWNGptu5uroyb54+l5wKIYQQ4vmWZWPSu3dvOnTogKZpVKtWjVWrVuHn55dum1y5clG0aFF5iJ8QQgghrCLLxqRgwYIULFgQgODgYIoVK6bbTH4hhBBC2CeLZq16eel37b8QQggh7FeWjcnDlwgXKlTokadrFEXh7l197uYohBBCiOdXlo3J0KFDKVGiRNrHMo9ECCGEELaWZWMyfPjwtI9HjBihSzFCCCGEsG8W3WDt3+7cuWPtOoQQQgghLG9MDh48yJtvvkmxYsUoV64cxYoV46233uLQoUOPf7MQQgghhAUsakw2b95MixYtuHPnDv3792fatGn069ePyMhIWrRowZYtW2xdpxBCCCHsgEWXC0+ePBl/f3/WrFmDwfBPL/Ppp5/Svn17PvvsM9555x2bFSmEEEII+2DRiMnVq1f56KOP0jUlAAaDgY8++ohr167ZpDghhBBC2BeLGpOyZctmOeH1zp07lClTxqpFCSGEEMI+WdSYjBo1iilTpnDy5Ml0y0+cOMHUqVMZM2aMTYoTQgghhH2xaI7JvHnzSE5OpnHjxnh4eFC0aFFu375NWFgYRYsWZc6cOcyZMwd4cBfYHTt22LRoIYQQQjyfLGpMDAYDvr6++Pr6pi0rVaoUpUqVsllhQgghhLA/FjUm27dvt3UdQgghhBD/7c6vQgghhBC2kGVj8umnn3Ljxo10y7Zu3cq9e/fSLbt06RLt2rWzTXVCCCGEsCtZNiaLFi3i1q1baa/NZjNdunThypUr6baLiYlh9+7dtqtQCCGEEHYjy8ZE0zSLltnazJkzcXFxYciQIbpnCyGEEEJfFk1+zS6//PILX3/9NZUqVbLODjUNp+iNGJMuoCkOpBRqjZpbv5vDGRL+xDliApVNsRhDS5LgORkc8umWX92/PaE3kwHw8ynA/o1f65Z98uw5mnQeQ6oZjAZYM2sgTRrU1S3/jY7D+OVsCAB5nXNzJehrnJycdMlOSkrhg8HTuXQlDFCZM7YvdV+poks2wItvfszlG3fTXu9ZPZGXqljpe8oC5Rp0I/JuDBpQ95XKbF0yQbfs6xGRdB40jeh78RQuVIA1c4bjXqSQbvn/G7eATbsOYTar1K7xAt8vlHs+CfE4OXby67179/j444+ZP38+Li4uVtmn470fcIg7iGKOwZAaSa7IpWCOt8q+H0tVyRM2HIPpLkaSMSaHkOfGSH2ygdYf9ePKzSS0v/4LvnSP4RMm6pb/xgcPmhIAswrtB87WLXvBqsC0pgQgPjGJam/20S2/56dzOHHmAnEJiUTfi6PXqLnExMbpkr076Fi6pgSgccfRumQD1G41gNt/NSUAB46dY/Hqbbrlv993EtfCIolPSCL0+k3a9J2kW/barftYs3UfySmppJpM/Hz0LMOmLtMtX4hn1SMbE0VRLFpmCwMHDuSdd96hbl3r/VVtSL4MiuODF4qCYr6PIfXWo99kLaZIUBPh738/xQHFpFM2cPhMeIZlm346q1u+WU3/WtUgIV6fX87L1u3MsCwiMlqXbICQq2E4GI0AKAYDiUnJnP/zui7ZAQvX6ZKTlUuhERmWfb1hjy7ZqqoSFXM/7RlfBoOBu1GxumQDrNu+Hx4+/a3Aj0G/6pYvxLPqkadyBgwYQL586U819O/fn7x586a9jouz/i+XFStWcPnyZRYvXmzR9iEhIY/fCChqNlNQu4em/HXYmkrotWhMimXvfyqqiSoqGHgwbGA2p5JsNlpc+9Mq5uLI5Vsp6Zb5ehTQLV8B/j1DKSw84y8tW6hSzpM/r91Mtyy3k4Nux57byYHU1FSUv35BKgqoKQm65Neu6sOJc6EZlut17Pny5CLqnindshfKltAt32hQSE5OQTEY0FQV51yOumX7eLgRxD9z8zRVxaOoyxPlP3xTSyHshRITE5PpjNa33nrriUZHtm2zzvBsSEgITZs25Ycffkj7pnzrrbeoWLEi06dPf7qdq8nkvr0QQ2o4GgZSCzbDVKCeFaq2jEN0ILnvLEM1JWFwLEiCxzRUZ29dslOTkylZuz1JqQ8+3QWcDVw7tkGXbIDPv1jGpC//uVHfh+/UZM7E4brle77akbj4RODBqN8fu5dQzN1Vl+yI21G88/FYou7FgabS54MWDOreSpdsgEJ+76VrCv/34ZtMGNxdl+x79+Io26ArJtODhrywSwH+PPC1LtkAu4N+ZdDEL0lKTsU5tyOLPhvAay/pN7+m7vuD+ePP62iqSgn3wpzavgDjX6NnQojMZdmYZJfVq1fTt2/fdN+8ZrMZRVEwGAyEh4eTK1eupwtRk0FxACUbfkCoKldCTlHatzoY9J/ic/nKJRycnPDy8NI9OzUlhbMXLpLboFDRWhOan8DNW1FExtyjSvnSumcD3ImOJfJmGC+88ILu2eFhN/h+12H+1+193bMBLl65QfTdW7zyUg3ds1VV5W50LIULFUg7raOne7FxnL8YwisvVdc9W4hnUY5rTGJiYggPTz8fom/fvpQtW5ZBgwbxwgsv6DbPxVZCQkLseojWno9fjl2OXQjxaDnucmEXF5cMV+HkyZOHQoUKUbFixWyqSgghhBB6yLGXCwshhBDC/uS4EZPMyNONhRBCCPsgIyZCCCGEyDGkMRFCCCFEjmFxY6JpGjt27GDUqFH06dOHa9euAXDw4EEiIvS5UZYQQgghnm8WzTGJiYmhTZs2nDhxgvz58xMXF0ePHj3w8vJi5cqVuLi4EBAQYOtahRBCCPGcs2jEZPTo0YSFhbFr1y4uX76cdotlgHr16nHgwAGbFSiEEEII+2FRY/L3KZyaNWtmuLmZp6cnYWFhNilOCCGEEPbFosYkPj6eEiVKZLouOTk53QiKEEIIIcR/ZVFj4uPjw969ezNdd+jQIbkjqxBCCCGswqLJr927d2fIkCEUKFCA1q1bA3Dv3j2++eYblixZwuzZs21apBBCCCHsg0WNSZcuXQgNDWXKlClMnjwZgJYtW2IwGBgwYADvv589TywVQgghxPPF4lvSjxs3jm7duvHzzz8TGRmJq6srDRo0wNvb24blCSGEEMKePNGzcry8vOjcubOtahFCCCGEncuyMbl+/foT7ahkyZJPXYwQQggh7FuWjYmfn1+Ge5Y8SlRUlFUKEkIIIYT9yrIxmT9//hM1JkIIIYQQTyvLxqRjx4561iGEEEIIYfnThYUQQgghbM2iq3L69u2b5TqDwUCBAgWoVq0azZs3J3fu3FYrTgghhBD2xaLGJCgoiNjYWO7du4eDgwOFCxfm7t27mEwmChYsCMCCBQsoXbo0gYGBeHh42LRoIYQQQjyfLDqVs3TpUgoUKMDKlSu5desW58+f59atW3z99dfkz5+fb7/9lr1795KcnMz48eNtXfNTcQoZQL4/6pDvj7qQEKpveHw8ef+oT3VTV5z/aKVvNjAuYCoufu/g4vcOi75aqnv+210GUfzl1nQePFX37Kh792nTdxL+H4zg8InfdM//dsP3NGr7MWNnfkFKcpKu2ffv38fF7z1c/N6jYqOPdM0GuHD5On1GzeXzZVuIiY3TPf+r9bvoPmwma7Zk/rwvW7oTHcvgSYuZ8MV3XL1xS/d8IZ5FSkxMzGMfDdy4cWM6dOhAt27dMqxbtmwZq1evZu/evSxdupSAgAAuXrxok2KfVu4LHXFSr6a91oD7pTZDniK65Of/ow4PX+dkxkD8Cwd0yR4ydixLNgVDWgUaU//vbXp17a5LfpnX2hN1PzntdW4nAzdPfK9L9r3YOKo07UV8YhIKD04/fjNzKP71XtIlf/KsOcxatR9NffC6aCEnzv74DUaHJ7q/4X9y//59Sr72YbpljkYDkaf0+bc/d+EKrXpPIsVkwpSaStEihdi/7nPy5XHWJb/np7PZHXQSg6Kgahot/Wszc3QvXbKjYu7TsMNQ7sXGY9ZU8jrnYuuSCfiWlhFlIR7FohGTc+fOUbp06UzXlS5dmj/++AOA8uXLExMTY73qrMzxoaYEHvyKdg4fpk941B7+ffG1AVWfbGDJptOQrgKF4bN26Jb/cFMCkJSikpKcnMXW1vX50g3EJyRhNBgwGAyomsaQqfqNGC3bcAhNA4Phwf+RMSkcOHxIl+xeI+dnWJZq1u/rbvTMlZhMJhwMBhwcHLgTFcuK73/UJVtVVQ4cP4eD0YjBYMDBaGT3wZO6ZAPMX7GF6Ng4HByMGA0GUlJMjJ21Urd8IZ5VFjUmRYsWZcuWLZmu27x5M25ubsBfQ8YuLtarThf6/ZAW2UNTMw4KatpjBwqtRgEMD/WEmgYq+uSbzGZdcrKiaRr8635Iqqrj95yOn2dL5KxqhMiZLGpMevXqxYoVK2jbti1r1qzhxx9/ZM2aNbRt25ZVq1bRp08fAI4cOYKfn59NkY1I6QAAGWFJREFUC34aJiX9EKoGJJaYrk+4a+MMP5TUDGMottOluR/pfyxqTP2/N3XLd8nvmO51bicDTrly6ZI96ONW5HHOhaqqqKqKQVGYNKSrLtkAnVu+iqrx4H8Virg4Ub92HV2yl04dkGGZ0ajf193Y/3XCaFBQVRWzSaVwofx82Npfl2yDwUDtlyphMptRVRWT2UzDV6vpkg3Qp3MLCubPm5bv6OjAuIGddMsX4lll0RwTgJUrVxIQEEBYWFjaMg8PD4YOHZr2YL+rV6/i7OxM0aJFbVOtFeQK6Y2j6SwAcaW+gTze+oXHx5P3WlMUNMwUJPGF7fplAwNHjubrwDMATOjXlP/16K1r/htt+3Hm0k083fPx646vdc2+GRlFjxFziI1PYEz/DjSsXV3X/K/WrGH5+j24F3JmzcIZOOXS77L68PBwKjbtB0DhQvn5c/8K3bIBfr94lRnLNmBOTWb2uP64FMina/7Cb7Zx+NffaVi7Kl3bNNE1O/JuDOPnrObO3SgmftJN5pcIYQGLGxN4MCwbFhbGrVu3cHd3x8PDQ25b/x+EhITg6+ub3WVkG3s+fjl2OXYhxKM90WUBiqLg6emJp6enreoRQgghhB2zuDGJjY3lxx9/5MaNGyQlpb8Pg6IoDB061OrFCSGEEMK+WNSYHD16lHbt2nHv3r1M10tjIoQQQghrsKgxGTFiBF5eXsydO5eKFSvi5ORk67qEEEIIYYcsakwuXrzIV199RbVq+l1qJ4QQQgj7Y9F9TDw9PUnW6S6dQgghhLBfFjUmw4YNY/bs2cTGxtq6HiGEEELYMYtO5fzwww/cvn2bqlWrUrNmzQy3nVcUhUWLFtmkQCGEEELYD4uvylEUhfz586c9sO9hcpM1IYQQQliDRY3JmTNnbF2HEEIIIYRlc0yEEEIIIfSQ5YjJ9evXKVasGI6Ojly/fv2xOypZsqRVCxNCCCGE/cmyMalatSr/3969x0Vd53scf43DRYQUVMAbqKsIouh6KXW1TEvTw2PDzA6aD8228N7JLe8ezSVvoKFuZh0lLwme7KSe1WolL5x9iJW6Puqom+tCXkllFRgDQYSZOX+4zkaIosLvNyfez8fDx4P5zvc3n/d3AOfD7zKze/duunXrRqdOne56HkleXl61hxMREZHapdLGZNWqVbRu3dr1tU5wFRERkZpWaWPy/PPPu74eOXKkIWFERESkdruvk1+vXr3K119/zffff1/deURERKQWq7Qx2bt3L/Pnz68w/tZbbxEWFsYTTzxBVFQUL7/8MmVlZTWZUURERGqJSg/lrFu3rsJ5Jenp6SxYsIDIyEhGjx7t+nC/zp0788orr9R4WBEREfl5q7QxOXr0KNOmTSs3lpqaSt26ddm2bRvBwcGu8Y8//liNiYiIiDywSg/lXLlyxXVVzi3p6en07NmzXFMycOBAvvvuu5pLKCIiIrVGpY2Jn58fRUVFrtvfffcdeXl5dO/evdy8hx56CLvdXnMJRUREpNaotDEJCwvjs88+c93+7LPPsFgs9O/fv9y8s2fPEhgYWG2BkpKS6NevHyEhIbRp04bY2Fi+/fbbant8ERERcV+VnmMyceJERo0aRX5+PkFBQWzevJnIyEh69uxZbt7u3bvp2LFjtQXKyMjgpZdeomvXrjidThYtWsSQIUM4ePAgAQEB1VLjxrE+eFr/BUvk7Gp5vHthP/4m9sI0CMswvDaA7fBgAPwf/qMp9bPPZVJWUmJK7aICG1ev/UDTJqGm1L9RWorT6TSltr20lKuF+TQMCDKlvohIVVlsNlul/1O+9957rFq1CpvNRteuXVm+fDlt2rRx3Z+Tk0OvXr2YN28eY8aMqZGAhYWFhIaGkpqayuDBgx/osUqO9mHxZl8yL3ngaXXywuPF9BuVXk1J727Z757krZ1+2B1Q1xP+e04+XZ/+kyG1y46tImLc5+QWWgFo3rCM4/+z05DaAP/5n+8yOSENh8OCxeJk5gudmf7a7wyr3/7xoVzMu/mj7mmFrL3JNGjYyJDa14qu88byD8i+eIUbN67z6kvD6NujkyG1AabPm87GT/+G02mhnreFPZviadu2+v6YqKrMzEzCwsIMr+sOavPaRe7VHd9gbfz48Rw/fpzs7Gx27NhRrikBCA4O5tSpUzXWlMDNxsThcODv7//Aj7UpzYcT33tgAcrsFtbsqUfewUcfPGQVFP/vv7Bshx92hwWwUFxiYUTig6+pqmLiP+NKoRVulic7z4NJk58yrP6/JabdXLsFHE4LCR/8r2G130z4naspASi1Q/eYOMPqr/pgB6fP5+AEbpTa+Y/Nn1FYVGxI7fPnv2PDJ5k4nTcv/S8sdvLM2DcMqS0icj8qPZTjLmbOnElUVBSPPPJIpXMyMzOr9FgXbXXwtP7zdlGJBZutDrlV3P5B3Mi5ht3hxa23hrHUgaJSS5WzP6iTFyp+qw9nehlW3+7gn2u3gMNh4dg3X1PX16/Ga+/54kSFMVuhw7C1Z50+S0nJdW4dwbqSm8eRr4/SLKhhjdc+fPh/cDigzj/+BKlTBwqKnYat/afMqusO7mft2ssitZFbNyazZ8/mq6++YteuXVit1krnVfWXt32LMo6d8cDLE5xOaFDPSaPGDhoY8MtvL3kST48jlJbebEocDmjo6zDsP57+HW/w0Zc+5caG9rhuWH1vTyi+cbMpcTrB0+ok6pddDKn98r/255WE8ufUhAZ5Gbb2rlHt+Xz/Ebw8PSksLKRpUCA9unehrrdXjddu1LgBnkl/pKzM6fq5a9rQ05QXvNp8OKM2r13kXt3XZ+UYYdasWWzdupUdO3bQqlWrannMZ/s+wcAuNwjwdRDs72Duc4U06La/Wh77bqwd55Lyqg0/HweeVidNA+ykLcgzpDbAmv/YRVRIKVaLE6vFyaMRJcyM321Y/d0bZlHPy0kdnNT1cPLRWy8YVnvUyLH07eSPBSfgpOFDFr76wweG1Y8bPpg+D3fEv74vQY3q8+//9rwhTQlAw4Aglk+Ppp6PBU+rhZBAD3ZtfseQ2iIi9+OOJ7+aZcaMGWzfvp2dO3cSHh5udpxqV9v/eqrN69fatXYRuTO3O5QzdepUtmzZQkpKCv7+/uTk5ADg6+uLn1/Nn48gIiIi5nG7QznJyckUFBQQExNDeHi469/bb79tdjQRERGpYW63x8Rms5kdQUREREzidntMREREpPZSYyIiIiJuQ42JiIiIuA01JiIiIuI21JiIiIiI21BjIiIiIm5DjYmIiIi4DTUmIiIi4jbUmIiIiIjbUGMiIiIibkONiYiIiLgNNSYiIiLiNtSYiIiIiNtQYyIiIiJuQ42JiIiIuA01JiIiIuI21JiIiIiI21BjIiIiIm5DjYmIiIi4DTUmIiIi4jY8zA5gNN8TfVzdWEH956D5q4bVLvn+Q1I/fJ8cWx26tC7jqZiPsDRqZFj9uiefx9Nx7mYWj19yI2yVYbXFRGV5+FxYTB37D5T6dudGUJzZiUREKlWr9pj4nuiDFbD8499DP/wX2NINqe3MzWXByg2kfePFX8578P7eumzZHGtIbQDvzPF4Oc651l637BuspxcaVl9M4ijD78xkPIq/pU7pBbzzt+N9caXZqUREKlWrGpOfLtYC+OQkGVK78PLv+S7Hiqf15m1vTziUZdwOK6+y4xXGfK7/0bD6Yo46Jaew2G1g+cdPv8WKR9ERc0OJiNxBrWpMbsdhDTCkjndAV6x1nK7bTid4WA0pfbPebccMDCCmcFgb4Pzxr7nTCRZ930XEfdWqxqSozsPlXqCdQEnbDwyp7RUcw3O9Sii1Q0GxBasVxg4sNqQ2QGGzpRXWfq3lRsPqi0m8ginzfRicdnDcAIuV4uBXzE4lIlKpWnXyqz18OQV/T6VebjIOayDX231kaP2nx+6lV8ehXM7Lo1nLX+IftcK44g16UeCZQr2zr+HESnHLd6FeY+Pqi2mut3iDG0XHqHPjPGX1uoNXkNmRREQqVasaEwCCRlIUNNK08oG/2oYtMxP/sDDji9drRVH7bcbXFdM56kXhqBdldgwRkbuqVYdyRERExL2pMRERERG3ocZERERE3IYaExEREXEbakxERETEbagxEREREbehxkRERETchhoTERERcRsWm812u49RERERETGc9piIiIiI21BjIiIiIm5DjYmIiIi4DTUmIiIi4jbUmIiIiIjbUGNikKSkJPr160dISAht2rQhNjaWb7/91uxYpkhKSsLf359p06aZHcUQly5dYvz48bRp04bg4GB69OhBRkaG2bFqnN1uZ8GCBXTq1Ing4GA6derEggULKCsrMztajThw4ADDhw+n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HyArK4uDBw/eV83u3btTp04dtm/fXm5827ZtVdp+ypQp5OXlMW/evNvef+bMGY4fP35f2W6nd+/e7N69m4KCAtdYQUEBu3btuutJw1VV1ef4ViNWXFxcLXVFRGqC9phIlR07dozc3FycTieXLl1i7dq15OfnM27cuEq3efzxx/Hw8GD8+PFMnjyZS5cusXjxYlq0aIHD4bjnDGFhYQwbNoxFixbhcDjo2rUr+/bt4/PPP6/S9r1792bhwoXMmTOHkydP8vzzz9OiRQtsNht/+tOf2LRpE2vXrq1wyfD9mjZtGmlpacTExPDqq69isVhYuXIlxcXFTJ8+vVpqVPU5btu2LR4eHqSkpBAQEIC3tzdt27Z1XfYtIuIO1JhIlb3wwguurxs3bkz79u3ZunUrTzzxRKXbtG/fnrVr17Jo0SJGjBhB69atmT9/Pnv27CEjI+O+cqxYsQI/Pz/efvttSktLefTRR0lOTmbQoEFV2n7ixIl069aN1atXM3fuXHJzc/Hz86NLly4sX76cwYMH31eu2+nYsSOffPIJb775JhMnTsTpdNK9e3c+/fRToqKiqqVGVZ/jhg0bsnTpUlasWEF0dDR2u52dO3fy6KOPVksOEZHqYLHZbE6zQ4iIiIiAzjERERERN6LGRERERNyGGhMRERFxG2pMRERExG2oMRERERG3ocZERERE3IYaExEREXEbakxERETEbagxEREREbfxfyvtoO4FycOcAAAAAElFTkSuQmCC\n", "text/plain": [ "