└── digital_filter.ipynb /digital_filter.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 62, 6 | "metadata": {}, 7 | "outputs": [], 8 | "source": [ 9 | "import torch\n", 10 | "import torch.nn\n", 11 | "import math\n", 12 | "import matplotlib.pyplot as plt\n", 13 | "from IPython.display import clear_output" 14 | ] 15 | }, 16 | { 17 | "cell_type": "markdown", 18 | "metadata": {}, 19 | "source": [ 20 | "# Digital filter design using ML" 21 | ] 22 | }, 23 | { 24 | "cell_type": "code", 25 | "execution_count": 63, 26 | "metadata": {}, 27 | "outputs": [], 28 | "source": [ 29 | "max_freq = 2000\n", 30 | "cutoff_low = 300\n", 31 | "cutoff_high = 700\n", 32 | "filter_order = 45" 33 | ] 34 | }, 35 | { 36 | "cell_type": "code", 37 | "execution_count": 64, 38 | "metadata": {}, 39 | "outputs": [], 40 | "source": [ 41 | "t = torch.linspace(0, 2*torch.pi, max_freq*2)[None, None, ...]\n", 42 | "\n", 43 | "hamming_window = 0.53836 + 0.46164*torch.cos(torch.linspace(-torch.pi, torch.pi, max_freq*2))[None,None,:]" 44 | ] 45 | }, 46 | { 47 | "cell_type": "code", 48 | "execution_count": 76, 49 | "metadata": {}, 50 | "outputs": [], 51 | "source": [ 52 | "def get_seq(t, freq, phase): \n", 53 | " return torch.sin(freq*(t + phase))\n", 54 | "\n", 55 | "def build_batch(t, batch_size):\n", 56 | " ii=[]\n", 57 | " oo=[]\n", 58 | " for i in range(batch_size):\n", 59 | " freq = torch.rand(1)*max_freq\n", 60 | " phase = torch.rand(1)*torch.pi\n", 61 | " s = get_seq(t, freq, phase)\n", 62 | " ii.append(s)\n", 63 | " if freq>cutoff_low and freq" 123 | ] 124 | }, 125 | "metadata": {}, 126 | "output_type": "display_data" 127 | }, 128 | { 129 | "name": "stdout", 130 | "output_type": "stream", 131 | "text": [ 132 | "Minumium err: 73.59374237060547\n" 133 | ] 134 | }, 135 | { 136 | "data": { 137 | "text/plain": [ 138 | "" 139 | ] 140 | }, 141 | "execution_count": 91, 142 | "metadata": {}, 143 | "output_type": "execute_result" 144 | } 145 | ], 146 | "source": [ 147 | "for epoch in range(40):\n", 148 | " total=0\n", 149 | " for i in range(10):\n", 150 | " ib,ob = build_batch(t, batch_size) \n", 151 | " y_pred = model(ib) \n", 152 | " loss = criterion(y_pred, ob)\n", 153 | " total += loss.detach()/10.0\n", 154 | "\n", 155 | " optimizer.zero_grad()\n", 156 | " loss.backward()\n", 157 | " optimizer.step()\n", 158 | "\n", 159 | " if total0:\n", 172 | " ax2.plot(total_list[1:])\n", 173 | " ax2.set(xlabel='iterations', ylabel='err', title='Error') \n", 174 | " ax2.grid()\n", 175 | " plt.show() \n", 176 | "\n", 177 | " scheduler.step()\n", 178 | " print(f'Minumium err: {min_err}')\n", 179 | "\n", 180 | "model.load_state_dict(best_state)" 181 | ] 182 | }, 183 | { 184 | "cell_type": "markdown", 185 | "metadata": {}, 186 | "source": [ 187 | "# filter response" 188 | ] 189 | }, 190 | { 191 | "cell_type": "code", 192 | "execution_count": 97, 193 | "metadata": {}, 194 | "outputs": [ 195 | { 196 | "data": { 197 | "image/png": "iVBORw0KGgoAAAANSUhEUgAAAj4AAAHHCAYAAAC/R1LgAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAACnTElEQVR4nOydd3gc1fm2n9mq3rss2ZZ7r9gYbGOwcaMmtAQCNjgmgAnhg9CTQAiEGggtkIRgyC+EJPQEjBs2YMAY917lIhf1Lq209Xx/zJzZ2aots9pd7XtfFxfy7OzRe3ZWO8++VWCMMRAEQRAEQSQAmmgbQBAEQRAE0VuQ8CEIgiAIImEg4UMQBEEQRMJAwocgCIIgiISBhA9BEARBEAkDCR+CIAiCIBIGEj4EQRAEQSQMJHwIgiAIgkgYSPgQBEEQBJEwkPAhCMIvx48fhyAIePPNN+VjjzzyCARBiJ5RBEEQIULChyASnDfffBOCIHj97/777w94nd///vf46KOPImcoQRCECuiibQBBELHBo48+ioEDB7ocGz16NPr374+uri7o9Xq/z//973+PK6+8EpdffnkErSQIgggPEj4EQQAAFixYgMmTJ3t9LCkpqZetEenu7obBYIBGE5hz2mazweFwwGAwRNgygiDiFQp1EQThF285Pu4IgoDOzk689dZbcphs8eLF8uOnT5/GTTfdhMLCQhiNRowaNQpvvPGGyxpffPEFBEHAv/71L/zqV79CaWkpUlJS0NbW5teuZ599Fn/84x8xaNAgGI1G7Nu3DwBw4MABXHnllcjJyUFSUhImT56M//73vy5rWK1W/Pa3v8WQIUOQlJSE3NxcTJ8+HWvWrJHPWbx4MdLS0nD06FHMmzcPqampKCkpwaOPPgrGmMt6nZ2duPvuu1FWVgaj0Yhhw4bh2Wef9ThPEATcfvvt+OijjzB69Gj5NVm5cqXLee3t7bjzzjsxYMAAGI1GFBQU4MILL8S2bdtcztu0aRPmz5+PzMxMpKSk4LzzzsM333zj83oRRCJDHh+CIAAAra2taGhocDmWl5cX0HP/7//+Dz/96U8xZcoU3HzzzQCAQYMGAQBqa2tx9tlnyzf7/Px8fPbZZ1iyZAna2tpw5513uqz1u9/9DgaDAb/85S9hNpt79N4sX74c3d3duPnmm2E0GpGTk4O9e/fi3HPPRWlpKe6//36kpqbiP//5Dy6//HK8//77+MEPfgBATNJ+4oknZNvb2tqwZcsWbNu2DRdeeKH8O+x2O+bPn4+zzz4bTz/9NFauXImHH34YNpsNjz76KACAMYZLL70U69evx5IlSzB+/HisWrUK99xzD06fPo3nn3/exe6vv/4aH3zwAW677Takp6fjxRdfxBVXXIGqqirk5uYCAG655Ra89957uP322zFy5Eg0Njbi66+/xv79+zFx4kQAwLp167BgwQJMmjQJDz/8MDQaDZYvX44LLrgAGzZswJQpUwK6hgSRMDCCIBKa5cuXMwBe/2OMsWPHjjEAbPny5fJzHn74Yeb+8ZGamsoWLVrksf6SJUtYcXExa2hocDn+ox/9iGVmZjKTycQYY2z9+vUMAKuoqJCP+YPblZGRwerq6lwemz17NhszZgzr7u6WjzkcDnbOOeewIUOGyMfGjRvHLrroIr+/Z9GiRQwA+/nPf+6y1kUXXcQMBgOrr69njDH20UcfMQDssccec3n+lVdeyQRBYEeOHJGPAWAGg8Hl2M6dOxkA9tJLL8nHMjMz2bJly3za5nA42JAhQ9i8efOYw+GQj5tMJjZw4EB24YUX+t0bQSQiFOoiCAIA8Morr2DNmjUu/4ULYwzvv/8+LrnkEjDG0NDQIP83b948tLa2eoRtFi1ahOTk5IB/xxVXXIH8/Hz5301NTVi3bh2uvvpqtLe3y7+vsbER8+bNw+HDh3H69GkAQFZWFvbu3YvDhw/3+Htuv/12+WfuvbJYLFi7di0AYMWKFdBqtbjjjjtcnnf33XeDMYbPPvvM5ficOXNkrxgAjB07FhkZGTh69Kh8LCsrC5s2bcKZM2e82rRjxw4cPnwY1157LRobG+W9dnZ2Yvbs2fjqq6/gcDh63BtBJBIU6iIIAgAwZcoUn8nNoVJfX4+Wlhb85S9/wV/+8hev59TV1bn8272yrCfczz9y5AgYY/j1r3+NX//61z5/Z2lpKR599FFcdtllGDp0KEaPHo358+fj+uuvx9ixY13O12g0qKiocDk2dOhQAGKuEQCcOHECJSUlSE9PdzlvxIgR8uNKysvLPezKzs5Gc3Oz/O+nn34aixYtQllZGSZNmoSFCxfihhtukG3hgm3RokVe9wmIIczs7GyfjxNEokHChyCIiMG9DT/5yU983pzdRUYw3h5v5/Pf+ctf/hLz5s3z+pzBgwcDAGbOnInKykp8/PHHWL16NV5//XU8//zzeO211/DTn/40KDuCRavVej3OFInQV199NWbMmIEPP/wQq1evxjPPPIOnnnoKH3zwARYsWCDv9ZlnnsH48eO9rpeWlqa67QQRz5DwIQhCFbx1cs7Pz0d6ejrsdjvmzJnTK3Zwb4herw/od+bk5ODGG2/EjTfeiI6ODsycOROPPPKIi/BxOBw4evSo7OUBgEOHDgEABgwYAADo378/1q5di/b2dhevz4EDB+THQ6G4uBi33XYbbrvtNtTV1WHixIl4/PHHsWDBAjlUlpGR0WuvL0HEO5TjQxCEKqSmpqKlpcXlmFarxRVXXIH3338fe/bs8XhOfX296nYUFBRg1qxZ+POf/4zq6mq/v7OxsdHlsbS0NAwePBhms9njeS+//LL8M2MML7/8MvR6PWbPng0AWLhwIex2u8t5APD8889DEAQsWLAgqH3Y7Xa0trZ67K2kpES2b9KkSRg0aBCeffZZdHR0+N0rQRAi5PEhCEIVJk2ahLVr1+K5555DSUkJBg4ciKlTp+LJJ5/E+vXrMXXqVCxduhQjR45EU1MTtm3bhrVr16KpqUl1W1555RVMnz4dY8aMwdKlS1FRUYHa2lps3LgRp06dws6dOwEAI0eOxKxZszBp0iTk5ORgy5Ytcvm4kqSkJKxcuRKLFi3C1KlT8dlnn+HTTz/Fgw8+KCdWX3LJJTj//PPx0EMP4fjx4xg3bhxWr16Njz/+GHfeeadLInMgtLe3o1+/frjyyisxbtw4pKWlYe3atdi8eTP+8Ic/ABBzj15//XUsWLAAo0aNwo033ojS0lKcPn0a69evR0ZGBv73v/+p8IoSRB8imiVlBEFEH17OvnnzZq+PB1rOfuDAATZz5kyWnJzMALiUttfW1rJly5axsrIyptfrWVFREZs9ezb7y1/+Ip/Dy9nffffdgOzmdj3zzDNeH6+srGQ33HADKyoqYnq9npWWlrKLL76Yvffee/I5jz32GJsyZQrLyspiycnJbPjw4ezxxx9nFotFPmfRokUsNTWVVVZWsrlz57KUlBRWWFjIHn74YWa3211+Z3t7O/t//+//sZKSEqbX69mQIUPYM88841JqzphYzu6tTL1///7y62Y2m9k999zDxo0bx9LT01lqaiobN24c+9Of/uTxvO3bt7Mf/vCHLDc3lxmNRta/f3929dVXs88//zyg15IgEgmBMbeWogRBEITM4sWL8d5773kNJREEEX9Qjg9BEARBEAkDCR+CIAiCIBIGEj4EQRAEQSQMlONDEARBEETCQB4fgiAIgiASBhI+BEEQBEEkDNTA0A2Hw4EzZ84gPT3dawt+giAIgiBiD8YY2tvbUVJSAo3Gt1+HhI8bZ86cQVlZWbTNIAiCIAgiBE6ePIl+/fr5fJyEjxt8uODJkyeRkZGh2rpWqxWrV6/G3LlzodfrVVs3Vghmf52dQEmJ+POZM0Bqai8YqALxdg2DfZ3jbX/B0tf3B/T9Pfb1/QF9f4+R3F9bWxvKyspchgR7g4SPGzy8lZGRobrwSUlJQUZGRp99Mwe6P63W+XNGRnwJn3i6hsG+zvG2v2Dp6/sD+v4e+/r+gL6/x97YX09pKpTcTBAEQRBEwkDChyAIgiCIhIGED0EQBEEQCQMJH4IgCIIgEgYSPgRBEARBJAwkfAiCIAiCSBhI+BAEQRAEkTCQ8CEIgiAIImEg4UMQBEEQRMJAwocgCIIgiISBhA9BEARBEAkDCR+CIAiCIBIGGlJK9ClMFhs6zDZoBAE5KQZoNP6H1REEQRCJBQkfIq6x2BxYtbcGq/fVYsvxJlS3dsuP6bUCynNSMGVgLmYOycP5wwuQpNf6Wa33aO+24qtDDdhW1YxDte1o7LBAEIDsFANGlmRgWkUuZgzJg05LTlmCIAg16ZPC55VXXsEzzzyDmpoajBs3Di+99BKmTJkSbbMIFXE4GN7ZXIWX1x1xETsAIEhOHqudobK+E5X1nXjn+yqkJ+lw2fgS/HR6BQbkpUbBamDL8Sb87etj+PxAHSw2h9dzvj7SgL98dRT56Ubcet4gXHd2OYy62BBsBEEQ8U6fEz7//ve/cdddd+G1117D1KlT8cc//hHz5s3DwYMHUVBQEG3zCBU42WTC//v3Dmw50QwAyE834oqJ/XD+sHwMK0pHVooBNrsDte1m7D/Tho1HG/HZ7mqcae3GP76rwj83VWHBmGLcccEQDCtK7xWbd51qwR9WH8KXh+rlYxX5qTh3UB7GlGYiP8MIAKhvM2P7yRas3luD+nYzHv1kH/61uQov/GgCRhRn9IqtBEEQfZk+J3yee+45LF26FDfeeCMA4LXXXsOnn36KN954A/fff3+UrSPC5ftjTbjlH1vR1GlBqkGLu+cOw7VTyz1CWDqtBqVZySjNSsackYV4aOEIbDzaiL99fQzrDtTh013V+Gx3Na6Y2A//78KhKMlKjoi9+6vb8NyaQ1izr1a0SyPgqsll+MnZ5RhZnAFB8MxBuvqsMjx62Si8t/UU/rD6IA7VduDyV77BCz+agPmjiyJiJ0EQRKLQp4SPxWLB1q1b8cADD8jHNBoN5syZg40bN3p9jtlshtlslv/d1tYGALBarbBararZxtdSc81YIpj9iafo5fMDfUk2HGnAz/6xHVY7w+iSDLz843EozUoG4IDV6j1spGRK/0xM6T8eB2va8fIXR7Fyby3e3XoKH+88gxvOLsfPZgxEVorej92B77GyvhMvravEp3tqAAAaAbhsfAlun1WB8pwUAIDNZvO7xpUTinH+kBzc+8EefHW4Ebe+vRVP/3A0Lh9f0uPvF+0Egnmd6T0a//T1Pfb1/QF9f4+R3F+gawqMMab6b48SZ86cQWlpKb799ltMmzZNPn7vvffiyy+/xKZNmzye88gjj+C3v/2tx/F//vOfSElJiai9iUp3txY/+tHFAIB//esTJCXZe3zOkTbgtf1aWB0CRmc7sGiIA4Yw016OtwP/q9LiSJvodUnSMpxXzDCr2IGUEL8S1HUBa05rsLleAIO47oRcBxaUOVAYolPJzoB3j2qwsU4DDRh+OtyBUdk9/9mG8joTBEHEKyaTCddeey1aW1uRkeE7NSDhhY83j09ZWRkaGhr8vnDBYrVasWbNGlx44YXQ6317FeKVYPbX2QlkZ4vnNDdbkdpDnvHJZhOueG0Tmk1WzBqah1d+PB4GnTrVTowxfHm4Ac+uPoyDtR0AgDSjDjecXY4fndUPxZlJ8rm+9sgYw94z7fjbN8exYk8NHNJf1Jzh+bjjgsEYURx+HpHDwXDvB3vw8c5qJOs1eP+WszGkIM3vc4J9nek9Gv/09T329f0BfX+PkdxfW1sb8vLyehQ+fSrUlZeXB61Wi9raWpfjtbW1KCrynhthNBphNBo9juv1+oi86SK1bqwQyP6UD4vn+z6322rHsnd2odlkxdh+mXjt+smql6RfOKoEs0cUY+XeGryw9jAO1rbjT18exatfHcWMIfmYPbwAUytyUJphkG3usgOHatrxbWUjVuyuxoGadnm9OSMKcPsFQzC+LEtVO5+9ejwaOi345kgj7vzPLny8bDqS/bi9gnmdXZ9H79F4p6/vsa/vD+j7e4zE/gJdr08JH4PBgEmTJuHzzz/H5ZdfDgBwOBz4/PPPcfvtt0fXOCIknl55EPur25CXZsBrP5kUsT48Go2AhWOKMX9UEVbtrcFbG4/ju6NN+OpQPb5SVGIlabV4cOvn6LS4ho0MOg0WjC7CzTMrMKokMyI26rUa/PGaCVj44gYcqu3A71fsx+8uHx2R30UQBNFX6VPCBwDuuusuLFq0CJMnT8aUKVPwxz/+EZ2dnXKVFxE/bDraiOXfHgMAPHPVuIhVXinRaAQsGFOMBWOKcbyhE5/ursa3lQ3YebIVHWYbuu0CYBdFT16aEVMGZmP64HxcNKYYmX4So9UiP92I568ej5/8bRP+sekEfjCxFBPLsyP+ewmCIPoKfU74XHPNNaivr8dvfvMb1NTUYPz48Vi5ciUKCwujbRoRBBabA/d/sBuMAddMLsP5w3q/B9OAvFQsO38wlp0/GIwx1LWa8N+Va3H+rFkozk5FqjE6fz7Th+Thykn98N7WU3jwg93438+nQ08dngmCIAKiT35a3n777Thx4gTMZjM2bdqEqVOnRtskIkiWf3MMxxo6kZdmxEMXj4i2ORAEATmpBhQkA/1zU6ImejgPLhyB7BQ9DtS04z9bTkbVFoIgiHiiTwofIr6pa+/GS+uOAADumz8MGUl9N8EvVHJSDfjF7CEAgBfWHkaXhUrVCYIgAoGEDxFz/Gl9JTrMNozrl4krJvaLtjkxy4+nlqNfdjLq2s1yLhRBEAThHxI+RExR19aNf35fBQC4d/5waDSeIx0IEaNOi/83ZygA4PUNx8jrQxAEEQAkfIiY4rUvj8Jic2By/2ycMyg32ubEPJeNL0G/7GQ0dVrw3rZT0TaHIAgi5iHhQ8QMDR1mvL3pBADgjtlDvA7wJFzRaTVYMn0gAOBvG47C7ugzjdgJgiAiAgkfImb456YqmG0OjOuXiRlD8qJtTtxw9eQyZCbrcbzRhLX7a3t+AkEQRAJDwoeICax2h+ztufHcgeTtCYJUow4/nlIOAHhHyo8iCIIgvEPCh4gJVu+tRW2bGXlpRiwcUxxtc+KOH51VBgD48lA9Trd0RdkagiCI2IWEDxETvPXtcQDAtVPKVJu8nkgMyEvFtIpcMAb8ZzM1NCQIgvAF3WGIqFNZ34HvjzdBqxFw7dT+0TYnbvnxVDHc9e6Wk3BQkjNBEIRXSPgQUefj7acBADOG5KEoMynK1sQv80YVIj1JhzOt3dha1RxtcwiCIGISEj5EVGGM4cMdovD5wYTSKFsT3xh1WswbVQQA+N/OM1G2hiAIIjYh4UNElW1VzTjZ1IU0ow5zRxZF25y45+KxYmL4it3VsNkdUbaGIAgi9iDhQ0SVj3eInon5o4uQbNBG2Zr459zBechO0aOhw4LvjzVF2xyCIIiYg4QPEVXW7BMb7lGYSx30Wg3mjxa9Pqv21UTZGoIgiNiDhA8RVVpMVmSl6DF1YE60TekzzB1VCAD48mB9lC0hCIKIPUj4EFFn9vBC6LT0VlSLaRW5SNZrUdtmjrYpBEEQMQfdbYioM0/yUBDqkKTXYjrNOiMIgvAKCR8iqiTpNZgxJD/aZvQ55owoiLYJBEEQMQkJHyKqnDs4j6q5IsD5w0j4EARBeIOEDxFVKCQTGQoykjC8KD3aZhAEQcQcJHyIXqe92yr/PH0QCZ9IcXYFVcoRBEG4Q8KH6HW+P+psrNcvJyWKlvRtzq7IjbYJBEEQMQcJH6LX+aayIdomJASTBjg9PqeaTFG0hCAIInYg4UP0Ot+S8OkV0ow6+edNNL6CIAgCAAkfopepae3GicauaJuRcGw62hhtEwiCIGICEj5Er/L9cfI8RIPtp5qjbQJBEERMQMKH6FU2U8glKpxq6kZde3e0zSAIgog6JHyIXmUzeXyixrYTLdE2gSAIIuqQ8CF6jVaTFQdr26NtRsKyrYrCXQRBECR8iF5jy4kmMAYMzKPePdFg2wkSPgRBECR8iF5j83HxxjuxPDvKliQmu063wmJzRNsMgiCIqELCh+g1dp1qAQCML8+Kqh2JSHaqHhabA3vPtEbbFIIgiKhCwofoFRwOht2nxJvuqJLMKFuTeIwuFV/zPadJ+BAEkdiQ8CF6heONnWg322DUaTC4IC3a5iQcI4vFSe17z7RF2RKCIIjoQsKH6BV2S56GkSUZ0GvpbdfbjCwSPT4kfAiCSHToDkT0CrukMNe4flnRNSRBGVGcAQA4WNMOq50SnAmCSFxI+BC9Ak9sHlNK+T3RoF9OMtKTdLDYHThc2xFtcwiCIKIGCR8i4tgdDHtOiyGWsf1I+EQDQRAwqkT0+lBlF0EQiQwJHyLiHGvoQJfVjhSDFhX5lNgcLXg1HeX5EASRyJDwISLO/mpxTMXQwnRoNUKUrUlcyONDEARBwofoBQ7WiMJneFF6lC1JbEZKwudATTsYY1G2hiAIIjqQ8CEizgFJ+Awj4RNVBualQiMA7d021LWbo20OQRBEVCDhQ0Scg7ViTgkJn+hi1GkxIDcVAKiyiyCIhIWEDxFROs02nGzqAgAML8qIsjUE75p9uK49ypYQBEFEBxI+REQ5VCveYPPTjchJNUTZGmJooeh1O1xHHh+CIBITEj5ERKHE5thiSKHo8TlCoS6CIBIUEj5EROGeBe5pIKILD3UdqqPKLoIgEhMSPkREOdbQCQCoyE+NsiUEAAzKT4MgAC0mKxo7LdE2hyAIotch4UNEFC58BuaR8IkFkvRalGWnAACOUJ4PQRAJCAkfImJY7Q5UNZkAABV5NKoiVhggidCqRlOULSEIguh9SPgQEaOqyQS7gyFZr0VhhjHa5hAS/XNEj8/xxs4oW0IQBNH7kPAhIsaxemeYSxBoRles0D9XFD4nyONDEEQCQsKHiBiU2Byb8O7N5PEhCCIRIeFDRIyjDWLybAUlNscUA/KcHh8qaScIItEg4UNEjKM81EUen5iiX3YKBAHoMNuopJ0giISDhA8RMXhFV/9cEj6xRJJei5LMZADACQp3EQSRYJDwISKCxeZATVs3AMh9Y4jYgRKcCYJIVEj4EBGhurULjAFGnQZ5aTScNNbgXrjjDeTxIQgisSDhQ0SE081dAIDS7GQqZY9BynLEUNeplq4oW0IQBNG7kPAhIsIpSfj0ozBXTFKaJQqfMyR8CIJIMEj4EBHhVLOYO9IvOznKlhDeKJGEz2kSPgRBJBgkfIiIwEMoJHxiE+7xqWntht1BvXwIgkgcSPgQEYGHuvgNlogtCtKN0GoEWO0MDR3maJtDEATRa5DwISLCacrxiWl0Wg2KMpIAULiLIIjEgoQPoTo2u7KHD3l8YpWSLFH4UIIzQRCJBAkfQnWqpbwRg1aDvDRjtM0hfFBClV0EQSQgJHwI1aluFb09xVlJ0Gioh0+swvOveFiSIAgiEYgL4XP8+HEsWbIEAwcORHJyMgYNGoSHH34YFovrgMVdu3ZhxowZSEpKQllZGZ5++ukoWZzY1EphrsL0pChbQvijmHt8JKFKEASRCOiibUAgHDhwAA6HA3/+858xePBg7NmzB0uXLkVnZyeeffZZAEBbWxvmzp2LOXPm4LXXXsPu3btx0003ISsrCzfffHOUd5BY1LWLVUIFGRTmimUK08Xrw68XQRBEIhAXwmf+/PmYP3++/O+KigocPHgQr776qix83n77bVgsFrzxxhswGAwYNWoUduzYgeeee46ETy9Txz0+GeTxiWUKpOtT30YeH4IgEoe4ED7eaG1tRU5OjvzvjRs3YubMmTAYnAMx582bh6eeegrNzc3Izs72uo7ZbIbZ7PzG29bWBgCwWq2wWq2q2cvXUnPNWEK5v2opWTY3Ved1v+IhvXx+vLwk8XYNe3qdc5K1AID6DjMsFgtsNpt8bl8k3q5fKPT1Pfb1/QF9f4+R3F+ga8al8Dly5Aheeukl2dsDADU1NRg4cKDLeYWFhfJjvoTPE088gd/+9rcex1evXo2UFPV70KxZs0b1NWOJNWvWYP9xDQANqisPYEXbfo9zuru1AC4GAKxatQpJSfbeNTJM4uUa9vQ62xwAoIPVzvDufz9DmqiR4mZ/odLX9wf0/T329f0BfX+PkdifyWQK6LyoCp/7778fTz31lN9z9u/fj+HDh8v/Pn36NObPn4+rrroKS5cuDduGBx54AHfddZf877a2NpSVlWHu3LnIyMgIe32O1WrFmjVrcOGFF0Kv16u2bqyg3N8Lh78H0Im5M6bi7Iocj3M7O50/z5s3D6mpvWdnOMTbNQzkdX5s93o0m6wYN3UGKnKT4mp/wRJv1y8U+voe+/r+gL6/x0juj0dseiKqwufuu+/G4sWL/Z5TUVEh/3zmzBmcf/75OOecc/CXv/zF5byioiLU1ta6HOP/Lioq8rm+0WiE0eiZhKvX6yPypovUurGCXq9HvZQsW5yd6nWvykPi69Fb1qlDvFzDQF7nwowkNJusaOqyY5h0QrzsL1T6+v6Avr/Hvr4/oO/vMRL7C3S9qAqf/Px85OfnB3Tu6dOncf7552PSpElYvnw5NBrXSvxp06bhoYcegtVqlTe/Zs0aDBs2zGeYi1Afk8WGdrOYK1JIVV0xT366EQdq2qmyiyCIhCEu+vicPn0as2bNQnl5OZ599lnU19ejpqYGNTU18jnXXnstDAYDlixZgr179+Lf//43XnjhBZcwFhF56tvF3kopBi3SjHGZQpZQFEi9luraqbKLIIjEIC7uTGvWrMGRI0dw5MgR9OvXz+UxxhgAIDMzE6tXr8ayZcswadIk5OXl4Te/+Q2Vsvcyte3OUnZBoK7NsQ7vtVTXRh4fgiASg7gQPosXL+4xFwgAxo4diw0bNkTeIMInDZLHJ59mdMUFBVITw3oKdREEkSDERaiLiB+aTKLwyU0z9HAmEQtQqIsgiESDhA+hKk2dovDJTiXhEw/kSQK1scPSw5kEQRB9AxI+hKo0dYqdM3NJ+MQFOdJ14p46giCIvg4JH0JVmqUbaA4Jn7iAe+Zau6yw2R1RtoYgCCLykPAhfFJZ34GVe2rQ2BF44isPdZHwiQ+ykvUQBIAxUfwQBEH0deKiqovofV5Yexh//PwQGAPSjDr89YbJmDYot8fn8VAXCZ/4QKfVIDNZjxaTFU0mEj4EQfR9yONDePDh9lN4fq0oevLTjegw2/Cz/9sSkOeHQl3xR06KeK2aKc+HIIgEgIQP4UKH2YbffSJOVL9j9hBsuPd8jCjOQFu3DS+tO+L3uYwBzSby+MQbPM+nuZM8PgRB9H1I+BAu/Ov7KjR1WlCRl4qfXzAYSXotHlw4HADw7paT6JTmcHmjyw7YHGInbRI+8UN2ClV2EQSROJDwIWTsDobl3xwHAPx0RgX0WvHtMX1wHgbmpaLTYsdne2p8Pr9DchikGXUw6rSRNpdQiVzy+BAEkUCQ8CFkNh9vwumWLqQn6fDDiaXycUEQcMm4EgDA5/trfT6/U3IGZaXoI2onoS5yqIs8PgRBJAAkfAiZT3adAQDMG1WEJL2rx2b28AIAwFeH6mGxee/3YrKJQ0lJ+MQXOani9Wqmqi6CIBIAEj4EAHHK/aq9ojfn4rHFHo+PKc1EVooenRY79lW3eV2jS/L4ZCSR8IknsqiqiyCIBIKEDwEAOFTbgfp2M5L0Gq/9ejQaARPLswEAW080e12jyy7+n4RPfJGZLF6vtm7fiesch4Phy0P1+HRXNbos9kibRhAEoTrUwJAAAHxzpAEAcNaAHJ+JyZP6Z2PdgTpsq2rGEgz0eJx7fPiNlIgPuFBt6/IvfBhj+Pk72/Hp7moAwJCCNPxz6dnITzdG3EaCIAi1II8PAQD4trIRAHDu4Dyf54ztlwkA2HfGR6jLLub4ZCSTno4n+PXq8NOqAAD+vfkkPt1dDb1WQEaSDofrOnDvezvBGOsNMwmCIFSBhA8Bu4Nh01FR+JzjZyzFsKJ0AMDxxk6vYQ7K8YlPZI9Pt+/kZruD4eX1YgPLe+cNx3u3ngO9VsD6g/X4WvIWEgRBxAMkfAhU1neg3WxDikGLUSWZPs/LTzMiJ9UAxoDDde0ej8vCh0JdcQW/Xt1WB3wU7GHD4Xqcau5CVooe10/rj6GF6bhuan8AwF83HOstUwmCIMKGhA+B3adaAQCjSjKg1Qg+zxMEAcMKRa/PgRpP4WPiyc0U6oor0ozO69XlI1959T5nxR9vdXDTuWKe14bD9ahp7Y6skQRBECpBwofA7tOi8BlTmtXjuRX5qQCAE42dHo91SX18KNQVX2g1AtIl8eMtv5kxhvUH6gAAs0cUysfLc1MwqX82GIOc8EwQBBHrkPAhnMKnX0aP5/bPTQEAVDV1eTwml7NTqCvu4NfMm/CpajKhurUbeq2AaRWuOWCXSD2fVpDwIQgiTiDhk+DYHUyu0hpT6ju/h1OeIwkfrx4f8f9Uzh5/pCdJHh+7Z6hzx8kWAMDIkkyPjt4XjiqSz/GXHE0QBBErkPBJcI41dKDLakeKQYuBeWk9nl+eI4a6qppMLscZY1TVFcf48/hsr2oBAEwoy/J4rDQrGQPzUqXKwKYIWkgQBKEOJHwSnCN1HQDEZnT+Eps55VKoq9lkdfmGb7LY4QD18YlXuFj1ltzMPYK8j5M7vAXCN1TWThBEHEDCJ85xOFhYowMq68WQVUV+z94eQKwA4qGsWkUlDx93oNMISNZ77/xMxC5crHrz+BypF8XxUKmizx0+4mTzcfL4EAQR+5DwiWNW7qnBtCc/x4jfrMSNy79HSwhDJiulm9ogqVorEAozxBEFtW1m+Vin1PU3zaiDIPTsOSJiC6fHx/XaNXaY0dQpvq8qfLxHJkgz3A7WtKPbSvO7CIKIbUj4xCnfHGnArW9vlcXH+oP1WPLWFtgdwY0PCNbjAwCFGUkAgJo2p8fHJHmdUgzk7YlHMqTkZpObx4eHQvtlJyPF4D2EWZKZhLw0A2wOhn3V3seZEARBxAokfOIQi82Be9/bBcaAH0woxQe3nYN0ow5bTzTjn99XBbwOYwxHZY9P4MKnIF0UPrUkfPoM6ZLHx+zmsDnaIApjf+8PQRAwtl8WAGCnVAFGEAQRq5DwiUM+2HYKp1u6UJBuxO9/MAYTy7Nx99yhAIDXvqiE1e5j7oAb9R1mtHfboBGc/XkCoShTDHXVKYRPp0V0FaQYSfjEI8mSYHUXPqebxX5NZTnJfp/PE595TyiCIIhYhYRPnMEYw+tfi7ORbp5ZId+wfjSlHLmpBpxu6cJXh+oDWuuoFObql53i0Z/FHzzUpczx4R6fVB/hECK2SZUEq9lNM59uEYVPSZZ/4TOiWGx+eajWc5QJQRBELEHCJ87Ye6YNR+o6YNRpcM1ZZfLxJL0Wl44vAQB8tONMQGvxXjzBeHsAoCBdSm5up1BXX4Hn71jckpu58CntQfjwiq/DtR1B55kRBEH0JiR84oz/7hRFzZwRhXJeBueScaLw+eJgHWwBhLt4GKNftv+bmjvZKQYAQIvJtY8PQMInXuGeOg+PT3Ngwqc8JwVGnQZmmwMn3ZpbEgRBxBIkfHqJvWfa0O2lR0qwrN0vTsm+SJqRpGRcvyxkJuvR3m3DrgByLQL9Nu9OdqoofJoV5fO8nN1X5Q8R2/DcLGVLKLuDyZV7pT2IY61GwOACMQGawl0EQcQyJHx6AYeD4bZ/7sCvtmjx5sYTIa9zpqULR+s7oRGAcwfneTyu1QhyF92vD/fcRVf+Nh+kxycrRfQ0tXZZ5bCGM8eHPD7xiOzxUQifxg4z7A4GjeCs5PPHMCncRcKHIIhYhoRPL1DXbkaSXgsrE/D4ioP4eMfpkNbhYmas5NnxxvQhoiDaWNnY43pOj09wOT5ZyaLHhzGgrUsMd1GoK77h100Z6mroED16OamGgMaZ8AaHxxoo1EUQROxCwqcXKMpMwso7zsHsEvGu8sh/98qhoWD47qgoZqZ78fZwJpSJXXT3nG6Fw0+SqcPBUN0amsfHoNMg3Sh6CHi4y0Tl7HENFz5WhyB78Ro7xaq93FRjQGuU5/IBtp0RsJAgCEIdSPj0EoIg4KJyB/rnpKDZZMU/NwXeaJCz41QLAGDSgGyf5wwpTINRp0G72YYTfpJM69rNsNoZtBoBhemB3diUZKWKHicufDpljw/l+MQjqUbndePeu0bJ45ObZghojf45oufwRCN5fAiCiF1I+PQiWgFYOmMAAOBfm6vAWOBlv61dVrnvzjipS6439FqN3FPFXzO5M5K3pygjCTpt8G8DXtnV3OkW6qIBpXGJUacBj2Z1SfO2GjpEj09eWmDCmLdFqGs3hzU4lyAIIpKQ8OllFo4uQpJeg8r6zqC63O4+JZ5bnpOCnFT/38DHlEpddCUPkTfqpOaDBRnBe3sAICvFtbKLcnziG0EQZG8dD1s2BOnxyUoxyDO/qqiknSCIGIWETy+TnqTDrKEFAID1BwLrsAwAOyURM64sq8dzR5aIHp/D0oBJb9RL3+bzA/w2705WsrOyCyDh0xfgFXmdZh7qCs7jAwD9pTyfE42U50MQRGxCwicKnDcsHwDw1eHAhc/BGrFEeKQUxvJHRZ548+GhMW/Ut0vCJ4T8HgBIk77Zt0vNiSw28WZp1NNbKl7holXO8emUPD49eBiVlEvhLvL4EAQRq1AmahSYOVQUPturmtFqsiIzxXtpuhLeG2VIQc9T1AdKZcWnmk0w2+ww6jy9MPXSuImQhY+UDMur08w2sWLN2+8i4oNkWfiI17RFCmPysGYg8GaYNa3dPZzppLXLiic/24+9Z9owe3ghlp0/KKS8M4IgiEAISfgcO3YMGzZswIkTJ2AymZCfn48JEyZg2rRpSErqudFZolOalYyKvFQcbejEtpPNOH9Ygd/zbXaH7L3hM5H8kZ9mRJpRhw6zDVWNJgzx8hzu8QmkMZ03eMM7PpXdKXzohhWv8EG1/Fq2Sd68jOTAPyaKpAG21W2BCR+b3YHFy7/H9qoWAMCuU62oaevCEz8cG/DvJAiCCIag7lJvv/02pkyZgkGDBuG+++7DRx99hA0bNuD111/H/PnzUVhYiNtuuw0nToTenThRGC/l6uw82dLjuVVNJljsDiTpNQHN1RIEQW4mV+kj3BVuqItP8+6Q8kG6reLNMolCXXFLkiRaufBp7xbztzKSevZIcoozReETqMfnH9+dwPaqFmQk6fD/5gyFIADvfH8yoM7jBEEQoRDwXWrChAl48cUXsXjxYpw4cQLV1dXYunUrvv76a+zbtw9tbW34+OOP4XA4MHnyZLz77ruRtDvuGReE8DlUKyYpDy5IgyaADroAMJDn+TR4T3AOO8fHI9Ql5fhQqCtuMUjCh4tYnr+VnhSExycI4WN3MPx1wzEAwD3zh+MXc4Zg0bQBAIDn1hwM+HcSBEEEQ8DC58knn8SmTZtw2223oayszONxo9GIWbNm4bXXXsOBAwdQUVGhqqF9DVn4nGrtsZ/PsQbRazMov+f8Hg6vrjklzeNSwhhzVnWF7PERb4YdZhscDgarXdyDgUJdcQsPU1psdljtDjnJOTiPj+iRrG3rljtA++Krw/U43dKFrBQ9rprUDwBw2/mDoNcK2FbVgv3VbaFsgyAIwi8B36XmzZsX8KK5ubmYNGlSSAYlCiOK06HTCGjqtKC6h2/HvEKGd8YNhNIs8Zv3mRZP4dNisspCJS/AHi3u8KquTrMNFrtzwBPl+MQv3FtntjnQ0e0cqZIWhMcnL80AjQDYHEwuh/fF6r01AIBLxpbI+UUF6Um4cGQhAOD9raeCsp8gCCIQwr5LMcawbt06fPrpp2hublbDpoTAqNNigBSOOuKn3w4gVmcBQFkQwod/8/YmfJqkap30JF3IoSllqKvb6uzSS8InfuGtCMw2B9qk/J4Ugxb6ICqsdFqNnDDvT9AzxvD5/joAwBxJ6HAuHVcKAFi7vzao7uYEQRCBENRdqqWlBYsWLcKYMWOwdOlStLW1YcaMGZgzZw4uueQSjBgxArt27YqUrX2OwVLoqifhwz0+wQifEqmsuLrF8+bTYhJvalkBlNH7gld1dZjtcjKsBiyomyQRWyiTm0PJ7+HwPB9/wudoQyfq2s0w6jQ4uyLH5bHpQ/Jg0GpwvNGEow3UCJEgCHUJ6i71y1/+Ehs3bsSPfvQj7N69G/Pnz4fdbsfGjRuxadMmjBgxAg899FCkbO1zDJZ68vjrsGx3MJyW8nTKgxI+4s2n3WyTv71zWruk/izJoYW5AFePj1lKhiVnT3zjTG62o03qyJ0eRH4Ph+eNNfgJdfHy9TGlmR5exzSjDlMlMbT+QF3Qv58gCMIfQX2d++yzz/DPf/4T5513HhYvXoyysjKsW7cOU6dOBQA89dRTuPTSSyNiaF+EC59KP8KnurULNgeDXiugMCPwnjspBh2yU/RoNllxpqULGUXOG5gqHh+pnL3LaofJKnoHqJI9vuECxGJzOHv4hODx4XljTVLnZ29srxLD4hPKs7w+fu7gPGw43IAtx5vx0xlBm0AQBOGToG5VtbW1GDp0KACgtLQUSUlJLhVe5eXlqK8PfAxDosOFz5F638LnZJPo7emXnQJtgKXsHC6U+EBSDhc+mcnhCB/nDZHf4MjjE98YXUJdoXt8+BBdf8nN2ySPz8TybK+PT+4vHt9yopnyfAiCUJWgblUOhwNardMtrdVqIQjOm7HyZ6JneK+dpk6LfKNxp7pVFD48dBUMfLike8ihRQpjZAcxisAdo04DnSTEGqUp3nq6/HFNkiK5mfdnSjMG7/HJTZXedz48PhabQx7BMtbH0N3RpZkwaDVo6DDT3C+CIFQl6E+1119/HWlpoqfCZrPhzTffRF5eHgCgvb1dXev6OKlGHbJS9GgxWXG6pQvDizy/XddK3ppgwlwcHnLwED7yDKbQPT6CICBZr0W72SZPaKdQV3xjVOT4dMmduIOv+svloa4O78KnqqkTdgdDqkGLkkzv7+skvRajSzOwraoF26qa5b5UBEEQ4RKU8CkvL8df//pX+d9FRUX4v//7P49ziMApzUoWhU9zF4YXeU5er5VmHoUyU8vp8XG9AakR6gIAo5vwoVBXfGNQ9PHhLQqSDcFfVO7xaez0HuriVYyDCtL8eonHlGZKjQzb8YMJQZtBEAThlaCEz/HjxyNkRuLSLzsZe8+04bSXfjuAc7REYUbwHZbzeHVNu/dQVzBTt73BPQRt5PHpEzg7NzuFT1IIfZ64x6fRh8eHz4/rqRP58GLxiwB1cCYIQk3oVhVlSrPEEnVvoyUAp8cntFCXKHzq3UJdrTzUFabHh+eEOD0+lIQazyiTm50en9CFT7PJ4nVsBa9i5Mn9vhghCZ8DNRRCJwhCPQL2+Lz44osBL3rHHXeEZEwiUipNWz/tS/i0c+ETgsdHugHV+/T4hCt8xJsiFz4hREWIGEKZ3NzFPT4h5PjwpHkHE/PJctNc37uVUhXjoHz/eTtDC9MgCOL7t6HDLAv5QGnrtqKq0YShhek0Q44gCJmAhc/zzz/v8u/6+nqYTCZkZWUBELs6p6SkoKCggIRPEPSThM8pL6Euxpic3BxOjk9jp/ccn3CFD/cQUI5P34D38em22uUJ7aEIH71WIyftN3Z6Ch959lwPCcspBh0G5KbiWEMnDta0I29w4MLni4N1uP2f29FhtqE0KxlvLD4LFbnB/w0RBNH3CPhWdezYMfm/xx9/HOPHj8f+/fvR1NSEpqYm7N+/HxMnTsTvfve7SNrb5yjN8j1Tq63LBos0DiKUKepc2HBhAgAOB5M7OWeG0bkZ8PT4UDl7fKMMdTk9PqGpWWcvH1fR3W21o1kS3iXSPDl/cK/QsSBGV5xsMuHWf2xDh9kGQQBOt3Rh6d+3yCX6BEEkNiF9qv3617/GSy+9hGHDhsnHhg0bhueffx6/+tWvVDMuESiQBE1Tp2c+BA9zZaXoQ/rmzau2lMmqnRYbeD+4UOYwKeE2cSFFHp/4xuAluTk5hPcd4HzvuY9L4fO7UgxaZCT3/P7jXqETjYELn2dWHUSX1Y4pA3Lw/YNzUJqVjKomE97aWBXwGgRB9F1CulVVV1fDZvP89mS321FbWxu2UYlETqoBgiDO5Go2uX475v13clND88ykGXVyt2ce3uo0izc0rUYIe5I6f36HNN5ASx6fuIYLWWVycyiCG3AKH6W3EQCqJc9mUWZSQA1PB+SKyf/HGgJrYljX1o0Vu6sBAL+5ZCTy0424d774BW35tycgOVAJgkhgQrrzzZ49Gz/72c+wbds2+djWrVtx6623Ys6cOaoZlwjotBpZ2HgkIZvC67AsCILHDahDcvenGrRhd9rmN0W+Jgmf+EZuYGhz5viE6vHJkEZdtLkJnzOSxyeQMBcADMgLzuPz8Y4zsDkYJvXPxujSTADAxWNLUJSRhJYuK3Y10ZuUIBKdkITPG2+8gaKiIkyePBlGoxFGoxFTpkxBYWEhXn/9dbVt7PPwJOQ6N+HTLHdYDj0Xhwsf3q05nFEE7vD8D6tdjJ2R8IlvdNIFtNlZWFVdgCLU5cPjU+yjY7M7A3ioq8kEh5fSeHc+PyB6nC8eWywf02oEXDmpHwBgRyO9SQki0Qnp7pefn48VK1bg8OHD2L9/PwBg+PDh8gBTIjjy0404UNPux+MTevWVu8eHC59UFYSP0a25nYZyfOIavRQWtTkYuizhJTf7CnVxj09xVmAen+LMJOi1Aiw2B860dqFfdorPc1u7rNh8XJz6fsHwApfHLhxZiJfXH8GBVnEtfXgFjQRBxDFh3f2GDBmCIUOGqGVLwsIrttyFT7NUhp4dYo4PoPD4uIW60sJMbAYAo9tNkTw+8Y1e67ye/H0SSgNDAHLisrvwqeFDdwP0+Oi0GpRmJeN4owmnm/0Ln42VjbA7GAblp3qUyo8pzURemgENHRZsOdGM84YXBbMdgiD6EAF/nXvyySfR1eW9yZ47mzZtwqeffhqyUYmGT+GjQr8d95BDp0W9UJe7x0crUOfmeEanUK7tUjVWKCMrAGVVl2sRBO8iXhBEQ84iSSTVSF3MfbHjZAsAYMrAHI/HNBoBM4aIw5Q3Hm0K+Hd7o9tqB2P0XieIeCVg4bNv3z6Ul5fjtttuw2effYb6+nr5MZvNhl27duFPf/oTzjnnHFxzzTVIT0+PiMF9EZ683NLl3mjQ4vJ4KLj38umQqrpSDeELHx4a4ZDHJ77RKWKVPJ0mVI+Pr1AXn9iekxq48OGJ0GdaehI+YphrfFmW18cnl4vHt0sCKViqW7tw5avfYvivV2LeH7+iGWIEEacELHz+/ve/Y+3atbBarbj22mtRVFQEg8GA9PR0GI1GTJgwAW+88QZuuOEGHDhwADNnzoyIwWazGePHj4cgCNixY4fLY7t27cKMGTOQlJSEsrIyPP300xGxQW14Dg/P6eE0y8IndI8Pr66JRI6PTkuhrr6E3ssFDNXj4/6+A8RO5LyLeDAtGmSPT6tvj7PdwbD7VCsAYJwP4TNBOr7rVCts9uDq2rutdlz/t++x5YQorg7VduC61zehrt2/GCMIIvYI6u43btw4/PWvf8Wf//xn7Nq1CydOnEBXVxfy8vIwfvx45OXlRcpOmXvvvRclJSXYuXOny/G2tjbMnTsXc+bMwWuvvYbdu3fjpptuQlZWFm6++eaI2xUOvINyi8nXaInQPT5c4JikZFVnVVdoNzQl7jdKEj7xjSAI0IDBAeeFTApxAFuGF4+PyWKHWWqkkxOE8OGJ0Dwx2htH6zvQabEjxaDFkALv3uZB+alI1jJ0WR04UNMul7sHwusbjuJIXQfy0oz4yw2T8OAHu3Ggph2//3Q//vijCQGvQxBE9Anpa79Go8H48eMxfvx4lc3xz2effYbVq1fj/fffx2effeby2Ntvvw2LxYI33ngDBoMBo0aNwo4dO/Dcc8/FvPDp2eMTjvARBQ4XPB0qenz0bh4fDQmfuEerARwKZ4hBG5rw4V3BlWMimiRvj1GnQUoQIbTiDO7x8S18DksT34cVpctNO93RaAT0T2M40Cpg16nWgIVPt9WO5d8cBwA8dNFwTCzPxtNXjsWlL3+D/+48gzvnDJX7DREEEfuEf/frJWpra7F06VJ89NFHSEnxrOzYuHEjZs6cCYPBKRLmzZuHp556Cs3NzcjOzva6rtlshtnsTCpuaxPj9larFVar1etzQoGv5W3NNIP4Qd1sssiPOxxM/racZhBCtoU7djq6xf20S2sm60JfkyPANVygFbzvzx3xFL30sxUqvswRxd81jEWCfZ2tVqt4DaV/67WC1w7tgWDQiElCJosdZrMFGo2A2lax+3JOqiGodfPTxI+pMy1dPl/7QzXi3+3A3BSf51itVpSkAAdagf1nWmC1Fns9z53Ve2rQ2GlBSWYS5o/Ih9VqxYjCVJw3JA9fHm7AO5tO4JdzY6O6Nd7eo8HS1/cH9P09RnJ/ga4ZF8KHMYbFixfjlltuweTJk3H8+HGPc2pqajBw4ECXY4WFhfJjvoTPE088gd/+9rcex1evXu1VYIXLmjVrPI61WgBAhxaTBZ98ugIaAei0Ag4mXp7vvvw85DlYBxoFAFqcqm3AihUrcOSEBoAGx48cxIrOA6FuAwCwv05cm6PVeN+fO93dWgAXAwBWrVqFpCR7WHb0NoHsMRYI5XXWCs7rKTAHVqxYEdLvFiOr4vv3408/g1EL7G0W3y9aW1dQ63ZYxbUaOy347ycrvP4tbDgsvq+tjSexYoXvmVzFqeKXjI37T2CF5lhAv//NQ+LaI1JNWL1qpXx8kCDgS2jxr++OYrj1cEx5POPlPRoqfX1/QN/fYyT2ZzIFNtomqsLn/vvvx1NPPeX3nP3792P16tVob2/HAw88oLoNDzzwAO666y75321tbSgrK8PcuXORkZGh2u+xWq1Ys2YNLrzwQujduqeZrXb8ZuvnYBAw84ILkZGsR1WTCdjyNZL1Glx68cKQf2/64QYsP7QNxtQMLFw4DR82bgMaGzB5wlgsnFga3p52nME7lXvkf2sFeN2fO52K6QPz5s1DapxECfxdw1gk2NfZarXi11vWyf9ONuqxcOG8kH43Ywz3bl4DxoBzZ81GQboRXdtOAwf2YmBxHhYunBTUWo9sXwurnWHS9PNR6qX54V9f/Q5AGxZOn4Q5Iwo8F4G4v5Mfih+2jTYjFiyY1ePYFrPVjge2fgHAjtsumYax/Zzhsdk2B/79xHq0WuwYMH46Rpeq93kRKvH2Hg2Wvr4/oO/vMZL74xGbnoiq8Ln77ruxePFiv+dUVFRg3bp12LhxI4xG1xLYyZMn47rrrsNbb72FoqIijwGp/N9FRb6blfGRG+7o9fqIvOm8ravX65Gs16LLakeHlSE3Q49u6ct5WlJ4dmRKZcNdVjv0ej0s0niJFGP4+zMaXJ+vFQJ73ZQPi+eHZUavE6n3htqE8jorvRZ6rSasfaYadOgw22BxCNDr9Wg3S4nNacag181NNaKmrRttZgcGuD2XMYajDaLKG1qc6XftwmRxj80mK1rMDhSk+2+kuPVkG0wWO/LTjZg4INdFKOn1wPQheVi1txYbKpswYUBuUHuKJPHyHg2Vvr4/oO/vMRL7C3S9oIWP1WpFcnIyduzYgdGjRwdtmJL8/Hzk5+f3eN6LL76Ixx57TP73mTNnMG/ePPz73//G1KlTAQDTpk3DQw89BKvVKm9+zZo1GDZsmM8wVyyRnaJHV6sdzSYr+uc6p6inh5mEnGLgSabieuFO3VbintxMVV3xj/Ia6sKcQZJq1KLDbJMTnHlTRF7qHgy5aQbUtHWjscPi8Vhtmxkmix1ajYDyHP/haYMWKM9JwfFGEw7XdvQofL4/JjY7nDIwx6t36PxhBVi1txbrDtThjtmxkedDEIR/gv5k0+v1KC8vh93ee3kZ5eXlGD16tPwfnwk2aNAg9OsnDh+89tprYTAYsGTJEuzduxf//ve/8cILL7iEsWKZdOlmwG8OavXb4Y0KTVLHZj51Wx3hQ+XsfQ1l/oxeF94FTTW4VnbxLs7pIYxLyZUG+fI+QEpOS4NPizKSPMS4N/rniuLoRGPP+QCbj4vCZ6qXbtAAMGOo+MVt9+lW+W+MIIjYJqSvdA899BAefPBBNDWF1/pdTTIzM7F69WocO3YMkyZNwt13343f/OY3MV/KzklzK/9tV2mKeopU1mWy2OFwMJhtkscn1GxpBdTAsO/hEuoK2+Pj2kOqXRY+IXh8pL4/jR1mj8eq+fyvrMDmf3Gv0ImmTr/n2R0M26SGhWcN8C58SjKTUJhhhN3BsEtqoEgQRGwT0l315ZdfxpEjR1BSUoL+/fsj1S1rctu2baoY54sBAwZ4nZUzduxYbNiwIaK/O1LwmwQfKaG2xwcQ83y4x8cYEY8PzS+Kd7RuOT7hwHv1dLiFukLy+HDh48XjUy2NsigJcOJ7WbZ43skm/x6fqiYTOi12JOk1GFrovSmiIAiYWJ6Nz/bUYFtVM86uiJ08H4IgvBPSXfXyyy9X2QyC5/J0SDeHjjDCAkqS9BoIAsCYOKBU9vjow/f4eOT4hL8kEWVccnzCdOGlGV3DrO1qhLq85PjwUFdxZmDCpzxHPK+nUNcBaRbX0ELfTREBOIXPiZaAfj9BENElpLvqww8/rLYdCY/cYVkKCzg7LIfnmREEQa6u6TQ7PT6hzmBSonO7GcRSHxMiNFyFT5geHzcvJn9Ph5TcLHt8VAh1ZYuhrqpGExhjPkva99e0AwCGF/kfuMxng+07E1qoy+5gONPShcKMJBhUCEETBOGfkP/KWlpa8Prrr+OBBx6Qc322bduG06dPq2ZcIuEMdbmOlkgzhl/upxxb4fT4UFUX4YkyXGkI2+Mj5ZepEepK4zk+XkJd0iiLQD0+/aRQV7vZ5jEmRgn3+Awv8t+fZ5gUBjvT2o227uC60VY1mjD3+S8x4+n1mPH0OuwIcXI8QRCBE5Lw2bVrF4YOHYqnnnoKzz77LFpaWgAAH3zwQUSaDCYCzlCXeJNQc5goL2lv77bBKvXxMarwzZKET99DzXJ2uZWCGsnNUqiryUuOzxk5xycwj0+yQYv8dHG9U82+J74fCNDjk5miR5E0T+yQ9JxAsNgcWPr3LaisF5Osa9vMWPLmZq8J3ARBqEdIn2x33XUXFi9ejMOHDyMpyflhs3DhQnz11VeqGZdIcI9PJIaJcpGjnJSthsfHPQeEQl3xj1LLhpvjk2pwHZAbVo6PFOpqcBMFVrtDPhaoxweALFRq27wPPrXaHTjVLOYADSpI63G9YZI4OhCE8PnPlpM4WNuO3FQDPr/7PAwrTEdjpwUvrTsS8BoEQQRPSMJn8+bN+NnPfuZxvLS0FDU1NWEblYjwcvZ2j1BX+MKHi5w2hfBRw+PjPrmbshPiH6XWCXUyOydJEj5iNaEdFruYXxaK8MlKEb1EZptDbsIJOD1AWo2ArOTAPUmFGaLHp7bdu/A509IFBxP/TvLTPDu7u8O9QgcDFD6MMfzta3FW2M8vGIxB+Wn49cUjAQD/3nwy6JAZQRCBE9Inm9Fo9DoT49ChQwF1YiY8SXPz+HSqKHzcPT4GrQYaFdwz5PHpe6hZ1cUT6LutdtnbIwiuLRYCJdWgk99fSlHAc36yUwxBvacLucen1bvw4RVf5TkpAa07RMrzqazvCOj3bz/ZgmMNnUjWa3HV5DIAwLmDczGkIA1dVjs+3nEmoHW80dgNPPDhXtz89y3YcLg+5HUIoq8SkvC59NJL8eijj8oj4AVBQFVVFe677z5cccUVqhqYKLh3ueUjJlLUED6Sx4cLH6MKpeyAZw5ID/MeiTjAfVZXOHBPY7fVgS4pzydFrw1JdGs0gpwbpPRc8iqvPCn5OVCcoS7v+TRVTU7hEwjBdIMGgNV7xTmCF44slMPZgiDgykliJ/pVe0LznFe3duOFPVq8t+00Vu+rxQ1vfI/P99f2/ESCSCBC+mT7wx/+gI6ODhQUFKCrqwvnnXceBg8ejPT0dDz++ONq25gQuIe61Oyw7O7xUSO/B/BsYEihrvhHeQ3DFz7i8802O7qk8FSyIfT3Xkay+DfS2uUcDcE9PrlBCh/u8anxkePDmxuWBSl8zrR2yX+7/vj6iOiJOX+4q4d87ihxoPJ3RxtdcvIC5fEVB9BqFTAoPxXzRxWBMeCe93bJoXOCIELs45OZmYk1a9bg66+/xq5du9DR0YGJEydizpw5atuXMLiHutScqeUpfNSRKO5N3cjjE/9oXKq6wgx16Z2hLi58jGH0jxL7/3S5hrqkHJ+c1J7zcJQUZvpPbuYeHy5oeiI/zYgUgxYmix2nmrswKN93QnRTpwV7z4ipAucOynN5bGBeKiryUnG0oRObjzVhzsjCgH4/ABypa8eqfXUQwPDC1WMxtDgL8/74FY41dOKtb49j2fmDA17LnfUH6vC7T/ahrduG68/ujztmD/bZ/4ggYp2Q7oDd3eKHxfTp03Hbbbfh3nvvJdETJvybMJ9rpGa/HX6zkUNdKjQvBLwIH1VWJaKJS6grTG9jsiLU1a2Cxycz2UuoS6ro4lVfgSInN/vy+EgVXWXZgQkfQXBOhq/qIdy16WgjGAOGFKShIMOzBH+KNBB184ngZiG+vakKADA6m2FYUToMOg1ul8TOO99XweEIbaTM98easPTvW3C0oRMNHWY8v/YQVZ4RcU1In2xZWVmYOXMmfv3rX2PdunXo6vLdC4MIDH6TMEueHnmmlhqhLn1kPD4agZKb+xquQ0rDu6D8faf0+CSHIeR5x2c+5R1QhLqCFD48x6fZZHWpEuPw3J+izMB6AwGK4aeN/oef7j4tdnie1D/b6+OTpYGoW443B/y77Q6Gj7aLzWPPKXQKnIvGFiM9SYdTzV3ypPlgsDsYHvxwN2wOhgWji/DQwhEAgBc/P4xjDf73SRCxSkh3wLVr12L+/PnYtGkTLr30UmRnZ2P69Ol46KGHsGbNGrVtTAi4Z8did8DuYPKHsRoeH15dw78pqzGuAvAUPqR74h+XUJdayc02O7otKggfKcdH6fFpMkmhriBzfDKT9XKOmntTRJvdIXuSCjICD6HJCc49DD/dI4W5RpVmen18iiR8dp1q8SrKvLHzVAuaTVakJ+kwLMspfJL0Wlw4QgyXrTtYF9BaStYdqMORug5kpejx5A/HYunMCswalg+bg+FP68nrQ8QnIX2yTZ8+HQ8++CBWr16NlpYWrF+/HoMHD8bTTz+N+fPnq21jQqC8IXSYbbBJbmk1vDPuHh+1qrrcHQLk8Yl/VM3x0SmquniOTxjvPafHxyl8+Hs6M4gePoAYmspOEcWSu/Bp7LTAwcTXIjeI3KFSaTp8jY8SeUDs37NX8viMLvE+CqMsJxk5qQZY7QyHawMrj//ioJgsfe6gXI8O6rOGF4jnHAi+tP3vG48DAK45qwyZUi8lHj77364zISVgE0S0CblW+tChQ/jiiy/k/8xmMy6++GLMmjVLRfMSB2VIq9WkbodlvjavGAu3MR2Hkpv7Hsp3Rri9nrho77aoFOqSc3ycoS7u/Qll8GlOqgF17WYP4VPXxkvkjX6nsrvDw2K+KsUAMYTW2GmBRvA9A0wQBIwoTsc3Rxqxv6YNY/p59wwp4f16Zg7JA2pd5yXOHJIHjQAcrG1HdWtXwB2umzot+OZIAwDguin95eOT+mdjaGEaDtV24PP9tfjhxH4BreeNPadb0dZtxVkDcsKuIiSIQAlJ+JSWlqKrqwuzZs3CrFmzcN9992Hs2LGU5R8GGo0Ao04Ds82BZpPzg1iVHB/pm7fFJuYNhRvC4Lhfb/rYin+U93ltmH/PLqEuKWctrHJ2qeWD0uPDGyNmBOnxAUThA8Dl7w0A6qRuzsGEuQBFibwfj8+BGjHMVZGf5ve1GF6UgW+ONOJAdc+doM02O/aeFtedMjAbe93a9mSlGDCqJBO7T7di64lmXDw2MOHz5aE6OBgwojgD5YrqNkEQMH9UEQ7VHsHaEIWPw8Hw0Ee78c73JwEAo0oy8PZPpyIrJbiQJUGEQkj3qvz8fJhMJtTU1KCmpga1tbWU4KwC/EbRIldfaVQRk+7iyb3/jlpQqCv+Ub41wvf4iO9nq53JbRrC8fjwRn8mszePT/Df4bJTvYe66tql/J70wBObAafHp67dDLuPCqrjUkJwRV6q37X4CIz91Z4d8t05UN0Oi92B7BQ9yrO9i5rxZVkAgB1VLT2ux/l8v5gTNFsKlSmZLeUNfXmwPqC+Re78feNxvPP9SQgCkGLQYu+ZNvzy3V1Br+POsYZOPPjhbvzy3Z3YI4UU1cBqd4hjTEKsjCNii5CEz44dO1BTU4P7778fZrMZDz74IPLy8nDOOefgoYceUtvGhIHfFFqkb6BqNRp0z6uIlEuZdE/8o9TZ4QpZZX5aswrvaXmQr5QobXcwOXwbksfHR44PL3EvSA/O45OfZoRGEO3yNWH9uFTqPqAH4TOiWAyDHahpA2P+b7Y7T7UAAMb2y/L5RYkLn+0nW/yuxWGMYWNlIwBg1jDPMURjSjORl2ZEp8WOXaeCExgdZhueW3MIAPDwxSPx3i3nQKcRsHZ/Lb472hjUWkqONXTiB3/6Bv/cVIX3tp7Cla99i60nAq+M88XGykbMeGo9znlyHWY/92XA89iI2CXkO2BWVhYuvfRSPPjgg3jggQdw5ZVXYvPmzXjyySfVtC+h4K7vFpO6ZefuQsd91IRaUKQz/tEKTPFzeBdUmUvGQ1LhCB9nrytpkK+irD2Uwac5PXp8ghM+Oq0GedJAU195PselUvcBuf6Fz2BpInyzySp/Hvhi50lReIyTxI03JpSLj+053QqrNCzWH1VNJjR2WmDQarzmGGk0AiZL5fjBlN0DwP92nkFbtw0Veam4ftoAjCzJwI+miPPK+ODWYGGM4b73dqHFZMXI4gxMHZiDbqsD97y7MySPFOdYQyeW/n2LfD2PNXTiJ3/bhGa39wwRX4R0B/zggw9wxx13YOzYsSgsLMStt96Kjo4O/OEPf8C2bdvUtjFh4CEpNb4dK3EPbUUq1EW6J/7RqBjq0moEWQzzkFRYoS4DD3WJNzKe65Ok14TUlNNXjk+9JHzyvTQX7IniTP95Pidkj4//xohJeq3ca6in8nieNzTKR5UYIHaETjPqYLY55HCbP7ZLIbGRJRk+X9vJA0ThE6xX5Z3vxUaLP55SLiePLz5nAACxfJ7nWAXDV4cb8P3xJhh1Gvx10WT8ddFk5KcbcbShEx9uO93zAj54/NN96DDbMGVADjY+cAEG5aeivt2Mp1cdDHlNIvqEJHxuueUWnDlzBjfffDO2b9+Ouro6WQyNGzdObRsTBg+Pj0r9dtw9PBELdZHyiXuU74xgKpq8IQiC7PXhIiXZEPp7L0X6++iUPD6tYVR0Ab5zfPi3+WCbIgKKqe9ePD42u0OeATawh1AXADmh2F9DRIeD4Wi9+Dj3EnlDEAQMkh4/FECJ/PYqUcxMLPfeZBEAJkoen21VzT2G4zhnWrqw61QrNALww4ml8vHBBekY1y8TdgfD+gPB9xv6x3cnAIhiqjQrGRlJetw8owIA8Oa3xwO2T8mh2nas3V8HrUbAE1eMQXFmMn7/gzEAgPe2nvSbxE7ENiF9CtXV1eG9997D7bffjjFjxqhtU8LChY4zx0etUJfrDUwXIY8PEf+oWdUFOMNdfLCoGjk+fKwLF1Oh5PcAiiqxLtcBnry4ICsl+HW58OHhMiVnWrphczAYdRoUBpA43V/uBO3b43OmtQtdVjv0WqHHSfJDJeFzuK7nHJVdp3n4zHcp/aiSDOi1Apo6LTjdElhxCy+7H1eWhdw011DiBcPFhOn1QfYbajVZsU4SS9dNLZePXz25DAatBgdq2nG4LrB+SEr+s1msOJszokCevTa1IhdnDciG1c7w7paTQa9JxAYh31ntdjvef/99PPbYY3jsscfwwQcfwG4PPZZKeGk0GGceHyL+UTPUBTjnfcldw8MQPimKeXaMMVmwhFLRBTgFU7vZNYeGf/HISg7e48PDZ41eckCqW0VxUJKVHNBryxOgj/vx+FRK3p7+uak9/l0PKZSETw8eH8YYjkjn+Oo1BIifT1wQBJrw++UhUdScN9QzYZpPqv/6SIPceiOgNQ/Xw+5gGFqYhiGF6fLxzBQ9Zg4Vh8B+uqs64PUAMUH9Q2kEyNWTy1weu0r69ydBrknEDiHdAY8cOYIRI0bghhtuwAcffIAPPvgA119/PUaNGoXKykq1bUwY+LdjngiqVodldw9PuB15ib6Lq8cn/PU8Ql0qCB+7g8Fsc6BdWjMtxFCXN48PY0wONWenBr9unjQ6w1tVF0+QLQywP1AgQ0+PSJ6MwX6mwXO4KOjJ41PT1o12sw1ajdBjSG6YVHZ/IADhwxjDd0fFeWEzhngKn9ElmchO0aPDbMPeM4FXin2+X2xcxD1GSuaOKgIAfHU4OC/SzlMtaOy0ICNJ5yHS5o0qgl4r4GBtOw7VUoVXPBLSnfWOO+7AoEGDcPLkSWzbtg3btm1DVVUVBg4ciDvuuENtGxMG+dtxd/jfjpW4d2omjw/hCxfho4rHR1xDjaquFIPTs2Oy2OU5Vikhrslzg9q7rXIOiHJcTGgeH1HUuOcNAc68n8IAk6YDmf1VWS8Kn0EFPecMcXF0rKHTZ58hwJkDNCA3BYYeGqhy4ROIx+dUcxeaOi3QawWMLvX0JGk0AiZIOUU7gii7//qw2F36fC9l9+cMygUA7DrVig6zzeNxX3wpjQCZMSTfo+FrZrIe5w4WPUlfHQp+DAgRfUK6A3755Zd4+umnkZOTIx/Lzc3Fk08+iS+//FI14xINo5vHRy3h4/6HG6mqLiL+UXNkBeApsnu6kfpDqxHkvLdOs03O9UkJsRt0uiR8HMzZG4h7e4w6TUhdpv2FumpapYnvAQof3hCxocPsswT9VLMYPuuf07PwKclKhk4jwGpnXpOvOYclL8ZQRdjIF8ODED6838/wIt+VYnK/oQAbLZ5odJbdj5dK9pX0y05BWU4y7A6GLUFMp+ceIh4qc+fcQeLxbytD7ztERI+QPoWMRiPa2z3f6B0dHTAYqOV4qPCbBO9Posa4CsBLqIs8PoQPXHJ8VExu5oQrurnXp8tql4VPqGMwkvQa2R6eg8SFTyiJzQCQm+a9UgwAatuD8/jkpRqh0whgzFli786ZFmfeUE9oNYJ8HhdM3uDhsyF+qsQ4XBwdbejw60UCxGnzADDWz+wx3m8oUI/PNqn6bFSpbzF19kDR67PpWGDCp9vqbMp4ziDvwmea5EnadLQxoL5IRGwR0h3w4osvxs0334xNmzaBMSbGbr/7DrfccgsuvfRStW1MGHhYoEMq1w3n27HLupTcTASI6lVdbu/hcAfkyiXtZps8+DRUj48gCB4T31u6RMGSHeLMKO7xaTFZYXO7Ida2Bid8NBpBbqLorSEiYwynJQFT6mNUhTv9pPNO+gmfVfGS+/yevUjFmcnQa0UvEk/e9sVuXinWL8vnOWOlx6qaTAFNft8WQNk9D58FOsJi75k22B0MeWlG+fVyZ2RxBjKT9ei02LHvTM9jRbzBGEOH2RZSqT0RHiF9Cr344osYNGgQpk2bhqSkJCQlJeHcc8/F4MGD8cILL6htY8Jg0Iof4PzvQK9SErK7x4dCXYQv1JzVBXiK7HBFt9zE0GKXOzgnG0Kr6gKcHZ95eDlcj092ikHuZ9Xk1hiRi5eizMA7Qhfy+V9ehE+LySqLP944sSfKssW8IX8en5PNovDpl+2/PB4QvUh8TX9J2ADkkvLhxb5DaJnJenkvRwIpu5c8MxO8hLk4vLHj3jM9j/8AgJ2St2l8WabPESAajSCH5XaFMBPsaH0H5j7/FUY/vApXvPptj6KRUJeQPoWysrLw8ccf49ChQ3jvvffw3nvv4eDBg/jwww+RmenbjUn4h3t8OGqFpDz6+ERoZAUR/yg/59V4+6mdWJ9idHp8ws3xAZwl7TzUJfcGCrFSTKsRZG9Rc6fTY8EYQ12bGK4K1OMDOPOBvDXL471z8tKMAecDluVIHp9m7yLFZnegukX8Xb68He6UB5CE3dpllcN1FT1UoPFGjD2V3TscTD6HzzbzxrCidGg1Yr8hX6NElPDZZ/48U4A4rwwA9gQ5q8xkseGGN76XheC2qhbc8o9tFDLrRYL6FHI4HHjqqadw7rnn4qyzzsLrr7+OOXPm4JJLLsHgwYMjZWPCYIxQ9ZW70KEGhoQvXJKbVQh16d1DXbpwc3zEG3yX1Y4uNYSPW6iL59elGUP3ImVKYkoZqmntssIi3djyg5gBxkVSTZtnjg8XPqVZgQupfrLHx7tIqW03w+Zg0GuFgKfT80aLVX6Ez1Gp+qwoI6nH13aoXHbvX/icahabNxq0GtkGbyTptXJF297TPYeleEjM24wyJaMl4ROsx+evXx3DqeYulGYl471bpiEjSYedJ1vwwbZTQa2jhDGGV9YfwdTfr8XFL21QZTgrIPae2nWqpcf8rUBgjOGtb49j1h++wv3fa2EOoleT2gR1Z3388cfx4IMPIi0tDaWlpXjhhRewbNmySNmWcHiGBdQRKB43H8rxIXygdfH4qJHc7B5mDe+9xxNYzVaHM7k5jOpH91BXp1TynBZiU0RA2R/IKXx4snO6URdUY1J/IzCCSWzmcC+Or1DXKUm8lGQlB3z9y6WBq/5CXbzRYiBl90Pk0Rr+Q1388Yr81B694yNLnNPu/WGxOXBc2kdPVW08SftwbbvcWqEnLDYH/u+74wCA+xYMx+QBObhj9hAAwJ+/PBpyvs+fvqjEM6sOorbNjD2n27Doje9lsRkqr284inOfXIdLX/4Gl778tc8E+0D5+8YTePi/e3G6pRtddiGqsx2D+hT6+9//jj/96U9YtWoVPvroI/zvf//D22+/DYeDXHRq4C5Q1ApJuecKkceH8EWkk5vDFz7i8802pccndJGSrOgGDQDtkvBJDcPjI4fPup3Cp5nnDgXZFJHnA3kLdVVLx4ozAxc+ypEa3m6yXBCVBZDfw5FHazT56zAt3oQr8gJptCiec6QHj8+husDL7gdJidrHGvznIZ1oFHscpRq0PeZNFWcmIStFD5tiXlpPrD9Yh4YOCwrSjVgwWmyu+OMp5UgxaHG0oRPbA6xmU3K6pQsvrD0MAPh/c4birAHZ6DDb8Ogn+4Jei/PFwTo89ul+OJj4BWjvmTbc/e7OkIVZXVs3nvhsPwBg2awKPDjeFtVc06A+haqqqrBw4UL533PmzIEgCDhz5ozqhiUiHvkQYYYFOO7fhijHh/CF6iMrVA7f8lyWbqsj7Kou5XO58JE9PioIH2Woiw8+zQmyWoyHm+q9dIJukI4FEzrj51psDq9VU1z4BJrfAzgrynhukDeOScKgIoBKsQGSB6m6tRtmm29PCs/vGVrYs5gamMebN/oXU3In7II0n4nNHEEQ5BBaZYDeFd5l+uKxJfLfQqpRh7kjxa7T/9sZ/L30bxuOwWJ34OyKHNwxezCevnIcdBoBXxysx/7q4CvOHA6G30mi6YZp/bHyFzNg1Gnw1aF6fCU1iwzaxm+OodvqwITyLPzigkEoTEaPr28kCepTyGazISnJVQXr9XpYrT2XHRI94+7xcS9DDxV3D0+4eRZE30XtPj5qh2+VHh9nVVf43aBNZh7qEm+0YQkfnjekGIXBK7yyg5z4zsvjm730BWrskKbIpwW+ZpJeK1eseRuk6qw8CzxviHuRGjstPmdsnWnlgqpnT1JOqkEOX57xI6b41PqBAXiRBuSJv/dYg3/PDBc+gwLoYQRAnlUWiPBxOBjWSx2hLxhe4PLY/NHFAJwdowPFanfgg+1ibtDPzhsEQRDHjMyTRnX8c1NVUOsBwDeVDais70SaUYd75g3DkMJ0/OTs/gCAv3wV/Egqu4Ph/a3i3LNbJRujTVB/3YwxLF68GEaj8xtGd3c3brnlFqSmOpX8Bx98oJ6FCYR7crNaISl3AaUljw/hA43gdGWrUtUVsVCXQw51qTH/y2RVL9TlLbmZDz4Ntj+QLHxMFjgczMULJ3t80gL3+ABAQboRLSYratu6PcJEPI8jGC9SdooeBq0GFrsDde3dXsWNMx+pZ0ElCAL6ZSfjcF0HTjWbfM4LO8nDcjk9e6e4F6nZZEWLyYIsH9fhSL3T4xMIPGepMoBQ177qNtS3m5Fi0OKsga59h84ZnAutRsDRhk6/rQbc2XS0CS0mK3JSDZgx2Nls8eqzyvDp7mp8tqcGj1w6Kqh8PS6WrphYKnc3X3zOAPzt62P4trIR1a1dQYVXNx1rREOHGZnJepw/vABwRH+YeVCfQosWLUJBQQEyMzPl/37yk5+gpKTE5RgRGu6hLdWqumhIKREgald1ub/XwhY+ksgx2xyyWFEj1NWlaqhLSm7uViY3S4NPgxQ+/HwHg0doKhSPD6DI8/FSKVYfgpgSBAEF0uDVWi9rdlvtaJBsLQ0wEbssx3+/oW6rXRZpgeQjpRp18nBYf16fE1Ji88DcnkNygMLj00M+EgBsl5otTuqf7ZHgnpGkxzgpWXrz8cArslbuFSfEzx1Z6JLSMK0iF+lJOjR0mLHjZODrmW12fCnNH7tyknMqfVlOCqYMyAFjwIrdNQGvBwCfSefPH1UUM81zg/rrXr58eaTsIBC5qi73m08MeBqJGEXtIaXua4T7nk6SPD7dKoysEJ/LGyKKgkeNcnYe6vKa4xNkcrNBp0F6kg7t3TY0dlrkUBljDI2d4o0/N0iPD/fmeAt1NYTg8QFEMXWquctr9RlPwk4xaGVvWE/01GH6tBQCSzVoA242OSA3FbVtZpxoNMndnD3XDTwkBziFz9GGDg+PnDs7TkrNFqXGh+5MKM/GtqoW7DrdirMC1AffHhFnhc0Z4TqZ3qDTYObQfHy6qxrfHGnEpP453p7uwaajTTBZ7ChIN3oMkp0zsgDfH2/C14frsWT6wMAMBPDNkQbp+YU9nNl7xIb8IgB4JjerlYQsCIKL+FGjWofom7iUs6vs8dFrhbDj+9zjY7LY5XyScKq6UvSuyc0dcqgrdDGV6dYUERBDVQB8hlj8oQx3cdq6bbDaxbBkbpB5Qzxhuq7dVaQwxpwenyCFT1GAZfeBXv+eyu65QCnLSQl4TZ6EfcZHl2SlFynQ5O7S7GRoBDHZvsFLAroSPqvM2zBVwDmgdWeADREbOsw42tAJQQDOGuApbM4eKB77PsAZZYBYdQYA5w8r8Hhdpw/OByDOPPOVy+VOXVu3bOOUgYGJr96AhE8M4ZHcrNKsLsDVm6TGN3mib6L8rFOjqkuZT6aGm5vn+Ci9KXxieyh4hLokz096OH185HJ2Z3JzS1foozDkie8dTuHDb7LpRl3AXZud64k28PEcnLZum3xDyws2byjD90yx0PoNiR4XXx2mTzYH55kBnGM9fFWfcTtTgvAi6bUaWfSdavGdm9PebZXzh8b66AjNhc+BmnZYA9AVW6SQ2LDCdGR6sfcsSWhsq2oOuCs0X3P6EM/hrMOL0pGXZoDJYg94iOz3x0XRNaIoI2BvX29AwieG8BgmqqJAUX7zVuOGRvRN1A51uXp8VBA+0k2+XZE/E0xDQHeUfXwYY3KoK5zkZmdTRKeNfN30EEZhcI+OcuJ7qPk9gDNvyH2CPPd2pCcFL6aK/OQN8cqsYDpMc5FS66V/EQB5OGswZfc8Ibfax5rKUv5gPJPck3TaT1LyodoOMCbuy5eo7JedjJxUA6x2hjP+2w0BALZIomLyAO9hu6EF6chM1sMU4CDVbqtdLn/3NvtMoxFkrw3PV+rZRvG8WPL2ACR8Ygr3G41as7oAV7GjRtIq0TdxGVKqwvtEo7bwkTw+vFRcqxHCEmg8TNZltcNsc8AmteYPR/jwQarciwQ4Q2ih5A7Js79MSuEjCoxgPTOA99AZEFpFF8dfh2nuBQpmRhk/t77De6NFnkQdSJUYR/b4+Ah1ceETaAI2h3udTvvx+FTW9VwtJgiC3JOotqvn9/ReScz4mimm0Qhyd+m9AQifPadbYXMw5Kcbfb4GfEzH7oAn3YvnjSuLraInEj4xhNqJoL7WphwfwhfKd4YajkGlx8d9fEUoyMJH8qaEO37F2cDQ5iJUUlQokedhM8ApfEIJoWV66QTdICdLh+Dx8eJBAkKr6OJwz5P7mkBoIo2fa7Uzueu1Eh7qC3SeGOD0+Hjrgg0Ap1sCn0qvhIsEX/PPAGefn0E9DGgdUiC2F6gx+f9bYYzhoDSyY3iR7wGtI4sDG9UBANurWgCIyde+PF7yYNYAhA9jDAeqRRv9DZGNBiR8YghP4aOix8cld0O1ZYk+htqzupRrqJGzxsNafLaWMYz8HsA11NUtdQnWaYSwvK3cW9RtdcDuYGCMyWGvUIRPupeGiK0h9gUCnN2j3Zsi8oquvBA8Pr7CZ8pjeUGE5Qw6jSzq3JOwxWPBe6e4d6ix0+J1thbP/QkmFwkILNQlC58e+gNxj1BtD6186jvMaOq0QCM4R3x4gwuOQDo483PG+hnOOrpEfOx4o8lr528lp5q70G62waDV9Cj4ehu6BcYQHqEuFXNxlGELCnURvlC7c7NLNaEK72cudNpV9vh0WewwSxmlwea3+FoTED1JZptDrsAKJdTlrS8QT5zmjwUD9/h0WuwuAsDZZDH0BOxmk8UjNNUoe6eCb7QIeO8NxPsCBSN8MpP1ciK8N69PqBVt3OPjN9TFh7T2MLJjSEFgoS7uSRmQm+r3/Tq8OF0+v6c5W3z22RA/s8+yUw1yXlVPYoqH1wYXpMVM/x5ObFmT4Hg0e1Oxqkt5E6OqLsIXkezjo4aQ50JHSsXx6AwdLCl6UTjYHEwOR4VTJQaI4Ti+b5PFLq8rCM78n2BwjsBQCB/p54wQkqUzknSyfcrKLv4NPis59JJ7q53J3a85PCwVbCK23G/ILW/I5nBWyQXbaNFfgjPPcQrGMwU4PUS+qsUsNgeqpH5Eg3vwfHCPT0M3YPYz8f1gjShShhX5H9A6KD8NBq0G7Wab347QDgeTx3UMCdAr1dNg1kM8FFfc8xDZ3oaETwzh/g1brVldgOsNiDw+hC8iWdWlxqgUd/EUrvBRNj/kIZlwqsQA8QYr5/mYbc6miAZdSBWV3srjuffHWxlzIPbx0BRvggg4xUQoZcdJeq28Z2UIzWyzy2HJvKA9Ps5J8kraJa2m1wpB28qFknLfnFC8SICzlL/dbPMeQmvtgt3BkKTX9Lh2froRqQYtGAS5SaM3jkrdp3saraHXatA/V8xZOt7oW6icbulCt9UBg06D8hz/OU4VeVz4+O9WfbyBe7liK8wFkPCJKTxGS6iY3OzSn4V0D+EDtT8QtC79o8Jfz90LGm6oy6DTyGKKVzmFmzcEuE595zf+tBB7A2V4KY/n+T6heHwAIFMKkSnzNPjPoYgpwHueD/9ZpxGCDsvlpXvPG2qTTM5LMwYtJLnXSdkTCRAHaTZ1hpbcnW7UyUn39V66YfNy/pLMnsvkBUGQc5FO+6g+A5wdrXsSKQAUwsd38jX3zlTkpfaY31YhheuO9jDwlQutAQGO/+hNSPjEEO6eGDVzfLQq51oQfRO13xpqe3zchY4xzHwcwOk14h6VpDA9PoAzpNVptqHdLN6pQx2DIXt8lMnNPNQVQo4P4EyY7lA2WTSF7vEBvJfJc4GRk2oIumu3tzJ+AGi3iOsUhJCE7RQ+rgKlqdMCBxO/IAZbKScIglyFVu+le3OwDRz5eaebfXt8eGPHwISPKDxO+BEqlUEMZ62Qhsb25PHh4T0uvGIJEj4xhLvQUbPRICU3E4GgfMv1kAsZEK5tFMJfz90LalS1N5B441fF42N0Tn13Ni8MVaR4S24OT6Q4mywqwmdyjk+IHh8vHaZ5YnOw88QA39Vn3OMTSr+h3FQe6nKraJMES06KIaSKPm6Ld49P4JPpAaCfJHzO+EiWttkdcgVZeQCiYoB0zgkfc88A4GSTuF4gIqVCCl2dbO7yObqivdsqhw5J+BB+cffEqNlvR+3cDaJvotQVDOErH51LcnP4Hzfu1SHh5vgAzpweLibU8PjwxogmszLUFZqg4B4fi80h55CEk9ysfJ4yfNYSdqjLcxQG96wEO08McI73aHLr49OuCHUFS56PUFdDGA0hAafw8Tavi88G44nVPSGHunzk+FS3dsPmYDBoNSgMoI9ROff4+Mnx4R6kQCbdF2YYkWLQwu5gPkeK8Cn3eWmGkLqVRxoSPjGEuyBR0zNDHh8iEIQIenzUyNV3D3WpIXwMEfD4pCqaGPLJ76khTpFPM+jk69LWbQVjTFHOro7HhzEWVlUX4F1MKUNdwcKf0+IW6uq0iS9Gdghr5vpIbpaFT3poe/fv8eEjOwIcfNpDeTzP7+mXnRxQVED2+DSa4HB4/6M+FcTsM0EQZBt9eaW48Okfg/k9AAmfmMJD+Kh4ddS+AblDWqpvoHxrqC18IuLxicAYDFU8Pkbu8bGhS/LSJIeYj6TRCHJ+UFuXDSaLHXbpBhaqx0cWPlLpeYfZJq8ZbvhMWX3GxVQovYGyfDRFNEnLh2JnrpdwHAA0tEsVXaF6fNICCXUF6/HxLip47kxZAPk9/PdqBMBs8z5BnjEmd50OdPZZSQ/Chx8PdvxHb0HCJ4aIpMfH5feouC4fZveD8SWqrUlED0EQ3dMawVm9EQ5qD8f1yPFRwTvD15BDXap6fOzo5o0RQ/T4iOs5539xO3UaIWRb0928M1ygGLQaFdZ0Ch++fiieKe7xae+2uUwX58InlFwkntzsLgBCbbLI8efx4T2DigPM8eFioa7dDJuXqep89lmgOUN6rUYO4dV4maUmdrJ2QBACF2dyt2of4Tj+e4oyAx8p0puEPomPUB13QaJmLo4QoVDX6zdMxucH6jBvRB6+WFul2rpE9Pjy7pnQaIOf0O0NZSWXGlWKkfD48DX4zT/cPj6AIsfHYpObLYbjSVLOFOs0iz+nGnVBV0px3L0znWbRK5WWFPqavMKs3UuH6VBnlAmC6HlsMVllcWGSQl1ZIXiRuABrN9vgcDBZjLd2WUJeE1A0W3QTPt1WZwPLQJOxc1MNEMDgYAKaOi0ocBvu6hzXEbioKMpMQl27GTWt3Rjbz/UxHjorykgKOHQsh+N8NEUMZTBtb0IenxhC6/ZtNlLhIzWrxXLTjLh6cpn8QU/EPwadxqWxXzi4eHxUeEO7Cx0153/xHB81PD5cNHZbnQnJyYbQ15WrxCx2eZhqqDlDgKd3ht+cU43hr+lSfRZGErZW42xQqCxpd4a6gs/H4esx5uqZag2jeSPgDKG55yNxT5JeKyA9wHYGWo2ANMkMdyEFAHVtfEBr4N4pLkBqvXh8QplKz71NvkJdtZKXq4iED9ETHh6fSIW6qKqL6CXUHlnhHurSqzj/S+7jo4Kni+cNmW3OeVhheXz03INkl6e+hyNO092aIjoTsEP/AuOtRL49zCRsb+M65FBXCN4Zo04rC1ulQAtX+HBbWtwGdzqr2oxBedIyJDO89QWql4a2BiN8uADxFuri4iqYsFRRRrLP9ZTHizJDCx1GGhI+MYRHOXuEBEqkBBVBuKP2kFJ38aRmU0S5qksFL5Krx0fM0whHqHCPj0uVWIgNEQGnSOmQQ13hr5nhJcenLYyp9Mrn8SRsxlhYwgdwihuvXatDFD7c+9TaZXWpnHL2MQrOO5VhENfwljPEhYp7CMwfXNTUtHoTUsEPZ+VjOhq82McYk71SFOoiesT9xhBqrL0nSPcQvYXaHcMFQXAJd+lV6IrIuz/bpBuWGt2gnR4fhxyaCmdd5RR5no+TEoaQchcp6qzpbbRGeP2GeDUbt9NkscPOpByfMMvulcKH9x4K1TOlDKG1qVDOn849Pm7CwuFg8rFQPD7eQl2hCB9+brvZJr+/OU2dFlikpOyCIPKQehMSPjFEJJObmaI2mUJdRG+hDE2p9b5Te013D48aoS6nx8cedjk7oEyWdub4hJNXl6xIlgYgh89CHasBKHN8bPLnTbihLvfRGnL1mS706rNIeHwMOo2cc6Vs4MjnfwXbGDHDh/BpNllkgR7MmrLHx5vw6eBCKnCR4m8+Gf8deWkGVfpsRYLYtCpBcU86jpQ+oVAX0VsoQ1FqCR9lZZcaeUPuH85qhLqUHh85xyeMpGmXqi5JpITjneHP5WE47vFRI3xmdzB0WcVeQzxEFXaoSy6758NZQ68+y0x2zRuyO5gs0EIVPoCz75Ayzydkj4+PUBcPc+WkBicq5OTmVi85PpJQCcbjIwiCs4S/w3VNORQXo94egIRPTBOpPj6ke4jeQimy1Rq66yJ8VGxgyFHb49OtssfHJFd1heHxkWyx2B2w2R3OHJ8wxRQXt+3dNpcBqOELH1fPVDh7d/f4KENz4Qgf/lxlZRefVxVsjk+qtL2WLtcqsboQwlyAs8Fiu9kGs801NMV7GgXbvNFX76LmEPOaehMSPjFMpEJSkcodIgh3XDuGq/O+M6gc6nL/5qzO/C+lx0dqYKhCjo9JkdwcTrK08rldil4z4Xh8BEFAit5Zds9zXYw6Tci9keQkbLN7EnYYuUhuwof/P8WgDeva82RrZQiNh7qCnVXGhU9zp/cqsaBDZ8k6+YuHshO2ze6QE7CDHfpa4EP48PW5BywWIeETw9BMLSLeUebjqOXx0akc6tK7VYYZVEiY5iLHrMjxUUf42BVhqdDXM2g1cii9y2JXpVIMcM0dUiNvKM3o2htIjZCcu/Bpk8Nn4Q3T5MJHOU1eruoKsiN0qk4Mdbn3BWqW8oeCrWgTBEGebaYc19HUaQFj4heIYMNxXHzVu43/4DlOOSFW3fUGJHxiGMpBJuIdF4+PSkJeWcmlRqjLvTeQGjPFeG8g9XJ8xBt9p9kpUsJJbhYEQQ53dVkVYirMxpXJBmeIj4fk1Og31OER6gpjTSN/Ld3WDENIAopQl4vHRxQFwQ5UTZU0Q7PbZPpWSQhlh+BN4V4npceHh85yUw1Be0+5Da0e4ow8PkQYUEiKiHeUHhnVPD4RHoPhLoRCgTcrVKuqi9+Uu6w2dKrQuRkAkvn8L6tdcfMP0+OjCHU5q8/UaLTIO0yH7/Fx9kQS11KjhxHgrEDj6wEIOWk6RTKlS5EjBjhFVSg9jHK8CB9nn6HgGw3KHi43cdYsizPy+BAEkYAovTxq5ay5dINWQaS4iyd3IRQKSo+PWYUcHy4oOs3qlLMDzhEaYvhMnZu/MiTn9Pio0A3azENdPHwW/sBXZyl/+AJNtMk1H4kx5hzSGmRyd5LW6fFX5gw5Q13Be1O48GlUCB8eSgtl4Cu3odnd4yPlJQXr5epNSPgQBBEx1G5gCKifN+QeLlND+HCPT6fZJjdzU6Oqq0shUlLCDM1we7oVIiXcm7/STjkkF8a+3fv4dKpQ0aYUZwBgMoefiwQ4RSP3SnVa7PKA2mD7GGkEeJ1TFo5QcYa6nMnIrWF4kLK9JHMDSo8PCR9V+PTTTzF16lQkJycjOzsbl19+ucvjVVVVuOiii5CSkoKCggLcc889sNls3hcjCCLiREL4uK4Z/keYe/dnNbxISo8PJxyPT5K8njqhM8A11MXtDLeUP0kR6uIhmnDElDIPCVCnqosLFJNCoIh2hhnq4sKnmydNi//Xa4WQekNxYaFsiMh/zk4NJdQlhrOUoa7WEJOllc/x8PiYQutd1JvEzUjt999/H0uXLsXvf/97XHDBBbDZbNizZ4/8uN1ux0UXXYSioiJ8++23qK6uxg033AC9Xo/f//73UbScIBIXZahLreRmpZdHjZEV7snM7lVeoeDNaxROY0ReDq5W6AwAkvXOUBfv7RJu80Zl2T0XqEkqlN13yfk4KuT4GJxzz8Q11UluTnMrvZe7VifpQ8rXFENJJpfKLt7XJ5TJ9FwsuQgpPlIkjFCXcj3GWMiVZ71JXAgfm82GX/ziF3jmmWewZMkS+fjIkSPln1evXo19+/Zh7dq1KCwsxPjx4/G73/0O9913Hx555BEYDLGrPnsDxcQKgug1dBGo6lLbi+Qx8V2nRsK0e6WYEFYfI5ecIZVEitKbwsVUqP12OCmKqi5+sw8n1JWsGPYKqNPAUPb4cDGlQpWccl0e6lJrQGubohFkC8+fCUFUyJPuuz09SKHMPePhtvZuG2x2B3RaDUwWOyyS95BCXWGybds2nD59GhqNBhMmTEBxcTEWLFjg4vHZuHEjxowZg8LCQvnYvHnz0NbWhr1790bDbIJIeNRqWqhE/aou9cvZ1a4UkxsiKsJS4YsUZz4OD0sZwyi5B5R9fNSp6vLZYToM74zs8ZHWMqngRQKUyc2uHaFDnVOWJrcwEO1UjgAJpcO02jPKlM/h6/Awl0GnCTtfLJLEhcfn6NGjAIBHHnkEzz33HAYMGIA//OEPmDVrFg4dOoScnBzU1NS4iB4A8r9ramp8rm02m2E2O5O92traAABWqxVWq9XX04KGr9XTmoLg9M6o+fuVQ0rVXNd9zUDWFk/Ry+dHwJyIEMweY4FgX+dI7M9hd35btTvsqqytERTuS+YIeE1f+xPc3aFMBTsdrmvqtZqw1tRAFDvKvkBaeO49mGtokDxbHd0WWUx5WzMYkrR8TatclWTUCSGvqROcOVLtXWY5jJSkDf19atCI18Zsc6Cr24yObvFmnaQL772fLN3nO7ptsFqtaJK6LKcZtEGty89NMYgvYKvJAqvVKucMAYAxhP2n6Pl6zntbi4nbGNo1ykjSoa3bhvq2LmQYNWho6wIgeoN85ddG8nM00DWjKnzuv/9+PPXUU37P2b9/PxwO8c3/0EMP4YorrgAALF++HP369cO7776Ln/3sZyHb8MQTT+C3v/2tx/HVq1cjJSUl5HV9sWbNGv8nMC0A8Q26YsUK1X5ve3tk1nWnx/0B6O7WArgYALBq1SokJdn9PyHGCGSPsUCor7Oa+xO/9IsfM4cPHcKKroNhr9nYoAF3Vm/fuhXmo8HFcd33t6tRAOD8dvr1l19gb/BtTTwQoAWT/uYcNmtYf3dihEMHm4Oho8sCQMDGb77CYR9zIAO5hnVnxNdx176DMNvE13PDF+uREUaEouqU+FoeOnpc2rkGp45XYsWKIyGtJ2pS8f3zyWerUd8sfo7t27UD1hPbQ1pT1Hjimh9/uhKVVeLrcOzQAaxo2x/SmgDQZBbXbeuyYMWKFfiuRnwtOlsaQrr2DdWnAWiwa/8hrDAdkNfXCgyfr14Z9Ho1JvH5je0m2Z5TdeLreXD3drCq4PMhdNL9avW6L9E/HTjSKv4OWLt73HMkPkdNJlNA50VV+Nx9991YvHix33MqKipQXV0NwDWnx2g0oqKiAlVVVQCAoqIifP/99y7Pra2tlR/zxQMPPIC77rpL/ndbWxvKysowd+5cZGRkBLUff1itVqxZswYXXngh9HrfbsU7v1sNSO+/hQsXqvb7X6n8FtVdHaqvywl0fwDQ2en8ed68eUhNVd2ciBDMHmOBYF/nSOzPYnPgnu/XAgCGDh2KhecPCnvN/zVvx97megDAtLOn4NxBuQE9z9f+jAfq8MahHfK/586ZHfTcIm/cu3mt7ElJTU7CwoXnhbyWyWLDg1vWAQCsTJDsvABFGa7KJ5hruGvlQXxTewIF/QYAp8TP0YvmXyiXkIdC7bcn8OnJg8gtLBEH1NZVY9yoEVh47oCQ13xg61p0WR0497xZePXIFqCrG9OnTcGkAYFdd3cYY7hv81rYHAznzroA/2vaCzQ1YurEcVg4viRkO9u6rPjttvWwMwGz585H1TfHgWNHMGRAGRYuHBXwOvwajhpagfXVx1FQWo6FC0ficG0HsO1bZCQbsHDh+UHbV9duxhM7v0S3XcD8+Qug0Qh4fM+XAMy48LxzMaok+PvdK5XfoqmuA+MmT8U5g3Kx7mA9sG87inIzsXDh2X73F4nPUR6x6YmoCp/8/Hzk5+f3eN6kSZNgNBpx8OBBTJ8+HYD44h0/fhz9+/cHAEybNg2PP/446urqUFBQAEBUlBkZGS6CyR2j0Qij0fNDTq/XR+Tm1tO6Sq+7mr9fWVUQyZt2IK+b8mHx/IiZExEi9d5Qm1BfZzX3p9E639BarVaVdfWK3BZjCLa67y/J4Pr8ZKNBFTsNWo0sfPRaTVhrpmo88yXSkow+1wzkGqYancmp8rFko8vrGyzpUpKs2cbkkGRacnivZ7JBhy6rBTbmfD3TksJbM8WgRVu3DRaHIJfKp6f4fj0DIUvrvJ1aHAI6reL+M1NCszUjRbwvmSwO6PV6dEkO27QkXUjr5aaLXj0HAyxMQJpOJ1d15WUkh7RmupTn02UT33PdNiYf7/k+oP7naKDrxUVyc0ZGBm655RY8/PDDWL16NQ4ePIhbb70VAHDVVVcBAObOnYuRI0fi+uuvx86dO7Fq1Sr86le/wrJly7wKm0SDgcq6iN4nEvPm1O7cbHBvYKjCdHb3dcItu9dpNR6J3OGWs/NJ5Erh4/5aBAtPaO2y2tTrN8SrzyyKxO4wk7CVvXxMKjRFBMT3Jbe1o9sm52KFun/enbrTfTJ9iHYadRr5+rZ129BtdcgVWKEkNwPKSjbXEv5wX8tIE9vWKXjmmWeg0+lw/fXXo6urC1OnTsW6deuQnZ0NQPw2+cknn+DWW2/FtGnTkJqaikWLFuHRRx+NsuUEkbgIERhZofb8L/fOzWrNFFOKHVXGYOg0sFmceVqGMAWau/Ax6jRhzwdUNjDk7QvCre7hzRvFRou8lF+dYaqdiiny4QxT5aQadeiy2tFhVgifENflVWLtbsIn1PJ4QRCQkaxHQ4cZrSarGIqE+HcZatdqj4GvvAt2iDb2FrFtnQK9Xo9nn30Wzz77rM9z+vfvH9HE3XjGQQ4fIsqE603gaF3K2dWfzq6GSHFfR40p8ka9Vu4yrNcKYQtJfj34jTXcvkDKNcxWh+xjDmdWl/h8p+fDamcuvydUUhSNEZ0NIcPfP59/1q3osB2qrXJ5vCRM21WYp5aRrENDhxlt3Vb5/ZORpAtZ8PK2Atzj06HS+I9IE9vWEaphJ+VDRBk1uiwDrh4ZNbxIyk7NGkE9z5RS6Kmxd+UNNFyPBwAYpDV4vxljmCEpwGmXxe6QW2iELVL04m1K2X8m3DWT5E7Y6vVFApQNF529kUINSbqHkTpVEBW8iWFrl1X2+IUjpNKkPDESPkRMYrU7ej6JICKIWrkzWpcQkrqdm9XwzHD0LsJHPW+K+8+h4i3UpdaaFsWMsnD3zkdeNJtUFD6KjtBqdcJ2Xdcud5sOVfikuXtTusMXFWmK0BTPwwlrvSRXr5RsI4W6iFjAZiePDxFd1Ap1qe7xUQopFbOxlaMv1MgbUnok1BU+VtXWlENdNmeOT7jXnc8Ua5W6AmsEFrZA5XZ2W9VLmAacIqfL4lB4fMIMdXHhYwk/1MVDU50Wu7xuODlYHuKMPD5ELEEeHyLahJuMy9Fq1E0aVuYJqeWVAiLg8VHcQNUISxkkwcej4GqEeowKjw/PxQp39hkPH3GPjwr6RH4tOy12uYWIUateqKvLake3JKhCreriAsdiE6uv1PD4pLp4fLQux0IhXkNdcVHOToQPCR8iWlw2vgT9c1Mwd6TvRqLBoLbHxyXUpUKyNEeZO6R+jo96Hh95TRUUhTLUxT9zwhV9yXKoS/T46FVwynGR55I3pEZys8vg1/ByfJTP67bZVcnxUYa6OlUo45eTm7vjS/jEtnWEatgouZmIEi/8aAIcDqbawFKt6kNK1RUo8lo6dXOHVA91uXk41BRTZpuzqivcUBcXAC0qenx4+Ek5/0qNUCwXaWars6or1FCXQStAI4geuW6LXRYqKWEMaFUmTKfyUFcY6/HSejXzkHoD8vgkCAPz4mQuBNEnUXNKu3IpNQSFUjxpwuxjo0RtQaV+VZfraxduQ0TAaZfNwVy6VoeDey6SKqEuyU4ufAxajSrvUbnnkHLifYjXShAE19CZCg0hUxWtAUxhNkRUPleedC+LMxI+RAzwp+sm4uKxxfjk59OjbQpBqIY6oS7nx6CKuifCOT4RCHWpHD7jLTTCFX1G3m9I8iaokYbF99qmYmI3oEhuVqGqC3B6kMTQWfjryTk+Cg9SODk+3D4uyniFnBo9kSJJbMsyQjX656bi5WsnRtsMglAVdUJdEZirAdfQiRq5Q66hLjWSm92Fj3rJzUrCTRg3yCJFFD7qJDdrXdZUK/Hem4cmHBGQpBjX0a1C2b0yudk5AiMMYabYL7cTcPZJilViW5YRBEH4QY1ZXUpRwlRMhVPaZgizsglwC3VFwOOjxs1fpxE8vGb6MEUf95a1qRrqcs3xUcvj422uWDihKddk6fA9Pt6Sm8MJSyW5CR9eyaZG2DSSkPAhCCKuUGoTNTwpkfL4uAxTVcXjoxA+KoTOPIazqrCmIAhe1g1ztIZbU0S9Jnx16iF8VLpR89BPi6LZohqhrm6r0+MTjgfJmdxsl3N80sJIblY2grTYHHJ4M9ZDXbFtHUEQhBtKr4waOT7hDub0hdLToYZnSnlzVqWPj05dgcJRCjRBhREg7naq4DyTb9htKnatVq7LS++Vx8JZT9kQMZyQJA9rmSw2RQPD8HN8ANfWAOTxIQiCUBGG+GjN4BLqUsGbkqS4OavxjdpDUKjUw8iguDHrteFPfPfwIKkY6uI3f7VyfPgNn4uAcIfJuoS6bOEPU1Xm+Jjk5OYwhJnidWvtcoo9tYRkpIht6wiCIOIUZeK16h4fFZJH3T08atgIuN701BB8Hp4pFe5akahoA5RdpkUREG6Sr7ehp+Fce+UYjE4Vytl1Wo38PuKdtY268MVupCHhQxAEEQF0qld1qevxcc/pUaNCDnAVFWqEz9zFkxoaJRIVbQCQbBDXlUVAmCEfuZzd4iyPDyexnXt8uq0OOcwXTjk7oAjvdVpc/h3LkPAhCCKuGFaYHm0TAsK1qkuNPj7qenzchY5ak+l1Ks9S8wzJhb2kh11q5/jwRGwuhEKF28WbNyp/RygoB5I2dJgBhC98uFeqRQrvxXpiM0B9fAiCiDMuHVeCjZWNGFakvgBiKtaz61UeraG2x8c990Qtj49O5caN7sJHjYice1hPjfYAgKcoCTfU5d7DKNw1xTCUa4FAOH18AOVIkfjx+JDwIQgirtBpNXjmqnHRNqNHXMrZ1UhuVtnjIwgCdBpBnuOnVo6PQWVPl7t4UsNM91CXGrlIgKfnKFwRYHDrYSQI4YUPBUFAqkEnJ3UD4Y+XcOY1SR6fGG9eCFCoiyAIIiLoXaq6Ys/jA7iKnXAbDTrXVDnHJyIen8jk+Hh4fMK8TrLHp0sUKkk6bdiJw8luHp6UMMUZ3yPvXRQPoa7Yt5AgCKKXULNQ3iW5OQY9PoBr0rUaPZHENVXO8fHw+IR/ldwFWcRCXeF6fNxyfNQQFcrQVopBG/ZwVmc4Tt1mkJGEhA9BEEQEUFsARNzjo1KoS6+y4HMPH6lhpvv1UCvUlaR2qMstx0cNwZusKF8Pp3khxynOJK8UCR+CIIjExFX4hH+3jrTHR7WqLpVDfO4iRQ3HlPua4Q5S5bh7O9TK8YmUxyeccRUcOQ+JV3XFePNCgIQPQRCEjLpDSmO7jw/gKs7UC3XFX1WXWhVtHh6fMEWA+0wxNbwpyhyfZBU9Pm3d6tkYaUj4EARBRAC1PT4uQ0rV8vhEJNSlbojPo6orAg0MVRN9Wo3LdVc/1KWGx8cpdlTx+EjvRZ6AHc40+t6ChE+Mkp5EnQYIIp5Ru59Nv+wUDCtMR16aEf3zUsJeD3AbqxGRqi41hI+rKIlljw+grmfOY7SGCqJC2cQw3OaFgGfJfTxUddHdNcZYvvgs/O7TffhDHPQpIQjCN8obtho9cgw6DVbeOQN2B1MxH0fdJouAWxm/CqPU3fcaieRmtV5PQPTydEoDQMPP8XF9vhoenxSjysJHsol3q1Zr4GskIeETY5w/vADnDy+IthkEkZCoOfld7VwXQGo6qFJICnAfpKqOjXqV9+0uyFQRPm7eLTU9Pkqxo1aoi6PG66ms5EpTIcfHXYyp9V6PJLFvIUEQRByiVTnHJxIoRZR6Iysim+OjSlWXmydKrRwfwD3UpbbwCd9O1UNdJHwIgiAIwC3UpVL+jNq4lrOr38dHjZugViNA2axYlRyfCHp8jC4enzBzfCIQkktRuZzdXYzFqshXEpt/jQRBEL3IpP7ZAIArJvZTbU21k3wjQSTEmVJEqNHHB3ANTanTx8fd46Nmjo/C46PSkFKOXoXNK7086iQ3u+5RzXypSEE5PgRBJDzLbzwLm481YcaQfNXWVLucPRK4DlKNzens4poCpHxhVTw+giBArxVgtas7oBVwFTvhhrrc82fUEBWZyXr550QNdZHwIQgi4clI0mP2iEJV11R7ZEUk0Ee4qku16jNlo0WVNIpOo4HVbvdYP1yUc7+SDeqWs6shoJXCJy0iwic2Rb6S2PxrJAiCiHNch5TG5s0gEuJMGTJTK9SlvLmqMaQUcL1Bq5nc7OLxCTPU5W6XGtcoO8Ug/1yQYQx7PXfhE6v5bEpi30KCIIg4JDvF+c06PUnv58zooY3AdHZlxVQkxJRaGtLV2xWZHJ9wGw56lt2Hb+eQwjT558EFaX7ODAyj+9yzGBX5SijURRAEEQEq8tPwyrUTkWrUuoQXYgnX8RLqJyKrNfxT5+KdUWVJtzXVLGdXr6pLG4GKKaNOizX/byY6zDYUpCeFvR7l+BAEQRAyF40tjrYJftFGZGSF+h4f5TpqaRTXBpNqNjBUr4+Pe+6RWiHTIYXpqqwDeJl0HwfCJ/YtJAiCICKC8ial5qBOjlo5PpFIblbuV9UcHxU7N7vbFYv5Mx42xkGoK/ZeRYIgCKJXiERysz4SCdNa9XN8IjGgFXDdc7iTyt1zfGIxf8bdKxWLNrpDwocgCCJBcRlZEcN9fFwqsGLc46PsMq1+jk/s3bLjwUZ3Yt9CgiAIIkKoP6vLJWFareRmhW1qaZRIzVJjimr7cMvZPXN8Yu+W7WFjDIbj3Il9CwmCIIiIo9p09gjk+Ggj0cAwQlVdNodT+WjCXNezj0/shZHcbTToYs9Gd0j4EARBEOpNZ49wx2rVQl2C0tulnp2NHWbV1ooHb4rnwNfYs9Gd2LeQIAiCiDjqhbqUHavVucUIiJ8cH97CYFRJRthrCYIQkXlqahKPVV3Ux4cgCIJQsZw9ssNZ1ZzVJf+sop3nDc3HJz+fjgF5qaqsp9UIsEvhM0Mc5PjEoo3ukPAhCIIgIAhqhbqUOT7q3wQjkdys5pBSQRAwujRTtfV0GgEW/nMMelM8PT6xL3xi30KCIAgiQqgz8FOJPgKdm5WopM9cS/ljOC8lEt211cRdjKkpIiNF7L2KBEEQRNwSiT4+iMC91CXHJwY9KRy9y+sZe3Z6NjCMfVkR+xYSBEEQEcFmV9/jo7wRxnJps2tVVwzb6ZLcHHu3bK2bF0rNRPFIEXuvIkEQBNErdFpsqq9ZmpUs/+x+U4wlNBGq6lIbXYRykdRC6xZ7jOXXkkPJzQRBEAlKp9mu+prZqQbcN384qpo6MSA3RfX1I4H7TKxYQikkNGolOKmIe5iQhA9BEAQRs4wry8KXh+pVX/fWWYPUXVD9iJwL8ZLjE4uiwt0LFYs2ukPChyAIIkG5bdYgpBt1uGBEQbRN8YudRVb5xGIIiePaaDGKhvjAXei4h75iERI+BEEQCUqSXoulMyuibUaPKOdfRYJY9lIoRZlavZbUxF00xnDUUCYOTCQIgiASGbvDEdH148bjE4PCJx49PiR8CIIgiJgmEmX3yuhZLHpSOLqYz/GhcnaCIAiCUBVHRHJ8IpwxrRK6WK/qchM6sSwiOSR8CIIgCCJGidQUebWI5TChL0j4EARBEDHNs1eNQ1aKHo9eOiLapvQ6uhiv6tKQ8CEIgiAIdRnbLwvbf30hfnxWWbRN6XVivYFhPELChyAIgoh51M4diXBrINUg4aM+JHwIgiCIhCNOdI9LeXgs5vjEIyR8CIIgCCJGUXq64jGfJhYh4UMQBEEkHB3d6k+mjwTKhOZ4aA4YD5DwIQiCIBKOhk5ztE0ICI2LxyeKhvQh6GUkCIIgEo5HLhkFALhj9pAoW+IfpfAhj4860JBSgiAIIuGYOTQfux+Zi/QkfbRNCRhKblYH8vgQBEEQCUk8iB6mqD+j5GZ1IOFDEARBEHEA9fFRh7gRPocOHcJll12GvLw8ZGRkYPr06Vi/fr3LOVVVVbjooouQkpKCgoIC3HPPPbDZ4iNznyAIgiD8QTk+6hA3wufiiy+GzWbDunXrsHXrVowbNw4XX3wxampqAAB2ux0XXXQRLBYLvv32W7z11lt488038Zvf/CbKlhMEQRBE+FBVlzrExcvY0NCAw4cP4/7778fYsWMxZMgQPPnkkzCZTNizZw8AYPXq1di3bx/+8Y9/YPz48ViwYAF+97vf4ZVXXoHFYonyDgiCIAgieJSjNcjjow5xIXxyc3MxbNgw/P3vf0dnZydsNhv+/Oc/o6CgAJMmTQIAbNy4EWPGjEFhYaH8vHnz5qGtrQ179+6NlukEQRAEoQpU1aUOcVHOLggC1q5di8svvxzp6enQaDQoKCjAypUrkZ2dDQCoqalxET0A5H/zcJg3zGYzzGZnI6u2tjYAgNVqhdVqVW0PfC0114wlgtmfeIpePj9eXpJ4u4bBvs7xtr9g6ev7A/r+Hvv6/gDPPdodDvmxeMhZ7enaRPIaBrpmVIXP/fffj6eeesrvOfv378ewYcOwbNkyFBQUYMOGDUhOTsbrr7+OSy65BJs3b0ZxcXHINjzxxBP47W9/63F89erVSElJCXldX6xZs0b1NWOJQPbX3a0FcDEAYNWqVUhKskfYKnWJl2sY6uscL/sLlb6+P6Dv77Gv7w9w7rGmRgMenFmxYkUULfKHU0oEamMkrqHJZAroPIExFrUhtfX19WhsbPR7TkVFBTZs2IC5c+eiubkZGRkZ8mNDhgzBkiVLcP/99+M3v/kN/vvf/2LHjh3y48eOHUNFRQW2bduGCRMmeF3fm8enrKwMDQ0NLr8rXKxWK9asWYMLL7wQen3s944IlmD219kJZGeL5zQ3W5Ga2hsWhk+8XcNgX+d421+w9PX9AX1/j319f4DnHpe9swOr99UBAA7/bm6UrfPOkF+vln/uycZIXsO2tjbk5eWhtbXV7/07qh6f/Px85Ofn93geV3Eat5R2jUYDh+QGnDZtGh5//HHU1dWhoKAAgKgoMzIyMHLkSJ9rG41GGI1Gj+N6vT4if1iRWjdWCGR/yofF8yNslMrEyzUM9XWOl/2FSl/fH9D399jX9wc496gRNC7HYp1AbYzENQx0vbhIbp42bRqys7OxaNEi7Ny5E4cOHcI999yDY8eO4aKLLgIAzJ07FyNHjsT111+PnTt3YtWqVfjVr36FZcuWeRU2BEEQBEEkHnEhfPLy8rBy5Up0dHTgggsuwOTJk/H111/j448/xrhx4wAAWq0Wn3zyCbRaLaZNm4af/OQnuOGGG/Doo49G2XqCIAiCCA3lyApCHeKiqgsAJk+ejFWrVvk9p3///jGc/EUQBEEQRLSJC48PQRAEQSQi0Ss/6ruQ8CEIgiAIImEg4UMQBEEQMQo5fNSHhA9BEARBxCh6LY2pUBsSPgRBEAQRoxi0dJtWG3pFCYIgCCJG0ceB8LnlvEEAgPvmD4+yJYERN+XsBEEQBJFoGHSxL3zuunAorpzUD4ML0qJtSkDE/itKEARBEAlKPHh8DDpN3IgegIQPQRAEQcQsaUYKzKgNvaIEQRAEEaP8dMZArNpbg0vGlUTblD4DCR+CIAiCiFGyUgxYc9d50TajT0GhLoIgCIIgEgYSPgRBEARBJAwkfAiCIAiCSBhI+BAEQRAEkTCQ8CEIgiAIImEg4UMQBEEQRMJAwocgCIIgiISBhA9BEARBEAkDCR+CIAiCIBIGEj4EQRAEQSQMJHwIgiAIgkgYSPgQBEEQBJEwkPAhCIIgCCJhIOFDEARBEETCoIu2AbEGYwwA0NbWpuq6VqsVJpMJbW1t0Ov1qq4dCwSzv85O589tbYDdHmHjVCLermGwr3O87S9Y+vr+gL6/x76+P6Dv7zGS++P3bX4f9wUJHzfa29sBAGVlZVG2JDEoKYm2BYkBvc4EQSQK7e3tyMzM9Pm4wHqSRgmGw+HAmTNnkJ6eDkEQVFu3ra0NZWVlOHnyJDIyMlRbN1bo6/sD+v4eaX/xT1/fY1/fH9D39xjJ/THG0N7ejpKSEmg0vjN5yOPjhkajQb9+/SK2fkZGRp98M3P6+v6Avr9H2l/809f32Nf3B/T9PUZqf/48PRxKbiYIgiAIImEg4UMQBEEQRMJAwqeXMBqNePjhh2E0GqNtSkTo6/sD+v4eaX/xT1/fY1/fH9D39xgL+6PkZoIgCIIgEgby+BAEQRAEkTCQ8CEIgiAIImEg4UMQBEEQRMJAwocgCIIgiISBhE8v8Morr2DAgAFISkrC1KlT8f3330fbpIB44okncNZZZyE9PR0FBQW4/PLLcfDgQZdzZs2aBUEQXP675ZZbXM6pqqrCRRddhJSUFBQUFOCee+6BzWbrza345JFHHvGwf/jw4fLj3d3dWLZsGXJzc5GWloYrrrgCtbW1LmvE8v4GDBjgsT9BELBs2TIA8Xf9vvrqK1xyySUoKSmBIAj46KOPXB5njOE3v/kNiouLkZycjDlz5uDw4cMu5zQ1NeG6665DRkYGsrKysGTJEnR0dLics2vXLsyYMQNJSUkoKyvD008/Hemtyfjbo9VqxX333YcxY8YgNTUVJSUluOGGG3DmzBmXNbxd9yeffNLlnGjtsadruHjxYg/b58+f73JOPF9DAF7/JgVBwDPPPCOfE6vXMJD7glqfm1988QUmTpwIo9GIwYMH480331RnE4yIKP/617+YwWBgb7zxBtu7dy9bunQpy8rKYrW1tdE2rUfmzZvHli9fzvbs2cN27NjBFi5cyMrLy1lHR4d8znnnnceWLl3Kqqur5f9aW1vlx202Gxs9ejSbM2cO2759O1uxYgXLy8tjDzzwQDS25MHDDz/MRo0a5WJ/fX29/Pgtt9zCysrK2Oeff862bNnCzj77bHbOOefIj8f6/urq6lz2tmbNGgaArV+/njEWf9dvxYoV7KGHHmIffPABA8A+/PBDl8effPJJlpmZyT766CO2c+dOdumll7KBAweyrq4u+Zz58+ezcePGse+++45t2LCBDR48mP34xz+WH29tbWWFhYXsuuuuY3v27GHvvPMOS05OZn/+85+jvseWlhY2Z84c9u9//5sdOHCAbdy4kU2ZMoVNmjTJZY3+/fuzRx991OW6Kv9uo7nHnq7hokWL2Pz5811sb2pqcjknnq8hY8xlb9XV1eyNN95ggiCwyspK+ZxYvYaB3BfU+Nw8evQoS0lJYXfddRfbt28fe+mll5hWq2UrV64Mew8kfCLMlClT2LJly+R/2+12VlJSwp544okoWhUadXV1DAD78ssv5WPnnXce+8UvfuHzOStWrGAajYbV1NTIx1599VWWkZHBzGZzJM0NiIcffpiNGzfO62MtLS1Mr9ezd999Vz62f/9+BoBt3LiRMRb7+3PnF7/4BRs0aBBzOByMsfi+fu43FIfDwYqKitgzzzwjH2tpaWFGo5G98847jDHG9u3bxwCwzZs3y+d89tlnTBAEdvr0acYYY3/6059Ydna2y/7uu+8+NmzYsAjvyBNvN013vv/+ewaAnThxQj7Wv39/9vzzz/t8Tqzs0Zfwueyyy3w+py9ew8suu4xdcMEFLsfi5Rq63xfU+ty899572ahRo1x+1zXXXMPmzZsXts0U6oogFosFW7duxZw5c+RjGo0Gc+bMwcaNG6NoWWi0trYCAHJyclyOv/3228jLy8Po0aPxwAMPwGQyyY9t3LgRY8aMQWFhoXxs3rx5aGtrw969e3vH8B44fPgwSkpKUFFRgeuuuw5VVVUAgK1bt8Jqtbpcv+HDh6O8vFy+fvGwP47FYsE//vEP3HTTTS4DeOP9+nGOHTuGmpoal+uVmZmJqVOnulyvrKwsTJ48WT5nzpw50Gg02LRpk3zOzJkzYTAY5HPmzZuHgwcPorm5uZd2Ezitra0QBAFZWVkux5988knk5uZiwoQJeOaZZ1zCCLG+xy+++AIFBQUYNmwYbr31VjQ2NsqP9bVrWFtbi08//RRLlizxeCwerqH7fUGtz82NGze6rMHPUePeSUNKI0hDQwPsdrvLxQWAwsJCHDhwIEpWhYbD4cCdd96Jc889F6NHj5aPX3vttejfvz9KSkqwa9cu3HfffTh48CA++OADAEBNTY3X/fPHos3UqVPx5ptvYtiwYaiursZvf/tbzJgxA3v27EFNTQ0MBoPHDaWwsFC2Pdb3p+Sjjz5CS0sLFi9eLB+L9+unhNvjzV7l9SooKHB5XKfTIScnx+WcgQMHeqzBH8vOzo6I/aHQ3d2N++67Dz/+8Y9dBj7ecccdmDhxInJycvDtt9/igQceQHV1NZ577jkAsb3H+fPn44c//CEGDhyIyspKPPjgg1iwYAE2btwIrVbb567hW2+9hfT0dPzwhz90OR4P19DbfUGtz01f57S1taGrqwvJyckh203ChwiIZcuWYc+ePfj6669djt98883yz2PGjEFxcTFmz56NyspKDBo0qLfNDJoFCxbIP48dOxZTp05F//798Z///CesP6xY5G9/+xsWLFiAkpIS+Vi8X79Exmq14uqrrwZjDK+++qrLY3fddZf889ixY2EwGPCzn/0MTzzxRMyPQvjRj34k/zxmzBiMHTsWgwYNwhdffIHZs2dH0bLI8MYbb+C6665DUlKSy/F4uIa+7guxDoW6IkheXh60Wq1HNnttbS2KioqiZFXw3H777fjkk0+wfv169OvXz++5U6dOBQAcOXIEAFBUVOR1//yxWCMrKwtDhw7FkSNHUFRUBIvFgpaWFpdzlNcvXvZ34sQJrF27Fj/96U/9nhfP14/b4+/vraioCHV1dS6P22w2NDU1xdU15aLnxIkTWLNmjYu3xxtTp06FzWbD8ePHAcTHHjkVFRXIy8tzeU/2hWsIABs2bMDBgwd7/LsEYu8a+rovqPW56eucjIyMsL+UkvCJIAaDAZMmTcLnn38uH3M4HPj8888xbdq0KFoWGIwx3H777fjwww+xbt06D7eqN3bs2AEAKC4uBgBMmzYNu3fvdvmg4h/UI0eOjIjd4dDR0YHKykoUFxdj0qRJ0Ov1Ltfv4MGDqKqqkq9fvOxv+fLlKCgowEUXXeT3vHi+fgMHDkRRUZHL9Wpra8OmTZtcrldLSwu2bt0qn7Nu3To4HA5Z9E2bNg1fffUVrFarfM6aNWswbNiwmAiRcNFz+PBhrF27Frm5uT0+Z8eOHdBoNHKIKNb3qOTUqVNobGx0eU/G+zXk/O1vf8OkSZMwbty4Hs+NlWvY031Brc/NadOmuazBz1Hl3hl2ejThl3/961/MaDSyN998k+3bt4/dfPPNLCsryyWbPVa59dZbWWZmJvviiy9cSipNJhNjjLEjR46wRx99lG3ZsoUdO3aMffzxx6yiooLNnDlTXoOXLc6dO5ft2LGDrVy5kuXn58dMuffdd9/NvvjiC3bs2DH2zTffsDlz5rC8vDxWV1fHGBPLMsvLy9m6devYli1b2LRp09i0adPk58f6/hgTKwnLy8vZfffd53I8Hq9fe3s72759O9u+fTsDwJ577jm2fft2uaLpySefZFlZWezjjz9mu3btYpdddpnXcvYJEyawTZs2sa+//poNGTLEpRS6paWFFRYWsuuvv57t2bOH/etf/2IpKSm9Vgrtb48Wi4VdeumlrF+/fmzHjh0uf5e8Gubbb79lzz//PNuxYwerrKxk//jHP1h+fj674YYbYmKP/vbX3t7OfvnLX7KNGzeyY8eOsbVr17KJEyeyIUOGsO7ubnmNeL6GnNbWVpaSksJeffVVj+fH8jXs6b7AmDqfm7yc/Z577mH79+9nr7zyCpWzxxMvvfQSKy8vZwaDgU2ZMoV999130TYpIAB4/W/58uWMMcaqqqrYzJkzWU5ODjMajWzw4MHsnnvucekDwxhjx48fZwsWLGDJycksLy+P3X333cxqtUZhR55cc801rLi4mBkMBlZaWsquueYaduTIEfnxrq4udtttt7Hs7GyWkpLCfvCDH7Dq6mqXNWJ5f4wxtmrVKgaAHTx40OV4PF6/9evXe31PLlq0iDEmlrT/+te/ZoWFhcxoNLLZs2d77LuxsZH9+Mc/ZmlpaSwjI4PdeOONrL293eWcnTt3sunTpzOj0chKS0vZk08+2Vtb9LvHY8eO+fy75L2Ztm7dyqZOncoyMzNZUlISGzFiBPv973/vIhyiuUd/+zOZTGzu3LksPz+f6fV61r9/f7Z06VKPL4rxfA05f/7zn1lycjJraWnxeH4sX8Oe7guMqfe5uX79ejZ+/HhmMBhYRUWFy+8IB0HaCEEQBEEQRJ+HcnwIgiAIgkgYSPgQBEEQBJEwkPAhCIIgCCJhIOFDEARBEETCQMKHIAiCIIiEgYQPQRAEQRAJAwkfgiAIgiASBhI+BEH0CGMMN998M3JyciAIgjzagvDEYrFg8ODB+Pbbb1Vdd+XKlRg/fjwcDoeq6xJEokHChyCIHlm5ciXefPNNfPLJJ6iursbo0aOjbVLM8tprr2HgwIE455xz5GOCIOCjjz7yOHfx4sW4/PLLA1p3/vz50Ov1ePvtt1WylCASExI+BEH0CB/ces4556CoqAg6nc7jHIvFEgXLYgvGGF5++WUsWbIkIusvXrwYL774YkTWJohEgYQPQRB+Wbx4MX7+85+jqqoKgiBgwIABAIBZs2bh9ttvx5133om8vDzMmzcPALBnzx4sWLAAaWlpKCwsxPXXX4+GhgZ5vc7OTtxwww1IS0tDcXEx/vCHP2DWrFm488475XO8eUiysrLw5ptvyv8+efIkrr76amRlZSEnJweXXXYZjh8/7mL35ZdfjmeffRbFxcXIzc3FsmXLXKZZm81m3HfffSgrK4PRaMTgwYPxt7/9DYwxDB48GM8++6yLDTt27IAgCDhy5IjX12rr1q2orKzERRddFMQrLHL8+HEIguDx36xZs+RzLrnkEmzZsgWVlZVBr08QhAgJH4Ig/PLCCy/g0UcfRb9+/VBdXY3NmzfLj7311lswGAz45ptv8Nprr6GlpQUXXHABJkyYgC1btmDlypWora3F1VdfLT/nnnvuwZdffomPP/4Yq1evxhdffIFt27YFZZPVasW8efOQnp6ODRs24JtvvkFaWhrmz5/v4nlav349KisrsX79erz11lt48803XcTTDTfcgHfeeQcvvvgi9u/fjz//+c9IS0uDIAi46aabsHz5cpffu3z5csycORODBw/2ateGDRswdOhQpKenB7UfACgrK0N1dbX83/bt25Gbm4uZM2fK55SXl6OwsBAbNmwIen2CICRUGXVKEESf5vnnn2f9+/d3OXbeeeexCRMmuBz73e9+x+bOnety7OTJk/J0+Pb2dmYwGNh//vMf+fHGxkaWnJzMfvGLX8jHALAPP/zQZZ3MzEx5OvP//d//sWHDhjGHwyE/bjabWXJyMlu1ahVjjLFFixax/v37M5vNJp9z1VVXsWuuuYYxxtjBgwcZALZmzRqvez59+jTTarVs06ZNjDHGLBYLy8vLY2+++aaPV4mxX/ziF+yCCy7wOA6AJSUlsdTUVJf/dDodu+yyyzzO7+rqYlOnTmUXX3wxs9vtLo9NmDCBPfLIIz5tIAjCP56BeoIgiACZNGmSy7937tyJ9evXIy0tzePcyspKdHV1wWKxYOrUqfLxnJwcDBs2LKjfu3PnThw5csTDs9Ld3e0SBho1ahS0Wq387+LiYuzevRuAGLbSarU477zzvP6OkpISXHTRRXjjjTcwZcoU/O9//4PZbMZVV13l066uri4kJSV5fez555/HnDlzXI7dd999sNvtHufedNNNaG9vx5o1a6DRuDrmk5OTYTKZfNpAEIR/SPgQBBEyqampLv/u6OjAJZdcgqeeesrj3OLiYp+5Me4IggDGmMsxZW5OR0cHJk2a5LXCKT8/X/5Zr9d7rMvLwZOTk3u046c//Smuv/56PP/881i+fDmuueYapKSk+Dw/Ly9PFlbuFBUVeYTI0tPT0dLS4nLssccew6pVq/D99997DZk1NTW57JEgiOAg4UMQhGpMnDgR77//PgYMGOC18mvQoEHQ6/XYtGkTysvLAQDNzc04dOiQi+clPz8f1dXV8r8PHz7s4uWYOHEi/v3vf6OgoAAZGRkh2TpmzBg4HA58+eWXHp4YzsKFC5GamopXX30VK1euxFdffeV3zQkTJuDVV18FYwyCIARt0/vvv49HH30Un332GQYNGuTxOPdoTZgwIei1CYIQoeRmgiBUY9myZWhqasKPf/xjbN68GZWVlVi1ahVuvPFG2O12pKWlYcmSJbjnnnuwbt067NmzB4sXL/YI51xwwQV4+eWXsX37dmzZsgW33HKLi/fmuuuuQ15eHi677DJs2LABx44dwxdffIE77rgDp06dCsjWAQMGYNGiRbjpppvw0UcfyWv85z//kc/RarVYvHgxHnjgAQwZMgTTpk3zu+b555+Pjo4O7N27N4hXTWTPnj244YYbcN9992HUqFGoqalBTU0Nmpqa5HO+++47GI3GHu0gCMI3JHwIglCNkpISfPPNN7Db7Zg7dy7GjBmDO++8E1lZWbK4eeaZZzBjxgxccsklmDNnDqZPn+6RK/SHP/wBZWVlmDFjBq699lr88pe/dAkxpaSk4KuvvkJ5eTl++MMfYsSIEViyZAm6u7uD8gC9+uqruPLKK3Hbbbdh+PDhWLp0KTo7O13OWbJkCSwWC2688cYe18vNzcUPfvCDkJoMbtmyBSaTCY899hiKi4vl/374wx/K57zzzju47rrr/IbbCILwj8DcA+kEQRC9zKxZszB+/Hj88Y9/jLYpHmzYsAGzZ8/GyZMnUVhY2OP5u3btwoUXXojKykqvSd6h0tDQgGHDhmHLli0YOHCgausSRKJBHh+CIAgvmM1mnDp1Co888giuuuqqgEQPAIwdOxZPPfUUjh07pqo9x48fx5/+9CcSPQQRJpTcTPz/9uzYBKAQhqJoRrLIQIKb2bimC/zmg907p09IeSHAh3NOrbVqjFF771+zc87n93R3dffzvZDGqwsAiOHVBQDEED4AQAzhAwDEED4AQAzhAwDEED4AQAzhAwDEED4AQAzhAwDEuPmM3Oov4L+GAAAAAElFTkSuQmCC", 198 | "text/plain": [ 199 | "
" 200 | ] 201 | }, 202 | "metadata": {}, 203 | "output_type": "display_data" 204 | } 205 | ], 206 | "source": [ 207 | "freqs = torch.linspace(1, max_freq, max_freq)\n", 208 | "power = torch.zeros_like(freqs)\n", 209 | "\n", 210 | "with torch.no_grad():\n", 211 | " for f in range(freqs.shape[0]):\n", 212 | " x = get_seq(t, freqs[f], 0) * hamming_window \n", 213 | " y = model(x)\n", 214 | " norm = torch.sqrt(torch.dot(x[0,0,:],x[0,0,:]))\n", 215 | " power[f] = 10*torch.log(torch.sqrt(torch.dot(y[0,0,:],y[0,0,:]))/norm)\n", 216 | "\n", 217 | "\n", 218 | " fig, ax = plt.subplots()\n", 219 | " ax.plot(freqs, power.detach().numpy())\n", 220 | " ax.set(xlabel='frequency (Hz)', ylabel='Power (dB)', title='Filter response')\n", 221 | " plt.axvline(x = cutoff_low, color = 'b')\n", 222 | " plt.axvline(x = cutoff_high, color = 'b')\n", 223 | " ax.grid()\n", 224 | " plt.show()" 225 | ] 226 | } 227 | ], 228 | "metadata": { 229 | "kernelspec": { 230 | "display_name": "yolo7", 231 | "language": "python", 232 | "name": "python3" 233 | }, 234 | "language_info": { 235 | "codemirror_mode": { 236 | "name": "ipython", 237 | "version": 3 238 | }, 239 | "file_extension": ".py", 240 | "mimetype": "text/x-python", 241 | "name": "python", 242 | "nbconvert_exporter": "python", 243 | "pygments_lexer": "ipython3", 244 | "version": "3.11.3" 245 | }, 246 | "orig_nbformat": 4 247 | }, 248 | "nbformat": 4, 249 | "nbformat_minor": 2 250 | } 251 | --------------------------------------------------------------------------------