{ "cells": [ { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "The autoreload extension is already loaded. To reload it, use:\n", " %reload_ext autoreload\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/home/jacquelineburos/miniconda3/envs/python3/lib/python3.5/site-packages/Cython/Distutils/old_build_ext.py:30: UserWarning: Cython.Distutils.old_build_ext does not properly handle dependencies and is deprecated.\n", " \"Cython.Distutils.old_build_ext does not properly handle dependencies \"\n", "/home/jacquelineburos/.local/lib/python3.5/site-packages/IPython/html.py:14: ShimWarning: The `IPython.html` package has been deprecated. You should import from `notebook` instead. `IPython.html.widgets` has moved to `ipywidgets`.\n", " \"`IPython.html.widgets` has moved to `ipywidgets`.\", ShimWarning)\n", "INFO:stancache.seed:Setting seed to 1245502385\n" ] } ], "source": [ "%load_ext autoreload\n", "%autoreload 2\n", "%matplotlib inline\n", "import random\n", "random.seed(1100038344)\n", "import survivalstan\n", "import numpy as np\n", "import pandas as pd\n", "from stancache import stancache\n", "from matplotlib import pyplot as plt" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Simulate survival data " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In order to demonstrate the use of this model, we will first simulate some survival data using `survivalstan.sim.sim_data_exp_correlated`. As the name implies, this function simulates data assuming a constant hazard throughout the follow-up time period, which is consistent with the Exponential survival function.\n", "\n", "This function includes two simulated covariates by default (`age` and `sex`). We also simulate a situation where hazard is a function of the simulated value for `sex`. \n", "\n", "We also center the `age` variable since this will make it easier to interpret estimates of the baseline hazard.\n" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "INFO:stancache.stancache:sim_data_exp_correlated: cache_filename set to sim_data_exp_correlated.cached.N_100.censor_time_20.rate_coefs_54462717316.rate_form_1 + sex.pkl\n", "INFO:stancache.stancache:sim_data_exp_correlated: Loading result from cache\n" ] } ], "source": [ "d = stancache.cached(\n", " survivalstan.sim.sim_data_exp_correlated,\n", " N=100,\n", " censor_time=20,\n", " rate_form='1 + sex',\n", " rate_coefs=[-3, 0.5],\n", ")\n", "d['age_centered'] = d['age'] - d['age'].mean()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "*Aside: In order to make this a more reproducible example, this code is using a file-caching function `stancache.cached` to wrap a function call to `survivalstan.sim.sim_data_exp_correlated`. *" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Explore simulated data" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here is what these data look like - this is `per-subject` or `time-to-event` form:" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
agesexratetrue_tteventindexage_centered
059male0.08208520.94877120.000000False04.18
158male0.08208512.82751912.827519True13.18
261female0.04978727.01888620.000000False26.18
357female0.04978762.22029620.000000False32.18
455male0.08208510.46204510.462045True40.18
\n", "
" ], "text/plain": [ " age sex rate true_t t event index age_centered\n", "0 59 male 0.082085 20.948771 20.000000 False 0 4.18\n", "1 58 male 0.082085 12.827519 12.827519 True 1 3.18\n", "2 61 female 0.049787 27.018886 20.000000 False 2 6.18\n", "3 57 female 0.049787 62.220296 20.000000 False 3 2.18\n", "4 55 male 0.082085 10.462045 10.462045 True 4 0.18" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "d.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "*It's not that obvious from the field names, but in this example \"subjects\" are indexed by the field `index`.*" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can plot these data using `lifelines`, or the rudimentary plotting functions provided by `survivalstan`." ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAqgAAAHcCAYAAAAa41gWAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAAPYQAAD2EBqD+naQAAIABJREFUeJzs3Xl4VOX9///nzGSyk30lYQsJBhKSgKiAiAq2UlfEqtWK\nK9qKXaz2g/5arfLVtlZbq9S9LtBKXSqKG6LWXQgoS9gDhEDIvsBk3yYz8/sjEEsJSGByTiZ5Pa6r\n14Vnzpl5T3jn9MU597lvi8fj8SAiIiIi0kdYzS5AREREROS/KaCKiIiISJ+igCoiIiIifYoCqoiI\niIj0KQqoIiIiItKnKKCKiIiISJ+igCoiIiIifYoCqoiIiIj0KQqoIiIiItKnKKCKiIiISJ/S44C6\nZs0afvrTn3LGGWeQnp7Oxx9//J3HrF69mlmzZjF27FjOPfdc3nzzzeMqVkRERET6vx4H1ObmZkaP\nHs29996LxWL5zv1LSkr46U9/ysSJE3nrrbe45ppruPvuu1mxYsVxFSwiIiIi/ZtfTw+YOnUqU6dO\nBcDj8Xzn/i+//DLJycnMmzcPgJSUFNauXcvChQs5/fTTe/rxIiIiItLP9foY1A0bNjB58uRDtk2Z\nMoW8vLze/mgRERER8UG9HlCrq6uJjo4+ZFt0dDSNjY20t7f39seLiIiIiI/p8S1+s1z+6i1HfO2X\nOb/i9JNGGViNiIiIiPSWXg+osbGx7Nu375Bt+/btIzQ0FH9//2N+n2tPupHW1nbcbiiraSI3vwj3\nsLUAPPz6J3wUW8OlZ44kOS7Uq/XLwGKzWQkLC6K+vgWXy212OdKPqdfEKOo1McrBXvOGXg+oOTk5\nfPHFF4dsW7FiBTk5OT16n/NzJuBwNNHR4YY0uHjceH6zchMdtGMJrmft9mrWba9mYkY8F08ZQVxk\nsDe/hgwwLpe7s9dEepl6TYyiXhNfclzTTOXn57Nt2zYAiouLyc/Pp7y8HIC//OUv3HnnnV37/+hH\nP6K4uJiHH36YwsJCFi9ezAcffMD1119/QoWHBPozLDwJgLjBHdj9rHiA3C2V/Pbvq/nH8nwcDW0n\n9BkiIiIiYrweB9TNmzczc+ZMZs2ahcVi4U9/+hOXXHIJCxYsAKCmpqYrrAIkJyfzzDPPkJuby8yZ\nM1m0aBEPPPDAYU/2H4/kQYMBcPnX8uBPJnH2+CRsVgsut4fP8sq48+lcXvl4J/XNehhLRERExFdY\nPMcymWkf0XWL/4CVZd+wOP/fAPzh9HsIDxhEVW0Lb3+1m9wtFRz8ZgH+Nr4/YQjnnjqU4ECfeS5M\nTODnZyUyMuSwXhPxNvWaGEW9JkY52Gve0OvTTPWm5EGJXX8ubSwDIC4iiDkXjOH/3XgaJ58UC0Bb\nu4t3Vu7hzqdX8v6qItqcLlPqFREREZHv5tMBNTE4Hqul8yuUHAioByXFhHDrJWO559oJZI6IAqCp\ntYN/f7aLu57OZU1+leH1ioiIiMh38+mAarfZSQiOA6CkoazbfUYkhnH7FTncedU40pLDAahraufJ\npZv58Jtiw2oVERERkWPj0wEVvn1QqrixlKMNpz1paCR3/Xg8t12WRVhI5/yrr3y8k9c+LcDtO8Nw\nRURERPo93w+ooZ0Btaq5hvtX/4VPi7+i2dnS7b4Wi4WskTH8ZvbJxEV2TiS7fPVenn93Gx2avFhE\nRESkT/D5gJodm0mY/yAAKpureH3n2/xmxQMs3vZv9taXdHtMXEQQv7n6ZEYkdh6Xu6WCBa9vpLW9\nw7C6RURERKR7Pj3N1EHtLifrqjbwRWkuRfWHjisdFjaEM5ImcXJcNv42+yGvtbZ38OSbm9m8ez8A\nwxMGcdtl2V1DAGTg0XQsYhT1mhhFvSZG8eY0U/0ioP63vfUlfFmayzeVeTjdzq7twX5BTEycwBlJ\nE4kLju3a3uFy8+KyfHK3VAAQFxnE7VfkEBfhnbVkxbfoRC5GUa+JUdRrYhQF1GPQ7GxhdcVavizN\npbK5+pDX0iPTOCN5EmOjR2Oz2vB4PLz+2S7eX70XgLAQf351WTbDEgZ5/TtI36YTuRhFvSZGUa/1\nDX/60+/5/PNPaGxs4IUXFpOammZ4DRUV5Vx22UW8+OK/euXzvRlQ++2ySsH2IM4eMoWzkk9nZ+0u\nvijJZUPNFtweN/mOneQ7dhIREM7pg0/l9MGncdnZqYSHBnQujdrUzp/+tY5bLxlLxoE5VEVERESO\nx6pVK/ngg/f429+eZfDgwYSHR5hWi8ViMe2ze6LfBtSDLBYLoyJTGRWZSm1bHSvLvmZF2dfUttVR\n21bHe7s/4v09H5Mdk8HU1EncHDyG59/bRmu7i7+8mkf2yGh+MHEYo4aY10wiIiLiu0pLi4mOjiEj\nI9PsUo46JWdf0u8D6n+LCAjnvBHf49xh09i0bxtfluSS79iJ2+NmffUm1ldvIj44jmnnZvHVZ1Za\nWqxs2LWPDbv2kZocznmnDSMrNRqrj/zrQ0REpD9rbu2gfH+ToZ+ZGBVCcOCxx6c//GE+77//LhaL\nhTPOOIWEhMH8+99v8c9/vsjbby9l//4ahg4dxrXX3shZZ00HYP36tfziFz/lL3/5G08//TeKivaQ\nmZnNfff9nvz8rTzxxKNUV1cxefIZ3HXXPQQEBACwenUuixY9T2HhLmw2KxkZWfzyl3eQlJR8xPoK\nCwt48skFbNiQR1BQEKecchq/+MXtpl7lhX48BvVYVTVX82XpKlaVr6G549v5U+1WO7GekZRtj6Wl\n9tvxFINjQvjBaUM5bUw8fjafn6VL/ofGaolR1GtilP7aa82tHcx7aiXNbcZOERkc4MdDt0w+5pDa\n3NzEa6+9zDvvLOW55/6J1Wph6dIlfPTRB/zyl3eQnDyEvLx1/PnPf+SRRx4nO3tcV0DNzBzLrbf+\nioCAAO655y5iY2Px9w/gllt+TnNzE7/5za+56qpruOqqawD4/PNPsFisjByZSktLC88//zRlZWUs\nWvQycPgY1MbGRq68chYXXXQJM2acT2trK0899TdcLhePPfZkj382GoPqRXHBsVyadiEXpsxgbdUG\nvjwwVZXT7aSMfBiVT6I1nsbiRBrKYimraeL597bxxheFnHvKEKbmDCbQf8D/GEVERKQbwcEhBAeH\nYLXaiIyMxOl08tJLC3n00ae6bvknJg5m48Y83nrrDbKzxwGdQxRvumkumZljAbjggot49tknee21\nt0hISATgrLOms27dmq6AeuaZ0w757Hnz7uaii77P7t2FjBiRclhtS5a8yqhR6dx00y1d2+66624u\nvfQCSkqKSU4e4v0fyDFSsjrA32ZnUuIEJiVOOGyqqlp3JSRVEp4ciGXfcGoLhuFoaOOVTwp4Z+Ue\npo1PZvqEZMKCNX+qiIiIEYIDO69k9vVb/P+rpKSY1tZWfvWrWw8ZD+pydTBqVPoh+44cmdr156io\naAICArvCKUBkZBTbtm095L2fe+5ptm7dTF1dLW63B4vFQmVlRbcBtaBgJ+vWfcP3vjf1kO0Wi4XS\n0hIF1L5maFgyPw67jEtSz2d1xbquqaraPa0Qlc9p08Op2TaMXWX1NLV28M7KPXzw9V6mZCVy7qlD\nidUcqiIiIr0uONCPkYPDzS6jR1pamgF4+OHHiImJOeQ1f/9DL3T5+X0b0ywWyyH/fXCbx/PtsI15\n824jMTGJu+66h5iYGNxuD7NnX05Hh5PutLQ0c/rpU5k79xeHPTz1v7UZTQH1KILtwV1TVe1w7OLN\nXe9R3FDKxobVXH3OUH7YMY5lq/ayqXAf7R1uPllXymfryzh1dBwzThvK0HjNoyoiIiLfGj48Bbvd\nn8rKcrKzc7z2vvX1dRQX7+Wuu+4hK6vzfTdsyDvqMaNGpfPFF5+SkJCI1dq3nqvpW9X0URaLhZOi\nUpmbfQORAZ1Ptb28/Q1sYbX86vJs5t9wKhMz4rFaLLg9HlZtreS+F7/hkdfyyC9y+MyUDiIiItK7\ngoODufLKq1mw4BHef/9dSktL2LEjnyVLXmX58ve69utpdhg0KIzw8HDefvtNSktLWLv2Gx5//K9H\nnfd01qzLqa+v5957f0N+/lZKS0tYvTqXP/xhvunZRQG1B8L8B3FL9vUE2PxxeVw8u2kR1c37GBIX\nys0XZvDgTyYyfXwy/n6dP9bNhft56OX1zH/xG177pIC126upa2o3+VuIiIiImW666Rauv34Oixcv\nYvbsy/n1r39Jbu4KEhOTuvbp6YT6FouF+fP/yPbt27jmmit4/PG/8rOf3dbtfgfFxMTw1FPP4/G4\nuf32n3PddVfyt7/9lUGDwkyf0H/ATzN1PDbVbOWZjYvw4CEhOI47Tr6VYPu3407rm9v5ZG0JH68t\noan18Okv4iKCSE0OJzUpnNTkcAbHhGhu1T6iv07HIn2Pek2Mol4To3hzmikF1OP0yd4vWFLwLgCj\no0ZxS9b12Ky2Q/Zpbe/gq43lbCioYVdZPa3trm7fKyjAj5FJYZ2BNSmclMFhmrrKJDqRi1HUa2IU\n9ZoYRQG1D/B4PLy8fQkryr4GYGrSZK44aeYR93e7PZRUN7KrtI6dpXUUlNRRU9fa7b4WCwyJCyUt\nKYKRyWGkJUUQFRZg+uX2gUAncjGKek2Mol4Toyig9hEut4vHNzzPDkcBAJeNupizkk8/5uNrG9so\nKKmjoLTzf0UVDbjc3f91RA4K6LrCmpoczpC4UK1k1Qt0IhejqNfEKOo1MYoCah/S5Gzmz2sep6ql\nBgsWbsm+gYzok47rvdqdLvZUNHQG1gPBtbGl+7nL/O1WUhLDGJkUTlpyOCmDwwkNsp/IVxF0Ihfj\nqNfEKOo1MYoCah9T2VzNn9c8TnNHC4G2QH494VYSQ+JP+H09Hg8V+5spKK3rHBpQUkf5vuYj7p8Y\nHUxacviB0BpBfGSQhgX0kE7kYhT1mhhFvSZGUUDtg3Y4Cvhb3nO4PW6iA6P47Wm3E2Dz/tKnjS1O\ndh0YElBQUsfu8nraj/AzCQ2ydw0JSE0KZ0TiIOx+tm73lU46kYtR1GtiFPWaGEUBtY/6qnQVL29/\nA4AbM69mfFxWr39mh8tNcVXjIWNZHQ1t3e5rs1oYnjCIkUnhjB0ZzZhhkbrC+j90IhejqNfEKOo1\nMYoCah/l9ri588v5NHe0cPaQKfww7SLDa/B4POyvb2NnaS27SurZWVpLcVUj3f0t33ZZNlkjow2v\nsS/TiVyMol4To6jXxCjeDKiabNOLrBYrI8KHsWVfPoV1RabUYLFYiA4PJDo8gYljEoDO+Vh3l9V3\nTm9VWsfmwv0AlNU0KaCKiIj4mD/8YT6NjY384Q8Pm11Kr9E8RV6WEj4MgOKGUtpdfWNZ00B/P0YP\nj+Ki00dw++U5XU/7N7V2P0OAiIiIiJkUUL3sYEB1e9wU1ZeYXE33QgI7L5x3twyriIiIiNl0i9/L\nhoUNxWqx4va42V1XRFpkitklHSYkyA6OFpp1BVVERKRX/fznP2HkyFSsVivvv/8edrudm2++hXPO\nmcEjj/yJzz77hKioKG677f+YOHEybrebhx76PWvXrmH//hri4xO45JLLuOyyHx3xMzweDy+9tJC3\n317K/v01DB06jGuvvZGzzppu4Df1LgVULwuw+ZMcmsjehlIK6/eYXU63gg9eQT3CIgAiIiK+oKWj\nhYqmakM/MyEkliC/oB4ds3z5e1x11TU899w/+PjjD3n44T/y+eefcuaZZ3PttTfyyiuLeeCB37Fk\nyXvYbDbi4uJ54IE/ER4ezqZNG3jooT8QExPD2Wef0+37/+MfL/DRRx8wb95vSE4eQl7eOu6//3dE\nRkaRnT3OG1/bcAqovWBE+PDOgFpXhMfj6XNTOYUGHhyDqlv8IiLim1o6Wrhn5YO0dLQY+rlBfkHc\nP/muHoXU1NRRXHPNDQBcffV1/POfC4mIiOSCC2YCcP31c1i69HV27drJmDGZ3HDDzV3HJiQksnnz\nRj755D/dBlSn08lLLy3k0UefIiMjE4DExMFs3JjHW2+9oYAq30oJH8bnJStocjZT1VxNfEic2SUd\n4uAV1GYFVBERkV43cmRq15+tVivh4eGkpHy7LSqqc0Ydh8MBwJIlr7Fs2TtUVlbQ1tZGR4eTtLTu\nl1EvKSmmtbWVX/3qVv575lCXq+OIx/gCBdReMDJ8eNefC+uK+lxADTlwBdXR2MZHa4rJSY0hNqJn\ntytERETMdPBKpi/c4vfzOzRuWSyWw7YBeDxuPv74Q5588jF+/vPbycgYS3BwMP/61z/Ytm1Lt+/d\n0tK5BPrDDz9GTEzMIa/5+3t/RUujHFdAXbx4Mc8//zw1NTWkp6dz9913k5XV/apJHR0dPP3007z1\n1ltUVlaSkpLCHXfcwRlnnHFChfdlkYERRASEU9tWx6clX5EYGs/wsKFml9UlJjwQAGeHm5f/s5OX\n/7OT5NgQctJiyEmNZXjiIKx9bFiCiIjI/wryC2JEeN/5/1dv2LRpA2PHZjNz5qVd20pLjzwr0PDh\nKdjt/lRWlpOdnWNEiYbocUBdtmwZDz74IPfffz9jx45l0aJFzJkzh+XLlxMVFXXY/n/961959913\neeCBBxgxYgRffvklP/vZz3j11VdJT0/3ypfoi06Oy+bj4i8obSzn4TWPc3JcNhemzCA22PyJ8Sdm\nJFDf3M43+VXsrWwEoKS6iZLqJt5dWUR4iD/ZqTHkpMUwZlgk/nabyRWLiIgMDMnJQ1i+fBlff72K\nxMTBfPDBMvLztzJ4cFK3+wcHB3PllVezYMEjuFwusrJyaGpqZNOmDYSEhDJjxvkGfwPv6HFAXbhw\nIVdccQUzZ3YO7J0/fz6fffYZS5Ys4aabbjps/7fffpu5c+d2XTG98soryc3N5YUXXuChhx46wfL7\nrotGziDUHsIHRZ/S6mplbdUG8qo3MzVpEjOGTyfU3ztLgR0Pu5+V8ycN5/xJw9lX10peQQ15BTXk\nFzlwuT3UNbXzxYYyvthQhr/dSsbwKHLSYsgeGUNYiO/eLhARETFa9w9KH76tcz8LM2f+kJ07d3Dv\nvb/BYrFwzjnf55JLLmP16pVH/IybbrqFqKgoFi9exMMP/4HQ0EGMGnUSs2ff4L0vYjCLx9PdKu3d\nczqd5OTksGDBAqZP/3ZurbvuuouGhgaeeOKJw4457bTTmDdvHpde+u2l6v/7v/9j3bp1fPzxxz0q\n1hfXEW5sb2L5no/5ojQXl8cFQKAtkHOHnc1ZQ6bgb7ObXOG3Wto62Lx7P3k7q9m4a99hT/lbgJFJ\n4QeGAsSQGB3c52YoOFFas1qMol4To6jXxCgHe80r79WTnR0OBy6X67BBuNHR0ezevbvbY6ZMmcLC\nhQuZMGECQ4cOZeXKlXz00Ue43T3/JbHZfG/hqwi/QfxozEymD5/C0oLlrKnIo9XVyluF7/NF6Uou\nSp3BxMEnY7WY/90G+fkzKTOBSZkJuNxudhbXsW5HNet2VFPlaMEDFJTWUVBax+uf7SI+Mohxo2IZ\nPyqWtCHh2Kzmf4cTdbDHfLHXxLeo18Qo6jUxijd7rEdXUKuqqpg6dSqvvvoq2dnZXdsfeugh1q1b\nxyuvvHLYMfv37+d3v/sdn3zyCVarlSFDhjB58mTeeOMN1q9f751v4UMK9u3hnxveYFv1zq5tQ8OT\nuDr7ErITxvTJK5Iej4eSqkZWb6lg9eZytu918L9dExpkZ8KYeE7LSGD8SXEEB/adK8MiIiLiW3r9\nFv9B7e3t1NbWEhcXx5///Gc+//xz3nnnnR4VW1/fgsvl+7cnPB4Pm2q28caOdylvquranh6VxqWj\nzmdoWLKJ1X23usY28gpqWL+jhs2F+2j/n1tGNquF0cMjGT8qlnFpsUQfmDXAF9hsVsLCgvpNr0nf\npV4To6jXxCgHe80behRQAS6//HKysrK4++67gc6wddZZZzF79mzmzJnzncc7nU7OP/98zjvvPG67\n7bYeFdvfxs+43C5WVazhvcIPqWtv6No+IT6Hi1JmEB10+KwIfU2708XWIgd5O2vYUFBDXVP7YfsM\njQ8lJzWGs8YlEREaYEKVx05jtcQo6jUxinpNjOLNMai2++67776eHBASEsJjjz1GYmIidrudRx99\nlO3bt/P73/+eoKAg5s2bx6ZNm5g0aRIAGzduZOPGjfj7+7Nz507uuece6uvreeihh3o8gWxrqxO3\nu0d5uk+zWqwMHZTMlKRJ2K12ihqKcXlclDVV8GVpLs0dLQwLG9KnHqT6XzablYSoYHLSYvj+qUPI\nGhlDWIid5tYO6pudANQ1tbO9uJbP88qw26wMSxiE1dr3hjIAWK0WgoL8+12vSd+jXhOjqNfEKAd7\nzRt6PM3Ueeedh8PhYMGCBdTU1DB69Giee+65rjlQKyoqsNm+nTezra2NRx99lJKSEoKDgznrrLN4\n+OGHCQ0N9coX6A8CbP78YMR0piSdxrLd/+GrslV0eFx8UvwlueVrmDF8GmcmTcbeh4MqgNViIWVw\nGCmDw5g1dSTVtS2dU1jt7JzCqrXdxSufFPDlpnKu/t4oThoaaXbJIiIi0gf1+Ba/mQbK7YnK5mre\n3rWcvOpNXdsiAyK4eOQPOCVhnImVHb/d5fW89OF2dpd/O5RhUkY8l5+dSngfuu2vW2FiFPWaGEW9\nJkbx5i1+BdQ+rLBuD28WvEdhXVHXth+nX8bkwaeYWNXxc3s8fLmhjNc/29U1x2pQgI2ZZ6QwbXxS\nn5imSidyMYp6TYyiXhOjKKAOIB6Ph401W/j3jrdxtNUS5BfE7yb+mjD/QWaXdtwaW5ws+XwXX+SV\ncbD5kmNDmX3uKNKSI0ytTSdyMYp6TYyiXhOjeDOgmn/JSo7KYrGQHZvJDZlXAdDS0cLrO942uaoT\nExpk59oZ6fz2mgkMS+gM2iXVjfzxpXU8/+7WbmcCEBERkYFDAdVHpIQP54ykzpkR1lZtYHPNNpMr\nOnEpg8O455oJzD73JEICO5/XW7G5gt88u4qP15bgOo7VxkRERMT3KaD6kItHziD8wK39V3cspbWj\nzeSKTpzVauHscUn8/uaJnJGVCEBLWweLP9rB/QvXUFBaZ3KFIiIiYrQez4NqpoE+h5vdaic6MIp1\nVRtp6Wilw93BmOiTzC7LKwLsNsalxZIxIoqiygbqmtqpa2rny43l7Cqrw2qxEBcR1OtrSWu+QDGK\nek2Mol4To3hzHlQFVB8THxxHcWMZVc3V7KkvJjN6NOEBYWaX5TVRYYFMzR5MWIg/BSV1OF1uqhwt\nrN1ezcfrSqiubSE40E5UWAAWi/cn+9eJXIyiXhOjqNfEKN4MqHqK3wc5Wmu5f/WfaXO1MyR0MP83\n4efYrLbvPtDH1De18/HaElZurmBffeshr8VGBDI5M5FJmQnERXhn3V/Q065iHPWaGEW9JkYxdalT\nM+lff52C/AIJsAWwdf926tsbCPQLJCV8uNlleV2Av43RwyI5Z0Iyo4dFYsFCZW0LLpeH5tYOtu+t\n5T9rSti2Zz9uD8RGBGH3O7EhALrSIEZRr4lR1GtiFF1BFdweN39e+wRF9cX4W+389rQ7iAmKMrus\nXtfmdLFuRzUrN5WzdY+D/25eu5+V8aNimZyZQMbwKKzWng8B0JUGMYp6TYyiXhOjaKJ+AaC0sZwH\nv3kMt8fN6KhR3Jp9Y6+My+yrHA1t5G6pYMWmcsr3NR/yWnioP5MyEpicmUBybOgxv6dO5GIU9ZoY\nRb0mRlFAlS5v7XqfD4s+BeCe0+4gISTe5IqM5/F42FPRwMpNFazeVklji/OQ14fFD2Ly2AROGxNP\nWPDRbz3oRC5GUa+JUdRrYhRvBlQ/r7yLmOaU+HFdAdXRVjcgA6rFYmFEYhgjEsO4YnoqG3ftY8Wm\ncjbu2ofL7aGosoGiygZe+6SAsSnRTM5MIDs15oTHq4qIiEjvUED1cSH2b/+l0tTeZGIlfYOfrXMc\n6vhRsTQ0t/P1tipWbCpnT0UDLreHvIIa8gpqCAn047Qx8cw8I4XQILvZZYuIiMh/UUD1caH24K4/\nNzqbj7LnwDMo2J/pJycz/eRkSmuaWLm5nNzNFdQ2ttPU2sEn60opqW5i3lXjsA6gsbsiIiJ9ne5x\n+jib1UaQXyAATU5dQT2SpJgQLjsrlT/PPZ07rsghe2Q0ADuKa/l8fanJ1YmIiMh/U0DtB0L8Oq+i\n6grqd7NaLWSMiOLWWWNJju0cHvHaZ7uoqWsxuTIRERE5SAG1Hwjx7wxauoJ67PxsVm44fzRWi4W2\ndheLlm/Hhya0EBER6dcUUPuBUPvBgKorqD0xPCGMGacNBWDL7v18tanc5IpEREQEFFD7hYMBtVFX\nUHvs4inDSYjqHCLxyscF7K9vNbkiERERUUDtB0LsB8egKqD2lN3Pxg3njcYCtLR1sPD9fN3qFxER\nMZkCaj8QYv92DKrCVc+lJodzzoQhAOTtrNFT/SIiIiZTQO0HogMjAXC6O/ig6BOTq/FNs6amEBvR\nOV3XM29sZPveWpMrEhERGbgUUPuB7NhMhoQOBuDdwg/ZVLPV5Ip8T4C/jet/0Hmrv7HFyYMvreXD\nb4p1RVpERMQECqj9gL/Nzs1Z1xJqD8GDh4VbXqaiqdLssnxO+rBIfv7DLIIC/HC5Pbzy8U6efmsL\nLW0dZpcmIiIyoCig9hNRgZHMyZyN1WKl1dXGMxsX0ezU5PM9NSE9jr/+6syuSfy/ya/igX+soaxG\nD6CJiIgYRQG1H0mLTOGytIsBqGqp4cWt/8LtcZtcle9Jig3l3utPZeKYeADK9zVz/z/W8PU2XZUW\nERExggJqP3NG0kROH3wqAFv3beftXctNrsg3BfjbuOnCMfz4e6OwWTtXm3r6rS28/J+ddLgU+kVE\nRHqTAmo/Y7FYuHzUTFLChwPw0d7PWFOZZ25RPspisTD95GTu/PF4IgcFAPDRmmIeenk9joY2k6sT\nERHpvxRQ+yE/qx9zMmcTERAOwEvb/k1xg+b2PF6pSeHce90pjB7WOZ1XQUkd8xd+w/a9DpMrExER\n6Z8UUPup8IBB3Dz2GuxWP5xuJ89sXERDe6PZZfmssBB/7rgih/MnDQOgvqmdh1/O47VPCti+14Gz\nQ7f9RUQIQ+sEAAAgAElEQVREvMXi8aGJHh2OJjoUBHrk64p1LNr6CgCpESP4Rc7N2Kw2k6vqu/z8\nrERGhhy119bvqOa597YdMv2U3c9KalI46UMjSB8WyYjEMPxs+vefHNmx9JqIN6jXxCgHe80bFFAH\ngCU73+GT4i8BODVhPFenX6aQegTHeiKvdDSz+MMdbCty4HIf/ivkb7eSlhzRFViHJwzCZlVglW8p\nNIhR1GtiFAVU6RGX28WTG14g37ETgKyYDG7IuAq7zW5yZX1PT0/kbU4XBaV15Bc5yN/rYE95Q7eB\nNdDfxqghEaQPjSR9WARD4wZhtVp64yuIj1BoEKOo18QoCqjSY60drTy76R9sdxQAkBaRwk+yriXI\nL8jkyvqWEz2Rt7Z3sLPkvwJrRQPd/YYFB/h1BtZhkaQPjSA5LhSrRYF1IFFoEKOo18QoCqhyXJzu\nDhZu+Rd51ZsBGBI6mFtz5jDIP9TkyvoOb5/Im1s72FFS2xVYiysb6e4XLjTIzkn/FVgHx4RgUWDt\n1xQaxCjqNTGKAqocN7fHzcv5b7Cy/GsA4oJi+FnOHKKDokyurG/o7RN5Y4uT7Xtryd/bGVhLq7tf\nQjUs2M5JQyO7AmtCVLACaz+j0CBGUa+JUUwPqIsXL+b555+npqaG9PR07r77brKyso64/8KFC3nl\nlVcoLy8nMjKSc889lzvuuAN/f/8efa5+ubzD4/HwduFyPiz6FICIgHBuzb6RwaEJJldmPqNP5PXN\n7ezYW8u2vQ7yixyU72vudr+IUP8D41c7A2tsRJACq49TaBCjqNfEKKYG1GXLlnHnnXdy//33M3bs\nWBYtWsTy5ctZvnw5UVGHX4V75513+O1vf8uDDz5ITk4Oe/bs4c477+SCCy7gzjvv7FGx+uXyrv/s\n/Zw3C94DINgviLnZNzAifJjJVZnL7BN5XWMb+QevsBY5qHS0dLtfVFhAZ2AdGknGiKiula7Ed5jd\nazJwqNfEKKYG1Msvv5ysrCzuvvtuoPNq3Jlnnsns2bO56aabDtv//vvvp7CwkBdffLFr25/+9Cc2\nbtzI4sWLe1Ssfrm8L7fsGxbnv44HD/5WOzePvZbR0aPMLss0fe1Evr++le3/dYW1pq71sH38bBbm\nXDCGU0fHm1ChHK++1mvSf6nXxCjeDKg9mpjR6XSyZcsWJk2a1LXNYrEwefJk8vK6X+993LhxbNmy\nhY0bNwJQXFzM559/zplnnnkCZYu3TBp8CjeNnY2f1Y92t5OnNr7I2soNZpclB0SFBTIpM4EbzhvN\nQ7dM5qGfTuL689KZlJHQddW0w+Xh7+9sZVPhPpOrFRER8Q6/nuzscDhwuVzExMQcsj06Oprdu3d3\ne8wFF1yAw+HgqquuAsDlcvGjH/2Im2++ucfF2rQyT684OTGL0IBgnlz/Iq2uNl7c8i9a3S2cOWSy\n2aUZ7mCP9dVeS4gJISEmhLPHJ+PxeCgoqePhl9fT2u7iiTc2Me/H4xk1JMLsMuUY9PVek/5DvSZG\n8WaP9SigHonH4zniAxurV6/mmWeeYf78+WRlZVFUVMTvf/97YmNjmTt3bo8+JyxMc3b2lomR2cRF\n/orff/E4DW2N/GvbG7hsTmaN+cGAfBjHV3rt1KhQ7g0J4N5nc2nvcPPXV/P4461TGDE43OzS5Bj5\nSq+J71OviS/pUUCNjIzEZrNRU1NzyPb9+/cTHR3d7TELFizg4osv5tJLLwUgLS2N5uZm7r333h4H\n1Pr6FlwujZ/pLZGWGH49YS6PrX2W/a21vLr5HWLtsYyNHWN2aYax2ayEhQX5VK8lRQXxs0uzeOzf\nG2hq7eCep1fy22snkBAVbHZpchS+2Gvim9RrYpSDveYNPQqodrudjIwMcnNzmT59OtB59TQ3N5fZ\ns2d3e0xLSwvW/1mD3Gq14vF4jnrltTsul1sDvHtZTEAMt4+fyx+/fpSmjmbyqrYyOjLd7LIM52u9\nljkiihvPH83f39lKXVM7f3ppHb+ZfbKe7vcBvtZr4rvUa+JLejxY4LrrruO1115j6dKl7Nq1i3vv\nvZfW1lZmzZoFwLx583jkkUe69p82bRovv/wyy5Yto6SkhBUrVrBgwQKmT58+IG8d+4LIwAjSIlMA\nKKzdY24xcswmZiTw4+93zsCwr76VP7+ynobmdpOrEhER6bkej0E977zzcDgcLFiwgJqaGkaPHs1z\nzz3XNQdqRUUFNputa/+5c+disVh47LHHqKysJCoqimnTpnHbbbd571uI16WEDyevejPlTZU0O1sI\ntmvski+YNj6ZptYO3vyikPJ9zTz67w38+kfjCArwynBzERERQ2ipU+nW7rq9/Hnt4wDMzb6BjOiB\ncZu/P8wX6PF4ePWTAj78phiA9KER/PpH47BadceiL+kPvSa+Qb0mRjFtHlQZOIYMGozd2nnVTbf5\nfYvFYuGKaalMGZsIQP6Bif5FRER8hQKqdMvP6sewsCEA7KrbY24x0mMWi4Uff+/bFcEq9jWbWI2I\niEjPKKDKEaWEDwdgT30xLrfL3GKkxwL8bUSE+gNQ6VBAFRER36GAKkc08kBAdbqdlDSWmVuMHJf4\nyM65UKscLSZXIiIicuwUUOWIUsKHdf15V233S9lK3xYX2Tn7QqUCqoiI+BAFVDmiYHswiSHxAOyq\nKzK5GjkeBwNqTW0LLree3hUREd+ggCpHdXAc6qaarayr2mhuMdJjB2/xu9we9te3mVyNiIjIsVFA\nlaM6M3kygbYAXB4XL2xezFelq8wuSXrg4BVU0DhUERHxHQqoclRJoYn8ctxPCLWH4MHDy9vf4IM9\nn+BD6zsMaLER3wbUnSW1JlYiIiJy7BRQ5TsNDUvm9vG3EBkQAcDbhct5s+A9hVQfEBTgx4jEMADe\nyy1iR7FCqoiI9H0KqHJM4kPiuOPkucQHxwHwcfEXvJT/b82P6gPmXDCaQH8bLreHp5ZuprZRY1FF\nRKRvU0CVYxYZGMHt429h6KBkAFaVr+H5zS/hdDlNrkyOJjE6hBvPHwNAXVM7Ty7dTIdLT/SLiEjf\npYAqPRLqH8Ivx93MqMhUADbUbOHJDS/Q0tFqcmVyNCefFMv5kzrntS0oqePVjwtMrkhEROTIFFCl\nxwL9ApmbdT3ZsZkA7KjdxYL1z9DQ3mhyZXI0l5yRQsbwSAA+XlfCys3lJlckIiLSPQVUOS52m50b\nM37M5MRTANjbUMpf1z3F/laHyZXJkVitFn5ycSbRYYEALFq+naKKBpOrEhEROZwCqhw3m9XGVek/\n5JyhZwJQ2VzNX9Y+SUVTlcmVyZGEBtn52ayx2P2sODvcPPHmJhpbNIZYRET6FgVUOSEWi4VLUs/n\n4pE/AKC2rY5H1j1JcUOZyZXJkQxLGMQ1554EQE1dK8++vQW3W1OGiYhI36GAKl7x/WFnc9VJl2LB\nQpOzmSfynqOqudrssuQITh+byNnjkgDYvHs/S78qNLkiERGRbymgitecnnQa1435ERYsNDgb+Vve\nczhaNTF8X3XlOWmMTOqcxP/dlUWs26F/UIiISN+ggCpeNSFhHJePmgnA/lYHj294nkZnk8lVSXf8\nbFbmzhxLWIg/AM+9u5Xyffq7EhER8ymgitdNTZ7EBSPOBaCiqZInN7xAa4dWL+qLIgcFMHdmJjar\nhdZ2F4+/sYmWtg6zyxIRkQFOAVV6xYzh0zh7yBQAiuqL+fumf+B0K/j0RaOGRHDFtM6FF8r3NfPC\nsm14PHpoSkREzKOAKr3CYrEwK/UCTks4GYB8x04WbXkZt0dLbPZF009OZlJGAgBrt1fz/uq9Jlck\nIiIDmQKq9BqrxcqP03/I2JjOdeDXV2/i5fw3dHWuD7JYLFwz4ySGxoUCsOTzXWzZvd/kqkREZKBS\nQJVeZbPauCHjx6RGjABgZfnXvF243OSqpDsBdhu3zhpLSKAfHg88/dZmampbzC5LREQGIAVU6XX+\nNjs/zbqOIaGDAfiw6FP+s/dzk6uS7sRGBPGTizOwAE2tHTzz9hbcuuItIiIGU0AVQwT5BXFrzhzi\ngmIAeLPgPVaWfWNyVdKdzBHRzDyj84r3rrJ6PltfanJFIiIy0CigimEG+Yfys5ybiAgIB+Bf+a/z\nz22vUdygANTX/GDiMIYcGI/6+me7cDRomjARETGOAqoYKjookp/lzCHELxgPHlaVr+HBbx7jL2uf\nYE3Fejo0FVWf4Gezcu2MdCxAa7uLf320w+ySRERkALHdd99995ldxLFqbXXidms8nK8b5B9KTuxY\nnG4nFU1VuD1uHG115FVvZmXZ17R1tBEXHEOgX6DhtVmtFoKC/NVrdE7i39jiZHd5PeX7mhkaH0pi\ndIjZZfUb6jUxinpNjHKw17zB4vGhOX8cjiY6OjSPZn/S7Gwmt3wNX5SspKb122mNrBYr42LHMjV5\nMiPDh2OxWAypx8/PSmRkiHrtgJa2Du5+bjWOhjYiBwXwwJzTCArwM7usfkG9JkZRr4lRDvaaN+gK\nqpjKbrOTEj6MM5MnMzxsCM3OFqpb9uHBQ3lTJavK17CxZis2i5X44FhsVluv1qMrDYey+1mJiwji\n621VtLa7aO9wMTYl2uyy+gX1mhhFvSZG0RVU6deqmqv5oiSX3PI1tLpau7YH+wUxafApTE2aTExQ\nVK98tq40dO/xNzaxbkc1FuDuaycwIjHM7JJ8nnpNjKJeE6N48wqqAqr0Wa0dbXxTuY7PS1ZS3lTZ\ntd2ChcyYdM5MOp2TolKxWrz3rJ9O5N1zNLTx27+vorXdxdC4UH533SlYrcYMu+iv1GtiFPWaGEW3\n+GVA8LP6MSxsCGckTSItciRtrjYqm6vx4KGquYavK9extioPPBAfEofdeuJjI3UrrHtBAX4E+vux\nqXAfdU3tDE8IIyE62OyyfJp6TYyiXhOj6Ba/DFj7Wx18VbqaFWWraXQ2dW0PsPlzWsLJTE2eTGJI\n/HG/v640HFmHy83/PbWSusZ2MlOiuP3yHLNL8mnqNTGKek2MYvot/sWLF/P8889TU1NDeno6d999\nN1lZWd3uO3v2bL755vAVg8466yyefvrpHn2ufrnkIKfLybqqjXxWsoK9DSWHvDYqMpWzkieTGT26\nxw9V6UR+dEu/LOTtFXsAePAnE4mL1FXU46VeE6Oo18Qo3gyoPb4numzZMh588EHuv/9+xo4dy6JF\ni5gzZw7Lly8nKurwB1eeeOIJnE5n1387HA4uvvhiZsyYcWKVy4Bmt9k5LfFkTks8mT31e/m8ZCXr\nKjfQ4XGxw1HADkcBkQERTE2axJSkiQTbg8wuuV84MyeJd1cW4fZ4+Gx9GZdPSzW7JBER6Yd6/HTJ\nwoULueKKK5g5cyYjR45k/vz5BAYGsmTJkm73DwsLIzo6uut/X331FUFBQQqo4jXDw4Zy7Zgf8cDp\nv+XClHO7llJ1tNXyVuH7PLz2b7R2tH7Hu8ixiBwUwLhRMQB8ubGMdqfL5IpERKQ/6lFAdTqdbNmy\nhUmTJnVts1gsTJ48mby8vGN6jyVLlnD++ecTGGj8KkHSvw3yD2XG8On8v0l3MSdzNmkRKQBUNdfw\n+s53TK6u/5g2LgmAptYOvt5WZXI1IiLSH/XoFr/D4cDlchETE3PI9ujoaHbv3v2dx2/cuJGCggL+\n+Mc/9qzKA2w2700nJP2XH1ZOGZzNhMQsntu0mDUVeeSWf0NOfAY5cZlHPfZgj6nXjixzZDSJ0cGU\n72vms7xSzhqfZHZJPkm9JkZRr4lRvNljXlmz0OPxHNNSlK+//jppaWlkZh49JBxJWJjGEUrPzJ10\nNb9evof9LbW8tO11xg1NJyIo/DuPU68d3YVnjOTZpZsoLKunuqGdUUMjzS7JZ6nXxCjqNfElPQqo\nkZGR2Gw2ampqDtm+f/9+oqOPvvxha2sry5Yt47bbbut5lQfU17fgcukJROmZa8ZcwaNrn6GhrZEF\nKxfys3E3HvEfVDablbCwIPXadxifGo2/3Uq7082bn+7k5osyzC7J56jXxCjqNTHKwV7zhh4FVLvd\nTkZGBrm5uUyfPh3ovHqam5vL7Nmzj3rssmXLcDqdXHjhhcddrMvl1hQZ0mNp4SM5e8gUPi3+is01\n+XxatJKpyZOOeox67ej8/axMzkzks/WlrNpSwaVTUwgPDTC7LJ+kXhOjqNfEl/R4sMB1113Ha6+9\nxtKlS9m1axf33nsvra2tzJo1C4B58+bxyCOPHHbc66+/zjnnnEN4+HffXhXxtotTftA1gf8bBe9S\n2aSHe07UOScnA9Dh8vDp+lKTqxERkf6kxwH1vPPO484772TBggVccsklbN++neeee65rDtSKigqq\nq6sPOWbPnj2sX7+eH/7wh96pWqSH7DY71425EpvFhtPtZOHWV3C5NUXSiRgcE0JmSufv/WfrS3F2\n6OcpIiLeoaVOZUD5qOgzlu5aBsCM4dO5MOXcQ17Xiis9s7lwH4+8tgGAG84bzZSsRJMr8h3qNTGK\nek2M4s2VpDTnhAwo04dO7Zof9YM9n1BYt8fcgnxcxogoEqM7lzv9aE0xPvTvXRER6cMUUGVAsVqs\nzB59BYG2QDx4WLTlFa0ydQIsFgvfmzAEgOKqRvL31ppckYiI9AcKqDLgRAdFcsVJMwGoad3PmwXv\nmVyRb5uUmUBIYOeEIB99U2xyNSIi0h8ooMqAdEr8OMbFjgXgq7LV7HAUmFyR7wqw2zjrwPKnGwpq\nWPL5LqoczSZXJSIivkwBVQYki8XC5SfNJMTeOX5y8bbXaXO1m1yV75o2Phl/Pyse4L3cIu56ZhUP\nv7yeVVsq9HS/iIj0mO2+++67z+wijlVrqxO3Ww9hiHcE2AKICAgnr3ozzR0ttLvbyYxNJyjIX73W\nQ0EBfqQPi6SuqZ2q2hYAaupaWbujmk/XleKobyMi1F+T+f8Xq9WiXhNDqNfEKAd7zRs0zZQMaB6P\nh2c2LWJTzVYsWPj1KXM5JSVTvXYC9te3smJTOV9uLKem7tAH0IYlDGJq9mBOGx1PcGCPFrLrdzT1\njxhFvSZG8eY0UwqoMuDVttXxwOq/0NLRSnxwLH/5wd00NTjVayfI7fGQX+Tgy43lrN1eRYfr21ON\nv5+VCelxTM0eTFpyOBaLxcRKzaHQIEZRr4lRFFBFvCy37Bteyv83ABenf5/zhn5fveZFjS1OVm2p\n4IsNZZRUNx3yWnxUMFOzEpmcmTCghgAoNIhR1GtiFAVUES/zeDw8seF5tu3fgcVi4a5Tf05ySLLZ\nZfU7Ho+HPRUNfLmhjFVbK2lt//YBKqvFQnZqNFOzB5OZEoXN2r+f4VRoEKOo18QoCqgivWBfi4Pf\nf/0Iba42BocmcOeEX+BnHdjjJHtTW7uLNdur+HJDGTtK6g55LSLUnylZiUzJGkxcRJBJFfYuhQYx\ninpNjKKAKtJLVpSv4l/b3gDgvOHncH7K902uaGAo39fEVxvLWbGpnPpm5yGvpQ+N4PxJw8kYEWVS\ndb1DoUGMol4To3gzoGqaKZH/MjwimT2NRVQ37WNX3R48eLAAYf6DsFltZpfXbw0K9idjRBTnTBjC\n0PhBtDldh0xXtWpLBelDI4gJ7z9XUzX1jxhFvSZG0TRTIr3Ez89Km72ZO96/H6f72yt5fhYbw8KG\nkhYxgtSIFEaEDyPQb+A80GMGR0MbX20qZ/nqIlraXESHBTD/hlMJDrSbXZpX6KqWGEW9JkbRLX6R\nXnLwl2tlwXre2vkBRQ3FuD2H95zVYmXIoCRSI0aQFpHCyPDhBB9YlUq86+ttlTz91hYAJo6J5+aL\nMkyuyDsUGsQo6jUxigKqSC/53xN5u6ud3XV7KagtZGdtIXvq9+J0dxx2nAULg0MTSI1IIS0ihdSI\nEQzyDzXhG/RPz727lZWbKwC46cIxTMpIMLmiE6fQIEZRr4lRFFBFesl3ncid7g721pews7aQgtpC\nCuv20OZq7/a94oPjuoYEpEaMIDIworfL77da2jq494WvqalrJSjAxvzrTyXGx5/uV2gQo6jXxCgK\nqCK9pKcncpfbRUlj2YHAuptdtbtp7mjpdt/owKiuq6upESnEBEUNyBWUjtfOkloeXLwOjwdGJYcz\n76rxWK2++/NTaBCjqNfEKAqoIr3kRE/kbo+b8qbKrsBaUFtIQ3tjt/tGBIQfCKudgTUhOE6B9Tss\n/bKQt1fsAWDW1BQumDzc1HpOhEKDGEW9JkZRQBXpJd4+kXs8Hqqaqymo3c3OA4HV0Vbb7b6h9pCu\nsJoaMYKk0ESslv69mlJPudxu/vjSOgrL6rFZLfxm9smMSAwzu6zjotAgRlGviVEUUEV6iREn8n0t\n+7uurhbU7qaqpabb/YL8AhkZPvxAYE1h6KAkzcUKVDqaue+Fb2hzuggJ9OPkk2LJSYtlzLBI/O2+\n8/NRaBCjqNfEKAqoIr3EjBN5bVsdu2p3Hwituylrquh2P3+rnZTw4V1XWYeHDcFu6x9zgvbUlxvL\neHFZ/iHb/O1WMkdEk5MaQ3ZqNIOCvTNZdG9RaBCjqNfEKAqoIr2kL5zIG9ub2FW3+8CwgEJKGsrw\ncPivadfiAZGdQwJGhA2sxQM2795H7uYKNu7aR1ProVN/WSyQlhROTlos49JiiI/qe3PU9oVek4FB\nvSZGUUAV6SV98UTe0tFCYV1RZ2B1FB518YBpQ87g4pE/GFBjV11uNzuL61i/s4b1O6upqWs9bJ/E\n6GBy0mIYlxZLyuAwrH3gYbS+2GvSP6nXxCgKqCK9xBdO5N+1eMAp8eOYPfryATle1ePxUFrTxPqd\nNeTtrGF3ef1h+4QF28lO7QyrY4abN27VF3pN+gf1mhhFAVWkl/jiifzg4gFvFrzH7voiADKj07kx\n82r8bX17HGZvczS0saGghryCGrbucdDhOvTv1N/PSsaIKHLSYsgeGUNYiHE/L1/sNfFN6jUxigKq\nSC/x5RN5m6udv2/6B9v27wBgZPhwfpp1PcF2315xyVta2zvYXLifvIIaNhTUHD5uFRiZHM64tBhy\nUmNIjPbOSfZIfLnXxLeo18QoCqgivcTXT+Qd7g7+sfVV1lZtACApNJFbs+cQHjDI5Mr6FpfbTUHJ\nt+NWq2sPH7eaEBXcGVbTYhg5ONzrq1b5eq+J71CviVEUUEV6SX84kbs9bl7dsZSvSlcBEBMUzc9z\nbiImKMrkyvomj8dD2cFxqwU1FJYdPm51ULCdcWkxXDwlhchB3pkpoT/0mvgG9ZoYRQFVpJf0lxO5\nx+Ph3d0fsnzPxwCE+4fxs5w5DA5NMLmyvq+2sY28gs6HrP533Gp8VDD/39XjCfPCHKv9pdek71Ov\niVEUUEV6SX87kX+y9wuWFLwLQLBfEHOzb2BE+DCTq/Idre0dbNnt4Jv8Sr7eVgXAiMQw5l05jgD/\nE3v6v7/1mvRd6jUxijcD6sCZLFFkAJo2dCqzR1+O1WKluaOFBeufZdu+HWaX5TMC/TuXUv3pxZl8\n/5QhAOwur+fJpZsPmxFARES8RwFVpJ+bmDiBOZmz8bP60e528tTGF1lXtdHssnzO5dNSmZgRD8Cm\nwn0sej8fH7oBJSLiUxRQRQaA7NgMbs2+kUBbAC6Pixc2L+56iEqOjdVi4YbzRpMxovNhsxWbK1jy\neaHJVYmI9E8KqCIDxKjIkfxy3E8ItYfgwcPL299gy77tZpflU/xsVubOzGRYQue0XctWFfHRmmKT\nqxIR6X8UUEUGkKFhydw+/hZC7Z2D2FeWfW1yRb4nKMCPX12WTVxE5wIIr/xnJ19vqzS5KhGR/uW4\nAurixYuZNm0aWVlZXH755WzcePTxbA0NDcyfP58pU6aQlZXFjBkz+OKLL46rYBE5MfEhcZySMA6A\nLfvyaXO1m1yR7wkL8ef2K7IJC7bjAf7+zla27tlvdlkiIv1GjwPqsmXLePDBB/nFL37Bm2++SXp6\nOnPmzGH//u5Pzk6nk+uuu47y8nIef/xxli9fzgMPPEB8fPwJFy8ix2dcbBYATreTLfvyTa7GN8VF\nBvOry3MI8Lfhcnt4/I1N1NS1mF2WiEi/0OOAunDhQq644gpmzpzJyJEjmT9/PoGBgSxZsqTb/V9/\n/XUaGhp44oknyMnJYfDgwUyYMIGTTjrphIsXkeMzInwo4f6d4yjzqjaZXI3vGpYwiJ/PGovVYqG1\n3cU7K/aYXZKISL/Qo4DqdDrZsmULkyZN6tpmsViYPHkyeXl53R7z6aefkpOTw/z58zn99NO58MIL\neeaZZ3C7NYegiFmsFis5cWMB2LRvG+0up8kV+a4xw6M4fWznCl0rNlVQub/Z5IpERHyfX092djgc\nuFwuYmJiDtkeHR3N7t27uz2muLiYVatWcdFFF/H3v/+dPXv2MH/+fFwuF3Pnzu1RsTabnumS3nWw\nxwZCr01IyObzkpW0u9rZXruDcfFjzS7JZ10yNYWVmytwuT28s3IPP52Z+Z3HDKReE3Op18Qo3uyx\nHgXUI/F4PFgslm5fc7vdxMTEcP/992OxWBgzZgxVVVU8//zzPQ6oYWFB3ihX5DsNhF47JTyT8M1h\n1LXWs9mxlWnpE80uyWdFRoYwY9Jw3luxm9wtFVz1g9EMSwg7pmMHQq9J36BeE1/So4AaGRmJzWaj\npqbmkO379+8nOjq622Pi4uKw2+2HBNiUlBRqamro6OjAz+/YS6ivb8Gl5QWlF9lsVsLCggZMr+XE\nZPB5SS5rSjdSVVOL3WY3uySf9f0JyXy4ughnh5tF72zh5z/MOur+A63XxDzqNTHKwV7zhh4FVLvd\nTkZGBrm5uUyfPh3ovHqam5vL7Nmzuz1m/PjxvPvuu4ds2717N7GxsT0KpwAul5uODv1ySe8bKL2W\nHTOWz0tyaXW1sbl6O2Njxphdks8aFGRn2vgkPvi6mG/yq9hVUtc1of/RDJReE/Op18SX9HiwwHXX\nXcdrr73G0qVL2bVrF/feey+tra3MmjULgHnz5vHII4907X/llVdSW1vLAw88wJ49e/jss8949tln\nuVM8GY4AACAASURBVPrqq733LUTkuKRGjOiatH+9nuY/YT+YOIwAuw2AN7/UMqgiIserx2NQzzvv\nPBwOBwsWLKCmpobRo0fz3HPPERXVuT51RUUFNputa/+EhAReeOEF/vjHP3LxxRcTHx/Ptddey003\n3eS9byEix8VmtZEdm8mKstWsq9rAqQnjSY9KM7ssnxUW7M/3Tknm3ZVFbNy1j2WrishOjWFwdPAR\nx+mLiMjhLB6Px2N2EcfK4WjS7QnpVX5+ViIjQwZUr5U2lvPwmr/hdHdgt/rx06zrFVJPQFOrk3lP\n5dLS1tG1LSzEn9HDIhk9LJL0YZHERQQNyF4Tc6jXxCgHe80bFFBF/stAPZHn79/J0xsX4nQ7sVv9\n+EnWdYyOGmV2WT5r6579vPyfnZTWNHX7ekx4IGOGR3FKRgJDY0MYFKSH06T3DNTzmhhPAVWklwzk\nE/kORwFPbngRp9uJn9WPn4y9ljHRWvHtRNQ1tpG/t5ZtRQ7yixxU1Xa/FGpidDDpwyIZPbTzCmuo\nAqt40UA+r4mxFFBFeslAP5HvcOziqQ0v0H4gpN489hoyotPNLqvfqKlr6Qqr24oc1Da2H7aPBRgS\nH9o1JCAtOYKgAK9MWS0D1EA/r4lxFFBFeolO5LDTUciTG1+g3dWOn8XG/9/encdHWd77/3/NTCb7\nPtlD2JcgSSBhR0HBHW2larGnirVHrd0O7c/Teuw5nlbbY7Wtx1alp18tWrWl1VpqtYpaN7RiEBFC\n2NcAScieyTpJZv39EQhEQBiYmXsyvJ+PRx/gzD33fCgfLt5c931d9+3FN1OUMdHosiKOxWLC4fax\ntvIQW/a1sOOAne5e93HHmU0mRuUlHQ6s6YzNT8YaZTnBGUVOTOOahIoCqkiQaCDvt6etil9venIg\npN5WvER7pAbYp3vN6/NR09jF9sOzqzur2+hzeo7/nMXMuGEp/bcEjEhjZE4SUXqEpXwGjWsSKgqo\nIkGigfyoPW1V/N+mJ+nzOLGYLNyukBpQp+o1t8fL/vrOgVsCdte04z7BU4Bioy2ML0gduCVgWFYi\nZm1pJcfQuCahooAqEiQayAfb176fX1c8Sa+nD4vJwq1FNzE5c5LRZUUEf3vN5fawp7ZjILDuO9SB\n9wTDd0Js1MDsatGodLLS4oNRvgwhGtckVBRQRYJEA/nx9rUf4NcVy+n19GE2mbm16CamZBYZXdaQ\nd7a91tPnZndN28AtAdUNXZxoMJ8yNoMrZw1n3LDUsy9ahiSNaxIqCqgiQaKB/MSq2g+wrOJJej29\nmE1mvlZ8sy73n6VA91pXj4udB+1sOzzDWtfiGPT+uGEpLJw1gpIxNj3V6hyjcU1CRQFVJEg0kJ/c\n/o6DLKtYTo+7l7yEHP5r5p1GlzSkBbvXWjt6eXdjLe9sqB30VKv8zAQWzhzB9IlZWlx1jtC4JqES\nyICq0UlETsvI5OFcNnw+APWORjze41eYS/hIT47lugvH8NA35/DF+WNISYwGoLapm9++so0fPF7O\nW+ur6XPp91FEwo8CqoictpyELAC8Pi9NPS0GVyOnIy4miitnjuDnX5/DLVcWkp0WB0BLRx9/fGs3\n3/+/D3n5gyq6elwGVyoicpQeTyIipy37cEAFaHA0DgRWCX/WKDPzJudxQXEuG3Y1sWrtAfbXd9LV\n4+JvH1Tx2kcHmTc5j8tnFJCeHGt0uSJyjlNAFZHTlhGbjsVkwePz0NDdBJlGVyT+MptNTCvMYuqE\nTHYcsLNq7QG27rfT5/Lw5vpq3tlQw6zzsrli1gjyMwJzL5mIiL8UUEXktFnMFjLjbNQ7Gql3NBpd\njpwFk8nExJHpTByZzoH6TlatPcD6nY14vD7WbKlnzZZ6SsdlsHDWCMbkpxhdroicYxRQRcQv2QlZ\n1DsaaXA0GV2KBMiInCS+saiIBruDNz46yAeb63F7vGzc3czG3c2MH5bC+SW5TB2fRXys/toQkeDT\nSCMifsmO77+u3+BoxOfzaU/NCJKdFs/NVxRyzQWjeHN9De9urKGnz8OumnZ21bTz+zd2MXmMjVmT\nsikZY8MaZTG6ZBGJUAqoIuKXnPj+hVE97l46nF2kxCQZXJEEWkpiDNdfNIaFs0bwXkUt71fW0dDq\nwO3x8smuJj7Z1URcjIWp47OYOSmbicPTMJv1DxURCRwFVBHxS3bC0ZVRDY5GBdQIFh8bxZWzRnDF\nzOEcaOhk7dYGPtreQHuXk54+Dx9sruODzXWkJEQzY2I2syZlMzInSbPqInLWFFBFxC9HLvFDf0Ad\nnzbGwGokFEwmEyNzkhmZk8zi+WPZedDO2m0NrN/ZRE+fm/ZuJ2+ur+bN9dVkpcUx67xsZp6XTa5N\nuwCIyJlRQBURv8RFxZFgjafb5aC1t83ociTEzOajq/9vumwCm/e1sHZrPRV7WnB7vDTae3h5zX5e\nXrOfETlJzDovmxkTs0lLijG6dBEZQhRQRcRv0eZounHg8urpQ+cya5SZsvGZlI3PpKfPzYZdTazd\n1sC2/a34fHCgvpMD9Z38+Z09FI5IY+Z52UybkEl8rNXo0kUkzCmgiojfoi39AcPldRtciYSLuJgo\nzi/O5fziXNq7nazb3sBH2xrYd6gDH7D9gJ3tB+z84R87KRmTwazz+ncCiLZqJwAROZ4Cqoj4zWo+\nHFA9mkGV46UkRHPptAIunVZAo93BR9saWLutgboWB26Pjw27mtiwq4nYaAtTx2cyrTCLUbnJJCdE\nG126iIQJBVQR8ZvV3D906BK/nEpWWjyfO38UV88ZycGGLj7a1r8TgL2zj16nZ+CpVdAfbIdlJVKQ\nlUhBZv+PObZ4oixmg38VIhJqCqgi4reBGVRd4pfTZDKZGJGTxIicJK6fP4bd1W2Ub21g/Y5GHH39\nfdTe7aS9qpWtVa0Dn7OYTeRlJDDscGAtyEpkWFYiKZptFYloCqgi4jerRZf45cyZTSYmDE9jwvA0\nbrpsPNWNXdQ0dvX/2NT/Y3dvf2j1eH1UH36vfOvRcyQnRFOQmUBBVhLDsvp/zNVsq0jEUEAVEb/p\nEr8ESpTFzKjcZEblJg+85vP5sHf2DQqs1Y1d1Lc68Pn6j+nodrK128nW/faBz1nMJnJtCRRkHRNc\nMxNJSdQWVyJDjQKqiPhNl/glmEwmE+nJsaQnxzJ5bMbA606Xh0Mt3QOB9cis67GzrTVN/aG2fGvD\nwOeS460D97YeuVUgLyNBs60iYUwBVUT8phlUMUK01TLwRKsjfD4fbV1Oqhs7jwbXpm7qWxx4D0+3\ndjhcbNtvZ9txs63xxy3KSk6I1qNaRcKAAqqI+O3IPagOlwOP14PFrL0sxRgmk4m0pBjSkmIoGXN0\nttXl9nCo2cHBxk5qGrsHAuzg2dZuapq6WXvMbGtSvHXQTGtBViK5tgSsUZptFQklBVQR8VtuQg4A\n7c5OVu1/i8+NvtzgikQGs0ZZBnYNOOLobGsX1Y2d1DT13y5w7Gxr50lmW3Ns8QOzrEdmXVM02yoS\nNAqoIuK3ObnTWVe/gX3t+3lj/zuMTRnFRNt4o8sS+UyDZ1ttA68fmW2t/tROAl09/beweLw+apu6\nqW3qZu22o7OtiXFWJo1KZ35pPuOGpSisigSQyec7siYy/Nnt3bjdXqPLkAgWFWUmLS1BvXYa7L1t\nPPjxI3S5ukm0JvCDGd8lNSbF6LKGDPVaeDt2tvVIYK1p7KLumNnWY+VnJDC/LJ/Zk3KIiwmvuR/1\nmoTKkV4LBAVUkWNoIPfP1pad/GbTU/jwMSZlJN8pvUP3o54m9drQ5HJ7OdTcTU1TF3sPdfDRtgZ6\n+o7uZhETbWH2pBzml+ZTkJVoYKVHqdckVBRQRYJEA7n//r73dV4/8A4Alw6/iEVjFxpc0dCgXosM\nfU4PH21v4J0NNRxs6Br03thhKcwvzWfahCxDF1mp1yRUFFBFgkQDuf88Xg+PVfyW3W37APhGyVcp\nyphocFXhT70WWXw+H/vqOli9oZaPtjfi9hz9PU2Kt3JBSS4XTcknMzUu5LWp1yRUDA+oK1as4Mkn\nn6S5uZnCwkLuueceSkpKTnjsiy++yA9+8ANMJhNHviomJoZNmzb5Xaz+cEmwaSA/M+19HTyw7ld0\nurpIiIrn7hnfIT02zeiywpp6LXJ19bj4oLKO1RtraWzrGXjdBBSPsTG/NJ/i0TbM5tAsqlKvSagE\nMqD6fSf3qlWrePDBB/nJT35CcXExzzzzDLfddhuvv/466enpJ/xMUlISb7zxxkBA1UpHkciSEpPM\nLZP+hWUVy+l2O3hqywq+W/Z1oszhtVhEJBQS46xcMXM4l80oYNv+Vt7dUEvFnmZ8Pqjc20Ll3hZs\nybFcVJrH3JI8khOijS5ZJOz4fVPM008/zQ033MCiRYsYM2YM9913H7GxsaxcufKknzGZTKSnp2Oz\n2bDZbCcNsiIydBWmj+PKUZcAUNVxkJf2vmZwRSLGMptMFI2y8W/XlfCLb8zh6jkjSTkcRls6eln5\n3j7+/ddreOLlreyqbmMI3XEnEnR+TW+4XC62bt3KHXfcMfCayWRizpw5VFRUnPRzDoeDBQsW4PV6\nOe+887jzzjsZO3bsmVctImHpypEXs69tPzvsu3mn+p+MTR3F5Mwio8sSMVx6cizXzhvN588fycbd\nzby7oYYdB9vweH2s3dbA2m0NDMtMYMHUYcybnIdZVxrlHOdXQLXb7Xg8HjIyMga9brPZqKqqOuFn\nRo0axf3338+ECRPo6upi+fLlfOlLX+LVV18lOzvbr2ItFj1qToLrSI+p186UmVtLvsxPyh+mw9nJ\n8i1/4LKRF3HV6EuJPvx4VOmnXjs3RUWZmV2Uw+yiHGqbunhnQy0fVB6ip89DTVM3z76+k06Hiy/M\nGx2w71SvSagEssf8WiTV2NjIvHnzeP7555k8efLA6z//+c/ZsGEDzz333CnP4Xa7WbhwIVdffTVL\nly49s6pFJKxtb9rNT99bRp/HCUBOYia3T/syxdmFBlcmEn56+ty8v7GGle/uoa65m9hoC8v/61JS\nEmOMLk3EMH7NoKalpWGxWGhubh70emtrKzab7SSf+tQXRkUxceJEDhw44M9XA9DR0YPHoxWIEjwW\ni5nk5Dj12lnKicrjh7P/nRXb/8q2lp3UdzXxk9WPMDtvGteP/xyJ0YFZ5TmUqdfkWDMmZJKVHMMP\nn1xHr9PDite28S+XBObxweo1CZUjvRYIfgVUq9XKpEmTKC8v5+KLLwb6934rLy9nyZIlp3UOr9fL\n7t27ufDCC/0u1uPxaosMCQn12tlLjU7jmyX/yvqGCv6y+2W6XN2UH1rP5qbtXDfuc0zPLtWOHqjX\n5KhhmYlMHZ/JJ7uaeGt9DZdOKyA1gLOo6jUZSiz33nvvvf58ICEhgUceeYTc3FysViu/+tWv2Llz\nJ/fffz9xcXHcddddbN68mdmzZwPw61//GpfLhclkora2lgcffJDKykruu+8+v1fz9/a68Hq1ylGC\nx2w2ERcXrV4LEJPJRH5iLrPzptPl7Kam6xBOr4tNTVuo6jjI6JQRxFvjjS7TEOo1OZG8jARWb6zF\n4/XhdvsoGXN6Vyc/i3pNQuVIrwWC35sULly4ELvdzqOPPkpzczMTJ05k+fLlA2Gzvr4ei+Xos7g7\nOjr47//+b5qbm0lOTqaoqIjnnnuOMWPGBOQXICLhL9GawJLzFjMjp4w/7VxJU08L21t38T8fPcxV\noy5lQcFcLGbLqU8kEuGGZSYy87xs1m5rYHVFLZfPLCAjJfRPnxIxmh51KnIMPXEl+JweF6/vf5s3\nD67G6+v//zg/MZcbC69nRHKBwdWFjnpNTqa+1cF//XYtPh/Mm5zLLVee3aOD1WsSKoF8kpT2nBCR\nkIq2WPn8mCu4e/p3GJk8HIDarjp+sX4Zf9n9Mr3uPoMrFDFWTno85xflAvBBZT0NdofBFYmEngKq\niBgiPzGXf5/6TRaPX0SsJQYfPt6t/oD/+eh/2dK83ejyRAz1+fNHYjGb8Pp8vPTPE+8zLhLJFFBF\nxDBmk5kLh83hnpn/TknGJADsfW38pvJ3PLnlD7T3dRpcoYgxMlLjmDc5D4C12xrYUtVicEUioaWA\nKiKGS4tN5Y6Sr3B78c2kRCcBsKGxkp989Av+Wbt24F5VkXPJF+aNJjm+/wlsT7+2g54+t8EViYSO\nAqqIhI0pmUX896zvMS9/NiZM9Lh7eW7nX/n5+sfY177f6PJEQioxzsqSyycA0NrRxwvv7jG4IpHQ\nUUAVkbASFxXHDRO+wJ1Tv0FeQg4A1Z21/O8n/8cz256jva/D4ApFQmfqhCymF2YBsLriENv2txpc\nkUhoKKCKSFganTKSu6d/hy+Ou4a4qP59INfVb+DHa3/BWwffw+3V5U45N9x42XgS4/ov9f9ulS71\ny7lBAVVEwpbFbOGigvP50azvMyd3BiZM9Hr6eHHPq/x03S/Z3rLL6BJFgi45PpqbLhsPQEtHL395\nb6/BFYkEnwKqiIS9pOhEbpx4Pd+f9u2BvVMbHE0s27ScxyufoblHlz0lsk0vzGLqhEwA3t1Qy44D\ndoMrEgkuy7333nuv0UWcLj1HWIJNz6wOb6kxKczOnYYtLp2q9gM4vU4aHE18cGgtHq+bkcnDh8wj\nU9Vr4g+TycSE4Wms2VyH0+1lZ3UbWWlxmE0QFxOFyWQ66WfVaxIqR3otEPSoU5Fj6JGAQ0ePu4dV\nVW+xumbNwDZUaTGpXDvuakoziz/zL+xwoF6TM7F2Wz1PvLxt0GtRFhPZ6fHkpseTY0sg1xZPri2e\nnPR4YqOj1GsSMoF81KkCqsgxNJAPPXXdDfxl18vssO8eeG182li+OO7z5CXmGFjZZ1OvyZnw+Xy8\n8O5e3vj4IKfzt3daUgx5GQmMykshPSmarNQ4cm0JpCZGh/0/4mToUUAVCRKFhqHJ5/OxqWkLK/e8\nQmtv/715R55SddWoSwd2AQgn6jU5Gy63l0a7g7oWB3WtDupbugd+3uf0nPLzsdGWw7Osx8y42hLI\nTosjyqLlKXJmFFBFgkShYWhzepy8eWA1bx5cjevwNlRJ1kSuGXMlM3OnYjaFz1+86jUJBp/PR1uX\nk7rDgbW+xUG93UF9q4OW9t5Tft5sMpGZGkuuLYEcW/9tA0d+fmSrK5GTUUAVCRKFhsjQ0tPKyj2v\nsKlpy8Bro5KH89VJN2KLSzOwsqPUaxIqR3rtUH07NY1d1Lc4qGs9GmAb7A7cnlNHgaR46/H3udoS\nyEiOxWzW7QKigGp0GRLBFBoiy/bWXbyw62UaHI0AJFoTuK1oCePSRhtcmXpNQudUvebxemlu7x0I\nrHUt3dS1Oqhr7qa799QPBYiymMlJj+sPrunxh8NrAjnp8cRED41dNSQwFFBFgkShIfJ4vB7eOPAO\nq6rewocPs8nM4vHXMDd/tqF1qdckVM6m1zodzv7g2uoYdNtAU3vPaS3SSk+OIfeY4Hpk9jUlQYu0\nIpECqkiQKDRErs3N23h665/o9fQBcEHeTL44/hqizFGG1KNek1AJRq+53B4a7D2DZ1wPh9c+16kX\nacXFWAYv0Dr88ywt0hrSFFBFgkShIbLVdTfweOXTNPW0ADAmZRS3Fy8hKTox5LWo1yRUQtlrPp8P\ne2ff4Z0Fjpl1bXVg7+w7da0WM9MLM5lfNowxecmaZR1iFFBFgkShIfI5XA6e2vpHtrfuAvo397+j\n5CsUJOWHtA71moRKuPRaT5/7uFsF6lodNLQ68JzgCVfDsxNZUDaMmedlE2PVvaxDgQKqSJCEy0Au\nweXxenhp32u8ffB9AKxmKzdN/CLTsqeErAb1moRKuPeax+ulua1/kdbmqhY+3FI/aC/X+Jgozi/O\nZX5ZPjnp8QZWKqeigCoSJOE+kEtgfVT3CX/cuRL34T1TLxsxn8+Nvjwk+6Wq1yRUhlqv9fS5Kd9a\nzzsbajnU3D3ovUkj05hfNozJY21YzLpXNdwooIoEyVAbyOXsHeio5vHKZ2h3dgBQZCvklkn/EvSn\nT6nXJFSGaq/5fD52VbfxzoZaNuxqGnQbQHpyDBdOyWfe5DxSEqINrFKOpYAqEiRDdSCXs9Pe18Fv\nN/+eqo4DAGTHZ3JHyS1kx2cG7TvVaxIqkdBr9s4+/rnpEKsramnrcg68bjGbmFaYxYKyfMbmp2hR\nlcEUUEWCJBIGcjkzLq+b53e+SHndxwDERcXy1UlfZpKtMCjfp16TUImkXnN7vFTsbubdjbVsP2Af\n9N6wzEQWlOUza1I2sdHGbB93rlNAFQmSSBrIxX8+n4/3aj5k5Z6/4/V5MWHi36bczoT0sQH/LvWa\nhEqk9tqh5m7e3VjLh1vq6Ok7uqgqLsbCnKJcFpTlk2sLTFiS06OAKhIkkTqQi392tu7hic3P0uvp\nZVr2FL466csB/w71moRKpPdar9PN2q0NvLOhhpqmwYuqJo5IY35pPqXjM7SoKgQCGVA1By4i8ikT\n0sdSllXCh3Xr2Nm6B5/Pp3vbRMJUbHQUF5Xmc+GUPHbXtPPuxlrW72jE4/Wx/YCd7QfspCXFcOHk\nPOZNySM1McbokuU0KKCKiJxAYfpYPqxbR6eri0Pd9eQn5hpdkoh8BpPJxPiCVMYXpPKlBWN5v7KO\n1RtrsXf2Ye/s428fVPH3D/dTNj6TBWX5jC9I1T88w5gCqojICYxPO3rf6c7W3QqoIkNISmIMn5sz\nkoWzhrNpTwvvbqhh6347Hq+Pj3c08vGORvIzEphfls/sSTnExSgOhRv9joiInEBSdCL5ibnUdtWx\nw76HBcPnGV2SiPjJYjZTNj6TsvGZ1LV0s3rjIT7YXEdPn5va5m7+8I9dvLB6L3OKcphfms+wzESj\nS5bDFFBFRE6iMG0ctV117G7bh9vrJsqsIVNkqMq1JfAvl4zj2nmj+Wh7/6Kqgw1d9Dk9vLuhlnc3\n1DK+IJUFZfmUjc8kyqJFVUbSaCsichIT0sfxdvX7OD1O9ndUMzZ1lNElichZiom2MG9yHnNLctl3\nqIN3NtTy8Y4G3J7+J1ftqm4jJSGaeZPzuHBKHunJsUaXfE5SQBUROYmxqaOwmCx4fB52tu5WQBWJ\nICaTiTH5KYzJT+GGi8fyQWUd726opaWjl/ZuJ3//cD+vlh+gdFwG88vymTgiTYuqQkgBVUTkJGIs\n0YxOGcHutn3ssO/hKi4zuiQRCYLk+GgWzhrBFTOGU7mvhXc31LJlXwten49PdjXxya4mctLjmV+W\nz/lFOcTHWo0uOeIpoIqIfIYJaePY3baP/R0H6XH3Ehely30ikcpsNjFlbAZTxmbQaHeweuMh/ll5\niO5eN/WtDv701m5WvreXOZNyWDB1mBZVBdEZ3QG8YsUKFixYQElJCYsXL6aysvK0Pvfqq69SWFjI\nt7/97TP5WhGRkCs8/JhTr8/L/216kj1tVQZXJCKhkJUWz+IFY/nfb53PrVdNZFRuEgBOl5fVFYf4\n4ZPr+PkfN/DJzkY83sh7QpfR/H7U6apVq/iP//gPfvKTn1BcXMwzzzzD66+/zuuvv056evpJP1db\nW8uXv/xlhg8fTkpKCsuWLfO72Eh9TJuEj0h/JKD4z+P18MsN/4+qjgMDrxVnTOTzo68kLzHnjM+r\nXpNQUa8FTlVdB29/UsO67f2Lqo6wJcdwUWk+8ybnkRQfbWCFxgrko079DqiLFy+mpKSEe+65BwCf\nz8eFF17IkiVLuP3220/4Ga/Xy0033cR1113H+vXr6ezsVECVsKSBXE7E6XHxXs0a3jjwLj3uHgBM\nmJiZM5WrRl9Kemya3+dUr0moqNcCr8Ph5P2KQ7x7+ElVR0RZzMw8L4tLphYwIifJwAqNEciA6tc9\nqC6Xi61bt3LHHXcMvGYymZgzZw4VFRUn/dyyZcuw2WwDAVVEZCiJtli5dMRFnJ83g38cWM3qmg9w\ned2srV/P+sYK5uXP5vKRC0i0BmZgFpHwlhwfzdVzRnLlrOFs3NXM25/UsLO6DbfHy5rN9azZXM/Y\n/BQWTM1n2oQs7al6BvwKqHa7HY/HQ0ZGxqDXbTYbVVUnvi/rk08+4a9//SsvvfTSmVd5mEW/wRJk\nR3pMvSYnkhyVyPWFV3PxyLm8svcffHjoY9xeN+9U/5MP6z7m8pEXcfHwucRExZzyXOo1CRX1WvBE\nYWZWUQ6zinI42NDJW+tr+HBzHU63lz217eypbef5xD0sKBvG/NJ8UpNOPTYMZYHssYCs4vf5fCfc\nG6y7u5u77rqLn/zkJ6SkpJz19yQnx531OUROh3pNPksaCSzNvYXrOq7guc0v81HNRnrdvby053Xe\nq/mQ6yctZMHoC4gyW055LvWahIp6LbjS0hKYXJjDHQ4nb647yKtrqmhoddDe5eTF9/fx9zVVzCnJ\n43MXjGaC9lQ9Jb/uQXW5XEyZMoVHH32Uiy++eOD1u+++m87OTn79618POn7Hjh184QtfwGKxcORr\nvIdXulksFl577TUKCgpOu9iOjh48Ht0/I8FjsZhJTo5Tr4lfqtoO8Nfdq9hl3zvwWlZ8Bp8fewVT\ns0swm46fVVCvSaio14zh9frYtLeZNz+uZsu+1kHvjcxJ4tLpBcyclE101Kn/ITtUHOm1QAjIIqmL\nLrqIJUuWcNtttw061ul0cvDgwUGv/fKXv8ThcHDPPfcwYsQIoqJOfxJXN3hLsGkxgZwpn8/HttZd\nvLR3FbVddQOvD0/K55oxCylMHzfoePWahIp6zXh1Ld28s6GWNZvr6HV6Bl5PjLNyfnEOUydkMTov\nGfMQn1UN5CIpy7333nuvPx9ISEjgkUceITc3F6vVyq9+9St27tzJ/fffT1xcHHfddRebN29m9uzZ\nWCwW0tPTB/3vgw8+wOfzcdNNN2E2+3evQm+vC6/Xrzwt4hez2URcXLR6TfxmMpnIis/g/LyZZMdn\nUt15iB53D+3OTtbVb2Bf235yE7JJiUkG1GsSOuo14yXFR1MyxsaCsmGkJcXQ1NZDV48Lp9vL4ViX\nOQAAIABJREFU3toO/llZx+qKQzTYHZhNJtKTY7GYh15YPdJrgeD3PagLFy7Ebrfz6KOP0tzczMSJ\nE1m+fPnAHqj19fVYLJEzXS0i4g+zycz0nFJKs4r5oPYjXtv/Fl2ubnbYd7Nj/W7Kskr43OjLyUvO\nNrpUEQmxuJgoLp46jAVl+Wzbb+edDTVs3teK2+Olo9vJexWHeK/iEDHRFkpG2ygdl0HJGNs5+WhV\nvy/xG0mXJyTYdClMAq3X3cvb1f/k7YPv0edxAv0hdt6wWdw+80t0dTjVaxJUGtfCW6/TzZZ9rWzc\n3cSmPS04+tyD3reYTRQOT6V0fCal4zJJC+OdAAzdqN9I+sMlwaaBXIKl09nF6/vf5p+1a/H4+u9B\nWzTxcq4suFS9JkGlcW3ocHu87KpuY+OuZjbsbhr0EIAjRuUmUTouk9LxmeTZ4sNqNwAFVJEg0UAu\nwdbc08rTW/9EVccBYqNiuP+C/yTWrO1/JHg0rg1NPp+PAw2dbNjVzMbdTdQ2dR93THZaHKXjMykb\nl8nofOMXWSmgigSJBnIJhYMdNfxs/aMAXD5yPp8ffaXBFUkk07gWGRrtDjbubmbjriZ217Tz6fCW\nnBDNlLEZlI3PYOKINKwGbF+lgCoSJBrIJVSe2PwMm5q2EmOJ5r7Zd5MUnWh0SRKhNK5Fno5uJ5v2\nNLNxdzNbqvoXWR0rJtpC8WgbZSFeZKWAKhIkGsglVA456rh/7S8BuGT4hXxh7FUGVySRSuNaZOt1\nutla1cqGXc1U7m2mu/fEi6ymjMtk6oRMUhODt8hKAVUkSDSQS6hERZlZvvX3fFy7iWizlR/P+YFm\nUSUoNK6dO9weL7ur29iwu/++1daOwYusYqwWvvvFEiYMTwvK9yugigSJBnIJlagoM+3Yuesf9wNw\nccE8rh13tcFVSSTSuHZu8vl8HGzoYuPuJjbsaqamqQvo34v1BzeVMSwz8P8gDmRA9e9RTiIiEjAj\n04ZRmlUMwPu15bT3dRpckYhECpPJxIicJBbNHc2Pb53Bd79YgsVsoqfPzS//vInWjl6jS/xMCqgi\nIga6esylALi8Lt46uNrYYkQkYpWMyeCWKwsBsHf28cs/b6K712VwVSengCoiYqBhSXmUZvbPov6z\ntpz2vg6DKxKRSHV+cS7XzhsNQG1zN4+t3IzL7TG4qhNTQBURMdjCUZdiwoTL6+aNA+8YXY6IRLCr\nZo9gflk+ALuq2/jt37fh9YbfciQFVBERg+Ul5gzci/pezYd8XL/R4IpEJFKZTCZuvGQ8ZeMzAVi/\ns4k/vb2bcFszr4AqIhIGrhv3OVKikwH4w/Y/s9u+1+CKRCRSmc0mvva58xg7LAWAtz+p4fWPDhpc\n1WAKqCIiYSA1JoVvTP5XYizRuH0eHt/8LPXdDUaXJSIRKtpqYel1JeTa4gF4YfVe1myuM7iqoxRQ\nRUTCREFSHrcVLcFsMtPj7uH/Nj1Fh1NbT4lIcCTGWblz8RRSE6MBeOrV7XxQGR4hVQFVRCSMnGeb\nwJcmfAGAll47v9n0O/o8ToOrEpFIZUuJ5c4bppAYZ8UHPLVqO6srao0uSwFVRCTcnJ83k8tHLADg\nYGcNv9u6Aq9PTwASkeAYlpnIf3y5lOSE/pnUZ1/fyduf1BhakwKqiEgY+tzoy5mWPQWAzc3b+cvu\nl8Nula2IRI78wyH1yOX+FW/u4o11xi2cUkAVEQlDJpOJmyYuZlxq/6ba79V8yDvV/zS4KhGJZLm2\nBO6+sQxbcgwAz7+zh1fL9xtSiwKqiEiYspqj+FrxzWTHZwHw1z2vsKGx0uCqRCSSZaXF8x9fLiMj\nJRaAle/t46UPqkJ+BUcBVUQkjMVb4/nm5H8lyZoIwDPbnmNf+35jixKRiJaRGsfdN5aRnRYHwEsf\nVPHX9/eFNKQqoIqIhLmMuHS+MfmrRJutuL1ullUs59ltz1PZtBWnx2V0eSISgdKTY/mPG8sG9kl9\ntfwAf353T8hCqsk3hO66t9u7cbu1klWCJyrKTFpagnpNgu5Meq2yaStPbH4WH0eH7WhLNJNshZRm\nFjHJVkhsVGywSpYhSuOanI32bicPPbeR2qZuAC6ZNox/uXgcJpPpuGOP9FogKKCKHEMDuYTKmfZa\nVftByuvWsalpK12u7sHnNEcxMX0ckzOLKc6YSKI1MH9RyNCmcU3OVqfDyf8+V8HBxi4ALp1WwJcu\nHntcSFVAFQkSDeQSKmfba16fl71tVVQ0baGiaQttfe2D3jebzIxPHcPkzCImZ04iJSY5UKXLEKNx\nTQKhq8fFQ3/aOBBSL5tewA0LBodUBVSRINFALqESyF7z+rwc7KyhonELFU2baeppGfS+CROjUkYw\nJbOIKZlF2OLSz+r7ZGjRuCaBcqqQqoAqEiQayCVUgtVrPp+PQ931VDRupqJpC4e66487piAp/3BY\nLSYnIStg3y3hSeOaBFJXj4tf/Gkj1YdD6uUzClg8vz+kKqCKBIkGcgmVUPVao6Np4DaAAx3Vx72f\nE5/FlKxipmQWMSwx74QLH2Ro07gmgdbpcPLQcxUDIfWKGcP54vwxWK0WBVSRYNBALqFiRK/Ze9uo\naNrCpqYt7GmrGrQbAIAtNr1/ZjWriJHJwzGbtBNhJNC4JsHQ6XDyiz9VUNN0OKTOHM6/XDKO9PTE\ngJxfAVXkGBrIJVSM7rVOZxeVTVupaNrCTvsePD7PoPdTopMOL7AqYlzqaCxmS8hrlMAwutckcn06\npF41ewRfv35KQM6tgCpyDA3kEirh1GsOVw9bWrZT0biZba07cXndg95PiIqnOPM8pmQWUZg+Hqs5\nyqBK5UyEU69J5OkPqRupObxP6t//95qAnFcBVeQYGsglVMK11/o8Tra17KSiaTNbmrfT6+kb9H6s\nJYZJtsKB+1Z1G0D4C9dek8jR4XDy0OGQqoAqEgQayCVUhkKvubxudrbupqJpC5XNW+l2OQa9Pyd3\nOjdO/KJB1cnpGgq9JkNfp8PJuxtruXVRSUDOp4AqcgwN5BIqQ63XPF4Pew4/GGBT02banZ0AfKf0\nDsanjTG4OvksQ63XZOgK5DZTujYjIiKnZDFbmJA+lhsmLOK/Zv77wGNUn9/5Iu5P3bMqInK2FFBF\nRMQvCdZ4rhmzEIB6RyPvVn9gcEUiEmkUUEVExG+zcqcyOmUEAKuq3qS1125wRSISSc4ooK5YsYIF\nCxZQUlLC4sWLqaysPOmxb775Jtdddx3Tp0+ntLSURYsW8dJLL51xwSIiYjyzycwN47+ACRNOr4uV\nu/9udEkiEkH8DqirVq3iwQcfZOnSpbz44osUFhZy22230draesLjU1NT+cY3vsHzzz/Pyy+/zLXX\nXst//ud/smbNmrMuXkREjDMsKY+Lhp0PQEXTFra27DC4IhGJFH4H1KeffpobbriBRYsWMWbMGO67\n7z5iY2NZuXLlCY+fPn06l1xyCaNHj6agoICbb76ZCRMm8Mknn5x18SIiYqyrRl9KcnQSAH/e9RIu\nj8vgikQkEvgVUF0uF1u3bmX27NkDr5lMJubMmUNFRcVpnaO8vJyqqiqmT5/uX6UiIhJ24qLiuG7s\n1QA097Twj4OrjS1IRCKCX8+rs9vteDweMjIyBr1us9moqqo66ee6urqYO3cuLpcLi8XCj370o0Eh\n93RZLFrTJcF1pMfUaxJskdRrM/PL+LBuHTvte/nHgXeZkz+VzPiMU39QQiKSek3CWyB7LCAPVPb5\nfJhMppO+n5CQwMsvv0x3dzdr167lgQceoKCgwO9Z1OTkuLMtVeS0qNckVCKl1+6YdSPff+N+3F43\nf9nzMj+Y9+3P/HtBQi9Sek3ODX4F1LS0NCwWC83NzYNeb21txWaznfRzJpOJgoICAAoLC9mzZw+P\nP/643wG1o6MHj0dPwZDgsVjMJCfHqdck6CKt1xJI5tIRF/J61TtU1G/jVx88xU3nXU+UOSDzIHIW\nIq3XJHwd6bVA8GvksFqtTJo0ifLyci6++GKgf/a0vLycJUuWnPZ5vF4vTqfTv0oBj8erx7RJSKjX\nJFQiqdcuG76ArU07qO46RPmh9TQ7Wrm9+GYSrPFGlyZEVq9J5PP7ZoFbbrmFP//5z/ztb39j7969\n/OhHP6K3t5drr70WgLvuuouHH3544PgnnniCDz/8kOrqavbu3ctTTz3Fyy+/zDXXXBO4X4WIiBgu\nxhLNd8u+ziRbIQC72/bx0CfLaHK0GFyZiAw1fl97WbhwIXa7nUcffZTm5mYmTpzI8uXLSU9PB6C+\nvh6LxTJwvMPh4L777qOhoYGYmBhGjx7NQw89xBVXXBG4X4WIiISF2KhY7ij+Cn/Z/Xfer/2QRkcz\nD32yjK8Vf4UxqSONLk9EhgiTz+fzGV3E6bLbu3V5QoIqKspMWlqCek2CLtJ7zefzsbpmDSt3/x0f\nPqLMUSwp/CLTckqNLu2cE+m9JuHjSK8FgvacEBGRgDOZTMwvuICvFd9MtNmK2+vmd9v+xOv732YI\nzYuIiEEUUEVEJGhKMifx/039BimHnzb1931v8Pvtf8btdRtcmYiEMwVUEREJquFJw/j+tH8jPzEX\ngI/qP2FZxXIcLofBlYlIuFJAFRGRoEuLTeXOsm98aoX/r7XCX0ROSAFVRERC4sgK/3n5cwBocDTx\n0CfL2Ne+39jCRCTsKKCKiEjIWMwWFo+/huvHfR4TJrpc3Tyy8Qm2t+wyujQRCSMKqCIiElInWuH/\njwPvGl2WiIQRBVQRETFESeYkJmcWAdDr6TO4GhEJJwqoIiJiINPhH7U3qogcpYAqIiKGMR3Op4qn\nInIsBVQRERERCSsKqCIiYhjTkUv8evypiBxDAVVEREREwooCqoiIGE7zpyJyLAVUERExzJFL/D5F\nVBE5hgKqiIiIiIQVBVQRETHO4TVSfR4nHq/H2FpEJGwooIqIiGEyYm0ANPe08P8qn6bX3WtwRSIS\nDhRQRUTEMBcVnM/4tLEAbGvdycMbfoO9t83gqkTEaAqoIiJimLioWL41+V+ZlTMNgNquOn6xfhnV\nnYcMrkxEjKSAKiIihooyR3HTxC9y9ajLAWh3dvDLDf/HlubtBlcmIkZRQBUREcOZTCauHHUxXznv\nS0SZLPR5nPy/yqd5v6bc6NJExAAKqCIiEjZm5JTx7Sm3ER8Vhw8fz+96kb/ueQWvz2t0aSISQgqo\nIiISVsaljeF7U79FRmw6AG8ffJ8nt6zA6XEZXJmIhIoCqoiIhJ3shCy+N+3bjEoeDkBF02Ye3fg4\nnc4ugysTkVBQQBURkbCUFJ3I0tI7mJJZDEBVx0F+sX4Z9d2NBlcmIsGmgCoiImEr2mLl1qIbuWT4\nhQC09Lbyv5/8mt32vQZXJiLBpIAqIiJhzWwy84WxV/GlCddiNplxuHtYVrGcfe0HjC5NRIJEAVVE\nRIaEufmz+HrJV4m2ROP2eXhyyx90T6pIhFJAFRGRIWOSbQJLJi4GoK2vnae2/lFbUIlEIAVUEREZ\nUsqySlhQMBeAXfY9vLLvHwZXJCKBpoAqIiJDzqIxCxmdMhKANw68w+bmbcYWJCIBpYAqIiJDjsVs\n4daiG0myJgLwzLbnaO5pMbgqEQkUBVQRERmSUmNS+NeiGzFhosfdy283/15PmxKJEAqoIiIyZI1P\nG8M1Y64EoKbrEH/e9TeDKxKRQFBAFRGRIe2S4RcyOWMSAOV1H/PhoXUGVyQiZ+uMAuqKFStYsGAB\nJSUlLF68mMrKypMe+8ILL3DjjTcyY8YMZsyYwVe/+tXPPF5ERMQfJpOJJectJjPOBsDzu/7Gwc4a\ng6sSkbPhd0BdtWoVDz74IEuXLuXFF1+ksLCQ2267jdbW1hMev27dOq6++mqeffZZnn/+eXJycrj1\n1ltpbNSzlEVEJDDiouK4vfhmrGYrbq+b5Zt/T6Oj2eiyROQMmXw+n8+fDyxevJiSkhLuueceAHw+\nHxdeeCFLlizh9ttvP+XnvV4v06dP54c//CHXXHONX8Xa7d243dqQWYInKspMWlqCek2CTr0WHB/V\nfcKz258f+O/RKSOYnl1KWdZkEqMTDKzMOOo1CZUjvRaQc/lzsMvlYuvWrdxxxx0Dr5lMJubMmUNF\nRcVpncPhcOB2u0lNTfWvUhERkVOYmTuVekcjbx5YjQ8f+9oPsK/9AC/sfplJtglMzy6lOOM8oi3R\nRpcqIp/Br4Bqt9vxeDxkZGQMet1ms1FVVXVa53jooYfIzs5m9uzZ/nw1ABaL1nRJcB3pMfWaBJt6\nLXium3AVC0acz8f1FXxUt4GazkN4fV42N29nc/N2Yi0xlGYXMzO3jAnpYzGbIvv3QL0moRLIHvMr\noJ6Mz+fDZDKd8rgnnniC1157jT/84Q9ER/v/r9fk5LgzKU/Eb+o1CRX1WnCkkcDo3HxuKL2Kg221\nfHDwY/55YB0tDju9nj7KD62n/NB60mJTOH/4NOaOnMnI1GGn9XfZUKVek6HEr4CalpaGxWKhuXnw\njeetra3YbLbP/OyTTz7J8uXLefrppxk3bpz/lQIdHT14PLp/RoLHYjGTnBynXpOgU6+FThKpXFlw\nKZcPu5g99io+qtvAhoZKHO4e7L3tvLLrbV7Z9Ta5CVnMyJ3KjNxSMuLSjS47YNRrEipHei0Q/Aqo\nVquVSZMmUV5ezsUXXwz0z56Wl5ezZMmSk35u+fLlPP744zz55JOcd955Z1ysx+PVDd4SEuo1CRX1\nWmiNTh7F6ORRXD/uGra27ODj+g1sad6O2+ehrruRl/a8xkt7XmNMykim55RRllVCgjXe6LIDQr0m\nQ4nfl/hvueUW7r77boqKiiguLuaZZ56ht7eXa6+9FoC77rqLnJwc7rzzTgB++9vf8uijj/Lwww+T\nl5c3MPsaHx9PfHxk/KEXEZGhxWqOYkpmEVMyi3C4HGxs2szH9RvZ3bYPgL3t+9nbvp8Xdr3EJFsh\n03NKKbJNJNpiNbhykXOD3wF14cKF2O12Hn30UZqbm5k4cSLLly8nPb3/ckh9fT0Wi2Xg+D/96U+4\n3W6WLl066Dzf+ta3+Pa3v32W5YuIiJydeGs85+fN5Py8mbT22lnfUMHH9Rs51F2Px+ehsnkrlc1b\nibXEUppVzPTsUsaljY74xVUiRvJ7H1QjaQ83CTbtFyihol4Lf7Vddayr38D6hgra+toHvZcak8LU\n7MnMyC4jPzE3rBdXqdckVAK5D6oCqsgxNJBLqKjXhg6vz8uetn18XL+RDY2b6fX0Dno/NyGbGdll\nTMuZQnpsmkFVnpx6TUJFAVUkSDSQS6io14Yml8fFliOLq1p24PF5Br0/JmUkw5OGYYtLJyMunYw4\nG7bYNEMfDKBek1Ax7ElSIiIi5zKrxUppVjGlWcV0uxxsbKxkXf1G9rb3P6zmyOKqT0uJTsIWl44t\n1nY4uPaH14y4dJKjk3Q/q8inaAZV5BiaaZBQUa9FlpYeO+sbNrKtdSfNPa3H3bP6WaLMUdhi048G\n19h0bIfDqy02ndiomLOqTb0moaJL/CJBooFcQkW9FtlcHhctvXaae1po7m2lpaeV5p7Wgf92epyn\nfa4ka+LRWwaOCa8ZcemkxqSccvZVvSahokv8IiIiYcxqsZKTkEVOQtZx7/l8Prpc3TT3tNJyOLAO\nhNfDs68+js4ddbq66HR1sb/j4HHnspgs2GLTDgdY26dCbBpxUXq8qQxNCqgiIiIhZDKZSIpOJCk6\nkVEpw4973+V1Y++1Hw6trTT3thwzA9s6aBcBj89DY08zjT3Nx50HIMEaT2acjdyULFKiUkiPPhpm\n02JSsJgtJ/yciNEUUEVERMKI1RxFVnwmWfGZx73n8/lwuHsGZltbDgfYI+HV3teG13f0Mn63y0G3\ny8H+jurjzmU2mUmPSe3faeDYhVuH74eNj5BHvMrQpIAqIiIyRJhMJhKs8SRY4xmRXHDc+x6vB3tf\n28AtAy29dlp6W2lztlHf1US3yzFwrNfn7b+9oLcV7Md/V1xU3MBCraMLuPrDbHpsKlFmRQgJHnWX\niIhIhLCYLYfvRbUB44DBi6Q6erpp6R28YKvlmDB77Oxrj7uH6s5aqjtrj/seEybSYlMHZluPXbiV\nEWsjwRof1k/XkvCngCoiInKOiLfGEW/NpyAp/7j3vD4v9t52WnqPvX3gaJjtcnUPHOvDR2uvndZe\nO7va9h53rlhLzMC9rrbYtEELuNLj0rFq9lVOQR0iIiIimE1mbHFp2OLSGH+CJ7b2unuPbp31qQVc\nLT2tuI95qlavp4/arjpqu+qOO48JEykxyQOzrf0zsEd3IUiyJmr2VRRQRURE5NRio2LJT8wlPzH3\nuPe8Pi8dzs5B22U197QOzMZ2ODsHjvXho62vnba+dvZQddy5os1WUmNTSIlOJiUmmZToZJJjkkiN\nTiY55uhrZ/sAAwlvCqgiIiJyVswmM6kxKaTGpDA2ddRx7/d5nP0zrZ/a8/XIf7u8roFjnV4XjY5m\nGh0n3jrriBhL9EBY/XSQTYk5HGYVZIcsBVQREREJqhhLNHmJOeQl5hz3ns/no8PZNTDb2tzTQntf\nB+3ODtr7Omnv66DD2Tno4QXQH3oVZCOXAqqIiIgYxmQykRKTREpMEqNTRp7wGK/PS6ezm3Zne39g\n7eukzdlBx0CQ7Q+zZxNkYy0xJMckDQqy/T8mKcgaQAFVREREwprZZB4IsSSd/LizCbK9nj56HX0K\nsmFCAVVEREQiwlAKsikxySQryJ6UAqqIiIicU/wLsl0DofVIkO2/LzZwQbY/rCYNDrLHzsqeg0FW\nAVVERETkBPqDbH9YDG6QbaLB0fSZtZxrQVYBVUREROQshHWQPdF9skMgyCqgioiIiITAmQbZ/m23\nOj8VZDvocHYFNcimxKQQY4kOxC/dbwqoIiIiImEkHIPskf1jP72nbFZ8Rn+dAaaAKiIiIjIEhUOQ\nNWHiG5P/lUm2CYH8pSmgioiIiEQyv4PssdttHQ6yx4bZY4OsDx9ratcqoIqIiIhI4A0Ksp/hSJB9\nteofrDm0jm2tO+nzOImKig1cLQE7k4iIiIhEvCNBdlbuNABcXjfbWnYG9jsCejYREREROSeMTB5O\ncnT/PQMVTZsDem4FVBERERHxm9lkZnJmEQBbmnfg8roDd+6AnUlEREREzilTDgfUXk8vO1p2B+y8\nCqgiIiIickbGpY4mISoegI2NgbvMr4AqIiIiImfEYrZQnHEeABWNWwJ2XgVUERERETljU7L6L/N3\nuxwBO6cCqoiIiIicscK0ccRYogN6TgVUERERETljVouVItvEgJ5TAVVEREREzsolwy8kyZoQsPOd\nUUBdsWIFCxYsoKSkhMWLF1NZWXnSY/fs2cPSpUtZsGABhYWFPPvss2dcrIiIiIiEn+HJw3ho/n0B\nO5/fAXXVqlU8+OCDLF26lBdffJHCwkJuu+02WltbT3h8T08PBQUFfO973yMzM/OsCxYRERGRyOZ3\nQH366ae54YYbWLRoEWPGjOG+++4jNjaWlStXnvD44uJivv/977Nw4UKsVutZFywiIiIikc2vgOpy\nudi6dSuzZ88eeM1kMjFnzhwqKioCXpyIiIiInHui/DnYbrfj8XjIyMgY9LrNZqOqqiqghZ2IxaI1\nXRJcR3pMvSbBpl6TUFGvSagEssf8Cqgn4/P5MJlMgTjVZ0pOjgv6d4iAek1CR70moaJek6HEr6ib\nlpaGxWKhubl50Outra3YbLaAFiYiIiIi5ya/AqrVamXSpEmUl5cPvObz+SgvL6e0tDTgxYmIiIjI\nucfvS/y33HILd999N0VFRRQXF/PMM8/Q29vLtddeC8Bdd91FTk4Od955J9C/sGrv3r34fD5cLhcN\nDQ3s2LGD+Ph4hg8fHthfjYiIiIgMeX4H1IULF2K323n00Udpbm5m4sSJLF++nPT0dADq6+uxWCwD\nxzc2NrJo0aKBe1SfeuopnnrqKaZPn65N+0VERETkOCafz+czuggRERERkSO054SIiIiIhBUFVBER\nEREJKwqoIiIiIhJWFFBFREREJKwooIqIiIhIWFFAFREREZGwEvYBdcWKFSxYsICSkhIWL15MZWWl\n0SVJhFm2bBmFhYWD/rdw4UKjy5IIsH79er7+9a8zd+5cCgsLefvtt4875pFHHuGCCy5g8uTJfPWr\nX+XAgQMGVCpD3al67Qc/+MFx49ztt99uULUylD3++ONcf/31lJWVMWfOHL71rW9RVVU16Bin08l9\n993HzJkzKS0tZenSpbS0tPj1PWEdUFetWsWDDz7I0qVLefHFFyksLOS2226jtbXV6NIkwowbN44P\nP/yQNWvWsGbNGv74xz8aXZJEAIfDwcSJE/nRj3408LCSYz3xxBOsWLGCH//4x7zwwgvExcVx6623\n4nQ6DahWhrJT9RrAvHnzBo1zDz/8cIirlEiwfv16brrpJl544QV+97vf4Xa7ufXWW+nt7R045v77\n7+e9997jscceY8WKFTQ2NvJv//Zvfn2P30+SCqWnn36aG264gUWLFgFw3333sXr1alauXKl/+UlA\nRUVFDTwNTSRQ5s2bx7x58wA40TNRnn32Wb75zW+yYMECAH7+858zZ84c3nrrLc3ii19O1WsA0dHR\nGufkrP32t78d9N8PPPAAc+bMYcuWLUybNo2uri5WrlzJL3/5S2bMmAHAT3/6UxYuXEhlZSUlJSWn\n9T1hO4PqcrnYunUrs2fPHnjNZDIxZ84cKioqDKxMItH+/fuZO3cul1xyCd/73veoq6szuiSJcNXV\n1TQ3NzNr1qyB1xITE5k8ebLGOAmKdevWMWfOHK644gruvfde2trajC5JIkBnZycmk4nU1FQAtmzZ\ngsfjGZTfRo8eTV5eHhs3bjzt84btDKrdbsfj8ZCRkTHodZvNdty9DiJnY/LkyTz44IOMGjWKpqYm\nHnvsMW688UZeeeUV4uPjjS5PIlRzczMmk+mEY1xzc7NBVUmkmjt3LpdddhnDhg3j4MEHMJdqAAAD\nQklEQVSDPPzww3zta1/j+eefP+ktASKn4vP5+OlPf8rUqVMZO3Ys0D+2Wa1WEhMTBx3r79gWtgH1\nZHw+n/4wSUDNnTt34Ofjx4+npKSE+fPn89prr3HdddcZWJmcizTGSTAce8vIuHHjGD9+PJdeeikf\nffTRoFl8EX/ce++97Nmz57TWbfg7toXtJf60tDQsFstxabu1tRWbzWZQVXIuSEpKYuTIkRw8eNDo\nUiSCZWRk4PP5NMaJIQoKCkhLS9M4J2fsxz/+Me+//z6///3vyc7OHng9IyMDl8tFV1fXoOP9HdvC\nNqBarVYmTZpEeXn5wGs+n4/y8nJKS0sNrEwiXXd3N9XV1WRmZhpdikSwgoICMjIyWLt27cBrXV1d\nbNq0SWOcBF19fT1tbW0a5+SM/PjHP+btt9/m2WefJS8vb9B7RUVFWCyWQfmtqqqKQ4cO+TW2hfUl\n/ltuuYW7776boqIiiouLeeaZZ+jt7eXaa681ujSJID/72c9YsGABeXl5NDQ08Nhjj2GxWLjqqquM\nLk2GOIfDwcGDBwdWVVdXV7Njxw5SUlLIzc3lK1/5Cr/5zW8YPnw4+fn5PPLII+Tk5HDxxRcbXLkM\nNZ/VaykpKSxbtozLL7+cjIwMDh48yC9+8QtGjhzJBRdcYHDlMtTce++9vPrqq/zmN78hLi5u4CpQ\nUlISMTExJCYmcv311/PAAw+QnJxMQkIC//M//0NZWdlpr+AHMPlOth9FmFixYgVPPvkkzc3NTJw4\nkXvuuYfi4mKjy5IIcuedd7J+/Xra2tpIT09n6tSpfPe736WgoMDo0mSIW7duHTfffPNx910tWrSI\nBx54AIDHHnuM559/ns7OTqZNm8YPf/hDRowYYUS5MoR9Vq/de++9fPOb32THjh10dHSQlZXFBRdc\nwHe+8x1tOyV+KywsPOG9pA888MDAtqBOp5Of/exnvPLKKzidTubOncuPfvQjvy7xh31AFREREZFz\nS9jegyoiIiIi5yYFVBEREREJKwqoIiIiIhJWFFBFREREJKwooIqIiIhIWFFAFREREZGwooAqIiIi\nImFFAVVEREREwooCqoiIiIiEFQVUEREREQkrCqgiIiIiElb+fyq5ocPMu4sBAAAAAElFTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "survivalstan.utils.plot_observed_survival(df=d[d['sex']=='female'], event_col='event', time_col='t', label='female')\n", "survivalstan.utils.plot_observed_survival(df=d[d['sex']=='male'], event_col='event', time_col='t', label='male')\n", "plt.legend()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## model1: original spec" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": false }, "outputs": [], "source": [ "model_code = '''\n", "functions {\n", " // Defines the log survival\n", " vector log_S (vector t, real shape, vector rate) {\n", " vector[num_elements(t)] log_S;\n", " for (i in 1:num_elements(t)) {\n", " log_S[i] = gamma_lccdf(t[i]|shape,rate[i]); \n", " }\n", " return log_S;\n", " }\n", " \n", " // Defines the log hazard\n", " vector log_h (vector t, real shape, vector rate) {\n", " vector[num_elements(t)] log_h;\n", " vector[num_elements(t)] ls;\n", " ls = log_S(t,shape,rate);\n", " for (i in 1:num_elements(t)) {\n", " log_h[i] = gamma_lpdf(t[i]|shape,rate[i]) - ls[i];\n", " }\n", " return log_h;\n", " }\n", " \n", " // Defines the sampling distribution\n", " real surv_gamma_lpdf (vector t, vector d, real shape, vector rate) {\n", " vector[num_elements(t)] log_lik;\n", " real prob;\n", " log_lik = d .* log_h(t,shape,rate) + log_S(t,shape,rate);\n", " prob = sum(log_lik);\n", " return prob;\n", " }\n", "}\n", "\n", "data {\n", " int N; // number of observations\n", " vector[N] y; // observed times\n", " vector[N] event; // censoring indicator (1=observed, 0=censored)\n", " int M; // number of covariates\n", " matrix[N, M] x; // matrix of covariates (with n rows and H columns)\n", "}\n", "\n", "parameters {\n", " vector[M] beta; // Coefficients in the linear predictor (including intercept)\n", " real alpha; // shape parameter\n", "}\n", "\n", "transformed parameters {\n", " vector[N] linpred;\n", " vector[N] mu;\n", " linpred = x*beta;\n", " for (i in 1:N) {\n", " mu[i] = exp(linpred[i]);\n", " }\n", "}\n", "\n", "model {\n", " alpha ~ gamma(0.01,0.01);\n", " beta ~ normal(0,5);\n", " y ~ surv_gamma(event, alpha, mu);\n", "}\n", "'''" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now, we are ready to fit our model using `survivalstan.fit_stan_survival_model`. \n", "\n", "We pass a few parameters to the fit function, many of which are required. See ?survivalstan.fit_stan_survival_model for details. \n", "\n", "Similar to what we did above, we are asking `survivalstan` to cache this model fit object. See [stancache](http://github.com/jburos/stancache) for more details on how this works. Also, if you didn't want to use the cache, you could omit the parameter `FIT_FUN` and `survivalstan` would use the standard pystan functionality.\n" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": false }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "INFO:stancache.stancache:Step 1: Get compiled model code, possibly from cache\n", "INFO:stancache.stancache:StanModel: cache_filename set to anon_model.cython_0_25_1.model_code_14429915565770599621.pystan_2_12_0_0.stanmodel.pkl\n", "INFO:stancache.stancache:StanModel: Loading result from cache\n", "INFO:stancache.stancache:Step 2: Get posterior draws from model, possibly from cache\n", "INFO:stancache.stancache:sampling: cache_filename set to anon_model.cython_0_25_1.model_code_14429915565770599621.pystan_2_12_0_0.stanfit.chains_4.data_25476010973.iter_5000.seed_9001.pkl\n", "INFO:stancache.stancache:sampling: Loading result from cache\n" ] } ], "source": [ "testfit = survivalstan.fit_stan_survival_model(\n", " model_cohort = 'model 1',\n", " model_code = model_code,\n", " df = d,\n", " time_col = 't',\n", " event_col = 'event',\n", " formula = '~ age_centered + sex',\n", " iter = 5000,\n", " chains = 4,\n", " seed = 9001,\n", " FIT_FUN = stancache.cached_stan_fit,\n", " drop_intercept = False,\n", " )\n" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# 0:00:40.518775 elapsed" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " mean se_mean sd 2.5% 50% 97.5% Rhat\n", "lp__ -278.113380 0.021718 1.358348 -281.579969 -277.815032 -276.424942 1.000465\n", "alpha 1.220129 0.002561 0.170488 0.913076 1.209632 1.581949 1.000245\n", "beta[0] -2.703902 0.003699 0.226779 -3.173168 -2.695839 -2.275841 1.000271\n", "beta[1] 0.608266 0.002897 0.199169 0.221442 0.606373 1.003776 1.000226\n", "beta[2] 0.006018 0.000183 0.014844 -0.023068 0.005959 0.035536 1.000075\n" ] } ], "source": [ "survivalstan.utils.print_stan_summary([testfit], pars=['lp__', 'alpha', 'beta'])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## model2: alternate version of surv_gamma_lpdf" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "collapsed": true }, "outputs": [], "source": [ "model_code2 = '''\n", "functions {\n", " // Defines the log survival\n", " real surv_gamma_lpdf (vector t, vector d, real shape, vector rate) {\n", " vector[num_elements(t)] log_lik;\n", " real prob;\n", " for (i in 1:num_elements(t)) {\n", " log_lik[i] = d[i] * (gamma_lpdf(t[i]|shape,rate[i]) - gamma_lccdf(t[i]|shape,rate[i]))\n", " + gamma_lccdf(t[i]|shape,rate[i]);\n", " }\n", " prob = sum(log_lik);\n", " return prob;\n", " }\n", "}\n", "data {\n", " int N; // number of observations\n", " vector[N] y; // observed times\n", " vector[N] event; // censoring indicator (1=observed, 0=censored)\n", " int M; // number of covariates\n", " matrix[N, M] x; // matrix of covariates (with n rows and H columns)\n", "}\n", "parameters {\n", " vector[M] beta; // Coefficients in the linear predictor (including intercept)\n", " real alpha; // shape parameter\n", "}\n", "transformed parameters {\n", " vector[N] mu;\n", " {\n", " vector[N] linpred;\n", " linpred = x*beta;\n", " mu = exp(linpred);\n", " }\n", "}\n", "\n", "model {\n", " alpha ~ gamma(0.01,0.01);\n", " beta ~ normal(0,5);\n", " y ~ surv_gamma(event, alpha, mu);\n", "}\n", "'''" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "collapsed": false }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "INFO:stancache.stancache:Step 1: Get compiled model code, possibly from cache\n", "INFO:stancache.stancache:StanModel: cache_filename set to anon_model.cython_0_25_1.model_code_9177012762674257483.pystan_2_12_0_0.stanmodel.pkl\n", "INFO:stancache.stancache:StanModel: Loading result from cache\n", "INFO:stancache.stancache:Step 2: Get posterior draws from model, possibly from cache\n", "INFO:stancache.stancache:sampling: cache_filename set to anon_model.cython_0_25_1.model_code_9177012762674257483.pystan_2_12_0_0.stanfit.chains_4.data_25476010973.iter_5000.seed_9001.pkl\n", "INFO:stancache.stancache:sampling: Loading result from cache\n" ] } ], "source": [ "testfit2 = survivalstan.fit_stan_survival_model(\n", " model_cohort = 'model 2',\n", " model_code = model_code2,\n", " df = d,\n", " time_col = 't',\n", " event_col = 'event',\n", " formula = '~ age_centered + sex',\n", " iter = 5000,\n", " chains = 4,\n", " seed = 9001,\n", " FIT_FUN = stancache.cached_stan_fit,\n", " drop_intercept = False,\n", " )\n" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# 0:00:21.081723 elapsed" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " mean se_mean sd 2.5% 50% 97.5% Rhat\n", "lp__ -278.122019 0.022342 1.367441 -281.523430 -277.808097 -276.440635 1.001051\n", "alpha 1.218976 0.002590 0.171529 0.906313 1.208893 1.586105 1.000714\n", "beta[0] -2.704073 0.003788 0.228848 -3.187193 -2.693108 -2.287256 1.000886\n", "beta[1] 0.604867 0.002814 0.201056 0.208092 0.605508 0.993031 1.000143\n", "beta[2] 0.006629 0.000188 0.014733 -0.021872 0.006506 0.036200 1.000063\n" ] } ], "source": [ "survivalstan.utils.print_stan_summary([testfit2], pars=['lp__', 'alpha', 'beta'])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## model3: use `log_mix` inside surv_gamma_lpdf" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "collapsed": true }, "outputs": [], "source": [ "model_code3 = '''\n", "functions {\n", " // Defines the log survival\n", " real surv_gamma_lpdf (vector t, vector d, real shape, vector rate) {\n", " vector[num_elements(t)] log_lik;\n", " real prob;\n", " for (i in 1:num_elements(t)) {\n", " log_lik[i] = log_mix(d[i], gamma_lpdf(t[i]|shape,rate[i]), gamma_lccdf(t[i]|shape,rate[i]));\n", " }\n", " prob = sum(log_lik);\n", " return prob;\n", " }\n", "}\n", "data {\n", " int N; // number of observations\n", " vector[N] y; // observed times\n", " vector[N] event; // censoring indicator (1=observed, 0=censored)\n", " int M; // number of covariates\n", " matrix[N, M] x; // matrix of covariates (with n rows and H columns)\n", "}\n", "parameters {\n", " vector[M] beta; // Coefficients in the linear predictor (including intercept)\n", " real alpha; // shape parameter\n", "}\n", "transformed parameters {\n", " vector[N] linpred;\n", " vector[N] mu;\n", " linpred = x*beta;\n", " mu = exp(linpred);\n", "}\n", "\n", "model {\n", " alpha ~ gamma(0.01,0.01);\n", " beta ~ normal(0,5);\n", " y ~ surv_gamma(event, alpha, mu);\n", "}\n", "'''" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "collapsed": false }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "INFO:stancache.stancache:Step 1: Get compiled model code, possibly from cache\n", "INFO:stancache.stancache:StanModel: cache_filename set to anon_model.cython_0_25_1.model_code_1293841621968646714.pystan_2_12_0_0.stanmodel.pkl\n", "INFO:stancache.stancache:StanModel: Loading result from cache\n", "INFO:stancache.stancache:Step 2: Get posterior draws from model, possibly from cache\n", "INFO:stancache.stancache:sampling: cache_filename set to anon_model.cython_0_25_1.model_code_1293841621968646714.pystan_2_12_0_0.stanfit.chains_4.data_25476010973.iter_5000.seed_9001.pkl\n", "INFO:stancache.stancache:sampling: Loading result from cache\n" ] } ], "source": [ "testfit3 = survivalstan.fit_stan_survival_model(\n", " model_cohort = 'model 3',\n", " model_code = model_code3,\n", " df = d,\n", " time_col = 't',\n", " event_col = 'event',\n", " formula = '~ age_centered + sex',\n", " iter = 5000,\n", " chains = 4,\n", " seed = 9001,\n", " FIT_FUN = stancache.cached_stan_fit,\n", " drop_intercept = False,\n", " )\n" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "collapsed": true }, "outputs": [], "source": [ "#0:00:20.284146 elapsed" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " mean se_mean sd 2.5% 50% 97.5% Rhat\n", "lp__ -278.092768 0.021055 1.344719 -281.491359 -277.783232 -276.425885 1.000812\n", "alpha 1.216429 0.002640 0.166944 0.905732 1.207800 1.576275 1.000432\n", "beta[0] -2.708385 0.003770 0.220966 -3.173480 -2.697460 -2.307317 1.000622\n", "beta[1] 0.609834 0.002799 0.199563 0.223234 0.609396 1.008451 1.000295\n", "beta[2] 0.006028 0.000180 0.014812 -0.022443 0.006036 0.036197 1.000265\n" ] } ], "source": [ "survivalstan.utils.print_stan_summary([testfit3], pars=['lp__', 'alpha', 'beta'])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## model4: vectorize surv_gamma_lpdf" ] }, { "cell_type": "code", "execution_count": 40, "metadata": { "collapsed": true }, "outputs": [], "source": [ "model_code4 = '''\n", "functions {\n", " int count_value(vector a, real val) {\n", " int s;\n", " s = 0;\n", " for (i in 1:num_elements(a)) \n", " if (a[i] == val) \n", " s = s + 1;\n", " return s;\n", " }\n", "\n", " // Defines the log survival\n", " real surv_gamma_lpdf (vector t, vector d, real shape, vector rate, int num_cens, int num_obs) {\n", " vector[2] log_lik;\n", " int idx_obs[num_obs];\n", " int idx_cens[num_cens];\n", " real prob;\n", " int i_cens;\n", " int i_obs;\n", " i_cens = 1;\n", " i_obs = 1;\n", " for (i in 1:num_elements(t)) {\n", " if (d[i] == 1) {\n", " idx_obs[i_obs] = i;\n", " i_obs = i_obs+1;\n", " }\n", " else {\n", " idx_cens[i_cens] = i;\n", " i_cens = i_cens+1;\n", " }\n", " }\n", " print(idx_obs);\n", " log_lik[1] = gamma_lpdf(t[idx_obs] | shape, rate[idx_obs]);\n", " log_lik[2] = gamma_lccdf(t[idx_cens] | shape, rate[idx_cens]);\n", " prob = sum(log_lik);\n", " return prob;\n", " }\n", "}\n", "data {\n", " int N; // number of observations\n", " vector[N] y; // observed times\n", " vector[N] event; // censoring indicator (1=observed, 0=censored)\n", " int M; // number of covariates\n", " matrix[N, M] x; // matrix of covariates (with n rows and H columns)\n", "}\n", "transformed data {\n", " int num_cens;\n", " int num_obs;\n", " num_obs = count_value(event, 1);\n", " num_cens = N - num_obs;\n", "}\n", "parameters {\n", " vector[M] beta; // Coefficients in the linear predictor (including intercept)\n", " real alpha; // shape parameter\n", "}\n", "transformed parameters {\n", " vector[N] linpred;\n", " vector[N] mu;\n", " linpred = x*beta;\n", " mu = exp(linpred);\n", "}\n", "model {\n", " alpha ~ gamma(0.01,0.01);\n", " beta ~ normal(0,5);\n", " y ~ surv_gamma(event, alpha, mu, num_cens, num_obs);\n", "}\n", "'''" ] }, { "cell_type": "code", "execution_count": 41, "metadata": { "collapsed": false }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "INFO:stancache.stancache:Step 1: Get compiled model code, possibly from cache\n", "INFO:stancache.stancache:StanModel: cache_filename set to anon_model.cython_0_25_1.model_code_16881928540873162731.pystan_2_12_0_0.stanmodel.pkl\n", "INFO:stancache.stancache:StanModel: Starting execution\n", "INFO:pystan:COMPILING THE C++ CODE FOR MODEL anon_model_b18a6495e568fcff90662e16a3d2aa85 NOW.\n", "INFO:stancache.stancache:StanModel: Execution completed (0:01:09.439292 elapsed)\n", "INFO:stancache.stancache:StanModel: Saving results to cache\n", "INFO:stancache.stancache:Step 2: Get posterior draws from model, possibly from cache\n", "INFO:stancache.stancache:sampling: cache_filename set to anon_model.cython_0_25_1.model_code_16881928540873162731.pystan_2_12_0_0.stanfit.chains_4.data_25476010973.iter_5000.seed_9001.pkl\n", "INFO:stancache.stancache:sampling: Starting execution\n", "INFO:stancache.stancache:sampling: Execution completed (0:00:06.245552 elapsed)\n", "INFO:stancache.stancache:sampling: Saving results to cache\n", "/home/jacquelineburos/miniconda3/envs/python3/lib/python3.5/site-packages/stancache/stancache.py:284: UserWarning: Pickling fit objects is an experimental feature!\n", "The relevant StanModel instance must be pickled along with this fit object.\n", "When unpickling the StanModel must be unpickled first.\n", " pickle.dump(res, open(cache_filepath, 'wb'), pickle.HIGHEST_PROTOCOL)\n" ] } ], "source": [ "testfit4 = survivalstan.fit_stan_survival_model(\n", " model_cohort = 'model 4',\n", " model_code = model_code4,\n", " df = d,\n", " time_col = 't',\n", " event_col = 'event',\n", " formula = '~ age_centered + sex',\n", " iter = 5000,\n", " chains = 4,\n", " seed = 9001,\n", " FIT_FUN = stancache.cached_stan_fit,\n", " drop_intercept = False,\n", " )\n" ] }, { "cell_type": "code", "execution_count": 42, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# 0:00:06.245552 elapsed" ] }, { "cell_type": "code", "execution_count": 43, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " mean se_mean sd 2.5% 50% 97.5% Rhat\n", "lp__ -278.097416 0.020380 1.353386 -281.543138 -277.782205 -276.445123 0.999867\n", "alpha 1.216149 0.002525 0.169578 0.913312 1.206908 1.574024 1.000702\n", "beta[0] -2.708518 0.003627 0.228658 -3.188661 -2.700493 -2.278788 1.000723\n", "beta[1] 0.610593 0.002824 0.201974 0.224438 0.607700 1.030164 1.000744\n", "beta[2] 0.006211 0.000171 0.014493 -0.022229 0.006113 0.035095 1.000222\n" ] } ], "source": [ "survivalstan.utils.print_stan_summary([testfit4], pars=['lp__', 'alpha', 'beta'])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## compare coefficient estimates for each model spec" ] }, { "cell_type": "code", "execution_count": 44, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAA4gAAAHrCAYAAACNT7MTAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAAPYQAAD2EBqD+naQAAIABJREFUeJzs3XtcVVX+//HXPoDiAeUOIumEGniZMcTKvHSdGie8p/ab\nLMtLmnwzzW+N5kiZVn4Vp9HU0rKmxr5pF03CpGls5utUU6Y5Y9OYkopmIaLcDDggHM75/aHsOIHI\n5XB/Px+PHo999t5rrc9hrYoPa+29DKfT6URERERERETaPEtTByAiIiIiIiLNgxJEERERERERAZQg\nioiIiIiIyAVKEEVERERERARQgigiIiIiIiIXKEEUERERERERQAmiiIiIiIiIXKAEUURERERERADw\nbOoApPlzOp3k5BTicDibOhSpwGIxCAz0Ud80Q+qb5k3903ypb5ov9U3zZrEYBAX5NnUY0kpoBlEu\nyTAMLBajqcOQn7BYDPVNM6W+ad7UP82X+qb5Ut80b+oXcScliCIiIiIiIgIoQRQREREREZELlCCK\niIiIiIgIoARRRERERERELtBbTEVERERExK0KCgooLi5utPa8vb3x9dWbXN1BCaKIiIiIiLhNQUEB\n06bdh81W2GhtWq0+vPzyS80ySZw0aRJ9+vRhwYIFNbp/27ZtLF26lL179zZwZFVTgigiIiIiIm5T\nXFyMzVaI9fJbMTw7NHh7TnsRtuM7KS4ubpYJYl0YRvVbl6xfv55du3Zx6NAh2rVrx549e9zWthJE\nERERERFxO8OzAxYva4O342jwFpofu93ObbfdRv/+/dm6datb61aCKCIiIiIibcqkSZOIjo7GYrGQ\nlJSEl5cXDz30ECNGjGDJkiV88MEHBAcHk5CQwPXXX2+W27NnDytWrODQoUP4+fkxduxY5s6di8Vy\n/t2fRUVFLFq0iJ07d+Lr68vUqVMrtV1SUsLKlSvZsWMH+fn5REVF8fDDD3PNNdfUOP5Zs2YB55ej\nupveYioiIiIiIm1OUlISgYGBbNmyhUmTJvHEE08wZ84cYmNjSUpKYsiQIcyfP59z584BkJmZyf33\n38+VV15JcnIyixcvZsuWLTz//PNmncuXL+eLL75g/fr1/PGPf+Tzzz/nwIEDLu0uWbKEL7/8klWr\nVpGcnMyvf/1rpk+fzokTJxr1+1+MEkQREREREWlzevXqxcyZM+nWrRszZsygXbt2BAYGMmHCBLp1\n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\nAjB79n/z4IP343Q6CQ4ONs//9L6PP95V7TYXgYGB1HabC5HqLF68lMTEp81x6OFh4bPPPnHZ5qJ8\nfIqIiLR2vr6+vPTyyxQXFzdam97e3koO3UQJojRLXl7tmDjxHsAw946zWn0ZPnw0mZmnGDRoqHn+\np/dNmjSF999/DwB//wA6dw4nMrL7hTejGtx220jASVpaGobh5JNPPgLA27sDmZmnqozHz88Pb+8O\nnDqVgdN5/hd+JZdtW4cOHfD3D6Rr164EB4e6jENPTwszZsygoKCYsjIHFceniIhIW+Dr66uErYVS\ngijNVkxM5Tc73X77HZe8LyZmQJVlq7oPYOzYynVeysWWGkrb8d//vcBleexPx9c111yjpVgiIiLS\n4jT+GypERERERESkWdIMokgdhId3MTczDQ/v0sTRSGNRv4uIiEhrpwRRpA6sViuJiavNY2kb1O8i\nIiLS2mmJKbBgwQJmzZpV4/t79erFX//61waMyL327NlDr169Ku3BIvVjtVqVJLRB6ncRERFpzZQg\nNqHyDd4bmtPpxDCMRt9AXkREREREWhYliD8xadIknnrqKVasWMHAgQMZOnQoa9euNa/ffPPNGIbB\nAw88QK9evfjlL39pXvvwww+5/fbb6devH7feeitr166lrKzMvN6rVy82b95MfHw8/fv3Z/369QAc\nPnyYmTNnMmDAAGJjY7n77rv57rvvzHJvv/02cXFx9OvXj7i4ODZt2mReS09Pp1evXqSkpPCb3/yG\nfv36MXLkSPbu3Wtev/feewG4+uqr6d27NwsWLGiYH56IiIiIiLRoegaxCu+++y6TJ0/m7bff5p//\n/CcLFixgwIABDBo0iC1btjB48GCWLVvGddddh8VyPsf+4osvePTRR3nssce46qqrOHHiBI899piZ\nTJZ77rnnePjhh1m4cCGenp5kZmZy9913c+211/Laa6/h4+PDP//5TzOxTE5OZs2aNTz++OP07t2b\ngwcPkpCQgNVqZcyYMWa9K1asYOHChXTv3p1XXnmFmTNn8re//Y3w8HDWrFnD7Nmz+ctf/oKPjw/t\n27dv3B+oNFslGYXYfyipdbmKZc7Vsg5HYWmt2xMREZGWpaCggOLi4kZrz9vbu9nuuzhp0iT69OlT\n40mabdu2sXTpUnPCp7EpQaxCdHS0mdR169aN119/nc8++4xBgwYRGBgIQMeOHQkKCjLLPPfcc8yY\n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\nreaxtD7qYxEREWlLlCCK1IPVaiUxcbV5LK2P+lhERETaEiWIIvWkpKH1Ux+LiIhIW6FnEEVERERE\nRARQgigiIiIiIiIXaImpSBtnK86r8/31KSsiIiIizY8SRJE2Lu37z5qkrIiIiIg0P1piKiIiIiIi\nIoBmEEXapIiIy1i4cEmdyxcXFwPg7e1drxhEREREpHlRgijSBnl7e9OjR8+mDkNEREREmhktMRUR\nERERERFACaKIiIiIiIhcoARRREREREREACWIIiIiIiIicoESRBEREREREQGUIIqIiIiIiMgFShBF\nREREREQEUIIoIiIiIiIiFyhBFBEREREREUAJooiIiIiIiFygBFFEREREREQAJYgiIiIiIiJygRJE\nERERERERAZQgioiIiIiIyAVKEEVERERERARQgigiIiIiIiIXKEEUERERERERQAmiiIiIiIiIXKAE\nUURERERERAAliCIiIiIiInKBEkQREREREREBlCCKiIiIiIjIBUoQRUREREREBFCCKCIiIiIiIhd4\nNnUAIiIiIq1BcXEx6enf17ksgLe3d63LRkRcVqdyIiJVUYIoIiIi4gbp6d/z9NOPN3q7CxcuoUeP\nno3eroi0TlpiKiIiIiIiIoBmEEVERETcrn341Xi096/RvWXnznIuY8+Fctfg0d6vBmXyOJext14x\niohURQmiiIiIiJt5tPfHo0NQHcr51amciIi7aImpiIiIiIiIAEoQRURERERE5AIliCIiItIi2Gw2\nbDZbU4chtaR+E2lZlCCKiIhIs2ez2Zg3bzbz5s1WstGCqN9EWh4liCIiItLsZWScNGeiMjJONnU4\nUkPqN5GWRwmiiIiIiIiIANrmQkRERNxs//59gEFMTGylc2lpR0hNPYi/fwDgBAzCwsLJzMwgLy+X\n778/wblzJfj5+dGzZ5RZPjKyR2N/DXGzp59+HE9PL0JCQrnqqqv55JOPsNlsBAYG4evrC0BAQACh\noeGkph4gICCQa68dwmef/QOAQYOGkpZ2hMzMUwwaNNRlfImI+yhBFBEREbcpLS1h06aNGIZB374/\nx8urnXnO6XSSk5ON0+l0KWOxWHA4HC7ncnNz2Lt3t/n5m28ONUr80rDs9lIyMtLZvj3dPJeRkX7R\n+7/5JpW8vFwAjh79hry8PBwOB2lpR8zxJSLupSWmIiIi4jY7diSTlXWGM2dOk5Ky3eVcdnZWpeQQ\n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\najWPpWVR/4m0LDVKEDdu3NjQcTQrN998MydPnsQwDPbu3Yuvr29Th+Ti7bff5plnnmH37t01LnPD\nDTeQmZmJYRj885//pEOHDg0YoYiIiPtYrVYSE1ebx9KyqP9EWpYaJYjXXHNNQ8fR7Dz00EPccccd\n+Pr6smDBgipnS8tFRETw17/+tVHjqzijWxNJSUl8/vnnzJ07t4EiEhERaThKLFo29Z9Iy1Hrl9S0\nFVarlcDA86/dXrhwIY888oh5bciQISxbtozrrrsOOP8q5uYuICAAPz+/pg5DRERERESasTplNu++\n+y533nkngwYNIjY2ttI/jeHPf/4zI0eO5Morr2TgwIFMnTqV4uJi4PwSzLi4OPr160dcXBybNm0y\nyyUlJdG/f39OnDhhnlu0aBFxcXGUlJRU2Zavry9BQUHmPwAdO3Y0PwcEBFRZbtWqVYwbN463336b\nG2+8kdjYWJ566ikcDgcvvvgiQ4cOZciQIWzYsMGl3Msvv8zIkSOJiYnhxhtv5Mknn6SoqKjan8df\n/vIXxo4dS79+/fjVr37F888/r1eCi4iIiIhIrdR6BvHdd98lISGBsWPH8q9//Ytx48bhcDj429/+\nRqdOnRg9enRDxOnizJkzPPLII8ybN49bbrmFwsJCvvjiC5xOJ8nJyaxZs4bHH3+c3r17c/DgQRIS\nErBarYwZM4YxY8bw97//nYcffpg333yTjz76iG3btvHmm2/Srp3798g5duwYu3fv5uWXX+bbb79l\n9uzZHD9+nJ49e/K///u/7N27l8cee4whQ4bQp08fADw9PVm0aBFdunThxIkTPPHEE1gsFhYuXFhl\nG59//jkJCQkkJCQwYMAAvv32WxISEvDw8OD+++93+3cSERGRykpKzv14nFGI/Yeq//D8U2WFpebx\nuVqUc1QoV7FtEZH6qHWC+Morr/Bf//VfzJgxg7feeouJEyfSt29fCgoKmDZtGj4+Pg0Rp4szZ85Q\nVlbGrbfeSnh4OABXXHEFAGvXruXRRx/llltuAc4/H3j48GHeeOMNxowZA8DixYsZPXo0Tz75JDt3\n7mTWrFn07t27QWI1DIOlS5fSvn17evTowdVXX813333HSy+9BMDll1/Ohg0b+Pzzz80E8d577zXL\nd+nShdmzZ7N06dKLJohr165l5syZjBo1yvzODz74IKtXr1aCKCIi0kjOnDltHhennq1THefqWO7M\nmdP07t23TmVFRCqqdYL47bffEhsbi4eHBx4eHhQUFADnl2FOnz6dpUuXMmXKFLcHWlGvXr0YNGgQ\nI7Xr8M8AACAASURBVEaMYOjQoQwdOpRhw4bh5eXFiRMnWLhwoUsy5XA46Nixo/m5U6dOPPXUU0yb\nNo3Y2FhmzJjRYLF27dqV9u3bm5+DgoIqPahdvpdkuU8++YQNGzZw7Ngx8vPzcTgclJSUUFpaipeX\nV6U2vvnmG7766ivWrFljnnM4HNjt9ouWERERERER+alaJ4i+vr7ms3phYWEcOXKEgQMHAlBW9v/b\nu/PoKMp8/+Ofyp4mEkIIkAB6WZRA2BFki0gQ0CAiio7CgIzACOIEHR00ggFDQhyIoqCDoIiCoBev\nrCb8vDqcuSKigAzIMOwgIAlLFlnShGz9+4PQQ9sREtJb6PfrHM/pep6nqr6dCgc+Pk9VlSo/P9+x\nFVbAx8dH77//vv75z39q48aNWrJkid544w3NmzdPkpSSkqJ27drZ7XOlzZs3y8/PT6dOnVJBQYHT\nZj79/Gx/xIZhVNh2+X7BY8eOafz48RoxYoSee+45hYaGavPmzUpKSlJJSUmFYa+goEDPP/+8+vbt\na9dHOAQAwDUiIupbP99lClFdX99K7ZdXWqJ/mAvK96ulur6V++dZXmmp/mE+b3duAKiOKgfENm3a\naO/evYqNjVVcXJzefvttWSwW+fn5acGCBWrfvr0z6qxQx44d1bFjRz311FPq06ePtm3bpoYNG+ro\n0aMaOHDgb+63bds2vf/++5o3b57S09M1ffp0vfrqqy6r+2p27twpHx8fTZo0ydq2Zs2aq+7TunVr\nHT58WE2aNHF2eQAA4DcEBPxnxVBdX1818Kv6/6St6+t3XftdeW4AqI4qB8Qnn3xSWVlZkqSEhAQd\nP35caWlpKi0tVdu2bTV9+nSHF/lrP/74ozZt2qSePXsqPDxc27dvV35+vpo3b64JEyZoxowZCgkJ\nUWxsrIqKivSvf/1LZ8+e1ahRo3T+/Hm98MILGjFihGJjY9WgQQM9/PDDuuuuu3TPPfdUq65Zs2Yp\nPz9fM2bMuO5j3HLLLSoqKtLSpUt15513auvWrVq+fPlV95kwYYImTJigBg0aaMCAAZKkPXv26ODB\ng0pISLjuWgAAAAB4lyoHxA4dOqhDhw6SLt3LN2/ePBUVFamoqEghISEOL7AitWrV0pYtW7R48WKd\n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\nkGEY6t+/v7KystS5c2fNmDFD77zzjgYMGKApU6ZcMyRWxDAMm6WoZ8+e1WOPPaa9e/cqKSlJc+fO\nVXBwsEaNGmUXWgEAqOn83F0AAABXExISot69eysjI0PDhw+3tmdkZKhnz54KDQ1VfHy8zT633367\nsrOz9cknn2jw4MHVOv8HH3yg8+fP67PPPlNYWJgkqXv37howYIDef/99Pf/889U6PgAAnoSACADw\neAMHDtSf//xnnThxQg0bNlROTo62bNmi9PR0SZdm+ebMmaP169fr5MmTKi0tlSRroKuOb7/9Vnfc\ncYdq165tPa5hGOrSpYt27txZ7eMDAOBJCIgAAI/Xp08fBQcHKyMjQ6NHj1ZGRoYCAwPVp08fSdIL\nL7ygHTt2aMKECWrRooVCQkK0bNkyu2Wp1yM/P187duxQTEyMTbthGLr55purfXwAADwJAREA4PEC\nAwPVt29fa0Bct26d4uLiFBwcrKKiIn399ddKTEy0WYJaVlZ2zWNKUnFxsU37mTNnbLZDQ0MVGxur\nZ555RhaLxaYvICCgOl8LAACPQ0AEANQIAwcO1Lhx4/TNN99o+/btGjdunCSpqKhIpaWl8vP7z19p\n58+f1/r16696vPDwcPn7++vgwYPWtqKiIm3ZssXmITXdu3fX2rVr1axZMwUFBTn4WwEA4FkIiACA\nGuHyA2leeuklhYaGqlevXpIuPcSmbdu2WrBggcLCwuTr66t3331XtWvXVm5urs0xrpwBNAxD/fr1\n09KlS3XzzTcrLCxMH330kd15//CHP+jzzz/X8OHDNXLkSEVFRSkvL087duxQgwYN9Pjjjzv3iwMA\n4EK85gIAUCP4+flpwIABOn36tAYMGGAzY/j666/r5ptv1osvvqgZM2bonnvuqfDppVfODErSlClT\n1LVrV6Wmpmrq1Km688471a9fP5sxderU0fLly9W6dWu99tprGj16tF599VVlZWWpffv2zvmyAAC4\niWH59Q0VAAAAAACvxAwiAAAAAEASAREAAAAAUI6ACAAAAACQREAEAAAAAJQjIAIAAAAAJBEQAQAA\nAADlCIgAAAAAAEkERAAAAABAOQIiAAAAAEASAREAAAAAUI6ACAAAAACQJP1/d9KlysGYmHEAAAAA\nSUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "survivalstan.utils.plot_coefs([testfit, testfit2, testfit3, testfit4])" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] } ], "metadata": { "anaconda-cloud": {}, "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.5.2" } }, "nbformat": 4, "nbformat_minor": 0 }