{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"[大图](ridge_lasso.html), [下载](origin_files/ridge_lasso.ipynb) \n",
"数据http://archive.ics.uci.edu/ml/datasets/Airfoil+Self-Noise"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"C:\\Users\\guofei\\Anaconda3\\lib\\site-packages\\statsmodels\\compat\\pandas.py:56: FutureWarning: The pandas.core.datetools module is deprecated and will be removed in a future version. Please use the pandas.tseries module instead.\n",
" from pandas.core import datetools\n"
]
}
],
"source": [
"%matplotlib inline\n",
"\n",
"import matplotlib.pyplot as plt\n",
"import os\n",
"import numpy as np\n",
"import pandas as pd\n",
"import statsmodels.api as sm\n",
"from statsmodels.formula.api import ols\n",
"\n",
"pd.set_option('display.max_columns', 8)"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" CRIM | \n",
" ZN | \n",
" INDUS | \n",
" CHAS | \n",
" ... | \n",
" PTRATIO | \n",
" B | \n",
" LSTAT | \n",
" target | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 0.00632 | \n",
" 18.0 | \n",
" 2.31 | \n",
" 0.0 | \n",
" ... | \n",
" 15.3 | \n",
" 396.90 | \n",
" 4.98 | \n",
" 24.0 | \n",
"
\n",
" \n",
" 1 | \n",
" 0.02731 | \n",
" 0.0 | \n",
" 7.07 | \n",
" 0.0 | \n",
" ... | \n",
" 17.8 | \n",
" 396.90 | \n",
" 9.14 | \n",
" 21.6 | \n",
"
\n",
" \n",
" 2 | \n",
" 0.02729 | \n",
" 0.0 | \n",
" 7.07 | \n",
" 0.0 | \n",
" ... | \n",
" 17.8 | \n",
" 392.83 | \n",
" 4.03 | \n",
" 34.7 | \n",
"
\n",
" \n",
" 3 | \n",
" 0.03237 | \n",
" 0.0 | \n",
" 2.18 | \n",
" 0.0 | \n",
" ... | \n",
" 18.7 | \n",
" 394.63 | \n",
" 2.94 | \n",
" 33.4 | \n",
"
\n",
" \n",
" 4 | \n",
" 0.06905 | \n",
" 0.0 | \n",
" 2.18 | \n",
" 0.0 | \n",
" ... | \n",
" 18.7 | \n",
" 396.90 | \n",
" 5.33 | \n",
" 36.2 | \n",
"
\n",
" \n",
"
\n",
"
5 rows × 14 columns
\n",
"
"
],
"text/plain": [
" CRIM ZN INDUS CHAS ... PTRATIO B LSTAT target\n",
"0 0.00632 18.0 2.31 0.0 ... 15.3 396.90 4.98 24.0\n",
"1 0.02731 0.0 7.07 0.0 ... 17.8 396.90 9.14 21.6\n",
"2 0.02729 0.0 7.07 0.0 ... 17.8 392.83 4.03 34.7\n",
"3 0.03237 0.0 2.18 0.0 ... 18.7 394.63 2.94 33.4\n",
"4 0.06905 0.0 2.18 0.0 ... 18.7 396.90 5.33 36.2\n",
"\n",
"[5 rows x 14 columns]"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from sklearn import datasets\n",
"dataset=datasets.load_boston()\n",
"X=dataset.data\n",
"y=dataset.target\n",
"df=pd.DataFrame(dataset.data,columns=dataset.feature_names)\n",
"df.loc[:,'target']=dataset.target\n",
"df.head()"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" CRIM | \n",
" ZN | \n",
" INDUS | \n",
" CHAS | \n",
" ... | \n",
" PTRATIO | \n",
" B | \n",
" LSTAT | \n",
" target | \n",
"
\n",
" \n",
" \n",
" \n",
" CRIM | \n",
" 1.000000 | \n",
" -0.199458 | \n",
" 0.404471 | \n",
" -0.055295 | \n",
" ... | \n",
" 0.288250 | \n",
" -0.377365 | \n",
" 0.452220 | \n",
" -0.385832 | \n",
"
\n",
" \n",
" ZN | \n",
" -0.199458 | \n",
" 1.000000 | \n",
" -0.533828 | \n",
" -0.042697 | \n",
" ... | \n",
" -0.391679 | \n",
" 0.175520 | \n",
" -0.412995 | \n",
" 0.360445 | \n",
"
\n",
" \n",
" INDUS | \n",
" 0.404471 | \n",
" -0.533828 | \n",
" 1.000000 | \n",
" 0.062938 | \n",
" ... | \n",
" 0.383248 | \n",
" -0.356977 | \n",
" 0.603800 | \n",
" -0.483725 | \n",
"
\n",
" \n",
" CHAS | \n",
" -0.055295 | \n",
" -0.042697 | \n",
" 0.062938 | \n",
" 1.000000 | \n",
" ... | \n",
" -0.121515 | \n",
" 0.048788 | \n",
" -0.053929 | \n",
" 0.175260 | \n",
"
\n",
" \n",
" NOX | \n",
" 0.417521 | \n",
" -0.516604 | \n",
" 0.763651 | \n",
" 0.091203 | \n",
" ... | \n",
" 0.188933 | \n",
" -0.380051 | \n",
" 0.590879 | \n",
" -0.427321 | \n",
"
\n",
" \n",
" RM | \n",
" -0.219940 | \n",
" 0.311991 | \n",
" -0.391676 | \n",
" 0.091251 | \n",
" ... | \n",
" -0.355501 | \n",
" 0.128069 | \n",
" -0.613808 | \n",
" 0.695360 | \n",
"
\n",
" \n",
" AGE | \n",
" 0.350784 | \n",
" -0.569537 | \n",
" 0.644779 | \n",
" 0.086518 | \n",
" ... | \n",
" 0.261515 | \n",
" -0.273534 | \n",
" 0.602339 | \n",
" -0.376955 | \n",
"
\n",
" \n",
" DIS | \n",
" -0.377904 | \n",
" 0.664408 | \n",
" -0.708027 | \n",
" -0.099176 | \n",
" ... | \n",
" -0.232471 | \n",
" 0.291512 | \n",
" -0.496996 | \n",
" 0.249929 | \n",
"
\n",
" \n",
" RAD | \n",
" 0.622029 | \n",
" -0.311948 | \n",
" 0.595129 | \n",
" -0.007368 | \n",
" ... | \n",
" 0.464741 | \n",
" -0.444413 | \n",
" 0.488676 | \n",
" -0.381626 | \n",
"
\n",
" \n",
" TAX | \n",
" 0.579564 | \n",
" -0.314563 | \n",
" 0.720760 | \n",
" -0.035587 | \n",
" ... | \n",
" 0.460853 | \n",
" -0.441808 | \n",
" 0.543993 | \n",
" -0.468536 | \n",
"
\n",
" \n",
" PTRATIO | \n",
" 0.288250 | \n",
" -0.391679 | \n",
" 0.383248 | \n",
" -0.121515 | \n",
" ... | \n",
" 1.000000 | \n",
" -0.177383 | \n",
" 0.374044 | \n",
" -0.507787 | \n",
"
\n",
" \n",
" B | \n",
" -0.377365 | \n",
" 0.175520 | \n",
" -0.356977 | \n",
" 0.048788 | \n",
" ... | \n",
" -0.177383 | \n",
" 1.000000 | \n",
" -0.366087 | \n",
" 0.333461 | \n",
"
\n",
" \n",
" LSTAT | \n",
" 0.452220 | \n",
" -0.412995 | \n",
" 0.603800 | \n",
" -0.053929 | \n",
" ... | \n",
" 0.374044 | \n",
" -0.366087 | \n",
" 1.000000 | \n",
" -0.737663 | \n",
"
\n",
" \n",
" target | \n",
" -0.385832 | \n",
" 0.360445 | \n",
" -0.483725 | \n",
" 0.175260 | \n",
" ... | \n",
" -0.507787 | \n",
" 0.333461 | \n",
" -0.737663 | \n",
" 1.000000 | \n",
"
\n",
" \n",
"
\n",
"
14 rows × 14 columns
\n",
"
"
],
"text/plain": [
" CRIM ZN INDUS CHAS ... PTRATIO B \\\n",
"CRIM 1.000000 -0.199458 0.404471 -0.055295 ... 0.288250 -0.377365 \n",
"ZN -0.199458 1.000000 -0.533828 -0.042697 ... -0.391679 0.175520 \n",
"INDUS 0.404471 -0.533828 1.000000 0.062938 ... 0.383248 -0.356977 \n",
"CHAS -0.055295 -0.042697 0.062938 1.000000 ... -0.121515 0.048788 \n",
"NOX 0.417521 -0.516604 0.763651 0.091203 ... 0.188933 -0.380051 \n",
"RM -0.219940 0.311991 -0.391676 0.091251 ... -0.355501 0.128069 \n",
"AGE 0.350784 -0.569537 0.644779 0.086518 ... 0.261515 -0.273534 \n",
"DIS -0.377904 0.664408 -0.708027 -0.099176 ... -0.232471 0.291512 \n",
"RAD 0.622029 -0.311948 0.595129 -0.007368 ... 0.464741 -0.444413 \n",
"TAX 0.579564 -0.314563 0.720760 -0.035587 ... 0.460853 -0.441808 \n",
"PTRATIO 0.288250 -0.391679 0.383248 -0.121515 ... 1.000000 -0.177383 \n",
"B -0.377365 0.175520 -0.356977 0.048788 ... -0.177383 1.000000 \n",
"LSTAT 0.452220 -0.412995 0.603800 -0.053929 ... 0.374044 -0.366087 \n",
"target -0.385832 0.360445 -0.483725 0.175260 ... -0.507787 0.333461 \n",
"\n",
" LSTAT target \n",
"CRIM 0.452220 -0.385832 \n",
"ZN -0.412995 0.360445 \n",
"INDUS 0.603800 -0.483725 \n",
"CHAS -0.053929 0.175260 \n",
"NOX 0.590879 -0.427321 \n",
"RM -0.613808 0.695360 \n",
"AGE 0.602339 -0.376955 \n",
"DIS -0.496996 0.249929 \n",
"RAD 0.488676 -0.381626 \n",
"TAX 0.543993 -0.468536 \n",
"PTRATIO 0.374044 -0.507787 \n",
"B -0.366087 0.333461 \n",
"LSTAT 1.000000 -0.737663 \n",
"target -0.737663 1.000000 \n",
"\n",
"[14 rows x 14 columns]"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.corr()"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"from sklearn.preprocessing import StandardScaler\n",
"scaler=StandardScaler()\n",
"X=scaler.fit_transform(X)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 1. OLS\n",
"- sklearn"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0.7406077428649428"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from sklearn.linear_model import LinearRegression\n",
"regr=LinearRegression().fit(X,y)\n",
"regr.score(X,y)"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([-0.92041113, 1.08098058, 0.14296712, 0.68220346, -2.06009246,\n",
" 2.67064141, 0.02112063, -3.10444805, 2.65878654, -2.07589814,\n",
" -2.06215593, 0.85664044, -3.74867982])"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"regr.predict(X)\n",
"regr.coef_#Coefficients"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"df1=df.iloc[:,:-1]"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"def vif(df, col_i):\n",
" cols = list(df.columns)\n",
" cols.remove(col_i)\n",
" cols_noti = cols\n",
" formula = col_i + '~' + '+'.join(cols_noti)\n",
" r2 = ols(formula, df).fit().rsquared\n",
" return 1. / (1. - r2)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"- statsmodels"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"OLS Regression Results\n",
"\n",
" Dep. Variable: | target | R-squared: | 0.741 | \n",
"
\n",
"\n",
" Model: | OLS | Adj. R-squared: | 0.734 | \n",
"
\n",
"\n",
" Method: | Least Squares | F-statistic: | 108.1 | \n",
"
\n",
"\n",
" Date: | Thu, 30 Nov 2017 | Prob (F-statistic): | 6.95e-135 | \n",
"
\n",
"\n",
" Time: | 16:36:13 | Log-Likelihood: | -1498.8 | \n",
"
\n",
"\n",
" No. Observations: | 506 | AIC: | 3026. | \n",
"
\n",
"\n",
" Df Residuals: | 492 | BIC: | 3085. | \n",
"
\n",
"\n",
" Df Model: | 13 | | | \n",
"
\n",
"\n",
" Covariance Type: | nonrobust | | | \n",
"
\n",
"
\n",
"\n",
"\n",
" | coef | std err | t | P>|t| | [0.025 | 0.975] | \n",
"
\n",
"\n",
" Intercept | 36.4911 | 5.104 | 7.149 | 0.000 | 26.462 | 46.520 | \n",
"
\n",
"\n",
" CRIM | -0.1072 | 0.033 | -3.276 | 0.001 | -0.171 | -0.043 | \n",
"
\n",
"\n",
" ZN | 0.0464 | 0.014 | 3.380 | 0.001 | 0.019 | 0.073 | \n",
"
\n",
"\n",
" INDUS | 0.0209 | 0.061 | 0.339 | 0.735 | -0.100 | 0.142 | \n",
"
\n",
"\n",
" CHAS | 2.6886 | 0.862 | 3.120 | 0.002 | 0.996 | 4.381 | \n",
"
\n",
"\n",
" NOX | -17.7958 | 3.821 | -4.658 | 0.000 | -25.302 | -10.289 | \n",
"
\n",
"\n",
" RM | 3.8048 | 0.418 | 9.102 | 0.000 | 2.983 | 4.626 | \n",
"
\n",
"\n",
" AGE | 0.0008 | 0.013 | 0.057 | 0.955 | -0.025 | 0.027 | \n",
"
\n",
"\n",
" DIS | -1.4758 | 0.199 | -7.398 | 0.000 | -1.868 | -1.084 | \n",
"
\n",
"\n",
" RAD | 0.3057 | 0.066 | 4.608 | 0.000 | 0.175 | 0.436 | \n",
"
\n",
"\n",
" TAX | -0.0123 | 0.004 | -3.278 | 0.001 | -0.020 | -0.005 | \n",
"
\n",
"\n",
" PTRATIO | -0.9535 | 0.131 | -7.287 | 0.000 | -1.211 | -0.696 | \n",
"
\n",
"\n",
" B | 0.0094 | 0.003 | 3.500 | 0.001 | 0.004 | 0.015 | \n",
"
\n",
"\n",
" LSTAT | -0.5255 | 0.051 | -10.366 | 0.000 | -0.625 | -0.426 | \n",
"
\n",
"
\n",
"\n",
"\n",
" Omnibus: | 178.029 | Durbin-Watson: | 1.078 | \n",
"
\n",
"\n",
" Prob(Omnibus): | 0.000 | Jarque-Bera (JB): | 782.015 | \n",
"
\n",
"\n",
" Skew: | 1.521 | Prob(JB): | 1.54e-170 | \n",
"
\n",
"\n",
" Kurtosis: | 8.276 | Cond. No. | 1.51e+04 | \n",
"
\n",
"
"
],
"text/plain": [
"\n",
"\"\"\"\n",
" OLS Regression Results \n",
"==============================================================================\n",
"Dep. Variable: target R-squared: 0.741\n",
"Model: OLS Adj. R-squared: 0.734\n",
"Method: Least Squares F-statistic: 108.1\n",
"Date: Thu, 30 Nov 2017 Prob (F-statistic): 6.95e-135\n",
"Time: 16:36:13 Log-Likelihood: -1498.8\n",
"No. Observations: 506 AIC: 3026.\n",
"Df Residuals: 492 BIC: 3085.\n",
"Df Model: 13 \n",
"Covariance Type: nonrobust \n",
"==============================================================================\n",
" coef std err t P>|t| [0.025 0.975]\n",
"------------------------------------------------------------------------------\n",
"Intercept 36.4911 5.104 7.149 0.000 26.462 46.520\n",
"CRIM -0.1072 0.033 -3.276 0.001 -0.171 -0.043\n",
"ZN 0.0464 0.014 3.380 0.001 0.019 0.073\n",
"INDUS 0.0209 0.061 0.339 0.735 -0.100 0.142\n",
"CHAS 2.6886 0.862 3.120 0.002 0.996 4.381\n",
"NOX -17.7958 3.821 -4.658 0.000 -25.302 -10.289\n",
"RM 3.8048 0.418 9.102 0.000 2.983 4.626\n",
"AGE 0.0008 0.013 0.057 0.955 -0.025 0.027\n",
"DIS -1.4758 0.199 -7.398 0.000 -1.868 -1.084\n",
"RAD 0.3057 0.066 4.608 0.000 0.175 0.436\n",
"TAX -0.0123 0.004 -3.278 0.001 -0.020 -0.005\n",
"PTRATIO -0.9535 0.131 -7.287 0.000 -1.211 -0.696\n",
"B 0.0094 0.003 3.500 0.001 0.004 0.015\n",
"LSTAT -0.5255 0.051 -10.366 0.000 -0.625 -0.426\n",
"==============================================================================\n",
"Omnibus: 178.029 Durbin-Watson: 1.078\n",
"Prob(Omnibus): 0.000 Jarque-Bera (JB): 782.015\n",
"Skew: 1.521 Prob(JB): 1.54e-170\n",
"Kurtosis: 8.276 Cond. No. 1.51e+04\n",
"==============================================================================\n",
"\n",
"Warnings:\n",
"[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.\n",
"[2] The condition number is large, 1.51e+04. This might indicate that there are\n",
"strong multicollinearity or other numerical problems.\n",
"\"\"\""
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"lm = ols('target ~ '+'+'.join(dataset.feature_names),data=df).fit()\n",
"lm.summary()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 2. 岭回归(ridge)\n",
"- sklearn"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"from sklearn.linear_model import Ridge\n",
"\n",
"ridge = Ridge()\n",
"alphas = np.logspace(-2, 5, 1000, base=10)\n",
"coefs = []\n",
"scores=[]\n",
"for alpha in alphas:\n",
" ridge.set_params(alpha=alpha)\n",
" ridge.fit(X, y)\n",
" coefs.append(ridge.coef_)\n",
" scores.append(ridge.score(X,y))"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAYQAAAEaCAYAAAAR0SDgAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzsnXd8HEfd/9+ze02nu1MvlmRJlnvvTpzeE1IIPfBACCQQ\n4KGXBwIPPIQHAoQHeCDkBzyBEEoISYCQBBJIHEK6U9ziuDfJRb3retmd3x+7kk6yZMmy5JOted9r\nXltmduZ7u7Pz2Sk7K6SUKBQKhUKhZdoAhUKhUEwOlCAoFAqFAlCCoFAoFAobJQgKhUKhAJQgKBQK\nhcJGCYJCoVAogCksCEKInwshvnYMfymEmHUybRorQogsIcRfhRDdQog/2vu+JYRoE0I0CSEqhRAh\nIYQ+QjznCiF2nxyrJxdCiBIhxHNCiKAQ4gcnOe2QEKLmJKd5VJ4ZxTHPCCE+NNG2jTdCiAuEEEdO\n4Pj3CiGeHE+b7Hi/IoT45XjHeyI4Mm3ARCGEqANKAAMIAf8APiGlDAFIKT+aOevGnXdg/dcCKWVK\nCDEd+DxQJaVsscP4RopESvk8MHc8DLLP/4eklE+NR3wngZuBNiAgJ/DlHCHEM8C9Usq+gkBKOeK1\nmQAG5JnBnkKIW4FZUsr3nWzDJhtSyt8Dvz+ROIQQF2Bd94q0eL99gqaNO6d7DeEa+2ZbBiwHvpxh\neyaKKmBP2o1dBbSniYFiZKqAHRMpBpOMwXkmYwghJu2D6WS2bUKQUp6WDqgDLknb/h7wWNr2r4Fv\npW3/B9AINAA3AhLrCQmgAPgr0AO8BnwLeCHt2HnAOqAD2A286xh25QP32Ol0Ag+n+X0Y2GfH8yhQ\nNlIawDeABJDEqgl9BIgCpr39a6Da/j+OY9kAXAAcSUuzDPgz0ArUAp9K87sVeBD4LRAEtgOrbL/f\n2elHbRu+CHiAe4F2oMs+jyXDnKNbgP12vDuAt6b5zQKeBbqxnugfOMa5/iPQZId9Dlg4TLhf2+cv\nYdt7yRD5Y/C5qQO+AGy1438A8KT5XwtssfPMfuAK4DasGmvMTudOO2x6Xsuxz2krcBD4KqDZfh8A\nXgC+b1+3WuBNx/j/84Fn7PO9HXjzMHnmpkHHXTHI/3V7/zPAN4EX7WvzJFCYdtyZwEt2eq8DF4xw\nf37JPn9xrNaKY+W3LOA39v/eaeep9OvRdw4H399DXLtj5a8P2P/vf7HutW/1nnfb/4v2Oel1SeDX\ntt8HbduCwAHgI/b+bAbekyH7v96KVWvoTfvN9nXqss/1/NHmt3ErN8c7wsniSBMEoAJ4A/jxMBnm\nCqAZWGRfvPsYeJPebzsvsAA4nJZBsu3tD9qZegVWQTVc4fOYfTHzACdwvr3/Ivu4FYAb+Anw3GjS\nGCJjDb4BqhkoCMPZ0HccVu1xI/BfgAuosTP55WlpxoArAR34DvDyUOff3v4Ilqh67fArsZpnhjpH\n77RvGA24DggD02y/PwD/aft5gHOOkQduBPz2+fwRsOUYYfvywzDbg89pHfCqbWc+VkHwUdtvDdZN\ne6ltZzkwz/Z7BqspLT3t9Lz2W+AR2+5qYA92gY1VMCWxHhx04GNYoi6G+D9OrIeLr9jX7yKsgmru\nUHlmiOOP8rdt3w/MwSqgnwG+a/uVY4n9lfZ/vtTeLjrG/bkFmG7HNVJ++y7Wg0Ae1v28lbELwrHy\n1weAFPBJrHstizRBGPQfptvn/0p7+ypgJiCA84EIsGIoGwafY/uchu3z5sQSnn2Aa6T8Np7udG8y\nelgIEcQqTFuArw8T7l3APVLKbVLKMNaFAsDuiH078HUpZURKuQPrSaWXq4E6KeU9UsqUlHIT1lPO\nOwYnIoSYBrwJ60J2SimTUspnbe/3Ar+SUm6SUsaxmrfWCiGqjyeNkRjBhnRWY93M/y2lTEgpDwC/\nAN6dFuYFKeXjUkoDq1aw9BhJJ7FqWrOklIaUcqOUsmeogFLKP0opG6SUppTyAWAvViHbG08VVu0p\nJqV8YbgEpZS/klIG7fN5K7BUCJFzDBuPlztsOzuwxG6Zvf8mrGu5zv4P9VLKXSNFZue164Av23bX\nAT8Ark8LdlBK+Qv7nP8GmIbVFzCYM7H6jb5rX7+ngb8B7xnbX+3jHinlHillFKuG2Puf3wc8bucH\nU0q5DtiAJRDDcYeU8rAd10j57V3At+08ewS4Y6x/YIT8BdAgpfyJfa9Fh4pDCJEFPIz1kPm4He9j\nUsr90uJZrBrUuaM06zqsFox1UsokVi0wCzgrLcxw+W3cON0F4S1SSj+WOs8DCocJV4YlGr0cTFsv\nwnpSSPdPX68CzhBCdPU6rMK9dIh0pgMdUsrOYWzoS1dand/tWE9ex5PGSBzLhnSqgLJBaX6FgYVP\nU9p6BPAco831d8ATwP1CiAYhxPeEEM6hAgoh3i+E2JKW7iL6r90XsZ7AXhVCbBdC3DhMHLoQ4rtC\niP1CiB6sJywYPg+MhcH/v7dzeDrWk/TxUoj1dJye/w5i5YGj0pRSRuzVoTqly4DDUkrzGHGNheH+\ncxXwzkH55RwswRqOwffRsfLb4Hs0ff24GCF/jTbuu4HdUsrb0+J9kxDiZSFEhx3vlYw+vw2+/03b\njiGvPQPP/bgxJTpMpJTPCiF+jaW6bxkiSCPWTdxLZdp6K1YVsgKr+s6gsIeBZ6WUl47ClMNAvhAi\nV0rZNcivAeumAEAIkY31RF1/nGmciA2Dw9VKKWePMZ0BnbP2U883gG/YtZ7HsfpC7k4PJ4Sownoy\nvBhYL6U0hBBbsEQAKWUTVpMJQohzgKeEEM9JKfcNSv/fsNrxL8ESgxys9mcxSvvDWM1bvRyP+B7G\najoYimN1WrfRXwPaYe+rxMoDx0sDMF0IoaWJQiX9eXgkjrdz/TDwOynlh4/jmPQ0RspvjVj3YO95\nmT7IP8LR1+uooaYj5a8h7DoKIcQtWKPxzknb58aqtb8feERKmRRCPJwW70jnswFYnBafwPqPY7n2\nY+Z0ryGk8yPgUiHEUNWsB4EPCCEWCCG8pDUt2VXzh4BbhRBeIcQ8rIvey9+AOUKI64UQTtutFkLM\nH5yIlLIR+DvwUyFEnh32PNv7PuCDQohldub6NvCK3Www6jRGYgQb0nkV6BFCfMkes64LIRYJIVaP\nMqlmrHZgAIQQFwohFtvNIj1YBZ8xxHHZWDdPq33cB7Ge4HrjeacQonfoXqcddqh4/Fidle1YBcXx\nDvHbAlwphMgXQpQCnzmOY+/GupYXCyE0IUS5nW9g0HlJx85rDwK3CSH8duH1OazO+OPlFSxR+6J9\njS8ArsHqCxsNzUC1EGK0ZcS9wDVCiMvtvOIR1vj/ihGPtBgpvz0IfNnOs+XAJwYdvwX4N/u4K7Da\n8IfimPlrJIQQbwI+hdX6kN6c5MLqq2oFUna4y9L8m4GCYzRZPghcZecZJ9aw8ThWJ/1JY8oIgpSy\nFavD7qiX0aSUf8cSjKexOnKeHhTkE1hPmE1YTR9/wLpYSCmDWBf+3Vgq3wTcjpU5huJ6rMJwF1a/\nxmfseP5p2/ZnrKehmXacY0ljJIa0IR27cLoGq52yFuvp9ZdY52E0fAf4ql0t/wLWE9ufsMRgJ1YH\n4VEFnd1H8wNgPdZNtBhr1Ecvq4FXhBAhrJFYn5ZS1g6R/m+xquD1WE+VL4/S7l5+hzVSpg6rLfiB\n0R4opXwVawDA/2J1Lj9Lf+3vx8A7hBCdQoih2sE/iVWQH8AaUXQf8KvjtB0pZQJr1MqbsK7dT4H3\nj6Yvw6b3ZbV2IcSmUaR3GKtG9hWsQvEw1si9UZUxo8hv/431xF8LPIWVl+JpUXzaPr63OfXhYdIZ\nKX+NxHVYzcg7hfVCYUgI8XP7Hv0UVsHeiVVDfTQt3V1Y5cYB+54oG2TXbqx+mJ/Y//0arGHzieOw\n7YQRUh5vzVAhhLgdKJVS3pBpWxSKqYgQ4mPAu6WUw9UEFGNgytQQTgQhxDwhxBJhsQZrFMlfMm2X\nQjFVEEJME0KcbTfBzcVqUlH34DgzJTqVxwE/VnWvDKuJ5QdYY8UVCsXJwQX8HzADq1nofqxmMMU4\nopqMFAqFQgGoJiOFQqFQ2ChBUCgUCgVwivUhFBYWyurq6kyboVAoFKcUGzdubJNSFo0ULmOCIITw\nYM1A6bbt+JOUcri5hgCorq5mw4YNJ8M8hUKhOG0QQhwcOVRmawhx4CIpZch+M+8FIcTfpZTH+wKR\nQqFQKMaBjAmCtIY3hexNp+3UkCeFQqHIEBntVLbnHdmCNbZ/nZTylSHC3CyE2CCE2NDa2nryjVQo\nFIopQkYFwZ4XfxnWLIZrhBBHTTIlpbxLSrlKSrmqqGjEPhGFQqFQjJFJMezUnob5GawvlykUCoUi\nA2RMEIQQRUKIXHs9C2ve+tHOxKhQKBSKcSaTo4ymAb+x58fXgAellH/LoD0KxQmTSiSIR8IkYzGS\n8RgJe2mmUghNQwiBEBqaQ8eT7cPj9+Px+XG6xjqTuUIxfmRylNFWYHmm0lcoRouRShLp7ibS3UW4\nq5NwdyeRrt71LiJpy3gkPKY03N5sckvLyC2dRt60cqbNmkPprDl4A+P5CWiF4ticUm8qKxTjhZFK\nEe3pHligd3cR6e4k3NW/DHd3EQv2DBmHK8tLdm4u3pw8iiqr8S5eRnZOrvXE7/FYzm0tdYcDaUqk\nlEjTwEiliIdDxEIhosEeQp3tdDY20LR/D3vWv0DvVy/zppVTvWwFM1ecQcWCheiOIT9DrVCMC0oQ\nFKc0UkpSyQSxUJB4yC5gw73rQWJ2oRsLBYkGu+3CvovoMIW8w+0mOzcPb04uedPKqZi/CG9OrrUv\nN5fsnLy+9Ylq5knGYjQf2EfD3l0c2bmNN556gs1//yuebB/zzrmARRdeSsmM4T7ZrFCMnVNq+utV\nq1ZJNXVF5rGeck1M00SaRtq6OeS6kUxipJLWMpkk1buetq93PZVMYqZSpJJJkrGo1QYfi9rt8VGS\nsVj/vpi1T5rmsLYKTbPa6n1+PH6/XaDn4s2xnux7n/Czc3Lx5ubi8mSdxDM5OpLxGAffeJ3dLz3H\n3ldfwkgmKZ01hzXXvoNZq85EaJNisKBiEiOE2CilXDViuKkgCK/8/Uc01K7HehFaWDslSARICVIA\nsn8b0f/OtEx7fbpvn2DwaZOy1986ttdfDjiuN63e/aIvoDRBSs2OW4AUmCZgCrD9ZJqfNOiLy4o6\nzaC+tHtXZFq4gYFkmqFSmqMq7I/68xOAEBpOjweXx4PTk2WvZ9lNMVn2fqtJxuXJsgp8n98u/H19\n266sLIQQIyd4ihALhdj5wr/Y+PgjdDc3kV8+nbOvex+z15x1Wv1PxfiiBCGNF568nrjjpQmwKPNY\nQqQBmi0wOpgOpNRBOsB0WPukA0wdKR1969bSBaYbaboQ0g2mG4EHQRZCehAiCyFc6JqO0DQ0TbNG\ny2gamr3v6P0Dw+gOB7rTaTmHtXTYy759g8Jouq4KuGNgGga7X36BVx56gPYjh6iYv4gL3v8hSmpm\nZdo0xSRECUIayWQnqVQY66lY2k/FfY/0A7Zl3+O97TdgexT+dmfgWI6T0rBd6qilKVNp20OHkWYK\nUyYxjRimGccwrWWfM2IYZhzTjGGaCQwjimlGRzx/mubB5SrE5SrA5SzA6Sqw1l2FuF1FeDzleDzl\nuFyFCKGaL04mpmHwxtNP8OID9xINBVl55bWcfd37cLo9mTZNMYlQgqAYFVIapFIhUqkgKcNaGqlg\n/75UkGSyg0SynUTCcslEO4lkO1KmBsQlhAuPZxoeTzlZWdPJ9s7Emz2TbO9sPJ5pSiwmkHgkzPP3\n/ZrX1/2dvGllXP7Rz1A+b0GmzVJMEpQgKCYUKSWpVA/xeBOxWAOxWD2xWD3RWD2xWAPR6EGSyY6+\n8JqWRXZ2DX7fQvyBxQQCS/Blz0XT1DDK8eTQttd54ud3EGxr5ex3X8+aN79ddTorlCAoMk8i0UE4\nsp9IeB9h2/UEt5FKdQGgaS58vgXk5a4hL+9McnJW4XBkZ9jqU59ENMKT//cTdq9/npoVq7ni458j\ny+fPtFmKDKIEQTEpkVISix2mp+cNeoJb6e7eQk/P60iZRAgHgcBS8vPPoajwUny+eapjeYxIKdny\n5GM885tfEigq4m233EretPJMm6XIEEoQFKcMhhGlq3sjnZ3r6excT0/PVkDi8ZRTVHgpRUWXkZu7\nWvVBjIH63Tt55H++iZSSa7/wn1TMP2qGecUUQAmC4pQlkWijre1pWlvX0dH5AqaZwOMuo3TaW5lW\n+ja83upMm3hK0dXUyEO3f4Oeliau+PjnmHfWeZk2SXGSUYKgOC1IpcK0tf2TxqaH6Oh4AZDk5qym\nouJ6ioouR9PU7CujIRoK8uj3b+PIru1c9pFPsvjCyzJtkuIkogRBcdoRizfR1PQIDfX3E40dwu2e\nRkXF9ZSXXYfTmZtp8yY9yXiMR3/wbepe38RFN36U5ZdfnWmTFCcJJQiK0xYpDdra/sXhI7+ms3M9\nuu5j+vQbqJx+oxKGEUglk/ztR7ezf8PLnH/9Tay6+q2ZNklxElCCoJgSBIM7qTv4U1paHreF4QNU\nVX4Ih0MNsxwOI5Xi8Tt/wJ71z3PxTf/OssuuzLRJiglmtIKghm0oTmn8/vksXvQTzljzOAX551JX\ndycvrb+I+vr7kdLItHmTEt3h4MpPfJ6alWv4590/ZcdzT2faJMUkQQmC4rTA55vL4sV3snrVw3i9\nNeza/Z+8+tq1dHa+nGnTJiW6w8E1n7mFykVL+cdPf8TeV07PyR8Vx4cSBMVpRSCwmJUr7mfRwjtI\nJbvZtPm97Nh5C8lkd6ZNm3Q4XC6u/Y+vUjp7Dn/78fc4tG1rpk1SZBglCIrTDiEEJSVXceaZ66iq\n+ihNTQ/x8iuX09LyRKZNm3S4PFm87Uu3kls6jUd/cBtthw9m2iRFBlGCoDht0XUPs2b+B6tWPYTL\nVcQb2/6dN7Z9kmRy6M9nTlU8Ph9v//I3cLhcPPTdWwl1dox8kOK0JGOCIISYLoT4lxBipxBiuxDi\n05myRXF6E/AvYvWqh6iZ8VlaW5/g1deupqtLjVZLJ1BUzFu/9HViwSB/uf0bJGIjfydDcfqRyRpC\nCvi8lHI+cCbwcSGEmsBdMSFompMZMz7ByhUPAhobN72HA7U/USOR0iipmcXVn/0SrXW1/O1Ht2Ma\n6txMNTImCFLKRinlJns9COwE1HSMigklJ2cZZ6z5K6Ul11Bb+yO2vH4TyWRXps2aNNQsX83FN32M\n2s0beO7392TaHMVJZlL0IQghqoHlwCtD+N0shNgghNjQ2tp6sk1TnIY4HH4WLvwh8+Z9m87OV3j1\ntbcQDO3KtFmThqWXvonlV1zDxsceZtszT2XaHMVJJOOCIITwAX8GPiOlPKq3T0p5l5RylZRyVVFR\n0ck3UHHaUl52HStX3Ic0E2zY8A6am/+WaZMmDRe8/0NULlrKU7+4k4Y9OzNtjuIkkVFBEEI4scTg\n91LKhzJpi2JqkpOznNWrH8HvX8C27Z+mtvZOTqXpXCYKTde5+rO34C8o4pHv30awvS3TJilOApkc\nZSSAu4GdUsofZsoOhcLtLmLF8nspLXkLB2r/l127voJpJjNtVsbJ8vl5yxe/RioR5+H/+SbJeCzT\nJikmmEzWEM4GrgcuEkJssZ2aZUuRETTNxYIF36e6+uM0ND7I61s/TCoVzLRZGaegopIrP/kftNQd\n4Imf/VjVnk5zMjnK6AUppZBSLpFSLrPd45myR6EQQjCz5nPMn/ddOjvXs3HTe4gnVFPJzJVrOPc9\nN7B7/fO8+sifMm2OYgLJeKeyQjHZKCt7J0uX/IJIpI6NG68jFmvItEkZZ/Wb387cs87jhft/y4HN\nr2XaHMUEoQRBoRiCgoLzWL78NyST7WzY+C4ikdpMm5RRhBBc/tFPUVxVw+N3fJ+OhvpMm6SYAJQg\nKBTDkJuzkhXL78M042zYeN2Uf1fB6fZw7Rf+E03XeeR/vkk8Es60SYpxRgmCQnEM/P4FrFxxP5rm\nZNOm99DTM7WniA4UFXPN575MV3Mjj//k+0jTzLRJinFECYJCMQLZ2TNZueIBHI4cNm+5gZ6eNzJt\nUkaZvmAxF9zwYQ5seo0XH/x9ps1RjCNKEBSKUZCVVcGK5b/H4Qiwecv76Qluy7RJGWXZZVex+KLL\neOUvD7B7/QuZNkcxTihBUChGSVZWuS0KfjZvfj/B4PZMm5QxhBBcdOPHmDZnHv/42f/SUncg0yYp\nxgElCArFcdBXU9Cz2bT5/QSDOzJtUsZwOJ28+XNfwePN5pHv30akR32m9FRHCYJCcZxkZU1nxYrf\no+tZbNp8/ZQefeTLy+fNX/hPwl0dPPZj9Q2FUx0lCArFGMjKqmTlivvQdQ+bN7+fcHjqNplMmzWX\nSz/8CQ5t28qzv7s70+YoTgAlCArFGMnKqmT5st8BsHnL9USjRzJsUeZYeP7FrLjyWjb9/VG2/Wtd\nps1RjBElCArFCZCdXcPyZb/BMCJs3nI98XhLpk3KGOe/70brGwq//H807t2daXMUY0AJgkJxgvj9\n81m29FckEm1s3vJ+EomOTJuUETRd5+rPfAlffgGP/uA2Qp1T8zycyihBUCjGgZyc5SxZchfR6CG2\nvP7BKTt1dpY/wLVf+CqxSJhHf3AbqaT6rsSphBIEhWKcyM9by+JF/49QaBdbXv8QhhHJtEkZoahq\nBm/6+Odo3Lubf979U/UNhVMIJQgKxThSWHghCxf8kO7uTWzd+jFMM55pkzLCnDPO5sy3Xce2f61j\nyxPqW9WnCkoQFIpxpqTkKubP+w4dnS+wbdunp+znOM9653upWbmGf/3mFxzePrUnBTxVUIKgUEwA\nZWXvYM7s/6K1bR07dn4RKafeC1tC07jyE18gr7SMR3/4HdrrD2faJMUIKEFQKCaI6dNvYGbNF2hu\nfpRdu782JdvS3V4vb/3S19F0nYe+c6saeTTJUYKgUEwg1dUfo7rqYzQ0PMDefbdNSVHILZ3GW7/0\ndaI93fzlu98gEZ2ane2nAkoQFIoJpqbm81RU3MDhw/dwoPZHmTYnI5TOnM01n72F1kO1PPrD72Ck\npma/ymTHkcnEhRC/Aq4GWqSUiyYsoSe/Bpt/15tqb+Kj2D6esOnbHGf4tO3jTms0aQvQdBB62lLr\n39YcR+8bLqyww+tOcLhBd4HDk7aetnS4QXf373Nlg8sHbh84s614pwBCCObM/iqmEaWu7k503Ut1\n1UcybdZJZ8byVVx28yd54uc/5smf38EV//5ZxBTJA6cKGRUE4NfAncBvJzSVsuWQikFfdd1eHmt7\nxLCM4D+W7eM9llGGN8E0QBr20oRUIm3bXg4IY4BpHh2md2kkLHciOLMtkXD7LKHoFQtPLnjzISvf\nXuZZS2+BtS+7CJyeE0v7JCOExrx538IwIuzf/z103cv0iuszbdZJZ9GFlxLsaOOlB3+PO9vHhR+4\nGdH3UKPINBkVBCnlc0KI6glPaNHbLKcYX0zTFoa4JTBGHFJxa18qlrbP3k5GIBGCeAgSYWt98Hao\nBdr2QKQT4seYXz8rD/xlEJgG/tL+9UAF5M+A3EqrZjKJEEJnwYLvY5gx9uy5FV3PomzaOzJt1knn\nzLe9m3g4zMbHHsbhdnPue25QojBJyHQNYUSEEDcDNwNUVlZm2BrFADQNNM/EPa0bSYh2QqQDoh39\ny1ALBBuhpxGCDdC0DcItVs2nDwE50y1xyJ8B+TVQMBuK50NuVcaaqzTNyaKFd7B1683s3PlldC2L\nkpKrMmJLphBCcP71N5FKxHntkT/hdLtZ+/b3ZNosBaeAIEgp7wLuAli1atXUG6IxldGd4Cu23EgY\nKQg1Q089dNRCxwHLddbCzr9CpL0/rDMbiudB8QIoWQgli6BsGbj9E/df0tB1N0uW/IzNWz7I9h2f\nQ9ezKCy86KSkPVkQQnDxjR8jlUjw0oO/x+Fys/oaVYvPNJNeEBSKUaE7IKfcctPXHO0f64a2vdC8\nHVp2WMvdjw8cbFA0D8pXQvkKa1my0BKliTBX97Js6S/ZtPl63tj2cZYu+SX5+WdPSFqTFaFpXPaR\nT5FMJHju3l8hTZM11069JrTJxNQQhJ4Gq7khnSHbLMUkCzP4kLHEM8QxUyWM0PpHRjk8MG2ZVdCn\nhwu1QONWqN9ouT3/gC33Wn6OLEtcqs+BqrOhYtW49ks4HH6WL7uHTZvey+tbb2bpkrumnChous6V\nn/g8Qgiev+/XJOMxznrne1WfQoYQmXxRRgjxB+ACoBBoBr4upRz2G3yrVq2SGzZsOP6EHvs8vPbL\nMVqpOP0YYRgugJmy+jAGjKYSVrNSVh74SyC7BJxZ9hBbT/9QW2cWuAO284MnfT3HWne4+qxJJNrY\ntPl6otGDLFlyFwX555z8U5JhTNNg3V13su1f61h51Vs4//qblCiMI0KIjVLKVSOFy/Qoo5PTk7Ti\nBphxfnrKQxkzeMc4hRmCCUtruOGop3qYwYeMJh5z6OG2Qw2hHW5/73oyatUkQs1WX0TXQcsJzRIC\n3QkIS0BS0UGd28PgzgFfEWQX4couYnVWDY3BI7Q2/BvO+Z8jMP1qyKk45YbXjhVN07ns5k/idHvY\n+NjDJKIRLvnQx9F0PdOmTSkyWkM4XsZcQ1AoxpNoJxx4FvY9BfuftjqyweqDmHkx1JxvdVQbcYj1\nQLwH4kF7PQixLgi3WSOjQq0QbrXWo51Hp+UrsYbQ5lZB0VwonGMt82cOqGWcLkgpefGBe3nlLw8w\nY9lKrv7Ml3BleTNt1inPaGsIShAUimGQqRQykUAmEpiJBDKRtLaTib79Mh5Hth7APLQReeR1ZMse\nZNJA4kLmzkTm1GAGqpCap//4wS5pxQ8mwh+j+8wdOBwhivaX4o0JHHoYXQ/ioKffNjRkVikydyaU\nL0OrWYuoXD26EVmnAFuf+gdP3f1Tiipn8NYv/Re+/IJMm3RKowThNGfAdTuRdQY1tpxAXNbL1iYY\nBtI0wTSRhtUcIw1zoJ9hIE3Z72dab0b3+fUe1xfGsPYnkwNdInn0vmO5oQrkRAIzmTiqwMYcRdPP\nqJAIXSAESr7JAAAgAElEQVRcToTbg/BkI9wuNJcL4XQhXJYDS4RSIkrj1XtIFEYpenQa3u1uzFgM\nGenG6YnhzkniDqRwBVL2ev/U2qmEi6RZhJFdg5y2HDH7PFwzF+Asm3bKTRNRu3kDf/3f7+Lx+XnL\nF79GcXVNpk06ZVGCkEbz7d+j609/sjZGU7ClHzzsNBEnGNcxCuhj+imOjdOJGM45HH2Fr3A5Ea6j\nC+Uh/XudcwT/wc7pRAseggP/ROx/CupeBDNpTdFRcwHMvhRmXWoNlR1EMtnD66/fSHfP68yf923K\nyt4JgBmPYwaDmKEQRjBIqr2dVONBRNMbaF170GMHcdKC0xNBCEuD411Oot1eUp6ZyIozcC1Yg2fR\nQtyzZiEmeRt9c+1+Hr79G8TCYS67+RPMP/fCTJt0SqIEIY2ef/yDyKZNfdsDRy+krYtRrB91yHDh\nRhMvQ+8fk41DxzUq+0YZ76ji0jSEbg/31ARC00HX0paW34Awum4fp4PoP95a2sfoulWgH6PAx+mc\n3CNT4iGofQ72Pgl710HPEWt/8UJLHGZfZg1ztd99MIwIW9/4dzo6nmfWrFuoqvzwqJOS0S6MbU9h\n7noa0bgRPbIPjRQAybBOuMVFtDsHs3Q17uXn4V21Es/ixWiuydcvEe7q5G8/up0jO7ex/IprOP/6\nm9AdU2PE/HihBEGhmMxICa27+sXh0HprqKs7ADMvtMRh1iWY2fls3/F5Wloep6rqY8ys+fzYRM9I\nQfMbyLqXLJGofxnNCAEQ79GJNLuJdAWg6my8515K9rnn4qqoGOc/PXaMVIrn77uHjY89QtncBVz1\nyS8QKDo9+ktOBkoQFIpTiVgPHHjGEoh9T1lzNQGULkHOvoRdOUdo6HmasrJ3M2/ufyPECTb1mCY0\nb4Pa5zD3/BNx+CWEEbNM6XQQbnaToAp9xdX4r7gGz+LFk6L2tfPFZ1l3151omsbFN32M+edckGmT\nTgmUICgUpypSWoX13nWWO/wKUhrsrwlwsMJFoSxnYdnncFSeC9njNPrGSELDZuSBZ5E7n0Q0b0LI\nFNKEaJuLaKQAMftiPJffQNaKVRntoO5qbuLvd/6Ahj07mXf2+Vx848fw+HwZs+dUQAmCQnG6EO2C\n2mfh0Csc6V7H7sJ2/CGDpdt7cPtmwLQlULoYSpdY7z/4S0c3FcqxSEbh0MuYu57E3PZ39EgtQoCR\nFMS6fZgla3Be+AHcZ12dEXEwDYNXH/4jL/3pPrL8AS644cPMO+u8SVGLmYwoQVAoTlPamp9g247P\n4ZAOlnbMwH/kgPXmdC/eQusluYKZtptlvciWP2PsczFFOjB2PUVq/QNoTa/g1IMApBJOUoGFOFa/\nHcfKt0Lu9HH4h6Onpe4AT/7fT2g+sJfqpSu45EP/Tk5x6Um14VRACYJCcRoTDO7g9a0fJpUKsmjR\nHRR6l1kzuDZvg6at1syu7fsh0pZ2lLDefM4ph0CZ9TGh9PXANPCVjuoNaOPwDmJ//z/YvQ63oxFH\nlvXOhuEsRsy7DG3+ZVB9rvWluwnGNA22PPEYL9z/O6RhsOKqa1lz7Ttxe9Ubzr0oQVAoTnNi8SZe\nf/3DhEI7mVnzeaqqPnp0k0m0Czr2W+LQvt8a6tpdb0230V0PyfDREXsL7S/RpbnANOurdP5SS0Cy\n8vs+MpQ8coTQI7/C2PQX3Fo93uIEulMiEVCyGDHrIuu9i8ozrYn/JoietlZe+MNv2PnCM2QFclj7\njvew5OIr1BBVlCAoFFMCw4iwc+eXaW75G0VFV7Bg/u04HKPsYJXS+k5ET701RXxPAwSbrK/Q9TRa\nI52CjdZcS4PRnLZYlPaJh/SVEu/U6X51L4ktL+Bxt5JdliQrP4EQJlJ3IyrPsMRhxgXWR4m08X8x\nrmn/Xp6791cc3vEGOSWlrHnzO1hw/sU4nBPzbYtTASUICsUUQUrJ4cO/Yu++75KdPZMli3+G1ztj\n/BJIJayZXnvFIthki0dj2qdMmyARTLMJIq0ueupzCR1x4A7E8FWk8FeB02HPyeTJsZqVai6wXMGs\nE+8M70tfUrt5A+v/dB9N+/fiyy9g9TVvY9FFl+HyTFwtZbKiBEGhmGJ0dLzItu2fxjSTzJ93GyUl\nV59cA+LBNLGwxaOzDtmyj9DW/fTsihKs96DpEn9FjNxZSdx5Bhpx6/jsYph5keVqzrdqHyeIlJKD\nb2zhlYce4MjObbiyvCy84GKWXXYV+WWT58W7iUYJgkIxBYlG69m+/dN092ymbNq7mDPna+j6JOlc\njQcx63cQWvc43U+vJ7ztCNIw8eQnyZsdJrskjiPL7K8keAth2lJrvqfZl1ojpk6gBtGwZydbnniM\n3etfwDRSVC5ayoLzLmL2mrWn/RTbShAUiimKaSY5UPtjDh78OV5vDYsW3YHfNy/TZh2FEQoRfv55\nguvWEXr2WcxwBOHUyJ2vEZjWiccfROhpGqA5rW9DlK+A2ZfDvKvAdfwFebirkzeefpJt/3qS7pZm\nHC43M1euYd7Z51O1ZBlO9+n3USIlCArFFKej40W27/g8qVQ3NTM+S2XlTSc+5cUEIZNJIhs2EPzn\n04SefppkQwMAzuI8Agt9+Eq68Tga0VLdAw90ZlvvPpQu6Z8DKrtwdGlKScOeXex84Rl2r3+eWLAH\nh9NF5eKlzFx5BjUrVp8232FQgqBQKEgk2tm56yu0tT1FILCcBfNvJzt7ZqbNOiZSSpIHDxJev57w\nSy8RfvkVzKDVYe2cPp3s+aX4SkNkuerRkw2IeM/ACHSXNUS2ZAFUngWzLoGiOccc0WSkkhzesY0D\nG19l/8ZX6WltBiC/rILpCxdTMX8RFQsW48ub+PcqJgIlCGk8sOsBnqt/DgBh/+yNo/b1juMWiKPG\ndKfv6wuPGBBPbxzp/qOKJ+2YvnCD4km3b/A+TWhoQsMhHH3ruqajC8tpQsOhpfkJvc+/b1voaJoV\nh1Nz4tSduHU3Ls2FS+93bt2NU3Na25oLfQKGDirGDyklzc1/Zfeeb2CaEWpmfIbp029C006N8fnS\nMIht20ZkwwaiW7YQ2bIFo9V64U54vXjmzCJ7ZgBvbhcurQFHsgER62Tg10iENaopr9p6i7tiFUxf\nC0Wzj3p7W0pJ++GDHNi8gSM7t1G/azuJaBSAnJJSSmbMoqRmFiUzZlFcM5Msn//knIgTQAlCGne/\ncTdPHnxywFfGpJ1ZpJT962n7+sLJfr8h/Qftk8gB66OJRyL78m66LSPFkx5OSokhDUxpkpIpTGli\njuZj7+OAQzhw6S48Dg/Zzmyyndl4Hd6+9WxnNl6nte1z+shx55Drzu1zeZ48/C4/mji1vuh1qhGP\nt7J799dobVuHL3suc+bcSl7emkybddxIKUnW1xPdvIXo668T27WT+O49fbUIhMBZMY3smblkFSRw\nezpxijZ0swNhxo+O0OGxXrTLqbCGvhbPg5LF1rer/aWY0poi4/CON2jau5umA/v6ahAA/oIi8ssr\nyC+rIK+snPwya92Xlz9pvlI3roIghJgJHJFSxoUQFwBLgN9KKbtO0MgrgB8DOvBLKeV3jxVeNRkd\nH1JKTGliSKNfLMxU3z5TmhimMVBITMsvaSZJGAkSZsJaGgniRrxvPX1/wrT8oqko4WSYSDJCOBm2\n1lP969FUdFhbNaGR48oh15NLYVYhJd4Sir3FFHuLKfWW9q0XeYuUcJwAUkpa255k755vEYs3UFpy\nLbNm3YLbPfm+LZBKpejq6qKnp4fu7m56enqIRCLE43FisRjxeJxUysqzUkrMeAIjFoV4HBGLo8Wi\niEgELZFAM010w8BtxCnKjlGQFSLgCuF3BvFqQTxaGIdIDUhfYlf+dTe4/dY0HL4S8JcQdxXRnsii\nuVvQ0pWirbWbjsaGvpoEgKY78BcU4C8sIlBYTKCwCH9BEd7cPLyBHLw5uXhzcnC6PRM+Kd94C8IW\nYBVQDTwBPArMlVJeeQIG6sAe4FLgCPAa8B4p5Y7hjhmrIMiUaX2b9ygbBmwNWDCE1/GEU7MuHo0p\nTcLJMN3xbrrj3XTGO+mMdfatd8e76Yh10BZtoyXSQnOkmZQ58CZ1aS4q/BVU+iuZHphOlb+K6YHp\nVPorKfOVKbEYJYYRpe7gzzh48BdompPKyg9TOf2Do3/LeZxJJpPU19dz6NAhmpubaWlpob29HXPQ\nd61dLhcejwe3243H48HhcKBpmtW8KgSaplkPNYZBKpWyXDxOKhYjmUiQSKVImCZyiPvTQ4w8usmn\niwAh/ITIMYMECBEgiE9E0MXQte6U1ElKBymcJHGSkC7i0klMOommHEQSOqG4JG7oJA2NpKmRMgSG\n1JC6C6fXjzM7B4c3gMObg8uXi9vnx+3Nxu314s72Ubl4Kf780XWYD2a8BWGTlHKFEOI/gJiU8idC\niM1SyuVjss6Kcy1wq5Tycnv7ywBSyu8Md8xYBaHz4X2EX24cq6njxziJDX19BycQ34D9R38yc0Dc\nmgAhEJrtoQnLf4j9CBD2fjRbGLW0Y3qP1wXCoYG9PGrboSF1iJoxeswg3akeOlNdtCbaaEg0cjh+\nhLroIXpkkKgWJ6bFcTndzM6dzew8y83Jm8Ps3NnkenKHOQGKSKSOfftvp7X1SZzOfGZUf5zy8veg\naWOcFXWUSClpbW1l165d7N27l4aGBgzDACAvL4/i4mKKi4spLCwkEAiQk5NDIBDAMQ7zEkkpSaVS\nxONx4vE40c5Ook1NRDs6iHV3Ew0GiYfDxCNREvEY8USCRDJJUproIo5Ti+FyJHE5krj1BB4tQZYW\nw0uUbKJ4iOMigTvNHe/joSkFKXTLSWvZUPhmFn3qp2P6z6MVhNGe3aQQ4j3ADcA19r4TnRikHDic\ntn0EOGNwICHEzcDNAJWVlWNKKGthAY48Dwxoix8ioBxiQw7nP3xEQ8c9xM4x2CBHGW60tg4VbsBD\ngrSPM7FqWdLq7+hbNyXSZNj90pSQMq2k7f2YIA0Tadh+holMSaRhQupog7KALDRKyWc++cCcIf4c\nGJpJXEsQETEiIkqPtovn9M0kXSYeXxaBQB6F+cWUFpThzvaieR1oWbbLdqK5pl7nuNdbzZLFP6O7\newv7D3yfPXu/yaFDd1NZ+SHKyt457i+1dXR0sGXLFrZt20ZHRwcAZWVlnHHGGVRVVTF9+nS8EzxL\nqRACp9OJ0+nE5/NBQQHMmnVccchEAiMcxgxHMEJBEj09xIJBEpEIsViMzmiEWDRILBEkngxhECJF\njLhIEtdM4kBSs75ybUhh3xsmwjRIygRJEhgiQYoEhjBIksKLm0UTckb6Ga0gfBD4KHCblLJWCDED\nuPcE0x5KNI8qDaSUdwF3gVVDGEtCntl5eGbnjeVQxUlGSgmGRBoSmTIhTSxkSiKTBjJhIhMGMmFg\nJgxkfNB2wiAWiRIOB0mEY5jRFI6gwHvYg06SMAcZYo5PhEtH8znRfU40nwvd70TLdqL7XfZ+F5rf\nhR5wnXbikZOzjBXL76Wj40UO1P6YPXv/m9q6n1BR/j4qKt6HyzW2pgoA0zTZtWsXr776KnV1dQDU\n1NRw1llnMWfOHAKBwDj9i4nDSMSJdDTR0XqEjvYjhLqbiMda6SJKu0PSLlw0mtm0JrPpSPjoSXqJ\nGNOImdUkDQ2ZCiFkF5rsQnN0Ixw9aI4ehCOM0CO2CyP02LA2rHZM/HceRisIl0opP9W7YYvC8D2E\no+MIkP41jQqg4QTjVJziCCHAIRAOwD2+hW5rpJUdjdvZ07CTgy21NLbX44hr+Ewv1Y7pzHbWUKGV\nkmfkoLdHSRzswYwkh6xFCY8DPceFnuNGD1gioee4B2xr2c5Tri8pP/9s8vPPpqtrAwcP/YLaup9Q\nd/DnFBVdSlnZdeTnnYUYZT9NMplk8+bNrF+/ns7OTnJzc7noootYunQpOTk5E/xPRo+UEiMUJ9Jy\niJbmvXR0HCAWOYhBI13uCA0eF/V6HvWpMprCJbSG8wlGZhOPLISYiYgaiGQS4epAc7WhOWutpbsd\nZ3YbrpxuxFF9DxpuEcDrCBBw51KYNYNSbyElvkKKvQXkeXLJcefgc/nwOS2X75n4dyCOqw9h0L4T\n7UNwYHUqXwzUY3Uq/5uUcvtwx6hRRorxJGWm2N2xm9eaXuO15tfY2LyRsP19gOpANWvL1nJ26dms\nDCzDFXNghhIYPb0ujtHdvzRDiaOFQxf9QhFwoQfsZY4L3d+/LpyTt7YRDu+nvuEPNDb+hVSqC4+n\ngpKSayguuhy/f9GQgmcYBlu2bOGZZ54hGAxSXl7O2Wefzbx589AyOAwzGQ0RatpHsGUf7e37iYQP\nYYoGDHcr9VkODmrlHKaKBqOcI6Ey2oN5pIKgBZOIUBLR25ypxdCz6nFlN+L0NqK7mzC0ZiT9AyB8\nTh9VgSoqA5VU+Cr6R81lF1PiLSHfk39SB0CMS6ey3W/wb8A5wPNpXn7AkFJecoJGXgn8CGvY6a+k\nlLcdK7wSBMVEki4QLze9zMamjcSMGA7NwYriFZZAlJ3N3Py5R93M0pAYoQRGd5pQ9CQwu+OkuhOY\n9rZMHj1Kpa+2kS4agYHbms+F0DNX2zCMOK1tT9LY8Cc6u9YjpYHHU05R0WXk551Nbu4qHA4/e/bs\n4cknn6StrY3y8nIuueQSqqurT0pNSUpJIt5OqHUf4bb9RHrqiEQOEknVk3Q0Ybq7iOGhjhkcoppD\nZg0HzZnUJ4pJdku0zjhaVwIt1F+w6w6TgoIuigoa8XobCcpaGiO1mFjXMd+Tz9y8uczNn8vsvNmW\nCPgryXXnTqra4XgJQhUwA/gOcEuaVxDYKqVMDXngBKEEQXEyiRtxNjVvYn3Del5seJE9nXsAqxA4\nq+wszio7i7VlaynMGv3cOTJm9InFgNqGvW72xDGCCRisG4L+fg2fq7+fw+fs79/oXWY7EPrEPX0m\nEh20tT1NS+s/6Ox8EdNMADrJZBktzdlAJcuWvZmFCy9G10f+HOfxkEoFicbqiXYdJNxRS6TnELHY\nEWJGPQmtCTOtDd5Eoyk2n/2ppexhDnudFRxx5yLjJnpbDL01gtYVh4RVcLucsKjcy4rKHNz+WtqM\nrWxtf5UjoSMAZDuzWVK4hGXFy1hStIR5+fNGfe0zjXpTWaEYZ1ojraxvXM+L9S/ycuPLdMSsUTJz\n8+aytmwta8vWsqJ4BR7Hic2WKU2JGU5aItFtCYTRbdc4QkmMUP9yqFFZgDWCajjB6N2XbXWaC7c+\n5qfZZDLCq6/+gf37H8MfaCQQ6AISvVbg8UzD46kgK2s6LmcBDmcOTkcODocPIRx2f4QlXoYRwTCj\n1jIVIRFtJRZuIRFrJZFsJ2m2Y2ihAekLw4UzWoiIFtEVqWCnnMsu53T2ZuVTF/CScGpgShxtIRwt\nbTi6IBW2RKrQ5+SsmUWsrs5jZinUxdbzz0NPsal5EymZIsuRxRmlZ3Bm2ZmsLFnJ7NzZp+w0LeP9\nHsLbgNuBYqzRQQKQUsqTOjxACYJismBKk10du3ip4SVebniZTS2bSJpJXJqLlSUrWVu2lrPKzmJ2\n3uwJayuWUiLjBkYoidknEtb6wKUlHjJmDB2RLiwB8TrRvE50rz0M1+u09mc7+/3dOsKpIdw6wViY\nRx57lNraWmbNmsWVV15JXl4OkUgtweB2wpH9xKJHiMYOE40eIZnsRMrkqP+flsxCTwRwJALoiQBa\nKhcjXkg0WECkO59DqRJ2+APsLXBwsFin02+PhJcGzugRXB3N+LuyibYGiCc0nLpgzYx8zptdxPlz\ni5iWK3ni4BM8UfcEG5o3YEqT6kA1F1ZeyDll57CseBmuca7hZIrxFoR9wDVSyp3jYdxYUYKgmKxE\nkhE2Nm+0BKLxZfZ17QOs5qW1ZWtZO20tZ0w7g9LsiR86OBwyaWKE04QibLtICjNirRsRe9vezxBv\n+AMc0Jp50bkLA5O1ci7z9OnWC4m9kz32voRoSGTStIYLS4nUExiOMKYjihQmCJPe3njdnY3D68N0\neImm3LT0SFq744R7kgQl1Ofq1BU6OFCs0VTkJOayBkkKI4QzsZdAqp6ZRgC9Yzp7DnsIxUx8bgcX\nzy/mTYtKOXd2EV6XzobmDfx5759ZV7eOhJlgRs4MLqu6jMuqL2N27uxJ1fY/Xoy3ILwopTx7XCw7\nAZQgKE4VmsPNrG9cz/qG9QOal8p95awoXsGKEsvNCMyYtAVQbw0kXTSSsQRPb36BzXXbKPUXccXs\nc8nVff2d5b3lif2SotAFwmnXKpyate4QJIUgHDfoCSbo6IhzuCFEZ3MEGbVqMSG34GCBzt5CjaZS\nnY4cF4bdXKMlm3Em9lIq2lgdyGalfzaNTRU8tT3EgdYwWU6dKxaVctXiaZwzuxCPUyeSjPCXfX/h\nvp33cSh4CL/Tz1U1V/G22W9jXv68SXsNxovx6lR+m716PlAKPAz0TRcopXzoBO08LpQgKE5FTGn2\njV7a3LKZTS2b+gQiz53H8uLlLClawoKCBSwoWECOe/KM0U+np6eHP/7xjxw+fJi1a9dyySWXoOtD\nt6knYimC7TG6W6P0tEXpaYvZS2vdSPX3mgedsLtA52CBTluhRk++g5jLbqqRBo7EQVyJvVQ5wpyT\nn8d50xaxrGgZB5o0frO+jie2N2OYktXVebxz5XSuXDINn9uqPbREWrhv5308uOdBgokgS4uWct3c\n67i06tIT7us5lRgvQbjnGMdKKeWNYzFurChBUJwOSCmp66ljU/MmNrVsYlPzpr6RLAAVvgoWFi5k\nQcEC5ubNZWbuTEq8JRl9ij106BAPPPAAiUSCa6+9lgXzFxDqjA8s7Nv7C/1ocFBfgVPQ49Wo9UKd\nF9pydHoCOolcnYS7v53eevqvJSt1iHlejXMLp7G2xBJMn8tHLGnw6JYG7nmpjp2NPeRkOXn36um8\ne00lMwqz++JpibRw19a7+PPeP2NKk4srL+aGhTewtGjpyTplkwo1ykihOIXoinWxo2MHO9r7XX2o\nvs8/25nNzJyZ1OTWMDNnJpWBSsp95VT4K8h2Zh8j5hMjFkry2sub+ddLT+DWs6jyrCbZ6STYEe+b\nQVgCCZfALHYTynHS7oEmh6RBM2l2SKJeDcOrg6t/YgQhU+jJBvTkEfTkEUq0Hlbn5HJGyXyWFS9j\nTt4cnFr/dGnBWJJ7Xz7E3S8coC2UYF6pnw+cVc21y8rJSptGpD3azt3b7ubB3Q9imAZvmf0Wblx0\nI9P96ZMiTD3Guw/hjiF2dwMbpJSPjMG+MaEEQTGV6Ip1sa9rHwe6D7C/az/7u/dzoOsArdHWAeFy\n3bmU+8r7XGFWIQVZBRRmFVrrngKE7qM9adCVTBExTSKG7UyTqGG5cMKgoytGV1eMrmCCnkiSsAgT\nd8cwcCHwI90OUk5BQrOG7yeEJKkx5HTSSBOn0YWWakKkmtFTrWipZkr0GEtzClhQMJf5+fNZULBg\n2M72znCCe16s5dcv1dETS3HenCI+en4Na2sKBtSY4kac327/Lb944xfEjTjX1FzDR5Z+ZMoLQS/j\nLQh3AfOAP9q73g5sx5qL6ICU8jMnYOuoUYKgUEB3vJvDwcMcCR2hPlhPfaieulAL+6PQnHQQ1wsw\nHcUYjiJMPQdTD4AY3eTEmiFxGhKHKdFIoBspNGnNIps045hmAiHjliOGIIYmIgizC83oRjN70AzL\nVXj9zAhUUp1TTXWgmqpAFXPz545qTp7uSJKfPbuf366vI5IwuHxhCR+/cBZLKgZOZS6l5OnDT/P9\n177PkdARLq68mE+v+DQzcmaM5dSetoz39NezgIt630wWQvwMeBLr4zZvjNlKhUJx3ARcARxZMzkS\nK2GDNo+tIsoBR9yaUAZwCih1aRQ5UnhFDKfZCUYPwuyBZBCtVSe7IUBhcwneuBvdMOj21NPs202T\nbz+tvjqWdi2iIlzB7sAetuXuwqfp6MKBS3fjc/rJdQco9OaRnxUgx51DafZCir3WPD0l2SUUZRWN\naQx/JJHinhfr+Pmz+wnFU1yzpIxPXDSLOSVHf7f4cM9hvvnyN1nfuJ5ZubP4xWW/4MxpZ57o6Z3S\njFYQyoFsrGYi7PUyKaUhhBjiI6UKhWI8iRomz3T08FhrN891BmlJWLPGlLudLPV7eVdpHov8XuZ4\n3ZR7XITjKQ61RzjUEeFge4SGQ93IfSHy21K4TYgj2e80eM0ZpTEbSgqrqMqfz5pcN54jrxILH2HF\n2vO45aKv4TkJk+8lDZP7XzvMHf/cS2swzsXzivnC5XOZP+3od18N0+Denfdy5+Y7cWgObllzC9fN\nvQ6HduIfz5nqjPYMfg/YIoR4BuuVk/OAbwshsoGnJsg2hWJKY0rJMx1BHmzqYF17D2HDJM+hc0G+\nn3Pz/Kz2eUmGkuxvDbF/Xw+PtjZysD3MwY4IXZEkmoS5SZ2lcZ3pho4pIFToRMz0UzEvj7OLfVQV\nZFPsd6Npgng8zv33309t2xGuuuoqVq9ePeH/UUrJ07ta+NZjO6ltC7O6Oo+fvXcFq6qHblba27mX\nr7/0dd5oe4PzK87nq2d+NaMv+51ujHqUkRBiGrAGSxBelVKe9G8XqD4ExVSgNfH/27vv+Krq+/Hj\nr8+9mTc7JCGEJARCwhSQKS5AxFEFwa114Ki1/bpa7bDUapdtsXVUq9XaqhXhh1KoWxQsoiDIXgJh\nhkwyb9bd935+f9ybEELGvZDkJvB+Pnp79jnvHC/nfe45n+FkYXEVC0oqKbA5SAgxMj4igoEOBVU2\nDpdbOFBWT5H5WJckSkH/+EgGJkWRERdJhtmDYW8drjonMUkRjLywP8Mm9yMypvXHODabjbfeeovC\nwkJmz57N6NFdXzxzf1kdv/lgN6vzyhmUHMUvrxjGtCEprRav9WgPC75dwLObnyU6NJqfT/w5lw+8\n/LSvUNZZOuUdglJqqNZ6j1KqsS+Exi4vU5VSqVrrzacaqBAC7C4360pqeLmwnC9sVtxAbIObmMN1\nWE6eZccAACAASURBVIoa+FJ725+PDDWSnRLF+KwEbkjOYFByFNnJ0QxMiiIE2PlFEZs/PYK11kHK\noFjG3TqMASP7+JqVaJ3D4WDhwoUUFRVx7bXXMmLEiC79W2ssTp5dmce/v87HFGbksSuHc9vkAYS2\n0UJrhbWCX675JWuK1jA1Yyq/PvfX3dJZzJmoo0dGP8bbn/FfWlmmgYs6PSIhTmNVDQ4OlNdzsLye\nA+UNHCirZ3eNhSNJobhSIwEwFlnoX+lgaEwk2RlJZI/NIjs5mkHJUaTGRmBocXHXHk3ehqOsf/cg\ndVU20ocmMP7uEaTldNwmv9PpZNGiRRQUFHR5MvB4NG9vLOBPn+zBbHVy08RMHp6RS5/o8Da3WVO0\nhnlfzaPeWc+8SfO4YcgN8qugC7WbELTW9/iG07onHCF6P5fbQ0G1lQNl9d7n++XeNnYOlNdTbTlW\ngzc0wkjE8AQqMmMxorg4IpK70pKYcH5cU9MLHSneb+art/dRfqSOpIxopt02hoyh/t09u1wuFi9e\nzKFDh5gzZ06XJoP9ZXX8YulOvjlcxcSsRB6fNZwRaW030eHRHl7e/jIvbn2xqQRRTkJOl8UnvPz6\n1imlTHh/LWRqre9RSuUAQ7TWH3RpdEL0UFprKuodHCyv51BFA4cqGjjoG+ZXNuB0H3s3lxQdxqDk\naC4b2Y/s5CiykqPYiIvXyquodLm5qV8iPxmYSr9w/4tp2uqdrF22n91rSohOCOfiO4aTO6Fvu4+G\nmnO73bzzzjvs37+fmTNndtk7A5vTzYurDvDSqv2YwkL40zVncd24jBN+5TRX56jjF1/9glUFq5iV\nPYvHznnsjGp3KJj8LWX0GrAJONc3XYi3kpokBHHacrk9lNbaKKy2UlRtpaDa0nTxP1TeQJ39WIeB\nYUYDA/qYyE6O4uJhfclOjiI7JZrspGjiTMcqhW2uaeAneQXsqrdxUWIMj2WnMSw60u+YtNbs+bqU\ntf/Zj93q4uwZmUy4ciCh4f4XDfV4PLz77rvs3buXyy+/nHHjxvm9bSC+PlDJvGU7OFjRwFVj0njs\nyuEktfN4COCg+SAP/u9BCusKeXTio9w09CZ5RNSN/E0I2VrrG3x9LKO1tir5ryR6MZfbQ1WDg7I6\nO2V1Nsrr7BSbvRf/wmoLRWYrJTU23M36A2hekufqsf0ZmBTFwORoBiVFkRYfibGdu94ap4snD5bw\n7+JKUsND+dfILC5PigvoYldXZeN/b+6mYHc1qYPimPrdIfTpHx3w375ixQq2b9/ORRddxKRJkwLe\nviNmi4MnP9rN2xsLyUiM5I07JzIlN7nD7dYUreHhLx4m3BjOq5e+yri+XZOoRNv8TQgOpVQkvp4s\nlFLZNGsGW4hg0lpjcbgxW52YLQ5qLE6qLU7MVgdmi5Maq5Nq38W/vM5OWZ2dqgb7CX2/KAWpsRGk\nJ0QyISuR/vGRpCdEkp5gIj0hkn7xEYSHBF5J64uqOh7ac4Sjdid3pyfxs4H9iA5gP1pr9q4v5cvF\n+/B4NFNuymXEBf39fjzU3Ndff83atWuZMGECF1xwQcDbdxTne9uK+c3732K2Orl3SjYPTs85rvG5\ntizJW8Lv1v2OwfGDeWH6C1K3IEj8TQiPA58AGUqpt4DzgLldFZToXTwejVtr3B6Np3HooWmey+PB\n4fJ+7C4PTrdv2n1svsPtXeZottzicGNxuGhwuLHYfUOHiwb78cN6u+u4Z/YthYcYSDCFkRwTTr+4\nCEZnxJEcHU5ybAQpMeHeT2wEydHhhIV0XneXFreH3x4o5rWiCnJM4fxrXC5nx5oC20etg1Vv7eHQ\ntgr6DY5j+u3DiEsObB+NduzYwfLlyxk2bBiXX965ZfiPVFqY998dfLmvgtEZ8bw55yyGp3Xcw65H\ne/jr5r/yz53/5Lz+5/GXKX/p0tZbRfv8TQi3AR8CS4CDwINa64qTPahS6jrgCWAYMFFr3aW1zd5Y\ne5gVu48eN+9Yx076uOnWlh0/jxYjbeyjaTvdcvUT99Vspm6xTscxHn+cVnbZ6j6Oj+fYsRsv7h4P\nuJvGm13wmy/3zetKpjAjprAQosJ9wzAjsZGh9IuLIDLMSFRYCFHhISSYQok3hRIXGUa8bzzeN94d\nTS+0tLmmgft3H+GA1c730pP4xaA0ItsoZ9+WI7sqWfH6t9itLs69ejCjL27/ZWx7Dhw4wLJlyxgw\nYABXX301BkPnJD6n28OrXx7iuZV5hBgM/HrWCG45Z0C7j8+Obetk3lfz+Pjwx1yXex2/mPQLaX4i\nyAJ5qXw+3sbsBuFtxmK11vq5kzzuTuBq4OWT3D4gNqebet8LwOZf08Y7JNU03WxZ49zj5h3rKtbb\ndaw6trZqex+t3Yi1PHbz9VSLddqKkRb7b31f6sR5rSxrHDUqhdGgMCiF0UCz8WPD45YrhcGgjg2b\njyvv9iFGA2FGA2Ehvk9H475hZKjxpC+AweLRmufzy5h/uITUsFCWjMnm/IQTG2Zrdx9uD+vfO8Tm\n5fkkpkVx1UNnn9S7gkalpaUsXryYpKQkbrzxRkJD/Wv5tCNbC8z8/D/b2VNax6Uj+vLErBH0i/Pv\nBbnVZeVHq37EmqI1PDT2Ie4ceae8PO4B/EoIWuvPlVJfABOAacC9wAjgpBKC1no30G1fgO9Pyeb7\nU7K75VjizFXucHL/t0dYVV3HVSnxzM9NJy40sDveuiobn/1zFyUHahh+Xj/OvyGXUD+ewbelvr6e\nhQsXEhERwS233EJkpP8lmtqM0ebkz8v38u91+fSNieDlW8dx6Qj/n/nXOeq4b+V9bCnbwhOTn+Ca\n3GtOOSbROfyth7ASbwunX+OtQT9Ba13WlYE1O/Y9eGtLk5mZ2R2HFCJgX5vr+cGufKpdLubnpnNr\nWp+Ab3gOb69gxRvf4nFpZtw5nNyJp/ZitbHimcVi4c477yQ2tuNn+u3RWrN811GeeG8XR+ts3D45\ni4cvySUmwv9fHFW2Ku797F72mfcxf8p8Lsu67JRiEp3L39uX7cA4YCTeJrDNSqmvtdbWtjZQSq0A\nWvtGzwuklzWt9SvAK+Bt3M7f7YToDh6t+Wv+UeYfKiUrMpwFo3IYGRPYS1+3y8PX/z3AthUFJGVE\nc+ndI4nve3Ivjhtprfnggw8oKCjguuuuIy0t7ZT2V2S28vi7u1ix+yjD+sXy0i1jOTszIaB9lFnK\nuPvTuympL+Gv0/7KBemdW8pJnDp/Hxn9CEApFQ3cgfedQirQZi0TrfXFnRGgED1V80dEc1LieWpI\nRkDFSQFqK6wsf3UXZYdrGTmlP+ddO5iQTngJvnbtWrZu3crUqVNPqUkKl9vD62sP8/RneWgN874z\njDvOyyIkwBfk5ZZy7lp+F2WWMv4+4+9Sx6CH8veR0X3ABXh/JeQD/8L76EiIM9La6np+8O1hzC43\nfx6SwXf7JQb8iOjglnJW/ns3aM2l3xvJ4HEpnRJbXl4en332GcOHD+fCCy886f1sKzDz6NIdfFtS\ny0VDU/jNVSNITwj8l0uFtYK7Pr2Lo5aj/P3ivzO279iONxJB4e8jo0jgaWBTYzeap0IpNQd4HkgG\nPlRKbdVaX3qq+xWiq3m05oUjZfzxYAkDI8NZODqbEQE0PQHgdnpYs3Q/O/5XSMqAGC65eyRxyaf+\nshegrKyMJUuW0K9fP2bPnn1SxUvrbE7+8mkeb3x9mOTocF767lguG5l6UoVAKq2V3L38bkobSnlx\n+ouSDHo4fx8ZPdWZB9VaLwOWdeY+hehqVU4X9397hJVVtVyVEs9fTuIRkbnMwqev7qL8SB2jL8pg\n8tXZGDupMlxDQwOLFi0iLCyMG2+8kbCwwPo09ng0S7cU8ceP91DZYOfWcwbwyKVDiA3gpXFzVbYq\n7v70borqi3jx4hcZn9ph/ywiyKQWiBB+2FTTwD27DlPucPGH3HTmnkQpon0bj/K/BXswGBTf+cFZ\nDBzdcfs+/nK5XLz99tvU1tZyxx13EBfXdtPSrdleaObx93ax5YiZMRnx/PP28YzOiD/peOocdXz/\ns+9TUFfA36b/jQmpXd8dpzh1khCEaIfWmn8UlvObA8X0Cw/jvbE5jAmw+QmXw81X7+xj15fFpA6K\nZcZdI4jt0zmPiBpj/Pjjj8nPz2fOnDmkp6f7vW1lvZ2nlu9l8cYC+kSF8dS1o7hmbPopVQi0uWzc\nt/I+9pv387eL/sakfp3fgJ7oGpIQhGhDrcvNj/Yc4cPyGi5LiuXZoZnEB1jRrLq0geX/2EVlUT1n\nX5LJpKsGYQywhE5HvvnmGzZt2sT555/vd78GdpebBeuO8NyKPCwON3edN5AHLs456cdDjZweJ498\n8QhbyrYwf8p8zu1/bscbiR5DEoIQrdhaa+Hebw9TYHPweHYa92YkB/SIqLHfgtWL8wgJMXDF/40i\n66ykTo/zwIEDfPLJJ+Tm5nLRRR33aOvxaN7fXsxTy/dSWG3lgpwkHp85nMEpgTWv0eq+tYdfrfkV\nXxR+wWPnPCaVznohSQhCNOPRmr8dKeNPh0pICQtl2ZjBTIwPrB0ha72DVW/t5eCWctJy4plx53Ci\nEzq/x6+KigreeecdkpOTueaaazosUbRmfwV/+Hg3O4tqGdYvln/feRYX+tFPgT+01jy14Sk+OPgB\n9599P9cPub5T9iu6lyQEIXyKbQ7u332ENeZ6ZibH89SQ9IAfEeXvquTzN3Zja3AyeU42Y2ZkdkkD\nfVarlUWLFmEwGLjpppsID2+7J7KtBWae/iyP1Xnl9I+P5JkbRnPV6P6dGtc/dvyDBbsXcMuwW/je\nWd/rtP2K7iUJQQjgo3IzD+8pwK41zwzN4MbUwCqaOR1uvl56gB2rCklMi+LK+0eTnHHqj2Fa43a7\nWbJkCdXV1dx2220kJLTehMTWAjPPrcjjf3vLiTeF8ujlQ7n93KxObw78g4Mf8PyW55k5aCY/mfAT\nabW0F5OEIM5oVU4Xj+0r4j9HqxkdE8lLw7MYZGq/39+WCvZUsWrBHmorbIy6KJ3Js7MJOYUWSjvy\n6aefcuDAAWbNmkVWVtYJy7cVmHlu5T4+31NGvCmUn1w6hNvPzSI6vPP/uW8p28Kv1vyKiakT+fW5\nv8agOveFuehekhDEGevDcjM/zyuk2uni4ay+PDigL2EB1Oy1NThZ+5/97F5bQlxyJLN/dDb9hwTW\n4FugNm3axPr16znnnHMYO/ZYrV+tNV/tr+CV1Qf5cl9FlycCgIK6Ah78/EHSotN4eurThBo7p58F\nETySEMQZp9zh5Jf7ini3zMxZ0ZH8vwCbn9Bas39TGV+9vQ9rvZOxl2Yy4YqBXfqrAODw4cN8+OGH\nZGdnM2PGDMDbY9mH20t4ZfVBvi2pJTkmnJ9eNoTbJnddIgBvxbP7V96PW7v52/S/ERceWEU40TNJ\nQhBnDLfWvF5UwZ8OlWB1a342MJX7MvsSGsDL1YrCer5cnEfxPjPJmTFced9okjO75l1Bc9XV1Sxe\nvJiEhASuvfZa6uxu3tmYz2trDlFcYyMnJZr5147iqjFphAfYnEagXB4Xj3zxCPl1+bwy4xUGxA7o\n0uOJ7iMJQZwRNtU08PO8QnbUW7kwIZrf56STE+V/UVBbvZP17x9k1+oiwk2hTLl5CMPPT+uWLj5t\nNhsLFy7E49GMmjaLX76fxwfbi7G7PJwzKJHfzzmLKbnJ3RKL1po/fvNH1hav5Tfn/kaapDjNSEIQ\np7V8q50/HSpl6dFq+oWH8sqILGYmx/ldEsZhc7FtZQFbPjuCy+5m5JR0Js4cSERU9zwv93g8LHpn\nKWtLoSxuPC8v2ElUmJHrxqfz3UkDGNbv1HpBC9TCPQtZvHcxd4y8gzk5c7r12KLrSUIQp6UKh4tn\n80t5o6iSEAUPDujLA5kpRPn5OMXldLNrdTGbPjmMtc7JoDHJTJw1kD5pJ9/ZfSDcHs26g5U8/8E3\nbCyNxkUcQ0PC+O3sHOac3b9L3w+0ZXXhauZvmM9FGRfx0NiHuv34outJQhCnlXKHk1cKyvlXUQU2\nj4eb+/Xh4axUUsP9u6O3W5zsXF3Ets8LsdY6SB+awDlXZdN3YPfcie87WsfSLUX8d0sRJTU2QnEx\nKdXIj2ZPZtyAhKCV8c+rzuMnX/yEIQlD+MMFf5DipacpSQjitFBgc/DSkTIWllRi92hmpsTzk6xU\nv98T1FZa2fG/QnZ9WYzT7iZzeCJjLx3Q5cVItdbsPVrHRztK+XhHCfvK6jEaFBMzohhqPcD5g+KZ\ne+t3MRq79kVxeyqsFdy38j6iQ6N5/qLnMYWeWn/PoueShCB6La01a8z1vF5UwccVNRhQXJeawP9l\nppBt6jgReDya/J2V7PqyiPydlShg8Pi+nH1JZpfVMm487o6iGpbvKuWTnaUcrGjAoGDiwERunTyC\nyekRLF34BqZkEzffcF1Qk4HNZePBzx/EbDfz+mWv0zeqb9BiEV1PEoLodSodLpaVVfNGUQX7LHYS\nQozck57M3enJ9I/ouJewyqJ68jYcJW99KfXVdkxxYYy/PIth5/Xr1H4KmqtucLB6Xzlf7C3ni7xy\nKhscGA2Kc7P7cPcFg7hkRF+SosOx2Wy8+uqraK25+eabiYzsmnj84dEeHlvzGDsqdvDMtGcY3md4\n0GIR3UMSgugVLG4Pyytq+M/RalZV1eLScHaMieeGZjIrJZ7IdvoY0FpjPmrhwOYy9m0so6q4AWVQ\nZAxL4ILrcxkwqk+n91FgdbjZlF/N+kOVfLW/gm0FZjwaEkyhTMlNZuqQFKbkJpMQdSyBud1u3nnn\nHaqqqrj11lvp06dPp8YUqBe3vsgnhz/hx+N+zPTM6UGNRXQPSQiixyp3OFlRWctnFbWsqq7D4vbQ\nLzyUe9JTuCY1od3axS6nm+I8M4d3VpK/o4LaChsA/QbHceGNuWSPTcEUG1ifw+2psTrZWmBm/cFK\n1h+qYnuhGadbY1BwVno891+Uw9QhyYxKj8fYRn2B5cuXc+DAAWbOnMnAgQM7LbaT8cHBD3h5+8vM\nGTyHuSPmBjUW0X0kIYgew+r2sKm2gTXV9ayurmNzrQUN9AsP5dq+CVyVEs/k+GgMrZS0cdrdlB6q\noXifmZJ9ZkoP1eJ2ejCGGkgfmsCYizPJGpVETOKp90tgc7rZVVzLtgIz2wvNbC+s4WBFAwBGg2JU\nehx3nT+ISYMSGT8ggRg/eiFbt24d33zzDZMnT2bcuHGnHOOpaN5g3WPnPCatl55BgpIQlFJPATMB\nB3AAuENrbQ5GLCI4tNaU2J1sr7Oytc7COnM9m2stOLTGAIyKMfFIViqXJMUyMjryuIuS0+GmsrCe\nioI6yo/UUV5QT2VhPR6PRilIyohhxAVpZAxLJH1Iwkm3MeT2aPIrG8g7Wsfe0nryyurIK63jUEUD\nLo8GoG9sOKPS47lmXDqj0uMYm5lAVIB1BHbt2sUnn3zC0KFDm9ooChZpsO7MFqxfCJ8Bj2qtXUqp\nPwGPAj8LUiyiizW43Oy32tnfYGOfxc6OOivb6y2UO1wAGICzYiK5Kz2Jc+OjmRQfTYzRgLXOibm0\ngd1HzVQftWD2fWrKLGjv9ZiIqFCSM6MZc0kmaTnx9BsUR1ik/19rh8tDYbWFI1W+T6WF/CoLBVUW\nDlY04HB5AFAKMhNN5KTEcOmIVEalxzE6I56+saf2iyM/P5+lS5eSkZHhV69nXanOUcd9K++TBuvO\nYEFJCFrrT5tNrgOuDUYconO4PJoSh5Mim4NCm4Mim5NCu4MjVgf7LTaK7M6mdY1AdmQ455tMDIkO\nJdttIK1e4yp2UL+rhvrqMt6vtlNfZcPl9BzbLsRAXEokfdKiGDwuheTMGJIzY4hOCD/hkYbWGqvT\nTbXFSXWDg4p6O2W1dkprbRyttXG01u4b2iivtzclF4CIUAOZiSYyE6O4MDeZ3L4xDOkbw+CUaCI7\nuTXTsrIyFi1aRHx8PDfddBOhocG7G29ssO5I7RFeuUQarDtT9YR3CHcCi4MdhPByeDzUuTzUud3U\nudzUutzUOlyU25xU2F2U251UOF1UOl1UutxUudxUetx4WuwnxgNJLkWmDcY1aPrUuIivcBJV5kA1\nu9Af8X1QmrC4cCLiwgjvG0lKbizG6FBC4kIJiQnFHWbA6nRT7nCTb3fRUF6NpbCceruLaosDs8WJ\n2eL0jludTXf2LSVGhZESE07f2AiG9YshNS6SzEQTA/qYGJBoIjnmxATTFWpra3nrrbcwGo3ccsst\nmEzBq+wlDdaJRl2WEJRSK4DUVhbN01q/61tnHuAC3mpnP/cA9wBkZmaeVCyfrM5n12EzoJvuBhuH\nHjS+/3mntW427lsX7z+axvnat7327Ug3WwflHff4DtC4nvZt6JuLp8W8xo/Ht8yjG6e9846NH1tP\nA27tHXdr0Gg8GtyAG40L37g6Nu/YtMajFG4FLt/HaTgW33FBNZ00MLo1IS5NiFt7x92avi4IbTFP\nKYUyKmoMYDYo9hrArRTuPr7YNLi0xunx4PRo3zN5G9Tg/fghKsxIVHgI8aZQ4k1hZCWZGBMZT3xU\nKAmmMBJMocRFhpEcE0ZKTAQpseFd3jS0PywWCwsWLMBqtTJ37tw2u8DsLtJgnWjUZQlBa31xe8uV\nUrcDVwLTtW7+o/2E/bwCvAIwfvz4Ntdrz2+2HKa4pP5kNj2jNF4qFd5n5galUHiHRgVGpQgxKAzK\n+zEaFEaDAWOYIiRSYTQqjEYDIQbvMoNBYVSKUKOBsJBjn/Dm077xxnXCffMjQrwXe1O4kejwEExh\nRqLCjk1HhBi7pbnnzma323nrrbeorKzk5ptvJi0tLajxSIN1orlglTK6DO9L5Claa0tXH+/BmcPY\nVFXvvdAZvBc5hff/DCiUwnfhA4V3ovFiqBRNy5VvXZTC0GxaNdsPTevSVDzS4Jv2Htt3kfUdv/m+\nQxovur4LcIjvghqC90Ic0rTMt65vXmjj+r5l4QZFpNFAqEFhbNYIWeOTENU0feyC2jjWGy+yvYXD\n4WDhwoUUFxdzww03kJ2dHdR4pME60VKw3iG8AIQDn/kuSuu01vd21cFuGJTCDYNSumr3QnTI5XLx\n9ttvk5+fzzXXXMPQoUODGo80WCdaE6xSRoODcVwhgsHlcrFkyRL279/PzJkzOeuss4Iaj9Vl5b6V\n90mDdeIEPaGUkRCnrcZfBnl5eVx22WVBr4Xs0R4e/fJRdlft5rlpz0mDdeI4khCE6CJOp5PFixez\nf/9+rrjiCiZMCH5xzmc2PcPKIyv52YSfMTVjarDDET2MJAQhuoDD4WDRokUcOnSIWbNmMXbs2GCH\nxNt73+b1Xa9z09Cb+O6w7wY7HNEDSUIQopM1NDQ0lSaaPXs2Y8aMCXZIrClaw5Prn+SC/hfw0wk/\nlQbrRKskIQjRiaqrq3nzzTepra3l+uuvZ9iwYcEOiX3V+3j4i4cZHD+Yp6Y8RYhB/tmL1sk3Q4hO\nUlJSwoIFC3C73dx2220nXbO+Mx1tOMoPV/6QqJAoXpj+AlGhUcEOSfRgkhCE6AS7d+9m2bJlREZG\nMnfuXJKTk4MdEjX2Gu5dcS91jjpeu/Q1UqNaa0lGiGMkIQhxCjweD6tXr2bVqlX079+fG264gdjY\n2GCHhc1l44HPHyC/Np+XLn6JYX2C/+hK9HySEIQ4SXa7nWXLlrFnzx5Gjx7NlVdeGdQmrBu5PC5+\ntvpnbCnbwvwp85nUb1KwQxK9hCQEIU5CUVERS5YswWw2c+mll3LOOef0iJI7Wmt+v/73fF7wOT+f\n+HMuy7os2CGJXkQSghAB8Hg8rFu3jhUrVhAdHc3cuXMZMKDndCbz4rYXWZK3hLvPulvqGoiASUIQ\nwk9ms5n33nuPgwcPMnToUGbNmhXUjm1aem3na/x929+ZPXg2D5z9QLDDEb2QJAQhOuDxeNiwYQMr\nVqxAKcUVV1zB+PHje8QjokaL9izi6U1Pc1nWZTwx+YkeFZvoPSQhCNGOkpISPvroIwoKCsjOzmbm\nzJnEx8cHO6zjLN23lCfXP8m0jGk8ecGTGA3B7xVO9E6SEIRoRUNDA59//jmbN28mIiKC2bNnM3r0\n6B535/3hwQ95Yu0TnJd2Hn+e8mdCDcEv5SR6L0kIQjRjt9tZv349a9aswel0MmnSJKZMmUJkZGSw\nQzvBhwc/ZN5X8xifOp5npj1DmDEs2CGJXk4SghB4E8E333zD2rVrsVqt5ObmMmPGjB5R47g1y/Yt\n4/G1jzM+dTwvXPQCkSE9L2GJ3kcSgjij1dTUsGHDBjZt2oTVaiUnJ4cpU6aQnp4e7NDa9Pbet/nt\nut9ybtq5PDvtWUkGotNIQhBnHK01R44cYcOGDXz77bdorRkyZAjnn39+j04EAG9++ybzN8xnSvoU\n/jL1L4Qbw4MdkjiNSEIQZ4yqqiq2b9/Otm3bqK6uJjw8nEmTJjFx4kQSEhKCHV67tNY8v+V5/rHj\nH1yceTHzL5xPqFFeIIvOJQlBnLa01pSXl7N371727t1LYWEhAAMHDmTq1KkMHTqU8PCef4ft9Dj5\n9dpf8+6Bd7km5xp+ec4vpU8D0SWC8q1SSv0WuArwAGXAXK11cTBiEacXq9VKfn4+hw4dIi8vj+rq\nagDS0tKYPn06o0aNIi4uLshR+s/itPDjL37MmqI1/HD0D7l39L09ruirOH0E6zbjKa31YwBKqQeA\nXwH3BikW0Utpramurqa4uJjCwkIOHz5MaWkpACEhIWRlZXHeeeeRm5vbI5qkDlSZpYwHPn+A3VW7\neXzy41ybe22wQxKnuaAkBK11bbPJKEAHIw7Re9hsNioqKqioqKC8vJzi4mJKSkqw2WyANwFkZGQw\nbdo0srKy6N+/PyEhvfexyvby7Tz0v4eod9bz3LTnmJoxNdghiTNA0P7FKKV+D9wG1ADTghWH6Bmc\nTie1tbXU1NQ0DWtqaqiqqqKiooL6+vqmdQ0GA3379mXEiBH069ePtLQ0UlJSenUCaO79A+/z/44d\nswAADAxJREFUxNonSDYls2DGAnITcoMdkjhDKK275uZcKbUCaK3Pvnla63ebrfcoEKG1fryN/dwD\n3AOQmZk5Lj8/vyvCFZ3E4/HgcDiw2+1NQ7vdjtVqpaGhAYvFgsViaRpvaGhoGm/JZDKRmJhIUlLS\ncZ+EhASMxtOvvR6n28kzm5/hzW/fZGLqRP485c8kRPTs0k+id1BKbdJaj+9wva5KCP5SSg0APtRa\nj+xo3fHjx+uNGzcGfAyPx4PH4zluXvO/uyvGu/MYjX9fZ4y7XC7cbjcul+u4T1vznE7ncRd+p9NJ\nRyIjIzGZTJhMJqKiojCZTMTFxREXF0dsbGzTsCf0PtZdCusK+enqn7KjYgc3D72ZRyY8Iu0SiU7j\nb0IIVimjHK31Pt/kLGBPVx7v448/ZsOGDV15iNOSwWAgJCSEkJAQjEZj03jzeVFRUSQmJhIeHk54\neDhhYWGtjjcmgcjIyNPy7v5UrMhfwa/W/AqAp6c+zYwBM4IckThTBeuh6x+VUkPwFjvNp4tLGOXm\n5hITE9M03bzYnj/jJ7NNdx7DYDBgMBhQSp3yePOLvcFgQHSdOkcdf974Z5buW8rIPiN5aspTpMf0\n7JrS4vQWrFJG13Tn8XJycsjJyenOQwrRrrXFa3l87eOUWcq4c+Sd3DfmPql5LILu9CiWIUQvUWOv\n4dnNz7IkbwkD4wby5uVvMip5VLDDEgKQhCBEt/BoD+/uf5dnNj1DjaOGuSPm8n9j/o+IkIhghyZE\nE0kIQnSxXZW7+MP6P7CtfBtnp5zNvEnzGJI4JNhhCXECSQhCdJH82nye3/I8yw8vJzEikd+d9ztm\nZs/EoORlveiZJCEI0cmK64t5dcerLN23lDBjGPeOvpfbh99OdFh0sEMTol2SEIToJPuq9/Haztf4\n6NBHKKW4fsj13DPqHpIik4IdmhB+kYQgxCnwaA9fF3/Nwj0LWV24msiQSG4edjO3Db+N1KjWWm4R\noueShCDESaiwVvDf/f9lSd4SiuqLSAhP4IdjfshNQ24iPiI+2OEJcVIkIQjhpwZnA58f+ZxPDn/C\n2qK1uLSL8X3H8+DYB5meOZ0wY1iwQxTilEhCEKIdZpuZNcVrWHlkJasLV2N320mNSuWW4bcwZ/Ac\nBsUPCnaIQnQaSQhCNOPyuNhbtZevir7iy6Iv2VGxA4/2kBiRyJzBc/jOoO8wOnm0FB0VpyVJCOKM\nZnVZ2Vmxk01HN7GlbAtby7ZicXn7ZhjZZyTfH/V9Luh/ASOSRkgSEKc9SQjijGG2mdlbvZc9VXvY\nXbWbPZV7OFR7CI/2oFAMThjMzOyZjE0Zy8R+E6W4qDjjSEIQpw2tNdX2akobSimsKyS/Np/DtYfJ\nr80nvzYfs93ctG6KKYVhicOYPmA6o5JGMSZlDHHhcUGMXojgk4QgejStNVaXlWp7NWabmWp7NdW2\nasx2M5XWSkotpRxtOMpRy1GONhzF4XEct32KKYWs2CxmDJjBgNgB5CTkMDRxKIkRiUH6i4TouSQh\niJOmtcat3TjcDpweJw63A7vbjsPjwOn2Tjs8Du+wxbjFZaHB2dD0sTi90xaXpWm8zlmH2WY+4SLf\nKESFkGJKITUqlZF9RjI9czqpUan0NfUlPSadzJhMTKGmbj4rQvReZ0RCeHf/u6wrWYfG2x9xY7/E\njdPHBsfPP64vY1rvL7mtffq77+b7bXObU9x387/Doz14tAe3dp8wdHvcJ8zvaNmpCjWEEhUaRVRo\nFKZQE6YQE9Fh0fSN6ktUaBQJEQnEh8eTEO4bRhwbxoTFyIteITrRGZEQCusL2Vq2FTjW7aRCtTrd\nqLX5Lbdpa91A933cMVpu0zQIfN8K5Z1Wx29nVEYMynDi0GBsc1mIIeS46ebrhxnDCDOEeYctx5tN\nhxpCCTeGE2YM8yaAEJP0EiZED6Ka3z32dOPHj9cbN24MdhhCCNGrKKU2aa3Hd7Se/N4WQggBSEIQ\nQgjhE9SEoJR6RCmllVJSA0gIIYIsaAlBKZUBzACOBCsGIYQQxwTzF8IzwE+B3vNWWwghTmNBSQhK\nqVlAkdZ6WzCOL4QQ4kRdVg9BKbUCaK0PwXnAL4BL/NzPPcA9AJmZmZ0WnxBCiON1ez0EpdRZwErA\n4puVDhQDE7XWpe1tK/UQhBAicP7WQwh6xTSl1GFgvNa6wo91y4F8IA6oabaocbr5/JbzkoAOj9FC\ny+P4s7yjee3F2HxeZ8fb1rK2zmUgccu5Pf3OrT+xy7n1b3lPOLcDtNbJHa6ttQ7qBzgMJAW4zSut\nTTef33IesPEkYnsl0OUdzWsvxq6Mt61lbZ3LQOKWc3v6nVt/Ypdz27vPbWufoLdlpLXOOonN3m9j\n+v0O5p3qcfxZ3tG8jmLsqnjbWtbWufRnXM5t+8t687n1J3Y5t/4t76nn9gRBf2TUXZRSG7Ufz9B6\nit4Ub2+KFXpXvL0pVuhd8famWKF74j2Tmq54JdgBBKg3xdubYoXeFW9vihV6V7y9KVbohnjPmF8I\nQggh2ncm/UIQQgjRDkkIQgghAEkIQgghfCQhAEqp2Uqpfyil3lVK+dWkRrAopQYppf6plFoS7Fja\nopSKUkq94Tun3w12PO3pDeezuV72XR2mlPq7UmqJUuoHwY7HH77v7ial1JXBjqU9SqmpSqkvfed3\namftt9cnBKXUv5RSZUqpnS3mX6aU2quU2q+U+nl7+9Ba/1dr/T1gLnBDD4/1oNb6rq6KsS0Bxn41\nsMR3Tmf15FiDdT5bxBVIvN3yXe2kWHdrre8FrgeCUrzzJP7N/Qx4u3ujbIopkFg1UA9EAIWdFkSg\nNd962ge4EBgL7Gw2zwgcAAYBYcA2YDhwFvBBi09Ks+3+AoztJbEu6cHn+VFgjG+dhT35OxGs89kJ\n8Xbpd7WzYsV7Q7AWuLmnn1vgYuBGvMn2yh4eq8G3vC/wVmfFEPSayqdKa71aKZXVYvZEYL/W+iCA\nUur/AVdprf8AnPBTUCmlgD8CH2utN/fkWIMlkNjx3rGkA1sJwq/QAGP9tnujO1Eg8SqldtMN39W2\nBHputdbvAe8ppT4EFnZnrBBwvNFAFN4LrlUp9ZHW2tMTY9VaN35vq4Hwzoqh1z8yakN/oKDZdKFv\nXlvux3t3cK1S6t6uDKwVAcWqlOqjlPo7cLZS6tGuDq4DbcW+FLhGKfUSp1btvjO1GmsPO5/NtXVu\ng/ldbUtb53aqUuqvSqmXgY+CE1qrWo1Xaz1Pa/0Q3sT1j+5MBu1o69xe7TuvbwIvdNbBev0vhDao\nVua1WQNPa/1X4K9dF067Ao21EugpF4JWY9daNwB3dHcwHWgr1p50PptrK95gflfb0lasq4BV3RuK\nX9r9N6e1fr37QulQW+d2Kd4br051uv5CKAQymk039rnQE/WmWFvqTbH3plihd8Xbm2KF3hVvt8Z6\nuiaEDUCOUmqgUioM74ui94IcU1t6U6wt9abYe1Os0Lvi7U2xQu+Kt3tjDcab/05+M78IKAGceLPp\nXb753wHy8L6hnxfsOHtbrL059t4Ua2+LtzfF2tvi7QmxSuN2QgghgNP3kZEQQogASUIQQggBSEIQ\nQgjhIwlBCCEEIAlBCCGEjyQEIYQQgCQEIfymlDqslEo61XWE6KkkIQghhAAkIQjRKqXUf309Z+1S\nSt3TYlmWUmqP8vYKt115ewQzNVvlfqXUZqXUDqXUUN82E5VSa5VSW3zDId36BwnhB0kIQrTuTq31\nOLw9fT2glOrTYvkQ4BWt9SigFvhhs2UVWuuxwEvAI755e4ALtdZnA78CnuzS6IU4CZIQhGjdA0qp\nbcA6vK1N5rRYXqC1XuMbXwCc32xZY7PEm4As33gc8I6ve8RngBFdEbQQp0ISghAtKG+n5RcDk7XW\no4EtePuuba5lI2DNp+2+oZtjfY78Fvif1nokMLOV/QkRdJIQhDhRHFCttbb43gGc08o6mUqpyb7x\nm4Cv/NhnkW98bqdEKUQnk4QgxIk+AUKUUtvx3tmva2Wd3cDtvnUS8b4vaM984A9KqTV4O04XoseR\n5q+FCJCvI/QPfI9/hDhtyC8EIYQQgPxCEEII4SO/EIQQQgCSEIQQQvhIQhBCCAFIQhBCCOEjCUEI\nIQQgCUEIIYTP/wcCTYCxmyN6xAAAAABJRU5ErkJggg==\n",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/plain": [
"[]"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\nYII=\n",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"ax = plt.gca()\n",
"\n",
"ax.plot(alphas, coefs)\n",
"ax.set_xscale('log')\n",
"plt.xlabel('alpha')\n",
"plt.ylabel('weights')\n",
"plt.title('Ridge coefficients as a function of the regularization')\n",
"plt.axis('tight')\n",
"plt.show()\n",
"\n",
"plt.figure()\n",
"plt.plot(alphas,scores)"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Ridge(alpha=4.67, copy_X=True, fit_intercept=True, max_iter=None,\n",
" normalize=False, random_state=None, solver='auto', tol=0.001)"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"ridge.set_params(alpha=4.67)\n",
"ridge.fit(X, y)"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0.74037953010978874"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"ridge.predict(X)\n",
"ridge.coef_\n",
"ridge.score(X, y)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"- statsmodels"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"lmr = ols('target ~ '+'+'.join(dataset.feature_names),data=df).fit_regularized(alpha=1, L1_wt=0)\n",
"lmr.summary()\n",
"# L1_wt参数为0则使用岭回归,为1使用lasso"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {
"scrolled": false
},
"outputs": [
{
"data": {
"text/plain": [
"array([ 0.2419258 , -0.08918281, 0.08894527, -0.01606676, 0.23909989,\n",
" 0.10083339, 2.43266593, 0.06789319, -0.32134516, 0.13056091,\n",
" -0.00629592, 0.21551788, 0.02400496, -0.66983644])"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"lmr.params"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"关于k的选择:\n",
"1. 岭迹法\n",
" 1. 岭迹到k很稳定了\n",
" 2. 没有不合理的回归系数\n",
" 3. 合乎实际意义\n",
" 4. 残差平方和增加不太多\n",
"2. VIF\n",
"\n",
"\n",
"## 3. RidgeCV"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"from sklearn.preprocessing import StandardScaler\n",
"scaler=StandardScaler()\n",
"X = scaler.fit_transform(df.iloc[:,:-1])\n",
"y = df.loc[:,'target']"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"RidgeCV(alphas=array([ 1.00000e-02, 1.01627e-02, ..., 9.83995e+04, 1.00000e+05]),\n",
" cv=None, fit_intercept=True, gcv_mode=None, normalize=False,\n",
" scoring=None, store_cv_values=True)"
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from sklearn.linear_model import RidgeCV\n",
"\n",
"alphas = np.logspace(-2, 5, 1000, base=10)\n",
"\n",
"# Search the min MSE by CV\n",
"rcv = RidgeCV(alphas=alphas, store_cv_values=True) \n",
"rcv.fit(X, y)"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The best alpha is 4.673795107992464\n",
"The r-square is 0.7403791933204962\n"
]
},
{
"data": {
"text/plain": [
"array([-0.88475096, 1.01561418, 0.04453904, 0.69631425, -1.93712189,\n",
" 2.70710339, -0.00612164, -2.98347258, 2.35961944, -1.79967024,\n",
" -2.0255884 , 0.8543012 , -3.68987892])"
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"rcv.predict(X)\n",
"print('The best alpha is {}'.format(rcv.alpha_))\n",
"print('The r-square is {}'.format(rcv.score(X, y))) \n",
"# Default score is rsquared\n",
"rcv.coef_"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"image/png": "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\nYII=\n",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"cv_values = rcv.cv_values_\n",
"n_fold, n_alphas = cv_values.shape\n",
"\n",
"cv_mean = cv_values.mean(axis=0)\n",
"cv_std = cv_values.std(axis=0)\n",
"ub = cv_mean + cv_std / np.sqrt(n_fold)\n",
"lb = cv_mean - cv_std / np.sqrt(n_fold)\n",
"\n",
"plt.semilogx(alphas, cv_mean, label='mean_score')\n",
"plt.fill_between(alphas, lb, ub, alpha=0.2)\n",
"plt.xlabel(r\"$\\alpha$\")\n",
"plt.ylabel(\"mean squared errors\")\n",
"plt.legend(loc=\"best\")\n",
"plt.show()\n",
"\n",
"#这个图,最低点最好"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": []
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 4. LASSO\n",
"- statsmodels"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"lmr1 = ols('target ~ '+'+'.join(dataset.feature_names),data=df).fit_regularized(alpha=1, L1_wt=1)\n",
"lmr1.summary()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"- sklearn.lnear_model.LassoCV"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The best alpha is 0.1484968262254465\n",
"The r-square is 0.7288614391450124\n"
]
}
],
"source": [
"from sklearn.linear_model import LassoCV\n",
"\n",
"lasso_alphas = np.logspace(-3, 2, 100, base=10)\n",
"lcv = LassoCV(alphas=lasso_alphas, cv=10) # Search the min MSE by CV\n",
"lcv.fit(X, y)\n",
"\n",
"print('The best alpha is {}'.format(lcv.alpha_))\n",
"print('The r-square is {}'.format(lcv.score(X, y))) \n",
"# Default score is rsquared"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"- sklearn.lnear_model.Lasso"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"from sklearn.linear_model import Lasso\n",
"\n",
"lasso = Lasso()\n",
"lasso_coefs = []\n",
"for alpha in lasso_alphas:\n",
" lasso.set_params(alpha=alpha)\n",
" lasso.fit(X, y)\n",
" lasso_coefs.append(lasso.coef_)"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\nCUEIIUTC/wfzoLQxXdhYVQAAAABJRU5ErkJggg==\n",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"ax = plt.gca()\n",
"\n",
"ax.plot(lasso_alphas, lasso_coefs)\n",
"ax.set_xscale('log')\n",
"plt.xlabel('alpha')\n",
"plt.ylabel('weights')\n",
"plt.title('Lasso coefficients as a function of the regularization')\n",
"plt.axis('tight')\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 5. ElasticNet\n",
"[官网](http://scikit-learn.org/stable/modules/generated/sklearn.linear_model.ElasticNet.html) \n",
"$\\alpha \\rho \\mid\\mid \\vec w\\mid\\mid+\\dfrac{\\alpha (1-\\rho)}{2}\\mid \\mid \\vec w \\mid \\mid^2$ \n",
"$\\alpha\\geq 0, 1\\geq \\rho \\geq 0$"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"from sklearn.linear_model import ElasticNet#还有ElasticNetCV\n",
"regr=ElasticNet(alpha=1.0, l1_ratio=0.5, fit_intercept=True, normalize=False, precompute=False, max_iter=1000, copy_X=True, tol=0.0001,\n",
" warm_start=False, positive=False, random_state=None, selection='cyclic')\n",
"# alpha:alpha\n",
"# l1_ratio:rho值\n",
"# fit_intercept:是否拟合intercept\n"
]
}
],
"metadata": {
"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.6.2"
}
},
"nbformat": 4,
"nbformat_minor": 2
}