Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save alexlib/193f3da1cfe012391e7f to your computer and use it in GitHub Desktop.
Save alexlib/193f3da1cfe012391e7f to your computer and use it in GitHub Desktop.
This file has been truncated, but you can view the full file.
{
"metadata": {
"name": "Crash Course v0.5"
},
"nbformat": 3,
"nbformat_minor": 0,
"worksheets": [
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": "# A Crash Course in Python for Scientists\n[Rick Muller](http://www.cs.sandia.gov/~rmuller/), Sandia National Laboratories\n\nversion 0.5, Released 7/3/2013, Alpha\n\nThis work is licensed under a [Creative Commons Attribution-ShareAlike 3.0 Unported License](http://creativecommons.org/licenses/by-sa/3.0/deed.en_US)."
},
{
"cell_type": "markdown",
"metadata": {},
"source": "## Why Python?\nPython is the programming language of choice for many scientists to a large degree because it offers a great deal of power to analyze and model scientific data with relatively little overhead in terms of learning, installation or development time. It is a language you can pick up in a weekend, and use for the rest of one's life.\n\nThe [Python Tutorial](http://docs.python.org/2/tutorial/) is a great place to start getting a feel for the language. To complement this material, I taught a [Python Short Course](http://www.wag.caltech.edu/home/rpm/python_course/) years ago to a group of computational chemists during a time that I was worried the field was moving too much in the direction of using canned software rather than developing one's own methods. I wanted to focus on what working scientists needed to be more productive: parsing output of other programs, building simple models, experimenting with object oriented programming, extending the language with C, and simple GUIs. \n\nI'm trying to do something very similar here, to cut to the chase and focus on what scientists need. In the last year or so, the [IPython Project](http://ipython.org) has put together a notebook interface that I have found incredibly valuable. A large number of people have released very good IPython Notebooks that I have taken a huge amount of pleasure reading through. Some ones that I particularly like include:\n\n* Rob Johansson's [excellent notebooks](http://jrjohansson.github.io/), including [Scientific Computing with Python](https://github.com/jrjohansson/scientific-python-lectures) and [Computational Quantum Physics with QuTiP](https://github.com/jrjohansson/qutip-lectures) lectures;\n* [XKCD style graphs in matplotlib](http://nbviewer.ipython.org/url/jakevdp.github.com/downloads/notebooks/XKCD_plots.ipynb);\n* [A collection of Notebooks for using IPython effectively](https://github.com/ipython/ipython/tree/master/examples/notebooks#a-collection-of-notebooks-for-using-ipython-effectively)\n* [A gallery of interesting IPython Notebooks](https://github.com/ipython/ipython/wiki/A-gallery-of-interesting-IPython-Notebooks)\n\nI find IPython notebooks an easy way both to get important work done in my everyday job, as well as to communicate what I've done, how I've done it, and why it matters to my coworkers. I find myself endlessly sweeping the [IPython subreddit](http://ipython.reddit.com) hoping someone will post a new notebook. In the interest of putting more notebooks out into the wild for other people to use and enjoy, I thought I would try to recreate some of what I was trying to get across in the original Python Short Course, updated by 15 years of Python, Numpy, Scipy, Matplotlib, and IPython development, as well as my own experience in using Python almost every day of this time."
},
{
"cell_type": "markdown",
"metadata": {},
"source": "## What You Need to Install\n\nThere are two branches of current releases in Python: the older-syntax Python 2, and the newer-syntax Python 3. This schizophrenia is largely intentional: when it became clear that some non-backwards-compatible changes to the language were necessary, the Python dev-team decided to go through a five-year (or so) transition, during which the new language features would be introduced and the old language was still actively maintained, to make such a transition as easy as possible. We're now (2013) past the halfway point, and, IMHO, at the first time when I'm considering making the change to Python 3.\n\nNonetheless, I'm going to write these notes with Python 2 in mind, since this is the version of the language that I use in my day-to-day job, and am most comfortable with. If these notes are important and are valuable to people, I'll be happy to rewrite the notes using Python 3.\n\nWith this in mind, these notes assume you have a Python distribution that includes:\n\n* [Python](http://www.python.org) version 2.7;\n* [Numpy](http://www.numpy.org), the core numerical extensions for linear algebra and multidimensional arrays;\n* [Scipy](http://www.scipy.org), additional libraries for scientific programming;\n* [Matplotlib](http://matplotlib.sf.net), excellent plotting and graphing libraries;\n* [IPython](http://ipython.org), with the additional libraries required for the notebook interface.\n\nA good, easy to install option that supports Mac, Windows, and Linux, and that has all of these packages (and much more) is the [Entought Python Distribution](https://www.enthought.com/products/epd), also known as EPD, which appears to be changing its name to Enthought Canopy. Enthought is a commercial company that supports a lot of very good work in scientific Python development and application. You can either purchase a license to use EPD, or there is also a [free version](https://www.enthought.com/products/epd/free/) that you can download and install.\n\nHere are some other alternatives, should you not want to use EPD:\n\n**Linux** Most distributions have an installation manager. Redhat has yum, Ubuntu has apt-get. To my knowledge, all of these packages should be available through those installers.\n\n**Mac** I use [Macports](http://www.macports.org/), which has up-to-date versions of all of these packages.\n\n**Windows** The [PythonXY](https://code.google.com/p/pythonxy/) package has everything you need: install the package, then go to Start > PythonXY > Command Prompts > IPython notebook server.\n\n**Cloud** This notebook is currently not running on the [IPython notebook viewer](http://nbviewer.ipython.org/), but will be shortly, which will allow the notebook to be viewed but not interactively. I'm keeping an eye on [Wakari](http://www.wakari.io), from [Continuum Analytics](http://continuum.io/), which is a cloud-based IPython notebook. Wakari appears to support free accounts as well. Continuum is a company started by some of the core Enthought Numpy/Scipy people focusing on big data. \n\nContinuum also supports a bundled, multiplatform Python package called [Anaconda](https://store.continuum.io/) that I'll also keep an eye on."
},
{
"cell_type": "markdown",
"metadata": {},
"source": "# I. Python Overview\nThis is a quick introduction to Python. There are lots of other places to learn the language more thoroughly. I have collected a list of useful links, including ones to other learning resources, at the end of this notebook. If you want a little more depth, [Python Tutorial](http://docs.python.org/2/tutorial/) is a great place to start, as is Zed Shaw's [Learn Python the Hard Way](http://learnpythonthehardway.org/book/).\n\nThe lessons that follow make use of the IPython notebooks. There's a good introduction to notebooks [in the IPython notebook documentation](http://ipython.org/notebook.html) that even has a [nice video](http://www.youtube.com/watch?v=H6dLGQw9yFQ#!) on how to use the notebooks. You should probably also flip through the [IPython tutorial](http://ipython.org/ipython-doc/dev/interactive/tutorial.html) in your copious free time.\n\nBriefly, notebooks have code cells (that are generally followed by result cells) and text cells. The text cells are the stuff that you're reading now. The code cells start with \"In []:\" with some number generally in the brackets. If you put your cursor in the code cell and hit Shift-Enter, the code will run in the Python interpreter and the result will print out in the output cell. You can then change things around and see whether you understand what's going on. If you need to know more, see the [IPython notebook documentation](http://ipython.org/notebook.html) or the [IPython tutorial](http://ipython.org/ipython-doc/dev/interactive/tutorial.html)."
},
{
"cell_type": "markdown",
"metadata": {},
"source": "## Using Python as a Calculator"
},
{
"cell_type": "markdown",
"metadata": {},
"source": "Many of the things I used to use a calculator for, I now use Python for:"
},
{
"cell_type": "code",
"collapsed": false,
"input": "2+2",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 1,
"text": "4"
}
],
"prompt_number": 1
},
{
"cell_type": "code",
"collapsed": false,
"input": "(50-5*6)/4",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 2,
"text": "5"
}
],
"prompt_number": 2
},
{
"cell_type": "markdown",
"metadata": {},
"source": "(If you're typing this into an IPython notebook, or otherwise using notebook file, you hit shift-Enter to evaluate a cell.)"
},
{
"cell_type": "markdown",
"metadata": {},
"source": "There are some gotchas compared to using a normal calculator."
},
{
"cell_type": "code",
"collapsed": false,
"input": "7/3",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 3,
"text": "2"
}
],
"prompt_number": 3
},
{
"cell_type": "markdown",
"metadata": {},
"source": "Python integer division, like C or Fortran integer division, truncates the remainder and returns an integer. At least it does in version 2. In version 3, Python returns a floating point number. You can get a sneak preview of this feature in Python 2 by importing the module from the future features:\n\n from __future__ import division"
},
{
"cell_type": "markdown",
"metadata": {},
"source": "Alternatively, you can convert one of the integers to a floating point number, in which case the division function returns another floating point number."
},
{
"cell_type": "code",
"collapsed": false,
"input": "7/3.",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 4,
"text": "2.3333333333333335"
}
],
"prompt_number": 4
},
{
"cell_type": "code",
"collapsed": false,
"input": "7/float(3)",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 5,
"text": "2.3333333333333335"
}
],
"prompt_number": 5
},
{
"cell_type": "markdown",
"metadata": {},
"source": "In the last few lines, we have sped by a lot of things that we should stop for a moment and explore a little more fully. We've seen, however briefly, two different data types: **integers**, also known as *whole numbers* to the non-programming world, and **floating point numbers**, also known (incorrectly) as *decimal numbers* to the rest of the world.\n\nWe've also seen the first instance of an **import** statement. Python has a huge number of libraries included with the distribution. To keep things simple, most of these variables and functions are not accessible from a normal Python interactive session. Instead, you have to import the name. For example, there is a **math** module containing many useful functions. To access, say, the square root function, you can either first\n\n from math import sqrt\n\nand then"
},
{
"cell_type": "code",
"collapsed": false,
"input": "sqrt(81)",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 6,
"text": "9.0"
}
],
"prompt_number": 6
},
{
"cell_type": "markdown",
"metadata": {},
"source": "or you can simply import the math library itself"
},
{
"cell_type": "code",
"collapsed": false,
"input": "import math\nmath.sqrt(81)",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 7,
"text": "9.0"
}
],
"prompt_number": 7
},
{
"cell_type": "markdown",
"metadata": {},
"source": "You can define variables using the equals (=) sign:"
},
{
"cell_type": "code",
"collapsed": false,
"input": "width = 20\nlength = 30\narea = length*width\narea",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 8,
"text": "600"
}
],
"prompt_number": 8
},
{
"cell_type": "markdown",
"metadata": {},
"source": "If you try to access a variable that you haven't yet defined, you get an error:"
},
{
"cell_type": "code",
"collapsed": false,
"input": "volume",
"language": "python",
"metadata": {},
"outputs": [
{
"ename": "NameError",
"evalue": "name 'volume' is not defined",
"output_type": "pyerr",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m\n\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m<ipython-input-9-0c7fc58f9268>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mvolume\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
"\u001b[0;31mNameError\u001b[0m: name 'volume' is not defined"
]
}
],
"prompt_number": 9
},
{
"cell_type": "markdown",
"metadata": {},
"source": "and you need to define it:"
},
{
"cell_type": "code",
"collapsed": false,
"input": "depth = 10\nvolume = area*depth\nvolume",
"language": "python",
"metadata": {},
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {},
"source": "You can name a variable *almost* anything you want. It needs to start with an alphabetical character or \"\\_\", can contain alphanumeric charcters plus underscores (\"\\_\"). Certain words, however, are reserved for the language:\n\n and, as, assert, break, class, continue, def, del, elif, else, except, \n exec, finally, for, from, global, if, import, in, is, lambda, not, or,\n pass, print, raise, return, try, while, with, yield\n\nTrying to define a variable using one of these will result in a syntax error:"
},
{
"cell_type": "code",
"collapsed": false,
"input": "return = 0",
"language": "python",
"metadata": {},
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {},
"source": "The [Python Tutorial](http://docs.python.org/2/tutorial/introduction.html#using-python-as-a-calculator) has more on using Python as an interactive shell. The [IPython tutorial](http://ipython.org/ipython-doc/dev/interactive/tutorial.html) makes a nice complement to this, since IPython has a much more sophisticated iteractive shell."
},
{
"cell_type": "markdown",
"metadata": {},
"source": "## Strings\nStrings are lists of printable characters, and can be defined using either single quotes"
},
{
"cell_type": "code",
"collapsed": false,
"input": "'Hello, World!'",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 10,
"text": "'Hello, World!'"
}
],
"prompt_number": 10
},
{
"cell_type": "markdown",
"metadata": {},
"source": "or double quotes"
},
{
"cell_type": "code",
"collapsed": false,
"input": "\"Hello, World!\"",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 11,
"text": "'Hello, World!'"
}
],
"prompt_number": 11
},
{
"cell_type": "markdown",
"metadata": {},
"source": "But not both at the same time, unless you want one of the symbols to be part of the string."
},
{
"cell_type": "code",
"collapsed": false,
"input": "\"He's a Rebel\"",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 12,
"text": "\"He's a Rebel\""
}
],
"prompt_number": 12
},
{
"cell_type": "code",
"collapsed": false,
"input": "'She asked, \"How are you today?\"'",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 13,
"text": "'She asked, \"How are you today?\"'"
}
],
"prompt_number": 13
},
{
"cell_type": "markdown",
"metadata": {},
"source": "Just like the other two data objects we're familiar with (ints and floats), you can assign a string to a variable"
},
{
"cell_type": "code",
"collapsed": false,
"input": "greeting = \"Hello, World!\"",
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 14
},
{
"cell_type": "markdown",
"metadata": {},
"source": "The **print** statement is often used for printing character strings:"
},
{
"cell_type": "code",
"collapsed": false,
"input": "print greeting",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": "Hello, World!\n"
}
],
"prompt_number": 15
},
{
"cell_type": "markdown",
"metadata": {},
"source": "But it can also print data types other than strings:"
},
{
"cell_type": "code",
"collapsed": false,
"input": "print \"The area is \",area",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": "The area is 600\n"
}
],
"prompt_number": 16
},
{
"cell_type": "markdown",
"metadata": {},
"source": "In the above snipped, the number 600 (stored in the variable \"area\") is converted into a string before being printed out."
},
{
"cell_type": "markdown",
"metadata": {},
"source": "You can use the + operator to concatenate strings together:"
},
{
"cell_type": "code",
"collapsed": false,
"input": "statement = \"Hello,\" + \"World!\"\nprint statement",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": "Hello,World!\n"
}
],
"prompt_number": 17
},
{
"cell_type": "markdown",
"metadata": {},
"source": "Don't forget the space between the strings, if you want one there. "
},
{
"cell_type": "code",
"collapsed": false,
"input": "statement = \"Hello, \" + \"World!\"\nprint statement",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": "Hello, World!\n"
}
],
"prompt_number": 18
},
{
"cell_type": "markdown",
"metadata": {},
"source": "You can use + to concatenate multiple strings in a single statement:"
},
{
"cell_type": "code",
"collapsed": false,
"input": "print \"This \" + \"is \" + \"a \" + \"longer \" + \"statement.\"",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": "This is a longer statement.\n"
}
],
"prompt_number": 19
},
{
"cell_type": "markdown",
"metadata": {},
"source": "If you have a lot of words to concatenate together, there are other, more efficient ways to do this. But this is fine for linking a few strings together."
},
{
"cell_type": "markdown",
"metadata": {},
"source": "## Lists\nVery often in a programming language, one wants to keep a group of similar items together. Python does this using a data type called **lists**."
},
{
"cell_type": "code",
"collapsed": false,
"input": "days_of_the_week = [\"Sunday\",\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\"]",
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 20
},
{
"cell_type": "markdown",
"metadata": {},
"source": "You can access members of the list using the **index** of that item:"
},
{
"cell_type": "code",
"collapsed": false,
"input": "days_of_the_week[2]",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 21,
"text": "'Tuesday'"
}
],
"prompt_number": 21
},
{
"cell_type": "markdown",
"metadata": {},
"source": "Python lists, like C, but unlike Fortran, use 0 as the index of the first element of a list. Thus, in this example, the 0 element is \"Sunday\", 1 is \"Monday\", and so on. If you need to access the *n*th element from the end of the list, you can use a negative index. For example, the -1 element of a list is the last element:"
},
{
"cell_type": "code",
"collapsed": false,
"input": "days_of_the_week[-1]",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 22,
"text": "'Saturday'"
}
],
"prompt_number": 22
},
{
"cell_type": "markdown",
"metadata": {},
"source": "You can add additional items to the list using the .append() command:"
},
{
"cell_type": "code",
"collapsed": false,
"input": "languages = [\"Fortran\",\"C\",\"C++\"]\nlanguages.append(\"Python\")\nprint languages",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": "['Fortran', 'C', 'C++', 'Python']\n"
}
],
"prompt_number": 23
},
{
"cell_type": "markdown",
"metadata": {},
"source": "The **range()** command is a convenient way to make sequential lists of numbers:"
},
{
"cell_type": "code",
"collapsed": false,
"input": "range(10)",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 24,
"text": "[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]"
}
],
"prompt_number": 24
},
{
"cell_type": "markdown",
"metadata": {},
"source": "Note that range(n) starts at 0 and gives the sequential list of integers less than n. If you want to start at a different number, use range(start,stop)"
},
{
"cell_type": "code",
"collapsed": false,
"input": "range(2,8)",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 25,
"text": "[2, 3, 4, 5, 6, 7]"
}
],
"prompt_number": 25
},
{
"cell_type": "markdown",
"metadata": {},
"source": "The lists created above with range have a *step* of 1 between elements. You can also give a fixed step size via a third command:"
},
{
"cell_type": "code",
"collapsed": false,
"input": "evens = range(0,20,2)\nevens",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 26,
"text": "[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]"
}
],
"prompt_number": 26
},
{
"cell_type": "code",
"collapsed": false,
"input": "evens[3]",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 27,
"text": "6"
}
],
"prompt_number": 27
},
{
"cell_type": "markdown",
"metadata": {},
"source": "Lists do not have to hold the same data type. For example,"
},
{
"cell_type": "code",
"collapsed": false,
"input": "[\"Today\",7,99.3,\"\"]",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 28,
"text": "['Today', 7, 99.3, '']"
}
],
"prompt_number": 28
},
{
"cell_type": "markdown",
"metadata": {},
"source": "However, it's good (but not essential) to use lists for similar objects that are somehow logically connected. If you want to group different data types together into a composite data object, it's best to use **tuples**, which we will learn about below.\n\nYou can find out how long a list is using the **len()** command:"
},
{
"cell_type": "code",
"collapsed": false,
"input": "help(len)",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": "Help on built-in function len in module __builtin__:\n\nlen(...)\n len(object) -> integer\n \n Return the number of items of a sequence or mapping.\n\n"
}
],
"prompt_number": 29
},
{
"cell_type": "code",
"collapsed": false,
"input": "len(evens)",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 30,
"text": "10"
}
],
"prompt_number": 30
},
{
"cell_type": "markdown",
"metadata": {},
"source": "## Iteration, Indentation, and Blocks\nOne of the most useful things you can do with lists is to *iterate* through them, i.e. to go through each element one at a time. To do this in Python, we use the **for** statement:"
},
{
"cell_type": "code",
"collapsed": false,
"input": "for day in days_of_the_week:\n print day",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": "Sunday\nMonday\nTuesday\nWednesday\nThursday\nFriday\nSaturday\n"
}
],
"prompt_number": 31
},
{
"cell_type": "markdown",
"metadata": {},
"source": "This code snippet goes through each element of the list called **days_of_the_week** and assigns it to the variable **day**. It then executes everything in the indented block (in this case only one line of code, the print statement) using those variable assignments. When the program has gone through every element of the list, it exists the block.\n\n(Almost) every programming language defines blocks of code in some way. In Fortran, one uses END statements (ENDDO, ENDIF, etc.) to define code blocks. In C, C++, and Perl, one uses curly braces {} to define these blocks.\n\nPython uses a colon (\":\"), followed by indentation level to define code blocks. Everything at a higher level of indentation is taken to be in the same block. In the above example the block was only a single line, but we could have had longer blocks as well:"
},
{
"cell_type": "code",
"collapsed": false,
"input": "for day in days_of_the_week:\n statement = \"Today is \" + day\n print statement",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": "Today is Sunday\nToday is Monday\nToday is Tuesday\nToday is Wednesday\nToday is Thursday\nToday is Friday\nToday is Saturday\n"
}
],
"prompt_number": 32
},
{
"cell_type": "markdown",
"metadata": {},
"source": "The **range()** command is particularly useful with the **for** statement to execute loops of a specified length:"
},
{
"cell_type": "code",
"collapsed": false,
"input": "for i in range(20):\n print \"The square of \",i,\" is \",i*i",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": "The square of 0 is 0\nThe square of 1 is 1\nThe square of 2 is 4\nThe square of 3 is 9\nThe square of 4 is 16\nThe square of 5 is 25\nThe square of 6 is 36\nThe square of 7 is 49\nThe square of 8 is 64\nThe square of 9 is 81\nThe square of 10 is 100\nThe square of 11 is 121\nThe square of 12 is 144\nThe square of 13 is 169\nThe square of 14 is 196\nThe square of 15 is 225\nThe square of 16 is 256\nThe square of 17 is 289\nThe square of 18 is 324\nThe square of 19 is 361\n"
}
],
"prompt_number": 33
},
{
"cell_type": "markdown",
"metadata": {},
"source": "## Slicing\nLists and strings have something in common that you might not suspect: they can both be treated as sequences. You already know that you can iterate through the elements of a list. You can also iterate through the letters in a string:"
},
{
"cell_type": "code",
"collapsed": false,
"input": "for letter in \"Sunday\":\n print letter",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": "S\nu\nn\nd\na\ny\n"
}
],
"prompt_number": 34
},
{
"cell_type": "markdown",
"metadata": {},
"source": "This is only occasionally useful. Slightly more useful is the *slicing* operation, which you can also use on any sequence. We already know that we can use *indexing* to get the first element of a list:"
},
{
"cell_type": "code",
"collapsed": false,
"input": "days_of_the_week[0]",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 35,
"text": "'Sunday'"
}
],
"prompt_number": 35
},
{
"cell_type": "markdown",
"metadata": {},
"source": "If we want the list containing the first two elements of a list, we can do this via"
},
{
"cell_type": "code",
"collapsed": false,
"input": "days_of_the_week[0:2]",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 36,
"text": "['Sunday', 'Monday']"
}
],
"prompt_number": 36
},
{
"cell_type": "markdown",
"metadata": {},
"source": "or simply"
},
{
"cell_type": "code",
"collapsed": false,
"input": "days_of_the_week[:2]",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 37,
"text": "['Sunday', 'Monday']"
}
],
"prompt_number": 37
},
{
"cell_type": "markdown",
"metadata": {},
"source": "If we want the last items of the list, we can do this with negative slicing:"
},
{
"cell_type": "code",
"collapsed": false,
"input": "days_of_the_week[-2:]",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 38,
"text": "['Friday', 'Saturday']"
}
],
"prompt_number": 38
},
{
"cell_type": "markdown",
"metadata": {},
"source": "which is somewhat logically consistent with negative indices accessing the last elements of the list.\n\nYou can do:"
},
{
"cell_type": "code",
"collapsed": false,
"input": "workdays = days_of_the_week[1:6]\nprint workdays",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": "['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']\n"
}
],
"prompt_number": 39
},
{
"cell_type": "markdown",
"metadata": {},
"source": "Since strings are sequences, you can also do this to them:"
},
{
"cell_type": "code",
"collapsed": false,
"input": "day = \"Sunday\"\nabbreviation = day[:3]\nprint abbreviation",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": "Sun\n"
}
],
"prompt_number": 40
},
{
"cell_type": "markdown",
"metadata": {},
"source": "If we really want to get fancy, we can pass a third element into the slice, which specifies a step length (just like a third argument to the **range()** function specifies the step):"
},
{
"cell_type": "code",
"collapsed": false,
"input": "numbers = range(0,40)\nevens = numbers[2::2]\nevens",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 41,
"text": "[2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38]"
}
],
"prompt_number": 41
},
{
"cell_type": "markdown",
"metadata": {},
"source": "Note that in this example I was even able to omit the second argument, so that the slice started at 2, went to the end of the list, and took every second element, to generate the list of even numbers less that 40."
},
{
"cell_type": "markdown",
"metadata": {},
"source": "## Booleans and Truth Testing\nWe have now learned a few data types. We have integers and floating point numbers, strings, and lists to contain them. We have also learned about lists, a container that can hold any data type. We have learned to print things out, and to iterate over items in lists. We will now learn about **boolean** variables that can be either True or False.\n\nWe invariably need some concept of *conditions* in programming to control branching behavior, to allow a program to react differently to different situations. If it's Monday, I'll go to work, but if it's Sunday, I'll sleep in. To do this in Python, we use a combination of **boolean** variables, which evaluate to either True or False, and **if** statements, that control branching based on boolean values."
},
{
"cell_type": "markdown",
"metadata": {},
"source": "For example:"
},
{
"cell_type": "code",
"collapsed": false,
"input": "if day == \"Sunday\":\n print \"Sleep in\"\nelse:\n print \"Go to work\"",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": "Sleep in\n"
}
],
"prompt_number": 42
},
{
"cell_type": "markdown",
"metadata": {},
"source": "(Quick quiz: why did the snippet print \"Go to work\" here? What is the variable \"day\" set to?)\n\nLet's take the snippet apart to see what happened. First, note the statement"
},
{
"cell_type": "code",
"collapsed": false,
"input": "day == \"Sunday\"",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 43,
"text": "True"
}
],
"prompt_number": 43
},
{
"cell_type": "markdown",
"metadata": {},
"source": "If we evaluate it by itself, as we just did, we see that it returns a boolean value, False. The \"==\" operator performs *equality testing*. If the two items are equal, it returns True, otherwise it returns False. In this case, it is comparing two variables, the string \"Sunday\", and whatever is stored in the variable \"day\", which, in this case, is the other string \"Saturday\". Since the two strings are not equal to each other, the truth test has the false value."
},
{
"cell_type": "markdown",
"metadata": {},
"source": "The if statement that contains the truth test is followed by a code block (a colon followed by an indented block of code). If the boolean is true, it executes the code in that block. Since it is false in the above example, we don't see that code executed.\n\nThe first block of code is followed by an **else** statement, which is executed if nothing else in the above if statement is true. Since the value was false, this code is executed, which is why we see \"Go to work\".\n\nYou can compare any data types in Python:"
},
{
"cell_type": "code",
"collapsed": false,
"input": "1 == 2",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 44,
"text": "False"
}
],
"prompt_number": 44
},
{
"cell_type": "code",
"collapsed": false,
"input": "50 == 2*25",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 45,
"text": "True"
}
],
"prompt_number": 45
},
{
"cell_type": "code",
"collapsed": false,
"input": "3 < 3.14159",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 46,
"text": "True"
}
],
"prompt_number": 46
},
{
"cell_type": "code",
"collapsed": false,
"input": "1 == 1.0",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 47,
"text": "True"
}
],
"prompt_number": 47
},
{
"cell_type": "code",
"collapsed": false,
"input": "1 != 0",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 48,
"text": "True"
}
],
"prompt_number": 48
},
{
"cell_type": "code",
"collapsed": false,
"input": "1 <= 2",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 49,
"text": "True"
}
],
"prompt_number": 49
},
{
"cell_type": "code",
"collapsed": false,
"input": "1 >= 1",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 50,
"text": "True"
}
],
"prompt_number": 50
},
{
"cell_type": "markdown",
"metadata": {},
"source": "We see a few other boolean operators here, all of which which should be self-explanatory. Less than, equality, non-equality, and so on.\n\nParticularly interesting is the 1 == 1.0 test, which is true, since even though the two objects are different data types (integer and floating point number), they have the same *value*. There is another boolean operator **is**, that tests whether two objects are the same object:"
},
{
"cell_type": "code",
"collapsed": false,
"input": "1 is 1.0",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 51,
"text": "False"
}
],
"prompt_number": 51
},
{
"cell_type": "markdown",
"metadata": {},
"source": "We can do boolean tests on lists as well:"
},
{
"cell_type": "code",
"collapsed": false,
"input": "[1,2,3] == [1,2,4]",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 52,
"text": "False"
}
],
"prompt_number": 52
},
{
"cell_type": "code",
"collapsed": false,
"input": "[1,2,3] < [1,2,4]",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 53,
"text": "True"
}
],
"prompt_number": 53
},
{
"cell_type": "markdown",
"metadata": {},
"source": "Finally, note that you can also string multiple comparisons together, which can result in very intuitive tests:"
},
{
"cell_type": "code",
"collapsed": false,
"input": "hours = 5\n0 < hours < 24",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 54,
"text": "True"
}
],
"prompt_number": 54
},
{
"cell_type": "markdown",
"metadata": {},
"source": "If statements can have **elif** parts (\"else if\"), in addition to if/else parts. For example:"
},
{
"cell_type": "code",
"collapsed": false,
"input": "if day == \"Sunday\":\n print \"Sleep in\"\nelif day == \"Saturday\":\n print \"Do chores\"\nelse:\n print \"Go to work\"",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": "Sleep in\n"
}
],
"prompt_number": 55
},
{
"cell_type": "markdown",
"metadata": {},
"source": "Of course we can combine if statements with for loops, to make a snippet that is almost interesting:"
},
{
"cell_type": "code",
"collapsed": false,
"input": "for day in days_of_the_week:\n statement = \"Today is \" + day\n print statement\n if day == \"Sunday\":\n print \" Sleep in\"\n elif day == \"Saturday\":\n print \" Do chores\"\n else:\n print \" Go to work\"",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": "Today is Sunday\n Sleep in\nToday is Monday\n Go to work\nToday is Tuesday\n Go to work\nToday is Wednesday\n Go to work\nToday is Thursday\n Go to work\nToday is Friday\n Go to work\nToday is Saturday\n Do chores\n"
}
],
"prompt_number": 56
},
{
"cell_type": "markdown",
"metadata": {},
"source": "This is something of an advanced topic, but ordinary data types have boolean values associated with them, and, indeed, in early versions of Python there was not a separate boolean object. Essentially, anything that was a 0 value (the integer or floating point 0, an empty string \"\", or an empty list []) was False, and everything else was true. You can see the boolean value of any data object using the **bool()** function."
},
{
"cell_type": "code",
"collapsed": false,
"input": "bool(1)",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 57,
"text": "True"
}
],
"prompt_number": 57
},
{
"cell_type": "code",
"collapsed": false,
"input": "bool(0)",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 58,
"text": "False"
}
],
"prompt_number": 58
},
{
"cell_type": "code",
"collapsed": false,
"input": "bool([\"This \",\" is \",\" a \",\" list\"])",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 59,
"text": "True"
}
],
"prompt_number": 59
},
{
"cell_type": "markdown",
"metadata": {},
"source": "## Code Example: The Fibonacci Sequence\nThe [Fibonacci sequence](http://en.wikipedia.org/wiki/Fibonacci_number) is a sequence in math that starts with 0 and 1, and then each successive entry is the sum of the previous two. Thus, the sequence goes 0,1,1,2,3,5,8,13,21,34,55,89,...\n\nA very common exercise in programming books is to compute the Fibonacci sequence up to some number **n**. First I'll show the code, then I'll discuss what it is doing."
},
{
"cell_type": "code",
"collapsed": false,
"input": "n = 10\nsequence = [0,1]\nfor i in range(2,n): # This is going to be a problem if we ever set n <= 2!\n sequence.append(sequence[i-1]+sequence[i-2])\nprint sequence",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": "[0, 1, 1, 2, 3, 5, 8, 13, 21, 34]\n"
}
],
"prompt_number": 1
},
{
"cell_type": "markdown",
"metadata": {},
"source": "Let's go through this line by line. First, we define the variable **n**, and set it to the integer 20. **n** is the length of the sequence we're going to form, and should probably have a better variable name. We then create a variable called **sequence**, and initialize it to the list with the integers 0 and 1 in it, the first two elements of the Fibonacci sequence. We have to create these elements \"by hand\", since the iterative part of the sequence requires two previous elements.\n\nWe then have a for loop over the list of integers from 2 (the next element of the list) to **n** (the length of the sequence). After the colon, we see a hash tag \"#\", and then a **comment** that if we had set **n** to some number less than 2 we would have a problem. Comments in Python start with #, and are good ways to make notes to yourself or to a user of your code explaining why you did what you did. Better than the comment here would be to test to make sure the value of **n** is valid, and to complain if it isn't; we'll try this later.\n\nIn the body of the loop, we append to the list an integer equal to the sum of the two previous elements of the list.\n\nAfter exiting the loop (ending the indentation) we then print out the whole list. That's it!"
},
{
"cell_type": "markdown",
"metadata": {},
"source": "## Functions\nWe might want to use the Fibonacci snippet with different sequence lengths. We could cut an paste the code into another cell, changing the value of **n**, but it's easier and more useful to make a function out of the code. We do this with the **def** statement in Python:"
},
{
"cell_type": "code",
"collapsed": false,
"input": "def fibonacci(sequence_length):\n \"Return the Fibonacci sequence of length *sequence_length*\"\n sequence = [0,1]\n if sequence_length < 1:\n print \"Fibonacci sequence only defined for length 1 or greater\"\n return\n if 0 < sequence_length < 3:\n return sequence[:sequence_length]\n for i in range(2,sequence_length): \n sequence.append(sequence[i-1]+sequence[i-2])\n return sequence",
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 61
},
{
"cell_type": "markdown",
"metadata": {},
"source": "We can now call **fibonacci()** for different sequence_lengths:"
},
{
"cell_type": "code",
"collapsed": false,
"input": "fibonacci(2)",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 62,
"text": "[0, 1]"
}
],
"prompt_number": 62
},
{
"cell_type": "code",
"collapsed": false,
"input": "fibonacci(12)",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 63,
"text": "[0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89]"
}
],
"prompt_number": 63
},
{
"cell_type": "markdown",
"metadata": {},
"source": "We've introduced a several new features here. First, note that the function itself is defined as a code block (a colon followed by an indented block). This is the standard way that Python delimits things. Next, note that the first line of the function is a single string. This is called a **docstring**, and is a special kind of comment that is often available to people using the function through the python command line:"
},
{
"cell_type": "code",
"collapsed": false,
"input": "help(fibonacci)",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": "Help on function fibonacci in module __main__:\n\nfibonacci(sequence_length)\n Return the Fibonacci sequence of length *sequence_length*\n\n"
}
],
"prompt_number": 64
},
{
"cell_type": "markdown",
"metadata": {},
"source": "If you define a docstring for all of your functions, it makes it easier for other people to use them, since they can get help on the arguments and return values of the function.\n\nNext, note that rather than putting a comment in about what input values lead to errors, we have some testing of these values, followed by a warning if the value is invalid, and some conditional code to handle special cases."
},
{
"cell_type": "markdown",
"metadata": {},
"source": "## Recursion and Factorials\nFunctions can also call themselves, something that is often called *recursion*. We're going to experiment with recursion by computing the factorial function. The factorial is defined for a positive integer **n** as\n \n$$ n! = n(n-1)(n-2)\\cdots 1 $$\n\nFirst, note that we don't need to write a function at all, since this is a function built into the standard math library. Let's use the help function to find out about it:"
},
{
"cell_type": "code",
"collapsed": false,
"input": "from math import factorial\nhelp(factorial)",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": "Help on built-in function factorial in module math:\n\nfactorial(...)\n factorial(x) -> Integral\n \n Find x!. Raise a ValueError if x is negative or non-integral.\n\n"
}
],
"prompt_number": 65
},
{
"cell_type": "markdown",
"metadata": {},
"source": "This is clearly what we want."
},
{
"cell_type": "code",
"collapsed": false,
"input": "factorial(20)",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 66,
"text": "2432902008176640000"
}
],
"prompt_number": 66
},
{
"cell_type": "markdown",
"metadata": {},
"source": "However, if we did want to write a function ourselves, we could do recursively by noting that\n\n$$ n! = n(n-1)!$$\n\nThe program then looks something like:"
},
{
"cell_type": "code",
"collapsed": false,
"input": "def fact(n):\n if n <= 0:\n return 1\n return n*fact(n-1)",
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 67
},
{
"cell_type": "code",
"collapsed": false,
"input": "fact(20)",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 68,
"text": "2432902008176640000"
}
],
"prompt_number": 68
},
{
"cell_type": "markdown",
"metadata": {},
"source": "Recursion can be very elegant, and can lead to very simple programs."
},
{
"cell_type": "markdown",
"metadata": {},
"source": "## Two More Data Structures: Tuples and Dictionaries\nBefore we end the Python overview, I wanted to touch on two more data structures that are very useful (and thus very common) in Python programs.\n\nA **tuple** is a sequence object like a list or a string. It's constructed by grouping a sequence of objects together with commas, either without brackets, or with parentheses:"
},
{
"cell_type": "code",
"collapsed": false,
"input": "t = (1,2,'hi',9.0)\nt",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 69,
"text": "(1, 2, 'hi', 9.0)"
}
],
"prompt_number": 69
},
{
"cell_type": "markdown",
"metadata": {},
"source": "Tuples are like lists, in that you can access the elements using indices:"
},
{
"cell_type": "code",
"collapsed": false,
"input": "t[1]",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 70,
"text": "2"
}
],
"prompt_number": 70
},
{
"cell_type": "markdown",
"metadata": {},
"source": "However, tuples are *immutable*, you can't append to them or change the elements of them:"
},
{
"cell_type": "code",
"collapsed": false,
"input": "t.append(7)",
"language": "python",
"metadata": {},
"outputs": [
{
"ename": "AttributeError",
"evalue": "'tuple' object has no attribute 'append'",
"output_type": "pyerr",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m\n\u001b[0;31mAttributeError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m<ipython-input-71-50c7062b1d5f>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mappend\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m7\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
"\u001b[0;31mAttributeError\u001b[0m: 'tuple' object has no attribute 'append'"
]
}
],
"prompt_number": 71
},
{
"cell_type": "code",
"collapsed": false,
"input": "t[1]=77",
"language": "python",
"metadata": {},
"outputs": [
{
"ename": "TypeError",
"evalue": "'tuple' object does not support item assignment",
"output_type": "pyerr",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m\n\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m<ipython-input-72-03cc8ba9c07d>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mt\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m77\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
"\u001b[0;31mTypeError\u001b[0m: 'tuple' object does not support item assignment"
]
}
],
"prompt_number": 72
},
{
"cell_type": "markdown",
"metadata": {},
"source": "Tuples are useful anytime you want to group different pieces of data together in an object, but don't want to create a full-fledged class (see below) for them. For example, let's say you want the Cartesian coordinates of some objects in your program. Tuples are a good way to do this:"
},
{
"cell_type": "code",
"collapsed": false,
"input": "('Bob',0.0,21.0)",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 73,
"text": "('Bob', 0.0, 21.0)"
}
],
"prompt_number": 73
},
{
"cell_type": "markdown",
"metadata": {},
"source": "Again, it's not a necessary distinction, but one way to distinguish tuples and lists is that tuples are a collection of different things, here a name, and x and y coordinates, whereas a list is a collection of similar things, like if we wanted a list of those coordinates:"
},
{
"cell_type": "code",
"collapsed": false,
"input": "positions = [\n ('Bob',0.0,21.0),\n ('Cat',2.5,13.1),\n ('Dog',33.0,1.2)\n ]",
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 74
},
{
"cell_type": "markdown",
"metadata": {},
"source": "Tuples can be used when functions return more than one value. Say we wanted to compute the smallest x- and y-coordinates of the above list of objects. We could write:"
},
{
"cell_type": "code",
"collapsed": false,
"input": "def minmax(objects):\n minx = 1e20 # These are set to really big numbers\n miny = 1e20\n for obj in objects:\n name,x,y = obj\n if x < minx: \n minx = x\n if y < miny:\n miny = y\n return minx,miny\n\nx,y = minmax(positions)\nprint x,y",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": "0.0 1.2\n"
}
],
"prompt_number": 75
},
{
"cell_type": "markdown",
"metadata": {},
"source": "Here we did two things with tuples you haven't seen before. First, we unpacked an object into a set of named variables using *tuple assignment*:\n\n >>> name,x,y = obj\n\nWe also returned multiple values (minx,miny), which were then assigned to two other variables (x,y), again by tuple assignment. This makes what would have been complicated code in C++ rather simple.\n\nTuple assignment is also a convenient way to swap variables:"
},
{
"cell_type": "code",
"collapsed": false,
"input": "x,y = 1,2\ny,x = x,y\nx,y",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 76,
"text": "(2, 1)"
}
],
"prompt_number": 76
},
{
"cell_type": "markdown",
"metadata": {},
"source": "**Dictionaries** are an object called \"mappings\" or \"associative arrays\" in other languages. Whereas a list associates an integer index with a set of objects:"
},
{
"cell_type": "code",
"collapsed": false,
"input": "mylist = [1,2,9,21]",
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 77
},
{
"cell_type": "markdown",
"metadata": {},
"source": "The index in a dictionary is called the *key*, and the corresponding dictionary entry is the *value*. A dictionary can use (almost) anything as the key. Whereas lists are formed with square brackets [], dictionaries use curly brackets {}:"
},
{
"cell_type": "code",
"collapsed": false,
"input": "ages = {\"Rick\": 46, \"Bob\": 86, \"Fred\": 21}\nprint \"Rick's age is \",ages[\"Rick\"]",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": "Rick's age is 46\n"
}
],
"prompt_number": 78
},
{
"cell_type": "markdown",
"metadata": {},
"source": "There's also a convenient way to create dictionaries without having to quote the keys."
},
{
"cell_type": "code",
"collapsed": false,
"input": "dict(Rick=46,Bob=86,Fred=20)",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 79,
"text": "{'Bob': 86, 'Fred': 20, 'Rick': 46}"
}
],
"prompt_number": 79
},
{
"cell_type": "markdown",
"metadata": {},
"source": "The **len()** command works on both tuples and dictionaries:"
},
{
"cell_type": "code",
"collapsed": false,
"input": "len(t)",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 80,
"text": "4"
}
],
"prompt_number": 80
},
{
"cell_type": "code",
"collapsed": false,
"input": "len(ages)",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 81,
"text": "3"
}
],
"prompt_number": 81
},
{
"cell_type": "markdown",
"metadata": {},
"source": "## Plotting with Matplotlib\nWe can generally understand trends in data by using a plotting program to chart it. Python has a wonderful plotting library called [Matplotlib](http://matplotlib.sf.net). The IPython notebook interface we are using for these notes has that functionality built in.\n\nAs an example, we have looked at two different functions, the Fibonacci function, and the factorial function, both of which grow faster than polynomially. Which one grows the fastest? Let's plot them. First, let's generate the Fibonacci sequence of length 20:"
},
{
"cell_type": "code",
"collapsed": false,
"input": "fibs = fibonacci(10)",
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 82
},
{
"cell_type": "markdown",
"metadata": {},
"source": "Next lets generate the factorials."
},
{
"cell_type": "code",
"collapsed": false,
"input": "facts = []\nfor i in range(10):\n facts.append(factorial(i))",
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 83
},
{
"cell_type": "markdown",
"metadata": {},
"source": "Now we use the Matplotlib function **plot** to compare the two."
},
{
"cell_type": "code",
"collapsed": false,
"input": "figsize(8,6)\nplot(facts,label=\"factorial\")\nplot(fibs,label=\"Fibonacci\")\nxlabel(\"n\")\nlegend()",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 84,
"text": "<matplotlib.legend.Legend at 0x10eeb2e50>"
},
{
"output_type": "display_data",
"png": "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\nYvny5SQlJTF9+nRiYmKu+EK+Twa8Ph/ve86ePcucOXP40Y9+xOzZs71dTpcEBwdz77338uGHH3q7\nFI+99957bN++nREjRpCamsrf/vY3Fi5c6O2yPDZ06FAABg8ezP33309RUZGXK/KczWbDZrMxceJE\nAB544AE++ugjL1fVeTt27OB73/segwcP9nYpHvvwww+58847sVgsBAQE8IMf/ID33nvP22V1ysMP\nP8yHH37I22+/jdls5rvf/e5lz+2TAa/Px/sWwzBIT0/H4XCwdOlSb5fTKTU1NTQ0NADQ3NzMrl27\niImJ8XJVnvv1r39NeXk5paWl5ObmMmXKFDZs2ODtsjxy6tQpmpqaADh58iT5+fl98pMm4eHhRERE\ncPjwYcD1/vWYMWO8XFXnbdq0idTUVG+X0SmjRo3igw8+oLm5GcMw2L17d599C+7LL78EoKysjNde\ne+2Kb5n49OfgL8dfPh+fmprK22+/TW1tLREREaxevZqHHnrI22V5bO/evbz88svujzWB6yMp06ZN\n83JlHVddXU1aWhrt7e20t7ezYMECEhISvF1Wl/XFt7OOHz/O/fffD7imuefPn09SUpKXq+qc559/\nnvnz59PS0sKtt97KH//4R2+X1CknT55k9+7dfXY9xPjx41m4cCG33347AwYM4LbbbuMnP/mJt8vq\nlAceeIDa2loCAwPJysoiKCjosuf69M1mREREpHP65BS9iIiIXJkCXkRExA8p4EVERPyQAl5ERMQP\nKeBFxCNHjhxh9OjR/OQnP2Hs2LFMnTqV06dPe7ssEbmIAl5EPPb555/z6KOP8o9//AOz2cz//M//\neLskEbmIAl5EPDZixAjGjRsHwPe+9z2OHDni3YJE5BIKeBHx2DXXXOP+fuDAgbS2tnqxGhH5Ngp4\nERERP6SAFxGPXbwFbl/cElfE32mrWhERET+kEbyIiIgfUsCLiIj4IQW8iIiIH1LAi4iI+CEFvIiI\niB9SwIuIiPih/w8iGJqIcdxOLAAAAABJRU5ErkJggg==\n"
}
],
"prompt_number": 84
},
{
"cell_type": "markdown",
"metadata": {},
"source": "The factorial function grows much faster. In fact, you can't even see the Fibonacci sequence. It's not entirely surprising: a function where we multiply by n each iteration is bound to grow faster than one where we add (roughly) n each iteration.\n\nLet's plot these on a semilog plot so we can see them both a little more clearly:"
},
{
"cell_type": "code",
"collapsed": false,
"input": "semilogy(facts,label=\"factorial\")\nsemilogy(fibs,label=\"Fibonacci\")\nxlabel(\"n\")\nlegend()",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 85,
"text": "<matplotlib.legend.Legend at 0x10eedd7d0>"
},
{
"output_type": "display_data",
"png": "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\nuusun1+14Ov15+TkkJaWRkJCAgCBgYHUq1fP4qpKb9myZTRv3ty1I6MvqVu3LlWqVOHkyZMUFBRw\n8uRJQkN963CcHTt20KNHD6pXr07lypXp1asX8+fPP+815RrM527XCRAWFsb+/fvLswT5E5mZmWzc\nuJEePXpYXUqpFBUV0alTJxo3bkzv3r2JioqyuiS3PfTQQ7z88stU8pVjxf5CQEAA1157LV27dmX6\n9OlWl1Mqe/bsoWHDhsTHx3P55Zdz9913c/LkSavLKrWPPvroTw8T8gXBwcE88sgjhIeHExISQlBQ\nENdee63VZbmlXbt2pKWlceTIEU6ePMnixYvZt2/fea8p198C2kHK++Tm5jJ48GBee+01ateubXU5\npVKpUiU2bdrEvn37+Oqrr3xuX91FixbRqFEjOnfu7POtzdWrV7Nx40aWLl3K66+/TlpamtUlua2g\noIANGzbwt7/9jQ0bNlCrVi3++c9/Wl1WqeTn57Nw4UKGDBlidSml8sMPP/Dvf/+bzMxMDhw4QG5u\nLh9++KHVZbmldevWPProo1x33XX079+fzp07X/Av4OUazFr77F3OnDnDrbfeyu23385NN91kdTkX\nrV69egwYMID169dbXYpb1qxZw4IFC2jWrBnDhw9nxYoVxfal9yVNmzYFoGHDhtx8882kp6dbXJH7\nwsLCCAsLo1u3bgAMHjyYDRs2WFxV6SxdupQuXbrQsGFDq0splfXr1xMdHU2DBg0IDAzklltuYc2a\nNVaX5baEhATWr1/PypUrCQoKIjIy8rzfX67BrLXP3sMwDEaPHk1UVBTjxo2zupxSO3ToEMeOHQPg\n1KlTfPHFF3Tu3Nniqtzzwgsv4HQ62bNnDx999BFXX301H3zwgdVlue3kyZMcP34cMM9l//zzz31y\n5UKTJk2w2WxkZGQA5hht27ZtLa6qdJKTkxk+fLjVZZRa69at+frrrzl16hSGYbBs2TKfHKo6ePAg\nAFlZWXzyyScXHFoo14MHz137XFhYyOjRo31y7fPw4cNZuXIlhw8fxmaz8eyzz7qWkPmK1atXM3Pm\nTNfSFjCXJfTr18/iytyTnZ3NnXfeSVFREUVFRdxxxx1cc801Vpd1UXx1yOfnn3/m5ptvBszu4BEj\nRnDddddZXFXpTJ06lREjRpCfn0/z5s2ZMWOG1SW57cSJEyxbtsxnx/oBOnbsyMiRI+natSuVKlXi\n8ssv55577rG6LLcNHjyYw4cPU6VKFd544w3q1q173u8PMHx9UEtERMSP+PYUUBERET+jYBYREfEi\nCmYREREvomAWERHxIgpmkQogMzOTNm3acM8999CuXTv69u1LXl6e1WWJyJ9QMItUELt372bs2LF8\n9913BAUF8fHHH1tdkoj8CQWzSAXRrFkzOnToAECXLl3IzMy0tiAR+VMKZpEKolq1aq4/V65cmYKC\nAgurEZG/omAWERHxIgpmkQri91t9+urWnyL+TltyioiIeBG1mEVERLyIgllERMSLKJhFRES8iIJZ\nRETEiyiYRUREvIiCWURExIv8f6ijo5P6uR08AAAAAElFTkSuQmCC\n"
}
],
"prompt_number": 85
},
{
"cell_type": "markdown",
"metadata": {},
"source": "There are many more things you can do with Matplotlib. We'll be looking at some of them in the sections to come. In the meantime, if you want an idea of the different things you can do, look at the Matplotlib [Gallery](http://matplotlib.org/gallery.html). Rob Johansson's IPython notebook [Introduction to Matplotlib](http://nbviewer.ipython.org/urls/raw.github.com/jrjohansson/scientific-python-lectures/master/Lecture-4-Matplotlib.ipynb) is also particularly good."
},
{
"cell_type": "markdown",
"metadata": {},
"source": "## Conclusion of the Python Overview\nThere is, of course, much more to the language than I've covered here. I've tried to keep this brief enough so that you can jump in and start using Python to simplify your life and work. My own experience in learning new things is that the information doesn't \"stick\" unless you try and use it for something in real life.\n\nYou will no doubt need to learn more as you go. I've listed several other good references, including the [Python Tutorial](http://docs.python.org/2/tutorial/) and [Learn Python the Hard Way](http://learnpythonthehardway.org/book/). Additionally, now is a good time to start familiarizing yourself with the [Python Documentation](http://docs.python.org/2.7/), and, in particular, the [Python Language Reference](http://docs.python.org/2.7/reference/index.html).\n\nTim Peters, one of the earliest and most prolific Python contributors, wrote the \"Zen of Python\", which can be accessed via the \"import this\" command:"
},
{
"cell_type": "code",
"collapsed": false,
"input": "import this",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": "The Zen of Python, by Tim Peters\n\nBeautiful is better than ugly.\nExplicit is better than implicit.\nSimple is better than complex.\nComplex is better than complicated.\nFlat is better than nested.\nSparse is better than dense.\nReadability counts.\nSpecial cases aren't special enough to break the rules.\nAlthough practicality beats purity.\nErrors should never pass silently.\nUnless explicitly silenced.\nIn the face of ambiguity, refuse the temptation to guess.\nThere should be one-- and preferably only one --obvious way to do it.\nAlthough that way may not be obvious at first unless you're Dutch.\nNow is better than never.\nAlthough never is often better than *right* now.\nIf the implementation is hard to explain, it's a bad idea.\nIf the implementation is easy to explain, it may be a good idea.\nNamespaces are one honking great idea -- let's do more of those!\n"
}
],
"prompt_number": 86
},
{
"cell_type": "markdown",
"metadata": {},
"source": "No matter how experienced a programmer you are, these are words to meditate on."
},
{
"cell_type": "markdown",
"metadata": {},
"source": "# II. Numpy and Scipy\n\n[Numpy](http://numpy.org) contains core routines for doing fast vector, matrix, and linear algebra-type operations in Python. [Scipy](http://scipy) contains additional routines for optimization, special functions, and so on. Both contain modules written in C and Fortran so that they're as fast as possible. Together, they give Python roughly the same capability that the [Matlab](http://www.mathworks.com/products/matlab/) program offers. (In fact, if you're an experienced Matlab user, there a [guide to Numpy for Matlab users](http://www.scipy.org/NumPy_for_Matlab_Users) just for you.)\n\n## Making vectors and matrices\nFundamental to both Numpy and Scipy is the ability to work with vectors and matrices. You can create vectors from lists using the **array** command:"
},
{
"cell_type": "code",
"collapsed": false,
"input": "array([1,2,3,4,5,6])",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 87,
"text": "array([1, 2, 3, 4, 5, 6])"
}
],
"prompt_number": 87
},
{
"cell_type": "markdown",
"metadata": {},
"source": "You can pass in a second argument to **array** that gives the numeric type. There are a number of types [listed here](http://docs.scipy.org/doc/numpy/user/basics.types.html) that your matrix can be. Some of these are aliased to single character codes. The most common ones are 'd' (double precision floating point number), 'D' (double precision complex number), and 'i' (int32). Thus,"
},
{
"cell_type": "code",
"collapsed": false,
"input": "array([1,2,3,4,5,6],'d')",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 88,
"text": "array([ 1., 2., 3., 4., 5., 6.])"
}
],
"prompt_number": 88
},
{
"cell_type": "code",
"collapsed": false,
"input": "array([1,2,3,4,5,6],'D')",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 89,
"text": "array([ 1.+0.j, 2.+0.j, 3.+0.j, 4.+0.j, 5.+0.j, 6.+0.j])"
}
],
"prompt_number": 89
},
{
"cell_type": "code",
"collapsed": false,
"input": "array([1,2,3,4,5,6],'i')",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 90,
"text": "array([1, 2, 3, 4, 5, 6], dtype=int32)"
}
],
"prompt_number": 90
},
{
"cell_type": "markdown",
"metadata": {},
"source": "To build matrices, you can either use the array command with lists of lists:"
},
{
"cell_type": "code",
"collapsed": false,
"input": "array([[0,1],[1,0]],'d')",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 91,
"text": "array([[ 0., 1.],\n [ 1., 0.]])"
}
],
"prompt_number": 91
},
{
"cell_type": "markdown",
"metadata": {},
"source": "You can also form empty (zero) matrices of arbitrary shape (including vectors, which Numpy treats as vectors with one row), using the **zeros** command:"
},
{
"cell_type": "code",
"collapsed": false,
"input": "zeros((3,3),'d')",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 92,
"text": "array([[ 0., 0., 0.],\n [ 0., 0., 0.],\n [ 0., 0., 0.]])"
}
],
"prompt_number": 92
},
{
"cell_type": "markdown",
"metadata": {},
"source": "The first argument is a tuple containing the shape of the matrix, and the second is the data type argument, which follows the same conventions as in the array command. Thus, you can make row vectors:"
},
{
"cell_type": "code",
"collapsed": false,
"input": "zeros(3,'d')",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 93,
"text": "array([ 0., 0., 0.])"
}
],
"prompt_number": 93
},
{
"cell_type": "code",
"collapsed": false,
"input": "zeros((1,3),'d')",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 94,
"text": "array([[ 0., 0., 0.]])"
}
],
"prompt_number": 94
},
{
"cell_type": "markdown",
"metadata": {},
"source": "or column vectors:"
},
{
"cell_type": "code",
"collapsed": false,
"input": "zeros((3,1),'d')",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 95,
"text": "array([[ 0.],\n [ 0.],\n [ 0.]])"
}
],
"prompt_number": 95
},
{
"cell_type": "markdown",
"metadata": {},
"source": "There's also an **identity** command that behaves as you'd expect:"
},
{
"cell_type": "code",
"collapsed": false,
"input": "identity(4,'d')",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 96,
"text": "array([[ 1., 0., 0., 0.],\n [ 0., 1., 0., 0.],\n [ 0., 0., 1., 0.],\n [ 0., 0., 0., 1.]])"
}
],
"prompt_number": 96
},
{
"cell_type": "markdown",
"metadata": {},
"source": "as well as a **ones** command."
},
{
"cell_type": "markdown",
"metadata": {},
"source": "## Linspace, matrix functions, and plotting\nThe **linspace** command makes a linear array of points from a starting to an ending value."
},
{
"cell_type": "code",
"collapsed": false,
"input": "linspace(0,1)",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 97,
"text": "array([ 0. , 0.02040816, 0.04081633, 0.06122449, 0.08163265,\n 0.10204082, 0.12244898, 0.14285714, 0.16326531, 0.18367347,\n 0.20408163, 0.2244898 , 0.24489796, 0.26530612, 0.28571429,\n 0.30612245, 0.32653061, 0.34693878, 0.36734694, 0.3877551 ,\n 0.40816327, 0.42857143, 0.44897959, 0.46938776, 0.48979592,\n 0.51020408, 0.53061224, 0.55102041, 0.57142857, 0.59183673,\n 0.6122449 , 0.63265306, 0.65306122, 0.67346939, 0.69387755,\n 0.71428571, 0.73469388, 0.75510204, 0.7755102 , 0.79591837,\n 0.81632653, 0.83673469, 0.85714286, 0.87755102, 0.89795918,\n 0.91836735, 0.93877551, 0.95918367, 0.97959184, 1. ])"
}
],
"prompt_number": 97
},
{
"cell_type": "markdown",
"metadata": {},
"source": "If you provide a third argument, it takes that as the number of points in the space. If you don't provide the argument, it gives a length 50 linear space."
},
{
"cell_type": "code",
"collapsed": false,
"input": "linspace(0,1,11)",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 98,
"text": "array([ 0. , 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1. ])"
}
],
"prompt_number": 98
},
{
"cell_type": "markdown",
"metadata": {},
"source": "**linspace** is an easy way to make coordinates for plotting. Functions in the numpy library (all of which are imported into IPython notebook) can act on an entire vector (or even a matrix) of points at once. Thus,"
},
{
"cell_type": "code",
"collapsed": false,
"input": "x = linspace(0,2*pi)\nsin(x)",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 99,
"text": "array([ 0.00000000e+00, 1.27877162e-01, 2.53654584e-01,\n 3.75267005e-01, 4.90717552e-01, 5.98110530e-01,\n 6.95682551e-01, 7.81831482e-01, 8.55142763e-01,\n 9.14412623e-01, 9.58667853e-01, 9.87181783e-01,\n 9.99486216e-01, 9.95379113e-01, 9.74927912e-01,\n 9.38468422e-01, 8.86599306e-01, 8.20172255e-01,\n 7.40277997e-01, 6.48228395e-01, 5.45534901e-01,\n 4.33883739e-01, 3.15108218e-01, 1.91158629e-01,\n 6.40702200e-02, -6.40702200e-02, -1.91158629e-01,\n -3.15108218e-01, -4.33883739e-01, -5.45534901e-01,\n -6.48228395e-01, -7.40277997e-01, -8.20172255e-01,\n -8.86599306e-01, -9.38468422e-01, -9.74927912e-01,\n -9.95379113e-01, -9.99486216e-01, -9.87181783e-01,\n -9.58667853e-01, -9.14412623e-01, -8.55142763e-01,\n -7.81831482e-01, -6.95682551e-01, -5.98110530e-01,\n -4.90717552e-01, -3.75267005e-01, -2.53654584e-01,\n -1.27877162e-01, -2.44929360e-16])"
}
],
"prompt_number": 99
},
{
"cell_type": "markdown",
"metadata": {},
"source": "In conjunction with **matplotlib**, this is a nice way to plot things:"
},
{
"cell_type": "code",
"collapsed": false,
"input": "plot(x,sin(x))",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 100,
"text": "[<matplotlib.lines.Line2D at 0x10f07a150>]"
},
{
"output_type": "display_data",
"png": "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\nIi0inhAMQnS0uXP6lVdsp3GWU93cb70F7drZTiPZoSItIp5x4AA0bGjWXLW1yAgGTaNYvnwwZozt\nNJJdOrtbRDzj0kthwgTo2tWsU1esaDuRfcOHw8qV8NVXtpNIKGkkLSKu8fzzsHAhzJ7t70s4Zs40\nZ3MvWQKXXWY7jeSEtmCJiOc8/bS5enHIENtJ7Fm71jSKTZmiAu0HGkmLiKvs3GnunJ4yBa691naa\n8Dp4EJo1gyefhB49bKeR3FDjmIh41hdfmCMwv/0WKlSwnSY8Tp40TXP165v1aHE3TXeLiGe1bw/3\n3Qdt2sBPP9lOEx6DBpl1+Jdftp1Ewknd3SLiSoMHw6FDZnQ5bx5cfLHtRKHz3numWW7JEiign9q+\nouluEXGtYNBMe69bZzqe//IX24ny3sKFcMcd5sS1K66wnUbyitakRcQX0tMhJgYOHzZXXHrp6NCt\nW6FFCxg3Dm66yXYayUtakxYRX8ifH8aONSdvxcSYou0FW7eawjx4sAq0n6lIi4jrFSxorrTct880\nlLl9Ym7lSmjZEh54AAYMsJ1GbFKRFhFPuOgimD7d3Ab16KPuLdRffgk33givvWaKtPibirSIeMbF\nF0NCgumEfuEF22myb9o00yT2n/9Aly6204gTqJlfRDyldGlTpFu1MnuoX37ZHc1kI0eas8kTE6FR\nI9tpxCk0khYRzylf3pxGtnUrXHMNbN5sO9G5BYPwj3+YNxMLF6pAy5lUpEXEk0qVMtPH3btD8+Yw\ndartRGdLT4d+/UzOr7+G6tVtJxKn0T5pEfG8774za7zt2sGrr5omM9t27zYHsRw9aop08eK2E0k4\naZ+0iMh/NW0KS5fCnj1w9dWwaZO9LGlp8Mor5qKMmjVNo5sKtJyLirSI+ELJkuZ6y/h4c4rX5Mnh\nz5CQAPXqmW1W33wDw4ZB4cLhzyHuoSJtWVJSku0IVun1J9mOYFW4X38gYNaAExPhqafMbVqJiZCR\nEdrn3bDBPNdDD8Hrr8Pnn0ONGv7+7+/n154dOS7SU6ZMoW7duuTPn5+lS5ee83GJiYnUqlWLGjVq\nMGzYsJw+nWf5/S+qXn+S7QhW2Xr9jRubU71uuw2efNJMOw8fDj//nLfPc+QIPPaYmWK/7jpz0Eq7\ndn/8vp//+/v5tWdHjot0/fr1mTZtGq1atTrnY9LT0+nfvz+JiYmsWbOGiRMnsnbt2pw+pYhInilS\n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\nEGlQvkwCNAAAAABJRU5ErkJggg==\n"
}
],
"prompt_number": 100
},
{
"cell_type": "markdown",
"metadata": {},
"source": "## Matrix operations\nMatrix objects act sensibly when multiplied by scalars:"
},
{
"cell_type": "code",
"collapsed": false,
"input": "0.125*identity(3,'d')",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 101,
"text": "array([[ 0.125, 0. , 0. ],\n [ 0. , 0.125, 0. ],\n [ 0. , 0. , 0.125]])"
}
],
"prompt_number": 101
},
{
"cell_type": "markdown",
"metadata": {},
"source": "as well as when you add two matrices together. (However, the matrices have to be the same shape.)"
},
{
"cell_type": "code",
"collapsed": false,
"input": "identity(2,'d') + array([[1,1],[1,2]])",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 102,
"text": "array([[ 2., 1.],\n [ 1., 3.]])"
}
],
"prompt_number": 102
},
{
"cell_type": "markdown",
"metadata": {},
"source": "Something that confuses Matlab users is that the times (*) operator give element-wise multiplication rather than matrix multiplication:"
},
{
"cell_type": "code",
"collapsed": false,
"input": "identity(2)*ones((2,2))",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 103,
"text": "array([[ 1., 0.],\n [ 0., 1.]])"
}
],
"prompt_number": 103
},
{
"cell_type": "markdown",
"metadata": {},
"source": "To get matrix multiplication, you need the **dot** command:"
},
{
"cell_type": "code",
"collapsed": false,
"input": "dot(identity(2),ones((2,2)))",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 104,
"text": "array([[ 1., 1.],\n [ 1., 1.]])"
}
],
"prompt_number": 104
},
{
"cell_type": "markdown",
"metadata": {},
"source": "**dot** can also do dot products (duh!):"
},
{
"cell_type": "code",
"collapsed": false,
"input": "v = array([3,4],'d')\nsqrt(dot(v,v))",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 105,
"text": "5.0"
}
],
"prompt_number": 105
},
{
"cell_type": "markdown",
"metadata": {},
"source": "as well as matrix-vector products."
},
{
"cell_type": "markdown",
"metadata": {},
"source": "There are **determinant**, **inverse**, and **transpose** functions that act as you would suppose. Transpose can be abbreviated with \".T\" at the end of a matrix object:"
},
{
"cell_type": "code",
"collapsed": false,
"input": "m = array([[1,2],[3,4]])\nm.T",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 106,
"text": "array([[1, 3],\n [2, 4]])"
}
],
"prompt_number": 106
},
{
"cell_type": "markdown",
"metadata": {},
"source": "There's also a **diag()** function that takes a list or a vector and puts it along the diagonal of a square matrix. "
},
{
"cell_type": "code",
"collapsed": false,
"input": "diag([1,2,3,4,5])",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 107,
"text": "array([[1, 0, 0, 0, 0],\n [0, 2, 0, 0, 0],\n [0, 0, 3, 0, 0],\n [0, 0, 0, 4, 0],\n [0, 0, 0, 0, 5]])"
}
],
"prompt_number": 107
},
{
"cell_type": "markdown",
"metadata": {},
"source": "We'll find this useful later on."
},
{
"cell_type": "markdown",
"metadata": {},
"source": "## Matrix Solvers\nYou can solve systems of linear equations using the **solve** command:"
},
{
"cell_type": "code",
"collapsed": false,
"input": "A = array([[1,1,1],[0,2,5],[2,5,-1]])\nb = array([6,-4,27])\nsolve(A,b)",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 108,
"text": "array([ 5., 3., -2.])"
}
],
"prompt_number": 108
},
{
"cell_type": "markdown",
"metadata": {},
"source": "There are a number of routines to compute eigenvalues and eigenvectors\n\n* **eigvals** returns the eigenvalues of a matrix\n* **eigvalsh** returns the eigenvalues of a Hermitian matrix\n* **eig** returns the eigenvalues and eigenvectors of a matrix\n* **eigh** returns the eigenvalues and eigenvectors of a Hermitian matrix."
},
{
"cell_type": "code",
"collapsed": false,
"input": "A = array([[13,-4],[-4,7]],'d')\neigvalsh(A)",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 109,
"text": "array([ 5., 15.])"
}
],
"prompt_number": 109
},
{
"cell_type": "code",
"collapsed": false,
"input": "eigh(A)",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 110,
"text": "(array([ 5., 15.]),\n array([[-0.4472136 , -0.89442719],\n [-0.89442719, 0.4472136 ]]))"
}
],
"prompt_number": 110
},
{
"cell_type": "markdown",
"metadata": {},
"source": "## Example: Finite Differences\nNow that we have these tools in our toolbox, we can start to do some cool stuff with it. Many of the equations we want to solve in Physics involve differential equations. We want to be able to compute the derivative of functions:\n\n$$ y' = \\frac{y(x+h)-y(x)}{h} $$\n\nby *discretizing* the function $y(x)$ on an evenly spaced set of points $x_0, x_1, \\dots, x_n$, yielding $y_0, y_1, \\dots, y_n$. Using the discretization, we can approximate the derivative by\n\n$$ y_i' \\approx \\frac{y_{i+1}-y_{i-1}}{x_{i+1}-x_{i-1}} $$\n\nWe can write a derivative function in Python via"
},
{
"cell_type": "code",
"collapsed": false,
"input": "def nderiv(y,x):\n \"Finite difference derivative of the function f\"\n n = len(y)\n d = zeros(n,'d') # assume double\n # Use centered differences for the interior points, one-sided differences for the ends\n for i in range(1,n-1):\n d[i] = (y[i+1]-y[i])/(x[i+1]-x[i])\n d[0] = (y[1]-y[0])/(x[1]-x[0])\n d[n-1] = (y[n-1]-y[n-2])/(x[n-1]-x[n-2])\n return d",
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 111
},
{
"cell_type": "markdown",
"metadata": {},
"source": "Let's see whether this works for our sin example from above:"
},
{
"cell_type": "code",
"collapsed": false,
"input": "x = linspace(0,2*pi)\ndsin = nderiv(sin(x),x)\nplot(x,dsin,label='numerical')\nplot(x,cos(x),label='analytical')\ntitle(\"Comparison of numerical and analytical derivatives of sin(x)\")\nlegend()",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 112,
"text": "<matplotlib.legend.Legend at 0x10ef87dd0>"
},
{
"output_type": "display_data",
"png": "iVBORw0KGgoAAAANSUhEUgAAAekAAAF4CAYAAABw9AFxAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3XdclXX/x/EXS5kyBVGGIBiICjhKLVPv7jTNebtwz9TM\n1PS+89edlbYsG45y4AD3SBuuNO8szMq0BFPcCxTBgQxFFBC+vz+uOIoMMcCL8Xk+Hjz0e851nfM+\n1zmcD9/r+l7fy0gppRBCCCFEuWOsdwAhhBBCFEyKtBBCCFFOSZEWQgghyikp0kIIIUQ5JUVaCCGE\nKKekSAshhBDllBTpKmT16tV06NBB7xgGt27dokuXLtjZ2dG3b1+94zyU8+fPY2NjQ0nPYGzbti1L\nly4tpVSFi4mJwdjYmJycnDJ/rntFRETg7u7+t9e3sbEhJiamRBmGDh3KG2+8UaxlS7qdyvJ37MUX\nX+Tdd98tk8f+OxYsWICLiws1atQgOTm52Ot16tSJlStXFnv50NBQXnnllQcul5GRgb+/P4mJicV+\n7ApBiYe2evVq1bRpU2Vtba1cXV1Vx44d1c8//6x3rApnxYoV6vHHH1fZ2dl6R9FN27Zt1dKlS8v8\nec6dO6eMjIwe+bb+8ccflZubW7GWbdOmjVqyZEmpZxg6dKh64403irWsXtvpfuHh4eqpp57SNUNR\nMjMzlYWFhTp8+HCZPk9GRoZyd3dX8fHxxVp+5syZavLkyWWa6VGTnvRD+vTTT3nllVeYOnUqV65c\n4cKFC7z00kts3rxZ72hFys7O1jtCPrGxsdSvXx9j44r1Mbxz547eESolIyOjMnts9QjmbCqPv2Nl\n5dKlS9y+fRt/f/8yfZ5Nmzbh7++Pq6trsZbv168fy5cvJysrq0xzPVJ6/5VQkaSkpChra2u1cePG\nQpe5ffu2mjBhgqpdu7aqXbu2mjhxosrIyFBKab2KOnXqqJkzZ6qaNWsqV1dX9fXXX6tt27YpX19f\n5eDgoGbMmGF4rLfeekv17NlT9e3bV9nY2KgmTZqoP//803D/jBkzVL169ZSNjY1q0KCB+vrrrw33\nhYeHq1atWqlXXnlFOTo6qqlTp+b56zwnJ0dNnDhROTs7qxo1aqhGjRqp6Ohow+scNGiQqlmzpvL0\n9FTvvvuuysnJMTzuk08+qf79738re3t75eXlpbZv317o9jh69Khq06aNsrOzUwEBAWrz5s1KKaXe\nfPNNVa1aNWVmZqasra1VWFhYvnXfeust1bt3bzV48GBlY2OjAgIC1B9//GG438jISJ05c8bQHjJk\niJo6derf2tY5OTmG7eno6Kj69OmjkpKSlFJ3e1dLly5VHh4eqk2bNiomJiZPj+vatWtq6NChqnbt\n2sre3l51795dKaVUUlKSev7551XNmjWVvb296ty5s4qLizM8b1E96X379qkWLVooOzs75erqqsaN\nG6cyMzPzvP6FCxcqX19fZWdnp1566SXDfdnZ2Wry5MnKyclJeXt7q88//7zIHuKDPktFvedhYWHK\n399f2djYKG9vbxUaGmq4796e9MyZM1XPnj3zPO/LL7+sJkyYoF5//XVlYmKizM3NlbW1tXr55Zfz\nvcfp6elq0qRJytPTU9na2qqnnnpK3b59WymlVK9evVStWrWUra2tevrpp9WRI0cMzzF06FDD5+J+\nD9pOKSkpavjw4crV1VXVqVNHTZ061XDfg37HxowZo/7973/neb6uXbuqWbNmFbnNjx49qszNzZWJ\niYmytrZW9vb2Sqm8n28/Pz+1detWw+NmZWUpJycnFRUVpZRSau/evaply5bKzs5OBQYGqoiIiDzv\np7e3t7KxsVFeXl5q9erVBW6bwr7LTpw4oaysrJSRkZGytrZWzzzzTL51b926pQYMGKAcHR2VnZ2d\nat68ubpy5YpSKu8ekwd9toYNG6bee+89Q3vdunXKy8tLXb9+XSml1Lfffqtq1aqlEhMTDcv4+vqq\n3bt3F/iaKiIp0g9h+/btytTUtMhdYW+88YZq2bKlunr1qrp69apq1aqVYVfbjz/+qExNTdU777yj\n7ty5oxYvXqwcHR1V//79VVpamjpy5IiysLBQMTExSimtSJmZmakvv/xS3blzR3388cfKy8tL3blz\nRyml1IYNG1RCQoJSSqn169crKysrdenSJaWU9uE3NTVVn3/+ucrOzla3bt3K8wWyY8cO1bRpU5Wa\nmqqUUur48eOGxxo0aJDq3r27SktLUzExMap+/fqGQhIeHq7MzMzUkiVLVE5OjlqwYIGqXbt2gdsi\nMzNT1atXT82YMUNlZWWpH374QdnY2KgTJ04opZSaNm2aGjRoUKHb8q233lLm5uZq+/btKicnR732\n2muqRYsWhvvvL9L37tZ82G09e/Zs1bJlS3Xx4kWVmZmpRo8erfr166eUulukhwwZotLT09Xt27fz\n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\n"
}
],
"prompt_number": 112
},
{
"cell_type": "markdown",
"metadata": {},
"source": "Pretty close!"
},
{
"cell_type": "markdown",
"metadata": {},
"source": "## One-Dimensional Harmonic Oscillator using Finite Difference\nNow that we've convinced ourselves that finite differences aren't a terrible approximation, let's see if we can use this to solve the one-dimensional harmonic oscillator.\n\nWe want to solve the time-independent Schrodinger equation\n\n$$ -\\frac{\\hbar^2}{2m}\\frac{\\partial^2\\psi(x)}{\\partial x^2} + V(x)\\psi(x) = E\\psi(x)$$\n\nfor $\\psi(x)$ when $V(x)=\\frac{1}{2}m\\omega^2x^2$ is the harmonic oscillator potential. We're going to use the standard trick to transform the differential equation into a matrix equation by multiplying both sides by $\\psi^*(x)$ and integrating over $x$. This yields\n\n$$ -\\frac{\\hbar}{2m}\\int\\psi(x)\\frac{\\partial^2}{\\partial x^2}\\psi(x)dx + \\int\\psi(x)V(x)\\psi(x)dx = E$$\n\nWe will again use the finite difference approximation. The finite difference formula for the second derivative is\n\n$$ y'' = \\frac{y_{i+1}-2y_i+y_{i-1}}{x_{i+1}-x_{i-1}} $$\n\nWe can think of the first term in the Schrodinger equation as the overlap of the wave function $\\psi(x)$ with the second derivative of the wave function $\\frac{\\partial^2}{\\partial x^2}\\psi(x)$. Given the above expression for the second derivative, we can see if we take the overlap of the states $y_1,\\dots,y_n$ with the second derivative, we will only have three points where the overlap is nonzero, at $y_{i-1}$, $y_i$, and $y_{i+1}$. In matrix form, this leads to the tridiagonal Laplacian matrix, which has -2's along the diagonals, and 1's along the diagonals above and below the main diagonal.\n\nThe second term turns leads to a diagonal matrix with $V(x_i)$ on the diagonal elements. Putting all of these pieces together, we get:"
},
{
"cell_type": "code",
"collapsed": false,
"input": "def Laplacian(x):\n h = x[1]-x[0] # assume uniformly spaced points\n n = len(x)\n M = -2*identity(n,'d')\n for i in range(1,n):\n M[i,i-1] = M[i-1,i] = 1\n return M/h**2",
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 113
},
{
"cell_type": "code",
"collapsed": false,
"input": "x = linspace(-3,3)\nm = 1.0\nohm = 1.0\nT = (-0.5/m)*Laplacian(x)\nV = 0.5*(ohm**2)*(x**2)\nH = T + diag(V)\nE,U = eigh(H)\nh = x[1]-x[0]\n\n# Plot the Harmonic potential\nplot(x,V,color='k')\n\nfor i in range(4):\n # For each of the first few solutions, plot the energy level:\n axhline(y=E[i],color='k',ls=\":\")\n # as well as the eigenfunction, displaced by the energy level so they don't\n # all pile up on each other:\n plot(x,-U[:,i]/sqrt(h)+E[i])\ntitle(\"Eigenfunctions of the Quantum Harmonic Oscillator\")\nxlabel(\"Displacement (bohr)\")\nylabel(\"Energy (hartree)\")",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 114,
"text": "<matplotlib.text.Text at 0x10efa4110>"
},
{
"output_type": "display_data",
"png": "iVBORw0KGgoAAAANSUhEUgAAAfAAAAGHCAYAAABPiwCfAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3XdYU9f/B/B3wp5hyp4CIhsBUetAsXXiLI7i3tpq1S5t\nbUXr19bVVuuu1oUDV52orYO2blGQvWUjMmSvkJzfHyn8QEFWws04r+fhYeTm3nduQj45955zLosQ\nQkBRFEVRlERhMx2AoiiKoqj2owWcoiiKoiQQLeAURVEUJYFoAacoiqIoCUQLOEVRFEVJIFrAKYqi\nKEoC0QIuhY4fP45hw4Z1ybbWrFkDfX19GBsbd8n26i1evBgbNmzo0m2+S0JCAtzc3KCpqYmdO3e2\n6T5sNhupqakiTkaJm4yMDGhoaEBcRvC+mcfHxwcHDx4EABw+fBgDBgxgMh71DrSASyhLS0uoqqpC\nQ0Oj4WvZsmUAgICAANy4cUPkGTIyMvDTTz8hPj4eOTk5IttOc28ie/bswZo1a0S2zfbavHkzfH19\nUVpaik8++eSt2xu/KYpCTU0NVq9eDQsLC6iqqsLOzg5bt24V2fbe1NUfRprbXmBgIKZPn95lGTrK\n3NwcZWVlYLFY7b5vVlYWAgICoKenB3V1dXh7e+Pq1atCzcNisTqUTVL2vzShBVxCsVgsXLlyBWVl\nZQ1fO3bs6NIMGRkZ0NXVha6ubpduVxylp6fDwcGhxds78obYHv7+/rhz5w6uXbuG8vJyHDt2DPv3\n78enn34q0u02xnSLsjP7mMfjCTGJaBQVFaF///5QVlZGbGwsCgsLsWLFCnz00Uc4d+4c0/E6TRKe\nA7FDKIlkaWlJbt261exthw4dIv3792/4/caNG8TOzo5wOByyZMkSMnDgQHLgwIGG2w8ePEh69uxJ\ntLW1ybBhw0h6enrDbSwWi+zdu5fY2toSLS0t8vHHHxNCCPnrr7+IiooKYbPZRF1dncyePZvcuXOH\nmJqaNsliYWHRkHPt2rXE39+fzJgxg2hoaBBHR0cSFhbWsGxGRgYZP3480dfXJ7q6uuSTTz4hcXFx\nRElJicjJyRF1dXWira1NCCFk5syZZM2aNQ333b9/P7GxsSE6OjpkzJgxJCcnp9XHQAghSUlJZODA\ngYTD4RA9PT0yefLkFvf5xYsXiYODA9HS0iI+Pj4kLi6OEELI4MGDiZycHFFWViYaGhokKSmpyf2+\n/vrrhtvV1dXJ0qVLW83V2vPS2M2bN4mysjLJyspq8vdHjx4ROTk5kpKS0vBc3Lx5s+H2tWvXkmnT\npjX8/uGHHxJDQ0PC4XDIwIEDSUxMTMNtM2fOJEuWLCGjRo0iGhoaxNvbu2G9AwYMICwWi6ipqRF1\ndXUSHBz81muw/vHW32fmzJlk8eLFZMSIEURdXZ3079+f5ObmkmXLlhEtLS1ib29PwsPDW3wuGq+r\nXmBgYJPHs2zZMmJmZkY0NTWJh4cH+ffff5s89okTJ5Jp06YRTU1NcuDAATJo0CDyzTffkH79+hF1\ndXXi5+dH8vPzyUcffUQ0NTWJl5cXSUtLa1jHvXv3iKenJ+FwOMTLy4vcv3+/4bZBgwaRb7/9lrz3\n3ntEQ0ODfPDBB6SgoIAQQsiLFy8Ii8UiPB6PEEJIYWEhmTVrFjE2Niba2tpk3LhxzT7mNWvWEGdn\n57f+vmnTJmJhYUEIIYTP55Ply5eTbt26EU1NTeLs7Eyio6MJIYRUVlaSlStXEgsLC8LhcEj//v1J\ndXX1W3l8fHzIwYMHCSFvv5e0tE+vXbtGFBUViYKCAlFXVydubm6EEEKys7OJn58f0dHRITY2NuS3\n335r8Tmo3ybVdrSASyhLS8smb8aNNf6ny8/PJ5qamuSPP/4gPB6PbN++nSgoKDT8s1y4cIHY2NiQ\n+Ph4wuPxyIYNG0i/fv0a1sVisYifnx8pKSkhGRkZRF9fn1y/fp0QQkhoaGiTgt1cAW/8QWPt2rVE\nWVmZXLt2jfD5fLJ69WrSp08fQgghdXV1xMXFhaxcuZJUVlaS6upqcu/ePUIIIYcPH36rGMyaNYt8\n++23hBBCbt26RfT09Eh4eDipqakhS5cuJQMHDnznY7hx4wYhhJApU6aQjRs3EkIIqampadjmmxIS\nEoiamhq5efMmqaurI5s3byY2NjaEy+USQpq+6TWnudvftW9be14a++qrr4iPj0+zt1lYWDS8ab75\noe/Ngnfo0CFSXl5OamtryfLlyxvehAkRFFxdXV3y5MkTUldXRwICAsiUKVOaPJbGBbUtBVxPT488\ne/aMVFdXkyFDhhALCwty7NgxwufzyZo1a8jgwYNb3J8sFoskJyc3+dubH0iCgoJIUVER4fF4ZNu2\nbcTQ0JDU1NQ0LKugoEAuXrxICCGkqqqKDBo0iNja2pLU1FRSUlJCHBwciI2NDbl16xapq6sjM2bM\nILNnzyaECIqulpYWCQoKIjwej5w8eZJoa2uToqIiQoiggNvY2JCkpCRSVVVFfHx8yKpVqwghbxfw\nkSNHkilTppDi4mLC5XLJP//80+xj9vb2JoGBgW/9PTU1lbBYLJKYmEiuX79OPDw8SElJCSGEkPj4\neJKbm0sIIWTJkiVk8ODBJCcnh/B4PPLgwQNSU1PTrgL+rn0aGBhIpk+f3iTbgAEDyMcff0xqampI\nREQE0dfXJ7dv327xOaDahx5Cl1CEEIwbNw7a2toNX82dYw0JCYGTkxPGjRsHNpuNZcuWwdDQsOH2\nvXv3YvXq1ejRowfYbDZWr16NiIgIZGZmNiyzatUqaGpqwszMDIMHD0ZERERDhvYaMGAAhg8fDhaL\nhWnTpuH58+cAgMePHyM3NxdbtmyBiooKlJSU0K9fvzZt5/jx45g7dy7c3NygqKiIH374AQ8ePEBG\nRkarj0FRURFpaWnIzs6GoqJiwzbfFBwcjNGjR8PX1xdycnL4/PPPUVVVhfv37zcs01rO5m5/M1f9\n/mjL81KvoKCgyXPamJGREQoKCt6Zq96sWbOgpqYGBQUFrF27Fs+fP0dZWRkAweHpCRMmwNPTE3Jy\ncggICGjYhx1Rvz53d3coKSlh/PjxUFNTw7Rp08BisTBp0iSEh4e/cx29evVq8vrftGlTk8PoAQEB\n0NbWBpvNxsqVK1FTU4OEhISG2/v164cxY8YAAJSVlcFisTB79mxYWVlBU1MTI0aMgJ2dHYYMGQI5\nOTn4+/s3ZLp69Sp69OiBgIAAsNlsTJkyBfb29rh06VLD45s9ezZsbGygrKyMSZMmNbu/cnNzcf36\ndezduxccDgfy8vItdhorLCyEkZHRW3+v/1tBQQEUFRVRVlaGuLg48Pl89OjRA4aGhuDz+Th06BC2\nb98OIyMjsNls9OnTB4qKiu/cx2961z4lggZhw7KZmZm4f/8+Nm3aBEVFRbi6umLevHk4evRoi88B\n1T60gEsoFouFixcv4vXr1w1fc+fOfWu5nJwcmJqaNvlb49/T09Px6aefNrwJ1p/Pzs7OblimcXFQ\nVVVFeXl5h3MbGBg0WVd1dTX4fD4yMzNhYWEBNrv9L8nc3FxYWFg0/K6mpgZdXd13Pob6wrR582YQ\nQtC7d284OTnh0KFDLW7D3Ny84XcWiwUzM7Mm22jtHGxzt7e0b9vyvNTT19dHbm5us9vMyclpss9b\nwuPxsGrVKtjY2IDD4cDKygoAmhT/xutRUVHp1OsAALp169bws7KycpPf27L+8PDwJq//VatWNSkg\nW7duhYODA7S0tKCtrY2SkpImj+fN/wug6WN8M5OysnJDppycnCavBwCwsLBo0pmz8XPb0uPJzMyE\njo4OOBzOOx8rAOjp6TXbWbT+udfT08PgwYPxySef4OOPP4aBgQEWLlyIsrIyFBQUoLq6Gt27d291\nO+/S2j5tLCcnBzo6OlBTU2v4m7m5eZPXcHPPAdV2tIBLOWNjY2RlZTX8Tghp8ru5uTn279/f5I2w\noqICffr0aXGdLRUqNTU1VFZWNvzO4/GQn5/fppxmZmbIyMhotiNLa4XR2NgYaWlpDb9XVFSgsLAQ\nJiYmrW7XwMAA+/fvR3Z2Nvbt24clS5Y025va2NgY6enpDb8TQpCZmdmmbbTlMbypPc/L0KFD8ejR\noybPKwA8evQI2dnZGDp0KADB81NRUdFwe25ubkOuEydO4NKlS7h16xZKSkrw4sWLhsfZEW++Fl6+\nfNmh9bRH46z//vsvtmzZgjNnzqC4uBivX78Gh8NpskxHPnDVMzExafJ6AAQfutr6eqhnZmaGoqIi\nlJSUtLrs0KFDcf78+beek9OnT8Pc3By2trYAgKVLlyIsLAyxsbFITEzEli1boK+vD2VlZSQnJ7cr\nX2Ot7dM395exsTGKioqafHDJyMhoUrRF3blT2tECLsHa8uY6cuRIREVF4eLFi6irq8OuXbuavJku\nWrQIGzduRGxsLACgpKQEZ86ceec2W9qunZ0dqqurERISAi6Xiw0bNqCmpqZNj6V3794wMjLCqlWr\nUFlZierq6obD0wYGBsjKygKXy202x9SpU3Ho0CE8f/4cNTU1+Prrr9GnT5+3WkiN71vvzJkzDYVP\nS0sLLBar2aMAkyZNwtWrV3H79m1wuVxs27YNysrKTQ65v+v5MDAwQEpKyjv3QePH1J7nxdfXF76+\nvpg4cSJiY2PB4/Hw8OFDTJ8+HZ9++inMzMwAAG5ubjh16hTq6uoQFhbWpOdyeXk5lJSUoKOjg4qK\nCnz99dct7rO2PD5XV1fExMTg+fPnqK6uRmBgYLvW11llZWWQl5eHnp4eamtrsX79epSWlrZ6v8a5\n3pVxxIgRSExMxMmTJ1FXV4fg4GDEx8dj9OjRbbp/PSMjI4wYMQJLlixBcXExuFwu/vnnn2aXXbFi\nBUpKSjB37lzk5eWhuroaJ0+exMaNG7FlyxYAQFhYGB49egQulwtVVVUoKytDTk4OLBYLc+bMwcqV\nK5Gbmwsej4cHDx6gtra21Yz1WtunhoaGSEtLa3jcZmZm6NevH1avXo2amhpERkbi999/x7Rp09q8\nTerdaAGXYH5+fk3GgU+cOBFA03Gcenp6OHPmDL788kvo6ekhLi4Onp6eUFJSAgCMGzcOX331FaZM\nmQIOhwNnZ+cmY8jf/IT85hjRxj9zOBzs3r0b8+bNg6mpKdTV1RuKR3P3bXx/OTk5XL58GcnJyTA3\nN4eZmRlOnz4NQFCgHB0dYWho2HBIs/G6fH198f3332PixIkwNjbGixcvcOrUqTY9hrCwMPTp0wca\nGhoYO3YsduzYAUtLy7f2tZ2dHYKCgrB06VLo6+vj6tWruHz5MuTl5VvcTmOffvopzp49Cx0dHSxf\nvrzZZRrnau15edO5c+cwePBgDB8+HCoqKujXrx+mTp2Kbdu2NSzz/fffIyUlBdra2ggMDERAQEDD\nbTNmzICFhQVMTEzg5OSEvn37vvU8t/TcAYIxwDNnzoS2tjbOnj0LOzs7fPfddxg6dCh69OiBAQMG\nvHN9ra2/uX31rv03fPhwDB8+HHZ2drC0tISKispbp0BaWkdbMunq6uLKlSvYtm0b9PT0sHXrVly5\ncgU6OjptWlfjn48dOwYFBQXY29vDwMCgxeGgOjo6uHv3Lqqrq+Hg4AA9PT388ssvCAoKgr+/PwCg\ntLQUCxYsgI6ODiwtLaGnp4cvvvgCgODwt7OzM7y8vKCrq4vVq1e32HruyD6tz6CrqwtPT08AwMmT\nJ5GWlgZjY2NMmDAB69evx5AhQ1rcv1T7sIioPwpTYoXP58PMzAwnTpzAoEGDmI5DicisWbOQnJyM\nW7duNXxYoyhKuoi8Bc7j8eDu7g4/P7+3bgsNDQWHw4G7uzvc3d3FampMafLnn3+iuLgYNTU12Lhx\nIwC88xw3JfkOHDiAMWPG4NmzZ0xHoShKRORbX6Rztm/fDgcHh4Zev28aNGhQw9ALSjQePHiAjz76\nCLW1tXB0dMSFCxdoq0zKycvL48svv2Q6BkVRIiTSFnhWVhZCQkIwb968Fjt00CP4ord27VoUFBSg\ntLQUDx48gJeXF9ORKIqiqE4SaQt8xYoV2LJlS4u9P1ksFu7fvw9XV1eYmJg0jDF8cxmKoiiKkiVt\nadyKrAV+5coVdOvWDe7u7i0G6dWrFzIzM/H8+XMsXboU48aNa3a5ESNGNAyxoV/Nf61du5bxDJLy\nRfcV3U90X9H9JM5fbSWyAn7//n1cunQJVlZWmDp1Km7fvo0ZM2Y0WUZDQwOqqqoABEWay+WiqKjo\nrXXdu3cPhYWFoopKURRFURJHZAV848aNyMzMbBiTO2TIkCZz4AJAXl5ew6eNx48fgxDSZBxlvQ8+\n+AB//PGHqKJSFEVRlFiorq5u87JdNpFL/bnsffv2Yd++fQCAs2fPwtnZGW5ubli+fHmTyTcamzx5\nMoKDg7sqqkTy8fFhOoLEoPuqbeh+aju6r9qG7qfWXb9+vc3Liv1ELiwWCxUVFTA2NkZiYmKTiwtQ\nFEVRlDSZOnUqTp061aZz4RIxlaqqqipGjhzZZO5miqIoipImlZWVCAkJafPyElHAAWDKlCn0MDpF\nURQlta5evYrevXu3eXmJKeDDhg1DZGRks9fDpSiKoihJFxwcjClTprR5eYkp4EpKShgzZgzOnj3L\ndBSKoiiKEqqysjL89ddfGD9+fJvvIzEFHBD0Rm+ppzpFURRFSarLly+jf//+zQ6lbolEFfChQ4ci\nMTERGRkZTEehKIqiKKEJDg7G5MmT23UfiSrgCgoKGD9+PE6fPs10FIqiKIoSiuLiYty5cwdjx45t\n1/0kqoADdFIXiqIoSrpcuHABQ4YMAYfDadf9JK6A+/j4ICMjAykpKUxHoSiKoqhO68jhc0ACC7i8\nvDw+/PBDehidoiiKkniFhYW4f/8+/Pz82n1fiSvgAD2MTlEURUmH8+fPY9iwYVBXV2/3fSWygPfv\n3x/5+flISEhgOgpFURRFdVhHD58DElrA2Ww2/P39aSucoiiKklh5eXkICwvDyJEjO3R/iSzgwP9P\n6iLmF1OjKIqiqGadO3cOo0aNgoqKSofuL7EFvE+fPqioqEB0dDTTUSiKoiiq3U6dOtXhw+eABBdw\nFouFSZMm0cPoFEVRlMTJzs5GdHQ0hg0b1uF1sIiYH4NmsVgtHiYPCwvD1KlTkZiYCBaL1cXJKIqi\nqDcVcbmo5PNRy+ejlpBmvxMAjmpqMFFUlNn37l9++QURERE4fPjwW7e9q+41Ji+CXF3Gw8MDfD4f\n4eHh6NWrF9NxKIqiZE4tn49/S0oQUliIkKIiZNfUQFNeHoosFhTZ7Ga/8whBZEUF5Fks9NbQgJem\nJrw0NOCpoQFdBQWmH1KXCA4OxnfffdepdUh0CxwAvvnmG9TV1WHTpk1dmIqiKEp2ZdfU4FpREUIK\nC3G7uBj2qqoYqaODkbq66KWuDnYbWtWEEKTX1OBJaSmelJXhSVkZnpaVQV9BAV6amuitoYEP9fVh\nrqzcBY+oa6Wnp8PDwwO5ublQaOYDS1tb4BJfwCMjIzF27FikpqbK7KEYiqIoUcuuqcHu7GxcLSpC\nZnU1PtDRwUgdHQzX0YG+oqJQtsEnBAmVlXhSVoZ7JSU4m5+P3pqamG9kBD9dXSiwJbbbVhNbtmxB\nUlIS9u/f3+ztMlPACSFwcHDA4cOH4e3t3YXJKIqipF8lj4dtmZn4JSsLMwwN8aG+Prw1NSHfBQ2m\nKh4P5woK8FtODhKqqjDTwABzjYxgp6oq8m2LkqenJzZt2gRfX99mb5eZAg4AgYGBKCkpwc8//9xF\nqSiKoqQbIQSnXr3CV6mp6KupiU3du8OSwcPZCZWVOJibiyMvX6KnmhrmGRlhop4eVOTkGMvUEcnJ\nyXjvvfeQnZ0Nefnmu6HJVAFPSEjA4MGDkZmZCTkJezIpiqLEzaPSUixPTgaXEPzcvTsGaGkxHalB\nLZ+Py4WFOJCbiydlZfjExAQrTU2h2UIxFDfr169Hfn4+fv311xaXkakCDggOSfz4448YOnRoF6Si\nqJYV19XhUWkpCrhcFHK5KPjvq8nPdXVQYbMxpVs3TDcwkPhDgpR0yKqpwerUVNx+/Robra0x3cCg\nTR3SmJJaVYV1aWm4XlSEr8zNscTEBMpifJ6cEAJ7e3scOXIEffr0aXE5mSvgP//8MyIjI3Ho0KEu\nSEVRb3vN5eKXrCzsysmBq5oaDBQVoaegAF0FBej999X451e1tQjKy8OJV69gqayM6QYGmNytG/Rk\nZBgNJT6q+XxsysjAjqwsLDYxwSpzc6hL0NHMmIoKrHnxAk/LyvCdpSVmGRp2yTn69goLC8OUKVOQ\nlJT0zk7XMlfAc3Nz4ejoiOzs7A7PK0tRHdG4cI/V1cU3FhawbsdrsI4Q/FVUhGN5eQgpKsIgDgfT\nDQ0xWldXrFsTlHR4WVuLcdHRMFRUxHYbG1hI8LCtR6Wl+Do1FZk1Nfjeygr++vpidQRhxYoV0NDQ\nwPr169+5nMwVcAB4//33sWDBAvj7+4s4FUV1vnA3p7SuDucLCnD05Us8Ly/HdENDbLSygqoEtYYo\nyRFZXo4x0dGYbWiI7ywspGYo7s3Xr7E6NRU8QvA/KysM19Fh/LHxeDyYmpoiNDQUPXr0eOeyMlnA\nDx8+jAsXLuDChQsiTkXJMlEU7uZkVldjVWoqoisqcNbREbb0PDklRFcLCzE7Ph47bG0xpVs3puMI\nHSEEfxQU4JsXL2CupISdtraM/g/dvHkTq1atQlhYWKvLtrXuifz4HI/Hg7u7O/z8/Jq9fdmyZbC1\ntYWrqyvCw8M7ta3x48fjzp07eP36dafWQ1Et2Z2dDdvHj5FVU4PHvXrhoL29SIo3AJgpKyOoZ08s\nMjbGe+HhuFBQIJLtULKFEIKfMzMxPyEBl5ydpbJ4A4IiOEFfH5GenvhARwd9w8MRmJaGaj6fkTzH\njx9HQECAUNcp8gK+fft2ODg4NHv4IiQkBMnJyQ0z0ixevLhT2+JwOPjggw9w9uzZTq2Hot7EIwTL\nkpKwMzsb993dRVq4G2OxWFhsYoLLzs74NCkJX6WkoE68D5pRYozL52NRYiIOvXyJB716oY+mJtOR\nRE6BzcZnZmYI9/BAVHk5nJ88wZ9FRV2aoaqqChcuXMCUKVOEul6RFvCsrCyEhIRg3rx5zR4OuHTp\nEmbOnAkA8Pb2RnFxMfLy8jq1zYCAABw/frxT66Coxsp5PIyPjkZMRQXu9+rFyJAvb01NPPX0RHh5\nOd5//hx5tbVdnoGSbK+5XIyIikJ2bS3uubtLdGe1jjBTVsY5Jydst7HBosRETI6JQU5NTZds+8qV\nK/Dw8ICRkZFQ1yvSke8rVqzAli1bUFpa2uzt2dnZMDMza/jd1NQUWVlZMDAwaLJcYGBgw88+Pj7w\n8fFpcZsjRozA3LlzkZmZ2WTdFNURuTU1GB0VBRd1dZx1dIQig73C9RQUcM3FBevT0uDx9CmCHRzw\nHofDWB5KciRXVWFUZCRG6epiS/fukJOSzmodMVJXF9FaWtiYkQHXsDCssbDAxyYmIh121trh89DQ\nUISGhrZ7vSIr4FeuXEG3bt3g7u7+zmBvtsybO9TeuIC3RklJCRMnTsTJkyfx5Zdftvl+FPWmqPJy\njI6KwgJjY3xtbs54L1YAkGOxsM7KCt6ampgQHY3VFhb41MRELLJR4ulBSQnGx8RgnaUlFhobMx1H\nLKjKyWGDlRWmGRhgSWIiDr98iX12dugtglMKRUVFuHPnDo4cOdLiMm82TNetW9emdYusOXH//n1c\nunQJVlZWmDp1Km7fvo0ZM2Y0WcbExASZmZkNv2dlZcHExKTT26aH0anO+rOoCL7Pn+NHa2t8I4bD\na0bq6uKRhweC8vIwNS4OXIY65lDi7Xl5OcZGR+NQjx60eDfDXlUVt1xd8bmZGcZER+OLlBRU8XhC\n3cbZs2fxwQcfgCOCo2UiK+AbN25EZmYmXrx4gVOnTmHIkCE4evRok2XGjBnT8LeHDx9CS0vrrcPn\nHTFgwAAUFRUhOjq60+uiZM9vOTmYER+P805OmCqE16OoWCor4667Oyp4PMxNSACfdm6jGkmqrMSI\nyEjssrXFCF1dpuOILRaLhQADA0R5eiKrpgauYWH4t7hYaOs/ceKE0Huf1+uyE3r1LZh9+/Zh3759\nAICRI0fC2toaNjY2WLhwIXbv3i2UbbHZbEydOpW2wql24ROCVamp2JyZiX/d3NBfAs4vK7PZCHZw\nQHJVFValpjIdhxIT2TU1+CAyEussLeEvpcPEhE1fUREnHRywuXt3TImNxdKkJJR3sjWemZmJqKgo\njBgxQkgpm5KqiVwae/78OcaMGYMXL16ATaejpFpBCMHshAQkV1XhgpOTxM1HXsjlYkB4OOYbGWEF\n7bwp0wq5XAwMD8cMQ0N8ZW7OdByJ9JrLxcqUFIQWF2O/nR3e19Hp0Ho2b96M5ORk7N+/v133E5uJ\nXJji4uICDQ0N3Lt3j+kolAT45sULJFRW4k8XF4kr3gCgq6CA6y4u+DkrC8c7ORSTklzlPB5GRUVh\nlK4uLd6doK2ggEP29thrZ4d5CQmYl5CA4rq6dq9HFJO3NCa1BZzFYtHObFSb7MnOxtn8fFx2dpbo\nOcfNlZVxzcUFK5OTu3yiCop5NXw+xkdHw0lNDZusrZmOIxWG6eggyssLiiwWnJ48weV2zIYYHR2N\n169fY8CAASLLJ7WH0AEgPT0dHh4eyMnJgaKiopCTUdLgUkEBFiUm4q67e5fMrNYV7paUYEJ0NEJc\nXOCpocF0HKoL8AjB5NhYAECwg4NMj/MWldDiYsyNj8d7HA5+sbGBTitH6lavXg0+n49Nmza1e1sy\nfwgdACwsLNCzZ09cv36d6SiUGHpYWoq5CQm46OQkNcUbAPpzOPitRw/4RUUhqbKS6TiUiBFCsDAx\nESV1dTjesyct3iLio6WFSC8vaMnLw/nJE1x6R2ucz+fjxIkT+Oijj0SaSaoLOCAYE37ixAmmY1Bi\nJqmyEuOjo3HY3h5eUjgf9Fg9PXxvZYVhkZF4SaddlWr1V6z7w8kJSrTDrkipyclhh60tTjg4YGVK\nCqbFxaESR5ApAAAgAElEQVSIy31ruXv37kFDQwMuLi4izSP1z7a/vz+uXbuGsrIypqNQYuJVbS1G\nREVhvaUlRknx+Nh5RkaYbWiIEZGRKO1ABxxK/P2UmYkrhYW46uwMdQnuvyFpBmlp4bmnJ3Tl5eH0\n5AkuvtEar++8JuoJoKT6HHg9Pz8/+Pv7vzUTHCV7Kng8DI6IwHAdHay3smI6jsgRQvBJUhLiKitx\n3cWF0bncKeH6q6gIM+Lj8ahXL5jL2IVJxMk/xcWYk5CAPpqa2G5jAw1CYGxsjKdPn8LCwqJD66Tn\nwBuhvdEpAKgjBFNiY+GgpoZ1lpZMx+kSLBYLO2xtocJmYzWd6EVqpFZVYVpcHE45ONDizbCBWlqI\n9PSEvoICnJ88QeCtW+jZs2eHi3d7yEQLvLKyEsbGxoiPj4ehoaGQklGShBCCRYmJSKuuxhVnZyjI\nWEu0kMtFr7Aw7LC1xVg9PabjUJ1QweOh77NnWGBsjE+EcO0ISnjulpRgxJ076MFmI2T4cHTr4Ogn\n2gJvRFVVFWPGjEFwcDDTUSiG/JiRgcdlZTjr6ChzxRsQTPQS7OiI+QkJeFFVxXQcqoMIIZgTHw8P\nDQ18TC9OInZc2WywFyxAX2truISF4UReXqcboO8iM+9kAQEBCAoKYjoGxYDrRUXYmZ2Nq87O0JAX\n2RV0xV4fTU2sNjfHpNhY1NCrl0mkzZmZeFFdjT12dmJ3hTwKOH/+PAb16YNfnZxw2ckJGzMyMDY6\nGtk1NSLZnswU8KFDhyI7Oxux/012QMmGtOpqzPzvXKGxkhLTcRi33NQUpkpK+CIlhekoVDtdLyrC\n9qwsnHdygrIMHkWSBEeOHGnoLO2lqYmnHh5wV1eHW1gYDuTmCr01LhPnwOt9+eWXYLFYHZoZh5I8\n1Xw++oeHI6BbN3qBj0aK6+rQKywMm6yt6ZWqJERyVRXee/YMZx0dMUBLi+k4VDPqZ/7Mzs6G0huN\nhcjycsxJSIC2vDz229nBqpWJo+g58GbMnDkTQUFB4An5gu2UeFqWlITuyspYbmrKdBSxoiUvj9OO\njvg4KQnJ9Hy42Cvn8TAuOhprLS1p8RZjx44dw6RJk94q3gDgoq6Oh716Yai2NryePcOvWVngCaFh\nKlMF3NHREcbGxrh58ybTUSgRO5Sbi39LSnCgRw96rrAZnhoaWGtpCf+YGFTT8+FiixCC2fHx6KOp\nicW005rYIoTg6NGjmDlzZovLyLNY+MrcHPfc3XEmPx/vhYcjqry8U9uVqQIOCFrhR44cYToGJULh\nZWX4KjUV5x0dZbrTWmuWGBvDVkUFy5OTmY5CteDHjAxk1tRgl60t/SAqxh48eAA2m43evXu3umwP\nVVWEurlhrqEhfJ8/x9epqajq4FFhmSvgU6dORUhICEpKSpiOQonAay4XE2NisMvWFj3V1JiOI9ZY\nLBYO9OiBW69f4wS9hrjYuVZYiJ3Z2Tjn6EjnOBdzR44cwcyZM9v8IYvNYmG+sTGee3oipaoKLmFh\nuPX6dbu3K1Od2OpNmDABI0eOxLx584S6XopZfELgFxWFHqqq+MnGhuk4EiOivBzvP3+Of93dYa+q\nynQcCkB6dTV6P32Kc05O6M/hMB2HeoeqqiqYmJggMjISph3sb3O5oAAfJyVhiLY2tnXvDj1FRdqJ\nrSX0MLp0+l96Okp5PGyytmY6ikRxU1fHRisr+MfEoJJ28GRcLZ+PybGx+MLcnBZvCXDp0iV4eHh0\nuHgDgJ+eHmL+u1Sp45Mnbb6fTLbAa2trYWpqigcPHqB79+5CXTfFjBtFRZgTH48wDw8Y0fHe7UYI\nQUBcHLTk5bHbzo7pODJtRXIyUqqqcNHJiZ73lgAjR47ERx99hGnTpgllfU9KS9Gbw6Et8JYoKipi\n6tSpOHr0KNNRKCFIr67GzPh4nHRwoMW7g1gsFvbY2eFaUREuvXFpRKrrnM/Px4WCAhyxt6fFWwLk\n5ubiwYMHGD9+vNDW6aWp2eZlZbKAA4LD6EePHgWfDqGRaDV8PvxjYvCFmRkG0jGyncKRl0dQz55Y\nkJiIXBFN/Ui1LKWqCosSExHs4ABtBQWm41BtEBQUhPHjx0ONoQ6zMlvA3d3doa6ujn///ZfpKFQn\nfJGSAlMlJaykk7UIxXscDhYZG2NmfDz44n12TapU8/mYFBODby0s0LsdLTCKOYSQht7nTJHZAs5i\nsWhnNgl35tUrXC0sxO/0cKNQrbGwQAWPh1+yspiOIjM+S06GtYoKvTyoBHn27BkqKiowYMAAxjJI\nxCwXgYGBCAwMbPhZWN8DAgJgbW0NIyMj/O9//xP6+ul30X0P+PJLfJyUhHEPHuCX69cZzyNt34O+\n+grez54hMTgYhuXljOeR5u/R3bohwsMDTz08sG7dOsbz0O9t+37kyBFYWFhg/fr1Ql9/W8lkL/TG\nhN2DkBK9Kh4P/cLDMd/ICEtoi0VkjuflYUN6Op56eEBVTo7pOFIpobIS/cPD8aeLC9w1NJiOQ7VR\nbW0tTExM8PDhQ5GMZKIXM2kjehhd8ixPTkYPVVU6N7SIBRgYwENDA5/RS4+KRBWPB/+YGGywsqLF\nW8KEhITA3t6e8WHIMl/Ax44di2fPniEzM5PpKFQbHM/Lw53iYuy3s6PnvbvALltb3CgqwkU6tEzo\nliYnw0lNDQuMjJiOQrUT053X6omsgFdXV8Pb2xtubm5wcHDA6tWr31omNDQUHA4H7u7ucHd3x4YN\nG0QVp0XKysr48MMPERQU1OXbptonrqICy5OTccbREZry8kzHkQn1Q8sWJiYihw4tE5pjL1/ibkkJ\n9tEPohKnoKAAt2/fhr+/P9NRRFfAlZWVcefOHURERCAyMhJ37tzB3bt331pu0KBBCA8PR3h4ONas\nWSOqOO9UfxhdzLsDyLQKHg/+sbH40doarurqTMeRKf04HCymQ8uEJrK8HCtTUnDGwYFeLU8CnTx5\nEqNGjQJHDKa5FekhdNX/LoxQW1sLHo8HHR2dt5ZpS9H8p7hY6Nka69u3L/h8Ph4/fizS7VAd93FS\nEnqpq2OOoSHTUWTSNxYWqOLz8RMdWtYpxXV1mBgTg59tbOBMP4hKJHE5fA6IeBgZn89Hr169kJKS\ngsWLF8PBwaHJ7SwWC/fv34erqytMTEywdevWt5YBAL/PP4eNigre19bG8CFD4OPjI9ScLBYLM2bM\nwJEjR+Dt7S3UdVOddyg3F09KS/HYw4MebmSIPIuFoJ494fX0KQZracGDdrpqNz4hmBUfjw+0tTHN\nwIDpOFQHxMTEIDc3F0OHDhXqekNDQxEaGtru+3XJMLKSkhIMGzYMP/74Y5PiW1ZWBjk5OaiqquLa\ntWv49NNPkZiY2DQgi4ViLhdfp6bij4IC/GJjA399faG/kaenp8PDwwPZ2dlQovNpi43I8nL4Pn+O\nv93c4ECv7824069eYXVqKp55eoJDD/+2y6aMDPxRUIC/3dzo9b0l1JdffgkWi4VNmzaJdDtiNYyM\nw+Fg1KhRCAsLa/J3DQ2NhsPsI0aMAJfLRVFR0dv3l5fHLjs7nHV0xPr0dPhFRyOjulqoGS0sLODi\n4oLLly8Ldb1Ux5XU1cE/JgY/de9Oi7eYmNStG4br6GBOfDztM9IOt1+/xi9ZWTjj4ECLt4Sqq6tD\nUFCQ2Bw+B0RYwAsKClD837nrqqoq/PXXX3B3d2+yTF5eXsObwOPHj0EIafY8eb1+HA6eeXigr6Ym\nej19iu1ZWeAJ8U2EjgkXH3xCMD0uDkO0tTGdnvcWKz/Z2CC9pga/ZmczHUUiZNXUICAuDkE9e8JM\nWZnpOFQH3bx5EyYmJs2e5mWKyAp4bm4uhgwZAjc3N3h7e8PPzw++vr7Yt28f9u3bBwA4e/YsnJ2d\n4ebmhuXLl+PUqVOtrleRzcY3Fha47+6OCwUF6PPsGSLKy4WSeeLEibh79y5ycnKEsj6q49anp6Oo\nrg7bbWyYjkK9QYnNxmkHB2xIT8fj0lKm44i12v+ulrfMxAS+2tpMx6E64ffff8fs2bOZjtGERE+l\nSgjBoZcvsSo1FbMNDRFoaQmVTk75uGDBAlhZWTU7bp3qGhcLCvBJUhKeeHjAUFGR6ThUC/7Iz8fK\nlBQ89fCADr38ZbOWJiUho7oafzg5gU07YEqs/Px82NraIi0tDVpdcNlisToHLiosFgtzjIwQ5eWF\ntOpquIWF4W5JSafWOXfuXBw8eJCe32NIXEUF5iUk4KyjIy3eYm68vj7G6elhFj0f3qzjeXm4XlSE\nIz170uIt4YKCguDn59clxbs9JLqA1zNQVESwoyN+tLbG5JgYLE1KQjmP16F19e7dGyoqKvj777+F\nnJJqTUldHcZFR2OztTW86TWRJcIma2u84nKxjY4PbyL6v1kDzzk6Qov21pdohBAcOHAA8+bNYzrK\nW6SigNcbr6+PKC8vlPF4cH7yBH8106O9NSwWC/PmzcPBgwdFkJBqCZ8QBMTF4X0dHcymc0NLDEU2\nG8EODtiSkYH7nTz6JS1K6uowIToaP3XvDhc6WYvEe/ToEWprazFw4ECmo7xFos+Bv8v1oiIsTEjA\nUG1tbLOxaden4MLCQnTv3h0vXryANu140iW+ffECfxcX45arKxToMBuJc6WwEEsSE/HM0xN6Mnw+\nnE8IJsbEwEhREbvt7JiOQwnBvHnzYGNjg1WrVnXZNmXiHPi7DNfRQZSXF5TYbDg9eYJL7biakq6u\nLoYPH44TJ06IMCFV73x+Po68fIkzjo60eEuo0bq6mNqtG6bHxcn0fOmfpaSgiMvFz3T0hFQoKyvD\nuXPnxGrsd2NS/W6pKS+P3XZ2ON6zJz5LScFHsbEo4HLbdN/6zmyUaMVWVGBhYiLOOTrCgHZak2gb\nrKxQxuNhU0YG01EY8XNmJv4sKsIFJyc6WYuUOH36NAYOHAgjMT2tJxOvskFaWnju6QkjRUW4PHmC\n8/n5rd7H19cXRUVFePbsWRcklE3FdXUYGx2Nrd27w4t2WpN4Cmw2Tjk4YEd2Nm69fs10nC51+tUr\n/JSVhWsuLtCW4VMI0ubgwYNi2XmtnkwUcABQlZPDNhsbnHF0xKrUVExppTXOZrMxZ84c2goXER4h\n+Cg2FiN0dDCTzrQmNUyVlHDSwQFTY2OFNsGSuPunuBifJCXhirMzzOlMa1IjNjYWaWlpGDFiBNNR\nWiQzBbzeexwOIjw9YaKoCOcnT3DuHa3x2bNn49SpU6iqqurChNKPEIKFiYngEoJt3bszHYcSMh8t\nLey2s8OoyEi8kPL/ndiKCvjHxOCEgwO9Tr2UOXjwIGbNmgV5MR4GKLW90NvifkkJZsfHw11DA7/a\n2EC/mXOwI0aMQEBAAKZNmyaSDLLoy5QUQY9zNzeod3LmPEp87c7Oxi9ZWbjn7t7s/5aky6mpQb/w\ncHxvaUnn65cytbW1MDU1xf3792HDQIdEme+F3hb9/muNmyopwSUsDGebaY3PmzcPBw4cYCCddNqU\nkYGrhYUIcXGhxVvKLTExweRu3TAyKqrDEyuJq9K6OoyMisJCIyNavKXQpUuX4OjoyEjxbg+ZboE3\nVt8ad1VXx05bW3T7r8VQW1sLMzMz3L17F7a2tiLPIc325+Tgh4wM3HV3hwm95rpMIIRgQWIiMqqr\ncdnZGYpS0Du7ls/HqKgo2KioYLetLVh0mlSpM3z4cEyfPh0BAQGMbJ+2wNupvjVuqawMl7AwnPzv\nUqeKioqYPn06fv/9d6YjSrQzr14hMC0Nf7q40OItQ1gsFvbY2UGZzcachASJHyNOCMH8hASosNn4\nlRZvqZSRkYEnT55gwoQJTEdpFW2BN+NJaSlmJySgu7Iy9tjZoSQ1FUOGDEFmZqZYd2gQV38WFWFa\nXBz+dHWFG+3oI5OqeDy8HxkJbw0NbBPzw5Lv8k1qKm4VF+O2qytU6SkgqbRu3Trk5+dj586djGWg\nLfBO8NLUxFMPD7ipq8M1LAwPtLRgZW2NkJAQpqNJnAclJQiIi8N5JydavGWYipwcLjk54cbr19ia\nmcl0nHbjEYJlSUm4UFCAy05OtHhLKR6Ph99//x1z585lOkqb0ALeAiU2G+usrHDT1RW7srNR+s03\n2BEczHQsiRJVXo5x0dE4Ym+P/hwO03EohukoKOC6iwt+zcrCsZcvmY7TZuU8HsZFRyO2shL3evWS\nyh71lMCtW7egp6cHd3d3pqO0CS3grXBVV8cjDw9MsrXF7UmT8ENsrMSfx+sKqVVVGB4ZiV9sbDBS\nV5fpOJSYMFVSwnUXF3yRmoo/2jAjItNyamowMDwc+goKCHF2ppcGlXIHDhyQmNY3QM+Bt4v/55/j\n8aBBsDA1xV47OzioqTEdSSylV1djSEQEPjMzwxITE6bjUGIorKwME6KjMd3AAOutrCAnhp3BosrL\nMToqCguNjbHa3Jx2WJNyBQUFsLGxQVpaGrS0tBjNQs+Bi8Dn/v6QX7kS/vr6GBQRgdWpqaiUsvGt\nnfWwtBR9nz3Dp6amtHhTLfLU0MBTDw88KivDsMhIvKqtZTpSEzeKiuD7/Dl+tLbG1xYWtHjLgGPH\njsHPz4/x4t0etIC3Q+/evaGqrAzn5GREenoivboaDk+e4HI7LlUqzU7m5cEvKgr7e/TAMlNTpuNQ\nYk5fURE3XFzQR1MTnk+f4kFJCdORAAjmK5gZH4/zTk6YamDAdByqCxBCxP7CJc2hh9Dbafv27Xjy\n5AmCgoIAADdfv8bHiYmwV1XFDltbWMjgxQwIIViXno7DL1/ikpMTXGhvc6qdrhQWYm58PNZYWOAT\nExNGWrx8QrA6NRV/FBTgqrMzbFVVuzwDxYyHDx9i+vTpSExMFIujLW2te7SAt1NhYSG6d++O1NRU\n6OjoAABq+HxszsjA9uxsfGFmhhWmplIx41RbVPF4mJOQgBfV1bjg5ARD2kOX6qDUqipMjImBvaoq\nfuvRo0un2n1VW4uPk5LwsrYWF5ycoEsvCSpT5s6dC1tbW6xatYrpKADoOXCR0dXVxejRo3HkyJGG\nvymx2fjW0hKPevVCaHEx3MPC8HdxMYMpu8bL2loMfv4cAHDH1ZUWb6pTrFVUcN/dHapsNno/fYr4\nykqRb/NVbS2+SEmB/ePHMFFSwl+urrR4y5ji4mKcP38ec+bMYTpKu9EC3gGLFy/G3r173/qE1F1F\nBSHOzlhvZYXpcXEYFx2N6IoKhlKKVmR5Ofo8e4bhOjo40bMnVOjEFpQQqMjJ4aC9PT4zM8OA8HDs\nzM7Gay5X6NtpXLir+XxEennhFxsbKMvIkTPq/x09ehTDhw9Ht27dmI7SbvTV2gH9+vWDoqIi7ty5\n89ZtLBYLE/X1kdC7NwZwOBgSEYEZcXFSdV3kq4WF8H3+HD9YWSHQ0lIszhlR0mWukRH+dHHB38XF\nsHz4EB/GxOBiQQFq+fxOrbe5wv2rrS1M6fz8MokQgr1792LRokVMR+kQeg68g3bv3o07d+7gzJkz\n71yutK4O2zIzsTM7G1MNDLDGwkJiDzW/5nKxPj0dwa9e4ZyjI/rS2dWoLvCay8WZ/Hwcy8tDfGUl\nJunrY4ahIXpraLT5w+Or2lpsyczEwdxcBBgY4Ctzc1q0Kfz9999YvHgxYmJixKohQjuxiVhpaSks\nLCwQGxsLIyOjVpfPr63FxowMHH35EguNjfGFmRm0JeRcWx0h2JeTg/VpaRivr4/1lpYNl1ulqK70\noqoKQXl5OJaXBwCYbmCAQVpaKKmrQ2FdHQq4XBRyuW99z6mtxTRauKk3TJ06FX379sWyZcuYjtIE\nLeBdYOHChTAzM8OaNWvafJ+M6mqsT0/HxYICrDQ1xWITE7GenvHPoiKsSE6GgaIifrGxoUPEpFld\nHdCWiYnEoAASQvC4rAzH8vIQVlYGXXl56CkoQFdBAXr/fTX+2URJSaz/z6iul5eXB3t7e7x48ULs\nJm9hvIBXV1dj0KBBqKmpQW1tLcaOHYsffvjhreWWLVuGa9euQVVVFYcPH35rEnlxLuDh4eEYO3Ys\nXrx4Abl2duJKqKzE+rQ0XC0qwhhdXcwzMsIADkdsDuPEV1bi85QUJFRWYmv37hijqys22SghKisD\nrlwBzp4FbtwAWuswxucDDg6Avz/w4YeAvX3X5KQoIfvhhx+QnJyMgwcPMh3lLYwPI1NWVsadO3cQ\nERGByMhI3LlzB3fv3m2yTEhICJKTk5GUlIT9+/dj8eLFooojEu7u7jA2Nu7QZUZ7qKriuIMDkr29\n4aaujoWJibB//BhbMjIYnVayiMvF8uRk9A8Px2AtLUR7eWGsnh4t3tKktBQ4cQIYPx4wNQWOHQNG\njwYyMoCamnd/VVcDv/4K5OUBQ4YAzs7A+vVAXBzTj4qi2ozH40lkzXmTSHuhq/43k1FtbS14PF7D\nxCf1Ll26hJkzZwIAvL29UVxcjLz/zm1JikWLFmHv3r0dvr+eggJWmpkh1ssLv9vbI6ayEnaPH+PD\nmBjcKCoCrwuOPnD5fIQWF+PLlBT0fPwYNXw+Yr288JmZGZTosBrpUFICBAUBY8cKivaJE8C4cUBa\nGhASAsyeDbzx/9ksOTlg4EBBEc/KAvbsAQoLgfffBxwdgcBAICZG1I+Gojrlxo0b0NXVhaenJ9NR\nOkWk7858Ph9ubm4wMDDA4MGD4eDg0OT27OxsmJmZNfxuamqKrKwsUUYSusmTJ+PRo0d48eJFp9bD\nYrHwHoeDw/b2SO/TB75aWvg6NRXdHz3CwoQEHMjNxfPyctQJqaDn1tTgUG4u/GNi0O3+fXyRkgIV\nNht33Nywx86OdlKTFnV1wM8/A1ZWwOnTwMSJgpb2lSvAzJmAtnbH181mA/37A9u3C9b522+CDwrD\nhwOjRgHp6cJ7HBQlRHv37pX41jcAiLRXB5vNRkREBEpKSjBs2DCEhobCx8enyTJvHudv7lBtYGBg\nw88+Pj5vrYNJKioqmD59On777Tds3LhRKOvkyMtjsYkJFpuY4Hl5Of4pLsY/xcXYmpmJrJoauKqp\nwUtTE14aGuitoQEbFZUWD3ETQsAlBLWEIKq8HCFFRQgpLMSL6mq8r62N0bq62GlrCwNasKVPRAQw\nbx7A4QCPHgG2tqLbFpsN9Osn+Nq8GdiyBfDwAL75Bli2TNBypygxkJGRgXv37uHkyZNMR2kQGhqK\n0NDQdt+vy3qhf//991BRUcHnn3/e8LdFixbBx8cHU6ZMAQDY29vj77//hkGjKwCJcye2egkJCRg0\naBAyMjKgKOJCWFJXh6dlZXhS/1VailIeD7oKCqjl81FLSJPvXEKgwGJBkc2GtbIyRunqYqSODvpy\nOJCn57WlU2UlsG4dcPgwsGmToKXNxHOdlAQsXCjoKPfbb4CbW9dnoKg3fPvttygpKcGOHTuYjtKi\nttY9kbXACwoKIC8vDy0tLVRVVeGvv/7C2rVrmywzZswY7Ny5E1OmTMHDhw+hpaXVpHhLih49esDB\nwQF//PEHJk+eLNJtceTlMURbG0MaHfp8VVuLUh4Piv8V6sbfFVgs2gFNlvz1F7BoEeDtDURFAUxO\nD2lrC9y6BRw6BHzwgeA8+9q1AL3KF8UQLpeLAwcO4ObNm0xHEQqRnQPPzc3FkCFD4ObmBm9vb/j5\n+cHX1xf79u3Dvn37AAAjR46EtbU1bGxssHDhQuzevVtUcURu8eLF2LNnDyPb7qaoCBsVFZgrK8NQ\nURE6CgpQl5ODIptNi7esKCgAZswA5s8Hdu4UdFITh7mdWSxgzhzBh4mMDEGvdSl586Qkz4ULF2Bn\nZwdHR0emowgFnchFSLhcLszNzXH79m307NmT6TiUrCBEUKw/+wz46CPBkC5xnmwnJARYsgQYNAj4\n6SdAV5fpRJQM8fX1xfz58xtO24orxseByxoFBQXMnTu3U0PKKKpdeDxg+XLgf/8DLl8WFERxLt4A\nMHIkEB0t6FjXpw+QnMx0IkpGJCQkIDo6GuPHj2c6itDQFrgQZWRkwN3dHRkZGVBTU2M6DiXNqquB\n6dOB/HzgwgVAzKaCbJN9+wSd7S5eBLy8mE5DSbmVK1dCSUmp2RlBxQ1tgTPA3Nwc/fr1Q3BwMNNR\nKGn2+rWgUxibLZj+VBKLNyDoob53r6BVfvUq02koKVZVVYWjR49iwYIFTEcRKlrAhYzJzmyUDMjI\nEEye4uUFnDwpFhcW6ZQxYwSH/+fOBcRwTmpKOpw+fRq9e/eGlZUV01GEihZwIRs2bBjy8/MRFhbG\ndBRK2kRGAu+9J5icZds2QQtcGvTpA/zzD7Bxo+CQuoScMqMkx549e7Bo0SKmYwidlLwDiA85OTks\nXLiQdmajhOv2bWDoUGDrVmDFCqbTCJ+dHXD/vqA1vmCBYApYihKC8PBw5OTkYNSoUUxHETraiU0E\nxPk6s5QEOnlS0Ns8OBgQo2mERaK8XHCpUjk5weOlnUGpTlqwYAHMzMzw7bffMh2lzRi/HriwSGIB\nB4CAgAB4eHhg5cqVTEehJBUhgkPlO3YIxk87OTGdqGtwuYJWeEyM4KIr4jAhDSWRioqK0L17d8TF\nxcHQ0JDpOG1Ge6EzbNmyZdi5cyd4PB7TUShJtXGjYBrSe/dkp3gDgIIC8Pvvgp72gwcLLldKUR1w\n8OBBjB49WqKKd3vQAi4i3t7e0NfXx1U6PIbqiN27BUXs5k2g0SV3ZQaLBWzYAIweLRhmVlbGdCJK\nwtTV1WHXrl1YtmwZ01FEhhZwEVq2bJlYX/GGElMnTgA//CAo3kZGTKdh1o8/Aq6uwLhxgslrKKqN\nLl++DCMjI3hJ8SRB7zwHzuVy8eeff+Kff/5BWloaWCwWLCwsMHDgQAwbNgzy8iK9nLggoISeAweA\n2tpaWFhY4ObNm1IzeT4lYleuCIaJ3boF0NeMAI8HTJ0qODd+5gzQBe87lOQbPHgwFi5cKPbznjen\n053Yvv/+e5w7dw59+/ZF7969YWxsDD6fj9zcXDx+/BgPHz7Ehx9+iDVr1gg9fJOAElzAAWDdunXI\nzRFM4rMAACAASURBVM2lw8qo1v39t6AH9uXLgsuBUv+vtlYw6YuhoeDUgrSMgadEIjIyEiNGjEBa\nWhoUFBSYjtNunS7gly5dgp+fX4uXo+Tz+bhy5QrGjBnTuaStBZTwAv7y5Uv07NkTqamp0G50DW+K\nauLZM2D4cMGQMV9fptOIp4oKQcc2Ly/g558F58kpqhnz58+HhYWFyBuYoiL0YWSVlZVQVVXtdLD2\nkvQCDgDTp0+Hq6srPv/8c6ajUOIoPl7Q23r3bkCKrpQkEq9fC8bCT5wIfPcd02koMVRYWAgbGxsk\nJCSgm4QOQRTaMLL79+/DwcEBPXr0AABERERgyZIlnU8oQ+iQMqpFGRnAsGGCTmu0eLdOWxv480/g\n2DHg11+ZTkOJoQMHDmDs2LESW7zbo9UCvnz5cly/fh16enoAADc3N/z9998iDyZNvLy8YGxsjMuX\nLzMdhRInr14B778vmBp11iym00gOAwPgr7+ALVsEhZyi/lM/dGzp0qVMR+kSbeoJYm5u3uT3ruh9\nLm2WLVuG7du3Mx2DEhclJYKW95QpgmlSqfaxtASuXwe++AK4dInpNJSYuHjxIszNzeHh4cF0lC7R\nagE3NzfHvXv3AAiGRW3duhU9e/YUeTBpM3HiRCQmJiIyMpLpKBTTuFxBb/O+fYHAQKbTSC4Hh/+/\nFCm9+h8FYMeOHVI9ccubWi3ge/bswa5du5CdnQ0TExOEh4dj165dXZFNqigoKGDx4sX4lZ63k22E\nAEuXCsYy79hBe1J3lpcX8NtvgoleMjOZTkMxKCIiAikpKRgvQ31J6MVMutCrV6/Qo0cPJCcnQ1dX\nl+k4FBN+/lkwjvnePUBTk+k00mPrViAoCPj3X0BDg+k0FAPmzp2L7t274+uvv2Y6SqcJrRd6QkIC\nfH19G2YSi4yMxIYNGzqfUAZ169YNY8eOxYEDB5iOQjHh8mVBoblyhRZvYfvsM6B3b8GMbXS0h8wp\nKCjA+fPnMX/+fKajdKlWC/j8+fOxceNGKCoqAgCcnZ1x8uRJkQeTVkuXLsWuXbtQV1fHdBSqK0VE\nAHPmAH/8AVhYMJ1G+rBYwK5dgvnS6XwLMue3337D+PHjoa+vz3SULtVqAa+srIR3o2kdWSyWRE5N\nJy48PDxgbm6OixcvMh2F6io5OYJpQHfvFrQSKdFQUBDMlX79umBfUzKBy+Vi9+7dMtV5rV6rBVxf\nXx/JyckNv589exZGsn6FpE6iVymTIRUVgJ8fsGiRoOc5JVra2oJTFOvXAzduMJ2G6gIXLlyAtbU1\n3NzcmI7S5VrtxJaSkoIFCxbgwYMH0NLSgpWVFY4fPw5LS8uuCShFndjqcblcWFlZ4cqVKzL5opMZ\nfL5gyk8OBzh0iPY470p37wITJgC3bwNOTkynoURowIABWL58OSZOnMh0FKERSic2Ho+HPXv24Nat\nW3j16hXi4+Nx7969Live0kpBQQFLliyhQ8qk3apVgrm79++nxbur9e8v6PHv5wfk5TGdhhKRZ8+e\nIT09HWPHjmU6CiNabYH36dMHDx48aPGqZKImjS1wAMjPz4ednR0SExNlruOFTDhwANi8GXjwAKBD\nBpmzdq1g7vTbtwEVFabTUEI2a9Ys9OzZE1999RXTUYRKaFcjW7RoEXJycuDv799wNTIWi4UJEya8\nc8WZmZmYMWMGXr16BRaLhQULFrzVySA0NBRjx46FtbU1AMFsZW9e/k1aCzgAzJs3D+bm5viOXlVJ\nuty+LRjO9O+/gJ0d02lkGyFAQIDgdMbJk/RIiBTJzc2Fo6MjkpKSpG5eDaEV8FmzZjXb+j506NA7\nV/zy5Uu8fPkSbm5uKC8vh4eHBy5cuNBkGtbQ0FD89NNPuPSOuYyluYDHxcXBx8cHaWlpUKGtA+mQ\nmAgMGAAEBwsue0kxr7pacLnW/2PvzONqSv84/olCkshW1tJeKmWpKUvZQ1KIso3GrqFhZgzG2GaM\nsa9jG2owlmQpIiHtFBWloqQIJUra63bv8/vj+ck0pO3ee+6t5/16ndft1rnnfOp2z+c8z/NdRo2i\nI3JGg2DlypXIz89vkEuRNfY9Ug0hISE1+l512NnZkRs3blT63q1bt8jYsWO/+DoAZM2aNRXP16xZ\n06Cea2trV/obcK2HPa/H85wc8qZdO+JtaysZetjzj88zMwnp0YN4TpggGXrY83o9z8/PJ+3btyeL\nFy+WCD3Cfl4DayaEEFLtCNzU1BTR0dHVfu9LpKWlYfDgwYiPj0erVq0qvh8UFAQHBwd07doVXbp0\nwdatW6Gvr1+3OxEpJSgoCHPnzkViYiKaNKlRcziGJMLjATY2gJERsH0712oYn+PBA9q+1deX1lBn\nSC27du1CWFgYPD09uZYiEmrqe1X2Bb19+zbCw8ORlZWF7du3VxwsPz8f/FqUKiwoKMDEiROxa9eu\nSuYN0BuB9PR0tGzZElevXsX48eORlJT0yTHW/qtjk5WVFawa0NTkoEGD0Lp1a1y6dKnRRlI2CNzc\ngObNaY9qhmRibEyDC+3tgTt3gK5duVbEqAPl5eXYsWMHzpw5w7UUoREYGIjAwMBav67KEXhQUBBu\n3bqFgwcPYv78+RXfV1RUhK2tLbS0tKo9OI/Hw9ixY2FjYwO3GvQ8VldXR1RUFJSVlT8KlJEBKSuj\nVZYaKGfOnMHevXsREhLCtRRGXdi3j1b+un2b1TiXBv74A/D0BIKDAQUFrtUwasmZM2ewb98+BAcH\ncy1FZAgliK28vByTJ0/GuXPnai2AEIKZM2eiXbt22LFjx2f3ef36NTp27AgZGRlERkbC0dERaWlp\nlQXKyIC0b08LYkyZQgOEmjattR5Jpry8HJqamjh9+jTMzc25lsOoDf7+wIwZQHg48P9sCoaEQwjw\n9de0Sp6nJ8CWrqQGQgj69euHX375BePGjeNajvB58QLw9ITMsmX1L+QiKyuLly9f1mkNOiwsDCdO\nnMCtW7dgYmICExMTXL16FQcPHsTBgwcB0LKshoaG6N27N9zc3HD69OnPH+zuXUBdnU5Tdu8OfPcd\nEBlJP4gNAFlZWXz33XfYtm0b11IYteHRI2DaNGoCzLylBxkZWlwnM5NFpUsZwcHByM/Px9ixY7mW\nIjzevAH27wcGD6bLPAkJNX6pyPLAhcUnUwmJicDp0zSnk8+no3InJ6kvl1hQUAA1NTVERERAQ0OD\nazmM6sjOBszNgRUraJcxhvSRlQWYmQG//QY4O3OthlEDbG1tYWtri7lz53ItpX68fw9cvEh97M4d\nYPRo6mUjRwLNmws3DxzAJ7ng1eWBC4sqfxFCgOhoauanTwPKynRabNo0QEormzXkvMYGRVkZ/aD1\n7cuC1qSduDhgyBDaq50tX0k0iYmJsLa2RmpqqnTWzeDzgevXaV8EPz9aJ8LJiZb7/U8shtAMnGtq\n9IsIBEBQEP3D+PjQog2zZtG0HikKfmvIlYUaDIQA8+YBGRn0DrqBxWM0Si5fpu/p7dt0iY4hkcye\nPRs9evTA6tWruZZSO5KSAA8P4NgxQFWVetOUKXTQWQVCM/Di4mIcOXIECQkJKC4urhiJHz16tHa/\nRB2pdR54Xh5dk3R3B1JS6Ih81izAwEB0IoWIi4sLevbs+UlJWYaEsGMHcPQoDVpTVORaDUNYbNtG\nL7Choex9lUAyMzOhp6eH5ORktG/fnms51ZOf/9GHkpM/+lANl3qF0o0MAKZPn47Xr1/Dz88PVlZW\nSE9P/ySfW6Jo3RqYPRsIC6Ojcjk5YMQIoH9/4OBBoKCAa4VfZNmyZdi7dy9KSkq4lsL4L15e9EJ/\n+TK7yDc0li4FvvoKmDiRFuVhSBR79+6Fs7OzZJs3IdR3Zs4EunWjyzI//EAjy7dtE0mcVrUj8N69\ne+P+/fswMjJCbGwseDweBgwYgIiICKGL+axAYVRiKy+naw+HDtHcz2nTgIULAR0d4YgUMmPGjIG9\nvT1mz57NtRTGBz70l/b3B1gP94ZJeTkt8tK+PZ1lYY1PJILCwkKoqanh9u3b0NTU5FrOpxQVASdP\n0noQBQXA/PnA9OlAx451PqTQRuDNmjUDACgpKSEuLg65ubl48+ZNnYVxgqwsXQ+/cAGIiQFatQIG\nDaIjc29vGlwgQXz//ffYtm0bBAIB11IYAE0XmzgROHGCmXdDRlaWBsQ+fAisW8e1Gsb/cXd3x6BB\ngyTPvJ88AZYto3ET3t7Apk3A48f0e/Uw71pRXbH0Q4cOkezsbBIYGEjU1NRI+/btyf79+2tUaF0Y\n1EBi3SgpIeT4cULMzQnp0YOQ338nJCtLNOeqJQKBgJiampJLly5xLYWRkUGIujoh7u5cK2GIi8xM\nQnr2JOSvv7hW0ugpLy8n6urqJDw8nGsplPJyQi5fJsTGhpD27Qn58UdCnj4V+mlq6nsNIwq9vkRF\n0emPCxcAOzt6B2VoKNpzVsOpU6dw8ODBOtXHZQiJggKa6mFrywp+NDYeP6aFNTw8aBtSBid4eXlh\nx44dCAsL41ZIQQGto797N40ed3UFJk8GRJTOJrQo9JKSEpw7dw5paWng8/kghEBGRga//PKL0MR+\nUaA4u5FlZ9N18t27AVNT4Mcf6VQ7B2thPB4Pmpqa8PLyQj/WOUn8lJfTmzkVFfrBZeuhjY+wMGD8\neODaNXo9YIgVQgjMzc3x008/wd7enhsRr18De/bQAGhraxrsaGYm8uuB0NbA7ezs4OPjAzk5OSgo\nKFRsDZJ27WhlrdRUGswydy4t7nDunNjXyeXk5ODm5oatW7eK9bwM0GjShQvpe37gADPvxoqlJX3/\nbW2B//RoYIie0NBQvHv3jpua58nJNBhNVxfIyaE1Ajw9qR9I0PWg2hF4r1698PDhQ3Hp+QRO+4EL\nBLQwzB9/AG/fAt9/TxtXiKkKUH5+PtTV1XH37l2oq6uL5ZwM0NKa587RNESWLsbYtYuOwEJDv1h8\ngyFc7OzsYGNjU6kbpsiJjAQ2b6af/QUL6FS5uALS/oXQRuAWFhaIjY0Viiipo0kTOoUWHk4T8i9f\npk1VfvuN1rIVMYqKipg7dy62sHKd4uPYMeDwYcDXl5k3g7JkCV0HHz8eYPUZxMLDhw8RERGBGTNm\niP5khNBlEisrYNIkumyamgqsX8+JedeGKkfghv8P4uLz+UhOToa6ujqaN29OXyQjIzZT53QE/jkS\nEmi6wNWrwLffAosXA23aiOx0WVlZ0NXVRXx8PFRVVUV2HgZorYBp04DAQEBPj2s1DElCIKDlL2Vk\naM4vK6ErUqZOnQpDQ0P89NNPojsJIbQm+bp1tHLaypWAo6NElN+udxDbf/ty/xc1NbW66Ko1Emfg\nH0hOpiPxy5epkS9ZIjIjX7JkCeTk5Nh6uCgJDKR33+fP057zDMZ/KSmh9STU1IAjR1gfcRHx5MkT\nmJub4+nTp2jdurXwT0AIHYCtW0ejy9esoXUeJOj9rLeB5+fnQ7GaKcSa7FNfJNbAP/DkCTXyS5eA\nRYtoz/K2bYV6ihcvXsDIyIg1OREVQUHUvM+coZGmDEZVFBbS1o8aGjQ7QYIu+g2FOXPmQFVVFevX\nrxfugQkBrlyhxl1URI17wgSJfA/rbeDDhg2Djo4O7Ozs0LdvXyj/P3gjOzsb9+7dw8WLF5GcnIwb\nN24IV/l/BUq6gX8gJYUauY8PjWD+7juhGrnI/qkbO8HB9EN85gxtK8lgVEdBATVxbW2adiqBBiCt\npKenw9jYWLiDFUJoTMu6dUBpKfDLL7QssgS/b0LJAw8ICMDJkycRFhaGV69eAQA6d+6MAQMGYOrU\nqbCyshKa4CoFSouBf+DpU2rk3t50av2772iDlXoi8mmlxkhoKE0XPHUKGDaMazUMaaKggE6n6+rS\nCHUJNgNpQqjLhYTQ3gU//wyUlVHjtreXiveqcfUDl0RSUugd37VrtCDMwoX1Tj8TS2BHYyEsjH6Y\n//kHGD6cazUMaSQ/n5q4gQGwf79UGIMkI9SA3dBQYNUqWohl/XqJW+OuDmbgksLDh/TOLzKS3gm6\nuAD/bxBT+0M9xLBhw/D06VO0bNlSyEIbEeHhNCXoxAna0IbBqCv5+TTFzMiIlmOWIpOQNFasWIH3\n79/jzz//rPtBoqPpdTYhga5xT59Om9RIGczAJY27d+k/VnIyHZk7O9cpFcXe3h7W1tZYvHixCEQ2\nAm7fpiVSjx8HRo7kWg2jIZCXR/+XTEyoiUtQpS5p4d27d9DU1ERUVFTdMpwePaIDpZAQOvKeMwf4\nf9qzNMIMXFIJDKT/YLm5wIYNdBq3Fh/4e/fuwd7eHikpKRWtXhk15M4dYNw44O+/6dQngyEs3r+n\nJt63L62dzUy8VmzYsAEpKSnw8PCo3QvT0uiA6PJlWinT1RVoAKW+hWbgS5cuxTfffAMDAwOhiasN\nDc7AgY95iKtW0emdjRtpEFUNP/QjR47EpEmTMHv2bBELlW4ERICM/Ayk5qaiICQAg7/dijsb5uGt\nVX80a9qsYpNrKlfxdbfW3dBBoQPX0hnSyPv3dEnGzIyWX2UmXiMKCgrQs2dPhISEQEdHp2Yvev0a\n+PVXWlRn4ULaQVKEBbXEjdAM/PDhw/Dw8ACPx4OLiwucnJygpKQkNKHV0SAN/AMCAXD2LLB6NdC1\nKzVyc/NqXxYcHAwXFxc8evQIslK4viNM+AI+HmY9RFJ2ElJzU+n2jj4+f/8cSs2VMDNVCatOPMNf\n3w5AlGknlPHLKjYen1fxdSm/FKnvUqHYXBEmKiYwVTWFiYoJTFRN0K11N8iwCzKjOnJz6exOjx7A\n0aMAi1Wplm3btiEiIgKenp7V75ybC2zZQpvMzJhBm09JeLnTuiD0KfRHjx7Bw8MDJ0+exIABAzBn\nzhxYi6HoRYM28A+Ul9O+w+vWAX360DvLXr2++JKBAwdiwYIFcHZ2Fo9GCYEQgoQ3CQhIDUBAWgCC\n0oLQUaEj9DvoQ72tOtTb/H9rqw41pR5o+cd2mqt74QKd3qzB8VNzUxGTEYPozGj6mBGNckE5TFRN\nYKJigqHqQzGs5zA0bcLKaTI+Q3ExXYN99Ai4eJHenDM+S0lJCXr27IkrV66gd+/eVe9YVETbPG/b\nRpfB1qwBuncXn1AxI1QD5/P5uHTpEtzd3fHixQs4OjoiNDQULVu2xJkzZ4QiuEqBjcHAP1BSQtNR\nNm2iU3Hr1gE9e352Vz8/P3z//feIjY1FkwYc+UoIwZOcJwhIDcCttFu4lXYLrZq1grWaNYaoD4G1\nmjVUFT+TclJURCP+U1OpeXfuXC8dGfkZiMmkZu7z2Acv819imtE0zDSeCf0O+vU6NqMBQgjtYrhn\nDy3Pa2bGtSKJZP/+/fD19cXly5c/v0NZGa149+uvwIABNCVMV1e8Ijmgxr5HqsHNzY1oaGiQOXPm\nkIiIiEo/09bWru7l9aYGEhse798Tsm4dIe3aEbJgASEvX36yi0AgIH369CEXLlzgQKBoEQgEJCYj\nhnzv/z3pvqM76bKtC5l+fjpxj3Enae/Sqj9AejohffoQMnUqIUVFItEYnxVPll9fTjpv60z6HepH\n9kbsJW8L34rkXAwpxseHkPbtCTl+nGslEkdZWRnp0aMHCQ8P//SH5eWEHDtGiLo6IaNGEXLvnvgF\nckhNfa/avY4ePUoKCgo++7N3797VTlUdaJQG/oE3bwj5/ntC2rYlZPFiQl69qvTjc+fOkb59+xKB\nQMCRQOHyNOcp+TXoV6K3V4+o7VQjK2+uJHGv42r3+925Q0jnzoRs2kSIGP4u5fxy4pfsR5y8nIjS\n70pkwpkJxOeRDykrLxP5uRlSQlwcNaLly6kxMQghhHh4eBBra+vK3ywvJ+TECUK0tQkZMICQoCBu\nxHFMTX2v2in0qKioT4J3lJSU0KNHD7EEUDWqKfSqyMykTeY9PGjgxvLlgKoqBAIBDA0NsWPHDoyQ\n0oIkb4vewjPeE//E/YOk7CRM0p+EqYZTYdHNovZBYydO0NK1R48CtraiEfwF3pe8h2e8JzweeOBV\n/itsHLIRk3tNRhOZhrvEwaghb9/SamCKirT6XyMvh8zn82FgYIB9+/Zh6NChAJ8PeHrSKfJ27ejy\n4ZAhjTaSX2hT6GZmZkRWVpaYmpoSU1NTIicnR3r37k3U1dWJn59fve4yakINJDYeMjIIcXOjI/Lv\nviMkI4McP36cDBo0iGtltaKcX04uPb5Exp4cS5R+VyJOXk7k0uNLdR+1lpfT0Y26Oh3tSAC3Um+R\nvof6kr6H+pLA1ECu5TAkgdJSQubNI8TAgJCUFK7VcIqnpycxMzMjAh6PkFOnCNHTI+Srrwjx9xfL\nzJmkU1Pfq3Yve3t78vDhw4rn8fHxxMHBgTx58oQYGRlV+brnz58TKysroq+vTwwMDMiuXbs+u9+3\n335LNDU1iZGREYmOjv5UIDPwT3n1ik6pt21L+G5upF/37iQ4OJhrVdWSU5RDtoZtJT139SR9D/Ul\n7jHuJL80v34Hff6cEBsbQgYPpksOEgRfwCcnY0+SHjt6kHGnxpHEN4lcS2JwjUBAyN69hHTqRMjZ\ns43SrAQCATExNiZ3f/yREH19QszNCbl2rVH+LapCaAaur69f5feMjY2rfF1GRgaJiYkhhBCSn59P\ntLW1SUJCQqV9fH19iY2NDSGEkDt37hAzM7NPBTIDr5qXLwn59ltSrKBAznXtKrF39Q8yH5A5PnNI\nm01tyNRzU8md9Dv1X7cvKyNk82Ya6LdmDR3dSCjFvGKyJWwLab+5PZl/eT7JzM/kWhKDa0JCqHmN\nGkXIkydcqxEfJSXknqsrSW7Rggj69yfk6lVm3J+hpr5X7eKcgYEBFixYgKCgIAQGBmLhwoXQ19dH\naWkp5OTkqnydiopKRV5fq1atoKenV9GS9AM+Pj6YOXMmAMDMzAy5ubl4/fp19fP+DErnzsDu3Wj6\n8CGyCgrAMzGh62zh4TSNhUN4fB68Erww2GMwbP6xQbfW3fBo0SOccDgBs65m9SuKEhJC607fuEFr\nm69dW+cGMeKghWwLfG/xPR67Poa8rDwM/jTAhqANKCwr5FoagysGDABiYgBra5pitmED7VXdUHn7\nFvj1VxA1NRR7eODtihWQuXOHNoJppOvcwqDaILbi4mLs27cPYWFhAABLS0ssXLgQLVq0QGFhIRQV\nFas9SVpaGgYPHoz4+Hi0atWq4vu2trZYsWIFLCwsAADDhg3DH3/8gT59+nwUKCODNWvWVDy3srIS\nSx9yaePYsWP45+BB+E2ZApldu4D27YGlS2njejFWa8srzcPBewexO3I31Nuow7W/K+x17SHXtOqb\nvRrz5g1tzXr9OrBjB71ZkcIP/9N3T7Hy5kpEvIzACfsTsOxuybUkBpc8ewa4uQHx8bQZSkNqb/vo\nEbBzJ3DmDDBhAvx0dbHm7FncuXOHVTb8F4GBgQgMDKx4vm7duvoHsfF4PGJlZVWvqYD8/Pwq85XH\njh1LQkNDK54PHTqUREVFVdqnGomM/8Pj8YiOjg7x9/enQV0XLhAycCAhPXoQsn07zS0XIRn5GeSn\nGz+Rdn+0I05eTiT61afxDHWGzyfk4EFCOnSgwXt5ecI7Nod4P/ImnbZ0ImtvrSU8Po9rOQyuuXSJ\nEDU1QiZP/mztB6lBICAkIICQsWMJ6diRLnFlZpLy8nKip6cnluBnaaemvvfFKXRZWVk0adIEubm5\ndbqr4PF4mDBhAqZNm4bx48d/8vMuXbogPT294vmLFy/QpUuXOp2rsSMrK4s1a9bgl19+AWnShPa7\nDg6mqRmRkYC6OrBoERAWRmuwC4nk7GTMuzwP+vv0kV+aj7tz7uLkhJMwUTURzgliYgALC5pCd/06\nsH07TcVpAIzTGYfoedEITQ+FlYcVnuU+41oSg0vGjqWjcA0N2l981y5aZllayMigmk1NaYORceNo\nt7C1a4FOnXDq1Cm0bdtWalNeJZLqHN7W1pZ07dqVzJo1i7i6uhJXV1fy7bffVntnIBAIyPTp04mb\nm1uV+/w7iO327dssiK2e8Pl8YmBgQHx9fT/94bNnhPz6K03X6NGDkJ9+IiQ2ts7nuvvyLpnoOZG0\n39yerA5YTbIKsuou/L8UFBDi4UHIoEE0WvfwYToKb6DwBXyyJWwL6bC5AzkVd4prOQxJIDGRkOHD\nCVFVpSmSjx5xrejzvHtHyJEjhAwdSkibNoTMmEEjyv/zeeXxeERTU5PcvHmTI6HSRU19r9o18A/9\nWT+sVxBCICMjUxF8VhWhoaEYNGgQjIyMKl67ceNGPH/+HAAwb948AICrqyv8/PygoKAAd3d3mJqa\nVjoOK+RSO86dO4fff/8dd+/e/fwaEyFAbCxw6hTdFBUBZ2fAyYmO0r8AIQQ3U2/i99DfkZydjKVf\nLcVs09lo1azVF19XIwgBIiJoERYvLzrqdnGhoxIJDlATJtEZ0XA65wSLbhbYPWo3FJs3jJkGRj1I\nTATc3YFjxwBNTeCbb4BJk4BWQvjM1ZXiYsDXl7byvHkTGDqUXkPGjAHk5T/7End3dxw7dgy3bt0S\ns1jpRKjNTIqKivD8+XPoclBEnhl47RAIBDA1NcW6detgZ2dX3c40Yv3kSdrWVFOTTr2bm9POXQoK\ndDciwKXHl7AxdCPySvPwk+VPcDZ0Fk5g2uvXtILa0aMAj0dNe8aMejcfkVYKygrg5ueGoGdB+Mfh\nH/Tv0p9rSQxJgMcDrlyhn5PgYBqc6uJCb3RFHQwmEADJycCdO9SwL12iXROdnamOavpwl5WVQUdH\nB8eOHcPAgQNFq7WBIDQD9/HxwQ8//IDS0lKkpaUhJiYGa9asgY+Pj9DEflEgM/Ba4+Pjg9WrVyMm\nJqbmncp4PLrGfO0aHQnHxYFoaSFFqx085B8jsacinCeuh73BhLqXBi0rA548oaOKxES6Nh8SAtjb\n04uRpaVURpWLAq8ELyy6sgjLvlqGHyx+YBG7jI9kZgLHj1MzJ4SOfPX0Pm7KyvU7fnY2vQZEk2FW\nlgAAIABJREFURFDTjowElJTojf2AAcCECYDqZzoAVsGhQ4fg5eUFf3//+ulqRAjNwE1NTREQEABr\na2vExMQAAHr16oWHDx8KR2l1ApmB1xpCCPr3748ff/wRkyZNqvXry/hlOHH3CK6c3YgBGXJwLOgB\n1YR0yLx9C/TrR3uVt2pFNwWFz2+EAI8ffzTrxEQa0NK9+8cLjZERrVneQILShE36+3Q4eDrAoIMB\nDtkeQrOmjWMpgVFDCKEGGxxc+XMmL1/Z0PX0gA4dgMLCj1tBQeXnhYXAy5fUtLOy6OfczOzj1qlT\nnSSWlpZCS0sLnp6eMDc3F/IfoOEiNAM3MzNDREQETExMKgzcyMgIsbGxwlFanUBm4HXi6tWrFf3C\nmzZtWqPXFPGK8Ff0X9gSvgX6HfSxauAqDOox6OMOb97Qu/FHj758ISgspBcXbe3KFxEtLaB5cxH9\nxg2TwrJCTD0/FXmleTjneA5t5dtyLYkhyRACvHpV2dATE4GcHHpj/aWb7k6dgP79ab/tGl4zqmPv\n3r24evUqfH19hXK8xoLQDNzFxQVDhw7Fpk2bcP78eezevRs8Hg8HDhwQmtgvCmQGXicIIbC0tISr\nqyucnZ2/uG9uSS72Re7D7sjdsOhmgZUDVqJfl35iUsqoDr6Aj++vfw+/J3644nwF6m2/HGzIYEgC\nxcXF0NTUhI+PT6XiXIzqqanvVbuYuWfPHsTHx6N58+ZwcnJC69atsXPnTqGIZIgOGRkZrF+/HuvW\nrUN5FbmkGfkZWH5jOTR2ayApJwm3Zt7ChckXmHlLGE2bNMWOkTuwqN8iWB61RMSLCK4lMRjVcuDA\nAfTr14+ZtwipURQ6l7AReN0hhMDKygouLi6V0v6evnuKzWGb4RnvialGU/H9V9+jR5seHCpl1JRL\njy/BxccFB8cehIOeA9dyGIzPUlhYCA0NDfj7+8PIyIhrOVKH0KbQHz9+jK1btyItLa1iJCcjI4OA\ngADhKK1OIDPwehEUFAQXFxc8evQIiTmJ2BS6Cf4p/pjXdx6WmC1BR4WOXEtk1JLojGiMOzUO35l/\nh6VfLWUR6gyJ448//kBUVBQ8PT25liKVCM3AjYyMsGDBApiamlYEQ8nIyIhtWoQZeP0ghKDPxD7g\n9ePhrdxbuJm5YUG/BWjdvDXX0hj1IP19OsacHAPL7pbYY7MHsk3E17CGwfgSeXl50NTUxK1bt2Bg\nYMC1HKlEaAbep08fREVFCU1YbWEGXjfK+GU4/fA0tt/ejvcF75F3LQ9PLz6FkoIS19IYQiKvNA+O\nZx3RRKYJvBy90FKuJdeSGAz8+uuvSExMxD///MO1FKlFaAa+du1adOjQAQ4ODmj+rxQg5foWC6gh\nzMBrR05xDg7eO4i9d/dCv4M+lpovxUjNkRg7ZizGjBmDRYsWcS2RIUR4fB5cfFzwIu8FLjldEk5Z\nWwajjrx79w7a2toICwuDtrY213KkFqEZuJqa2mfX2FJTU+uurhYwA68ZKTkp2BmxE//E/gNbHVss\nNV8KYxXjip/HxMRg9OjRSEpKqlEPd4b0wBfwMffyXDx++xhXpl5hyyMMzli+fDmys7Px119/cS1F\nqhFqLXQuYQZeNQIiwI2nN7D/3n6EPg/FHNM5cO3vis6Kn68jPm3aNGhqamLt2rXiFcoQOQIiwKIr\nixCTEQO/aX5o0+LL9akZDGHz/PlzmJiYIC4uDp0baS8DYVHvPPDNmzdXfH327NlKP1u5cmU9pDHq\nS3ZRNraFb4POXh0sv7EcNpo2SFuSho1DN1Zp3gBdm9qzZw8yMzPFqJYhDprINMGfo/+EWVczDD02\nFNlF2VxLYjQyfvnlF8yfP5+ZtxipcgT+79Kp//76c89FKpCNwAHQaPLIl5HYf28/vB97w1bbFgv6\nLoB5V/NapREtW7YMRUVF2L9/vwjVMriCEILlN5bjWso1XJ9+naUJMsRCbGwshg8fjqSkJCgpsUDZ\n+lJT32O5JxJOYVkhTj08hf339iO3JBfz+8zH1hFb0b5l+zodb+XKldDV1YWbmxt0dHSErJbBNTIy\nMvhj2B9oLtsc1n9b48b0G1BVrHnnKAajLixfvhyrVq1i5i1mmIFLIAIiQMizEByLPYbziecxqMcg\n/DbkN4zQGFH3Vp7/p127dvjhhx+wcuVKnDt3TkiKGZKEjIwMNlhvQLMmzWD1txUCZgSgS+suXMti\nNFACAgKQlJQEb29vrqU0OqqcQm/atClatqR5pcXFxZCXl6/4WXFxcZX1tYUusBFNoSdnJ+N47HEc\njz0OxWaKmGk8E86GzkIfQRUXF0NHRwenT5+GhYWFUI/NkCw2h23GwaiDCJgRwMrlMoSOQCBA//79\n8cMPP2Dy5Mlcy2kw1HsKnc/nC1UQ4/PkFOfAM94Txx4cw9N3T+Fs6IwLky/AuJOxyEpkysvLY/36\n9fjxxx8REhLCSnE2YH60/BHNmtKReODMQGbiDKFy5swZyMjIYNKkSVxLaZSwNDIOyCvNg2+SL7wS\nvXDj6Q2M0hyFmcYzMUJjhNhKYvL5fJiYmGD9+vUYP368WM7J4I5dd3ZhT+QeBM8K/mKmAoNRU0pL\nS6Gnp4cjR47A2tqaazkNCpYHLmG8LXoL70feOP/oPEKehWCw2mDY69rDQc+Bs5zdq1evYunSpYiL\ni4OsLAuHaOhsDNmIE7EnEPR1EDoodOBaDkPK2bVrF/z9/eHr68u1lAYHM3AJ4GXeS1x4dAHnE88j\nKiMKIzVGwkHPAaO1RktEtSxCCIYNG4bJkydj7ty5XMthiIFVAatwJfkKAmYEoK18W67lMKSU9+/f\nQ1tbGzdv3kSvXr24ltPgYAbOAeWCckS+jIR/ij/8nvghOScZY7XHwkHXASM0RkBeTr76g4iZqKgo\n2NraIjk5GQoKClzLYYgYQgiW+i/F7fTbuD79OhSbs7K6jNqzcuVKZGZm4ujRo1xLaZAwAxcTablp\n8E/xx7WUawhIDUAPpR4YoTECIzVGYlCPQZBrKse1xGpxcnKCvr4+Vq9ezbUUhhgghGC+73w8evsI\nV6deZV3MGLXixYsXMDY2xoMHD9C1a1eu5TRImIGLiHfF7xD6PBT+T/3hn+KPd8XvKgx7WM9hUlk0\n4+nTp+jXrx8SExPRsSOr3NUYEBABZl6ciazCLPhM8UFz2ebVv4jBAPDNN9+gY8eO+P3337mW0mBh\nBi4ECCFIzU1F2PMwhKWHIfR5KJ69f4b+XfpjeM/hGKkxEsYqxvUuriIJuLm5oby8HHv37uVaCkNM\nlAvKMcVrCsoF5Tg76axUzBYxuCU+Ph5DhgzB48eP0aYNa5gjKpiB14EyfhliX8dWMmwAsOxuiQHd\nBsCyuyWMOxk3yAvd27dvoaenh/DwcGhpaXEthyEmyvhlsD9jj9bNW+OE/Qk0bdKUa0kMCcbW1hZD\nhw6Fm5sb11IaNMzAq6GYV4zY17GIzohGdGY0ojOikfgmERrKGrDsZkm37pZQb6PeaAqd/P7777h7\n9y7Onz/PtRSGGCkpL8GYk2PQQ6kH/hr3V4OYUWIIn1u3buGbb75BYmIimjdnSy6ihBn4/yGE4HXh\nayS8SUDc67gKs07JSYFue12YqppWbEadjBp1QE9JSQn09fVx+PBhDB06lGs5DDFSWFaIESdGoG/n\nvtg5cmejuWll1Izy8nKYmJhg3bp1cHBw4FpOg0ciDNzFxQW+vr7o2LEj4uLiPvl5YGAg7Ozs0LNn\nTwDAhAkT8PPPP1cWWMNfhBCCV/mvkPAmAQlvEhD/Jr7i6yYyTWDQ0QAGHQwqzNqggwEL3PkMFy5c\nwOrVq3H//n1W3KWRkVuSC+u/rWGnY4e1Vmu5lsOQIPbu3YsLFy7gxo0b7OZODEiEgYeEhKBVq1aY\nMWNGlQa+fft2+Pj4VC3wP79IdlE2knOS8STnycfH7GQkZSehuWxzGHQwgH4H/Uob64lccwghGD58\nOOzs7PDtt99yLYchZrIKszDQfSAW9F0AN3O2zskAsrOzoaenh4CAAFa0RUxIRD/wgQMHIi0t7Yv7\n1ETk1PNTkZxNzZpP+NBS1oJWOy1oKmtipMZIuPZzhVY7rTr3yGZ8REZGBrt27YK1tTWcnJzQvj37\nmzYmOip0xPXp1zHQfSCUmithlsksriUxOGb16tWYMmUKM28JhNM5UhkZGYSHh8PY2BhdunTB1q1b\noa+v/8l+0bujYWFqASt5K7x++RrqaupYO3ctAGDt2rV4iqf4au1XFc/ZY/0fnZyc8PPPP0NFRUUi\n9LBH8T76u/rD6m8rXPW+Cn3oc66HPXLzuGDBAhw/fhzp6ekSoaehPlpZWSEwMBCBgYGoDSIPYktL\nS4Otre1np9Dz8/Mr+o5fvXoVS5YsQVJSUmWBElbIpbHw7t076Orq4tq1a+jduzfXchgcEJMRg1H/\njMJx++MYoTGCazkMMUMIgZWVFZycnDB//nyu5TQqJGIKvToUFT/WYbaxscHChQuRk5MDZWVlDlUx\nAKBt27ZYv349Fi9ejKCgIBa40ggxUTXBecfzsD9jj4tTLsKimwXXkhhi5OzZs3j//j3mzJnDtZQG\nSV5pXkUM13/jumoKpyPw169fo2PHjpCRkUFkZCQcHR0/WTNnI3Du4PP56Nu3L5YvX44pU6ZwLYfB\nEdeeXMOMizPgP80fxirGXMthiIGioiLo6urixIkTGDRoENdypBZCCLIKsz7JjEp8m4iCsgJoKmtC\nS1mr8mM7LXRp3YX7KHQnJycEBQXh7du36NSpE9atWwcejwcAmDdvHvbt24f9+/dDVlYWLVu2xPbt\n22Fubl5ZIDNwTgkJCcHUqVORmJjIupU1Ys7Gn4XbNTcEzgyEVjtWqa+hs2bNGjx+/BinT5/mWorU\n8L7kPe5n3seD1w8qmTWAT7Kj9NrrobNi5ypnNiUijUwYMAPnHicnJ2hpaWH9+vVcS2FwyNGYo1gf\ntB7Bs4LRXak713IYIiItLQ19+vTB/fv30a1bN67lSCRvCt8gJjOGVvL8/5ZZkAmjTkbordK7kmF3\nVOhY6yVIZuAMoZGeno7evXvj3r17UFdX51oOg0N23tmJP+/+ieBZwVBppcK1HIYImDhxIoyNjVl7\n4f9TxCvC3Zd3EZYehoiXEYjOiEZ+aT5MVE1oYTAVWhxMu5220HoJMANnCJVff/0VMTExOHfuHNdS\nGBzza/CvOP3wNAK/DmS1FxoYt27dgouLCxISEiAvL8+1HE7IKsxC2PMwhKaHIux5GOKy4tCrYy9Y\ndrOEeVdz9FHtA/W26iLtGcAMnCFUiouLoa+vj7/++ovVSW/kEEKwKmAVrqVcw80ZN9GmBWsr2RD4\nUO987dq1mDBhAtdyxMar/Fe4nnIdgc8CEfY8DFmFWbDoZlHR0Kp/l/5i75HBDJwhdFiddMYHCCFw\nu+aGuy/vwn+6P1o1a8W1JEY9aSz1zot5xQh5HgL/FH/4p/jjRd4LDOs5DNZq1hjQfQAMOhpw3pGP\nGThD6Hyokz5u3DgsXryYazkMjiGEYO7luUjJSYGvsy/k5RrnlGtDoCHXOyeEIP5NPPxT/HEt5RrC\n08Nh1MkIIzVGYqTGSPTt3Fdoa9fCghk4QyQkJCRg8ODBePDgATp37sy1HAbH8AV8zLg4A++K3+HC\n5Ausw5+U4uLiAkVFRezatYtrKUKBL+AjLD0M5xPP43zieTRt0hQjNUZihMYIDFEfIvHLPszAGSJj\n1apVSE5OhqenJ9dSGBJAuaAcjmcdAQCekzwh24Qtr0gTgYGBmD59OuLj49G6dWuu5dSZMn4ZbqXe\nwrnEc/B+7I3Oip3hoOsABz0H6HfQl6plAWbgDJFRXFwMIyMj7Ny5E2PGjOFaDkMCKC0vhf0Ze7SV\nb4tj449J3JQk4/OUlpbC2NgYmzZtwvjx47mWU2uKeEW49uQazj86D98kX+i214WDngPsde2hoazB\ntbw6wwycIVJu3ryJb775Bg8fPkSrViyAiUGDg8acHAMNZQ0cGntIqkY8jZW1a9fiwYMHuHDhAtdS\naoyACBCUFoRjscdwIfEC+nTuAwddB4zXHY8urbtwLU8oMANniJwZM2agQ4cO2LZtG9dSGBJCQVkB\nRhwfAWMVY+wbvY/zaF5G1Tx69AgDBgzA/fv30bVrV67lVMvjt49xPPY4jsceh1JzJcw0nglnQ2eo\nKqpyLU3oMANniJw3b96gV69euHr1KkxNTbmWw5AQ8krzMPqf0dBtr4uDYw+y6XQJRCAQwNraGhMm\nTJDojJKc4hyceXgGfz/4G2m5aZhqNBUzjGY0+KY6zMAZYsHd3R379u1DREQEmjZlF2oGpaCsALan\nbNGtdTcctTvKAtskjKNHj+LAgQO4ffu2xH1uBUSAgNQAHIw6CP8Uf9ho2mCG8QyM0BjRaP6PmIEz\nxAIhBEOGDMH48eOxZMkSruUwJIgiXhHGnx4PZXllHLc/DrmmclxLYgDIysqCoaEhrl27ht69e3Mt\np4J3xe/gcd8D++/th7ycPBb0XYApvaZIfMqXKGAGzhAbjx8/hqWlJWJiYlj3IgmGECA/H8jMBF6/\nptuHrzMzgawsoLy8+uO0aQOoqACdOn362KED8O8BXUl5CSZ4TkAL2RY4NeEUmjVtJrpfkFEjpk2b\nBlVVVWzZsoVrKQCAuy/vYv+9/bjw6ALGaI3Bgr4LYNHNolEHQTIDZ4iV9evXIyoqChcvXmzUHzxJ\noLwcePIEiI39uMXHA69eAbKyH832vwbcoQPQrBp/JQTIza1s/P++GcjJAZSVAU1NwMiIbjoGpdj+\nfDKaNBXg7KSzrNgLh1y/fh1z587Fw4cPoaCgwJmOIl4RTj88jf339iO7KBvz+syDi4kLOih04EyT\nJMEMnCFWSktL0bt3b/z2229wcHDgWk6jobAQiIgAHjz4aNaJiUCXLh8N1NAQ6NUL6NoVaCningzl\n5cCbN0BycuUbiLgEHuDgDAXlfHwtfwF9jOTRvz/AutOKj6KiIhgaGmLv3r2wsbHhRMPLvJfYe3cv\nDkcdxlfdvsKCvgswUmMkC3T8D8zAGWInODgYzs7OiI+Ph5KSEtdyGiSlpdSwAwKAmzeBmBigd2/A\nxOSjYRsYAJKWmi8QAElPyjH36ky8yM1Erzgf3A1TgLw8MGQI3aytAdWGlxEkMaxYsQKpqak4ffq0\n2M99P/M+tt/ejstJlzHdeDqWmC1Bz7Y9xa5DWmAGzuCE2bNnQ15eHnv27OFaSoOgvByIjqaGHRAA\n3L4N6Ol9ND1LS4DDmdBawxfw8Y3PN3j67ikuO/nixVPFit8tMJBO5Q8ZAgwdCgweTKfjGfUnLi4O\nQ4YMQVxcHFRUVMRyTgERwO+JH7bd3obHbx9jsdlizDGdg7bybcVyfmmGGTiDE3JycmBgYICLFy/C\nzMyMazlSSVER4OcHnDsHXLkCdOv20bAHDaJBZNKMgAiwwHcB7r26h8tOlysKcfD5dCngg6GHhgL6\n+sCECXTryQZsdUIgEGDAgAGYOXMm5s2bJ/LzlZSX4PiD49hxZweayzbHsq+WwdHAkQUw1gJm4AzO\nOHnyJDZt2oR79+6hWXVRUQwAQEEB4OtLTfvaNaB/f2pa48fTUWlDgxCCjSEbcSj6EC47XYZhJ8NP\n9ikrA4KDAS8v4MIFuq4/cSL9u+jocCBaStm3bx9OnjyJkJAQNGkiusp4uSW52Be5D3si96Bv575Y\n9tUyWKlZsaDWOsAMnMEZhBCMHz8evXr1wm+//ca1HInl/Xvg0iVqULduARYW1KDs7ID27blWJx5O\nxZ3CEr8lOOFwAiM0RlS5H59PR+ReXvQmp127j2ZuYAAwj/g8T548wVdffYXQ0FDoiOiuJyM/Azsj\nduKv6L9gq22LHy1/hH4HfZGcq7HADJzBKZmZmejduze8vb3ZVPq/KC+nI+yjR4Hr1wErK2pEtrZA\n20a6NBj6PBQTPSdig/UGzOkzp9r9BQIaC/DBzBUVgVmzgOnTaUocg8Ln8zFo0CA4OjqKpMjS03dP\nsTlsMzzjPTHNaBqWfbUMPdr0EPp5GiPMwBmc4+XlhVWrViEmJgYtRZ2/JOEkJQHu7sDffwPduwMu\nLsDkyQAL1qckZydj9MnRmKA3ARuHbqxxExRC6Mjc3R04f54Gvrm4AKNHA3KNvPDbli1bcOXKFdy8\neVOoU+exr2OxKXQT/FP8Mb/vfCwxW8Lyt4UMM3CGRODs7IxOnTphx44dXEsRO/n5wNmzdLT95Akd\nIc6aRQOzGJ/ytugtxp+mLSE97DwgLydfq9d/+Hu7u9M89Mb8946Pj4eVlRXu3r0LNTU1oRwzPD0c\nG0M2IjojGm7mbpjfdz5aN28tlGMzKsMMnCER5OTkwNDQEP/88w+srKy4liNyCKF52ocO0cCrDyNC\nGxs2IqwJJeUlmOU9C89yn8F7inedR3YfZjyOHaNR/N98Azg7S1fKXV3h8XgwNzfHggULMHv27Hod\nixCCG09v4LeQ3/Ds/TMst1yOr3t/jRayLYSklvE5mIEzJAZfX1+4uroiNjYWioqKXMsRCcXFwJkz\nwN69tNTo/PlsTbauCIgAq2+txpmHZ3DZ+TJ02+vW+Vjl5YC/P72hCg0FZswAFi6kpV4bKuvWrUNE\nRAR8fX3rHAEuIAJcenwJG0M3Ir80HysGrICToVOj6QbGNczAGRLF7Nmz0aRJExw6dIhrKUIlLQ04\ncIBOk/frB7i6AiNHAiLM1mk0uMe448cbP2LL8C2YaTyz3ulIz54B+/fT96pvX/pejRrVsN6rqKgo\njB49GjExMejcuXOtX18uKIdnvCd+D/0dzZo2w6qBqzBed3yNYxIYwoEZOEOiyMvLg5GREfbv389Z\nHWZhQQgtY7p3Lx3VzZwJLFjQsEd1XBH3Og5O55zQq2MvHBh7QCitJT/MluzZQ1P5Fi6ka+XSngVQ\nUlKCPn364Oeff4aTk1OtXlvGL8OxB8ewKXQTVBVVsWrgKozUGMlyuDmipr4nstsqFxcXdOrUCYaG\nnxZo+MDixYuhpaUFY2NjxMTEiEoKQwJo3bo13N3dMWfOHOTk5HAtp04UFgL79tFSpkuXAmPG0FHd\ntm3MvEWFYSdD3J1zFx0UOqD3gd4IfR5a72PKywNffw3cuwecOEFL1fbsCcydCyQk1F8zV/zyyy/Q\n19fHlClTavyavNI8bA3fip67esIrwQvudu4ImRWCUZqjmHlLA0REBAcHk+joaNKrV6/P/tzX15fY\n2NgQQgi5c+cOMTMz++x+IpTI4IDFixeTqVOnci2jVrx8SciKFYS0b0+IvT0hgYGECARcq2p8XHp8\niXTa0on8cusXwuPzhHrszExC1q0jpFMnQkaNIuT6del6j0NDQ4mqqirJysqq0f4Z+RlkxY0VpN0f\n7YiTlxOJyYgRsUJGbaip74nUHVNTU6s08Hnz5pHTp09XPNfR0SGZmZmf7McMvGFRWFhItLW1iZeX\nF9dSqiUmhpDp0wlp04YQV1dCnjzhWhHjVd4rMvzYcGJxxIKkvksV+vGLiwk5coQQAwNCDA0JcXcn\npKRE6KcRKgUFBURDQ4NcvHix2n2T3iaRuZfmkrab2pJFvovI05ynYlDIqC019T3OQgpfvnyJbt26\nVTzv2rUrXrx4gU6fCdtdu3ZtxddWVlaNIh2podKyZUv8/fffsLe3x4ABAz77fnOJQABcvQps3w48\nfgx8+y2wa5f0r482FFQVVeE3zQ87bu9A/8P9sWvULjgZ1m6990u0aEHT/mbNotHr27YBK1cCixbR\nzIJ27YR2KqHx448/YsCAAbCzs6tyn3uv7uGPsD8QmBaIBX0X4LHrY1Z8RYIIDAxEYGBg7V8oyruI\nL43Ax44dS0JDQyueDx06lERFRX2yn4glMjhixYoVxM7OjggkZJ6yuJiQgwcJ0dUlpHdvQo4fJ6S0\nlGtVjC8R9SqK6OzRIVO8ppBnuc9Edp7YWEJmzaIzMfPnE5KUJLJT1Rp/f3/SrVs38u7du09+VlZe\nRs7GnyWD3AeRbtu7kR23d5D80nwOVDJqS019j7PcgC5duiA9Pb3i+YsXL9ClSxeu5DDEzJo1a/D8\n+XMcOHCAUx3Z2cCGDYCaGuDtDfz5Jw1qmjYNYI3UJBtTVVNEzY2ClrIWTA6a4KcbP+F9yXuhn8fQ\nkKaeJSbSEbiFBeDgQOuxc8nr16/x9ddfw93dHW3+1WM2qzALvwX/hp67e2J3xG4s6rcIKYtT4Gbu\nhlbNWnGomCFsODPwcePG4dixYwCAO3fuoE2bNhI3ncoQHc2bN8eZM2fwyy+/4P79+2I/f2oqnR7X\n0qJf37xJ23laW7POVtKEQjMFrLdej7gFcXhb9Bbae7WxO2I3yvhlQj+Xigrw66/0/8XamlZ2GzCA\n3vgJBEI/3RcRCASYPn06XFxcMHToUADA3Zd3MePCDOjs1UFqbiouOV1C8KxgOBo4Qq4pKwPYIBHV\nFMCUKVOIqqoqkZOTI127diVHjhwhBw4cIAcOHKjYZ9GiRURDQ4MYGRl9dvqcEDaF3tA5efIk0dbW\nJnl5eWI53927hDg6EtKuHSE//UQjzBkNh9jMWDLqxCiiuVuTnI0/K9IlGh6PkDNnCOnblxBtbboE\nU1wsstNVYuPGjWTgwIGkoLiAHH9wnPQ/3J+o7VQjm0M3k+yibPGIYIiMmvoeK+TC4Jw5c+aguLgY\nx48fF0nu6YfAtC1b6OjJzQ2YPZu2oWQ0TG48vYEfrv8AeVl5bB2xFRbdLER2LkKAoCD6/xUVRSu8\nLVgguoC34JBgjF88HjbLbeD33A+mqqb4tv+3GKM1Bk2bNBXNSRlihVViY0gNRUVF6N+/P5YtW4ZZ\ns2YJ7bglJbRQx/btQPPmwA8/AJMmsaYijQUBEeBE7An8HPAzeqv0xtw+czFSY6RIp5Pj42nk+sWL\ndIr9u+8ADQ3hHDv2dSwORxzG/pD96N6hO+ZZzIOToRO6K3UXzgkYEgMzcIZUkZCQgMFPCagHAAAg\nAElEQVSDByMoKAj69ez/+PYtrXn955+AqSmwbBlb227MFPOKcTz2OP5+8DdSclLgbOiMmcYzYaxi\nLLJzZmTQUruHDgGDBtH/QYs6TAI8y32Gk3EncfLhSeSV5kHukRwGKg2E+x/uwhfNkBiYgTOkDnd3\nd2zbtg2RkZFo2bJlrV+fnAzs2AGcPk2jhJcubZy9oBlVk5SdhGMPjuHYg2No17IdZhrPhLOhMzoq\ndBTJ+QoLaVvTHTtoZ7ply4Dx44GmVcx0F/GKEPY8DAFpAQhIDUBKTgom6k/EVMOpiDwXibOeZxEc\nHIxmLEWiQcMMnCF1EEIwY8YMtGjRAocPH67ha4DwcDptGRJCi20sWkQjhhmMqhAQAQLTAuFx3wM+\nj30wqMcgTDWcCvOu5uiu1F3osRh8Pp1W37YNeP2aTq1//TUg16IUd17cQUBaAG6l3kJ0RjRMVE1g\nrWYNazVrWHa3RLOmzRAZGYmxY8ciMjISampqQtXGkDyYgTOkkvz8fPTt2xdr1qyBs7NzlfuVldGO\nUrt20Y5S331Hu4IpKIhRLKNBkF+aj3OJ5+CV4IV7r+6BJ+DBRMUEJqomMFUxhYmqCbSUteoVIMYX\n8PEq/xVSc1PhfzcV5wJSkFIWDnSNgH4HfYzSscYQ9SGw7GYJhWaV/4lzc3NhamqKrVu3wsHBob6/\nLkMKYAbOkFru37+P4cOHIzw8HFpaWpV+lpVF+28fOAAYGABLlgCjRzesns4MbsnIz0BMZgxiMmIQ\nnRmNmIwYZBVmwaiTEYw6GaF189Zo1rQZ5JrIoVnTZp9sTZs0rTDr1HepSM1NRfr7dCjLK0O9rTrU\n26hDva061GTNcN97IE66K8HKimZHDBhQOVaDEAJHR0eoqKhgz549nP1NGOKFGThDqtm/fz8OHTqE\n27dvo0WLFoiJoaNtb28aSb54MdCrF9cqGY2F3JJc3M+8j4dZD1HEK0IZv6zSxhPwKr4uF5RDpZUK\nNer/m3UPpR6Ql5P/7LELCoC//wZ276YzSEuWAFOm0MyJ/fv34/DhwwgPD0eLFi3E/FszuIIZOEOq\nIYRg4sQpKCoahqKiOUhJofm1c+ZIZkMJBqO+CATAtWvAzp3AgwfA+PGZOHt2KO7cufjJTBSjYcMM\nnCG1vHwJHD4MHD4sQE5ODFxcCrFz5yCWv81oNISH52LUKF8IBJNgY9MM8+cDQ4awVMjGQk19j60c\nMiQCgYC2b3RwoM0jsrKAq1eb4O7d5vD0nICYmEiuJTIYYoHH42H16gmYN+8+Xr1qBmtruj6uq0vT\n0XJyuFbIkBTYCJzBKdnZNE/24EGgZUtagnLq1MplTr29veHq6orIyEioqqpyJ5bBEAOLFy9GcnIy\nLl++jKb/TxgnBAgLo8Gbly/TXPL58wEzMzYqb4iwKXSGxCIQAMHBwJEjwKVLwLhx1LjNzau+GG3Y\nsAG+vr4IDAxkwTyMBsuRI0ewZcuWig6Nn+PNm483va1b07gQJyegbVsxi2WIDGbgDInj6VPg2DEa\ncduqFTBrFs3drklQ2od0GgUFBbi7u4uk6QmDwSVhYWGwt7dHSEgIdHR0qt1fIACuX6e9yv38gFGj\naHGY4cMBWVnR62WIDmbgDImgoADw8gI8PGijBycnepExMan91F9hYSEsLS0xc+ZMfPfdd6KQy2Bw\nQnp6OszMzHDkyBHY2NjU+vU5ObSwkYcH8OIFMH06vTnW0xO+VoboYQbO4IwPU+QeHrR85KBB1LTH\njKG5rfXh2bNnMDc3x99//40RI0YIQy6DwSlFRUUYOHAgpkyZgh9++KHex0tIoLNcx48D3bvTz97k\nyWyKXZpgBs4QKwIBcOcO4OkJnD0LtG9PRwBTp9ImDsIkODgYkyZNQmhoKMuPZUg1hBA4OztDVlYW\nx44dE+rSUHk5nWJ3d6f55QMHAo6OgJ0doKQktNMwRAAzcIbIIQSIjPxo2oqK9E5/0iTRT90dPHgQ\nu3btwp07d9C6dWvRnozBEBG///47zp8/j+DgYMjLf75SmzDIz6cBo56ewK1bwODB1MzHjaOBcAzJ\nghk4QyQQAkRF0fW2s2eBFi2oaTs60trk4mThwoVIT0/HxYsXK9JtGAxp4dKlS5g/fz4iIyPRpUsX\nsZ33/XvAx4eaeXAwLRDj6AiMHVs5fZPBHczAGUKjqAgICKD5p5cv03xtR0dq3L16cZeHyuPxMHz4\ncFhYWGDjxo3ciGAw6kBCQgKsrKzg4+MDc3NzznTk5tL+Ap6etB2vhQU18jFjAHV1zmQ1epiBM+rF\n8+eAry817JAQoE8f+sEeOxbQ1pac4hFv3ryBmZkZVq9ejVmzZnEth8GolszMTFhaWmL16tX4+uuv\nuZZTQV4eXTO/fBm4coXGsXz4zH/1FUtNEyfMwBm1orQUiIigwS6XL9N65KNH0w/viBFAFTUlJILH\njx/DysoKhw8fxtixY7mWw2BUSV5eHgYPHgwHBwesXr2aazlVIhAAd+9+nHV7/pzmmY8eTafcWUFE\n0cIMnPFFeDzg3j0a0HLrFo0g19UFhg0DbG1piUZpWlaOjIzEmDFj4O3tDQsLC67lMBifUFpaChsb\nG+jp6WHv3r1SVYzoxQs6Kr96FQgKopkl1tbUzK2s6GidITyYgTMqwecD9+9Tsw4IoHWV1dU/fggH\nDpTsUXZNuHbtGmbMmIGAgAAYiDuijsH4Anw+H1OmTAEAnD59WqqDLvl82u70w7UkNBRQU/t4LRk0\nSPqvJVzDDLyRk5lJp8QjIujo+t49oGvXjx+ywYMb5l3zP//8gxUrViAsLAzdunXjWg6DAUIIXF1d\n8ejRI1y5cgXN61vNSMIoL6eZKQEB1NTDw4EePegsnrk5fTQwYGvotYEZeCOiuBiIiflo1hERNCDF\nzOzj1r9/zWqONwR27NiBQ4cOITQ0FO0ayy/NkFg2bNiA8+fPIygoqFHULODxgIcPP16LIiLoFHyf\nPpVNXVVVcoJhJQ1m4A0QQmgwSWxs5S0tDdDX//jBMDcHtLQa94dj+fLlCAoKws2bN6GgoMC1HEYj\n5dChQ9i8eTNCQ0OhoqLCtRzOePeOBsV9MPXISHp9MjKqvOnr09oSjR1m4FKMQECjwJOTgaQkejf7\nwawVFD79p9fRAZo141q1ZEEIwaxZs5CVlQVvb2/IyclxLYnRyDh//jxcXV0REhICDQ0NruVIFIQA\nGRmfDkaSk2lszodrm64uHYxoagIiLFQncTADl3AIAbKygCdPqEl/MOukJCAlhdYq1tam/7y9etF/\nZkPDhrluLSp4PB7s7e2hrKwMDw8PNGnShGtJjEZCUFAQJk2ahGvXrsHExIRrOVJDWRnw6NFHQ/9w\nTXz6FOjYkV4TP1wXPzz26FH/JkmShkQYuJ+fH9zc3MDn8zF79mwsX7680s8DAwNhZ2eHnj17AgAm\nTJiAn3/+ubJAKTXwkhK67vPsGZ32/rB9eJ6eTkfTmpqV/yG1ten3WElD4VBUVIRhw4ZhwIAB2Lx5\nM9dyGI2ABw8eYMSIETh16hSGDBnCtZwGAZ9Pr5sfDP3fA54XL2h8T48etPvav7cP31NWlq4lRc4N\nnM/nQ0dHBzdu3ECXLl3Qr18/nDp1Cnr/6nIRGBiI7du3w8fHp2qBEmTgJSVAdjbdMjO/vBUU0Kjv\nf/8T/fufqls3auAM0ZOTk1PRrlGSi2cwpJ+EhAQMHz4cO3fuxKRJk7iW0yjg8+l0/OcGSh++LikB\nVFS+vHXoQG8ElJS4N/ua+p7IAvsjIyOhqakJNTU1AMCUKVPg7e1dycABiNWcCaF1vd+/r3rLzQVy\ncj4a9b83Ho++we3bV37ju3ShEZb//l7btgCbsZUMlJWVcfPmTQwdOhQ8Hg/r1q2TqiIaDOkgLi4O\nI0eOxJYtW5h5i5GmTelgqWtXWsv9cxQVAa9ffzrQiomhjxkZwJs39DpfXEyv3+3aVd6UlemmpPTp\n1rr1x0dxpsuJ7FQvX76slIfbtWtXREREVNpHRkYG4eHhMDY2RpcuXbB161bo6+t/cqyICPpHLSr6\n8lZQ8OlWWPjx6/x8Guz17z/45zZ9/U/fvHbtgFatuL8zY9QNFRUVBAYGVpj4xo0bmYkzhMb9+/dh\nY2ODXbt2wdHRkWs5jP/QsiUNjqtJg5aysqoHce/e0eXP9+9pqu5/B4D5+TTYrlUrOsPaqtXnNwUF\nqqmqraaIzMBrcnE0NTVFeno6WrZsiatXr2L8+PFISkr6ZL/hw5dBWVkRcnJAWZka2rQxgbm5MVq2\nBKKigiEry4Ot7VC0agX4+XlBUbEMy5Y5o1UrwMNjL5o1K8Pq1UvRqhWwceNaAMDatVU/vn0LuLpW\nvx97lK7HDh06YNSoUfDw8EBZWRm2bt2KdevWca6LPUr3Y0ZGBi5evIg///wTcXFxWLt2rUToYo/1\ne1RR+fz3W7QA9u///OvWrFmHsjI5LFmyEgUFwNatB1BW1gyOji4oKABOnLiAN2+aYfDgMSgqAry9\nw8DjyaFduyKkpwciMzMbfH7Np25FtgZ+584drF27Fn5+fgBo4/omTZp8Esj2b9TV1REVFQVlZeWP\nAiVoDZzRMMjJycHIkSNhYWGBnTt3spE4o85ERERg3LhxOHToEOzs7LiWw2gg1NT3RLZK27dvXyQn\nJyMtLQ1lZWU4c+YMxo0bV2mf169fV4iMjIwEIaSSeTMYokBZWRnXr19HREQEFi1aBIFAwLUkhhQS\nFhYGW1tbuLu7M/Nm/K+9e4+qqsz/OP5GlCxgxEzTtBGHywiBXBSRFBQV8QJOooI5BXhFJ0OcqdBm\nrMyZaVpjzIisGm0aL5jkhHExuZnKLReJSmJjqBmomEWIJDdB4Pn94fL8JMmwOOxz9Ptaay/O2ec5\ne3/O5uiXvfezn60JvRXw7t27ExcXh7+/P46OjoSEhODg4MDGjRvZuHEjAImJiTg7O+Pq6kpUVBTv\nvfeevuII0YaVlRVZWVkUFxcTEREhRVzckdzcXGbMmMH27duZOnWq1nHEPUoGchH3tNraWgICArC2\ntuadd94x6rtEia6xf/9+5syZQ0JCAhMmTNA6jrgLaX4IXQhjYGFhwZ49ezh//jxhYWE0NzdrHUkY\nsKysLEJCQnj//feleAvNSQEX9zxzc3M+/PBDKisrCQoKora2VutIwgDt2LGDp556iqSkJMaOHat1\nHCGkgAsBcP/995Oamkrfvn3x8fHhwoULWkcSBkIpxdq1a3nxxRfZt28fY8aM0TqSEIAUcCF0zMzM\n+Pe//01wcDBeXl4cO3ZM60hCY42NjYSHh5OamkpBQQHOzs5aRxJCRwq4EDcxMTFh5cqVvPHGG/j5\n+ZGWlqZ1JKGRqqoqJk2aRE1NDTk5Off0/byFYZICLkQ7Zs+eTWpqKgsXLiQuLk7rOKKLffHFF3h5\neTFy5EgSExN54E7GtxSii8hlZELcRmlpKdOmTcPPz4+YmBi5zOwekJ+fz6xZs1izZg0RERFaxxH3\nIM1vJ9pZpIALrVVXVzNz5kzMzc3ZsWMHFhYWWkcSerJjxw6ioqKIj4/H399f6zjiHiXXgQvRSays\nrEhPT9f1UC8vL9c6kuhkN/c0379/vxRvYRSkgAvRATd6qIeEhODh4UF6errWkUQnqaysJDAwkLS0\nNAoKCnByctI6khAdIgVciA4yMTEhOjqanTt3EhERwXPPPUdTU5PWscTPkJ2djZubG05OTuTm5kpP\nc2FU5By4ED/BpUuXmD9/Pl999RXvvfceNjY2WkcSd6C5uZm1a9fy9ttvs3nzZjlkLgyKnAMXQo/6\n9OlDcnIyTz/9NKNGjZI76RmR8vJyxo8fz8GDBzl69KgUb2G0pIAL8ROZmJgQGRlJZmYmL730EgsX\nLqSurk7rWOI2UlNTGT58OFOmTCEzM1MOmQujJgVciJ/J3d2dI0eO0NjYiIeHB8ePH9c6kviexsZG\nli9fTmRkJElJSaxatYpu3eS/P2Hc5BssRCewtLQkPj6elStXMn78eGJjY2lpadE6lgCKi4vx8vLi\n/PnzFBUV8fjjj2sdSYhOIQVciE4UGhrKxx9/zK5du/D09KSwsFDrSPesmpoa/vCHPzBx4kSWLl3K\nrl276N27t9axhOg0UsCF6GT29vZkZ2cTGRlJYGAgv/vd76iurtY61j1DKUViYiKOjo5cunSJzz77\njEWLFmFiYqJ1NCE6lRRwIfTAxMSE0NBQTpw4gVIKBwcHtm/fLpdE6tmZM2eYOnUqL7/8Mu+++y5b\ntmyhX79+WscSQi+kgAuhRw8++CBvvfUWycnJxMTEMH78eD7//HOtY911GhsbWbt2LZ6envj6+vLp\np5/i4+OjdSwh9EoKuBBdwNPTk0OHDhEUFISPjw8vvvgi9fX1Wse6K3z00Uc4Oztz9OhRjhw5wgsv\nvECPHj20jiWE3kkBF6KLdO/enWeffZbi4mJKS0v59a9/zYYNG2hoaNA6mlEqKChg2rRpLFq0iJiY\nGJKSkhg8eLDWsYToMlLAhehiAwYMICEhgaSkJD766CNsbGyIiYmRQWA6KC8vj0mTJjFnzhwCAwMp\nKSkhICBA61hCdDkp4EJoZMSIEaSkpJCWlsbBgwexsbHh9ddfp6amRutoBkcpxf79+xk3bhzh4eGE\nhIRw6tQplixZwn333ad1PCE0IQVcCI25urqSmJjIvn37OHbsGL/61a/485//zHfffad1NM0ppcjM\nzGTMmDEsXbqU+fPnc/LkSRYsWICZmZnW8YTQlNyNTAgDU1JSwl//+lfS0tKIiIhg3rx52Nraah2r\nS9XX15OSksI//vEP6urqWL16NbNnz8bU1FTraELoXUfrnhRwIQzUmTNn2LBhAwkJCdjZ2REaGsrs\n2bPv2tHEWltbycvLY9u2bXzwwQd4enqyaNEiZsyYIeOWi3uKFHAh7hLXrl0jMzOTbdu2kZWVxaRJ\nkwgNDcXf3/+uuFzq1KlTxMfHEx8fj6WlJWFhYcydO5dHHnlE62hCaMIg7geekZHB0KFDsbOz4/XX\nX2+3TWRkJHZ2dri4uFBUVKTPOHe17OxsrSMYDWPbVj169CAgIID//ve/lJaWMnHiRP72t78xaNAg\noqKiKCwspLW1tdPXq8/tVFFRwb/+9S8ef/xxfHx8qKurIzk5meLiYp577jmjK97G9p3SimynzqW3\nAt7S0sKyZcvIyMjgxIkTJCQk3DICVVpaGl988QWnT59m06ZNLF26VF9x7nryD6PjjHlb9e7dm8WL\nF5Ofn8/HH39Mr169CA0NpU+fPgQGBrJu3ToKCwtpbm7+2evqzO104cIFduzYwZIlS3BwcMDe3p4D\nBw7wpz/9ifLycmJiYnB1dTXa8cqN+TvVlWQ7da7u+lrwoUOHsLW1xdraGoA5c+aQkpKCg4ODrk1q\naiphYWHA9ZGqqqur+eabb3j44Yf1FUuIu4atrS1r1qxhzZo1fP311+Tm5pKbm8vWrVs5d+4cXl5e\njB07Fh8fHzw8PLqs17ZSirNnz5KTk0NOTg65ublUV1fj7e3N2LFjiYiIYNiwYdIhTYifSW8F/MKF\nCzz66KO654MGDeKTTz750Tbl5eVSwIW4Q/379yc4OJjg4GAAKisryc/PJycnh8jISEpKShg0aBDW\n1tYMHjxY9/PG4wEDBtxRQf3uu+84e/YsZWVlbX7eeGxqaqr74+H3v/89jo6O0hFNiM6m9CQxMVEt\nXLhQ9zw+Pl4tW7asTZuAgACVn5+vez5hwgR15MiRNm0AmWSSSSaZZLqnpo7Q2x74wIEDOX/+vO75\n+fPnGTRo0G3blJeXM3DgwDZtlPRAF0IIIW6ht2NaI0aM4PTp05SVldHU1MTOnTuZPn16mzbTp09n\n27ZtwPUbE1hZWcnhcyGEEKID9LYH3r17d+Li4vD396elpYUFCxbg4ODAxo0bAYiIiGDq1KmkpaVh\na2uLubk5mzdv1lccIYQQ4q5i8AO5AKxevZrU1FRMTEzo06cPW7ZsadP5Tfy/559/ng8//BAzMzNs\nbGzYvHkzvXr10jqWwXn//fd55ZVXKCkpobCwEHd3d60jGZSMjAyioqJoaWlh4cKFREdHax3JIM2f\nP589e/bQr18/jh8/rnUcg3X+/HlCQ0OpqKjAxMSExYsXExkZqXUsg3T16lXGjh1LY2MjTU1N/OY3\nv+G1115rv/FP7aTWla5cuaJ7HBsbqxYsWKBhGsOWlZWlWlpalFJKRUdHq+joaI0TGabPP/9cnTx5\nUo0bN+6WjpP3uubmZmVjY6NKS0tVU1OTcnFxUSdOnNA6lkHKzc1VR48eVU5OTlpHMWgXL15URUVF\nSimlampqlL29vXynbqOurk4ppdS1a9eUp6enysvLa7edUVzXYWlpqXtcW1vLQw89pGEaw+bn56e7\nXMfT05Py8nKNExmmoUOHYm9vr3UMg3TzGA49evTQjeEgbuXt7X3Xjk3fmfr374+rqysAFhYWODg4\n8NVXX2mcynA98MADADQ1NdHS0sKDDz7YbjujKOAAf/zjH/nlL3/J1q1bWblypdZxjMJ//vMfpk6d\nqnUMYWTaG5/hwoULGiYSd5OysjKKiorw9PTUOorBam1txdXVlYcffhhfX18cHR3bbWcwBdzPzw9n\nZ+dbpt27dwPwl7/8hXPnzhEeHs6KFSs0TqutH9tWcH17mZmZMXfuXA2Taqsj20ncyliHMxWGr7a2\nllmzZrF+/XosLCy0jmOwunXrxqeffkp5eTm5ubk/OASt3nqh36m9e/d2qN3cuXPv+b3KH9tWW7Zs\nIS0tjX379nVRIsPU0e+UaKsjYzgIcaeuXbvGzJkzeeqpp3jiiSe0jmMUevXqxbRp0zh8+DDjxo27\n5XWD2QO/ndOnT+sep6Sk4ObmpmEaw5aRkcHf//53UlJS6Nmzp9ZxjIIy/AsxulRHxnAQ4k4opViw\nYAGOjo5ERUVpHcegVVZWUl1dDUBDQwN79+79wZpnFJeRzZo1i5MnT2JqaoqNjQ1vvfUW/fr10zqW\nQbKzs6OpqUnX6cHLy4s333xT41SGJykpicjISCorK+nVqxdubm6kp6drHctgpKen6y4jW7BgAatW\nrdI6kkF68sknycnJ4dKlS/Tr149XX32VefPmaR3L4OTn5+Pj48OwYcN0p2hee+01Jk+erHEyw3P8\n+HHCwsJobW2ltbWVp59+mueff77dtkZRwIUQQgjRllEcQhdCCCFEW1LAhRBCCCMkBVwIIYQwQlLA\nhRBCCCMkBVwIPTA1NcXNzQ0nJydcXV2JiYnRXa525MgRli9f/pOWa21tTVVVVWdG1YuzZ8+SkJDw\ng69XVFQwbdo04Pq4Bc8++2yHl11WVoazs3OH2sbGxhIfH9/hZQthTKSAC6EHDzzwAEVFRXz22Wfs\n3buX9PR01qxZA8Dw4cNZv379T1qusYySVlpayo4dO37w9bi4OMLDwwH9faaWlhbmzZvHhg0b9LJ8\nIbQmBVwIPevbty+bNm0iLi4OgOzsbAIDAwHIycnBzc0NNzc33N3dqa2tJTs7Gx8fHwICAhg6dChL\nly5td7CZGTNmMGLECJycnHj77bd18zMyMhg+fDiurq5MnDgRgLq6OubPn4+npyfu7u6kpqYC1/d+\nn3jiCSZNmsSQIUOIi4tj3bp1uLu74+XlxeXLlwE4c+YMU6ZMYcSIEfj4+HDy5EkAwsPDWb58OaNH\nj8bGxoZdu3YBsHLlSvLy8nBzc2v3j5XExETdHjhcH+3N19cXe3t7Xn31Vd38mJgY3RC4Ny+npaWF\nxYsX4+TkhL+/P1evXgVg3LhxrFixAg8PD2JjY7G0tKRPnz7873//u9NfmxCGrytujSbEvcbCwuKW\neVZWVqqiokIdOHBABQQEKKWUCgwMVAcPHlRKXb+FYHNzszpw4IDq2bOnKi0tVS0tLcrPz08lJiYq\npZSytrZWly5dUkopVVVVpZRSqr6+Xjk5OamqqipVUVGhHn30UVVWVqaUUury5ctKKaVWrVqltm/f\nrptnb2+v6urq1ObNm5Wtra2qra1V3377rfrFL36hNm7cqJRSasWKFeqf//ynUkqp8ePHq9OnTyul\nlCooKFDjx49XSikVFhamgoODlVJKnThxQtna2iqllMrOztZ9xu+7ePFim9tvbt68WQ0YMEBVVVWp\nhoYG5eTkpA4fPqwOHz6snJ2dVX19vaqtrVWPPfaYKioqUqWlpap79+7q2LFjSimlgoODdZ9t3Lhx\n6plnnmmzvpdeekm9+eabt/+FCWGEDGYsdCHuRaNHj2bFihX89re/JSgoiIEDBwIwcuRIrK2tgeuj\nfeXn5zNz5sw2712/fj3JyckAlJeXc+rUKSoqKvDx8WHw4MEAWFlZAZCVlcXu3btZt24dAI2NjZw7\ndw4TExN8fX0xNzfH3NwcKysr3dEBZ2dniouLqaur4+DBg8yePVu37qamJuD64e8b41o7ODjwzTff\nALcfnvbs2bMMGDCgzbxJkybpbssZFBREfn4+JiYmBAUFcf/99+vm5+XlMX36dIYMGcKwYcOA66ck\nysrKdMsKCQlps+xHHnmEL7/88gfzCGGspIAL0QW+/PJLTE1N6du3b5v50dHRBAQEsGfPHkaPHk1m\nZibQ9rywUkp3j/cbsrOz2bdvHwUFBfTs2RNfX1+uXr162/PJH3zwAXZ2dm3mffLJJ9x333265926\nddM979atG83NzbS2ttK7d2+KioraXa6ZmVmbrB1xc7vvZ1ZK6ebd3O7m+TdnNjU11R1CBzA3N//B\n5QlxN5Fz4ELo2bfffsuSJUva7Wl95swZHnvsMV544QU8PDx055YPHTpEWVkZra2t7Ny5kzFjxrR5\n35UrV+jduzc9e/akpKSEgoICTExMGDVqFLm5ubo90hs91v39/YmNjdW9/0Yxvl3BvfGapaUlQ4YM\nITExUTe/uLj4tp/Z0tKSmpqadl8bPHgwX3/9dZv17N27l8uXL9PQ0EBKSgpjxgawnS0AAAGZSURB\nVIzB29ub5ORkGhoaqKurIzk5GW9v73Yz3+5zXLx4UXc0Q4i7iRRwIfSgoaFBdxmZn58fkydP5uWX\nXwau73He2CNcv349zs7OuLi4YGZmxpQpUwDw8PBg2bJlODo6YmNjw4wZM3TvBZg8eTLNzc04Ojqy\natUqvLy8AHjooYfYtGkTQUFBuLq68uSTTwKwevVqrl27xrBhw3Bycmo3y83L//5r7777Lu+88w6u\nrq44OTnpOsG19x4AFxcXTE1NcXV1vaUTW//+/Wlubqa+vl73npEjRzJz5kxcXFyYNWsW7u7uuLm5\nER4ezsiRIxk1ahSLFi3CxcXllnW29/xmhw4dwtvb+wdfF8JYyc1MhDAw2dnZvPHGG+zevVvrKHrz\nyiuv4ODgcMv56s525coVJkyYQGFhoV7XI4QWZA9cCAPz/b3iu9EzzzzD1q1b9b6eLVu2/ORBc4Qw\ndLIHLoQQQhgh2QMXQgghjJAUcCGEEMIISQEXQgghjJAUcCGEEMIISQEXQgghjJAUcCGEEMIISQEX\nQgghjND/AWlZ02lhpEaDAAAAAElFTkSuQmCC\n"
}
],
"prompt_number": 114
},
{
"cell_type": "markdown",
"metadata": {},
"source": "We've made a couple of hacks here to get the orbitals the way we want them. First, I inserted a -1 factor before the wave functions, to fix the phase of the lowest state. The phase (sign) of a quantum wave function doesn't hold any information, only the square of the wave function does, so this doesn't really change anything. \n\nBut the eigenfunctions as we generate them aren't properly normalized. The reason is that finite difference isn't a real basis in the quantum mechanical sense. It's a basis of Dirac \u03b4 functions at each point; we interpret the space betwen the points as being \"filled\" by the wave function, but the finite difference basis only has the solution being at the points themselves. We can fix this by dividing the eigenfunctions of our finite difference Hamiltonian by the square root of the spacing, and this gives properly normalized functions."
},
{
"cell_type": "markdown",
"metadata": {},
"source": "## Special Functions\nThe solutions to the Harmonic Oscillator are supposed to be Hermite polynomials. The Wikipedia page has the HO states given by\n\n$$\\psi_n(x) = \\frac{1}{\\sqrt{2^n n!}}\n\\left(\\frac{m\\omega}{\\pi\\hbar}\\right)^{1/4}\n\\exp\\left(-\\frac{m\\omega x^2}{2\\hbar}\\right)\nH_n\\left(\\sqrt{\\frac{m\\omega}{\\hbar}}x\\right)$$\n\nLet's see whether they look like those. There are some special functions in the Numpy library, and some more in Scipy. Hermite Polynomials are in Numpy:"
},
{
"cell_type": "code",
"collapsed": false,
"input": "from numpy.polynomial.hermite import Hermite\ndef ho_evec(x,n,m,ohm):\n vec = [0]*9\n vec[n] = 1\n Hn = Hermite(vec)\n return (1/sqrt(2**n*factorial(n)))*pow(m*ohm/pi,0.25)*exp(-0.5*m*ohm*x**2)*Hn(x*sqrt(m*ohm))",
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 115
},
{
"cell_type": "markdown",
"metadata": {},
"source": "Let's compare the first function to our solution."
},
{
"cell_type": "code",
"collapsed": false,
"input": "plot(x,ho_evec(x,0,1,1),label=\"Analytic\")\nplot(x,-U[:,0]/sqrt(h),label=\"Numeric\")\nxlabel('x (bohr)')\nylabel(r'$\\psi(x)$')\ntitle(\"Comparison of numeric and analytic solutions to the Harmonic Oscillator\")\nlegend()",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 116,
"text": "<matplotlib.legend.Legend at 0x10f2e8510>"
},
{
"output_type": "display_data",
"png": "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\n"
}
],
"prompt_number": 116
},
{
"cell_type": "markdown",
"metadata": {},
"source": "The agreement is almost exact."
},
{
"cell_type": "markdown",
"metadata": {},
"source": "We can use the **subplot** command to put multiple comparisons in different panes on a single plot:"
},
{
"cell_type": "code",
"collapsed": false,
"input": "phase_correction = [-1,1,1,-1,-1,1]\nfor i in range(6):\n subplot(2,3,i+1)\n plot(x,ho_evec(x,i,1,1),label=\"Analytic\")\n plot(x,phase_correction[i]*U[:,i]/sqrt(h),label=\"Numeric\")",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "display_data",
"png": "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\nPZ6J6OANSKL0aScN8Npr0LL7f3gn6T0KrxR22q6oSF1F5oN/NrD+xPo+O9V9J7Ny5UpiY2PJzs5m\nypQprFy5stO2a9asQalU9qnZhWkT7VE1DqDoSnGX7S5dgrNnoZ+zcae6W1E6KKkxV3uc7pKa1DXV\nUasoYuZ4XwNoJk0iI+Hdd2H2bDh27Mb5ixeh5cyvsBj1f0ztZNPJj3k/MslzkmEU1QKzfmY4DTJc\nNTZN8bPz47sHv+Or2V/x2IjHGOM+xtgqaYzWTlrTUU11dTVz584lMDAQpVJJSkpKh+20xdIS/vOJ\nD80pz/D4xhWdtlu2TJ1PNlNsJsw5DF/bO7eT6KvEx8ezcOFCABYuXMj3nVQbKSwsZPv27TzxxBNa\n7aM3Fq6uMOByED+mdT3lvXcvjB8P2VXScdJZlzKJiel+XTo5OwtFlR9hIdIaaXWFPvq6RYvU686/\n/jVMnQp//CMolTCm3xIqvT6noq6i3T21jbX8K/VfPDVKwommJc4Ezwm8FfNWn3p519pJazqqWbp0\nKdOnTycrK4v09HQCAwO1VrYzxoyBb373Cntyk1i3u33Wnk2b1GlAX36lhX8c/ods5H2UsrIynJzU\nb+lOTk6UlZV12G758uWsWrUKE5OuzfuNN964fkilprWXeRjbjqZ12SYxEWJiILPcuJHdrSgdlGSW\na+akNycfx4lQo1e+2rt3b5v/f1foq697+ml1muP586GqCg4dgnXveTJXeT/vp7zfrv1HRz4ixjuG\nAHvjxSDIGAFta2EGBASI0lJ1DdSSkpIOa6xWV1cLb2/vbmX1Qo02LP/8f4XpkhHitT83iJMnhcjL\nE2L2bCG8vYVISRHijZ/eEOM+Hycamxt18jwZ3QOI4ODgdseWLVuEtbV1m7Y2Njbt7t+6dat49tln\nhRBC/PTTT+K+++7r9DlSZMUX/xU2S6Z32SYgQIhjx4QI/ShUpBalGkizzjlXdU64/c1NXLgghL29\nECpV522HPv+oWLDmY8MppyFd2YOh+7r8qnxh+46tqKiruH6urrFOOK92Fuml6d3eL9M30LQP0nok\nrcmoJj8/HwcHBxYtWsTIkSN58sknqaur0/aR3fK3RQ8yKdSXDc0zmPbrGkaMUBcvyMyEi9Zb+fTY\np/zfA/93RwRZ9WVOnjzZ7pg5cyZOTk6UlqozcpWUlODo6Nju3uTkZOLj4/H29mbevHkkJiayYMEC\n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\neOyxx1i+fLnO5LbK7t+/P/Pnz9ep3N6iUCh0JsuQ1NbWMnfuXNasWcOgQYN0ItPExITjx49TWFhI\nUlKSztLx6cPu+rLNgWx3N6MPu5P7uo6R7U5NT2yuy33Suqarfdc3M3/+/B69BXYn94svvmD79u3s\n2bNHY5mayNUFbm5uFBQUXP9cUFCAu7u73p/bG5qamrj//vt55JFHOtyO0luGDBnCvffeS2pqKtHR\n0b2Wpw+768s2B7LddYQu7U7u6zpGtru2aGJzkpnuzsnJuf7zli1bCA8P14ncnTt3smrVKrZs2YK5\nublOZN6K6EWCgoiICHJycjh37hyNjY188803zJw5U4fa6RYhBIsXL0apVLJs2TKdyb106dL16kL1\n9fUkJCTozAa6Qh92J3WbA9nuWjGG3d2pfR3Idgda2Fyvw9R0xP333y+Cg4NFWFiYmDNnjigrK9OJ\nXF9fX+Hh4SFGjBghRowYIZ555hmdyN28ebNwd3cX5ubmwsnJSUybNk1rWdu3bxf+/v5i2LBhIi4u\nTif6CSHEQw89JFxcXET//v2Fu7u7WLduXa9l7t+/XygUChEWFnb9b7pjx45ey01PTxfh4eEiLCxM\nhISEiHfffbfXMjVBH3bXF2xOCP3YnT5sTojby+7u5L5OCNnuempzCiHkPHUyMjIyMjJSRDLT3TIy\nMjIyMjJtkZ20jIyMjIyMRJGdtIyMjIyMjESRnbSMjIyMjIxEkZ20jIyMjIyMRJGdtIyMjIyMjESR\nnbSMjIyMjIxE+X/MGrZW1RsyTwAAAABJRU5ErkJggg==\n"
}
],
"prompt_number": 117
},
{
"cell_type": "markdown",
"metadata": {},
"source": "Other than phase errors (which I've corrected with a little hack: can you find it?), the agreement is pretty good, although it gets worse the higher in energy we get, in part because we used only 50 points.\n\nThe Scipy module has many more special functions:"
},
{
"cell_type": "code",
"collapsed": false,
"input": "from scipy.special import airy,jn,eval_chebyt,eval_legendre\nsubplot(2,2,1)\nx = linspace(-1,1)\nAi,Aip,Bi,Bip = airy(x)\nplot(x,Ai)\nplot(x,Aip)\nplot(x,Bi)\nplot(x,Bip)\ntitle(\"Airy functions\")\n\nsubplot(2,2,2)\nx = linspace(0,10)\nfor i in range(4):\n plot(x,jn(i,x))\ntitle(\"Bessel functions\")\n\nsubplot(2,2,3)\nx = linspace(-1,1)\nfor i in range(6):\n plot(x,eval_chebyt(i,x))\ntitle(\"Chebyshev polynomials of the first kind\")\n\nsubplot(2,2,4)\nx = linspace(-1,1)\nfor i in range(6):\n plot(x,eval_legendre(i,x))\ntitle(\"Legendre polynomials\")",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 118,
"text": "<matplotlib.text.Text at 0x10fcf6890>"
},
{
"output_type": "display_data",
"png": "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\n+vZborp1iT77jOj+/TLr0ZjiPnz4ME2YMKHg/Z49e2j69OlFysTHx1Pnzp1JLpfTmDFj6OjRo8WF\n0PKHkVJkZRFt3sw6mJsbu7tSUytVlURCFBpK9PvvRJMnE7VsyZS5ry/RxIlE27ax8xKJij8DR2vQ\n9r6iiHy/hvxKPff0VE2Dcjkb2bZpo/CS1L//stWssp7pfyUnU73gYNoUH1/ph78wT0gNfm5AF55e\nKL9wZZDLiT7+mOiLL9RS/fLYWPIKCaEMBR4ocjnRl1+yx9zLl2oRp0xiY4ncWj+l+t+2pT57+1JS\ndpJa25PL5bQrdBfVW1mPNt3YSPI9e4isrYkmTCCKjlaoDmX6slIbj4pY/M6aNQvLly8v2PuiUtb0\nFy9eXPD32zmIqyUPH7JkwH/+CXTuDKxZwzL+KGGdoafHjNp8fP6LwyASMaO3mzeZoenq1cyAo3lz\nFvH0vfdYPuIGDWp2MIOaSlBQEIKCgjQthsrIleTix39/hP9Qf+UrIwJmzWLuUWfPKpwwpEMHluvg\n/HnmH1wYiVyOBU+f4khyMvy9vNDWzKzS4hnpG2F1z9WYdWYWbk+6rToDvHwEAmDrVvZA6N0b6KNa\nK/avHB0RJxZj8IMHCPDyKtWAVCYDpkxhdldBQZrxt76VcwzpH0+B+b0FMIyYhdp+6jV2FQgEGOUz\nCu/ruyJ2eF/Epcphfuw4zDt0U2u7BVRa5RPRtWvXiiyVL126lJYvX16kTKNGjahhw4bUsGFDql27\nNllbW9OJEyeKlFFSDO1BIiE6doyoa1e2v/HNN0TPn1e5GOnpRP/8Q/TTT0QDBxLVr88Gg/37E/3w\nA9HZs4rv8XG0C23vK+XJt+7aOvpw/4fKNySXsw3O1q0rdTNv2cL6RmFic3Op7e3b1D88nFLz8pSX\nkdjMrNOOTvTbzd9UUl+JBAWxtWI1THWlcjn1DQujaaXspUulbOuhSxfN2eD8fO1nclzrSCHxISQS\nMXnat2cr12pl/34ia2uSLJhPc/ynk9PPTnQz4abClyvTl5V6CkgkEnJ2dqZnz56RWCwu1Tgtnxq7\nVJ6czIwRHB2J2rUj+vNPogrsDakbuZyNHw4fJpo7l9lL1K7N9stHjSLatIno9m0iFT2rOGpE2/tK\nWfIJ84Rku9qW7ry4o1wjcjnR7NlErVpVegSanc22Ip++sR07mZJCNleu0MrYWJKpeF80NDGUrFdZ\n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\nUCbPnrFZ9+uKb59WilRhKlmvsqbwl+HqbejSJbaSWEmX1Zcviezty9b9Ex89Ir9791Se0CMqNYps\nVtnQ2eizKq2XiAWkcnBg23lFuH2bzbTPqr5NIjaYHXRgEH24/0OuuBVCLmdL4F26sF9szZqq66Uc\npUhJYf1o2TKWUyFfmXfsyGbmu3axRDzvwjJ7dVHcUpmUPDZ40Lkn58q/SCxmWZWsrUt4kpaNRC6n\nv1NSqE9YGNm+iXxWEYVdmKFD2WOhqth4YyN12dlFLRmsijBvHtFHH1V4+08mI+rdmwVlKwuRTEZt\nbt+mpTExSghZlDRhGnls8KDNN4sH8lIVoaFMR1+69OYfEREsPvSxY2prk4jtefff11+zijsgIIA8\nPDzI1dW1WJxyIqK9e/eSt7c3eXl5Ufv27SksLKy4EOp8GEkkbJrm7U3UrBnR7t08tmcNIDWVWauv\nXMkeuG5uLFPae++xzGmbN7MJnJq336ocdfaV8voyEdGMGTPI1dWVvL296c6d4qFL8+U7eP8gtdnW\npmylJJMRHT3KTJX79ydKTFRY1kc5OTT/yROyvXKF2ty+TdtevKBcJZdhbt5kQUWq6vEgkUnI+zdv\nOnT/kHobEolYiLMdOyp02c8/s/1gRb6POJGIbK9coUAVxBjNk+ZR111daXbgbKXrKo+zZ9l4MfKf\nGPbj79ql9jaJiFbEPNWc4pZKpeTi4kLPnj2jvLy8EmOVX716lTLe+AIFBARQmzZtiguhjodRTg6z\nqGjQgKhTJ2bkwg3OajSZmWx7av16Zpfj60tkaMj2s4YPZ0r+zBnNpB1UFepS3Ir05VOnTlGfPszQ\n7Pr166X2ZblcTt6/edPJxydLbkwuJzpxgv1AzZsT+fuX2zfzZDIKSk+nr6KjySskhOpfuULzoqPp\ngQL5tytCp04s1UBVEfQsiJx+dqJssWo/RzHCwti+rYIuXHfusNloSfvapXEpPZ2sg4PpiZKeONNO\nTaP++/qTVFZ597+KsH9TCkXreVDGD79USXvr4uLI+do1zSnuq1evFskOtmzZMlq2bFmp5dPS0sje\n3r64EKp8GKWlMYdia2uiQYOY3xHnnUUsJrp7l2j7dras3rkzs0WsX5+5hsybx4zgwsJYWW1HXYpb\nkb48efJkOnDgQMF7Dw8PevnWKAgA+T/yJ5/ffIrPth89YsYLvr5sBez48VIVdoJIRCeSk+l/T59S\n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\nAElFTkSuQmCC\n"
}
],
"prompt_number": 118
},
{
"cell_type": "markdown",
"metadata": {},
"source": "As well as Jacobi, Laguerre, Hermite polynomials, Hypergeometric functions, and many others. There's a full listing at the [Scipy Special Functions Page](http://docs.scipy.org/doc/scipy/reference/special.html)."
},
{
"cell_type": "markdown",
"metadata": {},
"source": "## Least squares fitting\nVery often we deal with some data that we want to fit to some sort of expected behavior. Say we have the following:"
},
{
"cell_type": "code",
"collapsed": false,
"input": "raw_data = \"\"\"\\\n3.1905781584582433,0.028208609537968457\n4.346895074946466,0.007160804747670053\n5.374732334047101,0.0046962988461934805\n8.201284796573875,0.0004614473299618756\n10.899357601713055,0.00005038370219939726\n16.295503211991434,4.377451812785309e-7\n21.82012847965739,3.0799922117601088e-9\n32.48394004282656,1.524776208284536e-13\n43.53319057815846,5.5012073588707224e-18\"\"\"",
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 119
},
{
"cell_type": "markdown",
"metadata": {},
"source": "There's a section below on parsing CSV data. We'll steal the parser from that. For an explanation, skip ahead to that section. Otherwise, just assume that this is a way to parse that text into a numpy array that we can plot and do other analyses with."
},
{
"cell_type": "code",
"collapsed": false,
"input": "data = []\nfor line in raw_data.splitlines():\n words = line.split(',')\n data.append(map(float,words))\ndata = array(data)",
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 120
},
{
"cell_type": "code",
"collapsed": false,
"input": "title(\"Raw Data\")\nxlabel(\"Distance\")\nplot(data[:,0],data[:,1],'bo')",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 121,
"text": "[<matplotlib.lines.Line2D at 0x10f572390>]"
},
{
"output_type": "display_data",
"png": "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\nj45Fv4t4d96bbgLLsvSd73xHycnJ+s///M++ns4NGUjv6y8sLFRCQoKysrKM+rjf+vp6VVdXKyUl\nxejjcWVwqNHoAAAGKklEQVQdf/M3fyPJrONx+fJlJSYmyuFw6KGHHtKkSZOMPBadrUMy61g89dRT\n+tnPfqY77vj/CTPxWHS2DsuyenQs+l3ELcvq6yncFO+++66qq6v15ptv6vXXX9fBgwf7eko3hWVZ\nxh6j7OxsnThxQkeOHNGYMWO0cuXKvp5St7S1tWnBggVat26dRowY0eExk45HW1ubHnnkEa1bt07D\nhw837njccccdOnLkiBoaGnTgwAHt27evw+OmHIur11FRUWHUsfj1r3+tiIgIJSUldfmK1YRj0dU6\nenos+l3Eu/PedBOMGTNGknTnnXfqu9/9rqqqqvp4Rr135X39krp8X78JIiIi/P9yL1myxIhjcvHi\nRS1YsECLFi3yvxXTxONxZR0LFy70r8PE4yFJo0aN0ty5c3X48GEjj8UVV9bx/vvvG3Us3nvvPZWW\nlmrs2LF6/PHH9fbbb2vRokXGHYvO1vHEE0/0+Fj0u4h3573p/d3Zs2d15swZSdKXX36p3bt3Kz4+\nvo9n1XsD5X39TU1N/u937NjR74+JbdvKysrSxIkTtXz5cv/9ph2PrtZh0vH47LPP/Kc1z507pz17\n9igpKcm4Y9HVOq7ET+r/x+LHP/6xvF6vTpw4of/6r//St7/9bW3ZssW4Y9HZOkpKSnr+78WtuWj+\nxpSXl9vjx4+3x40bZ//4xz/u6+n02B//+Ec7ISHBTkhIsCdNmmTUGjIyMuwxY8bYISEhtsvlsn/+\n85/bJ0+etGfOnGnUWzeuXsemTZvsRYsW2fHx8fY999xj//3f/73d3Nzc19MM6ODBg7ZlWXZCQkKH\nt5uYdjw6W0d5eblRx+P3v/+9nZSUZCckJNjx8fH2T3/6U9u2beOORVfrMOlYfF1FRYU9b94827bN\nOxZft2/fPv86Fi5c2KNj0e/eYgYAALqn351OBwAA3UPEAQAwFBEHAMBQRBwAAEMRccBgQUFBSkpK\n0uTJk5WYmKhXX33V/8ERhw8f1pNPPtnlth9//LG2bt16u6YK4Bbg6nTAYCNGjPB/JsGnn36q733v\ne5o2bZry8vKuu21FRYVeeeUV/fd///ctniWAW4VX4sAAceedd2rjxo0qKiqS9FWk582bJ0nav3+/\nkpKSlJSUpClTpqitrU2rV6/WwYMHlZSUpHXr1unjjz/W9OnTNWXKFE2ZMkX/8z//499PamqqHn30\nUcXFxWnhwoX+5/ztb3+radOmKTExUSkpKfryyy/l8/n0b//2b7rvvvuUkJCgjRs33v4fBjBIBPf1\nBADcPGPHjpXP59Onn37a4f5XXnlFb7zxhu6//36dPXtWoaGhKigo0Msvv+x/JX7lE7xCQ0NVU1Oj\n733ve/rtb38rSTpy5IiOHj2qMWPGaNq0aXrvvfeUnJysjIwMbd++3f8/BkOGDNGmTZsUFhamqqoq\nXbhwQQ888IDS09MVHR19u38cwIBHxIFBYNq0aXrqqaf0/e9/X//wD/8gp9N5zR+PaG9vV05Ojj74\n4AMFBQWppqbG/9h9992nv/qrv5IkJSYm6sSJExoxYoTGjBmjKVOmSPrqz4xK0u7du/Xhhx/qV7/6\nlSTp9OnTqq2tJeLALUDEgQHkj3/8o4KCgnTnnXd2uH/VqlV6+OGHVVZWpmnTpumtt966ZtvXXntN\nY8aM0ZYtW+Tz+TRkyBD/Y6Ghof7vg4KCdOnSpYB/JaqoqEhpaWk3YUUAAuF34sAA8emnn+qf//mf\ntWzZsmseq6ur06RJk/T0009r6tSp+r//+z+NHDnSf1Gc9NUr5sjISElSSUmJfD5fl89lWZbuvvtu\nNTU16f3335cknTlzRj6fT7NmzdIbb7yhS5cuSZKOHz+us2fP3sylAvgzXokDBjt37pySkpJ08eJF\nBQcH64knntCKFSskdfybyuvWrdO+fft0xx13aPLkyfq7v/s7WZaloKAgJSYmavHixfqXf/kXLViw\nQCUlJZo9e7b/9PiVfV0tJCRE27Zt07Jly3Tu3DkNHTpUe/fu1ZIlS1RfX697771Xtm0rIiJCO3bs\nuD0/EGCQ4S1mAAAYitPpAAAYiogDAGAoIg4AgKGIOAAAhiLiAAAYiogDAGAoIg4AgKH+HySqgq+H\nBHmzAAAAAElFTkSuQmCC\n"
}
],
"prompt_number": 121
},
{
"cell_type": "markdown",
"metadata": {},
"source": "Since we expect the data to have an exponential decay, we can plot it using a semi-log plot."
},
{
"cell_type": "code",
"collapsed": false,
"input": "title(\"Raw Data\")\nxlabel(\"Distance\")\nsemilogy(data[:,0],data[:,1],'bo')",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 122,
"text": "[<matplotlib.lines.Line2D at 0x10f2da510>]"
},
{
"output_type": "display_data",
"png": "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\n9T6PHTt2GLUWkvTUU09pz549OnnypLZs2WLkv1NSz3kE8+9U1NwL/VKXpZkqSv5f1Ge9XSq4ZcsW\nLVmyRJJbUTaLAAAG+0lEQVS0ZMkSvfrqq5EorV96m4dk1npMmDBB2dnZkqSRI0cqIyNDnZ2dxq3H\npeYhmbUeI0aMkCSdPXtWXq9XY8aMMW4tpN7nIZm1FocOHdJrr72m5cuX++s2cS16m4fP5+v3WkRN\ngHd2diopKcm/bbVa/X/ZTWOxWPT3f//3ys3N9V9mZ6IPP/xQCQkJkqSEhAR9+OGHEa4oeNXV1Zoy\nZYqWLVtmzCE26fPLN/fu3atbb73V6PW4MI+/+7u/k2TWepw/f17Z2dlKSEjwfyVg4lr0Ng/JrLWo\nqKjQz3/+cw0b9v/RZeJa9DYPi8XS77WImgAfTNd///GPf9TevXv1+9//Xr/85S/V1NQU6ZK+NIvF\nYuwa/eAHP9DBgwe1b98+TZw4UT/5yU8iXVKfnDp1SvPnz9eGDRs0atSogNdMWo9Tp07pW9/6ljZs\n2KCRI0catx7Dhg3Tvn37dOjQIe3atUtvvvlmwOumrMUX5+FyuYxai9/97ne6/vrrlZOTc8k9VRPW\n4lLzCGYtoibAB9NlaRMnTpQkjR8/Xt/85jfV0tIS4YqCk5CQoCNHjkiSPvjgA11//fURrig4119/\nvf8v9vLly41Yj7/+9a+aP3++iouLdc8990gycz0uzGPRokX+eZi4HpJ07bXXas6cOdqzZ4+Ra3HB\nhXns3r3bqLV46623tGXLFiUnJ6uoqEhvvPGGiouLjVuL3uaxePHioNYiagJ8sFyWdubMGZ08eVKS\ndPr0aW3durXHQ2BMMW/ePD333HOSpOeee87/D7BpPvjgA//vX3nllahfD5/Pp2XLlikzM1M/+tGP\n/O2mrcel5mHSenz88cf+Q5mfffaZtm3bppycHOPW4lLzuBB8UvSvxc9+9jN5PB4dPHhQ//qv/6o7\n7rhDdXV1xq1Fb/N4/vnng/t74Ysir732mu+GG27wpaSk+H72s59Fupyg/OUvf/FNmTLFN2XKFN9N\nN91kzDwKCwt9EydO9A0fPtxntVp9v/nNb3xHjx713Xnnnb60tDRffn6+75NPPol0mVf0xXls3rzZ\nV1xc7MvKyvLdfPPNvn/8x3/0HTlyJNJlXlZTU5PPYrH4pkyZ4svOzvZlZ2f7fv/73xu3Hr3N47XX\nXjNqPf7rv/7Ll5OT45syZYovKyvL9+STT/p8Pp9xa3GpeZi0FhdzuVy+uXPn+nw+89biYm+++aZ/\nHosWLer3WkTNZWQAAKDvouYQOgAA6DsCHAAAAxHgAAAYiAAHAMBABDhgoJiYGOXk5Gjy5MnKzs7W\nU0895b8pxJ49e7RixYpLfvb9999XfX39QJUKIEw4Cx0w0KhRo/z3G/joo4/0ne98RzNmzNBjjz12\nxc+6XC794he/0H/8x3+EuUoA4cQeOGC48ePHa+PGjaqpqZH0eUBfeEThzp07/Y8nnDp1qk6dOqVV\nq1apqalJOTk52rBhg95//33NnDlTU6dO1dSpU/Wf//mf/n7sdrsWLFigjIwMLVq0yD/mn//8Z82Y\nMUPZ2dm69dZbdfr0aXm9Xj344IO65ZZbNGXKFG3cuHHgfxjAEBIb6QIAfHnJycnyer366KOPAtp/\n8Ytf6JlnntFtt92mM2fOKC4uTpWVlVq/fr1/D/zCnbni4uLU3t6u73znO/rzn/8sSdq3b59aW1s1\nceJEzZgxQ2+99ZZyc3NVWFioF1980f+fgvj4eG3evFnXXXedWlpa1N3drdtvv12zZ8+WzWYb6B8H\nMCQQ4MAgNmPGDFVUVOi73/2u7r33XiUmJvZ4EMTZs2dVWlqqd955RzExMWpvb/e/dsstt2jSpEmS\npOzsbB08eFCjRo3SxIkTNXXqVEmfPypUkrZu3ar9+/fr5ZdfliSdOHFC7733HgEOhAkBDgwCf/nL\nXxQTE6Px48cHtK9cuVL/8A//IIfDoRkzZuj111/v8dmnn35aEydOVF1dnbxer+Lj4/2vxcXF+X8f\nExOjc+fOXfZpTzU1NcrPzw/BjABcCd+BA4b76KOPdP/996usrKzHax0dHbrpppv00EMPadq0afqf\n//kfjR492n8CnPT5nvKECRMkSc8//7y8Xu8lx7JYLLrxxhv1wQcfaPfu3ZKkkydPyuv1qqCgQM88\n84zOnTsnSWpra9OZM2dCOVUAF2EPHDDQZ599ppycHP31r39VbGysFi9erB//+MeSAp+JvGHDBr35\n5psaNmyYJk+erLvvvlsWi0UxMTHKzs5WSUmJfvjDH2r+/Pl6/vnnddddd/kPiV/o64uGDx+uhoYG\nlZWV6bPPPtOIESO0fft2LV++XG63W1//+tfl8/l0/fXX65VXXhmYHwgwBHEZGQAABuIQOgAABiLA\nAQAwEAEOAICBCHAAAAxEgAMAYCACHAAAAxHgAAAY6P8A5y5JTAFEv5sAAAAASUVORK5CYII=\n"
}
],
"prompt_number": 122
},
{
"cell_type": "markdown",
"metadata": {},
"source": "For a pure exponential decay like this, we can fit the log of the data to a straight line. The above plot suggests this is a good approximation. Given a function\n$$ y = Ae^{-ax} $$\n$$ \\log(y) = \\log(A) - ax$$\nThus, if we fit the log of the data versus x, we should get a straight line with slope $a$, and an intercept that gives the constant $A$.\n\nThere's a numpy function called **polyfit** that will fit data to a polynomial form. We'll use this to fit to a straight line (a polynomial of order 1)"
},
{
"cell_type": "code",
"collapsed": false,
"input": "params = polyfit(data[:,0],log(data[:,1]),1)\na = params[0]\nA = exp(params[1])",
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 123
},
{
"cell_type": "markdown",
"metadata": {},
"source": "Let's see whether this curve fits the data."
},
{
"cell_type": "code",
"collapsed": false,
"input": "x = linspace(1,45)\ntitle(\"Raw Data\")\nxlabel(\"Distance\")\nsemilogy(data[:,0],data[:,1],'bo')\nsemilogy(x,A*exp(a*x),'b-')",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 124,
"text": "[<matplotlib.lines.Line2D at 0x10f520890>]"
},
{
"output_type": "display_data",
"png": "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\nAABJRU5ErkJggg==\n"
}
],
"prompt_number": 124
},
{
"cell_type": "markdown",
"metadata": {},
"source": "If we have more complicated functions, we may not be able to get away with fitting to a simple polynomial. Consider the following data:"
},
{
"cell_type": "code",
"collapsed": false,
"input": "gauss_data = \"\"\"\\\n-0.9902286902286903,1.4065274110372852e-19\n-0.7566104566104566,2.2504438576596563e-18\n-0.5117810117810118,1.9459459459459454\n-0.31887271887271884,10.621621621621626\n-0.250997150997151,15.891891891891893\n-0.1463309463309464,23.756756756756754\n-0.07267267267267263,28.135135135135133\n-0.04426734426734419,29.02702702702703\n-0.0015939015939017698,29.675675675675677\n0.04689304689304685,29.10810810810811\n0.0840994840994842,27.324324324324326\n0.1700546700546699,22.216216216216214\n0.370878570878571,7.540540540540545\n0.5338338338338338,1.621621621621618\n0.722014322014322,0.08108108108108068\n0.9926849926849926,-0.08108108108108646\"\"\"\n\ndata = []\nfor line in gauss_data.splitlines():\n words = line.split(',')\n data.append(map(float,words))\ndata = array(data)\n\nplot(data[:,0],data[:,1],'bo')",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 125,
"text": "[<matplotlib.lines.Line2D at 0x10f3f1b10>]"
},
{
"output_type": "display_data",
"png": "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\n//iH7fF47HfeeSfqa6ampmy3223/+9//tm/evGlXVVXZ7733XjLHQJx+9rOf2e3t7bZt2/bJkyft\nJ598MurrysrK7I8//jidoyGKWD5Lfr/f3rVrl23btv3222/bW7duzcSoiCKW9++NN96w6+vrMzQh\n7qS/v99+99137Q0bNkT983g+e0m9dGZFRYXKy8vv+JqBgQHde++9Kisr06JFi7R37169/PLLyRwD\ncbpw4YKampokSU1NTerq6prztTbnoGdcLJ+lme/p1q1bde3aNY2OjmZiXNwm1n8L+ayZadu2bVq+\nfPmcfx7PZy/t17IeHh7W6tWrw9+XlpZqeHg43WMgitHR0fBxAC6Xa85fHsuy9NBDD6mmpkYvvPBC\nOkfEDLF8lqK95sqVK2mbEXOL5f2zLEt//OMfVVVVpUceeUTvvfdeusdEnOL57C340plznZt84sQJ\n1dfXz/vzXCwks+50bvlMlmXN+V699dZbKikp0UcffSSv16uKigpt27YtJfNibrF+lm5fw+IzaIZY\n3of77rtPQ0NDWrx4sV599VU1Njbqn//8ZxqmQzIs9LO34CD39vYu9EcirFq1SkNDQ+Hvh4aGVFpa\nmtAyEbs7vX8ul0sjIyMqLi5WKBRSUVFR1NeVlJRIkgoLC7V7924NDAwQ5AyI5bN0+2uuXLmiVatW\npW1GzC2W92/p0qXhx7t27dKPf/xjjY2NacWKFWmbE/GJ57OXsk3Wc+33qKmp0b/+9S8NDg7q5s2b\n+vWvf62GhoZUjYEFaGhoUGdnpySps7NTjY2Ns15z48YNffLJJ5KkTz/9VD09PZyDniGxfJYaGhp0\n9uxZSdLbb7+tgoICTk80RCzv3+joaPjf0oGBAdm2TYyzRFyfveQcb/a53/72t3Zpaamdn59vu1wu\ne+fOnbZt2/bw8LD9yCOPhF/3u9/9zi4vL7fdbrd94sSJZI6ABHz88cf2gw8+aK9du9b2er32+Pi4\nbduR718wGLSrqqrsqqoqu7Kykvcvw6J9lp5//nn7+eefD7/mJz/5ie12u+1NmzbNefYDMmO+9+9X\nv/qVXVlZaVdVVdlf//rX7T/96U+ZHBcz7N271y4pKbEXLVpkl5aW2mfOnEn4s5eUS2cCAIDEpP0o\nawAAMBtBBgDAAAQZAAADEGQAAAxAkAEAMABBBgDAAP8Pp8ff3t7KkqUAAAAASUVORK5CYII=\n"
}
],
"prompt_number": 125
},
{
"cell_type": "markdown",
"metadata": {},
"source": "This data looks more Gaussian than exponential. If we wanted to, we could use **polyfit** for this as well, but let's use the **curve_fit** function from Scipy, which can fit to arbitrary functions. You can learn more using help(curve_fit).\n\nFirst define a general Gaussian function to fit to."
},
{
"cell_type": "code",
"collapsed": false,
"input": "def gauss(x,A,a): return A*exp(a*x**2)",
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 126
},
{
"cell_type": "markdown",
"metadata": {},
"source": "Now fit to it using **curve_fit**:"
},
{
"cell_type": "code",
"collapsed": false,
"input": "from scipy.optimize import curve_fit\n\nparams,conv = curve_fit(gauss,data[:,0],data[:,1])\nx = linspace(-1,1)\nplot(data[:,0],data[:,1],'bo')\nA,a = params\nplot(x,gauss(x,A,a),'b-')",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 127,
"text": "[<matplotlib.lines.Line2D at 0x110a84410>]"
},
{
"output_type": "display_data",
"png": "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\ngua/R0REvOPLc8heXfa0bNmy8sueJk6cyH333VfxwXUdsoiIBLmzD9aMzLL26MFVyCIiEkK86T1d\nfCMiIuIAKmQREREHUCGLiIg4gApZRETEAVTIIiIiDqBCFhERcQAVsoiIiAOokEVERBxAhSwiIuIA\nKmQREREHUCGLiIg4gApZRETEAVTIIiIiDqBCFhERcQAVsoiIiAOokEVERBxAhSwiIuIAKmQREREH\nUCGLiIg4gApZRETEAVTIIiIiDqBCFhERcQAVsoiIiAOokEVERBxAhSwiIuIAKmQREREHUCGLiIg4\ngApZRETEAVTIIiIiDqBCFhERcQAVsoiIiAOokEVERBxAhSwiIuIAKmQREREHUCGLiIg4gApZRETE\nAVTIIiIiDqBCFhERcQAVslQpNzfXdASpIT13gU3PX2iqcSFnZGQQHR1NXFwccXFx5OTk+DKXOIB+\nKQQuPXeBTc9faKpb03/ocrmYNm0a06ZN82UeERGRkOTVkLVlWb7KISIiEtJcVg1b9aGHHuKFF16g\ncePGxMfH88QTT9CkSZOKD+5y+SSkiIhIoKjpweoFCzkxMZF9+/add/+sWbPo168fLVq0AGDmzJkU\nFhYyd+7cGoUQEREJdTU+Qj7brl27GDFiBJs3b/ZFJhERkZBT43PIhYWF5e8vWrSIK6+80ieBRERE\nQlGNj5AnTJjARx99hMvlol27dsyZM4eoqChf5xMREQkJNT5Cnj9/Pp988gkff/wxixcvJioqildf\nfZWuXbsSFhbGxo0bq/y3OTk5dOrUifbt2/PYY4/VNIL42MGDB0lMTKRDhw4kJSVx+PDhSr8uJiaG\n7t27ExcXR58+ffycUs7myWspPT2d9u3b06NHDzZt2uTnhHIhF3v+cnNzady4cfl6Dw8//LCBlFKZ\n22+/naioqAuODlf7tWf50NatW61t27ZZCQkJ1oYNGyr9mtLSUis2NtbauXOndfLkSatHjx7Wli1b\nfBlDaui3v/2t9dhjj1mWZVmzZ8+27r333kq/LiYmxjpw4IA/o0klPHktud1ua+jQoZZlWda6deus\nvn37mogqlfDk+Xv33XetESNGGEooF5KXl2dt3LjR6tatW6Wfr8lrz6dLZ3bq1IkOHTpc8GvWr1/P\nFVdcQUxMDOHh4YwdO5Y33njDlzGkhpYsWUJaWhoAaWlpLF68uMqvtXQNunGevJbOfk779u3L4cOH\nKSoqMhFXzuHp70K91pxpwIABNG3atMrP1+S15/e1rPfu3Uvbtm3LP46Ojmbv3r3+jiGVKCoqKp8H\nEBUVVeUPj8vl4oYbbiA+Pp5//OMf/owoZ/HktVTZ1+zZs8dvGaVqnjx/LpeL9957jx49ejBs2DC2\nbNni75hSQzV57VV76cyqrk1+5JFHGDFixEX/vRYLMetC15afzeVyVflcrV27llatWvHNN9+QmJhI\np06dGDBgQK3klap5+lo69whLr0Fn8OR56NWrFwUFBTRo0IBly5aRmprK9u3b/ZBOfKG6r71qF/KK\nFSuq+08qaNOmDQUFBeUfFxQUEB0d7dVjiucu9PxFRUWxb98+WrZsSWFhIZGRkZV+XatWrQBo0aIF\no0ePZv369SpkAzx5LZ37NXv27KFNmzZ+yyhV8+T5a9SoUfn7Q4cOZfLkyRw8eJBmzZr5LafUTE1e\ne7U2ZF3VeY/4+Hh27NjBrl27OHnyJAsXLmTkyJG1FUOqYeTIkWRnZwOQnZ1NamrqeV9z/Phxjhw5\nAsCxY8dYvny5rkE3xJPX0siRI5k/fz4A69ato0mTJro80SE8ef6KiorKf5euX78ey7JUxgGiRq89\n38w3s73++utWdHS0FRERYUVFRVlDhgyxLMuy9u7daw0bNqz865YuXWp16NDBio2NtR555BFfRhAv\nHDhwwBo8eLDVvn17KzEx0Tp06JBlWRWfv/z8fKtHjx5Wjx49rK5du+r5M6yy19Jzzz1nPffcc+Vf\nc9ddd1mxsbFW9+7dq7z6Qcy42PP3zDPPWF27drV69OhhXX311db7779vMq6cZezYsVarVq2s8PBw\nKzo62po7d67Xrz2fLJ0pIiIi3vH7LGsRERE5nwpZRETEAVTIIiIiDqBCFhERcQAVsoiIiAOokEVE\nRBzg/wOvCmv81gpgbAAAAABJRU5ErkJggg==\n"
}
],
"prompt_number": 127
},
{
"cell_type": "markdown",
"metadata": {},
"source": "The **curve_fit** routine we just used is built on top of a very good general **minimization** capability in Scipy. You can learn more [at the scipy documentation pages](http://docs.scipy.org/doc/scipy/reference/generated/scipy.optimize.minimize.html)."
},
{
"cell_type": "markdown",
"metadata": {},
"source": "## Monte Carlo, random numbers, and computing $\\pi$\nMany methods in scientific computing rely on Monte Carlo integration, where a sequence of (pseudo) random numbers are used to approximate the integral of a function. Python has good random number generators in the standard library. The **random()** function gives pseudorandom numbers uniformly distributed between 0 and 1:"
},
{
"cell_type": "code",
"collapsed": false,
"input": "from random import random\nrands = []\nfor i in range(100):\n rands.append(random())\nplot(rands)",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 128,
"text": "[<matplotlib.lines.Line2D at 0x110ab3610>]"
},
{
"output_type": "display_data",
"png": "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\n"
}
],
"prompt_number": 128
},
{
"cell_type": "markdown",
"metadata": {},
"source": "**random()** uses the [Mersenne Twister](http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/emt.html) algorithm, which is a highly regarded pseudorandom number generator. There are also functions to generate random integers, to randomly shuffle a list, and functions to pick random numbers from a particular distribution, like the normal distribution:"
},
{
"cell_type": "code",
"collapsed": false,
"input": "from random import gauss\ngrands = []\nfor i in range(100):\n grands.append(gauss(0,1))\nplot(grands)",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 129,
"text": "[<matplotlib.lines.Line2D at 0x110b89510>]"
},
{
"output_type": "display_data",
"png": "iVBORw0KGgoAAAANSUhEUgAAAeYAAAFtCAYAAADS5MnUAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJztnXuUHVWd77+n3+k8Ou8H6QRCSEg6CSQYCCBKIBO5yENe\nLoUL+EDXnUFmxOuow7hUGDWBwRmFpdeZcRQduAsYUXRmDBnA0MAAgQEMQhJDgMR00unOi+7QnX6f\nun/87s6pU72ralfVrqpdp36ftbKSnD5dp7q6qr71/e7f/u2CZVkWGIZhGIYxgqq0d4BhGIZhmBIs\nzAzDMAxjECzMDMMwDGMQLMwMwzAMYxAszAzDMAxjECzMDMMwDGMQkYS5v78fq1atwvLly9HS0oLb\nbrtN134xDMMwTC4pRJ3HfOzYMTQ2NmJ4eBjnnXcevvOd7+C8887TtX8MwzAMkysiR9mNjY0AgMHB\nQYyMjGDy5MmRd4phGIZh8kpN1A0Ui0WcccYZePvtt/Fnf/ZnaGlpOf61QqEQdfMMwzAMkymiNtSM\n7JirqqqwZcsW7N27F8888wxaW1vLvm5ZFv+J8c83vvGN1PchD3/4OPMxroQ/fIzj/6MDbVXZTU1N\nuOSSS/Dyyy/r2iTDMAzD5I5Iwnzo0CF0dXUBAPr6+vDEE09gxYoVWnaMYRiGYfJIpDHm/fv34xOf\n+ASKxSKKxSJuuOEGrFmzRte+MQqsXr067V3IBXyc44ePcfzwMc4GkadLeW68UNCWuTMMwzCM6ejQ\nPe78xTAMwzAGwcLMMAzDMAbBwswwDMMwBsHCzDAMwzAGwcLMMAzDMAbBwswwDMMwBsHCzDAMwzAG\nwcLMMAzDMAbBwswwDMMwBsHCzDAMwzAGwcLMMAzDMAbBwswwDMMwBsHCzDAMwzAGwcLMMAzDMAbB\nwswwDMMwBsHCzDAMwzAGwcLMMAzDMAbBwswwDMMwBsHCzDAMwzAGwcLMMAzDMAbBwswwDMMwBsHC\nzDAMwzAGwcLMMAzDMAbBwswwDMMwBsHCzDAMwzAGwcLMMAzDMAbBwswwDMMwBsHCzDAMwzAGwcLM\nMAzDMAbBwswwDMMwBsHCzDAMwzAGwcLMMAzD5B7LAhYuBIrFtPcEKFiWZcW28UIBMW6eYRiGYbQw\nOAjU1wPHjgFjxoTfjg7dY8fMMAzD5J6+Pvp7YCDd/QBYmBmGYRgG/f30NwszwzAMwxiAEGbxd5qw\n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\nRK5CYII=\n"
}
],
"prompt_number": 129
},
{
"cell_type": "markdown",
"metadata": {},
"source": "It is generally more efficient to generate a list of random numbers all at once, particularly if you're drawing from a non-uniform distribution. Numpy has functions to generate vectors and matrices of particular types of random distributions."
},
{
"cell_type": "code",
"collapsed": false,
"input": "plot(rand(100))",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 130,
"text": "[<matplotlib.lines.Line2D at 0x110d09fd0>]"
},
{
"output_type": "display_data",
"png": "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\nnZ2d6OzsxCWXXAIA+OhHP4oXXngBc+fOpetsCM899xze9a534bTTTkNTUxM+8pGP4JlnnqFrbAGi\n8UG3X4hVgpapoyaow/M83HDDDTjvvPPwhS984eTPV69ejXvuuQcAcM8995wkboI6br31VvT09OD1\n11/H/fffjyuuuAL/9E//RNfYMObOnYv58+dj586dAIBHH30U559/Pq677jq6zoawePFibNmyBceP\nH4fneXj00Udx3nnn0TW2ANH4sHr1atx///0YGRnB66+/ju7ubrzzne+M36HJgHkYNm7c6J177rne\nOeec49166622D1cK/PznP/cqlYp30UUXeUuXLvWWLl3qbdq0yevr6/OuvPJKKpswjM2bN3vXXXed\n53keXWML+NWvfuUtW7bMu/DCC70Pf/jDXn9/P11nw7j99ttPlll98pOf9EZGRugaJ8SaNWu8008/\n3WtubvY6Ozu9b3/725HX9Ktf/ap3zjnneIsWLfK6urqkjlHxPGqUTSAQCASCa3BgQS0CgUAgEAhB\nEEETCAQCgeAgiKAJBAKBQHAQRNAEAoFAIDgIImgCgUAgEBwEETSBQCAQCA7i/wOW2Ox6b1F9+gAA\nAABJRU5ErkJggg==\n"
}
],
"prompt_number": 130
},
{
"cell_type": "markdown",
"metadata": {},
"source": "One of the first programs I ever wrote was a program to compute $\\pi$ by taking random numbers as x and y coordinates, and counting how many of them were in the unit circle. For example:"
},
{
"cell_type": "code",
"collapsed": false,
"input": "npts = 5000\nxs = 2*rand(npts)-1\nys = 2*rand(npts)-1\nr = xs**2+ys**2\nninside = (r<1).sum()\nfigsize(6,6) # make the figure square\ntitle(\"Approximation to pi = %f\" % (4*ninside/float(npts)))\nplot(xs[r<1],ys[r<1],'b.')\nplot(xs[r>1],ys[r>1],'r.')\nfigsize(8,6) # change the figsize back to 4x3 for the rest of the notebook",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "display_data",
"png": "iVBORw0KGgoAAAANSUhEUgAAAX4AAAF4CAYAAABTg5LhAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzsfXuQ3VWR/5kkk2TynMmTDBNiCBBKIBCVCm7EwSWuJoFK\nLB0kpWTwMSIrWuuWrlvyk6gguNau1KqrsFsrgutj1XV9LLBWqUFQUcvHEgURHxlUUBT88ggKBHJ+\nf3xz7u3bt7tP9znnTpyb6aopyL3fe77n2c9P9+nx3ns3RVM0RVM0RYcNTTvUHZiiKZqiKZqiiaUp\nxj9FUzRFU3SY0RTjn6IpmqIpOsxoivFP0RRN0RQdZjTF+KdoiqZoig4zmmL8UzRFUzRFhxlNMf4p\nKkYXXnihu+yyyybkXbfccos7/vjjJ+RdJWki52iKpoglP0WThoaHh/3AwIB//PHHD3VXJpx6enr8\nz3/+846/Z+/evb6np8c/9dRTHX9XKfrEJz7h165d6xcsWOAXL17sX/SiF/l77rmHfX5sbMyvXbvW\nT5s2zX/kIx9p+e6aa67x06ZN8/PmzWv8fe1rX/Pee//444/7V77ylX7VqlV+/vz5/pRTTvE33nhj\ny++//OUv+7Vr1/o5c+b45z3vef7uu+9u+f7v/u7v/OLFi/3ixYv9W97ylpbv9u7d68844ww/Z84c\nf/zxx/svf/nLOdMyRQJNafyThMbHx913vvMdt2zZMveFL3yhY+956qmnOtZ2LvkJzDWcyHfl0saN\nG93NN9/sHnroIXf33Xe7OXPmuL/9279lnz/llFPcBz/4QfeMZzzD9fT0kO098sgjjb/nPve5zjnn\nnnzySXfUUUe5m2++2T388MPusssuc+ecc467++67nXPO3X///e7FL36xe9e73uWqqnLPetaz3Etf\n+tJGu1dffbX7/Oc/7/bs2eP27NnjvvjFL7qrr7668f2OHTvcM5/5TPeHP/zBvetd73IveclL3P33\n319qmqYI0qGWPFOko3e84x3+7LPP9pdddpk/66yzWr4bHR31F1xwgX/+85/v58+f74eHh1s0rZ6e\nHv++973PH3300X7JkiX+zW9+sz9w4ID3vtbw/uIv/sK/8Y1v9IsXL/Zve9vb/EMPPeTPO+88v3Tp\nUr9q1Sp/2WWX+QMHDvgHHnjADw0N+S9+8Yvee+8feeQRv2bNGv/Rj3600Y//9//+n/fe+927d/sj\njzzSv+c97/FLly71K1as8P/93//tr7/+en/sscf6RYsW+SuuuKLRx29/+9v+tNNO8/39/X7FihX+\noosu8k888YT33vvTTz/d9/T0+Llz5/p58+b5T33qU3737t1+aGio8fs77rjDDw8P+/7+fn/CCSf4\nL3zhCy3z89d//dd+69atfv78+X7Dhg2s9bBy5Urf09PT0Ha/9a1v+QMHDvhLL73Ur1q1yi9btszv\n3LnTP/TQQ+Tvw7gvv/xyv2TJEv+0pz3Nf+xjH2vpS5ijTtAjjzzid+7c6f/mb/4m+uxznvMcf+21\n17Z8ds011/jnPOc56vetW7fOf/azn/Xee3/11Vf7jRs3Nr579NFHfV9fn//JT37ivff+2c9+tv+3\nf/u3xvcf/vCH/Wmnnea99/4nP/mJnzVrlt+3b1/j++c+97n+qquuUvdlivQ0pfFPErruuuvcS1/6\nUnfOOee4L33pS+53v/tdy/cf//jH3SWXXOLuv/9+d8opp7iXvexlLd9/7nOfc9/73vfc97//fff5\nz3/effjDH258953vfMetWbPG/e53v3Nvfetb3UUXXeQeeeQRt3fvXve1r33NXXfdde6aa65xixYt\nch/+8Ifd2NiY+/3vf+/e+MY3umc84xnu5S9/uXPOuZ6enhYN8r777nOPP/64+81vfuPe+c53ule/\n+tXuYx/7mPvBD37gbrnlFvfOd76zoS3OmDHD/fM//7N74IEH3K233uq+8pWvuA9+8IPOOeduvvlm\n55xze/bscY888ogbGRlpGdv+/fvd2Wef7V74whe63//+9+7973+/e9nLXubuuuuuxjP/+Z//6d7+\n9re7qqrcMccc4y6++GJynm+55RbnnHMPPfSQe+SRR9yGDRvcNddc46699lp30003uV/84hdu3759\n7qKLLmLX6r777nMPPPCAu/fee921117rXvOa17if/vSn5BxB+vrXv+4GBgbYv29+85vsO7/+9a+7\n/v5+t2DBAvfLX/7S/cM//AP7rEQ9PT3uBz/4gVu6dKlbu3atu+yyy1gr8L777nN33XWXO+GEE5xz\nzt1+++3u5JNPbnw/Z84cd8wxx7jbb7/dOefcHXfc0fL9unXrGt/dfvvt7uijj3Zz585tfH/yySc3\nvp+iwnSoJc8UxemWW27xs2fP9g8//LD33vuTTz7ZX3nllY3vR0dH/Y4dOxr/3rdvn58+fbr/9a9/\n7b2vNf4vfelLje8/+MEP+jPPPNN7X2t4Rx11VOO7J5980s+cOdP/+Mc/bnx29dVX+zPOOKPx79e/\n/vX+xBNP9ENDQ/4Pf/hD4/Pzzz+/RePv6+trWBYPP/yw7+np8d/5zncazz/zmc/0n/vc58gxX3nl\nlf5FL3pR49/Yxw81/ptvvtkfccQRLb/fsWOHf/vb396Yn7GxscZ3N9xwgz/++OPJ91I+/r/8y7/0\nH/rQhxr//slPfuJ7e3vJOMDu3bv9jBkz/B//+MfGZ+ecc46/9NJL2+aoE3TPPff45z//+f4Nb3hD\n9FlK4//FL37hx8fHvffe//CHP/RPf/rTWyyzQE888YQ/88wz/Wtf+9rGZ6961av83//937c8t3Hj\nxsY7pk+f3tD+vff+rrvu8j09Pd5776+77rqG9h/o4osv9ueff350HFNkpymNfxLQtdde6/7qr/7K\nzZ8/3znn3MjIiLv22msb3/f09LihoaHGv+fOnesWLVrk7r333sZnK1eubPz/UUcdxX53//33u/37\n97tVq1a1PH/PPfc0/j02NuZuv/12d/7557uBgQG234sXL25ot319fc4555YvX974vq+vzz366KPO\nOefuuusud9ZZZ7kVK1a4hQsXuosvvtg98MADsalxzjl37733tozBOedWrVrVGGNPT0/be/ft26dq\n2znnfvOb37TNx5NPPunuu+8+8vmBgYHGeENffvOb36jfl0ODg4Pu0ksvddddd13S71evXt0Y64kn\nnuguueQS95nPfKblmQMHDrjzzjvPzZ49233gAx9ofD5v3jz38MMPtzz70EMPNfYt/v6hhx5y8+bN\nY3/74IMPugULFiSNY4pkmmL8f+b0pz/9yX3qU59yX/3qV92KFSvcihUr3D/90z+52267ze3Zs8c5\nVwcif/WrXzV+s2/fPveHP/zBDQ4ONj775S9/2fL/Rx55ZOPf0PWwZMkS19vb68bHx1ueD4Llqaee\ncq95zWvczp073b/8y7+4n//85y395dwYMbrwwgvd05/+dPezn/3MPfTQQ+5d73qXO3DggOq3g4OD\n7le/+lVLQPbuu+9uGaOWqP4PDg62zceMGTNahAmkqqrcH//4x5a+wLXg6JZbbnHz589n/77xjW+o\nxrB//343Z84c1bMagvPqvXevetWr3O9//3v3X//1X2769OmN70444QR32223Nf796KOPup///OcN\nV9AJJ5zg/u///q/x/W233eZOPPHExnfBjQa/D7+dorI0xfj/zOlzn/ucmzFjhvvxj3/sbrvtNnfb\nbbe5H//4x+70009v0epuuOEG941vfMM98cQT7m1ve5t79rOf3cL4/vEf/9E9+OCD7le/+pV73/ve\n14K2gDR9+nR3zjnnuIsvvtjt27fP3X333e7KK69s+PEvv/xyN336dHfNNde4N7/5zW7nzp0NBu29\nT0bD7Nu3z82fP9/NmTPH3Xnnne5DH/pQy/fLly9vEzKBNmzY4ObMmePe8573uP3797ubbrrJ/c//\n/I8799xzG/3S0tKlS920adNa3rVjxw535ZVXuvHxcbdv3z731re+1Z177rlu2jT++Ozatcvt37/f\n3XLLLe76669vxCWkvpx++uktaBr8t3HjRvJ3H//4xxuC/+6773YXX3yxe/GLX8y+Z//+/e6xxx5z\nBw4ccE888YR77LHHGv268cYbG5bMnXfe6S677DK3ffv2xm8vvPBCd+edd7ovfOELbtasWS3tvuhF\nL3I/+tGP3Gc/+1n32GOPuXe84x3ulFNOcccdd5xzzrmdO3e69773ve7ee+9199xzj3vve9/rzj//\nfOecc8cdd5w75ZRT3Dve8Q732GOPuc9+9rPuRz/6kTiOKcqgQ+ZkmiIVvfCFL/RvetOb2j7/1Kc+\n5VesWOGffPJJf/755/vXvva1/vnPf76fN2+eHx4ebvhpva/94+9///v90Ucf7RcvXuzf9KY3NXzv\nH/nIR/zpp5/e0nZVVf7lL3+5X7p0qV+5cqW/9NJL/YEDB/x3v/tdPzAw0PC1P/XUU37jxo3+8ssv\n997X/uu3ve1t3vva171y5cpGm/v37/fTpk1rQRs95znPaSBebr75Zn/88cf7efPm+dNPP91fcskl\nLf266qqr/IoVK3x/f7//9Kc/7W+66aaW9m+//XY/PDzsFy5c6E844YSW2AHsF9U3TJdccolfunSp\n7+/v99/+9rf9gQMH/Dvf+U6/cuVKv3TpUn/eeef5Bx98kPxtiD28613v8kuWLPGrVq3y//Ef/8H2\npQRdfPHFfmhoyM+dO9c/7WlP8295y1v8n/70p8b3mzdvbvHTDw8P+56eHj9t2jTf09Pje3p6Glj9\nN73pTX758uV+7ty5/uijj/a7du3yTz75pPfe+/Hxcd/T0+P7+vpacP4f//jHG21/+ctf9scff7zv\n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\n"
}
],
"prompt_number": 131
},
{
"cell_type": "markdown",
"metadata": {},
"source": "The idea behind the program is that the ratio of the area of the unit circle to the square that inscribes it is $\\pi/4$, so by counting the fraction of the random points in the square that are inside the circle, we get increasingly good estimates to $\\pi$. \n\nThe above code uses some higher level Numpy tricks to compute the radius of each point in a single line, to count how many radii are below one in a single line, and to filter the x,y points based on their radii. To be honest, I rarely write code like this: I find some of these Numpy tricks a little too cute to remember them, and I'm more likely to use a list comprehension (see below) to filter the points I want, since I can remember that.\n\nAs methods of computing $\\pi$ go, this is among the worst. A much better method is to use Leibniz's expansion of arctan(1):\n\n$$\\frac{\\pi}{4} = \\sum_k \\frac{(-1)^k}{2*k+1}$$"
},
{
"cell_type": "code",
"collapsed": false,
"input": "n = 100\ntotal = 0\nfor k in range(n):\n total += pow(-1,k)/(2*k+1.0)\nprint 4*total",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": "3.13159290356\n"
}
],
"prompt_number": 132
},
{
"cell_type": "markdown",
"metadata": {},
"source": "If you're interested a great method, check out [Ramanujan's method](http://en.wikipedia.org/wiki/Approximations_of_%CF%80). This converges so fast you really need arbitrary precision math to display enough decimal places. You can do this with the Python **decimal** module, if you're interested."
},
{
"cell_type": "markdown",
"metadata": {},
"source": "## Numerical Integration\nIntegration can be hard, and sometimes it's easier to work out a definite integral using an approximation. For example, suppose we wanted to figure out the integral:\n\n$$\\int_0^\\infty\\exp(-x)dx=1$$"
},
{
"cell_type": "code",
"collapsed": false,
"input": "from numpy import sqrt\ndef f(x): return exp(-x)\nx = linspace(0,10)\nplot(x,exp(-x))",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 133,
"text": "[<matplotlib.lines.Line2D at 0x110d2a250>]"
},
{
"output_type": "display_data",
"png": "iVBORw0KGgoAAAANSUhEUgAAAeQAAAFtCAYAAADWERnpAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3Xt4VPWdx/HP5MItIAkBAmRCgySSBASxCWDRNqIIZWtU\nRMUtheUmpVWkT59dXdd2wT6r0D77WFe6LbretYDtdgtajDXaoNwCFSoIFAISmYQSDRCIILdh9o/T\n3CCZ3Gbmd86Z9+t5zjMz5OScr/OgH3/X4wkEAgEBAACjYkwXAAAACGQAAGyBQAYAwAYIZAAAbIBA\nBgDABghkAABsIGggz5o1SykpKbr66qubPWfBggXKzMzUiBEjtH379pAXCABANAgayDNnzlRhYWGz\nP1+7dq3279+v0tJSPfPMM5o/f37ICwQAIBoEDeQbbrhBSUlJzf58zZo1mjFjhiRp9OjRqq6uVmVl\nZWgrBAAgCsR15JcrKiqUlpZW99nr9aq8vFwpKSmNzvN4PB25DQAAjtPWjTA7PKnr0hs2F74PPxxQ\nIMARruPf//3fjdcQDQffM9+xGw6+4/Af7dGhQE5NTZXP56v7XF5ertTU1CbP3bevI3cCAMDdOhTI\nBQUFevnllyVJmzdvVmJi4mXd1bVKSztyJwAA3C3oGPK9996rdevWqaqqSmlpaVq8eLHOnz8vSZo3\nb54mTZqktWvXKiMjQwkJCXrhhReavdb+/dLFi1IMK5/DIj8/33QJUYHvOfz4jsOP79iePIH2dna3\n5SYejwYMCGjTJmngwHDfDQAAszweT5vHkiPWXr3qKsaRAQBoTkQDmXFkAACaFrFAzsykhQwAQHPo\nsgYAwAYIZAAAbCBis6zPng3oiiukmhopPj7cdwQAwBxbz7Lu1ElKTZUOHozUHQEAcI6IbtNBtzUA\nAE0jkAEAsIGIBnJmJmuRAQBoCi1kAABsgEAGAMAGIrbsKRAIyO+XuneXjh6VunUL910BADDD1sue\nJCk2VrrySutRjAAAoF7En05MtzUAAJcjkAEAsAEjgczSJwAAGot4IPMYRgAALkeXNQAANhDxQE5J\nkc6elY4fj/SdAQCwr4gHssfDFpoAAFwq4oEs0W0NAMClCGQAAGyAQAYAwAaMBDJjyAAANBbRh0vU\nOn5cGjhQOnnSmuQFAICb2P7hErWSkqSuXaUjR0zcHQAA+zESyBLjyAAANGQskBlHBgCgHi1kAABs\ngEAGAMAGjHZZE8gAAFiMLHuSpNOnpeRk6YsvpNjYcFcAAEDkOGbZkyR16yb16SMdOmSqAgAA7MNY\nIEuMIwMAUMtoIDOODACAxXgLmbXIAADYIJBpIQMAQCADAGALxpY9SdL581L37tZTnzp3DncVAABE\nhqOWPUlSfLz0la9In3xisgoAAMwzGsgS3dYAAEgEMgAAtmA8kFmLDACADQKZtcgAANgkkGkhAwCi\nnfFATk2VqqulmhrTlQAAYI7xQI6JkTIy6LYGAEQ344EsMY4MAIBtAplxZABANLNFILP0CQAQ7WwR\nyLSQAQDRzlaBHP7HXAAAYE+2COTeva3Xo0fN1gEAgCm2CGSPh3FkAEB0s0UgSyx9AgBEN1sF8t69\npqsAAMAM2wTy0KHSxx+brgIAADNaDOTCwkJlZWUpMzNTS5cuveznVVVVmjhxoq655hoNGzZML774\nYrsKGT5c2rGjXb8KAIDjeQKB5hcb+f1+DRkyREVFRUpNTVVeXp5WrFih7OzsunMWLVqks2fP6okn\nnlBVVZWGDBmiyspKxcXF1d/E41GQ2/z9XlLPnlJFhfUKAIBTtSb3LhW0hbxlyxZlZGQoPT1d8fHx\nmjp1qlavXt3onP79++vkyZOSpJMnTyo5OblRGLdWbKw0bJi0c2ebfxUAAMcLmpwVFRVKS0ur++z1\nelVSUtLonLlz52rcuHEaMGCAampq9Prrrzd5rUWLFtW9z8/PV35+/mXnDB8uffSRdP31bfgnAADA\nsOLiYhUXF3foGkED2ePxtHiBxx9/XNdcc42Ki4t14MABjR8/Xh999JF69OjR6LyGgdwcxpEBAE50\naUNz8eLFbb5G0C7r1NRU+Xy+us8+n09er7fRORs3btRdd90lSRo8eLAGDRqkve1cv0QgAwCiVdBA\nzs3NVWlpqcrKynTu3DmtWrVKBQUFjc7JyspSUVGRJKmyslJ79+7VlVde2a5ihg+3lj5dvNiuXwcA\nwLGCdlnHxcVp2bJlmjBhgvx+v2bPnq3s7GwtX75ckjRv3jw98sgjmjlzpkaMGKGLFy/qpz/9qXr1\n6tWuYhITpV69pE8+kTIy2nUJAAAcKeiyp5DdpA3Tv2+9VZo5U5o8OcxFAQAQJiFf9mTCiBGMIwMA\noo/tArl26RMAANHEloFMCxkAEG1sN4Z84YK1deaRI9IlS5kBAHAEV4whx8VJOTk8+QkAEF1sF8gS\n48gAgOhj20BmHBkAEE0IZAAAbMB2k7ok6ehR6corpepqqRXPtwAAwFZcMalLkpKTrRnWZWWmKwEA\nIDJsGcgS3dYAgOhi20BmC00AQDSxbSCz9AkAEE1sHci0kAEA0cKWs6wl6fx5awvNzz+XEhLCVBgA\nAGHgmlnWkhQfL2VlSbt2ma4EAIDws20gS4wjAwCih+0DmXFkAEA0IJABALAB207qkqwJXVddJR07\nxhaaAADncNWkLknq00fq0kXy+UxXAgBAeNk6kCW6rQEA0cH2gcwWmgCAaGD7QKaFDACIBo4IZNYi\nAwDcztazrCXp3DlrC81jx6SuXUNcGAAAYeC6WdaS1KmTtfRp927TlQAAED62D2SJbmsAgPs5JpCZ\n2AUAcDNHBDJLnwAAbueIQK5tIYd/+hkAAGY4IpBTUqSYGOnwYdOVAAAQHo4IZI+HcWQAgLs5IpAl\nxpEBAO7mmECmhQwAcDNHBTJrkQEAbmX7rTNrnTkjJSVJ1dVS584hKgwAgDBw5daZtbp0kQYPlvbs\nMV0JAACh55hAlui2BgC4l+MCmYldAAA3clQgjxwpffih6SoAAAg9x0zqkqTjx6WBA63XuLgQFAYA\nQBi4elKXZM2yTkuTdu40XQkAAKHlqECWpOuukzZtMl0FAACh5chA3rzZdBUAAISW4wJ5zBhayAAA\n93FcIOfkSJ9/bh0AALiF4wI5JkYaNYpuawCAuzgukCXGkQEA7uPIQGYcGQDgNo7aGKTW8ePSV74i\nHTvGBiEAAPtx/cYgtZKSpNRU6eOPTVcCAEBoODKQJcaRAQDu4thAZhwZAOAmjg1kttAEALiJIyd1\nSZLfL/XqJR04IPXuHdJLAwDQIVEzqUuSYmPZIAQA4B6ODWSJiV0AAPdoMZALCwuVlZWlzMxMLV26\ntMlziouLNXLkSA0bNkz5+fmhrrFZTOwCALhF0DFkv9+vIUOGqKioSKmpqcrLy9OKFSuUnZ1dd051\ndbXGjh2rt99+W16vV1VVVep9yaBuOMaQJWtjkPR0a6OQ2NiQXx4AgHYJ+Rjyli1blJGRofT0dMXH\nx2vq1KlavXp1o3N+/etf684775TX65Wky8I4nHr1kgYMYIMQAIDzBd14sqKiQmlpaXWfvV6vSkpK\nGp1TWlqq8+fP68Ybb1RNTY0efPBBfec737nsWosWLap7n5+fH7Ku7dpx5BEjQnI5AADarLi4WMXF\nxR26RtBA9ng8LV7g/Pnz2rZtm959912dPn1a1113ncaMGaPMzMxG5zUM5FCqHUeeNy8slwcAoEWX\nNjQXL17c5msE7bJOTU2Vz+er++zz+eq6pmulpaXplltuUdeuXZWcnKyvf/3r+uijj9pcSHuxQQgA\nwA2CBnJubq5KS0tVVlamc+fOadWqVSooKGh0zm233ab169fL7/fr9OnTKikpUU5OTliLbmjoUOnI\nEeno0YjdEgCAkAvaZR0XF6dly5ZpwoQJ8vv9mj17trKzs7V8+XJJ0rx585SVlaWJEydq+PDhiomJ\n0dy5cyMayLGxUl6eVFIiTZoUsdsCABBSjt06s6FHH5U8HuknPwnbLQAAaLWo2jqzIcaRAQBO54oW\n8tGj0pVXWhuFsEEIAMC0qG0hJydL/fpJu3ebrgQAgPZxRSBLdFsDAJzNNYHMgyYAAE7mmkCmhQwA\ncDJXTOqSJL9fSkqSysqsh04AAGBK1E7qkhpvEAIAgNO4JpAlxpEBAM7lqkBmHBkA4FSuGUOWpKoq\nafBgNggBAJgV1WPIktS7t5SSIu3ZY7oSAADaxlWBLDGODABwJtcFMuPIAAAncl0gjx0rffCB6SoA\nAGgb1wXysGFSTY108KDpSgAAaD3XBXJMjHTzzdI775iuBACA1nNdIEvSLbcQyAAAZ3HVOuRaf/ub\nNHSo9PnnrEcGAERe1K9DrtW/v5SaKn34oelKAABoHVcGsmR1W//xj6arAACgdVwbyOPHE8gAAOdw\n5RiyJJ0+bW2jefiw1KNHRG8NAIhyjCE30K2bNGqUVFxsuhIAAFrm2kCWWP4EAHAO1wcy48gAACdw\ndSCPGGE9G/nQIdOVAAAQnKsDmW00AQBO4epAllj+BABwBtcue6pVXm51XX/2GdtoAgAig2VPTfB6\nrfXI27ebrgQAgOa5PpAlZlsDAOwvagKZiV0AADtz/RiyJJ06ZXVbHzkide9urAwAQJRgDLkZCQlS\nXp60bp3pSgAAaFpUBLJkLX+i2xoAYFdRE8hM7AIA2FnUBPLIkdZa5PJy05UAAHC5qAnk2Fjpppvo\ntgYA2FPUBLJEtzUAwL6iYtlTrUOHpK9+VaqstB48AQBAOLDsqQUDB0rJydJf/mK6EgAAGouqQJZ4\n+hMAwJ6iLpDZRhMAYEdRNYYsSTU1Uv/+1jhyQoLpagAAbsQYciv06CFde630/vumKwEAoF7UBbJE\ntzUAwH6iMpDHj5feftt0FQAA1IvKQM7NlY4fl/buNV0JAACWqAzk2Fjpzjul3/zGdCUAAFiiMpAl\n6a67pNdfN10FAACWqA3ksWOlqiq6rQEA9hC1gUy3NQDATqI2kCW6rQEA9hHVgUy3NQDALqI6kOm2\nBgDYRVQHskS3NQDAHqI+kOm2BgDYQYuBXFhYqKysLGVmZmrp0qXNnrd161bFxcXpd7/7XUgLDDe6\nrQEAdhA0kP1+v+6//34VFhZq9+7dWrFihfbs2dPkeQ899JAmTpxom8cstsXdd9NtDQAwK2ggb9my\nRRkZGUpPT1d8fLymTp2q1atXX3be008/rSlTpqhPnz5hKzSc6LYGAJgWF+yHFRUVSktLq/vs9XpV\nUlJy2TmrV6/We++9p61bt8rj8TR5rUWLFtW9z8/PV35+fvurDrGYmPpu60cfNV0NAMBpiouLVVxc\n3KFrBA3k5sK1oYULF2rJkiXyeDwKBALNdlk3DGQ7uvtu6fvfJ5ABAG13aUNz8eLFbb5G0EBOTU2V\nz+er++zz+eT1ehud8+GHH2rq1KmSpKqqKr311luKj49XQUFBm4sxqWG39ZAhpqsBAEQbTyDILKwL\nFy5oyJAhevfddzVgwACNGjVKK1asUHZ2dpPnz5w5U7feeqsmT57c+CZ/bz3b3QMPSCkptJIBAB3T\nntwLOqkrLi5Oy5Yt04QJE5STk6N77rlH2dnZWr58uZYvX96hYu2I2dYAAFOCtpBDdhOHtJAvXpS8\nXulPf6LbGgDQfiFvIUebmBhpyhQ2CQEARB6BfAn2tgYAmEAgX4JNQgAAJhDIl6DbGgBgAoHcBLqt\nAQCRRiA3gW5rAECkEchNoNsaABBpBHIz6LYGAEQSgdyMsWOlEyekbdtMVwIAiAYEcjNiYqT77pN+\n9SvTlQAAogFbZwZx5IiUnS2VlUk9e5quBgDgFGydGWL9+km33CK98orpSgAAbkcgt+C737W6rR3Y\nwAcAOAiB3IL8fMnvl9avN10JAMDNCOQWeDxWK/mXvzRdCQDAzZjU1QrHj0uDBkn79kl9+5quBgBg\nd0zqCpOkJGnyZOmFF0xXAgBwK1rIrbR1q3TPPdL+/dYaZQAAmkMLOYzy8qRevaS33zZdCQDAjQjk\nNqhdAgUAQKjRZd0Gp05JAwdK27dbrwAANIUu6zBLSJC+/W3p2WdNVwIAcBtayG20a5c0frz06adS\nfLzpagAAdkQLOQKGDpUyM6XVq01XAgBwEwK5HebPZ+cuAEBo0WXdDufOSWlp0vvvS0OGmK4GAGA3\ndFlHSKdO0qxZ0vLlpisBALgFLeR2KiuTcnMln0/q2tV0NQAAO6GFHEHp6dLo0dKqVaYrAQC4AYHc\nAezcBQAIFQK5AyZNkiorpU2bTFcCAHA6ArkDYmOlf/1XadEi05UAAJyOQO6gf/onae9eaeNG05UA\nAJyMQO6gTp2kf/s3WskAgI4hkENgxgyptFTasMF0JQAApyKQQ6C2lbx4selKAABORSCHyPTptJIB\nAO1HIIcIY8kAgI4gkENoxgxp/35p/XrTlQAAnIZADqH4eOnRR2klAwDajkAOsenTpU8+kT74wHQl\nAAAnIZBDjFYyAKA9COQw+M53rMczvv++6UoAAE5BIIcBrWQAQFsRyGEybZr06afSunWmKwEAOAGB\nHCbx8dKPfkQrGQDQOgRyGE2bJvl8UnGx6UoAAHZHIIdRXJw1lswe1wCAlhDIYTZtmlReLr39tulK\nAAB2RiCHWVyc9POfS/ffL505Y7oaAIBdEcgR8A//IA0fLi1ZYroSAIBdeQKBQCDsN/F4FIHb2JrP\nJ40cKW3aJGVmmq4GABBO7ck9WsgRkpYmPfKI9L3vSVH+/yYAgCYQyBG0YIH02WfSqlWmKwEA2A1d\n1hG2caM0ZYq0Z4/Us6fpagAA4dCe3COQDbjvPqlzZ+npp01XAgAIBwLZIY4dk3JypDfflHJzTVcD\nAAg1JnU5RK9e0tKl0ne/K/n9pqsBANhBi4FcWFiorKwsZWZmaunSpZf9/LXXXtOIESM0fPhwjR07\nVjt27AhLoW4zfbqUkCD98pemKwEA2EHQLmu/368hQ4aoqKhIqampysvL04oVK5SdnV13zqZNm5ST\nk6OePXuqsLBQixYt0ubNmxvfhC7rJu3eLX3jG9KOHVL//qarAQCESsi7rLds2aKMjAylp6crPj5e\nU6dO1erVqxudc91116nn36cLjx49WuXl5W0sO3rl5Ehz5kg//KHpSgAApsUF+2FFRYXS0tLqPnu9\nXpWUlDR7/nPPPadJkyY1+bNFDR4MnJ+fr/z8/LZV6lI/+pE0dKj0zjvS+PGmqwEAtEdxcbGKO/is\n3aCB7PF4Wn2hP/3pT3r++ee1YcOGJn/eMJBRr1s3a/nT979vdV136WK6IgBAW13a0FzcjufuBu2y\nTk1Nlc/nq/vs8/nk9XovO2/Hjh2aO3eu1qxZo6SkpDYXEe2+9S3r4ROPPGK6EgCAKUEDOTc3V6Wl\npSorK9O5c+e0atUqFRQUNDrn0KFDmjx5sl599VVlZGSEtVg3e+YZ6Xe/ky4ZogcARImgXdZxcXFa\ntmyZJkyYIL/fr9mzZys7O1vLly+XJM2bN0+PPfaYjh8/rvnz50uS4uPjtWXLlvBX7jK9ekkrV0q3\n3Wa1lgcNMl0RACCS2KnLZp58Uvr1r6X1663tNQEAzsPWmS4QCEiTJ1uPa/yv/zJdDQCgPdg60wU8\nHun55619rn/7W9PVAAAihRayTf35z9KkSdKmTdLgwaarAQC0BS1kF8nNlX78Y+muu6QzZ0xXAwAI\nN1rINhYISPfcI/XuLf33f5uuBgDQWrSQXcbjkZ59VvrjH6VVq0xXAwAIJ1rIDrB9u3TLLdKGDdJV\nV5muBgDQElrILjVypPSTn1jjyV9+aboaAEA40EJ2iEBAmjZNunDB2jgkNtZ0RQCA5tBCdjGPR3ru\nOemzz6T777cCGgDgHgSyg3TpYj18YutW6znKAAD3CPpwCdjPFVdIb70l3XCDlJws/eAHpisCAIQC\ngexAffpYS6FqQ3n6dNMVAQA6ikB2qIEDpbfflm68UUpMlC55TDUAwGEYQ3awrCzpjTekOXOk4mLT\n1QAAOoJAdrjcXGnlSunuu6UPPzRdDQCgvQhkFxg3TnrmGelb35L27jVdDQCgPRhDdonbb5eOH7e2\n2Fy/XkpLM10RAKAtCGQXmTlTOnFC+vrXpbVrpexs0xUBAFqLQHaZhQulXr2k/Hzpt7+1lkYBAOyP\nMWQXmj5devVV6c47pd/8xnQ1AIDWoIXsUuPHS++8Y030Ki9nRy8AsDue9uRyPp/0zW9KN98s/ed/\n8pQoAIiE9uQegRwFqqulO+6wttl85RWpa1fTFQGAu/H4RTQpMVEqLJQ6dbK6so8eNV0RAOBSBHKU\n6NzZmuh1/fXS2LHSwYOmKwIANEQgR5GYGGnJEmnBAmnMGOl//9d0RQCAWowhR6ktW6R//Edr280n\nn5QSEkxXBADuwRgyWm3UKGn7dunsWemrX7XeAwDMIZCjWI8e0ksvST/+sTRhgrUs6uJF01UBQHSi\nyxqSrEle06ZZXdcvvST172+6IgBwLrqs0W6DBknr1klf+5p07bXSm2+arggAogstZFxm/XqrtfzN\nb0qPPy4lJZmuCACchRYyQuL666W//MUaT87Olp59VvL7TVcFAO5GCxlBbd8uPfCA9OWX0tNPW13a\nAIDg2MsaYREISCtWSP/yL9KNN0pLl0oDBpiuCgDsiy5rhIXHY20i8te/Smlp0vDhViifPWu6MgBw\nDwIZrda9uzXJa/NmacMGadgw6Y03rBY0AKBj6LJGuxUWSv/8z9ZTpB55xHrEYwz/iwcAjCEj8i5e\ntNYs/8d/SCdPSg8/bHVvx8ebrgwAzCGQYUwgIL33ntWlfeCANQFs1iypSxfTlQFA5DGpC8Z4PNJN\nN0nvviutXGl1Z195pfSzn0k1NaarAwD7I5ARcmPGSGvWWKG8bZu1LecDD0gffWS6MgCwLwIZYTN8\nuLV++cMPpeRk6dZbpbw86Ve/kk6cMF0dANgLY8iIGL9feucd6bnnrNfbb5dmz7a26vR4TFcHAKHD\npC44xmefSa+8Iv3P/1gztWfPlu6+W0pPN10ZAHQcgQzHCQSkTZuk55+XVq+2dgK74w5p8mQpJ4eW\nMwBnIpDhaBcuWI9+/L//s44uXaxgvuMOa+yZTUcAOAWBDNcIBKzJYLXhfPKkdNtt0sSJ0je+IV1x\nhekKAaB5BDJc669/lX7/e6moSCopkYYOtdY9jxtnPRKya1fTFQJAPQIZUeHMGWvc+b33rI1IduyQ\nRo2ywnncOCk319pfGwBMIZARlWpqpA8+qA/offukq6+2Qrr2yMhgDBpA5BDIgKRTp6wdwkpKpC1b\nrOPECWtiWG1Ajxwpeb3M4gYQHgQy0IzKSmnrViucS0qsbTzPnLGe6Xzp0bu36WoBOB2BDLTB559L\nu3ZJH3/c+OjSxQrm7Gyrq7v2GDSIsWkArUMgAx0UCEgVFdLOndLevdL+/fWHzycNGHB5SA8caG1o\n0rcvXeAALAQyEEbnz0uffmqF84ED1usnn1hB7fNZk8u8Xiuca0M6Lc36s/79pX79pD59pPh40/8k\nAMKNQI5ixcXFys/PN12G6wX7nk+flsrLrXA+dKg+qMvLrTHsI0esbvLERCucGx4pKdYTsXr3to7a\n94mJ0Tc7nL/L4cd3HH7tyb24lk4oLCzUwoUL5ff7NWfOHD300EOXnbNgwQK99dZb6tatm1588UWN\nHDmyTUWg4/gXLDKCfc/duklXXWUdzfH7paNHrXBueBw+bHWTHz0qVVXVv9bUSElJVkAnJ1vvExOt\no2fP+vcN/6xHj/qje3cpNjY830W48Hc5/PiO7SloIPv9ft1///0qKipSamqq8vLyVFBQoOzs7Lpz\n1q5dq/3796u0tFQlJSWaP3++Nm/eHPbCASeKjbXGmvv2tZ4X3ZILF6Rjx+oD+sQJqbq6/qistMa6\nG/5ZTU39ceqUtYtZw5Du0UNKSKg/unVr+n3XrtYEt65dG79v+Nqli9S5sxTX4v/aA2hJ0H+NtmzZ\nooyMDKX//Zl4U6dO1erVqxsF8po1azRjxgxJ0ujRo1VdXa3KykqlpKSEr2ogSsTF1Qd4e1y8aIVy\nw5CuqbG610+dqn+tff/559Y4+alT0pdfWseZM02///JL6exZ65CsYG7u6NTJGjvv1Ony97Wf4+Ks\n161bpXPn6j/XHnFxTR+xsY3f136ufd/cERPT8uul75s6PJ76Vyb1oSOCBnJFRYXS0tLqPnu9XpWU\nlLR4Tnl5+WWB7OFvatgtXrzYdAlRge+5abUhHQobN/Idhxt/j+0naCC3NkQvHbi+9PeY0AUAQHBB\n52+mpqbK5/PVffb5fPJ6vUHPKS8vV2pqaojLBADA3YIGcm5urkpLS1VWVqZz585p1apVKigoaHRO\nQUGBXn75ZUnS5s2blZiYyPgxAABtFLTLOi4uTsuWLdOECRPk9/s1e/ZsZWdna/ny5ZKkefPmadKk\nSVq7dq0yMjKUkJCgF154ISKFAwDgJmHfGKQ165jRfj6fT9OnT9dnn30mj8ej++67TwsWLDBdliv5\n/X7l5ubK6/XqjTfeMF2OK1VXV2vOnDnatWuXPB6Pnn/+eY0ZM8Z0Wa7yxBNP6NVXX1VMTIyuvvpq\nvfDCC+rcubPpshxt1qxZ+sMf/qC+fftq586dkqRjx47pnnvu0aeffqr09HS9/vrrSkxMDHqdsO4B\nVLuOubCwULt379aKFSu0Z8+ecN4y6sTHx+vJJ5/Url27tHnzZv3iF7/gOw6Tp556Sjk5OawYCKMH\nH3xQkyZN0p49e7Rjx45GSyzRcWVlZXr22We1bds27dy5U36/XytXrjRdluPNnDlThYWFjf5syZIl\nGj9+vPbt26ebbrpJS5YsafE6YQ3khuuY4+Pj69YxI3T69euna665RpLUvXt3ZWdn6/Dhw4arcp/y\n8nKtXbtWc+bMYdVAmJw4cUIffPCBZs2aJckaMuvZs6fhqtzliiuuUHx8vE6fPq0LFy7o9OnTTMIN\ngRtuuEFJSUmN/qzhHh0zZszQ73//+xavE9ZAbmqNckVFRThvGdXKysq0fft2jR492nQprvODH/xA\nP/vZzxRf7yD6AAACOUlEQVQTbRtLR9DBgwfVp08fzZw5U9dee63mzp2r06dPmy7LVXr16qUf/vCH\nGjhwoAYMGKDExETdfPPNpstypYYbZKWkpKiysrLF3wnrf13o2oucL774QlOmTNFTTz2l7t27my7H\nVd5880317dtXI0eOpHUcRhcuXNC2bdv0ve99T9u2bVNCQkKruvnQegcOHNDPf/5zlZWV6fDhw/ri\niy/02muvmS7L9TweT6vyMKyB3Jp1zOi48+fP684779S0adN0++23my7HdTZu3Kg1a9Zo0KBBuvfe\ne/Xee+9p+vTppstyHa/XK6/Xq7y8PEnSlClTtG3bNsNVucuf//xnfe1rX1NycrLi4uI0efJkbdy4\n0XRZrpSSkqIjR45Ikv72t7+pbyv2vw1rILdmHTM6JhAIaPbs2crJydHChQtNl+NKjz/+uHw+nw4e\nPKiVK1dq3LhxdWvvETr9+vVTWlqa9u3bJ0kqKirS0KFDDVflLllZWdq8ebO+/PJLBQIBFRUVKScn\nx3RZrlRQUKCXXnpJkvTSSy+1qrEU1me0NLeOGaGzYcMGvfrqqxo+fHjdYy+feOIJTZw40XBl7sVQ\nTPg8/fTT+va3v61z585p8ODB7GsQYiNGjND06dOVm5urmJgYXXvttbrvvvtMl+V49957r9atW6eq\nqiqlpaXpscce08MPP6y7775bzz33XN2yp5aEfR0yAABoGVNGAQCwAQIZAAAbIJABALABAhkAABsg\nkAEAsAECGQAAG/h/WfbWX4r4YY4AAAAASUVORK5CYII=\n"
}
],
"prompt_number": 133
},
{
"cell_type": "markdown",
"metadata": {},
"source": "Scipy has a numerical integration routine **quad** (since sometimes numerical integration is called *quadrature*), that we can use for this:"
},
{
"cell_type": "code",
"collapsed": false,
"input": "from scipy.integrate import quad\nquad(f,0,inf)",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 134,
"text": "(1.0000000000000002, 5.842606742906004e-11)"
}
],
"prompt_number": 134
},
{
"cell_type": "markdown",
"metadata": {},
"source": "There are also 2d and 3d numerical integrators in Scipy. [See the docs](http://docs.scipy.org/doc/scipy/reference/integrate.html) for more information."
},
{
"cell_type": "markdown",
"metadata": {},
"source": "## Fast Fourier Transform and Signal Processing\n"
},
{
"cell_type": "markdown",
"metadata": {},
"source": "Very often we want to use FFT techniques to help obtain the signal from noisy data. Scipy has several different options for this."
},
{
"cell_type": "code",
"collapsed": false,
"input": "from scipy.fftpack import fft,fftfreq\n\nnpts = 4000\nnplot = npts/10\nt = linspace(0,120,npts)\ndef acc(t): return 10*sin(2*pi*2.0*t) + 5*sin(2*pi*8.0*t) + 2*rand(npts)\n\nsignal = acc(t)\n\nFFT = abs(fft(signal))\nfreqs = fftfreq(npts, t[1]-t[0])\n\nsubplot(211)\nplot(t[:nplot], signal[:nplot])\nsubplot(212)\nplot(freqs,20*log10(FFT),',')\nshow()",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "display_data",
"png": "iVBORw0KGgoAAAANSUhEUgAAAekAAAFtCAYAAAAj75JZAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzsfWl0XcWV7neteZ6swbJsCw/CIx4CgRAIAiMHksZhCg9I\nghdTk9C8Tjp0BzqjSR7YNP1WQkh43StA4jRpphAbhwYHO0RASBwHbMDYxjbGsiVZg615Hu/7sbN9\njq7uPUPVlnVk1beWliRLLlWdU7W//e29qyoUDofDMDAwMDAwMAgcpox3BwwMDAwMDAyiw5C0gYGB\ngYFBQGFI2sDAwMDAIKAwJG1gYGBgYBBQGJI2MDAwMDAIKAxJGxgYGBgYBBRaJF1dXY2LL74YixYt\nwuLFi/HjH/8YANDc3IyKigqUlZVh1apVaG1tFemsgYGBgYHBZEJIZ590fX096uvrsWzZMnR2duJj\nH/sYNm3ahJ///OeYOnUqvvGNb+DBBx9ES0sL1q9fL9lvAwMDAwOD0x5aSrqoqAjLli0DAKSnp2PB\nggWora3F5s2bsWbNGgDAmjVrsGnTJv2eGhgYGBgYTDJoKWk7qqqqcNFFF+H999/HzJkz0dLSAgAI\nh8PIzc09+T0AhEIhiT9pYGBgYGAwoeCXckUKxzo7O3HNNdfg4YcfRkZGxoifhUKhqKQcDofNh4eP\n733ve+Peh4nwYZ6TeVbmOZnnFPQPFWiT9MDAAK655hp86UtfwpVXXgkAKCwsRH19PQCgrq4OBQUF\nun/GwMDAwMBg0kGLpMPhMG699VYsXLgQX/va107+++rVq7FhwwYAwIYNG06St4GBgYGBgYF3xOv8\n5zfffBNPPvkkzjrrLCxfvhwAsG7dOtx777247rrr8Pjjj6O0tBTPPvusSGcnI8rLy8e7CxMC5jl5\nh3lW3mCekzeY5zS2ECsc8/VHQyHl+LyBgYGBgcFEhAr3mRPHDAwMDAwMAgpD0gYGBgYGBgGFIWkD\nAwMDA4OAwpC0gYGBgYFBQGFI2sDAwMDAIKAwJG1gYGBgYBBQGJI2MDAwMDAIKAxJGxgYGBgYBBSG\npA0MDAwMDAIKQ9IGBgYGBgYBhSFpAwMDDAwA27ePdy8MDAwiYUjawMAAO3cCd9wx3r0wMDCIhBZJ\n33LLLSgsLMSSJUtO/tvatWtRUlKC5cuXY/ny5diyZYt2J08XvPMOcPz4ePfCwGA0uruBnp7x7oWB\ngUEktEj65ptvHkXCoVAIX//617Fr1y7s2rULl112mVYHTyesWwf89rfj3QsDg9EwJO0djY3AwYPj\n3QuDyQItkr7wwguRk5Mz6t/NNZTR0dVFH6crHnsM6OgY714EH/39wBe+MN69GInubvowcMcvfgH8\n27/pt7N9O7B7t347Bqc3xiQn/cgjj2Dp0qW49dZb0draOhZ/YkJCkqSbm8nYBwnr1gH79493L4KP\nY8eAp58GguTLdnUZJe0VVVVAb69+O089BWzcqN+OwemNeOkGv/KVr+C73/0uAOA73/kO7r77bjz+\n+OOjfm/t2rUnvy4vL0d5eTneeANobQWuuEK6V8GAJEnffjtw443ANdfotfP73wPnnw+kpOj3qb39\n9I4USKG2FhgeBgYHgYSE8e4NgcPd4TAQCum11dYGbNumPze7usgZnTFDrx1pHDkCpKbqt9PbS+M7\nXfHii8B55wFTp453T8YPlZWVqKys1GpDnKQLCgpOfn3bbbfhihiMaydpxquvAvX1pzdJd3bKtFVV\nRaSoi69/HbjnHiJ8HYTDZJylxnc649gx+tzbGyySBqhPug7bjh0UVdEl6d/8Bti8GXjuOb12pFFV\nBcyerd9Ob69c9OKpp4Bp04Dycv22amqA9HQgO1uvnYceAr76VeDqq/X79K//Ctx2GzBnjn5bpxIs\nQBn33Xef7zbEw911dXUnv964ceOIym83tLXRhwR+/3vg5Zdl2pKCpJKurZVZ4L295PHqoq+P9toG\niaTDYfLkBwbGuycjUVtLnyVCplJgkpaYUydO0HzQRWcnUF2t3w5A4zpxQr+dcFgu3N3bCzQ16bcD\nUOTiL3+Raesb3yDS10VPD9DQoN8OAPzud3LFeh0dwUo1uUGLpG+44Qacf/752L9/P2bMmIEnnngC\n99xzD8466ywsXboUr732Gn74wx96bk+SpF96iYg6SJBS0v39VGEqYVB7esiZGRzUa4ffm5QT8vbb\nFBLWQX8/Ga76ev3+DA8DN98ss7iDTNISxWPHj8uMrbubVJ0EfvUrIh9dnDhB/ZIiaalwd0eH3Nrb\nt09mHvT0yKw9QC5KNzwMLF9O5wLo4ktfkolmukEr3P1UFHfrlltuUW6vvZ1y0hKoqwNyc2XakkJn\np8xCqqsjspBS0unpVGl6wQXq7fBklVLSn/scsHUrsGCBehv8fGpr9fOara1U1fvTn+rnI+3hbh3U\n1gJ33SVTfMTzMkhKurubjPzgIBCvmZg7cQJoadHvU1UVMGWKzPj6+mRJWorE9u+XcUIklXR7u8z4\nKiuBQ4dkyPX554FbbgEuvli/LScE6sQxSSV97FiwqlWHhmjiS0w0SSXW2wvMn6/v8Uoq6cFBckR0\n35+dpHXBxlTC0HN/dA19bS2waRPw/vv6fZIMd0sq6aEhGUPf0iJjmKuqgDPOCKaSlrAtR4/SHJAi\naQklLVnv8sQT9Fl3fENDND4JRe6GQJF0e7scSdfVyUy0b3wD2LBBvx02ghIkxkZeSklnZekThqSS\nbmggj173/Y0FSUtEemprKXohNT6J/KFkuFtKSUu+v9ZWGZI+coScWkmS1k3rAHIk/cEH9FnKyZJw\nsHp7qa5E4gyGV18Fli3Tn5/8rN9+W79PbggUSQdRSR8+DPz85/rtMDlLLKSaGiAxUX98Q0OkWtPT\n9fdcSyppqUiBpJFnBa2rpMNhmptz5uiPr7sbKC4Gnn1Wrx1uCwiekgZk8tJSSrqxEZg1S46kh4dl\nyEcqJ/3BB7TjIEhKWlIAdHcDBQX64+O+TEol3dFB5KGDzk76kJhoXV3A669beUSddqZMkSOx2bP1\nDWpfH5CcDCQl6ZO05EJioxwkkpYKd7e1AXFxtHdUgqSXLJEZX3c35X2lctL9/fpFdt3dQGamnJMl\nQdI9PUBOjhxJAzIhb0klvWiR/jwYHib70tCgPw9YAEiMTypy2NlJNri6euxPWQwUSbe1kaHQXUy8\nC0zC4HR2AqWl+sU5XV1Afr5cTnruXP3x9fZaJK07advaqFDvdFXSUuHuhgagqIieu8T4srNlTp7r\n7ibHQaq6G9CfU93dwLx5MkpaKtzd20vPXIqkc3KCRdJHjlCxpu742LZMmaLfLykBEA7TWsnK0h9f\nRwfNg3nzxv4c98CQ9OAgGZ1p0/RD3seOyYVsuroohyGhpAsK5EhszhyZwqrkZAqdSyjp6dODp6RL\nSoKlpLu6KL0gQdKsNMNh/ehTVxeRtISCam6m8emSdE8PUFYmF+7u7tbfaiitpIuL9Ul6YICetYRt\n6ewkMSGx9lJSyCGVKkrVtS19fWTrJOZmZyeQkUE7Pca6QDkwJN3RQYPOztYn6bo6Ur9SSloiNMlG\nsLdX36C2t5MzI6WkJUi6rY36JOWESDhZPT0Ucait1Q+5tbTQgtRV0t3d1I4USaem0vuTUK15efpK\nuq0NSEujtSwxvrlzrciYDlpa6LhT3dBkTw85RoOD+utYiqR5TFI529xcOZIuLNQvHmtrozmu++7Y\n3kmsvc5OcrYlopBuCAxJt7XR5M/K0jeEx45RvkDC2+3sJOMlQdLp6WTAdA1hVxf1KUjh7vZ2MjhS\n4XyJbS49PRS9iIvTd/yam2lOSSjptDS5cHdKisz7Y5LWnVPHj5MSk+pTfr7+euEtPEVF+iFvPjZV\nQo1JknRysszaY9sSJCUtZVsk10tHxyQk6fZ2ImgpJS1F0nYFrNtOWhp96E42zh9K5Y2klPT06TJK\nuqZGpvqZF+XUqfpHQjJJB1FJSxT+8ZzSJekTJ6gdqfFJqDomsbw8fZLmOaU7Ps6PFhfrHw3a0UFR\nLCklLeGs8XPKzdV3Qti26I7PKGlNtLURSWdlyaie6dP1J1o4LKuk09LoxeoSmaSSTkmRy0lLKWkp\nJ8tuUHUXUnMzOQ66StpO0hJKM2jh7uPHiaQljFdPDxl53Xne0kJ55IwMGSXN0Sed+dnfTykdCRLj\nPPLAgH7OvatLNtwtMc+lbItk5JBz0pOOpDncrUvSUiGbvj4KlUrk1ySVtFSRj3R1d3GxvgMyNCSn\n6iTDWy0tskpa18hzWxLjGxoi0sjJ0X/mHBGTGp8EYbS20tgyM4OjpHntpabqO0ZczyMhANhZC1Iq\nJohKelKHuyVy0lIkJlmJaydpnYXENzplZgarcIyL2SRC+SkpZLyCZCikctKS4e6eHplwN/dJolKV\n+yQVKZCopG5poTSaBEnbc9ISJC3xnJikdQXA0BD1RWKLmeQ8550jUoVjUkp60pG0tJLOydGvwOzs\npIkv9VI53K2zkLq6aPKnpARrC1ZbG1Vy6obcxqqwSjd/GESStqtynfnZ3U3PPCVFX9XZ1X1QlDSH\nu6WUtIQakyQMKSXN6yUlRTbcrdsW7xzp7vZ/hOrevcDtt9PX0jnpCRHuvuWWW1BYWDjizujm5mZU\nVFSgrKwMq1atQqtHWSxZOCZl6NlbCpKSthvUIIW729vJCKoYipYW4K236OuxIGldtdLTQ2mPadNk\nojxB24LF7UjMKamc+8AAbZmSSDVJhrullbTq2rMfoGEnaR0BwLYlOTlYqaa2Nnp/Kv366CPrnm3J\n6MWEUdI333wztmzZMuLf1q9fj4qKChw4cAArV67E+vXrPbXFSjozU5+k7USmspBeeonU01iEu1UW\nUksLcNNNVjtsBPv79Q7nlwp3c4EdbzHzO76tW4FvfYu+thuKoIS7m5utwiPdAzGkw90S47OHuyWU\ntJS656LGgQG9eS4Z7g6Cku7qoqM7OfUlFe62R+mCpKRZwKnYzvZ2qzBPKrIGTKCc9IUXXoicnJwR\n/7Z582asWbMGALBmzRps2rTJU1usxCQmiF2N+fW8hoaAv/s76/5SKcLQUdLHjtGVhIBFYqGQ/mST\nIun+fupPYqKaku7qso6SDOI+YjYSU6bQHNVR05JOiNQWLOkUioQTwmPjee73/dmfR2urLEmPt5Lu\n6SGCPnqUvpdW0mxXdA4A0nlOHR3A5s3W97zzR2V8HR0WSU9UJa15lfpoNDQ0oLCwEABQWFiIhhjH\nzaxdu/bk1+Xl5ejoKEdmpsygdTzCtjZLResq6YEB2mbBfVJV0l1dNNl6e612AMsJSU313zdAz1C0\nt9Pl8OecM7JPquNrbLS+DlpOmhckQJ/9qs1//3f6/M//HMwTx8Yi3C2l7gHrWaWkeP//554LPPMM\nHSva3k43V6luwXriCeALX6B7BQYHraMlpUjabzv8XA8fpm2BHR10aIhuTprtZlwcjXVggMaqAh0H\n+Z13KLK2ejV9395O7y4jQ01J8/3YUtvngJE5aafIb2VlJSorK7X+ljhJ2xEKhRAKhaL+zE7SAPDI\nI3qeyXPPAddcY900paqkuTCIb9JSJenjx4GlS+nA+oQEq08qFbS88I4ftxYSoB910Nkn/dprwP33\nA9u3jyRplUgBK2l2joKWk7aTtAohVldbz1eKxCTbkg536yjNgQHrNq5IkvaDpibg3Xctks7MVCfp\nb32LnNHZs6kvoZD+/OQb6FTmJv/dw4fps064OxwG/vxn4PzzLSUNWOPTJWmV59TTY0XWAIsQ09P9\nV3jz+25pka+o98JX5eXlKC8vP/n9fffd5/tviVd3FxYWov5v58DV1dWhoKAg5u/ajTlPNFWD86Uv\nkRoLh0cqA78ThEMjTNL28I8ftLXRoRx//KPVXkaG2qS1k7R9IekqH3u4W8VQ7N8/klgBdSXd32/d\niSudF9MlMZ6bgFpoub3dOvFMsnDMPj6dcDfP8yAo6WuvBf7wB4vsAbVn1dsL7NtHX/P7Uw13sxNp\nV/PjGe7m3//oI/qsE+4+fhy4+GJrHes4RoAVgtcl6RMnqA4hHLYIUTUnDZBdl1bSEyInHQ2rV6/G\nhg0bAAAbNmzAlVdeGfN3FywADh2ir3UGzfv7+EUkJVHIRldJ64S7eQwvvECfeaKptMUTs7FxtJL2\nO75w2LoViotgVIx8by/l+rhPdsdB1QlpbAxm4Ziukm5rs5SB9GEmEuHutjbK2aqSdGWlla7QzUnv\n30/ObbRwtx/YSdpe76KyXjo7aXy8XlT7FNm/pCS1uRmppO2FVX6jWE1NtPa7ukY+c5VnVV0NrFhB\nX+usvd5esuktLdaBUlzvIkHSEy0nrUXSN9xwA84//3zs378fM2bMwM9//nPce++92Lp1K8rKyvDq\nq6/i3nvvjfn/m5uBl1+mr3WUNIfompv1CSNSSTOxqni7aWlE0uwNBkFJ794NXHIJfa1TOMbP44MP\noufJ/SAynB+EnPTRo6MdSEBtfkYjadXxHTtmEaJUuLu1lYy8arj7wQeB3/5Wv0/hMBn69vaxIWnV\nIq1wOHhKOi7OImneGaMS7mZ719Q0eh37Hd+BA9Te8LC+kgbomdujWCqpNA6PM0lLVnefqn3SWjnp\np556Kuq/b9u2zdP/7+sDtmwB7rrLMoSDg2pbEoDRJC2Rk87KohzZ8DD1Ld7jE+vro20S771HBsdO\n0qok1thIf1/H2923zxqjTribf3//fmDGDL3FzcQQSdIqqu6RR6gO4N//Xe/0q1/8ghyQ//5vK1UB\nqDk07e2jSXp4WM1Q3HsvXd/47W9TP1TVWF0dHRTChS/Z2eoKo6PDcmjsTojf/GFzM/3/tjbLyAP+\n59TQEOW2Dxyg58wkPTioHsU6fny0klZ5Vl/+Ms1NndBrby/NAQ53c/Vzaqr/c8DtJK3rGH34ITk0\n7GTpknRjI603XnsqootPQmxupnbZBuvu4R8aUl97fjFuJ44NDdGief11evA6nkkkSetMNLuS5nA3\nF4r46VdfH42FT1DTzUlPmSKjpA8etIyn3VCoKOm4uNFKWjXcnZk5MnSu8pz+/Gfg618nxwjQC7l1\ndwPbtpGR51QFoK6km5qoLR0lHQ4Dr7xCypfHxluU/L6/r30NePRR+pqVtKrC6OwkAw3onSfO+cy2\nNj3C6OujPuTlkcOmY1vsqSYdxwEg2/Kf/0nj1Am99vUBM2fSM+rstMLdKm2xvYsmcFRIGiARoBPF\n4t8/fnxkFEvFcW9vB0pLZXLSH31Ea4arzVW3B/rFuJE0VzfOmUNGVeeYtVhKWoUwolV3A2qGIjmZ\nFk99PXmE8fHqJD1jhkxO+uBB+vv9/Xrh7t5eYP58uXB3aal+uPu114BPfMLax6xD0lxhynPTnpNW\nUdLDwzS3dHLuu3cDDQ2jw8EqkZDOTuA3v6GvWYklJZFK8Ls/tqNjJEmrOiHV1VZ/dEia53VZGc13\nVtK6qSbdcPfbb9Pnpia9cDf3o6CAbAKHu1XaklbSwEgnUsVxsCtpe7hbpU+8/U4iJ71hA/Dkk9Z6\nASYJSRcWUuhtcFA9fMALqaVFnzCam+lyDnt1N7fll6RZSdfU6IVsOjuBM84YSWLcJxWSBqx917wF\nS8WbX7iQvEtdD7yra/T4VIv17Ed36pJ0WhqpaYmcdEnJyC10KuN75RUyzJEkpjq+N98k0udwdyhE\n2wX9tsXh7nB45KUfKkqaTxyUIOmiInKQJZR0tHC33/fHR99GqjqVtZeURJGChgZyGlWfOd9lHS0n\n7de2fPghncwXSdIq4W6OHNrXnoookVTSmzfT2CYVSSclESEeOaIXPrAr6chwsIqSnjlzZLgb8P9i\nY5G0Lonpju/AAVrQTNI64e7i4ujRC1UlrVvd3d9PJMYkrZsXu+AC4K9/1duC1d9PDuiMGdb7U+3T\nrl3AypXWAQ2s6lTeX08P9enFF61wN6CmMjo6aIwnTugp6aNHqY6jvV0vbcVrr7CQiquSk9WjWJ2d\nNM8bG/WV9FtvkT1parJECte7+LkIiNdtbi6NLzNTfe92czM5aJFK2q9tGR4mR+1jH5MJdxcXjy4c\nUxlfR8doko6Pp+fl53jfo0epnqetbSRJS1SKu2HcSJq3IOTlAVVVo5WKn5BbrOpuVSU9YwYtTj7z\nl9tSJenaWhmS1g13t7SQMZ89mwyhbnX3tGnUpk7EARgd7k5NpYUUDvtbSHaSHhwkw5GQoK40Z88m\npaKzBYtDrfn5FM5NSLAIQ0VBTZs2Wmmq7nP/+McpshKpDPy8v8FBCpEvXEhGWicnXV0NLF5sVcPn\n59O/+53nPK8LCkjdZWbSv6sqaXaQJZT0JZeMDHerCBO7kj58WE/VNTdTWoCVtKpjVFdH/ZgxQybc\nPXMm2TsdJT08TP9/5syR1d2A/3leWQlUVExSJc0kzSQWF0ehDj/GuauLHlpk4Ziukm5sJG8c0Csc\nk1LS0fYk+5m0Bw8C8+ZZhzqw0UlIIILz4xj19tKYUlJogUqEu+vrrfGFQv7fX18fjS0ujoyOvbBK\npXBs1qzRhsKvauUFnZ9PESOemwkJ/i+O6O+nyFNkTlrVCZkzh7Z0cbgb8D/Puahu7lyq9B8YoP6o\nKuklS6g/9fUUruY+qYS7CwuJpO1REL8CoKuL7AGf5a+qpAcGyFk/55yRqk6lrUglrUvS8+ZZSlp1\nHR87Rnc+Z2eTDdXZcsokraukmQvy8y11r1qd39lJKav+fooYTRqSTk62KjDZCAL+B86FVVJbsFhJ\nNzaSN85t6YS7dSoUOzvJYGVk0P2odm/Xz3NqaqLxZGaODHdPmWKRhlfYnazqav1w96JF5Kzp5Ld5\nS1J2NjkOdq9ZhcRmzbKUtH0Llp+27CR99Kj17lSch/5+aidyi5JOpKCubmS426/CYCNaWkokrXMp\nBt/Z3dZGz93uIKuQWKSSVglz8rvPyaF1rErS9vSeXUkD+kqax6ca7p47V79wjFUqh86ZtFUco97e\nkUraTtJ+bAtXYeflWYV/qo6R3Z4fPTqJSJonrV1JA3IkrXqYCXtxg4N61d2SSjotjXKkBw5Y41PN\nk/MZxvZJ6zfkzW3l5tKk1VXSM2aQAdVpq6+PxpGdTXPKnjdS8eZLSogwWlrUlbQ93G1X0ir9sivp\nlhZrfCrpClbSNTVEtHZD71dJZ2RQDvHDD/Wqg/v6iJjb22WUdEEBqR4eG7flV0Glp1NbR4+ONPJ+\nCKO/n95TXp5F0klJ9DO/9k5SSTc1UbhbV+CwPcjJodxtbq4lAPiyDq+wO8j27Y9+7TmvvZISmk9t\nbfqOUXY2reNJQdL2nHRzsxxJR4Zs/E60gQGr4KSggIiD2xpvkv7kJ+l7HW83KWm0kgb8K0R7JMSu\npP0+cw75JiaSiqqpkVHSu3fTnAD0qrsjIz2qSnrxYqqm5rEBauPLzaU5XltL+WlAfRvPnDlUnc81\nANyWipKOJGnVquX8fDKudXX6Spr/v52k/Y6PSbqkhLYbspL2GzGyq9/mZiKgvDyrT6pKmiviVdoB\nRoe7VVOF/Myzs+lik1mzrJ/5fX8c7u7oILGkajuZpBMSqL0DB/SV9KQiaftEA/TD3cXF9FI7OtSV\nNO83zMgg4rHfDaJD0t3deluwuMr8ggvoe7uSViHWjAyrSlG1apkJPzdX75nbc9CzZ9O/6SrpnBzg\n/ffJsALqJJ2aSoa+v18vJ52ZSUUnpaX6Sjopifpy8KClNFXHV1xMX7PB4T75VZoZGeQwfPihXvVz\nX59VGd7TQ+9RpS27kgZGk7SKkj7nHKr0ZyPvl6RZSefmEiHu20d3F6j0ya6kh4bUI0YDA2SbuN6l\ntlY9dG4nscOHR5K0X8eot5fmwfTp9JxUC8fsEaJ58+gd6CrprKxJTNI6SppJMCODJpqOkk5Opkkx\nPDySpFUmGr9UQEZJL1tmjVOlLX7mmZnkgcfHW5NYRUnb358qsdpDbGecodcWG8LsbBmS5gMjAPV9\n0nwaVCgEfPe7FrEC6uPLyqL8r11J+3Ec7JXvxcUjSVpFSaenW06yrpLm+VlQQKFSQJ2kk5Mtp5uh\nMj/T04HzzqPnpqqk7eHuI0fIebNHelTWcW4ufa9KGK2ttFZycujdrVhBVfqA+jNnxypSSfvpF6+9\nmTOpBkdHSfP/nTePPqs6kfYoXU3NJCLp5GTKsQH6SjotzcrRqIZsePJzX6SUNDBasfoppOAtTvHx\nwJ495GFyWyrEmplJk5+NBKCWk+ZwN6DuGNlJmpW0PZzv1xDyQtq/3yJp1Zw0k3RionWvrmq4G6D7\nzp9/3vqZKklnZtL4mPD99sl+pGhxsVXZrdInDnezw6Cbk+Y1o+PM2NM4XCjJUFHSaWnAuefS92zk\n/V5GYndq29vptD67E6KipHntqYa7m5uJVOPigLvvBh57TD+9x3Np5kzrZyrh7pQUsk/2ehC/9sC+\nK4NJWiInPTAwuh7E7yl9fjDuOWkOb+nmpNPSgCuvBHbsUCcMNoKxSFo1PAJY4wuF/BlVvlGGjZ+d\nWFVz0lwlziQG+Fdjkd68TribxzZ7NjkiTIgqkRBW0kND+jnplBQKd0c6kCrhbgYbQcD/nLIr6dpa\n9XC3fb9oNCWtUjjGc0GVpIeHyfjx+DifrNKWnaQLC0cXjqnkpKdOpSpo3XA37yFnxQqoE0akkvY7\nn+z1Ow89ZO1L57ZU9qYzSeuGu5OTLaJXTRWy0w6MJmldJ4SfuUphnF9o3YLlhNLSUmRmZiIuLg4J\nCQnYsWPHiJ/zoAHyCCWU9AMP0KlMpaX076pKmifuWChpbsu+Z88J/HtTorhTKo4DhwCPHQM+8xnr\nZ37VmL3wD5AJd8+ePbKwKjVVXUkD6uFuPt6SlbT93akcZsJh/EjoKGlAvXDMPvf4NC3VPtn3sRYX\n60VBEhPJidFV0nbbIqGk2TZdc431LlVJOhSiNcP5aJU+RYaW7Urab06aHeJIqNrOWOFuVSUNqCtp\nfuaARdKqFfUsANieR3NsYz1LXYwZSYdCIVRWViKX3b0IRJK0hJJOSgJefdX6d9W8A58INZYk7bUt\nO4lFQme7rIBjAAAgAElEQVQLFjBSSetswQJkwt1z544MB6uEFFlJA+ok3ddHcyAujuaAjpK2q5VI\n+H1/diUdClnKx++7s++xnj59pApQVdIAkbQ9Z6tKrJJK+oYbLAOt0padpNevt/5dtbob0Cdpbisu\njua6an60v5/qEqJB9ZmnplKfWChxW6o5aUBPSTNxzpoF3HGHtYtBdYtZpJIGrOdut/GSGDOSBoCw\nQ6CeVR1AoaRIElMh6UioLCR+qWlpsiRtN/R+2rIbiUio5LIyMizP2x46Vwl3R8tJq1Z3A0Q8K1da\nP1NR0kzSiYlWvYNfMrSTWGS426+SthuKSOgo6fz8kdumVIwgANx220hHSEVJ8zopLibiAKifg4OU\nduB/c0IkiXHdhUqf7CT9+c+P/JmKAIi2/vyOzz4PfvAD4OKL1ftkH19enmVj7Efpern33klJq9q7\nUIgK43S2vfH42D6pHmZif+ZxccB//If1s/R0684HL/BC0mOFMVXSl156KeLi4nDHHXfg9ttvH/Hz\nF19ci+5uYO1a4Nxzy3HOOeUnf6ZS3W3f2sJQVdKAdYCBvS0/F6rzS+WPIClpXkCRSlo1L8aH+wN6\nSjoSqsU5OTlk5FULc+w1AJ/4BBXVMFScGWmSjgwH6+Skc3OtaIhKW/bDJqZNs26N4mNde3piO5l2\n2J/TunUjU0EqJG0vhrNDRUlHm59+x2cnjM99Tq9PdoFz4410GAn3id+fF5KWVtL8zO0ErdJWpJJW\nPczEyUFOT7fmqhewbeFT67ymZysrK1FZWen9D0XBmJH0m2++iWnTpuH48eOoqKjA/PnzceGFF578\n+YUXrsXAAJF0JFTD3ZHQUdI/+QkdVWnvk+pCysoaSdJ+JpsTianmpLkvOtXd9sK/qVOtgii/C8kp\nHOyXpHlRLlgAfPGL1r+zwfKqMOxKMy9vpBpTUdLs+EVCR0lzPpr75DfcHaseQicn/bnPUQ6e4Zek\n+TlFEqyOko6ETk46Eqrj0+0Trz0A+P73o7cVa03Z4RblUQ3nR2vL6/g49ZKQQB+/+MXo42/D4ZEF\nmLEgSdK8jhMSaP3Za4Sc3l95eTnKy8tPfn/fffd5/6N/w5hVd0/7mxXJz8/HVVdd5Vg4FgkpktZR\n0n/3dyNfsE7xyv33jywe8tOWnTAiIamkVau7s7PpwAFGYqK/iyNiRUEANZJOSqJxxTJeXuD2zP1e\nVSmhpMNheq4JCfTMdZS02/j8khiT9Lnn0qEtDD9OspuRlyJpnZx0JPzMT6d5oJKTdhqfH0KUzklH\ngx87FdnOmjUWIfMdA17HNxZK2l4DwBjrcPeYkHR3dzc6OjoAAF1dXXjllVewZMmSEb/jNNGCoKQj\noRp6BSjvpxq+c1NiKh54djbwj/+oV7Vsf3+clwaskJvX8TkZZ9XCsWjw0ydJEpMKdw8MUBRgyhSK\nEtidEEmS1lHS0doKGkn7eVb2Kv9o8GNfJEnarqSjteXHtkhXd0eDlCjx2y+ncL4KSScm0ta5n/50\n5M8mZE66oaEBV111FQBgcHAQX/jCF7Bq1aoRv+M20fwspFgkzarHT3gkVp/S08kgeYXbpJVa3CoL\nKT4eePjh0W15VYiDg/RMY4WOeSHFUsjR+hSrHRUlHQ1+HBonQ+E3tCylpO3t5ORYW10AvZx0JKQc\nZMCfQXVz1vwU+bgpaT9KLCEh+vZHQC5SIKmk/bQlWTgm9czdSJptZ6yaAzvGQkknJFCU1Y4JSdJn\nnHEG3nnnHcffkZq0/f1EwNE8Jruqc3rx9j7FeqkZGbIkLeHtquako8EP+TiNjfvlx3hJFo5JqJXu\nbjkSk3IcnOZBfDxVGXutNJbMSbs5WRIk5tegSoVe3ea5pJJWOZQoGlSckFjtSM0DnXB3JPwqaWmS\njoYJGe72AqlBO+U0AX+TzalP40XSUiFctz75CXd7IelTHe4Oh+VCim5Kejy2YDm1w86oVydLOpw/\n1iSdlkYG1evRi1I521NF0pLOtlS4W/XEsVhtSYW7paKQGRmGpF0hFbLp65N9qUEjacnF7eSBZ2aO\nrMx1gtO7A/x5u0598kPSXLkdKzQpmZOW2oIlZVABf/NcMictRdJOa48rfSXm1Hgp6bGq7tZpS7Jw\nzM3J8pqucIt6StlOSSXtZ3wqGPezu6PBb3jEbSFJqFZJkpYK2djDnLp9ysnxvg/c7ZlLFQz5IWmn\nd8d98qOkY0VnxmsLlhtJZ2V5d7IktyidCiUN+DOqUuM7leHu8ajuliwcc3rmubnebYvbcclSz9xv\njZHTOvYjcFQw4cPdkvnRoCrpWO3wISJ+nlWsBZCTQzfOeG3HS7i7rY3uPVZty8+JY07Pyd6n3/0O\ncDtbIIhbsNxIOjubrh70glOlpKWcNUCOpKVSMcD4bMFyK9qUUtL2swW8wOlZ8R3aXuAl3B00JW1I\n2gVeCw3CYeC//9u9T245DD95sVOhoDjqsHs3cOmlzm05KeDcXCLpvr6RFy5EgxeF0dsLPP008O1v\nu7cV6/1JKunMTHIaXnyRPpzgNWf75JPAyy+r9yuIJG0fX2Oje5TGq5L+9reBjz5Sawc4PZS0l8hh\nQ4NzO272TjqFIlHwlZfnnaTdwt2SSlplC1Y0ZGWRbRkrnBY5aS8K6vBh4AtfcD5kw2kh8RWKXiZI\nOHxqtmBxW319wFtvAXV1zm15CXc//zxw553u7TgZCh5fdbX75JUKd7sp6ZwcIrGWFroBzAlet2Bt\n2wb85S/q/QoiSdv7dOONzlEH+/WS0WAPmT73HHDoUOy2JqKS9hvOd3PWjh8feYWlSp/skTW3yJhk\nnYNTv5ikP/wQePBB53a8pNJOtZJ2m+enrZKWKn7wUsTU02MZU6d23dQYh7zdvMLBQSpgirUdRtI4\nc1t797o/My/h7tpad7L3upCqq90n76nKSfP4Wlrcx+dVaTY0uI/vVIe7P/jA3bB6VZr19c7Eb79+\nMRp47YXDNK+c0gSTWUlzPUFTEznKTnPKi5Lu66O1t3y5c5+cwt2AvJLesQN44gnndryKru7ukScd\nRoPTmuFUmpeTEd3m+WlL0pLhbi8vlU8ldZp0bmosI4MU68KFzrkar31qawMefTT27wHu5MPPas8e\nbyTtFu6ur3cPuXk1Xrok7ecwEzcSs5O0jpJmx2toiJ6VU6TAfpRnNEgV+QAWSd95J/A//+Pcllcl\n3dTkTIxe50FbG1W/ujnIE1FJt7dTKN/N2Du9P56b7BDV1qr3icPdR4+SMlftE+CfpN2UdG0tpTyc\nbKfXOfXCC8BXv+rcJ6fxTZli2Zf+fr1nzqm0d98F/vhH5z6pIPAkfeSIezt+lLTTpPOipPfupVzd\nm286t+MWem1qAt5+2z38I6mknRYSh7vr62Vy0l1dQE1NcMLd2dkyShqw5md9vbMT4uaB29/dypXA\nr3/t3lYsMEnX1+s5ITy2cBg4cUKGpNkABoGk7bblhhuct854Gd/evXQ2v05tAr87JumamtjteFXS\nx47R2nGqKXBT0n53xsTqV1oa9ePDD4mgnWy6V3t34IB7Ia9bWzynnngCuOuu2L/nNg84EvL888Dj\njzv3SQWBzkn39NCF7U6G2otq7eggL2fqVOfwlBclzdXKmzbF/j23l1paShP1yBEyhE7wUjjW1EQL\n28kI8mEfTtXrvb3UTkeH83Nyc4zKysh46SppVprd3cBNNwH33uvcjlcl3dHhbPDd5hTXJhw/7uyE\neC36+5d/odDd4cPqbWVnU190SZqNYEcHGVQnQzgeJH3JJc5rxks9SG8vkcazzzpHjbxUd+/ZQ+N8\n6KHYvwc4rz0mac4hO5G015w0zwGnee6FEHfuBD79aT0BEAqRmt69m7532vHhdU4dOODutDnlkQFr\nTr38svtzclPS7e0kbtxEpQoCnZM+epQetNtCclPS779PF9Ln57sraS8kXVFB4RbVdmbNAqqq6IV2\ndzs7IV62Fr3zDjkzTmOzX9AQDaEQERnneZzUtBuJffzjwJYttEA6O51DgU7PasoUGt8PfgC89JK7\nB+4WvWCSLi52VtNeQop1dWTovSjpWGDCqK8Hli51T8W4kXRjo7dwvhelyXUXOs4MFx4x6eiSdHs7\n8PrrzrlIt3nO4ztxgualU87dC2EcPkyK/K231B22zMyRtS66Srq315oDTk6Wl5z0zp3AK684O8ic\n1nF6VkzSixfrkfTMmaTIpZR0UxPw+9+7ixIvO0eOHz/NSNotP3riBBEZQEYsFrwYikOH6PpCtxyL\n20tlki4vJwciFtwmWnExjY8nq1PuyIsa48nPl4mo9AkgIjt+nO6ZdiJpt7ZWrKDc06xZpDZ0Qqap\nqWQoLrxQbyHl5BCxhkLA7NnORObWp8REev8JCc4k7dYnno+NjWR8dOZmVhYZLsA5vwZ4y9myWg1S\nuPvoUXKMnLZyuZGY3TEC9Ek6HAbOPJNsg5Oz7TQX4uLo/x89SgZfNydtV9JORObFiTx61D0V09dH\na8HpEqO8PJpLF1/sTNJufbrwQuCNN7wpaS8kvWULfe1mW7wqaZ6jkggkSc+dSx4qv0ydkFRKCpF0\ncbE7SXtR0rW1RPjDw7Ffhpu6j48Hpk+nyQY4h++8LKQPPyRCdLokw82ZAYjI4uKoMM6NpJ3Gl54O\nLFhAZO92EpYXkt67F5g/3z1V4UbSH31En6dN01fSR44Q2bupJy9Ks7GRnpWukt6/n+a7m5L2Ug/C\nqk433N3bS2smJUWPpDMyaJ4Dzlu5vCpNJmmn9+dlfADdFe9FALjVTFRVkbOto6Qjw91uJO2mpKur\nyR672U2nPgHWdbYXXaSnpJcsobEND8so6V//Grj8cj2SZhvX2EgpIreaF78YM5LesmUL5s+fj3nz\n5uHBKNVRbltTSkqAV1+l73XC3cnJZJy9krSbkgbIyDtV5npRraWltABKS/WVNEcKnKrivfQpNxco\nKKDx6ThGAIW8Z8ywQkGqbaWmktFasEDPCHK4OyeH5oKOkk5KIo+5rEw/3H3iBLWXk6NP0h0dwFln\nyZD0iRPkTEop6dmz9ZU0k7OOki4qIiMqpaQBGpvbnmIv788LSXut7q6tBQoL3cPdTn1KSSEbNXOm\n89i8CIC8PPpYsMCKkEaD2/ji4oDzzwcWLSKidtrW54Wk338fuPpqPZJOS6P/X1dHaUfpkPeYkPTQ\n0BDuuusubNmyBXv37sVTTz2FfRGJpMTE2HkjgF7mtm2kEJ0Iw8vZ3T09FknrFo4BtNB1CbG0lD6v\nWOFM0l5CpvX1FknHMvRevN2cHBpbQYFeThoAbr+dcnVuewi9kHR8PHnzOuFuvn+WlbREuHvuXOcK\nWi8kPThIz9vNgXQzqDy++fPp76oWDE2ZQj+rqSEnS4Kka2qAOXPcSdrNoB45QhEoHZLOy6Mx7tlD\n30so6dmz3SuhvaRjDh8m8pGq7j7zTP1wt5coj1clPX26+1G/bjYYAD71KZrnbhX/Xkg6L49C6DoR\n1lDISncsXz5BSHrHjh2YO3cuSktLkZCQgOuvvx4vRFRauZ2fPH8+TbBzz3XOSXtR0gCRtO5Ckibp\nwkJaADrhbv47bkraC7Hm5nojaS/j+8QnKLQlEe6eOZMWlM7iTksjss/JoQ8d45ydDfzpT0T2Tgf1\ne1E9gDeS9qLEAHp/06frhfPPPJNSMaWlMiRdVUUKQ1dJDw6SitIJdwPkXL3xBs0JXSWdnU3zSSLc\nfeIEPaf2dnXbwtGZwUGyLbqFYwDZTv79aPCqpKdPdxYSgLsNBoCvfQ344Q/dr5v0QtKrVllK2KlP\nbuPLzKTC5NJS50iBCmIc066H2tpazJgx4+T3JSUl+EvE+Ym/+91a/O539HV5eTnKy8tH/HzBAvp8\n3nnOG8R7e4kIYoG9XS/hbi9KOi6OJpybanV7qbNm0cfUqXrhbl5IvAB0HIecHHIcCguBXbti/15f\nH01wL3AKd4fD7gs8NZUmvtvpTm6Lm6vXc3Lo77mFyZz69Mgj5H0XF1vn9jJJRrbj1Ke4ODKShYX6\nJJ2ZSZ8LC61w/rx50X/XbS58/ON0zv3/+l+0dTEWvBDG0aP07EtKnLeYeSFpAFi2jM5e7+yMPge9\nkvSvf035TTeSdtovP2sW8MUv0tcS4W6AHGVuK9rzcBvf4sXAP/wDzQG3S4G82pb8fEvgRCN1L7bl\nrLPIcXCyUV7bSkmhDycHmbecOjkhV19NBO1mW7yo+8xMWs+zZo1cM5WVlah0U6QuGBOSDjmV+f0N\na9eudfz5ggX0gJcvp03iseBHSUsUjhUWUrhMlxBXriQCam6m7Rux4DZBkpKoP0VF+nnyT36S+jN1\nqntOmgtB3OAU7h4YoIkd6/hUgBbQ1KkyC4lJ2u26SbdntXgxVdTn5wPr1sUen5sRBOidSSjp+Hia\nn0VF+jn3c86hQxlKS/UO7UlJodzoeee5O0ZeSbqoiAq1PvqIDH8kvJD0vHk098480z2iEs35YhQU\nkMMG6Efp+O9kZ+vZlmXLaHvom2/S2HQLxwCa5+w4cDTRDi/PfNUq+ujudl57XtYxw0lJu90vD9Ce\ne8DaQjY0FN0WeVH3WVk0BwoKRkZGIwXofffd59xQFIxJuHv69Omorq4++X11dTVKSkp8tXHWWbQ3\nz62IyUtOGrCKvXS3YBUV0de6hFhSAnz+87QAdKu7i4posbktbreFdNlldKkCH4wRC17CWwyncLeX\n55SaSkZZV0kDI0lahzAAK73gdAOOl3aSkmhhu4UBvRB+djY5kW7393pR0oBMuBsgMnRTUG7G2U7S\nfFlKrD55UdLcL51wtx26UbqcHPrsRtJeCLG8HPjWt9yVtJfCMcByknUihwwvStptnjOclLSX9cII\nhfQjo5mZ1jp2Gp8KxoSkzz77bBw8eBBVVVXo7+/HM888g9WrV/tqIy0N+P73aVHq5qSzssjY6yrp\npUuBW26hr3WVNEM33J2URITBX8canx9ilQhJMZzC3V7auegi+tB1sADv4W6/4wuCkgaACy6ginOn\n9zc0RFWxse4jBihSkJxMoTsJkp4/Xz96wSRdWKhPYnaS1qlNsEMq3J2VJWdbvIS73ZR0Tg79jtP4\nvDxzRlwckWKs87v9ji/W/PRD0oCzCPBD0n7OO/eKMQl3x8fH4yc/+Qk+/elPY2hoCLfeeisWcJLZ\nJzIzyePr7iaijYQXQ8GFD15Cpk4vdtYsyvcA+p4XIz9fPydtJ2mJxe2luMProszMpG0cqu18+cv0\neXiY+hQORz80wUuYbNo0mgu6hGGHk5I+1STN96U7zQO388QBMso/+Qlw9tl0tnWsZ+5HSQ8OypK0\nznkA8+bR78yZI6ekJcLdycn0oeuEMHSVdHIy2SdATkkD1viiOYp+2pJS0oAcSY+Fkh4TkgaAyy+/\nHJdffrl2O6GQRWSzZo3+uduinDcPuP56+lpXSdshqaSdwt1ui7u01Dp2U5KkJUns/ff125kyhcgj\nFrH39VH0xQn/7/9RG6+/fuqUtFs7dpJ2Cwd7NToSDuStt1ptdXdHf7Z+SPrDD/VJOiHB3RB6IbGp\nU+ngl4EBWSWtG+5mNe22jrlI0A0ZGfr7+AsKrK8llDRgzc9oc8rPPJdW0jpr5rbbrDTMhFDS0nB7\ngE4TpLQU+O536evkZG/343qBFCGmpuopqOuus752y5N7XUhuhOEndO5EYn49cPZ2o42jv59ysU7g\nv3Uqw/lu8+n22ymN0tysr6QZSUlyz5wNoQpJJyTQFso5cyiaovPMk5LozO7ERBmlOWsWOceSOWnd\ncDeTtNP6k1bSbuFuL0o6VpQzFqRsZ5CU9Lnn0ud3351ASloSusddMpy8XT7m0ylXF9mWxERzK2KS\nUlDjmZOWJmkusolsy+tzcnrmPA+cjJcdToVxXt7dP/4jfe7uliVpibkJWAdGFBb6bysUArZvd++T\n137NmePelh8S41SFajjfDicS4zoAp10MS5YAd99NX+sWgDJ0t2B9+tNUTwA4OyFuV7tGQjLnfqpy\n0hJrTxXjdna3HzjloPwqxFgLyUuuLrJPEhMtPp7ydbFuivKzJcGpT93d3heSF4Pq9ZmnpcW+s1eV\npKPBj3F2m09+5oFTSNGPoZDISdvbkiRp1cNa7JB0/KRImndESMxPJxLjNew0p7KzKWQKuI/vVBWO\nFRfToUSAsxPil6Sd5qcfe3cqlbQEx6hiQpC0lJKWLn6QUK2hEI0v1mk+Ugqqp8d7SMpL4ZhEpECF\npCUMhVPhmN8+JSfLjE+SpMdCSeu25UbSfp0sCZIGrLuco0Hq/fkljFOlpN0Kx+xwckKkw93jkZOW\nihRMWiXtZuj9eDlu3q5XSBrChITY45Mkaa8TjUP+9m0Sd9xBt1EB/kPnUiTtVrzih6Sl+uRE+OOl\npCXnppMhlCLp4WH/TqQUSWdlyZC0mwCQIulTqaTtkFTSkuHuU6Gk/YwvWpTgt7+NveXMC04Lkpbw\ndiUXkoqhjzY+L0fb2eEURtJdSG+9ZV0xN55K2mkh6YS7+cIFqXcH+DMU0Rwj1bac5qZf43Uqwt38\n7pxOh/Lalh+nHaB0TKx7oKXD3V5xKpQ0n7Llx7bYx/fSS9ZFEiq2xSnq4CfcfSpy0n4iBdHGdvvt\n1l3vKpgwJC3hObuRtF9VJ2UoYhn6gQH3o+3scJr8unmjzk666hHwN75TRdJ+lXTkuzvnHNrmp5L2\nkIwUOBkvrwZV0oFMS5NR0k7zoKvLffucHZJKWupZnSoB4DeKNTwcPZXm5dhMOyKV9M9+BvzhD/T1\neIa7JZW0fXx795IjA6iFu/n/AlScyLZTBROGpMdaSavkjext/eUvtPfSb5+A2DlpyVyWrpLu7LSO\nmvRjKCTzv1JKOnI+9fTQx4kT4xfuBpznpx8ikyTpsToOcscO66AaaZIej7SV2xYlnfHt2EH2hfvk\ndZ5zvUs02+nH6QNGK+neXssejFe4O1qUZ+NGOrdeV0l/7nNWdM3P+PguAo6I9fWNfFYqmPAkPV5K\nOnKi/exndLC9SltOC0mKpHW93a4ua6IFJdxt35/sR0lHql/OSTY1jV+4G3Cenx0d3m8ec4qo6M5z\n1bYi2zl61LpYZjyVtKQAGKvCquefty4ZknJC/BSNAaOdkJ4eeZIeHiZy8+o8RLub+r77gD//WZ+k\nu7qsQ6Z0wvlso057JS0VUpRSYtwn+0Rrbra24kiStFQIXmeihcMjlbRf4yxRmQ+MNhSLFlmXr/h5\nfwkJZKR42xsvIBWSdhqfyvuzj89+sUxHR/QbiGL1SbJ6XfUgIac+9fRYZ/J3dcmFS4MS7n7ySTrh\nDtAfX0eHWqoJODVK2q8TEstO6W6DHRoCPviAnG5dku7uJnsA6KUKmaQnrZIOh/UWUmen9WK6urwb\nQWD0BGlpsV7IeCrpsajA7OujBWAn6SDkpI8fJ0UG+FPSoZBF1IAeSbuF81WV9LFjdBIZww9JRxrB\noSFg61arT+OlpPv7R+b5Ghvpe10l/d57wP/9v/S1Cknb5+fWrXT7HqAX7t671wpR64a77SStoqTt\n43vhBeD3v9dX0r29Vp+klLTK3LT36fBhaqOtTX8LFqe/+GujpF0gVVgVSdLf/z5d6QbEPvrQqS0p\nJR1rC1ZQctJcONTc7D8kJb0nmRfSwAA9n9pa+l4nEqJL0mMR7m5tJSXNF1x0dqor6QMHrPPrpffs\nen1WU6ZQro4do54e+rqlRZ+k33qLqo0BtXC3va0XXwR27aKvdcLdnZ1ATQ19rRvubm/XU9L2tn76\nU2DbNn0lLRnufvRRyv/qFu/yFlFW0n7GZxcAQ0P0/1lJ+zkIChg5Pk6lBUpJr127FiUlJVi+fDmW\nL1+OLVu2aLcZyxDqhu5aW4H/+i9qu7PTe84PGO3FNTfLKWkOxUpWheqEbOwkzX3yGpKKiyOSGRoa\n/TMdJc2nRB07Rp/9KGlg5DOXDHeHw8AVV1hOhKoy4PEdPUpjTkz0fmRttFRMczMZG+lwt6oq5/dY\nX6+vNO1ncOuGu//0J2rLy5WedkSL0jFJS4a7dZR0fz/wxz/SPNetftYJd0fazl//mvqlu1Vt717q\np4qSto+P56ZdSauG8wOppEOhEL7+9a9j165d2LVrFy677DLtNmORtN8FGbmQOO/w0ktqJC2Zk7ZX\nd//v/w1s2KCvev7nf6yJpuPNd3bSs2tp8T+2aBWmH3xgXV2oS9I6Spr71NpKfZQId9fUkBrjZ6Wq\npNkxOnrUX6gbiD43AeuSC1VDuH8/8KUvWQ6XTlu8N5mjBeNJ0jwPurpIRbe0eDvK045IEuvooLkQ\nDsuGu3WU9F/+YilgP3ukgbFV0k1NNM9VRIn9me/ZQ1spdXPSPDdVc9KR4e6pUwOmpAEgbN8kJoBI\nQ/irX1GYWlUVcPe6uoBPfpLyUDqGoreXXqyUkv7rX4G6OrVwqf05rV9Pp90AehOtsxOYMcNS0n6M\nBLdlH9/llwNvvunfoNoXEpNYba21F1SVXFtagNmzZcLdkSE3VZK2K+nxJGl7nw4epIKo9evpewkl\nLUHSx49bJK1DYjt20DxvbdVLxQA0P7u6yHHXDXd3dIx0QlSV9KuvAitWyClpqZx0U5Pa3IyPHxml\n++AD4Lzz1JU0vz/+LFU4Nnt2wJQ0ADzyyCNYunQpbr31VrQ63QXnEZGG8M9/JmPo18jzncR2z3nW\nLFoAOkqaX4AESQ8N0djYm9fxLDs6rPyabk56+nRqr6vL39iAkeM7ehSoqiIn5MQJ8jK9wm4o7Eqa\n54FX1RPZp5YWYO5cmXA3k3Rbm9rijhzfkSP+tl9xn8ZCSff2UkX9f/wHfa9L0nFxFO6WUtLDw3rh\n7l27gIoKdZKODHcDpKZVwt2R65iJJxz2HoIHRjoh+/YBl1xiKWndwqq2NrJXuk4IK2m/4e5QaHT+\nd84c+tze7m/NRFPSOoVj9j6dcYaekla6qrKiogL1vH/Chvvvvx9f+cpX8N2/XeD8ne98B3fffTce\nf8rsBxcAACAASURBVPzxUb+7du3ak1+Xl5ejvLw85t9LShp5U82ePTSJ/XqVgLWYkpLoZRQX0+Tt\n7LQuOPfaDr+I5mYgL09mC9aHH1L/WInp5Gja24GdO+lrXZLOyqJrJxsa1Eia23rjDfrc0EBEPW2a\n93Yiw91ZWSNJ2g/s5MokvXWrvpLet48+8ylD0a7VjIXIOoCEBDklHR9vGULVedDbCyxcCGzaZNVM\nqEYvenqAmTNpHsTH6yvp4WF6Zjr7pPlKzrg4mpuZmd7biVSanZ3kgNbUkJ3x44xGU9JTplA1vJ8Q\nPLfF4+vtBUpKaD6oFFbx+PjWvowMNWc0KcmKDPT0ULvsQPpxHLit3l5rz3RREfWprg44/3zv7UQq\n6dRUch54rH6eld3J2rOnEvX1laipAWyU5wtKJL2V93O44LbbbsMVV1wR9WdrffQ4WkgxLY0WeLR7\nbp3AJJ2VRYa+uJjuvO3sJI/HK+wvormZ/u9779H3Oob+vffIaKmES6Mt7nfesS4w0CHptDQgN5cm\nv19CtI/v9ddpITU0kIoqKvLejt2b7+wEysooT+p3bNwneyTknHOAp5/Wz0nv3UvPqa2N5kVurve2\nIpV0WZkaSfPzHh4m497cTPcCV1eT05CVpdan3l4iruxsmgetrf6cEDth9PTQmqmvpzamT/fXTqSS\nBqg/KuFgFgA9PfScc3IodOpnbiYkkEEfGiKS7+ykZ84krao02fmYMYOelcrasztZxcVEPjpKmh2h\n3FxaOzrh4KYmaqemRl102R2/adNoHhw75k8A2MfX3U3Pu7HRGpsfx8jep4yMclx6aTn+8hfge98D\n7rvvPu8N/Q3i4e66urqTX2/cuBFLlizRbtNu5E+cIKNVX09Gp6TEX1uRhnDaNDKoOuHu5mZqh/dt\n62zB2r0b+NjH1MPdkSSdkUEGp7/ff5GdnaTT0y2S1gl3//GPwDXX0Purr9dT0iUl1O6JE3qOA4fJ\ndMPd4TCRNOfFmpv9K2n73FywwAp3+yHpyLROczPtuZYIdycnE6G+9RapQ51wd2mpXE56+nSLpFUL\nx9ggZ2f7J+lQaOT76+gAzjxTPdzN4+vqoj7l5emvvd5eamdoiKJsqkqad1Lk5tL7C4fVlWZTE727\nrCyan37HFzmn7Eq6uNh7O5FKuriYnlFHh793F9mn1laK0CYlxT4D3w3iJH3PPffgrLPOwtKlS/Ha\na6/hhz/8oXab9om2dy+wbBktin37yOPxA/tk43B3WxstBh2SzsujidbWpqek9+wBLrjAyoupFh4N\nDNBiPP98ihT4zdlGFo7pkLTdENbXA2efTcarpcV/TtpO0unptMAPHfKvpCNrCoqKyNA0Nam/O95H\nPm8eeeEDA/733ttJev58UgRtbf5Imtuyj0+VpCOVdHIyrZk33ySS9YPI6u7SUv2cdH+/1ZYKSUeG\n4JOTLZL2G6Wz25ZIJa06vo4OK3qhoqQjnSwm1337gPx87+3EUtK1tf6Vpr1PrKRnzqRUn2q4Oxym\nz4WFRK61tf5J2s4L6en0zHl8Kn0CaO1mZZGzrpqXFifpX/7yl3jvvffw7rvvYtOmTSj0O9OjIJLE\nFi2il/HWW2pK2m7omaT9HmYSSdK5ubSYWlr87a8ERm7BammhMGdLC71oVSXN6mvWLKrK1SExJkRe\nlDrePIc533uPCDouzns7kSSdlkbz4MgRPSXNueO8PCJFP+Pj/g8OknHIzqaPw4fpefkNk9mNfG4u\nfRw86J+kI+enpJIuLqb9xDok3dNDdQC1tWpKk99dUxO9t9xciqj4XXuRfVJV0oBlW4aHydDPnk3O\nmk64m9dxTo6MkmZy/fOfSel7ReQ+4kiS9oNoAmfGDJrnqkq6r4+c7MRE6k9rqz8nJFJJc/Sipsb/\n+CKru7OyrNSACibciWNVVWTki4qAt9/2r6Qj1UpRkRXW8KOk7e1wWDMrS624wz4+Vvd84pQfQ2Gf\n/O3ttLgLC+mZ6SwkVtIlJaRaVfNi7O1ymNNPqBsYrVTS09UXUmThWE4OjW//fvVIAZNNVhY9cz+h\nbmD03ExPJydrzx59kuZ6C56fKu1Ehrt1SfqMM2ieNzWpO8jHj5OzZ1eaOoVVKSn03vbvV693YVIu\nKKD+6YS77SStqqQjSTovj5wsPyQdqaT5OdXW6oWD2cmaPZtSfao5afthRtnZZDe9nkQJjK7uTk2l\neVVdraekW1vJHpSWWkW8fjEhSDoyTJaeTguorU09J82neqWm0r81NOhtwWIl7dcIAiNJ2q7ua2r8\njc++kHhxFxTIkfSsWWokxuPjwhB2PPwqlWhKOi+PDIWq4zAwQP3KyKA0ynvvqY+Pw5pZWZaS9oPI\nKE9aGoUB339fn6RZrXz4oUy4u6+P5oNqn3p6aHzTp9OcUiXpEydIMXExm05hlV1J9/aqz09eL/n5\n1D+/4W67EmNnm0laZ2eFPdzd1KSvpKdNo/mkY1s43P2pT6mRNBOivXgtK0tNAEQq6YICitLpKuns\nbOAf/sE6X94vJgRJR4ZLU1IsL1dVSbO3FArRSz12TC/czUr6+HG90Gt3N7WTkkJ5Iz8kbb+6jUma\nlbSOt2snaRUnhL15PgM3KYkmrs5CspO0ipLmZ85GMBQikh4cVDeE3CdVJW1/f5x+mTWLxufHgQSs\n98dFQllZtFYOH1ZPodiVNKCvpFNSyAlpbJRR0tu3UwGgbp+ys+l7v0qa3x9H5aZOtUhaR0lzTvrY\nMRklzc7jvHne24mPt87tZ7KfO5eIVSLcfdFFpHxVctJ9fSNJOjvbXz4aiK6kp00DPvpIfXzhMJF0\nZibtv/c7NsaEI2k29IWFIyecVzBJ24tVsrLooaoqaV5IEkqaJ0h2NikoPySdlGQVjNlJur5eTknz\nz/yAx2c/A7eoSD3nZ++TqpK2Ow48D/jWKYlw98CA/7mZmmodpMDh7pkz6XtVJc1GIi6OSNqvE2JX\n0qyg2AD6JenItlJSLCfbD0lzDUc4bB2Ik5NDOwfOPttfn2JVdwNqSrq725qb2dnkILW16Ye7c3Pp\nWM+KCn99ilYYl5dH88pPn0IhS01zO/PmUfrLrwCwzwMOd2dn064W1XC3rpJOTLS20HFb06apjY/V\nfX+/deBKKESn9algwpE0G/qiIlrgfvJPgDXRIkkaUCNpPpuXjfPx4/4nWuQpaEzSdXX+SJoXUk8P\nGYfMTEsNqIRs7PlfVnX8Mz9gQ2G/TaawUDbcrbpP2q5yliwhb14i3A3okzSHuwE1kuZLELgfTIgS\nOWnA6ptXRKoVVtKAP5Lmq0b5YpyMDCtE7Zeko4W7OQKiqqSZpOPirLytTnV3RgZw3XVUB/Dtb/vr\nUywl7SfUzWAn2a6kAZlwN0AOiJ/nxG1FhrtVlDRvoevp0VfS7DhE7lpYtMhfOwylw0xONaKFu4uL\n/RsJYPSLACyj6sdjsu9F5T5lZpLnpWLkWRlwv3Jy6G+oEhkvbq5wlFDSHHaTUNKf+hSFl/0gGkmn\npdGzU00x2OdBaipV1kuEuwG1cDeTdKRjpKqkx4Kk8/OBzZv9P/NoeT8Vkrb3K1L96ipp3oKlMs/t\n74/fF+eldcPdeXn04ReJiTQvh4etEwxXrPD/vIHRSpp3ROiSNI/rW98iNavSlv2CnQsv9J/2AEaO\nr6iISJr3qav0ye/WwliYcCTNRvXSS/0vSCB2uDs11V81IGC9DDux+t3CA1jjGxiwyJ8rFP0cEgBY\nhoJJmvO/EiQNEGnoKE3ux/e/768NwPJQ+X7l9HSrL6rji8wX/uu/AsuX+2/LHu5mwpAIdzPhq+6T\nHhqyjrdUIelohWOhEF3H6RdM0nxfb3KyWrgbGPn+OFyanEzHlqq0A1gKkdeeX3C4e3jYWi98DoBu\nuFsVSUkjb68LhYBPf5o+/MKupJkQ587Vq3fhiB/gvx3uU2S4+8tf9t8OYM1PtlMcMleNQkqR9IQM\nd6ekEHn5OUqQEYuk/Rbm2NviPi1fTiEpHRLjiZqd7b9yHRitpAEK20kUjgFqJM0k5vde1khwYYnd\nS2UjqFo4Fll5e9NN/quWY4W7dZQ0jy8nhz6rKmn7PFchad5zzAVDftWzHUxiTIahECnp+Hj1giFe\nM2VlwK23+tsjDUQPdy9dStfF+kVk4RhA8zMhwf+JXHyZBhc2qoLHp/vuAEtp2rc7zZunJwD8Vr5H\naysy3K0Ktp1sp1RJWlpJTwiStoek/FZKRsJe3a1L0mxUuU/nnef/ykTAMvL2/ZSqJB2ppAEiaZ2F\nZPd2S0v1CFFqIdlz0oBe4ZjOfAJGOw5JSfSho6Q53B0KAfffr15JbR+fCkkD1pqxG2cV2I0gt1Na\nSqkPv7CHOVNTyWH/yU/U2okUAPn5wJ13+m+L35/dqZ061f/8mjKF8tkDA1bOXRX27Y+6JM1K2h5a\nnjtXn6R11l+06m5VRCrpggJ6F6r7pP3uj4+FCRPujvR2VWEvHLPnpFU8nrQ0WkT8UtPTKd+jW3gE\nkILyWxQHjCwc43xfQYH6RLNvIwAoHOznlDDAen+6ShoYuRfVTtIqjkNHhwxJ28PdfJManzLkB2zk\n+YYpHtNXv6rWp74+6hePLy2NCEg1qqJr6Flp2tdwejrw+9/7b8vuhOjYA0nbYneydEgasMbn9yTE\naO0wSUuQWKSz9vd/7/9M6qCStN0JSU0lO1dQoFa9Pqlz0rovIzmZCjkkwt3p6dSOnXwuuIAqAv0g\nWrj7jjv8F1EAI5U0E6uKkrbnevi4PUAtVyeppHkhcc42MZE+SxSOqSKak7Vihf89/PbITEqK/xoJ\nO+wkZjcUu3b5357CDptEuDuSpFURq6ZApZ3+fsqTDw6q72UFouek8/PVDLVUyFQy3B1NSfudS/Z2\nALnIqJQTYlfSAI1vvMPdE46kgxTuTksjMrTf+3zNNbRf0w+4Styu7v1uIWBEy0lfcIF/VR65z1YH\n0aq7VREZ7gbUK0zHKtwNAC+/7L8de7hUd3HHIjHVOg4JQx/NCKoiMtwt0Q7nyVWRmkrHQA4MWM6s\nrpLWNfR2JS2Zk1apNGckJ5ND1NPj/watSCQlka2TCndzfpvfmQpJSxeOTTiSllDSkeHuM88k5eMX\naWnWNYm8uD/5SfrwA96CpVtEAUTPSV9/vf922EjwaVU6SEoaqRB1EIukdfZuSylp3UXJ787vjWzR\nIOnNS4W7JZV0tL33Ou1IKDF+fz091trTJWldm2BPNUkqaZ1nFQrR/D5+3Dr1URVJSWSDpQvHuK1P\nfYqKEv32KVII6kA5oPbcc89h0aJFiIuLw86Ik8PXrVuHefPmYf78+XjllVe0O8lGkE+E0QlJRfNy\nzjsPWL/ef1tM0pLhUimlKbF1g0k6aEq6pYW8b67kVVHSks9cSpXzqUdtbTLEaj/+Vgf2kKJEdbfE\nPJAOd0uQGI+PL1UAaM/u/fertRXpjKpgrJS0bltpaXQ6o8TcHIvCMe7XPffQdl8/yMoiuznu1d1L\nlizBxo0b8amI0sy9e/fimWeewd69e7FlyxbceeedGB4e1uqk3cjrhqR4okl4OWlp5A1KqILIcLcq\nuDhHd+sGG3m+ak0Hdm9eYiHV11t7kQHgm9/0XyEsZeSB6OFuFYRC1JfGRlklLUWIQVLSYxXu1gGv\nPfuaSU8HLrnEf1sZGeRoBzUnrfus0tNlSHqstmDptJWbS4cIjTtJz58/H2VR4gAvvPACbrjhBiQk\nJKC0tBRz587Fjh07tDoZF0cGrLNTThVIGK+xUNK6L5W9eb5+URU5OdSGpJKWCncfOzaSpMvLrapq\nlT4FJdwNUF9qa/1Xhkdrh1WBlCrv6fG/c8EOSZJmBaU7p3inQmenXLhbwrHNyJBRY9JKOvIwE1XY\nw906iHbimCqiKWkV5OTIkrR4TvrYsWM477zzTn5fUlKC2traUb+3du3ak1+Xl5ejvLzcsd3ERAoj\nSVYH6z7A9HQ6BlRKSUsQBhsKXZLOyKDUwrFjciTNSlEHKSl0prmdpFUgqaQli9BSU+kOW12Szsqi\nXQZS4e6ODiI0v4eF2BFtC5YqWGlKvT8J2yJJ0pmZlpLWTaFIKmmpSuqxIGkJbuCaEB1u4J0Zx48D\nfX2VWLu2UqtfjkuuoqIC9fX1o/79gQcewBU+zgUMRYlP20naCyRJmsO4uuTD4W5JJSZBYvX1lLPV\nUT2hEG3d+vBDmcIx3uYi8f7q6vQcEIDePed+gxLuBqgvNTV61bMAOTGtrXLh7rY2WaWiOw94fFL5\n7bY2uXCppJKWCOdLK2kJ1SoV7mZ7Hhcnl0pLTdWrewLIPlVXA1/4Qjluvrn85L/fd999vttyJOmt\nW7f6bnD69Omorq4++X1NTQ2mq+z7iACTtNRLHRy0jpRUBZO039tyIsFbsKSUmES4FKAQ8sGD/s+y\njoS9Ol/CCTl0SO00Njvy8+ndZWcHL9xdU+N/h0AkmMR6e/X7lJxMbUkZeQkSy86maJEE4ScmypB0\nairNASmSbmykZ66zX16yej05mcYmQdJShWOspFVOBotESgqwd691KZEOcnOJpANzLGg4HD759erV\nq/H000+jv78fhw8fxsGDB/Hxj39c+29ILSQuHDtxQl+tSOakpbZgpaQQSesqTYCcjwMH5ArHpHLS\nEuFuJunTNdwdZCXd0qI/vpwcK2Lk9wS8SEgp6dRUykXGxelFsQAi6fp6mXoCaSUtsS1TsnBMsij1\n6NHTiKQ3btyIGTNmYPv27fjsZz+Lyy+/HACwcOFCXHfddVi4cCEuv/xyPProo1HD3X4hraSbmmSU\n9IkTwavuliTpw4eDtwVLItydm0uGub1dfyElJo68Z1cHrKQlctJtbXKFY1JKurubiEz3/WVnU72E\nxNnIUqm0lBSgoUGfwAA5kpY+u7u3V7/eBZDLSUdecqQDJmm/RajRkJtLfRrXwrGrrroKV111VdSf\nffOb38Q3v/lN5U5Fg5SSTk6mSs72dn01lpZGedag7ZOuq1M7nCUShYUjrzpUhXR1d3e3/ruLi6M2\nampk3h8beZ3QJEB9aW+Xy0knJ8sYQgklnZBAtQ6NjfpGnq+F1Z1PgJwTkppKaTTduQnQmqurkyFp\n6epnCSeLlfTHPqbXDivp4WEZ29LYKKekgQCFu08FpEJSycn0IrKy9MNkvJdVsrpbIqc5NCSTk+Zc\nu1ThmJSSBmQMYX6+VSiiAzbyEguS+3I6hrsBawudxPiklLRkuBsIlpKWDHdzbYKEMJHOSUspacCQ\ntDIkw93Dw/qhbsB6AUEKd3NfJMLdHPaRUNKSOWlAZny8GCWUdEuLDGFIkXRyMp2LLOE8sHGWUK2p\nqUSuEuFuCSMPyIW7k5IoUiBF0g0NcjsPpHLSdXU0N3UzmOnp1Kcghbv5+UiFu4FJSNJSShrQDycC\n1gvQnWjS1d2AXE4akCkck1LS/P6klDQgR9JBUtJMFoOD+mumsBDYv19OSUvUFOTkkBMSJCUdClEb\nUiQt4WBxUarU2d0SDhZgRSGNknbHhCFpNhS6LzU+nj4kSVp3csTFkcHp6AiWkmaSDlpOGggWSScl\nAbt3A4sW6fcpNZXmg4Shz86WyZN/+tPAkSNyJC2RjuH3L5WTliBpgN6fFEkD+kY+FCIR0N4uo6Ql\n6gkAWZJubqYPKdspQdL8jCYVSX/sY8A778gspORk2XC37uQIhYjIDh1Su6/ZDiklBsiSdHu7XGEc\nIBfujovTuyoPoOdTWAj89Kf6fUpNpbEJbIgQ2QMO0C1xZ5whR9KAPpGlpdG7kwp3HzyoP88BOZLm\nvkgY+aQkWn9SUUgJ2yJF0rm5wP/5P8DGjfqOOz8fqXB3KCSzZibEVZUAkbREwQJADy5IShoAZs0C\nfvAD+qwDSRLLyQHOP1/feJ1xBrBkCbBli4w3D8gpad2r8gDgssuAPXvkjLyEEQSILCTWSygEfPaz\npDZ1weFg3aLNUIjmp8T4/v7vgSuvBG68Ub8tyXA3IEPSnCqUWnsStkXKdk6ZAvzzP+v3x94XqXB3\nWpqMsz2hSBoIlpJmAyFhKD74QOaFSuakp0wB3nxTv534eOC3vwVef10/9CqlxACLpHUxZYoMQQOy\nJJ2dLWPkAeCuu+hwBl2kpMiOT8IerF6t3wYjaOFuwAoJS+SkgWCFuyUhSdL5+XI2YcKQdH4+MHOm\nHElLKGk+L1aiTxIEDch6u5KIj1e7si8SKSm0wHVD1AA5akEyEgD1R2JuAnLhboBC3meeqd9OSorc\n3JRS0pKQImkmMQmSLiqicHdpqV47bFuCFO6WRHo6rRnd0+IAYMYMGYEDTCCSBoBPfEJmgqSkyBlC\niQsaJMHbQKTUStCQkiIT6gYotSDhNUvik5/UuwfcDkklLQVJkpZ0QqQgRdLx8fSsJN7f22/LiIDT\nXUnn5wM7d8q1p+sUMSYUSW/YIKOgUlPljHNamoySlkIoBHzzm6cvSc+eDXz72zJtlZXJebtSmD2b\nPiQglZOWhGR/pMLdkvjWt6j+QgKZmXI1BRIYi5x00ObnGWeMdw9GY0KRtEQYAgB++UtgzhyZtoKm\npAGqdjxdkZoK3HGHXHs69yMHHUFUmikpcus4iOHuiy6SaysjI1iRED7W9XRV0kHFaWyiYqOsTK6t\ne+4BFi6Ua8/AQAplZXS0ZJCQkqJ/Vy/jssvkUh9BRNBImg9rkYjSJSYS6RuSdseE2ScdVNx0k1wV\nXzRUVlaOXeOnEcxzGo1Vq6JHVcbzWV1wAfCpT8m0ddVVwMUXy7QVDeM9p7KyLMUZFCQnj1bSqs8p\nL29sbefpAmWSfu6557Bo0SLExcVhpy3bXlVVhZSUFCxfvhzLly/HnXfeKdLRyYrxNhQTBeY5ecd4\nPqurrwY+85lx+/O+MN5z6tFHZcPnErjiCqCkZOS/qT6n3bvlCnhPZyiHu5csWYKNGzfijigJwrlz\n52LXrl1aHTMwMDCYzFiwYLx7MBq/+IVcWxJnVUwGKJP0/PnzJfthYGBgYGBgEImwJsrLy8Nvv/32\nye8PHz4cTktLCy9btix80UUXhd94441R/weA+TAf5sN8mA/zMek+/MJRSVdUVKA+SnnoAw88gCuu\nuCLq/ykuLkZ1dTVycnKwc+dOXHnlldizZw8ybCc0EE8bGBgYGBgYOMGRpLdu3eq7wcTERCT+bY/F\nihUrMGfOHBw8eBArVqxQ66GBgYGBgcEkhcgWLLsyPnHiBIaGhgAAH330EQ4ePIjZUkcoGRgYGBgY\nTCIok/TGjRsxY8YMbN++HZ/97Gdx+eWXAwBee+01LF26FMuXL8fnP/95/Od//ieyT+cTBwwMDAwM\nDMYIyiR91VVXobq6Gj09Paivr8fLL78MALjmmmvw/vvvY9euXXj77bfx2c9+dsT/27JlC+bPn495\n8+bhwQcf1Ov9aYzq6mpcfPHFWLRoERYvXowf//jH492lQGNoaAjLly+PWSthQGhtbcW1116LBQsW\nYOHChdi+fft4dymQWLduHRYtWoQlS5bgxhtvRF9f33h3KTC45ZZbUFhYiCW2Q8qbm5tRUVGBsrIy\nrFq1Cq2trePYw2Ag2nP6l3/5FyxYsABLly7F1VdfjTYPl7Sf0hPHhoaGcNddd2HLli3Yu3cvnnrq\nKezbt+9UdmHCICEhAT/84Q+xZ88ebN++HT/96U/Ns3LAww8/jIULFyIkdZvAaYqvfvWr+MxnPoN9\n+/bhvffew4IgbsYdZ1RVVeFnP/sZdu7cid27d2NoaAhPP/30eHcrMLj55puxZcuWEf+2fv16VFRU\n4MCBA1i5ciXWr18/Tr0LDqI9p1WrVmHPnj149913UVZWhnXr1rm2c0pJeseOHZg7dy5KS0uRkJCA\n66+/Hi+88MKp7MKEQVFREZYtWwYASE9Px4IFC3Ds2LFx7lUwUVNTg5deegm33Xab2TnggLa2Nrzx\nxhu45ZZbAADx8fHIkrhX8TRDZmYmEhIS0N3djcHBQXR3d2P69Onj3a3A4MILL0ROxNmgmzdvxpo1\nawAAa9aswaZNm8aja4FCtOdUUVGBKVOIds8991zU1NS4tnNKSbq2thYzZsw4+X1JSQlqa2tPZRcm\nJKqqqrBr1y6ce+65492VQOKf/umf8NBDD52c/AbRcfjwYeTn5+Pmm2/GihUrcPvtt6O7u3u8uxU4\n5Obm4u6778bMmTNRXFyM7OxsXHrppePdrUCjoaEBhYWFAIDCwkI0NDSMc4+CjyeeeAKf8XBG7im1\naiYU6R+dnZ249tpr8fDDDyM9aKftBwAvvvgiCgoKsHz5cqOiXTA4OIidO3fizjvvxM6dO5GWlmbC\nklFw6NAh/OhHP0JVVRWOHTuGzs5O/OpXvxrvbk0YhEIhY+tdcP/99yMxMRE33nij6++eUpKePn06\nqqurT35fXV2NksjT2g1OYmBgANdccw2++MUv4sorrxzv7gQSf/rTn7B582acccYZuOGGG/Dqq6/i\npptuGu9uBRIlJSUoKSnBOeecAwC49tprR1yOY0B46623cP755yMvLw/x8fG4+uqr8ac//Wm8uxVo\nFBYWnjz4qq6uDgUFBePco+DiF7/4BV566SXPjt8pJemzzz4bBw8eRFVVFfr7+/HMM89g9erVp7IL\nEwbhcBi33norFi5ciK997Wvj3Z3A4oEHHkB1dTUOHz6Mp59+Gpdccgl++ctfjne3AomioiLMmDED\nBw4cAABs27YNixYtGudeBQ/z58/H9u3b0dPTg3A4jG3btmGhuTTeEatXr8aGDRsAABs2bDCiIga2\nbNmChx56CC+88AKSk5O9/SfFI7uV8dJLL4XLysrCc+bMCT/wwAOn+s9PGLzxxhvhUCgUXrp0aXjZ\nsmXhZcuWhV9++eXx7lagUVlZGb7iiivGuxuBxjvvvBM+++yzw2eddVb4qquuCre2to53lwKJBx98\nMLxw4cLw4sWLwzfddFO4v79/vLsUGFx//fXhadOmhRMSEsIlJSXhJ554ItzU1BReuXJleN68gx2z\nGgAAIABJREFUeeGKiopwS0vLeHdz3BH5nB5//PHw3LlzwzNnzjxp07/yla+4thMKh00iz8DAwMDA\nIIgw5bAGBgYGBgYBhSFpAwMDAwODgMKQtIGBgYGBQUBhSNrAwMDAwCCgMCRtYGBgYGAQUBiSNjAw\nMDAwCCgMSRsYGBgYGAQUhqQNDAwMDAwCCkPSBgYGBgYGAYUhaQMDAwMDg4DCkLSBgYGBgUFAYUja\nwMDAwMAgoDAkbWBgYGBgEFBok/TDDz+MJUuWYPHixXj44YcBAM3NzaioqEBZWRlWrVqF1tZW7Y4a\nGBgYGBhMNmiR9Pvvv4/HHnsMf/3rX/Huu+/ixRdfxKFDh7B+/XpUVFTgwIEDWLlyJdavXy/VXwMD\nAwMDg0kDLZL+4IMPcO655yI5ORlxcXG46KKL8Pzzz2Pz5s1Ys2YNAGDNmjXYtGmTSGcNDAwMDAwm\nE7RIevHixXjjjTfQ3NyM7u5uvPTSS6ipqUFDQwMKCwsBAIWFhWhoaBDprIGBgYGBwWRCvM5/nj9/\nPu655x6sWrUKaWlpWLZsGeLi4kb8TigUQigUGvVvBgYGBgYGkw3hcNjX72sXjt1yyy1466238Npr\nryEnJwdlZWUoLCxEfX09AKCurg4FBQVRO3q6fnzve98b9z6Y8ZnxTcbxnc5jM+Ob+B8q0CbpxsZG\nAMDRo0fxm9/8BjfeeCNWr16NDRs2AAA2bNiAK6+8UvfPGBgYGBgYTDpohbsB4Nprr0VTUxMSEhLw\n6KOPIisrC/feey+uu+46PP744ygtLcWzzz4r0VcDAwMDA4NJBW2Sfv3110f9W25uLrZt26bb9IRF\neXn5eHdhTGHGN7FxOo/vdB4bYMY3GREKqwbKdf5oKKQcnzcwMDAwMJiIUOE+cyyogUEAMRE3QEzE\nPhsYBB2GpA0MAoiJGGiaiH02MAg6DEkbGBgYGBgEFIakDQwMDAwMAgpD0gYGBgYGBgGFIWkDAwMD\nA4OAwpC0gYGBgYFBQKFN0uvWrcOiRYuwZMkS3Hjjjejr60NzczMqKipQVlaGVatWobW1VaKvBgYG\nBgYGkwpaJF1VVYWf/exn2LlzJ3bv3o2hoSE8/fTTWL9+PSoqKnDgwAGsXLkS69evl+qvgYGBgYHB\npIEWSWdmZiIhIQHd3d0YHBxEd3c3iouLsXnzZqxZswYAsGbNGmzatEmkswYGBgYGBpMJWiSdm5uL\nu+++GzNnzkRxcTGys7NRUVGBhoYGFBYWAgAKCwvR0NAg0lkDAwMDA4PJBK0LNg4dOoQf/ehHqKqq\nQlZWFj7/+c/jySefHPE7oVAIoSjnBa5du/bk1+Xl5eZgdQMDAwOD0wqVlZWorKzUakPrgo1nnnkG\nW7duxWOPPQYA+K//+i9s374dr776Kv7whz+gqKgIdXV1uPjii/HBBx9Yf9RcsGEQBaGQOVrS4PSA\nmcsG0XDKL9iYP38+tm/fjp6eHoTDYWzbtg0LFy7EFVdcgQ0bNgAANmzYgCuvvFLnzxhMEhijZnC6\nwMxlAyloX1X5b//2b9iwYQOmTJmCFStW4LHHHkNHRweuu+46HD16FKWlpXj22WeRnZ1t/VGjpA0M\nDAwMJhlUuM/cJ21gYGBgYHAKYO6TNjAwMDAwOI1gSNrAwMDAwCCgMCRtYGBgYGAQUBiSNjAwMDAw\nCCgMSRsYGBgYGAQUhqQNDAwMDAwCiv/f3tnHRnGcf/zrHwGlUWiwCz5TTGvV4BoM2IYkqFLTXkTO\naVPhmBC5oRU6JVBVVJVKVQHhj1RWJcKhJFID6V9Vkp5UKSl9M04EFqTV0aaRYjWgNAoEaDE1UPsU\ncjbhpZGD2d8f9M7DMG+7O3u3u34+EuK8OzvPMzPPPM8zs3t7FKQJgiAIIqRQkCYIgiCIkOIrSJ84\ncQLt7e2lf3fddRd2796NQqGAVCqFpqYmdHR0YGxszJa+BEH4RPB7NwRBhBRrbxy7fv065s2bh4GB\nAezZswezZ8/G1q1bsWvXLoyOjiKTyUwKpTeOEQRBEFOMir5x7I033sCCBQswf/589PX1IZ1OAwDS\n6TR6e3ttiSEIgiCIKYOv35NmefXVV7Fu3ToAQD6fRyKRAAAkEgnk8/lbytPvSRMEQRBxpuK/J11k\nfHwc8+bNw7FjxzBnzhxUV1djdHS0dL6mpgaFQmFSKG13EwRBEFOMim13HzhwACtWrMCcOXMA3Fg9\nj4yMAACGh4dRW1trQwwRc+iBJiIukC0TtrASpF955ZXSVjcAdHZ2IpvNAgCy2Sy6urpsiCFiDm2u\nEHGBbJmwhe/t7itXruCLX/wiBgcHMXPmTABAoVBAd3c3hoaG0NDQgL1792LWrFmTQmm7myAIgphi\neIl91r6C5UooBWmCIAhiilHRr2ARBEEQBGEXCtIEQRAEEVIoSBMEQRBESKEgTYQK+uoKEQfIjglb\nUJAmQgU9T0jEAbJjwhYUpAmCIAgipFCQJgiCIIiQQkGaIAiCIEKK7yA9NjaGRx99FIsWLcLixYvx\n9ttvo1AoIJVKoampCR0dHRgbG7OhKxFz6GGbSaLYF1HUOSioLwhb+A7SP/rRj/DQQw/h+PHj+Mc/\n/oHm5mZkMhmkUimcPHkSq1atQiaTsaErEXPoYZtJotgXUdQ5KKgvCFv4ei3oxYsX0d7ejtOnT990\nvLm5GYcPHy79GlYymcQHH3wwKZReC0oQSqqqoufoo6gzQZQTL7HvNj8CBwcHMWfOHDz++ON49913\nsWLFCvz85z9HPp9HIpEAcONnK/P5/C3X9vT0lD4nk0kkk0k/qhAxgRz9DaLYB1HUOSjIjgkAyOVy\nyOVyvurwtZL++9//jq985St46623cM8992Dz5s2YOXMmXnjhBYyOjpbK1dTUoFAoTAqllTRBEAQx\nxSj7D2zU19ejvr4e99xzDwDg0UcfxZEjR1BXV4eRkREAwPDwMGpra/2IIQiCIIgpia8gXVdXh/nz\n5+PkyZMAgDfeeAMtLS1YvXo1stksACCbzaKrq8u/pgRBEAQxxfD9e9LvvvsuNm7ciPHxcTQ2NuLl\nl1/GxMQEuru7MTQ0hIaGBuzduxezZs2aFErb3YQAuo9HxAWyZUKEl9jnO0h7gYI0IYOcGxEHyI4J\nEWW/J00QtiHHRsQBsmPCFhSkCYIgCCKkUJAmiBBSVRW9V0tGTV+CiAIUpInQQE5+EseJ3pZp1PQN\nErJlwhYUpInQQE6eiAtky4QtKEgToYJWIEQcIDsmbEFBmggVtAIh4gDZMWELCtJEaKDVBxEXyJYJ\nW/j6FSwAaGhowGc/+1lMmzYN06dPx8DAAAqFAr797W/j3//+t/CNYwQhwnHoJRBFotgPUdQ5CKgf\nCJv4XklXVVUhl8vh6NGjGBgYAABkMhmkUimcPHkSq1atQiaT8a0oMTUg53aDYsJCRA+yYcImVra7\n+dec9fX1IZ1OAwDS6TR6e3ttiCFiThS/GxwkUXP2UdM3KIp2TLZM2MD3dndVVRUeeOABTJs2Dd//\n/vfxve99D/l8HolEAgCQSCSQz+dvua6np6f0OZlMIplM+lWFiAHk6ImoU7RhCtJELpdDLpfzVYfv\nH9gYHh7G3Llz8eGHHyKVSmHPnj3o7OzE6OhoqUxNTQ0KhcKkUPqBDUJA0amRadwgavc2o6ZvUBT7\ngfqD4KnID2zMnTsXADBnzhysWbMGAwMDSCQSGBkZAXAjiNfW1voVQ0wBoviWrSCJWl9ETd+gKPYD\n9QdhA19B+urVq7h06RIA4MqVKzh48CCWLl2Kzs5OZLNZAEA2m0VXV5d/TQmCIAhiiuFru3twcBBr\n1qwBAFy7dg3f/e53sX37dhQKBXR3d2NoaEj4FSza7iZ4aGvwZqLYH1HUOUioPwgeL7HP9z1pL1CQ\nJnjoPt7NRLUfoqq3TciWCRkVuSdNEDag+3g3E7XvSdNDf5OQLRM2oSBNhIIoBSTiVqKWVJQD6g/C\nBhSkiVBAq45oQ1u7t0L9QdiAgjQRCoqrDlp93CCq/RBVvW3C2jL1B+EX328cIwgbsKsOWpVFr/10\nH/ZWqC8IG9BKmggF/INHU3kFEsVdhSjqHARs+2klTdiAVtJEKGBXHVN9BRLl9kdZdxuQHRO2oZU0\nETpo9RG9LX/aAZmE+oCwie8gPTExgfb2dqxevRoAUCgUkEql0NTUhI6ODoyNjflWkog3vFOLUnAK\ngqgFaOJm+OcrCMIPvoP0888/j8WLF6Pqf9aYyWSQSqVw8uRJrFq1CplMxreShB3C5DD4e5i8bmHS\nlXDHVB47Udv5+9RhIUy6EHJ8Belz585h//792LhxY+lVZ319fUin0wCAdDqN3t5e/1oSVghThs+/\nNpGe7r6BLlmp9LiJdAiDTmGGfdFLJe2adqyiia8Hx3784x/jmWeewccff1w6ls/nkUgkAACJRAL5\nfF54bU9PT+lzMplEMpn0owrhknJMUF2wVb3feCoHaha+D8LQJzqdpup7q0XJimlflKO/ptp4hIFc\nLodcLuerDs8/sPH666/jwIED+MUvfoFcLofnnnsOr732GqqrqzE6OloqV1NTg0KhcLPQGP/ARhyd\nk582eXFQrLOLW1+awPZHGFZgKkQ/JhHHOaBDZrOmfeG1z+LY13FsUxEvsc/zSvqtt95CX18f9u/f\nj08++QQff/wx1q9fj0QigZGREdTV1WF4eBi1tbVeRUQSG8blxUj9Grab63WBw82vAMm2SqO+uvaj\nqyzYhan9RV1E+pTLDisJr6fq6XaTRIudL6rdJV09Kh3dUqnEIQrjX06s/FTl4cOH8eyzz+K1117D\n1q1b8bnPfQ7btm1DJpPB2NjYLQ+PxXklLaMSzqdSDk/kTGQrLV1ZG7roAr7K+VV63Ewcs9sEy812\ntJtEq1L3Xt0ENVHZoO1NlmzJdpAqNWenin+qJBX9qcri091PPvkkDh06hKamJvz5z3/Gk08+aUtE\nxZBlx26e2rS1wnZDuR0lK1d2n9JkYvIBym27TbbL+VWQSbmg4O1IppvM3kyCKB8A2PFQIbsNIRtv\nVbAMCtXYmdzTFwVVU3gblQVovr9E80Ckb7keyvO6Yg5SpsjepuJDi1ZW0q6FRmwlzU+0KDwYo3MO\nqozf7f1FN6s90y1cLzq4GY+gV1Ru5LrRy3SlBtjZqrShj05GUPi9XeB2t0FVXrWTpLoGcGf7brbM\nZT4irPBtq+TOg1cqupKOM+wqQbUSUWV1fjI+UfYoq48/XtSZX+nwk5Od1PxKTlY3L0OlF1+3ySpO\ntPKW7Wq4nagmKyqdbraRtU0nT7ci48dZtRoxWXmy1/F2JKrTFn53krzYiMkumqluoqAiC6TFvtX1\nv6w+0fwuHhf5ApMVvNd2qzD1mSL/pOufuEBBWkLRIE2CSRHeMYq2GdlzKrns33wA5LdARXXptkh1\n23QifXTBUhQc2OvZv03qEukg0k/mTGXlZcfdBBu3To1fwZjqKEqy3NgPr6uf7V5+7ERJnWnSytan\nSkRMV3my4OEngeBXqCyi46qAK7pG1nZZ8OHHVqab6DxvN7IAzpYXndeNtRfblI2VSH9RnaL/4wQF\naQmibE00SVRbtbLzKmcjO6eTw/4tm4iiSWgSNGSrbt3E4Nsv+1vVZllAcDsZdSsAL2Olk8XuMPDt\nljks1apG5aBljlSEm/O6JE3VBlnCJhtTmZ2ZIFs1y4KNSfLNluM/8+V0NqyzLVWSXPxf5QNMkliR\nPFGQ4+uTJfwq+xahO65LiER+WDbucYKCNAdvnHy2L3IkPLrAJ8ps+XMi+MDIOyDe2ckyX1E5lS46\nxylLYkROjZdnknWbOFXVSoFvq4nOojp0Tl20IhG1STU2ojpNEikTvLRHZ4u6AMEnDypbK5Yz1U0m\nT9bvboMiX06UdMiCnUwvUf2iQFn8XzfXZOMgOs9fz9YpkqOzSf6Y7DpVAiCrQ3RcdY3p8ShCQVqA\nzLmIyumcmCposfW6cVoih2BSj2iCqHQRrUZEE0jUTr4sP4l1Kz5ZAiKqx23g4+tRORaZTnxZmQPn\n/5fJY6+TIXK0ojGStUPl8HXyZEFL1w6ZDcgSN75dMv1UjlxUlyiYiuqQ9bEoCKnmk0hf3bwXBVxZ\n0iiak7xuOtvgr+HnmWqMWH10c0imhyqx4XUslpMlW6oyUYee7tbgdcBl18myRf4aUZCWOTw3+siy\nb10QlDmtIirdVBm0Sn+RLqq2sOdUfeAWWQDgZfM6m+hgorsq0MquVzl/0fizmPapqS2b/G1yrYnt\nuUHVLl2CyZ/T6WHaz6J6RO019RWyhELUFh2yxEsm14vNyM7p9IpIOPEU+yhIM5hOTlkWzuIm2JpO\nVlV9JoFQJEslzzSgyFYZ7DleHy8TUqa/SFfZ9awOJnWy+srapDpuGkRNUMnVJQ8i+bLzsgTOq97s\ndabBw0SuyObdzC2dzej6iJenwiQZFsk18RcyfVVJrMqeRZj6CzdlTfyFiQ3rkocwUdbXgsYV2STQ\nZYs6gyuW1QVSvi6TgM2eV42/SnZVlTrQy5AFJv5vXi+vgUkkgz8mO8+fE42fyfiI5MrG1jQYqOTo\nEj1ed5Hd8fbEn1O1T3ZMpbepLekSRtkck+kmszVVABOV421E1UcmAVtm/6r+8aKDydzTBUJR3apr\nVGMisxW+70VzSDReMruQtS0O+Lon/cknn2DlypVoa2vD4sWLsX37dgBAoVBAKpVCU1MTOjo6MDY2\nZkXZoGGNALjZ8Nkgxp5jP6sMUuQQTOrSBTeRAxbVx040nVGLJrWoHll5/lo3x2W68GPD9ivfV7q6\nReVVyZnImcjawY83f54dA14P0wAtwySYyz6LnLsIPqGTwfelyN75fuIdMd8uUWAVXcOfl+nBI0qM\nZWMkskcTdHNHNWbF87K5KLJrWZ+zx2T+gkdlpzrfyctlj4mCMV+PSCdRX4jqjDq+t7uvXr2KO+64\nA9euXcNXv/pVPPvss+jr68Ps2bOxdetW7Nq1C6Ojoze9vzus291FRA5blnnLyouOq4KkaDJ5yXhl\nzpzXQ6SXTpZqxSDSW9UXOnQrAJkOJsd15XT9orIL2djqypn0jUl9buo3LSsL4Cb2yF4nql82pqr2\n6WzW1E55WXw5XTB3c42snEnSZyqfP6fzPzJ/YNoW1fwQfRZdZzIn+HJ8+0TXhDW8VOSNY3fccQcA\nYHx8HBMTE6iurkZfXx/S6TQAIJ1Oo7e316+YiiDLaIuZGpu9qQyG/ZvPJov18ZkgX16ELJOWZZSq\nAKRzSLqgydchc6QivUWI+ql4nO0v/hr+OO942PaIZMqOs30pcmSi/hONH6+/qn9ZRHrJbERkd3w9\nItuT2bIq8dCNo0x/3sZlbWD7i9WFvU4V5GQ66MqJbF0VcEyDmso2i4j6Q9Z/Jm1h/xcFPpVdi/Tm\nYcdBFOhlflCkiy4BktmlqD1xwfc96evXr2P58uX417/+hU2bNqGlpQX5fB6JRAIAkEgkkM/nb7mu\np6en9DmZTCKZTPpVxRqqwRYZiSzwqTJenSMVBTyRo+LliyaLTn9dedMMVTb5ZfWZoEqU2MBSlC/L\nuEWfWb1NHCx7nekqQtZe0XmZHrJyfPtZ/URjq3NwsnMm46rTmT3Gy5GNj2i8eT1UwZ+XyZdXJT6i\nNvB2JfpfhZt5pjqvshnVuKr8EVvG1CZVdZkmMrwdq/ycqG6R7mEil8shl8v5qsPa090XL17Egw8+\niJ07d+KRRx7B6Oho6VxNTQ0KhcKk0Krwb3cXERkbe07lOGTOSXdMFrR1WSaro+x6XUDj2+pnkhfL\nmuitq0/XDpF+ovHi6+bPqfpDVkb0t0onXfBSoQrYonbIxlvWf7q+M7EBkb7s3271VH2WzU8TGzBJ\ntGRt8DKGqr5wkwiZzk1Z+3hdZO1TtUs2T9hrTPyerg9Uc9pkPoeNiv7Axl133YVvfetbeOedd5BI\nJDAyMgIAGB4eRm1trS0xZaGYrbLwGT6b5YkyPj5D5OvhP7PXy7JQtl7RdSLdZY6L118UbHSydG0Q\nfebbYopsRcT3M98XMjlseV0A4seALSNyhCx8P6ockA6ZLFVCxK5MWH3Y63g75ftS1Me6drPyZLqL\nxkxWhq+PPa8aF3aMRTbOfubtlddZNp9NkyyZbqLPvFxRPex50Rzj264LeqL6dQFapZ+qn3S2L/Md\nsrHkz8cJX0H6woULpSe3//vf/+LQoUNob29HZ2cnstksACCbzaKrq8u/pmVC5JD5ScA6Bt5JmGRz\nquxUFJRlwUfXBlFZPkDw15gGZZMAI+obU4fGy+f7nq+Db5NuZcEGnuI5dvKrEh/+uChxkwUP9ryb\nYMfKE+ks6wdVUBMFJdNVlJcESxT8eb14nVSBS9bvon6SJS+qeS2yseI5kY6miOxDZQeipEqV5LHn\nRX7MbeIt04dvP+8bRHJE81c050Rjp0rITPsyivja7n7vvfeQTqdx/fp1XL9+HevXr8eWLVtQKBTQ\n3d2NoaEhNDQ0YO/evZg1a9ak0KpwbnfLHLso6+QdGf+/6HpReVm9omtlOrppg6i8LpDJnIBbvFxn\nmgywZUwCjRc9Vc5NtkKRjX3xnMxu3Ohoem25rmGvLSJrN19WN3dY3CbBOl1N9bIhz6+eomO6/jVJ\nuEz9C19GlRTLfKWpHrK5JapbJ6fS0BvHfCJznvyxYllVcPMq363j0umvk6HTxaS8rF9MHJxbZPWL\nkiX+nEmdbuTrrrctF1AnfLrkQuXcVfqbOGAT/d3YkdtjXuWaJE6m/ewVk8WBSd/xdejK6+zBjV2b\nJKmmyJIxWSAWyfUqO2goSPtEl336mZxug6upsenKucmuVZNAhC5xUemhaxd/rWrye3HuulWZiSNi\ny5mW94qfYKUbFz912AhYqn7y0uey5Jmtx09C4CYBVF3Ht0tUXmavPCaLCNVcl+likpiI+tj0Oj+2\n46a9YaGiD47FhaLBqVZssmtUqBwHe172v0qm48jLFc+ZTEr2b1GioJKj05W9VlePql43TrT4ufhP\nNn5sv+hWjbI+48u7cWomqNqowqScn7rcOkKZrOLYiBy+qs9lAcI0CLLzXaQjP2dEtmyKaA7okmBW\nJnuM7xfe3lRzW7QKVfkPXcIu0knm77ysdHm5otWzri+jDAVpDl32JzoumsgsvPMxDf7s9Xy9oskj\nM2aZ3iKnyKJyRKpz/KT0ktGqkiFVMiHST+Q8VKsjr7qKgoOq79jr3ToYXdJn4oD58zId/KxKdDsW\n7DFRsqTSS4YsweLLmCSOsvH0mqyLdJUlC2wZtixv/7qxkdmXKLEUXSeSq9KXLcMmI6I6ZP2o8l26\nhCJu0Ha3ABPHwpbVrSBVWz+irNarriIH4jdAmlxvWt5tW90EB36nQPTZRKeiXrKxEzka1d+q427G\n3FSO7BrR6oP/260ebq5hZcnqk5WXBYhiGdEYic67bZPb5MTNmJjoVMTmHHSjl586RQsQkf2a9Idp\nv7Lywhpe6J50APgdcN2kd+vAZGVkk0w3Sby0R6ZvENfJ6hK1SxXIVAmS7Lyp7l76spyORGYTlXBo\nXgIfYLbKVcnSJU+yRMBL0DfBz3zwM3dVbZSdM5Gp6l+2Hq/1qwhzUOahe9KWYLdbVIan+lyEvV42\nCWRbQG5WSuz/osnH1+U2Oze9TnRN8TpbE4ltq+kk18l2c17UxuIx1Tn2s86u3KKSK7JB/n9dHbZ0\n4oOeiVzVKlqlo4m9ycrwfcbamg07Vs0HL33O+g2VTBMdZD7DpG5eD36OymSb+lmVTzLpgyhCQVqA\nyEBlTsPUkHnjkTkYnWy+rJskwY0TVgU9tytK2xPHNHnwujI2rYc9b+rA/SQSIvjx9+qo2BUl6xB1\ngVCFif3IbMZNf7oJxrL+MbWfIIKAyAeo5Mh0lV1ncky002KCG/9l6tdEmCSVNhcCYYKCtCVUW9ki\nZ1d0FiZOUGfc/CRwE1z9TBz+OtPJ6abOIK4zWcG4dZKqumw6DtFKpfi/aHWiCuK6FagoGdVd6xbZ\nLpJJeR6T8dM5cts7ByaIgqKf5Ii/zk0CKwuGqpWyTg8++eOPi3QmJvEVpM+ePYv7778fLS0tWLJk\nCXbv3g0AKBQKSKVSaGpqQkdHR+nVoVHBdEVq6lBkW9C6+lX1yrbL/eJ2S08ViP3qZZpsyByc6JwM\nfkyC0N1GgOPHm0/6imVkW92yVb+pvn63fFVO2a8tqxIUU73c2JZKvlt0tm7aFr/jo9PBbZKjCvpu\n5pzKFlXy44CvB8dGRkYwMjKCtrY2XL58GStWrEBvby9efvllzJ49G1u3bsWuXbswOjqKTCYzKbQq\nvA+OyVaEphljUDqYXAOotxJt6ugGvytqL/JUKwHbK1uRw9Ft/Qelj0g322X96KGzBdFYBTVm/GfR\n30FS7nnBy1b5Oa+6ldsPquZZGENM2R8cq6urQ1tbGwDgzjvvxKJFi3D+/Hn09fUhnU4DANLpNHp7\ne/2IKSteV4S67UAv919UmGT4qtW6rj6351XYWu3b2I62vdUpW7moVkY2V+wq3NRdLj10tiDqGxur\ndpUM0+1bP3NapoeffjeRb9IHomNeV6lu2iPrTzcJguluW5S5zVZFZ86cwdGjR7Fy5Urk83kkEgkA\nQCKRQD6fv6V8T09P6XMymUQymbSlijW8ZPUm29k6WSboJpnbDFMn22tGbTOj9RrcTMt60dNt+4LI\n8Pm+9iPDZl0mcoIqD9gfd7dz2hSvOz1eg5ipb/DbXhNfyf/tdvUctJ36JZfLIZfL+arDyvekL1++\njK9//et46qmn0NXVherqaoyOjpbO19TUoFAoTAoN6XZ3pQdaJ9/NAxs25Hkt66W8X4LcEg1STpCE\nZbvbNqa3EoKUFQReb3OZ7rzZ3s3S+aow+9JKUZHvSX/66adYu3Yt1q9fX/rd6EQigZGREQDA8PAw\namtr/YopC6bGrtv2Mt0Gc/NQSvG8ja1jlX6y7XqT7S/bSYQb3AQj0WfT+mTHTfo0aHRwKsOZAAAL\nDklEQVRjpmq7qmyQeOk301sJsvps33qyBb8TxmLSF6a2bePWldudN68+Ubclbio/yvgK0o7jYMOG\nDVi8eDE2b95cOt7Z2YlsNgsAyGazpeAdZdgsXbcNFOT2qg1M7vV52UoLsj22gobbLXMvztLNOV29\nbq5zs7Lh78XyqAKGF91M5Lg5ZxqQRPXZXmkHgZe5ZdqXlfA7tm4p8GNYrmSykvja7n7zzTfxta99\nDcuWLUPV/3pr586duPfee9Hd3Y2hoSE0NDRg7969mDVr1qTQkG53uyGs2ynlJmr9EMSWqFv5NnZC\nKnEfzlbfVdpmKi3fLVHTN0ii3hf07u4yY/M+j9v7n17vEYf9QQs/lKNNcey3qEHj7A3R3Lf1rIlN\nX+VWdpSgd3f7xO3WiW5L0M02nKisl61A3XYs+3+QW0WV2IZy0yav+nl1EqJnGcqNly3iIKnEGJiW\nq0QwKNeY6La+bT2r4WbnRSbT63MuYbBvW9BKugwE+dRmueohCCK+2LwNU265UYJW0iHFixHaetjI\n9tcuwo4fXaPUTkLNVLGDIB6o9ConKD831aEgzRGlCWpjYumIWqbrR1cvX6/ySzntrZLb3eXuwyDs\nIIzYfMrZyzZ3GImSDzeBtrsJLVEL1GGC+s4M6ifvUN9FB9ruDoi4ZWZuIQfgnXL3nZcXdvDXV+qh\nP8IbU7nvpoJvpiBtgOkkiJPBhL0tYdePp9xP7np13CZvk7IFjaFdwq6fW8r1zE3YoSAtoNxfDdFR\nidWN19f6hYmgdXZT/1RwJm4J21dqom7jlfraWLneumZCFMdQh68g/cQTTyCRSGDp0qWlY4VCAalU\nCk1NTejo6MDY2JhvJctN2BxqOVc3Kh3ChN/XJJZLhzg6DduEZcWkkxG2OQBUXqcw+CaWMOliC19B\n+vHHH0d/f/9NxzKZDFKpFE6ePIlVq1Yhk8n4UpAIF1ENOn71DtvuSpwI+uUkQV1fSaKsO+EO3093\nnzlzBqtXr8Z7770HAGhubsbhw4dLv4SVTCbxwQcf3CyUnu4mCIIgphheYt9ttpXI5/NIJBIAbvxk\nZT6fF5br6ekpfU4mk0gmk7ZVIYjIEZev08SlHQThh1wuh1wu56sO6yvp6upqjI6Ols7X1NSgUCjc\nLJRW0gRBEMQUIxTfky5ucwPA8PAwamtrbYsIDXRfiCAIojxMVX9rPUh3dnYim80CALLZLLq6umyL\nCA1eXiZPEAQx1fHiC6fq5quv7e5169bh8OHDuHDhAhKJBH72s5/h4YcfRnd3N4aGhtDQ0IC9e/di\n1qxZNwul7W6iAtB9UqII2QJRCbzEPnp3NxFqyJkSYYdslDAlFPekCcImYXsrlRfCqlcYCGvf0Nvk\niLBAQZrwTNgcbFidZVj1CgNh7Zsw6hW2+UaUBwrShBG2f7OXIAh3xOF9+oR7KEgTRlBAJohwQXNy\nakBBmiAIgiBCCgVpgiAIgggpFKQJgiAIIqQEFqT7+/vR3NyMhQsXYteuXUGJCSV+X6gedtj2xfHh\nlak0fnEjjm1j51gc28cS9/Z5IZAgPTExgR/+8Ifo7+/HsWPH8Morr+D48eNBiAolcTc0tn1xfHhl\nKo1f3Ihj29g5Fsf2scS9fV4IJEgPDAxgwYIFaGhowPTp0/HYY49h3759QYgiCIIgiNgSSJA+f/48\n5s+fX/q7vr4e58+fD0IUQRAEQcSWQN7d/fvf/x79/f345S9/CQD49a9/jbfffht79uy5ITSONzIJ\ngiAIQoPbkHtbEErMmzcPZ8+eLf199uxZ1NfXl/6mH9cgCIIgCD2BbHfffffdOHXqFM6cOYPx8XH8\n5je/QWdnZxCiCIIgCCK2BLKSvu222/DCCy/gwQcfxMTEBDZs2IBFixYFIYogCIIgYktg35P+5je/\niRMnTuCf//wntm/fDgDYsmULFi1ahNbWVjzyyCO4ePFiqfzOnTuxcOFCNDc34+DBg0GpFSi//e1v\n0dLSgmnTpuHIkSOl42fOnMFnPvMZtLe3o729HT/4wQ8qqKV3ZO0D4jF+LD09Paivry+NWX9/f6VV\nskLc31/Q0NCAZcuWob29Hffee2+l1fHFE088gUQigaVLl5aOFQoFpFIpNDU1oaOjA2NjYxXU0B+i\n9sVp3p09exb3338/WlpasGTJEuzevRuAhzF0ysjBgwediYkJx3EcZ9u2bc62bdscx3Gc999/32lt\nbXXGx8edwcFBp7GxsVQuShw/ftw5ceKEk0wmnXfeead0fHBw0FmyZEkFNbODrH1xGT+Wnp4e57nn\nnqu0Gla5du2a09jY6AwODjrj4+NOa2urc+zYsUqrZZWGhgbno48+qrQaVvjLX/7iHDly5CbfsWXL\nFmfXrl2O4zhOJpMp+dAoImpfnObd8PCwc/ToUcdxHOfSpUtOU1OTc+zYMddjWNbXgqZSKfzf/90Q\nuXLlSpw7dw4AsG/fPqxbtw7Tp09HQ0MDFixYgIGBgXKqZoXm5mY0NTVVWo3AkLUvLuPH48TsAcep\n8v6CuIzbfffdh+rq6puO9fX1IZ1OAwDS6TR6e3sroZoVRO0D4jN+dXV1aGtrAwDceeedWLRoEc6f\nP+96DCv27u6XXnoJDz30EADgP//5z01Pf8fxe9WDg4Nob29HMpnEm2++WWl1rBLX8duzZw9aW1ux\nYcOGSG8rFpkK7y+oqqrCAw88gLvvvrv0FdA4kc/nkUgkAACJRAL5fL7CGtknbvMOuHHL8+jRo1i5\ncqXrMbT+4FgqlcLIyMgtx59++mmsXr0aALBjxw7MmDED3/nOd6T1hPW71Cbt4/n85z+Ps2fPorq6\nGkeOHEFXVxfef/99zJw5M2h1XeOlfSLCOn4ssrbu2LEDmzZtwk9/+lMAwFNPPYWf/OQnePHFF8ut\nolWiMCZ++dvf/oa5c+fiww8/RCqVQnNzM+67775KqxUIVVVVsRvTOM67y5cvY+3atXj++edv8fkm\nY2g9SB86dEh5/le/+hX279+PP/3pT6Vj/Peqz507h3nz5tlWzQq69omYMWMGZsyYAQBYvnw5Ghsb\ncerUKSxfvty2er7x0r4ojR+LaVs3btzoKkEJK7r3F8SBuXPnAgDmzJmDNWvWYGBgIFZBOpFIYGRk\nBHV1dRgeHkZtbW2lVbIK2544zLtPP/0Ua9euxfr169HV1QXA/RiWdbu7v78fzzzzDPbt24fbb7+9\ndLyzsxOvvvoqxsfHMTg4iFOnTkX+yUz2vsqFCxcwMTEBADh9+jROnTqFL33pS5VSzQps++I4fsPD\nw6XPf/zjH296AjWqxP39BVevXsWlS5cAAFeuXMHBgwdjMW4snZ2dyGazAIBsNlty/HEhTvPOcRxs\n2LABixcvxubNm0vHXY9hgA+33cKCBQucL3zhC05bW5vT1tbmbNq0qXRux44dTmNjo/PlL3/Z6e/v\nL6da1vjDH/7g1NfXO7fffruTSCScb3zjG47jOM7vfvc7p6WlxWlra3OWL1/uvP766xXW1Buy9jlO\nPMaPZf369c7SpUudZcuWOQ8//LAzMjJSaZWssH//fqepqclpbGx0nn766UqrY5XTp087ra2tTmtr\nq9PS0hL59j322GPO3LlznenTpzv19fXOSy+95Hz00UfOqlWrnIULFzqpVMoZHR2ttJqe4dv34osv\nxmre/fWvf3Wqqqqc1tbWUsw7cOCA6zEM5N3dBEEQBEH4p2JPdxMEQRAEoYaCNEEQBEGEFArSBEEQ\nBBFSKEgTBEEQREihIE0QBEEQIYWCNEEQBEGEFArSBEEQBBFS/h/HJfuCSEYNkAAAAABJRU5ErkJg\ngg==\n"
}
],
"prompt_number": 135
},
{
"cell_type": "markdown",
"metadata": {},
"source": "There are additional signal processing routines in Scipy that you can [read about here](http://docs.scipy.org/doc/scipy/reference/tutorial/signal.html)."
},
{
"cell_type": "markdown",
"metadata": {},
"source": "# III. Intermediate Python\n\n## Output Parsing\nAs more and more of our day-to-day work is being done on and through computers, we increasingly have output that one program writes, often in a text file, that we need to analyze in one way or another, and potentially feed that output into another file.\n\nSuppose we have the following output:"
},
{
"cell_type": "code",
"collapsed": false,
"input": "myoutput = \"\"\"\\\n@ Step Energy Delta E Gmax Grms Xrms Xmax Walltime\n@ ---- ---------------- -------- -------- -------- -------- -------- --------\n@ 0 -6095.12544083 0.0D+00 0.03686 0.00936 0.00000 0.00000 1391.5\n@ 1 -6095.25762870 -1.3D-01 0.00732 0.00168 0.32456 0.84140 10468.0\n@ 2 -6095.26325979 -5.6D-03 0.00233 0.00056 0.06294 0.14009 11963.5\n@ 3 -6095.26428124 -1.0D-03 0.00109 0.00024 0.03245 0.10269 13331.9\n@ 4 -6095.26463203 -3.5D-04 0.00057 0.00013 0.02737 0.09112 14710.8\n@ 5 -6095.26477615 -1.4D-04 0.00043 0.00009 0.02259 0.08615 20211.1\n@ 6 -6095.26482624 -5.0D-05 0.00015 0.00002 0.00831 0.03147 21726.1\n@ 7 -6095.26483584 -9.6D-06 0.00021 0.00004 0.01473 0.05265 24890.5\n@ 8 -6095.26484405 -8.2D-06 0.00005 0.00001 0.00555 0.01929 26448.7\n@ 9 -6095.26484599 -1.9D-06 0.00003 0.00001 0.00164 0.00564 27258.1\n@ 10 -6095.26484676 -7.7D-07 0.00003 0.00001 0.00161 0.00553 28155.3\n@ 11 -6095.26484693 -1.8D-07 0.00002 0.00000 0.00054 0.00151 28981.7\n@ 11 -6095.26484693 -1.8D-07 0.00002 0.00000 0.00054 0.00151 28981.7\"\"\"",
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 136
},
{
"cell_type": "markdown",
"metadata": {},
"source": "This output actually came from a geometry optimization of a Silicon cluster using the [NWChem](http://www.nwchem-sw.org/index.php/Main_Page) quantum chemistry suite. At every step the program computes the energy of the molecular geometry, and then changes the geometry to minimize the computed forces, until the energy converges. I obtained this output via the unix command\n\n % grep @ nwchem.out\n\nsince NWChem is nice enough to precede the lines that you need to monitor job progress with the '@' symbol.\n\nWe could do the entire analysis in Python; I'll show how to do this later on, but first let's focus on turning this code into a usable Python object that we can plot.\n\nFirst, note that the data is entered into a multi-line string. When Python sees three quote marks \"\"\" or ''' it treats everything following as part of a single string, including newlines, tabs, and anything else, until it sees the same three quote marks (\"\"\" has to be followed by another \"\"\", and ''' has to be followed by another ''') again. This is a convenient way to quickly dump data into Python, and it also reinforces the important idea that you don't have to open a file and deal with it one line at a time. You can read everything in, and deal with it as one big chunk.\n\nThe first thing we'll do, though, is to split the big string into a list of strings, since each line corresponds to a separate piece of data. We will use the **splitlines()** function on the big myout string to break it into a new element every time it sees a newline (\\n) character:"
},
{
"cell_type": "code",
"collapsed": false,
"input": "lines = myoutput.splitlines()\nlines",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 137,
"text": "['@ Step Energy Delta E Gmax Grms Xrms Xmax Walltime',\n '@ ---- ---------------- -------- -------- -------- -------- -------- --------',\n '@ 0 -6095.12544083 0.0D+00 0.03686 0.00936 0.00000 0.00000 1391.5',\n '@ 1 -6095.25762870 -1.3D-01 0.00732 0.00168 0.32456 0.84140 10468.0',\n '@ 2 -6095.26325979 -5.6D-03 0.00233 0.00056 0.06294 0.14009 11963.5',\n '@ 3 -6095.26428124 -1.0D-03 0.00109 0.00024 0.03245 0.10269 13331.9',\n '@ 4 -6095.26463203 -3.5D-04 0.00057 0.00013 0.02737 0.09112 14710.8',\n '@ 5 -6095.26477615 -1.4D-04 0.00043 0.00009 0.02259 0.08615 20211.1',\n '@ 6 -6095.26482624 -5.0D-05 0.00015 0.00002 0.00831 0.03147 21726.1',\n '@ 7 -6095.26483584 -9.6D-06 0.00021 0.00004 0.01473 0.05265 24890.5',\n '@ 8 -6095.26484405 -8.2D-06 0.00005 0.00001 0.00555 0.01929 26448.7',\n '@ 9 -6095.26484599 -1.9D-06 0.00003 0.00001 0.00164 0.00564 27258.1',\n '@ 10 -6095.26484676 -7.7D-07 0.00003 0.00001 0.00161 0.00553 28155.3',\n '@ 11 -6095.26484693 -1.8D-07 0.00002 0.00000 0.00054 0.00151 28981.7',\n '@ 11 -6095.26484693 -1.8D-07 0.00002 0.00000 0.00054 0.00151 28981.7']"
}
],
"prompt_number": 137
},
{
"cell_type": "markdown",
"metadata": {},
"source": "Splitting is a big concept in text processing. We used **splitlines()** here, and we will use the more general **split()** function below to split each line into whitespace-delimited words.\n\nWe now want to do three things:\n\n* Skip over the lines that don't carry any information\n* Break apart each line that does carry information and grab the pieces we want\n* Turn the resulting data into something that we can plot.\n\nFor this data, we really only want the Energy column, the Gmax column (which contains the maximum gradient at each step), and perhaps the Walltime column. \n\nSince the data is now in a list of lines, we can iterate over it:"
},
{
"cell_type": "code",
"collapsed": false,
"input": "for line in lines[2:]:\n # do something with each line\n words = line.split()",
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 138
},
{
"cell_type": "markdown",
"metadata": {},
"source": "Let's examine what we just did: first, we used a **for** loop to iterate over each line. However, we skipped the first two (the lines[2:] only takes the lines starting from index 2), since lines[0] contained the title information, and lines[1] contained underscores.\n\nWe then split each line into chunks (which we're calling \"words\", even though in most cases they're numbers) using the string **split()** command. Here's what split does:"
},
{
"cell_type": "code",
"collapsed": false,
"input": "import string\nhelp(string.split)",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": "Help on function split in module string:\n\nsplit(s, sep=None, maxsplit=-1)\n split(s [,sep [,maxsplit]]) -> list of strings\n \n Return a list of the words in the string s, using sep as the\n delimiter string. If maxsplit is given, splits at no more than\n maxsplit places (resulting in at most maxsplit+1 words). If sep\n is not specified or is None, any whitespace string is a separator.\n \n (split and splitfields are synonymous)\n\n"
}
],
"prompt_number": 139
},
{
"cell_type": "markdown",
"metadata": {},
"source": "Here we're implicitly passing in the first argument (s, in the doctext) by calling a method .split() on a string object. In this instance, we're not passing in a sep character, which means that the function splits on whitespace. Let's see what that does to one of our lines:"
},
{
"cell_type": "code",
"collapsed": false,
"input": "lines[2].split()",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 140,
"text": "['@',\n '0',\n '-6095.12544083',\n '0.0D+00',\n '0.03686',\n '0.00936',\n '0.00000',\n '0.00000',\n '1391.5']"
}
],
"prompt_number": 140
},
{
"cell_type": "markdown",
"metadata": {},
"source": "This is almost exactly what we want. We just have to now pick the fields we want:"
},
{
"cell_type": "code",
"collapsed": false,
"input": "for line in lines[2:]:\n # do something with each line\n words = line.split()\n energy = words[2]\n gmax = words[4]\n time = words[8]\n print energy,gmax,time",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": "-6095.12544083 0.03686 1391.5\n-6095.25762870 0.00732 10468.0\n-6095.26325979 0.00233 11963.5\n-6095.26428124 0.00109 13331.9\n-6095.26463203 0.00057 14710.8\n-6095.26477615 0.00043 20211.1\n-6095.26482624 0.00015 21726.1\n-6095.26483584 0.00021 24890.5\n-6095.26484405 0.00005 26448.7\n-6095.26484599 0.00003 27258.1\n-6095.26484676 0.00003 28155.3\n-6095.26484693 0.00002 28981.7\n-6095.26484693 0.00002 28981.7\n"
}
],
"prompt_number": 141
},
{
"cell_type": "markdown",
"metadata": {},
"source": "This is fine for printing things out, but if we want to do something with the data, either make a calculation with it or pass it into a plotting, we need to convert the strings into regular floating point numbers. We can use the **float()** command for this. We also need to save it in some form. I'll do this as follows:"
},
{
"cell_type": "code",
"collapsed": false,
"input": "data = []\nfor line in lines[2:]:\n # do something with each line\n words = line.split()\n energy = float(words[2])\n gmax = float(words[4])\n time = float(words[8])\n data.append((energy,gmax,time))\ndata = array(data)",
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 142
},
{
"cell_type": "markdown",
"metadata": {},
"source": "We now have our data in a numpy array, so we can choose columns to print:"
},
{
"cell_type": "code",
"collapsed": false,
"input": "plot(data[:,0])\nxlabel('step')\nylabel('Energy (hartrees)')\ntitle('Convergence of NWChem geometry optimization for Si cluster')",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 143,
"text": "<matplotlib.text.Text at 0x11116cf90>"
},
{
"output_type": "display_data",
"png": "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\n"
}
],
"prompt_number": 143
},
{
"cell_type": "markdown",
"metadata": {},
"source": "I would write the code a little more succinctly if I were doing this for myself, but this is essentially a snippet I use repeatedly. \n\nSuppose our data was in CSV (comma separated values) format, a format that originally came from Microsoft Excel, and is increasingly used as a data interchange format in big data applications. How would we parse that?"
},
{
"cell_type": "code",
"collapsed": false,
"input": "csv = \"\"\"\\\n-6095.12544083, 0.03686, 1391.5\n-6095.25762870, 0.00732, 10468.0\n-6095.26325979, 0.00233, 11963.5\n-6095.26428124, 0.00109, 13331.9\n-6095.26463203, 0.00057, 14710.8\n-6095.26477615, 0.00043, 20211.1\n-6095.26482624, 0.00015, 21726.1\n-6095.26483584, 0.00021, 24890.5\n-6095.26484405, 0.00005, 26448.7\n-6095.26484599, 0.00003, 27258.1\n-6095.26484676, 0.00003, 28155.3\n-6095.26484693, 0.00002, 28981.7\n-6095.26484693, 0.00002, 28981.7\"\"\"",
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 144
},
{
"cell_type": "markdown",
"metadata": {},
"source": "We can do much the same as before:"
},
{
"cell_type": "code",
"collapsed": false,
"input": "data = []\nfor line in csv.splitlines():\n words = line.split(',')\n data.append(map(float,words))\ndata = array(data)",
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 145
},
{
"cell_type": "markdown",
"metadata": {},
"source": "There are two significant changes over what we did earlier. First, I'm passing the comma character ',' into the split function, so that it breaks to a new word every time it sees a comma. Next, to simplify things a big, I'm using the **map()** command to repeatedly apply a single function (**float()**) to a list, and to return the output as a list."
},
{
"cell_type": "code",
"collapsed": false,
"input": "help(map)",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": "Help on built-in function map in module __builtin__:\n\nmap(...)\n map(function, sequence[, sequence, ...]) -> list\n \n Return a list of the results of applying the function to the items of\n the argument sequence(s). If more than one sequence is given, the\n function is called with an argument list consisting of the corresponding\n item of each sequence, substituting None for missing values when not all\n sequences have the same length. If the function is None, return a list of\n the items of the sequence (or a list of tuples if more than one sequence).\n\n"
}
],
"prompt_number": 146
},
{
"cell_type": "markdown",
"metadata": {},
"source": "Despite the differences, the resulting plot should be the same:"
},
{
"cell_type": "code",
"collapsed": false,
"input": "plot(data[:,0])\nxlabel('step')\nylabel('Energy (hartrees)')\ntitle('Convergence of NWChem geometry optimization for Si cluster')",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 147,
"text": "<matplotlib.text.Text at 0x111172690>"
},
{
"output_type": "display_data",
"png": "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\n"
}
],
"prompt_number": 147
},
{
"cell_type": "markdown",
"metadata": {},
"source": "Hartrees (what most quantum chemistry programs use by default) are really stupid units. We really want this in kcal/mol or eV or something we use. So let's quickly replot this in terms of eV above the minimum energy, which will give us a much more useful plot:"
},
{
"cell_type": "code",
"collapsed": false,
"input": "energies = data[:,0]\nminE = min(energies)\nenergies_eV = 27.211*(energies-minE)\nplot(energies_eV)\nxlabel('step')\nylabel('Energy (eV)')\ntitle('Convergence of NWChem geometry optimization for Si cluster')",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 148,
"text": "<matplotlib.text.Text at 0x111196ed0>"
},
{
"output_type": "display_data",
"png": "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\ntGny7LPPiojIkiVL5K9//au8//77BrcNGzasyc/tvHnzxNHRUdLT06WqqkrmzJkjd955p4jo3mz1\n6dNH/u///k8qKirk1KlTctttt8l///tfg/t+9dVXotVqZcqUKRIcHCwLFy4UrVYr77//voSGhtb5\nuDdv3pSgoCBZvny5aLVa2bRpkzg4OOiPT33Hvby8XMrLy6Vr166yaNEiqaiokJ07d4qrq6v8+uuv\nIqIL886dO8vBgwelrKxMhg4dKsHBwbJu3TqpqqqSuXPnypAhQ5q0jykpKTJ58mSD2mNjYyU4OFh+\n/vlnqayslJs3b4qXl5f88ssv+nUiIyNl06ZNde774MGD5emnn5abN2/KoUOHxNvbW3bu3Kk/pvb2\n9vLvf/9btFqtLF26VEJDQ0Wr1YqISEhIiMEbwbrCPCwsTE6dOiVXr16ViIgI6datm+zYsUP/HE2b\nNk1//+owv9Wjjz4qjzzyiIjownz79u1SXl4uFy5ckLvvvltmz56tX7exmhrb3/pef3W59bGaciw3\nb94sIiKlpaW1tnfPPffIXXfdJRs2bJAzZ84YLGsozLVarfTq1Uuef/55KSkpkbKyMtm9e7eINB7m\ncXFx+jcWCQkJsnDhQhHR/U1Ub0Ok9nPT0N+EiC7Mo6KiJC8vT8rKyuo9hkrBMG+mjz/+WLp06dLg\nOl27djVoxf73v/+VkJAQEdGFeceOHQ1erD4+PrJ3714REZk7d6489thjIiJy7do1cXZ2lpycHBER\nCQ8PN/jDLCgoEHt7e6msrNT/EZw+fVq/fMiQIbJq1Sr99e3bt+v/UM6dOycdOnQw+IP99NNP9f+0\nV69eLd26ddMvu3HjhqhUKiksLJSCggKxsbHRvwGpacaMGbUC+Pbbb9e3nGtau3atREdHG9w2cOBA\n+eijj0Tk97CuT3XYVwddenp6rTD/6KOPJCoqSkRE4uPjZfv27XLs2DGD21599VURadpzO2/ePBk+\nfLj++tGjR6Vjx44ioutZCQoKMlh/4cKF+jCYN2+ejBgxQr8sNTVVXFxc9D0x165dE5VKJVevXq31\nuN9++62o1WqD2wYNGqQ/1g0d9127dtXar8TERElJSRERXZg/+eST+mV/+9vfJCIiQn/98OHD4uHh\n0eR9nDRpksHyuLg4mTdvnsFtM2bMkJdffllERH766Sfx9PTU/5OtKScnR2xtbaW4uFh/25w5c2Tq\n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\nRK5CYII=\n"
}
],
"prompt_number": 148
},
{
"cell_type": "markdown",
"metadata": {},
"source": "This gives us the output in a form that we can think about: 4 eV is a fairly substantial energy change (chemical bonds are roughly this magnitude of energy), and most of the energy decrease was obtained in the first geometry iteration."
},
{
"cell_type": "markdown",
"metadata": {},
"source": "We mentioned earlier that we don't have to rely on **grep** to pull out the relevant lines for us. The **string** module has a lot of useful functions we can use for this. Among them is the **startswith** function. For example:"
},
{
"cell_type": "code",
"collapsed": false,
"input": "lines = \"\"\"\\\n ----------------------------------------\n | WALL | 0.45 | 443.61 |\n ----------------------------------------\n\n@ Step Energy Delta E Gmax Grms Xrms Xmax Walltime\n@ ---- ---------------- -------- -------- -------- -------- -------- --------\n@ 0 -6095.12544083 0.0D+00 0.03686 0.00936 0.00000 0.00000 1391.5\n ok ok\n\n\n\n Z-matrix (autoz)\n --------\n\"\"\".splitlines()\n\nfor line in lines:\n if line.startswith('@'):\n print line\n ",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": "@ Step Energy Delta E Gmax Grms Xrms Xmax Walltime\n@ ---- ---------------- -------- -------- -------- -------- -------- --------\n@ 0 -6095.12544083 0.0D+00 0.03686 0.00936 0.00000 0.00000 1391.5\n"
}
],
"prompt_number": 267
},
{
"cell_type": "markdown",
"metadata": {},
"source": "and we've successfully grabbed all of the lines that begin with the @ symbol."
},
{
"cell_type": "markdown",
"metadata": {},
"source": "The real value in a language like Python is that it makes it easy to take additional steps to analyze data in this fashion, which means you are thinking more about your data, and are more likely to see important patterns."
},
{
"cell_type": "markdown",
"metadata": {},
"source": "## More Sophisticated String Formatting and Processing\nStrings are a big deal in most modern languages, and hopefully the previous sections helped underscore how versatile Python's string processing techniques are. We will continue this topic in this chapter.\n\nWe can print out lines in Python using the print command. "
},
{
"cell_type": "code",
"collapsed": false,
"input": "print \"I have 3 errands to run\"",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": "I have 3 errands to run\n"
}
],
"prompt_number": 149
},
{
"cell_type": "markdown",
"metadata": {},
"source": "In IPython we don't even need the print command, since it will display the last expression not assigned to a variable."
},
{
"cell_type": "code",
"collapsed": false,
"input": "\"I have 3 errands to run\"",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 150,
"text": "'I have 3 errands to run'"
}
],
"prompt_number": 150
},
{
"cell_type": "markdown",
"metadata": {},
"source": "**print** even converts some arguments to strings for us:"
},
{
"cell_type": "code",
"collapsed": false,
"input": "a,b,c = 1,2,3\nprint \"The variables are \",1,2,3",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": "The variables are 1 2 3\n"
}
],
"prompt_number": 151
},
{
"cell_type": "markdown",
"metadata": {},
"source": "As versatile as this is, you typically need more freedom over the data you print out. For example, what if we want to print a bunch of data to exactly 4 decimal places? We can do this using formatted strings.\n\nFormatted strings share a syntax with the C **printf** statement. We make a string that has some funny *format characters* in it, and then pass a bunch of variables into the string that fill out those characters in different ways.\n\nFor example,"
},
{
"cell_type": "code",
"collapsed": false,
"input": "print \"Pi as a decimal = %d\" % pi\nprint \"Pi as a float = %f\" % pi\nprint \"Pi with 4 decimal places = %.4f\" % pi\nprint \"Pi with overall fixed length of 10 spaces, with 6 decimal places = %10.6f\" % pi\nprint \"Pi as in exponential format = %e\" % pi",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": "Pi as a decimal = 3\nPi as a float = 3.141593\nPi with 4 decimal places = 3.1416\nPi with overall fixed length of 10 spaces, with 6 decimal places = 3.141593\nPi as in exponential format = 3.141593e+00\n"
}
],
"prompt_number": 152
},
{
"cell_type": "markdown",
"metadata": {},
"source": "We use a percent sign in two different ways here. First, the format character itself starts with a percent sign. %d or %i are for integers, %f is for floats, %e is for numbers in exponential formats. All of the numbers can take number immediately after the percent that specifies the total spaces used to print the number. Formats with a decimal can take an additional number after a dot . to specify the number of decimal places to print.\n\nThe other use of the percent sign is after the string, to pipe a set of variables in. You can pass in multiple variables (if your formatting string supports it) by putting a tuple after the percent. Thus,"
},
{
"cell_type": "code",
"collapsed": false,
"input": "print \"The variables specified earlier are %d, %d, and %d\" % (a,b,c)",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": "The variables specified earlier are 1, 2, and 3\n"
}
],
"prompt_number": 153
},
{
"cell_type": "markdown",
"metadata": {},
"source": "This is a simple formatting structure that will satisfy most of your string formatting needs. More information on different format symbols is available in the [string formatting part of the standard docs](http://docs.python.org/release/2.5.2/lib/typesseq-strings.html).\n\nIt's worth noting that more complicated string formatting methods are in development, but I prefer this system due to its simplicity and its similarity to C formatting strings.\n\nRecall we discussed multiline strings. We can put format characters in these as well, and fill them with the percent sign as before."
},
{
"cell_type": "code",
"collapsed": false,
"input": "form_letter = \"\"\"\\\n\n %s\n\nDear %s,\n\nWe regret to inform you that your product did not\nship today due to %s.\n\nWe hope to remedy this as soon as possible.\n\n From,\n Your Supplier\n\"\"\"\n\nprint form_letter % (\"July 1, 2013\",\"Valued Customer Bob\",\"alien attack\")",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": "\n July 1, 2013\n\nDear Valued Customer Bob,\n\nWe regret to inform you that your product did not\nship today due to alien attack.\n\nWe hope to remedy this as soon as possible.\n\n From,\n Your Supplier\n\n"
}
],
"prompt_number": 300
},
{
"cell_type": "markdown",
"metadata": {},
"source": "The problem with a long block of text like this is that it's often hard to keep track of what all of the variables are supposed to stand for. There's an alternate format where you can pass a dictionary into the formatted string, and give a little bit more information to the formatted string itself. This method looks like:"
},
{
"cell_type": "code",
"collapsed": false,
"input": "form_letter = \"\"\"\\\n\n %(date)s\n\nDear %(customer)s,\n\nWe regret to inform you that your product did not\nship today due to %(lame_excuse)s.\n\nWe hope to remedy this as soon as possible.\n\n From,\n Your Supplier\n\"\"\"\n\nprint form_letter % {\"date\" : \"July 1, 2013\",\"customer\":\"Valued Customer Bob\",\"lame_excuse\":\"alien attack\"}",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": "\n July 1, 2013\n\nDear Valued Customer Bob,\n\nWe regret to inform you that your product did not\nship today due to alien attack.\n\nWe hope to remedy this as soon as possible.\n\n From,\n Your Supplier\n\n"
}
],
"prompt_number": 301
},
{
"cell_type": "markdown",
"metadata": {},
"source": "By providing a little bit more information, you're less likely to make mistakes, like referring to your customer as \"alien attack\".\n\nAs a scientist, you're less likely to be sending bulk mailings to a bunch of customers. But these are great methods for generating and submitting lots of similar runs, say scanning a bunch of different structures to find the optimal configuration for something.\n\nFor example, you can use the following template for NWChem input files:"
},
{
"cell_type": "code",
"collapsed": false,
"input": "nwchem_format = \"\"\"\nstart %(jobname)s\n\ntitle \"%(thetitle)s\"\ncharge %(charge)d\n\ngeometry units angstroms print xyz autosym\n%(geometry)s\nend\n\nbasis\n * library 6-31G**\nend\n\ndft\n xc %(dft_functional)s\n mult %(multiplicity)d\nend\n\ntask dft %(jobtype)s\n\"\"\"",
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 156
},
{
"cell_type": "markdown",
"metadata": {},
"source": "If you want to submit a sequence of runs to a computer somewhere, it's pretty easy to put together a little script, maybe even with some more string formatting in it:"
},
{
"cell_type": "code",
"collapsed": false,
"input": "oxygen_xy_coords = [(0,0),(0,0.1),(0.1,0),(0.1,0.1)]\ncharge = 0\nmultiplicity = 1\ndft_functional = \"b3lyp\"\njobtype = \"optimize\"\n\ngeometry_template = \"\"\"\\\n O %f %f 0.0\n H 0.0 1.0 0.0\n H 1.0 0.0 0.0\"\"\"\n\nfor i,xy in enumerate(oxygen_xy_coords):\n thetitle = \"Water run #%d\" % i\n jobname = \"h2o-%d\" % i\n geometry = geometry_template % xy\n print \"---------\"\n print nwchem_format % dict(thetitle=thetitle,charge=charge,jobname=jobname,jobtype=jobtype,\n geometry=geometry,dft_functional=dft_functional,multiplicity=multiplicity)",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": "---------\n\nstart h2o-0\n\ntitle \"Water run #0\"\ncharge 0\n\ngeometry units angstroms print xyz autosym\n O 0.000000 0.000000 0.0\n H 0.0 1.0 0.0\n H 1.0 0.0 0.0\nend\n\nbasis\n * library 6-31G**\nend\n\ndft\n xc b3lyp\n mult 1\nend\n\ntask dft optimize\n\n---------\n\nstart h2o-1\n\ntitle \"Water run #1\"\ncharge 0\n\ngeometry units angstroms print xyz autosym\n O 0.000000 0.100000 0.0\n H 0.0 1.0 0.0\n H 1.0 0.0 0.0\nend\n\nbasis\n * library 6-31G**\nend\n\ndft\n xc b3lyp\n mult 1\nend\n\ntask dft optimize\n\n---------\n\nstart h2o-2\n\ntitle \"Water run #2\"\ncharge 0\n\ngeometry units angstroms print xyz autosym\n O 0.100000 0.000000 0.0\n H 0.0 1.0 0.0\n H 1.0 0.0 0.0\nend\n\nbasis\n * library 6-31G**\nend\n\ndft\n xc b3lyp\n mult 1\nend\n\ntask dft optimize\n\n---------\n\nstart h2o-3\n\ntitle \"Water run #3\"\ncharge 0\n\ngeometry units angstroms print xyz autosym\n O 0.100000 0.100000 0.0\n H 0.0 1.0 0.0\n H 1.0 0.0 0.0\nend\n\nbasis\n * library 6-31G**\nend\n\ndft\n xc b3lyp\n mult 1\nend\n\ntask dft optimize\n\n"
}
],
"prompt_number": 261
},
{
"cell_type": "markdown",
"metadata": {},
"source": "This is a very bad geometry for a water molecule, and it would be silly to run so many geometry optimizations of structures that are guaranteed to converge to the same single geometry, but you get the idea of how you can run vast numbers of simulations with a technique like this.\n\nWe used the **enumerate** function to loop over both the indices and the items of a sequence, which is valuable when you want a clean way of getting both. **enumerate** is roughly equivalent to:"
},
{
"cell_type": "code",
"collapsed": false,
"input": "def my_enumerate(seq):\n l = []\n for i in range(len(seq)):\n l.append((i,seq[i]))\n return l\nmy_enumerate(oxygen_xy_coords)",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 266,
"text": "[(0, (0, 0)), (1, (0, 0.1)), (2, (0.1, 0)), (3, (0.1, 0.1))]"
}
],
"prompt_number": 266
},
{
"cell_type": "markdown",
"metadata": {},
"source": "Although enumerate uses **generators** (see below) so that it doesn't have to create a big list, which makes it faster for really long sequenes."
},
{
"cell_type": "markdown",
"metadata": {},
"source": "## Optional arguments\nYou will recall that the **linspace** function can take either two arguments (for the starting and ending points):"
},
{
"cell_type": "code",
"collapsed": false,
"input": "linspace(0,1)",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 268,
"text": "array([ 0. , 0.02040816, 0.04081633, 0.06122449, 0.08163265,\n 0.10204082, 0.12244898, 0.14285714, 0.16326531, 0.18367347,\n 0.20408163, 0.2244898 , 0.24489796, 0.26530612, 0.28571429,\n 0.30612245, 0.32653061, 0.34693878, 0.36734694, 0.3877551 ,\n 0.40816327, 0.42857143, 0.44897959, 0.46938776, 0.48979592,\n 0.51020408, 0.53061224, 0.55102041, 0.57142857, 0.59183673,\n 0.6122449 , 0.63265306, 0.65306122, 0.67346939, 0.69387755,\n 0.71428571, 0.73469388, 0.75510204, 0.7755102 , 0.79591837,\n 0.81632653, 0.83673469, 0.85714286, 0.87755102, 0.89795918,\n 0.91836735, 0.93877551, 0.95918367, 0.97959184, 1. ])"
}
],
"prompt_number": 268
},
{
"cell_type": "markdown",
"metadata": {},
"source": "or it can take three arguments, for the starting point, the ending point, and the number of points:"
},
{
"cell_type": "code",
"collapsed": false,
"input": "linspace(0,1,5)",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 269,
"text": "array([ 0. , 0.25, 0.5 , 0.75, 1. ])"
}
],
"prompt_number": 269
},
{
"cell_type": "markdown",
"metadata": {},
"source": "You can also pass in keywords to exclude the endpoint:"
},
{
"cell_type": "code",
"collapsed": false,
"input": "linspace(0,1,5,endpoint=False)",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 276,
"text": "array([ 0. , 0.2, 0.4, 0.6, 0.8])"
}
],
"prompt_number": 276
},
{
"cell_type": "markdown",
"metadata": {},
"source": "Right now, we only know how to specify functions that have a fixed number of arguments. We'll learn how to do the more general cases here.\n\nIf we're defining a simple version of linspace, we would start with:"
},
{
"cell_type": "code",
"collapsed": false,
"input": "def my_linspace(start,end):\n npoints = 50\n v = []\n d = (end-start)/float(npoints-1)\n for i in range(npoints):\n v.append(start + i*d)\n return v\nmy_linspace(0,1)",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 279,
"text": "[0.0,\n 0.02040816326530612,\n 0.04081632653061224,\n 0.061224489795918366,\n 0.08163265306122448,\n 0.1020408163265306,\n 0.12244897959183673,\n 0.14285714285714285,\n 0.16326530612244897,\n 0.18367346938775508,\n 0.2040816326530612,\n 0.22448979591836732,\n 0.24489795918367346,\n 0.26530612244897955,\n 0.2857142857142857,\n 0.3061224489795918,\n 0.32653061224489793,\n 0.3469387755102041,\n 0.36734693877551017,\n 0.3877551020408163,\n 0.4081632653061224,\n 0.42857142857142855,\n 0.44897959183673464,\n 0.4693877551020408,\n 0.4897959183673469,\n 0.5102040816326531,\n 0.5306122448979591,\n 0.5510204081632653,\n 0.5714285714285714,\n 0.5918367346938775,\n 0.6122448979591836,\n 0.6326530612244897,\n 0.6530612244897959,\n 0.673469387755102,\n 0.6938775510204082,\n 0.7142857142857142,\n 0.7346938775510203,\n 0.7551020408163265,\n 0.7755102040816326,\n 0.7959183673469387,\n 0.8163265306122448,\n 0.836734693877551,\n 0.8571428571428571,\n 0.8775510204081632,\n 0.8979591836734693,\n 0.9183673469387754,\n 0.9387755102040816,\n 0.9591836734693877,\n 0.9795918367346939,\n 0.9999999999999999]"
}
],
"prompt_number": 279
},
{
"cell_type": "markdown",
"metadata": {},
"source": "We can add an optional argument by specifying a default value in the argument list:"
},
{
"cell_type": "code",
"collapsed": false,
"input": "def my_linspace(start,end,npoints = 50):\n v = []\n d = (end-start)/float(npoints-1)\n for i in range(npoints):\n v.append(start + i*d)\n return v",
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 282
},
{
"cell_type": "markdown",
"metadata": {},
"source": "This gives exactly the same result if we don't specify anything:"
},
{
"cell_type": "code",
"collapsed": false,
"input": "my_linspace(0,1)",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 283,
"text": "[0.0,\n 0.02040816326530612,\n 0.04081632653061224,\n 0.061224489795918366,\n 0.08163265306122448,\n 0.1020408163265306,\n 0.12244897959183673,\n 0.14285714285714285,\n 0.16326530612244897,\n 0.18367346938775508,\n 0.2040816326530612,\n 0.22448979591836732,\n 0.24489795918367346,\n 0.26530612244897955,\n 0.2857142857142857,\n 0.3061224489795918,\n 0.32653061224489793,\n 0.3469387755102041,\n 0.36734693877551017,\n 0.3877551020408163,\n 0.4081632653061224,\n 0.42857142857142855,\n 0.44897959183673464,\n 0.4693877551020408,\n 0.4897959183673469,\n 0.5102040816326531,\n 0.5306122448979591,\n 0.5510204081632653,\n 0.5714285714285714,\n 0.5918367346938775,\n 0.6122448979591836,\n 0.6326530612244897,\n 0.6530612244897959,\n 0.673469387755102,\n 0.6938775510204082,\n 0.7142857142857142,\n 0.7346938775510203,\n 0.7551020408163265,\n 0.7755102040816326,\n 0.7959183673469387,\n 0.8163265306122448,\n 0.836734693877551,\n 0.8571428571428571,\n 0.8775510204081632,\n 0.8979591836734693,\n 0.9183673469387754,\n 0.9387755102040816,\n 0.9591836734693877,\n 0.9795918367346939,\n 0.9999999999999999]"
}
],
"prompt_number": 283
},
{
"cell_type": "markdown",
"metadata": {},
"source": "But also let's us override the default value with a third argument:"
},
{
"cell_type": "code",
"collapsed": false,
"input": "my_linspace(0,1,5)",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 284,
"text": "[0.0, 0.25, 0.5, 0.75, 1.0]"
}
],
"prompt_number": 284
},
{
"cell_type": "markdown",
"metadata": {},
"source": "We can add arbitrary keyword arguments to the function definition by putting a keyword argument \\*\\*kwargs handle in:"
},
{
"cell_type": "code",
"collapsed": false,
"input": "def my_linspace(start,end,npoints=50,**kwargs):\n endpoint = kwargs.get('endpoint',True)\n v = []\n if endpoint:\n d = (end-start)/float(npoints-1)\n else:\n d = (end-start)/float(npoints)\n for i in range(npoints):\n v.append(start + i*d)\n return v\nmy_linspace(0,1,5,endpoint=False)",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 285,
"text": "[0.0, 0.2, 0.4, 0.6000000000000001, 0.8]"
}
],
"prompt_number": 285
},
{
"cell_type": "markdown",
"metadata": {},
"source": "What the keyword argument construction does is to take any additional keyword arguments (i.e. arguments specified by name, like \"endpoint=False\"), and stick them into a dictionary called \"kwargs\" (you can call it anything you like, but it has to be preceded by two stars). You can then grab items out of the dictionary using the **get** command, which also lets you specify a default value. I realize it takes a little getting used to, but it is a common construction in Python code, and you should be able to recognize it.\n\nThere's an analogous \\*args that dumps any additional arguments into a list called \"args\". Think about the **range** function: it can take one (the endpoint), two (starting and ending points), or three (starting, ending, and step) arguments. How would we define this?"
},
{
"cell_type": "code",
"collapsed": false,
"input": "def my_range(*args):\n start = 0\n step = 1\n if len(args) == 1:\n end = args[0]\n elif len(args) == 2:\n start,end = args\n elif len(args) == 3:\n start,end,step = args\n else:\n raise Exception(\"Unable to parse arguments\")\n v = []\n value = start\n while True:\n v.append(value)\n value += step\n if value > end: break\n return v",
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 289
},
{
"cell_type": "markdown",
"metadata": {},
"source": "Note that we have defined a few new things you haven't seen before: a **break** statement, that allows us to exit a for loop if some conditions are met, and an exception statement, that causes the interpreter to exit with an error message. For example:"
},
{
"cell_type": "code",
"collapsed": false,
"input": "my_range()",
"language": "python",
"metadata": {},
"outputs": [
{
"ename": "Exception",
"evalue": "Unable to parse arguments",
"output_type": "pyerr",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m\n\u001b[0;31mException\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m<ipython-input-290-0e8004dab150>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mmy_range\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<ipython-input-289-c34e09da2551>\u001b[0m in \u001b[0;36mmy_range\u001b[0;34m(*args)\u001b[0m\n\u001b[1;32m 9\u001b[0m \u001b[0mstart\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mend\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mstep\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0margs\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 10\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 11\u001b[0;31m \u001b[0;32mraise\u001b[0m \u001b[0mException\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"Unable to parse arguments\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 12\u001b[0m \u001b[0mv\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 13\u001b[0m \u001b[0mvalue\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mstart\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;31mException\u001b[0m: Unable to parse arguments"
]
}
],
"prompt_number": 290
},
{
"cell_type": "markdown",
"metadata": {},
"source": "## List Comprehensions and Generators\nList comprehensions are a streamlined way to make lists. They look something like a list definition, with some logic thrown in. For example:"
},
{
"cell_type": "code",
"collapsed": false,
"input": "evens1 = [2*i for i in range(10)]\nprint evens1",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": "[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]\n"
}
],
"prompt_number": 293
},
{
"cell_type": "markdown",
"metadata": {},
"source": "You can also put some boolean testing into the construct:"
},
{
"cell_type": "code",
"collapsed": false,
"input": "odds = [i for i in range(20) if i%2==1]\nodds",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 294,
"text": "[1, 3, 5, 7, 9, 11, 13, 15, 17, 19]"
}
],
"prompt_number": 294
},
{
"cell_type": "markdown",
"metadata": {},
"source": "Here i%2 is the remainder when i is divided by 2, so that i%2==1 is true if the number is odd. Even though this is a relative new addition to the language, it is now fairly common since it's so convenient."
},
{
"cell_type": "markdown",
"metadata": {},
"source": "**iterators** are a way of making virtual sequence objects. Consider if we had the nested loop structure:\n\n for i in range(1000000):\n for j in range(1000000):\n\nInside the main loop, we make a list of 1,000,000 integers, just to loop over them one at a time. We don't need any of the additional things that a lists gives us, like slicing or random access, we just need to go through the numbers one at a time. And we're making 1,000,000 of them. \n\n**iterators** are a way around this. For example, the **xrange** function is the iterator version of range. This simply makes a counter that is looped through in sequence, so that the analogous loop structure would look like:\n\n for i in xrange(1000000):\n for j in xrange(1000000):\n\nEven though we've only added two characters, we've dramatically sped up the code, because we're not making 1,000,000 big lists.\n\nWe can define our own iterators using the **yield** statement:"
},
{
"cell_type": "code",
"collapsed": false,
"input": "def evens_below(n):\n for i in xrange(n):\n if i%2 == 0:\n yield i\n return\n\nfor i in evens_below(9):\n print i",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": "0\n2\n4\n6\n8\n"
}
],
"prompt_number": 295
},
{
"cell_type": "markdown",
"metadata": {},
"source": "We can always turn an iterator into a list using the **list** command:"
},
{
"cell_type": "code",
"collapsed": false,
"input": "list(evens_below(9))",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 296,
"text": "[0, 2, 4, 6, 8]"
}
],
"prompt_number": 296
},
{
"cell_type": "markdown",
"metadata": {},
"source": "There's a special syntax called a **generator expression** that looks a lot like a list comprehension:"
},
{
"cell_type": "code",
"collapsed": false,
"input": "evens_gen = (i for i in xrange(9) if i%2==0)\nfor i in evens_gen:\n print i",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": "0\n2\n4\n6\n8\n"
}
],
"prompt_number": 299
},
{
"cell_type": "markdown",
"metadata": {},
"source": "## Factory Functions\nA factory function is a function that returns a function. They have the fancy name *lexical closure*, which makes you sound really intelligent in front of your CS friends. But, despite the arcane names, factory functions can play a very practical role.\n\nSuppose you want the Gaussian function centered at 0.5, with height 99 and width 1.0. You could write a general function."
},
{
"cell_type": "code",
"collapsed": false,
"input": "def gauss(x,A,a,x0):\n return A*exp(-a*(x-x0)**2)",
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 158
},
{
"cell_type": "markdown",
"metadata": {},
"source": "But what if you need a function with only one argument, like f(x) rather than f(x,y,z,...)? You can do this with Factory Functions:"
},
{
"cell_type": "code",
"collapsed": false,
"input": "def gauss_maker(A,a,x0):\n def f(x):\n return A*exp(-a*(x-x0)**2)\n return f",
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 159
},
{
"cell_type": "code",
"collapsed": false,
"input": "x = linspace(0,1)\ng = gauss_maker(99.0,1.0,0.5)\nplot(x,g(x))",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 160,
"text": "[<matplotlib.lines.Line2D at 0x1114ca090>]"
},
{
"output_type": "display_data",
"png": "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\njmVkmFNDJk+GRo2CdXUREZHgOH0aSpSAL7+Em24KsYljS5ZA9uzQsKGNq4uIiARWjhzm0Chfz5q2\n0km3bAmdOkH37sG6soiISHD9+CNUqQJHj4ZQJ719O2zYYIq0iIhIuCpcGFq18u01gl6kX30V+vWD\nbNmCfWUREZHgeuwx374+6MPdefM6bN8ON9wQrKuKiIjYE1I7jq1frwItIiLiCet7d4uIiISzkOqk\nRURExDMq0iIiIi6lIi0iIuJSKtIiIiIupSItIiLiUirSIiIiLqUiLSIi4lIq0iIiIi6lIi0iIuJS\nKtIiIiIupSItIiLiUirSIiIiLqUiLSIi4lIq0iIiIi6lIi0iIuJSKtIiIiIupSItIiLiUirSIiIi\nLqUiLSIi4lIq0iIiIi6lIi0iIuJSXhXpnTt3Ur169fMfefLkYfz48YwYMYKiRYue//WkpCR/5xUP\nJCcn244Q9nSPA0/3ODh0n93NqyJ90003sWHDBjZs2MBXX33FtddeS7t27YiKimLQoEHnf69Fixb+\nzise0Ddd4OkeB57ucXDoPrubz8PdS5cupWzZshQrVgzHcXAcxx+5REREIp7PRfr999+nc+fOAERF\nRTFhwgSqVq1Kr169SEtL8zmgiIhIpIpyfGh9z5w5Q5EiRdi2bRvXX389hw8f5vrrrwdg2LBhHDx4\nkKlTp164WFSU74lFRERCjLelNtqXiy5evJgaNWqcL8yFChU6/3u9e/emdevWF32+hsJFREQ859Nw\n97/+9a/zQ90ABw8ePP/zefPmERcX58vLi4iIRDSvh7tPnjxJiRIl2LNnD7ly5QLg/vvvZ+PGjURF\nRVGqVCneeOMNYmNj/RpYREQkUnjdSefMmZMjR46cL9AA06dPZ/PmzWzatIl+/frRqFEjypUrx4sv\nvnjJ1xgwYADlypWjatWqbNiwwdsoESspKYkKFSpc9h7PnDmTqlWrcvPNN1O/fn02b95sIWVou9o9\n/t26deuIjo5m7ty5QUwXHjy5x8nJyVSvXp0qVaoQHx8f3IBh4mr3+ciRI7Ro0YJq1apRpUoV3nnn\nneCHDGE9e/YkNjb2iiPIXtU8JwDS09OdMmXKOHv27HHOnDnjVK1a1dm2bdtFn/Pxxx87LVu2dBzH\ncVavXu3Url07EFHClif3eOXKlU5aWprjOI6zePFi3eNM8uQe//55jRs3du644w5n9uzZFpKGLk/u\n8dGjR51KlSo5+/fvdxzHcX766ScbUUOaJ/d5+PDhzhNPPOE4jrnH+fPnd86ePWsjbkj64osvnK+/\n/tqpUqXKJX/f25oXkG1B165dS9myZSlZsiQxMTF06tSJBQsWXPQ5CxcupHv37gDUrl2btLQ0UlJS\nAhEnLHlyj+vWrUuePHkAc49/+OEHG1FDlif3GGDChAm0b9/+/ARK8Zwn9/i9997jnnvuoWjRogAU\nLFjQRtSQ5sl9vvHGGzl27BgAx44do0CBAkRH+zS3OKI0aNCAfPnyXfb3va15ASnSBw4coFixYuf/\nu2jRohw4cOCqn6Mi4jlP7vEfTZ06lVatWgUjWtjw9O/xggULeOihhwAtM8wsT+7xrl27SE1NpXHj\nxtSsWZMZM2YEO2bI8+Q+9+nTh61bt1K4cGGqVq3K+PHjgx0zrHlb8wLyNsnTf6icP81Z0z9wnsvM\nvfr888+ZNm0aK1asCGCi8OPJPR44cCCjR48mKipKO+55wZN7fPbsWb7++ms+/fRTTp06Rd26dalT\npw7lypULQsLw4Ml9fuGFF6hWrRrJycns3r2bhIQENm3adNG8I/GNNzUvIEW6SJEi7N+///x/79+/\n//xQ1eU+54cffqBIkSKBiBOWPLnHAJs3b6ZPnz4kJSVdcShG/sqTe/zVV1/RqVMnwEy8Wbx4MTEx\nMbRp0yaoWUOVJ/e4WLFiFCxYkBw5cpAjRw4aNmzIpk2bVKQzwZP7vHLlSp566ikAypQpQ6lSpdi5\ncyc1a9YMatZw5XXN88sT8z85e/asU7p0aWfPnj3Ob7/9dtWJY6tWrdKkpkzy5B5///33TpkyZZxV\nq1ZZShnaPLnHf/TAAw84c+bMCWLC0OfJPd6+fbvTpEkTJz093Tl58qRTpUoVZ+vWrZYShyZP7vPf\n/vY3Z8SIEY7jOM6hQ4ecIkWKOD///LONuCFrz549Hk0cy0zNC0gnHR0dzWuvvUbz5s05d+4cvXr1\nomLFirzxxhsAPPjgg7Rq1YpFixZRtmxZcubMydtvvx2IKGHLk3s8cuRIjh49ev55aUxMDGvXrrUZ\nO6R4co/FN57c4woVKtCiRQtuvvlmsmTJQp8+fahUqZLl5KHFk/s8dOhQevToQdWqVcnIyGDMmDHk\nz5/fcvLQ0blzZ5YtW8aRI0coVqwYzz77LGfPngV8q3k+7d0tIiIigROQ2d0iIiLiOxVpERERl1KR\nFhERcSkVaREREZdSkRYREXEpFWkRERGXUpEWERFxqf8Hc69T43WKCE8AAAAASUVORK5CYII=\n"
}
],
"prompt_number": 160
},
{
"cell_type": "markdown",
"metadata": {},
"source": "Everything in Python is an object, including functions. This means that functions can be returned by other functions. (They can also be passed into other functions, which is also useful, but a topic for another discussion.) In the **gauss_maker** example, the *g* function that is output \"remembers\" the A, a, x0 values it was constructed with, since they're all stored in the local memory space (this is what the *lexical closure* really refers to) of that function.\n\nFactories are one of the more important of the [Software Design Patterns](http://en.wikipedia.org/wiki/Software_design_pattern), which are a set of guidelines to follow to make high-quality, portable, readable, stable software. It's beyond the scope of the current work to go more into either factories or design patterns, but I thought I would mention them for people interested in software design."
},
{
"cell_type": "markdown",
"metadata": {},
"source": "## Serialization: Save it for later\n*Serialization* refers to the process of outputting data (and occasionally functions) to a database or a regular file, for the purpose of using it later on. In the very early days of programming languages, this was normally done in regular text files. Python is excellent at text processing, and you probably already know enough to get started with this.\n\nWhen accessing large amounts of data became important, people developed database software based around the Structured Query Language (SQL) standard. I'm not going to cover SQL here, but, if you're interested, I recommend using the [sqlite3](http://docs.python.org/2/library/sqlite3.html) module in the Python standard library.\n\nAs data interchange became important, the eXtensible Markup Language (XML) has emerged. XML makes data formats that are easy to write parsers for, greatly simplifying the ambiguity that sometimes arises in the process. Again, I'm not going to cover XML here, but if you're interested in learning more, look into [Element Trees](http://docs.python.org/2/library/xml.etree.elementtree.html), now part of the Python standard library.\n\nPython has a very general serialization format called **pickle** that can turn any Python object, even a function or a class, into a representation that can be written to a file and read in later. But, again, I'm not going to talk about this, since I rarely use it myself. Again, [the standard library documentation for pickle](http://docs.python.org/2/library/pickle.html#module-cPickle) is the place to go.\n\nWhat I am going to talk about is a relatively recent format call [JavaScript Object Notation](http://json.org/) (JSON) that has become very popular over the past few years. [There's a module in the standard library](http://docs.python.org/2/library/json.html) for encoding and decoding JSON formats. The reason I like JSON so much is that it looks almost like Python, so that, unlike the other options, you can look at your data and edit it, use it in another program, etc.\n\nHere's a little example:"
},
{
"cell_type": "code",
"collapsed": false,
"input": "# Data in a json format:\njson_data = \"\"\"\\\n{\n \"a\": [1,2,3],\n \"b\": [4,5,6],\n \"greeting\" : \"Hello\"\n}\"\"\"\nimport json\njson.loads(json_data)",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 161,
"text": "{u'a': [1, 2, 3], u'b': [4, 5, 6], u'greeting': u'Hello'}"
}
],
"prompt_number": 161
},
{
"cell_type": "markdown",
"metadata": {},
"source": "Ignore the little u's before the strings, these just mean the strings are in UNICODE. Your data sits in something that looks like a Python dictionary, and in a single line of code, you can load it into a Python dictionary for use later.\n\nIn the same way, you can, with a single line of code, put a bunch of variables into a dictionary, and then output to a file using json:"
},
{
"cell_type": "code",
"collapsed": false,
"input": "json.dumps({\"a\":[1,2,3],\"b\":[9,10,11],\"greeting\":\"Hola\"})",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 162,
"text": "'{\"a\": [1, 2, 3], \"b\": [9, 10, 11], \"greeting\": \"Hola\"}'"
}
],
"prompt_number": 162
},
{
"cell_type": "markdown",
"metadata": {},
"source": "## Functional programming\nFunctional programming is a very broad subject. The idea is to have a series of functions, each of which generates a new data structure from an input, without changing the input structure at all. By not modifying the input structure (something that is called not having *side effects*), many guarantees can be made about how independent the processes are, which can help parallelization and guarantees of program accuracy. There is a [Python Functional Programming HOWTO](http://docs.python.org/2/howto/functional.html) in the standard docs that goes into more details on functional programming. I just wanted to touch on a few of the most important ideas here.\n\nThere is an **operator** module that has function versions of most of the Python operators. For example:"
},
{
"cell_type": "code",
"collapsed": false,
"input": "from operator import add, mul\nadd(1,2)",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 249,
"text": "3"
}
],
"prompt_number": 249
},
{
"cell_type": "code",
"collapsed": false,
"input": "mul(3,4)",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 250,
"text": "12"
}
],
"prompt_number": 250
},
{
"cell_type": "markdown",
"metadata": {},
"source": "These are useful building blocks for functional programming."
},
{
"cell_type": "markdown",
"metadata": {},
"source": "The **lambda** operator allows us to build *anonymous functions*, which are simply functions that aren't defined by a normal **def** statement with a name. For example, a function that doubles the input is:"
},
{
"cell_type": "code",
"collapsed": false,
"input": "def doubler(x): return 2*x\ndoubler(17)",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 251,
"text": "34"
}
],
"prompt_number": 251
},
{
"cell_type": "markdown",
"metadata": {},
"source": "We could also write this as:"
},
{
"cell_type": "code",
"collapsed": false,
"input": "lambda x: 2*x",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 252,
"text": "<function __main__.<lambda>>"
}
],
"prompt_number": 252
},
{
"cell_type": "markdown",
"metadata": {},
"source": "And assign it to a function separately:"
},
{
"cell_type": "code",
"collapsed": false,
"input": "another_doubler = lambda x: 2*x\nanother_doubler(19)",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 254,
"text": "38"
}
],
"prompt_number": 254
},
{
"cell_type": "markdown",
"metadata": {},
"source": "**lambda** is particularly convenient (as we'll see below) in passing simple functions as arguments to other functions."
},
{
"cell_type": "markdown",
"metadata": {},
"source": "**map** is a way to repeatedly apply a function to a list:"
},
{
"cell_type": "code",
"collapsed": false,
"input": "map(float,'1 2 3 4 5'.split())",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 256,
"text": "[1.0, 2.0, 3.0, 4.0, 5.0]"
}
],
"prompt_number": 256
},
{
"cell_type": "markdown",
"metadata": {},
"source": "**reduce** is a way to repeatedly apply a function to the first two items of the list. There already is a **sum** function in Python that is a reduction:"
},
{
"cell_type": "code",
"collapsed": false,
"input": "sum([1,2,3,4,5])",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 257,
"text": "15"
}
],
"prompt_number": 257
},
{
"cell_type": "markdown",
"metadata": {},
"source": "We can use **reduce** to define an analogous **prod** function:"
},
{
"cell_type": "code",
"collapsed": false,
"input": "def prod(l): return reduce(mul,l)\nprod([1,2,3,4,5])",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 258,
"text": "120"
}
],
"prompt_number": 258
},
{
"cell_type": "markdown",
"metadata": {},
"source": "## Object Oriented Programming"
},
{
"cell_type": "markdown",
"metadata": {},
"source": "We've seen a lot of examples of **objects** in Python. We create a string object with quote marks:"
},
{
"cell_type": "code",
"collapsed": false,
"input": "mystring = \"Hi there\"",
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 222
},
{
"cell_type": "markdown",
"metadata": {},
"source": "and we have a bunch of methods we can use on the object:"
},
{
"cell_type": "code",
"collapsed": false,
"input": "mystring.split()",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 223,
"text": "['Hi', 'there']"
}
],
"prompt_number": 223
},
{
"cell_type": "code",
"collapsed": false,
"input": "mystring.startswith('Hi')",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 224,
"text": "True"
}
],
"prompt_number": 224
},
{
"cell_type": "code",
"collapsed": false,
"input": "len(mystring)",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 225,
"text": "8"
}
],
"prompt_number": 225
},
{
"cell_type": "markdown",
"metadata": {},
"source": "Object oriented programming simply gives you the tools to define objects and methods for yourself. It's useful anytime you want to keep some data (like the characters in the string) tightly coupled to the functions that act on the data (length, split, startswith, etc.).\n\nAs an example, we're going to bundle the functions we did to make the 1d harmonic oscillator eigenfunctions with arbitrary potentials, so we can pass in a function defining that potential, some additional specifications, and get out something that can plot the orbitals, as well as do other things with them, if desired."
},
{
"cell_type": "code",
"collapsed": false,
"input": "class Schrod1d:\n \"\"\"\\\n Schrod1d: Solver for the one-dimensional Schrodinger equation.\n \"\"\"\n def __init__(self,V,start=0,end=1,npts=50,**kwargs):\n m = kwargs.get('m',1.0)\n self.x = linspace(start,end,npts)\n self.Vx = V(self.x)\n self.H = (-0.5/m)*self.laplacian() + diag(self.Vx)\n return\n \n def plot(self,*args,**kwargs):\n titlestring = kwargs.get('titlestring',\"Eigenfunctions of the 1d Potential\")\n xstring = kwargs.get('xstring',\"Displacement (bohr)\")\n ystring = kwargs.get('ystring',\"Energy (hartree)\")\n if not args:\n args = [3]\n x = self.x\n E,U = eigh(self.H)\n h = x[1]-x[0]\n\n # Plot the Potential\n plot(x,self.Vx,color='k')\n\n for i in range(*args):\n # For each of the first few solutions, plot the energy level:\n axhline(y=E[i],color='k',ls=\":\")\n # as well as the eigenfunction, displaced by the energy level so they don't\n # all pile up on each other:\n plot(x,U[:,i]/sqrt(h)+E[i])\n title(titlestring)\n xlabel(xstring)\n ylabel(ystring) \n return\n \n def laplacian(self):\n x = self.x\n h = x[1]-x[0] # assume uniformly spaced points\n n = len(x)\n M = -2*identity(n,'d')\n for i in range(1,n):\n M[i,i-1] = M[i-1,i] = 1\n return M/h**2",
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 217
},
{
"cell_type": "markdown",
"metadata": {},
"source": "The **__init__()** function specifies what operations go on when the object is created. The **self** argument is the object itself, and we don't pass it in. The only required argument is the function that defines the QM potential. We can also specify additional arguments that define the numerical grid that we're going to use for the calculation.\n\nFor example, to do an infinite square well potential, we have a function that is 0 everywhere. We don't have to specify the barriers, since we'll only define the potential in the well, which means that it can't be defined anywhere else."
},
{
"cell_type": "code",
"collapsed": false,
"input": "square_well = Schrod1d(lambda x: 0*x,m=10)\nsquare_well.plot(4,titlestring=\"Square Well Potential\")",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "display_data",
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment