diff --git a/notebooks/01_Introduction.ipynb b/notebooks/01_Introduction.ipynb index 154d372..b50e1b4 100644 --- a/notebooks/01_Introduction.ipynb +++ b/notebooks/01_Introduction.ipynb @@ -138,37 +138,12 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": null, "metadata": { + "collapsed": false, "scrolled": false }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Hello world!\n", - "Hello again!\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "Alarming hello!\n" - ] - }, - { - "data": { - "text/plain": [ - "'And again!'" - ] - }, - "execution_count": 1, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "from __future__ import print_function\n", "import sys\n", @@ -231,24 +206,14 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": null, "metadata": { + "collapsed": false, "nbpresent": { "id": "2bced39d-ae3a-4603-ac94-fbb6a6283a96" } }, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAgkAAAEPCAYAAADI01d4AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3XlcVPX+x/HXd4YdBERQEXcFcgfXLCsst8q0zDWtLMv8\n3cxsu+237bbvtpuVlrmlmVqZpcm1Mndx33AHd5B9n/n+/jhTkYEyCnNm4PN8PObhmZlzZt58HeDD\nOd9Faa0RQgghhDiTxewAQgghhHBPUiQIIYQQokxSJAghhBCiTFIkCCGEEKJMUiQIIYQQokxSJAgh\nhBCiTFIkCCGEEKJMUiQIIYQQokxSJAghhBCiTF5mB3AHoaGhumXLlmbHcEu5ubkEBgaaHcMtSduU\nT9qmfNI25ZO2KV9lt8369etPaa0jzrWfFAlAvXr1WLdundkx3FJiYiIJCQlmx3BL0jblk7Ypn7RN\n+aRtylfZbaOUOliR/eRygxBCCCHKJEWCEEIIIcokRYIQQgghyiRFghBCCCHKJEWCEEIIIcrklkWC\nUupTpdQJpdTWcp5XSqlJSqlkpdRmpVTHUs/dqpTa47jd6rrUQgghRPXilkUCMBXod5bnrwaiHbex\nwAcASqkw4CmgG9AVeEopVbtKkwohhBDVlFvOk6C1XqGUanqWXQYCn2utNbBKKRWqlIoEEoCftNbp\nAEqpnzCKjZlnez///CMw8ybwCQCfQPANhtDGULsZ1G4KoY3Ay7cSvjLhDJtdcyg9jyMZ+RzJyOdY\nZgFHswrIzC+mxGan2KYpttmx2TWBvl6E+Hv/eYuo5UuLiCBaRAQSFuiDUsrsL0cIIVyjpAgyD8Pp\nA8Yt4yAUZEJRHhTnQVFuhV/KLYuECogCDpe6n+J4rLzH/0EpNRbjLASdIi2w67ty30yjyAuIIis4\nhqzgWLKCY8kLaIy2WC/wy3B/OTk5JCYmVvn7aK05nqdJzrBxINPOwSw7h7LtFNou/LUDvSEy0EKL\nEAsxYVZialup5XPhRYOr2sYTSduUT9qmfNI25Su3bbSNwNwUgrN2/XkLyEtFYa+U9/XUIuGCaa0n\nA5MB2rRspBn63l8VVn46ZBxyVGEHUZkpBOYZt8hjPxsv4FMLWl4JsddCdG8ICDPvi6lCVTkDWl5R\nCav2pZG46ySJu05yKD3/H/tEhvjRKCyABiF+1A/xJzLEj9AAb3ysFrytFrysCqtFkVtYQmZ+8Z+3\noxkF7D2Zw76TuWQXlpCcYSc5w86SgyUARNcN4pIWdejXNpKuzcKwWpwvGmR2uPJJ25RP2qZ80jbl\n+1vb5GdA8lLY9T3sWQqFmX/fWVkguDHUbmLcQptCQG3wCQLvAOOs+TO9K/S+nlokpAKNSt1v6Hgs\nFeOSQ+nHE8/1YiXWAGg94Cw7FMHxrZCyDlLWQMpao4DYvsC4KSs07g5trod2Q8A/1PmvqIYosdlZ\nseck89an8tOO4xSV/FXthgZ4c3GzOrRrGEK7qBDaNAimTtCFXebRWnMyp5Bdx7JZd+A0a/ans+HQ\nafacyGHPiRym/X6Q8CAf+rSpzzVtI+neos55FQxCCFGVrCV5sH4qbP0aDv4G9pK/ngxpDA07Q6Ou\n0LAL1G9XaZfIPbVIWAiMV0rNwuikmKm1PqqUWgK8UKqzYh/g0Qt+Ny8fiOpo3LqNNR7LOAS7FhuV\n3IFf4aDj9uMT0Pp66HSrUTjItXAAdh/PZs7aw3yTdIRTOYWA0TQdGoZwRWxdEmIj6NAwtNJ/QSul\nqFvLj7q1/Lgs2ljLpKjEzuaUDJbtPMH3W45yMC2PGasPMWP1IaJC/bmpW2OGdm5ERC3phyKEMJHW\nxh+lG6Zxyaa5YC8wHldWaHoZxF5t3MKaV1kEtywSlFIzMc4IhCulUjBGLHgDaK0/BL4HrgGSgTzg\nNsdz6Uqp54C1jpd69o9OjJUutDF0u8u45WfAnh9h43TY/z/YPMu4hcdA97uhw4ga2fFRa83KvWlM\nXrGP/+0++efjzSMCubFjQ26Ij6JBqL/Lc/l4WejcNIzOTcP4d99YdhzNZvHWoyxIOsKh9DxeXbKL\nt5bupl/bSEZf0oROTarnpSQhhJuyFcOWr2DlO3BiOwBWgCaXQtxIozBw0SVutywStNYjzvG8Bu4u\n57lPgU+rIle5/EOh/VDjlr7PKBY2fgmndsOieyHxJbjkHuh4K/gGuTSaGUpsdr7bcpTJK/ax7UgW\nAP7eVgZ1jGJI50Z0aBjiNqMNlFK0bhBM6wbB3Ncrhl+STzF91UGW7TjOok1HWLTpCN2b1+HeXtFc\n3LyO2XGFENVZcT5s+AJWTjJGJwAEhEPcTawuiaXbNaNcHsktiwSPFtYcrvoPJDwG27+BX143KsEl\nj8GKV6H7eOPsgrfr/4Kualprftx+nFeX7CL5RA4A4UE+jL6kKSO7NaF2oI/JCc/OYlFcERPBFTER\npGbkM2P1QT7//SC/70vj98lpdGsWxr29ounevI7bFDlCiGqgpBDWTIbf3oZcx1nX8BjocR+0HQxe\nPuSbNOpDioSqYvWCdoOhzSDYs8QoFlLWws/PwbpPjUKi3VCwuOt8Vs5Zsz+dlxbvYMOhDAAahwXw\nfwktuCE+Cj9vzxsqGhXqz0N9L2Ls5S2Y+tsBPvl1H6v3p3PTx6u5LDqc//RvbXZEIYSn0xq2zYel\nTxtzGQBExsFlD8BF/d3i94MUCVXNYjGuH8X0g32J8NOTcGwLzL8LVn0AfZ+Hpj3MTnneDqfn8cyi\n7SzdcRyAOoE+TLgqmhFdG+PjZf4H/EKF+Htzb69obuvRlKm/HeDjX/bxy55T9Hv7F65sZCW+azEh\nAd5mxxRCeJrDa2DJ48aIOYCIi6D3sxDdx606vEuR4CpKQYue0Ox/sGmWcUbhaBJMvdY4o9DvRQgM\nNztlhRXb7Ez5ZT9vL9tNQbGdQB8rd17enDsua06Qb/X7WAX7eTPhqmhGdmvMGz/tZuaaQ/x0sISE\n15bzQJ9YburaGIsMnRRCnEv+afjxSdj4hXE/MAJ6PgbxtxhnoN2M+yWq7ixWiB9pzKmw8l349Q3Y\nMseYGKPvC9BhuFtVkWVZsz+dJ77Zwu7jRr+D6zo04MlrW1E32M/kZFWvTpAvz9/QjpHdmnD/9N/Y\nmV7ME99sZWHSEV4e3J5m4YFmRxRCuKM/Li0sfhhyT4DVx+jQ3uM+8K1ldrpySZFgFp9ASHgY2g+B\nRRONoZPfjIPNs6H/mxDWzOyE/5BfZOPFxTv4/Hfj2lmTOgE8N7Atl8dEmJzM9Vo3CObhLn7k1bmI\npxZuY82BdPq9tYIH+8Rye49mMiGTEOIvmSnw3QOw+wfjfuPucN3bEBFrbq4K8PyLxp4urDncsgAG\nvg/+tWHfcviwhzGEUmuz0/0p6XAG1076hc9/P4i3VTHhypYsmXh5jSwQ/qCU4tr2kSy9/3IGdYyi\nsMTO89/vYNAHK/8c3SGEqOG2zIX3LzEKBN9g44/A0d97RIEAUiS4B6WMSxB3rzVmayzKgQX/grm3\nGdevTGSza95euocbP1jJvlO5xNQL4pu7L+X+PrEeOWqhKoQG+PDG0Dg+G92F+sF+bDqcwXXv/Mqc\ndYfRblToCSFcqDAb5v8fzBtjrK0QczXcvQY63+4WoxYqynOS1gRBETBkqnFWwTvQuH71QQ848Jsp\ncVIz8nlhdQFvLt2Nza65o0czFo7vQZsGIabkcXc9L6rLj/dfzg3xUeQX2/j33M3cOyuJ7IJis6MJ\nIVwpZZ1xRnjTDPDyh2vfgBEzITjS7GROkyLB3fxxVmHcL9CgI2SlGCMgVrwK9spZ+rMi/rf7JP0n\n/cLeTDuRIX7MuKMbT/RvLWcPziHYz5s3h8Xx+pAOBPhYWbjpCP3f+ZXNKRlmRxNCVDWt4ff34JM+\nxiKA9drBXf+DLmPcvkN6eaRIcFd1WsCYH41JNQB+/i/MHgUFmWc/7gLZ7Zq3lu5m9GdrOJ1XTLtw\nK99PuIxLWnrO8Ex3cGOnhiy6pwetI4M5mJbHjR+sZNaaQ2bHEkJUlaJc49LCksdA2+Diu+HOZR7T\n96A8UiS4M6u3MTPjTbPBLwR2fQcfXwkndlbJ253OLWL01LW8tXQPAPf3juG+Tr5uP52yu2oREcTX\n/7qEW7o3odimeeTrLTz5zda/LY8thKgG0vbClF6wdR74BMHQz6HfC9ViYT8pEjxBTF8Ymwh120Ba\nMky5CrYvrNS3SD6Rw/Xv/8aK3SepHeDNtNu6MuGqaCweeorMXfh5W3l2YFteGdweH6uFL1YdZNSU\n1ZzMLjQ7mhCiMuz+ESb3NNboqRMNd/4MrQeanarSSJHgKcKawx0/GYt9FOXAnJvh1zcrZZjkr3tO\nccP7v3EwLY82DYL5dsJlNXpoY1UY2rkRs++6mHrBvqw5kM6Ad39la2rVXjoSQlSx1R/BzGHG6IWL\n+hsFgodfXjiTFAmexCcQbpwCvZ8DlLEoyKIJxtrj52n6qoPc+tkasgtK6NO6Hl+N605UaPVbodId\nxDeuzaLxPejYOJSjmQUM/eh3lu88YXYsIYSz7DZj5sTF/wZth4RHYdh08As2O1mlc8siQSnVTym1\nSymVrJR6pIzn31RKJTluu5VSGaWes5V6rnLPybsDpeDSCcY1Ly9/2PA5fDnY6Q6Ndrvm2UXbeeKb\nrdjsmv9LaMGHozoR4COTcFalusF+zBx7MYPio8grsnHH5+uYsVo6NArhMQpzYNZIWP2hMbXyDZMh\n4RGPHb1wLm73G0EpZQXeA3oDKcBapdRCrfX2P/bRWt9Xav97gPhSL5GvtY5zVV7TtB4AwVHGqa59\nicaQm5FzIbTROQ8tLLHxwJxNfLv5KN5WxQs3tGNI53MfJyqHr5eV14d2IKq2P+/8nMxj87eQmpHH\ng31iUdX0B40Q1UL2MfhyCBzbbMyQO+xLaHqp2amqlDueSegKJGut92mti4BZwNl6gYwAZrokmbtp\n2AnuWGYsMXpyJ3zaF07uPushOYUljJm6jm83HyXI14tpt3eVAsEESike6BPLi4PaYbUo3lu+l/vn\nbKLYJiMfhHBL6fuNn7HHNht9xMYsrfYFArhnkRAFHC51P8Xx2D8opZoAzYCfSz3sp5Rap5RapZS6\nvupiuonaTeD2JdDoYshKhc/6wZGNZe6allPITR+v4tfkU4QH+TJr7MVc0kLmPzDTiK6NmXJrZwJ8\nrMzfmMq4L9ZTUGwzO5YQorTj2+DTfsYESZFxMOYnCG9pdiqXUO42t7xSajDQT2t9h+P+zUA3rfX4\nMvZ9GGiotb6n1GNRWutUpVRzjOLhKq313jKOHQuMBYiIiOg0Z86cqvmCXMRiK6TNtpepk76eEqs/\nW9s+Tkbtdn8+fyrfzmtrCziWp4nwVzzUxY+6AeeuEXNycggKCqrK6B6rMttmf6aN19cVkFMMrcIs\nTOjoh7+X5156kM9N+aRtyueObROcuZN2W57FuySX06Ft2dr2cWxeAS7PUdlt07Nnz/Va687n2s8d\ni4TuwNNa676O+48CaK1fLGPfjcDdWuuV5bzWVOBbrfXcs71nbGys3rVr14VGN19JkbHc9NZ5YPU1\n1oG46BoOpuVy08erSc3Ip3VkMFNv70LdWn4VesnExEQSEhKqNLanquy22X08m1FTVnMiu5C4RqFM\nva0LoQGeOZGVfG7KJ21TPrdrm+Rlxky3xXkQew0M/gy8K/azs7JVdtsopSpUJLjj5Ya1QLRSqplS\nygcYDvxjlIJS6iKgNvB7qcdqK6V8HdvhwKXA9jOPrba8fGDQx9B5DNgKYc7NHFs1m2EfrSI1I59O\nTWoz666LK1wgCNeKqVeLr8Z1p2Ftf5IOZzB88ipOZBeYHUuImmn3jzBzuFEgdLgJhn5hWoFgJrcr\nErTWJcB4YAmwA5ijtd6mlHpWKTWg1K7DgVn676dCWgHrlFKbgOXAS6VHRdQIFitc+zpcOhHsJYT/\nMI6OOYl0bRbGtNu7EuznbXZCcRZN6gTy1bjutIgIZOexbEZIoSCE6+36AWaPBFsRdLkTBr4HVrcb\nDOgSblckAGitv9dax2itW2itn3c89h+t9cJS+zyttX7kjONWaq3baa07OP79xNXZ3YJS7Gx7P5+o\nQXhh5x2fd/miWwpBvjXzQ+5pIkP8mX1Xdy6qX4u9J41LRTKNsxAusvN74xKDrQi6jYNrXgWLW/6q\ndIma+5VXY7uOZTPi49U8l38jC4JHYsWO74KxsOWsXTOEGwkP8uXLO7oRW68WySdyuOnjVZzKkUJB\niCq141uYcwvYi+Hif0G/l6rtJEkVJUVCNbP3ZA4jp6zidF4xPWPr0nf8JLjiEWPq0K/vNDo1Co9Q\nJ8iXL+/sRky9IPY4CoU0KRSEqBq7FsNXtxoFQvfx0PeFGl8ggBQJ1cqhtDxGfryaUzlFXBYdzgej\nOuHn4wU9HzXmFtd2+Hqs8c0gPEJ4kC8z7ryY6LpB7D6ew00fr+Z0bpHZsYSoXvYud5xBKIFL7oE+\n/5UCwUGKhGoiNSOfER+v4lhWAV2bhTH55s74eVv/2uGKh//szMicW42pnIVH+KNQaFk3iF3Hsx0L\ncp3/ol5CiFIOrYJZNxl9ELqONRbQkwLhT1IkVAMnsgoY+bExzDG+cSifju6Cv4/17zspBb2eNnrq\n2gph5gjjm0N4hIhaRh+FRmH+bE7J5I5p62RmRiEu1JGNxloMxXkQNxL6vSwFwhmkSPBwmXnF3PzJ\nGg6k5dE2Kpipt3UtfxSDUnD1K8Y3Q3Ge8c1xJMm1gcV5qxfsx5djLqZuLV9W70/n7i83yFoPQpyv\nEzvgi0FQmAWtr4cB79ToUQzlkRbxYPlFNsZMW8uu49m0rBvE57d3I8T/HPMgWCxw3SRoPdD45pg+\nCE4luyawuGCN6wQw/Y5u1A7wZtnOE9w/ZxM2u3vNmiqE2zt9ED6/HvLTIbqvMQmdxXru42ogKRI8\nVLHNzt0zNrDu4GkahPjx+e1dCQus4BS+Vi8YNAVa9oK8NJh+g7EEqvAIMfVqMe1244zRok1HeGrh\nVtxtenUh3FZumvHHUc4xaNIDhk4zZqsVZZIiwQNprXlk3hZ+3nmC2gHefD6mGw1C/Z17ES8fGPo5\nRHWCjEMwfTAUZFZNYFHp2jcMZcqtnfHxsjB91SHeWy5ng4Q4p6JcmDEE0pKhXlsYMQO8nfzZWcNI\nkeCBXlq8k3kbUgjwsfLZbV1pWfc8VwbzCYSbvoI6LeH4Fpg1EoplCmBPcXHzOkwaHodS8NqPu/lq\n3eFzHyRETWUrNkZ2pa6HkMYwci74hZidyu1JkeBhPvttPx+t2Ie3VfHhqE7ENQq9sBcMrAOjvoag\n+nDgF5g/FuzSa95T9GsbydPXtQHgka+3sHzXCZMTCeGGtIaF90DyT+AfBjd/DcGRZqfyCFIkeJAl\n247x7LfGelWvDu7A5TERlfPCtZvAqHngGwzbF8CSxyrndYVL3HpJU/4voQU2u+Zf0zew6XCG2ZGE\ncC8/PwebZoJ3gHEGITza7EQeQ4oED7Hx0GkmzNyI1vBgnxiuj4+q3Deo3xZGzASLN6z+EFZ9WLmv\nL6rUv/vGMig+ivxiG7dPXcuhtDyzIwnhHjZ8Ab+8Dspq9MNq2MnsRB5FigQPcDAtlzumraOwxM7w\nLo24u2fLqnmjpj2MJVEBfnjEWA1NeASlFC8Pbs9l0eGk5RZx29Q1ZObLrIyihtu7HL6daGxf+xpE\n9zY3jweSIsHNnc4tYvRna0nLLeLymAieu74tqipnBOswDBIeAzTMG0NQtvSa9xTeVgvvjexITL0g\n9p7M5V9frpfJlkTNdXx7qfUYJkDn281O5JGkSHBjRSV27pq+nv2ncmkVGcz7IzvibXXBf9kV/4YO\nN0FxHu22/NcYIik8QrCfN5+O7kJ4kC+/JafxxHyZQ0HUQNnHYMZQx2yKA6HXM2Yn8lhuWSQopfop\npXYppZKVUo+U8fxopdRJpVSS43ZHqeduVUrtcdxudW3yyqO15vH5W1izP516wb58NrpL+dMtVzal\n4Lq3oell+BadhhnDoCDLNe8tLljD2gFMubUzvl4WZq87zIf/22d2JCFcpygPZg6HzMPQsAvc8JFM\nt3wB3K7llFJW4D3gaqA1MEIp1bqMXWdrreMctymOY8OAp4BuQFfgKaVUbRdFr1Qf/7KPr9an4Odt\nYcotXagf4ufaAF4+MOwLcgMawont8PWdMjTSg8Q1CuXNYXEAvPzDThZvOWpyIiFcQGtYcLexcFNo\nExg+UyZLukBuVyRg/HJP1lrv01oXAbOAgRU8ti/wk9Y6XWt9GvgJ6FdFOavM0u3HeXHxTgDeGBpH\nu4YmTfjhX5utbZ8Av1DY/QMsk1N2nuSadpE83O8iAO6bk8TWVJlRU1RzK16FbV+DTy24aTYEVdIw\n8RrMHYuEKKD01HEpjsfOdKNSarNSaq5SqpGTx7qtHUezuHfWX0Mdr2ln7oQf+QGRxrAhixf89jYk\nzTA1j3DOuCuac2PHhhQU2xn7+TpOZheaHUmIqrF9ASx/HlAw+BOo28rsRNWCiy5yV7pFwEytdaFS\n6i5gGnClMy+glBoLjAWIiIggMTGx0kM6K6tQ88zv+eQWabpHWmmjUkhMTDU1U05ODomHgmjQ4g5i\n9nyIfcE9JB3MJCtEvgFzcnLc4nNzLn3raJJCLOzNLGDEez/zcFc/vC1VOEIGz2kbM0jblO982yYo\nex/xGx/GCuxtfiuHj/jCEedfx52Z9blxxyIhFWhU6n5Dx2N/0lqnlbo7BXil1LEJZxybWNabaK0n\nA5MBYmNjdUJCQlm7uUyxzc7IKatJK8gjvnEon915MX7e5i9dmpiYiNE2CfCdDcvaj+m4+3W4czmE\nNjrH0dXbX23j/uK6FjDw3d9Izijgx7QwXhncvkqH0npS27iatE35zqttso/Dx/8CexHEjaLFwLdo\nUZXDxE1i1ufGHS83rAWilVLNlFI+wHBgYekdlFKlz8EPAHY4tpcAfZRStR0dFvs4HnN7zy7a/udI\nho9GdXKLAuEf+r0EzRMg9yTMHgnF+WYnEhVUt5YfH9/SGT9vC1+tT+HT3w6YHUmIC1dSZMyFkJUK\njS6G/m8Yo7NEpXG7IkFrXQKMx/jlvgOYo7XeppR6Vik1wLHbBKXUNqXUJmACMNpxbDrwHEahsRZ4\n1vGYW5u15hBfrDqIj9XCh6M6UTfYxSMZKsrqBYM/g9pN4egmWHSv0ZtYeIS2USG8NqQDAM9/t51f\n95wyOZEQF+iHh+HwKgiOgmFfgJev2YmqHbcrEgC01t9rrWO01i201s87HvuP1nqhY/tRrXUbrXUH\nrXVPrfXOUsd+qrVu6bh9ZtbXUFHrD6bz5IKtADx/Q1viG7v5iM2AMBg+A7wDYfNsWPW+2YmEE/q3\nb8A9V7bErmH8zA0cTpc1HoSHWj8V1n0KVl8YNh2C6pqdqFpyyyKhpjiWWcC46RsotmlGX9KUIZ09\n5Bp/vTZwvaM4+PFJ2JdoahzhnIm9YugZG0FGXjF3fbGe/CKZ/0J4mEOr4bsHje3r3oKojubmqcak\nSDBJYYmNcdPXczK7kO7N6/D4tR42WqDN9XDZA6Bt8NVtcPqg2YlEBVktireGx9O0TgDbj2bx6Neb\nZepm4TmyjsKcm8FeDN3GQdxNZieq1qRIMMmzi7aTdDiDqFB/3nPVmgyVrefj0LI35KcbHRmL5NS1\npwjx9+ajmzsT4GPlm6QjfCYdGYUn+KOjYs5xaNID+vzX7ETVngf+ZvJ8X607zJerD+HjZeGDUR0J\nC/QxO9L5sVjhxikQ1hyObYHv7peOjB4ktn6tvzoyfr+D3/emneMIIUy25DFIWQPBDWHIVLB6m52o\n2pMiwcW2pmby+DdGR8XnBrahfcNQkxNdIP9Qo9OQlz9smml0JBIe45p2kYy7ogU2u+aemRs4lllg\ndiQhyrZpNqz9GKw+xiywMuWyS0iR4EKnc4sYN309RSV2RnRtxLAujc2OVDnqtYEBk4ztxQ9Dyjpz\n8winPNQ3lktb1uFUThF3z9hAUYnd7EhC/N2xrcaQa4CrX4GGnczNU4NIkeAiNrvm3tlJpJzOp0PD\nEJ4e0MbsSJWr/VDoOtboTDTnFsiVMfiewmpRTBoeT2SIH+sPnubFxTvOfZAQrpKfAbNHQUk+xI2E\nTqPNTlSjSJHgIu/8vIcVu08SFujD+6M64evlhjMqXqg+z0PDrsbsZ3Nvl6WlPUidIF9HB1rFZ78d\nYNGmI2ZHEgLsdpg/Dk7vh/rt4NrXZUZFF5MiwQVW7D7J28v2oBS8PTyOqNBqur65lw8MnQaBEbD/\nf44V2YSn6Ni4Nk9c2xqAh+dtJvlEtsmJRI3321uwezH4hcDQL8C7mv7sdGNSJFSxo5n5TJydhNYw\n8aoYLouu5p1tghvA4E9BWeCX12HPT2YnEk64pXsTBsY1IK/Ixl1frCensMTsSKKmOvAr/PycsT3o\nYwhrZm6eGkqKhCpUbLNz95cbSM8t4vKYCO65sqXZkVyj2eXGHAoAX98JGYfNzSMqTCnFi4PaEVMv\niL0nc3l8/haZaEm4XvZx45KltkOP+yGmr9mJaiwpEqrQS4t3suFQBpEhfrw1LA6LpQZdS+txv2Oi\npdMw9zZjEhThEQJ8vHh/ZEcCfKwsSDrCjDWHzI4kahK7DeaN+WvCpD/+4BCmkCKhiizecpRPft2P\nl0Xx7k0ePGHS+bJYYNBkY9KTlLWw9CmzEwkntKxbixcHtQPgmUXb2ZqaaXIiUWMkvggHfoHAujD4\nE2P1WWEaKRKqwKG0PP49dzMAj17Tik5N3Hxlx6oSEGbMimbxNlaL3L7A7ETCCQPjohjRtTFFJXbu\nnrGBrIJisyOJai4sbQOseNXo0zT4E6hV3+xINZ4UCZWssMTG3TM2kF1YQr829bn90qZmRzJXoy7Q\nx9H5aMF4SN9nbh7hlKeua03ryGAOpuXx8FxZCEpUocxUWu14w9ju+ZjRt0mYToqESvbi9zvZkppJ\nozB/Xh7cHiVjeo2V2lpdB4VZxoqRJYVmJxIV5Odt5f2RHQny9WLx1mNMXXnA7EiiOrKVwLwxeJdk\nQ4uroMevURnFAAAgAElEQVQDZicSDm5ZJCil+imldimlkpVSj5Tx/P1Kqe1Kqc1KqWVKqSalnrMp\npZIct4WuzL14y1GmrjyAt1Xx7oiOhPjL4iOAMfnJgHchtDEcTYKf/mN2IuGEpuGBvDK4PQAvfL+D\nzSkZJicS1U7iC3Dodwp9woy+TBa3/NVUI7nd/4RSygq8B1wNtAZGKKVan7HbRqCz1ro9MBd4pdRz\n+VrrOMdtgEtC8/d+CI9d04oOjTx84abK5h8Kg6ca/RNWfwjbXVq/iQt0TbtIbunehGKbZvyMjdI/\nQVSe5KXGnCrKwvbWD0JguNmJRCluVyQAXYFkrfU+rXURMAsYWHoHrfVyrXWe4+4qoKGLM/5N6X4I\nfdvUY/QlTc2M474adoLezxjbC8bD6QOmxhHOeeyaVrSODOZQeh6Pfi3zJ4hKkHUUvr7L2E54jMzQ\naramTTWg3O0bXSk1GOintb7Dcf9moJvWenw5+78LHNNa/9dxvwRIAkqAl7TW35Rz3FhgLEBERESn\nOXPmnHfmGTsK+fFgCeH+imcu8SfQu/r0Q8jJySEoKKjyXlBr2m59gfC0NWTVimZj/Itoi2delqn0\ntvEAx3LtPL0ynwIbjG7jQ0Kjsv/vamLbVJS0jUHZbXTY9B9CM7eSXrsDm9s/RU5uvrRNOSr7c9Oz\nZ8/1WuvO59rPowegKqVGAZ2BK0o93ERrnaqUag78rJTaorXee+axWuvJwGSA2NhYnZCQcF4Zlm4/\nzo8/rMPLophy+yXEVbPLDImJiZxv25SrWwf46HKCM/dwRXEi9PXMNR6qpG08gH9UKvfOSmLmrhKG\n9epGq8jgf+xTU9umIqRtHJa/CJlbIageYWPmkhBUV9rmLMxqG3e83JAKNCp1v6Hjsb9RSvUCHgcG\naK3/7C6vtU51/LsPSATiqyrokYx8Hpy7CYB/94utdgVClQkIc6zvYIXf34XdP5qdSDhhYFwUw7s0\notAxf0KurO8gnLX/F1jxCqCMdRmC6pqdSJTDHYuEtUC0UqqZUsoHGA78rZebUioe+AijQDhR6vHa\nSilfx3Y4cCmwvSpCltjsTJyVREZeMQmxEdzRo3lVvE311agrXPmEsf3NOOPapPAYT13Xhph6Qew7\nmctTC7eZHUd4ktw0Y00XbYfLH4TmV5z7GGEatysStNYlwHhgCbADmKO13qaUelYp9cdohVeBIOCr\nM4Y6tgLWKaU2Acsx+iRUSZEwadke1hxIp24tX14b0qFmrctQWS6dCM17Qp7jh4bdZnYiUUH+Plbe\nvakjft4W5q5P4ZuN/zjZJ8Q/aQ3f/B9kH4VGF8MV/xjhLtyM2xUJAFrr77XWMVrrFlrr5x2P/Udr\nvdCx3UtrXe/MoY5a65Va63Za6w6Ofz+pinwr957ineXJKAVvDYsjPMi3Kt6m+vtjfYfAusZc7b+8\nYXYi4YSYerV46jqjN/rj87dw4FSuyYmE21v1AexZAn6hcOMUWZfBA7hlkeDO0nOLmDgrCa3hnp4t\nuaSljOm9IEF1YdBHxnbiC3Bwpbl5hFOGd2nEte0iyS2ycc/MjRSV2M2OJNzVkY1/TaQ28D0IbXT2\n/YVbkCLBCVprHvpqEyeyC+nStDYTroo2O1L10OJK6HGfcY1y3h2Ql252IlFBSileGNSOhrX92ZKa\nySs/7DQ7knBHhdkw93awF0PXsdCqv9mJRAVJkeCEqSsPsGznCUL8vXlreDxeVmm+StPzcWjYBbJS\nYeE9xrVL4RFC/L2ZNCIeq0Ux5df9/LzzuNmRhLv57kFjcbd67aD3c2anEU6Q33IVtO1IJi9+b/yV\n9PKN7YgK9Tc5UTVj9TauUfoGw85vYd2nZicSTujYuDYP9okF4MGvNpNRIJcdhMOmWbB5FngHGEOf\nvf3MTiScIEVCBeQVlRjXW212RnZrTL+2kWZHqp5qN4Xr3jK2lzwGx6tkYIqoIndd3pweLcNJzy3i\n4y2F2O1yNqjGS9sL3zlWdLz6ZYiIMTePcJoUCRXw9MJt7DuZS0y9IJ7sf+ZaU6JStb0R4kZBSYFx\nDbM43+xEooIsFsUbQzsQFujDtjQ7k3/ZZ3YkYaaSIpg3BopyoM0NEH+z2YnEeZAi4RwWbTrCnHUp\n+HpZHOPCrWZHqv6ufhnqtISTO2DJ42anEU6oG+zHa0OMZaVfW7KLTYdlWeka6+fnjBENIY2h/1vG\nkvHC40iRcBaH0/N4bP4WAJ7s35qYerVMTlRD+AYZ1y6tPrDuE9ixyOxEwglXXlSP3k28KLFrJsza\nSI5M21zzJC+DlZOMqddvnGIsFS88khQJ5Six2Zk4O4nsghL6tK7HyG6NzY5Us0R2gF6OZaUX3gOZ\nMqOfJxkS40OryGAOpuXxn2+2mh1HuFLOSZg/zthOeBQadzM3j7ggUiSUY9LPyaw/eJr6wX68fGN7\nlJwqc71u46BlL8g/DfPvkmmbPYiPVfHOiDj8vC18vTFVpm2uKbSGBf+C3BPQpAdcdr/ZicQFkiKh\nDGv2p/Puz3tQCt4cFkftQB+zI9VMFgtc/8Ff0zb/+qbZiYQTWtb9a9rmJ77ZyqG0PJMTiSq3+iPY\n86Mx7fKgj8Aifbg8nRQJZ8jMK2birI3YNfwroQXdW9QxO1LNFlTXKBQAlr8Ah9eam0c4ZXiXRlzd\ntj45hSVMmLWRYpvMn1BtHdsCPz1pbA94B0IamptHVAopEkrRWvPI15s5kllAXKNQJvaSMb1uIboX\nXHw3aJsxpKogy+xEooKUUrw4qB2RIX4kHc7g7aV7zI4kqkJRHswdA7Yi6DQaWg845yHCM0iRUMrs\ntYdZvPUYQb5eTBoej7dMu+w+ej0F9dtDxsG/JmcRHiE0wIe3hsWhFLyXmMyqfWlmRxKVbcljcGoX\nhMdC3xfNTiMqkfwWdEg+kcMzi4wZ/p6/oS2N6wSYnEj8jZevY0rXANgyBzbNNjuRcEK35nUY37Ml\nWsN9s5PIyCsyO5KoLDsWwfrPjCHLgz8BH/nZWZ2cs0hQSo1wRZAz3rOfUmqXUipZKfVIGc/7KqVm\nO55frZRqWuq5Rx2P71JK9a3I+2ng3lkbyS+2MSg+ioFxUZX2tYhKFB4N/V4ytr97wFgwRniMCVdF\nE984lKOZBTw8bzNaFvHyfJmOBdkAej8L9duZm0dUuoqcSZimlPpZKdWqytMASikr8B5wNdAaGKGU\nOnMu5DHAaa11S+BN4GXHsa2B4UAboB/wvuP1zup0gWbbkSwahwXwzMA2lffFiMrX8RZoNQCKsmHe\nnWArNjuRqCBvq4VJw+Op5evFkm3HmbX2sNmRxIWw24yhyfmnoWVvY8iyqHYqUiR0AryBJKXUa0qp\noCrO1BVI1lrv01oXAbOAgWfsMxCY5tieC1yljIkMBgKztNaFWuv9QLLj9c4qq0hjtSjeHh5HLT/v\nSvtCRBVQCgZMguCGkLoOEl8yO5FwQqOwAP57Q1sAnlm0jeQTOSYnEuftt7eNocmBEXD9+zLtsgfJ\nL6r4nDPnLBK01lu01pcBY4FRwK4qvgQRBZT+EyPF8ViZ+2itS4BMoE4Fjy3T/b1jiG9c+zwjC5fy\nrw2DJgMKfnkdDvxqdiLhhIFxUQyKj6Kg2M6EmRspLJFJsjxOynpY/ryxff2HxlBl4TGe/77iK+x6\nVXRHrfU0pdQ3wAvAF0qpscB4rfU25yOaz5F/LEBAvaa04jCJiSkmp3I/OTk5JCYmmh2jTE2bDKHp\nwTkUzLyFdZ3fpsTbtWtruHPbmO1cbdO7juYXf8X2o1lMmLKUERf5ui6cyTz9c2MtyaPzuvvwt5dw\nuOEA9qZ6QWpipby2p7dNVaqsttlwvITpGwsrvH+FiwQArXUmcLdSagrwObBRKfUO8LTWOtuppOVL\nBRqVut/Q8VhZ+6QopbyAECCtgscCoLWeDEwGaBkTq6/s2bNSwlc3iYmJJCQkmB2jbJddCp/txy9l\nLT3SZ8PQL1x6ytOt28ZkFWmbyNgMBn+wkiUHSrjpyo5cERPhmnAm8/jPzfz/g4JjUK8djUZPoZFX\n5RV4Ht82Vagy2uZYZgET317h1DEVGgKplPJWSnVVSk1QSs0A5mF0DvQC7gZ2KqUqa/aMtUC0UqqZ\nUsoHoyPiwjP2WQjc6tgeDPysja7SC4HhjtEPzYBoYM253tAql9I8k9XbWGHON9gYhrXhc7MTCSfE\nNQrlvt7GhGUPzNnEqZyK/3UjTLJlLmyaAV7+xnDHSiwQRNWy2bVj+HExlztRkFdkCOTvQBbwO/A6\nEAMsAoZh/KVeF6Nz4Vyl1AV3b3X0MRgPLAF2AHO01tuUUs+WKkQ+AeoopZKB+4FHHMduA+YA24Ef\ngLu11nLBszqr3RSufcPY/uEROLnb1DjCOeOuaMHFzcM4lVPIQ19tkmGR7uz0Afj2PmO734sQEWtq\nHOGcySv28fu+NMKDfHh9SIcKH1eRMwlZwItAHyBUa91Za32v1vorrfURrXWW1voB4AngsfNKfwat\n9fda6xitdQut9fOOx/6jtV7o2C7QWg/RWrfUWnfVWu8rdezzjuNitdaLKyOPcHPth0D74VCcZ0zb\nXCJ/kXoKq0Xx5rA4QgO8Wb7rJFNXHjA7kiiLrcQYclyYBRf1N6ZeFh5j0+EMXv9xFwCvDu5ARK2K\nnwGqyOiGvlrrZ7XWy7TWuWfZdQXGmQUhXO+aV42zCsc2w7JnzU4jnBAZ4s9Lg9oD8OL3O9l+RNbm\ncDsrXoGUNVCrgbF4kwx39Bg5hSXcO2sjJXbNbZc2pedFzo1EqcxpmTfxz/kMhHANv2C48ROweMHv\n70LyUrMTCSf0a1ufm7o1pshmZ8KsjU6N4xZV7OBKWPEqoIzlnwPCzE4knPDUgm0cSMvjovq1eLjf\nRU4fX2lFgtY6X2u9qLJeTwinNewMPR1XvOb/H+ScNDePcMqT17amZd0gkk/k8Nx3FR/HLapQ/mnj\nMoO2w2X3Q7PLzU4knLAgKZV5G1Lw87bwzoh4/LzPOQHxP8gCT6J6uXQiNL0Mck/AN/8HdrvZiUQF\n+ftYmTQ8Hh+rhRmrD/HD1mNmR6rZtIZF90JWCkR1goRHzU4knHA4PY8n5m8F4Mn+rYmud37zyEiR\nIKoXixVu+MiYlTH5J1j9odmJhBNaNwjmkauNU6IPz9vMkYx8kxPVYBs+h+0LwKeWMdTYKlPWe4pi\nx2W77MIS+rWpz01dG5/3a0mRIKqfkCgY8K6xvfQpOLrJ3DzCKbdd2pSesRFk5hdz3+wkbHYZFuly\nJ3fB4oeN7f5vQFhzc/MIp0xatoeNhzKIDPHjpRvboS6go6kUCaJ6atUfOo8BWxHMHQNFZxuYI9yJ\nUopXh3QgPMiX1fvTeX95stmRapbiAuN7piTfGFrcfqjZiYQTVu1L493lySiFY3ixzwW9nhQJovrq\n+zxEtIK0PcZES8JjhAf58uYwY8KXt5btYf3BdJMT1SBLn4bjW6B2M7j2NbPTCCeczi1i4qwktIbx\nPVtycfM6F/yaUiSI6svbMXWs1de4vrr1a7MTCSdcFh3BXZc3x2bXTJiZRGZ+sdmRqr/dP8LqD4yh\nxIM/AV/XLpomzp/Wmn/P28yxrAI6Ng7l3quiK+V1pUgQ1Vu9NsYZBYBFE+H0QXPzCKc80CeW9g1D\nSM3I57H5W2Ta5qqUdRS+ccysf+UTxogG4TGmrzrIT9uPU8vPi7eHx+NlrZxf71IkiOqvyx3GVLKF\nmca0zTb5i9RT+HhZmDQ8nkAfK99tPsrstYfNjlQ92W0wfyzkpUHznnDJvWYnEk7YcTSL577bAcBL\ng9rTKCyg0l5bigRR/SllTCUbHAUpa2H5C2YnEk5oGh7Ic9e3BeDpRdvYc7yyVqUXf/r1Tdi/AgLC\njSHEFvnV4Cnyi2zcM3MjRSV2RnRtxLXtIyv19eWTIGqGgDAY9DEoi/EDcV+i2YmEEwZ1bMigjlEU\nFNu5Z+ZGCopl2uZKc3jNX4XzDR9BrXrm5hFOefbbbSSfyKFl3SD+079Npb++FAmi5mh6KVz+b0DD\n13dB7imzEwknPDewLc3CA9l5LJv/yrTNlSM/wxjuqG3QfTxE9zI7kXDCd5uPMnPNYXy8jGmX/X2c\nn3b5XKRIEDXL5Q9B40sg5xjMHyfTNnuQQF8v3hlhTNs8fdUhfth61OxInu2PaZczD0GDeLjqKbMT\nCSccSsvjkXmbAXji2la0igyukveRIkHULFYvuPHjv6ZtXvWe2YmEE9pGhfw5bfO/524m5XSeyYk8\n2PrPYPs34BNkrKDqdWGT7gjXKSqxc49j2uW+bepx88VNquy93KpIUEqFKaV+Ukrtcfxbu4x94pRS\nvyultimlNiulhpV6bqpSar9SKslxi3PtVyA8QkhDGPi+sb30aUhZb2oc4ZzbLm3KVRfVJaughHtn\nJVFsk7NBTju2FX5wLNh03dtQp4W5eYRTXvtxF5sOZxAV6s8rN3a4oGmXz8WtigTgEWCZ1joaWOa4\nf6Y84BatdRugH/CWUiq01PMPaa3jHLekqo8sPNJF10C3/wN7CcwdbVybFR7hj2mb6wf7sf7gad74\nabfZkTxLUS7MvQ1KCiD+Zmg32OxEwgnLd51g8op9WC2KSSPiCAmo2oW33K1IGAhMc2xPA64/cwet\n9W6t9R7H9hHgBBDhsoSi+uj9DETGQcYhWDTBuEYrPEJYoA+TRsRjUfBB4l7+t/uk2ZE8x/cPwand\nEHERXP2K2WmEE45lFvDAHGPBugf6xNCpSViVv6e7FQn1tNZ/9EY6Bpx1LI5SqivgA+wt9fDzjssQ\nbyqlfKsop6gOvHxhyGfGUrjbF8C6T81OJJzQtVkY9/eOAeD+2UkczyowOZEH2DQLkr4EL38YMhV8\nKm/SHVG17FozcfZG0nOLuCw6nHGXu+YSkXL1NKdKqaVA/TKeehyYprUOLbXvaa31P/olOJ6LBBKB\nW7XWq0o9dgyjcJgM7NVaP1vO8WOBsQARERGd5syZc95fU3WWk5NDUFCQ2TGqVN3jK2i943Xsypv1\nnV4lN6hZhY6rCW1zvlzVNnateX1dAdvS7FwUZuHfXfywVOH12cpg1ufGPy+FzusewGovYGfseI5F\n9nZ5hnOR76nyzd6Ww+LDimAfxbOX+hHqe2F/4/fs2XO91rrzufZzeZFwNkqpXUCC1vroH0WA1jq2\njP2CMQqEF7TWc8t5rQTgQa11/3O9b2xsrN61a9cFZa+uEhMTSUhIMDtG1Vs4ATZMgzotYWxihRa2\nqTFtcx5c2TYnsgu45u1fOZVTyMRe0UzsFeOS9z1fpnxuivNhSi84vhXaDoYbpxgzkboZ+Z4q2697\nTnHzJ6tBwZdjunFJy/ALfk2lVIWKBHe73LAQuNWxfSuw4MwdlFI+wHzg8zMLBEdhgTK6el4PbK3S\ntKL6uPplqNsG0pKNhaDcqHgWZ1e3lh9vDYtDKXh72R5WJsskWf+w+GGjQAhrAf3fdMsCQZTtRFYB\nE2dvRAP3XhVdKQWCM9ytSHgJ6K2U2gP0ctxHKdVZKTXFsc9Q4HJgdBlDHb9USm0BtgDhwH9dG194\nLG9/GDoNvANh61xjDLnwGD2iwxnfsyVaw4RZSZzIlv4Jf9o8xzhL5uVnfMb9qmbSHVH5bHbNhFkb\nOZVTRKswC/dcWTnLPzvDrYoErXWa1voqrXW01rqX1jrd8fg6rfUdju3pWmvvUsMc/xzqqLW+Umvd\nTmvdVms9SmudY+bXIzxMeLQxZhxg8SNwdJO5eYRTJvaK4eLmYZzKKWTCzI3Y7HI2iJO7jTNjYJwt\nq9/O3DzCKW8v28OqfemEB/lyVwdfrBbXnwFyqyJBCNO1HwKdRoOtEL4aDQVZZicSFWS1KCYNjyc8\nyJdV+9J5a2kNnz+hKA++uhWKc6HdEOh467mPEW7j1z2neOfnPSgFk4bHXXBHxfMlRYIQZ+r3EtRr\nB+n7YOE90j/Bg9QN9mPSiDgsCt5dnlyz509Y/BCc2A51oqH/W9IPwYMczcxnwqyNxuWzK13fD6E0\nKRKEOJP3H2PIg4y57ddMNjuRcMIlLcK5r1cMWsN9s5M4mplvdiTX2zjduHk5+tr4yrBCT1FsszN+\nxl/zIUy4yvX9EEqTIkGIsoS3hIHvGttLHofDa83NI5xyd8+WXB4TQXpuEffM2Fiz1nc4uhm+e8DY\nvvZ1qNfG3DzCKS8v3sn6g6epH2yM2jGjH0JpUiQIUZ42NzjWdyg2ru3mytA6T2GxKN4caqzvsO7g\naV78fqfZkVwjPwPm3GKsy9DxFogfaXYi4YQfth5lyq/78bIo3hsZT50g8ycNliJBiLPp/Sw07ApZ\nqTDvDrDbzE4kKqhOkC/vj+qIt1Xx6W/7+XbzEbMjVS2tYcHdcHo/1G8PV79qdiLhhAOncnnoq80A\nPHpNK5esy1ARUiQIcTZePkb/hIA6sG85/O9lsxMJJ3RsXJsnrm0NwMNzN5N8ItvkRFVo5STY+S34\nhcDQz8Hbz+xEooLyi2z835cbyC4s4eq29bn90qZmR/qTFAlCnEtIFNz4CaDgf6/AnqVmJxJOuKV7\nEwZ0aEBukY1x0zeQW1hidqTKd+A3WPqMsX3DRxBWsfVHhPm01jw2fws7jmbRLDyQlwe3R7nRSBQp\nEoSoiBY9oefjgIZ5YyB9v9mJRAUppXhxUDui6waRfCKHh+dtxp3WrLlgWUeMPjPaBj3ug9irzU4k\nnPD57weZvzEVf28rH47qRLCft9mR/kaKBCEq6rIHIOZqKMiA2TdjsRWanUhUUKCvFx+M6kSgj5Vv\nNx/lk1+rSZFXUmh0VMw9Cc2ugJ5PmJ1IOGHdgXSe+3Y7AK8Mbk9s/XMvLOdqUiQIUVEWCwz6yFgk\n5/gWYne9JxMteZCWdYN4bUgHAF5cvJOVe6vBaJXFD0PKWghpBIM/A6uX2YlEBZ3ILuBfX26gxK4Z\n06MZ13VoYHakMkmRIIQz/EJg2HTwDqTeif/B6o/MTiSccHW7SP6V0AKbXTN+xkZSMzx4oqUNnxsL\nkVl9YdgXEFjH7ESigoptdsZ/uZET2YV0bRbGI1dfZHakckmRIISz6rX+a6KlHx83Oo0Jj/FAn9g/\nJ1oa98V6Coo9cFhr6nr47kFju/+b0CDe3DzCKf/9djtrDqRTL9iXd2+Kx9vqvr+K3TeZEO6s7SAO\nNboB7CVGp7HMFLMTiQoyFoKKo1GYP1tSM3ls/hbP6siYcwJm32IsQtZ5jEyY5GHmrD3MtN8P4mO1\n8P7ITtSt5d5DVaVIEOI87W92s9FZLPckzBoJxR586rqGCQ3wYfLNnfH3tvL1hlSmrTxgdqSKKSmC\n2TdDVooxyVe/l8xOJJyw4dBpnvhmKwDPXd+GTk1qm5zo3KRIEOI8aYvVmGipdlM4mgQLxktHRg/S\nKjKYlwe3B+C573awMtnNOzJqDd8/CIdXQa0GRt8YLx+zU4kKOp5VwLgv1lNks3NL9yYM69LY7EgV\n4lZFglIqTCn1k1Jqj+PfMssspZRNKZXkuC0s9XgzpdRqpVSyUmq2Ukq+g0TVCgiD4TPBOxC2zoXf\n3jI7kXDCgA4NGHeF0ZHxXzM2cDAt1+xI5Vs7BTZMAy8/GP4l1KpndiJRQQXFNu76Yj0nsgvp1iyM\nJ/u3NjtShblVkQA8AizTWkcDyxz3y5KvtY5z3AaUevxl4E2tdUvgNDCmauMKgdGRcZBjlMPSZ2D3\nj+bmEU55qG8sV15Ul4y8Yu6Yto7sgmKzI/3T/l+M4Y4AA96BqI7m5hEVprXmiW+2knQ4g6hQf94f\n2dGtOyqeyd2SDgSmObanAddX9EBlzGN5JTD3fI4X4oK0ug4SHuPPGRlP7jY7kaggq0Xx9vA4WtYN\nYs+JHCbOSsJmd6PLRqcPGBMmaRtcMgHaDzU7kXDC5BX7mLs+BT9vCx/d3MktVnZ0hrsVCfW01kcd\n28eA8s6n+Sml1imlViml/igE6gAZWus/JmZPAaKqMKsQf3f5Q9BqABRmwYyhkJdudiJRQbX8vJly\nS2dC/L1ZtvMEr/+4y+xIhoJMmDEc8tOhZW/o9bTZiYQTftp+nJd+MJYpf2NoHG2jQkxO5Dzl6qE/\nSqmlQP0ynnocmKa1Di2172mt9T/6JSilorTWqUqp5sDPwFVAJrDKcakBpVQjYLHWum05OcYCYwEi\nIiI6zZkz5wK/suopJyeHoKAgs2O4pbLaxmIrIH7jo9TK2UdGSBs2dXgGbXGvudhdwVM/N9vTbLy2\nrgC7hjvb+XBpVOX/31W0bZTdRtut/6VO+gZyAxqyMf5lSrw9r02d4amfm7Iczrbz31X5FNpgULQ3\nA1pcWBe5ym6bnj17rtdadz7Xfi4vEs5GKbULSNBaH1VKRQKJWuvYcxwzFfgWmAecBOprrUuUUt2B\np7XWfc/1vrGxsXrXLjf5y8HNJCYmkpCQYHYMt1Ru22SmwpSrIPsoxI2Ege+BG63q5gqe/Ln5/PcD\n/GfBNrytiuljutGteeXOZFjhtvn+IVgz2Vim/I5lNWJlR0/+3JR2MruQ69/7jdSMfK6Pa8Cbw+Iu\neGXHym4bpVSFigR3u9ywELjVsX0rsODMHZRStZVSvo7tcOBSYLs2qp3lwOCzHS9ElQuJghEzwcsf\nkr6UEQ8e5pbuTRl9SVOKbZq7pq9n/ykTRjysnmwUCFYfGPZljSgQqouCYhtjv1hHakY+8Y1DeelG\n91r62VnuViS8BPRWSu0Bejnuo5TqrJSa4tinFbBOKbUJoyh4SWu93fHcw8D9SqlkjD4Kn7g0vRB/\naBAPgyYb20ufhu0Lz7q7cC9P9m/NVY4RD7dPXcvp3CLXvfmepfDDHyMZ3oUm3V333uKC2O2aB77a\nxMZDxkiGyTd3xs/banasC+JWRYLWOk1rfZXWOlpr3Utrne54fJ3W+g7H9kqtdTutdQfHv5+UOn6f\n1rqr1rql1nqI1lrW8hXmaT3gr45mX4+FlHVmphFOsFoUk0bE0zoymP2ncrlr+noKS1ywxsOxrfDV\naFZwCgMAACAASURBVNB2oyNsh2FV/56i0rz8w06+23yUWr5efDK6MxG1PGskQ1ncqkgQotq5dCLE\nj4KSfJgxDNL2mp1IVFCg4wd9vWBf1uxP55F5VbzGQ2YKfDkYirKhzSDHkFrhKb74/QAfrdiHl0Xx\nwf+3d+dxUZZrA8d/9wwgIAiyuCSoGGoa7gupgaDmcrRU0rLUNLc6lXVOeyfr5Hnt5Dnvq9l2THMn\nM7UyrTTTFJfct8Q1CbVQFFcE2eF+/3hGjxoIJczzANf385mP82wz19wOM9fc65A23FGrmtkhlQpJ\nEoQoS0pBnylwe1fIOGt8CVy2+PS/4qraPh7MHNYOTzc7S3af4N8ry6iDc+ZF+HiA0dm1XifoNxVs\n8vFcXqw+cJq/L9sPwFsxzbi7YYDJEZUeeRcKUdbsrvDAXKjVHM4nGjUKORlmRyVKKKyOD/8Z3Bq7\nTTE17ufSXwwqLxsWDoEzByGgsTHlsqu1VwYU/7U36SJjF+ymQMMzXRsysG2w2SGVKkkShHCGKt4w\neDH41IUTO4xZGQuc0MYtSkVU4xpMjGkGwBtf7WdFfHIxV5RQQQF8+Wc4tgG8asGQz8DD+isDCsPR\ns5cZMWc7mbn53N86iL90a2h2SKVOkgQhnMXb8SXg7guHl8M3z8mqkeXIwLbBvNCjMVrDMwv3sO3o\nLc6oqTWseg32fQ5uXkYS6Vs+VgYUxqqOQ2du5Wx6DhENA3grplm5HupYFEkShHCmwMbw0KfGSn47\nZ8Oa/zE7IvE7PBF1O0PuqktOXgGj5m7n8Km0P/5gGyfD5vfB5goPzIPazUsvUFGmUjNzGTZrG0kX\nMmkR7MuHQ9rg5lIxv04r5qsSwsrqdYCBc0DZYcMk2PS+2RGJElJKMf6+MLo3rcmlrDyGzNz6x5aX\n3jELvv8HoIwVREO7lnqsomxk5eYzau52Dp1Ko0FgVWYPb0fVKi5mh1VmJEkQwgyNe0G//xj3v3sV\ndn9sbjyixK7ModChgT9n0rIZPGMrp1KzSnx9YMoG+PpZY6P3JAi7v4wiFaUtL7+Apz7ZxfZjF6hV\nzZ3YkeH4Vb21NRmsTpIEIczSYhD0/Jdxf9lYOPi1ufGIEnN3tfPRsLa0CPYl6UImQ2Zu5XxJZmVM\nWE2Tg1MADV1eg3YjyzxWUTryHbMprj6Ygo+HK7Ej21PH18PssMqcJAlCmOmux6HzS8YMe589Cgmr\nzY5IlJBXFRfmPtqOxjW9SUhJZ9isbaRl5RZ9wbEfYOFQbDoPOjwFEc85L1hxSwoKNK98sZele05S\n1c3O7Efb0bCmt9lhOUXFbUi5Rbm5uSQlJZGVVfJqxIrIx8eHo0ePEhQUhKtr5Vvy2CmiXjEm09k2\nDT4dDA8vggadzY5KlICvpxuxI9sz4MPNxJ9IZeScHcx+tJA26l+2wPyBkJtBcq1u1O4+odKtDFpe\naa35+7L9LNqRhLurjVnD29G6buUZpipJQhGSkpLw9vamfv36FXJYS0ldunSJnJwckpKSCAmRlejK\nhFLQ61+Qn2OMeFgwCAZ/BvU7mR2ZKIEa1dyZPyqcgR9uZtux84yYs53Zj7bD083x8Zq0w5hNMfcy\nNH+Qw9UfpHYl/kwpT7TW/HP5QWK3HMfNxcZHj7Qt9aXDrU6aG4qQlZWFv79/pU4QwOjN7e/vX+lr\nVMqcUtB7MrQcArkZxq/OX7aYHZUooWA/TxaMuYua1aqw9aiRKGTk5MHJ3RAb89/1GPr+xxjVIixP\na82k737iow1HjfUYBrcmomGg2WE5nSQJN1HZE4QrpBycxGaD+96F5oOMX50fD4Bft5sdlSihkICq\nLBh9FzW8q7Al8Tz/+Gghel4/yE6FJvcZS4fbpfK2PNBa8++Vh3l/bQJ2m+K9h1rRtUlNs8MyhSQJ\nQliJzW4MjQy73/j1GdvP6PAmyoUGgV4sGHMXUVV/4ZWU51FZF8lv2Avun2ms4SEsT2vNm98cZGrc\nz7jYFO8OakWvZrXNDss0kiQIYTU2O/SfDs0GQk46fHw//LzG7KhECd2esZdZtgn4qAxW5rdl6KU/\nk5YntXHlQUGB5o1l+5mx8SiudsUHg1vTu3nlTRDAYkmCUspPKbVKKXXE8e9vupAqpaKVUnuuuWUp\npfo5js1RSh295lhL57+KstexY8diz8nMzKRz587k5xe9iFBOTg6RkZHk5eWVZniiNNhdoP80aDUU\n8jKNlSMPrzA7KlGcn9dAbAy23HTSGvblfzxeZNPxdB7+qITzKAjTFBRoXv1yH3M3H8fNbmPa0Db0\nuLOW2WGZzlJJAvAy8L3WuiHwvWP7OlrrtVrrllrrlkAXIAP47ppTXrhyXGu9xylRO9mmTZuKPWfW\nrFnExMRgtxfdScrNzY2uXbuycOHC0gxPlBabHe59F9qPMUY+LBwC+74wOypRlMMrjGQuLxNaDsH7\nodkseDyCev6exJ9I5cFpmzl9SToAW1FOXgF/XbSHBdt+oYqLjRnD2tLljsrZB+FGVksS+gJzHffn\nAv2KOX8AsEJrnVGmUZnk8uXL9O7dmxYtWhAWFnb1y9zLy4tjx47RpEkTRo8ezZ133kn37t3JzMy8\neu38+fPp27fv1e3o6GhWrVoFwLhx4xg7diwA/fr1Y/78+U58VeJ3sdmg17+h0zNQkGcsMb19ptlR\niRvtWWAkcfk50G403Pce2OwE+3my+LEONKrpxZGUdAZ+uJkzGQVmRyuucTk7j5Fzt183UVJko8o3\niqEoSltoqVql1EWtta/jvgIuXNku4vw1wGSt9deO7TlAByAbR02E1jq7iGvHAGMAAgMD2yxatOi6\n4z4+PoSGhgLQ7M31t/bCihD/auRNjy9dupTVq1fz3nvvAZCamoqPjw+1a9dmy5YttGzZknXr1tG8\neXOGDRtGr169GDRoEDk5OTRt2pSEhISrj/XDDz/w5ptvMmzYMBYvXszChQux2+3k5+cTGhrK0aNH\nC40hPz8fu91OQkICqamppffiK4D09HS8vLyc82RaU+/4YkKOGQndsXoPcKz+w5adkMepZWMmran7\ny+c0OBoLwC/BMSQ2eOQ3/y/pOZpJO7I4eqmAam6a59p6UK+aDIW8kbPfN2k5mrd3ZpGYWoC3GzzX\nxp36Ptb8fyntsomOjt6ptW5b3HlOH4+jlFoNFNbQ8+q1G1prrZQqMoNRStUGmgErr9n9CnAKcAOm\nAy8B/yjseq31dMc5NG7cWEdFRV13/ODBg3h7l+20m8U9fvv27Rk3bhwTJkygT58+REREXD3m5eVF\nSEgInToZE+6Eh4dz+vRpvL29OXnyJNWrV7/u8Xv27Mlbb73F1KlTiYuLu+5YlSpViownLS0Nb29v\n3N3dadWq1S293oomLi6OG983ZSsadobD13+h/vFF1Pdzgz5TLNlr3vllY4KCfPj2ZTgaCyjoOZG6\ndz1O3SJO7xyZy5h5O9mceI5/78jlg8HNiGpcw5kRW54z3zdJFzJ4ZNY2ElMLCKruQezIcEICqjrl\nuf8Is/6mnJ4kaK27FXVMKXVaKVVba53sSAJSbvJQDwBLtNZXJ0vXWic77mYrpWYDz5dGzMcm9i6N\nh/ndGjVqxK5du1i+fDnjxo2ja9euvP7661ePX/lyB7Db7VebGzw8PH4z+VF8fDzJycn4+/v/JhnI\nzs7G3d29DF+JKDVthoFXTVg83Fg5Mj3FWHbazbofbhVSbhZ8MRoOLgO7m9HJNCzmppd4u7syZ0Q7\nhn2wii3J+Yycu4N/9g/jwXZFpRWirOxNusiouTtIScvmjlrezBvRnhrV5DOwMFbrk7AMGOa4PwxY\nepNzHwIWXLvDkVhcaaroB+wrgxid5uTJk3h6ejJkyBBeeOEFdu3aVaLrqlevTn5+/tVEITk5mcGD\nB7N06VK8vLz49ttvr5577tw5AgICZF2G8qRxTxj2FXj4wZHvYHYvSE0yO6rKI+00zL3XSBCq+MCQ\nL4pNEK6o4mJnTPMqPBF1O/kFmpc+j2fyd4exUrNvRbc8PpkHpm0mJS2b8BA/Fj7WQRKEm7BakjAR\nuEcpdQTo5thGKdVWKTXjyklKqfpAMLDuhuvnK6XigXggAJjghJjLTHx8PO3bt6dly5aMHz+ecePG\nlfja7t27s3HjRjIyMoiJiWHSpEk0adKE1157jfHjx189b+3atfTubU5NibgFwe1g5CqoHgLJP8L0\naJmd0RmSf4SPoiFpG1QLghErICSi+OuuYVOKF3vewZv9w7ApeHdNAk8t2G1M4yzKjNaa99cc4Yn5\nu8jKLeCBtkHEjgzHx0N+IN2MpeYI1VqfA7oWsn8HMOqa7WNAnULO61KW8Tlbjx496NGjx2/2p6en\nA7Bv338rSp5//vqWlSeffJK3336bbt26sXnz5qv7IyMjr9v+5JNPmDhxYmmHLpwhIBRGr4HFw+Do\nepjzJ2PIZMuHzI6sYtq/BJb82RjiGBwOD34MXn+8T8Hg8HrU9nHn6QV7+GZvMj+npPPRI20J9vMs\nxaAFQFZuPq98Ec+S3SdQCl7pdQejIxrIlPMlYLWaBFFKWrduTXR0dLGTKfXr149GjRo5MTJRqjz9\njOrudqON4XdfPg7fjYN8+VVaagoKYO0/jX4gjjkQGPbVLSUIV3S5oyZfPtmRkICqHDqVxn3vb2RT\nwtlbj1lc9ev5DAZ8uIklu0/g6WZn+tC2jIm8XRKEEpIkoQIbMWJEsZMpPfLII06MSJQJuyv0/j/o\n8zbYXGDTezDvPriUXPy14ubSz8DHMbDuX6Bs0OOf0Pd9cKlS/LUlFFrDmy+f7ERU40AuZOQydNY2\nZmxIlH4KpWDNodP0eW8j+05cItjPg8WPd+CepjJJ0u8hSYIQFUXbEfDIMvCqBcd/gA/vljUfbsWx\nH2BaBCSuBU9/GPwZdHiyTOam8PFwZeawdlc7NE745iCj5u6QqZz/oPwCzf+tPMyIOTtIzcylW5Ma\nfP1UBHfe5mN2aOWOJAlCVCT1O8HjG6BBFGSchdgYWPOmMaZflExBAWyYBHP7QFoy1O0Ij2+E0N90\nlypVdpvRofHDIW2o5u7C94dS6PXOerYknivT561oTl7MZMiMrby/NgGbghd7Nmb60Lb4eEoHxT9C\nkgQhKhqvGkY/hai/Gdvr/w2z/wTnfjY3rvLg4i8Q2xe+/wfoArj7r0b/g2q3OS2EnmG1WP5MBG3q\nVef0pWwe/mgLk1f9RF6+TOdcnKV7TtBjyno2J54jwMuNj0eG80RUKDab9D/4oyRJEKIistkh6iV4\nZKnR/PDrFqP5Yet045eyuJ7WsHMu/KejMVLE0x8eXgzd3jBW5HSyoOqeLBxzF09Fh6KBd78/QszU\nTRw6dcnpsZQHFzNyGLtgN898uoe0rDy6NanBimci6RgaYHZo5Z4kCUJUZA06wxObodlAyM2AFS8Y\nv5QvHDc7Muu4dBLmD4SvnoacNGhyLzyxFRp1NzUsF7uN53s0Zv7IcG7zcWdvUir3vreRd1YfISdP\nEr0rVh04Tc8pG/jqx5N4utmZGNOMjx5pS6B36XUurcwkSRCiovP0g/tnwAOx4Blg/FKe2hF+eBfy\nc4u/vqLKz4Ot0+CDuyBhFbj7QoyjnLysswpgx9AAVv41kiF31SU3X/P26p+47/2N7E26aHZopjpx\nMZPR83Ywet4OTl3Kok296qx4JoJB7evK8MZSJEmCEJVF0/vgiS3QtC/kpMOq12BqJ0i8ceLSSuD4\nZpjeGVa8CNmp0KinUTbNB1pyZU1vd1cm9GvGJ6PDqevnyaFTafT94Ade/nwvZ9MLXei2wsrNL2D6\n+p/pNmkdqw6cxquKC2/c25RFj3Wgnr+sYVLaJEmo4DIzM+ncuXOxkypFRkaSlycT8FR4XoHwwDwY\n/Dn4NYCzh405FRYPh4u/mh1d2buUDF88BrN7wul94FMXBn0CD30K1WqbHV2xOt4ewLd/iWB0RAh2\npfh0+69E/28cH61PrPBNEFprVh04zZ/e2cA/lx8iMzef3s1q8/1znRneKQS7dE4sE5IkVHCzZs0i\nJiam2EmVunbtysKFC50YmTBVw27GL+cu48DFw5hy+L3WsPxFYwGjiubyWVj5KrzbEvZ+CvYqEPki\nPLkV7uhtydqDoni6ufBq76as/GskUY0DScvO483lB+kxZT1f/XiS/IKKNwnTjmPnGfjhZkbP28GR\nlHTq+nky+9F2fDC4NTVlcaYyJUmCxc2bN4/mzZvTokULhg4dCsDkyZMJCwsjLCyMKVOmAHD58mV6\n9+5NixYtCAsLu/qFP3/+fPr27Xv18aKjo1m1ahUA48aNY+zYsQD069eP+fPnO/OlCbO5VIHIF+Cp\n7RB2vzGt87Zp8E4LWPU6ZJw3O8Jbl3kR1kwwXtPm9yEvy+iY+OQW6PIquJXfdRJuD/RizqPtmT28\nHQ0CqnL07GXGLthNjynrWbrnRIVIFq4s6Tzgw83sOH4Bv6pu/P3epqx6NpLoxrc+LbYonqUWeLKs\nN8polq43Um96eP/+/UyYMIFNmzYREBDA+fPn2blzJ7Nnz2br1q1orQkPD6dz584kJiZy22238c03\n3wCQmppKTk4OiYmJ1K9f/+pjjh8/ntdff52UlBR2797NsmXLAAgLC2P7dllFsFLyDYYBs+DuZyHu\nLTj0NfzwDmyfCS0HQ/hj4H+72VH+PheOGcM9d8dCtmPYYMPuEP03uK2VqaGVtug7atApNIDPdibx\nwdoEElLSeebTPbz7/RH+HBVKn+a1cXctuibRagoKNHE/pTBtXSJbjxqJqqebnVF3hzA6sgHe7jIp\nkjNJkmBha9asYeDAgQQEGGN9/fz8iI2NpX///lStanTQiYmJYcOGDfTs2ZPnnnuOl156iT59+hAR\nEcHJkyfx9fW97jEjIyPRWjN58mTi4uKuNkPY7Xbc3NxIS0vD29vbuS9UWEOtMBg0H07sNBY0Slht\n1Cxsm258wd71ODSItm7VvNZwbCNs/RAOLzcmQwKoH2E0q9S9y9z4ypCbi42Hw+syoE0QX+xK4v21\nCfx85jLPL/6RN785wANtgxkcXo+6/tatOUnNzGXtL7lMmLKehBRjpVvvKi48FF6XUREh1PCWZgUz\nSJJQEsX84reCRo0asWvXLpYvX864cePo2rUrY8eOJSsr67rz4uPjSU5Oxt/f/zfJQHZ2Nu7u8odY\n6dVpA0M+h1P7jC/cvYvgyErj5lsPmg2AsAFQs6nZkRrO/AT7PoP4z+C8Y1ZJu5vRhBL+WIWrObgZ\nNxcbg9rX5f42QXy5+wRzNx9j34lLTFufyPQNiUQ2DKR/qzp0aVKDahb4RZ6XX8CGhLN8vjOJ7w6c\ndnS+zKG2jzsjOoXwYPtgS8RZmVkqSVBKDQTeAJoA7bXWO4o4ryfwDmAHZmitJzr2hwCfAv7ATmCo\n1rrcrpDSpUsX+vfvz7PPPou/vz/nz58nIiKC4cOH8/LLL6O1ZsmSJcTGxnLy5En8/PwYMmQIvr6+\nzJgxg+rVq5Ofn09WVhbu7u4kJyczePBgli5dytNPP823335Lz549ATh37hwBAQG4usofpHCoFWas\neNhtPOycDTtmwcXjxroGGyZBjTshrD/c3hVqtzBmeXSGggI4HW8sXrXvCzi197/HvGpCm0eNxa68\nK+9qf652GwPbBjOgTRA/JqUSu/k4X+09ybqfzrDupzO42W3c3TCAXmG16NqkJn5V3ZwW26WsXH44\ncpZ1P53h+0MpnEkzhnAqBU38bDx2T3N6N6+Nq126zFmBpZIEYB8QA0wr6gSllB34ALgHSAK2K6WW\naa0PAP8C3tZaf6qU+hAYCUwt+7DLxp133smrr75K586dsdvttGrVijlz5jB8+HDat28PwKhRo2jV\nqhUrV67khRdewGaz4erqytSpxsvu3r07GzdupGPHjsTExDBp0iSaNGnCa6+9xksvvXQ1SVi7di29\ne/c27bUKC6vqD5HPG+sYHN8E8YvhwFJI2Q9r9hsdA919jGr9BlEQ1BZbfimO3c/NMoZqnthpzOlw\ndD1kXtOpsoqP0Rmx2QAjBhOmUbYqpRQtg31pGezLuN5NWPbjSVbsS2bb0fOsOZTCmkMpADSq6UX7\nED/ah/jTrn51alVzL7UJiVIuZbHvZCrxSZf44eez7Dp+gbxrOlWGBFTl/tZ16N86iCN7thLVqk6p\nPK8oHcqKa5YrpeKA5wurSVBKdQDe0Fr3cGy/4jg0ETgD1NJa59143s00btxYHz58+Lp9Bw8epEmT\nJrf2Qixg165dvP3228TGxt70vJiYGCZOnEijRo2u23+lj0JFKY/SFBcXR1RUlNlhmCMvB37+Hg6v\ngKPrjI6C19DYUP4NoEZTCGxs/MKvGmjcvGoYIytufLzLZ+ByCqQ7bmd/gpQDxsJU+oZ5PnyCjSmn\nG/WE0HvAtfw0k1nhfXMmLZvvDpxiRfwpth87T/YNcyxUc3ehQaAXDQKrcnugF3V8PfDxcKWahys+\nHq54u7tQoDW5eZqc/ALyCgq4mJHLqdQsklOzOJWaya8XMtl3IpWUtOsTRrtN0aZudTo3DqRzo0Du\nvK3a1YTECmVjVaVdNkqpnVrrtsWdVx5T7jrAtbO+JAHhGE0MF7XWedfsr/QpaevWrYmOjiY/P7/I\nuRJycnLo16/fbxIEIYrk4gaNexk3MJKExHVwbAOcijf6CZxLMG4Hb/G5lA38G0KtZhASASGdjYmg\nrNqBshwI9K7C4PB6DA6vR3ZePvFJqWw9ep5tR8+z65cLXMrKY8+vF9nz661P/exdxYU761SjWR0f\nWtWtTqfQAHw8pFmzvHB6TYJSajVQq5BDr2qtlzrOiaPomoQBQE+t9SjH9lCMJOENYIvWOtSxPxhY\nobUOKyKOMcAYgMDAwDaLFi267riPjw+hoaF/5CVWKFeSi4SEBFJTrd+B05nS09Px8vIyOwxLyrh0\ngRrqAlUvH8cjMxm3nIu45qZe/ddWcP3snlrZyXHzIdfVlxw3X3LcfMj0qM3lqvXI8AyiwF5xFuux\n+vtGa01qjubUZU1yegGnLhdwIVuTkQcZuZrLuZrMPI1NKVxsYFfgYgMPF4Wfu3Gr7m7Dz10R7G2j\nhqfCVsKEzuplY6bSLpvo6Ghr1iRorbvd4kOcAIKv2Q5y7DsH+CqlXBy1CVf2FxXHdGA6GM0NN1bj\nHDx4UIYC8t/mBnd3d1q1qjy9xEtCqkaLFhcXR9uo/r/rGo8yisVq5H1TNCmboplVNuWx++h2oKFS\nKkQp5QYMApZpo0pkLTDAcd4wYKlJMQohhBDlnqWSBKVUf6VUEtAB+EYptdKx/zal1HIARy3BU8BK\njNbORVrr/Y6HeAl4VimVgNFHYeatxGPFTp1mkHIQQojKyVIdF7XWS4Alhew/Cfzpmu3lwPJCzksE\n2pdGLO7u7pw7dw5/f/9KvTa51ppz587JJEtCCFEJWSpJsJKgoCCSkpI4c+aM2aGYKisrC19fX4KC\ngswORQghhJNJklAEV1dXQkJCzA7DdHFxcdJhUQghKilL9UkQQgghhHVIkiCEEEKIQkmSIIQQQohC\nWXLtBmdTSqUBh4s9sXIKAM6aHYRFSdkUTcqmaFI2RZOyKVppl009rXVgcSdJx0XD4ZJMT1kZKaV2\nSNkUTsqmaFI2RZOyKZqUTdHMKhtpbhBCCCFEoSRJEEIIIUShJEkwTDc7AAuTsimalE3RpGyKJmVT\nNCmboplSNtJxUQghhBCFkpoEIYQQQhSqUicJSqmeSqnDSqkEpdTLZsdjJUqpWUqpFKXUPrNjsRKl\nVLBSaq1S6oBSar9S6hmzY7ISpZS7UmqbUupHR/mMNzsmK1FK2ZVSu5VSX5sdi9UopY4ppeKVUnuU\nUjvMjsdKlFK+SqnPlFKHlFIHlVIdnPbclbW5QSllB34C7gGSgO3AQ1rrA6YGZhFKqUggHZintQ4z\nOx6rUErVBmprrXcppbyBnUA/ed8YlLFkalWtdbpSyhXYCDyjtd5icmiWoJR6FmgLVNNa9zE7HitR\nSh0D2mqtZZ6EGyil5gIbtNYzlFJugKfW+qIznrsy1yS0BxK01ola6xzgU6CvyTFZhtZ6PXDe7Dis\nRmudrLXe5bifBhwE6pgblXVoQ7pj09Vxq5y/RG6glAoCegMzzI5FlB9KKR8gEpgJoLXOcVaCAJU7\nSagD/HrNdhLyYS9+B6VUfaAVsNXcSKzFUaW+B0gBVmmtpXwMU4AXgQKzA7EoDXynlNqplBpjdjAW\nEgKcAWY7mqpmKKWqOuvJK3OSIMQfppTyAj4H/qK1vmR2PFaitc7XWrcEgoD2SqlK31yllOoDpGit\nd5odi4XdrbVuDfQCnnQ0eQpjZuTWwFStdSvgMuC0PnSVOUk4AQRfsx3k2CfETTna2j8H5mutvzA7\nHqtyVImuBXqaHYsFdALuc7S7fwp0UUp9bG5I1qK1PuH4NwVYgtEkLIxa7qRrauQ+w0ganKIyJwnb\ngYZKqRBHR5BBwDKTYxIW5+iYNxM4qLWebHY8VqOUClRK+True2B0DD5kblTm01q/orUO0lrXx/is\nWaO1HmJyWJahlKrq6AiMoyq9OyAjqwCt9SngV6VUY8euroDTOkpX2gWetNZ5SqmngJWAHZiltd5v\ncliWoZRaAEQBAUqpJODvWuuZ5kZlCZ2AoUC8o90d4G9a6+UmxmQltYG5jtFDNmCR1lqG+4ni1ASW\nGDk4LsAnWutvzQ3JUsYC8x0/aBOBR531xJV2CKQQQgghbq4yNzcIIYQQ4iYkSRBCCCFEoSRJEEII\nIUShJEkQQgghRKEkSRBCCCFEoSRJEEIIIUShJEkQQgghRKEkSRBCCCFEoSRJEEI4jVIqVCmVq5T6\nxw37pyql0pRSbc2KTQjxW5IkCCGcRmudAMwA/qKU8gdQSr0OjAD6a613mBmfEOJ6Mi2zEMKplFK1\ngQTgP8BhYBrwkNZ6kamBCSF+o9Iu8CSEMIfWOlkpNQV4DuMz6GlJEISwJmluEEKY4QhQBdisE8kL\naAAAAM1JREFUtf7A7GCEEIWTJEEI4VRKqa4YTQybgU5KqeYmhySEKIIkCUIIp1FKtQaWYHRejAJ+\nAd4yMyYhRNEkSRBCOIVSKhRYAXwHjNVa5wDjgT8ppSJNDU4IUSgZ3SCEKHNKqVrAJoyagx5a62zH\nfjuwD7igte5oYohCiEJIkiCEEEKIQklzgxBCCCEKJUmCEEIIIQolSYIQQgghCiVJghBCCCEKJUmC\nEEIIIQolSYIQQgghCiVJghBCCCEKJUmCEEIIIQolSYIQQgghCvX/HKAMJPNFL3QAAAAASUVORK5C\nYII=\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "# use the matplotlib magic to specify to display plots inline in the notebook\n", "%matplotlib inline\n", @@ -304,48 +269,14 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": null, "metadata": { + "collapsed": false, "nbpresent": { "id": "978c1095-a9ce-4626-a113-e0be5fe51ecb" } }, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAJIAAACPCAYAAAARM4LLAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAABJhJREFUeJzt3b8vc28cxvH28UwMJonVYCAmET8WImYxCZGYkEgkgj/A\nImH1IxKiasJGYrAYxCQ2LAaxECo2BoPFd/mm6eeTtNXH1Zue835NvXLk9ESu3L17nx9Nfn5+JoDv\n+vPTB4BooEiQoEiQoEiQoEiQoEiQoEiQoEiQoEiQ+Bv4/VhGrzzJr/wRIxIkKBIkKBIkKBIkKBIk\nKBIkKBIkKBIkKBIkKBIkKBIkKBIkKBIkKBIkKBIkKBIkKBIkKBIkKBIkKBIkKBIkKBIkKBIkKBIk\nKBIkKBIkQt+yHQsfHx8mn5+fm3xycmJyOp02+fn52eTW1laT9/f3TW5sbPyn41RiRIIERYIERYJE\nMvAD2yP5WJtUKmXyxsaGyZeXlyb7/3kymSxp+9DQkMm7u7tfP9jS8VgbhEORIEGRIME6Uh7F1oJm\nZ2ezr6+ursy26upqk7u7u01eWloyuaOjw+TV1dW875VIJBKZTCbfYf8YRiRIUCRIUCRIsI6Uh5+n\nzM3NmZz7f/PnwtbX101ub28v6b2rqqpM9utIfg52d3dncl1dXUnvVwTrSAiHIkGCIkEitutIfp1o\namrK5O3tbZP9PGV4eDj7emtry2zzcxjv4eHBZL+OVGze2tbWZnJNTU3Bvw+BEQkSFAkSFAkSsV1H\nmpiYMHlnZ8fk/v5+k0dGRkweHBzMu+/393eTV1ZWTF5bWzP55eXF5GLXI93c3Jhc5mu2WUdCOBQJ\nEhQJErGZI83MzJjsz6XV19eb/PT0VHB/uetQ/lql3t5ek0u9JruhocHkvb09k0s9d/dNzJEQDkWC\nRGxOkVxfX5vsP07GxsZMPj4+Lri/+fn57Gt/u5Hft8+e3+6Ptdgpl9+AEQkSFAkSFAkSkZ0j+ctE\n3t7eTPZfwRcXFwtuL/QV3i8d+MfSeD09PSZvbm6aXAlzIo8RCRIUCRIUCRKRPUXy+vpqcnNzs8l+\nHlPsNIa/5ejg4CD7enp62mw7OjoquO/Al4F8F6dIEA5FggRFgkRk15Fqa2tNfnx8lO4/dw52cXFh\ntvn51fLyssm/fE70TxiRIEGRIEGRIBHZOVK59fX1ZV/724nGx8dNnpycDHJMP4kRCRIUCRIUCRKR\nPdf2Xf5cXVNTk8m55+oGBgbMtsPDw/IdWHica0M4FAkSFAkSrCPl4e9V82tFudcYLSwsBDmm34wR\nCRIUCRIUCRLMkf53e3trcrFH0+Tei9bS0lK+A6sQjEiQoEiQoEiQiO0cyV9nPTo6arKfE52enprs\nf1407hiRIEGRIEGRIBHbOVIqlTLZ/5ynf0Sx/2krWIxIkKBIkIjNR5v/KEun0yb7r/v+afuV+Di+\nkBiRIEGRIEGRIBHZ25Hu7+9N7uzsNDmTyZh8dnZmMqdAsrgdCeFQJEhQJEhEdh3J33Ltbyfyv7Ld\n1dVV9mOKMkYkSFAkSFAkSER2HQkyrCMhHIoECYoEidDrSF/6vEXlYUSCBEWCBEWCBEWCBEWCBEWC\nBEWCBEWCBEWCBEWCBEWCBEWCBEWCBEWCBEWCBEWCBEWCBEWCBEWCBEWCBEWCBEWCBEWCxH/yKxa+\nn2pIxAAAAABJRU5ErkJggg==\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Image target: [9]\n" - ] - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAJIAAACPCAYAAAARM4LLAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAABPRJREFUeJzt3c0rbW0cxvFFj5eiHAZCRBzTk3CSkaJIkTIxMMBEDBgc\n/4F/QjJQFJMzkRQldToiRCZeJgYmXifeylvyzPazfnfZe3tcFsv+fkbrau299lJX977da++1k56f\nnz3grZI/+gTwNVAkSFAkSFAkSFAkSFAkSFAkSFAkSFAkSPwT8OuxjB4+SfE8iBEJEhQJEhQJEhQJ\nEhQJEhQJEhQJEhQJEhQJEhQJEhQJEhQJEhQJEhQJEhQJEhQJEhQJEhQJEhQJEhQJEhQJEhQJEkF/\nHelLOjs7M3l+fj7q41taWkzOycmRn1PQGJEgQZEgQZEgEao5UmlpaWR7a2vL7Pv27Vug57KzsxPZ\n/vnzp9l3f38f9bnZ2dkmj4+Pm9za2vrGswseIxIkKBIkKBIkkgK+YfubXiw5+b/eb29vm30/fvx4\ny6Fjcuc9lZWVke29vT2zLy8vz+TT09Oox/b/XZ7neRsbGyZXVFTEfZ7vgNvaIDgUCRIUCRKhWkfy\n+/v3r8nvPUc6Pj42eX9/P7Ld3d1t9o2MjJj8+/dvk3t7e02+u7sz+fz8/P+e5odhRIIERYIERYJE\naOdIGRkZgb7ewcFB3I9NTU01ubOz0+SrqyuTh4aGTHbXoVzu2t/m5qbJj4+Pke3a2troJyvCiAQJ\nigQJigSJUF1rS0tLi2zv7u6afWVlZW85dEw3Nzcml5SURLbLy8vNvpWVFZOTkqJfrjo6OjK5oKAg\n6uNvb29Ndv92/2e1Ys234sC1NgSHIkGCIkEiVOtIXV1dke33nhO50tPTTfavBa2trZl97nU5d87z\n9PRkckpKismrq6smLywsmDw9PW1yZmamyYJ50asxIkGCIkGCIkEiVOtI/s9N+9eUPoL/u2dzc3Nm\nX19fn8n5+fkmT05Omvya63ie53lFRUUm//nzx+Ti4uJXHS8G1pEQHIoEiVD9+//Rb2d+379/f3Hf\n6Ojoq45VXV1tck1NjclVVVUmNzc3m5ybm/uq13sPjEiQoEiQoEiQCNUcKUiHh4cmDw4Omjw7OxvZ\njrWE0tHRYfLw8LDJ7sdQwogRCRIUCRIUCRKhukTynpaXl01ua2sz+eLiwuSsrKwXj3V5eWny+vq6\nye660CfHJRIEhyJBgiJBImHXkdyPbri3JHa/fjQzM2NyU1NTZHtsbMzsGxgYUJxiqDAiQYIiQYIi\nQSJh50j9/f0m+28F43met7i4aHJdXd2Lx3p4eIj6Wp/h80LvjREJEhQJEhQJEgkzR3JvHeNe//r1\n65fJ0eZEromJCZMbGxtNLiwsjPtYYcWIBAmKBAmKBImEmSP5fzrU8zzv+vra5KWlJZMbGhpMdn/W\nwX+rGfcnv6ampkyOdeu/r4ARCRIUCRIUCRIJM0eKxb3dXn19fdzP9d+S0PM8r729XXJOYcKIBAmK\nBAmKBImE+V6bu27U09NjsvuZbPcn1P0/GeE+371O5/7MVsjxvTYEhyJBgiJBImHmSLGcnJyY7M5z\ncnJygjydz4Q5EoJDkSDBWxti4a0NwaFIkKBIkKBIkKBIkKBIkKBIkKBIkKBIkKBIkKBIkKBIkKBI\nkKBIkKBIkAj6K9tf//4uCYoRCRIUCRIUCRIUCRIUCRIUCRIUCRIUCRIUCRIUCRIUCRIUCRIUCRIU\nCRIUCRIUCRIUCRIUCRIUCRIUCRIUCRIUCRIUCRL/AhkN/OtmZFaHAAAAAElFTkSuQmCC\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Image target: [8]\n" - ] - } - ], + "outputs": [], "source": [ "%matplotlib inline\n", "import numpy as np\n", @@ -386,8 +317,10 @@ }, { "cell_type": "code", - "execution_count": 4, - "metadata": {}, + "execution_count": null, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "# write your code here for iterating over five batches of \n", @@ -428,21 +361,11 @@ }, { "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [ - { - "ename": "AssertionError", - "evalue": "", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mAssertionError\u001b[0m Traceback (most recent call last)", - "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0minputs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtargets\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mmnist_dp\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 5\u001b[0;31m \u001b[0;32massert\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mall\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mtargets\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msum\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;36m1.\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 6\u001b[0m \u001b[0;32massert\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mall\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mtargets\u001b[0m \u001b[0;34m>=\u001b[0m \u001b[0;36m0.\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 7\u001b[0m \u001b[0;32massert\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mall\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mtargets\u001b[0m \u001b[0;34m<=\u001b[0m \u001b[0;36m1.\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;31mAssertionError\u001b[0m: " - ] - } - ], + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], "source": [ "mnist_dp = data_providers.MNISTDataProvider(\n", " which_set='valid', batch_size=5, max_num_batches=5, shuffle_order=False)\n", @@ -467,11 +390,11 @@ "\n", "Here you will write your own data provider `MetOfficeDataProvider` that wraps [weather data for south Scotland](http://www.metoffice.gov.uk/hadobs/hadukp/data/daily/HadSSP_daily_qc.txt). A previous version of this data has been stored in `data` directory for your convenience and skeleton code for the class provided in `mlp/data_providers.py`.\n", "\n", - "The data is organised in the text file as a table, with the first two columns indexing the year and month of the readings and the following 31 columns giving daily precipitation values for the corresponding month. As not all months have 31 days, some of the entries correspond to non-existing days. These values are indicated by a non-physical value of `-99.9`.\n", + "The data is organised in the text file as a table, with the first two columns indexing the year and month of the readings and the following 31 columns giving daily precipitation values for the corresponding month. As not all months have 31 days some of entries correspond to non-existing days. These values are indicated by a non-physical value of `-99.9`.\n", "\n", " * You should read all of the data from the file ([`np.loadtxt`](http://docs.scipy.org/doc/numpy/reference/generated/numpy.loadtxt.html) may be useful for this) and then filter out the `-99.9` values and collapse the table to a one-dimensional array corresponding to a sequence of daily measurements for the whole period data is available for. [NumPy's boolean indexing feature](http://docs.scipy.org/doc/numpy/user/basics.indexing.html#boolean-or-mask-index-arrays) could be helpful here.\n", " * A common initial preprocessing step in machine learning tasks is to normalise data so that it has zero mean and a standard deviation of one. Normalise the data sequence so that its overall mean is zero and standard deviation one.\n", - " * Each data point in the data provider should correspond to a window of length specified in the `__init__` method as `window_size` of this contiguous data sequence, with the model inputs being the first `window_size - 1` elements of the window and the target output being the last element of the window. For example, if the original data sequence was `[1, 2, 3, 4, 5, 6]` and `window_size=3` then `input, target` pairs iterated over by the data provider should be\n", + " * Each data point in the data provider should correspond to a window of length specified in the `__init__` method as `window_size` of this contiguous data sequence, with the model inputs being the first `window_size - 1` elements of the window and the target output being the last element of the window. For example if the original data sequence was `[1, 2, 3, 4, 5, 6]` and `window_size=3` then `input, target` pairs iterated over by the data provider should be\n", " ```\n", " [1, 2], 3\n", " [4, 5], 6\n", @@ -489,37 +412,14 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": null, "metadata": { + "collapsed": false, "nbpresent": { "id": "c8553a56-9f25-4198-8a1a-d7e9572b4382" } }, - "outputs": [ - { - "ename": "AttributeError", - "evalue": "'MetOfficeDataProvider' object has no attribute '_curr_batch'", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mAttributeError\u001b[0m Traceback (most recent call last)", - "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 10\u001b[0m \u001b[0max\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mset_ylabel\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'Normalised reading'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 11\u001b[0m \u001b[0;31m# iterate over data provider batches checking size and plotting\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 12\u001b[0;31m \u001b[0;32mfor\u001b[0m \u001b[0minputs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtargets\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mmet_dp\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 13\u001b[0m \u001b[0;32massert\u001b[0m \u001b[0minputs\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mshape\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mbatch_size\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mwindow_size\u001b[0m \u001b[0;34m-\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 14\u001b[0m \u001b[0;32massert\u001b[0m \u001b[0mtargets\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mshape\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mbatch_size\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m~/mlpractical/mlp/data_providers.py\u001b[0m in \u001b[0;36m__next__\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 204\u001b[0m \u001b[0;31m# inputs, targets, batch_size, max_num_batches, shuffle_order, rng)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 205\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m__next__\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 206\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mnext\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", - "\u001b[0;32m~/mlpractical/mlp/data_providers.py\u001b[0m in \u001b[0;36mnext\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 78\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mnext\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 79\u001b[0m \u001b[0;34m\"\"\"Returns next data batch or raises `StopIteration` if at end.\"\"\"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 80\u001b[0;31m \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_curr_batch\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0;36m1\u001b[0m \u001b[0;34m>\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mnum_batches\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 81\u001b[0m \u001b[0;31m# no more batches in current iteration through data set so reset\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 82\u001b[0m \u001b[0;31m# the dataset for another pass and indicate iteration is at end\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;31mAttributeError\u001b[0m: 'MetOfficeDataProvider' object has no attribute '_curr_batch'" - ] - }, - { - "data": { - "image/png": "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\notZ/Ak1OzeQ8QqaKAAAAAElFTkSuQmCC\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "batch_size = 3\n", "for window_size in [2, 5, 10]:\n", @@ -538,35 +438,28 @@ " ax.plot(np.c_[inputs, targets].T, '.-')\n", " ax.plot([window_size - 1] * batch_size, targets, 'ko')" ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] } ], "metadata": { "anaconda-cloud": {}, "kernelspec": { - "display_name": "Python 3", + "display_name": "Python [default]", "language": "python", - "name": "python3" + "name": "python2" }, "language_info": { "codemirror_mode": { "name": "ipython", - "version": 3 + "version": 2.0 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.6.2" + "pygments_lexer": "ipython2", + "version": "2.7.12" } }, "nbformat": 4, - "nbformat_minor": 1 -} + "nbformat_minor": 0 +} \ No newline at end of file