{
 "metadata": {
  "name": "",
  "signature": "sha256:17d21b909ad14f672b929642fe8d70e9f621d5fc65c94acfdaa87a225ca72993"
 },
 "nbformat": 3,
 "nbformat_minor": 0,
 "worksheets": [
  {
   "cells": [
    {
     "cell_type": "heading",
     "level": 1,
     "metadata": {},
     "source": [
      "Fun with FFT"
     ]
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "This notebook is part of a lecture I gave in my DSP class on Halloween, Oct 31.  I'll clean it up later, but need to post it (even in its current minimalist condition) for my students."
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "%pylab inline\n",
      "from scipy.fftpack import fft, ifft"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Populating the interactive namespace from numpy and matplotlib\n"
       ]
      }
     ],
     "prompt_number": 3
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "x = array([1,-1,1,-1])\n",
      "fft(x)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "pyout",
       "prompt_number": 4,
       "text": [
        "array([ 0.+0.j,  0.+0.j,  4.+0.j,  0.-0.j])"
       ]
      }
     ],
     "prompt_number": 4
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "fft(x,n=8)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "pyout",
       "prompt_number": 5,
       "text": [
        "array([ 0.+0.j        ,  1.+0.41421356j,  0.-0.j        ,  1.+2.41421356j,\n",
        "        4.+0.j        ,  1.-2.41421356j,  0.+0.j        ,  1.-0.41421356j])"
       ]
      }
     ],
     "prompt_number": 5
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "xz = r_[x,zeros(4)]\n",
      "xz"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "pyout",
       "prompt_number": 6,
       "text": [
        "array([ 1., -1.,  1., -1.,  0.,  0.,  0.,  0.])"
       ]
      }
     ],
     "prompt_number": 6
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "fft(xz)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "pyout",
       "prompt_number": 7,
       "text": [
        "array([ 0.+0.j        ,  1.+0.41421356j,  0.-0.j        ,  1.+2.41421356j,\n",
        "        4.+0.j        ,  1.-2.41421356j,  0.+0.j        ,  1.-0.41421356j])"
       ]
      }
     ],
     "prompt_number": 7
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "c_[x,zeros(4)]"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "pyout",
       "prompt_number": 8,
       "text": [
        "array([[ 1.,  0.],\n",
        "       [-1.,  0.],\n",
        "       [ 1.,  0.],\n",
        "       [-1.,  0.]])"
       ]
      }
     ],
     "prompt_number": 8
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "y = fft(x)\n",
      "xhat = ifft(y)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 9
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "x-xhat"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "pyout",
       "prompt_number": 10,
       "text": [
        "array([ 0.+0.j,  0.+0.j,  0.+0.j,  0.+0.j])"
       ]
      }
     ],
     "prompt_number": 10
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "x2 = rand(1024*1024)\n",
      "y2 = fft(x2)\n",
      "x2hat = ifft(y2)\n",
      "r = x2-x2hat\n",
      "r[:10]"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "pyout",
       "prompt_number": 11,
       "text": [
        "array([  1.11022302e-16 +0.00000000e+00j,\n",
        "         2.22044605e-16 +5.14996032e-19j,\n",
        "         2.22044605e-16 +4.07962330e-17j,\n",
        "         2.22044605e-16 +5.33427469e-17j,\n",
        "         1.11022302e-16 +4.61328024e-17j,\n",
        "        -1.94289029e-16 -4.28259858e-17j,\n",
        "         1.66533454e-16 +2.98801962e-17j,\n",
        "         2.22044605e-16 -5.40169851e-17j,\n",
        "         0.00000000e+00 -3.37720897e-17j,   3.33066907e-16 +8.51658483e-18j])"
       ]
      }
     ],
     "prompt_number": 11
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "max(abs(x2-x2hat))"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "pyout",
       "prompt_number": 12,
       "text": [
        "1.0431292286976892e-15"
       ]
      }
     ],
     "prompt_number": 12
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "x2hat[:10]"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "pyout",
       "prompt_number": 13,
       "text": [
        "array([ 0.41116206 +0.00000000e+00j,  0.33706664 -5.14996032e-19j,\n",
        "        0.79717000 -4.07962330e-17j,  0.53664741 -5.33427469e-17j,\n",
        "        0.79604319 -4.61328024e-17j,  0.19359754 +4.28259858e-17j,\n",
        "        0.11685530 -2.98801962e-17j,  0.50703792 +5.40169851e-17j,\n",
        "        0.35640277 +3.37720897e-17j,  0.73290768 -8.51658483e-18j])"
       ]
      }
     ],
     "prompt_number": 13
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "real(x2hat)[:10]"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "pyout",
       "prompt_number": 14,
       "text": [
        "array([ 0.41116206,  0.33706664,  0.79717   ,  0.53664741,  0.79604319,\n",
        "        0.19359754,  0.1168553 ,  0.50703792,  0.35640277,  0.73290768])"
       ]
      }
     ],
     "prompt_number": 14
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "#x = array([0,0,0,1,0,0,0,0]) + 1j*array([0,0,0,0,0,0,0,0])\n",
      "x = exp(1j*2.1*2*pi*arange(8)/8)\n",
      "y = fft(x)\n",
      "subplot(1,2,1)\n",
      "stem(real(y))\n",
      "subplot(1,2,2)\n",
      "stem(imag(y))\n",
      "xlim([0,8])"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "pyout",
       "prompt_number": 15,
       "text": [
        "(0, 8)"
       ]
      },
      {
       "metadata": {},
       "output_type": "display_data",
       "png": "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\n",
       "text": [
        "<matplotlib.figure.Figure at 0x10afc24d0>"
       ]
      }
     ],
     "prompt_number": 15
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "N=64\n",
      "omega = 2.3*2*pi/N\n",
      "n = arange(N)\n",
      "x = cos(omega*n)\n",
      "y = fft(x)\n",
      "stem(abs(y))"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "pyout",
       "prompt_number": 16,
       "text": [
        "<Container object of 3 artists>"
       ]
      },