diff --git a/TD2 Deep Learning.ipynb b/TD2 Deep Learning.ipynb index 4fc201fadcea10de00c1f33961779fdee4e3f24a..b7f56959780244b8f89b795c0c63c1b7f245a609 100644 --- a/TD2 Deep Learning.ipynb +++ b/TD2 Deep Learning.ipynb @@ -642,6 +642,14 @@ "Compare the results obtained with this new network to those obtained previously." ] }, + { + "cell_type": "markdown", + "id": "5fc0042c", + "metadata": {}, + "source": [ + "### On crée la nouvelle architecture du réseau CNN de la même manière." + ] + }, { "cell_type": "code", "execution_count": 15, @@ -666,7 +674,6 @@ "source": [ "# define the CNN architecture\n", "\n", - "\n", "class Net(nn.Module):\n", " def __init__(self):\n", " super(Net, self).__init__()\n", @@ -704,6 +711,14 @@ " model2.cuda()" ] }, + { + "cell_type": "markdown", + "id": "77f1c0c2", + "metadata": {}, + "source": [ + "### On entraine maintenant l'algorithme" + ] + }, { "cell_type": "code", "execution_count": 16, @@ -23540,6 +23555,14 @@ " valid_loss_min = valid_loss" ] }, + { + "cell_type": "markdown", + "id": "087efcde", + "metadata": {}, + "source": [ + "### On affiche le train lost en fonction du nombre d'époches" + ] + }, { "cell_type": "code", "execution_count": 13, @@ -23584,6 +23607,14 @@ "plt.show()" ] }, + { + "cell_type": "markdown", + "id": "72cdf907", + "metadata": {}, + "source": [ + "### On calcule la precision du modèle sur une base de données test" + ] + }, { "cell_type": "code", "execution_count": 14, @@ -23674,6 +23705,16 @@ ")" ] }, + { + "cell_type": "markdown", + "id": "1b3aa30d", + "metadata": {}, + "source": [ + "### La précision est meilleure pour presque toutes les classes (la classe truck a une précision plus faible).\n", + "\n", + "### Au global, la précision avec cette nouvelle architecture est meilleure (71%) que la précedente (62%)." + ] + }, { "cell_type": "markdown", "id": "bc381cf4", @@ -23885,10 +23926,38 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 32, "id": "b4d13080", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/franck/Library/Python/3.8/lib/python/site-packages/torchvision/models/_utils.py:223: UserWarning: Arguments other than a weight enum or `None` for 'weights' are deprecated since 0.13 and may be removed in the future. The current behavior is equivalent to passing `weights=ResNet50_Weights.IMAGENET1K_V1`. You can also use `weights=ResNet50_Weights.DEFAULT` to get the most up-to-date weights.\n", + " warnings.warn(msg)\n", + "Downloading: \"https://download.pytorch.org/models/resnet50-0676ba61.pth\" to /Users/franck/.cache/torch/hub/checkpoints/resnet50-0676ba61.pth\n", + "100%|██████████| 97.8M/97.8M [00:01<00:00, 61.2MB/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Predicted class is: Golden Retriever\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAJ8AAADnCAYAAAAAaoRMAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/OQEPoAAAACXBIWXMAAAsTAAALEwEAmpwYAADjrklEQVR4nOz9R7NtSZKliX1GNjvkkkedB8nIquRdVd1ASaNL0GiBSGMCgbQ0/hEmGAH4AxDBCEMMQAQj9AS0Cl2kK2lkREZGeoT7e/7IZYdtZmaKgZrtcz2yyj0qfJAD5Il47v7uPWSfbWpqqkuXLjUiwt8//v7xd/Gwf9cX8PeP//99/L3x/f3j7+zx98b394+/s8ffG9/fP/7OHn9vfH//+Dt7+G/65cXltbx88eH5ByKAAOb8M/Or/2Hy/8vf5fzS5Wnm/D7flm2X5z96mpR//sql/K2Xfe35/64fPPqN+dW/yr/rBX/73f/WB8nX//roL1J+8ujz5dHr9F9y/o187VkYwBj9QBFBUiKJ6H+LIKI/L7//2sf/yt+NMWAMpvxZ1g3In1H+22AwZQlEzuu7rLMpLyGJkGLQPyny1ds370XkOf+Oxzca38sXH/G//t/87yFFjCQwAkmvyhiLsTbfGksUCwassVirF2NMAkkYSXpjkiAYjH1kmJJA8u01Vv8sDtlgrQWrP0sipHS+uUIiRTnfzMc3lWxA+b2NUXMqCyR6QRgk250pq5JfB8YIhoghICkhibxY5R4sS5SNQT9LyufK2YhERA0lpbNhiRBSAomklEgpElMixaTvIpJ/noCEAWpv8c6SojBMI8M4EkIkpESYEyEGUkr6/fKFJjlfn0HACM56rHMYa7HG6v2RhLUG7yqcc4sxeu/w3mOMIcYIJJz1OOew1uKd/rdgSCIMp4HD/Vv2D6/4X/yv/pef//vs6xuNrxiAYPWrf83TGCyWxcdZtXpEIMlieJYIRrAJyEaIlFcJUozPqJElnN4s1AiMEWw2BIzFWFPsHxGLQYj5ZptHO9aa4nv1A3Xn6mvT4tcMug+KkWajLcYFIAYRu3j9RPl+ZYOxeJ1UvIt83YvpguuWEmv0xwaS5P1c3J+wfL6ks+cRTHY4QkyCcwbrLK6qaETwNjLFiLURFy0p6X0VgShgkxoWTh2CNajRWY8xFknyaGMbkhWMJAz2a5vaWnUKISaSJIxYXPacku+xNYa2a0nxCTGFb7SsbzQ+ARLq4WzeieffGaKAy3fLLOaSfcijGyrJkBAc4G3C5BufUn6NcUg2DsSQJBsmYLKnK19cTV5/ln+1fO7j69PPO3sMHj3XFKMz56MspfMPzGI4xXANWIukmD2X/t4UL7m8ffF+ix/92u+sEVK+ChBM/oiUN6Mx+bsZQzKQ8sYsflkkMceEd+pt6qrCW/VGfo5MYSYk3YwpGVJMWFHPGaPBWqOb0tivfddULtRa/Z3JhxBg7dePZ2sdHkNKM0kic9D1d7hy40gYfNvSpWffZF6/jufLN8+4c8xiwJTYIlu7msU5DisHH4iepCkhRBJWn28MGFl2tWBIxqk3M4BRP6XHAYs3LMeRIKR815Y4qPxO8uIbOXsyJDsivcDl+vJCGPt14zWPrSf/wGAx5egsp0D2sLY4x+WOlZjtfKifTe98LcaAxSDGYmyClBfaAtFgjOAspFT+JPp5osVQOYexHsSCN4g12JiIkohRSM7mYzzinXv0XQTJ7xckLZvFGYt1BmcMFrMctcbIcrJYa3DOEqMhxpmYImBJ3ixrVTy/q7tvtKtvNb4SOmjcZOGxAVIWXhZPgjzyHhikxFomEbG4Yqx6Xp3jsOVYPy+mwQJJb3oEY4VY4rXy/HwtkjeAxjaRFGYqZ6hqB8YQo/2VoDupARoD2CWAX8K44pZyzKSeSTDWZm8sZ2t7ZKl6i/LflzBFj72vxYJ541hTjmL1GPoDs3jWsmlMNowYAzFEgpmX5yQjiHU4YzEmYmKEHLI464km5g17DnWSSUscao3FWavGZy3O6Z+q8vqFJGKt/g5jSTHmr+1IKRJCIAk4Z5e1PH/edzC+5csvfk+WWOdr3mX5bVKvWAKn7NmCGBCLOIvVvZ5f8ygeemxPxmJNyvmIqPGW80GWaF+D8eKBsqFP00To7zBtoK42CB0inpQTGbN4wJT/nxMc0SM1ismGr2dP8VIWwZQFf3Qsg80Jin5fg5Ak5rwpb1gBka97Bv2eerSlpKeJhs0JkZjfy2JNJJZ4MG/IOUQSmuDld8rrorGZN0Iq12MsUVI+ugURS0oRsRFrLN45vPOaOFiTDU2PWGMsCU9CCGIwSZZkxrqaJEGNWRJEUU9sPBAx39341FNZU3Z6NjIx2RWXJSiZYQ7bS0KHW26ZGtejJIPz0Ur2QiURKca5mHQOosmZWXGyxQGKSF48IYbAPOyI/StOvWW1+RRrnxNpsdYvBmzJr/+aRyxHeLlGUxwyVqwmUJwNT1+a8iI/ui4pCx3z/Tob3wKJmGKUafHYmlWHnOFqSKAJUoFV1ChFBEJCHMvnloSvZNMmx2sWB3K+bwlBYgKr3t97j3NevXr+PgnJBqjOIgmExQTyEW4M+BqJM0gkpogrCU0JGr+L8RlTMkL07C97tqxXxn3O0EI+nozebDgbDMv9LouX1JssbyePFlGDEiMxn4CaZpgMsRSvhDHIknno3bG+Irkt0/QMhhORgaoacVWF95oxCzmOTImCY50jx2I4Jb48RxRJUjaHfIOLR1riThYDSyU2fLQKi/Ghb6iGd45rE3qcLZGiAUm6+GKSogIiGOtIIpgk2cjKPTSA0+ciiGiyJwawJd0yVAac01jTLomGUaPP2XwUq/GkPcMoUu5z+f4A1pGiOh9SwrqQT4LvYHzLYkgBGTOu9+iNy83MV0FJk0pCcr7vxcTk0Q/VjIyIxmyi+zxHWtmgE0bAklCsIHvE8wouHq/sfGegbtYkLClNTLMaW2WCGqc1OawSStZSEhNNVs4GSN4sennZ8ET0aPMe6+w5wXl875b4OD36WU4kSrRh8nG7nB5GF94msLLgezHF/CSX7/sZWpIc7xpj1CaWo98up49uyqRe1Z6LWtYAtnyyfoeUY1BdAT21SGXNFlwBawrmkL+bVUONEjEhYB+lB/++xzdDLSJIjHk3liViiYPMYoEFfvgVHybnWBDSEpOUxdWcanlzfa4krDz2hhYxmrGllPIBJ/kd1XCTKChbwFXNRxJ1VRGjW6oAMUxIzPGKrtQCjVgEa2XZSOoVzwYJ4Jy+j5WErzwidvFO6ZHL03tRNp95FA9+/d8iZwgpgWaZVmMyTMJai6SAOM14ESFEQ5g1JjTOYow/H7UFXDdgxBBTuadnD55ifLRuugbWOpCIiMnJYH4Pe94Y6npMjnD1F87odQsOIw4Rh4SekCKuhDXf8PjmY1cSLo35yFQXLcYuu3ypI0gO2U2GDBbTSRliKZmbwxh33uVLnFfMOqpvLe7A2mW/IYEQ1cByonxeZEkUUDUtVQZd0gIiGxISEyFv4hLvLZ8sCW9LMoEmN1/bBOW9FT80NqhxSFqOrOXdylGd0WLJS3Z2BLIc9dkGsjEWPC/Ht2VpbQ5hBLUInEIpKV+b1dd5a5ekawEEYt6qJXEq8SbnjSAl9S4rmmElZ8oRJzm8Yfl7uXYLiDN6fckwY0gpkpLBfov1ffOxa8CZhLMOEAU+MZodPj7Ql4QuGyMsNxGJxU0i1uqiGrtkTCbvfs0kLSLhnIAsWa0aVwyRmOTRTStmJsvfS5pfrkZKfJaXWcRmWKPAOXlljCXlI7xUKkRiPnEUQmhrx9PrLbVXLNJ7xzjNDGPIwC75PfQtz6VASCk+WljFPgtOWRKQkowtyUjKtZhlkygcosi+Gn5MuvGt001fOaefV0IFI6Rg9bNEMhJ2PsH+drhQ9n3JnvMJka/58esK5GXQZEeM4L1lFgcpLd//3/f4lpjP4KzLqLgusZZTLAUc1gvWks6yzGUnGYfJR4h+yYID5XcvR1T2ZmbxkPkOiM3GWzLPUvM0+d/nL3cukKd8c0pydL5OEAWTHy267uJzbGeN4NAbabxh3TZsNyvatmG7anj2dIv3QggaVMcQGKfINMOxnwkx4ZzCISCkmBgnLbKPU2QOSWEYU6ohsFRnHsXPBpuxy/JDra2LgPMK+CdJiDzydvnOeq/lUJMSRH23EA0mY3tnCOlRSbLcP1MqGefSGtn8WAxX16fc/5Q0o7fWIdS4XKMW+VXT/g8wvvJICFaM4m4E1EdUC4B8NoDy9W0+CvUYBk+p/xU8riy+QTIGVaAAm433HKyXG2HR49E8fg9FgCmwj7OPDjcxGY7RzZOyV7GLby5Hny68xn1QO8+qa7i6WHF92XF50VFVlhRnQjgx9RnITsrgMHFmVdVsVw0gWJkxgPNVDuU17gxRmMbA/W7gZtdzCiFDSOcFtka9iAHNYsWSUiBG/d7OWULUbN9br9/bWpJoYhJS1ODfGKzxWJuw6vbyBs8btxicLRWnc51e16pgn+V4zmf8o/ew2SFZY3KoJFjnqGjwzhHDOdn6Dzc+ozcgFXdddokkxAQK4UAAZ8+xRszxyhKsSs5F8lFa4jGt69ozWWaJaUqtOBuyJRfCDVaRm/zFz1lrWjLT8y5eYJKcZboCktr8+SbXI0WN2Bro6opnVxs+/ugp222NpECcR8ZjYBpnZZwYIKk3k6ThgLEDhelj0oSvLNZ55jmAq8A4nPPU3vL8qmLdWXbHmdvdyGkMpFigkZi9TDlhNLOuvMvF/8wcciZXRjKyKnH5vnJePDQ7T1Q5yI1JyQkmQ2SluqHx9aNT4lcSJ4vJpKNseqLXlx6dcvlZWF8jUqFskt/U+HLo4R55muVAyTfJmkIm0J2iNcoc55ANIyXIF6uhnhTHs8RiJWPOe3RJ760tiYrVwPsxdmlArMnBdzZpoyGRwrLlaHYUmykwq75czt/NWZrK8+HzSz784IJV54lzzzQMxHkihomUEuMY9JUxEOYeUiTMs36LJPiq1kDdGqZpZA4R4yqqZs32+gVV4/F1zWUDm9XExcrx9vbI7SESIxmLY0l8rFHSQ8jxoLVOr19EkzcpjBS3kDVCFKyNy02y1kGKuko5o48LWE7egEmNuCRBInnNdM0VSrTFLhcDyYhpDnK8rpVYjBGc/+aM49tZLVKIRuUCzgmQPDqyjC0kgJgNz56zsfyic72iMDqEM+yhxnaOUTMEIcU81XiL4SmeXDIvBcKjaA04FvC6GNYjHE7yhkHtQ8tTBi7XLT/49CnPnjZInBn290zjQJgmYkykeUDSzDxFxjlijSPOIykl5vGE821mjzwQQ8BYLer7uqVuPJfXG5raUTdqPJLUMzdu5sNL8M7z/mEiRDQpSqXslgjlaDaFP/mYMFEyd10HzdSDeiblcFFchmR8UEp4kx8pnT2UMXpflK1kl3DIWrvYQZCAJJN5mQYjiiqk7LGVKmbOXvE3MT5yiK++Z9kn2fJtsb5spNmryNkzWaO0qzPPLgfy/87PMsttPROVlsvAFJKqtUugvngA1IhSjv9SgjkbV6m22JxZl1iqZHSVg+urDZ9+eMn1ZQWxp797x/72NWEOCIqXhXlWQxhPnI494hqc8+rhxgnv9NibpglTdTgMTVVR1TWXV1uaKsG0Y5gEXKMF/xiJIZAkcdEE0srw/pBjYGOJUQhL9aYcd5lcmpMNawsRYylsLutSEoGUs/tSbSmx35LsFKIEsDgr0ZNU67sKbkspccZZn5Ay6dQ7hZz0kCcZDdWc+Q6eb0mxKfVNtfQzxKEPK/qhsRTOKcam30JSrhPCI9Dy7OLPNnamG/D4uV/LxEpcVxxn8cqCd2eOH+ns6/TYMBlaOcc1znk+/egpH32wprEjaToQx579u19wOuxJtiaGiX6YCDEh4hgPN4Q5MEeLrxxiPMZ66gaQxDyP1M5hbIX3nq6tMGlgPE0Kd1hLVQ0McWYOeYVTJMTI2kNcNbw/6L3Uja/ebkmMsGD0yLQmYY1byl4Gk2NhS5KY48hSC9YkwhiDx4AtVZyzL7WmMI5ynGdsRjrUDlKK+ebbvOFzsc4YUvaSZyRBP/mbHt9aXnPZAIsDzTTEZd8oz84RpRhfPpsLuEz2PpmaKzloW+5ljstMCbAL/me+fh3LP4155M3sksGW9yxEEsk3wBpw2Sij6JHrrGG7bvnBp8948ayG+ajH6jzw8O41D3f3RDwx7hlPe46ngSk4UkpMw1EzOxFcVYOrca7C1xvCPLC7f0/b9lxdXhLsidO8I7QrcG0+7iJhGuj7Pt/dQNddUq1WSIxszAlZXXDTO0wyiNXAW7P64uUcKX79Hkmm2y97P2Wih9Fse6mvlwM3hzqS9JwtJ9zj3g6syV7PICliSIhxYOoldhZjcpBjF8dTQPKQvtn8vj3bzd8wiSLc8ZEvLP8MWI1VskWVkhW5znomD5RoVg90k7Ni3YP5S6qFUsCQ8o+CLy07bomMswt8jPkB3uZjNmd5rtTAreV62/GjH7zk+tIz9w+kYYeTyHTac7x7TX+4ZxLDaX/LcXdHPyVmc4F3lhhG4niiqVpsjBgf6VYVziSmeWQaZ+paGE87+t2Jut3STpOG964hDg+cTidCEGIMjP2BdVvx5PnH1N0K5ypW9Uyzfcpt7+jHCOlMQ1VPIxingFFMkSQZ0F3Kmzk+zrdISQhuMV61zZCPDgvGZULwOSZ2Tns7NF8uiWSln5Fjz5QiEiWX4XJymGEd0kSK34FGX5ZSrVoJU8DinUDJokk0t8zxZub3q+EhaUHJNfg1Z4PK98rknUOuLT6GTfSkKYmKWVL90lAEZ6C2RDIFpTeUXVwSFgWNP/voCZcby3x6YO4PuDQSw8D9u1d8/pM/Yb9/wDQXnIaB/nQiUWGqmeQ9cQ6EKeHsBClSuxqLYR52hHnEW8fYH7FSM08BF3qmGBmPd8x49rdfMPY9yVRY50lhpq8cKQbWmw3t5hLjjqwu4Nn6Ke/xHE9Tvs+l7CbntVG6CtY+umdlB+a4F6M9HyVhE0nYdC5zLrQxtdRlg5eqswG8AcnVE2W4FDKuIBKAuKyfNZCcwX4nkFlyBmmsUtzzhZsFpjX5OZID/1xjRI8KYxJWIiZjUeR4ohiCUGXDPHu5JZcrcaV69yVtVuT/ETBbEHkef1GzJCf6V8FhqWvPh88ueHJdE4YdY3/AhSMxBe7eveUXn/+CL9/1nA5HulWCutNjxja6CMYQwowkrWg07YqmXuMdnE4nAJq2Zp5mximBWxGmmWnecdo9MEXh9qu39KcdvqoxQFN5Zi+sVmtctSalB2x1YJ5GNk8iL7YveW87dsdRjUv0CCxMm6/VTwtgCufqgwiWiMWeiacGpUlJaU9YVmA5erUmns4JpMkHdr7NKRlSPk6UOT7quroKa5w2OJnqNzc+jRq8wh3mnBUtvaH5QhZa/Pk7cD5k1UMmo1lT+fmSWDzOhoUFKM13ejmCbQm25XxjjSnGZ/ONlCUbMY8yLYPu/O2q4cmTDhNPjP0RE2fSdOT1F1/yxRdf8P7mgWNsOHKNzCca6bGuwlY1rr0kjAN13WTQGOqmo2084zQg4tEWyAgpgLGkMDJPJ0KcGMaZYRiYk2OahWN/wEgiTBNt3dFcHLl69hnGROZ+x3G/oz89cP3BxJOr75FSw+40LK2VIlHB9sQCWy1nQCqJRK7oWENFjtML9GTOJNlSQ9dTixKrLA5gWccS6Yhm2yln6oggada1ico1RBLuUVL6GxgflM7Wpc/VyPm36VylKLhcqZfqxdpcyHZgXHbgv0I54pxxlXPDPAKBy2eZbMDlpwYWQoPJN0kbccjcMpM9qT55s275+KMr1l1iPg6aOMnEF198wb/9kx9zGIXdKXB788B+v+fZpeP7H7+gqhzON+ANjWtwYjkdD1i/pmmafPQrpDINvZbBfEeYB/r+yNjviCnhfKUL4hwpRob+REwWqKnWW46jcHPzhpfPn7HeXMPxwPHhgTD/mBc4LrafMsyWmNTokhhKEaxswgVpcMUYLXOKxBgo7V+2xDq2lDPPcWIpd2ZQ8WuWoDX6SGkjFRFimrXGvcBugrKzIkiA72J8oF58qTUuX3AhRLGUyYg5nS/fJScIxi+n5hmGOcdl57omeXNlI5eQbfG84yyGUKzVKK39MR1I/2m+lrEZY2hqxycfXHG59czDUbPreOL48J5ffvGKQ5/48U/+nJ98/op+FIyt+OB6zfOnT7iyMwFPZU5UVc08TKQZrp89w3lDDIGmbjBWmIzFVx3GWuYgCAemYU/CESR38ocBA8xT5PY4IdZwjCfEvuP+9j2379/yO7//h3TrDTHBOAzcfvVTrq3levMJ46wZprayJi1wlvhssRk5e75ZmCQQY8AbTf0NmhiIdY9eVE4awCQKLFOo91o+Kaybsl4+J6XqeBTOyhR7cZkA/F2Mr/ShFpAzo+OlkK8+PrI4RGOXqoT6sDO583zOlry1xI1pMTpJUUmfKdcqxeZTQD8gZpasszYzbnlk6IUdotRy7b63fPTiiidXlVYkQsKEI+H4nte/+Gve3x35v//z/w//4k9/QdM8YTx+RZTEMHzA7+0OeLG4xtN2T1m3FX0Uth9+xOXTZ8xhYp5HJIyM40TdtCjv0dHg6I9vmIeD0sxDYg5wOhyYpol3DwOv7wLRBSx7Xr9/z/c/fI6Yju5vfsEPfvAZddMQktAfT7i3n/PkkxXXm6fcH8ble6sHLPeA7O0LkGxxDqp8BBqLNoibR/jBr4CtYkqKYZYqi2ApC1wwRT3OPb7ymtDoqxcGlBHzLX7v1+nhkLhge19jNkg++4sBUpiy9sz1L+ZV3Br6XJsL1Et8pl9VM+YsH7EYH2kJLjUL03iDpH0FjxMqs5QCdcfW3vHRyys+/mANMikBgIjMA6fjnjc3D/zpT37Gf/vHP+FHv/vPaDYv+eIn/4pZEnf373j15VfM11dcXHd88FxozEh3fY1vNhiT8NbgmoZTiFR1hfOOlIQo4JU1hbM1x8MDUzpwPEXu7284Ho7cHyJ3p8gQjkqQvYEv393xBz840jaGzari+nqLNYLxLfM0c7x7xfZpy9TUHIeZ0mMSUUzdfs2YBCO5ybtq1UOmqHQuMVo/+xVKVc4TMUbr5cWRnPmVjwukpTz5uAwBxpRavpw3xG9kfKL0IMy5T6J4uHPJ7Fym1xKYZKwnZ0qZ3lO4XUa0yUSk7Dx7hk9EewOMMyTrM2Bt8hdET4Zk9PgSUb6afWx9udvKaN/ps+stL5+tQQJxmpA4a5IxH3n79hV//uO/5F/86z/GVyuqtMOI58X3f4vdzWtO03skOvp+5IPnR+z4nsO0ZfukxladsrqTQdKMGIf3FUp+SEyD6qeAo12tiXHi9u0t72737HZHbveB2zEyxUTtW3zlMHFiCoE/++svudo0bDromo8JKZGkwvlL5mFmPLzhcvUxc7BMc9B7XzJbaymtR8VEjPla/yCgmKDKZtjMDM+uZan7ahZdiBmxeFfILQ5JyRNkB0Ra2jSXNgY4N3b9RsaHbhJbYtAMl1irdY9HmwztktJapzUqJqM9rgpiJkNOpWZIWhs0xmGty8wVzhkYBpPU/asx6bEsIqSgN2WOCjcUZ6xSEFn0xhquL1Z8/OEFzkzEIJkc0MP4wHB4z5/88Z/wL//4S8a4xdqR/uGO4e3nRAxjP7BtV3z2vc/wHLhaWYbQcPniB6y2T6najpQidhoZR0vb1tS1JyZhHkdqHxmHRNVu6I87fN1xdfWUr97PhNgzi2MKgaZacf3kI+q24vDwhuZ0y25K/PQXb9m2lqdXazbbjR69+3ucrzBHz7Z54Hr9lPcPCuKmEudmhksp+C8Bf/ZmxrnsHdXIFjTLlfu/rPqjsKjwH8mpZ8LxKMxCSGiZ7+tY/9lgfzPjMwaocyauVHZjtJVO66Tq8yRJFrbJpADr9QtIUk9I3nlOch+I1rusdVjnzs5rCV4NxkQ1XokLBBDzZ4hR408lxuC8Obqm5tmTDR+9XGPTgek0YuqOeepJwwE3P/Dm9Re8v4c//Mf/A17cHviLv/gz3r/7BZWJmCRcrC75g9/9HT756JqVv6Br11w8/x6bi6fU9QrrHDFGjNEjLdcAmOcZby0Sj1QmMlvB+JphZ+kq+P6nL/ncwMyBmyGQYk+YbkC8VjocOCPcHXpe3+z57PaOpvH4dktKQn88qJfdeTbXFU+2W+6Ps2KxkDHIhHNeWSiPMDqVNbGZopXB6nw0LoxvMsMll8zKmpTEQQqr3LBAYhp3WwqvsMSDjzLS39D4KBieGo/J2adyyCw2Qx8QMeZRE4otAWt8ZCAu08e9QjOOpbidOJNDs3ll4qj+Pkq5YYWpkishSXVJvHM0dcV23fHy2YbrC49M9xx3txjX4oxjPB2QYQfjDff3I3/0R/89qFpevbvlopn52S86bm/ueXJ5wYfPL/nkacN21XF9uWW1fUq3uaJuVjmbM1rP9RZEPXlKgdlbwjgxWk/XdcQw4a2qNh13A5cXNS+fX+Od5eYkHE4H9g83GtSLcECYIvgofHVz4O37HS9eXBP7O1y1JhoYxz7nV47Lpw1N1XGznxnnoETZhdJeY6xbMLnitzTWznF0ts5zaU3/HaUoMqScVOrzkoBJaekDEWNZOvjKkbuUVr8NaPlWYoHgTFwyqALkljSe3N9RSmx6QeVCWDyU/j2DkQKCw1hDlKQNSvk1qTACDApQmpzIpEfFM9EmZ3EG80hfo609T686LlYg0wPHm1cMpwG/vqJ2FcPxHhMOHN9+iTUzq5VhDBPXnfAPvnfNiy3A97i+vmL/cMeqrXj+8mO2mxXd9hl1u8nU+VxWysX9MI1aXpKkvEQDm82KYRB8lRu77R1iHCmOXF1dMfQDnz3bsD953tzvOQ4DIWpv7rqpebJZQTL88st3/PCza9o1THOg6bYEYxmJjOOIdRWX18/4+Omam51hf4zMc8Fbc6XIZGjFZL5dlkM7Q1SJFDPuZQ04q2oGov0sJYstzqxo2rCs+xkNQQp1S8/zbwn5fo3arkQk11FjLDwVbRayQLQlF7a5dzVR+CwLUQBtWLaErPvmSDETI40hiMUYlzmB6ryzFM0CaC7Ckpm6g7FYC5X3PL1Uj7fphDTd0+/ecbj7imkMdK7F+YZ5nmE68vb1zzgeDVf1FevVUxCDd7DuGupmjbHC8+dPuL56wnbd0K4v6NZbcBWSAmEeifPAPAZiMhm3i/i6o3YOX6+Y5oS4hirM1M2K7dU1+92O/cMNzWpkv9vzMk5cXWx5dtny6t2OcZ7oas/1xZonV1sMiRR63r59w8cfe+YopDjSbp/rMT3uCeNIChPXz17y8dMrDqstb+57juOs99Lktm9z7l8xOQnRkyllkSENd2xuRsrNcZRTrMRyBsDZLPaZiHHW6xIlw1rrFmit6Np8B+PTHZIVFEgxaeZjLBrVRQqSrhcXkRyMKsU7e0NRL6aXon0JSeYc62l1ZIlBSBn302yt0JfImbtFEwtXV3S1Z7tquLxoaOtIHA/Mxxv6+68YDzechoDfvKSKM2CYTjskdawunkIcMPHEar0Fqx61zqpMlxdbNquKqqpZba5wdUuYB6bhyDwHpvHINPakKLjK09YVdVsTk2OeejBC07WE0BBTovKO9apmODrqynH95AkSdtQBrlYrnl407E8Dbd2y2qxZtRWknjjD/m7HcbvCVS1xnnHNCvyKoT/x7s0rbcmUxOUzS1s1PL1skL1jmjNrpdy7JcA59ywHWypXAlFI9txoVBzM0gxPZhNZA6LaLyJz7lIrbZKaYBam+HeO+eIi42ogkxdLZaLQr1NOrM5JAmA0hY+PQOpycWU/WPT5VkqdRA24KJg+TtvLl3e5ecg7R9fWbNYNjY+YcCIMB+b+yDz2DKc7HnYTzfWJZr3BkAhjz8Wz38LVa6bhQJgOmCpgsXivnLfN5oJV6yBOrJ5+QNXWhGnguH/AVR1iItM8M44nUgx0fout1ggWWze45Ll5+xXTsKNpG5yvEdGSWt3UTNPI06eXjIcN8917oli6pqFr1lRNS7fqqCvHuN8zypH+9MDtO+Hq2UsETzUOGHH0pyP3728hzDTtiqruaNYXdE3ixUXF7cExjlmkKP9Dgd+8FjmmLqA/Sds8k8jSLSgCyciiPCFFSChjMc7XVCbhSq23dMmVYt53odErBlwtgei5g13B3ZRyYJrCciQW6nq5mLJxChhs8nuYnLRr8UIWdkZKZumc/Bp4icYuTWW53tR0raVrHG0VIR6YTzuG4x394ZZ5VmM5HoV+f8f28gpDwLmGev0Rrt4gd19yOrxhHo5EcRi3Zn3xnO2mwsYjzeqKZrUmzEGP0XrDYTxx2O2ZJyHGGmsctakYQ2A2A7VxtNsLrv33efX5z3nY7bnYaIigYZJQVRaIvPjwMw77O6YwaQhiVJTRCTDNpOmeOD5AHNjdT3jvqZoNvtmTYuJ0PDCME3f3D+zu37Nab4gY6hio2jXXm5adMcoHLDBV3sgpOybRHU0+Y5jnQJSo2bLzjxKHDEiTMpidQykM3uce7mhJKLdQUsgQzXcBmTEkeza+LCKngIrRQrN6qox5Z5CyfCe7UHCKSzaLIRYeWsqpe9F9091TKFgaa5Y2P0ElX2OKdFWkZU/YHxgOO077O/qTNv00dcXY79ndn6i7L3j24acQE757jqvXiDG4usNUF8ThNVPoqVvPZlXT+ETCsd5eMo4TwVTcHQfevr3n4Rg4DpHjEDgeJpIkKvdAigOGgLdwcbnho48/5OVHH9M4T+gfqJoWEWEYHkgxEkKi7hqePnvJu7dfLpBVGPYEOZKI6pVToHYeK8LYH/HNimk4IOI5nXqOxwNNdclwOnB8eJ8pZM9JVOA9bVMjWIYpaMsk56Sh6EAvcExGGFThyi5lu7NSl2SBJJM77Eqdt1RGFFqbh55pnqibhqZuvpvxlSrDQlUXs6DgxrpMGEwL/rPILGTiqPZ3ZnWn4jWX99d4Tm1a+w3O5ANLLE8UwRnBWcNFB0+6A346MvQn+uOO0/HIOIxM4xEQoocQZ+5v3uDbJ4QQqauOmGqqdkOYTmAszjfU7QWxP+CM0DYWbxL15TOScQS35vXbd7x+/Yb7I3z57sD97T27+zuOxx1VVQOGMA1goFtt2Gw6fvbL9zy/3vJb33vBZx89Z7Pd4pmZ+kvG/ogziXnuubx+wnF3wzQPOJuQMDIk0SYesVhb4bzFOkcKCszHEIhy5Hg8MvRHwqpm6g/s7t/gnGrt4WtEalVLLF1sj6pIxVmUeK6wgoy1OIGYFSkKTL0QpAtaUUIuKRhEWaeM3izx+zc/vrW8luK8BI6FNk+xDxRwFpS1aijkshLaFkp1Rt4NuWJhyhZUQyzbL2m/p3ZJhXOmK2C9Y91ZntQ76E8cx4npdMNx95bj/sQYYg6IwdoLQoqc+p5h6FXdyhqMb3FVzTQemKeTgsLtBj+dqOuG2kNdNdiqYbIdb28f+Pnnr/jqIfBXP3/Nm1dfcHy4QeLIeDrmcQGG/nRSGTNr2Vxc8en3fkA/jLx585rD7/6AH3zygsrC0w8+5XQ6cDr8khQidb1ive6Y7nakaSTFkZSBd+8abNPRti3G1Yz9HokJMZGhf+B06unHCUNk7HdIGnG+BmO4tILdVIvuXhHONFJ0Bc1ZSDOPXbBG2crqYALaa3M+OAtbUKGveFZ/0E5yBO3TbdoVrq4WRsxvbnwIViYWTRRbkXnKSJTMKM6NKrmJXLKYjZVHuLkpWiwKbC6JkGHRazGL+JAgJmbjU0UAgG3neHExY8URzIYod4Q5Mk2W4yBMAVat5XD7hnGcub97IEQI86he2XbUdUdKM/M0gV/RrlcMh6+wruPq2cd4Z3HNlvvdwFy3/Pzzz/n8zYF/+yd/wavPf0qaR4x1GBFCmEhTwhrDqT8xDD1zHLm9+4r7m1d88tkPub7YMO3fEMbfZ1MbnlyuuH76ksPDO8K8Y5561ttL7m9fEaNqLHvXUK8uNRmzgq1WtO2GtumAgFhH3/ccTxNhDpBmpmFPfzyQRNkzhIlNmDDb71G5LbZyjBiGQCZX6EqFELICgq5AKk1FUmJzIc8hYE4RYlBIpfI5DixmUqoeYL3BS6XJS/ouCYcIEmawKv1QqDaGLImRsxljzoXmJErZsXlwi82dH2psVpvJS1ERFl4fmAXpl6Kzh+5SZ9Wr9oM27Jj5QDy94fTwmvvbB+73A9a3NGbkcP+e+92Bh13A2o5hmHFVR4ozzjXM00CYeq0vxxlsy5MXL9lsOnzdEKLh0I/84pd/w5//+Gf89eev+fwnf8zD/XtEhFW3papWGQUoGX1gnI+EOOOS52E3M/x4x4snl0wffsRPupoPrlvmfsWTq6dsr54z9EdinOlWKzbbK44HiDHhfYuvatXDSQnrPK5usVRImpgFpiAc+1ljrPFEnDzGrzkeT2DulOmcIuuUkM0PGWTNHIUYY+6Cy1xAKdlpbrbKHW7qVMxCPJUkEAMhzBgDHo83WYi8dA8CMR/PZXDNd6pwAEuTd0qiO8PER8e5yd3tZUCIgSzOU/pAjbG5+70AlVqZWLyp0Z230K7yCVz+Xlgvc7BM0eFFcHNgHo4c7l9z8+aW4+z5+JNPSP0rhtOJ+/0tfTAY1+HrrWbXpsZVLePQg61UTsLUPLl4ycXlGhPucc5xGuH9buTnf/NLfvLjn/Dq1ZeMxx0hzMQYMGi/r4jRYSgx0PcPzFlOI8aEbWpCtLx7/46qsgquT0+xcoFDaOoa7wzDacAZYXNxwXF/h3PKjnG2AhLWgXVNzkodvt4w7vfMAQ6ngXUjDMORTWjA1shskf1Oa+be46sb1t5ju8+YTcsEjEkow2ecKVlsWeu8PoblyLSZFynJ52uynLUQS803OxMpLkUyB/PR+IX/UOMzxuQ4wiKSKexZ7NDnWE8xI3IWDI6kTSkiYM+9AsuFiUpFFKXVUgVx2dUba5ejTXePoUg+1N7o13ENOK9ij0Fouy1dY9nvRub+yO7ugT7UrC5UtlaN2ynU0bQ0YUMYDW1Ts9psFAA3DuNqgjEkt+Lu4Z7DXjvSYlaAMsYwh4lTf9SVspYUQja8iHeeEIOOhXKOcZ457W44dSsO03OSWzMFwbtEu7pgGGfGcWK1WnH19EP604CvHHW7wriKFHqsd8oTDJOqTVnPGKAfJjZVVlKIgXmcmeZAmO/ZPdxxuF1zullxffUTti8+Zn7ynzGkDSGeS2WgrKIkojFxOadEe3QtBiMqJFRXFd55FqDPiBJ6M/q2yAw/glfEfEfjq6pa65JiIelwEW9A2dJmkWFIGQcqHC6zcABL4VlZKSmLBhYoxWRBamvOLYHGZEHr7C2XmqGtgQriHTb0GNviu0tc0+pAkjDw8LDn/v6EVODngLUVMUxZSyUfHb5i2z2haRSSMSS6doXxNad+Rz9MiN1yf/9Af9wzjiPGWEKIxDjj/Jz7ZCFJnpeWEoGAoGxrshccZjBVxxwT43Aira+Y50DdNKxWa/reklLP0xcveLg/Mc8DMQ54A/PYk8JI07Q07ZZ5eACr2J1IIgSYQmIYBuzqkpQbl8ZhYidgZEaCJ4aeFVvS9r/PLH4xGGvOiN2StwpIZgVaKRrU+Ui2GSIr2a+xOFeqHufkkGKC35LxfrOYBnokWqPUKNU2cTq3wVqcFZzRTqoYA3OMefBcXL6Oim4LKQohJEJQeVqJAYmzyuinGSTkLxohs6dznRvvoK4c3glVvKFOt4gkpjnQ90ceHu5Joee0P3J3u2d/mpliYp5GPUJslRt4BOcbVpsL2gzK4hrqusG4iiCOmCzOd/zgt/+AJx/9HlOIzGFcZMm8b3CuJoSZaR7zBB5dC00cDeM8M0wjcwzYeoPzDUngcDgyTpO2mhqDryu61UrZz1PPdlPjCMQw46oKV9UY36gPcg4V5LUcj6qa0E+JYUw87E+EeWK333M6HZjngWnqGU5HQhKCdMwPP8eHt48a7lV8MmX6VBKTn5tVKETFykuFKlFq9l9nTwtkdYQCPpe8WM6h1W9mfKWojwa/kucs2HPPqDXZE2bSXZQCqzye9UXOcjU4DUuHfQCZs+hi/pON1xjBu9I/ql+qMmqw8zAxnQ4c9w/sdnv1evPI6dTzsDvQjwmMZRhOOoIpayYnEa0UVFmPznqFBrzH+hZBO9XaruGwf8dnP/ptXn76e3jfMc0z6+6az77/e1jrCEEp6SIqG+ysW0DyGLUBxzm/QBvt+gqsp+8PjEOPsTXWWJpmRXfxEuM7nK+5fv4R1nfENFOvLqia1ZJ8VatLYjL0w6BGIXDo4X43ctjd6WY86iYcjgf6/sj9+6+YpGKaEnL4Gd6mRW1Mk4My44RzSRMhZUHxINoWkERHIwR0HkcZx6XPgTlBSAmJWqYLs+rPfNPj2/t2i+JRpheaPOuixHFGlHojVstlJmbbT7mvwJDlHNSNy0LT0UeR+89c5WWxvMtikEb7NmII9KOjlgtivGPoB6ZosdVGG65tZDz1i5CilcTp2NOtLxZVKnBYlwt7rtXrjwOuWiFWa7i6iQKn3S397iueffARQz9w2N3w/OUH9Kd7hn6/xD6FulRVNSYL+BhUnLt2DkkzVd1QV5oEhDlxlCNtp2SBFGfa1VZr+2HEmsTV8+fs7+9BpkUpPswTvl4x9wc18CTMs9AHYV1Bmifu7wNN7ehaD85i65Z6vSGGEf/idzVeNoFArYaSQ7THrbGSlV99jtVjhBnB+YJzKPRSEsjixRfGs8gi3/HNKN+vQyyQbAAsbd7ZMjOEIplelWuT+hpRbWJQo1yYKUW1/jFoqUlM0aCzVmvIAcGkQiwVqhJnuAZTddj2mro70Z5uaWpP01Q0Xct26zGhRawmSy5PzZvHU9aYa8E16mXHURU7fcM8TsQ5adXGWp6/eMmbN+/48vOfgYw4Z3n71S/o+x1zkQgrx4wkwFHXrUIvYQAUNllvtrStJ00nLeav1KtNwdD4jmnsqWoVjKzaLZIC83BL07X0hx3OWoytqboNIok498QozFEYEWoPTePwzhAizMdJ76MxeHZ0dmSoJuann0F7wTz29MlpfIjRmbsYMBq3phhUWzn33sQkpDTTmIR3FdYIEZPFzLMejBRVVTVQBZ6/GePTV3/TQ4rRxfznXDaRzHYtQjWSVK/DWpXuL7T7lGKp6OhyyaM3T+e4wCJLrwai9K0QdMidTk00eCd4JkhHxv4997dfctg/YI0jiOX6+Qs+ePmMtgYTJ9rVlqbdMMdZlUXnUQUXQ2Dsj8R5xlatCuC4BtNdcxpG+n7Iw+8MbVsx9Q+E6cA4HokxZGDdLMfsEmQbUf3kFGnqis16xXZ7gcQJiVqNkBQRWxPFg2vBNoSoiYwguLql6i6o64aq6VgobTEynu6IMTAF1YOeIkxJSashwRQTw6yA+zAbhmiIWOI4EIZbqC4oA6xLmCNF2CdnwCoOpAlkzNzMEIVZVSspEpFnr2aWEGvRPczQ23mo97/78Wv07cZcqy0ITsq4mT3HCakMqctd79llC8pQWShZYjPAWRjNhbdiCrkio86cNUcQ5gjjnLhYeUXjw8Q0jMypBOM1u9ORJ89/wGlwHIY3/PL1e0SmDFNE4nxEfIs1lhAjYepxxmh3WBCM9cQ5Mc+q/LTb7zDOsVlvWa237Pf3CqlI1sTLhIol9RNhzkql3lq8q6grr9OEkhppCDP9IdCt17pp8VR1Q3+8ZwoJm3pcSjR1i3UnqrpBYsK1F8SpJ04DMcx6sohoK3SpBfuWJBNjNLgp4XwiBQfisdWaeLzBflCB8ThTsEoFkIOExWDKaNuSWJSNFaIad2Xdskx5cTG2HLE50ch35Tsdu0Ku/ZlHb2U0q1HjMWi5LS0eTSCLEmag0pjMQlaveaa+64I9lt8XScuvyppmWTpi1GspMVYyDmdVEDKGSDKG+uqK9uLE+nrkup+pts+oKk+MMynM1M2GEBL7u3dEEbpuTSOWlIw2qotnvb3k5mHPPE0YhKrpuLh8wm53z3y4hajVG4kCi/Bi0rFPRnmGTaVEVJNnkoUY6YeZ7eYS4zV4TzGQUoOr1oTpPYfde6ZhoOk2bK6fsV49IaYHQhKG3SuapiXEkRBnUsz17wUdjrQV1N4puxrD7hRwErhaJZ5cryBFKjtTrdaYSbniMQd9ejplEsISXOWgSLRkmlJknkfAL8MTrSntESUe/LrtfBvU8muoVGVG8qOsM5URA/xKEIoeO18bxGdzar+c2AI5612G+IldML2YqSzWaIwpGQAVyH0OEzBllssMaeLUH1itWqLxNN2G66fPSGHmMGhNOc4TcTxirz/idNzxcP+eGEdWn/xD6tWGIJ5ka5gjMSpPbrXaAG+o6hpXVzTtilWKzNNIjJF5npYFstnTgQKvTVXTtR1t21GUnVabLWJqFE23jONE0641CzeOeYYgFTIm5OFA220AYT7dMY8HLIkYpkcFez1NGqexdJh72gqGKeGNNswPc2ScZpydadZXeCacT4yhovJg8gxZsY6zMm5RlnhsTMo8mqKON60qFlmMhamOnBuLUsoSat/8+FZKFZhFakwbTwo1h5zlPFKpyl1SZuH8sWTGlkfpShG2lpLmx8yOVi+ptlr0XMxSCam94EWB7BBHxtOO3cNOs7r6Bf04Yes119eRcXdL1XVYIjGOOiQ6JcZx4P7uS8Js+eBTp5UNW+Os5WH3hmmKbC+f8MvXbxCxpChYHE3TEGLAiGGUIV+7Ei+rusVblaI1gLFOAeZ+YNO1Cg+NPW6zIhlLNA5va/phVMq8bQlzr9hlmpjGHRLuubh8RpgnnPPMU6/6zTGohzV65jRedZSHYaKtNIyoE0hS4u3uEBj7gWp1SfDPCGOejXsWxVg4mIu0ybJS+rsylUkz8ogzM7rXTKmDas9NzB0+GXD+tpTjW5nMBdAmx2Vn/V+9cFusvTzH6jyGotNVjlIpu2p545wpJR3hBEpDWHZL/mBj1WynEJhOBxp5y+HhHW/fvOL2fo+vO3xlmcLEw8OBbr2lajo2lx12NBrzxaj+NsvaxlnxrdPhns3VS8R7QhjxvqVqEtU4sdmstPXQGsZpyFJgEGJAUsQ6jX18VWu8F+cz+O4bmtWWVVNRNQ113QI6IEVBb1htNzhrcCSqZkXCMZ6OHPsjVe2oqifaXDXPxLDH+RaMw/oNTXWisyc6D6taQ5PDSRUI5jkRjFB7VQULyfHVV7dcvvgb6u0n+HrFprlmcI5hEqYQieE8huIsjVIw3kwSyEdo6eVJNiyTJskk4TKNuziPb5kB8+2UKlMSg+zute0zd0HlLOlsXFBSjfwXNb7Eufi8GLKF3EKZpcIXUuOi/5c04XFZ4MakPTH27B5u2D0cqdYv8E2NtY7j4YCkCusGTA3d+gLfas9HilqBCfNETFpPvb3b8fLTRIwTcQ7EPOknzBOn05HT8cQwDAx9zxwCOglIaJoOEMa5YIo1IUz6fUShCZOPpCAJ4zy+qvGVUxzPW+Yx5Uxb3VZKemyaZkXlLyEOhJDypnGE6LDeKdRhA8wTtYPLFbQNDMGw6xOXXabDB0AilfELG+nw8MBm90vq9TW2fZJB4hyXZV+hGGv2XinLkaRiUNp7bVA2uU+SSScZtXj0vLNr+uaY7xuhllKZKKTQMh/M2sXbno3UqHZfEfs5QzPko9csqHkSlgszpky6dhjn8ptrj3xM2q4ZQqK2gdppvXMeR3yzpe02WFsTQuT9+wes89zdviEEbU5q244w3BLjyDz3TONJG6CqNd3mkl/+zZ8RQ9SjxRooTBUsVdOyvriiapolq6/qmq5dsVpt8L6hrvS4buoO73UTlNKbIDjrOQ0TwzjijGGeR+bxhKRISKrHfNzfM88DKSWOhxsOD2+Y44z4BsHi2g1iHGEeSTLhbKJykdoJmxZ8ZRhmOEza7FU8q0WofFIdy7rFd1dU66ek6oqHPjJMIVPbdOs7q0e5M6UqVY7UElrl6UpWmexR0pIALl5SHkuofLPhwbfy+RRGcWXMUslMeSxbVvouHr0GsKkc1oWkmIvTJZcy54EvCtWU2btWFdhTFpzO3XNjtARWOFtpvbQaSHna4+FwousuGE8PxDBx2O+4XnvEBE4Pb9n6hjQN9Md7tk++T9u942c//TfcvL3hez/6A158/H3E1NRth6tGjPN060sq/54wBbr1lqZuOOzvFZ4JMy+ffYSvavb7nU6fHPulfxVUCriqGy42K5q2ZQoJ5wJhOhG8o21bHELlDP3+HeMUOfaROSZSnOncyLSuOdx+QYyB5A1NrQKTnU8kZ2gaIeAYZhijMEVVbxDrSMZjnKXuWkzVUtUe0z6jjx1DjKRUdEPPJ1h2fRk+ydWrPLHIlrA+996EGFDp40K3l6W8KqiccvzOQkGSyLZBiQh0Knhpr5NHsd35yIyUi3rcK2oeJRsshlskHR4f30vjSg52pyBMqaFzHUjA2ApjLWEaSFIR48w4JHZ3b5AoPL24oj/dkuzEavuUGCbGceSyqolxQpKSDP7qJ3/K5vKaql6RbMI7S2UNbe3wVUVdN7RNxzDPtE3DZrNltVozT0dEEt5d46uK/X7HNE8YoGk2tG1L23TUTUtVN3TrFpMG6q7DWwjjXuvLNBz2e+73J/ankbqpsb6mqrslwJc4Y33DPI7M06wK/1bj7THBaUg6i1gM1noqVxExBDwxeUIQHm7ecHV4Rao/I0T/KAxabrgO2HnksQrL5RxKFf0Wg4hb4LNcslIUJAuFi6DH9ncyPlhkuAwFzS8o8Bk2KUj52V1no7MFrCtxn12O4mWu7WJsJUbM+Fk2W0HoR+EwWhq0IG+tBZmwVUsVA23b4Dgpk+PKkGyDhMChf8/22SdY12FsxTQc6bZP2Vxcs98d+eKL13zvt97y7PkHhFnxylVb8XAwIJH1ZkM/9FhruLzYMg4Hdg83fPXmS0II1E3Hs+vnbDdbxqkmhMBqpZK51jrW6w11peoK3ntsGDHAPIyYpuG4u+FwGplpiLHHWEfdrWnajmk8MY4D3uu9jwni3ONdprRlL6UcPcnUN3UOOpMuMg4DaRI2leP47mest/8AzAcIGosXTWVjDDbXadW+chJRBumRK1YZCzSZyxdFFsqoeku3rBruO/D5ss1R+jYLYVQNpgSjCkIuoCQmq1M9FqDJPD/zeETQo64pOAeRkjNcUfONkhinEVLg1rVs1y1V05HYEaIQw8jpeORyfc3x5j1VveFwONAPTzJ30NAfD1w8e848PTCettpldnnNkynx9s2X/Ot/+a/4H/9P/mdglPUiCEN/REWvR2QeqWzg9S8+5373wO6kZbYYI6dh4HjY8eLZB7x4+QnYGmtUlX69WWNImBhIM1QtmmBJgDgR+oGb9+95/W5Hu73k6vknWCZWbUNd1xwe7okxYr0hxBFnLdMYEInUlYZAIWj1wVptUZCsfe2WloRZT4jgSclDmPHVzJic1m2lGLHkiRNpgdaUVq/EEYpXyyedtdo8lbKqbBmdEIEyhtYuAeBvYHwiiRSmbNJZxDF3KsWg/DsyNyyDcQtAmZIgNhuYlFihGJuSUAsRtahOiX5HvSkF5xOtFycRxjkyBUOKwjSOVE3Lw/1rNqsLbNjzcHvD7cMJU2345EVHbSbG/sTdzQ3t9jnORobje1bXn3Jx/ZIpCD/+s39Nu32uPRHOM02jNuPMA3N/YDrtaUzk4f4dd3d3TDHirVt6OER0Ptq723eEMPPBh59StRsMUHnlPtY24W0k9DtMHEFmKud5d3vHT764Z38MPAuRDz7+HpvNMzp7xKTAcLzH+waLChGlODDOiqc2lSVFGEaYolB7j3M1lbU4Y5BoMFVO2kSP5BQGxFimZDOMVioFeu9jFoq0kssJmQ5nOAtEfW0AdO6rlhTxReUgn3jfBjDDr0EmFUmoIqPK/KcUtRFFCumw6BhBAZSVcICSR6MQo2a6+kd5X2dWhMXk+WUm7yZEYQBt63NUvqGqOpKpmGhwlaeuak6HHZIil51w99XPOe73kCIvnm0Y+hPGr0Es8zjxcPuVFvXjiHeG7eVTrIEXLz7k7v0r/uqnf840Bfb7A9M4EsPM4f49YRrp6gaDUcjEV1jrNenKTOza1zjr2R0OvH31BaRR+zEqR+UNrtI5bUhknvakOPDu9h3//E+/5Oev9zwce8Z5ZB721C7SbS5J80icDiQCRbJ2HHqSeFJUMZ8QYD/kTNy5THN/lJkanQJQfIykGZ8O1MuRnXtkipEVabu8TqnE3BkqU5Qit0rm50im3seMg7oyoPHXML9vhlrQMfcqbVuS7gVezl/KU36TlopF6WpS3DFiSGKJyWhRfwEtDVAULc8YoBJVzwe8MwZndbD0FCsdTpxmwjjx8rpjOt3StGueXDd8+NEz1p1hGkaMONrVNTKP9A83zNNMGefZdR0X20uePn+BxJ7/y//p/8C//P/+P5innuF0Yjge6Lo1n37yGdfbLatuy8X6grZe4VyDNR5jLKtmxbrdUPsWZyuGsefm7ZeEfk+cBpCIhMA8DESpcL7jeBL+X3/ylp+9OXAYRlqvoHDtQcZ7nByp6paqaiBFJM04X3M4BsKcmJIjJG2F7Ge9bz5P3XQFajFGQXujG6WuPN43JBwh5vp7idWTLLqHemopxS2mksjIQl4ld6ud1xoWlYO8ftZajPtbeNzfevwaCUcOOG3JVPV4LWWvkqOLoPGNKYewWcYJF/jlPLzlkYJlTlzO4z3K2KwyRl2xQ4seHVNwODq6pubF9Yr+dMB31zy93vDaVjpYuUzmNhXWO+Jw4LS/ZRxesL58jvMtdRW5vLxkd3VJ03b88ic/58//d/9b/of/7L/g+vqSi4srfv8P/ggm4Yu/+WvWq0u2FwlhTwg7Zjfi/JonF09xxjBNk5bXJDIde+JwIIYrQkiYFLAyYU3i9ZsdP/38Pa9vTzmGFrrKsela2lpVrNLwsChkzeEWY5XZPYeKmHTI4hzUQDDaVFW5gOBwRqiMQiRRzDI313tLffEByW2VEi+OMvyvsJTK3S5IhOTwaJa0JBWLyoEG6pQwKopFlj4ck9Umvvlg/cbfKl6jnK7yURrARSiN4pkKb3JcUvo4z+lHeaeU1QTcgg0thpefUyAX9XzFSHO8masrg3hoP+D66RP2xz198FxdXXJzt2OOFXOYcd5mwLrKY90jp92O4/6eMKqCgQW69Ybt5pLL6ydUvmF37Pn5L9/yL/7Vn/L+zR0/+tHvsLm4ZLW5ZHvxlO3mCd3mCpwnSqKuOi6vntGtr1ivL2mbtdLimxWMA+Fwy/7mLcPpAGlgPL7jT3/6JV/d7ShwU+0MXWOpa0NTgTeBMA+Mp1vqusoScUrePE7gK4ezyqUMQecF197QWBXyrKxG09bpvQvR4m1ivV5TtZcM9oKQtB+ltDmU08wsjiWTem0pleX40Jx/X84/tUFl2cxzYphGhlFHQ4zj9I3G962ez5E5eNlANL2QJbAsg0gylYCYUNlbgWWEadld5JgOWYzULkHqubitbFhHsmkJfk2hJpiK1L4A/hRJQte17B5ueP3mARGhbTxXmy2+bjHVCjnuGQ7vOOzuWd0/48XHMA87YhhpfM3lxTWX65btquVi85Rpmtg93HDsT7SNo21XdOtLms0l7RiwpxNz0Onjm+0Vl9fPmU49oztR1S1pPFHZgDfCzZtXvLu544/+6A+5WG+5v3vF3UFbMQsUVTlY1ZaurvBWAWZJiTTNWBdpL64Yd28Yg4pqzuPEerPisNtjgMt1hUkBbyPWWLxzTFmk2VRe1yPNtBfPCZsfEaiXbFbVCBJlGhHYM/9Qs0TNZlNS8Fi06VwHO6rjSJKIUQm/EnOIUFUaw3+X1kn98Jhjh3NMYAvhcMlk55yGk9P14rIlY0SSDW8pabCM0pRMqM+9A2dF+nhmx2TDMya7fdew2VzQNQ19P/Lm5hWH3QnDxLp7iW2fUm8uMBIYT7cc7t4yRUeInsP+Du8/p2o6mvaK9fqCJ0+e8vGHz7g9eS6uPyAIHA8PECNtu2W9veby6hl9P9O0e6yraJoNV9cfcHn5lJPb432lesne4dJA2yZ2t/d0qxWXz5+T5MSXbw8cp0DjXRbnFlaVZ916utZhZeR4nOhWHa7pOO3vCLSYast8uud0mrjtZz795JqLJ9fMAT7+vf+c+y/+nP72Z4irGOZIAsZZaF3EWceqcbTba0Z7yRQVfimeN0nuvsuMJSRpO2huiJcUzz256XyyFc8X87yURbePhBGPdzXWfSeVKmWCiAUrVlvkliYMbcJWl2sXoFxrf+Qgr0jmG1SZtKgVxJwdlyxKvYB7lGQ87tmVvMMKi8Zar/PQ0sTxeOTd63dA4vJqy5PP/inbz/4Ql+7Zff7fsL99zWl/orn6gIfbL2hXNbW3pL3l4omlW13QdQ0vnl9xeeP46LMfEtNMP0VOu5nKd7TdmtV6S7ftuZoj23dfkR5u6FZb1qs1JsyYlFSfxkhmI8O27XBty6q1xPsdX9zuCCKsjBKavDNsGkNTWyoz64TKadSxCpIIYaLvjzhnmYNhmhIJGI5HsI7m4ppnP/h9ts8/46t/+3/k4eGBlE4KSEcIM1RV5GJd4zcvGOaJEOecHD4OecySRBTM1RYuptONUkKlReRTzpgv9qz7vOQAttHm/u9ifGT4YwGacxWiZL+Fu6BHYinB2KUOuFD9spabGl3KBlXo9CxJRjmiRc66LZCWG+O9pvLOG7yF27dvIQ5sNms++8f/Fc9+9E/xNhIf7hgOt4SQ6C5eMJzumPoDl9cfcNq/x/gV97dvMdayXl/y4YtnPPkqsWoqrp4858u/+jNi8lRNtZTZjHVUvuLp9XMkRLrVhrppmasW70YlvTqHQ73a04sVh8kQ9ztu3j/w7jjmIr56fQdcdBbvUJ7geMJhGI87xmnmNMzaTxEmhiEwBr2HIRmsJGJ/QkLPxQc/ZLr7j9j/+L/lOJ3wlixxYeh8ZHvZQXWBtY669CtkiMxYnQZqTHEEJfnIzsRIriapE7DmvP4lscw8mLMziYGQorYa/KbGd5aqMEuPqkmFWmUXkFKyV1KhvRzrYSgjTvNVIRLPu4Wv7btH8Eo2vOJKc83XlCZnDCKWpmpJ057aBjYffcZH/+R/zosf/SeIBB32Yisurj/DuBu++sVfkKLgu5bT/h2HTUOzMuwPR4zzbLfXXHSO6xVM/T3T6YGr7SWbiysOp57KN3jfYhMwz1RA23RUtsIZj/N5LkgMGBG8N0gMXF5sCe/e8/qnf8WX+xNDTNROY+jKGDarmu26ovZ6F+Kc8E44DpEhwJQ8lRVcMirwmKGrYQw03jIcdYZc/fKHbD/8HV5Oga9u/9+Mp4Gm1R7rJxcNVx//Q2hf4HyLfyTorbiqy7idbv6YzmVPyuqVUKqshdERCyoV//i5us5ZSgqTvsOk8VJQlpSISSXLtP86jw9e4BYNSjXSE0w0SGmiztlrodnr9ziTTyWX07A2j05dEn6EqIFreb4xBIGHSZjMP+DZH/zX2I8PtM9/h+bqJUlmJAmRiqq7pupWcPNzrK2o2xZftaQwMvRHksA4Ro6rB1bdhu1mw+/+9m/xy5uebeP4j//p/5Sp73m4f2CYAtOsDGKb2TjeelbdhqqqqJ3HWQeZD+hcoKnARLi69nz56sDnNw/Za6iXwwgvLhyr1tN4y9jfkWLgNEZOs+oeeudy7JWYo1KeYo61DREn8PDmZ7z8h/8pFy++h7Oe929veP35T4CIZ+Tycktz9T2kuV6AfI3jhKKuUyys2FxWAsnOTH+os+BNniSV674SNSRbDA9lPRtDmbn7Gxufvn9Q4yoY3YLNFQxQjU+W2q+ORCjkwq/N4pKS6QrnwSQua7ewzLEw5ctTcKWUf68XNSXDmC6QZ/+Ii6eFSZs4i2UabDwS+3dM44iznnlWpq8Rod/dEuaArToebt7Sra+5fvIJTzhwfzzwh//kHzGfTvyL/+b/xihCajpOU2CaZ5KtcNbT1l1uVrfEEFVGo9JKSFs3VBUkmfjlmwd+9n7PwzhhjaF2hkZpKVx3Dk9AIkzjwDTNzMkxJ4sk6FrPNM6YqJT3yut9qSpD1+nRfnz3c073b+guP6a9esGnv/0fcbh7wzid2LaW9XaDbS4ITsFmvcFucQRpQRPOa26WnhxIMSeMhsXwzioSef0Xmdwcy2fiR0rf4dgFNSIp40oz7mbIdHmDHqWikglIHkP6iCTwq3odmjSpJosOkBEQp4V6Hme7xUAzlCPn/tgQgawPo+Oa7LLTUhScTPjpjUrc1q2ym2cVvUnJ0Q8zVWuIU08IFqhoN09ZT4bvvdiyth3/9s/+Oe/fv2FyFbOvMKsVxlY5UfDYVstsYdIm69V6Q1U5PnjyjNrB6f49w/5Lfvr2yLvDsMBKV62l9sJ2XbPpPE3jEBl1xEKwTEmVDUgwTbqYMSas1ddZB+uVx/mkmtfjnsO7z6m2H2Gqluc/+H32t6959zf/ltWqw3eXeVSZLK0AC55flqk4luVPNryC2+YVUYpVQnL92OQZfCp4nienLMmH/bYCx6+R7ZrCWMkMf+Owxj+ydtXyMI+bgPJuEikzc+MiyVrcc0pB/zuLTy+1xMd7UARvZRkaWAblmOwaJScnPLph1lgqIjbstdFonphm7ZMQdFKjrVpV5SRRd5bd3S+4fvaMy8tr4vt3nN69woaROOyZbUOsaobjDtNsqNoNlauwdY2ESMCwWl+xWrc8u7xgVVXs7294/9d/ysPrL7jYXPL6fk9TeS5bT+MTtXc8v2yoW4+3iXHoGYKQqJTHZyqM00btGIUYtOpT15aLWgU3C/BMDIy3f8P8yX+MrWpcu+L7/8l/SeU9sv8lxl5g8As+l4pqhAUjufe6UN4ozeJ5XWMJpcgqZdkos8xw7QunU8UBlO3C+TnfhUy61FwX5gra8GNCPpNTDl7LjNWYe6KyweYkRQfGsWRK+pZy9qYCjx1kia2E3GdAqSrnKZRlmvWSsGRKkSSwBp8s0/49+/u3HHa3GNPp5G+rdKH1ZsVpDLjK4GPP/dvPuXzygo+//5Th/jW79wM+BVyYsc4wW7OIJYlxuLqjaTf5uzjWF5c8udhwsW6orGN//5Z55ejjzPefP+Pm/oZVY2l9hGR5dtXx9GpL14JlpO8dIVkClf7PV9qk5AUJCTEeYwN1JRhjOQ7KkqmcHsHh4eeE/hZnXyDW4JuOT//Jf8l8vMG6xNGsyUugRiGSxZ4UmSihkTHmrAorcvZmRvt8dY0Kv08LCrp+edxCRkWkMJq/2fa+DWROxGnMpZVsbIXTZx4RSDFKx3nkifT1UFr0eGxg5T8KhJMB7Awla1KDsihi0l7YwrwQ89j48qeLTsNMKZMchwfCcK9BdDRM00g0ljkF1psLhjFxGnuuL1f0pyOuqjk83DCddoQO7PMnNA87fa8kSARTNRjjcNZSOUfbdEiMmKqhbjo2mw2b1hNDYpr3jCYwSqAOPU86g7GRJELlLU82NZWdsdJjUO9mfUNlq8zH0++5KF15j5XIFM0yDWoIhq4Bb4V4+op0+AJ/8bE6AAHxNf7yQ0SEQQQbf4UelXLl1hQfcDa8IsxZ1vZ8p1FJJxFiMsgccUbxSpeVDIqsWjHa39j4VANvAFika60RNYAc/Ou/dHhfCVYL8UAvIbcLLjvsDGaW4rSxmrDHwjPLeF+SM+fP5pjDJMXIvGWpjhjApkQUq6MZDKy31+ze/xLnDS4Y7bGgZpgjh4d3XFysOZ5m6rrmonUcd+/Z3X2FiXvmKbD+4FP829e4mHA4TN1h2xXeeupuo95JhLruaOqWynqsb3i4+ZIx3HL78Ja/ur2hPoKRRND5iXx81VCbBOGEOJ3WWTeG/V4HqrhKm59iMISEdp8ZkGQwzmj2K6qV6L3FOyGFif1P/q88u/wUs/k4a+qd6+pntMFkcCTlRFQogj4ug8jnWSjo2B1T+nYMIaMaSXRDBlQez1kHps4Zc8pKCEtXzr/38a18PohZPYD85iYj3i5z1iqqqsFZj3MV1mlRX9N61QYxpspgtVJviuUJyr4NCUK0zIL+dwZSQ2L5E0X/PkdhnBPjnJhyZ5vSu2VRWWq8xTUtzeaC1brBmkSYR0KY2D08YEjL+3SrC6xrebi/4+HuK5pmxVdvX9E8+YAnn/xDuu1zXLvKvL2WtlvTNh1Nu2J7cU3tK2pf4ZxjGibevfoxQ7znF198yf04suu1r8OK8MFFy5Nti/eOyhlIEKNh1TZ0dcpaMLOWNPOGTclQpkCp+Ljevtob5jnhnMIl4/6e/V/+n6H/SkeEoZ7NSDG6wiQCVYu1uQdXY7sQ45JgqLMxOJentlubO+LyvPJypGZHoqKf2sxVRl7oQfldejhM1skrF12y0WzZkg3SQG4qyj8z5K+ugGrKeF6hDVC+uCydHoiwBLrFK0pxreR+2JJw5PeTpBTvlEoVBSwzPtzh2yuadp3jEe30nwSSSRhfM44TF+0a7z273Q5nHXVds+qecPWs55f3X/Dyh7+D2byj2t0yTBOmamnXG6zAen1Bt+poKse6a5F55tXnf8ZJbvjq7Wse7h7oKqfk2wQ2JrY+UtVFSs4SgzJ9nE2sGmF/CNiYwNTEEHDGM8Wo8axzzLPGy94JYxBqB9YZkqkIqWZ+eM38y/8n9Wf/I1x9tYDDi8eTcloUsqcBE7MEXsYfEaxNmRRi1DNm+EtPPVSJ3spi0KrnM+fTzi3rF7+L8RkKDV7nTcSy6OQMSVIeNKLN366kOlnL5RFokr94cfv6JQuariI7pVqiX9A+MmRj80y3kuFCLvkElqaWfGNre8LTg1WJCVc3eHdCsUqFW8ZhoDY6Huru9i3jOHF9fY31nu7yGVcfGV7/1U+JKfLxxz9ie3XJ/tQzzbNCTUm4vrji4mKtnWj7G77afcFd/wW7h9fcfPWezlv2Y8g70UAS+jHmxm9FBkLUXhVvFMNTPRYDLhKj1+3ryPIplphSpjkZjUMzD09MzRQcpyHQ3v411eqa+oN/TLIdYnRmRjJQRp6WGLtkrzrJMxuq6EnnjBByidPIGVHQ2nqOx5epAqX5S0OwguXE+B0qHCIoTSbHd5K9kbIf8g9TwliDTY6YyYlq+UJx/oUloOMxNXpTw5JHu7Fkv+dYoPTI682y2cuqt4sx0XiWbJvsaWsmnDVE49hcvWAcB3YPB5yfMKMQwswYhYvthuH4wOG0wznLw91If9zxwfcuqbuRrl1znPfchB1dA9U00nVbwqRqoV0dObz/nIeHV/zy53/KxcfP2d+84q/+7C8Z1DJIkniyrvn4as26tiAjzgKo0FAyFodhmgMpREyEkDIVyWgS54wl5AqHchszWJ45exoTJ+rKM0fHNM00dz+luXiJ2/6AZHVNrKBzM0xxHJo+kGKO+yxFu6+I/ywckrLWxjyqZkge9HP2kgs0kx3J/J2O3WIw+YMLgFgAyyWZEWVbZHbOkgCQMzY1jPIbTcPN0kPAsusSmoWl3APg8i59TMtHFGg16NTv1gtetXgZU0VtJs1E64Z4usL5N+BqvO2RFBlHS9uBlYn+OOcLdkSpOB11evdHH33MqzdvefPXf0OzPXKsr3n77h2tf8/x7h1xPNH8Tcvu+MDd+7dM48D67SvGYc8gYIyjrT0XqxqTIu16zbPrLd6OIBP9KGAqvHMkiTjRhqsYNIivG4t4A0G3snUOQiCKKrSWfgpvHSIejMaQ7dWH2NozTwPzuz+mtQ6/+ZhoaiRXdwrRt6hSafIREZuKfS1ToR6BEuoXUumtzmXUzG7XFgmY85t6e4ZvfmPjE2SRYLA5JzfZ7Rs5X9XC7spXLIjqxyTRUVaoF8Tox6V8djtTELwCVC8fjCHl08rpqC2E2ltCyJN67FnFtHMDVgZqe0FnwdkKiQFXr6lXT/D+qwya6ps3lTD0DwSpcHVDwiNp4vWrz/nw7S/54LM/5Ie/9dv82Y//ks//+i9prz7mOBv+6ud/yd3tK6bhmMUUlbZuSbzZ3RLDhLfC9aamrVT2aHt5zcsXH7BZ1fTHtxxOk1LCrIYqFgcxkGJU2hrCPM5Yr30QKUateIxj2dZgNVYsCvWCwdtE3VRsP/hdCCfS+J5495c0jNTbTwhmTbKWkIR5Vi9RavPy2NIErVJRigicvZmhxE9qgBZ1EWKJBeujZMzfYnnfZnx6MXGRSjXu3Dp5Hu6SA1c5/06KRp9JQMyMFc12k3F4Y9T7YRbVK4SFTWFM5kmLWVgT5chvvHpOVcHPErwIzfwFDY622aC1YIOvL6jbbW4r1Hhp3RiIM+NksZXP08KNarKkwOtf/DnNassnH37CH/ze7/Nv/s1/xxc/+VeMU6Tvj0qwFBjmIWd0kSQBm6s51hhOU2RVN7x8+pQf/fB7dG3FNJ84jBO+avN3nHO1ISApMQcVmJTkSEHr3ZUXJEVM5fHeQLJAytBGxOZuoZREpd6GW8z4ju7l70L6GMY74rDH+VvqTkiuUSjKkpGG7MXyuhWjSvEcF6a8TotKVRYj11iwTI1XlYICrYSkIkffqW9XA8kA4pWlkg1KivtdnqdlN9Uk1uq+zaC0ZNIiHoyJkNnJetl22SWyeFBNRGymgISknV2VV92/2pVdqXy42ur7GAnY4QuseQnVmpQMGIevPHXT4b2naSPjLPSzIRnFBGtbYZ3HOsN+d8vu9it27/+G7fVL/tE//ie8+uor9ocdw+E943BCSx0TzqiqQiQusVFTN1xfbHBG+PjlC148vcRXhpAG3r//EsFSNx3TNOCcQJq0DTVGxqDtpjFFbAqkZPDG6rwSiViJqkmd+yWcsUhUtXjn1FidhTg8kE5vaJ/+NmyeI6HXmXBh0FhStNuwQBNFX5qMYmj0l4PvHOoUeIVirDnPLTo6RdzO2Cwgnof+SUlAfyPjE5CYSEaPBMlGEkVb74wt+WwGkk2RtY1nw8zBt/IAY24818C1qFcaA2XIM4Y8YKYYZloK4m3ttCmamNXv9f09AetXagQSMBJIQfXjmrrBeUNVV8gpMsyGmAx4t5AjTN5YTd2SxDAOJ07791w+/SE/+OGPuL+/Y550tto8D/R5QqRSyBMuZ+OVt7R1xacff8DHL5/kZu/I3c1b7m9vuXryBGOt4nzekqaZMUKYhWk2jEEwJpCihhvq6IQpzFijntsZvf+qJ62VC1/peFMhUlUWJyNMt1TrFwR/RYgwxoiZc7E/H7Uadz+WQFEDjDnuW07ZspS/GscZyaoVMXM8PViLtypE/piU+h9sfDlPImV3j0m5iZEcQxWwMWuyZEMqmYfJAJF2wZccN4sNLbtOO6VSFs321lF5p0eAUfJp5dAJiSJU1utoUglUdiKJw6WEkxnjai2zZSEgY7TRe335jPb9DZZB8SprsFY75VKIaE+Jp1ltadZXzPPI/duf0V58xO/+7h/w6tUr5igYI4z9CWuEOUamaaCpPHMIVNbw9Popv/d7v8Oz64165HDk/uYVt+9fK6RiLTGOpDBjyhBniZyGyBAsEfAKnCHGMEdDZQp5Q6htaaRXQ4nRY63FeafYHAET99T+OY2NpOmeulpj3Yooqthf1F+LSZV1KF4wg7Q5fEpK4C28q3wsL4ZK8ZT6OyWLlJFYLmsw/obGB2apNZJyImHQAnLOhLMP0/qkIQsGZvIAisdZl3GilEiEJUNKxTjRUVplWHRKqvfnEJwD7zW4lyS0+fj1JLyMOJS+7ixE0cHUce5JwYCtaNpLLq9fcLP+JevuyDQnhpizvRgRb3JJCHb7nkm+0jKdq9m/+xnr57/Ff/bP/nP+4i//kp//bEt/eGAcTuwe7jidDjrYRgyVEz759DOunz6lcompvyP0t8TYUzeeMAckDoSkcIYiHDriQWM3bWMMMemMDKt1XN/IIiWSdEm0qhEUkyuzjpvK03UrvIXGW7q2IhgLJoBJtFXFGHVWW1GfSovKlLqaIg5U6uzRlJ9n55A9jQ7VNsuMbnJsqAY4U2bqfdvj2xOOzLkrOyFJbuFOpWMpezxyOi5y1vgwmRqfsyltudOsqAxSlwxIO3euBOrujohJtK1l0+qxHoIOgW68YOOEJ1Cbg/YOO4fxLQYhjgegI4ZI1W7oVhdcXD5n/3BkDD0MwhBU0ssaYZ4mxjkhZmKLY3NxzRwvuXn7c4b+Ad895wcfP+Vq9Xv0Q09IcNw/0PeDdrmhPbcXq5bKJU67G63dRuU6dk3FiGDSrOExKSuQzIgYfL2iDSMhJqagi+yJWlaM52pEEqGqHJWrCCZR1zVV1ag8hYO6aWhWa4wNtI1HXEUwG0zySNBV0iTPLuD8grHySMOpZK3k2D09qsOWDJni/zR5TFmdVFLSNbffjPH9esb3+AOklMnK8RkztJIz35ShmEwT16Mh5Vm8WiUxSZMOJGRMySK20rhQ9W/R/tDS72FovaXyQAPOJKo0IKmnMgNWBBsPQCAaSLPOqkjGcTrtWbkO5zrqbkO7WtEMgTnMDBHmkLBBCGkCm3AeJKkHSjGrDxy+YtzfMM4BOZ4wM9TVCt9ZLroOnm1Vx2buuXn7itfvfknjDV3X0daeeXSkOFH7BDLjbI2IZQ4z8xQwRnCmUi7ePOl9QjdFZXMsnL2iYHCuViNrVa+mapU17ZwaS115TDjSmCN4x5TBu2iqpTKhQLPNqgJyJisYZRSlJMxBJ2haY/O/DWIfZb2PVEnBZAljA8ar80GWOvFvZnyL08qiMI92RqnKLqTBUlyNRZWgxFaq/SEYiMrMWMTCKVyLALjFfTorykaxFmcNVeVYVTMm9ph4xKQTVk7YMGSoYsJIoG4u6E8HRGCaesJwYqrvWW2vabs1m6uXhOSY5lvMMKnIIlqxCfOMtRXOCjdvvqQ/Hnj67Alt19BVCQk90u9IY2IO4Ju1Fs6dJ4bIz3/2c169fctpGPij3/0thv6AoaJum3wPJBfqRacCidLlTaapWaMzbacp5kqCZvwJCDHRVBVdWyuJwVrqRmcJV05weSavy+Lpzhok9lTumhBHjGtZ2cBoVCEBY5mjjp2YQiQEHZ/gvWUMRe4WvHeL9G1hF5VkpSSBmFyr1nHMPG4a+1UW+3+Y8S0fkn1QNrASsKpiVTasYnz5od5u8YkaM5pEKqWyQlRESagmNxypvI2jctrsvKodzgSdlpgGTLrFxBMmHCHNGa0qNeds9L5BhnusmUmhR8wLmtUl26vE1Qe/xfMT/PQv/jtu372lahrwFeMw4J3Q728UNnKed+8S2+0aLmoqm6gqTwgnwhwwqVoy3HEemacjxAmSJjGVh4ebdzx5+oyqqlVXL7PAQxISqg1tDKQ5EOIIaJaPUU/inKFyFhcsbeMXMq5znsp7vPd4D5VTBnEB741xxKmnjTvWbsXKQqBmU3nEOProccESvd6vGGa8icxzQMRTeUeFZZwDISiklA3gnEQ8ShgLJmhtmUIuuRDxzcb3LVFhKcdk91lAyKQSCWEOGXQ9Y0V2ifdK1CA5vkga4KdcT0RyJpwrwBLzz4MuqjO0laOtDY0LmNhjZcTKjBWdDmTSiMQRiQMkJRlY67QM6BxYT3/asX+4pR90ErdzlvUq8gf/5D/lo+//dpanCKzXK7wVxqHHWSFOR44PNxwPO+73A9Y11HWlC+4s1kSqWqewO2+52K5ZNRUSI/M0UTlLSlNWSFBKVEhCRHJXSoUYj60afFPjK6/BegoK11qNip21NF6B+3nOBhIDFiW1Oh0PoNSokBhHVdcf+hNpOuDSgYoDKz+xbiJ1BV0F69awagzOGepaQ4NxmvBW5daSGEUzcmXKWFUgMK7OVDmXcVqTCQalvisZudDI/pse30osiCHhnD0bUSyTwrOUhpRNYTLQaHPDiv5JMZ4ZtNap9CrZmeYapb4+00KTYQ76mra2y6RDEyaII1B6RwHbInm6NmiGasViQ0JMTQg7jrsbxlHox4kwBSrfEaYB0h2f/fCHzGHk7esvGYaeumnYrBpiDDzcvMW1a9rNhraucBammOfxttpIhAhlCPJms2bdNdztdHSCdyu6tmUcjjRdq6KMYyJJwJiaJI6QC/FNVVNVMJmRkl2CzQQCkzvhYJ7V+xpTZUg06QZIOghwngNz9lbzONEPE853VD5hmbSaY4TWwSSGIJa6Mlg8vaxYV4YQDUMIhIQaHOYsEgRq6CnkP5Ibt6y2Uy7Z8zkj/o2Nr3g+/ZBffSODs17lIUxOiYzJzIjSuXRmOAgZj0RItrBcs1WWBiKMkicjWmo6qId7ukJxQjGoTEetkI61YCpwFSKqTRwz7ilp1mOrrhnnnmmcMLYhTAPTMDAnw+G4o2laVpsL5nlCjOXYD1o18BUSItMEURpOYUWiAt9Q+cA8j+qZcMwCddOy3mzoHg7M80QME3VVMRxn5kGRgTE64mxpKiEZh/UVc5iofE3VVFh3XAhnRWCz8xaRgLdgqlxuNCrXG3Nt2Fa6jMZCiDPjcFKF/L7HuRoRwTdK8rU2EI0npQoHOj4Lh0+G4TQzzIE5aRwspayWEQxrBNJMChMiRin+1lNYL0Vi1zwiDH8H4yNnn7rwJhtXvjt5OhBnN1fgmMXzlaP4bMyl5Pu13WRMxv1s9oSCBAFJ3DJBtFw30CGYJLkA76HUHUPSAS+ibOgxCPgWsQO+vmCaEtZFQpqZw6QdbcNA5WrqynJ5uWWaZ4z1zNPIqe9J4mi6C+p2zZQcaYC6XuHtgK8abFWRgqoIcNLYtmlqXOUQiUzzTFXpPLYwn8BUVK5mTh4zJ6JJNE2jLGKxSg/IcbP2oygZMwRNEkQkM5QTEqc8/E/V+E02Amsqpj7gzExVRZybgAMpRloxuEoQt2a2BmMS1ibmWRuS+lkYgjK8Qway9XL0uirvsGi5U0eGeYzzur6S22FRmdwYdQ6L999sXt9qfKZU+6TUXzPv61c84WKEC1LO4tiyGebSW07VKQB1IXwX4xRK87FkVPVBnLI/rKVOCSsau2EdKUwkPHPSLC0mQwhCjJaquyame8Jpz6kfEYT9/Tu6zRXH4z1tLbh0JE575n5imgVja1arLg8LvOe0U8B0ff0c6x3das1qtSKMO1KYGcYe8hxdax2VUTjoeDyx2TSabPQjxsw4BiIr5gBz7KmXcQeTguMh5BuoUIgYYZxmqjY3e1u0TSHXy1WS1upU8DxS1dAyTUm/r/PgKqyP2GmmMrWC+EYYQ6IPkbte5Yo1r8hJYpa2RcBYq/caVa2IAsZ4VGIjC73LuaZfRMhByCj1b2p86p0WIDJnqo/ZCoU4sBgXaFJRAr1zcqRYUr6JpURnrBq3zTHfuVdenz+HxLEYfbPm0p7wMpLmGZc1h1OKiKuZp0FHB9SbPIw0qLbJ0CMYuqZlnnrs2JNCZHd/r9CFBFKcmMeZKRwJe4fzlc67nSKm7+muEm275vJiS4on1Yh2jv60g5TwziMpUNlE6yuG4Yj3EV97SDUpTtj5hEuRSM0wRqrTCSSS4gjWMI/9AhgU1k+cE4OVzNQGt/IYL6Q0kZJTqV8RhauMUR1qWzPPAddPKmdnLOIaokmYNJHciSAtMVZ0zjEno0e5CEEUfXBoDVokksKk5cSokmvKI4wlcFeFVJGsxQw4j7cW+10SDpONTVknqp+nhmNyDTcbqEhGY/IPs7tWNqzVY7iIAGW5rfNYhYIZ+vP7Lh4zZWlcQz8b7kyDqy5YM1DZnIUbB9YgQWdyOHHEGJnGiZQmpmiIUrPZdkicCHEiHffsTyP7/ZEPXj5lvdkSkiEGmFNAgjBNAbEVLkauuo6Liwsut2vm6YQzCecd82lUkW3nST4SpoHNqkWbuhNx0hpu1XYQLZgZmUadnI5hHg9aEQonhMQ0zSQpLJJcLRIIkwL046x43HbtsURSGBjjTJpdHo3giXOPdQ7ramLQkae4gHUjgscnA5UqPNTWkGKin4RpSsxZlqNxZKHKwBwCMZaqfFmV87FccL5S8y0trnpmfhecbzFCk8WCJLNTSh+tWYJj/bwMrzwiEopoS6Ql43vZACEtBplwyuIor0GUH4e6dSea7fWz5YEO4zasedCSmswkMWAdc39gHCeSKDUdEuOUWF08oak9p917SIZxDpz6wP4UWB9nNp1nc3GF9SvqEJmDYHxD012wvX7O9ZNnrLwwnu5o6wbvLdN4JIWAtw7rNDkxBNarhoeHHTEKtTdM/Ylqs6bbXlPXJ9jtSWmi9ZY5RuYpYWVmDpFRnReVMnYzkVcpZnPuh3UuYmzULDSpmkMMs2qouAJlTYrjG524GaaRyWVih4iqvvqWKQmnSWlmc1JstszvSCKMMZHQyZvnolXmcxZsVR4xkijMdNXj/k4NRGc6TaHSZO+F1miWGC6L9Bgj+Qg4w8taqC6VQGWGmOzNYkq5OTp7zKyGlSThSZpdAWR6ToyRkzE4+wQDdPFBd13+8t5XVCkwDSNd7TCuya18Ffe375HkqNo1sZ8I46AcQV8xhKAbpGnZrDzWqbC4r1e0XY2kkRg8tVeVgtPpgBENqIeUqOqGw+GOtq3oh4G7/UDT1jSrNdNwYhpPeSxCRdM0DONMbRNEZYKQIqdJcM7nYYelsRuqSje6s8KqElYr1Udx3uKqjnnW2XZTSFTJMUdL7CN+HkhiqWr1bs4avPVY30FyhGiZoiIMVeWoaz0xhjkqCC6aWCwWICweTbNbVTAoYqHK9dTCQVp4mt9JKEiWUkuxvcV7ZQ9nioHkc3jxXtkNCzleSVo2WnyiMTlgTSSiZkqpxBvZQHOGnTJOY9Cy0H5yuOYKaxNNusekSJwDEkecBDw69HkOMzZF5qTHll9dQuqZhtdYk1itNmwunnDz7ise7u+5uH6ClUDtLM42GIQwDwg6A60/HVlvLli1DZVPHB/ek3DMU888jRhXcffwQD8Kq7Ujicf6Cu+17BVCJInRCUrDDGnEIAxRiMarnnKSXPgvg6MVxK68sO0qfGXAWoJIFjevdPhLq3NKwORZwDp7F0ZMWxOiEJJRpCEKQVRdz4i2OrZNzTRNHAYd+lP0tMv6s+hrl4KDrrbRjvZHB6xZQq7vVl7jXLIpEVrpty3QisKgWejbWCU7hrhcZOGiaf6hXtLiWPSdMSwlNsgJii2hpGJ/USAKdQVNpTLWc3JEvwYZSHFUsFcU8BWjTc4xHInTkWkImCQ41+CrGudgtdlw9eL7zHHg5vYBZyvCNDCHkWlscX5E8oawVct6c8XTDz5lvb3GMXN4eM3Ynwhz4njcIXiOhwcO+4GuqakszNNEXbf0pz3GWsUcA9wfE51TDzcEQ8RrwoIhKJM018Y15GnalrY2dG2FNYGq0qw0zErdn6YeQajqRkMQNF5MYSYaIQbLPM+YaULsgDMjyVXgjEI0YhYv5Z0WaVVTXFNAzLnxaHFKOcnQxONRjwfmzGT65mT328mkJYEgG51IVN7F0rNhFkUDU1Dt3E3G489PhXo9k1JQZBy76MAsYjVZKFK/xDm5WYaUGEdTGdb1TOMFZ1YYb2A86E3wDXVXM49HfFXTrhLH4ztW6wua1RrvHffNmu31Cuscp9t7jLG0qxVt18JU0R/3CBNV0zKHRCWe69WK7cUlKfTsH94wD0dSmOiPPQnH2D8wDJpgdI2nqT2Vt9TNhmPfI7ZhCp6HY8/DPmJWOgXcGFHhRy/MUaeuW2tojEUM9FOibXXDOm+z9kykbjrqriYGVWNIITGcNIGxtNSrDWReZQqJGGbmacL6mTSfQGpmGpJVYD6MScFlk3l62TkYq4BzWd/ynsboz62xkLPxpbnicd33NzW+JWgreWlG3SUL8xT2hRhlohhDFhM8Zz0WUSdozo3h5RpzNzRidYyiKcBmrm0uUn8ieGdoKsvlqmLTetZNRaM8HkxyeNcwuQrnKsDi6wpbNcR0x2p7SeUdTibiDIfdPSE6MB7rLZISVdXStC2nfk+yHpuEyhr8quPFR59w9eQZ/eGOeTxiUdJqSIJrN/S7O079ERFh3XU4J1xcXQHCMMwqzyaGm/sD+9NIiJFx1jgupYREg6+05FV5h3UKW8QEtnKM08Sqrkkx0lQVcxgJsyYZEhVFtV5l60IMME4IRypfYbwlyswoompXVUdd12BrhanEMgVhlnkZc1VUKZapQ2jAZ63BGEcZey82ZaTW5Eb/0oX4zcftr2d82b3aBf4ovOXMViZ3MRlLbi/TOCCn4GY59/MuKFFrZsxS3tdarKuWODCVnYYe1ZWDTWO4XsHVKtA0Kgzu6IjBkNKsygSVUoBCmJiGiRCEqt3g+xOkyJQ7zgyJqtmwuXzCw05ZLE3XkqJOsDxOhuuLFYJwcXGJ8zU3795QeR2HSopEsSS7Yv9wz/3NO2IYabuOJANt29K0K477G0KKVJXL4GvEiCjfzys5gyxJoXVcjbWSzFQmEUSo6orKGuYQCNFSeaMeedaYW98z4fJMOMEwThqGiER8Mphau9YkJzeSJpzELHGiRlWJIaKJY0IyUeCxMZKJG5o127KO6bzG5PWCbxcJ+jWMTw0qZqNRZXJwouzmUs8lV0EKzboMhkEKGTEbZjZgMkxDng1LvvSsCnNWoBJovOFJJzxpRjYtNE2nQ/SsNks7AzZVGex2ChJHQ6TCt1um8UCQirbdktJEiCPbpx9xGgJI4LDbkwRCCLTrDSkZwhToTyOz3QOQxFI3DVGE+/4Irsa4mtv37xmO93S1o643WN9wOvZcXl5T1w1z7fHiMFhCmGm6mmaccBXUTjhFrew0TuUyCIZx0omS3qGJRUy0q0q716zBeqN1ZxLTMONspe5AhHkeNQL3HWNWTDU45vmEcytNDOKsgunuAHmGnBbOFBA2S5eiEkSKE1t6cXNRweX1W1rFMuxmOR9s3+b/vj3hIKfb2XisKY1AX69qqE68mpGRkgULFCl9HhmedTnWO0++KfGltU4/B+3X+HBjeNoOtHWkatb4ZoPxDTr5ZsRWne7CFJmw+OQQU+OmRIiBfhTai4+I8wkRsM5h2DENJ+qqVtUnK6w2F3SbDuNqRALjPNOsPfvdPYfTmKlaQt1ekJLhdDrgHFxdrOkai3M1h8OBpq25ePIcawLToBOAvFPdvWkemYPgvPAwCNiaulLxcFvVMIK1iconnBO89fTDTIiJy3WDGCWWGqf3yZpICDO+brSJ3VlSmJE0EWJiPw1sNhusqYnR5GmhCazF2JqEXZSlYjpXnRZmijXEpJm6GuLjafKl1nxOLgq/VHh0XP+mxqdgYqZEZbKgya62YC96wsrX5ngZh2bA+cOLVIZ3BaBW5fmUhYNKWSOJqmKtm4pNA0+b/197f/YjSZaleWK/u4mILmbm7rHm1rV091QVu2fIJgESIEiAL+QDCb7wif8vgXnidJOYmR6yuro6l8iMCPdwW1VVRO52+HCOqEWBRGQyAoN+SQMSGfAINzNVvXLuOd/5lsLtWBnHvXriDUpNaopsWg/iDGcU8ImQVJw0HRRo3slESIn55T3LRbi83NNEQ2Q6gRAG9vvA/nhLGjVZaS2N42EkxsjT43e0vjBMB8bDHc9PJ86XR/bHG97dvuX2OBKCbYHKyqdf/lxDXGrBh0Qad7RWESk8PC88noQxeA67yBQgeccwJJobcK4yRI93inGOYyAE5eh5NzGMe5b1TK2LCbMirjdKXlQtJokh7lTk7wt5vTBfToRwSxJFDWpthLLih2LDqbOZUknDrTXz1wsbiMeG2m4BMHpLWRvmXo+YYQ3fOz0/4fBdV1w+ErwjON04dJwKgq1P2fA/ufaC3n7d192ec0K1faWDq9CoG87knTAkz+d3Oz5/e+B25xlCw9GJMRHSANJoVeOd3NUe12CC6BVzaiuEThx3NCpxFyh5Ydq/5TJfcOlAGDJhnVmXMyl50nTD3dvPeH58z7yoQ8O02+ODkItQe0P8Su1P9F6ZxgOH3Z6b45HDcUSA58eP3Lx9y+5wRNAr/ebtZ6yXWb1Tyqsz6Zgc+yngemUc9lpVeqS3wpRewXePsJ8GWi7UuuLjDYd45PTyQi0QXNVeWSrSnVLAemaLOJ12B3pblS6fV2KKSrrtlVYzrlZc3PrNaw1g21Zpv6fOXt+fYl+B5++BL3LFRl7//I/cu388+M+rNiA4JZJWEeSK0yXj4Ol17OlEj5kMbr2denxtoKMTIXi9ijdbtRQ8tzvP5zeRT46BwzEwTHv8MJHSgEPo5UKZn+m16QeTBlXqi+kgnYPQIHbb8nXlr4UEvl6pPkLi9u0XBOdZlpWbuzfs735GGEbev/+anDP7XeR4e0fNF+LuQJAAPZOXs8oxD5G7N7e8/eQdUHi+fyQONwy7A+NhTwoeplF5gyEThxHpZ/MSFMMPHVN0pCiEmJhnHdbGMbEuGNAMQwhMKVqwXmY6vmFZO8t8Qq0zNOJApOPShPcDvWSWnJkGNRjHQWuFnBeGvkdcBJeuupxWlUbVr4MF195u6+GdvIr6w/eA5O2Mbd6KG7NFC8xPOnym5OpZmQsEmhig3P0rWQD7hb3tadGpVfcb7QpQumtlVBAzCAy+8+kevjzCcZyJ3dFKoA0TXqwK1JU8nymXM72rHNKHYE1uIMZ4TT+P4mml0RrkXK7daV6y0r99I4xHDm+EIc/M85nL6YH7/+Ge+w8fOOx33L29Y9zdsC4nctE10XHnycuKiPDzL7/gy599zjxfWNeVMB44HN8wTTulg4mGMte8QocQRwWPm8bCJq+vezeq33RMkfJSGbxqNhbnqBY5DzrxCpWyzuwOb0nDnrwseIcK1tOgsRCt0VpGelUNcO34EEhbm9OFPM/EacalFTfoiqxtLmPWSim593supV6UUGIQhSl/2cTmpX3foeJPg1n+hMMnVEse7IbdifveVYr2gmEbs527NqRiVhi9X50/0PPi0H4i4HEcYuddODH1gpcbfLojTQfVPYhQc2adT6znZ1rRqyMF60d81JbFNCGBCekXnNfIA8HpnpZMiANh2DO6wLxUXA+4uGeYjlweH+mlEs3o++7NJ6ZV1vCYWjJvbm/44mc/4/buE96+e8vDx4/Mc+b201/y5q1aY+TlrLBHgF4rl/OJ++++ZTzc8ObNLXcf74m+8uYI+9R1PxsCVYSSK0OEGNXZoJv5Y++dNES6TQTrfCLGg4H0SjzINROjGparpkI/n2aDREBXdyHqzrp3tfqIpqHWIdYs6lA9BoLunXEEs6y7Gguh8kq2gBiBxma7IVcv5590+LSiOYT4OnS4dnVK357M14PnoBcV9fSOhKTTkON75ILtuoWbCT6dVnY8IQVqGEnHRBwGRBp1XcnrynJ5pi4ntRQLTiuKjwxxVMtYNjbtCk4HnBAScTiwzMo8rk3zNyCQL/fk5cRuioQUmKYdeX1ivzsQomd3PJKGHd++/wYBoqnPwONeTtcV1nB4w/5wi+8r5+f3CJ67N59Q66o+KnHH4fYNrTVS8PzqiyPrEvBOzSC3G0PJr5WUHNEq4Wra4yaVIN5kqJ5WCjF24rCj5lnVbq0zLyvj6LeOWvNGBjWa9MFRSyOGBjHBcIC0p7uo16hXGWVvnWuQhp0dt61XDcHwBpd1p2Koq/XG9wgs18v4p1674iJijkwbN3+bVq8SuY23Lw2kmcG5hS15W6sZB0wDiSO3k+PL3cxBHpFyIbtECJm4zsR1pfVGzplaiz6l406TFJ0j1ww5Eoej0qqc/hx8olMQHPubT7jMZ3VOylUpTtORS/lIc55OwMcR5yNpmnCnZ0JKTHs9MI/3H7lcKrv9nrJccD7SysLjMnPz9h03d58BHVeeeLz/SNodONx8xuX8zOOHr1jXC955Su2cTifOAe72A9Rn1YuIoxPJtamzU69MKRDNHmTJGFUsIjQTmHuST9Q8681g+KYLCSednDMpDcSgoH+TbSXqlBgbEr17HSDTjh729KZXrB7CYPQ43Y+LD0hrStnfcMag69SqtzPd6/f/vnSzGebyw1HPf+J6Tb+n05A3F3BmbbtR6bUXaCBVoRljQ0qvOMvZ9R5uDyO3x5FdhF2/sOsPuL7oFRkSKURwQinZrhXtt1xIShqoRVd2TXG4Lp397acKwfhALwURYRiPrMtCbwUfNFpLK9iEiMYiBBdwPuHSHpbMfn/g6fGBcfcJ4Hh6fGCeXzjsjkyDx/uOtKgZFE04HEbW+ZnzZSHEiRASp6dvyesMOL1Om+Yf3N3d0VrhfHnAd49zEUEoBXxwzLmSvJgXcqcWzctV27Oo0EbQ6uRbA1fUjHELShSUUyjOUsw945DAKY63LAUXVKLptCeAuijB1Gtvvemse7MAl160d+9iPoLKWPbdWie/rU/1mFy9FdFBQ74HUP+owyd0Wiu2Eus4CWwa8s28Rn+gvP4g2VwADPOxzNqff3rDP/vijl1qlNM9+fnRNg7KoB2HqFpVcdbPJTXDduW6MqvziV6zuRgoc0Vu3qmWIys9KYREqytlveBdoImZMBpy75xT/bAPCJHgI7kU9refkos24L13muXW9loQGm/fvgXnOZ8vzPOFDx++YTDoguhZl8w6X0i7G6abkZIXfF70d6iFmDwp3FGWTluh9UyMepPk0plSUJ8TJyx5u5K95r1V7SOV79hoBVwYqVVfr3fqNuqC/55ViW6XQhwIcdQBbC2EuMKhG5TSbE/r7ObUCojoPdVbM+mDYHgQrRp+55V8uhGHg/fq0dyVjPDHWMx/9PABiDSjPXkczXoqZZfof9DYBD9q1+BovRFCwDnPYT/wF1+84ZefH9knYT19R53fQ71Qa9OJVDziOq2caWskTEdinMwNC3LOqr+9PCMdDoeJYTjgXKPlMzWOeB/p3kL01gtxSLQmlLJYgvmmpq/XYUZ8JA4jwQllvXC8e8f5fCGON9y++5T37z/go+aWnZ+f+fTnf8m4e0OtKzHu1UUhQEyBslw4vvkCfOTy8kgthRBVvbYb9vSW6VGI/o7CiRDUWu351DgtlTE6plErbC6NGM3ruFUDgMHHSDX/YOkd/ESplXEcSEMwgyWDgMOIjxEfAiFFNnfRVipleSFORyQc6DTt63tH+rZ1QtMAvCcYNuu9NtPdtB402GxPrrIIp9eyiJgj2U8BmeX7mw2zcXAq39sCg70UHcmdg+bpZvKz2498+vaWn396w9vjQCRzfvxIfnlPzSvdRX3SwkAMAy54pDdaKyYNXKl5ZZ5PvDx9pMxGW4+ekBIuqJBJWiWEcCU4tJrxScXOpbzov9t0pulA8JEYE45OLws+7dkfb3l5fiRFTRM/vzxyfPsFw/QbSmnsxglpmeXyRBp37PYTjgIuIK2T28LNmy/xYaTUjI8DKURzQyhUC4FupVDLyjZXlub45rFSSudmCuxGrfxLaewNm6MnSmmMwxbEovJSjUXQpIAmQoyRjYAaor9m1IWQFG2wa1UMZJZe6C2DS0BUUm/TbLmNpRmdoztnBcZuN1uvbhIKnF6vrosdmHBlNP0xdssPX7sbEQDYyKJ+Y6HQET3+xnpw5lAvvHtz4FdfvOOzNwdD8htlmVnOD5blFiFEnERCcBZCp6B0iAMhjQB61daqwudJr0BlDinl3IdB4Rav24DcKs4nhmHgcn4ippGWV1rVHbBIwwU1VIxxoNaFXiCMO2J4sVWi43K6cLy74/btp9x/9wEXgtLsfSAvFy7nE3d3N3hRDcmbz39B8Inz6YllWVmWWZ2yasYHr2aWrtFbVX8b6TRxfPek2Rw3k7DbKWO5Nm36m0kTNlep2juDeLpoD4jXPS8u0Bp497raEsEMGsXAE9PZOquaAlILvq2QdraVVw/ErhZWV1jNYQ5Um4OpDZz6c/QP3LZi23r/jaTwU1yqtpPtvTecyBFjZIgRvwmYRXO8qrkRHKao1e52YIyVui76VJVFbR0I2nC7AdyCQ/UFeraDKtDiaBZi6tw+7A70S6f3QuuV2gZc2NFrUa1sGlXQ0xoxjazzCyEkXIjMp0eFXdJIaWJXEcSUcBSW+cJ6uWgKeW8M0XP/9EDOC9O4Z5p2BO8pJsMEKPnM82Ph3aef8e6znzGME88fv6HWTqvaa13OH/EuknvXLY3TgUwarBmeT5XnS2VMwnHnGSMoS0g4jJHeKk6aejNHf42M77beDDFR26uhZIqBIWnwIC4ovjeMhBCBoNEJMeKiJlyWmpl6UdNxcTQJtKqQ2CY0whakzSZgb+F+iFw3t06+R7C7VrrtOP8w1vdHpJOOm31kNw4cpoHdlBiHxBCDUaU7YoHLYhPRNEaOe2/SO3MvlY701bYgmsPWW6HWfLUMi3YonU8a1LJcFJvzerX1VrVfKQveD7SW6WFg2L/RwahqcnhezuAcMU3kvCB0pc4PO5bzE9Irw6Bkg1a66l+lIa3iENK4B3nk9HxvKeuB2ir74y2Xeebm9pZBHF98/pbjzS3Bey4vH5Ry5AZd5eXCuLul1xWnulFaF9ZVuLwUeiuU7ui9chxhGrdrSvfh+93A6VR1pyzhurJS0DeQM4wenEVLODq1d8Y04AflRXb02k5BSbXOO1sWoMRd7/FeSEGIMeCLejo36/104DF4zJjlNo3Y0sBd8zp0WlH2+iaxCO6PM/p+8PDF4Pn5p3fcHkYOU2KImvfgpLFxw6QWq34KZ6TxSBrU8byLEGPSqudE+wenfiIlZ22AW0O8ObojtLrQ1oHWmiGFaG8ilVoyl/MLw5B0hZRuCcNohzoCFrdkH4r0RgiRaX/U7LRe8QgxJcIwUfOWiKnXSskz03RH8oHT5Z40TdSyUGpjd3PH5fwIBOYlc7p0hl0HV2kNxI9I60g94Z3gxz3VRyRn1mWmtcLLy4lSM8dpIF+0j7vdK+Au23aoFQIqtrK4DILfglaUSCGiPD8fhN43WEeIyTEOg4n2UayvN9sMDQwpEaJqdrttoXpXE8wY1PUKcYrh2cFzdvC2OFQN6rHPS6y62QIiOKGaV5BscRY/9vClGPj83YH9lEiu4fqqiqvekLbQSoZelUYNuPENYTwq7ak1o1w38E7//HIBM+KWrlw0LL8thEDrhXp+JHbN6yhF4+FrVVZHk6Zu7sMOXCROtxoJ2gobV1AxPW9VC9Jw4JIfkJZ1+Ig6BcegaZmI/p4hTYgU8vLM8c0bnh++JQXNDOkhIV3jTdc1A56Hh0eGMbHbDcSwo0sGdMKNw2i9X1ZzctHXPI2w3+0opSB03t1EEKs2bWN7N5LTZPHW9HDo0OAptSE+KZbXwaMYaPD6e5baCEGdrLwNYF2UnJvzjCOS/HR1nNDdrFbNDhobFoJui/RkaSUzWwxl0m2WJq9e0Zrdi9khfw/v+yMrth88fCE4DlMkkJEy09tC7xkv6pLUm34Q3kVCOuB3bwnjBNLovVLyQkiJcTiQjrdMhztl4fbG+fkjp4cPtLKgnnwqQRTfIC40HHm9aEVoQm2NVhai0cV7VxYHYsB36LRZhUlSOsuyqtt7V5wvjjuolSqeKd7Q6oVWhZQmWuusq6rV8nwijDfEIRGHCe9n6lporbG/ecvj+9/TJfBwfqTVhc+//Bk3N3tC8ISwo/rEfD4zn56vh2570DaIx7nI7U2i18x3D4WbvSN0YRrUqjYExTH1wVOAP4TEUrMxeAwQRqu7a9bDOqh1NR8bHWDEvJLHNChOZ7bD3g3X/bvieg7ihEfoZWYzvb/KW61IqPcyrwcT/W+ctRbb1bxR53704VOG/EwtM1KX6xTUnUN8whnhMMSRMN1ATKqel6rclqiL/f3xhmEY8SFQ1hVxnsPbn/HJz1fy8szpu9/Qsu4yBU8uttJpalkB4H3CO0+TrsnhstG1dNJqtV0Zuet6sT1up7UXfBzxYaCUJ9KwV3H085lShTjscOsMrdBKUXJALrR8po+34Dr58sQ6BvaHO+K0o+bKzc0tt3fvGHd7nc57o9bK+XJinU/gOsGM1LEqVKqoSXkKSG98+1AoBXbdGXXek0tnGBxj0VujNKE3NQiKUbUb2E0T7AD01mmhkWJUFlKtuhLpnTROChY7GKYdW7C2/k/orUAQOpHGRKfQuj7seB1UtvixgO1/r/t89LA5TzWjIGewnAOzzvuRhw8RalmhZq0wXuGN7Xtu12UIkR4mutt8lZuu1nplmt4w7XaEOCI4LvcfeL5/YLr9gtt3nxKnxHhz5v4P/4DzE3H/Rsf7clL/lWnQN7sb2u41KVv7OgNWpdNqppWVvM64oAd9vZyVxp4O+vuGUddrsw4zYRjJ80prarIobVbhesu43lUf4oQYPfPlwjFn9sdPyctJ8buqZowIlDyrN8oyk9LAMDpayeS10LsjF12PTdPIZc48nwrLKmpBmwIpaX+1KQFjcFQ8rTly6SSv73NtDTW19zb1KgOl1aaO/mJ4oFfNcW+VIY1Ag57xfq94reiNglRVHtZCLi9sWmU9XfqQiNPNVuvOMMBmTBZeV3ybf4sdnY0B86MPnwDiBlxSJrMPgZgmQjQXIq9kgl4LTbz2OzHQCjTRp09Q0x3XPOJHuj/SwsL7b98jYWA5P5GGI+nwGV/9+h/wwwWpmd1ux+54g0sjOa9qBev1Z3g2Gr6SM1srlFKodcOdPPlyohWNJw1xIOeVEBK1N+bLA857tSTrQhoGgou0uiC9KkHTrjBVz3nO8wvr5QUXBp4f7nF00jSR14zIyt27L6l5YRgndtNEyQu5F1rz1KY45m53w/Ppwv3jTIoB52E3BqYBYnAatiMN72FIXM00S+v42sGb64Nd5WJAr2axuWsWSm1qqO59oFYlG6Q04Zw+qLrD1VgtRJ21ktd9b5MINHyI/2Q/4bwnomnkTYQiDk2RV7KVYsxiQ4jBdD9lt+vwpOmWFCMhDjolxsFE4lUhg/Ws7kZxIo4Tnk4vQivZoJZnHu+/AxcJww1xPNDdjrXNfPj2W2VDPL/Qlgvvv/0a4QMpwhc//+d88vaX7G/vWNcz9MbTw3dGQSq0Vmit0nrTa8UIjc4pkcDHQa28EN2zes9adWNS80yIE71VwjAw7T/ncvrIvK4M087w/cb89J5SBWkrQ4Dl/EAa9zjnqCUz+Qkf4HD4BE/l5uZAionL5cJyOdHK5mLlkRB5eVl4eD6Tgq6wYnRMk9Lqe4dc1NfOoSniVd2V6F0zSBTWV+1LF9tAmLTVBx3yYoqI6C58GEacH2h1ZRgHvEVOSFdUoWahjyPUjGMgeM+ayxW8NhhAh4vgcKJBhfrztfYCiOvXJcErzV5+2sDhvGfY3SlNx/K9lEiYqVmb6FKEMNyxOxzwrpMvz5Riq7HzGQmJ88sTafeOz3/5uU6p446bN5+wzGcEz+V8z7f/6b/ld7/5B0KYuLm5Ie0/5/DpSjpEhuktd5/8gnVZeHr8jtgLeXkhL2em3UExxmDiJhHbOxuGVzPBQylFneZ9ZJj2bEnpu5s7pBcul2d66+z2R5Z5wcWIrBfyvOpqzgfKqhhicIIftMFvpVFyIR32tAqX8xN5vege3D6EtXRybjxdFgDGlFhLYRoiuynQRKhNzX4UwnCEACEaqNyFvsUX2MChLgLuyjbePvxam+YNiwrSUxpxUml5Iez21oOqzFRap5aFVlcqOzS6ylO62WEY5OPQQy52INUQiuu2Y9vt6vTcrpOu+yOl74/kcOgaym3+HZYm2GqhlkZvDh+P3Lx5x24XWU8PLOuJfJlpPZBLZj2fqDLw6We/4u7TL6kN3GXGh0StncvlmT/87j/w+FGrysN3H/FpItfOZZ5JL5r4+PT13+tqTTLB7677RgAfVMPbymoqLk9eFx2G0kAXuDz/gV4X0u6WGAe7QiMhTlyeH1nOz0q/6grQ7g83SMnUUmmtU1rR6lMH2ysHWm3UXlmXldPpGScaQzqNow41a1bfu1JoDWqpjEnJtF10G+ScY8nqPtC74KI5QTiIwfoqr3idc1GNuvmn/ZQBJ8TgdSDoHafCX3orGgzjQBNE1bdP/az1uu5tZUyZmcQmXDfvYjYPFumd0ru2W0GXCCrd3S7ZrqwWXYHAHz16f8LAUWrF9051mqHbe6XVcsXxjndvmaaRsp5YTs+cT49cLgUt0I7H+3vC9I5h2rEsBfHRUHDtGdW6ohP37/ji818xTL9luVx4eviAjzvWZcHJhfff/pY2P/Hzv/wXpHFCeqeuM6UWUtSrJo4HugjLyz3eJcQnulTy+RHvHfubT6m1KKxTlIeXl5nlcmYYduQ1U7sCym0cSMOe9PJM64VlPrPmTq2NVtRzeM7PhDQwjZOSZIfRet6V+XLWQ0VAuiPnVeMTQiIXU8gNkVw0dLD1rFib2ZIFp5R6ZwlA3QRZKpt5lStsbPLeO8OQ6L2Ta2Ya9mzREPQGIahTV4r00qnrquByCkS/MAydGD1LuYpvEanblk1JB60gMepeHcP56Ncbx+FoXgeZbq5kP/rwiQi1FFwI6nrUGr0rhtca7PZ79oc9QmW5XLjMMy9Pz5zOC2+++At87zzef4QBvvrNf+Tb9/8O/I43n7xjtx+hF5bTA612dref6BAgAw8Pv+NyOlGzLufv3r5jd/MJH5++49uvfsPnv/xr4jByeXnPdPOOdHNHCAM9Oto642KiNzEcUp+/6eZzar7QaiXnC2k8KLQyPxHiwOHuC8qHPxA87I5vKcuetZ641JUQ99x99gWtd+bzM+eXkxJSfWM9n8jLwpB3hDTg8PS26gfl1OpsWdUla0wR5x1l1Ww0XCSvK9PkbZuhGozNPCl4A3SNXaAiPX/dOmzRVALXmKyYAqU2em3mQwN+nJRubycpTTvqeqHVTK8reRWG6cAu7ThhiVG9X2uXYnsVqCDKPupODAHRFYMg+nCIo3TdRoVh/GmHr9UCbat63dgNgvOJ/c0twzQwP5/YpJJxOHA7vWFdFu4/fMN3337FafnAy+mR3/3jbyBMTLef8Vd/8y959+4TVXX5CCTieGC8+wz58C3NNSQkSheWeWE6fMLd53/FfL7n+fGeEDQvVwcNW2M7nchDHOg9E3zQgOYtflOE88t3lHUxi4zCbjdRioK1cbdjnTunc+PjN9+Qy8p5LvTywnT4JePNOw6f/iW3uWq43/rA6fEj3334jktdEZfUwcsJKTlSjMZILkSvQHGzCXaITgNbeqVWT6kwJLsqxWzejIXizGRpOw7eudd1nNjhky10T19rySsp7rVfbA2XEs5HIypAGCZ6XYz0q2SJcfclQxJyUy6Md96uUbuCSeZChtm46aalb6zqTdPjdMDq3xOb/f9/+BBqzdpwXpfGSiT1PjFO03Wh70qjNE/1O1pr3H/3FWvOOp3RmW7e8skv4eXpka//03/Pms/8zd/9LWW9MJ/P+BE+Pjzx8vJEro7puKd1Ia8ra4yk8Y63X/5z3Mcdl5f3LL//Pb/466OJWtQe9jriG06Vl5Opv/b0srCcPhJDxO1uWC5P3L77QjcQOObziZeHJ7oE5tPXfP27f+TLf/a37HdQfWd+ufDdhzPTfoePgRh3pOkdP/uLT7l9944P33zN+bJSRQcKt+mXux604DzRRU7LwhDBuU7O1QBdZwhIs02Beva5AK43W3WZSVMTxJmj67W/QgF/3PUqdmjlj2GgS9UrFHXvrxjzpRZqgWGnIqfYZgKGZvhXAN8FJZNKf71ihdfgv21Nt0E/zjvCn+C4/Ec1HK3272VmqEOBCIQYLZlIgUedRD/y21//o/rVne85PX1kXhqHt7/kcPcl0+0v+Pj+Pc8fP/Ly3dd8+/WeWhrffbxnXivn8wt/+O1/4rObHXf/+l+zO95RWuXldCLt7pgON+xu3nF+es/L6ZHw1Ve8+/KJ4+1bqwmaUaEO74UuzSJBoVW9asVPSFk4vj3alVZootPwMA6IJJ7vv0KkcXr6yN0nnzF98SWnpyeefv/3XJ4cb959wfQmUFsmtz13n/4lw/5T7r/7muenJ0pekaKe0mlIGlffO6WuBK9L/FK7+q5sNiPOaTCgd6xNCKIHFq/unyIok8jpjaTu9N0Omg4PsvVh0hFvTBjZcnJhI4JK17WoNnZORUJ4pGZS3OEW3XK4LUpKzPDJb5bIjaBMYzuI1tv1diWZBu+uB/jHHT6MzAjXF68aB+X+19aIURko61pY1kJeZ86rNvnnp++obebp4YFfktjtd/TWdEH//B2//91vuL9/4rv7e2rOlJY5TAOf/+JXHD//Cw5vf0avmbzMzMuKdyfKstB9olZ4fnrk13//70guMw2dXlZKuWhEV4WQbonpDnGqP25dLJhkpJQVHyJxvOX88sDdp39Bmvb84e//HafHe7oIbz75lJu3P+NyOZHXs+b6uh0u7hj3d4QhcXl54uH+nl5Wkh8YY2S5zCr+iYFeNTY+Bo/zTXetreO8HpRgmgkdGr29vyqnJDQlHBie17vufTfpJmwLfAsMFKj1dV+7TcROvOl3defrnTmJOV6rl12Zwas6zbPtkF9rq5471XHjX8VDza5mZTuhUJFXl9offfhEhNL76w61N8TAw1YrrVZ69MzzwtPzC+d55enpxPPzA5ene14ev2OeZ5Z24t0v/gt++c9+RfQNbxZqf//3f8/z6YJzejWlAPvdnuHwhpIL83lh2h9IY+ByeuT+/e853t7i0i1+OHG5nPjum99Cm/ny8wOjr+ASpRby/MK6FtLxZ0xvfsF6eSZNR+UB9kwaJpyLPN//nuXlO0oV1nXm6f4bSl60YqbEfH7kw+9/w/P9e86XlfK88PR05g+/+w3HmzvG/UE1I30Go5pNg+MyN9a1GWQSqN5pNXGewTuGpPEFpVZL73mlpW9Leu815zj6V0Oe1rhOkdeqY4e3mRHQOEQ9FiZ1EKersd46Ubn4xJCoRchlJeSVwQUF76Oz203hH81W61cfPjGheWud3vT1euMHyiYcbwWaR+QnJBAJUBv2pGzu47q+Cl2X5JfzzIf37/nt777i97/9R+7fv6fXzOnlzPvv7nl6OiEu8T/82/8b55f/AtcLfghI1cNTWidFz3nJ3B0Gvn3/nhAOhDCqoq3f0nunLCfK+sLzQyGkaCncMK+F+6cn5pd7fvbFW8r6AbxjviyUvNA/vqf9x/+Gm8/+hk9/9ZZezwzDHp/2zOePjONIOdxw/5/+Pc/376mt0zqM0wHvEiVnepnpogfp5mZQ4yLfmV/e8/Bdx8dB3eLHgDKzNbQwV61EGsuAER86YwyIE2LQnN0qmyvAFqzclRvo1dnraoOI2mustscV8SbW2rxT1D9Zr15vBFVsBdl0nRhNfoCQ0kjrgVYWenBAI3qdbOt6UQWhSVj1KvXmneioRQMAvcckDUHdKXrDu6RA9k+h0YtAaaLgZNdMXNc9zjXSIORcqPnEb/7hv+P/8X//dzw+fOTN3XRlTGjKuGPOK9/+/j/R+zNrgc8++Zzni6rth6hYkXedUhsxDSTX+O6rfyS5ikfhnVYzIUXOj9/hfGQYHd15ljUzHW54ePoWEL78+RfU5YmX50fyslJKZr688O233xGmI7dv3yA9GswgxOkN64c/EMcj+zeep6cn8pqJQyVfHsjrmXH07PcjznnitGddCmk3Me5GlvyEQ1PTl7XqzrY1c/VSlUv0aiXrvRlui/23AXa7oDR558H6Pyf1Cp+kGNkSLtWwx1KcRKvcdigx3qRlUujivzWGQQxi0Zur1EIcBluTOr2FgkYkOCLRq1tYzlwlEt45I5CYc6oRSwOKHXozK3LOfrYL8D2LvB99+JZVdRMhBItZaPoG+awbCJ95fvgd3337Oy7zSoxvmUZH64XdOFwZy7VeuL9XCOH88szz6YXcjKVi0svehcNu4njzFs/Cy8O3EHTCG8aJNI7MuVDWR8Y0MIwDoWVOz8/QGl/9+u9Jw55PPnvHzdvMt1/9hsv5wpwzeb7nH/7b/5r/8n/1vyeMifl0z9PjB3yYOL88Ml9mzqcLy1KY107cO/a3X3IkM58e6P1rWhdeTmfoncUJ4zhye3fg6enMfrcjBahFpaClZPMs3Nz4N5jEAAPbItRWGYZBbxWa6l6dwwe5EjWjV/MlTI7Ya8V1zT/rrTL217Sf1riaiqt/tmby9l7p4q8bKu+90undBmR7alnxQ2Uc1dV+XtYrfiho1d76xKtLBUrgBQx/1Dq5BQf96MPXRTgtC9479QsxNNs7R+qdXBsxOabDO3xInF++ZtrtmEbdnbrg2U8D+8NIbY1zUap3DMLd3ZHb3jnPs9rYOr16khfKunDYJ87nZ7769jvmXIlxYJr25PXE7SFymAK3t3eM46CMkf1ILZnf//YfielvmXbvSNN3TAIu7whh4OH9b3l6euLtZzueH35PGm55/vgVD1//msv5wvPTM10SIY08P95zvlz47PNPlS7VHPOlkDzsbvYEP+hhiiN3NwrGD2lg3CWWS6Y1iHSG6Jhzo4kjxVeipfe6J6tNcLURvddVqtdVFaJXXWvqUhrMCFIESpWr2U9rDekmI+36z7U1Bqdin1IrISW8V/aPMl0qPqqjQQjpagwgMlBbQ0jgBrwrKigyDiDC1f7xSiSw16NEAuwhssr1UzYcvXdq0UTt1jZOvrCbEjfHA/tRDRvF7VjnmXKZ6a2Sy6qZXw7SbtC/3x0ud6UR7SKX05nLeWUaB3oPlALRBQVmy4UuBz4+PvLbb+7BOQ67HSlGHJ0p7Qniqbnw5s0baB3vDpwvJ7755iO1Cf/yX/0b4nRL6g7xmWF3S2u/5cNX/y9cv2j6T22cnu51Wl/OlDwTxwOffP4ZKXpOj/owxfFIQ4eA3RQt8PmWdTmTV9VHKL8vM00aj1WrfiApCDII51WRg2gWI3pd6ftcSyNEZ5lo7pokEWNgS1fyOEIaabWSosZmrVVT3nsTiFbdelIFm7khdFFUYggqYNeh1ZlfjA0RCCKFmBquZ7wbCR5VwzVHdyr40hMYbOgUfVBs64ItHwQxorX7aZQqEWUyiOi7VFvREToEWu9c5oUxKbVKatHyLoX7+ws5N0ajzIvxzbx37A6DNuXRMU2Jy6VQOwzDxP5wZIwjwSfyeuH5fKEjTDGCVOZlZm9XeSRyfn6m94XPPv0MXs6cXk48nzriAy9PjwgRnw7cHjRzt5ZGnp+4PP2Bkgtr+cByejANSOPm7lahER+Zjp+R88zjx2/567/7N7w7PzNfTkyDhsXMMuDDQAxCtYriRAU93utV18yrTNDBQc/INrnqvwuGnYWoDvugVcWzYWv6HRClr8c0MQjUurABvLU2ZPRANU6jhuW4oAeg10YL+mDTK97v2bS3Dmil0Ppi37ujxFMVW3W/abKD/d3tGtZtzLZXvtolOzFCgv3eP/D1w/uP7QBitGo0UVvwPJ5Wns8ruFEF0WXm3bs9Y1y5PH+k5QtlXWitaez6fGGdX/BBiY37/S1f/vxLPv/8jt3oqT2yf/ML3n7xC9WWGk1KJ8jKkmdEGq1VLvOFp5dnljxT1xd6W3Cu8/B8obmJ/ed/x/TmCzqB1jyNUbHJOrPOM95H1mXm8eNX5POJ8+mRMN0QhiNraTze3zO/PLGb9uT5wr//f/43HO9+zmc//2t2t5+wv7mjy8L59IigbGRnHtO1ipoeDZE0JFVz4TVWVLyabNqWSMwF3ptFhYbudfDaP7kQLE1Js4bVoLExDBPjOJh9SqdVk352lUsqw7pdj0cwcoG6iyVLLFJ8zoXEsLsDH2ltVY+Wmmn5gnNd8cPeTJCldiPSK7U2au0aq9UgN0cV2860dj2QP/T1x3cgTq9f77xiX0H7At2tRmLUcOToO3/5Fz/nV7+44Xe/c9zfX3h//0Lte8b9TrW+0eN75+bmhmWJ3Ly543g8EsI3fPv+ha9/91vWT94oo7Z2ljUzrwvBOWIIjENCcOQK+E5ySiNKKeFd0GGknfnw3Qu3N3tEglKQWlDF2jjxeP81bz7/laZOPmfOzy+KndWFZc2UvFLyynz+yM2bG0IaOD++56v/8ILzCZHK7nDHsHvD88MHzs+PHG9uiEMkLzO1ZqRoVu2GkWwLhlKV9Fm7bRqCxwnXJr63QoqJ4AIiAec1jA+0Gra2sVgK4zAwxZWyqKvVukIKjuj0+9TS6WlEgoBL+DDqmfee3ht5XYzxIky7WxNlra+uVE59+wLQfKP7blbGOmT01sllVtPQONh6UHAuaD38IxT6P+nw6RrHtK4h0JtaYgyDrte6wKdf/oy/+6/+Fb/42Vt6nUnpAScLrQqPlxPD7sjx9i3jvpoxkHDYj3gC0+1bWl1Y5pXf/+GRv7//QIq661yLEkGHweNcYMt4W0uDKIyjt/Ff7XqHIXJ6PPHf/dv/mvz4K375s7c4D5eXR5wU0nDLfHri8f3XuJj4+quveD6pGGkYAzEGUoqkUfAx0SUaaDsibSWlqLQwEUIcOdx8Qq+qy90djky7PXm5aOJ5qdRm1UYc0QuX1nEtMDhHsk2F+f7gu9Caw3mIyV/TgPRQqIwVL6xZH0bnHPtJJZq9d3Lu+MHjcaSkiGGvDjcMOArejXgXCDEi3UMXWq846ZQ0EIeJ4G095iIuiKE2nYB6810lkyah2MLme+/QK8F5FXxJVHte+eHUyR++dp2W0OCDfsBGp4ohEkKg1MLlMvPZF3/J//H/8n/l53/1t3QfKa0T0kj0jjE51vnM5VIJozp+QkD8SJOASGI6vuH27ZG7uxHnOpclc8lZd5Xe07oCtnPuOhm3Zh4upunwau49JHUqfXr4hq9//xuW5UyrmdPTt6yXRz0YeeH+/X8EhF/+87/icEwcbwb2k+pUSinEYYcPI+fLWfXDNROnHWl3YH9zQ2uZaX8AUfVbSol1nYlxxzBOSpvXQkBtuluN5klTCsyLvo7gdYhrOEuFFFWBIQptoYeulqr99hDxLthVV4kxcNiPpOTV4FEUJI4ehuTVEMk5Uhz08GI32HiDTwd8nFTlJoKPI2G41SPhAt0nuh9UpegC0lZaW2k1U0tWAVaIpKgJSdHcZtURTK5U/h9/+MR6D68Hr9ZqYGhkzYXT+YV5nlXfMd6CH3i+LDyfM7lW5rUyTiO5zJxOj/Sq7qBxPNBJ5Np5fn5hzY5pd8ObtwfuDqOxaBxdInP1rEU1AzEOjNOeaQzEzSwoWjZH0wiG43HHUs48PD+T5xeW+YX59MjDx/fMl8cr6PzxD/+B/XjkL/76rzkeJpxz1AZPLyu5Dcw1kiu4MDHdfI4LNzg/sX/zM5rogdi/eQPR4YcdadgxLws+7onTHrxHUE/AZrSvIWyRA55L7pTuke60L5XAWm1y7Xo9izF1mu3Rl3kmDXvr4yO5ZsYxkqKlVrpIGtWLxnmv16FLagU3HUi7A+I0LCamZHSsiKDV1flBD4XFcfVuURVx0tfTjTDaivkWqpCJXo3OLwSpeIptOH7wdP0J167ztNpxzoTBrVPKqmN9XYh3N6QYmU+V+4dHvv7dH8hVNP+rCb5W7VdK5ull5tMv7gjjhO+N5+d7ep0pJZs6bmQYEjGuSENZHuhWIEZNcoyuEGJnGPSpwyVq1wdi2t+QhkqXxmWZdSCQzsvDe0qbudlPhKh76tZWnr77Cpe0Us0iPL2cebl0jreQRFhLhbXQW2XaHSF5+tqI6ch3H77hzWc/Z9q/Yz4/40UIQb2VQxgIbqW5RveWso6K27UKBgv/gzEFI6Fr75drI5aVKQSVNrIBuaizlOv4MNDbCnRcigzjQM4FH9XpIYZAI9Byw5eF0ho+7TncvNXgGKe72CBQ80lDZEIgtmRYooLdbIxm73F+xPvFeHuKM7q+7Y+3qV6ZRXSl2PufympptdFdMwato7ZMahERYYyew2FPqYUP79/z1a9/zelc2N9+RssZH5/VS855nDSeHp4YdzfEEEiD+g8/Pp+Y5wsinrzMrKtuO7ztNZNXGlf0nugbyRXSqLBBGiJ4z1o6pTRSHBjMEer2ptGkcv/hG2o+sdsZzgUMw444HSmlUS4vDOOBQ9c+K4YLSCFGDQKMw8TD4z3LfOaN/1KF3POJ8/mZLoH98Yac1YtaH5ZOZFAtSfCqoBPd4boIvjVNTuoaVRDNWaB27aGkd3KtpLYSXFRRkXc25Hnm+aT+yijdqJqLPuPIsq4M6BU8DKPJSQthtcTIENnffsowTJRlpdZM604DsdeTPpjDDZ0IXSn9ISiz2W/ePEa/ct6sUOSVRb05lW7kk802+UcdPkFZD8ob012dtE4KgWFIvDu+BYHz+cQ3X/+B+48P1Bq4ufucy/0HgvPMNePjgcNxZO0B7zsvL89477k5TtwdJ+py5rvHZx6eToroG9Vo8J7dFEkpXvvHFNSOw9kCHRHyckGc0MpCSgPTOJKisFxeKPmER72NQbM5HI4w7Dkcb3l+/siynPBhz83twM3Nje6YQ2BtmQDc3BxZl5WX7/6gMQ3BIa3z8viBVjPrutJFLePGaPZgZifmjKrivEolS9GV21b9Su0qS3S6DouGl/Wum40qcq00XtRdtZRMiIGaC9EHW6cFVcWtBec9pQjjpOlIZV24nJ5x/J5eGzfvviTtd7jguDx9oOWK96My10XbBWWrGJ2vFXrX/q23qmfBec39qLqH9iGYHkX3wM5vWN+PPHyIUHJBEHrPtJZxAtl5liXgHYxD4rD3vDy98P4P3xDGG3JpLGshDZ7zpQMaJ1XOCy9PT5Qyc3554fMvf8bxOLC7uWU4r2qi6PVJ242R25uJadQeMAaPo0MvOkUCm4lQGjxSG94XnDSGpC5W8+keetVKmSJqkqhTW8sL7G55+8nPOb888fxyomQhDnt2hyOtqRvT5fykLJ6g7XFeTrSQEHTgerj/7jqYOXGsQbg56jDUW7/axNaq2Rq1CT7oINHMD7k2wYy9jMDpwSXwntoy3nzde5MrwN+qmTn2hndRzdDRXq7WrJ6JBcY0KGNFRB+UyyMhOIb6jnF3q9qVy73CKPGG0tWISB9sh9Si68XecWHAidqKKJEhKXRTVkrL6pmTBjWiNH7hjz580jt5nY2Sk/UH2i5viIHHXkjBcXsc+f1vf8/p/oHD5yMfvv2aMCRcjFSBKSZ8iAx+xUnnPJ9odeXh4zd8vFflWVkb05gYkuO433E4TkhrxJAs4qqaDiPia9cVEpodK11hFsdoovWFvL5QayYGz27a6f5RLGfMa05cLYrqv/38V9y8WXi4/8D5dKFVFcsPZWU+P5vxZTAtKzTUJqOUSq0bpKKMvFUJbdwcJ9j0riZB1KTMSm3OBEQqywwS1W0AUQMWZ7KFItrrmSi7tmYaDWfTbqJ2HRl8CDTRyATvHTFZZCnKFNqiCpo0am+EvLAY68iFAR+TIRD+agCkDgSVZhpg8cmcIipOAjGoEF0MsvEhgKI4ig/2H4Za/uhud728qN0tr0qlLUWo98a6XHjIF779/a9Z5xfKR7h585ZeM08XdSKtJRMC/Jf/078hDBN/+Oprfv/7b3k5L+Qysxsif/WrO8b9gLSm1J40XWMFeivUDCklpRK1QMnq2OSo9PyC+D0+RGpZWU4POCk4hGEcGMajCo1EoxFq77QlE2Jh9TNL1rioTz77krefdJ4eHlnrzO74FumFdVnIRa/rXKo+9DFaL6b9Zu1CCpEUhMtSdSAKmrOry05vu3YDmEXNKFXgI+ZGIEiAMKqv8Voa61oZBs8wJGVjNyHFgeActRRiSuR1YYw7YoiAp+ZZD4dpbEF0knXQipps9kHsltF+1bsjlWS5bIATWi/a56GRrpq77K9aDSXBakiO88FwPR2fSmmUUn784YNOrxUxZoPzqisIG+sWxbAuLw+sjx9w0vnVP/uMD/f3fPPNR85zZr/f8Td/+1f8L/7n/5rD8R24yD//l5XT80ceHx9prXLYB9b5zMvLwuX8ojw1n0hJ/UJamZlbZhwmJSnUbLa565XlseYGMtPyjJTCMEAKAykNV1f2Vp0dVrV6y2UBz/WKnU9JM9R2ByYHtQVqPtB7oZZKaZngE701LrPGyA8WyldbZ7Fwl13wLDkT9zu2oOuOajZUbKN/Fr1TMQ8a2dqk05rQihDGQOyq9WimyfW2nZDetOrNZxqdGDzL5UyaBpwI0zBZD6ni8DQMiAu4oDSq3ru9d/JqeZxGA5Ff8z3cNliIel33Dp5K8IG8LiTx1t/pgdW2Jhj/sl6FXD/q8DkcKapg2TmzQRXL2XKCGHdsXc70Vvm7/9n/kv/N/+F/y//73/9b/uEffs00HfgXf/s/4bPPP7Xd4k5ljB6mz468+/QXCkaWmefHbxF5JESVF/bWaHmFkCirx/eVEIRh2pFXrwk6/cS8LHx8Vq+93SBIa0xO6erJvGWCVy+62jVERu0qXu0spFcdGHrlcvqoHsfDEReVSVOcZ0i2u21Nm2lgXdVw0gePFH1I9YrV/q51riozj0637lo1dGjaiKDihO4U4tDIBtXapuhYcwXRdO/uPK0bYygZAB4HoLNeZt1CeU8aovIAa2UV2B13eB+vIdubXgR0IeDSpNNprwoyO9TQ28UrZumcaH5eHGhl1UFImuF/CXD0ul7ZMj+JTIpTZo6i9RbX6UzsYpaquahDFGnHX/zNf8Xtm5/xb/7N/5p/9bd/h/gdPeyYL0+mr804i5xqZj/hQyQNt+wPC6UKaToieBUOne9pfqJGx3HyVvG0OpwuC108D88LT88zSy4M0XM7dm7fDEy7yQyxB1zQ6ColcwZwwjCYLEuUidvyjIQAEui18PzyB2IakTDhnQ0ILShFqVtORivkbAGD21Rru1znVBfcRanv3TzvYlQLM128qxK3SyOIPtB008v2jognBBusSiUm3UaE4JCuU21KUZnl0bNmdbv3XskBPYwM40QumfPzA/ubN3gJ9KZVyQ+RMIz44YgLO5w4vGjIo1TVfmADU+vFXldXxnWIBiwrxWqTVW7/QwT5KVALbJQfrX5KyXfAa9BHyZk0jnz2s1/y5a9+pWO6T/h0QFzU3qw1/YBrU4MZMVZuKbQmjPuJaXdDKQ0RrTCORnqz5zTPPD01DuOOdb1wOp359uOZ50vmMmfmJRv7JTLFxrtDYxonwnggWqyCTyOU1XpW1cEGWxv5TZ7oNZMMj1Yk15mXF4ZRD0ETbc6jd3QPvTu1n/VNMTgHzhyjwCCWrqJqwWJBLb7JowxlHSQ0g9ib/njbgOgErZBT9EIuWU1/vBplVmvytzVIGnSIatWiT11AljPShelwSy2ZPJ8ZpwMtz/QY6DXihhEXJj0KSrbBiWPDmF3f+H7tiueFMOJCoa6zqvBsKNT9f1QqPX+cXPBHoZa2UWMEthRxd93KCbTC8fYT/nf/p/8zn3z6KY4GaQcIdV2gzPpUi0c2m9racV1dLsW83WLaMU0Z70eqKFvluPuUu/UEOIbo2d8cefMmk/NCqSuncyV64eaYOI6Jw6RB0iEm80aeCGnShr7rkl56J4RoqjC1121dFWSIJgqJaVY3vCr6gVxOiB1A5zzea3OtS3Z9r0rZYh1Uz9y2SVeUMOow13nXKQ2C06oovduGR2yBYDy9pn54yg1slNoYh4BIUZgGcF51Fs6hVnbeUcoKrdEIlHmmCOymG0QqrVXioP0dzuHjAGFU+eNmCGAPRO+m072+Tn+d3EPaUUrWCu41M6SIQNJhTAvUTwKZNWjEGd9MfwlnajYzgRbVw077W90Viu4InVsVmOy652u14OKkT1HNqqbqHRccvTtcCqRxRwgTyTliTOwPA/5wpOPJOTOmRL7c8zf//Jd89u6O+4cTuRQ8avVVS8YRcVGn5S1Vcr28aDBer/TmrHnWLFkQmmiyZRchdGfu9wJEPTSuaAVoDXcVzahgxvtI7LqR8aGA2WVIF7phXd3MtDeakvUttAYpevCK/cXodUUnwroW1qwfttpW6PBHUsxPbXY14TMEzBBcw6RjVJDYeUfrap3hcQzDRKsrLQdaGrQ38wlxQbcWYjx4uvEA1au5ibYrG33eebUqKTmrb3bRocgHjw8B1w2X/CkDh34D9eTQjFzzvRNrmqUjVch5UTZszThUuaWPsOpHRbpOTK0gQZ0vO5VgebApDergFCfCsDO2hMILQ9wz7G65nF8o5wdcTaS3P8PHI7v9mZw1VPn0fE/AgR/09/MDw7BnXXWyjd6YH16xN0QNF4lePYeb/k6OqA+FjzatbRki6oCg8aCDrrScI4T4PZqRYoHOIAk9cFoBvQMJGqLjvW56WsdwR91mpKSDiYiokGkW0qBeKDHo+q2LRqTWou1Q603t2lrHh6QaYu/MG9kxDJGclRTivTl6dR1gvM0EpQm4ZoExNo2jyIAyqBWyka4Kjl6N8xf0kOeqQ4r3Cqw3Z3/vJ127gKlBTMxi1cJtzbo+CVdn0FbQR3HEB232tZTrm9xFNGo0BVxI6iCQJttIdMIwMk07cDBEzzDsmfZHSs6sy5lVCnH/OcE30nRgf1x5+PiBmi+kqKN+F0evnRhU/9BLttjTYpiWA6n6mlwzEqS7TqGCHtBtbYToYQjeEYKjFdUvhJiIyV9F1d6pbW+1nmt73Q6vbYb3RKebmm7vm66zhOgUQ01DVP+U7piXSmmd2NXDzwf0wRGNXK225nLOHCRaxwXdgGxX9eZjM04j66rQVPDqP9h7oTuxcEXDG7tKIbbz51uhtEZzAxGNDWutUUq1QUofvs0oaOs59bz4n7bb1StDr5TeFYvCKbXbI9a/6I9SiyxlMvg4oSEtAzGO1JytMbbQuC60ZWatjr5LhKEQYiCliXHaATBNA8N4oAvk9ULJBdIddze3OCnUekup3xCjIyU4Hvfk0rTvSno4qjFqnAt0yfTWTLro6b2+Lr/tcCjFSA9ClUUn1KofbIyR4NRqQpH7gTSMpKS5Hs6v+JIVfvAWB9WdbWJMsRYwH2tNc2xB/VxA3QlAb71l7axFh5HN/w70s2hZtwbStV2IthFROAcNYw4aXkM0Fk0MTKMnl1WnZR9Mi2PDI1AszGf0Vmp8UlZUE4RC7d1WjA7MitiHYDihupZ124S0JngvpJ/CahEAp0xhkQpOVAwkzqZDfYK9AdDexuxmbktpPNLKSqgrPWvWhvMbp00IURinZP4jENKOkCaCh3HcIzhKXnh5eeK0CG/ffsZuP1Drar2e5tje3N3SD0eWNbMuRbPFGhaD4HHFMiSwSm2m235beTnrTWxyDGEgNKEuF6suQqcp541Nj+oYxwMxacVcVgWywVFzUcDYtBWa0eEJSSdBb5YVvjrbHDmDboS8amW5fgCifaGIrsdqU12FN23FlrsGOsClFAgu4GO8Jo331ghxYgBwDfqCDwdC9DZ8+Su2GiPgA1UcTqK1gI3WC120B93Ce9jMgKzaeWtFsM/3p1U+FPnvtqN0poR3bvMl8mziYXXMtL2paP+B3+PSmTAe6f2iVvqiKx1xwWwdHMs8MwwTaZgYx5HgA+ICeb3w8PCeD/fP3N6+5XhzRysXaim0suCc43h8hwufs64LY1lZl4VSYb5c6L3g1kIrgWp+yq1rnQ4hsHmLOLTXcT7aUNKIQyKvNmR4U2mJmv/UrqHMMalNnD6ki62YlG3TW2epF1L0ylrxmEa2mbm2Hrrr4QuBZS0sudmfYdefXs16OCDEbQLVa0+6IhIhoK+pC6Uv2vzrPYNIp/WVEIM67YdATImU9mbh0V7JG1G3FBF9neLTtW1pFXLNSO8kD1KrZgpb3wtqncH33bN+/OEDTRPSF6tVoNubEvCYH4gJedSCQd+54KN+WCGR4kCPK9Ic4vWD9mkiLwv9cmK6ueXm7h273WBhcp7lcuLp6YGHhxfGcc+7t+/0SS9K51au3Z7xeKDmFRcmYlnxccWvmdoaY93T64yXszJTYqKsy5XCpC/EVkne06sSUdmwSBcQCg51jeodg3K8WcwOjLujPmx6mqALBSjLRcNeorV/XgcLTf3p+K6H5Upd8mpv0Uo3O1wL3+tQetMK1reeTq69WTBCg7bg+vA7i/TCbbT2Vymjj5rSGeNAGvcs3bPMZ3o3X8EQ7VHUzVOtTSUDIbHUVdV5XUNlvO+MPuJjoqyrvgcBtn6sbwyFH3347INxG3q/Tc9OG1e6Lu9Hs16VXrXxN3DSB7WCFad08pKVGezoeNc43HzC8e3nTIeJVgvioeUTDx/f8/T0xG5/5LMvfk4KsK7PGr9QVo0C2H2CjwNNnkhhgDDQiNTmGcZMLpUQF5xkhmmirloRtgqFNMSuDAmKn+lnpN7LVzva3q+QSa3dhg11tR+nHa2psh9ZkNRBMoi51dsB2dxTtRp5uoOAuj95r/+2N81Aa7aOs5mOUkUhGqsu8XsHWZr1g3h1yXffc43XGmrTtUEkIapeI016SzXRdEwRpM/Ms7q7qvGPvgfLpZLSoFsRD91Wbdj+eAgq5pdWkOCvakf+SPTfnwC1YKokU1rZwfO2LHfOcXu4YRpHRIp9qEJruvsTZRoS4kTojc7KtLtl2h+vpoyXywutrex2E61lXk4vSMv8/Jd/TYg75vlEC1Xz3upKyRk3vCWMR+iZNBz1OncXfGn4UIhpRwwz3glp2hM6ms/bbQCp2eAi6DR8bzinH2hvpkmtrzbAAIgJqrZoiDgQxx2uboE4mjyLU01D8FFHDVGDbIVGHIhXhggduldyqm191AXK3mP7540ZbJpE/IaROMB3/Vy2gVACPgab0C31O0Q9dM7hfFTv6DDSccQhcjjcaLr7urBcTqxN154uaqK7q5n18sS0v2MYJw0K7Lp0CIjhfpF1PatexTndN/8k3a49eVU60njd3aFPqfOO437P3d1bYho0RVyi4URbYJzgw46QHD0/UUrhfFlJl5UQjOs/7gj+wNM6M18WlTBON7z/8JHnxwfu7na8vTtQy0xen/F+ZBhuLBYg4MOIl04I2p/EkKhuIW6JjGlH64rs17LYBmJT3hd1dLImX1yk9qyLf5vjt35LfacFnEorfdAtivPqQawDhycXDWARGaznEmrRCDF6x+HxXTRERRQ37r1d3UBDMDq6U+/lGHQTAg7nt2R3scO0JQ/Z7WSfm48a+DyYKbfgNfohaE/nnMdJt4ODrjW7QAh2tTs6kXHYEz30PCM163bDBe2VpSF9pYm+JhF97SEO1N7o9SduONjYDbgrCRNR5DsSOOx37HaTNrXN6DgW83l1MnJqitNqZjk/kUsm5wMpJcZpZPRQ8sqam9GjhPnj7zm9PAKd25tfkdeFWs7kNbN/8yWlB6QVYgqv9HPrF73lwak5uOpxvXh6LdQ0GvLu7MoL1LwaWCvUutBkW505erXrsAkd9RJ0zhOHPXHQTLmQRmpeEBeRkBl2R8bpYBW06X4bp0B71Q2LmvNEXFf14npZdZVnxAe8160DWwVTQZXbPhOLFvUbXd0plV3BZTVYd27Le5vorRB8/CccP2kVXKcUxUNzXhEHMSpQX7vTVKQYSXFAWqXmRR8Qp7GyvRUlxI57TdWsjRCTPuA/3PL9CamT+rhe3wBwZvnQuTke+eLzT5nGhLRsa5iOd8kmrGoSvG57t4h4T0NoRQPy0rijd8fjw4nz5YV1mZnPL7RacSFyuLnFeTSEpcz4eKDJyDJfGMfIumqKY5NmQSmWDWEHUKexQnCB1AutqNIrxEjJq1aA4DWlp1Vj5err1M2MYVfbLRc8adwR06igL97CmDVFKE1Hxv2tJVjO9LKobUWF1oMufZyHrIOH8lqUdBCjXl+1a3RrQBkoYSOEgu2Vt4RjqF1Xc9hDJ3iN9uoBFzBvanXT2gaPzb6st0qtM5enGe+dQbEqC+22O0YSrRfioMNIbyvOrtbeN5JsxXf18SFFU8i5Vy/oH3P4jM5y5a8hKmourXB3c8Mvf/4LPvnkM0Q6y3JWanfYPrjNS7jQe0U6pDhq5Kio69F8OXG5zAjqEjUvK60LrRSC9QyKwHfznQNhoFxmzVfzts2IkWLZIOqar32dC9bjxGRGPhMyVVp7oVVH8InaLe/MCWD5bd7pCgndyVZbsKeoKY8p7XAuUXPR69Qleq3UdaZ2o2g1jXjwIRHCgnMDye+sumZ61ca+izGskzKPBQgSTfAUaF7F5d7WlLo3rrruDDp4bMOFc07/nmlOSlXaVW2FXdyx2Xc4vJljJsraePz4kcObz5hGTRRtZaYsCz5EjW3tju40PtUFJWd0H3EpXXPqvHcGX6nTamv9p/nzib1gPcB6z7emnsq7YYQOp9OZ6CutZF31OMWi6E1/uGxPqPL3ctE1T84r8+kB5wLj/g4XEiKqhlcoIeFCYtodVJBicUz4gcvlxG7acbnMeOfZy2g9mf7PBw1VxmlznUSFOiKdOO1JZg/W+0Jw6UoqEHGk6HXn6wRpZvwjqjYLXkU7uIALA7UKec36geBobaXmTG9aEdI06oGIiZgmBWV7QWadHqureuBbJATwvlmXGVTP4b0GTZolr4hDUym1p3ZO1LHe1nPBD7bNsVgC+/Otim+VsfeOr4VWzoThHRI8pUPyiWnUfXvrzQKfA3GcoOn2JqaR1pVk6rwOMZ6uHjPB08TR10xzGIviRx4+Z33PZgSon66ayJSy8s23f2Bezrx5c8MQFXEPwdlSvdFKee0fSmFeziznZ9ZlpjTdAIRoAK7ZYCjoq430OOxBvH3gevBenl8Q5ym1cnp54c27dyovtCrVujNWjYptotHDm/V5vXWGaU/vXpnFrdJEB4VXPzxlppTc6VXMzEexTGdM4m4fTF4zYdjRXSSOR9IIvVTWnOmt4kMgTW9IadJbIM80s7HwpVKvgdBOhzWH2dIpmVOHj6prQcMgdXkXbF+uXMkQ1OzRh0hvndLa1dMlbBrIa9WriKsEV4jT54yHO8Iw4uKg/WzsjNOO3ASXdrg0Gi7qrzQ4fb+12Wwdaq+kZAIjP+ACP41SpY2tyuC2xBu9gh1rXilVl/X7MRGPe1vDbU5FnmzBeLUVci6seWZZZ5b5RFnV2T6OB3yYKHml1kLNq/LuWgPJHI43+gJbZ1nVo+94/JTz6ZnWCuOwI68r3nfWotd7jN5MbgI+7YkS8L3RXKWVwrC/Q0iU1ujLBZ8ikWiyAKV6VWNuaACL9Vk+0sWrAKeuSqbwgbIWhmHPcDwqphYStc3k5QUnjpAiwXu1jeuVYdyD89R1YZFKk070lpjpozbrrV6HttbUtdVLx8l2Vevv5cQbuKzXtMonI2XN6Alw9j0VhVAH+aKVPQ5477m9udMq5j01X+g540QYhpEWkrqnSlSYCAfO3gcsGcnE47EKaRi158P9scL3x3E+1exugKXhTV29h0MILOvMOr9wOEzEtLP9XqA71ZzWVVO915wpazafE6GUlRAH7RG6kEvRxEQfbI9Y+eyLX3Fz85ZWTyCFUjLDcMPz0wOlLnz62ZdKmWqFlBylqHlN744mXTNDa4eQdCdLhZDwwTMeI6XO9LqCRLpEmqjaqjeVZm4tiwjX/s8L9JJp+UxdJ7wPJHMtDaYeA0cabwlxh9SZzajbeR0Khv2t3g5d8H5AEjgZ6DVbkrtH3EqXCqhPn3eOIMr0pmVDIhxOkrZHG/tZHNEnvM9WPXXf3FHzSmqhkyEEpOm/C2lH65oq2Zqnu+mq26jVBocu0JSQ6536yGApRNJF3Rqu0za23fhJu93tS3+It09CnJEnvVp9jckZb61dMSJttj1lvrDMK2vWylSsGuqcp9JDshoaKrk2MB0n/tlf/S1p3PHw+JHbgy580rDn4Zv31JrZHY7sdns+fviWm9sbchbT1+oj07vGARAGnVQ8GlnQK7020rBjf/uOsl6Q3nBuVC1FF0JTY57goRm25wTjs3XEFcr6osIbHwjDnpAmamvK5HAeDUIZkKjwj/gO9YKLA94llaPGwR7YwQT5ooCwD3Qv0C3LFqt8NEQivQZ9uHA4CQjVDtnW34H3A60Wm1otNFC6qcoKPaiqLbTKUj21YcSLvUWJda6g4SZK0Z5Af7Z0wjXlyJHs99YvW13+JJAZW8ngrM9QBRWmfUgxcbMf2e1GjdI0t81ir6Q2YVkWTqcXLsvCPF/I8wURiMNeV2O9I3lR4UsK3Ny+4ee/+heU0nn4+C0+Bpag67v58kJe7nFh5M27L3h8fGBZLtzc3VFq1jfWeo1mmwrnBmJSoyI36HWBqB54On5KrZXL83fQJuIwUdYXnD+D6/gi1NVIFM4kjlL1qmsrdX7Eh0QbXmjBE3ZHcq34LiRfCTHinfa8WqkS3r0eFB8CcZqUIFITLeg1GYJ6IbuuPZpzarXh3KAMEx9wTRV3iFG0jLSAV+MhMdmkMzyzU6E1pBeFS1w0qzmDkxDD5rb+WWxZsK1qg+GoZlZJM5x0Mx7SgbS3fl2txvATUifBKpxT9rH6K3/vUAbPNI0aDR+Uu5dzUfepVulmDL4sM5fTC+uarVIciWlUgLfr1bLbHzkcb7i5fcfz4wu5FlIaGNKOXColvyDi8emoYm7n+e7De/b7vdmMCaVqMEkPCirX1omDqtc0trPh46g6BA+1rKTdO45pR1tnpFxYL0mNhNIT62UB19Qzr2sL4i0zhJ5BBvr6RA2RYqh/GPbUtlIcOmlHXcM1POL3SGiIKEXNuUQYg17JacSVZPtkjZsIJHorxDToCg7NO44+KB+wVtu+FOtLwRnG5oJy9wTUcaA26AXXK4gSgz1Zq2xDFwfS2fhKgliule6Vu/6hbviUKWFInA4zvXcajc3gRYfVn5BABJtbeb/y9nQibbQq9KgxTi6MBjU0Ti8P/O7X/z3n50ddzQyJXITSA4QdLgyENFhT2hn9yOFww2D8vaeXRaGNtEMIPL/M1HrheEiEkIjDDdP+DaeX85XuXmol56wM2+BZS2MXVW1VaiYEdd5c1wVBBekhRv1waqXhcXEixBFxgVZm0xefcOFick0VOokoguCdBj5Do5UT+YKyi/OqFc4HkkFN0QWac/p2u8GuwaZX8Har4RA/0FtF6qIeewB+0V1yVPGV7w4JyVg32djjChP5qCae2mIEehOcSR5ayziqPjzeXBO6eipvmJzGm+lA2bcN1fe2Wg5eobdN17OB1nZWt7Wz9ow/kVLlEFuPKbujtoLmunq8iwymjW3SWZeZh49/4MMf/oH7b79iiCM3n/81cbpD/JE0jYDSj3yI7KaRcRyoDe4fXmxpn4ghcZkvlgquO8xWPa1VdvsDtXUeHu7J66ofmnTzKFHMblky4aBbBy+6F3Xea6xv7ci2ugojPgmhK+bXeicOewOmR/MwGRW62PonLUxWYfQqdk7ofUVKx0nFOf17utFx1DDSnelwJaludjuECI2Oc1GJuijVX5y5RfkBoqfHoBW3zpp/jMf5AcpCs8/G2cDjnKoBq9HBNtcrJ0rJ8g4clS6d0p0ZPBYc3cyHxPb6wSritmLdHA0CV7NvBRO1zzVYrjbFH6X/xIFDrxpnpkGLNefqJrXfDUy7PThHzZnL/MLT4wfm0xMtnym9k9eCGxS3K0WX9TEFAp7zJfP0dH4VtATtQy7trFekc1TLfIPK7d0tzkcePn7g5eEjcQiEmFjXldP5hXGYTIxeWMtI6OCbXTMVfBhJI+abrMwNHwZCVOG3tIq0gBenjGrnSWmiVTVMqr1pD9fba2VAKfBq7i24uijCQdTJsTakz8r/6A232WOIw7mkx0/EqqFpiaNhlpJ0deec7WsLaQDfVsRFBYG9t8NfgIR4hxOVFsjmfN87vSekKjFVKVYJn9R32rOxjq3cOmx1qD0cola7inSnK+S7VT3nbDWHTsbbTv8nGQWBw5u1a20aOOINLkgxcHs8Mo776x6vrCvL/EJZzorTpXjFCWOManRTVUmVfbF+EhuohFIKghluG0tXjXYipYKQuJyfmS/POvEe31Bbo7VscVOBtjkoAIed7iWDVawQEy5OuNTwrSqvMI4EgSYL3ie6z7YdcCQfEO8JTbQKlpmuUhozT9LryXvbW5tet0uhlQvFTVCEzropNZR9EqL+s/cmi9zUsaq7rQJiIifM5y/3hCOa+36nu0hwUXsAJ7SSadJM0qlgdTDygoLdzQYCJdpG7yEcKCSqTc2KnrxOx7rh0l+j4Qiih+x1+H1VyXURbcW6iesTtkD40YcPWw7r//SJURZvipHdfkdMgz7VrbFeXricnqhlRQ0cnU5f1/2sGopvU1Rw3v5MQVMd25sSF3HkvFCbWDCe4/npiVYXdEfp2R9uuZzPOAd5rTi30vOK9EaRRomTJgCJNt3qF6O9YxU1uuytIbYqQjoxJAVnW8GlSBS1uvUxEfKgyT2oWZK15QZnNMQNbO8WrSGcwTdqMxlpVOOjTeSt5kC24XCa6lircvIcDi8FYiCmaBYViRQFaUU3F8EwPnMSoGajS2nEQRrUGm5pKm0UjEhBs3YqkC1HA1F/QWea7CuP0AYQW/yooN45TR/HBguDd2pXsvA0BNMo/6SBYwMLhY1uroBrZ7ebOOwOOmK3zpoXHh/fc3l6UMsGMUMd76FroqQznEgF0F3zNERXM5jzpWZqqCNqMRhgDBpJcD6dbFfZmXZ7auu8PD1xOB6Q3ilroayzQkxBPUTe3k7UkhFnyUdJJ7TWHKXbGyTK9St5pXS1o+g22oXpgCtFNwN+gjBTy4oTFU0Jgu+6fmy9UlSmYxUigFRlF9NBnfTovakHS9/iBbop5pQu79AluSPRi+6dfVShTmuJw3jH4Bf9AFNCRA+T/14Qnw+BkHTKd3khBKA6vZaxdamf9LDb9Sx2yDa4RYubM9iuGRFWz0XoggvJRGPgRUmP0W+UKpvCf/zhc2ZeY06g1p+MMfD2bkcakk6UZeX8cs/LwwfyfLa10KaA6Xadig0H1oDR1eF+M1aUZmr3zjKf9ZoVTxwTrVVOpxdL6NH+ZLh7y+X5BWmVdc3kUpB11uunab8Y88B+v2f0BRcSXRzr+cKyLMbEuTBNk4LlcWAcI+fTCx2P9yOdQvQDPQYg48UTksIMNFPzdaG5zXSygAiFCSTYSnKDJDq+V143o8kgLFQ/4jWrlmZXsP3dLkp0dU1F3dOgyjchofp73eq45Cg2lXaDmEQ8ziveVjv00HCtKBkgOCqTpYSDx9Od7e69FomNTKuEWBsejL1x3ffb4XReSRne74iDru1+EqsFsGa1XdEf7zx3N3ve3NxojHvXD/FyemCdT6Zn2IyEdDXXc8F5u6Jap5eZ0Iuq4kQldzFFWhdKvmhFSiMx6r51Xp4U4gmqvPr005/Ra+fp+YE0jvhaqDkjUlnXmeXlYp50Z3CBL3/+Kb3MpLS3Cn2vw4/TLUHwjjZExphIw8A8r7iOJnY7j0c9XYgOardJVt9cFzpYn+p8JHYFoleJJkGzOIRqebjOQRe871YVvU2POlg0qt3L1syjFrkbeXQpunXZpYFjykY80KlUWlA8z0cjGChwTIhIyfr4m/bYeU/z0Toqq8yyZfliXEYdLpVMoKhDsF4PZzqTLvYZKqVqHHfEYdQHp/6kgUOfBF2paUscouPuqMIZXKJVzYeYL5erMbUTDQv0TpfpEiabiEQJjOusWJY4XEyEuKe3zrqulNbxaSI5zYbIy9mSvit18YS4AyaEmVxmGsKyzJSscU4tF9Yys+YL3kVarRz2I/vDyMtLBgfnl0c+3j+ymw6ASgbDGllTYUzKfi6lUNoA1tOHFKlFw1J6zXYpVcTyh6V1dfX0gq8F7yKlTbaCqtCrVuQ42EHa7DQ2UbiVIAeviY1i17dYUlGnNCFG7bNudrZLbRWx31ERX5VpOteNjxl0G4KzB17JpS7siA3bXVlkqV27coVW5HrbGCCp5FjXAMUJdd+vumQXEn7zanY/YeDYhDPObR0A7KeBm9sjLiZa66ylsCxncl51fA+JLid7oCq0WaGYTZFIR5ynEqEVBrdSF2yxbfFJTTi9PJtMUjclrVfEeeKw8O0ffq3TcW7Uy6P1gcoGvpxOrMsMRqMKl8huv+eXf/lLpBdK82r4OJ+YTyeOxwNzzbrnDIHFq/F4SpFMw3llLItTyaQTqN7RalEgtTUNX94UaKI6i0Ey4iK5RZuP9FrdiKAOE2aheJgyjsXUgfqga+rnBgdgckVBeqA0XXnF0OnGJ3Su6ZCCUqukNvVKtiHEuYiYsWQIajjuWrv2gAo2b04UyivsvWNxNtf9rvSKa1X35i5tlE0jt+p/o/zCn5jDYc8EiMaff/bujuPNG3DKaLmcT8ynZ8WC0qAnvuteE7oZOopZKAQDVh0bDSjXQl9PNDydQJdVKU1lVeqQXfu1qX74ePOG8+mJy+mF1tv225GSVrdWM60W1SNIZxgm3r//hv3NLbtdZLkUvR5TZJ5PrLkwn1/YHW7Ux6SYXaxz7I5HnEtICrZW0+smOGWz6C5Vd6xihFScVhZcI/pVey10yOktE1wkhOH6geletWnl5Hu42YZnbNsPO4Ai5s3S9UB5r9qNQKC19Wra6L2HpBR99X0DCMZ5rAY8qwOCOG0NuhmEe1PTiYHNm4mluqzqdkb11xtUpgGoMURjYyugfq3mP+bwCagvi/Ubn7y74bPPPmEcD1xWTWcsyxNQ2e1vqHXl5ETtJoYJ4qgq/FoRguFhzhbtep337uyNhNaV06dWeR2cNrw6jAUNtAuBl9MjeV1M/6tVpeSVafrUREMR34qC4SHQW+b911/z81/+jFYWGtEcElbmy4tGhK4rS8tIXVV/LHC5XOji2B8OpBQUY7Ntzybo8T4hIVHqSi8VqWpn0bqG76XQKE7FTL0VrVyyLd+1pmzA7PddnfTsKeThNjklpsGwuPqOVmtfGw3FQnxI9K7mSB51snBG31I9rWGqrdFrVwhK2lWPrdieEkm8Tfxc12T+OkyKn64QmkPZOM6r1Zq37cfm3v+jDp8WUH36xinx7s07doc3lG4G3H4kjrfEEljbTJEL2b+l745UPGsT2+tqWTcRG861K1ES0QMuXZVrrSu0LZtIRnS957wQh5FlWSh5VpauaOOsPVdhvpzB+hvp+oS32ukXjQgYp4lhcNSu1PdhnFiXhZqLfi8purcW0YoHPD88Ukrj5u5IceD36sqw6XHFDHPGuCMEDZRe1wI+4UQTGxWcgk1S6qx30i3BtjPdXP5f250rmCt6gHDmExNMwN6DUds8wQvKflCqf4xqnC5dhVU+BlqxVIG4x/kd3RJ5t6t2++rSCWjRCTZ1Y1ieeua/+vk5fQohDHQJ6vHnwtVh4UcfPoDW9JGIVcgVnk6Z82Xh+flMl85lnjk9P3OZV86XyiJvaKGaPWum0w33ETZmjE5w1t1isZ44cBqaopAK11Hdi745vVYVjLvNFUs/QWVodObLM9PuRhfsHn2zPbTaWeeZh4/vGafJ/FWElEYulxd6q5RVQCqIrt1wmd4duJmcF7yHYRwAMaGNwxMN5BW9/rzucruDZdX08a2idBPV4CrBqXn267L++/210ZoMXlMSkaICGjertHWAtWheXYyVLpZ27pz13lEPn3RbiTpj0oCnagXeCATevXI1zRKuOg2LDh7ouku+YrQ+4QR1nAU2K2ScguMbNvzDR+9PGDgWo6Yva6f8+hvGr++Zl5V5VUvUNWvDLaJwwoZrOe8JKH/N2cK5tW3k2PaiCnXEmChV+0RnCjI6EDZrNus5uuoytCcTNgH39oYJsGbN2lCCQFB2c9S10Lou5JxptRHHQZ0+eyfgLG9CKVleumpQBUqecd5zfnnGh3e0ciaalFETk0ZV5zlBzL/aBXO1alCq2snhOqUK6vberUJrid52olwrkPaXHT19SpWHzQGi1kYFLkvF+T0pjXTxxLAB+7aJsr21Gi0bzCO6D8dFPM4yZ+T6WeiP0YHHm5XctXeTZreNVWj3KlJ3bmN9bn9fflrl6x2WRScgoXNeX9icqvymJjNPXiwEestE61e2g1GXttFdbx57OVahun4ADkdwEefBDRb0YhiSKvj9deLT20iHEDFHBfWDWRimHWvOCvw65R026eRaoKtOY1jHqyjH4Szn1rxoRJRJLCBdTcuXixrsDEOkrKv1mcJ+SjYtJgVnXTMwXd+/Ul8ri3OOTlU9M7xuGlAYRQxe2TBVcBo447c+0wwlNZaIda10HCmNLPOq76jlD+M9aXQMpdmVreZN0s05AR0sBhQVuG6ytlsJZ1uprT0yfx2jyfvtdhKIg7fXztacstGwfvTh266U3rtFIJgf8HXyUoRIx7uNXoTZpXEFJkXQKHksWdHrdMgG4djh3LSn3ql8USvTpk/wViWqPa2OKja8mF5346PNlwu73Z7l8mKGljqJbTZv0hpLmxnHoIKZvrUBpvoPlqXGFU+llcw6P5PiO86Xmf1xT866PtoPQm2rhifba9gcQp3314QhRKs3tRCmhDPBj1hbIfKKqza0gjkjXzirhALm7xcoTSgtEFxFvEk0Y7r+PSSyhEW1JX1bq231javuuZtqUIkjDhUiOcSSNHXnruGPOsZ8rzXwOuQ4F64XrbNz09pPAJmdc7joCQ1tjLeT7eyNtDLc7Rdhu0qt6Ino0PAqodPpttZtksVOqRIzHaoV7fIKNWimmNY5RQzUTqJbz6em13ZtOaUttaa5aCkNrHm1VZDXj3o7uK0hTXfPm20tGLLfdFkfg1YQ7+L1Cl/XC4PbkddM78LpNBNvJzyV1md6VUnmtY74LVPDrqGufXTvwRb1BvGKtfXeHB6wwyCbwxX2PqH8RnRfvqyVMTozKTeDTu81S818YTZbtW7DjmKwjSAV6Zv3AdcHQKQhW2SD/sfXybaJuaCBTsUhGI+yX6u7gE3XP1z5fhCCds4YOx77hayyhU3P6+0AmF+d9+o+ul13TnWum4i7tfb6CwnXnkeRdOuineJ/zidiHNTsxw6Mtwqo1cLhLIhLdQ5aVZ39Drlk5cGZjuGKkdrPc4gNL9FsItz3JKLmjee0Cjive9ouoq4KDZY5G+Wr8/QyI6L+fq1WSq2UUmi1X28HuVay8PpetG5uDq8fnF579loQw/TMB0fUVk4fXI2YejrN9L65w3qTNwwEH/Fu86wZtOLirWes5h29Er2ynbtsrHWhi9qGqHmRir0EnYL143t1SsWp7dp1GrbXtp2VH/r6owNHr6bmR4UqCjHYne709OsvtvUjiqpug4J2LpXaBCwaStmysK1rlFLlv3cA5Epm0Kbb47ra7W+F3LB2e7Od+tRtDaUB672JTqSuX/ttdVwwtjBq+rglOWqBsSoStNd0IdLllTbUW2e+zDr5SgGBeW4EhP3OMjKa4DzGSNm+5waHm4VIqwQ/2HvC6wMoGsSH2wYN63fFQVACgO5+tZKv80yTvTpm2XvlQ7K8PFMSWovkrroL/Zxa9QadvAr2vduqrrtectt1DdrH1tYIJuaPMRknEXMls4fbeIg/+vDZ2IoyULCyL4S+9X16t5fWrxVGL15t4Df8qF2RcqswlnuL62hSIVYVTBcgZleBVa4m5pzurb/ErjWH0s43PNAqLkLYHFTtd1KMiuvv6YO/9k8adtLw+OvvEOy6xXSvzvaUOuHPes4lsom6n8/q1D8m8NKQCjE4ct1+X4M10A+ptYKPG+Sy6UP69bXrnSzXJl5//qvzk0OHu1oruXSmFNXRAHXST8OgOmRREbyP6oylAakZEU9rGHF1CyQ03rrhdFcjcnvzxHBGKRkXVWSOdCOQ+mtJuJaGn+bVYrSevv2C9rJlyyHSHioY4o8RELq8NpreeXzQR0hF0JswxX5GdzYpqebCoVaubRsmxGnFawYFbO3PRvlxGpwihtK7bdix87gdMOcVxgnWG3V7cMR6VVW0bfeEU7sztwVEW+/q0FctUHLR1+ag4/DieHxeOewHplFNemrztu0QRBQnw6tZN9cPHNtwvA5tii5sD4r9Rq4ZZGOrMvu7tVRKaeynQV2wAOUdd6Rl/b5XtNogEZcMhdD+U28vfy0OgA0eG55q9h0mRpJW0RktoX18/95Ho/25XKfnH3n4jP2jbx7bg2iVZFvoeP3wtydAum4LgvN0v113Hh89rerdZwJ+PVCGEV1BVpus9AUrztcMR/ynsKV+H62ugRgc3W9Pql4hqvhqeEv4ceLwtv7RrAzMCk+d6rHJXJ98hV2C39Rccj2gDsXahEyKSlnfuojHl5kb2ZGGQF/q9qtSRW3PHEExwVYNNMZ+ZzuA1r68vieOLUjaOa3MGzqgwYvwcl65uzkQvG4zYoiqpw3BDJi2HFw9ZB5lRRMDekGYUMhuM2+Wt8rUUaKEsyJ81XVQGIbJumN16vemaNOPsnNF2H/M4cNK7+ae3kX9QnQ4aPYm+GvZNlk5+K43R99wLJt8tl+ObYra4BrYdKCtV33Rxojw5pPSRavsNr5rgy7XJThhUKysd1xXRkWIQcXXmOm2eJUqIrYN0IdJnCEcYHYf1kDbAxKiR0ShE+3CvG04dGuhwi1TnHXh5TSz36kVSGuvV9nWlCssVHEtawauNfH9Ohht5kivt4/+Pf89v21/nZLneaW0SnTqBp/SoLkm7HD+NW2zYu+fg0RnGhNL2xKFTOhon09vGr/qNhAf2Mzh2zZYVDW91BvotShsQPm2HftRh29jWARve9Rug8am4xXMOgGDU0ww7LwBeybLk1eMUDUheoXqP5uIxkq19M30ZqsAZktmwhTQA6su7NFKvQWzXCvFK7VHHd+5vkFaOcD1jQJlBErnFcTW9vo6BMC2IP9+3TVtQ7eOHFWvtdqu339ezbVJxDwGzVh8+y7STIuRwL22AQ7Bx3hFEq7pQA49+AZ5ba8bEXJeWXNlPEzGKNKc4VKaknutdzbJN/QV30ec89RWDcPDrk53/R2dMce92z4b3ZbYO0SpFo8qZkhktUZ77GsJ/HGHT7YDiLPJqxpIvOVwbZXVXbn/WnH79fD6oBuObiVcJ8bt70Ur8RhAjA44zl0HkQ3v2waBa/KhHRPvNsW8rsdAzPZVD1IwY5tuP9QZiWE7xFu1cwLNJm7se2670q13xA5lNIpSpyl4a2+0PUpaqbtOlMF62b6RSb1uGpoLSNeUza2PE+vPNn2wToyi3skmS2iCvU6NZXAuknO9Tu2912tQX61Fjc+9s7dVCK5ZJ9c0KNA5gtjB27BXgc2NbFtd9lb1xnD+um9W6lsh+FH11V7bmm7xqD/JmVTfaD1ojVfMyhkWJUb3VlB+GxD0TXJosDFdezCcI1kPtrTXJ2SDGLYpVSfg71OM3HWV4xCCQTNOHJqWiPUwxmPDIc7hXSB5XftssVcx6uquN7WkxXutoF7Vd4phmt3E9yuPDTZ++3P0Qe8GnndbD6pRjlYF7xy9Nnx67TPU0Qmd2n3UPe/2EBjhVL+2wUMfEh3UQMRMLzfNcIoqHe2dWgsbQukQas7kdaZVlZQ6Ey5J1+tV3RUWvOx0Jy0dae36Hbbfoxv9q/fvEVvtX7sO+XIixIHkBxtBuw0b13v4xx0+sIq0Xd3b9chWCgxD4vuRAe71v932rjaoqFSxWzqkreEMh2p9E4frSK8OTf1730//pcdZGLHiX83gCxW8RAjKu9uojLUpm3cb+oJpcTc1fYg2tzvrX79HH3IiONfVAmJ76jcEX7AKJddDudHhe2/XgyvVdBqI7UUNLvGbaaUNF7zayG4xYrjXaVe7CH99MHFBNb3WPK/L+vqQ4FXiKaKB1zEr9csFir0uqf1qIukcWyNqt522SFdTIOu7xYafrSXqopWvlpVh2IzWsVbhh1drf/zwXa8AsatHKeYiOq1tT7kTwK7J7Y17/Tt6nTjZwo8tO8wFBH1q+7YDtFWSDhW20N4wpK3K6p1gDBCBptefQi6KPXmsUbYnPZgNRW+VtTebOK2xFgNDTUwj5rYpTggGWXjRuC4kIt1b0HK/albkCuRqQHMIfntWENtH+esHqpeeujNoVKnGVnG9SXDe/FS0FwzByBYmjdyYPBvFyXlY1myu/Ppe+SAMKVJTIpk/ISLGuG44VFeyYVKyCc67GZXb+3A9bDbcIPYg6KlE/avrdRDUX9/Whf6Hq98fZzKL/RA6wdkZE7lOn+pgpFWji1PGiVP2MaJvvthyXx9YC6mzDUgpahgegzob6GpYA6C3Rlh3ozq6y/biRYyOrx8oYlQfZxVpU905jeXqVb2enQ80W/R7E7n0vkEe+jMRYynb696Gly68BqBce0IDn5v9bn5j4NgHsaH/iO1t5fp3QCdG7wIqsteqo0ZPxkz22670Olqx0eo3KpR0rdQphCudyaPuUiEG8GK3U0VEfRBVZluu1XaDSK4kWf2UCITrWVA2kT78+hgoBlzySsorwaJr43Uo+eGvP8EcUv7pVGfXHQaT9CsoaSp71+2Xtg/V/ny7U921j+q6X7QPszvMO3ibCOV6gMQOytbUd/f60tz1KrTr6NoR6L3uvFf7jI5iXhh01F9bBXUIfRXFb/+vNhLx+j2d04O/KSBVkeeuB+wagPj6zmnFuG4AsOX/K5OlS6X1gg/+n8RN2CDLtpTTQqBtiL60Dd4IuCCMydIxa8WLqCquq42a2E3SjXQRo/H77PU7xB5MYXM/cOb5ogfVOkG71Vo3tCE4+zZNU96DR43gncWe/QT1GrIV3H59KrRKezuMWoa2NdqWImnrvdfqaH2S2DWOHcbe2nUi1IplYHLf2LeCeAxo7lbS/ev/u21ksan32rPon/euP0OHAYuockZNko2ECsEn/fnNvI5RfO+Kp4m6XSmtTE/ethl5faPcldKu1cpZo25HR8BdwzwEJYwatscG/brrtxQ7gNjEqdR2bDOkv+NWgR2e1jo1a/6uVih1UGhltfQj/ecukEsmxkj0nWCrPW1TrH/GsUkonfteHy8bQrD1o/o+61CXEVMGqjmrkhx+/OHjFdpQGpAxUDbW6zYwuO1KsIlOXsfsfh0kNqzI6oFdgV5M9ebU5kFxLAuOc6I9kwHZm3b0GsNl15cCzv46jQXn2AxrsAfAG2OlmQB686AReYUYvBO70jrdPtAQ9GA7Y3a0rpECYVP12JW8YV/bHlSvpw2QBpV2Wr8pjc2fGWtjtn5uq7zb94FrZ31ttrbea3u/S1XtsvRKHCY21WBeZ3pbkV5pdaHmlZIrLmrPPvjMEDzzUu33NGjn+1eme2Uc6frTjIGcaF6dN+WbQWXqH23MnJ90+LYDbzCB25rOraG3f6eYkLc31yqUtdbN+j2dlDcsT4+MGktbvodxz7YX3Hk9gDFuLvdW6Qyc3hpij+jw57Snkr7JHP314diqtrO2QYOeHQonKIMmBE1u7G2j7m/vg06X27NmL9BInduBMS9m7Bq/bik2aEQn3W0wYQPlTb2mb6tYv2uPuPEYN1C591eWs/ZgtlVBXR8UktLGP+eZdX6m5gVa1fiJnC3ZUpkzgULynpmgqOl28Lc7Xz98royY6xCC9ZbbZ6afsTqRRpr8saTdP+XwfQ9O0NF6G442baYOIQpGmrOlVcdgw4Bz/p/AMD5s36PrB1fVGs17b26hm6xQP6RgYXrertnaVHexueKL02BCv+1MpbPZl10rLFw5h5t8kK0/dNtFo4dVnEesIhPaddrbqvvrtci16m39mNscnLbvtZFir9VVXdv1ii/XQ9VaRdIG5Xjwct2nI5gqZmtj7BdwWyGAjQzQWoUUVeecF1rRUJ2aZ8p8UVaLbJBOp5WMUI12pe3JlVRr176zAcls+nCuEboOcc6SxZ1T3TSoFbF+lq/v2Y86fLq/ez312xW64Tn63ss1/M3x6pSEswpofeD2JulUJfb3nS3/t4Gmsc1Zjm2hHkxsvr0llpVm2Jzy0ALSVDUGWy9k246tXd96FTtBquT3xCEp89ia+W1w0XRwt00NXNuMrQfa9p1sGJ9+a30sLdF8GwrsAXTSzVtFK4900QoiRi2TjUViPZVsV56/vi8ir79jl06waplzVQhIoOaFdX6hrDNlzayXZ3P7F1ottOCordBaRmLBbU6j8vp6N82N0gcVHO/i8K4iIdhmxl2HO+cTgjfZg9jw+cOHz31fqPz/9S+d+wD85ge/w5+//vz1w19/ISKf/f/6Fz94+P789eev/zG//pS+8M9ff/76H+Xrz4fvz1//2b7+fPj+/PWf7evPh+/PX//Zvv58+P789Z/t6/8DlNKbp7I5yX8AAAAASUVORK5CYII=", + "text/plain": [ + "<Figure size 432x288 with 1 Axes>" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "import json\n", "from PIL import Image\n", @@ -23968,10 +24037,23 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 20, "id": "be2d31f5", "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "<Figure size 432x288 with 1 Axes>" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], "source": [ "import os\n", "\n", @@ -24060,195 +24142,668 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 21, "id": "572d824c", "metadata": {}, - "outputs": [], - "source": [ - "import copy\n", - "import os\n", - "import time\n", - "\n", - "import matplotlib.pyplot as plt\n", - "import numpy as np\n", - "import torch\n", - "import torch.nn as nn\n", - "import torch.optim as optim\n", - "import torchvision\n", - "from torch.optim import lr_scheduler\n", - "from torchvision import datasets, transforms\n", - "\n", - "# Data augmentation and normalization for training\n", - "# Just normalization for validation\n", - "data_transforms = {\n", - " \"train\": transforms.Compose(\n", - " [\n", - " transforms.RandomResizedCrop(\n", - " 224\n", - " ), # ImageNet models were trained on 224x224 images\n", - " transforms.RandomHorizontalFlip(), # flip horizontally 50% of the time - increases train set variability\n", - " transforms.ToTensor(), # convert it to a PyTorch tensor\n", - " transforms.Normalize(\n", - " [0.485, 0.456, 0.406], [0.229, 0.224, 0.225]\n", - " ), # ImageNet models expect this norm\n", - " ]\n", - " ),\n", - " \"val\": transforms.Compose(\n", - " [\n", - " transforms.Resize(256),\n", - " transforms.CenterCrop(224),\n", - " transforms.ToTensor(),\n", - " transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225]),\n", - " ]\n", - " ),\n", - "}\n", - "\n", - "data_dir = \"hymenoptera_data\"\n", - "# Create train and validation datasets and loaders\n", - "image_datasets = {\n", - " x: datasets.ImageFolder(os.path.join(data_dir, x), data_transforms[x])\n", - " for x in [\"train\", \"val\"]\n", - "}\n", - "dataloaders = {\n", - " x: torch.utils.data.DataLoader(\n", - " image_datasets[x], batch_size=4, shuffle=True, num_workers=4\n", - " )\n", - " for x in [\"train\", \"val\"]\n", - "}\n", - "dataset_sizes = {x: len(image_datasets[x]) for x in [\"train\", \"val\"]}\n", - "class_names = image_datasets[\"train\"].classes\n", - "device = torch.device(\"cuda:0\" if torch.cuda.is_available() else \"cpu\")\n", - "\n", - "# Helper function for displaying images\n", - "def imshow(inp, title=None):\n", - " \"\"\"Imshow for Tensor.\"\"\"\n", - " inp = inp.numpy().transpose((1, 2, 0))\n", - " mean = np.array([0.485, 0.456, 0.406])\n", - " std = np.array([0.229, 0.224, 0.225])\n", - "\n", - " # Un-normalize the images\n", - " inp = std * inp + mean\n", - " # Clip just in case\n", - " inp = np.clip(inp, 0, 1)\n", - " plt.imshow(inp)\n", - " if title is not None:\n", - " plt.title(title)\n", - " plt.pause(0.001) # pause a bit so that plots are updated\n", - " plt.show()\n", - "\n", - "\n", - "# Get a batch of training data\n", - "# inputs, classes = next(iter(dataloaders['train']))\n", - "\n", - "# Make a grid from batch\n", - "# out = torchvision.utils.make_grid(inputs)\n", - "\n", - "# imshow(out, title=[class_names[x] for x in classes])\n", - "# training\n", - "\n", - "\n", - "def train_model(model, criterion, optimizer, scheduler, num_epochs=25):\n", - " since = time.time()\n", - "\n", - " best_model_wts = copy.deepcopy(model.state_dict())\n", - " best_acc = 0.0\n", - "\n", - " epoch_time = [] # we'll keep track of the time needed for each epoch\n", - "\n", - " for epoch in range(num_epochs):\n", - " epoch_start = time.time()\n", - " print(\"Epoch {}/{}\".format(epoch + 1, num_epochs))\n", - " print(\"-\" * 10)\n", - "\n", - " # Each epoch has a training and validation phase\n", - " for phase in [\"train\", \"val\"]:\n", - " if phase == \"train\":\n", - " scheduler.step()\n", - " model.train() # Set model to training mode\n", - " else:\n", - " model.eval() # Set model to evaluate mode\n", - "\n", - " running_loss = 0.0\n", - " running_corrects = 0\n", - "\n", - " # Iterate over data.\n", - " for inputs, labels in dataloaders[phase]:\n", - " inputs = inputs.to(device)\n", - " labels = labels.to(device)\n", - "\n", - " # zero the parameter gradients\n", - " optimizer.zero_grad()\n", - "\n", - " # Forward\n", - " # Track history if only in training phase\n", - " with torch.set_grad_enabled(phase == \"train\"):\n", - " outputs = model(inputs)\n", - " _, preds = torch.max(outputs, 1)\n", - " loss = criterion(outputs, labels)\n", - "\n", - " # backward + optimize only if in training phase\n", - " if phase == \"train\":\n", - " loss.backward()\n", - " optimizer.step()\n", - "\n", - " # Statistics\n", - " running_loss += loss.item() * inputs.size(0)\n", - " running_corrects += torch.sum(preds == labels.data)\n", - "\n", - " epoch_loss = running_loss / dataset_sizes[phase]\n", - " epoch_acc = running_corrects.double() / dataset_sizes[phase]\n", - "\n", - " print(\"{} Loss: {:.4f} Acc: {:.4f}\".format(phase, epoch_loss, epoch_acc))\n", - "\n", - " # Deep copy the model\n", - " if phase == \"val\" and epoch_acc > best_acc:\n", - " best_acc = epoch_acc\n", - " best_model_wts = copy.deepcopy(model.state_dict())\n", - "\n", - " # Add the epoch time\n", - " t_epoch = time.time() - epoch_start\n", - " epoch_time.append(t_epoch)\n", - " print()\n", - "\n", - " time_elapsed = time.time() - since\n", - " print(\n", - " \"Training complete in {:.0f}m {:.0f}s\".format(\n", - " time_elapsed // 60, time_elapsed % 60\n", - " )\n", - " )\n", - " print(\"Best val Acc: {:4f}\".format(best_acc))\n", - "\n", - " # Load best model weights\n", - " model.load_state_dict(best_model_wts)\n", - " return model, epoch_time\n", - "\n", - "\n", - "# Download a pre-trained ResNet18 model and freeze its weights\n", - "model = torchvision.models.resnet18(pretrained=True)\n", - "for param in model.parameters():\n", - " param.requires_grad = False\n", - "\n", - "# Replace the final fully connected layer\n", - "# Parameters of newly constructed modules have requires_grad=True by default\n", - "num_ftrs = model.fc.in_features\n", - "model.fc = nn.Linear(num_ftrs, 2)\n", - "# Send the model to the GPU\n", - "model = model.to(device)\n", - "# Set the loss function\n", - "criterion = nn.CrossEntropyLoss()\n", - "\n", - "# Observe that only the parameters of the final layer are being optimized\n", - "optimizer_conv = optim.SGD(model.fc.parameters(), lr=0.001, momentum=0.9)\n", - "exp_lr_scheduler = lr_scheduler.StepLR(optimizer_conv, step_size=7, gamma=0.1)\n", - "model, epoch_time = train_model(\n", - " model, criterion, optimizer_conv, exp_lr_scheduler, num_epochs=10\n", - ")\n" - ] - }, - { - "cell_type": "markdown", - "id": "bbd48800", - "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/franck/Library/Python/3.8/lib/python/site-packages/torchvision/models/_utils.py:208: UserWarning: The parameter 'pretrained' is deprecated since 0.13 and may be removed in the future, please use 'weights' instead.\n", + " warnings.warn(\n", + "/Users/franck/Library/Python/3.8/lib/python/site-packages/torchvision/models/_utils.py:223: UserWarning: Arguments other than a weight enum or `None` for 'weights' are deprecated since 0.13 and may be removed in the future. The current behavior is equivalent to passing `weights=ResNet18_Weights.IMAGENET1K_V1`. You can also use `weights=ResNet18_Weights.DEFAULT` to get the most up-to-date weights.\n", + " warnings.warn(msg)\n", + "Downloading: \"https://download.pytorch.org/models/resnet18-f37072fd.pth\" to /Users/franck/.cache/torch/hub/checkpoints/resnet18-f37072fd.pth\n", + "100%|██████████| 44.7M/44.7M [00:01<00:00, 35.1MB/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 1/10\n", + "----------\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/franck/Library/Python/3.8/lib/python/site-packages/torch/optim/lr_scheduler.py:136: UserWarning: Detected call of `lr_scheduler.step()` before `optimizer.step()`. In PyTorch 1.1.0 and later, you should call them in the opposite order: `optimizer.step()` before `lr_scheduler.step()`. Failure to do this will result in PyTorch skipping the first value of the learning rate schedule. See more details at https://pytorch.org/docs/stable/optim.html#how-to-adjust-learning-rate\n", + " warnings.warn(\"Detected call of `lr_scheduler.step()` before `optimizer.step()`. \"\n", + "/Users/franck/Library/Python/3.8/lib/python/site-packages/urllib3/__init__.py:34: NotOpenSSLWarning: urllib3 v2.0 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with 'LibreSSL 2.8.3'. See: https://github.com/urllib3/urllib3/issues/3020\n", + " warnings.warn(\n", + "/Users/franck/Library/Python/3.8/lib/python/site-packages/urllib3/__init__.py:34: NotOpenSSLWarning: urllib3 v2.0 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with 'LibreSSL 2.8.3'. See: https://github.com/urllib3/urllib3/issues/3020\n", + " warnings.warn(\n", + "/Users/franck/Library/Python/3.8/lib/python/site-packages/urllib3/__init__.py:34: NotOpenSSLWarning: urllib3 v2.0 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with 'LibreSSL 2.8.3'. See: https://github.com/urllib3/urllib3/issues/3020\n", + " warnings.warn(\n", + "/Users/franck/Library/Python/3.8/lib/python/site-packages/urllib3/__init__.py:34: NotOpenSSLWarning: urllib3 v2.0 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with 'LibreSSL 2.8.3'. See: https://github.com/urllib3/urllib3/issues/3020\n", + " warnings.warn(\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "train Loss: 0.5863 Acc: 0.6721\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/franck/Library/Python/3.8/lib/python/site-packages/urllib3/__init__.py:34: NotOpenSSLWarning: urllib3 v2.0 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with 'LibreSSL 2.8.3'. See: https://github.com/urllib3/urllib3/issues/3020\n", + " warnings.warn(\n", + "/Users/franck/Library/Python/3.8/lib/python/site-packages/urllib3/__init__.py:34: NotOpenSSLWarning: urllib3 v2.0 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with 'LibreSSL 2.8.3'. See: https://github.com/urllib3/urllib3/issues/3020\n", + " warnings.warn(\n", + "/Users/franck/Library/Python/3.8/lib/python/site-packages/urllib3/__init__.py:34: NotOpenSSLWarning: urllib3 v2.0 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with 'LibreSSL 2.8.3'. See: https://github.com/urllib3/urllib3/issues/3020\n", + " warnings.warn(\n", + "/Users/franck/Library/Python/3.8/lib/python/site-packages/urllib3/__init__.py:34: NotOpenSSLWarning: urllib3 v2.0 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with 'LibreSSL 2.8.3'. See: https://github.com/urllib3/urllib3/issues/3020\n", + " warnings.warn(\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "val Loss: 0.2437 Acc: 0.9276\n", + "\n", + "Epoch 2/10\n", + "----------\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/franck/Library/Python/3.8/lib/python/site-packages/urllib3/__init__.py:34: NotOpenSSLWarning: urllib3 v2.0 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with 'LibreSSL 2.8.3'. See: https://github.com/urllib3/urllib3/issues/3020\n", + " warnings.warn(\n", + "/Users/franck/Library/Python/3.8/lib/python/site-packages/urllib3/__init__.py:34: NotOpenSSLWarning: urllib3 v2.0 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with 'LibreSSL 2.8.3'. See: https://github.com/urllib3/urllib3/issues/3020\n", + " warnings.warn(\n", + "/Users/franck/Library/Python/3.8/lib/python/site-packages/urllib3/__init__.py:34: NotOpenSSLWarning: urllib3 v2.0 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with 'LibreSSL 2.8.3'. See: https://github.com/urllib3/urllib3/issues/3020\n", + " warnings.warn(\n", + "/Users/franck/Library/Python/3.8/lib/python/site-packages/urllib3/__init__.py:34: NotOpenSSLWarning: urllib3 v2.0 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with 'LibreSSL 2.8.3'. See: https://github.com/urllib3/urllib3/issues/3020\n", + " warnings.warn(\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "train Loss: 0.5695 Acc: 0.7418\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/franck/Library/Python/3.8/lib/python/site-packages/urllib3/__init__.py:34: NotOpenSSLWarning: urllib3 v2.0 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with 'LibreSSL 2.8.3'. See: https://github.com/urllib3/urllib3/issues/3020\n", + " warnings.warn(\n", + "/Users/franck/Library/Python/3.8/lib/python/site-packages/urllib3/__init__.py:34: NotOpenSSLWarning: urllib3 v2.0 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with 'LibreSSL 2.8.3'. See: https://github.com/urllib3/urllib3/issues/3020\n", + " warnings.warn(\n", + "/Users/franck/Library/Python/3.8/lib/python/site-packages/urllib3/__init__.py:34: NotOpenSSLWarning: urllib3 v2.0 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with 'LibreSSL 2.8.3'. See: https://github.com/urllib3/urllib3/issues/3020\n", + " warnings.warn(\n", + "/Users/franck/Library/Python/3.8/lib/python/site-packages/urllib3/__init__.py:34: NotOpenSSLWarning: urllib3 v2.0 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with 'LibreSSL 2.8.3'. See: https://github.com/urllib3/urllib3/issues/3020\n", + " warnings.warn(\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "val Loss: 0.2151 Acc: 0.9539\n", + "\n", + "Epoch 3/10\n", + "----------\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/franck/Library/Python/3.8/lib/python/site-packages/urllib3/__init__.py:34: NotOpenSSLWarning: urllib3 v2.0 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with 'LibreSSL 2.8.3'. See: https://github.com/urllib3/urllib3/issues/3020\n", + " warnings.warn(\n", + "/Users/franck/Library/Python/3.8/lib/python/site-packages/urllib3/__init__.py:34: NotOpenSSLWarning: urllib3 v2.0 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with 'LibreSSL 2.8.3'. See: https://github.com/urllib3/urllib3/issues/3020\n", + " warnings.warn(\n", + "/Users/franck/Library/Python/3.8/lib/python/site-packages/urllib3/__init__.py:34: NotOpenSSLWarning: urllib3 v2.0 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with 'LibreSSL 2.8.3'. See: https://github.com/urllib3/urllib3/issues/3020\n", + " warnings.warn(\n", + "/Users/franck/Library/Python/3.8/lib/python/site-packages/urllib3/__init__.py:34: NotOpenSSLWarning: urllib3 v2.0 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with 'LibreSSL 2.8.3'. See: https://github.com/urllib3/urllib3/issues/3020\n", + " warnings.warn(\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "train Loss: 0.4273 Acc: 0.8074\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/franck/Library/Python/3.8/lib/python/site-packages/urllib3/__init__.py:34: NotOpenSSLWarning: urllib3 v2.0 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with 'LibreSSL 2.8.3'. See: https://github.com/urllib3/urllib3/issues/3020\n", + " warnings.warn(\n", + "/Users/franck/Library/Python/3.8/lib/python/site-packages/urllib3/__init__.py:34: NotOpenSSLWarning: urllib3 v2.0 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with 'LibreSSL 2.8.3'. See: https://github.com/urllib3/urllib3/issues/3020\n", + " warnings.warn(\n", + "/Users/franck/Library/Python/3.8/lib/python/site-packages/urllib3/__init__.py:34: NotOpenSSLWarning: urllib3 v2.0 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with 'LibreSSL 2.8.3'. See: https://github.com/urllib3/urllib3/issues/3020\n", + " warnings.warn(\n", + "/Users/franck/Library/Python/3.8/lib/python/site-packages/urllib3/__init__.py:34: NotOpenSSLWarning: urllib3 v2.0 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with 'LibreSSL 2.8.3'. See: https://github.com/urllib3/urllib3/issues/3020\n", + " warnings.warn(\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "val Loss: 0.1790 Acc: 0.9539\n", + "\n", + "Epoch 4/10\n", + "----------\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/franck/Library/Python/3.8/lib/python/site-packages/urllib3/__init__.py:34: NotOpenSSLWarning: urllib3 v2.0 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with 'LibreSSL 2.8.3'. See: https://github.com/urllib3/urllib3/issues/3020\n", + " warnings.warn(\n", + "/Users/franck/Library/Python/3.8/lib/python/site-packages/urllib3/__init__.py:34: NotOpenSSLWarning: urllib3 v2.0 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with 'LibreSSL 2.8.3'. See: https://github.com/urllib3/urllib3/issues/3020\n", + " warnings.warn(\n", + "/Users/franck/Library/Python/3.8/lib/python/site-packages/urllib3/__init__.py:34: NotOpenSSLWarning: urllib3 v2.0 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with 'LibreSSL 2.8.3'. See: https://github.com/urllib3/urllib3/issues/3020\n", + " warnings.warn(\n", + "/Users/franck/Library/Python/3.8/lib/python/site-packages/urllib3/__init__.py:34: NotOpenSSLWarning: urllib3 v2.0 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with 'LibreSSL 2.8.3'. See: https://github.com/urllib3/urllib3/issues/3020\n", + " warnings.warn(\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "train Loss: 0.5080 Acc: 0.7910\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/franck/Library/Python/3.8/lib/python/site-packages/urllib3/__init__.py:34: NotOpenSSLWarning: urllib3 v2.0 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with 'LibreSSL 2.8.3'. See: https://github.com/urllib3/urllib3/issues/3020\n", + " warnings.warn(\n", + "/Users/franck/Library/Python/3.8/lib/python/site-packages/urllib3/__init__.py:34: NotOpenSSLWarning: urllib3 v2.0 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with 'LibreSSL 2.8.3'. See: https://github.com/urllib3/urllib3/issues/3020\n", + " warnings.warn(\n", + "/Users/franck/Library/Python/3.8/lib/python/site-packages/urllib3/__init__.py:34: NotOpenSSLWarning: urllib3 v2.0 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with 'LibreSSL 2.8.3'. See: https://github.com/urllib3/urllib3/issues/3020\n", + " warnings.warn(\n", + "/Users/franck/Library/Python/3.8/lib/python/site-packages/urllib3/__init__.py:34: NotOpenSSLWarning: urllib3 v2.0 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with 'LibreSSL 2.8.3'. See: https://github.com/urllib3/urllib3/issues/3020\n", + " warnings.warn(\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "val Loss: 0.4991 Acc: 0.8092\n", + "\n", + "Epoch 5/10\n", + "----------\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/franck/Library/Python/3.8/lib/python/site-packages/urllib3/__init__.py:34: NotOpenSSLWarning: urllib3 v2.0 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with 'LibreSSL 2.8.3'. See: https://github.com/urllib3/urllib3/issues/3020\n", + " warnings.warn(\n", + "/Users/franck/Library/Python/3.8/lib/python/site-packages/urllib3/__init__.py:34: NotOpenSSLWarning: urllib3 v2.0 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with 'LibreSSL 2.8.3'. See: https://github.com/urllib3/urllib3/issues/3020\n", + " warnings.warn(\n", + "/Users/franck/Library/Python/3.8/lib/python/site-packages/urllib3/__init__.py:34: NotOpenSSLWarning: urllib3 v2.0 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with 'LibreSSL 2.8.3'. See: https://github.com/urllib3/urllib3/issues/3020\n", + " warnings.warn(\n", + "/Users/franck/Library/Python/3.8/lib/python/site-packages/urllib3/__init__.py:34: NotOpenSSLWarning: urllib3 v2.0 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with 'LibreSSL 2.8.3'. See: https://github.com/urllib3/urllib3/issues/3020\n", + " warnings.warn(\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "train Loss: 0.5020 Acc: 0.7992\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/franck/Library/Python/3.8/lib/python/site-packages/urllib3/__init__.py:34: NotOpenSSLWarning: urllib3 v2.0 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with 'LibreSSL 2.8.3'. See: https://github.com/urllib3/urllib3/issues/3020\n", + " warnings.warn(\n", + "/Users/franck/Library/Python/3.8/lib/python/site-packages/urllib3/__init__.py:34: NotOpenSSLWarning: urllib3 v2.0 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with 'LibreSSL 2.8.3'. See: https://github.com/urllib3/urllib3/issues/3020\n", + " warnings.warn(\n", + "/Users/franck/Library/Python/3.8/lib/python/site-packages/urllib3/__init__.py:34: NotOpenSSLWarning: urllib3 v2.0 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with 'LibreSSL 2.8.3'. See: https://github.com/urllib3/urllib3/issues/3020\n", + " warnings.warn(\n", + "/Users/franck/Library/Python/3.8/lib/python/site-packages/urllib3/__init__.py:34: NotOpenSSLWarning: urllib3 v2.0 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with 'LibreSSL 2.8.3'. See: https://github.com/urllib3/urllib3/issues/3020\n", + " warnings.warn(\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "val Loss: 0.2147 Acc: 0.9408\n", + "\n", + "Epoch 6/10\n", + "----------\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/franck/Library/Python/3.8/lib/python/site-packages/urllib3/__init__.py:34: NotOpenSSLWarning: urllib3 v2.0 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with 'LibreSSL 2.8.3'. See: https://github.com/urllib3/urllib3/issues/3020\n", + " warnings.warn(\n", + "/Users/franck/Library/Python/3.8/lib/python/site-packages/urllib3/__init__.py:34: NotOpenSSLWarning: urllib3 v2.0 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with 'LibreSSL 2.8.3'. See: https://github.com/urllib3/urllib3/issues/3020\n", + " warnings.warn(\n", + "/Users/franck/Library/Python/3.8/lib/python/site-packages/urllib3/__init__.py:34: NotOpenSSLWarning: urllib3 v2.0 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with 'LibreSSL 2.8.3'. See: https://github.com/urllib3/urllib3/issues/3020\n", + " warnings.warn(\n", + "/Users/franck/Library/Python/3.8/lib/python/site-packages/urllib3/__init__.py:34: NotOpenSSLWarning: urllib3 v2.0 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with 'LibreSSL 2.8.3'. See: https://github.com/urllib3/urllib3/issues/3020\n", + " warnings.warn(\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "train Loss: 0.3022 Acc: 0.8730\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/franck/Library/Python/3.8/lib/python/site-packages/urllib3/__init__.py:34: NotOpenSSLWarning: urllib3 v2.0 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with 'LibreSSL 2.8.3'. See: https://github.com/urllib3/urllib3/issues/3020\n", + " warnings.warn(\n", + "/Users/franck/Library/Python/3.8/lib/python/site-packages/urllib3/__init__.py:34: NotOpenSSLWarning: urllib3 v2.0 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with 'LibreSSL 2.8.3'. See: https://github.com/urllib3/urllib3/issues/3020\n", + " warnings.warn(\n", + "/Users/franck/Library/Python/3.8/lib/python/site-packages/urllib3/__init__.py:34: NotOpenSSLWarning: urllib3 v2.0 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with 'LibreSSL 2.8.3'. See: https://github.com/urllib3/urllib3/issues/3020\n", + " warnings.warn(\n", + "/Users/franck/Library/Python/3.8/lib/python/site-packages/urllib3/__init__.py:34: NotOpenSSLWarning: urllib3 v2.0 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with 'LibreSSL 2.8.3'. See: https://github.com/urllib3/urllib3/issues/3020\n", + " warnings.warn(\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "val Loss: 0.2138 Acc: 0.9342\n", + "\n", + "Epoch 7/10\n", + "----------\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/franck/Library/Python/3.8/lib/python/site-packages/urllib3/__init__.py:34: NotOpenSSLWarning: urllib3 v2.0 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with 'LibreSSL 2.8.3'. See: https://github.com/urllib3/urllib3/issues/3020\n", + " warnings.warn(\n", + "/Users/franck/Library/Python/3.8/lib/python/site-packages/urllib3/__init__.py:34: NotOpenSSLWarning: urllib3 v2.0 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with 'LibreSSL 2.8.3'. See: https://github.com/urllib3/urllib3/issues/3020\n", + " warnings.warn(\n", + "/Users/franck/Library/Python/3.8/lib/python/site-packages/urllib3/__init__.py:34: NotOpenSSLWarning: urllib3 v2.0 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with 'LibreSSL 2.8.3'. See: https://github.com/urllib3/urllib3/issues/3020\n", + " warnings.warn(\n", + "/Users/franck/Library/Python/3.8/lib/python/site-packages/urllib3/__init__.py:34: NotOpenSSLWarning: urllib3 v2.0 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with 'LibreSSL 2.8.3'. See: https://github.com/urllib3/urllib3/issues/3020\n", + " warnings.warn(\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "train Loss: 0.3056 Acc: 0.8607\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/franck/Library/Python/3.8/lib/python/site-packages/urllib3/__init__.py:34: NotOpenSSLWarning: urllib3 v2.0 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with 'LibreSSL 2.8.3'. See: https://github.com/urllib3/urllib3/issues/3020\n", + " warnings.warn(\n", + "/Users/franck/Library/Python/3.8/lib/python/site-packages/urllib3/__init__.py:34: NotOpenSSLWarning: urllib3 v2.0 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with 'LibreSSL 2.8.3'. See: https://github.com/urllib3/urllib3/issues/3020\n", + " warnings.warn(\n", + "/Users/franck/Library/Python/3.8/lib/python/site-packages/urllib3/__init__.py:34: NotOpenSSLWarning: urllib3 v2.0 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with 'LibreSSL 2.8.3'. See: https://github.com/urllib3/urllib3/issues/3020\n", + " warnings.warn(\n", + "/Users/franck/Library/Python/3.8/lib/python/site-packages/urllib3/__init__.py:34: NotOpenSSLWarning: urllib3 v2.0 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with 'LibreSSL 2.8.3'. See: https://github.com/urllib3/urllib3/issues/3020\n", + " warnings.warn(\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "val Loss: 0.1944 Acc: 0.9474\n", + "\n", + "Epoch 8/10\n", + "----------\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/franck/Library/Python/3.8/lib/python/site-packages/urllib3/__init__.py:34: NotOpenSSLWarning: urllib3 v2.0 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with 'LibreSSL 2.8.3'. See: https://github.com/urllib3/urllib3/issues/3020\n", + " warnings.warn(\n", + "/Users/franck/Library/Python/3.8/lib/python/site-packages/urllib3/__init__.py:34: NotOpenSSLWarning: urllib3 v2.0 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with 'LibreSSL 2.8.3'. See: https://github.com/urllib3/urllib3/issues/3020\n", + " warnings.warn(\n", + "/Users/franck/Library/Python/3.8/lib/python/site-packages/urllib3/__init__.py:34: NotOpenSSLWarning: urllib3 v2.0 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with 'LibreSSL 2.8.3'. See: https://github.com/urllib3/urllib3/issues/3020\n", + " warnings.warn(\n", + "/Users/franck/Library/Python/3.8/lib/python/site-packages/urllib3/__init__.py:34: NotOpenSSLWarning: urllib3 v2.0 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with 'LibreSSL 2.8.3'. See: https://github.com/urllib3/urllib3/issues/3020\n", + " warnings.warn(\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "train Loss: 0.4346 Acc: 0.8156\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/franck/Library/Python/3.8/lib/python/site-packages/urllib3/__init__.py:34: NotOpenSSLWarning: urllib3 v2.0 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with 'LibreSSL 2.8.3'. See: https://github.com/urllib3/urllib3/issues/3020\n", + " warnings.warn(\n", + "/Users/franck/Library/Python/3.8/lib/python/site-packages/urllib3/__init__.py:34: NotOpenSSLWarning: urllib3 v2.0 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with 'LibreSSL 2.8.3'. See: https://github.com/urllib3/urllib3/issues/3020\n", + " warnings.warn(\n", + "/Users/franck/Library/Python/3.8/lib/python/site-packages/urllib3/__init__.py:34: NotOpenSSLWarning: urllib3 v2.0 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with 'LibreSSL 2.8.3'. See: https://github.com/urllib3/urllib3/issues/3020\n", + " warnings.warn(\n", + "/Users/franck/Library/Python/3.8/lib/python/site-packages/urllib3/__init__.py:34: NotOpenSSLWarning: urllib3 v2.0 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with 'LibreSSL 2.8.3'. See: https://github.com/urllib3/urllib3/issues/3020\n", + " warnings.warn(\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "val Loss: 0.2299 Acc: 0.9342\n", + "\n", + "Epoch 9/10\n", + "----------\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/franck/Library/Python/3.8/lib/python/site-packages/urllib3/__init__.py:34: NotOpenSSLWarning: urllib3 v2.0 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with 'LibreSSL 2.8.3'. See: https://github.com/urllib3/urllib3/issues/3020\n", + " warnings.warn(\n", + "/Users/franck/Library/Python/3.8/lib/python/site-packages/urllib3/__init__.py:34: NotOpenSSLWarning: urllib3 v2.0 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with 'LibreSSL 2.8.3'. See: https://github.com/urllib3/urllib3/issues/3020\n", + " warnings.warn(\n", + "/Users/franck/Library/Python/3.8/lib/python/site-packages/urllib3/__init__.py:34: NotOpenSSLWarning: urllib3 v2.0 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with 'LibreSSL 2.8.3'. See: https://github.com/urllib3/urllib3/issues/3020\n", + " warnings.warn(\n", + "/Users/franck/Library/Python/3.8/lib/python/site-packages/urllib3/__init__.py:34: NotOpenSSLWarning: urllib3 v2.0 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with 'LibreSSL 2.8.3'. See: https://github.com/urllib3/urllib3/issues/3020\n", + " warnings.warn(\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "train Loss: 0.3944 Acc: 0.8074\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/franck/Library/Python/3.8/lib/python/site-packages/urllib3/__init__.py:34: NotOpenSSLWarning: urllib3 v2.0 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with 'LibreSSL 2.8.3'. See: https://github.com/urllib3/urllib3/issues/3020\n", + " warnings.warn(\n", + "/Users/franck/Library/Python/3.8/lib/python/site-packages/urllib3/__init__.py:34: NotOpenSSLWarning: urllib3 v2.0 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with 'LibreSSL 2.8.3'. See: https://github.com/urllib3/urllib3/issues/3020\n", + " warnings.warn(\n", + "/Users/franck/Library/Python/3.8/lib/python/site-packages/urllib3/__init__.py:34: NotOpenSSLWarning: urllib3 v2.0 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with 'LibreSSL 2.8.3'. See: https://github.com/urllib3/urllib3/issues/3020\n", + " warnings.warn(\n", + "/Users/franck/Library/Python/3.8/lib/python/site-packages/urllib3/__init__.py:34: NotOpenSSLWarning: urllib3 v2.0 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with 'LibreSSL 2.8.3'. See: https://github.com/urllib3/urllib3/issues/3020\n", + " warnings.warn(\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "val Loss: 0.2013 Acc: 0.9474\n", + "\n", + "Epoch 10/10\n", + "----------\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/franck/Library/Python/3.8/lib/python/site-packages/urllib3/__init__.py:34: NotOpenSSLWarning: urllib3 v2.0 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with 'LibreSSL 2.8.3'. See: https://github.com/urllib3/urllib3/issues/3020\n", + " warnings.warn(\n", + "/Users/franck/Library/Python/3.8/lib/python/site-packages/urllib3/__init__.py:34: NotOpenSSLWarning: urllib3 v2.0 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with 'LibreSSL 2.8.3'. See: https://github.com/urllib3/urllib3/issues/3020\n", + " warnings.warn(\n", + "/Users/franck/Library/Python/3.8/lib/python/site-packages/urllib3/__init__.py:34: NotOpenSSLWarning: urllib3 v2.0 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with 'LibreSSL 2.8.3'. See: https://github.com/urllib3/urllib3/issues/3020\n", + " warnings.warn(\n", + "/Users/franck/Library/Python/3.8/lib/python/site-packages/urllib3/__init__.py:34: NotOpenSSLWarning: urllib3 v2.0 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with 'LibreSSL 2.8.3'. See: https://github.com/urllib3/urllib3/issues/3020\n", + " warnings.warn(\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "train Loss: 0.3250 Acc: 0.8402\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/franck/Library/Python/3.8/lib/python/site-packages/urllib3/__init__.py:34: NotOpenSSLWarning: urllib3 v2.0 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with 'LibreSSL 2.8.3'. See: https://github.com/urllib3/urllib3/issues/3020\n", + " warnings.warn(\n", + "/Users/franck/Library/Python/3.8/lib/python/site-packages/urllib3/__init__.py:34: NotOpenSSLWarning: urllib3 v2.0 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with 'LibreSSL 2.8.3'. See: https://github.com/urllib3/urllib3/issues/3020\n", + " warnings.warn(\n", + "/Users/franck/Library/Python/3.8/lib/python/site-packages/urllib3/__init__.py:34: NotOpenSSLWarning: urllib3 v2.0 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with 'LibreSSL 2.8.3'. See: https://github.com/urllib3/urllib3/issues/3020\n", + " warnings.warn(\n", + "/Users/franck/Library/Python/3.8/lib/python/site-packages/urllib3/__init__.py:34: NotOpenSSLWarning: urllib3 v2.0 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with 'LibreSSL 2.8.3'. See: https://github.com/urllib3/urllib3/issues/3020\n", + " warnings.warn(\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "val Loss: 0.2382 Acc: 0.9145\n", + "\n", + "Training complete in 14m 21s\n", + "Best val Acc: 0.953947\n" + ] + } + ], + "source": [ + "import copy\n", + "import os\n", + "import time\n", + "\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "import torch\n", + "import torch.nn as nn\n", + "import torch.optim as optim\n", + "import torchvision\n", + "from torch.optim import lr_scheduler\n", + "from torchvision import datasets, transforms\n", + "\n", + "# Data augmentation and normalization for training\n", + "# Just normalization for validation\n", + "data_transforms = {\n", + " \"train\": transforms.Compose(\n", + " [\n", + " transforms.RandomResizedCrop(\n", + " 224\n", + " ), # ImageNet models were trained on 224x224 images\n", + " transforms.RandomHorizontalFlip(), # flip horizontally 50% of the time - increases train set variability\n", + " transforms.ToTensor(), # convert it to a PyTorch tensor\n", + " transforms.Normalize(\n", + " [0.485, 0.456, 0.406], [0.229, 0.224, 0.225]\n", + " ), # ImageNet models expect this norm\n", + " ]\n", + " ),\n", + " \"val\": transforms.Compose(\n", + " [\n", + " transforms.Resize(256),\n", + " transforms.CenterCrop(224),\n", + " transforms.ToTensor(),\n", + " transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225]),\n", + " ]\n", + " ),\n", + "}\n", + "\n", + "data_dir = \"hymenoptera_data\"\n", + "# Create train and validation datasets and loaders\n", + "image_datasets = {\n", + " x: datasets.ImageFolder(os.path.join(data_dir, x), data_transforms[x])\n", + " for x in [\"train\", \"val\"]\n", + "}\n", + "dataloaders = {\n", + " x: torch.utils.data.DataLoader(\n", + " image_datasets[x], batch_size=4, shuffle=True, num_workers=4\n", + " )\n", + " for x in [\"train\", \"val\"]\n", + "}\n", + "dataset_sizes = {x: len(image_datasets[x]) for x in [\"train\", \"val\"]}\n", + "class_names = image_datasets[\"train\"].classes\n", + "device = torch.device(\"cuda:0\" if torch.cuda.is_available() else \"cpu\")\n", + "\n", + "# Helper function for displaying images\n", + "def imshow(inp, title=None):\n", + " \"\"\"Imshow for Tensor.\"\"\"\n", + " inp = inp.numpy().transpose((1, 2, 0))\n", + " mean = np.array([0.485, 0.456, 0.406])\n", + " std = np.array([0.229, 0.224, 0.225])\n", + "\n", + " # Un-normalize the images\n", + " inp = std * inp + mean\n", + " # Clip just in case\n", + " inp = np.clip(inp, 0, 1)\n", + " plt.imshow(inp)\n", + " if title is not None:\n", + " plt.title(title)\n", + " plt.pause(0.001) # pause a bit so that plots are updated\n", + " plt.show()\n", + "\n", + "\n", + "# Get a batch of training data\n", + "# inputs, classes = next(iter(dataloaders['train']))\n", + "\n", + "# Make a grid from batch\n", + "# out = torchvision.utils.make_grid(inputs)\n", + "\n", + "# imshow(out, title=[class_names[x] for x in classes])\n", + "# training\n", + "\n", + "\n", + "def train_model(model, criterion, optimizer, scheduler, num_epochs=25):\n", + " since = time.time()\n", + "\n", + " best_model_wts = copy.deepcopy(model.state_dict())\n", + " best_acc = 0.0\n", + "\n", + " epoch_time = [] # we'll keep track of the time needed for each epoch\n", + "\n", + " for epoch in range(num_epochs):\n", + " epoch_start = time.time()\n", + " print(\"Epoch {}/{}\".format(epoch + 1, num_epochs))\n", + " print(\"-\" * 10)\n", + "\n", + " # Each epoch has a training and validation phase\n", + " for phase in [\"train\", \"val\"]:\n", + " if phase == \"train\":\n", + " scheduler.step()\n", + " model.train() # Set model to training mode\n", + " else:\n", + " model.eval() # Set model to evaluate mode\n", + "\n", + " running_loss = 0.0\n", + " running_corrects = 0\n", + "\n", + " # Iterate over data.\n", + " for inputs, labels in dataloaders[phase]:\n", + " inputs = inputs.to(device)\n", + " labels = labels.to(device)\n", + "\n", + " # zero the parameter gradients\n", + " optimizer.zero_grad()\n", + "\n", + " # Forward\n", + " # Track history if only in training phase\n", + " with torch.set_grad_enabled(phase == \"train\"):\n", + " outputs = model(inputs)\n", + " _, preds = torch.max(outputs, 1)\n", + " loss = criterion(outputs, labels)\n", + "\n", + " # backward + optimize only if in training phase\n", + " if phase == \"train\":\n", + " loss.backward()\n", + " optimizer.step()\n", + "\n", + " # Statistics\n", + " running_loss += loss.item() * inputs.size(0)\n", + " running_corrects += torch.sum(preds == labels.data)\n", + "\n", + " epoch_loss = running_loss / dataset_sizes[phase]\n", + " epoch_acc = running_corrects.double() / dataset_sizes[phase]\n", + "\n", + " print(\"{} Loss: {:.4f} Acc: {:.4f}\".format(phase, epoch_loss, epoch_acc))\n", + "\n", + " # Deep copy the model\n", + " if phase == \"val\" and epoch_acc > best_acc:\n", + " best_acc = epoch_acc\n", + " best_model_wts = copy.deepcopy(model.state_dict())\n", + "\n", + " # Add the epoch time\n", + " t_epoch = time.time() - epoch_start\n", + " epoch_time.append(t_epoch)\n", + " print()\n", + "\n", + " time_elapsed = time.time() - since\n", + " print(\n", + " \"Training complete in {:.0f}m {:.0f}s\".format(\n", + " time_elapsed // 60, time_elapsed % 60\n", + " )\n", + " )\n", + " print(\"Best val Acc: {:4f}\".format(best_acc))\n", + "\n", + " # Load best model weights\n", + " model.load_state_dict(best_model_wts)\n", + " return model, epoch_time\n", + "\n", + "\n", + "# Download a pre-trained ResNet18 model and freeze its weights\n", + "model = torchvision.models.resnet18(pretrained=True)\n", + "for param in model.parameters():\n", + " param.requires_grad = False\n", + "\n", + "# Replace the final fully connected layer\n", + "# Parameters of newly constructed modules have requires_grad=True by default\n", + "num_ftrs = model.fc.in_features\n", + "model.fc = nn.Linear(num_ftrs, 2)\n", + "# Send the model to the GPU\n", + "model = model.to(device)\n", + "# Set the loss function\n", + "criterion = nn.CrossEntropyLoss()\n", + "\n", + "# Observe that only the parameters of the final layer are being optimized\n", + "optimizer_conv = optim.SGD(model.fc.parameters(), lr=0.001, momentum=0.9)\n", + "exp_lr_scheduler = lr_scheduler.StepLR(optimizer_conv, step_size=7, gamma=0.1)\n", + "model, epoch_time = train_model(\n", + " model, criterion, optimizer_conv, exp_lr_scheduler, num_epochs=10\n", + ")\n" + ] + }, + { + "cell_type": "markdown", + "id": "bbd48800", + "metadata": {}, "source": [ "Experiments:\n", "Study the code and the results obtained.\n", @@ -24261,6 +24816,236 @@ "Apply ther quantization (post and quantization aware) and evaluate impact on model size and accuracy." ] }, + { + "cell_type": "code", + "execution_count": 31, + "id": "3495ae11", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "okk\n", + "oisfn\n", + "['ants', 'bees']\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/franck/Library/Python/3.8/lib/python/site-packages/torchvision/models/_utils.py:208: UserWarning: The parameter 'pretrained' is deprecated since 0.13 and may be removed in the future, please use 'weights' instead.\n", + " warnings.warn(\n", + "/Users/franck/Library/Python/3.8/lib/python/site-packages/torchvision/models/_utils.py:223: UserWarning: Arguments other than a weight enum or `None` for 'weights' are deprecated since 0.13 and may be removed in the future. The current behavior is equivalent to passing `weights=ResNet18_Weights.IMAGENET1K_V1`. You can also use `weights=ResNet18_Weights.DEFAULT` to get the most up-to-date weights.\n", + " warnings.warn(msg)\n" + ] + }, + { + "data": { + "text/plain": [ + "'# Replace the final fully connected layer\\n# Parameters of newly constructed modules have requires_grad=True by default\\nnum_ftrs = model.fc.in_features\\nmodel.fc = nn.Linear(num_ftrs, 2)\\n# Send the model to the GPU\\nmodel = model.to(device)\\n# Set the loss function\\ncriterion = nn.CrossEntropyLoss()\\n\\n# Observe that only the parameters of the final layer are being optimized\\noptimizer_conv = optim.SGD(model.fc.parameters(), lr=0.001, momentum=0.9)\\nexp_lr_scheduler = lr_scheduler.StepLR(optimizer_conv, step_size=7, gamma=0.1)\\nmodel, epoch_time = train_model(\\n model, criterion, optimizer_conv, exp_lr_scheduler, num_epochs=10\\n)\\n'" + ] + }, + "execution_count": 31, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import copy\n", + "import os\n", + "import time\n", + "\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "import torch\n", + "import torch.nn as nn\n", + "import torch.optim as optim\n", + "import torchvision\n", + "from torch.optim import lr_scheduler\n", + "from torchvision import datasets, transforms\n", + "\n", + "# Data augmentation and normalization for training\n", + "# Just normalization for validation\n", + "data_transforms = {\n", + " \"train\": transforms.Compose(\n", + " [\n", + " transforms.RandomResizedCrop(\n", + " 224\n", + " ), # ImageNet models were trained on 224x224 images\n", + " transforms.RandomHorizontalFlip(), # flip horizontally 50% of the time - increases train set variability\n", + " transforms.ToTensor(), # convert it to a PyTorch tensor\n", + " transforms.Normalize(\n", + " [0.485, 0.456, 0.406], [0.229, 0.224, 0.225]\n", + " ), # ImageNet models expect this norm\n", + " ]\n", + " ),\n", + " \"val\": transforms.Compose(\n", + " [\n", + " transforms.Resize(256),\n", + " transforms.CenterCrop(224),\n", + " transforms.ToTensor(),\n", + " transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225]),\n", + " ]\n", + " ),\n", + " \"test\": transforms.Compose(\n", + " [\n", + " transforms.Resize(256),\n", + " transforms.CenterCrop(224),\n", + " transforms.ToTensor(),\n", + " transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225]),\n", + " ]\n", + " ),\n", + "}\n", + "\n", + "data_dir = \"hymenoptera_data\"\n", + "# Create train and validation datasets and loaders\n", + "image_datasets = {\n", + " x: datasets.ImageFolder(os.path.join(data_dir, x), data_transforms[x])\n", + " for x in [\"train\", \"val\",\"test\"]\n", + "}\n", + "\n", + "dataloaders = {\n", + " x: torch.utils.data.DataLoader(\n", + " image_datasets[x], batch_size=4, shuffle=True, num_workers=4\n", + " )\n", + " for x in [\"train\", \"val\",\"test\"]\n", + "}\n", + "dataset_sizes = {x: len(image_datasets[x]) for x in [\"train\", \"val\",\"test\"]}\n", + "class_names = image_datasets[\"train\"].classes\n", + "device = torch.device(\"cuda:0\" if torch.cuda.is_available() else \"cpu\")\n", + "\n", + "# Helper function for displaying images\n", + "def imshow(inp, title=None):\n", + " \"\"\"Imshow for Tensor.\"\"\"\n", + " inp = inp.numpy().transpose((1, 2, 0))\n", + " mean = np.array([0.485, 0.456, 0.406])\n", + " std = np.array([0.229, 0.224, 0.225])\n", + "\n", + " # Un-normalize the images\n", + " inp = std * inp + mean\n", + " # Clip just in case\n", + " inp = np.clip(inp, 0, 1)\n", + " plt.imshow(inp)\n", + " if title is not None:\n", + " plt.title(title)\n", + " plt.pause(0.001) # pause a bit so that plots are updated\n", + " plt.show()\n", + "\n", + "\n", + "# Get a batch of training data\n", + "# inputs, classes = next(iter(dataloaders['train']))\n", + "\n", + "# Make a grid from batch\n", + "# out = torchvision.utils.make_grid(inputs)\n", + "\n", + "# imshow(out, title=[class_names[x] for x in classes])\n", + "# training\n", + "\n", + "\n", + "def train_model(model, criterion, optimizer, scheduler, num_epochs=25):\n", + " since = time.time()\n", + "\n", + " best_model_wts = copy.deepcopy(model.state_dict())\n", + " best_acc = 0.0\n", + "\n", + " epoch_time = [] # we'll keep track of the time needed for each epoch\n", + "\n", + " for epoch in range(num_epochs):\n", + " epoch_start = time.time()\n", + " print(\"Epoch {}/{}\".format(epoch + 1, num_epochs))\n", + " print(\"-\" * 10)\n", + "\n", + " # Each epoch has a training and validation phase\n", + " for phase in [\"train\", \"val\"]:\n", + " if phase == \"train\":\n", + " scheduler.step()\n", + " model.train() # Set model to training mode\n", + " else:\n", + " model.eval() # Set model to evaluate mode\n", + "\n", + " running_loss = 0.0\n", + " running_corrects = 0\n", + "\n", + " # Iterate over data.\n", + " for inputs, labels in dataloaders[phase]:\n", + " inputs = inputs.to(device)\n", + " labels = labels.to(device)\n", + "\n", + " # zero the parameter gradients\n", + " optimizer.zero_grad()\n", + "\n", + " # Forward\n", + " # Track history if only in training phase\n", + " with torch.set_grad_enabled(phase == \"train\"):\n", + " outputs = model(inputs)\n", + " _, preds = torch.max(outputs, 1)\n", + " loss = criterion(outputs, labels)\n", + "\n", + " # backward + optimize only if in training phase\n", + " if phase == \"train\":\n", + " loss.backward()\n", + " optimizer.step()\n", + "\n", + " # Statistics\n", + " running_loss += loss.item() * inputs.size(0)\n", + " running_corrects += torch.sum(preds == labels.data)\n", + "\n", + " epoch_loss = running_loss / dataset_sizes[phase]\n", + " epoch_acc = running_corrects.double() / dataset_sizes[phase]\n", + "\n", + " print(\"{} Loss: {:.4f} Acc: {:.4f}\".format(phase, epoch_loss, epoch_acc))\n", + "\n", + " # Deep copy the model\n", + " if phase == \"val\" and epoch_acc > best_acc:\n", + " best_acc = epoch_acc\n", + " best_model_wts = copy.deepcopy(model.state_dict())\n", + "\n", + " # Add the epoch time\n", + " t_epoch = time.time() - epoch_start\n", + " epoch_time.append(t_epoch)\n", + " print()\n", + "\n", + " time_elapsed = time.time() - since\n", + " print(\n", + " \"Training complete in {:.0f}m {:.0f}s\".format(\n", + " time_elapsed // 60, time_elapsed % 60\n", + " )\n", + " )\n", + " print(\"Best val Acc: {:4f}\".format(best_acc))\n", + "\n", + " # Load best model weights\n", + " model.load_state_dict(best_model_wts)\n", + " return model, epoch_time\n", + "\n", + "def eval_model():\n", + " return\n", + "\n", + "\n", + "# Download a pre-trained ResNet18 model and freeze its weights\n", + "model = torchvision.models.resnet18(pretrained=True)\n", + "for param in model.parameters():\n", + " param.requires_grad = False\n", + "\n", + "\"\"\"# Replace the final fully connected layer\n", + "# Parameters of newly constructed modules have requires_grad=True by default\n", + "num_ftrs = model.fc.in_features\n", + "model.fc = nn.Linear(num_ftrs, 2)\n", + "# Send the model to the GPU\n", + "model = model.to(device)\n", + "# Set the loss function\n", + "criterion = nn.CrossEntropyLoss()\n", + "\n", + "# Observe that only the parameters of the final layer are being optimized\n", + "optimizer_conv = optim.SGD(model.fc.parameters(), lr=0.001, momentum=0.9)\n", + "exp_lr_scheduler = lr_scheduler.StepLR(optimizer_conv, step_size=7, gamma=0.1)\n", + "model, epoch_time = train_model(\n", + " model, criterion, optimizer_conv, exp_lr_scheduler, num_epochs=10\n", + ")\n", + "\"\"\"" + ] + }, { "cell_type": "markdown", "id": "04a263f0", diff --git a/hymenoptera_data/train/ants/formica.jpeg b/hymenoptera_data/train/ants/formica.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..af83327233be73099c700fce654749842aad4a9d Binary files /dev/null and b/hymenoptera_data/train/ants/formica.jpeg differ diff --git a/hymenoptera_data/train/ants/imageNotFound.gif b/hymenoptera_data/train/ants/imageNotFound.gif new file mode 100644 index 0000000000000000000000000000000000000000..bdeaae94004e06c6a35d147ec58fb35062076b52 Binary files /dev/null and b/hymenoptera_data/train/ants/imageNotFound.gif differ