You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

knn_classification.ipynb 126 kB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416
  1. {
  2. "cells": [
  3. {
  4. "cell_type": "markdown",
  5. "metadata": {},
  6. "source": [
  7. "# kNN Classification\n",
  8. "\n",
  9. "\n",
  10. "K最近邻(k-Nearest Neighbor,kNN)分类算法,是一个理论上比较成熟的方法,也是最简单的机器学习算法之一。该方法的思路是:***如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别***。KNN方法虽然从原理上也依赖于极限定理,但在类别决策时,只与极少量的相邻样本有关。由于KNN方法主要靠周围有限的邻近的样本,而不是靠判别类域的方法来确定所属类别的,因此对于类域的交叉或重叠较多的待分样本集来说,KNN方法较其他方法更为适合。\n",
  11. "\n",
  12. "kNN算法不仅可以用于分类,还可以用于回归。通过找出一个样本的k个最近邻居,将这些邻居的属性的平均值赋给该样本,就可以得到该样本的属性。更有用的方法是将不同距离的邻居对该样本产生的影响给予不同的权值(weight),如权值与距离成正比(组合函数)。\n",
  13. "\n",
  14. "该算法在分类时有个主要的不足是,当样本不平衡时,如一个类的样本容量很大,而其他类样本容量很小时,有可能导致当输入一个新样本时,该样本的K个邻居中大容量类的样本占多数。 该算法只计算“最近的”邻居样本,某一类的样本数量很大,那么或者这类样本并不接近目标样本,或者这类样本很靠近目标样本。无论怎样,数量并不能影响运行结果。可以采用权值的方法(和该样本距离小的邻居权值大)来改进。该方法的另一个不足之处是计算量较大,因为对每一个待分类的文本都要计算它到全体已知样本的距离,才能求得它的K个最近邻点。目前常用的解决方法是事先对已知样本点进行剪辑,事先去除对分类作用不大的样本。该算法比较适用于样本容量比较大的类域的自动分类,而那些样本容量较小的类域采用这种算法比较容易产生误分。\n",
  15. "\n",
  16. "k-NN可以说是一种最直接的用来分类未知数据的方法。基本通过下面这张图跟文字说明就可以明白K-NN是干什么的\n",
  17. "![knn](images/knn.png)\n",
  18. "\n",
  19. "简单来说,k-NN可以看成:**有那么一堆你已经知道分类的数据,然后当一个新数据进入的时候,就开始跟训练数据里的每个点求距离,然后挑离这个训练数据最近的K个点看看这几个点属于什么类型,然后用少数服从多数的原则,给新数据归类**。\n"
  20. ]
  21. },
  22. {
  23. "cell_type": "markdown",
  24. "metadata": {},
  25. "source": [
  26. "## 算法步骤:\n",
  27. "\n",
  28. "* step.1---初始化距离为最大值\n",
  29. "* step.2---计算未知样本和每个训练样本的距离dist\n",
  30. "* step.3---得到目前K个最临近样本中的最大距离maxdist\n",
  31. "* step.4---如果dist小于maxdist,则将该训练样本作为K-最近邻样本\n",
  32. "* step.5---重复步骤2、3、4,直到未知样本和所有训练样本的距离都算完\n",
  33. "* step.6---统计K-最近邻样本中每个类标号出现的次数\n",
  34. "* step.7---选择出现频率最大的类标号作为未知样本的类标号"
  35. ]
  36. },
  37. {
  38. "cell_type": "markdown",
  39. "metadata": {},
  40. "source": [
  41. "## Generate sample data"
  42. ]
  43. },
  44. {
  45. "cell_type": "code",
  46. "execution_count": 1,
  47. "metadata": {},
  48. "outputs": [
  49. {
  50. "data": {
  51. "image/png": "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\n",
  52. "text/plain": [
  53. "<Figure size 432x288 with 1 Axes>"
  54. ]
  55. },
  56. "metadata": {
  57. "needs_background": "light"
  58. },
  59. "output_type": "display_data"
  60. }
  61. ],
  62. "source": [
  63. "%matplotlib inline\n",
  64. "import numpy as np\n",
  65. "import matplotlib.pyplot as plt\n",
  66. "\n",
  67. "# generate sample data\n",
  68. "n = 100\n",
  69. "x_1_1 = 10 + (np.random.rand(n, 1)*2 -1)*4\n",
  70. "x_1_2 = 15 + (np.random.rand(n, 1)*2 -1)*4\n",
  71. "x1 = np.concatenate((x_1_1, x_1_2), axis=1)\n",
  72. "y1 = np.zeros([n, 1])\n",
  73. "\n",
  74. "x_2_1 = 20 + (np.random.rand(n, 1)*2 -1)*4\n",
  75. "x_2_2 = 5 + (np.random.rand(n, 1)*2 -1)*4\n",
  76. "x2 = np.concatenate((x_2_1, x_2_2), axis=1)\n",
  77. "y2 = np.ones([n, 1])\n",
  78. "\n",
  79. "x = np.concatenate((x1, x2), axis=0)\n",
  80. "y = np.concatenate((y1, y2), axis=0)\n",
  81. "y = y.flatten()\n",
  82. "\n",
  83. "# draw sample data\n",
  84. "plt.scatter(x[:,0], x[:,1], c=y)\n",
  85. "plt.show()\n",
  86. "\n"
  87. ]
  88. },
  89. {
  90. "cell_type": "code",
  91. "execution_count": 5,
  92. "metadata": {},
  93. "outputs": [
  94. {
  95. "name": "stdout",
  96. "output_type": "stream",
  97. "text": [
  98. "[0.0, 0.0, 0.0, 0.0, 0.0]\n",
  99. "[1.0, 1.0, 1.0, 1.0, 1.0]\n"
  100. ]
  101. }
  102. ],
  103. "source": [
  104. "# generate test data\n",
  105. "x_test = np.array([[12.5, 10.0], [15.4, 8.0]])\n",
  106. "\n",
  107. "k = 5\n",
  108. "# do knn\n",
  109. "for s in x_test:\n",
  110. " d = np.sum((s - x)**2, axis=1)\n",
  111. " idx = np.argsort(d)\n",
  112. " ys_5 = list(y[idx[:5]]) \n",
  113. " print(ys_5)\n",
  114. "\n",
  115. " # TODO: you need to implement the vote algorithm"
  116. ]
  117. },
  118. {
  119. "cell_type": "markdown",
  120. "metadata": {},
  121. "source": [
  122. "## Program"
  123. ]
  124. },
  125. {
  126. "cell_type": "code",
  127. "execution_count": 6,
  128. "metadata": {},
  129. "outputs": [],
  130. "source": [
  131. "import numpy as np\n",
  132. "import operator\n",
  133. "\n",
  134. "class KNN(object):\n",
  135. "\n",
  136. " def __init__(self, k=3):\n",
  137. " self.k = k\n",
  138. "\n",
  139. " def fit(self, x, y):\n",
  140. " self.x = x\n",
  141. " self.y = y\n",
  142. "\n",
  143. " def _square_distance(self, v1, v2):\n",
  144. " return np.sum(np.square(v1-v2))\n",
  145. "\n",
  146. " def _vote(self, ys):\n",
  147. " ys_unique = np.unique(ys)\n",
  148. " vote_dict = {}\n",
  149. " for y in ys:\n",
  150. " if y not in vote_dict.keys():\n",
  151. " vote_dict[y] = 1\n",
  152. " else:\n",
  153. " vote_dict[y] += 1\n",
  154. " sorted_vote_dict = sorted(vote_dict.items(), key=operator.itemgetter(1), reverse=True)\n",
  155. " return sorted_vote_dict[0][0]\n",
  156. "\n",
  157. " def predict(self, x):\n",
  158. " y_pred = []\n",
  159. " for i in range(len(x)):\n",
  160. " dist_arr = [self._square_distance(x[i], self.x[j]) for j in range(len(self.x))]\n",
  161. " sorted_index = np.argsort(dist_arr)\n",
  162. " top_k_index = sorted_index[:self.k]\n",
  163. " y_pred.append(self._vote(ys=self.y[top_k_index]))\n",
  164. " return np.array(y_pred)\n",
  165. "\n",
  166. " def score(self, y_true=None, y_pred=None):\n",
  167. " if y_true is None and y_pred is None:\n",
  168. " y_pred = self.predict(self.x)\n",
  169. " y_true = self.y\n",
  170. " score = 0.0\n",
  171. " for i in range(len(y_true)):\n",
  172. " if y_true[i] == y_pred[i]:\n",
  173. " score += 1\n",
  174. " score /= len(y_true)\n",
  175. " return score"
  176. ]
  177. },
  178. {
  179. "cell_type": "code",
  180. "execution_count": 7,
  181. "metadata": {},
  182. "outputs": [
  183. {
  184. "data": {
  185. "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXUAAAEICAYAAACgQWTXAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4wLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvqOYd8AAAIABJREFUeJzsnXeYZFXRh9+6nXty2F0QWBEkiCggCHxkBCSJiOQkCIISlIwIkhVQEBBBooDkJDknBURAd0WUIMISlrxh8kznW98fdSft5JnumdmZ8z7PPLs9fe451bOzdc+tU/UrUVUcDofDMTXwJtoAh8PhcBQP59QdDodjCuGcusPhcEwhnFN3OByOKYRz6g6HwzGFcE7d4XA4phDOqTumLCJyhYicWqS5zhCRm4oxl8NRSpxTd0xKROQ9Edl6LHOo6o9U9exi2TRcROR6EfnFeK/rcIBz6o6lFBEJT7QNDsdkxDl1x6RDRG4EZgMPiEibiJwoIiuKiIrIwSIyH3g6GHuniHwqIs0i8qyIfLnHPF07ZhHZQkQ+FJHjRGSBiHwiIt8fxIYviMgzItIqIk8A9Uu83++6InIosC9wYmD7A8H3TxKRecF8r4vILsX9qTkchnPqjkmHqu4PzAd2UtVyVf11j7c3B74EbBu8fgRYBZgJ/BO4eZCplwGqgOWAg4HLRKRmgLG3AHMxZ342cMAS7/e7rqpeFfz914HtOwXj5wGbBuufCdwkIssOYqvDMSqcU3csbZyhqu2qmgJQ1WtVtVVVM8AZwFoiUjXAtTngLFXNqerDQBuw2pKDRGQ28HXgVFXNqOqzwAM9x4xwXVT1TlX9WFV9Vb0deAtYf4Sf3eEYEufUHUsbH3T+RURCInJeENZoAd4L3qrv90pYrKr5Hq87gPJ+xn0OaFTV9h7fe38M6yIi3xORf4lIk4g0AWsONt7hGC3OqTsmKwPJh/b8/j7AzsDWWFhjxeD7Msa1PwFqRKSsx/dmj2DdXraLyOeBq4EjgTpVrQZeLYKdDkcfnFN3TFY+A1YaYkwFkAEWA0ngnGIsrKrvA3OAM0UkKiKbADv1GDLUukvaXoY5+oUAwQHtmsWw1eFYEufUHZOVc4GfB+GK4wcYcwMWFvkIeB14sYjr7wNsADQApwdrDXfdPwBrBLbfq6qvA78BXsAc/leA54toq8PRhbgmGQ6HwzF1cDt1h8PhmEI4p+5wOBxTCOfUHQ6HYwrhnLrD4XBMIcZVFKm+vl5XXHHF8VzS4XA4lnrmzp27SFVnDGfsuDr1FVdckTlz5oznkg6Hw7HUIyLvDz3KcOEXh8PhmEI4p+5wOBxTCOfUHQ6HYwrhnLrD4XBMIZxTdzgcjimEc+oOh8MxhXBO3TElUS3gt12N33QMmnlpos1xOMYN15HdMSXR9iuh7QogjaafgvoHkfDsIa9zOJZ23E7dMTXJvQKk7e8Shvy8CTXH4RgvnFN3TEkksRcQBykDSUB03Yk2yeEYF1z4xTElkfiWUHcXFN6F6AaIVzms61TzaMsvIPs8xL6JVByPiGsl6lh6cE7dMWWRyKoQWXVkF6XugtTdQBo6boLoVyC+XUnsW9rQ7MtQmA+xzRGveqLNcQyAc+oORw+0sBDIBa98KCyaSHMmDX7Hn6DlTMADrwLqH0W8sok2y9EPLqbucPRAkruDVwMkwKuDxI4TbdLkIHUXdvDcAdoO+dcn2iLHALidusPRAwktAzP+DIWPIbQcItGJNmlyEP065F7DHLsPoRUn2CDHQDin7nAsgUgMwl+YaDMmFVJ+FOrVQn4ektwbCQ2rX4NjAnBO3eFwDIlICCk7cKLNcAwDF1N3OByOKYRz6g6HwzGFcE7d4XA4phDOqTscjmmBFhaiqYfQcdQBUr8Dv+Fg/M/WxW8+GVW/5Gu6g1KHwzHl0cJn6KIdgQKoD7XXINGvl37djush+xKQhfTDENsc4tuWdE23U3c4HFOf7N+AvBVOkUJT943PutoBFDpfgKZKvqRz6g6HY+oTXs126AAkILLWuCwryQMgtCwQMhvi25d8TRd+cTgcUx6JrAE1l9oOPbIekthtfNYNzYD6p+wJQcrGRfFzSKcuItcC3wIWqOqawffOB3YCssA84Puq2lRKQx0Oh2MsSGwzJLbZ+K8rAlI+busNJ/xyPbCk9ugTwJqq+lXgf8DPimyXw+EYAs1/gN9wEP7ifdCcE9hyGEM6dVV9FmhY4nuPq2o+ePkisHwJbHM4HIOgjT+0A8DcHLThgHFJl3NMfopxUHoQ8MhAb4rIoSIyR0TmLFy4sAjLORz9o34HqjrRZowf/mdA4Mi1lW4deMd0ZkxOXUROAfLAzQONUdWrVHU9VV1vxgyn7DbVUc3ht16E33AQmn5qnNbM4zccjC5YF124GZr/cFzWnXDKDgNiQBwSe5q6pGPaM+rsFxE5EDtA3Uqn1fbIMRjafhW0Xwek0ewcqPsTElmltItmnoPcXKAA/kK0/TKk6tzSrjkJ8Mp/gMa3Ac1C+IsTbY5jkjAqpy4i2wEnApurakdxTXIs1eTexBopABKCwvswCqeufjvadhloA1J2KBJeaeDBEgc69xUeSHL462ReQrMvIbENkej6I7ZzopHw5yfaBMckY8jwi4jcCrwArCYiH4rIwcClQAXwhIj8S0SuKLGdjqUESe4LJEDKQCohusGo5tHmE6DjBkjdgy7eC9XswIOjG0JiD5AKiKyNlP94eGtk56CNh0D7pWjDD9Ds3FHZujSi6qOZv6HZv0+vc4hpwJA7dVXdu59v/6EEtjimABLbAOofCnboayHeKPNzc69iZRBYabXfAKFl+l9TBKk8BSpPGdka2X90r0EOsnMguu7o7F3K0ObjIfO0vYh/G6k6a2INchQNJxPgKDoSXh6JbTx6hw6Q3BPb8Schshp4M4tmXxfRjYAoELGv2P8Vf40eqGZQv6WkawzPDh/SD5kuiXZA6p6JNslRRJxMgGNS4pUfgUbXB78ZYpshUvz9h0TXgrpbIPt3iG6ARL5c9DU60cxLaNOhoDk0sTte1ZklW2soRDw0tDwUPgIEwitOmC2O4uOcumNcUL/F4te51yG+DVJ1PiKhQa8ZD2lUiawJkTVLvo62/qJboS91N1p2CBKeuJo9qb0Jbb0YJIyUHz1hdjiKj3Pq0xBVvyQ730HXbL8miJPnLJabebLkutKTCqnAop0+oCCJEV2umefQtqshvBJS+VNkhNf3MSe0LFL9qzHN4ZicuJj6NELz7+Mv2Az9bA385p+Pc9ZDnq60QwW0MNjgpRLNvY6mH+03bi5V55n0qjcDKs9CQnVDz6eK5ufjZ19HG4+A3IuQ+hPact7obVRF/Ua0BD9/zb2Btt+I5t4o+tyO4eN26tMIbf0V+AsAH1IPQHIPiHzV3tMcZJ4CPIhtNWRoZKRI8mA0/WcovGMZJvFtijr/ROOnHobmn4EISBXUP4x4ZV3vS3g2Uj+yxgza8jNIPYTt7jv3XxnIvzUqG1UzaMP+kHsNvFqouwMJLTuqufrMnfsPunhf7I4tUHeLhbZKiG1K8ohESrrO0oZz6tOKJR1192ttOsIODAFiWyDVFxd1ZQnVITMeQbVQ9BvGpKDjViAVPIx4FmqKjS5HH0ALi+3G26XnErbcfy0gZYeMbtL0E5D/n83pL0Tb/4BU/nzUNvYi83xgawEI2esSOnXNv40u3g+0CU18F6n85bC1yjXzPJqdi8Q2RaLrlMzGicKFX6YRUnkShD4PxCC5d1e2h6oPmWe6U9zST5bOhqno0AEiawPx4EUBxlrpKQm6b7oehNdAaq5C6h9C4lsOawrN/RdN3Y0WPg7mLOvxbtiKw4pF9GtYaij2Z/RrxZu7H7TlXNBGIEjPzA9Pelgzz6GNhwUFZweguddKaudE4Hbq0wgJLYfMeKzv98VDQytD4T0sxW21Ec2rfrPN41UVwcr+8VMPQMuZIHGk+lIkujbqN9kNKLQsEtu4aGtp5gW07WLwZiFVZyBe7ZDXSMVRqFcG+beR5L7IAIVSw0W8JNRcjraeB141UnUeElpu2Ndr5iXLNhIP8KD+AYhtAYndIPUgRL6KlP1gTDb2sje6vtmbfQGJblT6zCWJAoL1/cyjbVdBco8hfw80+xJdMhYoZOdCCVNZJwIZz8Oy9dZbT+fMmTNu6zmGj/oNll0hIaTskGE7aL/9RmgNDu4qjscr+37xbdMM+tm6dFV/hpZH6h9GF24LftBwq+LooqytfjO6YFPsP34Yopvg1V415nl7raEZi5VLGOLbjzomrPl5aNPRlstf8XO8xDe73vObT4fUrcGrBFJ5GpLctQjWTw608BHacCgU5mMhnzwQR+puQoJzon6v67zZUQDCSN2dSGTV8TF6DIjIXFVdbzhjXfjFAYB4tXiVP8WrOH5kO+7WX2Ox1By0XlCijBqfLt1wAM1B/m3QFiBlX6l7i7RUz66MeSh8UJx5e6ANB6MtZ6LNp6JNx45+nqZjLUbufwrNx6J+W/ebka8BnWmPCpEvjcnmyYaElsOb8RAk98EcesAQ4RSJbYDU3oBUHI/U3b5UOPSR4sIvjrHhlYOfsb9LsqiNdVULoG0W+604KXgiiJisbmg2ticRIGaiXsUgNBui69ljOT6UH1mceQNU85D7B13pnZlnxjBZa/c8KN06NiCJb9s7uTlIfHtrvDwFkfg2aMetgFjmUXSjoa+Jrg3RtUtv3AThnLpjTEj1FWjzSYAWVcNc8++gi/ex3Xj0/5CaK4NdmdddOFV3B9pxu4VjkvsUZV0RgZprIP8GeDVI6HNFmbd7/jAaXhXy7wACkbVGP1fFqWjTTwAfkgf0iv2LCJLcGdh5zDZPZiS6HtTdYdlG0fWR8OyJNmnCcTF1x6TEbzoG0g9j1ZdJpPqyoh6GTiTqN6PtN1uJfnLfXvnsI55LU6DZkh5SOyaekcTU3U59KUDVN+lZr2bqpgQuiZRjKX1BJaqM3vFNNsSrQioOL85ckhix5IBjauMOSic56regi7ZHF26BLtoG9Rsm2qRxQSqOtcM+qYHkQRYHHQc09yb+wh3wF2yBZv4yLmtOF7TwKX7r79GO20siU+Aw3E59spO6FwofA1kofAYdd0H5oRNtVckRrwapu2nc19Wmo0zKANDGH8OsuYhEh3+9psBvA6++qIfGSzuqGXTxd8FvQglD7g2k6oyJNmtK4nbqkx2vku5/phB4FRNpzdRHW3u8KFj65HAvzc5FF/wfunBLtOmoSdcmTlXx26/DX/w9qy8YTwofW7UyeSAN2efHd/1phHPqk534TpDYEbx6iH/TKgIdpaPiNKwbUhjKfjSiQ0xtOTtwXFlLVcy/Ofxrs//AX7AR/mdfx089PvjY/Hz8pmPwm05ECwuGvQaZR6HtYlN7bL0ATT89/GvHSmg5kGogBiQgNrUE3SYT0y78oqrWP9OrRrzqiTZnSERCSNU5E21GUVG/0VLQwqsioVnjtGaLFRKFV0YkPuA4L7EtGtsUyCPe8LVRNPdfyP+3x3fyI3qqssrQRfai+Vg0/kq/h+KqijbsF6htCpr/L1J///AWyb8H2qMna+HdYds3VkSiUH+3VdKG6iG23bitPd2YVk5d1UcbD+1WI6z5PRLbZGKNmmZo4VN00bexx3Afam9HIiPTmhnxmvl30MW723pSCfX39bmh+y2/go4bTO+l9vqR5ztnltj1xrYekVYLmu/5gu6ioiUpgP9Z9/v594a/RnwHaL86eOFBbHyblIhXC2X7j3keVYXMX6wdX3w7JFQ/duOmENMr/JJ/K6jmSwNptPWiibZo+pH5M2jaKkW1Ay1Wef8gaMdtwXrtJgOwhAql5t6AjpsxSdqP0JZTR75I5MtY2AYggST3HNn1VedgKo8RqDwNkf73WyJhiO9oDblJQHKvYS8h4c8jM540QbQZj09oO72xoB3Xok1Ho62/Qhd/G/XbJ9qkScW02qnjVYN2aoiEYYxKeo5REFoJK+0HSIyP9kZoeSyWm7alB20MoZB9CT/1GF5i+DtZiW2OVp0H2WcguhUSG7pcvSdefCt01r8AHbp3a9UFkJsLhAPJ3+EjXi2M0LZJR+phTPMH0IjpAEVHX5k71RjSqYvItcC3gAWqumbwvVrgdmBF4D1gD1VtLJ2ZxUFCs9Cq86HtEggth1SdPdEmTTsktgFaeTqkH4ToxhD/DhA0PUjdh4S+AInvjKmHqqoPCOT+jTYfa3Hk2Cb2uJ74Tt/K1PDqEN8O0p1PDb79jozAqQN4iR0gscOo7e75mS3E8AQUPoX4Dr1CDCIejENT7smEZv6Ctl0LkVVN5yf/NpDBtOa/MNHmTSqGlAkQkc2ANuCGHk7910CDqp4nIicBNar606EWczIBjv7QwmJ00dZB5kgcyn+IVz66iku/4x5oORVTdSzQHZuOI7P+NeDNQv1GdMFmmKMIQ3RTvNorR2XDQGjmOYuBx7cZUm/db7sM2q+yXq5elYVNpmnlqObno4u+hYVNY5DYE4msjhY+QBLfRcbakGQpoKjSu6r6LLBkGePOwB+Dv/8R+M6ILHQsNWjmBfzGH+K3/AbV7NAXjIbCPLoaHpCCzF9HNY1qAVp+jqkV9mh0DXQdzA6AeDVIzeUQ/grEvoFU9y9OpuqjHXfjt/4Ozc8ftm1++61o45Fo66/RRd/uaizSabfm3rQWdp2kHwNN2WfRDsiPX6bKpKPwCXSFpDJQeAtJ7oZXccy0cOgjZbQx9Vmq+knw90+BAfPSRORQ4FCA2bOdgtrShBY+Qht/iO2Q/oaSRyqHfCAbOeHVsUPGGOBB/FtD25b7t2UxRb6OdMVThf73KQIVJwx4+Ng1KrbJkNlQ2nYJtF8HZNCOG2DG08hwUhfTPeLARCD3BsQ2RDWPNnwP8q+BKtRcbuGh6KZBZkvOxoem8f+d6FrgLWO68VpAyg6eaIsmNWM+KFVVFZEBYziqehVwFVj4ZazrOcaR/HzbISlYF/vh9YEcLhb79i0fvP5+iyGHVhy6JVnu39Z0mDwQhto/ItF1rC1f1QXQ/DOzFx+IQ+3VeNFhPbna/IWF4C+E8Gp9Dy0zz9LtnAuW6+317bSjquB/DF6thU1im0Lu39gNUiG8ig3Mv25fanNq2++Q2MZIxXEQXgktfIwkdkG88mHbP9UQiUP9vfbz85ZdarN2xovROvXPRGRZVf1ERJYFRlDW5pgItLDAUvpCKw5fkyS6Nni15hu1gCQPKJo9fvppaDoayKMVJ+OV7QfJfYd3ceYlzKEHIZXsCxB0hfcS23YdcKrfFDTuGIF2S+ZZtPFITOt8Dai9sfcOP74dtM0DCiAxCK3cdw7NoQ0HmhOSiM1RdgiEZqL5d5HETiBh/OazrYioS9wqEmTqBIehyV2Z6uoxqgVI3QfabIfYXk2/40Ri0+5weLSM1qnfDxwAnBf8eV/RLHIUDS0sgNw/0fyn0PYbQCC+NVJ94bCuF0lA3f2QmwOhFZDwSsUzruUUuhoAt56DJvcYvvONfh371fWBKETX73fYaCqGte3Sbrvyb9hX5Cvdc5YdAuGVg8KX7fuXEcjOsXAKGdAM2vY7vJorzGkFQ/zF+0Hun8FnKIPwSnbDrTxtxDYvzWjL6ZB6AChAx01Q/9iQYTLH4AwnpfFWYAugXkQ+BE7HnPkdInIw8D6wRymNdIwcLXyMLtoJ8IOskiDylX4cLXw27PJ88cogtnkJLOzZbLmzLd3wkOjaUHsdZF+0bjcjCK0MSWh20OcyZzUNXu9qRRGB+FaDz+HV9KiHiIA3o++Y/Jt099bsQGpvnp4hlswzdIWzCgtMKsHVj4yJIZ26qu49wFtD/GY7JpTMM4HCYHqJN7ygAcXEItUXmcytZqDyLEQiQ1/U8/rouhBdt/h2VZ6G4kP+PaT8CGTQQqUB5oisjlacYAeq4VWQihP6DkrsBqlbsDDPOkM6dNUC2vzTHt2gypHqC5HYpiO2b1IR29T0YMibJoznSv7HimtnN0XR7D8trksaiNsOVEJIxU9HXO3oGDuqak9MQXNuVTXJCu2A6CZDhhw0/STadBzdh7SAVODNmltaw0eIpp9As3OR+FbIMGLgqnnrGaDNkNilV59VRzeunZ0DiX4NrfoNZB6CyIZIcs9p3bRBVdHW8yB1B4RWhIpToeVEe9wvOwKv/JDSre23oQ37Qv5/tnbdbdZTtMdZgN9+A7RdBFKD1FzRj3xCgb559pOre5CmH0ebjgfSaMct9jkjawx6jUgYksWVk9bsK2jHdRD6PFJ+uB2yTiOcUy8xdrp/F1r4BEnsioRXGLe1vcQ2kHC61QDkXoaO24CUxbObjwR/MaDQdgka335UqXJWvn4ZhGYjlaf3L9ebuhfy72ApkPMhdSeU/aB7jsJCaP01VmjUbmGWxLeC1Mo2K41XH8tZ7yQKlSOXZPZTj9uBZGQtpOInIw57DYZm/06vcF/u35ZB1N9YTUPqQcsOiu9YtMNR9RvQxgOCc6QY6jchVWcWZe6lBefUS4y2ng8dtwBZ273MeHpKHYj5uXeh6UiTgy3/MV5Z8dIex4qqb63ppMb0X0SC82I/SCPsGXoc+a5XCwvQxp8Aaci9jqJQda5po2dfguimSPUFQWPozqIoD1Nj7MkSa+fnoa0X0uXE053nIJ079RjU3Y8XGZnmiebehObjA3v/hXpxpPyIEc0xGBLbBu24I3jhmUbLQLY0HBQcSAPpp5CaS4pjROEjug/dM5D7T3HmXYqYXtK7E0H2eWz3Euy0Ch9MsEHFQTWNv3gfWLwtFN4CbbFuOvkPJ9o0oFM7/wfool2tvZymILoZ4Fk2StU5QSceD5L7ja7c3F9kzguAHOTfh447TOZA20zzO/UAJL4N8S1BKiC2GSR7J4tJaBkoOxgI2RjS9N6V+8Ghd+euOg+NB+K3/nZkLfMK7/cot09D2+UW9ikSEtsAqbsFqTwJqbsXCa/Y7zjVXKAymbKvzDNFs4HwauDNBCnDpInHrt++tOF26qUmvj20z7fHZymfOopyqfute1EvBNNdmQTk34Zsp+MA2i7Bq78H1SyaexfaL7PuOxVH44W6D+dUfcj/F82/CW2X2sFm1YVIZJW+a4RXg/CXLJddfaT8yEDHpnNHbVo2IhGk+uJBzfUqjkHLfwyErLNR7mW6Ux4x2YDQTCu0KswH/xNo/wPqL4TIWnbIOFQII7oRSJXp2VMAstB6PhrbvN+bmvqtaPMJkHsTyvbHKzto8PkBiawJkTUHHyMRNPzFQAZBrMitSIhEoe4e+zmFlh0ypj8VcU69xEjZYfaf3//UilUGaaW2VCFheueWCyR2gVDpb1qqecg8BYQhtmX/yoteNd3hlTCEPtf9XuO+WIPpMPgfQe0fgnnVtG6yz9PToWrTj5EZj/ZZQiQEtTdZGzuvDgktg/pfg467LewTXgENrQiaHta/e5dTrv2DNfZouwK00Xbvie2Q+I7WBzXVKe6VgdSf0NT9kHt5yLaH4pVD/UPo4r2g0Nk/1Qviz33R1osg8xyQg9aL0ej65rSLgNTejLbfDBJFhltJPNy5veTQtQRTGOfUS8ywilWWRuI7QfoJCzVE1oaaS/AGKPEuNtp0uIl5KRDfCqn+TZ8xEpoJ1RehbRdDaPlu7Xy/MdipKhYyeav7Iv9jyD4LS7aS8xejfrNlrCy5joSCrkfBa6/KHGf2RWj6ETQdiXq1UHcf4pXjt18Lbb+3tnk1V/R7cC4SR8oOxI/vCou2MXmH5lOsaKzsQDT9EF0NrinYV+bZYf3sxCuD6l9auqumIb51IKjWD/4iusJAErKfXZEQrxqpKF4839GNc+qOUSESManacUbVD2Kw3RWyAyHxrZAlb6jeTLsJ5V+zkFhyvx4XVNHHoQNoM7pgQ7T2drxoX/EusyuLtv/BipbK9ofU7V0iXfhA9gU0vBq0XoTJx7aiLacjtdcObH/hHZSsjQdIP4SUHwwzn0ULn0HDgUEDas9i9cNEIl+FmS+BpgZtri3lh6PZ5+2QObwaRDcY9hqOicM5dceo0dxrUPgQohuPW0aPiId6swJnJuZsRnS9BBIDfwevEump6+KVo+GvQL7zrCAJdPa/LEDzyTDjwX7ntSyn24E0mnkMEvtgWS5pu3mElqP3eYN2O/2BCH8By2XwgFiX4xaJIeHZaP2fIHWP3YwSI2tpIBKxdMLBxkRWh5nPg99g6ojTuM5hacI5dceo8Dvug5bTLPvDq4X6h/qNG/upByF1t2m0lB06tjZ1+Xlox93WPBoBIjDEAWR/iERgIHnf2utg4TaWvdJHYmEQsi/3GC8Q+waQt1ztxD5IZA38tj/SndUSQSp/PridXiXU3Y2m7kFCy9uZRa/3a2AYh5djQSTe+zzCMelxTt0xOlI3AymLVvhY04dA/rYTzf4Lmk+xcdm5qFQiZfv0mcpv/6PFmUPLIDWXI/04Eb/tKstGIUtXdokkEP8zoIj62vn5Qcy90/nGsPBHdMBuSAAk94LWtwAxDfXomuCVQ+Sr3Y2e2y/vtp0ChIZOo5TwbKTiqNF+Gsc0xDl1x+iIrAW5/9LV9CHUj2MtvNPjRVDJuQSanw+tF2BNOJrR5tOQ2mu631dF26+1EvpeRTpBKGAIOWDVAtpxK+TfRZJ7IJGBwzXqtwXFOZ1hkRgkdkUqjrUbyCDhCi+5GxpZFQofQ3QTyP7ddNklCJ3MeARCy0K+CfBBkjABmVCqObT5JDtYjW6EVJ8/Ir15x+THOXXHqJCKE1CvCvLvIMkDkFA/8rLRzbG4ctCFKDcX9Tss5awTTdOdGulbpkdPMo9B+yX0duhh8GZDxREDNlXomr7td9B+LZBG03dD/ZNIqK7/wekHzSnbJzT1xMqTEYmihc/Q/NsQWbPfLBgIDiAjdpDqd9yFxdOxStbsHKTmMrT5dNA2pPJnE6Mbnrof0k9iRT9/htSfIDmQEKtjacRVlDpGhUgUr/xIvOoLe/QIXWJMqA7KD6Tr1yz/vjmRnoRXgcS36KymlMqTe7+fnx9UUwJIUHHpgf8ONB+P/+lX8Vv7pjR2kX2RXrHuXk8PSxpcaQ4YgCgS39oceu4NdNG2aNOP0YXbmibLUETXCeQBAM2hqUcg9wZe7dVI7R+kFZw3AAAgAElEQVRByk3/ZLzRdnqFgAbIUe/30sJn1iC7SyveMRlxTn0KoX4rmvuPlcSXao3CYvxFu+F/tg5+y3lDlqmLlAOdpekSFC31fF/wqs5BZs5BZv69VzYKAPEdglBFuTn00BfoziJRIA3tN1gmTn8kdgES9iUJqwAdiPh2EN/FZATiW1ucHNDU3eb8tM0yVjJ/HvQzA9b6r/w4iG5sdmYeQpuOxU89ii78Jrr4u+jCLfHTT+C3/ApNPzbknEOhfiNaWDT4oMQuEJ6NFWQtb7ruw8BPPY4u3Bpt2ANtPHRk8gSOccWFX6YImn8PXbwb1juzDOrvL4k2tbb9JmhAnYeOWyG+zeDNKpK7mxPM/sPa0CW+2++wftvCgSknznjSioTCq6CZv0HzSdhBZhCSEbFc6n7wknui4ZVsxx/fctDUSxEPqToDOKP3G6FV6EpPhGFJPYh4SNn3ULJo9qXguxlLQfQX2981DU0/AQpoRwIt/wQKb5j8bvmRg9qqqtYwo/AexHdEMy9A6y/tvbJD8Sp+0r9dXgXUPWgVtVIx/DTF9ksCm7F00MK7Q55nOCYG59SnCJq6Kyh9V1MgTD9WmlipdoqTETjTzKDDReKDFtgMB/Gqu5oOS2IHNLwSmp1r2TDaCLFvWkHRQNdHv95v02LVQpCDXWuVoQNdn9wN1QYL5cS/PWTzB839z/qPRtczzRb5HWhwyBr9ehASgu4nmAKQgrYLsJtVGM2/g9ReNfAaHddB62+BDLT/AVTpeoJpvxwtP2zAg10RsVDTSPCWA96hSz5hnKqHHSPHOfUpgoSWR4kBaXO2JcotlvKjTTfbX2RZHoPIq5YKiaxuLeOS+wD5UWmCq9+MLt7dDkZDs6DuzgGfbEQ8pPxHqB6CdtyI33wyktiz37MEzb2KLu5M2xSk7jak7h7I/tOEq0Iro34zZB61G1H6Ccy5FzCH3ilf8PrgHyB1P11ZOpoJhLqCQ2aJU+z/2lJ9Ltp8KhQ+QSqOHvKA2jFxOKc+VUjsbiGG7N9MlyU6/LLxkSDh2TDjOSA7aEcZ9Vsg87RVIsaGV16uqpB5DM29hSS2R8JfHNwWCQqQRoAWFlojisxfgkyXLBQ+tQKpHo0r+r22/XJouxpImf5K/aN9e5hm7GdjTzMhyDyHlB/aK1QhlccBx9mc+ffR9KNBDn5nnDoEid0t/bD1PAtdJb7TWyWx12FtDipPg/YrQLNI1dlFr/4UrxapuWxYY1VzdtPRjqBF3dTpH7A04Jz6FEEkhFSeOE5rCVaU0z+qGXTxd6DQAChacQxe2YFDzqsdtwQdgDJox7WB05xVLLPxUw9YqT8SHJh2hj9CDKsZd08pX0Jo5hm042ZTYaw803q/RtYColj8PTKkrKyEPw/RDVC5ojuUFfoCXsVR+O3XQcedNlfrb9Hw6t39ZcPLQ67TsUeQ2PpIYrth/yxKiTXIfgrwTQOn7gEnMTCOuOwXR/HJzwsU/TqAlO2Ch0PmGRsfdCbStitRv6F4drVeiOXMp03fJfYNy3SJbYoWmq2582BZHYndsAPTpGXStF9tBVWF99HGw1DNI7GNkJrfQfIAqP4t2nE3/oLN8FvOGjgVMLKGhcukzOYvDw458x/RJeYF9kQRIFW/sgNcrw4qz+oVOlItoPm3LcwzEWSexf4dM/a7sGTtgaOkuJ26o/iElqe7oChuB4bDIb6ttYHrdLypO9HM4zDjCaQz53sAVDOQnQOhWQOHbUKzrLlEEBqRql8CaXThNpD5M0oEKo43lcWuebOmBCkhJL4dhFew5g6xTdCF2/eYPIvm34fM4xBaAak4GVK3oumHg8/yJ4h8LcjJ7401drg7sH9ZJAjVSNneaPoes9ertjTLzmvCKyIzHup67acegfS9EFnXDskLbwMCNdcjRWxCMRSqaucsmWcxKYQVgpuVY7xwTt1RdEyI6g5rghBaHin73rCu85K7oqEZaPMp1vOUjMVl8/MG7aajmrV0zsKHtsOvOgcvcJ6qGSgsgNDnkOqL0Oafgd+IVJyEeEk08zIWy87bV+ZJ6OnUG39kh5wCRB/Fq/ltV9WoVpwMLafY9ckDoGEvVNuAqHUnUujKFlE/ECIb4GcmsT4iYxJeGWb8xVoghlce8AxDsy8HaZ4pyDwffNcyYbTtcqT2ygHXHQ7qd5jOvDcD6ZG+anLD10HhU6RsP8tIajkLCENidyS8rP05zqEXzfwNbfmFqXBW/drOgaYRY3LqInIM8APs1/c/wPd1QsrkHJMNCX8RqTp95NfFNkPjO1nHezKAN7TwVf5/5vg6qyPbr4XEt4Lc/T0sDTM8G6m9A6/2+t7XhlfHPHYIiEJ4TdOaiaxjzjv7PJYmih389sBL7ozGt6KzP6mmbqUrPTF1H9RcB6nbLBQVWgYSO4385+FVgDdES7b8vB4vsnSfFUTHnAWlmkcbdg8aOitaflTXga22nGWfkyyaDg5GO9vkpR9GZr0wprVHZ2/GbsSkoSBo00+Q+nvH3Y6JZNROXUSWA34CrKGqKRG5A9gLuL5ItjlGiaYfQ7OvIPFtByzhn8xIxXEQno0WPkQSu5ljGwxvWbozR2IQsU4+2n49aLO9l/8AbfwhGl4VqTiyKyVPQnXW0zL9sKWEtl2EUgBCSM3VEP4i5N/FtGC+3GfpzswOX9/sHTsufADNJ5jWjC62Xe4otV5U1Z5CvArL2V+S2GYgMbpSI5Pft5BRZDX7WY6FwvvBE1BwQNxxR7fcb3Yu3TH/At3yA4A29tX5GQ+6+q8CaFDoNb0Ya/glDCREJId1FPh4iPGOEuOnHuySu9WOm6D+7iFTA0dD54FiKR6tRUKQ3IvhziyhOqi5Bm27xnbkFcfaG6F6LBMliNHn/m6iYvnXkLrbuq8Pz4byH5ncgOkIAzk0+xxSe6PdHAghg2mXt1+zxDdMS110cd+0xyVQzVqj7NAyfXLlVRVtPibIJgGtvjjQrVdTWRTPWvfNeBSyr0BkVZAEmvsXZF9GUw8gZWMoQvNmYf/NBYhCZK2u1FNCKwQ7eLEDZ81YL16wsYX3hn7KKDLiVaGJPSB1F6BQfsK4rj8ZGLVTV9WPROQCYD521P24qvbpLSYihwKHAsyePb1iWxNC9m90pd2JB7lXbbdZRPz2W60kXWJQfSkS+7+izj8qIl9FKo6xGH5wqCplP0Dz71gDC/+jYGDewjX9EV0XSwizlE2Jbmj52Z03icEI1WH/nfI9vhlGGw5BCx9CbAe8mr6NoVVT6KJdrT8qQO0NpvbYSeHDwKEHO+LmE4MnCazpdvVFncajuVcg+4I52uzfzZbWc9HYBl2HryNFvHKovc1STL1lkPIfou1XBDnxefsdqDgJie+Atl8F7UEjEEkOSy++FHhVp6Plh4LESiKVMdkZS/ilBtgZ+ALQBNwpIvup6k09x6nqVcBVAOutt55TASoxEt8WTT1IoPkKkWFmngwT1TS0ng3kQbNo07Ew8+khs1NKifotlhfvNwIeWnsHXmRlkyiovhAAv+EQyP3DLliig1AnEvky1N6AZp5Dol9DBuqO1N+1FSdZYVPubcsh9+qg8Ank/20DMnfht6+BV7Zf7wszL1pGTnAeoG3XIDWXdL/fK/TkmahYV3/WR1C9EBFBm460IiV8et1cxAO/Zdifo9/PFlkFqepuEKLpJ7vDMcSQ8Grm/MuPtg1E4RNI7Dygns94MNTT0VRmLOGXrYF3VXUhgIjcDWwE3DToVY6SIrHNofaPVmYe3cQEsYq7AvQMjGgDumhHqLtv6Nh3qUg/CYXFdD2hLN4VnfFwrw5KUnO5VXtKHC0swv9sHSCK1PwOia7fPS669qhSAMWr6aNx4y/Ypveg3L/7XhiaZVo9AMQg1PtpVrxqy3dvPR+8Kig0gj8/uHaF7vBX7j90d2tSLBpasBTHJZUvB0H9JrTtUiuoKj+83y5UxLeEtrfpOpTtTMEUDxLf7j1f5kW05UyQJFL9a8vocZSUsRQfzQc2FJGk2G/WVsAbxTHLMRYkug6S3NeqFYs9t8Sg8iy6MyzURLEyzxV1HVUfLXyM76eGlnkNzaJ3E40OtK13Gp9IGIlvaTnzLT+zQ01tRJvGeJDYaa/fjN90LP7ivdDOtMJeh5QeJLtb+akqvt8OfiuUHW4VrolvIxVH9p08tgnWZOSf4L8H4XUh8V2k9obuMfEdMEeehMjXkFkvIDOeQGquGVSsrM/naPwRdNwCqbvQxXv3+7OXsiOQql8g5Uch9fcOeDNXzaFNP4TCPMi/ap2gHCVnLDH1l0TkLuCf2LPeywRhFsfUxkvuiu8vgLbLse4+voUcioRqFm3YF3KvAXmUGFp9CV58y37HS2xjNL4zpIPDMcIw4KO/0p0pA71vBmOwufmUQGc9hzYeBjP/gpfYDj/yiOWORzfCi9jZhubno4v3Bl2I4gEeVJyFV9a/trlm/mZSt53251/Bq+/9QCyVZ0JsSwuLxLexgqbQKEJi+TfpCt101grQu+2eiAwvPVNzdEsiaxAec5SaMckEqOrpqrq6qq6pqvurDqHD6hg1mvsvmn504kq/l0DKfmDSvpG1ofL03od7Y8BPPYEu2sEOeLsOHTPQ/NPB7an6BST3N7XC6NeRssP6HydRqDwDiFhIoOpXRbGbwnt0hz8kCAeBF14Zr+x7XQ4dQNsuAu3UbfGxA80zBpYR6C+NcQlEPCT+DSSx49h6jsa/gzUUSVr4bgx9VMVLWnolUfuqGB9toumOjGcHk/XWW0/nzJkzbutNFfzUE9B8HEgIpAypf2Ti4tclRAsfowu3o7v9XA+kFm/Wi32/P9q11AekaCmZfupRaD7RDia9eii0QHh5pOb3SGiZ3mObT4LUvfTK68ZDZjw/YP9Uv+HHkH0MECg/Bolvh4RXLIrtPVFVy6DSLMQ2LUofVS0sAIk4ud4xICJzVXVYWQ9O0GtpIHUbFuZotyyJ3L8m2qLSUFhoTrGLUPBViVQP0od0FIh4Rc2x9xLbITMehapfB8JbTZB/3aoul1y7/LhAJbLHZ/VmDboj92p/h8x6HWLbQdvv0EXb4i/ak2I/HIsIEtsYiW/Z5dBVfbTjTvzWi0zfZqRzhmY6hz6OOO2XpYHoOkG6WtoyJUIrTrRFpSHyZSvbz70BKFJz+YjSCscDP/UEtP0GvFpLLyx8Asl9kbIDLFPEb0IlFITt/SAFsTcSmoHU32NFRx23o34rktxz6ANNbTPBsM5zgPzLaNulY68aHQJtuxjarweyJjU842nT93FMSpxTXwqQssNMQTD/PyS5FxJeYVzW1cJnkHsdIl+2qsUSIxKG2pvtsM6bgYRmlHzNgVDNWhph7j+Q3B8vsSNaWAzNxwIZKLzTPbj992j7VWhyL6TiVIhtA+mHLGZfMfBZgEjUxMO0ANkX0UICIusM/AQhSawpSI/D3fx8ND8PTd1vBUbxbxe/yjfzPN0hMd9kE5ZC+YnpgnPqkxzVDNpwEOTmQHgV+xqPdfPvoou/S1dOet09JUmRXBKRkOmLDwPNvICm7obI2khyn6I6M227HDpuB9LQ/Lo1r5YEDChekIeOO9DkgXjVF6D+GSDxYcWktelH9iSmCsn9kMr+S9tFomjttdBwEJYjHoHEd02hUjtQ4lBYgJQfMroPPRCJHSwvXX1rlVcC2QlH8XAx9clO6qEgE0Qh/y7aPk61XelHTRxJ2+zPdB8FiBGhmkNzb1mbuzGi6lsTiMYfQvo+aP216dwUk/w7dO1OJYSmn0AX7Y7tkgdqoZeFRdvgN/7Ydun9OHTVNNpxF5q6134mfjtk/hpUlKasU9AgSGTdQKI3AviQ+Rt2o1G7PvPs6D5vP2j6Kfym44AqqPotUnkSUnf/hFaKOobG7dRLhO/7/PH025nz2CtssedG7HbsTqPbSfZyDAKjaLI8KsKrgEQt71kiw9qdaf49tPU3IAmk4oSu8IlqOmjyPB/woPYmK8kfIaqKtp5txTFSTveuOQWt56OR1XpVh44GVTUdlsSukP2L2evVBZomrcGosH0fH4hatovfgN0EFLLP2ZNVP7Zow/eD/Hsg/SRSfYkdkAYSB0s+iWnhE7TlPCCPVJxoWitdfVCB1B+Bcqy9oAfxHcf0+bvWzf7TJCBImZ1V5yDJfYsyt6O0OKdeIh6//i/86aIHyXRkmf/Gh8xefTk22HHdoS9ckvgO1nE+8wxE10aS+w19TRGQ+Naof7KJScW3sWrMQVBVtGGfQOrUQ/PzkPo/2ZuZF3rJt2r7NT2EqHrMkX/XHFZkDaRHtyRLu82ZkmHHXdgBZAu9f33TaOMRyKx/jPozmyLicfbzBqg8284vIl9GF2zYu2aJEF055uHVwKu0ODp5bGDfhha+n4Pc3O5vZJ5GG78P0W9YZpNXYaJkPW1qOKir8Ehz/0HqH6G3IT4kd0NCy0F4RSS26cCfL/cWaFMQtx/iv37+v3SnXKbQ3KtIYmw3DM39B206HjSDVP1y0h2CTxWcUy8Rn7z7Gdm0FaP4vvLZ+4tGNY9I2HpeTgBeck9I7jnM0dlgt6pAoUcFJBCaYfFYwHa2ffVENP8BungXU/4jBNUXI/EtLWTTsL85o9g36HZoHkTWNzndru5CY+zPUvgwcOhBmmD7lciMR2zqynMsDx2F8mMg85dgbd/yuhM7Q3gN+9zJffvVsZf8q2hXqASzO/sCEIfkAXiV/WSxFD6ky7n6n1lcv/wwaPsd3TcPRdt+C5pBK0/DS+7eZxq//SZr6i2eNceuub7Pk6P6bWj+A2i/pCsDCSkD9ZHE9n3mHCnaeESXNK82HQ4zXza9GEdRcT/REvHNA7agrDJJsjJBWWWSTXfdYKJNKinWju2blqEhCUh0P6pLZE2oOAlCX4T4jv3rm3TtYLNACs08CYC2ngfaiDnP54PwgglfSdVZ3dWhRKDytF5TqubwG4/A/3RN/MV7o37f9MLusQpBwwvDgx4ZP15iB0h8BwhB22+tEUdX780M5N/Bq78Lb9ZcvCWkejU/H3/BN9CGven9X64zhTENhQHkgJP72s9TEpDY1fLry46A5EGmZ57YBdKPBE8uGWg5o//c9fY/2DraYe35/E97va3ZV9CFm0LDd63Dk/8xIFB2OFJ/X3Eqhjs7U4FJCBRJosHRG7dTLxHLfXFZbph3KR/+7xNW/PLyJMonTpp2vJDqiwPnHO2zU/XK9obBmjVEvmLZHwAkILpRMGmPMIZmILk3XvV53WuGZ6OJne3vS/bwTD9qh5BkIfcftOMGpPzwXkNU8yZbm/mznRtUnW2aNqGZvSQE1O+w5tGdjih1H3gzwV8AWkDKvj/gR9PWXwV67oEuDUlTY9QW8Bdh+uPVqGqf3bNU/BQSO1raY2St4HMKVBxj6ZDeMujCwUNjAIRXhuyCYK1In0InbbuEXp2bACSERNYsXuVqxalBT1cfKo5Dxut8aJrhnHoJqagp50sbjE8K4mRAxIPo17teq+asHZq3TFfbtwGvDa8MdTei6aeQyFeQ+Nb2RmJfyDwVjPKh5Ty07pZezm+ghsyQ704MQemWuO1B5inIvkhndhG5N/FmPNaPgTHbLWsbINalqO4OyM6xptZDSsoGhkgEqb0RiXwl6FJ1kn0//ahltfSQrlW/HdIPm6Z67Jtdn1nz7we9VzvMWVf+ApqPsdL+ytP6/XlI9QV2cyksQiqO6qt/H5qBPfF06tdEILS6qVoWCevpug3gD/n74Bg9zqk7SoL67ejiXYPH/DDU3TZkWz2JfLXPY76IWO/QzvTC/Mto6i6kn7hxH+I72o46+wKEV0bKvtfPoCUikAPEeEVCUHs92vJLS1esPMsc4yAHk13XVpyE5t+EwseQ2A3Ca9r3/YU9jjyzUPjICr7wwZuFNuwF+ffNpvgLSNWZANYYW5sAhcJ7iLZC9QVoxx3gN6Dq94lVi1fdq9FFXxt/hhYa7TDaq4b8a4Fk7ryunq/FYNx7lk5DnFN3lIbMn82hawcgaPsNFgMfKdH1rNdo4cPgG75VuQ4DkShSe32/Tq6L2DcgtoU12givipQNXLgjka8idYPnkfd7XXgFZMaTfd+Ibw9tV2AqhiFUO2DhVvZecv8gVz5nTxqZxwFz6ni12K46Cyiq7dB4EpCGzF9RCQ/eT7U/G70qpPZKNPeaZTHhgzajrb9Caq8b8WdeWtHsy2jT0UAWKn+JF//GRJs0YpxTd4wIVbUcbC1AdP2BnWVoZo8YeRSWUCocLiJRtOZmWPwtzNH4SOI7I5xj4HwAkZCdBUwAEloGZjxlu+PwSuiCTejKP++4zkS+/AVAuFdbQik/FM3Pg9wrlk8v5abgqWANtl8bg1GxHv9uXiBNMH3Qpp8EOvJA01HorH+NqMnIZMA59QnmxQfncuu5d7PC6stx+MXfJ1lR+gNV3/d59a//JRwJ8aUNVx1RUZS2nGFVnACxrQZUT5To+mj5TyB1J0S/Zvrro8QLL4vOeMIaSIdXHbP2jWZfQZtPBHwrqulxDjDeiFcO0bVRLZgD7UzLlCqovQNSt4BUIWWWTaTqWzFQdF2oOhPxalC/Ee3UPVcfSQwjNDWQPeEvouWHQ/s11sS78ueDjjcJ4/zYNNwnE70yhwpYOunS5dSdnvoEsmD+Qg760tFkUlkisTBb7bsZx13Tf3OHYnLufr/lb/fPAVV2+MFWHHbRwJkbS+J/+hW68rgRZNYbJcs1Vs2gjT+2htHRTZDqC4uSMeEv2Bj8oEmFVCAz5xRfBGukNjUeApmXgAxIPVJ7paWCLjmu5Rd2o9SCZejUP4ZIBPWbIDvXzg5KoLPeH5r9B9p4qN2Iyn6EV3HUuKxbSvzU44Fomw8VP8Mr23+iTQKcnvqkQLWAph5EO24ZMD960ceNeCH7J8hl8nz45sclt+utf77D07f+lXRbmnR7hoeu6ifWOxjhz2M7Fw9Cy5W2eKTjdjvk1HbTNEndX5x5e6buaYolSkXHHfVbeyghWvVsfw4dsApfTWEHq4sC7fbgIDS+1bg5dABtPj34WRag/Wq0sHDIayY7XuKbyKyXkVn/mjQOfaQ4p14itOUMtOUUtOVcdPHu/bYqW3XdlVhh9eVIlMeJJaLsffJ3S2rTs3e9wDGbntr12gt5LLfKsiOaQ2quterJ+E5I7Y1Fs02zf8dftJMVCXU2YtAM3aXqSvcTwhip+BldBUsVJ0x8VaMkQSqxtEcBr2rgZtuxTbCeoWHwqoKm2xPEkiGXInRJmgyIRJbqcJILv5QIf8FGQWEJQBSZ8RckVN9nXD6X5+2X36Xuc7XMWL7/VmbF4oStz+RfT78KQCgcYu0tv8zx1x1B/edqS7ruUKhm0QVfD3agAuFV8eofQP0Wq8LMz4PwGkjtTUVLibOnJ500bQH99GPQdBR2E4tD5Zl4yV36jFPNQ+oek2RIfHdiNedz/0ObDgO/CSpONFkJR0kYSfhlatxaR0mqLcVVJ9zIJ+8uYO+f7cJam49cOXBAohtamhx5U/EboJ1XOBJm9fXHp0Bp9fW/yBsv/K8rhn/sNYcV1aFr/gO04xZrcFG23/B3O5oNysYBNBAFA/EqkfqHUE2PqQFyv+ReQ1vPRb0qOywNLVfc+UeI+G2oxIIbW9oyW+jr1EXCMJwc/XFAIqsiM54aeqBjXJnWTv2Sw6/hmTtfIJfJ8dpf/8sN71xGzcyqoswtVedBZAStysaBA87ck3hZnPde/YCdj9iWmSv0fXIYLSavuxtoMxBBC28jVecM61rxytHkXtBxJyaY1VvYqtgOXTWNNh0aOFAPbToKqburqGuMmNjG0NIjRFekm4xqFm27FPLzkLIDJzTTxzE+TGun/t7rH5DLBDtET1j8cUPxnHrQqmxicyp6E46E2feUXUszeeHTIB3PBzKQ/fuILvcqT0PLDgZi/YapioqmAjVIAB8KC0q73nDw6uklcNV+DRShg5G2ng8dtwEZNPtXqH8cmcg4fBHQ/DzTmJcoUnmK9YZ1dDGtD0r3PGFnYokoiYo4K6z2Ob6w5uyJNmnpJbRccGiXsK/4TiOeQkLLlcyhq2rX4aN4NYHGShyImZRuEdfx22/Hb/45mh3J+ZHQ679jsZ7scq/SfcDs9ajMXTox3f79IfssZJ5CG4rcum8KMKaduohUA9cAa2LpCQep6gvFMGw82GLPjfni11Zi8ccNrPF/qxIKT3yIpCeLPlrMlSfcSC6d5eBz92WF1Ub/SN7RmuLOC+4n3ZFht2N3om7Z/mP8o0UkAnV3Q/oxCNVBdPOizj8WNPMM2nQUaAGt/AVecmek8hwo+5F1aSpiU23tuBlazwdSaOp+qL/XGkIPgUgIrTofWn4ORPqtclVV0FaQsuGH85L7Q/NrdpPw6mEUHacmF/keuv0K/tJ9kyoFY8p+EZE/As+p6jVip2JJVW0aaPx0yH7xfR8RKUoxy4/WOYF3X52P+kr1zCpu//iqUc/702+ezX+eex2/4FO/XB03vnPZhBfcjBf+ZxsEmuwAEWTWv0t2xuE3HW3KimDOt+o8JL7tmOdVzaONh0D2JZBKpO62PjnpWlgE6UfR0EwIrYaElzWZhdxbtkOPbjAlBLX85pOtdy8KZd/Hqyjek9ZkZVyyX0SkCtgMOBBAVbN0CVdMT5686RkuPORKPE84+Zaj2WjnsR1KfTzvU/yCHZ41ftbEEzc+wze/t8Wo5nrzH2+Ty1gcedFHi0m3p6eFxjsAIj3qi/q/kWnmL2jqcZPWzf0HomshVef2lagdaqnEd9D001goJQyRUbQw7LRJFQofmWpi7mX7Ig/ahLZdilRf0D3Wb0cX7wx+MyafG0K9aqi7G4msApGpIwEtlb+E5N5ABCmiguRUYSwx9S8AC4HrRORlEblGRPq0GReRQ0VkjojMWbhw6a84Gwjf97nwkCvIZXJkUlnOP+iyMc/5nR9v31VxCnDJYVfz0duf8NY/3+HNf7w9cIFKP2y+x2zGzosAACAASURBVEbEy2LEy2J8acNVB3Xo77/+Ae/8+/0RzT+ZkarfWHGPJKHq13126X7TcVbunr4LMo9aQ4v0k2jb1SNfK7YFUncrUnUGUv/QqM8IVAto48Hoou3RhZug+Q97CG2FQJbIry/MCxQxTbnRwhSNJsfbOWfu3/iL98Zv+AFaGHv1smb/gaYfQ8faRnCodTLPo21Xm4gZJscska84hz4Aow6/iMh6wIvAxqr6koj8FmhR1VMHumYqh19UlW+V70c2ZQ8rlXUVnH3/T3n0uj+z8lqfZ6fDtsXzRn4PPXKDk3jzH/bLnCiPs+G31uVv989BBL6xz6Ycc+UPu8b+9+9v8exdL7Dquiuz+R4b9Qqv+L7Piw/OJdORZeNd1ica619D5frTbuOu3zwAImx30JYcecnB3XN03A8d15qoVuUZU+NRvuUC6Liqn3cEEnvijUYuuAho9hW08YDuFnCRDSC6jkknhFdFan6H9OhepH6rdUDSVrofS+JI5UlIch9Uc+iCDYImHx6Ev4RXf8+o7fPbroS232PFYp9H6u4uSUjLTz0cNBLJW7ZL3YNIePmirzPZGa/iow+BD1X1peD1XcBJY5hvQmhpaOWCg37Ph//7hH1O3oWt9xvdAZ+IcPLNR3H+9y8jFA5x2IUH8NNtzibdkSGWjJFuz7DniSOTjAX+v73zDo+i6uLwe2dreqP3HnrvSBFBUKqKYkFpShVRQVQQEJSiwEdRREQRUEEBqYoIIk0B6R0h1NBTCKmbrff7Y8KGkEICgRTnfR4fs7t37pxZkjN3zj3nd+g35RVGdZiIlFCuVmn+XrXb3dD6t282MXTOayiKwqWQqwxvPQ5r0vmsFhvteiW3OVMUhaadMw4H2W12lk9bizXpxrTmi98ZOL0XOp1OXSXFfAAkguM0Ungj/MZkOF9OIaVN7bOJCUwtM5YBsKxK402j2ggji5rk2YriT3Kzbj3oCqq9T+/of3oLofhA0Apkws/gOKp2cTI1BY/n1AHSmqwAiQucV+/PPstSwKL+7DinNgC5T/XMNLFuwt0gBZNalPUfdOpZ4Z6dupTymhDiohAiWEp5EngMyFz3glzEF0O/Zc9vB3DYnUzv/xVVmwRTrHza2t8ulwuX04XekPbX1qxrQ5p1bQjAP7/uQ9GrzsSaYOXoX//SfUTW7avZoio/XJhD1PVoSlQqymvV3+ZyyFUkUKBYoHv1H7LvLIpOuM93YNORFE49I2xWOyOfmMDhrcfR6RUQauTZv5AfOl3S6ssZdptmtw2cF7N+MQ8JeeNVsB9WL8LcCeH3UfqDDTXAdltVpO9UhLEu6Apm0CbvwSP0pZG+YyH+C9CVuasErnpMKYRv2puGQvFGmjurTapxwR29WrOMoQY4r6P2PDUmtcN7ANxqYIIVkJAdDbDzOfdbfDQE+CEp8+UskHkN1yxitVhZMnEFkVei6DasE6WrZs+qIPxSJA67WvSh6BRuhsek6dSPbD/BqI4TsVpsVG5YAZdT0r7Po3R4rW2a81ZpUgmDyYDZ24V0SR7v2QqAsIsRLJu6Bk9fD7qP6Jop/XTfQB98A9UY6qT1H/DlsIU4HU76TUluz1b9kcoIITB6GBECWjzbJNPfwfblu9wxeimhaLnCFCtXmIEzbvvnNNYDXWlwngckwrt/etNlC9JxBhm/AHSFEV6vZdrBSmkB+27UhhpA4q9qM+l0EP6fImMmqqtN7yEo5mbZYn92oHg+A57ZVywm/CaBVx8QZoT+/moyhN8kpK40uMIRXn2yX8YhCcWjE1LxAfsJVb//QTwN5DPyjKDXpB4z2b7iHxxWO15+Xiy++CUeXvf/i3Rk+wlGPjkBKSWVG1Xkkw2jk1ent9Gn6ptc/PdyivdMniYm//4B1ZulvWETFRbNvg2HKFm5OMH1y+N0OulRZhA3rt1Ep1eo1ao6k34bdd/XcIur566zd/1BytUqQ7WmwZk+buuynUztM5vEeCsGk54XRz5Dj9HdUo2T0g6OELXpsvLgRMCkKwEZ3iIpPmwE8xMo/p9m7lgpkeGtk3qjKmCoixKUPWqS0pUAQv/QFPykKwEZPVzNxvF4BuE99D+ThqqRknwp6PXv7tPYk2LJdpuDG1ejKF5BlY3dvuIfTu07Q/OnG1Gp3t26uqekRvMqLLk4N2mFXjjdzUyjOfXGohBw7VxYuk49oJAfbXq0cL9OiLEQFRaNy6mGcU7tPZMlW+9G0bKF6TQw6znRjzzdkB2rd7Nj9R6CG1Tg6Tc7pDlOCAMYqt6vmXfHdS1J4CtJbtd+MNOHCiEg6Edk/Dy1sMirX/aYFPsZxM8BdBDwGcLUKlvmzQgZP1fVkccG8d8g9ZURHu0f+Hk18jZ5xqk/+Vobvh+/DCEERcoWokgZtQpw43dbmTlwHtYEK6tmrWPO/imUyKJGuLe/F97+qbIxUzBiweuM7foJ0ZGx2G0ODAY9nr4e1G1TI0vnqdywAqcPnEe6XLTq3jRLdj4odDod73+ffV1rpCta1YLRl7u3TkW6UqrsgOuKmsbnkfqpISOErnCmYtCZRbpikxy6A3Agoz9EFNqSbfOniyuK5NIPK0S/gzQEI/RlH9gppZTgOAXC9FAbbmhkH3lG+6X7O12YuG4U73w7mFk7J7pL+vdvPIw1QdW2EIogZN/ZB3L+cjVL893ZL1gT/R2LL8yhXM3SREfE0rvyUEL2p3/ODYu28FRgL14sPYCQ/WfpNqwzTocawz+24yR2mz3dY/Mi0n4YGd4KGdkdGfkMUma9sYUQekTQcoTvBETgPBTv7Flt3zNCT0pdloeTyqn2db19z8WOtPz6QM8pY0YhI59DRnTCdQ95+ho5T55x6qCGSpo/0xizZ/KmWfNnGmPyNGEwGRAIqjWtlOKYhFgLoztP5vkS/flu/LJMncflchEdEYPT6Uzz86tnrnPm8AUcNgcJMRbmj1qS5jhLnIUZ/ecSdzOe8IuRTH75M5ZNWY3D5sCWaOfMwfMMbvgeNuv9O3a7zc7pA+e4GR7Nb/M3Mb3/lxze9vCTkWTcvKQWZwlqhoxt1z3NIxRPhEcHhLFh9hqYCaQzHGk/pjakALWq1G8qKAVBVxbh/7+HYofQlwL/qajCY6irZ0PWwotZQcpEtQEHFsAK8XMf2Lk0Hhx5JvySHk27NGDSb6M4c/A8DZ+sQ6FSKVOrvhu/jH0bDmG3OVg6ZTW1H61OjeZV0p0vIdbC0GajuHTqKkFFA/jsn0mp5Hi9/DyRSeX7Or2Cb5B3mnO5nC5u34e2W+2UrFycf3efdpf/Xwm5xrIpqwksGkCD9rUpUDzr3Y+sFiuDG75P2IVwHHYHILBb7Wz64S9m756UbZlCUkoWjPmRv1bupuETdXjtkx6p9yB0xQETYFWbIys515nnXpDWncioAeqGia4cBP2IEEYUj/aQA/FsxdwWl89ItdLV1ApMD9IGIwgvkDGoPWizFsbUyB3kqZV6etRoXoWuQ55IMxUxJiLWnbIohCA2Ku0m0Lf4c/FfXD1zHYfNQcSVG/zy5YZUY0pXLUmfSS8SVCyA6o9UYcD/eqU5l5efF73Gd0enVzB7mXh73gAGz+xN2RqluJXE4HS6+GHCz8we+i2v1RxG1PWUemhbfvqbVyq+ztutxhBxOTLN8xzcfIyw0HAscYnYrQ63RryiE5w9HJrh9WaF7T/vYsWMXwk9fom1czawYeHWVGOEz1AwPwn6SuA7GvEwNlazERn3JWBRKzmd59R89xxG8XoeJXABilevB5r9IoSCCFwExkZgbIEI+PKBnUvjwZHnV+p344X3n2LXL/uwxCdStkYp6rerneF4T18PhKL+4eh0SrobqE+/0YGn30g7S+R2uo/oSre3OyEU4V7V/m/reD56dhon953B28+Tq2fDAAc6vcLxnafcBUw3rkUxpfdsbIl2rp8PZ2rfOUxen3oDsEDxQJy3blyKqhBpNBvQ6XTUbJnsVHf9so+zhy/Q7KmGlK6SdlWezWpnx6rdmL3M+AR6M+3VOSg6hRELBhN5JQqnQ33CcNjsRF65kep4ITwQ/p/c9XvJtehLgn0fYEt60sg+Wd68gDBUzdaG4hoPn3zv1EtUKsaPl+cSExlHYBH/u650Wj7XhIObj7JzzR5qtqhKh/5pFxfdSdzNePRGfYp4/y3u1Gn39PFgUpJz/vCZKUlOXQ3PlKtZ2j0uIcbCrSW9y+niZlg0CbEWrp0Lo0SlohjNar50uZqlMZgM2BLtSCkpXa0Ezw3rQp3Hqrt10zcs2sKsQV9jt9r5cfJKvj42PVU7Oykl77Ydz+kD55ASXA4ndpsaVx7d+RO+PDCFnz5dRUKMBaOHkbav5B7N9OxC+Lynygw4ToNXv/su0tHQeNjke6cOYDAaMt0UQqfT8fZXA+CrAZme/5uRP7B82lqETqHRk3W5dOoKTTrVp/fHL2R4E4mNimXH6j3u13qjnqLlkluNFa9YlKad6/P36j0oiuDpoU/So8xAHHYnPoHezNn/Kb6BPlgtNixxSfoYEsJDI1M53F1r96XIEjq190wqp54Qa+HErlPu1fjtxEcnEFDIj4Uhn7Fk0kp+nv4LbzQeybjV7xJc/8Ft3j1shOKNyGShk4ZGbiRfxNQfFoe2HuPV6m8xuOF7XDiuap/E3Yxn+bS1OOxO7Il2/lr5D+ePXmTlrHVs/vHvdOeyxCcyqP57SFfyTqqXX8pUOSFUXfaFpz7jpyvzuHD8EnHRCVjiEomOiOGvn1UtNbOniQbta+PhbcbsZaJ9n9apzte0S31MniZ0eh3SJQluUCHVGA9vM0HFAtHpFAwmPcUrFsFg1KMz6ChVuTiLJ64gMd7K0k9XkxhvJfJqFFN6fX5P36WGhsaD4T+xUs8OnE4nH3ScRGK8utodUHcErbo3pf+0nqrmeVJM+5bqqcPmIOJS8sZmTGQsh7Yep1TlYpSuWpKTu08TExHr/txoNjB2+fBU5xVCULCEmhFTqFQBjCYDVosNIQQFSiRnyoxbNYL9Gw9j9DBSs0Xqzck2PVriG+TLuSOhNO1S3z3n7SiKwswdE9g4fz4dnluKl+8Rroe/SL/GxwjZf5bQE5eIjozhdmGJWzn3GhoauYP/lFO3We1MfGEGBzcfpV7bmrz/w9A0FRedDidLJq8kZO9ZOg5oS4P2dXDanW7JW1Cd9talOwko7EeH/m1ZOWsdIkne0OxpwuRpovVLzQFV3rdvtbewWqy4nC7G/vwOpSoXx5mU1mj0MNJlcHsqN8y4O02Hfm25dOoqBzcfpfWLzWnQPnnTV6fT0aB9nQyPb/hEHRo+kfGYAsUC6T7wINijAUmhoB8oXq4aZ4+B1WLj3OFQ+kx4gW/eX4zZ28Swb+5T7U8jy0jrDjUzx/QYQpe2oqjGf5d879SllERejcLb34sNC7aw9/eDWC02/ll3gD++25ZmqOKnT1fz4+SVWBNs7PvjMF/s/YRSlYvz3DudWTZ1jTvmbLfauXoujOvnwkCCRGL2NPHm3P406VzfLTh2ZNsJbBYbllg17v3bvD8Ys3w4H615lxUzfqVMjVK8MvbZFDZsWrydGf3nojfoGb30bc4fu8i8Ed9h8jQxfvW7aa7Gsw8Xtx45hKLg6WfGw0ficrro2L8tLbo14Zm3OmZbL1aNzONKWA6xH6la62IGFNyAULK3ibhG3iZfO3WXy8X4Z6exe90BdHodj/dq5S76kS6XO5RyJyH7z2JNUDU3dDqFS6euUKpycfpOfIknX2vL6E6TuHY+DIfNyd8rd2M0GdAbdGpc3eZgxfS1/LXiH4bMfpWAQn6UqpK8Kjd5mghupMaz67SuQZ3WqnbM+WMXCQuNoGbLqhiMeqb2+QKHzQFYmdRjJnE3E3DYnTiiE5ja5wsWnX5wsWzhOxYZ1RtcUQjPnnz860D2bzpKsfKFKV+rDMA9dXHSyAYSfwGZ1JwCA9iPg+n+5IKl6wbYDoEhGKErdv82auQo+dqpnz10Qa0mtdqxW+2E7DtDsYpFufjvZUoEF+PxXq3SPK7TgMfZs/4gOp2Ch485xaq4aNlCfHlgCjvX7OGTVz7HanFiS7Th5edFQqwFp93Jyb1nCTlwntioOKb8MZaSwcUZv/pdfvv6DyrWK4fRbGBSj5m0ebklDdrVZuvSHUzpMxtFp6NA8UBm756Uwp471ZFv71uaPEZy5uB59EY9ZaplrYJUSknoiUt4+XlSoHgQwhCMKLQDKSVCCLyA5k83ytKcGg8IY3OwHUAt5Zegv7+G0tJ5HRnREXCq/wUuRhiqZYOhGjlFvnbqXv6euJKyS3R6HYFFA5j593AS4xMxe5lThA5O7TvDd+OXEVg0gO4jutLl9fZY4628PLZbqgIkvUFPqduLd4TAYXe4nwJAzSu/cvqa+3Xdx2oQ3KA8swbNY/vPu7BbHfy9ajezdkxkxcxf3U8GEZcjOXcklLfnDXCHX95dNISIS5F88eYCPLzNvLtoSKprnd5/LpuX/IWUku4juvLymJThHOmKBts/qnbJbZ3lpZR8/Px0/vl1H9IleWveANq81CLpsrTQSmaR0gGJvwMSzO3uTZ0yEwivPqALQjpOg6E+2PchqY+4185D1i1qq7uklnHSsjpTTl06Lqpt8wy1tNV9LiNfO/WiZQvz+qw+fP/RcoqWK8zQL15DCIGHd8puQ5Y4C8Nbj8MSa0Fn0LHp++04HU50eoX4mATeXZjaiZauWpJuwzuxfNpaCpYIonytMuxcu9e9mWowG1I0mnA4HLzRZCSXTl11O39FUTh/NJSE2ORu7PZEO4XLFKJqk2C3Fvst5/pE38cANay07utNhJ64yOM9H6Vk5WL8Pv9P9w1s2bQ1KZy6dMUiIzqoQlvSCf4zEWa11V3klRvsXLPXLS2wcMxPtHmpBXabHUtcorvjUmawJap7Fb6B3tRsWfWB3xSktCFjxoJtt9q2LgebSMibQ8GalMJqWY0IfDAKh0II8OgKtv3IG72QQgfooMAv97Zpqi+P2vcPwAOhT7s3wO1I+0nkjedwZ0QHrXigcsAaWSNfO3VQHeEtZ5geN8Nj3Kl5TrvTXXLvsMG+DYdSjXe5XGxe8jee3h4sDPmcoKIB2G12Vs5aR/jFSGo9Wo3yNcu4C4kObj7K6M6TU8bwhVpsVLNVNSa9PCt5bqeLq2euZVj9+tMnq/hhwgqsCVbWzdvE/H9n4hvkQ3REjBou8fWkT5WhFC1fmBELXsfXZ7+qZSLjAZCWH91O3cvP0x3OUXQKhUoV4N/dIYxoOx6bxc4jTzdi1JI37+osXS4Xb7ccQ+iJy0gp6TasMz0/fC7FmKiwaGwWG4VLZ4/Il4z/Hiy/AFZI+BYMtcCcub6s2Y51C5CUHWXb7g5dPSikZTWQqO5nCw/1hnIPre+EsT7S72OwrAVTY/B46u7nTtyQ1MRaAgawbgbNqeca/hO7XVHXb7L/j8PE3IhN8/PCpQtSsESgqpuiE/gV9MVgMmDyNKWZJvjNyMXMGDCXbz9YwsC6I7BarBiMBp4b3oXBM/vwSNdGKSpD//fanBQOXW/QUa1pMN8cm06BYoEpwjsul2REm/HMfWeR+73EBCuXTl1JUmCEA5uOpKgODT1xmSl/fki9x2tR57EaREfGcvHkFfZtOMysQfNUtcEkGVnwSNG818Pbg4/Xvkel+uWp36427/8wlC/e/BZLbCJOh5OtS3ew/w9V1Eq64pC2Q0hXHP/uDuGdNuP4uPv/iLp+kxtXozh3JBRLXCKJ8VbWz/8zxXe2YdEWepQZSJ8qQ/ns9a8z88+WIdK6VXUmt5pISMCVWovmoaGvAhgAPegrPfgnBkNN3FrrUoKhUobDM0Lx6IQS+BWKV59M2a2KtN1qJamHTKzuNR4e+X6lfuHEJd5oPBKEGlefe3BqqsKb0wfOEXH5BtIlMZj0tOvViqCigXj6edL25Rap5ty5Zq/bSSfGJ3L1bFiam5NSSo7vPOXOfAF1Ndzt7U60fvERVs5aR3x0Ak061mPjd9vcY+w2B6s/X8+AqT25fPoqQxqPxJ5op0CJIGbvmcxjPVpwfFcIIDGYDFSsWxafAG/6TnqJk7tPq803UPPtIy7fUPVLAr5CWn4EfRWEV98UdtZ+tDqzd092v7bEpcwK2vXrPuq2LoiM6Ao4sCUaGNG2IpZYKzq9jqiwaMb+PBy9QY/Nasdg1BNcv1yKOb55/wd3aGrdvD/oM+EFvPwy7jaVHq74JRA3+bYblRl0RcCc9VZ+2YUInI+M/xZwIbweWP/15PN5PK1q1Nh3I8ydEYbMd+C673ObH0P6jgPbFjA9jjDljg5eGip5wqkf2nqMK6ev0bhT/VTa5nfjz8XbSYizgFSrNv9euZuuQ55IMSb8YqQ7BGG3Oti6bCddX3+Ctq+0SLMJdZPO9QkPjcBhd2D2MlO0XNpKfjMGfMWfi7fjcrowe6kl+tWaBfPzzF/56dPVCJ0ACd4BXhjMeuyJDvexrqRw0A8f/6zKBUt1E/XvVbtp1+tRipQpxOWQqzTuVA+fAG+WTVvDwrE/IYTAYDKo8gNC0HlQO1Z9/hvlapamZosZmfrOOg9ux2eDv0a6JDq9QqnKJdTHcxkHOIiLNuOwqitkp8PJ5dPXeKPJKJxOJ4qiUPvR6qk2cwMK+RN1LRopJXqjHoP5Ppo3W9cnp/UJb/AZjfDo+MA2JzODUHxV2eGHdT4hEF4vAC88tHPejuLZFTy75si5NTIm1zv1377ZxOyh3wIwf9QSFpyahZdv5tuJlapcArOHicQEK4pOoURw6p36um1qEFgkgEjXDRLjrVw/H86CMT9ht9p54f2nOXPoPMv/t5ZCpQrw4sin6TvxRcrVKE3klRs81qMFJo/UyowA6+dvwuVMzr5ZFbWQJz1eTM6Vd6ifJUQnMHXzh7zf/mN1lSygdPVS7N1wiD8Xb3dLD0gJAYX9AajVqhq1WiVnKayYkZxB47A7+XDFcC4cv8SMgfNwOZwIReHdha/T/JnGd/3OOvZry9Uz19j+8z/UbVOTJ199DOy/oYYXHAQUFNR/vCQHNl/H5ZK0fbkFq2evd5//xrWbqTajxywfxpTes4m7Gc/gmX0wmu7DAZtagO0gasaGRJia56hD19DITeR6p77xu63u+LFOr3D6wDlqtcx8Hm3rFx9h0+LtHNh0hAIlgqhUr1yqMXqjns6D2rF34yGObD1OYrwVa4KVI3/9S8uz13i75RhVbtZsIPJKFD3HdafWo9UoUCww1Vznjoby4dNTiA6PcWejABQsGYSiU/D0MRN3MyHFMcUqFqFqk2C+2DeFb0ctRm8y0KB9bRZ9+JO7elUIqFSvHBXrpr0hVbpqCW6GReOwOzGaDXzaczYJsZakAiaVrct2ZsqpCyF4adQzlKhUHP+CvupTjK4DOM9D4p8IcxvGruzP6f3n8PL3wjfIm9Wz1wNg9DBQpXHq+G6x8kWYvu2ju547MwjPPqAURjrOqi3vdAXufpDGXZGOc8ioQeCKBO83UbxezGmTNO4BIe+sbMnqBELogL3AZSllx4zG1q9fX+7duzdL8y8at5SlU9ZgTbDi4W1mYchn7tVqZgjZf5a3WozGmmBDZ9DR9uWWDPt6YIoxE16cwY7Ve3DanUgpMXkacVgdyU5Z4M6I8SvoS0KsGs7p/fHzPDusc4q5BtR9hzMHz6d4T1EEL3/4HD0+6MbJPacZ0Xa8qpWehFeAF0/0eZTNi/+mQt2y2G12TuwMwWa1I10yRf47gG+QDyMXD6Ve21ru92JuxPL1uz8QHRFDtWaV+f6jZW5Zglv0+/Rlnh2e0t60cDqc9K32FhGXIxFC0Hlwe16b3CPDY04fOMfPM36haLnCPP/eU/e3Es+lSPsJZMw4QIfwG4/Q5x/JYQBX5Atg34/6aGhCFNyE0P23moTkVoQQ+6SU9TMzNjtW6kOBE4BvNsyVih6juxFYJIDQfy/xRJ/WWXLooOqAi6SSdpfDmWY7u4N/HsFmSZIFMOgYMK0nCz74kaiwaPcYs7cZl9NFTGSsWy534ZifqNokmGVT11CsQmF6juvuDkHcjtFspGrS6jW4QQWeG9GFBR/86P7cnmhj+bRfAIj8NSrFsQazAUWnpFhxx0TG8vHz01kZucD9nm+gD2/PUzXgL5y4xKIPf0oxj96go3m39Ffpl05dYcHYn/D09qDjgLZEXI50X8u2pTvv6tQr1CmbZj5/fkJG9VFXsQjkjVcRhTbntEnZi0yqUnW/Tv27rJH7ua+URiFECaADcP85aumgKAod+7dl0PTelK1R+u4H3EGNFlWo3jQYvVGPh7cHAYX92LP+QIoxjTrUw+xlwmg2ULxCEZp2aYDdnuxEDSYDb8/rzycbR+PlnxzP15v0vNNmHH+v2s3qz9fzxZsLGDrnNcxeJhSdQp3W1anzWA36Tn6JGi2rMPGlmXT0eok96w7wyFMN1Ywcoy5VZyRQQyB6g47gBuUpUDx1mCetRha3KF2lBB+vfZ8GT9TB5GFE0Sk883Yn7FY7PcoN4kmPF1n44VL3eJfLxVstRrNt6U42LtrC7Dfm4+HtgaJTMHoYqdGyCp/0+pxni7zKJz0/+0/K7UrpAtet/rESXBE5as+DQPiOURtPowPPFxD6tFseauRu7iv8IoRYDkwCfIDhaYVfhBD9gH4ApUqVqnfhwoV7Pt+9IqXkyLbjvP/kBGwWOyZPI6OWvEWTTurTjNPpZPOSv4mPTqBNj+aM6zaNw1uP43Q4EYpg7PJh1H60Om80HcWV09dwOJwpFjS3KF+7DOVqlubApiNUqFOGIbNfY+bAeezbcBCzlxm7zY7NYgcB5WqU5n/bxmP2NNEloCfWO8TFDCY9DZ+sy9vzBnBoy1E+7j5DDcMkFS29t2gILZ+9eyqZlBKnw4neoN6ADm0+ipRg8jDy5cGplKhYlIRYC08H9XY7a58AL748MIVf5m7Ev7AfRpOBL4ctiM3yzwAAHgNJREFUwppgxeRpYvDM3nct6MqPuGKmQsJC9YX3IBTvgRkfkAeR0gnYEcJ817EaD4+shF/ueaUuhOgIhEkp92U0Tkr5lZSyvpSyfsGC2VNJmFWEEFw8ecVdWGFNsLF/0xH35zqdjjY9WtBlcHu8/LwIPXHJ7eD0eh1VGlfij++3c+18OA572g7dYNTjV8CHP77fRsTlG+z6ZT8D6rzD4W3HcTpcJMTctmkp4fyxUBZPXIFOr6Npp9T/Vnarg1N7zuDp48HMgV/jcrnQGXTUa1uTX+N/yJRDv3XttzTjpUumEAeTLnW17+njQf12tdydkzoNbEehUgXpM+FFnn6jA9YEGy6n+n24nE7ioxNSnee/gOI7HFHgF0SBdfnSoQMIodMceh7nfmLqzYDOQognUcvLfIUQ30spMw6+5hC3tEgMRj2KXu0lmh7PvNWRhWN/QlEUqjapREBhf7WcXkm72k7RK5SrU4Zr58NTtKeLuxmP0axuGCo6gd6od8epXU7JpZNX6F9bTT0sWaU4F09cTjGv0+ki7ma86kSlull79tCFe5a9featjhzZfgKX00XVZsGUDC7u/mzcqhEc2nIcs5fJHf+/RdueLVn75QbCQsMpWLJAuuqW/wWEPushQA2Nh8l9Z78ACCFakU745XbuJfslOzl/7CL7NhwiuGEFqjfLuLT59MFzxN9MoHrzyuh0OpxOJzMHzmPnmr1Uql8OnwBvwi9FIpH8uysEu9WBwWTAbrODVFfIpauXoNETdfn1qz9IiFU3bJ12J3qTHoNRT4P2dfh75T84HWpxkhDC3UBa0SlM+HUk9drWZHjrDwnZdxYpJc+83ZE6rWuwc80earaoRtMuDdw2O51Oln66mhO7QujQrw2NOtRLcU19qr7JxX+TbxxzD07Fv5AvsVHxlKpcPMMScZfLRXRELH4FfLJFS/1meDTREbGUDC6mabNraNyFrIRf/lNO/UGwfcU/TOn9uTt9sHGnepStUYrVn6/HYXcSVMSfnh89z6xB89xpjLVaVWPsz8P59oMlrJu3CafDidnbTL8pL3Nk2wl8g7zpOe45/vn1AMd3naJlt8Ykxlvx8vPE6GHkzUdGu1UVOw5oy9Av+gEkVZUudce+P9s5IcXm8lNBvYiLine/fqxHc7Yv34VQFOq2qcG4lSMydOzS+hcy+j1Aj/D/H8KY/tNORuz5/SDjnp4CQlCtaTCT1o/SHLuGRgY8lJj67Ugpt9zNoed14m7Gc/XsdW7dBI/+/S871+6lapNKeHiZ8fTxwORp4umhHVCEQmK8FZvFxo1rNwkLjUgq2wezl4lW3ZviE+DNSx90o1iFIghF0OjJOnR4rQ0jfxjK67P6smP1XmYM+Iq1X/zOqI6TKFK2ENUfqcLJ3afVp4Ekfv3qD+Jj1Bh3yP5z7kItRafuI9xOx/5t3T8reoWjf/2LLdGONcHK/o2HuXLmGukhpUTeHAyuMHBdQd58Pd2xqnTAVRIT0u4stXDMT1gtNqwJVo7vPMm5I6F3+fY1sop0xeGK+xpX3NdIV+o03vyClInIxM1I+/GcNiXXkOsrSnMDB/48wujOnyClpE7r6lRuWJGfPl2FEIIy1Uvy1ZFpHN9xipKVi1OiYlFCT1zGYNRjtdgQiqBkcDFm7ZzI1mU7KFu9lLuqM6hoAPOPz0hTpvXItuPJDlpROH3gPKWrlqTOYzUQCGTSbq10SeaPWszrs/rS9pUWbF22A4HAYDRQu3V1XC4X25fvIj46gRfefxpLXCK/frURo8mIb5APEZduJGe9BHpn8C24QCbfTFTp1dRY4hMZ0ngk186FYTQbmLZlHKWrlkixEi9cugBnDp7DYXciXRK/ApnXbNfIHDKqL9iPqT9b/0AE/XiXI/IeUtqQkc+A8wpIJ9J3DIpnt7sfmM/RnHommD9qidvBHtpyjJN7zrhVGs8cPI890e5OjwTo0K8NIfvPsmP1HoqULUTZGqUoXqEoZap1T3P+tEIeLbs3Y8vSHapwkyKo2VJtqVeiUjHe+/4NPu35mTtXfcOCLdRrU4tty3eiUxTsNgd2mx2dXsdng7/mj++3IaVk1ee/cf1COA6bE4fNwqV/r1C/fW0iLkXSd+KLGTbEEEKH9BkFsRMABXzHpzlu55q9XD8fhjVBlVroX2sYPoE+TN38IWWrlwJg6Jx+OB1Orp4N4+Wxz1KgeFCac2UX0hmGjPsShB7hPQChpM77z3fYD6O2qAPsh3DFz4fEP8HcFuH5Sv7oauU4Dc7Laq8AgITvQHPqmlO/RXx0PIe3naB4xaKUqlw8xWdBxQLQ6RWcDhcul6RszVIc3X4Ch82JydOEb4HkYtqo6zcZ/9w0QvaexW53cHr/Od5oMpIfLnyJ2TNt4a+0aNCuNv/bOp4zB89Tr23NFHLBrV94hLOHzrNs2lpcThdSQsyNOE7tO4s9KW1SuiSRV6L4a+U/7hvQxZNX0OmTV8xOl4uP17yXaZsUr5eQnt0AgRBpqyz636GiKaVaAfvV8EVMWv8BoMocfLhiRKbPe7/IGy+DMxQQSNseRIGVD+3cOYaxEdj2qz/rS0PcTLVi1H4EdMXB3CZn7csOdEVve2ECrbcqoDl1QHXor9Z4m4QYC06Hk7HLh6dojjF0Tj+sCTaunQvj5Q+fpXGHenw3fhnR4TGpdE5mvzGfEztDUlRd2ix2Ii5FEh9j4ci249RsWZVK9e6uG1KpXvl0x3Ue3J6Ni7YSGxWHp48HUdejaN+3NYvGLkXRCYqWLUzxCkWo2aIqu37Zh9PhJLCoP30mvsi0PnOQUvLWV/0z/R25XC4URUGIjG9MdVpX5/l3u/LrvD+IvBKFy+lC0SmYvDJ/Q8tOpHSpQmS3igscp3PEjoeNCJgLljWA2lya+NlJn9jB+fALAB8EQgmAwEXIuK9BVxLhk79lKjJLtmS/ZJbsyH756dNVLJ26hqLlCvPhinfSVErMDGEXI/i01+fcvB5Ny+easnzaWlWoC6hQtxzd3upIi2cbYzBmTphKSomUkvfbT3B3CgJVw71QqQIMnz+Idx//CKfDhU6nMG3LOIIbVCA+Op5vR//IzfAYXhr1jDtEERsVx4QXZnD+aChdhzzB8++mbjPmsDt485EPOHtY3WgsUqYg7fs8RrGKhWnQrjYmDxM2q521c34n7mY8nQY8TmCRAJxJhURpacXfyYUTlxjRZjxR12/SZXB7Bs3oneaj+6VTVxj3zFRuhsfw6icv0a7no/ww4WeWTV1DkTKFGL/mXQqVzBk1RVfUILDtUF+Y2qH4f5IjduQU0hGKjHwK9camIIJWaRIAeYyHntKYWe7XqZ8/dpHXG76H1WJD0Sk88lRDRi8ddk9zvdViNMd3nMTlkmqBkBDYkuYVilqkVK1ZZSYnhQwy4uDmo4zp+gk2i50uQ9qz/ps/sSXaqVS/PB1ebUOzpxuy+vP1LBz7Ey6nC51eodf453n+vacY1XES+/84jNPuwMvPi5+ufIXRbGTmoHmsn/8nDpsDk6dJvQnUT71qb2/snkIHxuxtplGHunyw5K0U4zYt3s66eX9QrVkwPT/snqbeTFq81+4j9v9xWJUW8DTy2c6JaWrwDG02ihO7Tqmd1UwGFofOwb9g1hqaPCikdKo9RIUOjC0Q4r+XPildN8B+CgzB6gpXI0/xsFUaHxqJ8YmIpKpOl9PlXlnfCzeuRrmldSUw/OuBbFu2gx1r9uKyu3Danez/4zAul4v13/7JP7/so23PR3mka8NUc017dY47T33N5+v58fJXSClTOLWaLaqoGTGJNvQGPdWbVwHg3JELbvkAW6KN6IhYTB5Gzh8Ndb+vKIK4NNQlAao0CebEzlPucE9iXCJ/r9idYszJPaeZ3m8u1gQrJ/ecwcffO1MSvACKXqeKuUsJEneHqDtJiLWkkCCwWx1pjssJhNCB+b+nVXM7QglUG0tr5Hvy1JIluEEFGnesh06vwyfAi1fvIgebEa9O7oHRbMBoNtCwfR2MZgNDZr9GlUYV0Rv16A16ytUozdKpa5j+2lx2rN7LuKen8NttDZWllJw+eC6FNABCYDQb3A7dEp/IoS3HKFS6IBN/G0WP0d2Y+NsoqjerTEKshSad6mP0MOLhY6ZUleK822483Qr35dTeMwBJSo0VqP1o9VTXIKUk7EJ4Cr11nUFH2Rop+6VeOXPdLXFgTbBy4cSlTH9Pr8/qQ9FyhTGaDTzzdkdKV03di1Ud19fdsq/jgLap+sBqaGg8HPJU+OXQlmN8O3oJ/gV9GfplfwIK+RFzI5bp/eZy5cw1Xh7zLI881SjT80VHxHB85ykmvDAdnV6HEILp2z/i75W7cTlddH3jCfrXGk7E5eQu9QVLBrH4wpcATHxpJjvX7MHpcGJI2iwdNL037Xo/CkB8TAL9ag0jLioel9PFpN9GUf0RdYUeceUGA+u8g82qygoMmtWHHz5eztUz11PY2Gng4wz5/NU049iW+ES6+vd0O3W9Uc9Tb6jxd9+g5PTE2Kg4+tUcRkKsBZfTxdQ/PyS4QYVMf0+ZxWF3YEu04+njcffBGhoamSZfhl/ibsYzquMkrAlW9AYd0/p+wcdr32fW4K/ZtXYvDruTyT1m8e3JWZleJfoV8OXI9hNukS2j2cDR7SfoMTo517VohSIpnHpgEX+cTicJMRa2Ld/p7ojk7e/F0qspZeUPbT5G7I04d2hm1efr3U5929KdxMckYLc6UHQKYaHhxN/R5s7kaaJKo0okxicy4cWZhOw9w+O9WtFnwosIIfDwMlOtWTAh+88Baqpjv09fSXWdPgHefHN8BiH7zlK8UtF73ly+G3qD3q0IqaGhkTPkmfBLdEQMt4K2DruTK0kr2uvnwlQ5XEAogujwmCzNW6FOWXf+uFAUyiRln9xi7LJhFCwVBELVOA/Zf47nir6mtqy71e1OERQuk7rtV9FyhdyNp00eRspUS844KFymoHuz0mAyUKRMIfpPewWDyaCmJJYvzLPDOrF44s909n2F3ev2c+PaTVZ99hsH/jzqnmfy76MZNm8AI38YytA5r6V7nZ4+HtRqlXZfVQ0NjfxDnnHqxcoXoXrzKmqHIg8jPUY/A8Ar47pj8jBi8jRRuWFFytYsdZeZUvLo883oP+0VytYsjXS5mPzKLM4dTdYi8Svgy+LzXzJ104foDXpcThexkXGM6zbVrQOjN+gYs+ztVHOXrlaSx3o0J6hYAA2frIuXn5e761LTLg3oMbobleqX59nhnWnRrTE3w6LpOqQ9cw9OY1HI50RcueG+ed2K2wshUuiZG00GWnVvRpNO9TVRLA0NjbwVU3c6nZw5eB6/Ar4ULp3ccCMqLJro8BhKVSl+T47txrUoepQd7FY+DG5Ygc93TUox5uTeMwxrNdYtF3AnRcoWYvg3g6jVKrmq7XbVRACdXkFv1PPaJz3oMvgJ97iIy5EMbfYBEZciQUCBEkF8d2Y20/vPZeOCLTiTYuY6g45K9coxdfO4+2rs7HQ4WTfvDyKvRvFE38dSfJcaGhq5j4eu0viw0Ol0VKpXPpUTCijkR5lqJe95pXp79giQosnzLYLrl6f7iC7oDXfkdyftX147F8boLpO5/SZ5cPOxFDcBp8OFNcHGxu+2pZjincfGExYagcslcTklN67eJC4qnl7jn6dEcDF0eh1tXmnB4tAvmfn3hPty6ACz3/yWucMXsWTSSgY3fC9dNUUNDY28R55y6g+KAsWD6D6iC4pOwTvAize/7JfmuJfHPEv5OmXdr41mQwoHa7PYcbmSbxCPv9ISk6cJRZ/ya/bwTm4XJqVMJXlbumoJfAK9CSoawNdHp7Pe9iPvLhhCYGH/+xZiCr8UyYYFW7BabLicLqwWG2Gh+a+JsobGfxXNqSfRc1x31iUuZkXEt1RuWNH9fui/l/l5+i8c/esEAH0nvojJ04TRbKB+u9q8/llfNa/dqKfPxBdSlN63fK4pn24czWMvtUhRwXlsx0nCQsMBuBkeg5efmgKo6BSqNg1m+rbxbud9/UI4J/eecZf23wvRETF8//Fylk9fy7hnpqZ4evAN9KZI2dSbvBoaGnkTLf/sNu7UQrl8+iqDG7yLw+5Ep1cYvXQYjZ6sy09XviIuKp5CpQoghKDFs02QLom3v1eqOas2CaZK40qE7D/D+SMXAbVJdcj+cxQqVZD5Ixe7Nz51Bh2vTnoRD2/VyW9duoNPe89G0SkENyjPpxvHZDnEJKXkzUc+4Oq5MHQ6JUXVp6JT+GTj6PsO52hoaOQetJV6Bhz9619AjbFbE2zsXLMHAC9fTwqXLuheTXv6eODpm37BjRCC7iO6YvI0oTfqQUJwA1XHxW61ux2tTq/DbktekX/30XJsFhuJcYn8+89pLp26muVrsMQlcuXsdZx2J7ZEO0JRw0YmTyOPPt+MEhWLZXlODQ2N3Iu2Us+Ayo0quh2uydNIvba1Uo05uPkoY7t+ii3RRr+pr/DUkCfTnKvNSy3wL+jH+aOhNOlc390Youf47hzaeozIK1E0aFeL2o8mZ8+UqFiEy6euJOXhS/wL+qY5d0Z4eJspX6sMoScuIYTgkaca0fvj57HEJVKqiqbUp6GR38hTKY05wcm9Z9j1y14qN6hAow71Un3eo+wgrl9Q4+N6o54VEfPd4ZPMIqXEYXekkvmNuRHL7Dfmc/1COD3HdadO6xpZmvfy6atMeGEG0eExNOpQl2pNK9Pq+aaZktzV0NDIPeRLmYCcIrh+efwL+pJe0sntnYQEalVqVhFCpKnb7hvow/vfD031vsvlIup6NP4FfTOU0J3wgioNAPD7t5t5dXIPzaFraORztJj6Xfhu/DJ6VxlK78pD+f7j5ak+f3fREAIK++PhbWbonH5Zall3L1jiLAysO4KXyw/mpTIDCb8UCair/dB/LxMWGs7hbcfpV3sYp5M0YUAV27JabA/UNg0NjZxHC79kwIUTl3i1WnKzCb1Rz2+JSx66HVJKDvx5FGuClZth0Xwx9FsSE6woOoVOg9qhKII96w8SlhQGcrlkqgIqT18PVt9c9NBt19DQuH+08Es2MW/Edylee/l5Zuo4p9PJ5iV/kxBj4bEezfHyzdxx6THnrQX89s2fCAHFKhRxV7HqDTp2rtlD5OUbKbof3YnOoKNa08r3ZYOGhkbe4J7DL0KIkkKIzUKI40KIY0KI1MHfPI7BZHB3WhKKYMjnfTN13PR+c5k58CvmvrOIoc0+SFFlejtqbPxmiibVabFh4RYS4xOxxCVy7kgobXu2IrBoAI071iP2RlwKhy4UgX9BXwxmA3qjntLVStL6xUd473utKa+Gxn+B+1mpO4BhUsr9QggfYJ8QYqOU8ng22ZbjDJzei8shV7l2Loyn3uxAy2ebZuq4Xb/sIzFerdq8HHKVuKj4FE0rQG1w8Vbz0YSeuIRvkA+f7ZqUrg582Zql+fefEFwOJ4FF/BnyWV/e+PxVAGa9/jUbF25BuiR6o57KjSry1tz+CAEGs5GAQrmjT6iGhsbD4Z6dupTyKnA16edYIcQJoDiQb5x6oZIF+OrQtCwfV/vRauxcuw+Xw0nBEkF4B6SuNP3r53+4HHIVu9VB1PVoVs1ax2ufvpzmfONXjeD7j5ZjiUvkpVHPcDM8hm/e+57EBCu9xj9Psy4NsCXaafhEnUw3lNbQ0MifZEtMXQhRBqgD/JPGZ/2AfgClSmVN6zy3cGrfGT7oNJn4m/H0nfQSTw/tkOa4E/+EMOmlmditdtr1fpQCxQPp8FqbNEv7vfyT4+w6gw7vwNSO/xY+Ad4M/F8v9+shTUYSsu8MLqfk0JbjLL06776FvjQ0NPIH9539IoTwBrYCE6SUKzIam9eyX27Rr/Ywzh1WG2cYTHqWXJyLX4HU1Z0vlOpPxCW19Z3J08iamO/S1WqRUjLnrQVs+elvqjWrzHvfDcHkkbl0yK4BPd16MYpOYXX0ogeeSqmhoZFzPLTsFyGEAfgZ+OFuDj0vc6vrkPoC0rsR3oqjAzhsTvW4dLaihRAMmtGbQTN6Z9mezoPasXLWOoQQ1G1bU3PoGhoabu4n+0UA3wAnpJT/yz6Tch9vzxuIb5APeoOOXh8/j3/BtDcfh8x+FUWnfqUSyb6Nh7PVjt8XbGZwo/eIj0lgwrpRjF/9LmOWDcvWc2hoaORt7jn8IoR4BNgOHAFu5dSNlFKuS++YvBp+uYWUMsPYtdVipYvfK+4Uw6BiAfx46atsOfepfWd4u+UYrAk2jB5Gur/TmVc+7J4tc2toaORuHkr4RUr5F+4ymP8Gd9uMFIqCotO5nbohG3XKw0Ij3E8BNouNy6ev3eUIDQ2N/yKa9ks2YjQZeHfR6/gEelOgRCAjF7+ZbXPXa1uTwML+ePp4YPY2p5uBo6Gh8d9G037J5disdvQGHYqiYEu0cfbwBYqULZRuXF9DQyP/kZXwi7ZSz8XMHb6QTt49eDqoN//uDsFoNlK5YUXNoWtoaKSL5tRzKVfPXWfNF7/jcrqIj07gs9e/yWmTNDQ08gCaU8+lGIx6dys9IdS+ohoaGhp3Q3PquZQCxYPoN6UHXn6eFK9UjGFfD8xpkzQ0NPIA2kZpHubq2esYTHp3E2sNDY38ibZR+h/gize/5dUab/NKhSGsmv1bTpujoaGRS9Cceh7Elmhj9ez12Cw27FY7i8YuzWmTNDQ0cgmaU8+D6Aw6zF6qiJcQgoDC/jlskYaGRm5Bc+p5EJ1Ox6T1H1CpfnmqN6/CuFUjctokDQ2NXILWeDqPUrVxJWbvnpzTZmhoaOQytJW6hoaGRj5Cc+oaGhoa+QjNqWtoaGjkIzSnrqGhoZGP0Jy6hoaGRj5Cc+oaGhoa+QjNqWtoaGjkIx6qoJcQIhy48NBOeP8UACJy2oj7QLM/Z9Hsz1nyuv2QfA2lpZQFM3PAQ3XqeQ0hxN7MKqPlRjT7cxbN/pwlr9sP93YNWvhFQ0NDIx+hOXUNDQ2NfITm1DPmq5w24D7R7M9ZNPtzlrxuP9zDNWgxdQ0NDY18hLZS19DQ0MhHaE5dQ0NDIx+hOfV0EELohBAHhBC/5LQt94IQwl8IsVwI8a8Q4oQQoklO25QVhBBvCSGOCSGOCiGWCCHMOW1TRggh5gshwoQQR297L1AIsVEIEZL0/4CctDEj0rF/StLvz2EhxEohRK5tsZWW/bd9NkwIIYUQBXLCtsyQnv1CiCFJ/wbHhBCfZmYuzamnz1DgRE4bcR/MBNZLKSsDtchD1yKEKA68AdSXUlYHdMDzOWvVXVkAtL/jvfeATVLKisCmpNe5lQWktn8jUF1KWRM4Bbz/sI3KAgtIbT9CiJLA40DowzYoiyzgDvuFEI8CXYBaUspqwNTMTKQ59TQQQpQAOgBf57Qt94IQwg9oAXwDIKW0SSlv5qxVWUYPeAgh9IAncCWH7ckQKeU24MYdb3cBFib9vBDo+lCNygJp2S+l3CCldCS93AWUeOiGZZJ0vn+A6cAIIFdnhKRj/0BgspTSmjQmLDNzaU49bWag/iK4ctqQe6QsEA58mxRC+loI4ZXTRmUWKeVl1FVJKHAViJZSbshZq+6JwlLKq0k/XwMK56Qx90kf4LecNiIrCCG6AJellIdy2pZ7pBLQXAjxjxBiqxCiQWYO0pz6HQghOgJhUsp9OW3LfaAH6gJzpJR1gHhy96N/CpJiz11Qb07FAC8hRI+cter+kGrucK5eLaaHEGIU4AB+yGlbMosQwhMYCYzJaVvuAz0QCDQG3gGWCiHE3Q7SnHpqmgGdhRDngR+B1kKI73PWpCxzCbgkpfwn6fVyVCefV2gDnJNShksp7cAKoGkO23QvXBdCFAVI+n+mHp9zE0KIXkBH4CWZt4payqMuCg4l/S2XAPYLIYrkqFVZ4xKwQqrsRo0c3HWzV3PqdyClfF9KWUJKWQZ1c+5PKWWeWiVKKa8BF4UQwUlvPQYcz0GTskoo0FgI4Zm0MnmMPLTRextrgJ5JP/cEVuegLVlGCNEeNQzZWUqZkNP2ZAUp5REpZSEpZZmkv+VLQN2kv428wirgUQAhRCXASCZUJzWnnn8ZAvwghDgM1AYm5rA9mSbpCWM5sB84gvp7mqtLvoUQS4CdQLAQ4pIQoi8wGWgrhAhBffqYnJM2ZkQ69n8O+AAbhRAHhRBf5qiRGZCO/XmGdOyfD5RLSnP8EeiZmaclTSZAQ0NDIx+hrdQ1NDQ08hGaU9fQ0NDIR2hOXUNDQyMfoTl1DQ0NjXyE5tQ1NDQ08hGaU9fQ0NDIR2hOXUNDQyMf8X+qu+KfkAb+oAAAAABJRU5ErkJggg==\n",
  186. "text/plain": [
  187. "<Figure size 432x288 with 1 Axes>"
  188. ]
  189. },
  190. "metadata": {
  191. "needs_background": "light"
  192. },
  193. "output_type": "display_data"
  194. },
  195. {
  196. "data": {
  197. "image/png": "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\n",
  198. "text/plain": [
  199. "<Figure size 432x288 with 1 Axes>"
  200. ]
  201. },
  202. "metadata": {
  203. "needs_background": "light"
  204. },
  205. "output_type": "display_data"
  206. }
  207. ],
  208. "source": [
  209. "%matplotlib inline\n",
  210. "\n",
  211. "import numpy as np\n",
  212. "import matplotlib.pyplot as plt\n",
  213. "\n",
  214. "# data generation\n",
  215. "np.random.seed(314)\n",
  216. "data_size_1 = 300\n",
  217. "x1_1 = np.random.normal(loc=5.0, scale=1.0, size=data_size_1)\n",
  218. "x2_1 = np.random.normal(loc=4.0, scale=1.0, size=data_size_1)\n",
  219. "y_1 = [0 for _ in range(data_size_1)]\n",
  220. "\n",
  221. "data_size_2 = 400\n",
  222. "x1_2 = np.random.normal(loc=10.0, scale=2.0, size=data_size_2)\n",
  223. "x2_2 = np.random.normal(loc=8.0, scale=2.0, size=data_size_2)\n",
  224. "y_2 = [1 for _ in range(data_size_2)]\n",
  225. "\n",
  226. "x1 = np.concatenate((x1_1, x1_2), axis=0)\n",
  227. "x2 = np.concatenate((x2_1, x2_2), axis=0)\n",
  228. "x = np.hstack((x1.reshape(-1,1), x2.reshape(-1,1)))\n",
  229. "y = np.concatenate((y_1, y_2), axis=0)\n",
  230. "\n",
  231. "data_size_all = data_size_1+data_size_2\n",
  232. "shuffled_index = np.random.permutation(data_size_all)\n",
  233. "x = x[shuffled_index]\n",
  234. "y = y[shuffled_index]\n",
  235. "\n",
  236. "split_index = int(data_size_all*0.7)\n",
  237. "x_train = x[:split_index]\n",
  238. "y_train = y[:split_index]\n",
  239. "x_test = x[split_index:]\n",
  240. "y_test = y[split_index:]\n",
  241. "\n",
  242. "# visualize data\n",
  243. "plt.scatter(x_train[:,0], x_train[:,1], c=y_train, marker='.')\n",
  244. "plt.title(\"train data\")\n",
  245. "plt.show()\n",
  246. "plt.scatter(x_test[:,0], x_test[:,1], c=y_test, marker='.')\n",
  247. "plt.title(\"test data\")\n",
  248. "plt.show()\n",
  249. "\n"
  250. ]
  251. },
  252. {
  253. "cell_type": "code",
  254. "execution_count": 8,
  255. "metadata": {},
  256. "outputs": [
  257. {
  258. "name": "stdout",
  259. "output_type": "stream",
  260. "text": [
  261. "train accuracy: 0.986\n",
  262. "test accuracy: 0.957\n"
  263. ]
  264. }
  265. ],
  266. "source": [
  267. "# data preprocessing\n",
  268. "x_train = (x_train - np.min(x_train, axis=0)) / (np.max(x_train, axis=0) - np.min(x_train, axis=0))\n",
  269. "x_test = (x_test - np.min(x_test, axis=0)) / (np.max(x_test, axis=0) - np.min(x_test, axis=0))\n",
  270. "\n",
  271. "# knn classifier\n",
  272. "clf = KNN(k=3)\n",
  273. "clf.fit(x_train, y_train)\n",
  274. "\n",
  275. "print('train accuracy: {:.3}'.format(clf.score()))\n",
  276. "\n",
  277. "y_test_pred = clf.predict(x_test)\n",
  278. "print('test accuracy: {:.3}'.format(clf.score(y_test, y_test_pred)))"
  279. ]
  280. },
  281. {
  282. "cell_type": "markdown",
  283. "metadata": {},
  284. "source": [
  285. "## sklearn program"
  286. ]
  287. },
  288. {
  289. "cell_type": "code",
  290. "execution_count": 9,
  291. "metadata": {},
  292. "outputs": [
  293. {
  294. "name": "stdout",
  295. "output_type": "stream",
  296. "text": [
  297. "Feature dimensions: (1797, 64)\n",
  298. "Label dimensions: (1797,)\n"
  299. ]
  300. }
  301. ],
  302. "source": [
  303. "% matplotlib inline\n",
  304. "\n",
  305. "import matplotlib.pyplot as plt\n",
  306. "from sklearn import datasets, neighbors, linear_model\n",
  307. "\n",
  308. "# load data\n",
  309. "digits = datasets.load_digits()\n",
  310. "X_digits = digits.data\n",
  311. "y_digits = digits.target\n",
  312. "\n",
  313. "print(\"Feature dimensions: \", X_digits.shape)\n",
  314. "print(\"Label dimensions: \", y_digits.shape)\n"
  315. ]
  316. },
  317. {
  318. "cell_type": "code",
  319. "execution_count": 10,
  320. "metadata": {},
  321. "outputs": [
  322. {
  323. "data": {
  324. "image/png": "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\n",
  325. "text/plain": [
  326. "<Figure size 432x288 with 10 Axes>"
  327. ]
  328. },
  329. "metadata": {
  330. "needs_background": "light"
  331. },
  332. "output_type": "display_data"
  333. }
  334. ],
  335. "source": [
  336. "# plot sample images\n",
  337. "nplot = 10\n",
  338. "fig, axes = plt.subplots(nrows=1, ncols=nplot)\n",
  339. "\n",
  340. "for i in range(nplot):\n",
  341. " img = X_digits[i].reshape(8, 8)\n",
  342. " axes[i].imshow(img)\n",
  343. " axes[i].set_title(y_digits[i])\n"
  344. ]
  345. },
  346. {
  347. "cell_type": "code",
  348. "execution_count": 11,
  349. "metadata": {},
  350. "outputs": [],
  351. "source": [
  352. "# split train / test data\n",
  353. "n_samples = len(X_digits)\n",
  354. "n_train = int(0.4 * n_samples)\n",
  355. "\n",
  356. "X_train = X_digits[:n_train]\n",
  357. "y_train = y_digits[:n_train]\n",
  358. "X_test = X_digits[n_train:]\n",
  359. "y_test = y_digits[n_train:]\n"
  360. ]
  361. },
  362. {
  363. "cell_type": "code",
  364. "execution_count": 12,
  365. "metadata": {},
  366. "outputs": [
  367. {
  368. "name": "stdout",
  369. "output_type": "stream",
  370. "text": [
  371. "KNN score: 0.953661\n",
  372. "LogisticRegression score: 0.908248\n"
  373. ]
  374. }
  375. ],
  376. "source": [
  377. "# do KNN classification\n",
  378. "knn = neighbors.KNeighborsClassifier()\n",
  379. "logistic = linear_model.LogisticRegression()\n",
  380. "\n",
  381. "print('KNN score: %f' % knn.fit(X_train, y_train).score(X_test, y_test))\n",
  382. "print('LogisticRegression score: %f' % logistic.fit(X_train, y_train).score(X_test, y_test))"
  383. ]
  384. },
  385. {
  386. "cell_type": "markdown",
  387. "metadata": {},
  388. "source": [
  389. "## References\n",
  390. "* [Digits Classification Exercise](http://scikit-learn.org/stable/auto_examples/exercises/plot_digits_classification_exercise.html)\n",
  391. "* [knn算法的原理与实现](https://zhuanlan.zhihu.com/p/36549000)"
  392. ]
  393. }
  394. ],
  395. "metadata": {
  396. "kernelspec": {
  397. "display_name": "Python 3",
  398. "language": "python",
  399. "name": "python3"
  400. },
  401. "language_info": {
  402. "codemirror_mode": {
  403. "name": "ipython",
  404. "version": 3
  405. },
  406. "file_extension": ".py",
  407. "mimetype": "text/x-python",
  408. "name": "python",
  409. "nbconvert_exporter": "python",
  410. "pygments_lexer": "ipython3",
  411. "version": "3.5.2"
  412. }
  413. },
  414. "nbformat": 4,
  415. "nbformat_minor": 2
  416. }

机器学习越来越多应用到飞行器、机器人等领域,其目的是利用计算机实现类似人类的智能,从而实现装备的智能化与无人化。本课程旨在引导学生掌握机器学习的基本知识、典型方法与技术,通过具体的应用案例激发学生对该学科的兴趣,鼓励学生能够从人工智能的角度来分析、解决飞行器、机器人所面临的问题和挑战。本课程主要内容包括Python编程基础,机器学习模型,无监督学习、监督学习、深度学习基础知识与实现,并学习如何利用机器学习解决实际问题,从而全面提升自我的《综合能力》。