
      {
       "metadata": {},
       "output_type": "display_data",
       "png": "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\nAUuv3lX40pq/3ilpV9n9KyRdUTFPzk+GvJ8RjbUt9s+nuf2PLGJf9T+v1uGc+ecZqWOMP2/cdu64\nZ+NtjfQ/0uL+W93XfPXX1n+tQxitGOYotY00/Rmup61Tl912UANDK40G+Z9K+kLZ/Yslba+YJ6fA\nvKIba+v2IG++/5GZ6ea/FJpvq7//kRb33+q+5q+/08eYKz8/rem/lX2NLFpf7dBIkDd0QJDtP5G0\nLiI+lN2/WNI7ImKobJ6o7LvdBwTV1/+oIkYTqTVvnsbqb0+tnVl/c31Vr79zaq1ef+d8LpZ22W2H\nJbv4su2zJI1GxLrs/pWSXoiyDZ622/x2AECalirIl0n6gaQ/kPSUpO9Kuigi8rasAQBaqKHdDyPi\niO2/lLRbpd0PbyDEAaA9WnbSLADA0mjJxZdtr7P9iO3/tv3xVrzGYrL9RdsHbN9f1na87T22H7U9\nbvu4dtY4H9un2r7d9oO2H7A9nLWnUv8K23fa3mf7IdufytqTqH+a7aNs32v71ux+MvXbftz2fVn9\n383aUqr/ONtft/1w9hl6Ryr12/6t7H2fvv3c9nC99S96kCd6sNCNKtVb7gpJeyLi9ZK+nd3vRL+W\ndFlEvFHSWZIuzd7vJOqPiEOSzo2IMyS9RdK5ts9WIvWX2SjpIUnTP3FTqj8kFSJidUScmbWlVP+1\nkv4tIk5X6TP0iBKpPyJ+kL3vqyW9TdKvJH1T9dZf7/6K1W6q4WChTrxJOk3S/WX3H5G0Mpvul/RI\nu2us8e+4WdK7U6xf0jGS7pL0xpTql3SKpG9JOlfSral9fiQ9JunVFW1J1C/plZJ+mNOeRP0VNa+V\ndEcj9bdiaOVkST8qu/9E1paalRFxIJs+IGllO4uphe3TJK2WdKcSqt/2S2zvU6nO2yPiQSVUv6S/\nlfQxSS+UtaVUf0j6lu3v2f5Q1pZK/a+V9IztG23fY/sLto9VOvWX+zNJN2XTddXfiiDvuq2nUfpa\n7Oi/y/bLJH1D0saI+GX5Y51ef0S8EKWhlVMkrbF9bsXjHVu/7T+U9HRE3Cspd9/fTq4/864o/bR/\nj0pDc79X/mCH179M0lslfS4i3irpf1UxDNHh9UuSbL9U0h9J+ufKx2qpvxVB/qSkU8vun6rSWnlq\nDtjulyTbqyQ93eZ65mX7aJVC/EsRcXPWnEz90yLi55LGVBorTKX+35V0vu3HVFqb+n3bX1I69Ssi\n9mf/PqPS+OyZSqf+JyQ9ERF3Zfe/rlKwTyVS/7T3SLo7+z+Q6nz/WxHk35P0m7ZPy75l3ivplha8\nTqvdImlDNr1BpbHnjmPbkm6Q9FBEfLbsoVTqP2F6i7ztPknnSbpXidQfEZsi4tSIeK1KP41vi4i/\nUCL12z7G9suz6WNVGqe9X4nUHxFTkn5k+/VZ07slPSjpViVQf5mL9OKwilTv+9+iQfv3qHTk5/9I\nurLdGxFqqPcmlY5Q/T+Vxvc/IOl4lTZgParSdduOa3ed89R+tkpjs/tUCsB7VdoDJ5X63yzpnqz+\n+yR9LGtPov6Kv+UcSbekVL9KY8z7stsD08trKvVntf6OShvJvy/pX1TaAJpS/cdK+rGkl5e11VU/\nBwQBQOJackAQAGDpEOQAkDiCHAASR5ADQOIIcgBIHEEOAIkjyAEgcQQ5ACTu/wGKNdLx2Pj2ywAA\nAABJRU5ErkJggg==\n",
       "text": [
        "<matplotlib.figure.Figure at 0x11309ecd0>"
       ]
      }
     ],
     "prompt_number": 16
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "Signal Filtering with FFTs"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "N=256\n",
      "sigma = 1.0\n",
      "omega = 2*pi*35.5/N\n",
      "omega2 = 2*pi*44/N\n",
      "#x = exp(omega*1j*arange(N))\n",
      "x = cos(omega*arange(N))+2*cos(omega2*arange(N))\n",
      "x += sigma*randn(N)\n",
      "y = fft(x)\n",
      "plot(abs(y))"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "pyout",
       "prompt_number": 17,
       "text": [
        "[<matplotlib.lines.Line2D at 0x113865d10>]"
       ]
      },
      {
       "metadata": {},
       "output_type": "display_data",
       "png": "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\nBPw/p6Zj3QNzPhMAAAAASUVORK5CYII=\n",
       "text": [
        "<matplotlib.figure.Figure at 0x1135c1750>"
       ]
      }
     ],
     "prompt_number": 17
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "plot(x)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "pyout",
       "prompt_number": 18,
       "text": [
        "[<matplotlib.lines.Line2D at 0x1138931d0>]"
       ]
      },
      {
       "metadata": {},
       "output_type": "display_data",
       "png": "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\nFIoBxP8HBVZ9g9DfRxUAAAAASUVORK5CYII=\n",
       "text": [
        "<matplotlib.figure.Figure at 0x10afb8c90>"
       ]
      }
     ],
     "prompt_number": 18
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "from scipy.signal import kaiser\n",
      "window = kaiser(N,beta=14)\n",
      "plot(abs(fft(x*window)))"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "pyout",
       "prompt_number": 19,
       "text": [
        "[<matplotlib.lines.Line2D at 0x11309d3d0>]"
       ]
      },