Skip to content

Instantly share code, notes, and snippets.

@shrubb
Created December 8, 2016 14:24
Show Gist options
  • Save shrubb/28037ccea7c881a1cb20d21577e285b7 to your computer and use it in GitHub Desktop.
Save shrubb/28037ccea7c881a1cb20d21577e285b7 to your computer and use it in GitHub Desktop.
NLA lectures
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true,
"slideshow": {
"slide_type": "skip"
}
},
"outputs": [],
"source": [
"from traitlets.config.manager import BaseJSONConfigManager\n",
"#path = \"/home/damian/miniconda3/envs/rise_latest/etc/jupyter/nbconfig\"\n",
"cm = BaseJSONConfigManager()\n",
"cm.update('livereveal', {\n",
" 'theme': 'sky',\n",
" 'transition': 'zoom',\n",
" 'start_slideshow_at': 'selected',\n",
"})"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"collapsed": false,
"slideshow": {
"slide_type": "skip"
}
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/Users/ivan/miniconda2/lib/python2.7/site-packages/IPython/html.py:14: ShimWarning: The `IPython.html` package has been deprecated. You should import from `notebook` instead. `IPython.html.widgets` has moved to `ipywidgets`.\n",
" \"`IPython.html.widgets` has moved to `ipywidgets`.\", ShimWarning)\n",
"/Users/ivan/miniconda2/lib/python2.7/site-packages/IPython/utils/path.py:283: UserWarning: locate_profile has moved to the IPython.paths module\n",
" warn(\"locate_profile has moved to the IPython.paths module\")\n"
]
}
],
"source": [
"from IPython.html.services.config import ConfigManager\n",
"from IPython.utils.path import locate_profile\n",
"cm = ConfigManager(profile_dir=locate_profile(get_ipython().profile))\n",
"cm.update('livereveal', {'theme': 'sky', 'transition': 'zoom', 'start_slideshow_at': 'selected'})"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"# Numerical linear algebra, Skoltech, Fall 2016, general course info."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Lecture access\n",
"\n",
"Lectures can be downloaded and viewed on github: https://github.com/oseledets/nla2016 \n",
"They can also be viewed online using nbviewer: http://nbviewer.jupyter.org/github/oseledets/nla2016/tree/master/\n",
"\n",
"The most comfortable way to navigate through course materials is to use ```table_of_contents.ipynb``` file in repo."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Team\n",
"Ivan Oseledets, i.oseledets@skoltech.ru, \n",
"Maxim Rakhuba, m.rakhuba@skoltech.ru, \n",
"Marina Munkhoeva, marina.munkhoeva@skolkovotech.ru, \n",
"Alexandr Katrutsa, aleksandr.katrutsa@phystech.edu. \n",
"Artem Nikitin, \n",
"Valentin Khrulkov \n"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Feedback system\n",
"\n",
"We encourage you to use [Piazza](https://piazza.com) platform for communication with TAs and with each other."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## How do we grade\n",
"- **40%** homework. Includes 3 problem sets with coding in Python and theoretical problems.\n",
"- **15%** written midterm test (previous year tests are here: [v1](http://nbviewer.jupyter.org/github/oseledets/nla2015/blob/master/tests/1.pdf) and [v2](http://nbviewer.jupyter.org/github/oseledets/nla2015/blob/master/tests/2.pdf))\n",
"- **15%** final oral exam in the traditional manner of Russian oral exams.\n",
"- **30%** term project. We encourage that you suggest your own term project. Team should be 3-4 people. On [Piazza]() you will find more info and you can use it to find teammates.\n",
"\n",
"<img src=\"grades.png\", width=300>"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Deadlines & attendance & late submissions\n",
"1. **Strict deadlines**. 2 days after deadline gives **80%** maximum. Then **50%**.\n",
"2. **No penalties for absense**, but we will collect attendance lists each lection for statistics."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Course description\n",
"\n",
"- Numerical linear algebra is the basis for computational science and engineering and data science </font>\n",
"- Matrices and their decompositions are the key </font>\n",
"- The tools are different for small-scale and large-scale problems </font>"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Learning outcomes\n",
"\n",
"- Solve medium-scale numerical linear algebra problems \n",
"(solve linear systems, compute eigenvalues and eigenvectors, solve linear least squares) using **matrix factorizations** </font>\n",
"- Iterative methods for sparse/structured systems </font>\n",
"- Find which methods are the most appropriate for the particular problem </font>\n",
"- Find appropriate software </font>"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Some details\n",
"- We will use Python ecosystem for programming. The first week we will spend for the Python crash course (including today)\n",
"- All the homework will be distributed in the form of **Jupyter notebooks**"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"code_folding": [],
"collapsed": false,
"slideshow": {
"slide_type": "slide"
}
},
"outputs": [
{
"data": {
"text/plain": [
"[<matplotlib.lines.Line2D at 0x110308050>]"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAArQAAAHcCAYAAAAncTlwAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAAPYQAAD2EBqD+naQAAIABJREFUeJzs3XmQJFd9L/pv1l7V1VXdXdXd07Npl2bECA0aJIORbCOE\nZV4Ygw3i2vEC6zpCD0IvsInrEEGw+CmuIVAQBkfAJQz3yc+68cB24OApePCwuBjLNraFEUICraNl\nRrP3UlW9VHV3rZn5/sg8WVnTWy255/cT4bA0aqazu3516pcnz/keSVVVFUREREREPhVx+wKIiIiI\niEbBhpaIiIiIfI0NLRERERH5GhtaIiIiIvI1NrRERERE5GtsaImIiIjI19jQEhEREZGvsaElIiIi\nIl9jQ0tEREREvmZbQ9tqtfDud78bP/3pT3f8mhdffBEf+MAHcPz4cdxzzz144YUX7LocIiIiIgoo\nWxraVquFP/7jP8Zrr72249fU63V86EMfwq233opHH30Ux48fx4c//GE0Gg07LomIiIiIAsryhvbU\nqVP4wAc+gAsXLuz6dd/73veQTqfxsY99DFdffTU+9alPYWxsDN///vetviQiIiIiCjDLG9onn3wS\nb33rW/HNb34Tqqru+HXPPvssTpw40fNnt9xyC5555hmrL4mIiIiIAixm9V/4e7/3e3193dLSEq6/\n/vqePysUCrsuUyAiIiIiupxrKQeNRgOJRKLnzxKJBFqtlktXRERERER+ZPkMbb+SyeSW5rXVaiGV\nSvX9d6iqCkmSrL60kZxfrOH/+O9PoLy2/ea2//TO6/G/3n3Ec9dNwTZf3sCD/+ePMV/Z2Pa//9av\nXI37fusY65IcVVmr40/++xM4v7i+7X+/+y1X4P733YxohHVJRLtzraGdnZ1FqVTq+bNyuYzp6em+\n/w5JklCt1iHLitWXN5TyWgP/9ZEnsbauNepvecMsbjs6i0q1gf/viTNYW2/hm//wCuS2jN+6/SqX\nr9Ze0WgEuVzaU69PWFU3Wnjw/3oSlap2k3Xr0Rm847YrML9Uw3f/7XUs15r4zo9OQ27L+E/vuM7l\nqw23ML1v1utt/Ne/ehKLK3UAwM3XFnHHzXNY32zjez8+i9JqHf/zP86i3Zbxn991xOWr1YTp9fEb\nvjbeJV4bu7nW0N588814+OGHe/7s6aefxv333z/Q3yPLCjod94u3Iyv4yv/zrNHM/ud3HcGv3Lzf\n+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\nD7TaNhS+NplUJHD8+HF84xvf+NycsE2bNuH222+f8HtZLBb09wcu2blcLlitkyuKn5g48SCawm8q\n7XN35VzcXTk3iFdD/vi3c31W35iP1TeGdlWAbaNtWmyfW5fF49Zls9S+DNVpsW0oPCYV0C5fvhz1\n9fXXfuEEZGZmorExcLdwd3c30tPTg/L+RERERBQdVJubLy0tRV1dXUCKQU1NDcrKytS6JCIiIiLS\nobAGtJcuXcLIyAgAabY3OzsbGzZsQGNjI7Zs2YITJ07gvvvuC+clEREREZHOhSyg/bw82/vuuw9/\n/OMfpQ+OicHmzZtht9tx7733Yvfu3fjd736HrCwWeyYiIiKiiTOIqx0tQkRERESkcaxvQURERES6\nxoCWiIiIiHSNAS0RERER6RoDWiIiIiLSNQa0RERERKRrugxoXS4Xnn76aSxbtgw333wztm7dqvYl\nRY2uri5897vfxQ033IBbbrkFL7zwgnI4RmtrKx5++GGUl5ejqqoK+/fvD/jZAwcOYO3atSgrK8ND\nDz2ElpYWNX6FqPDYY4/hJz/5ifJvto36XC4XfvnLX2L58uVYtWoVXn75ZeU5to+6Ojs78Z3vfAcV\nFRW4/fbbsW3bNuU5to16XC4X1q5di0OHDimPTbU9Xn/9dVRWVqKiogI//elP4XQ6w/K7RJrPa5tj\nx47hgQceQHl5OdasWYO//OUvAT8T8rYROvTcc8+JdevWiVOnTok9e/aIJUuWiI8++kjty4oK999/\nv3jsscdEY2OjOHz4sLjjjjvEiy++KIQQYu3ateLHP/6xaGpqEq+99pooKysTHR0dQggh2tvbRVlZ\nmdi6datobGwU3//+98XatWvV/FUi1nvvvScKCwvFhg0blMfuueceto3KnnnmGXHnnXeKEydOiOrq\nanHjjTeKHTt2CCH4t6O2+++/X/zwhz8Uzc3N4uOPPxZlZWViz549Qgi2jVqcTqdYv369KCoqEgcP\nHlQen8pY9uGHH4ply5aJvXv3ihMnToi7775bbNy4Mey/m959XtvY7XaxbNky8fLLL4vm5mbx/vvv\ni5KSErF3714hhBBtbW0hbxvdBbQjIyOipKREHDp0SHls8+bN4utf/7qKVxUdmpqaRFFRkejp6VEe\ne++990RlZaWorq4W5eXlwuFwKM899NBD4tVXXxVCCPHKK68EtNHo6KhYsmRJwEBFU9fX1yduueUW\n8eUvf1kJaA8cOMC2UVlfX59YuHBhwLi1ZcsW8fTTT/NvR2X9/f2isLBQNDQ0KI89+eSTYuPGjWwb\nlTQ2Nop169aJdevWBQRNUx3LvvrVr4pNmzYpzx8+fFiUlpYGvB9d3ZXa5q233hJ33XVXwGufeeYZ\n8aMf/UgIEZ620V3KQX19PTweD8rKypTHKioqUFtbq+JVRYf09HT84Q9/wPTp0wMeHxwcxPHjx7Fw\n4UJYLBbl8YqKChw7dgwAUFtbi2XLlinPWa1WLFiwAEePHg3PxUeJX//611i3bh3mzJmjPFZbW8u2\nUVlNTQ0SEhKwdOlS5bFvfetbeP755/m3ozKr1QqbzYZ33nkHbrcbZ8+exZEjR1BcXMy2UcnBgwex\nYsUK7NixA8Lv7KepjGVerxcnTpwI+BssKyvD2NgY6uvrw/BbRYYrtU1lZSV+9atfXfb6wcFBAOFp\nG90FtHa7HcnJyTCZTMpjqampcDqd6O3tVfHKIl9CQgJuuukm5d9CCGzfvh0rVqyA3W5HRkZGwOtT\nU1PR1dUFALh48eJlz6elpSnP09RVV1ejpqYG69evD3icbaO+lpYW5Obm4t1338WaNWuwevVqbN68\nGUIIto/KzGYznn32Wfz5z39GaWkp7rrrLlRWVuLee+9l26jkwQcfxFNPPRUQuAJTG8sGBgbgdDoD\nnjcajUhOTkZnZ2eIfpPIc6W2ycnJQUlJifLvnp4efPDBB1i5ciWA8LSN6dov0ZbR0VGYzeaAx+R/\ny5uTKDxefPFFnDp1Cjt37sTWrVs/t13kNnE4HFd9nqbG5XLhF7/4BX7+859f9v/zlf5m2DbhMzIy\ngvPnz+Ptt9/GCy+8ALvdjmeffRY2m43towFNTU247bbb8Oijj+LMmTPYuHEjVqxYwbbRmKm0h8Ph\nUP59pZ+n4HA6nXjyySeRkZGBr3zlKwDC0za6C2gtFstlv6D8b5vNpsYlRaWXXnoJb7zxBl555RXM\nnTsXFosF/f39Aa9xuVywWq0ArtxuiYmJYbvmSPbqq69i0aJFyt2wP7aN+oxGI4aHh/Gb3/wGWVlZ\nAIC2tja8+eabWLVqFfr6+gJez/YJn+rqauzcuRP79u2D2WzGggUL0NnZid///vdYsWIF20ZDpjKW\nXWniy+VyMXYIopGRETz++OO4cOEC3nrrLWUmNxxto7uUg8zMTPT19cHr9SqPdXd3w2q1chAJk40b\nN2Lbtm146aWXsHr1agBSu9jt9oDXdXd3Iz09fULP09R88MEH+OSTT1BeXo7y8nLs3r0bu3fvxpIl\nS5CVlcW2UVlGRgYsFosSzAJAfn4+urq6+LejspMnT2L27NkBs0PFxcXo6Ohg22jMVNojJSUFFosF\n3d3dynMejwd9fX1sryAZGhrCI488gqamJmzbtg15eXnKc+FoG90FtMXFxTCZTEoSOAAcPnwYixYt\nUvGqosemTZuwY8cOvPzyy1izZo3yeGlpKerq6gLusGpqapTNe6WlpThy5Ijy3OjoKOrq6gI299H1\n2759O3bv3o1du3Zh165duO2223Dbbbfhb3/7G0pKStg2KistLYXT6URzc7PyWFNTE3Jzc1FaWoqT\nJ0+yfVSSkZGB5uZmuN1u5bGzZ89ixowZbBuNud7vmfLychgMBixevBg1NTXK80ePHkVsbCyKiorC\n90tEKCEEnnjiCbS1tWH79u0BG5OBMLXN9ZRtUNuzzz4rqqqqRG1trdizZ4+oqKhQagZS6DQ2NooF\nCxaI3/72t8Jutwf8z+PxiKqqKvGDH/xANDQ0iNdee00sWbJEqQ/Y2toqSktLxZYtW0RDQ4P43ve+\nJ774xS+q/BtFrg0bNihlu9g22vDtb39bPPDAA+LUqVNi3759YsWKFWL79u3C4/GIu+++m+2jksHB\nQbFq1Srx1FNPiXPnzolPPvlE3HDDDeLtt99m22hAYWGhUtrpesaydevWKe/1/vvvi6VLl4o9e/aI\n48ePi6qqKvH888+r8ntFAv+22bFjhyguLhZ79+4NiA36+vqEEOFpG10GtKOjo2LDhg2ivLxcVFZW\nij/96U9qX1JUeO2110RRUVHA/woLC0VRUZEQQojm5mbxta99TZSUlIiqqipRXV0d8PP79u0Td955\npygrKxOPPPKIaG1tVePXiAr+Aa0QQly4cIFto7LBwUHx1FNPiSVLloibbrpJbN68WXmO7aOuxsZG\n8cgjj4ilS5eKO+64I+A7hW2jrn8/WGGq7bFlyxaxcuVKsWzZMvGzn/1MOJ3OsPwekaioqEiprf3o\no49eFh8UFRUF1J4NddsYhPArJEZEREREpDO6y6ElIiIiIvLHgJaIiIiIdI0BLRERERHpGgNaIiIi\nItI1BrREREREpGsMaImIiIhI1xjQEhEREZGuMaAlIiIiIl1jQEtEREREusaAloiIiIh0jQEtERER\nEena/weyaLgPVEkZyAAAAABJRU5ErkJggg==\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x10de279d0>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"%matplotlib inline\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"import seaborn as sns\n",
"x = np.linspace(0,1,1024)\n",
"plt.plot(np.sin(20*x))\n",
"#Do some random plot here"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## (Approximate) Syllabus\n",
"- **Week 1:** Floating points arithmetics, matrices, vectors, norms, ranks\n",
"- **Week 2:** Matrix decompositions 1: SVD and its applications\n",
"- **Week 3:** Matrix decompositions 2: Linear systems and LU, eigendecomposition\n",
"- **Week 4:** Matrix decompositions 3: QR and Schur + test\n",
"- **Week 5:** Sparse and structured matrices, iterative methods, preconditioners\n",
"- **Week 6:** Matrix functions and advanced topics (compressed sensing, tensor decompositions)\n",
"- **Week 7:** Oral exam\n",
"- **Week 8:** Application period\n",
"\n",
"From advanced topics, we will try to cover **compressed sensing**, **image procession** and **tensor factorizations**."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Books\n",
"\n",
"- Golub, Van Loan, \"Matrix computations\" (4th edition)\n",
"- Tyrtyshnikov, \"Brief introduction to numerical analysis\"\n",
"- Demmel, \"Numerical Linear Algebra\""
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Coding & Python\n",
"\n",
"If there is a request, we can organize a short Python/Numpy/Jupyter tutorial."
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": false,
"slideshow": {
"slide_type": "skip"
}
},
"outputs": [
{
"data": {
"text/html": [
"<link href='http://fonts.googleapis.com/css?family=Fenix' rel='stylesheet' type='text/css'>\n",
"<link href='http://fonts.googleapis.com/css?family=Alegreya+Sans:100,300,400,500,700,800,900,100italic,300italic,400italic,500italic,700italic,800italic,900italic' rel='stylesheet' type='text/css'>\n",
"<link href='http://fonts.googleapis.com/css?family=Source+Code+Pro:300,400' rel='stylesheet' type='text/css'>\n",
"<style>\n",
" @font-face {\n",
" font-family: \"Computer Modern\";\n",
" src: url('http://mirrors.ctan.org/fonts/cm-unicode/fonts/otf/cmunss.otf');\n",
" }\n",
" div.cell{\n",
" /*width:80%;*/\n",
" /*margin-left:auto !important;\n",
" margin-right:auto;*/\n",
" }\n",
" h1 {\n",
" font-family: 'Alegreya Sans', sans-serif;\n",
" }\n",
" h2 {\n",
" font-family: 'Fenix', serif;\n",
" }\n",
" h3{\n",
"\t\tfont-family: 'Fenix', serif;\n",
" margin-top:12px;\n",
" margin-bottom: 3px;\n",
" }\n",
"\th4{\n",
"\t\tfont-family: 'Fenix', serif;\n",
" }\n",
" h5 {\n",
" font-family: 'Alegreya Sans', sans-serif;\n",
" }\t \n",
" div.text_cell_render{\n",
" font-family: 'Alegreya Sans',Computer Modern, \"Helvetica Neue\", Arial, Helvetica, Geneva, sans-serif;\n",
" line-height: 1.2;\n",
" font-size: 120%;\n",
" /*width:70%;*/\n",
" /*margin-left:auto;*/\n",
" margin-right:auto;\n",
" }\n",
" .CodeMirror{\n",
" font-family: \"Source Code Pro\";\n",
"\t\t\tfont-size: 90%;\n",
" }\n",
"/* .prompt{\n",
" display: None;\n",
" }*/\n",
" .text_cell_render h1 {\n",
" font-weight: 200;\n",
" font-size: 50pt;\n",
"\t\tline-height: 110%;\n",
" color:#CD2305;\n",
" margin-bottom: 0.5em;\n",
" margin-top: 0.5em;\n",
" display: block;\n",
" }\t\n",
" .text_cell_render h5 {\n",
" font-weight: 300;\n",
" font-size: 16pt;\n",
" color: #CD2305;\n",
" font-style: italic;\n",
" margin-bottom: .5em;\n",
" margin-top: 0.5em;\n",
" display: block;\n",
" }\n",
" \n",
" li {\n",
" line-height: 110%;\n",
" }\n",
" .warning{\n",
" color: rgb( 240, 20, 20 )\n",
" } \n",
"\n",
"</style>\n",
"\n",
"<script>\n",
" MathJax.Hub.Config({\n",
" TeX: {\n",
" extensions: [\"AMSmath.js\"]\n",
" },\n",
" tex2jax: {\n",
" inlineMath: [ ['$','$'], [\"\\\\(\",\"\\\\)\"] ],\n",
" displayMath: [ ['$$','$$'], [\"\\\\[\",\"\\\\]\"] ]\n",
" },\n",
" displayAlign: 'center', // Change this to 'center' to center equations.\n",
" \"HTML-CSS\": {\n",
" styles: {'.MathJax_Display': {\"margin\": 4}}\n",
" }\n",
" });\n",
"</script>\n"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from IPython.core.display import HTML\n",
"def css_styling():\n",
" styles = open(\"./styles/custom.css\", \"r\").read()\n",
" return HTML(styles)\n",
"css_styling()"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": false,
"slideshow": {
"slide_type": "skip"
}
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/Users/ivan/miniconda2/lib/python2.7/site-packages/IPython/html.py:14: ShimWarning: The `IPython.html` package has been deprecated. You should import from `notebook` instead. `IPython.html.widgets` has moved to `ipywidgets`.\n",
" \"`IPython.html.widgets` has moved to `ipywidgets`.\", ShimWarning)\n",
"/Users/ivan/miniconda2/lib/python2.7/site-packages/IPython/utils/path.py:283: UserWarning: locate_profile has moved to the IPython.paths module\n",
" warn(\"locate_profile has moved to the IPython.paths module\")\n"
]
},
{
"data": {
"text/plain": [
"{u'start_slideshow_at': 'selected', u'theme': 'sky', u'transition': 'zoom'}"
]
},
"execution_count": 1,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from IPython.html.services.config import ConfigManager\n",
"from IPython.utils.path import locate_profile\n",
"cm = ConfigManager(profile_dir=locate_profile(get_ipython().profile))\n",
"cm.update('livereveal', {'theme': 'sky', 'transition': 'zoom', 'start_slideshow_at': 'selected'})"
]
},
{
"cell_type": "code",
"execution_count": 51,
"metadata": {
"collapsed": false,
"slideshow": {
"slide_type": "skip"
}
},
"outputs": [
{
"data": {
"text/plain": [
"[0.010000000000000675,\n",
" 0.00099999999969746511,\n",
" 9.9999999171984655e-05,\n",
" 1.0000013929811757e-05,\n",
" 9.999243673064484e-07]"
]
},
"execution_count": 51,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import numpy as np\n",
"\n",
"x = np.float16(1.0)\n",
"#b = np.float16(1.0 + 1.111111e-3)\n",
"hall = [1e-2, 1e-3, 1e-4, 1e-5, 1e-6]\n",
"f = lambda t: t ** 2\n",
"[(f(x + h) - f(x))/h - 2.0 for h in hall]"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"# Lecture 1: Floating point arithmetic, vector norms"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Syllabus\n",
"**Week 1:** floating point, vector norms, matrix multiplication\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Today \n",
"- Fixed/floating point arithmetic; concept of **backward** and **forward** stability of algorithms\n",
"- How to measure accuracy: vector norms"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Representation of numbers\n",
"\n",
"Real numbers represent quantities: probabilities, velocities, masses, ...\n",
"\n",
"It is important to know, how they are represented in the computer (which only knows about bits)."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Fixed point\n",
"\n",
"The most straightforward format for the representation of real numbers is **fixed point** representation,\n",
"\n",
"also known as **Qm.n** format.\n",
"\n",
"A **Qm.n** number is in the range $[-(2^m), 2^m - 2^{-n}]$, with resolution $2^{-n}$.\n",
"\n",
"Total storage is $m + n + 1$ bits.\n",
"\n",
"The range of numbers represented is fixed."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Representation of numbers\n",
"The numbers in computer memory are typically represented as **floating point numbers** \n",
"\n",
"A floating point number is represented as \n",
"\n",
"$$\\textrm{number} = \\textrm{significand} \\times \\textrm{base}^{\\textrm{exponent}},$$\n",
"\n",
"where $\\textrm{significand}$ is integer, $\\textrm{base}$ is positive integer and $\\textrm{exponent}$ is integer (can be negative), i.e.\n",
"\n",
"$$ 1.2 = 12 \\cdot 10^{-1}.$$"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Fixed vs Floating\n",
"\n",
"**Q**: What are the advantages/disadvantages of the fixed and floating points?"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"**A**: In most cases, they work just fine.\n",
"\n",
"However, fixed point represents numbers within specified range and controls **absolute** accuracy.\n",
"\n",
"Floating point represent numbers with **relative** accuracy, and is suitable for the case when numbers in the computations have varying scale \n",
"\n",
"(i.e., $10^{-1}$ and $10^{5}$).\n",
"\n",
"In practice, if speed is of no concern, use float32 or float64."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## IEEE 754\n",
"In modern computers, the floating point representation is controlled by [IEEE 754 standard](https://en.wikipedia.org/wiki/IEEE_floating_point) which was published in **1985** and before that point different computers behaved differently with floating point numbers. \n",
"\n",
"IEEE 754 has:\n",
"- Floating point representation (as described above), $(-1)^s \\times c \\times b^q$.\n",
"- Two infinities, $+\\infty$ and $-\\infty$\n",
"- Two kinds of **NaN**: a quiet NaN (**qNaN**) and signalling NaN (**sNaN**) \n",
"- Rules for **rounding**\n",
"- Rules for $\\frac{0}{0}, \\frac{1}{-0}, \\ldots$\n",
"\n",
"$ 0 \\leq c \\leq b^p - 1, \\quad 1 - emax \\leq q + p - 1 \\leq emax$"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## The two most common format, single & double\n",
"\n",
"The two most common format, called **binary32** and **binary64** (called also **single** and **double** formats).\n",
"\n",
"| Name | Common Name | Base | Digits | Emin | Emax |\n",
"|------|----------|----------|-------|------|------|\n",
"|binary32| single precision | 2 | 11 | -14 | + 15 | \n",
"|binary64| double precision | 2 | 24 | -126 | + 127 | \n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Accuracy and memory\n",
"The **relative accuracy** of single precision is $10^{-7}-10^{-8}$, \n",
"\n",
"while for double precision is $10^{-14}-10^{-16}$.\n",
"\n",
"<font color='red'> Crucial note 1: </font> A **float32** takes **4 bytes**, **float64**, or double precision, takes **8 bytes.**\n",
"\n",
"<font color='red'> Crucial note 2: </font> These are the only two floating point-types supported in hardware.\n",
"\n",
"<font color='red'> Crucial note 3: </font> You should use **double precision** in CSE and **float** on GPU/Data Science.\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"Some demo (for division accuracy)"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"collapsed": false,
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0.1040364727377892\n",
"-5.96046e-08\n"
]
}
],
"source": [
"import numpy as np\n",
"import random\n",
"#c = random.random()\n",
"#print(c)\n",
"c = np.float32(0.925924589693)\n",
"a = np.float32(8.9)\n",
"b = np.float32(c / a)\n",
"print('{0:10.16f}'.format(b))\n",
"print a * b - c"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"collapsed": false,
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0.0000001468220603\n"
]
}
],
"source": [
"#a = np.array(1.585858585887575775757575e-5, dtype=np.float)\n",
"\n",
"a = np.array(5.0, dtype=np.float32)\n",
"b = np.sqrt(a)\n",
"print('{0:10.16f}'.format(b ** 2 - a))"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {
"collapsed": false,
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0.0\n"
]
}
],
"source": [
"a = np.array(2.28827272710, dtype=np.float32)\n",
"b = np.exp(a)\n",
"print np.log(b) - a"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Summary\n",
"- For some values the inverse functions give exact answers\n",
"- The relative accuracy should be kept due to the IEEE standard.\n",
"- Does not hold for many modern GPU."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Loss of significance\n",
"\n",
"Many operations lead to the loss of digits [loss of significance] (https://en.wikipedia.org/wiki/Loss_of_significance)\n",
"\n",
"\n",
"For example, it is a bad idea to subtract two big numbers that are close, the difference will have fewer correct digits.\n",
"\n",
"This is related to algorithms and their properties (forward/backward stability), which we will discuss later."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Summation algorithm\n",
"\n",
"However, the rounding errors can depend on the algorithm. \n",
"\n",
"Consider the simplest problem: given $n$ numbers floating point numbers $x_1, \\ldots, x_n$ \n",
"\n",
"compute their sum\n",
"\n",
"$$S = \\sum_{i=1}^n x_i = x_1 + \\ldots + x_n.$$\n",
"\n",
"The simplest algorithm is to add one-by-one. \n",
"\n",
"What is the actual error for such algorithm? "
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Naive algorithm\n",
"\n",
"Naive algorithm adds numbers one-by-one, \n",
"\n",
"$$y_1 = x_1, \\quad y_2 = y_1 + x_2, \\quad y_3 = y_2 + x_3, \\ldots.$$\n",
"\n",
"The worst-case error is then proportional to $\\mathcal{O}(n)$, while **mean-squared** error is $\\mathcal{O}(\\sqrt{n})$.\n",
"\n",
"The **Kahan algorithm** gives the worst-case error bound $\\mathcal{O}(1)$ (i.e., independent of $n$). \n",
"\n",
"<font color='red'> Can you find the $\\mathcal{O}(\\log n)$ algorithm? </font>"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Kahan summation\n",
"The following algorithm gives $2 \\varepsilon + \\mathcal{O}(n \\varepsilon^2)$ error, where $\\varepsilon$ is the machine precision.\n",
"```python\n",
"s = 0\n",
"c = 0\n",
"for i in range(len(x)):\n",
" y = x[i] - c\n",
" t = s + y\n",
" c = (t - s) - y\n",
" s = t\n",
"```"
]
},
{
"cell_type": "code",
"execution_count": 78,
"metadata": {
"collapsed": false,
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Error in sum: 1.9e-04, kahan: -1.3e-07, dumb_sum: -1.0e-02 \n"
]
}
],
"source": [
"n = 10 ** 8\n",
"#x = #np.random.randn(n)\n",
"#x = (-1) ** np.arange(n) + 1e-3 * np.random.randn(n)\n",
"sm = 1e-10\n",
"x = np.ones(n, dtype=np.float32) * sm\n",
"x[0] = 1.0\n",
"#x16 = np.array(x, dtype=np.float32)\n",
"#x = np.array(x16, dtype=np.float64)\n",
"true_sum = 1.0 + (n - 1)*sm\n",
"approx_sum = np.sum(x)\n",
"\n",
"from numba import jit\n",
"@jit\n",
"def dumb_sum2(x):\n",
" s = np.float32(0.0)\n",
" for i in range(len(x)):\n",
" s = s + x[i]\n",
" return s\n",
"@jit\n",
"def kahan_sum(x):\n",
" s = np.float32(0.0)\n",
" c = np.float32(0.0)\n",
" for i in range(len(x)):\n",
" y = x[i] - c\n",
" t = s + y\n",
" c = (t - s) - y\n",
" s = t\n",
" return s\n",
"k_sum = kahan_sum(x)\n",
"d_sum = dumb_sum2(x)\n",
"print('Error in sum: {0:3.1e}, kahan: {1:3.1e}, dumb_sum: {2:3.1e} '.format(approx_sum - true_sum, k_sum - true_sum, d_sum - true_sum))\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## More complicated example"
]
},
{
"cell_type": "code",
"execution_count": 54,
"metadata": {
"collapsed": false,
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"20000.0 0.0\n"
]
}
],
"source": [
"import math\n",
"print math.fsum([1, 1e20, 1, -1e20] * 10000), np.sum([1, 1e20, 1, -1e20] * 10000)"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Summary\n",
"You should be really careful with floating point, since it may give you incorrect answers due to rounding-off errors.\n",
"\n",
"For many standard algorithms, the stability is well-understood and problems can be easily detected."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Vectors\n",
"In NLA we typically work not with **numbers** but with **vectors**. \n",
"\n",
"Recall that a vector is a 1D array with $n$ numbers. Typically, it is considered as an $n \\times 1$ matrix (**column vector**)."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Vector norm\n",
"Vectors typically provide an (approximate) description of a physical (or some other) object. \n",
"\n",
"One of the main question is **how accurate** the approximation is (1%, 10%). \n",
"\n",
"What is an acceptable representation, of course, depends on the particular applications. For example:\n",
"- In partial differential equations accuracies $10^{-5} - 10^{-10}$ are the typical case\n",
"- In data mining sometimes an error of $80\\%$ is ok, since the interesting signal is corrupted by a huge noise."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Distances and norms\n",
"Norm is a **qualitative measure of smallness of a vector** and is typically denoted as $\\Vert x \\Vert$.\n",
"\n",
"The norm should satisfy certain properties:\n",
"\n",
"- $\\Vert \\alpha x \\Vert = |\\alpha| \\Vert x \\Vert$,\n",
"- $\\Vert x + y \\Vert \\leq \\Vert x \\Vert + \\Vert y \\Vert$ (triangle inequality),\n",
"- If $\\Vert x \\Vert = 0$ then $x = 0$.\n",
"\n",
"The distance between two vectors is then defined as\n",
"$$\n",
" d(x, y) = \\Vert x - y \\Vert.\n",
"$$"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Standard norms\n",
"The most well-known and widely used norm is **euclidean norm**:\n",
"$$\\Vert x \\Vert_2 = \\sqrt{\\sum_{i=1}^n |x_i|^2},$$\n",
"which corresponds to the distance in our real life (the vectors might have complex elements, thus is the modulus here)."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## $p$-norm\n",
"Euclidean norm, or $2$-norm, is a subclass of an important class of $p$-norms:\n",
"$$\n",
" \\Vert x \\Vert_p = \\Big(\\sum_{i=1}^n |x_i|^p\\Big)^{1/p}.\n",
"$$\n",
"There are two very important special cases:\n",
"- Infinity norm, or Chebyshev norm which is defined as the maximal element: $\\Vert x \\Vert_{\\infty} = \\max_i | x_i|$\n",
"- $L_1$ norm (or **Manhattan distance**) which is defined as the sum of modules of the elements of $x$: $\\Vert x \\Vert_1 = \\sum_i |x_i|$ \n",
"<img src=\"chebyshev.jpeg\" style=\"float: left; height: 1%\"> <img src=\"manhattan.jpeg\" style=\"height\"> \n"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
"We will give examples where Manhattan is very important: it all relates to the **compressed sensing** methods \n",
"that emerged in the mid-00s as one of the most popular research topics."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
"## Equivalence of the norms\n",
"All norms are equivalent in the sense that\n",
"$$\n",
" C_1 \\Vert x \\Vert_* \\leq \\Vert x \\Vert_{**} \\leq C_2 \\Vert x \\Vert_*\n",
"$$ \n",
"for some constants $C_1(n), C_2(n)$, $x \\in \\mathbb{R}^n$ for any pairs of norms $\\Vert \\cdot \\Vert_*$ and $\\Vert \\cdot \\Vert_{**}$. The equivalence of the norms basically means that if the vector is small in one norm, it is small in another norm. However, the constants can be large."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
"## Computing norms in Python\n",
"The numpy package has all you need for computing norms (```np.linalg.norm``` function)\n"
]
},
{
"cell_type": "code",
"execution_count": 55,
"metadata": {
"collapsed": false,
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Relative error: 0.00244402842285\n"
]
}
],
"source": [
"import numpy as np\n",
"n = 100\n",
"a = np.ones(n)\n",
"b = a + 1e-3 * np.random.randn(n)\n",
"print 'Relative error:', np.linalg.norm(a - b, np.inf) / np.linalg.norm(b, np.inf)"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
"## Unit disks in different norms\n",
"A unit disk is a set of point such that $\\Vert x \\Vert \\leq 1$. For the Frobenius norm is a disk; for other norms the \"disks\" look different."
]
},
{
"cell_type": "code",
"execution_count": 59,
"metadata": {
"collapsed": false,
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"data": {
"text/plain": [
"(-1.0, 1.0, -1.0, 1.0)"
]
},
"execution_count": 59,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\nrkJggg==\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x10b7a1450>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"%matplotlib inline\n",
"import seaborn as sns\n",
"import matplotlib.pyplot as plt\n",
"import numpy as np\n",
"p = 0.5 #Which norm do we use\n",
"M = 40000 #Number of sampling points\n",
"a = np.random.randn(M, 2)\n",
"b = []\n",
"for i in xrange(M):\n",
" if np.linalg.norm(a[i, :], p) <= 1:\n",
" b.append(a[i, :])\n",
"b = np.array(b)\n",
"plt.fill(b[:, 0], b[:, 1])\n",
"plt.axis('equal')"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Why $L_1$-norm can be important\n",
"$L_1$ norm, as it was discovered quite recently, plays an important role in **compressed sensing**. \n",
"\n",
"The simplest formulation is as follows:\n",
"- You have some observations $f$ \n",
"- You have a linear model $Ax = f$, where $A$ is an $n \\times m$ matrix, $A$ is **known**\n",
"- The number of equations, $n$ is less than the number of unknowns, $m$\n",
"\n",
"The question: can we find the solution?"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
"The solution is obviously non-unique, so a natural approach is to find the solution that is minimal in the certain sense:\n",
"\n",
"$$ \\Vert x \\Vert \\rightarrow \\min, \\quad \\mbox{subject to } Ax = f$$\n",
"\n",
"Typical choice of $\\Vert x \\Vert = \\Vert x \\Vert_2$ leads to the **linear least squares problem** (and has been used for ages). \n",
"\n",
"The choice $\\Vert x \\Vert = \\Vert x \\Vert_1$ leads to the [**compressed sensing**]\n",
"\n",
"(https://en.wikipedia.org/wiki/Compressed_sensing) and what happens, it typically yields the **sparsest solution**. \n",
"\n",
"[A short demo](tv-denoising-demo.ipynb)"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## What is a stable algorithm?\n",
"\n",
"And we finalize the lecture by the concept of **stability**.\n",
"\n",
"Let $x$ be an object (for example, a vector). Let $f(x)$ be the function (functional) you want to evaluate. \n",
"\n",
"You also have a **numerical algorithm** ``alg(x)`` that actually computes **approximation** to $f(x)$. \n",
"\n",
"The algorithm is called **forward stable**, if $$\\Vert alg(x) - f(x) \\Vert \\leq \\varepsilon $$ \n",
"\n",
"The algorithm is called **backward stable**, if for any $x$ there is a close vector $x + \\delta x$ such that\n",
"\n",
"$$alg(x) = f(x + \\delta x)$$\n",
"\n",
"and $\\Vert \\delta x \\Vert$ is small."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Classical example\n",
"A classical example is the **solution of linear systems of equations** using LU-factorizations\n",
"\n",
"We consider the **Hilbert matrix** with the elements\n",
"\n",
"$$a_{ij} = 1/(i + j + 1), \\quad i = 0, \\ldots, n-1, \\quad j = 0, \\ldots n-1.$$\n",
"\n",
"And consider a linear system\n",
"\n",
"$$Ax = f.$$\n",
"\n",
"(We will look into matrices in more details in the next lecture, and for linear systems in the upcoming weeks, but now you actually **see** the linear system)"
]
},
{
"cell_type": "code",
"execution_count": 75,
"metadata": {
"collapsed": false,
"scrolled": false,
"slideshow": {
"slide_type": "slide"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"39.7523446645\n"
]
}
],
"source": [
"import numpy as np\n",
"n = 500\n",
"a = [[1.0/(i + j + 1) for i in range(n)] for j in range(n)] #Hil\n",
"a = np.array(a)\n",
"rhs = np.random.randn(n)\n",
"sol = np.linalg.solve(a, rhs)\n",
"print np.linalg.norm(a.dot(sol) - rhs)/np.linalg.norm(rhs) #Ax - y\n",
"#print sol"
]
},
{
"cell_type": "code",
"execution_count": 76,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"[<matplotlib.lines.Line2D at 0x13b290650>]"
]
},
"execution_count": 76,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x112093490>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.plot(sol)"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Take home message\n",
"- Floating point (double, single, number of bytes), rounding error\n",
"- Norms are measures of smallness, used to compute the accuracy\n",
"- $1$, $p$ and Euclidean norms \n",
"- $L_1$ is used in compressed sensing as a surrogate for sparsity (later lectures) \n",
"- Forward/backward error (and stability of algorithms) (later lectures)"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Next lecture\n",
"- Forward/backward stability: more details\n",
"- Matrices and operators\n",
"- Matrix multiplication\n",
"- Complexity of matrix multiplication"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"##### Questions?"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": false,
"slideshow": {
"slide_type": "skip"
}
},
"outputs": [
{
"data": {
"text/html": [
"<link href='http://fonts.googleapis.com/css?family=Fenix' rel='stylesheet' type='text/css'>\n",
"<link href='http://fonts.googleapis.com/css?family=Alegreya+Sans:100,300,400,500,700,800,900,100italic,300italic,400italic,500italic,700italic,800italic,900italic' rel='stylesheet' type='text/css'>\n",
"<link href='http://fonts.googleapis.com/css?family=Source+Code+Pro:300,400' rel='stylesheet' type='text/css'>\n",
"<style>\n",
" @font-face {\n",
" font-family: \"Computer Modern\";\n",
" src: url('http://mirrors.ctan.org/fonts/cm-unicode/fonts/otf/cmunss.otf');\n",
" }\n",
" div.cell{\n",
" /*width:80%;*/\n",
" /*margin-left:auto !important;\n",
" margin-right:auto;*/\n",
" }\n",
" h1 {\n",
" font-family: 'Alegreya Sans', sans-serif;\n",
" }\n",
" h2 {\n",
" font-family: 'Fenix', serif;\n",
" }\n",
" h3{\n",
"\t\tfont-family: 'Fenix', serif;\n",
" margin-top:12px;\n",
" margin-bottom: 3px;\n",
" }\n",
"\th4{\n",
"\t\tfont-family: 'Fenix', serif;\n",
" }\n",
" h5 {\n",
" font-family: 'Alegreya Sans', sans-serif;\n",
" }\t \n",
" div.text_cell_render{\n",
" font-family: 'Alegreya Sans',Computer Modern, \"Helvetica Neue\", Arial, Helvetica, Geneva, sans-serif;\n",
" line-height: 1.2;\n",
" font-size: 120%;\n",
" /*width:70%;*/\n",
" /*margin-left:auto;*/\n",
" margin-right:auto;\n",
" }\n",
" .CodeMirror{\n",
" font-family: \"Source Code Pro\";\n",
"\t\t\tfont-size: 90%;\n",
" }\n",
"/* .prompt{\n",
" display: None;\n",
" }*/\n",
" .text_cell_render h1 {\n",
" font-weight: 200;\n",
" font-size: 50pt;\n",
"\t\tline-height: 110%;\n",
" color:#CD2305;\n",
" margin-bottom: 0.5em;\n",
" margin-top: 0.5em;\n",
" display: block;\n",
" }\t\n",
" .text_cell_render h5 {\n",
" font-weight: 300;\n",
" font-size: 16pt;\n",
" color: #CD2305;\n",
" font-style: italic;\n",
" margin-bottom: .5em;\n",
" margin-top: 0.5em;\n",
" display: block;\n",
" }\n",
" \n",
" li {\n",
" line-height: 110%;\n",
" }\n",
" .warning{\n",
" color: rgb( 240, 20, 20 )\n",
" } \n",
"\n",
"</style>\n",
"\n",
"<script>\n",
" MathJax.Hub.Config({\n",
" TeX: {\n",
" extensions: [\"AMSmath.js\"]\n",
" },\n",
" tex2jax: {\n",
" inlineMath: [ ['$','$'], [\"\\\\(\",\"\\\\)\"] ],\n",
" displayMath: [ ['$$','$$'], [\"\\\\[\",\"\\\\]\"] ]\n",
" },\n",
" displayAlign: 'center', // Change this to 'center' to center equations.\n",
" \"HTML-CSS\": {\n",
" styles: {'.MathJax_Display': {\"margin\": 4}}\n",
" }\n",
" });\n",
"</script>\n"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"execution_count": 1,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from IPython.core.display import HTML\n",
"def css_styling():\n",
" styles = open(\"./styles/custom.css\", \"r\").read()\n",
" return HTML(styles)\n",
"css_styling()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"metadata": {
"code_folding": [
1
],
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"# Lecture 2: Matrix multiplication"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Syllabus\n",
"**Week 1:** Intro week, floating point, vector norms, matrix multiplication\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Recap of the previous lecture\n",
"- Concept of floating point\n",
"- Basic vector norms(p-norm, Manhattan distance, 2-norm, Chebyshev norm)\n",
"- A short demo on $L_1$-norm minimization\n",
"- Concept of forward/backward error"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Today lecture\n",
"Today we will talk about:\n",
"- Matrices\n",
"- Matrix multiplication\n",
"- Concept of blocking in NLA"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Matrices\n",
"\n",
"In NLA a matrix is a two-dimensional table of numbers:\n",
"\n",
"$$A = [a_{ij}], \\quad i = 1, \\ldots, n, \\quad j = 1, \\ldots m.$$\n",
"\n",
"If $n = m$ we have a **square matrix**, \n",
"\n",
"if $n > m$ we have a **tall matrix**\n",
"\n",
"if $n < m$ we have a **long matrix**\n",
"\n",
"A matrix takes $n m$ numbers to store and is the **basic object** in NLA."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Matrix-by-matrix product\n",
"\n",
"Matrices $A \\in \\mathbb{R}^{n \\times m}$ form a vector space of dimension $nm$.\n",
"\n",
"But one important operation is added: **matrix-by-matrix product**."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Matrix-by-matrix product\n",
"\n",
"Consider composition of two linear operators:\n",
"\n",
"1. $y = Bx$\n",
"2. $z = Ay$\n",
"\n",
"Then, $z = Ay = A B x = C x$, where $C$ is the **matrix-by-matrix product**."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Matrix-by-matrix product: classics\n",
"\n",
"A product of an $n \\times k$ matrix $A$ and a $k \\times m$ matrix $B$ is a $n \\times m$ matrix $C$ with the elements \n",
"$$\n",
" c_{ij} = \\sum_{s=1}^k a_{is} b_{sj}, \\quad i = 1, \\ldots, n, \\quad j = 1, \\ldots, m \n",
"$$"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Complexity of MM\n",
"Complexity of a naive algorithm for MM is $\\mathcal{O}(n^3)$. \n",
"\n",
"Matrix-by-matrix product is the **core** for almost all efficient algorithms in linear algebra. \n",
"\n",
"Basically, all the dense NLA algorithms are reduced to a sequence of matrix-by-matrix products, \n",
"\n",
"so efficient implementation of MM reduces the complexity of numerical algorithms by the same factor. \n",
"\n",
"However, implementing MM is not easy at all!"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Efficient implementation for MM\n",
"**Q1**: Is it easy to multiply a matrix by a matrix in the most efficient way?"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Answer: \n",
"\n",
"The answer is: **no, it is not easy**, if you want it as fast as possible, \n",
"\n",
"using the computers that are at hand."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Demo\n",
"Let us do a short demo and compare a `np.dot()` procedure which in my case uses MKL with a hand-written matrix-by-matrix routine in Python and also its Cython version (and also gives a very short introduction to Cython)."
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"code_folding": [],
"collapsed": true,
"slideshow": {
"slide_type": "slide"
}
},
"outputs": [],
"source": [
"import numpy as np\n",
"def matmul(a, b):\n",
" n = a.shape[0]\n",
" k = a.shape[1]\n",
" m = b.shape[1] #c[i, :] += \n",
" c = np.zeros((n, m))\n",
" #Transpose B here, but it is N^2 operations\n",
" for i in range(n): #This is N^3\n",
" for j in range(m):\n",
" for s in range(k):\n",
" c[i, j] += a[i, s] * b[s, j]"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"collapsed": false,
"slideshow": {
"slide_type": "slide"
}
},
"outputs": [],
"source": [
"import numpy as np\n",
"from numba import jit # Just-in-time compiler for Python, see http://numba.pydata.org \n",
"@jit\n",
"def numba_matmul(a, b):\n",
" n = a.shape[0]\n",
" k = a.shape[1]\n",
" m = b.shape[1]\n",
" c = np.zeros((n, m))\n",
" for i in range(n):\n",
" for j in range(m):\n",
" for s in range(k):\n",
" c[i, j] += a[i, s] * b[s, j]\n",
" return c"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"Then we just compare computational times.\n",
"\n",
"Guess the answer."
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"collapsed": false,
"slideshow": {
"slide_type": "slide"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The slowest run took 170.18 times longer than the fastest. This could mean that an intermediate result is being cached.\n",
"1 loop, best of 3: 1.66 ms per loop\n",
"The slowest run took 4.34 times longer than the fastest. This could mean that an intermediate result is being cached.\n",
"10000 loops, best of 3: 54.4 µs per loop\n"
]
}
],
"source": [
"n = 100\n",
"a = np.random.randn(n, n)\n",
"b = np.random.randn(n, n)\n",
"%timeit c = numba_matmul(a, b)\n",
"%timeit c = np.dot(a, b)"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Why is naive implementation slow?\n",
"It is slow due to two issues:\n",
"\n",
"- It does not use the benefits of fast memory (cache) and in general memory architecture\n",
"- It does not use available parallelization ability (especially important for GPU) "
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Memory architecture\n",
"<img width=80% src=\"Computer_Memory_Hierarchy.svg\">\n",
"Fast memory is small, bigger memory is slow. "
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## How does memory hierarchy work?\n",
"\n",
"- If data fits into the fast memory, then load data and compute\n",
"- If data does not fit into the fast memory, then:\n",
" 1. Load data by chunks into fast memory\n",
" 2. Compute\n",
" 3. Write result into slow memory\n",
" 4. Take next chunk and go to step 1"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## How to measure performance\n",
"\n",
"There are two quantities: **flops** (floating points operations per second) and **bandwidth** of the memory (and also its latency).\n",
"\n",
"Flops are simple: total number of floating point operations per second\n",
"\n",
"**Peak** flops is the theoretical maximum performance that machine can do."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Examples of peak performance\n",
"\n",
"Giga = $2^{30} \\approx 10^9$, \n",
"\n",
"Tera = $2^{40} \\approx 10^{12}$,\n",
"\n",
"Peta = $2^{50} \\approx 10^{15}$, \n",
"\n",
"Exa = $2^{60} \\approx 10^{18}$ \n",
"\n",
"What is the **peak perfomance** of:\n",
"\n",
"1. Modern CPU (Intel Core i7)?\n",
"2. Modern GPU (NVidia Titan)?\n",
"3. Modern Mobile CPU of an IPhone? \n",
"4. Largest supercomputer of the world? "
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"\n",
"1. Modern CPU (Intel Core i7) - 384 Gflops\n",
"2. Modern GPU (NVidia Titan X) - 12 Tflops single precision \n",
"3. Modern Mobile CPU of an IPhone - 2-3 Gflops\n",
"4. Largest supercomputer of the world - 93 Petaflops\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Bandwidths\n",
"\n",
"The fastest bandwidth of RAM now is 50 Gbytes/second for a CPU <br>\n",
"and for PCI-E is at most 512 Gbytes/second for x32.\n",
"\n",
"For the efficiency, you need computationally intensive algorithm!"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Making algorithms more computationally intensive\n",
"\n",
"<font color='red'>**Key idea**</font>: reduce the number of read/write operations! \n",
"\n",
"<font color='red'>**Implementation in NLA**</font>: use block version of algorithms. <br>\n",
"This approach is a core of BLAS (Basic Linear Algebra Subroutines), written in Fortran many years ago, and still rules the computational world."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"Split the matrix into blocks! For illustration consider splitting in $2 \\times 2$ block matrix:\n",
"\n",
"$$\n",
" A = \\begin{bmatrix}\n",
" A_{11} & A_{12} \\\\\n",
" A_{21} & A_{22}\n",
" \\end{bmatrix}, \\quad B = \\begin{bmatrix}\n",
" B_{11} & B_{12} \\\\\n",
" B_{21} & B_{22}\n",
" \\end{bmatrix}$$"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"Then, \n",
"\n",
"$$AB = \\begin{bmatrix}A_{11} B_{11} + A_{12} B_{21} & A_{11} B_{12} + A_{12} B_{22} \\\\\n",
" A_{21} B_{11} + A_{22} B_{21} & A_{21} B_{12} + A_{22} B_{22}\\end{bmatrix}.$$\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
"If $A_{11}, B_{11}$ and their product fit into the cache memory (which is 1024 Kb for the [recent Intel Chip](http://en.wikipedia.org/wiki/List_of_Intel_Core_i7_microprocessors#.22Haswell-H.22_.28MCP.2C_quad-core.2C_22_nm.29)), then we load them only once into the memory. "
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"### Key point\n",
"The number of read/write operations is reduced by a factor $\\sqrt{M}$, where $M$ is the cache size. \n",
"\n",
"- Have to do linear algebra in terms of blocks! \n",
"- So, you can not even do Gaussian elimination as usual (or just suffer 10x performance loss)"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Blocking and parallelization\n",
"Blocking paradigm is appropriate for parallel computations.\n",
"\n",
"As an example of combination of blocking and parallelization consider summation two vectors:\n",
"$$ c = a + b.$$\n",
"Clearly, on $p$ cores we can get speed-up up to $p$ times. "
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Types of parallelization\n",
"\n",
"Typically, two cases are distinguished: \n",
"1. Shared memory (i.e., multicore on every desktop/smartphone), e.g. OpenMP, Pthreads.\n",
"2. Distributed memory (i.e. each processor has its own memory, can send information through a network), e.g. MPI"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Memory bandwidth importance\n",
"\n",
"In both cases, the efficiency is depended by a **memory bandwidth**: <br>\n",
"i.e., for BLAS-1 and BLAS-2 routines reads/writes take all the time. \n",
"\n",
"For BLAS-3 routines, the speed-up can be obtained that is more noticable. \n",
"\n",
"For large-scale clusters (>100 000 cores, see the [Top500 list](http://www.top500.org/lists/)) there is still scaling."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Communication-avoiding algorithms\n",
"\n",
"* How to minimize memory bandwith influence?\n",
"* Communcation-avoiding algorithms reduces the number of communications between workers \n",
"* NLA in a cloud - possible project"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## BLAS\n",
"BLAS has three levels:\n",
"1. BLAS-1, operations like $c = a + b$\n",
"2. BLAS-2, operations like matrix-by-vector product\n",
"3. BLAS-3, matrix-by-matrix product\n",
"\n",
"What is the principal differences between them?"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"The main difference is the number of operations vs. the number of input data!\n",
"\n",
"1. BLAS-1: $\\mathcal{O}(n)$ data, $\\mathcal{O}(n)$ operations\n",
"2. BLAS-2: $\\mathcal{O}(n^2)$ data, $\\mathcal{O}(n^2)$ operations\n",
"3. BLAS-3: $\\mathcal{O}(n^2)$ data, $\\mathcal{O}(n^3)$ operations"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Why BLAS is so important and actual?\n",
"\n",
"1. The state-of-the-art implementation of the basic linear algebra operations\n",
"2. Provides standard names for operations in any new implementations (e.g. ATLAS, OpenBLAS, MKL). You can call matrix-by-matrix multiplication function (GEMM), link your code with any BLAS implementation (ATLAS, OpenBLAS, etc.) and it will work correctly\n",
"3. Formulate new algorithms in terms of BLAS operations\n",
"4. There are wrappers for most popular languages"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Packages related to BLAS\n",
"\n",
"1. [ATLAS](http://math-atlas.sourceforge.net) - Automatic Tuned Linear Algebra Software. It automatically adapts to a particular system architechture. \n",
"2. [LAPACK](http://www.netlib.org/lapack/) - Linear Algebra Package. It provides high-level linear algebra operations (e.g. matrix factorizations), which are based on calls of BLAS subroutines.\n",
"3. [Intel MKL](https://software.intel.com/en-us/intel-mkl) - Math Kernel Library. It provides re-implementation of BLAS and LAPACK, optimized for Intel processors. Available in Anaconda Python distribution: \n",
"```\n",
"conda install mkl\n",
"```\n",
"MATLAB uses Intel MKL by default.\n",
"\n",
"4. [OpenBLAS](OpenBLAS is an optimized BLAS library based on GotoBLAS) - OpenBLAS is an optimized BLAS library based on [GotoBLAS](https://en.wikipedia.org/wiki/GotoBLAS). \n",
"\n",
"For comparison of OpenBLAS and Intel MKL, see this [review](https://software.intel.com/en-us/articles/performance-comparison-of-openblas-and-intel-math-kernel-library-in-r)\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Faster algorithms for matrix multiplication\n",
"\n",
"Recall that matrix-matrix multiplication costs $\\mathcal{O}(n^3)$ operations.\n",
"However, storage is $\\mathcal{O}(n^2)$.\n",
"\n",
"**Question:** is it possible to reduce number operations down to $\\mathcal{O}(n^2)$?\n",
"\n",
"**Answer**: a quest for $\\mathcal{O}(n^2)$ matrix-by-matrix multiplication algorithm is not yet done."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"* Strassen gives $\\mathcal{O}(n^{2.807\\dots})$ - sometimes used in practice \n",
"\n",
"* [World record](http://arxiv.org/pdf/1401.7714v1.pdf) $\\mathcal{O}(n^{2.37\\dots})$ - big constant, not practical\n",
"\n",
"Consider Strassen in more details. "
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Strassen algorithm\n",
"\n",
"Let $A$ and $B$ be two $2\\times 2$ matrices. Naive multiplication $C = AB$\n",
"$$\n",
"\\begin{bmatrix} c_{11} & c_{12} \\\\ c_{21} & c_{22} \\end{bmatrix} =\n",
"\\begin{bmatrix} a_{11} & a_{12} \\\\ a_{21} & a_{22} \\end{bmatrix}\n",
"\\begin{bmatrix} b_{11} & b_{12} \\\\ b_{21} & b_{22} \\end{bmatrix} =\n",
"\\begin{bmatrix} \n",
"a_{11}b_{11} + a_{12}b_{21} & a_{11}b_{21} + a_{12}b_{22} \\\\ \n",
"a_{21}b_{11} + a_{22}b_{21} & a_{21}b_{21} + a_{22}b_{22} \n",
"\\end{bmatrix}\n",
"$$\n",
"contains $8$ multiplications and $4$ additions."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"In the work [Gaussian elimination is not optimal](http://link.springer.com/article/10.1007%2FBF02165411?LI=true) (1969) Strassen found that one can calculate $C$ using 18 additions and only 7 multiplications:\n",
"$$\n",
"\\begin{split}\n",
"c_{11} &= f_1 + f_4 - f_5 + f_7, \\\\\n",
"c_{12} &= f_3 + f_5, \\\\\n",
"c_{21} &= f_2 + f_4, \\\\\n",
"c_{22} &= f_1 - f_2 + f_3 + f_6,\n",
"\\end{split}\n",
"$$\n",
"where\n",
"$$\n",
"\\begin{split}\n",
"f_1 &= (a_{11} + a_{22}) (b_{11} + b_{22}), \\\\\n",
"f_2 &= (a_{21} + a_{22}) b_{11}, \\\\\n",
"f_3 &= a_{11} (b_{12} - b_{22}), \\\\\n",
"f_4 &= a_{22} (b_{21} - b_{11}), \\\\\n",
"f_5 &= (a_{11} + a_{12}) b_{22}, \\\\\n",
"f_6 &= (a_{21} - a_{11}) (b_{11} + b_{12}), \\\\\n",
"f_7 &= (a_{12} - a_{22}) (b_{21} + b_{22}).\n",
"\\end{split}\n",
"$$\n",
"\n",
"Fortunately, these formulas hold even if $a_{ij}$ and $b_{ij}$, $i,j=1,2$ are block matrices.\n",
"\n",
"Thus, Strassen algorithm looks as follows. First of all we <font color='red'>split</font> matrices $A$ and $B$ of sizes $n\\times n$, $n=2^d$ <font color='red'>into 4 blocks</font> of size $\\frac{n}{2}\\times \\frac{n}{2}$. Then we <font color='red'>calculate multiplications</font> in the described formulas <font color='red'>recursively</font>.\n",
"This leads us again to the **divide and conquer** idea."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Complexity of the Strassen algorithm\n",
"\n",
"#### Number of multiplications\n",
"\n",
"Calculation of number of multiplications is a trivial task. Let us denote by $M(n)$ number of multiplications used to multiply 2 matrices of sizes $n\\times n$ using the divide and conquer concept.\n",
"Then for naive algorithm we have\n",
"$$\n",
"M_\\text{naive}(n) = 8 M_\\text{naive}\\left(\\frac{n}{2} \\right) = 8^2 M_\\text{naive}\\left(\\frac{n}{4} \\right)\n",
"= \\dots = 8^{d-1} M(1) = 8^{d} = 8^{\\log_2 n} = n^{\\log_2 8} = n^3\n",
"$$\n",
"So, even when using divide and coquer idea we can not be better than $n^3$.\n",
"\n",
"Lets calculate number of multiplications for the Strassen algorithm:\n",
"$$\n",
"M_\\text{strassen}(n) = 7 M_\\text{strassen}\\left(\\frac{n}{2} \\right) = 7^2 M_\\text{strassen}\\left(\\frac{n}{4} \\right)\n",
"= \\dots = 7^{d-1} M(1) = 7^{d} = 7^{\\log_2 n} = n^{\\log_2 7}\n",
"$$"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"#### Number of additions\n",
"\n",
"There is no point to estimate number of addtitions $A(n)$ for naive algorithm, as we already got $n^3$ multiplications. \n",
"For the Strassen algorithm we have:\n",
"$$\n",
"A_\\text{strassen}(n) = 7 A_\\text{strassen}\\left( \\frac{n}{2} \\right) + 18 \\left( \\frac{n}{2} \\right)^2\n",
"$$\n",
"since on the first level we have to add $\\frac{n}{2}\\times \\frac{n}{2}$ matrices 18 times and then go deeper for each of the 7 multiplications. Thus,\n",
"<font size=2.0>\n",
"$$\n",
"\\begin{split}\n",
"A_\\text{strassen}(n) =& 7 A_\\text{strassen}\\left( \\frac{n}{2} \\right) + 18 \\left( \\frac{n}{2} \\right)^2 = 7 \\left(7 A_\\text{strassen}\\left( \\frac{n}{4} \\right) + 18 \\left( \\frac{n}{4} \\right)^2 \\right) + 18 \\left( \\frac{n}{2} \\right)^2 =\n",
"7^2 A_\\text{strassen}\\left( \\frac{n}{4} \\right) + 7\\cdot 18 \\left( \\frac{n}{4} \\right)^2 + 18 \\left( \\frac{n}{2} \\right)^2 = \\\\\n",
"=& \\dots = 18 \\sum_{k=1}^d 7^{k-1} \\left( \\frac{n}{2^k} \\right)^2 = \\frac{18}{4} n^2 \\sum_{k=1}^d \\left(\\frac{7}{4} \\right)^{k-1} = \\frac{18}{4} n^2 \\frac{\\left(\\frac{7}{4} \\right)^d - 1}{\\frac{7}{4} - 1} = 6 n^2 \\left( \\left(\\frac{7}{4} \\right)^d - 1\\right) \\leqslant 6 n^2 \\left(\\frac{7}{4} \\right)^d = 6 n^{\\log_2 7}\n",
"\\end{split}\n",
"$$\n",
"</font>\n",
"(since $4^d = n^2$ and $7^d = n^{\\log_2 7}$).\n",
"\n",
"\n",
"Asymptotic behavior of $A(n)$ could be also found from the [master theorem](https://en.wikipedia.org/wiki/Master_theorem)."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"#### Total complexity\n",
"\n",
"Total complexity is $M_\\text{strassen}(n) + A_\\text{strassen}(n)=$ <font color='red'>$7 n^{\\log_2 7}$</font>. Strassen algorithm becomes faster\n",
"when\n",
"$$\n",
"\\begin{split}\n",
"2n^3 &> 7 n^{\\log_2 7}, \\\\\n",
"n &> 667,\n",
"\\end{split}\n",
"$$\n",
"so it is not a good idea to get to the bottom level of recursion."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Strassen algorithm and tensor rank (advanced topic)\n",
"\n",
"It is not clear how Strassen found these formulas. However, now we can see that they are not that artificial:\n",
"there is a general approach based on the so-called tensor decomposition technique. Here by tensor we imply nothing, but a multidimensional array - generalization of the matrix concept to many dimensions.\n",
"\n",
"Let us numerate elements in the $2\\times 2$ matrices as follows\n",
"$$\n",
"\\begin{bmatrix} c_{1} & c_{3} \\\\ c_{2} & c_{4} \\end{bmatrix} =\n",
"\\begin{bmatrix} a_{1} & a_{3} \\\\ a_{2} & a_{4} \\end{bmatrix}\n",
"\\begin{bmatrix} b_{1} & b_{3} \\\\ b_{2} & b_{4} \\end{bmatrix}=\n",
"\\begin{bmatrix} \n",
"a_{1}b_{1} + a_{3}b_{2} & a_{1}b_{3} + a_{3}b_{4} \\\\ \n",
"a_{2}b_{1} + a_{4}b_{2} & a_{2}b_{3} + a_{4}b_{4} \n",
"\\end{bmatrix}\n",
"$$\n",
"\n",
"This can be written as\n",
"$$\n",
"c_k = \\sum_{i=1}^4 \\sum_{j=1}^4 x_{ijk} a_i b_j, \\quad k=1,2,3,4\n",
"$$\n",
"where $x_{ijk}$ is a 3-dimensional array, that consists of zeros and ones:\n",
"$$\n",
"\\begin{split}\n",
"x_{\\ :,\\ :,\\ 1} = \n",
"\\begin{pmatrix}\n",
"1 & 0 & 0 & 0 \\\\\n",
"0 & 0 & 0 & 0 \\\\\n",
"0 & 1 & 0 & 0 \\\\\n",
"0 & 0 & 0 & 0 \\\\\n",
"\\end{pmatrix}\n",
"\\quad\n",
"x_{\\ :,\\ :,\\ 2} = \n",
"\\begin{pmatrix}\n",
"0 & 0 & 0 & 0 \\\\\n",
"1 & 0 & 0 & 0 \\\\\n",
"0 & 0 & 0 & 0 \\\\\n",
"0 & 1 & 0 & 0 \\\\\n",
"\\end{pmatrix} \\\\\n",
"x_{\\ :,\\ :,\\ 3} = \n",
"\\begin{pmatrix}\n",
"0 & 0 & 1 & 0 \\\\\n",
"0 & 0 & 0 & 0 \\\\\n",
"0 & 0 & 0 & 1 \\\\\n",
"0 & 0 & 0 & 0 \\\\\n",
"\\end{pmatrix}\n",
"\\quad\n",
"x_{\\ :,\\ :,\\ 4} = \n",
"\\begin{pmatrix}\n",
"0 & 0 & 1 & 0 \\\\\n",
"0 & 0 & 0 & 0 \\\\\n",
"0 & 0 & 0 & 0 \\\\\n",
"0 & 0 & 0 & 1 \\\\\n",
"\\end{pmatrix}\n",
"\\end{split}\n",
"$$\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"#### Trilinear decomposition\n",
"\n",
"To get Strassen algorithm we should do the following trick - decompose $x_{ijk}$ in the following way\n",
"$$\n",
"x_{ijk} = \\sum_{\\alpha=1}^r u_{i\\alpha} v_{j\\alpha} w_{k\\alpha}.\n",
"$$\n",
"This decomposition is called trilinear tensor decomposition and has a meaning of separation of variables: we have a sum of $r$ (called rank) summands with separated $i$, $j$ and $k$."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"#### Strassen via trilinear\n",
"\n",
"Now we have\n",
"$$\n",
"c_k = \\sum_{\\alpha=1}^r w_{k\\alpha} \\left(\\sum_{i=1}^4 u_{i\\alpha} a_i \\right) \\left( \\sum_{j=1}^4 v_{j\\alpha} b_j\\right), \\quad k=1,2,3,4.\n",
"$$\n",
"Multiplications by $u_{i\\alpha}$ or $v_{j\\alpha}$ or $w_{k\\alpha}$ do not require recursion since $u, v$ and $w$ are known precomputed matrices. Therefore, we have only $r$ multiplications of $\\left(\\sum_{i=1}^4 u_{i\\alpha} a_i \\right)$ and $\\left( \\sum_{j=1}^4 v_{j\\alpha} b_j\\right)$ where both factors depend on the input data.\n",
" \n",
"As you might guess one can check that array $x_{ijk}$ has rank $r=7$, which leads us to $7$ multiplications and to the Strassen algorithm!"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Summary of MM part\n",
"- MM is the core of NLA. You have to think in block terms, if you want high efficiency\n",
"- This is all about computer memory hierarchy\n",
"- Concept of block algorithms\n",
"- (Advanced topic) Strassen and trilinear\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Next lecture: \n",
"- Scalar product, matrix norms, unitary matrices"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": false,
"slideshow": {
"slide_type": "skip"
}
},
"outputs": [
{
"data": {
"text/html": [
"<link href='http://fonts.googleapis.com/css?family=Fenix' rel='stylesheet' type='text/css'>\n",
"<link href='http://fonts.googleapis.com/css?family=Alegreya+Sans:100,300,400,500,700,800,900,100italic,300italic,400italic,500italic,700italic,800italic,900italic' rel='stylesheet' type='text/css'>\n",
"<link href='http://fonts.googleapis.com/css?family=Source+Code+Pro:300,400' rel='stylesheet' type='text/css'>\n",
"<style>\n",
" @font-face {\n",
" font-family: \"Computer Modern\";\n",
" src: url('http://mirrors.ctan.org/fonts/cm-unicode/fonts/otf/cmunss.otf');\n",
" }\n",
" div.cell{\n",
" /*width:80%;*/\n",
" /*margin-left:auto !important;\n",
" margin-right:auto;*/\n",
" }\n",
" h1 {\n",
" font-family: 'Alegreya Sans', sans-serif;\n",
" }\n",
" h2 {\n",
" font-family: 'Fenix', serif;\n",
" }\n",
" h3{\n",
"\t\tfont-family: 'Fenix', serif;\n",
" margin-top:12px;\n",
" margin-bottom: 3px;\n",
" }\n",
"\th4{\n",
"\t\tfont-family: 'Fenix', serif;\n",
" }\n",
" h5 {\n",
" font-family: 'Alegreya Sans', sans-serif;\n",
" }\t \n",
" div.text_cell_render{\n",
" font-family: 'Alegreya Sans',Computer Modern, \"Helvetica Neue\", Arial, Helvetica, Geneva, sans-serif;\n",
" line-height: 1.2;\n",
" font-size: 120%;\n",
" /*width:70%;*/\n",
" /*margin-left:auto;*/\n",
" margin-right:auto;\n",
" }\n",
" .CodeMirror{\n",
" font-family: \"Source Code Pro\";\n",
"\t\t\tfont-size: 90%;\n",
" }\n",
"/* .prompt{\n",
" display: None;\n",
" }*/\n",
" .text_cell_render h1 {\n",
" font-weight: 200;\n",
" font-size: 50pt;\n",
"\t\tline-height: 110%;\n",
" color:#CD2305;\n",
" margin-bottom: 0.5em;\n",
" margin-top: 0.5em;\n",
" display: block;\n",
" }\t\n",
" .text_cell_render h5 {\n",
" font-weight: 300;\n",
" font-size: 16pt;\n",
" color: #CD2305;\n",
" font-style: italic;\n",
" margin-bottom: .5em;\n",
" margin-top: 0.5em;\n",
" display: block;\n",
" }\n",
" \n",
" li {\n",
" line-height: 110%;\n",
" }\n",
" .warning{\n",
" color: rgb( 240, 20, 20 )\n",
" } \n",
"\n",
"</style>\n",
"\n",
"<script>\n",
" MathJax.Hub.Config({\n",
" TeX: {\n",
" extensions: [\"AMSmath.js\"]\n",
" },\n",
" tex2jax: {\n",
" inlineMath: [ ['$','$'], [\"\\\\(\",\"\\\\)\"] ],\n",
" displayMath: [ ['$$','$$'], [\"\\\\[\",\"\\\\]\"] ]\n",
" },\n",
" displayAlign: 'center', // Change this to 'center' to center equations.\n",
" \"HTML-CSS\": {\n",
" styles: {'.MathJax_Display': {\"margin\": 4}}\n",
" }\n",
" });\n",
"</script>\n"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from IPython.core.display import HTML\n",
"def css_styling():\n",
" styles = open(\"./styles/custom.css\", \"r\").read()\n",
" return HTML(styles)\n",
"css_styling()"
]
},
{
"cell_type": "markdown",
"metadata": {
"code_folding": [
1
],
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"# Lecture 3: Matrix norms, scalar products, unitary matrices"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Recap of the previous lecture\n",
"\n",
"- Matrix multiplication is the core of NLA\n",
"- This is all about computer memory hierarchy\n",
"- Concept of block algorithms\n",
"- (Advanced topic) Strassen and trilinear\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Matrices and norms\n",
"\n",
"Recall vector norms that allow to evaluate distance between two vectors or how large are elements of a vector.\n",
"\n",
"How to generalize this concept to matrices?\n",
"\n",
"A trivial answer is that there is no big difference between matrices and vectors, and here comes the simplest matrix norm - **Frobenius** norm:\n",
"$$\n",
" \\Vert A \\Vert_F = \\Big(\\sum_{i=1}^n \\sum_{j=1}^m |a_{ij}|^2\\Big)^{1/2}\n",
"$$"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Matrix norms\n",
"$\\Vert \\cdot \\Vert$ is called a **matrix norm** if it is a vector norm on the linear space of $n \\times m$ matrices:\n",
"1. $\\|A\\| \\geq 0$\n",
"2. $\\|A\\| = 0$ iff $A = O$\n",
"3. $\\|\\alpha A\\| = |\\alpha| \\|A\\|$\n",
"4. $\\|A+B\\| \\leq \\|A\\| + \\|B\\|$\n",
"\n",
"Additionally some matrix norms can satisfy the *submultiplicative property*\n",
"\n",
"* $\\Vert A B \\Vert \\leq \\Vert A \\Vert \\Vert B \\Vert$\n",
"\n",
"The submultiplicative property is needed in many places, for example in the estimates for the error of solution of linear systems (we will cover this subject later). \n",
"\n",
"Example of a non-submultiplicative norm: Chebyshev norm $\\|A\\|_C = \\displaystyle{\\max_{i,j}}\\, |a_{ij}|$"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Operator norms\n",
"The most important class of the norms is the class of **operator norms**. Mathematically, they are defined as\n",
"\n",
"$$\n",
" \\Vert A \\Vert_{*,**} = \\sup_{x \\ne 0} \\frac{\\Vert A x \\Vert_*}{\\Vert x \\Vert_{**}},\n",
"$$\n",
"\n",
"where $\\Vert \\cdot \\Vert_*$ and $\\| \\cdot \\|_{**}$ are **vector norms**.\n",
"\n",
"It is easy to check that operator norms are submultiplicative.\n",
"\n",
"Frobenius norm is not an operator norm, i.e. you can not find $\\Vert \\cdot \\Vert_*$ and $\\| \\cdot \\|_{**}$ that induce it. A nontrivial fact."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Matrix $p$-norms\n",
"\n",
"Important case of operator norms are matrix $p$-norms, which are defined for $\\|\\cdot\\|_* = \\|\\cdot\\|_{**} = \\|\\cdot\\|_p$. <br>\n",
" Among all $p$-norms three norms are the most common ones: \n",
"\n",
"- $p = 2, \\quad$ spectral norm, denoted by $\\Vert A \\Vert_2$.\n",
"- $p = \\infty, \\quad \\Vert A \\Vert_{\\infty} = \\max_i \\sum_j |a_{ij}|$.\n",
"- $p = 1, \\quad \\Vert A \\Vert_{1} = \\max_j \\sum_i |a_{ij}|$.\n",
"\n",
"Let us check it for $p=\\infty$ on a blackboard."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Spectral norm\n",
"Spectral norm, $\\Vert A \\Vert_2$ is one of the most used matrix norms (along with the Frobenius norm). It can not be computed directly from the entries using a simple formula, like the Euclidean norm, however, there are efficient algorithms to compute it. It is directly related to the **singular value decomposition** (SVD) of the matrix. It holds\n",
"\n",
"$$\n",
" \\Vert A \\Vert_2 = \\sigma_1(A) = \\sqrt{\\lambda_\\max(A^*A)}\n",
"$$\n",
"\n",
"where $\\sigma_1(A)$ is the largest singular value of the matrix $A$ and $^*$ is a *conjugate transpose* of the matrix. We will soon learn all about the SVD. Meanwhile, we can already compute the norm in Python."
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": false,
"slideshow": {
"slide_type": "slide"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Spectral: 19.4348433329 \n",
"Frobenius: 99.4981700135 \n",
"1-norm 94.6994776999 \n",
"infinity 92.6149263332\n"
]
}
],
"source": [
"import numpy as np\n",
"n = 100\n",
"a = np.random.randn(n, n) #Random n x n matrix\n",
"s1 = np.linalg.norm(a, 2) #Spectral\n",
"s2 = np.linalg.norm(a, 'fro') #Frobenius\n",
"s3 = np.linalg.norm(a, 1) #1-norm\n",
"s4 = np.linalg.norm(a, np.inf) #It was trick to find the infinity\n",
"print 'Spectral:', s1, '\\nFrobenius:', s2, '\\n1-norm', s3, '\\ninfinity', s4"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Examples\n",
"\n",
"Several examples where matrix norms arise:\n",
"* $\\displaystyle{\\min_{\\mathrm{rank}(A_r)=r}}\\| A - A_r\\|$ - finding best rank-r approximation. SVD helps to solve this problem for $\\|\\cdot\\|_2$ and $\\|\\cdot\\|_F$.\n",
"\n",
"\n",
"* $\\displaystyle{\\min_B}\\| P_\\Omega \\odot(A - B)\\| + \\mathrm{rank}(B)$ - matrix completion. $(P_\\Omega)_{ij} = 1$ if $i,j\\in\\Omega$ and $0$ otherwise. $\\odot$ denotes Hadamard product (elementwise)\n",
"\n",
"\n",
"* $\\displaystyle{\\min_{B,C\\geq 0}} \\|A - BC\\|$, nonnegative matrix factorization. Symbol $B\\geq0$ here means that all elements of $B$ are nonnegative."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Scalar product\n",
"While norm is a measure of distance, the scalar product takes angle into account. \n",
"\n",
"The scalar product is defined as\n",
"$$\n",
" (x, y) = x^* y = \\sum_{i=1}^n \\overline{x}_i y_i ,\n",
"$$\n",
"where $\\overline{x}$ denotes the *complex conjugate* of $x$. The Euclidean norm is then\n",
"\n",
"$$\n",
" \\Vert x \\Vert_2 = (x, x)^{1/2},\n",
"$$\n",
"\n",
"or it is said the the norm is **induced** by scalar product. \n",
"\n",
"**Remark**. The angle between two vectors is defined as\n",
"$$\n",
" \\cos \\phi = \\frac{(x, y)}{\\Vert x \\Vert_2 \\Vert y \\Vert_2} \n",
"$$"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"An important property of the scalar product is the **Cauchy-Schwarz-Bunyakovski inequality**:\n",
"$$\n",
" |(x, y)| \\leq \\Vert x \\Vert_2 \\Vert y \\Vert_2,\n",
"$$\n",
"and thus the angle between two vectors is defined properly."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Matrices preserving the norm\n",
"\n",
"For stability it is really important that the error does not grow after we apply some transformations. Suppose that you approximately get a vector, \n",
"\n",
"$$\n",
" \\Vert x - \\widehat{x} \\Vert \\leq \\varepsilon.\n",
"$$\n",
"Let final result be (some) linear transformation of $x$: \n",
"$$\n",
" y = U x, \\quad \\widehat{y} = U \\widehat{x}.\n",
"$$\n",
"If we want to estimate a difference between $\\widehat{y}$ and $y$: \n",
"\n",
"$$\n",
" \\Vert y - \\widehat{y} \\Vert = \\Vert U ( x - \\widehat{x}) \\Vert \\stackrel{\\text{?}}{\\leq} \\varepsilon\n",
"$$"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"The question is for which kind of matrices the norm of the vector **will not change**. \n",
"\n",
"For the euclidean norm $\\|\\cdot\\|_2$ the answer is **unitary** (or orthogonal in the real case) matrices."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Unitary (orthogonal) matrices\n",
"Let $U$ be complex $n \\times r$ matrix, and $\\Vert U z \\Vert_2 = \\Vert z \\Vert_2$ for all $z$. This can happen if and only if \n",
"\n",
"$$\n",
" U^* U = I_r,\n",
"$$\n",
"\n",
"where $I_r$ is an **identity matrix** $r\\times r$.\n",
"\n",
"Indeed, $$\\Vert Uz \\Vert_2^2 = (Uz, Uz) = (Uz)^* Uz = z^* (U^* U) z = z^* z = \\|z\\|_2^2,$$ \n",
"\n",
"which can only hold if $U^* U = I_r$."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"Complex $n\\times n$ square matrix is called **unitary** if\n",
"$$\n",
" U^*U = UU^* = I_n,\n",
"$$\n",
"which means that columns and rows of unitary matrices both form orthonormal basis in $\\mathbb{C}^{n}$.\n",
"\n",
"For rectangular matrices of size $m\\times n$ ($n\\not= m$) only one of the equalities can hold\n",
"\n",
"$$\n",
" U^*U = I_n \\text{ - left unitary for $m>n$} \\quad \\text{or} \\quad UU^* = I_m \\text{ - right unitary for $m<n$}.\n",
"$$\n",
"\n",
"In case of real matrices $U^* = U^T$ and matrices\n",
"$$\n",
" U^TU = UU^T = I\n",
"$$\n",
"are called **orthogonal**."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Unitary matrices\n",
"\n",
"Important property: **a product of two unitary matrices is a unitary matrix:** \n",
"\n",
"$$(UV)^* UV = V^* (U^* U) V = V^* V = I,$$\n",
"\n",
"Later we will show that there are types of matrices (Householder reflections and Givens rotations) composition of which is able to produce arbitrary unitary matrix. <br>\n",
"This idea is a core of some algorithms (e.g. QR decomposition)."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Examples of unitary matrices\n",
"There are two important classes of unitary matrices, using composition of which we can make any unitary matrix:\n",
"1. Householder matrices\n",
"2. Givens (Jacobi) matrices\n",
"\n",
"Other important examples are\n",
"* Permutation matrix $P$ whose rows (columns) are permutation of rows (columns) of the identity matrix.\n",
"* Fourier matrix $F_n = \\frac{1}{\\sqrt{n}} \\{ e^{-i\\frac{2\\pi kl}{n}}\\}_{k,l=0}^{n-1}$"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Householder matrices\n",
"Householder matrix is the matrix of the form \n",
"\n",
"$$H \\equiv H(v) = I - 2 vv^*,$$\n",
"\n",
"where $v$ is an $n \\times 1$ column and $v^* v = 1$. Can you show that $H$ is unitary and Hermitian ($H^* = H$)? It is also a reflection:\n",
"\n",
"$$ Hx = x - 2(v^* x) v$$\n",
"\n",
"<img src=\"householder.jpeg\"> \n",
"A simple proof: $H^* H = (I - 2 vv^*)(I - 2 v v^*) = I$"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Important property of Householder reflection\n",
"\n",
"A nice property of Housholder transformation is that it can zero all elements of a vector except for the first one:\n",
"$$\n",
" H \\begin{bmatrix} \\times \\\\ \\times \\\\ \\times \\\\ \\times \\end{bmatrix} = \n",
" \\begin{bmatrix} \\times \\\\ 0 \\\\ 0 \\\\ 0 \\end{bmatrix}.\n",
"$$"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"*Proof.* Let $e_1 = (1,0,\\dots, 0)^T$, then we want to find $v$ such that\n",
"\n",
"$$\n",
" H x = x - 2(v^* x) v = \\alpha e_1,\n",
"$$\n",
"\n",
"where $\\alpha$ is unknown constant. \n",
"Multiplying by $x^*$ we get\n",
"\n",
"$$\n",
" x^* x - 2 (v^* x) x^* v = \\alpha x_1;\n",
"$$\n",
"$$\n",
" \\|x\\|_2^2 - 2 (v^* x)^2 = \\alpha x_1\n",
"$$\n",
"$$\n",
" (v^* x)^2 = \\frac{\\|x\\|_2^2 - \\alpha x_1}{2}\n",
"$$\n",
"\n",
"Since $v^*v =1$, $v = \\dfrac{x-\\alpha e_1}{2 v^* x}$ and $(v^* x)^2 = \\dfrac{\\|x\\|_2^2 - \\alpha x_1}{2}$ we obtain\n",
"\n",
"$$\n",
" 1 = v^* v = \\dfrac{x^*x - 2\\alpha x_1 + \\alpha^2}{4 (v^* x)^2} = \\dfrac{\\|x\\|_2^2 - 2\\alpha x_1 + \\alpha^2}{2(\\|x\\|_2^2 - \\alpha x_1)};\n",
"$$\n",
"$$\n",
" \\|x\\|_2^2 - 2\\alpha x_1 + \\alpha^2 = 2\\|x\\|_2^2 - 2\\alpha x_1;\n",
"$$\n",
"$$\n",
" \\alpha^2 = \\|x\\|_2^2;\n",
"$$\n",
"$$\n",
" \\alpha = \\pm \\|x\\|_2.\n",
"$$\n",
"\n",
"So, $v$ exists and equals\n",
"$$\n",
" v = \\dfrac{x \\pm \\|x\\|_2 e_1}{2v^* x} = \\dfrac{x \\pm \\|x\\|_2 e_1}{\\pm\\sqrt{2(\\|x\\|_2^2 \\mp \\|x\\|_2 x_1)}}\n",
"$$"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Housholder algorithm for QR decomposition\n",
"\n",
"Using the obtained property we can make arbitrary matrix $A$ lower triangular:\n",
"$$\n",
" H_2 H_1 A = \n",
" \\begin{bmatrix}\n",
" \\times & \\times & \\times & \\times \\\\ \n",
" 0 & \\times & \\times & \\times \\\\ \n",
" 0 & 0 & \\boldsymbol{\\times} & \\times\\\\ \n",
" 0 &0 & \\boldsymbol{\\times} & \\times \\\\ \n",
" 0 &0 & \\boldsymbol{\\times} & \\times \n",
" \\end{bmatrix}\n",
"$$\n",
"then finding $H_3=\\text{diag}(I_2, \\tilde H_3)$ such that\n",
"$$\n",
" \\tilde H_3 \\begin{bmatrix} \\boldsymbol{\\times}\\\\ \\boldsymbol{\\times} \\\\ \\boldsymbol{\\times} \\end{bmatrix} = \n",
" \\begin{bmatrix} \\times \\\\ 0 \\\\ 0 \\end{bmatrix}.\n",
"$$\n",
"we get\n",
"$$\n",
" H_3 H_2 H_1 A = \n",
" \\begin{bmatrix}\n",
" \\times & \\times & \\times & \\times \\\\ \n",
" 0 & \\times & \\times & \\times \\\\ \n",
" 0 & 0 & {\\times} & \\times\\\\ \n",
" 0 &0 & 0 & \\times \\\\ \n",
" 0 &0 & 0 & \\times \n",
" \\end{bmatrix}\n",
"$$\n",
"Finding $H_4$ by analogy we arrive at upper-triangular matrix."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"** Corollary:** (QR decomposition) Every $A\\in \\mathbb{C}^{n\\times m}$, can be represented as\n",
"$$\n",
" A = QR,\n",
"$$\n",
"where $Q$ is unitary and $R$ is upper triangular."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Givens (Jacobi) matrix\n",
"A Givens matrix is a matrix \n",
"\n",
"$$\n",
" G = \\begin{bmatrix}\n",
" \\cos \\alpha & -\\sin \\alpha \\\\\n",
" \\sin \\alpha & \\cos \\alpha\n",
" \\end{bmatrix},\n",
"$$\n",
"\n",
"which is a rotation. For a general case, we select two $(i, j)$ planes and rotate vector $x$ \n",
"$$\n",
"x' = G x,\n",
"$$\n",
"\n",
"only in $i$-th and $j$-th positions:\n",
"\n",
"$$\n",
" x'_i = x_i\\cos \\alpha - x_j\\sin \\alpha , \\quad x'_j = x_i \\sin \\alpha + x_j\\cos\\alpha,\n",
"$$\n",
"\n",
"with all other $x_i$ remain unchanged.\n",
"Therefore, we can make elements in the $j$-th position zero by choosing $\\alpha$ such that\n",
"$$\n",
" \\cos \\alpha = \\frac{x_i}{\\sqrt{x_i^2 + x_j^2}}, \\quad \\sin \\alpha = -\\frac{x_j}{\\sqrt{x_i^2 + x_j^2}}\n",
"$$"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## QR via Givens rotations\n",
"\n",
"Similarly we can make matrix upper-triagular using Givens rotations:\n",
"\n",
"$$\n",
" \\begin{bmatrix} \n",
" \\times & \\times & \\times \\\\\n",
" \\bf{*} & \\times & \\times \\\\\n",
" \\bf{*} & \\times & \\times \n",
" \\end{bmatrix}\n",
" \\to \n",
" \\begin{bmatrix} \n",
" * & \\times & \\times \\\\\n",
" * & \\times & \\times \\\\\n",
" 0 & \\times & \\times \n",
" \\end{bmatrix}\n",
" \\to\n",
" \\begin{bmatrix} \n",
" \\times & \\times & \\times \\\\\n",
" 0 & * & \\times \\\\\n",
" 0 & * & \\times \n",
" \\end{bmatrix}\n",
" \\to\n",
" \\begin{bmatrix} \n",
" \\times & \\times & \\times \\\\\n",
" 0 & \\times & \\times \\\\\n",
" 0 & 0 & \\times \n",
" \\end{bmatrix}\n",
"$$"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Givens vs. Housholder\n",
"\n",
"- Housholder is useful for dense matrices (complexity is $\\approx$ twice smaller than for Jacobi) and we need to zero large number of elements.\n",
"- Givens rotations are more suitable for sparse matrice or parallel machines as it acts locally on elements."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Summary \n",
"- Unitary matrices preserve the norm\n",
"- There are two \"basic\" classes of unitary matrices, Householder and Givens.\n",
"- Every unitary matrix can be represented as a product of those."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Next week\n",
"- SVD\n",
"- You got PSet 1\n",
"- Think of course projects"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"##### Questions?"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": false,
"slideshow": {
"slide_type": "skip"
}
},
"outputs": [
{
"data": {
"text/html": [
"<link href='http://fonts.googleapis.com/css?family=Fenix' rel='stylesheet' type='text/css'>\n",
"<link href='http://fonts.googleapis.com/css?family=Alegreya+Sans:100,300,400,500,700,800,900,100italic,300italic,400italic,500italic,700italic,800italic,900italic' rel='stylesheet' type='text/css'>\n",
"<link href='http://fonts.googleapis.com/css?family=Source+Code+Pro:300,400' rel='stylesheet' type='text/css'>\n",
"<style>\n",
" @font-face {\n",
" font-family: \"Computer Modern\";\n",
" src: url('http://mirrors.ctan.org/fonts/cm-unicode/fonts/otf/cmunss.otf');\n",
" }\n",
" div.cell{\n",
" /*width:80%;*/\n",
" /*margin-left:auto !important;\n",
" margin-right:auto;*/\n",
" }\n",
" h1 {\n",
" font-family: 'Alegreya Sans', sans-serif;\n",
" }\n",
" h2 {\n",
" font-family: 'Fenix', serif;\n",
" }\n",
" h3{\n",
"\t\tfont-family: 'Fenix', serif;\n",
" margin-top:12px;\n",
" margin-bottom: 3px;\n",
" }\n",
"\th4{\n",
"\t\tfont-family: 'Fenix', serif;\n",
" }\n",
" h5 {\n",
" font-family: 'Alegreya Sans', sans-serif;\n",
" }\t \n",
" div.text_cell_render{\n",
" font-family: 'Alegreya Sans',Computer Modern, \"Helvetica Neue\", Arial, Helvetica, Geneva, sans-serif;\n",
" line-height: 1.2;\n",
" font-size: 120%;\n",
" /*width:70%;*/\n",
" /*margin-left:auto;*/\n",
" margin-right:auto;\n",
" }\n",
" .CodeMirror{\n",
" font-family: \"Source Code Pro\";\n",
"\t\t\tfont-size: 90%;\n",
" }\n",
"/* .prompt{\n",
" display: None;\n",
" }*/\n",
" .text_cell_render h1 {\n",
" font-weight: 200;\n",
" font-size: 50pt;\n",
"\t\tline-height: 110%;\n",
" color:#CD2305;\n",
" margin-bottom: 0.5em;\n",
" margin-top: 0.5em;\n",
" display: block;\n",
" }\t\n",
" .text_cell_render h5 {\n",
" font-weight: 300;\n",
" font-size: 16pt;\n",
" color: #CD2305;\n",
" font-style: italic;\n",
" margin-bottom: .5em;\n",
" margin-top: 0.5em;\n",
" display: block;\n",
" }\n",
" \n",
" li {\n",
" line-height: 110%;\n",
" }\n",
" .warning{\n",
" color: rgb( 240, 20, 20 )\n",
" } \n",
"\n",
"</style>\n",
"\n",
"<script>\n",
" MathJax.Hub.Config({\n",
" TeX: {\n",
" extensions: [\"AMSmath.js\"]\n",
" },\n",
" tex2jax: {\n",
" inlineMath: [ ['$','$'], [\"\\\\(\",\"\\\\)\"] ],\n",
" displayMath: [ ['$$','$$'], [\"\\\\[\",\"\\\\]\"] ]\n",
" },\n",
" displayAlign: 'center', // Change this to 'center' to center equations.\n",
" \"HTML-CSS\": {\n",
" styles: {'.MathJax_Display': {\"margin\": 4}}\n",
" }\n",
" });\n",
"</script>\n"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from IPython.core.display import HTML\n",
"def css_styling():\n",
" styles = open(\"./styles/custom.css\", \"r\").read()\n",
" return HTML(styles)\n",
"css_styling()"
]
},
{
"cell_type": "markdown",
"metadata": {
"code_folding": [
1
],
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"# Lecture 4: Matrix rank, low-rank approximation, SVD"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Recap of the previous lecture\n",
"\n",
"- Unitary matrices preserve the norm.\n",
"- There are two \"basic\" classes of unitary matrices, Householder and Givens.\n",
"- Every unitary matrix can be represented as a product of Householder and Givens matrices."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Todays lecture\n",
"- Matrix rank\n",
"- Skeleton decomposition\n",
"- Low-rank approximation\n",
"- Singular Value Decomposition (SVD)"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Matrix and linear spaces\n",
"A matrix can be considered as a sequence of vectors, its columns:\n",
"$$\n",
" A = [a_1, \\ldots, a_m], \n",
"$$\n",
"where $a_m \\in \\mathbb{C}^{n\\times 1}$. \n",
"A matrix-by-vector product is equivalent to taking a linear combination of those columns \n",
"$$\n",
" y = Ax, \\quad \\Longleftrightarrow y = a_1 x_1 + a_2 x_2 + \\ldots +a_m x_m.\n",
"$$\n",
"\n",
"This is a special case of **block matrix notation** (columns are also blocks) that we have already seen."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Linear dependence\n",
"\n",
"The key point is the concept of linear dependence between vectors.\n",
"\n",
"The vectors $a_i$ are called **linearly dependent**, if there exist non-zero (simultaneously) coefficients $x_i$ such that \n",
"$$\\sum_i a_i x_i = 0,$$\n",
"or in the matrix form,\n",
"$$\n",
" Ax = 0, \\quad \\Vert x \\Vert \\ne 0.\n",
"$$\n",
"In this case, we say that the matrix $A$ has a non-trivial **nullspace** or **kernel** denoted by $N(A)$ or $\\text{ker}(A)$ respectively.\n",
"\n",
"Vectors that are not linearly dependent are called **linearly independent**."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Linear space\n",
"A **linear space** spanned by vectors $\\{a_1, \\ldots, a_m\\}$ is defined as all possible vectors of the form \n",
"$$\n",
" \\mathcal{L}(a_1, \\ldots, a_m) = \\left\\{y: y = \\sum_{i=1}^m a_i x_i, \\, \\forall x_i, \\, i=1,\\dots, n \\right\\}, \n",
"$$\n",
"\n",
"In the matrix form, the linear space is a set of all $y$ such that \n",
"$$y = A x.$$\n",
"This set is also called the **range** or **image** of the matrix, denoted by $\\text{range}(A)$ or $\\text{im}(A)$ respectively.\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Dimension of a linear space\n",
"\n",
"The dimension of a linear space $\\text{im}(A)$ denoted by $\\text{dim}\\, \\text{im} (A)$ is minimal number of vectors required to represent each vector from $\\text{im} (A)$.\n",
"\n",
"The dimension of a linear space has a direct connection to the matrix rank.\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Matrix rank\n",
"\n",
"Rank of a matrix $A$ is a maximal number of linearly independent *columns* in a matrix $A$, \n",
"or the **dimension of its column space** $= \\text{dim} \\, \\text{im}(A)$. \n",
"\n",
"You can also use linear combination of *rows* to define the rank, <br> i.e. formally there are two ranks: column rank and row rank of a matrix."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"** Theorem** \n",
"The dimension of the column space of the matrix is equal to the dimension of the row space of the matrix.\n",
"\n",
"[Proof](https://ocw.mit.edu/courses/mathematics/18-701-algebra-i-fall-2010/study-materials/MIT18_701F10_rrk_crk.pdf)"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Full-rank matrix\n",
"\n",
"A matrix $A \\in \\mathbb{R}^{m \\times n}$ is called of **full-rank**, if $\\mathrm{rank}(A) = \\min(m, n)$."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"Suppose, we have a linear space, spanned by $n$ vectors. \n",
"Let these vector be random with elements from standard normal distribution $N(0, 1)$.\n",
"\n",
"**Q**: What is the probability of the fact that this subspace has dimension $m < n$?\n",
"\n",
"**A**: Random matrix has full rank with probability 1."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Dimensionality reduction\n",
"\n",
"A lot of data from real-world applications are high dimensional, for instance images (e.g. $512\\times 512$ pixels), texts, graphs. <br>\n",
"However, working with high-dimensional data is not an easy task. <br>\n",
"Is it possible to reduce the dimensionality, preserving important relations between objects such as distance?\n",
"\n",
"**Johnson–Lindenstrauss lemma** \n",
"\n",
"Let $N\\gg 1$. Given $0 < \\epsilon < 1$, a set of $m$ points in $\\mathbb{R}^N$ and $n > \\frac{8 \\log m}{\\epsilon^2}$ (we want $n\\ll N$)\n",
"\n",
"and linear map $f$ from $\\mathbb{R}^N \\rightarrow \\mathbb{R}^n$\n",
"\n",
"$$(1 - \\epsilon) \\Vert u - v \\Vert^2 \\leq \\Vert f(u) - f(v) \\Vert^2 \\leq (1 + \\epsilon) \\Vert u - v \\Vert^2.$$\n",
"\n",
"It is not very practical due to the dependence on $\\epsilon$.\n",
"\n",
"\n",
"This lemma does not give a recipe how to construct $f$, but guarantees that $f$ exists."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Skeleton decomposition\n",
"A very useful representation for computation of the matrix rank is the **skeleton decomposition** and is closely related to the rank. It can be graphically represented as follows: \n",
"<img src=\"https://raw.githubusercontent.com/oseledets/nla2016/master/lectures/skeleton.png\" width='50%' />\n",
"or in the matrix form\n",
"$$\n",
" A = C \\hat{A}^{-1} R,\n",
"$$\n",
"where $C$ are some $r$ columns of $A$, $R$ are some $r$ rows of $A$ and $\\hat{A}$ is the **nonsingular** submatrix on the intersection."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"### Remark\n",
"\n",
"We have not yet formally defined the inverse, so just a reminder:\n",
"\n",
"An inverse of the matrix $P$ is the matrix $Q = P^{-1}$ such that \n",
"$ P Q = QP = I$. \n",
"If the matrix is square and has full rank (i.e. equal to $n$) then the inverse exists."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"### Proof for the skeleton decomposition\n",
"* Let $C\\in \\mathbb{C}^{n\\times r}$ be the $r$ columns based on the nonsingular submatrix $\\hat{A}$. Therefore they are linearly independent. \n",
"* Take any other column $a_i$ of $A$. Then $a_i$ can be represented as a linear combination of the columns of $U$, i.e. $a_i = C x$. \n",
"\n",
"* $a_i = C x$ are $n$ equations. We take $r$ of those corresponding to the rows that contain $\\hat{A}$ and get the equation \n",
"$$\\hat{r} = \\hat{A} x \\quad \\Longrightarrow \\quad x = \\hat{A}^{-1} \\hat r$$ \n",
"Thus, $a_i = C\\hat{A}^{-1} \\hat r$ for every $i$ and $$A = [a_1,\\dots, a_m] = C\\hat{A}^{-1} R.$$"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"### A closer look\n",
"Any rank-$r$ matrix can be written in the form\n",
"$$A = C \\hat{A}^{-1} R,$$\n",
"where $C$ is $n \\times r$, $R$ is $r \\times m$ and $\\hat{A}$ is $r \\times r$, or \n",
"$$\n",
" A = U' V',\n",
"$$\n",
"which is a stanrdard for skeleton decomposition.\n",
"So, every rank-$r$ matrix can be written as a product of a \"tall\" matrix $U'$ by a \"long\" matrix $V'$."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
"In the index form, it is \n",
"$$\n",
" a_{ij} = \\sum_{\\alpha=1}^r u_{i \\alpha} v_{\\alpha j}.\n",
"$$\n",
"For rank 1 we have\n",
"$$\n",
" a_{ij} = u_i v_j,\n",
"$$\n",
"i.e. it is a separation of indices and rank-$r$ is a sum of rank-$1$ matrices!"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"### Storage\n",
"It is interesting to note, that for the rank-$r$ matrix \n",
"$$A = U V$$\n",
"only $U$ and $V$ can be stored, which gives us $(n+m) r$ parameters, so it can be used for compression. We can also compute matrix-by-vector $Ax$ product much faster:\n",
"\n",
"* Multiplication $y = Vx$ costs $\\mathcal{O}(mr)$ flops.\n",
"* Multiplication $z = Uy$ costs $\\mathcal{O}(nr)$ flops."
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": false,
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The slowest run took 6.81 times longer than the fastest. This could mean that an intermediate result is being cached \n",
"1000 loops, best of 3: 396 µs per loop\n",
"The slowest run took 12.97 times longer than the fastest. This could mean that an intermediate result is being cached \n",
"100000 loops, best of 3: 8.71 µs per loop\n"
]
}
],
"source": [
"#A fast matrix-by-vector product demo\n",
"import numpy as np\n",
"n = 1000\n",
"r = 10\n",
"u = np.random.randn(n, r)\n",
"v = np.random.randn(n, r)\n",
"a = u.dot(v.T)\n",
"x = np.random.randn(n)\n",
"%timeit a.dot(x)\n",
"%timeit u.dot(v.T.dot(x))"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Computing matrix rank\n",
"We can also try to compute the matrix rank using the built-in ```np.linalg.matrix_rank``` function"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"collapsed": false,
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Rank of the matrix: 1\n",
"Rank of the matrix: 50\n"
]
}
],
"source": [
"#Computing matrix rank\n",
"import numpy as np\n",
"n = 50 \n",
"a = np.ones((n, n))\n",
"print 'Rank of the matrix:', np.linalg.matrix_rank(a)\n",
"b = a + 1e-5 * np.random.randn(n, n)\n",
"print 'Rank of the matrix:', np.linalg.matrix_rank(b, tol=1e-8)"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"So, small perturbations might crucially affect the rank."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"### Instability of the matrix rank\n",
"For any rank-$r$ matrix $A$ with $r < \\min(m, n)$ there is a matrix $B$ such that its rank rank is equal to $\\min(m, n)$ and\n",
"$$\n",
" \\Vert A - B \\Vert = \\epsilon.\n",
"$$\n",
"**Q**: So, does this mean that numerically matrix rank has no meaning? (I.e., small perturbations lead to full rank!) <br>\n",
"**A**: No. We should find a matrix $B$ such that $\\|A-B\\| = \\epsilon$ and $B$ has minimal rank. So we can only compute rank with given accuracy $\\epsilon$.\n",
"One of the approaches to compute matrix rank $r$ is SVD."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Low rank approximation\n",
"\n",
"The important problem in many applications is to find low-rank approximation of the given matrix with given accurcacy $\\epsilon$ or rank $r$. <br>\n",
"Examples:\n",
"* principal component analysis\n",
"* factor analysis\n",
"* least squares\n",
"* latent semantic analysis\n",
"\n",
"This problem can also be solved by using SVD."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Singular value decomposition\n",
"To compute low-rank approximation, we need to compute **singular value decomposition** (SVD).\n",
"\n",
"**Theorem** Any matrix $A\\in \\mathbb{C}^{n\\times m}$ can be written as a product of three matrices: \n",
"$$\n",
" A = U \\Sigma V^*,\n",
"$$\n",
"where $U$ is an $n \\times K$ unitary matrix, $V$ is an $m \\times K$ unitary matrix, $K = \\min(m, n)$, <br> $\\Sigma$ is a diagonal matrix with non-negative elements $\\sigma_1 \\geq \\ldots, \\geq \\sigma_K$ on the diagonal. <br>\n",
"Moreover, if $\\text{rank}(A) = r$, then $\\sigma_{r+1} = \\dots = \\sigma_K = 0$."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"### Proof\n",
"* Matrix $A^*A$ is Hermitian, hence diagonalizable in unitary basis (will be discussed further in the course).\n",
"* $A^*A\\geq0$ (non-negative definite), so eigenvalues are non-negative.\n",
"Therefore, there exists unitary matrix $V = [v_1, \\dots, v_n]$ such that\n",
"\n",
"$$\n",
" V^* A^* A V = \\text{diag}(\\sigma_1^2,\\dots, \\sigma_n^2), \\quad \\sigma_1\\geq \\sigma_2\\geq \\dots \\geq \\sigma_n.\n",
"$$\n",
"\n",
"Let $\\sigma_i = 0$ for $i>r$, where $r$ is some integer. <br>\n",
"Let $V_r= [v_1, \\dots, v_r]$, $\\Sigma_r = \\text{diag}(\\sigma_1, \\dots,\\sigma_r)$. Hence\n",
"\n",
"$$\n",
" V^*_r A^* A V_r = \\Sigma_r^2 \\quad \\Longrightarrow \\quad (\\Sigma_r^{-1} V_r^* A^*) (A V_r\\Sigma_r^{-1} ) = I.\n",
"$$\n",
"\n",
"As a result, matrix $U_r = A V_r\\Sigma_r^{-1}$ satisfies $U_r^* U_r = I$ and hence has orthogonal columns. <br>\n",
"Let us add to $U_r$ any orthogonal columns that are orthogonal to columns in $U_r$ and denote this matrix as $U$.\n",
"Then\n",
"\n",
"$$\n",
" AV = U \\begin{bmatrix} \\Sigma_r & 0 \\\\ 0 & 0 \\end{bmatrix}\\quad \\Longrightarrow \\quad U^* A V = \\begin{bmatrix}\\Sigma_r & 0 \\\\ 0 & 0 \\end{bmatrix}.\n",
"$$\n",
"\n",
"Since multiplication by non-singular matrices does not change rank of $A$, we have $r = \\text{rank}(A)$."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"**Corollary 1**: $A = \\displaystyle{\\sum_{\\alpha=1}^r} \\sigma_\\alpha u_\\alpha v_\\alpha^*$ or elementwise $a_{ij} = \\displaystyle{\\sum_{\\alpha=1}^r} \\sigma_\\alpha u_{i\\alpha} \\overline{v}_{j\\alpha}$\n",
"\n",
"**Corollary 2**: $$\\text{ker}(A) = \\mathcal{L}\\{v_{r+1},\\dots,v_n\\}$$\n",
"$$\\text{im}(A) = \\mathcal{L}\\{u_{1},\\dots,u_r\\}$$\n",
"$$\\text{ker}(A^*) = \\mathcal{L}\\{u_{r+1},\\dots,u_n\\}$$\n",
"$$\\text{im}(A^*) = \\mathcal{L}\\{v_{1},\\dots,v_r\\}$$"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"# Eckart-Young theorem\n",
"\n",
"The best low-rank approximation can be computed by SVD.\n",
"\n",
"**Theorem:** Let $r < \\text{rank}(A)$, $A_r = U_r \\Sigma_r V_r^*$. Then\n",
"\n",
"$$\n",
" \\min_{\\text{rank}(B)=r} \\|A - B\\|_2 = \\|A - A_r\\|_2 = \\sigma_{r+1}.\n",
"$$\n",
"\n",
"The same holds for $\\|\\cdot\\|_F$ and $\\|A - A_r\\|_F = \\sqrt{\\sigma_{r+1}^2 + \\dots + \\sigma_{\\min (n,m)}^2}$."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Proof \n",
"Since $\\text{rank} (B) = r$, it holds $\\text{dim}~\\text{ker}~B = n-r$. \n",
"\n",
"\n",
"Hence there exists $z\\not=0$ such that $z\\in \\text{ker}(B) \\cap \\mathcal{L}(v_1,\\dots,v_{r+1})$ (as $\\text{dim}\\{v_1,\\dots,v_{r+1}\\} = r+1$).\n",
"\n",
"Fix $\\|z\\| = 1$. Therefore,\n",
"$$\n",
" \\|A-B\\|_2^2 \\geq \\|(A-B)z\\|_2^2 = \\|Az\\|_2^2 = \\| U\\Sigma V^* z\\|_2= \\|\\Sigma V^* z\\|_2 = \\sum_{i=1}^{n} \\sigma_i^2 (v_i^*z)^2 =\\sum_{i=1}^{r+1} \\sigma_i^2 (v_i^*z)^2 \\geq \\sigma_{r+1}^2\\sum_{i=1}^{r+1} (v_i^*z)^2 = \\sigma_{r+1}^2\n",
"$$\n",
"as $\\sigma_1\\geq \\dots \\geq \\sigma_{r+1}$ and $$\\sum_{i=1}^{r+1} (v_i^*z)^2 = \\|Vz\\|_2^2 = \\|z\\|_2^2 = 1.$$"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Main result on low-rank approximation\n",
"\n",
"**Corollary:** computation of the best rank-$r$ approximation is equivalent to setting $\\sigma_{r+1}= 0, \\ldots, \\sigma_K = 0$. The error \n",
"\n",
"$$\n",
" \\min_{A_r} \\Vert A - A_r \\Vert_2 = \\sigma_{r+1}, \\quad \\min_{A_r} \\Vert A - A_r \\Vert_F = \\sqrt{\\sigma_{r+1}^2 + \\dots + \\sigma_{K}^2}\n",
"$$\n",
"\n",
"that is why it is important to look at the decay of the singular values."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Computing SVD\n",
"\n",
"Algorithms for the computation of the SVD are tricky and will be discussed later.\n",
"\n",
"But for numerics, we can use numpy already!\n",
"\n",
"Let us go back to the previous example"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"collapsed": false,
"slideshow": {
"slide_type": "slide"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Rank of the matrix: 1\n",
"Rank of the matrix: 50\n"
]
}
],
"source": [
"#Computing matrix rank\n",
"import numpy as np\n",
"n = 50 \n",
"a = np.ones((n, n))\n",
"print 'Rank of the matrix:', np.linalg.matrix_rank(a)\n",
"b = a + 1e-5 * np.random.randn(n, n)\n",
"print 'Rank of the matrix:', np.linalg.matrix_rank(b)"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"collapsed": false,
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"2.75106266671e-06\n",
"2.75106266671e-06\n"
]
}
],
"source": [
"u, s, v = np.linalg.svd(b)\n",
"print s[1]/s[0]\n",
"r = 1\n",
"u1 = u[:, :r]\n",
"s1 = s[:r]\n",
"v1 = v[:r, :]\n",
"a1 = u1.dot(np.diag(s1).dot(v1))\n",
"print np.linalg.norm(b - a1, 2)/s[0]"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Separation of variables for 2D functions\n",
"\n",
"We can use SVD to compute approximations of **function-related** matrices, i.e. the matrices of the form \n",
"\n",
"$$a_{ij} = f(x_i, y_j),$$\n",
"\n",
"where $f$ is a certain function, and $x_i, \\quad i = 1, \\ldots, n$ and $y_j, \\quad j = 1, \\ldots, m$ are some **one-dimensional grids**."
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"collapsed": false,
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"data": {
"text/plain": [
"[<matplotlib.lines.Line2D at 0x11ee63ed0>]"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\nFAghhBAB/ReNQ53G30tuhQAAAABJRU5ErkJggg==\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x106201710>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"%matplotlib inline\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"import seaborn as sns\n",
"plt.xkcd()\n",
"n = 1000\n",
"a = [[1.0/(i+j+1) for i in xrange(n)] for j in xrange(n)] #Hilbert matrix \n",
"a = np.array(a)\n",
"u, s, v = np.linalg.svd(a)\n",
"fig, ax = plt.subplots(1, 1)\n",
"ax.semilogy(s[:30]/s[0])\n",
"#We have very good low-rank approximation of it!"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"Now we can do something more interesting, like function approximation"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"collapsed": false,
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"3.61306036078e-10\n"
]
},
{
"data": {
"text/plain": [
"[<matplotlib.lines.Line2D at 0x1204a4310>]"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\ndK6se/INHpgAAAAASUVORK5CYII=\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x106226550>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"import numpy as np\n",
"plt.xkcd()\n",
"n = 128\n",
"t = np.linspace(0, 5, n)\n",
"x, y = np.meshgrid(t, t)\n",
"f = 1.0 / (x + y + 0.5) # test your own function. Check 1.0 / (x - y + 0.5)\n",
"u, s, v = np.linalg.svd(f, full_matrices=False)\n",
"r = 10\n",
"u = u[:, :r]\n",
"s = s[:r]\n",
"v = v[:r, :] # Mind the transpose here!\n",
"fappr = u.dot(np.diag(s).dot(v))\n",
"er = np.linalg.norm(fappr - f, 'fro') / np.linalg.norm(f, 'fro')\n",
"print er\n",
"plt.semilogy(s/s[0])"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
"And do some 3D plotting"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {
"collapsed": false,
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/Applications/anaconda/lib/python2.7/site-packages/matplotlib/collections.py:590: FutureWarning: elementwise comparison failed; returning scalar instead, but in the future will perform elementwise comparison\n",
" if self._edgecolors == str('face'):\n"
]
},
{
"data": {
"image/png": "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\nyxZ88MEH6NOnD/x+P2bMmMHkpaZpmDdvHubOnQtBENCtWzcAwE033YSMjAwsWrQIEydORNu2bXH8\n8cezOFfqfbIsC++++y6mTp2K7777Dp06dULbtm2xbds2rFy5EoFAAJMnT8bHH3+MUaNG4YsvvkAw\nGMSaNWswefJk7Nq1C6eeeiocx8FXX32FadOmYefOnejbty8kScKKFSuwf/9+bNmyBZMnT8b69evx\nf//3f0zh9HhkfPrpp9i2bRu6d++O9evXY8WKFejVqxf27NmDOXPm4LTTTmPXtV27dhg/fjyWL1+O\nvXv34ttvv8WGDRtw+umnY968eTj11FOxadMmzJ07F6IoomvXLpBlCeGwAVWV4fN5sGHDBmzYsAGH\nDh3C5MmT8dVXX+GMM86AIAhYu3Ytnn/+eXz88cdIS0tD586d8frrr+OTTz5BMBjEPffcg8LCQgwZ\nMgSCIOCll17C5ZdfjtzcXLz//vu46aabcO2112Lx4sVYsWIF1q5di3Xr1sHn8yEnJwfHH388Tjvt\nNDz//PO46qqrkJubi5kzZ6JLly4YO3YsAPIMl5SUYOXKlRg3bhxLWHNDwwZ0Xce8efPwyiuvYNWq\nVejatSuysrKSnuOHH34IQSAW22eeeQZHjhxBnz598N5772HVqlXseNu1a4eMjAx23KZpYv369Zg7\ndy7OPPNM9OjRA7puwrYdZGR4Yds27rzzTjz22GPIzMyE3++HJJFYakWREAgEMGPGDMyaNQvr169H\nQUEBMjLSWE6MJIkQBLIQ6ty5M4YPH46XX34Z559/Po499li89dZbSE9Px+WXX86uQTgcxkcffcRe\nC4eNepM91YV6ShK+V9kXm4qQ5aQWuopeunQp+vXrh9/97newbQeHD5ezhLSMjAwEAiTgf+rUqTjv\nvPOwf/9+AMBHH30EAHj11VexdetWAMBrr72G6667Dqqqol27drjsssuwbds27N27F8899xwAMp72\n7t2LP/zhD/D7/RBFEXPmzAEAPPPMM/jHP/6Bnj17IhgM4sEHHwQA2LYNSZLY96k768iRI5gxYwa2\nbt0KXdcRDodRXl4OAPjss89w9OhRAEB5eTmWLl2KUCiE8vJyfPzxx/j73/+OM888E++//z5+/vln\ntv+PP/4YV199NYLBIL744guccMIJGDlyJNq2bYu8vDyMHTsWnTt3RiAQwPPPP4+SkhIAwAMPPIAp\nU6bA4/HgkUcewYIFCwAAZWVlePrppzFv3jyMGDECEydOhGEYFawTnJZDqsMYmop3TZJEZomdOHEi\nBg8ejBtvvBGiKOLXX38FQBS/Q4cO4ZZbbkF5eTmWLFmC+++/HwBw8OBBTJ06FV9++SVCoRCuuOIK\n/Pbbbzh48CCeeeYZNmEePHgQy5cvR3FxMcaNG4fvv/8epaWluOKKK1g407XXXot7770X27Ztw/z5\n8/Hkk0/irrvuAgAsXrwYy5cvB0Csj0uXLsXjjz+OQCCAK664At999x3Ky8vxyCOPAAAOHTqEiy++\nGGvWrMH//d//4dVXX8Xnn3+OgQMHYujQocjIyEDXrl1xzjnnoH379ti7dy+ef/55AEQe3XjjjZg1\naxYURcEdd9yBFStWAABKSkpw3333Yfny5TjllFPwxBNPAIjGmlKL4JQpUzBnzhwMHToUsizjlltu\nAQCsXbsWDz30EP72t7/h+OOPx9KlS7Fz5058/vnnuO666zBjxgx069YNM2fOBADMnDkTd955J0RR\nxOuvv44pU6YAAJYvX45bb70VTz/9NHr06IHXXnstIlMFZhVdv349k1mvvPIKO7/PP/8cP/zwAwBg\n0aJF+OabbyBJEs4991z06tULADBq1CgMHTqUXY9p06bhiSeeQHFxMW699VaEw2FWyYG69VetWoV7\n770X999/P3r37o133nkHhw8fxoIFC3DVVVchJycHOTk5uP3222HbNsrLy/Hee+/hgQcewJgxYzB7\n9mzs2LEDALHkSpKEhQsX4oEHHsB9990Hx3GwatUqbNq0CZs3b8amTZtw8OBBNpZLS0sBAG3btgUA\n7N27F126dIlsz2Lv0e8kisumC9r//Oc/WLBgAYYNGwZN05ilO9k5LlmyBH/6058wf/58dOrUCa+/\n/jrC4TDWrFmDzZs3Y/Pmzdi4cSObvwBg9+7dGDJkCC677DL06NEDY8aMAUBCXmiYz9KlS7F3717c\neuutGDVqFAYPHowlS5aw+3LrrbdizZo1GD58OAoLC9n49/s9aNMmDdnZ/pjYW9M0UVZWVuk1ysnJ\nweHDhwGk3qNVe2oZxsB13ZYJXdX/+OOP6NevHwASr+U4UZferl270LVrVwCAZVm45ZZbcOWVV2Lh\nwoVsYJeXlyM9PR3l5eV49tlnMW/ePPTq1QuGYeCpp56C4zgIBoPw+/2RuDuy8vvd736HRx99FLNm\nzcLKlStx4MABzJgxA2+88Qb69++PadOmMfeJaZpQFOLmEQTAskiMU7t27fDmm2/ipptuwtChQ2PC\nGNwPaShE3DR+vx+maaKoqAjTp0/H8OHD8dFHH2Hv3r3Iz8/H3Llz8d5776Fr165shQ+QiXXjxo1o\n37492wdV+tPS0rBr1y4sXLgQixYtQvfu3ZGfn4/FixfjwgsvhGmaCAQCePfdd9GmTRtMnToVRUVF\nOOaYY1jsFKelkeowhpRurtZQRXfFihX45JNPcMEFF+DGG2+EbdtYt24dBg4ciPT0dGZtGzx4MDZu\n3IhLLrkEhmEgMzMTZ555Jp5//nkIgoA9e/bgyy+/xODBg2FZFp566ikMHjwYU6dORffu3fHWW2+h\nQ4cOmDNnDgRBwAUXXIBly5bhwgsvxOmnn44//elPuPrqq6FpGmbMmIGBAwcCIDKJepoyMjKwatUq\nvPnmm/jqq6+gKApmzpyJdevW4YYbbgBAlMROnTrhlVdegSiKmDx5MvLz83H88cfj+OOPx9dff41B\ngwaxZ7+wsJBtf/Xq1fjpp5+wdOlS5ObmQhRFLF68GIMHD4ZpmhBFETNmzEBRURHmzp3LwjhoOcby\n8nK8+eabWLRoEbZs2YI33niDhYVYlgVRFPHWW2+hXbt22LhxI3Jzc2FZFrp164bZs2ejrKwMBw4c\ngK7rmDp1Kh5//HGcffbZ+PTTT/Hwww/jn//8J2zbRvv27fH2229DFEVs2rSJ5UrQcIrjjjsO33zz\nDcLhMJYvXw7LslBeXo7Vq1dj8ODBAIBAIIC0tDR2L7p3747Fixfjz3/+MxsjjuPgwIEDWLhwIXJz\nczFw4EAcOHAAxx13XIzCaFkWVFXF/PnzkZWVhTVr1sDn82HSpEl45JFHMG7cOHz66af4+uuvIYrE\n63bkyBHMnTsXp5xyCubPn499+/ahW7dusCwLM2fOxDvvvIPHH3+c5W1U4rBGcXExBEFAmzZtAAAe\njweaRsIUolV2wvD7/ZHziv2+JJHQlIMHD+LDDz/EkiVLsGbNGqxevRqnnXZa0nPMzMyEaZro378/\nXn75Zfz222/QdR0ZGRmYOHFi0uM99thjMXv2bHz88ceYPn06li1bhhEjRsDjkWMWEP369cN//vMf\n5OTkYP78+bj33nsxYsQIbNy4EYWFhVi8eDE++OADrF+/niV9HzhwAPv370c4HIYkSTjllFMAgBly\ncnJyAACKolS4RqFQCD5f00lOA2oZs8utui0f6sIAaJkwL2RZwpEjR7B8+XL85S9/YZ8988wzAQDj\nxo1jr9HBvnr1auTk5LDV/u7du1kYwZo1a5jQKCsrAwBcf/31ABBJ3rCwevVqdOzYkcXEyrIMj4es\nnDVNg6qqkc+T/ZaUhJCTkx5zHm5UVYVlWWwfAHlYS0tL0atXLwwfPpy9Z9s2Vq1ahb59+zLlPh5V\nVdmDDoBZvH0+HzZv3ozOnTuje/fuAIC+ffvik08+AUAsCOPGjWPuWgAsQYbTMmmpMbuKQup83nzz\nzUhPT8f+/fvRt29fyLKMtWvXAiAxfz6fD+np5Nns2LEjDMNAaWkp/H4/MjIy2PXJz8/HoUOHAJBF\nI1WqbrrpJgDAnDlzMGLECBYD2qdPHxw5coQdT3Z2Ng4fPoyzzz6bKboA2OIaIHLk0ksvRY8ePfDj\njz9CVVWIoojjjjsOR48eRVlZGb777jtceumlLF5RlmUmbwDA6/XGPPuhUIht/9dff8WAAQNYeEW/\nfv3w2WefASDP/pVXXon09HQcPnyYPfeCILCqAdu3b4fX68Wtt96KYDCIG264Aeeffz7b14knnoh2\n7doBACZPnsxeHzlyJBRFQdu2bfHUU0+hsLAQJSUlGDlyJDuOoqIiNnaGDh3KlJIXXngBALEKUmW3\na9eu2Lt3L7755hucdNJJKCsrw9atW7F69Wpcd9117Lq6FZv460K5/vrr0b59ewCAJEnM2xb/XAwa\nNAhZWVkAgJdeegmbNm3CkSNHmNXSfR9KS0tx8sknM0XMtm1YlgXTJAaaL7/8El27dsWPP/6ICy+8\nEAAJqTt48GAkZlpGQUEB2x+9h3RsHXPMMdizZw+AaNzq1q1bccIJJwAgzyCpIUwSDd2xrenp6fjz\nn/8MQRBw++23M2U70TlSfv/730OSJBx77LH497//DYBY8ktKSiCKIhRFwYABA+D1etm169WrF3r1\n6oXDhw/jnXfewYgRI2LihQOBAAYNGsRCe/7617/i2WefxZ49e/DLL7/A5/Nh7NixyM/PxxNPPIEh\nQ4YAIHG+q1atgiRJyM3NxUknnQRRFBEMBgGQBSO9RuvWrUt6jZpKzelaVWNoKkKWk3pM04aqEhfU\no48+ihtuuAEdOnSAqpJV9BNPPIGuXbuyhLXY71rMDU+VZb/fD03TYNtEEHz44YfIzs6Gx+OJUajL\nysqgKAp7QBRFYdbhcDjMLB85OTlMSIZCIab40iFJs41VlVRP0PXYWpft2rVjLk8qZB3HQVlZGfr0\n6cM+5/F4UFZWxgRSMlRVRTgcrSPq3mZWVhZKS0thGAYURcG2bdvQqVMndr50f7JM3E1lZWXIy8uL\nbIM/Yy2NVHvzmoIYpklTP/74I8LhMD777DOWALNo0SJMnjyZPbsej4d5ZXbs2AFFUZCVlQWPx8M8\nO47jYOfOnTF5AvFkZWWxZ9hxHGzdupUpc3PnzsVLL72EKVOmYMKECXjnnXdYZr1b3hw9epTF0Lrd\n0tnZ2VBVFbt370Z6ejrz/gCIkT1A4mefbp8eIz1397NfXl6Ovn37sm3Q1zIyMphlTJIklJSU4P77\n78dZZ50FSSKGBqpoVJfMzEx2vu3bt8fWrVtx7LHHJlx40WoPtAIOAPTo0QPFxcXsOn755ZdYsmQJ\nHMdh50Dvg/u6WJbF5B5ArJkdOnRgn/H7/eweVlWiLT09HbZtQ9d1eDyemPtQVlYWcxyqqqK8vJy9\nP3fuXFiWhYsvvhhDhgzB6NGj8cILL+DIkSORRgwmbrnlFjZ+fD4fNE1j923YsGG4++67mfW6rKwM\nn3zyCQuN8XhkluAYDEYbZoiiiJKSEjz44IMYOXIkBEHAgQMHamzQ0HWdhblQRX7ChAno06cP3nrr\nLQwYMIAZktLS0tjz5SY/P5+FEwEkPMc0TeTm5rJFx9NPP80WDNu3b0dOTg5uuOEG5uUwTYspsnRh\no2kaFEXBsGHDmGeybdu2CIVC+PDDD3HZZZcBqLyxVENSK8sud7G2XGh5nLPPPhvvv/8+zj//fIwb\nNw7t27fHBx98gEOHDmH27NksVhaICrqSkhDatk1jE5thGBgwYAAyMzNx3333ITMzE0uXLmUKpHvy\nowofha6oTzzxRAQCAUyaNAkFBQWYN28etm7dinA4DE3TmLIbqxzS7k12hQHes2dPzJkzBzt37sS2\nbdsAEEEsyzJ7mN37P/vss/Hoo4/ikUcewYABA/Dpp5+ie/fuuOOOO8ieBIFZiuk5ASTEgp77nXfe\niZ49e2LWrFlsFe/eH10579mzBz179mRlyjgti1RadpuKwYFO9HPnzsWYMWOYogsAQ4YMwb333ou1\na9di4MCBEAQBTz31FHr06IHPP/8cV155JXsOvvnmG9x///3Yu3cv9u/fjzFjxqC4uJhtizaNycjw\n4oILLsA111yDjIwM7N69G0VFRRg5ciQ++OADTJkyBa+++ipOPPFEpKWl4Y477kDfvn3Rq1evGKXa\nsix2P3IMWVWAAAAgAElEQVRzc1n4kSAIOOaYY/Dbb79h+PDhmD17NnJzc7Fv3z4UFhZi+fLlMYq4\n+9lXFIVtf/jw4Zg4cSLuu+8+ZGdn46233sL8+fMBgFWBoPsWRRF79uxB79694Tjk3hYUFKCgoABv\nv/02iouLcfToUbzzzjvMuk3vv6aZrLGOG00jiW5t2rTByJEjcfvtt2PEiBF44403mPfMTTCoxzTl\noWXR0tPT0bt3b6xevRrPPPMMioqK8PTTT2PMmDHsHNzX1Y1lWUzZdYeQAMT9vnv37sj1iE0PoudG\nE9fy8vLQo0cPTJgwAaNGjcLixYtRWFiI3bt3J5XbdJGSm5uL9PR03HvvvZgwYQKGDh3KLNjxfP/9\n96wSw80334yHH34YgwYNQs+ePXHppZfirLPOwkcffYTMzExmZQaAlStX4qSTTorUoCWevdNOOw15\neXl4++23cfDgQRw6dAhvv/027rvvvgrnSJO/3K/T5hwejwdvvPFGwuM9cuQI/vrXv+IPf/gDioqK\n8N5777E8l507C/Hddytx+eWX49xzz8W0adMwc+ZMFBQUYOrUqRg7diyysrJw9tlnY8qUKZg/fz62\nbduGwsJCvPvuu5g+fTr69+/PuqFRj8P69esxY8YMAMAdd9yBBx98EAUFBRg+fDguvfRSnHvuufjy\nyy+h6zouvvhiAGgyndQqE79JqzGQOohN4wQ4qYXOoV6vB2PHjkVeXh7Wrl2LzZs3Y/DgwZgyZUrM\nCv2XX37BeeedF4nbMVhQfOfOnXHSSSfB6/Vi7Nix2L9/PzweD84//3z88ssvuPTSS5GVlYUuXbqg\nR48e8Hq9OHToEMu89fl8+OWXX3DxxRdj2LBhWLlyJX7++WdccsklkGUZJ5xwArKystCxY0f07NkT\num6xFSSpTUmSMU455RT06tULum5CkkQMGDCAZWGfcMIJCIfDuPDCCyFJErKyslBQUACAWAz8fj9O\nO+00jBo1CitXrsSKFSvQu3dvXHvttcyNtH//fnTv3p2Vf/H7/TjuuONQUFAAWZYxcuRIrF27Fjt2\n7MDf//53VpswEAigd+/eyMvLAwDs2bMH/fr1Q35+PjTN5MpuC0SWxYSloGoDadXZ+BnOtBYufY6y\nsrJQVhaGJAlIT09DXl4eunfvjqysLEyfPp1VKRk3bhyuv/56CIKA7777DgcPHkTHjh3RpUsXPPzw\nw8z9v2PHDowePRq27aC8PAxVVdCxYz569uyJr776Cunp6XjsscfQtm1beL1EEaYeky5duqBNmzZI\nS0tDx44dccwxx6B///7IysqCoijIyclBt27dEA6H8cYbb+DGG28EQFzQ3bt3x/nnnw9RFPHll19C\nkiRcddVVKCwsZKFOhYWFOPXUU9GxY0cAqCDPTj/9dKxcuRKHDx/GQw89xCyQR48examnnoo2bdpA\nkiRs2bIFw4YNQ3Z2dqS+rwOPR8Y555yDsrIyrF27FrquY/z48Rg9ejQCgQAsy8Jpp50WqcNK8in2\n7duHLl26oGvXrrAsK7KIl1ji0bp163DFFVfgj3/8IwRBwKFDh9CuXTv06tWLKVmCEJ0DJEmM1BlW\n0bdvX5x66qno0qULvv76a/zjH/9gca0dOnRg1xUgSu6BAwdwzjnnsAWFLMsYMWIEs2Truo42bdqg\nR48eMAxSS1ZVZZSWlsLj8WDgwIEwDAuGYcPjIXJ0w4YNWLVqFYYOHYpevXohPT0d+fn5yM3NRc+e\nPQGQmNucnByceOKJsCwLw4YNgyAIKCgoQElJCfr16we/38/audu2w5TtYDAIURQxfPhwHHfccRgw\nYAA8Hg/OO+88iCJprjRixIhI7Wgi/4uKinD55ZfjT3/6E7xeLwIBLWLsUXDeeefh8OHDzMV/2223\n4fTTT69wjgCJ8921axd69+6NY489FppmIBiMPt+2TY6VGhpFUcApp5yCdu3a4aeffoKqqnjooYfY\n2H/llf/i5Zen4oYbxqNNmzY48cQT8d577+GTTz7BoEGDcM8998Dj8cDr9eK8887Djh07sGHDBqSl\npeHee+9Fnz59YFk2jhwJsAWVqioIh8MwTRPDhw9H165dMXDgQHi9XowePRqZmZnYsmULTjvtNDz6\n6KPIyMiAphlNQk4Bse2S4xGcJOaDUMhAeXnjt4Dk1B9+v6dCm0SKphkAhJiBY5qksLsoEkU5mRXr\nxRdfxM6dO/HUU09VeQzusAg38bVvHcdBcXG0RmVmpheqqmDt2rXo3r070tPTUVwciBR0r56yYRik\ncHqy80h0DOGwWctaimDNJmzbqfd2mpzGIb5lZ10wTQvFxTVzadcHtGMTfU4Mw8LRo0HIMnm9tDSE\n7GwSxzpo0CBMmzYtJo4WAIsfrEwmUMsj3W5lrm/TtBAM6hXahVcGdcECxCqabFKkIVJuiIvdqlUd\nXCD67FuWzdraxreuTUZJSQiO47BrDBBZFAiEYNsWvF7V5f1KDFk4xZYSpRbm9HQ16TUk9ZGjYQjU\n2OCuTRwvJy3LjjSmsFglhuLiIBzHYV5BytGjQRiGhexsX7U7X+q6mbQzWCiks1a/8S3s27Txx8w1\n8cedjBkzZmDlypWYPn06G/tAdA6qiqNHg5GOaNGYZzIHBCr13pB68hXvDQ2/MAwL4bBRqbwh83Xi\njnaWZaO0NBTTMCM725/03iaqha9ppFV4U5nLEtWupvCY3VZMMKgzIawoEgzDinQ9M5hQS0vzwOOR\nmauDxhSVl5ciPT0dPp8Pv/32GxYtWoRjjz0We/bswauvvspc+bquQ9d1GIYJj8cDRaGB/mQVadtE\nmNq2w7qTSZKAkpIQMjJU2LbD6uu6LaGBAOmONmDAAABEyJmmjdLSMFSVCENJIsXt3R3MHIcs5IhX\nTICiEMsCFQhUkNJroCjRvu+hkB4RMKS7k2larHMR7ZRGPmewjjWkIoUOVZVZ0W1ev7rlksqY3aYS\nSmYYROlWVRm27bB6mqZpVVi0ucOKNM2A49DmDbHhRiUlIZgmKYhPiuOTOFK63eLiAFMOVVWGppnQ\nNDNSuktgblPLCkaeM7I/WZYiMsVhz59lOfD7SUKXZdlMSSDnRqom0DqjdEFrGKRTl/sZNk3SmUuS\nRBiGCcuKdiijsbyhkM5iPEmHRh1erxIxHiAmjKCsLIxQiMgG0yTWTZo4RrdLus1ZTCaRbnMOysvL\nI/kMKnTdiHTyUlnYl6ZpkCQ5Yp10EAqFYZoGAHKuoihBFEk2fzhsMBmvaaQRB+0aFghozCJLqzgI\ngoC0NE/kOpBFB2maIcGybHafHAewLNL4gMruo0dDEQMLkZN0njl6NARVlaEo5JgkSUAgoLPuaYZh\nIxzWmZwliWIC60BG9kk661mWw0pouikuDsZUMLBtm3WtkySRnSOtg66qpDnFoEGDWEiDe7ulpWEo\nisH2qyhSxJJsR4xBsedYWhqKGU9V6VjhsMG66QHRhUc4bLBmTPRzgYAGr1dhx0LHDt23xyOxuVeW\nRdaRMJ6jR+OvEXmWDMNi3e+opVzTjCbXDdQd7hJPUstuIKAx4cNpnQiCwNphkmFiAyCDv7ycJJvl\n5ubiwIEDePbZZ3Hw4EG0bdsW5557LoYPHw7btnHkSDRRzJ3YRV4TIYr0JzYuy91mM9mkLwjEwkAE\nXtN66Ditk7Q0NWVNJZqTd61t2zRIkohbbrkF/+///T/k5+ejqCjAFIaFCxfiyJEj+Mtf/oJQSE/Y\nkaq+aY7l/mgrcoBWciEyWNM0GIYekzAXiwBBEEFbMLvlL0CtdIAgSDHy1/0ZaiCgRoLWBilP5odp\n2mwRG28t5jQtEnWLoyRVdsvLw00mDoPT8CQTsrS/fCBAMmHbtm0bU6qHYts2iouLoet0DAkuwStG\nBK1b+RUiZXlEiKKSUPCaps3jXDlNmsqEbU2JTyhqysQr+TQEQ5LEmJa0QNR1zUmOKArMwkas4g7c\nCbqBQAC2XZ1rGL3uROEVkyq/gBCxcksVjA/Ew0bkb3NbMNQF0gxDjJSpbD3n3VypLLSEV2PgxOC2\n5lIhSwQtAJDGEJoWtTYFAkFWnoRaGQzDQDAYjLM4OBG3lgCABOxToUsUW/IZWj8REFhGsySRMAEa\nO0QFr2naPNyG06SoqsRSTWhOY5u4u0nSlWXZTEm3LBslJSGmCLvdupzExBsaBMFm8ZK2bSMcDjNF\nl8pH0zTgOIkMAdExRNzgDmhlrIqWX8BxSJiHILhDHuRI/VeJ1Vu2rKjy25Ihc1bLPseWRC2bStTL\nsXCaMLIsssB/as11C1lN0yJxX1EURUEoFEIwGHIJ28omfIf9JkKXlvUSIu60qOC1bQuWZcI0dQiC\nFImrqyh4qcWXL9A4jU1LLD1WXYJBPWHom2FY3P1bDSozNNAOlJoWjhkXkiQzpTV2uNBxGD+G3Mqv\nBccRYpRfURRcFl07YlQwIAixsb6yLEbih7nXjdN04B3UOJUiCIgkdNEkKzvGmmuaJjQtzIply7JS\nQelNsFVUFLiJxpRb+bVh20LkmESm/AICszgAbsGrJLA4VB7ny+HUJ6lUdvkYbj3EGxrirbkkyZcs\nJKhstCwzyXhzy9745jWVK7+WFa0pThRbGu4Q9boJghYxPhDF1+11a+1xvpzGpTLPGld2WzmSROoF\nEktqbGwuqcBgQNdJ2AKpLahCkmSm7NJhUtGy4EaI+1218ksErxUJexAiVl2q/LoFL3XDyZAkGbIs\nQZYl5n4yTYsrDZwGI7VhDCnbFKcJo6qJDQ2CQA0NGgtbkGUFiuJhim/1EOL+rp7ya9smMz7QRGKi\n+AqucAcdgOgKN5Niws1oxRoOpyHgYQychHg8VDF0IlaEaBiCZVnQNA2WRcqTSJIEjydZTcuatr6t\nqfLruFxkNJEtWh+XtvOUZQ/rtiNJCnO1UcWXKM98YHPqj9YcxsCpGaIosAY9iQwNJGxBA5WLquqF\nJMVO2bSqQs2oufJr21ZE4Y4aH0i4gwDTNGDbFkRRgiwrLouvFCnDxi2+nIaBW3Y5MSSKDYtaVB0W\ntkDHgKJ4IMtKwomcvlS34VIz5ZfG6ZL9RzOGE8f5UosvjzHj1D+tNUGNUzPcoVc0bIFADA26rjPv\nmShK8HjUmOoIbllc9/VVTZVfmpwW+3maZEyOm4abURksVUgw5nkWnFRSlaGhei1LOC0GWjwbQJyQ\nRYLYMAGq6oUoVuy+Qqmf+bj6yq87A9kw9EicGQl5IK42DaYZjTFLVNmBKr5cueDUhVRadQHuXWuJ\nCAIihgaxQhKa48BlaCByrTJDQz0eZdzf1Qt7sCwr0hyIKLlU8Y0muEVLmsXnWZAfPuA5tacqQwO3\n7LYiPB454taPT0IjdTF1PcySE2RZhqIkbyNZ89CFulB95TfqbottWgGQGDN3ZQcieKVIVya34HW4\n1ZdTY1Jp1QW4DG5pxOdHxCehGYYBXScl20h+hDeiNCaHiOf6VoSrr/w6DlVcSflIt+JLPG6JKjtI\nrI2vW/Hl459TE2qt7HJaDonCFhzHjokN03WNCRePxwtZrnxokJqM0b8blnjlN7FiGhW85H+i+EoQ\nBKoQV6zsQARvZKvc3capAalWdjktB7cl050fIQiJ8iNkeDyVGRqiOE5jyl/6dzLDgBNnfKDlJQHL\nciL11PWYRhZurxut50ta1PNYX07l1MGym/Jj4TQCycIWqJCNjQ0T4fF4K+0vnZymMGBoyZ3Ell9S\n2iwaG0cqPDgRl2GsJYJYHchPtMA7FbwO66vO4VC4ZZeTCFptIVF+hGGY0PWwy9CgRmrnVn8sRT9K\nZZ+D+rf2JjwSVGb5JcqrxbyH1PNGlWLSyEKIMz6IAKLKLzVAEFnMnw9OFB6z24pxV1sAbNi2iWAw\nwJRaXY+tnasongaODasvqhP24ESEbqzVwXGi9SvdYRDEIhxr+eXCl+OmZTw7nFQRX21BEGwEg0FY\nlglV9UZCF6K1c0l+RG0MDU2N6oU9JPK8kVwLEW7jA/mhVXaill8ALuMDN0C0dqoSv1zZbYGQJAgl\nQdgCeZ+0nAxGPlu92LDkNAfpUrXyS60O8cqvbYvs/2h7TSJ8ibA2IYoSvF7SDpUqvcSKzBXg1kSq\ndV0+cTdfaJMIErYQmwgMALqusyS0uhkaGsuKWxOqp/zS8mtu5de2qfXXiDxfEiRJYJV2yGLBiZTF\nlJkBwv3DPSStA27ZbWUksiYAtEB5rMCtvHZudWnqgjYRtVd+BUGMFFo3ImXOrIjbES7rb9T1RrdF\nha5bCHNaFtyyywGiicCJwhaogkt+C1BVtULt3OrQvIda7ZVfktRHLL+GocMwogl9kkQSjon1N3aP\nieQvV4JbFjxBrRVRmTWB9lWnKIoKWa5ZbFgsREhRedG85UbtlF/6edu2XB2Noq43Yg2WmPstnngl\nmGcgN294glrrJt6jBsRWWyCd0KL1wb1eb0yd8BruDUBzl7uU2iu/FMsyI+FnAO3o5vbCEWNE5Uow\nT0Ru3nDLbishvqxYtPNNbO1ciqIoddofrcZAhG1Lm+Srp/zGNuIwXJZfstigiisVwFHrMCAIclIl\nmIdCNE+4Zbf1kqisGIG0/A2Ho7VzAUQMDXWPzyWypKUovZSaKL8EUmOdtpQHk5mm6QDQQDtvVqYE\n00RkHgrRMuHKbjMneXwuqbYQDodZ6RdJkll5G05NqLnll1p4owLWYXV8ieA0KijBbgGcKBTCnYjB\nFWAOp2kgy6RWd3xZMcdxoOt6TO1cshi2UrYwah06WO0sv0TxFSLhZeSzdC5MpAQTOR31xMVbgd2J\nyDwZrunBLbstmMricw1DRzgc7atOk9BCoVQru63xiXc/VI7rtVghTAWrW/iSCU9gfeVp+2PSwjgq\ngInwFSKfl11leAAgWgqNCmDeBKPx4Zbd1keysmIkCTjEymzR2rlU8eXUhUTyl74eX+0B7B4QuRqt\nshN9Xh3WZp5tSagYChGvALvrAHMPXOPDY3ZbKLR+bnx8ruM4CIfDCWvncldMfRKN4U1W55eENpC/\no33lhUhyRVQRpp+1LDArMADQzm9EAJNkOOp6A2LrAHPlt+HhMbuth8ric2l+hLt2rizXLWysiqOp\nx203FwTXT7IOb1QhjVp/Y8PLhEhYiICKVmA9xlBBS6HF1gGmpdB4B7jGoNalx1peHFDLwd2Nxx2f\nS8IWQiyWqXH6qnOq396YWIIch7Rrdn8vXviSe2i7wiCilmKiAFPhyzvANRb8MWsdCIIAr7eiR81x\ngHA4zPIjEjXpoWOkrnMrH2tARatusr+Ttzcmi5RY6y8Al/wVmByO9cJRY5LEQiWSdYCjMphTv9Qh\njCF+kHCaAvFuMxqfq+s6q7ZQ99q51YFL2+pTE+WX/CYLlug1jg2BECJJcXrEsiSBxAATFx3pQCTH\ndICjQppbfesPvqhs+STrSGlZpHZ51U164mVA3aGxwpxk1ET5pWEoscpvNAQi+mNZFkzThCzLAEwI\nggZaB5jKX1mOhp9RpZe3Pm4cuGW3mZDMbQYAoVAw0me8+n3VqcstVcfGqQk1VX4Bx7HgOOTzURec\nA8uKNrsgn7NhGBaI8ksVX2J1cFt9qdCNr73MaTpwGdy0cCeiATRGF5H8CFrWsfa1c2sGlQUmszJy\nqkvNlV9igHB/l3jaALLoieZgkBAJMh/T9vOk/bHb6su9bqmn1pZdGrfCaXySuc0sy0YoFKx2X/VU\nWp64gptKaq78ul+jgpVafWkWMm2JTN7XI4I31t3m8XCLQ6pIvWWXy+CmAm297vaoAYjLj5CgqnVt\n0lM9qAU5uUU3Wvos9jenIrVTfimkxi8tKelOLHYbH8xIyJnE4n3d4YimyRXfusLbBTdzJEmAqpLk\nBqroVixp03h91bn7rD6orvIL1+sOHEeIWH1J/C+JJRMrCF5BMFi2sSTJkCSpgsXBNG1+b2tIqnUc\nbtltGiQKHbNtG6FQiCm9DZkfYZpGTN10VfVB0zREFVw38bKDK79VUxPll2JH6s5HLcDU+EBrqxPj\nA7HEx3vdooovNT5YsCz+8KeSSsMYOI0L7Yim6xocx4KiKLBtJ6akTd36qqcKPljql0TKb2Irr/tv\n2xbg7thEBS9AFF/TtFyCt6LFwbYdmKbFLb6NBPeuNS40dMxxLITDGiSJWObc3SgFQYgYGuozP4JA\njBxaTIks0h5XgiAIkTCneKW2KsskV36rJpnyW5kMdiKKqxCZq2PLScZ73Yj8lSBJMovzpYlzpskt\nvqmgijAGTmNB3WZEwNEKC8SiSy1uquptgNgwTnIaSwDFT2RVTWwk5jcqeBGZIN3hDvEWByWSTU6T\ncairzeKKL6fFQ2qYk45ommZA10OQZRmGgRrnR7iJxtbX7CEi7YajXdhkWYZpmnC3LY/bk+t3Tdzy\nXPmtmkTyNtnCNDbp2Lbd1R6o8gtW59c0tUiJSQmSpETyLKIWX9O0uOJbS5JqSrxmZONR0W1GBjdx\nVZHVvMejNkrYAicRjf2s1Dzml1iHyOepghtvcYi3+Ho8EgCJJ1c0ENze0DjE1jB3WCIaVXKBhqid\nSyBVVMyYLmyq6o3EeVa3QVDtLJPJy3lxYnHX+AWqc31JtQdigABoLC/5m4abkRb0iS2+tJ4vTzCO\nUscENU5DkigRzbatGCtA3WPDqLCLF2a12Q6naVIz5ddxLFbnNzbcId7imzi5Iprg1roV31TLTC6D\nGx63R43EYdowjGi1g0S1c+uL+LAFtyXZtqmiW5tnrjYJsVz5rT41ybkgczGRnwBA5C8tG+q2+FLZ\nK0kKTzCuBTxmt4kQX78RsGAYhqukDaAoKhSlbtYEmvTiOHW7x9Hv8qer6VP9yY2EO5DyZu6WmYLg\nVnyFiEvOhqr6IgswIpx5SbPUwb1rDUu8R82yTITDYVZzlVhVfQ1UbcFqwC5sqVB+OcmpifJrw7ap\n5ZfG+ZKQh6jiqwMQmOXX78/gJc1QdTlVHsbQBKjYEY30VY93UzWlsAW+gmzOVE/4kpbF0RJGUYsv\nEby2bUPXiTJAY8zcFgcqeGkL45ZOKmtXA9yy21CQ+NxYjxoxNITiPifW+z2h4QmGUVWlnfo8jtqW\nQoyPYeUkpvrXl8hZutgSmfJLK4KQhPVgEq8bXPKXW30rUXabjmLVUolvFCEIDkyTCFn3it4wjEhi\nQtMcrXxSbu5UJ5mF9JWn1R3Yq05UIJumDkGQYnrHKwqJ8wVat9WhNvDHqv6hFW/IOCYeNdLyl4Qu\nkEUcrYiTij0mSyatPGwhGeSY6nug1NQtT3+35GS3VCr2NTM+RJsKkc+Q1x0Wbuaup066t8W2L24p\nyq+qylBVMs/Ez0uJ4JbdRiLemgBY0DQNuk7qJ7pX9KZpNrmBySfilkrNakxSRZfUlJQi7l/E1PIl\nP1JM+2LyXYcpvrbd/IVvquEyuH6JD1uwbRPhcIhNnDQ/Ito6tu5QuRk/1usattCwNZnjF8eV1f92\n/27Jym8qqVmddVJzmXrepIjyS9oXxxsfkim/RAY3DwEsCEBWlp/NI4SqS//xBLVGwB224Dg2HMes\ntHZuMgFZO6oSULXcaoMKW07DUb1Mbpo1zj4ZUX5pqR0S9xur/AqCGCOwiHUtakFubqEPdY2Dj4d7\n1+qHeEOD41gJmvSortq5ya2xdYWELUSbRNS8QVBjPyOJavtSeJmz1JBI+U0U8hD1vEXlrRORwQbc\nMcDU8OBWfgGwbRBDRLQSVFMiPd0LRZGwd+9evPDCCygsLEReXh5GjBiB0aNHJ81rSvpEcV039QgC\n4PUqkYL9JDbXNDUEgwFWeFpVvZW4rprewGuax9QaSDbB1DeJ6npWfI0qv6ZpRH7MSFtNA7quQdNC\n7McwNFf9X6IAq6oCv98Dn0+BqpIOQ7IsNnFrZ2qfhaZ9rs0TRZHg9UY7UlJDA1V0ZVmG1+trwCYR\nYaboyrIS2XdzXuS4y3CJcf/HQ5U2O/KTeiNMyyT+eiaWvyS0jCykTNOIyF8ik3U9DE0LRORvGKap\nw7ZtiKIAWZbg8cjw+YgM9noVeDwyZFmKlKhsyHONhepQ4XAY11xzDbp27Yr7778f+/fvx5QpU3DB\nBRdg9+7dCb/LwxgaCJK0I0cKSFeMDSN91VUIQiJBl8qkl2g1Bg6n7rgFbfKwh/h4M3dR9ajlgSZh\nSBBFQBBoqR0RUpzuQa3A9HdTsEKkevfcu5Y6BAHweOKrLcTnR3ghy8mb9KTy/joOSSyq7r6bLzUJ\ni+KW39pRddgD8SK7k93iLb8AYERed1uAic5CLMCxUC8cLT/ZEGEQtOrE5s2b0bdvX4wfPx4AcPXV\nV2PFihXo378/brrpJixcuJCVb6PwMIYGgKyKRFak3LaNhLFhzfGac6WZE0v1Jjfq2aDKbzTEwV1z\n0ohYEUQmgIkwlpgSLIoC6/JGOl1ZMIzUxVjWhFQr281QHDRJ4g0NjkPyI6hFtarauam8D3SIUKUj\nNXV7m5MQrl5YVOxrvMZvzaiL8itGWk/bME0HgAYa/iAIxKobrwR7PEQeW5aNcNiAYdRflzf6/OTm\n5uLgwYMRa7SIwsJC+Hw+XHTRRViyZAm++OILjBo1Kua7lSq75KSb04PUtKiYhGbDMDTWCU0QBHg8\n3gorkHhSG7ObKhK5sjmceKqn/MZbfolgFSIreRuAEMkgdmI+n5PTFoFAOWzbRkZGJhwHME27Rcgt\n7l2rO/GGBscxEQqF2CRfPUNDamJ2aXwuJT43o65Q13VV80nTojZlzqjy2/yf8Yah5sqvO+GNeINt\n1qqaKsGmacLr9SItLQu7du1C586dWZUHXa9ud7+aQS3I+fn56NOnD8aNG4e8vDxs3rwZc+bMAQBc\ndNFF+O677yoou4JTyaxQVFTe7JJEmgqxSWgOSNhCtHZuTfqq67oG0zSgKB4oiqdOx0UsyhZU1QtJ\nqr3bjB6TLMsuJcTtfmrIiTpaC7Z17Lex953K/Vde7YFCnpNY4WtZFvLy8jBr1izYto1rr70WgYCG\ncNAMVK8AACAASURBVNhIaFmQZRFerxJxZTvMChHdB+DzeZil2DAshEJ6ta0U2dnxGcJ1w3EcHD5c\nnrLttSYq1s51IrHipElPdQ0NALEGh8NBCIIAny+tVsdjWRZ0PVptQRBE+Hz+Wm0r9pjIdsLhEH77\n7Tds27YdQ4b8DpWk49QD9SmLKq9EEKWhLb/u+a4xYqxTuf/qXeN4669h6MjIyEB6ejpGjhyJL774\nAppmQtMMaFpiZVeSRKSleSCKInTdRDBIvCu0jJhbHyL7MBEI6DHbUFUZmZk+AMDOnTtx4MABFBQU\nICMjI3pGCWqeV6rtkA9zZbcmELeqBMPQEA47UFU1QWxYw/RVr0/ouSTuzx4/ZriFipOM6lp+iXCP\nNrkgWJaFs846C5qmuRSJintJS1Ph98cuFL1eBcGgjkBAgySJyM72x1hTFUWC3+9BcXEw0k65clIf\nxsC9a7WB1M01oWmhSKMTIBQKM6uqJEnweLwNEjZWsdqCkOLmI9GxYRgGiopa2uKoLpbf+G1wElO9\na1zR+gtmzJs0aRLZgpBcVqmqjIyM6HNHEvVJ3C9VXuNRFAmCIKC8XGOvaZqJ0tIQ0tNVdOnSBV26\ndIHjOHjnnXdwySWXRI6j4j2vhrLLqS60r7plWdA02n3HZrVzG7Kven1C2xZSJEmOZNMns9K5hQ8f\nU5zKqH5Ci8fjwZYtW/DQQw+he/fuGDFiBAYPHoyMDD+CQQ26ToSyz+eB3++BpmmYMWMGVq9ejd69\ne+PWW2+F3++FrptIT/dCFAWsWrUKzz33HDRNw/jx4/H73/8emZleFBUF6v3MEyGKiCsiz0kGic0l\nk2MwSDxPHg+x4FMXrKKokGW5RnNbbcPIHMeGpmlMOZBlJWLR0qr4Zk0hB2iaJoqLW5qyG098MmxV\nNX7p33z+qT7VXWAAPp8P999/P/bt24dhw4ZhxIgR6NKlK2TZQDAYbcQiyyJTdOfPn4/t27fjn//8\nJzweCbQfxOuvv45ly5ZF+go4yM7OxjPPPANVlWOUXQARC7IJWRbRpk0aLMvCzJkzmbKbCK7spgC3\nkKUuMwpVdFMdn1Vb6hL/G9/KEiAKByCyeLFKvh33mwsfTnVIntAiSRL27duHn376CT/99BPeffdd\nKIqCwYMH48EHH0RGRg4Mw4KqEjF39913o23btrjlllswffp0TJ06FXfddRcyMryQJBHbt2/HnXfe\niYkTJyIzMxN33303OnbsiF69ekFV5aSuOUp9WGC5d61q3JUWaCc0ei+S186t0R4iv6t/HyzLjORm\nkO/QsDGLrVxSf08NQ0dpaeMsyhofEa2r0kNDlp5MpPyS/YuiiB9++AGFhYX49ttv8cQTT6BLly74\ny1/+ggsuuAilpSRsiIYozJ49G8899xyGDx9OtuSALUSLioqQn5+Piy++GACQl5cHAJWG0pom+a5t\n28jKyqr0LKQJEyZMSPamYVhsY5yKkHa/MovTI+4pG6apu9z7pHZuXRRdUuTZimSg1608jWWRVZMk\nyTWyMNNWltQVSEqkOZFyOULMBBOtsUj/ruy841fntblGjRUr3Fj7bex9N+b+6f6I+6xPnz4466yz\n0KFDB2iahn379qGwsBDHHXccCgr6wDRt5nEZMmQIxowZg7y8PGzbtg2BQADDhw9noQtTp07FyJEj\ncf7556NDhw4wDAM//vgjhg4dCtt2mKU4GTROP5VomtlsOhs1BjQO291ynTSJ0FyfUWrYqKEiVO5V\nlTPhOA4MQ4+p9KCqPhYbTOtPC4JQp1A2Gh5BYo89ME0De/bsw88/b8PQoSej9chBipDgpzrHlIr5\npzXJX7pPgtfrxUUXXYQTTjgBqqri4MGD2L9/P7Zu3Yo///nPCIXIc0Pbcnfq1AndunXD9u3bMXr0\naKZfKoqEJUuWQBRF/Pzzz9i8eTP69OmD7OxsWJad0NAgigKysnyR2r8C/H4/evTokfSoW2JhvwZB\nlkUoSrScDbHm2jG1cwE0wSLhNbdSJGpladt2JOu9Ovuif7emlXdLpukoX4IgYNmyZTjnnHNwww03\noKioCJs3b8aJJ56IQIAIyPJyDaqqIDs7GwDwv//9D2+//TZmz54ds62tW7di7Nix7P9OnTph/fr1\nAKpXGaH+LLuceOKtuQA1NJgx+RE0EbghsG0buh4btlDf3jyiPFuRur0agsFwve2r+cHnn/qGdLq0\nsGvXLkyaNAmGYWDDhg3Izc1FOBzVg0IhA+npXrRt2xbBYJDJYsdxmGw9dOgQ1q1bh7vuugtlZWW4\n/vrr8eGHH7KE4XgyMrxQFBkHDx6EaZo455xz8NlnnyE9PR2DBg2q8PlKtTBe+qYigkCyfMkNIO1+\nBYH0og4GAzGKLv18c8Y0o8l1giDC6/VXsEhUf5J3r7rd3XUSQVfc7s46TUfJ4lAaf3xv374de/fu\nhW3b8PnS0afPQJSXRy2itBB5OBzGP//5T8yZMwdz5sxB9+7dYZoWK5MjCEJMwqVhGCzDtzrW1fqw\nwHIZXBFFkeDzeViDCJI0YyIcDiMUCsYkgKXa0JBM1lmWySrdUG9eomo7qSoj6d4saU5hIxzWYVkV\nXc0cSrL5J9Ez5p5/eHe3ytB1HcuWLQNA8gtOOKEAaWltWaUFSiBAvC1Hjx5Fbm4ugFiZOXLkSMyc\nORMXXHABrrrqKqSnp6OwsBBAVIZTaH318vJy/OEPf8C1116L/fv3o3fv3nj44YcTPqdc2a0BRMgq\nTMgCNmzbhK7rCAYDEQuvAK83cWZhc8JxHGhamLkDJUlOYqWOz3ytCW7BU5ny61Z2ufLLIVBFwq3c\nJKqz6/ORxdlzzz0H27bx5ptvolu3bgDAWmMCxJK7fft29r2NGzeiU6dOABpP2eVEEUWBtVunmeGC\nQJTdUCjIQgcUxZPSdr+VGSxoeBcpaeZAFCX4fL46h5tVRaKxpmkGHIfK50TykhNLbY0v9JpyElUX\nIfXSK4a/pqURD0s4HIbf72evqSqRzxdddBG6du3KPq9pGhQlcagPVX43btyIvn374pprrsHs2bOR\nn58f8e5U9HBUquw2d6tkqpAkET6fEimVYbuErA1NC7PajUQh9Ke8r7p7Um8ISA3HEKu44PGoUNVk\npXpSOUZqq/xyWiNRV7XkSvypCBWMy5cvx7Bhw/D111/j448/xoEDB2K2M2bMGLz22mvYs2cP1q5d\ni3fffRdjxowBgGp1ZauP55MbHKIhC+7YXMCC49gwDB2BQNTQoKq+iLJL7nl9ykzbtqFpoZh4XiIn\nK5tWax5GFo9pGq5qP4DP54cgiHGWXTfcSlk9qjv/xNN6jS8k/yde/la8Zl4vUVqDwSDC4TAKCwtR\nVlbGtgEAL7zwArZs2QLHcTB//nwIgoCOHTuydsRu6GKvc+fO2Lx5M4YNG4bPPvsM+/btg2EY8Hq9\nFY6himoM1T/plkiiLF+i5JI4qcpq59IVT2prKtadqtxopmm4MpiFSGJHReU9ek71eX7uuKnK4q3c\nr/MyM62NaC3axPebjvXBgwdj0aJFyMzMhCzL2LVrF8aPH48rrrgCt912G4YMGYJrrrkGV199Nbxe\nLx544AF06tQJlmVXU9lN4UlFaO3KLk1sAaK5ESQJzUE47K6dW/0mPanANE3oes0bVNQFakV2l30k\n+ycJOppmwLLcicHsm/FbivvN5WViElUhcP9Ggv/j5VDLv6bVqQUuy2RcLlq0CBs2bAAAfPvtt+jT\npw+uuOIKLFu2DP369cPNN9+M4uJi9OjRA5MnT4YkSRXCIQQBkcZCDtq3b4/bbrsN1113HY4ePYrL\nLrsM//jHP3id3ZpA3JtEeMULWV3XmnHt3MSWBZJFrNWqw1vDwJMNOIlRFAWGYSRdnGuaAUWRcO+9\n9yZ8/x//uA/HH98dAHDZZZfhsssuY+85joOysuol/fAEtdRBY/JEkU6kJAENII1EaGwuQAwNklSz\n2rk1h1YAsWEYJlOyRVGqxOuVOogVOeyqF+xxNaognyHKbiJZ55aXicao+73WpajVjHjjS2VGF/ff\nLfuayrKcpLlUlHDYgNer4PLLL8fll1/OXnccB0899QwEQcDpp5+O4cOHwzCMSElTwDQtBIPRyiqK\nIiEz0xdjBBg7dizGjBmD/fv3IzMzE+np6YmPs7IDbI1ytqKQjdbNtW07pq96w9XOrbvrqzIqCtKa\nF15veJJZLuIVYff7LV/wtCaiyo6HLT4TEQoZcBzipSHVU8j3TNNCeroXJ5zQEz6fB6GQzsa8LIsw\nDAvBYPXbBdePspvyTTZ53CXcaG4EfYZ1XY+rnZvM0JDa0C9iSUKkU19U4ZRlpd7lZLwVmYZKUGWX\nQkqFJtsKt1LWH+44afdvJPi/ZXkeHYd0iSU1pZNjmjZKS0PweqPPiyAIUBQJffv2iXzGipQRk2BZ\nNsJhA6GQHuMxS0tTIYoCtm3bBo/HA6/Xi5ycHIiiiPz8fOzYsQNvvvkmrr/++grHUEUUffO/GTWB\n1uMEYoUs7QNNg56J20qtIgmhqtVf0yCRIK1JzLHjuCfkRIpmQ+JOOODCvLVQnVChcNiIKYVDCYWI\nRTgY1OschlBZ8fPa0rQXnKlFkoTIgkSI8aYBZIFSE0NDqi8bVZpJ9Z3ahy3UpBoDrdmbqM1xIiXe\nsmzoenVzGOqq/LaecVl9qht217I8j7ZtV8uzretW0lrl8aEKyaAW3XvuuQc7d+6E3+9HeXk5jjnm\nGLRp0wYlJSUoKChI+F1u2UXlQtZxgFAo6HLv/3/23jxMjrJc//9U9b7MPj1ZIUhYAkSWyKayg8gi\niyIimyJ80XMOHo9H3HA7v4OIqOhBUQ4iwkEIm4BAZAkhQQgQNtnDlgDZMzPdM713V1V3Vf3+qK7e\ne3qdmZ7J3NeVK9PVVW+9b3XVU8/7vPdzP7XVVTcjAa0ILLRKriYfxUUiJrJe/MRgxpjPoDa08rnS\nNL2lPNtp8zhWgd1uxWotzY0wAg2pTKDB+KHMamQTAdPhNNE8baG2VTpDs1fKBF3GjiKbjq+qUrXw\nSfV+NeqozaAQ0512N9bvP34BL1lO43bbueqqq/ja177G448/jqZpDA0NEYlEeO2111i7dm3ZY3f4\nyO5YRrZYoLyxZav2jOyaldRg4pbjJhf1Or9TyfDsaCh9ptrl3m21szvd7zuj1HphcZ78cuvJZLKI\nH+uoonZgonnqVzG9Cwx++Hjfa0ap4dqT33LObuXI7pYt21i3biNHH/3xGnrQiKNW/Pf0vm/rx3R1\nfktX1cZTNCoel7HbLeyxxx48+OCDWCwWLBYL8+fPBwx1hiVLlpQ9doeN7BpG1pKN5uq6IWVjhuMN\njVkzAaD+5f3WS3JBKxzn3HKc3sIs4vZ06MfGjrnkNB1hPsM5TN792Gre7nS1waVKN4b91XUj6ddI\nQks2zI9tdjWsWJXGaKuy4kcrUExbGCuKXG6bquoVVUN++tM76enpqNHZLTlb0d8zyW7NoxXOb3ug\n1P6OL8LhJF1dLjo6OlBVjWhUQlU1OjtdeL1e9txzz7LH7XDlgouNrFkBLRYzNN/cbg+yLGV146xW\nKzZb/aoE40E9aAamITVla4ziF+4WRCnaS1qtMTRjeMy/p/o1mLqoprM7kWh9YYnpd1+VK7UuyxKp\nlJLl4eY7mhMh62WiWN7LpHfJcrLlE5nC82rIcq7UcD3OvbmPqmrIcqnT8d5761m+XGLJkrEz5mtH\n8YS/kqMzkx9ROxqZUBT/PTnXdKLtr6bpBIOJLFXURCiUoLPThcNR3q3doaTHyi2ZFc6WdBKJRHab\n3e7Eam12PtC8gWzWcS7mf4ERNWju951e90Yh6jE8JrQyx81gIlCcsDOZE8yZyG5llAYacnJipi1K\np1N5xUKakT+sfzWsNlWa1t9cqqpmK7CBgMNRLfm5PNJpvSxn94031qEoPbz3np9IJEJnZ2fznS6L\nRpODp9FN3jLUSrsr/m7i30G16OyOB8qdslzlNhNTRRy2adjt1ozHn4vmmjeJ4QTmbhhRFHE63U06\nuu3xABs12xPZCkOmEW12IjOdXsLVYRrxmbLG7YTiCmrtMDmfKRlcHhaLiNNpLyi1ruuGY6brZCND\n+dq5rdD5rvUdnE6nkKREVm3B6XQV8XNbf29pmlEBzqiGZr536i81bFLvNK28szs4GAFsjI72s3z5\nMy3oeTXk20uB6vZyprJbdRS/gyphYt9B+bQjmHy/YCynu0q54Jb3ZcIhigIulw2rtbyRTaXSJJOJ\n7P4WixWHw9VmRSLqj1IU1mw3IrlGKeN2GtdURTnjXY/zO4NWwDRsbrc7syIz+Wh9ZHfqG+FKgQZB\nELJRzfyqYEagoblEsFoP1XU9k59h0CbGq+R7rl+5jimKnFV6sFptTb13BMHQMi2XoBYKmRqodtau\nHWyo/caR7+xOJ+e3Xfizxde1GOPr/JrlgvNXjdt1ZW1ac3ZNcfJ8pQUwCdUGh9U0crljWpNtW5jU\nMLEYm//VumQ341xltzL5RmAiUWzAZ5QeJhLTmcYwlSGKAg5HoaSjGTnVdZ10WkVRcnbKOMbSogl5\ndTunaWqGtpCLJleqxDYeORjmuFslpaaq5SO7waCMeT22b5/sSeFMslvzKMfTrZX2ML2pJGOtrE1L\nZ1cQwOGwIopiWd1cVVVLkhAMRQa9bRLKGoUhWyNTif81PolzQrbtqX79WoN8A9JIlm01wzNzkfPh\ndDqRJCnPSZm869NqGsNUDexarUZ+BFAm0GCU3DWL2YCQKTmampBItq7rqGq6qBKbo0o0t/l7y3Dw\nc4VNxq4AV1fLgEmLMKUzc9+GQhLgAmBwcLKd3WI046TN2MHKGO93UKX2Jvd3Gcv/mHYJakaBCFte\nElpON9cwNumC2byZhGBsU2nHB6iWKLFpSM1lMVEUs2Ulxxf6lH0hTwwaVXqoNZIxGRe/XZbwjPve\nZrMRj8cnuyvAzGQPjECDyc0t1s1Np9Uy8lqOTGJJqmWR8dykvrC9UrWFZpLgakfxeYEWObq5e86I\n7IpIkoTL5cl+b9AYcs5urRWvJgeNOL/5nyffJrUfGn0H5R9b/roWP67NBryaTXbbYWgM+bSF4kxf\nVVVJpXLOYG2z+cYxkTQGk3dWaynNGUwmal3Gq7TcNIN86LqO1+tlcHAwb9vk9mdHRTFtwciPyA80\nqEVqBzl6lWmrW4fS56UcbcFqtbX4vKUoPm+2h00/0oWOSzqtk0pZSpxdg8ZgwO+3sn37dubNm9fs\nyScIExWh3JHQCuc3s1Wv/bl1uey43XZEUUBR0oTDyex3brcdl8ueLcgjSSnicbnulbKGE9SmEhwO\nKzabJWtkTe0/M5orSVJBMoDT6SpwdNtNF7dWqKqaUVvI8b8mIlJhYqpdr/ZDI0oPYxmnHQ/tNKnb\nURPUrFYRp9NwHM0VNUHIBRoURSmjdpA/IR8/CoqpMW5WwxQEMZsEVysafT8YKg+F580FQuprq1Kf\nTKiqRiolkkzmnAhN0wiFcuWOJambl156q+FzTu5krjjZbSxMpWS3yUYjSYTgcDjweDzIssxvf/vb\n3B5lLnNnpxOv1wHoxGIx7HYrLpfx/HV1ufB4HAgCBAIBUqkUTqeNnh533dUox7o9x7xjpkKUwlRb\nyC2badnZhmHkUiSTyawzaLdXcgYnn+9XD0wDboqdm3Jp1RMdWjXOqfESnnqo1fk1UZxlu2NB18nw\nPVslmN8cpoDJbDnsdit2uzXzvsjxc3WdbDS3VrWD8bh+ZsEKMO4VI9BRb5ynPrtZXuVhfFV+VFVH\nlg0ag4lAIEA4nO/UO/jww0BD7T/22Gt8+tOPctRRq7jppqea7G0rkG8Xq9nKfOe3XNBgBjlUcn4L\n0dHRwZe+9CUOPPBA/vCHP7B06VKCwRE6OhxYrbn73OWy4XDYCIfDXHzxxfz6178GDDlCl8uG3W6s\nNpx77rmcfvrpnHjiibzwwguIoojb7WjZqKZ0ZLdcNAGMaEI6rSJJUlasuzXaufVgfJxnk6KhKFLL\nZGtm0M6obnQM7KiRDD2biDqDiYUggNNZLOtYGGiQpERWg9Nud4xR/tb8q1Wc3dw5coEOB3Z7+fO3\nEpqmIUnJLD+3VZrB1aCqGrpuJRLJJaFt2LCVRMJZsN/gYP389g0btvHDH2q8+eY5vPfeGfz0p/tx\n883t4PDmo5FVshnntzqKr6sBXddZuHAhqVSKp556issvv5wjjjiC7373O3R05O45q9WY2P7xj38k\nHA4XPAculx2Ayy+/nOOPP56nn36a3/zmN/zoRz9CVdVs9LdWTEsag81mqRBN0Eml0shyMpsEYbPZ\nqzqDrebYtpIWUWy4C18g9dEWWk/XmOGTThzKLS9VM+jT2/nVdR2Px9NGCWqtn9y2I0RRwOm0IYpC\nXqAhXztXLll1Gps20DobYq56ZVtugLbQKAzKXCFdo1nN4GowHGuVdFoHbITDMcxnffPmIcBTsP/Q\nUP2KDN/+9iq2bj0m+1mWd+G667pYv35zEz0fbzTr/M6gPIxrGA6H+fGPf8zTTz/NlVdeybHHHovT\n6eTtt98uuN9TKcNX+e53v8upp56aDTgaRa5EotEob7zxBueffz4A++67Lw6Hgw8//BAwIsCtwJR0\ndov5ufnRBJMbZlYMcziKuWFTG2aiw8RHqgsxTS7nNEAjkd+pHskoTJaw2WykUqnKu8+gpTCqoRmO\nY65IhIFUKo0kJetedWrVJLx41QvIJCKP76vOVFsw5dQsFssYdI36V/2WL19V9pyQqz6nqoazG4nE\nMZ/vYDBKcR56vfJjjz76OK++umvJ9q1bj+JXv3qjrrYmF/XyUqd3oKBZpNNp4vEE/f39bN68meuu\nu44XXniBZcuWEY/nkiIlKWebw+Ewvb29Be0MDg4yb948LJbcs9Lb20soFAKoi7fbcGS33YIK5rJZ\nMT/XjCYkk8kSblj+BawFrYuktI7GUNynGdrCDMpjx1zGM8sFw+RHQif7/OMNm82Cw5FbUctPBJbl\n4kBDPatOzdtLM1nXvBdK224cY638aZpWspLYarrEN7/5O7Zv357tQ74zL4pipmSrBliJRk1nVieZ\nTFM8fr9fqovjftVVd5FIHFf2u5UrD2DNmrfrGUqboJGkrHzndwaQ8xH/9re/ASCKVkIhCVkuvL9M\nhzcUCtHX1wfkJrhut7tkZS4ajWb3a5V2+ZRKUHM4jGWzdDpFOi2jqiqCIKAoKZLJRFMcqVZHflsV\nqTBpCybsdnuT/K/Wconb7BaZQQGm/zKeruu4XK6CDPQZjA8sFhGbzZKRcZRRFDlbnVKSktmoplma\nvBVVwWpBpWTdiVjNU9V0wyuJ9djOaHQxN930YIXItTMj9wZgIZnMRdISiVKn1u93sGXLZmp5zhOJ\nBMHgzkD5RKFEYm9uvHFT7QNpW9SWlGWgWA1n6tjL1sMYt91uJ5VKZfyewmthUp7AmBiaq9EOh7Ft\n1qxZBIPBbCQ3HA6zfft25s6dmz2m5t40rsZQ8zkmBIqSRtNUVNWQc5FlOZOEViopM9VpC2aRCFO2\nxoQoTitp5BlMKOp1fqfGMl5+ZHey0Wqb2U42WFU1VDWNKOpIUgJZNiKEiUQiGyk08iOai2rWE2Qx\nSqNXStYdXzkzRZEzCdD5Dn71lcR6L43BA96JZ54ZLopcC5n2hMx+hlNgcCSN57ycs5tKdfHPf75D\nLas7t9++jFTqY2P27+mn92Lt2vfrG1Tbox5VnOmzSlYvzGfVYrFkbUDx4+t2G0lor776Khs2bGDF\nihVs2LCBVCrFu+++i9Vq5fTTT+fSSy9l+fLlXHLJJZx66qk4HA4UJd0yGzilIruapqNpatZYGBGG\nYu3cxpb2W18EonFDm+N/5SgZ7YepJdU2g3JodBmv/dAq7dJ2Q7vZ4FSq8Pc3JuOVtHNrRyPHGLSF\nZFWN8dZeQj3rYBcmQI+fysPy5U+QTu/F+vUR7rvvccLhSNnItcHZBUXJ/UbxeDkuu51Nm0aLtpVf\n3bn99hWEQieP2b9o9ABuvHF9naOaaiivSFCKqbtK1iwq3f/m9mAwyMEHH8xHP/pRVFXl/fff57LL\nLgPg0ksv5YQTTmDFihWcfPLJfPvb3wYgmVTKttkIxvSi2s3QAmiaod1owOifw+FsU4ewflSq8pNM\nxjPbmvtNxqN4xhQPos8AKFV4KF6qKwfzfjSPnZwbweTsQ3varGbQjsPJ2V8DE1Vy10S50uh2e2np\n3WZLlxa2ZYxN07QMZca47x0ORxPvnuqdW7t2PT/84Q3ANcB8LrnEgs/3Nw44YBvXXvvvJBJxLrzw\nd5x55iEZzi4oSu73SSZVyjlnw8NSZrvZh+K+6EiSxMjIzkB31X4+9dQAwWCInp6eqvtOLxTf86XX\nsfD/ybWV4wXTBpdTPEkkZBwOK0cffTRHH310wXc33ngrYDzDZ555JmeeeWb2u3hcLriXm8WU8hBN\nbpaq5marTqc7w91ttt53ayOVjTiV6XQqG801+V+5MRU7IDOYwXiikvNb7h7M/674uPGFruu43e5p\ny9ltN+dd01RSqVzRApvNjs1mb0nbZllhs8RwORhRVbnG0uitTxI2+YOiKGaiuY28c2p7Lv73f+/l\nmmv8CMJegAVJ6gPS+P178vLLAT7/+V8xOBjG7z+TV19dy557vgUcXBDZTSRSQKkDkpMfK3a+cs/y\nvfc+Qip1UE193b79aG688a985zufrmn/1qBdno16AgXT0/k1bbDD4Sz5TlV1Rkfj2VLixrNklBa3\nWkWSSYVkMoXTaUVVdSwWAUlKZydvrcKYT2qrsuBaBcOg6QWfRVHkqaee5P7772+ybeP/1r1baje0\n5avtuAuc99b1b4Z+MINGkL+MNxYmXulhOkuPtZuzC4V9qlftphmoajqvGma9ag+Nwyw5b8LkBTfm\n6NaGK6+8l9/+9lmGhnZDFI3ksEhkEVbrmwAEAkv44IO1BIMHAhZ0fV82bdoNm21LQTSsHGcXAoSh\njQAAIABJREFUNLZs8Vc4c+45v/nmxwiFTq2xxxZWrrRMUnGXdnMU6012m7p8X9MUVKtiqWk6yWSK\nRMJwbJNJhVAogSynicVkVFUjHleQpBTxuNJyRxemGGcXwGJxYLMZD79p5A455FCefXbNZHarYUxW\ntZ3WYir1dQatQ3soPdjtdhSlddyuGYwFS8bRGw+OdPmJeGEymI4oWnC5XFXpA60IEJhyZqaWu0GZ\naI19LtcvXde56qr7uOaahVgsfZlzmhOKuXi9wczfLnT9GNLp3bLHJhKH0dHh4o47nmPJkiv4xz9e\nzDq7grCR7u5H6Ot7gt7etQwNbav6zAQCuwLemsfzxhtH8fe/P8dUc9jGH9NXEtJ8DKaCDZ5SagxA\npuqG8fCbzrjX6yUWa7aC0sTTGAy1hVqr7bRXRDY3PkN6qB0nRjOYSEye0kP+svd0uw/bbXUNjGhu\nLqrZuv6Vs5nlNGxrpw80lyScL2eWs8nNO7mV/GRd1/m//1vB7343F0WZDZj0ENOpN9SGTCQSS0ra\nGB0NEo3+O4OD53POOU/z1lsP43K9iMPhIZn8LLHYCWjaAqCPL3/5MiRJKmkD4KGHHiEa/VRd49J1\nH/ffH2U8nvHphVY5v+0VZDIoCpPdh8rfjTk1bkdDWwnN9nUiaQymITUN+EQneLQSJgWjzDe028M4\ng4lEvnMwvhy2HA9s8tHqR7hdxlWM8Uh0zcFoVFXTWdsiCAJ2ezPJYHWcPRNJNlfbrFYboihmaWbj\nAU3TWL36Va66SiOR2CWz1eTa5qgiVqun+NA8bAYWk4vGng58SDJ5TsFesrw7AE8+mWDvvX/BMcfY\nuO66b2O357jXV131OMnkn+sex5o1u/L++1tYuHB+3tbx5/Trus62bdsIBiN0d3cwZ86cCaXYNId6\nbWXx58l8z+bO3Q62aiwfasqpMUB5mTBTdqWJVjP/j++YNU1DUaQst8lmc2C1Wmt2dJv9SVpX7KIa\np6Y4Ux9mnN/pgEZunEYTOFp775g11ov5YBZLqYPdKGes1RPWNjXBjI+9zNl1RZGzwQBRtOBwOBrm\nyNZzDSup4ZiOb2tQeO3S6TR+/xA/+MFahoZy0VRNK3V2dT0X2S3Fy8DXCs6jKGfg8TxLPP6JMvu7\nkaRP8/DDMfbZ53LOOmsOl1/+r0iSxODgEhp55sLhg7j55ju54oqdCsaYQ/Gz31zE/B//eJV77tnG\na69Z2bp1LpLUhd0eYt68t1i8OMVnPtPHZz5zyBQKJNWrilMu0jveY82dr/Sytq3BmnrObqUuTQ4x\nvjaYy2DpdDpbZciIVDhrnn227llt/iWlqumCKIfD4URRlArSaK01bu2D9ns2Jh6N/oa1Kj2Uu3dK\nk6M0bWwlFkEQ6Ox0Yrcb5i6VUgmFElgsIl1drqwTnI90WiUcTk766tZkn78axkPCMJVSsu8em83e\ncJGg3DG1dbJQDcdQWyhUw6m9rWJs27YtWxHKhOnUp1IK3/3uw6xdW6hnq6rWzH65+1OWS7PdDWgY\nEd3Ce1lVF+D1riE+JsvPSzz+GW66yc/f/vYjOjoGicf/UtvASiDwxBNeJEnG6XRSTuWhEI2t7Lz7\n7kauvPIlnnzyQBSlkM6hKPDhh4v58EN4+OFh/vjH3/CTn5zEwQfv1dCIJhflbGWle3D8I+jFyA88\niqI46ZPzsezE+KWTThBMoyiK1qYI0q3m/OVf9FyRCMPRtVhqr7aT16LZWkv61whyPLZC2oIoigiC\nUHSjTRxnc/Ix1R33yUY9HDYDXq8XQYCRkRF6enq44IILyrYsigI9PW7sdiujo6Ns374dm82Cw2HF\n63VgsYhs376djRs3sn79etavX8+2bduwWi3Zyj91jaTlkd32ezZ0vX5HsrZ29ez/9Zbebfa8pWo4\njRcoKoamaXzjG/9Vst0oe5/ipptW8sgjh1L8Ok6nzclcbnsy2QcEis+AKC5FFI8pe/7R0SPweJ6q\noac+gsGT2LRpFj7ftfT2XgFsrOG4XD86On5PIvEoN9xQrI7UOk7/VVfdzjnnbGfFijNQlAVj9khV\nBxgc7OGCCxL84hfL2jooVhvKvWMnP9ltLLnAiUTDnN12NLRQ/oUye/Z8PvjgQxYt2nMSejQ2jGUx\nk7bQeKRiMmHWZDfF+61WG+l0aoxxNMLZnKE8zABKozulUSGXy8Vxxx1HKBRi0aJFHH300axdu5Y9\n91yEpknZ0qkej+HQvvrqq3z961/noosu4itf+QqiKCCKRvvf/OY3CQaDdHd3I4oiJ5xwAhdccEH2\n+7p6voNwdlsJcxJtOiJG2XfXhNhIIwEuZ59N2kIxqtG/Xn31VXbbbTe83lL1gq1bt/Luuzmpr3yn\nfv36LVx/vZV0uo+env8mFDoLXV8EQCrlBJJoWi4oEo8vxG5/AEXpz2xJAivQtAsBX9m+pVJz6evT\nq0R3TTwCXITf3wsodHT8g46OIVRVIRbrJB4/DlhEsWPudt9KR8caRkYWEo0u4bHHNvD1r4+14lL/\n+0FVNS677CYefVQgEDi0lsEAQeJxH+HwR/ntbxfw3nt3cu21p+N2j0UHmUqobitLP7duhdV8RhVF\nwWazTXpkdyxUcXYnqhvNwPjhDj30QFateq4lzm6rZymm2kI9tIV2QjGPzcyGNjl11dHMsnXx8TPY\n8ZB/HxhOia7rnH766dx999288847vPPOO/zv//4vp512GldccSXhsFFkwuTjLl++nN12262gVZMi\nYLfbufrqq1m4cCEOh8GhB1pavWe6oVUrYcU5DGCqPbRC9WDsPpYW8XHmyXzVh1tuWcY553yagw46\nuOS7DRs+JJHoyFZ+Mwti6LrO9753P1u3XkB//18IBv+NWbP+xuCg4ewaDu3mgsguzMLjiWAsYg4B\nrwEXklNuKI9Q6ECczn8iSR8bYy8J6AN6M5/tRKOHEY2a38dwOt/E7V6Jw5FGFNMoylaSyS0Igk40\n2k06PQp4eeWVfu67byWf/3wtig7V3w+SJHHJJX/m2Wf9RCLfrKFNA52ddxMOf8H8xCOPfJZzz32A\nP/3pePr7e8c8dmpi4hKDITcJlCQpQ1uZXKexYRpDO0cVinUe999/L956692m22sFTNqCCVEUG6At\nFGJ8s58rw5BHM+V3zHE0mxHduiWtGexoMO6TYDDIt771LZ577jluvPFGvvjFLzJv3ryMwc1Blg3H\n4nvf+x4LFy7MZpzrOtmoUyAQ4Ac/+AEnnXQSRx55JKtXrwbAaq1/GXtHoDG0Cqb0oqZpBZKSE0Fb\nMGhlxUV8xrLPY9M2tm6N8OabH5T97vXXN5JO92f5uSauvXY5GzcaiW9Opw1V7UeS9sCkDshyD4IQ\nQFXz70MBt7sbWA+8D3yZao4ugCQtpLs7XGWvh4GzxvjeiyR9jNHRk9i+/TMkk0HS6d2JxX5ANPoj\nEokLsNsX090dZdasED//+aOcddYV/PWvD9VJHyh8PyQSSS688E888sjuOBw7o+u1O6lGoD1fwcLC\n889/lgsuWMXwcDEdpFZMlWcyn+YgFn0uRiPv2lxbyWQSl8s16QHSJpzdlvelaeT6VGh85syZg98/\nNBldKkCxLiQYigvNG/DWcOSKucSVUP6F0DoeW1GvqP+BHF8O0gzaG6qqEolEsViszJ49m9NOO41V\nq1bxk5/8F7FYbqKZTOaci2AwSF+fIdRvJFQY91g4HOb888/nySef5Prrr+eXv/wlQDahrR7sKGoM\nzUR2TUpUzrYYOQym2sJ4OvjldHtbIfsoyzqvv76p7HfvvrudVKo3q+ggihbeeutDbr7Zg6YZ96Oq\nGoWSQqHD8PmWZ47swumMFNAYAJLJbUAC+Dz1ROKi0f2yFdhK8TZwMOCq2o7V+iY+3/WMju5GNJoE\nXsCICntRlEWEQscyOHgq27f/O6tXn8J//McyFiy4iIULL2T//c/ITiZrQSKR4MILb+Qf/1hMT8/z\nDA+fUfOxoCDL3WW2C7z88ilceOEqRkZG62ivHKbSqmMl57ccqr9rBSFnB1KpVIbGUPrsiqKA222n\ns9OJ1+vAZiu8n51OG16vo+RfucThqiOcTpxds0uCYPxdWK6u2WXH/GzH+m9iQxdSzjtez/R1Kj0Q\nlNSfL8czHr8hNUJ5yN82ta71DBqHkRRpcCKfeOIJlixZUlZBQdMMxzYSidDba0SF7HZr1tn9+9//\nnt2+ePFitmzZAtByY9sI2tkGN4Jijmy+9GLr7WShQ16q29s6WpmmuRgaipVsT6fTDA3FSaW82aQ7\nWZb47/9+nqGhk/F6h4E1SJK5ImFBFHswnIwOrNZw1hEGcLmWE41uB7oxHNTaFQbi8X2YPfufDA4u\nLvpGAT4EqtMDPJ6rEYRR4IDMWPZDFJN0dj6PyzVCNGohFjsFEOnqehBZ9iNJp6GqNpJJSCY1zjrr\nWbzeeznooF5++tPz2XXXj5Q9l+Ho/omnnloMKFituwI9NY/X672dkZHjK3wr8PLLp3HxxX/jtttO\nwe0eS794uqJRvq8Bt9uNw2GsKphc9WLb4HBY6ewsnEC5XHYkKUU0KtHR4cTpLOXIg+EEj47G61Kk\naUJnt+ZzTCJynWxFYQnTga7H7ppcLHOJytSFlCTTqE+JCwkYETNFMfm5Bo9trBdCvdeqftT6QJow\nl8tm+L47AgRBIB6P4/EYL6tim5Xv1OYbwnwDa3J0AdauXcvs2bOBxrR2d5TIbiMrTa3kyNaC/CqP\npbq9zrp+q2qRbEnSC36r/MJBkYhAOu1EUdK4XCK//vVDrF59JLAdUXwdUIhGj8weGwgchsdzH/H4\n57FYZGTZuLedzp8hCJ2kUj/GWJp/HfgLcDwwu6ZxRKMH43C8iizvn91msdyPqv5nlSNHsNt/CHyO\nWOwwYrHctdM0CIV2JRQCi8XPrFn3IknvoyifRJL2LmpHBD5GLAZPPJHm8MPvY2AgyJFHdnPFFf+S\ndZoSiTgXXXRjxtEV6e9/Dr//sprGaKKjI04s1j/GHgLPPXcaX/vafdx00xew2co7XTsOan/XdnZ2\nsmbNGp577jk+8YlPcOeddwL5muVGsKCz04Wu66xYsYJly5axcOFCLrroIjo6OlBVDafThqIo/PKX\nv8w8Myl0XedTn/oURxxxBA6HrWB1ruoIpltRCQOlgxIEC4qiFFSCaQy1j7s4Cmq12rJyOcXR51Zg\nPH+T/JeRUQPeWUM27US/kMsR8CtFec3/p5vKQ3FSwY4JMxoYDofp6uoCSp8Pt9t4gS1dupQNGzZw\n/fXXM2fOHGw2Gx988AEf//jH+dznPscXvvAFOjo6uOGGG/jWt74FGHq8jfSplWhXG1xPDkFxRbJK\nFSPHq+SzpqljrlK1ArKsI8s5lQVZlrLnTCat6LqPt956C4ejl1tu6QS89PYuZXT0DECkp+de/P5P\nAqCqs/F6JeJxCVBJp714PN9F148gkTgq76xLgP3p6/s7iYSXZPKwqv2Mxxcxe/ZLDA5qgEhf3wrC\n4S9TyGsthCjejd2+Dkm6EkUZm+agqj5UVUZVl+D1riWZ9FHZzbCi6/sxNAR3353gvvuuYZddkpxz\nzt6sWhXg6acNR9di2UQ6fThQSWO4HGLI8qwa9rOwcuUpXHrpPfz2t2c1XLhkeqJyspvNZuOWW27h\nhRde4NZbb8XpdHL44Ydz1llncfDBhxKJSFnpxjvuuIO//vWvXHLJJbz44ot885vf5M9//jMulx1d\nN9q67777+P73v4/L5cJqtbJ4sbH6UK9U3FgKOhV/2XY1sibyZ+0mfL55rFv3fjOtZtqsbW9VVZGk\nZMaoGZGK8vyv5q/leFIhinUmrVYbDket/Fx9nCO7Y6Ec52gsrm8xB2kGUxe5aO3o6Ci9vb1lbZa5\nae+99+a73/0uZ599Nj09PWzevJlnn30WQRBYunQp8Xic9evX86tf/YpTTjkFgHi8/vKwjciVjYV2\nNMNGn2qL7GqaYSNNR9dud0xYafTCF6Vhn8dLt1dRdBIJPfNOSBS8E5JJEejnqafe4Ic/fA6/f18A\nnE4rRklgC4qyKwaVwMDQ0Ofo7/8dkrQei+XXCMIxRY6uCZGRkVNxOLro7l5WU1/9/hPo7l5JX9+j\nJBInkk7vVHFfp/MnOBwakvQtauHz9vXdSTR6CLHYJ/H7P4vP9ySlusDl4CadPpT164/miitU1q0L\n0t//KLCV/v5BQqFjaxqbic7OpYyOHlXj3k7uu+9Yfv7zB5nJB6mEwlyaRCLB1VdfzTe+8Q0WL16M\nJEmsWLGCiy++GHN11eGwous6N954I7/73e847rjj+P73v8/mzZvZuHEjomgEKzRNw2KxMGvWLDZv\n3ozL5crSyuqlpo5lfytGdtu9ck85p2aPPRby/PNr2WefxiqlmJHYaiilLVSKgrZr5C3HTdY0vUD6\np5LO5JittQ0nuTi5rRoHqTnZlRlMLsznLRgMsmjRorI2KxaT6e62cMABBxRsP+igg9hzTyN6MGvW\nLP7zP3PLuJqmE402Vj2t9c5ue9rhapFdXdcLKi3WRltoTRKuaZ/zk4RdLte4Ru0UBZJJkGVD8s58\nJ2zatJUtW54FLDzwwMu89dYvMkcMEov1ZY8Phw9gYGAZw8NfN3tMIPBt4Do6O/ckEvn4mOcPhT6G\n291Nf/9tBALnMFbuuaqm0bRtJJNHIcu7VtgrjdP578D5JJMHVNinEF7v4yjKLsiyWSnOi99/Dj7f\nw4RCo6RSe9TUjqbNZWhoLkaRinvRtJ3p7r6WUOh8auXsejwikUhnTfsa5+zmz3/eh/nzn+RLXzoy\n75v8lcGZ94OJZDKJw+Hka1/7Gv/yL/+C3+9n5cqVdHR0IIpWBCGVDURYrVZ22smYUAmCwK677srG\njRtZsGABAKOjo0QiEa6//no+9alP8T//8z9EIhFOPfVUnE4b8fg40xja1ciCyRMtXfLabbe5rFnz\ndhMtVze2xUtU+bSFktbqWOqbSJhOfTqtkkq1gkPXrkag8jJMIaYz5WH6wnzmTBpDOZulqhqjo7FM\nBrCQkdADm80wfZFIMrOUZkHTDN6lLKcafmZbLWHYvqhsK2ulLZS02AJ7WWyfjXbFph3dYhWb4s+y\nrCNlCkvmvxMuvfR64vGLEMUn8PtnAUaymcfzKJHIJ/LOYMEo95vGfC17vcuJxXaq6uiaSCQWIsu9\n+Hy34PefDAwU7TFMf//D6LqPkZGv4vOtIhh8nXR634K9LJYXsNluRtO+haLMr+ncsBGnM0ogcGDR\ndhG//zP09T1LMvkqicT+ZY8uB4tlCzbbwfj9nwAkenruxekME4u5iEbPA8o7s6L4CpFI/QGvZHIB\nV18dZv781znmmPxrUi1PZEdC7hqoqoqmaQwPD3PNNddw9dVXk0wqhMOJApWG4ude07QCiUiLxcKZ\nZ57JT37yE+x2O3vttRc333wzp556KlZrff5IQ2oM7R/ZLcX+++/Jbbc93PDx1YxtYfIWmeStWuSJ\nWnEtWxP1gNxL1HR0G0nYmHpoROVhZlbfrsiXvQkGg/T09IwRZSwtEFHtczP9ahWmgg0uvubFBWga\nWSlqFMX22Wq1k04r40qzMtUlUilQFKFkvOvWqYCIIHwURXk0u93g5BZW8fL7D6Sj4y6i0XPp6FiO\nzeYADq+rP6rag99/MXb7XxHFINBNR0cUq9VJItFHIHAK5mvf7z+O3t4XsVhWE4nMwWqN4vWGiMUG\nSST+P3S91siohs/3CH5/ZY3ekZFP0N39Ojbb84TDh9TQZpq+vo0MD38x89lJMPjJzN9xenruwumM\nkkxCKHQGsCB7ZH//kwwP/2uNfS9EINDPZZddyy23/BuLFplR77Gew/zvdqx3hCiKiKJIKBQimTRW\nNCQplclTMq5Lb28voVCoIJfqww8/ZM6cOdl2ent7ueKKK7KfbTZbtlJr/X2aljQGA/nRj3nz5hEM\nDjfRWnmHsnbaQqX2mkerosTF0aKxItPTG/XKrswkhbUHcr+Dec+anN12sFmtpDG0a2TXKMhR+NwY\nNjKdt1IkZlaK6omoNjahr2SfQSedHr+VtXwps3QaUimhxLEfHhYy+w6QSuWiVFZraRK1rnfT2ZlA\n1x/FZnMyOnpQDb3QgBuw29/AZgO3+yNYLLMJBmVgFl7vEKqqZnjCpZQF4xw6EESWk7jdLxCPf59a\nClWY6Ou7lZGRE6lmG0OhffF63fT2PsXo6BFj7uvzrWJ4+OwK33oIBs1kPAWvdzUdHQ+gaQqhUDeK\nMrtqX8pjEz7fX9i8+XP8x3+sYOnSL2SqrM0ERyohP2cCCv3GVErFZrNx4IEHctddd3HeeeexbNky\nPB5PltYAMDIywqpVqzjzzDNJpVLccsstHHKIMSGqVxFnLHszJWkMUH650Gq1kkqlW1ru1xRAN2ca\nU9k5NKMQJmw2OzZbs8oV0wX1Uh6Kt029+2EqQxByDpdJY0il6pcKazVaWXSlHZz3WqBpGqmUkqUt\nWK3WhgrpNDKhH8s+51MZWol8WTEwlmHTaYF02ki2Me+B1aufRZZ92eMMJ0wB7MhyebsbjUYQxQCj\no5+t0osPEMW/YLX2kE5/AkU5BUVJIYrv4HavQ5YPAOZkqBUqTucHeL2PYrPpCILxT9eFzLUWUZQR\nZDmFKH6EOXOWIYoamiYjywqRyMKMGkLpvW2zvUw6vQBN66rp2sViu+F0uujvX0kgUD7prK9vFaHQ\nZ6hNfcFOLGZImQF0d98GLGLu3JtIp5NEo50kk6dg6BKPhQ/w+e7E7z8BEHjjjX35139dyq23XpxZ\nci9+P1S6Scc7H6S9bIIgCASDQbq7jeub/+zKcgqbzcJll13Gd77zHf7whz/Q19fHz3/+cwB+97tr\n8fn6Oe2003jooYe49dZbiUQi7LPPPnz5y18GjEhxff2p/N2Uj+wW//gORyeBQACfz1dh/8ooNral\nS3LOAk3O6u2Nj5ROI0in0yiKVLCtdYLqkz++1qJWygN523e8Wf3kQsjyMFVVxWKxZEsDTyZ2FBpD\nviMry8kW0Rbqi+xWt8+to37l2itM6DWlzFQVNM3L5s2bs4k3P/3pH9D1z2ePTqc/BtwNHEA0WiqL\n1dn5BKK4H07nO0QilfowCtwOzEbTLkJR8h1QG9HoR4lGF9PX9yyKsolo9BDAgiTtjiTtXrZFm+19\nurutxGInFujnGtCxWrfQ1/cgdnuceFwnEjkVgy+bprf3NYaGqjnmhZCkeaTTJ+HzPYjffyz5bkhP\nz1Mkk0eSStX//oYYVutuBAInEgqZ24J0dDyJxxNGFGUkSSIS2Z10+ihMZ9pqfZ2ensfw+48n34Y/\n88z+fOMbN3P99V8bYxJrbp+MZOjSNlRVJRqNYrVa8Hi84x6UM51dM7Kb7+skkykcDivz58/n9ttv\nz+qhm31atOijLFgwD7fbzc0338zGjRtxOp1ZnfNkUiGdrj2AkU9tK4cpGdktTFAr/G7evF148cU3\nOOmkYxpo2WxTI5VKNbkk12o0vsRXHIUwlgaa+30Lq6nVJ9k29VCO8lApwpv//3R0ftuDzmEYNuNv\n01ZNts2qZmzrxWSPZyzk981YSZtYG1lYoGKizm2M2XR083M2jMByB++//z4LFixg6dKVbNzooTAa\n2g2soLc3yujoiQUtd3c/hq4vJBTah97eKOAHih2+5cB24FSMhLZKEBgZ+SRe7wf09a1kZKSybJfT\nuRavV8XvP6liW+n0ToyMmMvOSXp6nsLhGCGR2MDQ0EVj9KMy0ule/P6z8Pnuwe8/EOimt/dJJOlQ\nEomdG2qzv/9RAoHi/vQQjR5NNGp+1hHFzXR3/x2XK4Esv4eibCcU2hdIAvk8ait///uefP/7/8cv\nfvGVKs/25CRDx+Nx7r77WV5+WeL992FwUCCR6MDlegKP5zB23TXNwQeLXHjhYbjd7uoN1gFT53xk\nZITddtut7OQ8FEridttxuew4HIZ0nSQZEd+jjjose00FQWDBggUIgoCqaiSTCslkvVHdsa/hGM5u\nXeeZBJR3/nbZZTbvvLOVkyo9uzVAVVV03bjQjS7JtRqNLvHlZyabUQhZTmYzz2fQCIrvvUoTkRmV\nh/GDgCiKBZSlyY6EttpGTPZ4KsGkDpioVW2hGmpZCatH6aGcFnutuOGG2/jqV8/LHm+ez2i31LlW\nVQHo4uWX32fbNpUf/ziEx9NX3Cyi6MXhsJL/6u3rW4ai7E80akReR0c/zsDAnQwPX5x35C3AfOBT\nNY8hFtuVdNqZcQJPKPne5XoZt7uDQKA2tYfMUQSDR2CzvYHT2cfs2S8iy2GCwROor+iD0Zbffw79\n/Q+RTn9APH4WsjyvzjZMbERV96I611hA03YmFNoZVX0Um+0AYrFLEIQhOjvfxe2OIIoJFCVKNOpC\nlg/k9tvn4fEs5b/+67wa+zL+ydCvvPIuf/nLe6xe7WDbtoMxVT5MeDxb+OCDk/ngA3j8cYU773yc\nL30JLr74mJbZKfP+Hxwc5LDDDqtorxIJhUSiVD7MrLamqnqmvebseLV8iWlQVKJw++zZXrZsCTfY\nqhkhymnO2u2NqxRMJo3BEHNPZB3d8RRUn4GQ+Sfm/V0MPe/fTGGLZiEIhrMbiUTo7DSyxifbOdxR\nNHZVNV2QLT1RdkXTtJICFWOryDTep5/97JZMuXfDuTajyMZ57SVRZE0TAA+PPrqSH/wgSjC4C5pW\nGn3VtMVEIluyn32+e0gkDs06ugasxGIfx+NZjmErfoRhW2J0dT2Dz7cMKKSkVYIkzSUS+Tj9/YUq\nRR0dz+N09jMyUo+jmx0Fvb0fEo2eweDgFwkGz6e//1V8vnuBwTrbGkYQIuj6frjdLzTQFwOzZv2T\nYPDImvfv6bkTQehhdPSTGJKEs4lEjmRw8BS2bTuLQOD/IcufprNziIGBddxzzz/Zf/9jufLKq0mn\n01XbL0T++6GWd4RGpXfEc8+t5cIL/8aZZ0rcdddxbNt2OMWOLmwjGl2Q99nOBx+cxOWB77OgAAAg\nAElEQVSXH8JXv3oPiUS8zv6XGZGQSxAeGRmhv78/6zfVClXVs44uGPa7GRveRGS3PQ0tFDu4hf3c\nf/89ePDBl+pu0xAhz93ETqd7kmkLlVD9d6mv7G8r0b73zMShWZWHmclIrRAEAb/fT39/PzD5Nqv1\npYJb2lzLIAhWbDajjv14TdqKk4wLaQvNaIJXh6ZpxOMHcMcdD/LFL34m7yVuROmKf2fDKTYcmQ8+\n6CESMZb8C/m0JnbC5XqPeFzB57uH0dHTUNXSCHAisZCuriBwIfATwGgzHAaQGBi4l0BgdzRtl6rj\nUZRZRCKH0d//EIHAyXR1PQPsSjD40VouRwn6+h5geDhfZsxNIHAaoNLV9RQu1/MEAruRTu8zZjtd\nXQ9hs9nx+z8HCNhsAWbNuo3h4U+i6x+puT89PcsYHT2V2mynhs/3J6LRI5CkBVX27UeS3LjdHyLL\nHyUW+wy//32Y6667Ao8nwl57dXL66Ys555zTsrJataF+ysM772zkf/7nn6xcuTuJRGmUPh9dXY8Q\nDv97yXZN6+Ohh84mFLqTG288nq6u2otulIM5uTdtcLsHG8aI7La8Ly1G+YHtvffu+P1byn5XDsWl\ncsHgtbafo1v9QS6OQlgs1gplf1uduDGDyigX9a02q8+PAs+gEkRRZHBwMKvZWG8d9db3Z8eI7AqC\ngM1mz463Vd0sN1koZ9OMQER9jm491/KFF14knT6M++5bi65rCIKA0+li6dL7CYfDBeNNpVJcd929\nWCxGwpnN1pH5xk8yWZ4jKQg2fL778fvPKevo5tq+B6fzR5iObg5OhofPpa/Pj822vqYxKcoAkcgR\ndHbegKruTTjcmKNrtb6Dpu2NrpdTX7AQDh/N4OBXcTj6mDNnOW7345jlY03YbK8xe/ZdJBKLCQQO\nw7SHqVQ/Q0On09Ozib6+24FE1f64XP9E1/cmlZpTdV+IMTBwHSMjp9Tg6EJv7524XHEGB08mFtsf\no3rbLmjaaUSj5/PCC6fxgx+42W2337JkyeV84QuXs2rVUzX0Ix/574TSqO/oaJAvfvEHnHHGepYt\nO5FEYreqLXo8bipTSiw888zZ/Mu/PIqi1F6ZrFy/zQRhc3Vtsp3dhiO77Y5KfKyOjg40TSQYHKWn\np3fMNkwpLnPmbrFYM0tkrXppTZxTqWlaSdlfi8U6QbSFmWhkbRh/LteOAjMZbGRkhL4+w2GYZF93\nHCK77ens5jC+9q3Yppk5B7Ve50Z+D13Xuemmx4HPs3Hj69mCO7FYjJ/8ZA3/+Mfb/OlPP+DZZ19h\nxYp3Wb16lLfe2gmDTwtWq5Dp65vE48UVzMDleh1FiRCLHcVYHFe3+xcIwrljOmV+/8n09z/AyIgT\nXa9e6ayj4zkk6Ujc7jXEYgsZq6RweWj09r5TxCUuj3h8P+Lx/bBatzNr1mrS6QCjo7swMPAeicQi\nBgdPrXCkwOjogcBH6e9/EkEI4vcfTqnDDzbbWjwenUDg0Kr9EYT19PU9zvDwfng8j+FwSBk6ijXj\ntJlOphFwiEbXoqpeFEUDZgOVJiVzSKfnMDgIg4M6Tz+9HpfrZ8yfn+aoo/r5zne+jNfrrdq//PED\nKEqK3//+Ae66axBZnkcw+Ikqx5lQkOXKEygDIk8++QW+//17+c1vzqijb0U9LUpSn3xnd+zvpySN\nwUDlkfl8u7BmzatjKjKUWxbTNK0gEaHpHjaQVNZIW6qqZvRzjSU2u93ZMlmxKr1iJgLZDBqlPMzA\nTFAbHh5mYGAAXdcn3Wa1el7Z7iZ4fMqhGzZFVdMF9nkibJqmabzxxlpeemkjYCcY1PnmN28nldJZ\nt24LyeSxPP/8o3zsY39g+/ZZQB8221bs9ldQlIMAazba5fEMEgrl83A1+vufQFH2Jxw+moGBBxke\n3rdML0AUn0DXdyOROKBqnwOBUxkYuIPh4U4qlc81lu7vJxz+JIoyi2Ry10xJ4bMoVB8YG7299xMI\nVK6SVg7p9BwCgT3o6xumo2MbgmBHVTcBuzF2rM1BIHAEoNLR8SZe7z9JpZKEw7NJpQ7G5Xodj8dG\nIHBi0XEasBGH4zVcriFcLiuy/CHp9FzS6fnYbG7i8ROJxz0Vz9zfv5Rk8mukUrOAEF7vO3i97yII\nUaJRjVjsWMonwgnA7iSTC1m37kHWrXufP//5MpzOJLNnR7nrrt8wb97YCXiaprF06WPcdtsHvPHG\nHvh8b+D3f3PMY/LhdD5AMFhpIpEPB3/72+EcfPAzfPGLn6y+exEMnXOxRJVlcjENI7v5FXzKXeCd\ndx7gzTc3l1VkMKS45Cw/Nz+bNzczmewfrRxKoyjlKgcZCRtjz9hb9ZISBDKlAZtrZwYmanV+qbB9\nx4n8mtScTZs2cdxxx016VMHAjnP9DYxHZNdoK5dz0Gwp8/wJefk2kskk11zzEPff/yQbNiymr8+I\nImraHtx5Zxwjsmcsk0ejB2KzvYrVaqW//0WCwcXIsouBgZeQZYFUynilut1WQiHjHrVYNuDzbWBo\n6CR03aA5GP9rlEZXU1ita0gmf1zz+IaHv4DPdxN+/6ll2kvj893L6OinUdXuzLg68PtPx+d7gGDw\nANLpRVXPYre/hqruh6ZVK86Qg9X6Ev39LxKP78bw8GcBgUgERHGU/v7nsNnChMN2EokjqayiYCEa\n3S8jHaYDm/F4rsFqXYzN5mbOnNsB0HUBTRNQFAuy3EMyuTuyfAiC8DCadgKRyP419bmn535isSMy\nji5AN7HYodmiFRCir+95bLZhgsF+ZLm4yt0rwDvAUUA3mgaJBHzwgcLBB99Gb2+Mj33MxeWXn8fO\nO+ck1jRN4847V3DXXR/w0ksL0PXFdHS8RDx+KqUJaJXR3Z1gcLAWSgfI8k787nfvcOyxI/h81aLB\nxRCwWMRsqXagINlsMjCNI7uVMXu2hy1bSlW5i2kLNpsDqzW31N/6SMX4LfMVS/BMZmW3KXyrtDlq\nSWTYMSkPFovxUt+2bRtz585tC2e39ZHdyR9TJeR3rVXdLM7mrpe2ABAKhQiFguyyi5HglD8hL9fM\nI488z89+9jZvvvkJZs36J7I8H1EcBSAe3wOX6y6SyVwBCFmeSzrtwu0eYnAwlyg0PPwJXK5hNO0R\nYCGCYAPS9Pc/iaruzuDg5wvOOzJyAF1d9xMOf65gu8PxYxTlR9T3/FoJBM7OVAA7LW97DJ/v4YwT\n7Co6xobffwo9PS8jCK8yOvp5KrsDEt3dWxke/nJNvbFYXsfne5podE8GB08r+V7TegkEjFVXQQjS\n2/syTmcUSYoRDO6Jru9dptV1+HxvAj78/v8EHJlkvUpI4/PdTSRyPLJcSoEoB7d7DZr2kSp83m5G\nRj4NgMPxPrNnryIWU4nFjkUQHslwmU8vc5wdXT+MkRF47LEUK1Y8QH//KPvuq7Fw4Tyef17ltdcW\nAGZS3yAOh49AYK+a+m5AQ1X769gfNmw4jssvv4trr621MIjxsJuRXdP+QvvnTExhnd0cijN3583r\n5PXXhwr2ya8gVjmbt7XO6fgs85U67fVXLZpJUJt6yH+Qx/rdprPKQ27cZmR3y5YtzJ8/f9INLbQ+\nQa3dkbO5zdsRVU0jy7kk4UZLmb/zzjssW/YsP/vZt6ru+/vf/51f/cpOOGxIVlksZgTNjI524/Go\nJJPFfe0hGu3JfJKAxwEfyeQocB6wjEBgHQMDGsPDnwFKl8w1rQe7XQBigMHpdDqvRxDORNdrj56a\n0PUOotFP09PzOMHgccBWfL4XM0oHlRdwg8ElCMIezJr1IJKkEQ6fSnGU1ed7YAyebgJBeAWvdx02\nW5R0ehhBcGGxzKW7ezNdXRtQ1TSplEw83o0sH5odr9HvHkZHj8h8UrHb38ftvpN0+n1U1YrNJuJw\n7EsstkeGdlELzziAz7cSv/+LlLv25eHH7R4hEKh9SV+WFzI4uBCLxU9n5w1omotYrJZiVjZ0fQl+\nP6xcqfDSS2txuwN0dm4iEjGi3D7fOvz+/6i5LwAu1zJGR4+r6xgQePTR/Vmz5k0+/vHFdR0piiKb\nN29m/nyDLz7ZAYdpW1RirIEddNBeXHfd49nISHEFsWa0cycL+Ql5kpTIbBtfCZ4ZtDvyM3dr4fsW\nJ8hNXZj8zWQyicvlKitaPtHY8RLUmkcxFctEozYtHA6zdu3WvC3l8wquvHIp1133IrFYzqEQRdPZ\nzZ3b4ajmLD0GfAnDQRxEEO5C161o2mlYLGFmz16BJKVIJruR5S6MKmqzgC78/sMZGLid4eFP0dGx\nBl23Eosd0tC4ASRpZ+z2xXg8d+Ny+TJR3lpUfLwMDR0PxOjrewKHI4EsJ5EkB7q+nVBoD2y2FTgc\nARwOFbvdgSg6SKcdJJNu4vGPAJsQRTeRyLmAtUzUVQdG6Ox8B48niKZFCAZ9KMqhiOK79PW9js3m\nQVHsRKMfRZZPBFwkk0E6Oj6ks3MDvb3rSKUkJEkgEtkDIwpa6MLYbGvp7t6C3/8Vak/A0xgYeIjh\n4Qtq3L8QHs+LaNpJKEons2c/zujobBSlVsfRTjh8QOZ6JenpeQNVfYVEYgmQonqRjBy6u0Ns315b\nFDsf8fgirrvubj7+8b2p9R0hCCKiKLJhwwZ22WUXdL05jdxWoAk1hqlkaAtf5HvttQeJRIItW7bg\n8/XVnM3bzjSG4j61k9O+o0W02hM7FuVBFC2oqpp1eo0S2JOLHUVn10SzRXOKKzxarbZM9crGy5kP\nD0cZGgqVOVfu73vueZIbbngRj8eXx8UEXTcdi3xHeyxndwOwhJxDMhuXa38SCQ+p1B5s327upwJR\nII7dLmG3v43dnsDhSCMIXjyevyAInUSj/1bPUMtCEDZgswlEo33U/1x7GRnJRTYdjuex23clkVgE\nOEmluonFip2vIAMDSwmFjiManTtWz4B+IpHDiGQYhh7PLTidf0bXE/j9J2Nwo4thRNFz5X7B4DVv\nw+tdhcuVRhRTpNMysdhWBGEWfv+F1KM00dt7DyMj5fjO1eFyrcFi6SQS2ROAwcGz6OhYS1fX3/H7\njwQ6xm6gsDUEIYwknU0q5aK//1Zstjih0DySyc9W6V8CRRnr+o+N1157i0cf7eWEE/Ij25UDJCaN\nbN26dZx99tkV7a8ggNNpw2IR0TQdWU6VcHutVhGHw6CTptMaklRfmeD8c42FKRnZNfsmCEImC7tw\noE6nk4GBeTz++LOcddbJdWTztufyvsnPNdEIl2280U59mUG9EmdTj/JgKjH4fD5g8vlisOOpMTQD\nVVVRFCnrKDscTiwWK5KUbCrpNRCIoSg5SS+TswuGHX3vvQ+5/PJB3O5dUJQe8pPENM2a+T/nVKRS\nY6kVrAUuKNiSSByRKfW7R95WC0ZEtxtFgWJ5U5ttNi5XlLlzV5FIxAmFTqKyskIlaPT330wicQCJ\nxCfw+Z4mFHqHVKp68lk5iOJGOjtd+P3HV9zH4XiOzs73GB4+h3py3UVxPT7faoLBg4nHZ2MUo3gN\nl+tlAoGPkE5X46naSKcXEAotIJSZ1/T1PQqcgCQ56O5egcslIwgyiiIRi/UgSUdg/AZFLdleR9d3\nqZvramAzHs8QgUDhNYpG9yEa3ZP+/seRZYlo9PCaWuvoeIZUam8UxUgwM9QowGLx4/PdiMWSJBhc\niCyfRLHj29l5NyMj/6+BMYDd/iTptI877ninyNmFSsESh8NYBenp6amYM2G3W+jsdBX4Bh6Pg3hc\nzq7Eeb0OXK7CCZTbbScSSZJO12fTp6XObs4Qli5RGWoLCnPndrF+/UhD2bytE0lvvj1NUzP83Fwj\njXDZWt2vTEu028RgBuXQqMRZ+zq/FovIpk2bWLDASCaZ7ExgGI8J3+SPqRKMAEP9kd1yCjL5FR6b\n5QGPjsaQ5Xz9WrOPGsmkxPe+t4JNmw6np0cgFtsDi+UFVNXQaU2nbZl9c45EPN4H+AFf0ZmCCIIH\nXS/+zQXi8YNxOl9BkqpLhxnataMMDX01E/FM0tv7JA7HVkZGdkJRqmvIwhZ8vocJBI5H1w0+rN9/\nWCZJ7HUkqbzEWWUM0te3Gb//vIp7dHXdjyh68PvLJWNVRmfnI1itOkNDp5CzKxbC4SWEw0syMl8P\nZSqw7VlDiwo+38OEQieSShkOayj0kawTbCBIR8c/8XiiiKKMJEmEQnujafvT27uWoaFz6xqDgTQ+\n33L8/rMrfG8lEDgBh2NLhiJxKJW1eo3iGFbrLILBPUq+U1Uffv/RANhs2xkY+BOiKBEOzyOZPB2w\n4nY7iUQaqYim0N39KMPDx/HUUy9zxx2PcPbZJzOWEpDL5WLLli089dRTnHbaacyePRtdF7DbLSiK\nsUpjsYh0dRkTxTVr1rB8+XL23ntvPvvZz+LxOFBVDavVgstlJ5lMcscdd7B161bOOOMM9t57b7q6\nXIyOxuvyURqO7E4FFEtf5YuQz5njZfPmWF2ObisTLjItNtVeoRawmE1IK07Im+h+ZVsRWjcxmMFE\nohbKQ/7nyrJNkwOhTCbw5N+IM5HdsWGsUEmoao620GoFmVAojqKUSjUpisL3vnctTz55IrAdSZpD\nKrUX/f3LskUJFMUKpNG0XH/i8d1xue4hmTSdXQ14AvCi65+jHOLxhcye/SqDg9X729e3Cr8/39ly\nMTpqqDw4ne8wd+5DJJMRgsGTgNKqZV7vYzidUfx+Q9orH37/YfT2vozdvpJI5NjqnQEEYQv9/R/i\n959f0h4ksFqfxeFYhSB4cDrnMmfOdkDNBGUUotGPoKqHUM616O+/k2RydyKRXSqePxZbRCy2iI6O\nt3C7H2Ro6BAMjnM5BPH5nsbv/zylahP56CEaPTiPCqFhs23E4/k1sJDe3lsJBvdF1/cbo43isfyl\nJk60LM9nePg8+vtXoShvE4kcVrKPy/UabreLkZHq50+l5jA8bER+RdFPf/8taNoGYjEX5Sdl1cZx\nOcPDS4C3keWz+M53YrzxxgP87GenZp7L0neEw+Hgj3/8Iw899BAAPp+P448/ntNPP5099tiLaFTC\n7TYCcnfddRe33nor5513HqtXr+b111/niiuuwOt1IIoiqqpy3nnnsddee7HPPvtwySWXcM0117Df\nfvvhcNjqpDRMw8huKfRMNm9ObWGnnbp5/fX1U3J53YxO55LqDC3gZDI+yT0rj+n2Ut6xUC/lofjz\nxD9foiggCAIbNmxgwYIFbVFQwsDUszXNofZJc/EKld3uxGotff00u+oUi8nIck6ZxgwQDA8HeOQR\nP7qeAkaQ5T0BAYcjt7SdShlR3HwaA/Ti8aQyigybgHeBExgrSgcQDn8Ml+sFksmDK+4jCFvQ9UVo\nWk/Z7yVpEdu2LQIkenufwuUaJByGWMxwhn2+20gk9icQWFLxHKOjS3C5tjAwcA/Dw0cBlZfrnc7X\n6ehQ8xzdGG73Mjo7YwiCi2TShaa9hyx/iXh856LoKYCKxbKZ3t7VOBxhJClJMPhpoJe+vtuIRvdH\nlmvTgI1G9yYaXURv7z8RhOcZGTme/IpzVuv79PRszCgu1Mu1FRGECIJwEkNDSwANh+NduroexmKJ\nEIlYicdPolLBDa93BcnkgdSu9CASCByH07mFgYG/Mzx8BCZNxe1+BafTzshIsV5vdWiaj0DAx+zZ\ncUZHz6GzcwVeb4B0WiIa9ZFMnkm+8kUxOjtvJhqdDbwF/AQQ0DS49dY+dt/9Kb7ylSMzexYqAUmS\nxKWXXkpPTw8rV65k+/btLF26lDvvvJPVq1cjig6cToN/f/3113Prrbcyf/58Pve5z3HMMccwOjpK\nb69R3faJJ56gv7+fn/70pwiCgNfr5ZZbbuE3v/kNdru1Lmd3Wkd2zR8hnU5lowUGbcHBfvt9hD/8\n4Tmi0SgdHfWQxA00Hz1tzHDruoYsy9mkjXbk55aiHRyNGbQGtVIezG0TT3kwl7wHBwc59NBD24LC\nAK2P7LYz8vMkxrJvul5cDU3MKMhUclCaW3VSFB1FMQMGcta5/sUvnmF09CLgYazWDtJpw9lIpXJL\nv4lEH4LwNppW6MjabE7gIYyqX+dQyz2eTO7CnDmvlMiW5WNg4G2Ghr5ew6icjI6avNAgnZ3Xo+sx\nZLmLeHysiKbZl/kkk2fQ1/cCFsvTjI7OJ51eQs5J1OjrW04qtYhodBSf7wZsNheJhIdQaAmJhBFR\n7uu7n0Ti8yhKpSpgFlR1F0ZHd8l8lunuXoOuP00isUvNjm4OIqOjBwEfZWDgGSRJJRI5GpfrZdxu\nsUhTuB4oGd3go7LnkeW9GB42ucIRenqex+kcIZlUCIWOJzdJGMTpTBII7Fb3WSVpPpJ0Lj7fYyST\nIoKgYbV2MzpaebJSHZtIJvcC3EQiR2ST/yBAV9e9uN1RQEaSVKLRRaTTxwBebLbnEcUAsnwPhqJI\n7p5W1VnceqvEuecq2O2llElJkhgYGODSSy/lG9/4Bv8/e+8dJkd1pn3/KnSO02mUA1EIJIRAgEgC\nCxBRBgy2wWAbWPPiD6/9ru1d2+vP9r5e7zp9tncxu9+CwSYZYzCIHEQQCJGDJECgLJTVOefqqveP\n6p7pnuk4jGAEuq9L16irq06fU1196q7n3M/9bNu2jaeeegpVVXE4HKTTukRpz549OJ3OAWsyo9HI\nlClT2Lp16wDZXb16NaeeeuoAv5kxYwZ/+MMfAJCk3ibUTzjZ1SeyGtGtJ4bHHTcHVb2bl19eyZln\nntKukQGMPqHsbeJuTNoQqkkb+23F9qMeHzWxqyex7RIGPjqLs9pvIhwOD5QKHgv4NJFdHe3nt6GF\nb+qrVe4tlEpQLkOxmB9IWly9egOPP34IHs9/E4lEkeU5KIoe8UqnpwMbgIMBH1ZrAlWtj34+z+7d\nKnAKsBqI0i46Wo94vHV01+V6nnh8uPSgPXL4fH+hVDqBdPpwoIjd/jYOx3ogSyZTIp0+GmhGRiWi\n0fkAGAzb8XpfxmAokcutBKYA49C0FIXC4RQKwyPNHs/DZLOntiG6zWBCVQuoqu4kMG7c08TjXorF\nbrTM9TATCi3EYAjjcv0BVZ1ENPr5HtsYhM/3EKFQO52uk3i8Jvso4nK9htX6PLlcDoMhQSRy5Yg/\nG2TC4XNwuW5G01LE41d9iLagv38VweC1Td7xkUwurLOAUxHFHTidSzAad1MqhSkUXsZiOQ5BuB9F\nkdA0EU0TkeUskYjADTfcx7e/3VyTLAgCGzdu5Oabb+b666/n4INnoGkamUxp4Pedz+cxGBr9/3WN\n/iCBHrpP/fu9T+ufUBmDoigNGdi1bN4anE4nkyd7WLVqc9dk9+NEvT53aNLGIOoT8sbOnVVRStVI\ndCtrq/3YO/ioz2+9zEGkddR371qc1X4XNTeGseDEoOPTdb23i+yOtPDNh7UzKxahUjEPXBuCIHL9\n9e+TSMzGYpkOnESlcjvw9wDk83Nwua4nmTwYsCLLZSqV2rwbRhQ3oqq16OtJwI2AHh3rhEJhCuPG\nvdEkuhvGYJhAMjmp63FZrUux2T4gHD6CmsQA7GQy8+rs04pYre9ht7+MLOcolTKkUm5KpeMYlADs\nxmh8B1muoKpOMpmvo6qetp/tdj9JoXAchcKUtvsNhcHwNrJsJRbTHSHy+UOwWtfS3/8o4fDhqOq0\nntpzOl+jUDgXSSoQCPyFUOgMun3wqMFieb2a9NfOZaMeJpLJk0kmoa/vz5TLhzBhwuNkMmVSqbOo\nl1Z0BxWf7y6y2RPJ5/sJBJ4inQ6Qz/furyzL68jn59LdvCOiqlNIpQL4/X9Fkg7g2GMl7r77/wzb\n85131vHZz65i9epcy9YEQXfD8fn085/NFgfyJmrzgt/vZ8+ePQOr5JqmsW3bNgKBwEA7gUCA3YMe\nfQ3v95qH0ekZundjuTEATVMHqqGBnuhQT3RrmDTJwZYt8Z7a/rCTbSu0aq/mNVkjurJswGSyNF3m\nGy0XhdEaY+3wcrnUpK3hRu778UlDLYFBrP6rvR6K2rWgVv99uGuj9tvIZDI4HI4xkZwG+yO7NShK\nmUIhh6apCIKA2WzpscKjjmw2S2moT1cL1PIcSiUVTXOyefMWzGYrK1a8w3PPzcHheIx8fipgQ1Em\nMRjnMWOz1RLaBGRZQ1XNQAmj8X9Q1WvqPkUErkaS7ut6DLHYCTgcyxu29fevIhI5t8sW9mC1/h0m\n01oUpR+TyYTRaMXlep/x45/E778bqFULNZHLHUUoNId0uogoijidQWy2v2Cz3YbN9h9YrfeQzc4k\nGLyYUOjMjkTXbn8RVT2EXK7XZfsMbvcaYrFGK6tcbgbB4JdxOhV8vofQK9B1gorffx/p9Dyy2Wmk\nUjMIhT6L1/sOHs+9QLcFZXI4HHFSqVk9jgVkeRWadhDJ5Lns2nUpqdSFeL1vMW7cA1gsz9B+1auG\nBH7/bcRinyGfnwwYCYXORpJc+P33AK3JZTN4vZtIpXohySp+/x2USl5MpjD/9V/fbLrXrFmHMndu\nmjff1IjHm/MnURSIRCIDZLd+DtalSyoul4uJEyeybNkyAJYuXUp/f/+AXSTAKaecwiOPPDLwW7/r\nrrtYuFCPqitKpYexdcY+GdkVBLHBgLzVstjkyQ7efjv0EfduEJ2W6+rdI2AkZX8/Pqiq2lDLvvbk\n1oiPR9O5Hx8XPqzLQ3fXRo3s1kcM9uOjRTPNbk0nqyijIVvQ+OlPb+bQQ8dx1VVf6NCXQZcH/aOd\nvP32Nk49VeDGGzeTz1/EuHFZ0mlTdf+ZSNKLVCo1IjbociCKGuWyCbiRUukHDL9FGtG0K3C7HyeR\nOLvjKEqlcfT1UdUxGunre454/HN0E2cymf4ZQfCTy/0buVxj3kmpdFh1ibqCx7MCUXyWQkHC4VBI\npz2k00eTTjeLOpawWjfjcKxFkspksxrJ5EnAcD2twfAeJpO1K5eAoQgE/tpGKiCQSBwPzMHvf5x8\nXiKTOaHFviX8/iVEo+egqvXWWhLR6AlAjkBgKcWiQDJ5Nu3Oq98/0ippBTyeNclwtDIAACAASURB\nVIRCV9RtcxCN6omCsryLQOA5NC1KNHoEqjrcJ9hkegunc3O1fHOjNDGTOYhMZiqBwPPkcmYymVM7\n9sjleopYrNsHJtCJ7h8pl12o6qEsXtyH19s6yXLePCcvvRTggQde5Morz6turUVu9QThcDhMf39/\n0/m3WCxjtZr40Y9+xHe+8x1+97vfkc1m+fWvfw3A73//e2bMmMEZZ5zB4sWLWbRoEUajkZkzZ3Le\neecNtDGaaEl2x7qtlCwbgRKKora82U2a5OTBB7eQy+WwWrtdthju3bs3MFgLXtvnyv7WO18AmExW\nFKVUraLS6gn3o9N07sdYwEhcHrqTPIii1PCbHyuR3U8b6q0ahz64GwwmZFnumegOrjrB+++n2bkz\ny1VtZI1DXR4URQQcvPvuGp566g2WL9f1oY2pDwfg8TxLOKyT3ULBiR5hNFcThF8HrqZVtr2qTkaS\nJiEIW9G0qR3HFAwuJBBYQjw+A0GY0UWlq3cwGG5BVf8X5XKn9iXSaTd9fQomU4VEwkk+f3ib/Y3k\ncjPIDQQRS9hs63A6X0XTiiSTbvL504AkbvdOwuHPdRzfUDidD5NMLgQ6BW7MhMMXYrFsIRB4mFDo\nBBpdLpL4/UurtmrD7eR0WAmFzkCSovT3P0Q2ayOTOaNJn56pbu/do97v/0u1cEZzKMoEQqELAA2r\n9W1cricpFNLE46cDbjye+1HV8YTDZ7X5FAOh0OmYTDvp77+XSGQ2lUpzn2FZ3ogkTaFc7rZimorX\ne0u1OtkpeL27+Na3FrQ94pJLjueWW15g9erh79UnCM+ZM6fp/JvLlTCZDBxxxBE8/PDDAzaRNT2u\nw9GHzaY/ZF533XVceumlFItFxo8fP3D8aCce75MyBhh8umiH+fMPJxzWeOmlN3poV/+7t4h+bblN\nJ4saoihhNlu7JLqj7QPcG/S+lxuILrSKYAt0XtauLW3vlzx88jEakgf9rySJxONx+vr0RJp2k6Ig\nCFitRux2EyaT3PQ9h8OM3W7CYNg3HjbHIgqFHKqqVh/cLRgMH95BJhw2sXPn8O8kV2VqulwiX43w\ni5jN1mpkVyIaLXPjjZspFqcDupZ3EAL1eTOx2ALs9ocBSCQywBeB5nZgNUSjiwgEVnU5Egu53Axs\ntjeIxU5tu6fB8O8Yja9SLv+sC6ILDsdjOBzbCYUWE42ejyxPwOt9iu6W1QGMZLMz2b37BPbsOY1i\ncRoez2M4HHdQKuXRvVt7wXYMBhPF4uSuj8jnpxMKfRmf7wNcrmerW3fi9z9fJdutiO4gKhUvweDZ\nFIszGDfuIRyOR6mdA1H8AIOhj3x+eo9jAbv9SbLZk2nv41uDQC53JLt3X0I8fhku15s4HL+kUEiR\nSHSqCqejWJxIMHghNluWQOAeYPuQPaJ4PNuJxT7T5QhKuFz/CojE41dTKEznjDPyA3NnKxxwwBRm\nzy6wbt1wu9NagvCOHTuYNGlSU7KraRCP5ygUyhiNRiZPnoLRaKRc1qUJX/jC5zn22KMBvdS7x+Nh\n3LhxqKpKOl0gmy0Oa7MTRlxBbawvDzZ2rXk/58w5nPHjBV5/fROnn95rktrojH2wpLHeXn128t4w\nVd9bGLpEKcsGVLXSITmoWxur/VHfTx9GInnQIYoiqqoOLHe1mqdkWcTptAzUcbdYIJnMUyopGI0y\nTmdjwRmLxUihUCad7kZH2GREo/w7Huura0MhSRJGY2/VKodjcK6IxcwYjcqwPT7/+a9x//1/HOZD\nLggCiqIfv2vXHjZvri07B8nnG8lKOm0HtgJTAS8ul0wm8wSKchnQTcRMIBr9HB7Pg10sJytYrWup\nVI7AaHyDUumYJvskMRp/gKZdQ6k0vIpWM7hcD6NpDmKxwQhgOn0wkuTH73+8WnWr2xVNHarahySl\nicW+BUg4nSux2cKUSlmi0RPR7ddao7//KYLBL/f0mTokIpFFGI276eu7DU2zEA5/nl7vAeVygD17\nFiGKcfr7H6dUSiOKGtHo10fQp62YzQKRSHffRz2s1hUYjQrh8HcRxQR+/2uIYoxYrJ9yubOnbio1\nm1TqCNzu1ZjNr1fLKI/H71/dgxRjC0bjb9G0K4hGTwXA43mLr3+9tfdzPebOdXDbbTkikTA+36DO\ntj5BuJ0bjqZppNMFMpkCtXm+Jn+SJJFCoTxQEng08og62cXus5FdaFzyagaj0cjUqXY2beolSW3v\nECxVVSkU8gNE12g096xnG90yv9AtodeX9vIDRNdoNDXpezfjqI/utYr87o/6fvpQfy20i/rqNdl3\n7NjBrbfeyvTp08nn81itRszmxiVTSRJxu61Iksgrr7zC7bffXj1erpay1MnP888/z3e+8x1uuOEG\nMpkMZrNhWK32bjGWgwOjDd1tYdBmQJYNo0B0G+e4TMZEMtlIUlVV5Z13PiCR0Od0g6FxLqpOUaRS\nuYHooii+QS7XmLWfTh9MX99fB15nMnn0zPpukpdUYCuK4kfTZmI0rmm7byBwN6HQ54lGT8PhCOJ2\n38pgUlUOu/03mEy/olT6V8rl7oiVxbIcQbCQSg1f6q5U3ITDF+P3vwzsHn5wG/T1PU8yWSuoYCKV\nOp7du88nGr0EqzXOuHH34/ffhiS9NexYt3sJsdgiPsw9VJa3IIozEcWD8HgGo7O9QlX7CAZPR5IU\nKpXpjB//Z6zWB4HhD0/NoeD3LyMSWdTjJyv4/Tcjim7C4UWAhKp6CYfPJBj8InAA/f3LCQQeRpbf\n6dCWSCJxFHv2LMZkeh+HYylQRJZfoPV5KWCxPIjX+++YzfdTKv3/pFKnDry7YEGEyZO7kz+cffbh\nFApGli1rXMGoRXaz2Sw2m62jjEyvcqvVaftBUdQBoqtv2/uFgdpGdvcdktG6n1OnutiwoXuyu7dk\nDDX3iNoyX2tT9b2PXsZYr4kTBAGjcbS8f3vVdO6P+n560HpFwGg0smTJkgHjcYvFwimnnMIFF1zA\nyScvIJHQl7hNJl0v+vDDD/ODH/yAs88eTCaqkdn777+fW2+9lWuvvZaVK1fyrW99i1tuuQWr1UA+\n322G997DWF5dG7qqU/M31zSNVCqFyzW8tG130L/zUqlIoeBAEMqoqlotLarnOZTLE3jppdc4//xz\nh81FVct1VHUw4cpqfY9MZugysgGrtYiebJ7BYNCAdsRmI/A6erWp6UAAeIp4PIPP5yISmcBw6UOG\nQODBaoRS1/9Go8cjCHG83gcwGCrkch8gy1PIZK6l+zltG3b7bsLhdquVBsLhC/D5niWVSlAqdV5G\nt1hWU6nMbqEplsjlZpPLzQY0zOb1+HwPAGlisSmUywcjSVbK5XFdjmE4HI4nMRgsRKN6SV1JStDf\n/yjx+HRKpSN6bs/rfZhk8jzK5QCJBIhiFJ/vMQyGDNmsSip1Gs09icHvv71ana37+4worsfnW04o\ndC6t9N7l8lSCwano53AjPt8LqGqCWKwfRTmGxvijgtX6HE5niWTyJLLZKaTTGgbDDjyeezCZKoji\noGOBqkoUCvrcJYpHUihc3NB/o3Erl112YNfjmTNnJoceuoL332/8jQ3lLmN1jhqKtglqYxl6OLx9\nZBdg2jQXTz65k0Qigdvtbr3jAEZPFzv0aeXDL/N9tJpdRVEGSLoo6pWPBKH+Qh/Ni6SbZe1WyUz7\n8cnG4HVfKBS45pprsFgsPP3007z77rs8+eSTPPnkkyxZsoTx46c2RAwOOeQQvv/977Ny5cqBbWaz\nPu3deOON3HjjjUyfPp1zzjmHs846iy1btjB9+nRkWWxoZz8aIQgyBoOef1CPcrnMffct4aqrvjri\ntlVV5Z//+f+jUlkMlHj33Xc57LAZA5+lKONZuvRtLrhg8bBjy2V9jhDFweV7s7lIJjM8WapYFIES\n/f3/STB4ZYvebAXuAw4DjkL32q1vK0ckcjde72NEo5+l5r9rtz+DzaZUl/Qbb7Oa1kc0ehwWyx8x\nGjUsFpXx4x9EVQVEUUMUSxSLOWKxo1HVoZFmlf7+RwkGu6keJhCJLMTrfZNi8Q0ymWbyCR2iuB2b\nzUwkMrurdguFQykU9KiywbANh+NOZHkKFsvD5POL6DURrK/vfhRlKrHYYGS7UnETDH4Oh+Nd3O77\nCYVOp1ZmtxPc7qfJ54+nXB70dFVVL5HIYLEIm20NDsdrSFKZUilfdYU4BIdjC+n06XTjpVyDy/UQ\nsiwTCnVb7EKgUDiYPXsOBkCSXsFu/w8qlRyCoOF0zqZc9hOPzyOX8zYcVy5PJhZrronu63sas/lI\nwuHh7hbz5q3lxBMv6npMgiAwe7ad7dsbf+M1GVmN9O4rCcIdIrv7Clqf7KOOOoB4fDNPP/0yF1/c\n2Spm1HpU9c+t4aOoHjRaqCXRNdPEtcLoDmskmfz1r8f+Od6PkUFVVex2O4cffjhf+cpXSCQSLF26\nlFgsxoEHHjhQqrJQKGOzmTj00ENZuXLlQMlwQdDntmQyiaIoTJ8+vbpd4MADD2Tr1q1Mnz4dUfz4\nr6GxvLomCAIGgxFFUaoWhLXkQYklS+4bMdkVBPjZz/7MnXfmATfg4/e//zn/+Z8/AfQbq6KY2bo1\nPezYn/zkv8nl1gFzqU8lMLQwBYjFDsBu/wbx+DdoTs52Ag8Dl9J6TrECXyGRuAGr9dfY7dORpMlE\no3PIZIZGSBXs9kdxuVKkUluBc0gmj6qrclUPDat1LW73PeRyKonExYCMx3M3kciCNv0Zjmj0aJzO\ndfT1PU883iwLP4fXu7UayewdFstaisWvkk5PQxBCeL0vYzTGyGZLpFJnAO29fH2+O8hmj656zw5H\nOn0E6fQMfL7nUZQEicS5tFNgut3LqFQOI5c7oM2nmshm55JtyL8qYDY/gqZZsNnW4nKtQRRVBEFF\nEJrL6TQN0ulVSNIhGI02xo9fhu6wpFWPUYEKqlqmXC6Sz4tkszOBibjdj2G1ypTLJjKZPjKZy9HJ\nfAFZXovNliIQWE46LZDNzgf624ynhN//GKnUxQNJmY3Ic/bZjibb2+OYY3z88Y/rG7aJotSQILyv\nYB8nu537eNJJxxAIPMqqVdu4+OIuWhwFofRQOxxgRDY8w/tGtW8fqpm2qPeshMYSzG2O2nsdArpP\nZqpt687Caj/2PdSWrf/0pz8xceJEpk2bzsUXX4ooCmSz5YHfhqpqZLNFbDYTiURimPl5uVwetgSu\naRomU82L9SMaUBvsC1NwLYmudr5EUWTz5k0jbm/z5u3ce28GnXwKgJtly6IsX/4Wp59+Au+++w6q\n2kcoFG047te/vo3rr49htU7CYnlrQLur96n5Z5lMO5BlqQkpBZ2k3A1cRuc5RKJSuQ67/U4UpQ8I\nUi5vRycuUWy213A68yiKgWj0ICQpjyBcQCrVziJMIJc7jFzuMCBNf/8ScrkU4KVS6Z1kpFKHYjbb\n8fker+pQaydFxe9/gXD4q12MsxkSGI0GUqlpAGhagGi05suaq5bafZlyOUksdhiqWl8qWMHv/xPx\n+BkoSmvPVx0ykchCBCFFf//T5HIC6fRChpLevr4nKZdnk8n0nlRmMGzCZptENLqwripdO+zG73+c\ndPrbtJItDEcYu/0PQD9ms4FSKUcsNhFVre+vhVTqKFKp2us8NtsmbLZVyHIZVS1TKJTJZgNVjXcZ\nv38t4fB1tEpIPOigl/nSl87sso+DOPfcE/jNbx6r2rfq+nlJEtm5cycTJ+oSkLES2a33/m6GfVbG\nAPXkr/XJttlsTJ9u60m3+2EwtOyvfiMYa8uhzeUQQ0t8Di3BPDbQLOrbivTW/91Pfj8JqC2dRaNR\nvF4vmqa11NfWKmPlcrkBA/WaXtftdpNMJikWiwME94MPPmDcOF1zOJIJvNNk2yv2rYCDfr4EQWDn\nzh0jbu2f/uk/iEaPA6IDbRsMB/CDH7zM+PEBli9fBXiIxyMNx/3P/7yFph1PNgv9/S+Tz7vQk5Fk\nVHX4eRSEXTgcRuBQdGI7lBHfDpxF9/OFvoStF1M4BVneg8WyFEWxkM0eQjarkxCXayVweAeiOxQO\ngsFz8fnuQpZLmM1vUSjM7eF4HYXCREqls/H7H6vqfe34/U8RiXyBkdaXCgQeJRS6tsW7VpLJU6uR\naw2T6X3c7qcRxRTJZA6LJUE4fAm9OEZompNg8DwkKcq4cc+Qz5dJJs9EL8P7EOn0mRSLzXW47SDL\n63C7w4TD3RVqMJnewOncQTj8Fbq9Rmy2ZVitQcLhKwFDlVDr2l23+wVKpRSx2AKGyycsZLNHDIlC\nq0Acm+0xBMEG+Bg37k/ViDLUux9omsCMGSom03n0CofDwfjx/axdu4m5c3XdtCiKA/MvjCXNbntp\nY8srfCws47VDvWa3Ew480M0rr+xq0JmMfn+aL/3rUdLRihTtPc1ufaGIbpPohp7+j8cqqT7aW9+h\nbhLdxvY1vh/DUfvNp9Ppaqng5vvVe+paLBay2WyDNY0sy8ybN497772Xyy+/nKVLlyJJEtOmTRso\nd9k7RldHvi+Q3VarTe1sgO66617OOmshHo9n2DHvvVcrfTvoyCGKLrZs8XHttQ8QCGwFTiKbHfzA\n9es3EI2m0Z0HQgSDR+F0LkWSnqFSWdQQ5dWRwe/fQij0BSQpjMXyAPl8vZaxAFRoLHDQDawkk2fS\n17eCePxY0unGiLHV+i6ieCDxeO/JVlbrS+Ry55LLzcBuX0V//+MEgyfTi64UQFWdhMOXEAg8Sam0\nm0TiS2ha78vbAHb7MtLpM+mOKAsUizMJBmciCBvxeJ5GUWYzYcIrlMtJEgkf5fKJdGsQVal42bPn\nXAQhhcv1JxQlRSRyGa0SztrBYFiD2x0kHD6/q/2dzieRJDvh8HDNeCt4PHdTLk8hHD59yDv12t0S\nHs9riOKuqlSlvT7Z632RYvFYMplpbSPRTucWvve9BQxf9YRu5qujjz6AlSs/GCC7giA05ECNFbLb\nqRstr6yxTnahu8guwPTpbrZuNbJ6dTuLmFqbvcsYBq25dKLb3JprbFwQ9ahZggwWuaCuyEUvDwVj\naWzdWFjVW5vttzfblzCYFKFWZQha02hqrUDELbfcwp133skdd9zBgw8+yK5du7jySj0Z6fvf/z4P\nPfQQJ598Mr/5zW/4l3/5FwRBoFAYWZnK0Z7zxzrX1cfb/AE8WxeGUhSFVaveG3j9xBOrefvt4aWZ\nXnxxFZnMaUAGQVAH2lZVndC9//5U3njDB4gUiwZyuRyapnHllf8EnAL8BFgMbMVgmI7d/jSwg1yu\nPnJYIBB4lVBIz1SvVAK4XENLyt8OnNbTuaihWJyIIByE0bixYbvRuAmr1Us83ntEFlSczgS53AwA\nMpk5BIPfIBDYhN2+YgTtSVQqGpo2DYdjOSOz90pgsajk873JBSyWF/B63yIavYxk8hR27fos4fCX\nUdXZ+HyvMmHCUjyevyEInWy5wGB4i/7+J6lUPkM2+w/Y7WHGj78Pj+fPwJau+mO1voTLle2a6Pb1\n3YuqTiIen9/V/gA+321ks4eTTnc6V0ZisZOIRC7C53sft7tVcZAUfv8SEomTyWSmdfz8E05QOPDA\nKXVberP3nD9/Ehs2DFrYiaJIOBzG5/M1WIp93OjE2dpEdvcFC97u7gYLFszi5z/fxLPPruSoo7rx\nUewelUploBpac2uu0b9jfdiLq/4hYV8tctEdWltYNWK/vdm+guG2NzBcyw2lUgWLBa6++mquvvrq\nuu0l5s/XrY0mT57MX//6VxKJBE6nE0mSqFRUstmR2Y6NdoRjXwg41DB06NFoBLtdJ6k//vGf2bEj\ny+23zwQgFiuxfPk6Tj11kFBWKhWeemoLxeIxwOMNq0TFohVdklBL7gFV9fPlL/+QYnEqGzbYgf+n\n2tIiYAXR6MFYLHdisTxGNlu70UcJBN4mFPoS9be+QmECurVYrWCCQK/FGOoRix1NIPAAoVAGsCMI\ne3C5KoTDJ4+oPZfrCSKRocvrBkKhL2A2b6yW2p0H+JodPgxe7yPk83PJ5SYhSTH6++8kEjmuZXna\nZggEHicUuqb7QQBu930IQh+RyPBE8UplEpHIpOorFZNpPU7nCgyGLLlclkTiKGAqsvwafX3bkGU7\n8fgB7Nkz6EqRycwmk5mNbtm1HqfzXUSxSKFQJJWagKIczWC0VMXjWYKiHEkkcmQXvVfo6/sD2exB\nlEoJRPEZRFFBEEBVZSoVBzAOvSDJ4LXl9d5FKnU0pVIvlmwykcipyHKMQOAxQqGjAd1Kz2BYj9u9\nqUrOO1uACkKK88+fjh786eb+B0PvmwsWzOOOO+4HGmVkc+bMqX7G2JinOk2/+7Rmtx7tls2OPvpI\npky5m3Xrok3fb0R3kV1N01CU8oAdTnNrrtFFfS360YCmqQPLtUajCVnuVMu8E8b6RdMs0a2dw8N+\nycNYg66DH/yO9N/98ImuVFLIZIpYLLXkSg1RFDEajXzpS5cDUC5XkCQRu10nuvl8iWy2NGLSOtoR\njn2B7Laak7ZtCzN16jQANm1S2LRJRVGUaqKuk/Xrdc1t/Ty6dq1IuexHlpNVna3edj4/EXiN2g1f\nR4DXX99IMulBtwWrv/FfCfySYnE+NtuLwGXY7a9htZoJhS5n6IJmInEc48b9jT17DkJ3XxhJ9LUR\nodB59PffSTB4ND7f9hE7HYCCxWIhmWxOlgqFgygUvoXP9xCKsppEYmHT/XSo+Hz3k0qdMkC+KhUP\nweCFuN2rkOVXiUQWo7tgtIbb/QiJxPl0r/NV8fluJpc7roNDQg0ixeIMwuFpWCxPYLdruFwvoaqv\nI8tZSiU74fAR6OSyGWRyuZnkcjOrrzUEIYTdvhKzOYeqbqVcLiPL47FY3sPheI/Be4IECGiagKqK\nqKpAuSxQLL5BsXg64EUQzKiqCVWtjV9BEAqYzRGMxvWYTGVkuUg2u5ZiUWhRMa8zFMVDKHQxPt8K\nCoXtCEIFo1EmHO4+0WzWrB189rO1h5JuE70bgz8mk5Fx4zzoc6j+O0skEvT19Q3Mv+2gl2U3YDDo\n56tUUsjnSwPzpdlswGiUBvatoVhUelplG3Fkd6yw9Xboto+SJHHwwX2sXRvpuG83TfYSER0Nd4fR\nRr0Z/OgVihj710sjPmzU99OIj/8aFgSBUqnUlWtCPl8alrwmSTpZLhTKo55FPPqR3X1hdW04/H4/\n27YNSgOy2QqbNk3k+edfY+HCEyiVIBoVGpxfVFVlwwYZ8GAyFSgULAyS3YMwmZZQLNaTXQNmswlN\ne45UamjU8wBkWUSS1pHJ7Ka//2Xi8RPJZIbrOS2WZbjd28jlcsBP0SubTcNkeo1i8Vx69YsdhEw4\nfBZ2+/8QDv+Ekc4dfX0Ps2fP5R32EolELsBg2E1//31EoxNRlKFFJPbg968gEjkHTRuu800k5gBH\n4PG8giSFCYdPBIYTU4PhHQRhKqVSc5uw4Ujh999GLPbZrl0kLJZncbt3USw6icWOIJ8fSr6L2Gzr\ncTjWIAh50mnIZE6iNUkX0LR+MpkyVuvrlMtHk04fSXq4e10TqPj995JK/T2VSmsNt6ZBPq//AzAa\nV2OzBUgm51RLLr9NoZAhHv8Mva0aCEQiJ+Ny/QGoEI12uhYa+37aaZ4W80izRG9odf878ED9t6Np\nGqqqcvHFFzN16tTO0VRZr2RZz40MBgmLxUgikcNolLHbTU2PNRplBAHy+e4Ib6f5fJ9NUBuemNKe\njBx6qIcVK1Js2fIB06dPa9Ny++jpUMeC0YmIfnRQFKXBCN5stnzoaPQY4vEfAt089X4iBjoK+Djm\nhsFs/0wmg83WrdVPI0aWeNYdRps87wPxhqYP80ajiVhs0GM8lVLQNA8rVmxl4cITKBYFCgWNQiE3\ncNymTTvYvv0QwILBIFIs1s/nfqzWCsVi42cHg3ORpDuAC4f1y2C4klLpbjTtdFR1BaVSI1Gx2R7D\n6dxDLDaV3btrdlj5ajGRKygWY/T3P0ypFCEer7fq6hYqHs+j5PNn4XQ+SyrVu+0T5JDlAN0WUiiX\nxxMMfgOX62WMxkeqhQWc9PU9jij6qs4H7S4qmVjsREDFbn8Xh2MlpVKeePxgVHUeEMPt3kk4fGmH\nnhSAdZhMK5Ck9xCEI+nvX4YgGNA0GU0TByL3mqYhiiqiqFEqbaZYzCAIMtHoNEqlOTQnhiay2Vl1\n7gQ5nM73sNkSqGqeVMpCPr8A/UFFxWJ5Hrc7TzY7tVr0odvvUie6sdhFVCrtvYIbkcPt3jBQYCKV\nOrFqI1bA630eUdxelbR0kwCp4vPdRSp1JKKo4fM9SCTSTUER6O/fwNe+9rku+9w++HPuufqKgdFo\n5O233+bOO+/kqKOOYuHChUyYMBFJEhuitTW4XBYEQWDFihXceOONyLLMddddxzHHHIPDYR7Y73e/\n+x3r169HqWaTHnrooXz3u9/FaJT3PtndFyK7wECJyk62P3PnTuWGG8I88siL/P3fT2vTnv63GYEb\n7lhgHgjrj3UMdYsAfQyjI7v4pJHAbp96axhMphl+/H6MJvQEsgIWi6W6pfMy2keF0Se7Y2RgLdDq\nIVeSZFKpwQfqTEZ/wNiyRZ87i0VIp2sSFF3+9fzzWyiX9XK9BoOZoRIik6mZY8DTqOqVwPDSxPn8\nsYwb91f27JEIh0/A778HSRrMRo9Gp7J7d+Pystv9PonE/1t95SEY/AqSFGTcuL8QjU6gXO7eRcHv\nv51odBGq6sTrXYXZ/CqFwnFdHw/g8z1GOPy1no4BSCbnA1Ox2/8NTSsSj19BowSkE8Q6/auKwbAD\nl+shyuUtGAyHMnHiHdVgj/796NepiKrKKIpEsWhEUTZjNB5AIvFVcrnO13Ff3xLgaNLp49C/owhu\n93tYLHEUJUk8PglFmdPiaCup1DF1vrRRHI4/IggqlUqWYvEEdu8+q4fx6/D5RkJ0IRC4h1Doiibv\nmIlGFwEKXu9zaNorxGJn05p8l/D77yQaPQZV1Um/qsr4/Q8QDl/QsR+nEV//tQAAIABJREFUnGIY\n5njSPRqDP5MnTwY0ZFnmlVde4YknnuCJJ57g5z//OYcffjgXXXQRX/jCF0kk8oOjNRsQRZHVq1fz\nwx/+kF/84hdUKhW+/e1vc++999Lf3z8wZ27dupVZs2Zx7LHHIooi06ZNA3oLTnyIBLWxPdEOR/uB\nLlp0Mv39z/D++52lDMNaHqbPlar63M7naDRlDCNta2ihCFk2VEnv6H7HH4/12EeB/VrfsQJBEBq8\ncVslqH0c+DQmqDWbk+x2N6GQzjxKpdLAcvGWLXlKpSLFokYuJzZUZty0ScNiuQ+7/RVE0YEg5Kn/\n7UjScEIL69G0JU37ZTY/QSLxInrSlpNwuBVRGoTNNp5EonGJv1LpZ8+e/43b/Tyy/ACRyHm016qq\n+Hx3EI+fiqrqEdlodA5+/8uo6juUSt0mSEfQtAMAc8c9dYSx2R7Fbk8jSTKZjItUSve/9XpfRRRf\nJByeT+/WXCLlshtJShCPf6Np2eVGqHi996CqC0gkukt48/nuJJM5nkJhWnWLAPhJJBaQSABomEyb\n8HpfpFKJEokcR/NqYhF8vhcQRTvx+NmUy+MBDaNxG37/YxgMRdJplXT6NDpVdfP7/0Yi8dmeia7d\n/iTp9Kk0lpQeCplo9PRqgYyHiMUOqBaHqEcOv/9uwuHjqZfSlEoukskZ+HwPE4m0dpCwWHZz+eVH\n99T31hiM9lYqFa6++momT57M0qVLWb58OWvWrGHNmjUcddRRTJgwTT9CEAYit7fffjv/+I//yPz5\nuoPFueeey6OPPspVV101MMclq2UEH3nkEVwuFwcdpCeL9hJA+ERrdqExstsONpuNww5zdUF2G8P4\nI6soNnbQrFCEIAgNEd6RY984B6OLZjKXZmSrfYbrfowc9WR3LGG0ye6+MscMhcPhIRLRi/jEYjEy\nGT0qtXVrjC9+8Tfk85soFA5usGfcsgX6+tawa9ciLJYb0JPO6sc/VGe6g0F7weHweB5i167LkKS7\nqVS+1EWvM22TpxKJBdXl+FuJxVpFeRX8/tuJxRYO06eGw/Px+18hnS5QKMzr2Jv+/mUEg9e12SOH\n0XgHorgKUfQhil6MRi+Vip9KRcNqVXE4XkdR0mSzkMkswuncgM22sqpxPZ1uiLQsr8Pj2VJN7OuU\nkJYiEHiQaPRzXetzvd6/VBPmmlWxq0GgWDyIYPAgQMHleg2L5S0ikSkoyuFAEr//KRRlYtXpodEN\nqVSaSjg8tfq6gNP5LnZ7knI5Szx+AIpyDPXRVa/3QVKpsyiX/V2NYRAJzGaFSKSbJDyqBTIup6/v\nRTTtWRKJz1TfSeL331+VoQw/56WSm2x2Gn19zxCPN09IPP74FPPmja7zFOh8wmAwsGHDBn77299S\nKpV48cUXicfjHHLIoYiiiCQ1Rqo3bNjAt7/97YHXkyZNYsuWRmu4cDjM448/zjXXXMOaNWv47ne/\ny0033YTJZCCX684dZ8RkFwaJ5L6Bzv087DAft922la1btzF16pSm+9TLGIaW/R2bFcVao1WhCFWt\nVPcYre92X7lG9gaEun/dZ7gOHrsfvUB/UNOz+ge3fYwdqsOnLbLbymfX7faRSiUACAYj5PO6vtps\nNrBqlQ2LJUK5fOiAg84Pf/h/WLdOIpmcBlgoFo9EklLU/z7K5aHaza20ttrKkc8LgFSNjqbopHt1\nu9cRj3+hw3jdBIP/G5drOUbjEsLhsxkkjNvw+58lHD6HVglI4fDxeDxrMJsfJJForbs0GN6lUDiW\n4dZSQfr67sdsFkmn30UUTyaV+hmdSWiSvr7XMJujJBIO8vlpOBz3YrEIlMsmkslDUNVZNC6nh/D5\nXqRSmUEodEmH9muFGTYQCn21i/7ocLkeJZ+f24HoDoVMMnkCyeQJ2GxrsNtvRNNMhMPdVoEz15Xi\n1TAYduL3P4Es50mnZSSpQi63YEgyZHcIBB5sIV9oj3j8RCyWLfh8DxGJnIjf/3A1QbC1xDCf92M0\n5rBY3iSfb4zgCkKKiy46sOd+dIPaw+kjjzzCddddh8Fg5MQTT0FRVCoVDYNBZNOmTWzcuAlJEpk7\ndy6CIDQkxZfL5QFbwhoWL17M5z73ObxeL+eccw7HH3/8sHm+EzpFgdsKNsfKTaQ9uu/kCSccRC5n\n5YEHlndsT9NUCoX8gK7MbLaOkOiOrl1YN+hcKGL0v9h941rZ26gnvvuLWuwt9DoJflT4tGl2oXmO\nQ1+fl3w+iaZphMMJQI/CT5rkYPp0kVLJiKKY2b59OwDLl79LPh8dWMZW1VNQlK3U356KRQe6UwLo\nvxkXrbLvLZY/Eo9PrrY1D3i+4zhstvFAd0mPyeQphMP/QH//Kuz2R/B47sLrXU84fCGdMu1jscPJ\n5Q6jv/92ZHl4YQ0Ar3cjyeTx1Ve76Ou7kQkT/oDL9SLx+AIqlSS53D+SSi2iO4LnIh4/g3zegcVS\nwOF4g0qlSCp1IODC4ViPzfYHbLbrq/9+jtV6B4lEgHjcjZ5w1hoOxzM4HJkeCKdO6CXJQS43clJm\nsaykXD4fVT2JQOAJ9Ap6vUCgXJ5EOHwyu3efiSBU0DQTbvdreDy3oXsvdwerdTnZbPNIbDfI56cT\nj5+AzXZjVW7SOZcmmZyKzRZm6LiPOmo7F1546oj60S1qc7CmgaKoDRZh77zzDitWrGDTpk3kcjkm\nTZrEpk2bBt5ft24dEyc2ymmuueaagfLDaquymB3Q6bCOkd2xfBOuT0rrJqpy5pknM3nyU7zzztCK\nOfVtNrZTrysbCdolvPXeVmfN7ie/UMS+hJH5GjYeux9DUV/2eywtPI1wjm6Lsb+6Nvxh3mazUyqF\nKJWKpNNZavrFiRPNGI0CO3ceBoR58823mTp1Kjt2JLBYZpJK6ZFMSXqMSsXX0GY2eyCwBDgEeBeY\nik7CdgCTqIfNtoV8vraULFdXs9qNIUMud1C7HeoQAq7HbF5PqeRCkmYiy2YKhTh6ieH6W+qjQBnI\nA6cD+rJ4qeQnGDwfm20DgcC9KEqJbNZEsejBZHqTbNbH+PE3AgayWR/x+FnE40agVE1+uor2mtCh\nUPH7byGZ/Aylkh6xFMUofv9zpNMSudwZTY5RgCQm0y4MhrUYjQqSpCFJIAgq+s9PJZ3ejCS5kWUv\nbvcfKZet1SIeM2ltBabQ17eKUGik3sMqfv+fiMXOHJBLpNOH0df3KqK4kmj0dHq1jLPbX0UUZ5BM\nHl6N+lawWt/D6XwbVc0Sj0+lXD6J5iRUwW4PEgqdOsLxAETweJ4nGv0afv9jXRPeSORI/P4XCIcv\nru5f4IILJu1128LBugaDCcLFYhmTSeaCCy7gggsGE+gWLVrETTfdxOzZs9m4cSPPPvss3/ve9xra\n+8UvfsE111yD2+3mhhtuYN68eciyjKJU6BadSHIHstv153yM6L6TJpOJWbP6ePfdcNMiFHpEdNDf\nZl/T5+pliwsDX/pHZYs2lkoGjl305mu4X+vbHIIgUC6XMRgMDdvGAkYakWiHsZ702exh3mCQqVRU\nKhWFbLZIbal/wgQzLpfIihUWwMaKFeu56CIoFMzIcmzgeEnyUal8F0H4NzTt9wAoynTs9hiZDOhR\n3RQ6yX2NoWTXYBh6gzwMWI9OlIfD7V5LPN6eeJlMv0IU16MosyiXF1EoXIiihHC7NyCKZTKZWfT3\nvw7EicUClMs7gUPRCa4KvFr9/6AjQzZ7MNnswdVXOURxDbJ8LMnkyaTTw8lKIPC36jJ5b3O6z3cb\nsdg5DTpaVfUSDH4Oi2ULgcCzhEIzaSzSIANeikXvMMs3HQp+/1Pkcl9GUerlJHkEIYLN9iZmcw6j\nsYwglCkWi2QyLgqF0/B6lxAKdXYTaAW//1ai0bMHEgB1iNUSvkcSCDxNOu0gn++sjQawWFZjMLiJ\nxw+v2yqRy80il9N1rwbDDvz+h5HlHKmUiWz2HGrXtcdzz4caDyTw+/9GOHwuIBKLnY3P9wSRyAld\nHCsQjR6D1/sI0ehijjhiI1/9am+V7XpB87lW31YqVQa8c0GXYVksRs477zx27drFeeedh8fj4Ve/\n+hVut5unnnqKP//5z9x6661MnTqVxYsXUyqVmDVrFv/+7/8OdO+xC/rKWrviYm3J7ljXjEFvkV0A\nsznJxo0Sb731DkcfPXtge6VSoVQqNLRjMIzUULyhh9W/e/eOVa8v7tYWbSzfRD/5aO9rOIihUd/9\nX1q7Ce3jRKfJdiQYy6tr+spa4/WrKMoAQdddbDR0cqYxaZKJmTMncPPNbwEHsGOHvrRZqYyjWKyv\nbukFJiJJElXbTcCG3e4kk1GAA4G16OTsHeCihn6JYuNDh6pOR5b/gqI0J7s222QSiVbygwpm86UI\nwnnk84sb3lGU6UQi09E9dV9BUdJEo5/HYFiNwbCjLsFJBOajE+5HgaFFMADy+HxpQqHmfrwu11LS\n6dMBS9P3W8Fme4Z8fm7LhLF8fjr5/DS83uWo6nPE46d20WoSv//VqmxhaJKbBU2bTCYzufpgUo84\ndvtfqFSMjBu3lHRaI5s9k+HJh63h9f6FROK0IUS3HlZCocXYbJurZZQX0E6vbTCsx2rViEbbE2Nd\n7lB7qEri8SzDbE6RTsdQlPE9jaERKfz+uwiHz6MWya1UXKRSp+HxvEAsdmzHFlTViqIEMBpXcskl\nB3zkEq/66U5RVBSl1PDa4TBz7bXXcu211zYcN3fusTgcutvFpZdeyiWXXEKpVMJq1X+LpVJvFdSg\n/b1hnye7vUa8zj//OB599AUef/y1AbKrKGVKJf3xVV/yGr0IzWjKGFoR56H971S2ePBaGL2baDye\n5Prrn+O00yYxf/4RY5KMjG30am9W//rTda7rZQwwtlagRp/sjlpTexU1+ZSilJFlEbPZSalUplzW\n0G/iMWbPnsy8ebMRhCXAdHbteh1FUahUPChKotpSFE2bWm3zeGAnNbssWfYDq4GfAe+jk+jcsL4M\nn78FBKEWYR06L0ZIp4dWG6uhgMl0KeXyd6qyilYQicVOQBQT9Pf/hXI5TSx2epP9DkEUdyKKt6Eo\njmpfKghCCKs1Tih0GboueWiQJYbRKFcT+HpBCZstRCg0v8N+AtHoAmQ5Qn//YwSDM2jlyyuKO/B6\nP6gWlujVY74Pm81OMFjzDk7hdr+G1RqhUEgRiy1o+bkADsdTFIuHdeWSkM0eQDY7FZ/vWQoFhUzm\n5CZj2YbbHeup/K4OF7GY3l4gcD+53HTGj3+k6gd8EIrSrZ9yAb//jirRbTyXpVKAcnkODsca0unD\nmx9eh2RyGocc8gpXXfWNHsfy4dApyFgolFGUCjabiUpFxWiUKZX0J1iPx8ns2XrkXFEqVZIuUKmo\n1eqXvTtGtetOF5rdfQPdRnYvvPAC/umf7mH1am9LfWs+nx1ocyyfg6GFIrrXF4/umB5//E3+7d+S\nrF17OX/4wwfMmvUcJ5ygcMUVs5k0qfes1v0YadR36PGfTIxlHetod2usBxzq55raPGQymTCbPYRC\nUcplnXgaDEmmTJmL2WzmiCNOYtmyuSQSv+Sll1ZRqRgQhJq+czuKolswVSoXYDBcQ7l8OwClUh+6\nTtfPIGnVP9NieYC+vrWAjWx2A4FAlFCoJiMARTkOo/EuSqXGcqt+/y7C4f/VZGQ5HI7L0bQvUyy2\nI7qDUFU3weBlOBy/wWDYTrk8rck+E1HVxuQcTYNsNofBEMVqfQizuYIkKaiqSjZrwGBIEw63syFr\nDo/nr4RC3RdTUBQfweAVeL3LUZQXSSZPbHjfYFiH252vJuL1fl06nUuJxeqj2k4SidOrXrplnM5X\nsdneJJfLkUyeR2Oy33aMxjLRaLfaagCJSOQMzObtVaeEU4BahDuI17uZcLi1V20nWK0vkE6fQT5/\ncDWKrWEwbMLvfwqDIUkqpZLJLKJZ0RO9YMTNVelCcxqWTh+I1xtEEPagaeOa7lODwZDim988B0ka\ne0WuFEUlmawVmxjUxOgSp8G/o4F294UO8e6xPdE2LqN1D48nx9tvx4lGwwMh872nbx09GUN9lHgs\n+P8WCgV++MPHuf/+E8hm9RtUqXQAb755AG++qXHbba9yzDHPsGABfOlLx2O1jqzE637Uk99Wqw6f\njqIWmqZhMpkoNhcSfuz4tNmP1eYfHbp8ymw24fF42LYtVJUxgN1eoK9PJxqzZwssWyajqiovvLAH\nUSxgtY4jmwWLJU4+XysYYEaSplCuBniSSRtw5JAeaAQCPyGb/Qy7dn0d2IbNto1k8kD6+tYiSWuJ\nROajaU5E0UxjdFdBEA5ieISygNV6MRbL8YRCraK+zWE2v0ih8Pe4XGvIZteSz8/o8kgr5bKVZHIy\nVX99ACRpLRaLzLhxjyKKOdJpSKcX0akoAuQRRSvdOkwMQo/yGo27CASeIBQ6DnBitb6LxWIYQRS0\nhhJms5lUqpXNmIFU6qRqclgWj+d5jMbdRKPTKZfnEgg8TSh08Yg+uVCYTKHwRfz+5ygUyqTTM/D5\nVhMOf46Rz48l7PYiodDBddsEyuWDCIdrhDyDy/UqVmsYRUkRj09BUU4CwO+/iXD4M+iODwq67nz4\ndxqNzicQeIBQKEC7hLXPfCbLRRc1W00YLQzWHYD6gMPI56e9Ea9o12bblL29nNA3yuj+zH31q+eT\nSBR58MFlCIKA2WwZQnQ/eruwXqBpGoVCfuBGYzKZP3LHhfvvf4azzvord9xxOdlss0o5AqnU8Tz7\n7Of5yU8Ws2DBGq677kkeeuiVITfI/RgZerE30+r+7fswGo2USroubKwtvIz2BD6WV5YqlTKl0qAt\nldlsRpIkjEYDXq+bHTsiVRkDWK1FHA695O9ZZ01Bkj5AUTRWrlSQJAFZ1kmZwZBjMPoGlcqlyPKP\nAbDb1wGNiUCyvJFQ6O/IZmsV0taQyznRE5ZmEonMJxB4EV0ecRIWy30Dx/b1vUModOGQURUIBL5P\nsVgkHF7U8znp64tTLk8lEjkHq3UaNtuantuoRyCQJJO5hD17zmTXrgtIp8/E5VrFxIn34vXehu43\nPBxu99+IRBaM+HNLpQmEQl/G79+M3f4AZrODaHS4FKBbeL2PEAqd1+XeNmKxc9iz52okaRxO5+/I\nZkF3uxgpJMLhhRSLE7DZ7iISOY0PQ9Q8nke6SEqzk0wuZPfuL1bLPs/A612Gw/FLcrky8N/AacDl\n6M4Va4DgkDYEwuEz8flea/kpEyfu5Mc/Hnod711IkjQm7+Pt7B87+OyO3Ym2hkE7rs771pb9v/zl\nz2O3B3njjR1V/9nGJ/vRtQsbvbbqPYA1Ta0S9ZH6/44M5XKZH/3oAb797QA7dx7A+PHXY7ffiP50\n2gpmdu48myVLLuPrXz+WM85YwZVX3sDrr7/3UXX7E4xmvr5Df7f1ZHdf9fWtRRZGX1c/mhhtr92x\nHZlvvH3U8gSMRhmHw0AyWR6I7Nps0sBcffzxs5k3703yeZWXX7ZjMAiIoql6rJH6SGu5fDiSlMZq\n/S2KsgB9nvkZ8BJm8zJ8vij1GlebbT2aVr9sbCEUWojf/wGalgMcwCYMhm1I0ok0LjFnCAS+Tyh0\nFIIgD2kH9GS4Thgk6tHoaZhMM7Db3+3iuOEwm9eQSg3Vf1pJJuezc+d5RKMXYbdvZ/z4v+Lx3A7U\nqoOqmExGOnn+doZMoWBFln2IYi0CORKE0bQDR9SfYlFGlk8ln7+cQOA1PJ4HgGGZb10iiMu1jmz2\nH/D53sTlWjqiVkRxM5o2k96S0gQUZRqCECSTuQhFMfGd75zLiSfez4QJf8Js3ojuGmJHv84G5xFN\ns1Euz8Jo3DysVZMpwTe/eQjTp08e0Vh6RS2yWyO7Y40ijljGMNaX0BrH1f4mU6/PFQQBn6/AqlWt\n/XZHD6MTJdY0bUBbDHqhiFrp3w/bbrdtvPHGOn70o/d4+eULqGUFJ5MgCEH8/tsRhCCx2HwU5dQ2\nn2cgFnuHzZu/xLJlMHv2s8yfr3DZZYczdWqvddv3oxEjsTfb17S+nzYZw6g2N6oQBL1YTbGYr9oP\n6nOJ0Shjs0mkUpWB/ttsUt1xAv/8zzO4554zeOCB24GJCIJOdmV5uNtAqfQjXK6bSSQWArcAuxHF\nqaxb90uuvvpX7NnzW+A6wIXJlCCbHapvFAiHj8frfY9icSI22/tI0jlEIoORRkFYi99/E6HQPFyu\nVSSTQ6UNb6DbnB1Kaw/XrSSTjZU5Y7GT6OuTcDjeIZ3urXxrX1+e3bsPbrOHTCZzNJnM0UAJl+t1\nrNYgyeRWotHOVc86welciig6SSTOBXIEAvcTjx9Oudw5YaoegcALhELNdNHdHPs8weDfAUJVxlDA\n630aQdhKJHISNU12J4jiB3i9qwiHFwMCkcgpGI176O//C8HgyQy1r2sHv/9tgsHex+Pz3Uo8vhCD\n4XZuuukKzjij0Wlh1arV3Hzzm7z3XoJyeSObN5+BpumEOpmcQX//BoJBhRptE4Qcl18ucMUVZzMY\nwPho5Gu1Odhi+bAPVKOLdvPvpyKyq6pqddlfJ4tGo5nvfe9rbN26hxdffL1Zq9W/YyP6VZ/pXMOH\nIbq9HqcoCv/6rw/xxS+WePnlSxlqf6Np/YTDVxIKfQ9ZtjJ+/H/h8fwC2NWwn9n8BH7/HYRCP6RU\nOphS6WDeeOPz/P73l3LmmQUuu+xpbrhhKYlEgv0YDXzyor7NIrtjKVdttMnuWJ+Dm5nXGwwGbDaZ\ndFoZsA6rJ7sAp5wyixtu+BYORxBBENE0nUBK0lArK9A0D8Xi+Xg8p2Cz5TCZwohiHy6Xk2nT3Ohu\nDf8NlDEYWp//aHQmsuzBYOinUnkMq/UfMJn+TCDwE7zee6v6VAmLpY/hS+ZbgZ8DD7Vs3+1+jVxu\nzrDt8fh8ZHkWDkc3kWEdFsvbxOPHd95xAEaSyRPZvfsibLbx9PVtxO+/B0FY30Mbg3C5HgPcJBIz\nq1ushEKfxWbL4vX+jda5A42Q5bUUCkfTu3MDOJ33Eo+fQ+OcZSYaPY9I5H/R1xcmEHgA3bGjNczm\nldUKd2c3tFUqjSMYvIC+vs14vffSTeTa5XqCWGwxvZJJr/cOksnFmEw/5aabLh9GdAHmzDmSG274\nJs8++2OWL/8l3/temnHjBr+/UOg0PJ43AD2i+9WvlvjpT68a0srela/V5rfBOXhszU8fguyOel/2\nIpoPUlEUCoVcw7K/LMtc9H/ZO/MwKcpz7f+qet9nerp7hlUQQTZlh4hsKqCIouKC23Eh7slRE7PH\nfMk5STTGxMQdt5jlKEYDagRUQAEVN1Rc0Cjigogz0+v0vtXy/VHd090zPTM9MBgw3tc118xUV71d\n1V311FP3+zz3vfgEHI4Uq1e/3mmb/amMQTOKSFewuoIgfmk3wddf385JJ/2T3/9+IcFgTyLdApnM\nFJqbryAc/g4u1xb69bsJq/V26uquw2SyEghcSWdRdIF4fBobN57Jddedzpw5n3Lxxet54IFNZDLd\nW1V+jVpRnuzuiZXx/pFRahqu+69Kyn9ag5qGSnLAaNThdOqJxXLkclrS2DHZLWLKlJlYLG5kWUt2\nBaH6ZKOiWPn973/O7t0X4XL1b3+vWbNGoxlMDAKWoddX//z1+kcBaGsbQjbbRDJ5EKmUkWy2Bb9/\nFMHgoYCAw7GVQGAWWowqT+jq0EogTF1+CloDbnXWNxI5Ap1uHE7n211uXw6XK08mM7SmdSuxi2x2\nHIHAqQQCl2O1GunXbw1O52OUd8J3h/r6J1CUJmKxzs11bW3jCIfn0Nj4DwyGno+loWFHlVKMWtCG\n0agjl+tqtk9PJDIXv/8yXK40jY2PIwidp/ldrvVYLHkCgTlUj3cCkchUQqGj8PmewG5f380+fY5e\n30g+31WTXXU0NDxIIjEDm+0X3H3395k/v+fPQxAErrxyMStWHM0ZZ3zIQQe9gyhGAIEJEz7it789\nmF//+hIEQceXSWSUu7gKgrDf5YjdVbcd0GoMGqrvY2dZLh1GYyUbOniwwIsvVnvy7Utmd8/H6mgU\nYTCYCg0h+z7xyOfz/Pznj/KPf7xFIHAOve/qNRKNLiIa3Y7b/QCqOhiT6UVSqQT5fDVR9SIM+P1z\nWb0aVq9OcuutGxg9ejvz5zdx+unH7JfSKgcmqun6Qudzq9q59u+LC6q6/zZHQN9bBu+vSX05SiYS\n2v9Go566OjfB4Mc4nZqygt1e/bpdsGAyr732Mbmc9gCsqtWTyZkz3+CUU04FwFS2yoQJh6GVGPgA\nI5L0HppVbSX0+uZ2ltlk2k06fRRaYvowWqIMIGG1uojHPWhGBGGgKDtWfNOuZcgUpSt7XA1tbdOw\n2d7E4dhAPH5Ul+s5HFsIh7t+vTt4PJsJBovi/QLJ5GSSyclAFI9nI6LYTDh8KJJUvaTC7f4H2ewI\nkskhXb6HqjpobT0Jl2sbBsNygsGTqFaPa7O9QCw2Z4+Ow+t9mEDgwhrWFIlGZxGNzsTpfBmLZRWh\n0HAkaSgezwpSqSmkUoN7HgY7fv8CjMZmmppWEI02kU6XS68peL2vEghc3qvjaGh4kEzGisv1FnPn\nnszRR8/q1fZDhw7ij388j3w+z+eff4bVOpPGxia6Lj+rtXytfLvaY0zHmt39D1/RMgZNeqz4d3lB\nt0o2m2lPdA0GY6dEF+BPf7qJDz98j+XL/97l+P8uSFKeTEarhRNFEbPZss/9rot48cV3OfHEVdxx\nx2n4/Tdis8Xp3/9WnM5b0HQua4PLdT8NDW8QDv8PkchFtLb+CFEcTFPTnTQ0/BpNGL472AiHo2zZ\n0sg118xj7twX+OEP1/Lcc2/utzqrByZqZX2L6Mj6fo0S+rqMoU+H20eofKA3GPQMGNBAJBIlm9Wy\n/66Y3eOPPwJJSpHLmYFcezlDOYzGnVx8cSlhMZtL5+eAAQPQ64sannWYzSImU7TTGKpacnWyWs1o\nzl8igjAdnU5rVPJ4XqO1tSit5aayM76Y7BathztiR6d63Y5wu5efbzOxAAAgAElEQVQjy8NQFB9W\n60NdrKU5SOVye6JPriCKXqqXDLgIBk/C778Ug8FNU9PT1NWtAOLt23o8fyOZPKzbRLcc0ehYgsET\n8Ho34HI9QSUTLmGzpUmne6OLq8FofJlsdgq9s0UWiMWOoLX1YkymXdjtdxCNDqgx0S0hl+tHS8tC\nFMVHU9Oj2O2r0T6bxwiFzqI3iaHL9Udk2Y8gjEdVx3DNNXv2AANaadDQoUNpbGzseeWaytdgb1jf\n/XV2bS9MJfp6V/YFKneynA0Frba1K7WCQYMG4vGYufXWhzjrrCWlEduH7NsbVy0nSHdGEaq6bzvQ\n0+k0P//5Gh55ZHSFV3wiMYtEYhYQxuv9OzpdM8HgdCSpq6fUNny+W4jFlhCNVk6FZbNjaWkZC8jY\n7RtwONaRTudoa7sIbaqwCAmP53rS6eMJhSYB8MEHp/LBB7B8+U5Gj97ItGk5Fi8ewrhx3TVxfI3e\no+MTf1eBsFqj274PGv9JphL7++xaJeGg/Z49ezbJZJJ0upTs2u3VY7DL5cLnq2fHjiZgO5LUOcGZ\nPn0rxx5bsgQ2m0vvJYoiBoPQztr6fKOZPDnJihVOSp+dhCCUaoHL/1bVwRgMGYzGB4jHl1LqsK+n\npG4gUepTmAL8Eqi0Hq6vf5NI5GK6hoRenyaTGQWMwm4343A8TDx+RsVaPt9LtLaWG188iJaM+IDu\nNW6t1vWEQnO6XQcE0ulxpNPjgBRu93MYDJ+STG4jHL4QRaluK9w1jAQCc9HpwjQ2/pNk0koiMR+3\n+5/4/f/Vy7EAFOrr36e19YI92DaDx/Nn8vmhRKPHYrFsx+N5irY2O+n0jF6NlM0OoqVlEKIYweW6\nBUlyode/TC43j+7TJgWTaR0Gw2YkaQHJ5EJA5Pjjn6Bfv56c7PYF9g3r29sYrNOJiKKAJMmdYqRO\nJ6DT6Qq5z96xxXusxrA/Zu4dUc7sdrTNNRrNPbKhZ589h9tvf7TjqH24f72bIujOKKIai70Xe0Z5\nB+eaNVu44YYW3nrrdLp+onYTCJwHqFitW/B6byOdTtHWdgnFRNVqXYXNthO//8d03bUMoCORmEsi\nMRdIUl+/BrN5F7GYg2RyOl7vY4X63s7uM5J0EG+/fRBvvw1/+9t7HHbYBqZOzXPmmaMZNqx3T/Jf\noxZ0LMXpWPpQ/tqeT5HVhko1hv0tRv2nNahpqDw/HA4HBoOBbDbWXrNrtXYdh2fN8rBtWyOi+FwV\n17Eop5zirFhisVR+JmazQLpA7tbVCdx444W8885dbN9eHCuBILgoGkrk85XMZyYzAjgYj+ctXK6X\n8fuPQYs7xUbZzyh16xuoJjlltVqJRAzANmBsldcfIRAo9TwkEkdRV5fB5XqIaHQxYKSubkvBnKeY\njKfQYuhsYCMQAho6jV2Ey5Whubk3jLCVaHQwDQ07yWQuxeN5GwgSDg/pssyhK8iym9bWBRgMftzu\nu8nn83RX39wV3O6/EQj0pF/bGQ7HE1gsgYJjnPZgkk6PIJ0egdH4BU1N60mn00Sjx9L9fakSZvN2\nRPFoIpEJ6HQtNDSsxGTKoap5FEVBllUEQUWv1yMIOrJZA5L0GanUT8nnBxTG2ME55/Se4d43qEZk\nlP+myvLO8b6+vp5MJoPT6er2AV8QwG43YzZrOYWiKEQiKRRFRRQF7HYzJlMpDZVlhUQi0x43eovu\npB+/UsxuMdGt3TYXfvSj7/DHP/6FjRufZ84cTTS7b7Vxa4OiKAVGWmNCqjPSfZmEa8e3a9cX/PjH\nj7Fhw0mkUrU+/QqkUlNJpaaisQOrMBg+IZ3egaou3QMLRhuRiCaVY7PdgsPxKKJowGjcQC7XfeDL\nZEazZctotmxR+ctf3uDww9czZMgnXHPNSfTr5+vlfnyN2lA+LdYbebO9P3+rOajtTyxvX+vsHhgx\nWEP516AZTChkMhrl6nBUL2NQVZVjj+3P3XensFhakKRKWavDD9/EuedWxhObrfK9rFaBSAQgT1OT\nGbfbzTXXTOTKKz8mm60D2lDVAWhMrZlUqrO8GegJBicBCk7nu2QyMoLwEmAonGsXlK3b2elKlouz\nUrcBv0Wr+S3B5YqRSlVu19a2AKezDr3+Flyu0WSzC0kmDy5b4ylgQuHvGcBKoCv2+NMuzH26Rl3d\nckTRgd9/FgB+/0GAitm8HY9nM7IcIhQ6BEVJALvQkvAFdFf9mM870etdhMNH4/E8hE6XJBweST7f\n8xS+Tvc+cFCPtc+V2/wLj2cDbW3TiMc7KxyAZpDR0tIfSOD1vgQECQQOBw6uun4RTucmdLpGIhHt\nO5DlJkKh7mx7M3i9TxCP/xhFKX3Xkye/z5QptRpqfNmo1rtRPZYLgoDdbuejjz7illtuQRTFQgNt\n9ZgnCFBXZ0Wv1xGLxdi1axdjxozBYjGSSmWpq7Oi04kkEglefvllhg4dyrBhw3C5rLS1pfaI5d0L\nu+D9G1pTROXUvtFoQqfT94oRmTBhFN///q/ZsuWpwpIvV3pMliWyWa0WVhBETKaeGem9haqq3Hff\nRu6/30IgMJ66uicQhAaSyXPpoZS7A6zE4wNxuz8jk/kWbvermEybCAbPAHrzNJvD672BZPIk4vFx\nxONgMLxLY+NdKEqIYHA+qjq5m+0FEolBfPjhP3nllStYvXoHEye+w7RpMuecM5mGhp7sNb/GnqH2\nYNkXrK+iqLhcLqIFT9X9LRn8T2R2S/vYmf2JxSJAHo+nc4JZLDmbPHkko0Y9w+7dVuLx8mQiz8KF\nuk5NqXZ7ZXyqrxfYvRsgzsSJmoLBkiXHsnbtTYVyhiiZzGB0ut0IgkIi0Z1OrEgsNpr+/VvJZMYS\nDg/CYvkn6XR5/DgCeBHt9ikAGdLpPAMGPEkgUI/Z/CscjinIco5cLkMy2dBlM08sdjBgQ1UnYDC8\niZaAFY8vRilp1gP90WS2OisU+Hyv4Pdf1ml5dezC53uMtrZ55HIdlQUEMplDaWk5FFCx2+8klRqO\nopyCxnQ/BgwHqjG/Ch7PyoIrnYlgUCOPDIZd+Hx/Qa/PkUioxGLT0ZoIxYptGxo24/d/s4d9l4BP\n0enex2zehCDoEIThNDRsQxD+VRizeL7IgIKi5MnnM6RSIsGgVrNtsWzB5XqfdFomGp1N5cNJAJ/v\nORKJmcRitSpiNOP1vkEg8ANKzDzADo44Yn9s5KqG7llfs9nMM888w9VXX43NZmP27Nkcd9xxzJo1\nC6vVSCqVqxjNbDai1+v46KOPuPzyy5k4cSK/+c1vEEUBi8WITieybds2rrzySsaMGcP27dtZsmQJ\nS5cuxWYz0taWprfY45rd/R2KIpPPlxqmuqvP7Q4PPbSM4cO7S6T2DsX6lo41u8XSi3xeO0mqKUbs\nC7z++nZ++cutPPfcAhRF6y6Ox49Gr/+MpqZ7kKQIweAFQHdPsQAKbvcfUNWxtLZ+H4CWlgmAjNO5\nDodjNfG4jljsErqbOtLpttLQ8DR+/3cpnyLM58fQ2joGrWziRVyu28lmY4TDZwFDKsYwmdbjdH5A\nIPBzQEc02sSGDbBhg8Tddz/P5MlbmT4dzjxzCk5nJevyNfoKezpF1nH7Ht6lQ73YfkTs7gO74L4d\n78vEkCFD2bHjQ+AQhg0bUvGaJEntVsOiqGPyZIF//etyJKl0/R900LN861udGUEtcY63/z9ggMi2\nbSrQxqxZJYvf3/3uQrZtu5NPP02TzY7CYvkEvV6lra3nB19VFTAYzEAdJtNA0unyBGZM4aeEaFT7\n8XozqGobu3cXu/ZV4ANSqb/R1PQiOl2SVCpBJDIZTQXiU6CRcHgaOl2Ipqa/E4kMI5udSkc9c5gE\nPEFndjeMJA2lFpLC5XoQvd6C338ePV9vfkymfiQS4wr/1wEnIwivIIq/RZYvosRyx/B6VxMKLaRj\n+UI+Pwi/v6h4kcdk+hS7/U2MRgVRlFFVhURiO4pyED7fnxAEEAQVQdAhiiKqqv3Isp5cTkc6ncRi\nCRON/hBVdZCowVCtvv4RLBY9ilKP1dpKPh8iHt+NzdYPu/1BVDWGomSx2UYgSaPw+8+hVm1gi+U1\nbDYIBK6h+PBjt/8Vh8NPPt/MN795fU3j7H8oj+cKkiQxevRoxo4dy7Zt21izZg1r1qzB5XKxfPly\n3O4mJKlEPup02vZvvPEG48ePr4jZxbKGG264gR/96EfMnz+faDTKwoULOe2003A6nYii0KczZQd0\nsqt9eKUPY0/ZUJfLhdls4s9/foALLjinQktuX6Hc0Q1ArzdgMBhrTnT3pBsyHo/zP/+zjpUrhxMO\nd24ekKTBtLRcAuSor1+DxfIx4fBwMplFndYVxXfwelcRDF6ELHcsF9ARix1HLHYcEMLrfQidroVw\neCy53PEVa9bV3YMougs1vl1BIJU6klTqSCCP07kOm+1xUqk80ehS6uuXo6rDCQS+XWVbPeHwUaxd\nC2vX5rjzzo1MnBhixgyRJUumFbQxv8a+QW9Y3+LfPbG+6n7doPafBq1BrXq8PPTQRnbt2orZHGXw\n4Kb2dao14J5//igefTRAW1uRacyyaFEMu71zfezBBzeiqp+gKAqiKDJv3kiefjqMXp9g6NDS1HR9\nfT3XXjudb397GdmsA7NZxGAw0tZWy32iZGGs15uo7UGsmVSqDpcrVTGOxfISicRZJBLF5q88Nttb\nOBwbiEbXkk5ribMsN9DSshi7fTv19ctpaemYbOmAoUClvJrPt7YGh7JW6upuJJ/3odOZaWz8P0RR\n127xDCqqqiDLCtmsRCo1AIdjB6HQKZ1GUtVpyPLh6HSvIIqfode3otNZCAQuopLVrAYD2exwstlS\nU3Fd3bNI0uICy909bLbN2O1uQqEzqPXh2OP5C7HYnHYWuyjdbjLtQBTfQBQHEYsdASgIwg6czi/o\n3/8fZDI54vEm8vkJdCU5V1//JJI0mEQijcdzA0YjZDI6wuFDSSSGc/LJn35lyJV8Pk99fT0rVqxg\n165drF27ljVr1vDpp5+Sz+cRRQGbzYTBoEMQQK/Xzt/TTz8dRVF4991328fS6USSySSffPIJ8+bN\nA7Q8bNiwYWzfvp3Jkyej04koSu9Y8a9sg5oo6jEYzO0lAOWdwb3FAw/cw+mn/xcXXHBOH+5hdWhG\nEZl2Fyij0YRe37PMyp5+H4qicN99z3LvvRIffHA6PT+xGolETiYSAZPpPfr1u5NMJlHoNq6jvv5W\nRHEQra0/pueA00AgoCXWJtM79Ot3J/l8hGDwRHy+R4nFziST6U2tmYFY7HhiMYAgNtv3EcWDyGQU\ntEaO7oKtkdbW+Tz5JDz5ZJrbb9/I0KEvs2DBoZx11gwslmq1fF+jb7A3rG9pneI1U2ra7Jz46nQi\nNpsRo1ELb/m8TDKZQ5KKBgemiqYIbSiBfF4iHs/sFTv7dRJewuGHD+DZZ+M4nUk8Hk+7JGTxBlbe\ngDt+/AgWLHiE5csPBwTGjl3Dd787t+pD/ciR/YF0e7J78snz+P73b8ViESsID1mWmTt3CuPGPchz\nz6kYDKb2BLZnCIiiFpN1ulq3eZdksgmnM1Sx1OEIk06XqxwY2vVv3e4wkuSgvv4R8nkdkch8EokR\nJBLJgpZpx/cYBzyKVu5gxmJ5kUxmBtqtPAd8gNX6JhZLDJNJa5rKZPxkszKJxIlIkpdksieLVwVo\nJZ//F01NWxCEBMlkllhsBqWGYQuyPAdZhnweRNGP2/06ZnOKfD5FLOYim51OT81gLtdGVPUQUqme\nE12ncwOiOLBdnacWuFyPkkjMqFKuAdnsIbS0HIIohmhsXE88biCVOpxU+7OKCkSw2bZiMiXR60Gr\nqFFRlDSJxMfI8mgUpZVMpj+ZTEeziBRHHz2IrxLS6QxOp5Onn36aOXPmsHSp5uCWyeTR6cT2mNsR\nbW1teDyVDwyRSIT6+vqK69tisewzK/gDmtkF2utzO7K8vcXMmUegqlk2bdrC9Onjet6gVygpH3Q0\nitDqc/edUcLmzdu44YZ/8cEHcSQpAcyhY/NEd8hmR9PcPBpI43Tejqq+Szp9NJlM5yf+nsc6jObm\nwwolByvQ6VyYTGvJZAZRTZS8O+j1r+F2P4vffwfJpBkI0dDwMEZjK21tDaTTF9D9tJ6FZPIz3nvv\nG2zePItlyzYweXKcWbNMnHzyFMzmnhiKr7F3qMb60s3fYDQa2x9Izj33XKrBYNBRV6edS8XE02jU\nYzTqicXSiKKI1Vr9BmwyGVBViMe/du3rDbpidqdOHYsgyLhcGsujOVl2LQn54x8fSUvLSkIhmeuv\nPxSTqXqSOWjQQCCJJEno9Xo8Hg9mcx6ns3S9lyvzPPDAjZx99u28/74dQaitDlBVBYqqNMWktyfo\ndElk2UkmY0arLdWOz2jsOuEzGATy+SFEo36y2WNpaHgeg2EXicRnJBJdES/HYzL9BUnKotebsNkC\nmEyvF6b4PaRSo0mlbIV9+pj6epVEYl5Nx6BBxG7fSjx+LvF4MblN4XK9jtX6GvG4RCJxFOWJrKL4\nCIeLM3wKdXUPIgiPI0l6IIKq+pHl44HDC+u04PW+RDJ5ZE2Jrt2+ETiItrbOdszVEQKy6PWWHvWP\nFaWB1tYlWK3v4/WuJxCYgUaaCICbZNJNMlla32x+F4cjTTJ5Ad2lUEOH7mTRootq3N8DA8XrNxqN\n8t577zFs2DBisQy5nERDgx1Zlrnkkkv46KOPGDx4MPfeey9Go5FYLEZTkza7UyQa6urqiEQiFQ+0\ngUCAhgZNcWRPShj2mNk9UFiKUk3s3o1z/PELufDCK3nvvWeBvjv+ovKBJEnt03eiqDWilaaR+haf\nfdbMr361mTVrDieROKuwNIXH8zii+Bl+/8loAum1oa7uPnS6oYRC38Ns3ka/fncU2N7yuq2eoOB2\n34SiTKCt7RcFdrYNj2clRuMXhMMHk8kspqfaM5frz+j1Dvz+H5YtbSAUOg8AUfwcr/d+dLoQ4fDB\n5HIdx5Twen9NPH46mYw2Hfj55yfw+efw2GNx/vjHjUyenGD2bBOLFk3t8qb7NfoKtWlB2mw2Lrnk\nErLZLHPnzqW5uZnGxiZMJj3ptHZdOZ1aMrxixQpuuukm8vk8S5cu5dJLL8XptJDLaWVD119/PU8/\n/XRBIgnGjBnD3XffjcGwdw+e/2kNat0drsvlYvHiM/jznz8nk9GSzO4kIQcP7s+jj55eUc9bDf37\nD0AQUu0sP4DNFqV/f2enMgm9Xo/BYOTmm8/knHNW8P77tcU8VRUQBGNhn3tKdjPAG8AGRow4GEUJ\nEon8Dk2CrH8nqbNy6HQi4MJieYds1kIopGnp1tffQP/+64hGLSSTs6iMXyayWU13OB7XfqojgNP5\nJsFg76fRnU4diUS57KOVaHQm0SgIQhSvdzPgJxA4ko5yaF7vY4TD85Dl8u0lDIZ30On+jk4XAXKE\nwzOQ5Z6lIs3mNzAYvEQitSa6AFtpbNzZQbO4e6RSI0mlhuLzPUIoNABZ7szKut3rkeUhBAJH9zje\n5Mk2jMbeGGMcONDr9UhFcetCnFYUBb1ex3333ddpfZ1O12lWzm63U19fz3vvvceYMWP44osv8Pv9\nHHzwwe3j9RZf2Qa1zti7G8399y/D6x3Mj350B9dd11MNVO0o3gCrGUX0HpX6uB2RSCS4/vr1rFzp\no7l5SYd1rASDZ6HJ6zyDzbaaSOQQMpmu5b0E4R283n8SDl+IJGldwJmMxtBCmvr6VZhMO4lEhpPN\ndicT9ik+398IhS5ClsunlOoIBjUGw2jcTlPTvahqGL9/Pqo6scMYObze35BMLiYa7VoHUlEGEgho\nXb0Gw3Z8vvsQhBCh0CQk6VC83vsJBK6mmoYvOPjssxP57DNYuTLGTTdtZPLkJLNnm1m0aGq3LM3X\n6Ct0ZH1L0jcffvghra2tbNmyheuvv56JEyfywx/+kEMOGYmqgigKvP322yxbtoxHHnkEp9PJ+eef\nz+GHH8706dPbp9kUReGCCy5gyRLNTKbI5Jc3WOwJDhB+oI9RXY1BVVUWLTqGBx74GVB73NPr9eRy\nXcc5p9OJIEhlN1t44olvM2LEiA5lEiYMBgOSJNHU5OO2247l4ouf5eOPq133ldCUfoqJSudrXqfb\nzciRbzBhgsr48RZuvvltdu06ir//fRINDR6GDFmBoowHdjJmzBscc0wTW7ZIfPjheMqt1zWyQ8Bk\nqkz+bTYvn3/+DfT6EI2N68hm87S1za+6L9WRw+d7Cb9/ArC1xm1K2+ZyXZtLqKqLQOB4QKK+fjN6\n/QsFNrQBq/UlksmxHRJdAD35/IRC/SuAik7Xgtv9NGZzDkXJkUwKxONHUqk20YzdHi1YEvcGn5BK\njaV3ykIAJvz+c/F41pJKvUsqVWxEjOH1biIcno0s12K8kWTOnAFUP4f37wfYWqDX69uJgmLMi8cz\n2O3mToTBqlWr2LBhA7Isc8ghhzBu3DjWrFnDGWecwRVXXMFVV13F0Ucfzbp167jwwgsxGo1ks1Kf\nx9IDPtnVPpC+O3l8Ph/Ll7/J0KHLueyy2p8Ku0JRhaGIjkYRvUW5D335EOl0mttue4a//93Ejh0n\n0/1XKxKLzSMWm1eoyb2NdFopmEMUp+8V6utvRhCG4ff/lOqfsaVdH9do/Bf9+i0jl2srMKylhNbh\neBCTScLvv5bugk8uN4KWlhGAis22mbq620mnE4TD5yMIEXy+lbS2fofelGHk8yPw+zW3I5vtViyW\n9YATUXwXRZnew9ZOdu5cxM6dsGJFlN//fh0DBmzl7LOncMIJk75OfL8UlBKpTCbD6tWr2bhxI+vW\nrWPTpk288cYbPPTQQ/ziF79s32LFihVceuml9O+vnYOnn346a9euZfr00vcdDocJBAI89dRTGI1G\nrrnmGsaN6+vypb3HgTC7Vk2XvFifa7VaGDnS3eu411WcK0IUqUh2Dz30ULLZdOHzEgplErqK/Rsz\nZjj33KPn8sufZPv2EZ0H7QBFKSa7xd95+vd/nhkzYixa1MhRR81v77e4//73EYQcdrsDp9OJ2Zwi\nlRKAAL/97c845JDh5HI5HnjgWR59tJWXXjqUfL5k/Vps5ilClrU4KUkNtLbOBlL4fC+gKHGCwdlU\nuk12hs/3JH7/ScC7dLZ4vxX4Jl2VjlkszxEKdeWOWQ49kchs4EgaGp4HXkAUVQKBCT1tCAjIcj/C\n4XITjCxW68c4HK+j0+VIpzPIcoBg8NoaxquE3f4h8fj5vd6uiGBwPvX1LyEIb5PPW3C5vijox9c2\n8zN06GcsXLi0bElvG3H3TxTzmaL8ozarrr0mSQptbaXmTKvViM1mYvz48Vx77bWoqsqhhx5KMplk\n/fpnOOOMM1iwYAEjRozglVde4ZZbbuGwwzQSK5Xq+7rdHsoY+vz99gn60gRiw4bVjB07g5tvzrN4\n8XEMGrTnBeZFo4giiooLfQlJkrjnnmf4v/9LEQyGyOXyQO31WaWa3Ahe70MIwheEQkPxeHYRCCxF\nUbw1jZPLjaK5eRSQx+V6EpvtIyIRG1ZrC+n0KQSDvUkkBJLJGSSTM4AsDscPEUUd6fTB9Mb9phz1\n9bejqqNoa/tv4nEVi+VlXK47kKQwweCJaI0f3SFKKvUeL774U158Mc/vf7+RiRNTHHWUiRNOmPZ1\n4vslIJVKYbXaOPHEE2lqauK6665j69atjBkzhmw2j8WifQe7du1i8eKSvazP5+PFF1+sGCsQCCBJ\nEr/4xS9obW3l6quvZt26dRWNa1+jZ5SrMZSmM8st2wV++tNv93ncE0XatWvLyx560imfNGk0Dz/s\n4KqrHmLTpiF01dCqqmJ7sitJYaZMWcW8eXrOP38qDoemEFFed2y3KwhCBofDAUBdXYZUCqzWVg45\nRFMeMBqNXHjhcVxwgcqyZcv5yU/+jqKI7ftdgkLnHh0rfv90QMLtfgu93o/fPwnoXAbQ0PA0bW1z\nCseWojLZ/QCYDqwCzui0LWhObOl0dfWB6tATCh2F2fwUFksQh2NzgaHtLUykUqPaG8Q8njUkEsfg\n8TyG0Zghm00TjQ5DkmbTPWMbLEjY7V0iGYkcQV3d7eh0SQKB03u17cSJNoxGM/tKfvHfCVVVsVqt\nhELFRszqiVc6ncNk0jNw4EAGDhxY8dqNN/6h/e9hw4YxbNgwQMuZ4vHsXs+wVcNXJLL3nQmEz9eI\nzWYiFhvJiSdew8sv/3WPmpXKjSKK6EujCEmSuP/+jTz0UIatW48BHIVXIvh8f0GWo4RCl1DN2rI6\n6gkEzsDj+QNWaxRR1GMybSSd7t1FDgai0UVkMs9is72GKPbHbl9dCGC9Zc4kPJ4bSafPJx6fCITw\neP6O0egnHB5IJrOEnqepMni9vyEaPYdcrih3I5BOH0E6rcnN2GzP43TeRi4XJRQ6FRhZMYLWULeD\nQOD/UTzXPvnkZD75pMj4bmDixNTXpQ5fAopM509+8hNWr17NEUdMJxZLk8vJFC9Tk8lEOl1qREom\nk9TVVTJhl156KePGjcNutzNy5EjsdjstLS0MHDiwz/Udv+ooJxuqWbb3778n8n6VJSwdodNpUkj5\nfK5Mp7yrMonK+8OQIYNYufK73HbbCv7xjw94551+dJwtUpQAgvA6MAuP5yOefPInheNSC8emq2iw\nczplQG6/V4weneOLLyQGDOjMUAmCwIIFR/DjH+8GnmPYsIFlCgAAH5NKdcXc6gmHJwEqTue/sNne\nIhQaQC6nlXzV1W0kmx1LLldkjXMdtn8TOBto6WJ8EIQ9k8qqr0/T3HwxRuPnNDY+id9/CKq6Z/bt\nVuub5HLjyedHEgwW47GKXv8FDQ2PYjKlyWSyRCKTUdXK+4rHs5pgsLHzoL2CRH39CiRpEEZjHKPx\nA3K5WlWD0sycWWSse9uI2xXru3/Fo44ultWgqhCJpNDrxfZrUlGUikbgTCaP0ahrf2gu9lTsC3xF\nGtS03321v/feewvnnHM1icRxnH32zTz00HdqTmCqGUWoKijVRuUAACAASURBVL3Wi+sKmUyWe+7Z\nxKpVOt5+uzzJLaIev/9CIInX+yjwBYHA+fRkEGG1rsRub8bvvxqwEY+D0biDpqY7yOWShMOa7FjP\nUGho+D2yPJlw+Ifty+z253A6byGVkmlru5ieknBBeB+vdwV+/5WUamsbCAa1JjSD4WMaG+8FgoRC\nRyBJncXnBeE9PJ6VBVebrtQeRJLJ2SSTswEJu30DDsd6stkk4fCZ1NWtRRAGEAhc3sX2rg6J70Ym\nTUoVmtumfN3cto+hqiDLpQYJ0JiCd999l2984xsAvPnmm+3MQRFHHllinvL5PKFQCJfL1T7m/oL9\naV+6RlGNQdkjy/aqI5aVMVSDTgfZbKY9znZXJlFt5k+n03HVVWfw7W/LrF37Aq+//jnRqCaf1NBg\nYNy4SWzebObmm09hwIBAGXMsVJVDc7tFBCHf/v/PfnYizzzzJDNmVCdKGhsbEcUUZvM4nn76PObN\nOxOYCwzEYtlCOj2s6nZlR0UsNppYbDRm82e43X8in4+Rz59GMlm+bYZK9lpX+HGiJcId72vNHVzs\nakWIdFqbBc3lBtLaehFu9/MIwjpCoWPoXe1sCpstTiDQsZRCQJIGEAoVa3oVzOYduFwPI4op4nEr\nicQJiKIdzX1uT/F+YTwZSdIYSa/3VQKBBrrS2y3HoEE7WbTowiqv1NaI25P84v7A/pZLPvYUozqy\ntEWntaIdcC735TjMfcWY3b7BUUfNxmCQCQa9bNu2k3PPvYs//enCqgLn5ejKKKJ4A9gbBAJB/vd/\nH+PZZz9j9+5r6Vm820YgcA6Qx+1+AqNxBy0tJ9LR+UdrHFtOPH4Cfv9pFa/kcpoOIaRxu/+J0biT\nUGhqlz7novgWHs8agsFL2p3ZCq+QSMwhkZgDxGloeByDYXehqa2zhJnD8QAmk9hNrTDk8wfT2now\noGI2v4bXeweS1EYgcDIwGrt9BRZLmkCg6zE6Q08iMa8g05PDbr8CUTwYVQ2jsdIDe9jexc6dJ7Fz\np9bcdv31v+awwwZz/PFNnHTSgS5ntn9lXUajkVwuh8lU0kbO5WQsFli0aBFLly5l6NChRCIRVq9e\nzapVq1BVFb/fT2NjI9/73vc44YQTGD58OHfddRfjx4/H4XAgy8oB85C/v6Dj52UwmNDre2fZ3hld\nz9YpioJOR3tc3VPnTNCS3gULZrNgQefXDjqoHzff/Ar9+2sJoXZMYnuCXY6RI/sBn7X/P27cWG68\n8X0uuui0TuuCpq0uigo6nYDL5eCoo+byySebAQ82W4x0upYZuQyNjevJ5z0kk5PJ5Rrwev+F1fp6\nQSVhIJCl0omtWH98GPA8cEzFiC7Xq0Sj1csbukN9/ToikXKpNIFweBaieDhNTY8RCvUnn+8pgdfg\n8z2L31/LjKJIJjOCTKZYfx3D4bgZRemPwfA++XwAqK0MrwQVvb4ZSfouivIcsAWoIxCYjNe7kUDg\nFHpK3CdONNcY63svv1ha9u9LeFVVbY+/pf3Z/3HAM7sdmyL6BgLf//7VXH/9naRS5/P887B48V+5\n5ZbjGDmyuiZgd0YRe+PI9vzzW/m///uUjRvraW29AKv1HZqabiUUmkY+X0sTgYFweDGg4nJtwGp9\nilDoMHK5udTX34IoDii4l3WvSRsOa13rFssWvN7bSCZlotFLKSbd9fV3IAjFsbq7EB2EQmcDYDS+\nT1PTsoI98SnAwfh8N5JInEAwWKvMjEAmM4Xm5imAjM32LDrdbwFrRdlB7xDG6/0DodBvSCQ8QBan\ncy022z9IpzO0tV1AT0x5Xd0DZDLzWbfuGNati3PTTRuYODHJjBl6Fi+euocGFvvD9fjvZxWg0oK7\niFxOQpYVRowYwS233MLdd9+NyWTi3nvvxePx8Pbb73DVVVeyYcMGLrzwQm666SY+//xzZsyYwfXX\na5aeHf3d/93Y32OwosjIcrllu6W9Mawv0PHwZVkmm02j1wvIsozZbK2hPKz3ZW6qqjJkyCB0ugeY\nNm1sO3Mst7s8VI41ceJgBOGNimVdJbpFiKKKKEI+n2Phwsn86U/vA1ZU9WUEYQKq2n3C29i4ntbW\nYyglsOD3fwNNbecD7PYt+P3vIkljy7Yq3vJ9aFq0lbDZzESjObTPrPZyLLPZUXV9RamjpeUC6utf\nQhSfIRQ6iu7uNS7XC8RisyuOqXY4sdsH09x8EdCMy7ULq/Ul0ulkQcmioacBsNnuI5n8QeG/WWgP\nBAAiweA3CmTOCd2MkGX69D0poaiV9S0u+3fW+la+134eotrxFWlQ6/sv+pvfPJMbb7yNdLoNtzvG\nq6+eymmnvcgVV2zj8stPrHjPvjaKCAaD3HffS2zaJPHaa+PI5UqyK6nUOFKpcdjtL9PQcAOBwDHI\n8uQaRhWIRo8mGj0am+0PmExryGYPIZU6nd5MMaXTU0inpwBRvN5HUJT3UJQ2EomfkM/3rj4rlxtJ\nS8tItCT1LkTxZtLpIaRSPXdKV0cUq/UFwuHrkGU3dXVPY7F8TCKhEo/XVr9sMLxMXd2LBAI/p3R5\nmIjFTizoAmdwudZitX5MOp2lrW0p2o2jCAWv99ckEovbbUDBwa5di9i1Cx5/PMkf/7iRiRNjTJ8u\nctppU7HZ9rSm8T8XRqORfD6P2Vz50BCLpXG5LEycOJFly5ZVvDZy5CgefvgxQNPV7agHmcnkyWTy\nfI3aoShyRULeV30JpfBanCpVkSSJfF5jc41GEb3e2Kd9EEUUG4tVVcFs/pBJk87uscFu2LBhiKK/\n5vdQVRWDQaX4XDB79iz0+ueQpCG4XDO4+OIc99yzi1Coqwbpz0mnD6J6UigSi40iFgO7PYSqhnA4\n/kE4PJBcrvw4OpZ2KYXGrufQYtqU9uXwe+AcylV2SthNIjGgyvISIpEjEMWRNDWtxO8fiqIc1Gkd\ng+Ej9HoP0Wj3Y3WNBJlMcfYtRzQ6h2gUIIvL9SJW6wskk3lisROoNjNqt68jm3UC5fs2FIgDelTV\nSiZzEBbL66TT1V3c+vX7hFNPPW8P978c1eUXK/HvUnhQ2+PvgYQDntndFxAEAUEQuOyyb3Hrrbfi\n91+Lz/cQn3++lJ/+NMbDD/+Kyy6bwpIlxyLLUkVDxp4aRQSDQR588GUef/xtPvmkkXD4PLqTOUkk\nvkEiMQ2n8wWs1hvx++ejKD01gH1AU9NjxGLHEY9PQK/fRWPjMnK5DJFIb5rZAFzkchkMhsPIZg/C\n632cREIlFruM3iomuFx/Qa9vIhT6FhCloWElBsMXtLUNIZM5jVqScaPxOerq3sTv/38UT+u2tpNo\nawOI4nb/E5PpC6JRO6nURVQ79Z3OBzAaLQQC3+3mncxEo4sKQTSNy/UUVutO0mmJtrbFeL1/JhS6\nqkMZRzls7N69kN274Ykn0tx880YmTWpj2jSBJUumtHdzf43qKD5k5vN59Hp9pwdySVIIh5Ptygw6\nnYgkyciygs1mwmIxkc9L5PMKBoMOSZIRRZFMJr9PmyP2FPt7DBYEA0aj0CelWh1Gbv9LM4rItkuN\n6fUG7HZ7zX0Qvenp0JjjDKARF3V10XY1hcqxKrfr378/ohipaX8URSGfz6LXa6oSFovGTjscCpGI\nSlOTwpVXnsKUKe/w85+/wLZtIynGQKv1HlKpi/H53sLvn9/jexmNdiyWBnbvnoDR2IxeH6Ok2GZD\nS2S1sfX6rUQih6JN3ZfHx9XA1cA/gLPoiIaG5wiF/quG466npWUpbvcmVHUjkcicslf91Nd/gd+/\nsMdxukJd3QYikQsK/5VfyyaiUQPR6NlAkoaG5zAYWgrJvyZHaDC8idEYIJHoWGpxInAjxQQ4kRiI\n1/sK6XSKan0gkyaZsVr3hLzoDh1nJrqaqdhXCg+drxtJkvp0BufLwAHP7JZL3/T1jeGKK07lvvse\nAp4gmZyG3f4MicQxvPnm8fz0p3/h/vt3M3u2gyVLJjJw4MAuGzKq7V8ymeSZZ97glVcibNum8M47\nLsLhOcBc6uvX4/X+gUDgCrq30RWIxWYSi83A5dqExfJb/P5jqyS9CbzeZcjyaFpafkTx5JekQbS2\nXgYk8HhWIoq7C3W7w+ken9HY+DcikbOJRrWyjlTqSLTp/+WI4m6CwaOQ5SN6GCeBz/cHYrEziEaL\nHbcuQiGt9stg+JDGxntRlADB4IIqJhMa6uruQhQH4/df1cX7uAiHtdIJQWjB43kAg6GVSGQAmYwW\nvL3e35FOH0UwOKWLMarBQjR6SsFV6DXs9jvR6frjcNxPNHohPTczWGhpWcDq1bB6dYpbb/0eEybM\nYNo0WLJkEm53LeLl/5kozqJUu+RVtXo5Qi6ntbwX3dYOBOzvMVgQBPR6wz5IdjUoiookpTuVh7nd\nzl4oZtR2s69UktBhMpn5wQ/Oq4k9FkURvb7n86pcpcdgAL1eS6AlScLjgUikhbPO0uLckUeO57HH\nDuGaa/7GqlX9kWUBMAEfoij1NR2XRrxoSUku58Bul0kkiq8eDvwNrVltNvX1uwgE5gCbqCQYskC/\nwk/npjaTyUntZQcC4fAcDIaR+HyP4/ePQa9P43bvwu+vVh7wJBAElnR6346wWBy0tRXvlx3PjReA\nQcBBhEInFPb7Q5qa1pBOt6DTJQmHB9PZDdRBR/OhQGAiXu/aQn9IOXLMmOFj36NarW9XiW/x775h\nfYtEXrUmzf0dXzFmt2/312Qycd5557Fs2V0kkyfj871GIqEVvYdC5yCKD/PKK1eybNm7jBy5hWHD\nDPTvr0MQogwd2h+bzUguJxMOJ2hrk4hERJqbFd5+eyOJxEKCwQlUUziIROYBM/D5lpPNioXEqTsI\nhSmb2bhcmwpM71HI8kTq65dhMNjw+/+bykaFctgJBs9Fq/Vah9X6GJHIKLLZzsHH5boPg8FCa+tP\n6My4ugkEzkMzhXgZl+tWkkmpUNtbmbQbjZsKTOwP0QJ4Z+Tzw2ltHV4Y73mczlvJZFJEIheiTbNl\n8HpvIB4/i0ymNlkYVW0iGNTExvX6j2louIVs9mVisWPJZnuT6JZgta7Cag0RDN5IIiGg+cg/idW6\ni3Q6T1vb+VSWOnREEK/3ZgKB37B2rZO1a/PcccfzTJiwlcmTZc48czw+X28bLb5KKDEaxQBb3g38\nVcaBcozlNdR9cRMsjiFJufb/jcaSUYTXW19hKrE36GwxrDUWC4LA+ecv6bhnxa06jWM0dq8Nqkml\nlSfToNOpBW10GDZM5NNPt3LKKdej0+kRRRGXy8U993yL229/jFtvXUU4fBIu1+sEg9+o6dhEUURV\niwxcC9lseRlCP+BiIA28RSKRoqnp7wQCnyDL5c24xdh9NLASKE/ydhKP11q+lsHlWonBkEeSZLJZ\nPQ7HJkDG76+mdhNFS9RPBFZQjVUuQhB2EIuNLlvS8fsxA9spL1HIZofT0nIQHs9ycrmhiOJfUJRq\nTm2DgDClhN5AJjMEk+kdstmSk+fAgR9z2ml7bmSxZ+iYxPZG4aH31+n+Hn+7Cz1fiWS3xJz27XgA\nV121iOXLdwAr8PtPw+d7DL//YsBEMHgyPt+d+P3/zauvwquvattYLJ9gtz9DIHAR2sVqpvzEEsWJ\nBQbUh6J0Jedlwe8/D4NhN01Nf6StbSyZzNye9rw96bXbr0UQ/kwyeRy53KIaj1wkFjuWWOxYzOZ3\n6dfvNlIpmWj0cjQ29yEikXPa2dzu9iOZPIJk8ggghsfzKHr9bkKh8eTz83G7b0FVRxdkzmqBQDI5\nq+ARn6G+fg063ctkMh8TCNxPddvfnqGqEUQxSyLxVwyG7TQ2LkNVQ4TDMwrC5T2jvv4uVPUQgsEL\nypZaiUZPLZQ6pKirewqLZWch8b2A8sRXFN+hoeGpDjXCBkKho1m/Htavl1m27AXGj3+HyZMlzjhj\nDAMHlrsO/WdCUZQC47Z/xai+JjsOkBDc5ygyuVC9PGzgQE9Zs1jt6JiMF53eOloM7wkaGqrr03ZM\nprVmN30h2S3ZyN977zU888xm9HpDBZssCALf/vYpjB3bn+uu28zWrUdSq5OXluyKhfcNk8+PqrKW\nBfgG6fQ3SKfB7c6Tze7G4ViFKGb44ovi5+GmsjwAPJ6X2uUgu0cMr/dhAoFTKdkla4mXINyCz7cC\nv38qWmJZxDo0tQgTWnNZjK7cMz2e9wozoUWUP3gE0WJrZzkyr/dvBAIX4PX+L4MGHcPChS/x17+u\npqVlNjCzsNYCyksZAOLxg2hsfIHW1jEUSZ+pU61Yrd3NxH4Z6A3r27EsopaZAu18LMXf/Q1dH8NX\nItktoe/3t66unpNPHsKDD2Ywmd4lHJ6C272ccPgsVNVBODwXr/eOigstnR5KLrcYn28Zfv9ldPwC\nFMVNa+sVuN3rgc2EwxfRVV1qPj+AlpZvYbe/QVPTjQX5sJFV1wWw2VbgdPoJhS4nlxuCzfYSbvfv\niETGks0eV/NxZzJjaG4eA0RwOi9FUURaW38E9JTodoSTYFArITCZnsThuBRZ9hCNdv2U3j3MSFIa\nnW4yyeT38XpXotP5CYcPJZfrOK3UNez2hzCZBAIBTQs4nx9La+tYilJmHs+dyHKIYPA4VLVaA6CC\n13sdicSppNOjq7xehJW2tsWF2uE0LtfThRrfDOl0fxwOmUDg+91sr6OtbTYbN8LGjQp33fUKhx++\nkUmTJE49dTjDhw+t+Zi/CigmKrlcDqPRiNL3Rjt7ib7Ndg+cGNy9CUStKCaGxeRTa/i1dGKLhw5t\nqpnZ7YppLm9Eg9okzLpz6zz44M4KLR2TabNZew9ZljCbQacrJ0FE5s2biaLIhWRCQBDE9h6SOXOm\nMXXqYfz4x39l5Uo7mUzP6gKCILa7tJlMMfL5nokBg8GGwXAILS1zgQQOx27i8eI+jkFRHkMrbTCi\nqjlqSbx9vofx+8+mMuUoklTv4fffidu9CXiTcHgh2v1QoNRINg14iuqubxKi2I+ur71AYZx0xdKG\nhgdpazsOr/dXBAKjmDpV4uqrz+Lqq2Hduhf55S//Hx9/PBFFWUS1JDsYPByX61mi0bkIQoz58zs3\n3f17sS9YX215Nptt15CvJUTVwgT3BVu8x8zugeAiVGlX2Xcon5b7zncW8fjjERKJVzAaG5AkH1br\ni6RS05EkD9HoTDyeuwkGL2nfXpbd+P1L8fnuIxA4HlXtWAcrEA7PQ69voanpD/j9C1CUrpOmRGIi\nicQE6urWotf/k2DwIsrri4pJbjh8LM3NJTWDIsNqsWylX78/Eo32J5WqTUdRp9uKx7OOUOiXSFJ/\nnM512GxP0NY2uNfOag7HcszmHIHAnUCe+vrVmM07iUZ9pFJnU5sihITXewOpVLEEBAKBCwAwGP5F\nU9NdhQR1fhcJKmimF78jl5tNKDStyuualFlLyxRAwWrdjMt1G/l8jGBQ0/CFNrzemwiFrkZRer7h\nlGAhGj2ZaBQcjjsxmYIYjSJ1ddcXSh2qdTqXQyQeP4LNm4/g1Vdf4qGHNjF06KdMnChx0kkHcfjh\ne6piceCgeKlLkoRer//SBMlrRd8zu/t/DIaeTSBqQcfEELTp/mrxfenSc/aKWSpKmEEpod5bpurS\nSytjYsdkutiIJssSiqIWkt1yJQsdqlrUeVYL91+lsI8ioihisVi4+ebLmDnzWX73u2189NEhdPeA\nJQhiodYXDAaVWpqHNSUhsfD32yQSpTipKDMpMZ5RkslteL3PYDRmUNUUmUyGeLyJfP4ISg3Pn5DJ\njKR6ulFskNNqeUWxjcbGp4hGvWQy5YoJRjSGt9RQV4TTub7AGBdR+tw0hNFKMUp1/HV1j5LJNFJX\ndz+BwEhAYMiQUkI7b9505s2bzvbtH/Hf//0z3n+/mXx+MuUld7LsxGhUgQyjRu1m4cLuJMn2B+wp\n61tap2P8rT5GCWazAZvNhCgKSJJCNJpCUVTsdhNmc2cTGFlWiMXSX75d8AESZ7t92t5bqKpKfb2T\n446z8sgjs9DrX0SSZmK3f0oqNQToTy7XRDw+Da/3PgKBb5ZtbcTvX4rHs4pUagepVGflcklqoqVF\nY3kFYSOh0GV0nfgJtLUdCxyFx/M4iuInm7XjdEqEQsfS3Nx1Y1k6PYF0egJG44f063cbiYSReLwr\nRjlHQ8PNKMrhBTZXQ7HEoXfOaim83t+RTJ5EIFDUzjURiSwGQK//lMbG+1CUIIHACWhi59WwA59v\nOYHAlahq5/fL50fR0jIKUNsT1Gw2Tjh8LqWpsRg+342EQlcgy7WUAoikUjNJpWYCMnb7BkymPxfK\nJ66nFt3Gamho+C2ZzDySyQkFObOSjm8mkyASOZdqnvdFWK2PYrXm8ft/gN8Pr7wC9933L8aM2cDk\nyRLHH9+PqVPHHHANBD1DoBiwi9Noqrr/KSj0JQ6EZFfbxd5r2ZZDSwzT7cdbZD+7OodLN9paUWKe\nJUnq1IhW+7XS9XEeffTR7X93VHWwWq0FO2UJRVFQFAWzWS0oMohlSb2unWRRVaW9nENVFWS5mPgK\nnHLKbGbOPIxrr32YJ5+sI5vt2FhV2FtBRJaLZQy1qeSUl4tYrS0kEl3FSheZzJFkMuXLVARhN07n\nNqzWGDpdinj8LWR5ODCg8FOOZrRGXi2JVZQ6WlvPxGJ5HeiobjEeeAaYV7HUajURi5Uff57K+1ob\nWpKa1Pba9QSyvAOTSUcgUCQIZAYPdtFRyWDEiGE8/fT32LXrc0455UG++OKQivcOBA7D7V7HrFmT\nDjB1gt6yvuBwOLBarQiCwIgRI9pnVroKUXa7CYvFiKqqhEIhGhoasNlM5PMyFosRWZbbf1RVRZZl\nHA4HDoeZSCRVfdCejqqb6/grUsawd4G26zE1RzRVVfjOd07g6acfQZYbyed3kU73o7FxFa2tFwBG\nstn+xGKT8XrvLdTqlsYJBk/E6XwDt/suwuFLq75XODwPUQzR2HgrkcgkcrkZ3exbDln2YzBYAZl0\nWiCXq82dJpcbTnPzcESxhcbGu8jl0kQil1FsQrBa/4nDsbOg0lB9yqtWZzWT6Vlcrrfx+39AV81x\nkjSE1taL0CyFN+Fw3EIyKROLlZra7PZ/YDan8ft/Rs/TxAKp1AxSqRlADpdrLTbbCuLxZkwmR2GM\n3kmjadChqlEEYTzJ5K9xOJ7Bbn+STCZdSE57clcDyNHY+GvC4YvJ58vXL9fxzeF0rsdme4xsNkE4\nfAZQCrB1dfcABxMMVjof5XKj2Lp1FFu3wp///AkjRz7HhAk55s93M2fOhP20vqp30OrFKpftbyGq\nrx8wDoTZNdg7wqFcoUAQtPpczaxC6rN7UJF5zuVynRwu+/o705Jp7Xh0Oh0Wi7VwPErhpq4lvFar\npibSkb0uli2AiCiWWN4i66v9yLjdLu644xIefXQjt9++jffeO4TOt3QRSRIBpWaXOS3Z1eKF2SyS\nSPQmXqqo6kBisYGFeKbg81nw+4/FZnsHm20TBkOCXC5ONNpALqeizZZ9THmck+UA0LG+2Ae8WrHE\nbt9EOHzU/2fvvMPlKOv2/5nZ2dleztlyTioJoQQSEhJaQKmBAAIiTRBFpAawor7YQIVXkZeOIIT+\nKigIBF8kEooCIogEkBqTICCQcs723ndnfn/MzLaze1pOIOjvvi4ukuzs7Owzs8/c833u7323bVeh\ndRwqaPeNCm73MlR1LeXyHDKZxv3NbE6yaNEhDA1s0P4/bdpU9t7by/Ll7d/XgsVi5eyzD2l/4WOG\n4au+kiQRi8VYvHgxfX19HHrooRyuxw5aLBKlUmvRQZZN2GwyhUKBH/7wh4TDYX75y18iikJdurNs\n2TKWLVuG2+1GEASmT5/O3Xffjck0/nvVv7WMAcbmozh6GGbmCoIgMG3aVI4+2sOyZZMJBFZRq1Wp\nVJwEg78iHNbIbak0mVRqTwKBZUQi57TsLZ1eiNk8hWDwSr3BbSiRVBQfodBSPJ7n8Xqv0jtUG4J3\nUXyZQOAv1GpTdRmDU//3KP39N5HPW0mnT2M0kgBF6ScUWgpkCATuo1p9B1GsUSx+llBotNrX5mS1\nl/D7byCfr5JKnY3PdwPV6h6Ew+ePcl8i2eyBZLMHAmk9Ung9+fw/UZSlY7QEMyCTSh2Jqv4aszmA\noohMmnQ9qZSLfP50xpKW3dNzHbXaQqJRbQkvkzmMTOYwNHL62CjS1QYJBm8iFLqARoNG52NOpz+l\n3ygqOJ1/wuV6lHI5RbWaplw+mXx+eD/lSmUmb7wxkzfegLvv3sT22z/HggVF9tpL4Nhj9x93A85H\njQYJaCaVW9cc9Z/boDb286EFRVTq8bsmkwlZtuoNMBMrTzHuDQbRbU64nMjPaP4+ZrMZSTLXq7mg\npaUZx+JyieRy3avXYFzngh4+YWqp+Bpyh2OO2Z9DD92Dyy9fzkMPlQiFZmCcD002YQWyiOJov69U\nf7/ZPJakRwW7/Vzy+Zvr/2K3/45o9JOAU5fUNbYWxY3Y7T8lnz8Bp/NWSqUlesFExOkcJB7vNM8t\nQNPuHgbksNtFstn24I0yrXN7Fe2e+AGq6iSTWUT7PbKvr8ysWc39KEOX8z/3ud1YseJlSiV/y3YH\nHDCT/v4Pw3Lsw0J71Ve71iRJQpIk1q1bx7p16/j5z3/OnDlzuPLKK+nt7adSafxmjSr3ihUrCIfD\nbSFc2pja7XZOP/10zj+/lSMYKxjjOvJhfkumH//4xz/u9mI+X/5YVHdFkZZO181FtVqpT4qCIGK1\n2hBFE7vvPouHHvozmYyHctlFNrsDsvwiFsurlEp7AlCruahUAvh895LP70FzJVJRnORy8wkG76dW\nK1Ctdl6qLpWmkcvNIxi8D3gFh+Ov9PauplbrI5H4LPn8LjRXJ1XVTja7O7VagEDgLgRhHeXySAET\nBsxYrc8gijNRlBnY7asoFMyo6mgqlc1jNplsdk+q1QoOxy+QJC3FR1W7JQANBwuFghW7/VWy2ZPw\neF7BZnuCfN7P2LLOFfz+y6hU9iGVWkKhsAvZ7D7U/9DZgwAAIABJREFUapPx+5fjdj9OpTJArbYT\n3SvGVQKBi8lkjiefX9DhdROl0o5ks4soFnfH4/kzvb0rMZn+TKm0A+DAbF6Fz/eI3gzX2WatM0yU\ny9uRzS7E4fgTlcpC3O5/YLE8TqHgYGSNL6iqi1hsZzZufJY//WkK99//Pq+88haZzEZmzQqOgfg2\na7g+bHmE9tla1U/rlr/zzjs57bTTKJdrLZPsRw2TScRqnTgSVSpVNmvy/zBgMqFXYRXdMmvk5VxV\n1VbNmudts7nhU64oWgVUFIXNJqWKotQ/B7RI47HLIBrodK9p/z4Wi0amVZU6MdUSp7RrWZIk/v73\nfxCJxDn++MVDPqMbtAc+TfYgiqLewKbt74AD5vOpT/WRTv+dTZuSFIteXK5Bstk+arUMbneRTGZk\nXb/bvQEwkclMw+PZQCYzb1THZrE8iqouRJbfolrVVhr9/hfJZDqvUqqqG4/nPfL5nbDZCpRKi/H5\nVuH1vkaxuFafP9vnSzdmcwST6V5stj+TTDaKPg2k0YIxdsFuvxVFeRZV3QHIUi5vS6eGup13hrPP\n/hSybKlXFpW27tdp0ybx978/x7vvNgpVkyev59prj8Hj+TDDgD58eZqqKjidLs4443Tmz5+P2Wxm\nw4YNbNy4kblz57LddjsgitrcZ7FIWK1mRFFgzpw5+P1+3njjDT796U/rqxtgNpv44x//yKpVq7jx\nxhu54447kGWZefPmoarquL3QJan7/DtCZXfrnmRhaOVjc3we2y1iQHs6NzRMXq+XE0/s57LLzPT1\n/Y1Q6CQSie/icDyA230Z2exxKMr2VCoBYrHDCAav0/1tm4fZTDj8ObzeF3A4biUWO6vDkWzE630Y\ns9mOJLmR5SSDg4tRlOEnnWp1CqHQecjye0yadD2ZjJ9strvrgc32EG73B4TDX0BVjadVFafzOVyu\nq0kmJ1MonDS6wQN6en6OIMwgHr+GbFbF4Xget/tacjlBlyUMjWjsBKfzPqzWUl22YDSLOZ1P4XY/\nTi5XI5U6k242NBrCBIM3Eo1+dUiamaJMIhI5HUC3HLsdVY0Qj+9Ntdq8JLZel6V8a4TPMmAllTq6\nnq7m9T6KIDxGpZIlErmescQyN5AmELicSOTbgFc3hFew25/F7b6RWi1OLHYQirJP1z34/ZeRz3+a\nfH4OmQy8+y4sX57lyiufZsGCNHvtJfDZz2796W3NlV0DW9vD+ERXdj8Oq2tjDfZpb9ySZesQ8jlR\nfRjNEgntsywTrq3UGusawRdWqw2TSUvn05b11Xq1FwQkSUIQBGbNCvLee4Pj/txOcocZM6Zz3XVn\n8Pbb77Ns2ZM880xajwhOoSijfWho9uYdffHI6x0gFDqDSZPuoFAASFMqdVrlasBs1prTzGaBWm06\n0ahWAJo0KY0orsNmS5DPl0ilDsQgtZXKHsAeVCpZXK5nsNlyaM/shiY7RTSawGr9HibTLL23BjQp\nXYFOSaGTJjn1Apd2fmTZghFRXS43OMF//dcSVq9+goGBqVgsSc47bxbTpk2iXev774hcLketVuPA\nAw+kv7+fH/7wh6xfv56ZM2dRrSq4XJ2vlVQqRW+vpqlWFBVR1MYpFoshyzIPPPAAiqJw3HHHccgh\nhxAMBjGZBGq1sf/4x6XZ1ZZLxvxZHwkmQnPV3gncsMFo3ff555/AI49cx+uv70Uw+GvC4dPJ5Y6n\nt/clbLbX8Xr/RaGQIh5fQDh8LMHg9YTDZ9BOlpLJvZCkmfT1XUkotCcu1z9xOlUEwU0mM5Vk8hyS\nSYMcqvT0PIkkPUYkci4jxfqWyzMYGDgXWf4X/f3Xkcn4yOW+UH9dEFbT1/cHUqnDCYWOaXu3QDb7\nSbLZT9Yb0YrFIsnkeXQnq+sIBh8gHv8S1erU+n5yuX3I5fYB4vj9v0UUNxKL7U+t9oku+6kSCFxB\nobCEaLTdTUEkm11MNrsYyNLbuwKLZSPJZB+FwudpJpIWy59wu9fo0cHD39gqlR0IhXZAsxx7hUDg\nJqrVOIlEEK+3qPvfjoek2hCETSjK58lmd6On51FstvU6UT+NoUk9nfA2fX33Ewr9iNaEIpF8fj/y\n+f30416F13sTtVqcRGIR1apRKVIIBC4mmTyLSqW9wu5k48Yj2bgRVqwocf31f2b+/Ci77aZstSEW\n2s1dI0sT7a09UfhP1eyOFu2NWxaLdYRK8Pi/f3MimoHxRLkPh+bGOkEQsFptCIJYb96p1ar1PwuC\ngMkk1a+Rbbft58UX107IcbTLHXbccRZXXz2TVCrNNdfcz223PUupNIlObgZDv5MJRdHOSbU6+qq6\nJNn093iBKj7f/SPGCBtjYTa3d+XbSCZ30y0bi/T0vI7VGieZdFMo7KN/ByeZzK51W7TGPp9DFCGX\nW4w2/7+lv+IA8nS6f/b12ajVarrswyj0CZhMIg6HQ/9eVXbZZUeuuy7Pb3/7d/bcczKnnHI4ExXY\n8HGAcb5uvfVWTjnlFHbZZR6JRJ6eHk1ued111/H3v79CX1+QCy64AL/fTyqVwufTmrlFUaiT3fPO\nO09vWtPGd86cObzzzjsEg0H9PIx9xW7cZPc/Be2dwBaLlWq1qj/ptY6DxWLhC1+Yyfe+lyWX2x6X\n609kMouJx3cnEMgSDs+mUpmNzfYGLtfrSNJk3O7rsFg8SJJPX3YyIQgSqipTKs3C7X4LRfEyMPCF\nDkcHIJBILAY+QTD4W0ollVTqdEaatMrlmQwOflknvdeTTks4nRnK5fkMDn6HkX6QjUa0NIHAbxGE\njYTDrQ1TPT03IYoBwuEfDLO/Xt14XMVufwGP53ry+bIeVqH9SARhNYHA7wmHv8zIIRFO4nGt4qy5\nOdwGRIlEDsTtfg1BmEkk8tUR9tEOgWJxIQMDC/F4bsduz2E2i/T2XkY8/jlgLH62CoHAz8hkjtct\ndyCROI5EAiBLT89KbLaNOvE9g05uFrL8DF7vGt0NY7jzJFAs7sXg4F6AisXyCj7fMhQlRLG4Rrd6\nG4lYWwiHl/DEE/DEE1qIxbx5rzNlynt85StLmDlzPFKULQNBEMjlcvUJcmsjgxNPdrf+1TUYXWW3\nUxxv9/Ea/zh2SkTTOr4VJlLj3Vw11mzBtLmsWq3Wq4JG8aTVcUFDf38/weBYZE2jh/ZgaKKnp4eL\nLz6LO+6IsueecebPf4fVq/P8859l1q/3kM9Po715WFEkajUTUKZUag9JUIEEshzC643S01Ojp0fg\n5Zffw2J5ljPO2AZFsXDPPZ9l++1ncNZZL1OpqBQKkMlANFpj48Ya77/vJJXauV7Bb22gTVIoNI+L\nlURCkwmazSH6+5+mUskQix2EFufbjAQez6skk06GFjocDHV40L5TX5+NYrHRVGj8p6pivRppMmn2\nb5/85AIOPnhvqtVayypwY3yM/zdfwx9/8msESgCk02mcTme92GD8/+ijj+bQQw/D4bDXCa6qqvXV\nFFluUM5p06bV91er1Xj33XcJBjXt83jn9XE1qG1tN5GRMN64yk6dwKLYeDLvhDPPPI7LLz+eaPTz\nBAIvk8lsAiYTiRxAIPAI0aiDQmEhhcJC/R0qgcByYrHtKZc7VzXt9rUEg5frIRTdlsythMNfRJIG\n6O+/nmRyB4rFoXZm7SiXJ1GplJFlO4LgQFE2MrZlFzeRyClADY9HixOOx514vXESiVMol0cbFymQ\nzy8in1+E1oT2IGbzRrLZJBbLAsLh743hmDRobg5nodl3fQuTaQaq+gowl9E5JDRD0Zf8P0U+v2u9\nSczt/hNO58MUCoWmqOJuSBMIXDmMB6+TROKEDsRX0R9gvDid9yHLJsLhTs4dw0GgVFpIKNRHIHAb\nxeJ3CQbvRxASpFLTKBY/x8hVahPJ5CdYs+ZHPPfcl3n44U3MmfMUu+1W5cgjpzF//g4fmaWZIAiI\nokgqlcLj0R6ItraH8okcmo/L6tpIxzhcHG83jFfG0L5CZzSiFYuFCR9L474hSRJWq41aTUFRavVG\nNeNBRRRNHaUTM2fO5OyzR5M+tnnQKughFi/+JF/84rH10IrBwUGef34t69dvIJGokc2qFAo1IpE4\nsdh7RKMvstNOQWbPdmGzgccj4vEIbLutn+23n0Ff3151zf/Uqf+L3b4/l112FAA/+cmJyHJ3CUQi\nkWCnnb6DooTZbjsvuVxDaiJJfyOb7dyPUKn0MTjYB5Tp7X0FSQoRDu+BYWnW1/cwoZAR79sOC1oY\nRjuy7LLLbvW/GXZYoJFwg/galnGg6bUtFrFN6tBeHGv/8+ZUfdvTzj5MGD0TDRmZMQcbPDGbLeHx\nWJkxY0bLO9etW8eLL77Ixo0befHFF9l99915+eWX2X333bnwwgsJBAJ84hOf4MEHH2TKlClsu+22\numPJ+B7yh51T1C53i0qlRjI5Pq+zDxuyDIVCDlVV681kI2G4TmCg3mygNU4M/dE++uifOffc+0gk\nDqKv74864dLiS7VI4SNpbyDq7X2aarVEOn3ckP1pKNPXdx/ZbJBcbuSIX4fjVVyupwmFDkdV53bY\noorXewuybCccPglj+cZkGiQQeIhisUYyeQ5jcSUAhZ6eZaiqBau1TLFYHkHiMBzyBINXkcvtitu9\nUffFHYlMDkWjKvwNDPNwr/cx7Pa3yWZF0umzaXa16IwkgcBVxONfpVbr9vkFPJ5HcTo/IJutkkqd\nRfODiSD8A7//IV1fO9ZGSY34qupKqlWZbPZSRid1aIXJ9Bq9vX8iEvkGzcRWkt6lp+cpJClOMtlD\noXAanc97nkDgp0QiF9BeYZfltey006ssXFhlyRI/++47/0OwNGukcpnNMl6vhzVr1rBs2TJ+8Ytf\nkEjktogB+Xhht8s4HBNTrVMUhVgsN/KGHzFMJlBVrWprMklYLI25oBv5HAmKolAs5hEEAZttOPeS\n1vc0VugEPRFNuxeUSgVqtVpHffBYoDXPNM6J2awRd0UBVa3ViX2zX/DWYPu3yy4ncN99l7D99tvX\ntdImkwlBEHV3B7X+7wDhcJjddvtv1q79H9xuF0aSWzdsv/0t7Lxzhoce+taoj2nSpMvp61NYteqb\nLFp0CuvXHwjsh9f7AMnkvowuElnB630Ti+U9MpkqtZqPUimJ5qlr3BPfQrM3A3iT9gRSj2eAl1++\nAI/Hg6qqekOh0vVBWmvEstYfvg2+oaoKlUqNcrmkk+Xhnq7GSnyNc/NRNAgbD20idrsDl8vJwQcf\nzCOPPIKiCGQyjQcVo7nPZjNjs8m8+eabvPTSSwAsXLiQGTNmcOqpp3LvvfeSz+e59dZbWbduHQsW\nLODUU0/F5XKRzZYoFMpDD2MUGG7+Haayu/XcQEaDRmV35G2NztnN8Vs87LD92Wuvlbz00ptEIvsQ\nCNxNJPJFQCAc/gzB4AOEw8cBffX3xOMH4HKtwe+/iWj03A57lQmFvoDT+QZ9fVfoBLp7YEMutyu5\n3Hy83qeQ5UcIh0/VP6+Kx3MLVquVcPjzqGprhbFW62dwcCmCECMYvINqNU08fg4jaYG1RLXHiUZP\npVYziHyKQOA+XeIwXChE2zeVn8LrfU334LXqljRFenoewWp9j2QyOESL2wku12+xWJS2qrBMMnmU\nrvdK4vcvx2weJJHop1gcuk9JeomenqeJRH5Iqza2HTZSqWP0BrQMPT2PYLNtJJ2WqFan4XIliUTG\nXp3WYMdkeotc7tsUCtP1iu8GcrmqLnUYmfharX/E5dpAJPLNIa9Vq9sSiWjWOqK4Cb//LszmKJmM\njWz2dLSHgTCBwC+IRC6i08NLuTyb116bzWuvwa9+tYEddniOBQtK7Lefg8MP332LW5oZlYVkMonX\nq/0utrbK7kTi47a61g5FqemNaNpqmyxbJ7w5zEC3FboGNt+qTrtvtDa7mc1yvaJXqylUq42btNaI\n9tETXYADD5zNzJkzmohug4QLgglRNFYSNNIbDAZxONbjcNh14lZrcoIYSnxdrgpe79g0lqIIkqRi\nNpvx+XZh/fqdgGcRxReAfRgd2RVJJucBs3G7b8HpTBIOS3Qvvgydm/v6TPWVIk1XbaI53MOo1htQ\nFIV8Pl+v+kqShMmkuWPIshlZNuvEt0qp1Ii+7lz1ba/Ybs1yh0Zlt1KpIMvyEFJqVGRzuRKyLDF3\n7lzmzm0txN1556+xWCxYLBYuuOCClteKxcq4iS6MU7P7cZpoW+93wx+3qip6pcHoBB6/3+Jtt13I\nPvt8F1U1USzOxO1+gnT6EDTCexzB4P2EwyfSbJeVyexEPu/X/XbPppNkIZvdhWx2R4LBBygU3GQy\nxw9zFALJ5EHAfvT23k+5/DQ2215Eo58nlRo+4UtVfbpHcI5AYDmwiUjkNIb6xFb1RLWdCYW+1/aa\nR5c4qLhcT+F0XkMq1UM+/0U6E1UFn+/n1GpzO3jwWtuS1W5DUSJEIp9mKIlW8Psvp1g8eAQPXi/R\n6Bf0fb5b1/fGYprzgst1D7Is6tXYscBFInEiiQS4XNdgsbyDJIHDcTO53OmMrbJbJBC4lHj8PGo1\nbewbUoccXu+j2O0byOXKpFKn0qny7XLdg9nsqMcnDwdFmUw0amwXpbf3QUymN8nn/0EkciejqdLX\nalNZs+Z41qyB3/wmxjbbPMbkyas59tj5HHPM7tjto6vGjRWCINbTeLTvsnXNUxMp8fh48fhWMtkc\nrKCRgHbyOcLexuDuUKmUu67QTRTaHSTA0AIbRLeh32xvRPuooaoqV111Uf3v3Uh4u7vDl798TEuE\nsRFm0axDNiq+NluMWbNGtkJs/TwVs1mzmHO5jGX+2cjyIF/96iB33y2QSIyuX8DnW0Estg/ptIzP\nt5JcLkexOAvtHtRMmoeek/7+znOV5vfcqPAaNm8NEqzJGiqVSp0kG8RXuw5lZFlGVRWq1RqVSkW3\nn4PuSWVbb5ObIFBvLjPQbf5VVUgkcsiyVH+PFpGtWZIVixXK5SqyLFGrKYiiQKlU3Wwbyfbja8a/\nBdnVMPKF0V5pGK4TeDSTrdPp5PvfP5Zvf3sVNlsUVRWRpDVUqzsBIuHwCQSDv9UrvI3IxVotQDh8\nOn19vyYeX0Sl0sm/VSYcPhmb7S36+i4nFDqZ7hrUDQQCDwCTyGYvx25/hJ6eu4nHv8zoJAoOnbBW\n6O1dgdn8T0KhI4BdsFofw+NZq6ec9QyzD4FM5iAymYMwmT6gr+82arW43phmTILvEgz+hljszBHj\nehtaXAWn82nc7ut0XetSIE4weDvR6FeG2IoNv89tCYW2RXMweAm7/UuAjVjs66PeRysMje+RZDLz\nSKVAEAbx+3+N2RwhmQxQKJzK8NVpLWwiHP4unaUWDpLJ4/QqdV6XZ3xAPl8imfwi0E9Pz03UanOJ\nx/ft8P6R4CeTmYXXmyKX+wE9PSuxWjdSKJRJJk9hNF6+oJLPr+X55y/i+ecVrr76z+y6a5I99lA4\n4YSF+Hxjl2N0gygKxONxent7t0pN63CT7VjxcVld06zHtD8rSqvfrMmk2ThtCeKnSQZK9f6K4Vbo\nNsfKrPW+IdYJb6VSQovjrbX4smvygK2DqGhEy+g/adiejQRBEPjmNw1bzOYwi4bcQbs+tT87nSn2\n3HPvMfXMGJVdVVXx+yWgBpgIBEz88Idf4MADX+Gii/7G6tU7M9z9XZLeRlVtGA/pDscCjjkmyO9/\nv4Z8vkg22+wsM/QC6ER2jYpuN921MR4N2YOm3TXGWiO8EpKkEWBN7mLGSNDT5A5lmmVaQ49x67Iz\nG6v1o6oyJFnN+Hv7/yfuGLu/Nn7x0laGkSaz1k5gUe8E3vwlppNOOohHH32bFSvc+HzP4/U+SzQ6\nBa1iaxDeBwmHjwCaG7lkQqFT8PmeplZbRzLZ2c+2UNiBQmE7fL7foyhJEomzMciTxbKCnp73KBZ3\nJBI5H+N0hsNfBBL09d1GsQipVOM9w8NMPH4MmtfugwjC1ajqPEKh0euwAGq16TpRreD1/gGr9W2y\n2ShW6zzC4QsZ2w9YJJs9iGz2ICCN2/09VLVIMnnomIhuK3K43Q8Tj/+UarUfp/NJ3O7HKRSKJBKn\no2W1j4QsweDlxGJfplZrSFVUtb9eNTWZNhAI3IkkRUkkpg5pEJOkl+jt/Qvh8Gjtzewkk8foxLeA\nx/MYqvoQtZqbdPqoUX/7ZthsK3E6E0QiXwYgkfis/koRt/txnM73KRbTxOMnAJ0M6d8nELhLl4Bo\n19/AwOEMDMDKlRVuuOEvzJv3GgsXVjn++J2YMWOsTYMNGBPt4OAgCxYs2ColDBPJcT5eBQejOKDU\nNdRms4wkmTeb+HUiUGPXAo9PxtBaoTZht9vJ5XL6MnVrJ75R3dtaiK6iKE0kfPOqzYa7Q7vcwSCD\nxx67kDlzdqRarQwrdzCgqqpOdrW/H3zwHH73uwjQx5Qp2nv23XcB998/nXPOuZtnntmFBl2p0tNz\nB7LsplQSsFjMhEINHa4kgcvlJhzeBVl+D7f7TdJpP5pMb+TKbjvR1SQKrUUxYzwARFFtGRON0GpN\nbuUyQ+QOkqQl69lsVn1FoNpClLs3uTX//aO5xkRRpFAoYLVqDxZb2xz1by9j0NB5MmvvBB59pWH0\nk+Nllx3DG2+s4J13Pkcg8Gtcrv8mk/kZ2vCKhMPHEQj8nlhsXxRlx5b3xmIHYLP9i2DwasLhbo1e\nIrHYZzCZwvh8F1GpVLDbtUre4GC7T66BHkKhMzGZwvT13UShYCGdHtmuTBP836ovid+KzfYmkyZd\nSybjIps9bRTvb4aZZPIggsE3UJT9kaT36e29gnj8TMbefKXg891CpXI8mcy+yPJa+vtvolpNEI0e\nS3vTQTeYTK/g8z2hB1ZoUoNs9hCy2UOAgq4Zfp9sViKTOZvO5+MtAoEHdLu17s1ItdrUeniFJP2L\nYPAORDFGIjETQbDgdGbHEKfcDjOy/ArJ5CVUKkGdmD5IsZjXrdK2GXEPLte9yLKLSOTzHV61kk5/\nWnekqOJ0PonL9SiVSppY7FBUdQ9E8U18vseIRLrZzpmJxw/i6afh6adVbrnlJebOfZoFCyocddRU\n5s+fPaabr7EMHo1GCQQCW+UcNZFEZ2v8ft3QvLwP6M1h46+lDDeOwzWiTRTaG5glyVx3XJBlmUql\nMiTS2KjaaURPayT6qIivojQcBSa62twsd9CaE1XOPPOkUckdjN6aarWCyaQ1l0uSmcWLP4Eg3I2q\nSuy/f8PaMhDw8ZvfnMPSpTfzhz/sBFhwux8jmVyIqtrp5BtsNje+q6LY+eMfr+eSS+5k5cqNHYIK\nFCZPbtiXGUS1k7Z55PEAowoODZlDJ7mDySRhNkt64U3TrxqfXa1W9eurm1WeUQ3+sK3NtIa8UChE\nIKBVy7e2OWpcMoatsWrSDc3LaM3H3f70P5ZKw1iWvfr7A3zjG1P41rcyRCJnIMsv43RehqLsTT6/\nGBCIRI4mEHiMVCpDudwamFAozKRQOIW+vtt1WcNuLa8Lwqv09j6HxdJDOr0EQTBTqz1PuTwyYazV\ngoRCSzGZNtHf/wtyOSeZTOeldVl+ip6eV4jFTqZanawf264UCrtiMm2kv/8WyuXsqJrZAOz2FTid\n6/Ulepl8HqCoB0K8Tzy+E6XSESPuR0tDu4lYbGld/lAuz2ZwcDZQw+V6EpfrMbJZdVjnBafzXiwW\ngXD4O10+x0YiYThlxPXGtk0kk/66HMFmewSnc2DMjWjV6kw9XARcrksQRVmf7P+Pcvkzo96PhiyB\nwGX1VDWAdPoonZiWcbn+iMv1MKVShljsODpVZL3em1GUnYnF9hvF50lks0vIZpcACjbb89hs36Bc\njpJInMroxkEgm92Dv/1tD/72N7j11r8wffp17Lffzixe3MuBBy4c4aYi1F8fGBhg0qRJW91ECxMr\nY/i4QFGqVKsNSyer1b7FHAhGbkTbfLQ3MGupazK1Wq1e8WuWmGgrhGob0dNeayd6WxpDl9+H+vtO\nNIY2dXWXOzTCmsBkUrBYtHHx+XzIcolq9V1OOumclv1bLBZuu+08zjlnGQ89NBuns0w6bczxQ8+9\nlsqmfYbNVsPlcnHnnZfw4ouvcMYZP2NgoLnglGLhwgOAxsPK5jppNAI+jGQ76lXwZrlDqaSdH0mS\nmqq+km5lZ62T30ql2tIY2cBEWpuNDqIoMjAwQH+/1luytc3B4wyV2CLHsgXRLpweGhSxOZWGkXDK\nKUt4+umbWb7cR7m8GzAVu30lbvfTqGqMRMJLJHIAfv9LFApJcrmD2/ZgIxQ6lZ6eJ6lWf4/JFMRu\nd6AoLpLJHYnFzqf5h53J7Infv5xaLUMisZSRKq612mQGB89FkjbQ13cj+byjifRuoK/vbvL5AwiF\nOjdq1WpTGBw8G8jh9/8foriBcPhoYKcOW5cJBK6kWDyIcLh9ed1KPK413Fksq+nvv1En0J3lAxq5\n/ECvxHaq3pjIZA4hkzkESOHzPYgsD5BITKNY/Kz+/RR8visplQ4gFttr2HFqoJdoVKt4iuJ6AoE7\nKZf/iqr2E4n8dJT7GAq//3/I54+pa3zN5n/Q13cLECMen0ulMpIc4QMCgV/qsoFOTXAymcyn9FSh\naj1iuVxOEY1qjX4+39UUiweRy3XSio8EEUgjinuSzX4Oi+VVfL6bgTjJ5AxKpRMZufr/Hj09z/Hu\nuz/h3XdN/OpXm9huu+fYddcS++5r5cgj98Biaa2YNzdHGJNtpbL1aVr/Eyu77RXOiSKfzd7pwLBW\nkaPZF4xcxGkvkGhWlmZUtarLAlqDBJqLJ82NS52JnlbxHcnGa7xor0p28/fdkhhJ7tA8/iYTmM0N\nb3yHo4YgVHE6hxZSJEnippuW8te/noKqDt/vIUmN8bVaa/X97bHHAs466zNccknDgzcQKLDjjttN\nGNFth3EcWpCUsb/Wqm+5XKZcLndscjPIb61WoVarYbPZUFXNDWGovdmWb3ITRZH333+fbbbRVg63\ntr6C/xAZgwbjot38p//RdwMbuPrqk1i79j5fNzRqAAAgAElEQVRWr96DcrkPSToAUXybePwcRHEj\nXu+bevfp25jNf8bhmAdok5KimKjVZIpFK+XykXg8z7Fp01EYZtlDIRGNnogoRujru4FMZib5/Mi6\nzWp1KqHQOUjSRoLBaykWVyNJhxEKfYfRWb04iEZPBhQ9bOER4vFZFItadVKWn8TrfVX3vB2+I79U\nmsPg4Bw0y7EVWK3/IpHYjmLxWDSCei3V6u56RPJo4CEW0wiq2fy23iS3kVotRDL54xGb4rpBUaYA\nISqVb1CpmOjruxlVjRGL7UutNtqmsDKBwE9IJJY2RSpDpbIzodDO+jG/QV/fMiBOPL6QSuWwlj2Y\nzavwev9GJDJa3bPUJNGoYbf/GUn6ErVaL/n8+BoDnM77sVgs+jUApdICQiGNNEvSO7pGOUYq5SWf\n/xLthFwQ3sTvf5xIpJHgpyiTeeut43nrLbjvvjSXX/40u+6aZY89BD7/+UXYbJqUxPgNK4qCyWSi\nWJzY5oaJwMS6MXw85mBtlUKkUulk2L/5MKRom2MVORq0R/9qiWgmFKValwUMp4E1qreiKLYRPW3Z\nWVUVNGXB8DZe48GWImubg2a5gyA09MMGtJUttf7wMG+eqe6X32lMNIsyL5nMOmDHIa8b0Miu9meL\nhZYH50DADYQxqE9/vwWbzdYydlvKMq7xnVqrvhrpNcJI2pvctHtyI+RCI8DGdzLkEUPJ78RbmxnX\n6gcffMAOO+ygV+/HvbstgnE2qG1l32IENDQ6tSZ97vhtaMYz/3g8Hi65ZAFnnPEeyeQM8vkZmM0F\n3O6HSKePJpmcojcXgcOxjnL5BSKR8zruKxzejUDg/yiVTKTTJ3b9TEUJEAqdi832Jv39VxAOH4ai\njOR1q2C3r0RVHeRy38Xv/yMez02kUmMJmBBJpw8hnT4EWV5DX9+15HIvIopfJBweW0ObZjmmVXtl\neS1+/08pFl8hmfw+tdpuI7y3MyqV7YjHo/T0ZMnnDyIYvJ9CoUAyOdbQCi1sIhb7Goqi6ZQ0cqpi\ntb5IMHgjlUqSaPQounsMDxIMLtPlHN0fACqVXQiFtH1YLK/T378MRYkTj++GLJex2zNEIl8bw7E3\nQ8XheJJ4/H+o1QLY7c/j8dxItZogHv8ktdr+I+7B47kTQZhOLLa44+vV6iwikVkACMIAfv+9mM1h\nslkTmcwZmM1r8Xpf1pspu/3A3Kxf/2nWr68Rjd7CiScaukOhfgNq/Na3vjlqYhPUJm5fWxZal79B\ndseaYjncfkGTFBjVys2xihwOtVqNUqkAGNG/DkCoV9QMCQOMTgPbSdfaHFbQqmsVWiq+Yx07gyQZ\n9+ytgeg2o3nsmkMYJEkjowZ+85tvAOhNbp2r4N/73on09jr41rce5a23Os/jZnNzZbf1PO2wwzTg\nVQz51+TJzpaxm4iGytHC+BzDoxda5Q7NSW6gjZ1GypX6daK5SlmayG+NcrlCtVppee9EVH2NlbV4\nPI7P59vqHsYF4T9AxqCqjSqIUVbf/Kf/8XXvLl68O2ee+U+uvDILOEmldqKn51WczsfIZg+tb5fL\n7Ui53EMweAXh8FcZ2gglEokci9X6NsHgZbreM0A3FApzKRTm4PX+CVleSTjcWRbgdN6L05kkEjmO\ndFqrdIZC2yOKEYLB26hUiiQS5zE2n9gQqlojl7sMv/9PBIOX6nZr3Z++u0GS1iIIQbLZX+P1Po7d\n/meSyR7y+ZEsvFrh8fwSSfIQDmsBC/n8/kARr/cRbLb3yWQsZLNnMdz3FMXX8Pke7RI2IVAs7snA\nwJ6AgsPxDG73LyiX08RiJ2M0iGmOC88SDv+Q0VXONZRK8xgcnIfmX/wjTCazvqz1BNXqIaPej4a0\nHkV9AYavcz7/CfL5T2DYsAUCy1DVOPH4AiqVoRHUPT2/oFpdSCaz96g+UVUn6bZzAClcrp8hCHkq\nlcnAAMNbmlU54IDbue22Q7Hb7Ri/QVEUyWazOBwO/TO2rklqpMl2rNgayXw3bBmC0NA7bm4oxXAy\nhmanHpNJwmazoygqilKpV3ObLajGU40dXteq6ue6We4wOuLbai324ZK1kdDwom1UJZvHzmSqYrNp\nzgRD5Q6dq+CHH34AgiBw6aVw1ll/JJEY2rdiNjeuEau1leJMnToJh6OkhxhBf39jfvkox65Z7qB5\nG7dKUsBIFSzWryXD5UEUG9sYDW+G5rdardQb3hrXfjdrs+G/u1FsiEQi+P3+rW5+Gunc/VtYj2k/\njMYPfnMjIWHzfBm///0TefPNm3j00X0AgURiV3p6VmGzPUmhcFB9u0olSDh8GoHATUQix9Kpg75Y\n3I5i8SsEAssplSyk050tyvSjJpk8GNgfv///UJSQ7rUr43A8gNsdIRY7gsHBbYe8U1ECeshFmkDg\nLmq1GPH42QyX4AZl/P5rKJf3rldztVADBbf7jzidK0gkplAoDHfM9SPA77+CUukAIhHNYcJIQTOZ\n1tPXdzuKEu4SMNG6n0DgZ+RyR5FKzW97zUoyeSzJJAhCmEDgN5hMIeLxHYc0idntv8Nuz+vL7SNB\nJJc7gFzuAKCif/eHyGTWYjbP2wzHBfD5rqVUOopkcg9AxWJ5Fb//VlQ1Siy2+yiIr6Y31sh2J2Iv\nUCzuweCgFswhy2/Q13czECOR2IFy+Vh8vqsoFJaQz7eP5+hgt/8Vi2UB0ehn0SzNHsPheE+Phz6W\nRpQnQIlDDrmDm2/+lG5v06zxE3n33fVMm6YZzQ/trDa205aSq9XukZ+SpE3cExk1PPE3yq3rZvJh\nonlZWate2bZII1qzU4/ZLCPLtrpkwVglbEgDhlpQjQcj61qVehKVIYvopPOdSGuxicZo7LughM/X\nO8YquEbo9t13d846ay1XXBFHVVsLRa2V3VYe4Pf78XhqdbI7ebJmRzZa/+EPC826b4Potze5GTCa\n3EwmE4qiIgjaaoHW52CQXxuKoui69+aq70hNbq3zL8D69docPBq9bnOgRCcIgoAkifq1vHnz3UjN\nwR97NwZtwirWj9c48ZuP8VV2jWO44YaTOProB1m9WiMRicSe+Hx/QxCeIp8/sGlrK5HImQQCD5HL\n/ZN8vr1xDUAiEjkRq/VtPWDi83TX8gKYiUZPADK43V8GqhQKFzEw0MkntR1uPUWtiM/3IIKwXm/U\nmt6ylc22EpfrLb0q3d5QIJJOLyGdXoLZ/A79/TdRLme6Wo4JwhoCgQeJRM5DVYe+XqtN00MtFJzO\nP+N2/5xsVungvPABweD/Eol8DVUdLgADVDVIJHIqALL8D/r6bkJREkSjh9LT8xy12q5Eo91s3YaD\nmXT6cEymDxCET1OrFZg8+Ro9EOMsOiXmdYZCIPATUqmTKZcNKx6BUmkBg4MLaBBfrSIbi+1GtXpo\nyx5Mptfw+Z7UvY1HRxTK5YaUQpLewuU6DZiMqr6K9pAxNsLhdC7HYjHrRBc0S7Oj65ZmDsefcbuf\n0uUUizjssLf4xS+OQJZlWg3XtZv+Bx98UCe77ZOtJIk4ndaWyk6xWCGbLdYfWm02Mw5Hw3pQUVRy\nueKE6H8n2onhYzIF19HcUDZe4tBu+QUaCd0yjgvF+k1fa2CWm/S5ik6Ct6w0oD21zKjyNhO9TnG9\nzURyayS6o9MP5/H7hzajjdbd4etfP5GXX76CP/2plexKklAvVtlsrVxAFEU8HplNmwAyzJ8/b6sj\nuq2yj+Ymw87XiNHkBo2xkyRJv05UfcXJWPGW9Fh3QQ+3qLY80A2t+jaTXe048vk8drudfL57rK8s\nm3A4LEiS9h5FUcnnSxQKjZRBp9OC1dpYMa1UamSzxXEXIEb6fX7sZQzayZWp1cr6j2HruGj9fh9X\nXrkXp566hnBYW86PxRbh870APEk+f1DT1gKRyGfwel/Car1DdyYYCqPK6/c/TK2WJpE4q+N2UMbr\n/V+sVolY7CIUxUIg8CDZ7Cqy2S+M8htY9eX4Gl7vH7BY7iESORhFmUUgcCOFwsGjqlhWKrMYHJwF\nFPD5VmA2/4tYbE8qFY3wezz/iyTZdc/akc6dSDZ7INnsgUAKv/9BJGkjsdhczGZwODbprg1juymV\ny0aTWAWX6+uI4gzgWWBbuqfWdYOWqpbLHU2hMAeAVAogQ2/vSiyWDbqH71l0s0iDPIHAT4nFzh8m\nOKOd+L6O338LqholHl+IKMq43e9vRlVZoafnLhKJn5HJTEYUPyAQ+F+9+cxFPj9yJLLL9WskKUAs\ntqTLFhK53GJyucVAmv33v4xly85rmtwbD7A9PV5KpRJ77bUXU6dO1Sf5xiQlSSI9PZq8IRqN8v77\n7zN37lysVguSJJJI5HE6LdhsMqqqsmbNGmRZZtasWbhcNgShWJ+Ix4utSSf5cUS75VfDpmqi9L9g\ndMKXy43IeJvNjiBIOtHVqqXNK4Uf1vJ2w7IKDKI3XIXTeM+WthYbC8bWKJcnGBz+4b97FVwjcT/5\nycm89dZdrF/fCPbRrMc0WK2t1WRFUfD7NX1rX1+GvffefasZO2glut3CLNqvkeaHgW5NbobsoVZT\n6nIrTRpkxmLR5nGD+Haq+jocDkwmE+VymYsvvlg/1s6k1GYz43RqDyDJZJJisUh/fz9Op9Y/VSiU\n8XptSJKJUqnEm2++yYwZM/D5fPT0OIjHc133PRxGOo3/Fg1qoighiqquu5qY494cGYOBvfeex/e+\nN8D3vz9IoaD50sVie9HT8yKi2KrhBUgmd0eWJxMIXEEkspTOVUCRaPRoJGmAvr6ricf3pVLZQ3/t\nHQKBFUBQDwpoSBAGB89Flt9j0qTrSCanUyiMtmppIpn8NKDidH4fQSiSTh9AqbRobIOBjVjsBO1P\ntr/T23sF+fxLFIvfp1TadYz7AvDUrcHc7u8gil4URQA2AqPLU2+FVhUOh68gk3ECZTyex3A4HtD9\ne89iZG/hPIHApcTjX6NWa2+ecBGPG9XNBL29D2KxDJLJOMhmz6BBHNcTDN6hk/ZOgRadIFAqzWdw\nUJMZOBxXIEl5RNGM2byCSuXIUe7HQJFA4CdEo9+uV8gVZXo9IEOLRL4HWY6QTktks2fSPjZe760o\nyo4kEiP7+ApCgs9/fjnXX38BJpNJn7Br9YnXbrfzwAMPcPHFFzNnzhwOO+ww3G43kyZNJpstUanU\n6pPr8uXL+fnPf8706dMJh8MsW7aMmTNn1olusVjka1/7GgMDAyiKwrx587j00ktxOq0Ui5XN+r1P\n9D3z47K61oBRCRr7cauqolt+GY1o1ibSufnjYJwbRVG7OC5U6tZiW4s0oL3C2ax/NWCQS0UZvc53\nS6G9UW4kVwNVLTJpkmfU++8kd5g5cxvOPHM2P/7xJrTIYE3G1LCOM9XPtfEgM3WqFiIxY4ZD7wn4\n6DE62cdQDPcwAK1NblpjpViv+mpjoiIIqi4nMGE2S/VCgiF5MMZ9v/32Q1VVDj74YCRJYtGiRZhM\nArlco8IrigIOh4VarcZVV13Fww8/jNlsZscdd+T666+vr6pJkom1a9fy9a9/Hb/fz8DAAOeffz5H\nHXUUDodMOt3JV3h4bIaMYcyf9ZFi4q1Cxi9jaMZppx3KO+/cxQ03ODEIQSKxB17vq3WXhmaUy5OJ\nRM4gGPwNyeSulMudSWW1OolQ6Dzc7qewWs/G4ZhLPj+fSOSbdKtslsszGBj4MlbrGiZNuoZEYjbF\n4tBmpHYIwj8IBleQSJxJubw9VuubTJr0c7JZi16hHNvYq6qms8pkbiAQWIkgPEI0ejCKsueY9qM1\nXl1DIvEVKpXpaHrZx3E47ieTseokbORGO4vlCTyed9uqwjKp1FF6VTZFb+/vsVg2kUoZzXLtP513\nCQR+QyRyEcOlqmnoIR7XiLoghPH778FsDpNKFbDbHeOqThvwem8FdieZPJBUCmT5Td3HN04isTPl\n8pEj7Dupp/n9gG6VZy0S+dT69r29D2O1DupSjVPp7b2HSmVvMpndO76/GSZThNNPX8EVV5xQvyEZ\nk6Hx5K8oClOnTsXhcLB69WpWr17NVVddxb777sv111+PooiYzSYSiQTXXnst9957L1OmTOH+++/n\nuuuu49prr8Vm066De++9F5fLxc0330ytVuPkk0/mhRdeYNGiRciytFlZ7f/JMgYj2EdrFh7bexWl\nRqlUrJMSzSrSNMSqamKOs9FopnmWCk2NaGNzXPiw0dyspBEhtavOdyJtzUZ3bA0LMRhdNVyWq3i9\nw/WEDA/jYeDccz/LU09dytNPa2S3WbNrsYj6cTWW5KdNcwNptt129ER7S2K8RLcdI2uftSjv9qpv\ns+yz0YgpIMsWzGYz+Xwes9nM9ttvz4svvsjy5ctZvnw5Pp+PK664gnnzdqNYrLQcw/r16ymXyzzx\nxBNIksShhx7K22+/zezZs7Hbtbn4pz/9KV//+tf51Kc+xYYNG/jc5z7HkiVLsFgsCEJxzPPIf0SD\nGkxMJXZL4ZJLTuaNNy5i1aoghcIBACSTu+LxrKGn514SifYGLplw+Av09j4H3E48fkbb63mczvtx\nuWpUKn6i0R9jsz2Bqg4wGpJULO7EwMBOehTwVcTjcyiVDuuwZRm//3pqtZ10H15Bf/9cBgbmIooD\n9PXdQqWSIR4/i+Gb2UBb4r+KSmUvXesLkcgX0WyxnsXj+TnZrEA6vZSRSKosP4vX+xLh8PebtjWT\nTh9BOn0EghAhEPg1JlOYWGwBlUrnpXSv9zZEcSrh8DkdX9fgIR7XfGVNpo0EAr/EZIoQj8+mXP4M\nsvwUHs9bw8TmdoeqBolGv4jdvgKrdROCIDNp0hUkEpMoFr/AWEivz3c1pdL+ZLMNu7ZyeS6h0FwA\nzOY19PXdjiDEice3pVw+rm3/6wkEfqU3s43W3smrxxMD5HA6v4YgTEeSnkCzeJve9Z1m8ybOOONR\nLrroMEqlUj1Gs/Fb1ioV+XyeRYsW8de//pVnn32WRx55hCeffJKXXnqJfD6PxaLJF/7yl79wwAEH\nMGWKpmc/+OCDue6661o+8/HHH+cHP/iBTqglDjzwQF566SW9SrF5D8z/v0Ft7AWCarWRDqU101hp\nWMzpe9vMSb29oUfzKbXpS7/VekRrMxH+MIniSBhOGjBaWzNt+y1T9W12hBhLNdzhkHG7N59wCoLA\nhRcew6uvPkgy6cdsblh5NRrUGtfQLrtMw2x+kiVLDtgsfflEYCjRnTht+FDtc2sjpPGApwVaiEiS\nNv825sHGw1ShUOCuu+7inXfeYeXKlaxYsYL33nuP119/nd1337Me0Ww88M+YMYMLL7wQgHXr1pFO\np5k8ueHAk0wmWb9+PYcfrhXbpk6dSl9fH++++y477bQTJpM4Zu3ufwzZnahKbCdszg/CqFrceec3\nOeKIn5JI/JFaLUEstj2p1Dzsdis+3+3EYu2EFuLxTyDLm/D7f0YqNQmvt4gsOykUAsTjx5PN+urb\nhsOnIsv/oq/vSl3aMHJSmGZXNhe7/VUmTbqaeHznOul1On+Dw5EmFDqXbsv3ijKJUOhsND3uQ5hM\n7xMOH0kntwRRfB2//xEikaUdmtAEcrl9yeX2BaIEAncjCGEikSWo6sIh+/J6b0EUpwyrR1XVgO4M\nARbLq0yadJPuh3simhZXwe+/lHz+GPL5uSMNVR212hQiEe1cyfI/8HjORFVFYrEvMV5tocdzJ6I4\nlXh8af3fTKb3CQbvwGSKkUhMp1gcLplMwe//CZnMyZRK23XZBiqVnQiFtMQ7s/mfBIN3IIoxkslp\nlEq74Pc/QSTy/WE+Z3gEAteRTn+XbHZ7oIzb/QRO50OUSmlisaOBxjhbLO9x3nnP8F//pU12jeW2\ncr2qJopapddm0zrxZVlm1apVXHXVVeTzecrlMhaLoz4hR6NR+voa2j2Xy0XOaLvW0WmbjRs3AptP\nVif6prk1PrgPh7EUHNob0UwmCVm2tI3hxIQtVCqtOmBNIqHohFBpc1zYujxqR1Mx7dzQZTiRqLqN\nWiM+eCLjizfHEcLrtdDbO3wj8Wgxf/7OHH30k/zylwpms1QnXTbb0If2gw7ah698ZTVLlnySarUy\n4WMyWmxJotuOkRshFSoVLaCCeuiFiWq1gizLelMbbNy4kX322YevfOUrhMNhent9mM3daeSKFSu4\n7LLLuOSSS3C73SiKiigKRKNRgsFgy3g3z9fjOQ/jljF8nGAsoWl/nijN7uZf9M1Jbjabjd/+9ny+\n+MUnefXVE7FY1uJy/Q2LpUipVMLl+h422066kbYJUZQAM7WalXx+AU5nhEJhum5R1hnl8kxCoa/j\n8TyDxXJ5V6/dduTzu5LP74rd/iq9vd+kVstRLP4XodBo3BtA0+OehOYJ+yRO5+MkEttQLGpBET09\nNyIIUwiHvzeKffl1NwgVh+MverUX0ulzgCrB4BWkUidTKo322KBU2pWBgV2BKm73E9hsd5HLvUY0\neiMwvlQ1AJfrEUqlc8hmd8NmewGv1wiYOBaYPap9+HxXUSodSCrVGp5Rq21DOHwmoCWTBYO3YzLF\nicW2o1w+hgYhLRMI/Dfx+Fc76IS7o1LZnnB4ewAslntxOn+NJPmw2e6iUDiFsRFehUDgEpLJM6hU\nDL20rFfZAWq668IvqFaT5HKzOf/8Ct/4xhEtN+T25TZBEPD5fDz66KPMmTOHbbfdFp/PV1/qrlQg\nlyvVO3pdLhebtDZrAGKxGH5/6/XvcrlIpVL1f2/eZnN9IydaxvDxw+gKDu2NaGazvEWawNqjf41j\nNKqgWvpUQ2+4tRHd8RDJhoazczWvNb64u63Z2I9v7LIPv9+GxzN+GUM7LrroFJ555hrM5qn147Ba\ntfNpuBoYY3LBBecMcXfQvsfmjclo0e6j+2FeeyM1uTVrfZ1OJxs3buSdd97h8MMPx+Vy1a8lh8ND\ntapgNsNdd93FQw89hN1u55xzzmGfffbhyiuvZNWqVdx1113MnDkTgFKpgs0m1+fhZrTOxRMfQ/xv\nQ3a3rAvD2DuCK5VyfSI1NDF+fy833LCIM874C+vW7U+p1PAXFYQ0VuvdDA6eQzd7KofjH3rzWvdq\nK0AqtR+wN37/76jV4iQS5zLyqd6A0/kExeLRVCo99PT8gVTqTQqF7uR6KAQymcVkMouR5bfw+39I\nsbiWTOZSqtXtx7AfbV+53H7kcvsBcbzeS6hUPiAW+xK12uiJbiskikU7VquPbPYW/P5HMJtDOjE/\ngdETvDLB4E9JJM6sk7tCYRGFwiKghtP5JC7XExQKeZLJU+gcoKARxFTqNMrlGcN+WrU6i3BYSyYz\nm9+ir+92IEo0Oh2fbx3h8HcYuXmuM+z2FdhsEItdRiYDorhed12I6vrk0xj+2lEIBH6kN+V1Cz0x\nkcsdRC53EC7Xmyxd+he+8Q2tWa/TxGvcBMxmM3//+9/59re/jdfr5Z577mHp0qVUKhVd06b9Jg2t\n4vz58/nVr36FoiiIosizzz7L/Pmt3sDz58/nr3/9K7NmzUJVVZ599lm+853vtOzn/2PsGG2NoVMj\nWjeryOGCIEZCe/SvLFt0XbD2+YLQfEPdOn1WN7dRrr2aNzS+uLOt2Wg+p1Mq2liP78gjD5xQgufx\neDjhhG2JxfJ1EmmxiC32XcaYdI907jQm2hw1UdfHR0l0O2Fok5tSb2qzWq1897vfZc2aNaxdu5Zv\nfetb+mpJBZNJrP82TzjhBI466ihkWcZms7FhwwYefvhhVq5c2dIEaPROBINByuUyGzduZMqUKYRC\nIeLxeF2CNh7P3REfBNUuM0kkkhnzh32UMJtVCgWtBG6zOSbkwjRyuq1W+6gvxnajclmWkWUL5XKl\n7hbx+utvc+65b/Ovf7WnUZUJBu8mEjkcVe1GDosEg/eSzc4gn++ks22FICQIBpeTy3nJZj/XYYu0\nHlIwi1jsGJpTviyWtfT2PkE63Usud8povn4dHs9tmM0uotFPEQg8jCBsIBw+lvGkqmm62iDx+Kex\n21fh8bxEoVAmmTyT0fvWgsdzByZTP/H4ES3/bjb/k97ep1CUCNHo4ajqcBHF6wkE7iAS+TbDRf9q\nKOHxPIrD8S+9ecs43jSBwBVEo99iJD/g7ngXr/d2ZHkbBCFGPL7LmF0XXK57kCQ3icQRHV8XxQF6\nex/HbI6STtvJ5U6n1SFCc23QxmLkCk1Pz6v84Afvc+qpn+y6jXGTF0Wx3rxy44038tBDD5FMJtlm\nm21Yv34911xzDQsW7FlvKDP8OpcuXYrZbGb27Nn86le/4vbbb2fevHk88cQTfPKTn2TDhg2cdtpp\nnHDCCaxbt45YLMa9996LIAibPee53TYslomrH3yc5mBJgmq1RLVawWyWMZuHau67NaJ1g1EwkCQz\nsjxS02cD7dG/VqsNLTwl37FipJG1LadpHSs+jEa5dp1vO7ot7Y+UivZRo1Qq8eCDjzA4mOPSS7P8\n6EduvvKVk0f13vGOyViwtRHddjTrw+12Oy6XixdeeIFly5axatUqpkyZgiiKTJs2jWXLbiGVyuNy\nDZ33nn/+eb773e8yf/58MpkMVquVCy+8EI/HwwsvvMDixYu56667uO+++zjqqKNYvnw5xx57LEuX\nLqVUqozLjcHjsSHL3efffxuyK8uQz2eBj47sti+bWa02TCaTrg9TdKNyrdq7atUavvrVDaxf3+5A\noBIIrCCX85PPd0/HcrlewWZ7lnD4y3T3a21Alt+lt3clicQulEqLgSK9vTdjMgWIRD7LcDZXZvN7\n+HwrKRQkPRhhuLF4j76+e0gkPke53JzUpqWqORxvkkxOpVA4ccRj1qy8riSTOYlisZ0kZ+ntXYEs\nryeR2JlSaTiiZ6SqfWYEfa6K3f4sHs9rFItZEonTgP76q7L8DB7PG3plfawTVIbe3keQpNfI59eQ\nzd7NeKuxZvPf8HpfJhI5D6O6Kctv0tPzHBAnHp9PpfKpYffh9d6CoswmnR7ZGkxDBJ/vcSyWQd1u\n7EQCgRv0pryRrz+/fxWXXBLlhBO6a80nBfIAACAASURBVMkNomsymejt7cVkMnH99dczf/589t13\nX1577TVWrFjB6tWrufjii+nrm0alov3WbDYZp1OzvHn44YfZtGkTRxxxBNtso6USLllyKLfddivT\np09ncHCQ3/3ud/j9fo4++mhkWSafL7VY6IwHI022Y8XHaQ4eiewO14jWDZVKhUqlhCRJyPLobPiG\nRv/a6g1qRkWq2dWgHR+VfhOGajg/LCLZKbihGUbFV9u2IYmYqES5iUIzkbzhhvu49NL/x955h0tV\nnl3/N2VP7+Wgxs8ajQZjiR07qC+iCAgSLLGXxBYToyaWN7ZXJXaNoolYMSqCQQRUREGiotgjIKig\noghMnznTy97fHzN7zpw5008dzbquXFc8s3lmn31mnr32fa97rQh33LElp53WfDiQXPUtTTIrRSty\nh+Y8iAcepednNpsxmUx8+umnvPTSS1x00UUkEglefvllXn31VX75y19y/vkXEIkkiv9eUUhscziM\nJJNJli5dislkwmg0EovF2H333fF6vVx99dX885//BOC9997j3XffZe+99+bAA/PFv2AwTjabq3iO\ntWC3G4ohFpXwX7JbA4lEvh2i0+nrfqnzbbN8myzv36hHoVAW/mhSYeK3+6DBm29+ysUXb2DDhp4W\nTVbr+yiV6wgGKwdM5JFk2LBniUa3IBYbV+O4LhgMb6NSPYpavQPB4BU0Q7iUSg9u9wuk0wmCwd9Q\nTpDz1VwjPt9J1CKDGs1aHI6FpNOxqi4OgvA2NtsyvN6LerxPz/VW4XQuJZ2O4PefQvcgiO/o6JiO\n1/u7JquoSWy2lzAYviYS0aFQGNBo7IVBq9ag0SzBal2D13sCLtfLCMJmwmEn8fhpNKooMhheRK+P\n4vdXqtLL7/MpdvsywF+R+Docd5JOH0402nP4rzF8jsl0L2bz9sRiEImcQ63K7hZbvMWtt8Y59tjq\n7ycTXbVajcPhJJfLcs4557DTTjtx9dVXI0n5hB1ZF5tOZ3uEQBgMGozGyhXAYDCO1aqreHNJJNJE\no6kGfu/aqLfZNot22oNVKhDFnpXYxgbRKkMmriqVGq229h5Q3lETBA1arZZcLl+FlM+jnEjWJjQD\n513bs+I3OESyks63Eronew0+yonk9OlzuPba75gxY2/+538O6/Xa5XKHUjQid2gnomuz2dDr9bz6\n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\nQmCC\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x12082f710>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"%matplotlib inline\n",
"import matplotlib.pyplot as plt\n",
"from mpl_toolkits.mplot3d import Axes3D\n",
"plt.xkcd()\n",
"fig = plt.figure(figsize=(10, 5))\n",
"ax = fig.add_subplot(121, projection='3d')\n",
"ax.plot_surface(x, y, f)\n",
"ax.set_title('Original function')\n",
"ax = fig.add_subplot(122, projection='3d')\n",
"ax.plot_surface(x, y, fappr - f)\n",
"ax.set_title('Approximation error with rank=%d, err=%3.1e' % (r, er))\n",
"fig.subplots_adjust()\n",
"fig.tight_layout()"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Singular values of a random Gaussian matrix\n",
"\n",
"What is the singular value decay of a random matrix?"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {
"collapsed": false,
"slideshow": {
"slide_type": "slide"
}
},
"outputs": [
{
"data": {
"text/plain": [
"[<matplotlib.lines.Line2D at 0x120cfd650>]"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n//xncgsRBEGkMS32enrwwQcjrl9//fW4/vrrkxYpgiAIovNgudljCYIgiI6FDAVBEAQRl4R6PaWa\nkpKSVEeh00BaCEgLAWkhIC0EZmkhMepnSRAEQcSBXE8EQRBEXMhQEARBEHEhQ0EQBEHEhQwFQRAE\nERcyFARBEERclKVLly5NdSTi8f333+P+++/HK6+8ArfbHTLFebri8/nw17/+FS+99BKOHj2K4uJi\nyLKMxsZGPP3003jiiSdQXl6OsWPHwul0wufz4cUXX8QjjzyCvXv3ori4ODiJYzrAGMMf/vAHlJWV\nBecV279/P+677z688cYbyM/Px6BBgwAAFRUVeOCBB/DSSy9BURSMGDEilVE3nX//+9948MEHMWfO\nnOC18vLyqP+5uroaDz/8MJ599lk0NTVh9OjRaTPdzrFjx/D0009j7dq1GDp0aHAG6yNHjuDBBx/E\niy++CAAYMWIEJElCTU0NHnnkETzzzDOor6/HmDFjggszWZW9e/di6dKlwbWAGhsb8dRTT+GJJ55A\nRUVFSP7wwgsvROQPmqZh5cqVeOihh7Bt2zaMHj0a2dnZUe/VqZXyeDy46qqrMHnyZCxYsABPP/00\nPv/881RHK+ncfPPN+P777/HjH/8Ya9euxWuvvQYAuPvuu3H06FHccccdOHbsGB555BEAwGOPPYYt\nW7Zg8eLFcDqduOuuu1IZfdP5+9//jjfffBN79+4FwDPAa6+9FjNnzsQtt9yC3//+99i+fTuam5tx\n1VVXYdSoUbj11lvx0ksvYd26dSmOvXlUVlbihhtuwOzZs4PXmpubcfXVV4f85w8++ACapuH6669H\nYWEhFi9ejPXr1+P1119PYezNQ/9vgwYNwllnnYXrr78efr8fPp8PV111FYYPH47bbrsNr7/+Otas\nWQPGGG644Qbk5uZi8eLF+Pzzz7FixYpU/412sXv3blx77bXYvHlz8NqSJUtQWVmJO+64A5WVlfjj\nH/8IAHj00UexdetWLF68GA6HA0uWLAEAvPjii3jnnXeC8/aVlJTEnpWadWJeeeUVdt999wXP33vv\nPbZgwYIUxqhjOHz4cPD4wQcfZI8//jg7fPgwmzlzJgsEAowxxurr69mECRNYfX09mz59Oquvr2eM\nMRYIBNj06dNZdXV1SuJuNhUVFezss89mf/3rX9mSJUsYY4w988wz7E9/+lPwOytXrmRLlixhb7/9\n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\nAwAAAABJRU5ErkJggg==\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x10b48c6d0>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"plt.xkcd()\n",
"n = 1000\n",
"a = np.random.randn(n, n)\n",
"u, s, v = np.linalg.svd(a)\n",
"plt.semilogy(s/s[0])"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Linear factor analysis & low-rank\n",
"Consider a linear factor model, \n",
"\n",
"$$y = Ax, $$ where $y$ is a vector of length $n$, and $x$ is a vector of length $r$. \n",
"The data is organized as samples: we observe vectors \n",
"$$y_1, \\ldots, y_T,$$\n",
"but do not know matrix $A$,\n",
"then the factor model can be written as \n",
"$$\n",
" Y = AX,\n",
"$$\n",
"where $Y$ is $n \\times T$, $A$ is $n \\times r$ and $X$ is $r \\times T$. This is exactly a rank-$r$ model: it tells us that the vectors lie in a small subspace! \n",
"We also can use SVD to recover this subspace (but not the independent components). Principal component analysis can be done by SVD!"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## SVD\n",
"\n",
"Now we go to the applications of the SVD.\n",
"\n",
"SVD is extremely important in computational science and engineering.\n",
"\n",
"It has many names: Principal component analysis, Proper Orthogonal Decomposition, Empirical Orthogonal Functions\n",
"\n",
"We will consider:\n",
"\n",
"1. Latent semantic analysis\n",
"2. Collaborative filtering\n",
"3. Data compression"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Application 1: Latent semantic analysis\n",
"One of the most famous application is Latent semantic indexing, see, for example, \n",
"[Deerwester, Scott C., et al. \"Indexing by latent semantic analysis.\" (1990)](http://www.cob.unt.edu/itds/faculty/evangelopoulos/dsci5910/LSA_Deerwester1990.pdf) \n",
"\n",
"The problem setup: we have a set of text documents $D_1, \\ldots, D_N.$ We want to solve the search problem: i.e., we have a query as a set of words, and we want to find the best documents. \n",
"Our data is processed as follows: for each document we create a list of words contained in the document, and count the frequencies of each word. This is called the **bag of words** model (i.e., the document is unordered set of words). "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Term-document matrix\n",
"This is how the term-document matrix $A$ is obtained. Its row size is **the size of the dictionary**. \n",
"Its column size is **the number of documents**. An element $A_{ij}$ the frequency of occurence of the $i$-th word in the $j$-document.\n",
"\n",
"To do the search, we can just multiply a term-documnt matrix by a **search vector**, i.e. a list of words."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**The problem**: The document will be returned only if there is an exact word match. However, we might search for \"Samuel Clemens\", and hope to get the results for \"Mark Twain\" as well. But there might be no exact match! \n",
"How the SVD can help?"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Idea of LSI\n",
"Compute **low-rank approximation** $A_r$ of the term-document matrix $A$. \n",
"$$A \\approx A_r,$$\n",
"and **we do not care about the approximation error** (i.e., we do not require it to be small). \n",
"The matrix $A_r$ can be then used to do queries. \n",
"\n",
"We project the documents to **low-dimensional subspace**, given a query $q$ the projection is \n",
"$$q_r = \\Sigma^{-1}_r U^{\\top}_r q$$\n",
"Now we can compute the similarity between $d_r$ and other projected documents \n",
"$$\\widehat{d}_i = \\Sigma^{-1}_r U^{\\top}_r d_i,$$\n",
"and compute the **cosine** of the angles between the query and the projected document."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Demo\n",
"Now we can test a demo database"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>0</th>\n",
" <th>1</th>\n",
" <th>2</th>\n",
" <th>3</th>\n",
" <th>4</th>\n",
" <th>5</th>\n",
" <th>6</th>\n",
" <th>7</th>\n",
" <th>8</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>human</th>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>interface</th>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>computer</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>user</th>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>system</th>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>response</th>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>time</th>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>EPS</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>survey</th>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>trees</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>graph</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>minors</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" 0 1 2 3 4 5 6 7 8\n",
"human 1 0 0 1 0 0 0 0 0\n",
"interface 1 0 1 0 0 0 0 0 0\n",
"computer 1 1 0 0 0 0 0 0 0\n",
"user 0 1 1 0 1 0 0 0 0\n",
"system 0 1 1 1 0 0 0 0 0\n",
"response 0 1 0 0 1 0 0 0 0\n",
"time 0 1 0 0 1 0 0 0 0\n",
"EPS 0 0 1 1 0 0 0 0 0\n",
"survey 0 1 0 0 0 0 0 0 1\n",
"trees 0 0 0 0 0 1 1 1 0\n",
"graph 0 0 0 0 0 0 1 1 1\n",
"minors 0 0 0 0 0 0 0 1 1"
]
},
"execution_count": 1,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import numpy as np\n",
"import pandas as pd\n",
"import re #Regular expressions\n",
"rows = ['human', 'interface', 'computer', 'user', 'system', 'response', 'time', 'EPS', 'survey', 'trees', 'graph', 'minors']\n",
"nterms = len(rows)\n",
"docs = []\n",
"docs += ['Human machine interface for Lab ABC computer applications']\n",
"docs += ['A survey of user opinions of computer system response time']\n",
"docs += ['The EPS user interfaces management system']\n",
"docs += ['System and human system engineering testing of EPS']\n",
"docs += ['Relation of user-perceived response time on user management']\n",
"docs += ['The generation of random, binary, unordered trees']\n",
"docs += ['The intersection graph of paths in trees']\n",
"docs += ['Graph minors IV: Width of trees and well-quasi-ordering']\n",
"docs += ['Graph minors: A survey']\n",
"ndocs = len(docs)\n",
"term_doc = np.zeros((nterms, ndocs))\n",
"for i in xrange(nterms):\n",
" for j in xrange(ndocs):\n",
" if re.search(rows[i], docs[j], re.IGNORECASE):\n",
" term_doc[i, j] = 1\n",
"#Use pandas to plot \n",
"pd.DataFrame(data=term_doc,index=rows)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now we can compare the results between ordinary matvec and low-rank matvec."
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"There query is: Human computer interaction ,the scores are:\n"
]
},
{
"data": {
"text/html": [
"<div>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>No SVD</th>\n",
" <th>SVD</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>Human machine interface for Lab ABC computer applications</th>\n",
" <td>2</td>\n",
" <td>0.316794</td>\n",
" </tr>\n",
" <tr>\n",
" <th>A survey of user opinions of computer system response time</th>\n",
" <td>1</td>\n",
" <td>1.011276</td>\n",
" </tr>\n",
" <tr>\n",
" <th>The EPS user interfaces management system</th>\n",
" <td>0</td>\n",
" <td>0.663677</td>\n",
" </tr>\n",
" <tr>\n",
" <th>System and human system engineering testing of EPS</th>\n",
" <td>1</td>\n",
" <td>0.405542</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Relation of user-perceived response time on user management</th>\n",
" <td>0</td>\n",
" <td>0.554066</td>\n",
" </tr>\n",
" <tr>\n",
" <th>The generation of random, binary, unordered trees</th>\n",
" <td>0</td>\n",
" <td>-0.035325</td>\n",
" </tr>\n",
" <tr>\n",
" <th>The intersection graph of paths in trees</th>\n",
" <td>0</td>\n",
" <td>-0.065210</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Graph minors IV: Width of trees and well-quasi-ordering</th>\n",
" <td>0</td>\n",
" <td>-0.082587</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Graph minors: A survey</th>\n",
" <td>0</td>\n",
" <td>0.055939</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" No SVD SVD\n",
"Human machine interface for Lab ABC computer ap... 2 0.316794\n",
"A survey of user opinions of computer system re... 1 1.011276\n",
"The EPS user interfaces management system 0 0.663677\n",
"System and human system engineering testing of EPS 1 0.405542\n",
"Relation of user-perceived response time on use... 0 0.554066\n",
"The generation of random, binary, unordered trees 0 -0.035325\n",
"The intersection graph of paths in trees 0 -0.065210\n",
"Graph minors IV: Width of trees and well-quasi-... 0 -0.082587\n",
"Graph minors: A survey 0 0.055939"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"query = 'Human computer interaction'\n",
"qv = np.zeros((nterms))\n",
"for i in xrange(nterms):\n",
" if re.search(rows[i], query, re.IGNORECASE):\n",
" qv[i] = 1\n",
"res1 = qv.dot(term_doc) #Non-compressed search result\n",
"\n",
"u, s, v = np.linalg.svd(term_doc)\n",
"r = 2\n",
"u = u[:, :r]\n",
"s = s[:r]\n",
"v = v[:r, :] #Numpy transposes\n",
"appr1 = u.dot(np.diag(s)).dot(v)\n",
"res2 = qv.dot(appr1)\n",
"res_all = np.vstack((res1, res2)).T #To make two columns\n",
"print 'There query is:', query, ',the scores are:'\n",
"pd.DataFrame(res_all, index=docs, columns=['No SVD', 'SVD'])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Application 2: Collaborative filtering\n",
"\n",
"Another important (and similar) application comes from **recommender systems**. \n",
"\n",
"Suppose you have a **user-product matrix**: each user puts a rating for a particular product.\n",
"\n",
"The matrix is then **the number of users times the number of products**. The goal is to recommend additional products to be bought for a particular user. \n",
"\n",
"The scheme is the same: we compute the SVD, and the recommendation for each user is just a column of the approximated matrix."
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"#Read the data\n",
"data_read = np.loadtxt('task2_transact_eval.txt',dtype=np.int32, skiprows=1,delimiter='|')"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"columns = ['SessionNo', 'ItemNo', 'TransType']\n",
"ds = pd.DataFrame(data=data_read,columns=columns)"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Unique sessions: 101217 Unique products 15182\n"
]
}
],
"source": [
"from itertools import product\n",
"ds_buy = ds[ds.TransType==2][['SessionNo', 'ItemNo']]\n",
"users, inv_users = np.unique(data_read[:, 0], return_inverse=True)\n",
"products, inv_products = np.unique(data_read[:, 1], return_inverse=True)\n",
"print 'Unique sessions:', len(users), 'Unique products', len(products)\n",
"#Scipy spars"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.text.Text at 0x11717e490>"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x118546190>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"import scipy.sparse\n",
"import scipy.sparse.linalg\n",
"import matplotlib.pyplot as plt\n",
"%matplotlib inline\n",
"plt.xkcd()\n",
"nnz = len(inv_users)\n",
"spmat = scipy.sparse.coo_matrix((np.ones(nnz), (inv_users, inv_products)))\n",
"r = 2#Approximation rank\n",
"u, s, v = scipy.sparse.linalg.svds(spmat, r)\n",
"n = spmat.shape[0]\n",
"m = spmat.shape[1]\n",
"q = np.zeros(n)\n",
"user_id = 1\n",
"q[user_id] = 1.0\n",
"\n",
"qrec = q.T.dot(u).dot(np.diag(s)).dot(v)\n",
"qrec = qrec / np.max(abs(qrec))\n",
"plt.plot(qrec)\n",
"qb = spmat.T.dot(q)\n",
"plt.plot(qb)\n",
"plt.xlabel('Product ID')\n",
"plt.ylabel('Recommendation')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Application 3: Dense matrix compression\n",
"\n",
"Dense matrices typically require $N^2$ elements to be stored. For $N \\sim 10^4 - 10^5$ the memory requirements. A low rank approximation can reduces this number of $\\mathcal{O}(Nr)$"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.text.Text at 0x119655290>"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x115c52890>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"import numpy as np\n",
"%matplotlib inline\n",
"import matplotlib.pyplot as plt\n",
"plt.xkcd()\n",
"n = 256\n",
"a = [[1.0/(i + j + 0.5) for i in range(n)] for j in range(n)]\n",
"a = np.array(a)\n",
"u, s, v = np.linalg.svd(a)\n",
"plt.semilogy(s/s[0])\n",
"plt.title('Singular values decay for a Hilbert matrix')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## A more realistic example\n",
"We can try to test on a more realistic matrix, since solving linear systems with Hilbert matrix has little practical sense. Instead, we solve a linear system with a matrix\n",
"$$A_{ij} = \\frac{1}{i - j + \\frac{1}{2}},$$\n",
"which corresponds to an integral equation\n",
"$$\n",
" \\int \\frac{q(y)dy}{x - y } = f(x).\n",
"$$\n",
"In real life, the equation \n",
"$$\n",
" \\int_{\\Omega} \\frac{q(y)dy}{\\Vert x - y\\Vert } = f(x),\n",
"$$\n",
"is solved, where $\\Omega$ is a surface in 3D. This is used, for example, in modelling integral circuits.\n",
"Let us see what happens with the singular values."
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"3.5527136788005009e-15"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n/wcX82RyMNsJ2wAAAABJRU5ErkJggg==\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x115cc0090>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"import numpy as np\n",
"import numpy as np\n",
"%matplotlib inline\n",
"import matplotlib.pyplot as plt\n",
"plt.xkcd()\n",
"n = 256\n",
"a = [[1.0/(i - j + 0.5) for i in xrange(n)] for j in xrange(n)]\n",
"a = np.array(a)\n",
"u, s, v = np.linalg.svd(a)\n",
"plt.plot(s)\n",
"plt.title('Singular values decay for a Cauchy-Hilbert matrix')\n",
"plt.tight_layout()\n",
"s[5] - np.pi"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"What to do? \n",
"\n",
"The idea is to break the matrix intro blocks \n",
"\n",
"$$\n",
" A = \\begin{bmatrix}\n",
" A_{11} & A_{12} \\\\\n",
" A_{21} & A_{22}\n",
" \\end{bmatrix}\n",
"$$\n",
"\n",
"and the blocks $A_{12}$ and $A_{21}$ will be of low-rank! Let us try that.."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Block-low rank matrices\n",
"\n",
"Surprisingly many matrices in PDEs can be well approximated by block-low-rank (other names: hierarchical, mosaic-skeleton) matrices.\n",
"\n",
"They have linear storage, but algorithms are not very **simple**"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Take home message\n",
"- Matrix rank definition\n",
"- Skeleton approximation and dyadic representation of a rank-$r$ matrix\n",
"- Singular value decomposition and Eckart-Young theorem\n",
"- Three applications of SVD"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Next lecture\n",
"- Linear systems\n",
"- Inverse matrix\n",
"- Condition number\n",
"- Linear least squares\n",
"- Pseudoinverse"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Next lecture\n",
"- Think of course projects"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"##### Questions?"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": false,
"slideshow": {
"slide_type": "skip"
}
},
"outputs": [
{
"data": {
"text/html": [
"<link href='http://fonts.googleapis.com/css?family=Fenix' rel='stylesheet' type='text/css'>\n",
"<link href='http://fonts.googleapis.com/css?family=Alegreya+Sans:100,300,400,500,700,800,900,100italic,300italic,400italic,500italic,700italic,800italic,900italic' rel='stylesheet' type='text/css'>\n",
"<link href='http://fonts.googleapis.com/css?family=Source+Code+Pro:300,400' rel='stylesheet' type='text/css'>\n",
"<style>\n",
" @font-face {\n",
" font-family: \"Computer Modern\";\n",
" src: url('http://mirrors.ctan.org/fonts/cm-unicode/fonts/otf/cmunss.otf');\n",
" }\n",
" div.cell{\n",
" /*width:80%;*/\n",
" /*margin-left:auto !important;\n",
" margin-right:auto;*/\n",
" }\n",
" h1 {\n",
" font-family: 'Alegreya Sans', sans-serif;\n",
" }\n",
" h2 {\n",
" font-family: 'Fenix', serif;\n",
" }\n",
" h3{\n",
"\t\tfont-family: 'Fenix', serif;\n",
" margin-top:12px;\n",
" margin-bottom: 3px;\n",
" }\n",
"\th4{\n",
"\t\tfont-family: 'Fenix', serif;\n",
" }\n",
" h5 {\n",
" font-family: 'Alegreya Sans', sans-serif;\n",
" }\t \n",
" div.text_cell_render{\n",
" font-family: 'Alegreya Sans',Computer Modern, \"Helvetica Neue\", Arial, Helvetica, Geneva, sans-serif;\n",
" line-height: 1.2;\n",
" font-size: 120%;\n",
" /*width:70%;*/\n",
" /*margin-left:auto;*/\n",
" margin-right:auto;\n",
" }\n",
" .CodeMirror{\n",
" font-family: \"Source Code Pro\";\n",
"\t\t\tfont-size: 90%;\n",
" }\n",
"/* .prompt{\n",
" display: None;\n",
" }*/\n",
" .text_cell_render h1 {\n",
" font-weight: 200;\n",
" font-size: 50pt;\n",
"\t\tline-height: 110%;\n",
" color:#CD2305;\n",
" margin-bottom: 0.5em;\n",
" margin-top: 0.5em;\n",
" display: block;\n",
" }\t\n",
" .text_cell_render h5 {\n",
" font-weight: 300;\n",
" font-size: 16pt;\n",
" color: #CD2305;\n",
" font-style: italic;\n",
" margin-bottom: .5em;\n",
" margin-top: 0.5em;\n",
" display: block;\n",
" }\n",
" \n",
" li {\n",
" line-height: 110%;\n",
" }\n",
" .warning{\n",
" color: rgb( 240, 20, 20 )\n",
" } \n",
"\n",
"</style>\n",
"\n",
"<script>\n",
" MathJax.Hub.Config({\n",
" TeX: {\n",
" extensions: [\"AMSmath.js\"]\n",
" },\n",
" tex2jax: {\n",
" inlineMath: [ ['$','$'], [\"\\\\(\",\"\\\\)\"] ],\n",
" displayMath: [ ['$$','$$'], [\"\\\\[\",\"\\\\]\"] ]\n",
" },\n",
" displayAlign: 'center', // Change this to 'center' to center equations.\n",
" \"HTML-CSS\": {\n",
" styles: {'.MathJax_Display': {\"margin\": 4}}\n",
" }\n",
" });\n",
"</script>\n"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"execution_count": 1,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from IPython.core.display import HTML\n",
"def css_styling():\n",
" styles = open(\"./styles/custom.css\", \"r\").read()\n",
" return HTML(styles)\n",
"css_styling()"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"# Lecture 5: Linear systems"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Previous lecture\n",
"- Matrix rank\n",
"- Skeleton decomposition\n",
"- Low-rank approximation\n",
"- Singular Value Decomposition (SVD)"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Today lecture\n",
"Today we talk about: \n",
"- Linear systems\n",
"- Inverse matrix\n",
"- Condition number\n",
"- Gaussian elimination"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Linear systems\n",
"\n",
"Linear systems of equations are the basic tool in NLA.\n",
"\n",
"They appear as:\n",
"\n",
"- Linear regresion problems\n",
"- Discretization of partial differential/integral equations\n",
"- Linearizations of nonlinear regression problems\n",
"- Optimization (i.e., Gauss-Newton and Newton-Raphson methods, KKT).\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Linear equations and matrices\n",
"From school we know about linear equations. \n",
"\n",
"A linear system of equations can be written in the form\n",
"\\begin{equation}\n",
"\\begin{split}\n",
" &2 x + 3 y = 5\\quad &\\longrightarrow \\quad &2x + 3 y + 0 z = 5\\\\\n",
" &2 x + 3z = 5\\quad &\\longrightarrow\\quad &2 x + 0 y + 3 z = 5\\\\\n",
" &x + y = 2\\quad &\\longrightarrow\\quad & 1 x + 1 y + 0 z = 2\\\\\n",
"\\end{split}\n",
"\\end{equation}"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Matrix form\n",
"The \"matrix form\" is\n",
"$$\n",
"\\begin{pmatrix}\n",
"2 & 3 & 0 \\\\\n",
"2 & 0 & 3 \\\\\n",
"1 & 1 & 0 \\\\\n",
"\\end{pmatrix}\\begin{pmatrix}\n",
"x \\\\\n",
"y \\\\\n",
"z \n",
"\\end{pmatrix} = \n",
"\\begin{pmatrix}\n",
"5 \\\\\n",
"5 \\\\\n",
"2\n",
"\\end{pmatrix}\n",
"$$\n",
"or simply\n",
"$$\n",
"A u = f, \n",
"$$\n",
"\n",
"where $A$ is a $3 \\times 3$ matrix."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Over/under determined linear systems\n",
"\n",
"If the system $Au = f$ has more equations than unknowns it is called **overdetermined** system (generically, no solution)\n",
"\n",
"If the system $Au = f$ has less equations than unknowns it is called **underdetermined** system (solution is non-unique, to make it unique additional assumptions have to be made)."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Existence of solutions \n",
"\n",
"A solution to the linear system of equations with a **square** matrix $A$\n",
"\n",
"$$A u = f$$\n",
"\n",
"exists, iff \n",
"* $\\det A \\ne 0$\n",
"\n",
"or\n",
"\n",
"* Matrix $A$ has full rank."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Scales of linear systems\n",
"\n",
"In different applications, the typical size of the linear systems can be different. \n",
"\n",
"- Small: $n \\leq 10^4$ (full matrix can be stored in memory, **dense matrix**)\n",
"- Medium: $n = 10^4 - 10^6$ (typically, **sparse** or **structured**)\n",
"- Large: $n = 10^8 - 10^9$ (typicall **sparse** + parallel computations)"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Linear systems can be big\n",
"We take a continious problem, discretize on a mesh with $N$ elements and get a linear system with $N\\times N$ system. \n",
"Example of a mesh around A319 aircraft\n",
"(taken from [GMSH website](http://geuz.org/gmsh/)). \n",
"<img src=\"a319_4.png\" width=50%>\n",
"The main difficulty is that these systems are big: millions or billions of unknowns!"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Linear systems can be structured\n",
"Storing $N^2$ elements of a matrix is prohibitive even for $N = 100000$. \n",
"\n",
"How to work with such matrices? \n",
"\n",
"Fortunately, those matrices are **structured** and require $\\mathcal{O}(N)$ parameters to be stored. \n",
"\n",
"The most widespread structure are **sparse matrices**: in the matrix there are $\\mathcal{O}(N)$ non-zeros! \n",
"\n",
"Example (one of the famous matrices around for $n = 5$):\n",
"$$\n",
" \\begin{pmatrix}\n",
" 2 & -1 & 0 & 0 & 0 \\\\\n",
" -1 & 2 & -1 & 0 & 0 \\\\\n",
" 0 & -1 & 2 & -1 & 0 \\\\\n",
" 0 & 0 &-1& 2 & -1 \\\\\n",
" 0 & 0 & 0 & -1 & 2 \\\\\n",
" \\end{pmatrix}\n",
"$$\n",
"At least you can store such matrices, and multiply by vector fast; but how to solve linear systems?! (and that is typically the final goal)."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Main questions about linear systems\n",
"\n",
"1. What is the accuracy we get from the solution (due to rounding errors)?\n",
"2. How we compute the solution? (LU-decomposition, Gaussian elimination)\n",
"3. What is the complexity of the solution of linear systems?"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## How to solve linear systems?\n",
"**Important**: forget about determinants and the **Cramer rule** (it is good for $2 \\times 2$ matrices still)!"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## How to solve linear systems?\n",
"\n",
"The main tool is variable elimination. \n",
"\\begin{equation}\n",
"\\begin{split}\n",
" &2 y + 3 x = 5 \\quad&\\longrightarrow \\quad &y = 5/2 - 3/2 x \\\\\n",
" &2 x + 3z = 5 \\quad&\\longrightarrow\\quad &z = 5/3 - 2/3 x\\\\\n",
" &x + y = 2 \\quad&\\longrightarrow\\quad & 5/2 + 5/3 - (3/2 + 2/3) x = 2,\\\\\n",
"\\end{split}\n",
"\\end{equation}\n",
"and that is how you find $x$ (and all previous ones). \n",
"\n",
"This process is called **Gaussian elimination** and is one of the most widely used algorithms. "
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Gaussian elimination\n",
"Gaussian elimination consists of two steps:\n",
"1. Forward step\n",
"2. Backward step"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Forward step\n",
"In the forward step, we eliminate $x_1$:\n",
"\n",
"$$\n",
" x_1 = f_1 - (a_{12} x_2 + \\ldots + a_{1n} x_n)/a_{11},\n",
"$$\n",
"\n",
"and then substitute this into the equations $2, \\ldots, n$. \n",
"\n",
"Then we eliminate $x_2$ and so on from the second equation. \n",
"\n",
"The important thing is that the **pivots** (that we divide over) are not equal to $0$."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Backward step\n",
"In the backward step, we solve equation for $x_n$, put it into the equation for $x_{n-1}$ and so on, until we \n",
"compute all $x_i, i=1,\\ldots, n$."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Gaussian elimination and LU decomposition\n",
"Gaussian elimination is the computation of one of the most important matrix decompositions: **LU-decomposition**.\n",
"\n",
"**Definition**: LU-decomposition of the squared matrix $A$ is the representation\n",
"\n",
"$$A = LU,$$\n",
"\n",
"where $L$ is **lower triangular** and $U$ is **upper triangular** matrix (i.e. elements strictly above the diagonal are zero, elements strictly below the diagonal are zero)\n",
"\n",
"This factorization is **non-unique**, so it is typical to require that the matrix $L$ has ones on the diagonal."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"**Main goal** of the LU decomposition is to solve linear systems, because\n",
"\n",
"$$\n",
" A^{-1} f = (L U)^{-1} f = U^{-1} L^{-1} f, \n",
"$$\n",
"\n",
"and this reduces to the solution of two linear systems **forward step**\n",
"$$\n",
" L y = f, \n",
"$$\n",
"and **backward step**\n",
"$$\n",
" U x = y.\n",
"$$\n",
"\n",
"Does $LU$ decomposition always exist?"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Complexity of the Gaussian elimination/LU decomposition\n",
"Each elimination step requires $\\mathcal{O}(n^2)$ operations. \n",
"\n",
"Thus, the cost of the naive algorithm is $\\mathcal{O}(n^3)$. \n",
"\n",
"**Think a little bit**: Can Strassen help here? "
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Block LU-decomposition\n",
"\n",
"We can try to compute **block** version of LU-decomposition:\n",
"\n",
"\n",
"$$\\begin{bmatrix} A_{11} & A_{12} \\\\\n",
"A_{21} & A_{22}\n",
"\\end{bmatrix} = \\begin{bmatrix} L_{11} & 0 \\\\\n",
"L_{21} & L_{22}\n",
"\\end{bmatrix} \\begin{bmatrix} U_{11} & U_{12} \\\\\n",
"0 & U_{22} \n",
"\\end{bmatrix}\n",
"$$\n",
"There are two basic operations: compute LU-factorization of half-matrices + matrix-by-matrix product."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Computing LU-decomposition\n",
"In many cases, computing LU-decomposition once is a good idea!\n",
"\n",
"Once the decomposition is found (it is $\\mathcal{O}(n^3)$), then solving linear systems with $L$ and $U$ costs only $\\mathcal{O}(n^2)$ operations.\n",
"\n",
"**Check:** Solving linear systems with triangular matrices is easy (why?). How we compute the $L$ and $U$ factors? \n",
"\n",
"Not let us see how it works in numpy (for the Hilbert matrix, of course).\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Existence of the LU-decomposition\n",
"The LU-decomposition algorithm does not fail \n",
"\n",
"if **we do not divide by zero** at every step of the Gaussian elimination.\n",
"\n",
"When it is so, for which class of matrices?\n",
"\n",
"It is true for **strictly regular matrices**."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Strictly regular matrices and LU decomposition \n",
"A matrix $A$ is called strictly regular, if all of its **principal minors** \n",
"\n",
"(i.e, submatrices in the first $k$ rows and $k$ columns) are non-singular. \n",
"\n",
"In this case, there always exists a LU-decomposition. The reverse is also true (check!)."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"**Proof**. If there is a LU-decomposition, then the matrix is strictly regular \n",
"\n",
"This follows from the fact that to get a minor you multiply a corresponding submatrix of $L$ by a corresponding submatrix of $U$, \n",
"\n",
"and they are non-singular (since non-singularity of triangular matrices is equivalent to the fact that their diagonal elements are not equal to zero).\n",
"\n",
"The other way can be proven by **induction**. Suppose that we know that for all $(n-1) \\times (n-1)$ matrices will non-singular minors LU-decomposition exists."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"Then, consider the block form\n",
"$$\n",
" A = \\begin{bmatrix}\n",
" a & c^{\\top} \\\\\n",
" b & D\n",
" \\end{bmatrix},\n",
"$$\n",
"where $D$ is $(n-1) \\times (n-1)$."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"Then we do \"block elimination\": \n",
"\n",
"$$\n",
" \\begin{bmatrix}\n",
" 1 & 0 \\\\\n",
" -z & I\n",
" \\end{bmatrix}\n",
" \\begin{bmatrix}\n",
" a & c^{\\top} \\\\\n",
" b & D \n",
" \\end{bmatrix}=\n",
" \\begin{bmatrix}\n",
" a & c^{\\top} \\\\\n",
" 0 & A_1\n",
" \\end{bmatrix},\n",
"$$\n",
"\n",
"where $z = \\frac{b}{a}, \\quad A_1 = D - \\frac{1}{a} b c^{\\top}$. \n",
"We can show that $A_1$ is also strictly regular, thus it has (by induction) the LU-decomposition: \n",
"$$\n",
" A_1 = L_1 U_1, \n",
"$$\n",
"And that gives the $LU$ decomposition of the original matrix.\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"**Corollary:** If $L$ is unit triangular (ones on the diagonal), then $LU$-decomposition is unique. <br>\n",
"*Proof:* Indeed, $L_1 U_1 = L_2 U_2$ means $L_2^{-1} L_1 = U_2 U_1^{-1}$. $L_2^{-1} L_1 $ is lower triangular with ones on the diagonal. $U_2 U_1^{-1}$ is upper triangular. Thus, $L_2^{-1} L_1 = U_2 U_1^{-1} = I$ and $L_1 = L_2$, $U_1 = U_2$."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## LU for positive definite Hermitian matrices (Cholesky factorization)\n",
"\n",
"Strictly regular matrices have LU-decomposition. \n",
"\n",
"An important **subclass** of strictly regular matrices is the class of **Hermitian positive definite matrices**"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"\n",
"**Definition:** A matrix is called <font color='red'> positive definite </font> if for any $x: \\Vert x \\Vert \\ne 0$ we have\n",
"\n",
"$$(Ax, x) > 0.$$"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"**Claim:** A Hermitian positive definite matrix $A$ is strictly regular and has **Cholesky factorization** of the form \n",
"\n",
"$$A = RR^*,$$\n",
"\n",
"where $R$ is a lower triangular matrix.\n",
"\n",
"Let us try to prove this fact (on the whiteboard).\n",
"\n",
"It is sometimes referred to as \"square root\" of the matrix."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## When LU fails\n",
"What happens, if the matrix is not strictly regular (or the **pivots** in the Gaussian elimination are really small?). \n",
"\n",
"There is classical $2 \\times 2$ example of a matrix with a bad LU decomposition. \n",
"\n",
"The matrix we look at is \n",
"$$\n",
" A = \\begin{pmatrix}\n",
" \\varepsilon & 1 \\\\\n",
" 1 & 1 \n",
" \\end{pmatrix}\n",
"$$\n",
"\n",
"If $\\varepsilon$ is sufficiently small, we **might** fail. In contrast the Cholesky factorization is **always stable**.\n",
"\n",
"Let us do some demo here."
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"collapsed": false,
"slideshow": {
"slide_type": "slide"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"L * U - A: [[ 0.00000000e+00 0.00000000e+00]\n",
" [ -1.11022302e-16 -1.00000000e+00]]\n"
]
},
{
"data": {
"text/plain": [
"array([[ 1.00000000e+00, 0.00000000e+00],\n",
" [ 1.00000000e+18, 1.00000000e+00]])"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import numpy as np\n",
"eps = 1e-18#1.12e-16\n",
"a = [[eps, 1],[1.0, 1]]\n",
"a = np.array(a)\n",
"a0 = a.copy()\n",
"n = a.shape[0]\n",
"L = np.zeros((n, n))\n",
"U = np.zeros((n, n))\n",
"for k in range(n): #Eliminate one row \n",
" L[k, k] = 1\n",
" for i in range(k+1, n):\n",
" L[i, k] = a[i, k] / a[k, k]\n",
" for j in range(k+1, n):\n",
" a[i, j] = a[i, j] - L[i, k] * a[k, j]\n",
" for j in range(k, n):\n",
" U[k, j] = a[k, j]\n",
"\n",
"print 'L * U - A:', np.dot(L, U) - a0\n",
"L"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## The concept of pivoting\n",
"We can do pivoting, i.e. permute rows and columns to maximize $A_{kk}$ that we divide over. \n",
"\n",
"The simplest but effective strategy is the **row pivoting**: at each step, select the index that is maximal in modulus, and put it onto the diagonal. \n",
"\n",
"It gives us the decomposition \n",
"\n",
"$$A = P L U,$$\n",
"where $P$ is a **permutation matrix**.\n",
"\n",
"\n",
"What makes **row pivoting** good? \n",
"\n",
"It is made good by the fact that \n",
"\n",
"$$\n",
" | L_{ij}|<1,\n",
"$$\n",
"but the elements of $U$ can grow, up to $2^n$! (in practice, this is very rarely encountered).\n",
"\n",
"Can you come up with a matrix where the elements of $U$ grow as much as possible?"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Stability of linear systems\n",
"\n",
"There is a fundamental problem of solving linear systems which is independent on the algorithm used.\n",
"\n",
"It occures when elements of a matrix are represented as floating point numbers or there is some measurement noise.\n",
"\n",
"Let us illustrate this issue on the following example."
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"collapsed": false,
"slideshow": {
"slide_type": "slide"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"2.84925499042\n"
]
},
{
"data": {
"text/plain": [
"[<matplotlib.lines.Line2D at 0x110cbd350>]"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x1105d5450>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"%matplotlib inline\n",
"import seaborn as sns\n",
"n = 15\n",
"a = [[1.0/(i + j + 1) for i in xrange(n)] for j in xrange(n)]\n",
"a = np.array(a)\n",
"rhs = np.random.randn(n) #Right-hand side\n",
"x = np.linalg.solve(a, rhs) #This function computes LU-factorization and solves linear system\n",
"\n",
"#And check if everything is fine\n",
"er = np.linalg.norm(a.dot(x) - rhs) / np.linalg.norm(rhs)\n",
"print er\n",
"plt.xkcd()\n",
"plt.plot(x)"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
"As you see, the error grows with larger $n$, and we have to find out why. \n",
"**Important point** is that it is not a problem of the algorithm: it is a problem of representing \n",
"the matrix in the memory. The error occurs in the moment when the matrix elements are evaluated approximately."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Linear systems and inverse matrix\n",
"What was the problem in the previous example? \n",
"\n",
"Why the error grows so quickly? \n",
"\n",
"And here is one of the main concepts of numerical linear algebra: the concept of **condition number** of a matrix. \n",
"\n",
"But before that we have to define the **inverse**. "
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Inverse: definition\n",
"The inverse of a matrix $A$ is defined as a matrix $X$ denoted by $A^{-1}$ such that \n",
"$$\n",
" AX = XA = I, \n",
"$$\n",
"where $I$ is the identity matrix (i.e., $I_{ij} = 0$ if $i \\ne j$ and $1$ otherwise).\n",
"The computation of the inverse is linked to the solution of linear systems. Indeed, $i$-th column of the product gives \n",
"$$\n",
"A x_i = e_i,\n",
"$$\n",
"where $e_i$ is the $i$-th column of the identity matrix. Thus, we can apply Gaussian elimination to solve this system. Moreover, if there are no divisions by zero in this process (and the pivots do not depend on the right-hand side), then it is possible to solve the system.\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Inverse matrix and linear systems\n",
"If we have computed $A^{-1}$, the solution of linear system \n",
"\n",
"$$Ax = f$$\n",
"\n",
"is just $x = A^{-1} f$. \n",
"\n",
"Indeed, \n",
"\n",
"$$ \n",
" A(A^{-1} f) = (AA^{-1})f = I f = f.\n",
"$$"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Neumann series \n",
"To study, why there can be such big errors in a solution (see the example above on the Hilbert matrix) we need an important auxilary result: \n",
"\n",
"**Neumann series**: \n",
"\n",
"If for a matrix $\\Vert F \\Vert < 1$ then the matrix $(I - F)$ is invertible and\n",
"\n",
"$$(I - F)^{-1} = I + F + F^2 + F^3 + \\ldots = \\sum_{k=0}^{\\infty} F^k.$$\n",
"\n",
"Note that it is a matrix version of the geometric progression. \n",
"\n",
"**Question**: What norm is considered here? What is the \"best possible\" norm here?"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Proof\n",
"The proof is constructive. First of all, the show prove that the series $\\sum_{k=0}^{\\infty} F^k$ converges. \n",
"\n",
"Like in the scalar case, we have \n",
"$$\n",
" (I - F) \\sum_{k=0}^N F^k = (I - F^{N+1}) \\rightarrow I.\n",
"$$\n",
"\n",
"Indeed, \n",
"$$\n",
"\\| (I - F^{N+1}) - I\\| = \\|F^{N+1}\\| \\leqslant \\|F\\|^{N+1} \\to 0, \\quad N\\to +\\infty.\n",
"$$\n",
"\n",
"We can also estimate the **norm of the inverse**:\n",
"$$\n",
" \\Vert \\sum_{k=0}^N F^k \\Vert \\leq \\sum_{k=0}^N \\Vert F \\Vert^k \\Vert I \\Vert \\leq \\frac{\\Vert I \\Vert}{1 - \\Vert F \\Vert} \n",
"$$"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Small perturbation of the inverse\n",
"Using this result, we can estimate, how the perturbation of the matrix influences the inverse matrix. We assume\n",
"that the perturbation $E$ is small in the sense that $\\Vert A^{-1} E \\Vert < 1$. Then\n",
"$$(A + E)^{-1} = \\sum_{k=0}^{\\infty} (-A^{-1} E)^k A^{-1}$$\n",
"and moreover, \n",
"$$\n",
" \\frac{\\Vert (A + E)^{-1} - A^{-1} \\Vert}{\\Vert A^{-1} \\Vert} \\leq \\frac{\\Vert A^{-1} \\Vert \\Vert E \\Vert \\Vert I \\Vert}{1 - \\Vert A^{-1} E \\Vert}.\n",
"$$\n",
"As you see, the norm of the inverse enters the estimate."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Condition number of a linear system\n",
"Now consider the **perturbed** linear system:\n",
"$$\n",
" (A + \\Delta A) \\widehat{x} = f + \\Delta f.\n",
"$$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Estimates\n",
"\n",
"$$\n",
"\\begin{split}\n",
"\\widehat{x} - x &= (A + \\Delta A)^{-1} (f + \\Delta f) - A^{-1} f =\\\\ \n",
"&= \\left((A + \\Delta A)^{-1} - A^{-1}\\right)f + (A + \\Delta A)^{-1} \\Delta f = \\\\\n",
"&= \\Big[\\sum_{k=0}^{\\infty} (-A^{-1} \\Delta A)^k\\Big] A^{-1} f + \\Big[\\sum_{k=0}^{\\infty} (A^{-1} \\Delta A)^k \\Big] A^{-1} \\Delta f,\n",
"\\end{split}\n",
"$$ \n",
"therefore\n",
"$$\n",
"\\begin{split}\n",
"\\frac{\\Vert \\widehat{x} - x \\Vert}{\\Vert x \\Vert} \\leq \n",
"&\\frac{\\Vert A \\Vert \\Vert A^{-1} \\Vert}{1 - \\|A^{-1}\\Delta A\\|} \\Big(\\frac{\\Vert\\Delta A\\Vert}{\\Vert A \\Vert} + \\frac{\\Vert \\Delta f \\Vert}{ \\Vert f \\Vert}\\Big) \\leq \\\\\n",
"\\leq\n",
"&\\frac{\\Vert A \\Vert \\Vert A^{-1} \\Vert}{1 - \\|A\\|\\|A^{-1}\\|\\frac{\\|\\Delta A\\|}{\\|A\\|}} \\Big(\\frac{\\Vert\\Delta A\\Vert}{\\Vert A \\Vert} + \\frac{\\Vert \\Delta f \\Vert}{ \\Vert f \\Vert}\\Big) \\equiv \\\\\n",
"\\equiv &\\frac{\\mathrm{cond}(A)}{1 - \\mathrm{cond}(A)\\frac{\\|\\Delta A\\|}{\\|A\\|}} \\Big(\\frac{\\Vert\\Delta A\\Vert}{\\Vert A \\Vert} + \\frac{\\Vert \\Delta f \\Vert}{ \\Vert f \\Vert}\\Big)\n",
"\\end{split}\n",
"$$\n",
"\n",
"The crucial role is played by the **condition number** $\\mathrm{cond}(A) = \\Vert A \\Vert \\Vert A^{-1} \\Vert$."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Condition number \n",
"The larger the condition number, the less number of digits we can recover. Note, that the condition number is different for different norms.\n",
"\n",
"Note, that if $\\Delta A = 0$, then\n",
"$$\n",
"\\frac{\\Vert \\widehat{x} - x \\Vert}{\\Vert x \\Vert} \\leq \\mathrm{cond}(A) \\frac{\\|\\Delta f\\|}{\\|f\\|}\n",
"$$"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"The spectral norm of the matrix is equal to **largest singular value**, and the singular values of the inverse matrix are equal to the inverses of the singular values. Thus, the condition number is equal to the ratio of the largest singular value and the smallest singular value.\n",
"$$\n",
" \\mathrm{cond}_2 (A) = \\|A\\|_2 \\|A^{-1}\\|_2 = \\frac{\\sigma_{\\max}}{\\sigma_{\\min}}\n",
"$$"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Hilbert matrix (again)\n",
"We can also try to test how tight is the estimate, both with ones in the right-hand side, and with a random vector in the right-hand side. The results are strickingly different"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": false,
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Error: 8.96141017158e-08 Condition number: 1.5912638327e+20\n"
]
}
],
"source": [
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"%matplotlib inline\n",
"\n",
"\n",
"n = 1000\n",
"a = [[1.0/(i + j + 1) for i in xrange(n)] for j in xrange(n)]\n",
"a = np.array(a)\n",
"rhs = np.ones(n) #Right-hand side\n",
"f = np.linalg.solve(a, rhs)\n",
"\n",
"#And check if everything is fine\n",
"er = np.linalg.norm(a.dot(f) - rhs) / np.linalg.norm(rhs)\n",
"cn = np.linalg.cond(a, 2)\n",
"print 'Error:', er, 'Condition number:', cn"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"And with random right-hand side..."
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": false,
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Error: 3.91614106742 Condition number: 6.38251409635e+19\n"
]
},
{
"data": {
"text/plain": [
"[<matplotlib.lines.Line2D at 0x112e729d0>]"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAXYAAAEACAYAAACnJV25AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJztnXmUXVWZ9p9dqaTGDFQqlYFMmEAaCEMAJSBiNYNGwalb\nFMWx1dZe32er3W0L8ikJSqvdqwG7e7F0dTeIoiKKImGUISWKypg5hAAJSYUklYlKUvO0vz/e2t5z\nz917n2mfc6f3t1atpO49de65Z3jOc5797r2FlBIMwzBM5VBT7A1gGIZh3MLCzjAMU2GwsDMMw1QY\nLOwMwzAVBgs7wzBMhcHCzjAMU2EkEnYhRL0Q4ikhxDohxCYhxEpH28UwDMPERCStYxdCNEop+4QQ\ntQB+D+ALUsqnnGwdwzAME5nEUYyUsm/8v5MATAQwlnSdDMMwTHwSC7sQokYIsQ5AF4DfSCmfSb5Z\nDMMwTFxcOPYxKeWZAOYCOFcIcWryzWIYhmHiUutqRVLKI0KINQBWANisXhdC8GA0DMMwMZBSijh/\nl7QqplUIMW38/w0ALgXwgmbj+EdKXHfddUXfhlL54X3B+4L3hf0nCUkd+2wAtwshJoBuEj+TUj6Q\ncJ0MwzBMAhIJu5RyI4CzHG0LwzAM4wDueZoh7e3txd6EkoH3RQ7eFzl4X7ghcQelwA8QQqb9GQzD\nMJWGEAKyGI2nDMMwTOnBws4wDFNhsLAzDMNUGCzsDMMwFQYLO8MwTIXBws4wDFNhsLAzDMNUGCzs\nDMMwFQYLO8MwTIXBws4AAO68E/jKV4q9FQzDuICFnQEA7N4NdHUVeysYhnEBCzsDAOjpAQYHi70V\nDMO4gIWdAUDCPjRU7K1gGMYFLOwMABZ2hqkkWNgZAMCxYyzsDFMpsLAzADhjZ5hKgoWdAcBRDMNU\nEkkns2YqhJ4eYHS02FvBMIwLWNgZAJSxT5hQ7K1gGMYFHMUwADiKYZhKgh07A4CEnR07w1QG7NgZ\nAFwVwzCVBAs7g8FBYHiYoxiGqRRY2A08/jgNjFUNqBiGhZ1hKgMWdgP/+Z/A/fcXeyuyoacHaGlh\nYWeYSoGF3cDAALBrV/ByQ0PlX//d0wNMn07fRcpibw3DMElJJOxCiHlCiDVCiM1CiE1CiL93tWHF\npr8f2LkzeLkvfpEmqShnjh0DpkyhOGZkpNhbwzBMUpKWOw4D+JKUcp0QohnAc0KIR6SULzjYtqLS\n3x/OsXd3l38W39MDNDcDkyaRa584sdhbxDBMEhI5dinlPinluvH/9wB4AcAcFxtWbKJEMYcOpb89\naeIVdi55ZJjyx1nGLoRYCGAZgKdcrbOY9PeTEw/KzwcHK0PYJ08G6uq4AZVhKgEnwj4ew/wCwBfG\nnXvZ099PDYl799qXqwTHfuxYfhTDMEx5k3hIASHERAB3A7hDSnmPbpmVK1f++f/t7e1ob29P+rGp\nMzAALFxIcczcueblhoaAvr7MNisVOIphmOLT0dGBjo4OJ+sSMkF9mxBCALgdwCEp5ZcMy8gkn1Es\nmpuBCy8EPvYx4Morzcudfz41oG7Zkt22uea66wAhgJ//HLjrLuDUU4u9RQzDCCEgpRRx/jZpFPNm\nAB8B8JdCiLXjPysSrrPoSElRzEknBTegVkIUozJ2jmIYpjJIFMVIKX+PCuzkNDIC1NQAb3gD8OKL\n9mWHhoDDh+lmIGLdW4sPZ+wMU1lUnCi7oL8faGgAFiwIduyDg3QjOHYsm21LA87YGaayYGHX0N8P\n1NcD8+eHi2Jqaso7jlHCzuWODFMZsLBrGBggxx5G2AcHgba28hb2Y8c4Y2eYSoKFXYOKYtSIh0eP\nmpcdGgJmzy5vYecohmEqCxZ2DSqKEYJce2enedlKEnaOYhimMmBh16CiGCA4jhkcrBxh5yiGYSoD\nFnYNKooB7JUxUlaGY/dm7BzFMEz5w8KuQUUxADl207jsIyNAbS3Q2lq+wi4lOfamJo5iGKZSYGHX\nEDaKGRwkMZw+vXyFfXCQJtiYNImjGIapFFjYNXijGJuwDw2RGJazsKt8HWBhZ5hKgYVdgz+KsTn2\nchd2la8DnLEzTKXAwq7BG8XMnUtjsusm3BgaKv8oxuvYOWOvHv7934Hvfa/YW8GkBQu7Bm8UM2kS\nNY7qJtzgKIYpV3bvLv+5ehkzLOwavFEMYI5jVOPp1Kn0N+Uoin5h5yimOhgYKP8JYhgzLOwavFEM\nYBZ25diFAI47jobvLTe8GTtHMdVDfz8LeyXDwq7BG8UA5lp2JexA+cYxHMVUJ+zYKxsWdg1RoxiA\nhL0cHTtHMdUJC3tlw8KuwR/FHH88sGdP4XKV5tg5iqkeWNgrm0RT41Uq/iimsZFe86Pq2AEa4rcc\nhd1fx87CXh0MDBR7C5g0qWrH/uyzwPe/X/i6P4qpr9dHFKqOHagMx87CXj1w42llU9XC/vzzwMMP\nF77uj2Lq6/UOp9KiGM7YS5e1a/VxYFw4iqlsMhF2KbP4lOj09NCPH38UYxJ2bxRTCcLOGXvp8rWv\nAb/+tbv1sbBXNpkIe6lWi/T0UMbsxx/F1NWZHXu5RzGcsZcH69cDvb3u1sfCXtlkIuwuHyFd0tur\nd+wcxTClxOHD1P3fpbBzxl7ZZCLsr72WxadEx+bYw0Yx5e7YOYopfTZsoH/TcOylGpMyyWBhDxHF\nVJNjZ2EvPdavByZOdC/so6PA8LC7dTKlQ9ULu8so5vDh8nNAPB576bN+PXD22e6EXQn6lCkcx1Qq\nVS/sQ0OFLtUfxdTVkeD5RdsbxdTVkTDqngBKGY5iSp8NG4DzznMn7AMDZFaamljYK5WqFnZ1oXhd\n+9hYfrULANTU0KOwX/S8jh0ovzjGO5E1kF0Uc+21wOrV+vfWri2/p540GRkBtmwBzj1X/3TpZ/Nm\noLPTvox6IjX1qGbKn8TCLoS4VQjRJYTYaFqmVIVdXShel61cuBD5y+p6n3rr2IHyE/aBAbphTZxI\nv2cl7A89RGKl48ILS7eKqhhs20ZjFc2cGc6xf/GLwJ132pdRjr2xkR17peLCsd8GYIVtgWIKe18f\ncMkl+vd6ekjUvMLuj2EUupzd7+zLTdi9+TqQTcY+PAxs2gTs31/4nio/Lad9mDbr1wNnnEFPVUHC\nfvgwsGZNcBzIwl75JBZ2KeXvALxuW6a7u3jZ7d69wOOPU8Tip6cHmDUr/xHXXxGjMAm717GX20Bg\n3nwdoJvcyIh+X7nixRdpv+mEXb1WTvswbTZsCC/s991HDaNBwq7OcZfCftddwI03ulkXk5xMMvaZ\nM/VzhmZBVxdltrqLoqcHmD07/0LwV8QodL1Pyz2K8Qu7EPR90iyBW7eOZpuyCXup9lQuBuvXA6ef\nHk7Yf/Ur4M1vDs7ivRm7K2F/6ing6afdrKvc6e93W5oah0yG7ZVyJa6/Hpg3D2hvb0d7e3sWHwsg\nJxZHj+bHDmNjdABmzix07EmimHISJb+wA7k4xvu9XLJuHUVjL71U+F5XF/2b1s3xzjvpu3384+ms\nPw3CRjG9vcBjjwHf/jbwxBP2daYRxezapb9ZVyP/+q/05HT99dH+rqOjAx0dHU62IRNhP/fclVix\nArjiiiw+LR8lFv7HU/U4OnVqYcYeN4qZPh3Yvt3NdmeBP2MH0i95XL8e+OAHgSefLHwvbce+cWN5\nlXMePEiCvWABnXs2YX/4YaqcmT+/OBn7zp3AkSNu1lXubNlCSYCOT30KuOYaYPHiwvf8pnfVqlWx\ntyGTKOb444vXgOp17F6UW21uznfspihGJ+x+Z1vuUQyQbmWMlDnHfuBAYVnj/v2U8wftQymBb3wj\nuij19ZVXB6wNGyiGEYLOv5ER+tHxy18C73sf3aiLJewu49adO/VDapcD27aZJzJ57jka9ydtXJQ7\n/hTAHwCcJIToFEJ80r9MqQp7U1PhhRA1iqmkjB1ItzJmzx4SqQULSFS6u/Pf7+oCTjwx2LGvWQN8\n/evRn456e93OHHTPPcDdd7tbnx8VwwC03xob9a59aAh44AHgve8NJ+zqHHcl7P395NaHh91ly489\npp8Ep9SR0i7sAwPZmAsXVTEfklLOkVLWSSnnSSlv8y9TTGHv6qKLwubY40Yx/sbTadMKxaqU0Ql7\nmlHM+vXAmWfS8WhrK8xk9+8HTj45WNhXrQJqa6NHNn197oT9lluA978/fWE//fTc76acfc0aYMkS\nYM6c4jj2zk5g7lyKH1y59qNHw3XIKjVee432qanj18BANtMSZhLFzJlTKOw33QS8bi2SdMP+/XTS\n+YW9t5dEbfLk+FGMv/F06tTyyhl1GXuaUcy6dTkHahN221NPRwc5/7e9LZ6wJ3VLUtLTwk03UXlf\nmsfb69gBOl91wv6rX1EMo5YJUxVTX0/nuQth37mTnsJmzXIn7EeOlKewb9tG/5rEu7+/goT9+OPz\nexPu3g38wz8A99+f/merx3uTY48SxfhFwR/FlJuwZ52xr1tHjh3QC3tXF/AXf2EX7FWraEiCmTOj\nC7uLKObrX6fY48kn6bukdbzHxoCtW4FTT829ZnLsDz4IvPvd9P9iOPZdu6jRdvZsYN++5OsDylvY\n58+PHsUcOQL89V+7245MG09VY9nPf04i+Mgj6X/2/v3UAh228TRpFFPuwq4GPEsDFcUA8Rz7E0+Q\niFx1FXUGK0YU8/jj5Nbb2tK9kR84QMdGjeMDmIW9q4scs1pGDclrwnXGrhy7yyjmyJHyG1APoA54\np58e3bH39AB/+pO77chE2JubqdpB5c8/+xlwww0k7GkO+DQ8TIK+cGH4xtMoHZT8UUxTE4liuYxx\nnaVj7+mhLHbJEvrdL+yjoxTNnXSSefjj668HvvpVOpfiCnvSm1ZfX26fTZ1aeF65QrlgLzphHxwk\nd6/MiBC0nM3tunbsaQl7uTr2M87QZ+xquGTdOaiOiSsyEXYg59p37ABeeQX4278lUTQNBuWCAweA\n1lZy0lEce9yqGCFojOskLu5f/gX4wQ/i/30UsszYN24ETjmFGj2BQmE/dIiOU3MzMGFCoYBt2kQX\nzcc+Rr/HEXYXUUxfHwkikK5j7+ykDn1edMJ+9Cidc95B64LimDSEXUUx1d54qoTdNOMaoH+v7IX9\nrrsoS5o4Ebj00nTjmP37SUCmTCk80b2Np37HHjeKAZJf7D/8Id38siDLckdvDAMUCntXF70G6Hvw\nvvQScNZZuZEoixXFeIVdnVdpjK0TVtiPHKFzzkvWwr5rVzqNpwMD5rr9UmRoiI7bySfrzzPl4itS\n2H/2M+p5CKQv7F1d1Mg2ZUq0cse4VTFAMmF/6SXK6LIaI/vw4UJRSKvc0VsRAxQK+/79dKwA/WBq\ne/ZQdZWimFGMEvYJE+j/aTjLsFGMcuxe/Oe0H5cZ++goXdfz5rmPYoDij7kShe3baT9MmaK/hpV+\nVFwUs2YNHfgLL6TXLroI+N3vwgvJn/4U7UagHPvkyfaqmLhRjGvHft99tL6shP2llyjT9pJWFOOt\niAH0wm5z7C6E3XUUA6QXxyR17Fll7Hv30rGoq3NfFTNhQnoNqGkM/bFtG11PDQ1V5NjnzKFBmK64\ngg4YQBfwkiXAH/8Y/PdSAp/7HPBv/xb+M4Mce1NTobsJG8VIWZixA8ku9NWrgbe/PRthP3iQHnOV\nmCrSiGKkpIzc29nGFsWk4djHxpJ3DhkdpX3jPT9KQdj9jj3LKEbFMAAwYwY1gLsoHjh6lG4UaeXs\ny5fTbFMu2baN9Mw0R3LFOvaREeDKK/NfDxvHPPggCd6f/hT+xPFm7CbH3tRE61XlYWEd++goTZmn\nblKKuCWP3d3As88Cl1+ejbC/+CKdhP6ZotKIYg4cyA24pmhpoWOijqU3iknDsat9muSmpc4N7z5L\nS9h37QrfeFrMjF01nAJ0LbS25gbei4uqHGlrS0/YjxwBfv97t+t88UVy7PX19iimohz7G95AZYfL\nl+e/HkbYpaTyyFWraD3PPRfuM5UL1Am7ajytqcm/YMIKuy6GAegiizOswEMPUUTV2pqtsPtJI4p5\n9dWcq1PU1JCAHzxIv3ujmDCOffJk2k9hb/K9vbka77j4YxggHWEfHqaboff7Au4cu8uJNlSpo0KX\nsz/5ZO44h0G1GwRFSnFRE9jrRhhNgopiVAO/v+G3IqOY00+nx/Ea3yeefz7wwgv24QWeeIIu/Cuu\nAN76VuC3vw33mcoF2hw7kF/yaItivG5P13AKxL/QV68G3vUuuqkkFfYf/CB4uIYXX6Renn7SEPad\nO+mm7scbxwRVxfiFXQiasCPssBR9fbT8wED8vhNZCfuePXTe1voG1Xbp2F01nnqjGEAv7J/+NA15\nEPZpSbUbhBkeIQ5qna4du4piAH0cU5FRDJDfi05RV0ezvjz+uPnvbrgBuPpqetSLKuxtbfQZUubv\nUK+wey+EsI5dl68D8S70kRFy7Jdfnnz8jq4u4DOfAf7wB/tyW7fqHXsaPU91jh3IF3Z/VYxX2AcG\n6HhNn57/91HimL4+Os61tfFL6LISdl2+DoR37EFVMd6xYvr7k3US9EYxQGEDak8PLTN9OvB3fxfu\ns7zCnkbjaU8PRcNHjrgbnPDoUdpWZT50wl6Rjt3GRRfR4E46nnmGROijH6XfL7yQHqHCXJyq8VR1\nHPK6dtV4CuSfQCZh9/c8tUUxUS/0J58kR3v88ckd+2230b55+WX7cllGMf7HdYVf2E1RzN69JBj+\n9oAowt7bS6Ks60EcFp2wJ+2QpkNX6gjoe5QmydhrapLtDyA4ilm/Hli6FLjjDuD554Gbbw5ep/pO\naTr2KVPIULqKY7ZtozGp1Dmqu44HBujYVJxjN7F8Oc2ZqOM73wH+6Z9yItraSm5m3Tr7OqWknHLG\nDPrd30nJ79jDRDF+x+4qirnvPophgGTCPjYG/Pd/Ax/+sF3Yh4fJRetmcSlGFCOlPYrxxzCKqI69\nqclcsRB2HeXg2MOWOwLJ4hgpC4Xd30np+eepY1lzM/DrX9O0cb/5jX296jullbGra/+CC9wKu7d0\n2OTYp02rIsd+9tlUeuT/wiMjdBJcdVX+62HimO5uEkm1s3SO3ZuxFzOKefBB4LLL6P9JhP3RR+l7\nfuhDdmHfsYOeDnQnUhrljkFRTG8vOR11PPyO3ZWwNzZWnrDHcezec1wn7GHHv+nupuPm/Xy/Y1fC\nDtA5sGoV8KMf2debRcauhD0oZw97fnnzdcCcsVeVsDc20t3O78LXrqWTwZ+thhF276M9UNhJSVXF\nqPfUCZS0KiZquePYGImwGp7VJux/9Vd2wf7e94DPfpYeCW3LmfJ1wH25o87VKZSw+49VGo7dG8XE\nvXFlJey6UkfAfR07oBf2t7yFpuULQh1Xb0RmE3aAHH1Q1Vjawn7sGK377LMpkrTtq+XLqbgjCJ1j\n10Ux06ZVURQD0ES8/jjmd7+jk8zPhRfSndY2NKn30R7Id+wjIyReakd6LwQXUUyUcseDB+kkU4Jh\nE/bnnzePYb9nD/Xsveoqij06O82lgKZ8HUgWxezZU+hGXn+dLvxp0wqXV8LuP1ZKsFVDWzVGMaaM\n3WUdO6AX9j17wnXe8VfEAPmNpwMD1Lt56dLc+2EqmbwZe1qNp83NdP0uW2YfLvfIEWonCEJl7Apd\n79P+/lxllp+qEvYnntAL+6xZJAQbN5rX562yAPKFXbl15TS8zsBFHXuUC93/2G0T9r4+ilt03Hor\n8IEP0EWtunfv2qVf1lTqCCSLYj7/eRrEzIvO1Sm8jt17rCZNov2tLmqOYgjdDEquHfvoKO3Tl14K\n3k5/RQxA1+a+fXRT3rgx12FHEWb6SPWd0oxi1KimQXHMwACVaQfhb0cyRTFTp1a5Yx8box2uE3Yg\nOI7xP957hd1bEQPEL3d00Xjqv4hVvbyuLKy3l76z34mPjlKj6Wc/m3tt8WJzHGNz7EmimH37KD7z\nYmo4BcxRDJCfs7uMYnQzYYUlC2Hv66PzUzX6ewnr2G1OV40Jrs5dv7B3d9O1F1bY/Y69vp6289Ch\nwhgGCOfYVRSTduMpENyA2t8fLOz9/bS/vcdMF8VUXeMpQA7y4EGqZAEoB54yheYr1REk7KrUUeEX\ndu9wtepCUCWU/o4hQPjG08ZGunDCiqOaCFhRU0Pr9R98KenEWLSo8MnmkUfopPJeRDZht2XsSaKY\nAwcKhd3UcAqYHTuQn7O7jGLClPfdcQfwrW/p15G2sKsbve4Jp6GBbkoqgpRSP7qjzbEPDtI+UOv3\nC7vqIWoS9s2bqfH96FG9YwdyOftzzxUKe1jHnkXjKUAdJJ96Sh9bqpugLRkAaKrPuXPzO1/qopiq\nazwFaKe88Y3A00/T76Z8XaEOiAmbY/c2nAI5Z2By60Ch0zNFMapKIOzFvnt34WN3Y6O+4aWujiZx\n9g/BcNttwN/8Tf5rJmE/fJi2fdYs/fYkFfYNG/LbPkwNpwAJrZQ00l7ajj1KFLNrl37fZSnsOoTI\nF+LeXvo+fiNic7p+AdEJ+6JFemHftImu0fZ2Oh6/+IXeIChh1zn2pqZcl34Tadexq8ZTgJ4gFi7U\n5+jqGt+71z58sK6x21YVU1VRDJAfxzzxRG54Xx2zZtFJaOrJZms8NTl2m7DX1tIjqnL1pigGiHax\n6y5kXe9TNdbJpZfm5+yHDwMPP0wljl5Mwq7ydZ0jBOJXjQwN0X6dPTs3UztAjt0UxQhBx2jTJr2w\nHz5M6xweLowbvMuEIUoUox6t/SjX70X1j3A1xaNN2IH8OEY3ZC9A33NwUN+JL4ywn3wy/a1/vJ61\na2nS7J07c8fFL9xArn1ny5b8MfiBXEO6zbV7M/Y0G08Vy5fnDKWX/n7a30uW2Gd60x2zoDp2//lS\nNcIe5NiVUzF1rrA1nvoPrHI4QTvXKwqmKAaIVvJoEna/Y1du8c1vJles1v/TnwIrVpDz8GITdlMM\nA8R37AcPUuexs87Kj2Nsjh0gQd+8WR/FHDpEbmnOHP2NKK0oxibsfsc+cSKt09WEEKZSR4VX2HUx\nDJDrE6Bzu37zohP2GTOo0dPv2v1j6usiS4CE/bHH6IauG0Zk2jR7zp5lxg7Quaa7XtWYOkuX2nP2\nsNfwwEBu4EH/TVc9kbui5IT96acpwxsczC8f0qEbBVChc+zqYjU1ntocO5B/FzZFMUC0kkd/xg7o\nTwrl2BsayGGo9oXbbgM++cnC9b7hDeSW/SWhtnwdiC/sqpfvmWdGF/beXrNjN8UwQG4yaVvZqyJK\nFKMaME3r0G2HqzjGVOqoCOPYAXPOHsaxt7bStecX9vXrCx24jlmz6Cny7LP17x93XLBjTztj9871\na5sYo74eOO00e84exbHX15tjmop17DNn0gG99VZy66a4QKEbBVDhd+zeDkq6KEZl7EGOXR0QF1HM\n2Bg50jDC7hWVSy6hnH3jRqpEueSSwnU3NNAFunt3/uthHHucKGb/fhL2ZctyHc3UzVJX4aFQgu4X\ndnVsbcI+YUL4sVpcRTFZCHuUKEbn2AFzjBFX2KUsdOwmZs8mR66LaYDwjj2LxlPAXGKs9lUcx24S\nb9UbvqqEHSDXfsst9nxdYXoUVzPleN1MUOPpsWO5HW8iimMPc6F3ddFJ7r9B2Bw7kMvZf/AD4GMf\nK5zsQ6GLY2w17ED8cscDB0icly0jx+7tcWq7Qbe15cZm96KexmzCrpYLE8ekFcUAboU9ahSTpmP3\ntpXs2UPHydTo7mX2bPrXJOw2xz42lnPU9fV0Lrqe0NrbeArYhd11FFNfr2/HqgphP3zYnq8rTBe1\nqojxCkrSxlOg0LEnFXaTOwty7GeeSRfg//4v8IlPmNfvF/aREYq5dIN/KZJGMbNnU/a6e7e94VTR\n1kZC4r85hXHsQHhh9zr2UhV2KaNHMSbHbhL2MBm7zrGrGCboKRrICbvJ3dsaT3t6aJsmTLC3FSQh\nrGNXT/Dz5tE+N8W+FRnFCCFWCCG2CiFeEkJ8Jen6zj2XTlbv/JgmTBm7rsNLmMbTrKMYXb4OmB27\nEpWaGhrqeOnSwsmovfiF/be/zU22ayKpsAN0Qa9bF5yvA3Sc/McKSMexl3oU092di5dMRHHsOkEM\ncuyHDuULu6reCBvDAMAJJwDf/KZ522ydlPztBmk0oEaJYtRUiCbXrtp4/ENm2KKYknfsQogJAP4L\nwAoApwD4kBDi5CTrPO88EiBTvODFdFH7G04Be8/TOI7dFsXoqmKefbYwFtHVsANmx+7d5quvBm66\nybytQKGw33gjdfu3EbfcUWXsQC6OCSPsixbpM3/Xjj1qFDMwUBgBpC3sQfk6kNyx+wXEX1qrHHtL\nC53farz8sA2nAO3ja681v29z7H5hT8ux+xtPbY4dMAu7qUOZqedpuTj2NwF4WUr5qpRyGMCdAN6T\naINqwjsDU+OpzrE3N9MJPDpaeMeeOJF+Xn89WNi95Y5RHPuNNwLf/37+a3GjGIDE841vNG8rkC/s\nL7xANxf/EMh+kjh2tc+VsIeJYs47jzq6+HHt2KNGMUChoJiE3dVkG0H5OpBdxg7k5+zr14e/LoOw\nOXZ/CWcWUYxt8umwwu7H1PO0XBpPjwfQ6fl99/hrmWBz7P66aDVpdU9PYeMpQL8fOBAtiolS7rh9\ne2FP2SjC7m08DcuiRcArr1CD1M0309RkthsXkH0UY6Klhfbha6/lMlvTclEce9goBigUxrQd+yuv\nUJmqDRdVMaaMfWSEhFXFCiqO6e2lm46tmioKUR27y05KQ0N0PXiv3aAoBogu7LaM3f9UPDpKP2oS\nbBcYuhiEJlR/u5UrV/75/+3t7Whvb0/4sYQpY+/q0mfXKo7x37EBcjgHDtiFz/sYH7UqZscOOkGH\nh3MH0JSx64YUMImKjeZm2pYNG4C77qKKmCBcRDGLF9NxOXgwvrDX1uaGHPA+NvtpaaEngyDU/gsT\nxfT10bGNIuxBUxGG4ZVX6GZsI6lj97cjeYX98GFy02rMEyXsmzZRb1RXwlPMjF1d+97oJGwUs3Ej\nnY/evzU9ZdlcuW6k2Pp64Le/7UCHaY7QiCQV9tcAeL/WPJBrz8Mr7C6xVcXoOkeoTko2YbeVc8Vt\nPO3poc9XgeNbAAAepUlEQVRdsIAukmXL6HVbxq4bUsDWqGZi8WLgH/8ReP/79Y2UflxEMTU11Pj9\n9NN2tx1ES0twb7yWFhqTxMbICP2o4YDDRDFtbfnCKCUdE92N36Vjv/hi+zJNTbncOyhj193wbFGM\nN4YBqKH95z+np6+w+XoYipmx6679MI59xgzab6+9lm/GOjv1FXz+dUppLndUr/tN76pVq6J/wXGS\nRjHPAjhRCLFQCDEJwAcB3JtwnaGJ0ngK5Dop6Q5uczNdMGGjmCiOfccOqhQ477xcHDM6Sp2LjtcE\nV2Ey9rAsXgw8/jjwpS+FW141WofpzakYHqZ96q0MOPNMKturSXCGTZ9uz9eBcFGMimGEiC/sQ0P0\nXXSu1aWw20pRgXQzdr+wK8fuMl8H7B2U/DerYgq7/+lGF8eEjWKGhugpdMKEwvdc5+tAQmGXUo4A\n+L8AHgawBcDPpJQhJpJyg6nxVJexA/lRjD+vDhPFxK1j376dslPvWDh799JFpBOKoHLHKJx0EvCO\ndwCnnBL+b6L2Pj14kI6FV8SXLQtuOA2ipcWdsKt9FyZq0gm77cbqQthHR8lhh8nYldAFOXZTuaMp\nY9cJ+8svU0O4S8du66Dkv1klEfZvfQt46KH81/wVMUBwz1PFaacVTt8ZVti9+73khR0ApJQPSimX\nSCkXSyk1o1inx3HH5U+hpggSdlvjaRRhN8UE/nJHr7CrabhM+ToQrtwxLJ//PPDjH0f7m6i9T735\nuuLKK6kHcRJcOXbvTTHIsauGrOnT8wUlbWF/7TX6zKDGbe8sSq4zdr+wT55MP888E65fSVhUFKMb\nEdNl4+lDDxXO3Ro3igGAv/zL/CGzpQxfsuzd76YoxiUl1/M0Cg0N5BL9U3u9/nr+CaoIajx1FcXU\n11PLu1pWCfvSpSTo3d3mE0J9L1dRTHNz4ciPQUTN2b35uqKpyd55Kgzz5gVHE1GiGCBY2FVfBr8w\npi3sYRpOAfd17DZhB8i1z50b/RyyMXEibYPOibtsPN26NTdxiMI/nAAQPoq56CJqN1L9YQ4dIpH2\nrw+wu/KycOzFxn9hHzxIjkA3pKiqN9ZFMc3NJGYuohj/ZBtK2GtrqVH3mWfsnVFclTvGJY6w2wb6\nisu3vw185jP2ZVSFhW089ChRjBJ2v1MsNWEfGckNA6sj7CBgdXXURjIyohf2k05yG8MoTA2orjL2\nw4fJqPmF3eTYTWOke/WguZkm+FHzIdiuYVsUw449BH5hN8UwAJ0wBw/mpp/zonI3F1EMoBd2IBfH\nRBX2uI49DlFLHnVRjAtqaoLHJpk4kfaX7XE9ShSTxLEnmWwjqrAfPUrbaNo/NsfuPcfVrEz9/bnh\nBLxcdBFw+eXhv0dYTCWPrjJ2VdobRthVo7j/nNcNMfLOdwL330//DxJ2UxTDjj0E/gbUIGHfs0fv\nfJWwh51owxbFALmLfWyMGsVOOIFeVw2oUTP2UnfsYUop0yIojokSxaiSxijCPmkSCYPucT4scYTd\nlK8D4TN2IBfH6Bz7VVcFPzXFwebYXQn7CSfohV3XL8I2GqOXyy4DHnggeMA2dZ6pm33ZNZ4WG38n\nJd3EyIopU6gaRff4ql4L20EprGPfu5dOYiUKy5fnhL1UHXupRDFhCSPsUaOYKMIOBMcxQW4+qrDb\nJtkAwmfsgF3Y08Lk2F01nm7dClxwQTjHDpiF3a8HixfTvl271n4N19bmz5TEjacR0UUxJvdoE/Y4\nUUwYx+6NYQCqW6+ro7KpqBl7qUQxfpEqdWGPG8WErYoB7MJ+773Apz9t/lsp4wm7rcNaQwOJyvBw\n/utBwu4fFz8twmbscRtPXQi7abTXyy6jOCZo0DbvucaNpxGJkrFPnkxRjM2xu6iKAXIlj35hByiO\nGRkx98r0D8wExC93jIPNsd99N/DRj+a/pht0LUtcRjFpOPauLuqkZkJte0uLeRmFysO7u+2O3TSW\neSk7dindRTFbt9LT8dGj+aN06qpigPCOHcjFMUGDtnnXyY2nEfFn7EFRzMGD7hx7mChm+/Zcvq44\n99zchBQ6SjmK2boVWLMm37WXumOPGsU0NroV9v5+2kcmlFsPM4lFTQ2dh11dwUNM6GIM3dDUjY10\no+jrs98sXKJz7AMD1DPTe13FEfbhYRqAbsmSXF8XhQvH/pa3AFu20E9Yx86NpxGJWhUD6J1vmIw9\nimNXIzzu2FHo2C+6yN5F23+SjYxQfb7t81xi63na2UlPPZ2eMT1LQdj9j9xevFFMbS01aJumW4tT\n7ggEC7sa30VHmKEEvDQ10TEIEmFdzm5y7J2dZJLC3FxcoBtWQNduEEfYt2/PRZ6trfnnRtSMXSe4\ndXV0DR8+bC6AAAqjGG48jYC/8TQoYwfsjt3FsL2AOWMHgHPOAe67z/y3/pNMiUpWF52t52lnJwnL\nH/9Ivw8Pk3i47MASlbY2uyP2RjFqvBjTjSuNKKa/n8TFNP7Oyy+Hy9cVTU3UVhTk2KMI+65d2cUw\ngH5YAZ2wmxqBbWzdmpvXVyfspqoY3TC7JqP3znfSeWd7avdex9x4GpE4jj3rKCZo/A8//g4TWZY6\nAvYoprMTeNe7csKuGycma2bMCBZ2ryjbhD1OuSNgn2yjv5+eEkxxUdiGU0Uajj1rYTc5dv/Nqq5O\n3whsI0jYkzp2AHjf+2jUVBvceJoAr7BLaa+pVuIdt9wxahSzbx9tW9B4J378HSayzNeBYGH/wAdy\nwl7sGAag422LOvwVRbYx2W1VMbaba5BjB8w3nzjCnsSx6zL2UnDsutp81QishlEIg03YXTSeqvX+\n8z/bt8MUxbBjD4G38bS7Ozf1lI66OvPYDkr0bS5cHajRUbqJ2OZlnTqVShoXLoznZr0nWpaljoC5\ngbGnh15/+9tp+NKBgfR6nUYhjGP3irKtMkYJe0NDrqu9WkeSKAYw33zSdOz+fNrUQakYjj1MFANE\nz9lffDG6Y7fNURoXUxTDjj0EKmOX0p6vK6ZMMd+x16yxi7B6hFcxjC3znjaNHHvUGMa7PeqkyLLU\nETA7dtVbtrGRZtR57rni9zoFgh27LooJEnblFJXjTUvY+/ooktCNy2+iqSleVczYmD5CVI2nWTv2\nMI2nQDRhl5Icu5rGL24U450YIy7ceJoAdRH299vzdcXkyWaRDJqxTz3CB8UwQO4EdSHsWTt2m7Cr\n8q7zzqM4phSiGHXxjo3p3/e3UdhKHlW5I5AfZSQV9tZWvbBv3x79qa6piZ4ao2bsg4N6Q9LYSOd1\nKTh23c0qSgPqgQP0/dR3idJ46hV278QYcTGVO3IUExKVs9tq2BUmxx4GdaCCGk4Bt8KetWM3CV+p\nCvukSXRMTZM3xHHsgFvHvmCBPi6KGsMAuXMhasZuyozV98pS2CdPpv3ibRR14dhVvq5uXtOn54Rd\nN5G1wi/sLsSWG08TooQ9jGN3IexZOXbV+7RUGk/9wv6HPxS/16lixgxzHBNX2F069gUL9NuXRNij\nOnZTZlwMYfcPbQ2YBzaLI+wKr2PXTWSt0Al70KQnQfgzdlvjaZBRjEpFCPv06ZSzh8nYL78cOPXU\neJ+j6rvDCHt9PS0TV9hV13GgdModvcK+cCHlkM8+W3zHDthr2aNGMV5hV4KSVNjnz3cv7HEcu03Y\nsxonRuHP2V04dm/DKUDCrvq5mPJ1wD7jUVzYsSckimP/8pep4S8OQpDoHTsW7g77uc/RDDRx8Ecx\npVAV4xV2Ici1P/986Qi7C8eu6tiBbBy7rmdyEEqcojr2IGHP0rEDhTm7LWOP4thVwymgd+w60nDs\n3HiakCgZe1Lq6+kEDNO9/7vfjX9ylHrjKUDCDpSGsNtKHrOIYqZMMTfw2TJ271j9YWlqomMUZC78\nTreUMnYgv5OSlFRl5XXbiihD9/qjmKlT6dgNDWXv2E3ljur68o7VzsKuIYpjT0p9PWWBaY/bUmrl\njmpiAZ2wl0LGbnLsUuo7KIWNYsIKe3097TPdsAEmxy4lCfuCBeb16mhqCjdYl783rC1jVw3QWeLt\npLR5MzVsnnZa4XJho5jhYZpL2HujFCIX1ZoqYoBsG0/VDG7qHGRhN+AV9rRFRgm768YOP6Xm2Lu7\n6YT0Cso559BgZsUcJ0ZhcuzDw7mevIo0qmLUFHP+4ZbVOufMoXV59+uBAyTSUQW1qSk4XwdI4F55\nJfe7SUAaGsitZzUWkcLr2FevpqEqdNsQVtg7O2nUVO+xBnJxTDGjGP+4M95hLVjYDXgbT9mxJ0fn\naHWTCjQ00EwyxRwnRmFy7DpBDhJ2fx376Cjtj6CLzybsTU35pXcAufWFC+3r1BHWsc+ZQzc2dcMz\nCci8ecAll0TfjqR4HbsSdh1hhd20P5Wwm4YTANKPYnSTiOvcvCtK4JJMTksLCY+U6T9O1tUVR9iL\n7diDZospNqZyR11FUdQoxtsb1Yaa3ciLlLm/91fuxBX2tjbzJC1ehKAKsM2b6XeTC50zB7j99ujb\nkRTVeHrgAG2jqYNg2MZTU3tFKTh2//pMMY0rKkbYX3iB3Hraj5PFimKKnbGXurCbyh3jOHZ/uWPY\nG6vOsQ8NUe/F2trCp4q4wn7eecA994Rb9tRTaVwfwI0LdYkqd3zgAeDii83XVNjG0x077I69mOWO\n/vV5zUWYp8GoVIywd3Zm04gXpSomCaVW7lgOwu4iitGVO4bd/zrH7r1R+J8q4gq7EObZt/z4HXsp\nCbty7LYYBnAXxWTdeOod492/PnbsIVBzRaadrwPZOnbl/kqh8bTUhX36dHJ//qoUF1FMEsfuXZ8r\nxx6FpUtLV9iPO47axR59lOYRNeFS2LOOYnQ9T9V7g4NUCTQ87N4oVoSwqx5zWQl7MRw7RzF2amup\nQdE/mUUUxz46SsP0qmPrwrF7BcJVxh4F5djVaIVJxcol06YBv/89dRi0PW2HFfYdO+wZe9aNp+o8\nU1Nbeqt1vAMKBo0UG4fYwi6EuEIIsVkIMSqEOMvlRkWloYF2TpaOPW1h9w8pwFFMMLqSxyjC7m8k\nVdluGo49bg17VNra6Pvs21eajn1kxB7DAOEaTwcH6djrJrUpduOpytC94q3eS+uYJHHsGwG8D8AT\njrYlNkJQHJNVxp5142mxHbuU1PGj1IVdl7NHiWL8j8tpZuxxa9ijIkQujim1xtNp0+jfIGEP03ja\n2Ulj2uvaHorVeKrWqZs7VZ2DJSfsUsqtUsptLjcmCS0tlR3FFDNjVyKU5TbEQVfyGNWxe5d1URVj\ncuxZxDAKFceUmmNvbQWuu45uPDbCRDGmihj1OUHCPmlSLjIB3PY81a2rlB17SbFkCbB4cfqfU4wO\nSsUudywHtw7oSx7jRDEK147dK+w2IXKNV9hLKWOfMAFYuTI4X66ro3a0rVvNy9jG3AlTFSNEYRWL\nqyhG59hV42lawm4tmhJCPAJgluatr0opV4f9kJUrV/75/+3t7WgPmqooBnff7XyVWrKOYqTML8HL\nAn9UUQ75OqB37KYoJoyw19eTiztyxJ1jVzeerB37HXdQI2UpOfawCAFceSXw4x8D3/iGfhnb/lQz\nTu3fb4++VBVLU5PbKEYn3uoc9L7X0dGBjo6OZB86jlXYpZSXuvgQr7CXO2pM9qwc+8AAfVaSKbqi\n4nfs5SLsbW250j6FybHrMnb/DVQIcnhdXeEdu/+JwV8+OTxMn/Pqq8ERhCtOPRXYsoWErxyFHQCu\nugp4//uB66/XO/xXXwVWrND/rZoqr7PTLuz+IQBcOvYwUYzf9K5atSr2Z7uKYjIePqh4eIfeTBN1\nkmXdcAqUt7DrMnb//gsbxQDRhD3IsQuRq9zJ0rG3ttJ3fvnl8hX2ZcvIVP3xj/r3g6Kt1lZ6+gor\n7C7LHcuq8VQI8T4hRCeA5QDuF0I86G6zShfvhLRpok6yrEsdgdzJP38+zTh1773lIey6ckfd/gsb\nxQC0L6I4dlvGDuRuPlkKO0CufcOG8hV2IYCPfITiGB1B49qrseajOPak+0qNKnrsWPaNpyE7Jhci\npfwVgF853JayIEvH3tdXHMdeX0/is2MHsHEjPcZffHG22xAHk2MPG8WYHPv+/W4cu3cbd+5Mv4bd\ny9KlwOOPl1bjaVQ+/GHgTW8Cbr45v7PPwACN7mobGK21lUohbYbMdRQD0Ln2+usl1njKFFINjh0g\nt7FoEf28973Zf34cTOWOSaOYHTvcOvZNm7KpYfei5vktV8cOkCM/6STg4YfpSVKxcyc9UdraoVpb\nzRNZK1xHMUBO2HWNp6+/XoJRTLWSdcaedaljOdPSQhVLIyO513Q3xrB17EAuYw9zDMI49hkzgKef\nzjaGASpD2AF9HBMm1lLCbiMNx97QoBd2rmMvMbIS9tpa+unuLv2OQaXChAnUTd07mYUuignb8xQg\nYQ/71BTWsbOwx+eKK2iYX29P1DDzxkYVdteOvWwaT6uVrKIYgE6GQ4dY2KPg76Ske+IxOXZdfwHV\nocVlxr57d/bCPm0adeIrhWkMk9DaShNy3HFH7rUwnb3iOHZXwt7dzY695MnKsQN0oh08yFFMFLwN\nqGpyY7+YTZpE742N5b9ucuyAW8cOZC/sAE1GE2bmpVLna1+jjkpqX4eJYhYuDP7uldR4ysIeEeXU\nsxJ2duzR8JY8/vCHFEH4h5oQQj80sancEXDn2GfMoH+LIexZT1adFuecA1x4IXDjjfR7GGFfvpzK\ndm2kEcWYMnZdz1OXsLBHJOsohh17NJRjHxoCvvlNGotEhy6OqXTHXknccAPw3e/m+gQEZexhSNOx\ncxRT4mQdxbBjj4Yqebz9dnLqF1ygXy4NYVeOXUrzOtX46FnWsFciixbRMAPXXEMZ9izdiFYRUcKu\nJlzx1srHRWXsWTeech17RDhjL23a2oCnnqLGtZ/8xLycrjImqbBPmEDnhdft+dfZ0AA891y2NeyV\nyv/7f3Tznj+f+l0kRcUmSmxdRFcNDdx4WhYUI4phxx6eGTOAO++kCpDzzzcvZ3Lsujp2IPwx8Ofs\nupvFsmXh1sXYmTEDuPpq6rTkAu/Ae6566NbX03DBtsbTNLSEHXtEOIopbdra6GIJGhgvahQT9kJX\nObuah1e3TsYdV19d2K4RF++MR65ctFoPN56WOMWoY+coJjxLl1Kj6fLl9uV0A4Hp6tibmylrDZu3\nhnHsjDuEcBdrpeHY1Xo4iilxsi53HBtjxx6F444Drr02eDndQGAmxx5l//srY1jYy4c0HTv3PC1x\nVFf/LIRdCQo7dveEjWJmzwY++9nw62XHXr6klbF7//W+zo69xLjnnmzEVp1c7Njdo4tidCLc0AB8\n5zvh18uOvXxRU+Nl4dh52N4S5LLLsvkcdTKwY3dP2CgmKl7HPjpKQxdk0R7DJEdNZu1SbE0ZOzee\nVjHs2NMjbBQTFa9jd1kPzaRPllHMxIl04+/tZWGvOljY08MUxSTd117HzjFMeZFl46kQ9N7Royzs\nVQdHMenhj2JUbJK0Udzr2FnYy4ssyx0BMhe6XqkuYGEvYdixp4c/ilEinDQ2YcdevmTp2NV7w8Ms\n7FVHQwONgcGNb+7xRzGuRJgde/nideyuhV13DavXWNirjIYGcoDc+OYefxTjSoTZsZcvXsfuMoqZ\nOFE/0XaavdhZ2EuYhgbO19PCFMUkhR17+VJbS0/Ix465deymc6C+nkQ9DePGwl7CKMfOuCetKIYd\ne3nT0AAcPuy23NF0k6irS29ycRb2Emby5Nzogoxb0opi2LGXN6ap7OLS0gLMnKl/zyb6SWFhL2FO\nPx1YvbrYW1GZ6KIYF09H7NjLG+XYXQnurFnAunX699ixVylC0OwwjHv8UYxuyN44sGMvb5Rjd3nc\nTLM7sWNnGMdwVQyjw3UUY6MkhV0I8W9CiBeEEOuFEL8UQkx1uWEMkyZcFcPocN14aqNUo5jfADhV\nSnkGgG0ArnGzSQyTPmkJOzv28qahAThypIodu5TyESnl2PivTwGY62aTGCZ9uOcpo6OhAZAyG2Ev\nVcfu5W8APOBoXQyTOpyxMzrU8criuKXp2K0TbQghHgEwS/PWV6WUq8eXuRbAkJTyJylsH8OkQlpR\nzKRJNE/t8DALezliG43RNUUTdinlpbb3hRCfAPBOABfbllu5cuWf/9/e3o729vaw28cwqTBzJtDV\nBezfD7S1kcs2dSSJghA5187CXn5k6dj9UUxHRwc6OjqcrDv21HhCiBUAvgzgrVLKAduyXmFnmFLg\nuOOAD34Q+I//AL75TbcirHJ2FvbywzTjUVqf5f0cv+ldtWpV7HUnydj/E0AzgEeEEGuFELckWBfD\nZM6Xvwx873s0i41LEWbHXr5kGcWcdhpwzjnprDu2Y5dSnuhyQxgmaxYtAt72NhJ3duwMkG0Us2JF\neuuOLewMUwl85SvAO95B4/KwY2eydOxpwkMKMFXNGWcAy5YBjz7Kjp2h4zVpknl8l3KhzDefYZJz\nzTU0mTU7dqahofzdOsDCzjC44ALgU58CFi50sz527OVLpQg7Z+wMA+B//sfdutixly8NDZVxzNix\nM4xj2LGXL5Xi2FnYGcYxjY0s7OUKO3aGYbQ0NQHd3TTr/YQJxd4aJgonngi85z3F3orksLAzjGMa\nG4GDByvD+VUbc+YAlTACCgs7wzimqQk4dIiFnSkeLOwM4xh27EyxYWFnGMewY2eKDQs7wziGHTtT\nbFjYGcYxTU3ZzXTPMDpY2BnGMY2NND0eCztTLFjYGcYxTU30Lws7UyxY2BnGMY2N9C8LO1MsWNgZ\nxjHs2Jliw8LOMI5hx84UGxZ2hnFMlvNmMowOFnaGcUxNTeWMEsiUJyzsDJMCTU0s7EzxYGFnmBRo\nbGRhZ4oHCzvDpAA7dqaYsLAzTAqwY2eKCQs7w6QAO3ammLCwM0wKTJkCNDcXeyuYakVIKdP9ACFk\n2p/BMKXGnj1AayswaVKxt4QpV4QQkFKKWH8bV3SFEN8A8G4AYwD2A/iElHKvZjkWdoZhmIgkEfYk\nUcy/SinPkFIuA3AfgK8nWFdV0NHRUexNKBl4X+TgfZGD94UbYgu7lPKY59dmkHNnLPBJm4P3RQ7e\nFzl4X7ihNskfCyFuAPBRAEcAtLvYIIZhGCYZVscuhHhECLFR8/MuAJBSXiulnA/gxwA+n8UGMwzD\nMHacVMUIIeYDuF9KeZrmPW45ZRiGiUHcxtPYUYwQ4kQp5Uvjv74HwAsuN4xhGIaJR5Jyx18AWAJq\nNH0VwOd05Y4MwzBMtqTeQYlhGIbJltSGFBBCrBBCbBVCvCSE+Epan1OKCCHmCSHWCCE2CyE2CSH+\nfvz1lvEG6W1CiN8IIaYVe1uzQggxQQixVgixevz3qtwXQohpQohfCCFeEEJsEUKcW8X74kvj18dG\nIcRPhBB11bIvhBC3CiG6hBAbPa8Zv7sQ4ppxLd0qhHhb0PpTEXYhxAQA/wVgBYBTAHxICHFyGp9V\nogwD+JKU8lQAywH8n/HvfzWAR6SUJwF4bPz3auELALYAUI+I1bovvgvgASnlyQBOB7AVVbgvhBDH\ngyrpzh4vupgA4EpUz764DaSPXrTfXQhxCoAPgrR0BYBbhBBW7U7Lsb8JwMtSylellMMA7gQ1sFYF\nUsp9Usp14//vATUsHw8aguH28cVuB/De4mxhtggh5gJ4J4D/AaAa06tuXwghpgJ4i5TyVgCQUo5I\nKY+gCvfFOLUAGoUQtQAaAexBlewLKeXvALzue9n03d8D4KdSymEp5asAXgZprJG0hP14AJ2e33eP\nv1Z1CCEWAlgG4CkAM6WUXeNvdQGYWaTNypqbAHwZ+b2Tq3FfnADggBDiNiHE80KI/xZCNKEK94WU\n8jUA/w5gF0jQu6WUj6AK94UH03efA9JQRaCepiXs3CILQAjRDOBuAF/wDcGA8ZHRKn4/CSEuB7Bf\nSrkWObeeR7XsC5BDPQvALVLKswD0whc1VMu+EEIcB3KoC0HC1SyE+Ih3mWrZFzpCfHfrfklL2F8D\nMM/z+zzk33EqHiHERJCo/0hKec/4y11CiFnj788GjYpZ6ZwP4N1CiB0AfgrgIiHEj1Cd+2I3gN1S\nymfGf/8FSOj3VeG+uATADinlISnlCIBfAjgP1bkvFKZrwq+nc8dfM5KWsD8L4EQhxEIhxCRQ8H9v\nSp9VcgghBID/BbBFSnmz5617AXx8/P8fB3CP/28rDSnlV6WU86SUJ4Aaxx6XUn4U1bkv9gHoFEKc\nNP7SJQA2A1iNKtsXAHYCWC6EaBi/Xi4BNa5X475QmK6JewFcKYSYJIQ4AcCJAJ62rklKmcoPgHcA\neBEU9F+T1ueU4g+AC0B58joAa8d/VgBoAfAogG0AfgNgWrG3NeP98lYA947/vyr3BYAzADwDYD3I\npU6t4n2xElRYsBHUWDixWvYF6Ol1D4AhUHvkJ23fHcBXx7V0K4C3B62fOygxDMNUGDznKcMwTIXB\nws4wDFNhsLAzDMNUGCzsDMMwFQYLO8MwTIXBws4wDFNhsLAzDMNUGCzsDMMwFcb/BySkWLQGPxAY\nAAAAAElFTkSuQmCC\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x10c77ae50>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"%matplotlib inline\n",
"\n",
"n = 100\n",
"a = [[1.0/(i + j + 1) for i in xrange(n)] for j in xrange(n)]\n",
"a = np.array(a)\n",
"rhs = np.random.randn(n) #Right-hand side\n",
"f = np.linalg.solve(a, rhs)\n",
"\n",
"#And check if everything is fine\n",
"er = np.linalg.norm(a.dot(f) - rhs) / np.linalg.norm(rhs)\n",
"cn = np.linalg.cond(a)\n",
"print 'Error:', er, 'Condition number:', cn\n",
"\n",
"\n",
"u, s, v = np.linalg.svd(a)\n",
"rhs = np.random.randn(n)\n",
"plt.plot(u.T.dot(rhs))"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
"** Can you think about an explanation?** "
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Overdetermined linear systems\n",
"Important class of problems are **overdetermined linear systems**, when the number of equations is greater, than the number of unknowns. The simplest example that you all know, is **linear fitting**, fitting a set of 2D points by a line.\n",
"\n",
"Then, a typical way is to minimize the residual (**least squares**)\n",
"\n",
"$$\\Vert A x - b \\Vert_2 \\rightarrow \\min$$"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Overdetermined system and Gram matrix\n",
"\n",
"The optimality condition is $0\\equiv \\delta \\left(\\|Ax-b\\|_2^2\\right)$, where $\\delta$ denotes variation. Therefore,\n",
"\n",
"$$\n",
"\\begin{split}\n",
"0\\equiv \\delta \\left(\\|Ax-b\\|_2^2\\right) =\\delta \\left(Ax-b, Ax - b\\right) = (A\\delta x, Ax-b)+ (Ax-b, A\\delta x) =\n",
"2(A x - b, A \\delta x) = 2(A^*(A x - b), \\delta x) = 0, \n",
"\\end{split}\n",
"$$\n",
"for any $\\delta x$. Here we used, that $\\delta(Ax-b)=A\\delta x$ ($A$ is linear operator and $b$ is constant) and $(x,Ay) \\equiv (A^*x, y)$. Thus,\n",
"$$\n",
"\\quad A^* A x = A^* b\n",
"$$\n",
"The matrix $A^* A$ is called **Gram matrix** and the system is called **normal equations**. \n",
"\n",
"This is not a good way to do it, since the condition number of $A^* A$ is a square of condition number of $A$ (check why)."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Pseudoinverse\n",
"\n",
"Matrix $A^* A$ can be singular in general case. \n",
"Therefore, we need to introduce the concept of pseudoinverse matrix $A^{\\dagger}$ such that <br>\n",
"solution to the linear least squares problem can formally be written as\n",
"$$x = A^{\\dagger} b.$$\n",
"\n",
"The matrix $$A^{\\dagger} = \\lim_{\\alpha \\rightarrow 0}(\\alpha I + A^* A)^{-1} A^*$$ is called **Moore-Penrose** pseudoinverse of the matrix $A$.\n",
"\n",
"* If matrix $A$ has full column rank, then $A^* A$ is non-singular and we get $A^{\\dagger} = \\lim_{\\alpha \\rightarrow 0}(\\alpha I + A^* A)^{-1} A^* = (A^* A)^{-1} A^*$.\n",
"\n",
"* If matrix $A$ is squared and non-singular we get $A^{\\dagger} = \\lim_{\\alpha \\rightarrow 0}(\\alpha I + A^* A)^{-1} A^* = (A^* A)^{-1} A^* = A^{-1} A^{-*} A^* = A^{-1}$ - standard inverse of $A$\n",
"\n",
"* If $A$ has linearly dependent columns, then $A^\\dagger b$ gives solution that has minimal Euclidean norm "
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Compute pseudoinverse via SVD\n",
"Let $A = U \\Sigma V^*$ be the SVD of $A$. Then,\n",
"\n",
"$$A^{\\dagger} = V \\Sigma^{\\dagger} U^*,$$\n",
"\n",
"where $\\Sigma^{\\dagger}$ consists of inverses of non-zero singular values of $A$. Indeed,\n",
"\n",
"$$A^{\\dagger} = \\lim_{\\alpha \\rightarrow 0}(\\alpha I + A^* A)^{-1} A^* = \\lim_{\\alpha \\rightarrow 0}( \\alpha VV^* + V \\Sigma^2 V^*)^{-1} V \\Sigma U^* = \\lim_{\\alpha \\rightarrow 0}( V(\\alpha I + \\Sigma^2) V^*)^{-1} V \\Sigma U^* = V \\lim_{\\alpha \\rightarrow 0}(\\alpha I + \\Sigma^2)^{-1} \\Sigma U^* = V \\Sigma^{\\dagger} U^*,$$\n",
"\n",
"* One can check that $\\Sigma^{\\dagger}$ contains just the inversion of nonzero singular values. <br>\n",
"* If singular values are small one can skip inverting them. This will result in a solution which is less sensitive to the noise in the right-hand-side.\n",
"* The condition number for the Euclidean norm is still just the ratio of largest and smallest non-zero singular values."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## A canonical way to solve linear least squares\n",
"\n",
"Is to use the $QR$ decomposition.\n",
"\n",
"Any matrix can be factored into a product \n",
"\n",
"$$A = Q R, $$\n",
"where $Q$ is unitary, and $R$ is upper triangular (details in the next lectures).\n",
"\n",
"Then, since $$\\|Ax - b\\|_2 = \\|QRx - b\\|_2 =\\|Rx - Q^*b\\|_2$$ finding optimal $x$ is equivalent to solving $Rx = Q^* b$.\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Padding into a bigger system\n",
"\n",
"Instead of solving $A^* A x = A^* b$, \n",
"\n",
"we introduce a new variable $r = Ax - b$ and then have\n",
"\n",
"$$A^* r = 0, \\quad r = Ax - b,$$\n",
"\n",
"or in the block form\n",
"\n",
"$$\n",
"\\begin{bmatrix}\n",
" 0 & A^* \\\\\n",
" A & -I \n",
"\\end{bmatrix}\n",
"\\begin{bmatrix}\n",
"x \\\\\n",
"r\n",
"\\end{bmatrix}\n",
"= \n",
"\\begin{bmatrix}\n",
"0 \\\\\n",
"b\n",
"\\end{bmatrix},\n",
"$$ \n",
"\n",
"the total size of the system is $(n + m)$ square, and the condition number is the same as for $A$ (by the way, how we define the condition number of a rectangular matrix?)\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Example of LS\n",
"Consider a two-dimensional example. Suppose we have a linear model \n",
"$$y = ax + b$$\n",
"and noisy data $(x_1, y_1), \\dots (x_n, y_n)$. Then the linear system on coefficients will look as follows\n",
"$$\n",
"\\begin{split}\n",
"a x_1 &+ b &= y_1 \\\\\n",
"&\\vdots \\\\\n",
"a x_n &+ b &= y_n \\\\\n",
"\\end{split}\n",
"$$\n",
"or in a matrix form\n",
"$$\n",
"\\begin{pmatrix}\n",
"x_1 & 1 \\\\\n",
"\\vdots & \\vdots \\\\\n",
"x_n & 1 \\\\\n",
"\\end{pmatrix}\n",
"\\begin{pmatrix}\n",
"a \\\\\n",
"b\n",
"\\end{pmatrix} =\n",
"\\begin{pmatrix}\n",
"y_1 \\\\\n",
"\\vdots \\\\\n",
"y_n \\\\\n",
"\\end{pmatrix},\n",
"$$\n",
"which represents overdetermined system."
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.legend.Legend at 0x112ff9e10>"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\nDqeZ87+ntSN64sl6JQAAAABJRU5ErkJggg==\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x112f48f10>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"%matplotlib inline\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"\n",
"a_exact = 1.\n",
"b_exact = 2.\n",
"\n",
"n = 10\n",
"xi = np.arange(n)\n",
"yi = a_exact * xi + b_exact + 2*np.random.random(n)\n",
"\n",
"A = np.array([xi, np.ones(n)])\n",
"coef = np.linalg.pinv(A).T.dot(yi) # coef is [a, b]\n",
"\n",
"plt.xkcd()\n",
"plt.plot(xi, yi, 'o', label='$(x_i, y_i)$')\n",
"plt.plot(xi, coef[0]*xi + coef[1], label='Least Squares')\n",
"plt.legend(loc='best')"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Lacking for structure\n",
"A typical 3D-problem requires a $100 \\times 100 \\times 100$ discretization \n",
"\n",
"This gives a linear system with $10^6$ unknowns, right hand side takes $8$ megabytes of memory.\n",
"\n",
"This matrix has $10^6 \\times 10^6 = 10^{12}$ elements, takes $8$ terabytes of memory.\n",
"\n",
"Fortunately, the matrices in real-life are not **dense**, but have certain **structure**:\n",
"\n",
"- Sparse matrices\n",
"- Low-rank matrices\n",
"- Toeplitz matrices (shift-invariant property)\n",
"- Sparse in certain bases"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Summary\n",
"- Linear systems can be solved by Gaussian elimination, complexity in $\\mathcal{O}(n^3)$.\n",
"- Linear systems can be solved by LU-decomposition, complexity is $\\mathcal{O}(n^3)$ for the decomposition, $\\mathcal{O}(n^2)$ for each solve\n",
"- Linear least squares can be solved by normal equation (bad)\n",
"- Linear least squares can be solved by QR-decomposition (good) or by augmentation (not bad)\n",
"- Without structure, we can solve up to $10^4$ linear systems on a laptop (memory restrictions)"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Next lecture\n",
"- Eigenvectors, eigenvalues, Schur theorem"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"##### Questions?"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"<link href='http://fonts.googleapis.com/css?family=Fenix' rel='stylesheet' type='text/css'>\n",
"<link href='http://fonts.googleapis.com/css?family=Alegreya+Sans:100,300,400,500,700,800,900,100italic,300italic,400italic,500italic,700italic,800italic,900italic' rel='stylesheet' type='text/css'>\n",
"<link href='http://fonts.googleapis.com/css?family=Source+Code+Pro:300,400' rel='stylesheet' type='text/css'>\n",
"<style>\n",
" @font-face {\n",
" font-family: \"Computer Modern\";\n",
" src: url('http://mirrors.ctan.org/fonts/cm-unicode/fonts/otf/cmunss.otf');\n",
" }\n",
" div.cell{\n",
" /*width:80%;*/\n",
" /*margin-left:auto !important;\n",
" margin-right:auto;*/\n",
" }\n",
" h1 {\n",
" font-family: 'Alegreya Sans', sans-serif;\n",
" }\n",
" h2 {\n",
" font-family: 'Fenix', serif;\n",
" }\n",
" h3{\n",
"\t\tfont-family: 'Fenix', serif;\n",
" margin-top:12px;\n",
" margin-bottom: 3px;\n",
" }\n",
"\th4{\n",
"\t\tfont-family: 'Fenix', serif;\n",
" }\n",
" h5 {\n",
" font-family: 'Alegreya Sans', sans-serif;\n",
" }\t \n",
" div.text_cell_render{\n",
" font-family: 'Alegreya Sans',Computer Modern, \"Helvetica Neue\", Arial, Helvetica, Geneva, sans-serif;\n",
" line-height: 1.2;\n",
" font-size: 120%;\n",
" /*width:70%;*/\n",
" /*margin-left:auto;*/\n",
" margin-right:auto;\n",
" }\n",
" .CodeMirror{\n",
" font-family: \"Source Code Pro\";\n",
"\t\t\tfont-size: 90%;\n",
" }\n",
"/* .prompt{\n",
" display: None;\n",
" }*/\n",
" .text_cell_render h1 {\n",
" font-weight: 200;\n",
" font-size: 50pt;\n",
"\t\tline-height: 110%;\n",
" color:#CD2305;\n",
" margin-bottom: 0.5em;\n",
" margin-top: 0.5em;\n",
" display: block;\n",
" }\t\n",
" .text_cell_render h5 {\n",
" font-weight: 300;\n",
" font-size: 16pt;\n",
" color: #CD2305;\n",
" font-style: italic;\n",
" margin-bottom: .5em;\n",
" margin-top: 0.5em;\n",
" display: block;\n",
" }\n",
" \n",
" li {\n",
" line-height: 110%;\n",
" }\n",
" .warning{\n",
" color: rgb( 240, 20, 20 )\n",
" } \n",
"\n",
"</style>\n",
"\n",
"<script>\n",
" MathJax.Hub.Config({\n",
" TeX: {\n",
" extensions: [\"AMSmath.js\"]\n",
" },\n",
" tex2jax: {\n",
" inlineMath: [ ['$','$'], [\"\\\\(\",\"\\\\)\"] ],\n",
" displayMath: [ ['$$','$$'], [\"\\\\[\",\"\\\\]\"] ]\n",
" },\n",
" displayAlign: 'center', // Change this to 'center' to center equations.\n",
" \"HTML-CSS\": {\n",
" styles: {'.MathJax_Display': {\"margin\": 4}}\n",
" }\n",
" });\n",
"</script>\n"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from IPython.core.display import HTML\n",
"def css_styling():\n",
" styles = open(\"./styles/custom.css\", \"r\").read()\n",
" return HTML(styles)\n",
"css_styling()"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"# Lecture 6: Eigenvalues (and eigenvectors)"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Recap of the previous lecture\n",
"- Linear systems\n",
"- Gaussian elimination\n",
"- LU decomposition\n",
"- Condition number as a measure of forward stability of the problem."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Today lecture\n",
"Today we will talk about:\n",
"- Eigenvectors and their applications (PageRank)\n",
"- Gershgorin circles\n",
"- Computing eigenvectors using power method\n",
"- Schur theorem\n",
"- Normal matrices"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## What is an eigenvector?\n",
"A vector $x \\ne 0$ is called an **eigenvector** of a square matrix $A$ if there exists a number $\\lambda$ such that \n",
"$$\n",
" Ax = \\lambda x.\n",
"$$\n",
"The number $\\lambda$ is called an **eigenvalue**. \n",
"The names **eigenpair** and **eigenproblem** are also used.\n",
"\n",
"Since $A - \\lambda I$ should have a non-trivial kernel, \n",
"eigenvalues are the roots of the characteristic polynomial\n",
"\n",
"$$ \\det (A - \\lambda I) = 0.$$"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Eigendecomposition\n",
"If matrix $A$ of size $n\\times n$ has $n$ eigenvectors $s_i$, $i=1,\\dots,n$:\n",
"$$\n",
"As_i = \\lambda_i s_i,\n",
"$$\n",
"then this can be written as\n",
"$$\n",
"A S = S \\Lambda, \\quad\\text{where}\\quad S=(s_1,\\dots,s_n), \\quad \\Lambda = \\text{diag}(\\lambda_1, \\dots, \\lambda_n),\n",
"$$\n",
"or equivalently\n",
"$$\n",
"A = S\\Lambda S^{-1}.\n",
"$$\n",
"This is called **eigendecomposition** of a matrix. Matrices that can be represented by their eigendecomposition are called **diagonalizable**."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"#### Existence\n",
"\n",
"What classes of matrices are diagonalizable?\n",
"\n",
"Simple example can be matrices with all different eigenvalues.\n",
"More generally, matrix is diagonalizable iff **algebraic multiplicity** of each eigenvalue (mutiplicity of eigenvalue in the characteristic polynomial) is equal to its **geometric multiplicity** (dimension of eigensubspace). \n",
"\n",
"For our purposes the most important class of diagonalizable matrices are **normal matrices**: $$AA^* = A^* A$$. You will learn how to prove that normal matrices are diagonalizable after a few slides (Schur decomposition topic)."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"#### Example\n",
"\n",
"* You can simply check that, e.g. matrix $$A = \\begin{pmatrix} 1 & 1 \\\\ 0 & 1 \\end{pmatrix}$$ has one eigenvalue $1$ of multimplicity $2$ (since its characteristic polynomial is $p(\\lambda)=(1-\\lambda)^2$), but only one eigenvector $\\begin{pmatrix} c \\\\ 0 \\end{pmatrix}$ and hence is not diagonalizable."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Why eigenvectors and eigenvalues are important?\n",
"Eigenvectors are both important auxiliary tools and also play important role in applications. \n",
"To start with all our microworld is governed by the **Schrodinger equation** which is an eigenvalue problem. \n",
"$$\n",
" H \\psi = E \\psi,\n",
"$$\n",
"where $E$ is the ground state energy, $\\psi$ is called wavefunction and $H$ is the Hamiltonian. \n",
"More than 50% of the computer power is spent on solving this type of problems for computational material / drug design."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Eigenvalues are vibrational frequencies\n",
"\n",
"A typical computation of eigenvectors / eigenvectors is for studying \n",
"\n",
"- Vibrational computations of mechanical structures\n",
"- Model order reduction of complex systems"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": false,
"slideshow": {
"slide_type": "slide"
}
},
"outputs": [
{
"data": {
"text/html": [
"\n",
" <iframe\n",
" width=\"400\"\n",
" height=\"300\"\n",
" src=\"https://www.youtube.com/embed/xKGA3RNzvKg\"\n",
" frameborder=\"0\"\n",
" allowfullscreen\n",
" ></iframe>\n",
" "
],
"text/plain": [
"<IPython.lib.display.YouTubeVideo at 0x106364710>"
]
},
"execution_count": 1,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from IPython.display import YouTubeVideo \n",
"YouTubeVideo(\"xKGA3RNzvKg\")"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Google PageRank\n",
"One of the most famous eigenvectors computation is the **Google PageRank**. \n",
"It is not actively used by Google nowadays, but it was one of the main features in its early stages. The question is how do we rank webpages, which one is important, and which one is not. \n",
"All we know about the web is which page refers to which. PageRank is defined by a recursive definition. Denote by $p_i$ the **importance** of the $i$-th page. Then we define this importance as an average value of all importances of all pages that refer to the current page. It gives us a linear system \n",
"$$\n",
" p_i = \\sum_{j \\in N(i)} \\frac{p_j}{L(j)},\n",
"$$\n",
"where $L(j)$ is the number of outgoing links on the $j$-th page, $N(i)$ are all the neighbours of the $i$-th page. It can be rewritten as \n",
"$$\n",
" p = G p, \\quad G_{ij} = \\frac{1}{L(j)}\n",
"$$\n",
"or as an eigenvalue problem"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
"$$\n",
" Gp = 1 p,\n",
"$$\n",
"\n",
"i.e. the eigenvalue $1$ is already known. Note that $G$ is **left stochastic**, i.e. its columns sum up to $1$. \n",
"Check that any left stochastic matrix has maximum eigenvalue equal to $1$."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
"## Demo\n",
"We can compute PageRank using some Python packages. \n",
"We will use ```networkx``` package for working with graphs that can be installed using \n",
"```conda install networkx```"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"We will use a simple example of Zachary karate club network. This data was manually collected in 1977, and is a classical social network dataset."
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": false,
"slideshow": {
"slide_type": "slide"
}
},
"outputs": [
{
"data": {
"image/png": "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\nDZSYmEj9+/dn9ufk5ND79++Jy+VSXl4etWvXjjlWVFREffv2pZiYGFoSF0fHici89EXJHmwcAAAg\nAElEQVT9/IhGjaLCwkKKioqiJ0+ekKenJzVr1oxISYnMiegQj0etWSwyNjcnW1tbunHjBr148YJ4\nPB7Jy8uX+3xcLpf27t1LqxcupJT790lfWZmIiLK4XGJraJB/585UWFhISkpKzDlubm50/fp1keco\njaqqKu3bt49CQ0MpPDyckpOTmfPz8/Pp6dOnlJaWJrKlp6dTRkYGsdlssra2poYNG1LDhg2pS5cu\nzP/ZbDbJyclRCxcXOvzwIXXt1o24XC6tWLGCkZ1ZtmwZqaqq0vjx46moqIj8/f1JV1eX8vLyaNGi\nRURE5OXlRS1btiz3vfwoVNd2Vlk76Hvx5csXIhJ8eWTIqG/Iy8vTmDFj6Nq1a3Ty5Eny8vKi27dv\nSyy3Zs0amjx5Mr1+/VpMz6admxspEdGQXr0YPZv58+eTmpoaNWjQgJrw+eRa+oKqqkRbtxIR0fz5\n86lDhw5kYmIidl83ImqmpERz586lEydO0OXLl+nKlSvk4OBASUlJBEDic+1ITiYLAwPaOHQojbt9\nm7J5PHqam0tPc3PpI49HSz9+pP927yZzfX3akZzMnOfu7k7Xr1+XeE0A9O7dO7p9+zaFh4fTgwcP\nyMbGhvz8/KhBgwakq6tL3bp1ozVr1tCTJ0/I2tqaoqOjac+ePfThwwfKzMykCxcu0ObNm2natGnU\np08f8vLyIg6Hw2iNDZ80idZpahLJyREAysrKouLiYoqJiaFPnz5RVlYWU5eePXtSu3btKCsri9lK\nDOf/AtW2nTXYK6kWd+/eBRFVOsxOhoy6gs/nY+PGjdDX18fUqVMl5hZoExQEbSUl0YndUiGWe4gQ\nqKEBjro6tDQ1kZmZKVm759dfAQhyJDg5OaGgoACNGjX6Ks8QHs6UlaTdc/bsWbi5ucHT01NMYVLi\neoDevYFLl4CSZ7p3D5g6FTfV1ETSpKampsLIyAinTp3C2rVrMWnSJISGhqJZs2bQ0tKCtrY2XF1d\nERYWhpiYGLi6usLLywsPHz6skQnjklSYOeUMSVXE/8rK4eraTjmgjCZCLXPp0iXy8/Oj48ePU9u2\nbeu6OjJkVMirV69oxIgR9ODBA9qwYQP5+PgQEdGKJUso/pdfaF9+PrkREenqEvXvT+ThQeToSKSg\n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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x104b3fc90>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"import numpy as np\n",
"%matplotlib inline\n",
"import matplotlib.pyplot as plt\n",
"plt.xkcd()\n",
"import networkx as nx\n",
"kn = nx.read_gml('karate.gml')\n",
"#nx.write_gml(kn, 'karate2.gml')\n",
"nx.draw_networkx(kn) #Draw the graph"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
"Now we can actually compute the PageRank using the NetworkX built-in function. We also plot \n",
"the size of the nodes larger if its PageRank is larger."
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"collapsed": false,
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"data": {
"image/png": "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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment