"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"## Package to install once by running this cell before starting\n",
"import Pkg;\n",
"Pkg.add(\"MetaGraphs\") \n",
"Pkg.add(\"LightGraphs\")\n",
"Pkg.add(\"GraphPlot\")\n",
"Pkg.add(\"JuMP\")\n",
"Pkg.add(\"Ipopt\")\n",
"Pkg.add(\"PyPlot\")"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"# Run this cell and start to work while its compiling (will take some time)\n",
"using LightGraphs, MetaGraphs # Graph Libraries\n",
"using JuMP, Ipopt # Optim Libraries\n",
"using GraphPlot, PyPlot # Plot library"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# TP Braess Paradox and Price of Anarchy\n",
"\n",
"## 1 Recall on the user-equilibrium and the social-optimum\n",
"\n",
"Consider a (finite) directed graph $G=(V,E)$. We consider \n",
"$K$ origin-destination vertex pair $\\{o^k,d^k\\}_{k\\in [1,K]}$. \n",
"\n",
"Let denotes by\n",
"+ $r^k$ the intensity of the flow of user entering in $o^k$ and exiting in \n",
"$d^k$;\n",
"+ $\\mathcal{P}_k$ the set of all simple (i.e. \n",
"without cycle) path form $o^k$ to $d^k$, and by $\\mathcal{P}=\\bigcup_{k=1}^K \n",
"\\mathcal{P}_k$;\n",
"+ $f_p$ the flux of user taking path $p \\in \\mathcal{P}$;\n",
"+ $f = \\{f_p\\}_{p\\in\\mathcal{P}}$ the vector of path-flux;\n",
"+ $x_e$ the flux of user taking the edge $e \\in E$;\n",
"+ $x=\\{x_e\\}_{e\\in E}$ the vector of edge-flux;\n",
"+ $\\ell_e : \\mathbb{R} \\to \\mathbb{R}^+$ the cost incurred by a given user \n",
"to take edge\n",
"$e$;\n",
"+ $L_e(x_e) := \\int_0^{x_e}\\ell_e(u)du$.\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Minimizing the total cost of the system is an optimization problem that reads\n",
"\n",
"\n",
"\\begin{align}\n",
"(P^{SO}) \\quad \\min_{x,f} \\quad & \\sum_{e\\in E} x_e \\ell_e(x_e) \\\\\n",
" s.t. \\quad & r_k = \\sum_{p\\in\\mathcal{P}_k}f_p & k = 1..K \n",
"\\label{cst:flux-spread}\\\\\n",
" & x_e = \\sum_{p \\ni e} f_p & e \\in E \\label{cst:xa-def}\\\\\n",
" & f_p \\geq 0 & p \\in \\mathcal{P}\n",
"\\end{align}\n",
"\n",
"Where the first constraint ensure that the flux going from $o^k$ \n",
"to $d^k$ is spread among the different possible paths \n",
"and the second constraint is the definition of $x_e$ as the sum of the \n",
"users taking the different path containing edge $e$."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Recall that if $\\ell_e$ is non-decreasing we can guarantee that $f$ is a user \n",
"equilibrium (cf course) if and only if it is a solution of\n",
"\n",
"\\begin{align}\n",
"(P^{UE}) \\quad \\min_{x,f} \\quad & \\sum_{e\\in E}L_e(x_e) \\\\\n",
" s.t. \\quad & r_k = \\sum_{p\\in\\mathcal{P}_k}f_p & k \\in 1..K\\\\\n",
" & x_e = \\sum_{p \\ni e} f_p & e \\in E \\\\\n",
" & f_p \\geq 0 & p \\in \\mathcal{P}\n",
"\\end{align}\n",
"where the only difference with $(P^{SO})$ is the \n",
"objective function."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Question 1 \n",
"Prove that if for all edge $e$ the cost $\\ell_e$ is constant then social optimum and \n",
"user-equilibrium are equivalent."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 2 Reformulating the problem\n",
"\n",
"A complete graph $(V,E)$ is a graph such that for all couple of vertices\n",
"$(v_1,v_2)$ there exists an edge with origin $v_1$ and destination $v_2$.\n",
"\n",
"### Question 2\n",
"\n",
"Consider a complete directed graph of $n$ nodes with $1$ origin and $1$ \n",
"destination. What is the dimension of the vector $f$ ? of $x$ ? So how many \n",
"variables and constraints (except positivity constraints) is there for the user \n",
"equilibrium (or the social optimum) problem ?"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Question 3\n",
"\n",
"Rewrite both $(P^{(UE)})$ and $(P^{(SO)})$ using only vector $f$."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Question 4\n",
"\n",
"Assuming that there is only one origin and destination (i.e. $K=1$)\n",
" Rewrite both problems using only vector $x$. We can use, for any node $i$ the notation $in(i)$ for the set of edges with destination $i$, and $out(i)$ for the set of edges with origin $i$."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Question 5\n",
"\n",
"Let $N$ be a matrix with $|V|$ line and $|E|$ column, such that $N_{od}$ \n",
"equal to $-1$ if the origin of $e$ is $o$, $+1$ if the destination of $e$ is \n",
"$d$ and $0$ elsewhere. Thus each column of $N$ corresponds to an edge and \n",
"indicate its origin with a $-1$ and its destination with a $+1$.\n",
"\n",
"If $K=1$, what is the interpretation of each coordinate of the vector $Nx$ ? \n",
"Deduce a more condensed presentation of both problems using only vector $x$."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Setting up the optimization problem in Julia"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We now set up the graph we want to study, which is the classical Braess example."
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{4, 4} directed Int64 metagraph with Float64 weights defined by :weight (default weight 1.0)"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# A utility function to add an edge o->d with metadata (a,b,idx) to the graph\n",
"import MetaGraphs.add_edge!\n",
"\n",
"function add_edge!(G::AbstractMetaGraph,o,d,a,b,idx)\n",
" add_edge!(G, o, d) # adding edge o -> d\n",
" set_props!(G, o, d,Dict(:a=>a, :b => b, # the cost of edge o -> d is a x + b = x \n",
" :idx => idx)) # idx stands for the index corresponding to the edge-flow in the x vector\n",
"end\n",
"\n",
"\n",
"# Constructing a Directed Graph (with Meta-data) with 4 nodes\n",
"\n",
"\n",
"function create_graph()\n",
" G = MetaDiGraph(4)\n",
"\n",
" # setting the input / output flux\n",
" set_props!(G,1,Dict(:io=>-1,:x=>0,:y=>0)) # incoming flux of intensity 1 \n",
" set_props!(G,2,Dict(:io=>0,:x=>1,:y=>1))\n",
" set_props!(G,3,Dict(:io=>0,:x=>1,:y=>-1))\n",
" set_props!(G,4,Dict(:io=>1,:x=>2,:y=>0)) # outgoing flux of intensity 1\n",
"\n",
" # adding edges with attached metadata\n",
" add_edge!(G, 1, 2, 1., 0., 1) # edge 1->2 with cost function 1.*x+0. and idx 1\n",
" add_edge!(G, 1, 3, 0., 1., 2)\n",
" add_edge!(G, 2, 4, 0., 1., 3)\n",
" add_edge!(G, 3, 4, 1., 0., 4)\n",
"\n",
" return G\n",
"end\n",
"\n",
"G = create_graph()"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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6IhIjdCiRQsKCwuJjIwESndUX716tcmp5CIVO1IhZs2aZexlNXz4cGw2W5lNPUVEqjsPDw9++uknZs+eDcDAgQO566671NZyApVS7MyZM4fGjRvj5eVFVFQUmzdvvuy57733HtHR0QQGBhIYGEi/fv347rvvypwzatQoLBZLmVf37t0d/THkEoqKiggPD+fxxx8HYM2aNSxZsgSLxWJyMhERc4wfP56ffvoJgM8//xwXFxfOnj1rcqqazeHFztKlS5k4cSLTpk1j165dREdHM3DgQJKTky95/oYNG/j973/P+vXriY+Pp2HDhvTv359Tp06VOS8mJoaUlBTj9dVXXzn6o8gv7N+/H09PT06ePAnAhQsXuO2220xOJSJivsjISOMeRoCQkBCWL19ucqqay+HFzuuvv86YMWMYO3YsrVq1YtasWYSHhzN37txLnv/xxx/zpz/9iRtvvJGWLVvy3nvvYbPZWLduXZnzPD09CQsLM15BQUGO/ijyMy+88AJt2rQBYOzYsdhsNvz9/U1OJSLiPNzc3EhMTGTBggUA3HnnnQwYMACbzWZysprHocVOUVERO3fupH///mWO9+/fn61bt17RNfLy8iguLi5XzGzYsIGQkBCaN2/OQw89xJkzZy57jcLCQrKyssq85NoUFBQQEBDAU089BcCmTZt477331LYSEbmM0aNHG92MNWvW4OrqSkpKismpahaHFjvnzp275PoqoaGhpKamXtE1/va3v1G/fn369etnHBs4cCAff/wx33zzDa+99hoJCQn07duXwsLCS15j5syZ+Pv7G6/w8PBr/1A1WGJiIt7e3mRmZgKljwBGR0ebnEpExPmFh4dTUlJC7969AahXrx6ffPKJyalqjkq5QfmXf+u32+1XNBPw8ssvs2TJEj7//HO8vLyM48OGDWPw4MG0bduWIUOGsGrVKg4dOsTKlSsveZ2pU6eSmZlpvE6cOHF9H6gGmjZtGh07dgRg4sSJ2Gw2/Pz8TE4lIlJ1uLq6snnzZqPIGTFiBD179sRqtZqcrPpz6K7nwcHBuLq6lpvFOXPmzG+upvvqq68yY8YMvv766zL7j1xK3bp1iYiIICkp6ZI/9/T0xNPT8+rCC1DaRvT19TUendy+fTtdu3Y1OZWISNX1+9//nltuuYW6desSHx+Pm5sbycnJ6jo4kENndjw8PIiKimLt2rVljq9du5aePXte9vdeeeUVnnvuOVavXk3nzp1/833S09M5ceIEdevWve7M8j/bt2+nVq1a2O12XF1dyc3NVaEjIlIBwsLCsFqtxMTEANCwYUPmz59vcqrqy+FtrEmTJvH++++zYMECDhw4wOOPP05ycjLjxo0D4IEHHmDq1KnG+S+//DJPPfUUCxYsoFGjRqSmppKamkpOTg4AOTk5PPHEE8THx3Ps2DE2bNjAkCFDCA4O5o477nD0x6kR7HY7jz32mLF20bRp0ygpKcHHx8fkZCIi1YeLiwurVq0yHkkfO3Ys7dq1o6SkxORk1Y9D21hQen9Neno6cXFxpKSk0LZtW7766isiIiIASE5OxsXlfzXXnDlzKCoq4u677y5znaeffppnnnkGV1dX9uzZw4cffsiFCxeoW7cut9xyC0uXLtU9JBUgOzu7zH4jiYmJxjoRIiJS8WJjYzl79iw33HADe/fuxd3dncOHD9OkSROzo1Ub2ghUG4EaNm3axM033wxAQEAAKSkpZW4MFxERx7Hb7dx7770sW7YMgLfeeos///nPJqdyLtoIVK6Z3W5n7NixRqEzY8YMzp8/r0JHRKQSWSwWPvvsM1atWgXAo48+SuPGjSkqKjI5WdXn8DaWOLcLFy4QGBhojPfv30+rVq1MTCQiUrPFxMSQkZFBUFAQx44dw9PTkwMHDtCyZUuzo1VZmtmpwdasWWMUOg0bNqSwsFCFjoiIEwgMDMRmszFq1CgAWrVqxYsvvmhuqCpMxU4NZLfbGTZsGAMGDABg1qxZHD9+HA8PD5OTiYjIRRaLhYULF7J+/XqgdIHcOnXqUFBQYHKyqkdtrBomPT2d4OBgY5yUlETTpk1NTCQiIr+mT58+ZGVlUbt2bTIyMvD29uaHH374zQV35X80s1ODrFixwih02rRpQ1FRkQodEZEqwM/PD5vNxoQJEwDo0KED06dPNzlV1aFipwaw2WwMHjyYoUOHAjBv3jxjLQcREakaLBYLb7/9Nlu3bgXgueeew8PDg7y8PJOTOT+1saq5tLQ0wsLCjPHx48dp2LChiYlEROR69OjRg5ycHHx9fSkuLqZWrVp89913dOnSxexoTkszO9XY0qVLjUKne/fulJSUqNAREakGLu5bOGXKFAC6du3K5MmTTU7lvLSCcjVcQdlqtdK3b182bdoEwEcffcSIESNMTiUiIo7w/fffExUVZYyzs7Px9fU1MZHjXOv3t9pY1czJkycJDw83xqdOnaJevXomJhIREUfq1KkTeXl5hISEkJOTg5+fH5s3b6Z3795mR3MaamNVIx988IFR6PTr1w+r1apCR0SkBvD29iY7O5u4uDgAoqOjeeSRR6iBzZtLUhurGrSxSkpK6Nq1K7t27QJg2bJl3HXXXSanEhERM+zbt4+2bdsa4wsXLuDv729iooqjjUBrqKNHj+Lu7m4UOmlpaSp0RERqsDZt2lBQUEDdunUBCAgIYN26dSanMpeKnSps7ty5REZGAhAbG4vVaiUkJMTkVCIiYjZPT09Onz7Nq6++CpTe2jBixIga29ZSG6sKtrGKi4tp06YNSUlJAKxcuZJBgwaZnEpERJxRUlISzZs3N8bp6ekEBQWZmOjaqY1VQxw6dAgPDw+j0ElPT1ehIyIil9WsWTOKioqMgqdOnTqsXLnS5FSVS8VOFfLaa6/RokULAEaOHInNZquy1bmIiFQed3d3fvzxR+bOnQvA7bffztChQ7HZbCYnqxxqY1WBNlZhYSERERGkpaUBsG7dOvr27WtyKhERqYqOHTtG48aNjXFaWlqVud9Tbaxqau/evXh5eRmFTmZmpgodERG5Zo0aNaK4uNhYdTk0NJRly5aZnMqxVOw4sbi4ONq1awfAH//4R2w2W5WYiRIREefm5ubGjh07+OCDDwC455576Nu3L1ar1eRkjqE2lhMWD/n5+QQHB5OXlwfAt99+S8+ePU1OJSIi1dGpU6do0KBBmbGzrr6vNlY18f333+Pj42MUOtnZ2Sp0RETEYerXr09JSQl9+vQxxosXLy533unTp7l9yO/4w5ixVW69HhU7TuRvf/ub0UN94oknsNvt1XbnWhERcR6urq6sX7+epUuXAvDAAw/QtWtXSkpKAFizZg3t2ndgzfpNLFwwn3fffdfMuFdNbSwnaGPl5uaWKWoSEhLo3LmziYlERKSmSktLIywszBg/9thjvPnmm/hERhE0eBIXNi/GemgT+/buLfNUV2VQG8tJbdq0iSFDhlCvXj0sFgtffPFFmZ/Hx8cbhY6npyd5eXkqdERExDShoaFYrVbju+jNN98k4OZRBN/9NK4+/gT2+QM2Dz8eHDX6itfpmTlzJhaLhYkTJzoy+mWp2HGw3NxcOnTowOzZs8sct9vtjB8/3rgfZ/r06RQUFODt7W1GTBEREcPKlStJOvwTLu6eBMU8in/3u7FYSksGF08f/GMeZfOmjfzjH//4zWslJCQwb9482rdv7+jYl+Vm2jvXEAMHDmTgwIFljl2chrto9+7dxiPmIiIiZikqKmLKlCnMmjWLWs26Ue+Bibh6+5U7zzuiA36dBvOXv05h4MCBNG3a9JLXy8nJYcSIEbz33ns8//zzjo5/WZrZcYCCYitnswspKC6/XsHevXuNQueGG26goKBAhY6IiDiFnTt3MmvWLFx9g6jV8XZcPH0ue27AzaPBJ4CRDzxorM/zy++/8ePHM3jwYPr161cp+S9HMzsVKOFYBu9vPsLa/WnY7OBigdtah/JQdCRREYEA/P3vfwfgpZde4q9//auZcUVERMq48cYbmTFjBvMXLuKnT/+Op/8NeLbqg2/bW3Gv06DMuS4eXgTEPMa2JVN54pkXyWs+oMz3X+OsHzi+PYG9id+b9Gl+ltXsANXF4m3HufedeL4+cAbb/z/fZrPD1wfOcOestbi4/O9f9cGDB1XoiIiI0/H29mbq1Kkk/XiQ+Ph4Rg2/E/v+NZx+fxxnPnqC7F1fYS3IMc73Cm+LX9TvePPFOL7a8r3x/VeUeZaNi14hv+cfWZaYZtKn+Z9KKXbmzJlD48aN8fLyIioqis2bN//q+f/6179o3bo1np6etG7dmuXLl5f5ud1u55lnnqFevXp4e3vTp08f9u3b58iP8KsSjmUw/Yu92AGrreyT/DmHd3DizeHG+NNPPzV2LhcREXFGFouF7t27884773AmLZVPP/2UPh0iubDuXU7/YyTnvnyRvJ8SsNusBNw0Ele/YM7853XsttL2VVHqYax5Fzi9aCIje0bi5ubGxo0beeutt3Bzc6v0bSkcXuwsXbqUiRMnMm3aNHbt2kV0dDQDBw4kOTn5kufHx8czbNgwRo4cyQ8//MDIkSO599572b59u3HOyy+/zOuvv87s2bNJSEggLCyM2267jezsbEd/nEt6f/MRXFwsZY7Z7XbOLp/Bmc+eBqBO/z8C4O7uXun5RERErpWXlxf33HMPX61cyamTJ3n5xZk0dL3A2WXPcnrOKC5s/ojaXe+gKCWJrITSyQmviA7U/cNs6o5+iwZj3ubO5z6mc+fOjBgxgsTERFxdXSv1Mzh8UcFu3brRqVMn5s6daxxr1aoVsbGxzJw5s9z5w4YNIysri1WrVhnHYmJiCAwMZMmSJdjtdurVq8fEiROZMmUKAIWFhYSGhvLSSy/xyCOPlLtmYWEhhYWFxjgrK4vw8PAKWVSwoNhK6+mr+fmETklOBqf+8YAxvuGu6bj5BZOy6FFeeuVV+ve7laCgIBo2bHhd7y0iImIGu93O9oSd9P/Tc+Tu34AtP6v0By6u1B39Nh7BZb/fXCzQYOvLdOrYkVmzZl3z+zrlooJFRUXs3LmT/v37lznev39/tm7desnfiY+PL3f+gAEDjPOPHj1KampqmXM8PT25+eabL3vNmTNn4u/vb7zCw8Ov52OVkV1Qwi86V+Tt31j6Dy6u3HD3M5z9Vxwpix4FYMpfnqBjx45Mnz69wjKIiIhUJovFQpNW7Qjq9zD1Hn4Pvy6xuNQKAJuNguO7y51vs5e/zaMyOfRprHPnzmG1WgkNDS1zPDQ0lNTU1Ev+Tmpq6q+ef/E/L3XO8ePHL3nNqVOnMmnSJGN8cWanIvh5ueFioUzBU6tdP86vnw82K2eXPUPdP8zG44ZGuFhgf1wMXu6VO30nIiJSkex2Oz/siCd91VvkHtyMvSgfsGBxc8e7ccdy57tYYN036037/quUG5QtlvL3s/zy2NWefzXX9PT0pHbt2mVeFcXL3ZXbWofi+rN7dly9/Wj413/je2MMACkLJpC19Z/0bxOmQkdERKqso0eP8uyzz9Iosgm39b2FwuTd1O4SS1DMo4CdgJtH4R5Uv8zvuLpYTP/+c2ixExwcjKura7lZnDNnzpSbmbkoLCzsV8+/uDnZ1VzT0cZGR2L7xfScxWKhzoAJhI54GYDzmz/iw0duJj8/34yIIiIi1yQ7O5uFCxcSfdPNREZG8vzMl0n3a0LofS9S9+F51O5yB5nxS/EMb4tf1O3lft9mszO2d+VuGPpLDi12PDw8iIqKYu3atWWOr1271tgT6pd69OhR7vw1a9YY5zdu3JiwsLAy5xQVFbFx48bLXtPRujQK4rnYtligzAwPQK2GbWj4+GcA5Ofl4uPjw/ffm7/AkoiIyOVYrVa+/vpr7r9/JCGhYfxhzBi+P5lFndsnU/dPHxI8aCJe4W2xWFw4v2EhtrxMQgZPNPbPgtLvQwvwXGxbOjcKMu/DUAkrKE+aNImRI0fSuXNnevTowbx580hOTmbcuHEAPPDAA9SvX994Muuxxx7jpptu4qWXXmLo0KF8+eWXfP3112zZsgXA2DV1xowZNGvWjGbNmjFjxgx8fHy47777HP1xLuv+7hG0DPPj/S1HWbMvtcwKymN7N6bz63aeeOIJXnvtNaKiopgyZQovvviiaXlFRER+KTc3lxkzZrBg0Qeknj6FV3ADvLrcTZ02t+BW+4Zy5+cf3UVO4ir+GvcymY1vvPT3n8mFDlTCo+dQuqjgyy+/TEpKCm3btuWNN97gpptuAqBPnz40atSIRYsWGecvW7aMp556iiNHjtCkSRNeeOEF7rzzTuPndrudZ599lnfffZfz58/TrVs3/vGPf9C2bdsrynOtj65dqYJiK9kFJfh5uZXrUSYkJNC1a1djnJOTQ61atSo8g4iIyNXaunUrvXr1wtU3iOChU/Gs3/Ky98PaCvM4s3AC3Tu24Zt1X+Pi4vKr338V4Vq/vyul2HE2ji52fkteXh6BgYEUFRUBpY/bd+/evdJziIiI/FxJSQlxcXE8//zzeEd0IGjwZFx9Ay95bvrqt7Ad/pb9+/YRERFRKfmccp0duTQfHx8KCwuNtXZ69OjBhAkTqIF1p4iIOBE3Nzfi4uJYu3YttfJSOPmPkWQlfFHuvPwjO8n5YQ2z3nij0gqd66GZHRNmdn5u9+7ddOjQwRg7QyYREanZSkpKaN26NUlJSQD49xiGf+/7sLi4YivIIW3RBG7q0pE1a/77q0vJVDTN7FRR7du3Jz8/n+DgYAD8/f3ZsGGDuaFERKTGOn78OO7u7kah8/e//53s7Z9xbuk0SrLPkbHuPdxthSxYML9SC53roWLHCXh5eXH27Fnj6axbbrmF0aNHq60lIiKVat68eTRq1AiAwYMHY7VaiYuLY8OGDfgVZ5C2YAK5e9fx9ptvVujWS46mNpaTtYwOHjxIq1atjHFGRgaBgZe+OUxERKQiFBcX06FDBw4cOADAl19+ye9+97sy55w7d44Jf36UkNAQ3nzjDVNmdfQ01lVw5mIHShdJbNmyJUePHgVg1apVxMTEmJxKRESqo6SkJJo3b26Mz507R506dUxMdHm6Z6ca8fDw4MiRI7z99tsADBw4kHvuuUdtLRERqVCzZs0yCp3hw4djs9mcttC5HprZccKZnZ+7uLDiRWfPnjVuZhYREbkWhYWFNGnShFOnTgGl2zLddtttJqf6bZrZqaYiIyMpLi6mffv2ANxwww188UX5NQ9ERESuxP79+/Hy8jIKnfPnz1eJQud6qNipAtzc3Pjhhx94//33AbjjjjsYOHAgNpvN5GQiIlKVzJgxgzZt2gAwduxYbDYbAQEBJqdyPLWxnLyN9UsnTpygYcOGxjglJYWwsDATE4mIiLMrKCggLCyMzMxMADZt2kR0dLTJqa6e2lg1RHh4OCUlJfTs2ROAunXrsmTJEpNTiYiIs0pMTMTb29sodLKysqpkoXM9VOxUQa6urnz77bd88sknANx333307t0bq9VqcjIREXEmTz75JB07dgRg4sSJ2Gw2/Pz8TE5V+dTGqmJtrF9KTU2lbt26xjg5OblKrWopIiIVLzc3Fz8/P2PJkm3bttGtWzeTU10/tbFqqLCwMKxWKwMGDACgYcOGLFiwwORUIiJilu3bt+Pr64vdbsfV1ZXc3NxqUehcDxU71YCLiwurV6/m888/B2DMmDF06NCBkpISk5OJiEhlsdvtPPbYY3Tv3h0obWGVlJTg4+NjcjLzqY1VxdtYv3T27FlCQkKM8U8//URkZKSJiURExNGys7PLfJ/t2rWLG2+80cREjqE2lgCliw7abDbuvvtuAJo0acLs2bNNTiUiIo6yadMm44s/ICCA/Pz8alnoXA8VO9WQxWLhs88+Y9WqVQD8+c9/pkmTJhQVFZmcTEREKordbmfMmDHcfPPNALzwwgucP38eLy8vk5M5HzezA4jjxMTEkJGRQVBQEEeOHMHT05MDBw7QsmVLs6OJiMh1uHDhAoGBgcZ4//79tGrVysREzk0zO9VcYGAgNpuNUaNGAdCqVStefvllc0OJiMg1W7NmjVHohIeHU1BQoELnN6jYqQEsFgsLFy5k/fr1AEyZMoUbbriBgoICk5OJiMiVstvtDB8+3FhqZNasWSQnJ+Pp6WlyMuenNlYN0qdPHzIzM/H39+fcuXN4e3vzww8/GDuqi4iIc0pPTyc4ONgYJyUl0bRpUxMTVS2a2alhateujc1mY/z48QB06NCBp59+2uRUIiJyOStWrDAKndatW1NUVKRC5yqp2KmBLBYLs2fPZuvWrQDExcXh5eVFXl6eyclEROQim83G4MGDGTp0KADz5s1j3759uLu7m5ys6lEbqwbr0aMHOTk5+Pr6UlhYSK1atUhISKBz585mRxMRqdHS0tIICwszxseOHSMiIsLERFWbZnZquFq1amG32/nrX/8KQJcuXXjiiSdMTiUiUnMtXbrUKHS6detGcXGxCp3rpO0iqtl2Edfj+++/JyoqyhhnZ2fj6+trYiIRkZrDarXSt29fNm3aBMDixYu5//77TU7lXK71+1ttLDF06tSJvLw8goODycvLw8/Pjy1bttCrVy+zo4mIVGsnT54kPDzcGJ86dYp69eqZmKh6URtLyvD29iY3N5dnn30WgN69ezNu3Dhq4ASgiEilWLRokVHo3HrrrVitVhU6Fcyhxc758+cZOXIk/v7++Pv7M3LkSC5cuHDZ8zMyMvjzn/9MixYt8PHxoWHDhjz66KNkZmaWOc9isZR7vfPOO478KDXO9OnT2bNnDwDvvvsuLi4u5f57EBGRa1dSUkKnTp0YPXo0AMuWLePrr7/GxUXzEBXNoW2s++67j5MnT7J69WoAHn74YUaOHMm///3vS55/+vRpTp8+zauvvkrr1q05fvw448aN4/Tp0yxbtqzMuQsXLiQmJsYY+/v7O+6D1FBt27aloKCARo0akZqaSkBAAOvWraNv375mRxMRqdKOHj1KZGSkMU5LSyMkJMTERNWc3UH2799vB+zbtm0zjsXHx9sB+8GDB6/4Op9++qndw8PDXlxcbBwD7MuXL7/mbJmZmXbAnpmZec3XqGleffVVO2AH7CNGjLDbbDazI4mIVElz5swx/jyNjY21W61WsyNVGdf6/e2wubL4+Hj8/f3p1q2bcax79+74+/sbi9ldiYt3XLu5lZ2EmjBhAsHBwXTp0oV33nkHm8122WsUFhaSlZVV5iVXZ/Lkyfz4448AfPzxx7i4uJCRkWFyKhGRqqO4uJjmzZvzpz/9CYD//Oc/LF++XG2rSuCwf8OpqamXnJILCQkhNTX1iq6Rnp7Oc889xyOPPFLm+HPPPcdnn33G119/zfDhw5k8eTIzZsy47HVmzpxp3Dfk7+9f5o53uXLNmzenqKiIZs2aAVCnTh2++uork1OJiDi/Q4cO4eHhQVJSElD6/TZ48GCTU9UcV13sPPPMM5e8Qfjnrx07dgClNxL/kt1uv+TxX8rKymLw4MG0bt263N5NTz31FD169ODGG29k8uTJxMXF8corr1z2WlOnTiUzM9N4nThx4io/tVzk7u7OoUOHmDNnDgCDBw8mNjb2V2fWRERqstdee40WLVoAcP/992Oz2QgKCjI5Vc1y1TcoT5gwgeHDh//qOY0aNWL37t2kpaWV+9nZs2cJDQ391d/Pzs4mJiYGX19fli9f/pv7gHTv3p2srCzS0tIueW1PT088PT1/9Rpydf74xz8SExNDZGQkX375Ja6urrrBTkTkZwoLC4mIiDC+C7/++mtuvfVWk1PVTFdd7AQHB5fZZv5yevToQWZmJt999x1du3YFYPv27WRmZtKzZ8/L/l5WVhYDBgzA09OTFStW4OXl9ZvvtWvXLry8vAgICLjyDyLXrXHjxhQXF9O9e3d27txJaGgoy5Yt46677jI7moiIqfbu3Uu7du2M8YULF/TUsIkcds9Oq1atiImJ4aGHHmLbtm1s27aNhx56iNtvv92Yzjt16hQtW7bku+++A0pndPr3709ubi7z588nKyuL1NRUUlNTsVqtAPz73//mvffeY+/evfz000+8/2qlQMkAACAASURBVP77TJs2jYcfflizNyZwc3Njx44dLFy4EIC7776bfv36qa0lIjVWXFycUeiMGzcOm82mQsdkDt0bKyMjg0cffZQVK1YA8Lvf/Y7Zs2cbMzDHjh2jcePGrF+/nj59+rBhwwZuueWWS17r6NGjNGrUiNWrVzN16lQOHz6MzWYjMjKSsWPHMn78+HJPbF2O9sZyDC13LiI1WX5+vrHdDqDtdhzgWr+/tRGoip0KZbVaufXWW9m4cSOgjexEpGbQRsqV41q/v/Vwv1QoV1dXNmzYwNKlSwEYOXIk3bt3N9qQIiLVzZQpU4xCZ/LkydjtdhU6TkYzO5rZcZi0tDTCwsKM8bFjx4iIiDAxkYhIxcnNzS1T1CQkJNC5c2cTE1V/mtkRpxMaGorVajUWzmrUqBHvvfeeyalERK5ffHy8Ueh4enqSm5urQseJqdgRh3JxceE///kPX375JVC6GWybNm0oLi42OZmIyNWz2+2MHz/eWEJl+vTpFBQU4OPjY3Iy+TVqY6mNVWnS09PLrNGUlJRE06ZNTUwkInLlLn53XPTDDz/Qvn17ExPVPGpjidOrU6cONpuNYcOGAdCsWTPefPNNk1OJiPy29ev/r707j4riStsA/jRbgwgNitCggGgUxAUVFXAlLqjRGCfjuCQyMqNmEyOjmWjMTCRm4jbZ40SjEnUmbnHBaExwSQDjIEgUoiIS44oKisq+032/PxzrswPIIk11N8/vnD7xVt+qem+K7nq7btW9sVKi4+TkhNLSUiY6RoTJDjUrhUKB7du349ChQwCAiIgIeHh4oKKiQubIiIiqE0IgLCwMw4cPBwCsXLkSOTk59RrdnwxHg6eLIGoKo0aNQm5uLhwdHZGZmQmlUolz586hW7ducodGRAQAyM3N1ZmwMz09HT4+PjJGRI3FKzskGwcHB2i1WsycORMA4Ovri+XLl8scFREREBMTIyU6nTp1Qnl5ORMdI8Zkh2SlUCiwYcMGacTlxYsXw8HBAWVlZTJHRkQtkRACkyZNwtixYwEAn376KS5evAgrKyuZI6PHwW4sMghDhw5FQUEB7O3tkZ+fDxsbG6SkpKB3795yh0ZELUROTg6cnZ2l8sWLF9GpUycZI6Kmwis7ZDDs7Oyg1Woxb948AECfPn3wt7/9TeaoiKgliI6OlhIdPz8/VFZWMtExIRxnh+PsGKSkpCQEBgYCuD/fVkFBAQftIqImp9Vq8dRTT+HgwYMAgA0bNkj3EZLhaez5m91YZJACAgJQXFwMOzs7aDQa2NraIikpCQMGDJA7NCIyEVlZWXBzc5PK165dg7u7u4wRkb6wG4sMVqtWraDRaPDGG28AuJ8AzZs3Dy3wYiQRNbFt27ZJic6gQYNQVVXFRMeEsRuL3VhGITU1FX369JHKBQUFsLOzkzEiIjJGGo0GQ4cORUJCAgBg69atmDZtmsxRUX2xG4tMWu/evVFaWgq1Wi39kR89ehRDhgyROzQiMhKZmZnw8PCQyllZWVCr1TJGRM2F3VhkNKytrZGXl4d3330XwP3H1WfPnm0Q3VrLly9H//79YWdnB2dnZ0ycOBEZGRlyh0Vk0JYvXw6FQoGIiAi97ysqKkpKdEaPHg2NRsNEpwVhskNGZ/HixUhLSwNw/8kJMzMz5OXlyRpTfHw85syZg8TERBw+fBhVVVUICQlBcXGxrHERGark5GSsW7dO75NpVlVVoVevXpg1axaA+4+Yx8TEwMyMp7+WhEebjJKvry/KysrQoUMHAICjoyMOHz4sWzwxMTEICwtD9+7d4efnh40bN+LatWs4efKkbDERGaqioiI8//zzWL9+PRwdHfW2n0uXLsHS0hJnzpwBcH/QwIkTJ+ptf2S4mOyQ0VIqlcjMzMRHH30EAAgJCcG0adMMolsrPz8fAHQmESSi++bMmYNx48Zh5MiRetvH6tWr0blzZwDApEmToNVq4eTkpLf9kWFjskNGb968ebhw4QIAYPv27TAzM8Pdu3dli0cIgfnz52Pw4MHo0aOHbHEQGaLt27fj1KlTepv0t6KiAl5eXpg7dy4A4LvvvsPOnTuhUCj0sj8yDkx2yCQ88cQTqKioQLdu3QAATk5O2L9/vyyxhIeH4/Tp09i2bZss+ycyVJmZmZg3bx6+/PJLWFtbN/n2z58/D6VSiStXrgAA7t27hzFjxjT5fsj4MNkhk2FpaYlz585h3bp1AIAJEyZg/Pjx0Gq1zRbD3LlzsW/fPsTGxkr3ExHRfSdPnsTt27fh7+8PCwsLWFhYID4+Hp988gksLCyg0Wgave2VK1dKP3bCwsKg1Wr1ej8QGRcOKshBBU3S1atX0bFjR6mcnZ0NFxcXve1PCIG5c+ciOjoacXFx6NKli972RWSsCgsLcfXqVZ1lf/rTn+Dj44OFCxc2qtv3wYMKD7quY2NjERwc3BThkgHioIJED/H09ERlZSUGDx6MpKQkqNVq7NixA5MnT9bL/ubMmYOtW7fi66+/hp2dHbKzswEAKpUKNjY2etknkbGxs7OrltDY2tqibdu2jUp0Tp8+DT8/P6nMH7BUG3ZjkcmysLBAYmIi/vOf/wAApkyZguDg4Me6VF6bNWvWID8/H8HBwXB1dZVeO3bsaPJ9ERGwZMkSKdEJDw+HVqtlokO1YjcWPxwtws2bN9G+fXupfP36dZ0yERmHkpISODo6oqKiAgCQkJCAoKAgmaOi5tLY8zev7FCL4ObmBo1GgxEjRgAAOnTogM2bN8scFRE1RHJyMmxtbaVEp6ioiIkO1QuTHWoxzMzMcOTIEezcuRPA/Sc2+vXrh6qqKpkjI6K6LFiwAAMGDAAALFy4EEII2NrayhwVGQt2Y7Ebq0W6ffu2ztNZly9f1nl6i4gMQ1FREezs7KTyyZMn0bdvXxkjIjkZZDdWbm4uQkNDoVKpoFKpEBoaWueEjcHBwVAoFDqvqVOnPvZ2iR7m7OwMjUaDZ555BgDg5eWFNWvWyBwVET3s2LFjUqJja2uLkpISJjrUKHpNdp577jmkpqYiJiYGMTExSE1NRWhoaJ3rzZ49G1lZWdLr888/b5LtEj3MzMwMe/fuxTfffAMAeOWVV+Dt7Y3KykqZIyNq2YQQeOmllzBkyBAAwNKlS1FUVMRhHKjR9DbOTnp6OmJiYpCYmIiAgAAAwPr16xEUFISMjAx4e3vXum6rVq2gVqubfLtENRk3bhzu3r2Ltm3b4pdffoGVlRUyMjLQtWtXuUMjanHy8/Ph4OAglc+cOcM55uix6e3KzvHjx6FSqaSEBAACAwOhUqmQkJDwyHW3bNkCJycndO/eHa+99hoKCwsfa7vl5eUoKCjQeRE9rE2bNtBqtXj++ecBAN7e3nj//fdljoqoZfn++++lRMfV1RVlZWVMdKhJ6C3Zyc7OhrOzc7Xlzs7O0uiyNXn++eexbds2xMXF4e9//zt2796NZ5999rG2u3z5cun+HpVKBXd390a0iEydQqHAl19+iSNHjgAAXnvtNbi5uaG8vFzmyIhMmxAC06dPx8iRIwEA7733Hm7evAmlUilzZGQqGtyNFRkZibfffvuRdZKTkwHcP3n8lhCixuUPzJ49W/p3jx490KVLF/Tr1w+nTp2Sbkxr6HbfeOMNzJ8/XyoXFBQw4aFajRgxAnl5eXBwcEBWVhasra15KZ1IT+7du4e2bdtKZXYhkz40+MpOeHg40tPTH/nq0aMH1Go1bt26VW39nJycBk3I2LdvX1haWuLChQsA0KjtKpVK2Nvb67yIHkWlUkGr1eLFF18EAPTs2RPvvPOOzFERmZYDBw5IiU7Xrl1RUVHBRIf0osHJjpOTE3x8fB75sra2RlBQEPLz83HixAlp3aSkJOTn52PgwIH13l9aWhoqKyvh6uoKAE22XaK6KBQKrF27Fj/++CMA4K233kLr1q1RWloqc2RExk2r1WLixIkYP348AOCzzz5DRkYGLC0tZY6MTJVeBxUcO3Ysbt68KT06/sILL8DT0xP79+8HANy4cQMjRozAv//9bwwYMAAXL17Eli1b8NRTT8HJyQnnzp3DggULYGNjg+TkZJibm9dru3XhoILUUBzYjKhpcEBPehwGOajgli1b0LNnT4SEhCAkJAS9evWSZqAGgMrKSmRkZKCkpAQAYGVlhe+//x6jR4+Gt7c3Xn31VYSEhODIkSNSolOf7RI1tdatW0MIId375e/vj0WLFskcFZFx2b17t5To+Pv7o7KykokONQtOF8ErO9RAycnJ0hw9wP2rPpyjh6h2Go0GISEh+OGHHwAAmzZtwowZM2SOioxRY8/fehtUkMhU9e/fH8XFxXB0dERFRQVat26N48ePIzAwUO7QiAzOzZs30b59e6l8/fp1nTJRc+Cs50SN0KpVK5SXl+Pvf/87gPs3zoeHh6MFXiglqtWXX34pJTbDhg1DVVUVEx2SBbux2I1Fj+n06dPw8/OTyvy7opauqqoKgwYNkp6a3bFjByZPnixzVGQKDPIGZaKWoFevXigtLYWTkxOA+2P0xMXFyRsUkUyuXr0KS0tLKdHJzs5mokOyY7JD1ASsra2Rk5ODFStWAACefPJJhIWFsVuLWpR169ZJT1eNHz8eGo2mQYPIEukLu7HY3UBN7Pz58+jWrZtUvnfvHhwdHWWMiEi/Kisr4efnh/T0dADAvn378PTTT8scFZkidmMRGQgfHx+Ul5dLv3DbtGmDmJgYeYMi0pNff/0VVlZWUqJz584dJjpkcJjsEOmBlZUVLl++jE8++QTA/VG/J02axG4tMikfffQRunTpAgCYMmUKtFqtzqSeRIaC3VjsxiI9u3TpEjp37iyVc3JypJuZiYxRRUUFOnfujOvXrwMADh06hFGjRskcFbUE7MYiMlCdOnVCRUUFevXqBQBo164d9u7dK3NURI1z7tw5KJVKKdHJzc1lokMGj8kOUTOwtLTEzz//jA0bNgAAfve732HMmDHQarUyR0ZUf8uWLUP37t0BALNmzYJWq4WDg4PMURHVjd1Y7MaiZpaZmQkPDw+pfPPmTbi6usoYEdGjlZWVQa1WIz8/HwBw9OhRDBkyROaoqCViNxaRkXB3d5dGmAUANzc3bNu2TeaoiGqWmpoKGxsbKdEpKChgokNGh8kOkQzMzc1x7NgxbNmyBQDw3HPPYfDgwdBoNDJHRvT/3nzzTfTp0wcAEBERAa1WCzs7O5mjImo4dmOxG4tklpWVBTc3N6l87do1uLu7yxgRtXQlJSVo3bq1NFRCUlISBgwYIHNUROzGIjJarq6u0Gg0GD16NADAw8MDX3zxhcxRUUuVlJQEW1tbCCFgbm6O4uJiJjpk9JjsEBkAMzMzxMTEYM+ePQCAmTNnws/PD1VVVTJHRi2FEALz5s1DYGAgAGDx4sWoqqpCq1atZI6M6PGxG4vdWGRgcnJy4OzsLJUvXryITp06yRgRmbrCwkKd78KUlBT07t1bxoiIasZuLCIT0a5dO2i1Wvz+978HAHTu3BmrV6+WOSoyVUePHpVOGg4ODigtLWWiQyaHyQ6RAVIoFNi1axe+/fZbAMDcuXOlkZiJmoIQArNmzcKwYcMAAO+++y5yc3NhbW0tc2RETc9C7gCIqHZjx47FvXv30KZNG1y+fBlKpRLp6enw8fGROzQyYnl5eXB0dJTKaWlp8PX1lTEiIv3ilR0iA+fo6AitVosZM2YAALp164ZVq1bJHBUZq0OHDkmJjru7O8rLy5nokMljskNkBBQKBTZt2oTY2FgAwMKFC+Hs7IyysjKZIyNjIYTA1KlTpSEOPvroI1y7dg1WVlYyR0akf+zGIjIiwcHByM/Ph0qlQk5ODmxsbPDzzz9LM6oT1eTu3btwcnKSyhcuXMATTzwhY0REzYtXdoiMjL29PbRaLebMmQMA8PPzw5IlS2SOigzVvn37pETH19cXFRUVTHSoxWGyQ2SEFAoFVq9ejYSEBADA0qVLoVQqUVJSInNkZCi0Wi3Gjx+PZ555BgCwbt06pKWlwdLSUubIiJofu7GIjFhQUBCKiorQunVrVFRUwNbWFsnJyejXr5/coZGMbt26BbVaLZWvXr0KDw8PGSMikhev7BAZuQfzGP31r38FAPTv3x+vvfaazFGRXL766isp0QkICEBlZSUTHWrxOF0Ep4sgE3Ly5EmdqzqFhYVo3bq1jBFRc9FoNBg+fDiOHj0KAPjPf/6D6dOnyxwVUdNq7Pmb3VhEJsTf3x8lJSVo164diouLYWdnh2PHjmHQoEFyh0Z6dP36dbi7u0vlGzduwM3NTcaIiAwLu7GITIyNjQ2Kiorw9ttvAwAGDx6Ml156CS3wIm6LsHnzZinRGTFiBDQaDRMdot/Qa7KTm5uL0NBQqFQqqFQqhIaGIi8vr9b6V65cgUKhqPG1c+dOqV5N769du1afTSEyOm+99RbOnDkDAPj8889hZmaG/Px8maOiplJVVYW+ffsiLCwMALBr1y4cOXIEZmb8DUv0W3q9Z2fs2LG4fv061q1bBwB44YUX0LFjR+zfv7/G+hqNBjk5OTrL1q1bh1WrViE7O1u690ChUGDjxo0YM2aMVE+lUsHGxqZecfGeHWpJysvL0bFjR2RnZwMAjhw5ghEjRsgcFT2OK1euwMvLSyrfunULzs7OMkZE1Dwae/7W20+A9PR0xMTEYMOGDQgKCkJQUBDWr1+Pb775BhkZGTWuY25uDrVarfOKjo7GlClTqt1k6eDgoFPvUYlOeXk5CgoKdF5ELYVSqURWVhbee+89AMDIkSMxffp0dmsZqTVr1kiJzsSJE6HRaJjoENVBb8nO8ePHoVKpEBAQIC0LDAyESqWSBkKry8mTJ5GamoqZM2dWey88PBxOTk7o378/1q5dC61WW+t2li9fLnWlqVQqnRv5iFqKBQsWSD80tmzZAjMzM9y7d0/mqKi+Kisr0bVrV7zyyisAgAMHDiA6OprdVkT1oLdPSXZ2do2/NpydnaXL6XWJiopCt27dMHDgQJ3l77zzDnbu3IkjR45g6tSpWLBgAZYtW1brdt544w3k5+dLr8zMzIY1hshEdO3aFRUVFejSpQsAoG3btvj2229ljorq8ssvv8DKygoXLlwAcH+uq6eeekrmqIiMR4OTncjIyFpvIn7w+umnnwDcv7fmt4QQNS7/rdLSUmzdurXGqzp/+9vfEBQUhN69e2PBggVYunQp/vnPf9a6LaVSCXt7e50XUUtlaWmJX375BZ999hkAYNy4cZg4ceIjr46SfN5//314e3sDAKZPnw6tVos2bdrIHBWRcWnwODvh4eGYOnXqI+t07NgRp0+fxq1bt6q9l5OTAxcXlzr3s2vXLpSUlOCPf/xjnXUDAwNRUFCAW7du1WvbRAS8/PLLGDNmDDp16oSvv/4a5ubmvNHVgJSXl8PT01P6HuWN5USN1+Bkx8nJSZpB91GCgoKQn5+PEydOYMCAAQCApKQk5OfnV+uWqklUVBQmTJiAdu3a1Vk3JSUF1tbWcHBwqLsBRCTx8vJCZWUlAgICcOrUKbi4uGDXrl34/e9/L3doLdrZs2fRs2dPqZyXlweVSiVjRETGTW/37HTr1g1jxozB7NmzkZiYiMTERMyePRvjx4+XLsneuHEDPj4+OHHihM66v/76K44ePYpZs2ZV2+7+/fuxfv16nD17FhcvXsSGDRvw5ptv4oUXXoBSqdRXc4hMloWFBU6ePImNGzcCACZNmoSRI0eyW0smS5culRKdl156CVqtlokO0WPS63QRW7ZswauvvoqQkBAAwIQJE7B69Wrp/crKSmRkZKCkpERnvS+++ALt27eX1nuYpaUlPvvsM8yfPx9arRadOnXC0qVLMWfOHH02hcjkhYWFYeTIkXB3d8f3338Pc3NzTjvQjEpLS+Hk5CR9H3KaD6Kmw4lAebMykQ5OKNn8Tp06BX9/f6nMCVyJamZwgwoSkXEyNzdHfHw8tm/fDgAIDQ1FQEAAqqqqZI7MNC1atEhKdBYsWAAhBBMdoibGKzu8skNUq1u3bkGtVkvlK1euwNPTU8aITEdxcbFOUpOcnIx+/frJGBGR4eOVHSJqci4uLtBoNBg3bhyA+8NKrF+/XuaojN/x48elREepVKKkpISJDpEeMdkhokcyMzPDN998g6+//hrA/Ql9u3fvjsrKSpkjMz5CCISHh0vDb7z11lsoKyur9yTGRNQ47MZiNxZRvd29e1dnnK0LFy7giSeekDEi4/Hge+eBn3/+Gb169ZIxIiLjw24sItK7tm3bQqvVYvLkyQCALl264OOPP5Y5KsMXFxcnJTpOTk4oLS1lokPUjJjsEFGDKBQK7NixAwcPHgQAREREwMPDAxUVFTJHZniEEAgLC8OTTz4JAFi5ciVycnJgbW0tc2RELYteBxUkItMVEhKC3NxcODo6IjMzE0qlEmlpafD19ZU7NIOQm5urM2Hn+fPnpdHjiah58coOETWag4MDtFot/vznPwMAunfvjmXLlskclfxiYmKkRKdTp04oLy9nokMkIyY7RPRYFAoFoqKiEB8fDwB488034ejoiLKyMpkja35CCEyaNAljx44FAHz66ae4ePEirKysZI6MqGVjNxYRNYmhQ4eioKAA9vb2yMvLg42NDVJSUtC7d2+5Q2sWd+7cQbt27aTyxYsX0alTJxkjIqIHeGWHiJqMnZ0dtFot5s2bBwDo06cP3nzzTZmj0r+9e/dKiY6fnx8qKyuZ6BAZEI6zw3F2iPQiKSkJgYGBAO4PTFhYWIhWrVrJHFXT0mq1GDt2LA4dOgQAiIqKku5fIqKm19jzN7uxiEgvAgICUFRUBHt7e2i1Wtja2iIxMREBAQFyh9YksrKy4ObmJpWvXbsGd3d3GSMiotqwG4uI9MbW1hYajQaLFy8GAAQGBiIiIgLGfkF527ZtUqIzePBgVFVVMdEhMmDsxmI3FlGzSElJQd++faVyQUEB7OzsZIyo4TQaDYYNG4b//ve/AICtW7di2rRpMkdF1HKwG4uIDFqfPn1QUlICV1dX6YsqPj4eQ4cOlTu0esnMzISHh4dUzsrKglqtljEiIqovdmMRUbOxsbFBXl4e/vGPfwAAhg0bhlmzZhl8t9YXX3whJTqjR4+GRqNhokNkRNiNxW4sIlmcO3cO3bt3l8q5ublwcHCQMaLqqqqq4O/vj9OnTwMAoqOjMXHiRJmjImq5OOs5ERkVX19flJWVSTf2Ojo64vDhwzJH9f8uXboES0tLKdHJyclhokNkpJjsEJFslEolrl27hg8//BDA/clFp06dKnu31urVq9G5c2cAwKRJk6DVauHk5CRrTETUeOzGYjcWkUH49ddf0aVLF6l8584dtG3btlq9hIQEFBYWYvTo0U0eQ0VFBby9vXHlyhUAwHfffYcxY8Y0+X6IqHHYjUVERu2JJ55ARUUFunXrBgBwcnLC/v37pfc1Gg0iIyMxeMgQjBkzBgcPHmzS/Z8/fx5KpVJKdO7du8dEh8hEMNkhIoNhaWmJc+fO4fPPPwcATJgwAePHj8eNGzfw5PARWLr0HdgPnIZWXn0w409/Rl5eXpPsd9WqVVKSFRYWBq1WC0dHxybZNhHJj91Y7MYiMkhXr15Fx44dpbKVvRMcxy2AtUdPVBXk4NbGcEyf+gds3Lix0ft4cIP0nTt3AACxsbEIDg5+zMiJSF/YjUVEJqV9+/b461//KpWdZ3wMa4+eAAAL+3ZQPTkTmzZtwoEDB2pcf82aNejVqxfs7e1hb2+PoKAgfPfdd9L7p0+fho2NjZToFBQUMNEhMlFMdojI4GRmZmLI0GF47/0P4BAcBo/X98G8lUqnjm3PUWjVuR/+PHMW7t27V20bHTp0wIoVK/DTTz/hp59+wvDhw/HMM88gLS0NS5YsgZ+fHwAgPDwcWq3W6KauIKL6YzcWu7GIDEpubi68OnVGYUkp2k2KhLV7j1rrVhXewa2N4Zj87DPY8uWXdW67TZs2KCgogEajAXD/ya6goKAmi52I9IvdWERkEuzs7KB2dYW2ogy53/wTubFfoCLnao11LeycoBo+G1u3bMHevXsBAGWVGuQUlqOsUiPV02g0WLZsGXJzc6VEp6ioiIkOUQvBiUCJyKBYWFggPe0sTp06hU2bNuHLLVuRdWIPbNy6wNp3OGy7DdXp0rLtPhxlvyQgbOZsPHOzNX7MLIdWAGYKwN+uEAfenYWy0hJpoMKFCxdixYoVcjWPiGSg1ys77777LgYOHIhWrVrVe84bIQQiIyPh5uYGGxsbBAcHIy0tTadObm4uQkNDoVKpoFKpEBoa2mSPoBKR/BQKBfz9/fHpp5/iVnYW9uzZg5H9uqEgLgo3P5uBO9HvouRCIoSmCgqFAo4h4SgsKcfu1e9A+7+Oea0AknOA0pJiKdFxcHDAH//4RxlbRkRy0GuyU1FRgT/84Q94+eWX673OqlWr8MEHH2D16tVITk6GWq3GqFGjUFhYKNV57rnnkJqaipiYGMTExCA1NRWhoaH6aAIRyczKygq/+93vsO/rr5F18yY+/OB9dG5Vhpw9/0DWmhm4d+RzVBXdRZtRL6I4/SiKzx8DAJRdP4erH00DACisbPBj+nX4+/vj448/lrM5RCSDZrlBedOmTYiIiKjz6osQAm5uboiIiMDChQsBAOXl5XBxccHKlSvx4osvIj09Hb6+vkhMTERAQAAAIDExEUFBQTh//jy8vb3rjIc3KBMZvzNnzmDz5s341/qNKCu4B0snT1QV3AbMLNCqc38Up/0AAFANfh5thzyHUb4uuLDxdbi7u2PTpk3yBk9EjdLY87dB3bNz+fJlZGdnIyQkRFqmVCoxbNgwJCQk4MUXX8Tx48ehUqmkRAcAAgMDoVKpkJCQUGOyU15ejvLycqlcUFCg34YQkd717NkT/1i+ErvNh6Lk0ikUnf0Blbk3gYpSKdFp+9RfYO3RA6W3LmN7NsTPAgAADqVJREFU3GYUJsUhJiZG5siJqLkZVLKTnZ0NAHBxcdFZ7uLigqtXr0p1nJ2dq63r7Owsrf9by5cvx9tvv93E0RKR3ArLqiAU5rDp3B82nftDU1aEgqQ9qMq7CYWFEnnHtkBTfA9mSltYteuI7Xv2YdSoUXKHTUTNrMHJTmRkZJ2JQ3JyMvr169fooBQKhU5ZCKGz7Lfv11TnYW+88Qbmz58vlQsKCuDu7t7o+IjIMNhZW8BMAemmZHPr1nAcVvMNyGYK4OmnOLEnUUvU4GQnPDwcU6dOfWSdh+ezaQi1Wg3g/tUbV1dXafnt27elqz1qtRq3bt2qtm5OTk61K0IPKJVKKJXKRsVERIbL2tIco3xdcCT9NjTa2m8/NDdTYJSvC6wtzZsxOiIyFA1OdpycnODk5KSPWODl5QW1Wo3Dhw+jT58+AO4/0RUfH4+VK1cCAIKCgpCfn48TJ05gwIABAICkpCTk5+dj4MCBeomLiAzXrCGdcCit+g+gh2m1ArMGezVTRERkaPT66Pm1a9eQmpqKa9euQaPRIDU1FampqSgqKpLq+Pj4IDo6GsD97qmIiAgsW7YM0dHROHv2LMLCwtCqVSs899xzAIBu3bphzJgxmD17NhITE5GYmIjZs2dj/Pjx9XoSi4hMS/+ObfDOxB5Q4P4VnIeZmymgAPDOxB7o17GNLPERkfz0eoPyW2+9hc2bN0vlB1drYmNjpdmFMzIykJ+fL9V5/fXXUVpaildeeQW5ubkICAjAoUOHdCbp27JlC1599VXpqa0JEyZg9erV+mwKERmw6YGe8FHbYcOxyziUli2NoDzK1wWzBnsx0SFq4TgRKMfZITIpZZUaFJZVwc7agvfoEJkYkxhnh4jocVlbmjPJISIdnPWciIiITBqTHSIiIjJpTHaIiIjIpDHZISIiIpPGZIeIiIhMGpMdIiIiMmlMdoiIiMikMdkhIiIik8Zkh4iIiExaixxB+cEMGQUFBTJHQkRERPX14Lzd0JmuWmSyU1hYCABwd3eXORIiIiJqqMLCQqhUqnrXb5ETgWq1Wty8eRN2dnZQKBRNvv2CggK4u7sjMzPTJCcaZfuMG9tn3Ng+48b2PR4hBAoLC+Hm5gYzs/rfidMir+yYmZmhQ4cOet+Pvb29Sf4xP8D2GTe2z7ixfcaN7Wu8hlzReYA3KBMREZFJY7JDREREJs08MjIyUu4gTJG5uTmCg4NhYWGaPYVsn3Fj+4wb22fc2L7m1yJvUCYiIqKWg91YREREZNKY7BAREZFJY7JDREREJo3JDhEREZk0JjtERERk0pjs1NNnn30GLy8vWFtbw9/fHz/++OMj6+/evRu+vr5QKpXw9fVFdHS0zvtCCERGRsLNzQ02NjYIDg5GWlqaPpvwSA1p3/r16zFkyBA4OjrC0dERI0eOxIkTJ3TqhIWFQaFQ6LwCAwP13YxaNaR9mzZtqha7QqFAWVlZo7epbw2JJTg4uMb2jRs3TqpjKMfv6NGjePrpp+Hm5gaFQoG9e/fWuU58fDz8/f1hbW2NTp06Ye3atdXqGMqxa2j79uzZg1GjRqFdu3awt7dHUFAQDh48qFMnMjKy2rFTq9X6bEatGtq+uLi4Gv82z58/r1Ovru/X5tLQ9tX0uVIoFOjevbtUx5CO3/Lly9G/f3/Y2dnB2dkZEydOREZGRp3rGeL5j8lOPezYsQMRERF48803kZKSgiFDhmDs2LG4du1ajfWPHz+OKVOmIDQ0FD///DNCQ0MxefJkJCUlSXVWrVqFDz74AKtXr0ZycjLUajVGjRolTVLanBravri4OEybNg2xsbE4fvw4PDw8EBISghs3bujUGzNmDLKysqTXt99+2xzNqaah7QPuD3X+cOxZWVmwtrZ+rG3qS0Nj2bNnj067zp49C3Nzc/zhD3/QqWcIx6+4uBh+fn5YvXp1vepfvnwZTz31FIYMGYKUlBQsXrwYr776Knbv3i3VMaRj19D2HT16FKNGjcK3336LkydP4sknn8TTTz+NlJQUnXrdu3fXOXZnzpzRR/h1amj7HsjIyNCJv0uXLtJ79fl+bS4Nbd/HH3+s067MzEy0adOm2mfPUI5ffHw85syZg8TERBw+fBhVVVUICQlBcXFxresY7PlPUJ0GDBggXnrpJZ1lPj4+YtGiRTXWnzx5shgzZozOstGjR4upU6cKIYTQarVCrVaLFStWSO+XlZUJlUol1q5d28TR162h7futqqoqYWdnJzZv3iwtmzFjhnjmmWeaNM7Gamj7Nm7cKFQqVZNuU58eN5YPP/xQ2NnZiaKiImmZIR2/BwCI6OjoR9Z5/fXXhY+Pj86yF198UQQGBkplQzp2D6tP+2ri6+sr3n77bam8ZMkS4efn15ShNYn6tC82NlYAELm5ubXWqev7VS6NOX7R0dFCoVCIK1euSMsM9fgJIcTt27cFABEfH19rHUM9//HKTh0qKipw8uRJhISE6CwPCQlBQkJCjescP368Wv3Ro0dL9S9fvozs7GydOkqlEsOGDat1m/rSmPb9VklJCSorK9GmTRud5XFxcXB2dkbXrl0xe/Zs3L59u8nirq/Gtq+oqAienp7o0KEDxo8fr/PLuSn+nzWVpoglKioKU6dOha2trc5yQzh+DVXbZ++nn35CZWWlQR27pqDValFYWFjts3fhwgW4ubnBy8sLU6dOxaVLl2SKsHH69OkDV1dXjBgxArGxsTrv1fX9akyioqIwcuRIeHp66iw31OOXn58PANX+3h5mqOc/Jjt1uHPnDjQaDVxcXHSWu7i4IDs7u8Z1srOzH1n/wX8bsk19aUz7fmvRokVo3749Ro4cKS0bO3YstmzZgh9++AHvv/8+kpOTMXz4cJSXlzdp/HVpTPt8fHywadMm7Nu3D9u2bYO1tTUGDRqECxcuNHqb+vK4sZw4cQJnz57FrFmzdJYbyvFrqNo+e1VVVbhz545BHbum8P7776O4uBiTJ0+WlgUEBODf//43Dh48iPXr1yM7OxsDBw7E3bt3ZYy0flxdXbFu3Trs3r0be/bsgbe3N0aMGIGjR49Kder6fjUWWVlZ+O6776p99gz1+AkhMH/+fAwePBg9evSotZ6hnv8MZ+IKA6dQKHTKQohqyxpav6Hb1KfGxrJq1Sps27YNcXFxOve0TJkyRfp3jx490K9fP3h6euLAgQN49tlnmy7wempI+wIDA3Vuxh00aBD69u2LTz/9FJ988kmjtqlvjY0lKioKPXr0wIABA3SWG9rxa4ia/l88WP7wv39bR65j11jbtm1DZGQkvv76azg7O0vLx44dK/27Z8+eCAoKQufOnbF582bMnz9fjlDrzdvbG97e3lI5KCgImZmZeO+99zB06FBpuSkcv02bNsHBwQETJ07UWW6oxy88PBynT5/GsWPH6qxriOc/Xtmpg5OTE8zNzatlnLdv366WmT6gVqsfWf/BnfUN2aa+NKZ9D7z33ntYtmwZDh06hF69ej2yrqurKzw9PaWrI83lcdr3gJmZGfr37y/F3hTbbCqPE0tJSQm2b99e7ZdlTeQ6fg1V22fPwsICbdu2Nahj9zh27NiBmTNn4quvvtK5oloTW1tb9OzZ0+CPXW0CAwN1Yq/r+9UYCCHwxRdfIDQ0FFZWVo+sawjHb+7cudi3bx9iY2PRoUOHR9Y11PMfk506WFlZwd/fH4cPH9ZZfvjwYQwcOLDGdYKCgqrVP3TokFTfy8sLarVap05FRQXi4+Nr3aa+NKZ9APDPf/4T77zzDmJiYtCvX78693P37l1kZmbC1dX1sWNuiMa272FCCKSmpkqxN8U2m8rjxPLVV1+hvLwc06dPr3M/ch2/hqrts9evXz9YWloa1LFrrG3btiEsLAxbt27VGS6gNuXl5UhPTzf4Y1eblJQUndjr+n41BvHx8fj1118xc+bMOuvKefyEEAgPD8eePXvwww8/wMvLq851DPb8p7dbn03I9u3bhaWlpYiKihLnzp0TERERwtbWVrqDPjQ0VOdJjv/+97/C3NxcrFixQqSnp4sVK1YICwsLkZiYKNVZsWKFUKlUYs+ePeLMmTNi2rRpwtXVVRQUFBh8+1auXCmsrKzErl27RFZWlvQqLCwUQghRWFgoFixYIBISEsTly5dFbGysCAoKEu3btzeK9kVGRoqYmBhx8eJFkZKSIv70pz8JCwsLkZSUVO9tGnL7Hhg8eLCYMmVKteWGdPwKCwtFSkqKSElJEQDEBx98IFJSUsTVq1eFEEIsWrRIhIaGSvUvXbokWrVqJf7yl7+Ic+fOiaioKGFpaSl27dol1TGkY9fQ9m3dulVYWFiIf/3rXzqfvby8PKnOggULRFxcnLh06ZJITEwU48ePF3Z2dkbRvg8//FBER0eLX375RZw9e1YsWrRIABC7d++W6tTn+9VQ2/fA9OnTRUBAQI3bNKTj9/LLLwuVSiXi4uJ0/t5KSkqkOsZy/mOyU0//+te/hKenp7CyshJ9+/bVefRu2LBhYsaMGTr1d+7cKby9vYWlpaXw8fHR+bAKcf/xuyVLlgi1Wi2USqUYOnSoOHPmTHM0pUYNaZ+np6cAUO21ZMkSIYQQJSUlIiQkRLRr105YWloKDw8PMWPGDHHt2rVmbtX/a0j7IiIihIeHh7CyshLt2rUTISEhIiEhoUHbbG4N/fvMyMgQAMShQ4eqbcuQjt+DR5F/+3rQnhkzZohhw4bprBMXFyf69OkjrKysRMeOHcWaNWuqbddQjl1D2zds2LBH1hdCiClTpghXV1dhaWkp3NzcxLPPPivS0tKat2H/09D2rVy5UnTu3FlYW1sLR0dHMXjwYHHgwIFq263r+7W5NObvMy8vT9jY2Ih169bVuE1DOn41tQ2A2Lhxo1THWM5/iv81iIiIiMgk8Z4dIiIiMmlMdoiIiMikMdkhIiIik8Zkh4iIiEwakx0iIiIyaUx2iIiIyKQx2SEiIiKTxmSHiIiITBqTHSIiIjJpTHaIiIjIpDHZISIiIpP2f3Z2MkhX7/qbAAAAAElFTkSuQmCC",
"text/plain": [
"Figure(PyObject