
      {
       "metadata": {},
       "output_type": "display_data",
       "png": "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\nvr770xjzsXG8vYDXXweOOsoeDxhgUd/zz3dPmf28+ab9+ccJGhuBY44BBg8G3n47/ecfeAD45CcT\nEavLYYdlTi30X1y87Nhh7//hD12Xvyd54IHMdaq9PbMV4Rd7ALjiCuChhzIfj717zesfNiz19594\nwtJ2e4pnnrHeJwAcfbS1N5dSt3EefBD49KeTy+xn82bgxBOBu+/u3rKUE0UR+9ZW4KWXrIt/223B\n27z+OjBhggn+M88U9ve3bk0WsFzz7IHkBrB7NzDUc4v1bHz7jo4wJU+PO5HL37XdscME5rDDMkfo\nzz4LzAy4E0GmyH7fPvvea68NzjBparL3H3ggu33oCZqaTFTffz9YlHbtAqZPB77+9fTfsWdPqtgf\nfLANyr/4YubPDRli58M7DqJq561Qk/FUM9erzk6b+Xv66fbcf47D2DhdRfarVhWujrusWAF85SvA\nX/8a3ItQBf7+760sPRVslQNFEftNm6zre+21wM03BwvFli0WcZx0kl0YCskPfgAsWJB47o9Q0kX2\n/tRLILkBuI3Z5YwzMvuK7e020OfNhMiVN96wST5BYj9iRGaxV7XGP3166nuHH54+sl+xwnov//3f\nFkn52bED+PKXgeXLSyfdcMUKu6gNHx4c3d9wg0Xef/xjcJk7O1PPs8tpp2VePmHPHjsPI0Yki319\nPdCvn42NZLLasuV738ucaltfbz29mhp7ftBBVt/depxPZO8V+337LDMt0wUwLB0dZo+ecoppSNAF\n8tlnLaBctKh850B0B0URezePu7bWGs/KlanbuJbIyScXtrIAdrF54AFLKwS6Xt+jo8MaflXAfb28\nDWDvXmvMLtOnAy+/nN7DbGy0wb7vfz+//QGs0n/+8+YHe3/PjeyHDEkv9o2NduH52MdS38sk9suX\nA//wD5Z+uG1b6vtNTXYxUAU++CD0LnULb70FjBqVGl27bN0KzJ1rNlxQiuS+fTYmEySG06dnJ/b+\n3376act3r6nJfxXNxkbgv/4rsyW0cqVdmFxErH7s3WvPs131sqsB2nvuscevvZbbvgSxcaMdp0MO\nSbWfXG65BfjGNxIT3kol0Cg2RRV7EWtYDz+cus3rr9vJnDrVMgfa2wvz26pW+aZNs4E6oGsbx410\nRFK/z3sDE7cxuwwYYBUuXVdyyxYrx8qV+a8b/8YbJqyjRiWiHXcNl64i+2eftcYftH+ZPPvly22x\n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\n",
       "text": [
        "<matplotlib.figure.Figure at 0x113900410>"
       ]
      }
     ],
     "prompt_number": 19
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "plot(abs(fft(window)))"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "pyout",
       "prompt_number": 20,
       "text": [
        "[<matplotlib.lines.Line2D at 0x113514690>]"
       ]
      },
      {
       "metadata": {},
       "output_type": "display_data",
       "png": "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\n",
       "text": [
        "<matplotlib.figure.Figure at 0x113064190>"
       ]
      }
     ],
     "prompt_number": 20
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "plot(window)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "pyout",
       "prompt_number": 21,
       "text": [
        "[<matplotlib.lines.Line2D at 0x115bf6ad0>]"
       ]
      },
      {
       "metadata": {},
       "output_type": "display_data",
       "png": "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\n2yMAAAAASUVORK5CYII=\n",
       "text": [
        "<matplotlib.figure.Figure at 0x11389a250>"
       ]
      }
     ],
     "prompt_number": 21
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "Dirichlet Kernel, the Discrete Time Sinc Function"
     ]
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "The Dirichlet kernel is the discrete time version of the sinc function.  For some reason, it gets little of the acclaim of the sinc function.  I've even seen textbooks incorrectly use the sinc function when they should be using the Dirichlet function.  Even the Wikipedia entry for the sinc function make no mention of the Dirichlet kernel.\n",
      "\n",
      "The first version uses the piecewise function to take care of the division by 0 problem.  However, as written it doesn't work for x being any other integer except 0.  I suppose it could be improved, but Dirichlet2 solves the problem a different (and arguably better) way: it allows numpy to compute nan's, then replaced the nan's by the correct limit."
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "def dirichlet(x,N):\n",
      "    return piecewise(x, [x==0, x != 0], [N, lambda x: sin(N*pi*x)/sin(pi*x)])\n",
      "\n",
      "x = linspace(-0.5,0.5,201)\n",
      "plot(x,abs(dirichlet(x,16)))"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "pyout",
       "prompt_number": 36,
       "text": [
        "[<matplotlib.lines.Line2D at 0x116bdbc10>]"
       ]
      },
      {
       "metadata": {},
       "output_type": "display_data",
       "png": "iVBORw0KGgoAAAANSUhEUgAAAXMAAAEACAYAAABBDJb9AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3XmYFNXVBvD3AMM6LIIKKiiKgsQFRVQQjS3oE0Alcd+i\nCIr5XPnUuEWNk8RESeJuTFwA8ZOgRlDQYKIonaigggoKoiDRATQMwsDAIMjAnO+PM+30zPRSVV29\nVPX7ex4eumu5fauXM7dO3XtLVBVERBRszfJdASIiyhyDORFRCDCYExGFAIM5EVEIMJgTEYUAgzkR\nUQikDOYiMlFEKkTk40bLrxaRpSKyWETGZ7eKRESUTrqW+SQAw+IXiMgJAEYCOFRVDwbwxyzVjYiI\nHEoZzFX1TQAbGi2+HMBdqlpTt803WaobERE55CVnfgCAH4rIOyISFZEBfleKiIjcaeFxn11UdaCI\nHAngOQD7+VstIiJyw0swXw1gOgCo6nwRqRWRLqq6Pn4jEeGkL0REHqiquN3HS5rlRQBDAEBEegNo\n2TiQx1UotP/uuOOOvNeBx+fu34oVii5dFOXlit12uwMvvpj/OvGz4/E1/udVuq6JUwHMBdBbRFaJ\nyGgAEwHsV9ddcSqAizy/OlEOzZoFnHYasPfewFFHATNm5LtGRP5JmWZR1fOSrLowC3UhyqoFC4Bj\njrHHe+4JvPNOfutD5CeOAPUoEonkuwpZFcbje/99YEBd36szz4zg88+Bb7/Nb52yIYyfXbywH59X\nkkmOJmXBIpqtsonc2rIF2G03YONGoGVLWzZgAPDQQ8CgQfmtG1E8EYHm6AIoUeAsXAgcdFB9IAeA\nI46w1AtRGDCYU1GIT7HEDBhgy4nCgMGcisKCBdYSj8eWOYUJgzkVheXLgb59Gy478EBgxQqgtjY/\ndSLyE4M5FYUvvwT22afhsrZtgQ4dgIqKvFSJyFcM5hR627YBlZXAHns0XbfPPhboiYKOwZxCb+VK\noEcPoHnzput69gTKy3NeJSLfMZhT6H35pQXtRHr2ZMucwoHBnEIvUb48hsGcwoLBnEKPLXMqBgzm\nFHrl5amDOXPmFAYM5hR6qVrm++xjwZzTCFHQMZhT6KUK5u3a2b+1a3NZIyL/MZhTqH33HbBunc1f\nngzz5hQGDOYUal9/DXTtmriPeUyPHsDq1bmrE1E2MJhTqFVUJB75Ga9bNw7pp+BjMKdQW7PGWuap\ndO1q2xEFWbobOk8UkYq6mzc3Xne9iNSKSOfsVY8oM2vWWMs7lW7dGMwp+NK1zCcBGNZ4oYj0AHAS\nAPbQpYJWUeGsZc40CwVdymCuqm8C2JBg1b0AbsxKjYh8xJY5FQvXOXMR+TGA1ar6URbqQ+SrigoG\ncyoOLdxsLCJtAfwClmL5frGvNSLykdMLoBUVNgpU+G2mgHIVzAH0AtATwCKxb313AO+LyFGq2mQM\nXVlZ2fePI5EIIpGI13oSeeKkZd6mDdCqFVBVBXTqlJt6EcVEo1FEo9GMyxFNMymFiPQE8JKqHpJg\n3RcAjlDVygTrNF3ZRNmkCpSWWuu8ffvU2/buDcycafcFJconEYGquj5HTNc1cSqAuQB6i8gqERnd\naBNGaypY1dX2f2lp+m05cIiCLmWaRVXPS7N+P3+rQ+SfWIrFSR6cF0Ep6DgClELLycXPGPY1p6Bj\nMKfQcnLxM4Ytcwo6BnMKLbctcwZzCjIGcwqttWuB3Xd3tm3XrrxBBQUbgzmF1vr1wK67Otu2Sxfb\nniioGMwptNatsyDtRJcutj1RUDGYU2i5aZnvuitb5hRsDOYUWm5a5p06AZs2ATt2ZLdORNnCYE6h\ntX6982DevDnQsSOwIdGEz0QBwGBOoeUmzQIw1ULBxmBOobR1q6VM2rVzvg97tFCQMZhTKMVSLG7m\nJ2ePFgoyBnMKJbcpFoBpFgo2BnMKJTc9WWKYZqEgYzCnUHLTkyWGwZyCjMGcQslrmoU5cwoqBnMK\nJaZZqNgwmFMoMc1CxYbBnEKJaRYqNmmDuYhMFJEKEfk4btkfRGSpiCwSkeki0jG71SRyh2kWKjZO\nWuaTAAxrtOxVAAepaj8AywDc4nfFiDLhJc3SuTNQWQmoZqdORNmUNpir6psANjRa9pqq1tY9fRdA\n9yzUjcgzL8G8ZUugTRugqio7dSLKJj9y5mMAzPKhHCLfVFZaS9utzp05cyIFU4tMdhaRWwFsV9W/\nJlpfVlb2/eNIJIJIJJLJyxE5Ultrc5N36uR+3112sWC+777+14sokWg0img0mnE5og4ShCLSE8BL\nqnpI3LKLAYwFMFRVtyXYR52UTeS3DRuAnj29pUuGDAFuvRUYOtT3ahE5IiJQVRdTxBlPLXMRGQbg\nBgDHJwrkRPm0YYO1sL2ItcyJgsZJ18SpAOYC6CMiq0RkDICHAJQCeE1EPhSRR7JcTyLHNm70lmIB\nbL+NG/2tD1EupG2Zq+p5CRZPzEJdiHzBljkVI44ApdBhMKdixGBOocNgTsWIwZxCh8GcihGDOYUO\ngzkVIwZzCh0GcypGDOYUOgzmVIwYzCl02M+cihGDOYVOpi3zjRs5DS4FD4M5hU4mwbykBGjVCqiu\n9rdORNnGYE6hk0kwB5g3p2BiMKdQUbU0CYM5FRsGcwqVzZuB1q0tXeIVgzkFEYM5hUqmKRaAwZyC\nicGcQoXBnIoVgzmFSiZ9zGM6dWIwp+BhMKdQ8SuYe7nlHFE+MZhTqFRVAR07ZlZGx44M5hQ8DOYU\nKn4Ec7bMKYgYzClU2DKnYpUymIvIRBGpEJGP45Z1FpHXRGSZiLwqIhlmKIn841cw52RbFDTpWuaT\nAAxrtOxmAK+pam8Ar9c9JyoIbJlTsUoZzFX1TQCNO2mNBDC57vFkAD/JQr2IPGEwp2LlJWfeVVUr\n6h5XAOjqY32IMsJgTsWqRSY7q6qKSNKZn8vKyr5/HIlEEIlEMnk5orT8DOaqgIg/9SJKJhqNIhqN\nZlyOaJpZ+EWkJ4CXVPWQuuefAoio6hoR2QPAHFU9MMF+mq5sIr/17Qs8/zxw0EGZldOmDbB+PdC2\nrT/1InJKRKCqrpsRXtIsMwGMqns8CsCLHsogyopNmzJvmQNMtVDwpOuaOBXAXAB9RGSViIwGcDeA\nk0RkGYAhdc+JCoIfaRaAA4coeFLmzFX1vCSrTsxCXYgysmMHsG0bUFqaeVlsmVPQcAQohcamTUD7\n9v5ctOTAIQoaBnMKDb9SLABb5hQ8DOYUGgzmVMwYzCk0GMypmDGYU2hUVQEdOvhTFoM5BQ2DOYUG\nW+ZUzBjMKTT8DObsZ05Bw2BOocGWORUzBnMKDb+DOfuZU5AwmFNosGVOxYzBnEKDwZyKGYM5hQaD\nORUzBnMKDb+D+aZNdoMKoiBgMKfQ8DOYl5TYv2+/9ac8omxjMKfQ8DOYA0y1ULAwmFNo+B3MOXCI\ngoTBnEJh505LibRv71+ZbJlTkDCYUyhs3mx3GGrm4zeaA4coSBjMKRT8TrEAbJlTsHgO5iJyi4gs\nEZGPReSvItLKz4oRucFgTsXOUzAXkZ4AxgLor6qHAGgO4Fz/qkXkDoM5FbsWHvfbBKAGQFsR2Qmg\nLYCvfKsVkUsM5lTsPLXMVbUSwD0AVgL4GsBGVZ3tZ8WI3GAwp2LnqWUuIr0A/C+AngCqAPxNRC5Q\n1Snx25WVlX3/OBKJIBKJeK0nUUrZCObsZ065EI1GEY1GMy5H1MPkEyJyDoCTVPXSuucXAhioqlfG\nbaNeyiby4q67LPDefbd/Zc6YAUycaP8T5YqIQFXF7X5ee7N8CmCgiLQREQFwIoBPPJZFlLFspVnY\nz5yCwmvOfBGApwAsAPBR3eLH/KoUkVvMmVOx89qbBar6ewC/97EuRJ4xmFOx4whQCgUGcyp2DOYU\nCtkI5h068AYVFBwM5hQKVVUWfP1UUgK0agVs2eJvuUTZwGBOoZCNljnAVAsFB4M5hUK2gjkHDlFQ\nMJhT4NXWAtXV/qdZALbMKTgYzCnwqquBtm2B5s39L5sDhygoGMwp8LKVYgGs3E2bslM2kZ8YzCnw\nshnMO3RgmoWCgcGcAi/bLXMGcwoCBnMKPAZzIgZzCgHmzIkYzCkEmDMnYjCnEGCahYjBnEKAwZyI\nwZxCgMGciMGcQoAXQIkYzCkEeAGUiMGcQiAXaRbeoIIKnedgLiKdROR5EVkqIp+IyEA/K0bkVDaD\neatWQLNmwLZt2SmfyC+eb+gM4AEAs1T1TBFpAaCdT3UiciWbwRyob523aZO91yDKlKeWuYh0BHCc\nqk4EAFXdoarMLFJe5CKY8yIoFTqvaZZ9AXwjIpNE5AMReVxE2vpZMSInVIHNm7NzY4oYXgSlIPCa\nZmkBoD+Aq1R1vojcD+BmAL+M36isrOz7x5FIBJFIxOPLESVWXQ20bg20yCRhmAb7mlM2RaNRRKPR\njMsR9XCZXkS6AZinqvvWPT8WwM2qekrcNuqlbCI3Vq8Gjj4a+Oqr7L3G6acDF1wAnHFG9l6DKEZE\noKridj9PaRZVXQNglYj0rlt0IoAlXsoiysSmTdnNlwNsmVMwZHJyejWAKSLSEsAKAKP9qRKRc9m+\n+AlYzpwXQKnQeQ7mqroIwJE+1oXItaqq7F78BNgyp2DgCFAKtFy0zBnMKQgYzCnQGMyJDIM5BRqD\nOZFhMKdAq6oCOnXK7mtw0BAFAYM5BdrGjblpmbM3CxU6BnMKtFy0zJlmoSBgMKdAy1XLnMGcCh2D\nOQVargYNMZhToWMwp0DLRZqlXTtg+3agpia7r0OUCQZzCrRcpFlEOKSfCh+DOQVaLlrmAPPmVPgY\nzCmwamttPvP27bP/WgzmVOgYzCmwNm8G2rYFmjfP/mvxIigVOgZzCqxcpVgAtsyp8DGYU2Dl4uJn\nDEeBUqFjMKfAykUf8xi2zKnQMZhTYDHNQlSPwZwCK5dpFl4ApULHYE6BxZY5Ub2MgrmINBeRD0Xk\nJb8qROQUL4AS1cu0ZT4OwCcA1Ie6ELnCC6BE9TwHcxHpDmAEgCcAiG81InIol2kW5syp0GXSMr8P\nwA0Aan2qC5EruU6zMJhTIWvhZScROQXAWlX9UEQiybYrKyv7/nEkEkEkknRTItd4AZTCIBqNIhqN\nZlyOqLpPd4vI7wBcCGAHgNYAOgCYpqoXxW2jXsomcmrQIODee+3/bNu4EdhnHwZ0yj4Rgaq6Tl17\nSrOo6i9UtYeq7gvgXABvxAdyolzIZZqlfXubobGWSUUqUH71M2cTnHIul2mW5s3tjkPsnkiFKuNg\nrqr/UtWRflSGyI1ctswB+8PBNAsVKo4ApUCqqbF/bdvm7jU7drQ/IESFiMGcCsbXXwMjRwKffZZ+\n29iAIcnhCAenLfMNG4Czzwbmzct+nYhiGMypIGzfDpx5JqAKRCLA0qWpt891igWwYJ6uZV5VBfzw\nh8B33wFnnQWsWZObuhExmFNBeOQRC5YzZgCXXQb85S+pt8/lxc8YJ8H8xReBnj3t/1GjgBtvzEnV\niBjMqTA8/zxw9dVAs2bWQp8501rpyRRqy3zmTKu/CHDVVcDLL9tZB1G2MZhT3lVUAIsXA0OG2POD\nD7ZAvmRJ8n1yOclWTLpgvm0bMHs2MGKEPd9jD+DAA4E5c3JTPypuDOaUdzNmAMOGAa1a2XMRuxA6\nc2byffKRZknXmyUaBQ45BNhtt/plP/kJ8MILWa8aEYM55d+MGcBppzVcdsopwCuvJN8nX2mWVL1Z\n/vEP4OSTGy477TQ7Ps5sQdnGYE55VVsLvPUWMHRow+VHHAEsWpQ8CBZimmXhQuDIIxsuO+AAoGVL\n4PPPs1s3IgZzyqvPPgN23dX+xevSBSgtBVatSrxfofVmUbW8/8EHN1131FHAe+9lt25EDOaUV+++\nCxx9dOJ1Bx9sATKRQuvNUlFh/3ft2nTd0UfbcRJlE4M55dV771nLNZFUwbzQWuaxVnmiEalsmVMu\nMJhTXnkN5vlomafqzZIsxQIA/fsDH3/M/uaUXQzmlDdbtwKffAIcfnji9ela5vkI5lVViS/Kpgrm\npaVAr152QZcoWxjMKW8++gjo0wdo0ybx+h/8APj0U2Dnzqbr8pFmadnS+sJv2dJ0XapgDlgvlwUL\nslc3IgZzypvFi4FDD02+vrQU6NYNWLGi6bp8pFmAxHnz2GjVgw5Kvt+hhyY/yyDyA4M55U261iwA\n7Lcf8MUXDZep5ifNAiQO5uvWASUlwC67JN8vVcqIyA8M5pQ36VqzgN1EeeXKhsu+/daCZ8uW2atb\nMomC+cqVVs9UDjrIgjlHglK2eA7mItJDROaIyBIRWSwi1/hZMQo/Jy3zffYByssbLstXqxxI3KOl\nvDx9MO/a1botxvqjE/ktk5Z5DYBrVfUgAAMBXCkiff2pFoVdZaXd7b5Hj9TbJQvmub74GZNofhYn\nwVyEqRbKLs/BXFXXqOrCusfVAJYC2NOvilFwbN4MTJkCfPON832WLEk+yCZeomCer4ufgAXzDRsa\nLisvB/beO/2+boP5t9/aPO+N00xEifiSMxeRngAOB8BBy0Vm/XqbJOuhh2xSqdmzne23eHH6fDmQ\nPJjns2XuJc0C1OfNnSgvtzsWPfAAMHiw9ccnSiXjYC4ipQCeBzCuroVOReSKK4CBA+3mxf/3f8A1\n1wA7dqTfz8nFTwDYay/gv/9tWGZlJdC5s/c6Z6JzZ3v9eE6D+cEHp77hRrybb7b39s03gd/8xqbS\nTdTfniimRSY7i0gJgGkAnlbVFxuvLysr+/5xJBJBJBLJ5OWowCxfDrzxhnUdFLE5yB94AHjsMQtE\nqSxbZtun07IlsPvuwFdf1QfMDRtSdwPMpl12aRqQnQbzPn3suNOZN8+mBX7iCXs+ahTw6KN2k4sz\nz3RfZyps0WgU0Wg043JEPfaVEhEBMBnAelW9NsF69Vo2BcNll9mt0X71q/plb74JXHmlje5MpWdP\n+0Ow337pX2fwYODuu4HjjrPnv/41UFNjLdZce+EFYPJku2EzYBdxd9vN8tvp8v+q9sdgxQqb4jeZ\niy8GDjsM+N//rV82Y4Yd7/z56V+Hgk1EoKquP+VM0iyDAfwUwAki8mHdv2EZlEcBsnkz8OyzdhPm\neIMH24XQ5cuT77t1q3XRc9KaBZrmzfPdMo9Ps6xcaRc/nQRYEaB379St85oa4KWXgDPOaLj81FOB\nTZs4+yIll0lvlrdUtZmqHqaqh9f9+4eflaPCNWuWBe7GN5Vo1szuezl9evJ9V6wA9t0XaN7c2WsV\nWjCP783iNMUSky6YR6PA/vs37bLZrBlw9tmp31cqbhwBSp5Mn970vp0xZ5yROugsW2ZBzakePRre\ncaiQLoCuXp2+r3y8dMF8+nTg9NMTrzv9dFvP7CUlwmBexFasAK67DrjqKrvA6NS2bXbz4h//OPH6\n44+3gLV2beL1boP5Hns0HDlZSC3zNWusfk6lC+Z//3vy9/Xwwy0N46av+tat1jPm6qvtoiqFF4N5\nkVqxAjjhhPo5Tn74Q+DLL53t+/rrQL9+1sskkZIS6644d27i9W6DebduFjRj8tkyb9fOuklu22bP\n16yx+jmVKpivXGnl9umTeL2InQ298IKz16quBkaMsJtJ9+hhLfs33nBeVwoWBvMiVFsLnHUWcMMN\nwPjxwL33ApdeCvzsZ872nz0bGJbmUvcxxyQP5p99llkwz2fLXKRh69xtMD/gALs4XFvbdN3cufa+\npbqYOmyY/TF14re/tZ42zz4L3Hgj8Le/AeecYwO9KHwYzIvQs88CLVpYeiXm+ustyPz73+n3f+MN\nYMiQ1NsMHgy8/XbidW5b5l27WtCM5YorK/MXzIHMgnn79jaKNFFa6+237X1L5dhjgffft66QqaxZ\nY/3977mn/kLz8cfb9Yy773ZeXwoOBvMAqqqy1vTIkTbqsqbG+b47dgC3324/6PgWYMuWQFmZrUvl\nm28sHTNgQOrtjjoKWLgQ+O67hssrK21ZorvYJ9O2rdVv0ybLAQPJ706UC507ew/mQPJUy9y56YN5\nu3bWBz3ZH8qY8eOBCy9senH2l78EJkywC7dOqQKvvmoDlm67jXPFFCoG84D59ls71Z4713Kgf/4z\nMGaM8x4Os2ZZrjtRy/r88y3IpOs6d9xx1rJPpbQUOPBAa0XGW77cgpnbgS+xVEssxZLPgTOxvuaq\n/gXz6mq7RV7//un3HzIkde57+3b7I39tk6F8wJ572uf8+OPO6/vAA8DllwMnnmj1HDyYAb0QMZjn\nWEUF8PDDNstgtYeZbMaMsX7If/ubjRScPdvu/P7QQ872nzDB8uOJtGhhOdW//jX5/nPmpE+xxAwa\nZEPT47lNscTEgnm+UyxAfZqlutr+qJSWuts/UTBfsMAuKrdunX7/dMH8H/+w+6cm6/9+6aXApEnO\n5nqJRu0s7vXXgf/5H+D+++2PxIgR9ReBndq500bOPvQQJw7LBgZzF2Ij8LZv97b/Cy8AhxwCvPOO\ntZyOPjr1SMnG5syx13/iifqWadu2wLRpliJJNwXtf/9rOfGzzkq+zQUXWDBP1tL/97+t54sThx/e\n9I70XoN5LG++YUP+erLExPqar1njLl0UkyiYL1xo75cTAwda98REN5YG7PM7//zk+x92mA32Snch\ntbbWrqs8+qhNvxBz7bU2DcPDDzurL2AzTZ5yCnDnnTbVw/HHe8/dqwIffJC862uxCn0wj+X7LroI\n+PnPnc9aF6+2FvjFL+wU9eKLbfTic8+5K+PDD20uk7//HXj6aeCVV+zUdcSI5D/KxnX4+c+Bu+6y\nO8TH69XLWtT33JO6jClTrGtb+/bJtxkwwN6zxukRwHL15eXWgnSiXz//gnkhtsy9pFiAxMF80SLn\n72vr1tYoWLCg6brqavtupZuQ65JLgCefTL3NtGmWox85suFyEcvJjx/fdAbJRFQtf9+9u52pPf64\nHe8TT6Q+C0xk/nw79rPOsi6cZ5zh7PfT2Nq1dv3gpz8FnnrK3XWnQhXqYK4KjB1r07IedZR9MSMR\nYOpUd+WMHWsTSH35pZ0evviilTlzprP9t261H9fDDwNHHmnLRKzVM2gQcNNN6ct46SXb5+yzE6+/\n5RbrvZCq29m0acC556Z+nVhf5pdfbrru3Xctp1tSkr6+gE1xu2xZwzOZTIN5obTMMwnm++1nI1rj\n3xc3wRxInMICLP0yYEDTaRYaO/NMu36SLFWiahOalZUlvj7Rt69N23D//enrOmmSXXD905/qvzt7\n7mmjWceNszEPTixZYnPU3Hab9Z2vqAA6dLC0k5uUT+x7vG6dnSFMmGBxwcsfhYKiqln5Z0Xn1803\nqw4cqLp5c/2yjz5S3X131XnznJUxZYrqgQeqbtnScPl776l27qxaXp6+jPHjVU87LfG6DRtUu3VT\nXbgwdRknnqj69NOpt7ngAtUHHki8bvVq1V12Uf3uu/T1nT3b3rfG7rhD9aab0u8fr2/f+mOrrVVt\n105140Z3ZaiqTpigevHFqvfcozpunPv9/TR5sr3XDz6oesUV3sro1Uv100/t8fbtqm3aqFZXO9//\n2WdVTz216fIrrrDvmxPHHqv68suJ1735pn3va2uT779kiWrXrqm/U1VVqrvuqrpoUeL1v/mN6tln\np6/rtm2qvXurPvlkw+W1tfbbuv769GWoqn79teoee6i+8EL9sp07VUeNUh02THXHDmflZFNd7HQd\nc0PbMn/rLTt9evnlhheoDjnEWrDnntv0Xo6NVVTYNKRTplhuOt6RR1rrPH6a0kTWrwf+8AdLjyTS\nqZOlT3772+RlLF1qFznTnTpffLG1ghKZMQM4+WRnd7Q/9lhrBTW+Pdq8edYidCM+1fL11/ZZeLnl\nW+PeLPmUaZoFaJhq+ewz60LYrp3z/WMt88bXNv75T+BHP3JWxumnJx9NOmkSMHp06l5DP/iBnX1N\nm5Z8m0ceAU46CTj00MTrr73Wfqvz56eu6x//aL2jRo1quFzEfs9TpyYfpBajammVyy6zs4qYZs0s\n5VNdbb3DAsvLXwAn/5DHlvl336kedJC1XpIZPdpa7qmMG6d6zTXJ12/dai2s2bOTb3PHHaqXXpr6\ndTZvtrOFTz5JvP6aa1RvvTV1GarWwujRQ/XDD5uuGzpUdfr09GXEjBih+txzDcvu2FG1osJ5Gaqq\nd92let119viNN1SPO87d/jHvv6962GGqV15pLeJ8eust1UGDVMeMUX3sMW9ljBun+sc/2uOnn1Y9\n6yz3ZXTvrrp8ef3z5cvtLC9VazreF19Yq7mmpuHy6mrVTp2sFZvO9OnWwk9kyxb7Xn/8ceoyHnkk\n8VlGzFdf2VnwF18k3+bJJ60eqY79uedUDz88eet7yRLVLl3s9fIJHlvmoQzmf/mLpSVSfbCrVtkX\nZOXKxOvLy239mjWpX2vyZNUTTki8butWOw1NFqTjlZWpXn550+U1NVZG/I82ldtuU7322obLqqpU\nS0vdncY/8IAFq5jFi+0Pl1uzZtkfElX7XC65xH0ZqvYDa9fO3otZs7yV4ZdVq+wP2x57qM6c6a2M\nP/1J9bLL7PGNN6reeaf7Ms46S/WppxqWOWqUuzIOPVT17bcbLnv6adXhw53t/913FgATBdrHH08d\npGO+/VZ1t91Uly1LvP7669On1nbssJTeK68kr2e6hpeqfRZjx6avczZ5DeahS7PU1FhK49e/Tn2K\n2L27nW7deWfi9ePH24XPdF3PzjvPLuC8m+BW1lOnWnezvn3T1/uSS4Bnnml6EWbOHDsF33//9GUA\n9XNex59+v/66nZa7OY0fMgT417/qn3tJsQAN70jv9eInYJ/D2LGWLho+3FsZfune3brGnXNO+pGw\nycSnWRYvtvfJrcYXQaNR52MAYoYPt94v8aZNs2NzomVL61HyzDNN1z32mLP5ftq0sc/2wQebrqus\nBCZOtNk9U2ne3O54FX/Xq3hPPmm9voYOTV3OjTfa8QdyUJSXvwBO/iFPLfMJE1RPOsnZthUVdjrZ\nOHWwfr3z00xVO+0/88ymy/v3d9eKPOUU1YkTGy4bPVr13nudl1Fbay2QDz6oX3bZZe7KULW0SufO\n9aecY8Yg9RfLAAAJ+0lEQVRYy8+t2lo7K6istOOLv/BUzMrLVffc0x7vu6/qZ5+5L2PePEs9qdr7\n3K2b6n/+466MaFT1iCPqn2/Zotqhg/0G3JRx6KENly1caGkgpxcUV6+231x8ZwVV1d/9zvnZxo4d\n9l427tywc6ddPI1GnZVz003eL2z7AUyz2Be6b1/LzTp12WWW1453992qF17ovIyqqqb55EWLLH/t\n5ur4jBmqxxxT/3zbNuuB4jaHd8MNlm5RtfekRw9nqZ7GRo5UfeYZe9y3b8M/EG4MGGCn8r17W16S\nLMC0aaO6dq1q69ZN89ZObNum2ratBcBlyyx4Os2Xx2zf3vC7O316fVrMqZ07Vffaq+Fne/XVqr/8\npbtyTj1VddKkhuXut5/1HHPqvvua9o6ZMcO+g07fm1gjr7LS+ev6yWswD1Wa5fXX7XQrEnG+z3XX\n2RX3WD/VHTusP2y6XirxOnSwvtlPPVW/bNIkG6jk9NZogJ3yLltmd7sH7PS3Xz/rk+vGaafV3+nn\nk0/sav2BB7orA7CRnm++aT03Vq2ynkBe9O1rvXHKy+1Ul+wz2X9/623Vq1f6uW4SadXKvh/z59vn\ndNxx7uesKSmx1Mw//2nPX3gh+R2kkmnWzNIysfEbO3bYzJwXXeSunMa9saJRSw26SWWNGQO89lrD\nicTuu89mBXX63uy+u/X8SjeoqtB4DuYiMkxEPhWR5SLiYNhL9j34oHUXdPOF7tPHhjfHule98ooF\nTycTHsW75BIbfKBqg0GmTLEvpxslJdb9MJZ/nDrVcvJuHX20DYj4z39sno7hw71NTHXccTZ8/513\n7AflJeAAFsxj72vj0avFrHdvuwbg5JpKMoMGWZe8WDD3IpY337nTBhI1HvHpxHnn2fdV1RpVPXu6\n/8N9yinWDTc2iCg2j5Cb726HDtbteMIEe750qU1g1vgG2elccYV1U0w073zB8tKcB9AcwOcAegIo\nAbAQQF/NY5rliy/sqnrjwT1OTJtW373q5JOb5q0TmTNnToPntbWqffpYt7Xp0713wfvXv1QPOcRO\nnTt2VF23zls5o0apPvywnTK/+KL7/efMmfP9Kfhuu6nefru3eqhanrxNG9Uf/ch7GX5r/Pnlwy23\n2PuS6Xvbvr2VE0tzuD22lSvtt/PWW/bd86K2VnX//S0lMmqUpTu8GDfOUoSVlcm//+mOL5avr6mx\n8px0622stla1Xz/VV191v2+mkOM0y1EAPlfVL1W1BsAzAJLcuTA3nnjCBgQ0HtzjxKmnWmvgppus\nlZNsyHy8aDTa4LlIfes8NuDCi2OPtcFM/fvbUOMuXbyVM2KEzR/z7rvuezgAdnwlJTYp0ty56ec5\nT6VvX5vSwGtPlmxo/PnlQ+/e9r5k0jL/8Y/tM1q40AbxAO6PrUcPG/z0q1/Z98YLEfv9nX66neU6\n+Q0lMno0MHmyTUQ3fHji73+644ulJq++2soZO9Z9PUSsdf7II+73zRePJ87YC0Dc/dKxGsDRmVfH\nm5oa677k9HZajZWU2Ic+Z47lvd104Yt30UWWthFxP4FQTLNmNjPiV19lFvxOOslmzjv++NQTa6Wz\n997e943p1cve40IK5oUg9n5kEsxFGs5o6NXw4TbK8tZbvZdx222WounUyf11nph+/WxemdtvTz2y\nNJ0//9muG913X/KpgNM5/3yb82jVqqY3+ShEXoO5w1sh5MZLL9nFpEx+FEOHpu+Dmk7XrtYK7tjR\n/RzXjcvxMrVqvF12sftJprtXZy60aGGBK9mNiotV7952gbwQ/sgNH279wo85xnsZzZs7n8Y3ldGj\n7U5aXs4oY/r3d3/dq7HSUpsS+tFHk49HKSSi6j4ui8hAAGWqOqzu+S0AalV1fNw2BRXwiYiCQlVd\nd1nwGsxbAPgMwFAAXwN4D8B5qrrUdWFERJQxT2kWVd0hIlcB+CesZ8sEBnIiovzx1DInIqLC4tsI\nUBHpLCKvicgyEXlVRDol2a6TiDwvIktF5JO6/HvBc3p8dds2F5EPReSlXNYxE06OT0R6iMgcEVki\nIotF5Jp81NUpJwPbROTBuvWLRMSHy3e5k+74ROSCuuP6SETeFpEks4oXJqcDE0XkSBHZISKn57J+\nmXL4/YzUxZLFIhJNWaCXzumJ/gH4PYAb6x7fBODuJNtNBjCm7nELAB39qkM2/zk9vrr11wGYAmBm\nvuvt5/EB6AbgsLrHpbDrJn1zVUeXx+NkYNsIALPqHh8N4J1819vn4xsU+30BGBa244vb7g0ALwM4\nI9/19vnz6wRgCYDudc93TVWmn3OzjIQFatT9/5PGG4hIRwDHqepEwHLvqprmfj8FI+3xAYCIdIcF\niScAeBhEnzdpj09V16jqwrrH1QCWAvDYozjrnAxs+/6YVfVdAJ1EJMNOoTmT9vhUdV7c7+tdAN1z\nXMdMOB2YeDWA5wF8k8vK+cDJ8Z0PYJqqrgYAVV2XqkA/g3lXVa2oe1wBINGPYl8A34jIJBH5QEQe\nFxEPYzbzwsnxAcB9AG4AEKRZHQDnxwcAEJGeAA6HBYlClGhg214OtglKwHNyfPEuATArqzXyV9rj\nE5G9YAEwdrO3IF0AdPL5HQCgc11qc4GIXJiqQFe9WUTkNdipdmMNxo2pqibpZ94CQH8AV6nqfBG5\nH8DNAH7pph7ZkunxicgpANaq6ociEslOLb3z4fOLlVMKaw2Nq2uhFyKnP+zGZ09BCQiO6ykiJwAY\nA2Bw9qrjOyfHdz+Am+u+r4JgnQk7Ob4SWLwcCqAtgHki8o6qLk+0satgrqonJVsnIhUi0k1V14jI\nHgDWJthsNYDVqhq7fevzsGBeEHw4vmMAjBSREQBaA+ggIk+pqsvJQLPDh+ODiJQAmAbgaVV9MUtV\n9cNXAOIHYfeAff9SbdO9blkQODk+1F30fBzAMFXd0Hh9AXNyfEcAeMbiOHYFMFxEalR1Zm6qmBEn\nx7cKwDpV3Qpgq4j8G0A/AAmDuZ9plpkAYvfOHgWgyQ9dVdcAWCUisQHMJ8IS/EHg5Ph+oao9VHVf\nAOcCeKNQArkDaY+vrvUzAcAnqnp/DuvmxQIAB4hITxFpCeAc2DHGmwngIuD7Uc0b41JNhS7t8YnI\n3gCmA/ipqn6ehzpmIu3xqep+qrpv3e/teQCXBySQA86+nzMAHFvXO64t7CL9J0lL9PHqbGcAswEs\nA/AqgE51y/cE8Pe47foBmA9gEeyLFpTeLI6OL2774xGs3ixpjw/AsbBrAQsBfFj3b1i+657imIbD\netx8DuCWumU/A/CzuG0erlu/CED/fNfZz+ODXYRfH/dZvZfvOvv9+cVtOwnA6fmus9/HB+DnsAbv\nxwCuSVUeBw0REYVAqG4bR0RUrBjMiYhCgMGciCgEGMyJiEKAwZyIKAQYzImIQoDBnIgoBBjMiYhC\n4P8B7pSicVelylUAAAAASUVORK5CYII=\n",
       "text": [
        "<matplotlib.figure.Figure at 0x1168d9a10>"
       ]
      }
     ],
     "prompt_number": 36
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "def dirichlet2(x,N):\n",
      "    seterr(divide='ignore')\n",
      "    y = sin(N*pi*x)/sin(pi*x)\n",
      "    y[isnan(y)] = N\n",
      "    return y"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 30
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "plot(abs(dirichlet2(linspace(-0.5,0.5,201),16)))"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "pyout",
       "prompt_number": 43,
       "text": [
        "[<matplotlib.lines.Line2D at 0x11743b7d0>]"
       ]
      },
      {
       "metadata": {},
       "output_type": "display_data",
       "png": "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\ngg==\n",
       "text": [
        "<matplotlib.figure.Figure at 0x11709a850>"
       ]
      }
     ],
     "prompt_number": 43
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [],
     "language": "python",
     "metadata": {},
     "outputs": []
    }
   ],
   "metadata": {}
  }
 ]
}