{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import matplotlib\n",
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "import pandas as pd"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Data for plotting\n",
    "t = np.arange(0.0, 2.0, 0.01) # generate range and store in t\n",
    "s = 1 + np.sin(2 * np.pi * t) # Define: s = 1 + sint(2{\\pi}t)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "fig, ax = plt.subplots() # suboplots not needed here for one plot\n",
    "ax.plot(t, s) # plots s as a function of t"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "fig, ax = plt.subplots()\n",
    "ax.set(xlabel='time (s)', ylabel='voltage (mV)', title='Adding labels')\n",
    "ax.plot(t, s) # Above plot had no labels. That is fixed here. X and Y axes are labeled, as is the figure"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "fig, ax = plt.subplots()\n",
    "ax.set(xlabel='time (s)', ylabel='voltage (mV)', title='Adding labels')\n",
    "ax.grid() # This time we are adding a grid with default width along both axes\n",
    "ax.plot(t, s)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "fig.savefig(\"test.png\") # to save image as a png file\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAY0AAAEWCAYAAACaBstRAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAIABJREFUeJzs3Xd8VFXawPHfM5NKTUITAiQ0QaQICQpiQV1FFBXL+lp2bauur2VddVVc17Krrl13XfVV7L0roiiICrKolITeghAIJKGmUNKTed4/5gZDmEkm5E4/389nPsncubnnuZPknjnlPkdUFcMwDMPwhSPYARiGYRjhw1QahmEYhs9MpWEYhmH4zFQahmEYhs9MpWEYhmH4zFQahmEYhs9MpWFEBRG5X0Te9sNxE0XkCxHZLSIf2X38FsShItL/EH92johcbXdMRmQylYYRUqwLWImIxPuwXyhc6C4AugGdVPW3jV8UkctFJFtE9ohIvog8JiIxgQ+z9UQk3aqcwjJ+wx6m0jBChoikA8cDCpwd1GB8lwasU9VaL6+3Af4MdAaOAU4B/hKg2AzDdqbSMELJZcB84HXgcm87ichDuCuXZ0Vkn4g8a23/t4hssT7VZ4vI8U0cY7SI/CQipSKyTETGNbHvEVbLplREVonI2db2vwP3Av9jxfGHxj+rqv+nqv9V1WpVLQDeAcZ6KUdE5GkR2WF1dy0XkSHWawe0rETkChGZ1+gQZ4hIrojsEpHHRcTRYN8fReQ/1nHXisgpXmJwiMjfRCTPiuNNEelovTzX+lpqne8YEekvIj9Yx90lIh94ex+NyGCamUYouQx4ClgAzBeRbqq6vfFOqnq3iIwF3lbVlxu8tAj4B7AbuBn4SETSVbWy4c+LSCowHfg9MAP3p/9PRGSQqu5stG8s8AXwKnAacBzwuYhkqup9IqJAf1X9nY/neAKwystrp1mvH26dwyCg1MfjApwLZALtgG+BHKD+/TkG+Bh3i+c84FMR6aOqxY2OcYX1OAnYAbwJPIv7vToB2Agk1besROQ94Btr/zirfCOCmZaGERJE5DjcXT0fqmo2sAG4pCXHUNW3VbVIVWtV9UkgHhjoYdffAV+p6leq6lLVWUAWcIaHfUfjvgg/YrUWvge+BC5uSWwAInIl7ovqE152qQHa464sRFXXqOrWFhTxqKoWq+pm4F+NYtwB/EtVa1T1A9wVypkejnEp8JSq5qrqPuAu4KImxjFqcP/eeqhqpao2bv0YEcZUGkaouBz4RlV3Wc/fpYkuKk9E5DYRWWN1lZQCHXF/sm4sDfit1d1Uau17HNDdw749gC2q6mqwLQ9IbWFsk4BHgAkNzvEAVoX0LPAcsF1EpohIhxYUs6VRjD0aPC/QA7OTNn69Xg/rtYb7xeAe7PfkDkCAhVbX3VUtiNcIQ6bSMIJORBKBC4ETRWSbiGwDbgGGi8hwLz92QHpma/ziTus4yaqahLuLRzz87BbgLVVNavBoq6qPeNi3EOhVPz5g6Q0UtOD8TgdeAs5S1RVN7auqz6hqBnAk7m6q262XynAPqtc7zMOP92oUY2GD56kiIk28Xq8Qd6XacL9aYDuN3nMr3m2qeo2q9gD+CDx/qFN/jfBgKg0jFEwC6oDBwFHW4wjgv7jHOTzZDvRt8Lw97ovbTiBGRO4FvH1Kfxs4S0TGi4hTRBJEZJyI9PSw7wLcF+w7RCTWGjA/C3jflxMTkZNxD36fr6oLm9l3lIgcY42jlAGVuN8XgKXAeSLSxrooHzToDtwuIski0gv3mE7DQemuwJ+sc/gt7vf3Kw/HeA+4RUT6iEg74J/AB9YYxk7ARYP3XUR+2+B9K8FdsdRhRCxTaRih4HLgNVXdbH1y3aaq23B31VzqpT/938AF4r6n4xlgJvA1sA53l0olB3bX7KeqW4BzgL/ivhBuwf2J/qD/B1Wtxj39dwKwC3geuExV1/p4bvfg7ib7yppxtE9EvvaybwfcLZIS6xyK+HX842mgGndl+Qbuiqixz4Fs3BXMdOCVBq8tAAZY5/AQcIGqFnk4xqvAW7hnSm3E/T7eBKCq5dbP/mh1640GRgELRGQfMA24WVU3NvmOGGFNzCJMhhHZROQK4GpVPS7YsRjhz7Q0DMMwDJ+ZSsMwDMPwmemeMgzDMHxmWhqGYRiGzyIujUjnzp01PT092GEYhmGElezs7F2q2qW5/SKu0khPTycrKyvYYRiGYYQVEclrfq8gd0+JyKtWJs2VXl4XEXlGRNZbGT9H+iuWqUsKGPvI9/SZPJ2xj3zP1CU+3/BrGIYRNYI9pvE6cHoTr0/AfUPSAOBa4P/8EcTUJQXc9ekKCkorUKCgtIK7Pl1hKg7DMIxGfKo0rFQLPUSkd/3DjsJVdS7QODVzQ+cAb6rbfCBJRDwllWuVx2fmUFFzYOaDipo6Hp+ZY3dRhmEYYa3ZMQ0RuQm4D3f6gvpMnwoM82Nc9VI5MBVEvrXtgHTRInIt7pYIvXu3vD4rLK1o0XbDMIxo5ctA+M3AQC95avzNU4ZST5k2pwBTADIzM1t840mPpEQKPFQQPZISW3oowzCMiOZL99QW3CmmgyGfA9M998RzOudWuX38QBJjnQdsS4x1cvt4T+v3GIZhRC9fWhq5wBwRmQ5U1W9U1af8FtWvpgE3isj7uJer3N3Clcx8MmmEez2dx2fmUFBagUPggXOO3L/dMAzDcPOl0thsPeKsh22s9YXHAZ1FJB/32EksgKq+gDvf/xnAeqAcuNLO8huaNCKVSSNSmZ2zgytfW0RiXMTdwmIYhtFqzV4ZVfXvACLS3v1U99lVuKo2uc6ytTzlDXaV54sTBnQhNSmRdxfmceYw2ydqGYZhhLVmxzREZIiILAFWAqtEJFtEjvR/aMHhdAgXjerFj+uL2LSrLNjhGIZhhBRfBsKnALeqapqqpgG34V5dLGJdOKoXTofw/iKPC78ZhmFELV8qjbaqOrv+iarOAdr6LaIQ0K1DAqcM6srH2VuornU1/wOGYRhRwpdKI1dE7hGRdOvxN9xrB0e0i4/pza591cxavT3YoRiGYYQMXyqNq4AuwKfAZ9b3fpvFFCoaDogbhmEYbr7MnioB/hSAWEJK/YD4k7PWsWlXGemdI7pHzjAMwydeKw0R+Zeq/llEvsBz6o6z/RpZCLhwVC+emrWOif+ZR1lVLT2SErl9/EBz059hGFGrqZbGW9bXJwIRSCj6eUMRIrCvqhb4NWU6YCoOwzCiktcxDVXNtr49SlV/aPgAjgpMeMH1+MwcXI3aWCZlumEY0cyXgfDLPWy7wuY4QpJJmW4YhnGgpsY0LgYuAfqIyLQGL7UHgpEmPeBMynTDMIwDNTWm8RPuxY46A0822L4XWO7PoELF7eMHctenKw5Y1c+kTDcMI5p5rTRUNQ/IA8YELpzQUj/Y/dBXa9i5t4rkNrHcd5ZJmW4YRvTyJWHhaBFZJCL7RKRaROpEZE8gggsFk0ak8vPkk2kT5+Ts4T1MhWEYRlTzZSD8WeBi4BcgEbga+I8/gwo1MU4Hw3smkb25JNihGIZhBJUvlQaquh5wqmqdqr4GnOTfsEJPRloya7bupby6NtihGIZhBI0vlUa5iMQBS0XkMRG5hQjPcuvJyLQk6lzKsi3BWi7dMAwj+HypNH4POIEbgTKgF3C+P4MKRSN6JQOw2HRRGYYRxXxJWFif5rUC+Lt/wwldyW3j6NelLYvzTKVhGEb08trSEJEVIrLc28OOwkXkdBHJEZH1IjLZw+tXiMhOEVlqPa62o9xDNbJ3Mos3l+BeutwwDCP6NNXSmOjPgkXECTwHnArkA4tEZJqqrm606weqeqM/Y/FVRloyH2Xns3FXGX27tAt2OIZhGAHX3M19/nQ0sF5VcwFE5H3gHKBxpREyRqa5xzWy80pMpWEYRlRqqntqr4js8fDYa9PNfanAlgbP861tjZ1vdYl9LCK9vMR6rYhkiUjWzp07bQjNs/5d2tE+IYbFm0v9VoZhGEYoayo1entV7eDh0V5VO9hQtngqttHzL4B0VR0GfAu84SXWKaqaqaqZXbp0sSE0zxwOYUTvZDMYbhhG1GqqpdHB+pri6WFD2fm4p+/W6wkUNtxBVYtUtcp6+hKQYUO5rZLRO5l1O/ayp7Im2KEYhmEEXFP3abxrfc0Gsqyv2Q2et9YiYICI9LFuHrwIaJiCHRHp3uDp2cAaG8ptlYy0ZFRhqemiMgwjCjU1ED7R+trHHwWraq2I3AjMxH3z4KuqukpE/gFkqeo04E8icjZQCxQTAos/De/VERH3YPgJh/uvK8wwDCMUNXtzn4icC3yvqrut50nAOFWd2trCVfUr4KtG2+5t8P1dwF2tLcdO7RNiGditfdjdGT51SQGPz8yhsLSCHkmJ3D5+IJNGpHrdbhiG4UmzlQZwn6p+Vv9EVUtF5D6g1ZVGuBqZlswXSwtxuRSHw9N4fmiZuqTggMWkCkoruOvTFWTlFfNJdsFB2wFTcRiG4ZEvuac87eNLZROxMnons7eqll927At2KD55fGbOAasPAlTU1PHO/M0etz8+MyeQ4RmGEUZ8qTSyROQpEeknIn1F5Gncg+FRq+FNfuGg0MM653Dw/Obm9jcMw/Cl0rgJqAY+AD4CKoEb/BlUqEvv1IaUtnFhM65xWMcEj9ud4rlrrUdSoj/DMQwjjPmS5bYMmAz780W1tbZFLRFxJy8Mk5ZGalICW3dXHrAtMdbJ+RmpB4xp1Lv82LRAhmcYRhjxZY3wd0Wkg4i0BVYBOSJyu/9DC20j05LI3VVGcVl1sENp0vdrt5OVV8r4wd1ITUpEgNSkRB4+bygPThrKw+cN3b+9W4d42sY5efPnPHbsrWzu0IZhRCFpLs23iCxV1aNE5FLcd2TfCWRbqT1CTmZmpmZl2XHvYdOemLmWZ2dvANwX4VCcqrqnsobTnppLx8RYvrjpOOJimu+NXLqllIunzCelbSwuhW27K81UXMOIAiKSraqZze3ny5hGrIjEApOAz1W1Bu9jqFFh6pICXp63cf/z+qmqU5cUBDGqgz381Rp27K3ksQuG+VRhABzVK4nfj+lNQWklW3dXooTu+RmGEXi+XEleBDbhXhd8roikAXZkuQ1bj8/MobLGdcC2UJuq+uP6Xby3cAvXHN+X4b2SWvSz05dvO2hbqJ2fYRjB4ctA+DPAMw025YnISf4LKfR5m5Ia7KmqDe/udjiEzu3iuOXUw1t8nFA9P8Mwgs+XgfCO1n0aWdbjSdytjqjlbUpqMKeq1t/1XVBagQJ1LmVPZS0zVh7camhOKJ6fYRihwZfuqVeBvcCF1mMP8Jo/gwp1t48fSGKs84BtibFObh8/MEgReb7ru7rWdUhdSp7OL9YpQT0/wzBCgy/pQPqp6vkNnv9dRJb6K6BwUD+L6PGZORSUVpAY6+Dh84YGdXaRnV1KDc+vsLSCWKcDpwNODMOsviZRo2HYy5dKo0JEjlPVeQAiMhaI+s7tSSNSmTQilRveXcySvJKgX3B6JCVS4KGCONQupfrzA1i7bQ9nPjOPJ2fl8OCkoa2KM5A8JWqc/Olyk6jRMFrBl+6p64DnRGSTiGwCngX+6NeowkhmWjKFuyuDPkh8+/iBxDoPTAtiV5fZoMM68PvRaby7YDMrC3a3+nh2m7qkgLGPfE+fydMZ+8j3TF1SgKrywJerD+qyq6xx8bZJ1GgYh6zZSkNVl6nqcGAYMExVR6jqcv+HFh4yrOSFwc5DNWlEKod1SCDGIQfc9W3XJ+dbTj2c5DZx3D9tFc3dEBpIjScAFJRWcPvHyzj24e8oauHd+oWlFR4rIMMwfuVzinNVjep7M7w5onsHEmIdZOeVMHFYj6DFsWbrHraUVHDfWYO5cqz9iy12TIzljtMHcucnKxj5wCxKy2tCYizA0wSAmjpl575qktrEUlp+8FruThHqPFR8Ctz24VLqrJfCudvKjNkY/hLV62LYIdbpYHjPpKCnSf8wawtxTgeTjvLfhSHO4UAESqwLcShcVL11C9a5lPvPOvKAMQ3wnqgxIdYBCpW1nm/aDNULrqfKAfC46FY9U5kYrWEqDRtkpCXz4txcyqtraRMX+Le0qraOqUsKOPXIbiS3jfNbOU/MWkfjD+jBvqh265jAtt0HJ1fskZR40CywhhfJzLSUg7bf8oHnSYHBHq/yxuNA/yfLiXU6PI7Z3P3ZCmpcSrVVMYZzZdLSWXGm5WUfr1c4ETmvqR9U1U9bW7iInA78G3ACL6vqI41ejwfexJ0osQj4H1Xd1Npy7ZaZnszzc5Tl+bsZ3bdTwMv/dvUOSspruDCzl1/LCbU7xTcXlVNbW3fQ9oYTABrOAmvI0/b6KdSNxTiF/3z3C+8v2hKUi463C97DX685eKC/1nVQa6leWfXB71VFTR13frIMVaG6LrQqk6YqgJYsX9zUbLmmzs/fFU1Txw/lStFrllsRqb+BrytwLPC99fwkYI6qNlmpNFuwe22OdcCpQD6wCLhYVVc32Od63IPv14nIRcC5qvo/TR03UFluGyopq2bEA7O4ffxAbjipf0DLBrj81YX8sn0v/73zZJx+XLN87CPfe7yopiYl8uPkk/1Wbr2G/xid28dTUV1LjNPB5WPS+Tg7v9X/MI0vRgBxTvfEgqq6A/9PEmOdAbk3x1NMMQ6hS7s4tu6p8mvZ7eOd1Lj0gDxrDc+7pReqllzwgIPOOz7GwXUn9uWtn/Mo9jBW5Y3gOcNq2zgntS6lqvbg8/NUfsPXWntBb+743rtV86lo8PtIiHVw1rAefLG80Ovvyef3yccst76kRv8SuEZVt1rPuwPP2VBpjAHuV9Xx1vO7AFT14Qb7zLT2+VlEYoBtQBdtIuhgVBoApzw5h/RObXnlilEBLbewtIKxj37PTSf159bT/HvHtrcL2BO/HR6Ui6cAkycM5I8n2ldRe/oHf3TG2oMWsQL7K0tPZXtr/cQ5HSTEOthTWXvQa0mJsVTVug666CTEOvaPR7VGj6QE7hg/qEUXVWjqQnjg+FKsU3CKeG0x+VusU3CIHFCZ1Gsb56SmTve3ysBdmU0YchgzVm47IOb4GAenDu7KrNU7DjhWrFOIdToo99DyS4hxoOCx7JZq6d+nr5WGLx3w6fUVhmU70PIseAdLBbY0eJ4PHONtH1WtFZHdQCdgV8OdRORa4FqA3r172xBay2WkJfPN6u2oKuJlGVV/+CQ7H1W4IMO/XVNw8J3i8bEOampdDO3Z0e9le5olpcCbP2+2tdLw1G3lbayjoLQCVeXzpYWt7hrw1OVy+8fLqKnz/Pmops7FYxcM83ghvv/sIwHfL9wtrUwKSys9xlZRU8c9U1dQU6f7L54FpRXc+cly4mM8j7O8PX+zh3NTappYfaFr+3h27D24leVtVpy37d64z8vz/p66+KpqXUxdWuhx+5ceMkbX1Ck1dQcfBw6eiNEa/uo29qXSmGN94n8P9zt5ETDbhrI9XVkb/6Z82QdVnQJMAXdLo/WhtVxGWjIfZuWzYWcZ/bu2C0iZLpfyUXY+x/brRO9ObQJSZsOL6o69lZz61Fwmf7KcD64dg8OPXWPBHE/xdrc9wPGPzmbH3iqP4wHeKg5vLQpPU4ebiqmpgf6mym9tZdIu3sm+Ks8Xvb0etlfVumz55Ay/Lnjma6ulqe3ezi/VyqLg7XfuT02V3dJK0V8JRn1JjX6jiJwLnGBtmqKqn9lQdj7Q8ONxT6BxdV2/T77VPdURKLahbNtlpKUAsDivJGCVxoKNxWwuLufWQ0h/boeu7RO4Z+Jg/vLRMt6an8flx6b7rayUtnEeb9YLROZdzxcpB+eOSOWDrHzqXAd/4q6/u9yX6bBNtSjcZTkPuuA1N9DvTVP7+1qZPDhpqNdus5bydsHz1sXWsFL0dVact+3ezu9QKtKWXtCbOj9vZbe0UvRXglFf54cuBvaq6rci0kZE2qvq3laWvQgYICJ9gALcLZhLGu0zDbgc+Bm4APi+qfGMYOrbuS1JbWLJzivhwlH+7Sqq/6RaUFqB4O6qCJbzR6YybVkhj85Yy8mDutIrxf4Wz/zcInZXVB80oBmozMJNXaTeW7jF4880rgwKSiu44+PlxDilRS2K1AYtEX/OjGlJZVK/X0suqt4ukt4ueN662Bq2onydFXeo5+fpNW/n3dILenPn5+21llSKAZ89tX8HkWtwjxekqGo/ERkAvKCqp7S6cJEzgH/hnnL7qqo+JCL/ALJUdZqIJABvASNwtzAuUtXcpo4ZrIFwgKteX8Tm4nK+vfVEv5XhaUA4UDN5vMkvKefkJ+YgIlTXulr9R9uw+6ZTu3j2VFST1qktlx+bxv/NyQ2pufbeZpQdCk8timBnT27KocwKCvZ0UTuE8nTY1rBz9tRS4GhggaqOsLatUNWQTHcazErjudnreXxmDkvvPZWkNv65yS7Y0149mbqk4KAulkO94HmbJfX3swdz2bH2p0dpLW+VeOPWRHMC1aIIhHC5SBoHsnP2VJWqVtfPCLLGFkKyiyjYRvb+NXnhyYO6+aWMULvBDtyfHj3NpDmUO8W9zZJ6ce7GkKw0vHVdeevzb66vPhIurpFyHoZnvlQaP4jIX4FEETkVuB74wr9hhaejeiXhdAjZef6rNOxeN8MOdlZkoVgpNsfbRbIl02HNRdYIF75UGpOBPwArcK+j8RXwsj+DCleJcU6O7NHBr8kLbx8/kL98tIxa14FdQcFcitVbRdYhMaZF963sq6olwUvXTritT36o02ENI9T5MuXWJSJvAAtw9xTkhOoMplAwsncyHyzaQk2di1inL2tctcw5R/XgH1+uoqyqzpZBZzt4mpLqENhdUctdn64gMy2Zp7/9pckBws7t41GXu9smxiEhVSkeKtNNY0SiZisNETkTeAHYgHtMso+I/FFVv/Z3cOEoIy2Z13/axNqte/1yp3R2XgnFZTU8+dvhnJ/R0/bjHwpPn6r/curhrN+1j+dmb+DDrC3U1wHeksjttO7wvenk/vTr0s503xhGiPKle+pJ4CRVXQ8gIv2A6YCpNDzYtc998Tvr2Xn7Z8TYecH7ZHEBibFOTh9ymG3HtIO3T9XvLth80Lx9b+kjAD5dXMCPk082lYRhhChf+k921FcYllxgh5/iCWtTlxTw2Ixf15mu/1Rt15KhlTV1TF9eyPgju9E2PjyWQvG0cl5TQnnA2zAM3yqNVSLylYhcISKX4545tUhEzmtuzY1o42m6aMOUEq01e+0O9lTWcu7I0OiW8oW3AWynl8HxcBvwNoxo40ulkYA7s+2JwDhgJ5ACnAVM9FtkYcjf00U/XVJA1/bxjO0X+IWeDtXt4weSGOs8YFtirJOLj+nlcXs4DngbRjTxZfbUlYEIJBL48x6KkrJq5uTs4Ipj04nxw6wsfzmU5HKGYYQuX2ZP9QFuAtIb7q+qZ/svrPDkLRuqHZ+ev1xeSE2dcu6I8OmaqncoSeQMwwhNvoymTgVewT2WEbx0qmGg4afq+hbHlWP72HJh/HRJAYMOa8/gHh1afSzDMIxD5UulUamqz/g9kghR/+m5sqaOUQ9+y3Yb1nHeuKuMJZtLuWvCIBsiNAzDOHS+dI7/W0TuE5ExIjKy/uH3yMJcQqyTCUMPY8bKrVR4WCKyJT5bUoAInHOU6coxDCO4fGlpDAV+D5zMr91Taj03mnDeyJ58mJXPN6u3HdIF351mYy0FpZXExziYn1tkxgAMwwgqXyqNc4G+qnrwWptGk45OTyE1KZFPFhe0uNJovE5DVa2r2bWnDcMw/M2X7qllQJK/A4lEDodw7ohU5v2ykx17Klv0s/6+UdAwDONQ+FJpdAPWishMEZlW//B3YJHi3JGpuBQ+X1rYop8Lx3UlDMOIfL50T93n9ygiWL8u7RjesyOfLingmhP6+vxzobjYkmEYRrMtDVX9wdOjNYWKSIqIzBKRX6yvyV72qxORpdYjbFs3543syZqte1izdY/PP3PmsIOz2Jo0G4ZhBFuzlYaIjBaRRSKyT0SqrQu571c/zyYD36nqAOA767knFap6lPUI2zvQzxregxiH8JmP2W6rauuYtXoHXdrF0aNjAgKkJiXy8HlDzSC4YRhB5Uv31LPARcBHQCZwGTCgleWegzv5IcAbwBzgzlYeM2SltI1j3MCuTF1SwJ2nD8LpaHr501fmbWTjrjLeuOpoTjy8S4CiNAzDaJ5Pme+s9TScqlqnqq/x6wX/UHVT1a3WsbcCXb3slyAiWSIyX0QmeTuYiFxr7Ze1c+fOVobmH+eNTGXH3iqOfuhb+kyezthHvve4zsbW3RX857v1nDa4m6kwDMMIOb60NMpFJA5YKiKPAVuBts39kIh8C3haXu7uFsTXW1ULRaQv8L2IrFDVDY13UtUpwBSAzMzMkFy/vKyqFoCiMvftLvULNMGB9108NH0NLlXumTg48EEahmE0w5eWxu+t/W4EyoBewPnN/ZCq/kZVh3h4fA5sF5HuANZXjysBqmqh9TUXdxfWCB/iDUn/+vaXg7Y1vu/ipw27+HL5Vv53XD96pbQJZHiGYRg+8WU9jTwR6WJ9/3ebyp0GXA48Yn39vPEO1oyqclWtEpHOwFjgMZvKD7im7ruYuqSAx2aupbC0EqdDSDXTag3DCFFeWxridr+I7ALWAutEZKeI3GtDuY8Ap4rIL8Cp1nNEJFNEXrb2OQLIEpFlwGzgEVVdbUPZQeHt/goFbvtoGYWl7jvG61zKvZ+vsm1dccMwDDs11T31Z9yf7kepaidVTQaOAcaKyC2tKVRVi1T1FFUdYH0ttrZnqerV1vc/qepQVR1ufX2lNWUGm6dlT+OcDmKdQp3rwGEYky7EMIxQ1VSlcRlwsapurN9gjS38znrNaIFJI1J5+LyhpCYl7r/v4rELhlFb53nc3qQLMQwjFDU1phGrqrsab1TVnSIS68eYIpan5U0brvLXkEkXYhhGKGqqpdFUKnSTJt0mnrqtTLoQwzBCVVMtjeFe0oUIkOCneKJOw3XFC0sr6JGUyO3jB5p0IYZhhCRRDcl74Q6ZiOwE8lpxiM7AQd1yES7azjnazhfMOUeL1pxzmqo2m4Yi4iqN1hKRLFXNDHYcgRRt5xxt5wuqZ5sYAAAgAElEQVTmnKNFIM7Zp9xThmEYhgGm0jAMwzBawFQaB5sS7ACCINrOOdrOF8w5Rwu/n7MZ0zAMwzB8ZloahmEYhs9MpWEYhmH4zFQaFhE5XURyRGS9iHhbszxiiMirIrJDRFYGO5ZAEZFeIjJbRNaIyCoRuTnYMfmbiCSIyEIRWWads13LG4Q0EXGKyBIR+TLYsQSKiGwSkRUislREsvxWjhnTcP+BAetwp2nPBxbhTtYYtqnYmyMiJwD7gDdVdUiw4wkEa8Gv7qq6WETaA9nApAj/PQvQVlX3WTnj5gE3q+r8IIfmVyJyK5AJdFDVicGOJxBEZBOQ6SlnoJ1MS8PtaGC9quaqajXwPnBOkGPyK1WdCxQHO45AUtWtqrrY+n4vsAaI6Hwt6rbPehprPSL6k6KI9ATOBF5ubl+j5Uyl4ZYKbGnwPJ8Iv5hEOxFJx7188ILgRuJ/VlfNUtzLKs9S1Ug/538BdwCuYAcSYAp8IyLZInKtvwoxlYabeNgW0Z/GopmItAM+Af6sqp6SckYUVa1T1aOAnsDRIhKx3ZEiMhHYoarZwY4lCMaq6khgAnCD1QVtO1NpuOUDvRo87wkUBikWw4+sfv1PgHdU9dNgxxNIqloKzAFOD3Io/jQWONvq338fOFlE3g5uSIGhqoXW1x3AZ7i73W1nKg23RcAAEekjInHARcC0IMdk2MwaFH4FWKOqTwU7nkAQkS4ikmR9nwj8Blgb3Kj8R1XvUtWeqpqO+//4e1X9XZDD8jsRaWtN7kBE2gKnAX6ZGWkqDUBVa4EbgZm4B0c/VNVVwY3Kv0TkPeBnYKCI5IvIH4IdUwCMBX6P+9PnUutxRrCD8rPuwGwRWY77w9EsVY2aaahRpBswT0SWAQuB6ao6wx8FmSm3hmEYhs9MS8MwDMPwmak0DMMwDJ+ZSsMwDMPwWUywA7Bb586dNT09PdhhGIZhhJXs7OxdvqwRHvKVhoi8CtTfsNPsTUnp6elkZfktV5dhGEZEEpE8X/YLh+6p1wnQzUjZeSU8N3s92XklgSjOMAzDNoG6foV8S0NV51p5gvwqO6+Ei6b8TJ1LiYtx8M7Vo8lIS/Z3sUaEy84rYX5uEaP7djrg78nbdsM4FIs2FXPpywuorXP5/foV8pWGL6zkXNcC9O7d+5CO8c3qbdTUue9Zqaxx8bfPVnDJ6DSOTk9hb2UNCzYWm39ww2cV1XU8OSuHV/67cX8Ss3bxTmKcDmrrXOyrqgMgzungvWuOISM9JXjBGmElO6+Eeb/sJLltHHsqali4qYT5G4qornPnZ6ypdTE/t8hv16qwuLnPaml86cuYRmZmph7KmEZ9TV1T60IEOibGUlJe82sMQHyMg3euMS0Qw7vd5TW8NX8Tr/24iaKy6v3bBRjRO4mhqR1ZUbCbxZtL97/WtX0890wczBlDu+N0eMqdaRhuX6/Yyg3vLsbV4LI9sFt70jq1YXbOjlb1lIhItqpmNrdfRLQ07DAqPYX3rhm9v8tgZO8kthRX8PDXa/h65TYUqKx18fnSAlNpGAf5dvV2Xpy7gRX5u6msdXHyoK6cPKgrD05fTU2ti9gYB3efOZiMtGSy80q49OX51NS6cDiEGKdw03tLeOKbHE4/8jDaxDk5bkAX83dm7KeqfJSdz92frdhfYTgEbjipP7edNhAIXJenaWk0o/4fvLrWhUvB6YDbThvIH0/oZz4VGgD8+7tfeHrWOsD9j/zEb4dz3siegG9jGiN6JfHN6m08PjOHDTvLAHer9l3TqjWAon1V/PWzFcxctZ0jurcnd2cZtXXuDyJ2jl1ETEvDSqw3DugsIvnAfar6SqDKz0hL5p2r3S2QI3t04KOsfB6bkcP3a3Zw1dg+bCwqM2MdUey1HzfurzDA3Q21dXfl/ucZacke/zYabz99SHc27NzHk9+sw6VQVeti6hLTqo1m2XklvLMgj+/W7KCiuo6/njGIPxzXl6VbSoM6iSIsWhotYXdLozFV5fOlhfz1sxWUV9e5xzpizWyraKOqPPFNDs/N3sDR6cksz99NTSs//TVs1aq6WxsvXZ7J8QOavd/KiDALNxZx8UsLqHMpAjx54a+tV3+JmJZGqBERJo1IZe22PbzwQy4KVPt5toIRWmrrXNz92Uo+yNrCxUf34oFzhrAsf3erP/01bNUO7NaeJ77J4arXF/HkhUdx9vAeNp+FEapcLuXv01ZTZw1eOOTA1muwmUrjEJ06+DBe/3ETldZYR9s4Z7BDMvysfqrjvPW7WLSphD+d3J9bTj0cEfHaDdVSDY8zqk8K17yRxc3vL2HZ5hJS2sWbrtAo8OiMtazauocYh6CqxMY4GN23U7DD2s90T7VCdl4JP+Ts4POlhRSVVfP+taMZktoxIGUbgZWdV8IlL82nqtY9F/7q4/rwt4mD/V5uZU0dl72ygIWbSkxXaBR4+b+5PDh9DZeNSeOc4T2YH8D7w3ztngqHNCIhKyMtmVtPG8iH142hY2IsV7y2kLyismCHZfjBzxt27a8wHALJbeMCUm5CrJPjD3ePaShQVePuCjUiz9QlBTw4fQ1nDD2M+846koz0FG44qX/IfUAwlYYNunVI4I2rjqbOpVz26kJ27q0KdkiGzTYXlwPu2VFxAe4uOLZfZxJi3f+qCqQEqMIyAmfuup385aNlHNMnhacuPCqkp/Ob7ikbLd7s7sLo0TGBs4ancsLh5gatSDAnZwdXvr6IEwZ05ug+KYzu2zngv9f6rtD3F23GIQ6m/+k4OrWLD2gMhv2y80qYuqSAD7O20KdzWz68bgwdEmKDEouv3VOm0rDZlLkb+OdXawFIMP3PYW9LcTlnPTuPwzok8Nn1Y0kM8oSHlQW7Of//fiIzPZk3rzompD+RGk1rOE4mwEuXZfKbwd2CFo8Z0wiSmjr3vGow/c/hrrKmjuvfWUydS3nhdxlBrzAAhqR25IFJQ/hxfRFPfpMT7HCMVmg4TiYCOdv3Bjki35hKw2aj+3YivkH/c7cOpgshXP39i1WsKNjNUxceRXrntsEOZ78LM3tx0ahePD9nA7NWbw92OMYhqr/3wiGBHydrDXOfhs3qb9Cak7ODt+fnMWVuLhOH9SAhNvifUg3fZOeV8NJ/c5mxchvXj+vHqUHsMvDm/rOPZFXhHm79cCmPnDeUTUXl5h6OMLKqcDcfZm1hTN8UjhvQOSjjZIfKVBp+UH+DVkZaMle8tognv8nh7jP9P6ffaL3svBIufsmdysMhcNKgrsEOyaOEWCfPXzqSCf+ey43vLkGsT6tmDC30VdbUcesHy0hqE8fzl2YEbPq2XUz3lB+NG9iV343uzcvzNpqxjTDx4/pdVNf3MwMLNxYHN6Am9Eppw+lDDkMBl/66+I4R2p6etY6c7Xt57IJhYVdhgKk0/O6vZxxBWkobbvtwGXsra5r/ASOotu2uANz9zKGWvsGTi49O2z+DyukM/Xij3YLcIqb8N5dLjunNSQNDsxXbHFNp+FmbuBie+p+j2Lq7gn98sTrY4RhNyN25j48XF3Bsv07cdtrAsOjqyUhL5rUrRtE2zknPpESG9zRpbELV3soabvtoGb1T2nD3GUcEO5xDZsY0AmBk72SuH9efZ2evp2+XtrgUM2gZYlSVuz9bSXyMg39ddBRd2ycEOySfnXB4Fx69YBg3vruEN37O4w/H9Ql2SEYj2Xkl3D9tJQUlFXz8v8fSNj58L73hG3mY+dMpA5i+opBHZ+Tsn2IXDp9ko8XH2fn8nFvEP88dGlYVRr0zh3bn00EFPPlNDuOP7EbP5DbBDsmwZOeVcNGUn6mpU2Ii4GZMW7qnROQLEZnm7WFHGeEuLsbBOKsP0wxahpZd+6p46Ks1jEpP5qJRvYIdziEREf5xzpEA3Pv5KiIt00M4m/fLTmrq3L8PVQ37/3u7xjSeAJ4ENgIVwEvWYx+w0qYywt7EYT3MoGUIevDL1ZRV1fLweUNxhPEnwZ7Jbbj11MP5fu0Opq/YGuxwDEt+aXhNrmiOLd1TqvoDgIg8oKonNHjpCxGZa0cZkSAjLZnXrxzFdW9l071jAiN6JQU7pKg3d91Opi4t5E+nDKB/1/bBDqfVrjg2nc+XFnL/tNUc378LHdsEJ/md4ba5qJzPlxZyXP/OjOnXKSLGMu2ePdVFRPrWPxGRPoBZ4LiB4wd04cFzh7B+ZxkfZ+cHO5yo9tP6Xdz03mJ6dEzg+nH9gh2OLWKcDh4+byjFZVX85aNlPDd7Pdl5JcEOK2o9MH01MQ7hid8OD8m1MQ6F3ZXGLcAcEZkjInOA2cCfbS4j7E06KpXMtGQenbGW3RXm3o1gyM4r4fevLmR3RS279lWzqnBPsEOyzZDUjkwc1p1Za7bz5Dc5XPryfFNxBMGcnB3MWr2dm04ewGEdw29yhTe2VhqqOgMYANxsPQaq6kw7y4gEIsL9Zx9JcXk1T89aF+xwotLXK7ZS53IPTta5Im9SQt8u7QAz6SJYqmtd/OOL1fTp3JarjksPdji2srXSEJE2wO3Ajaq6DOgtIhPtLCNSDEntyCVH9+at+XnkbAuPlMiRZHl+KQDOCBmcbOz4AV2IdboH9R0OibjzC3Wv/riR3F1l3HvWYOJjIitZqd3dU68B1cAY63k+8KDNZUSMv5w2kPYJMdw3baWZIhlAP28oYuGmEi45pje3hsmd3y2VkZbM+9eMpnvHBNrFxzDosPAf5A8X2/dU8p/vfuE3R3QN21QhTbG70uinqo8BNQCqWgGE7xxGP0tuG8dfThvI/NxiM0UyQFwu5cHpq0lNSuTeiYMjZnDSk4z0FJ69ZCQl5TW8+MOGYIcTNR7+ag01LuWeiZGZ2druSqNaRBJxrz+EiPQDqmwuI6JcfHRvjuzRgfs+X8W/vl1nBiz97JPF+awq3MMdpw+MijVOMtKSOWt4D6b8N5dC634Bw3/e/jmPqUsLOXt4d9I6hc7CXXayu9K4D5gB9BKRd4DvgDtsLiOiOB3CJUf3pqismn9/+4uZ6eJH5dW1PD4zh6N6JXH28B7BDidg7hg/EJfCEzPN8rD+lLWpmHs+d9/L/OWyrRH7f2z37KlZwHnAFcB7QKaqzrGzjEhUak27VcxMF3968Ydcduyt4p6JRyASPb2mvVLa8Ifj+vDpkgKWbSkNdjgR67UfN1I/MllTF7n/x/5IjX4icApwEnC8H44fcUb37UR8jPWrEDPTxR+27a7kxbkbOHNYdzLSUoIdTsBdP64fndrG8eD01WbShR9U1tSxYGMxIpE7I6+e3VNunweuA1bgzjn1RxF5zs4yIlFGWjLvXjOajLQkXC6lQ4JJPmy3x2fm4HLB5NMHBTuUoGifEMutpx3Ook0lzFi5LdjhRJw3f97Ern3V3DdxcMTOyKtnd0vjRGC8qr6mqq8BZwDjbC4jImWkJfPSZaNoFx/DozPWBjuciPLRoi18sjifM4Z2p1dK9KYM/5/MXgzs1p77p63ime/MpAu7lJZX8+z36xk3sAtXjO0T0TPywP5KIwfo3eB5L2C5zWVErJS2cfzvSf34ds2OiO0PDbTsTcXc+an7T3DGysgdnPRFjNPBhaN6sn1vFU/PMpMu7PLc7PXsrapl8oToaMXaXWl0AtY0yD21GncSQ7Ouho+uGtuH7h0TePirNabv2QZvL9iMlS0kogcnfVVZ4wLMpAu7bCku542f8rhgZE8GHdYh2OEEhN2d5/fafLyokxDr5NZTD+f2j5czfcVWJg6Lnqmhdqutc7FoUzFC5Kxl0Fr1ky6qal1m0oUNnvwmBxG49bTDgx1KwNhaaTRYV6NDw2OrarGd5US680b25JV5G3lsRg6nDT6MuBh/THKLfJ8uLiC/pILbTzt8/wUykvuafVE/6eLez1eSs31vRGVfDbSVBbuZurSQ68f1o3vHxGCHEzB2z566VkS24x7HyAKyra9GCzgdwuQJg9hcXM47C/KCHU5Yqqiu46lZ6ziqVxLXn9Q/4gcnWyIjLZkpl2XiEDFZlg+RqvLPr9aQ3CaW6yJkLRZf2f0R9nbgSFVNV9W+qtpHVfs2+1PNEJHTRSRHRNaLyGQb4gx5Jx7ehbH9O/HUNzk8NSvHDFi20Os/bWLbnkomTxgUVTfy+So1KZHLx6TxyeJ81m6LnLVEAuWVeRv5aUMR545IpUNCdK2OaHelsQEot/OAIuIEngMmAIOBi0UkMjOBNSAiTDoqlb1Vdfznu/VmpksLlJZX8/yc9Zw8qKvps2/C9eP60y4+hsdmmPQiLbFoUzEPTV8DwLsLN0fd/6XdlcZdwE8i8qKIPFP/aOUxjwbWq2quqlYD7wPntDrSMLBjrzvXo+Je1MXMdPHNc7PXs6+qljuj9EY+XyW3jeP6cf35fq2Z4t0Sr85rkC4kCv8v7a40XgS+B+bjHs+of7RGKrClwfN8a9t+1lhKlohk7dy5s5XFhY6G6UUEM9PFF/kl7imQ54/syUCzhkSzrhybzmEdEnjk67VmircPKmvqWBQl6UK8sXvKba2q3mrzMT11SB/w162qU4ApAJmZmRHzl18/0+WfX61hcV4J7U16kWY9PesXELjl1OiZAtkaCbFObjl1AHd+soIZK7cxYWj3YIcU0t74aRO7yqq5/+zBlFXVReWMPLtbGrOtT/3dRSSl/tHKY+bjvrO8Xk+gsJXHDBvu9CKZ7vQiX5v0Ik1Zs3UPny7J58pj00lNip4pkK11/sieDOjajsdn5lBT5wp2OCGrtLya52Zb6UKOjfx0Id7YXWlcgjWuwa9dU62dcrsIGCAifUQkDrgIiKq7y1PaxnHduH58t3YHC6Ks/9RX2Xkl3PDOYhJjnfxvlE2BbK0Yp4M7Th9E7q4ybnhncdQN7Prq/+ZsYK8ZK7N9PY0+Hh6tmnKrqrXAjcBMYA3woaqusiPecHLV2D7uvucZpu+5sey8Ei6eMp/cXWVU17rYsLMs2CGFnZQ2sYjAN6u3c+lLZqZeYwWlFbz20ybOG9GTI7pHR7oQb2y/1VhEhojIhSJyWf2jtcdU1a9U9XBV7aeqD9kRZ7hJjHP3PS/ZXGpSWzfy84ZdVFvdKqoadbNZ7DB/Y/H+wcOqKJwR1JynvnHfBBlN6UK8sfuO8PuA/1iPk4DHgLPtLCOa1fc9P2b6ng9QU+dueZn8UodudN9O+9PVKDCwm5l5Vs+MlR3I7pbGBbhX7dumqlcCw4F4m8uIWjFOB3eePoiNu8p4f9GW5n8gClTW1PFxdj59O7fh1lMPj+jFb/wpIy2Zd64ezTXH98HpgG/XbA92SCHj0Rlr6ZAQy/Xj+gc7lJBg9xzOClV1iUitlbRwB9DqNCLGr045oitHp6fwxMwcivZWcfzhXaL6Ivnaj5soKK3g3WuO4dh+nYMdTljLSEsmIy0Zl7rXu75ibHrUpPv25vWfNjInZyeXjUmjY5voShfijd0tjSwRSQJewj1zajGw0OYyopqIMGlEKrsravj3d9G9kE7Rviqen72eUwZ1NRWGjW462Z1e5OGvonuKd9amYv7+xWoAPly0JWr/zxqze/bU9apaqqovAKcCl1vdVIaNSsqrAbOQzjPf/UJ5TR13nRHdUyDtltQmjj+dMoAf1u1k7rrIybDQUq//tAk1C3gdxJZKQ0RGNn4AKUCM9b1ho4bpRYjS9CK5O/fxzoLNXDSqF/27mkFbu/1+TBq9UhL551drqHNF3xTv8upaflpfFNXpQryxa0zjSetrApAJLMOd/mMYsAA4zqZyDH5NL/LojLUs3FiM0xF9qb8fnbGW+BgHf/6NmQLpD/ExTu4YP4ib3lvCp4vz+W1mr+Z/KIK88EMuxeXVPDhpCLsraqIyXYg3trQ0VPUkVT0JyANGqmqmqmYAI4D1dpRhHCgjLZlXrxhF53bx/OOLVVF1w9/CjcXMXLWd607sR5f2ZnKev0wc1p2jeiXxxDc5VFTXBTucgCkoreDFHzZw1vAe/G50WtSmC/HG7oHwQaq6ov6Jqq4EjrK5DMPSLj6GO8YPZPHmUqYti450XFmbivnTe4tJbhPL1cebiXn+JCLcfeYRbN9TxTVvZkXNQPDDX61BBCZPMGNlnthdaawRkZdFZJyInCgiL+FO/WH4yQUZPRma2pGHv1pLeXVtsMPxq+y8Ei5+aT7b9lSxr6qW1VvNinP+5hDBITBv/S4uiYL0Igs3FvPl8q1ce0I/cyOfF3ZXGlcCq4CbgT8Dq61thp84HMK9Zw1m255KXvghN9jh+NXcdTv23/3tcpl0IYHQ8D2O9PQiLpfyjy9X0b1jAtedaFqx3tg95bZSVZ9W1XOtx9OqWmlnGcbBRqWncNbwHrz4wwYKSiuCHY7f1CciNOlCAqc+vUj9VIu2cc6gxuNPH2fns7JgD5MnDKJNnFm7xhu7c0+NFZFZIrJORHLrH3aWYXg2ecIgRNz9sZFodeEevl65jVMHd+O20waadCEBUp9e5M+/GUC39vG8NT+P6trIy3u2t7KGx2bmMLJ3EmcP7xHscEKa3dXpK8AtuO8Gj57pFiEgNSmRP57Qj39/9wsdElZwfkbPiLmoulzKPZ+vpGNiLI9fMIykNnHBDimq1KcXGdYriStfW8TL83IjKg9Tdl4Jj85Yw659VbxyeSYi0TeFvSXsHtPYrapfq+oOVS2qf9hchuHFMX3ciyS+u3BzRKUX+Tg7n+y8Eu6aMMhUGEF00sCunH7kYTzz3S/kl5QHOxxbZOeVcMlL81m4sQSnCLVReCNjS/ljudfHRWRMo7vDjQBYsqX01zURaiJj0LKkrJqHv17DqPRkzh/ZM9jhRL17zxqMIPtzMoW7+bm7qNrf3WYmV/jC7u6pY6yvGdZXwZ0i6WSbyzE8GN23E/GxDiprXCiQ3qlNsENqtcdm5rCnspYHJg3BEYV3voeaHkmJ3PybATzy9Vq+Xb2d3wzuFuyQWmVvhXuaumAmV/jKlkpDRG61vv3S+qrATmCeqm60owyjefWDlt+u3s4bP23izZ/zmDCke9hebBdvLuH9RZu5+rg+UZ+iO5RcNbYPn2Tnc/8XqxjbvzOJYTqjqqC0grcXbGZoagdOH3IYo/t2jphxQH+yq3uqvfVoZz3a485B9bWIXGRTGYYPMtKSuXPCIO47ezALNhbzzsLNwQ7pkCzcWMR1b2WTnBjHzSa/VEiJi3HwwKQh5JdU8LepK3hu9vqwGz9TVf766QrqXMrzl2Zww0kDTIXhI1taGqr6d0/bRSQF+BZ4345yDN9dmNmLL5dv5ZGv1nDSwC70TA6frir34OQCal1KrFPI2bbX/EOHmNF9O3Hi4Z35ZHEBDnFXJOE0Dfrj7Hx+WLeT+88aTK+U8PnfCAV2D4QfQFWLgfDsGwlzIsLD5w0F4K5PV4RVQsMvlxfun8Vi7vwOXUf26AiAS8NrXZfteyp54MvVjEpP5rIx6cEOJ+z4tdIQkZOB8Gq3RpCeyW2YfMYR/PeXXXyYFR5rilfW1PHd6h2AWccg1J1yRDdindZnQgmPdV1Ulbs/W0FVrYvHLhgetuN9wWTXQPgK3IPfDaUAhcBldpRhHJpLj+7N9OWFPPjlGk44vAvdO4Z2ErYHp69mc0k590w8gsoal1nHIIRlpCXz/rVjeGj6ahZvLmVPRU2wQ2rWtGWFfLtmB3efcQR9OrcNdjhhSezothCRtEabFChS1bJWH7yFMjMzNSsrK9DFhrS8ojLG/2sug7t34JQjuobsLJEZK7dy3duL+eMJfbnrjCOCHY7ho8qaOiY99yM79lbx9c3H061DQrBD8ui7Ndu54d3F9Epuw4w/nxCVi5c1RUSyVTWzuf3sWoQpr9FjczAqDMOztE5tufjo3izeXMoTM9eF5N3iBaUV3PHxcob37Mhtpw0MdjhGCyTEOnn2khFUVNdxywdLQ3J52EWbirnmzSwqa1xsLi5n6ZbSYIcUtvw6pmGEjk5t3ek3FKgOsUHL2joXN7+3BJfCMxePIC7G/FmGm/5d23P/2YP5aUMRL/ywIdjhHOTRr9dSX5fV1oXW33+4Mf+dUWJMv84kWBdjl0LvlNAZ23jm+/Vk5ZXw0LlDSOtk+pnD1YWZvZg4rDtPzVoXUi3ZDxZtJiuvBKdDzOQKG9gyphFKzJiGd9l5JcxctY33Fm6mS7t4Prt+LB3bxAY1pjd/3sR9n69i3MAuvHbl0UGNxWi9PZU1nPnMf6moruOSo3tz4sCuQR0/W5BbxO9eWcDovp246eT+LNpUYiZXeOHrmIapNKLQok3FXPLSfI7p04nXrhxFrDM4Dc5pywr403tLAUiIcfDONeFzc5jh3XsLN3PXpyuA4P5eNxeVc85z80huG+f+gJQY3A9IoS6gA+FGeBmVnsJD5w5l3vpdPPBlcLKVbtxVxl2frNj/vMb0M0eM4rLq/Xf0Vta6+HH9zoDHsLeyhj+8sQiXwiuXjzIVho3MmoZR6sLMXqzfsY8pc3OJj3WSlBgbsGb7pl1lXDxlPg6HEB/joLbOZfqZI0h9tuUqK9vyD+t28ccT+xEfE5jEhos2FXPnx8vJKyrjrT8cY+7HsJmpNKLYnacPYnFeCS/NzUWA+Fj/5w/KKyrj4pfmU1Vbx0fXjaGsqo75uUWmnzmC1Gdbnp9bxJ6KGl6cm8sN7yzm+Usz/D4zLmtTMRdNmU+dS4l1CPGx4ZmBN5SZSiOKOR3C2P6dyMorQalfuGmX3y7em4vKuXjKfCpq6nj36tH7052byiLy1C8RC9AzpQ33TF3JDe8u5rlLRvqt4thTWcMdnyzff5+IS915y8zfl73MmEaUO+Hwrvun4irw4/oiyqtrbS/n6xVbmfif/7K7ooZ3rj6GwT3M+hjR4vej0/jHOUcya/V2fv/KfP7z/S+2T8ldv2Mvk579kbxdZcSYqbV+ZVoaUS4jLZl3rhnN/NxdbNtdxdsL8jjv+Z946bJM21JGvzovlwe+XIPiTqFdWeNq9meMyHLZmHQ27ZmOMwQAAAq8SURBVCrj1R83sWBjCc/GrOddm2ZVzVq9nVs+WEpCrIP3rh2D0yGmy9OPTKVhHNCV8JvB3bjp3cWc9ew8bj55AOU1dYf8z7e5qJwHp6/mm9Xb92+rs2ZJmX/m6NOpXfz+9Z+ral08MXMtr1wxijZxh3YZytpUzFOz1vHThiKG9ezIC7/LoEeS+6ZV8/flPyHdPSUivxWRVSLiEpFm5w8brXfi4V2YduNxtI+P4e9fruaJmTlc8lLLclWVVdXy+My1/ObpH5i3fheXHNObhBiH6TKIcvWzqhwCDoGfc4s55ckf+GJZYYvWe6lzKa//uJELX/yZnzYU4RThrgmD9lcYhn+F9M19InIE4AJeBP6iqs3etWdu7rPH07PW8e/vftn/vFuHeK4+ri9nDe9BQWnFQc1/VWXOup18nJXPzxuKKC6vZtJRPZg84QgO65hAdl6J6TIwDvg7qHMp909bxeqteziie3tG9k7mzKHdObZ/54P375NCXIyTqUsL+GJZITv2Vu3fxylw62kDueGk/sE4pYgRUXeEi8gcTKURUNl5JVz68nxqal2ICGmd2rBhpztxsUNAFRwOYUiPDuyrqmVLcQXVde6xChF4aNIQLjmmccZ8wzhQnUt5fMZaXpibu39bu3gnaZ3a0ibOyeLNpbis2VAKxDkdjBvYhaGpHXlu9npqrHt8wmmp2VDla6UREWMaInItcC1A7969gxxNZGg4176+dZC7cx9/m7qSnza479yucynb91QyoncyyW3iyLam7jqAkvLQX5DHCD6nQ2ifGItD3Ik0BejftR3JbeJYUbD7gDTr44/sxmPnD9+fL+3Y/p1N6zUIgl5piMi3wGEeXrpbVT/35RiqOgWYAu6Who3hRbWGA+QAfbu047bTBrLYaoHExjh47tIMMtKSD2iZmHELoyVG9+1EXIxj/9/OPROP9Pg3de0J/Q5IsNn479MIDNM9ZbSYt/EJM25hHCrzNxV8ZkzDMAzD8FlEZLkVkXNFJB8YA0wXkZnBjskwDCOahUVLoyVEZCeQ14pDdAZ22RSOnUxcLWPiahkTV8tEYlxpqtqluZ0irtJoLRHJ8qWJFmgmrpYxcbWMiatlojmukO6eMgzDMEKLqTQMwzAMn5lK42BTgh2AFyauljFxtYyJq2WiNi4zpmEYhmH4zLQ0DMMwDJ+ZSsMwDMPwWdRUGiJyuojkiMh6EZns4fV4EfnAen2BiKQ3eO0ua3uOiIwPcFy3ishqEVkuIt+JSFqD1+pEZKn1mBbguK4QkZ0Nyr+6wWuXi8gv1uPyAMf1dIOY1olIaYPX/Pl+vSoiO0RkpZfXRUSeseJeLiIjG7zmz/erubguteJZLiI/icjwBq9tEpEV1vtla5oFH+IaJyK7G/y+7m3wWpN/A36O6/YGMa20/qZSrNf8+X71EpHZIrJG3GsM3exhn8D8jalqxD8AJ7AB6AvEAcuAwY32uR54wfr+IuAD6/vB1v7xQB/rOM4AxnUS0Mb6/n/r47Ke7wvi+3UF8KyHn00Bcq2vydb3yYGKq9H+NwGv+vv9so59AjASWOnl9TOAr3Ench0NLPD3++VjXMfWlwdMqI/Ler4J6Byk92sc8GVr/wbsjqvRvmcB3wfo/eoOjLS+bw+s8/A/GZC/sWhpaRwNrFfVXFWtBt4Hzmm0zznAG9b3HwOniIhY299X1SpV3Qist44XkLhUdbaqlltP5wM9bSq7VXE1YTwwS1WLVbUEmAWcHqS4Lgbes6nsJqnqXKC4iV3OAd5Ut/lAkvx/e2cXYlUVxfHfPxJFi7IkUlNM0wRNHRQiNaIIKgMzQpCKKOdlKIMeCoQBiaASfKmHeigfJAhBraTpixItQxvFTBvCvlQwUTKl/KCQytXD3le3t3vnbmfuOXNh1g8us8/+OGfddde96+y9z6wljaZYfTWUy8y2x+tCefaVo6969Mc2my1XmfZ11Mx2x/JpYB8wtqpbKTY2WJzGWOCX5Pgw/1f4+T5m9g9wErg2c2yRcqW0E+4kKgyTtEtSt6RFTZLpUuR6KE6DN0gad4lji5SLuIx3I7A5qS5KXznUk71IfV0q1fZlwKeSvlbIWVM2t0naK+ljSdNiXUvoS9Jwwg/vO0l1KfpSWDpvA3ZUNZViYwOeT6MkVKOu+lnjen1yxvaV7HNLehSYA9yRVI83syOSJgKbJfWY2f6S5OoC1prZWUkdhFnaXZlji5SrwhJgg5n9m9QVpa8cBsK+spF0J8FpzE+q50V9XQd8Jun7eCdeBrsJsZDOSFoAbAQm0yL6IixNbTOzdFZSuL4kXUFwVM+Y2anq5hpDmm5jg2WmcRgYlxzfAByp10fS5cBVhGlqztgi5ULS3UAnsNDMzidHNrMj8e8B4HPC3UcpcpnZiUSWN4HZuWOLlCthCVVLBwXqK4d6sheprywkzQBWAw+Y2YlKfaKvY8B7NG9ZtiFmdsrMzsTyR8AQSaNoAX1FerOvQvQlaQjBYbxtZu/W6FKOjRWxadNqL8KM6gBhuaKyeTatqs9TXLwRvi6Wp3HxRvgBmrcRniNXG2Hjb3JV/UhgaCyPAn6iSRuCmXKNTsoPAt12YdPtYJRvZCxfU5Zcsd/NhE1JlaGv5BoTqL+xez8Xb1LuLFpfmXKNJ+zTza2qHwFcmZS3A/eWKNf1lc+P8ON7KOouywaKkiu2V24oR5Slr/je3wJe6aVPKTbWNEW3+ovwZMGPhB/gzlj3AuHuHWAYsD5+gXYCE5OxnXHcD8B9Jcu1CfgV2BNf78f6uUBP/NL0AO0ly/Uy8F28/hZgajJ2adTjz8ATZcoVj58HVlaNK1pfa4GjwN+EO7t2oAPoiO0CXoty9wBzStJXI7lWA78n9rUr1k+MutobP+fOkuValthXN4lTq2UDZckV+zxOeDgmHVe0vuYTlpS+TT6rBQNhYx5GxHEcx8lmsOxpOI7jOE3AnYbjOI6TjTsNx3EcJxt3Go7jOE427jQcx3GcbNxpOE4DJF0t6cnkeIykDQVda1Ea0bVG+y2S1hRxbcfJwR+5dZwGxFg/H5jZ9BKutZ3wPyfHe+mzCVhqZoeKlsdxqvGZhuM0ZiUwKeZJWCVpQiXfgkJekY2SuiQdlLRMIQfKNzEwYiXXwiRJn8Rgdl9Kmlp9EUlTgLMVhyFpcczZsFdSGsOoixC1wHFKx52G4zRmObDfzGaZ2XM12qcDDxPCXbwI/GlmbcBXwGOxzxvA02Y2G3gWeL3GeeYRAvVVWAHcY2YzgYVJ/S7g9n68H8fpM4Mlyq3jFMkWCzkOTks6SZgJQAjlMCNGJp0LrA8pWoAQy6ya0cBvyfE2YI2kdUAaoO4YMKaJ8jtONu40HKf/nE3K55Ljc4Tv2GXAH2Y2q8F5/iIEwwPAzDok3UoIRLdH0iwLUWiHxb6OUzq+POU4jTlNSLHZJyzkPTgoaTGcz+U8s0bXfcBNlQNJk8xsh5mtAI5zIbz1FKBmDmvHKRp3Go7TgHh3vy1uSq/q42keAdolVaKg1kpRuhVo04U1rFWSeuKm+1ZCBFUIeeM/7KMcjtMv/JFbx2khJL0KdJnZpjrtQ4EvgPkW0hI7Tqn4TMNxWouXgOG9tI8HlrvDcAYKn2k4juM42fhMw3Ecx8nGnYbjOI6TjTsNx3EcJxt3Go7jOE427jQcx3GcbP4DtzNp4akp+a0AAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 432x288 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Plot cosine and dampled cosine curves\n",
    "# y2 is defined as follows: y2 = cos(2{\\pi}x2)\n",
    "# y1 is defined as follows: y1 = cos(2{\\pi}x1) exp(-x1)\n",
    "# both y1 and y2 are cosine curves, but y1 has its amplitude damped \n",
    "\n",
    "x1 = np.linspace(0.0, 5.0)\n",
    "x2 = np.linspace(0.0, 2.0)\n",
    "\n",
    "y1 = np.cos(2 * np.pi * x1) * np.exp(-x1)\n",
    "y2 = np.cos(2 * np.pi * x2)\n",
    "\n",
    "# plotting one below the other using subplots\n",
    "plt.subplot(2, 1, 1)\n",
    "plt.plot(x1, y1, 'o-') # points are shown as unfilled circles o and curves are drawn as line curves\n",
    "plt.title('A tale of 2 subplots')\n",
    "plt.ylabel('Damped oscillation')\n",
    "\n",
    "plt.subplot(2, 1, 2)\n",
    "plt.plot(x2, y2, '.-') # points are shown as \"dots\"\n",
    "plt.xlabel('time (s)')\n",
    "plt.ylabel('Undamped')\n",
    "\n",
    "# Simple Questions: \n",
    "# 1. How can I make the X-axes scales to be synchronized? \n",
    "# 2. How can I plot both on the same graph instead of 2 separate ones? \n",
    "\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# This code generates data from a normal (Gaussian) distribution. \n",
    "# Then visually show it is normal by overlaying the histogram of points with the theoretical density function\n",
    "\n",
    "np.random.seed(19680801) # generates random number, but with a fixed seed\n",
    "# Fixing the seed guarantees that experiments can be repeated; helpful for debugging code\n",
    "# Otherwise, every run would give different random number. \n",
    "\n",
    "# example data\n",
    "mu = 100  # mean of desired normal distribution\n",
    "sigma = 15  # standard deviation of desired normal distribution\n",
    "# Generate a normal distribution with above parameters as follows\n",
    "x = mu + sigma * np.random.randn(437) # randn generates numbers from a standard normal distribution\n",
    "# A standard normal distribution has mean 0 and standard deviation 1\n",
    "# To obtain a normal distribution with mean mu and standard deviation sigma, we scale it accordingly\n",
    "\n",
    "fig, ax = plt.subplots() # use the subplots tool \n",
    "\n",
    "# the histogram of the data\n",
    "num_bins = 50 # number of bins for the historgram\n",
    "n, bins, patches = ax.hist(x, num_bins, density=1)\n",
    "\n",
    "# add the density plot for normal distribution from the theory\n",
    "y = ((1 / (np.sqrt(2 * np.pi) * sigma)) *\n",
    "     np.exp(-0.5 * (1 / sigma * (bins - mu))**2))\n",
    "ax.plot(bins, y, '--') # plot as a line curve\n",
    "ax.set_xlabel('Smarts')\n",
    "ax.set_ylabel('Probability density')\n",
    "ax.set_title(r'Histogram of IQ: $\\mu=100$, $\\sigma=15$')\n",
    "\n",
    "# Questions:\n",
    "# 1. What happens as we increas the number of points generated?\n",
    "\n",
    "# Tweak spacing to prevent clipping of ylabel\n",
    "fig.tight_layout()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "import matplotlib.path as mpath\n",
    "import matplotlib.patches as mpatches\n",
    "# import matplotlib.pyplot as plt\n",
    "\n",
    "fig, ax = plt.subplots()\n",
    "\n",
    "Path = mpath.Path\n",
    "path_data = [\n",
    "    (Path.MOVETO, (1.58, -2.57)),\n",
    "    (Path.CURVE4, (0.35, -1.1)),\n",
    "    (Path.CURVE4, (-1.75, 2.0)),\n",
    "    (Path.CURVE4, (0.375, 2.0)),\n",
    "    (Path.LINETO, (0.85, 1.15)),\n",
    "    (Path.CURVE4, (2.2, 3.2)),\n",
    "    (Path.CURVE4, (3, 0.05)),\n",
    "    (Path.CURVE4, (2.0, -0.5)),\n",
    "    (Path.CLOSEPOLY, (1.58, -2.57)),\n",
    "    ]\n",
    "codes, verts = zip(*path_data)\n",
    "path = mpath.Path(verts, codes)\n",
    "patch = mpatches.PathPatch(path, facecolor='r', alpha=0.5)\n",
    "ax.add_patch(patch)\n",
    "\n",
    "# plot control points and connecting lines\n",
    "x, y = zip(*path.vertices)\n",
    "line, = ax.plot(x, y, 'go-')\n",
    "\n",
    "ax.grid()\n",
    "ax.axis('equal')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "from matplotlib.ticker import MaxNLocator\n",
    "from collections import namedtuple\n",
    "\n",
    "n_groups = 5\n",
    "\n",
    "means_men = (20, 35, 30, 35, 27)\n",
    "std_men = (2, 3, 4, 1, 2)\n",
    "\n",
    "means_women = (25, 32, 34, 20, 25)\n",
    "std_women = (3, 5, 2, 3, 3)\n",
    "\n",
    "fig, ax = plt.subplots()\n",
    "\n",
    "index = np.arange(n_groups)\n",
    "bar_width = 0.35\n",
    "\n",
    "opacity = 0.4\n",
    "error_config = {'ecolor': '0.3'}\n",
    "\n",
    "rects1 = ax.bar(index, means_men, bar_width,\n",
    "                alpha=opacity, color='b',\n",
    "                yerr=std_men, error_kw=error_config,\n",
    "                label='Men')\n",
    "\n",
    "rects2 = ax.bar(index + bar_width, means_women, bar_width,\n",
    "                alpha=opacity, color='r',\n",
    "                yerr=std_women, error_kw=error_config,\n",
    "                label='Women')\n",
    "\n",
    "ax.set_xlabel('Group')\n",
    "ax.set_ylabel('Scores')\n",
    "ax.set_title('Scores by group and gender')\n",
    "ax.set_xticks(index + bar_width / 2)\n",
    "ax.set_xticklabels(('A', 'B', 'C', 'D', 'E'))\n",
    "ax.legend()\n",
    "\n",
    "fig.tight_layout()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "\n",
    "# Pie chart, where the slices will be ordered and plotted counter-clockwise:\n",
    "labels = 'Frogs', 'Hogs', 'Dogs', 'Logs'\n",
    "sizes = [15, 30, 45, 10]\n",
    "explode = (0, 0.5, 0.1, 0)  # only \"explode\" the 2nd slice (i.e. 'Hogs')\n",
    "\n",
    "fig1, ax1 = plt.subplots()\n",
    "ax1.pie(sizes, explode=explode, labels=labels, autopct='%1.1f%%',\n",
    "        shadow=True, startangle=90)\n",
    "ax1.axis('equal')  # Equal aspect ratio ensures that pie is drawn as a circle.\n",
    "\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
