{ "metadata": { "name": "", "signature": "sha256:6e6b453c122bbc0311e4f1afd1fa9541f15c463905a71378861b7a66b76b80c7" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "heading", "level": 1, "metadata": {}, "source": [ "Hierarchical Clustering, Heatmaps, and Gridspec" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Chris DeBoever\n", "\n", "cdeboeve@ucsd.edu\n", "\n", "UCSD Scientific Python User Group\n", "\n", "10/16/2013\n", "\n", "This is the post-presentation notebook with bug fixes. There may be more, use at your own risk." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This notebook shows how to make a simple annotated heatmap based on hierarchical clustering using matplotlib's `GridSpec` class." ] }, { "cell_type": "code", "collapsed": false, "input": [ "import brewer2mpl\n", "import pandas as pd\n", "import matplotlib.pyplot as plt\n", "import matplotlib.gridspec as gridspec\n", "import scipy.spatial.distance as distance\n", "import scipy.cluster.hierarchy as sch" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 1 }, { "cell_type": "code", "collapsed": false, "input": [ "# font size for figures\n", "rcParams.update({'font.size': 16})\n", "# Arial font\n", "rc('font',**{'family':'sans-serif','sans-serif':['Arial']})" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 2 }, { "cell_type": "code", "collapsed": false, "input": [ "# helper for cleaning up axes by removing ticks, tick labels, frame, etc.\n", "def clean_axis(ax):\n", " \"\"\"Remove ticks, tick labels, and frame from axis\"\"\"\n", " ax.get_xaxis().set_ticks([])\n", " ax.get_yaxis().set_ticks([])\n", " for sp in ax.spines.values():\n", " sp.set_visible(False)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 3 }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "Gridspec" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "See matplotlib's user's guide [gridspec page](http://matplotlib.org/users/gridspec.html) for an introduction to matplotlib's `Gridspec` class." ] }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "Test data" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We'll make some test data from two obviously different clusters." ] }, { "cell_type": "code", "collapsed": false, "input": [ "# test data\n", "testL = []\n", "# 5 samples from one group\n", "for i in range(5):\n", " # 20 measurements from normal with mean 10, stdev 2\n", " testL.append(random.normal(10,2,20))\n", "# 8 samples from another group\n", "for i in range(8):\n", " # 20 measurements from normal with mean 4, stdev 4\n", " testL.append(random.normal(4,4,20))" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 4 }, { "cell_type": "code", "collapsed": false, "input": [ "# permute test data and make dataframe\n", "testA = array(testL)[random.permutation(range(len(testL)))]\n", "testDF = pd.DataFrame(testA)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 5 }, { "cell_type": "code", "collapsed": false, "input": [ "testDF.shape" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 6, "text": [ "(13, 20)" ] } ], "prompt_number": 6 }, { "cell_type": "code", "collapsed": false, "input": [ "# look at raw data\n", "axi = imshow(testDF,interpolation='nearest',cmap=cm.RdBu)\n", "ax = axi.get_axes()\n", "clean_axis(ax)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "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\n", "text": [ "" ] } ], "prompt_number": 7 }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "Row clustering and dendrogram" ] }, { "cell_type": "code", "collapsed": false, "input": [ "# calculate pairwise distances for rows\n", "pairwise_dists = distance.squareform(distance.pdist(testDF))\n", "print 'Number of rows: {0}'.format(testDF.shape[0])\n", "print 'Size of distance matrix: {0}'.format(pairwise_dists.shape)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Number of rows: 13\n", "Size of distance matrix: (13, 13)\n" ] } ], "prompt_number": 8 }, { "cell_type": "markdown", "metadata": {}, "source": [ "`sch.linkage` performs hierarchical clustering. As you would expect, you can specify the method of clustering with the `method` parameter and the metric with the `metric`." ] }, { "cell_type": "code", "collapsed": false, "input": [ "# cluster\n", "clusters = sch.linkage(pairwise_dists,method='complete')" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 9 }, { "cell_type": "markdown", "metadata": {}, "source": [ "`sch.linkage` returns a matrix with 4 columns and $n-1$ rows. Each row records which two clusters were combined as the heirarchical clustering was performed. For instance, if the first row is\n", "\n", " [ 5. , 8. , 13.91203052, 2. ],\n", "\n", "then clusters 5 and 8 were combined because they had a distance of 13.91203052. The 2 means that there are two original observations in the newly formed cluster. If the second row is \n", "\n", " [ 3. 9. 17.77496623 2. ],\n", "\n", "then clusters 3 and 9 were combined because they had a distance of 17.8 and there are two original observations in the new cluster etc.\n", "\n", "We can use `sch.dendrogram` to draw a dendrogram from these results and also provide a nice representation of the clustering." ] }, { "cell_type": "code", "collapsed": false, "input": [ "# dendrogram\n", "den = sch.dendrogram(clusters)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "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\nj7d8AAAAAElFTkSuQmCC\n", "text": [ "" ] } ], "prompt_number": 10 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Running dendrogram will by default plot a dendrogram with some funky coloring. If we want to have just a single color, we can use the option `color_threshold=np.inf`. We can also set an `sch` parameter to start coloring with the color black:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "# make dendrograms black rather than letting scipy color them\n", "sch.set_link_color_palette(['black'])\n", "# or \n", "den = sch.dendrogram(clusters,color_threshold=np.inf)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "iVBORw0KGgoAAAANSUhEUgAAAXEAAAD7CAYAAACc26SuAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAH2ZJREFUeJzt3X1UVHX+B/D3DCCPgxd0s3QBJxjQtURrLYNVRqew1kCP\nmaunNjPpaCan3NJYEZdxHY4o2SrZs9sDulHrio+EPbjDntro0S1bDVaxfIg2y9EZWBpk/P7+8OfN\nkUGe7gxzh/frHM7B7733+/nemfE9l+/cuVcjhBAgIiJV0vb2AIiIqPsY4kREKsYQJyJSMYY4EZGK\nMcSJiFSMIU5EpGLBvi5oNBpRXV3t67JERKqWkZEBq9Xapl3j6/PENRoNeGo6EVHXtJednE4hIlIx\nhjgRkYoxxImIVIwhTkSkYgxxIiIVY4gTEakYQ5yISMUY4kREKubzb2wGstjYWNhstt4eBpGiYmJi\ncOrUqd4eBrWD39hUUCDvG/VdfF37B35jk4goADHEiYhUrMMQt1qt0Gq17f4cO3YMQghYLBbEx8cj\nMjISmZmZqK2t9cX4iYj6tA7nxB0OBw4ePOjW1tzcjOnTp+OXv/wlKisrsWLFChQXF2P16tVISEjA\nypUrceLECRw4cADR0dHuBQN4fi2Q9436Lr6u/UN7z0O3Pth8+OGH8eqrr+LAgQPo168fBg8ejOXL\nl2Px4sUAgNOnTyMhIQGFhYVYtGhRpwYSCAJ536jv4uvaPyj2weaBAwewYcMGrFy5EgMGDEBNTQ2a\nmpqQnZ0tryNJEjIyMlBVVdWzURMR0WV1OcTz8/ORkpKC+++/HwBQV1cHAEhMTHRbT6/Xy8uIiMg7\nuvRln/r6euzcuRPPP/+83Ga32xEaGorgYPeudDod7Ha7MqMkIiKPuhTiL7zwAmJjY3H33XfLbUII\naDQaj+trtZ4P9AsLC+XfjUYjjEZjV4ZBRBTwrFarx3tqXqpLIb5t2zZMnToVISEhclv//v3hdDrh\ncrkQFBQktzscDkiS5LGfi0OciIjauvQA12w2e1yv03PiR48exZdffolp06a5tRsMBgghcOTIEbf2\n+vp6pKSkdGHIRETUVZ0O8Q8//BAAMHbsWLf2tLQ0hIWFoaKiQm6z2Wyorq6GyWRSaJhERORJp6dT\nvvjiCwwcOLDNFElUVBRyc3NRUFAArVYLg8EAi8UCSZKQk5Oj+ICJiOgnnQ7xkydPIiYmxuOyoqIi\naLValJSUoLGxEenp6SgrK4NOp1NsoERE1BYvRaugQN436rv4uvYPvBQtEVEAYogTEakYQ5yISMUY\n4kREKsYQJyJSMYY4EZGKMcSJiFSMIU5EpGIMcSIiFWOIExGpGEOciEjFGOJERCrGECciUjGGOBGR\nijHEiYhUrNMh/s477+DGG29EREQEhg4disLCQpw7d05ebrFYEB8fj8jISGRmZqK2ttYrAyYiop90\nKsTfe+893HbbbRgxYgQqKyuxcOFCFBcXY+XKlQDO34XZYrFgyZIlKC8vx5kzZ2AymWC32706eCKi\nvq5Td/YZN24cYmJisGPHDrnt97//PT744APs2LEDV111FZYvX47FixcDAE6fPo2EhAQUFhZi0aJF\n7gUD+C4hgbxv1Hfxde0f2nseOgzxkydP4sorr8T27dtx++23t1n+1ltvYdKkSTh48CBSUlLk9uzs\nbDidTuzZs6dTAwkEgbxv1Hfxde0fun17tv3790MIgYiICGRlZSE8PByDBg2C2WyGEAJ1dXUAgMTE\nRLft9Hq9vIyIiLyjw7vdnzx5EgBwzz334K677sKjjz4Kq9WKlStXIjw8HC6XC6GhoQgOdu9Kp9Nx\nTpyIyMs6DPGzZ88CAG699VYUFxcDADIyMvD9999j5cqVyMvLg0aj8bitVsszGImIvKnDEI+KigJw\nPsQvdvPNN2PDhg2QJAlOpxMulwtBQUHycofDAUmSPPZZWFgo/240GmE0GrsxdCKiwGW1WmG1Wjtc\nr8MQT0pKAgC0tLS4tV84Qg8JCYEQAkeOHJHXBYD6+nq3DzovdnGIExFRW5ce4JrNZo/rdTjfMWLE\nCAwZMgSvv/66W/vu3bsxZMgQzJw5E2FhYaioqJCX2Ww2VFdXw2QydXP4RETUGR0eiWs0GhQVFWH2\n7NlYsGAB7rjjDrz99tt45ZVX8Mwzz0Cn0yE3NxcFBQXQarUwGAywWCyQJAk5OTm+2Acioj6rU1/2\nAYDy8nIUFRXhP//5D+Lj47F48WI5pF0uF5YtW4aXXnoJjY2NSE9Px/r165GcnNy2YACfcxrI+0Z9\nF1/X/qHbX/bx1UACQSDvG/VdfF37h25/2YeIiPwXQ5yISMUY4kREKsYQJyJSMYY4EZGKMcSJiFSM\nIU5EpGIMcSIiFWOIExGpGEOciEjFGOJERCrGECciUjGGOBGRijHEiYhUjCFORKRiDHEiIhXrVIj/\n8MMP0Gq1bX5mzJgBABBCwGKxID4+HpGRkcjMzERtba1XB05ERJ24xyYAfPbZZwCAt956CzqdTm4f\nMGAAAGDFihUoLi7G6tWrkZCQgJUrV8JkMuHAgQOIjo72wrCJiAjoZIh//vnnuPLKKz3evd7hcKCk\npARmsxkLFy4EAIwbNw4JCQnYuHEjFi1apOyIiYhI1qnplM8//xwjR470uKympgZNTU3Izs6W2yRJ\nQkZGBqqqqpQZJRERedTpEG9qakJ6ejrCw8MRFxeHkpISAEBdXR0AIDEx0W0bvV4vLyMiIu/ocDrF\n5XLh4MGD0Ol0WLNmDRISErBr1y7k5eWhubkZwcHBCA0NRXCwe1c6nQ52u91rAyfyN7GxsbDZbL09\nDK/QaDS9PQRFxcTE4NSpU709DEV0GOIajQZvvPEG4uPjMXToUADA+PHj0djYiOLiYuTn57f7BGu1\nPIOR+g6bzQYhRG8PgzohkN6UOgxxrVaL8ePHt2mfNGkSnnnmGURGRsLpdMLlciEoKEhe7nA4IEmS\nxz4LCwvl341GI4xGY9dHTkQUwKxWK6xWa4frdRjiDQ0N2LlzJ6ZNm4aBAwfK7c3NzQDO/1kihMCR\nI0eQlJQkL6+vr0dKSorHPi8OcSIiauvSA1yz2exxvQ7nO5qbmzF//nxs2rTJrf1vf/sbUlJSMG3a\nNISFhaGiokJeZrPZUF1d7fGURCIiUk6HR+JXX301fvOb36CgoABarRbDhg3DX//6V2zduhXbt29H\nZGQkcnNz5eUGgwEWiwWSJCEnJ8cX+0BE1GdpRCc+iWlubsaKFSvw2muvoaGhAb/4xS+wfPlyTJky\nBcD5M1iWLVuGl156CY2NjUhPT8f69euRnJzctqBGE7Af/gTyvlHH+Pyrhxqfq/bG3KkQ98VAAkEg\n7xt1jM+/eqjxuWpvzDwHkIhIxRjiREQqxhAnIlIxhjgRkYoxxImIVIwhTkSkYgxxIiIVY4gTEakY\nQ5yISMUY4kREKsYQJyJSMYY4EZGKMcSJiFSMIU5EpGIMcSIiFWOIExGpWJdC3Ol0Yvjw4ZgzZ45b\nu8ViQXx8PCIjI5GZmYna2lpFB0lERJ51KcTNZjNqa2uh0Wjc2iwWC5YsWYLy8nKcOXMGJpMJdrtd\n8cESEZG7Tof4vn37UFpaioEDB8ptDocDJSUlMJvNWLhwIbKysrBnzx44HA5s3LjRKwMmor4nNjYW\nGo1GsR8AivUVGxvbq49Np0K8tbUV9913H5YsWYIhQ4bI7TU1NWhqakJ2drbcJkkSMjIyUFVVpfxo\niahPstlsEEL45Y/NZuvVx6ZTIV5cXIzW1lbk5eW53aizrq4OAJCYmOi2vl6vl5cREZH3BHe0wsGD\nB1FUVIS9e/ciJCTEbZndbkdoaCiCg9270el0nBOnXhUbG9srR0gXf17kCzExMTh16pRPa5J/uWyI\nnzt3Djk5OcjJycGNN94IwP1FKoRo90Wr1fLsReo9F/78DnS+ftMg/3PZEC8tLcWxY8dQWVmJ1tZW\nAOeD+9y5c2htbUX//v3hdDrhcrkQFBQkb+dwOCBJUrv9FhYWyr8bjUYYjcae7QURUYCxWq2wWq0d\nrqcRlzlcmTBhAqqrq9vd+Nlnn8W8efNQV1eHpKQkuT0rKwtCCOzatattQY0mYI+QAnnf1KavPBfc\nz97nq7G1V+eycx7PPvssPv74Y/nno48+QnJyMrKysvDxxx9j5syZCAsLQ0VFhbyNzWZDdXU1TCaT\n8ntBRERuLjudkpyc3KYtLCwMAwYMwHXXXQcAyM3NRUFBAbRaLQwGAywWCyRJQk5OjndGTEREsg7P\nTrnUpR+kFBUVQavVoqSkBI2NjUhPT0dZWRl0Op1igyQiIs8uOyfulYJ+PLfVU4G8b2rTV54L7mfv\n8+s5cSIi8m8McSIiFWOIExGpGEOciEjFGOJERCrGECciUjGGOBGRijHEiYhUjCFORKRiDHEiIhVj\niBMRqRhDnIhIxbp8FUMi6hml7/+p5C3aeM9O9eFVDBUUyPumNv78XHBsXeercfnqBtvdebNs7zHg\nkTgR0f/z1Q22lfzriXPiREQq1qkQb2lpwbJly5CQkICoqCiYTCbs27fPbR2LxYL4+HhERkYiMzMT\ntbW1XhkwERH9pFMhvmjRIpSWlmLp0qXYvn07IiIiMGHCBBw9ehQAYDabYbFYsGTJEpSXl+PMmTMw\nmUyw2+1eHTwRUZ8nOnD69GnRr18/8cQTT8htzc3NIiIiQlgsFmG320VUVJRYvXq1vNxms4no6Gix\ndu3aNv11oqRqBfK+qY0/PxccW9f5alz+XKe9bTo8Eo+KisKHH36Ie++9V24LDg6GRqOB0+lETU0N\nmpqakJ2dLS+XJAkZGRmoqqpS8v2GiIgu0WGIBwUFITU1FZIkQQiB+vp63HfffdBqtbj77rtRV1cH\nAEhMTHTbTq/Xy8uIiMg7unR2yooVK5CUlIRNmzbhscceg8FggN1uR2hoKIKD3c9W1Ol0nBMnIvKy\nLp0nPm3aNEycOBF79+6F2WyG0+lEeHh4u+c8arU8g5GIyJu6FOLXXnstAGDcuHFwOBxYs2YNiouL\n4XQ64XK5EBQUJK/rcDggSZLHfgoLC+XfjUYjjEZj10dORBTArFYrrFZrh+t1GOL//e9/UVlZiTvv\nvBNRUVFy+6hRo+B0OhETEwMhBI4cOYKkpCR5eX19PVJSUjz2eXGIE5F3dPcr5F39NiGvt+Idlx7g\nms1mj+t1ON9hs9kwd+5cbNmyxa39zTffxKBBgzB16lSEhYWhoqLCbZvq6mqYTKZuDp+IeurCV8i9\n/eOLa41Q+zo8Eh82bBjuuOMOPPLII2hpaYFer8fWrVuxadMmvPjii9DpdMjNzUVBQQG0Wi0MBgMs\nFgskSUJOTo4v9oGIqM/q1FUMm5ubYTab8dprr6GhoQEjRoxAfn4+pk2bBgBwuVxYtmwZXnrpJTQ2\nNiI9PR3r169HcnJy24J+epU0JQTyvqmNPz8XvhpbINUJpH3pbp32tuGlaBUUyPvW23xxiVBfze36\nc1D4a51A2pfu1uGlaEnVfHGJUCUvD0rkKzyRm4hIxRjiREQqxhAnIlIxhjgRkYoxxImIVIwhTkSk\nYgxxIiIVY4gTEakYQ5yISMUY4kREKsYQJyJSsYC9doovLpjkia+vv8EL8hP1bQEb4r64YJI/4EWb\niPo2TqcQEakYQ5yISMU6DPFz585h7dq1GD58OKKiojBixAhs2LDBbR2LxYL4+HhERkYiMzMTtbW1\nXhswERH9pMMQX7FiBfLz83HPPfdg586dmDFjBh5++GGsWbMGwPk7MFssFixZsgTl5eU4c+YMTCYT\n7Ha71wdPRNTnictobW0V0dHRYvny5W7tDz74oLjiiiuEw+EQUVFRYvXq1fIym80moqOjxdq1az32\n2UFJxfiqTm/jfqqrBuv4bw1/r9PeNpc9Enc4HJg9e7Z8Q+QLkpOTcfLkSezduxdNTU3Izs6Wl0mS\nhIyMDFRVVSn3TkNERB5d9hRDSZKwfv36Nu07d+5EXFwcjh8/DgBITEx0W67X67Fjxw4Fh0lERJ50\n+TzxF154Ae+88w5KS0tx5swZhIaGIjjYvRudTsc5cSIiH+jSKYabN2/G/Pnzceedd+LBBx+EEKLd\nL5totTx7kYjI2zp9JL527VosXrwYU6ZMwebNmwEA/fv3h9PphMvlQlBQkLyuw+GAJEnt9lVYWCj/\nbjQaYTQauz5ylfLG5QCU+tYmv8JP5D+sViusVmuH62n+/1PPy1q6dClWrVqF2bNnY+PGjfJR9ptv\nvolbb70VdXV1SEpKktfPysqCEAK7du1qW1Cj8cnX4X1Vp6v8dVwAxxZor81AqhNI+9LdOu1t0+Gc\nx7p167Bq1So8/PDDePHFF92mSdLS0hAWFoaKigq5zWazobq6GiaTqUsDJCKirrvskXhDQwP0ej1S\nUlLw3HPPtXkXGDNmDJYuXYp169bBYrHAYDDAYrGgoaEB//73v6HT6doW9ON3Ol/w13EBHFugvTYD\nqU4g7Ut367S3zWXnxPfs2YOWlhZ88cUXuOmmm9p0ePLkSRQVFUGr1aKkpASNjY1IT09HWVmZxwDv\nru7OI3d1rphzwkSkNp2aE1e0oILvQEoLpCOK7ujrYwuk11mg1QmkfelunW7PiRMRkf9iiBMRqRhD\nPEDFxsZCo9F06QdAl7eJjY3t5T0l6tsC9vZsfZ2vbk/H28MR9S4eiRMRqRhDnIhIxRjiREQqxhAn\nIlIxhjgRkYoxxImIVIwhTkSkYgxxIiIVY4gTEakYQ5yISMUY4kREKsYQJyJSsS6H+I4dOxAdHd2m\n3WKxID4+HpGRkcjMzERtba0iAyQiovZ1KcT/+c9/4u67727TbjabYbFYsGTJEpSXl+PMmTMwmUyw\n2+2KDZSIiNrqVIi3tLRg9erVmDhxIkJCQtyWORwOlJSUwGw2Y+HChcjKysKePXvgcDiwceNGrwya\niIjO61SIV1ZWYtWqVSgpKUFubq7bdapramrQ1NSE7OxsuU2SJGRkZKCqqkr5ERMRkaxTIX7DDTfg\nq6++wsKFC9ssq6urAwAkJia6tev1enkZERF5R6fu7DN48OB2l9ntdoSGhiI42L0rnU7HOXEiIi/r\n8SmGQoh2b9Gl1fIMRiIib+rxPTb79+8Pp9MJl8uFoKAgud3hcECSJI/bFBYWyr8bjUYYjcaeDoOI\nKKBYrVZYrdYO1+txiBsMBgghcOTIESQlJcnt9fX1SElJ8bjNxSFORERtXXqAazabPa7X4/mOtLQ0\nhIWFoaKiQm6z2Wyorq6GyWTqafdERHQZPT4Sj4qKQm5uLgoKCqDVamEwGGCxWCBJEnJycpQYIxER\ntaPLIa7RaNp8kFlUVAStVouSkhI0NjYiPT0dZWVl0Ol0ig2UiIja0oiLv7nji4IaDbpasjvbdIcv\n6gTSvgRanUDal0CrE0j70t067W3DcwCJiFSMIU5EpGIMcSIiFWOIExGpGEOciEjFGOJERCrGECci\nUjGGOBGRijHEiYhUjCFORKRiDHEiIhVjiBMRqRhDnIhIxRjiREQqxhAnIlIxhjgRkYopFuLPP/88\nDAYDIiIikJaWhpqaGqW6JiKidigS4i+//DIeeOAB3HPPPdi6dSskScKkSZPw1VdfKdE9ERG1o8e3\nZxNCQK/XY/LkydiwYQMAoLW1FSkpKbj99tuxbt0694K8PVvA7Eug1QmkfQm0OoG0L92t47Xbsx06\ndAhHjx5Fdna23BYcHIzJkyejqqqqp90TEdFl9DjE6+rqAABJSUlu7Xq9HocPH/bJuxoRUV/V4xC3\n2+0AAJ1O59au0+lw7tw5NDU19bQEERG1o8chfuFIW6PReC6g5VmMRETeEtzTDvr37w8AcDgc+NnP\nfia3OxwOBAUFISIiwm391NTUdgP/crqzTXf4ok4g7Uug1QmkfQm0OoG0L92pk5qa6rG9xyFuMBgA\nAPX19bj66qvl9vr6eqSkpLRZ/1//+ldPSxIR0f/r8VyHwWBAXFwcKioq5LazZ89i9+7dMJlMPe2e\niIguo8dH4hqNBnl5eVi4cCFiYmKQlpaGJ598EqdOncKiRYuUGCMREbVDkU8dH3jgAaxZswZlZWW4\n8847YbfbsWfPHgwdOrRH/T7yyCNISEjA6NGjMXr0aMyaNUuJ4baxZcsWjBw5EqNHj8bEiRNRX1+v\nWN9CCNx77714/PHHAQDNzc247777MHLkSFxzzTWYO3cufvzxR8XqearpTdu2bZM/F/GG3bt3IzU1\nFcOGDcOMGTPgcDgUr7F//34YjUZcd911GDNmDD799FPFawDAk08+iWuuuQbXXnstpk6dipMnT3ql\nTmlpKYYPH47U1FTMmjULNptNsb4vfW25XC489NBDGD58OAwGA5599lnFagFAWVmZ/P9/9OjR0Ov1\n6Nevn+KP3aZNmzBq1CiMHj0a6enp+OSTTxTt39P/ydOnT2PkyJE9ryX82E033STef/99r9ZoamoS\nYWFh4vDhw0IIIZ544gkxefJkRfo+cOCAmDBhgoiIiBCPP/64EEKI/Px8MXv2bCGEEC6XS8yaNUss\nX75ckXrt1fSWuro6kZiYKHQ6nVf6/+6778QVV1whDh06JIQQ4rHHHhMLFixQtEZTU5O48sorxRtv\nvCGEEGL79u0iOTlZ0RpCCPHxxx+LoUOHCrvdLoQQ4tFHHxXz5s1TvM7evXtFXFyc+Pbbb4UQQvzp\nT38S06dPV6RvT6+tDRs2iMmTJwuXyyVsNpsYNmyY+PDDDxWpd6mzZ8+Km266STz33HOK9vvll1+K\nq666Sn7MKisrRXx8vGL9e3rcdu/eLQwGgwgNDRWffPJJj/r32/P/nE4n9u3bhzVr1mDUqFGYPn06\njh07pngdjUaDyMhInD59GsD5s2rCw8MV6fupp57C3LlzMWPGDPlUzIyMDCxbtgzA+dMvR40ahaNH\njypSr72a3vC///0Pv/3tb/HEE094rc6bb76JG264AYmJiQDO/8W3efNmxWsYDAbceuutAICsrCxs\n2bJF0RoAcP311+PQoUPQ6XT48ccfcfz4cQwcOFDxOp9++iluvvlmDBo0CAAwdepU7Ny5E62trT3u\n++LX1gUVFRWYM2cOtFotJEnCzJkzsWnTph7X8mTVqlUYNGgQ7r//fkX7DQsLw8aNG+XH7Prrr8e3\n336ryGMGeH7cSktL8corr+Cqq67qcf89nhP3loaGBphMJqxatQoGgwElJSWYMmWK4n/qhoeHo6Sk\nBGlpaRgwYABcLhfee+89RfouLS0FALz99tty2y233CL//vXXX2PdunV4/vnnFanXXk1vmDdvHubP\nn4+RI0d6rcaxY8fw85//XP73kCFDYLfb0djYiKioKEVq1NXVYdCgQcjJycFnn30GSZKwevVqRfq+\nVFBQELZt24b7778fYWFh+OMf/6h4jTFjxqC0tBTHjh1DXFwcysrK0NLSgh9++EEOqe7y9No6fvw4\n4uLi5H8PGTIEn3/+eY/qePL9999j7dq12Ldvn+J9JyQkICEhAcD5aY/f/e53mDJlCoKDlYnHix+3\nCwc8b7zxhiJ9A358PfGhQ4di165d8imMjz76KA4fPoyvv/5a0Trvv/8+CgoKcPDgQZw4cQL5+fm4\n4447FK3hySeffILx48cjNzcXv/71r71eT0lPPfUUQkJCcO+993r1aL+9voOCghSrcfbsWVRWVmLe\nvHn46KOP5Ofj7NmzitW42IW58D/84Q+YNGmS4v2PHz8e+fn5yM7OxtixYzF48GAEBQWhX79+itcC\ngHPnzrVpU/L5ueC5557D1KlT5bD1hqamJsyYMQP19fV44YUXvFZHaX4b4vv370dZWZn8byEEhBAI\nCQlRtM67774Lk8kEvV4PAFiwYAG++OILnDp1StE6FysvL0dmZiaKi4uRl5fntTre8vLLL+Ojjz7C\n6NGjMXnyZDQ3N+O6665DQ0ODonXi4+Pd+jxx4gRiYmIUm+4Czh85Dhs2DGPGjAEAZGdnw+VyKfrh\nNgAcPnwY7777rvzvOXPm4Ouvv1b0Q0fg/DSXyWTCvn37UFNTg/T0dERHRyMmJkbROhfEx8fjm2++\nkf994sQJtyNzpbz++uuYM2eO4v1ecPToUaSlpSEkJAR///vfER0d7bVaSvPbENdoNHjooYfka5I/\n/fTTSE1NxeDBgxWtM3bsWFRXV+O7774DcP5si6uvvhqxsbGK1rlgy5YteOihh/DWW29h5syZXqnh\nbR988AH279+Pffv2obKyEuHh4fj0008Vmd+72C233IKamhocOnQIAPDMM89g6tSpita47bbb8NVX\nX8nTdP/4xz+g1WrlN3WlfPPNN5g1axZ++OEHAMDmzZtx7bXXKh6uR48eRUZGBhwOB4QQsFgsuOuu\nuxStAfz0V9KUKVPw5z//GS6XC6dPn8Zrr72m+HNks9lw6NAhpKWlKdrvBadOnUJGRgamT5+Ov/zl\nLwgNDfVKHW/x2znxa665BqWlpcjKyoLL5UJcXBxeffVVxeuMGzcOeXl5mDBhAkJCQjBgwABs375d\n8ToXvmK7dOlSAMDcuXPlZb/61a/keTNv1PQmIYTX6lxxxRV48cUXMX36dLS0tCApKQmvvPKKojUG\nDRqEbdu2YcGCBWhqakJYWBi2bt2q+PTDuHHjkJ+fD6PRiODgYAwZMgTbtm1TtAYADBs2DHl5eRg7\ndizOnj2LjIwMrFmzRvE6F57zBx54AIcPH0ZqaipaWlowf/58jBs3TtFahw4dkqeFvOHpp5/G8ePH\nsXXrVmzdulVuf+eddxQ/mPPG/5Ue3xSCiIh6j99OpxARUccY4kREKsYQJyJSMYY4EZGKMcSJiFSM\nIU5EpGIMcSIiFWOIExGp2P8BCGeu7ZYwr5cAAAAASUVORK5CYII=\n", "text": [ "" ] } ], "prompt_number": 11 }, { "cell_type": "markdown", "metadata": {}, "source": [ "If we don't want the dendrogram, we can set `no_plot=True`." ] }, { "cell_type": "code", "collapsed": false, "input": [ "# dendrogram without plot\n", "den = sch.dendrogram(clusters,color_threshold=np.inf,no_plot=True)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 12 }, { "cell_type": "markdown", "metadata": {}, "source": [ "`sch.dendrogram` returns a dict with some useful information. In particular, the key `leaves` holds the indices into our original data ordered by the clustering:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "den['leaves']" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 13, "text": [ "[5, 8, 12, 1, 4, 0, 6, 3, 9, 10, 7, 2, 11]" ] } ], "prompt_number": 13 }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "Heatmap" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's reorder our original data with these indices and plot:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "axi = imshow(testDF.ix[den['leaves']],interpolation='nearest',cmap=cm.RdBu)\n", "ax = axi.get_axes()\n", "clean_axis(ax)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "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\n", "text": [ "" ] } ], "prompt_number": 14 }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can see that we recovered our two clusters. If we'd like, we can plot our dendrogram along with the heatmap:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "fig = plt.figure()\n", "heatmapGS = gridspec.GridSpec(1,2,wspace=0.0,hspace=0.0,width_ratios=[0.25,1])\n", "\n", "### row dendrogram ###\n", "denAX = fig.add_subplot(heatmapGS[0,0])\n", "denD = sch.dendrogram(clusters,color_threshold=np.inf,orientation='right')\n", "clean_axis(denAX)\n", "\n", "### heatmap ###\n", "heatmapAX = fig.add_subplot(heatmapGS[0,1])\n", "axi = heatmapAX.imshow(testDF.ix[den['leaves']],interpolation='nearest',aspect='auto',origin='lower',cmap=cm.RdBu)\n", "clean_axis(heatmapAX)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "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\ndAES/T94ZhAF/P26tQAAAABJRU5ErkJggg==\n", "text": [ "" ] } ], "prompt_number": 15 }, { "cell_type": "markdown", "metadata": {}, "source": [ "I used a gridspec to make multiple subplots of different sizes and then put the dendrogram in one subplot and the heatmap in another. This is an easy way to control their relative sizes. Note that I had to use `aspect='auto'` and `origin=lower` for the heatmap.\n", "\n", "We can follow the same process to cluster and make a dendrogram for the columns:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "# rename row clusters\n", "row_clusters = clusters" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 16 }, { "cell_type": "code", "collapsed": false, "input": [ "# calculate pairwise distances for columns\n", "col_pairwise_dists = distance.squareform(distance.pdist(testDF.T))\n", "# cluster\n", "col_clusters = sch.linkage(col_pairwise_dists,method='complete')" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 17 }, { "cell_type": "code", "collapsed": false, "input": [ "# plot the results\n", "fig = plt.figure()\n", "heatmapGS = gridspec.GridSpec(2,2,wspace=0.0,hspace=0.0,width_ratios=[0.25,1],height_ratios=[0.25,1])\n", "\n", "### col dendrogram ####\n", "col_denAX = fig.add_subplot(heatmapGS[0,1])\n", "col_denD = sch.dendrogram(col_clusters,color_threshold=np.inf)\n", "clean_axis(col_denAX)\n", "\n", "### row dendrogram ###\n", "row_denAX = fig.add_subplot(heatmapGS[1,0])\n", "row_denD = sch.dendrogram(row_clusters,color_threshold=np.inf,orientation='right')\n", "clean_axis(row_denAX)\n", "\n", "### heatmap ###\n", "heatmapAX = fig.add_subplot(heatmapGS[1,1])\n", "axi = heatmapAX.imshow(testDF.ix[den['leaves'],col_denD['leaves']],interpolation='nearest',aspect='auto',origin='lower',cmap=cm.RdBu)\n", "clean_axis(heatmapAX)\n", "\n", "fig.tight_layout()" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "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\nX2pqfHcSAAAAAElFTkSuQmCC\n", "text": [ "" ] } ], "prompt_number": 18 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Not too bad. There aren't any relationships among the columns, so that clustering doesn't really show anything meaningful." ] }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "Heatmap annotations" ] }, { "cell_type": "heading", "level": 3, "metadata": {}, "source": [ "Row and column labels" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The simplest things we might want to add to our heatmap are row and column names. Let's add some row and column names to the test data:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "testDF.index = [ 'Sample ' + str(x) for x in testDF.index ]\n", "testDF.columns = [ 'c' + str(x) for x in testDF.columns ]" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 19 }, { "cell_type": "markdown", "metadata": {}, "source": [ "There are a few things we have to consider here. First, we need reorder the labels to fit the dendrogram. We can do this easily with \n", "\n", " testDF.index[row_denD['leaves']]\n", "\n", "We also need to switch the $y$-axis on the heatmap from the left side of the axis to the right side. This is done with\n", "\n", " heatmapAX.yaxis.set_ticks_position('right')\n", "\n", "The last thing we have to worry about is the tick locations. My function `clean_axis` wiped out the tick locations, so we'll reset them with\n", "\n", " heatmapAX.set_yticks(arange(testDF.shape[0]))" ] }, { "cell_type": "code", "collapsed": false, "input": [ "# heatmap with row names\n", "fig = plt.figure()\n", "heatmapGS = gridspec.GridSpec(2,2,wspace=0.0,hspace=0.0,width_ratios=[0.25,1],height_ratios=[0.25,1])\n", "\n", "### col dendrogram ###\n", "col_denAX = fig.add_subplot(heatmapGS[0,1])\n", "col_denD = sch.dendrogram(col_clusters,color_threshold=np.inf)\n", "clean_axis(col_denAX)\n", "\n", "### row dendrogram ###\n", "row_denAX = fig.add_subplot(heatmapGS[1,0])\n", "row_denD = sch.dendrogram(row_clusters,color_threshold=np.inf,orientation='right')\n", "clean_axis(row_denAX)\n", "\n", "### heatmap ###\n", "heatmapAX = fig.add_subplot(heatmapGS[1,1])\n", "axi = heatmapAX.imshow(testDF.ix[den['leaves'],col_denD['leaves']],interpolation='nearest',aspect='auto',origin='lower',cmap=cm.RdBu)\n", "clean_axis(heatmapAX)\n", "\n", "## row labels ##\n", "heatmapAX.set_yticks(arange(testDF.shape[0]))\n", "heatmapAX.yaxis.set_ticks_position('right')\n", "heatmapAX.set_yticklabels(testDF.index[row_denD['leaves']])\n", "# remove the tick lines\n", "for l in heatmapAX.get_xticklines() + heatmapAX.get_yticklines(): \n", " l.set_markersize(0)\n", "\n", "fig.tight_layout()" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "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\nRK5CYII=\n", "text": [ "" ] } ], "prompt_number": 20 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Column names are along the same lines:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "# heatmap with row names\n", "fig = plt.figure()\n", "heatmapGS = gridspec.GridSpec(2,2,wspace=0.0,hspace=0.0,width_ratios=[0.25,1],height_ratios=[0.25,1])\n", "\n", "### col dendrogram ###\n", "col_denAX = fig.add_subplot(heatmapGS[0,1])\n", "col_denD = sch.dendrogram(col_clusters,color_threshold=np.inf)\n", "clean_axis(col_denAX)\n", "\n", "### row dendrogram ###\n", "row_denAX = fig.add_subplot(heatmapGS[1,0])\n", "row_denD = sch.dendrogram(row_clusters,color_threshold=np.inf,orientation='right')\n", "clean_axis(row_denAX)\n", "\n", "### heatmap ####\n", "heatmapAX = fig.add_subplot(heatmapGS[1,1])\n", "axi = heatmapAX.imshow(testDF.ix[row_denD['leaves'],col_denD['leaves']],interpolation='nearest',aspect='auto',origin='lower',cmap=cm.RdBu)\n", "clean_axis(heatmapAX)\n", "\n", "## row labels ##\n", "heatmapAX.set_yticks(arange(testDF.shape[0]))\n", "heatmapAX.yaxis.set_ticks_position('right')\n", "heatmapAX.set_yticklabels(testDF.index[row_denD['leaves']])\n", "\n", "## col labels ##\n", "heatmapAX.set_xticks(arange(testDF.shape[1]))\n", "xlabelsL = heatmapAX.set_xticklabels(testDF.columns[col_denD['leaves']])\n", "# rotate labels 90 degrees\n", "for label in xlabelsL:\n", " label.set_rotation(90)\n", "# remove the tick lines\n", "for l in heatmapAX.get_xticklines() + heatmapAX.get_yticklines(): \n", " l.set_markersize(0)\n", "\n", "fig.tight_layout()" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "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\niuOy57hJkyY4c+aM8HPJubt27ZpMuevXrwvTnfXq1ZP5/1Xy74cPH8rUSU9PL/e9LQ0bNsT69evh\n5KQ4g8/c3BxZWVnCz87OzvD39y+3GCEzM1PpYgmiQdXd4+miMWPGsAYNGrCYmBhWVFTE7t+/z9zc\n3JiDgwNjjLHc3Fy2Z88eZmdnxz7++ONyn3DLun//Ptu9ezdbtGgRmzp1KmPszadic3Nz1r17dzZp\n0iQ2aNAg5ujoyJ48ecIYYyw/P5/t37+fNWrUiE2aNIkx9mbkUqdOHebj48OioqJYQkICa9asGRs/\nfjzbvXs3i4iIEKbOfvnlF6Gdivbt9evX7OjRo2zNmjXM39+feXp6svnz5zNLS0u2bt06udM3ubm5\nbNu2bUwikbA5c+Ywxhj75ZdfmIGBAQsMDGR//vknO3/+PGvevDlbunQpO3v2LDt58iQLCgpihoaG\n7Ouvv2aMMfb555+zevXqsa1bt7IHDx7ItFFcXMw+/PBDJhKJ2HvvvccMDAxkfv/s2TM2YcIEZm5u\nztauXcvy8/OZSCRi586dkyn3/fffM0NDQzZ16lQWExPDbt++zZ48ecKePn3K7ty5w+Lj49nUqVOZ\ngYEB++qrrxhjb6ZxzMzM2KZNm1hqaio7evQoa9eunTAV9ujRI/bll18yiUTCZs6cKZxjkUjEmjRp\nwqRSKXNzc2ONGjVi9+7dY4wxlpGRwdatW8fMzc3Z3Llzy53TEydOsBUrVgg/X7hwgY0ePVrmeJYt\nW8bEYjFbvXo1u379usw0YWFhIbt16xZbvXo1MzExEdr46quvmKmpKVu4cCG7ePFiuXbnzZsnjHbL\nnuOCggK2bNkyZmZmxqZNmyaMXMqe47Vr1zIjIyPm7+/P/ve//zErKyvm7e3N6tevz/bs2cMePHjA\ndu7cySQSiTBq/fzzz5m5uTlbtGgR+/LLL5mdnR3r0qULa9mypTCCSk5OZi1atBD+v/CaMmUKa9q0\nKdu/fz979eqV3DKJiYnMzs6OTZw4UaU2CD/qcOTIyMhgHTt2ZCKRiBkZGTGRSMQaNmzI/vjjD8YY\nY9u3b2cikYgNGzaMZWdnK+1w5ElJSWFbtmxhQUFBzN3dXZiaK5me2LhxIxOJRKxnz54sMzNTqHfi\nxAnm5ubGDAwMhDe60o/mzZvLTDnx7lt+fj6bOnUqMzY2lvsmtXXrViYSidjw4cPZy5cvhed37tzJ\n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\n0Yr/BwPSkDZCfrq+AAAAAElFTkSuQmCC\n", "text": [ "" ] } ], "prompt_number": 21 }, { "cell_type": "markdown", "metadata": {}, "source": [ "And now we have row and column labels." ] }, { "cell_type": "heading", "level": 3, "metadata": {}, "source": [ "Scale colorbar" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Another reasonable addition is a scale for the heatmap." ] }, { "cell_type": "code", "collapsed": false, "input": [ "# heatmap with row names\n", "fig = plt.figure(figsize=(12,8))\n", "heatmapGS = gridspec.GridSpec(2,2,wspace=0.0,hspace=0.0,width_ratios=[0.25,1],height_ratios=[0.25,1])\n", "\n", "### col dendrogram ###\n", "col_denAX = fig.add_subplot(heatmapGS[0,1])\n", "col_denD = sch.dendrogram(col_clusters,color_threshold=np.inf)\n", "clean_axis(col_denAX)\n", "\n", "### row dendrogram ###\n", "row_denAX = fig.add_subplot(heatmapGS[1,0])\n", "row_denD = sch.dendrogram(row_clusters,color_threshold=np.inf,orientation='right')\n", "clean_axis(row_denAX)\n", "\n", "### heatmap ####\n", "heatmapAX = fig.add_subplot(heatmapGS[1,1])\n", "axi = heatmapAX.imshow(testDF.ix[row_denD['leaves'],col_denD['leaves']],interpolation='nearest',aspect='auto',origin='lower',cmap=cm.RdBu)\n", "clean_axis(heatmapAX)\n", "\n", "## row labels ##\n", "heatmapAX.set_yticks(arange(testDF.shape[0]))\n", "heatmapAX.yaxis.set_ticks_position('right')\n", "heatmapAX.set_yticklabels(testDF.index[row_denD['leaves']])\n", "\n", "## col labels ##\n", "heatmapAX.set_xticks(arange(testDF.shape[1]))\n", "xlabelsL = heatmapAX.set_xticklabels(testDF.columns[col_denD['leaves']])\n", "# rotate labels 90 degrees\n", "for label in xlabelsL:\n", " label.set_rotation(90)\n", "# remove the tick lines\n", "for l in heatmapAX.get_xticklines() + heatmapAX.get_yticklines(): \n", " l.set_markersize(0)\n", "\n", "### scale colorbar ###\n", "scale_cbGSSS = gridspec.GridSpecFromSubplotSpec(1,2,subplot_spec=heatmapGS[0,0],wspace=0.0,hspace=0.0)\n", "scale_cbAX = fig.add_subplot(scale_cbGSSS[0,0]) # colorbar for scale in upper left corner\n", "cb = fig.colorbar(axi,scale_cbAX) # note that we tell colorbar to use the scale_cbAX axis\n", "cb.set_label('Measurements')\n", "cb.ax.yaxis.set_ticks_position('left') # move ticks to left side of colorbar to avoid problems with tight_layout\n", "cb.ax.yaxis.set_label_position('left') # move label to left side of colorbar to avoid problems with tight_layout\n", "cb.outline.set_linewidth(0)\n", "\n", "fig.tight_layout()" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "iVBORw0KGgoAAAANSUhEUgAAA0sAAAImCAYAAACCWRFGAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3X1czXf/B/DXOSel+xsJxcSkTBkhjYQyUXIzMvxcysYu\n2Ua52VhptkgtM/eTjauJ69KEFCFFwywRVw25WTRmqClTHN2czu8PD2c71znVwXHS1+v5eJzHw/l8\nP9/v+/3pTu8+n+/nK5LL5XIQERERERGREnFjJ0BERERERPQiYrFERERERESkBoslIiIiIiIiNVgs\nERERERERqcFiiYiIiIiISA0WS0RERERERGqwWCIiIiIiIlJD72lPrK6uxr1799CiRQtt5qMT+j3e\naewUXkhVZzY1dgpERERERC8MjWaWKisr8cknn2DLli0AgPT0dNjY2KBly5YYMGAA/vjjj6dOICUl\nBWZmZkptUqkUYWFh6NSpE0xNTeHq6orvv/++wWu5uLhALBYrvWxsbFT6icQSvtS8iIiIiIjoLxrN\nLC1YsADr16/H2rVrAQDBwcFo27YtVqxYgaioKMybNw//+te/njj48ePHMWnSJJX24OBg7N69G0uW\nLIGTkxN2796N8ePHQyQSISAgQO21qqqqcPHiRcTExGDAgAGK9mbNmqn0FevpP3GuRERERET0ctGo\nWNq+fTuWL1+OKVOmICcnB1evXsV//vMfvP322zA2Nsb06dOfKGhVVRVWrFiBiIgIGBsbo7q6WnGs\nuLgYmzdvxsaNGzFlyhQAgJeXFwoLC7Fs2bI6i6Xz58+jpqYGI0eOROfOneuNr2dg+ET5EhERERHR\ny0ejYumPP/5A165dAQB79+6Fnp4efH19AQCWlpaQSqVPFDQtLQ3R0dFYtmwZ/vjjD3z55ZeKY/fv\n30dwcDCGDBmidE7nzp2Rk5NT5zXz8/NhaGiITp06NRifM0tERERERNQQjYqljh074tixY+jTpw++\n//57eHh4wNTUFACQmJgIBweHJwrq5uaGoqIimJmZYdGiRUrHOnTooFju95hMJsO+ffvQpUuXOq+Z\nn58PKysrvP3220hPT1cs2fvqq69gYmKi1Fei3/yJ8iUi7bOyskJZWVljp0FELwlLS0uUlpY2dhpE\n1MRoVCx99NFHePfddxEdHY2KigrExsYCANzd3XHy5EnFxg+asrW1faL+n376KS5evIhly5bV2efn\n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\nNjZWu1TuSS1fvhwmJiZwdXXFpk2bUFBQgG+//VZt34ULF6Jv374YN24cpkyZgocPHyIyMhI3btyA\nq6ur2nN27dqF5ORkTJ48Ge3atVN6EK2RkRG6dev2TPmzWCIiIiIiEphZs2ahU6dOWLNmDT788EPc\nvXsX1tbW8PHxwb/+9S+0b98eADB//nzcvHkTn332GR48eID+/fvjwIEDiIiIUCo81N3L/b9t6u75\njo2NRXx8PCIjI9G9e3ccPHgQPXv2VHsNV1dXHDp0CGFhYRg7diyaN28ODw8PbN26FW3atFE7zpSU\nFIhEImzevBmbN29WOubs7Iz8/HwNP2LqieTamF+jJkUkEmllWvVloOt7llJn9dNpvLEbcnQW64fR\nhjqLBQCyP+/oNF7ux7E6jdfa9RWdxhPr6/Zva62H++s03teyZ98xSVP/LFf/fJHnZV9b3X4s/3Py\nuk7jyWp1+//Z5gnP9lfqJ1Wj4/EZPijWXTCJvu5iARBL/9RpvAKxbcOdtMjF1lyn8RpSVFSEjh07\nIiMjo85ld00B71kiIiIiIiJSg8USERERERFpnRAew8J7lpogKysrxf73REREREQvGnt7e8hkssZO\n45mxWGqCysrKnumeIyFU+UREREREzxuX4REREREREanBYomIiIiIiEgNFktERERERERqsFgiIiIi\nIiJSg8USERERERGRGtwNj6gem39dp9N4ua/P02m8rH2rdRbr4pIoncUCgJXx+TqNN/Nmnk7jtXt4\nRafxPjip2100Zb8+/Y6fT+Nk/kWdxXKaPFJnsQBgmF1zncarrLHTaTwDPd3+3fdSaaVO47nIb+g0\nXq1xC53FqkqL01ksAGjew1On8V5p316n8ej54MwSERERERGRGiyWiIiIiIiI1GCxREREREREpAaL\nJSIiIiIiIjVYLBEREREREanBYomIiIiIiEgNFktERERERERqsFgiIiIiIiJSg8USEREREZEAZWZm\nwsfHB1ZWVjA0NESXLl0QHh6OioqKxk4NAJCVlQWxWIzTp08/9TUWLVoEsVis9tWxY8dnzlHvma9A\nREREREQvlLS0NIwYMQLvvPMOZs2aBSMjI5w+fRpLly7F4cOHcfToUYjFTX/eZNq0afD19VVqKygo\nwDvvvINp06Y98/VZLBERERERCUxsbCx8fHywYcMGRdvAgQPh5OSE4cOHIz09HUOHDm3EDLXDzs4O\n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\n1KlTyMzMhFwuF1wq97i2bdsGe3t7qFQq5OXlobGxEbt27RI8NzU1FTNnzkRsbCxWrlyJO3fuIC0t\nDVevXoVKpRJ8z/Tp0zFt2jS8+eab2Lp1K3Q6HRITEzF79uwBn6L3qDizRERERERkZdatW4fS0lIY\nDAasWbMGoaGhSExMhLu7O06fPo1JkyYBAJKSkhAXF4dNmzYhPDwctbW1qKysREhICBoaGoz9CW21\neLBNIpGYtWVmZqKoqAhRUVFoaWlBdXU1/P39BftQqVQ4fPgwdDodoqOjsWrVKri5uaGurg7jxo0T\nvE4bGxsUFxfDw8MDy5YtQ1JSEpYtW4Y//elPj3/TBEgMXGtkQiKRPPPLr4ZrjM/DvbE0u2//UNS8\n9N8li5r36/8+IlpW04IW0bIA4N7Sn4maV/JJh6h53x97Y/CTLOjInX8RNW/qy+Zr2Z8m5RcXRcv6\n0vk10bIAYPTfT4uat/f2RFHz/p/Ll6LmHe8X/gfb0xKgMP9Q0afpZJdUtKyz126KlgUAK6eK+2un\n3/fvouYpfrRV1LzBaLVaeHh4oKam5qHL7p4HnFkiIiIiIiISwGKJiIiIiIgszhqekswHPBARERER\nkUVNnDgRer24y0ifBs4svcCUSqVxI96jvIiIiIiIXiScWXqBdXV1PdYDG1gwEREREdGLhDNLRERE\nREREAlgsERERERERCWCxREREREREJIDFEhERERERkQAWS0RERERERAIkhsd5HNoLQCKRPNYT4oaD\npcb4uP08D/fG0npv6ETN2918W9S8j67cEC1Ls8hLtCwAyPizVtS8/D+cEDXv0zf6RM2zfW2WqHmf\nvDRB1DyZrXj/dzi+qUK0LACAd6Cocb3luaLm3VzyU1Hz/uXWZVHz7snHiJpXoBXvzxa30TLRsgDg\nuz/6rah5be9MFDVv5IJVoua9KDizREREREREJIDFEhERERERkQAWS0RERERERAJYLBEREREREQlg\nsURERERERCSAxRIREREREZEAFktEREREREQCWCwREREREREJYLFERERERGSFamtroVaroVQqIZPJ\nMHnyZKSkpODWrVvDPTQAQF1dHWxsbHD27Nkh9XPt2jUsW7YMzs7OUCqViIuLg06ns8gYWSwRERER\nEVmZ8vJyqNVquLu7Y9++faioqMDq1auRk5MDtVqNe/fuDfcQLaKvrw9hYWH46KOPsHPnTuTl5eHk\n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\nIaLmuUq/EjVPTLZftoqat/eLMaLmvT5ZIWqe9MZVUfNuFueKmjf6uytEzZP0ifezp78u7p+b977q\nFjXv4237RM2bXl4rat6LgjNLREREREREAlgsERERERERCWCxREREREREJIDFEhERERERkQAWS0RE\nRERERAJYLBEREREREQlgsURERERERCSAxRIREREREZEAFktERERERFaotrYWarUaSqUSMpkMkydP\nRkpKCm7dujXcQwMA1NXVwcbGBmfPnh1yX//1X/8FT09PjBo1ClOmTMH+/fstMEIWS0REREREVqe8\nvBxqtRru7u7Yt28fKioqsHr1auTk5ECtVuPevXvDPUSL+Y//+A/85Cc/werVq/GnP/0J//qv/4rX\nX38ddXV1Q+7bdujDIyIiIiKiZ0lmZibUajV27NhhbJs7dy58fHwQERGBqqoqLFy4cBhHaBk3b97E\npk2bkJ6ejg0bNgAAQkJC0NzcjOrqasydO3dI/XNmiYiIiIjIyuh0Ouj1erP2BQsWQKPRYMKECca2\nkydPIiwsDAqFAiNGjICPj49JkbV79244OzujsrISfn5+kMlkmDFjBpqamlBcXAxvb284ODhg8eLF\n0Ol0AACtVgsbGxuUlZUhMDAQo0aNgp+fHw4cODDguM+cOYPQ0FDI5XK4uLhg7dq16Onpeej5VVVV\n6O3txapVq0za6+rqsGXLlke6VwNhsUREREREZGUWLVqEqqoqLFmyBAUFBbh+/ToAwNbWFklJSfD1\n9QUAXLlyBSEhIXB0dERhYSFKSkrg5eWF+Ph4nD9/3thfd3c3EhISkJycjIKCArS0tCA8PBwpKSlI\nT09HdnY2ampqkJqaajKO5cuXY86cOTh48CCmTJmCmJgY1NTUCI754sWLCA4OhlQqxf79+5GRkYGC\nggLExsY+9Dr/+te/Yty4cTh79ixUKhXs7Ozg5eU1aFH2qLgMj4iIiIjIymzZsgWdnZ3Ys2cPysrK\nAAA+Pj6Ijo7Ghg0b4OTkBAC4cOECZs2ahfz8fEilUgBAQEAAxowZg/r6emNRdffuXWRkZCAmJgYA\n0NDQgPT0dNTX1yMoKAgAUF1djRMnTpiMIyYmBhkZGQDuz2o1NzdDo9Fg/vz5ZmNOS0uDq6srysvL\nYWt7v0zx9PREcHAwjh49itmzZ5u9R6fT4datW/j+97+PX/3qV/D29sbOnTsRExODY8eOITAwcEj3\n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\nVFQAMJ9ZehKlpaUIDAw0HhcXF2PevHmC5wYFBaGxsREqlcrYptPp8IMf/ABr1qyBu7u72XtOnz5t\nctzd3Y2QkBBs3LjR5JqeFIslIiIiIiIrolAooNFokJiYiPb2dsTFxcHV1RWtra3IyclBa2srkpOT\nAdzfh5Seno7t27fD19cXp06dQmZmJuRyueBSuce1bds22NvbQ6VSIS8vD42Njdi1a5fguampqZg5\ncyZiY2OxcuVK3LlzB2lpabh69apJAfV1D7b/Y8/UxIkT8dprrw15/NyzRERERERkZdatW4fS0lIY\nDAasWbMGoaGhSExMhLu7O06fPo1JkyYBAJKSkhAXF4dNmzYhPDwctbW1qKysREhICBoaGoz9Ce3l\nfrBNaM93ZmYmioqKEBUVhZaWFlRXV8Pf31+wD5VKhcOHD0On0yE6OhqrVq2Cm5sb6urqMG7cOIvc\nl8clMQzXZpBnlEQiGbb9MSRsOH9NxN6z1H6zd/CTLMjOVrz/LwnzfVm0LAB466fC/2v1tLz86lRR\n897+vrh54V5jRM07dbVb1DzNBxdEy/qiVdxr+9UPpw1+kgV98FGrqHntXYN/WKUlfWuSQtQ8sf9e\nuHCxXbSsr0S+th98b+izDI9jT+H5wU+yoM9yhr7kzJK0Wi08PDxQU1Pz0GV3zwPOLBEREREREQlg\nsURERERERBZnDR/Dwgc8EBERERGRRU2cONEin3M03DizREREREREJIDFEhERERERkQAWS0RERERE\nRAJYLBEREREREQlgsURERERERCSAxRIREREREZEAicFgMAz3IJ4lEokEvCXPluH8NXH7wfui5k0N\n8hE1T2YnFS2rtf2WaFkAYCd7SdS8luYvRM2LjRD394r+nrg/g1IbcT+bo/78ddGyxo2Vi5YFAB4u\n9qLmRb72sqh5SQc+FjVvlMh/tpw9fFbUPFefV0TLCg2YIFoWAOS994GoeWLrKE8e7iFYJc4s0TNH\nqVRCIpEYX0REREREw4EfSkvPnK6uLpOZJBZMRERERDQcOLNEREREREQkgMUSERERERGRABZLRERE\nREREAlgsERERERERCWCxREREREREJIDFEhERERERkQAWS0REREREVqi2thZqtRpKpRIymQyTJ09G\nSkoKbt0S94PiH6aurg42NjY4e9ZyH76cmJiIxYsXW6w/FktERERERFamvLwcarUa7u7u2LdvHyoq\nKrB69Wrk5ORArVbj3r17wz1Ei8vKysK7775r0c/o5IfSEhERERFZmczMTKjVauzYscPYNnfuXPj4\n+CAiIgJVVVVYuHDhMI7Qctrb2/HOO+9g3759GD16tEX75swSEREREZGV0el00Ov1Zu0LFiyARqPB\nhAkTjG0nT55EWFgYFAoFRowYAR8fH5Mia/fu3XB2dkZlZSX8/Pwgk8kwY8YMNDU1obi4GN7e3nBw\ncMDixYuh0+kAAFqtFjY2NigrK0NgYCBGjRoFPz8/HDhwYMBxnzlzBqGhoZDL5XBxccHatWvR09Mz\n4Hs0Gg2OHz+OqqoqTJ069XFu06BYLBERERERWZlFixahqqoKS5YsQUFBAa5fvw4AsLW1RVJSEnx9\nfQEAV65cQUhICBwdHVFYWIiSkhJ4eXkhPj4e58+fN/bX3d2NhIQEJCcno6CgAC0tLQgPD0dKSgrS\n09ORnZ2NmpoapKammoxj+fLlmDNnDg4ePIgpU6YgJiYGNTU1gmO+ePEigoODIZVKsX//fmRkZKCg\noACxsbEDXuuPf/xjNDY2Yt68eTAYDEO5bWa4DI+IiIiIyMps2bIFnZ2d2LNnD8rKygAAPj4+iI6O\nxoYNG+Dk5AQAuHDhAmbNmoX8/HxIpVIAQEBAAMaMGYP6+npjUXX37l1kZGQgJiYGANDQ0ID09HTU\n19cjKCgIAFBdXY0TJ06YjCMmJgYZGRkA7s9qNTc3Q6PRYP78+WZjTktLg6urK8rLy2Fre79M8fT0\nRHBwMI4ePYrZs2cLXquXl9eQ7tVAOLNERERERGRl7OzskJubi8uXLyM7OxtRUVFoa2vD5s2b4evr\nC61WC+CfM1B9fX04d+4cCgsLsXXrVgBAb2+vSZ8BAQHGr11cXAAA06ZNM7YplUrcuHHD5D3Lli0z\nOY6MjMSxY8cEx3zkyBFjEdXf34/+/n4EBgbC0dERtbW1T3AXho7FEj3zFAoFJBLJsLyIiIiInmfj\nx49HfHw8ioqK0N7ejry8POh0OmzcuBEAoNfrsX79eiiVSvj7+yMlJQVdXV0AYLakzcHBwaz/kSNH\nDpjv6upqcuzs7Iy+vj7cvn3b7NyOjg7k5OTAzs7O5NXd3W1cRig2LsOjZ15nZ+ewZbv94P1hyyYi\nIiJ6Eg0NDYiIiMChQ4dMZn6kUilWrFiBkpISNDU1Abi/XG/nzp3Yu3cvwsLCIJPJ0NPTg9zcXIuM\npaOjA56ensbjtrY2yGQyyOVys3OdnJwQGRmJhIQEk3aDwYCxY8daZDyPizNLRERERERWxNvbGz09\nPcjKyjL7nl6vx6VLl4x7kY4fP47p06dj6dKlkMlkAICKigoA5jNLT6K0tNTkuLi4GPPmzRM8Nygo\nCI2NjVCpVMaXm5sbkpOTTR42ISbOLBERERERWRGFQgGNRoPExES0t7cjLi4Orq6uaG1tRU5ODlpb\nW5GcnAzg/j6k9PR0bN++Hb6+vjh16hQyMzMhl8sFl8o9rm3btsHe3h4qlQp5eXlobGzErl27BM9N\nTU3FzJkzERsbi5UrV+LOnTtIS0vD1atXoVKpHjnTkk/E48wSEREREZGVWbduHUpLS2EwGLBmzRqE\nhoYiMTER7u7uOH36NCZNmgQASEpKQlxcHDZt2oTw8HDU1taisrISISEhaGhoMPYntJf7wTahPd+Z\nmZkoKipCVFQUWlpaUF1dDX9/f8E+VCoVDh8+DJ1Oh+joaKxatQpubm6oq6vDuHHjHum6Lb3vXGKw\n9MPIn3MSicTiz2enx/Ms/RqIvWdpapCPqHkyO6loWa3tt0TLAgA72Uui5rU0fyFqXmyEuL9X9PfE\n/ZmU2oj7gJX68+JtHB431nyd/tPk4WIval7kay+Lmpd04GNR80aJ/GfL2cNnRc1z9XlFtKzQgAmD\nn2RBee99IGqe2DrKk4d7CCa0Wi08PDxQU1Pz0GV3zwPOLBEREREREQlgsURERERERBZnDR/Dwgc8\nkOiUSqXx+f1EREREZH0mTpwIvV4/3MMYMhZLJLqurq4B9yRZw/9CEBEREdHzj8vwiIiIiIiIBLBY\nIiIiIiIiEsBiiYiIiIiISACLJSIiIiIiIgEsloiIiIiIiASwWCIiIiIiIhLAR4cTDWD0v4wd7iE8\nVR+dbRUtKyBggmhZAPCDADdR89LvPfxx+E/D8U+/EDVv5/enipq36N9rRc172d1JtKzYaeL+LLz9\n23pR81QTRouatztOJWpe1LYPRc3zUE0WNa+7q0e0rB3v/kG0LABISFwmat7d/uf/M4aIM0tERERE\nRESCWCwREREREREJYLFEREREREQkgMUSERERERGRABZLREREREREAlgsERERERERCWCxRERERERE\nJIDFEhERERGRFaqtrYVarYZSqYRMJsPkyZORkpKCW7duDffQAAB1dXWwsbHB2bNnLdZnYmIiFi9e\n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\nwNmzZ/HNN9+YXHbKlClo0aIF+vbti8GDB+Phw4eYNWsWrl+/juDgYJP/M3ToUCxatAjh4eGYOnUq\nnJycsHLlShw4cACbN282u/w8skREREREZGXGjBmDxMREiAhGjx6NDh06YNy4cfD19UVGRgZq1aoF\nAJg4cSIiIiIwY8YMdO3aFSkpKdi1axfatWuH9PR0w/pMnZ7w7DxTpzHExcVhw4YN6NWrF65evYqk\npCQ0adLE5DqCg4OxZ88e5OTkoHfv3hg6dCh8fHywd+/eMsPsSrm7u+Pw4cNo2LAhxo4di379+uH6\n9etISUlBt27dfvsL92wdhWONSGWKorzSYd1XXe5NavDJVlXzSoofq5o3PaLJyxeykP+TelG1LAAI\na2T6TfVNOX8zX9W8HZvTX76QBVWuXuPlC1mQRqPuOYOKinl3b+WplgUAGhtbVfP0lcueh/AmOVXW\nqZo3PCxA1by8giJV845mmX8Tz1fVsZ6XalkAsDr9iqp52Vfvqpp3Mrarqnkvk5WVBT8/PyQnJz93\n2F1FwCNLREREREREJrCzREREREREFmcNVxbmBR6IiIiIiMiiatasiZKSkvIuhtl4ZImIiIiIiMgE\ndpaIiIiIiIhMYGeJiIiIiIjIBHaWiIiIiIiITGBniYiIiIiIyAR2loiIiIiIiExgZ4mIiIiIiMgE\n3meJVFe5cuUKc5OyrqF+quZl33uoap5DJa1qWR+G+KiWBQDh/h6q5k27dlfVvEr2elXzAup5qZqn\nt1f34ymsfhXVsqrq7VTLAoD+H69QNa95m7aq5l29ma9q3l9nrlU1z6maup9DHw9qolpWJa26v9kX\nFhSpmvdhxzqq5tGbwc4SqS4vL++VlqsoHSoiIiIisk4chkdERERERGQCO0tEREREREQmsLNERERE\nRERkAjtLREREREREJrCzREREREREZAI7S0RERERERCaws0REREREZIVSUlIQFhYGNzc36HQ61KtX\nD5MnT8avv/5a3kUDAOzduxcajQZHjx41az0bNmyARqMp84iPjze7jLzPEhERERGRldm+fTvef/99\n/OlPf8KYMWPg4OCAo0ePYu7cuUhNTcUPP/wAjcY6jpucOHEC/v7+WLVqldH8mjVrmr1udpaIiIiI\niKxMXFwcwsLC8NVXXxnmtW3bFnXr1kW3bt2we/dudO7cuRxLaDknT55EkyZNEBISYvF1W0d3koiI\n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\nVPr372+ow+effy6KosjkyZONlps6dapF3lfat28vnTp1kvz8fCkpKZGPP/5YtFqt/Pd//7fRcpGR\nkRISEmJ2nojIF198IVqtVlJSUiyyvhfp0aOHNG/eXC5fviw3btyQzp07i1arlTFjxhiWefz4sfTu\n3Vtat279xstDL8fOEtFrcHFxkd27dxvNy83NFUVR5OrVq4Z569evFw8PD7Oynv5Sc/r0aenZs6do\ntVrx9PSUjz76SHbs2PHCLwTm5ImI2NramvwA2b59u+h0OrPzdDqdpKamGqbt7e1l7969ZZZLTk4W\ne3t7s/Oert/OnTulcePGoiiKNGzYUGbPni1nz541O+Npjo6OkpycbJi+ePGiKIoiaWlpRsvt3r1b\n7OzszMqyt7c3ei1tbW2NpkslJSVZ5LXU6/Um20ZMTIzRlylLfUHMycmR//qv/xIPDw9ZuXKl0XNF\nRUWiKIpkZGSYnVNKp9PJjh07Xrrctm3bxMHBwew8vV5v1FZERO7cuSOKosgvv/ximLd161azO4PP\n7uf29vayb9++Msvt2rXLIm2lVGxsrFSuXFnu3r1rsXWa4uDgIFu2bHnpct9//73o9Xqz8xwdHU3+\n6LJ69WrRaDQyaNAgEbHcvvDw4UP59NNPRa/Xy8yZM41+PLP0vvDsfl7aJp9tL3v27BFHR0ez81xc\nXGTXrl2G6by8PFEUpcx7WVJSkkW2XamIiAgJCAgwdArfFCcnJ9m+fbth+vTp04YfRZ+2Y8cOi3zG\nkvl4zhLRa9BqtWXG+9+8eRPAk+FApRRFee5Qidfx9ttvY9OmTTh//jyGDh2KH3/8EV26dIGbmxu8\nvLwQGBhosaynM0vHVD/t5s2bhiEe5mjQoAFWrlxpmO7YsSO2b99eZrkNGzaYNezIlLCwMBw7dgx7\n9uxB/fr1ERsbi7fffhuVK1dGSEgIwsLCzM5wd3fHzz//bJiuVasWpk2bBldXV6PlLl26hGrVqpmV\nVadOHezcudMw3axZM6Snp5dZLi0tDT4+PmZlAUCVKlWQmZlZZv6ECRMwduxYzJ49G59//rnF9gEP\nDw/8/e9/R0JCAiZNmoTOnTvj8uXLRstYcn+rXr06Dh8+/NLl/vWvf8HDw8PsPEdHRxw5csRo3rlz\n5wAAdnZ2hnm5ublwcHAwO+/p83WCg4PLvJYAkJmZaXa7fNrYsWORkJCAX3/91WLrNMXd3d1kfZ51\n4cIF6PV6s/N8fHxM7mt/+MMfEBcXhxUrVmD8+PEWa592dnaYM2eOYUhtcHAwDh48aLSMpbKqVauG\nQ4cOGaZL2+jZs2eNlsvMzDQMgTWHq6ur0edr6d/Xr183Wu7f//63Rfa7UvPmzUN4eLjR+/WboNfr\njS7yERgYiIiIiDL7dG5uLtzc3N5oWegVlXdvjagiGjhwoHh6esrOnTulpKRELl++LK1atZI6deqI\niEh+fr6sX79efH19ZfDgwWZlPfsL8LMuX74s69atk2nTpsmoUaPMyirN0+v10rx5cxk+fLiEh4eL\nv7+/3Lp1S0RECgsLZdOmTVKlShUZPny42XnJyclSqVIl6d69uyQmJkpKSopUr15dhgwZIuvWrZM1\na9YYhsx99913Zue96PV89OiR7Nu3T+Li4iQiIkK6dOlidl5UVJQ4OzvLwoULTR4BzM/Pl7/97W/i\n5uYmEyZMMCvru+++E41GI6NHj5ZTp07J0aNHpUaNGjJr1iw5fPiw7N+/X8aMGSNarVYWL15sVpaI\nyKRJk8TV1VUSEhLk2rVrRs89fvxYBgwYIIqiyHvvvScajcbsvKfduXNHhg4dKnq9XhYsWCCFhYWi\nKIocOXLEYhlfffWVaLVaGTVqlOzcuVN+/vlnuXXrlmRnZ8vFixclKSlJRo0aJRqNRj777DOz8yIj\nI8XBwUGWLl0qWVlZsm/fPnn77bcNw+Bu3Lgh8+fPFzc3Nxk/frxZWYqiiKIoUq1aNQkLC5NWrVpJ\nlSpV5NKlSyLy5CjewoULRa/Xy8SJE82tWhk//vijzJ071zB97Ngx+cMf/mCx7RcdHS06nU7mzZsn\nmZmZRkMpi4uL5cKFCzJv3jyxs7OzSP0+++wzsbe3l6lTp8rx48fLPP/pp58ajmBbel8oKiqS6Oho\ncXBwkMjISMORH0u9lgsWLBAbGxuJiIiQP//5z+Li4iLdunUTd3d3Wb9+vVy7dk3+8Y9/iJubW5mh\nea9j0qRJotfrZdq0aTJ//nzx9fWVd999V2rWrGk4Wpaeni5vvfWWRT7z1DZy5Ejx9vaWTZs2ycOH\nD00uk5qaKr6+vjJs2DCVS0emsLNE9BpycnKkYcOGoiiK2NjYiKIo4uXlJf/6179EROTbb78VRVHk\ngw8+MHuI3Ms6S5aWkZEhy5cvlzFjxki7du3Ew8NDFEUxDMOIj48XRVGkZcuWkpuba5HMH3/8UVq1\naiUajcbwJe7pR40aNcoMu3pdar+ehYWFMmrUKLG1tTX5JSohIUEURZHevXvLg/rrGj4AAAhMSURB\nVAcPzM77xz/+IT4+PobXrrR9lj50Op3MmjXL7BwRkQcPHkhERIQoimLyS0tJSYmMHTvWkP0mpKSk\niJ+fnwQHB1u8syTyZF/29fU12S4VRZG33npL4uPjLZJ1//596dy5s9H669WrZxgaunr1anFycpLx\n48c/90vWq/qf//kfSUlJkYULF8rgwYOlSZMm4uDgYBhatWzZMlEURfr162eRdvm0zZs3i42NjbRr\n184w79ixY/Luu++WGUpqjunTp4terze8lvb29qLT6QzvMzqdTj755BMpLi42O6ukpESmTZsmzs7O\nZc47K/X555+LnZ3dG9sXzpw5Iy1atDDs/5baFx4/fiwLFiyQoKAgeeutt2TSpElSXFws/fr1M2qr\nnTp1koKCArPzHj58KJGRkeLk5CQ2NjbSv39/uXv3rrRq1croPS0oKMiiQ9DVcufOHenSpYsoiiKH\nDh0q8/zy5ctFURRp3ry5xT5jyTy8Gh7RayoqKsKWLVtw/vx5+Pj4GIbDAcDt27dRWFho1lXwSu3d\nuxdNmjQxXMlp//79+OGHHzBx4kQAT64cNH/+fIwfPx7BwcFm55ly48YNuLm5wd7eHufPn8e1a9fQ\ntm1baDSWHcmbk5ODpUuXQkTg5+cHvV4Pd3d3LF26FH/5y18sUr9vv/0W3bp1s+jwjVdx9+5d6PV6\npKenG22/AwcOYP78+YiKirLY9hMRHDlyBCdPnkROTg6Kioqg1+tRp04dtGnTxuKX8c7Ozsb9+/dR\nq1Ytk88fPXoUiYmJZl/h7HkePHiAqKgobN68GYmJiQgKCrLo+kUEP//8M7777jvY2NigZs2acHFx\ngYeHBxYtWoSPP/7YovvekSNHcP78ebz11lvYs2cPpkyZAuBJW1myZInF9oWn7d+/H/v27cPEiROh\n0Wiwf/9+xMfHv5Gs3/3ud2jatCmWLl1a5rlhw4bh5MmTJoe0vY78/Hykp6fj/PnzuHfvHkQELi4u\n8Pf3R4sWLSwyBO9pJSUlyM/Px+nTp8u8T8fFxWHkyJG4ePEiIiIiLJpb+rkwYcIELF68GFOnTkW3\nbt3eWFsprVtGRgaSkpKQnJyMuLg4i2aJCIqLi1GpUiUAT24PsHnzZly4cAF+fn7o1asXbG1tLZan\ntjNnzqB27dpGQ2yBJ1fLO3/+PDp16gStVltOpSMj5dhRI6LfSK1fZMuLqfodP37cqutnTdvPmpVu\nu/bt2xvmvcm2qWZbMVW3N9kuHRwcnnsFyqSkJItcLKM8qb2fl0dbsab3MCcnJ8NDr9e/8OHk5FTe\nxaVywCNLRBWImr/IlgfWr2LXz5qpve3UzFO7brVr18aQIUMwadKkMs/FxcVhyZIlr3Rxhv9UbCsV\n6z1M7XuAUQVU3r01Inp11v6LLOtXsetnzdTedmrmqV232bNni52dnURHR8uJEyfk3//+t5w8eVJm\nz54tOp1OZsyYYdE8tbGtVDxq3gOMKh6b8u6sEVVET5/zIS85OKsoCu7du2eR3KpVq+LAgQNo165d\nmeeOHTtmkfNwyqtuAOtnbv3Urpu15z1NjbZZXnlq123ChAm4efMmpk2bZjgfCwBsbGwwYsQITJ48\n2ewMtpU3k2et79EtWrTAzJkzMXXqVAwcONDi53U+rTzbJr0edpaIXsPq1at/02F7SxkyZAhmzpwJ\nEUH37t3h5eWFnJwcJCYmIjo62nAysTnKq24A62du/dSum7XnPU2NtlleeWrXTavVYvHixZg+fToO\nHjyIvLw8uLi4ICQkBF5eXhbJYFupuG2lvLbd2LFjERAQgF9//fWNdpbKs23Sa1L7UBaRtSiPw/bF\nxcUyevRo0Wq1RpdsrVSpkowePdpidx4vryEJrJ/59VO7btaeV0qttlkeeWrXTS1sKxW3rZTnsLg3\nfQ8wEQ77q2h4gQciM8ybNw8xMTHIysp6o79EPSsvL++N/SJbqrzqBrB+5lK7btae9zQ12mZ55ald\nNzWwrVTctlIe2+77779H79690bp1a+zZswfAk8u+Dxs2DKdOncKOHTvQtm1bi2SVZ9uk34adJSIz\nPHr0CNu3b0dISAi8vb3LuzgWZc11A6y7fmrXzdrzqOJiW6m4ymPbqXm1P7bNisOyd5Qk+v+Mra0t\nevbsiUuXLiEmJsYw//jx4xgwYACOHj1ajqUzjzXXDbDu+qldN2vPo4qLbaXiKo9td/78efz+9783\n+Vzfvn1x6tQpi2WxbVYc7CwRmen7779H27ZtsXv3bqP558+fR8uWLbF3797yKZgFWHPdAOuun9p1\ns/Y8qrjYVioutbdd6dX+THkTVzJk26wgyveUKaKKr3HjxjJ8+HCTz3300UfStGlTlUtkOdZcNxHr\nrp/adbP2PKq42FYqLrW3ndr3AGPbrBjYWSIyk7XepE/EuusmYt31s+YbY5ZHHlVcbCsVl9rbTu0r\nGbJtVgwchkdkJrUP26vJmusGWHf91K6btedRxcW2UnGpve1K7wGWnZ2Nbdu2YdWqVdiyZQuuXbuG\nxYsXQ6Ox7Ndmts2KQTt9+vTp5V0Ioors/v37mDlzJhRFgaurK0QEly5dwvLlyzFz5kxERkYiNDS0\nvIv5Wqy5boB110/tull7HlVcbCsVV3ltO51OB39/fzRs2BABAQFwdHS0eAbAtllhlNsxLSIrYa03\ndBSx7rqJWHf9rPnGmOWRRxUX20rFZe3bztrrZy14nyUiC7HGGzqWsua6AdZdP2u+MWZ55FHFxbZS\ncVn7trP2+lV07CwRERERERGZwAs8EBERERERmcDOEhERERERkQnsLBEREREREZnAzhIREREREZEJ\n7CwRERERERGZ8H8B8YFMu6c1dJwAAAAASUVORK5CYII=\n", "text": [ "" ] } ], "prompt_number": 22 }, { "cell_type": "markdown", "metadata": {}, "source": [ "The above looks pretty good, but there are a few stylistic changes we might want to make. For instance, you might want the color bar to be \"centered\" on zero (not a good choice for this data, but instructive for the tutorial). You might also want to change the ticks on the color bar so they aren't overlapping and move the scale closer to the heatmap. Let's try it out.\n", "\n", "To force `imshow` to use a symmetric scale, we need to define an instance of `matplotlib.colors.Normalize` or provide imshow with the `vmin` and `vmax` parameters. However, defining `vmin` and `vmax` will rescale our data so that the minimum is `vmin` and the maximum is `vmax`, so we'll define a norm. This might be a little more useful because you can use the norm elsewhere. \n", "\n", "Changing the size of the colorbar ticks isn't too hard, but it's worth pointing out that when you draw a colorbar, you are actually creating an `axis` object and drawing the colorbar onto the new axis. Thus, while a call to `colorbar` creates a `matplotlib.colorbar.Colorbar` instance, you also create an axis. Here, however, I've explicitly told `colorbar` to use an axis that I've already created with `gridspec`:\n", "\n", " cb = fig.colorbar(axi,scale_cbAX)\n", "\n", "The second option, `scale_cbAX`, sets the `cax` option as the axis I've made for the colorbar. `colorbar` also has an `ax` option which specifies an axis to steal space from and make a new colorbar axis. You can access the colobar axis with `cb.ax`. Since I told `colorbar` to use `scale_cbAX`, `scale_cbAX` and `cb.ax` are the same." ] }, { "cell_type": "code", "collapsed": false, "input": [ "# make norm\n", "vmin = np.floor(testDF.min().min())\n", "vmax = np.ceil(testDF.max().max())\n", "vmax = max([vmax,abs(vmin)]) # choose larger of vmin and vmax\n", "vmin = vmax * -1\n", "my_norm = mpl.colors.Normalize(vmin, vmax)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 23 }, { "cell_type": "code", "collapsed": false, "input": [ "# heatmap with row names\n", "fig = plt.figure(figsize=(12,8))\n", "heatmapGS = gridspec.GridSpec(2,2,wspace=0.0,hspace=0.0,width_ratios=[0.25,1],height_ratios=[0.25,1])\n", "\n", "### col dendrogram ###\n", "col_denAX = fig.add_subplot(heatmapGS[0,1])\n", "col_denD = sch.dendrogram(col_clusters,color_threshold=np.inf)\n", "clean_axis(col_denAX)\n", "\n", "### row dendrogram ###\n", "row_denAX = fig.add_subplot(heatmapGS[1,0])\n", "row_denD = sch.dendrogram(row_clusters,color_threshold=np.inf,orientation='right')\n", "clean_axis(row_denAX)\n", "\n", "### heatmap ####\n", "heatmapAX = fig.add_subplot(heatmapGS[1,1])\n", "axi = heatmapAX.imshow(testDF.ix[row_denD['leaves'],col_denD['leaves']],interpolation='nearest',aspect='auto',origin='lower',norm=my_norm,cmap=cm.RdBu)\n", "clean_axis(heatmapAX)\n", "\n", "## row labels ##\n", "heatmapAX.set_yticks(arange(testDF.shape[0]))\n", "heatmapAX.yaxis.set_ticks_position('right')\n", "heatmapAX.set_yticklabels(testDF.index[row_denD['leaves']])\n", "\n", "## col labels ##\n", "heatmapAX.set_xticks(arange(testDF.shape[1]))\n", "xlabelsL = heatmapAX.set_xticklabels(testDF.columns[col_denD['leaves']])\n", "# rotate labels 90 degrees\n", "for label in xlabelsL:\n", " label.set_rotation(90)\n", "# remove the tick lines\n", "for l in heatmapAX.get_xticklines() + heatmapAX.get_yticklines(): \n", " l.set_markersize(0)\n", "\n", "### scale colorbar ###\n", "scale_cbGSSS = gridspec.GridSpecFromSubplotSpec(1,2,subplot_spec=heatmapGS[0,0],wspace=0.0,hspace=0.0)\n", "scale_cbAX = fig.add_subplot(scale_cbGSSS[0,1]) # colorbar for scale in upper left corner\n", "cb = fig.colorbar(axi,scale_cbAX) # note that we could pass the norm explicitly with norm=my_norm\n", "cb.set_label('Measurements')\n", "cb.ax.yaxis.set_ticks_position('left') # move ticks to left side of colorbar to avoid problems with tight_layout\n", "cb.ax.yaxis.set_label_position('left') # move label to left side of colorbar to avoid problems with tight_layout\n", "cb.outline.set_linewidth(0)\n", "# make colorbar labels smaller\n", "tickL = cb.ax.yaxis.get_ticklabels()\n", "for t in tickL:\n", " t.set_fontsize(t.get_fontsize() - 3)\n", "\n", "fig.tight_layout()" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "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\nQydOnKDffvuNTp48SVFRUaRSqejTTz81Sa5UzO34mst5Uop+xdjziStMjD3G2tq6ys5UU1NTRX0s\ncU1Qndtra2urH9Rq9RMHW1tb0XIfZQ7HV6r9bM7H19xytVotBQcHk1wuN7i/xcLCgoKDg0Xt04bL\nlfnkSqG6+xWrCeWZ/X3iPbeXMRHUhDbF9erVw6FDh4y2zc/JyRH1sabmtr0JCQkYOXIkLCwsEBwc\n/MR5TfXYeHM4vlLtZ3M7vuacK5fLsWTJEsycOROHDx9GcXEx7O3t4e/vDxcXF1GzuFzV7lypPwen\nTJmCpk2b4vbt29VyP2lNKM/s7+MKE6tRasKJZMyYMZg1axaICEFBQXBxcUFhYSG2bduGOXPm6G/4\nFYO5bW+/fv2QkpKCrl27wsnJCZMnTxZt2X+VORxfqfazuR1fc86toNFoEBgYaNIMLle1O1fqz8GK\nfsUyMjKwfv16kz/sqSaUZ/YPSHJdi7EnkLpNcXU2NSEyv+0lqv4mEI8yp+Mr1X42p+NrrrlS4HJV\ne3Ol/hyU4iEXUpZn9vfxY8VZjTR//nzExMQgLy9PskcuFxcXm7ypSQVz29779+8jOTkZ/v7+ovYY\n/3eYw/GVaj+b2/E159zqxOWqdudK+TnYtm1btG/fHsuXL6/02jvvvIOTJ08iMzNT1MyaUJ7Z3yB1\njY0xY8rKymjr1q107do1qVelWpjb9lY4ePAgzZ07Vz+ek5NDI0aMMEmnjFKS+vhKtZ/N5fiy6sXl\nqnaS8jwp5UMuuDw/H0zTEyZjz6iiTfHFixcRExOjn378+HGMHDkS2dnZEq6d+MxtewHg+++/R+fO\nnbFr1y6D6bm5uejYsSP27t0rzYqZgJTHV6r9bE7Hl1UfLle1l5TnyYqHXBhjyodrcHl+jkhdY2Os\nKubQcd6jzG17zaWfjwpSHV/ux4XVJlyuajepzpNS9SvG5fn5wRUmVmOZ24nE3LbXnPr5IJLu+HI/\nLqw24XJVu0l1npTq4Rpcnp8f3CSP1Vi5ubkYOnSo0deGDBmCU6dOVfMamZa5ba9UTSCkItXxlWo/\nm9vxZdWDy1XtJtV5sqJfsevXr+OHH37Ahg0bkJSUhKtXr2LJkiWQyUzzdZnL8/OD+2FiNZZUHfZJ\nxdy2V+r+Y6qbVMfXHPpxYeaDy1XtJvXnYHX0K/YoLs/PEUmvbzH2BFK1KZaKuW2vOfUfQyTd8TWX\nflyYeeByVbvx5yCX55qK+2FiNZZOp8PUqVMRHx+PBw8e6KcrFApMmDABixcvNu202vEAAAB5SURB\nVNllcimY2/ZWMIf+YwDpj6859OPCzAeXq9pJ6vOkVLg813xcYWI1nrmdSMxte80NH1/GGHsyPk+y\nmoYrTIwxxhhjjDFWhdp3XZMxxhhjjDHGRMIVJsYYY4wxxhirAleYGGOMMcYYY6wKXGFijDHGGGOM\nsSr8P0FxDgVcMUwFAAAAAElFTkSuQmCC\n", "text": [ "" ] } ], "prompt_number": 24 }, { "cell_type": "markdown", "metadata": {}, "source": [ "In some instances, you may notice that a scale colorbar looks weird (discrete rectangles with space between them rather than continuous color distribution) when you save to PDF (maybe other formats too?). I've run into this several times and have been able to solve it with\n", "\n", " cb.solids.set_edgecolor(\"face\")\n", " \n", "See [this Stack Overflow post](http://stackoverflow.com/questions/15003353/why-does-my-colorbar-have-lines-in-it) for more information." ] }, { "cell_type": "heading", "level": 3, "metadata": {}, "source": [ "Sample colorbars" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We might also want to add some colorbars that label some discrete covariates for our samples or columns (e.g. categorical data). First, we'll assign colors randomly to samples and columns, but you could also imagine that these labels correspond to labels for mutant and wild-type samples, labels for genes from different pathways, etc." ] }, { "cell_type": "code", "collapsed": false, "input": [ "# run dendrogram without color_threshold=np.inf to define some clusters\n", "row_cbSE = pd.Series([brewer2mpl.get_map('Set1','Qualitative',3).mpl_colors[0]] * (testDF.shape[0] / 2) + \\\n", " [brewer2mpl.get_map('Set1','Qualitative',3).mpl_colors[1]] * (testDF.shape[0] / 2 + testDF.shape[0] % 2))\n", "col_cbSE = pd.Series([brewer2mpl.get_map('Set2','Qualitative',3).mpl_colors[0]] * (testDF.shape[1] / 2) + \\\n", " [brewer2mpl.get_map('Set2','Qualitative',3).mpl_colors[1]] * (testDF.shape[1] / 2 + testDF.shape[1] % 2))" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 25 }, { "cell_type": "code", "collapsed": false, "input": [ "# heatmap with row names\n", "fig = plt.figure(figsize=(12,8))\n", "heatmapGS = gridspec.GridSpec(2,2,wspace=0.0,hspace=0.0,width_ratios=[0.25,1],height_ratios=[0.25,1])\n", "\n", "### col dendrogram ###\n", "colGSSS = gridspec.GridSpecFromSubplotSpec(2,1,subplot_spec=heatmapGS[0,1],wspace=0.0,hspace=0.0,height_ratios=[1,0.25])\n", "col_denAX = fig.add_subplot(colGSSS[0,0])\n", "col_denD = sch.dendrogram(col_clusters,color_threshold=np.inf)\n", "clean_axis(col_denAX)\n", "\n", "### col colorbar ###\n", "col_cbAX = fig.add_subplot(colGSSS[1,0])\n", "col_axi = col_cbAX.imshow([list(col_cbSE.ix[col_denD['leaves']])],interpolation='nearest',aspect='auto',origin='lower')\n", "clean_axis(col_cbAX)\n", "\n", "### row dendrogram ###\n", "rowGSSS = gridspec.GridSpecFromSubplotSpec(1,2,subplot_spec=heatmapGS[1,0],wspace=0.0,hspace=0.0,width_ratios=[1,0.25])\n", "row_denAX = fig.add_subplot(rowGSSS[0,0])\n", "row_denD = sch.dendrogram(row_clusters,color_threshold=np.inf,orientation='right')\n", "clean_axis(row_denAX)\n", "\n", "### row colorbar ###\n", "row_cbAX = fig.add_subplot(rowGSSS[0,1])\n", "row_axi = row_cbAX.imshow([ [x] for x in row_cbSE.ix[row_denD['leaves']].values ],interpolation='nearest',aspect='auto',origin='lower')\n", "clean_axis(row_cbAX)\n", "\n", "### heatmap ####\n", "heatmapAX = fig.add_subplot(heatmapGS[1,1])\n", "axi = heatmapAX.imshow(testDF.ix[row_denD['leaves'],col_denD['leaves']],interpolation='nearest',aspect='auto',origin='lower',norm=my_norm,cmap=cm.RdBu)\n", "clean_axis(heatmapAX)\n", "\n", "## row labels ##\n", "heatmapAX.set_yticks(arange(testDF.shape[0]))\n", "heatmapAX.yaxis.set_ticks_position('right')\n", "heatmapAX.set_yticklabels(testDF.index[row_denD['leaves']])\n", "\n", "## col labels ##\n", "heatmapAX.set_xticks(arange(testDF.shape[1]))\n", "xlabelsL = heatmapAX.set_xticklabels(testDF.columns[col_denD['leaves']])\n", "# rotate labels 90 degrees\n", "for label in xlabelsL:\n", " label.set_rotation(90)\n", "# remove the tick lines\n", "for l in heatmapAX.get_xticklines() + heatmapAX.get_yticklines(): \n", " l.set_markersize(0)\n", "\n", "### scale colorbar ###\n", "scale_cbGSSS = gridspec.GridSpecFromSubplotSpec(1,2,subplot_spec=heatmapGS[0,0],wspace=0.0,hspace=0.0)\n", "scale_cbAX = fig.add_subplot(scale_cbGSSS[0,1]) # colorbar for scale in upper left corner\n", "cb = fig.colorbar(axi,scale_cbAX) # note that we could pass the norm explicitly with norm=my_norm\n", "cb.set_label('Measurements')\n", "cb.ax.yaxis.set_ticks_position('left') # move ticks to left side of colorbar to avoid problems with tight_layout\n", "cb.ax.yaxis.set_label_position('left') # move label to left side of colorbar to avoid problems with tight_layout\n", "cb.outline.set_linewidth(0)\n", "# make colorbar labels smaller\n", "tickL = cb.ax.yaxis.get_ticklabels()\n", "for t in tickL:\n", " t.set_fontsize(t.get_fontsize() - 3)\n", "\n", "fig.tight_layout()" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "iVBORw0KGgoAAAANSUhEUgAAA0wAAAIqCAYAAAAXR8pEAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3X1cjff/B/DXOaWcUnSk0c2KSaEaNQmJhFCMJdvYlLst\n29zFNlY2ZKnla2aYzE0bNo1kyV1KLUxizIYyX+SuUasQ0s3p/P7w2/nu7HRyU6frdHo9H4/r8XB9\nrs91vd/n0HHefT7X5xLJ5XI5iIiIiIiISIVY6ASIiIiIiIi0FQsmIiIiIiIiNVgwERERERERqcGC\niYiIiIiISA0WTERERERERGqwYCIiIiIiIlKDBdO/ZGdnw8rKSrF/4sQJ6OnpwcTERLFFRUUJmCER\nERERETUUfaET0BZyuRwbN25EaGgoDAwMFO2nTp2Cn58fkpKSBMyOiIiIiIiEwBGm/xcZGYkVK1Yg\nPDwc/3yW76lTp/Diiy8KmBkREREREQmFBdP/mzRpEn799Ve89NJLSu2nTp3CkSNH0KFDB9ja2uL9\n999HRUWFQFkSEREREVFDYsH0/9q2bVtju4WFBUaMGIGzZ88iIyMD6enp+OSTTxo4OyIiIiIiEoJI\n/s/5Z4SMjAwEBgaisLCwxuM7duzARx99hNzcXKV2/Y5DIb93U7EvatEWYpN2Gs21sao4tUHoFIiI\niIiInkijW/ShsrISd+/eRevWrTUeq6SkBBEREVi0aBFatGgBACgrK4NEIlHpq9fSGmhprfGciIiI\niIio4Wh1wVReXo6FCxeiS5cueOONN5CSkoJXX30Vd+7cQd++fZGQkABzc3ONxW/ZsiV27doFsViM\nqKgo5OXlITIyEm+//bZKX7G+QQ1XICIiIiKixkyrC6Z58+ZhzZo1WLVqFQBg6tSpsLa2xvLlyxEZ\nGYn3338fGzdurPe4IpEIACAWi7F792689957MDc3h5GREUJCQjB9+nSVc/QNVUediIiIiIiocdPq\ngmnbtm1YtmwZJkyYgOzsbFy+fBnff/89Xn31VRgbGyMkJKTeY/bv3x8FBQWK/U6dOiElJeWx53GE\nibSdVCpFSUmJ0GkQEdWJmZkZiouLhU6DiJoQrS6Y/vrrL3Tt2hUAsHv3bujr62PYsGEAHn1glpWV\n1XvM7OxsjBo1Cjdu3AAAXL9+He+99x4OHz6MZs2aITAwEEuXLlV6uC0A6Bk0r/dciOpTSUkJuMYL\nETV2f88CISJqKFpdMHXo0AGHDx9Gz5498cMPP8DT0xMmJiYAgPj4eNjb29dbLLlcjo0bNyI0NFSp\nGHrjjTfg4uKC/Px8lJSUYOTIkYiIiEBERITS+eJmHGEiIiIiItI1Wl0wffDBB5g0aRKioqJw7949\nxMTEAAA8PDxw/PhxbN68ud5iRUZGYtu2bQgPD0d0dDQAoKKiAiYmJggPD4eBgQGee+45jBs3DomJ\niSrn6xvwHiYiIiIiIl2j1QVTUFAQ2rdvj59//hl9+/ZFnz59AAADBw7EkiVL4O3tXW+xJk2ahLCw\nMGRkZCjaDAwMsGvXLqV+SUlJ6Natm8r5eiyYiIgEwfvzmh5Oy2s6eM8aaQOtLpi+/fZbDBs2DF5e\nXkrtixcvxp9//omlS5dizpw59RKrbdu2tR6Xy+WYMWMG/vjjD3z33Xcqx7noAxGRMHh/HpHuYnFM\n2kCrC6bg4GBkZWXV+Kyl48ePIywsrN4KptqUlZXhzTffxNmzZ/HTTz/VmI8elxUnIiIiItI5Wlcw\n+fj4IDs7W7Hv7e0NsVis0u/Bgwdwc3PTeD7FxcUYMmQITE1NcfToUbRq1arGfhUFuSjLP6vYl1h2\nhcTSSeP5Uf1pCtN6dPk3dZy2QURERJqgdQXTihUrsG3bNgDAokWLMHbsWFhZWSn10dPTQ6tWrfD6\n669rNBe5XI5XXnkF7dq1Q0JCAvT11b9dJrYvwsT2RY3mQ5rFaT2Nmy4Xg0RERCQcrSuYunbtqnj2\nEgBMmTJFpWDStL+/eB09ehSZmZmQSCQwMzNTHHdzc1NaHAIAxPqqo2BERERERNS4ieSN4FfqJSUl\nuH//Pqqrq1WOPf/88wJkpMr5g91Cp9Bo/P6Zn9Ap1EgkEnGEqRHj31/Txb97It3Fn2/SBlo3wvRP\nubm5CA4OVrqn6Z9EIhFkMpnG80hLS8OcOXNw8eJFODk5Yfny5XB3d1fqo6fP6UBERERERLpGqwum\nd955Bzdu3MAXX3wBKyurGhd/0LS8vDy8/PLLWLFiBYKDg5GYmIghQ4YgJycHzz33nKKffjO9Bs+N\niIiIiIg0S6sLpqysLGzevBmvvPKKYDns3bsXLi4umDhxIgAgICBAsTDFe++9p+inp8d7mIiIiIiI\ndI1WF0xt2rSpdWW6hlBdXQ2JRPkZSyKRCBcuXFBq0zfgCBMRERERka7R6mGR0NBQLFq0CLdu3RIs\nB19fXxw7dgwJCQmoqqrCzp07kZWVhfLycqV+Yj0RtyfciIiIqOFJpVKIRKJGtQEQPIen3aRSqcB/\n01TftHqE6fDhw7h48SKsrKxgZ2enGOn5e8UUkUiE3377TaM5dOzYEfHx8fjoo48QEhICPz8/vPzy\nyyoPsOU9TERERKTN+LzBhsHnAuoerS6YjI2N8fLLL6s93hD/IO/du4fnn38ep0+fVrS5uLio3Fd1\n9/JplFw4pdg3s+8OM/vuGs+PiIiIiIg0R6sLpri4OKFTwF9//YXevXvj0KFD6NKlC1avXo3i4mKM\nGDFCqZ9l15dg2fUlgbIkIiIiIiJN0OqCCQAqKyuxdetWpKWl4ebNm1ixYgWOHDkCNzc3uLi4aDy+\nnZ0d1qxZg1deeQVFRUVwc3PDgQMHVBaCMNDX6tvBiIiIiIjoGWh1wVRUVITBgwfjt99+Q+fOnXHm\nzBmUlpbixx9/xLRp05CamgoPDw+N5zFu3DiMGzeu1j5GXCWPCMCjm4pLSkoEiS3EvHEzMzMUFxc3\neFwiIiJqGFpdMM2aNQt3797FhQsXYG1tDQMDA4hEIsTHx8PPzw9hYWFIS0sTOk0AgMRAq99KogbT\n1G4q5s29REREuk2rv+Xv2rULa9asgZ2dHaqqqhTthoaGCA0Nxeuvv94geVy/fh0hISE4dOgQTE1N\n8cEHH2DatGlKfQz44FoiIiIiIp2j1QWTTCZD8+bNazxWVVXVIL/FlsvlGDlyJHx8fPDjjz/i/Pnz\n6Nu3L3r06KE0HZBT8oioKRByymVttGmkj9M0iYh0i1YXTAMGDMCiRYvQt29ftGzZUtFeUVGBL774\nAv369dN4DseOHcOff/6JqKgoiEQidOnSBUePHoW5ublSPy76QERNQVObcvkstKl4IyKiutPqgmnp\n0qXw9PREx44dFaM5H3/8MXJycnD79m0cPnxY4zmcPHkSXbt2xfvvv48tW7bA1NQUYWFhGD9+vFI/\nCUeYiIiIiIh0jlYXTB07dsTp06exfPlypKen44UXXsCtW7cwYsQIhIaGwsbGRuM5FBcXIz09HT4+\nPrh27RqOHz+OIUOGoEOHDvD09FT04whTw9D0dCBN/GaY03OIhCXENMKGHGXiZwwRkWZpdcEEAM89\n9xyWLFkiWHxDQ0NIpVJ8+OGHAIBevXohICAAP/74o1LBdP3McVw4maXYt3f1gL2r5pc8b2oa43Qg\nTs/RfnX9Qv2sf8f8otswGuPnxtPgZwxR/eP/C/RPWl8wZWVlITs7G7dv367x+Mcff6zR+I6Ojqiq\nqkJ1dTXE4kejSP9cse9vXV7qjS4v9dZoLkSkGUJ9oeYXXSIi7cT/F+iftLpgioqKwkcffQQ9PT20\naNFC6ZhcLodIJNJ4wTRo0CAYGRlh4cKF+Pjjj3Hs2DHs3LkTqampSv2ac0oeEREREZHO0eqCacWK\nFQgODsaaNWtgYGAgSA7NmzdHRkYG3nvvPVhYWKBly5b48ssv4e7urtSvmZi/ESAiIiIi0jVaXTCV\nlZXhjTfeEKxY+tsLL7yAvXv31trHkCNMREREREQ6R6u/5b/55pvYtGmT0Gnghx9+QOfOnWFiYgIn\nJyf8+OOPKn2a6Ym5PeFGRERERNRYiORavHTQ/fv34erqCrlcDldXVxgZGan02bBhg0Zz+OOPP+Dq\n6orU1FR4eHggLS0Nfn5+yM/Ph1QqVfTbf75Ao3noEl8Hi2c+VyQSNbrVrhpjznXRGF+vUDnzvWoY\njTHnp6Hrr4/qD/+tPDn+v0D/pNVT8t5//31cuHABbdu2xfnz55WO/b3og6Z16tQJBQUFMDIyQlVV\nFW7evAlTU1OVaYLN9HgPExERET2eEM8G+5sQq7BxqWxq7LS6YNqyZQsWLFig8ZXwHsfIyAiXL1+G\nvb095HI51qxZo7JqH1fJI13C508Q1V1DfiluqC/B/BmtH7r+bLB/41LZ1NhpdcFkaGio9HBYIT3/\n/PMoLy9HZmYmRowYgY4dO8Lb21txvJmYBRPpDj5/gqjudPFLMX9Giagp0up7mD788EPk5ubihx9+\ngKGhodDpKAQHB6Nly5b44osvFG3rtyfjxNHDiv2XenmiR+++QqSn9VwsWz7zuY1xbi9zZlxti1sX\nzFn742qSLr4mITS197Exvl5+btA/afUIU0VFBTIyMmBlZQVnZ2eYmJgojv19D1NSUpJGc9izZw8+\n//xzHDhwQNFWXl4OMzMzpX69PL3Qy9NLo7mQcDhFjYgaC01PBdTEKBM/64hIm2l1wXTq1Cl0794d\nwKMC6e7du0rHG2JqgJubG06cOIHNmzdj7Nix2LdvH/bu3YuFCxcq9eNq2bqNU9SIqLFojFMB+VlH\nRNpMq6fkaYvDhw9j1qxZ+OOPP+Dg4ICYmBj069dPqc+lv0oFyq7x6WBu8vhOajS1IXLGZVxtw5wZ\nVxMaY851wder/fjzS//UKAqmw4cPIy0tDX/++SfmzZuHs2fPonv37mjXrp3QqSlcKbondAqNhm3r\nFo/vpEZT+wBjXMbVNsyZcTWhMeZcF3y92o8/v/RPWj0lr6ysDGPGjMHu3bthYmKCe/fuYcqUKVix\nYgVOnTqFjIwMdO7cWeN5nDp1Cm+//TbOnTsHe3t7rFmzBj179lTqoy/mdAIiIiIiIl2j1XfefPjh\nh8jOzkZmZiaKiooUCz1s2rQJVlZWmDt3rsZzePjwIYYPH45Jkybhzp07mD59OkaMGIH79+8r9dMT\nc3vSjYiEJZVKIRKJnmkD8MznSqVSgV85ERHR09PqKXkWFhaIjo7GhAkTUFVVBQMDA5w4cQKurq5I\nTEzE5MmTUVRUpNEc9u7di5CQEFy5ckXR5uLigvnz5yMwMFDRVlT6QKN56JLWJkbPfG5TGyJnXMZl\nXMZtLHHrojHmXBd8vdqPP7/0T1o9Je/+/ft47rnnajzWvHlzPHz4UOM55ObmokuXLkptDg4OyM3N\nVWrT44w8IiIiIiKdo9UFk4eHB5YvX47BgwerHNu4cSPc3d01nsP9+/dhZKQ8ImJkZIQHD5RHlHgP\nExERERGR7tHqgumzzz6Dl5cXOnfujIEDBwIAvvrqK+Tk5ODEiRM4ePCgxnMwNjZGWVmZUtuDBw+U\nHqILAEcOH0JmZqZi38vLC15efJAtERE1DXzANxHpKq0umNzc3HD8+HFEREQgMTERenp62LlzJzw9\nPfHzzz/D1dVV4zl07twZK1euVGo7f/48xo0bp9TWv08v9O/TS/lkWaWm02ukmgudABER1TM+4JuI\ndJVWF0zbtm1Dv3798P333wuWw4ABA1BeXo6VK1fi7bffxqZNm1BQUABfX1/ljtUyYRIkIiIi0jCO\nIFJTptWr5LVo0QLffvstXnnlFUHz+P333xESEoLff/8d9vb2+Oqrr1Tun6q4XSBQdo2PQSuLZz63\nqa1aw7iMy7iMy7jaGbcumDPjaltcqp1WjzDZ2tpqxW8VnJ2dceTIkdo7VVc1TDJERERERNRgtLpg\neuONNzBjxgzs3r0bDg4OsLBQHZkIDQ3VaA7l5eWYNWsWtm/fjoqKCvTv3x+rV6+GpaWlUj9RVYVG\n8yAiIiIiooan1VPyxGLxY/tUV1drNIfw8HD8/PPP2LFjB4yNjRESEoLbt28jISFBqV/Vnxc0mocu\n0W9n/8znNrUhcsZlXMZlXMbVzrh1vafnWQl1T09T+/ttanGpdlo9wqTpYuhJLFq0CBUVFWjevDmK\niopw584dtGnTRrUjp+QRERE1GVwVkKjp0OqCqaHIZDKUlpaqtIvFYpiamqJ58+ZYuHAhFi1aBCsr\nK/z0008qfTklj4iIiIhI92j1lLz27dvXODT5d5tIJMKlS5fqHCc1NRWDBw9Wabezs1Ncv7y8HHK5\nHHPnzsWePXtw7tw56Ov/r96UXT5Z5zyaCr32z/78rKY2RM64jMu4jMu4jMu4jEvC0uqCaebMmSpt\n9+7dw88//4zCwkLMmzdP44s+/FtlZSVatGiBY8eOoVu3bor2g1tW46dj/yua+vV0Rf+emn+wbmMk\n7ujxzOc2tQ8wxmVcxmVcxmVcxmVcEpZWT8lbvnx5je3V1dV47bXXcO3aNY3nMHHiRLi7uyMkJATA\no4KpuroarVq1UurXz80Z/dycldrkVZUaz4+IiIiIiDRHqwsmdcRiMd5++22MGTMGn3/+uUZj9ezZ\nEzExMRg6dCjatGmDGTNmwMvLC3Z2dkr95OVlGs2DiIiIiIgaXqMsmAAgJycHVVWaX5nu7bffRkFB\nAfr06YOKigr4+vpi27Ztqh05mkREREREpHO0+h6madOmqSyfWV1djRs3bmD37t0YO3Ys4uLihEnu\nXyqOJjy+EwEADHoFPPO5TW1OMeMyLuMyLuMyLuMyLglLq0eYdu3apVIwiUQimJqaYvbs2QgLC2uQ\nPBITEzFv3jzk5+eja9euiI2NhYuLi3InjjAREREREekcrS6Y8vLyhE4Bp06dwqRJk5CcnIzevXvj\ns88+Q2BgIM6fP6/Uj/cwERERERHpHq0umABALpfj3r17MDExgVwux/bt23H16lX4+fnB0dFR4/Fj\nY2Px1ltvoXfv3gCA0NBQDBo0SPEcKEWeHGEiIiIiItI5Wl0w/f777/Dz88P48eOxePFizJkzB59/\n/jn09fURHh6O3bt3Y8CAAXWOI5PJUFpaqtIuFotx6tQp+Pv7w8fHB7/99hu6d++OVatWqUwVlFc8\nrHMeRERERESkXbR60YehQ4fir7/+QlxcHOzs7GBhYYHXXnsNa9euxcSJE3HhwgX8/PPPdY6TmpqK\nwYMHq7Tb2tpCX18f9+/fR3JyMpycnPDJJ59g586dOHPmDPT09BR9HyQsrXMeTYVRwJxnPrep3YTJ\nuIzLuIzLuIzLuIxLwtLqgqlly5bYunUrhg4dih07dmD06NE4cuQIevXqhYMHD8Lf3x8PHjzQaA5O\nTk7w9/dHVFQUAKCqqgrGxsY4deoUunTpoui3d/4kHDp3WbHft0t7eHVpr9HcGivj18Of+dym9gHG\nuIzLuIzLuIzLuIxLwtLqKXlisRj6+o9S3LNnD6RSKXr16gUAKCkpQYsWLTSeg4ODAx4+/N90u+rq\nasjlcpV/zJ72NvC0t1Fqq67U/HOiiIiIiIhIc7S6YPLw8MDSpUtRXFyM+Ph4vPrqqwAerVy3YMEC\n9OnTR+M5BAcHY/z48Rg3bhy6deuG8PBwODg4oGvXrkr9ZA8rNJ4LERERERE1LK2eknf+/HkMHz4c\n//3vf9GpUyekpqbC2toaFhYWaNWqFfbs2YOOHTtqPI8tW7bg008/xfXr1+Hm5oZ169bhhRdeUOrz\n14rZGs9DV5hP/88zn9vUhsgZl3EZl3EZl3EZl3FJWFpdMAGPpsAVFBTAwsICYrEYwKMRJicnJzRr\n1kzg7P6nYOkMoVNoNCzmfPHM5za1DzDGZVzGZVzGZVzGZVwSllZPyQMe3cfUtm1bpbbu3bsDALKz\ns+Hu7q7R+FVVVViwYAHi4uLw8OFDjBo1CsuXL4exsbFyP07JIyIiIiLSOVpdMF2/fh0zZ87ETz/9\nhIqKClRXVyuOlZWVQS6XQyaTaTSHZcuW4bvvvsPBgwdhbW2NSZMmYeLEiYiPj1fqxwUeiIiIiIh0\nj1YXTDNmzEBaWhqCgoJw+PBhGBkZoVevXjhw4ACuX7+O5ORkjeewY8cOzJ07F506dQIAREZGolOn\nTrh79y5MTU0V/TjCRERERESke7S6YEpPT8eSJUswdepUrFq1CgkJCfjss89QXV2NoUOHIjU1FT17\n9qxzHJlMhtLSUpV2sVgMmUwGiUSiaBOJRJDJZLh06RK6deumaK+uqKxzHkREREREpF20umB68OAB\nnJycAACdO3fGqVOnADwqZN59913MnDkTYWFhdY6Tnp6OwYMHq7Tb2tpi4sSJWLp0Kfr27Qtzc3N8\n/PHHEIvFSs9mArisOBERERGRLtLqVfI6deqEjz76CMHBwbhx4wZsbGzw3//+Fx06dEBqaipGjBiB\nBw8eaDSHyspKzJs3D1u3boWRkRE++OADvPfee/j111/h6Oio6Petnyey//xLse/ezhzu7cw1mltj\nZd+ltSBx3+nhI0jc1cfTBInL19swhHq9TY1Qf7/UcJraZ0dTw8/KhqEXul7oFHSSVo8wvf7665g9\n+9HzjYKDg+Hs7IzQ0FDMnDkTkZGRcHBw0HgON27cwJw5c7B06VIAwC+//IJmzZop7mn6m2urlnBt\n1VKpraqM0/SIiIiIiBozrS6YwsPDUVRUhH379iE4OBhfffUV/P39kZSUBBMTEyQkJGg8h82bNyMj\nIwNJSUkoLS3F7NmzMXnyZMUzof4mq6xWcwUiIiIiImqstLpgatasGVauXKnY7927Ny5fvozc3Fw4\nOjqiZcuWtZxdP95//31cvHgRzz//PMRiMcaNG4eYmBiVflVlXFaciIiIiEjXaHXB9LerV6/i4MGD\nuHnzJoKCgiAWi2FoaNggsQ0NDbFx48bH9pNVavZ5UERERERE1PC0umCqrq7G9OnTsWbNGlRXV0Mk\nEmHQoEEIDw/H5cuXkZ6eDisrq3qNOWPGDBgYGCiNIv34448IDw/H1atXYWNjg8WLF2PkyJFK53GE\niYiIiIhI94gf30U4CxcuRFxcHOLi4nDr1i3I5XKIRCIsW7YMMpkMc+fOrbdYRUVFCA4OxpdffgmR\nSKRo/+OPPzB+/Hh8+eWXuHPnDj7//HO8+eabOH/+vNL5sgoZtyfciIiIiIgaC60eYdqwYQMiIyPx\nxhtvoKrqfyM4Xbt2RUREBGbNmlVvsfr27QtPT08EBATgnyutX7lyBW+99Rb69+8PABg0aBAcHBxw\n/PhxpVX6qh5yhImIiIiISNdodcFUVFSk9KyjfzI3N8fdu3ef+FoymQylpaUq7WKxGKampjh48CDa\ntm2LCRMmKB0fNGgQBg0apNi/dOkSzp49ixdffFH5+hVcJY+IiIiISNdodcHk7OyMuLg4DB48WOXY\nzp074ezs/MTXSk9Pr/E6dnZ2uHTpEtq2bfvYa+Tn52PYsGGYMGGCSmyOMBERERER6R6tLpgWL16M\noUOH4vr16/Dz8wPwaAGG//znP9i6dSt+/PHHJ77WwIEDUV397KNAp06dwvDhwzFixAisXr1a5TgX\nfSAiIiIi0j1aXTANGjQI+/fvR3h4OMLCwgAAERERePHFF7Fz5074+/s3SB779u3Da6+9hgULFmDm\nzJk19jn1sBRnKu4r9p0MjOFkYNwg+RERERERkWZoXcFUXFystN+9e3ckJyfjwYMHkMvlEIvFkEgk\nEIlEKC4uhlQqrdf4/1zwAQDOnj2LgIAAbNy4EWPGjFF73gt6RnhBYqTUViaTq+lNRERERESNgdYV\nTObm5hCJRCqFS01EIhFksvpdplokEiktK75ixQqUl5dj0qRJmDRpkqL9888/x+TJkxX7FdUsjoiI\niIiIdI3WFUzAo1EeFxcXBAYGwtra+omKp/qyceNGpf3Y2FjExsY+9jyOJhERERER6R6tK5guX76M\n7du3Y9u2bfjkk0/g4eGBwMBAjB49GlZWVhqNPWPGDBgYGCAmJkbR9t5772HdunVo1qwZgEcjUOfO\nnYO1tbXSuRxhIiIiIiLSPVpXMNna2mL27NmYPXs2rl69iu3bt2Pr1q2YPXs2evbsiTFjxtR78VRU\nVITZs2fj22+/xZw5c5SO/frrr/juu+/wyiuv1HqNMhmfw0REREREpGvEQidQm+effx6hoaE4evQo\nLl++jMDAQGzbtg12dnbo06cPli9fXi9x+vbtCwMDAwQEBChN/6uursbp06dVHlJbk4pqObcn3IiI\niIiIGgutG2FSx8bGBjNnzsSoUaPw1VdfYdmyZcjKylK7zPc/yWQylJaWqrSLxWKYmpri4MGDaNu2\nLSZMmKB0/MKFCygrK8OcOXNw5MgRWFtbIyIiQvFMqH96yEKAiIiIiEjnNIqC6fz580hISMCOHTtw\n8uRJtGvXDm+99RYCAgKe6Pz09HQMHjxYpd3Ozg6XLl1C27Ztazzv9u3b8Pb2xocffogePXogOTkZ\nY8aMwbFjx+Dk5KTUlyMnRERERES6R2sLpl9//VVRJOXk5MDGxgYBAQFYvnw5evfuDbH4yWcTDhw4\nENXVT3+PUc+ePXHgwAHF/ssvvwwfHx8kJyerFEy8h4mIiIiISPdoXcE0Z84cJCYm4vLly+jQoQMC\nAgIQFxeHHj16NHguqamp+O9//4uQkBBFW1lZGSQSiUrfwINxyMjIUOz3798f/fv3b4Asn53HJ/sF\nietZpidI3CEPbQSJe3X8cEHi9rxcIkjc82NVp6w2hLn6wtySOTW/syBxV/h3FCTulXvCjKbfT/lD\nkLhncwsFiQsAtnZmgsQd6lLzrAtNC23v9PhOGvBq23aCxO1p1UKQuIVlVYLEveU0QpC4LXZGCxLX\nyGeMIHFJM7SuYFq2bBlEIhH69OmDbt264cGDB9i0aRM2bdpUY/8VK1bUW+x/P++pWbNmeP/99+Hk\n5IRevXohPj4e2dnZ+Pbbb1XObQwFEhERERERPR2tK5ief/55iEQiXL9+HdevX1fbTy6XQyQS1WvB\nJBKJIBJYQ9U0AAAgAElEQVSJFPv9+vXDypUrMXHiROTn58PR0RHJyclo106Y30YREREREVHD0rqC\nKS8vT7DYGzduVGkLCgpCUFCQANkQEREREZHQtPo5TEREREREREJiwURERERERKQGCyYiIiIiIiI1\nWDARERERERGpwYKJiIiIiEhHpaWlwdfXF1KpFBKJBJ07d0Z4eDju3bsndGoAgIyMDIjFYpw8ebLe\nrjlr1iwMH17zczCrqqrg7u6O//znP098PRZMREREREQ6aM+ePfD19YWtrS02b96MvXv3YsqUKYiN\njYWvry+qq6uFTrHerVy5El988YXSo4L+VllZifHjx+PEiRM1HldH65YVJyIiIiKiuouJiYGvry/W\nrl2raOvfvz8cHR3h7++PlJQUDBkyRMAM609BQQE++OADbN68GS1btlQ5fvr0aYSEhOCPP/546mtz\nhImIiIiISAcVFhZCJpOptA8ePBiRkZGwtrZWtGVnZ2PYsGEwMzODoaEhHB0dlQqtuLg4tGnTBvv3\n74ezszMkEgl69uyJ3NxcJCYmwsHBASYmJhg+fDgKCwsBPHq+qlgsRnJyMjw8PGBkZARnZ2fs2LGj\n1rx/+eUX+Pj4wNjYGBYWFpg+fTrKyspqPScyMhJHjx5FSkoKunXrpnI8KCgIJiYmOH78eK3XqQkL\nJiIiIiIiHTR06FCkpKRgxIgRiI+Px82bNwEA+vr6mDt3LpycnAAAV69ehbe3N0xNTbF9+3YkJSWh\nU6dOCAkJwZkzZxTXKy0txdSpUxEWFob4+Hhcu3YNfn5+CA8PR1RUFFavXo3U1FTMnz9fKY/x48ej\nX79+2LlzJ1xcXBAYGIjU1NQacz537hy8vLygp6eHbdu2ITo6GvHx8RgzZkytr/Wdd95BTk4OBgwY\nALlcrnL8u+++Q0pKCjp06PBU7yHAKXlERERERDrp008/RXFxMb755hskJycDABwdHTF69GiEhoai\nVatWAICzZ8+iT58+2LJlC/T09AAA7u7uaN26NTIzMxWFVUVFBaKjoxEYGAgAyMrKQlRUFDIzM+Hp\n6QkAOHDgAI4dO6aUR2BgIKKjowE8Gt06f/48IiMjMXDgQJWcIyIiYGlpiT179kBf/1GpYm9vDy8v\nLxw6dAh9+/at8bV26tSp1veiS5cuj3/D1OAIExERERGRDjIwMMD69etx5coVrF69GqNGjcKtW7ew\nePFiODk5IS8vD8D/RqIqKytx+vRpbN++HUuWLAEAlJeXK13T3d1d8WcLCwsAwEsvvaRok0qluH37\nttI5Y8eOVdofOXIkjhw5UmPO6enpikKqqqoKVVVV8PDwgKmpKdLS0p7hXag7FkxPQSqVQiQS6cxG\nRERERLrPysoKISEhSEhIQEFBATZs2IDCwkIsWLAAACCTyTBz5kxIpVK4ubkhPDwcJSUlAKAyvc3E\nxETl+s2bN681vqWlpdJ+mzZtUFlZifv376v0LSoqQmxsLAwMDJS20tJSxZTChsYpeU+hpKSkxjmR\njZXHJ/uFToGIiIiINCArKwv+/v7Yt2+f0giQnp4egoODkZSUhNzcXACPpu59/fXX2LRpE4YNGwaJ\nRIKysjKsX7++XnIpKiqCvb29Yv/WrVuQSCQwNjZW6duqVSuMHDkSU6dOVWqXy+UwNzevl3yeFkeY\niIiIiIh0jIODA8rKyrBy5UqVYzKZDBcvXlTcm3T06FH06NEDAQEBkEgkAIC9e/cCUB1heha7du1S\n2k9MTMSAAQNq7Ovp6YmcnBy4uroqNhsbG4SFhSktQNGQOMJERERERKRjzMzMEBkZiVmzZqGgoABB\nQUGwtLREfn4+YmNjkZ+fj7CwMACP7kuKiorCqlWr4OTkhOPHjyMmJgbGxsY1Tpt7WsuWLUOLFi3g\n6uqKDRs2ICcnB+vWraux7/z589G7d2+MGTMGEyZMwMOHDxEREYEbN27A1dX1iWPW56wwjjARERER\nEemgGTNmYNeuXZDL5Zg2bRp8fHwwa9Ys2Nra4sSJE2jfvj0AYO7cuQgKCsLChQvh5+eHtLQ07N+/\nH97e3sjKylJcr6Z74P/dVtO98jExMUhISMCoUaNw7do1HDhwAG5ubjVew9XVFQcPHkRhYSFGjx6N\nyZMnw8bGBhkZGWjXrt0Tve76vl9fJNelm3I0TCQS8R6meiAy0BMk7hB3G0Hiju9u+fhOGpB+uUSQ\nuB42qk/XbggSfWF+/7Mk7b+CxF3h31GQuFfuCfMZGJHy9E9mrw9ncwsFiQsAtnZmgsQd6tJWkLjn\n8u8KEvdlpyf7Albfelq1ECRuYVmVIHENxMIsNtViZ7QgcY18an9mkKboP+8sSFx18vLy0KFDB6Sm\npqqdgtcYcISJiIiIiIhIDRZMRERERESkEbrwKBsu+kBERERERPXOzs4OMplM6DTqjCNMRERERERE\narBgIiIiIiIiUoMFExERERERkRosmIiIiIiIiNRgwURERERERKQGCyYiIiIiIiI1RHK5XJjHtjdC\nIpEIuvR23bCyESTu0DfWCBJ34ZuugsT99IffBIm7bXpvQeIa6gnzvIW2RWcEiSszsRAkrlwszFMh\nipu1FiTunF05gsRdNaqLIHEBYHH6JUHiZuUWChJXXi3M/6+fjHISJG6lQK/XxrS5IHErZNWCxDVq\npidI3PTLxYLEfaeXnSBxdV2THWGSSqUQiURPtRERERERUdPSZB9cW1JS8tSjRSyaiIiIiIialiY7\nwkRERERERPQ4LJiIiIiIiIjUYMFERERERESkBgsmIiIiIiIiNVgwERERERERqcGCiYiIiIiISA0W\nTERERERERGqwYCIiIiIi0lFpaWnw9fWFVCqFRCJB586dER4ejnv37gmdGgAgIyMDYrEYJ0+erNN1\niouL8c4778DOzg6mpqbo3bs3Dh48WC85smAiIiIiItJBe/bsga+vL2xtbbF582bs3bsXU6ZMQWxs\nLHx9fVFdXS10ivVCLpdj9OjRSE5OxqJFi7Bjxw7Y2dlh8ODByMrKqvP19eshRyIiIiIi0jIxMTHw\n9fXF2rVrFW39+/eHo6Mj/P39kZKSgiFDhgiYYf04ceIEMjIykJaWBm9vbwCAj48Pzpw5g88//xzx\n8fF1uj5HmIiIiIiIdFBhYSFkMplK++DBgxEZGQlra2tFW3Z2NoYNGwYzMzMYGhrC0dFRqdCKi4tD\nmzZtsH//fjg7O0MikaBnz57Izc1FYmIiHBwcYGJiguHDh6OwsBAAkJeXB7FYjOTkZHh4eMDIyAjO\nzs7YsWNHrXn/8ssv8PHxgbGxMSwsLDB9+nSUlZWp7a+np4e33noLvXv3VrSJRCJ07NgReXl5T/p2\nqcWCiYiIiIhIBw0dOhQpKSkYMWIE4uPjcfPmTQCAvr4+5s6dCycnJwDA1atX4e3tDVNTU2zfvh1J\nSUno1KkTQkJCcObMGcX1SktLMXXqVISFhSE+Ph7Xrl2Dn58fwsPDERUVhdWrVyM1NRXz589XymP8\n+PHo168fdu7cCRcXFwQGBiI1NbXGnM+dOwcvLy/o6elh27ZtiI6ORnx8PMaMGaP2dbq6umLNmjUw\nNDRUtN29exeZmZlwdHR85vfvb5ySR0RERESkgz799FMUFxfjm2++QXJyMgDA0dERo0ePRmhoKFq1\nagUAOHv2LPr06YMtW7ZAT08PAODu7o7WrVsjMzNTUVhVVFQgOjoagYGBAICsrCxERUUhMzMTnp6e\nAIADBw7g2LFjSnkEBgYiOjoawKPRrfPnzyMyMhIDBw5UyTkiIgKWlpbYs2cP9PUflSr29vbw8vLC\noUOH0Ldv3yd67e+++y5KS0sRGhr6VO9ZTTjC9BTMzMwgEol0ZiMiIiIi3WVgYID169fjypUrWL16\nNUaNGoVbt25h8eLFcHJyUkxX+3skqrKyEqdPn8b27duxZMkSAEB5ebnSNd3d3RV/trCwAAC89NJL\nijapVIrbt28rnTN27Fil/ZEjR+LIkSM15pyenq4opKqqqlBVVQUPDw+YmpoiLS3tsa9ZLpfj3Xff\nxZYtW7Bs2TK8+OKLjz3ncVgwPYXi4mLI5XKd2YiIiIhI91lZWSEkJAQJCQkoKCjAhg0bUFhYiAUL\nFgAAZDIZZs6cCalUCjc3N4SHh6OkpAQAVL4zmpiYqFy/efPmtca3tLRU2m/Tpg0qKytx//59lb5F\nRUWIjY2FgYGB0lZaWqqYUqhORUUFXnvtNXz11VeIjo7Gu+++W2v/J8UpeUREREREOiYrKwv+/v7Y\nt2+f0giQnp4egoODkZSUhNzcXACPpu59/fXX2LRpE4YNGwaJRIKysjKsX7++XnIpKiqCvb29Yv/W\nrVuQSCQwNjZW6duqVSuMHDkSU6dOVWqXy+UwNzdXG6OsrAzDhw9HRkYG1qxZg7feeqtecgc4wkRE\nREREpHMcHBxQVlaGlStXqhyTyWS4ePGi4t6ko0ePokePHggICIBEIgEA7N27F4DqCNOz2LVrl9J+\nYmIiBgwYUGNfT09P5OTkwNXVVbHZ2NggLCxMaQGKfxs3bhwOHTqErVu31muxBHCEiYiIiIhI55iZ\nmSEyMhKzZs1CQUEBgoKCYGlpifz8fMTGxiI/Px9hYWEAHt2XFBUVhVWrVsHJyQnHjx9HTEwMjI2N\na5w297SWLVuGFi1awNXVFRs2bEBOTg7WrVtXY9/58+ejd+/eGDNmDCZMmICHDx8iIiICN27cgKur\na43nJCYmYufOnRg/fjxsbGyUHlZrZGQEFxeXOuXPgomIiIiISAfNmDEDHTt2xMqVKzFt2jTcvn0b\n5ubm8PX1xcaNG2FrawsAmDt3Lv78808sXLgQDx48QN++fbF//358/PHHSsVHTYuG/butpsXFYmJi\nEBcXh4iICHTr1g0HDhyAm5tbjddwdXXFwYMHERYWhtGjR6N58+bw9PTEli1b0K5duxpfZ1JSEkQi\nEb799lt8++23SsecnJzw22+/PeE7VjORvIne/S8SiZr8wgc3rGwEiTv0jTWCxF34Zs2/ldC0T3+o\n2w/ps9o2vffjO2mAoZ4wKzC2LVI/TK9JMhMLQeLKxcL8vqu4WWtB4s7ZlSNI3FWjuggSFwAWp18S\nJG5WbqEgceXVwvyf/MkoJ0HiVgr0em1Ma785X1MqZNWCxDVqpidI3PTLxYLEfaeXnSBx1cnLy0OH\nDh2QmpqqdgpeY8B7mIiIiIiIiNTQiYJJKpXyGURERERERFpGF75368Q9TCUlJU89vU4X/vKIiIiI\niLSVnZ0dZDKZ0GnUmU6MMBEREREREWkCCyYiIiIiIiI1WDARERERERGpwYKJiIiIiIhIDRZMRERE\nREREaujEKnn0bAImrxMk7snJ1oLErb6R9fhOGuA2Y5AgcS0fXBEk7oPUrYLE/brLJEHieptKBYkb\n8v1pQeLKq/MEiVt4/Y4gcf9j0UKQuAAwomtbQeJWVAnzgFEDfWF+h3uu8J4gcYd0NBck7p3yKkHi\nupgbChK38KEwDwi2M5MIEpc0gyNMREREREREarBgIiIiIiIiUoMFExERERERkRosmIiIiIiIiNRg\nwURERERERKQGCyYiIiIiIiI1WDARERERERGpwYKJiIiIiIhIDRZMREREREREarBgIiIiIiLSUWlp\nafD19YVUKoVEIkHnzp0RHh6Oe/fuCZ0aACAjIwNisRgnT5585mssWLAAYrG4xq1Dhw51zlG/zlcg\nIiIiIiKts2fPHowYMQITJ07EjBkzYGRkhJMnT2LJkiVIT0/HoUOHIBY3/vGTKVOmYNiwYUptOTk5\nmDhxIqZMmVLn67NgIiIiIiLSQTExMfD19cXatWsVbf3794ejoyP8/f2RkpKCIUOGCJhh/bCysoKV\nlZViXyaT4Z133kH//v0xb968Ol+/8ZeURERERESkorCwEDKZTKV98ODBiIyMhLW1taItOzsbw4YN\ng5mZGQwNDeHo6KhUaMXFxaFNmzbYv38/nJ2dIZFI0LNnT+Tm5iIxMREODg4wMTHB8OHDUVhYCADI\ny8uDWCxGcnIyPDw8YGRkBGdnZ+zYsaPWvH/55Rf4+PjA2NgYFhYWmD59OsrKyp74da9btw6//fYb\nVq5c+cTn1IYFExERERGRDho6dChSUlIwYsQIxMfH4+bNmwAAfX19zJ07F05OTgCAq1evwtvbG6am\npti+fTuSkpLQqVMnhISE4MyZM4rrlZaWYurUqQgLC0N8fDyuXbsGPz8/hIeHIyoqCqtXr0Zqairm\nz5+vlMf48ePRr18/7Ny5Ey4uLggMDERqamqNOZ87dw5eXl7Q09PDtm3bEB0djfj4eIwZM+aJXvPD\nhw+xYMECTJo0CZ07d36Wt00Fp+QREREREemgTz/9FMXFxfjmm2+QnJwMAHB0dMTo0aMRGhqKVq1a\nAQDOnj2LPn36YMuWLdDT0wMAuLu7o3Xr1sjMzFQUVhUVFYiOjkZgYCAAICsrC1FRUcjMzISnpycA\n4MCBAzh27JhSHoGBgYiOjgbwaHTr/PnziIyMxMCBA1VyjoiIgKWlJfbs2QN9/Uelir29Pby8vHDo\n0CH07du31te8detWFBYWYs6cOc/0ntWkyY4wmZmZQSQSNemNiIiIiHSXgYEB1q9fjytXrmD16tUY\nNWoUbt26hcWLF8PJyQl5eXkA/jcSVVlZidOnT2P79u1YsmQJAKC8vFzpmu7u7oo/W1hYAABeeukl\nRZtUKsXt27eVzhk7dqzS/siRI3HkyJEac05PT1cUUlVVVaiqqoKHhwdMTU2Rlpb22Ne8du1aDBs2\nDC+88MJj+z6pJlswFRcXQy6XN+mNiIiIiHSflZUVQkJCkJCQgIKCAmzYsAGFhYVYsGABgEeLJMyc\nORNSqRRubm4IDw9HSUkJAKh8ZzQxMVG5fvPmzWuNb2lpqbTfpk0bVFZW4v79+yp9i4qKEBsbCwMD\nA6WttLRUMaVQnZs3b+LYsWN47bXXau33tDglj4iIiIhIx2RlZcHf3x/79u1TGgHS09NDcHAwkpKS\nkJubC+DR1L2vv/4amzZtwrBhwyCRSFBWVob169fXSy5FRUWwt7dX7N+6dQsSiQTGxsYqfVu1aoWR\nI0di6tSpSu1yuRzm5ua1xklJSYGenh5GjBhRL3n/rcmOMBERERER6SoHBweUlZXVuFKcTCbDxYsX\nFfcmHT16FD169EBAQAAkEgkAYO/evQBUR5iexa5du5T2ExMTMWDAgBr7enp6IicnB66urorNxsYG\nYWFhSgtQ1CQ7OxtdunRBixYt6pzzP3GEiYiIiIhIx5iZmSEyMhKzZs1CQUEBgoKCYGlpifz8fMTG\nxiI/Px9hYWEAHt2XFBUVhVWrVsHJyQnHjx9HTEwMjI2Na5w297SWLVuGFi1awNXVFRs2bEBOTg7W\nrVtXY9/58+ejd+/eGDNmDCZMmICHDx8iIiICN27cgKura61xzpw5AwcHhzrn+28cYSIiIiIi0kEz\nZszArl27IJfLMW3aNPj4+GDWrFmwtbXFiRMn0L59ewDA3LlzERQUhIULF8LPzw9paWnYv38/vL29\nkZWVpbheTYuG/butpsXFYmJikJCQgFGjRuHatWs4cOAA3NzcaryGq6srDh48iMLCQowePRqTJ0+G\njY0NMjIy0K5du1pfb2FhoWLlv/okkuvA3f8ikYiLGDwDj0/2CxL38GTrx3fSgOobfwgS96b9IEHi\nWj64IkjcB6lbBYn7fZdJgsT1bi8VJG7I1tOCxJVXC/NZW3j9jiBxXxlk//hOGjLIvva5+pqy/XS+\nIHEN9IX5Ha611EiQuEM6CvP3e6e8SpC4LuaGgsQtfCjMZ9bvBXUflXkWwxyfEySuOnl5eejQoQNS\nU1PVTsFrDDjCREREREREpAYLJiIiIiIi0ghdePYnF30gIiIiIqJ6Z2dnB5lMJnQadcYRJiIiIiIi\nIjVYMBEREREREanBgomIiIiIiEgNFkxERERERERqsGAiIiIiIiJSgwUTERERERGRGiK5XC7MI5Dr\nkUgkgg68jAbn8cl+QeKKDPQEifvNFHdB4v6UVyJI3DedLQSJuzzruiBxrxc/ECRu9tlbgsT99LVu\ngsS9ea9ckLhDO0oFiXunvFqQuACw45ww/7ZaGxkIEnfp978KEvfgxz6CxK0W6HvLyC9/FiRuL+e2\ngsR9vbu1IHE/2Z0jSNz97/YRJK6u4wgTERERERGRGiyYiIiIiIiI1GDBREREREREpAYLJiIiIiIi\nIjVYMBEREREREanBgomIiIiIiEgNFkxERERERERqsGAiIiIiIiJSgwUTEREREZGOSktLg6+vL6RS\nKSQSCTp37ozw8HDcu3dP6NQAABkZGRCLxTh58mS9XXPWrFkYPny4SntJSQmCg4Nhbm4OqVSKKVOm\noLS09LHXY8FERERERKSD9uzZA19fX9ja2mLz5s3Yu3cvpkyZgtjYWPj6+qK6ulroFOvdypUr8cUX\nX0AkEqkcCwgIQGZmJmJjY7F8+XIkJSVh7Nixj72mviYSJSIiIiIiYcXExMDX1xdr165VtPXv3x+O\njo7w9/dHSkoKhgwZImCG9aegoAAffPABNm/ejJYtW6ocT09PR0ZGBo4dO4YePXoAAKytrTFw4ECc\nOnUK3bt3V3ttjjAREREREemgwsJCyGQylfbBgwcjMjIS1tbWirbs7GwMGzYMZmZmMDQ0hKOjo1Kh\nFRcXhzZt2mD//v1wdnaGRCJBz549kZubi8TERDg4OMDExATDhw9HYWEhACAvLw9isRjJycnw8PCA\nkZERnJ2dsWPHjlrz/uWXX+Dj4wNjY2NYWFhg+vTpKCsrq/WcyMhIHD16FCkpKejWrZvK8dTUVDz3\n3HOKYgl4VDyamppi3759tV6bBRMRERERkQ4aOnQoUlJSMGLECMTHx+PmzZsAAH19fcydOxdOTk4A\ngKtXr8Lb2xumpqbYvn07kpKS0KlTJ4SEhODMmTOK65WWlmLq1KkICwtDfHw8rl27Bj8/P4SHhyMq\nKgqrV69Gamoq5s+fr5TH+PHj0a9fP+zcuRMuLi4IDAxEampqjTmfO3cOXl5e0NPTw7Zt2xAdHY34\n+HiMGTOm1tf6zjvvICcnBwMGDIBcLlc5/scff6Bjx45KbWKxGHZ2drhw4UKt1+aUPCIiIiIiHfTp\np5+iuLgY33zzDZKTkwEAjo6OGD16NEJDQ9GqVSsAwNmzZ9GnTx9s2bIFenp6AAB3d3e0bt0amZmZ\nisKqoqIC0dHRCAwMBABkZWUhKioKmZmZ8PT0BAAcOHAAx44dU8ojMDAQ0dHRAB6Nbp0/fx6RkZEY\nOHCgSs4RERGwtLTEnj17oK//qFSxt7eHl5cXDh06hL59+9b4Wjt16lTre3H37l2YmJiotLdo0QJ3\n796t9VyOMBERERER6SADAwOsX78eV65cwerVqzFq1CjcunULixcvhpOTE/Ly8gD8bySqsrISp0+f\nxvbt27FkyRIAQHl5udI13d3dFX+2sLAAALz00kuKNqlUitu3byud8++FFUaOHIkjR47UmHN6erqi\nkKqqqkJVVRU8PDxgamqKtLS0Z3gXHpHL5TUuBAE8GmmqDQumeiCVSiESiRrdRkRERES6z8rKCiEh\nIUhISEBBQQE2bNiAwsJCLFiwAAAgk8kwc+ZMSKVSuLm5ITw8HCUlJQCgMr2tplGa5s2b1xrf0tJS\nab9NmzaorKzE/fv3VfoWFRUhNjYWBgYGSltpaaliSuGzaNmyZY0jSaWlpTUuEvFPLJjqQUlJCeRy\neaPbiIiIiEg3ZWVlwdzcHCdOnFBq19PTQ3BwMPz8/JCbmwvg0dS9r7/+Gps2bUJpaSlyc3OxYsWK\nesulqKhIaf/WrVuQSCQwNjZW6duqVStMmjQJJ06cUNqys7Mxb968Z87B3t4ely5dUmqrrq7GlStX\n4ODgUOu5LJiIiIiIiHSMg4MDysrKsHLlSpVjMpkMFy9eVNybdPToUfTo0QMBAQGQSCQAgL179wJQ\nHWF6Frt27VLaT0xMxIABA2rs6+npiZycHLi6uio2GxsbhIWFKS1A8bQGDhyIP//8E8ePH1e0paen\n4+7du/Dx8an1XC76QERERESkY8zMzBAZGYlZs2ahoKAAQUFBsLS0RH5+PmJjY5Gfn4+wsDAAj+5L\nioqKwqpVq+Dk5ITjx48jJiYGxsbGNU6be1rLli1DixYt4Orqig0bNiAnJwfr1q2rse/8+fPRu3dv\njBkzBhMmTMDDhw8RERGBGzduwNXV9Ylj/rvQGzBgAHr27IlXXnkFMTExqKiowJw5c+Dv71/rM5gA\njjAREREREemkGTNmYNeuXZDL5Zg2bRp8fHwwa9Ys2Nra4sSJE2jfvj0AYO7cuQgKCsLChQvh5+eH\ntLQ07N+/H97e3sjKylJcr6Z74P/dVtO98jExMUhISMCoUaNw7do1HDhwAG5ubjVew9XVFQcPHkRh\nYSFGjx6NyZMnw8bGBhkZGWjXrt0TvW519+snJSWhT58+eOuttzB79my8/PLL+O677x5/PbkO3Mwi\nEokEvSdH6PjPyuOT/YLEFRnoCRL3mynuj++kAT/llQgS901nC0HiLs+6Lkjc68UPBImbffaWIHE/\nfU31oXwN4ea98sd30oChHaWCxL1TXi1IXADYcU6Yf1utjQwEibv0+18FiXvw49qn4mhKtUDfG0Z+\n+bMgcXs5txUk7uvdrR/fSQM+2Z0jSNz97/YRJK46eXl56NChA1JTU9VOwWsMOMJERERERESkBgsm\nIiIiIiLSCF14lA0XfSAiIiIionpnZ2cHmUwmdBp19kwFk1QqVTzMioiIiIiISFc9U8H094NatYUu\nDPUREREREZH24T1MREREREREarBgIiIiIiIiUoMFExERERERkRosmIiIiIiIiNTgsuJPiCsD1p8z\nKSmCxF30fCtB4v6U8rsgcd9cM1qQuC7tTAWJe734gSBxN73tIUjcLb/mCxK3u1VLQeLeKa8WJG5O\n4UCT5jgAACAASURBVH1B4gJAoNNzgsSNPnhRkLiJH/YXJG7cKWF+lga80FqQuK/0bS9I3DPX7wgS\n9055pSBxk8Z3ESQuaQYLpidU28qAXKWPiIiIiEg3cUoeERERERGRGiyYiIiIiIiI1GDBRERERERE\npAYLJiIiIiIiIjVYMBEREREREanBgomIiIiIiEgNFkxERERERERqsGAiIiIiItJRaWlp8PX1hVQq\nhUQiQefOnREeHo579+4JnRoAICMjA2KxGCdPnqzTdS5duoRRo0bB1NQU5ubmCAoKwq1bt+olRxZM\nREREREQ6aM+ePfD19YWtrS02b96MvXv3YsqUKYiNjYWvry+qq6uFTrFeFBcXw8vLC7/++itWr16N\nTZs2IT8/H56envVSGOrXQ45ERERERKRlYmJi4Ovri7Vr1yra+vfvD0dHR/j7+yMlJQVDhgwRMMP6\nsXHjRvz55584c+YMOnfuDADw9vZGx44dsXz5coSHh9fp+hxhIiIiIiLSQYWFhZDJZCrtgwcPRmRk\nJKytrRVt2dnZGDZsGMzMzGBoaAhHR0elQisuLg5t2rTB/v374ezsDIlEgp49eyI3NxeJif/H3v1H\nRXXf+eN/DkOQcQBhFFpBipIg2IC1gyJVRBHrKKALXxk2S3dFG+1C9vgDt6elC6R6UGSWrd10kS4q\nRKtsSwWxQEF+KcVaUNHWVgWTmoxSUJgAGjSIMM73Dz+dZsIM/gDzNtPn45x7Dvc9975fr3v1oK95\nv9/3lsLX1xeOjo5YtWoVdDodAECr1cLGxgYVFRUIDg7GxIkTERAQgGPHjo2a94ULFxAeHg65XA43\nNzds3rwZAwMDFo9/77338JWvfMVYLAGAvb09vv71r6Oqquqp75clLJiIiIiIiKzQypUrUVNTg9Wr\nV6OoqAi3b98GANja2iIlJQX+/v4AgJs3byIsLAxOTk4oLi5GWVkZZs6cicTERFy+fNnYX39/P5KS\nkpCamoqioiK0t7cjMjISaWlpyMrKQm5uLurq6pCenm6Sx9q1a7F48WIcP34cs2fPhlqtRl1dndmc\nr169itDQUEilUhw9ehQajQZFRUWIi4uzeJ1f+cpXoNPpRhRVH374IW7cuPFc9+7TOCWPiIiIiMgK\n7dq1C729vTh06BAqKioAAH5+foiNjcW2bdvg7OwMALhy5QoWLlyIwsJCSKVSAEBQUBAmT56MxsZG\nY2H18OFDaDQaqNVqAEBzczOysrLQ2NiIkJAQAEBtbS3Onj1rkodarYZGowHweHTr2rVryMzMxLJl\ny0bknJGRAXd3d1RWVsLW9nGp4uPjg9DQUJw+fRqLFi0acU5cXBx27dqFb33rW9izZw/kcjl+9KMf\n4fr167C3tx/zfeQIExERERGRFbKzs0N+fj5u3LiB3NxcxMTEoKurCzt37oS/vz+0Wi2Av41EDQ0N\n4dKlSyguLsbu3bsBAIODgyZ9BgUFGX92c3MDAMydO9fYplAocOfOHZNz4uPjTfajo6Nx5swZszmf\nOnXKWEgNDw9jeHgYwcHBcHJyQn19vdlzfHx8UFRUhKamJnh7e+PLX/4ytFot1q1bB5lM9qTb9EQs\nmMaBi4sLJBLJF24jIiIiIuvn4eGBxMRElJSUoLu7GwUFBdDpdNi+fTsAQK/XY+vWrVAoFAgMDERa\nWhr6+voAAAaDwaQvR0fHEf0/aRTH3d3dZN/V1RVDQ0O4f//+iGN7enqQl5cHOzs7k62/v984pdCc\nVatWobOzE++//z5u3bqFX/ziF+jp6cHkyZNHze1psGAaB729vTAYDF+4jYiIiIisU3NzM6ZMmYKW\nlhaTdqlUinXr1iEyMhJtbW0AHk/d279/Pw4fPoz+/n60tbXhJz/5ybjl0tPTY7Lf1dUFmUwGuVw+\n4lhnZ2e8+eabaGlpMdnOnTuHH/zgB2b7/8tf/oKDBw9CIpHg1VdfNY58Xbp0CXPmzBlz/iyYiIiI\niIisjK+vLwYGBpCTkzPiM71ej+vXrxvXJjU1NWHevHlYs2aNcQrbX58uNx5fspeXl5vsl5aWYunS\npWaPDQkJQWtrK5RKpXHz9PREamqqyQMoPq2jowPf/va3ceHCBWNbbW0t3n//faxatWrM+fOhD0RE\nREREVsbFxQWZmZlITk5Gd3c3EhIS4O7ujs7OTuTl5aGzsxOpqakAHq9LysrKwt69e+Hv74/z588j\nOzsbcrnc7LS5Z7Vnzx44ODhAqVSioKAAra2tOHDggNlj09PTsWDBAsTFxWH9+vV48OABMjIy0NHR\nAaVSafacefPmYe7cuXjzzTexe/du6HQ6JCcnY9GiRaM+Xe9pcYSJiIiIiMgKbdmyBeXl5TAYDNi0\naRPCw8ORnJwMLy8vtLS0YMaMGQCAlJQUJCQkYMeOHYiMjER9fT2qq6sRFhaG5uZmY3/m1sB/ts3c\nWvns7GyUlJQgJiYG7e3tqK2tRWBgoNk+lEolTp48CZ1Oh9jYWGzYsAGenp5oaGjA1KlTzV6njY0N\nSktL4e3tjfj4eKSkpCA+Ph6//vWvn/2mmSExPMc4m0QieanWwHwe+bxs1zwegn9YLSTulQbzTzh5\n0f5hw9i/YXgev6n5k5C47/9vrJC4J9s/ERK38orlhaAv0qaQGULiFv6hU0jcr3tMEhJ39pcchMRt\n1Y39m9Xn5f+lkXP7Pw+ak9eFxN0a6i0kbunVLiFxl7469oXoz+Pk9Z4nH/QCXP7LXSFx/yXIU0jc\nJe52QuJOcHQREtcSrVYLb29v1NXVWZyC90XAESYiIiIiIiILWDAREREREdELYQ2vsvm7f+iDQqEw\nPmeeiIiIiIjGx/Tp06HX60WnMWZ/9wVTX1/fU61NsobqmIiIiIiIng2n5BEREREREVnAgomIiIiI\niMgCFkxEREREREQWsGAiIiIiIiKygAUTERERERGRBRLD0zwi7rMnSSRP9WS5z8tY8nnac1+2ax4P\nHR5i3n7d0XRJSNz/PaMVEleruy8k7rZlPkLi5p3+UEjcS797X0jcP+2NFRL39v1hIXEbtL1C4k58\nRSok7orXFELiAsCte2L+jGdOEvNdatmfPxYSN+BLjkLifjIk5lHL7567KSTuVGeZkLj//c6vhMR9\n7//+TUhcF4eJQuJaO44wERERERERWcCCiYiIiIiIyAIWTERERERERBawYCIiIiIiIrKABRMRERER\nEZEFLJiIiIiIiIgsYMFERERERERkAQsmIiIiIiIiC1gwERERERFZqfr6eqhUKigUCshkMsyaNQtp\naWm4d++e6NQAAA0NDbCxscHFixfH1M+tW7cQHx8PV1dXKBQKJCQkQKfTjUuOLJiIiIiIiKxQZWUl\nVCoVvLy8cOTIEVRVVWHjxo3Iy8uDSqXCo0ePRKc4LoaGhhAREYE//OEP2L9/PwoKCnDu3DmoVCoY\nDIYx9287DjkSEREREdFLJjs7GyqVCvv27TO2LVmyBH5+foiKikJNTQ1WrFghMMPxUVtbiz/+8Y+4\ncOEC5syZAwBQKBRYsmQJmpqasGDBgjH1zxEmIiIiIiIrpNPpoNfrR7QvX74cmZmZmDZtmrHt3Llz\niIiIgIuLCyZMmAA/Pz+TQuvgwYNwdXVFdXU1AgICIJPJMH/+fLS1taG0tBS+vr5wdHTEqlWrjFPh\ntFotbGxsUFFRgeDgYEycOBEBAQE4duzYqHlfuHAB4eHhkMvlcHNzw+bNmzEwMGDx+MWLF+PMmTPG\nYgkAXnnlFQDA4ODg092sUbBgIiIiIiKyQitXrkRNTQ1Wr16NoqIi3L59GwBga2uLlJQU+Pv7AwBu\n3ryJsLAwODk5obi4GGVlZZg5cyYSExNx+fJlY3/9/f1ISkpCamoqioqK0N7ejsjISKSlpSErKwu5\nubmoq6tDenq6SR5r167F4sWLcfz4ccyePRtqtRp1dXVmc7569SpCQ0MhlUpx9OhRaDQaFBUVIS4u\nzuJ1yuVyBAcHAwAePnyIlpYWbN68GV/96lcRGho6pnsIcEoeEREREZFV2rVrF3p7e3Ho0CFUVFQA\nAPz8/BAbG4tt27bB2dkZAHDlyhUsXLgQhYWFkEqlAICgoCBMnjwZjY2NxsLq4cOH0Gg0UKvVAIDm\n5mZkZWWhsbERISEhAB5Pjzt79qxJHmq1GhqNBsDj0a1r164hMzMTy5YtG5FzRkYG3N3dUVlZCVvb\nx6WKj48PQkNDcfr0aSxatGjUa1apVPjNb34DmUyG48ePG69nLDjCRERERERkhezs7JCfn48bN24g\nNzcXMTEx6Orqws6dO+Hv7w+tVgvgbyNRQ0NDuHTpEoqLi7F7924AI6e0BQUFGX92c3MDAMydO9fY\nplAocOfOHZNz4uPjTfajo6Nx5swZszmfOnXKWEgNDw9jeHgYwcHBcHJyQn19/ROvOSMjA3V1dYiO\njkZkZCRqamqeeM6TsGB6Si4uLpBIJFa1EREREZH18/DwQGJiIkpKStDd3Y2CggLodDps374dAKDX\n67F161YoFAoEBgYiLS0NfX19ADDiKXOOjo4j+re3tx81vru7u8m+q6srhoaGcP/+/RHH9vT0IC8v\nD3Z2diZbf3+/cUrhaEJCQrB06VIUFhZizpw5xpGtseCUvKfU29srOoVx1+HhKToFIiIiInoBmpub\nERUVhRMnTpiMAEmlUqxbtw5lZWVoa2sD8Hjq3v79+3H48GFERERAJpNhYGAA+fn545JLT08PfHx8\njPtdXV2QyWSQy+UjjnV2dkZ0dDSSkpJM2g0GA6ZMmWK2/z/96U+4cuUK3njjDZP22bNn43e/+92Y\n8+cIExERERGRlfH19cXAwABycnJGfKbX63H9+nXj2qSmpibMmzcPa9asgUwmAwBUVVUBGDnC9DzK\ny8tN9ktLS7F06VKzx4aEhKC1tRVKpdK4eXp6IjU11eQBFJ925swZfOtb38IHH3xgbBscHERjYyMC\nAgLGnD9HmIiIiIiIrIyLiwsyMzORnJyM7u5uJCQkwN3dHZ2dncjLy0NnZydSU1MBPF6XlJWVhb17\n98Lf3x/nz59HdnY25HK52Wlzz2rPnj1wcHCAUqlEQUEBWltbceDAAbPHpqenY8GCBYiLi8P69evx\n4MEDZGRkoKOjA0ql0uw58fHx+K//+i9ER0djx44dsLW1xY9//GPcvn0bb7/99pjz5wgTEREREZEV\n2rJlC8rLy2EwGLBp0yaEh4cjOTkZXl5eaGlpwYwZMwAAKSkpSEhIwI4dOxAZGYn6+npUV1cjLCwM\nzc3Nxv7MrYH/bJu5tfLZ2dkoKSlBTEwM2tvbUVtbi8DAQLN9KJVKnDx5EjqdDrGxsdiwYQM8PT3R\n0NCAqVOnmr1OJycnnDp1Cl/96lfxr//6r4iPj4e9vT1++9vf4vXXX3/2G/fZazQ8xzibRCIZl+G5\n8TKWfF62a/k8iVrD1NF0SUjc/z2jFRJXqxv7NzPPY9synycf9ALknf5QSNxLv3tfSNw/7Y0VEvf2\n/WEhcRu0YtZzTnxl7I+FfR4rXlMIiQsAt+6J+TOeOUnMd6llf/5YSNyAL41cwP55+GRo5MtEPw/v\nnrspJO5UZ5mQuP/9zq+ExH3v//5NSFwXh4lC4lqi1Wrh7e2Nuro6i1Pwvgg4wkRERERERGQBCyYi\nIiIiInohrOFVNnzoAxERERERjbvp06dDrxcz/XQ8cYSJiIiIiIjIAhZMREREREREFrBgIiIiIiIi\nssAq1jC5uLhYxYIyIiIiIiJ6uVhFwdTb+/zvBWGhRURERERElnBKHhERERERkQUSg8FgeOaTJBI8\nx2kvJWu6lmcV/MNqIXGXL/ASEnd9oIeQuA52Yr6XmJP0cyFxV0fPFRL3Qmu3kLh3dJ8IiZu+PlBI\nXN8pciFxRVHYi5uI8aPffCAkbnzgNCFxJ098RUjcV2XDQuJ+MCDmeu2kYmbWiPq38BUbMdc7qftP\nQuJKX50vJK614wgTERERERGRBSyYiIiIiIiILGDBREREREREZAELJiIiIiIiIgtYMBEREREREVnA\ngomIiIiIiMgCFkxEREREREQWsGAiIiIiIiKygAUTEREREZGVqq+vh0qlgkKhgEwmw6xZs5CWloZ7\n9+6JTg0A0NDQABsbG1y8eHHMff3P//wPfHx8MHHiRMyePRtHjx4dhwxZMBERERERWaXKykqoVCp4\neXnhyJEjqKqqwsaNG5GXlweVSoVHjx6JTnHc/Od//if+/d//HRs3bsSvf/1rfOMb38Abb7yBhoaG\nMfdtO/b0iIiIiIjoZZOdnQ2VSoV9+/YZ25YsWQI/Pz9ERUWhpqYGK1asEJjh+Pj444+xY8cOZGVl\nYdu2bQCAsLAwXLt2DbW1tViyZMmY+ucIExERERGRFdLpdNDr9SPaly9fjszMTEybNs3Ydu7cOURE\nRMDFxQUTJkyAn5+fSaF18OBBuLq6orq6GgEBAZDJZJg/fz7a2tpQWloKX19fODo6YtWqVdDpdAAA\nrVYLGxsbVFRUIDg4GBMnTkRAQACOHTs2at4XLlxAeHg45HI53NzcsHnzZgwMDFg8vqamBoODg9iw\nYYNJe0NDA3bt2vVU92o0LJiIiIiIiKzQypUrUVNTg9WrV6OoqAi3b98GANja2iIlJQX+/v4AgJs3\nbyIsLAxOTk4oLi5GWVkZZs6cicTERFy+fNnYX39/P5KSkpCamoqioiK0t7cjMjISaWlpyMrKQm5u\nLurq6pCenm6Sx9q1a7F48WIcP34cs2fPhlqtRl1dndmcr169itDQUEilUhw9ehQajQZFRUWIi4uz\neJ1//OMfMXXqVFy8eBFKpRJ2dnaYOXPmEwuzp8UpeUREREREVmjXrl3o7e3FoUOHUFFRAQDw8/ND\nbGwstm3bBmdnZwDAlStXsHDhQhQWFkIqlQIAgoKCMHnyZDQ2NhoLq4cPH0Kj0UCtVgMAmpubkZWV\nhcbGRoSEhAAAamtrcfbsWZM81Go1NBoNgMejW9euXUNmZiaWLVs2IueMjAy4u7ujsrIStraPSxUf\nHx+Ehobi9OnTWLRo0YhzdDod7t27h3/6p3/CD3/4Q/j6+mL//v1Qq9U4c+YMgoODx3QfOcJERERE\nRGSF7OzskJ+fjxs3biA3NxcxMTHo6urCzp074e/vD61WC+BvI1FDQ0O4dOkSiouLsXv3bgDA4OCg\nSZ9BQUHGn93c3AAAc+fONbYpFArcuXPH5Jz4+HiT/ejoaJw5c8ZszqdOnTIWUsPDwxgeHkZwcDCc\nnJxQX19v9pyhoSHcvXsX2dnZSExMRFhYGAoLC+Hv74+MjIwn3aYnYsE0jhQKBSQSyRdmIyIiIiLr\n5+HhgcTERJSUlKC7uxsFBQXQ6XTYvn07AECv12Pr1q1QKBQIDAxEWloa+vr6AAAGg8GkL0dHxxH9\n29vbjxrf3d3dZN/V1RVDQ0O4f//+iGN7enqQl5cHOzs7k62/v984pfCzHBwcAMDkARYSiQRLly7F\nn/70p1FzexqckjeO+vr6RvylepkF/7BadApERERE9AI0NzcjKioKJ06cMBkBkkqlWLduHcrKytDW\n1gbg8dS9/fv34/Dhw4iIiIBMJsPAwADy8/PHJZeenh74+PgY97u6uiCTySCXy0cc6+zsjOjoaCQl\nJZm0GwwGTJkyxWz/r732GoDHUwY/bWhoCDY2Yx8f4ggTEREREZGV8fX1xcDAAHJyckZ8ptfrcf36\ndePapKamJsybNw9r1qyBTCYDAFRVVQEYOcL0PMrLy032S0tLsXTpUrPHhoSEoLW1FUql0rh5enoi\nNTXV5AEUn6ZSqQAAv/zlL41tw8PDqKmpwYIFC8acP0eYiIiIiIisjIuLCzIzM5GcnIzu7m4kJCTA\n3d0dnZ2dyMvLQ2dnJ1JTUwE8XpeUlZWFvXv3wt/fH+fPn0d2djbkcrnZaXPPas+ePXBwcIBSqURB\nQQFaW1tx4MABs8emp6djwYIFiIuLw/r16/HgwQNkZGSgo6MDSqXS7Dk+Pj749re/jf/4j/+AwWDA\nV7/6Vfz0pz9Fe3v7uDwpjwUTEREREZEV2rJlC1577TXk5ORg06ZNuHPnDqZMmQKVSoV3330XXl5e\nAICUlBTcunULO3bswCeffIJFixahuroab7/9Npqbm439mVsD/9k2c2vls7OzcfDgQWRkZGDOnDmo\nra1FYGCg2T6USiVOnjyJ1NRUxMbGwt7eHiEhISgsLMTUqVMtXmteXh6mTZuGH//4x/joo4+Mcf46\nijYWEsNzjLNJJJIv1Fqd0YzntXzR7ouoNUzLF3gJibs+0ENIXAc7MTNf5yT9XEjc1dFzn3zQC3Ch\ntVtI3Du6T4TETV8f+OSDXgDfKSPnm1szhb247xV/9JsPhMSND5z25INegMkTXxES91XZsJC4HwyI\nuV47qZiHPon6t/AVGzHXO6l77A8aeB7SV+cLiWuJVquFt7c36urqLE7B+yLgGiYiIiIiIiILWDAR\nEREREdELYQ2vsuEaJiIiIiIiGnfTp0+HXq8XncaYcYSJiIiIiIjIAhZMREREREREFrBgIiIiIiIi\nsoAFExERERERkQUsmIiIiIiIiCxgwURERERERGSBxGAwGJ75JIkEz3HaS2k8r+WLdl86PDyFxD18\n5KSQuKeudguJu8z/S0LiFp54T0hcUb4m6D77T5skJK7cTsxbIaL9pgiJu+C7FULintJECokLAL0D\nw0Li+js8FBJ3aIKTkLjFV3VC4g7qHwmJ+2BYTNzvKKcKiTswLOb/ZfeHxNxnT4WDkLjW7u/+PUwu\nLi5W8UItIiIiIiIaf3/3BVNvb++49cXCi4iIiIjIunANExERERERkQUsmIiIiIiIiCxgwURERERE\nRGQBCyYiIiIiIiILWDARERERERFZwIKJiIiIiIjIAhZMRERERERWqr6+HiqVCgqFAjKZDLNmzUJa\nWhru3bsnOjUAQENDA2xsbHDx4sUx9TM4OIjk5GRMnToVTk5OUKvVuHXr1rjkyIKJiIiIiMgKVVZW\nQqVSwcvLC0eOHEFVVRU2btyIvLw8qFQqPHr0SHSK4yYxMRGHDx+GRqPBu+++i0uXLiEiImJcrvHv\n/sW1RERERETWKDs7GyqVCvv27TO2LVmyBH5+foiKikJNTQ1WrFghMMPxcf36dRw+fBg///nPoVar\nAQBf+9rX4Ovri1/96leIiYkZU/8cYSIiIiIiskI6nQ56vX5E+/Lly5GZmYlp06YZ286dO4eIiAi4\nuLhgwoQJ8PPzMym0Dh48CFdXV1RXVyMgIAAymQzz589HW1sbSktL4evrC0dHR6xatQo6nQ4AoNVq\nYWNjg4qKCgQHB2PixIkICAjAsWPHRs37woULCA8Ph1wuh5ubGzZv3oyBgQGLx588eRIAEBUVZWx7\n7bXX8Prrr+PEiRNPd7NGwYKJiIiIiMgKrVy5EjU1NVi9ejWKiopw+/ZtAICtrS1SUlLg7+8PALh5\n8ybCwsLg5OSE4uJilJWVYebMmUhMTMTly5eN/fX39yMpKQmpqakoKipCe3s7IiMjkZaWhqysLOTm\n5qKurg7p6ekmeaxduxaLFy/G8ePHMXv2bKjVatTV1ZnN+erVqwgNDYVUKsXRo0eh0WhQVFSEuLg4\ni9f53nvvYerUqZDJZCbt3t7eeO+9957r3n0ap+QREREREVmhXbt2obe3F4cOHUJFRQUAwM/PD7Gx\nsdi2bRucnZ0BAFeuXMHChQtRWFgIqVQKAAgKCsLkyZPR2NhoLKwePnwIjUZjnPbW3NyMrKwsNDY2\nIiQkBABQW1uLs2fPmuShVquh0WgAPB7dunbtGjIzM7Fs2bIROWdkZMDd3R2VlZWwtX1cqvj4+CA0\nNBSnT5/GokWLRpzz8ccfw8HBYUS7g4MD2tvbn/3GfQZHmIiIiIiIrJCdnR3y8/Nx48YN5ObmIiYm\nBl1dXdi5cyf8/f2h1WoB/G0kamhoCJcuXUJxcTF2794N4PHT5z4tKCjI+LObmxsAYO7cucY2hUKB\nO3fumJwTHx9vsh8dHY0zZ86YzfnUqVPGQmp4eBjDw8MIDg6Gk5MT6uvrzZ5jMBggkUjMfvbXAnAs\nWDCNIxcXF0gkki/MRkRERETWz8PDA4mJiSgpKUF3dzcKCgqg0+mwfft2AIBer8fWrVuhUCgQGBiI\ntLQ09PX1AXhcjHyao6PjiP7t7e1Hje/u7m6y7+rqiqGhIdy/f3/EsT09PcjLy4OdnZ3J1t/fb5xS\n+FmTJk1Cf3//iPb+/n5MmjRp1NyeBqfkjaPe3l7RKTyTDg9P0SkQERER0QvQ3NyMqKgonDhxwmQE\nSCqVYt26dSgrK0NbWxuAx1P39u/fj8OHDyMiIgIymQwDAwPIz88fl1x6enrg4+Nj3O/q6oJMJoNc\nLh9xrLOzM6Kjo5GUlGTSbjAYMGXKFLP9+/j44Pbt2xgcHMSECROM7R988AEWL1485vw5wkRERERE\nZGV8fX0xMDCAnJycEZ/p9Xpcv37duDapqakJ8+bNw5o1a4wPTqiqqgIwcoTpeZSXl5vsl5aWYunS\npWaPDQkJQWtrK5RKpXHz9PREamqqyQMoPi08PBx6vR5lZWXGtvfffx9Xr15FeHj4mPPnCBMRERER\nkZVxcXFBZmYmkpOT0d3djYSEBLi7u6OzsxN5eXno7OxEamoqgMfrkrKysrB37174+/vj/PnzyM7O\nhlwuNztt7lnt2bMHDg4OUCqVKCgoQGtrKw4cOGD22PT0dCxYsABxcXFYv349Hjx4gIyMDHR0dECp\nVJo959VXX4VarcbGjRtx9+5dODs74wc/+AG+9rWvITo6esz5c4SJiIiIiMgKbdmyBeXl5TAYDNi0\naRPCw8ORnJwMLy8vtLS0YMaMGQCAlJQUJCQkYMeOHYiMjER9fT2qq6sRFhaG5uZmY3/m1sB/ts3c\nWvns7GyUlJQgJiYG7e3tqK2tRWBgoNk+lEolTp48CZ1Oh9jYWGzYsAGenp5oaGjA1KlTLV7rN6Nu\n1AAAIABJREFUu+++i3/8x3/E97//fWzcuBFf//rXUVlZOS7r9iWG5xhnk0gk4zI8R2KJWsN0+MhJ\nIXFPXe0WEneZ/5eExC08Mfb3DnyRfE3QffafNvbFpM9DbidmgkC0n/n54y/agu9WCIl7ShMpJC4A\n9A4MC4nr7/BQSNyhCU5C4hZf1QmJO6h/JCTug2Excb+jtPwf3RdpYFjM/1fvD4m5z56KkY/WFkmr\n1cLb2xt1dXUWp+B9EXCEiYiIiIiIyAIWTERERERE9EJYw6ts+NAHIiIiIiIad9OnT4derxedxphx\nhImIiIiIiMgCFkxEREREREQWsGAiIiIiIiKygAUTERERERGRBSyYiIiIiIiILGDBREREREREZIHE\nYDA88yuQJRIJnuM0esl0eHgKifvt//iFkLgDA0NC4kptxXwvMfdVhZC4h/JrhMR19vQWEjc8dLqY\nuH5uQuK23LwjJG71724IidvfOyAkLgBELn9NSNyLf+4REvfBfTG/oydNmSgk7qCgf5M+6vhYSNzB\ngWEhcb8eNE1I3IvNN4XE/XC/Wkhca8cRJiIiIiIiIgtYMBEREREREVnAgomIiIiIiMgCFkxERERE\nREQWsGAiIiIiIiKygAUTERERERGRBSyYiIiIiIiILGDBREREREREZAELJiIiIiIiK1VfXw+VSgWF\nQgGZTIZZs2YhLS0N9+7dE50aAKChoQE2Nja4ePHiuPV57do1yGQyHDp0aFz6Y8FERERERGSFKisr\noVKp4OXlhSNHjqCqqgobN25EXl4eVCoVHj16JDrFcWcwGPDmm29icHAQEolkXPq0HZdeiIiIiIjo\npZKdnQ2VSoV9+/YZ25YsWQI/Pz9ERUWhpqYGK1asEJjh+MvJycGNGzfGtU+OMBERERERWSGdTge9\nXj+iffny5cjMzMS0adOMbefOnUNERARcXFwwYcIE+Pn5mRRaBw8ehKurK6qrqxEQEACZTIb58+ej\nra0NpaWl8PX1haOjI1atWgWdTgcA0Gq1sLGxQUVFBYKDgzFx4kQEBATg2LFjo+Z94cIFhIeHQy6X\nw83NDZs3b8bAwMATr1er1SItLQ05OTlPe4ueCgsmIiIiIiIrtHLlStTU1GD16tUoKirC7du3AQC2\ntrZISUmBv78/AODmzZsICwuDk5MTiouLUVZWhpkzZyIxMRGXL1829tff34+kpCSkpqaiqKgI7e3t\niIyMRFpaGrKyspCbm4u6ujqkp6eb5LF27VosXrwYx48fx+zZs6FWq1FXV2c256tXryI0NBRSqRRH\njx6FRqNBUVER4uLinni93/nOd/DGG29gyZIlz3nHzOOUPCIiIiIiK7Rr1y709vbi0KFDqKioAAD4\n+fkhNjYW27Ztg7OzMwDgypUrWLhwIQoLCyGVSgEAQUFBmDx5MhobG42F1cOHD6HRaKBWqwEAzc3N\nyMrKQmNjI0JCQgAAtbW1OHv2rEkearUaGo0GwOPRrWvXriEzMxPLli0bkXNGRgbc3d1RWVkJW9vH\npYqPjw9CQ0Nx+vRpLFq0yOy1FhQU4MqVKyguLh73tVkcYSIiIiIiskJ2dnbIz8/HjRs3kJubi5iY\nGHR1dWHnzp3w9/eHVqsF8LeRqKGhIVy6dAnFxcXYvXs3AGBwcNCkz6CgIOPPbm5uAIC5c+ca2xQK\nBe7cuWNyTnx8vMl+dHQ0zpw5YzbnU6dOGQup4eFhDA8PIzg4GE5OTqivrzd7zq1bt/Dd734XOTk5\ncHJyetJteWYsmF5CCoUCEonkhW9EREREZP08PDyQmJiIkpISdHd3o6CgADqdDtu3bwcA6PV6bN26\nFQqFAoGBgUhLS0NfXx+Ax0+d+zRHR8cR/dvb248a393d3WTf1dUVQ0NDuH///ohje3p6kJeXBzs7\nO5Otv7/fOKXws9566y2EhoZi9erVGB4eNq7b0uv1ZtdwPStOyXsJ9fX1jfjL+SJ0eHi+8BhERERE\n9Plrbm5GVFQUTpw4YTICJJVKsW7dOpSVlaGtrQ3A46l7+/fvx+HDhxEREQGZTIaBgQHk5+ePSy49\nPT3w8fEx7nd1dUEmk0Eul4841tnZGdHR0UhKSjJpNxgMmDJlitn+f/WrXwEAXnnlFZP2N998ExkZ\nGfjggw/GlD8LJiIiIiIiK+Pr64uBgQHk5OTg4MGDJp/p9Xpcv34d8+bNAwA0NTVh3rx5WLNmjfGY\nqqoqACNHmJ5HeXk5goODjfulpaVYunSp2WNDQkLQ2toKpVJpbNPpdPiXf/kXbNq0CV5eXiPOaWlp\nMdnv7+9HWFgYtm/fbnJNz4sFExERERGRlXFxcUFmZiaSk5PR3d2NhIQEuLu7o7OzE3l5eejs7ERq\naiqAx+uSsrKysHfvXvj7++P8+fPIzs6GXC43O23uWe3ZswcODg5QKpUoKChAa2srDhw4YPbY9PR0\nLFiwAHFxcVi/fj0ePHiAjIwMdHR0mBRRn/bZ9r+uoZo+fTpef/31MefPNUxERERERFZoy5YtKC8v\nh8FgwKZNmxAeHo7k5GR4eXmhpaUFM2bMAACkpKQgISEBO3bsQGRkJOrr61FdXY2wsDA0Nzcb+zO3\nBv6zbebWymdnZ6OkpAQxMTFob29HbW0tAgMDzfahVCpx8uRJ6HQ6xMbGYsOGDfD09ERDQwOmTp06\nLvflWUkMzzHOJpFIPpc1Nn+vPq/7K2oN07f/4xdC4g4MDAmJK7UV873E3FcVQuIeyq8REtfZ01tI\n3PDQ6WLi+rkJidty886TD3oBqn83vm9tf1r9vU9+UeKLErn8NSFxL/65R0jcB/fF/I6eNGWikLiD\ngv5N+qjjYyFxBweGhcT9etC0Jx/0Alxsvikk7of71ULiWqLVauHt7Y26ujqLU/C+CDjCRERERERE\nZAELJiIiIiIieiGs4VU2fOgDERERERGNu+nTp4/Le5BE4wgTERERERGRBSyYiIiIiIiILGDBRERE\nREREZAELJiIiIiIiIgtYMBEREREREVnAgomIiIiIiMgCicFgMDzzSRIJnuM0ekqf1/3t8PB84THM\n+cayXULiTvPzEBJXaivme4n7Hw8KiWs3QSok7kcd/ULizpozVUhc/SMxv4OlNmLep9Hxl7tC4sqd\nJgiJCwDOTvZC4ob6uQqJ+8tTHwiJa/uKmN/RNy5fFxJX4eEuJO5XXp0sJG5LdbOQuKJ0H98mOgWr\nxBEmwRQKBSQSiclGREREREQvB764VrC+vr4Ro0ksmoiIiIiIXg4cYSIiIiIiIrKABRMREREREZEF\nLJiIiIiIiIgsYMFERERERERkAQsmIiIiIiIiC1gwERERERERWcCCiYiIiIiIyAIWTEREREREVqq+\nvh4qlQoKhQIymQyzZs1CWloa7t27Jzo1AEBDQwNsbGxw8eLFceszOTkZq1atGrf+WDAREREREVmh\nyspKqFQqeHl54ciRI6iqqsLGjRuRl5cHlUqFR48eiU5x3OXk5OCdd96BRCIZtz5tx60nIiIiIiJ6\naWRnZ0OlUmHfvn3GtiVLlsDPzw9RUVGoqanBihUrBGY4frq7u/G9730PR44cwaRJk8a1b44wERER\nERFZIZ1OB71eP6J9+fLlyMzMxLRp04xt586dQ0REBFxcXDBhwgT4+fmZFFoHDx6Eq6srqqurERAQ\nAJlMhvnz56OtrQ2lpaXw9fWFo6MjVq1aBZ1OBwDQarWwsbFBRUUFgoODMXHiRAQEBODYsWOj5n3h\nwgWEh4dDLpfDzc0NmzdvxsDAwKjnZGZmoqmpCTU1NZgzZ86z3KYnYsFERERERGSFVq5ciZqaGqxe\nvRpFRUW4ffs2AMDW1hYpKSnw9/cHANy8eRNhYWFwcnJCcXExysrKMHPmTCQmJuLy5cvG/vr7+5GU\nlITU1FQUFRWhvb0dkZGRSEtLQ1ZWFnJzc1FXV4f09HSTPNauXYvFixfj+PHjmD17NtRqNerq6szm\nfPXqVYSGhkIqleLo0aPQaDQoKipCXFzcqNf61ltvobW1FUuXLoXBYBjLbRuBU/KIiIiIiKzQrl27\n0Nvbi0OHDqGiogIA4Ofnh9jYWGzbtg3Ozs4AgCtXrmDhwoUoLCyEVCoFAAQFBWHy5MlobGw0FlYP\nHz6ERqOBWq0GADQ3NyMrKwuNjY0ICQkBANTW1uLs2bMmeajVamg0GgCPR7euXbuGzMxMLFu2bETO\nGRkZcHd3R2VlJWxtH5cqPj4+CA0NxenTp7Fo0SKz1zpz5swx3avRcITpJeTi4gKJRPLCNyIiIiKy\nXnZ2dsjPz8eNGzeQm5uLmJgYdHV1YefOnfD394dWqwXwt5GooaEhXLp0CcXFxdi9ezcAYHBw0KTP\noKAg489ubm4AgLlz5xrbFAoF7ty5Y3JOfHy8yX50dDTOnDljNudTp04ZC6nh4WEMDw8jODgYTk5O\nqK+vf467MHYsmF5Cvb29MBgML3wjIiIiIuvn4eGBxMRElJSUoLu7GwUFBdDpdNi+fTsAQK/XY+vW\nrVAoFAgMDERaWhr6+voAYMT/GR0dHUf0b29vP2p8d3d3k31XV1cMDQ3h/v37I47t6elBXl4e7Ozs\nTLb+/n7jlMLPG6fkERERERFZmebmZkRFReHEiRMmI0BSqRTr1q1DWVkZ2traADyeurd//34cPnwY\nERERkMlkGBgYQH5+/rjk0tPTAx8fH+N+V1cXZDIZ5HL5iGOdnZ0RHR2NpKQkk3aDwYApU6aMSz7P\niiNMRERERERWxtfXFwMDA8jJyRnxmV6vx/Xr141rk5qamjBv3jysWbMGMpkMAFBVVQVg5AjT8ygv\nLzfZLy0txdKlS80eGxISgtbWViiVSuPm6emJ1NRUkwdQfJ44wkREREREZGVcXFyQmZmJ5ORkdHd3\nIyEhAe7u7ujs7EReXh46OzuRmpoK4PG6pKysLOzduxf+/v44f/48srOzIZfLzU6be1Z79uyBg4MD\nlEolCgoK0NraigMHDpg9Nj09HQsWLEBcXBzWr1+PBw8eICMjAx0dHVAqlU8dczyXn3CEiYiIiIjI\nCm3ZsgXl5eUwGAzYtGkTwsPDkZycDC8vL7S0tGDGjBkAgJSUFCQkJGDHjh2IjIxEfX09qqurERYW\nhubmZmN/5h4a9tk2cw8Xy87ORklJCWJiYtDe3o7a2loEBgaa7UOpVOLkyZPQ6XSIjY3Fhg0b4Onp\niYaGBkydOvWprnu8H3AmMTxH+SWRSPjQgHEi8l52eHgKifuNZbuExJ3m5yEkrtRWzPcS9z8efPJB\nL4DdBKmQuB919AuJO2vO0/3yHm/6R2J+b0htxDxhs+Mvd4XElTtNEBIXAJydRl9E/aKE+rkKifvL\nUx8IiWv7ipjf0TcuXxcSV+Hh/uSDXoCvvDpZSNyW6uYnH2RFuo9vE52CCa1WC29vb9TV1VmcgvdF\nwBEmIiIiIiIiC1gwfU4UCgXfhUREREREf1es4f+7fOjD56Svr8/s1Dtr+EtERERERPRZ06dPh16v\nF53GmHGEiYiIiIiIyAIWTERERERERBawYCIiIiIiIrKABRMREREREZEFLJiIiIiIiIgsYMFERERE\nRERkAR8r/ndszYYDQuJO7HsgJK4otz7oExLX/VWFkLhLAr4sJO6JRzeFxO3q6hcS960IPyFxd+a3\nCInr7CoXEnfezClC4gLAsbIrQuL6fNlBSNzNq2cJiav5vz8Iifsl768Iifvg/kMhcc9XnRESd97K\nhULi6h+NfJUMfXFxhImIiIiIiMgCFkxEREREREQWsGAiIiIiIiKygAUTERERERGRBSyYiIiIiIiI\nLGDBREREREREZAELJiIiIiIiIgtYMBEREREREVnAgomIiIiIyErV19dDpVJBoVBAJpNh1qxZSEtL\nw71790SnBgBoaGiAjY0NLl68OG59JicnY9WqVSPa29vb8a1vfQseHh5QKBT45je/id///vdP7I8F\nExERERGRFaqsrIRKpYKXlxeOHDmCqqoqbNy4EXl5eVCpVHj06JHoFMddTk4O3nnnHUgkEpP2gYEB\nLF++HJcuXcI777yDwsJCSCQShIaGQqvVjtqn7QvMl4iIiIiIBMnOzoZKpcK+ffuMbUuWLIGfnx+i\noqJQU1ODFStWCMxw/HR3d+N73/sejhw5gkmTJo34vKKiAteuXcOf//xneHt7A3h8L7y8vPDTn/4U\nGo3GYt8cYSIiIiIiskI6nQ56vX5E+/Lly5GZmYlp06YZ286dO4eIiAi4uLhgwoQJ8PPzMym0Dh48\nCFdXV1RXVyMgIAAymQzz589HW1sbSktL4evrC0dHR6xatQo6nQ4AoNVqYWNjg4qKCgQHB2PixIkI\nCAjAsWPHRs37woULCA8Ph1wuh5ubGzZv3oyBgYFRz8nMzERTUxNqamowZ86cEZ+7uLhg69atxmIJ\nAGQyGaZNm/bEESYWTEREREREVmjlypWoqanB6tWrUVRUhNu3bwMAbG1tkZKSAn9/fwDAzZs3ERYW\nBicnJxQXF6OsrAwzZ85EYmIiLl++bOyvv78fSUlJSE1NRVFREdrb2xEZGYm0tDRkZWUhNzcXdXV1\nSE9PN8lj7dq1WLx4MY4fP47Zs2dDrVajrq7ObM5Xr15FaGgopFIpjh49Co1Gg6KiIsTFxY16rW+9\n9RZaW1uxdOlSGAyGEZ8vW7YMe/bsMWn78MMPceXKFfj5+Y3aN6fkERERERFZoV27dqG3txeHDh1C\nRUUFAMDPzw+xsbHYtm0bnJ2dAQBXrlzBwoULUVhYCKlUCgAICgrC5MmT0djYaCysHj58CI1GA7Va\nDQBobm5GVlYWGhsbERISAgCora3F2bNnTfJQq9XGKW/Lly/HtWvXkJmZiWXLlo3IOSMjA+7u7qis\nrISt7eNSxcfHB6GhoTh9+jQWLVpk9lpnzpz5TPfm4cOHePPNNyGTyZCYmDjqsRxhIiIiIiKyQnZ2\ndsjPz8eNGzeQm5uLmJgYdHV1YefOnfD39zdORfvrSNTQ0BAuXbqE4uJi7N69GwAwODho0mdQUJDx\nZzc3NwDA3LlzjW0KhQJ37twxOSc+Pt5kPzo6GmfOnDGb86lTp4yF1PDwMIaHhxEcHAwnJyfU19c/\nx10YaXBwEHFxcfjtb3+Ln/3sZ5g6deqox7NgEszFxQUSiUTIRkRERETWz8PDA4mJiSgpKUF3dzcK\nCgqg0+mwfft2AIBer8fWrVuhUCgQGBiItLQ09PX1AcCI6W2Ojo4j+re3tx81vru7u8m+q6srhoaG\ncP/+/RHH9vT0IC8vD3Z2diZbf3+/cUrhWNy9excqlQpVVVU4dOgQVq9e/cRzOCVPsN7eXmGxg39Y\nLSw2EREREb04zc3NiIqKwokTJ0xGgKRSKdatW4eysjK0tbUBeDx1b//+/Th8+DAiIiIgk8kwMDCA\n/Pz8ccmlp6cHPj4+xv2uri7IZDLI5fIRxzo7OyM6OhpJSUkm7QaDAVOmTBlTHh999BHCw8Px5z//\nGSUlJYiKinqq8zjCRERERERkZXx9fTEwMICcnJwRn+n1ely/ft24NqmpqQnz5s3DmjVrIJPJAABV\nVVUARo4wPY/y8nKT/dLSUixdutTssSEhIWhtbYVSqTRunp6eSE1NNXkAxbMaGhpCZGQktFotqqur\nn7pYAjjCRERERERkdVxcXJCZmYnk5GR0d3cjISEB7u7u6OzsRF5eHjo7O5Gamgrg8bqkrKws7N27\nF/7+/jh//jyys7Mhl8vNTpt7Vnv27IGDgwOUSiUKCgrQ2tqKAwcOmD02PT0dCxYsQFxcHNavX48H\nDx4gIyMDHR0dUCqVTx3zs4VeTk4Ozp8/j+9///uwtbVFc3Oz8TOFQjHqQyNYMBERERERWaEtW7bg\ntddeQ05ODjZt2oQ7d+5gypQpUKlUePfdd+Hl5QUASElJwa1bt7Bjxw588sknWLRoEaqrq/H222+b\nFBbm1sB/ts3cWvns7GwcPHgQGRkZmDNnDmpraxEYGGi2D6VSiZMnTyI1NRWxsbGwt7dHSEgICgsL\nn/hwhtFyKCsrg0QigUajGfGS2qioKJSVlVnuz/Ac42wSiWRchuf+nryM90zUGqY7fQ+ExFVMdRAS\nt/vmXSFx3V9VCIm7JODLQuKeOHtTSFxR3ooY/Z0RL8rO/BYhcZ1dR85z/zyEBro/+aAX5FjZFSFx\n/7/VrwuJ+3VPZyFxNf/3ByFxX5kg5jvrB/cfCon70QfvCYk7b+VCIXH1j8T8n6/638RcryVarRbe\n3t6oq6uzOAXvi4BrmIiIiIiIiCxgwURERERERC+ENbzKhmuYiIiIiIho3E2fPh16vV50GmPGESYi\nIiIiIiILWDARERERERFZ8FxT8lxcXKxiPiIREREREdFonqtg6u3tHe88rB4LTCIiIiKiLx5OySMi\nIiIiIrKABRMREREREZEFEoPBIOZVxH9nJBIJXrZbHfzDaiFx7959ICSuXi/m/kcte1VI3NO/vyUk\n7gwvZyFxdYL+Xl072yokrsOULwmJayNoerFE0Nd79/vuigkMwMbWTkhcu4n2QuLKnSYIiRs8Z6qQ\nuHc+GRISt0N3X0jc1wX92/D7azohce9+9ImQuK3//Q9C4lo7jjARERERERFZwIKJiIiIiIjIAhZM\nREREREREFrBgIiIiIiIisoAFExERERERkQUsmIiIiIiIiCxgwURERERERGQBCyYiIiIiIiILWDAR\nEREREVmp+vp6qFQqKBQKyGQyzJo1C2lpabh3757o1AAADQ0NsLGxwcWLF8fUz927d5GUlIRp06Zh\n8uTJiI6OxocffjguObJgIiIiIiKyQpWVlVCpVPDy8sKRI0dQVVWFjRs3Ii8vDyqVCo8ePRKd4rhZ\nu3YtSktLkZWVhZ/97Gdob29HeHg47t+/P+a+bcchPyIiIiIieslkZ2dDpVJh3759xrYlS5bAz88P\nUVFRqKmpwYoVKwRmOD56enpQXl6OgoIC/PM//zMAYObMmfD19cWJEyewZs2aMfXPESYiIiIiIiuk\n0+mg1+tHtC9fvhyZmZmYNm2ase3cuXOIiIiAi4sLJkyYAD8/P5NC6+DBg3B1dUV1dTUCAgIgk8kw\nf/58tLW1obS0FL6+vnB0dMSqVaug0+kAAFqtFjY2NqioqEBwcDAmTpyIgIAAHDt2bNS8L1y4gPDw\ncMjlcri5uWHz5s0YGBiwePzdu3cBAI6OjsY2hUIBAOjr63uKOzU6FkxERERERFZo5cqVqKmpwerV\nq1FUVITbt28DAGxtbZGSkgJ/f38AwM2bNxEWFgYnJycUFxejrKwMM2fORGJiIi5fvmzsr7+/H0lJ\nSUhNTUVRURHa29sRGRmJtLQ0ZGVlITc3F3V1dUhPTzfJY+3atVi8eDGOHz+O2bNnQ61Wo66uzmzO\nV69eRWhoKKRSKY4ePQqNRoOioiLExcVZvE5vb2984xvfwK5du3Dt2jV0d3dj8+bNmDRpEiIiIsZ6\nGzklj4iIiIjIGu3atQu9vb04dOgQKioqAAB+fn6IjY3Ftm3b4OzsDAC4cuUKFi5ciMLCQkilUgBA\nUFAQJk+ejMbGRmNh9fDhQ2g0GqjVagBAc3MzsrKy0NjYiJCQEABAbW0tzp49a5KHWq2GRqMB8Hh0\n69q1a8jMzMSyZctG5JyRkQF3d3dUVlbC1vZxqeLj44PQ0FCcPn0aixYtMnutRUVFWLx4MWbNmgUA\nsLe3x69//Wu4u7s//w38fzjCRERERERkhezs7JCfn48bN24gNzcXMTEx6Orqws6dO+Hv7w+tVgvg\nbyNRQ0NDuHTpEoqLi7F7924AwODgoEmfQUFBxp/d3NwAAHPnzjW2KRQK3Llzx+Sc+Ph4k/3o6Gic\nOXPGbM6nTp0yFlLDw8MYHh5GcHAwnJycUF9fb/acO3fu4Jvf/CYcHBxQUlKC2tparFq1CtHR0SOK\nt+fBgukloVAoIJFIPteNiIiIiKyfh4cHEhMTUVJSgu7ubhQUFECn02H79u0AAL1ej61bt0KhUCAw\nMBBpaWnGtT8Gg8Gkr0+vE/ore3v7UeN/dpTH1dUVQ0NDZp9g19PTg7y8PNjZ2Zls/f39ximFn3Xg\nwAF88MEHOHHiBGJiYhAeHo6ioiK8/vrr+N73vjdqbk+DBdNLoq+vDwaD4XPdiIiIiMg6NTc3Y8qU\nKWhpaTFpl0qlWLduHSIjI9HW1gbg8dS9/fv34/Dhw+jv70dbWxt+8pOfjFsuPT09JvtdXV2QyWSQ\ny+UjjnV2dsabb76JlpYWk+3cuXP4wQ9+YLb/999/H56enpg6dapJ+4IFC3D16tUx58+CiYiIiIjI\nyvj6+mJgYAA5OTkjPtPr9bh+/bpxbVJTUxPmzZuHNWvWQCaTAQCqqqoAjBxheh7l5eUm+6WlpVi6\ndKnZY0NCQtDa2gqlUmncPD09kZqaavIAik/z9vbGzZs30dHRYdJ+9uxZeHt7jzl/PvSBiIiIiMjK\nuLi4IDMzE8nJyeju7kZCQgLc3d3R2dmJvLw8dHZ2IjU1FcDjdUlZWVnYu3cv/P39cf78eWRnZ0Mu\nl4/Li1/37NkDBwcHKJVKFBQUoLW1FQcOHDB7bHp6OhYsWIC4uDisX78eDx48QEZGBjo6OqBUKs2e\ns2HDBrzzzjtYuXIl3n77bTg6OuJnP/sZmpqacPz48THnzxEmIiIiIiIrtGXLFpSXl8NgMGDTpk0I\nDw9HcnIyvLy80NLSghkzZgAAUlJSkJCQgB07diAyMhL19fWorq5GWFgYmpubjf2ZWwP/2TZza+Wz\ns7NRUlKCmJgYtLe3o7a2FoGBgWb7UCqVOHnyJHQ6HWJjY7FhwwZ4enqioaFhxJS7v5o8eTLOnz+P\n2bNnY+vWrXjjjTfQ0dGB+vp6REVFPfuN++w1GriY5XMhkUhGHdJ80ucvQvAPqz/XeH919+4DIXH1\nejF/1aOWvSok7unf3xISd4aXs5C4OkF/r66dbRUS12HKl4TEtRH0wBiJoK/37vfdFRMek/xhAAAg\nAElEQVQYgI2tnZC4dhNHX7z9osidJgiJGzzH/H/AXrQ7nwwJiduhG/towfN4XdC/Db+/phMS9+5H\nnwiJ2/rf/yAkriVarRbe3t6oq6uzOAXvi4AjTERERERERBawYCIiIiIiohfi/2/vzuNjuP8/gL9m\nN9cmm1OSuiJpijhSRxRVqq4ibt+vq2jpD3VUBG1Vv0lFkTjiqpKvo6ij1RaVhhISNxVFXFWkVBRp\nSVGCiGS9f3/0kf1aSWhrNpNmX8/HYx+PzOxkXnN8dmY/O5+ZT2noyoYPfSAiIiIiItUFBATAZDJp\nvRhPjFeYiIiIiIiIisAKExERERERURFYYSIiIiIiIioCK0xERERERERFYIWJiIiIiIioCKwwERER\nERERFYGPFS8mnp6eJe459Gs/HqhJ7qDILzTJzc7J0yTXwU6vSW6NKmU0yW0e5KNJ7pIdP2mSa+dg\n0CTXt6KbJrk6vTa/s9V62lOTXC+joya5ALDw42RNcitVD9Yk99aNu5rkrvtyjya5Bo+nNMlt2ixQ\nk1wHO22OHfdytHmkdVBNbfYvWQcrTMXk2rVrj3y/pFWmiIiIiIiITfKIiIiIiIiKxAoTERERERFR\nEVhhIiIiIiIiKgIrTEREREREREVghYmIiIiIiKgIrDAREREREREVgRUmIiIiIiKiIrDCRERERERU\nSm3duhVt2rSBl5cXDAYDqlevjsjISNy6dUvrRQMA7NixAzqdDqmpqU80n7Vr10Kn0xV4xcXFPfEy\nsuNaIiIiIqJSaOPGjejUqRP+7//+D+Hh4XB2dkZqaiomT56M7du3Y/fu3dDpSsf1k6NHj6JKlSpY\nsWKFxfiAgIAnnjcrTEREREREpVBsbCzatGmDhQsXmsc1a9YM1apVQ4cOHbBlyxa0bdtWwyVUz7Fj\nx1CvXj00aNBA9XmXjiolERERERFZyMzMhMlkKjC+devWiImJQcWKFc3jvvvuO7Rr1w6enp5wdHRE\ntWrVLCpan3zyCXx8fLB582Y8++yzMBgMaNiwIU6dOoV169YhKCgIrq6u6NixIzIzMwEA6enp0Ol0\n2LBhA55//nk4Ozvj2WefxVdfffXI5T506BBatmwJFxcX+Pr6YsSIEcjOzn7k/xw7dgy1atX6K5vn\nT2OFiYiIiIioFAoNDcWWLVvQqVMnfPHFF/j1118BAHZ2dhg7diyCg4MBAD///DOaN28ONzc3rFmz\nBgkJCahatSqGDBmC77//3jy/rKwsDB06FBEREfjiiy9w4cIFtG/fHpGRkZgyZQri4uKQnJyM999/\n32I5XnvtNbz00kuIj49HrVq10L17dyQnJxe6zD/88AOaNm0KvV6P1atXY+rUqfjiiy/Qo0ePItcz\nKysL6enpSE1NRVBQEBwcHFC7dm1s2rTpSTchADbJIyIiIiIqlaKjo3Ht2jUsW7YMGzZsAABUq1YN\n3bp1w+jRo+Hh4QEAOHHiBBo3boxPP/0Uer0eANCgQQOUKVMGu3btMles7t27h6lTp6J79+4AgJSU\nFEyZMgW7du1CkyZNAABJSUnYv3+/xXJ0794dU6dOBfDH1a3Tp08jJiYGrVq1KrDMEydORPny5bFx\n40bY2f1RValSpQqaNm2K3bt348UXXyzwP8ePHwfwxxWtWbNmQa/XIy4uDh07dkRycjKaNWv2RNuR\nV5iIiIiIiEohBwcHLF68GOfPn0dcXBy6du2Ky5cvY9KkSQgODkZ6ejqA/12Jys3NxdGjR7FmzRpM\nnjwZAJCTk2MxzwfvEfL19QUAPPfcc+ZxXl5e+P333y3+p3fv3hbDXbp0wd69ewtd5u3bt5srUnl5\necjLy8Pzzz8PNzc3bN26tdD/qVmzJhITE7F9+3a0a9cObdq0wbp161C9enVMmjTpcZvpsVhhKiE8\nPT2hKEqxvoiIiIio9KtQoQKGDBmCtWvX4sqVK1iyZAkyMzMxfvx4AIDJZMLIkSPh5eWFevXqITIy\nEtevXwcAiIjFvFxdXQvM38nJ6ZH55cuXtxj28fFBbm4ubt++XWDaq1evYsGCBXBwcLB4ZWVlmZsU\nPszd3R2tW7eGi4uLeZxOp0OrVq1w9OjRRy7bn8EmeSXEtWvXij3zUgW/Ys8kIiIiIutLSUlBhw4d\nkJiYaHEFSK/Xo3///khISMCpU6cA/NF0b9GiRVixYgXatWsHg8GA7OxsLF68WJVluXr1KqpUqWIe\nvnz5MgwGg0UFJ5+Hhwe6dOmCoUOHWowXEXh7exc6/8OHD+PQoUMYOHCgxfjs7Gz4+Pg88fLzChMR\nERERUSkTFBSE7OxszJ07t8B7JpMJZ8+eNd+btG/fPtSvXx///ve/YTAYAMD8wISHrzD9HevXr7cY\nXrduHVq0aFHotE2aNMHJkycREhJifvn5+SEiIsLiARQPOnz4MN544w0cOXLEPC47OxsbN27ESy+9\n9MTLzytMRERERESljKenJ2JiYjBq1ChcuXIF/fr1Q/ny5ZGRkYEFCxYgIyMDERERAP64L2nKlCmY\nN28egoODceDAAcTGxsLFxaXQZnN/1cyZM2E0GhESEoIlS5bg5MmT+Pjjjwud9v3338cLL7yAHj16\n4PXXX8fdu3cxceJEXLp0CSEhIYX+T8+ePTF58mR0794d0dHRcHJyQmxsLO7cuYPIyMgnXn5eYSIi\nIiIiKoXCw8Oxfv16iAjCwsLQsmVLjBo1Cv7+/jh48CCefvppAMDYsWPRr18/fPDBB2jfvj22bt2K\nzZs3o3nz5khJSTHPr7B74B8eV9i98rGxsVi7di26du2KCxcuICkpCfXq1St0HiEhIdi2bRsyMzPR\nrVs3DBw4EH5+ftixYwfKlStX6Hq6uLhg27ZteO655zBixAj07t0bRqMRu3btQoUKFf76hnt4HUWN\n62z0j6TVPUyDIr/QJDc7J0+T3IZVCm9va22//P7oDt6spXnQk7cV/juW7PhJk9z04z9rklupRsXH\nT2QFOr02v7PVetpTk1wvo6MmuQCw8OPC+yixtqoNgzXJvXXjria5GafOaJJr8HhKk9ymzQI1yfVw\nttckd3dqhia5lSp5aJIbP+h5TXKLkp6ejsDAQCQnJxfZBO+fgFeYiIiIiIiIisAKExERERERWUVp\n6MqGD30gIiIiIiLVBQQEwGQyab0YT4xXmIiIiIiIiIrAChMREREREVERWGEiIiIiIiIqAitMRERE\nRERERWCFiYiIiIiIqAisMBERERERERVBERHReiGIiIiIiIhKIl5hIiIiIiIiKgIrTEREREREREVg\nhYmIiIiIiKgIrDAREREREREVgRUmIiIiIiKiIthpvQBEj5KXl4fbt2/D2dkZ9vb2Vsu5cOEC/Pz8\nrDb/v+POnTtwdnYu1kwRQXp6OhRFQUBAgOrz1+l0GDRoEObMmQNHR0fV5/93mEwmXL16Fb6+vsWa\nm5eXB51OB53OOr9brV69GtOnT8e5c+dQvXp1jBkzBu3bt7eY5sCBA2jZsiVu3rxplWV4UF5eHhwd\nHXHgwAGEhIRYNUtEcPv2beh0umL7DOXk5ODChQvm45WXlxfKlClTLNn57t27hzNnzsDb29sq5dnN\nzc389+MesKsoiqrl6ubNm1i8eDESExORlpaGmzdvQqfTwcPDA0FBQWjZsiUGDhwIV1dX1TIflJ2d\nDYPBUOh7JpMJN27cgJeXl1WyH/bzzz+jXLlyVj0nPuzOnTtIT09HxYoVLcpBcWVb43PcsWNHKIry\n2OlEBIqiICEhQbXsrKwsJCQk4N69e+jSpQs8PT2xePFixMTEICMjA7Vq1UJMTAxatmypWiY9GV5h\nohLn4sWLGDhwICpUqABHR0d4eXnB0dERrq6uePHFFzFt2jTcuXNH1Ux/f3+Ehobi6tWrqs73ccaM\nGYOLFy9ajFuxYgUqV64Mo9EIFxcXhIaG4vDhw6rm3r9/HxMmTECLFi0A/HFCmDZtGtzd3fHMM88g\nMDAQfn5+WLRokaq5ALB8+XLUrVsXSUlJqs/7UX7++WdER0cjKioKP/74IwBg3LhxMBqNKFu2LMqV\nK4dly5apnrt8+XK89tpr5uEvv/wSNWvWhMFggIODA1544QVs3rxZ1cwvv/wSPXv2hI+PD/r27Ysr\nV66gY8eOGDNmjMV0JpMJt27dUi33gw8+wIQJEwp9TZw4ESKChQsXmsepKT09HeHh4QgKCoK9vT3c\n3NxgNBphb2+P4OBghIeHIz09XdVMAEhNTUWrVq1gNBpRtWpVhISEICgoCD4+PvDz88OwYcOQkZGh\namaPHj1w9uxZi3ETJ06El5cXgoODUbZsWVSvXh0bNmxQNXflypUAAHt7e7z11luPfanl9OnTqFGj\nBsaPHw9HR0d06tQJQ4cOxeDBg9GuXTsoioKoqCjUrFkTaWlpquUCQGxsLJ566im4uLjA398f8+bN\nKzDNgQMH4OPjo2puUUwmEwICAnD8+HGrzP/IkSMICwtD3759zeUnLi4Ovr6+CA4Oho+PT4HjiBou\nXbqEGTNmIDIy0ny+S0hIgL+/v/kYHRcXp2pm5cqVsWHDBuzevRtZWVm4efNmoa+srCxkZWWplvvT\nTz+hZs2aePXVVzFgwADUrFkTy5cvx6BBg1C3bl1ERETAyckJoaGh2Llzp2q59ISEqARJS0sTb29v\nqVevngwfPlzat28vBoNBIiMj5Z133pHWrVuLvb29VKtWTX755RfVchVFEW9vb/H19ZWFCxeqNt8/\nk7t//37z8LJly0RRFAkNDZXZs2fL5MmTpX79+mIwGGTPnj2q5UZFRYmTk5OMHTtWRETGjx8vdnZ2\nMnz4cImPj5fVq1dL//79RafTyaJFi1TLVRRF1q9fL507dxZFUaRt27aybds21eZflNTUVHF3dxdn\nZ2dxcXERV1dXmTRpktjb28tbb70lK1askFdffVUURZG1a9eqlvvRRx+JoijSp08fERH573//K4qi\nSIcOHWT27NkSGxsrzZo1E51OJ/Hx8arl1q1bV0aMGGEezsvLk4iICFEURYYPH24ev2/fPlEURbVc\nHx8fURRFDAaDeHh4FHgpiiKurq7i7u4uHh4equXu27dP3NzcJDAwUMLCwmTmzJmyaNEiWbRokcyc\nOVOGDx8uTz/9tLi7u0tKSopquQcOHBBnZ2fp2rWrTJ8+Xd58803x8PCQGTNmyLx58+SNN94QT09P\nKVu2rKSlpamW+/BxIzY2VvR6vQwdOlTi4+Nl1apV0q1bN9XLlYjI3r17xdHRUT766CNV5/soL7/8\nsjRo0ECuX79e5DTXrl2TBg0aSJs2bVTLnTt3rtjZ2cmbb74pH374obRq1UoURZEePXpIbm6ueTq1\nP0f9+/eX119/vdBXv379RFEU6dSpk3mcWrZt2yYODg5SqVIlCQ4OFp1OJzExMeLg4CBjx46V9evX\nS2RkpDg4OMiCBQtUyz18+LB4enqKk5OTuLm5iaOjo6xcuVIcHBykV69e8tFHH0nfvn1VPz6L/HGM\n1uv1snXrVlXn+yidO3eWRo0ayfnz5yUjI0Patm0rer1ewsPDzdPcv39funXrJi+++GKxLRc9GitM\nVKJ07txZevXqZTEu/0SV74cffpCAgAB59dVXVctVFEV27Ngh4eHhYmdnJzVr1pQlS5bIvXv3VMso\nKvfBLz6VK1eWAQMGWExz//596dKlizRp0kS1XH9/f4mNjTUP+/r6yvjx4wtMN3bsWKlatapquQ+u\nb2JiotSpU0cURZFatWpJdHS0nDx5UrWsB7Vo0UI6dOgg2dnZkpuba64cPbzOQ4YMkZCQENVyq1Sp\nIhEREeZhPz8/i4pMvoEDB0rt2rVVyzUajYV+AZgyZYooiiKRkZEiov4XvczMTHnllVfE29tbli9f\nbvFebm6uKIoiBw8eVC0vX6NGjSQ0NNTiS+zD7t27J6GhodK4cWPVclu2bClhYWEW4z777DOpV6+e\nefjy5ctSp04d6dy5s2q5Dx83KlasKO+8806B6QYOHKhqec43depU8fT0lBs3bqg+78I4OztLQkLC\n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\nvoXap8VwAAAAAElFTkSuQmCC\n", "text": [ "" ] } ], "prompt_number": 26 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Our row and column colorbars don't have any meaning, but they sure are pretty. However, the heatmap is looking a cramped with all of the different parts of the image adjacent to each other. Let's add some space and make the row and column colorbars a little smaller. I'm also going to reduce the width of the scale colorbar." ] }, { "cell_type": "code", "collapsed": false, "input": [ "# heatmap with row names\n", "fig = plt.figure(figsize=(12,8))\n", "heatmapGS = gridspec.GridSpec(2,2,wspace=0.0,hspace=0.0,width_ratios=[0.25,1],height_ratios=[0.25,1])\n", "\n", "### col dendrogram ###\n", "colGSSS = gridspec.GridSpecFromSubplotSpec(2,1,subplot_spec=heatmapGS[0,1],wspace=0.0,hspace=0.1,height_ratios=[1,0.15])\n", "col_denAX = fig.add_subplot(colGSSS[0,0])\n", "col_denD = sch.dendrogram(col_clusters,color_threshold=np.inf)\n", "clean_axis(col_denAX)\n", "\n", "### col colorbar ###\n", "col_cbAX = fig.add_subplot(colGSSS[1,0])\n", "col_axi = col_cbAX.imshow([list(col_cbSE.ix[col_denD['leaves']])],interpolation='nearest',aspect='auto',origin='lower')\n", "clean_axis(col_cbAX)\n", "\n", "### row dendrogram ###\n", "rowGSSS = gridspec.GridSpecFromSubplotSpec(1,2,subplot_spec=heatmapGS[1,0],wspace=0.1,hspace=0.0,width_ratios=[1,0.15])\n", "row_denAX = fig.add_subplot(rowGSSS[0,0])\n", "row_denD = sch.dendrogram(row_clusters,color_threshold=np.inf,orientation='right')\n", "clean_axis(row_denAX)\n", "\n", "### row colorbar ###\n", "row_cbAX = fig.add_subplot(rowGSSS[0,1])\n", "row_axi = row_cbAX.imshow([ [x] for x in row_cbSE.ix[row_denD['leaves']].values ],interpolation='nearest',aspect='auto',origin='lower')\n", "clean_axis(row_cbAX)\n", "\n", "### heatmap ####\n", "heatmapAX = fig.add_subplot(heatmapGS[1,1])\n", "axi = heatmapAX.imshow(testDF.ix[row_denD['leaves'],col_denD['leaves']],interpolation='nearest',aspect='auto',origin='lower',norm=my_norm,cmap=cm.RdBu)\n", "clean_axis(heatmapAX)\n", "\n", "## row labels ##\n", "heatmapAX.set_yticks(arange(testDF.shape[0]))\n", "heatmapAX.yaxis.set_ticks_position('right') \n", "heatmapAX.set_yticklabels(testDF.index[row_denD['leaves']])\n", "\n", "## col labels ##\n", "heatmapAX.set_xticks(arange(testDF.shape[1]))\n", "xlabelsL = heatmapAX.set_xticklabels(testDF.columns[col_denD['leaves']])\n", "# rotate labels 90 degrees\n", "for label in xlabelsL:\n", " label.set_rotation(90)\n", "# remove the tick lines\n", "for l in heatmapAX.get_xticklines() + heatmapAX.get_yticklines(): \n", " l.set_markersize(0)\n", "\n", "### scale colorbar ###\n", "scale_cbGSSS = gridspec.GridSpecFromSubplotSpec(1,3,subplot_spec=heatmapGS[0,0],wspace=0.0,hspace=0.0)\n", "scale_cbAX = fig.add_subplot(scale_cbGSSS[0,1]) # colorbar for scale in upper left corner\n", "cb = fig.colorbar(axi,scale_cbAX) # note that we could pass the norm explicitly with norm=my_norm\n", "cb.set_label('Measurements')\n", "cb.ax.yaxis.set_ticks_position('left') # move ticks to left side of colorbar to avoid problems with tight_layout\n", "cb.ax.yaxis.set_label_position('left') # move label to left side of colorbar to avoid problems with tight_layout\n", "cb.outline.set_linewidth(0)\n", "# make colorbar labels smaller\n", "tickL = cb.ax.yaxis.get_ticklabels()\n", "for t in tickL:\n", " t.set_fontsize(t.get_fontsize() - 3)\n", "\n", "#fig.tight_layout()\n", "heatmapGS.tight_layout(fig,h_pad=0.1,w_pad=0.5)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "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\nwHv4MIfEfZyGhgbGjx9PVVXVY6faveg0oiQiIiIiImJDhZKIiIiIiAy4b/oraPQwBxERERERGVDj\nxo2ju9sxU0wHikaUREREREREbKhQEhERERERsTEopt55e3t/4+dAioiIiIjIi2NQFEptbf17PK2K\nLBERERER+TJNvRMREREREbGhQklERERERMSGU09PT88zn+TkxHOc9sIabNcz0CJ+Vj5gfdVuND32\ns5+W1w9YnGfxZtgYu8cc7uaYv1G8kfzPDom7KH6y3WOeq2uxe0yA2+YvHBJ3/ZthDokbONLdIXEd\nwTjUMbPV//bfPrJ7zGVhY+0eE2DEsJccEvdVQ5fdY37U4ZhrdXNxzHIDR/3ce8nZ/tf7csvv7B4T\nwOXVqQ6JO5hpRElERERERMSGCiUREREREREbKpRERERERERsqFASERERERGxoUJJRERERETEhgol\nERERERERGyqUREREREREbKhQEhERERERsaFCSURERERkEKqursZkMmE0GjEYDEycOJG0tDTu3Lnj\n6NQAOHbsGM7Ozpw/f77fff3f//t/CQgIYNiwYUyaNIl9+/b1u08VSiIiIiIig0xpaSkmkwl/f3/2\n7NlDWVkZq1atIjc3F5PJxMOHDx2d4oD53//7f/M//sf/YNWqVfzqV7/iz//8z/nBD37AsWPH+tWv\n68CkJyIiIiIiL4rs7GxMJhPvvvuupW3WrFkEBQURFxdHRUUF8+bNc2CGA+Pzzz9n48aNZGZmsnbt\nWgCio6O5cuUKlZWVzJo167n71oiSiIiIiMggYzab6e7u7tU+d+5cMjIyGDt2rKXt9OnTxMbG4u3t\nzZAhQwgKCrIqsHbu3ImPjw/l5eWEhIRgMBiYOnUq9fX1FBUVERgYiIeHBwsXLsRsNgPQ0NCAs7Mz\nJSUlREREMGzYMEJCQjhw4MAT8z537hwxMTG4u7szatQoVq9eTUdHx2OPr6io4P79+7z11ltW7ceO\nHWPz5s1f6V49jgolEREREZFBZv78+VRUVLBo0SIKCgq4efMmAK6urqxbt47g4GAArl+/TnR0NJ6e\nnhQWFlJcXMyECRNISkri4sWLlv7a29tJTk4mNTWVgoICGhsbWbBgAWlpaWRmZpKTk0NVVRXr16+3\nymP58uXMnDmTgwcPMmnSJBISEqiqquoz58uXLxMVFYWLiwv79u0jKyuLgoICEhMTH3ud//Ef/8Ho\n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\nc7Pa2tvbLVMHbf34xz8mKiqKRYsW0dXVZVmX1d3d3ecarWehqXcvsFu3bvX6D1RERERE5Elqa2uJ\ni4vj8OHDViM+Li4urFy5kuLiYurr64FHU/R27NjB7t27iY2NxWAw0NHRQV5e3oDk0traSkBAgGW/\nubkZg8GAu7t7r2O9vLyIj48nOTnZqr2np4eRI0f22f8vf/lLAF566SWr9h/96Eekp6fz0UcfPXfu\nKpRERERERAaRwMBAOjo62LZtGzt37rT6rLu7m6tXrzJlyhQATp48yZQpU1iyZInlmLKyMqD3iNLz\nOHToEBEREZb9oqIiZs+e3eexkZGR1NXVERoaamkzm838xV/8BW+//Tb+/v69zjl79qzVfnt7O9HR\n0WzYsMHqmp6HCiURERERkUHE29ubjIwMUlJSaGlpYcWKFfj6+tLU1ERubi5NTU2kpqYCj9YdZWZm\nsn37doKDgzlz5gzZ2dm4u7v3OT3uWW3dupXhw4cTGhpKfn4+dXV1vPfee30eu379eqZNm0ZiYiJv\nvvkm9+7dIz09nRs3blgVT19m2/7HNVLjxo3j9ddf71fuWqMkIiIiIjLIvPPOOxw6dIienh7efvtt\nYmJiSElJwd/fn7Nnz/LKK68AsG7dOlasWMHGjRtZsGAB1dXVlJeXEx0dTW1traW/vta027b1tfY9\nOzub/fv3s3jxYhobG6msrCQsLKzPPkJDQzly5Ahms5mlS5fy1ltv4efnx7Fjxxg9evSA3Jdn4dTz\nHGNqTk5OWjtjBy/Kfb4xxm/A+hpzo/Gxn5m29/0ElK9bR0en3WO6uDrmbxSTXzU6JO6uvAq7x/Ty\nG2/3mAAxUeMcEzdolEPinr1+++kHDbDy3wzcW9efRXvb0194+HVYMPc1u8c8//tWu8cEuHfX/t+P\nAV4eOczuMe874GcPwKc3PndI3PsdXQ6J+73wsU8/aICdr71u95gAH+9IcEjcx2loaGD8+PFUVVU9\ndqrdi04jSiIiIiIiIjZUKImIiIiIyID7pr+CRg9zEBERERGRATVu3Lh+v8fI0TSiJCIiIiIiYkOF\nkoiIiIiIiA0VSiIiIiIiIjZUKImIiIiIiNhQoSQiIiIiImJDhZKIiIiIiIgNPR78BWE0Grl165aj\n03CoutNXHRJ3bNAYu8fs6emxe0yA6tN/cEjc8ZND7B7z0xvtdo8J8Ie2DofEzf91g0Piujjb/x0Z\n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\n", "text": [ "" ] } ], "prompt_number": 27 }, { "cell_type": "markdown", "metadata": {}, "source": [ "As you can see in the code above, there are a couple of options for adding some spacing between the various gridspec axes. When making gridspec objects, you can specify spacing. However, using `tight_layout` will interfere with the spacing, so I find it easier to add some padding with `tight_layout`. For the `GridSpecFromSubplotSpec` objects, however, I added the padding when I made the gridspecs because I didn't use `tight_layout` there.\n", "\n", "One annoying thing is that the spacing is specified proportionally, so if your image isn't square, you have to specify spacing differently vertically and horizontally to make the spacing even (the same goes for the gridspecs for dendrograms and row/column colorbars). You could use the image size to decide the scaling of the various gridspec instances to make everything the same size, but I won't do that here.\n", "\n", "I used `GridSpecFromSubplotSpec` to make the dendrogram and row/column colorbar axes here, but it's probably better to specify these axes as part of the main gridspec (i.e. `heatmapGS` in my examples). I just used `GridSpecFromSubplotSpec` here for demonstration. I will do that below. Notice my use below of \n", "\n", " scale_cbAX = fig.add_subplot(heatmapGS[0:2,0])\n", " \n", "for specifying the axis for the scale colorbar. This combines two gridspecs together into one axis." ] }, { "cell_type": "code", "collapsed": false, "input": [ "# heatmap with row names\n", "fig = plt.figure(figsize=(12,8))\n", "heatmapGS = gridspec.GridSpec(3,3,wspace=0.0,hspace=0.0,width_ratios=[0.25,0.05,1],height_ratios=[0.25,0.05,1])\n", "\n", "### col dendrogram ###\n", "colGSSS = gridspec.GridSpecFromSubplotSpec(2,1,subplot_spec=heatmapGS[0,1],wspace=0.0,hspace=0.1,height_ratios=[1,0.15])\n", "col_denAX = fig.add_subplot(heatmapGS[0,2])\n", "col_denD = sch.dendrogram(col_clusters,color_threshold=np.inf)\n", "clean_axis(col_denAX)\n", "\n", "### col colorbar ###\n", "col_cbAX = fig.add_subplot(heatmapGS[1,2])\n", "col_axi = col_cbAX.imshow([list(col_cbSE.ix[col_denD['leaves']])],interpolation='nearest',aspect='auto',origin='lower')\n", "clean_axis(col_cbAX)\n", "\n", "### row dendrogram ###\n", "row_denAX = fig.add_subplot(heatmapGS[2,0])\n", "row_denD = sch.dendrogram(row_clusters,color_threshold=np.inf,orientation='right')\n", "clean_axis(row_denAX)\n", "\n", "### row colorbar ###\n", "row_cbAX = fig.add_subplot(heatmapGS[2,1])\n", "row_axi = row_cbAX.imshow([ [x] for x in row_cbSE.ix[row_denD['leaves']].values ],interpolation='nearest',aspect='auto',origin='lower')\n", "clean_axis(row_cbAX)\n", "\n", "### heatmap ####\n", "heatmapAX = fig.add_subplot(heatmapGS[2,2])\n", "axi = heatmapAX.imshow(testDF.ix[row_denD['leaves'],col_denD['leaves']],interpolation='nearest',aspect='auto',origin='lower',norm=my_norm,cmap=cm.RdBu)\n", "clean_axis(heatmapAX)\n", "\n", "## row labels ##\n", "heatmapAX.set_yticks(arange(testDF.shape[0]))\n", "heatmapAX.yaxis.set_ticks_position('right') \n", "heatmapAX.set_yticklabels(testDF.index[row_denD['leaves']])\n", "\n", "## col labels ##\n", "heatmapAX.set_xticks(arange(testDF.shape[1]))\n", "xlabelsL = heatmapAX.set_xticklabels(testDF.columns[col_denD['leaves']])\n", "# rotate labels 90 degrees\n", "for label in xlabelsL:\n", " label.set_rotation(90)\n", "# remove the tick lines\n", "for l in heatmapAX.get_xticklines() + heatmapAX.get_yticklines(): \n", " l.set_markersize(0)\n", "\n", "### scale colorbar ###\n", "scale_cbAX = fig.add_subplot(heatmapGS[0:2,0]) # colorbar for scale in upper left corner\n", "cb = fig.colorbar(axi,scale_cbAX) # note that we could pass the norm explicitly with norm=my_norm\n", "cb.set_label('Measurements')\n", "cb.ax.yaxis.set_ticks_position('left') # move ticks to left side of colorbar to avoid problems with tight_layout\n", "cb.ax.yaxis.set_label_position('left') # move label to left side of colorbar to avoid problems with tight_layout\n", "cb.outline.set_linewidth(0)\n", "# make colorbar labels smaller\n", "tickL = cb.ax.yaxis.get_ticklabels()\n", "for t in tickL:\n", " t.set_fontsize(t.get_fontsize() - 3)\n", "\n", "#fig.tight_layout()\n", "heatmapGS.tight_layout(fig,h_pad=0.1,w_pad=0.5)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "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\nOwkApk2bplQoCSkgIAAff/wxEhIS8OabbyI5ORlZWVlwdnZW6MfFHIiIiIjqBzcirztdLeBIfWo9\no/RccXExHj9+rHJPo/bt29drYqrs378f//jHP5CXl4fAwECUlpaiQ4cOiI6OlvfptypT63lQ45E+\nx7ehU2hUONdbd/Bz0bjx80f6gl/LdcePXeOn1vLgOTk5mDhxosIzS38lEokglUrrNbHqHj16hPbt\n2+PChQvyNjc3N4wcOVKh38PrF1D8+3n5sYXj67BwfF2ruRERERERkX5Rq1B6//33cefOHXz55Zew\ntbVVuaiDtv3555/o3bs3jh07hq5du2LdunUoKipCcHCwQr/WXTzQuov2F5cgIiIiIiL9pVahlJWV\nhW3btimN3gjJwcEB69evx8iRI1FYWAgPDw8cOXJEaYEHQwMu5kBERERERJpRq1Bq1aoVDAzU6qpV\n48aNw7hx42rtY8RCiYi0SMgVoIR4EJirMhEREammVvUTFhaGpUuXomfPngqbu+oijigRkTbp2wpQ\nXJWJiIhINbUKpePHj+Pq1auwtbWFg4ODfLrb89U8RCIRfv31V60mqi5jw4Yf+SIiIiIiosZNrarC\n1NQUb775Zo3ndekvkobccJaIiIiIiDSkVqG0efNmLaehntu3byM0NBTHjh2Dubk5PvroI8ycOVOh\nD6feERG92oR8jqw2DflHRD57RkSkObXnqVVUVGDHjh1IS0vD3bt3sXr1apw4cQIeHh5wc3PTZo4A\nAJlMhuHDh8Pf3x979+7FlStX4OPjgx49esDLy0vej4s5EBG92vTtObK60KWZHkREjZVahVJhYSEG\nDRqEX3/9FV26dMHFixdRUlKCvXv3YubMmUhNTVUoVrTh1KlT+OOPPxAdHQ2RSISuXbvi5MmTsLKy\nUujHESUiIiIiItKUWoXS3Llz8fDhQ/z+++9o164dDA0NIRKJEB8fj8DAQISHhyMtLU2riZ47dw7d\nunXDggULsH37dpibmyM8PBzjx49X6MdCiV4l2phiVJ9/ieb0HyJlQk0N1PaoEv9/E5G+U6tQ2rdv\nH9avXw8HBwdUVlbK242MjBAWFoa3335bawk+V1RUhPT0dPj7++PWrVs4c+YMBg8ejI4dO8Lb21ve\nj4USvUp0fYoRp/8Iq66/gNfl88RfkutO1//fqov/v4lI36lVKEmlUjRt2lTlucrKSkG+4RsZGcHS\n0hIff/wxAKBXr14YNWoU9u7dq1Ao3fj1NP57/pT8uNPrPeHort1pgUREukDIX8D5SzIRvUr4h6hX\nk1qFUv/+/bF06VL4+PigefPm8vby8nJ8+eWX6Nu3r9YSfM7Z2RmVlZWoqqqCWPxs1Oivo1vPdevR\nG9169NZ6PkRERET0auAfol5NahVKn3/+Oby9vdGpUyf5og2ffvopsrOzcf/+fRw/flyrSQLAwIED\nYWJigiVLluDTTz/FqVOnsGfPHqSmpir046p3RERERESkKbUKpU6dOuHChQtYtWoV0tPT8be//Q33\n7t1DcHAwwsLCYGdnp+080bRpU2RkZODDDz+EtbU1mjdvjv/7v/+Dp6enQr8mYhZKRERERESkGZFM\nH54o/YsdF+40dAqkQ956zbahU9AqkUik0w+F63p+daHL9yRkbvw41J2u56cufbkPqh0/z8/w++ur\nSe0NZ7OysnD69Gncv39f5flPP/203pLSRBMx53USEREREZFm1CqUoqOj8Y9//AMSiQTNmjVTOCeT\nySASiXSnUJJw6h0REREREWlGrUJp9erVmDhxItavXw9DQ0Nt51SjH374AZ999hlu374Ne3t7LF++\nHG+++aZCH44oERERkb4TauNiQJhV2LgkNukitQql0tJSvPPOOw1aJP3222+YPHkyUlNT4eXlhbS0\nNAQGBiIvLw+WlpbyfhxRIiIiEuYXaW39As1fml9MXzYufo5LYpMuUqtQevfdd7F161b0799f2/nU\nqHPnzsjPz4eJiQkqKytx9+5dmJubKxVvHFEiInVo8kvky/5A5y991BAa8y/S/KWZiHSBWoXSihUr\n4O7ujs6dO8Pd3R0mJiZKfTZu3FjvyVVnYmKC69evw9HRETKZDOvXr1d6ZqqJhN9ciejFuHkgERER\n1UatQmnBggX4/fff0aZNG1y5ckXh3PPFHITSvn17lJWVITMzE8HBwejUqRP69esnP28kkQiWCxER\nERER6Se19lFq3rw55s2bpzMr2z03ceJENG/eHF9++aW8bcOuZJw9eVx+/EYvb/To7dMQ6ZEOcLNp\n3tApaJVQey0I+dCwUNPU9HFPDH28p7rQ5dwA/fx6EPJ7RF3o4/RXXf86f1m6fj/8/vpqUmtEycjI\nCN7e3trOpVYHDhzAF198gSNHjsjbysrKYGFhodDPq48vvPr4Cp0ekV7jNDUiqo2uPw/F7ytEVBdq\n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\nyggLC+uyj9DQUA4fPozVamXevHm89dZbDBs2jKNHjzJ48OAur9PT05MjR47wjW98g7/9279l/vz5\n9O3bl1/+8pe88cYbX/zG/en1dLwkK96dnJxe6MX9PZHfi36NL6IbQ4YZGm/IjdrHfnbqepMhOfz7\n8RpD4gDUWLv/m6jPY+XUgKcf1ENyjn1oSJzzv3rfkDgAv908z5A4N++2GRIH4GiNMf+e+r3SvUfP\nfhHTXzcbEuejO8b9OY0cYMzvawt/96khcQBCvtZ5sfuX4bPWzi8S/bK8e+q6IXEGe5kMiQPwrz/5\nmSFx3vuP/2VIHADv/v0Mi/V51NTUMGLECMrLyx871e5FpxElERERERERByqURERERESkx33V32mp\nhzmIiIiIiEiPGj58OO3txk0R/TJoRElERERERMSBRpReEN7e3l/54UkRERERkd5ChdILoqmp+09o\nUqElIiIiItIzNPVORERERETEgQolERERERERB3rhbC/yMlxjT4v4cYmh8arWWh772Y9KLhuSw+Kw\nIYbEAejvZszvYt5M/k9D4gDMjh9jSJyz1Q2GxAG4bf3MkDirF4c9/aAeEjjI3bBYRjH3NWa2/D//\n4gND4gDMDxtqSJyB/V4xJA7AayZjXtj7QYtx1+TmYszUfqP+zwB4xdmYaxrQ8FtD4gC4vDbOsFgv\nC40oiYiIiIiIOFChJCIiIiIi4kCFkoiIiIiIiAMVSiIiIiIiIg5UKImIiIiIiDhQoSQiIiIiIuJA\nhZKIiIiIiIgDFUoiIiIiIr1QRUUFFosFs9mMyWRi1KhRpKamcufOneedGgBHjx7F2dmZc+fOdbuv\n//t//y8BAQH069eP0aNHs2fPnm73qUJJRERERKSXKS4uxmKx4O/vz65duzh48CBLliwhJycHi8XC\nw4cPn3eKPeYf//Ef+bu/+zuWLFnCz3/+c/78z/+c73znOxw9erRb/Rrzmm8RERERETFMVlYWFouF\nd955x9Y2efJkgoKCiIuLo7S0lOnTpz/HDHvGp59+ytq1a8nIyGDlypUAREdHc+XKFcrKypg8efIz\n960RJRERERGRXsZqtdLe3t6pfdq0aaSnpzN06FBb26lTp4iNjcXb25s+ffoQFBRkV2Bt374dHx8f\nSkpKCAkJwWQyMW7cOC5fvkxBQQGBgYF4eHgwa9YsrFYrADU1NTg7O1NUVERERAT9+vUjJCSEffv2\n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\n0LFjx+q8/9///ld5FlpXfbyiooJiYmLI2NiYQkJC6Pbt2zrt487OzirtkpGRQYIg0MqVK1XSJSYm\nkrOzs8ZxZs2aRXK5nCIjI+nzzz8nR0dH6t69O7Vp00Z5diw7O5tat26t1W+TmKZMmUJ2dnaUkpJC\nDx8+VJsmKyuLHB0daeLEiSKXjtXGAyXGXlJFRUXUuXNnEgSBDAwMSBAEsrW1pYMHDxIR0bfffkuC\nINDw4cO1nhb3rIGSrhw+fJiSkpIoNDSUfHx8yNramgRBUE69SkxMJEEQqFevXlRcXKxVrPT0dGrS\npAkNHjyYUlNTKSMjg+zt7WnChAm0ceNG2rBhg/K6ou+//17jOGJ9dkSPB5JTp04lQ0NDtTtcycnJ\nJAgCjRgxgh48eKBVrB9++IEcHBxIEASVPlj9kslkFB0drVUMIqIHDx5QYGAgCYKgdkdHoVBQWFiY\nMq4uZWRkUNu2bcnd3V2nO5FEj7+fjo6OKp9ZzVfr1q0pMTFRqxghISFkbGxMK1eupPz8fNq7dy91\n7NhROf3t+vXr9Pnnn5OlpSVNnz5d4zjVZW7ZsiX5+vqSt7c3NW/enC5dukREj7dVS5YsIblcrvWg\noqYtW7aQgYEB+fj4KNfl5eVR9+7d60wP1cTcuXNJLpcr69e0aVOSyWQkkUiUfXzGjBlUWVmpVRyF\nQkGRkZFkZmZWZ6pktaVLl5KRkZHO+/jp06fJy8tL+V3WVR9fvHgxGRgYUGBgIH3yySfUrFkzCggI\nICsrK9q0aRNdu3aNfvjhB7K0tKwzHe9FPHz4kEJCQsjU1JQMDAxozJgxdOfOHfL29lbZLrm5uelk\nergYbt++Tf7+/iQIAv3+++913k9KSiJBEKhnz55a/w4y7fFAibGX2KNHj2jTpk0UFxdH69atU9lo\nlpSU0N9//62TOFlZWXT37l3lcn0dxVWnoKCAysrKiIjo3LlzlJGRobO54QcOHCBvb2/ljk/tV6tW\nrdQeGX8R33zzDRUVFemkvM/r9u3bVFlZWaedDh48SMOHD9dZO1VVVVFubi4lJSXRggULKDo6mpYs\nWUKpqak6v3bk5s2b9Ndffz3x/SNHjqi9xkxb9+/fp7CwMGrTpg2dPHlSp3lXVVXR+fPnKSoqimJj\nY2nDhg3066+/UnZ2Nr377rtat9P9+/dp4MCBKn26Q4cOyuvi1q9fT6ampjR9+vQnHrl+Hv/88w9l\n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\nAfdyN4KSa+xdAAAAAElFTkSuQmCC\n", "text": [ "" ] } ], "prompt_number": 28 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Stylistically, the colorbar is probably too wide. One easy way to alter the width would be to use `GridSpecFromSubplotSpec` to make a smaller axis for the colorbar. You can try it out.\n", "\n", "I've collected a minimal set of code from this notebook below for use as a template. This code along with the plotting commands in the above cell should be a good start for making your own heatmaps." ] }, { "cell_type": "code", "collapsed": false, "input": [ "# Stop those who \"Run All\"\n", "3 +" ], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "code", "collapsed": false, "input": [ "import brewer2mpl\n", "import pandas as pd\n", "import matplotlib.pyplot as plt\n", "import matplotlib.gridspec as gridspec\n", "import scipy.spatial.distance as distance\n", "import scipy.cluster.hierarchy as sch\n", "\n", "# helper for cleaning up axes by removing ticks, tick labels, frame, etc.\n", "def clean_axis(ax):\n", " \"\"\"Remove ticks, tick labels, and frame from axis\"\"\"\n", " ax.get_xaxis().set_ticks([])\n", " ax.get_yaxis().set_ticks([])\n", " for sp in ax.spines.values():\n", " sp.set_visible(False)\n", "\n", "# make dendrograms black rather than letting scipy color them\n", "sch.set_link_color_palette(['black'])\n", "\n", "# calculate pairwise distances for rows\n", "row_pairwise_dists = distance.squareform(distance.pdist(testDF))\n", "# cluster\n", "row_clusters = sch.linkage(row_pairwise_dists,method='complete')\n", "# calculate pairwise distances for columns\n", "col_pairwise_dists = distance.squareform(distance.pdist(testDF.T))\n", "# cluster\n", "col_clusters = sch.linkage(col_pairwise_dists,method='complete')\n", "\n", "# run dendrogram without color_threshold=np.inf to define some clusters\n", "row_cbSE = pd.Series([brewer2mpl.get_map('Set1','Qualitative',3).mpl_colors[0]] * (testDF.shape[0] / 2) + \\\n", " [brewer2mpl.get_map('Set1','Qualitative',3).mpl_colors[1]] * (testDF.shape[0] / 2 + testDF.shape[0] % 2))\n", "col_cbSE = pd.Series([brewer2mpl.get_map('Set2','Qualitative',3).mpl_colors[0]] * (testDF.shape[1] / 2) + \\\n", " [brewer2mpl.get_map('Set2','Qualitative',3).mpl_colors[1]] * (testDF.shape[1] / 2 + testDF.shape[1] % 2))\n", "\n", "# make norm\n", "vmin = np.floor(testDF.min().min())\n", "vmax = np.ceil(testDF.max().max())\n", "vmax = max([vmax,abs(vmin)]) # choose larger of vmin and vmax\n", "vmin = vmax * -1\n", "my_norm = mpl.colors.Normalize(vmin, vmax)" ], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "raw", "metadata": {}, "source": [ "The MIT License (MIT)\n", "\n", "Copyright (c) 2014 Christopher DeBoever\n", "\n", "Permission is hereby granted, free of charge, to any person obtaining a copy\n", "of this software and associated documentation files (the \"Software\"), to deal\n", "in the Software without restriction, including without limitation the rights\n", "to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n", "copies of the Software, and to permit persons to whom the Software is\n", "furnished to do so, subject to the following conditions:\n", "\n", "The above copyright notice and this permission notice shall be included in all\n", "copies or substantial portions of the Software.\n", "\n", "THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n", "IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n", "FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n", "AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n", "LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n", "OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n", "SOFTWARE." ] } ], "metadata": {} } ] }